@codecademy/brand 3.2.1-alpha.10ea26adc4.0 → 3.3.0-alpha.8d677d6ea7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -12,6 +12,7 @@ import { PopularContent, PopularSearches } from './DefaultResults';
12
12
  import { useUrlChangeDetection } from './hooks/useUrlChangeDetection';
13
13
  import { QuizAndHelpCenterLinks } from './QuizAndHelpCenterLinks';
14
14
  import { safelyRedirect } from './safelyRedirect';
15
+ import { useSearchTrackingContext } from './SearchTrackingProvider';
15
16
  import { searchWorker } from './SearchWorker';
16
17
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
17
18
  const Form = Box.withComponent('form', {
@@ -36,7 +37,7 @@ const QueryContainer = /*#__PURE__*/_styled(ContentContainer, {
36
37
  px: {
37
38
  _: 24
38
39
  }
39
- }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9DdUIiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVVybENoYW5nZURldGVjdGlvbiB9IGZyb20gJy4vaG9va3MvdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uJztcbmltcG9ydCB7IFF1aXpBbmRIZWxwQ2VudGVyTGlua3MgfSBmcm9tICcuL1F1aXpBbmRIZWxwQ2VudGVyTGlua3MnO1xuaW1wb3J0IHsgc2FmZWx5UmVkaXJlY3QgfSBmcm9tICcuL3NhZmVseVJlZGlyZWN0JztcbmltcG9ydCB7IHNlYXJjaFdvcmtlciB9IGZyb20gJy4vU2VhcmNoV29ya2VyJztcbmltcG9ydCB0eXBlIHtcbiAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbixcbiAgU2VhcmNoQXNZb3VUeXBlUmVzdWx0cyxcbn0gZnJvbSAnLi9TZWFyY2hXb3JrZXIvdHlwZXMnO1xuaW1wb3J0IHsgU2VhcmNoUGFuZVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IEZvcm0gPSBCb3gud2l0aENvbXBvbmVudCgnZm9ybScpO1xuY29uc3QgSW5wdXQgPSBCb3gud2l0aENvbXBvbmVudCgnaW5wdXQnKTtcblxuY29uc3QgUXVlcnlDb250YWluZXIgPSBzdHlsZWQoQ29udGVudENvbnRhaW5lcikoXG4gIGNzcyh7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgcHQ6IDE2LFxuICAgIHBiOiB7IF86IDAsIG1kOiAyNCB9LFxuICAgIHB4OiB7IF86IDI0IH0sXG4gIH0pXG4pO1xuXG5jb25zdCBTdWdnZXN0aW9uQ29udGFpbmVyID0gc3R5bGVkKENvbnRlbnRDb250YWluZXIpKFxuICBjc3Moe1xuICAgIHB0OiAxNixcbiAgICBwYjogeyBfOiAwLCBtZDogMjQgfSxcbiAgICBweDogeyBfOiAyNCB9LFxuICB9KVxuKTtcblxuY29uc3QgU3R5bGVkSW5wdXQgPSBzdHlsZWQoSW5wdXQpKFxuICBjc3Moe1xuICAgIG91dGxpbmU6IGBub25lYCxcbiAgICAnJjo6cGxhY2Vob2xkZXInOiB7XG4gICAgICB0ZXh0Q29sb3I6IHRoZW1lLmNvbG9yc1sndGV4dC1zZWNvbmRhcnknXSBhcyBuZXZlcixcbiAgICB9LFxuICB9KVxuKTtcblxuY29uc3QgSW5saW5lUmVzdWx0TGkgPSBzdHlsZWQoTWVudUl0ZW0pKFxuICBjc3Moe1xuICAgIHBsOiAwLFxuICAgIHB5OiA4LFxuICAgIGZvbnRTaXplOiAxNixcbiAgICAnJjpmb2N1cy12aXNpYmxlOmFmdGVyJzoge1xuICAgICAgbGVmdDogLTQsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IElubGluZUxvYWRlckxpID0gc3R5bGVkLmxpKFxuICBjc3Moe1xuICAgIGxpc3RTdHlsZVR5cGU6ICdub25lJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZ2FwOiAxMixcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgfSlcbik7XG5cbmV4cG9ydCBjb25zdCBTZW1pYm9sZFNlYXJjaEljb24gPSBzdHlsZWQoU2VhcmNoSWNvbilgXG4gIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gIGNpcmNsZSxcbiAgcGF0aCB7XG4gICAgc3Ryb2tlLXdpZHRoOiAycHg7XG4gIH1cbiAgcmVjdCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTJweCwgLTJweCk7XG4gICAgaGVpZ2h0OiBjYWxjKDEwMCUgKyA0cHgpO1xuICAgIHdpZHRoOiBjYWxjKDEwMCUgKyA0cHgpO1xuICB9XG5gO1xuXG5jb25zdCBFbGxpcHNpc0JveCA9IHN0eWxlZChCb3gpYFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbmA7XG5cbmNvbnN0IEhpZ2hsaWdodGVkVGV4dCA9ICh7XG4gIHN1Z2dlc3Rpb246IHsgdGl0bGUsIHNlZ21lbnRzIH0sXG59OiB7XG4gIHN1Z2dlc3Rpb246IEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb247XG59KSA9PiB7XG4gIGNvbnN0IG1vZGUgPSB1c2VDdXJyZW50TW9kZSgpO1xuICBjb25zdCBoaWdobGlnaHRDb2xvciA9IG1vZGUgPT09ICdkYXJrJyA/ICdoeXBlcicgOiAneWVsbG93JztcblxuICByZXR1cm4gKFxuICAgIDxGbGV4Qm94PlxuICAgICAgPEVsbGlwc2lzQm94XG4gICAgICAgIG1heFdpZHRoPVwiY2FsYygxMDB2dyAtIDEyOHB4KVwiXG4gICAgICAgIHdoaXRlU3BhY2U9XCJwcmVcIlxuICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICBvdmVyZmxvdz1cImhpZGRlblwiXG4gICAgICA+XG4gICAgICAgIHtzZWdtZW50cy5tYXAoKHNlZ21lbnQsIGkpID0+IChcbiAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAga2V5PXtgJHt0aXRsZX06JHtpLnRvU3RyaW5nKCl9YH1cbiAgICAgICAgICAgIGxpbmVIZWlnaHQ9XCJ0aXRsZVwiXG4gICAgICAgICAgICB7Li4uKHNlZ21lbnQuaGlnaGxpZ2h0XG4gICAgICAgICAgICAgID8geyBiZzogaGlnaGxpZ2h0Q29sb3IsIGZvbnRXZWlnaHQ6ICdib2xkJyB9XG4gICAgICAgICAgICAgIDoge30pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtzZWdtZW50LnZhbHVlfVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgKSl9XG4gICAgICA8L0VsbGlwc2lzQm94PlxuICAgICAgPFRleHQgc2NyZWVucmVhZGVyPnt0aXRsZX08L1RleHQ+XG4gICAgPC9GbGV4Qm94PlxuICApO1xufTtcblxudHlwZSBTZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSB7XG4gIHNoaW1tZXJSb3dzOiB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgc2hpbW1lcnM6IHtcbiAgICAgIGtleTogc3RyaW5nO1xuICAgICAgd2lkdGg6IG51bWJlcjtcbiAgICB9W107XG4gIH1bXTtcbn07XG5cbmxldCBsb2FkZXJLZXkgPSAwO1xuZnVuY3Rpb24gcm5kTG9hZGVyKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGx1c3BsdXNcbiAgY29uc3Qga2V5ID0gbG9hZGVyS2V5Kys7XG4gIGNvbnN0IGxvYWRlcjogU2VhcmNoQXNZb3VUeXBlTG9hZGVyID0geyBzaGltbWVyUm93czogW10gfTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCA1OyBpKyspIHtcbiAgICBjb25zdCByb3cgPSB7XG4gICAgICBrZXk6IGAke2tleX06JHtpfWAsXG4gICAgICBzaGltbWVyczogW10gYXMgeyBrZXk6IHN0cmluZzsgd2lkdGg6IG51bWJlciB9W10sXG4gICAgfTtcbiAgICBjb25zdCB3b3JkcyA9IE1hdGguY2VpbChNYXRoLnJhbmRvbSgpICogMyk7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCB3b3JkczsgaisrKSB7XG4gICAgICBjb25zdCB3aWR0aCA9IDEyICsgTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogOTYpO1xuICAgICAgcm93LnNoaW1tZXJzLnB1c2goe1xuICAgICAgICBrZXk6IGAke2tleX06JHtqfWAsXG4gICAgICAgIHdpZHRoLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGxvYWRlci5zaGltbWVyUm93cy5wdXNoKHJvdyk7XG4gIH1cbiAgcmV0dXJuIGxvYWRlcjtcbn1cblxuZXhwb3J0IGNvbnN0IFNlYXJjaFBhbmU6IFJlYWN0LkZDPFNlYXJjaFBhbmVQcm9wcz4gPSAoe1xuICBvblNlYXJjaCxcbiAgb25UcmFja2luZ0NsaWNrLFxuICBzZWFyY2hCdXR0b25SZWYsXG4gIHRvZ2dsZVNlYXJjaCxcbiAgb25TZWFyY2hBc1lvdVR5cGUsXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgnJyk7XG4gIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBbYXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMsIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zXSA9IHVzZVN0YXRlPFxuICAgIEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb25bXVxuICA+KFtdKTtcblxuICBjb25zdCBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0cywgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0c10gPVxuICAgIHVzZVN0YXRlPFNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCBjbG9zZVNlYXJjaCA9IGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCB0b2dnbGVTZWFyY2goKTtcbiAgICAvLyBhZGRzIGEgbGl0dGxlIGRlbGF5IGJldHdlZW4gY2xvc2luZyB0aGUgc2VhcmNoIHBhbmUgYW5kIGZvY3VzaW5nIG9uIHRoZSBidXR0b25cbiAgICAvLyB0byBwcmV2ZW50IHRoZSBzZWFyY2ggcGFuZSBmcm9tIGltbWVkaWF0ZWx5IG9wZW5pbmcgYWdhaW5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmIChzZWFyY2hCdXR0b25SZWYgJiYgc2VhcmNoQnV0dG9uUmVmPy5jdXJyZW50KSB7XG4gICAgICAgIHNlYXJjaEJ1dHRvblJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgICAgfVxuICAgIH0sIDEwKTtcbiAgfTtcblxuICBjb25zdCBvbktleURvd24gPSB1c2VPbkVzY0hhbmRsZXIoY2xvc2VTZWFyY2gpO1xuXG4gIGNvbnN0IG9uTW91c2VEb3duT3V0c2lkZSA9ICh7IHRhcmdldCB9OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgaGFuZGxlT3V0c2lkZUNsaWNrID0gKCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICAhZG9jdW1lbnRcbiAgICAgICAgICAucXVlcnlTZWxlY3RvcignW2RhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXScpXG4gICAgICAgICAgPy5jb250YWlucyh0YXJnZXQgYXMgSFRNTEVsZW1lbnQpICYmXG4gICAgICAgIHRhcmdldCAhPT0gc2VhcmNoQnV0dG9uUmVmPy5jdXJyZW50XG4gICAgICApIHtcbiAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgIH1cblxuICAgICAgdGFyZ2V0Py5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlT3V0c2lkZUNsaWNrKTtcbiAgICB9O1xuXG4gICAgdGFyZ2V0Py5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlT3V0c2lkZUNsaWNrKTtcbiAgfTtcblxuICBjb25zdCBuYXZpZ2F0ZVRvU2VhcmNoID0gKHNlYXJjaFRlcm06IHN0cmluZywgZnJvbVByZXZTZWFyY2g/OiBzdHJpbmcpID0+IHtcbiAgICBvblNlYXJjaChzZWFyY2hUZXJtLCBmcm9tUHJldlNlYXJjaCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlOiBSZWFjdC5DaGFuZ2VFdmVudEhhbmRsZXI8SFRNTElucHV0RWxlbWVudD4gPSAoZXZ0KSA9PiB7XG4gICAgc2V0VmFsdWUoZXZ0LnRhcmdldC52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlU3VibWl0OiBSZWFjdC5Gb3JtRXZlbnRIYW5kbGVyID0gKGV2ZW50KSA9PiB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gIH07XG5cbiAgY29uc3QgY2xlYXJJbnB1dCA9ICgpID0+IHtcbiAgICBzZXRWYWx1ZSgnJyk7XG4gICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiB0b2dnbGVTZWFyY2gsXG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaW5wdXRSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICBzZWFyY2hXb3JrZXIuaW5pdCgpO1xuICB9LCBbXSk7XG5cbiAgY29uc3QgdmFsdWVUcmltbWVkID0gdmFsdWUudHJpbSgpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF2YWx1ZVRyaW1tZWQubGVuZ3RoKSB7XG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBsZXQgY2xlYXJBdXRvY29tcGxldGUgPSB0cnVlO1xuICAgIGxldCBjbGVhclNlYXJjaEFzWW91VHlwZSA9IHRydWU7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8qXG4gICAgICAgKiBXYWl0IDEwIHNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICAvLyBvblNlYXJjaEFzWW91VHlwZSBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgdHJhY2tpbmdcbiAgICAgIGlmIChvblNlYXJjaEFzWW91VHlwZSkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAvKlxuICAgICAgICAgICAqIFRoaXMgdGltZW91dCBhbmQgY2FuY2VsIGNoZWNrIGlzIGEgZGVib3VuY2UgdGhhdCBlbnN1cmVzIHdlIGRvIG5vdFxuICAgICAgICAgICAqIHNlbmQgdHJhY2tpbmcgZXZlbnRzIGZvciBldmVyeSBrZXlzdHJva2UsIGJ1dCBvbmx5IHdoZW4gdGhlIHVzZXJcbiAgICAgICAgICAgKiBzdG9wcyB0eXBpbmcgZm9yIDI1MG1zLiBXZSBwcmV2aW91c2x5IHVzZWQgdGhpcyBkZWJvdW5jZSBmb3IgdGhlXG4gICAgICAgICAgICogc2VhcmNoLWFzLXlvdS10eXBlIHF1ZXJ5IGFzIGEgd2hvbGUsIGJ1dCB0aGlzIGlzIG5vdCBuZWNlc3NhcnlcbiAgICAgICAgICAgKiBmcm9tIGEgbG9hZCBzdGFuZHBvaW50IHNpbmNlIHdlIGhhdmUgY2FjaGluZyBpbXBsZW1lbnRlZCBvbiBib3RoXG4gICAgICAgICAgICogY2xpZW50IGFuZCBzZXJ2ZXIuIEFwcGx5aW5nIHRoZSBkZWJvdW5jZSBvbmx5IGZvciB0aGlzIGNhbGxiYWNrXG4gICAgICAgICAgICogYWxsb3dzIHVzIHRvIG1haW50YWluIHRoZSBtb3N0IHNuYXBweSB1c2VyIGV4cGVyaWVuY2UgYW5kIHN0aWxsXG4gICAgICAgICAgICogaGF2ZSBub24tbm9pc3kgdHJhY2tpbmcuXG4gICAgICAgICAgICovXG4gICAgICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuO1xuICAgICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9IHJlc3VsdHM7XG4gICAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgICB9LCAyNTApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNhbmNlbCA9IHRydWU7XG4gICAgfTtcbiAgfSwgW3ZhbHVlVHJpbW1lZCwgb25TZWFyY2hBc1lvdVR5cGVdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIGJnPVwic2hhZG93LXNlY29uZGFyeVwiXG4gICAgICAgIGhlaWdodD1cIjEwMHZoXCJcbiAgICAgICAgcG9zaXRpb249XCJmaXhlZFwiXG4gICAgICAgIC8vIFdlIGFkZCA1cmVtIGhlcmUgaW4gY2FzZSB0aGVyZSdzIHNvbWUgc29ydCBvZiBicmFuZGVkIGJhbm5lciBhYm92ZSBzZWFyY2hcbiAgICAgICAgLy8gVGhlIHNlYXJjaCBhcmVhIGlzIG11Y2ggdGFsbGVyIHRoYW4gNXJlbSBzbyB0aGlzIGlzIGEgc2FmZSBhbW91bnQgb2YgcGFkZGluZ1xuICAgICAgICB0b3A9e2BjYWxjKCR7dGhlbWUuZWxlbWVudHMuaGVhZGVySGVpZ2h0fSArIDVyZW0pYH1cbiAgICAgICAgd2lkdGg9ezF9XG4gICAgICAvPlxuICAgICAgPEZvY3VzVHJhcFxuICAgICAgICBvbkVzY2FwZUtleT17Y2xvc2VTZWFyY2h9XG4gICAgICAgIG9uQ2xpY2tPdXRzaWRlPXtvbk1vdXNlRG93bk91dHNpZGV9XG4gICAgICAgIGFsbG93UGFnZUludGVyYWN0aW9uXG4gICAgICA+XG4gICAgICAgIDxCb3hcbiAgICAgICAgICBiZz1cImJhY2tncm91bmRcIlxuICAgICAgICAgIGJvcmRlckNvbG9yQm90dG9tPVwiYm9yZGVyLXByaW1hcnlcIlxuICAgICAgICAgIGJvcmRlckNvbG9yVG9wPVwiYm9yZGVyLXRlcnRpYXJ5XCJcbiAgICAgICAgICBib3JkZXJTdHlsZT1cInNvbGlkXCJcbiAgICAgICAgICBib3JkZXJXaWR0aD1cIjJweCAwIDFweFwiXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJoZWFkZXItc2VhcmNoLWRyb3Bkb3duXCJcbiAgICAgICAgICBwb3NpdGlvbj17eyBfOiAnZml4ZWQnLCBtZDogJ2Fic29sdXRlJyB9fVxuICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgbWF4SGVpZ2h0PXt7IF86ICdjYWxjKDEwMHZoIC0gNjNweCknLCBtZDogJ2NhbGMoMTAwdmggLSA4MHB4KScgfX1cbiAgICAgICAgICBvdmVyZmxvdz1cImF1dG9cIlxuICAgICAgICAgIHpJbmRleD17MTB9IC8vIGVuc3VyZSBkcm9wZG93biBpcyBhYm92ZSB0aGUgcGFnZSBjb250ZW50XG4gICAgICAgID5cbiAgICAgICAgICA8Qm94IGJvcmRlcj1cIm5vbmVcIiB3aWR0aD1cImF1dG9cIj5cbiAgICAgICAgICAgIDxRdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiYmFzZWxpbmVcIlxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiZ3JheS02MDBcIlxuICAgICAgICAgICAgICAgIGJvcmRlclN0eWxlQm90dG9tPVwic29saWRcIlxuICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoQm90dG9tPVwiMXB4XCJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgIGhlaWdodD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgICB3aWR0aD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8Rm9ybVxuICAgICAgICAgICAgICAgICAgYWN0aW9uPVwiL3NlYXJjaFwiXG4gICAgICAgICAgICAgICAgICBpZD1cInNlYXJjaC1mb3JtXCJcbiAgICAgICAgICAgICAgICAgIG1sPXs4fVxuICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0eWxlZElucHV0XG4gICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcj1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAyMCwgbWQ6IDI2IH19XG4gICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ9XCJib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJoZWFkZXItc2VhcmNoLWJhclwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJxdWVyeVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGUpID0+IG9uS2V5RG93bihlKX1cbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3NlYXJjaFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICAgICAgICByZWY9e2lucHV0UmVmfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L0Zvcm0+XG4gICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgIGljb249e01pbmlEZWxldGVJY29ufVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyIHNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICB0aXA9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwUHJvcHM9e3tcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50OiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogJ2Zsb2F0aW5nJyxcbiAgICAgICAgICAgICAgICAgICAgbmFycm93OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDIsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17Y2xlYXJJbnB1dH1cbiAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgPC9RdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8U3VnZ2VzdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgIHt2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8RmxleEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCIgYXM9XCJ1bFwiIGxpc3RTdHlsZT1cIm5vbmVcIiBwPXswfT5cbiAgICAgICAgICAgICAgICAgIHthdXRvQ29tcGxldGVTdWdnZXN0aW9ucy5tYXAoKHMpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtzLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoeyB2YWx1ZTogcy50aXRsZSB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7IHZhbHVlOiBzLnRpdGxlIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW1pYm9sZFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1iPXsyIGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPXsxNH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXs4fVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1yPXsxMn1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICB7KHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0IGFzPVwiaDJcIiBmb250U2l6ZT17MjB9IG1iPXsxNn0gbXQ9ezI0fT5cbiAgICAgICAgICAgICAgICAgICAgICBUb3AgcmVzdWx0c1xuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbj1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJ1bFwiXG4gICAgICAgICAgICAgICAgICAgICAgbGlzdFN0eWxlPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcD17MH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNlYXJjaEFzWW91VHlwZUxvYWRlcj8uc2hpbW1lclJvd3MubWFwKChyKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZUxvYWRlckxpIGtleT17ci5rZXl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Iuc2hpbW1lcnMubWFwKCh3b3JkKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTaGltbWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXszMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweT17OCBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17d29yZC5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9e3dvcmQud2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseT1cImFjY2VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDb2xvcj1cInRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMTAgYXMgMTYgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I9XCJib3JkZXItc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyPXsxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM9XCJ4bFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB4PXsxNn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eT17MC4xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lTG9hZGVyTGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLm1hcCgocywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5xdWVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwibGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3NlYXJjaF9hc195b3VfdHlwZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnOiBzLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4ocy5jb250ZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlbHlSZWRpcmVjdChzLnVybFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3NlYXJjaF9hc195b3VfdHlwZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHMuc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4ocy5jb250ZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZSBzaXplPVwic21cIiB2YXJpYW50PVwidGVydGlhcnlcIiBtbD17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cy50eXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8Qm94IGZvbnRTaXplPXt7IF86IDIwLCBzbTogMjYgfX0gbXQ9ezB9IG1iPXs0OH0+XG4gICAgICAgICAgICAgICAgICAgICAge2BXZSBjb3VsZG4ndCBmaW5kIGEgbWF0Y2ggZm9yIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPFRleHQgZm9udFdlaWdodD1cImJvbGRcIj57YFwiJHt2YWx1ZVRyaW1tZWR9LlwiYH08L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgJyBUcnkgYW5vdGhlciBrZXl3b3JkLCBvciBzZWUgd2hhdCBvdXIgbWVtYmVycyBhcmUgbGVhcm5pbmcuJ1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICA8UG9wdWxhclNlYXJjaGVzXG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoPXtuYXZpZ2F0ZVRvU2VhcmNofVxuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHshIXNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICA8U3Ryb2tlQnV0dG9uXG4gICAgICAgICAgICAgICAgbXk9ezE2fVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygndmlld19hbGxfcmVzdWx0cycsIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBWaWV3IGFsbCByZXN1bHRzXG4gICAgICAgICAgICAgIDwvU3Ryb2tlQnV0dG9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxRdWl6QW5kSGVscENlbnRlckxpbmtzXG4gICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICBoYW5kbGVDbG9zZURyb3Bkb3duPXtjbG9zZVNlYXJjaH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TdWdnZXN0aW9uQ29udGFpbmVyPlxuICAgICAgICA8L0JveD5cbiAgICAgIDwvRm9jdXNUcmFwPlxuICAgIDwvPlxuICApO1xufTtcbiJdfQ== */");
40
+ }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFDdUIiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVVybENoYW5nZURldGVjdGlvbiB9IGZyb20gJy4vaG9va3MvdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uJztcbmltcG9ydCB7IFF1aXpBbmRIZWxwQ2VudGVyTGlua3MgfSBmcm9tICcuL1F1aXpBbmRIZWxwQ2VudGVyTGlua3MnO1xuaW1wb3J0IHsgc2FmZWx5UmVkaXJlY3QgfSBmcm9tICcuL3NhZmVseVJlZGlyZWN0JztcbmltcG9ydCB7IHVzZVNlYXJjaFRyYWNraW5nQ29udGV4dCB9IGZyb20gJy4vU2VhcmNoVHJhY2tpbmdQcm92aWRlcic7XG5pbXBvcnQgeyBzZWFyY2hXb3JrZXIgfSBmcm9tICcuL1NlYXJjaFdvcmtlcic7XG5pbXBvcnQgdHlwZSB7XG4gIEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb24sXG4gIFNlYXJjaEFzWW91VHlwZVJlc3VsdHMsXG59IGZyb20gJy4vU2VhcmNoV29ya2VyL3R5cGVzJztcbmltcG9ydCB7IFNlYXJjaFBhbmVQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBGb3JtID0gQm94LndpdGhDb21wb25lbnQoJ2Zvcm0nKTtcbmNvbnN0IElucHV0ID0gQm94LndpdGhDb21wb25lbnQoJ2lucHV0Jyk7XG5cbmNvbnN0IFF1ZXJ5Q29udGFpbmVyID0gc3R5bGVkKENvbnRlbnRDb250YWluZXIpKFxuICBjc3Moe1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIHB0OiAxNixcbiAgICBwYjogeyBfOiAwLCBtZDogMjQgfSxcbiAgICBweDogeyBfOiAyNCB9LFxuICB9KVxuKTtcblxuY29uc3QgU3VnZ2VzdGlvbkNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKShcbiAgY3NzKHtcbiAgICBwdDogMTYsXG4gICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgcHg6IHsgXzogMjQgfSxcbiAgfSlcbik7XG5cbmNvbnN0IFN0eWxlZElucHV0ID0gc3R5bGVkKElucHV0KShcbiAgY3NzKHtcbiAgICBvdXRsaW5lOiBgbm9uZWAsXG4gICAgJyY6OnBsYWNlaG9sZGVyJzoge1xuICAgICAgdGV4dENvbG9yOiB0aGVtZS5jb2xvcnNbJ3RleHQtc2Vjb25kYXJ5J10gYXMgbmV2ZXIsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IElubGluZVJlc3VsdExpID0gc3R5bGVkKE1lbnVJdGVtKShcbiAgY3NzKHtcbiAgICBwbDogMCxcbiAgICBweTogOCxcbiAgICBmb250U2l6ZTogMTYsXG4gICAgJyY6Zm9jdXMtdmlzaWJsZTphZnRlcic6IHtcbiAgICAgIGxlZnQ6IC00LFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVMb2FkZXJMaSA9IHN0eWxlZC5saShcbiAgY3NzKHtcbiAgICBsaXN0U3R5bGVUeXBlOiAnbm9uZScsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGdhcDogMTIsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIH0pXG4pO1xuXG5leHBvcnQgY29uc3QgU2VtaWJvbGRTZWFyY2hJY29uID0gc3R5bGVkKFNlYXJjaEljb24pYFxuICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICBjaXJjbGUsXG4gIHBhdGgge1xuICAgIHN0cm9rZS13aWR0aDogMnB4O1xuICB9XG4gIHJlY3Qge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0ycHgsIC0ycHgpO1xuICAgIGhlaWdodDogY2FsYygxMDAlICsgNHB4KTtcbiAgICB3aWR0aDogY2FsYygxMDAlICsgNHB4KTtcbiAgfVxuYDtcblxuY29uc3QgRWxsaXBzaXNCb3ggPSBzdHlsZWQoQm94KWBcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5gO1xuXG5jb25zdCBIaWdobGlnaHRlZFRleHQgPSAoe1xuICBzdWdnZXN0aW9uOiB7IHRpdGxlLCBzZWdtZW50cyB9LFxufToge1xuICBzdWdnZXN0aW9uOiBBdXRvY29tcGxldGVTdWdnZXN0aW9uO1xufSkgPT4ge1xuICBjb25zdCBtb2RlID0gdXNlQ3VycmVudE1vZGUoKTtcbiAgY29uc3QgaGlnaGxpZ2h0Q29sb3IgPSBtb2RlID09PSAnZGFyaycgPyAnaHlwZXInIDogJ3llbGxvdyc7XG5cbiAgcmV0dXJuIChcbiAgICA8RmxleEJveD5cbiAgICAgIDxFbGxpcHNpc0JveFxuICAgICAgICBtYXhXaWR0aD1cImNhbGMoMTAwdncgLSAxMjhweClcIlxuICAgICAgICB3aGl0ZVNwYWNlPVwicHJlXCJcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgb3ZlcmZsb3c9XCJoaWRkZW5cIlxuICAgICAgPlxuICAgICAgICB7c2VnbWVudHMubWFwKChzZWdtZW50LCBpKSA9PiAoXG4gICAgICAgICAgPFRleHRcbiAgICAgICAgICAgIGtleT17YCR7dGl0bGV9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICBsaW5lSGVpZ2h0PVwidGl0bGVcIlxuICAgICAgICAgICAgey4uLihzZWdtZW50LmhpZ2hsaWdodFxuICAgICAgICAgICAgICA/IHsgYmc6IGhpZ2hsaWdodENvbG9yLCBmb250V2VpZ2h0OiAnYm9sZCcgfVxuICAgICAgICAgICAgICA6IHt9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2VnbWVudC52YWx1ZX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICkpfVxuICAgICAgPC9FbGxpcHNpc0JveD5cbiAgICAgIDxUZXh0IHNjcmVlbnJlYWRlcj57dGl0bGV9PC9UZXh0PlxuICAgIDwvRmxleEJveD5cbiAgKTtcbn07XG5cbnR5cGUgU2VhcmNoQXNZb3VUeXBlTG9hZGVyID0ge1xuICBzaGltbWVyUm93czoge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHNoaW1tZXJzOiB7XG4gICAgICBrZXk6IHN0cmluZztcbiAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgfVtdO1xuICB9W107XG59O1xuXG5sZXQgbG9hZGVyS2V5ID0gMDtcbmZ1bmN0aW9uIHJuZExvYWRlcigpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBsdXNwbHVzXG4gIGNvbnN0IGtleSA9IGxvYWRlcktleSsrO1xuICBjb25zdCBsb2FkZXI6IFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHsgc2hpbW1lclJvd3M6IFtdIH07XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7XG4gICAgY29uc3Qgcm93ID0ge1xuICAgICAga2V5OiBgJHtrZXl9OiR7aX1gLFxuICAgICAgc2hpbW1lcnM6IFtdIGFzIHsga2V5OiBzdHJpbmc7IHdpZHRoOiBudW1iZXIgfVtdLFxuICAgIH07XG4gICAgY29uc3Qgd29yZHMgPSBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDMpO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgd29yZHM7IGorKykge1xuICAgICAgY29uc3Qgd2lkdGggPSAxMiArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDk2KTtcbiAgICAgIHJvdy5zaGltbWVycy5wdXNoKHtcbiAgICAgICAga2V5OiBgJHtrZXl9OiR7an1gLFxuICAgICAgICB3aWR0aCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsb2FkZXIuc2hpbW1lclJvd3MucHVzaChyb3cpO1xuICB9XG4gIHJldHVybiBsb2FkZXI7XG59XG5cbmV4cG9ydCBjb25zdCBTZWFyY2hQYW5lOiBSZWFjdC5GQzxTZWFyY2hQYW5lUHJvcHM+ID0gKHtcbiAgb25TZWFyY2gsXG4gIG9uVHJhY2tpbmdDbGljayxcbiAgc2VhcmNoQnV0dG9uUmVmLFxuICB0b2dnbGVTZWFyY2gsXG4gIG9uU2VhcmNoQXNZb3VUeXBlLFxufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpO1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgY29uc3QgW2F1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zLCBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9uc10gPSB1c2VTdGF0ZTxcbiAgICBBdXRvY29tcGxldGVTdWdnZXN0aW9uW11cbiAgPihbXSk7XG4gIGNvbnN0IFtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLCBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzXSA9XG4gICAgdXNlU3RhdGU8U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IFtzZWFyY2hSZXN1bHRDbGlja2VkLCBzZXRTZWFyY2hSZXN1bHRDbGlja2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG5cbiAgY29uc3QgaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrID1cbiAgICBvblNlYXJjaEFzWW91VHlwZSAmJiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzICYmICFzZWFyY2hSZXN1bHRDbGlja2VkO1xuXG4gIGNvbnN0IGNsb3NlU2VhcmNoID0gYXN5bmMgKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHVzZXIgbWFkZSBhIHNlYXJjaCBhbmQgdGhlbiBjbG9zZWQgc2VhcmNoIHBhbmVcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRvZ2dsZVNlYXJjaCgpO1xuICAgIC8vIGFkZHMgYSBsaXR0bGUgZGVsYXkgYmV0d2VlbiBjbG9zaW5nIHRoZSBzZWFyY2ggcGFuZSBhbmQgZm9jdXNpbmcgb24gdGhlIGJ1dHRvblxuICAgIC8vIHRvIHByZXZlbnQgdGhlIHNlYXJjaCBwYW5lIGZyb20gaW1tZWRpYXRlbHkgb3BlbmluZyBhZ2FpblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHNlYXJjaEJ1dHRvblJlZiAmJiBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgc2VhcmNoQnV0dG9uUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZU9uRXNjSGFuZGxlcihjbG9zZVNlYXJjaCk7XG5cbiAgY29uc3Qgb25Nb3VzZURvd25PdXRzaWRlID0gKHsgdGFyZ2V0IH06IE1vdXNlRXZlbnQpID0+IHtcbiAgICBjb25zdCBoYW5kbGVPdXRzaWRlQ2xpY2sgPSAoKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgICFkb2N1bWVudFxuICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKCdbZGF0YS10ZXN0aWQ9XCJoZWFkZXItc2VhcmNoLWRyb3Bkb3duXCJdJylcbiAgICAgICAgICA/LmNvbnRhaW5zKHRhcmdldCBhcyBIVE1MRWxlbWVudCkgJiZcbiAgICAgICAgdGFyZ2V0ICE9PSBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnRcbiAgICAgICkge1xuICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgfVxuXG4gICAgICB0YXJnZXQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVPdXRzaWRlQ2xpY2spO1xuICAgIH07XG5cbiAgICB0YXJnZXQ/LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVPdXRzaWRlQ2xpY2spO1xuICB9O1xuXG4gIGNvbnN0IG5hdmlnYXRlVG9TZWFyY2ggPSAoc2VhcmNoVGVybTogc3RyaW5nLCBmcm9tUHJldlNlYXJjaD86IHN0cmluZykgPT4ge1xuICAgIG9uU2VhcmNoKHNlYXJjaFRlcm0sIGZyb21QcmV2U2VhcmNoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2U6IFJlYWN0LkNoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICBzZXRWYWx1ZShldnQudGFyZ2V0LnZhbHVlKTtcbiAgICAvLyByZXNldCB0byBmYWxzZSB3aGVuIHRoZSBzZWFyY2ggcXVlcnkgY2hhbmdlc1xuICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQoZmFsc2UpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdDogUmVhY3QuRm9ybUV2ZW50SGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB0aGUgdXNlciBzdWJtaXRzIHRoZSBmb3JtIHRvIGNhcHR1cmUgY29tcGxldGUgcXVlcnlcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgfTtcblxuICBjb25zdCBjbGVhcklucHV0ID0gKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCBiZWZvcmUgdXNlciBjbGVhcnMgaW5wdXRcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIHNldFZhbHVlKCcnKTtcbiAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgLy8gcmVzZXQgdGhlIGNvbnRleHQgd2l0aCBlbXB0eSB2YWx1ZXNcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICBxdWVyeTogJycsXG4gICAgICBzZWFyY2hJZDogJycsXG4gICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICAvLyBhbmQgdHJhY2sgc2VhcmNoIGV2ZW50IGlmIHVzZXIgbWFkZSBhIHNlYXJjaFxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiAoKSA9PiB7XG4gICAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgfVxuXG4gICAgICB0b2dnbGVTZWFyY2goKTtcbiAgICB9LFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIGRvbid0IHRyYWNrIGlmIGEgcmVzdWx0IHdhcyBjbGlja2VkIG9yIGlmIHdlIGRvbid0IGhhdmUgc2VhcmNoIHJlc3VsdHNcbiAgICBpZiAoXG4gICAgICBzZWFyY2hSZXN1bHRDbGlja2VkIHx8XG4gICAgICAhb25TZWFyY2hBc1lvdVR5cGUgfHxcbiAgICAgICFzZWFyY2hBc1lvdVR5cGVSZXN1bHRzIHx8XG4gICAgICAhdmFsdWVUcmltbWVkLmxlbmd0aFxuICAgIClcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLXJldHVyblxuICAgICAgcmV0dXJuO1xuICB9LCBbXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxuICAgIHZhbHVlVHJpbW1lZCxcbiAgICBvblNlYXJjaEFzWW91VHlwZSxcbiAgXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpbnB1dFJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgIHNlYXJjaFdvcmtlci5pbml0KCk7XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghdmFsdWVUcmltbWVkLmxlbmd0aCkge1xuICAgICAgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhudWxsKTtcbiAgICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgICAgcXVlcnk6ICcnLFxuICAgICAgICBzZWFyY2hJZDogJycsXG4gICAgICAgIHJlc3VsdHNDb3VudDogMCxcbiAgICAgICAgcXVlcnlMb2FkVGltZTogMCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBsZXQgY2xlYXJBdXRvY29tcGxldGUgPSB0cnVlO1xuICAgIGxldCBjbGVhclNlYXJjaEFzWW91VHlwZSA9IHRydWU7XG5cbiAgICBsZXQgc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5OiBOb2RlSlMuVGltZW91dDtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2l0aCBhIHNtYWxsIGRlbGF5IHdoZW4gdGhlcmUgYXJlIG5vIHJlc3VsdHNcbiAgICAgIGlmIChcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUgJiZcbiAgICAgICAgcmVzdWx0cy50b3AubGVuZ3RoID09PSAwICYmXG4gICAgICAgICFzZWFyY2hSZXN1bHRDbGlja2VkXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHF1ZXJ5TG9hZFRpbWUgfSA9IHJlc3VsdHM7XG4gICAgICAgIHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICghY2FuY2VsKSB7XG4gICAgICAgICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIDAsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICAgIGNsZWFyVGltZW91dChzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXkpO1xuICAgIH07XG4gIH0sIFtcbiAgICB2YWx1ZVRyaW1tZWQsXG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyxcbiAgXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICBiZz1cInNoYWRvdy1zZWNvbmRhcnlcIlxuICAgICAgICBoZWlnaHQ9XCIxMDB2aFwiXG4gICAgICAgIHBvc2l0aW9uPVwiZml4ZWRcIlxuICAgICAgICAvLyBXZSBhZGQgNXJlbSBoZXJlIGluIGNhc2UgdGhlcmUncyBzb21lIHNvcnQgb2YgYnJhbmRlZCBiYW5uZXIgYWJvdmUgc2VhcmNoXG4gICAgICAgIC8vIFRoZSBzZWFyY2ggYXJlYSBpcyBtdWNoIHRhbGxlciB0aGFuIDVyZW0gc28gdGhpcyBpcyBhIHNhZmUgYW1vdW50IG9mIHBhZGRpbmdcbiAgICAgICAgdG9wPXtgY2FsYygke3RoZW1lLmVsZW1lbnRzLmhlYWRlckhlaWdodH0gKyA1cmVtKWB9XG4gICAgICAgIHdpZHRoPXsxfVxuICAgICAgLz5cbiAgICAgIDxGb2N1c1RyYXBcbiAgICAgICAgb25Fc2NhcGVLZXk9e2Nsb3NlU2VhcmNofVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249XCJhYnNvbHV0ZVwiXG4gICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICBtYXhIZWlnaHQ9e3sgXzogJ2NhbGMoMTAwdmggLSA2M3B4KScsIG1kOiAnY2FsYygxMDB2aCAtIDgwcHgpJyB9fVxuICAgICAgICAgIG92ZXJmbG93PVwiYXV0b1wiXG4gICAgICAgID5cbiAgICAgICAgICA8Qm94IGJvcmRlcj1cIm5vbmVcIiB3aWR0aD1cImF1dG9cIj5cbiAgICAgICAgICAgIDxRdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiYmFzZWxpbmVcIlxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiZ3JheS02MDBcIlxuICAgICAgICAgICAgICAgIGJvcmRlclN0eWxlQm90dG9tPVwic29saWRcIlxuICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoQm90dG9tPVwiMXB4XCJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgIGhlaWdodD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgICB3aWR0aD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8Rm9ybVxuICAgICAgICAgICAgICAgICAgYWN0aW9uPVwiL3NlYXJjaFwiXG4gICAgICAgICAgICAgICAgICBpZD1cInNlYXJjaC1mb3JtXCJcbiAgICAgICAgICAgICAgICAgIG1sPXs4fVxuICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0eWxlZElucHV0XG4gICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcj1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAyMCwgbWQ6IDI2IH19XG4gICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ9XCJib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJoZWFkZXItc2VhcmNoLWJhclwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJxdWVyeVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGUpID0+IG9uS2V5RG93bihlKX1cbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3NlYXJjaFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICAgICAgICByZWY9e2lucHV0UmVmfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L0Zvcm0+XG4gICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgIGljb249e01pbmlEZWxldGVJY29ufVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyIHNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICB0aXA9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwUHJvcHM9e3tcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50OiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogJ2Zsb2F0aW5nJyxcbiAgICAgICAgICAgICAgICAgICAgbmFycm93OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDIsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17Y2xlYXJJbnB1dH1cbiAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgPC9RdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8U3VnZ2VzdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgIHt2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8RmxleEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCIgYXM9XCJ1bFwiIGxpc3RTdHlsZT1cIm5vbmVcIiBwPXswfT5cbiAgICAgICAgICAgICAgICAgIHthdXRvQ29tcGxldGVTdWdnZXN0aW9ucy5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtzLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ2F1dG9jb21wbGV0ZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbWlib2xkU2VhcmNoSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgbWI9ezIgYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9ezE0fVxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9ezh9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICAgICAgICAgICAgICAgICAgbXI9ezEyfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPEhpZ2hsaWdodGVkVGV4dCBzdWdnZXN0aW9uPXtzfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgIHsoc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy50b3AubGVuZ3RoID4gMCkgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPFRleHQgYXM9XCJoMlwiIGZvbnRTaXplPXsyMH0gbWI9ezE2fSBtdD17MjR9PlxuICAgICAgICAgICAgICAgICAgICAgIFRvcCByZXN1bHRzXG4gICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgICBhcz1cInVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBsaXN0U3R5bGU9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICBwPXswfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc2VhcmNoQXNZb3VUeXBlTG9hZGVyPy5zaGltbWVyUm93cy5tYXAoKHIpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lTG9hZGVyTGkga2V5PXtyLmtleX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ci5zaGltbWVycy5tYXAoKHdvcmQpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNoaW1tZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezMwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5PXs4IGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXt3b3JkLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17d29yZC53aWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RmFtaWx5PVwiYWNjZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yPVwidGV4dC1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAxMCBhcyAxNiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImJvcmRlci1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI9ezF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1cz1cInhsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHg9ezE2fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5PXswLjF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVMb2FkZXJMaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy50b3AubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnF1ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJsaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZWx5UmVkaXJlY3Qocy51cmxQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnOiBzLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgY29udGVudF9pZDogcy5jb250ZW50SWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlbHlSZWRpcmVjdChzLnVybFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmFkZ2Ugc2l6ZT1cInNtXCIgdmFyaWFudD1cInRlcnRpYXJ5XCIgbWw9ezEyfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3MudHlwZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmFkZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge3NlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggPT09IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPEJveCBmb250U2l6ZT17eyBfOiAyMCwgc206IDI2IH19IG10PXswfSBtYj17NDh9PlxuICAgICAgICAgICAgICAgICAgICAgIHtgV2UgY291bGRuJ3QgZmluZCBhIG1hdGNoIGZvciBgfVxuICAgICAgICAgICAgICAgICAgICAgIDxUZXh0IGZvbnRXZWlnaHQ9XCJib2xkXCI+e2BcIiR7dmFsdWVUcmltbWVkfS5cImB9PC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICcgVHJ5IGFub3RoZXIga2V5d29yZCwgb3Igc2VlIHdoYXQgb3VyIG1lbWJlcnMgYXJlIGxlYXJuaW5nLidcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPE1lbnUgYm9yZGVyPVwibm9uZVwiIHZhcmlhbnQ9XCJwb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgPFBvcHVsYXJTZWFyY2hlc1xuICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaD17bmF2aWdhdGVUb1NlYXJjaH1cbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPFBvcHVsYXJDb250ZW50IG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfSAvPlxuICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7ISFzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy50b3AubGVuZ3RoICYmIChcbiAgICAgICAgICAgICAgPFN0cm9rZUJ1dHRvblxuICAgICAgICAgICAgICAgIG15PXsxNn1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3ZpZXdfYWxsX3Jlc3VsdHMnLCB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaCh2YWx1ZSwgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQpO1xuICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgVmlldyBhbGwgcmVzdWx0c1xuICAgICAgICAgICAgICA8L1N0cm9rZUJ1dHRvbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8UXVpekFuZEhlbHBDZW50ZXJMaW5rc1xuICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja31cbiAgICAgICAgICAgICAgaGFuZGxlQ2xvc2VEcm9wZG93bj17Y2xvc2VTZWFyY2h9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3VnZ2VzdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgPC9Cb3g+XG4gICAgICA8L0ZvY3VzVHJhcD5cbiAgICA8Lz5cbiAgKTtcbn07XG4iXX0= */");
40
41
  const SuggestionContainer = /*#__PURE__*/_styled(ContentContainer, {
41
42
  target: "e1e5b20r5",
42
43
  label: "SuggestionContainer"
@@ -49,7 +50,7 @@ const SuggestionContainer = /*#__PURE__*/_styled(ContentContainer, {
49
50
  px: {
50
51
  _: 24
51
52
  }
52
- }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQThDNEIiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVVybENoYW5nZURldGVjdGlvbiB9IGZyb20gJy4vaG9va3MvdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uJztcbmltcG9ydCB7IFF1aXpBbmRIZWxwQ2VudGVyTGlua3MgfSBmcm9tICcuL1F1aXpBbmRIZWxwQ2VudGVyTGlua3MnO1xuaW1wb3J0IHsgc2FmZWx5UmVkaXJlY3QgfSBmcm9tICcuL3NhZmVseVJlZGlyZWN0JztcbmltcG9ydCB7IHNlYXJjaFdvcmtlciB9IGZyb20gJy4vU2VhcmNoV29ya2VyJztcbmltcG9ydCB0eXBlIHtcbiAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbixcbiAgU2VhcmNoQXNZb3VUeXBlUmVzdWx0cyxcbn0gZnJvbSAnLi9TZWFyY2hXb3JrZXIvdHlwZXMnO1xuaW1wb3J0IHsgU2VhcmNoUGFuZVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IEZvcm0gPSBCb3gud2l0aENvbXBvbmVudCgnZm9ybScpO1xuY29uc3QgSW5wdXQgPSBCb3gud2l0aENvbXBvbmVudCgnaW5wdXQnKTtcblxuY29uc3QgUXVlcnlDb250YWluZXIgPSBzdHlsZWQoQ29udGVudENvbnRhaW5lcikoXG4gIGNzcyh7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgcHQ6IDE2LFxuICAgIHBiOiB7IF86IDAsIG1kOiAyNCB9LFxuICAgIHB4OiB7IF86IDI0IH0sXG4gIH0pXG4pO1xuXG5jb25zdCBTdWdnZXN0aW9uQ29udGFpbmVyID0gc3R5bGVkKENvbnRlbnRDb250YWluZXIpKFxuICBjc3Moe1xuICAgIHB0OiAxNixcbiAgICBwYjogeyBfOiAwLCBtZDogMjQgfSxcbiAgICBweDogeyBfOiAyNCB9LFxuICB9KVxuKTtcblxuY29uc3QgU3R5bGVkSW5wdXQgPSBzdHlsZWQoSW5wdXQpKFxuICBjc3Moe1xuICAgIG91dGxpbmU6IGBub25lYCxcbiAgICAnJjo6cGxhY2Vob2xkZXInOiB7XG4gICAgICB0ZXh0Q29sb3I6IHRoZW1lLmNvbG9yc1sndGV4dC1zZWNvbmRhcnknXSBhcyBuZXZlcixcbiAgICB9LFxuICB9KVxuKTtcblxuY29uc3QgSW5saW5lUmVzdWx0TGkgPSBzdHlsZWQoTWVudUl0ZW0pKFxuICBjc3Moe1xuICAgIHBsOiAwLFxuICAgIHB5OiA4LFxuICAgIGZvbnRTaXplOiAxNixcbiAgICAnJjpmb2N1cy12aXNpYmxlOmFmdGVyJzoge1xuICAgICAgbGVmdDogLTQsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IElubGluZUxvYWRlckxpID0gc3R5bGVkLmxpKFxuICBjc3Moe1xuICAgIGxpc3RTdHlsZVR5cGU6ICdub25lJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZ2FwOiAxMixcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgfSlcbik7XG5cbmV4cG9ydCBjb25zdCBTZW1pYm9sZFNlYXJjaEljb24gPSBzdHlsZWQoU2VhcmNoSWNvbilgXG4gIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gIGNpcmNsZSxcbiAgcGF0aCB7XG4gICAgc3Ryb2tlLXdpZHRoOiAycHg7XG4gIH1cbiAgcmVjdCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTJweCwgLTJweCk7XG4gICAgaGVpZ2h0OiBjYWxjKDEwMCUgKyA0cHgpO1xuICAgIHdpZHRoOiBjYWxjKDEwMCUgKyA0cHgpO1xuICB9XG5gO1xuXG5jb25zdCBFbGxpcHNpc0JveCA9IHN0eWxlZChCb3gpYFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbmA7XG5cbmNvbnN0IEhpZ2hsaWdodGVkVGV4dCA9ICh7XG4gIHN1Z2dlc3Rpb246IHsgdGl0bGUsIHNlZ21lbnRzIH0sXG59OiB7XG4gIHN1Z2dlc3Rpb246IEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb247XG59KSA9PiB7XG4gIGNvbnN0IG1vZGUgPSB1c2VDdXJyZW50TW9kZSgpO1xuICBjb25zdCBoaWdobGlnaHRDb2xvciA9IG1vZGUgPT09ICdkYXJrJyA/ICdoeXBlcicgOiAneWVsbG93JztcblxuICByZXR1cm4gKFxuICAgIDxGbGV4Qm94PlxuICAgICAgPEVsbGlwc2lzQm94XG4gICAgICAgIG1heFdpZHRoPVwiY2FsYygxMDB2dyAtIDEyOHB4KVwiXG4gICAgICAgIHdoaXRlU3BhY2U9XCJwcmVcIlxuICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICBvdmVyZmxvdz1cImhpZGRlblwiXG4gICAgICA+XG4gICAgICAgIHtzZWdtZW50cy5tYXAoKHNlZ21lbnQsIGkpID0+IChcbiAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAga2V5PXtgJHt0aXRsZX06JHtpLnRvU3RyaW5nKCl9YH1cbiAgICAgICAgICAgIGxpbmVIZWlnaHQ9XCJ0aXRsZVwiXG4gICAgICAgICAgICB7Li4uKHNlZ21lbnQuaGlnaGxpZ2h0XG4gICAgICAgICAgICAgID8geyBiZzogaGlnaGxpZ2h0Q29sb3IsIGZvbnRXZWlnaHQ6ICdib2xkJyB9XG4gICAgICAgICAgICAgIDoge30pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtzZWdtZW50LnZhbHVlfVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgKSl9XG4gICAgICA8L0VsbGlwc2lzQm94PlxuICAgICAgPFRleHQgc2NyZWVucmVhZGVyPnt0aXRsZX08L1RleHQ+XG4gICAgPC9GbGV4Qm94PlxuICApO1xufTtcblxudHlwZSBTZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSB7XG4gIHNoaW1tZXJSb3dzOiB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgc2hpbW1lcnM6IHtcbiAgICAgIGtleTogc3RyaW5nO1xuICAgICAgd2lkdGg6IG51bWJlcjtcbiAgICB9W107XG4gIH1bXTtcbn07XG5cbmxldCBsb2FkZXJLZXkgPSAwO1xuZnVuY3Rpb24gcm5kTG9hZGVyKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGx1c3BsdXNcbiAgY29uc3Qga2V5ID0gbG9hZGVyS2V5Kys7XG4gIGNvbnN0IGxvYWRlcjogU2VhcmNoQXNZb3VUeXBlTG9hZGVyID0geyBzaGltbWVyUm93czogW10gfTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCA1OyBpKyspIHtcbiAgICBjb25zdCByb3cgPSB7XG4gICAgICBrZXk6IGAke2tleX06JHtpfWAsXG4gICAgICBzaGltbWVyczogW10gYXMgeyBrZXk6IHN0cmluZzsgd2lkdGg6IG51bWJlciB9W10sXG4gICAgfTtcbiAgICBjb25zdCB3b3JkcyA9IE1hdGguY2VpbChNYXRoLnJhbmRvbSgpICogMyk7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCB3b3JkczsgaisrKSB7XG4gICAgICBjb25zdCB3aWR0aCA9IDEyICsgTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogOTYpO1xuICAgICAgcm93LnNoaW1tZXJzLnB1c2goe1xuICAgICAgICBrZXk6IGAke2tleX06JHtqfWAsXG4gICAgICAgIHdpZHRoLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGxvYWRlci5zaGltbWVyUm93cy5wdXNoKHJvdyk7XG4gIH1cbiAgcmV0dXJuIGxvYWRlcjtcbn1cblxuZXhwb3J0IGNvbnN0IFNlYXJjaFBhbmU6IFJlYWN0LkZDPFNlYXJjaFBhbmVQcm9wcz4gPSAoe1xuICBvblNlYXJjaCxcbiAgb25UcmFja2luZ0NsaWNrLFxuICBzZWFyY2hCdXR0b25SZWYsXG4gIHRvZ2dsZVNlYXJjaCxcbiAgb25TZWFyY2hBc1lvdVR5cGUsXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgnJyk7XG4gIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBbYXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMsIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zXSA9IHVzZVN0YXRlPFxuICAgIEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb25bXVxuICA+KFtdKTtcblxuICBjb25zdCBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0cywgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0c10gPVxuICAgIHVzZVN0YXRlPFNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCBjbG9zZVNlYXJjaCA9IGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCB0b2dnbGVTZWFyY2goKTtcbiAgICAvLyBhZGRzIGEgbGl0dGxlIGRlbGF5IGJldHdlZW4gY2xvc2luZyB0aGUgc2VhcmNoIHBhbmUgYW5kIGZvY3VzaW5nIG9uIHRoZSBidXR0b25cbiAgICAvLyB0byBwcmV2ZW50IHRoZSBzZWFyY2ggcGFuZSBmcm9tIGltbWVkaWF0ZWx5IG9wZW5pbmcgYWdhaW5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmIChzZWFyY2hCdXR0b25SZWYgJiYgc2VhcmNoQnV0dG9uUmVmPy5jdXJyZW50KSB7XG4gICAgICAgIHNlYXJjaEJ1dHRvblJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgICAgfVxuICAgIH0sIDEwKTtcbiAgfTtcblxuICBjb25zdCBvbktleURvd24gPSB1c2VPbkVzY0hhbmRsZXIoY2xvc2VTZWFyY2gpO1xuXG4gIGNvbnN0IG9uTW91c2VEb3duT3V0c2lkZSA9ICh7IHRhcmdldCB9OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgaGFuZGxlT3V0c2lkZUNsaWNrID0gKCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICAhZG9jdW1lbnRcbiAgICAgICAgICAucXVlcnlTZWxlY3RvcignW2RhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXScpXG4gICAgICAgICAgPy5jb250YWlucyh0YXJnZXQgYXMgSFRNTEVsZW1lbnQpICYmXG4gICAgICAgIHRhcmdldCAhPT0gc2VhcmNoQnV0dG9uUmVmPy5jdXJyZW50XG4gICAgICApIHtcbiAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgIH1cblxuICAgICAgdGFyZ2V0Py5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlT3V0c2lkZUNsaWNrKTtcbiAgICB9O1xuXG4gICAgdGFyZ2V0Py5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlT3V0c2lkZUNsaWNrKTtcbiAgfTtcblxuICBjb25zdCBuYXZpZ2F0ZVRvU2VhcmNoID0gKHNlYXJjaFRlcm06IHN0cmluZywgZnJvbVByZXZTZWFyY2g/OiBzdHJpbmcpID0+IHtcbiAgICBvblNlYXJjaChzZWFyY2hUZXJtLCBmcm9tUHJldlNlYXJjaCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlOiBSZWFjdC5DaGFuZ2VFdmVudEhhbmRsZXI8SFRNTElucHV0RWxlbWVudD4gPSAoZXZ0KSA9PiB7XG4gICAgc2V0VmFsdWUoZXZ0LnRhcmdldC52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlU3VibWl0OiBSZWFjdC5Gb3JtRXZlbnRIYW5kbGVyID0gKGV2ZW50KSA9PiB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gIH07XG5cbiAgY29uc3QgY2xlYXJJbnB1dCA9ICgpID0+IHtcbiAgICBzZXRWYWx1ZSgnJyk7XG4gICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiB0b2dnbGVTZWFyY2gsXG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaW5wdXRSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICBzZWFyY2hXb3JrZXIuaW5pdCgpO1xuICB9LCBbXSk7XG5cbiAgY29uc3QgdmFsdWVUcmltbWVkID0gdmFsdWUudHJpbSgpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF2YWx1ZVRyaW1tZWQubGVuZ3RoKSB7XG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBsZXQgY2xlYXJBdXRvY29tcGxldGUgPSB0cnVlO1xuICAgIGxldCBjbGVhclNlYXJjaEFzWW91VHlwZSA9IHRydWU7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8qXG4gICAgICAgKiBXYWl0IDEwIHNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICAvLyBvblNlYXJjaEFzWW91VHlwZSBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgdHJhY2tpbmdcbiAgICAgIGlmIChvblNlYXJjaEFzWW91VHlwZSkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAvKlxuICAgICAgICAgICAqIFRoaXMgdGltZW91dCBhbmQgY2FuY2VsIGNoZWNrIGlzIGEgZGVib3VuY2UgdGhhdCBlbnN1cmVzIHdlIGRvIG5vdFxuICAgICAgICAgICAqIHNlbmQgdHJhY2tpbmcgZXZlbnRzIGZvciBldmVyeSBrZXlzdHJva2UsIGJ1dCBvbmx5IHdoZW4gdGhlIHVzZXJcbiAgICAgICAgICAgKiBzdG9wcyB0eXBpbmcgZm9yIDI1MG1zLiBXZSBwcmV2aW91c2x5IHVzZWQgdGhpcyBkZWJvdW5jZSBmb3IgdGhlXG4gICAgICAgICAgICogc2VhcmNoLWFzLXlvdS10eXBlIHF1ZXJ5IGFzIGEgd2hvbGUsIGJ1dCB0aGlzIGlzIG5vdCBuZWNlc3NhcnlcbiAgICAgICAgICAgKiBmcm9tIGEgbG9hZCBzdGFuZHBvaW50IHNpbmNlIHdlIGhhdmUgY2FjaGluZyBpbXBsZW1lbnRlZCBvbiBib3RoXG4gICAgICAgICAgICogY2xpZW50IGFuZCBzZXJ2ZXIuIEFwcGx5aW5nIHRoZSBkZWJvdW5jZSBvbmx5IGZvciB0aGlzIGNhbGxiYWNrXG4gICAgICAgICAgICogYWxsb3dzIHVzIHRvIG1haW50YWluIHRoZSBtb3N0IHNuYXBweSB1c2VyIGV4cGVyaWVuY2UgYW5kIHN0aWxsXG4gICAgICAgICAgICogaGF2ZSBub24tbm9pc3kgdHJhY2tpbmcuXG4gICAgICAgICAgICovXG4gICAgICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuO1xuICAgICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9IHJlc3VsdHM7XG4gICAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgICB9LCAyNTApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNhbmNlbCA9IHRydWU7XG4gICAgfTtcbiAgfSwgW3ZhbHVlVHJpbW1lZCwgb25TZWFyY2hBc1lvdVR5cGVdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIGJnPVwic2hhZG93LXNlY29uZGFyeVwiXG4gICAgICAgIGhlaWdodD1cIjEwMHZoXCJcbiAgICAgICAgcG9zaXRpb249XCJmaXhlZFwiXG4gICAgICAgIC8vIFdlIGFkZCA1cmVtIGhlcmUgaW4gY2FzZSB0aGVyZSdzIHNvbWUgc29ydCBvZiBicmFuZGVkIGJhbm5lciBhYm92ZSBzZWFyY2hcbiAgICAgICAgLy8gVGhlIHNlYXJjaCBhcmVhIGlzIG11Y2ggdGFsbGVyIHRoYW4gNXJlbSBzbyB0aGlzIGlzIGEgc2FmZSBhbW91bnQgb2YgcGFkZGluZ1xuICAgICAgICB0b3A9e2BjYWxjKCR7dGhlbWUuZWxlbWVudHMuaGVhZGVySGVpZ2h0fSArIDVyZW0pYH1cbiAgICAgICAgd2lkdGg9ezF9XG4gICAgICAvPlxuICAgICAgPEZvY3VzVHJhcFxuICAgICAgICBvbkVzY2FwZUtleT17Y2xvc2VTZWFyY2h9XG4gICAgICAgIG9uQ2xpY2tPdXRzaWRlPXtvbk1vdXNlRG93bk91dHNpZGV9XG4gICAgICAgIGFsbG93UGFnZUludGVyYWN0aW9uXG4gICAgICA+XG4gICAgICAgIDxCb3hcbiAgICAgICAgICBiZz1cImJhY2tncm91bmRcIlxuICAgICAgICAgIGJvcmRlckNvbG9yQm90dG9tPVwiYm9yZGVyLXByaW1hcnlcIlxuICAgICAgICAgIGJvcmRlckNvbG9yVG9wPVwiYm9yZGVyLXRlcnRpYXJ5XCJcbiAgICAgICAgICBib3JkZXJTdHlsZT1cInNvbGlkXCJcbiAgICAgICAgICBib3JkZXJXaWR0aD1cIjJweCAwIDFweFwiXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJoZWFkZXItc2VhcmNoLWRyb3Bkb3duXCJcbiAgICAgICAgICBwb3NpdGlvbj17eyBfOiAnZml4ZWQnLCBtZDogJ2Fic29sdXRlJyB9fVxuICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgbWF4SGVpZ2h0PXt7IF86ICdjYWxjKDEwMHZoIC0gNjNweCknLCBtZDogJ2NhbGMoMTAwdmggLSA4MHB4KScgfX1cbiAgICAgICAgICBvdmVyZmxvdz1cImF1dG9cIlxuICAgICAgICAgIHpJbmRleD17MTB9IC8vIGVuc3VyZSBkcm9wZG93biBpcyBhYm92ZSB0aGUgcGFnZSBjb250ZW50XG4gICAgICAgID5cbiAgICAgICAgICA8Qm94IGJvcmRlcj1cIm5vbmVcIiB3aWR0aD1cImF1dG9cIj5cbiAgICAgICAgICAgIDxRdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiYmFzZWxpbmVcIlxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiZ3JheS02MDBcIlxuICAgICAgICAgICAgICAgIGJvcmRlclN0eWxlQm90dG9tPVwic29saWRcIlxuICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoQm90dG9tPVwiMXB4XCJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgIGhlaWdodD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgICB3aWR0aD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8Rm9ybVxuICAgICAgICAgICAgICAgICAgYWN0aW9uPVwiL3NlYXJjaFwiXG4gICAgICAgICAgICAgICAgICBpZD1cInNlYXJjaC1mb3JtXCJcbiAgICAgICAgICAgICAgICAgIG1sPXs4fVxuICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0eWxlZElucHV0XG4gICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcj1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAyMCwgbWQ6IDI2IH19XG4gICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ9XCJib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJoZWFkZXItc2VhcmNoLWJhclwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJxdWVyeVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGUpID0+IG9uS2V5RG93bihlKX1cbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3NlYXJjaFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICAgICAgICByZWY9e2lucHV0UmVmfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L0Zvcm0+XG4gICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgIGljb249e01pbmlEZWxldGVJY29ufVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyIHNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICB0aXA9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwUHJvcHM9e3tcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50OiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogJ2Zsb2F0aW5nJyxcbiAgICAgICAgICAgICAgICAgICAgbmFycm93OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDIsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17Y2xlYXJJbnB1dH1cbiAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgPC9RdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8U3VnZ2VzdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgIHt2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8RmxleEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCIgYXM9XCJ1bFwiIGxpc3RTdHlsZT1cIm5vbmVcIiBwPXswfT5cbiAgICAgICAgICAgICAgICAgIHthdXRvQ29tcGxldGVTdWdnZXN0aW9ucy5tYXAoKHMpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtzLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoeyB2YWx1ZTogcy50aXRsZSB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7IHZhbHVlOiBzLnRpdGxlIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW1pYm9sZFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1iPXsyIGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPXsxNH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXs4fVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1yPXsxMn1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICB7KHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0IGFzPVwiaDJcIiBmb250U2l6ZT17MjB9IG1iPXsxNn0gbXQ9ezI0fT5cbiAgICAgICAgICAgICAgICAgICAgICBUb3AgcmVzdWx0c1xuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbj1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJ1bFwiXG4gICAgICAgICAgICAgICAgICAgICAgbGlzdFN0eWxlPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcD17MH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNlYXJjaEFzWW91VHlwZUxvYWRlcj8uc2hpbW1lclJvd3MubWFwKChyKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZUxvYWRlckxpIGtleT17ci5rZXl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Iuc2hpbW1lcnMubWFwKCh3b3JkKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTaGltbWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXszMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweT17OCBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17d29yZC5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9e3dvcmQud2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseT1cImFjY2VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDb2xvcj1cInRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMTAgYXMgMTYgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I9XCJib3JkZXItc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyPXsxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM9XCJ4bFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB4PXsxNn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eT17MC4xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lTG9hZGVyTGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLm1hcCgocywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5xdWVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwibGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3NlYXJjaF9hc195b3VfdHlwZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnOiBzLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4ocy5jb250ZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlbHlSZWRpcmVjdChzLnVybFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3NlYXJjaF9hc195b3VfdHlwZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHMuc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4ocy5jb250ZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZSBzaXplPVwic21cIiB2YXJpYW50PVwidGVydGlhcnlcIiBtbD17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cy50eXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8Qm94IGZvbnRTaXplPXt7IF86IDIwLCBzbTogMjYgfX0gbXQ9ezB9IG1iPXs0OH0+XG4gICAgICAgICAgICAgICAgICAgICAge2BXZSBjb3VsZG4ndCBmaW5kIGEgbWF0Y2ggZm9yIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPFRleHQgZm9udFdlaWdodD1cImJvbGRcIj57YFwiJHt2YWx1ZVRyaW1tZWR9LlwiYH08L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgJyBUcnkgYW5vdGhlciBrZXl3b3JkLCBvciBzZWUgd2hhdCBvdXIgbWVtYmVycyBhcmUgbGVhcm5pbmcuJ1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICA8UG9wdWxhclNlYXJjaGVzXG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoPXtuYXZpZ2F0ZVRvU2VhcmNofVxuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHshIXNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICA8U3Ryb2tlQnV0dG9uXG4gICAgICAgICAgICAgICAgbXk9ezE2fVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygndmlld19hbGxfcmVzdWx0cycsIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBWaWV3IGFsbCByZXN1bHRzXG4gICAgICAgICAgICAgIDwvU3Ryb2tlQnV0dG9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxRdWl6QW5kSGVscENlbnRlckxpbmtzXG4gICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICBoYW5kbGVDbG9zZURyb3Bkb3duPXtjbG9zZVNlYXJjaH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TdWdnZXN0aW9uQ29udGFpbmVyPlxuICAgICAgICA8L0JveD5cbiAgICAgIDwvRm9jdXNUcmFwPlxuICAgIDwvPlxuICApO1xufTtcbiJdfQ== */");
53
+ }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQStDNEIiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVVybENoYW5nZURldGVjdGlvbiB9IGZyb20gJy4vaG9va3MvdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uJztcbmltcG9ydCB7IFF1aXpBbmRIZWxwQ2VudGVyTGlua3MgfSBmcm9tICcuL1F1aXpBbmRIZWxwQ2VudGVyTGlua3MnO1xuaW1wb3J0IHsgc2FmZWx5UmVkaXJlY3QgfSBmcm9tICcuL3NhZmVseVJlZGlyZWN0JztcbmltcG9ydCB7IHVzZVNlYXJjaFRyYWNraW5nQ29udGV4dCB9IGZyb20gJy4vU2VhcmNoVHJhY2tpbmdQcm92aWRlcic7XG5pbXBvcnQgeyBzZWFyY2hXb3JrZXIgfSBmcm9tICcuL1NlYXJjaFdvcmtlcic7XG5pbXBvcnQgdHlwZSB7XG4gIEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb24sXG4gIFNlYXJjaEFzWW91VHlwZVJlc3VsdHMsXG59IGZyb20gJy4vU2VhcmNoV29ya2VyL3R5cGVzJztcbmltcG9ydCB7IFNlYXJjaFBhbmVQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBGb3JtID0gQm94LndpdGhDb21wb25lbnQoJ2Zvcm0nKTtcbmNvbnN0IElucHV0ID0gQm94LndpdGhDb21wb25lbnQoJ2lucHV0Jyk7XG5cbmNvbnN0IFF1ZXJ5Q29udGFpbmVyID0gc3R5bGVkKENvbnRlbnRDb250YWluZXIpKFxuICBjc3Moe1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIHB0OiAxNixcbiAgICBwYjogeyBfOiAwLCBtZDogMjQgfSxcbiAgICBweDogeyBfOiAyNCB9LFxuICB9KVxuKTtcblxuY29uc3QgU3VnZ2VzdGlvbkNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKShcbiAgY3NzKHtcbiAgICBwdDogMTYsXG4gICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgcHg6IHsgXzogMjQgfSxcbiAgfSlcbik7XG5cbmNvbnN0IFN0eWxlZElucHV0ID0gc3R5bGVkKElucHV0KShcbiAgY3NzKHtcbiAgICBvdXRsaW5lOiBgbm9uZWAsXG4gICAgJyY6OnBsYWNlaG9sZGVyJzoge1xuICAgICAgdGV4dENvbG9yOiB0aGVtZS5jb2xvcnNbJ3RleHQtc2Vjb25kYXJ5J10gYXMgbmV2ZXIsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IElubGluZVJlc3VsdExpID0gc3R5bGVkKE1lbnVJdGVtKShcbiAgY3NzKHtcbiAgICBwbDogMCxcbiAgICBweTogOCxcbiAgICBmb250U2l6ZTogMTYsXG4gICAgJyY6Zm9jdXMtdmlzaWJsZTphZnRlcic6IHtcbiAgICAgIGxlZnQ6IC00LFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVMb2FkZXJMaSA9IHN0eWxlZC5saShcbiAgY3NzKHtcbiAgICBsaXN0U3R5bGVUeXBlOiAnbm9uZScsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGdhcDogMTIsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIH0pXG4pO1xuXG5leHBvcnQgY29uc3QgU2VtaWJvbGRTZWFyY2hJY29uID0gc3R5bGVkKFNlYXJjaEljb24pYFxuICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICBjaXJjbGUsXG4gIHBhdGgge1xuICAgIHN0cm9rZS13aWR0aDogMnB4O1xuICB9XG4gIHJlY3Qge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0ycHgsIC0ycHgpO1xuICAgIGhlaWdodDogY2FsYygxMDAlICsgNHB4KTtcbiAgICB3aWR0aDogY2FsYygxMDAlICsgNHB4KTtcbiAgfVxuYDtcblxuY29uc3QgRWxsaXBzaXNCb3ggPSBzdHlsZWQoQm94KWBcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5gO1xuXG5jb25zdCBIaWdobGlnaHRlZFRleHQgPSAoe1xuICBzdWdnZXN0aW9uOiB7IHRpdGxlLCBzZWdtZW50cyB9LFxufToge1xuICBzdWdnZXN0aW9uOiBBdXRvY29tcGxldGVTdWdnZXN0aW9uO1xufSkgPT4ge1xuICBjb25zdCBtb2RlID0gdXNlQ3VycmVudE1vZGUoKTtcbiAgY29uc3QgaGlnaGxpZ2h0Q29sb3IgPSBtb2RlID09PSAnZGFyaycgPyAnaHlwZXInIDogJ3llbGxvdyc7XG5cbiAgcmV0dXJuIChcbiAgICA8RmxleEJveD5cbiAgICAgIDxFbGxpcHNpc0JveFxuICAgICAgICBtYXhXaWR0aD1cImNhbGMoMTAwdncgLSAxMjhweClcIlxuICAgICAgICB3aGl0ZVNwYWNlPVwicHJlXCJcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgb3ZlcmZsb3c9XCJoaWRkZW5cIlxuICAgICAgPlxuICAgICAgICB7c2VnbWVudHMubWFwKChzZWdtZW50LCBpKSA9PiAoXG4gICAgICAgICAgPFRleHRcbiAgICAgICAgICAgIGtleT17YCR7dGl0bGV9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICBsaW5lSGVpZ2h0PVwidGl0bGVcIlxuICAgICAgICAgICAgey4uLihzZWdtZW50LmhpZ2hsaWdodFxuICAgICAgICAgICAgICA/IHsgYmc6IGhpZ2hsaWdodENvbG9yLCBmb250V2VpZ2h0OiAnYm9sZCcgfVxuICAgICAgICAgICAgICA6IHt9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2VnbWVudC52YWx1ZX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICkpfVxuICAgICAgPC9FbGxpcHNpc0JveD5cbiAgICAgIDxUZXh0IHNjcmVlbnJlYWRlcj57dGl0bGV9PC9UZXh0PlxuICAgIDwvRmxleEJveD5cbiAgKTtcbn07XG5cbnR5cGUgU2VhcmNoQXNZb3VUeXBlTG9hZGVyID0ge1xuICBzaGltbWVyUm93czoge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHNoaW1tZXJzOiB7XG4gICAgICBrZXk6IHN0cmluZztcbiAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgfVtdO1xuICB9W107XG59O1xuXG5sZXQgbG9hZGVyS2V5ID0gMDtcbmZ1bmN0aW9uIHJuZExvYWRlcigpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBsdXNwbHVzXG4gIGNvbnN0IGtleSA9IGxvYWRlcktleSsrO1xuICBjb25zdCBsb2FkZXI6IFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHsgc2hpbW1lclJvd3M6IFtdIH07XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7XG4gICAgY29uc3Qgcm93ID0ge1xuICAgICAga2V5OiBgJHtrZXl9OiR7aX1gLFxuICAgICAgc2hpbW1lcnM6IFtdIGFzIHsga2V5OiBzdHJpbmc7IHdpZHRoOiBudW1iZXIgfVtdLFxuICAgIH07XG4gICAgY29uc3Qgd29yZHMgPSBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDMpO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgd29yZHM7IGorKykge1xuICAgICAgY29uc3Qgd2lkdGggPSAxMiArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDk2KTtcbiAgICAgIHJvdy5zaGltbWVycy5wdXNoKHtcbiAgICAgICAga2V5OiBgJHtrZXl9OiR7an1gLFxuICAgICAgICB3aWR0aCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsb2FkZXIuc2hpbW1lclJvd3MucHVzaChyb3cpO1xuICB9XG4gIHJldHVybiBsb2FkZXI7XG59XG5cbmV4cG9ydCBjb25zdCBTZWFyY2hQYW5lOiBSZWFjdC5GQzxTZWFyY2hQYW5lUHJvcHM+ID0gKHtcbiAgb25TZWFyY2gsXG4gIG9uVHJhY2tpbmdDbGljayxcbiAgc2VhcmNoQnV0dG9uUmVmLFxuICB0b2dnbGVTZWFyY2gsXG4gIG9uU2VhcmNoQXNZb3VUeXBlLFxufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpO1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgY29uc3QgW2F1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zLCBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9uc10gPSB1c2VTdGF0ZTxcbiAgICBBdXRvY29tcGxldGVTdWdnZXN0aW9uW11cbiAgPihbXSk7XG4gIGNvbnN0IFtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLCBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzXSA9XG4gICAgdXNlU3RhdGU8U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IFtzZWFyY2hSZXN1bHRDbGlja2VkLCBzZXRTZWFyY2hSZXN1bHRDbGlja2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG5cbiAgY29uc3QgaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrID1cbiAgICBvblNlYXJjaEFzWW91VHlwZSAmJiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzICYmICFzZWFyY2hSZXN1bHRDbGlja2VkO1xuXG4gIGNvbnN0IGNsb3NlU2VhcmNoID0gYXN5bmMgKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHVzZXIgbWFkZSBhIHNlYXJjaCBhbmQgdGhlbiBjbG9zZWQgc2VhcmNoIHBhbmVcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRvZ2dsZVNlYXJjaCgpO1xuICAgIC8vIGFkZHMgYSBsaXR0bGUgZGVsYXkgYmV0d2VlbiBjbG9zaW5nIHRoZSBzZWFyY2ggcGFuZSBhbmQgZm9jdXNpbmcgb24gdGhlIGJ1dHRvblxuICAgIC8vIHRvIHByZXZlbnQgdGhlIHNlYXJjaCBwYW5lIGZyb20gaW1tZWRpYXRlbHkgb3BlbmluZyBhZ2FpblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHNlYXJjaEJ1dHRvblJlZiAmJiBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgc2VhcmNoQnV0dG9uUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZU9uRXNjSGFuZGxlcihjbG9zZVNlYXJjaCk7XG5cbiAgY29uc3Qgb25Nb3VzZURvd25PdXRzaWRlID0gKHsgdGFyZ2V0IH06IE1vdXNlRXZlbnQpID0+IHtcbiAgICBjb25zdCBoYW5kbGVPdXRzaWRlQ2xpY2sgPSAoKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgICFkb2N1bWVudFxuICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKCdbZGF0YS10ZXN0aWQ9XCJoZWFkZXItc2VhcmNoLWRyb3Bkb3duXCJdJylcbiAgICAgICAgICA/LmNvbnRhaW5zKHRhcmdldCBhcyBIVE1MRWxlbWVudCkgJiZcbiAgICAgICAgdGFyZ2V0ICE9PSBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnRcbiAgICAgICkge1xuICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgfVxuXG4gICAgICB0YXJnZXQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVPdXRzaWRlQ2xpY2spO1xuICAgIH07XG5cbiAgICB0YXJnZXQ/LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVPdXRzaWRlQ2xpY2spO1xuICB9O1xuXG4gIGNvbnN0IG5hdmlnYXRlVG9TZWFyY2ggPSAoc2VhcmNoVGVybTogc3RyaW5nLCBmcm9tUHJldlNlYXJjaD86IHN0cmluZykgPT4ge1xuICAgIG9uU2VhcmNoKHNlYXJjaFRlcm0sIGZyb21QcmV2U2VhcmNoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2U6IFJlYWN0LkNoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICBzZXRWYWx1ZShldnQudGFyZ2V0LnZhbHVlKTtcbiAgICAvLyByZXNldCB0byBmYWxzZSB3aGVuIHRoZSBzZWFyY2ggcXVlcnkgY2hhbmdlc1xuICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQoZmFsc2UpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdDogUmVhY3QuRm9ybUV2ZW50SGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB0aGUgdXNlciBzdWJtaXRzIHRoZSBmb3JtIHRvIGNhcHR1cmUgY29tcGxldGUgcXVlcnlcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgfTtcblxuICBjb25zdCBjbGVhcklucHV0ID0gKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCBiZWZvcmUgdXNlciBjbGVhcnMgaW5wdXRcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIHNldFZhbHVlKCcnKTtcbiAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgLy8gcmVzZXQgdGhlIGNvbnRleHQgd2l0aCBlbXB0eSB2YWx1ZXNcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICBxdWVyeTogJycsXG4gICAgICBzZWFyY2hJZDogJycsXG4gICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICAvLyBhbmQgdHJhY2sgc2VhcmNoIGV2ZW50IGlmIHVzZXIgbWFkZSBhIHNlYXJjaFxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiAoKSA9PiB7XG4gICAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgfVxuXG4gICAgICB0b2dnbGVTZWFyY2goKTtcbiAgICB9LFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIGRvbid0IHRyYWNrIGlmIGEgcmVzdWx0IHdhcyBjbGlja2VkIG9yIGlmIHdlIGRvbid0IGhhdmUgc2VhcmNoIHJlc3VsdHNcbiAgICBpZiAoXG4gICAgICBzZWFyY2hSZXN1bHRDbGlja2VkIHx8XG4gICAgICAhb25TZWFyY2hBc1lvdVR5cGUgfHxcbiAgICAgICFzZWFyY2hBc1lvdVR5cGVSZXN1bHRzIHx8XG4gICAgICAhdmFsdWVUcmltbWVkLmxlbmd0aFxuICAgIClcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLXJldHVyblxuICAgICAgcmV0dXJuO1xuICB9LCBbXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxuICAgIHZhbHVlVHJpbW1lZCxcbiAgICBvblNlYXJjaEFzWW91VHlwZSxcbiAgXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpbnB1dFJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgIHNlYXJjaFdvcmtlci5pbml0KCk7XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghdmFsdWVUcmltbWVkLmxlbmd0aCkge1xuICAgICAgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhudWxsKTtcbiAgICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgICAgcXVlcnk6ICcnLFxuICAgICAgICBzZWFyY2hJZDogJycsXG4gICAgICAgIHJlc3VsdHNDb3VudDogMCxcbiAgICAgICAgcXVlcnlMb2FkVGltZTogMCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBsZXQgY2xlYXJBdXRvY29tcGxldGUgPSB0cnVlO1xuICAgIGxldCBjbGVhclNlYXJjaEFzWW91VHlwZSA9IHRydWU7XG5cbiAgICBsZXQgc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5OiBOb2RlSlMuVGltZW91dDtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2l0aCBhIHNtYWxsIGRlbGF5IHdoZW4gdGhlcmUgYXJlIG5vIHJlc3VsdHNcbiAgICAgIGlmIChcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUgJiZcbiAgICAgICAgcmVzdWx0cy50b3AubGVuZ3RoID09PSAwICYmXG4gICAgICAgICFzZWFyY2hSZXN1bHRDbGlja2VkXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHF1ZXJ5TG9hZFRpbWUgfSA9IHJlc3VsdHM7XG4gICAgICAgIHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICghY2FuY2VsKSB7XG4gICAgICAgICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIDAsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICAgIGNsZWFyVGltZW91dChzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXkpO1xuICAgIH07XG4gIH0sIFtcbiAgICB2YWx1ZVRyaW1tZWQsXG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyxcbiAgXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICBiZz1cInNoYWRvdy1zZWNvbmRhcnlcIlxuICAgICAgICBoZWlnaHQ9XCIxMDB2aFwiXG4gICAgICAgIHBvc2l0aW9uPVwiZml4ZWRcIlxuICAgICAgICAvLyBXZSBhZGQgNXJlbSBoZXJlIGluIGNhc2UgdGhlcmUncyBzb21lIHNvcnQgb2YgYnJhbmRlZCBiYW5uZXIgYWJvdmUgc2VhcmNoXG4gICAgICAgIC8vIFRoZSBzZWFyY2ggYXJlYSBpcyBtdWNoIHRhbGxlciB0aGFuIDVyZW0gc28gdGhpcyBpcyBhIHNhZmUgYW1vdW50IG9mIHBhZGRpbmdcbiAgICAgICAgdG9wPXtgY2FsYygke3RoZW1lLmVsZW1lbnRzLmhlYWRlckhlaWdodH0gKyA1cmVtKWB9XG4gICAgICAgIHdpZHRoPXsxfVxuICAgICAgLz5cbiAgICAgIDxGb2N1c1RyYXBcbiAgICAgICAgb25Fc2NhcGVLZXk9e2Nsb3NlU2VhcmNofVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249XCJhYnNvbHV0ZVwiXG4gICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICBtYXhIZWlnaHQ9e3sgXzogJ2NhbGMoMTAwdmggLSA2M3B4KScsIG1kOiAnY2FsYygxMDB2aCAtIDgwcHgpJyB9fVxuICAgICAgICAgIG92ZXJmbG93PVwiYXV0b1wiXG4gICAgICAgID5cbiAgICAgICAgICA8Qm94IGJvcmRlcj1cIm5vbmVcIiB3aWR0aD1cImF1dG9cIj5cbiAgICAgICAgICAgIDxRdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiYmFzZWxpbmVcIlxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiZ3JheS02MDBcIlxuICAgICAgICAgICAgICAgIGJvcmRlclN0eWxlQm90dG9tPVwic29saWRcIlxuICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoQm90dG9tPVwiMXB4XCJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgIGhlaWdodD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgICB3aWR0aD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8Rm9ybVxuICAgICAgICAgICAgICAgICAgYWN0aW9uPVwiL3NlYXJjaFwiXG4gICAgICAgICAgICAgICAgICBpZD1cInNlYXJjaC1mb3JtXCJcbiAgICAgICAgICAgICAgICAgIG1sPXs4fVxuICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0eWxlZElucHV0XG4gICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcj1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAyMCwgbWQ6IDI2IH19XG4gICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ9XCJib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJoZWFkZXItc2VhcmNoLWJhclwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJxdWVyeVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGUpID0+IG9uS2V5RG93bihlKX1cbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3NlYXJjaFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICAgICAgICByZWY9e2lucHV0UmVmfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L0Zvcm0+XG4gICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgIGljb249e01pbmlEZWxldGVJY29ufVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyIHNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICB0aXA9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwUHJvcHM9e3tcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50OiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogJ2Zsb2F0aW5nJyxcbiAgICAgICAgICAgICAgICAgICAgbmFycm93OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDIsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17Y2xlYXJJbnB1dH1cbiAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgPC9RdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8U3VnZ2VzdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgIHt2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8RmxleEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCIgYXM9XCJ1bFwiIGxpc3RTdHlsZT1cIm5vbmVcIiBwPXswfT5cbiAgICAgICAgICAgICAgICAgIHthdXRvQ29tcGxldGVTdWdnZXN0aW9ucy5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtzLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ2F1dG9jb21wbGV0ZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbWlib2xkU2VhcmNoSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgbWI9ezIgYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9ezE0fVxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9ezh9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICAgICAgICAgICAgICAgICAgbXI9ezEyfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPEhpZ2hsaWdodGVkVGV4dCBzdWdnZXN0aW9uPXtzfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgIHsoc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy50b3AubGVuZ3RoID4gMCkgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPFRleHQgYXM9XCJoMlwiIGZvbnRTaXplPXsyMH0gbWI9ezE2fSBtdD17MjR9PlxuICAgICAgICAgICAgICAgICAgICAgIFRvcCByZXN1bHRzXG4gICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgICBhcz1cInVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBsaXN0U3R5bGU9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICBwPXswfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc2VhcmNoQXNZb3VUeXBlTG9hZGVyPy5zaGltbWVyUm93cy5tYXAoKHIpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lTG9hZGVyTGkga2V5PXtyLmtleX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ci5zaGltbWVycy5tYXAoKHdvcmQpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNoaW1tZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezMwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5PXs4IGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXt3b3JkLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17d29yZC53aWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RmFtaWx5PVwiYWNjZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yPVwidGV4dC1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAxMCBhcyAxNiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImJvcmRlci1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI9ezF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1cz1cInhsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHg9ezE2fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5PXswLjF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVMb2FkZXJMaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy50b3AubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnF1ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJsaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZWx5UmVkaXJlY3Qocy51cmxQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnOiBzLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgY29udGVudF9pZDogcy5jb250ZW50SWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlbHlSZWRpcmVjdChzLnVybFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmFkZ2Ugc2l6ZT1cInNtXCIgdmFyaWFudD1cInRlcnRpYXJ5XCIgbWw9ezEyfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3MudHlwZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmFkZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge3NlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggPT09IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPEJveCBmb250U2l6ZT17eyBfOiAyMCwgc206IDI2IH19IG10PXswfSBtYj17NDh9PlxuICAgICAgICAgICAgICAgICAgICAgIHtgV2UgY291bGRuJ3QgZmluZCBhIG1hdGNoIGZvciBgfVxuICAgICAgICAgICAgICAgICAgICAgIDxUZXh0IGZvbnRXZWlnaHQ9XCJib2xkXCI+e2BcIiR7dmFsdWVUcmltbWVkfS5cImB9PC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICcgVHJ5IGFub3RoZXIga2V5d29yZCwgb3Igc2VlIHdoYXQgb3VyIG1lbWJlcnMgYXJlIGxlYXJuaW5nLidcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPE1lbnUgYm9yZGVyPVwibm9uZVwiIHZhcmlhbnQ9XCJwb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgPFBvcHVsYXJTZWFyY2hlc1xuICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaD17bmF2aWdhdGVUb1NlYXJjaH1cbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPFBvcHVsYXJDb250ZW50IG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfSAvPlxuICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7ISFzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy50b3AubGVuZ3RoICYmIChcbiAgICAgICAgICAgICAgPFN0cm9rZUJ1dHRvblxuICAgICAgICAgICAgICAgIG15PXsxNn1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3ZpZXdfYWxsX3Jlc3VsdHMnLCB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaCh2YWx1ZSwgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQpO1xuICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgVmlldyBhbGwgcmVzdWx0c1xuICAgICAgICAgICAgICA8L1N0cm9rZUJ1dHRvbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8UXVpekFuZEhlbHBDZW50ZXJMaW5rc1xuICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja31cbiAgICAgICAgICAgICAgaGFuZGxlQ2xvc2VEcm9wZG93bj17Y2xvc2VTZWFyY2h9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3VnZ2VzdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgPC9Cb3g+XG4gICAgICA8L0ZvY3VzVHJhcD5cbiAgICA8Lz5cbiAgKTtcbn07XG4iXX0= */");
53
54
  const StyledInput = /*#__PURE__*/_styled(Input, {
54
55
  target: "e1e5b20r4",
55
56
  label: "StyledInput"
@@ -58,7 +59,7 @@ const StyledInput = /*#__PURE__*/_styled(Input, {
58
59
  '&::placeholder': {
59
60
  textColor: theme.colors['text-secondary']
60
61
  }
61
- }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXNEb0IiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVVybENoYW5nZURldGVjdGlvbiB9IGZyb20gJy4vaG9va3MvdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uJztcbmltcG9ydCB7IFF1aXpBbmRIZWxwQ2VudGVyTGlua3MgfSBmcm9tICcuL1F1aXpBbmRIZWxwQ2VudGVyTGlua3MnO1xuaW1wb3J0IHsgc2FmZWx5UmVkaXJlY3QgfSBmcm9tICcuL3NhZmVseVJlZGlyZWN0JztcbmltcG9ydCB7IHNlYXJjaFdvcmtlciB9IGZyb20gJy4vU2VhcmNoV29ya2VyJztcbmltcG9ydCB0eXBlIHtcbiAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbixcbiAgU2VhcmNoQXNZb3VUeXBlUmVzdWx0cyxcbn0gZnJvbSAnLi9TZWFyY2hXb3JrZXIvdHlwZXMnO1xuaW1wb3J0IHsgU2VhcmNoUGFuZVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IEZvcm0gPSBCb3gud2l0aENvbXBvbmVudCgnZm9ybScpO1xuY29uc3QgSW5wdXQgPSBCb3gud2l0aENvbXBvbmVudCgnaW5wdXQnKTtcblxuY29uc3QgUXVlcnlDb250YWluZXIgPSBzdHlsZWQoQ29udGVudENvbnRhaW5lcikoXG4gIGNzcyh7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgcHQ6IDE2LFxuICAgIHBiOiB7IF86IDAsIG1kOiAyNCB9LFxuICAgIHB4OiB7IF86IDI0IH0sXG4gIH0pXG4pO1xuXG5jb25zdCBTdWdnZXN0aW9uQ29udGFpbmVyID0gc3R5bGVkKENvbnRlbnRDb250YWluZXIpKFxuICBjc3Moe1xuICAgIHB0OiAxNixcbiAgICBwYjogeyBfOiAwLCBtZDogMjQgfSxcbiAgICBweDogeyBfOiAyNCB9LFxuICB9KVxuKTtcblxuY29uc3QgU3R5bGVkSW5wdXQgPSBzdHlsZWQoSW5wdXQpKFxuICBjc3Moe1xuICAgIG91dGxpbmU6IGBub25lYCxcbiAgICAnJjo6cGxhY2Vob2xkZXInOiB7XG4gICAgICB0ZXh0Q29sb3I6IHRoZW1lLmNvbG9yc1sndGV4dC1zZWNvbmRhcnknXSBhcyBuZXZlcixcbiAgICB9LFxuICB9KVxuKTtcblxuY29uc3QgSW5saW5lUmVzdWx0TGkgPSBzdHlsZWQoTWVudUl0ZW0pKFxuICBjc3Moe1xuICAgIHBsOiAwLFxuICAgIHB5OiA4LFxuICAgIGZvbnRTaXplOiAxNixcbiAgICAnJjpmb2N1cy12aXNpYmxlOmFmdGVyJzoge1xuICAgICAgbGVmdDogLTQsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IElubGluZUxvYWRlckxpID0gc3R5bGVkLmxpKFxuICBjc3Moe1xuICAgIGxpc3RTdHlsZVR5cGU6ICdub25lJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZ2FwOiAxMixcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgfSlcbik7XG5cbmV4cG9ydCBjb25zdCBTZW1pYm9sZFNlYXJjaEljb24gPSBzdHlsZWQoU2VhcmNoSWNvbilgXG4gIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gIGNpcmNsZSxcbiAgcGF0aCB7XG4gICAgc3Ryb2tlLXdpZHRoOiAycHg7XG4gIH1cbiAgcmVjdCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTJweCwgLTJweCk7XG4gICAgaGVpZ2h0OiBjYWxjKDEwMCUgKyA0cHgpO1xuICAgIHdpZHRoOiBjYWxjKDEwMCUgKyA0cHgpO1xuICB9XG5gO1xuXG5jb25zdCBFbGxpcHNpc0JveCA9IHN0eWxlZChCb3gpYFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbmA7XG5cbmNvbnN0IEhpZ2hsaWdodGVkVGV4dCA9ICh7XG4gIHN1Z2dlc3Rpb246IHsgdGl0bGUsIHNlZ21lbnRzIH0sXG59OiB7XG4gIHN1Z2dlc3Rpb246IEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb247XG59KSA9PiB7XG4gIGNvbnN0IG1vZGUgPSB1c2VDdXJyZW50TW9kZSgpO1xuICBjb25zdCBoaWdobGlnaHRDb2xvciA9IG1vZGUgPT09ICdkYXJrJyA/ICdoeXBlcicgOiAneWVsbG93JztcblxuICByZXR1cm4gKFxuICAgIDxGbGV4Qm94PlxuICAgICAgPEVsbGlwc2lzQm94XG4gICAgICAgIG1heFdpZHRoPVwiY2FsYygxMDB2dyAtIDEyOHB4KVwiXG4gICAgICAgIHdoaXRlU3BhY2U9XCJwcmVcIlxuICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICBvdmVyZmxvdz1cImhpZGRlblwiXG4gICAgICA+XG4gICAgICAgIHtzZWdtZW50cy5tYXAoKHNlZ21lbnQsIGkpID0+IChcbiAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAga2V5PXtgJHt0aXRsZX06JHtpLnRvU3RyaW5nKCl9YH1cbiAgICAgICAgICAgIGxpbmVIZWlnaHQ9XCJ0aXRsZVwiXG4gICAgICAgICAgICB7Li4uKHNlZ21lbnQuaGlnaGxpZ2h0XG4gICAgICAgICAgICAgID8geyBiZzogaGlnaGxpZ2h0Q29sb3IsIGZvbnRXZWlnaHQ6ICdib2xkJyB9XG4gICAgICAgICAgICAgIDoge30pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtzZWdtZW50LnZhbHVlfVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgKSl9XG4gICAgICA8L0VsbGlwc2lzQm94PlxuICAgICAgPFRleHQgc2NyZWVucmVhZGVyPnt0aXRsZX08L1RleHQ+XG4gICAgPC9GbGV4Qm94PlxuICApO1xufTtcblxudHlwZSBTZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSB7XG4gIHNoaW1tZXJSb3dzOiB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgc2hpbW1lcnM6IHtcbiAgICAgIGtleTogc3RyaW5nO1xuICAgICAgd2lkdGg6IG51bWJlcjtcbiAgICB9W107XG4gIH1bXTtcbn07XG5cbmxldCBsb2FkZXJLZXkgPSAwO1xuZnVuY3Rpb24gcm5kTG9hZGVyKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGx1c3BsdXNcbiAgY29uc3Qga2V5ID0gbG9hZGVyS2V5Kys7XG4gIGNvbnN0IGxvYWRlcjogU2VhcmNoQXNZb3VUeXBlTG9hZGVyID0geyBzaGltbWVyUm93czogW10gfTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCA1OyBpKyspIHtcbiAgICBjb25zdCByb3cgPSB7XG4gICAgICBrZXk6IGAke2tleX06JHtpfWAsXG4gICAgICBzaGltbWVyczogW10gYXMgeyBrZXk6IHN0cmluZzsgd2lkdGg6IG51bWJlciB9W10sXG4gICAgfTtcbiAgICBjb25zdCB3b3JkcyA9IE1hdGguY2VpbChNYXRoLnJhbmRvbSgpICogMyk7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCB3b3JkczsgaisrKSB7XG4gICAgICBjb25zdCB3aWR0aCA9IDEyICsgTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogOTYpO1xuICAgICAgcm93LnNoaW1tZXJzLnB1c2goe1xuICAgICAgICBrZXk6IGAke2tleX06JHtqfWAsXG4gICAgICAgIHdpZHRoLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGxvYWRlci5zaGltbWVyUm93cy5wdXNoKHJvdyk7XG4gIH1cbiAgcmV0dXJuIGxvYWRlcjtcbn1cblxuZXhwb3J0IGNvbnN0IFNlYXJjaFBhbmU6IFJlYWN0LkZDPFNlYXJjaFBhbmVQcm9wcz4gPSAoe1xuICBvblNlYXJjaCxcbiAgb25UcmFja2luZ0NsaWNrLFxuICBzZWFyY2hCdXR0b25SZWYsXG4gIHRvZ2dsZVNlYXJjaCxcbiAgb25TZWFyY2hBc1lvdVR5cGUsXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgnJyk7XG4gIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBbYXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMsIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zXSA9IHVzZVN0YXRlPFxuICAgIEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb25bXVxuICA+KFtdKTtcblxuICBjb25zdCBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0cywgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0c10gPVxuICAgIHVzZVN0YXRlPFNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCBjbG9zZVNlYXJjaCA9IGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCB0b2dnbGVTZWFyY2goKTtcbiAgICAvLyBhZGRzIGEgbGl0dGxlIGRlbGF5IGJldHdlZW4gY2xvc2luZyB0aGUgc2VhcmNoIHBhbmUgYW5kIGZvY3VzaW5nIG9uIHRoZSBidXR0b25cbiAgICAvLyB0byBwcmV2ZW50IHRoZSBzZWFyY2ggcGFuZSBmcm9tIGltbWVkaWF0ZWx5IG9wZW5pbmcgYWdhaW5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmIChzZWFyY2hCdXR0b25SZWYgJiYgc2VhcmNoQnV0dG9uUmVmPy5jdXJyZW50KSB7XG4gICAgICAgIHNlYXJjaEJ1dHRvblJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgICAgfVxuICAgIH0sIDEwKTtcbiAgfTtcblxuICBjb25zdCBvbktleURvd24gPSB1c2VPbkVzY0hhbmRsZXIoY2xvc2VTZWFyY2gpO1xuXG4gIGNvbnN0IG9uTW91c2VEb3duT3V0c2lkZSA9ICh7IHRhcmdldCB9OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgaGFuZGxlT3V0c2lkZUNsaWNrID0gKCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICAhZG9jdW1lbnRcbiAgICAgICAgICAucXVlcnlTZWxlY3RvcignW2RhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXScpXG4gICAgICAgICAgPy5jb250YWlucyh0YXJnZXQgYXMgSFRNTEVsZW1lbnQpICYmXG4gICAgICAgIHRhcmdldCAhPT0gc2VhcmNoQnV0dG9uUmVmPy5jdXJyZW50XG4gICAgICApIHtcbiAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgIH1cblxuICAgICAgdGFyZ2V0Py5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlT3V0c2lkZUNsaWNrKTtcbiAgICB9O1xuXG4gICAgdGFyZ2V0Py5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlT3V0c2lkZUNsaWNrKTtcbiAgfTtcblxuICBjb25zdCBuYXZpZ2F0ZVRvU2VhcmNoID0gKHNlYXJjaFRlcm06IHN0cmluZywgZnJvbVByZXZTZWFyY2g/OiBzdHJpbmcpID0+IHtcbiAgICBvblNlYXJjaChzZWFyY2hUZXJtLCBmcm9tUHJldlNlYXJjaCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlOiBSZWFjdC5DaGFuZ2VFdmVudEhhbmRsZXI8SFRNTElucHV0RWxlbWVudD4gPSAoZXZ0KSA9PiB7XG4gICAgc2V0VmFsdWUoZXZ0LnRhcmdldC52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlU3VibWl0OiBSZWFjdC5Gb3JtRXZlbnRIYW5kbGVyID0gKGV2ZW50KSA9PiB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gIH07XG5cbiAgY29uc3QgY2xlYXJJbnB1dCA9ICgpID0+IHtcbiAgICBzZXRWYWx1ZSgnJyk7XG4gICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiB0b2dnbGVTZWFyY2gsXG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaW5wdXRSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICBzZWFyY2hXb3JrZXIuaW5pdCgpO1xuICB9LCBbXSk7XG5cbiAgY29uc3QgdmFsdWVUcmltbWVkID0gdmFsdWUudHJpbSgpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF2YWx1ZVRyaW1tZWQubGVuZ3RoKSB7XG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBsZXQgY2xlYXJBdXRvY29tcGxldGUgPSB0cnVlO1xuICAgIGxldCBjbGVhclNlYXJjaEFzWW91VHlwZSA9IHRydWU7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8qXG4gICAgICAgKiBXYWl0IDEwIHNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICAvLyBvblNlYXJjaEFzWW91VHlwZSBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgdHJhY2tpbmdcbiAgICAgIGlmIChvblNlYXJjaEFzWW91VHlwZSkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAvKlxuICAgICAgICAgICAqIFRoaXMgdGltZW91dCBhbmQgY2FuY2VsIGNoZWNrIGlzIGEgZGVib3VuY2UgdGhhdCBlbnN1cmVzIHdlIGRvIG5vdFxuICAgICAgICAgICAqIHNlbmQgdHJhY2tpbmcgZXZlbnRzIGZvciBldmVyeSBrZXlzdHJva2UsIGJ1dCBvbmx5IHdoZW4gdGhlIHVzZXJcbiAgICAgICAgICAgKiBzdG9wcyB0eXBpbmcgZm9yIDI1MG1zLiBXZSBwcmV2aW91c2x5IHVzZWQgdGhpcyBkZWJvdW5jZSBmb3IgdGhlXG4gICAgICAgICAgICogc2VhcmNoLWFzLXlvdS10eXBlIHF1ZXJ5IGFzIGEgd2hvbGUsIGJ1dCB0aGlzIGlzIG5vdCBuZWNlc3NhcnlcbiAgICAgICAgICAgKiBmcm9tIGEgbG9hZCBzdGFuZHBvaW50IHNpbmNlIHdlIGhhdmUgY2FjaGluZyBpbXBsZW1lbnRlZCBvbiBib3RoXG4gICAgICAgICAgICogY2xpZW50IGFuZCBzZXJ2ZXIuIEFwcGx5aW5nIHRoZSBkZWJvdW5jZSBvbmx5IGZvciB0aGlzIGNhbGxiYWNrXG4gICAgICAgICAgICogYWxsb3dzIHVzIHRvIG1haW50YWluIHRoZSBtb3N0IHNuYXBweSB1c2VyIGV4cGVyaWVuY2UgYW5kIHN0aWxsXG4gICAgICAgICAgICogaGF2ZSBub24tbm9pc3kgdHJhY2tpbmcuXG4gICAgICAgICAgICovXG4gICAgICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuO1xuICAgICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9IHJlc3VsdHM7XG4gICAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgICB9LCAyNTApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNhbmNlbCA9IHRydWU7XG4gICAgfTtcbiAgfSwgW3ZhbHVlVHJpbW1lZCwgb25TZWFyY2hBc1lvdVR5cGVdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIGJnPVwic2hhZG93LXNlY29uZGFyeVwiXG4gICAgICAgIGhlaWdodD1cIjEwMHZoXCJcbiAgICAgICAgcG9zaXRpb249XCJmaXhlZFwiXG4gICAgICAgIC8vIFdlIGFkZCA1cmVtIGhlcmUgaW4gY2FzZSB0aGVyZSdzIHNvbWUgc29ydCBvZiBicmFuZGVkIGJhbm5lciBhYm92ZSBzZWFyY2hcbiAgICAgICAgLy8gVGhlIHNlYXJjaCBhcmVhIGlzIG11Y2ggdGFsbGVyIHRoYW4gNXJlbSBzbyB0aGlzIGlzIGEgc2FmZSBhbW91bnQgb2YgcGFkZGluZ1xuICAgICAgICB0b3A9e2BjYWxjKCR7dGhlbWUuZWxlbWVudHMuaGVhZGVySGVpZ2h0fSArIDVyZW0pYH1cbiAgICAgICAgd2lkdGg9ezF9XG4gICAgICAvPlxuICAgICAgPEZvY3VzVHJhcFxuICAgICAgICBvbkVzY2FwZUtleT17Y2xvc2VTZWFyY2h9XG4gICAgICAgIG9uQ2xpY2tPdXRzaWRlPXtvbk1vdXNlRG93bk91dHNpZGV9XG4gICAgICAgIGFsbG93UGFnZUludGVyYWN0aW9uXG4gICAgICA+XG4gICAgICAgIDxCb3hcbiAgICAgICAgICBiZz1cImJhY2tncm91bmRcIlxuICAgICAgICAgIGJvcmRlckNvbG9yQm90dG9tPVwiYm9yZGVyLXByaW1hcnlcIlxuICAgICAgICAgIGJvcmRlckNvbG9yVG9wPVwiYm9yZGVyLXRlcnRpYXJ5XCJcbiAgICAgICAgICBib3JkZXJTdHlsZT1cInNvbGlkXCJcbiAgICAgICAgICBib3JkZXJXaWR0aD1cIjJweCAwIDFweFwiXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJoZWFkZXItc2VhcmNoLWRyb3Bkb3duXCJcbiAgICAgICAgICBwb3NpdGlvbj17eyBfOiAnZml4ZWQnLCBtZDogJ2Fic29sdXRlJyB9fVxuICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgbWF4SGVpZ2h0PXt7IF86ICdjYWxjKDEwMHZoIC0gNjNweCknLCBtZDogJ2NhbGMoMTAwdmggLSA4MHB4KScgfX1cbiAgICAgICAgICBvdmVyZmxvdz1cImF1dG9cIlxuICAgICAgICAgIHpJbmRleD17MTB9IC8vIGVuc3VyZSBkcm9wZG93biBpcyBhYm92ZSB0aGUgcGFnZSBjb250ZW50XG4gICAgICAgID5cbiAgICAgICAgICA8Qm94IGJvcmRlcj1cIm5vbmVcIiB3aWR0aD1cImF1dG9cIj5cbiAgICAgICAgICAgIDxRdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiYmFzZWxpbmVcIlxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiZ3JheS02MDBcIlxuICAgICAgICAgICAgICAgIGJvcmRlclN0eWxlQm90dG9tPVwic29saWRcIlxuICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoQm90dG9tPVwiMXB4XCJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgIGhlaWdodD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgICB3aWR0aD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8Rm9ybVxuICAgICAgICAgICAgICAgICAgYWN0aW9uPVwiL3NlYXJjaFwiXG4gICAgICAgICAgICAgICAgICBpZD1cInNlYXJjaC1mb3JtXCJcbiAgICAgICAgICAgICAgICAgIG1sPXs4fVxuICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0eWxlZElucHV0XG4gICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcj1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAyMCwgbWQ6IDI2IH19XG4gICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ9XCJib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJoZWFkZXItc2VhcmNoLWJhclwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJxdWVyeVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGUpID0+IG9uS2V5RG93bihlKX1cbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3NlYXJjaFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICAgICAgICByZWY9e2lucHV0UmVmfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L0Zvcm0+XG4gICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgIGljb249e01pbmlEZWxldGVJY29ufVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyIHNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICB0aXA9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwUHJvcHM9e3tcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50OiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogJ2Zsb2F0aW5nJyxcbiAgICAgICAgICAgICAgICAgICAgbmFycm93OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDIsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17Y2xlYXJJbnB1dH1cbiAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgPC9RdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8U3VnZ2VzdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgIHt2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8RmxleEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCIgYXM9XCJ1bFwiIGxpc3RTdHlsZT1cIm5vbmVcIiBwPXswfT5cbiAgICAgICAgICAgICAgICAgIHthdXRvQ29tcGxldGVTdWdnZXN0aW9ucy5tYXAoKHMpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtzLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoeyB2YWx1ZTogcy50aXRsZSB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7IHZhbHVlOiBzLnRpdGxlIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW1pYm9sZFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1iPXsyIGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPXsxNH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXs4fVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1yPXsxMn1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICB7KHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0IGFzPVwiaDJcIiBmb250U2l6ZT17MjB9IG1iPXsxNn0gbXQ9ezI0fT5cbiAgICAgICAgICAgICAgICAgICAgICBUb3AgcmVzdWx0c1xuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbj1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJ1bFwiXG4gICAgICAgICAgICAgICAgICAgICAgbGlzdFN0eWxlPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcD17MH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNlYXJjaEFzWW91VHlwZUxvYWRlcj8uc2hpbW1lclJvd3MubWFwKChyKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZUxvYWRlckxpIGtleT17ci5rZXl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Iuc2hpbW1lcnMubWFwKCh3b3JkKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTaGltbWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXszMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweT17OCBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17d29yZC5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9e3dvcmQud2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseT1cImFjY2VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDb2xvcj1cInRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMTAgYXMgMTYgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I9XCJib3JkZXItc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyPXsxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM9XCJ4bFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB4PXsxNn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eT17MC4xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lTG9hZGVyTGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLm1hcCgocywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5xdWVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwibGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3NlYXJjaF9hc195b3VfdHlwZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnOiBzLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4ocy5jb250ZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlbHlSZWRpcmVjdChzLnVybFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3NlYXJjaF9hc195b3VfdHlwZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHMuc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4ocy5jb250ZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZSBzaXplPVwic21cIiB2YXJpYW50PVwidGVydGlhcnlcIiBtbD17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cy50eXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8Qm94IGZvbnRTaXplPXt7IF86IDIwLCBzbTogMjYgfX0gbXQ9ezB9IG1iPXs0OH0+XG4gICAgICAgICAgICAgICAgICAgICAge2BXZSBjb3VsZG4ndCBmaW5kIGEgbWF0Y2ggZm9yIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPFRleHQgZm9udFdlaWdodD1cImJvbGRcIj57YFwiJHt2YWx1ZVRyaW1tZWR9LlwiYH08L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgJyBUcnkgYW5vdGhlciBrZXl3b3JkLCBvciBzZWUgd2hhdCBvdXIgbWVtYmVycyBhcmUgbGVhcm5pbmcuJ1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICA8UG9wdWxhclNlYXJjaGVzXG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoPXtuYXZpZ2F0ZVRvU2VhcmNofVxuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHshIXNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICA8U3Ryb2tlQnV0dG9uXG4gICAgICAgICAgICAgICAgbXk9ezE2fVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygndmlld19hbGxfcmVzdWx0cycsIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBWaWV3IGFsbCByZXN1bHRzXG4gICAgICAgICAgICAgIDwvU3Ryb2tlQnV0dG9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxRdWl6QW5kSGVscENlbnRlckxpbmtzXG4gICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICBoYW5kbGVDbG9zZURyb3Bkb3duPXtjbG9zZVNlYXJjaH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TdWdnZXN0aW9uQ29udGFpbmVyPlxuICAgICAgICA8L0JveD5cbiAgICAgIDwvRm9jdXNUcmFwPlxuICAgIDwvPlxuICApO1xufTtcbiJdfQ== */");
62
+ }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXVEb0IiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVVybENoYW5nZURldGVjdGlvbiB9IGZyb20gJy4vaG9va3MvdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uJztcbmltcG9ydCB7IFF1aXpBbmRIZWxwQ2VudGVyTGlua3MgfSBmcm9tICcuL1F1aXpBbmRIZWxwQ2VudGVyTGlua3MnO1xuaW1wb3J0IHsgc2FmZWx5UmVkaXJlY3QgfSBmcm9tICcuL3NhZmVseVJlZGlyZWN0JztcbmltcG9ydCB7IHVzZVNlYXJjaFRyYWNraW5nQ29udGV4dCB9IGZyb20gJy4vU2VhcmNoVHJhY2tpbmdQcm92aWRlcic7XG5pbXBvcnQgeyBzZWFyY2hXb3JrZXIgfSBmcm9tICcuL1NlYXJjaFdvcmtlcic7XG5pbXBvcnQgdHlwZSB7XG4gIEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb24sXG4gIFNlYXJjaEFzWW91VHlwZVJlc3VsdHMsXG59IGZyb20gJy4vU2VhcmNoV29ya2VyL3R5cGVzJztcbmltcG9ydCB7IFNlYXJjaFBhbmVQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBGb3JtID0gQm94LndpdGhDb21wb25lbnQoJ2Zvcm0nKTtcbmNvbnN0IElucHV0ID0gQm94LndpdGhDb21wb25lbnQoJ2lucHV0Jyk7XG5cbmNvbnN0IFF1ZXJ5Q29udGFpbmVyID0gc3R5bGVkKENvbnRlbnRDb250YWluZXIpKFxuICBjc3Moe1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIHB0OiAxNixcbiAgICBwYjogeyBfOiAwLCBtZDogMjQgfSxcbiAgICBweDogeyBfOiAyNCB9LFxuICB9KVxuKTtcblxuY29uc3QgU3VnZ2VzdGlvbkNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKShcbiAgY3NzKHtcbiAgICBwdDogMTYsXG4gICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgcHg6IHsgXzogMjQgfSxcbiAgfSlcbik7XG5cbmNvbnN0IFN0eWxlZElucHV0ID0gc3R5bGVkKElucHV0KShcbiAgY3NzKHtcbiAgICBvdXRsaW5lOiBgbm9uZWAsXG4gICAgJyY6OnBsYWNlaG9sZGVyJzoge1xuICAgICAgdGV4dENvbG9yOiB0aGVtZS5jb2xvcnNbJ3RleHQtc2Vjb25kYXJ5J10gYXMgbmV2ZXIsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IElubGluZVJlc3VsdExpID0gc3R5bGVkKE1lbnVJdGVtKShcbiAgY3NzKHtcbiAgICBwbDogMCxcbiAgICBweTogOCxcbiAgICBmb250U2l6ZTogMTYsXG4gICAgJyY6Zm9jdXMtdmlzaWJsZTphZnRlcic6IHtcbiAgICAgIGxlZnQ6IC00LFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVMb2FkZXJMaSA9IHN0eWxlZC5saShcbiAgY3NzKHtcbiAgICBsaXN0U3R5bGVUeXBlOiAnbm9uZScsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGdhcDogMTIsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIH0pXG4pO1xuXG5leHBvcnQgY29uc3QgU2VtaWJvbGRTZWFyY2hJY29uID0gc3R5bGVkKFNlYXJjaEljb24pYFxuICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICBjaXJjbGUsXG4gIHBhdGgge1xuICAgIHN0cm9rZS13aWR0aDogMnB4O1xuICB9XG4gIHJlY3Qge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0ycHgsIC0ycHgpO1xuICAgIGhlaWdodDogY2FsYygxMDAlICsgNHB4KTtcbiAgICB3aWR0aDogY2FsYygxMDAlICsgNHB4KTtcbiAgfVxuYDtcblxuY29uc3QgRWxsaXBzaXNCb3ggPSBzdHlsZWQoQm94KWBcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5gO1xuXG5jb25zdCBIaWdobGlnaHRlZFRleHQgPSAoe1xuICBzdWdnZXN0aW9uOiB7IHRpdGxlLCBzZWdtZW50cyB9LFxufToge1xuICBzdWdnZXN0aW9uOiBBdXRvY29tcGxldGVTdWdnZXN0aW9uO1xufSkgPT4ge1xuICBjb25zdCBtb2RlID0gdXNlQ3VycmVudE1vZGUoKTtcbiAgY29uc3QgaGlnaGxpZ2h0Q29sb3IgPSBtb2RlID09PSAnZGFyaycgPyAnaHlwZXInIDogJ3llbGxvdyc7XG5cbiAgcmV0dXJuIChcbiAgICA8RmxleEJveD5cbiAgICAgIDxFbGxpcHNpc0JveFxuICAgICAgICBtYXhXaWR0aD1cImNhbGMoMTAwdncgLSAxMjhweClcIlxuICAgICAgICB3aGl0ZVNwYWNlPVwicHJlXCJcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgb3ZlcmZsb3c9XCJoaWRkZW5cIlxuICAgICAgPlxuICAgICAgICB7c2VnbWVudHMubWFwKChzZWdtZW50LCBpKSA9PiAoXG4gICAgICAgICAgPFRleHRcbiAgICAgICAgICAgIGtleT17YCR7dGl0bGV9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICBsaW5lSGVpZ2h0PVwidGl0bGVcIlxuICAgICAgICAgICAgey4uLihzZWdtZW50LmhpZ2hsaWdodFxuICAgICAgICAgICAgICA/IHsgYmc6IGhpZ2hsaWdodENvbG9yLCBmb250V2VpZ2h0OiAnYm9sZCcgfVxuICAgICAgICAgICAgICA6IHt9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2VnbWVudC52YWx1ZX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICkpfVxuICAgICAgPC9FbGxpcHNpc0JveD5cbiAgICAgIDxUZXh0IHNjcmVlbnJlYWRlcj57dGl0bGV9PC9UZXh0PlxuICAgIDwvRmxleEJveD5cbiAgKTtcbn07XG5cbnR5cGUgU2VhcmNoQXNZb3VUeXBlTG9hZGVyID0ge1xuICBzaGltbWVyUm93czoge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHNoaW1tZXJzOiB7XG4gICAgICBrZXk6IHN0cmluZztcbiAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgfVtdO1xuICB9W107XG59O1xuXG5sZXQgbG9hZGVyS2V5ID0gMDtcbmZ1bmN0aW9uIHJuZExvYWRlcigpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBsdXNwbHVzXG4gIGNvbnN0IGtleSA9IGxvYWRlcktleSsrO1xuICBjb25zdCBsb2FkZXI6IFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHsgc2hpbW1lclJvd3M6IFtdIH07XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7XG4gICAgY29uc3Qgcm93ID0ge1xuICAgICAga2V5OiBgJHtrZXl9OiR7aX1gLFxuICAgICAgc2hpbW1lcnM6IFtdIGFzIHsga2V5OiBzdHJpbmc7IHdpZHRoOiBudW1iZXIgfVtdLFxuICAgIH07XG4gICAgY29uc3Qgd29yZHMgPSBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDMpO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgd29yZHM7IGorKykge1xuICAgICAgY29uc3Qgd2lkdGggPSAxMiArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDk2KTtcbiAgICAgIHJvdy5zaGltbWVycy5wdXNoKHtcbiAgICAgICAga2V5OiBgJHtrZXl9OiR7an1gLFxuICAgICAgICB3aWR0aCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsb2FkZXIuc2hpbW1lclJvd3MucHVzaChyb3cpO1xuICB9XG4gIHJldHVybiBsb2FkZXI7XG59XG5cbmV4cG9ydCBjb25zdCBTZWFyY2hQYW5lOiBSZWFjdC5GQzxTZWFyY2hQYW5lUHJvcHM+ID0gKHtcbiAgb25TZWFyY2gsXG4gIG9uVHJhY2tpbmdDbGljayxcbiAgc2VhcmNoQnV0dG9uUmVmLFxuICB0b2dnbGVTZWFyY2gsXG4gIG9uU2VhcmNoQXNZb3VUeXBlLFxufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpO1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgY29uc3QgW2F1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zLCBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9uc10gPSB1c2VTdGF0ZTxcbiAgICBBdXRvY29tcGxldGVTdWdnZXN0aW9uW11cbiAgPihbXSk7XG4gIGNvbnN0IFtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLCBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzXSA9XG4gICAgdXNlU3RhdGU8U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IFtzZWFyY2hSZXN1bHRDbGlja2VkLCBzZXRTZWFyY2hSZXN1bHRDbGlja2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG5cbiAgY29uc3QgaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrID1cbiAgICBvblNlYXJjaEFzWW91VHlwZSAmJiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzICYmICFzZWFyY2hSZXN1bHRDbGlja2VkO1xuXG4gIGNvbnN0IGNsb3NlU2VhcmNoID0gYXN5bmMgKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHVzZXIgbWFkZSBhIHNlYXJjaCBhbmQgdGhlbiBjbG9zZWQgc2VhcmNoIHBhbmVcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRvZ2dsZVNlYXJjaCgpO1xuICAgIC8vIGFkZHMgYSBsaXR0bGUgZGVsYXkgYmV0d2VlbiBjbG9zaW5nIHRoZSBzZWFyY2ggcGFuZSBhbmQgZm9jdXNpbmcgb24gdGhlIGJ1dHRvblxuICAgIC8vIHRvIHByZXZlbnQgdGhlIHNlYXJjaCBwYW5lIGZyb20gaW1tZWRpYXRlbHkgb3BlbmluZyBhZ2FpblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHNlYXJjaEJ1dHRvblJlZiAmJiBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgc2VhcmNoQnV0dG9uUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZU9uRXNjSGFuZGxlcihjbG9zZVNlYXJjaCk7XG5cbiAgY29uc3Qgb25Nb3VzZURvd25PdXRzaWRlID0gKHsgdGFyZ2V0IH06IE1vdXNlRXZlbnQpID0+IHtcbiAgICBjb25zdCBoYW5kbGVPdXRzaWRlQ2xpY2sgPSAoKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgICFkb2N1bWVudFxuICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKCdbZGF0YS10ZXN0aWQ9XCJoZWFkZXItc2VhcmNoLWRyb3Bkb3duXCJdJylcbiAgICAgICAgICA/LmNvbnRhaW5zKHRhcmdldCBhcyBIVE1MRWxlbWVudCkgJiZcbiAgICAgICAgdGFyZ2V0ICE9PSBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnRcbiAgICAgICkge1xuICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgfVxuXG4gICAgICB0YXJnZXQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVPdXRzaWRlQ2xpY2spO1xuICAgIH07XG5cbiAgICB0YXJnZXQ/LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVPdXRzaWRlQ2xpY2spO1xuICB9O1xuXG4gIGNvbnN0IG5hdmlnYXRlVG9TZWFyY2ggPSAoc2VhcmNoVGVybTogc3RyaW5nLCBmcm9tUHJldlNlYXJjaD86IHN0cmluZykgPT4ge1xuICAgIG9uU2VhcmNoKHNlYXJjaFRlcm0sIGZyb21QcmV2U2VhcmNoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2U6IFJlYWN0LkNoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICBzZXRWYWx1ZShldnQudGFyZ2V0LnZhbHVlKTtcbiAgICAvLyByZXNldCB0byBmYWxzZSB3aGVuIHRoZSBzZWFyY2ggcXVlcnkgY2hhbmdlc1xuICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQoZmFsc2UpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdDogUmVhY3QuRm9ybUV2ZW50SGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB0aGUgdXNlciBzdWJtaXRzIHRoZSBmb3JtIHRvIGNhcHR1cmUgY29tcGxldGUgcXVlcnlcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgfTtcblxuICBjb25zdCBjbGVhcklucHV0ID0gKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCBiZWZvcmUgdXNlciBjbGVhcnMgaW5wdXRcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIHNldFZhbHVlKCcnKTtcbiAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgLy8gcmVzZXQgdGhlIGNvbnRleHQgd2l0aCBlbXB0eSB2YWx1ZXNcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICBxdWVyeTogJycsXG4gICAgICBzZWFyY2hJZDogJycsXG4gICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICAvLyBhbmQgdHJhY2sgc2VhcmNoIGV2ZW50IGlmIHVzZXIgbWFkZSBhIHNlYXJjaFxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiAoKSA9PiB7XG4gICAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgfVxuXG4gICAgICB0b2dnbGVTZWFyY2goKTtcbiAgICB9LFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIGRvbid0IHRyYWNrIGlmIGEgcmVzdWx0IHdhcyBjbGlja2VkIG9yIGlmIHdlIGRvbid0IGhhdmUgc2VhcmNoIHJlc3VsdHNcbiAgICBpZiAoXG4gICAgICBzZWFyY2hSZXN1bHRDbGlja2VkIHx8XG4gICAgICAhb25TZWFyY2hBc1lvdVR5cGUgfHxcbiAgICAgICFzZWFyY2hBc1lvdVR5cGVSZXN1bHRzIHx8XG4gICAgICAhdmFsdWVUcmltbWVkLmxlbmd0aFxuICAgIClcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLXJldHVyblxuICAgICAgcmV0dXJuO1xuICB9LCBbXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxuICAgIHZhbHVlVHJpbW1lZCxcbiAgICBvblNlYXJjaEFzWW91VHlwZSxcbiAgXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpbnB1dFJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgIHNlYXJjaFdvcmtlci5pbml0KCk7XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghdmFsdWVUcmltbWVkLmxlbmd0aCkge1xuICAgICAgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhudWxsKTtcbiAgICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgICAgcXVlcnk6ICcnLFxuICAgICAgICBzZWFyY2hJZDogJycsXG4gICAgICAgIHJlc3VsdHNDb3VudDogMCxcbiAgICAgICAgcXVlcnlMb2FkVGltZTogMCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBsZXQgY2xlYXJBdXRvY29tcGxldGUgPSB0cnVlO1xuICAgIGxldCBjbGVhclNlYXJjaEFzWW91VHlwZSA9IHRydWU7XG5cbiAgICBsZXQgc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5OiBOb2RlSlMuVGltZW91dDtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2l0aCBhIHNtYWxsIGRlbGF5IHdoZW4gdGhlcmUgYXJlIG5vIHJlc3VsdHNcbiAgICAgIGlmIChcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUgJiZcbiAgICAgICAgcmVzdWx0cy50b3AubGVuZ3RoID09PSAwICYmXG4gICAgICAgICFzZWFyY2hSZXN1bHRDbGlja2VkXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHF1ZXJ5TG9hZFRpbWUgfSA9IHJlc3VsdHM7XG4gICAgICAgIHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICghY2FuY2VsKSB7XG4gICAgICAgICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIDAsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICAgIGNsZWFyVGltZW91dChzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXkpO1xuICAgIH07XG4gIH0sIFtcbiAgICB2YWx1ZVRyaW1tZWQsXG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyxcbiAgXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICBiZz1cInNoYWRvdy1zZWNvbmRhcnlcIlxuICAgICAgICBoZWlnaHQ9XCIxMDB2aFwiXG4gICAgICAgIHBvc2l0aW9uPVwiZml4ZWRcIlxuICAgICAgICAvLyBXZSBhZGQgNXJlbSBoZXJlIGluIGNhc2UgdGhlcmUncyBzb21lIHNvcnQgb2YgYnJhbmRlZCBiYW5uZXIgYWJvdmUgc2VhcmNoXG4gICAgICAgIC8vIFRoZSBzZWFyY2ggYXJlYSBpcyBtdWNoIHRhbGxlciB0aGFuIDVyZW0gc28gdGhpcyBpcyBhIHNhZmUgYW1vdW50IG9mIHBhZGRpbmdcbiAgICAgICAgdG9wPXtgY2FsYygke3RoZW1lLmVsZW1lbnRzLmhlYWRlckhlaWdodH0gKyA1cmVtKWB9XG4gICAgICAgIHdpZHRoPXsxfVxuICAgICAgLz5cbiAgICAgIDxGb2N1c1RyYXBcbiAgICAgICAgb25Fc2NhcGVLZXk9e2Nsb3NlU2VhcmNofVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249XCJhYnNvbHV0ZVwiXG4gICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICBtYXhIZWlnaHQ9e3sgXzogJ2NhbGMoMTAwdmggLSA2M3B4KScsIG1kOiAnY2FsYygxMDB2aCAtIDgwcHgpJyB9fVxuICAgICAgICAgIG92ZXJmbG93PVwiYXV0b1wiXG4gICAgICAgID5cbiAgICAgICAgICA8Qm94IGJvcmRlcj1cIm5vbmVcIiB3aWR0aD1cImF1dG9cIj5cbiAgICAgICAgICAgIDxRdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiYmFzZWxpbmVcIlxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiZ3JheS02MDBcIlxuICAgICAgICAgICAgICAgIGJvcmRlclN0eWxlQm90dG9tPVwic29saWRcIlxuICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoQm90dG9tPVwiMXB4XCJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgIGhlaWdodD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgICB3aWR0aD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8Rm9ybVxuICAgICAgICAgICAgICAgICAgYWN0aW9uPVwiL3NlYXJjaFwiXG4gICAgICAgICAgICAgICAgICBpZD1cInNlYXJjaC1mb3JtXCJcbiAgICAgICAgICAgICAgICAgIG1sPXs4fVxuICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0eWxlZElucHV0XG4gICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcj1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAyMCwgbWQ6IDI2IH19XG4gICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ9XCJib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJoZWFkZXItc2VhcmNoLWJhclwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJxdWVyeVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGUpID0+IG9uS2V5RG93bihlKX1cbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3NlYXJjaFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICAgICAgICByZWY9e2lucHV0UmVmfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L0Zvcm0+XG4gICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgIGljb249e01pbmlEZWxldGVJY29ufVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyIHNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICB0aXA9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwUHJvcHM9e3tcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50OiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogJ2Zsb2F0aW5nJyxcbiAgICAgICAgICAgICAgICAgICAgbmFycm93OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDIsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17Y2xlYXJJbnB1dH1cbiAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgPC9RdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8U3VnZ2VzdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgIHt2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8RmxleEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCIgYXM9XCJ1bFwiIGxpc3RTdHlsZT1cIm5vbmVcIiBwPXswfT5cbiAgICAgICAgICAgICAgICAgIHthdXRvQ29tcGxldGVTdWdnZXN0aW9ucy5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtzLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ2F1dG9jb21wbGV0ZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbWlib2xkU2VhcmNoSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgbWI9ezIgYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9ezE0fVxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9ezh9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICAgICAgICAgICAgICAgICAgbXI9ezEyfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPEhpZ2hsaWdodGVkVGV4dCBzdWdnZXN0aW9uPXtzfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgIHsoc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy50b3AubGVuZ3RoID4gMCkgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPFRleHQgYXM9XCJoMlwiIGZvbnRTaXplPXsyMH0gbWI9ezE2fSBtdD17MjR9PlxuICAgICAgICAgICAgICAgICAgICAgIFRvcCByZXN1bHRzXG4gICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgICBhcz1cInVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBsaXN0U3R5bGU9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICBwPXswfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc2VhcmNoQXNZb3VUeXBlTG9hZGVyPy5zaGltbWVyUm93cy5tYXAoKHIpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lTG9hZGVyTGkga2V5PXtyLmtleX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ci5zaGltbWVycy5tYXAoKHdvcmQpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNoaW1tZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezMwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5PXs4IGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXt3b3JkLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17d29yZC53aWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RmFtaWx5PVwiYWNjZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yPVwidGV4dC1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAxMCBhcyAxNiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImJvcmRlci1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI9ezF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1cz1cInhsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHg9ezE2fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5PXswLjF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVMb2FkZXJMaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy50b3AubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnF1ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJsaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZWx5UmVkaXJlY3Qocy51cmxQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnOiBzLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgY29udGVudF9pZDogcy5jb250ZW50SWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlbHlSZWRpcmVjdChzLnVybFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmFkZ2Ugc2l6ZT1cInNtXCIgdmFyaWFudD1cInRlcnRpYXJ5XCIgbWw9ezEyfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3MudHlwZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmFkZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge3NlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggPT09IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPEJveCBmb250U2l6ZT17eyBfOiAyMCwgc206IDI2IH19IG10PXswfSBtYj17NDh9PlxuICAgICAgICAgICAgICAgICAgICAgIHtgV2UgY291bGRuJ3QgZmluZCBhIG1hdGNoIGZvciBgfVxuICAgICAgICAgICAgICAgICAgICAgIDxUZXh0IGZvbnRXZWlnaHQ9XCJib2xkXCI+e2BcIiR7dmFsdWVUcmltbWVkfS5cImB9PC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICcgVHJ5IGFub3RoZXIga2V5d29yZCwgb3Igc2VlIHdoYXQgb3VyIG1lbWJlcnMgYXJlIGxlYXJuaW5nLidcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPE1lbnUgYm9yZGVyPVwibm9uZVwiIHZhcmlhbnQ9XCJwb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgPFBvcHVsYXJTZWFyY2hlc1xuICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaD17bmF2aWdhdGVUb1NlYXJjaH1cbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPFBvcHVsYXJDb250ZW50IG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfSAvPlxuICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7ISFzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy50b3AubGVuZ3RoICYmIChcbiAgICAgICAgICAgICAgPFN0cm9rZUJ1dHRvblxuICAgICAgICAgICAgICAgIG15PXsxNn1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3ZpZXdfYWxsX3Jlc3VsdHMnLCB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaCh2YWx1ZSwgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQpO1xuICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgVmlldyBhbGwgcmVzdWx0c1xuICAgICAgICAgICAgICA8L1N0cm9rZUJ1dHRvbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8UXVpekFuZEhlbHBDZW50ZXJMaW5rc1xuICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja31cbiAgICAgICAgICAgICAgaGFuZGxlQ2xvc2VEcm9wZG93bj17Y2xvc2VTZWFyY2h9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3VnZ2VzdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgPC9Cb3g+XG4gICAgICA8L0ZvY3VzVHJhcD5cbiAgICA8Lz5cbiAgKTtcbn07XG4iXX0= */");
62
63
  const InlineResultLi = /*#__PURE__*/_styled(MenuItem, {
63
64
  target: "e1e5b20r3",
64
65
  label: "InlineResultLi"
@@ -69,7 +70,7 @@ const InlineResultLi = /*#__PURE__*/_styled(MenuItem, {
69
70
  '&:focus-visible:after': {
70
71
  left: -4
71
72
  }
72
- }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQStEdUIiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVVybENoYW5nZURldGVjdGlvbiB9IGZyb20gJy4vaG9va3MvdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uJztcbmltcG9ydCB7IFF1aXpBbmRIZWxwQ2VudGVyTGlua3MgfSBmcm9tICcuL1F1aXpBbmRIZWxwQ2VudGVyTGlua3MnO1xuaW1wb3J0IHsgc2FmZWx5UmVkaXJlY3QgfSBmcm9tICcuL3NhZmVseVJlZGlyZWN0JztcbmltcG9ydCB7IHNlYXJjaFdvcmtlciB9IGZyb20gJy4vU2VhcmNoV29ya2VyJztcbmltcG9ydCB0eXBlIHtcbiAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbixcbiAgU2VhcmNoQXNZb3VUeXBlUmVzdWx0cyxcbn0gZnJvbSAnLi9TZWFyY2hXb3JrZXIvdHlwZXMnO1xuaW1wb3J0IHsgU2VhcmNoUGFuZVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IEZvcm0gPSBCb3gud2l0aENvbXBvbmVudCgnZm9ybScpO1xuY29uc3QgSW5wdXQgPSBCb3gud2l0aENvbXBvbmVudCgnaW5wdXQnKTtcblxuY29uc3QgUXVlcnlDb250YWluZXIgPSBzdHlsZWQoQ29udGVudENvbnRhaW5lcikoXG4gIGNzcyh7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgcHQ6IDE2LFxuICAgIHBiOiB7IF86IDAsIG1kOiAyNCB9LFxuICAgIHB4OiB7IF86IDI0IH0sXG4gIH0pXG4pO1xuXG5jb25zdCBTdWdnZXN0aW9uQ29udGFpbmVyID0gc3R5bGVkKENvbnRlbnRDb250YWluZXIpKFxuICBjc3Moe1xuICAgIHB0OiAxNixcbiAgICBwYjogeyBfOiAwLCBtZDogMjQgfSxcbiAgICBweDogeyBfOiAyNCB9LFxuICB9KVxuKTtcblxuY29uc3QgU3R5bGVkSW5wdXQgPSBzdHlsZWQoSW5wdXQpKFxuICBjc3Moe1xuICAgIG91dGxpbmU6IGBub25lYCxcbiAgICAnJjo6cGxhY2Vob2xkZXInOiB7XG4gICAgICB0ZXh0Q29sb3I6IHRoZW1lLmNvbG9yc1sndGV4dC1zZWNvbmRhcnknXSBhcyBuZXZlcixcbiAgICB9LFxuICB9KVxuKTtcblxuY29uc3QgSW5saW5lUmVzdWx0TGkgPSBzdHlsZWQoTWVudUl0ZW0pKFxuICBjc3Moe1xuICAgIHBsOiAwLFxuICAgIHB5OiA4LFxuICAgIGZvbnRTaXplOiAxNixcbiAgICAnJjpmb2N1cy12aXNpYmxlOmFmdGVyJzoge1xuICAgICAgbGVmdDogLTQsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IElubGluZUxvYWRlckxpID0gc3R5bGVkLmxpKFxuICBjc3Moe1xuICAgIGxpc3RTdHlsZVR5cGU6ICdub25lJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZ2FwOiAxMixcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgfSlcbik7XG5cbmV4cG9ydCBjb25zdCBTZW1pYm9sZFNlYXJjaEljb24gPSBzdHlsZWQoU2VhcmNoSWNvbilgXG4gIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gIGNpcmNsZSxcbiAgcGF0aCB7XG4gICAgc3Ryb2tlLXdpZHRoOiAycHg7XG4gIH1cbiAgcmVjdCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTJweCwgLTJweCk7XG4gICAgaGVpZ2h0OiBjYWxjKDEwMCUgKyA0cHgpO1xuICAgIHdpZHRoOiBjYWxjKDEwMCUgKyA0cHgpO1xuICB9XG5gO1xuXG5jb25zdCBFbGxpcHNpc0JveCA9IHN0eWxlZChCb3gpYFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbmA7XG5cbmNvbnN0IEhpZ2hsaWdodGVkVGV4dCA9ICh7XG4gIHN1Z2dlc3Rpb246IHsgdGl0bGUsIHNlZ21lbnRzIH0sXG59OiB7XG4gIHN1Z2dlc3Rpb246IEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb247XG59KSA9PiB7XG4gIGNvbnN0IG1vZGUgPSB1c2VDdXJyZW50TW9kZSgpO1xuICBjb25zdCBoaWdobGlnaHRDb2xvciA9IG1vZGUgPT09ICdkYXJrJyA/ICdoeXBlcicgOiAneWVsbG93JztcblxuICByZXR1cm4gKFxuICAgIDxGbGV4Qm94PlxuICAgICAgPEVsbGlwc2lzQm94XG4gICAgICAgIG1heFdpZHRoPVwiY2FsYygxMDB2dyAtIDEyOHB4KVwiXG4gICAgICAgIHdoaXRlU3BhY2U9XCJwcmVcIlxuICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICBvdmVyZmxvdz1cImhpZGRlblwiXG4gICAgICA+XG4gICAgICAgIHtzZWdtZW50cy5tYXAoKHNlZ21lbnQsIGkpID0+IChcbiAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAga2V5PXtgJHt0aXRsZX06JHtpLnRvU3RyaW5nKCl9YH1cbiAgICAgICAgICAgIGxpbmVIZWlnaHQ9XCJ0aXRsZVwiXG4gICAgICAgICAgICB7Li4uKHNlZ21lbnQuaGlnaGxpZ2h0XG4gICAgICAgICAgICAgID8geyBiZzogaGlnaGxpZ2h0Q29sb3IsIGZvbnRXZWlnaHQ6ICdib2xkJyB9XG4gICAgICAgICAgICAgIDoge30pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtzZWdtZW50LnZhbHVlfVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgKSl9XG4gICAgICA8L0VsbGlwc2lzQm94PlxuICAgICAgPFRleHQgc2NyZWVucmVhZGVyPnt0aXRsZX08L1RleHQ+XG4gICAgPC9GbGV4Qm94PlxuICApO1xufTtcblxudHlwZSBTZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSB7XG4gIHNoaW1tZXJSb3dzOiB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgc2hpbW1lcnM6IHtcbiAgICAgIGtleTogc3RyaW5nO1xuICAgICAgd2lkdGg6IG51bWJlcjtcbiAgICB9W107XG4gIH1bXTtcbn07XG5cbmxldCBsb2FkZXJLZXkgPSAwO1xuZnVuY3Rpb24gcm5kTG9hZGVyKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGx1c3BsdXNcbiAgY29uc3Qga2V5ID0gbG9hZGVyS2V5Kys7XG4gIGNvbnN0IGxvYWRlcjogU2VhcmNoQXNZb3VUeXBlTG9hZGVyID0geyBzaGltbWVyUm93czogW10gfTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCA1OyBpKyspIHtcbiAgICBjb25zdCByb3cgPSB7XG4gICAgICBrZXk6IGAke2tleX06JHtpfWAsXG4gICAgICBzaGltbWVyczogW10gYXMgeyBrZXk6IHN0cmluZzsgd2lkdGg6IG51bWJlciB9W10sXG4gICAgfTtcbiAgICBjb25zdCB3b3JkcyA9IE1hdGguY2VpbChNYXRoLnJhbmRvbSgpICogMyk7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCB3b3JkczsgaisrKSB7XG4gICAgICBjb25zdCB3aWR0aCA9IDEyICsgTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogOTYpO1xuICAgICAgcm93LnNoaW1tZXJzLnB1c2goe1xuICAgICAgICBrZXk6IGAke2tleX06JHtqfWAsXG4gICAgICAgIHdpZHRoLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGxvYWRlci5zaGltbWVyUm93cy5wdXNoKHJvdyk7XG4gIH1cbiAgcmV0dXJuIGxvYWRlcjtcbn1cblxuZXhwb3J0IGNvbnN0IFNlYXJjaFBhbmU6IFJlYWN0LkZDPFNlYXJjaFBhbmVQcm9wcz4gPSAoe1xuICBvblNlYXJjaCxcbiAgb25UcmFja2luZ0NsaWNrLFxuICBzZWFyY2hCdXR0b25SZWYsXG4gIHRvZ2dsZVNlYXJjaCxcbiAgb25TZWFyY2hBc1lvdVR5cGUsXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgnJyk7XG4gIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBbYXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMsIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zXSA9IHVzZVN0YXRlPFxuICAgIEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb25bXVxuICA+KFtdKTtcblxuICBjb25zdCBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0cywgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0c10gPVxuICAgIHVzZVN0YXRlPFNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCBjbG9zZVNlYXJjaCA9IGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCB0b2dnbGVTZWFyY2goKTtcbiAgICAvLyBhZGRzIGEgbGl0dGxlIGRlbGF5IGJldHdlZW4gY2xvc2luZyB0aGUgc2VhcmNoIHBhbmUgYW5kIGZvY3VzaW5nIG9uIHRoZSBidXR0b25cbiAgICAvLyB0byBwcmV2ZW50IHRoZSBzZWFyY2ggcGFuZSBmcm9tIGltbWVkaWF0ZWx5IG9wZW5pbmcgYWdhaW5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmIChzZWFyY2hCdXR0b25SZWYgJiYgc2VhcmNoQnV0dG9uUmVmPy5jdXJyZW50KSB7XG4gICAgICAgIHNlYXJjaEJ1dHRvblJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgICAgfVxuICAgIH0sIDEwKTtcbiAgfTtcblxuICBjb25zdCBvbktleURvd24gPSB1c2VPbkVzY0hhbmRsZXIoY2xvc2VTZWFyY2gpO1xuXG4gIGNvbnN0IG9uTW91c2VEb3duT3V0c2lkZSA9ICh7IHRhcmdldCB9OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgaGFuZGxlT3V0c2lkZUNsaWNrID0gKCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICAhZG9jdW1lbnRcbiAgICAgICAgICAucXVlcnlTZWxlY3RvcignW2RhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXScpXG4gICAgICAgICAgPy5jb250YWlucyh0YXJnZXQgYXMgSFRNTEVsZW1lbnQpICYmXG4gICAgICAgIHRhcmdldCAhPT0gc2VhcmNoQnV0dG9uUmVmPy5jdXJyZW50XG4gICAgICApIHtcbiAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgIH1cblxuICAgICAgdGFyZ2V0Py5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlT3V0c2lkZUNsaWNrKTtcbiAgICB9O1xuXG4gICAgdGFyZ2V0Py5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlT3V0c2lkZUNsaWNrKTtcbiAgfTtcblxuICBjb25zdCBuYXZpZ2F0ZVRvU2VhcmNoID0gKHNlYXJjaFRlcm06IHN0cmluZywgZnJvbVByZXZTZWFyY2g/OiBzdHJpbmcpID0+IHtcbiAgICBvblNlYXJjaChzZWFyY2hUZXJtLCBmcm9tUHJldlNlYXJjaCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlOiBSZWFjdC5DaGFuZ2VFdmVudEhhbmRsZXI8SFRNTElucHV0RWxlbWVudD4gPSAoZXZ0KSA9PiB7XG4gICAgc2V0VmFsdWUoZXZ0LnRhcmdldC52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlU3VibWl0OiBSZWFjdC5Gb3JtRXZlbnRIYW5kbGVyID0gKGV2ZW50KSA9PiB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gIH07XG5cbiAgY29uc3QgY2xlYXJJbnB1dCA9ICgpID0+IHtcbiAgICBzZXRWYWx1ZSgnJyk7XG4gICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiB0b2dnbGVTZWFyY2gsXG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaW5wdXRSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICBzZWFyY2hXb3JrZXIuaW5pdCgpO1xuICB9LCBbXSk7XG5cbiAgY29uc3QgdmFsdWVUcmltbWVkID0gdmFsdWUudHJpbSgpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF2YWx1ZVRyaW1tZWQubGVuZ3RoKSB7XG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBsZXQgY2xlYXJBdXRvY29tcGxldGUgPSB0cnVlO1xuICAgIGxldCBjbGVhclNlYXJjaEFzWW91VHlwZSA9IHRydWU7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8qXG4gICAgICAgKiBXYWl0IDEwIHNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICAvLyBvblNlYXJjaEFzWW91VHlwZSBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgdHJhY2tpbmdcbiAgICAgIGlmIChvblNlYXJjaEFzWW91VHlwZSkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAvKlxuICAgICAgICAgICAqIFRoaXMgdGltZW91dCBhbmQgY2FuY2VsIGNoZWNrIGlzIGEgZGVib3VuY2UgdGhhdCBlbnN1cmVzIHdlIGRvIG5vdFxuICAgICAgICAgICAqIHNlbmQgdHJhY2tpbmcgZXZlbnRzIGZvciBldmVyeSBrZXlzdHJva2UsIGJ1dCBvbmx5IHdoZW4gdGhlIHVzZXJcbiAgICAgICAgICAgKiBzdG9wcyB0eXBpbmcgZm9yIDI1MG1zLiBXZSBwcmV2aW91c2x5IHVzZWQgdGhpcyBkZWJvdW5jZSBmb3IgdGhlXG4gICAgICAgICAgICogc2VhcmNoLWFzLXlvdS10eXBlIHF1ZXJ5IGFzIGEgd2hvbGUsIGJ1dCB0aGlzIGlzIG5vdCBuZWNlc3NhcnlcbiAgICAgICAgICAgKiBmcm9tIGEgbG9hZCBzdGFuZHBvaW50IHNpbmNlIHdlIGhhdmUgY2FjaGluZyBpbXBsZW1lbnRlZCBvbiBib3RoXG4gICAgICAgICAgICogY2xpZW50IGFuZCBzZXJ2ZXIuIEFwcGx5aW5nIHRoZSBkZWJvdW5jZSBvbmx5IGZvciB0aGlzIGNhbGxiYWNrXG4gICAgICAgICAgICogYWxsb3dzIHVzIHRvIG1haW50YWluIHRoZSBtb3N0IHNuYXBweSB1c2VyIGV4cGVyaWVuY2UgYW5kIHN0aWxsXG4gICAgICAgICAgICogaGF2ZSBub24tbm9pc3kgdHJhY2tpbmcuXG4gICAgICAgICAgICovXG4gICAgICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuO1xuICAgICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9IHJlc3VsdHM7XG4gICAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgICB9LCAyNTApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNhbmNlbCA9IHRydWU7XG4gICAgfTtcbiAgfSwgW3ZhbHVlVHJpbW1lZCwgb25TZWFyY2hBc1lvdVR5cGVdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIGJnPVwic2hhZG93LXNlY29uZGFyeVwiXG4gICAgICAgIGhlaWdodD1cIjEwMHZoXCJcbiAgICAgICAgcG9zaXRpb249XCJmaXhlZFwiXG4gICAgICAgIC8vIFdlIGFkZCA1cmVtIGhlcmUgaW4gY2FzZSB0aGVyZSdzIHNvbWUgc29ydCBvZiBicmFuZGVkIGJhbm5lciBhYm92ZSBzZWFyY2hcbiAgICAgICAgLy8gVGhlIHNlYXJjaCBhcmVhIGlzIG11Y2ggdGFsbGVyIHRoYW4gNXJlbSBzbyB0aGlzIGlzIGEgc2FmZSBhbW91bnQgb2YgcGFkZGluZ1xuICAgICAgICB0b3A9e2BjYWxjKCR7dGhlbWUuZWxlbWVudHMuaGVhZGVySGVpZ2h0fSArIDVyZW0pYH1cbiAgICAgICAgd2lkdGg9ezF9XG4gICAgICAvPlxuICAgICAgPEZvY3VzVHJhcFxuICAgICAgICBvbkVzY2FwZUtleT17Y2xvc2VTZWFyY2h9XG4gICAgICAgIG9uQ2xpY2tPdXRzaWRlPXtvbk1vdXNlRG93bk91dHNpZGV9XG4gICAgICAgIGFsbG93UGFnZUludGVyYWN0aW9uXG4gICAgICA+XG4gICAgICAgIDxCb3hcbiAgICAgICAgICBiZz1cImJhY2tncm91bmRcIlxuICAgICAgICAgIGJvcmRlckNvbG9yQm90dG9tPVwiYm9yZGVyLXByaW1hcnlcIlxuICAgICAgICAgIGJvcmRlckNvbG9yVG9wPVwiYm9yZGVyLXRlcnRpYXJ5XCJcbiAgICAgICAgICBib3JkZXJTdHlsZT1cInNvbGlkXCJcbiAgICAgICAgICBib3JkZXJXaWR0aD1cIjJweCAwIDFweFwiXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJoZWFkZXItc2VhcmNoLWRyb3Bkb3duXCJcbiAgICAgICAgICBwb3NpdGlvbj17eyBfOiAnZml4ZWQnLCBtZDogJ2Fic29sdXRlJyB9fVxuICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgbWF4SGVpZ2h0PXt7IF86ICdjYWxjKDEwMHZoIC0gNjNweCknLCBtZDogJ2NhbGMoMTAwdmggLSA4MHB4KScgfX1cbiAgICAgICAgICBvdmVyZmxvdz1cImF1dG9cIlxuICAgICAgICAgIHpJbmRleD17MTB9IC8vIGVuc3VyZSBkcm9wZG93biBpcyBhYm92ZSB0aGUgcGFnZSBjb250ZW50XG4gICAgICAgID5cbiAgICAgICAgICA8Qm94IGJvcmRlcj1cIm5vbmVcIiB3aWR0aD1cImF1dG9cIj5cbiAgICAgICAgICAgIDxRdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiYmFzZWxpbmVcIlxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiZ3JheS02MDBcIlxuICAgICAgICAgICAgICAgIGJvcmRlclN0eWxlQm90dG9tPVwic29saWRcIlxuICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoQm90dG9tPVwiMXB4XCJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgIGhlaWdodD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgICB3aWR0aD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8Rm9ybVxuICAgICAgICAgICAgICAgICAgYWN0aW9uPVwiL3NlYXJjaFwiXG4gICAgICAgICAgICAgICAgICBpZD1cInNlYXJjaC1mb3JtXCJcbiAgICAgICAgICAgICAgICAgIG1sPXs4fVxuICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0eWxlZElucHV0XG4gICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcj1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAyMCwgbWQ6IDI2IH19XG4gICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ9XCJib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJoZWFkZXItc2VhcmNoLWJhclwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJxdWVyeVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGUpID0+IG9uS2V5RG93bihlKX1cbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3NlYXJjaFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICAgICAgICByZWY9e2lucHV0UmVmfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L0Zvcm0+XG4gICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgIGljb249e01pbmlEZWxldGVJY29ufVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyIHNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICB0aXA9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwUHJvcHM9e3tcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50OiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogJ2Zsb2F0aW5nJyxcbiAgICAgICAgICAgICAgICAgICAgbmFycm93OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDIsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17Y2xlYXJJbnB1dH1cbiAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgPC9RdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8U3VnZ2VzdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgIHt2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8RmxleEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCIgYXM9XCJ1bFwiIGxpc3RTdHlsZT1cIm5vbmVcIiBwPXswfT5cbiAgICAgICAgICAgICAgICAgIHthdXRvQ29tcGxldGVTdWdnZXN0aW9ucy5tYXAoKHMpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtzLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoeyB2YWx1ZTogcy50aXRsZSB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7IHZhbHVlOiBzLnRpdGxlIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW1pYm9sZFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1iPXsyIGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPXsxNH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXs4fVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1yPXsxMn1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICB7KHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0IGFzPVwiaDJcIiBmb250U2l6ZT17MjB9IG1iPXsxNn0gbXQ9ezI0fT5cbiAgICAgICAgICAgICAgICAgICAgICBUb3AgcmVzdWx0c1xuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbj1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJ1bFwiXG4gICAgICAgICAgICAgICAgICAgICAgbGlzdFN0eWxlPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcD17MH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNlYXJjaEFzWW91VHlwZUxvYWRlcj8uc2hpbW1lclJvd3MubWFwKChyKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZUxvYWRlckxpIGtleT17ci5rZXl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Iuc2hpbW1lcnMubWFwKCh3b3JkKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTaGltbWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXszMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweT17OCBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17d29yZC5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9e3dvcmQud2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseT1cImFjY2VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDb2xvcj1cInRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMTAgYXMgMTYgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I9XCJib3JkZXItc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyPXsxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM9XCJ4bFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB4PXsxNn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eT17MC4xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lTG9hZGVyTGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLm1hcCgocywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5xdWVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwibGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3NlYXJjaF9hc195b3VfdHlwZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnOiBzLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4ocy5jb250ZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlbHlSZWRpcmVjdChzLnVybFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3NlYXJjaF9hc195b3VfdHlwZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHMuc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4ocy5jb250ZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZSBzaXplPVwic21cIiB2YXJpYW50PVwidGVydGlhcnlcIiBtbD17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cy50eXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8Qm94IGZvbnRTaXplPXt7IF86IDIwLCBzbTogMjYgfX0gbXQ9ezB9IG1iPXs0OH0+XG4gICAgICAgICAgICAgICAgICAgICAge2BXZSBjb3VsZG4ndCBmaW5kIGEgbWF0Y2ggZm9yIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPFRleHQgZm9udFdlaWdodD1cImJvbGRcIj57YFwiJHt2YWx1ZVRyaW1tZWR9LlwiYH08L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgJyBUcnkgYW5vdGhlciBrZXl3b3JkLCBvciBzZWUgd2hhdCBvdXIgbWVtYmVycyBhcmUgbGVhcm5pbmcuJ1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICA8UG9wdWxhclNlYXJjaGVzXG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoPXtuYXZpZ2F0ZVRvU2VhcmNofVxuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHshIXNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICA8U3Ryb2tlQnV0dG9uXG4gICAgICAgICAgICAgICAgbXk9ezE2fVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygndmlld19hbGxfcmVzdWx0cycsIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBWaWV3IGFsbCByZXN1bHRzXG4gICAgICAgICAgICAgIDwvU3Ryb2tlQnV0dG9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxRdWl6QW5kSGVscENlbnRlckxpbmtzXG4gICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICBoYW5kbGVDbG9zZURyb3Bkb3duPXtjbG9zZVNlYXJjaH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TdWdnZXN0aW9uQ29udGFpbmVyPlxuICAgICAgICA8L0JveD5cbiAgICAgIDwvRm9jdXNUcmFwPlxuICAgIDwvPlxuICApO1xufTtcbiJdfQ== */");
73
+ }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdFdUIiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVVybENoYW5nZURldGVjdGlvbiB9IGZyb20gJy4vaG9va3MvdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uJztcbmltcG9ydCB7IFF1aXpBbmRIZWxwQ2VudGVyTGlua3MgfSBmcm9tICcuL1F1aXpBbmRIZWxwQ2VudGVyTGlua3MnO1xuaW1wb3J0IHsgc2FmZWx5UmVkaXJlY3QgfSBmcm9tICcuL3NhZmVseVJlZGlyZWN0JztcbmltcG9ydCB7IHVzZVNlYXJjaFRyYWNraW5nQ29udGV4dCB9IGZyb20gJy4vU2VhcmNoVHJhY2tpbmdQcm92aWRlcic7XG5pbXBvcnQgeyBzZWFyY2hXb3JrZXIgfSBmcm9tICcuL1NlYXJjaFdvcmtlcic7XG5pbXBvcnQgdHlwZSB7XG4gIEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb24sXG4gIFNlYXJjaEFzWW91VHlwZVJlc3VsdHMsXG59IGZyb20gJy4vU2VhcmNoV29ya2VyL3R5cGVzJztcbmltcG9ydCB7IFNlYXJjaFBhbmVQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBGb3JtID0gQm94LndpdGhDb21wb25lbnQoJ2Zvcm0nKTtcbmNvbnN0IElucHV0ID0gQm94LndpdGhDb21wb25lbnQoJ2lucHV0Jyk7XG5cbmNvbnN0IFF1ZXJ5Q29udGFpbmVyID0gc3R5bGVkKENvbnRlbnRDb250YWluZXIpKFxuICBjc3Moe1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIHB0OiAxNixcbiAgICBwYjogeyBfOiAwLCBtZDogMjQgfSxcbiAgICBweDogeyBfOiAyNCB9LFxuICB9KVxuKTtcblxuY29uc3QgU3VnZ2VzdGlvbkNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKShcbiAgY3NzKHtcbiAgICBwdDogMTYsXG4gICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgcHg6IHsgXzogMjQgfSxcbiAgfSlcbik7XG5cbmNvbnN0IFN0eWxlZElucHV0ID0gc3R5bGVkKElucHV0KShcbiAgY3NzKHtcbiAgICBvdXRsaW5lOiBgbm9uZWAsXG4gICAgJyY6OnBsYWNlaG9sZGVyJzoge1xuICAgICAgdGV4dENvbG9yOiB0aGVtZS5jb2xvcnNbJ3RleHQtc2Vjb25kYXJ5J10gYXMgbmV2ZXIsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IElubGluZVJlc3VsdExpID0gc3R5bGVkKE1lbnVJdGVtKShcbiAgY3NzKHtcbiAgICBwbDogMCxcbiAgICBweTogOCxcbiAgICBmb250U2l6ZTogMTYsXG4gICAgJyY6Zm9jdXMtdmlzaWJsZTphZnRlcic6IHtcbiAgICAgIGxlZnQ6IC00LFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVMb2FkZXJMaSA9IHN0eWxlZC5saShcbiAgY3NzKHtcbiAgICBsaXN0U3R5bGVUeXBlOiAnbm9uZScsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGdhcDogMTIsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIH0pXG4pO1xuXG5leHBvcnQgY29uc3QgU2VtaWJvbGRTZWFyY2hJY29uID0gc3R5bGVkKFNlYXJjaEljb24pYFxuICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICBjaXJjbGUsXG4gIHBhdGgge1xuICAgIHN0cm9rZS13aWR0aDogMnB4O1xuICB9XG4gIHJlY3Qge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0ycHgsIC0ycHgpO1xuICAgIGhlaWdodDogY2FsYygxMDAlICsgNHB4KTtcbiAgICB3aWR0aDogY2FsYygxMDAlICsgNHB4KTtcbiAgfVxuYDtcblxuY29uc3QgRWxsaXBzaXNCb3ggPSBzdHlsZWQoQm94KWBcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5gO1xuXG5jb25zdCBIaWdobGlnaHRlZFRleHQgPSAoe1xuICBzdWdnZXN0aW9uOiB7IHRpdGxlLCBzZWdtZW50cyB9LFxufToge1xuICBzdWdnZXN0aW9uOiBBdXRvY29tcGxldGVTdWdnZXN0aW9uO1xufSkgPT4ge1xuICBjb25zdCBtb2RlID0gdXNlQ3VycmVudE1vZGUoKTtcbiAgY29uc3QgaGlnaGxpZ2h0Q29sb3IgPSBtb2RlID09PSAnZGFyaycgPyAnaHlwZXInIDogJ3llbGxvdyc7XG5cbiAgcmV0dXJuIChcbiAgICA8RmxleEJveD5cbiAgICAgIDxFbGxpcHNpc0JveFxuICAgICAgICBtYXhXaWR0aD1cImNhbGMoMTAwdncgLSAxMjhweClcIlxuICAgICAgICB3aGl0ZVNwYWNlPVwicHJlXCJcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgb3ZlcmZsb3c9XCJoaWRkZW5cIlxuICAgICAgPlxuICAgICAgICB7c2VnbWVudHMubWFwKChzZWdtZW50LCBpKSA9PiAoXG4gICAgICAgICAgPFRleHRcbiAgICAgICAgICAgIGtleT17YCR7dGl0bGV9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICBsaW5lSGVpZ2h0PVwidGl0bGVcIlxuICAgICAgICAgICAgey4uLihzZWdtZW50LmhpZ2hsaWdodFxuICAgICAgICAgICAgICA/IHsgYmc6IGhpZ2hsaWdodENvbG9yLCBmb250V2VpZ2h0OiAnYm9sZCcgfVxuICAgICAgICAgICAgICA6IHt9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2VnbWVudC52YWx1ZX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICkpfVxuICAgICAgPC9FbGxpcHNpc0JveD5cbiAgICAgIDxUZXh0IHNjcmVlbnJlYWRlcj57dGl0bGV9PC9UZXh0PlxuICAgIDwvRmxleEJveD5cbiAgKTtcbn07XG5cbnR5cGUgU2VhcmNoQXNZb3VUeXBlTG9hZGVyID0ge1xuICBzaGltbWVyUm93czoge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHNoaW1tZXJzOiB7XG4gICAgICBrZXk6IHN0cmluZztcbiAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgfVtdO1xuICB9W107XG59O1xuXG5sZXQgbG9hZGVyS2V5ID0gMDtcbmZ1bmN0aW9uIHJuZExvYWRlcigpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBsdXNwbHVzXG4gIGNvbnN0IGtleSA9IGxvYWRlcktleSsrO1xuICBjb25zdCBsb2FkZXI6IFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHsgc2hpbW1lclJvd3M6IFtdIH07XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7XG4gICAgY29uc3Qgcm93ID0ge1xuICAgICAga2V5OiBgJHtrZXl9OiR7aX1gLFxuICAgICAgc2hpbW1lcnM6IFtdIGFzIHsga2V5OiBzdHJpbmc7IHdpZHRoOiBudW1iZXIgfVtdLFxuICAgIH07XG4gICAgY29uc3Qgd29yZHMgPSBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDMpO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgd29yZHM7IGorKykge1xuICAgICAgY29uc3Qgd2lkdGggPSAxMiArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDk2KTtcbiAgICAgIHJvdy5zaGltbWVycy5wdXNoKHtcbiAgICAgICAga2V5OiBgJHtrZXl9OiR7an1gLFxuICAgICAgICB3aWR0aCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsb2FkZXIuc2hpbW1lclJvd3MucHVzaChyb3cpO1xuICB9XG4gIHJldHVybiBsb2FkZXI7XG59XG5cbmV4cG9ydCBjb25zdCBTZWFyY2hQYW5lOiBSZWFjdC5GQzxTZWFyY2hQYW5lUHJvcHM+ID0gKHtcbiAgb25TZWFyY2gsXG4gIG9uVHJhY2tpbmdDbGljayxcbiAgc2VhcmNoQnV0dG9uUmVmLFxuICB0b2dnbGVTZWFyY2gsXG4gIG9uU2VhcmNoQXNZb3VUeXBlLFxufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpO1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgY29uc3QgW2F1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zLCBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9uc10gPSB1c2VTdGF0ZTxcbiAgICBBdXRvY29tcGxldGVTdWdnZXN0aW9uW11cbiAgPihbXSk7XG4gIGNvbnN0IFtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLCBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzXSA9XG4gICAgdXNlU3RhdGU8U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IFtzZWFyY2hSZXN1bHRDbGlja2VkLCBzZXRTZWFyY2hSZXN1bHRDbGlja2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG5cbiAgY29uc3QgaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrID1cbiAgICBvblNlYXJjaEFzWW91VHlwZSAmJiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzICYmICFzZWFyY2hSZXN1bHRDbGlja2VkO1xuXG4gIGNvbnN0IGNsb3NlU2VhcmNoID0gYXN5bmMgKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHVzZXIgbWFkZSBhIHNlYXJjaCBhbmQgdGhlbiBjbG9zZWQgc2VhcmNoIHBhbmVcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRvZ2dsZVNlYXJjaCgpO1xuICAgIC8vIGFkZHMgYSBsaXR0bGUgZGVsYXkgYmV0d2VlbiBjbG9zaW5nIHRoZSBzZWFyY2ggcGFuZSBhbmQgZm9jdXNpbmcgb24gdGhlIGJ1dHRvblxuICAgIC8vIHRvIHByZXZlbnQgdGhlIHNlYXJjaCBwYW5lIGZyb20gaW1tZWRpYXRlbHkgb3BlbmluZyBhZ2FpblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHNlYXJjaEJ1dHRvblJlZiAmJiBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgc2VhcmNoQnV0dG9uUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZU9uRXNjSGFuZGxlcihjbG9zZVNlYXJjaCk7XG5cbiAgY29uc3Qgb25Nb3VzZURvd25PdXRzaWRlID0gKHsgdGFyZ2V0IH06IE1vdXNlRXZlbnQpID0+IHtcbiAgICBjb25zdCBoYW5kbGVPdXRzaWRlQ2xpY2sgPSAoKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgICFkb2N1bWVudFxuICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKCdbZGF0YS10ZXN0aWQ9XCJoZWFkZXItc2VhcmNoLWRyb3Bkb3duXCJdJylcbiAgICAgICAgICA/LmNvbnRhaW5zKHRhcmdldCBhcyBIVE1MRWxlbWVudCkgJiZcbiAgICAgICAgdGFyZ2V0ICE9PSBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnRcbiAgICAgICkge1xuICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgfVxuXG4gICAgICB0YXJnZXQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVPdXRzaWRlQ2xpY2spO1xuICAgIH07XG5cbiAgICB0YXJnZXQ/LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVPdXRzaWRlQ2xpY2spO1xuICB9O1xuXG4gIGNvbnN0IG5hdmlnYXRlVG9TZWFyY2ggPSAoc2VhcmNoVGVybTogc3RyaW5nLCBmcm9tUHJldlNlYXJjaD86IHN0cmluZykgPT4ge1xuICAgIG9uU2VhcmNoKHNlYXJjaFRlcm0sIGZyb21QcmV2U2VhcmNoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2U6IFJlYWN0LkNoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICBzZXRWYWx1ZShldnQudGFyZ2V0LnZhbHVlKTtcbiAgICAvLyByZXNldCB0byBmYWxzZSB3aGVuIHRoZSBzZWFyY2ggcXVlcnkgY2hhbmdlc1xuICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQoZmFsc2UpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdDogUmVhY3QuRm9ybUV2ZW50SGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB0aGUgdXNlciBzdWJtaXRzIHRoZSBmb3JtIHRvIGNhcHR1cmUgY29tcGxldGUgcXVlcnlcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgfTtcblxuICBjb25zdCBjbGVhcklucHV0ID0gKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCBiZWZvcmUgdXNlciBjbGVhcnMgaW5wdXRcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIHNldFZhbHVlKCcnKTtcbiAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgLy8gcmVzZXQgdGhlIGNvbnRleHQgd2l0aCBlbXB0eSB2YWx1ZXNcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICBxdWVyeTogJycsXG4gICAgICBzZWFyY2hJZDogJycsXG4gICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICAvLyBhbmQgdHJhY2sgc2VhcmNoIGV2ZW50IGlmIHVzZXIgbWFkZSBhIHNlYXJjaFxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiAoKSA9PiB7XG4gICAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgfVxuXG4gICAgICB0b2dnbGVTZWFyY2goKTtcbiAgICB9LFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIGRvbid0IHRyYWNrIGlmIGEgcmVzdWx0IHdhcyBjbGlja2VkIG9yIGlmIHdlIGRvbid0IGhhdmUgc2VhcmNoIHJlc3VsdHNcbiAgICBpZiAoXG4gICAgICBzZWFyY2hSZXN1bHRDbGlja2VkIHx8XG4gICAgICAhb25TZWFyY2hBc1lvdVR5cGUgfHxcbiAgICAgICFzZWFyY2hBc1lvdVR5cGVSZXN1bHRzIHx8XG4gICAgICAhdmFsdWVUcmltbWVkLmxlbmd0aFxuICAgIClcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLXJldHVyblxuICAgICAgcmV0dXJuO1xuICB9LCBbXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxuICAgIHZhbHVlVHJpbW1lZCxcbiAgICBvblNlYXJjaEFzWW91VHlwZSxcbiAgXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpbnB1dFJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgIHNlYXJjaFdvcmtlci5pbml0KCk7XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghdmFsdWVUcmltbWVkLmxlbmd0aCkge1xuICAgICAgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhudWxsKTtcbiAgICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgICAgcXVlcnk6ICcnLFxuICAgICAgICBzZWFyY2hJZDogJycsXG4gICAgICAgIHJlc3VsdHNDb3VudDogMCxcbiAgICAgICAgcXVlcnlMb2FkVGltZTogMCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBsZXQgY2xlYXJBdXRvY29tcGxldGUgPSB0cnVlO1xuICAgIGxldCBjbGVhclNlYXJjaEFzWW91VHlwZSA9IHRydWU7XG5cbiAgICBsZXQgc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5OiBOb2RlSlMuVGltZW91dDtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2l0aCBhIHNtYWxsIGRlbGF5IHdoZW4gdGhlcmUgYXJlIG5vIHJlc3VsdHNcbiAgICAgIGlmIChcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUgJiZcbiAgICAgICAgcmVzdWx0cy50b3AubGVuZ3RoID09PSAwICYmXG4gICAgICAgICFzZWFyY2hSZXN1bHRDbGlja2VkXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHF1ZXJ5TG9hZFRpbWUgfSA9IHJlc3VsdHM7XG4gICAgICAgIHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICghY2FuY2VsKSB7XG4gICAgICAgICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIDAsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICAgIGNsZWFyVGltZW91dChzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXkpO1xuICAgIH07XG4gIH0sIFtcbiAgICB2YWx1ZVRyaW1tZWQsXG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyxcbiAgXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICBiZz1cInNoYWRvdy1zZWNvbmRhcnlcIlxuICAgICAgICBoZWlnaHQ9XCIxMDB2aFwiXG4gICAgICAgIHBvc2l0aW9uPVwiZml4ZWRcIlxuICAgICAgICAvLyBXZSBhZGQgNXJlbSBoZXJlIGluIGNhc2UgdGhlcmUncyBzb21lIHNvcnQgb2YgYnJhbmRlZCBiYW5uZXIgYWJvdmUgc2VhcmNoXG4gICAgICAgIC8vIFRoZSBzZWFyY2ggYXJlYSBpcyBtdWNoIHRhbGxlciB0aGFuIDVyZW0gc28gdGhpcyBpcyBhIHNhZmUgYW1vdW50IG9mIHBhZGRpbmdcbiAgICAgICAgdG9wPXtgY2FsYygke3RoZW1lLmVsZW1lbnRzLmhlYWRlckhlaWdodH0gKyA1cmVtKWB9XG4gICAgICAgIHdpZHRoPXsxfVxuICAgICAgLz5cbiAgICAgIDxGb2N1c1RyYXBcbiAgICAgICAgb25Fc2NhcGVLZXk9e2Nsb3NlU2VhcmNofVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249XCJhYnNvbHV0ZVwiXG4gICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICBtYXhIZWlnaHQ9e3sgXzogJ2NhbGMoMTAwdmggLSA2M3B4KScsIG1kOiAnY2FsYygxMDB2aCAtIDgwcHgpJyB9fVxuICAgICAgICAgIG92ZXJmbG93PVwiYXV0b1wiXG4gICAgICAgID5cbiAgICAgICAgICA8Qm94IGJvcmRlcj1cIm5vbmVcIiB3aWR0aD1cImF1dG9cIj5cbiAgICAgICAgICAgIDxRdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiYmFzZWxpbmVcIlxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiZ3JheS02MDBcIlxuICAgICAgICAgICAgICAgIGJvcmRlclN0eWxlQm90dG9tPVwic29saWRcIlxuICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoQm90dG9tPVwiMXB4XCJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgIGhlaWdodD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgICB3aWR0aD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8Rm9ybVxuICAgICAgICAgICAgICAgICAgYWN0aW9uPVwiL3NlYXJjaFwiXG4gICAgICAgICAgICAgICAgICBpZD1cInNlYXJjaC1mb3JtXCJcbiAgICAgICAgICAgICAgICAgIG1sPXs4fVxuICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0eWxlZElucHV0XG4gICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcj1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAyMCwgbWQ6IDI2IH19XG4gICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ9XCJib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJoZWFkZXItc2VhcmNoLWJhclwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJxdWVyeVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGUpID0+IG9uS2V5RG93bihlKX1cbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3NlYXJjaFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICAgICAgICByZWY9e2lucHV0UmVmfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L0Zvcm0+XG4gICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgIGljb249e01pbmlEZWxldGVJY29ufVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyIHNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICB0aXA9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwUHJvcHM9e3tcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50OiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogJ2Zsb2F0aW5nJyxcbiAgICAgICAgICAgICAgICAgICAgbmFycm93OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDIsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17Y2xlYXJJbnB1dH1cbiAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgPC9RdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8U3VnZ2VzdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgIHt2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8RmxleEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCIgYXM9XCJ1bFwiIGxpc3RTdHlsZT1cIm5vbmVcIiBwPXswfT5cbiAgICAgICAgICAgICAgICAgIHthdXRvQ29tcGxldGVTdWdnZXN0aW9ucy5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtzLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ2F1dG9jb21wbGV0ZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbWlib2xkU2VhcmNoSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgbWI9ezIgYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9ezE0fVxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9ezh9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICAgICAgICAgICAgICAgICAgbXI9ezEyfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPEhpZ2hsaWdodGVkVGV4dCBzdWdnZXN0aW9uPXtzfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgIHsoc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy50b3AubGVuZ3RoID4gMCkgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPFRleHQgYXM9XCJoMlwiIGZvbnRTaXplPXsyMH0gbWI9ezE2fSBtdD17MjR9PlxuICAgICAgICAgICAgICAgICAgICAgIFRvcCByZXN1bHRzXG4gICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgICBhcz1cInVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBsaXN0U3R5bGU9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICBwPXswfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc2VhcmNoQXNZb3VUeXBlTG9hZGVyPy5zaGltbWVyUm93cy5tYXAoKHIpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lTG9hZGVyTGkga2V5PXtyLmtleX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ci5zaGltbWVycy5tYXAoKHdvcmQpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNoaW1tZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezMwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5PXs4IGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXt3b3JkLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17d29yZC53aWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RmFtaWx5PVwiYWNjZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yPVwidGV4dC1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAxMCBhcyAxNiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImJvcmRlci1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI9ezF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1cz1cInhsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHg9ezE2fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5PXswLjF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVMb2FkZXJMaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy50b3AubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnF1ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJsaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZWx5UmVkaXJlY3Qocy51cmxQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnOiBzLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgY29udGVudF9pZDogcy5jb250ZW50SWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlbHlSZWRpcmVjdChzLnVybFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmFkZ2Ugc2l6ZT1cInNtXCIgdmFyaWFudD1cInRlcnRpYXJ5XCIgbWw9ezEyfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3MudHlwZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmFkZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge3NlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggPT09IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPEJveCBmb250U2l6ZT17eyBfOiAyMCwgc206IDI2IH19IG10PXswfSBtYj17NDh9PlxuICAgICAgICAgICAgICAgICAgICAgIHtgV2UgY291bGRuJ3QgZmluZCBhIG1hdGNoIGZvciBgfVxuICAgICAgICAgICAgICAgICAgICAgIDxUZXh0IGZvbnRXZWlnaHQ9XCJib2xkXCI+e2BcIiR7dmFsdWVUcmltbWVkfS5cImB9PC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICcgVHJ5IGFub3RoZXIga2V5d29yZCwgb3Igc2VlIHdoYXQgb3VyIG1lbWJlcnMgYXJlIGxlYXJuaW5nLidcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPE1lbnUgYm9yZGVyPVwibm9uZVwiIHZhcmlhbnQ9XCJwb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgPFBvcHVsYXJTZWFyY2hlc1xuICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaD17bmF2aWdhdGVUb1NlYXJjaH1cbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPFBvcHVsYXJDb250ZW50IG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfSAvPlxuICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7ISFzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy50b3AubGVuZ3RoICYmIChcbiAgICAgICAgICAgICAgPFN0cm9rZUJ1dHRvblxuICAgICAgICAgICAgICAgIG15PXsxNn1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3ZpZXdfYWxsX3Jlc3VsdHMnLCB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaCh2YWx1ZSwgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQpO1xuICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgVmlldyBhbGwgcmVzdWx0c1xuICAgICAgICAgICAgICA8L1N0cm9rZUJ1dHRvbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8UXVpekFuZEhlbHBDZW50ZXJMaW5rc1xuICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja31cbiAgICAgICAgICAgICAgaGFuZGxlQ2xvc2VEcm9wZG93bj17Y2xvc2VTZWFyY2h9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3VnZ2VzdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgPC9Cb3g+XG4gICAgICA8L0ZvY3VzVHJhcD5cbiAgICA8Lz5cbiAgKTtcbn07XG4iXX0= */");
73
74
  const InlineLoaderLi = /*#__PURE__*/_styled("li", {
74
75
  target: "e1e5b20r2",
75
76
  label: "InlineLoaderLi"
@@ -78,7 +79,7 @@ const InlineLoaderLi = /*#__PURE__*/_styled("li", {
78
79
  display: 'flex',
79
80
  gap: 12,
80
81
  alignItems: 'center'
81
- }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTBFdUIiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVVybENoYW5nZURldGVjdGlvbiB9IGZyb20gJy4vaG9va3MvdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uJztcbmltcG9ydCB7IFF1aXpBbmRIZWxwQ2VudGVyTGlua3MgfSBmcm9tICcuL1F1aXpBbmRIZWxwQ2VudGVyTGlua3MnO1xuaW1wb3J0IHsgc2FmZWx5UmVkaXJlY3QgfSBmcm9tICcuL3NhZmVseVJlZGlyZWN0JztcbmltcG9ydCB7IHNlYXJjaFdvcmtlciB9IGZyb20gJy4vU2VhcmNoV29ya2VyJztcbmltcG9ydCB0eXBlIHtcbiAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbixcbiAgU2VhcmNoQXNZb3VUeXBlUmVzdWx0cyxcbn0gZnJvbSAnLi9TZWFyY2hXb3JrZXIvdHlwZXMnO1xuaW1wb3J0IHsgU2VhcmNoUGFuZVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IEZvcm0gPSBCb3gud2l0aENvbXBvbmVudCgnZm9ybScpO1xuY29uc3QgSW5wdXQgPSBCb3gud2l0aENvbXBvbmVudCgnaW5wdXQnKTtcblxuY29uc3QgUXVlcnlDb250YWluZXIgPSBzdHlsZWQoQ29udGVudENvbnRhaW5lcikoXG4gIGNzcyh7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgcHQ6IDE2LFxuICAgIHBiOiB7IF86IDAsIG1kOiAyNCB9LFxuICAgIHB4OiB7IF86IDI0IH0sXG4gIH0pXG4pO1xuXG5jb25zdCBTdWdnZXN0aW9uQ29udGFpbmVyID0gc3R5bGVkKENvbnRlbnRDb250YWluZXIpKFxuICBjc3Moe1xuICAgIHB0OiAxNixcbiAgICBwYjogeyBfOiAwLCBtZDogMjQgfSxcbiAgICBweDogeyBfOiAyNCB9LFxuICB9KVxuKTtcblxuY29uc3QgU3R5bGVkSW5wdXQgPSBzdHlsZWQoSW5wdXQpKFxuICBjc3Moe1xuICAgIG91dGxpbmU6IGBub25lYCxcbiAgICAnJjo6cGxhY2Vob2xkZXInOiB7XG4gICAgICB0ZXh0Q29sb3I6IHRoZW1lLmNvbG9yc1sndGV4dC1zZWNvbmRhcnknXSBhcyBuZXZlcixcbiAgICB9LFxuICB9KVxuKTtcblxuY29uc3QgSW5saW5lUmVzdWx0TGkgPSBzdHlsZWQoTWVudUl0ZW0pKFxuICBjc3Moe1xuICAgIHBsOiAwLFxuICAgIHB5OiA4LFxuICAgIGZvbnRTaXplOiAxNixcbiAgICAnJjpmb2N1cy12aXNpYmxlOmFmdGVyJzoge1xuICAgICAgbGVmdDogLTQsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IElubGluZUxvYWRlckxpID0gc3R5bGVkLmxpKFxuICBjc3Moe1xuICAgIGxpc3RTdHlsZVR5cGU6ICdub25lJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZ2FwOiAxMixcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgfSlcbik7XG5cbmV4cG9ydCBjb25zdCBTZW1pYm9sZFNlYXJjaEljb24gPSBzdHlsZWQoU2VhcmNoSWNvbilgXG4gIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gIGNpcmNsZSxcbiAgcGF0aCB7XG4gICAgc3Ryb2tlLXdpZHRoOiAycHg7XG4gIH1cbiAgcmVjdCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTJweCwgLTJweCk7XG4gICAgaGVpZ2h0OiBjYWxjKDEwMCUgKyA0cHgpO1xuICAgIHdpZHRoOiBjYWxjKDEwMCUgKyA0cHgpO1xuICB9XG5gO1xuXG5jb25zdCBFbGxpcHNpc0JveCA9IHN0eWxlZChCb3gpYFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbmA7XG5cbmNvbnN0IEhpZ2hsaWdodGVkVGV4dCA9ICh7XG4gIHN1Z2dlc3Rpb246IHsgdGl0bGUsIHNlZ21lbnRzIH0sXG59OiB7XG4gIHN1Z2dlc3Rpb246IEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb247XG59KSA9PiB7XG4gIGNvbnN0IG1vZGUgPSB1c2VDdXJyZW50TW9kZSgpO1xuICBjb25zdCBoaWdobGlnaHRDb2xvciA9IG1vZGUgPT09ICdkYXJrJyA/ICdoeXBlcicgOiAneWVsbG93JztcblxuICByZXR1cm4gKFxuICAgIDxGbGV4Qm94PlxuICAgICAgPEVsbGlwc2lzQm94XG4gICAgICAgIG1heFdpZHRoPVwiY2FsYygxMDB2dyAtIDEyOHB4KVwiXG4gICAgICAgIHdoaXRlU3BhY2U9XCJwcmVcIlxuICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICBvdmVyZmxvdz1cImhpZGRlblwiXG4gICAgICA+XG4gICAgICAgIHtzZWdtZW50cy5tYXAoKHNlZ21lbnQsIGkpID0+IChcbiAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAga2V5PXtgJHt0aXRsZX06JHtpLnRvU3RyaW5nKCl9YH1cbiAgICAgICAgICAgIGxpbmVIZWlnaHQ9XCJ0aXRsZVwiXG4gICAgICAgICAgICB7Li4uKHNlZ21lbnQuaGlnaGxpZ2h0XG4gICAgICAgICAgICAgID8geyBiZzogaGlnaGxpZ2h0Q29sb3IsIGZvbnRXZWlnaHQ6ICdib2xkJyB9XG4gICAgICAgICAgICAgIDoge30pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtzZWdtZW50LnZhbHVlfVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgKSl9XG4gICAgICA8L0VsbGlwc2lzQm94PlxuICAgICAgPFRleHQgc2NyZWVucmVhZGVyPnt0aXRsZX08L1RleHQ+XG4gICAgPC9GbGV4Qm94PlxuICApO1xufTtcblxudHlwZSBTZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSB7XG4gIHNoaW1tZXJSb3dzOiB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgc2hpbW1lcnM6IHtcbiAgICAgIGtleTogc3RyaW5nO1xuICAgICAgd2lkdGg6IG51bWJlcjtcbiAgICB9W107XG4gIH1bXTtcbn07XG5cbmxldCBsb2FkZXJLZXkgPSAwO1xuZnVuY3Rpb24gcm5kTG9hZGVyKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGx1c3BsdXNcbiAgY29uc3Qga2V5ID0gbG9hZGVyS2V5Kys7XG4gIGNvbnN0IGxvYWRlcjogU2VhcmNoQXNZb3VUeXBlTG9hZGVyID0geyBzaGltbWVyUm93czogW10gfTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCA1OyBpKyspIHtcbiAgICBjb25zdCByb3cgPSB7XG4gICAgICBrZXk6IGAke2tleX06JHtpfWAsXG4gICAgICBzaGltbWVyczogW10gYXMgeyBrZXk6IHN0cmluZzsgd2lkdGg6IG51bWJlciB9W10sXG4gICAgfTtcbiAgICBjb25zdCB3b3JkcyA9IE1hdGguY2VpbChNYXRoLnJhbmRvbSgpICogMyk7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCB3b3JkczsgaisrKSB7XG4gICAgICBjb25zdCB3aWR0aCA9IDEyICsgTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogOTYpO1xuICAgICAgcm93LnNoaW1tZXJzLnB1c2goe1xuICAgICAgICBrZXk6IGAke2tleX06JHtqfWAsXG4gICAgICAgIHdpZHRoLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGxvYWRlci5zaGltbWVyUm93cy5wdXNoKHJvdyk7XG4gIH1cbiAgcmV0dXJuIGxvYWRlcjtcbn1cblxuZXhwb3J0IGNvbnN0IFNlYXJjaFBhbmU6IFJlYWN0LkZDPFNlYXJjaFBhbmVQcm9wcz4gPSAoe1xuICBvblNlYXJjaCxcbiAgb25UcmFja2luZ0NsaWNrLFxuICBzZWFyY2hCdXR0b25SZWYsXG4gIHRvZ2dsZVNlYXJjaCxcbiAgb25TZWFyY2hBc1lvdVR5cGUsXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgnJyk7XG4gIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBbYXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMsIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zXSA9IHVzZVN0YXRlPFxuICAgIEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb25bXVxuICA+KFtdKTtcblxuICBjb25zdCBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0cywgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0c10gPVxuICAgIHVzZVN0YXRlPFNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCBjbG9zZVNlYXJjaCA9IGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCB0b2dnbGVTZWFyY2goKTtcbiAgICAvLyBhZGRzIGEgbGl0dGxlIGRlbGF5IGJldHdlZW4gY2xvc2luZyB0aGUgc2VhcmNoIHBhbmUgYW5kIGZvY3VzaW5nIG9uIHRoZSBidXR0b25cbiAgICAvLyB0byBwcmV2ZW50IHRoZSBzZWFyY2ggcGFuZSBmcm9tIGltbWVkaWF0ZWx5IG9wZW5pbmcgYWdhaW5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmIChzZWFyY2hCdXR0b25SZWYgJiYgc2VhcmNoQnV0dG9uUmVmPy5jdXJyZW50KSB7XG4gICAgICAgIHNlYXJjaEJ1dHRvblJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgICAgfVxuICAgIH0sIDEwKTtcbiAgfTtcblxuICBjb25zdCBvbktleURvd24gPSB1c2VPbkVzY0hhbmRsZXIoY2xvc2VTZWFyY2gpO1xuXG4gIGNvbnN0IG9uTW91c2VEb3duT3V0c2lkZSA9ICh7IHRhcmdldCB9OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgaGFuZGxlT3V0c2lkZUNsaWNrID0gKCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICAhZG9jdW1lbnRcbiAgICAgICAgICAucXVlcnlTZWxlY3RvcignW2RhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXScpXG4gICAgICAgICAgPy5jb250YWlucyh0YXJnZXQgYXMgSFRNTEVsZW1lbnQpICYmXG4gICAgICAgIHRhcmdldCAhPT0gc2VhcmNoQnV0dG9uUmVmPy5jdXJyZW50XG4gICAgICApIHtcbiAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgIH1cblxuICAgICAgdGFyZ2V0Py5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlT3V0c2lkZUNsaWNrKTtcbiAgICB9O1xuXG4gICAgdGFyZ2V0Py5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlT3V0c2lkZUNsaWNrKTtcbiAgfTtcblxuICBjb25zdCBuYXZpZ2F0ZVRvU2VhcmNoID0gKHNlYXJjaFRlcm06IHN0cmluZywgZnJvbVByZXZTZWFyY2g/OiBzdHJpbmcpID0+IHtcbiAgICBvblNlYXJjaChzZWFyY2hUZXJtLCBmcm9tUHJldlNlYXJjaCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlOiBSZWFjdC5DaGFuZ2VFdmVudEhhbmRsZXI8SFRNTElucHV0RWxlbWVudD4gPSAoZXZ0KSA9PiB7XG4gICAgc2V0VmFsdWUoZXZ0LnRhcmdldC52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlU3VibWl0OiBSZWFjdC5Gb3JtRXZlbnRIYW5kbGVyID0gKGV2ZW50KSA9PiB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gIH07XG5cbiAgY29uc3QgY2xlYXJJbnB1dCA9ICgpID0+IHtcbiAgICBzZXRWYWx1ZSgnJyk7XG4gICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiB0b2dnbGVTZWFyY2gsXG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaW5wdXRSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICBzZWFyY2hXb3JrZXIuaW5pdCgpO1xuICB9LCBbXSk7XG5cbiAgY29uc3QgdmFsdWVUcmltbWVkID0gdmFsdWUudHJpbSgpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF2YWx1ZVRyaW1tZWQubGVuZ3RoKSB7XG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBsZXQgY2xlYXJBdXRvY29tcGxldGUgPSB0cnVlO1xuICAgIGxldCBjbGVhclNlYXJjaEFzWW91VHlwZSA9IHRydWU7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8qXG4gICAgICAgKiBXYWl0IDEwIHNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICAvLyBvblNlYXJjaEFzWW91VHlwZSBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgdHJhY2tpbmdcbiAgICAgIGlmIChvblNlYXJjaEFzWW91VHlwZSkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAvKlxuICAgICAgICAgICAqIFRoaXMgdGltZW91dCBhbmQgY2FuY2VsIGNoZWNrIGlzIGEgZGVib3VuY2UgdGhhdCBlbnN1cmVzIHdlIGRvIG5vdFxuICAgICAgICAgICAqIHNlbmQgdHJhY2tpbmcgZXZlbnRzIGZvciBldmVyeSBrZXlzdHJva2UsIGJ1dCBvbmx5IHdoZW4gdGhlIHVzZXJcbiAgICAgICAgICAgKiBzdG9wcyB0eXBpbmcgZm9yIDI1MG1zLiBXZSBwcmV2aW91c2x5IHVzZWQgdGhpcyBkZWJvdW5jZSBmb3IgdGhlXG4gICAgICAgICAgICogc2VhcmNoLWFzLXlvdS10eXBlIHF1ZXJ5IGFzIGEgd2hvbGUsIGJ1dCB0aGlzIGlzIG5vdCBuZWNlc3NhcnlcbiAgICAgICAgICAgKiBmcm9tIGEgbG9hZCBzdGFuZHBvaW50IHNpbmNlIHdlIGhhdmUgY2FjaGluZyBpbXBsZW1lbnRlZCBvbiBib3RoXG4gICAgICAgICAgICogY2xpZW50IGFuZCBzZXJ2ZXIuIEFwcGx5aW5nIHRoZSBkZWJvdW5jZSBvbmx5IGZvciB0aGlzIGNhbGxiYWNrXG4gICAgICAgICAgICogYWxsb3dzIHVzIHRvIG1haW50YWluIHRoZSBtb3N0IHNuYXBweSB1c2VyIGV4cGVyaWVuY2UgYW5kIHN0aWxsXG4gICAgICAgICAgICogaGF2ZSBub24tbm9pc3kgdHJhY2tpbmcuXG4gICAgICAgICAgICovXG4gICAgICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuO1xuICAgICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9IHJlc3VsdHM7XG4gICAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgICB9LCAyNTApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNhbmNlbCA9IHRydWU7XG4gICAgfTtcbiAgfSwgW3ZhbHVlVHJpbW1lZCwgb25TZWFyY2hBc1lvdVR5cGVdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIGJnPVwic2hhZG93LXNlY29uZGFyeVwiXG4gICAgICAgIGhlaWdodD1cIjEwMHZoXCJcbiAgICAgICAgcG9zaXRpb249XCJmaXhlZFwiXG4gICAgICAgIC8vIFdlIGFkZCA1cmVtIGhlcmUgaW4gY2FzZSB0aGVyZSdzIHNvbWUgc29ydCBvZiBicmFuZGVkIGJhbm5lciBhYm92ZSBzZWFyY2hcbiAgICAgICAgLy8gVGhlIHNlYXJjaCBhcmVhIGlzIG11Y2ggdGFsbGVyIHRoYW4gNXJlbSBzbyB0aGlzIGlzIGEgc2FmZSBhbW91bnQgb2YgcGFkZGluZ1xuICAgICAgICB0b3A9e2BjYWxjKCR7dGhlbWUuZWxlbWVudHMuaGVhZGVySGVpZ2h0fSArIDVyZW0pYH1cbiAgICAgICAgd2lkdGg9ezF9XG4gICAgICAvPlxuICAgICAgPEZvY3VzVHJhcFxuICAgICAgICBvbkVzY2FwZUtleT17Y2xvc2VTZWFyY2h9XG4gICAgICAgIG9uQ2xpY2tPdXRzaWRlPXtvbk1vdXNlRG93bk91dHNpZGV9XG4gICAgICAgIGFsbG93UGFnZUludGVyYWN0aW9uXG4gICAgICA+XG4gICAgICAgIDxCb3hcbiAgICAgICAgICBiZz1cImJhY2tncm91bmRcIlxuICAgICAgICAgIGJvcmRlckNvbG9yQm90dG9tPVwiYm9yZGVyLXByaW1hcnlcIlxuICAgICAgICAgIGJvcmRlckNvbG9yVG9wPVwiYm9yZGVyLXRlcnRpYXJ5XCJcbiAgICAgICAgICBib3JkZXJTdHlsZT1cInNvbGlkXCJcbiAgICAgICAgICBib3JkZXJXaWR0aD1cIjJweCAwIDFweFwiXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJoZWFkZXItc2VhcmNoLWRyb3Bkb3duXCJcbiAgICAgICAgICBwb3NpdGlvbj17eyBfOiAnZml4ZWQnLCBtZDogJ2Fic29sdXRlJyB9fVxuICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgbWF4SGVpZ2h0PXt7IF86ICdjYWxjKDEwMHZoIC0gNjNweCknLCBtZDogJ2NhbGMoMTAwdmggLSA4MHB4KScgfX1cbiAgICAgICAgICBvdmVyZmxvdz1cImF1dG9cIlxuICAgICAgICAgIHpJbmRleD17MTB9IC8vIGVuc3VyZSBkcm9wZG93biBpcyBhYm92ZSB0aGUgcGFnZSBjb250ZW50XG4gICAgICAgID5cbiAgICAgICAgICA8Qm94IGJvcmRlcj1cIm5vbmVcIiB3aWR0aD1cImF1dG9cIj5cbiAgICAgICAgICAgIDxRdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiYmFzZWxpbmVcIlxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiZ3JheS02MDBcIlxuICAgICAgICAgICAgICAgIGJvcmRlclN0eWxlQm90dG9tPVwic29saWRcIlxuICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoQm90dG9tPVwiMXB4XCJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgIGhlaWdodD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgICB3aWR0aD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8Rm9ybVxuICAgICAgICAgICAgICAgICAgYWN0aW9uPVwiL3NlYXJjaFwiXG4gICAgICAgICAgICAgICAgICBpZD1cInNlYXJjaC1mb3JtXCJcbiAgICAgICAgICAgICAgICAgIG1sPXs4fVxuICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0eWxlZElucHV0XG4gICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcj1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAyMCwgbWQ6IDI2IH19XG4gICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ9XCJib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJoZWFkZXItc2VhcmNoLWJhclwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJxdWVyeVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGUpID0+IG9uS2V5RG93bihlKX1cbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3NlYXJjaFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICAgICAgICByZWY9e2lucHV0UmVmfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L0Zvcm0+XG4gICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgIGljb249e01pbmlEZWxldGVJY29ufVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyIHNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICB0aXA9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwUHJvcHM9e3tcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50OiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogJ2Zsb2F0aW5nJyxcbiAgICAgICAgICAgICAgICAgICAgbmFycm93OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDIsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17Y2xlYXJJbnB1dH1cbiAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgPC9RdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8U3VnZ2VzdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgIHt2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8RmxleEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCIgYXM9XCJ1bFwiIGxpc3RTdHlsZT1cIm5vbmVcIiBwPXswfT5cbiAgICAgICAgICAgICAgICAgIHthdXRvQ29tcGxldGVTdWdnZXN0aW9ucy5tYXAoKHMpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtzLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoeyB2YWx1ZTogcy50aXRsZSB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7IHZhbHVlOiBzLnRpdGxlIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW1pYm9sZFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1iPXsyIGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPXsxNH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXs4fVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1yPXsxMn1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICB7KHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0IGFzPVwiaDJcIiBmb250U2l6ZT17MjB9IG1iPXsxNn0gbXQ9ezI0fT5cbiAgICAgICAgICAgICAgICAgICAgICBUb3AgcmVzdWx0c1xuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbj1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJ1bFwiXG4gICAgICAgICAgICAgICAgICAgICAgbGlzdFN0eWxlPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcD17MH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNlYXJjaEFzWW91VHlwZUxvYWRlcj8uc2hpbW1lclJvd3MubWFwKChyKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZUxvYWRlckxpIGtleT17ci5rZXl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Iuc2hpbW1lcnMubWFwKCh3b3JkKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTaGltbWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXszMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweT17OCBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17d29yZC5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9e3dvcmQud2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseT1cImFjY2VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDb2xvcj1cInRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMTAgYXMgMTYgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I9XCJib3JkZXItc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyPXsxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM9XCJ4bFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB4PXsxNn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eT17MC4xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lTG9hZGVyTGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLm1hcCgocywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5xdWVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwibGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3NlYXJjaF9hc195b3VfdHlwZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnOiBzLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4ocy5jb250ZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlbHlSZWRpcmVjdChzLnVybFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3NlYXJjaF9hc195b3VfdHlwZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHMuc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4ocy5jb250ZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZSBzaXplPVwic21cIiB2YXJpYW50PVwidGVydGlhcnlcIiBtbD17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cy50eXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8Qm94IGZvbnRTaXplPXt7IF86IDIwLCBzbTogMjYgfX0gbXQ9ezB9IG1iPXs0OH0+XG4gICAgICAgICAgICAgICAgICAgICAge2BXZSBjb3VsZG4ndCBmaW5kIGEgbWF0Y2ggZm9yIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPFRleHQgZm9udFdlaWdodD1cImJvbGRcIj57YFwiJHt2YWx1ZVRyaW1tZWR9LlwiYH08L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgJyBUcnkgYW5vdGhlciBrZXl3b3JkLCBvciBzZWUgd2hhdCBvdXIgbWVtYmVycyBhcmUgbGVhcm5pbmcuJ1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICA8UG9wdWxhclNlYXJjaGVzXG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoPXtuYXZpZ2F0ZVRvU2VhcmNofVxuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHshIXNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICA8U3Ryb2tlQnV0dG9uXG4gICAgICAgICAgICAgICAgbXk9ezE2fVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygndmlld19hbGxfcmVzdWx0cycsIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBWaWV3IGFsbCByZXN1bHRzXG4gICAgICAgICAgICAgIDwvU3Ryb2tlQnV0dG9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxRdWl6QW5kSGVscENlbnRlckxpbmtzXG4gICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICBoYW5kbGVDbG9zZURyb3Bkb3duPXtjbG9zZVNlYXJjaH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TdWdnZXN0aW9uQ29udGFpbmVyPlxuICAgICAgICA8L0JveD5cbiAgICAgIDwvRm9jdXNUcmFwPlxuICAgIDwvPlxuICApO1xufTtcbiJdfQ== */");
82
+ }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTJFdUIiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVVybENoYW5nZURldGVjdGlvbiB9IGZyb20gJy4vaG9va3MvdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uJztcbmltcG9ydCB7IFF1aXpBbmRIZWxwQ2VudGVyTGlua3MgfSBmcm9tICcuL1F1aXpBbmRIZWxwQ2VudGVyTGlua3MnO1xuaW1wb3J0IHsgc2FmZWx5UmVkaXJlY3QgfSBmcm9tICcuL3NhZmVseVJlZGlyZWN0JztcbmltcG9ydCB7IHVzZVNlYXJjaFRyYWNraW5nQ29udGV4dCB9IGZyb20gJy4vU2VhcmNoVHJhY2tpbmdQcm92aWRlcic7XG5pbXBvcnQgeyBzZWFyY2hXb3JrZXIgfSBmcm9tICcuL1NlYXJjaFdvcmtlcic7XG5pbXBvcnQgdHlwZSB7XG4gIEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb24sXG4gIFNlYXJjaEFzWW91VHlwZVJlc3VsdHMsXG59IGZyb20gJy4vU2VhcmNoV29ya2VyL3R5cGVzJztcbmltcG9ydCB7IFNlYXJjaFBhbmVQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBGb3JtID0gQm94LndpdGhDb21wb25lbnQoJ2Zvcm0nKTtcbmNvbnN0IElucHV0ID0gQm94LndpdGhDb21wb25lbnQoJ2lucHV0Jyk7XG5cbmNvbnN0IFF1ZXJ5Q29udGFpbmVyID0gc3R5bGVkKENvbnRlbnRDb250YWluZXIpKFxuICBjc3Moe1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIHB0OiAxNixcbiAgICBwYjogeyBfOiAwLCBtZDogMjQgfSxcbiAgICBweDogeyBfOiAyNCB9LFxuICB9KVxuKTtcblxuY29uc3QgU3VnZ2VzdGlvbkNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKShcbiAgY3NzKHtcbiAgICBwdDogMTYsXG4gICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgcHg6IHsgXzogMjQgfSxcbiAgfSlcbik7XG5cbmNvbnN0IFN0eWxlZElucHV0ID0gc3R5bGVkKElucHV0KShcbiAgY3NzKHtcbiAgICBvdXRsaW5lOiBgbm9uZWAsXG4gICAgJyY6OnBsYWNlaG9sZGVyJzoge1xuICAgICAgdGV4dENvbG9yOiB0aGVtZS5jb2xvcnNbJ3RleHQtc2Vjb25kYXJ5J10gYXMgbmV2ZXIsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IElubGluZVJlc3VsdExpID0gc3R5bGVkKE1lbnVJdGVtKShcbiAgY3NzKHtcbiAgICBwbDogMCxcbiAgICBweTogOCxcbiAgICBmb250U2l6ZTogMTYsXG4gICAgJyY6Zm9jdXMtdmlzaWJsZTphZnRlcic6IHtcbiAgICAgIGxlZnQ6IC00LFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVMb2FkZXJMaSA9IHN0eWxlZC5saShcbiAgY3NzKHtcbiAgICBsaXN0U3R5bGVUeXBlOiAnbm9uZScsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGdhcDogMTIsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIH0pXG4pO1xuXG5leHBvcnQgY29uc3QgU2VtaWJvbGRTZWFyY2hJY29uID0gc3R5bGVkKFNlYXJjaEljb24pYFxuICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICBjaXJjbGUsXG4gIHBhdGgge1xuICAgIHN0cm9rZS13aWR0aDogMnB4O1xuICB9XG4gIHJlY3Qge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0ycHgsIC0ycHgpO1xuICAgIGhlaWdodDogY2FsYygxMDAlICsgNHB4KTtcbiAgICB3aWR0aDogY2FsYygxMDAlICsgNHB4KTtcbiAgfVxuYDtcblxuY29uc3QgRWxsaXBzaXNCb3ggPSBzdHlsZWQoQm94KWBcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5gO1xuXG5jb25zdCBIaWdobGlnaHRlZFRleHQgPSAoe1xuICBzdWdnZXN0aW9uOiB7IHRpdGxlLCBzZWdtZW50cyB9LFxufToge1xuICBzdWdnZXN0aW9uOiBBdXRvY29tcGxldGVTdWdnZXN0aW9uO1xufSkgPT4ge1xuICBjb25zdCBtb2RlID0gdXNlQ3VycmVudE1vZGUoKTtcbiAgY29uc3QgaGlnaGxpZ2h0Q29sb3IgPSBtb2RlID09PSAnZGFyaycgPyAnaHlwZXInIDogJ3llbGxvdyc7XG5cbiAgcmV0dXJuIChcbiAgICA8RmxleEJveD5cbiAgICAgIDxFbGxpcHNpc0JveFxuICAgICAgICBtYXhXaWR0aD1cImNhbGMoMTAwdncgLSAxMjhweClcIlxuICAgICAgICB3aGl0ZVNwYWNlPVwicHJlXCJcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgb3ZlcmZsb3c9XCJoaWRkZW5cIlxuICAgICAgPlxuICAgICAgICB7c2VnbWVudHMubWFwKChzZWdtZW50LCBpKSA9PiAoXG4gICAgICAgICAgPFRleHRcbiAgICAgICAgICAgIGtleT17YCR7dGl0bGV9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICBsaW5lSGVpZ2h0PVwidGl0bGVcIlxuICAgICAgICAgICAgey4uLihzZWdtZW50LmhpZ2hsaWdodFxuICAgICAgICAgICAgICA/IHsgYmc6IGhpZ2hsaWdodENvbG9yLCBmb250V2VpZ2h0OiAnYm9sZCcgfVxuICAgICAgICAgICAgICA6IHt9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2VnbWVudC52YWx1ZX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICkpfVxuICAgICAgPC9FbGxpcHNpc0JveD5cbiAgICAgIDxUZXh0IHNjcmVlbnJlYWRlcj57dGl0bGV9PC9UZXh0PlxuICAgIDwvRmxleEJveD5cbiAgKTtcbn07XG5cbnR5cGUgU2VhcmNoQXNZb3VUeXBlTG9hZGVyID0ge1xuICBzaGltbWVyUm93czoge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHNoaW1tZXJzOiB7XG4gICAgICBrZXk6IHN0cmluZztcbiAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgfVtdO1xuICB9W107XG59O1xuXG5sZXQgbG9hZGVyS2V5ID0gMDtcbmZ1bmN0aW9uIHJuZExvYWRlcigpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBsdXNwbHVzXG4gIGNvbnN0IGtleSA9IGxvYWRlcktleSsrO1xuICBjb25zdCBsb2FkZXI6IFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHsgc2hpbW1lclJvd3M6IFtdIH07XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7XG4gICAgY29uc3Qgcm93ID0ge1xuICAgICAga2V5OiBgJHtrZXl9OiR7aX1gLFxuICAgICAgc2hpbW1lcnM6IFtdIGFzIHsga2V5OiBzdHJpbmc7IHdpZHRoOiBudW1iZXIgfVtdLFxuICAgIH07XG4gICAgY29uc3Qgd29yZHMgPSBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDMpO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgd29yZHM7IGorKykge1xuICAgICAgY29uc3Qgd2lkdGggPSAxMiArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDk2KTtcbiAgICAgIHJvdy5zaGltbWVycy5wdXNoKHtcbiAgICAgICAga2V5OiBgJHtrZXl9OiR7an1gLFxuICAgICAgICB3aWR0aCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsb2FkZXIuc2hpbW1lclJvd3MucHVzaChyb3cpO1xuICB9XG4gIHJldHVybiBsb2FkZXI7XG59XG5cbmV4cG9ydCBjb25zdCBTZWFyY2hQYW5lOiBSZWFjdC5GQzxTZWFyY2hQYW5lUHJvcHM+ID0gKHtcbiAgb25TZWFyY2gsXG4gIG9uVHJhY2tpbmdDbGljayxcbiAgc2VhcmNoQnV0dG9uUmVmLFxuICB0b2dnbGVTZWFyY2gsXG4gIG9uU2VhcmNoQXNZb3VUeXBlLFxufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpO1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgY29uc3QgW2F1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zLCBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9uc10gPSB1c2VTdGF0ZTxcbiAgICBBdXRvY29tcGxldGVTdWdnZXN0aW9uW11cbiAgPihbXSk7XG4gIGNvbnN0IFtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLCBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzXSA9XG4gICAgdXNlU3RhdGU8U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IFtzZWFyY2hSZXN1bHRDbGlja2VkLCBzZXRTZWFyY2hSZXN1bHRDbGlja2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG5cbiAgY29uc3QgaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrID1cbiAgICBvblNlYXJjaEFzWW91VHlwZSAmJiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzICYmICFzZWFyY2hSZXN1bHRDbGlja2VkO1xuXG4gIGNvbnN0IGNsb3NlU2VhcmNoID0gYXN5bmMgKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHVzZXIgbWFkZSBhIHNlYXJjaCBhbmQgdGhlbiBjbG9zZWQgc2VhcmNoIHBhbmVcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRvZ2dsZVNlYXJjaCgpO1xuICAgIC8vIGFkZHMgYSBsaXR0bGUgZGVsYXkgYmV0d2VlbiBjbG9zaW5nIHRoZSBzZWFyY2ggcGFuZSBhbmQgZm9jdXNpbmcgb24gdGhlIGJ1dHRvblxuICAgIC8vIHRvIHByZXZlbnQgdGhlIHNlYXJjaCBwYW5lIGZyb20gaW1tZWRpYXRlbHkgb3BlbmluZyBhZ2FpblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHNlYXJjaEJ1dHRvblJlZiAmJiBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgc2VhcmNoQnV0dG9uUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZU9uRXNjSGFuZGxlcihjbG9zZVNlYXJjaCk7XG5cbiAgY29uc3Qgb25Nb3VzZURvd25PdXRzaWRlID0gKHsgdGFyZ2V0IH06IE1vdXNlRXZlbnQpID0+IHtcbiAgICBjb25zdCBoYW5kbGVPdXRzaWRlQ2xpY2sgPSAoKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgICFkb2N1bWVudFxuICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKCdbZGF0YS10ZXN0aWQ9XCJoZWFkZXItc2VhcmNoLWRyb3Bkb3duXCJdJylcbiAgICAgICAgICA/LmNvbnRhaW5zKHRhcmdldCBhcyBIVE1MRWxlbWVudCkgJiZcbiAgICAgICAgdGFyZ2V0ICE9PSBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnRcbiAgICAgICkge1xuICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgfVxuXG4gICAgICB0YXJnZXQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVPdXRzaWRlQ2xpY2spO1xuICAgIH07XG5cbiAgICB0YXJnZXQ/LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVPdXRzaWRlQ2xpY2spO1xuICB9O1xuXG4gIGNvbnN0IG5hdmlnYXRlVG9TZWFyY2ggPSAoc2VhcmNoVGVybTogc3RyaW5nLCBmcm9tUHJldlNlYXJjaD86IHN0cmluZykgPT4ge1xuICAgIG9uU2VhcmNoKHNlYXJjaFRlcm0sIGZyb21QcmV2U2VhcmNoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2U6IFJlYWN0LkNoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICBzZXRWYWx1ZShldnQudGFyZ2V0LnZhbHVlKTtcbiAgICAvLyByZXNldCB0byBmYWxzZSB3aGVuIHRoZSBzZWFyY2ggcXVlcnkgY2hhbmdlc1xuICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQoZmFsc2UpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdDogUmVhY3QuRm9ybUV2ZW50SGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB0aGUgdXNlciBzdWJtaXRzIHRoZSBmb3JtIHRvIGNhcHR1cmUgY29tcGxldGUgcXVlcnlcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgfTtcblxuICBjb25zdCBjbGVhcklucHV0ID0gKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCBiZWZvcmUgdXNlciBjbGVhcnMgaW5wdXRcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIHNldFZhbHVlKCcnKTtcbiAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgLy8gcmVzZXQgdGhlIGNvbnRleHQgd2l0aCBlbXB0eSB2YWx1ZXNcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICBxdWVyeTogJycsXG4gICAgICBzZWFyY2hJZDogJycsXG4gICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICAvLyBhbmQgdHJhY2sgc2VhcmNoIGV2ZW50IGlmIHVzZXIgbWFkZSBhIHNlYXJjaFxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiAoKSA9PiB7XG4gICAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgfVxuXG4gICAgICB0b2dnbGVTZWFyY2goKTtcbiAgICB9LFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIGRvbid0IHRyYWNrIGlmIGEgcmVzdWx0IHdhcyBjbGlja2VkIG9yIGlmIHdlIGRvbid0IGhhdmUgc2VhcmNoIHJlc3VsdHNcbiAgICBpZiAoXG4gICAgICBzZWFyY2hSZXN1bHRDbGlja2VkIHx8XG4gICAgICAhb25TZWFyY2hBc1lvdVR5cGUgfHxcbiAgICAgICFzZWFyY2hBc1lvdVR5cGVSZXN1bHRzIHx8XG4gICAgICAhdmFsdWVUcmltbWVkLmxlbmd0aFxuICAgIClcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLXJldHVyblxuICAgICAgcmV0dXJuO1xuICB9LCBbXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxuICAgIHZhbHVlVHJpbW1lZCxcbiAgICBvblNlYXJjaEFzWW91VHlwZSxcbiAgXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpbnB1dFJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgIHNlYXJjaFdvcmtlci5pbml0KCk7XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghdmFsdWVUcmltbWVkLmxlbmd0aCkge1xuICAgICAgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhudWxsKTtcbiAgICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgICAgcXVlcnk6ICcnLFxuICAgICAgICBzZWFyY2hJZDogJycsXG4gICAgICAgIHJlc3VsdHNDb3VudDogMCxcbiAgICAgICAgcXVlcnlMb2FkVGltZTogMCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBsZXQgY2xlYXJBdXRvY29tcGxldGUgPSB0cnVlO1xuICAgIGxldCBjbGVhclNlYXJjaEFzWW91VHlwZSA9IHRydWU7XG5cbiAgICBsZXQgc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5OiBOb2RlSlMuVGltZW91dDtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2l0aCBhIHNtYWxsIGRlbGF5IHdoZW4gdGhlcmUgYXJlIG5vIHJlc3VsdHNcbiAgICAgIGlmIChcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUgJiZcbiAgICAgICAgcmVzdWx0cy50b3AubGVuZ3RoID09PSAwICYmXG4gICAgICAgICFzZWFyY2hSZXN1bHRDbGlja2VkXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHF1ZXJ5TG9hZFRpbWUgfSA9IHJlc3VsdHM7XG4gICAgICAgIHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICghY2FuY2VsKSB7XG4gICAgICAgICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIDAsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICAgIGNsZWFyVGltZW91dChzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXkpO1xuICAgIH07XG4gIH0sIFtcbiAgICB2YWx1ZVRyaW1tZWQsXG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyxcbiAgXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICBiZz1cInNoYWRvdy1zZWNvbmRhcnlcIlxuICAgICAgICBoZWlnaHQ9XCIxMDB2aFwiXG4gICAgICAgIHBvc2l0aW9uPVwiZml4ZWRcIlxuICAgICAgICAvLyBXZSBhZGQgNXJlbSBoZXJlIGluIGNhc2UgdGhlcmUncyBzb21lIHNvcnQgb2YgYnJhbmRlZCBiYW5uZXIgYWJvdmUgc2VhcmNoXG4gICAgICAgIC8vIFRoZSBzZWFyY2ggYXJlYSBpcyBtdWNoIHRhbGxlciB0aGFuIDVyZW0gc28gdGhpcyBpcyBhIHNhZmUgYW1vdW50IG9mIHBhZGRpbmdcbiAgICAgICAgdG9wPXtgY2FsYygke3RoZW1lLmVsZW1lbnRzLmhlYWRlckhlaWdodH0gKyA1cmVtKWB9XG4gICAgICAgIHdpZHRoPXsxfVxuICAgICAgLz5cbiAgICAgIDxGb2N1c1RyYXBcbiAgICAgICAgb25Fc2NhcGVLZXk9e2Nsb3NlU2VhcmNofVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249XCJhYnNvbHV0ZVwiXG4gICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICBtYXhIZWlnaHQ9e3sgXzogJ2NhbGMoMTAwdmggLSA2M3B4KScsIG1kOiAnY2FsYygxMDB2aCAtIDgwcHgpJyB9fVxuICAgICAgICAgIG92ZXJmbG93PVwiYXV0b1wiXG4gICAgICAgID5cbiAgICAgICAgICA8Qm94IGJvcmRlcj1cIm5vbmVcIiB3aWR0aD1cImF1dG9cIj5cbiAgICAgICAgICAgIDxRdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiYmFzZWxpbmVcIlxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiZ3JheS02MDBcIlxuICAgICAgICAgICAgICAgIGJvcmRlclN0eWxlQm90dG9tPVwic29saWRcIlxuICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoQm90dG9tPVwiMXB4XCJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgIGhlaWdodD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgICB3aWR0aD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8Rm9ybVxuICAgICAgICAgICAgICAgICAgYWN0aW9uPVwiL3NlYXJjaFwiXG4gICAgICAgICAgICAgICAgICBpZD1cInNlYXJjaC1mb3JtXCJcbiAgICAgICAgICAgICAgICAgIG1sPXs4fVxuICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0eWxlZElucHV0XG4gICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcj1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAyMCwgbWQ6IDI2IH19XG4gICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ9XCJib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJoZWFkZXItc2VhcmNoLWJhclwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJxdWVyeVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGUpID0+IG9uS2V5RG93bihlKX1cbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3NlYXJjaFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICAgICAgICByZWY9e2lucHV0UmVmfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L0Zvcm0+XG4gICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgIGljb249e01pbmlEZWxldGVJY29ufVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyIHNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICB0aXA9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwUHJvcHM9e3tcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50OiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogJ2Zsb2F0aW5nJyxcbiAgICAgICAgICAgICAgICAgICAgbmFycm93OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDIsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17Y2xlYXJJbnB1dH1cbiAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgPC9RdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8U3VnZ2VzdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgIHt2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8RmxleEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCIgYXM9XCJ1bFwiIGxpc3RTdHlsZT1cIm5vbmVcIiBwPXswfT5cbiAgICAgICAgICAgICAgICAgIHthdXRvQ29tcGxldGVTdWdnZXN0aW9ucy5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtzLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ2F1dG9jb21wbGV0ZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbWlib2xkU2VhcmNoSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgbWI9ezIgYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9ezE0fVxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9ezh9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICAgICAgICAgICAgICAgICAgbXI9ezEyfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPEhpZ2hsaWdodGVkVGV4dCBzdWdnZXN0aW9uPXtzfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgIHsoc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy50b3AubGVuZ3RoID4gMCkgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPFRleHQgYXM9XCJoMlwiIGZvbnRTaXplPXsyMH0gbWI9ezE2fSBtdD17MjR9PlxuICAgICAgICAgICAgICAgICAgICAgIFRvcCByZXN1bHRzXG4gICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgICBhcz1cInVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBsaXN0U3R5bGU9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICBwPXswfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc2VhcmNoQXNZb3VUeXBlTG9hZGVyPy5zaGltbWVyUm93cy5tYXAoKHIpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lTG9hZGVyTGkga2V5PXtyLmtleX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ci5zaGltbWVycy5tYXAoKHdvcmQpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNoaW1tZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezMwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5PXs4IGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXt3b3JkLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17d29yZC53aWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RmFtaWx5PVwiYWNjZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yPVwidGV4dC1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAxMCBhcyAxNiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImJvcmRlci1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI9ezF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1cz1cInhsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHg9ezE2fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5PXswLjF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVMb2FkZXJMaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy50b3AubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnF1ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJsaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZWx5UmVkaXJlY3Qocy51cmxQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnOiBzLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgY29udGVudF9pZDogcy5jb250ZW50SWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlbHlSZWRpcmVjdChzLnVybFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmFkZ2Ugc2l6ZT1cInNtXCIgdmFyaWFudD1cInRlcnRpYXJ5XCIgbWw9ezEyfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3MudHlwZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmFkZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge3NlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggPT09IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPEJveCBmb250U2l6ZT17eyBfOiAyMCwgc206IDI2IH19IG10PXswfSBtYj17NDh9PlxuICAgICAgICAgICAgICAgICAgICAgIHtgV2UgY291bGRuJ3QgZmluZCBhIG1hdGNoIGZvciBgfVxuICAgICAgICAgICAgICAgICAgICAgIDxUZXh0IGZvbnRXZWlnaHQ9XCJib2xkXCI+e2BcIiR7dmFsdWVUcmltbWVkfS5cImB9PC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICcgVHJ5IGFub3RoZXIga2V5d29yZCwgb3Igc2VlIHdoYXQgb3VyIG1lbWJlcnMgYXJlIGxlYXJuaW5nLidcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPE1lbnUgYm9yZGVyPVwibm9uZVwiIHZhcmlhbnQ9XCJwb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgPFBvcHVsYXJTZWFyY2hlc1xuICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaD17bmF2aWdhdGVUb1NlYXJjaH1cbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPFBvcHVsYXJDb250ZW50IG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfSAvPlxuICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7ISFzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy50b3AubGVuZ3RoICYmIChcbiAgICAgICAgICAgICAgPFN0cm9rZUJ1dHRvblxuICAgICAgICAgICAgICAgIG15PXsxNn1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3ZpZXdfYWxsX3Jlc3VsdHMnLCB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaCh2YWx1ZSwgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQpO1xuICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgVmlldyBhbGwgcmVzdWx0c1xuICAgICAgICAgICAgICA8L1N0cm9rZUJ1dHRvbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8UXVpekFuZEhlbHBDZW50ZXJMaW5rc1xuICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja31cbiAgICAgICAgICAgICAgaGFuZGxlQ2xvc2VEcm9wZG93bj17Y2xvc2VTZWFyY2h9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3VnZ2VzdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgPC9Cb3g+XG4gICAgICA8L0ZvY3VzVHJhcD5cbiAgICA8Lz5cbiAgKTtcbn07XG4iXX0= */");
82
83
  export const SemiboldSearchIcon = /*#__PURE__*/_styled(SearchIcon, {
83
84
  target: "e1e5b20r1",
84
85
  label: "SemiboldSearchIcon"
@@ -87,7 +88,7 @@ export const SemiboldSearchIcon = /*#__PURE__*/_styled(SearchIcon, {
87
88
  styles: "overflow:visible!important;circle,path{stroke-width:2px;}rect{transform:translate(-2px, -2px);height:calc(100% + 4px);width:calc(100% + 4px);}"
88
89
  } : {
89
90
  name: "138xhwl",
90
- styles: "overflow:visible!important;circle,path{stroke-width:2px;}rect{transform:translate(-2px, -2px);height:calc(100% + 4px);width:calc(100% + 4px);}/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1Gb0QiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVVybENoYW5nZURldGVjdGlvbiB9IGZyb20gJy4vaG9va3MvdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uJztcbmltcG9ydCB7IFF1aXpBbmRIZWxwQ2VudGVyTGlua3MgfSBmcm9tICcuL1F1aXpBbmRIZWxwQ2VudGVyTGlua3MnO1xuaW1wb3J0IHsgc2FmZWx5UmVkaXJlY3QgfSBmcm9tICcuL3NhZmVseVJlZGlyZWN0JztcbmltcG9ydCB7IHNlYXJjaFdvcmtlciB9IGZyb20gJy4vU2VhcmNoV29ya2VyJztcbmltcG9ydCB0eXBlIHtcbiAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbixcbiAgU2VhcmNoQXNZb3VUeXBlUmVzdWx0cyxcbn0gZnJvbSAnLi9TZWFyY2hXb3JrZXIvdHlwZXMnO1xuaW1wb3J0IHsgU2VhcmNoUGFuZVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IEZvcm0gPSBCb3gud2l0aENvbXBvbmVudCgnZm9ybScpO1xuY29uc3QgSW5wdXQgPSBCb3gud2l0aENvbXBvbmVudCgnaW5wdXQnKTtcblxuY29uc3QgUXVlcnlDb250YWluZXIgPSBzdHlsZWQoQ29udGVudENvbnRhaW5lcikoXG4gIGNzcyh7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgcHQ6IDE2LFxuICAgIHBiOiB7IF86IDAsIG1kOiAyNCB9LFxuICAgIHB4OiB7IF86IDI0IH0sXG4gIH0pXG4pO1xuXG5jb25zdCBTdWdnZXN0aW9uQ29udGFpbmVyID0gc3R5bGVkKENvbnRlbnRDb250YWluZXIpKFxuICBjc3Moe1xuICAgIHB0OiAxNixcbiAgICBwYjogeyBfOiAwLCBtZDogMjQgfSxcbiAgICBweDogeyBfOiAyNCB9LFxuICB9KVxuKTtcblxuY29uc3QgU3R5bGVkSW5wdXQgPSBzdHlsZWQoSW5wdXQpKFxuICBjc3Moe1xuICAgIG91dGxpbmU6IGBub25lYCxcbiAgICAnJjo6cGxhY2Vob2xkZXInOiB7XG4gICAgICB0ZXh0Q29sb3I6IHRoZW1lLmNvbG9yc1sndGV4dC1zZWNvbmRhcnknXSBhcyBuZXZlcixcbiAgICB9LFxuICB9KVxuKTtcblxuY29uc3QgSW5saW5lUmVzdWx0TGkgPSBzdHlsZWQoTWVudUl0ZW0pKFxuICBjc3Moe1xuICAgIHBsOiAwLFxuICAgIHB5OiA4LFxuICAgIGZvbnRTaXplOiAxNixcbiAgICAnJjpmb2N1cy12aXNpYmxlOmFmdGVyJzoge1xuICAgICAgbGVmdDogLTQsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IElubGluZUxvYWRlckxpID0gc3R5bGVkLmxpKFxuICBjc3Moe1xuICAgIGxpc3RTdHlsZVR5cGU6ICdub25lJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZ2FwOiAxMixcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgfSlcbik7XG5cbmV4cG9ydCBjb25zdCBTZW1pYm9sZFNlYXJjaEljb24gPSBzdHlsZWQoU2VhcmNoSWNvbilgXG4gIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gIGNpcmNsZSxcbiAgcGF0aCB7XG4gICAgc3Ryb2tlLXdpZHRoOiAycHg7XG4gIH1cbiAgcmVjdCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTJweCwgLTJweCk7XG4gICAgaGVpZ2h0OiBjYWxjKDEwMCUgKyA0cHgpO1xuICAgIHdpZHRoOiBjYWxjKDEwMCUgKyA0cHgpO1xuICB9XG5gO1xuXG5jb25zdCBFbGxpcHNpc0JveCA9IHN0eWxlZChCb3gpYFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbmA7XG5cbmNvbnN0IEhpZ2hsaWdodGVkVGV4dCA9ICh7XG4gIHN1Z2dlc3Rpb246IHsgdGl0bGUsIHNlZ21lbnRzIH0sXG59OiB7XG4gIHN1Z2dlc3Rpb246IEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb247XG59KSA9PiB7XG4gIGNvbnN0IG1vZGUgPSB1c2VDdXJyZW50TW9kZSgpO1xuICBjb25zdCBoaWdobGlnaHRDb2xvciA9IG1vZGUgPT09ICdkYXJrJyA/ICdoeXBlcicgOiAneWVsbG93JztcblxuICByZXR1cm4gKFxuICAgIDxGbGV4Qm94PlxuICAgICAgPEVsbGlwc2lzQm94XG4gICAgICAgIG1heFdpZHRoPVwiY2FsYygxMDB2dyAtIDEyOHB4KVwiXG4gICAgICAgIHdoaXRlU3BhY2U9XCJwcmVcIlxuICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICBvdmVyZmxvdz1cImhpZGRlblwiXG4gICAgICA+XG4gICAgICAgIHtzZWdtZW50cy5tYXAoKHNlZ21lbnQsIGkpID0+IChcbiAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAga2V5PXtgJHt0aXRsZX06JHtpLnRvU3RyaW5nKCl9YH1cbiAgICAgICAgICAgIGxpbmVIZWlnaHQ9XCJ0aXRsZVwiXG4gICAgICAgICAgICB7Li4uKHNlZ21lbnQuaGlnaGxpZ2h0XG4gICAgICAgICAgICAgID8geyBiZzogaGlnaGxpZ2h0Q29sb3IsIGZvbnRXZWlnaHQ6ICdib2xkJyB9XG4gICAgICAgICAgICAgIDoge30pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtzZWdtZW50LnZhbHVlfVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgKSl9XG4gICAgICA8L0VsbGlwc2lzQm94PlxuICAgICAgPFRleHQgc2NyZWVucmVhZGVyPnt0aXRsZX08L1RleHQ+XG4gICAgPC9GbGV4Qm94PlxuICApO1xufTtcblxudHlwZSBTZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSB7XG4gIHNoaW1tZXJSb3dzOiB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgc2hpbW1lcnM6IHtcbiAgICAgIGtleTogc3RyaW5nO1xuICAgICAgd2lkdGg6IG51bWJlcjtcbiAgICB9W107XG4gIH1bXTtcbn07XG5cbmxldCBsb2FkZXJLZXkgPSAwO1xuZnVuY3Rpb24gcm5kTG9hZGVyKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGx1c3BsdXNcbiAgY29uc3Qga2V5ID0gbG9hZGVyS2V5Kys7XG4gIGNvbnN0IGxvYWRlcjogU2VhcmNoQXNZb3VUeXBlTG9hZGVyID0geyBzaGltbWVyUm93czogW10gfTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCA1OyBpKyspIHtcbiAgICBjb25zdCByb3cgPSB7XG4gICAgICBrZXk6IGAke2tleX06JHtpfWAsXG4gICAgICBzaGltbWVyczogW10gYXMgeyBrZXk6IHN0cmluZzsgd2lkdGg6IG51bWJlciB9W10sXG4gICAgfTtcbiAgICBjb25zdCB3b3JkcyA9IE1hdGguY2VpbChNYXRoLnJhbmRvbSgpICogMyk7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCB3b3JkczsgaisrKSB7XG4gICAgICBjb25zdCB3aWR0aCA9IDEyICsgTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogOTYpO1xuICAgICAgcm93LnNoaW1tZXJzLnB1c2goe1xuICAgICAgICBrZXk6IGAke2tleX06JHtqfWAsXG4gICAgICAgIHdpZHRoLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGxvYWRlci5zaGltbWVyUm93cy5wdXNoKHJvdyk7XG4gIH1cbiAgcmV0dXJuIGxvYWRlcjtcbn1cblxuZXhwb3J0IGNvbnN0IFNlYXJjaFBhbmU6IFJlYWN0LkZDPFNlYXJjaFBhbmVQcm9wcz4gPSAoe1xuICBvblNlYXJjaCxcbiAgb25UcmFja2luZ0NsaWNrLFxuICBzZWFyY2hCdXR0b25SZWYsXG4gIHRvZ2dsZVNlYXJjaCxcbiAgb25TZWFyY2hBc1lvdVR5cGUsXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgnJyk7XG4gIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBbYXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMsIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zXSA9IHVzZVN0YXRlPFxuICAgIEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb25bXVxuICA+KFtdKTtcblxuICBjb25zdCBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0cywgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0c10gPVxuICAgIHVzZVN0YXRlPFNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCBjbG9zZVNlYXJjaCA9IGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCB0b2dnbGVTZWFyY2goKTtcbiAgICAvLyBhZGRzIGEgbGl0dGxlIGRlbGF5IGJldHdlZW4gY2xvc2luZyB0aGUgc2VhcmNoIHBhbmUgYW5kIGZvY3VzaW5nIG9uIHRoZSBidXR0b25cbiAgICAvLyB0byBwcmV2ZW50IHRoZSBzZWFyY2ggcGFuZSBmcm9tIGltbWVkaWF0ZWx5IG9wZW5pbmcgYWdhaW5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmIChzZWFyY2hCdXR0b25SZWYgJiYgc2VhcmNoQnV0dG9uUmVmPy5jdXJyZW50KSB7XG4gICAgICAgIHNlYXJjaEJ1dHRvblJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgICAgfVxuICAgIH0sIDEwKTtcbiAgfTtcblxuICBjb25zdCBvbktleURvd24gPSB1c2VPbkVzY0hhbmRsZXIoY2xvc2VTZWFyY2gpO1xuXG4gIGNvbnN0IG9uTW91c2VEb3duT3V0c2lkZSA9ICh7IHRhcmdldCB9OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgaGFuZGxlT3V0c2lkZUNsaWNrID0gKCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICAhZG9jdW1lbnRcbiAgICAgICAgICAucXVlcnlTZWxlY3RvcignW2RhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXScpXG4gICAgICAgICAgPy5jb250YWlucyh0YXJnZXQgYXMgSFRNTEVsZW1lbnQpICYmXG4gICAgICAgIHRhcmdldCAhPT0gc2VhcmNoQnV0dG9uUmVmPy5jdXJyZW50XG4gICAgICApIHtcbiAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgIH1cblxuICAgICAgdGFyZ2V0Py5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlT3V0c2lkZUNsaWNrKTtcbiAgICB9O1xuXG4gICAgdGFyZ2V0Py5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlT3V0c2lkZUNsaWNrKTtcbiAgfTtcblxuICBjb25zdCBuYXZpZ2F0ZVRvU2VhcmNoID0gKHNlYXJjaFRlcm06IHN0cmluZywgZnJvbVByZXZTZWFyY2g/OiBzdHJpbmcpID0+IHtcbiAgICBvblNlYXJjaChzZWFyY2hUZXJtLCBmcm9tUHJldlNlYXJjaCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlOiBSZWFjdC5DaGFuZ2VFdmVudEhhbmRsZXI8SFRNTElucHV0RWxlbWVudD4gPSAoZXZ0KSA9PiB7XG4gICAgc2V0VmFsdWUoZXZ0LnRhcmdldC52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlU3VibWl0OiBSZWFjdC5Gb3JtRXZlbnRIYW5kbGVyID0gKGV2ZW50KSA9PiB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gIH07XG5cbiAgY29uc3QgY2xlYXJJbnB1dCA9ICgpID0+IHtcbiAgICBzZXRWYWx1ZSgnJyk7XG4gICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiB0b2dnbGVTZWFyY2gsXG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaW5wdXRSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICBzZWFyY2hXb3JrZXIuaW5pdCgpO1xuICB9LCBbXSk7XG5cbiAgY29uc3QgdmFsdWVUcmltbWVkID0gdmFsdWUudHJpbSgpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF2YWx1ZVRyaW1tZWQubGVuZ3RoKSB7XG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBsZXQgY2xlYXJBdXRvY29tcGxldGUgPSB0cnVlO1xuICAgIGxldCBjbGVhclNlYXJjaEFzWW91VHlwZSA9IHRydWU7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8qXG4gICAgICAgKiBXYWl0IDEwIHNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICAvLyBvblNlYXJjaEFzWW91VHlwZSBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgdHJhY2tpbmdcbiAgICAgIGlmIChvblNlYXJjaEFzWW91VHlwZSkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAvKlxuICAgICAgICAgICAqIFRoaXMgdGltZW91dCBhbmQgY2FuY2VsIGNoZWNrIGlzIGEgZGVib3VuY2UgdGhhdCBlbnN1cmVzIHdlIGRvIG5vdFxuICAgICAgICAgICAqIHNlbmQgdHJhY2tpbmcgZXZlbnRzIGZvciBldmVyeSBrZXlzdHJva2UsIGJ1dCBvbmx5IHdoZW4gdGhlIHVzZXJcbiAgICAgICAgICAgKiBzdG9wcyB0eXBpbmcgZm9yIDI1MG1zLiBXZSBwcmV2aW91c2x5IHVzZWQgdGhpcyBkZWJvdW5jZSBmb3IgdGhlXG4gICAgICAgICAgICogc2VhcmNoLWFzLXlvdS10eXBlIHF1ZXJ5IGFzIGEgd2hvbGUsIGJ1dCB0aGlzIGlzIG5vdCBuZWNlc3NhcnlcbiAgICAgICAgICAgKiBmcm9tIGEgbG9hZCBzdGFuZHBvaW50IHNpbmNlIHdlIGhhdmUgY2FjaGluZyBpbXBsZW1lbnRlZCBvbiBib3RoXG4gICAgICAgICAgICogY2xpZW50IGFuZCBzZXJ2ZXIuIEFwcGx5aW5nIHRoZSBkZWJvdW5jZSBvbmx5IGZvciB0aGlzIGNhbGxiYWNrXG4gICAgICAgICAgICogYWxsb3dzIHVzIHRvIG1haW50YWluIHRoZSBtb3N0IHNuYXBweSB1c2VyIGV4cGVyaWVuY2UgYW5kIHN0aWxsXG4gICAgICAgICAgICogaGF2ZSBub24tbm9pc3kgdHJhY2tpbmcuXG4gICAgICAgICAgICovXG4gICAgICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuO1xuICAgICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9IHJlc3VsdHM7XG4gICAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgICB9LCAyNTApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNhbmNlbCA9IHRydWU7XG4gICAgfTtcbiAgfSwgW3ZhbHVlVHJpbW1lZCwgb25TZWFyY2hBc1lvdVR5cGVdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIGJnPVwic2hhZG93LXNlY29uZGFyeVwiXG4gICAgICAgIGhlaWdodD1cIjEwMHZoXCJcbiAgICAgICAgcG9zaXRpb249XCJmaXhlZFwiXG4gICAgICAgIC8vIFdlIGFkZCA1cmVtIGhlcmUgaW4gY2FzZSB0aGVyZSdzIHNvbWUgc29ydCBvZiBicmFuZGVkIGJhbm5lciBhYm92ZSBzZWFyY2hcbiAgICAgICAgLy8gVGhlIHNlYXJjaCBhcmVhIGlzIG11Y2ggdGFsbGVyIHRoYW4gNXJlbSBzbyB0aGlzIGlzIGEgc2FmZSBhbW91bnQgb2YgcGFkZGluZ1xuICAgICAgICB0b3A9e2BjYWxjKCR7dGhlbWUuZWxlbWVudHMuaGVhZGVySGVpZ2h0fSArIDVyZW0pYH1cbiAgICAgICAgd2lkdGg9ezF9XG4gICAgICAvPlxuICAgICAgPEZvY3VzVHJhcFxuICAgICAgICBvbkVzY2FwZUtleT17Y2xvc2VTZWFyY2h9XG4gICAgICAgIG9uQ2xpY2tPdXRzaWRlPXtvbk1vdXNlRG93bk91dHNpZGV9XG4gICAgICAgIGFsbG93UGFnZUludGVyYWN0aW9uXG4gICAgICA+XG4gICAgICAgIDxCb3hcbiAgICAgICAgICBiZz1cImJhY2tncm91bmRcIlxuICAgICAgICAgIGJvcmRlckNvbG9yQm90dG9tPVwiYm9yZGVyLXByaW1hcnlcIlxuICAgICAgICAgIGJvcmRlckNvbG9yVG9wPVwiYm9yZGVyLXRlcnRpYXJ5XCJcbiAgICAgICAgICBib3JkZXJTdHlsZT1cInNvbGlkXCJcbiAgICAgICAgICBib3JkZXJXaWR0aD1cIjJweCAwIDFweFwiXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJoZWFkZXItc2VhcmNoLWRyb3Bkb3duXCJcbiAgICAgICAgICBwb3NpdGlvbj17eyBfOiAnZml4ZWQnLCBtZDogJ2Fic29sdXRlJyB9fVxuICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgbWF4SGVpZ2h0PXt7IF86ICdjYWxjKDEwMHZoIC0gNjNweCknLCBtZDogJ2NhbGMoMTAwdmggLSA4MHB4KScgfX1cbiAgICAgICAgICBvdmVyZmxvdz1cImF1dG9cIlxuICAgICAgICAgIHpJbmRleD17MTB9IC8vIGVuc3VyZSBkcm9wZG93biBpcyBhYm92ZSB0aGUgcGFnZSBjb250ZW50XG4gICAgICAgID5cbiAgICAgICAgICA8Qm94IGJvcmRlcj1cIm5vbmVcIiB3aWR0aD1cImF1dG9cIj5cbiAgICAgICAgICAgIDxRdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiYmFzZWxpbmVcIlxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiZ3JheS02MDBcIlxuICAgICAgICAgICAgICAgIGJvcmRlclN0eWxlQm90dG9tPVwic29saWRcIlxuICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoQm90dG9tPVwiMXB4XCJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgIGhlaWdodD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgICB3aWR0aD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8Rm9ybVxuICAgICAgICAgICAgICAgICAgYWN0aW9uPVwiL3NlYXJjaFwiXG4gICAgICAgICAgICAgICAgICBpZD1cInNlYXJjaC1mb3JtXCJcbiAgICAgICAgICAgICAgICAgIG1sPXs4fVxuICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0eWxlZElucHV0XG4gICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcj1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAyMCwgbWQ6IDI2IH19XG4gICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ9XCJib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJoZWFkZXItc2VhcmNoLWJhclwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJxdWVyeVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGUpID0+IG9uS2V5RG93bihlKX1cbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3NlYXJjaFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICAgICAgICByZWY9e2lucHV0UmVmfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L0Zvcm0+XG4gICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgIGljb249e01pbmlEZWxldGVJY29ufVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyIHNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICB0aXA9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwUHJvcHM9e3tcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50OiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogJ2Zsb2F0aW5nJyxcbiAgICAgICAgICAgICAgICAgICAgbmFycm93OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDIsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17Y2xlYXJJbnB1dH1cbiAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgPC9RdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8U3VnZ2VzdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgIHt2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8RmxleEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCIgYXM9XCJ1bFwiIGxpc3RTdHlsZT1cIm5vbmVcIiBwPXswfT5cbiAgICAgICAgICAgICAgICAgIHthdXRvQ29tcGxldGVTdWdnZXN0aW9ucy5tYXAoKHMpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtzLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoeyB2YWx1ZTogcy50aXRsZSB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7IHZhbHVlOiBzLnRpdGxlIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW1pYm9sZFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1iPXsyIGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPXsxNH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXs4fVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1yPXsxMn1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICB7KHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0IGFzPVwiaDJcIiBmb250U2l6ZT17MjB9IG1iPXsxNn0gbXQ9ezI0fT5cbiAgICAgICAgICAgICAgICAgICAgICBUb3AgcmVzdWx0c1xuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbj1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJ1bFwiXG4gICAgICAgICAgICAgICAgICAgICAgbGlzdFN0eWxlPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcD17MH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNlYXJjaEFzWW91VHlwZUxvYWRlcj8uc2hpbW1lclJvd3MubWFwKChyKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZUxvYWRlckxpIGtleT17ci5rZXl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Iuc2hpbW1lcnMubWFwKCh3b3JkKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTaGltbWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXszMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweT17OCBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17d29yZC5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9e3dvcmQud2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseT1cImFjY2VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDb2xvcj1cInRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMTAgYXMgMTYgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I9XCJib3JkZXItc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyPXsxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM9XCJ4bFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB4PXsxNn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eT17MC4xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lTG9hZGVyTGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLm1hcCgocywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5xdWVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwibGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3NlYXJjaF9hc195b3VfdHlwZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnOiBzLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4ocy5jb250ZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlbHlSZWRpcmVjdChzLnVybFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3NlYXJjaF9hc195b3VfdHlwZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHMuc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4ocy5jb250ZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZSBzaXplPVwic21cIiB2YXJpYW50PVwidGVydGlhcnlcIiBtbD17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cy50eXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8Qm94IGZvbnRTaXplPXt7IF86IDIwLCBzbTogMjYgfX0gbXQ9ezB9IG1iPXs0OH0+XG4gICAgICAgICAgICAgICAgICAgICAge2BXZSBjb3VsZG4ndCBmaW5kIGEgbWF0Y2ggZm9yIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPFRleHQgZm9udFdlaWdodD1cImJvbGRcIj57YFwiJHt2YWx1ZVRyaW1tZWR9LlwiYH08L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgJyBUcnkgYW5vdGhlciBrZXl3b3JkLCBvciBzZWUgd2hhdCBvdXIgbWVtYmVycyBhcmUgbGVhcm5pbmcuJ1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICA8UG9wdWxhclNlYXJjaGVzXG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoPXtuYXZpZ2F0ZVRvU2VhcmNofVxuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHshIXNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICA8U3Ryb2tlQnV0dG9uXG4gICAgICAgICAgICAgICAgbXk9ezE2fVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygndmlld19hbGxfcmVzdWx0cycsIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBWaWV3IGFsbCByZXN1bHRzXG4gICAgICAgICAgICAgIDwvU3Ryb2tlQnV0dG9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxRdWl6QW5kSGVscENlbnRlckxpbmtzXG4gICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICBoYW5kbGVDbG9zZURyb3Bkb3duPXtjbG9zZVNlYXJjaH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TdWdnZXN0aW9uQ29udGFpbmVyPlxuICAgICAgICA8L0JveD5cbiAgICAgIDwvRm9jdXNUcmFwPlxuICAgIDwvPlxuICApO1xufTtcbiJdfQ== */",
91
+ styles: "overflow:visible!important;circle,path{stroke-width:2px;}rect{transform:translate(-2px, -2px);height:calc(100% + 4px);width:calc(100% + 4px);}/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9Gb0QiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVVybENoYW5nZURldGVjdGlvbiB9IGZyb20gJy4vaG9va3MvdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uJztcbmltcG9ydCB7IFF1aXpBbmRIZWxwQ2VudGVyTGlua3MgfSBmcm9tICcuL1F1aXpBbmRIZWxwQ2VudGVyTGlua3MnO1xuaW1wb3J0IHsgc2FmZWx5UmVkaXJlY3QgfSBmcm9tICcuL3NhZmVseVJlZGlyZWN0JztcbmltcG9ydCB7IHVzZVNlYXJjaFRyYWNraW5nQ29udGV4dCB9IGZyb20gJy4vU2VhcmNoVHJhY2tpbmdQcm92aWRlcic7XG5pbXBvcnQgeyBzZWFyY2hXb3JrZXIgfSBmcm9tICcuL1NlYXJjaFdvcmtlcic7XG5pbXBvcnQgdHlwZSB7XG4gIEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb24sXG4gIFNlYXJjaEFzWW91VHlwZVJlc3VsdHMsXG59IGZyb20gJy4vU2VhcmNoV29ya2VyL3R5cGVzJztcbmltcG9ydCB7IFNlYXJjaFBhbmVQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBGb3JtID0gQm94LndpdGhDb21wb25lbnQoJ2Zvcm0nKTtcbmNvbnN0IElucHV0ID0gQm94LndpdGhDb21wb25lbnQoJ2lucHV0Jyk7XG5cbmNvbnN0IFF1ZXJ5Q29udGFpbmVyID0gc3R5bGVkKENvbnRlbnRDb250YWluZXIpKFxuICBjc3Moe1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIHB0OiAxNixcbiAgICBwYjogeyBfOiAwLCBtZDogMjQgfSxcbiAgICBweDogeyBfOiAyNCB9LFxuICB9KVxuKTtcblxuY29uc3QgU3VnZ2VzdGlvbkNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKShcbiAgY3NzKHtcbiAgICBwdDogMTYsXG4gICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgcHg6IHsgXzogMjQgfSxcbiAgfSlcbik7XG5cbmNvbnN0IFN0eWxlZElucHV0ID0gc3R5bGVkKElucHV0KShcbiAgY3NzKHtcbiAgICBvdXRsaW5lOiBgbm9uZWAsXG4gICAgJyY6OnBsYWNlaG9sZGVyJzoge1xuICAgICAgdGV4dENvbG9yOiB0aGVtZS5jb2xvcnNbJ3RleHQtc2Vjb25kYXJ5J10gYXMgbmV2ZXIsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IElubGluZVJlc3VsdExpID0gc3R5bGVkKE1lbnVJdGVtKShcbiAgY3NzKHtcbiAgICBwbDogMCxcbiAgICBweTogOCxcbiAgICBmb250U2l6ZTogMTYsXG4gICAgJyY6Zm9jdXMtdmlzaWJsZTphZnRlcic6IHtcbiAgICAgIGxlZnQ6IC00LFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVMb2FkZXJMaSA9IHN0eWxlZC5saShcbiAgY3NzKHtcbiAgICBsaXN0U3R5bGVUeXBlOiAnbm9uZScsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGdhcDogMTIsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIH0pXG4pO1xuXG5leHBvcnQgY29uc3QgU2VtaWJvbGRTZWFyY2hJY29uID0gc3R5bGVkKFNlYXJjaEljb24pYFxuICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICBjaXJjbGUsXG4gIHBhdGgge1xuICAgIHN0cm9rZS13aWR0aDogMnB4O1xuICB9XG4gIHJlY3Qge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0ycHgsIC0ycHgpO1xuICAgIGhlaWdodDogY2FsYygxMDAlICsgNHB4KTtcbiAgICB3aWR0aDogY2FsYygxMDAlICsgNHB4KTtcbiAgfVxuYDtcblxuY29uc3QgRWxsaXBzaXNCb3ggPSBzdHlsZWQoQm94KWBcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5gO1xuXG5jb25zdCBIaWdobGlnaHRlZFRleHQgPSAoe1xuICBzdWdnZXN0aW9uOiB7IHRpdGxlLCBzZWdtZW50cyB9LFxufToge1xuICBzdWdnZXN0aW9uOiBBdXRvY29tcGxldGVTdWdnZXN0aW9uO1xufSkgPT4ge1xuICBjb25zdCBtb2RlID0gdXNlQ3VycmVudE1vZGUoKTtcbiAgY29uc3QgaGlnaGxpZ2h0Q29sb3IgPSBtb2RlID09PSAnZGFyaycgPyAnaHlwZXInIDogJ3llbGxvdyc7XG5cbiAgcmV0dXJuIChcbiAgICA8RmxleEJveD5cbiAgICAgIDxFbGxpcHNpc0JveFxuICAgICAgICBtYXhXaWR0aD1cImNhbGMoMTAwdncgLSAxMjhweClcIlxuICAgICAgICB3aGl0ZVNwYWNlPVwicHJlXCJcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgb3ZlcmZsb3c9XCJoaWRkZW5cIlxuICAgICAgPlxuICAgICAgICB7c2VnbWVudHMubWFwKChzZWdtZW50LCBpKSA9PiAoXG4gICAgICAgICAgPFRleHRcbiAgICAgICAgICAgIGtleT17YCR7dGl0bGV9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICBsaW5lSGVpZ2h0PVwidGl0bGVcIlxuICAgICAgICAgICAgey4uLihzZWdtZW50LmhpZ2hsaWdodFxuICAgICAgICAgICAgICA/IHsgYmc6IGhpZ2hsaWdodENvbG9yLCBmb250V2VpZ2h0OiAnYm9sZCcgfVxuICAgICAgICAgICAgICA6IHt9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2VnbWVudC52YWx1ZX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICkpfVxuICAgICAgPC9FbGxpcHNpc0JveD5cbiAgICAgIDxUZXh0IHNjcmVlbnJlYWRlcj57dGl0bGV9PC9UZXh0PlxuICAgIDwvRmxleEJveD5cbiAgKTtcbn07XG5cbnR5cGUgU2VhcmNoQXNZb3VUeXBlTG9hZGVyID0ge1xuICBzaGltbWVyUm93czoge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHNoaW1tZXJzOiB7XG4gICAgICBrZXk6IHN0cmluZztcbiAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgfVtdO1xuICB9W107XG59O1xuXG5sZXQgbG9hZGVyS2V5ID0gMDtcbmZ1bmN0aW9uIHJuZExvYWRlcigpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBsdXNwbHVzXG4gIGNvbnN0IGtleSA9IGxvYWRlcktleSsrO1xuICBjb25zdCBsb2FkZXI6IFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHsgc2hpbW1lclJvd3M6IFtdIH07XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7XG4gICAgY29uc3Qgcm93ID0ge1xuICAgICAga2V5OiBgJHtrZXl9OiR7aX1gLFxuICAgICAgc2hpbW1lcnM6IFtdIGFzIHsga2V5OiBzdHJpbmc7IHdpZHRoOiBudW1iZXIgfVtdLFxuICAgIH07XG4gICAgY29uc3Qgd29yZHMgPSBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDMpO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgd29yZHM7IGorKykge1xuICAgICAgY29uc3Qgd2lkdGggPSAxMiArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDk2KTtcbiAgICAgIHJvdy5zaGltbWVycy5wdXNoKHtcbiAgICAgICAga2V5OiBgJHtrZXl9OiR7an1gLFxuICAgICAgICB3aWR0aCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsb2FkZXIuc2hpbW1lclJvd3MucHVzaChyb3cpO1xuICB9XG4gIHJldHVybiBsb2FkZXI7XG59XG5cbmV4cG9ydCBjb25zdCBTZWFyY2hQYW5lOiBSZWFjdC5GQzxTZWFyY2hQYW5lUHJvcHM+ID0gKHtcbiAgb25TZWFyY2gsXG4gIG9uVHJhY2tpbmdDbGljayxcbiAgc2VhcmNoQnV0dG9uUmVmLFxuICB0b2dnbGVTZWFyY2gsXG4gIG9uU2VhcmNoQXNZb3VUeXBlLFxufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpO1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgY29uc3QgW2F1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zLCBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9uc10gPSB1c2VTdGF0ZTxcbiAgICBBdXRvY29tcGxldGVTdWdnZXN0aW9uW11cbiAgPihbXSk7XG4gIGNvbnN0IFtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLCBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzXSA9XG4gICAgdXNlU3RhdGU8U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IFtzZWFyY2hSZXN1bHRDbGlja2VkLCBzZXRTZWFyY2hSZXN1bHRDbGlja2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG5cbiAgY29uc3QgaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrID1cbiAgICBvblNlYXJjaEFzWW91VHlwZSAmJiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzICYmICFzZWFyY2hSZXN1bHRDbGlja2VkO1xuXG4gIGNvbnN0IGNsb3NlU2VhcmNoID0gYXN5bmMgKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHVzZXIgbWFkZSBhIHNlYXJjaCBhbmQgdGhlbiBjbG9zZWQgc2VhcmNoIHBhbmVcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRvZ2dsZVNlYXJjaCgpO1xuICAgIC8vIGFkZHMgYSBsaXR0bGUgZGVsYXkgYmV0d2VlbiBjbG9zaW5nIHRoZSBzZWFyY2ggcGFuZSBhbmQgZm9jdXNpbmcgb24gdGhlIGJ1dHRvblxuICAgIC8vIHRvIHByZXZlbnQgdGhlIHNlYXJjaCBwYW5lIGZyb20gaW1tZWRpYXRlbHkgb3BlbmluZyBhZ2FpblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHNlYXJjaEJ1dHRvblJlZiAmJiBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgc2VhcmNoQnV0dG9uUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZU9uRXNjSGFuZGxlcihjbG9zZVNlYXJjaCk7XG5cbiAgY29uc3Qgb25Nb3VzZURvd25PdXRzaWRlID0gKHsgdGFyZ2V0IH06IE1vdXNlRXZlbnQpID0+IHtcbiAgICBjb25zdCBoYW5kbGVPdXRzaWRlQ2xpY2sgPSAoKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgICFkb2N1bWVudFxuICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKCdbZGF0YS10ZXN0aWQ9XCJoZWFkZXItc2VhcmNoLWRyb3Bkb3duXCJdJylcbiAgICAgICAgICA/LmNvbnRhaW5zKHRhcmdldCBhcyBIVE1MRWxlbWVudCkgJiZcbiAgICAgICAgdGFyZ2V0ICE9PSBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnRcbiAgICAgICkge1xuICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgfVxuXG4gICAgICB0YXJnZXQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVPdXRzaWRlQ2xpY2spO1xuICAgIH07XG5cbiAgICB0YXJnZXQ/LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVPdXRzaWRlQ2xpY2spO1xuICB9O1xuXG4gIGNvbnN0IG5hdmlnYXRlVG9TZWFyY2ggPSAoc2VhcmNoVGVybTogc3RyaW5nLCBmcm9tUHJldlNlYXJjaD86IHN0cmluZykgPT4ge1xuICAgIG9uU2VhcmNoKHNlYXJjaFRlcm0sIGZyb21QcmV2U2VhcmNoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2U6IFJlYWN0LkNoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICBzZXRWYWx1ZShldnQudGFyZ2V0LnZhbHVlKTtcbiAgICAvLyByZXNldCB0byBmYWxzZSB3aGVuIHRoZSBzZWFyY2ggcXVlcnkgY2hhbmdlc1xuICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQoZmFsc2UpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdDogUmVhY3QuRm9ybUV2ZW50SGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB0aGUgdXNlciBzdWJtaXRzIHRoZSBmb3JtIHRvIGNhcHR1cmUgY29tcGxldGUgcXVlcnlcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgfTtcblxuICBjb25zdCBjbGVhcklucHV0ID0gKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCBiZWZvcmUgdXNlciBjbGVhcnMgaW5wdXRcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIHNldFZhbHVlKCcnKTtcbiAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgLy8gcmVzZXQgdGhlIGNvbnRleHQgd2l0aCBlbXB0eSB2YWx1ZXNcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICBxdWVyeTogJycsXG4gICAgICBzZWFyY2hJZDogJycsXG4gICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICAvLyBhbmQgdHJhY2sgc2VhcmNoIGV2ZW50IGlmIHVzZXIgbWFkZSBhIHNlYXJjaFxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiAoKSA9PiB7XG4gICAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgfVxuXG4gICAgICB0b2dnbGVTZWFyY2goKTtcbiAgICB9LFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIGRvbid0IHRyYWNrIGlmIGEgcmVzdWx0IHdhcyBjbGlja2VkIG9yIGlmIHdlIGRvbid0IGhhdmUgc2VhcmNoIHJlc3VsdHNcbiAgICBpZiAoXG4gICAgICBzZWFyY2hSZXN1bHRDbGlja2VkIHx8XG4gICAgICAhb25TZWFyY2hBc1lvdVR5cGUgfHxcbiAgICAgICFzZWFyY2hBc1lvdVR5cGVSZXN1bHRzIHx8XG4gICAgICAhdmFsdWVUcmltbWVkLmxlbmd0aFxuICAgIClcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLXJldHVyblxuICAgICAgcmV0dXJuO1xuICB9LCBbXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxuICAgIHZhbHVlVHJpbW1lZCxcbiAgICBvblNlYXJjaEFzWW91VHlwZSxcbiAgXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpbnB1dFJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgIHNlYXJjaFdvcmtlci5pbml0KCk7XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghdmFsdWVUcmltbWVkLmxlbmd0aCkge1xuICAgICAgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhudWxsKTtcbiAgICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgICAgcXVlcnk6ICcnLFxuICAgICAgICBzZWFyY2hJZDogJycsXG4gICAgICAgIHJlc3VsdHNDb3VudDogMCxcbiAgICAgICAgcXVlcnlMb2FkVGltZTogMCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBsZXQgY2xlYXJBdXRvY29tcGxldGUgPSB0cnVlO1xuICAgIGxldCBjbGVhclNlYXJjaEFzWW91VHlwZSA9IHRydWU7XG5cbiAgICBsZXQgc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5OiBOb2RlSlMuVGltZW91dDtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2l0aCBhIHNtYWxsIGRlbGF5IHdoZW4gdGhlcmUgYXJlIG5vIHJlc3VsdHNcbiAgICAgIGlmIChcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUgJiZcbiAgICAgICAgcmVzdWx0cy50b3AubGVuZ3RoID09PSAwICYmXG4gICAgICAgICFzZWFyY2hSZXN1bHRDbGlja2VkXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHF1ZXJ5TG9hZFRpbWUgfSA9IHJlc3VsdHM7XG4gICAgICAgIHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICghY2FuY2VsKSB7XG4gICAgICAgICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIDAsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICAgIGNsZWFyVGltZW91dChzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXkpO1xuICAgIH07XG4gIH0sIFtcbiAgICB2YWx1ZVRyaW1tZWQsXG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyxcbiAgXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICBiZz1cInNoYWRvdy1zZWNvbmRhcnlcIlxuICAgICAgICBoZWlnaHQ9XCIxMDB2aFwiXG4gICAgICAgIHBvc2l0aW9uPVwiZml4ZWRcIlxuICAgICAgICAvLyBXZSBhZGQgNXJlbSBoZXJlIGluIGNhc2UgdGhlcmUncyBzb21lIHNvcnQgb2YgYnJhbmRlZCBiYW5uZXIgYWJvdmUgc2VhcmNoXG4gICAgICAgIC8vIFRoZSBzZWFyY2ggYXJlYSBpcyBtdWNoIHRhbGxlciB0aGFuIDVyZW0gc28gdGhpcyBpcyBhIHNhZmUgYW1vdW50IG9mIHBhZGRpbmdcbiAgICAgICAgdG9wPXtgY2FsYygke3RoZW1lLmVsZW1lbnRzLmhlYWRlckhlaWdodH0gKyA1cmVtKWB9XG4gICAgICAgIHdpZHRoPXsxfVxuICAgICAgLz5cbiAgICAgIDxGb2N1c1RyYXBcbiAgICAgICAgb25Fc2NhcGVLZXk9e2Nsb3NlU2VhcmNofVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249XCJhYnNvbHV0ZVwiXG4gICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICBtYXhIZWlnaHQ9e3sgXzogJ2NhbGMoMTAwdmggLSA2M3B4KScsIG1kOiAnY2FsYygxMDB2aCAtIDgwcHgpJyB9fVxuICAgICAgICAgIG92ZXJmbG93PVwiYXV0b1wiXG4gICAgICAgID5cbiAgICAgICAgICA8Qm94IGJvcmRlcj1cIm5vbmVcIiB3aWR0aD1cImF1dG9cIj5cbiAgICAgICAgICAgIDxRdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiYmFzZWxpbmVcIlxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiZ3JheS02MDBcIlxuICAgICAgICAgICAgICAgIGJvcmRlclN0eWxlQm90dG9tPVwic29saWRcIlxuICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoQm90dG9tPVwiMXB4XCJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgIGhlaWdodD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgICB3aWR0aD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8Rm9ybVxuICAgICAgICAgICAgICAgICAgYWN0aW9uPVwiL3NlYXJjaFwiXG4gICAgICAgICAgICAgICAgICBpZD1cInNlYXJjaC1mb3JtXCJcbiAgICAgICAgICAgICAgICAgIG1sPXs4fVxuICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0eWxlZElucHV0XG4gICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcj1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAyMCwgbWQ6IDI2IH19XG4gICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ9XCJib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJoZWFkZXItc2VhcmNoLWJhclwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJxdWVyeVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGUpID0+IG9uS2V5RG93bihlKX1cbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3NlYXJjaFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICAgICAgICByZWY9e2lucHV0UmVmfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L0Zvcm0+XG4gICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgIGljb249e01pbmlEZWxldGVJY29ufVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyIHNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICB0aXA9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwUHJvcHM9e3tcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50OiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogJ2Zsb2F0aW5nJyxcbiAgICAgICAgICAgICAgICAgICAgbmFycm93OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDIsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17Y2xlYXJJbnB1dH1cbiAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgPC9RdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8U3VnZ2VzdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgIHt2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8RmxleEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCIgYXM9XCJ1bFwiIGxpc3RTdHlsZT1cIm5vbmVcIiBwPXswfT5cbiAgICAgICAgICAgICAgICAgIHthdXRvQ29tcGxldGVTdWdnZXN0aW9ucy5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtzLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ2F1dG9jb21wbGV0ZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbWlib2xkU2VhcmNoSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgbWI9ezIgYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9ezE0fVxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9ezh9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICAgICAgICAgICAgICAgICAgbXI9ezEyfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPEhpZ2hsaWdodGVkVGV4dCBzdWdnZXN0aW9uPXtzfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgIHsoc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy50b3AubGVuZ3RoID4gMCkgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPFRleHQgYXM9XCJoMlwiIGZvbnRTaXplPXsyMH0gbWI9ezE2fSBtdD17MjR9PlxuICAgICAgICAgICAgICAgICAgICAgIFRvcCByZXN1bHRzXG4gICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgICBhcz1cInVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBsaXN0U3R5bGU9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICBwPXswfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc2VhcmNoQXNZb3VUeXBlTG9hZGVyPy5zaGltbWVyUm93cy5tYXAoKHIpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lTG9hZGVyTGkga2V5PXtyLmtleX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ci5zaGltbWVycy5tYXAoKHdvcmQpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNoaW1tZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezMwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5PXs4IGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXt3b3JkLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17d29yZC53aWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RmFtaWx5PVwiYWNjZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yPVwidGV4dC1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAxMCBhcyAxNiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImJvcmRlci1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI9ezF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1cz1cInhsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHg9ezE2fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5PXswLjF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVMb2FkZXJMaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy50b3AubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnF1ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJsaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZWx5UmVkaXJlY3Qocy51cmxQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnOiBzLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgY29udGVudF9pZDogcy5jb250ZW50SWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlbHlSZWRpcmVjdChzLnVybFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmFkZ2Ugc2l6ZT1cInNtXCIgdmFyaWFudD1cInRlcnRpYXJ5XCIgbWw9ezEyfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3MudHlwZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmFkZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge3NlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggPT09IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPEJveCBmb250U2l6ZT17eyBfOiAyMCwgc206IDI2IH19IG10PXswfSBtYj17NDh9PlxuICAgICAgICAgICAgICAgICAgICAgIHtgV2UgY291bGRuJ3QgZmluZCBhIG1hdGNoIGZvciBgfVxuICAgICAgICAgICAgICAgICAgICAgIDxUZXh0IGZvbnRXZWlnaHQ9XCJib2xkXCI+e2BcIiR7dmFsdWVUcmltbWVkfS5cImB9PC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICcgVHJ5IGFub3RoZXIga2V5d29yZCwgb3Igc2VlIHdoYXQgb3VyIG1lbWJlcnMgYXJlIGxlYXJuaW5nLidcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPE1lbnUgYm9yZGVyPVwibm9uZVwiIHZhcmlhbnQ9XCJwb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgPFBvcHVsYXJTZWFyY2hlc1xuICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaD17bmF2aWdhdGVUb1NlYXJjaH1cbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPFBvcHVsYXJDb250ZW50IG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfSAvPlxuICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7ISFzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy50b3AubGVuZ3RoICYmIChcbiAgICAgICAgICAgICAgPFN0cm9rZUJ1dHRvblxuICAgICAgICAgICAgICAgIG15PXsxNn1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3ZpZXdfYWxsX3Jlc3VsdHMnLCB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaCh2YWx1ZSwgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQpO1xuICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgVmlldyBhbGwgcmVzdWx0c1xuICAgICAgICAgICAgICA8L1N0cm9rZUJ1dHRvbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8UXVpekFuZEhlbHBDZW50ZXJMaW5rc1xuICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja31cbiAgICAgICAgICAgICAgaGFuZGxlQ2xvc2VEcm9wZG93bj17Y2xvc2VTZWFyY2h9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3VnZ2VzdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgPC9Cb3g+XG4gICAgICA8L0ZvY3VzVHJhcD5cbiAgICA8Lz5cbiAgKTtcbn07XG4iXX0= */",
91
92
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
92
93
  });
93
94
  const EllipsisBox = /*#__PURE__*/_styled(Box, {
@@ -98,7 +99,7 @@ const EllipsisBox = /*#__PURE__*/_styled(Box, {
98
99
  styles: "text-overflow:ellipsis"
99
100
  } : {
100
101
  name: "rkw162",
101
- styles: "text-overflow:ellipsis/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdHK0IiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVVybENoYW5nZURldGVjdGlvbiB9IGZyb20gJy4vaG9va3MvdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uJztcbmltcG9ydCB7IFF1aXpBbmRIZWxwQ2VudGVyTGlua3MgfSBmcm9tICcuL1F1aXpBbmRIZWxwQ2VudGVyTGlua3MnO1xuaW1wb3J0IHsgc2FmZWx5UmVkaXJlY3QgfSBmcm9tICcuL3NhZmVseVJlZGlyZWN0JztcbmltcG9ydCB7IHNlYXJjaFdvcmtlciB9IGZyb20gJy4vU2VhcmNoV29ya2VyJztcbmltcG9ydCB0eXBlIHtcbiAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbixcbiAgU2VhcmNoQXNZb3VUeXBlUmVzdWx0cyxcbn0gZnJvbSAnLi9TZWFyY2hXb3JrZXIvdHlwZXMnO1xuaW1wb3J0IHsgU2VhcmNoUGFuZVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IEZvcm0gPSBCb3gud2l0aENvbXBvbmVudCgnZm9ybScpO1xuY29uc3QgSW5wdXQgPSBCb3gud2l0aENvbXBvbmVudCgnaW5wdXQnKTtcblxuY29uc3QgUXVlcnlDb250YWluZXIgPSBzdHlsZWQoQ29udGVudENvbnRhaW5lcikoXG4gIGNzcyh7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgcHQ6IDE2LFxuICAgIHBiOiB7IF86IDAsIG1kOiAyNCB9LFxuICAgIHB4OiB7IF86IDI0IH0sXG4gIH0pXG4pO1xuXG5jb25zdCBTdWdnZXN0aW9uQ29udGFpbmVyID0gc3R5bGVkKENvbnRlbnRDb250YWluZXIpKFxuICBjc3Moe1xuICAgIHB0OiAxNixcbiAgICBwYjogeyBfOiAwLCBtZDogMjQgfSxcbiAgICBweDogeyBfOiAyNCB9LFxuICB9KVxuKTtcblxuY29uc3QgU3R5bGVkSW5wdXQgPSBzdHlsZWQoSW5wdXQpKFxuICBjc3Moe1xuICAgIG91dGxpbmU6IGBub25lYCxcbiAgICAnJjo6cGxhY2Vob2xkZXInOiB7XG4gICAgICB0ZXh0Q29sb3I6IHRoZW1lLmNvbG9yc1sndGV4dC1zZWNvbmRhcnknXSBhcyBuZXZlcixcbiAgICB9LFxuICB9KVxuKTtcblxuY29uc3QgSW5saW5lUmVzdWx0TGkgPSBzdHlsZWQoTWVudUl0ZW0pKFxuICBjc3Moe1xuICAgIHBsOiAwLFxuICAgIHB5OiA4LFxuICAgIGZvbnRTaXplOiAxNixcbiAgICAnJjpmb2N1cy12aXNpYmxlOmFmdGVyJzoge1xuICAgICAgbGVmdDogLTQsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IElubGluZUxvYWRlckxpID0gc3R5bGVkLmxpKFxuICBjc3Moe1xuICAgIGxpc3RTdHlsZVR5cGU6ICdub25lJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZ2FwOiAxMixcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgfSlcbik7XG5cbmV4cG9ydCBjb25zdCBTZW1pYm9sZFNlYXJjaEljb24gPSBzdHlsZWQoU2VhcmNoSWNvbilgXG4gIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gIGNpcmNsZSxcbiAgcGF0aCB7XG4gICAgc3Ryb2tlLXdpZHRoOiAycHg7XG4gIH1cbiAgcmVjdCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTJweCwgLTJweCk7XG4gICAgaGVpZ2h0OiBjYWxjKDEwMCUgKyA0cHgpO1xuICAgIHdpZHRoOiBjYWxjKDEwMCUgKyA0cHgpO1xuICB9XG5gO1xuXG5jb25zdCBFbGxpcHNpc0JveCA9IHN0eWxlZChCb3gpYFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbmA7XG5cbmNvbnN0IEhpZ2hsaWdodGVkVGV4dCA9ICh7XG4gIHN1Z2dlc3Rpb246IHsgdGl0bGUsIHNlZ21lbnRzIH0sXG59OiB7XG4gIHN1Z2dlc3Rpb246IEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb247XG59KSA9PiB7XG4gIGNvbnN0IG1vZGUgPSB1c2VDdXJyZW50TW9kZSgpO1xuICBjb25zdCBoaWdobGlnaHRDb2xvciA9IG1vZGUgPT09ICdkYXJrJyA/ICdoeXBlcicgOiAneWVsbG93JztcblxuICByZXR1cm4gKFxuICAgIDxGbGV4Qm94PlxuICAgICAgPEVsbGlwc2lzQm94XG4gICAgICAgIG1heFdpZHRoPVwiY2FsYygxMDB2dyAtIDEyOHB4KVwiXG4gICAgICAgIHdoaXRlU3BhY2U9XCJwcmVcIlxuICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICBvdmVyZmxvdz1cImhpZGRlblwiXG4gICAgICA+XG4gICAgICAgIHtzZWdtZW50cy5tYXAoKHNlZ21lbnQsIGkpID0+IChcbiAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAga2V5PXtgJHt0aXRsZX06JHtpLnRvU3RyaW5nKCl9YH1cbiAgICAgICAgICAgIGxpbmVIZWlnaHQ9XCJ0aXRsZVwiXG4gICAgICAgICAgICB7Li4uKHNlZ21lbnQuaGlnaGxpZ2h0XG4gICAgICAgICAgICAgID8geyBiZzogaGlnaGxpZ2h0Q29sb3IsIGZvbnRXZWlnaHQ6ICdib2xkJyB9XG4gICAgICAgICAgICAgIDoge30pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtzZWdtZW50LnZhbHVlfVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgKSl9XG4gICAgICA8L0VsbGlwc2lzQm94PlxuICAgICAgPFRleHQgc2NyZWVucmVhZGVyPnt0aXRsZX08L1RleHQ+XG4gICAgPC9GbGV4Qm94PlxuICApO1xufTtcblxudHlwZSBTZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSB7XG4gIHNoaW1tZXJSb3dzOiB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgc2hpbW1lcnM6IHtcbiAgICAgIGtleTogc3RyaW5nO1xuICAgICAgd2lkdGg6IG51bWJlcjtcbiAgICB9W107XG4gIH1bXTtcbn07XG5cbmxldCBsb2FkZXJLZXkgPSAwO1xuZnVuY3Rpb24gcm5kTG9hZGVyKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGx1c3BsdXNcbiAgY29uc3Qga2V5ID0gbG9hZGVyS2V5Kys7XG4gIGNvbnN0IGxvYWRlcjogU2VhcmNoQXNZb3VUeXBlTG9hZGVyID0geyBzaGltbWVyUm93czogW10gfTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCA1OyBpKyspIHtcbiAgICBjb25zdCByb3cgPSB7XG4gICAgICBrZXk6IGAke2tleX06JHtpfWAsXG4gICAgICBzaGltbWVyczogW10gYXMgeyBrZXk6IHN0cmluZzsgd2lkdGg6IG51bWJlciB9W10sXG4gICAgfTtcbiAgICBjb25zdCB3b3JkcyA9IE1hdGguY2VpbChNYXRoLnJhbmRvbSgpICogMyk7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCB3b3JkczsgaisrKSB7XG4gICAgICBjb25zdCB3aWR0aCA9IDEyICsgTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogOTYpO1xuICAgICAgcm93LnNoaW1tZXJzLnB1c2goe1xuICAgICAgICBrZXk6IGAke2tleX06JHtqfWAsXG4gICAgICAgIHdpZHRoLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGxvYWRlci5zaGltbWVyUm93cy5wdXNoKHJvdyk7XG4gIH1cbiAgcmV0dXJuIGxvYWRlcjtcbn1cblxuZXhwb3J0IGNvbnN0IFNlYXJjaFBhbmU6IFJlYWN0LkZDPFNlYXJjaFBhbmVQcm9wcz4gPSAoe1xuICBvblNlYXJjaCxcbiAgb25UcmFja2luZ0NsaWNrLFxuICBzZWFyY2hCdXR0b25SZWYsXG4gIHRvZ2dsZVNlYXJjaCxcbiAgb25TZWFyY2hBc1lvdVR5cGUsXG59KSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgnJyk7XG4gIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBbYXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMsIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zXSA9IHVzZVN0YXRlPFxuICAgIEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb25bXVxuICA+KFtdKTtcblxuICBjb25zdCBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0cywgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0c10gPVxuICAgIHVzZVN0YXRlPFNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCBjbG9zZVNlYXJjaCA9IGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCB0b2dnbGVTZWFyY2goKTtcbiAgICAvLyBhZGRzIGEgbGl0dGxlIGRlbGF5IGJldHdlZW4gY2xvc2luZyB0aGUgc2VhcmNoIHBhbmUgYW5kIGZvY3VzaW5nIG9uIHRoZSBidXR0b25cbiAgICAvLyB0byBwcmV2ZW50IHRoZSBzZWFyY2ggcGFuZSBmcm9tIGltbWVkaWF0ZWx5IG9wZW5pbmcgYWdhaW5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmIChzZWFyY2hCdXR0b25SZWYgJiYgc2VhcmNoQnV0dG9uUmVmPy5jdXJyZW50KSB7XG4gICAgICAgIHNlYXJjaEJ1dHRvblJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgICAgfVxuICAgIH0sIDEwKTtcbiAgfTtcblxuICBjb25zdCBvbktleURvd24gPSB1c2VPbkVzY0hhbmRsZXIoY2xvc2VTZWFyY2gpO1xuXG4gIGNvbnN0IG9uTW91c2VEb3duT3V0c2lkZSA9ICh7IHRhcmdldCB9OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgaGFuZGxlT3V0c2lkZUNsaWNrID0gKCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICAhZG9jdW1lbnRcbiAgICAgICAgICAucXVlcnlTZWxlY3RvcignW2RhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXScpXG4gICAgICAgICAgPy5jb250YWlucyh0YXJnZXQgYXMgSFRNTEVsZW1lbnQpICYmXG4gICAgICAgIHRhcmdldCAhPT0gc2VhcmNoQnV0dG9uUmVmPy5jdXJyZW50XG4gICAgICApIHtcbiAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgIH1cblxuICAgICAgdGFyZ2V0Py5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlT3V0c2lkZUNsaWNrKTtcbiAgICB9O1xuXG4gICAgdGFyZ2V0Py5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlT3V0c2lkZUNsaWNrKTtcbiAgfTtcblxuICBjb25zdCBuYXZpZ2F0ZVRvU2VhcmNoID0gKHNlYXJjaFRlcm06IHN0cmluZywgZnJvbVByZXZTZWFyY2g/OiBzdHJpbmcpID0+IHtcbiAgICBvblNlYXJjaChzZWFyY2hUZXJtLCBmcm9tUHJldlNlYXJjaCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlOiBSZWFjdC5DaGFuZ2VFdmVudEhhbmRsZXI8SFRNTElucHV0RWxlbWVudD4gPSAoZXZ0KSA9PiB7XG4gICAgc2V0VmFsdWUoZXZ0LnRhcmdldC52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlU3VibWl0OiBSZWFjdC5Gb3JtRXZlbnRIYW5kbGVyID0gKGV2ZW50KSA9PiB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gIH07XG5cbiAgY29uc3QgY2xlYXJJbnB1dCA9ICgpID0+IHtcbiAgICBzZXRWYWx1ZSgnJyk7XG4gICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiB0b2dnbGVTZWFyY2gsXG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaW5wdXRSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICBzZWFyY2hXb3JrZXIuaW5pdCgpO1xuICB9LCBbXSk7XG5cbiAgY29uc3QgdmFsdWVUcmltbWVkID0gdmFsdWUudHJpbSgpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF2YWx1ZVRyaW1tZWQubGVuZ3RoKSB7XG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBsZXQgY2xlYXJBdXRvY29tcGxldGUgPSB0cnVlO1xuICAgIGxldCBjbGVhclNlYXJjaEFzWW91VHlwZSA9IHRydWU7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8qXG4gICAgICAgKiBXYWl0IDEwIHNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICAvLyBvblNlYXJjaEFzWW91VHlwZSBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgdHJhY2tpbmdcbiAgICAgIGlmIChvblNlYXJjaEFzWW91VHlwZSkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAvKlxuICAgICAgICAgICAqIFRoaXMgdGltZW91dCBhbmQgY2FuY2VsIGNoZWNrIGlzIGEgZGVib3VuY2UgdGhhdCBlbnN1cmVzIHdlIGRvIG5vdFxuICAgICAgICAgICAqIHNlbmQgdHJhY2tpbmcgZXZlbnRzIGZvciBldmVyeSBrZXlzdHJva2UsIGJ1dCBvbmx5IHdoZW4gdGhlIHVzZXJcbiAgICAgICAgICAgKiBzdG9wcyB0eXBpbmcgZm9yIDI1MG1zLiBXZSBwcmV2aW91c2x5IHVzZWQgdGhpcyBkZWJvdW5jZSBmb3IgdGhlXG4gICAgICAgICAgICogc2VhcmNoLWFzLXlvdS10eXBlIHF1ZXJ5IGFzIGEgd2hvbGUsIGJ1dCB0aGlzIGlzIG5vdCBuZWNlc3NhcnlcbiAgICAgICAgICAgKiBmcm9tIGEgbG9hZCBzdGFuZHBvaW50IHNpbmNlIHdlIGhhdmUgY2FjaGluZyBpbXBsZW1lbnRlZCBvbiBib3RoXG4gICAgICAgICAgICogY2xpZW50IGFuZCBzZXJ2ZXIuIEFwcGx5aW5nIHRoZSBkZWJvdW5jZSBvbmx5IGZvciB0aGlzIGNhbGxiYWNrXG4gICAgICAgICAgICogYWxsb3dzIHVzIHRvIG1haW50YWluIHRoZSBtb3N0IHNuYXBweSB1c2VyIGV4cGVyaWVuY2UgYW5kIHN0aWxsXG4gICAgICAgICAgICogaGF2ZSBub24tbm9pc3kgdHJhY2tpbmcuXG4gICAgICAgICAgICovXG4gICAgICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuO1xuICAgICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9IHJlc3VsdHM7XG4gICAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgICB9LCAyNTApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNhbmNlbCA9IHRydWU7XG4gICAgfTtcbiAgfSwgW3ZhbHVlVHJpbW1lZCwgb25TZWFyY2hBc1lvdVR5cGVdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIGJnPVwic2hhZG93LXNlY29uZGFyeVwiXG4gICAgICAgIGhlaWdodD1cIjEwMHZoXCJcbiAgICAgICAgcG9zaXRpb249XCJmaXhlZFwiXG4gICAgICAgIC8vIFdlIGFkZCA1cmVtIGhlcmUgaW4gY2FzZSB0aGVyZSdzIHNvbWUgc29ydCBvZiBicmFuZGVkIGJhbm5lciBhYm92ZSBzZWFyY2hcbiAgICAgICAgLy8gVGhlIHNlYXJjaCBhcmVhIGlzIG11Y2ggdGFsbGVyIHRoYW4gNXJlbSBzbyB0aGlzIGlzIGEgc2FmZSBhbW91bnQgb2YgcGFkZGluZ1xuICAgICAgICB0b3A9e2BjYWxjKCR7dGhlbWUuZWxlbWVudHMuaGVhZGVySGVpZ2h0fSArIDVyZW0pYH1cbiAgICAgICAgd2lkdGg9ezF9XG4gICAgICAvPlxuICAgICAgPEZvY3VzVHJhcFxuICAgICAgICBvbkVzY2FwZUtleT17Y2xvc2VTZWFyY2h9XG4gICAgICAgIG9uQ2xpY2tPdXRzaWRlPXtvbk1vdXNlRG93bk91dHNpZGV9XG4gICAgICAgIGFsbG93UGFnZUludGVyYWN0aW9uXG4gICAgICA+XG4gICAgICAgIDxCb3hcbiAgICAgICAgICBiZz1cImJhY2tncm91bmRcIlxuICAgICAgICAgIGJvcmRlckNvbG9yQm90dG9tPVwiYm9yZGVyLXByaW1hcnlcIlxuICAgICAgICAgIGJvcmRlckNvbG9yVG9wPVwiYm9yZGVyLXRlcnRpYXJ5XCJcbiAgICAgICAgICBib3JkZXJTdHlsZT1cInNvbGlkXCJcbiAgICAgICAgICBib3JkZXJXaWR0aD1cIjJweCAwIDFweFwiXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJoZWFkZXItc2VhcmNoLWRyb3Bkb3duXCJcbiAgICAgICAgICBwb3NpdGlvbj17eyBfOiAnZml4ZWQnLCBtZDogJ2Fic29sdXRlJyB9fVxuICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgbWF4SGVpZ2h0PXt7IF86ICdjYWxjKDEwMHZoIC0gNjNweCknLCBtZDogJ2NhbGMoMTAwdmggLSA4MHB4KScgfX1cbiAgICAgICAgICBvdmVyZmxvdz1cImF1dG9cIlxuICAgICAgICAgIHpJbmRleD17MTB9IC8vIGVuc3VyZSBkcm9wZG93biBpcyBhYm92ZSB0aGUgcGFnZSBjb250ZW50XG4gICAgICAgID5cbiAgICAgICAgICA8Qm94IGJvcmRlcj1cIm5vbmVcIiB3aWR0aD1cImF1dG9cIj5cbiAgICAgICAgICAgIDxRdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiYmFzZWxpbmVcIlxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiZ3JheS02MDBcIlxuICAgICAgICAgICAgICAgIGJvcmRlclN0eWxlQm90dG9tPVwic29saWRcIlxuICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoQm90dG9tPVwiMXB4XCJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgIGhlaWdodD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgICB3aWR0aD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8Rm9ybVxuICAgICAgICAgICAgICAgICAgYWN0aW9uPVwiL3NlYXJjaFwiXG4gICAgICAgICAgICAgICAgICBpZD1cInNlYXJjaC1mb3JtXCJcbiAgICAgICAgICAgICAgICAgIG1sPXs4fVxuICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0eWxlZElucHV0XG4gICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcj1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAyMCwgbWQ6IDI2IH19XG4gICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ9XCJib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJoZWFkZXItc2VhcmNoLWJhclwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJxdWVyeVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGUpID0+IG9uS2V5RG93bihlKX1cbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3NlYXJjaFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICAgICAgICByZWY9e2lucHV0UmVmfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L0Zvcm0+XG4gICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgIGljb249e01pbmlEZWxldGVJY29ufVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyIHNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICB0aXA9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwUHJvcHM9e3tcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50OiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogJ2Zsb2F0aW5nJyxcbiAgICAgICAgICAgICAgICAgICAgbmFycm93OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDIsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17Y2xlYXJJbnB1dH1cbiAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgPC9RdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8U3VnZ2VzdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgIHt2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8RmxleEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCIgYXM9XCJ1bFwiIGxpc3RTdHlsZT1cIm5vbmVcIiBwPXswfT5cbiAgICAgICAgICAgICAgICAgIHthdXRvQ29tcGxldGVTdWdnZXN0aW9ucy5tYXAoKHMpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtzLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoeyB2YWx1ZTogcy50aXRsZSB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7IHZhbHVlOiBzLnRpdGxlIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW1pYm9sZFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1iPXsyIGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPXsxNH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXs4fVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1yPXsxMn1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICB7KHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0IGFzPVwiaDJcIiBmb250U2l6ZT17MjB9IG1iPXsxNn0gbXQ9ezI0fT5cbiAgICAgICAgICAgICAgICAgICAgICBUb3AgcmVzdWx0c1xuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbj1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJ1bFwiXG4gICAgICAgICAgICAgICAgICAgICAgbGlzdFN0eWxlPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcD17MH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNlYXJjaEFzWW91VHlwZUxvYWRlcj8uc2hpbW1lclJvd3MubWFwKChyKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZUxvYWRlckxpIGtleT17ci5rZXl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Iuc2hpbW1lcnMubWFwKCh3b3JkKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTaGltbWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXszMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweT17OCBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17d29yZC5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9e3dvcmQud2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseT1cImFjY2VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDb2xvcj1cInRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMTAgYXMgMTYgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I9XCJib3JkZXItc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyPXsxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM9XCJ4bFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB4PXsxNn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eT17MC4xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lTG9hZGVyTGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLm1hcCgocywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5xdWVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwibGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3NlYXJjaF9hc195b3VfdHlwZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnOiBzLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4ocy5jb250ZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlbHlSZWRpcmVjdChzLnVybFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3NlYXJjaF9hc195b3VfdHlwZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHMuc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4ocy5jb250ZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZSBzaXplPVwic21cIiB2YXJpYW50PVwidGVydGlhcnlcIiBtbD17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cy50eXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8Qm94IGZvbnRTaXplPXt7IF86IDIwLCBzbTogMjYgfX0gbXQ9ezB9IG1iPXs0OH0+XG4gICAgICAgICAgICAgICAgICAgICAge2BXZSBjb3VsZG4ndCBmaW5kIGEgbWF0Y2ggZm9yIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPFRleHQgZm9udFdlaWdodD1cImJvbGRcIj57YFwiJHt2YWx1ZVRyaW1tZWR9LlwiYH08L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgJyBUcnkgYW5vdGhlciBrZXl3b3JkLCBvciBzZWUgd2hhdCBvdXIgbWVtYmVycyBhcmUgbGVhcm5pbmcuJ1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICA8UG9wdWxhclNlYXJjaGVzXG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoPXtuYXZpZ2F0ZVRvU2VhcmNofVxuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHshIXNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICA8U3Ryb2tlQnV0dG9uXG4gICAgICAgICAgICAgICAgbXk9ezE2fVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygndmlld19hbGxfcmVzdWx0cycsIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBWaWV3IGFsbCByZXN1bHRzXG4gICAgICAgICAgICAgIDwvU3Ryb2tlQnV0dG9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxRdWl6QW5kSGVscENlbnRlckxpbmtzXG4gICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICBoYW5kbGVDbG9zZURyb3Bkb3duPXtjbG9zZVNlYXJjaH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TdWdnZXN0aW9uQ29udGFpbmVyPlxuICAgICAgICA8L0JveD5cbiAgICAgIDwvRm9jdXNUcmFwPlxuICAgIDwvPlxuICApO1xufTtcbiJdfQ== */",
102
+ styles: "text-overflow:ellipsis/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlHK0IiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVVybENoYW5nZURldGVjdGlvbiB9IGZyb20gJy4vaG9va3MvdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uJztcbmltcG9ydCB7IFF1aXpBbmRIZWxwQ2VudGVyTGlua3MgfSBmcm9tICcuL1F1aXpBbmRIZWxwQ2VudGVyTGlua3MnO1xuaW1wb3J0IHsgc2FmZWx5UmVkaXJlY3QgfSBmcm9tICcuL3NhZmVseVJlZGlyZWN0JztcbmltcG9ydCB7IHVzZVNlYXJjaFRyYWNraW5nQ29udGV4dCB9IGZyb20gJy4vU2VhcmNoVHJhY2tpbmdQcm92aWRlcic7XG5pbXBvcnQgeyBzZWFyY2hXb3JrZXIgfSBmcm9tICcuL1NlYXJjaFdvcmtlcic7XG5pbXBvcnQgdHlwZSB7XG4gIEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb24sXG4gIFNlYXJjaEFzWW91VHlwZVJlc3VsdHMsXG59IGZyb20gJy4vU2VhcmNoV29ya2VyL3R5cGVzJztcbmltcG9ydCB7IFNlYXJjaFBhbmVQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBGb3JtID0gQm94LndpdGhDb21wb25lbnQoJ2Zvcm0nKTtcbmNvbnN0IElucHV0ID0gQm94LndpdGhDb21wb25lbnQoJ2lucHV0Jyk7XG5cbmNvbnN0IFF1ZXJ5Q29udGFpbmVyID0gc3R5bGVkKENvbnRlbnRDb250YWluZXIpKFxuICBjc3Moe1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIHB0OiAxNixcbiAgICBwYjogeyBfOiAwLCBtZDogMjQgfSxcbiAgICBweDogeyBfOiAyNCB9LFxuICB9KVxuKTtcblxuY29uc3QgU3VnZ2VzdGlvbkNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKShcbiAgY3NzKHtcbiAgICBwdDogMTYsXG4gICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgcHg6IHsgXzogMjQgfSxcbiAgfSlcbik7XG5cbmNvbnN0IFN0eWxlZElucHV0ID0gc3R5bGVkKElucHV0KShcbiAgY3NzKHtcbiAgICBvdXRsaW5lOiBgbm9uZWAsXG4gICAgJyY6OnBsYWNlaG9sZGVyJzoge1xuICAgICAgdGV4dENvbG9yOiB0aGVtZS5jb2xvcnNbJ3RleHQtc2Vjb25kYXJ5J10gYXMgbmV2ZXIsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IElubGluZVJlc3VsdExpID0gc3R5bGVkKE1lbnVJdGVtKShcbiAgY3NzKHtcbiAgICBwbDogMCxcbiAgICBweTogOCxcbiAgICBmb250U2l6ZTogMTYsXG4gICAgJyY6Zm9jdXMtdmlzaWJsZTphZnRlcic6IHtcbiAgICAgIGxlZnQ6IC00LFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVMb2FkZXJMaSA9IHN0eWxlZC5saShcbiAgY3NzKHtcbiAgICBsaXN0U3R5bGVUeXBlOiAnbm9uZScsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGdhcDogMTIsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIH0pXG4pO1xuXG5leHBvcnQgY29uc3QgU2VtaWJvbGRTZWFyY2hJY29uID0gc3R5bGVkKFNlYXJjaEljb24pYFxuICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICBjaXJjbGUsXG4gIHBhdGgge1xuICAgIHN0cm9rZS13aWR0aDogMnB4O1xuICB9XG4gIHJlY3Qge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0ycHgsIC0ycHgpO1xuICAgIGhlaWdodDogY2FsYygxMDAlICsgNHB4KTtcbiAgICB3aWR0aDogY2FsYygxMDAlICsgNHB4KTtcbiAgfVxuYDtcblxuY29uc3QgRWxsaXBzaXNCb3ggPSBzdHlsZWQoQm94KWBcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5gO1xuXG5jb25zdCBIaWdobGlnaHRlZFRleHQgPSAoe1xuICBzdWdnZXN0aW9uOiB7IHRpdGxlLCBzZWdtZW50cyB9LFxufToge1xuICBzdWdnZXN0aW9uOiBBdXRvY29tcGxldGVTdWdnZXN0aW9uO1xufSkgPT4ge1xuICBjb25zdCBtb2RlID0gdXNlQ3VycmVudE1vZGUoKTtcbiAgY29uc3QgaGlnaGxpZ2h0Q29sb3IgPSBtb2RlID09PSAnZGFyaycgPyAnaHlwZXInIDogJ3llbGxvdyc7XG5cbiAgcmV0dXJuIChcbiAgICA8RmxleEJveD5cbiAgICAgIDxFbGxpcHNpc0JveFxuICAgICAgICBtYXhXaWR0aD1cImNhbGMoMTAwdncgLSAxMjhweClcIlxuICAgICAgICB3aGl0ZVNwYWNlPVwicHJlXCJcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgb3ZlcmZsb3c9XCJoaWRkZW5cIlxuICAgICAgPlxuICAgICAgICB7c2VnbWVudHMubWFwKChzZWdtZW50LCBpKSA9PiAoXG4gICAgICAgICAgPFRleHRcbiAgICAgICAgICAgIGtleT17YCR7dGl0bGV9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICBsaW5lSGVpZ2h0PVwidGl0bGVcIlxuICAgICAgICAgICAgey4uLihzZWdtZW50LmhpZ2hsaWdodFxuICAgICAgICAgICAgICA/IHsgYmc6IGhpZ2hsaWdodENvbG9yLCBmb250V2VpZ2h0OiAnYm9sZCcgfVxuICAgICAgICAgICAgICA6IHt9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2VnbWVudC52YWx1ZX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICkpfVxuICAgICAgPC9FbGxpcHNpc0JveD5cbiAgICAgIDxUZXh0IHNjcmVlbnJlYWRlcj57dGl0bGV9PC9UZXh0PlxuICAgIDwvRmxleEJveD5cbiAgKTtcbn07XG5cbnR5cGUgU2VhcmNoQXNZb3VUeXBlTG9hZGVyID0ge1xuICBzaGltbWVyUm93czoge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHNoaW1tZXJzOiB7XG4gICAgICBrZXk6IHN0cmluZztcbiAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgfVtdO1xuICB9W107XG59O1xuXG5sZXQgbG9hZGVyS2V5ID0gMDtcbmZ1bmN0aW9uIHJuZExvYWRlcigpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBsdXNwbHVzXG4gIGNvbnN0IGtleSA9IGxvYWRlcktleSsrO1xuICBjb25zdCBsb2FkZXI6IFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHsgc2hpbW1lclJvd3M6IFtdIH07XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7XG4gICAgY29uc3Qgcm93ID0ge1xuICAgICAga2V5OiBgJHtrZXl9OiR7aX1gLFxuICAgICAgc2hpbW1lcnM6IFtdIGFzIHsga2V5OiBzdHJpbmc7IHdpZHRoOiBudW1iZXIgfVtdLFxuICAgIH07XG4gICAgY29uc3Qgd29yZHMgPSBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDMpO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgd29yZHM7IGorKykge1xuICAgICAgY29uc3Qgd2lkdGggPSAxMiArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDk2KTtcbiAgICAgIHJvdy5zaGltbWVycy5wdXNoKHtcbiAgICAgICAga2V5OiBgJHtrZXl9OiR7an1gLFxuICAgICAgICB3aWR0aCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsb2FkZXIuc2hpbW1lclJvd3MucHVzaChyb3cpO1xuICB9XG4gIHJldHVybiBsb2FkZXI7XG59XG5cbmV4cG9ydCBjb25zdCBTZWFyY2hQYW5lOiBSZWFjdC5GQzxTZWFyY2hQYW5lUHJvcHM+ID0gKHtcbiAgb25TZWFyY2gsXG4gIG9uVHJhY2tpbmdDbGljayxcbiAgc2VhcmNoQnV0dG9uUmVmLFxuICB0b2dnbGVTZWFyY2gsXG4gIG9uU2VhcmNoQXNZb3VUeXBlLFxufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpO1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgY29uc3QgW2F1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zLCBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9uc10gPSB1c2VTdGF0ZTxcbiAgICBBdXRvY29tcGxldGVTdWdnZXN0aW9uW11cbiAgPihbXSk7XG4gIGNvbnN0IFtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLCBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzXSA9XG4gICAgdXNlU3RhdGU8U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IFtzZWFyY2hSZXN1bHRDbGlja2VkLCBzZXRTZWFyY2hSZXN1bHRDbGlja2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG5cbiAgY29uc3QgaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrID1cbiAgICBvblNlYXJjaEFzWW91VHlwZSAmJiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzICYmICFzZWFyY2hSZXN1bHRDbGlja2VkO1xuXG4gIGNvbnN0IGNsb3NlU2VhcmNoID0gYXN5bmMgKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHVzZXIgbWFkZSBhIHNlYXJjaCBhbmQgdGhlbiBjbG9zZWQgc2VhcmNoIHBhbmVcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRvZ2dsZVNlYXJjaCgpO1xuICAgIC8vIGFkZHMgYSBsaXR0bGUgZGVsYXkgYmV0d2VlbiBjbG9zaW5nIHRoZSBzZWFyY2ggcGFuZSBhbmQgZm9jdXNpbmcgb24gdGhlIGJ1dHRvblxuICAgIC8vIHRvIHByZXZlbnQgdGhlIHNlYXJjaCBwYW5lIGZyb20gaW1tZWRpYXRlbHkgb3BlbmluZyBhZ2FpblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHNlYXJjaEJ1dHRvblJlZiAmJiBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgc2VhcmNoQnV0dG9uUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZU9uRXNjSGFuZGxlcihjbG9zZVNlYXJjaCk7XG5cbiAgY29uc3Qgb25Nb3VzZURvd25PdXRzaWRlID0gKHsgdGFyZ2V0IH06IE1vdXNlRXZlbnQpID0+IHtcbiAgICBjb25zdCBoYW5kbGVPdXRzaWRlQ2xpY2sgPSAoKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgICFkb2N1bWVudFxuICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKCdbZGF0YS10ZXN0aWQ9XCJoZWFkZXItc2VhcmNoLWRyb3Bkb3duXCJdJylcbiAgICAgICAgICA/LmNvbnRhaW5zKHRhcmdldCBhcyBIVE1MRWxlbWVudCkgJiZcbiAgICAgICAgdGFyZ2V0ICE9PSBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnRcbiAgICAgICkge1xuICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgfVxuXG4gICAgICB0YXJnZXQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVPdXRzaWRlQ2xpY2spO1xuICAgIH07XG5cbiAgICB0YXJnZXQ/LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVPdXRzaWRlQ2xpY2spO1xuICB9O1xuXG4gIGNvbnN0IG5hdmlnYXRlVG9TZWFyY2ggPSAoc2VhcmNoVGVybTogc3RyaW5nLCBmcm9tUHJldlNlYXJjaD86IHN0cmluZykgPT4ge1xuICAgIG9uU2VhcmNoKHNlYXJjaFRlcm0sIGZyb21QcmV2U2VhcmNoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2U6IFJlYWN0LkNoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICBzZXRWYWx1ZShldnQudGFyZ2V0LnZhbHVlKTtcbiAgICAvLyByZXNldCB0byBmYWxzZSB3aGVuIHRoZSBzZWFyY2ggcXVlcnkgY2hhbmdlc1xuICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQoZmFsc2UpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdDogUmVhY3QuRm9ybUV2ZW50SGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB0aGUgdXNlciBzdWJtaXRzIHRoZSBmb3JtIHRvIGNhcHR1cmUgY29tcGxldGUgcXVlcnlcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgfTtcblxuICBjb25zdCBjbGVhcklucHV0ID0gKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCBiZWZvcmUgdXNlciBjbGVhcnMgaW5wdXRcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIHNldFZhbHVlKCcnKTtcbiAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgLy8gcmVzZXQgdGhlIGNvbnRleHQgd2l0aCBlbXB0eSB2YWx1ZXNcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICBxdWVyeTogJycsXG4gICAgICBzZWFyY2hJZDogJycsXG4gICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICAvLyBhbmQgdHJhY2sgc2VhcmNoIGV2ZW50IGlmIHVzZXIgbWFkZSBhIHNlYXJjaFxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiAoKSA9PiB7XG4gICAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgfVxuXG4gICAgICB0b2dnbGVTZWFyY2goKTtcbiAgICB9LFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIGRvbid0IHRyYWNrIGlmIGEgcmVzdWx0IHdhcyBjbGlja2VkIG9yIGlmIHdlIGRvbid0IGhhdmUgc2VhcmNoIHJlc3VsdHNcbiAgICBpZiAoXG4gICAgICBzZWFyY2hSZXN1bHRDbGlja2VkIHx8XG4gICAgICAhb25TZWFyY2hBc1lvdVR5cGUgfHxcbiAgICAgICFzZWFyY2hBc1lvdVR5cGVSZXN1bHRzIHx8XG4gICAgICAhdmFsdWVUcmltbWVkLmxlbmd0aFxuICAgIClcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLXJldHVyblxuICAgICAgcmV0dXJuO1xuICB9LCBbXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxuICAgIHZhbHVlVHJpbW1lZCxcbiAgICBvblNlYXJjaEFzWW91VHlwZSxcbiAgXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpbnB1dFJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgIHNlYXJjaFdvcmtlci5pbml0KCk7XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghdmFsdWVUcmltbWVkLmxlbmd0aCkge1xuICAgICAgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhudWxsKTtcbiAgICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgICAgcXVlcnk6ICcnLFxuICAgICAgICBzZWFyY2hJZDogJycsXG4gICAgICAgIHJlc3VsdHNDb3VudDogMCxcbiAgICAgICAgcXVlcnlMb2FkVGltZTogMCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBsZXQgY2xlYXJBdXRvY29tcGxldGUgPSB0cnVlO1xuICAgIGxldCBjbGVhclNlYXJjaEFzWW91VHlwZSA9IHRydWU7XG5cbiAgICBsZXQgc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5OiBOb2RlSlMuVGltZW91dDtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2l0aCBhIHNtYWxsIGRlbGF5IHdoZW4gdGhlcmUgYXJlIG5vIHJlc3VsdHNcbiAgICAgIGlmIChcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUgJiZcbiAgICAgICAgcmVzdWx0cy50b3AubGVuZ3RoID09PSAwICYmXG4gICAgICAgICFzZWFyY2hSZXN1bHRDbGlja2VkXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHF1ZXJ5TG9hZFRpbWUgfSA9IHJlc3VsdHM7XG4gICAgICAgIHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICghY2FuY2VsKSB7XG4gICAgICAgICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIDAsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICAgIGNsZWFyVGltZW91dChzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXkpO1xuICAgIH07XG4gIH0sIFtcbiAgICB2YWx1ZVRyaW1tZWQsXG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyxcbiAgXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICBiZz1cInNoYWRvdy1zZWNvbmRhcnlcIlxuICAgICAgICBoZWlnaHQ9XCIxMDB2aFwiXG4gICAgICAgIHBvc2l0aW9uPVwiZml4ZWRcIlxuICAgICAgICAvLyBXZSBhZGQgNXJlbSBoZXJlIGluIGNhc2UgdGhlcmUncyBzb21lIHNvcnQgb2YgYnJhbmRlZCBiYW5uZXIgYWJvdmUgc2VhcmNoXG4gICAgICAgIC8vIFRoZSBzZWFyY2ggYXJlYSBpcyBtdWNoIHRhbGxlciB0aGFuIDVyZW0gc28gdGhpcyBpcyBhIHNhZmUgYW1vdW50IG9mIHBhZGRpbmdcbiAgICAgICAgdG9wPXtgY2FsYygke3RoZW1lLmVsZW1lbnRzLmhlYWRlckhlaWdodH0gKyA1cmVtKWB9XG4gICAgICAgIHdpZHRoPXsxfVxuICAgICAgLz5cbiAgICAgIDxGb2N1c1RyYXBcbiAgICAgICAgb25Fc2NhcGVLZXk9e2Nsb3NlU2VhcmNofVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249XCJhYnNvbHV0ZVwiXG4gICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICBtYXhIZWlnaHQ9e3sgXzogJ2NhbGMoMTAwdmggLSA2M3B4KScsIG1kOiAnY2FsYygxMDB2aCAtIDgwcHgpJyB9fVxuICAgICAgICAgIG92ZXJmbG93PVwiYXV0b1wiXG4gICAgICAgID5cbiAgICAgICAgICA8Qm94IGJvcmRlcj1cIm5vbmVcIiB3aWR0aD1cImF1dG9cIj5cbiAgICAgICAgICAgIDxRdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiYmFzZWxpbmVcIlxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiZ3JheS02MDBcIlxuICAgICAgICAgICAgICAgIGJvcmRlclN0eWxlQm90dG9tPVwic29saWRcIlxuICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoQm90dG9tPVwiMXB4XCJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgIGhlaWdodD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgICB3aWR0aD17eyBfOiAyMCwgbWQ6IDI0IH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8Rm9ybVxuICAgICAgICAgICAgICAgICAgYWN0aW9uPVwiL3NlYXJjaFwiXG4gICAgICAgICAgICAgICAgICBpZD1cInNlYXJjaC1mb3JtXCJcbiAgICAgICAgICAgICAgICAgIG1sPXs4fVxuICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0eWxlZElucHV0XG4gICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcj1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAyMCwgbWQ6IDI2IH19XG4gICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ9XCJib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJoZWFkZXItc2VhcmNoLWJhclwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJxdWVyeVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGUpID0+IG9uS2V5RG93bihlKX1cbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3NlYXJjaFBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICAgICAgICByZWY9e2lucHV0UmVmfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L0Zvcm0+XG4gICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgIGljb249e01pbmlEZWxldGVJY29ufVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyIHNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICB0aXA9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwUHJvcHM9e3tcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50OiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogJ2Zsb2F0aW5nJyxcbiAgICAgICAgICAgICAgICAgICAgbmFycm93OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDIsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17Y2xlYXJJbnB1dH1cbiAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgPC9RdWVyeUNvbnRhaW5lcj5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8U3VnZ2VzdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgIHt2YWx1ZVRyaW1tZWQubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8RmxleEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCIgYXM9XCJ1bFwiIGxpc3RTdHlsZT1cIm5vbmVcIiBwPXswfT5cbiAgICAgICAgICAgICAgICAgIHthdXRvQ29tcGxldGVTdWdnZXN0aW9ucy5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtzLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ2F1dG9jb21wbGV0ZV9yZXN1bHQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbWlib2xkU2VhcmNoSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgbWI9ezIgYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9ezE0fVxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9ezh9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICAgICAgICAgICAgICAgICAgbXI9ezEyfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPEhpZ2hsaWdodGVkVGV4dCBzdWdnZXN0aW9uPXtzfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgIHsoc2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy50b3AubGVuZ3RoID4gMCkgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPFRleHQgYXM9XCJoMlwiIGZvbnRTaXplPXsyMH0gbWI9ezE2fSBtdD17MjR9PlxuICAgICAgICAgICAgICAgICAgICAgIFRvcCByZXN1bHRzXG4gICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgICBhcz1cInVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBsaXN0U3R5bGU9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICBwPXswfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc2VhcmNoQXNZb3VUeXBlTG9hZGVyPy5zaGltbWVyUm93cy5tYXAoKHIpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lTG9hZGVyTGkga2V5PXtyLmtleX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ci5zaGltbWVycy5tYXAoKHdvcmQpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNoaW1tZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezMwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5PXs4IGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXt3b3JkLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17d29yZC53aWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RmFtaWx5PVwiYWNjZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yPVwidGV4dC1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17eyBfOiAxMCBhcyAxNiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImJvcmRlci1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI9ezF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1cz1cInhsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHg9ezE2fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5PXswLjF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVMb2FkZXJMaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy50b3AubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZVJlc3VsdExpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnF1ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJsaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZWx5UmVkaXJlY3Qocy51cmxQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoUmVzdWx0Q2xpY2tlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnOiBzLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgY29udGVudF9pZDogcy5jb250ZW50SWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlbHlSZWRpcmVjdChzLnVybFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmFkZ2Ugc2l6ZT1cInNtXCIgdmFyaWFudD1cInRlcnRpYXJ5XCIgbWw9ezEyfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3MudHlwZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmFkZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge3NlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggPT09IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPEJveCBmb250U2l6ZT17eyBfOiAyMCwgc206IDI2IH19IG10PXswfSBtYj17NDh9PlxuICAgICAgICAgICAgICAgICAgICAgIHtgV2UgY291bGRuJ3QgZmluZCBhIG1hdGNoIGZvciBgfVxuICAgICAgICAgICAgICAgICAgICAgIDxUZXh0IGZvbnRXZWlnaHQ9XCJib2xkXCI+e2BcIiR7dmFsdWVUcmltbWVkfS5cImB9PC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICcgVHJ5IGFub3RoZXIga2V5d29yZCwgb3Igc2VlIHdoYXQgb3VyIG1lbWJlcnMgYXJlIGxlYXJuaW5nLidcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPE1lbnUgYm9yZGVyPVwibm9uZVwiIHZhcmlhbnQ9XCJwb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgPFBvcHVsYXJTZWFyY2hlc1xuICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaD17bmF2aWdhdGVUb1NlYXJjaH1cbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPFBvcHVsYXJDb250ZW50IG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfSAvPlxuICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7ISFzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy50b3AubGVuZ3RoICYmIChcbiAgICAgICAgICAgICAgPFN0cm9rZUJ1dHRvblxuICAgICAgICAgICAgICAgIG15PXsxNn1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2soJ3ZpZXdfYWxsX3Jlc3VsdHMnLCB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaCh2YWx1ZSwgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8uc2VhcmNoSWQpO1xuICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgVmlldyBhbGwgcmVzdWx0c1xuICAgICAgICAgICAgICA8L1N0cm9rZUJ1dHRvbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8UXVpekFuZEhlbHBDZW50ZXJMaW5rc1xuICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja31cbiAgICAgICAgICAgICAgaGFuZGxlQ2xvc2VEcm9wZG93bj17Y2xvc2VTZWFyY2h9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3VnZ2VzdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgPC9Cb3g+XG4gICAgICA8L0ZvY3VzVHJhcD5cbiAgICA8Lz5cbiAgKTtcbn07XG4iXX0= */",
102
103
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
103
104
  });
104
105
  const HighlightedText = ({
@@ -165,8 +166,24 @@ export const SearchPane = ({
165
166
  const inputRef = useRef(null);
166
167
  const [autoCompleteSuggestions, setAutoCompleteSuggestions] = useState([]);
167
168
  const [searchAsYouTypeResults, setSearchAsYouTypeResults] = useState(null);
169
+ const [searchResultClicked, setSearchResultClicked] = useState(false);
170
+ const {
171
+ setOnSearchAsYouTypeParams
172
+ } = useSearchTrackingContext();
168
173
  const searchAsYouTypeLoader = React.useMemo(() => searchAsYouTypeResults === null ? rndLoader() : null, [searchAsYouTypeResults]);
174
+ const valueTrimmed = value.trim();
175
+ const hasSearchEventAndResultsWithoutClick = onSearchAsYouType && searchAsYouTypeResults && !searchResultClicked;
169
176
  const closeSearch = async () => {
177
+ // track search event when user made a search and then closed search pane
178
+ if (hasSearchEventAndResultsWithoutClick && valueTrimmed.length > 0) {
179
+ const {
180
+ query,
181
+ searchId,
182
+ resultsCount,
183
+ queryLoadTime
184
+ } = searchAsYouTypeResults;
185
+ onSearchAsYouType(query, searchId, resultsCount, queryLoadTime);
186
+ }
170
187
  await toggleSearch();
171
188
  // adds a little delay between closing the search pane and focusing on the button
172
189
  // to prevent the search pane from immediately opening again
@@ -193,37 +210,91 @@ export const SearchPane = ({
193
210
  };
194
211
  const handleChange = evt => {
195
212
  setValue(evt.target.value);
213
+ // reset to false when the search query changes
214
+ setSearchResultClicked(false);
196
215
  };
197
216
  const handleSubmit = event => {
198
217
  event.preventDefault();
218
+
219
+ // track search event when the user submits the form to capture complete query
220
+ if (hasSearchEventAndResultsWithoutClick) {
221
+ const {
222
+ query,
223
+ searchId,
224
+ resultsCount,
225
+ queryLoadTime
226
+ } = searchAsYouTypeResults;
227
+ onSearchAsYouType(query, searchId, resultsCount, queryLoadTime);
228
+ }
199
229
  navigateToSearch(value, searchAsYouTypeResults?.searchId);
200
230
  };
201
231
  const clearInput = () => {
232
+ // track search event before user clears input
233
+ if (hasSearchEventAndResultsWithoutClick && valueTrimmed.length > 0) {
234
+ const {
235
+ query,
236
+ searchId,
237
+ resultsCount,
238
+ queryLoadTime
239
+ } = searchAsYouTypeResults;
240
+ onSearchAsYouType(query, searchId, resultsCount, queryLoadTime);
241
+ }
202
242
  setValue('');
203
243
  setAutoCompleteSuggestions([]);
244
+ // reset the context with empty values
245
+ setOnSearchAsYouTypeParams({
246
+ query: '',
247
+ searchId: '',
248
+ resultsCount: 0,
249
+ queryLoadTime: 0
250
+ });
204
251
  };
205
252
 
206
253
  // when the current URL changes, we want to close the search pane if it's open
254
+ // and track search event if user made a search
207
255
  useUrlChangeDetection({
208
- onUrlChange: toggleSearch
256
+ onUrlChange: () => {
257
+ if (hasSearchEventAndResultsWithoutClick && valueTrimmed.length > 0) {
258
+ const {
259
+ query,
260
+ searchId,
261
+ resultsCount,
262
+ queryLoadTime
263
+ } = searchAsYouTypeResults;
264
+ onSearchAsYouType(query, searchId, resultsCount, queryLoadTime);
265
+ }
266
+ toggleSearch();
267
+ }
209
268
  });
269
+ useEffect(() => {
270
+ // don't track if a result was clicked or if we don't have search results
271
+ if (searchResultClicked || !onSearchAsYouType || !searchAsYouTypeResults || !valueTrimmed.length)
272
+ // eslint-disable-next-line no-useless-return
273
+ return;
274
+ }, [searchResultClicked, searchAsYouTypeResults, valueTrimmed, onSearchAsYouType]);
210
275
  useEffect(() => {
211
276
  inputRef.current?.focus();
212
277
  searchWorker.init();
213
278
  }, []);
214
- const valueTrimmed = value.trim();
215
279
  useEffect(() => {
216
280
  if (!valueTrimmed.length) {
217
281
  setSearchAsYouTypeResults(null);
218
282
  setAutoCompleteSuggestions([]);
283
+ setOnSearchAsYouTypeParams({
284
+ query: '',
285
+ searchId: '',
286
+ resultsCount: 0,
287
+ queryLoadTime: 0
288
+ });
219
289
  return;
220
290
  }
221
291
  let cancel = false;
222
292
  let clearAutocomplete = true;
223
293
  let clearSearchAsYouType = true;
224
- setTimeout(() => {
294
+ let searchEventNoResultDelay;
295
+ const loaderDelay = setTimeout(() => {
225
296
  /*
226
- * Wait 10 seconds to get a response for worker before showing loaders.
297
+ * Wait 10 milliseconds to get a response for worker before showing loaders.
227
298
  * This prevents flickering loaders on quick or cached results.
228
299
  */
229
300
  if (cancel) return;
@@ -241,35 +312,33 @@ export const SearchPane = ({
241
312
  if (cancel) return; // text has changed since this request was made
242
313
 
243
314
  setSearchAsYouTypeResults(results);
315
+ setOnSearchAsYouTypeParams({
316
+ query: results.query,
317
+ searchId: results.searchId,
318
+ resultsCount: results.top.length,
319
+ queryLoadTime: results.queryLoadTime
320
+ });
244
321
 
245
- // onSearchAsYouType is typically used for tracking
246
- if (onSearchAsYouType) {
247
- setTimeout(() => {
248
- /*
249
- * This timeout and cancel check is a debounce that ensures we do not
250
- * send tracking events for every keystroke, but only when the user
251
- * stops typing for 250ms. We previously used this debounce for the
252
- * search-as-you-type query as a whole, but this is not necessary
253
- * from a load standpoint since we have caching implemented on both
254
- * client and server. Applying the debounce only for this callback
255
- * allows us to maintain the most snappy user experience and still
256
- * have non-noisy tracking.
257
- */
258
- if (cancel) return;
259
- const {
260
- query,
261
- searchId,
262
- resultsCount,
263
- queryLoadTime
264
- } = results;
265
- onSearchAsYouType(query, searchId, resultsCount, queryLoadTime);
266
- }, 250);
322
+ // track search event with a small delay when there are no results
323
+ if (onSearchAsYouType && results.top.length === 0 && !searchResultClicked) {
324
+ const {
325
+ query,
326
+ searchId,
327
+ queryLoadTime
328
+ } = results;
329
+ searchEventNoResultDelay = setTimeout(() => {
330
+ if (!cancel) {
331
+ onSearchAsYouType(query, searchId, 0, queryLoadTime);
332
+ }
333
+ }, 300);
267
334
  }
268
335
  });
269
336
  return () => {
270
337
  cancel = true;
338
+ clearTimeout(loaderDelay);
339
+ clearTimeout(searchEventNoResultDelay);
271
340
  };
272
- }, [valueTrimmed, onSearchAsYouType]);
341
+ }, [valueTrimmed, onSearchAsYouType, searchResultClicked, setOnSearchAsYouTypeParams]);
273
342
  return /*#__PURE__*/_jsxs(_Fragment, {
274
343
  children: [/*#__PURE__*/_jsx(Box, {
275
344
  "aria-hidden": true,
@@ -292,18 +361,13 @@ export const SearchPane = ({
292
361
  borderStyle: "solid",
293
362
  borderWidth: "2px 0 1px",
294
363
  "data-testid": "header-search-dropdown",
295
- position: {
296
- _: 'fixed',
297
- md: 'absolute'
298
- },
364
+ position: "absolute",
299
365
  width: "100%",
300
366
  maxHeight: {
301
367
  _: 'calc(100vh - 63px)',
302
368
  md: 'calc(100vh - 80px)'
303
369
  },
304
370
  overflow: "auto",
305
- zIndex: 10 // ensure dropdown is above the page content
306
- ,
307
371
  children: [/*#__PURE__*/_jsx(Box, {
308
372
  border: "none",
309
373
  width: "auto",
@@ -372,14 +436,15 @@ export const SearchPane = ({
372
436
  as: "ul",
373
437
  listStyle: "none",
374
438
  p: 0,
375
- children: autoCompleteSuggestions.map(s => /*#__PURE__*/_jsxs(InlineResultLi, {
439
+ children: autoCompleteSuggestions.map((s, i) => /*#__PURE__*/_jsxs(InlineResultLi, {
376
440
  tabIndex: 0,
377
441
  onKeyDown: evt => {
378
442
  if (evt.key === 'Enter') {
443
+ setSearchResultClicked(true);
379
444
  onTrackingClick('autocomplete_result', {
380
445
  search_id: searchAsYouTypeResults?.searchId ?? '',
381
446
  misc: JSON.stringify({
382
- value: s.title
447
+ position: i
383
448
  })
384
449
  });
385
450
  navigateToSearch(s.title, searchAsYouTypeResults?.searchId);
@@ -387,10 +452,11 @@ export const SearchPane = ({
387
452
  }
388
453
  },
389
454
  onClick: () => {
455
+ setSearchResultClicked(true);
390
456
  onTrackingClick('autocomplete_result', {
391
457
  search_id: searchAsYouTypeResults?.searchId ?? '',
392
458
  misc: JSON.stringify({
393
- value: s.title
459
+ position: i
394
460
  })
395
461
  });
396
462
  navigateToSearch(s.title, searchAsYouTypeResults?.searchId);
@@ -441,24 +507,32 @@ export const SearchPane = ({
441
507
  role: "link",
442
508
  onKeyDown: evt => {
443
509
  if (evt.key === 'Enter') {
510
+ setSearchResultClicked(true);
444
511
  onTrackingClick('search_as_you_type_result', {
445
512
  search_id: searchAsYouTypeResults.searchId,
446
513
  slug: s.slug,
447
514
  ...(s.contentId ? {
448
515
  content_id: s.contentId
449
- } : {})
516
+ } : {}),
517
+ misc: JSON.stringify({
518
+ position: i
519
+ })
450
520
  });
451
521
  closeSearch();
452
522
  safelyRedirect(s.urlPath);
453
523
  }
454
524
  },
455
525
  onClick: () => {
526
+ setSearchResultClicked(true);
456
527
  onTrackingClick('search_as_you_type_result', {
457
528
  search_id: searchAsYouTypeResults.searchId,
458
529
  slug: s.slug,
459
530
  ...(s.contentId ? {
460
531
  content_id: s.contentId
461
- } : {})
532
+ } : {}),
533
+ misc: JSON.stringify({
534
+ position: i
535
+ })
462
536
  });
463
537
  closeSearch();
464
538
  safelyRedirect(s.urlPath);