@projectcor/maia-components 2.11.15-1 → 2.11.15-10

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.
@@ -21,7 +21,7 @@ import { EmptyHistoryIcon } from '../../atoms/icons/EmptyHistory';
21
21
  import { useResizeListener } from '../../../hooks/useResize';
22
22
  import { useChats } from '../../../hooks/useChats';
23
23
  import { Loader } from '../../atoms/Loader';
24
- import { ErrorState, MAIAIcon, NewChat } from '../../atoms/icons';
24
+ import { ErrorState, MAIAIcon, MaiaStoreIcon, NewChat } from '../../atoms/icons';
25
25
  import { EVENTS } from '../../../hooks/useEvent';
26
26
  import { useT } from '../../../hooks/useT';
27
27
  import { OptionItem } from '../../atoms/CardMenu/CardMenu';
@@ -34,7 +34,8 @@ import { FeedbackButton } from '../../atoms/FeedbackButton';
34
34
  import { useGlobalContext } from '../../../context/global-context';
35
35
  import { fetchMaia } from '../../../services/maia/client';
36
36
  import { mapCORLang } from '../../../lang/utils';
37
- import { SCLHCWrapper, SCLHCWrapperAgent, SCLHCWrapperAgentText, SCLHCWrapperButtonActions, SCLHCWrapperContent, SCLHCWrapperTitle, SCSWrapperCollapsedButton, SCSWrapperNewChatIcon } from './Sidebar.styles';
37
+ import { SCLHCWrapper, SCLHCWrapperAgent, SCLHCWrapperAgentText, SCLHCWrapperButtonActions, SCLHCWrapperContent, SCLHCWrapperTitle, SCSWrapperCollapsedButton, SCSWrapperNewChatIcon, SCSWrapperAgentsNavIcon } from './Sidebar.styles';
38
+ import { SCSSidebarRoot, SCSSidebarToolbar, SCSSidebarBody, SCSSidebarOpenPanel, SCSSidebarAgentsBlock, SCSSidebarAgentsHeading, SCSSidebarAgentsHeadingText, SCSSidebarAgentsActions, SCSSidebarMaiakerNavButton, SCSSidebarMaiakerNavLabel, SCSSidebarConversationsHeading, SCSSidebarChatsScroll, SCSSidebarErrorStateColumn, SCSSidebarErrorStateTop, SCSSidebarErrorBanner, SCSSidebarErrorBannerIconWrap, SCSSidebarErrorBannerMessage, SCSSidebarLoadingArea, SCSSidebarLoadMoreRow, SCSSidebarEmptyChats, SCSSidebarEmptyChatsText, SCSSidebarChatsFooter, SCSSidebarFooterActions } from './Sidebar.layout.styles';
38
39
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
39
40
  var actions = {
40
41
  edit: function edit(props) {
@@ -50,76 +51,19 @@ function abbreviateSpecialistInAgentName(agentName) {
50
51
  if (!agentName || typeof agentName !== 'string') return agentName;
51
52
  return agentName.replace(/\b(especialista|especialist)\b/gi, 'Esp.').replace(/\bspecialist\b/gi, 'Spec.');
52
53
  }
53
- var StorefrontIcon = function StorefrontIcon() {
54
- return /*#__PURE__*/_jsxs("svg", {
55
- width: "20",
56
- height: "20",
57
- viewBox: "0 0 20 20",
58
- fill: "none",
59
- "aria-hidden": "true",
60
- children: [/*#__PURE__*/_jsx("path", {
61
- d: "M4.5 7.25h11l-.7-2.75a1.5 1.5 0 0 0-1.45-1.12h-6.7A1.5 1.5 0 0 0 5.2 4.5l-.7 2.75Z"
62
- }), /*#__PURE__*/_jsx("path", {
63
- d: "M5.5 8.5v6.25a1 1 0 0 0 1 1h7a1 1 0 0 0 1-1V8.5"
64
- }), /*#__PURE__*/_jsx("path", {
65
- d: "M8 15.75v-3.5a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v3.5"
66
- }), /*#__PURE__*/_jsx("path", {
67
- d: "M3.75 7.25h12.5v1a2.25 2.25 0 0 1-2.25 2.25c-.86 0-1.6-.48-2-1.18-.4.7-1.14 1.18-2 1.18s-1.6-.48-2-1.18c-.4.7-1.14 1.18-2 1.18a2.25 2.25 0 0 1-2.25-2.25v-1Z"
68
- })]
69
- });
70
- };
71
- var MagicWandIcon = function MagicWandIcon() {
72
- return /*#__PURE__*/_jsxs("svg", {
73
- width: "20",
74
- height: "20",
75
- viewBox: "0 0 20 20",
76
- fill: "none",
77
- "aria-hidden": "true",
78
- children: [/*#__PURE__*/_jsx("path", {
79
- d: "M11.35 4.4 15.6 8.65",
80
- stroke: "currentColor",
81
- strokeWidth: "1.8",
82
- strokeLinecap: "round",
83
- strokeLinejoin: "round"
84
- }), /*#__PURE__*/_jsx("path", {
85
- d: "M4.2 15.8 12.8 7.2",
86
- stroke: "currentColor",
87
- strokeWidth: "1.8",
88
- strokeLinecap: "round",
89
- strokeLinejoin: "round"
90
- }), /*#__PURE__*/_jsx("path", {
91
- d: "m3.4 16.6 1.45-1.45",
92
- stroke: "currentColor",
93
- strokeWidth: "1.8",
94
- strokeLinecap: "round",
95
- strokeLinejoin: "round"
96
- }), /*#__PURE__*/_jsx("path", {
97
- d: "M13.95 3v1.7",
98
- stroke: "currentColor",
99
- strokeWidth: "1.6",
100
- strokeLinecap: "round",
101
- strokeLinejoin: "round"
102
- }), /*#__PURE__*/_jsx("path", {
103
- d: "M13.1 3.85h1.7",
104
- stroke: "currentColor",
105
- strokeWidth: "1.6",
106
- strokeLinecap: "round",
107
- strokeLinejoin: "round"
108
- }), /*#__PURE__*/_jsx("path", {
109
- d: "M16.85 6.3v1.2",
110
- stroke: "currentColor",
111
- strokeWidth: "1.4",
112
- strokeLinecap: "round",
113
- strokeLinejoin: "round"
114
- }), /*#__PURE__*/_jsx("path", {
115
- d: "M16.25 6.9h1.2",
116
- stroke: "currentColor",
117
- strokeWidth: "1.4",
118
- strokeLinecap: "round",
119
- strokeLinejoin: "round"
120
- })]
121
- });
122
- };
54
+
55
+ /** Marketplace / “Mis agentes” (engranaje compacto, referencia Figma brain-cog) — reactivar con la sección en sidebar */
56
+ /* const MyAgentsNavIcon = ({ size = 16 }: { size?: number }) => (
57
+ <svg width={size} height={size} viewBox="0 0 16 16" fill="none" aria-hidden="true">
58
+ <path
59
+ fill="currentColor"
60
+ fillRule="evenodd"
61
+ clipRule="evenodd"
62
+ d="M8 1.25a.75.75 0 0 1 .74.64l.07.45a3.55 3.55 0 0 1 .94.4l.38-.28a.75.75 0 0 1 .92 1.18l-.32.37c.19.3.33.63.4.99l.45.06a.75.75 0 0 1-.1 1.49l-.46-.06a3.48 3.48 0 0 1-.4.94l.3.4a.75.75 0 1 1-1.2.9l-.32-.43a3.55 3.55 0 0 1-.98.42l.01.47a.75.75 0 0 1-1.49.09l-.02-.46a3.55 3.55 0 0 1-.99-.41l-.36.33a.75.75 0 1 1-1.02-1.1l.34-.31a3.48 3.48 0 0 1-.43-1l-.46.06a.75.75 0 0 1-.19-1.48l.45-.07c.07-.35.2-.68.38-.97l-.33-.36a.75.75 0 1 1 1.11-1.02l.35.38c.3-.18.64-.32 1-.39l-.06-.45a.75.75 0 0 1 .74-.86ZM8 5.35a2.65 2.65 0 1 0 0 5.3 2.65 2.65 0 0 0 0-5.3Z"
63
+ />
64
+ </svg>
65
+ ) */
66
+
123
67
  var ListHistoryChat = function ListHistoryChat(_ref) {
124
68
  var chat = _ref.chat,
125
69
  _onClick = _ref.onClick,
@@ -262,12 +206,13 @@ export var Sidebar = function Sidebar(_ref3) {
262
206
  return null;
263
207
  } : _ref3$onError,
264
208
  handleGoToHome = _ref3.handleGoToHome,
265
- handleOpenMarketplace = _ref3.handleOpenMarketplace,
266
209
  showNewChat = _ref3.showNewChat,
267
210
  refetchChats = _ref3.refetchChats,
268
211
  handleSetRefetchChats = _ref3.handleSetRefetchChats,
269
212
  hasError = _ref3.hasError,
270
- resetSelectedChatRef = _ref3.resetSelectedChatRef;
213
+ resetSelectedChatRef = _ref3.resetSelectedChatRef,
214
+ _ref3$agentsNavActive = _ref3.agentsNavActive,
215
+ agentsNavActive = _ref3$agentsNavActive === void 0 ? null : _ref3$agentsNavActive;
271
216
  var _useT2 = useT(),
272
217
  t = _useT2.t,
273
218
  i18n = _useT2.i18n;
@@ -490,33 +435,10 @@ export var Sidebar = function Sidebar(_ref3) {
490
435
  };
491
436
  }, []);
492
437
  var showNewChatButton = !showNewChat && !hasError && !loadingChats && ((userPermissions === null || userPermissions === void 0 ? void 0 : userPermissions.view) && !(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.is_deleted) && !(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.has_not_permissions) && !(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.has_not_access) || !(userPermissions !== null && userPermissions !== void 0 && userPermissions.view) && !(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.is_deleted) && !(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.has_not_permissions) && !(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.has_not_access));
493
- return /*#__PURE__*/_jsxs("div", {
494
- style: _objectSpread({
495
- backgroundColor: '#f9f9f9',
496
- display: 'flex',
497
- flexDirection: 'column',
498
- padding: '12px 10px',
499
- minWidth: "".concat(isOpen ? '200px' : '46px'),
500
- maxWidth: '270px',
501
- transition: 'all 0.3s ease-in-out',
502
- borderRadius: 'inherit',
503
- borderTopRightRadius: '0',
504
- borderBottomRightRadius: '0',
505
- gap: '12px',
506
- overflow: 'hidden',
507
- overscrollBehavior: 'contain'
508
- }, !isOpen && {
509
- alignItems: 'center',
510
- justifyContent: 'space-between'
511
- }),
512
- children: [/*#__PURE__*/_jsxs("div", {
513
- style: _objectSpread({
514
- display: 'flex',
515
- gap: '22px',
516
- flexDirection: "".concat(isOpen ? 'row-reverse' : 'column')
517
- }, isOpen && {
518
- justifyContent: 'space-between'
519
- }),
438
+ return /*#__PURE__*/_jsxs(SCSSidebarRoot, {
439
+ $isOpen: isOpen,
440
+ children: [/*#__PURE__*/_jsxs(SCSSidebarToolbar, {
441
+ $isOpen: isOpen,
520
442
  children: [/*#__PURE__*/_jsx(Tooltip, {
521
443
  title: isOpen ? t('conversations.collapse') : t('conversations.expand'),
522
444
  children: /*#__PURE__*/_jsx(SCSWrapperCollapsedButton, {
@@ -528,122 +450,70 @@ export var Sidebar = function Sidebar(_ref3) {
528
450
  height: 20
529
451
  })
530
452
  })
531
- }), /*#__PURE__*/_jsxs("div", {
532
- style: {
533
- display: 'flex',
534
- gap: "".concat(isOpen ? '16px' : '22px'),
535
- flexDirection: "".concat(isOpen ? 'row-reverse' : 'column')
536
- },
537
- children: [/*#__PURE__*/_jsx(Tooltip, {
538
- title: t('conversations.openAgentCreator'),
539
- children: /*#__PURE__*/_jsx(SCSWrapperNewChatIcon, {
540
- onClick: handleOpenCreateAgent,
541
- children: /*#__PURE__*/_jsx(MagicWandIcon, {})
453
+ }), !isOpen ? /*#__PURE__*/_jsx(Tooltip, {
454
+ title: t('conversations.maiakerNav'),
455
+ children: /*#__PURE__*/_jsx(SCSWrapperAgentsNavIcon, {
456
+ onClick: handleOpenCreateAgent,
457
+ $active: agentsNavActive === 'maiaker',
458
+ role: "button",
459
+ tabIndex: 0,
460
+ onKeyDown: function onKeyDown(e) {
461
+ if (e.key === 'Enter' || e.key === ' ') {
462
+ e.preventDefault();
463
+ handleOpenCreateAgent();
464
+ }
465
+ },
466
+ children: /*#__PURE__*/_jsx(MaiaStoreIcon, {
467
+ size: 16
542
468
  })
543
- }), /*#__PURE__*/_jsx(Tooltip, {
544
- title: t('conversations.openMarketplace'),
545
- children: /*#__PURE__*/_jsx(SCSWrapperNewChatIcon, {
546
- onClick: handleOpenMarketplace,
547
- children: /*#__PURE__*/_jsx(StorefrontIcon, {})
469
+ })
470
+ }) : null, showNewChatButton ? /*#__PURE__*/_jsx(Tooltip, {
471
+ title: t('conversations.newChat'),
472
+ children: /*#__PURE__*/_jsx(SCSWrapperNewChatIcon, {
473
+ onClick: handleNewChat,
474
+ children: /*#__PURE__*/_jsx(NewChat, {
475
+ width: 20,
476
+ height: 20
548
477
  })
549
- }), showNewChatButton && /*#__PURE__*/_jsx(Tooltip, {
550
- title: t('conversations.newChat'),
551
- children: /*#__PURE__*/_jsx(SCSWrapperNewChatIcon, {
552
- onClick: handleNewChat,
553
- children: /*#__PURE__*/_jsx(NewChat, {
554
- width: 20,
555
- height: 20
478
+ })
479
+ }) : null]
480
+ }), /*#__PURE__*/_jsxs(SCSSidebarBody, {
481
+ $isOpen: isOpen,
482
+ children: [isOpen ? /*#__PURE__*/_jsxs(SCSSidebarOpenPanel, {
483
+ children: [/*#__PURE__*/_jsxs(SCSSidebarAgentsBlock, {
484
+ children: [/*#__PURE__*/_jsx(SCSSidebarAgentsHeading, {
485
+ children: /*#__PURE__*/_jsx(SCSSidebarAgentsHeadingText, {
486
+ children: t('conversations.agentsSectionTitle')
556
487
  })
557
- })
558
- })]
559
- })]
560
- }), /*#__PURE__*/_jsxs("div", {
561
- style: {
562
- display: 'flex',
563
- width: '100%',
564
- flexDirection: 'column',
565
- height: 'calc(100% - 32px)',
566
- justifyContent: "".concat(isOpen ? '' : 'flex-end')
567
- },
568
- children: [isOpen && /*#__PURE__*/_jsxs("div", {
569
- style: {
570
- padding: '8px 0 0 0',
571
- display: 'flex',
572
- flexDirection: 'column',
573
- gap: '4px',
574
- flexGrow: 1,
575
- minWidth: '244px'
576
- },
577
- children: [/*#__PURE__*/_jsx("span", {
578
- style: {
579
- fontSize: '14px',
580
- fontWeight: '400',
581
- color: '#666666',
582
- lineHeight: '140%',
583
- paddingLeft: '12px'
584
- },
585
- children: t('conversations.title')
586
- }), /*#__PURE__*/_jsx("div", {
488
+ }), /*#__PURE__*/_jsx(SCSSidebarAgentsActions, {
489
+ children: /*#__PURE__*/_jsxs(SCSSidebarMaiakerNavButton, {
490
+ type: "button",
491
+ onClick: handleOpenCreateAgent,
492
+ $active: agentsNavActive === 'maiaker',
493
+ children: [/*#__PURE__*/_jsx(MaiaStoreIcon, {
494
+ size: 16
495
+ }), /*#__PURE__*/_jsx(SCSSidebarMaiakerNavLabel, {
496
+ children: t('conversations.maiakerNav')
497
+ })]
498
+ })
499
+ }), /*#__PURE__*/_jsx(SCSSidebarConversationsHeading, {
500
+ children: t('conversations.title')
501
+ })]
502
+ }), /*#__PURE__*/_jsx(SCSSidebarChatsScroll, {
587
503
  ref: chatsContainerRef,
588
- style: _objectSpread(_objectSpread({
589
- display: 'flex',
590
- flexDirection: 'column',
591
- gap: '4px',
592
- flexGrow: 1,
593
- width: '100%',
594
- overflowY: 'auto',
595
- overscrollBehaviorY: 'contain'
596
- }, chats.length && {
597
- maxHeight: "calc(100vh - ".concat(hasError ? 197 : 160, "px)")
598
- }), !chats.length && {
599
- alignItems: 'center'
600
- }),
601
- children: hasError && !chats.length ? /*#__PURE__*/_jsxs("div", {
602
- style: {
603
- display: 'flex',
604
- alignItems: 'center',
605
- justifyContent: 'center',
606
- flexGrow: 1,
607
- flexDirection: 'column'
608
- },
609
- children: [/*#__PURE__*/_jsx("div", {
610
- style: {
611
- display: 'flex',
612
- alignItems: 'center',
613
- flexGrow: 1
614
- },
504
+ $hasChats: chats.length > 0,
505
+ $offsetVariant: hasError ? 'error' : 'default',
506
+ children: hasError && !chats.length ? /*#__PURE__*/_jsxs(SCSSidebarErrorStateColumn, {
507
+ children: [/*#__PURE__*/_jsx(SCSSidebarErrorStateTop, {
615
508
  children: /*#__PURE__*/_jsx(ErrorState, {})
616
- }), /*#__PURE__*/_jsxs("div", {
617
- style: {
618
- display: 'flex',
619
- alignItems: 'center',
620
- gap: '16px',
621
- backgroundColor: 'rgba(253, 236, 236, 1)',
622
- borderRadius: '8px',
623
- padding: '12px',
624
- border: '1px solid rgba(199, 5, 5, 1)'
625
- },
626
- children: [/*#__PURE__*/_jsx("div", {
627
- style: {
628
- display: 'flex',
629
- alignItems: 'center',
630
- justifyContent: 'center'
631
- },
509
+ }), /*#__PURE__*/_jsxs(SCSSidebarErrorBanner, {
510
+ children: [/*#__PURE__*/_jsx(SCSSidebarErrorBannerIconWrap, {
632
511
  children: /*#__PURE__*/_jsx(ErrorIcon, {})
633
- }), /*#__PURE__*/_jsx("span", {
634
- style: {
635
- fontSize: '14px',
636
- fontWeight: '400',
637
- color: 'rgba(32, 32, 31, 1)',
638
- lineHeight: '140%'
639
- },
512
+ }), /*#__PURE__*/_jsx(SCSSidebarErrorBannerMessage, {
640
513
  children: t('conversations.error')
641
514
  })]
642
515
  })]
643
- }) : loadingChats ? /*#__PURE__*/_jsx("div", {
644
- style: {
645
- height: '670px'
646
- },
516
+ }) : loadingChats ? /*#__PURE__*/_jsx(SCSSidebarLoadingArea, {
647
517
  children: /*#__PURE__*/_jsx(Loader, {})
648
518
  }) : chats.length ? /*#__PURE__*/_jsxs(_Fragment, {
649
519
  children: [chats.map(function (chat) {
@@ -665,82 +535,32 @@ export var Sidebar = function Sidebar(_ref3) {
665
535
  },
666
536
  isSelected: selectedChat === chat.sessionExternalId
667
537
  }, chat.id);
668
- }), isLoadingMoreChats && /*#__PURE__*/_jsx("div", {
669
- style: {
670
- display: 'flex',
671
- justifyContent: 'center',
672
- padding: '16px'
673
- },
538
+ }), isLoadingMoreChats && /*#__PURE__*/_jsx(SCSSidebarLoadMoreRow, {
674
539
  children: /*#__PURE__*/_jsx(Loader, {})
675
540
  })]
676
- }) : /*#__PURE__*/_jsxs("div", {
677
- style: {
678
- display: 'flex',
679
- alignItems: 'center',
680
- justifyContent: 'center',
681
- flexGrow: 1,
682
- flexDirection: 'column',
683
- gap: '18px',
684
- width: '201px'
685
- },
686
- children: [/*#__PURE__*/_jsx(EmptyHistoryIcon, {}), /*#__PURE__*/_jsx("span", {
687
- style: {
688
- fontSize: '14px',
689
- fontWeight: '400',
690
- color: 'rgba(102, 102, 102, 1)',
691
- lineHeight: '140%',
692
- textAlign: 'center'
693
- },
541
+ }) : /*#__PURE__*/_jsxs(SCSSidebarEmptyChats, {
542
+ children: [/*#__PURE__*/_jsx(EmptyHistoryIcon, {}), /*#__PURE__*/_jsx(SCSSidebarEmptyChatsText, {
694
543
  children: t('conversations.empty')
695
544
  })]
696
545
  })
697
- }), /*#__PURE__*/_jsx("div", {
698
- style: {
699
- display: 'flex',
700
- alignItems: 'center',
701
- justifyContent: 'center'
702
- },
703
- children: hasError && chats.length ? /*#__PURE__*/_jsxs("div", {
704
- style: {
705
- display: 'flex',
706
- alignItems: 'center',
707
- gap: '16px',
708
- backgroundColor: 'rgba(253, 236, 236, 1)',
709
- borderRadius: '8px',
710
- padding: '12px',
711
- border: '1px solid rgba(199, 5, 5, 1)'
712
- },
713
- children: [/*#__PURE__*/_jsx("div", {
714
- style: {
715
- display: 'flex',
716
- alignItems: 'center',
717
- justifyContent: 'center'
718
- },
546
+ }), /*#__PURE__*/_jsx(SCSSidebarChatsFooter, {
547
+ children: hasError && chats.length ? /*#__PURE__*/_jsxs(SCSSidebarErrorBanner, {
548
+ children: [/*#__PURE__*/_jsx(SCSSidebarErrorBannerIconWrap, {
719
549
  children: /*#__PURE__*/_jsx(ErrorIcon, {})
720
- }), /*#__PURE__*/_jsx("span", {
721
- style: {
722
- fontSize: '14px',
723
- fontWeight: '400',
724
- color: 'rgba(32, 32, 31, 1)',
725
- lineHeight: '140%'
726
- },
550
+ }), /*#__PURE__*/_jsx(SCSSidebarErrorBannerMessage, {
727
551
  children: t('conversations.error')
728
552
  })]
729
553
  }) : null
730
554
  })]
731
- }), /*#__PURE__*/_jsxs("div", {
732
- style: {
733
- display: 'flex',
734
- gap: '8px',
735
- flexDirection: isOpen ? 'row' : 'column',
736
- justifyContent: selectedAgent ? 'space-between' : 'flex-end'
737
- },
738
- children: [selectedAgent && /*#__PURE__*/_jsx(FeedbackButton, {
555
+ }) : null, /*#__PURE__*/_jsxs(SCSSidebarFooterActions, {
556
+ $isOpen: isOpen,
557
+ $justifyBetween: !!selectedAgent,
558
+ children: [selectedAgent ? /*#__PURE__*/_jsx(FeedbackButton, {
739
559
  selectedAgent: selectedAgent,
740
560
  isOpen: isOpen
741
- }), /*#__PURE__*/_jsx(OnboardingModalButton, {})]
561
+ }) : null, /*#__PURE__*/_jsx(OnboardingModalButton, {})]
742
562
  })]
743
563
  })]
744
564
  });
745
565
  };
746
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIkNoZXZyb25Eb3VibGVMZWZ0IiwiQ1VCdXR0b24iLCJNZW51RG90cyIsIlBlbmNpbCIsIlRyYXNoIiwiVG9vbHRpcCIsIkVtcHR5SGlzdG9yeUljb24iLCJ1c2VSZXNpemVMaXN0ZW5lciIsInVzZUNoYXRzIiwiTG9hZGVyIiwiRXJyb3JTdGF0ZSIsIk1BSUFJY29uIiwiTmV3Q2hhdCIsIkVWRU5UUyIsInVzZVQiLCJPcHRpb25JdGVtIiwiRWRpdFF1ZXN0aW9uTW9kYWwiLCJEZWxldGVRdWVzdGlvbk1vZGFsIiwiRXJyb3JJY29uIiwidXNlVXNlciIsIk9uYm9hcmRpbmdNb2RhbEJ1dHRvbiIsIkZlZWRiYWNrQnV0dG9uIiwidXNlR2xvYmFsQ29udGV4dCIsImZldGNoTWFpYSIsIm1hcENPUkxhbmciLCJTQ0xIQ1dyYXBwZXIiLCJTQ0xIQ1dyYXBwZXJBZ2VudCIsIlNDTEhDV3JhcHBlckFnZW50VGV4dCIsIlNDTEhDV3JhcHBlckJ1dHRvbkFjdGlvbnMiLCJTQ0xIQ1dyYXBwZXJDb250ZW50IiwiU0NMSENXcmFwcGVyVGl0bGUiLCJTQ1NXcmFwcGVyQ29sbGFwc2VkQnV0dG9uIiwiU0NTV3JhcHBlck5ld0NoYXRJY29uIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiYWN0aW9ucyIsImVkaXQiLCJwcm9wcyIsIl9vYmplY3RTcHJlYWQiLCJkZWxldGUiLCJhYmJyZXZpYXRlU3BlY2lhbGlzdEluQWdlbnROYW1lIiwiYWdlbnROYW1lIiwicmVwbGFjZSIsIlN0b3JlZnJvbnRJY29uIiwid2lkdGgiLCJoZWlnaHQiLCJ2aWV3Qm94IiwiZmlsbCIsImNoaWxkcmVuIiwiZCIsIk1hZ2ljV2FuZEljb24iLCJzdHJva2UiLCJzdHJva2VXaWR0aCIsInN0cm9rZUxpbmVjYXAiLCJzdHJva2VMaW5lam9pbiIsIkxpc3RIaXN0b3J5Q2hhdCIsIl9yZWYiLCJjaGF0Iiwib25DbGljayIsImlzTW9kYWxPcGVuIiwib25PcGVuTW9kYWwiLCJvbkNsb3NlTW9kYWwiLCJoYW5kbGVycyIsImlzU2VsZWN0ZWQiLCJ0ZXh0UmVmIiwiYWdlbnRSZWYiLCJfdXNlUmVzaXplTGlzdGVuZXIiLCJ0aXRsZSIsInNob3dUb29sdGlwIiwiX3VzZVJlc2l6ZUxpc3RlbmVyMiIsImFnZW50Iiwic2hvd1Rvb2x0aXBBZ2VudCIsIl91c2VUIiwidCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImFjdGlvbiIsInNldEFjdGlvbiIsIm1lbnVJdGVtcyIsImxhYmVsIiwib25DbGlja0l0ZW0iLCJjaGF0SWQiLCJJY29uIiwiZXZlbnRLZXkiLCJwbUFpTWVudUVkaXQiLCJwbUFpTWVudURlbGV0ZSIsImhhbmRsZUNvbmZpcm1BY3Rpb24iLCJjaGF0RGF0YSIsImhhbmRsZVVwZGF0ZUNoYXQiLCJoYW5kbGVEZWxldGVDaGF0IiwiZSIsInN0b3BQcm9wYWdhdGlvbiIsInJlZiIsInByb2plY3ROYW1lIiwiY29uY2F0IiwiYWdlbnRUeXBlIiwic3R5bGUiLCJmb250U2l6ZSIsImVtb2ppIiwiaWNvbk9ubHkiLCJzaXplIiwidmFyaWFudCIsImV2ZW50IiwiaWQiLCJwb3NpdGlvbiIsInRvcCIsInJpZ2h0IiwiYmFja2dyb3VuZENvbG9yIiwiekluZGV4IiwiZGlzcGxheSIsImZsZXhEaXJlY3Rpb24iLCJib3JkZXJSYWRpdXMiLCJib3JkZXIiLCJtaW5XaWR0aCIsIm1hcCIsIl9yZWYyIiwic2Vzc2lvbkV4dGVybmFsSWQiLCJvbkNsb3NlIiwiaGFuZGxlU2V0SXNPcGVuTW9kYWwiLCJTaWRlYmFyIiwiX3JlZjMiLCJfdXNlciRwZXJtaXNzaW9ucyIsIm9uR29Ub0NoYXQiLCJfcmVmMyRvbkVycm9yIiwib25FcnJvciIsImhhbmRsZUdvVG9Ib21lIiwiaGFuZGxlT3Blbk1hcmtldHBsYWNlIiwic2hvd05ld0NoYXQiLCJyZWZldGNoQ2hhdHMiLCJoYW5kbGVTZXRSZWZldGNoQ2hhdHMiLCJoYXNFcnJvciIsInJlc2V0U2VsZWN0ZWRDaGF0UmVmIiwiX3VzZVQyIiwiaTE4biIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiaXNPcGVuIiwic2V0SXNPcGVuIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJpc09wZW5Nb2RhbCIsInNldElzT3Blbk1vZGFsIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJzZWxlY3RlZENoYXQiLCJzZXRTZWxlY3RlZENoYXQiLCJjaGF0c0ZldGNoZWRSZWYiLCJjaGF0c0NvbnRhaW5lclJlZiIsInVzZXIiLCJfdXNlR2xvYmFsQ29udGV4dCIsInNlbGVjdGVkQWdlbnQiLCJzZWxlY3RBZ2VudCIsInNldFByb2plY3QiLCJzZXRDbGllbnQiLCJfdXNlQ2hhdHMiLCJsb2FkaW5nQ2hhdHMiLCJjaGF0cyIsImRlbGV0ZUNoYXQiLCJ1cGRhdGVDaGF0IiwiZmV0Y2hDaGF0cyIsImxpbWl0Iiwib2Zmc2V0IiwiaGFzTW9yZUNoYXRzIiwibG9hZE1vcmVDaGF0cyIsImlzTG9hZGluZ01vcmVDaGF0cyIsInVzZXJQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWlfYWdlbnRzIiwiY3VycmVudCIsIl9yZWY0IiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInN0b3AiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIiwiaGFuZGxlT3Blbk1vZGFsIiwiaGFuZGxlQ2xvc2VNb2RhbCIsImhhbmRsZUNsaWNrT3V0c2lkZSIsInRhcmdldCIsImNsb3Nlc3QiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFuZGxlVG9nZ2xlU2lkZWJhciIsImhhbmRsZU9wZW5DcmVhdGVBZ2VudCIsIl9yZWY1IiwiX2NhbGxlZTIiLCJyZXNwb25zZSIsImRhdGEiLCJtYWlha2VyQWdlbnQiLCJfY29udGV4dDIiLCJwYXRoIiwibGFuZ3VhZ2UiLCJtZXRob2QiLCJzZW50IiwianNvbiIsImZpbmQiLCJ0eXBlIiwiZW50aXR5IiwiYWJydXB0IiwiaGFuZGxlU2Nyb2xsIiwiX2NoYXRzQ29udGFpbmVyUmVmJGN1Iiwic2Nyb2xsVG9wIiwic2Nyb2xsSGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwiaXNBdEJvdHRvbSIsImNvbnRhaW5lciIsImhhbmRsZU5ld0NoYXQiLCJfcmVmNiIsIl9jYWxsZWUzIiwiX2NvbnRleHQzIiwiaGFuZGxlUmVmZXRjaFNlc3Npb24iLCJzaG93TmV3Q2hhdEJ1dHRvbiIsInZpZXciLCJpc19kZWxldGVkIiwiaGFzX25vdF9wZXJtaXNzaW9ucyIsImhhc19ub3RfYWNjZXNzIiwicGFkZGluZyIsIm1heFdpZHRoIiwidHJhbnNpdGlvbiIsImJvcmRlclRvcFJpZ2h0UmFkaXVzIiwiYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMiLCJnYXAiLCJvdmVyZmxvdyIsIm92ZXJzY3JvbGxCZWhhdmlvciIsImFsaWduSXRlbXMiLCJqdXN0aWZ5Q29udGVudCIsImNvbG9yIiwiZmxleEdyb3ciLCJmb250V2VpZ2h0IiwibGluZUhlaWdodCIsInBhZGRpbmdMZWZ0Iiwib3ZlcmZsb3dZIiwib3ZlcnNjcm9sbEJlaGF2aW9yWSIsImxlbmd0aCIsIm1heEhlaWdodCIsInRleHRBbGlnbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9TaWRlYmFyL1NpZGViYXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXBhcmFtLXJlYXNzaWduICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG5pbXBvcnQgeyBNdXRhYmxlUmVmT2JqZWN0LCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENoZXZyb25Eb3VibGVMZWZ0IH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ2hldnJvbkRvdWJsZUxlZnQnXG5pbXBvcnQgeyBDVUJ1dHRvbiB9IGZyb20gJ0Bwcm9qZWN0Y29yL2J1dHRvbi9saWIvY29tcG9uZW50cy9DVUJ1dHRvbidcbmltcG9ydCB7IE1lbnVEb3RzIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvTWVudURvdHMnXG5pbXBvcnQgeyBQZW5jaWwgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9QZW5jaWwnXG5pbXBvcnQgeyBUcmFzaCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1RyYXNoJ1xuXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5cbmltcG9ydCB7IEVtcHR5SGlzdG9yeUljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9FbXB0eUhpc3RvcnknXG5pbXBvcnQgeyB1c2VSZXNpemVMaXN0ZW5lciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVJlc2l6ZSdcbmltcG9ydCB7IHVzZUNoYXRzIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQ2hhdHMnXG5pbXBvcnQgeyBMb2FkZXIgfSBmcm9tICcuLi8uLi9hdG9tcy9Mb2FkZXInXG5pbXBvcnQgeyBFcnJvclN0YXRlLCBNQUlBSWNvbiwgTmV3Q2hhdCB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zJ1xuaW1wb3J0IHsgRVZFTlRTIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVCdcbmltcG9ydCB7IE9wdGlvbkl0ZW0gfSBmcm9tICcuLi8uLi9hdG9tcy9DYXJkTWVudS9DYXJkTWVudSdcbmltcG9ydCB7IEVkaXRRdWVzdGlvbk1vZGFsIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0VkaXRRdWVzdGlvbk1vZGFsJ1xuaW1wb3J0IHsgRGVsZXRlUXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9EZWxldGVRdWVzdGlvbk1vZGFsJ1xuaW1wb3J0IHsgRXJyb3JJY29uIH0gZnJvbSAnLi4vLi4vYXRvbXMvaWNvbnMvRXJyb3JJY29uJ1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBPbmJvYXJkaW5nTW9kYWxCdXR0b24gfSBmcm9tICcuLi8uLi9hdG9tcy9PbmJvYXJkaW5nTW9kYWxCdXR0b24nXG5pbXBvcnQgeyBGZWVkYmFja0J1dHRvbiB9IGZyb20gJy4uLy4uL2F0b21zL0ZlZWRiYWNrQnV0dG9uJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBmZXRjaE1haWEgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL2NsaWVudCdcbmltcG9ydCB7IG1hcENPUkxhbmcgfSBmcm9tICcuLi8uLi8uLi9sYW5nL3V0aWxzJ1xuaW1wb3J0IHtcbiAgU0NMSENXcmFwcGVyLFxuICBTQ0xIQ1dyYXBwZXJBZ2VudCxcbiAgU0NMSENXcmFwcGVyQWdlbnRUZXh0LFxuICBTQ0xIQ1dyYXBwZXJCdXR0b25BY3Rpb25zLFxuICBTQ0xIQ1dyYXBwZXJDb250ZW50LFxuICBTQ0xIQ1dyYXBwZXJUaXRsZSxcbiAgU0NTV3JhcHBlckNvbGxhcHNlZEJ1dHRvbixcbiAgU0NTV3JhcHBlck5ld0NoYXRJY29uLFxufSBmcm9tICcuL1NpZGViYXIuc3R5bGVzJ1xuXG5jb25zdCBhY3Rpb25zID0ge1xuICBlZGl0OiAocHJvcHM6IGFueSkgPT4gPEVkaXRRdWVzdGlvbk1vZGFsIHsuLi5wcm9wc30gLz4sXG4gIGRlbGV0ZTogKHByb3BzOiBhbnkpID0+IDxEZWxldGVRdWVzdGlvbk1vZGFsIHsuLi5wcm9wc30gLz4sXG59XG5cbi8qKiBBYnJldmlhIFwiZXNwZWNpYWxpc3RhXCIvXCJlc3BlY2lhbGlzdFwiIOKGkiBcIkVzcC5cIiAoRVMvUFQpIHkgXCJzcGVjaWFsaXN0XCIg4oaSIFwiU3BlYy5cIiAoRU4pIGVuIGVsIG5vbWJyZSBkZWwgYWdlbnRlLiAqL1xuZnVuY3Rpb24gYWJicmV2aWF0ZVNwZWNpYWxpc3RJbkFnZW50TmFtZShhZ2VudE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghYWdlbnROYW1lIHx8IHR5cGVvZiBhZ2VudE5hbWUgIT09ICdzdHJpbmcnKSByZXR1cm4gYWdlbnROYW1lXG4gIHJldHVybiBhZ2VudE5hbWUucmVwbGFjZSgvXFxiKGVzcGVjaWFsaXN0YXxlc3BlY2lhbGlzdClcXGIvZ2ksICdFc3AuJykucmVwbGFjZSgvXFxic3BlY2lhbGlzdFxcYi9naSwgJ1NwZWMuJylcbn1cblxuY29uc3QgU3RvcmVmcm9udEljb24gPSAoKSA9PiAoXG4gIDxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgPHBhdGggZD1cIk00LjUgNy4yNWgxMWwtLjctMi43NWExLjUgMS41IDAgMCAwLTEuNDUtMS4xMmgtNi43QTEuNSAxLjUgMCAwIDAgNS4yIDQuNWwtLjcgMi43NVpcIiAvPlxuICAgIDxwYXRoIGQ9XCJNNS41IDguNXY2LjI1YTEgMSAwIDAgMCAxIDFoN2ExIDEgMCAwIDAgMS0xVjguNVwiIC8+XG4gICAgPHBhdGggZD1cIk04IDE1Ljc1di0zLjVhMSAxIDAgMCAxIDEtMWgyYTEgMSAwIDAgMSAxIDF2My41XCIgLz5cbiAgICA8cGF0aCBkPVwiTTMuNzUgNy4yNWgxMi41djFhMi4yNSAyLjI1IDAgMCAxLTIuMjUgMi4yNWMtLjg2IDAtMS42LS40OC0yLTEuMTgtLjQuNy0xLjE0IDEuMTgtMiAxLjE4cy0xLjYtLjQ4LTItMS4xOGMtLjQuNy0xLjE0IDEuMTgtMiAxLjE4YTIuMjUgMi4yNSAwIDAgMS0yLjI1LTIuMjV2LTFaXCIgLz5cbiAgPC9zdmc+XG4pXG5cbmNvbnN0IE1hZ2ljV2FuZEljb24gPSAoKSA9PiAoXG4gIDxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNMTEuMzUgNC40IDE1LjYgOC42NVwiXG4gICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIxLjhcIlxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgIC8+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNNC4yIDE1LjggMTIuOCA3LjJcIlxuICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMS44XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAvPlxuICAgIDxwYXRoXG4gICAgICBkPVwibTMuNCAxNi42IDEuNDUtMS40NVwiXG4gICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIxLjhcIlxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgIC8+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNMTMuOTUgM3YxLjdcIlxuICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMS42XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAvPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTEzLjEgMy44NWgxLjdcIlxuICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMS42XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAvPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTE2Ljg1IDYuM3YxLjJcIlxuICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMS40XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAvPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTE2LjI1IDYuOWgxLjJcIlxuICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMS40XCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAvPlxuICA8L3N2Zz5cbilcblxuY29uc3QgTGlzdEhpc3RvcnlDaGF0ID0gKHtcbiAgY2hhdCxcbiAgb25DbGljayxcbiAgaXNNb2RhbE9wZW4sXG4gIG9uT3Blbk1vZGFsLFxuICBvbkNsb3NlTW9kYWwsXG4gIGhhbmRsZXJzLFxuICBpc1NlbGVjdGVkLFxufToge1xuICBjaGF0OiBhbnlcbiAgb25DbGljazogKGNoYXQ6IGFueSkgPT4gdm9pZFxuICBpc01vZGFsT3BlbjogYm9vbGVhblxuICBvbk9wZW5Nb2RhbDogKGNoYXRJZDogc3RyaW5nKSA9PiB2b2lkXG4gIG9uQ2xvc2VNb2RhbDogKCkgPT4gdm9pZFxuICBoYW5kbGVyczoge1xuICAgIGhhbmRsZURlbGV0ZUNoYXQ6IChjaGF0OiBhbnkpID0+IHZvaWRcbiAgICBoYW5kbGVVcGRhdGVDaGF0OiAoY2hhdDogYW55KSA9PiB2b2lkXG4gIH1cbiAgaXNTZWxlY3RlZDogYm9vbGVhblxufSkgPT4ge1xuICBjb25zdCB0ZXh0UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBhZ2VudFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgeyBzaG93VG9vbHRpcCB9ID0gdXNlUmVzaXplTGlzdGVuZXIodGV4dFJlZiwgW2NoYXQudGl0bGVdKVxuICBjb25zdCB7IHNob3dUb29sdGlwOiBzaG93VG9vbHRpcEFnZW50IH0gPSB1c2VSZXNpemVMaXN0ZW5lcihhZ2VudFJlZiwgW2NoYXQuYWdlbnRdKVxuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCBbYWN0aW9uLCBzZXRBY3Rpb25dID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcblxuICBjb25zdCBtZW51SXRlbXMgPSBbXG4gICAge1xuICAgICAgbGFiZWw6IHQoJ2hpc3RvcnkubWVudS5yZW5hbWUnKSxcbiAgICAgIG9uQ2xpY2tJdGVtOiAoY2hhdElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgc2V0QWN0aW9uKCdlZGl0JylcbiAgICAgICAgb25PcGVuTW9kYWwoY2hhdElkKVxuICAgICAgfSxcbiAgICAgIEljb246IFBlbmNpbCxcbiAgICAgIGV2ZW50S2V5OiBFVkVOVFMucG1BaU1lbnVFZGl0LFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6IHQoJ2hpc3RvcnkubWVudS5kZWxldGUnKSxcbiAgICAgIG9uQ2xpY2tJdGVtOiAoY2hhdElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgc2V0QWN0aW9uKCdkZWxldGUnKVxuICAgICAgICBvbk9wZW5Nb2RhbChjaGF0SWQpXG4gICAgICB9LFxuICAgICAgSWNvbjogVHJhc2gsXG4gICAgICBldmVudEtleTogRVZFTlRTLnBtQWlNZW51RGVsZXRlLFxuICAgIH0sXG4gIF1cblxuICBjb25zdCBoYW5kbGVDb25maXJtQWN0aW9uID0gKGNoYXREYXRhOiBhbnkpID0+IHtcbiAgICBpZiAoYWN0aW9uID09PSAnZWRpdCcpIHtcbiAgICAgIGhhbmRsZXJzLmhhbmRsZVVwZGF0ZUNoYXQoY2hhdERhdGEpXG4gICAgfSBlbHNlIHtcbiAgICAgIGhhbmRsZXJzLmhhbmRsZURlbGV0ZUNoYXQoY2hhdERhdGEpXG4gICAgfVxuICAgIHNldEFjdGlvbihudWxsKVxuICAgIG9uQ2xvc2VNb2RhbCgpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8U0NMSENXcmFwcGVyQ29udGVudFxuICAgICAgICBvbkNsaWNrPXtlID0+IHtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgb25DbGljayhjaGF0KVxuICAgICAgICB9fVxuICAgICAgICBrZXk9e2Bjb252ZXJzYXRpb24tJHtjaGF0LnNlc3Npb25FeHRlcm5hbElkfWB9XG4gICAgICAgIGlzTW9kYWxPcGVuPXtpc01vZGFsT3Blbn1cbiAgICAgICAgaXNTZWxlY3RlZD17aXNTZWxlY3RlZH1cbiAgICAgID5cbiAgICAgICAgPFNDTEhDV3JhcHBlcj5cbiAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17c2hvd1Rvb2x0aXAgPyBjaGF0LnRpdGxlIDogJyd9PlxuICAgICAgICAgICAgPFNDTEhDV3JhcHBlclRpdGxlIHJlZj17dGV4dFJlZn0+e2NoYXQudGl0bGUgfHwgdCgnY29udmVyc2F0aW9ucy5lbXB0eUxhYmVsJyl9PC9TQ0xIQ1dyYXBwZXJUaXRsZT5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3Nob3dUb29sdGlwQWdlbnQgPyBjaGF0LmFnZW50ICsgKGNoYXQucHJvamVjdE5hbWUgPyBgIC0gJHtjaGF0LnByb2plY3ROYW1lfWAgOiAnJykgOiAnJ30+XG4gICAgICAgICAgICA8U0NMSENXcmFwcGVyQWdlbnQ+XG4gICAgICAgICAgICAgIHtjaGF0LmFnZW50VHlwZSA9PT0gJ2Nsb25lJyA/IChcbiAgICAgICAgICAgICAgICA8TUFJQUljb24gd2lkdGg9ezE0fSBoZWlnaHQ9ezE0fSAvPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7IGZvbnRTaXplOiAnMTRweCcgfX0+e2NoYXQuZW1vaml9PC9zcGFuPlxuICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgIDxTQ0xIQ1dyYXBwZXJBZ2VudFRleHQgcmVmPXthZ2VudFJlZn0+XG4gICAgICAgICAgICAgICAge2NoYXQuYWdlbnRUeXBlID09PSAnY2xvbmUnID8gYWJicmV2aWF0ZVNwZWNpYWxpc3RJbkFnZW50TmFtZShjaGF0LmFnZW50KSA6IGNoYXQuYWdlbnR9XG4gICAgICAgICAgICAgICAge2NoYXQucHJvamVjdE5hbWUgJiYgYCAtICR7Y2hhdC5wcm9qZWN0TmFtZX1gfVxuICAgICAgICAgICAgICA8L1NDTEhDV3JhcHBlckFnZW50VGV4dD5cbiAgICAgICAgICAgIDwvU0NMSENXcmFwcGVyQWdlbnQ+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICA8L1NDTEhDV3JhcHBlcj5cbiAgICAgICAgPFNDTEhDV3JhcHBlckJ1dHRvbkFjdGlvbnM+XG4gICAgICAgICAgPENVQnV0dG9uXG4gICAgICAgICAgICBpY29uT25seVxuICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgIG9uQ2xpY2s9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgb25PcGVuTW9kYWwoY2hhdC5pZClcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPE1lbnVEb3RzIHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICA8L0NVQnV0dG9uPlxuICAgICAgICAgIHtpc01vZGFsT3BlbiAmJiAhYWN0aW9uICYmIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgZGF0YS1tb2RhbC1jb250YWluZXJcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgICAgICB0b3A6ICczMnB4JyxcbiAgICAgICAgICAgICAgICByaWdodDogJzE2cHgnLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3doaXRlJyxcbiAgICAgICAgICAgICAgICB6SW5kZXg6IDEwMDAsXG4gICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzRweCcsXG4gICAgICAgICAgICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkIHJnYmEoMjI0LCAyMjQsIDIyNCwgMSknLFxuICAgICAgICAgICAgICAgIG1pbldpZHRoOiAnMTI0cHgnLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bWVudUl0ZW1zLm1hcCgoeyBsYWJlbCwgb25DbGlja0l0ZW0sIEljb24sIGV2ZW50S2V5IH0pID0+IChcbiAgICAgICAgICAgICAgICA8T3B0aW9uSXRlbVxuICAgICAgICAgICAgICAgICAga2V5PXtsYWJlbH1cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXtsYWJlbH1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uQ2xpY2tJdGVtKGNoYXQuaWQpfVxuICAgICAgICAgICAgICAgICAgSWNvbj17SWNvbn1cbiAgICAgICAgICAgICAgICAgIGV2ZW50S2V5PXtldmVudEtleX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU0NMSENXcmFwcGVyQnV0dG9uQWN0aW9ucz5cbiAgICAgIDwvU0NMSENXcmFwcGVyQ29udGVudD5cbiAgICAgIHshIWFjdGlvbiAmJlxuICAgICAgICBhY3Rpb25zW2FjdGlvbl0oe1xuICAgICAgICAgIG9uQ2xvc2U6ICgpID0+IHtcbiAgICAgICAgICAgIG9uQ2xvc2VNb2RhbCgpXG4gICAgICAgICAgICBzZXRBY3Rpb24obnVsbClcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNoYXQsXG4gICAgICAgICAgaGFuZGxlcnM6IHtcbiAgICAgICAgICAgIGhhbmRsZUNvbmZpcm1BY3Rpb24sXG4gICAgICAgICAgICBoYW5kbGVTZXRJc09wZW5Nb2RhbDogb25DbG9zZU1vZGFsLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pfVxuICAgIDwvPlxuICApXG59XG5cbmV4cG9ydCBjb25zdCBTaWRlYmFyID0gKHtcbiAgb25Hb1RvQ2hhdCxcbiAgb25FcnJvciA9ICgpID0+IG51bGwsXG4gIGhhbmRsZUdvVG9Ib21lLFxuICBoYW5kbGVPcGVuTWFya2V0cGxhY2UsXG4gIHNob3dOZXdDaGF0LFxuICByZWZldGNoQ2hhdHMsXG4gIGhhbmRsZVNldFJlZmV0Y2hDaGF0cyxcbiAgaGFzRXJyb3IsXG4gIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLFxufToge1xuICBvbkdvVG9DaGF0OiAoY2hhdElkOiBzdHJpbmcpID0+IHZvaWRcbiAgb25FcnJvcjogKCkgPT4gdm9pZFxuICBoYW5kbGVHb1RvSG9tZTogKCkgPT4gdm9pZFxuICBoYW5kbGVPcGVuTWFya2V0cGxhY2U6ICgpID0+IHZvaWRcbiAgc2hvd05ld0NoYXQ6IGJvb2xlYW5cbiAgcmVmZXRjaENoYXRzOiBib29sZWFuXG4gIGhhbmRsZVNldFJlZmV0Y2hDaGF0czogKHJlZmV0Y2g6IGJvb2xlYW4pID0+IHZvaWRcbiAgaGFzRXJyb3I6IGJvb2xlYW5cbiAgcmVzZXRTZWxlY3RlZENoYXRSZWY/OiBNdXRhYmxlUmVmT2JqZWN0PCgoKSA9PiB2b2lkKSB8IG51bGw+XG59KSA9PiB7XG4gIGNvbnN0IHsgdCwgaTE4biB9ID0gdXNlVCgpXG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VTdGF0ZSh0cnVlKVxuICBjb25zdCBbaXNPcGVuTW9kYWwsIHNldElzT3Blbk1vZGFsXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtzZWxlY3RlZENoYXQsIHNldFNlbGVjdGVkQ2hhdF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBjaGF0c0ZldGNoZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGNoYXRzQ29udGFpbmVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHsgYWdlbnQ6IHNlbGVjdGVkQWdlbnQsIHNlbGVjdEFnZW50LCBzZXRQcm9qZWN0LCBzZXRDbGllbnQgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCB7XG4gICAgbG9hZGluZ0NoYXRzLFxuICAgIGNoYXRzLFxuICAgIGRlbGV0ZUNoYXQsXG4gICAgdXBkYXRlQ2hhdCxcbiAgICBmZXRjaENoYXRzLFxuICAgIGxpbWl0LFxuICAgIG9mZnNldCxcbiAgICBoYXNNb3JlQ2hhdHMsXG4gICAgbG9hZE1vcmVDaGF0cyxcbiAgICBpc0xvYWRpbmdNb3JlQ2hhdHMsXG4gIH0gPSB1c2VDaGF0cyh7XG4gICAgb25FcnJvcixcbiAgfSlcblxuICBjb25zdCB1c2VyUGVybWlzc2lvbnMgPSB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVzZXRTZWxlY3RlZENoYXRSZWYpIHtcbiAgICAgIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQgPSAoKSA9PiBzZXRTZWxlY3RlZENoYXQobnVsbClcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChyZXNldFNlbGVjdGVkQ2hhdFJlZikge1xuICAgICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgfVxuICAgIH1cbiAgfSwgW3Jlc2V0U2VsZWN0ZWRDaGF0UmVmXSlcblxuICBjb25zdCBoYW5kbGVEZWxldGVDaGF0ID0gYXN5bmMgKGNoYXQ6IGFueSkgPT4ge1xuICAgIGRlbGV0ZUNoYXQoY2hhdC5zZXNzaW9uRXh0ZXJuYWxJZClcbiAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICAgIGhhbmRsZUdvVG9Ib21lKClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVVwZGF0ZUNoYXQgPSAoY2hhdDogYW55KSA9PiB7XG4gICAgdXBkYXRlQ2hhdChjaGF0KVxuICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gIH1cblxuICBjb25zdCBoYW5kbGVPcGVuTW9kYWwgPSAoY2hhdElkOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoaXNPcGVuTW9kYWwgJiYgaXNPcGVuTW9kYWwgIT09IGNoYXRJZCkge1xuICAgICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0SXNPcGVuTW9kYWwoY2hhdElkKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlTW9kYWwgPSAoKSA9PiB7XG4gICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBpZiAoaXNPcGVuTW9kYWwgJiYgIShldmVudC50YXJnZXQgYXMgRWxlbWVudCkuY2xvc2VzdCgnW2RhdGEtbW9kYWwtY29udGFpbmVyXScpKSB7XG4gICAgICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGlzT3Blbk1vZGFsKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGUpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICB9XG4gIH0sIFtpc09wZW5Nb2RhbF0pXG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlU2lkZWJhciA9ICgpID0+IHtcbiAgICBpZiAoaXNPcGVuTW9kYWwpIHtcbiAgICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gICAgfVxuICAgIHNldElzT3BlbihwcmV2ID0+ICFwcmV2KVxuICB9XG5cbiAgY29uc3QgaGFuZGxlT3BlbkNyZWF0ZUFnZW50ID0gYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgIHBhdGg6IGBhZ2VudHM/YWdlbnRfdHlwZT1jbG9uZSZsYW5nPSR7bWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKX1gLFxuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICB9KVxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICBjb25zdCBtYWlha2VyQWdlbnQgPSAoZGF0YS5kYXRhIHx8IFtdKS5maW5kKChhZ2VudDogYW55KSA9PiBhZ2VudC50eXBlID09PSAnY2xvbmUnICYmIGFnZW50LmVudGl0eSA9PT0gJ2dsb2JhbCcpXG5cbiAgICBpZiAoIW1haWFrZXJBZ2VudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc2V0UHJvamVjdChudWxsKVxuICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgc2VsZWN0QWdlbnQobWFpYWtlckFnZW50KVxuICAgIGhhbmRsZUdvVG9Ib21lKClcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzT3BlbiAmJiAhY2hhdHNGZXRjaGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNoYXRzRmV0Y2hlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgZmV0Y2hDaGF0cyh7IGxpbWl0LCBvZmZzZXQgfSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAocmVmZXRjaENoYXRzKSB7XG4gICAgICBmZXRjaENoYXRzKHsgbGltaXQsIG9mZnNldCB9KVxuICAgICAgaGFuZGxlU2V0UmVmZXRjaENoYXRzKGZhbHNlKVxuICAgIH1cbiAgfSwgW2lzT3BlbiwgcmVmZXRjaENoYXRzLCBoYW5kbGVTZXRSZWZldGNoQ2hhdHNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlU2Nyb2xsID0gKCkgPT4ge1xuICAgICAgaWYgKCFjaGF0c0NvbnRhaW5lclJlZi5jdXJyZW50IHx8ICFoYXNNb3JlQ2hhdHMgfHwgaXNMb2FkaW5nTW9yZUNoYXRzIHx8IGhhc0Vycm9yKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHNjcm9sbFRvcCwgc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQgfSA9IGNoYXRzQ29udGFpbmVyUmVmLmN1cnJlbnRcbiAgICAgIGNvbnN0IGlzQXRCb3R0b20gPSBzY3JvbGxUb3AgKyBjbGllbnRIZWlnaHQgPj0gc2Nyb2xsSGVpZ2h0IC0gMTBcblxuICAgICAgaWYgKGlzQXRCb3R0b20pIHtcbiAgICAgICAgbG9hZE1vcmVDaGF0cygpXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyID0gY2hhdHNDb250YWluZXJSZWYuY3VycmVudFxuICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgY29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtoYXNNb3JlQ2hhdHMsIGlzTG9hZGluZ01vcmVDaGF0cywgbG9hZE1vcmVDaGF0cywgaGFzRXJyb3JdKVxuXG4gIGNvbnN0IGhhbmRsZU5ld0NoYXQgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKGlzT3Blbk1vZGFsKSB7XG4gICAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICAgIH1cbiAgICBzZXRTZWxlY3RlZENoYXQobnVsbClcbiAgICBhd2FpdCBmZXRjaENoYXRzKHsgbGltaXQsIG9mZnNldDogMCB9KVxuICAgIGhhbmRsZUdvVG9Ib21lKClcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlUmVmZXRjaFNlc3Npb24gPSAoKSA9PiB7XG4gICAgICBmZXRjaENoYXRzKHsgbGltaXQ6IDIwLCBvZmZzZXQ6IDAgfSlcbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncmVmZXRjaC1zZXNzaW9uJywgaGFuZGxlUmVmZXRjaFNlc3Npb24pXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3JlZmV0Y2gtc2Vzc2lvbicsIGhhbmRsZVJlZmV0Y2hTZXNzaW9uKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3Qgc2hvd05ld0NoYXRCdXR0b24gPVxuICAgICFzaG93TmV3Q2hhdCAmJlxuICAgICFoYXNFcnJvciAmJlxuICAgICFsb2FkaW5nQ2hhdHMgJiZcbiAgICAoKHVzZXJQZXJtaXNzaW9ucz8udmlldyAmJlxuICAgICAgIXNlbGVjdGVkQWdlbnQ/LmlzX2RlbGV0ZWQgJiZcbiAgICAgICFzZWxlY3RlZEFnZW50Py5oYXNfbm90X3Blcm1pc3Npb25zICYmXG4gICAgICAhc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9hY2Nlc3MpIHx8XG4gICAgICAoIXVzZXJQZXJtaXNzaW9ucz8udmlldyAmJlxuICAgICAgICAhc2VsZWN0ZWRBZ2VudD8uaXNfZGVsZXRlZCAmJlxuICAgICAgICAhc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9wZXJtaXNzaW9ucyAmJlxuICAgICAgICAhc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9hY2Nlc3MpKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnI2Y5ZjlmOScsXG4gICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgIHBhZGRpbmc6ICcxMnB4IDEwcHgnLFxuICAgICAgICBtaW5XaWR0aDogYCR7aXNPcGVuID8gJzIwMHB4JyA6ICc0NnB4J31gLFxuICAgICAgICBtYXhXaWR0aDogJzI3MHB4JyxcbiAgICAgICAgdHJhbnNpdGlvbjogJ2FsbCAwLjNzIGVhc2UtaW4tb3V0JyxcbiAgICAgICAgYm9yZGVyUmFkaXVzOiAnaW5oZXJpdCcsXG4gICAgICAgIGJvcmRlclRvcFJpZ2h0UmFkaXVzOiAnMCcsXG4gICAgICAgIGJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzOiAnMCcsXG4gICAgICAgIGdhcDogJzEycHgnLFxuICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgIG92ZXJzY3JvbGxCZWhhdmlvcjogJ2NvbnRhaW4nLFxuICAgICAgICAuLi4oIWlzT3BlbiAmJiB7IGFsaWduSXRlbXM6ICdjZW50ZXInLCBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nIH0pLFxuICAgICAgfX1cbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgIGdhcDogJzIycHgnLFxuICAgICAgICAgIGZsZXhEaXJlY3Rpb246IGAke2lzT3BlbiA/ICdyb3ctcmV2ZXJzZScgOiAnY29sdW1uJ31gLFxuICAgICAgICAgIC4uLihpc09wZW4gJiYgeyBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nIH0pLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8VG9vbHRpcCB0aXRsZT17aXNPcGVuID8gdCgnY29udmVyc2F0aW9ucy5jb2xsYXBzZScpIDogdCgnY29udmVyc2F0aW9ucy5leHBhbmQnKX0+XG4gICAgICAgICAgPFNDU1dyYXBwZXJDb2xsYXBzZWRCdXR0b24gb25DbGljaz17aGFuZGxlVG9nZ2xlU2lkZWJhcn0gaXNPcGVuPXtpc09wZW59PlxuICAgICAgICAgICAgPENoZXZyb25Eb3VibGVMZWZ0IGNvbG9yPVwicmdiYSgxMDIsIDEwMiwgMTAyLCAxKVwiIHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICA8L1NDU1dyYXBwZXJDb2xsYXBzZWRCdXR0b24+XG4gICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICBnYXA6IGAke2lzT3BlbiA/ICcxNnB4JyA6ICcyMnB4J31gLFxuICAgICAgICAgICAgZmxleERpcmVjdGlvbjogYCR7aXNPcGVuID8gJ3Jvdy1yZXZlcnNlJyA6ICdjb2x1bW4nfWAsXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdjb252ZXJzYXRpb25zLm9wZW5BZ2VudENyZWF0b3InKX0+XG4gICAgICAgICAgICA8U0NTV3JhcHBlck5ld0NoYXRJY29uIG9uQ2xpY2s9e2hhbmRsZU9wZW5DcmVhdGVBZ2VudH0+XG4gICAgICAgICAgICAgIDxNYWdpY1dhbmRJY29uIC8+XG4gICAgICAgICAgICA8L1NDU1dyYXBwZXJOZXdDaGF0SWNvbj5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3QoJ2NvbnZlcnNhdGlvbnMub3Blbk1hcmtldHBsYWNlJyl9PlxuICAgICAgICAgICAgPFNDU1dyYXBwZXJOZXdDaGF0SWNvbiBvbkNsaWNrPXtoYW5kbGVPcGVuTWFya2V0cGxhY2V9PlxuICAgICAgICAgICAgICA8U3RvcmVmcm9udEljb24gLz5cbiAgICAgICAgICAgIDwvU0NTV3JhcHBlck5ld0NoYXRJY29uPlxuICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICB7c2hvd05ld0NoYXRCdXR0b24gJiYgKFxuICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3QoJ2NvbnZlcnNhdGlvbnMubmV3Q2hhdCcpfT5cbiAgICAgICAgICAgICAgPFNDU1dyYXBwZXJOZXdDaGF0SWNvbiBvbkNsaWNrPXtoYW5kbGVOZXdDaGF0fT5cbiAgICAgICAgICAgICAgICA8TmV3Q2hhdCB3aWR0aD17MjB9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgICAgIDwvU0NTV3JhcHBlck5ld0NoYXRJY29uPlxuICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgaGVpZ2h0OiAnY2FsYygxMDAlIC0gMzJweCknLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBgJHtpc09wZW4gPyAnJyA6ICdmbGV4LWVuZCd9YCxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAge2lzT3BlbiAmJiAoXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgcGFkZGluZzogJzhweCAwIDAgMCcsXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgICAgIGdhcDogJzRweCcsXG4gICAgICAgICAgICAgIGZsZXhHcm93OiAxLFxuICAgICAgICAgICAgICBtaW5XaWR0aDogJzI0NHB4JyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBmb250U2l6ZTogJzE0cHgnLFxuICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6ICc0MDAnLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAnIzY2NjY2NicsXG4gICAgICAgICAgICAgICAgbGluZUhlaWdodDogJzE0MCUnLFxuICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0OiAnMTJweCcsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KCdjb252ZXJzYXRpb25zLnRpdGxlJyl9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHJlZj17Y2hhdHNDb250YWluZXJSZWZ9XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgICAgIGdhcDogJzRweCcsXG4gICAgICAgICAgICAgICAgZmxleEdyb3c6IDEsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICBvdmVyZmxvd1k6ICdhdXRvJyxcbiAgICAgICAgICAgICAgICBvdmVyc2Nyb2xsQmVoYXZpb3JZOiAnY29udGFpbicsXG4gICAgICAgICAgICAgICAgLi4uKGNoYXRzLmxlbmd0aCAmJiB7IG1heEhlaWdodDogYGNhbGMoMTAwdmggLSAke2hhc0Vycm9yID8gMTk3IDogMTYwfXB4KWAgfSksXG4gICAgICAgICAgICAgICAgLi4uKCFjaGF0cy5sZW5ndGggJiYgeyBhbGlnbkl0ZW1zOiAnY2VudGVyJyB9KSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2hhc0Vycm9yICYmICFjaGF0cy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBmbGV4R3JvdzogMSxcbiAgICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJywgZmxleEdyb3c6IDEgfX0+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvclN0YXRlIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgZ2FwOiAnMTZweCcsXG4gICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAncmdiYSgyNTMsIDIzNiwgMjM2LCAxKScsXG4gICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnOHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAnMTJweCcsXG4gICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkIHJnYmEoMTk5LCA1LCA1LCAxKScsXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJywganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInIH19PlxuICAgICAgICAgICAgICAgICAgICAgIDxFcnJvckljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAnMTRweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiAnNDAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAncmdiYSgzMiwgMzIsIDMxLCAxKScsXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0OiAnMTQwJScsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt0KCdjb252ZXJzYXRpb25zLmVycm9yJyl9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICApIDogbG9hZGluZ0NoYXRzID8gKFxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgaGVpZ2h0OiAnNjcwcHgnIH19PlxuICAgICAgICAgICAgICAgICAgPExvYWRlciAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICApIDogY2hhdHMubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICB7Y2hhdHMubWFwKGNoYXQgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxMaXN0SGlzdG9yeUNoYXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17Y2hhdC5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXQ9e2NoYXR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtjaGF0RGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc09wZW5Nb2RhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRDaGF0KGNoYXREYXRhLnNlc3Npb25FeHRlcm5hbElkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkdvVG9DaGF0KGNoYXREYXRhKVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTW9kYWxPcGVuPXtpc09wZW5Nb2RhbCA9PT0gY2hhdC5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uT3Blbk1vZGFsPXtoYW5kbGVPcGVuTW9kYWx9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlTW9kYWw9e2hhbmRsZUNsb3NlTW9kYWx9XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVycz17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVEZWxldGVDaGF0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVVcGRhdGVDaGF0LFxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ9e3NlbGVjdGVkQ2hhdCA9PT0gY2hhdC5zZXNzaW9uRXh0ZXJuYWxJZH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmdNb3JlQ2hhdHMgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLCBwYWRkaW5nOiAnMTZweCcgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgPExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBmbGV4R3JvdzogMSxcbiAgICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgICAgICAgICAgIGdhcDogJzE4cHgnLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzIwMXB4JyxcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPEVtcHR5SGlzdG9yeUljb24gLz5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6ICcxNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiAnNDAwJyxcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3JnYmEoMTAyLCAxMDIsIDEwMiwgMSknLFxuICAgICAgICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQ6ICcxNDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7dCgnY29udmVyc2F0aW9ucy5lbXB0eScpfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2hhc0Vycm9yICYmIGNoYXRzLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBnYXA6ICcxNnB4JyxcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAncmdiYSgyNTMsIDIzNiwgMjM2LCAxKScsXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzhweCcsXG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcxMnB4JyxcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkIHJnYmEoMTk5LCA1LCA1LCAxKScsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJywganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInIH19PlxuICAgICAgICAgICAgICAgICAgICA8RXJyb3JJY29uIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6ICcxNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiAnNDAwJyxcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3JnYmEoMzIsIDMyLCAzMSwgMSknLFxuICAgICAgICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQ6ICcxNDAlJyxcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3QoJ2NvbnZlcnNhdGlvbnMuZXJyb3InKX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICBnYXA6ICc4cHgnLFxuICAgICAgICAgICAgZmxleERpcmVjdGlvbjogaXNPcGVuID8gJ3JvdycgOiAnY29sdW1uJyxcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBzZWxlY3RlZEFnZW50ID8gJ3NwYWNlLWJldHdlZW4nIDogJ2ZsZXgtZW5kJyxcbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge3NlbGVjdGVkQWdlbnQgJiYgPEZlZWRiYWNrQnV0dG9uIHNlbGVjdGVkQWdlbnQ9e3NlbGVjdGVkQWdlbnR9IGlzT3Blbj17aXNPcGVufSAvPn1cbiAgICAgICAgICA8T25ib2FyZGluZ01vZGFsQnV0dG9uIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBMkJBLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNyRSxTQUFTQyxpQkFBaUIsUUFBUSxvREFBb0Q7QUFDdEYsU0FBU0MsUUFBUSxRQUFRLDRDQUE0QztBQUNyRSxTQUFTQyxRQUFRLFFBQVEsMkNBQTJDO0FBQ3BFLFNBQVNDLE1BQU0sUUFBUSx5Q0FBeUM7QUFDaEUsU0FBU0MsS0FBSyxRQUFRLHdDQUF3QztBQUU5RCxTQUFTQyxPQUFPLFFBQVEsOENBQThDO0FBRXRFLFNBQVNDLGdCQUFnQixRQUFRLGdDQUFnQztBQUNqRSxTQUFTQyxpQkFBaUIsUUFBUSwwQkFBMEI7QUFDNUQsU0FBU0MsUUFBUSxRQUFRLHlCQUF5QjtBQUNsRCxTQUFTQyxNQUFNLFFBQVEsb0JBQW9CO0FBQzNDLFNBQVNDLFVBQVUsRUFBRUMsUUFBUSxFQUFFQyxPQUFPLFFBQVEsbUJBQW1CO0FBQ2pFLFNBQVNDLE1BQU0sUUFBUSx5QkFBeUI7QUFDaEQsU0FBU0MsSUFBSSxRQUFRLHFCQUFxQjtBQUMxQyxTQUFTQyxVQUFVLFFBQVEsK0JBQStCO0FBQzFELFNBQVNDLGlCQUFpQixRQUFRLG1DQUFtQztBQUNyRSxTQUFTQyxtQkFBbUIsUUFBUSxxQ0FBcUM7QUFDekUsU0FBU0MsU0FBUyxRQUFRLDZCQUE2QjtBQUN2RCxTQUFTQyxPQUFPLFFBQVEsMkJBQTJCO0FBQ25ELFNBQVNDLHFCQUFxQixRQUFRLG1DQUFtQztBQUN6RSxTQUFTQyxjQUFjLFFBQVEs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
566
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIkNoZXZyb25Eb3VibGVMZWZ0IiwiQ1VCdXR0b24iLCJNZW51RG90cyIsIlBlbmNpbCIsIlRyYXNoIiwiVG9vbHRpcCIsIkVtcHR5SGlzdG9yeUljb24iLCJ1c2VSZXNpemVMaXN0ZW5lciIsInVzZUNoYXRzIiwiTG9hZGVyIiwiRXJyb3JTdGF0ZSIsIk1BSUFJY29uIiwiTWFpYVN0b3JlSWNvbiIsIk5ld0NoYXQiLCJFVkVOVFMiLCJ1c2VUIiwiT3B0aW9uSXRlbSIsIkVkaXRRdWVzdGlvbk1vZGFsIiwiRGVsZXRlUXVlc3Rpb25Nb2RhbCIsIkVycm9ySWNvbiIsInVzZVVzZXIiLCJPbmJvYXJkaW5nTW9kYWxCdXR0b24iLCJGZWVkYmFja0J1dHRvbiIsInVzZUdsb2JhbENvbnRleHQiLCJmZXRjaE1haWEiLCJtYXBDT1JMYW5nIiwiU0NMSENXcmFwcGVyIiwiU0NMSENXcmFwcGVyQWdlbnQiLCJTQ0xIQ1dyYXBwZXJBZ2VudFRleHQiLCJTQ0xIQ1dyYXBwZXJCdXR0b25BY3Rpb25zIiwiU0NMSENXcmFwcGVyQ29udGVudCIsIlNDTEhDV3JhcHBlclRpdGxlIiwiU0NTV3JhcHBlckNvbGxhcHNlZEJ1dHRvbiIsIlNDU1dyYXBwZXJOZXdDaGF0SWNvbiIsIlNDU1dyYXBwZXJBZ2VudHNOYXZJY29uIiwiU0NTU2lkZWJhclJvb3QiLCJTQ1NTaWRlYmFyVG9vbGJhciIsIlNDU1NpZGViYXJCb2R5IiwiU0NTU2lkZWJhck9wZW5QYW5lbCIsIlNDU1NpZGViYXJBZ2VudHNCbG9jayIsIlNDU1NpZGViYXJBZ2VudHNIZWFkaW5nIiwiU0NTU2lkZWJhckFnZW50c0hlYWRpbmdUZXh0IiwiU0NTU2lkZWJhckFnZW50c0FjdGlvbnMiLCJTQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvbiIsIlNDU1NpZGViYXJNYWlha2VyTmF2TGFiZWwiLCJTQ1NTaWRlYmFyQ29udmVyc2F0aW9uc0hlYWRpbmciLCJTQ1NTaWRlYmFyQ2hhdHNTY3JvbGwiLCJTQ1NTaWRlYmFyRXJyb3JTdGF0ZUNvbHVtbiIsIlNDU1NpZGViYXJFcnJvclN0YXRlVG9wIiwiU0NTU2lkZWJhckVycm9yQmFubmVyIiwiU0NTU2lkZWJhckVycm9yQmFubmVySWNvbldyYXAiLCJTQ1NTaWRlYmFyRXJyb3JCYW5uZXJNZXNzYWdlIiwiU0NTU2lkZWJhckxvYWRpbmdBcmVhIiwiU0NTU2lkZWJhckxvYWRNb3JlUm93IiwiU0NTU2lkZWJhckVtcHR5Q2hhdHMiLCJTQ1NTaWRlYmFyRW1wdHlDaGF0c1RleHQiLCJTQ1NTaWRlYmFyQ2hhdHNGb290ZXIiLCJTQ1NTaWRlYmFyRm9vdGVyQWN0aW9ucyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsImFjdGlvbnMiLCJlZGl0IiwicHJvcHMiLCJfb2JqZWN0U3ByZWFkIiwiZGVsZXRlIiwiYWJicmV2aWF0ZVNwZWNpYWxpc3RJbkFnZW50TmFtZSIsImFnZW50TmFtZSIsInJlcGxhY2UiLCJMaXN0SGlzdG9yeUNoYXQiLCJfcmVmIiwiY2hhdCIsIm9uQ2xpY2siLCJpc01vZGFsT3BlbiIsIm9uT3Blbk1vZGFsIiwib25DbG9zZU1vZGFsIiwiaGFuZGxlcnMiLCJpc1NlbGVjdGVkIiwidGV4dFJlZiIsImFnZW50UmVmIiwiX3VzZVJlc2l6ZUxpc3RlbmVyIiwidGl0bGUiLCJzaG93VG9vbHRpcCIsIl91c2VSZXNpemVMaXN0ZW5lcjIiLCJhZ2VudCIsInNob3dUb29sdGlwQWdlbnQiLCJfdXNlVCIsInQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJhY3Rpb24iLCJzZXRBY3Rpb24iLCJtZW51SXRlbXMiLCJsYWJlbCIsIm9uQ2xpY2tJdGVtIiwiY2hhdElkIiwiSWNvbiIsImV2ZW50S2V5IiwicG1BaU1lbnVFZGl0IiwicG1BaU1lbnVEZWxldGUiLCJoYW5kbGVDb25maXJtQWN0aW9uIiwiY2hhdERhdGEiLCJoYW5kbGVVcGRhdGVDaGF0IiwiaGFuZGxlRGVsZXRlQ2hhdCIsImNoaWxkcmVuIiwiZSIsInN0b3BQcm9wYWdhdGlvbiIsInJlZiIsInByb2plY3ROYW1lIiwiY29uY2F0IiwiYWdlbnRUeXBlIiwid2lkdGgiLCJoZWlnaHQiLCJzdHlsZSIsImZvbnRTaXplIiwiZW1vamkiLCJpY29uT25seSIsInNpemUiLCJ2YXJpYW50IiwiZXZlbnQiLCJpZCIsInBvc2l0aW9uIiwidG9wIiwicmlnaHQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJ6SW5kZXgiLCJkaXNwbGF5IiwiZmxleERpcmVjdGlvbiIsImJvcmRlclJhZGl1cyIsImJvcmRlciIsIm1pbldpZHRoIiwibWFwIiwiX3JlZjIiLCJzZXNzaW9uRXh0ZXJuYWxJZCIsIm9uQ2xvc2UiLCJoYW5kbGVTZXRJc09wZW5Nb2RhbCIsIlNpZGViYXIiLCJfcmVmMyIsIl91c2VyJHBlcm1pc3Npb25zIiwib25Hb1RvQ2hhdCIsIl9yZWYzJG9uRXJyb3IiLCJvbkVycm9yIiwiaGFuZGxlR29Ub0hvbWUiLCJzaG93TmV3Q2hhdCIsInJlZmV0Y2hDaGF0cyIsImhhbmRsZVNldFJlZmV0Y2hDaGF0cyIsImhhc0Vycm9yIiwicmVzZXRTZWxlY3RlZENoYXRSZWYiLCJfcmVmMyRhZ2VudHNOYXZBY3RpdmUiLCJhZ2VudHNOYXZBY3RpdmUiLCJfdXNlVDIiLCJpMThuIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJpc09wZW4iLCJzZXRJc09wZW4iLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzT3Blbk1vZGFsIiwic2V0SXNPcGVuTW9kYWwiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInNlbGVjdGVkQ2hhdCIsInNldFNlbGVjdGVkQ2hhdCIsImNoYXRzRmV0Y2hlZFJlZiIsImNoYXRzQ29udGFpbmVyUmVmIiwidXNlciIsIl91c2VHbG9iYWxDb250ZXh0Iiwic2VsZWN0ZWRBZ2VudCIsInNlbGVjdEFnZW50Iiwic2V0UHJvamVjdCIsInNldENsaWVudCIsIl91c2VDaGF0cyIsImxvYWRpbmdDaGF0cyIsImNoYXRzIiwiZGVsZXRlQ2hhdCIsInVwZGF0ZUNoYXQiLCJmZXRjaENoYXRzIiwibGltaXQiLCJvZmZzZXQiLCJoYXNNb3JlQ2hhdHMiLCJsb2FkTW9yZUNoYXRzIiwiaXNMb2FkaW5nTW9yZUNoYXRzIiwidXNlclBlcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJhaV9hZ2VudHMiLCJjdXJyZW50IiwiX3JlZjQiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0Iiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJoYW5kbGVPcGVuTW9kYWwiLCJoYW5kbGVDbG9zZU1vZGFsIiwiaGFuZGxlQ2xpY2tPdXRzaWRlIiwidGFyZ2V0IiwiY2xvc2VzdCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYW5kbGVUb2dnbGVTaWRlYmFyIiwiaGFuZGxlT3BlbkNyZWF0ZUFnZW50IiwiX3JlZjUiLCJfY2FsbGVlMiIsInJlc3BvbnNlIiwiZGF0YSIsIm1haWFrZXJBZ2VudCIsIl9jb250ZXh0MiIsInBhdGgiLCJsYW5ndWFnZSIsIm1ldGhvZCIsInNlbnQiLCJqc29uIiwiZmluZCIsInR5cGUiLCJlbnRpdHkiLCJhYnJ1cHQiLCJoYW5kbGVTY3JvbGwiLCJfY2hhdHNDb250YWluZXJSZWYkY3UiLCJzY3JvbGxUb3AiLCJzY3JvbGxIZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJpc0F0Qm90dG9tIiwiY29udGFpbmVyIiwiaGFuZGxlTmV3Q2hhdCIsIl9yZWY2IiwiX2NhbGxlZTMiLCJfY29udGV4dDMiLCJoYW5kbGVSZWZldGNoU2Vzc2lvbiIsInNob3dOZXdDaGF0QnV0dG9uIiwidmlldyIsImlzX2RlbGV0ZWQiLCJoYXNfbm90X3Blcm1pc3Npb25zIiwiaGFzX25vdF9hY2Nlc3MiLCIkaXNPcGVuIiwiY29sb3IiLCIkYWN0aXZlIiwicm9sZSIsInRhYkluZGV4Iiwib25LZXlEb3duIiwia2V5IiwicHJldmVudERlZmF1bHQiLCIkaGFzQ2hhdHMiLCJsZW5ndGgiLCIkb2Zmc2V0VmFyaWFudCIsIiRqdXN0aWZ5QmV0d2VlbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9TaWRlYmFyL1NpZGViYXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXBhcmFtLXJlYXNzaWduICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG5pbXBvcnQgeyBNdXRhYmxlUmVmT2JqZWN0LCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENoZXZyb25Eb3VibGVMZWZ0IH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ2hldnJvbkRvdWJsZUxlZnQnXG5pbXBvcnQgeyBDVUJ1dHRvbiB9IGZyb20gJ0Bwcm9qZWN0Y29yL2J1dHRvbi9saWIvY29tcG9uZW50cy9DVUJ1dHRvbidcbmltcG9ydCB7IE1lbnVEb3RzIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvTWVudURvdHMnXG5pbXBvcnQgeyBQZW5jaWwgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9QZW5jaWwnXG5pbXBvcnQgeyBUcmFzaCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1RyYXNoJ1xuXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5cbmltcG9ydCB7IEVtcHR5SGlzdG9yeUljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9FbXB0eUhpc3RvcnknXG5pbXBvcnQgeyB1c2VSZXNpemVMaXN0ZW5lciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVJlc2l6ZSdcbmltcG9ydCB7IHVzZUNoYXRzIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQ2hhdHMnXG5pbXBvcnQgeyBMb2FkZXIgfSBmcm9tICcuLi8uLi9hdG9tcy9Mb2FkZXInXG5pbXBvcnQgeyBFcnJvclN0YXRlLCBNQUlBSWNvbiwgTWFpYVN0b3JlSWNvbiwgTmV3Q2hhdCB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zJ1xuaW1wb3J0IHsgRVZFTlRTIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVCdcbmltcG9ydCB7IE9wdGlvbkl0ZW0gfSBmcm9tICcuLi8uLi9hdG9tcy9DYXJkTWVudS9DYXJkTWVudSdcbmltcG9ydCB7IEVkaXRRdWVzdGlvbk1vZGFsIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0VkaXRRdWVzdGlvbk1vZGFsJ1xuaW1wb3J0IHsgRGVsZXRlUXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9EZWxldGVRdWVzdGlvbk1vZGFsJ1xuaW1wb3J0IHsgRXJyb3JJY29uIH0gZnJvbSAnLi4vLi4vYXRvbXMvaWNvbnMvRXJyb3JJY29uJ1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBPbmJvYXJkaW5nTW9kYWxCdXR0b24gfSBmcm9tICcuLi8uLi9hdG9tcy9PbmJvYXJkaW5nTW9kYWxCdXR0b24nXG5pbXBvcnQgeyBGZWVkYmFja0J1dHRvbiB9IGZyb20gJy4uLy4uL2F0b21zL0ZlZWRiYWNrQnV0dG9uJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBmZXRjaE1haWEgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL2NsaWVudCdcbmltcG9ydCB7IG1hcENPUkxhbmcgfSBmcm9tICcuLi8uLi8uLi9sYW5nL3V0aWxzJ1xuaW1wb3J0IHtcbiAgU0NMSENXcmFwcGVyLFxuICBTQ0xIQ1dyYXBwZXJBZ2VudCxcbiAgU0NMSENXcmFwcGVyQWdlbnRUZXh0LFxuICBTQ0xIQ1dyYXBwZXJCdXR0b25BY3Rpb25zLFxuICBTQ0xIQ1dyYXBwZXJDb250ZW50LFxuICBTQ0xIQ1dyYXBwZXJUaXRsZSxcbiAgU0NTV3JhcHBlckNvbGxhcHNlZEJ1dHRvbixcbiAgU0NTV3JhcHBlck5ld0NoYXRJY29uLFxuICBTQ1NXcmFwcGVyQWdlbnRzTmF2SWNvbixcbn0gZnJvbSAnLi9TaWRlYmFyLnN0eWxlcydcbmltcG9ydCB7XG4gIFNDU1NpZGViYXJSb290LFxuICBTQ1NTaWRlYmFyVG9vbGJhcixcbiAgU0NTU2lkZWJhckJvZHksXG4gIFNDU1NpZGViYXJPcGVuUGFuZWwsXG4gIFNDU1NpZGViYXJBZ2VudHNCbG9jayxcbiAgU0NTU2lkZWJhckFnZW50c0hlYWRpbmcsXG4gIFNDU1NpZGViYXJBZ2VudHNIZWFkaW5nVGV4dCxcbiAgU0NTU2lkZWJhckFnZW50c0FjdGlvbnMsXG4gIFNDU1NpZGViYXJNYWlha2VyTmF2QnV0dG9uLFxuICBTQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsLFxuICBTQ1NTaWRlYmFyQ29udmVyc2F0aW9uc0hlYWRpbmcsXG4gIFNDU1NpZGViYXJDaGF0c1Njcm9sbCxcbiAgU0NTU2lkZWJhckVycm9yU3RhdGVDb2x1bW4sXG4gIFNDU1NpZGViYXJFcnJvclN0YXRlVG9wLFxuICBTQ1NTaWRlYmFyRXJyb3JCYW5uZXIsXG4gIFNDU1NpZGViYXJFcnJvckJhbm5lckljb25XcmFwLFxuICBTQ1NTaWRlYmFyRXJyb3JCYW5uZXJNZXNzYWdlLFxuICBTQ1NTaWRlYmFyTG9hZGluZ0FyZWEsXG4gIFNDU1NpZGViYXJMb2FkTW9yZVJvdyxcbiAgU0NTU2lkZWJhckVtcHR5Q2hhdHMsXG4gIFNDU1NpZGViYXJFbXB0eUNoYXRzVGV4dCxcbiAgU0NTU2lkZWJhckNoYXRzRm9vdGVyLFxuICBTQ1NTaWRlYmFyRm9vdGVyQWN0aW9ucyxcbn0gZnJvbSAnLi9TaWRlYmFyLmxheW91dC5zdHlsZXMnXG5cbmNvbnN0IGFjdGlvbnMgPSB7XG4gIGVkaXQ6IChwcm9wczogYW55KSA9PiA8RWRpdFF1ZXN0aW9uTW9kYWwgey4uLnByb3BzfSAvPixcbiAgZGVsZXRlOiAocHJvcHM6IGFueSkgPT4gPERlbGV0ZVF1ZXN0aW9uTW9kYWwgey4uLnByb3BzfSAvPixcbn1cblxuLyoqIEFicmV2aWEgXCJlc3BlY2lhbGlzdGFcIi9cImVzcGVjaWFsaXN0XCIg4oaSIFwiRXNwLlwiIChFUy9QVCkgeSBcInNwZWNpYWxpc3RcIiDihpIgXCJTcGVjLlwiIChFTikgZW4gZWwgbm9tYnJlIGRlbCBhZ2VudGUuICovXG5mdW5jdGlvbiBhYmJyZXZpYXRlU3BlY2lhbGlzdEluQWdlbnROYW1lKGFnZW50TmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFhZ2VudE5hbWUgfHwgdHlwZW9mIGFnZW50TmFtZSAhPT0gJ3N0cmluZycpIHJldHVybiBhZ2VudE5hbWVcbiAgcmV0dXJuIGFnZW50TmFtZS5yZXBsYWNlKC9cXGIoZXNwZWNpYWxpc3RhfGVzcGVjaWFsaXN0KVxcYi9naSwgJ0VzcC4nKS5yZXBsYWNlKC9cXGJzcGVjaWFsaXN0XFxiL2dpLCAnU3BlYy4nKVxufVxuXG4vKiogTWFya2V0cGxhY2UgLyDigJxNaXMgYWdlbnRlc+KAnSAoZW5ncmFuYWplIGNvbXBhY3RvLCByZWZlcmVuY2lhIEZpZ21hIGJyYWluLWNvZykg4oCUIHJlYWN0aXZhciBjb24gbGEgc2VjY2nDs24gZW4gc2lkZWJhciAqL1xuLyogY29uc3QgTXlBZ2VudHNOYXZJY29uID0gKHsgc2l6ZSA9IDE2IH06IHsgc2l6ZT86IG51bWJlciB9KSA9PiAoXG4gIDxzdmcgd2lkdGg9e3NpemV9IGhlaWdodD17c2l6ZX0gdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgPHBhdGhcbiAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgZmlsbFJ1bGU9XCJldmVub2RkXCJcbiAgICAgIGNsaXBSdWxlPVwiZXZlbm9kZFwiXG4gICAgICBkPVwiTTggMS4yNWEuNzUuNzUgMCAwIDEgLjc0LjY0bC4wNy40NWEzLjU1IDMuNTUgMCAwIDEgLjk0LjRsLjM4LS4yOGEuNzUuNzUgMCAwIDEgLjkyIDEuMThsLS4zMi4zN2MuMTkuMy4zMy42My40Ljk5bC40NS4wNmEuNzUuNzUgMCAwIDEtLjEgMS40OWwtLjQ2LS4wNmEzLjQ4IDMuNDggMCAwIDEtLjQuOTRsLjMuNGEuNzUuNzUgMCAxIDEtMS4yLjlsLS4zMi0uNDNhMy41NSAzLjU1IDAgMCAxLS45OC40MmwuMDEuNDdhLjc1Ljc1IDAgMCAxLTEuNDkuMDlsLS4wMi0uNDZhMy41NSAzLjU1IDAgMCAxLS45OS0uNDFsLS4zNi4zM2EuNzUuNzUgMCAxIDEtMS4wMi0xLjFsLjM0LS4zMWEzLjQ4IDMuNDggMCAwIDEtLjQzLTFsLS40Ni4wNmEuNzUuNzUgMCAwIDEtLjE5LTEuNDhsLjQ1LS4wN2MuMDctLjM1LjItLjY4LjM4LS45N2wtLjMzLS4zNmEuNzUuNzUgMCAxIDEgMS4xMS0xLjAybC4zNS4zOGMuMy0uMTguNjQtLjMyIDEtLjM5bC0uMDYtLjQ1YS43NS43NSAwIDAgMSAuNzQtLjg2Wk04IDUuMzVhMi42NSAyLjY1IDAgMSAwIDAgNS4zIDIuNjUgMi42NSAwIDAgMCAwLTUuM1pcIlxuICAgIC8+XG4gIDwvc3ZnPlxuKSAqL1xuXG5jb25zdCBMaXN0SGlzdG9yeUNoYXQgPSAoe1xuICBjaGF0LFxuICBvbkNsaWNrLFxuICBpc01vZGFsT3BlbixcbiAgb25PcGVuTW9kYWwsXG4gIG9uQ2xvc2VNb2RhbCxcbiAgaGFuZGxlcnMsXG4gIGlzU2VsZWN0ZWQsXG59OiB7XG4gIGNoYXQ6IGFueVxuICBvbkNsaWNrOiAoY2hhdDogYW55KSA9PiB2b2lkXG4gIGlzTW9kYWxPcGVuOiBib29sZWFuXG4gIG9uT3Blbk1vZGFsOiAoY2hhdElkOiBzdHJpbmcpID0+IHZvaWRcbiAgb25DbG9zZU1vZGFsOiAoKSA9PiB2b2lkXG4gIGhhbmRsZXJzOiB7XG4gICAgaGFuZGxlRGVsZXRlQ2hhdDogKGNoYXQ6IGFueSkgPT4gdm9pZFxuICAgIGhhbmRsZVVwZGF0ZUNoYXQ6IChjaGF0OiBhbnkpID0+IHZvaWRcbiAgfVxuICBpc1NlbGVjdGVkOiBib29sZWFuXG59KSA9PiB7XG4gIGNvbnN0IHRleHRSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGFnZW50UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCB7IHNob3dUb29sdGlwIH0gPSB1c2VSZXNpemVMaXN0ZW5lcih0ZXh0UmVmLCBbY2hhdC50aXRsZV0pXG4gIGNvbnN0IHsgc2hvd1Rvb2x0aXA6IHNob3dUb29sdGlwQWdlbnQgfSA9IHVzZVJlc2l6ZUxpc3RlbmVyKGFnZW50UmVmLCBbY2hhdC5hZ2VudF0pXG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IFthY3Rpb24sIHNldEFjdGlvbl0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuXG4gIGNvbnN0IG1lbnVJdGVtcyA9IFtcbiAgICB7XG4gICAgICBsYWJlbDogdCgnaGlzdG9yeS5tZW51LnJlbmFtZScpLFxuICAgICAgb25DbGlja0l0ZW06IChjaGF0SWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBzZXRBY3Rpb24oJ2VkaXQnKVxuICAgICAgICBvbk9wZW5Nb2RhbChjaGF0SWQpXG4gICAgICB9LFxuICAgICAgSWNvbjogUGVuY2lsLFxuICAgICAgZXZlbnRLZXk6IEVWRU5UUy5wbUFpTWVudUVkaXQsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogdCgnaGlzdG9yeS5tZW51LmRlbGV0ZScpLFxuICAgICAgb25DbGlja0l0ZW06IChjaGF0SWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBzZXRBY3Rpb24oJ2RlbGV0ZScpXG4gICAgICAgIG9uT3Blbk1vZGFsKGNoYXRJZClcbiAgICAgIH0sXG4gICAgICBJY29uOiBUcmFzaCxcbiAgICAgIGV2ZW50S2V5OiBFVkVOVFMucG1BaU1lbnVEZWxldGUsXG4gICAgfSxcbiAgXVxuXG4gIGNvbnN0IGhhbmRsZUNvbmZpcm1BY3Rpb24gPSAoY2hhdERhdGE6IGFueSkgPT4ge1xuICAgIGlmIChhY3Rpb24gPT09ICdlZGl0Jykge1xuICAgICAgaGFuZGxlcnMuaGFuZGxlVXBkYXRlQ2hhdChjaGF0RGF0YSlcbiAgICB9IGVsc2Uge1xuICAgICAgaGFuZGxlcnMuaGFuZGxlRGVsZXRlQ2hhdChjaGF0RGF0YSlcbiAgICB9XG4gICAgc2V0QWN0aW9uKG51bGwpXG4gICAgb25DbG9zZU1vZGFsKClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxTQ0xIQ1dyYXBwZXJDb250ZW50XG4gICAgICAgIG9uQ2xpY2s9e2UgPT4ge1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICBvbkNsaWNrKGNoYXQpXG4gICAgICAgIH19XG4gICAgICAgIGtleT17YGNvbnZlcnNhdGlvbi0ke2NoYXQuc2Vzc2lvbkV4dGVybmFsSWR9YH1cbiAgICAgICAgaXNNb2RhbE9wZW49e2lzTW9kYWxPcGVufVxuICAgICAgICBpc1NlbGVjdGVkPXtpc1NlbGVjdGVkfVxuICAgICAgPlxuICAgICAgICA8U0NMSENXcmFwcGVyPlxuICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXtzaG93VG9vbHRpcCA/IGNoYXQudGl0bGUgOiAnJ30+XG4gICAgICAgICAgICA8U0NMSENXcmFwcGVyVGl0bGUgcmVmPXt0ZXh0UmVmfT57Y2hhdC50aXRsZSB8fCB0KCdjb252ZXJzYXRpb25zLmVtcHR5TGFiZWwnKX08L1NDTEhDV3JhcHBlclRpdGxlPlxuICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17c2hvd1Rvb2x0aXBBZ2VudCA/IGNoYXQuYWdlbnQgKyAoY2hhdC5wcm9qZWN0TmFtZSA/IGAgLSAke2NoYXQucHJvamVjdE5hbWV9YCA6ICcnKSA6ICcnfT5cbiAgICAgICAgICAgIDxTQ0xIQ1dyYXBwZXJBZ2VudD5cbiAgICAgICAgICAgICAge2NoYXQuYWdlbnRUeXBlID09PSAnY2xvbmUnID8gKFxuICAgICAgICAgICAgICAgIDxNQUlBSWNvbiB3aWR0aD17MTR9IGhlaWdodD17MTR9IC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3sgZm9udFNpemU6ICcxNHB4JyB9fT57Y2hhdC5lbW9qaX08L3NwYW4+XG4gICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgPFNDTEhDV3JhcHBlckFnZW50VGV4dCByZWY9e2FnZW50UmVmfT5cbiAgICAgICAgICAgICAgICB7Y2hhdC5hZ2VudFR5cGUgPT09ICdjbG9uZScgPyBhYmJyZXZpYXRlU3BlY2lhbGlzdEluQWdlbnROYW1lKGNoYXQuYWdlbnQpIDogY2hhdC5hZ2VudH1cbiAgICAgICAgICAgICAgICB7Y2hhdC5wcm9qZWN0TmFtZSAmJiBgIC0gJHtjaGF0LnByb2plY3ROYW1lfWB9XG4gICAgICAgICAgICAgIDwvU0NMSENXcmFwcGVyQWdlbnRUZXh0PlxuICAgICAgICAgICAgPC9TQ0xIQ1dyYXBwZXJBZ2VudD5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgIDwvU0NMSENXcmFwcGVyPlxuICAgICAgICA8U0NMSENXcmFwcGVyQnV0dG9uQWN0aW9ucz5cbiAgICAgICAgICA8Q1VCdXR0b25cbiAgICAgICAgICAgIGljb25Pbmx5XG4gICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICBvbk9wZW5Nb2RhbChjaGF0LmlkKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8TWVudURvdHMgd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgIDwvQ1VCdXR0b24+XG4gICAgICAgICAge2lzTW9kYWxPcGVuICYmICFhY3Rpb24gJiYgKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBkYXRhLW1vZGFsLWNvbnRhaW5lclxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgICAgIHRvcDogJzMycHgnLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiAnMTZweCcsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnd2hpdGUnLFxuICAgICAgICAgICAgICAgIHpJbmRleDogMTAwMCxcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnNHB4JyxcbiAgICAgICAgICAgICAgICBib3JkZXI6ICcxcHggc29saWQgcmdiYSgyMjQsIDIyNCwgMjI0LCAxKScsXG4gICAgICAgICAgICAgICAgbWluV2lkdGg6ICcxMjRweCcsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHttZW51SXRlbXMubWFwKCh7IGxhYmVsLCBvbkNsaWNrSXRlbSwgSWNvbiwgZXZlbnRLZXkgfSkgPT4gKFxuICAgICAgICAgICAgICAgIDxPcHRpb25JdGVtXG4gICAgICAgICAgICAgICAgICBrZXk9e2xhYmVsfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2xhYmVsfVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25DbGlja0l0ZW0oY2hhdC5pZCl9XG4gICAgICAgICAgICAgICAgICBJY29uPXtJY29ufVxuICAgICAgICAgICAgICAgICAgZXZlbnRLZXk9e2V2ZW50S2V5fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TQ0xIQ1dyYXBwZXJCdXR0b25BY3Rpb25zPlxuICAgICAgPC9TQ0xIQ1dyYXBwZXJDb250ZW50PlxuICAgICAgeyEhYWN0aW9uICYmXG4gICAgICAgIGFjdGlvbnNbYWN0aW9uXSh7XG4gICAgICAgICAgb25DbG9zZTogKCkgPT4ge1xuICAgICAgICAgICAgb25DbG9zZU1vZGFsKClcbiAgICAgICAgICAgIHNldEFjdGlvbihudWxsKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgY2hhdCxcbiAgICAgICAgICBoYW5kbGVyczoge1xuICAgICAgICAgICAgaGFuZGxlQ29uZmlybUFjdGlvbixcbiAgICAgICAgICAgIGhhbmRsZVNldElzT3Blbk1vZGFsOiBvbkNsb3NlTW9kYWwsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSl9XG4gICAgPC8+XG4gIClcbn1cblxuZXhwb3J0IGNvbnN0IFNpZGViYXIgPSAoe1xuICBvbkdvVG9DaGF0LFxuICBvbkVycm9yID0gKCkgPT4gbnVsbCxcbiAgaGFuZGxlR29Ub0hvbWUsXG4gIHNob3dOZXdDaGF0LFxuICByZWZldGNoQ2hhdHMsXG4gIGhhbmRsZVNldFJlZmV0Y2hDaGF0cyxcbiAgaGFzRXJyb3IsXG4gIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLFxuICBhZ2VudHNOYXZBY3RpdmUgPSBudWxsLFxufToge1xuICBvbkdvVG9DaGF0OiAoY2hhdElkOiBzdHJpbmcpID0+IHZvaWRcbiAgb25FcnJvcjogKCkgPT4gdm9pZFxuICBoYW5kbGVHb1RvSG9tZTogKCkgPT4gdm9pZFxuICBzaG93TmV3Q2hhdDogYm9vbGVhblxuICByZWZldGNoQ2hhdHM6IGJvb2xlYW5cbiAgaGFuZGxlU2V0UmVmZXRjaENoYXRzOiAocmVmZXRjaDogYm9vbGVhbikgPT4gdm9pZFxuICBoYXNFcnJvcjogYm9vbGVhblxuICByZXNldFNlbGVjdGVkQ2hhdFJlZj86IE11dGFibGVSZWZPYmplY3Q8KCgpID0+IHZvaWQpIHwgbnVsbD5cbiAgLyoqIFJlc2FsdGEgTWFpYWtlciBvIE1hcmtldHBsYWNlIChzb2xvIE1haWFrZXIgdmlzaWJsZSBtaWVudHJhcyDigJxNaXMgYWdlbnRlc+KAnSBlc3TDoSBvY3VsdG8pICovXG4gIGFnZW50c05hdkFjdGl2ZT86ICdtYWlha2VyJyB8ICdtYXJrZXRwbGFjZScgfCBudWxsXG59KSA9PiB7XG4gIGNvbnN0IHsgdCwgaTE4biB9ID0gdXNlVCgpXG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VTdGF0ZSh0cnVlKVxuICBjb25zdCBbaXNPcGVuTW9kYWwsIHNldElzT3Blbk1vZGFsXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtzZWxlY3RlZENoYXQsIHNldFNlbGVjdGVkQ2hhdF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBjaGF0c0ZldGNoZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGNoYXRzQ29udGFpbmVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHsgYWdlbnQ6IHNlbGVjdGVkQWdlbnQsIHNlbGVjdEFnZW50LCBzZXRQcm9qZWN0LCBzZXRDbGllbnQgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCB7XG4gICAgbG9hZGluZ0NoYXRzLFxuICAgIGNoYXRzLFxuICAgIGRlbGV0ZUNoYXQsXG4gICAgdXBkYXRlQ2hhdCxcbiAgICBmZXRjaENoYXRzLFxuICAgIGxpbWl0LFxuICAgIG9mZnNldCxcbiAgICBoYXNNb3JlQ2hhdHMsXG4gICAgbG9hZE1vcmVDaGF0cyxcbiAgICBpc0xvYWRpbmdNb3JlQ2hhdHMsXG4gIH0gPSB1c2VDaGF0cyh7XG4gICAgb25FcnJvcixcbiAgfSlcblxuICBjb25zdCB1c2VyUGVybWlzc2lvbnMgPSB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVzZXRTZWxlY3RlZENoYXRSZWYpIHtcbiAgICAgIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQgPSAoKSA9PiBzZXRTZWxlY3RlZENoYXQobnVsbClcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChyZXNldFNlbGVjdGVkQ2hhdFJlZikge1xuICAgICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgfVxuICAgIH1cbiAgfSwgW3Jlc2V0U2VsZWN0ZWRDaGF0UmVmXSlcblxuICBjb25zdCBoYW5kbGVEZWxldGVDaGF0ID0gYXN5bmMgKGNoYXQ6IGFueSkgPT4ge1xuICAgIGRlbGV0ZUNoYXQoY2hhdC5zZXNzaW9uRXh0ZXJuYWxJZClcbiAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICAgIGhhbmRsZUdvVG9Ib21lKClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVVwZGF0ZUNoYXQgPSAoY2hhdDogYW55KSA9PiB7XG4gICAgdXBkYXRlQ2hhdChjaGF0KVxuICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gIH1cblxuICBjb25zdCBoYW5kbGVPcGVuTW9kYWwgPSAoY2hhdElkOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoaXNPcGVuTW9kYWwgJiYgaXNPcGVuTW9kYWwgIT09IGNoYXRJZCkge1xuICAgICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0SXNPcGVuTW9kYWwoY2hhdElkKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlTW9kYWwgPSAoKSA9PiB7XG4gICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBpZiAoaXNPcGVuTW9kYWwgJiYgIShldmVudC50YXJnZXQgYXMgRWxlbWVudCkuY2xvc2VzdCgnW2RhdGEtbW9kYWwtY29udGFpbmVyXScpKSB7XG4gICAgICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGlzT3Blbk1vZGFsKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGUpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICB9XG4gIH0sIFtpc09wZW5Nb2RhbF0pXG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlU2lkZWJhciA9ICgpID0+IHtcbiAgICBpZiAoaXNPcGVuTW9kYWwpIHtcbiAgICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gICAgfVxuICAgIHNldElzT3BlbihwcmV2ID0+ICFwcmV2KVxuICB9XG5cbiAgY29uc3QgaGFuZGxlT3BlbkNyZWF0ZUFnZW50ID0gYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgIHBhdGg6IGBhZ2VudHM/YWdlbnRfdHlwZT1jbG9uZSZsYW5nPSR7bWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKX1gLFxuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICB9KVxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICBjb25zdCBtYWlha2VyQWdlbnQgPSAoZGF0YS5kYXRhIHx8IFtdKS5maW5kKChhZ2VudDogYW55KSA9PiBhZ2VudC50eXBlID09PSAnY2xvbmUnICYmIGFnZW50LmVudGl0eSA9PT0gJ2dsb2JhbCcpXG5cbiAgICBpZiAoIW1haWFrZXJBZ2VudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc2V0UHJvamVjdChudWxsKVxuICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgc2VsZWN0QWdlbnQobWFpYWtlckFnZW50KVxuICAgIGhhbmRsZUdvVG9Ib21lKClcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzT3BlbiAmJiAhY2hhdHNGZXRjaGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNoYXRzRmV0Y2hlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgZmV0Y2hDaGF0cyh7IGxpbWl0LCBvZmZzZXQgfSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAocmVmZXRjaENoYXRzKSB7XG4gICAgICBmZXRjaENoYXRzKHsgbGltaXQsIG9mZnNldCB9KVxuICAgICAgaGFuZGxlU2V0UmVmZXRjaENoYXRzKGZhbHNlKVxuICAgIH1cbiAgfSwgW2lzT3BlbiwgcmVmZXRjaENoYXRzLCBoYW5kbGVTZXRSZWZldGNoQ2hhdHNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlU2Nyb2xsID0gKCkgPT4ge1xuICAgICAgaWYgKCFjaGF0c0NvbnRhaW5lclJlZi5jdXJyZW50IHx8ICFoYXNNb3JlQ2hhdHMgfHwgaXNMb2FkaW5nTW9yZUNoYXRzIHx8IGhhc0Vycm9yKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHNjcm9sbFRvcCwgc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQgfSA9IGNoYXRzQ29udGFpbmVyUmVmLmN1cnJlbnRcbiAgICAgIGNvbnN0IGlzQXRCb3R0b20gPSBzY3JvbGxUb3AgKyBjbGllbnRIZWlnaHQgPj0gc2Nyb2xsSGVpZ2h0IC0gMTBcblxuICAgICAgaWYgKGlzQXRCb3R0b20pIHtcbiAgICAgICAgbG9hZE1vcmVDaGF0cygpXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyID0gY2hhdHNDb250YWluZXJSZWYuY3VycmVudFxuICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgY29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtoYXNNb3JlQ2hhdHMsIGlzTG9hZGluZ01vcmVDaGF0cywgbG9hZE1vcmVDaGF0cywgaGFzRXJyb3JdKVxuXG4gIGNvbnN0IGhhbmRsZU5ld0NoYXQgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKGlzT3Blbk1vZGFsKSB7XG4gICAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICAgIH1cbiAgICBzZXRTZWxlY3RlZENoYXQobnVsbClcbiAgICBhd2FpdCBmZXRjaENoYXRzKHsgbGltaXQsIG9mZnNldDogMCB9KVxuICAgIGhhbmRsZUdvVG9Ib21lKClcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlUmVmZXRjaFNlc3Npb24gPSAoKSA9PiB7XG4gICAgICBmZXRjaENoYXRzKHsgbGltaXQ6IDIwLCBvZmZzZXQ6IDAgfSlcbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncmVmZXRjaC1zZXNzaW9uJywgaGFuZGxlUmVmZXRjaFNlc3Npb24pXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3JlZmV0Y2gtc2Vzc2lvbicsIGhhbmRsZVJlZmV0Y2hTZXNzaW9uKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3Qgc2hvd05ld0NoYXRCdXR0b24gPVxuICAgICFzaG93TmV3Q2hhdCAmJlxuICAgICFoYXNFcnJvciAmJlxuICAgICFsb2FkaW5nQ2hhdHMgJiZcbiAgICAoKHVzZXJQZXJtaXNzaW9ucz8udmlldyAmJlxuICAgICAgIXNlbGVjdGVkQWdlbnQ/LmlzX2RlbGV0ZWQgJiZcbiAgICAgICFzZWxlY3RlZEFnZW50Py5oYXNfbm90X3Blcm1pc3Npb25zICYmXG4gICAgICAhc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9hY2Nlc3MpIHx8XG4gICAgICAoIXVzZXJQZXJtaXNzaW9ucz8udmlldyAmJlxuICAgICAgICAhc2VsZWN0ZWRBZ2VudD8uaXNfZGVsZXRlZCAmJlxuICAgICAgICAhc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9wZXJtaXNzaW9ucyAmJlxuICAgICAgICAhc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9hY2Nlc3MpKVxuXG4gIHJldHVybiAoXG4gICAgPFNDU1NpZGViYXJSb290ICRpc09wZW49e2lzT3Blbn0+XG4gICAgICA8U0NTU2lkZWJhclRvb2xiYXIgJGlzT3Blbj17aXNPcGVufT5cbiAgICAgICAgPFRvb2x0aXAgdGl0bGU9e2lzT3BlbiA/IHQoJ2NvbnZlcnNhdGlvbnMuY29sbGFwc2UnKSA6IHQoJ2NvbnZlcnNhdGlvbnMuZXhwYW5kJyl9PlxuICAgICAgICAgIDxTQ1NXcmFwcGVyQ29sbGFwc2VkQnV0dG9uIG9uQ2xpY2s9e2hhbmRsZVRvZ2dsZVNpZGViYXJ9IGlzT3Blbj17aXNPcGVufT5cbiAgICAgICAgICAgIDxDaGV2cm9uRG91YmxlTGVmdCBjb2xvcj1cInJnYmEoMTAyLCAxMDIsIDEwMiwgMSlcIiB3aWR0aD17MjB9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgPC9TQ1NXcmFwcGVyQ29sbGFwc2VkQnV0dG9uPlxuICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgIHshaXNPcGVuID8gKFxuICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdjb252ZXJzYXRpb25zLm1haWFrZXJOYXYnKX0+XG4gICAgICAgICAgICA8U0NTV3JhcHBlckFnZW50c05hdkljb25cbiAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlT3BlbkNyZWF0ZUFnZW50fVxuICAgICAgICAgICAgICAkYWN0aXZlPXthZ2VudHNOYXZBY3RpdmUgPT09ICdtYWlha2VyJ31cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICBvbktleURvd249e2UgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJyB8fCBlLmtleSA9PT0gJyAnKSB7XG4gICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgIGhhbmRsZU9wZW5DcmVhdGVBZ2VudCgpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8TWFpYVN0b3JlSWNvbiBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgIDwvU0NTV3JhcHBlckFnZW50c05hdkljb24+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAgey8qXG4gICAgICAgIE1pcyBhZ2VudGVzIChzaWRlYmFyIGNvbGFwc2Fkbykg4oCUIHJlYWN0aXZhciBjb24gTXlBZ2VudHNOYXZJY29uIHkgcHJvcCBoYW5kbGVPcGVuTWFya2V0cGxhY2VcbiAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3QoJ2NvbnZlcnNhdGlvbnMubXlBZ2VudHNOYXYnKX0+Li4uPC9Ub29sdGlwPlxuICAgICAgICAqL31cbiAgICAgICAge3Nob3dOZXdDaGF0QnV0dG9uID8gKFxuICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdjb252ZXJzYXRpb25zLm5ld0NoYXQnKX0+XG4gICAgICAgICAgICA8U0NTV3JhcHBlck5ld0NoYXRJY29uIG9uQ2xpY2s9e2hhbmRsZU5ld0NoYXR9PlxuICAgICAgICAgICAgICA8TmV3Q2hhdCB3aWR0aD17MjB9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgICA8L1NDU1dyYXBwZXJOZXdDaGF0SWNvbj5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgPC9TQ1NTaWRlYmFyVG9vbGJhcj5cbiAgICAgIDxTQ1NTaWRlYmFyQm9keSAkaXNPcGVuPXtpc09wZW59PlxuICAgICAgICB7aXNPcGVuID8gKFxuICAgICAgICAgIDxTQ1NTaWRlYmFyT3BlblBhbmVsPlxuICAgICAgICAgICAgPFNDU1NpZGViYXJBZ2VudHNCbG9jaz5cbiAgICAgICAgICAgICAgPFNDU1NpZGViYXJBZ2VudHNIZWFkaW5nPlxuICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyQWdlbnRzSGVhZGluZ1RleHQ+e3QoJ2NvbnZlcnNhdGlvbnMuYWdlbnRzU2VjdGlvblRpdGxlJyl9PC9TQ1NTaWRlYmFyQWdlbnRzSGVhZGluZ1RleHQ+XG4gICAgICAgICAgICAgIDwvU0NTU2lkZWJhckFnZW50c0hlYWRpbmc+XG4gICAgICAgICAgICAgIDxTQ1NTaWRlYmFyQWdlbnRzQWN0aW9ucz5cbiAgICAgICAgICAgICAgICA8U0NTU2lkZWJhck1haWFrZXJOYXZCdXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlT3BlbkNyZWF0ZUFnZW50fVxuICAgICAgICAgICAgICAgICAgJGFjdGl2ZT17YWdlbnRzTmF2QWN0aXZlID09PSAnbWFpYWtlcid9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPE1haWFTdG9yZUljb24gc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhck1haWFrZXJOYXZMYWJlbD57dCgnY29udmVyc2F0aW9ucy5tYWlha2VyTmF2Jyl9PC9TQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsPlxuICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhck1haWFrZXJOYXZCdXR0b24+XG4gICAgICAgICAgICAgICAgey8qXG4gICAgICAgICAgICAgICAgTWlzIGFnZW50ZXMgKHNpZGViYXIgZXhwYW5kaWRvKSDigJQgcmVhY3RpdmFyIGNvbiBNeUFnZW50c05hdkljb24sIG15QWdlbnRzQ291bnQgeSBoYW5kbGVPcGVuTWFya2V0cGxhY2VcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVPcGVuTWFya2V0cGxhY2V9Pi4uLjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICovfVxuICAgICAgICAgICAgICA8L1NDU1NpZGViYXJBZ2VudHNBY3Rpb25zPlxuICAgICAgICAgICAgICA8U0NTU2lkZWJhckNvbnZlcnNhdGlvbnNIZWFkaW5nPnt0KCdjb252ZXJzYXRpb25zLnRpdGxlJyl9PC9TQ1NTaWRlYmFyQ29udmVyc2F0aW9uc0hlYWRpbmc+XG4gICAgICAgICAgICA8L1NDU1NpZGViYXJBZ2VudHNCbG9jaz5cbiAgICAgICAgICAgIDxTQ1NTaWRlYmFyQ2hhdHNTY3JvbGxcbiAgICAgICAgICAgICAgcmVmPXtjaGF0c0NvbnRhaW5lclJlZn1cbiAgICAgICAgICAgICAgJGhhc0NoYXRzPXtjaGF0cy5sZW5ndGggPiAwfVxuICAgICAgICAgICAgICAkb2Zmc2V0VmFyaWFudD17aGFzRXJyb3IgPyAnZXJyb3InIDogJ2RlZmF1bHQnfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7aGFzRXJyb3IgJiYgIWNoYXRzLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yU3RhdGVDb2x1bW4+XG4gICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yU3RhdGVUb3A+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvclN0YXRlIC8+XG4gICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvclN0YXRlVG9wPlxuICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lcj5cbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lckljb25XcmFwPlxuICAgICAgICAgICAgICAgICAgICAgIDxFcnJvckljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyRXJyb3JCYW5uZXJJY29uV3JhcD5cbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2U+e3QoJ2NvbnZlcnNhdGlvbnMuZXJyb3InKX08L1NDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2U+XG4gICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvckJhbm5lcj5cbiAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvclN0YXRlQ29sdW1uPlxuICAgICAgICAgICAgICApIDogbG9hZGluZ0NoYXRzID8gKFxuICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTG9hZGluZ0FyZWE+XG4gICAgICAgICAgICAgICAgICA8TG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyTG9hZGluZ0FyZWE+XG4gICAgICAgICAgICAgICkgOiBjaGF0cy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIHtjaGF0cy5tYXAoY2hhdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgPExpc3RIaXN0b3J5Q2hhdFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtjaGF0LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2hhdD17Y2hhdH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NoYXREYXRhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzT3Blbk1vZGFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZENoYXQoY2hhdERhdGEuc2Vzc2lvbkV4dGVybmFsSWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uR29Ub0NoYXQoY2hhdERhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgaXNNb2RhbE9wZW49e2lzT3Blbk1vZGFsID09PSBjaGF0LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25PcGVuTW9kYWw9e2hhbmRsZU9wZW5Nb2RhbH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xvc2VNb2RhbD17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZURlbGV0ZUNoYXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVVwZGF0ZUNoYXQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZD17c2VsZWN0ZWRDaGF0ID09PSBjaGF0LnNlc3Npb25FeHRlcm5hbElkfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAge2lzTG9hZGluZ01vcmVDaGF0cyAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTG9hZE1vcmVSb3c+XG4gICAgICAgICAgICAgICAgICAgICAgPExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJMb2FkTW9yZVJvdz5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFbXB0eUNoYXRzPlxuICAgICAgICAgICAgICAgICAgPEVtcHR5SGlzdG9yeUljb24gLz5cbiAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRW1wdHlDaGF0c1RleHQ+e3QoJ2NvbnZlcnNhdGlvbnMuZW1wdHknKX08L1NDU1NpZGViYXJFbXB0eUNoYXRzVGV4dD5cbiAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFbXB0eUNoYXRzPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9TQ1NTaWRlYmFyQ2hhdHNTY3JvbGw+XG4gICAgICAgICAgICA8U0NTU2lkZWJhckNoYXRzRm9vdGVyPlxuICAgICAgICAgICAgICB7aGFzRXJyb3IgJiYgY2hhdHMubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRXJyb3JCYW5uZXI+XG4gICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yQmFubmVySWNvbldyYXA+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvckljb24gLz5cbiAgICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckVycm9yQmFubmVySWNvbldyYXA+XG4gICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yQmFubmVyTWVzc2FnZT57dCgnY29udmVyc2F0aW9ucy5lcnJvcicpfTwvU0NTU2lkZWJhckVycm9yQmFubmVyTWVzc2FnZT5cbiAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvckJhbm5lcj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L1NDU1NpZGViYXJDaGF0c0Zvb3Rlcj5cbiAgICAgICAgICA8L1NDU1NpZGViYXJPcGVuUGFuZWw+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICA8U0NTU2lkZWJhckZvb3RlckFjdGlvbnMgJGlzT3Blbj17aXNPcGVufSAkanVzdGlmeUJldHdlZW49eyEhc2VsZWN0ZWRBZ2VudH0+XG4gICAgICAgICAge3NlbGVjdGVkQWdlbnQgPyA8RmVlZGJhY2tCdXR0b24gc2VsZWN0ZWRBZ2VudD17c2VsZWN0ZWRBZ2VudH0gaXNPcGVuPXtpc09wZW59IC8+IDogbnVsbH1cbiAgICAgICAgICA8T25ib2FyZGluZ01vZGFsQnV0dG9uIC8+XG4gICAgICAgIDwvU0NTU2lkZWJhckZvb3RlckFjdGlvbnM+XG4gICAgICA8L1NDU1NpZGViYXJCb2R5PlxuICAgIDwvU0NTU2lkZWJhclJvb3Q+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBMkJBLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNyRSxTQUFTQyxpQkFBaUIsUUFBUSxvREFBb0Q7QUFDdEYsU0FBU0MsUUFBUSxRQUFRLDRDQUE0QztBQUNyRSxTQUFTQyxRQUFRLFFBQVEsMkNBQTJDO0FBQ3BFLFNBQVNDLE1BQU0sUUFBUSx5Q0FBeUM7QUFDaEUsU0FBU0MsS0FBSyxRQUFRLHdDQUF3QztBQUU5RCxTQUFTQyxPQUFPLFFBQVEsOENBQThDO0FBRXRFLFNBQVNDLGdCQUFnQixRQUFRLGdDQUFnQztBQUNqRSxTQUFTQyxpQkFBaUIsUUFBUSwwQkFBMEI7QUFDNUQsU0FBU0MsUUFBUSxRQUFRLHlCQUF5QjtBQUNsRCxTQUFTQyxNQUFNLFFBQVEsb0JBQW9CO0FBQzNDLFNBQVNDLFVBQVUsRUFBRUMsUUFBUSxFQUFFQyxhQUFhLEVBQUVDLE9BQU8sUUFBUSxtQkFBbUI7QUFDaEYsU0FBU0MsTUFBTSxRQUFRLHlCQUF5QjtBQUNoRCxTQUFTQyxJQUFJLFFBQVEscUJBQXFCO0FBQzFDLFNBQVNDLFVBQVUsUUFBUSwrQkFBK0I7QUFDMUQsU0FBU0MsaUJBQWlCLFFBQVEsbUNBQW1DO0FBQ3JFLFNBQVNDLG1C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