@projectcor/maia-components 2.11.65-23 → 2.11.65-24

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.
@@ -492,62 +492,6 @@ export var useChatManager = function useChatManager(_ref3) {
492
492
  loadMessages();
493
493
  }
494
494
  }, [initialChatId, project, setProject, setClient, setChipsProject, setTask, loadMessages]);
495
-
496
- // El contexto de proyecto/cliente aplica a agentes clone (tienen tools). Los custom no lo
497
- // necesitan por ahora, así que para ellos no resolvemos ni disparamos GetProjects.
498
- var isCloneAgent = (agent === null || agent === void 0 ? void 0 : agent.type) === 'clone';
499
-
500
- // Sincronizar chipsProject cuando hay mensajes con projectId pero chipsProject no se ha seteado
501
- useEffect(function () {
502
- if (!isCloneAgent || chipsProject || loadingMessages) return;
503
- var lastMsgWithProject = messages.filter(function (msg) {
504
- return msg.projectId;
505
- }).at(-1);
506
- var _ref4 = lastMsgWithProject || {},
507
- projectId = _ref4.projectId,
508
- projectName = _ref4.projectName;
509
- if (!projectId) return;
510
- fetchProjects(projectId).then(function (projects) {
511
- var found = projects === null || projects === void 0 ? void 0 : projects.find(function (p) {
512
- return Number(p.id) === Number(projectId);
513
- });
514
- if (found) {
515
- var _found$client;
516
- setChipsProject({
517
- projectName: found.name,
518
- clientName: ((_found$client = found.client) === null || _found$client === void 0 ? void 0 : _found$client.name) || '',
519
- projectId: String(found.id)
520
- });
521
- setProject(found);
522
- } else if (projectName) {
523
- setChipsProject({
524
- projectName: projectName,
525
- clientName: '',
526
- projectId: String(projectId)
527
- });
528
- setProject({
529
- id: Number(projectId),
530
- name: projectName
531
- });
532
- }
533
- });
534
- }, [isCloneAgent, messages, chipsProject, loadingMessages, fetchProjects, setChipsProject, setProject]);
535
-
536
- // Sincronizar client cuando hay mensajes con clientId pero client no se ha seteado
537
- useEffect(function () {
538
- if (!isCloneAgent || client || loadingMessages) return;
539
- var lastMsgWithClient = messages.filter(function (msg) {
540
- return msg.clientId != null && msg.clientName;
541
- }).at(-1);
542
- var _ref5 = lastMsgWithClient || {},
543
- msgClientId = _ref5.clientId,
544
- msgClientName = _ref5.clientName;
545
- if (msgClientId == null || !msgClientName) return;
546
- setClient === null || setClient === void 0 || setClient({
547
- id: Number(msgClientId),
548
- name: msgClientName
549
- });
550
- }, [isCloneAgent, messages, client, loadingMessages, setClient]);
551
495
  var handleStreamError = useCallback(function (errorMessage, errorRawMessage) {
552
496
  var _errorRawMessage$matc, _errorRawMessage$matc2;
553
497
  clearStreamUiRef.current();
@@ -604,7 +548,7 @@ export var useChatManager = function useChatManager(_ref3) {
604
548
  streamingStore.setText(tempMessageId, content);
605
549
  }, [addMessage]);
606
550
  var handleStreamFinish = useCallback(/*#__PURE__*/function () {
607
- var _ref6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(content, sources, memorySessionId, rawAttachments, suggestions, completedAgentId, resolvedContext) {
551
+ var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(content, sources, memorySessionId, rawAttachments, suggestions, completedAgentId) {
608
552
  var _previousMessage$appr, _window$taskPanel, _createAgentFollowUp, _editAgentFollowUp;
609
553
  var tempMessageId, attachments, taskUrlRegex, matches, contentToAdd, previousMessage, hasApprovalInPreviousMessage, TASK_CREATION_TOOLS, TASK_EDIT_TOOLS, TASK_DELETE_TOOLS, pendingActions, wasTaskCreation, wasTaskEdit, wasTaskDelete, wasCreateAgentApproved, wasConfigureAgentAccessApproved, createAgentFollowUp, configuredAgentId, wasEditAgentApproved, editAgentFollowUp, fromStream, fromArgs, resolvedAgentId, taskIdsFromUrls, taskIdsFromDeleteApproval, taskIdsFromDeletionText, taskIdsForDashboard, shouldSyncDashboard, taskIds, tab, tabSegment, lastProjectMessage, contextProjectIdRaw, contextProjectId, pathMatch, routeProjectId, isOnProjectRoute, _window$newProjectDas, _window$newProjectDas2, _window$newProjectDas3, _window$newProjectDas4, _window$newProjectDas5, _window$newProjectDas6, openTaskPanelId, manualApproval, manualWasTaskEdit, manualWasTaskDelete, _manualApproval$toolA, manualPseudoAction, affectedTaskIds, _window$taskPanel2, _window$taskPanel2$re, customEvent;
610
554
  return _regeneratorRuntime.wrap(function (_context2) {
@@ -756,61 +700,6 @@ export var useChatManager = function useChatManager(_ref3) {
756
700
  }, createAgentFollowUp ? {
757
701
  createAgentFollowUp: createAgentFollowUp
758
702
  } : {}));
759
-
760
- // Orquestador: actualiza el chip de contexto con el proyecto/cliente
761
- // que el subagente resolvió dinámicamente vía herramientas (ej. project_id
762
- // encontrado por get_project_id_based_on_name o get_project_with_tasks_info).
763
- if (resolvedContext !== null && resolvedContext !== void 0 && resolvedContext.project_id && !chipsProject) {
764
- if (resolvedContext.project_name) {
765
- setChipsProject({
766
- projectName: resolvedContext.project_name,
767
- clientName: resolvedContext.client_name || '',
768
- projectId: String(resolvedContext.project_id)
769
- });
770
- setProject(_objectSpread(_objectSpread({
771
- id: resolvedContext.project_id,
772
- name: resolvedContext.project_name
773
- }, resolvedContext.client_id ? {
774
- clientId: resolvedContext.client_id
775
- } : {}), resolvedContext.client_name ? {
776
- client: {
777
- id: resolvedContext.client_id || 0,
778
- name: resolvedContext.client_name
779
- }
780
- } : {}));
781
- } else {
782
- fetchProjects(resolvedContext.project_id).then(function (projects) {
783
- var found = projects === null || projects === void 0 ? void 0 : projects.find(function (p) {
784
- return Number(p.id) === resolvedContext.project_id;
785
- });
786
- if (found) {
787
- var _found$client2;
788
- setChipsProject({
789
- projectName: found.name,
790
- clientName: ((_found$client2 = found.client) === null || _found$client2 === void 0 ? void 0 : _found$client2.name) || resolvedContext.client_name || '',
791
- projectId: String(found.id)
792
- });
793
- setProject(found);
794
- } else {
795
- setChipsProject({
796
- projectName: "Proyecto ".concat(resolvedContext.project_id),
797
- clientName: resolvedContext.client_name || '',
798
- projectId: String(resolvedContext.project_id)
799
- });
800
- setProject({
801
- id: resolvedContext.project_id,
802
- name: "Proyecto ".concat(resolvedContext.project_id)
803
- });
804
- }
805
- });
806
- }
807
- }
808
- if (resolvedContext !== null && resolvedContext !== void 0 && resolvedContext.client_id && !client) {
809
- setClient === null || setClient === void 0 || setClient({
810
- id: resolvedContext.client_id,
811
- name: resolvedContext.client_name || ''
812
- });
813
- }
814
703
  if ((_createAgentFollowUp = createAgentFollowUp) !== null && _createAgentFollowUp !== void 0 && _createAgentFollowUp.agentId) {
815
704
  fetchAgentDetail(createAgentFollowUp.agentId).then(function (chatAgent) {
816
705
  document.dispatchEvent(new CustomEvent('maia-merge-created-agent-into-list', {
@@ -845,8 +734,8 @@ export var useChatManager = function useChatManager(_ref3) {
845
734
  }
846
735
  }, _callee2);
847
736
  }));
848
- return function (_x4, _x5, _x6, _x7, _x8, _x9, _x0) {
849
- return _ref6.apply(this, arguments);
737
+ return function (_x4, _x5, _x6, _x7, _x8, _x9) {
738
+ return _ref4.apply(this, arguments);
850
739
  };
851
740
  }(), [addMessage, removeMessage, project, getTabTaskDefault, event, agent]);
852
741
  var handleStreamStop = useCallback(function () {
@@ -874,74 +763,12 @@ export var useChatManager = function useChatManager(_ref3) {
874
763
  }, 500);
875
764
  }, [addMessage, removeMessage, t]);
876
765
  var handleApprovalRequired = useCallback(function (approval, accumulatedContent) {
877
- var _ref7, _approvalAny$resolved, _approvalAny$subagent, _approval$pending_act;
766
+ var _approval$pending_act;
878
767
  var tempMessageId = "answer-".concat(currentMessageId.current, "-streaming");
879
768
  streamingStore.clear();
880
769
  streamingPlaceholderIdRef.current = null;
881
770
  activeStreamChatIdRef.current = null;
882
771
  removeMessage(tempMessageId);
883
-
884
- // Orquestador: extraer contexto resuelto del payload de aprobación y
885
- // actualizar el chip inmediatamente — sin esperar al complete/refresh.
886
- // El backend incluye resolved_context en subagent_used (dentro del
887
- // approval_required data para subagentes) con el project_id/client_id
888
- // que el subagente determinó antes del interrupt.
889
- var approvalAny = approval;
890
- var rc = (_ref7 = (_approvalAny$resolved = approvalAny.resolved_context) !== null && _approvalAny$resolved !== void 0 ? _approvalAny$resolved : (_approvalAny$subagent = approvalAny.subagent) === null || _approvalAny$subagent === void 0 ? void 0 : _approvalAny$subagent.resolved_context) !== null && _ref7 !== void 0 ? _ref7 : null;
891
- if (rc !== null && rc !== void 0 && rc.project_id && !chipsProject) {
892
- if (rc.project_name) {
893
- // Tenemos nombre: setear el chip directamente
894
- setChipsProject({
895
- projectName: rc.project_name,
896
- clientName: rc.client_name || '',
897
- projectId: String(rc.project_id)
898
- });
899
- setProject(_objectSpread(_objectSpread({
900
- id: rc.project_id,
901
- name: rc.project_name
902
- }, rc.client_id ? {
903
- clientId: rc.client_id
904
- } : {}), rc.client_name ? {
905
- client: {
906
- id: rc.client_id || 0,
907
- name: rc.client_name
908
- }
909
- } : {}));
910
- } else {
911
- // Solo tenemos el ID — fetch del nombre completo del proyecto
912
- fetchProjects(rc.project_id).then(function (projects) {
913
- var found = projects === null || projects === void 0 ? void 0 : projects.find(function (p) {
914
- return Number(p.id) === rc.project_id;
915
- });
916
- if (found) {
917
- var _found$client3;
918
- setChipsProject({
919
- projectName: found.name,
920
- clientName: ((_found$client3 = found.client) === null || _found$client3 === void 0 ? void 0 : _found$client3.name) || rc.client_name || '',
921
- projectId: String(found.id)
922
- });
923
- setProject(found);
924
- } else {
925
- // Fallback: mostrar el ID si no se puede resolver el nombre
926
- setChipsProject({
927
- projectName: "Proyecto ".concat(rc.project_id),
928
- clientName: rc.client_name || '',
929
- projectId: String(rc.project_id)
930
- });
931
- setProject({
932
- id: rc.project_id,
933
- name: "Proyecto ".concat(rc.project_id)
934
- });
935
- }
936
- });
937
- }
938
- }
939
- if (rc !== null && rc !== void 0 && rc.client_id && !client) {
940
- setClient === null || setClient === void 0 || setClient({
941
- id: rc.client_id,
942
- name: rc.client_name || ''
943
- });
944
- }
945
772
  var hitlContext = {
946
773
  messageId: "approval-".concat(approval.original_thread_id),
947
774
  messageText: accumulatedContent || '',
@@ -953,9 +780,9 @@ export var useChatManager = function useChatManager(_ref3) {
953
780
  };
954
781
  hitlExecutionContextRef.current = hitlContext;
955
782
  if (approval.manual_approval_detected) {
956
- var _approval$pending_act2, _ref8, _tool_name, _tool_args;
783
+ var _approval$pending_act2, _ref5, _tool_name, _tool_args;
957
784
  var firstAction = (_approval$pending_act2 = approval.pending_actions) === null || _approval$pending_act2 === void 0 ? void 0 : _approval$pending_act2[0];
958
- var toolName = (_ref8 = (_tool_name = approval.tool_name) !== null && _tool_name !== void 0 ? _tool_name : firstAction === null || firstAction === void 0 ? void 0 : firstAction.tool_name) !== null && _ref8 !== void 0 ? _ref8 : '';
785
+ var toolName = (_ref5 = (_tool_name = approval.tool_name) !== null && _tool_name !== void 0 ? _tool_name : firstAction === null || firstAction === void 0 ? void 0 : firstAction.tool_name) !== null && _ref5 !== void 0 ? _ref5 : '';
959
786
  var toolArgs = ((_tool_args = approval.tool_args) !== null && _tool_args !== void 0 ? _tool_args : firstAction === null || firstAction === void 0 ? void 0 : firstAction.tool_args) || null;
960
787
  if (toolName) {
961
788
  lastManualApprovalRef.current = {
@@ -981,7 +808,7 @@ export var useChatManager = function useChatManager(_ref3) {
981
808
  approvalStatus: 'pending'
982
809
  });
983
810
  isProcessingRef.current = false;
984
- }, [addMessage, removeMessage, chipsProject, setChipsProject, setProject, client, setClient]);
811
+ }, [addMessage, removeMessage]);
985
812
  var _useOrchestratorStrea = useOrchestratorStream({
986
813
  onError: handleStreamError,
987
814
  onStreamUpdate: handleStreamUpdate,
@@ -1009,7 +836,7 @@ export var useChatManager = function useChatManager(_ref3) {
1009
836
  };
1010
837
  var currentProject = project;
1011
838
  var sendMessage = useCallback(/*#__PURE__*/function () {
1012
- var _ref9 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(message, attachmentsOrOptions, faqId, agentSuggestionId, mentions, fuaId, scId) {
839
+ var _ref6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(message, attachmentsOrOptions, faqId, agentSuggestionId, mentions, fuaId, scId) {
1013
840
  var _messagesRef$current;
1014
841
  var _normalizeSendMessage, attachments, options, effectiveMentions, contextMessage, payloadFuaId, payloadScId, payloadContextData, displayMessage, newMessageId, lastMessageWithProject, currentAgentFromMessages, streamingPlaceholderId, finalMessage, _options$projectChang, _contextRef$current$p, history, _contextRef$current, ctxChipsProject, ctxProject, ctxClient, ctxTask, lastMessageProjectId, projectToRequest, projects, payloadFaqId, payloadAgentSuggestionId, payloadData;
1015
842
  return _regeneratorRuntime.wrap(function (_context3) {
@@ -1148,8 +975,8 @@ export var useChatManager = function useChatManager(_ref3) {
1148
975
  }
1149
976
  }, _callee3);
1150
977
  }));
1151
- return function (_x1, _x10, _x11, _x12, _x13, _x14, _x15) {
1152
- return _ref9.apply(this, arguments);
978
+ return function (_x0, _x1, _x10, _x11, _x12, _x13, _x14) {
979
+ return _ref6.apply(this, arguments);
1153
980
  };
1154
981
  }(), [addMessage, event, askMaia, project, client, task, chipsProject, authUser, agent, t, waitingResponse, loadingMessages, isWebSearchActive, isDeepSearchActive]);
1155
982
  var changeProject = useCallback(function (option) {
@@ -1198,7 +1025,7 @@ export var useChatManager = function useChatManager(_ref3) {
1198
1025
  }
1199
1026
  }, [project, setProject, askMaia, authUser, isWebSearchActive, agent]);
1200
1027
  var handleFeedback = useCallback(/*#__PURE__*/function () {
1201
- var _ref0 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(feedbackProp, chatMessageId) {
1028
+ var _ref7 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(feedbackProp, chatMessageId) {
1202
1029
  var response;
1203
1030
  return _regeneratorRuntime.wrap(function (_context4) {
1204
1031
  while (1) switch (_context4.prev = _context4.next) {
@@ -1223,12 +1050,12 @@ export var useChatManager = function useChatManager(_ref3) {
1223
1050
  }
1224
1051
  }, _callee4);
1225
1052
  }));
1226
- return function (_x16, _x17) {
1227
- return _ref0.apply(this, arguments);
1053
+ return function (_x15, _x16) {
1054
+ return _ref7.apply(this, arguments);
1228
1055
  };
1229
1056
  }(), []);
1230
1057
  var handleApprovalDecision = useCallback(/*#__PURE__*/function () {
1231
- var _ref1 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5(threadIds, decision, editedActions) {
1058
+ var _ref8 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5(threadIds, decision, editedActions) {
1232
1059
  var messageWithApproval, approval, messageId, loadingKey, hitlContext, initialActivity, existingMessage, newStatus, response, _t;
1233
1060
  return _regeneratorRuntime.wrap(function (_context5) {
1234
1061
  while (1) switch (_context5.prev = _context5.next) {
@@ -1380,12 +1207,12 @@ export var useChatManager = function useChatManager(_ref3) {
1380
1207
  }
1381
1208
  }, _callee5, null, [[3, 7, 8, 9]]);
1382
1209
  }));
1383
- return function (_x18, _x19, _x20) {
1384
- return _ref1.apply(this, arguments);
1210
+ return function (_x17, _x18, _x19) {
1211
+ return _ref8.apply(this, arguments);
1385
1212
  };
1386
1213
  }(), [authUser, agent, addMessage, handleStreamError, handleStreamUpdate, handleStreamFinish, handleApprovalRequired, updateStreamActivity, t]);
1387
1214
  var initializeChat = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee6() {
1388
- var _userInitialMessage$m, _userInitialMessage$a, _ref11, _resolveProjectToRequ, _ctxProject$id, _ctxClient$id, _ctxTask$id, _ctxChipsProject$proj, hasInitialMessage, hasInitialAttachments, hasInitialFaq, hasInitialFua, hasInitialSc, history, _contextRef$current2, ctxChipsProject, ctxProject, ctxClient, ctxTask, projectToRequest;
1215
+ var _userInitialMessage$m, _userInitialMessage$a, _ref0, _resolveProjectToRequ, _ctxProject$id, _ctxClient$id, _ctxTask$id, _ctxChipsProject$proj, hasInitialMessage, hasInitialAttachments, hasInitialFaq, hasInitialFua, hasInitialSc, history, _contextRef$current2, ctxChipsProject, ctxProject, ctxClient, ctxTask, projectToRequest;
1389
1216
  return _regeneratorRuntime.wrap(function (_context6) {
1390
1217
  while (1) switch (_context6.prev = _context6.next) {
1391
1218
  case 0:
@@ -1424,7 +1251,7 @@ export var useChatManager = function useChatManager(_ref3) {
1424
1251
  };
1425
1252
  });
1426
1253
  _contextRef$current2 = contextRef.current, ctxChipsProject = _contextRef$current2.chipsProject, ctxProject = _contextRef$current2.project, ctxClient = _contextRef$current2.client, ctxTask = _contextRef$current2.task;
1427
- projectToRequest = (_ref11 = (_resolveProjectToRequ = resolveProjectToRequest(ctxChipsProject, null)) !== null && _resolveProjectToRequ !== void 0 ? _resolveProjectToRequ : ctxProject === null || ctxProject === void 0 ? void 0 : ctxProject.id) !== null && _ref11 !== void 0 ? _ref11 : null;
1254
+ projectToRequest = (_ref0 = (_resolveProjectToRequ = resolveProjectToRequest(ctxChipsProject, null)) !== null && _resolveProjectToRequ !== void 0 ? _resolveProjectToRequ : ctxProject === null || ctxProject === void 0 ? void 0 : ctxProject.id) !== null && _ref0 !== void 0 ? _ref0 : null;
1428
1255
  console.info('[useChatManager] PATH=initializeChat/userInitialMessage — contextRef resolution:', {
1429
1256
  projectPropId: (_ctxProject$id = ctxProject === null || ctxProject === void 0 ? void 0 : ctxProject.id) !== null && _ctxProject$id !== void 0 ? _ctxProject$id : null,
1430
1257
  clientId: (_ctxClient$id = ctxClient === null || ctxClient === void 0 ? void 0 : ctxClient.id) !== null && _ctxClient$id !== void 0 ? _ctxClient$id : null,
@@ -1518,4 +1345,4 @@ export var useChatManager = function useChatManager(_ref3) {
1518
1345
  isDisabled: waitingResponse || loadingMessages
1519
1346
  };
1520
1347
  };
1521
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidjQiLCJ1dWlkdjQiLCJ1c2VDaGF0TWVzc2FnZXMiLCJ1c2VPcmNoZXN0cmF0b3JTdHJlYW0iLCJ1c2VUIiwidXNlVXNlciIsInVzZUdsb2JhbENvbnRleHQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsIm1haWEiLCJGZWVkYmFjayIsIkNoYXRIaXN0b3J5Um9sZSIsImJ1aWxkQ29udGV4dE1lc3NhZ2UiLCJmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5IiwidXNlUHJvamVjdHMiLCJ1c2VUYWJUYXNrRGVmYXVsdCIsIlRBU0tfVVJMX1JFR0VYX1BBVFRFUk4iLCJmZXRjaEFnZW50RGV0YWlsIiwiYnVpbGRIaXRsQWN0aW9uVHlwZUxpc3QiLCJnZXRIaXRsQW5hbHl0aWNzQWdlbnRUeXBlIiwiZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSIsImdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSIsInJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5IiwicmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHkiLCJzdHJlYW1pbmdTdG9yZSIsImlzQ29tcGxldGVMaWtlU3NlUGF5bG9hZCIsIm1lcmdlU3RyZWFtQ2h1bmsiLCJub3JtYWxpemVTZW5kTWVzc2FnZUFyZ3MiLCJhdHRhY2htZW50c09yT3B0aW9ucyIsIl9vcHRpb25zJGF0dGFjaG1lbnRzIiwiQXJyYXkiLCJpc0FycmF5IiwiYXR0YWNobWVudHMiLCJvcHRpb25zIiwicmVzb2x2ZVByb2plY3RUb1JlcXVlc3QiLCJjaGlwc1Byb2plY3QiLCJsYXN0TWVzc2FnZVByb2plY3RJZCIsImNoaXBzUHJvamVjdElkIiwicHJvamVjdElkIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJwYXJzZWQiLCJyZXNvbHZlQ2xpZW50UGF5bG9hZCIsImN0eENsaWVudCIsImN0eFByb2plY3QiLCJfY3R4UHJvamVjdCRjbGllbnQiLCJpZCIsIl9vYmplY3RTcHJlYWQiLCJjbGllbnRJZCIsIm5hbWUiLCJjbGllbnROYW1lIiwiY2xpZW50Iiwibm9ybWFsaXplQXNzaXN0YW50QXR0YWNobWVudHMiLCJyYXdBdHRhY2htZW50cyIsImZpbHRlciIsImF0dGFjaG1lbnQiLCJfdHlwZW9mIiwibWFwIiwiaW5kZXgiLCJ0cmltIiwiY29uY2F0IiwidHlwZSIsIm1pbWVUeXBlIiwibWltZV90eXBlIiwiZnVsbEZpbGVOYW1lIiwiaW5jbHVkZXMiLCJudW1lcmljU2l6ZSIsInNpemUiLCJmaWxlIiwiRmlsZSIsInVybF9vcmlnaW5hbCIsInVuZGVmaW5lZCIsInVybF90aHVtYm5haWwiLCJ1cmxfZmlsZSIsInJvbGUiLCJleHRyYWN0VGFza0lkc0Zyb21QZW5kaW5nQWN0aW9uc0FyZ3MiLCJwZW5kaW5nQWN0aW9ucyIsImlkcyIsInB1c2hJZCIsInJhdyIsIm4iLCJwYXJzZUludCIsIlN0cmluZyIsImlzTmFOIiwicHVzaCIsImZvckVhY2giLCJhY3Rpb24iLCJfcmVjJHRhc2tfaWQiLCJhcmdzIiwidG9vbF9hcmdzIiwicmVjIiwidGFza19pZCIsInRhc2tfaWRzIiwidGFza3MiLCJ0IiwiX3RyZWMkdGFza19pZCIsInRyZWMiLCJleHRyYWN0VGFza0lkc0Zyb21EZWxldGVQZW5kaW5nQWN0aW9ucyIsInRvb2xfbmFtZSIsIl9yZWMkdGFza19pZDIiLCJsaXN0IiwidGlkIiwiZXh0cmFjdEFnZW50SWRGcm9tRWRpdEFnZW50UGVuZGluZ0FjdGlvbnMiLCJfcmVjJGFnZW50X2lkIiwiZWRpdEFjdGlvbiIsImZpbmQiLCJhIiwidG9Mb3dlckNhc2UiLCJhZ2VudF9pZCIsImFnZW50SWQiLCJleHRyYWN0QWdlbnRJZEZyb21QZW5kaW5nQWN0aW9uc0J5VG9vbE5hbWUiLCJ0b29sTmFtZSIsIl9yZWYiLCJfcmVjJGFnZW50X2lkMiIsImV4dHJhY3RUYXNrSWRzRnJvbUFzc2lzdGFudERlbGV0aW9uVGV4dCIsInRleHQiLCJsYWJlbGVkIiwibWF0Y2giLCJib2xkIiwidXNlU3RhYmxlQ2FsbGJhY2tzIiwiYXV0aFVzZXIiLCJjdXJyZW50VXNlciIsInRvU3RyaW5nIiwiZmlyc3ROYW1lIiwiYXZhdGFyIiwicGljdHVyZSIsImN1cnJlbnQiLCJwYXJzZVNTRUxpbmUiLCJsaW5lIiwiX2xpbmUkc3BsaXQiLCJzcGxpdCIsIl9saW5lJHNwbGl0MiIsIl9zbGljZWRUb0FycmF5IiwiZXZlbnRMaW5lIiwiZGF0YUxpbmUiLCJldmVudFR5cGUiLCJyZXBsYWNlIiwiZGF0YVN0ciIsImRhdGEiLCJKU09OIiwicGFyc2UiLCJwYXJzZUVycm9yIiwiY29uc29sZSIsImVycm9yIiwicHJvY2Vzc1NTRVN0cmVhbSIsIl9yZWYyIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJyZXNwb25zZSIsInRocmVhZElkIiwiY2FsbGJhY2tzIiwiX3Jlc3BvbnNlJGJvZHkiLCJyZWFkZXIiLCJkZWNvZGVyIiwiYnVmZmVyIiwiYWNjdW11bGF0ZWRDb250ZW50IiwiaXNTdHJlYW1Db21wbGV0ZSIsImhhbmRsZUxpbmUiLCJfeWllbGQkcmVhZGVyJHJlYWQiLCJkb25lIiwidmFsdWUiLCJsaW5lcyIsImkiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsIl9oYW5kbGVMaW5lIiwiZXZlbnREYXRhIiwib25UaGlua2luZyIsImNvbnRlbnQiLCJvblRva2VuIiwiX2V2ZW50RGF0YSRhZ2VudF9pZCIsImZpbmFsQ29udGVudCIsInNvdXJjZXMiLCJtZW1vcnlTZXNzaW9uSWQiLCJtZW1vcnlfc2Vzc2lvbl9pZCIsInN1Z2dlc3Rpb25zIiwic3VnZ2VzdF9yZXBseSIsImFnZW50SWRSYXciLCJjb21wbGV0ZWRBZ2VudElkIiwib25Db21wbGV0ZSIsIm1lc3NhZ2UiLCJvbk5vZGUiLCJfZXZlbnREYXRhJGFnZW50X2lkMiIsIl9jYWxsYmFja3Mkb25BcHByb3ZhbCIsIm9uQXBwcm92YWxSZXF1aXJlZCIsImNhbGwiLCJvbkVycm9yIiwiYm9keSIsImdldFJlYWRlciIsIkVycm9yIiwiVGV4dERlY29kZXIiLCJyZWFkIiwic2VudCIsImFicnVwdCIsImRlY29kZSIsInN0cmVhbSIsInBvcCIsImxlbmd0aCIsInN0b3AiLCJfeCIsIl94MiIsIl94MyIsImFwcGx5IiwiYXJndW1lbnRzIiwidXNlQ2hhdE1hbmFnZXIiLCJfcmVmMyIsImluaXRpYWxDaGF0SWQiLCJjaGF0SWQiLCJ1c2VySW5pdGlhbE1lc3NhZ2UiLCJfcmVmMyRhZ2VudHMiLCJhZ2VudHMiLCJfdXNlVCIsIl91c2VHbG9iYWxDb250ZXh0IiwicHJvamVjdCIsInNldFByb2plY3QiLCJzZXRDbGllbnQiLCJ0YXNrIiwic2V0VGFzayIsImFnZW50IiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJpc0RlZXBTZWFyY2hBY3RpdmUiLCJzZXRDaGlwc1Byb2plY3QiLCJldmVudCIsIl91c2VQcm9qZWN0cyIsImZldGNoUHJvamVjdHMiLCJfdXNlU3RhYmxlQ2FsbGJhY2tzIiwiX3VzZVRhYlRhc2tEZWZhdWx0IiwiZ2V0VGFiVGFza0RlZmF1bHQiLCJfY2hpcHNQcm9qZWN0JHByb2plY3QiLCJfY2hpcHNQcm9qZWN0JHByb2plY3QyIiwiX3Byb2plY3QkaWQiLCJfY2xpZW50JGlkIiwiX3Rhc2skaWQiLCJpbmZvIiwiY2hpcHNQcm9qZWN0TmFtZSIsInByb2plY3ROYW1lIiwicHJvamVjdFByb3BJZCIsInRhc2tJZCIsImN1cnJlbnRNZXNzYWdlSWQiLCJjdXJyZW50VXNlclF1ZXN0aW9uIiwiY3VycmVudENoYXRJZCIsInJlcG9ydGVkRXZlbnQiLCJtZXNzYWdlc1JlZiIsImxhc3RNYW51YWxBcHByb3ZhbFJlZiIsImhpdGxFeGVjdXRpb25Db250ZXh0UmVmIiwiaXNQcm9jZXNzaW5nUmVmIiwiZmlyc3RUaW1lUmVmIiwic3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZiIsImFjdGl2ZVN0cmVhbUNoYXRJZFJlZiIsImFib3J0U3RyZWFtU2lsZW50bHlSZWYiLCJjbGVhclN0cmVhbVVpUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImFjdGl2ZUxvYWRpbmdzIiwic2V0QWN0aXZlTG9hZGluZ3MiLCJpc1dlYlNlYXJjaEFjdGl2ZVJlZiIsImlzRGVlcFNlYXJjaEFjdGl2ZVJlZiIsImNvbnRleHRSZWYiLCJfdXNlQ2hhdE1lc3NhZ2VzIiwibG9hZGluZ01lc3NhZ2VzIiwibWVzc2FnZXMiLCJpc0xvYWRpbmdNb3JlTWVzc2FnZXMiLCJsb2FkTWVzc2FnZXMiLCJhZGRNZXNzYWdlIiwicmVtb3ZlTWVzc2FnZSIsImhhbmRsZVNjcm9sbCIsImN1c3RvbUV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJkZXRhaWwiLCJkb2N1bWVudCIsImRpc3BhdGNoRXZlbnQiLCJjbGVhciIsImlzQ2xvbmVBZ2VudCIsImxhc3RNc2dXaXRoUHJvamVjdCIsIm1zZyIsImF0IiwiX3JlZjQiLCJ0aGVuIiwicHJvamVjdHMiLCJmb3VuZCIsInAiLCJfZm91bmQkY2xpZW50IiwibGFzdE1zZ1dpdGhDbGllbnQiLCJfcmVmNSIsIm1zZ0NsaWVudElkIiwibXNnQ2xpZW50TmFtZSIsImhhbmRsZVN0cmVhbUVycm9yIiwiZXJyb3JNZXNzYWdlIiwiZXJyb3JSYXdNZXNzYWdlIiwiX2Vycm9yUmF3TWVzc2FnZSRtYXRjIiwiX2Vycm9yUmF3TWVzc2FnZSRtYXRjMiIsInRlbXBNZXNzYWdlSWQiLCJ1c2VkIiwiaXNFcnJvciIsImRhdGUiLCJEYXRlIiwidXNlciIsIkFTU0lTVEFOVCIsImhhbmRsZVN0cmVhbVVwZGF0ZSIsInN0YXJ0Iiwic2V0VGV4dCIsImhhbmRsZVN0cmVhbUZpbmlzaCIsIl9yZWY2IiwiX2NhbGxlZTIiLCJyZXNvbHZlZENvbnRleHQiLCJfcHJldmlvdXNNZXNzYWdlJGFwcHIiLCJfd2luZG93JHRhc2tQYW5lbCIsIl9jcmVhdGVBZ2VudEZvbGxvd1VwIiwiX2VkaXRBZ2VudEZvbGxvd1VwIiwidGFza1VybFJlZ2V4IiwibWF0Y2hlcyIsImNvbnRlbnRUb0FkZCIsInByZXZpb3VzTWVzc2FnZSIsImhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UiLCJUQVNLX0NSRUFUSU9OX1RPT0xTIiwiVEFTS19FRElUX1RPT0xTIiwiVEFTS19ERUxFVEVfVE9PTFMiLCJ3YXNUYXNrQ3JlYXRpb24iLCJ3YXNUYXNrRWRpdCIsIndhc1Rhc2tEZWxldGUiLCJ3YXNDcmVhdGVBZ2VudEFwcHJvdmVkIiwid2FzQ29uZmlndXJlQWdlbnRBY2Nlc3NBcHByb3ZlZCIsImNyZWF0ZUFnZW50Rm9sbG93VXAiLCJjb25maWd1cmVkQWdlbnRJZCIsIndhc0VkaXRBZ2VudEFwcHJvdmVkIiwiZWRpdEFnZW50Rm9sbG93VXAiLCJmcm9tU3RyZWFtIiwiZnJvbUFyZ3MiLCJyZXNvbHZlZEFnZW50SWQiLCJ0YXNrSWRzRnJvbVVybHMiLCJ0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsIiwidGFza0lkc0Zyb21EZWxldGlvblRleHQiLCJ0YXNrSWRzRm9yRGFzaGJvYXJkIiwic2hvdWxkU3luY0Rhc2hib2FyZCIsInRhc2tJZHMiLCJ0YWIiLCJ0YWJTZWdtZW50IiwibGFzdFByb2plY3RNZXNzYWdlIiwiY29udGV4dFByb2plY3RJZFJhdyIsImNvbnRleHRQcm9qZWN0SWQiLCJwYXRoTWF0Y2giLCJyb3V0ZVByb2plY3RJZCIsImlzT25Qcm9qZWN0Um91dGUiLCJfd2luZG93JG5ld1Byb2plY3REYXMiLCJfd2luZG93JG5ld1Byb2plY3REYXMyIiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzMyIsIl93aW5kb3ckbmV3UHJvamVjdERhczQiLCJfd2luZG93JG5ld1Byb2plY3REYXM1IiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzNiIsIm9wZW5UYXNrUGFuZWxJZCIsIm1hbnVhbEFwcHJvdmFsIiwibWFudWFsV2FzVGFza0VkaXQiLCJtYW51YWxXYXNUYXNrRGVsZXRlIiwiX21hbnVhbEFwcHJvdmFsJHRvb2xBIiwibWFudWFsUHNldWRvQWN0aW9uIiwiYWZmZWN0ZWRUYXNrSWRzIiwiX3dpbmRvdyR0YXNrUGFuZWwyIiwiX3dpbmRvdyR0YXNrUGFuZWwyJHJlIiwiX2NvbnRleHQyIiwiUmVnRXhwIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwibWF0Y2hBbGwiLCJtIiwiYXBwcm92YWwiLCJwZW5kaW5nX2FjdGlvbnMiLCJzb21lIiwiYXBwcm92YWxTdGF0dXMiLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiYWlDaGF0SGl0bE9wdGlvbiIsImFnZW50X3R5cGUiLCJhY3Rpb25fdHlwZSIsImRlY2lzaW9uIiwib3B0aW9uIiwiY3JlYXRlZF9hZ2VudF9pZCIsInVybCIsImxvY2F0aW9uIiwicGF0aG5hbWUiLCJuZXdQcm9qZWN0RGFzaGJvYXJkIiwiYWRkRXhpc3RpbmdUYXNrVG9EYXNoYm9hcmQiLCJlZGl0RXhpc3RpbmdUYXNrSW5EYXNoYm9hcmQiLCJkZWxldGVFeGlzdGluZ1Rhc2tGcm9tRGFzaGJvYXJkIiwidGFza1BhbmVsIiwidG9vbEFyZ3MiLCJyZWZldGNoVGFzayIsInByb2plY3RfaWQiLCJwcm9qZWN0X25hbWUiLCJjbGllbnRfbmFtZSIsImNsaWVudF9pZCIsIl9mb3VuZCRjbGllbnQyIiwiY2hhdEFnZW50IiwiZXJyIiwiX3g0IiwiX3g1IiwiX3g2IiwiX3g3IiwiX3g4IiwiX3g5IiwiX3gwIiwiaGFuZGxlU3RyZWFtU3RvcCIsImlzRnJvbnRlbmRDYW5jZWxsZWQiLCJzZXRUaW1lb3V0IiwiaGFuZGxlQXBwcm92YWxSZXF1aXJlZCIsIl9yZWY3IiwiX2FwcHJvdmFsQW55JHJlc29sdmVkIiwiX2FwcHJvdmFsQW55JHN1YmFnZW50IiwiX2FwcHJvdmFsJHBlbmRpbmdfYWN0IiwiYXBwcm92YWxBbnkiLCJyYyIsInJlc29sdmVkX2NvbnRleHQiLCJzdWJhZ2VudCIsIl9mb3VuZCRjbGllbnQzIiwiaGl0bENvbnRleHQiLCJtZXNzYWdlSWQiLCJvcmlnaW5hbF90aHJlYWRfaWQiLCJtZXNzYWdlVGV4dCIsInRocmVhZElkcyIsInRocmVhZF9pZCIsIm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCIsIl9hcHByb3ZhbCRwZW5kaW5nX2FjdDIiLCJfcmVmOCIsIl90b29sX25hbWUiLCJfdG9vbF9hcmdzIiwiZmlyc3RBY3Rpb24iLCJfdXNlT3JjaGVzdHJhdG9yU3RyZWEiLCJvblN0cmVhbVVwZGF0ZSIsIm9uRmluaXNoU3RyZWFtIiwib25TdG9wIiwiYXNrTWFpYSIsIndhaXRpbmdSZXNwb25zZSIsImlzTG9hZGluZyIsImlzV3JpdGluZyIsImxvYWRpbmdNZXNzYWdlIiwic3RyZWFtQWN0aXZpdHkiLCJ1cGRhdGVTdHJlYW1BY3Rpdml0eSIsInN0b3BTdHJlYW1pbmciLCJhYm9ydFN0cmVhbVNpbGVudGx5IiwiY3VycmVudFByb2plY3QiLCJzZW5kTWVzc2FnZSIsIl9yZWY5IiwiX2NhbGxlZTMiLCJmYXFJZCIsImFnZW50U3VnZ2VzdGlvbklkIiwibWVudGlvbnMiLCJmdWFJZCIsInNjSWQiLCJfbWVzc2FnZXNSZWYkY3VycmVudCIsIl9ub3JtYWxpemVTZW5kTWVzc2FnZSIsImVmZmVjdGl2ZU1lbnRpb25zIiwiY29udGV4dE1lc3NhZ2UiLCJwYXlsb2FkRnVhSWQiLCJwYXlsb2FkU2NJZCIsInBheWxvYWRDb250ZXh0RGF0YSIsImRpc3BsYXlNZXNzYWdlIiwibmV3TWVzc2FnZUlkIiwibGFzdE1lc3NhZ2VXaXRoUHJvamVjdCIsImN1cnJlbnRBZ2VudEZyb21NZXNzYWdlcyIsInN0cmVhbWluZ1BsYWNlaG9sZGVySWQiLCJmaW5hbE1lc3NhZ2UiLCJfb3B0aW9ucyRwcm9qZWN0Q2hhbmciLCJfY29udGV4dFJlZiRjdXJyZW50JHAiLCJoaXN0b3J5IiwiX2NvbnRleHRSZWYkY3VycmVudCIsImN0eENoaXBzUHJvamVjdCIsImN0eFRhc2siLCJwcm9qZWN0VG9SZXF1ZXN0IiwicGF5bG9hZEZhcUlkIiwicGF5bG9hZEFnZW50U3VnZ2VzdGlvbklkIiwicGF5bG9hZERhdGEiLCJfY29udGV4dDMiLCJjb250ZXh0RGF0YSIsInBtQWlUeXBlZFRleHQiLCJVU0VSIiwicHJvamVjdENoYW5nZWQiLCJpbmNvbWVUeXBlIiwiaGlzdG9yeU1lc3NhZ2UiLCJhZ2VudFR5cGUiLCJsYW5nIiwidXNlcklkIiwibGFzdE5hbWUiLCJjb21wYW55SWQiLCJjb21wYW55X2lkIiwiYWdlbnROYW1lIiwiZmVlSWQiLCJ0YXNrTmFtZSIsImVudGl0eSIsImFnZW50RW50aXR5IiwiX3gxIiwiX3gxMCIsIl94MTEiLCJfeDEyIiwiX3gxMyIsIl94MTQiLCJfeDE1IiwiY2hhbmdlUHJvamVjdCIsIl9wcm9qZWN0JGlkMiIsIl9jaGlwc1Byb2plY3QkcHJvamVjdDMiLCJvcHRpb25JZCIsImhhbmRsZUZlZWRiYWNrIiwiX3JlZjAiLCJfY2FsbGVlNCIsImZlZWRiYWNrUHJvcCIsImNoYXRNZXNzYWdlSWQiLCJfY29udGV4dDQiLCJDaGF0cyIsIndhc0hlbHBmdWxDaGF0IiwiVEhVTUJTX1VQIiwid2FzSGVscGZ1bCIsIl94MTYiLCJfeDE3IiwiaGFuZGxlQXBwcm92YWxEZWNpc2lvbiIsIl9yZWYxIiwiX2NhbGxlZTUiLCJlZGl0ZWRBY3Rpb25zIiwibWVzc2FnZVdpdGhBcHByb3ZhbCIsImxvYWRpbmdLZXkiLCJpbml0aWFsQWN0aXZpdHkiLCJleGlzdGluZ01lc3NhZ2UiLCJuZXdTdGF0dXMiLCJfdCIsIl9jb250ZXh0NSIsIl9tJGFwcHJvdmFsIiwiX2RlZmluZVByb3BlcnR5IiwiT3JjaGVzdHJhdG9yIiwiY29udGludWVUaHJlYWQiLCJzZXNzaW9uSWQiLCJzZXNzaW9uX2lkIiwib2siLCJhY3Rpdml0eSIsInBoYXNlIiwiY3VycmVudFRocmVhZElkIiwibm9kZUFjdGl2aXR5IiwidXNlUmVzdW1pbmdGYWxsYmFjayIsIm5ld0xvYWRpbmdzIiwiYXBwcm92YWxQYXlsb2FkIiwiZmluaXNoIiwiX3gxOCIsIl94MTkiLCJfeDIwIiwiaW5pdGlhbGl6ZUNoYXQiLCJfY2FsbGVlNiIsIl91c2VySW5pdGlhbE1lc3NhZ2UkbSIsIl91c2VySW5pdGlhbE1lc3NhZ2UkYSIsIl9yZWYxMSIsIl9yZXNvbHZlUHJvamVjdFRvUmVxdSIsIl9jdHhQcm9qZWN0JGlkIiwiX2N0eENsaWVudCRpZCIsIl9jdHhUYXNrJGlkIiwiX2N0eENoaXBzUHJvamVjdCRwcm9qIiwiaGFzSW5pdGlhbE1lc3NhZ2UiLCJoYXNJbml0aWFsQXR0YWNobWVudHMiLCJoYXNJbml0aWFsRmFxIiwiaGFzSW5pdGlhbEZ1YSIsImhhc0luaXRpYWxTYyIsIl9jb250ZXh0UmVmJGN1cnJlbnQyIiwiX2NvbnRleHQ2IiwiQm9vbGVhbiIsInJlc2V0Q2hhdCIsInN0b3BHZW5lcmF0aW9uIiwiaXNEaXNhYmxlZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy91c2VDaGF0TWFuYWdlci91c2VDaGF0TWFuYWdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSByYWRpeCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRlZC1vcHRpb25hbC1jaGFpbiAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCdcbmltcG9ydCB7IHVzZUNoYXRNZXNzYWdlcyB9IGZyb20gJy4uL3VzZUNoYXRNZXNzYWdlcydcbmltcG9ydCB7IHVzZU9yY2hlc3RyYXRvclN0cmVhbSB9IGZyb20gJy4uL3VzZU9yY2hlc3RyYXRvclN0cmVhbSdcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi91c2VUJ1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgeyBTZW5kTWVzc2FnZU9wdGlvbnMsIFVzZUNoYXRNYW5hZ2VyUHJvcHMgfSBmcm9tICcuL3VzZUNoYXRNYW5hZ2VyLmludGVyZmFjZSdcbmltcG9ydCB7IHVzZVVzZXIsIENPUlVzZXIgfSBmcm9tICcuLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vdXNlRXZlbnQnXG5pbXBvcnQgbWFpYSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYWlhJ1xuaW1wb3J0IHsgRmVlZGJhY2sgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL21vbGVjdWxlcy9NZXNzYWdlRmVlZGJhY2svTWVzc2FnZUZlZWRiYWNrJ1xuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UsIENoYXRNZXNzYWdlVXNlciwgQ2hhdEhpc3RvcnlSb2xlLCBBcHByb3ZhbFJlcXVlc3QsIFBlbmRpbmdBY3Rpb24gfSBmcm9tICcuLi8uLi90eXBlcy9DaGF0J1xuaW1wb3J0IHsgQ29udGV4dE1lbnRpb24sIENvbnRleHRNZXNzYWdlLCBidWlsZENvbnRleHRNZXNzYWdlIH0gZnJvbSAnLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5IH0gZnJvbSAnLi4vLi4vdXRpbHMvZm9ybWF0UXVpY2tBY3Rpb25NZXNzYWdlJ1xuXG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vLi4vdHlwZXMvUHJvamVjdCdcbmltcG9ydCB7IHVzZVByb2plY3RzIH0gZnJvbSAnLi4vdXNlUHJvamVjdHMnXG5pbXBvcnQgeyB1c2VUYWJUYXNrRGVmYXVsdCB9IGZyb20gJy4uL3VzZVRhYlRhc2tEZWZhdWx0J1xuaW1wb3J0IHsgVEFTS19VUkxfUkVHRVhfUEFUVEVSTiB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy90YXNrVXJscydcbmltcG9ydCB7IGZldGNoQWdlbnREZXRhaWwgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYWlhL0FnZW50cy9mZXRjaEFnZW50RGV0YWlsJ1xuaW1wb3J0IHR5cGUgeyBSZXNvbHZlZENvbnRleHQgfSBmcm9tICcuLi91c2VPcmNoZXN0cmF0b3JTdHJlYW0vdXNlT3JjaGVzdHJhdG9yU3RyZWFtLmludGVyZmFjZSdcbmltcG9ydCB7IGJ1aWxkSGl0bEFjdGlvblR5cGVMaXN0LCBnZXRIaXRsQW5hbHl0aWNzQWdlbnRUeXBlIH0gZnJvbSAnLi4vLi4vdXRpbHMvaGl0bEFuYWx5dGljcydcbmltcG9ydCB0eXBlIHsgU3RyZWFtQWN0aXZpdHkgfSBmcm9tICcuLi8uLi90eXBlcy9zdHJlYW1BY3Rpdml0eSdcbmltcG9ydCB7XG4gIGdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UsXG4gIGdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSxcbiAgcmVzb2x2ZUhpdGxOb2RlU3RyZWFtQWN0aXZpdHksXG4gIHJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5LFxuICB0eXBlIEhpdGxFeGVjdXRpb25Db250ZXh0LFxufSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuaW1wb3J0IHsgc3RyZWFtaW5nU3RvcmUgfSBmcm9tICcuLi91c2VTdHJlYW1pbmdNZXNzYWdlJ1xuaW1wb3J0IHsgaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkLCBtZXJnZVN0cmVhbUNodW5rIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3NlU3RyZWFtQ29udGVudCdcblxudHlwZSBBdHRhY2htZW50c09yT3B0aW9ucyA9IEF0dGFjaG1lbnRGaWxlW10gfCBTZW5kTWVzc2FnZU9wdGlvbnNcblxuY29uc3Qgbm9ybWFsaXplU2VuZE1lc3NhZ2VBcmdzID0gKGF0dGFjaG1lbnRzT3JPcHRpb25zPzogQXR0YWNobWVudHNPck9wdGlvbnMpID0+IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXR0YWNobWVudHNPck9wdGlvbnMpKSB7XG4gICAgcmV0dXJuIHsgYXR0YWNobWVudHM6IGF0dGFjaG1lbnRzT3JPcHRpb25zLCBvcHRpb25zOiB7fSBhcyBTZW5kTWVzc2FnZU9wdGlvbnMgfVxuICB9XG5cbiAgY29uc3Qgb3B0aW9uczogU2VuZE1lc3NhZ2VPcHRpb25zID0gYXR0YWNobWVudHNPck9wdGlvbnMgPz8ge31cbiAgcmV0dXJuIHsgYXR0YWNobWVudHM6IG9wdGlvbnMuYXR0YWNobWVudHMgPz8gW10sIG9wdGlvbnMgfVxufVxuXG4vKiogY2hpcHNQcm9qZWN0IGVzIGxhIGZ1ZW50ZSBkZSB2ZXJkYWQgZGVsIHBpbiB2aXNpYmxlOyBzaSBubyBoYXkgcGluLCByZXN0YXVyYXIgZGVzZGUgaGlzdG9yaWFsLiAqL1xuY29uc3QgcmVzb2x2ZVByb2plY3RUb1JlcXVlc3QgPSAoXG4gIGNoaXBzUHJvamVjdDogeyBwcm9qZWN0SWQ/OiBzdHJpbmcgfSB8IG51bGwgfCB1bmRlZmluZWQsXG4gIGxhc3RNZXNzYWdlUHJvamVjdElkOiBudW1iZXIgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4pOiBudW1iZXIgfCBudWxsID0+IHtcbiAgY29uc3QgY2hpcHNQcm9qZWN0SWQgPSBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCA/IE51bWJlcihjaGlwc1Byb2plY3QucHJvamVjdElkKSA6IG51bGxcbiAgaWYgKGNoaXBzUHJvamVjdElkICE9IG51bGwgJiYgTnVtYmVyLmlzRmluaXRlKGNoaXBzUHJvamVjdElkKSkge1xuICAgIHJldHVybiBjaGlwc1Byb2plY3RJZFxuICB9XG4gIGlmIChsYXN0TWVzc2FnZVByb2plY3RJZCAhPSBudWxsKSB7XG4gICAgY29uc3QgcGFyc2VkID0gTnVtYmVyKGxhc3RNZXNzYWdlUHJvamVjdElkKVxuICAgIHJldHVybiBOdW1iZXIuaXNGaW5pdGUocGFyc2VkKSA/IHBhcnNlZCA6IG51bGxcbiAgfVxuICByZXR1cm4gbnVsbFxufVxuXG5jb25zdCByZXNvbHZlQ2xpZW50UGF5bG9hZCA9IChcbiAgY3R4Q2xpZW50OiB7IGlkPzogbnVtYmVyOyBuYW1lPzogc3RyaW5nIH0gfCBudWxsIHwgdW5kZWZpbmVkLFxuICBjdHhQcm9qZWN0OiBQcm9qZWN0IHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogeyBjbGllbnRJZD86IG51bWJlcjsgY2xpZW50TmFtZT86IHN0cmluZyB9ID0+IHtcbiAgaWYgKGN0eENsaWVudD8uaWQpIHtcbiAgICByZXR1cm4geyBjbGllbnRJZDogY3R4Q2xpZW50LmlkLCAuLi4oY3R4Q2xpZW50Lm5hbWUgPyB7IGNsaWVudE5hbWU6IGN0eENsaWVudC5uYW1lIH0gOiB7fSkgfVxuICB9XG4gIGlmIChjdHhQcm9qZWN0Py5jbGllbnRJZCAhPSBudWxsKSB7XG4gICAgcmV0dXJuIHsgY2xpZW50SWQ6IE51bWJlcihjdHhQcm9qZWN0LmNsaWVudElkKSB9XG4gIH1cbiAgaWYgKGN0eFByb2plY3Q/LmNsaWVudD8uaWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY2xpZW50SWQ6IGN0eFByb2plY3QuY2xpZW50LmlkLFxuICAgICAgLi4uKGN0eFByb2plY3QuY2xpZW50Lm5hbWUgPyB7IGNsaWVudE5hbWU6IGN0eFByb2plY3QuY2xpZW50Lm5hbWUgfSA6IHt9KSxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHt9XG59XG5cbmNvbnN0IG5vcm1hbGl6ZUFzc2lzdGFudEF0dGFjaG1lbnRzID0gKHJhd0F0dGFjaG1lbnRzOiB1bmtub3duKTogQXR0YWNobWVudEZpbGVbXSA9PiB7XG4gIGlmICghQXJyYXkuaXNBcnJheShyYXdBdHRhY2htZW50cykpIHtcbiAgICByZXR1cm4gW11cbiAgfVxuXG4gIHJldHVybiByYXdBdHRhY2htZW50c1xuICAgIC5maWx0ZXIoKGF0dGFjaG1lbnQpOiBhdHRhY2htZW50IGlzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+ICEhYXR0YWNobWVudCAmJiB0eXBlb2YgYXR0YWNobWVudCA9PT0gJ29iamVjdCcpXG4gICAgLm1hcCgoYXR0YWNobWVudCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPVxuICAgICAgICB0eXBlb2YgYXR0YWNobWVudC5uYW1lID09PSAnc3RyaW5nJyAmJiBhdHRhY2htZW50Lm5hbWUudHJpbSgpID8gYXR0YWNobWVudC5uYW1lLnRyaW0oKSA6IGBmaWxlLSR7aW5kZXggKyAxfWBcbiAgICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgYXR0YWNobWVudC50eXBlID09PSAnc3RyaW5nJyAmJiBhdHRhY2htZW50LnR5cGUudHJpbSgpID8gYXR0YWNobWVudC50eXBlLnRyaW0oKSA6ICdwZGYnXG4gICAgICBjb25zdCBtaW1lVHlwZSA9IHR5cGVvZiBhdHRhY2htZW50Lm1pbWVfdHlwZSA9PT0gJ3N0cmluZycgPyBhdHRhY2htZW50Lm1pbWVfdHlwZSA6ICcnXG4gICAgICBjb25zdCBmdWxsRmlsZU5hbWUgPSBuYW1lLmluY2x1ZGVzKCcuJykgPyBuYW1lIDogYCR7bmFtZX0uJHt0eXBlfWBcbiAgICAgIGNvbnN0IG51bWVyaWNTaXplID1cbiAgICAgICAgdHlwZW9mIGF0dGFjaG1lbnQuc2l6ZSA9PT0gJ251bWJlcidcbiAgICAgICAgICA/IGF0dGFjaG1lbnQuc2l6ZVxuICAgICAgICAgIDogTnVtYmVyLmlzRmluaXRlKE51bWJlcihhdHRhY2htZW50LnNpemUpKVxuICAgICAgICAgICAgPyBOdW1iZXIoYXR0YWNobWVudC5zaXplKVxuICAgICAgICAgICAgOiAwXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZpbGU6IG5ldyBGaWxlKFtdLCBmdWxsRmlsZU5hbWUsIHsgdHlwZTogbWltZVR5cGUgfSksXG4gICAgICAgIGlkOlxuICAgICAgICAgIHR5cGVvZiBhdHRhY2htZW50LmlkID09PSAnc3RyaW5nJyAmJiBhdHRhY2htZW50LmlkLnRyaW0oKVxuICAgICAgICAgICAgPyBhdHRhY2htZW50LmlkXG4gICAgICAgICAgICA6IGBhc3Npc3RhbnQtZmlsZS0ke2luZGV4fS0ke2Z1bGxGaWxlTmFtZX1gLFxuICAgICAgICBuYW1lLFxuICAgICAgICBzaXplOiBudW1lcmljU2l6ZSxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgdXJsX29yaWdpbmFsOiB0eXBlb2YgYXR0YWNobWVudC51cmxfb3JpZ2luYWwgPT09ICdzdHJpbmcnID8gYXR0YWNobWVudC51cmxfb3JpZ2luYWwgOiB1bmRlZmluZWQsXG4gICAgICAgIHVybF90aHVtYm5haWw6IHR5cGVvZiBhdHRhY2htZW50LnVybF90aHVtYm5haWwgPT09ICdzdHJpbmcnID8gYXR0YWNobWVudC51cmxfdGh1bWJuYWlsIDogdW5kZWZpbmVkLFxuICAgICAgICB1cmxfZmlsZTogdHlwZW9mIGF0dGFjaG1lbnQudXJsX2ZpbGUgPT09ICdzdHJpbmcnID8gYXR0YWNobWVudC51cmxfZmlsZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgcm9sZTogYXR0YWNobWVudC5yb2xlID09PSAnYXNzaXN0YW50JyA/ICdhc3Npc3RhbnQnIDogJ3VzZXInLFxuICAgICAgfVxuICAgIH0pXG59XG5cbi8qKiBFeHRyYWUgdGFza19pZHMgZGUgbG9zIHRvb2xfYXJncyBkZSBwZW5kaW5nX2FjdGlvbnMsIGN1YnJpZW5kbyBsYXMgZm9ybWFzIGNvbXVuZXM6XG4gKiAgLSBgeyB0YXNrX2lkIH1gIG8gYHsgaWQgfWBcbiAqICAtIGB7IHRhc2tfaWRzOiBbXSB9YFxuICogIC0gYHsgdGFza3M6IFt7IHRhc2tfaWR8aWQgfSwgLi4uXSB9YFxuICogIMOadGlsIHBhcmEgdG9vbHMgZGUgZWRpdC9hc3NpZ24vZGVsZXRlIGN1YW5kbyBsYSByZXNwdWVzdGEgZGVsIExMTSBubyBpbmNsdXllIFVSTHMgL3Rhc2tzLy4uLi9kZXRhaWwuICovXG5mdW5jdGlvbiBleHRyYWN0VGFza0lkc0Zyb21QZW5kaW5nQWN0aW9uc0FyZ3MocGVuZGluZ0FjdGlvbnM6IFBlbmRpbmdBY3Rpb25bXSk6IG51bWJlcltdIHtcbiAgY29uc3QgaWRzOiBudW1iZXJbXSA9IFtdXG4gIGNvbnN0IHB1c2hJZCA9IChyYXc6IHVua25vd24pID0+IHtcbiAgICBpZiAocmF3ID09IG51bGwpIHJldHVyblxuICAgIGNvbnN0IG4gPSBwYXJzZUludChTdHJpbmcocmF3KSwgMTApXG4gICAgaWYgKCFOdW1iZXIuaXNOYU4obikpIGlkcy5wdXNoKG4pXG4gIH1cbiAgcGVuZGluZ0FjdGlvbnMuZm9yRWFjaChhY3Rpb24gPT4ge1xuICAgIGlmICghYWN0aW9uIHx8IHR5cGVvZiBhY3Rpb24gIT09ICdvYmplY3QnKSByZXR1cm5cbiAgICBjb25zdCBhcmdzID0gYWN0aW9uLnRvb2xfYXJnc1xuICAgIGlmICghKGFyZ3MgJiYgdHlwZW9mIGFyZ3MgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGFyZ3MpKSkgcmV0dXJuXG4gICAgY29uc3QgcmVjID0gYXJncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgIHB1c2hJZChyZWMudGFza19pZCA/PyByZWMuaWQpXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVjLnRhc2tfaWRzKSkge1xuICAgICAgcmVjLnRhc2tfaWRzLmZvckVhY2gocHVzaElkKVxuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZWMudGFza3MpKSB7XG4gICAgICByZWMudGFza3MuZm9yRWFjaCh0ID0+IHtcbiAgICAgICAgaWYgKHQgJiYgdHlwZW9mIHQgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHQpKSB7XG4gICAgICAgICAgY29uc3QgdHJlYyA9IHQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgICAgICBwdXNoSWQodHJlYy50YXNrX2lkID8/IHRyZWMuaWQpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9KVxuICByZXR1cm4gaWRzXG59XG5cbi8qKiB0YXNrX2lkIC8gdGFza19pZHMgZW4gcGVuZGluZ19hY3Rpb25zIGRlIGRlbGV0ZV8qIChsYSByZXNwdWVzdGEgcHVlZGUgbm8gaW5jbHVpciBVUkxzIC90YXNrcy/igKYvZGV0YWlsKS4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RUYXNrSWRzRnJvbURlbGV0ZVBlbmRpbmdBY3Rpb25zKHBlbmRpbmdBY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10pOiBudW1iZXJbXSB7XG4gIGNvbnN0IGlkczogbnVtYmVyW10gPSBbXVxuICBwZW5kaW5nQWN0aW9ucy5mb3JFYWNoKGFjdGlvbiA9PiB7XG4gICAgaWYgKCFhY3Rpb24gfHwgdHlwZW9mIGFjdGlvbiAhPT0gJ29iamVjdCcpIHJldHVyblxuICAgIGNvbnN0IGFyZ3MgPSBhY3Rpb24udG9vbF9hcmdzXG4gICAgaWYgKCEoYXJncyAmJiB0eXBlb2YgYXJncyA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoYXJncykpKSByZXR1cm5cbiAgICBjb25zdCByZWMgPSBhcmdzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgaWYgKGFjdGlvbi50b29sX25hbWUgPT09ICdkZWxldGVfdGFzaycpIHtcbiAgICAgIGNvbnN0IHJhdyA9IHJlYy50YXNrX2lkID8/IHJlYy5pZFxuICAgICAgaWYgKHJhdyAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IG4gPSBwYXJzZUludChTdHJpbmcocmF3KSwgMTApXG4gICAgICAgIGlmICghTnVtYmVyLmlzTmFOKG4pKSBpZHMucHVzaChuKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoYWN0aW9uLnRvb2xfbmFtZSA9PT0gJ2RlbGV0ZV90YXNrc19iYXRjaCcpIHtcbiAgICAgIGNvbnN0IGxpc3QgPSByZWMudGFza19pZHNcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGxpc3QpKSB7XG4gICAgICAgIGxpc3QuZm9yRWFjaCh0aWQgPT4ge1xuICAgICAgICAgIGNvbnN0IG4gPSBwYXJzZUludChTdHJpbmcodGlkKSwgMTApXG4gICAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4obikpIGlkcy5wdXNoKG4pXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9KVxuICByZXR1cm4gaWRzXG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RBZ2VudElkRnJvbUVkaXRBZ2VudFBlbmRpbmdBY3Rpb25zKHBlbmRpbmdBY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10pOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgZWRpdEFjdGlvbiA9IHBlbmRpbmdBY3Rpb25zLmZpbmQoYSA9PiAoYS50b29sX25hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICdlZGl0X2FnZW50JylcbiAgaWYgKFxuICAgICFlZGl0QWN0aW9uIHx8XG4gICAgIWVkaXRBY3Rpb24udG9vbF9hcmdzIHx8XG4gICAgdHlwZW9mIGVkaXRBY3Rpb24udG9vbF9hcmdzICE9PSAnb2JqZWN0JyB8fFxuICAgIEFycmF5LmlzQXJyYXkoZWRpdEFjdGlvbi50b29sX2FyZ3MpXG4gICkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgcmVjID0gZWRpdEFjdGlvbi50b29sX2FyZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgY29uc3QgcmF3ID0gcmVjLmFnZW50X2lkID8/IHJlYy5hZ2VudElkXG4gIHJldHVybiByYXcgIT0gbnVsbCA/IFN0cmluZyhyYXcpIDogbnVsbFxufVxuXG5mdW5jdGlvbiBleHRyYWN0QWdlbnRJZEZyb21QZW5kaW5nQWN0aW9uc0J5VG9vbE5hbWUocGVuZGluZ0FjdGlvbnM6IFBlbmRpbmdBY3Rpb25bXSwgdG9vbE5hbWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCBhY3Rpb24gPSBwZW5kaW5nQWN0aW9ucy5maW5kKGEgPT4gKGEudG9vbF9uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSB0b29sTmFtZS50b0xvd2VyQ2FzZSgpKVxuICBpZiAoIWFjdGlvbiB8fCAhYWN0aW9uLnRvb2xfYXJncyB8fCB0eXBlb2YgYWN0aW9uLnRvb2xfYXJncyAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShhY3Rpb24udG9vbF9hcmdzKSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgcmVjID0gYWN0aW9uLnRvb2xfYXJncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICBjb25zdCByYXcgPSByZWMuYWdlbnRfaWQgPz8gcmVjLmFnZW50SWQgPz8gcmVjLmlkXG4gIHJldHVybiByYXcgIT0gbnVsbCA/IFN0cmluZyhyYXcpIDogbnVsbFxufVxuXG4vKiogw5psdGltbyByZWN1cnNvIHNpIG5vIGhheSBsaW5rcyBuaSB0b29sX2FyZ3MgcGFyc2VhYmxlcyAocC4gZWouIFwiSUQgKio3NTk3MTA2KipcIikuICovXG5mdW5jdGlvbiBleHRyYWN0VGFza0lkc0Zyb21Bc3Npc3RhbnREZWxldGlvblRleHQodGV4dDogc3RyaW5nKTogbnVtYmVyW10ge1xuICBjb25zdCBsYWJlbGVkID0gdGV4dC5tYXRjaCgvXFxiSURcXHMqXFwqXFwqKFxcZCspXFwqXFwqL2kpXG4gIGlmIChsYWJlbGVkKSB7XG4gICAgY29uc3QgbiA9IHBhcnNlSW50KGxhYmVsZWRbMV0sIDEwKVxuICAgIHJldHVybiBOdW1iZXIuaXNOYU4obikgPyBbXSA6IFtuXVxuICB9XG4gIGNvbnN0IGJvbGQgPSB0ZXh0Lm1hdGNoKC9cXCpcXCooXFxkezUsfSlcXCpcXCovKVxuICBpZiAoYm9sZCkge1xuICAgIGNvbnN0IG4gPSBwYXJzZUludChib2xkWzFdLCAxMClcbiAgICByZXR1cm4gTnVtYmVyLmlzTmFOKG4pID8gW10gOiBbbl1cbiAgfVxuICByZXR1cm4gW11cbn1cblxuY29uc3QgdXNlU3RhYmxlQ2FsbGJhY2tzID0gKGF1dGhVc2VyOiBDT1JVc2VyKSA9PiB7XG4gIGNvbnN0IGN1cnJlbnRVc2VyID0gdXNlUmVmPENoYXRNZXNzYWdlVXNlcj4oe1xuICAgIGlkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgIG5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICBhdmF0YXI6IGF1dGhVc2VyLnBpY3R1cmUsXG4gIH0pXG5cbiAgaWYgKFxuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQuaWQgIT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgfHxcbiAgICBjdXJyZW50VXNlci5jdXJyZW50Lm5hbWUgIT09IGF1dGhVc2VyLmZpcnN0TmFtZSB8fFxuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQuYXZhdGFyICE9PSBhdXRoVXNlci5waWN0dXJlXG4gICkge1xuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQgPSB7XG4gICAgICBpZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICAgIG5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICAgIGF2YXRhcjogYXV0aFVzZXIucGljdHVyZSxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBjdXJyZW50VXNlcjogY3VycmVudFVzZXIuY3VycmVudCxcbiAgfVxufVxuXG5jb25zdCBwYXJzZVNTRUxpbmUgPSAobGluZTogc3RyaW5nKTogeyBldmVudFR5cGU6IHN0cmluZzsgZGF0YTogdW5rbm93biB9IHwgbnVsbCA9PiB7XG4gIGlmICghbGluZS50cmltKCkpIHJldHVybiBudWxsXG5cbiAgY29uc3QgW2V2ZW50TGluZSwgZGF0YUxpbmVdID0gbGluZS5zcGxpdCgnXFxuJylcbiAgaWYgKCFldmVudExpbmUgfHwgIWRhdGFMaW5lKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IGV2ZW50VHlwZSA9IGV2ZW50TGluZS5yZXBsYWNlKCdldmVudDogJywgJycpLnRyaW0oKVxuICBjb25zdCBkYXRhU3RyID0gZGF0YUxpbmUucmVwbGFjZSgnZGF0YTogJywgJycpLnRyaW0oKVxuXG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoZGF0YVN0cilcbiAgICByZXR1cm4geyBldmVudFR5cGUsIGRhdGEgfVxuICB9IGNhdGNoIChwYXJzZUVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcignRXJyb3IgcGFyc2luZyBTU0UgZGF0YTonLCBwYXJzZUVycm9yLCBkYXRhU3RyKVxuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuY29uc3QgcHJvY2Vzc1NTRVN0cmVhbSA9IGFzeW5jIChcbiAgcmVzcG9uc2U6IFJlc3BvbnNlLFxuICB0aHJlYWRJZDogc3RyaW5nLFxuICBjYWxsYmFja3M6IHtcbiAgICBvblRoaW5raW5nOiAoKSA9PiB2b2lkXG4gICAgb25Ub2tlbjogKGNvbnRlbnQ6IHN0cmluZykgPT4gdm9pZFxuICAgIG9uTm9kZTogKG1lc3NhZ2U6IHN0cmluZywgdGhyZWFkSWQ6IHN0cmluZykgPT4gdm9pZFxuICAgIG9uQ29tcGxldGU6IChcbiAgICAgIGZpbmFsQ29udGVudDogc3RyaW5nLFxuICAgICAgc291cmNlczogYW55LFxuICAgICAgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcsXG4gICAgICBjdXJyZW50VGhyZWFkSWQ6IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzPzogYW55W10gfCBudWxsLFxuICAgICAgc3VnZ2VzdGlvbnM/OiBzdHJpbmdbXSB8IG51bGwsXG4gICAgICBhZ2VudElkPzogc3RyaW5nIHwgbnVsbFxuICAgICkgPT4gdm9pZFxuICAgIG9uRXJyb3I6IChlcnJvcjogYW55LCB0aHJlYWRJZDogc3RyaW5nKSA9PiB2b2lkXG4gICAgb25BcHByb3ZhbFJlcXVpcmVkPzogKGFwcHJvdmFsOiBhbnksIGFjY3VtdWxhdGVkQ29udGVudDogc3RyaW5nLCBjdXJyZW50VGhyZWFkSWQ6IHN0cmluZykgPT4gdm9pZFxuICB9XG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgcmVhZGVyID0gcmVzcG9uc2UuYm9keT8uZ2V0UmVhZGVyKClcbiAgaWYgKCFyZWFkZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHJlYWRlciBhdmFpbGFibGUnKVxuICB9XG5cbiAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpXG4gIGxldCBidWZmZXIgPSAnJ1xuICBsZXQgYWNjdW11bGF0ZWRDb250ZW50ID0gJydcbiAgbGV0IGlzU3RyZWFtQ29tcGxldGUgPSBmYWxzZVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUxpbmUobGluZTogc3RyaW5nKSB7XG4gICAgY29uc3QgcGFyc2VkID0gcGFyc2VTU0VMaW5lKGxpbmUpXG4gICAgaWYgKCFwYXJzZWQpIHJldHVyblxuXG4gICAgY29uc3QgeyBldmVudFR5cGUsIGRhdGEgfSA9IHBhcnNlZFxuICAgIGNvbnN0IGV2ZW50RGF0YSA9IGRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cblxuICAgIGlmIChldmVudFR5cGUgPT09ICd0aGlua2luZycpIHtcbiAgICAgIGNhbGxiYWNrcy5vblRoaW5raW5nKClcbiAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gJ3Rva2VuJykge1xuICAgICAgY29uc3QgY29udGVudCA9IHR5cGVvZiBldmVudERhdGEuY29udGVudCA9PT0gJ3N0cmluZycgPyBldmVudERhdGEuY29udGVudCA6ICcnXG4gICAgICBhY2N1bXVsYXRlZENvbnRlbnQgPSBtZXJnZVN0cmVhbUNodW5rKGFjY3VtdWxhdGVkQ29udGVudCwgY29udGVudClcbiAgICAgIGNhbGxiYWNrcy5vblRva2VuKGFjY3VtdWxhdGVkQ29udGVudClcbiAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gJ2NvbnRlbnQnKSB7XG4gICAgICBjb25zdCBjb250ZW50ID0gdHlwZW9mIGV2ZW50RGF0YS5jb250ZW50ID09PSAnc3RyaW5nJyA/IGV2ZW50RGF0YS5jb250ZW50IDogJydcbiAgICAgIGFjY3VtdWxhdGVkQ29udGVudCA9IG1lcmdlU3RyZWFtQ2h1bmsoYWNjdW11bGF0ZWRDb250ZW50LCBjb250ZW50KVxuICAgICAgY2FsbGJhY2tzLm9uVG9rZW4oYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgaWYgKGlzQ29tcGxldGVMaWtlU3NlUGF5bG9hZChldmVudERhdGEpKSB7XG4gICAgICAgIGNvbnN0IGZpbmFsQ29udGVudCA9IGNvbnRlbnQgfHwgYWNjdW11bGF0ZWRDb250ZW50XG4gICAgICAgIGNvbnN0IHNvdXJjZXMgPSBldmVudERhdGEuc291cmNlcyB8fCBudWxsXG4gICAgICAgIGNvbnN0IG1lbW9yeVNlc3Npb25JZCA9IChldmVudERhdGEubWVtb3J5X3Nlc3Npb25faWQgYXMgc3RyaW5nKSB8fCAnJ1xuICAgICAgICBjb25zdCBhdHRhY2htZW50cyA9IEFycmF5LmlzQXJyYXkoZXZlbnREYXRhLmF0dGFjaG1lbnRzKSA/IGV2ZW50RGF0YS5hdHRhY2htZW50cyA6IG51bGxcbiAgICAgICAgY29uc3Qgc3VnZ2VzdGlvbnMgPSBBcnJheS5pc0FycmF5KGV2ZW50RGF0YS5zdWdnZXN0X3JlcGx5KVxuICAgICAgICAgID8gKGV2ZW50RGF0YS5zdWdnZXN0X3JlcGx5IGFzIHN0cmluZ1tdKVxuICAgICAgICAgIDogQXJyYXkuaXNBcnJheShldmVudERhdGEuc3VnZ2VzdGlvbnMpXG4gICAgICAgICAgICA/IChldmVudERhdGEuc3VnZ2VzdGlvbnMgYXMgc3RyaW5nW10pXG4gICAgICAgICAgICA6IG51bGxcbiAgICAgICAgY29uc3QgYWdlbnRJZFJhdyA9IGV2ZW50RGF0YS5hZ2VudF9pZCA/PyBldmVudERhdGEuYWdlbnRJZFxuICAgICAgICBjb25zdCBjb21wbGV0ZWRBZ2VudElkID1cbiAgICAgICAgICBhZ2VudElkUmF3ICE9IG51bGwgJiYgU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSAhPT0gJycgPyBTdHJpbmcoYWdlbnRJZFJhdykudHJpbSgpIDogbnVsbFxuICAgICAgICBjYWxsYmFja3Mub25Db21wbGV0ZShcbiAgICAgICAgICBmaW5hbENvbnRlbnQsXG4gICAgICAgICAgc291cmNlcyxcbiAgICAgICAgICBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICAgICAgdGhyZWFkSWQsXG4gICAgICAgICAgYXR0YWNobWVudHMsXG4gICAgICAgICAgc3VnZ2VzdGlvbnMsXG4gICAgICAgICAgY29tcGxldGVkQWdlbnRJZFxuICAgICAgICApXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICdub2RlJykge1xuICAgICAgaWYgKGV2ZW50RGF0YS5tZXNzYWdlICYmIHR5cGVvZiBldmVudERhdGEubWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY2FsbGJhY2tzLm9uTm9kZShldmVudERhdGEubWVzc2FnZSwgdGhyZWFkSWQpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICdjb21wbGV0ZScpIHtcbiAgICAgIGNvbnN0IGZpbmFsQ29udGVudCA9IChldmVudERhdGEuY29udGVudCBhcyBzdHJpbmcpIHx8IGFjY3VtdWxhdGVkQ29udGVudFxuICAgICAgY29uc3Qgc291cmNlcyA9IChldmVudERhdGEuc291cmNlcyBhcyB1bmtub3duKSB8fCBudWxsXG4gICAgICBjb25zdCBtZW1vcnlTZXNzaW9uSWQgPSAoZXZlbnREYXRhLm1lbW9yeV9zZXNzaW9uX2lkIGFzIHN0cmluZykgfHwgJydcbiAgICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gQXJyYXkuaXNBcnJheShldmVudERhdGEuYXR0YWNobWVudHMpID8gZXZlbnREYXRhLmF0dGFjaG1lbnRzIDogbnVsbFxuICAgICAgY29uc3Qgc3VnZ2VzdGlvbnMgPSBBcnJheS5pc0FycmF5KGV2ZW50RGF0YS5zdWdnZXN0X3JlcGx5KVxuICAgICAgICA/IChldmVudERhdGEuc3VnZ2VzdF9yZXBseSBhcyBzdHJpbmdbXSlcbiAgICAgICAgOiBBcnJheS5pc0FycmF5KGV2ZW50RGF0YS5zdWdnZXN0aW9ucylcbiAgICAgICAgICA/IChldmVudERhdGEuc3VnZ2VzdGlvbnMgYXMgc3RyaW5nW10pXG4gICAgICAgICAgOiBudWxsXG4gICAgICBjb25zdCBhZ2VudElkUmF3ID0gZXZlbnREYXRhLmFnZW50X2lkID8/IGV2ZW50RGF0YS5hZ2VudElkXG4gICAgICBjb25zdCBjb21wbGV0ZWRBZ2VudElkID0gYWdlbnRJZFJhdyAhPSBudWxsICYmIFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgIT09ICcnID8gU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSA6IG51bGxcbiAgICAgIGNhbGxiYWNrcy5vbkNvbXBsZXRlKGZpbmFsQ29udGVudCwgc291cmNlcywgbWVtb3J5U2Vzc2lvbklkLCB0aHJlYWRJZCwgYXR0YWNobWVudHMsIHN1Z2dlc3Rpb25zLCBjb21wbGV0ZWRBZ2VudElkKVxuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnYXBwcm92YWxfcmVxdWlyZWQnKSB7XG4gICAgICBjYWxsYmFja3Mub25BcHByb3ZhbFJlcXVpcmVkPy4oZXZlbnREYXRhLCBhY2N1bXVsYXRlZENvbnRlbnQsIHRocmVhZElkKVxuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnZXJyb3InKSB7XG4gICAgICBjYWxsYmFja3Mub25FcnJvcihldmVudERhdGEuZXJyb3IsIHRocmVhZElkKVxuICAgIH1cbiAgfVxuXG4gIHdoaWxlICghaXNTdHJlYW1Db21wbGV0ZSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKVxuICAgIGlmIChkb25lKSB7XG4gICAgICBpc1N0cmVhbUNvbXBsZXRlID0gdHJ1ZVxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBidWZmZXIgKz0gZGVjb2Rlci5kZWNvZGUodmFsdWUsIHsgc3RyZWFtOiB0cnVlIH0pXG4gICAgY29uc3QgbGluZXMgPSBidWZmZXIuc3BsaXQoJ1xcblxcbicpXG4gICAgYnVmZmVyID0gbGluZXMucG9wKCkgfHwgJydcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGhhbmRsZUxpbmUobGluZXNbaV0pXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCB1c2VDaGF0TWFuYWdlciA9ICh7XG4gIGNoYXRJZDogaW5pdGlhbENoYXRJZCxcbiAgdXNlckluaXRpYWxNZXNzYWdlLFxuICBvbkVycm9yLFxuICBhZ2VudHMgPSBbXSxcbn06IFVzZUNoYXRNYW5hZ2VyUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgYXV0aFVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3Qge1xuICAgIHByb2plY3QsXG4gICAgc2V0UHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgc2V0Q2xpZW50LFxuICAgIHRhc2ssXG4gICAgc2V0VGFzayxcbiAgICBhZ2VudCxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgY2hpcHNQcm9qZWN0LFxuICAgIHNldENoaXBzUHJvamVjdCxcbiAgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCBldmVudCA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyBmZXRjaFByb2plY3RzIH0gPSB1c2VQcm9qZWN0cygpXG4gIGNvbnN0IHsgY3VycmVudFVzZXIgfSA9IHVzZVN0YWJsZUNhbGxiYWNrcyhhdXRoVXNlcilcbiAgY29uc3QgeyBnZXRUYWJUYXNrRGVmYXVsdCB9ID0gdXNlVGFiVGFza0RlZmF1bHQoKVxuXG4gIC8vIERFQlVHOiByYXN0cmVhciBjdcOhbmRvIGNhbWJpYSBlbCBjb250ZXh0byBnbG9iYWwgcGFyYSBjb3JyZWxhY2lvbmFyIGNvbiBsb3MgZW52w61vcyBhbCBvcmNoZXN0cmF0b3JcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zb2xlLmluZm8oJ1t1c2VDaGF0TWFuYWdlcl0gY29udGV4dCBDSEFOR0VEOicsIHtcbiAgICAgIGNoaXBzUHJvamVjdElkOiBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCA/PyBudWxsLFxuICAgICAgY2hpcHNQcm9qZWN0TmFtZTogY2hpcHNQcm9qZWN0Py5wcm9qZWN0TmFtZSA/PyBudWxsLFxuICAgICAgcHJvamVjdFByb3BJZDogcHJvamVjdD8uaWQgPz8gbnVsbCxcbiAgICAgIGNsaWVudElkOiBjbGllbnQ/LmlkID8/IG51bGwsXG4gICAgICB0YXNrSWQ6IHRhc2s/LmlkID8/IG51bGwsXG4gICAgfSlcbiAgfSwgW2NoaXBzUHJvamVjdD8ucHJvamVjdElkLCBwcm9qZWN0Py5pZCwgY2xpZW50Py5pZCwgdGFzaz8uaWRdKVxuICBjb25zdCBjdXJyZW50TWVzc2FnZUlkID0gdXNlUmVmKHV1aWR2NCgpKVxuICBjb25zdCBjdXJyZW50VXNlclF1ZXN0aW9uID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGN1cnJlbnRDaGF0SWQgPSB1c2VSZWYoaW5pdGlhbENoYXRJZCB8fCB1dWlkdjQoKSlcbiAgY29uc3QgcmVwb3J0ZWRFdmVudCA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgbWVzc2FnZXNSZWYgPSB1c2VSZWY8Q2hhdE1lc3NhZ2VbXT4oW10pXG4gIC8qKlxuICAgKiBHdWFyZGEgaW5mbyBkZWwgw7psdGltbyBhcHByb3ZhbCBtYW51YWwgKGN1YW5kbyBlbCB1c3VhcmlvIHRpcGVhIFwic2lcIi9cIm5vXCIgZW4gbHVnYXJcbiAgICogZGUgY2xpY2tlYXIgZWwgYm90w7NuKS4gRW4gbWFudWFsIGFwcHJvdmFsLCBgaGFuZGxlQXBwcm92YWxSZXF1aXJlZGAgcmV0b3JuYSBlYXJseVxuICAgKiBzaW4gYWdyZWdhciB1biBtZW5zYWplIGNvbiBgYXBwcm92YWxgLCBhc8OtIHF1ZSBsYSBsw7NnaWNhIGRlIHJlZmV0Y2ggZW4gYG9uU3RyZWFtRmluaXNoYFxuICAgKiBubyBsbyBkZXRlY3RhIHbDrWEgYHByZXZpb3VzTWVzc2FnZS5hcHByb3ZhbGAuIExvIGd1YXJkYW1vcyBhY8OhIHBhcmEgY29uc3VtaXJsbyBkZXNwdcOpcy5cbiAgICovXG4gIGNvbnN0IGxhc3RNYW51YWxBcHByb3ZhbFJlZiA9IHVzZVJlZjx7XG4gICAgdG9vbE5hbWU6IHN0cmluZ1xuICAgIHRvb2xBcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGxcbiAgfSB8IG51bGw+KG51bGwpXG4gIC8qKiBDb250ZXh0byBkZWwgbWVuc2FqZSBkZSBhcHJvYmFjacOzbiBwcmV2aW8gYWwgZWplY3V0YXIgY29udGludWUtdGhyZWFkLiAqL1xuICBjb25zdCBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZiA9IHVzZVJlZjxIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzUHJvY2Vzc2luZ1JlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgZmlyc3RUaW1lUmVmID0gdXNlUmVmKGZhbHNlKVxuICAvKiogSWQgZGVsIHBsYWNlaG9sZGVyIGRlbCBtZW5zYWplIGVuIHN0cmVhbWluZyBhY3Rpdm8gKHNpIGhheSkuICovXG4gIGNvbnN0IHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgLyoqXG4gICAqIENoYXQgYWwgcXVlIHBlcnRlbmVjZSBlbCBzdHJlYW0gYWN0dWFsbWVudGUgYWN0aXZvLiBTaSBjYW1iaWEgZWwgY2hhdFxuICAgKiBtaWVudHJhcyB1biBzdHJlYW0gZXN0w6EgZW4gdnVlbG8sIGRlc2NhcnRhbW9zIGxvcyB0b2tlbnMgcmVzaWR1YWxlc1xuICAgKiBxdWUgcHVlZGFuIGxsZWdhciBhbnRlcyBkZSBxdWUgZWwgYWJvcnQgc2UgY29tcGxldGUuXG4gICAqL1xuICBjb25zdCBhY3RpdmVTdHJlYW1DaGF0SWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgLyoqIFNldHRlciBpbmRpcmVjdG8gcGFyYSBhYm9ydGFyIGVsIHN0cmVhbSBhbnRlcyBkZSBxdWUgZWwgaG9vayBkZVxuICAgKiBvcnF1ZXN0YWRvciBlc3TDqSBpbmljaWFsaXphZG8gKHNlIGxpbmtlYSBtw6FzIGFiYWpvKS4gKi9cbiAgY29uc3QgYWJvcnRTdHJlYW1TaWxlbnRseVJlZiA9IHVzZVJlZjwoKSA9PiB2b2lkPigoKSA9PiB1bmRlZmluZWQpXG4gIGNvbnN0IGNsZWFyU3RyZWFtVWlSZWYgPSB1c2VSZWY8KCkgPT4gdm9pZD4oKCkgPT4gdW5kZWZpbmVkKVxuICBjb25zdCBbYWN0aXZlTG9hZGluZ3MsIHNldEFjdGl2ZUxvYWRpbmdzXSA9IHVzZVN0YXRlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KHt9KVxuXG4gIGNvbnN0IGlzV2ViU2VhcmNoQWN0aXZlUmVmID0gdXNlUmVmKGlzV2ViU2VhcmNoQWN0aXZlKVxuICBjb25zdCBpc0RlZXBTZWFyY2hBY3RpdmVSZWYgPSB1c2VSZWYoaXNEZWVwU2VhcmNoQWN0aXZlKVxuICAvKiogRXZpdGEgY2xvc3VyZXMgb2Jzb2xldGFzIGN1YW5kbyBlbCBmb290ZXIgY29uc2VydmEgc2VuZE1lc3NhZ2UgZW50cmUgcmVuZGVycy4gKi9cbiAgY29uc3QgY29udGV4dFJlZiA9IHVzZVJlZih7IGNoaXBzUHJvamVjdCwgcHJvamVjdCwgY2xpZW50LCB0YXNrIH0pXG4gIGNvbnRleHRSZWYuY3VycmVudCA9IHsgY2hpcHNQcm9qZWN0LCBwcm9qZWN0LCBjbGllbnQsIHRhc2sgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCA9IGlzV2ViU2VhcmNoQWN0aXZlXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQgPSBpc0RlZXBTZWFyY2hBY3RpdmVcbiAgfSwgW2lzV2ViU2VhcmNoQWN0aXZlLCBpc0RlZXBTZWFyY2hBY3RpdmVdKVxuXG4gIGNvbnN0IHsgbG9hZGluZ01lc3NhZ2VzLCBtZXNzYWdlcywgaXNMb2FkaW5nTW9yZU1lc3NhZ2VzLCBsb2FkTWVzc2FnZXMsIGFkZE1lc3NhZ2UsIHJlbW92ZU1lc3NhZ2UsIGhhbmRsZVNjcm9sbCB9ID1cbiAgICB1c2VDaGF0TWVzc2FnZXMoe1xuICAgICAgY2hhdElkOiBpbml0aWFsQ2hhdElkIHx8IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgIGN1cnJlbnRVc2VyLFxuICAgICAgdXNlckluaXRpYWxNZXNzYWdlLFxuICAgICAgb25FcnJvcixcbiAgICAgIGFnZW50cyxcbiAgICB9KVxuXG4gIG1lc3NhZ2VzUmVmLmN1cnJlbnQgPSBtZXNzYWdlc1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY3VzdG9tRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtbG9hZGluZy1tZXNzYWdlcy1jaGFuZ2VkJywge1xuICAgICAgZGV0YWlsOiB7IGxvYWRpbmdNZXNzYWdlcyB9LFxuICAgIH0pXG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChjdXN0b21FdmVudClcbiAgfSwgW2xvYWRpbmdNZXNzYWdlc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaW5pdGlhbENoYXRJZCAmJiBpbml0aWFsQ2hhdElkICE9PSBjdXJyZW50Q2hhdElkLmN1cnJlbnQpIHtcbiAgICAgIC8vIFNpIGhheSB1biBzdHJlYW0gZW4gY3Vyc28sIGFib3J0YXJsbyBzaWxlbmNpb3NhbWVudGUgcGFyYSBxdWUgbG9zXG4gICAgICAvLyB0b2tlbnMgcmVzaWR1YWxlcyBubyBzZSBlc2NyaWJhbiBlbiBlbCBjaGF0IG51ZXZvLlxuICAgICAgYWJvcnRTdHJlYW1TaWxlbnRseVJlZi5jdXJyZW50KClcblxuICAgICAgLy8gTGltcGlhciBjb250ZXh0byBnbG9iYWwgYWwgY2FtYmlhciBkZSBjb252ZXJzYWNpw7NuXG4gICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgICBzZXRUYXNrKG51bGwpXG5cbiAgICAgIGN1cnJlbnRDaGF0SWQuY3VycmVudCA9IGluaXRpYWxDaGF0SWRcbiAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBudWxsXG4gICAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSBmYWxzZVxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBzdHJlYW1pbmdTdG9yZS5jbGVhcigpXG5cbiAgICAgIGxvYWRNZXNzYWdlcygpXG4gICAgfVxuICB9LCBbaW5pdGlhbENoYXRJZCwgcHJvamVjdCwgc2V0UHJvamVjdCwgc2V0Q2xpZW50LCBzZXRDaGlwc1Byb2plY3QsIHNldFRhc2ssIGxvYWRNZXNzYWdlc10pXG5cbiAgLy8gRWwgY29udGV4dG8gZGUgcHJveWVjdG8vY2xpZW50ZSBhcGxpY2EgYSBhZ2VudGVzIGNsb25lICh0aWVuZW4gdG9vbHMpLiBMb3MgY3VzdG9tIG5vIGxvXG4gIC8vIG5lY2VzaXRhbiBwb3IgYWhvcmEsIGFzw60gcXVlIHBhcmEgZWxsb3Mgbm8gcmVzb2x2ZW1vcyBuaSBkaXNwYXJhbW9zIEdldFByb2plY3RzLlxuICBjb25zdCBpc0Nsb25lQWdlbnQgPSBhZ2VudD8udHlwZSA9PT0gJ2Nsb25lJ1xuXG4gIC8vIFNpbmNyb25pemFyIGNoaXBzUHJvamVjdCBjdWFuZG8gaGF5IG1lbnNhamVzIGNvbiBwcm9qZWN0SWQgcGVybyBjaGlwc1Byb2plY3Qgbm8gc2UgaGEgc2V0ZWFkb1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNDbG9uZUFnZW50IHx8IGNoaXBzUHJvamVjdCB8fCBsb2FkaW5nTWVzc2FnZXMpIHJldHVyblxuICAgIGNvbnN0IGxhc3RNc2dXaXRoUHJvamVjdCA9IG1lc3NhZ2VzLmZpbHRlcihtc2cgPT4gbXNnLnByb2plY3RJZCkuYXQoLTEpXG4gICAgY29uc3QgeyBwcm9qZWN0SWQsIHByb2plY3ROYW1lIH0gPSBsYXN0TXNnV2l0aFByb2plY3QgfHwge31cbiAgICBpZiAoIXByb2plY3RJZCkgcmV0dXJuXG5cbiAgICBmZXRjaFByb2plY3RzKHByb2plY3RJZCkudGhlbihwcm9qZWN0cyA9PiB7XG4gICAgICBjb25zdCBmb3VuZCA9IHByb2plY3RzPy5maW5kKHAgPT4gTnVtYmVyKHAuaWQpID09PSBOdW1iZXIocHJvamVjdElkKSlcbiAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgIHByb2plY3ROYW1lOiBmb3VuZC5uYW1lLFxuICAgICAgICAgIGNsaWVudE5hbWU6IGZvdW5kLmNsaWVudD8ubmFtZSB8fCAnJyxcbiAgICAgICAgICBwcm9qZWN0SWQ6IFN0cmluZyhmb3VuZC5pZCksXG4gICAgICAgIH0pXG4gICAgICAgIHNldFByb2plY3QoZm91bmQpXG4gICAgICB9IGVsc2UgaWYgKHByb2plY3ROYW1lKSB7XG4gICAgICAgIHNldENoaXBzUHJvamVjdCh7XG4gICAgICAgICAgcHJvamVjdE5hbWUsXG4gICAgICAgICAgY2xpZW50TmFtZTogJycsXG4gICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcocHJvamVjdElkKSxcbiAgICAgICAgfSlcbiAgICAgICAgc2V0UHJvamVjdCh7IGlkOiBOdW1iZXIocHJvamVjdElkKSwgbmFtZTogcHJvamVjdE5hbWUgfSlcbiAgICAgIH1cbiAgICB9KVxuICB9LCBbaXNDbG9uZUFnZW50LCBtZXNzYWdlcywgY2hpcHNQcm9qZWN0LCBsb2FkaW5nTWVzc2FnZXMsIGZldGNoUHJvamVjdHMsIHNldENoaXBzUHJvamVjdCwgc2V0UHJvamVjdF0pXG5cbiAgLy8gU2luY3Jvbml6YXIgY2xpZW50IGN1YW5kbyBoYXkgbWVuc2FqZXMgY29uIGNsaWVudElkIHBlcm8gY2xpZW50IG5vIHNlIGhhIHNldGVhZG9cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzQ2xvbmVBZ2VudCB8fCBjbGllbnQgfHwgbG9hZGluZ01lc3NhZ2VzKSByZXR1cm5cbiAgICBjb25zdCBsYXN0TXNnV2l0aENsaWVudCA9IG1lc3NhZ2VzLmZpbHRlcihtc2cgPT4gbXNnLmNsaWVudElkICE9IG51bGwgJiYgbXNnLmNsaWVudE5hbWUpLmF0KC0xKVxuICAgIGNvbnN0IHsgY2xpZW50SWQ6IG1zZ0NsaWVudElkLCBjbGllbnROYW1lOiBtc2dDbGllbnROYW1lIH0gPSBsYXN0TXNnV2l0aENsaWVudCB8fCB7fVxuICAgIGlmIChtc2dDbGllbnRJZCA9PSBudWxsIHx8ICFtc2dDbGllbnROYW1lKSByZXR1cm5cblxuICAgIHNldENsaWVudD8uKHsgaWQ6IE51bWJlcihtc2dDbGllbnRJZCksIG5hbWU6IG1zZ0NsaWVudE5hbWUgfSlcbiAgfSwgW2lzQ2xvbmVBZ2VudCwgbWVzc2FnZXMsIGNsaWVudCwgbG9hZGluZ01lc3NhZ2VzLCBzZXRDbGllbnRdKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbUVycm9yID0gdXNlQ2FsbGJhY2soXG4gICAgKGVycm9yTWVzc2FnZT86IHN0cmluZywgZXJyb3JSYXdNZXNzYWdlPzogc3RyaW5nKSA9PiB7XG4gICAgICBjbGVhclN0cmVhbVVpUmVmLmN1cnJlbnQoKVxuICAgICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcbiAgICAgIHN0cmVhbWluZ1N0b3JlLmNsZWFyKClcbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgcmVtb3ZlTWVzc2FnZSh0ZW1wTWVzc2FnZUlkKVxuXG4gICAgICBjb25zdCBtZXNzYWdlID1cbiAgICAgICAgZXJyb3JNZXNzYWdlID09PSBcIkFjY2VzcyBkZW5pZWQ6IFlvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoaXMgYWdlbnRcIlxuICAgICAgICAgID8gdCgnY2hhdC5lcnJvckFjY2Vzc0RlbmllZCcpXG4gICAgICAgICAgOiBlcnJvck1lc3NhZ2UgPT09ICdpbnZhbGlkX3JlcXVlc3RfZXJyb3InICYmIGVycm9yUmF3TWVzc2FnZT8uaW5jbHVkZXMoJ3Byb21wdCBpcyB0b28gbG9uZycpXG4gICAgICAgICAgICA/IHQoJ2NoYXQuZXJyb3JQcm9tcHRUb29Mb25nJywgeyB1c2VkOiBlcnJvclJhd01lc3NhZ2UubWF0Y2goLyhcXGQrKSB0b2tlbnMvKT8uWzFdID8/ICcnIH0pXG4gICAgICAgICAgICA6IHQoJ2NoYXQuZXJyb3InKVxuXG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9YCxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgaXNFcnJvcjogdHJ1ZSxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KVxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH0sXG4gICAgW2FkZE1lc3NhZ2UsIHJlbW92ZU1lc3NhZ2UsIHRdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdHJlYW1VcGRhdGUgPSB1c2VDYWxsYmFjayhcbiAgICAoY29udGVudDogc3RyaW5nLCBzb3VyY2VzOiBhbnksIG1lbW9yeVNlc3Npb25JZDogc3RyaW5nKSA9PiB7XG4gICAgICAvLyBTaSBlbCBjaGF0IGNhbWJpw7MgbWllbnRyYXMgZWwgc3RyZWFtIGVzdGFiYSBlbiB2dWVsbywgZGVzY2FydGFyIGVsXG4gICAgICAvLyB0b2tlbiByZXNpZHVhbDogbm8gZGViZSBwaW50YXJzZSBlbiBlbCBudWV2byBjaGF0LlxuICAgICAgaWYgKGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ICE9IG51bGwgJiYgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgIT09IGN1cnJlbnRDaGF0SWQuY3VycmVudCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcblxuICAgICAgLy8gUHJpbWVyYSBsbGFtYWRhIGRlIGVzdGUgc3RyZWFtOiBpbnNlcnRhbW9zIGVsIHBsYWNlaG9sZGVyIGVuIGVsXG4gICAgICAvLyBhcnJheSBkZSBgbWVzc2FnZXNgIHVuYSDDum5pY2EgdmV6LiBMYXMgbGxhbWFkYXMgc3Vic2lndWllbnRlcyB5YSBub1xuICAgICAgLy8gdG9jYW4gYG1lc3NhZ2VzYDsgZWwgdGV4dG8gdml2ZSBlbiBlbCBzdHJlYW1pbmdTdG9yZSAoZXh0ZXJubyksIHBvclxuICAgICAgLy8gbG8gcXVlIFJlYWN0IG5vIHJlLXJlbmRlcml6YSBlbCDDoXJib2wgY29tcGxldG8gZW4gY2FkYSB0b2tlbi5cbiAgICAgIGlmIChzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgIT09IHRlbXBNZXNzYWdlSWQpIHtcbiAgICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gdGVtcE1lc3NhZ2VJZFxuICAgICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IGN1cnJlbnRDaGF0SWQuY3VycmVudFxuICAgICAgICBzdHJlYW1pbmdTdG9yZS5zdGFydCh0ZW1wTWVzc2FnZUlkKVxuICAgICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgICBpZDogdGVtcE1lc3NhZ2VJZCxcbiAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgICAgc291cmNlcyxcbiAgICAgICAgICBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHN0cmVhbWluZ1N0b3JlLnNldFRleHQodGVtcE1lc3NhZ2VJZCwgY29udGVudClcbiAgICB9LFxuICAgIFthZGRNZXNzYWdlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlU3RyZWFtRmluaXNoID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKFxuICAgICAgY29udGVudDogc3RyaW5nLFxuICAgICAgc291cmNlczogYW55LFxuICAgICAgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcsXG4gICAgICByYXdBdHRhY2htZW50cz86IGFueVtdIHwgbnVsbCxcbiAgICAgIHN1Z2dlc3Rpb25zPzogc3RyaW5nW10gfCBudWxsLFxuICAgICAgY29tcGxldGVkQWdlbnRJZD86IHN0cmluZyB8IG51bGwsXG4gICAgICByZXNvbHZlZENvbnRleHQ/OiBSZXNvbHZlZENvbnRleHQgfCBudWxsXG4gICAgKSA9PiB7XG4gICAgICBjb25zdCB0ZW1wTWVzc2FnZUlkID0gYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tc3RyZWFtaW5nYFxuICAgICAgc3RyZWFtaW5nU3RvcmUuY2xlYXIoKVxuICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgcmVtb3ZlTWVzc2FnZSh0ZW1wTWVzc2FnZUlkKVxuICAgICAgY29uc3QgYXR0YWNobWVudHMgPSBub3JtYWxpemVBc3Npc3RhbnRBdHRhY2htZW50cyhyYXdBdHRhY2htZW50cylcblxuICAgICAgLy8gRGV0ZWN0YXIgdG9kYXMgbGFzIFVSTHMgZGUgdGFyZWFzICguLi4vdGFza3MvMTIzL2RldGFpbHxtZXNzYWdlfG1lc3NhZ2VzfGZpbGVzfGhpc3Rvcnl8aG91cnMpXG4gICAgICBjb25zdCB0YXNrVXJsUmVnZXggPSBuZXcgUmVnRXhwKFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4sICdnJylcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSBbLi4uY29udGVudC5tYXRjaEFsbCh0YXNrVXJsUmVnZXgpXVxuXG4gICAgICBsZXQgY29udGVudFRvQWRkID0gY29udGVudFxuICAgICAgY29uc3QgcHJldmlvdXNNZXNzYWdlID0gbWVzc2FnZXNSZWYuY3VycmVudC5maWx0ZXIobSA9PiBtLmlkICE9PSB0ZW1wTWVzc2FnZUlkKS5hdCgtMSlcbiAgICAgIGNvbnN0IGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgPSBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsICE9IG51bGxcbiAgICAgIGNvbnN0IFRBU0tfQ1JFQVRJT05fVE9PTFMgPSBbJ2NyZWF0ZV90YXNrJywgJ2NyZWF0ZV90YXNrc19iYXRjaCcsICdjbG9uZV90YXNrJ11cbiAgICAgIGNvbnN0IFRBU0tfRURJVF9UT09MUyA9IFtcbiAgICAgICAgJ2VkaXRfdGFzaycsXG4gICAgICAgICdlZGl0X3Rhc2tzX2JhdGNoJyxcbiAgICAgICAgJ3Rhc2tfYXNzaWduJyxcbiAgICAgICAgJ3Rhc2tfdW5hc3NpZ24nLFxuICAgICAgICAndXBkYXRlX3Rhc2tfdHlwZScsXG4gICAgICAgICd1cGRhdGVfZXN0aW1hdGVkX2hvdXJzJyxcbiAgICAgICAgJ2Fzc2lnbl90YXNrX2xhYmVsJyxcbiAgICAgIF1cbiAgICAgIGNvbnN0IFRBU0tfREVMRVRFX1RPT0xTID0gWydkZWxldGVfdGFzaycsICdkZWxldGVfdGFza3NfYmF0Y2gnXVxuICAgICAgY29uc3QgcGVuZGluZ0FjdGlvbnMgPSBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsPy5wZW5kaW5nX2FjdGlvbnMgfHwgW11cbiAgICAgIGNvbnN0IHdhc1Rhc2tDcmVhdGlvbiA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IFRBU0tfQ1JFQVRJT05fVE9PTFMuaW5jbHVkZXMoYWN0aW9uLnRvb2xfbmFtZSkpXG4gICAgICBjb25zdCB3YXNUYXNrRWRpdCA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiYgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IFRBU0tfRURJVF9UT09MUy5pbmNsdWRlcyhhY3Rpb24udG9vbF9uYW1lKSlcbiAgICAgIGNvbnN0IHdhc1Rhc2tEZWxldGUgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiBUQVNLX0RFTEVURV9UT09MUy5pbmNsdWRlcyhhY3Rpb24udG9vbF9uYW1lKSlcbiAgICAgIGNvbnN0IHdhc0NyZWF0ZUFnZW50QXBwcm92ZWQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHByZXZpb3VzTWVzc2FnZT8uYXBwcm92YWxTdGF0dXMgPT09ICdhcHByb3ZlZCcgJiZcbiAgICAgICAgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IGFjdGlvbi50b29sX25hbWUgPT09ICdjcmVhdGVfYWdlbnQnKVxuICAgICAgY29uc3Qgd2FzQ29uZmlndXJlQWdlbnRBY2Nlc3NBcHByb3ZlZCA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbFN0YXR1cyA9PT0gJ2FwcHJvdmVkJyAmJlxuICAgICAgICBwZW5kaW5nQWN0aW9ucy5zb21lKChhY3Rpb246IGFueSkgPT4gKGFjdGlvbi50b29sX25hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICdjb25maWd1cmVfYWdlbnRfYWNjZXNzJylcbiAgICAgIGxldCBjcmVhdGVBZ2VudEZvbGxvd1VwOiB7IGFnZW50SWQ6IHN0cmluZyB9IHwgdW5kZWZpbmVkXG4gICAgICBpZiAod2FzQ3JlYXRlQWdlbnRBcHByb3ZlZCAmJiB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyAmJiBjb21wbGV0ZWRBZ2VudElkPy50cmltKCkpIHtcbiAgICAgICAgY3JlYXRlQWdlbnRGb2xsb3dVcCA9IHsgYWdlbnRJZDogY29tcGxldGVkQWdlbnRJZC50cmltKCkgfVxuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgd2FzQ29uZmlndXJlQWdlbnRBY2Nlc3NBcHByb3ZlZCAmJlxuICAgICAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyAmJlxuICAgICAgICAoY29tcGxldGVkQWdlbnRJZD8udHJpbSgpIHx8XG4gICAgICAgICAgZXh0cmFjdEFnZW50SWRGcm9tUGVuZGluZ0FjdGlvbnNCeVRvb2xOYW1lKHBlbmRpbmdBY3Rpb25zLCAnY29uZmlndXJlX2FnZW50X2FjY2VzcycpKVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ3VyZWRBZ2VudElkID1cbiAgICAgICAgICBjb21wbGV0ZWRBZ2VudElkPy50cmltKCkgfHxcbiAgICAgICAgICBleHRyYWN0QWdlbnRJZEZyb21QZW5kaW5nQWN0aW9uc0J5VG9vbE5hbWUocGVuZGluZ0FjdGlvbnMsICdjb25maWd1cmVfYWdlbnRfYWNjZXNzJylcbiAgICAgICAgY3JlYXRlQWdlbnRGb2xsb3dVcCA9IHtcbiAgICAgICAgICBhZ2VudElkOiBjb25maWd1cmVkQWdlbnRJZCBhcyBzdHJpbmcsXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHdhc0NyZWF0ZUFnZW50QXBwcm92ZWQpIHtcbiAgICAgICAgZXZlbnQoRVZFTlRTLmFpQ2hhdEhpdGxPcHRpb24sIHtcbiAgICAgICAgICBhZ2VudF90eXBlOiBnZXRIaXRsQW5hbHl0aWNzQWdlbnRUeXBlKGFnZW50KSxcbiAgICAgICAgICBhY3Rpb25fdHlwZTogYnVpbGRIaXRsQWN0aW9uVHlwZUxpc3QocGVuZGluZ0FjdGlvbnMpLFxuICAgICAgICAgIGRlY2lzaW9uOiAnYWNjZXB0JyxcbiAgICAgICAgICBvcHRpb246ICdjcmVhdGVfYWdlbnQnLFxuICAgICAgICAgIC4uLihjb21wbGV0ZWRBZ2VudElkPy50cmltKCkgPyB7IGNyZWF0ZWRfYWdlbnRfaWQ6IGNvbXBsZXRlZEFnZW50SWQudHJpbSgpIH0gOiB7fSksXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHdhc0VkaXRBZ2VudEFwcHJvdmVkID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsU3RhdHVzID09PSAnYXBwcm92ZWQnICYmXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiAoYWN0aW9uLnRvb2xfbmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ2VkaXRfYWdlbnQnKVxuXG4gICAgICBsZXQgZWRpdEFnZW50Rm9sbG93VXA6IHsgYWdlbnRJZDogc3RyaW5nIH0gfCB1bmRlZmluZWRcbiAgICAgIGlmICh3YXNFZGl0QWdlbnRBcHByb3ZlZCkge1xuICAgICAgICBjb25zdCBmcm9tU3RyZWFtID0gY29tcGxldGVkQWdlbnRJZD8udHJpbSgpXG4gICAgICAgIGNvbnN0IGZyb21BcmdzID0gZXh0cmFjdEFnZW50SWRGcm9tRWRpdEFnZW50UGVuZGluZ0FjdGlvbnMocGVuZGluZ0FjdGlvbnMpXG4gICAgICAgIGNvbnN0IHJlc29sdmVkQWdlbnRJZCA9IGZyb21TdHJlYW0gfHwgZnJvbUFyZ3NcbiAgICAgICAgaWYgKHJlc29sdmVkQWdlbnRJZCkge1xuICAgICAgICAgIGVkaXRBZ2VudEZvbGxvd1VwID0geyBhZ2VudElkOiByZXNvbHZlZEFnZW50SWQgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRhc2tJZHNGcm9tVXJscyA9IG1hdGNoZXMubWFwKG1hdGNoID0+IHBhcnNlSW50KG1hdGNoWzFdLCAxMCkpXG4gICAgICBjb25zdCB0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsID0gZXh0cmFjdFRhc2tJZHNGcm9tRGVsZXRlUGVuZGluZ0FjdGlvbnMocGVuZGluZ0FjdGlvbnMpXG4gICAgICBjb25zdCB0YXNrSWRzRnJvbURlbGV0aW9uVGV4dCA9XG4gICAgICAgIHdhc1Rhc2tEZWxldGUgJiYgdGFza0lkc0Zyb21VcmxzLmxlbmd0aCA9PT0gMCAmJiB0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsLmxlbmd0aCA9PT0gMFxuICAgICAgICAgID8gZXh0cmFjdFRhc2tJZHNGcm9tQXNzaXN0YW50RGVsZXRpb25UZXh0KGNvbnRlbnQpXG4gICAgICAgICAgOiBbXVxuICAgICAgY29uc3QgdGFza0lkc0ZvckRhc2hib2FyZCA9XG4gICAgICAgIHRhc2tJZHNGcm9tVXJscy5sZW5ndGggPiAwXG4gICAgICAgICAgPyB0YXNrSWRzRnJvbVVybHNcbiAgICAgICAgICA6IHRhc2tJZHNGcm9tRGVsZXRlQXBwcm92YWwubGVuZ3RoID4gMFxuICAgICAgICAgICAgPyB0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsXG4gICAgICAgICAgICA6IHRhc2tJZHNGcm9tRGVsZXRpb25UZXh0XG5cbiAgICAgIGNvbnN0IHNob3VsZFN5bmNEYXNoYm9hcmQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgICh3YXNUYXNrQ3JlYXRpb24gfHwgd2FzVGFza0VkaXQgfHwgd2FzVGFza0RlbGV0ZSkgJiZcbiAgICAgICAgdGFza0lkc0ZvckRhc2hib2FyZC5sZW5ndGggPiAwXG5cbiAgICAgIGlmIChzaG91bGRTeW5jRGFzaGJvYXJkKSB7XG4gICAgICAgIGNvbnN0IHRhc2tJZHMgPSB0YXNrSWRzRm9yRGFzaGJvYXJkXG4gICAgICAgIGlmIChtYXRjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zdCB0YWIgPSBhd2FpdCBnZXRUYWJUYXNrRGVmYXVsdCh0YXNrSWRzWzBdKVxuICAgICAgICAgIGNvbnN0IHRhYlNlZ21lbnQgPSB0YWIgPyBgLyR7dGFifWAgOiAnL2RldGFpbCdcbiAgICAgICAgICBjb250ZW50VG9BZGQgPSBjb250ZW50LnJlcGxhY2UodGFza1VybFJlZ2V4LCB1cmwgPT5cbiAgICAgICAgICAgIHVybC5yZXBsYWNlKC9cXC8oZGV0YWlsfG1lc3NhZ2V8bWVzc2FnZXN8ZmlsZXN8aGlzdG9yeXxob3VycykoPz0kfFxcPykvLCB0YWJTZWdtZW50KVxuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxhc3RQcm9qZWN0TWVzc2FnZSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmlsdGVyKG1zZyA9PiBtc2cucHJvamVjdElkKS5hdCgtMSlcbiAgICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZFJhdyA9IHByb2plY3Q/LmlkIHx8IGxhc3RQcm9qZWN0TWVzc2FnZT8ucHJvamVjdElkXG4gICAgICAgIGNvbnN0IGNvbnRleHRQcm9qZWN0SWQgPSBjb250ZXh0UHJvamVjdElkUmF3ID8gcGFyc2VJbnQoU3RyaW5nKGNvbnRleHRQcm9qZWN0SWRSYXcpLCAxMCkgOiBudWxsXG4gICAgICAgIGNvbnN0IHBhdGhNYXRjaCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5tYXRjaCgvXlxcL3Byb2plY3RzXFwvKFxcZCspXFwvLylcbiAgICAgICAgY29uc3Qgcm91dGVQcm9qZWN0SWQgPSBwYXRoTWF0Y2ggPyBwYXJzZUludChwYXRoTWF0Y2hbMV0sIDEwKSA6IG51bGxcbiAgICAgICAgY29uc3QgaXNPblByb2plY3RSb3V0ZSA9IGNvbnRleHRQcm9qZWN0SWQgJiYgcm91dGVQcm9qZWN0SWQgJiYgY29udGV4dFByb2plY3RJZCA9PT0gcm91dGVQcm9qZWN0SWRcblxuICAgICAgICBpZiAoaXNPblByb2plY3RSb3V0ZSkge1xuICAgICAgICAgIGlmICh3YXNUYXNrQ3JlYXRpb24pIHtcbiAgICAgICAgICAgIHdpbmRvdy5uZXdQcm9qZWN0RGFzaGJvYXJkPy5hZGRFeGlzdGluZ1Rhc2tUb0Rhc2hib2FyZD8uKHRhc2tJZHMpXG4gICAgICAgICAgfSBlbHNlIGlmICh3YXNUYXNrRWRpdCkge1xuICAgICAgICAgICAgd2luZG93Lm5ld1Byb2plY3REYXNoYm9hcmQ/LmVkaXRFeGlzdGluZ1Rhc2tJbkRhc2hib2FyZD8uKHRhc2tJZHMpXG4gICAgICAgICAgfSBlbHNlIGlmICh3YXNUYXNrRGVsZXRlKSB7XG4gICAgICAgICAgICB3aW5kb3cubmV3UHJvamVjdERhc2hib2FyZD8uZGVsZXRlRXhpc3RpbmdUYXNrRnJvbURhc2hib2FyZD8uKHRhc2tJZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFJlZmV0Y2ggZGVsIHRhc2sgcGFuZWwgc2kgZXN0w6EgYWJpZXJ0byB5IGxhIHRvb2wgYXByb2JhZGEgZWRpdMOzL2JvcnLDsyBlc2EgdGFyZWEuXG4gICAgICAvLyBDdWJyZSBsb3MgZG9zIGZsdWpvcyBkZSBhcHByb3ZhbDpcbiAgICAgIC8vICAgMSkgQXBwcm92YWwgcG9yIGJvdMOzbiDihpIgYHByZXZpb3VzTWVzc2FnZS5hcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnNgICh2w61hIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UpXG4gICAgICAvLyAgIDIpIE1hbnVhbCBhcHByb3ZhbCAodXN1YXJpbyB0aXBlYSBcInNpXCIvXCJub1wiKSDihpIgYGxhc3RNYW51YWxBcHByb3ZhbFJlZi5jdXJyZW50YFxuICAgICAgY29uc3Qgb3BlblRhc2tQYW5lbElkID0gd2luZG93LnRhc2tQYW5lbD8udGFza0lkXG4gICAgICBjb25zdCBtYW51YWxBcHByb3ZhbCA9IGxhc3RNYW51YWxBcHByb3ZhbFJlZi5jdXJyZW50XG4gICAgICBsYXN0TWFudWFsQXBwcm92YWxSZWYuY3VycmVudCA9IG51bGwgLy8gY29uc3VtaXIgdW5hIHNvbGEgdmV6XG4gICAgICBjb25zdCBtYW51YWxXYXNUYXNrRWRpdCA9ICEhbWFudWFsQXBwcm92YWwgJiYgVEFTS19FRElUX1RPT0xTLmluY2x1ZGVzKG1hbnVhbEFwcHJvdmFsLnRvb2xOYW1lKVxuICAgICAgY29uc3QgbWFudWFsV2FzVGFza0RlbGV0ZSA9ICEhbWFudWFsQXBwcm92YWwgJiYgVEFTS19ERUxFVEVfVE9PTFMuaW5jbHVkZXMobWFudWFsQXBwcm92YWwudG9vbE5hbWUpXG5cbiAgICAgIGlmIChvcGVuVGFza1BhbmVsSWQgJiYgKHdhc1Rhc2tFZGl0IHx8IHdhc1Rhc2tEZWxldGUgfHwgbWFudWFsV2FzVGFza0VkaXQgfHwgbWFudWFsV2FzVGFza0RlbGV0ZSkpIHtcbiAgICAgICAgY29uc3QgbWFudWFsUHNldWRvQWN0aW9uOiBQZW5kaW5nQWN0aW9uIHwgbnVsbCA9IG1hbnVhbEFwcHJvdmFsXG4gICAgICAgICAgPyAoeyB0b29sX25hbWU6IG1hbnVhbEFwcHJvdmFsLnRvb2xOYW1lLCB0b29sX2FyZ3M6IG1hbnVhbEFwcHJvdmFsLnRvb2xBcmdzID8/IHt9IH0gYXMgUGVuZGluZ0FjdGlvbilcbiAgICAgICAgICA6IG51bGxcbiAgICAgICAgY29uc3QgYWZmZWN0ZWRUYXNrSWRzID0gW1xuICAgICAgICAgIC4uLmV4dHJhY3RUYXNrSWRzRnJvbVBlbmRpbmdBY3Rpb25zQXJncyhwZW5kaW5nQWN0aW9ucyksXG4gICAgICAgICAgLi4udGFza0lkc0Zyb21VcmxzLFxuICAgICAgICAgIC4uLnRhc2tJZHNGcm9tRGVsZXRlQXBwcm92YWwsXG4gICAgICAgICAgLi4uKG1hbnVhbFBzZXVkb0FjdGlvbiA/IGV4dHJhY3RUYXNrSWRzRnJvbVBlbmRpbmdBY3Rpb25zQXJncyhbbWFudWFsUHNldWRvQWN0aW9uXSkgOiBbXSksXG4gICAgICAgIF0ubWFwKFN0cmluZylcbiAgICAgICAgaWYgKGFmZmVjdGVkVGFza0lkcy5pbmNsdWRlcyhTdHJpbmcob3BlblRhc2tQYW5lbElkKSkpIHtcbiAgICAgICAgICB3aW5kb3cudGFza1BhbmVsPy5yZWZldGNoVGFzaz8uKClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IGBhbnN3ZXItJHttZW1vcnlTZXNzaW9uSWR9YCxcbiAgICAgICAgbWVzc2FnZTogY29udGVudFRvQWRkLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgc291cmNlcyxcbiAgICAgICAgLi4uKGF0dGFjaG1lbnRzLmxlbmd0aCA+IDAgPyB7IGF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgIG1lbW9yeVNlc3Npb25JZCxcbiAgICAgICAgc3VnZ2VzdGlvbnM6IHN1Z2dlc3Rpb25zIHx8IFtdLFxuICAgICAgICAuLi4oY3JlYXRlQWdlbnRGb2xsb3dVcCA/IHsgY3JlYXRlQWdlbnRGb2xsb3dVcCB9IDoge30pLFxuICAgICAgfSlcblxuICAgICAgLy8gT3JxdWVzdGFkb3I6IGFjdHVhbGl6YSBlbCBjaGlwIGRlIGNvbnRleHRvIGNvbiBlbCBwcm95ZWN0by9jbGllbnRlXG4gICAgICAvLyBxdWUgZWwgc3ViYWdlbnRlIHJlc29sdmnDsyBkaW7DoW1pY2FtZW50ZSB2w61hIGhlcnJhbWllbnRhcyAoZWouIHByb2plY3RfaWRcbiAgICAgIC8vIGVuY29udHJhZG8gcG9yIGdldF9wcm9qZWN0X2lkX2Jhc2VkX29uX25hbWUgbyBnZXRfcHJvamVjdF93aXRoX3Rhc2tzX2luZm8pLlxuICAgICAgaWYgKHJlc29sdmVkQ29udGV4dD8ucHJvamVjdF9pZCAmJiAhY2hpcHNQcm9qZWN0KSB7XG4gICAgICAgIGlmIChyZXNvbHZlZENvbnRleHQucHJvamVjdF9uYW1lKSB7XG4gICAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KHtcbiAgICAgICAgICAgIHByb2plY3ROYW1lOiByZXNvbHZlZENvbnRleHQucHJvamVjdF9uYW1lLFxuICAgICAgICAgICAgY2xpZW50TmFtZTogcmVzb2x2ZWRDb250ZXh0LmNsaWVudF9uYW1lIHx8ICcnLFxuICAgICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcocmVzb2x2ZWRDb250ZXh0LnByb2plY3RfaWQpLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgc2V0UHJvamVjdCh7XG4gICAgICAgICAgICBpZDogcmVzb2x2ZWRDb250ZXh0LnByb2plY3RfaWQsXG4gICAgICAgICAgICBuYW1lOiByZXNvbHZlZENvbnRleHQucHJvamVjdF9uYW1lLFxuICAgICAgICAgICAgLi4uKHJlc29sdmVkQ29udGV4dC5jbGllbnRfaWQgPyB7IGNsaWVudElkOiByZXNvbHZlZENvbnRleHQuY2xpZW50X2lkIH0gOiB7fSksXG4gICAgICAgICAgICAuLi4ocmVzb2x2ZWRDb250ZXh0LmNsaWVudF9uYW1lXG4gICAgICAgICAgICAgID8geyBjbGllbnQ6IHsgaWQ6IHJlc29sdmVkQ29udGV4dC5jbGllbnRfaWQgfHwgMCwgbmFtZTogcmVzb2x2ZWRDb250ZXh0LmNsaWVudF9uYW1lIH0gfVxuICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZldGNoUHJvamVjdHMocmVzb2x2ZWRDb250ZXh0LnByb2plY3RfaWQpLnRoZW4ocHJvamVjdHMgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm91bmQgPSBwcm9qZWN0cz8uZmluZChwID0+IE51bWJlcihwLmlkKSA9PT0gcmVzb2x2ZWRDb250ZXh0LnByb2plY3RfaWQpXG4gICAgICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KHtcbiAgICAgICAgICAgICAgICBwcm9qZWN0TmFtZTogZm91bmQubmFtZSxcbiAgICAgICAgICAgICAgICBjbGllbnROYW1lOiBmb3VuZC5jbGllbnQ/Lm5hbWUgfHwgcmVzb2x2ZWRDb250ZXh0LmNsaWVudF9uYW1lIHx8ICcnLFxuICAgICAgICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKGZvdW5kLmlkKSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgc2V0UHJvamVjdChmb3VuZClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNldENoaXBzUHJvamVjdCh7XG4gICAgICAgICAgICAgICAgcHJvamVjdE5hbWU6IGBQcm95ZWN0byAke3Jlc29sdmVkQ29udGV4dC5wcm9qZWN0X2lkfWAsXG4gICAgICAgICAgICAgICAgY2xpZW50TmFtZTogcmVzb2x2ZWRDb250ZXh0LmNsaWVudF9uYW1lIHx8ICcnLFxuICAgICAgICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKHJlc29sdmVkQ29udGV4dC5wcm9qZWN0X2lkKSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgc2V0UHJvamVjdCh7IGlkOiByZXNvbHZlZENvbnRleHQucHJvamVjdF9pZCEsIG5hbWU6IGBQcm95ZWN0byAke3Jlc29sdmVkQ29udGV4dC5wcm9qZWN0X2lkfWAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocmVzb2x2ZWRDb250ZXh0Py5jbGllbnRfaWQgJiYgIWNsaWVudCkge1xuICAgICAgICBzZXRDbGllbnQ/Lih7XG4gICAgICAgICAgaWQ6IHJlc29sdmVkQ29udGV4dC5jbGllbnRfaWQsXG4gICAgICAgICAgbmFtZTogcmVzb2x2ZWRDb250ZXh0LmNsaWVudF9uYW1lIHx8ICcnLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAoY3JlYXRlQWdlbnRGb2xsb3dVcD8uYWdlbnRJZCkge1xuICAgICAgICBmZXRjaEFnZW50RGV0YWlsKGNyZWF0ZUFnZW50Rm9sbG93VXAuYWdlbnRJZClcbiAgICAgICAgICAudGhlbihjaGF0QWdlbnQgPT4ge1xuICAgICAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdtYWlhLW1lcmdlLWNyZWF0ZWQtYWdlbnQtaW50by1saXN0Jywge1xuICAgICAgICAgICAgICAgIGRldGFpbDogeyBhZ2VudDogY2hhdEFnZW50IH0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1t1c2VDaGF0TWFuYWdlcl0gTm8gc2UgcHVkbyBhw7FhZGlyIGVsIGFnZW50ZSByZWNpw6luIGNyZWFkbyBhbCBsaXN0YWRvJywgZXJyKVxuICAgICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChlZGl0QWdlbnRGb2xsb3dVcD8uYWdlbnRJZCkge1xuICAgICAgICBmZXRjaEFnZW50RGV0YWlsKGVkaXRBZ2VudEZvbGxvd1VwLmFnZW50SWQpXG4gICAgICAgICAgLnRoZW4oY2hhdEFnZW50ID0+IHtcbiAgICAgICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnbWFpYS1zeW5jLWVkaXRlZC1hZ2VudC1mcm9tLWNoYXQnLCB7XG4gICAgICAgICAgICAgICAgZGV0YWlsOiB7IGFnZW50OiBjaGF0QWdlbnQgfSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignW3VzZUNoYXRNYW5hZ2VyXSBObyBzZSBwdWRvIHJlZnJlc2NhciBlbCBhZ2VudGUgZWRpdGFkbycsIGVycilcbiAgICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBpZiAoZmlyc3RUaW1lUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgY29uc3QgY3VzdG9tRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJ3JlZmV0Y2gtc2Vzc2lvbicpXG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY3VzdG9tRXZlbnQpXG4gICAgICAgIGZpcnN0VGltZVJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIH1cbiAgICB9LFxuICAgIFthZGRNZXNzYWdlLCByZW1vdmVNZXNzYWdlLCBwcm9qZWN0LCBnZXRUYWJUYXNrRGVmYXVsdCwgZXZlbnQsIGFnZW50XVxuICApXG5cbiAgY29uc3QgaGFuZGxlU3RyZWFtU3RvcCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjbGVhclN0cmVhbVVpUmVmLmN1cnJlbnQoKVxuICAgIGNvbnN0IHRlbXBNZXNzYWdlSWQgPSBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1zdHJlYW1pbmdgXG4gICAgc3RyZWFtaW5nU3RvcmUuY2xlYXIoKVxuICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICByZW1vdmVNZXNzYWdlKHRlbXBNZXNzYWdlSWQpXG5cbiAgICBhZGRNZXNzYWdlKHtcbiAgICAgIGlkOiBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1jYW5jZWxsZWRgLFxuICAgICAgbWVzc2FnZTogdCgnY2hhdC5jYW5jZWxsZWQnKSxcbiAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICBpc0Zyb250ZW5kQ2FuY2VsbGVkOiB0cnVlLFxuICAgIH0pXG4gICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgY3VzdG9tRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJ3JlZmV0Y2gtc2Vzc2lvbicpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGN1c3RvbUV2ZW50KVxuICAgIH0sIDUwMClcbiAgfSwgW2FkZE1lc3NhZ2UsIHJlbW92ZU1lc3NhZ2UsIHRdKVxuXG4gIGNvbnN0IGhhbmRsZUFwcHJvdmFsUmVxdWlyZWQgPSB1c2VDYWxsYmFjayhcbiAgICAoYXBwcm92YWw6IEFwcHJvdmFsUmVxdWVzdCwgYWNjdW11bGF0ZWRDb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHRlbXBNZXNzYWdlSWQgPSBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1zdHJlYW1pbmdgXG4gICAgICBzdHJlYW1pbmdTdG9yZS5jbGVhcigpXG4gICAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIHJlbW92ZU1lc3NhZ2UodGVtcE1lc3NhZ2VJZClcblxuICAgICAgLy8gT3JxdWVzdGFkb3I6IGV4dHJhZXIgY29udGV4dG8gcmVzdWVsdG8gZGVsIHBheWxvYWQgZGUgYXByb2JhY2nDs24geVxuICAgICAgLy8gYWN0dWFsaXphciBlbCBjaGlwIGlubWVkaWF0YW1lbnRlIOKAlCBzaW4gZXNwZXJhciBhbCBjb21wbGV0ZS9yZWZyZXNoLlxuICAgICAgLy8gRWwgYmFja2VuZCBpbmNsdXllIHJlc29sdmVkX2NvbnRleHQgZW4gc3ViYWdlbnRfdXNlZCAoZGVudHJvIGRlbFxuICAgICAgLy8gYXBwcm92YWxfcmVxdWlyZWQgZGF0YSBwYXJhIHN1YmFnZW50ZXMpIGNvbiBlbCBwcm9qZWN0X2lkL2NsaWVudF9pZFxuICAgICAgLy8gcXVlIGVsIHN1YmFnZW50ZSBkZXRlcm1pbsOzIGFudGVzIGRlbCBpbnRlcnJ1cHQuXG4gICAgICBjb25zdCBhcHByb3ZhbEFueSA9IGFwcHJvdmFsIGFzIEFwcHJvdmFsUmVxdWVzdCAmIHtcbiAgICAgICAgcmVzb2x2ZWRfY29udGV4dD86IFJlc29sdmVkQ29udGV4dCB8IG51bGxcbiAgICAgICAgc3ViYWdlbnQ/OiB7IHJlc29sdmVkX2NvbnRleHQ/OiBSZXNvbHZlZENvbnRleHQgfCBudWxsIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IHJjID0gYXBwcm92YWxBbnkucmVzb2x2ZWRfY29udGV4dCA/PyBhcHByb3ZhbEFueS5zdWJhZ2VudD8ucmVzb2x2ZWRfY29udGV4dCA/PyBudWxsXG4gICAgICBpZiAocmM/LnByb2plY3RfaWQgJiYgIWNoaXBzUHJvamVjdCkge1xuICAgICAgICBpZiAocmMucHJvamVjdF9uYW1lKSB7XG4gICAgICAgICAgLy8gVGVuZW1vcyBub21icmU6IHNldGVhciBlbCBjaGlwIGRpcmVjdGFtZW50ZVxuICAgICAgICAgIHNldENoaXBzUHJvamVjdCh7XG4gICAgICAgICAgICBwcm9qZWN0TmFtZTogcmMucHJvamVjdF9uYW1lLFxuICAgICAgICAgICAgY2xpZW50TmFtZTogcmMuY2xpZW50X25hbWUgfHwgJycsXG4gICAgICAgICAgICBwcm9qZWN0SWQ6IFN0cmluZyhyYy5wcm9qZWN0X2lkKSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIHNldFByb2plY3Qoe1xuICAgICAgICAgICAgaWQ6IHJjLnByb2plY3RfaWQsXG4gICAgICAgICAgICBuYW1lOiByYy5wcm9qZWN0X25hbWUsXG4gICAgICAgICAgICAuLi4ocmMuY2xpZW50X2lkID8geyBjbGllbnRJZDogcmMuY2xpZW50X2lkIH0gOiB7fSksXG4gICAgICAgICAgICAuLi4ocmMuY2xpZW50X25hbWUgPyB7IGNsaWVudDogeyBpZDogcmMuY2xpZW50X2lkIHx8IDAsIG5hbWU6IHJjLmNsaWVudF9uYW1lIH0gfSA6IHt9KSxcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFNvbG8gdGVuZW1vcyBlbCBJRCDigJQgZmV0Y2ggZGVsIG5vbWJyZSBjb21wbGV0byBkZWwgcHJveWVjdG9cbiAgICAgICAgICBmZXRjaFByb2plY3RzKHJjLnByb2plY3RfaWQpLnRoZW4ocHJvamVjdHMgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm91bmQgPSBwcm9qZWN0cz8uZmluZChwID0+IE51bWJlcihwLmlkKSA9PT0gcmMucHJvamVjdF9pZClcbiAgICAgICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgICAgICAgIHByb2plY3ROYW1lOiBmb3VuZC5uYW1lLFxuICAgICAgICAgICAgICAgIGNsaWVudE5hbWU6IGZvdW5kLmNsaWVudD8ubmFtZSB8fCByYy5jbGllbnRfbmFtZSB8fCAnJyxcbiAgICAgICAgICAgICAgICBwcm9qZWN0SWQ6IFN0cmluZyhmb3VuZC5pZCksXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIHNldFByb2plY3QoZm91bmQpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBGYWxsYmFjazogbW9zdHJhciBlbCBJRCBzaSBubyBzZSBwdWVkZSByZXNvbHZlciBlbCBub21icmVcbiAgICAgICAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KHtcbiAgICAgICAgICAgICAgICBwcm9qZWN0TmFtZTogYFByb3llY3RvICR7cmMucHJvamVjdF9pZH1gLFxuICAgICAgICAgICAgICAgIGNsaWVudE5hbWU6IHJjLmNsaWVudF9uYW1lIHx8ICcnLFxuICAgICAgICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKHJjLnByb2plY3RfaWQpLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBzZXRQcm9qZWN0KHsgaWQ6IHJjLnByb2plY3RfaWQhLCBuYW1lOiBgUHJveWVjdG8gJHtyYy5wcm9qZWN0X2lkfWAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocmM/LmNsaWVudF9pZCAmJiAhY2xpZW50KSB7XG4gICAgICAgIHNldENsaWVudD8uKHsgaWQ6IHJjLmNsaWVudF9pZCwgbmFtZTogcmMuY2xpZW50X25hbWUgfHwgJycgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgaGl0bENvbnRleHQ6IEhpdGxFeGVjdXRpb25Db250ZXh0ID0ge1xuICAgICAgICBtZXNzYWdlSWQ6IGBhcHByb3ZhbC0ke2FwcHJvdmFsLm9yaWdpbmFsX3RocmVhZF9pZH1gLFxuICAgICAgICBtZXNzYWdlVGV4dDogYWNjdW11bGF0ZWRDb250ZW50IHx8ICcnLFxuICAgICAgICBhcHByb3ZhbCxcbiAgICAgICAgcGVuZGluZ0FjdGlvbnM6IGFwcHJvdmFsLnBlbmRpbmdfYWN0aW9ucyxcbiAgICAgICAgdGhyZWFkSWRzOiBhcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnM/Lm1hcChhY3Rpb24gPT4gYWN0aW9uLnRocmVhZF9pZCksXG4gICAgICB9XG4gICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50ID0gaGl0bENvbnRleHRcblxuICAgICAgaWYgKGFwcHJvdmFsLm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCkge1xuICAgICAgICBjb25zdCBmaXJzdEFjdGlvbiA9IGFwcHJvdmFsLnBlbmRpbmdfYWN0aW9ucz8uWzBdXG4gICAgICAgIGNvbnN0IHRvb2xOYW1lID0gKGFwcHJvdmFsIGFzIHsgdG9vbF9uYW1lPzogc3RyaW5nIH0pLnRvb2xfbmFtZSA/PyBmaXJzdEFjdGlvbj8udG9vbF9uYW1lID8/ICcnXG4gICAgICAgIGNvbnN0IHRvb2xBcmdzID1cbiAgICAgICAgICAoKGFwcHJvdmFsIGFzIHsgdG9vbF9hcmdzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfSkudG9vbF9hcmdzID8/XG4gICAgICAgICAgICAoZmlyc3RBY3Rpb24/LnRvb2xfYXJncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCkpIHx8XG4gICAgICAgICAgbnVsbFxuICAgICAgICBpZiAodG9vbE5hbWUpIHtcbiAgICAgICAgICBsYXN0TWFudWFsQXBwcm92YWxSZWYuY3VycmVudCA9IHsgdG9vbE5hbWUsIHRvb2xBcmdzIH1cbiAgICAgICAgfVxuICAgICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBBZGQgYSBtZXNzYWdlIHdpdGggdGhlIGFwcHJvdmFsIHJlcXVlc3RcbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogYGFwcHJvdmFsLSR7YXBwcm92YWwub3JpZ2luYWxfdGhyZWFkX2lkfWAsXG4gICAgICAgIG1lc3NhZ2U6IGFjY3VtdWxhdGVkQ29udGVudCB8fCAnJyxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIGFwcHJvdmFsLFxuICAgICAgICBhcHByb3ZhbFN0YXR1czogJ3BlbmRpbmcnLFxuICAgICAgfSlcbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICB9LFxuICAgIFthZGRNZXNzYWdlLCByZW1vdmVNZXNzYWdlLCBjaGlwc1Byb2plY3QsIHNldENoaXBzUHJvamVjdCwgc2V0UHJvamVjdCwgY2xpZW50LCBzZXRDbGllbnRdXG4gIClcblxuICBjb25zdCB7XG4gICAgYXNrTWFpYSxcbiAgICBpc0xvYWRpbmc6IHdhaXRpbmdSZXNwb25zZSxcbiAgICBpc1dyaXRpbmcsXG4gICAgbG9hZGluZ01lc3NhZ2UsXG4gICAgc3RyZWFtQWN0aXZpdHksXG4gICAgdXBkYXRlU3RyZWFtQWN0aXZpdHksXG4gICAgc3RvcFN0cmVhbWluZyxcbiAgICBhYm9ydFN0cmVhbVNpbGVudGx5LFxuICB9ID0gdXNlT3JjaGVzdHJhdG9yU3RyZWFtKHtcbiAgICBvbkVycm9yOiBoYW5kbGVTdHJlYW1FcnJvcixcbiAgICBvblN0cmVhbVVwZGF0ZTogaGFuZGxlU3RyZWFtVXBkYXRlLFxuICAgIG9uRmluaXNoU3RyZWFtOiBoYW5kbGVTdHJlYW1GaW5pc2gsXG4gICAgb25TdG9wOiBoYW5kbGVTdHJlYW1TdG9wLFxuICAgIG9uQXBwcm92YWxSZXF1aXJlZDogaGFuZGxlQXBwcm92YWxSZXF1aXJlZCxcbiAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZixcbiAgfSlcblxuICAvLyBNYW50ZW5lbW9zIGVsIHNldHRlciBtw6FzIHJlY2llbnRlIGVuIHVuYSByZWYgcGFyYSBxdWUgcHVlZGEgdXNhcnNlIGRlc2RlXG4gIC8vIGVmZWN0b3MgZGVmaW5pZG9zIGFudGVzIGVuIGVsIGFyY2hpdm8gKGNhbWJpbyBkZSBjaGF0LCByZXNldCwgZXRjLikuXG4gIGFib3J0U3RyZWFtU2lsZW50bHlSZWYuY3VycmVudCA9IGFib3J0U3RyZWFtU2lsZW50bHlcbiAgY2xlYXJTdHJlYW1VaVJlZi5jdXJyZW50ID0gKCkgPT4ge1xuICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5KG51bGwpXG4gICAgc2V0QWN0aXZlTG9hZGluZ3Moe30pXG4gICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYuY3VycmVudCA9IG51bGxcbiAgfVxuXG4gIGNvbnN0IGN1cnJlbnRQcm9qZWN0ID0gcHJvamVjdFxuXG4gIGNvbnN0IHNlbmRNZXNzYWdlID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKFxuICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgYXR0YWNobWVudHNPck9wdGlvbnM/OiBBdHRhY2htZW50RmlsZVtdIHwgU2VuZE1lc3NhZ2VPcHRpb25zLFxuICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgc2NJZD86IHN0cmluZ1xuICAgICkgPT4ge1xuICAgICAgaWYgKGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50IHx8IHdhaXRpbmdSZXNwb25zZSB8fCBsb2FkaW5nTWVzc2FnZXMpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgYXR0YWNobWVudHMsIG9wdGlvbnMgfSA9IG5vcm1hbGl6ZVNlbmRNZXNzYWdlQXJncyhhdHRhY2htZW50c09yT3B0aW9ucylcbiAgICAgIC8vIExhcyBtZW50aW9ucyBwdWVkZW4gdmVuaXIgdsOtYSA1dG8gcGFyw6FtZXRybyAoY2FsbCBwb3NpdGlvbmFsIGRlc2RlIGVsIGZvb3RlcilcbiAgICAgIC8vIG8gdsOtYSBTZW5kTWVzc2FnZU9wdGlvbnMgKGNhbGwgcHJvZ3JhbcOhdGljbykuIEVsIHBhcsOhbWV0cm8gZXhwbMOtY2l0byBnYW5hLlxuICAgICAgY29uc3QgZWZmZWN0aXZlTWVudGlvbnMgPSBtZW50aW9ucyA/PyBvcHRpb25zLm1lbnRpb25zXG4gICAgICBjb25zdCBjb250ZXh0TWVzc2FnZTogQ29udGV4dE1lc3NhZ2UgfCB1bmRlZmluZWQgPSBidWlsZENvbnRleHRNZXNzYWdlKGVmZmVjdGl2ZU1lbnRpb25zKVxuICAgICAgY29uc3QgcGF5bG9hZEZ1YUlkID0gZnVhSWQgPz8gb3B0aW9ucy5mdWFJZFxuICAgICAgY29uc3QgcGF5bG9hZFNjSWQgPSBzY0lkID8/IG9wdGlvbnMuc2NJZFxuICAgICAgY29uc3QgcGF5bG9hZENvbnRleHREYXRhID0gb3B0aW9ucy5jb250ZXh0RGF0YVxuICAgICAgY29uc3QgZGlzcGxheU1lc3NhZ2UgPSBmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5KG1lc3NhZ2UsIHtcbiAgICAgICAgZnVhSWQ6IHBheWxvYWRGdWFJZCxcbiAgICAgICAgc2NJZDogcGF5bG9hZFNjSWQsXG4gICAgICB9KVxuXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGNvbnN0IG5ld01lc3NhZ2VJZCA9IHV1aWR2NCgpXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSBuZXdNZXNzYWdlSWRcbiAgICAgIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCA9IG1lc3NhZ2VcblxuICAgICAgaWYgKCFyZXBvcnRlZEV2ZW50LmN1cnJlbnQpIHtcbiAgICAgICAgZXZlbnQoRVZFTlRTLnBtQWlUeXBlZFRleHQpXG4gICAgICAgIHJlcG9ydGVkRXZlbnQuY3VycmVudCA9IHRydWVcbiAgICAgIH1cblxuICAgICAgLy8gVmVyaWZpY2FyIHNpIGVsIGNvbnRleHRvIGdsb2JhbCBlc3TDoSBkZXNhY3R1YWxpemFkb1xuICAgICAgY29uc3QgbGFzdE1lc3NhZ2VXaXRoUHJvamVjdCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmlsdGVyKG1zZyA9PiBtc2cucHJvamVjdElkKS5hdCgtMSlcblxuICAgICAgY29uc3QgY3VycmVudEFnZW50RnJvbU1lc3NhZ2VzID0gbWVzc2FnZXNSZWYuY3VycmVudD8uW21lc3NhZ2VzUmVmLmN1cnJlbnQubGVuZ3RoIC0gMV0/LmFnZW50SWRcblxuICAgICAgLy8gTm8gYWdyZWdhciBwcm9qZWN0SWQgYWwgbWVuc2FqZSBkZWwgdXN1YXJpbyAtIHNlIGRldGVybWluYXLDoSBkZXNwdcOpc1xuICAgICAgYWRkTWVzc2FnZSh7XG4gICAgICAgIGlkOiBgcXVlc3Rpb24tJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9YCxcbiAgICAgICAgbWVzc2FnZTogZGlzcGxheU1lc3NhZ2UsXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IGN1cnJlbnRVc2VyLFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuVVNFUixcbiAgICAgICAgc291cmNlczogYXR0YWNobWVudHMsXG4gICAgICAgIC4uLihjb250ZXh0TWVzc2FnZSA/IHsgY29udGV4dE1lc3NhZ2UgfSA6IHt9KSxcbiAgICAgIH0pXG5cbiAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG5cbiAgICAgIGNvbnN0IHN0cmVhbWluZ1BsYWNlaG9sZGVySWQgPSBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1zdHJlYW1pbmdgXG4gICAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBzdHJlYW1pbmdQbGFjZWhvbGRlcklkXG4gICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IGN1cnJlbnRDaGF0SWQuY3VycmVudFxuICAgICAgYWRkTWVzc2FnZSh7XG4gICAgICAgIGlkOiBzdHJlYW1pbmdQbGFjZWhvbGRlcklkLFxuICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6IGFnZW50Py5uYW1lIHx8ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KVxuXG4gICAgICBsZXQgZmluYWxNZXNzYWdlID0gbWVzc2FnZVxuXG4gICAgICBpZiAobWVzc2FnZSA9PT0gdCgncWEuaXRlbXMucmVudGFiaWxpZGFkX3Byb3llY3RvJykpIHtcbiAgICAgICAgZmluYWxNZXNzYWdlID0gYEZBUTogJHt0KCdxYS5pdGVtcy5yZW50YWJpbGlkYWRfcHJveWVjdG8nKX0gLSBUaXBvIGRlIHJlbnRhYmlsaWRhZDogJHtcbiAgICAgICAgICBvcHRpb25zLnByb2plY3RDaGFuZ2VkPy5pbmNvbWVUeXBlIHx8IGNvbnRleHRSZWYuY3VycmVudC5wcm9qZWN0Py5pbmNvbWVUeXBlXG4gICAgICAgIH1gXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGhpc3RvcnkgPSBtZXNzYWdlc1JlZi5jdXJyZW50Lm1hcChoaXN0b3J5TWVzc2FnZSA9PiAoe1xuICAgICAgICBjb250ZW50OiBoaXN0b3J5TWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICByb2xlOiBoaXN0b3J5TWVzc2FnZS51c2VyLmlkID09PSBhdXRoVXNlci5pZC50b1N0cmluZygpID8gQ2hhdEhpc3RvcnlSb2xlLlVTRVIgOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgfSkpXG5cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgY2hpcHNQcm9qZWN0OiBjdHhDaGlwc1Byb2plY3QsXG4gICAgICAgIHByb2plY3Q6IGN0eFByb2plY3QsXG4gICAgICAgIGNsaWVudDogY3R4Q2xpZW50LFxuICAgICAgICB0YXNrOiBjdHhUYXNrLFxuICAgICAgfSA9IGNvbnRleHRSZWYuY3VycmVudFxuICAgICAgY29uc3QgbGFzdE1lc3NhZ2VQcm9qZWN0SWQgPSBsYXN0TWVzc2FnZVdpdGhQcm9qZWN0Py5wcm9qZWN0SWRcbiAgICAgIGNvbnN0IHByb2plY3RUb1JlcXVlc3QgPSByZXNvbHZlUHJvamVjdFRvUmVxdWVzdChjdHhDaGlwc1Byb2plY3QsIGxhc3RNZXNzYWdlUHJvamVjdElkKVxuXG4gICAgICBjb25zb2xlLmluZm8oJ1t1c2VDaGF0TWFuYWdlcl0gc2VuZE1lc3NhZ2UgY29udGV4dCByZXNvbHV0aW9uOicsIHtcbiAgICAgICAgY2hpcHNQcm9qZWN0OiBjdHhDaGlwc1Byb2plY3QsXG4gICAgICAgIGNoaXBzUHJvamVjdElkOiBjdHhDaGlwc1Byb2plY3Q/LnByb2plY3RJZCA/IE51bWJlcihjdHhDaGlwc1Byb2plY3QucHJvamVjdElkKSA6IG51bGwsXG4gICAgICAgIGxhc3RNZXNzYWdlUHJvamVjdElkLFxuICAgICAgICBwcm9qZWN0VG9SZXF1ZXN0LFxuICAgICAgICBjbGllbnRJZDogY3R4Q2xpZW50Py5pZCxcbiAgICAgICAgdGFza0lkOiBjdHhUYXNrPy5pZCxcbiAgICAgICAgcHJvamVjdFByb3BJZDogY3R4UHJvamVjdD8uaWQsXG4gICAgICAgIGFnZW50VHlwZTogYWdlbnQ/LnR5cGUsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCBwcm9qZWN0cyA9IGF3YWl0IGZldGNoUHJvamVjdHMoW3Byb2plY3RUb1JlcXVlc3RdKVxuXG4gICAgICBjb25zdCBwYXlsb2FkRmFxSWQgPSBmYXFJZCA/PyBvcHRpb25zLmZhcUlkXG4gICAgICBjb25zdCBwYXlsb2FkQWdlbnRTdWdnZXN0aW9uSWQgPSBhZ2VudFN1Z2dlc3Rpb25JZCA/PyBvcHRpb25zLmFnZW50U3VnZ2VzdGlvbklkXG5cbiAgICAgIGNvbnN0IHBheWxvYWREYXRhID0ge1xuICAgICAgICBtZXNzYWdlOiBmaW5hbE1lc3NhZ2UsXG4gICAgICAgIGhpc3RvcnksXG4gICAgICAgIHByb2plY3RJZDogcHJvamVjdFRvUmVxdWVzdCxcbiAgICAgICAgbGFuZzogYXV0aFVzZXIubGFuZyxcbiAgICAgICAgdXNlcklkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgICBmaXJzdE5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICAgICAgbGFzdE5hbWU6IGF1dGhVc2VyLmxhc3ROYW1lLFxuICAgICAgICBjb21wYW55SWQ6IGF1dGhVc2VyLmNvbXBhbnlfaWQudG9TdHJpbmcoKSxcbiAgICAgICAgY2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICAgIG1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuICAgICAgICBhZ2VudE5hbWU6IGFnZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICBhZ2VudElkOiBjdXJyZW50QWdlbnRGcm9tTWVzc2FnZXMgfHwgYWdlbnQ/LmlkISxcbiAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmU6IGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIC4uLihjdHhQcm9qZWN0Py5mZWVJZCAhPSBudWxsID8geyBmZWVJZDogTnVtYmVyKGN0eFByb2plY3QuZmVlSWQpIH0gOiB7fSksXG4gICAgICAgIC4uLnJlc29sdmVDbGllbnRQYXlsb2FkKGN0eENsaWVudCwgY3R4UHJvamVjdCksXG4gICAgICAgIC4uLihwcm9qZWN0cz8ubGVuZ3RoID8geyBwcm9qZWN0TmFtZTogcHJvamVjdHNbMF0ubmFtZSB9IDoge30pLFxuICAgICAgICAuLi4oY3R4VGFzaz8uaWQgIT0gbnVsbFxuICAgICAgICAgID8geyB0YXNrSWQ6IE51bWJlcihjdHhUYXNrLmlkKSwgLi4uKGN0eFRhc2submFtZSA/IHsgdGFza05hbWU6IGN0eFRhc2submFtZSB9IDoge30pIH1cbiAgICAgICAgICA6IHt9KSxcbiAgICAgICAgLi4uKGF0dGFjaG1lbnRzLmxlbmd0aCA+IDAgPyB7IGF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgIC4uLihwYXlsb2FkRmFxSWQgPyB7IGZhcUlkOiBwYXlsb2FkRmFxSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRBZ2VudFN1Z2dlc3Rpb25JZCA/IHsgYWdlbnRTdWdnZXN0aW9uSWQ6IHBheWxvYWRBZ2VudFN1Z2dlc3Rpb25JZCB9IDoge30pLFxuICAgICAgICAuLi4ocGF5bG9hZEZ1YUlkID8geyBmdWFJZDogcGF5bG9hZEZ1YUlkIH0gOiB7fSksXG4gICAgICAgIC4uLihwYXlsb2FkU2NJZCA/IHsgc2NJZDogcGF5bG9hZFNjSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50Py5lbnRpdHkgIT0gbnVsbCA/IHsgYWdlbnRFbnRpdHk6IGFnZW50LmVudGl0eSB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnQ/LnR5cGUgIT0gbnVsbCA/IHsgYWdlbnRUeXBlOiBhZ2VudC50eXBlIH0gOiB7fSksXG4gICAgICAgIC4uLihjb250ZXh0TWVzc2FnZSA/IHsgY29udGV4dE1lc3NhZ2UgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRDb250ZXh0RGF0YSA/IHsgY29udGV4dERhdGE6IHBheWxvYWRDb250ZXh0RGF0YSB9IDoge30pLFxuICAgICAgfVxuXG4gICAgICBhc2tNYWlhKHBheWxvYWREYXRhKVxuICAgIH0sXG4gICAgW1xuICAgICAgYWRkTWVzc2FnZSxcbiAgICAgIGV2ZW50LFxuICAgICAgYXNrTWFpYSxcbiAgICAgIHByb2plY3QsXG4gICAgICBjbGllbnQsXG4gICAgICB0YXNrLFxuICAgICAgY2hpcHNQcm9qZWN0LFxuICAgICAgYXV0aFVzZXIsXG4gICAgICBhZ2VudCxcbiAgICAgIHQsXG4gICAgICB3YWl0aW5nUmVzcG9uc2UsXG4gICAgICBsb2FkaW5nTWVzc2FnZXMsXG4gICAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICBdXG4gIClcblxuICBjb25zdCBjaGFuZ2VQcm9qZWN0ID0gdXNlQ2FsbGJhY2soXG4gICAgKG9wdGlvbjogUHJvamVjdCkgPT4ge1xuICAgICAgaWYgKCFjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQpIHJldHVyblxuXG4gICAgICBpZiAob3B0aW9uLmlkICE9PSBwcm9qZWN0Py5pZCkge1xuICAgICAgICBzZXRQcm9qZWN0KG9wdGlvbilcbiAgICAgIH1cblxuICAgICAgaWYgKHByb2plY3QgJiYgY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGhpc3RvcnkgPSBtZXNzYWdlc1JlZi5jdXJyZW50Lm1hcChoaXN0b3J5TWVzc2FnZSA9PiAoe1xuICAgICAgICAgIGNvbnRlbnQ6IGhpc3RvcnlNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgICAgcm9sZTogaGlzdG9yeU1lc3NhZ2UudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSA/IENoYXRIaXN0b3J5Um9sZS5VU0VSIDogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgfSkpXG5cbiAgICAgICAgY29uc29sZS5pbmZvKCdbdXNlQ2hhdE1hbmFnZXJdIFBBVEg9Y2hhbmdlUHJvamVjdCDigJQgdXNhIG9wdGlvbi5pZCBkaXJlY3RvIChOTyBjaGlwc1Byb2plY3QpOicsIHtcbiAgICAgICAgICBvcHRpb25JZDogb3B0aW9uLmlkLFxuICAgICAgICAgIHByb2plY3RQcm9wSWQ6IHByb2plY3Q/LmlkID8/IG51bGwsXG4gICAgICAgICAgY2hpcHNQcm9qZWN0SWQ6IGNoaXBzUHJvamVjdD8ucHJvamVjdElkID8/IG51bGwsXG4gICAgICAgICAgYWdlbnRUeXBlOiBhZ2VudD8udHlwZSxcbiAgICAgICAgfSlcblxuICAgICAgICBhc2tNYWlhKHtcbiAgICAgICAgICBtZXNzYWdlOiBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQsXG4gICAgICAgICAgaGlzdG9yeSxcbiAgICAgICAgICBwcm9qZWN0SWQ6IG9wdGlvbi5pZCxcbiAgICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICAgIHVzZXJJZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICBmaXJzdE5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICAgICAgICBsYXN0TmFtZTogYXV0aFVzZXIubGFzdE5hbWUsXG4gICAgICAgICAgY29tcGFueUlkOiBhdXRoVXNlci5jb21wYW55X2lkLnRvU3RyaW5nKCksXG4gICAgICAgICAgY2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICAgICAgbWVzc2FnZUlkOiBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQsXG4gICAgICAgICAgYWdlbnROYW1lOiBhZ2VudD8ubmFtZSB8fCAnJyxcbiAgICAgICAgICBhZ2VudElkOiBhZ2VudD8uaWQgfHwgJycsXG4gICAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmU6IGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlOiBpc0RlZXBTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgICAuLi4ob3B0aW9uPy5mZWVJZCAhPSBudWxsID8geyBmZWVJZDogTnVtYmVyKG9wdGlvbi5mZWVJZCkgfSA6IHt9KSxcbiAgICAgICAgICAuLi4ob3B0aW9uPy5jbGllbnRJZCAhPSBudWxsID8geyBjbGllbnRJZDogTnVtYmVyKG9wdGlvbi5jbGllbnRJZCkgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYWdlbnQ/LmVudGl0eSAhPSBudWxsID8geyBhZ2VudEVudGl0eTogYWdlbnQuZW50aXR5IH0gOiB7fSksXG4gICAgICAgICAgLi4uKGFnZW50Py50eXBlICE9IG51bGwgPyB7IGFnZW50VHlwZTogYWdlbnQudHlwZSB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgW3Byb2plY3QsIHNldFByb2plY3QsIGFza01haWEsIGF1dGhVc2VyLCBpc1dlYlNlYXJjaEFjdGl2ZSwgYWdlbnRdXG4gIClcblxuICBjb25zdCBoYW5kbGVGZWVkYmFjayA9IHVzZUNhbGxiYWNrKGFzeW5jIChmZWVkYmFja1Byb3A6IEZlZWRiYWNrLCBjaGF0TWVzc2FnZUlkOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuQ2hhdHMud2FzSGVscGZ1bENoYXQoY2hhdE1lc3NhZ2VJZCwgZmVlZGJhY2tQcm9wID09PSBGZWVkYmFjay5USFVNQlNfVVApXG4gICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICBtZXNzYWdlc1JlZi5jdXJyZW50ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAobWVzc2FnZSA9PiB7XG4gICAgICAgIGlmIChtZXNzYWdlLmlkID09PSBjaGF0TWVzc2FnZUlkICYmIG1lc3NhZ2Uucm9sZSA9PT0gJ2Fzc2lzdGFudCcpIHtcbiAgICAgICAgICByZXR1cm4geyAuLi5tZXNzYWdlLCB3YXNIZWxwZnVsOiBmZWVkYmFja1Byb3AgPT09IEZlZWRiYWNrLlRIVU1CU19VUCB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VcbiAgICAgIH0pXG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVBcHByb3ZhbERlY2lzaW9uID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKFxuICAgICAgdGhyZWFkSWRzOiBzdHJpbmdbXSxcbiAgICAgIGRlY2lzaW9uOiAnYXBwcm92ZScgfCAncmVqZWN0JyxcbiAgICAgIGVkaXRlZEFjdGlvbnM/OiBBcnJheTx7IHRvb2xfbmFtZTogc3RyaW5nOyBhcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9PlxuICAgICkgPT4ge1xuICAgICAgaWYgKCF0aHJlYWRJZHM/Lmxlbmd0aCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdObyB0aHJlYWRfaWRzIHByb3ZpZGVkIGZvciBhcHByb3ZhbCBkZWNpc2lvbicpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBCdXNjYXIgZWwgbWVuc2FqZSBxdWUgY29udGllbmUgYWxndW5vIGRlIGVzdG9zIHRocmVhZElkcyBlbiBzdXMgcGVuZGluZ19hY3Rpb25zXG4gICAgICBjb25zdCBtZXNzYWdlV2l0aEFwcHJvdmFsID0gbWVzc2FnZXNSZWYuY3VycmVudC5maW5kKG0gPT5cbiAgICAgICAgbS5hcHByb3ZhbD8ucGVuZGluZ19hY3Rpb25zPy5zb21lKGFjdGlvbiA9PiB0aHJlYWRJZHMuaW5jbHVkZXMoYWN0aW9uLnRocmVhZF9pZCkpXG4gICAgICApXG5cbiAgICAgIGlmICghbWVzc2FnZVdpdGhBcHByb3ZhbCB8fCAhbWVzc2FnZVdpdGhBcHByb3ZhbC5hcHByb3ZhbCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdObyBzZSBlbmNvbnRyw7MgbWVuc2FqZSBjb24gYXBwcm92YWwgcGFyYSB0aHJlYWRfaWRzOicsIHRocmVhZElkcylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgYXBwcm92YWwgfSA9IG1lc3NhZ2VXaXRoQXBwcm92YWxcbiAgICAgIGNvbnN0IG1lc3NhZ2VJZCA9IG1lc3NhZ2VXaXRoQXBwcm92YWwuaWRcbiAgICAgIGNvbnN0IGxvYWRpbmdLZXkgPSB0aHJlYWRJZHNbMF1cblxuICAgICAgY29uc3QgaGl0bENvbnRleHQ6IEhpdGxFeGVjdXRpb25Db250ZXh0ID0ge1xuICAgICAgICBtZXNzYWdlSWQsXG4gICAgICAgIG1lc3NhZ2VUZXh0OiBtZXNzYWdlV2l0aEFwcHJvdmFsLm1lc3NhZ2UsXG4gICAgICAgIGFwcHJvdmFsLFxuICAgICAgICBwZW5kaW5nQWN0aW9uczogYXBwcm92YWwucGVuZGluZ19hY3Rpb25zLFxuICAgICAgICB0aHJlYWRJZHMsXG4gICAgICB9XG4gICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50ID0gaGl0bENvbnRleHRcblxuICAgICAgY29uc3QgaW5pdGlhbEFjdGl2aXR5ID0gcmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHkodCwgaGl0bENvbnRleHQpXG5cbiAgICAgIC8vIFVwZGF0ZSBtZXNzYWdlIHN0YXR1cyBpbW1lZGlhdGVseVxuICAgICAgbWVzc2FnZXNSZWYuY3VycmVudCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKG1lc3NhZ2UgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZS5pZCA9PT0gbWVzc2FnZUlkKSB7XG4gICAgICAgICAgY29uc3QgbmV3U3RhdHVzID0gZGVjaXNpb24gPT09ICdhcHByb3ZlJyA/ICdhcHByb3ZlZCcgOiAncmVqZWN0ZWQnXG4gICAgICAgICAgcmV0dXJuIHsgLi4ubWVzc2FnZSwgYXBwcm92YWxTdGF0dXM6IG5ld1N0YXR1cyB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VcbiAgICAgIH0pXG5cbiAgICAgIC8vIFRyaWdnZXIgcmUtcmVuZGVyXG4gICAgICBjb25zdCBleGlzdGluZ01lc3NhZ2UgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbmQobSA9PiBtLmlkID09PSBtZXNzYWdlSWQpXG4gICAgICBpZiAoZXhpc3RpbmdNZXNzYWdlKSB7XG4gICAgICAgIGNvbnN0IG5ld1N0YXR1cyA9IGRlY2lzaW9uID09PSAnYXBwcm92ZScgPyAnYXBwcm92ZWQnIDogJ3JlamVjdGVkJ1xuICAgICAgICBhZGRNZXNzYWdlKHsgLi4uZXhpc3RpbmdNZXNzYWdlLCBhcHByb3ZhbFN0YXR1czogbmV3U3RhdHVzIH0pXG4gICAgICB9XG5cbiAgICAgIC8vIENhbGwgY29udGludWUtdGhyZWFkIGVuZHBvaW50IHdpdGggQUxMIHRocmVhZF9pZHMgaW4gYSBzaW5nbGUgcmVxdWVzdFxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuXG4gICAgICAvLyBBZGQgbG9hZGluZ1xuICAgICAgc2V0QWN0aXZlTG9hZGluZ3MocHJldiA9PiAoe1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBbbG9hZGluZ0tleV06IGluaXRpYWxBY3Rpdml0eS5tZXNzYWdlLFxuICAgICAgfSkpXG4gICAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eShpbml0aWFsQWN0aXZpdHkpXG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbWFpYS5PcmNoZXN0cmF0b3IuY29udGludWVUaHJlYWQoe1xuICAgICAgICAgIHRocmVhZElkcywgLy8gU2VuZCBhbGwgYWN0aW9uIHRocmVhZF9pZHMgYXQgb25jZVxuICAgICAgICAgIHNlc3Npb25JZDogYXBwcm92YWwuc2Vzc2lvbl9pZCxcbiAgICAgICAgICBkZWNpc2lvbjogZWRpdGVkQWN0aW9ucyA/ICdlZGl0JyA6IGRlY2lzaW9uLFxuICAgICAgICAgIGVkaXRlZEFjdGlvbnMsXG4gICAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkIHx8ICcnLFxuICAgICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICAgIGhhbmRsZVN0cmVhbUVycm9yKClcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByb2Nlc3MgU1NFIHN0cmVhbVxuICAgICAgICBhd2FpdCBwcm9jZXNzU1NFU3RyZWFtKHJlc3BvbnNlLCBsb2FkaW5nS2V5LCB7XG4gICAgICAgICAgb25UaGlua2luZzogKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWN0aXZpdHk6IFN0cmVhbUFjdGl2aXR5ID0ge1xuICAgICAgICAgICAgICBwaGFzZTogJ3RoaW5raW5nJyxcbiAgICAgICAgICAgICAgbWVzc2FnZTogZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSgwLCB0KSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5KGFjdGl2aXR5KVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25Ub2tlbjogKGNvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgdXBkYXRlU3RyZWFtQWN0aXZpdHkoZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5KHQpKVxuICAgICAgICAgICAgaGFuZGxlU3RyZWFtVXBkYXRlKGNvbnRlbnQsIG51bGwsICcnKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25Ob2RlOiAobWVzc2FnZTogc3RyaW5nLCBjdXJyZW50VGhyZWFkSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgY29uc3Qgbm9kZUFjdGl2aXR5ID0gcmVzb2x2ZUhpdGxOb2RlU3RyZWFtQWN0aXZpdHkoXG4gICAgICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgICAgIHQsXG4gICAgICAgICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQsXG4gICAgICAgICAgICAgIGN1cnJlbnRUaHJlYWRJZCxcbiAgICAgICAgICAgICAgeyB1c2VSZXN1bWluZ0ZhbGxiYWNrOiB0cnVlIH1cbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5KG5vZGVBY3Rpdml0eSlcbiAgICAgICAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4gKHtcbiAgICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgICAgW2N1cnJlbnRUaHJlYWRJZF06IG5vZGVBY3Rpdml0eS5tZXNzYWdlLFxuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbkNvbXBsZXRlOiAoXG4gICAgICAgICAgICBmaW5hbENvbnRlbnQ6IHN0cmluZyxcbiAgICAgICAgICAgIHNvdXJjZXM6IGFueSxcbiAgICAgICAgICAgIG1lbW9yeVNlc3Npb25JZDogc3RyaW5nLFxuICAgICAgICAgICAgY3VycmVudFRocmVhZElkOiBzdHJpbmcsXG4gICAgICAgICAgICBhdHRhY2htZW50cz86IGFueVtdIHwgbnVsbCxcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zPzogc3RyaW5nW10gfCBudWxsLFxuICAgICAgICAgICAgYWdlbnRJZD86IHN0cmluZyB8IG51bGxcbiAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgIGhhbmRsZVN0cmVhbUZpbmlzaChmaW5hbENvbnRlbnQsIHNvdXJjZXMsIG1lbW9yeVNlc3Npb25JZCwgYXR0YWNobWVudHMsIHN1Z2dlc3Rpb25zLCBhZ2VudElkKVxuICAgICAgICAgICAgdXBkYXRlU3RyZWFtQWN0aXZpdHkobnVsbClcbiAgICAgICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3TG9hZGluZ3MgPSB7IC4uLnByZXYgfVxuICAgICAgICAgICAgICBkZWxldGUgbmV3TG9hZGluZ3NbY3VycmVudFRocmVhZElkXVxuICAgICAgICAgICAgICByZXR1cm4gbmV3TG9hZGluZ3NcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbkFwcHJvdmFsUmVxdWlyZWQ6IChhcHByb3ZhbFBheWxvYWQ6IGFueSwgYWNjdW11bGF0ZWRDb250ZW50OiBzdHJpbmcsIGN1cnJlbnRUaHJlYWRJZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAvLyBOZXcgSElUTCBpbnRlcnJ1cHRpb24gZGV0ZWN0ZWQgYWZ0ZXIgcmVzdW1lIChjaGFpbmVkIGFjdGlvbnMpXG4gICAgICAgICAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eShudWxsKVxuICAgICAgICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBuZXdMb2FkaW5ncyA9IHsgLi4ucHJldiB9XG4gICAgICAgICAgICAgIGRlbGV0ZSBuZXdMb2FkaW5nc1tjdXJyZW50VGhyZWFkSWRdXG4gICAgICAgICAgICAgIHJldHVybiBuZXdMb2FkaW5nc1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGhhbmRsZUFwcHJvdmFsUmVxdWlyZWQoYXBwcm92YWxQYXlsb2FkIGFzIEFwcHJvdmFsUmVxdWVzdCwgYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25FcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgaGFuZGxlU3RyZWFtRXJyb3IoKVxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBoYW5kbGVTdHJlYW1FcnJvcigpXG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBhdXRoVXNlcixcbiAgICAgIGFnZW50LFxuICAgICAgYWRkTWVzc2FnZSxcbiAgICAgIGhhbmRsZVN0cmVhbUVycm9yLFxuICAgICAgaGFuZGxlU3RyZWFtVXBkYXRlLFxuICAgICAgaGFuZGxlU3RyZWFtRmluaXNoLFxuICAgICAgaGFuZGxlQXBwcm92YWxSZXF1aXJlZCxcbiAgICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5LFxuICAgICAgdCxcbiAgICBdXG4gIClcblxuICBjb25zdCBpbml0aWFsaXplQ2hhdCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWZpcnN0VGltZVJlZi5jdXJyZW50KSB7XG4gICAgICBmaXJzdFRpbWVSZWYuY3VycmVudCA9IHRydWVcbiAgICB9XG4gICAgaWYgKGluaXRpYWxDaGF0SWQpIHtcbiAgICAgIGF3YWl0IGxvYWRNZXNzYWdlcygpXG4gICAgfSBlbHNlIGlmICh1c2VySW5pdGlhbE1lc3NhZ2UpIHtcbiAgICAgIGNvbnN0IGhhc0luaXRpYWxNZXNzYWdlID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2UubWVzc2FnZT8udHJpbSgpKVxuICAgICAgY29uc3QgaGFzSW5pdGlhbEF0dGFjaG1lbnRzID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHM/Lmxlbmd0aClcbiAgICAgIGNvbnN0IGhhc0luaXRpYWxGYXEgPSBCb29sZWFuKHVzZXJJbml0aWFsTWVzc2FnZS5mYXFJZClcbiAgICAgIGNvbnN0IGhhc0luaXRpYWxGdWEgPSBCb29sZWFuKHVzZXJJbml0aWFsTWVzc2FnZS5mdWFJZClcbiAgICAgIGNvbnN0IGhhc0luaXRpYWxTYyA9IEJvb2xlYW4odXNlckluaXRpYWxNZXNzYWdlLnNjSWQpXG5cbiAgICAgIGlmICghaGFzSW5pdGlhbE1lc3NhZ2UgJiYgIWhhc0luaXRpYWxBdHRhY2htZW50cyAmJiAhaGFzSW5pdGlhbEZhcSAmJiAhaGFzSW5pdGlhbEZ1YSAmJiAhaGFzSW5pdGlhbFNjKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgY29udGVudDogaGlzdG9yeU1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgcm9sZTogaGlzdG9yeU1lc3NhZ2UudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSA/IENoYXRIaXN0b3J5Um9sZS5VU0VSIDogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pKVxuXG4gICAgICBjb25zdCB7XG4gICAgICAgIGNoaXBzUHJvamVjdDogY3R4Q2hpcHNQcm9qZWN0LFxuICAgICAgICBwcm9qZWN0OiBjdHhQcm9qZWN0LFxuICAgICAgICBjbGllbnQ6IGN0eENsaWVudCxcbiAgICAgICAgdGFzazogY3R4VGFzayxcbiAgICAgIH0gPSBjb250ZXh0UmVmLmN1cnJlbnRcbiAgICAgIGNvbnN0IHByb2plY3RUb1JlcXVlc3QgPSByZXNvbHZlUHJvamVjdFRvUmVxdWVzdChjdHhDaGlwc1Byb2plY3QsIG51bGwpID8/IGN0eFByb2plY3Q/LmlkID8/IG51bGxcblxuICAgICAgY29uc29sZS5pbmZvKCdbdXNlQ2hhdE1hbmFnZXJdIFBBVEg9aW5pdGlhbGl6ZUNoYXQvdXNlckluaXRpYWxNZXNzYWdlIOKAlCBjb250ZXh0UmVmIHJlc29sdXRpb246Jywge1xuICAgICAgICBwcm9qZWN0UHJvcElkOiBjdHhQcm9qZWN0Py5pZCA/PyBudWxsLFxuICAgICAgICBjbGllbnRJZDogY3R4Q2xpZW50Py5pZCA/PyBudWxsLFxuICAgICAgICB0YXNrSWQ6IGN0eFRhc2s/LmlkID8/IG51bGwsXG4gICAgICAgIGNoaXBzUHJvamVjdElkOiBjdHhDaGlwc1Byb2plY3Q/LnByb2plY3RJZCA/PyBudWxsLFxuICAgICAgICBwcm9qZWN0VG9SZXF1ZXN0LFxuICAgICAgICBhZ2VudFR5cGU6IGFnZW50Py50eXBlLFxuICAgICAgfSlcblxuICAgICAgYXNrTWFpYSh7XG4gICAgICAgIG1lc3NhZ2U6IHVzZXJJbml0aWFsTWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICBoaXN0b3J5LFxuICAgICAgICBwcm9qZWN0SWQ6IHByb2plY3RUb1JlcXVlc3QsXG4gICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgIHVzZXJJZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgZmlyc3ROYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgICAgIGxhc3ROYW1lOiBhdXRoVXNlci5sYXN0TmFtZSxcbiAgICAgICAgY29tcGFueUlkOiBhdXRoVXNlci5jb21wYW55X2lkLnRvU3RyaW5nKCksXG4gICAgICAgIGNoYXRJZDogY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgICAgICBtZXNzYWdlSWQ6IGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCxcbiAgICAgICAgYWdlbnROYW1lOiBhZ2VudD8ubmFtZSEsXG4gICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCEsXG4gICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlOiBpc1dlYlNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmU6IGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAuLi4oY3R4UHJvamVjdD8uZmVlSWQgIT0gbnVsbCA/IHsgZmVlSWQ6IE51bWJlcihjdHhQcm9qZWN0LmZlZUlkKSB9IDoge30pLFxuICAgICAgICAuLi5yZXNvbHZlQ2xpZW50UGF5bG9hZChjdHhDbGllbnQsIGN0eFByb2plY3QpLFxuICAgICAgICAuLi4oY3R4UHJvamVjdD8ubmFtZSA/IHsgcHJvamVjdE5hbWU6IGN0eFByb2plY3QubmFtZSB9IDoge30pLFxuICAgICAgICAuLi4oY3R4VGFzaz8uaWQgIT0gbnVsbFxuICAgICAgICAgID8geyB0YXNrSWQ6IE51bWJlcihjdHhUYXNrLmlkKSwgLi4uKGN0eFRhc2submFtZSA/IHsgdGFza05hbWU6IGN0eFRhc2submFtZSB9IDoge30pIH1cbiAgICAgICAgICA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyA/IHsgYXR0YWNobWVudHM6IHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmZhcUlkID8geyBmYXFJZDogdXNlckluaXRpYWxNZXNzYWdlLmZhcUlkIH0gOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuYWdlbnRTdWdnZXN0aW9uSWQgPyB7IGFnZW50U3VnZ2VzdGlvbklkOiB1c2VySW5pdGlhbE1lc3NhZ2UuYWdlbnRTdWdnZXN0aW9uSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5mdWFJZCA/IHsgZnVhSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5mdWFJZCB9IDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLnNjSWQgPyB7IHNjSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5zY0lkIH0gOiB7fSksXG4gICAgICAgIC4uLihhZ2VudD8uZW50aXR5ICE9IG51bGwgPyB7IGFnZW50RW50aXR5OiBhZ2VudC5lbnRpdHkgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50Py50eXBlICE9IG51bGwgPyB7IGFnZW50VHlwZTogYWdlbnQudHlwZSB9IDoge30pLFxuICAgICAgICAuLi4oYnVpbGRDb250ZXh0TWVzc2FnZSh1c2VySW5pdGlhbE1lc3NhZ2UubWVudGlvbnMpXG4gICAgICAgICAgPyB7IGNvbnRleHRNZXNzYWdlOiBidWlsZENvbnRleHRNZXNzYWdlKHVzZXJJbml0aWFsTWVzc2FnZS5tZW50aW9ucykgfVxuICAgICAgICAgIDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmNvbnRleHREYXRhID8geyBjb250ZXh0RGF0YTogdXNlckluaXRpYWxNZXNzYWdlLmNvbnRleHREYXRhIH0gOiB7fSksXG4gICAgICB9KVxuICAgIH1cbiAgfSwgW1xuICAgIGluaXRpYWxDaGF0SWQsXG4gICAgdXNlckluaXRpYWxNZXNzYWdlLFxuICAgIHByb2plY3QsXG4gICAgY2xpZW50LFxuICAgIHRhc2ssXG4gICAgYXV0aFVzZXIsXG4gICAgYWdlbnQsXG4gICAgYXNrTWFpYSxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gIF0pXG5cbiAgY29uc3QgcmVzZXRDaGF0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGFib3J0U3RyZWFtU2lsZW50bHlSZWYuY3VycmVudCgpXG4gICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gdXVpZHY0KClcbiAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBudWxsXG4gICAgY3VycmVudENoYXRJZC5jdXJyZW50ID0gdXVpZHY0KClcbiAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSBmYWxzZVxuICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICBzdHJlYW1pbmdTdG9yZS5jbGVhcigpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHN0b3BHZW5lcmF0aW9uID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHN0b3BTdHJlYW1pbmcoKVxuICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgfSwgW3N0b3BTdHJlYW1pbmddKVxuXG4gIHJldHVybiB7XG4gICAgbWVzc2FnZXMsXG4gICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgIGlzTG9hZGluZ01vcmVNZXNzYWdlcyxcbiAgICB3YWl0aW5nUmVzcG9uc2UsXG4gICAgaXNXcml0aW5nLFxuICAgIGxvYWRpbmdNZXNzYWdlLFxuICAgIHN0cmVhbUFjdGl2aXR5LFxuICAgIGFjdGl2ZUxvYWRpbmdzLFxuICAgIGN1cnJlbnRQcm9qZWN0LFxuICAgIGN1cnJlbnRDaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICBjdXJyZW50TWVzc2FnZUlkOiBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQsXG5cbiAgICBzZW5kTWVzc2FnZSxcbiAgICBjaGFuZ2VQcm9qZWN0LFxuICAgIGhhbmRsZUZlZWRiYWNrLFxuICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb24sXG4gICAgaGFuZGxlU2Nyb2xsLFxuICAgIGluaXRpYWxpemVDaGF0LFxuICAgIHJlc2V0Q2hhdCxcbiAgICBzdG9wR2VuZXJhdGlvbixcblxuICAgIGlzRGlzYWJsZWQ6IHdhaXRpbmdSZXNwb25zZSB8fCBsb2FkaW5nTWVzc2FnZXMsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNB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
1348
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidjQiLCJ1dWlkdjQiLCJ1c2VDaGF0TWVzc2FnZXMiLCJ1c2VPcmNoZXN0cmF0b3JTdHJlYW0iLCJ1c2VUIiwidXNlVXNlciIsInVzZUdsb2JhbENvbnRleHQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsIm1haWEiLCJGZWVkYmFjayIsIkNoYXRIaXN0b3J5Um9sZSIsImJ1aWxkQ29udGV4dE1lc3NhZ2UiLCJmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5IiwidXNlUHJvamVjdHMiLCJ1c2VUYWJUYXNrRGVmYXVsdCIsIlRBU0tfVVJMX1JFR0VYX1BBVFRFUk4iLCJmZXRjaEFnZW50RGV0YWlsIiwiYnVpbGRIaXRsQWN0aW9uVHlwZUxpc3QiLCJnZXRIaXRsQW5hbHl0aWNzQWdlbnRUeXBlIiwiZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSIsImdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSIsInJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5IiwicmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHkiLCJzdHJlYW1pbmdTdG9yZSIsImlzQ29tcGxldGVMaWtlU3NlUGF5bG9hZCIsIm1lcmdlU3RyZWFtQ2h1bmsiLCJub3JtYWxpemVTZW5kTWVzc2FnZUFyZ3MiLCJhdHRhY2htZW50c09yT3B0aW9ucyIsIl9vcHRpb25zJGF0dGFjaG1lbnRzIiwiQXJyYXkiLCJpc0FycmF5IiwiYXR0YWNobWVudHMiLCJvcHRpb25zIiwicmVzb2x2ZVByb2plY3RUb1JlcXVlc3QiLCJjaGlwc1Byb2plY3QiLCJsYXN0TWVzc2FnZVByb2plY3RJZCIsImNoaXBzUHJvamVjdElkIiwicHJvamVjdElkIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJwYXJzZWQiLCJyZXNvbHZlQ2xpZW50UGF5bG9hZCIsImN0eENsaWVudCIsImN0eFByb2plY3QiLCJfY3R4UHJvamVjdCRjbGllbnQiLCJpZCIsIl9vYmplY3RTcHJlYWQiLCJjbGllbnRJZCIsIm5hbWUiLCJjbGllbnROYW1lIiwiY2xpZW50Iiwibm9ybWFsaXplQXNzaXN0YW50QXR0YWNobWVudHMiLCJyYXdBdHRhY2htZW50cyIsImZpbHRlciIsImF0dGFjaG1lbnQiLCJfdHlwZW9mIiwibWFwIiwiaW5kZXgiLCJ0cmltIiwiY29uY2F0IiwidHlwZSIsIm1pbWVUeXBlIiwibWltZV90eXBlIiwiZnVsbEZpbGVOYW1lIiwiaW5jbHVkZXMiLCJudW1lcmljU2l6ZSIsInNpemUiLCJmaWxlIiwiRmlsZSIsInVybF9vcmlnaW5hbCIsInVuZGVmaW5lZCIsInVybF90aHVtYm5haWwiLCJ1cmxfZmlsZSIsInJvbGUiLCJleHRyYWN0VGFza0lkc0Zyb21QZW5kaW5nQWN0aW9uc0FyZ3MiLCJwZW5kaW5nQWN0aW9ucyIsImlkcyIsInB1c2hJZCIsInJhdyIsIm4iLCJwYXJzZUludCIsIlN0cmluZyIsImlzTmFOIiwicHVzaCIsImZvckVhY2giLCJhY3Rpb24iLCJfcmVjJHRhc2tfaWQiLCJhcmdzIiwidG9vbF9hcmdzIiwicmVjIiwidGFza19pZCIsInRhc2tfaWRzIiwidGFza3MiLCJ0IiwiX3RyZWMkdGFza19pZCIsInRyZWMiLCJleHRyYWN0VGFza0lkc0Zyb21EZWxldGVQZW5kaW5nQWN0aW9ucyIsInRvb2xfbmFtZSIsIl9yZWMkdGFza19pZDIiLCJsaXN0IiwidGlkIiwiZXh0cmFjdEFnZW50SWRGcm9tRWRpdEFnZW50UGVuZGluZ0FjdGlvbnMiLCJfcmVjJGFnZW50X2lkIiwiZWRpdEFjdGlvbiIsImZpbmQiLCJhIiwidG9Mb3dlckNhc2UiLCJhZ2VudF9pZCIsImFnZW50SWQiLCJleHRyYWN0QWdlbnRJZEZyb21QZW5kaW5nQWN0aW9uc0J5VG9vbE5hbWUiLCJ0b29sTmFtZSIsIl9yZWYiLCJfcmVjJGFnZW50X2lkMiIsImV4dHJhY3RUYXNrSWRzRnJvbUFzc2lzdGFudERlbGV0aW9uVGV4dCIsInRleHQiLCJsYWJlbGVkIiwibWF0Y2giLCJib2xkIiwidXNlU3RhYmxlQ2FsbGJhY2tzIiwiYXV0aFVzZXIiLCJjdXJyZW50VXNlciIsInRvU3RyaW5nIiwiZmlyc3ROYW1lIiwiYXZhdGFyIiwicGljdHVyZSIsImN1cnJlbnQiLCJwYXJzZVNTRUxpbmUiLCJsaW5lIiwiX2xpbmUkc3BsaXQiLCJzcGxpdCIsIl9saW5lJHNwbGl0MiIsIl9zbGljZWRUb0FycmF5IiwiZXZlbnRMaW5lIiwiZGF0YUxpbmUiLCJldmVudFR5cGUiLCJyZXBsYWNlIiwiZGF0YVN0ciIsImRhdGEiLCJKU09OIiwicGFyc2UiLCJwYXJzZUVycm9yIiwiY29uc29sZSIsImVycm9yIiwicHJvY2Vzc1NTRVN0cmVhbSIsIl9yZWYyIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJyZXNwb25zZSIsInRocmVhZElkIiwiY2FsbGJhY2tzIiwiX3Jlc3BvbnNlJGJvZHkiLCJyZWFkZXIiLCJkZWNvZGVyIiwiYnVmZmVyIiwiYWNjdW11bGF0ZWRDb250ZW50IiwiaXNTdHJlYW1Db21wbGV0ZSIsImhhbmRsZUxpbmUiLCJfeWllbGQkcmVhZGVyJHJlYWQiLCJkb25lIiwidmFsdWUiLCJsaW5lcyIsImkiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsIl9oYW5kbGVMaW5lIiwiZXZlbnREYXRhIiwib25UaGlua2luZyIsImNvbnRlbnQiLCJvblRva2VuIiwiX2V2ZW50RGF0YSRhZ2VudF9pZCIsImZpbmFsQ29udGVudCIsInNvdXJjZXMiLCJtZW1vcnlTZXNzaW9uSWQiLCJtZW1vcnlfc2Vzc2lvbl9pZCIsInN1Z2dlc3Rpb25zIiwic3VnZ2VzdF9yZXBseSIsImFnZW50SWRSYXciLCJjb21wbGV0ZWRBZ2VudElkIiwib25Db21wbGV0ZSIsIm1lc3NhZ2UiLCJvbk5vZGUiLCJfZXZlbnREYXRhJGFnZW50X2lkMiIsIl9jYWxsYmFja3Mkb25BcHByb3ZhbCIsIm9uQXBwcm92YWxSZXF1aXJlZCIsImNhbGwiLCJvbkVycm9yIiwiYm9keSIsImdldFJlYWRlciIsIkVycm9yIiwiVGV4dERlY29kZXIiLCJyZWFkIiwic2VudCIsImFicnVwdCIsImRlY29kZSIsInN0cmVhbSIsInBvcCIsImxlbmd0aCIsInN0b3AiLCJfeCIsIl94MiIsIl94MyIsImFwcGx5IiwiYXJndW1lbnRzIiwidXNlQ2hhdE1hbmFnZXIiLCJfcmVmMyIsImluaXRpYWxDaGF0SWQiLCJjaGF0SWQiLCJ1c2VySW5pdGlhbE1lc3NhZ2UiLCJfcmVmMyRhZ2VudHMiLCJhZ2VudHMiLCJfdXNlVCIsIl91c2VHbG9iYWxDb250ZXh0IiwicHJvamVjdCIsInNldFByb2plY3QiLCJzZXRDbGllbnQiLCJ0YXNrIiwic2V0VGFzayIsImFnZW50IiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJpc0RlZXBTZWFyY2hBY3RpdmUiLCJzZXRDaGlwc1Byb2plY3QiLCJldmVudCIsIl91c2VQcm9qZWN0cyIsImZldGNoUHJvamVjdHMiLCJfdXNlU3RhYmxlQ2FsbGJhY2tzIiwiX3VzZVRhYlRhc2tEZWZhdWx0IiwiZ2V0VGFiVGFza0RlZmF1bHQiLCJfY2hpcHNQcm9qZWN0JHByb2plY3QiLCJfY2hpcHNQcm9qZWN0JHByb2plY3QyIiwiX3Byb2plY3QkaWQiLCJfY2xpZW50JGlkIiwiX3Rhc2skaWQiLCJpbmZvIiwiY2hpcHNQcm9qZWN0TmFtZSIsInByb2plY3ROYW1lIiwicHJvamVjdFByb3BJZCIsInRhc2tJZCIsImN1cnJlbnRNZXNzYWdlSWQiLCJjdXJyZW50VXNlclF1ZXN0aW9uIiwiY3VycmVudENoYXRJZCIsInJlcG9ydGVkRXZlbnQiLCJtZXNzYWdlc1JlZiIsImxhc3RNYW51YWxBcHByb3ZhbFJlZiIsImhpdGxFeGVjdXRpb25Db250ZXh0UmVmIiwiaXNQcm9jZXNzaW5nUmVmIiwiZmlyc3RUaW1lUmVmIiwic3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZiIsImFjdGl2ZVN0cmVhbUNoYXRJZFJlZiIsImFib3J0U3RyZWFtU2lsZW50bHlSZWYiLCJjbGVhclN0cmVhbVVpUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImFjdGl2ZUxvYWRpbmdzIiwic2V0QWN0aXZlTG9hZGluZ3MiLCJpc1dlYlNlYXJjaEFjdGl2ZVJlZiIsImlzRGVlcFNlYXJjaEFjdGl2ZVJlZiIsImNvbnRleHRSZWYiLCJfdXNlQ2hhdE1lc3NhZ2VzIiwibG9hZGluZ01lc3NhZ2VzIiwibWVzc2FnZXMiLCJpc0xvYWRpbmdNb3JlTWVzc2FnZXMiLCJsb2FkTWVzc2FnZXMiLCJhZGRNZXNzYWdlIiwicmVtb3ZlTWVzc2FnZSIsImhhbmRsZVNjcm9sbCIsImN1c3RvbUV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJkZXRhaWwiLCJkb2N1bWVudCIsImRpc3BhdGNoRXZlbnQiLCJjbGVhciIsImhhbmRsZVN0cmVhbUVycm9yIiwiZXJyb3JNZXNzYWdlIiwiZXJyb3JSYXdNZXNzYWdlIiwiX2Vycm9yUmF3TWVzc2FnZSRtYXRjIiwiX2Vycm9yUmF3TWVzc2FnZSRtYXRjMiIsInRlbXBNZXNzYWdlSWQiLCJ1c2VkIiwiaXNFcnJvciIsImRhdGUiLCJEYXRlIiwidXNlciIsIkFTU0lTVEFOVCIsImhhbmRsZVN0cmVhbVVwZGF0ZSIsInN0YXJ0Iiwic2V0VGV4dCIsImhhbmRsZVN0cmVhbUZpbmlzaCIsIl9yZWY0IiwiX2NhbGxlZTIiLCJfcHJldmlvdXNNZXNzYWdlJGFwcHIiLCJfd2luZG93JHRhc2tQYW5lbCIsIl9jcmVhdGVBZ2VudEZvbGxvd1VwIiwiX2VkaXRBZ2VudEZvbGxvd1VwIiwidGFza1VybFJlZ2V4IiwibWF0Y2hlcyIsImNvbnRlbnRUb0FkZCIsInByZXZpb3VzTWVzc2FnZSIsImhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UiLCJUQVNLX0NSRUFUSU9OX1RPT0xTIiwiVEFTS19FRElUX1RPT0xTIiwiVEFTS19ERUxFVEVfVE9PTFMiLCJ3YXNUYXNrQ3JlYXRpb24iLCJ3YXNUYXNrRWRpdCIsIndhc1Rhc2tEZWxldGUiLCJ3YXNDcmVhdGVBZ2VudEFwcHJvdmVkIiwid2FzQ29uZmlndXJlQWdlbnRBY2Nlc3NBcHByb3ZlZCIsImNyZWF0ZUFnZW50Rm9sbG93VXAiLCJjb25maWd1cmVkQWdlbnRJZCIsIndhc0VkaXRBZ2VudEFwcHJvdmVkIiwiZWRpdEFnZW50Rm9sbG93VXAiLCJmcm9tU3RyZWFtIiwiZnJvbUFyZ3MiLCJyZXNvbHZlZEFnZW50SWQiLCJ0YXNrSWRzRnJvbVVybHMiLCJ0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsIiwidGFza0lkc0Zyb21EZWxldGlvblRleHQiLCJ0YXNrSWRzRm9yRGFzaGJvYXJkIiwic2hvdWxkU3luY0Rhc2hib2FyZCIsInRhc2tJZHMiLCJ0YWIiLCJ0YWJTZWdtZW50IiwibGFzdFByb2plY3RNZXNzYWdlIiwiY29udGV4dFByb2plY3RJZFJhdyIsImNvbnRleHRQcm9qZWN0SWQiLCJwYXRoTWF0Y2giLCJyb3V0ZVByb2plY3RJZCIsImlzT25Qcm9qZWN0Um91dGUiLCJfd2luZG93JG5ld1Byb2plY3REYXMiLCJfd2luZG93JG5ld1Byb2plY3REYXMyIiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzMyIsIl93aW5kb3ckbmV3UHJvamVjdERhczQiLCJfd2luZG93JG5ld1Byb2plY3REYXM1IiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzNiIsIm9wZW5UYXNrUGFuZWxJZCIsIm1hbnVhbEFwcHJvdmFsIiwibWFudWFsV2FzVGFza0VkaXQiLCJtYW51YWxXYXNUYXNrRGVsZXRlIiwiX21hbnVhbEFwcHJvdmFsJHRvb2xBIiwibWFudWFsUHNldWRvQWN0aW9uIiwiYWZmZWN0ZWRUYXNrSWRzIiwiX3dpbmRvdyR0YXNrUGFuZWwyIiwiX3dpbmRvdyR0YXNrUGFuZWwyJHJlIiwiX2NvbnRleHQyIiwiUmVnRXhwIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwibWF0Y2hBbGwiLCJtIiwiYXQiLCJhcHByb3ZhbCIsInBlbmRpbmdfYWN0aW9ucyIsInNvbWUiLCJhcHByb3ZhbFN0YXR1cyIsIndpbmRvdyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJhaUNoYXRIaXRsT3B0aW9uIiwiYWdlbnRfdHlwZSIsImFjdGlvbl90eXBlIiwiZGVjaXNpb24iLCJvcHRpb24iLCJjcmVhdGVkX2FnZW50X2lkIiwidXJsIiwibXNnIiwibG9jYXRpb24iLCJwYXRobmFtZSIsIm5ld1Byb2plY3REYXNoYm9hcmQiLCJhZGRFeGlzdGluZ1Rhc2tUb0Rhc2hib2FyZCIsImVkaXRFeGlzdGluZ1Rhc2tJbkRhc2hib2FyZCIsImRlbGV0ZUV4aXN0aW5nVGFza0Zyb21EYXNoYm9hcmQiLCJ0YXNrUGFuZWwiLCJ0b29sQXJncyIsInJlZmV0Y2hUYXNrIiwidGhlbiIsImNoYXRBZ2VudCIsImVyciIsIl94NCIsIl94NSIsIl94NiIsIl94NyIsIl94OCIsIl94OSIsImhhbmRsZVN0cmVhbVN0b3AiLCJpc0Zyb250ZW5kQ2FuY2VsbGVkIiwic2V0VGltZW91dCIsImhhbmRsZUFwcHJvdmFsUmVxdWlyZWQiLCJfYXBwcm92YWwkcGVuZGluZ19hY3QiLCJoaXRsQ29udGV4dCIsIm1lc3NhZ2VJZCIsIm9yaWdpbmFsX3RocmVhZF9pZCIsIm1lc3NhZ2VUZXh0IiwidGhyZWFkSWRzIiwidGhyZWFkX2lkIiwibWFudWFsX2FwcHJvdmFsX2RldGVjdGVkIiwiX2FwcHJvdmFsJHBlbmRpbmdfYWN0MiIsIl9yZWY1IiwiX3Rvb2xfbmFtZSIsIl90b29sX2FyZ3MiLCJmaXJzdEFjdGlvbiIsIl91c2VPcmNoZXN0cmF0b3JTdHJlYSIsIm9uU3RyZWFtVXBkYXRlIiwib25GaW5pc2hTdHJlYW0iLCJvblN0b3AiLCJhc2tNYWlhIiwid2FpdGluZ1Jlc3BvbnNlIiwiaXNMb2FkaW5nIiwiaXNXcml0aW5nIiwibG9hZGluZ01lc3NhZ2UiLCJzdHJlYW1BY3Rpdml0eSIsInVwZGF0ZVN0cmVhbUFjdGl2aXR5Iiwic3RvcFN0cmVhbWluZyIsImFib3J0U3RyZWFtU2lsZW50bHkiLCJjdXJyZW50UHJvamVjdCIsInNlbmRNZXNzYWdlIiwiX3JlZjYiLCJfY2FsbGVlMyIsImZhcUlkIiwiYWdlbnRTdWdnZXN0aW9uSWQiLCJtZW50aW9ucyIsImZ1YUlkIiwic2NJZCIsIl9tZXNzYWdlc1JlZiRjdXJyZW50IiwiX25vcm1hbGl6ZVNlbmRNZXNzYWdlIiwiZWZmZWN0aXZlTWVudGlvbnMiLCJjb250ZXh0TWVzc2FnZSIsInBheWxvYWRGdWFJZCIsInBheWxvYWRTY0lkIiwicGF5bG9hZENvbnRleHREYXRhIiwiZGlzcGxheU1lc3NhZ2UiLCJuZXdNZXNzYWdlSWQiLCJsYXN0TWVzc2FnZVdpdGhQcm9qZWN0IiwiY3VycmVudEFnZW50RnJvbU1lc3NhZ2VzIiwic3RyZWFtaW5nUGxhY2Vob2xkZXJJZCIsImZpbmFsTWVzc2FnZSIsIl9vcHRpb25zJHByb2plY3RDaGFuZyIsIl9jb250ZXh0UmVmJGN1cnJlbnQkcCIsImhpc3RvcnkiLCJfY29udGV4dFJlZiRjdXJyZW50IiwiY3R4Q2hpcHNQcm9qZWN0IiwiY3R4VGFzayIsInByb2plY3RUb1JlcXVlc3QiLCJwcm9qZWN0cyIsInBheWxvYWRGYXFJZCIsInBheWxvYWRBZ2VudFN1Z2dlc3Rpb25JZCIsInBheWxvYWREYXRhIiwiX2NvbnRleHQzIiwiY29udGV4dERhdGEiLCJwbUFpVHlwZWRUZXh0IiwiVVNFUiIsInByb2plY3RDaGFuZ2VkIiwiaW5jb21lVHlwZSIsImhpc3RvcnlNZXNzYWdlIiwiYWdlbnRUeXBlIiwibGFuZyIsInVzZXJJZCIsImxhc3ROYW1lIiwiY29tcGFueUlkIiwiY29tcGFueV9pZCIsImFnZW50TmFtZSIsImZlZUlkIiwidGFza05hbWUiLCJlbnRpdHkiLCJhZ2VudEVudGl0eSIsIl94MCIsIl94MSIsIl94MTAiLCJfeDExIiwiX3gxMiIsIl94MTMiLCJfeDE0IiwiY2hhbmdlUHJvamVjdCIsIl9wcm9qZWN0JGlkMiIsIl9jaGlwc1Byb2plY3QkcHJvamVjdDMiLCJvcHRpb25JZCIsImhhbmRsZUZlZWRiYWNrIiwiX3JlZjciLCJfY2FsbGVlNCIsImZlZWRiYWNrUHJvcCIsImNoYXRNZXNzYWdlSWQiLCJfY29udGV4dDQiLCJDaGF0cyIsIndhc0hlbHBmdWxDaGF0IiwiVEhVTUJTX1VQIiwid2FzSGVscGZ1bCIsIl94MTUiLCJfeDE2IiwiaGFuZGxlQXBwcm92YWxEZWNpc2lvbiIsIl9yZWY4IiwiX2NhbGxlZTUiLCJlZGl0ZWRBY3Rpb25zIiwibWVzc2FnZVdpdGhBcHByb3ZhbCIsImxvYWRpbmdLZXkiLCJpbml0aWFsQWN0aXZpdHkiLCJleGlzdGluZ01lc3NhZ2UiLCJuZXdTdGF0dXMiLCJfdCIsIl9jb250ZXh0NSIsIl9tJGFwcHJvdmFsIiwiX2RlZmluZVByb3BlcnR5IiwiT3JjaGVzdHJhdG9yIiwiY29udGludWVUaHJlYWQiLCJzZXNzaW9uSWQiLCJzZXNzaW9uX2lkIiwib2siLCJhY3Rpdml0eSIsInBoYXNlIiwiY3VycmVudFRocmVhZElkIiwibm9kZUFjdGl2aXR5IiwidXNlUmVzdW1pbmdGYWxsYmFjayIsIm5ld0xvYWRpbmdzIiwiYXBwcm92YWxQYXlsb2FkIiwiZmluaXNoIiwiX3gxNyIsIl94MTgiLCJfeDE5IiwiaW5pdGlhbGl6ZUNoYXQiLCJfY2FsbGVlNiIsIl91c2VySW5pdGlhbE1lc3NhZ2UkbSIsIl91c2VySW5pdGlhbE1lc3NhZ2UkYSIsIl9yZWYwIiwiX3Jlc29sdmVQcm9qZWN0VG9SZXF1IiwiX2N0eFByb2plY3QkaWQiLCJfY3R4Q2xpZW50JGlkIiwiX2N0eFRhc2skaWQiLCJfY3R4Q2hpcHNQcm9qZWN0JHByb2oiLCJoYXNJbml0aWFsTWVzc2FnZSIsImhhc0luaXRpYWxBdHRhY2htZW50cyIsImhhc0luaXRpYWxGYXEiLCJoYXNJbml0aWFsRnVhIiwiaGFzSW5pdGlhbFNjIiwiX2NvbnRleHRSZWYkY3VycmVudDIiLCJfY29udGV4dDYiLCJCb29sZWFuIiwicmVzZXRDaGF0Iiwic3RvcEdlbmVyYXRpb24iLCJpc0Rpc2FibGVkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZUNoYXRNYW5hZ2VyL3VzZUNoYXRNYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJhZGl4ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGVkLW9wdGlvbmFsLWNoYWluICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJ1xuaW1wb3J0IHsgdXNlQ2hhdE1lc3NhZ2VzIH0gZnJvbSAnLi4vdXNlQ2hhdE1lc3NhZ2VzJ1xuaW1wb3J0IHsgdXNlT3JjaGVzdHJhdG9yU3RyZWFtIH0gZnJvbSAnLi4vdXNlT3JjaGVzdHJhdG9yU3RyZWFtJ1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uL3VzZVQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IFNlbmRNZXNzYWdlT3B0aW9ucywgVXNlQ2hhdE1hbmFnZXJQcm9wcyB9IGZyb20gJy4vdXNlQ2hhdE1hbmFnZXIuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgdXNlVXNlciwgQ09SVXNlciB9IGZyb20gJy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi91c2VFdmVudCdcbmltcG9ydCBtYWlhIGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEnXG5pbXBvcnQgeyBGZWVkYmFjayB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL01lc3NhZ2VGZWVkYmFjay9NZXNzYWdlRmVlZGJhY2snXG5pbXBvcnQgeyBDaGF0TWVzc2FnZSwgQ2hhdE1lc3NhZ2VVc2VyLCBDaGF0SGlzdG9yeVJvbGUsIEFwcHJvdmFsUmVxdWVzdCwgUGVuZGluZ0FjdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzL0NoYXQnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiwgQ29udGV4dE1lc3NhZ2UsIGJ1aWxkQ29udGV4dE1lc3NhZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IGZvcm1hdFF1aWNrQWN0aW9uTWVzc2FnZUZvckRpc3BsYXkgfSBmcm9tICcuLi8uLi91dGlscy9mb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2UnXG5cbmltcG9ydCB7IFByb2plY3QgfSBmcm9tICcuLi8uLi90eXBlcy9Qcm9qZWN0J1xuaW1wb3J0IHsgdXNlUHJvamVjdHMgfSBmcm9tICcuLi91c2VQcm9qZWN0cydcbmltcG9ydCB7IHVzZVRhYlRhc2tEZWZhdWx0IH0gZnJvbSAnLi4vdXNlVGFiVGFza0RlZmF1bHQnXG5pbXBvcnQgeyBUQVNLX1VSTF9SRUdFWF9QQVRURVJOIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3Rhc2tVcmxzJ1xuaW1wb3J0IHsgZmV0Y2hBZ2VudERldGFpbCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEvQWdlbnRzL2ZldGNoQWdlbnREZXRhaWwnXG5pbXBvcnQgeyBidWlsZEhpdGxBY3Rpb25UeXBlTGlzdCwgZ2V0SGl0bEFuYWx5dGljc0FnZW50VHlwZSB9IGZyb20gJy4uLy4uL3V0aWxzL2hpdGxBbmFseXRpY3MnXG5pbXBvcnQgdHlwZSB7IFN0cmVhbUFjdGl2aXR5IH0gZnJvbSAnLi4vLi4vdHlwZXMvc3RyZWFtQWN0aXZpdHknXG5pbXBvcnQge1xuICBnZXRUaGlua2luZ0xvYWRpbmdNZXNzYWdlLFxuICBnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHksXG4gIHJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5LFxuICByZXNvbHZlSW5pdGlhbEhpdGxTdHJlYW1BY3Rpdml0eSxcbiAgdHlwZSBIaXRsRXhlY3V0aW9uQ29udGV4dCxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyZWFtQWN0aXZpdHlNZXNzYWdlcydcbmltcG9ydCB7IHN0cmVhbWluZ1N0b3JlIH0gZnJvbSAnLi4vdXNlU3RyZWFtaW5nTWVzc2FnZSdcbmltcG9ydCB7IGlzQ29tcGxldGVMaWtlU3NlUGF5bG9hZCwgbWVyZ2VTdHJlYW1DaHVuayB9IGZyb20gJy4uLy4uL3V0aWxzL3NzZVN0cmVhbUNvbnRlbnQnXG5cbnR5cGUgQXR0YWNobWVudHNPck9wdGlvbnMgPSBBdHRhY2htZW50RmlsZVtdIHwgU2VuZE1lc3NhZ2VPcHRpb25zXG5cbmNvbnN0IG5vcm1hbGl6ZVNlbmRNZXNzYWdlQXJncyA9IChhdHRhY2htZW50c09yT3B0aW9ucz86IEF0dGFjaG1lbnRzT3JPcHRpb25zKSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGF0dGFjaG1lbnRzT3JPcHRpb25zKSkge1xuICAgIHJldHVybiB7IGF0dGFjaG1lbnRzOiBhdHRhY2htZW50c09yT3B0aW9ucywgb3B0aW9uczoge30gYXMgU2VuZE1lc3NhZ2VPcHRpb25zIH1cbiAgfVxuXG4gIGNvbnN0IG9wdGlvbnM6IFNlbmRNZXNzYWdlT3B0aW9ucyA9IGF0dGFjaG1lbnRzT3JPcHRpb25zID8/IHt9XG4gIHJldHVybiB7IGF0dGFjaG1lbnRzOiBvcHRpb25zLmF0dGFjaG1lbnRzID8/IFtdLCBvcHRpb25zIH1cbn1cblxuLyoqIGNoaXBzUHJvamVjdCBlcyBsYSBmdWVudGUgZGUgdmVyZGFkIGRlbCBwaW4gdmlzaWJsZTsgc2kgbm8gaGF5IHBpbiwgcmVzdGF1cmFyIGRlc2RlIGhpc3RvcmlhbC4gKi9cbmNvbnN0IHJlc29sdmVQcm9qZWN0VG9SZXF1ZXN0ID0gKFxuICBjaGlwc1Byb2plY3Q6IHsgcHJvamVjdElkPzogc3RyaW5nIH0gfCBudWxsIHwgdW5kZWZpbmVkLFxuICBsYXN0TWVzc2FnZVByb2plY3RJZDogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogbnVtYmVyIHwgbnVsbCA9PiB7XG4gIGNvbnN0IGNoaXBzUHJvamVjdElkID0gY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgPyBOdW1iZXIoY2hpcHNQcm9qZWN0LnByb2plY3RJZCkgOiBudWxsXG4gIGlmIChjaGlwc1Byb2plY3RJZCAhPSBudWxsICYmIE51bWJlci5pc0Zpbml0ZShjaGlwc1Byb2plY3RJZCkpIHtcbiAgICByZXR1cm4gY2hpcHNQcm9qZWN0SWRcbiAgfVxuICBpZiAobGFzdE1lc3NhZ2VQcm9qZWN0SWQgIT0gbnVsbCkge1xuICAgIGNvbnN0IHBhcnNlZCA9IE51bWJlcihsYXN0TWVzc2FnZVByb2plY3RJZClcbiAgICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkgPyBwYXJzZWQgOiBudWxsXG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuY29uc3QgcmVzb2x2ZUNsaWVudFBheWxvYWQgPSAoXG4gIGN0eENsaWVudDogeyBpZD86IG51bWJlcjsgbmFtZT86IHN0cmluZyB9IHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgY3R4UHJvamVjdDogUHJvamVjdCB8IG51bGwgfCB1bmRlZmluZWRcbik6IHsgY2xpZW50SWQ/OiBudW1iZXI7IGNsaWVudE5hbWU/OiBzdHJpbmcgfSA9PiB7XG4gIGlmIChjdHhDbGllbnQ/LmlkKSB7XG4gICAgcmV0dXJuIHsgY2xpZW50SWQ6IGN0eENsaWVudC5pZCwgLi4uKGN0eENsaWVudC5uYW1lID8geyBjbGllbnROYW1lOiBjdHhDbGllbnQubmFtZSB9IDoge30pIH1cbiAgfVxuICBpZiAoY3R4UHJvamVjdD8uY2xpZW50SWQgIT0gbnVsbCkge1xuICAgIHJldHVybiB7IGNsaWVudElkOiBOdW1iZXIoY3R4UHJvamVjdC5jbGllbnRJZCkgfVxuICB9XG4gIGlmIChjdHhQcm9qZWN0Py5jbGllbnQ/LmlkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNsaWVudElkOiBjdHhQcm9qZWN0LmNsaWVudC5pZCxcbiAgICAgIC4uLihjdHhQcm9qZWN0LmNsaWVudC5uYW1lID8geyBjbGllbnROYW1lOiBjdHhQcm9qZWN0LmNsaWVudC5uYW1lIH0gOiB7fSksXG4gICAgfVxuICB9XG4gIHJldHVybiB7fVxufVxuXG5jb25zdCBub3JtYWxpemVBc3Npc3RhbnRBdHRhY2htZW50cyA9IChyYXdBdHRhY2htZW50czogdW5rbm93bik6IEF0dGFjaG1lbnRGaWxlW10gPT4ge1xuICBpZiAoIUFycmF5LmlzQXJyYXkocmF3QXR0YWNobWVudHMpKSB7XG4gICAgcmV0dXJuIFtdXG4gIH1cblxuICByZXR1cm4gcmF3QXR0YWNobWVudHNcbiAgICAuZmlsdGVyKChhdHRhY2htZW50KTogYXR0YWNobWVudCBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiAhIWF0dGFjaG1lbnQgJiYgdHlwZW9mIGF0dGFjaG1lbnQgPT09ICdvYmplY3QnKVxuICAgIC5tYXAoKGF0dGFjaG1lbnQsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBuYW1lID1cbiAgICAgICAgdHlwZW9mIGF0dGFjaG1lbnQubmFtZSA9PT0gJ3N0cmluZycgJiYgYXR0YWNobWVudC5uYW1lLnRyaW0oKSA/IGF0dGFjaG1lbnQubmFtZS50cmltKCkgOiBgZmlsZS0ke2luZGV4ICsgMX1gXG4gICAgICBjb25zdCB0eXBlID0gdHlwZW9mIGF0dGFjaG1lbnQudHlwZSA9PT0gJ3N0cmluZycgJiYgYXR0YWNobWVudC50eXBlLnRyaW0oKSA/IGF0dGFjaG1lbnQudHlwZS50cmltKCkgOiAncGRmJ1xuICAgICAgY29uc3QgbWltZVR5cGUgPSB0eXBlb2YgYXR0YWNobWVudC5taW1lX3R5cGUgPT09ICdzdHJpbmcnID8gYXR0YWNobWVudC5taW1lX3R5cGUgOiAnJ1xuICAgICAgY29uc3QgZnVsbEZpbGVOYW1lID0gbmFtZS5pbmNsdWRlcygnLicpID8gbmFtZSA6IGAke25hbWV9LiR7dHlwZX1gXG4gICAgICBjb25zdCBudW1lcmljU2l6ZSA9XG4gICAgICAgIHR5cGVvZiBhdHRhY2htZW50LnNpemUgPT09ICdudW1iZXInXG4gICAgICAgICAgPyBhdHRhY2htZW50LnNpemVcbiAgICAgICAgICA6IE51bWJlci5pc0Zpbml0ZShOdW1iZXIoYXR0YWNobWVudC5zaXplKSlcbiAgICAgICAgICAgID8gTnVtYmVyKGF0dGFjaG1lbnQuc2l6ZSlcbiAgICAgICAgICAgIDogMFxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBmaWxlOiBuZXcgRmlsZShbXSwgZnVsbEZpbGVOYW1lLCB7IHR5cGU6IG1pbWVUeXBlIH0pLFxuICAgICAgICBpZDpcbiAgICAgICAgICB0eXBlb2YgYXR0YWNobWVudC5pZCA9PT0gJ3N0cmluZycgJiYgYXR0YWNobWVudC5pZC50cmltKClcbiAgICAgICAgICAgID8gYXR0YWNobWVudC5pZFxuICAgICAgICAgICAgOiBgYXNzaXN0YW50LWZpbGUtJHtpbmRleH0tJHtmdWxsRmlsZU5hbWV9YCxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgc2l6ZTogbnVtZXJpY1NpemUsXG4gICAgICAgIHR5cGUsXG4gICAgICAgIHVybF9vcmlnaW5hbDogdHlwZW9mIGF0dGFjaG1lbnQudXJsX29yaWdpbmFsID09PSAnc3RyaW5nJyA/IGF0dGFjaG1lbnQudXJsX29yaWdpbmFsIDogdW5kZWZpbmVkLFxuICAgICAgICB1cmxfdGh1bWJuYWlsOiB0eXBlb2YgYXR0YWNobWVudC51cmxfdGh1bWJuYWlsID09PSAnc3RyaW5nJyA/IGF0dGFjaG1lbnQudXJsX3RodW1ibmFpbCA6IHVuZGVmaW5lZCxcbiAgICAgICAgdXJsX2ZpbGU6IHR5cGVvZiBhdHRhY2htZW50LnVybF9maWxlID09PSAnc3RyaW5nJyA/IGF0dGFjaG1lbnQudXJsX2ZpbGUgOiB1bmRlZmluZWQsXG4gICAgICAgIHJvbGU6IGF0dGFjaG1lbnQucm9sZSA9PT0gJ2Fzc2lzdGFudCcgPyAnYXNzaXN0YW50JyA6ICd1c2VyJyxcbiAgICAgIH1cbiAgICB9KVxufVxuXG4vKiogRXh0cmFlIHRhc2tfaWRzIGRlIGxvcyB0b29sX2FyZ3MgZGUgcGVuZGluZ19hY3Rpb25zLCBjdWJyaWVuZG8gbGFzIGZvcm1hcyBjb211bmVzOlxuICogIC0gYHsgdGFza19pZCB9YCBvIGB7IGlkIH1gXG4gKiAgLSBgeyB0YXNrX2lkczogW10gfWBcbiAqICAtIGB7IHRhc2tzOiBbeyB0YXNrX2lkfGlkIH0sIC4uLl0gfWBcbiAqICDDmnRpbCBwYXJhIHRvb2xzIGRlIGVkaXQvYXNzaWduL2RlbGV0ZSBjdWFuZG8gbGEgcmVzcHVlc3RhIGRlbCBMTE0gbm8gaW5jbHV5ZSBVUkxzIC90YXNrcy8uLi4vZGV0YWlsLiAqL1xuZnVuY3Rpb24gZXh0cmFjdFRhc2tJZHNGcm9tUGVuZGluZ0FjdGlvbnNBcmdzKHBlbmRpbmdBY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10pOiBudW1iZXJbXSB7XG4gIGNvbnN0IGlkczogbnVtYmVyW10gPSBbXVxuICBjb25zdCBwdXNoSWQgPSAocmF3OiB1bmtub3duKSA9PiB7XG4gICAgaWYgKHJhdyA9PSBudWxsKSByZXR1cm5cbiAgICBjb25zdCBuID0gcGFyc2VJbnQoU3RyaW5nKHJhdyksIDEwKVxuICAgIGlmICghTnVtYmVyLmlzTmFOKG4pKSBpZHMucHVzaChuKVxuICB9XG4gIHBlbmRpbmdBY3Rpb25zLmZvckVhY2goYWN0aW9uID0+IHtcbiAgICBpZiAoIWFjdGlvbiB8fCB0eXBlb2YgYWN0aW9uICE9PSAnb2JqZWN0JykgcmV0dXJuXG4gICAgY29uc3QgYXJncyA9IGFjdGlvbi50b29sX2FyZ3NcbiAgICBpZiAoIShhcmdzICYmIHR5cGVvZiBhcmdzID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShhcmdzKSkpIHJldHVyblxuICAgIGNvbnN0IHJlYyA9IGFyZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICBwdXNoSWQocmVjLnRhc2tfaWQgPz8gcmVjLmlkKVxuICAgIGlmIChBcnJheS5pc0FycmF5KHJlYy50YXNrX2lkcykpIHtcbiAgICAgIHJlYy50YXNrX2lkcy5mb3JFYWNoKHB1c2hJZClcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVjLnRhc2tzKSkge1xuICAgICAgcmVjLnRhc2tzLmZvckVhY2godCA9PiB7XG4gICAgICAgIGlmICh0ICYmIHR5cGVvZiB0ID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh0KSkge1xuICAgICAgICAgIGNvbnN0IHRyZWMgPSB0IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICAgICAgcHVzaElkKHRyZWMudGFza19pZCA/PyB0cmVjLmlkKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfSlcbiAgcmV0dXJuIGlkc1xufVxuXG4vKiogdGFza19pZCAvIHRhc2tfaWRzIGVuIHBlbmRpbmdfYWN0aW9ucyBkZSBkZWxldGVfKiAobGEgcmVzcHVlc3RhIHB1ZWRlIG5vIGluY2x1aXIgVVJMcyAvdGFza3Mv4oCmL2RldGFpbCkuICovXG5mdW5jdGlvbiBleHRyYWN0VGFza0lkc0Zyb21EZWxldGVQZW5kaW5nQWN0aW9ucyhwZW5kaW5nQWN0aW9uczogUGVuZGluZ0FjdGlvbltdKTogbnVtYmVyW10ge1xuICBjb25zdCBpZHM6IG51bWJlcltdID0gW11cbiAgcGVuZGluZ0FjdGlvbnMuZm9yRWFjaChhY3Rpb24gPT4ge1xuICAgIGlmICghYWN0aW9uIHx8IHR5cGVvZiBhY3Rpb24gIT09ICdvYmplY3QnKSByZXR1cm5cbiAgICBjb25zdCBhcmdzID0gYWN0aW9uLnRvb2xfYXJnc1xuICAgIGlmICghKGFyZ3MgJiYgdHlwZW9mIGFyZ3MgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGFyZ3MpKSkgcmV0dXJuXG4gICAgY29uc3QgcmVjID0gYXJncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgIGlmIChhY3Rpb24udG9vbF9uYW1lID09PSAnZGVsZXRlX3Rhc2snKSB7XG4gICAgICBjb25zdCByYXcgPSByZWMudGFza19pZCA/PyByZWMuaWRcbiAgICAgIGlmIChyYXcgIT0gbnVsbCkge1xuICAgICAgICBjb25zdCBuID0gcGFyc2VJbnQoU3RyaW5nKHJhdyksIDEwKVxuICAgICAgICBpZiAoIU51bWJlci5pc05hTihuKSkgaWRzLnB1c2gobilcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFjdGlvbi50b29sX25hbWUgPT09ICdkZWxldGVfdGFza3NfYmF0Y2gnKSB7XG4gICAgICBjb25zdCBsaXN0ID0gcmVjLnRhc2tfaWRzXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShsaXN0KSkge1xuICAgICAgICBsaXN0LmZvckVhY2godGlkID0+IHtcbiAgICAgICAgICBjb25zdCBuID0gcGFyc2VJbnQoU3RyaW5nKHRpZCksIDEwKVxuICAgICAgICAgIGlmICghTnVtYmVyLmlzTmFOKG4pKSBpZHMucHVzaChuKVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfSlcbiAgcmV0dXJuIGlkc1xufVxuXG5mdW5jdGlvbiBleHRyYWN0QWdlbnRJZEZyb21FZGl0QWdlbnRQZW5kaW5nQWN0aW9ucyhwZW5kaW5nQWN0aW9uczogUGVuZGluZ0FjdGlvbltdKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IGVkaXRBY3Rpb24gPSBwZW5kaW5nQWN0aW9ucy5maW5kKGEgPT4gKGEudG9vbF9uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAnZWRpdF9hZ2VudCcpXG4gIGlmIChcbiAgICAhZWRpdEFjdGlvbiB8fFxuICAgICFlZGl0QWN0aW9uLnRvb2xfYXJncyB8fFxuICAgIHR5cGVvZiBlZGl0QWN0aW9uLnRvb2xfYXJncyAhPT0gJ29iamVjdCcgfHxcbiAgICBBcnJheS5pc0FycmF5KGVkaXRBY3Rpb24udG9vbF9hcmdzKVxuICApIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IHJlYyA9IGVkaXRBY3Rpb24udG9vbF9hcmdzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIGNvbnN0IHJhdyA9IHJlYy5hZ2VudF9pZCA/PyByZWMuYWdlbnRJZFxuICByZXR1cm4gcmF3ICE9IG51bGwgPyBTdHJpbmcocmF3KSA6IG51bGxcbn1cblxuZnVuY3Rpb24gZXh0cmFjdEFnZW50SWRGcm9tUGVuZGluZ0FjdGlvbnNCeVRvb2xOYW1lKHBlbmRpbmdBY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10sIHRvb2xOYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgYWN0aW9uID0gcGVuZGluZ0FjdGlvbnMuZmluZChhID0+IChhLnRvb2xfbmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gdG9vbE5hbWUudG9Mb3dlckNhc2UoKSlcbiAgaWYgKCFhY3Rpb24gfHwgIWFjdGlvbi50b29sX2FyZ3MgfHwgdHlwZW9mIGFjdGlvbi50b29sX2FyZ3MgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkoYWN0aW9uLnRvb2xfYXJncykpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IHJlYyA9IGFjdGlvbi50b29sX2FyZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgY29uc3QgcmF3ID0gcmVjLmFnZW50X2lkID8/IHJlYy5hZ2VudElkID8/IHJlYy5pZFxuICByZXR1cm4gcmF3ICE9IG51bGwgPyBTdHJpbmcocmF3KSA6IG51bGxcbn1cblxuLyoqIMOabHRpbW8gcmVjdXJzbyBzaSBubyBoYXkgbGlua3MgbmkgdG9vbF9hcmdzIHBhcnNlYWJsZXMgKHAuIGVqLiBcIklEICoqNzU5NzEwNioqXCIpLiAqL1xuZnVuY3Rpb24gZXh0cmFjdFRhc2tJZHNGcm9tQXNzaXN0YW50RGVsZXRpb25UZXh0KHRleHQ6IHN0cmluZyk6IG51bWJlcltdIHtcbiAgY29uc3QgbGFiZWxlZCA9IHRleHQubWF0Y2goL1xcYklEXFxzKlxcKlxcKihcXGQrKVxcKlxcKi9pKVxuICBpZiAobGFiZWxlZCkge1xuICAgIGNvbnN0IG4gPSBwYXJzZUludChsYWJlbGVkWzFdLCAxMClcbiAgICByZXR1cm4gTnVtYmVyLmlzTmFOKG4pID8gW10gOiBbbl1cbiAgfVxuICBjb25zdCBib2xkID0gdGV4dC5tYXRjaCgvXFwqXFwqKFxcZHs1LH0pXFwqXFwqLylcbiAgaWYgKGJvbGQpIHtcbiAgICBjb25zdCBuID0gcGFyc2VJbnQoYm9sZFsxXSwgMTApXG4gICAgcmV0dXJuIE51bWJlci5pc05hTihuKSA/IFtdIDogW25dXG4gIH1cbiAgcmV0dXJuIFtdXG59XG5cbmNvbnN0IHVzZVN0YWJsZUNhbGxiYWNrcyA9IChhdXRoVXNlcjogQ09SVXNlcikgPT4ge1xuICBjb25zdCBjdXJyZW50VXNlciA9IHVzZVJlZjxDaGF0TWVzc2FnZVVzZXI+KHtcbiAgICBpZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICBuYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgYXZhdGFyOiBhdXRoVXNlci5waWN0dXJlLFxuICB9KVxuXG4gIGlmIChcbiAgICBjdXJyZW50VXNlci5jdXJyZW50LmlkICE9PSBhdXRoVXNlci5pZC50b1N0cmluZygpIHx8XG4gICAgY3VycmVudFVzZXIuY3VycmVudC5uYW1lICE9PSBhdXRoVXNlci5maXJzdE5hbWUgfHxcbiAgICBjdXJyZW50VXNlci5jdXJyZW50LmF2YXRhciAhPT0gYXV0aFVzZXIucGljdHVyZVxuICApIHtcbiAgICBjdXJyZW50VXNlci5jdXJyZW50ID0ge1xuICAgICAgaWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICBuYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgICBhdmF0YXI6IGF1dGhVc2VyLnBpY3R1cmUsXG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgY3VycmVudFVzZXI6IGN1cnJlbnRVc2VyLmN1cnJlbnQsXG4gIH1cbn1cblxuY29uc3QgcGFyc2VTU0VMaW5lID0gKGxpbmU6IHN0cmluZyk6IHsgZXZlbnRUeXBlOiBzdHJpbmc7IGRhdGE6IHVua25vd24gfSB8IG51bGwgPT4ge1xuICBpZiAoIWxpbmUudHJpbSgpKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IFtldmVudExpbmUsIGRhdGFMaW5lXSA9IGxpbmUuc3BsaXQoJ1xcbicpXG4gIGlmICghZXZlbnRMaW5lIHx8ICFkYXRhTGluZSkgcmV0dXJuIG51bGxcblxuICBjb25zdCBldmVudFR5cGUgPSBldmVudExpbmUucmVwbGFjZSgnZXZlbnQ6ICcsICcnKS50cmltKClcbiAgY29uc3QgZGF0YVN0ciA9IGRhdGFMaW5lLnJlcGxhY2UoJ2RhdGE6ICcsICcnKS50cmltKClcblxuICB0cnkge1xuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGRhdGFTdHIpXG4gICAgcmV0dXJuIHsgZXZlbnRUeXBlLCBkYXRhIH1cbiAgfSBjYXRjaCAocGFyc2VFcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgU1NFIGRhdGE6JywgcGFyc2VFcnJvciwgZGF0YVN0cilcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmNvbnN0IHByb2Nlc3NTU0VTdHJlYW0gPSBhc3luYyAoXG4gIHJlc3BvbnNlOiBSZXNwb25zZSxcbiAgdGhyZWFkSWQ6IHN0cmluZyxcbiAgY2FsbGJhY2tzOiB7XG4gICAgb25UaGlua2luZzogKCkgPT4gdm9pZFxuICAgIG9uVG9rZW46IChjb250ZW50OiBzdHJpbmcpID0+IHZvaWRcbiAgICBvbk5vZGU6IChtZXNzYWdlOiBzdHJpbmcsIHRocmVhZElkOiBzdHJpbmcpID0+IHZvaWRcbiAgICBvbkNvbXBsZXRlOiAoXG4gICAgICBmaW5hbENvbnRlbnQ6IHN0cmluZyxcbiAgICAgIHNvdXJjZXM6IGFueSxcbiAgICAgIG1lbW9yeVNlc3Npb25JZDogc3RyaW5nLFxuICAgICAgY3VycmVudFRocmVhZElkOiBzdHJpbmcsXG4gICAgICBhdHRhY2htZW50cz86IGFueVtdIHwgbnVsbCxcbiAgICAgIHN1Z2dlc3Rpb25zPzogc3RyaW5nW10gfCBudWxsLFxuICAgICAgYWdlbnRJZD86IHN0cmluZyB8IG51bGxcbiAgICApID0+IHZvaWRcbiAgICBvbkVycm9yOiAoZXJyb3I6IGFueSwgdGhyZWFkSWQ6IHN0cmluZykgPT4gdm9pZFxuICAgIG9uQXBwcm92YWxSZXF1aXJlZD86IChhcHByb3ZhbDogYW55LCBhY2N1bXVsYXRlZENvbnRlbnQ6IHN0cmluZywgY3VycmVudFRocmVhZElkOiBzdHJpbmcpID0+IHZvaWRcbiAgfVxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHJlYWRlciA9IHJlc3BvbnNlLmJvZHk/LmdldFJlYWRlcigpXG4gIGlmICghcmVhZGVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyByZWFkZXIgYXZhaWxhYmxlJylcbiAgfVxuXG4gIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKVxuICBsZXQgYnVmZmVyID0gJydcbiAgbGV0IGFjY3VtdWxhdGVkQ29udGVudCA9ICcnXG4gIGxldCBpc1N0cmVhbUNvbXBsZXRlID0gZmFsc2VcblxuICBmdW5jdGlvbiBoYW5kbGVMaW5lKGxpbmU6IHN0cmluZykge1xuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlU1NFTGluZShsaW5lKVxuICAgIGlmICghcGFyc2VkKSByZXR1cm5cblxuICAgIGNvbnN0IHsgZXZlbnRUeXBlLCBkYXRhIH0gPSBwYXJzZWRcbiAgICBjb25zdCBldmVudERhdGEgPSBkYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG5cbiAgICBpZiAoZXZlbnRUeXBlID09PSAndGhpbmtpbmcnKSB7XG4gICAgICBjYWxsYmFja3Mub25UaGlua2luZygpXG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICd0b2tlbicpIHtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSB0eXBlb2YgZXZlbnREYXRhLmNvbnRlbnQgPT09ICdzdHJpbmcnID8gZXZlbnREYXRhLmNvbnRlbnQgOiAnJ1xuICAgICAgYWNjdW11bGF0ZWRDb250ZW50ID0gbWVyZ2VTdHJlYW1DaHVuayhhY2N1bXVsYXRlZENvbnRlbnQsIGNvbnRlbnQpXG4gICAgICBjYWxsYmFja3Mub25Ub2tlbihhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICdjb250ZW50Jykge1xuICAgICAgY29uc3QgY29udGVudCA9IHR5cGVvZiBldmVudERhdGEuY29udGVudCA9PT0gJ3N0cmluZycgPyBldmVudERhdGEuY29udGVudCA6ICcnXG4gICAgICBhY2N1bXVsYXRlZENvbnRlbnQgPSBtZXJnZVN0cmVhbUNodW5rKGFjY3VtdWxhdGVkQ29udGVudCwgY29udGVudClcbiAgICAgIGNhbGxiYWNrcy5vblRva2VuKGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgIGlmIChpc0NvbXBsZXRlTGlrZVNzZVBheWxvYWQoZXZlbnREYXRhKSkge1xuICAgICAgICBjb25zdCBmaW5hbENvbnRlbnQgPSBjb250ZW50IHx8IGFjY3VtdWxhdGVkQ29udGVudFxuICAgICAgICBjb25zdCBzb3VyY2VzID0gZXZlbnREYXRhLnNvdXJjZXMgfHwgbnVsbFxuICAgICAgICBjb25zdCBtZW1vcnlTZXNzaW9uSWQgPSAoZXZlbnREYXRhLm1lbW9yeV9zZXNzaW9uX2lkIGFzIHN0cmluZykgfHwgJydcbiAgICAgICAgY29uc3QgYXR0YWNobWVudHMgPSBBcnJheS5pc0FycmF5KGV2ZW50RGF0YS5hdHRhY2htZW50cykgPyBldmVudERhdGEuYXR0YWNobWVudHMgOiBudWxsXG4gICAgICAgIGNvbnN0IHN1Z2dlc3Rpb25zID0gQXJyYXkuaXNBcnJheShldmVudERhdGEuc3VnZ2VzdF9yZXBseSlcbiAgICAgICAgICA/IChldmVudERhdGEuc3VnZ2VzdF9yZXBseSBhcyBzdHJpbmdbXSlcbiAgICAgICAgICA6IEFycmF5LmlzQXJyYXkoZXZlbnREYXRhLnN1Z2dlc3Rpb25zKVxuICAgICAgICAgICAgPyAoZXZlbnREYXRhLnN1Z2dlc3Rpb25zIGFzIHN0cmluZ1tdKVxuICAgICAgICAgICAgOiBudWxsXG4gICAgICAgIGNvbnN0IGFnZW50SWRSYXcgPSBldmVudERhdGEuYWdlbnRfaWQgPz8gZXZlbnREYXRhLmFnZW50SWRcbiAgICAgICAgY29uc3QgY29tcGxldGVkQWdlbnRJZCA9XG4gICAgICAgICAgYWdlbnRJZFJhdyAhPSBudWxsICYmIFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgIT09ICcnID8gU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSA6IG51bGxcbiAgICAgICAgY2FsbGJhY2tzLm9uQ29tcGxldGUoXG4gICAgICAgICAgZmluYWxDb250ZW50LFxuICAgICAgICAgIHNvdXJjZXMsXG4gICAgICAgICAgbWVtb3J5U2Vzc2lvbklkLFxuICAgICAgICAgIHRocmVhZElkLFxuICAgICAgICAgIGF0dGFjaG1lbnRzLFxuICAgICAgICAgIHN1Z2dlc3Rpb25zLFxuICAgICAgICAgIGNvbXBsZXRlZEFnZW50SWRcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnbm9kZScpIHtcbiAgICAgIGlmIChldmVudERhdGEubWVzc2FnZSAmJiB0eXBlb2YgZXZlbnREYXRhLm1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNhbGxiYWNrcy5vbk5vZGUoZXZlbnREYXRhLm1lc3NhZ2UsIHRocmVhZElkKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnY29tcGxldGUnKSB7XG4gICAgICBjb25zdCBmaW5hbENvbnRlbnQgPSAoZXZlbnREYXRhLmNvbnRlbnQgYXMgc3RyaW5nKSB8fCBhY2N1bXVsYXRlZENvbnRlbnRcbiAgICAgIGNvbnN0IHNvdXJjZXMgPSAoZXZlbnREYXRhLnNvdXJjZXMgYXMgdW5rbm93bikgfHwgbnVsbFxuICAgICAgY29uc3QgbWVtb3J5U2Vzc2lvbklkID0gKGV2ZW50RGF0YS5tZW1vcnlfc2Vzc2lvbl9pZCBhcyBzdHJpbmcpIHx8ICcnXG4gICAgICBjb25zdCBhdHRhY2htZW50cyA9IEFycmF5LmlzQXJyYXkoZXZlbnREYXRhLmF0dGFjaG1lbnRzKSA/IGV2ZW50RGF0YS5hdHRhY2htZW50cyA6IG51bGxcbiAgICAgIGNvbnN0IHN1Z2dlc3Rpb25zID0gQXJyYXkuaXNBcnJheShldmVudERhdGEuc3VnZ2VzdF9yZXBseSlcbiAgICAgICAgPyAoZXZlbnREYXRhLnN1Z2dlc3RfcmVwbHkgYXMgc3RyaW5nW10pXG4gICAgICAgIDogQXJyYXkuaXNBcnJheShldmVudERhdGEuc3VnZ2VzdGlvbnMpXG4gICAgICAgICAgPyAoZXZlbnREYXRhLnN1Z2dlc3Rpb25zIGFzIHN0cmluZ1tdKVxuICAgICAgICAgIDogbnVsbFxuICAgICAgY29uc3QgYWdlbnRJZFJhdyA9IGV2ZW50RGF0YS5hZ2VudF9pZCA/PyBldmVudERhdGEuYWdlbnRJZFxuICAgICAgY29uc3QgY29tcGxldGVkQWdlbnRJZCA9IGFnZW50SWRSYXcgIT0gbnVsbCAmJiBTdHJpbmcoYWdlbnRJZFJhdykudHJpbSgpICE9PSAnJyA/IFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgOiBudWxsXG4gICAgICBjYWxsYmFja3Mub25Db21wbGV0ZShmaW5hbENvbnRlbnQsIHNvdXJjZXMsIG1lbW9yeVNlc3Npb25JZCwgdGhyZWFkSWQsIGF0dGFjaG1lbnRzLCBzdWdnZXN0aW9ucywgY29tcGxldGVkQWdlbnRJZClcbiAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gJ2FwcHJvdmFsX3JlcXVpcmVkJykge1xuICAgICAgY2FsbGJhY2tzLm9uQXBwcm92YWxSZXF1aXJlZD8uKGV2ZW50RGF0YSwgYWNjdW11bGF0ZWRDb250ZW50LCB0aHJlYWRJZClcbiAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gJ2Vycm9yJykge1xuICAgICAgY2FsbGJhY2tzLm9uRXJyb3IoZXZlbnREYXRhLmVycm9yLCB0aHJlYWRJZClcbiAgICB9XG4gIH1cblxuICB3aGlsZSAoIWlzU3RyZWFtQ29tcGxldGUpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYXdhaXQtaW4tbG9vcFxuICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKClcbiAgICBpZiAoZG9uZSkge1xuICAgICAgaXNTdHJlYW1Db21wbGV0ZSA9IHRydWVcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgYnVmZmVyICs9IGRlY29kZXIuZGVjb2RlKHZhbHVlLCB7IHN0cmVhbTogdHJ1ZSB9KVxuICAgIGNvbnN0IGxpbmVzID0gYnVmZmVyLnNwbGl0KCdcXG5cXG4nKVxuICAgIGJ1ZmZlciA9IGxpbmVzLnBvcCgpIHx8ICcnXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBoYW5kbGVMaW5lKGxpbmVzW2ldKVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgdXNlQ2hhdE1hbmFnZXIgPSAoe1xuICBjaGF0SWQ6IGluaXRpYWxDaGF0SWQsXG4gIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgb25FcnJvcixcbiAgYWdlbnRzID0gW10sXG59OiBVc2VDaGF0TWFuYWdlclByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IGF1dGhVc2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHtcbiAgICBwcm9qZWN0LFxuICAgIHNldFByb2plY3QsXG4gICAgY2xpZW50LFxuICAgIHNldENsaWVudCxcbiAgICB0YXNrLFxuICAgIHNldFRhc2ssXG4gICAgYWdlbnQsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgIGNoaXBzUHJvamVjdCxcbiAgICBzZXRDaGlwc1Byb2plY3QsXG4gIH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgZXZlbnQgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgZmV0Y2hQcm9qZWN0cyB9ID0gdXNlUHJvamVjdHMoKVxuICBjb25zdCB7IGN1cnJlbnRVc2VyIH0gPSB1c2VTdGFibGVDYWxsYmFja3MoYXV0aFVzZXIpXG4gIGNvbnN0IHsgZ2V0VGFiVGFza0RlZmF1bHQgfSA9IHVzZVRhYlRhc2tEZWZhdWx0KClcblxuICAvLyBERUJVRzogcmFzdHJlYXIgY3XDoW5kbyBjYW1iaWEgZWwgY29udGV4dG8gZ2xvYmFsIHBhcmEgY29ycmVsYWNpb25hciBjb24gbG9zIGVudsOtb3MgYWwgb3JjaGVzdHJhdG9yXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc29sZS5pbmZvKCdbdXNlQ2hhdE1hbmFnZXJdIGNvbnRleHQgQ0hBTkdFRDonLCB7XG4gICAgICBjaGlwc1Byb2plY3RJZDogY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgPz8gbnVsbCxcbiAgICAgIGNoaXBzUHJvamVjdE5hbWU6IGNoaXBzUHJvamVjdD8ucHJvamVjdE5hbWUgPz8gbnVsbCxcbiAgICAgIHByb2plY3RQcm9wSWQ6IHByb2plY3Q/LmlkID8/IG51bGwsXG4gICAgICBjbGllbnRJZDogY2xpZW50Py5pZCA/PyBudWxsLFxuICAgICAgdGFza0lkOiB0YXNrPy5pZCA/PyBudWxsLFxuICAgIH0pXG4gIH0sIFtjaGlwc1Byb2plY3Q/LnByb2plY3RJZCwgcHJvamVjdD8uaWQsIGNsaWVudD8uaWQsIHRhc2s/LmlkXSlcbiAgY29uc3QgY3VycmVudE1lc3NhZ2VJZCA9IHVzZVJlZih1dWlkdjQoKSlcbiAgY29uc3QgY3VycmVudFVzZXJRdWVzdGlvbiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBjdXJyZW50Q2hhdElkID0gdXNlUmVmKGluaXRpYWxDaGF0SWQgfHwgdXVpZHY0KCkpXG4gIGNvbnN0IHJlcG9ydGVkRXZlbnQgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IG1lc3NhZ2VzUmVmID0gdXNlUmVmPENoYXRNZXNzYWdlW10+KFtdKVxuICAvKipcbiAgICogR3VhcmRhIGluZm8gZGVsIMO6bHRpbW8gYXBwcm92YWwgbWFudWFsIChjdWFuZG8gZWwgdXN1YXJpbyB0aXBlYSBcInNpXCIvXCJub1wiIGVuIGx1Z2FyXG4gICAqIGRlIGNsaWNrZWFyIGVsIGJvdMOzbikuIEVuIG1hbnVhbCBhcHByb3ZhbCwgYGhhbmRsZUFwcHJvdmFsUmVxdWlyZWRgIHJldG9ybmEgZWFybHlcbiAgICogc2luIGFncmVnYXIgdW4gbWVuc2FqZSBjb24gYGFwcHJvdmFsYCwgYXPDrSBxdWUgbGEgbMOzZ2ljYSBkZSByZWZldGNoIGVuIGBvblN0cmVhbUZpbmlzaGBcbiAgICogbm8gbG8gZGV0ZWN0YSB2w61hIGBwcmV2aW91c01lc3NhZ2UuYXBwcm92YWxgLiBMbyBndWFyZGFtb3MgYWPDoSBwYXJhIGNvbnN1bWlybG8gZGVzcHXDqXMuXG4gICAqL1xuICBjb25zdCBsYXN0TWFudWFsQXBwcm92YWxSZWYgPSB1c2VSZWY8e1xuICAgIHRvb2xOYW1lOiBzdHJpbmdcbiAgICB0b29sQXJnczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsXG4gIH0gfCBudWxsPihudWxsKVxuICAvKiogQ29udGV4dG8gZGVsIG1lbnNhamUgZGUgYXByb2JhY2nDs24gcHJldmlvIGFsIGVqZWN1dGFyIGNvbnRpbnVlLXRocmVhZC4gKi9cbiAgY29uc3QgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYgPSB1c2VSZWY8SGl0bEV4ZWN1dGlvbkNvbnRleHQgfCBudWxsPihudWxsKVxuICBjb25zdCBpc1Byb2Nlc3NpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGZpcnN0VGltZVJlZiA9IHVzZVJlZihmYWxzZSlcbiAgLyoqIElkIGRlbCBwbGFjZWhvbGRlciBkZWwgbWVuc2FqZSBlbiBzdHJlYW1pbmcgYWN0aXZvIChzaSBoYXkpLiAqL1xuICBjb25zdCBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIC8qKlxuICAgKiBDaGF0IGFsIHF1ZSBwZXJ0ZW5lY2UgZWwgc3RyZWFtIGFjdHVhbG1lbnRlIGFjdGl2by4gU2kgY2FtYmlhIGVsIGNoYXRcbiAgICogbWllbnRyYXMgdW4gc3RyZWFtIGVzdMOhIGVuIHZ1ZWxvLCBkZXNjYXJ0YW1vcyBsb3MgdG9rZW5zIHJlc2lkdWFsZXNcbiAgICogcXVlIHB1ZWRhbiBsbGVnYXIgYW50ZXMgZGUgcXVlIGVsIGFib3J0IHNlIGNvbXBsZXRlLlxuICAgKi9cbiAgY29uc3QgYWN0aXZlU3RyZWFtQ2hhdElkUmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIC8qKiBTZXR0ZXIgaW5kaXJlY3RvIHBhcmEgYWJvcnRhciBlbCBzdHJlYW0gYW50ZXMgZGUgcXVlIGVsIGhvb2sgZGVcbiAgICogb3JxdWVzdGFkb3IgZXN0w6kgaW5pY2lhbGl6YWRvIChzZSBsaW5rZWEgbcOhcyBhYmFqbykuICovXG4gIGNvbnN0IGFib3J0U3RyZWFtU2lsZW50bHlSZWYgPSB1c2VSZWY8KCkgPT4gdm9pZD4oKCkgPT4gdW5kZWZpbmVkKVxuICBjb25zdCBjbGVhclN0cmVhbVVpUmVmID0gdXNlUmVmPCgpID0+IHZvaWQ+KCgpID0+IHVuZGVmaW5lZClcbiAgY29uc3QgW2FjdGl2ZUxvYWRpbmdzLCBzZXRBY3RpdmVMb2FkaW5nc10gPSB1c2VTdGF0ZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pih7fSlcblxuICBjb25zdCBpc1dlYlNlYXJjaEFjdGl2ZVJlZiA9IHVzZVJlZihpc1dlYlNlYXJjaEFjdGl2ZSlcbiAgY29uc3QgaXNEZWVwU2VhcmNoQWN0aXZlUmVmID0gdXNlUmVmKGlzRGVlcFNlYXJjaEFjdGl2ZSlcbiAgLyoqIEV2aXRhIGNsb3N1cmVzIG9ic29sZXRhcyBjdWFuZG8gZWwgZm9vdGVyIGNvbnNlcnZhIHNlbmRNZXNzYWdlIGVudHJlIHJlbmRlcnMuICovXG4gIGNvbnN0IGNvbnRleHRSZWYgPSB1c2VSZWYoeyBjaGlwc1Byb2plY3QsIHByb2plY3QsIGNsaWVudCwgdGFzayB9KVxuICBjb250ZXh0UmVmLmN1cnJlbnQgPSB7IGNoaXBzUHJvamVjdCwgcHJvamVjdCwgY2xpZW50LCB0YXNrIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQgPSBpc1dlYlNlYXJjaEFjdGl2ZVxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50ID0gaXNEZWVwU2VhcmNoQWN0aXZlXG4gIH0sIFtpc1dlYlNlYXJjaEFjdGl2ZSwgaXNEZWVwU2VhcmNoQWN0aXZlXSlcblxuICBjb25zdCB7IGxvYWRpbmdNZXNzYWdlcywgbWVzc2FnZXMsIGlzTG9hZGluZ01vcmVNZXNzYWdlcywgbG9hZE1lc3NhZ2VzLCBhZGRNZXNzYWdlLCByZW1vdmVNZXNzYWdlLCBoYW5kbGVTY3JvbGwgfSA9XG4gICAgdXNlQ2hhdE1lc3NhZ2VzKHtcbiAgICAgIGNoYXRJZDogaW5pdGlhbENoYXRJZCB8fCBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICBjdXJyZW50VXNlcixcbiAgICAgIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgICAgIG9uRXJyb3IsXG4gICAgICBhZ2VudHMsXG4gICAgfSlcblxuICBtZXNzYWdlc1JlZi5jdXJyZW50ID0gbWVzc2FnZXNcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdjaGF0LWxvYWRpbmctbWVzc2FnZXMtY2hhbmdlZCcsIHtcbiAgICAgIGRldGFpbDogeyBsb2FkaW5nTWVzc2FnZXMgfSxcbiAgICB9KVxuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY3VzdG9tRXZlbnQpXG4gIH0sIFtsb2FkaW5nTWVzc2FnZXNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGluaXRpYWxDaGF0SWQgJiYgaW5pdGlhbENoYXRJZCAhPT0gY3VycmVudENoYXRJZC5jdXJyZW50KSB7XG4gICAgICAvLyBTaSBoYXkgdW4gc3RyZWFtIGVuIGN1cnNvLCBhYm9ydGFybG8gc2lsZW5jaW9zYW1lbnRlIHBhcmEgcXVlIGxvc1xuICAgICAgLy8gdG9rZW5zIHJlc2lkdWFsZXMgbm8gc2UgZXNjcmliYW4gZW4gZWwgY2hhdCBudWV2by5cbiAgICAgIGFib3J0U3RyZWFtU2lsZW50bHlSZWYuY3VycmVudCgpXG5cbiAgICAgIC8vIExpbXBpYXIgY29udGV4dG8gZ2xvYmFsIGFsIGNhbWJpYXIgZGUgY29udmVyc2FjacOzblxuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgICAgc2V0VGFzayhudWxsKVxuXG4gICAgICBjdXJyZW50Q2hhdElkLmN1cnJlbnQgPSBpbml0aWFsQ2hhdElkXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuICAgICAgY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50ID0gbnVsbFxuICAgICAgcmVwb3J0ZWRFdmVudC5jdXJyZW50ID0gZmFsc2VcbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgc3RyZWFtaW5nU3RvcmUuY2xlYXIoKVxuXG4gICAgICBsb2FkTWVzc2FnZXMoKVxuICAgIH1cbiAgfSwgW2luaXRpYWxDaGF0SWQsIHByb2plY3QsIHNldFByb2plY3QsIHNldENsaWVudCwgc2V0Q2hpcHNQcm9qZWN0LCBzZXRUYXNrLCBsb2FkTWVzc2FnZXNdKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbUVycm9yID0gdXNlQ2FsbGJhY2soXG4gICAgKGVycm9yTWVzc2FnZT86IHN0cmluZywgZXJyb3JSYXdNZXNzYWdlPzogc3RyaW5nKSA9PiB7XG4gICAgICBjbGVhclN0cmVhbVVpUmVmLmN1cnJlbnQoKVxuICAgICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcbiAgICAgIHN0cmVhbWluZ1N0b3JlLmNsZWFyKClcbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgcmVtb3ZlTWVzc2FnZSh0ZW1wTWVzc2FnZUlkKVxuXG4gICAgICBjb25zdCBtZXNzYWdlID1cbiAgICAgICAgZXJyb3JNZXNzYWdlID09PSBcIkFjY2VzcyBkZW5pZWQ6IFlvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoaXMgYWdlbnRcIlxuICAgICAgICAgID8gdCgnY2hhdC5lcnJvckFjY2Vzc0RlbmllZCcpXG4gICAgICAgICAgOiBlcnJvck1lc3NhZ2UgPT09ICdpbnZhbGlkX3JlcXVlc3RfZXJyb3InICYmIGVycm9yUmF3TWVzc2FnZT8uaW5jbHVkZXMoJ3Byb21wdCBpcyB0b28gbG9uZycpXG4gICAgICAgICAgICA/IHQoJ2NoYXQuZXJyb3JQcm9tcHRUb29Mb25nJywgeyB1c2VkOiBlcnJvclJhd01lc3NhZ2UubWF0Y2goLyhcXGQrKSB0b2tlbnMvKT8uWzFdID8/ICcnIH0pXG4gICAgICAgICAgICA6IHQoJ2NoYXQuZXJyb3InKVxuXG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9YCxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgaXNFcnJvcjogdHJ1ZSxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KVxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH0sXG4gICAgW2FkZE1lc3NhZ2UsIHJlbW92ZU1lc3NhZ2UsIHRdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdHJlYW1VcGRhdGUgPSB1c2VDYWxsYmFjayhcbiAgICAoY29udGVudDogc3RyaW5nLCBzb3VyY2VzOiBhbnksIG1lbW9yeVNlc3Npb25JZDogc3RyaW5nKSA9PiB7XG4gICAgICAvLyBTaSBlbCBjaGF0IGNhbWJpw7MgbWllbnRyYXMgZWwgc3RyZWFtIGVzdGFiYSBlbiB2dWVsbywgZGVzY2FydGFyIGVsXG4gICAgICAvLyB0b2tlbiByZXNpZHVhbDogbm8gZGViZSBwaW50YXJzZSBlbiBlbCBudWV2byBjaGF0LlxuICAgICAgaWYgKGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ICE9IG51bGwgJiYgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgIT09IGN1cnJlbnRDaGF0SWQuY3VycmVudCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcblxuICAgICAgLy8gUHJpbWVyYSBsbGFtYWRhIGRlIGVzdGUgc3RyZWFtOiBpbnNlcnRhbW9zIGVsIHBsYWNlaG9sZGVyIGVuIGVsXG4gICAgICAvLyBhcnJheSBkZSBgbWVzc2FnZXNgIHVuYSDDum5pY2EgdmV6LiBMYXMgbGxhbWFkYXMgc3Vic2lndWllbnRlcyB5YSBub1xuICAgICAgLy8gdG9jYW4gYG1lc3NhZ2VzYDsgZWwgdGV4dG8gdml2ZSBlbiBlbCBzdHJlYW1pbmdTdG9yZSAoZXh0ZXJubyksIHBvclxuICAgICAgLy8gbG8gcXVlIFJlYWN0IG5vIHJlLXJlbmRlcml6YSBlbCDDoXJib2wgY29tcGxldG8gZW4gY2FkYSB0b2tlbi5cbiAgICAgIGlmIChzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgIT09IHRlbXBNZXNzYWdlSWQpIHtcbiAgICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gdGVtcE1lc3NhZ2VJZFxuICAgICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IGN1cnJlbnRDaGF0SWQuY3VycmVudFxuICAgICAgICBzdHJlYW1pbmdTdG9yZS5zdGFydCh0ZW1wTWVzc2FnZUlkKVxuICAgICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgICBpZDogdGVtcE1lc3NhZ2VJZCxcbiAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgICAgc291cmNlcyxcbiAgICAgICAgICBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHN0cmVhbWluZ1N0b3JlLnNldFRleHQodGVtcE1lc3NhZ2VJZCwgY29udGVudClcbiAgICB9LFxuICAgIFthZGRNZXNzYWdlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlU3RyZWFtRmluaXNoID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKFxuICAgICAgY29udGVudDogc3RyaW5nLFxuICAgICAgc291cmNlczogYW55LFxuICAgICAgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcsXG4gICAgICByYXdBdHRhY2htZW50cz86IGFueVtdIHwgbnVsbCxcbiAgICAgIHN1Z2dlc3Rpb25zPzogc3RyaW5nW10gfCBudWxsLFxuICAgICAgY29tcGxldGVkQWdlbnRJZD86IHN0cmluZyB8IG51bGxcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IHRlbXBNZXNzYWdlSWQgPSBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1zdHJlYW1pbmdgXG4gICAgICBzdHJlYW1pbmdTdG9yZS5jbGVhcigpXG4gICAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICByZW1vdmVNZXNzYWdlKHRlbXBNZXNzYWdlSWQpXG4gICAgICBjb25zdCBhdHRhY2htZW50cyA9IG5vcm1hbGl6ZUFzc2lzdGFudEF0dGFjaG1lbnRzKHJhd0F0dGFjaG1lbnRzKVxuXG4gICAgICAvLyBEZXRlY3RhciB0b2RhcyBsYXMgVVJMcyBkZSB0YXJlYXMgKC4uLi90YXNrcy8xMjMvZGV0YWlsfG1lc3NhZ2V8bWVzc2FnZXN8ZmlsZXN8aGlzdG9yeXxob3VycylcbiAgICAgIGNvbnN0IHRhc2tVcmxSZWdleCA9IG5ldyBSZWdFeHAoVEFTS19VUkxfUkVHRVhfUEFUVEVSTiwgJ2cnKVxuICAgICAgY29uc3QgbWF0Y2hlcyA9IFsuLi5jb250ZW50Lm1hdGNoQWxsKHRhc2tVcmxSZWdleCldXG5cbiAgICAgIGxldCBjb250ZW50VG9BZGQgPSBjb250ZW50XG4gICAgICBjb25zdCBwcmV2aW91c01lc3NhZ2UgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbHRlcihtID0+IG0uaWQgIT09IHRlbXBNZXNzYWdlSWQpLmF0KC0xKVxuICAgICAgY29uc3QgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSA9IHByZXZpb3VzTWVzc2FnZT8uYXBwcm92YWwgIT0gbnVsbFxuICAgICAgY29uc3QgVEFTS19DUkVBVElPTl9UT09MUyA9IFsnY3JlYXRlX3Rhc2snLCAnY3JlYXRlX3Rhc2tzX2JhdGNoJywgJ2Nsb25lX3Rhc2snXVxuICAgICAgY29uc3QgVEFTS19FRElUX1RPT0xTID0gW1xuICAgICAgICAnZWRpdF90YXNrJyxcbiAgICAgICAgJ2VkaXRfdGFza3NfYmF0Y2gnLFxuICAgICAgICAndGFza19hc3NpZ24nLFxuICAgICAgICAndGFza191bmFzc2lnbicsXG4gICAgICAgICd1cGRhdGVfdGFza190eXBlJyxcbiAgICAgICAgJ3VwZGF0ZV9lc3RpbWF0ZWRfaG91cnMnLFxuICAgICAgICAnYXNzaWduX3Rhc2tfbGFiZWwnLFxuICAgICAgXVxuICAgICAgY29uc3QgVEFTS19ERUxFVEVfVE9PTFMgPSBbJ2RlbGV0ZV90YXNrJywgJ2RlbGV0ZV90YXNrc19iYXRjaCddXG4gICAgICBjb25zdCBwZW5kaW5nQWN0aW9ucyA9IHByZXZpb3VzTWVzc2FnZT8uYXBwcm92YWw/LnBlbmRpbmdfYWN0aW9ucyB8fCBbXVxuICAgICAgY29uc3Qgd2FzVGFza0NyZWF0aW9uID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICBwZW5kaW5nQWN0aW9ucy5zb21lKChhY3Rpb246IGFueSkgPT4gVEFTS19DUkVBVElPTl9UT09MUy5pbmNsdWRlcyhhY3Rpb24udG9vbF9uYW1lKSlcbiAgICAgIGNvbnN0IHdhc1Rhc2tFZGl0ID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJiBwZW5kaW5nQWN0aW9ucy5zb21lKChhY3Rpb246IGFueSkgPT4gVEFTS19FRElUX1RPT0xTLmluY2x1ZGVzKGFjdGlvbi50b29sX25hbWUpKVxuICAgICAgY29uc3Qgd2FzVGFza0RlbGV0ZSA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IFRBU0tfREVMRVRFX1RPT0xTLmluY2x1ZGVzKGFjdGlvbi50b29sX25hbWUpKVxuICAgICAgY29uc3Qgd2FzQ3JlYXRlQWdlbnRBcHByb3ZlZCA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbFN0YXR1cyA9PT0gJ2FwcHJvdmVkJyAmJlxuICAgICAgICBwZW5kaW5nQWN0aW9ucy5zb21lKChhY3Rpb246IGFueSkgPT4gYWN0aW9uLnRvb2xfbmFtZSA9PT0gJ2NyZWF0ZV9hZ2VudCcpXG4gICAgICBjb25zdCB3YXNDb25maWd1cmVBZ2VudEFjY2Vzc0FwcHJvdmVkID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsU3RhdHVzID09PSAnYXBwcm92ZWQnICYmXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiAoYWN0aW9uLnRvb2xfbmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ2NvbmZpZ3VyZV9hZ2VudF9hY2Nlc3MnKVxuICAgICAgbGV0IGNyZWF0ZUFnZW50Rm9sbG93VXA6IHsgYWdlbnRJZDogc3RyaW5nIH0gfCB1bmRlZmluZWRcbiAgICAgIGlmICh3YXNDcmVhdGVBZ2VudEFwcHJvdmVkICYmIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTICYmIGNvbXBsZXRlZEFnZW50SWQ/LnRyaW0oKSkge1xuICAgICAgICBjcmVhdGVBZ2VudEZvbGxvd1VwID0geyBhZ2VudElkOiBjb21wbGV0ZWRBZ2VudElkLnRyaW0oKSB9XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICB3YXNDb25maWd1cmVBZ2VudEFjY2Vzc0FwcHJvdmVkICYmXG4gICAgICAgIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTICYmXG4gICAgICAgIChjb21wbGV0ZWRBZ2VudElkPy50cmltKCkgfHxcbiAgICAgICAgICBleHRyYWN0QWdlbnRJZEZyb21QZW5kaW5nQWN0aW9uc0J5VG9vbE5hbWUocGVuZGluZ0FjdGlvbnMsICdjb25maWd1cmVfYWdlbnRfYWNjZXNzJykpXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgY29uZmlndXJlZEFnZW50SWQgPVxuICAgICAgICAgIGNvbXBsZXRlZEFnZW50SWQ/LnRyaW0oKSB8fFxuICAgICAgICAgIGV4dHJhY3RBZ2VudElkRnJvbVBlbmRpbmdBY3Rpb25zQnlUb29sTmFtZShwZW5kaW5nQWN0aW9ucywgJ2NvbmZpZ3VyZV9hZ2VudF9hY2Nlc3MnKVxuICAgICAgICBjcmVhdGVBZ2VudEZvbGxvd1VwID0ge1xuICAgICAgICAgIGFnZW50SWQ6IGNvbmZpZ3VyZWRBZ2VudElkIGFzIHN0cmluZyxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAod2FzQ3JlYXRlQWdlbnRBcHByb3ZlZCkge1xuICAgICAgICBldmVudChFVkVOVFMuYWlDaGF0SGl0bE9wdGlvbiwge1xuICAgICAgICAgIGFnZW50X3R5cGU6IGdldEhpdGxBbmFseXRpY3NBZ2VudFR5cGUoYWdlbnQpLFxuICAgICAgICAgIGFjdGlvbl90eXBlOiBidWlsZEhpdGxBY3Rpb25UeXBlTGlzdChwZW5kaW5nQWN0aW9ucyksXG4gICAgICAgICAgZGVjaXNpb246ICdhY2NlcHQnLFxuICAgICAgICAgIG9wdGlvbjogJ2NyZWF0ZV9hZ2VudCcsXG4gICAgICAgICAgLi4uKGNvbXBsZXRlZEFnZW50SWQ/LnRyaW0oKSA/IHsgY3JlYXRlZF9hZ2VudF9pZDogY29tcGxldGVkQWdlbnRJZC50cmltKCkgfSA6IHt9KSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3Qgd2FzRWRpdEFnZW50QXBwcm92ZWQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHByZXZpb3VzTWVzc2FnZT8uYXBwcm92YWxTdGF0dXMgPT09ICdhcHByb3ZlZCcgJiZcbiAgICAgICAgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IChhY3Rpb24udG9vbF9uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAnZWRpdF9hZ2VudCcpXG5cbiAgICAgIGxldCBlZGl0QWdlbnRGb2xsb3dVcDogeyBhZ2VudElkOiBzdHJpbmcgfSB8IHVuZGVmaW5lZFxuICAgICAgaWYgKHdhc0VkaXRBZ2VudEFwcHJvdmVkKSB7XG4gICAgICAgIGNvbnN0IGZyb21TdHJlYW0gPSBjb21wbGV0ZWRBZ2VudElkPy50cmltKClcbiAgICAgICAgY29uc3QgZnJvbUFyZ3MgPSBleHRyYWN0QWdlbnRJZEZyb21FZGl0QWdlbnRQZW5kaW5nQWN0aW9ucyhwZW5kaW5nQWN0aW9ucylcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRBZ2VudElkID0gZnJvbVN0cmVhbSB8fCBmcm9tQXJnc1xuICAgICAgICBpZiAocmVzb2x2ZWRBZ2VudElkKSB7XG4gICAgICAgICAgZWRpdEFnZW50Rm9sbG93VXAgPSB7IGFnZW50SWQ6IHJlc29sdmVkQWdlbnRJZCB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgdGFza0lkc0Zyb21VcmxzID0gbWF0Y2hlcy5tYXAobWF0Y2ggPT4gcGFyc2VJbnQobWF0Y2hbMV0sIDEwKSlcbiAgICAgIGNvbnN0IHRhc2tJZHNGcm9tRGVsZXRlQXBwcm92YWwgPSBleHRyYWN0VGFza0lkc0Zyb21EZWxldGVQZW5kaW5nQWN0aW9ucyhwZW5kaW5nQWN0aW9ucylcbiAgICAgIGNvbnN0IHRhc2tJZHNGcm9tRGVsZXRpb25UZXh0ID1cbiAgICAgICAgd2FzVGFza0RlbGV0ZSAmJiB0YXNrSWRzRnJvbVVybHMubGVuZ3RoID09PSAwICYmIHRhc2tJZHNGcm9tRGVsZXRlQXBwcm92YWwubGVuZ3RoID09PSAwXG4gICAgICAgICAgPyBleHRyYWN0VGFza0lkc0Zyb21Bc3Npc3RhbnREZWxldGlvblRleHQoY29udGVudClcbiAgICAgICAgICA6IFtdXG4gICAgICBjb25zdCB0YXNrSWRzRm9yRGFzaGJvYXJkID1cbiAgICAgICAgdGFza0lkc0Zyb21VcmxzLmxlbmd0aCA+IDBcbiAgICAgICAgICA/IHRhc2tJZHNGcm9tVXJsc1xuICAgICAgICAgIDogdGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbC5sZW5ndGggPiAwXG4gICAgICAgICAgICA/IHRhc2tJZHNGcm9tRGVsZXRlQXBwcm92YWxcbiAgICAgICAgICAgIDogdGFza0lkc0Zyb21EZWxldGlvblRleHRcblxuICAgICAgY29uc3Qgc2hvdWxkU3luY0Rhc2hib2FyZCA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgKHdhc1Rhc2tDcmVhdGlvbiB8fCB3YXNUYXNrRWRpdCB8fCB3YXNUYXNrRGVsZXRlKSAmJlxuICAgICAgICB0YXNrSWRzRm9yRGFzaGJvYXJkLmxlbmd0aCA+IDBcblxuICAgICAgaWYgKHNob3VsZFN5bmNEYXNoYm9hcmQpIHtcbiAgICAgICAgY29uc3QgdGFza0lkcyA9IHRhc2tJZHNGb3JEYXNoYm9hcmRcbiAgICAgICAgaWYgKG1hdGNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IHRhYiA9IGF3YWl0IGdldFRhYlRhc2tEZWZhdWx0KHRhc2tJZHNbMF0pXG4gICAgICAgICAgY29uc3QgdGFiU2VnbWVudCA9IHRhYiA/IGAvJHt0YWJ9YCA6ICcvZGV0YWlsJ1xuICAgICAgICAgIGNvbnRlbnRUb0FkZCA9IGNvbnRlbnQucmVwbGFjZSh0YXNrVXJsUmVnZXgsIHVybCA9PlxuICAgICAgICAgICAgdXJsLnJlcGxhY2UoL1xcLyhkZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKSg/PSR8XFw/KS8sIHRhYlNlZ21lbnQpXG4gICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbGFzdFByb2plY3RNZXNzYWdlID0gbWVzc2FnZXNSZWYuY3VycmVudC5maWx0ZXIobXNnID0+IG1zZy5wcm9qZWN0SWQpLmF0KC0xKVxuICAgICAgICBjb25zdCBjb250ZXh0UHJvamVjdElkUmF3ID0gcHJvamVjdD8uaWQgfHwgbGFzdFByb2plY3RNZXNzYWdlPy5wcm9qZWN0SWRcbiAgICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZCA9IGNvbnRleHRQcm9qZWN0SWRSYXcgPyBwYXJzZUludChTdHJpbmcoY29udGV4dFByb2plY3RJZFJhdyksIDEwKSA6IG51bGxcbiAgICAgICAgY29uc3QgcGF0aE1hdGNoID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLm1hdGNoKC9eXFwvcHJvamVjdHNcXC8oXFxkKylcXC8vKVxuICAgICAgICBjb25zdCByb3V0ZVByb2plY3RJZCA9IHBhdGhNYXRjaCA/IHBhcnNlSW50KHBhdGhNYXRjaFsxXSwgMTApIDogbnVsbFxuICAgICAgICBjb25zdCBpc09uUHJvamVjdFJvdXRlID0gY29udGV4dFByb2plY3RJZCAmJiByb3V0ZVByb2plY3RJZCAmJiBjb250ZXh0UHJvamVjdElkID09PSByb3V0ZVByb2plY3RJZFxuXG4gICAgICAgIGlmIChpc09uUHJvamVjdFJvdXRlKSB7XG4gICAgICAgICAgaWYgKHdhc1Rhc2tDcmVhdGlvbikge1xuICAgICAgICAgICAgd2luZG93Lm5ld1Byb2plY3REYXNoYm9hcmQ/LmFkZEV4aXN0aW5nVGFza1RvRGFzaGJvYXJkPy4odGFza0lkcylcbiAgICAgICAgICB9IGVsc2UgaWYgKHdhc1Rhc2tFZGl0KSB7XG4gICAgICAgICAgICB3aW5kb3cubmV3UHJvamVjdERhc2hib2FyZD8uZWRpdEV4aXN0aW5nVGFza0luRGFzaGJvYXJkPy4odGFza0lkcylcbiAgICAgICAgICB9IGVsc2UgaWYgKHdhc1Rhc2tEZWxldGUpIHtcbiAgICAgICAgICAgIHdpbmRvdy5uZXdQcm9qZWN0RGFzaGJvYXJkPy5kZWxldGVFeGlzdGluZ1Rhc2tGcm9tRGFzaGJvYXJkPy4odGFza0lkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUmVmZXRjaCBkZWwgdGFzayBwYW5lbCBzaSBlc3TDoSBhYmllcnRvIHkgbGEgdG9vbCBhcHJvYmFkYSBlZGl0w7MvYm9ycsOzIGVzYSB0YXJlYS5cbiAgICAgIC8vIEN1YnJlIGxvcyBkb3MgZmx1am9zIGRlIGFwcHJvdmFsOlxuICAgICAgLy8gICAxKSBBcHByb3ZhbCBwb3IgYm90w7NuIOKGkiBgcHJldmlvdXNNZXNzYWdlLmFwcHJvdmFsLnBlbmRpbmdfYWN0aW9uc2AgKHbDrWEgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSlcbiAgICAgIC8vICAgMikgTWFudWFsIGFwcHJvdmFsICh1c3VhcmlvIHRpcGVhIFwic2lcIi9cIm5vXCIpIOKGkiBgbGFzdE1hbnVhbEFwcHJvdmFsUmVmLmN1cnJlbnRgXG4gICAgICBjb25zdCBvcGVuVGFza1BhbmVsSWQgPSB3aW5kb3cudGFza1BhbmVsPy50YXNrSWRcbiAgICAgIGNvbnN0IG1hbnVhbEFwcHJvdmFsID0gbGFzdE1hbnVhbEFwcHJvdmFsUmVmLmN1cnJlbnRcbiAgICAgIGxhc3RNYW51YWxBcHByb3ZhbFJlZi5jdXJyZW50ID0gbnVsbCAvLyBjb25zdW1pciB1bmEgc29sYSB2ZXpcbiAgICAgIGNvbnN0IG1hbnVhbFdhc1Rhc2tFZGl0ID0gISFtYW51YWxBcHByb3ZhbCAmJiBUQVNLX0VESVRfVE9PTFMuaW5jbHVkZXMobWFudWFsQXBwcm92YWwudG9vbE5hbWUpXG4gICAgICBjb25zdCBtYW51YWxXYXNUYXNrRGVsZXRlID0gISFtYW51YWxBcHByb3ZhbCAmJiBUQVNLX0RFTEVURV9UT09MUy5pbmNsdWRlcyhtYW51YWxBcHByb3ZhbC50b29sTmFtZSlcblxuICAgICAgaWYgKG9wZW5UYXNrUGFuZWxJZCAmJiAod2FzVGFza0VkaXQgfHwgd2FzVGFza0RlbGV0ZSB8fCBtYW51YWxXYXNUYXNrRWRpdCB8fCBtYW51YWxXYXNUYXNrRGVsZXRlKSkge1xuICAgICAgICBjb25zdCBtYW51YWxQc2V1ZG9BY3Rpb246IFBlbmRpbmdBY3Rpb24gfCBudWxsID0gbWFudWFsQXBwcm92YWxcbiAgICAgICAgICA/ICh7IHRvb2xfbmFtZTogbWFudWFsQXBwcm92YWwudG9vbE5hbWUsIHRvb2xfYXJnczogbWFudWFsQXBwcm92YWwudG9vbEFyZ3MgPz8ge30gfSBhcyBQZW5kaW5nQWN0aW9uKVxuICAgICAgICAgIDogbnVsbFxuICAgICAgICBjb25zdCBhZmZlY3RlZFRhc2tJZHMgPSBbXG4gICAgICAgICAgLi4uZXh0cmFjdFRhc2tJZHNGcm9tUGVuZGluZ0FjdGlvbnNBcmdzKHBlbmRpbmdBY3Rpb25zKSxcbiAgICAgICAgICAuLi50YXNrSWRzRnJvbVVybHMsXG4gICAgICAgICAgLi4udGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbCxcbiAgICAgICAgICAuLi4obWFudWFsUHNldWRvQWN0aW9uID8gZXh0cmFjdFRhc2tJZHNGcm9tUGVuZGluZ0FjdGlvbnNBcmdzKFttYW51YWxQc2V1ZG9BY3Rpb25dKSA6IFtdKSxcbiAgICAgICAgXS5tYXAoU3RyaW5nKVxuICAgICAgICBpZiAoYWZmZWN0ZWRUYXNrSWRzLmluY2x1ZGVzKFN0cmluZyhvcGVuVGFza1BhbmVsSWQpKSkge1xuICAgICAgICAgIHdpbmRvdy50YXNrUGFuZWw/LnJlZmV0Y2hUYXNrPy4oKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogYGFuc3dlci0ke21lbW9yeVNlc3Npb25JZH1gLFxuICAgICAgICBtZXNzYWdlOiBjb250ZW50VG9BZGQsXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgICBzb3VyY2VzLFxuICAgICAgICAuLi4oYXR0YWNobWVudHMubGVuZ3RoID4gMCA/IHsgYXR0YWNobWVudHMgfSA6IHt9KSxcbiAgICAgICAgbWVtb3J5U2Vzc2lvbklkLFxuICAgICAgICBzdWdnZXN0aW9uczogc3VnZ2VzdGlvbnMgfHwgW10sXG4gICAgICAgIC4uLihjcmVhdGVBZ2VudEZvbGxvd1VwID8geyBjcmVhdGVBZ2VudEZvbGxvd1VwIH0gOiB7fSksXG4gICAgICB9KVxuXG4gICAgICBpZiAoY3JlYXRlQWdlbnRGb2xsb3dVcD8uYWdlbnRJZCkge1xuICAgICAgICBmZXRjaEFnZW50RGV0YWlsKGNyZWF0ZUFnZW50Rm9sbG93VXAuYWdlbnRJZClcbiAgICAgICAgICAudGhlbihjaGF0QWdlbnQgPT4ge1xuICAgICAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdtYWlhLW1lcmdlLWNyZWF0ZWQtYWdlbnQtaW50by1saXN0Jywge1xuICAgICAgICAgICAgICAgIGRldGFpbDogeyBhZ2VudDogY2hhdEFnZW50IH0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1t1c2VDaGF0TWFuYWdlcl0gTm8gc2UgcHVkbyBhw7FhZGlyIGVsIGFnZW50ZSByZWNpw6luIGNyZWFkbyBhbCBsaXN0YWRvJywgZXJyKVxuICAgICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChlZGl0QWdlbnRGb2xsb3dVcD8uYWdlbnRJZCkge1xuICAgICAgICBmZXRjaEFnZW50RGV0YWlsKGVkaXRBZ2VudEZvbGxvd1VwLmFnZW50SWQpXG4gICAgICAgICAgLnRoZW4oY2hhdEFnZW50ID0+IHtcbiAgICAgICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnbWFpYS1zeW5jLWVkaXRlZC1hZ2VudC1mcm9tLWNoYXQnLCB7XG4gICAgICAgICAgICAgICAgZGV0YWlsOiB7IGFnZW50OiBjaGF0QWdlbnQgfSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignW3VzZUNoYXRNYW5hZ2VyXSBObyBzZSBwdWRvIHJlZnJlc2NhciBlbCBhZ2VudGUgZWRpdGFkbycsIGVycilcbiAgICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBpZiAoZmlyc3RUaW1lUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgY29uc3QgY3VzdG9tRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJ3JlZmV0Y2gtc2Vzc2lvbicpXG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY3VzdG9tRXZlbnQpXG4gICAgICAgIGZpcnN0VGltZVJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIH1cbiAgICB9LFxuICAgIFthZGRNZXNzYWdlLCByZW1vdmVNZXNzYWdlLCBwcm9qZWN0LCBnZXRUYWJUYXNrRGVmYXVsdCwgZXZlbnQsIGFnZW50XVxuICApXG5cbiAgY29uc3QgaGFuZGxlU3RyZWFtU3RvcCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjbGVhclN0cmVhbVVpUmVmLmN1cnJlbnQoKVxuICAgIGNvbnN0IHRlbXBNZXNzYWdlSWQgPSBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1zdHJlYW1pbmdgXG4gICAgc3RyZWFtaW5nU3RvcmUuY2xlYXIoKVxuICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICByZW1vdmVNZXNzYWdlKHRlbXBNZXNzYWdlSWQpXG5cbiAgICBhZGRNZXNzYWdlKHtcbiAgICAgIGlkOiBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1jYW5jZWxsZWRgLFxuICAgICAgbWVzc2FnZTogdCgnY2hhdC5jYW5jZWxsZWQnKSxcbiAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICBpc0Zyb250ZW5kQ2FuY2VsbGVkOiB0cnVlLFxuICAgIH0pXG4gICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgY3VzdG9tRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJ3JlZmV0Y2gtc2Vzc2lvbicpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGN1c3RvbUV2ZW50KVxuICAgIH0sIDUwMClcbiAgfSwgW2FkZE1lc3NhZ2UsIHJlbW92ZU1lc3NhZ2UsIHRdKVxuXG4gIGNvbnN0IGhhbmRsZUFwcHJvdmFsUmVxdWlyZWQgPSB1c2VDYWxsYmFjayhcbiAgICAoYXBwcm92YWw6IEFwcHJvdmFsUmVxdWVzdCwgYWNjdW11bGF0ZWRDb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHRlbXBNZXNzYWdlSWQgPSBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1zdHJlYW1pbmdgXG4gICAgICBzdHJlYW1pbmdTdG9yZS5jbGVhcigpXG4gICAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIHJlbW92ZU1lc3NhZ2UodGVtcE1lc3NhZ2VJZClcblxuICAgICAgY29uc3QgaGl0bENvbnRleHQ6IEhpdGxFeGVjdXRpb25Db250ZXh0ID0ge1xuICAgICAgICBtZXNzYWdlSWQ6IGBhcHByb3ZhbC0ke2FwcHJvdmFsLm9yaWdpbmFsX3RocmVhZF9pZH1gLFxuICAgICAgICBtZXNzYWdlVGV4dDogYWNjdW11bGF0ZWRDb250ZW50IHx8ICcnLFxuICAgICAgICBhcHByb3ZhbCxcbiAgICAgICAgcGVuZGluZ0FjdGlvbnM6IGFwcHJvdmFsLnBlbmRpbmdfYWN0aW9ucyxcbiAgICAgICAgdGhyZWFkSWRzOiBhcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnM/Lm1hcChhY3Rpb24gPT4gYWN0aW9uLnRocmVhZF9pZCksXG4gICAgICB9XG4gICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50ID0gaGl0bENvbnRleHRcblxuICAgICAgaWYgKGFwcHJvdmFsLm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCkge1xuICAgICAgICBjb25zdCBmaXJzdEFjdGlvbiA9IGFwcHJvdmFsLnBlbmRpbmdfYWN0aW9ucz8uWzBdXG4gICAgICAgIGNvbnN0IHRvb2xOYW1lID0gKGFwcHJvdmFsIGFzIHsgdG9vbF9uYW1lPzogc3RyaW5nIH0pLnRvb2xfbmFtZSA/PyBmaXJzdEFjdGlvbj8udG9vbF9uYW1lID8/ICcnXG4gICAgICAgIGNvbnN0IHRvb2xBcmdzID1cbiAgICAgICAgICAoKGFwcHJvdmFsIGFzIHsgdG9vbF9hcmdzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfSkudG9vbF9hcmdzID8/XG4gICAgICAgICAgICAoZmlyc3RBY3Rpb24/LnRvb2xfYXJncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCkpIHx8XG4gICAgICAgICAgbnVsbFxuICAgICAgICBpZiAodG9vbE5hbWUpIHtcbiAgICAgICAgICBsYXN0TWFudWFsQXBwcm92YWxSZWYuY3VycmVudCA9IHsgdG9vbE5hbWUsIHRvb2xBcmdzIH1cbiAgICAgICAgfVxuICAgICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBBZGQgYSBtZXNzYWdlIHdpdGggdGhlIGFwcHJvdmFsIHJlcXVlc3RcbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogYGFwcHJvdmFsLSR7YXBwcm92YWwub3JpZ2luYWxfdGhyZWFkX2lkfWAsXG4gICAgICAgIG1lc3NhZ2U6IGFjY3VtdWxhdGVkQ29udGVudCB8fCAnJyxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIGFwcHJvdmFsLFxuICAgICAgICBhcHByb3ZhbFN0YXR1czogJ3BlbmRpbmcnLFxuICAgICAgfSlcbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICB9LFxuICAgIFthZGRNZXNzYWdlLCByZW1vdmVNZXNzYWdlXVxuICApXG5cbiAgY29uc3Qge1xuICAgIGFza01haWEsXG4gICAgaXNMb2FkaW5nOiB3YWl0aW5nUmVzcG9uc2UsXG4gICAgaXNXcml0aW5nLFxuICAgIGxvYWRpbmdNZXNzYWdlLFxuICAgIHN0cmVhbUFjdGl2aXR5LFxuICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5LFxuICAgIHN0b3BTdHJlYW1pbmcsXG4gICAgYWJvcnRTdHJlYW1TaWxlbnRseSxcbiAgfSA9IHVzZU9yY2hlc3RyYXRvclN0cmVhbSh7XG4gICAgb25FcnJvcjogaGFuZGxlU3RyZWFtRXJyb3IsXG4gICAgb25TdHJlYW1VcGRhdGU6IGhhbmRsZVN0cmVhbVVwZGF0ZSxcbiAgICBvbkZpbmlzaFN0cmVhbTogaGFuZGxlU3RyZWFtRmluaXNoLFxuICAgIG9uU3RvcDogaGFuZGxlU3RyZWFtU3RvcCxcbiAgICBvbkFwcHJvdmFsUmVxdWlyZWQ6IGhhbmRsZUFwcHJvdmFsUmVxdWlyZWQsXG4gICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYsXG4gIH0pXG5cbiAgLy8gTWFudGVuZW1vcyBlbCBzZXR0ZXIgbcOhcyByZWNpZW50ZSBlbiB1bmEgcmVmIHBhcmEgcXVlIHB1ZWRhIHVzYXJzZSBkZXNkZVxuICAvLyBlZmVjdG9zIGRlZmluaWRvcyBhbnRlcyBlbiBlbCBhcmNoaXZvIChjYW1iaW8gZGUgY2hhdCwgcmVzZXQsIGV0Yy4pLlxuICBhYm9ydFN0cmVhbVNpbGVudGx5UmVmLmN1cnJlbnQgPSBhYm9ydFN0cmVhbVNpbGVudGx5XG4gIGNsZWFyU3RyZWFtVWlSZWYuY3VycmVudCA9ICgpID0+IHtcbiAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eShudWxsKVxuICAgIHNldEFjdGl2ZUxvYWRpbmdzKHt9KVxuICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBudWxsXG4gIH1cblxuICBjb25zdCBjdXJyZW50UHJvamVjdCA9IHByb2plY3RcblxuICBjb25zdCBzZW5kTWVzc2FnZSA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChcbiAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzT3JPcHRpb25zPzogQXR0YWNobWVudEZpbGVbXSB8IFNlbmRNZXNzYWdlT3B0aW9ucyxcbiAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgIHNjSWQ/OiBzdHJpbmdcbiAgICApID0+IHtcbiAgICAgIGlmIChpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCB8fCB3YWl0aW5nUmVzcG9uc2UgfHwgbG9hZGluZ01lc3NhZ2VzKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGF0dGFjaG1lbnRzLCBvcHRpb25zIH0gPSBub3JtYWxpemVTZW5kTWVzc2FnZUFyZ3MoYXR0YWNobWVudHNPck9wdGlvbnMpXG4gICAgICAvLyBMYXMgbWVudGlvbnMgcHVlZGVuIHZlbmlyIHbDrWEgNXRvIHBhcsOhbWV0cm8gKGNhbGwgcG9zaXRpb25hbCBkZXNkZSBlbCBmb290ZXIpXG4gICAgICAvLyBvIHbDrWEgU2VuZE1lc3NhZ2VPcHRpb25zIChjYWxsIHByb2dyYW3DoXRpY28pLiBFbCBwYXLDoW1ldHJvIGV4cGzDrWNpdG8gZ2FuYS5cbiAgICAgIGNvbnN0IGVmZmVjdGl2ZU1lbnRpb25zID0gbWVudGlvbnMgPz8gb3B0aW9ucy5tZW50aW9uc1xuICAgICAgY29uc3QgY29udGV4dE1lc3NhZ2U6IENvbnRleHRNZXNzYWdlIHwgdW5kZWZpbmVkID0gYnVpbGRDb250ZXh0TWVzc2FnZShlZmZlY3RpdmVNZW50aW9ucylcbiAgICAgIGNvbnN0IHBheWxvYWRGdWFJZCA9IGZ1YUlkID8/IG9wdGlvbnMuZnVhSWRcbiAgICAgIGNvbnN0IHBheWxvYWRTY0lkID0gc2NJZCA/PyBvcHRpb25zLnNjSWRcbiAgICAgIGNvbnN0IHBheWxvYWRDb250ZXh0RGF0YSA9IG9wdGlvbnMuY29udGV4dERhdGFcbiAgICAgIGNvbnN0IGRpc3BsYXlNZXNzYWdlID0gZm9ybWF0UXVpY2tBY3Rpb25NZXNzYWdlRm9yRGlzcGxheShtZXNzYWdlLCB7XG4gICAgICAgIGZ1YUlkOiBwYXlsb2FkRnVhSWQsXG4gICAgICAgIHNjSWQ6IHBheWxvYWRTY0lkLFxuICAgICAgfSlcblxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBjb25zdCBuZXdNZXNzYWdlSWQgPSB1dWlkdjQoKVxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gbmV3TWVzc2FnZUlkXG4gICAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBtZXNzYWdlXG5cbiAgICAgIGlmICghcmVwb3J0ZWRFdmVudC5jdXJyZW50KSB7XG4gICAgICAgIGV2ZW50KEVWRU5UUy5wbUFpVHlwZWRUZXh0KVxuICAgICAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSB0cnVlXG4gICAgICB9XG5cbiAgICAgIC8vIFZlcmlmaWNhciBzaSBlbCBjb250ZXh0byBnbG9iYWwgZXN0w6EgZGVzYWN0dWFsaXphZG9cbiAgICAgIGNvbnN0IGxhc3RNZXNzYWdlV2l0aFByb2plY3QgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbHRlcihtc2cgPT4gbXNnLnByb2plY3RJZCkuYXQoLTEpXG5cbiAgICAgIGNvbnN0IGN1cnJlbnRBZ2VudEZyb21NZXNzYWdlcyA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQ/LlttZXNzYWdlc1JlZi5jdXJyZW50Lmxlbmd0aCAtIDFdPy5hZ2VudElkXG5cbiAgICAgIC8vIE5vIGFncmVnYXIgcHJvamVjdElkIGFsIG1lbnNhamUgZGVsIHVzdWFyaW8gLSBzZSBkZXRlcm1pbmFyw6EgZGVzcHXDqXNcbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogYHF1ZXN0aW9uLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fWAsXG4gICAgICAgIG1lc3NhZ2U6IGRpc3BsYXlNZXNzYWdlLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiBjdXJyZW50VXNlcixcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLlVTRVIsXG4gICAgICAgIHNvdXJjZXM6IGF0dGFjaG1lbnRzLFxuICAgICAgICAuLi4oY29udGV4dE1lc3NhZ2UgPyB7IGNvbnRleHRNZXNzYWdlIH0gOiB7fSksXG4gICAgICB9KVxuXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuXG4gICAgICBjb25zdCBzdHJlYW1pbmdQbGFjZWhvbGRlcklkID0gYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tc3RyZWFtaW5nYFxuICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFxuICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBjdXJyZW50Q2hhdElkLmN1cnJlbnRcbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogc3RyZWFtaW5nUGxhY2Vob2xkZXJJZCxcbiAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiBhZ2VudD8ubmFtZSB8fCAnQXNzaXN0YW50JyB9LFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgfSlcblxuICAgICAgbGV0IGZpbmFsTWVzc2FnZSA9IG1lc3NhZ2VcblxuICAgICAgaWYgKG1lc3NhZ2UgPT09IHQoJ3FhLml0ZW1zLnJlbnRhYmlsaWRhZF9wcm95ZWN0bycpKSB7XG4gICAgICAgIGZpbmFsTWVzc2FnZSA9IGBGQVE6ICR7dCgncWEuaXRlbXMucmVudGFiaWxpZGFkX3Byb3llY3RvJyl9IC0gVGlwbyBkZSByZW50YWJpbGlkYWQ6ICR7XG4gICAgICAgICAgb3B0aW9ucy5wcm9qZWN0Q2hhbmdlZD8uaW5jb21lVHlwZSB8fCBjb250ZXh0UmVmLmN1cnJlbnQucHJvamVjdD8uaW5jb21lVHlwZVxuICAgICAgICB9YFxuICAgICAgfVxuXG4gICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgY29udGVudDogaGlzdG9yeU1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgcm9sZTogaGlzdG9yeU1lc3NhZ2UudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSA/IENoYXRIaXN0b3J5Um9sZS5VU0VSIDogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pKVxuXG4gICAgICBjb25zdCB7XG4gICAgICAgIGNoaXBzUHJvamVjdDogY3R4Q2hpcHNQcm9qZWN0LFxuICAgICAgICBwcm9qZWN0OiBjdHhQcm9qZWN0LFxuICAgICAgICBjbGllbnQ6IGN0eENsaWVudCxcbiAgICAgICAgdGFzazogY3R4VGFzayxcbiAgICAgIH0gPSBjb250ZXh0UmVmLmN1cnJlbnRcbiAgICAgIGNvbnN0IGxhc3RNZXNzYWdlUHJvamVjdElkID0gbGFzdE1lc3NhZ2VXaXRoUHJvamVjdD8ucHJvamVjdElkXG4gICAgICBjb25zdCBwcm9qZWN0VG9SZXF1ZXN0ID0gcmVzb2x2ZVByb2plY3RUb1JlcXVlc3QoY3R4Q2hpcHNQcm9qZWN0LCBsYXN0TWVzc2FnZVByb2plY3RJZClcblxuICAgICAgY29uc29sZS5pbmZvKCdbdXNlQ2hhdE1hbmFnZXJdIHNlbmRNZXNzYWdlIGNvbnRleHQgcmVzb2x1dGlvbjonLCB7XG4gICAgICAgIGNoaXBzUHJvamVjdDogY3R4Q2hpcHNQcm9qZWN0LFxuICAgICAgICBjaGlwc1Byb2plY3RJZDogY3R4Q2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgPyBOdW1iZXIoY3R4Q2hpcHNQcm9qZWN0LnByb2plY3RJZCkgOiBudWxsLFxuICAgICAgICBsYXN0TWVzc2FnZVByb2plY3RJZCxcbiAgICAgICAgcHJvamVjdFRvUmVxdWVzdCxcbiAgICAgICAgY2xpZW50SWQ6IGN0eENsaWVudD8uaWQsXG4gICAgICAgIHRhc2tJZDogY3R4VGFzaz8uaWQsXG4gICAgICAgIHByb2plY3RQcm9wSWQ6IGN0eFByb2plY3Q/LmlkLFxuICAgICAgICBhZ2VudFR5cGU6IGFnZW50Py50eXBlLFxuICAgICAgfSlcblxuICAgICAgY29uc3QgcHJvamVjdHMgPSBhd2FpdCBmZXRjaFByb2plY3RzKFtwcm9qZWN0VG9SZXF1ZXN0XSlcblxuICAgICAgY29uc3QgcGF5bG9hZEZhcUlkID0gZmFxSWQgPz8gb3B0aW9ucy5mYXFJZFxuICAgICAgY29uc3QgcGF5bG9hZEFnZW50U3VnZ2VzdGlvbklkID0gYWdlbnRTdWdnZXN0aW9uSWQgPz8gb3B0aW9ucy5hZ2VudFN1Z2dlc3Rpb25JZFxuXG4gICAgICBjb25zdCBwYXlsb2FkRGF0YSA9IHtcbiAgICAgICAgbWVzc2FnZTogZmluYWxNZXNzYWdlLFxuICAgICAgICBoaXN0b3J5LFxuICAgICAgICBwcm9qZWN0SWQ6IHByb2plY3RUb1JlcXVlc3QsXG4gICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgIHVzZXJJZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgZmlyc3ROYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgICAgIGxhc3ROYW1lOiBhdXRoVXNlci5sYXN0TmFtZSxcbiAgICAgICAgY29tcGFueUlkOiBhdXRoVXNlci5jb21wYW55X2lkLnRvU3RyaW5nKCksXG4gICAgICAgIGNoYXRJZDogY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgICAgICBtZXNzYWdlSWQ6IGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCxcbiAgICAgICAgYWdlbnROYW1lOiBhZ2VudD8ubmFtZSB8fCAnJyxcbiAgICAgICAgYWdlbnRJZDogY3VycmVudEFnZW50RnJvbU1lc3NhZ2VzIHx8IGFnZW50Py5pZCEsXG4gICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlOiBpc1dlYlNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmU6IGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAuLi4oY3R4UHJvamVjdD8uZmVlSWQgIT0gbnVsbCA/IHsgZmVlSWQ6IE51bWJlcihjdHhQcm9qZWN0LmZlZUlkKSB9IDoge30pLFxuICAgICAgICAuLi5yZXNvbHZlQ2xpZW50UGF5bG9hZChjdHhDbGllbnQsIGN0eFByb2plY3QpLFxuICAgICAgICAuLi4ocHJvamVjdHM/Lmxlbmd0aCA/IHsgcHJvamVjdE5hbWU6IHByb2plY3RzWzBdLm5hbWUgfSA6IHt9KSxcbiAgICAgICAgLi4uKGN0eFRhc2s/LmlkICE9IG51bGxcbiAgICAgICAgICA/IHsgdGFza0lkOiBOdW1iZXIoY3R4VGFzay5pZCksIC4uLihjdHhUYXNrLm5hbWUgPyB7IHRhc2tOYW1lOiBjdHhUYXNrLm5hbWUgfSA6IHt9KSB9XG4gICAgICAgICAgOiB7fSksXG4gICAgICAgIC4uLihhdHRhY2htZW50cy5sZW5ndGggPiAwID8geyBhdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICAuLi4ocGF5bG9hZEZhcUlkID8geyBmYXFJZDogcGF5bG9hZEZhcUlkIH0gOiB7fSksXG4gICAgICAgIC4uLihwYXlsb2FkQWdlbnRTdWdnZXN0aW9uSWQgPyB7IGFnZW50U3VnZ2VzdGlvbklkOiBwYXlsb2FkQWdlbnRTdWdnZXN0aW9uSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRGdWFJZCA/IHsgZnVhSWQ6IHBheWxvYWRGdWFJZCB9IDoge30pLFxuICAgICAgICAuLi4ocGF5bG9hZFNjSWQgPyB7IHNjSWQ6IHBheWxvYWRTY0lkIH0gOiB7fSksXG4gICAgICAgIC4uLihhZ2VudD8uZW50aXR5ICE9IG51bGwgPyB7IGFnZW50RW50aXR5OiBhZ2VudC5lbnRpdHkgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50Py50eXBlICE9IG51bGwgPyB7IGFnZW50VHlwZTogYWdlbnQudHlwZSB9IDoge30pLFxuICAgICAgICAuLi4oY29udGV4dE1lc3NhZ2UgPyB7IGNvbnRleHRNZXNzYWdlIH0gOiB7fSksXG4gICAgICAgIC4uLihwYXlsb2FkQ29udGV4dERhdGEgPyB7IGNvbnRleHREYXRhOiBwYXlsb2FkQ29udGV4dERhdGEgfSA6IHt9KSxcbiAgICAgIH1cblxuICAgICAgYXNrTWFpYShwYXlsb2FkRGF0YSlcbiAgICB9LFxuICAgIFtcbiAgICAgIGFkZE1lc3NhZ2UsXG4gICAgICBldmVudCxcbiAgICAgIGFza01haWEsXG4gICAgICBwcm9qZWN0LFxuICAgICAgY2xpZW50LFxuICAgICAgdGFzayxcbiAgICAgIGNoaXBzUHJvamVjdCxcbiAgICAgIGF1dGhVc2VyLFxuICAgICAgYWdlbnQsXG4gICAgICB0LFxuICAgICAgd2FpdGluZ1Jlc3BvbnNlLFxuICAgICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgXVxuICApXG5cbiAgY29uc3QgY2hhbmdlUHJvamVjdCA9IHVzZUNhbGxiYWNrKFxuICAgIChvcHRpb246IFByb2plY3QpID0+IHtcbiAgICAgIGlmICghY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50KSByZXR1cm5cblxuICAgICAgaWYgKG9wdGlvbi5pZCAhPT0gcHJvamVjdD8uaWQpIHtcbiAgICAgICAgc2V0UHJvamVjdChvcHRpb24pXG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9qZWN0ICYmIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCkge1xuICAgICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgICBjb250ZW50OiBoaXN0b3J5TWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIH0pKVxuXG4gICAgICAgIGNvbnNvbGUuaW5mbygnW3VzZUNoYXRNYW5hZ2VyXSBQQVRIPWNoYW5nZVByb2plY3Qg4oCUIHVzYSBvcHRpb24uaWQgZGlyZWN0byAoTk8gY2hpcHNQcm9qZWN0KTonLCB7XG4gICAgICAgICAgb3B0aW9uSWQ6IG9wdGlvbi5pZCxcbiAgICAgICAgICBwcm9qZWN0UHJvcElkOiBwcm9qZWN0Py5pZCA/PyBudWxsLFxuICAgICAgICAgIGNoaXBzUHJvamVjdElkOiBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCA/PyBudWxsLFxuICAgICAgICAgIGFnZW50VHlwZTogYWdlbnQ/LnR5cGUsXG4gICAgICAgIH0pXG5cbiAgICAgICAgYXNrTWFpYSh7XG4gICAgICAgICAgbWVzc2FnZTogY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50LFxuICAgICAgICAgIGhpc3RvcnksXG4gICAgICAgICAgcHJvamVjdElkOiBvcHRpb24uaWQsXG4gICAgICAgICAgbGFuZzogYXV0aFVzZXIubGFuZyxcbiAgICAgICAgICB1c2VySWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgZmlyc3ROYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgICAgICAgbGFzdE5hbWU6IGF1dGhVc2VyLmxhc3ROYW1lLFxuICAgICAgICAgIGNvbXBhbnlJZDogYXV0aFVzZXIuY29tcGFueV9pZC50b1N0cmluZygpLFxuICAgICAgICAgIGNoYXRJZDogY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgICAgICAgIG1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuICAgICAgICAgIGFnZW50TmFtZTogYWdlbnQ/Lm5hbWUgfHwgJycsXG4gICAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkIHx8ICcnLFxuICAgICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlOiBpc1dlYlNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgICAgLi4uKG9wdGlvbj8uZmVlSWQgIT0gbnVsbCA/IHsgZmVlSWQ6IE51bWJlcihvcHRpb24uZmVlSWQpIH0gOiB7fSksXG4gICAgICAgICAgLi4uKG9wdGlvbj8uY2xpZW50SWQgIT0gbnVsbCA/IHsgY2xpZW50SWQ6IE51bWJlcihvcHRpb24uY2xpZW50SWQpIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGFnZW50Py5lbnRpdHkgIT0gbnVsbCA/IHsgYWdlbnRFbnRpdHk6IGFnZW50LmVudGl0eSB9IDoge30pLFxuICAgICAgICAgIC4uLihhZ2VudD8udHlwZSAhPSBudWxsID8geyBhZ2VudFR5cGU6IGFnZW50LnR5cGUgfSA6IHt9KSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9LFxuICAgIFtwcm9qZWN0LCBzZXRQcm9qZWN0LCBhc2tNYWlhLCBhdXRoVXNlciwgaXNXZWJTZWFyY2hBY3RpdmUsIGFnZW50XVxuICApXG5cbiAgY29uc3QgaGFuZGxlRmVlZGJhY2sgPSB1c2VDYWxsYmFjayhhc3luYyAoZmVlZGJhY2tQcm9wOiBGZWVkYmFjaywgY2hhdE1lc3NhZ2VJZDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBtYWlhLkNoYXRzLndhc0hlbHBmdWxDaGF0KGNoYXRNZXNzYWdlSWQsIGZlZWRiYWNrUHJvcCA9PT0gRmVlZGJhY2suVEhVTUJTX1VQKVxuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgbWVzc2FnZXNSZWYuY3VycmVudCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKG1lc3NhZ2UgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZS5pZCA9PT0gY2hhdE1lc3NhZ2VJZCAmJiBtZXNzYWdlLnJvbGUgPT09ICdhc3Npc3RhbnQnKSB7XG4gICAgICAgICAgcmV0dXJuIHsgLi4ubWVzc2FnZSwgd2FzSGVscGZ1bDogZmVlZGJhY2tQcm9wID09PSBGZWVkYmFjay5USFVNQlNfVVAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXNzYWdlXG4gICAgICB9KVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgaGFuZGxlQXBwcm92YWxEZWNpc2lvbiA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChcbiAgICAgIHRocmVhZElkczogc3RyaW5nW10sXG4gICAgICBkZWNpc2lvbjogJ2FwcHJvdmUnIHwgJ3JlamVjdCcsXG4gICAgICBlZGl0ZWRBY3Rpb25zPzogQXJyYXk8eyB0b29sX25hbWU6IHN0cmluZzsgYXJnczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfT5cbiAgICApID0+IHtcbiAgICAgIGlmICghdGhyZWFkSWRzPy5sZW5ndGgpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignTm8gdGhyZWFkX2lkcyBwcm92aWRlZCBmb3IgYXBwcm92YWwgZGVjaXNpb24nKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gQnVzY2FyIGVsIG1lbnNhamUgcXVlIGNvbnRpZW5lIGFsZ3VubyBkZSBlc3RvcyB0aHJlYWRJZHMgZW4gc3VzIHBlbmRpbmdfYWN0aW9uc1xuICAgICAgY29uc3QgbWVzc2FnZVdpdGhBcHByb3ZhbCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmluZChtID0+XG4gICAgICAgIG0uYXBwcm92YWw/LnBlbmRpbmdfYWN0aW9ucz8uc29tZShhY3Rpb24gPT4gdGhyZWFkSWRzLmluY2x1ZGVzKGFjdGlvbi50aHJlYWRfaWQpKVxuICAgICAgKVxuXG4gICAgICBpZiAoIW1lc3NhZ2VXaXRoQXBwcm92YWwgfHwgIW1lc3NhZ2VXaXRoQXBwcm92YWwuYXBwcm92YWwpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignTm8gc2UgZW5jb250csOzIG1lbnNhamUgY29uIGFwcHJvdmFsIHBhcmEgdGhyZWFkX2lkczonLCB0aHJlYWRJZHMpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGFwcHJvdmFsIH0gPSBtZXNzYWdlV2l0aEFwcHJvdmFsXG4gICAgICBjb25zdCBtZXNzYWdlSWQgPSBtZXNzYWdlV2l0aEFwcHJvdmFsLmlkXG4gICAgICBjb25zdCBsb2FkaW5nS2V5ID0gdGhyZWFkSWRzWzBdXG5cbiAgICAgIGNvbnN0IGhpdGxDb250ZXh0OiBIaXRsRXhlY3V0aW9uQ29udGV4dCA9IHtcbiAgICAgICAgbWVzc2FnZUlkLFxuICAgICAgICBtZXNzYWdlVGV4dDogbWVzc2FnZVdpdGhBcHByb3ZhbC5tZXNzYWdlLFxuICAgICAgICBhcHByb3ZhbCxcbiAgICAgICAgcGVuZGluZ0FjdGlvbnM6IGFwcHJvdmFsLnBlbmRpbmdfYWN0aW9ucyxcbiAgICAgICAgdGhyZWFkSWRzLFxuICAgICAgfVxuICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYuY3VycmVudCA9IGhpdGxDb250ZXh0XG5cbiAgICAgIGNvbnN0IGluaXRpYWxBY3Rpdml0eSA9IHJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5KHQsIGhpdGxDb250ZXh0KVxuXG4gICAgICAvLyBVcGRhdGUgbWVzc2FnZSBzdGF0dXMgaW1tZWRpYXRlbHlcbiAgICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQgPSBtZXNzYWdlc1JlZi5jdXJyZW50Lm1hcChtZXNzYWdlID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2UuaWQgPT09IG1lc3NhZ2VJZCkge1xuICAgICAgICAgIGNvbnN0IG5ld1N0YXR1cyA9IGRlY2lzaW9uID09PSAnYXBwcm92ZScgPyAnYXBwcm92ZWQnIDogJ3JlamVjdGVkJ1xuICAgICAgICAgIHJldHVybiB7IC4uLm1lc3NhZ2UsIGFwcHJvdmFsU3RhdHVzOiBuZXdTdGF0dXMgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXNzYWdlXG4gICAgICB9KVxuXG4gICAgICAvLyBUcmlnZ2VyIHJlLXJlbmRlclxuICAgICAgY29uc3QgZXhpc3RpbmdNZXNzYWdlID0gbWVzc2FnZXNSZWYuY3VycmVudC5maW5kKG0gPT4gbS5pZCA9PT0gbWVzc2FnZUlkKVxuICAgICAgaWYgKGV4aXN0aW5nTWVzc2FnZSkge1xuICAgICAgICBjb25zdCBuZXdTdGF0dXMgPSBkZWNpc2lvbiA9PT0gJ2FwcHJvdmUnID8gJ2FwcHJvdmVkJyA6ICdyZWplY3RlZCdcbiAgICAgICAgYWRkTWVzc2FnZSh7IC4uLmV4aXN0aW5nTWVzc2FnZSwgYXBwcm92YWxTdGF0dXM6IG5ld1N0YXR1cyB9KVxuICAgICAgfVxuXG4gICAgICAvLyBDYWxsIGNvbnRpbnVlLXRocmVhZCBlbmRwb2ludCB3aXRoIEFMTCB0aHJlYWRfaWRzIGluIGEgc2luZ2xlIHJlcXVlc3RcbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gdXVpZHY0KClcblxuICAgICAgLy8gQWRkIGxvYWRpbmdcbiAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4gKHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgW2xvYWRpbmdLZXldOiBpbml0aWFsQWN0aXZpdHkubWVzc2FnZSxcbiAgICAgIH0pKVxuICAgICAgdXBkYXRlU3RyZWFtQWN0aXZpdHkoaW5pdGlhbEFjdGl2aXR5KVxuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuT3JjaGVzdHJhdG9yLmNvbnRpbnVlVGhyZWFkKHtcbiAgICAgICAgICB0aHJlYWRJZHMsIC8vIFNlbmQgYWxsIGFjdGlvbiB0aHJlYWRfaWRzIGF0IG9uY2VcbiAgICAgICAgICBzZXNzaW9uSWQ6IGFwcHJvdmFsLnNlc3Npb25faWQsXG4gICAgICAgICAgZGVjaXNpb246IGVkaXRlZEFjdGlvbnMgPyAnZWRpdCcgOiBkZWNpc2lvbixcbiAgICAgICAgICBlZGl0ZWRBY3Rpb25zLFxuICAgICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCB8fCAnJyxcbiAgICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICBoYW5kbGVTdHJlYW1FcnJvcigpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcm9jZXNzIFNTRSBzdHJlYW1cbiAgICAgICAgYXdhaXQgcHJvY2Vzc1NTRVN0cmVhbShyZXNwb25zZSwgbG9hZGluZ0tleSwge1xuICAgICAgICAgIG9uVGhpbmtpbmc6ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2aXR5OiBTdHJlYW1BY3Rpdml0eSA9IHtcbiAgICAgICAgICAgICAgcGhhc2U6ICd0aGlua2luZycsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UoMCwgdCksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eShhY3Rpdml0eSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uVG9rZW46IChjb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5KGdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSh0KSlcbiAgICAgICAgICAgIGhhbmRsZVN0cmVhbVVwZGF0ZShjb250ZW50LCBudWxsLCAnJylcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uTm9kZTogKG1lc3NhZ2U6IHN0cmluZywgY3VycmVudFRocmVhZElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVBY3Rpdml0eSA9IHJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5KFxuICAgICAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgICAgICB0LFxuICAgICAgICAgICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50LFxuICAgICAgICAgICAgICBjdXJyZW50VGhyZWFkSWQsXG4gICAgICAgICAgICAgIHsgdXNlUmVzdW1pbmdGYWxsYmFjazogdHJ1ZSB9XG4gICAgICAgICAgICApXG4gICAgICAgICAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eShub2RlQWN0aXZpdHkpXG4gICAgICAgICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+ICh7XG4gICAgICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgICAgIFtjdXJyZW50VGhyZWFkSWRdOiBub2RlQWN0aXZpdHkubWVzc2FnZSxcbiAgICAgICAgICAgIH0pKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25Db21wbGV0ZTogKFxuICAgICAgICAgICAgZmluYWxDb250ZW50OiBzdHJpbmcsXG4gICAgICAgICAgICBzb3VyY2VzOiBhbnksXG4gICAgICAgICAgICBtZW1vcnlTZXNzaW9uSWQ6IHN0cmluZyxcbiAgICAgICAgICAgIGN1cnJlbnRUaHJlYWRJZDogc3RyaW5nLFxuICAgICAgICAgICAgYXR0YWNobWVudHM/OiBhbnlbXSB8IG51bGwsXG4gICAgICAgICAgICBzdWdnZXN0aW9ucz86IHN0cmluZ1tdIHwgbnVsbCxcbiAgICAgICAgICAgIGFnZW50SWQ/OiBzdHJpbmcgfCBudWxsXG4gICAgICAgICAgKSA9PiB7XG4gICAgICAgICAgICBoYW5kbGVTdHJlYW1GaW5pc2goZmluYWxDb250ZW50LCBzb3VyY2VzLCBtZW1vcnlTZXNzaW9uSWQsIGF0dGFjaG1lbnRzLCBzdWdnZXN0aW9ucywgYWdlbnRJZClcbiAgICAgICAgICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5KG51bGwpXG4gICAgICAgICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICAgICAgc2V0QWN0aXZlTG9hZGluZ3MocHJldiA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld0xvYWRpbmdzID0geyAuLi5wcmV2IH1cbiAgICAgICAgICAgICAgZGVsZXRlIG5ld0xvYWRpbmdzW2N1cnJlbnRUaHJlYWRJZF1cbiAgICAgICAgICAgICAgcmV0dXJuIG5ld0xvYWRpbmdzXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25BcHByb3ZhbFJlcXVpcmVkOiAoYXBwcm92YWxQYXlsb2FkOiBhbnksIGFjY3VtdWxhdGVkQ29udGVudDogc3RyaW5nLCBjdXJyZW50VGhyZWFkSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgLy8gTmV3IEhJVEwgaW50ZXJydXB0aW9uIGRldGVjdGVkIGFmdGVyIHJlc3VtZSAoY2hhaW5lZCBhY3Rpb25zKVxuICAgICAgICAgICAgdXBkYXRlU3RyZWFtQWN0aXZpdHkobnVsbClcbiAgICAgICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3TG9hZGluZ3MgPSB7IC4uLnByZXYgfVxuICAgICAgICAgICAgICBkZWxldGUgbmV3TG9hZGluZ3NbY3VycmVudFRocmVhZElkXVxuICAgICAgICAgICAgICByZXR1cm4gbmV3TG9hZGluZ3NcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkKGFwcHJvdmFsUGF5bG9hZCBhcyBBcHByb3ZhbFJlcXVlc3QsIGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uRXJyb3I6ICgpID0+IHtcbiAgICAgICAgICAgIGhhbmRsZVN0cmVhbUVycm9yKClcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlU3RyZWFtRXJyb3IoKVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgYXV0aFVzZXIsXG4gICAgICBhZ2VudCxcbiAgICAgIGFkZE1lc3NhZ2UsXG4gICAgICBoYW5kbGVTdHJlYW1FcnJvcixcbiAgICAgIGhhbmRsZVN0cmVhbVVwZGF0ZSxcbiAgICAgIGhhbmRsZVN0cmVhbUZpbmlzaCxcbiAgICAgIGhhbmRsZUFwcHJvdmFsUmVxdWlyZWQsXG4gICAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eSxcbiAgICAgIHQsXG4gICAgXVxuICApXG5cbiAgY29uc3QgaW5pdGlhbGl6ZUNoYXQgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFmaXJzdFRpbWVSZWYuY3VycmVudCkge1xuICAgICAgZmlyc3RUaW1lUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgfVxuICAgIGlmIChpbml0aWFsQ2hhdElkKSB7XG4gICAgICBhd2FpdCBsb2FkTWVzc2FnZXMoKVxuICAgIH0gZWxzZSBpZiAodXNlckluaXRpYWxNZXNzYWdlKSB7XG4gICAgICBjb25zdCBoYXNJbml0aWFsTWVzc2FnZSA9IEJvb2xlYW4odXNlckluaXRpYWxNZXNzYWdlLm1lc3NhZ2U/LnRyaW0oKSlcbiAgICAgIGNvbnN0IGhhc0luaXRpYWxBdHRhY2htZW50cyA9IEJvb2xlYW4odXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzPy5sZW5ndGgpXG4gICAgICBjb25zdCBoYXNJbml0aWFsRmFxID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2UuZmFxSWQpXG4gICAgICBjb25zdCBoYXNJbml0aWFsRnVhID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2UuZnVhSWQpXG4gICAgICBjb25zdCBoYXNJbml0aWFsU2MgPSBCb29sZWFuKHVzZXJJbml0aWFsTWVzc2FnZS5zY0lkKVxuXG4gICAgICBpZiAoIWhhc0luaXRpYWxNZXNzYWdlICYmICFoYXNJbml0aWFsQXR0YWNobWVudHMgJiYgIWhhc0luaXRpYWxGYXEgJiYgIWhhc0luaXRpYWxGdWEgJiYgIWhhc0luaXRpYWxTYykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgaGlzdG9yeSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKGhpc3RvcnlNZXNzYWdlID0+ICh7XG4gICAgICAgIGNvbnRlbnQ6IGhpc3RvcnlNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KSlcblxuICAgICAgY29uc3Qge1xuICAgICAgICBjaGlwc1Byb2plY3Q6IGN0eENoaXBzUHJvamVjdCxcbiAgICAgICAgcHJvamVjdDogY3R4UHJvamVjdCxcbiAgICAgICAgY2xpZW50OiBjdHhDbGllbnQsXG4gICAgICAgIHRhc2s6IGN0eFRhc2ssXG4gICAgICB9ID0gY29udGV4dFJlZi5jdXJyZW50XG4gICAgICBjb25zdCBwcm9qZWN0VG9SZXF1ZXN0ID0gcmVzb2x2ZVByb2plY3RUb1JlcXVlc3QoY3R4Q2hpcHNQcm9qZWN0LCBudWxsKSA/PyBjdHhQcm9qZWN0Py5pZCA/PyBudWxsXG5cbiAgICAgIGNvbnNvbGUuaW5mbygnW3VzZUNoYXRNYW5hZ2VyXSBQQVRIPWluaXRpYWxpemVDaGF0L3VzZXJJbml0aWFsTWVzc2FnZSDigJQgY29udGV4dFJlZiByZXNvbHV0aW9uOicsIHtcbiAgICAgICAgcHJvamVjdFByb3BJZDogY3R4UHJvamVjdD8uaWQgPz8gbnVsbCxcbiAgICAgICAgY2xpZW50SWQ6IGN0eENsaWVudD8uaWQgPz8gbnVsbCxcbiAgICAgICAgdGFza0lkOiBjdHhUYXNrPy5pZCA/PyBudWxsLFxuICAgICAgICBjaGlwc1Byb2plY3RJZDogY3R4Q2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgPz8gbnVsbCxcbiAgICAgICAgcHJvamVjdFRvUmVxdWVzdCxcbiAgICAgICAgYWdlbnRUeXBlOiBhZ2VudD8udHlwZSxcbiAgICAgIH0pXG5cbiAgICAgIGFza01haWEoe1xuICAgICAgICBtZXNzYWdlOiB1c2VySW5pdGlhbE1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgaGlzdG9yeSxcbiAgICAgICAgcHJvamVjdElkOiBwcm9qZWN0VG9SZXF1ZXN0LFxuICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICB1c2VySWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICAgIGZpcnN0TmFtZTogYXV0aFVzZXIuZmlyc3ROYW1lLFxuICAgICAgICBsYXN0TmFtZTogYXV0aFVzZXIubGFzdE5hbWUsXG4gICAgICAgIGNvbXBhbnlJZDogYXV0aFVzZXIuY29tcGFueV9pZC50b1N0cmluZygpLFxuICAgICAgICBjaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgICAgbWVzc2FnZUlkOiBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQsXG4gICAgICAgIGFnZW50TmFtZTogYWdlbnQ/Lm5hbWUhLFxuICAgICAgICBhZ2VudElkOiBhZ2VudD8uaWQhLFxuICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlOiBpc0RlZXBTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgLi4uKGN0eFByb2plY3Q/LmZlZUlkICE9IG51bGwgPyB7IGZlZUlkOiBOdW1iZXIoY3R4UHJvamVjdC5mZWVJZCkgfSA6IHt9KSxcbiAgICAgICAgLi4ucmVzb2x2ZUNsaWVudFBheWxvYWQoY3R4Q2xpZW50LCBjdHhQcm9qZWN0KSxcbiAgICAgICAgLi4uKGN0eFByb2plY3Q/Lm5hbWUgPyB7IHByb2plY3ROYW1lOiBjdHhQcm9qZWN0Lm5hbWUgfSA6IHt9KSxcbiAgICAgICAgLi4uKGN0eFRhc2s/LmlkICE9IG51bGxcbiAgICAgICAgICA/IHsgdGFza0lkOiBOdW1iZXIoY3R4VGFzay5pZCksIC4uLihjdHhUYXNrLm5hbWUgPyB7IHRhc2tOYW1lOiBjdHhUYXNrLm5hbWUgfSA6IHt9KSB9XG4gICAgICAgICAgOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHMgPyB7IGF0dGFjaG1lbnRzOiB1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHMgfSA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5mYXFJZCA/IHsgZmFxSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5mYXFJZCB9IDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmFnZW50U3VnZ2VzdGlvbklkID8geyBhZ2VudFN1Z2dlc3Rpb25JZDogdXNlckluaXRpYWxNZXNzYWdlLmFnZW50U3VnZ2VzdGlvbklkIH0gOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuZnVhSWQgPyB7IGZ1YUlkOiB1c2VySW5pdGlhbE1lc3NhZ2UuZnVhSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5zY0lkID8geyBzY0lkOiB1c2VySW5pdGlhbE1lc3NhZ2Uuc2NJZCB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnQ/LmVudGl0eSAhPSBudWxsID8geyBhZ2VudEVudGl0eTogYWdlbnQuZW50aXR5IH0gOiB7fSksXG4gICAgICAgIC4uLihhZ2VudD8udHlwZSAhPSBudWxsID8geyBhZ2VudFR5cGU6IGFnZW50LnR5cGUgfSA6IHt9KSxcbiAgICAgICAgLi4uKGJ1aWxkQ29udGV4dE1lc3NhZ2UodXNlckluaXRpYWxNZXNzYWdlLm1lbnRpb25zKVxuICAgICAgICAgID8geyBjb250ZXh0TWVzc2FnZTogYnVpbGRDb250ZXh0TWVzc2FnZSh1c2VySW5pdGlhbE1lc3NhZ2UubWVudGlvbnMpIH1cbiAgICAgICAgICA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5jb250ZXh0RGF0YSA/IHsgY29udGV4dERhdGE6IHVzZXJJbml0aWFsTWVzc2FnZS5jb250ZXh0RGF0YSB9IDoge30pLFxuICAgICAgfSlcbiAgICB9XG4gIH0sIFtcbiAgICBpbml0aWFsQ2hhdElkLFxuICAgIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgICBwcm9qZWN0LFxuICAgIGNsaWVudCxcbiAgICB0YXNrLFxuICAgIGF1dGhVc2VyLFxuICAgIGFnZW50LFxuICAgIGFza01haWEsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICBdKVxuXG4gIGNvbnN0IHJlc2V0Q2hhdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBhYm9ydFN0cmVhbVNpbGVudGx5UmVmLmN1cnJlbnQoKVxuICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50ID0gbnVsbFxuICAgIGN1cnJlbnRDaGF0SWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgcmVwb3J0ZWRFdmVudC5jdXJyZW50ID0gZmFsc2VcbiAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgc3RyZWFtaW5nU3RvcmUuY2xlYXIoKVxuICB9LCBbXSlcblxuICBjb25zdCBzdG9wR2VuZXJhdGlvbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzdG9wU3RyZWFtaW5nKClcbiAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gIH0sIFtzdG9wU3RyZWFtaW5nXSlcblxuICByZXR1cm4ge1xuICAgIG1lc3NhZ2VzLFxuICAgIGxvYWRpbmdNZXNzYWdlcyxcbiAgICBpc0xvYWRpbmdNb3JlTWVzc2FnZXMsXG4gICAgd2FpdGluZ1Jlc3BvbnNlLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBzdHJlYW1BY3Rpdml0eSxcbiAgICBhY3RpdmVMb2FkaW5ncyxcbiAgICBjdXJyZW50UHJvamVjdCxcbiAgICBjdXJyZW50Q2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgY3VycmVudE1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuXG4gICAgc2VuZE1lc3NhZ2UsXG4gICAgY2hhbmdlUHJvamVjdCxcbiAgICBoYW5kbGVGZWVkYmFjayxcbiAgICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uLFxuICAgIGhhbmRsZVNjcm9sbCxcbiAgICBpbml0aWFsaXplQ2hhdCxcbiAgICByZXNldENoYXQsXG4gICAgc3RvcEdlbmVyYXRpb24sXG5cbiAgICBpc0Rpc2FibGVkOiB3YWl0aW5nUmVzcG9uc2UgfHwgbG9hZGluZ01lc3NhZ2VzLFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxXQUFXLEVBQUVDLE1BQU0sRUFBRUMsU0FBUyxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNoRSxTQUFTQyxFQUFFLElBQUlDLE1BQU0sUUFBUSxNQUFNO0FBQ25DLFNBQVNDLGVBQWUsUUFBUSxvQkFBb0I7QUFDcEQsU0FBU0MscUJBQXFCLFFBQVEsMEJBQTBCO0FBQ2hFLFNBQVNDLElBQUksUUFBUSxTQUFTO0FBRzlCLFNBQVNDLE9BQU8sUUFBaUIsd0JBQXdCO0FBQ3pELFNBQVNDLGdCQUFnQixRQUFRLDhCQUE4QjtBQUMvRCxTQUFTQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxhQUFhO0FBQzlDLE9BQU9DLElBQUksTUFBTSxxQkFBcUI7QUFDdEMsU0FBU0MsUUFBUSxRQUFRLDREQUE0RDtBQUNyRixTQUF1Q0MsZUFBZSxRQUF3QyxrQkFBa0I7QUFDaEgsU0FBeUNDLG1CQUFtQixRQUFRLDRCQUE0QjtBQUNoRyxTQUFTQyxrQ0FBa0MsUUFBUSxzQ0FBc0M7QUFHekYsU0FBU0MsV0FBVyxRQUFRLGdCQUFnQjtBQUM1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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@projectcor/maia-components",
3
- "version": "2.11.65-23",
3
+ "version": "2.11.65-24",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "repository": {