@codecademy/brand 3.26.0-alpha.5ef94a555c.0 → 3.26.0-alpha.c0e3f304ed.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.
@@ -9,7 +9,6 @@ import { useEffect, useRef, useState } from 'react';
9
9
  import { useOnEscHandler } from '../shared';
10
10
  import { searchPlaceholder } from './consts';
11
11
  import { PopularContent, PopularSearches } from './DefaultResults';
12
- import { useSearchTracking } from './hooks/useSearchTracking';
13
12
  import { useUrlChangeDetection } from './hooks/useUrlChangeDetection';
14
13
  import { QuizAndHelpCenterLinks } from './QuizAndHelpCenterLinks';
15
14
  import { safelyRedirect } from './safelyRedirect';
@@ -38,7 +37,7 @@ const QueryContainer = /*#__PURE__*/_styled(ContentContainer, {
38
37
  px: {
39
38
  _: 24
40
39
  }
41
- }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXNDdUIiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVNlYXJjaFRyYWNraW5nIH0gZnJvbSAnLi9ob29rcy91c2VTZWFyY2hUcmFja2luZyc7XG5pbXBvcnQgeyB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24gfSBmcm9tICcuL2hvb2tzL3VzZVVybENoYW5nZURldGVjdGlvbic7XG5pbXBvcnQgeyBRdWl6QW5kSGVscENlbnRlckxpbmtzIH0gZnJvbSAnLi9RdWl6QW5kSGVscENlbnRlckxpbmtzJztcbmltcG9ydCB7IHNhZmVseVJlZGlyZWN0IH0gZnJvbSAnLi9zYWZlbHlSZWRpcmVjdCc7XG5pbXBvcnQgeyB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQgfSBmcm9tICcuL1NlYXJjaFRyYWNraW5nUHJvdmlkZXInO1xuaW1wb3J0IHsgc2VhcmNoV29ya2VyIH0gZnJvbSAnLi9TZWFyY2hXb3JrZXInO1xuaW1wb3J0IHR5cGUge1xuICBBdXRvY29tcGxldGVTdWdnZXN0aW9uLFxuICBTZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxufSBmcm9tICcuL1NlYXJjaFdvcmtlci90eXBlcyc7XG5pbXBvcnQgeyBTZWFyY2hQYW5lUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgRm9ybSA9IEJveC53aXRoQ29tcG9uZW50KCdmb3JtJyk7XG5jb25zdCBJbnB1dCA9IEJveC53aXRoQ29tcG9uZW50KCdpbnB1dCcpO1xuXG5jb25zdCBRdWVyeUNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKShcbiAgY3NzKHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBwdDogMTYsXG4gICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgcHg6IHsgXzogMjQgfSxcbiAgfSlcbik7XG5cbmNvbnN0IFN1Z2dlc3Rpb25Db250YWluZXIgPSBzdHlsZWQoQ29udGVudENvbnRhaW5lcikoXG4gIGNzcyh7XG4gICAgcHQ6IDE2LFxuICAgIHBiOiB7IF86IDAsIG1kOiAyNCB9LFxuICAgIHB4OiB7IF86IDI0IH0sXG4gIH0pXG4pO1xuXG5jb25zdCBTdHlsZWRJbnB1dCA9IHN0eWxlZChJbnB1dCkoXG4gIGNzcyh7XG4gICAgb3V0bGluZTogYG5vbmVgLFxuICAgICcmOjpwbGFjZWhvbGRlcic6IHtcbiAgICAgIHRleHRDb2xvcjogdGhlbWUuY29sb3JzWyd0ZXh0LXNlY29uZGFyeSddIGFzIG5ldmVyLFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVSZXN1bHRMaSA9IHN0eWxlZChNZW51SXRlbSkoXG4gIGNzcyh7XG4gICAgcGw6IDAsXG4gICAgcHk6IDgsXG4gICAgZm9udFNpemU6IDE2LFxuICAgICcmOmZvY3VzLXZpc2libGU6YWZ0ZXInOiB7XG4gICAgICBsZWZ0OiAtNCxcbiAgICB9LFxuICB9KVxuKTtcblxuY29uc3QgSW5saW5lTG9hZGVyTGkgPSBzdHlsZWQubGkoXG4gIGNzcyh7XG4gICAgbGlzdFN0eWxlVHlwZTogJ25vbmUnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBnYXA6IDEyLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IFNlbWlib2xkU2VhcmNoSWNvbiA9IHN0eWxlZChTZWFyY2hJY29uKWBcbiAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDtcbiAgY2lyY2xlLFxuICBwYXRoIHtcbiAgICBzdHJva2Utd2lkdGg6IDJweDtcbiAgfVxuICByZWN0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMnB4LCAtMnB4KTtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDRweCk7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSArIDRweCk7XG4gIH1cbmA7XG5cbmNvbnN0IEVsbGlwc2lzQm94ID0gc3R5bGVkKEJveClgXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuYDtcblxuY29uc3QgSGlnaGxpZ2h0ZWRUZXh0ID0gKHtcbiAgc3VnZ2VzdGlvbjogeyB0aXRsZSwgc2VnbWVudHMgfSxcbn06IHtcbiAgc3VnZ2VzdGlvbjogQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbjtcbn0pID0+IHtcbiAgY29uc3QgbW9kZSA9IHVzZUN1cnJlbnRNb2RlKCk7XG4gIGNvbnN0IGhpZ2hsaWdodENvbG9yID0gbW9kZSA9PT0gJ2RhcmsnID8gJ2h5cGVyJyA6ICd5ZWxsb3cnO1xuXG4gIHJldHVybiAoXG4gICAgPEZsZXhCb3g+XG4gICAgICA8RWxsaXBzaXNCb3hcbiAgICAgICAgbWF4V2lkdGg9XCJjYWxjKDEwMHZ3IC0gMTI4cHgpXCJcbiAgICAgICAgd2hpdGVTcGFjZT1cInByZVwiXG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIG92ZXJmbG93PVwiaGlkZGVuXCJcbiAgICAgID5cbiAgICAgICAge3NlZ21lbnRzLm1hcCgoc2VnbWVudCwgaSkgPT4gKFxuICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICBrZXk9e2Ake3RpdGxlfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgbGluZUhlaWdodD1cInRpdGxlXCJcbiAgICAgICAgICAgIHsuLi4oc2VnbWVudC5oaWdobGlnaHRcbiAgICAgICAgICAgICAgPyB7IGJnOiBoaWdobGlnaHRDb2xvciwgZm9udFdlaWdodDogJ2JvbGQnIH1cbiAgICAgICAgICAgICAgOiB7fSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3NlZ21lbnQudmFsdWV9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApKX1cbiAgICAgIDwvRWxsaXBzaXNCb3g+XG4gICAgICA8VGV4dCBzY3JlZW5yZWFkZXI+e3RpdGxlfTwvVGV4dD5cbiAgICA8L0ZsZXhCb3g+XG4gICk7XG59O1xuXG50eXBlIFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHtcbiAgc2hpbW1lclJvd3M6IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICBzaGltbWVyczoge1xuICAgICAga2V5OiBzdHJpbmc7XG4gICAgICB3aWR0aDogbnVtYmVyO1xuICAgIH1bXTtcbiAgfVtdO1xufTtcblxubGV0IGxvYWRlcktleSA9IDA7XG5mdW5jdGlvbiBybmRMb2FkZXIoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wbHVzcGx1c1xuICBjb25zdCBrZXkgPSBsb2FkZXJLZXkrKztcbiAgY29uc3QgbG9hZGVyOiBTZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSB7IHNoaW1tZXJSb3dzOiBbXSB9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xuICAgIGNvbnN0IHJvdyA9IHtcbiAgICAgIGtleTogYCR7a2V5fToke2l9YCxcbiAgICAgIHNoaW1tZXJzOiBbXSBhcyB7IGtleTogc3RyaW5nOyB3aWR0aDogbnVtYmVyIH1bXSxcbiAgICB9O1xuICAgIGNvbnN0IHdvcmRzID0gTWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiAzKTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHdvcmRzOyBqKyspIHtcbiAgICAgIGNvbnN0IHdpZHRoID0gMTIgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiA5Nik7XG4gICAgICByb3cuc2hpbW1lcnMucHVzaCh7XG4gICAgICAgIGtleTogYCR7a2V5fToke2p9YCxcbiAgICAgICAgd2lkdGgsXG4gICAgICB9KTtcbiAgICB9XG4gICAgbG9hZGVyLnNoaW1tZXJSb3dzLnB1c2gocm93KTtcbiAgfVxuICByZXR1cm4gbG9hZGVyO1xufVxuXG5leHBvcnQgY29uc3QgU2VhcmNoUGFuZTogUmVhY3QuRkM8U2VhcmNoUGFuZVByb3BzPiA9ICh7XG4gIG9uU2VhcmNoLFxuICBvblRyYWNraW5nQ2xpY2ssXG4gIHNlYXJjaEJ1dHRvblJlZixcbiAgdG9nZ2xlU2VhcmNoLFxuICBvblNlYXJjaEFzWW91VHlwZSxcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFthdXRvQ29tcGxldGVTdWdnZXN0aW9ucywgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnNdID0gdXNlU3RhdGU8XG4gICAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbltdXG4gID4oW10pO1xuICBjb25zdCBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0cywgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0c10gPVxuICAgIHVzZVN0YXRlPFNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfCBudWxsPihudWxsKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG5cbiAgY29uc3QgaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzID0gb25TZWFyY2hBc1lvdVR5cGUgJiYgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcblxuICBjb25zdCBjbG9zZVNlYXJjaCA9IGFzeW5jIChmcm9tUmVzdWx0Q2xpY2sgPSBmYWxzZSkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHVzZXIgbWFkZSBhIHNlYXJjaCBhbmQgdGhlbiBjbG9zZWQgc2VhcmNoIHBhbmVcbiAgICBpZiAoXG4gICAgICBoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHMgJiZcbiAgICAgICFmcm9tUmVzdWx0Q2xpY2sgJiZcbiAgICAgIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRvZ2dsZVNlYXJjaCgpO1xuICAgIC8vIGFkZHMgYSBsaXR0bGUgZGVsYXkgYmV0d2VlbiBjbG9zaW5nIHRoZSBzZWFyY2ggcGFuZSBhbmQgZm9jdXNpbmcgb24gdGhlIGJ1dHRvblxuICAgIC8vIHRvIHByZXZlbnQgdGhlIHNlYXJjaCBwYW5lIGZyb20gaW1tZWRpYXRlbHkgb3BlbmluZyBhZ2FpblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHNlYXJjaEJ1dHRvblJlZiAmJiBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgc2VhcmNoQnV0dG9uUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZU9uRXNjSGFuZGxlcigoKSA9PiBjbG9zZVNlYXJjaCgpKTtcblxuICBjb25zdCBvbk1vdXNlRG93bk91dHNpZGUgPSAoeyB0YXJnZXQgfTogTW91c2VFdmVudCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZU91dHNpZGVDbGljayA9ICgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWRvY3VtZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXRlc3RpZD1cImhlYWRlci1zZWFyY2gtZHJvcGRvd25cIl0nKVxuICAgICAgICAgID8uY29udGFpbnModGFyZ2V0IGFzIEhUTUxFbGVtZW50KSAmJlxuICAgICAgICB0YXJnZXQgIT09IHNlYXJjaEJ1dHRvblJlZj8uY3VycmVudFxuICAgICAgKSB7XG4gICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICB9XG5cbiAgICAgIHRhcmdldD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gICAgfTtcblxuICAgIHRhcmdldD8uYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gIH07XG5cbiAgY29uc3QgbmF2aWdhdGVUb1NlYXJjaCA9IChzZWFyY2hUZXJtOiBzdHJpbmcsIGZyb21QcmV2U2VhcmNoPzogc3RyaW5nKSA9PiB7XG4gICAgb25TZWFyY2goc2VhcmNoVGVybSwgZnJvbVByZXZTZWFyY2gpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZTogUmVhY3QuQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgIHNldFZhbHVlKGV2dC50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdDogUmVhY3QuRm9ybUV2ZW50SGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB0aGUgdXNlciBzdWJtaXRzIHRoZSBmb3JtIHRvIGNhcHR1cmUgY29tcGxldGUgcXVlcnlcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgfTtcblxuICBjb25zdCBjbGVhcklucHV0ID0gKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCBiZWZvcmUgdXNlciBjbGVhcnMgaW5wdXRcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIHNldFZhbHVlKCcnKTtcbiAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgLy8gcmVzZXQgdGhlIGNvbnRleHQgd2l0aCBlbXB0eSB2YWx1ZXNcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICBxdWVyeTogJycsXG4gICAgICBzZWFyY2hJZDogJycsXG4gICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICAvLyBhbmQgdHJhY2sgc2VhcmNoIGV2ZW50IGlmIHVzZXIgbWFkZSBhIHNlYXJjaFxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiAoKSA9PiB7XG4gICAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgfVxuXG4gICAgICB0b2dnbGVTZWFyY2goKTtcbiAgICB9LFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlucHV0UmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgc2VhcmNoV29ya2VyLmluaXQoKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF2YWx1ZVRyaW1tZWQubGVuZ3RoKSB7XG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgICBxdWVyeTogJycsXG4gICAgICAgIHNlYXJjaElkOiAnJyxcbiAgICAgICAgcmVzdWx0c0NvdW50OiAwLFxuICAgICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGNhbmNlbCA9IGZhbHNlO1xuICAgIGxldCBjbGVhckF1dG9jb21wbGV0ZSA9IHRydWU7XG4gICAgbGV0IGNsZWFyU2VhcmNoQXNZb3VUeXBlID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICB9O1xuICB9LCBbdmFsdWVUcmltbWVkLCBvblNlYXJjaEFzWW91VHlwZSwgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXNdKTtcblxuICB1c2VTZWFyY2hUcmFja2luZyh7XG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgYmc9XCJzaGFkb3ctc2Vjb25kYXJ5XCJcbiAgICAgICAgaGVpZ2h0PVwiMTAwdmhcIlxuICAgICAgICBwb3NpdGlvbj1cImZpeGVkXCJcbiAgICAgICAgLy8gV2UgYWRkIDVyZW0gaGVyZSBpbiBjYXNlIHRoZXJlJ3Mgc29tZSBzb3J0IG9mIGJyYW5kZWQgYmFubmVyIGFib3ZlIHNlYXJjaFxuICAgICAgICAvLyBUaGUgc2VhcmNoIGFyZWEgaXMgbXVjaCB0YWxsZXIgdGhhbiA1cmVtIHNvIHRoaXMgaXMgYSBzYWZlIGFtb3VudCBvZiBwYWRkaW5nXG4gICAgICAgIHRvcD17YGNhbGMoJHt0aGVtZS5lbGVtZW50cy5oZWFkZXJIZWlnaHR9ICsgNXJlbSlgfVxuICAgICAgICB3aWR0aD17MX1cbiAgICAgIC8+XG4gICAgICA8Rm9jdXNUcmFwXG4gICAgICAgIG9uRXNjYXBlS2V5PXsoKSA9PiBjbG9zZVNlYXJjaCgpfVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249e3sgXzogJ2ZpeGVkJywgbWQ6ICdhYnNvbHV0ZScgfX1cbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIG1heEhlaWdodD17eyBfOiAnY2FsYygxMDB2aCAtIDYzcHgpJywgbWQ6ICdjYWxjKDEwMHZoIC0gODBweCknIH19XG4gICAgICAgICAgb3ZlcmZsb3c9XCJhdXRvXCJcbiAgICAgICAgICB6SW5kZXg9ezEwfSAvLyBlbnN1cmUgZHJvcGRvd24gaXMgYWJvdmUgdGhlIHBhZ2UgY29udGVudFxuICAgICAgICA+XG4gICAgICAgICAgPEJveCBib3JkZXI9XCJub25lXCIgd2lkdGg9XCJhdXRvXCI+XG4gICAgICAgICAgICA8UXVlcnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtcz1cImJhc2VsaW5lXCJcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktNjAwXCJcbiAgICAgICAgICAgICAgICBib3JkZXJTdHlsZUJvdHRvbT1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aEJvdHRvbT1cIjFweFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEZvcm1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbj1cIi9zZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZWFyY2gtZm9ybVwiXG4gICAgICAgICAgICAgICAgICBtbD17OH1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBib3JkZXI9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMjAsIG1kOiAyNiB9fVxuICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0PVwiYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaGVhZGVyLXNlYXJjaC1iYXJcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwicXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiBvbktleURvd24oZSl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Gb3JtPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICBpY29uPXtNaW5pRGVsZXRlSWNvbn1cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdmbG9hdGluZycsXG4gICAgICAgICAgICAgICAgICAgIG5hcnJvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NsZWFySW5wdXR9XG4gICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgIDwvUXVlcnlDb250YWluZXI+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPFN1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICB7dmFsdWVUcmltbWVkLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPEZsZXhCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGFzPVwidWxcIiBsaXN0U3R5bGU9XCJub25lXCIgcD17MH0+XG4gICAgICAgICAgICAgICAgICB7YXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgIGtleT17cy50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U2VtaWJvbGRTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBtYj17MiBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT17MTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17OH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBtcj17MTJ9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgeyhzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cImgyXCIgZm9udFNpemU9ezIwfSBtYj17MTZ9IG10PXsyNH0+XG4gICAgICAgICAgICAgICAgICAgICAgVG9wIHJlc3VsdHNcbiAgICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICA8RmxleEJveFxuICAgICAgICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgIGFzPVwidWxcIlxuICAgICAgICAgICAgICAgICAgICAgIGxpc3RTdHlsZT1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIHA9ezB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWFyY2hBc1lvdVR5cGVMb2FkZXI/LnNoaW1tZXJSb3dzLm1hcCgocikgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVMb2FkZXJMaSBrZXk9e3Iua2V5fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyLnNoaW1tZXJzLm1hcCgod29yZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2hpbW1lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MzB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHk9ezggYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3dvcmQua2V5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXt3b3JkLndpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk9XCJhY2NlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I9XCJ0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXt7IF86IDEwIGFzIDE2IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiYm9yZGVyLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcj17MX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPVwieGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweD17MTZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk9ezAuMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZUxvYWRlckxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lUmVzdWx0TGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMucXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH06JHtpLnRvU3RyaW5nKCl9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2godHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZSBzaXplPVwic21cIiB2YXJpYW50PVwidGVydGlhcnlcIiBtbD17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cy50eXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgICAgPC8+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+IHtcbiAgICBpbnB1dFJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgIHNlYXJjaFdvcmtlci5pbml0KCk7XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghdmFsdWVUcmltbWVkLmxlbmd0aCkge1xuICAgICAgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhudWxsKTtcbiAgICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgICAgcXVlcnk6ICcnLFxuICAgICAgICBzZWFyY2hJZDogJycsXG4gICAgICAgIHJlc3VsdHNDb3VudDogMCxcbiAgICAgICAgcXVlcnlMb2FkVGltZTogMCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBsZXQgY2xlYXJBdXRvY29tcGxldGUgPSB0cnVlO1xuICAgIGxldCBjbGVhclNlYXJjaEFzWW91VHlwZSA9IHRydWU7XG5cbiAgICBsZXQgc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5OiBOb2RlSlMuVGltZW91dDtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2l0aCBhIHNtYWxsIGRlbGF5IHdoZW4gdGhlcmUgYXJlIG5vIHJlc3VsdHNcbiAgICAgIGlmIChcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUgJiZcbiAgICAgICAgcmVzdWx0cy50b3AubGVuZ3RoID09PSAwICYmXG4gICAgICAgICFzZWFyY2hSZXN1bHRDbGlja2VkXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHF1ZXJ5TG9hZFRpbWUgfSA9IHJlc3VsdHM7XG4gICAgICAgIHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICghY2FuY2VsKSB7XG4gICAgICAgICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIDAsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICAgIGNsZWFyVGltZW91dChzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXkpO1xuICAgIH07XG4gIH0sIFtcbiAgICB2YWx1ZVRyaW1tZWQsXG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyxcbiAgXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICBiZz1cInNoYWRvdy1zZWNvbmRhcnlcIlxuICAgICAgICBoZWlnaHQ9XCIxMDB2aFwiXG4gICAgICAgIHBvc2l0aW9uPVwiZml4ZWRcIlxuICAgICAgICAvLyBXZSBhZGQgNXJlbSBoZXJlIGluIGNhc2UgdGhlcmUncyBzb21lIHNvcnQgb2YgYnJhbmRlZCBiYW5uZXIgYWJvdmUgc2VhcmNoXG4gICAgICAgIC8vIFRoZSBzZWFyY2ggYXJlYSBpcyBtdWNoIHRhbGxlciB0aGFuIDVyZW0gc28gdGhpcyBpcyBhIHNhZmUgYW1vdW50IG9mIHBhZGRpbmdcbiAgICAgICAgdG9wPXtgY2FsYygke3RoZW1lLmVsZW1lbnRzLmhlYWRlckhlaWdodH0gKyA1cmVtKWB9XG4gICAgICAgIHdpZHRoPXsxfVxuICAgICAgLz5cbiAgICAgIDxGb2N1c1RyYXBcbiAgICAgICAgb25Fc2NhcGVLZXk9e2Nsb3NlU2VhcmNofVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249e3sgXzogJ2ZpeGVkJywgbWQ6ICdhYnNvbHV0ZScgfX1cbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIG1heEhlaWdodD17eyBfOiAnY2FsYygxMDB2aCAtIDYzcHgpJywgbWQ6ICdjYWxjKDEwMHZoIC0gODBweCknIH19XG4gICAgICAgICAgb3ZlcmZsb3c9XCJhdXRvXCJcbiAgICAgICAgICB6SW5kZXg9ezEwfSAvLyBlbnN1cmUgZHJvcGRvd24gaXMgYWJvdmUgdGhlIHBhZ2UgY29udGVudFxuICAgICAgICA+XG4gICAgICAgICAgPEJveCBib3JkZXI9XCJub25lXCIgd2lkdGg9XCJhdXRvXCI+XG4gICAgICAgICAgICA8UXVlcnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtcz1cImJhc2VsaW5lXCJcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktNjAwXCJcbiAgICAgICAgICAgICAgICBib3JkZXJTdHlsZUJvdHRvbT1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aEJvdHRvbT1cIjFweFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEZvcm1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbj1cIi9zZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZWFyY2gtZm9ybVwiXG4gICAgICAgICAgICAgICAgICBtbD17OH1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBib3JkZXI9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMjAsIG1kOiAyNiB9fVxuICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0PVwiYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaGVhZGVyLXNlYXJjaC1iYXJcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwicXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiBvbktleURvd24oZSl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Gb3JtPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICBpY29uPXtNaW5pRGVsZXRlSWNvbn1cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdmbG9hdGluZycsXG4gICAgICAgICAgICAgICAgICAgIG5hcnJvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NsZWFySW5wdXR9XG4gICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgIDwvUXVlcnlDb250YWluZXI+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPFN1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICB7dmFsdWVUcmltbWVkLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPEZsZXhCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGFzPVwidWxcIiBsaXN0U3R5bGU9XCJub25lXCIgcD17MH0+XG4gICAgICAgICAgICAgICAgICB7YXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgIGtleT17cy50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW1pYm9sZFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1iPXsyIGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPXsxNH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXs4fVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1yPXsxMn1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICB7KHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0IGFzPVwiaDJcIiBmb250U2l6ZT17MjB9IG1iPXsxNn0gbXQ9ezI0fT5cbiAgICAgICAgICAgICAgICAgICAgICBUb3AgcmVzdWx0c1xuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbj1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJ1bFwiXG4gICAgICAgICAgICAgICAgICAgICAgbGlzdFN0eWxlPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcD17MH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNlYXJjaEFzWW91VHlwZUxvYWRlcj8uc2hpbW1lclJvd3MubWFwKChyKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZUxvYWRlckxpIGtleT17ci5rZXl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Iuc2hpbW1lcnMubWFwKCh3b3JkKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTaGltbWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXszMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweT17OCBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17d29yZC5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9e3dvcmQud2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseT1cImFjY2VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDb2xvcj1cInRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMTAgYXMgMTYgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I9XCJib3JkZXItc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyPXsxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM9XCJ4bFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB4PXsxNn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eT17MC4xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lTG9hZGVyTGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLm1hcCgocywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5xdWVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwibGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHMuc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgY29udGVudF9pZDogcy5jb250ZW50SWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZWx5UmVkaXJlY3Qocy51cmxQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhpZ2hsaWdodGVkVGV4dCBzdWdnZXN0aW9uPXtzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJhZGdlIHNpemU9XCJzbVwiIHZhcmlhbnQ9XCJ0ZXJ0aWFyeVwiIG1sPXsxMn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzLnR5cGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy50b3AubGVuZ3RoID09PSAwICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxCb3ggZm9udFNpemU9e3sgXzogMjAsIHNtOiAyNiB9fSBtdD17MH0gbWI9ezQ4fT5cbiAgICAgICAgICAgICAgICAgICAgICB7YFdlIGNvdWxkbid0IGZpbmQgYSBtYXRjaCBmb3IgYH1cbiAgICAgICAgICAgICAgICAgICAgICA8VGV4dCBmb250V2VpZ2h0PVwiYm9sZFwiPntgXCIke3ZhbHVlVHJpbW1lZH0uXCJgfTwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnIFRyeSBhbm90aGVyIGtleXdvcmQsIG9yIHNlZSB3aGF0IG91ciBtZW1iZXJzIGFyZSBsZWFybmluZy4nXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgPE1lbnUgYm9yZGVyPVwibm9uZVwiIHZhcmlhbnQ9XCJwb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPFBvcHVsYXJDb250ZW50IG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgIDxQb3B1bGFyU2VhcmNoZXNcbiAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2g9e25hdmlnYXRlVG9TZWFyY2h9XG4gICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgeyEhc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCAmJiAoXG4gICAgICAgICAgICAgIDxTdHJva2VCdXR0b25cbiAgICAgICAgICAgICAgICBteT17MTZ9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCd2aWV3X2FsbF9yZXN1bHRzJywge1xuICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFZpZXcgYWxsIHJlc3VsdHNcbiAgICAgICAgICAgICAgPC9TdHJva2VCdXR0b24+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPFF1aXpBbmRIZWxwQ2VudGVyTGlua3NcbiAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgIGhhbmRsZUNsb3NlRHJvcGRvd249e2Nsb3NlU2VhcmNofVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1N1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgIDwvQm94PlxuICAgICAgPC9Gb2N1c1RyYXA+XG4gICAgPC8+XG4gICk7XG59O1xuIl19 */");
42
41
  const SuggestionContainer = /*#__PURE__*/_styled(ContentContainer, {
43
42
  target: "e1e5b20r5",
44
43
  label: "SuggestionContainer"
@@ -51,7 +50,7 @@ const SuggestionContainer = /*#__PURE__*/_styled(ContentContainer, {
51
50
  px: {
52
51
  _: 24
53
52
  }
54
- }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdENEIiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVNlYXJjaFRyYWNraW5nIH0gZnJvbSAnLi9ob29rcy91c2VTZWFyY2hUcmFja2luZyc7XG5pbXBvcnQgeyB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24gfSBmcm9tICcuL2hvb2tzL3VzZVVybENoYW5nZURldGVjdGlvbic7XG5pbXBvcnQgeyBRdWl6QW5kSGVscENlbnRlckxpbmtzIH0gZnJvbSAnLi9RdWl6QW5kSGVscENlbnRlckxpbmtzJztcbmltcG9ydCB7IHNhZmVseVJlZGlyZWN0IH0gZnJvbSAnLi9zYWZlbHlSZWRpcmVjdCc7XG5pbXBvcnQgeyB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQgfSBmcm9tICcuL1NlYXJjaFRyYWNraW5nUHJvdmlkZXInO1xuaW1wb3J0IHsgc2VhcmNoV29ya2VyIH0gZnJvbSAnLi9TZWFyY2hXb3JrZXInO1xuaW1wb3J0IHR5cGUge1xuICBBdXRvY29tcGxldGVTdWdnZXN0aW9uLFxuICBTZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxufSBmcm9tICcuL1NlYXJjaFdvcmtlci90eXBlcyc7XG5pbXBvcnQgeyBTZWFyY2hQYW5lUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgRm9ybSA9IEJveC53aXRoQ29tcG9uZW50KCdmb3JtJyk7XG5jb25zdCBJbnB1dCA9IEJveC53aXRoQ29tcG9uZW50KCdpbnB1dCcpO1xuXG5jb25zdCBRdWVyeUNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKShcbiAgY3NzKHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBwdDogMTYsXG4gICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgcHg6IHsgXzogMjQgfSxcbiAgfSlcbik7XG5cbmNvbnN0IFN1Z2dlc3Rpb25Db250YWluZXIgPSBzdHlsZWQoQ29udGVudENvbnRhaW5lcikoXG4gIGNzcyh7XG4gICAgcHQ6IDE2LFxuICAgIHBiOiB7IF86IDAsIG1kOiAyNCB9LFxuICAgIHB4OiB7IF86IDI0IH0sXG4gIH0pXG4pO1xuXG5jb25zdCBTdHlsZWRJbnB1dCA9IHN0eWxlZChJbnB1dCkoXG4gIGNzcyh7XG4gICAgb3V0bGluZTogYG5vbmVgLFxuICAgICcmOjpwbGFjZWhvbGRlcic6IHtcbiAgICAgIHRleHRDb2xvcjogdGhlbWUuY29sb3JzWyd0ZXh0LXNlY29uZGFyeSddIGFzIG5ldmVyLFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVSZXN1bHRMaSA9IHN0eWxlZChNZW51SXRlbSkoXG4gIGNzcyh7XG4gICAgcGw6IDAsXG4gICAgcHk6IDgsXG4gICAgZm9udFNpemU6IDE2LFxuICAgICcmOmZvY3VzLXZpc2libGU6YWZ0ZXInOiB7XG4gICAgICBsZWZ0OiAtNCxcbiAgICB9LFxuICB9KVxuKTtcblxuY29uc3QgSW5saW5lTG9hZGVyTGkgPSBzdHlsZWQubGkoXG4gIGNzcyh7XG4gICAgbGlzdFN0eWxlVHlwZTogJ25vbmUnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBnYXA6IDEyLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IFNlbWlib2xkU2VhcmNoSWNvbiA9IHN0eWxlZChTZWFyY2hJY29uKWBcbiAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDtcbiAgY2lyY2xlLFxuICBwYXRoIHtcbiAgICBzdHJva2Utd2lkdGg6IDJweDtcbiAgfVxuICByZWN0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMnB4LCAtMnB4KTtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDRweCk7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSArIDRweCk7XG4gIH1cbmA7XG5cbmNvbnN0IEVsbGlwc2lzQm94ID0gc3R5bGVkKEJveClgXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuYDtcblxuY29uc3QgSGlnaGxpZ2h0ZWRUZXh0ID0gKHtcbiAgc3VnZ2VzdGlvbjogeyB0aXRsZSwgc2VnbWVudHMgfSxcbn06IHtcbiAgc3VnZ2VzdGlvbjogQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbjtcbn0pID0+IHtcbiAgY29uc3QgbW9kZSA9IHVzZUN1cnJlbnRNb2RlKCk7XG4gIGNvbnN0IGhpZ2hsaWdodENvbG9yID0gbW9kZSA9PT0gJ2RhcmsnID8gJ2h5cGVyJyA6ICd5ZWxsb3cnO1xuXG4gIHJldHVybiAoXG4gICAgPEZsZXhCb3g+XG4gICAgICA8RWxsaXBzaXNCb3hcbiAgICAgICAgbWF4V2lkdGg9XCJjYWxjKDEwMHZ3IC0gMTI4cHgpXCJcbiAgICAgICAgd2hpdGVTcGFjZT1cInByZVwiXG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIG92ZXJmbG93PVwiaGlkZGVuXCJcbiAgICAgID5cbiAgICAgICAge3NlZ21lbnRzLm1hcCgoc2VnbWVudCwgaSkgPT4gKFxuICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICBrZXk9e2Ake3RpdGxlfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgbGluZUhlaWdodD1cInRpdGxlXCJcbiAgICAgICAgICAgIHsuLi4oc2VnbWVudC5oaWdobGlnaHRcbiAgICAgICAgICAgICAgPyB7IGJnOiBoaWdobGlnaHRDb2xvciwgZm9udFdlaWdodDogJ2JvbGQnIH1cbiAgICAgICAgICAgICAgOiB7fSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3NlZ21lbnQudmFsdWV9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApKX1cbiAgICAgIDwvRWxsaXBzaXNCb3g+XG4gICAgICA8VGV4dCBzY3JlZW5yZWFkZXI+e3RpdGxlfTwvVGV4dD5cbiAgICA8L0ZsZXhCb3g+XG4gICk7XG59O1xuXG50eXBlIFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHtcbiAgc2hpbW1lclJvd3M6IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICBzaGltbWVyczoge1xuICAgICAga2V5OiBzdHJpbmc7XG4gICAgICB3aWR0aDogbnVtYmVyO1xuICAgIH1bXTtcbiAgfVtdO1xufTtcblxubGV0IGxvYWRlcktleSA9IDA7XG5mdW5jdGlvbiBybmRMb2FkZXIoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wbHVzcGx1c1xuICBjb25zdCBrZXkgPSBsb2FkZXJLZXkrKztcbiAgY29uc3QgbG9hZGVyOiBTZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSB7IHNoaW1tZXJSb3dzOiBbXSB9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xuICAgIGNvbnN0IHJvdyA9IHtcbiAgICAgIGtleTogYCR7a2V5fToke2l9YCxcbiAgICAgIHNoaW1tZXJzOiBbXSBhcyB7IGtleTogc3RyaW5nOyB3aWR0aDogbnVtYmVyIH1bXSxcbiAgICB9O1xuICAgIGNvbnN0IHdvcmRzID0gTWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiAzKTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHdvcmRzOyBqKyspIHtcbiAgICAgIGNvbnN0IHdpZHRoID0gMTIgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiA5Nik7XG4gICAgICByb3cuc2hpbW1lcnMucHVzaCh7XG4gICAgICAgIGtleTogYCR7a2V5fToke2p9YCxcbiAgICAgICAgd2lkdGgsXG4gICAgICB9KTtcbiAgICB9XG4gICAgbG9hZGVyLnNoaW1tZXJSb3dzLnB1c2gocm93KTtcbiAgfVxuICByZXR1cm4gbG9hZGVyO1xufVxuXG5leHBvcnQgY29uc3QgU2VhcmNoUGFuZTogUmVhY3QuRkM8U2VhcmNoUGFuZVByb3BzPiA9ICh7XG4gIG9uU2VhcmNoLFxuICBvblRyYWNraW5nQ2xpY2ssXG4gIHNlYXJjaEJ1dHRvblJlZixcbiAgdG9nZ2xlU2VhcmNoLFxuICBvblNlYXJjaEFzWW91VHlwZSxcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFthdXRvQ29tcGxldGVTdWdnZXN0aW9ucywgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnNdID0gdXNlU3RhdGU8XG4gICAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbltdXG4gID4oW10pO1xuICBjb25zdCBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0cywgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0c10gPVxuICAgIHVzZVN0YXRlPFNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfCBudWxsPihudWxsKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG5cbiAgY29uc3QgaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzID0gb25TZWFyY2hBc1lvdVR5cGUgJiYgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcblxuICBjb25zdCBjbG9zZVNlYXJjaCA9IGFzeW5jIChmcm9tUmVzdWx0Q2xpY2sgPSBmYWxzZSkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHVzZXIgbWFkZSBhIHNlYXJjaCBhbmQgdGhlbiBjbG9zZWQgc2VhcmNoIHBhbmVcbiAgICBpZiAoXG4gICAgICBoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHMgJiZcbiAgICAgICFmcm9tUmVzdWx0Q2xpY2sgJiZcbiAgICAgIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRvZ2dsZVNlYXJjaCgpO1xuICAgIC8vIGFkZHMgYSBsaXR0bGUgZGVsYXkgYmV0d2VlbiBjbG9zaW5nIHRoZSBzZWFyY2ggcGFuZSBhbmQgZm9jdXNpbmcgb24gdGhlIGJ1dHRvblxuICAgIC8vIHRvIHByZXZlbnQgdGhlIHNlYXJjaCBwYW5lIGZyb20gaW1tZWRpYXRlbHkgb3BlbmluZyBhZ2FpblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHNlYXJjaEJ1dHRvblJlZiAmJiBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgc2VhcmNoQnV0dG9uUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZU9uRXNjSGFuZGxlcigoKSA9PiBjbG9zZVNlYXJjaCgpKTtcblxuICBjb25zdCBvbk1vdXNlRG93bk91dHNpZGUgPSAoeyB0YXJnZXQgfTogTW91c2VFdmVudCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZU91dHNpZGVDbGljayA9ICgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWRvY3VtZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXRlc3RpZD1cImhlYWRlci1zZWFyY2gtZHJvcGRvd25cIl0nKVxuICAgICAgICAgID8uY29udGFpbnModGFyZ2V0IGFzIEhUTUxFbGVtZW50KSAmJlxuICAgICAgICB0YXJnZXQgIT09IHNlYXJjaEJ1dHRvblJlZj8uY3VycmVudFxuICAgICAgKSB7XG4gICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICB9XG5cbiAgICAgIHRhcmdldD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gICAgfTtcblxuICAgIHRhcmdldD8uYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gIH07XG5cbiAgY29uc3QgbmF2aWdhdGVUb1NlYXJjaCA9IChzZWFyY2hUZXJtOiBzdHJpbmcsIGZyb21QcmV2U2VhcmNoPzogc3RyaW5nKSA9PiB7XG4gICAgb25TZWFyY2goc2VhcmNoVGVybSwgZnJvbVByZXZTZWFyY2gpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZTogUmVhY3QuQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgIHNldFZhbHVlKGV2dC50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdDogUmVhY3QuRm9ybUV2ZW50SGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB0aGUgdXNlciBzdWJtaXRzIHRoZSBmb3JtIHRvIGNhcHR1cmUgY29tcGxldGUgcXVlcnlcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgfTtcblxuICBjb25zdCBjbGVhcklucHV0ID0gKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCBiZWZvcmUgdXNlciBjbGVhcnMgaW5wdXRcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIHNldFZhbHVlKCcnKTtcbiAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgLy8gcmVzZXQgdGhlIGNvbnRleHQgd2l0aCBlbXB0eSB2YWx1ZXNcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICBxdWVyeTogJycsXG4gICAgICBzZWFyY2hJZDogJycsXG4gICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICAvLyBhbmQgdHJhY2sgc2VhcmNoIGV2ZW50IGlmIHVzZXIgbWFkZSBhIHNlYXJjaFxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiAoKSA9PiB7XG4gICAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgfVxuXG4gICAgICB0b2dnbGVTZWFyY2goKTtcbiAgICB9LFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlucHV0UmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgc2VhcmNoV29ya2VyLmluaXQoKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF2YWx1ZVRyaW1tZWQubGVuZ3RoKSB7XG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgICBxdWVyeTogJycsXG4gICAgICAgIHNlYXJjaElkOiAnJyxcbiAgICAgICAgcmVzdWx0c0NvdW50OiAwLFxuICAgICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGNhbmNlbCA9IGZhbHNlO1xuICAgIGxldCBjbGVhckF1dG9jb21wbGV0ZSA9IHRydWU7XG4gICAgbGV0IGNsZWFyU2VhcmNoQXNZb3VUeXBlID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICB9O1xuICB9LCBbdmFsdWVUcmltbWVkLCBvblNlYXJjaEFzWW91VHlwZSwgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXNdKTtcblxuICB1c2VTZWFyY2hUcmFja2luZyh7XG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgYmc9XCJzaGFkb3ctc2Vjb25kYXJ5XCJcbiAgICAgICAgaGVpZ2h0PVwiMTAwdmhcIlxuICAgICAgICBwb3NpdGlvbj1cImZpeGVkXCJcbiAgICAgICAgLy8gV2UgYWRkIDVyZW0gaGVyZSBpbiBjYXNlIHRoZXJlJ3Mgc29tZSBzb3J0IG9mIGJyYW5kZWQgYmFubmVyIGFib3ZlIHNlYXJjaFxuICAgICAgICAvLyBUaGUgc2VhcmNoIGFyZWEgaXMgbXVjaCB0YWxsZXIgdGhhbiA1cmVtIHNvIHRoaXMgaXMgYSBzYWZlIGFtb3VudCBvZiBwYWRkaW5nXG4gICAgICAgIHRvcD17YGNhbGMoJHt0aGVtZS5lbGVtZW50cy5oZWFkZXJIZWlnaHR9ICsgNXJlbSlgfVxuICAgICAgICB3aWR0aD17MX1cbiAgICAgIC8+XG4gICAgICA8Rm9jdXNUcmFwXG4gICAgICAgIG9uRXNjYXBlS2V5PXsoKSA9PiBjbG9zZVNlYXJjaCgpfVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249e3sgXzogJ2ZpeGVkJywgbWQ6ICdhYnNvbHV0ZScgfX1cbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIG1heEhlaWdodD17eyBfOiAnY2FsYygxMDB2aCAtIDYzcHgpJywgbWQ6ICdjYWxjKDEwMHZoIC0gODBweCknIH19XG4gICAgICAgICAgb3ZlcmZsb3c9XCJhdXRvXCJcbiAgICAgICAgICB6SW5kZXg9ezEwfSAvLyBlbnN1cmUgZHJvcGRvd24gaXMgYWJvdmUgdGhlIHBhZ2UgY29udGVudFxuICAgICAgICA+XG4gICAgICAgICAgPEJveCBib3JkZXI9XCJub25lXCIgd2lkdGg9XCJhdXRvXCI+XG4gICAgICAgICAgICA8UXVlcnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtcz1cImJhc2VsaW5lXCJcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktNjAwXCJcbiAgICAgICAgICAgICAgICBib3JkZXJTdHlsZUJvdHRvbT1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aEJvdHRvbT1cIjFweFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEZvcm1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbj1cIi9zZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZWFyY2gtZm9ybVwiXG4gICAgICAgICAgICAgICAgICBtbD17OH1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBib3JkZXI9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMjAsIG1kOiAyNiB9fVxuICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0PVwiYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaGVhZGVyLXNlYXJjaC1iYXJcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwicXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiBvbktleURvd24oZSl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Gb3JtPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICBpY29uPXtNaW5pRGVsZXRlSWNvbn1cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdmbG9hdGluZycsXG4gICAgICAgICAgICAgICAgICAgIG5hcnJvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NsZWFySW5wdXR9XG4gICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgIDwvUXVlcnlDb250YWluZXI+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPFN1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICB7dmFsdWVUcmltbWVkLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPEZsZXhCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGFzPVwidWxcIiBsaXN0U3R5bGU9XCJub25lXCIgcD17MH0+XG4gICAgICAgICAgICAgICAgICB7YXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgIGtleT17cy50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U2VtaWJvbGRTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBtYj17MiBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT17MTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17OH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBtcj17MTJ9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgeyhzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cImgyXCIgZm9udFNpemU9ezIwfSBtYj17MTZ9IG10PXsyNH0+XG4gICAgICAgICAgICAgICAgICAgICAgVG9wIHJlc3VsdHNcbiAgICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICA8RmxleEJveFxuICAgICAgICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgIGFzPVwidWxcIlxuICAgICAgICAgICAgICAgICAgICAgIGxpc3RTdHlsZT1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIHA9ezB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWFyY2hBc1lvdVR5cGVMb2FkZXI/LnNoaW1tZXJSb3dzLm1hcCgocikgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVMb2FkZXJMaSBrZXk9e3Iua2V5fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyLnNoaW1tZXJzLm1hcCgod29yZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2hpbW1lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MzB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHk9ezggYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3dvcmQua2V5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXt3b3JkLndpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk9XCJhY2NlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I9XCJ0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXt7IF86IDEwIGFzIDE2IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiYm9yZGVyLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcj17MX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPVwieGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweD17MTZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk9ezAuMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZUxvYWRlckxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lUmVzdWx0TGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMucXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH06JHtpLnRvU3RyaW5nKCl9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2godHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZSBzaXplPVwic21cIiB2YXJpYW50PVwidGVydGlhcnlcIiBtbD17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cy50eXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgICAgPC8+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+IHtcbiAgICBpbnB1dFJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgIHNlYXJjaFdvcmtlci5pbml0KCk7XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghdmFsdWVUcmltbWVkLmxlbmd0aCkge1xuICAgICAgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhudWxsKTtcbiAgICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgICAgcXVlcnk6ICcnLFxuICAgICAgICBzZWFyY2hJZDogJycsXG4gICAgICAgIHJlc3VsdHNDb3VudDogMCxcbiAgICAgICAgcXVlcnlMb2FkVGltZTogMCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBsZXQgY2xlYXJBdXRvY29tcGxldGUgPSB0cnVlO1xuICAgIGxldCBjbGVhclNlYXJjaEFzWW91VHlwZSA9IHRydWU7XG5cbiAgICBsZXQgc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5OiBOb2RlSlMuVGltZW91dDtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2l0aCBhIHNtYWxsIGRlbGF5IHdoZW4gdGhlcmUgYXJlIG5vIHJlc3VsdHNcbiAgICAgIGlmIChcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUgJiZcbiAgICAgICAgcmVzdWx0cy50b3AubGVuZ3RoID09PSAwICYmXG4gICAgICAgICFzZWFyY2hSZXN1bHRDbGlja2VkXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHF1ZXJ5TG9hZFRpbWUgfSA9IHJlc3VsdHM7XG4gICAgICAgIHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICghY2FuY2VsKSB7XG4gICAgICAgICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIDAsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICAgIGNsZWFyVGltZW91dChzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXkpO1xuICAgIH07XG4gIH0sIFtcbiAgICB2YWx1ZVRyaW1tZWQsXG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyxcbiAgXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICBiZz1cInNoYWRvdy1zZWNvbmRhcnlcIlxuICAgICAgICBoZWlnaHQ9XCIxMDB2aFwiXG4gICAgICAgIHBvc2l0aW9uPVwiZml4ZWRcIlxuICAgICAgICAvLyBXZSBhZGQgNXJlbSBoZXJlIGluIGNhc2UgdGhlcmUncyBzb21lIHNvcnQgb2YgYnJhbmRlZCBiYW5uZXIgYWJvdmUgc2VhcmNoXG4gICAgICAgIC8vIFRoZSBzZWFyY2ggYXJlYSBpcyBtdWNoIHRhbGxlciB0aGFuIDVyZW0gc28gdGhpcyBpcyBhIHNhZmUgYW1vdW50IG9mIHBhZGRpbmdcbiAgICAgICAgdG9wPXtgY2FsYygke3RoZW1lLmVsZW1lbnRzLmhlYWRlckhlaWdodH0gKyA1cmVtKWB9XG4gICAgICAgIHdpZHRoPXsxfVxuICAgICAgLz5cbiAgICAgIDxGb2N1c1RyYXBcbiAgICAgICAgb25Fc2NhcGVLZXk9e2Nsb3NlU2VhcmNofVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249e3sgXzogJ2ZpeGVkJywgbWQ6ICdhYnNvbHV0ZScgfX1cbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIG1heEhlaWdodD17eyBfOiAnY2FsYygxMDB2aCAtIDYzcHgpJywgbWQ6ICdjYWxjKDEwMHZoIC0gODBweCknIH19XG4gICAgICAgICAgb3ZlcmZsb3c9XCJhdXRvXCJcbiAgICAgICAgICB6SW5kZXg9ezEwfSAvLyBlbnN1cmUgZHJvcGRvd24gaXMgYWJvdmUgdGhlIHBhZ2UgY29udGVudFxuICAgICAgICA+XG4gICAgICAgICAgPEJveCBib3JkZXI9XCJub25lXCIgd2lkdGg9XCJhdXRvXCI+XG4gICAgICAgICAgICA8UXVlcnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtcz1cImJhc2VsaW5lXCJcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktNjAwXCJcbiAgICAgICAgICAgICAgICBib3JkZXJTdHlsZUJvdHRvbT1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aEJvdHRvbT1cIjFweFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEZvcm1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbj1cIi9zZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZWFyY2gtZm9ybVwiXG4gICAgICAgICAgICAgICAgICBtbD17OH1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBib3JkZXI9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMjAsIG1kOiAyNiB9fVxuICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0PVwiYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaGVhZGVyLXNlYXJjaC1iYXJcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwicXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiBvbktleURvd24oZSl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Gb3JtPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICBpY29uPXtNaW5pRGVsZXRlSWNvbn1cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdmbG9hdGluZycsXG4gICAgICAgICAgICAgICAgICAgIG5hcnJvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NsZWFySW5wdXR9XG4gICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgIDwvUXVlcnlDb250YWluZXI+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPFN1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICB7dmFsdWVUcmltbWVkLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPEZsZXhCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGFzPVwidWxcIiBsaXN0U3R5bGU9XCJub25lXCIgcD17MH0+XG4gICAgICAgICAgICAgICAgICB7YXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgIGtleT17cy50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW1pYm9sZFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1iPXsyIGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPXsxNH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXs4fVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1yPXsxMn1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICB7KHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0IGFzPVwiaDJcIiBmb250U2l6ZT17MjB9IG1iPXsxNn0gbXQ9ezI0fT5cbiAgICAgICAgICAgICAgICAgICAgICBUb3AgcmVzdWx0c1xuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbj1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJ1bFwiXG4gICAgICAgICAgICAgICAgICAgICAgbGlzdFN0eWxlPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcD17MH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNlYXJjaEFzWW91VHlwZUxvYWRlcj8uc2hpbW1lclJvd3MubWFwKChyKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZUxvYWRlckxpIGtleT17ci5rZXl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Iuc2hpbW1lcnMubWFwKCh3b3JkKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTaGltbWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXszMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweT17OCBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17d29yZC5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9e3dvcmQud2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseT1cImFjY2VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDb2xvcj1cInRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMTAgYXMgMTYgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I9XCJib3JkZXItc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyPXsxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM9XCJ4bFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB4PXsxNn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eT17MC4xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lTG9hZGVyTGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLm1hcCgocywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5xdWVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwibGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHMuc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgY29udGVudF9pZDogcy5jb250ZW50SWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZWx5UmVkaXJlY3Qocy51cmxQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhpZ2hsaWdodGVkVGV4dCBzdWdnZXN0aW9uPXtzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJhZGdlIHNpemU9XCJzbVwiIHZhcmlhbnQ9XCJ0ZXJ0aWFyeVwiIG1sPXsxMn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzLnR5cGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy50b3AubGVuZ3RoID09PSAwICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxCb3ggZm9udFNpemU9e3sgXzogMjAsIHNtOiAyNiB9fSBtdD17MH0gbWI9ezQ4fT5cbiAgICAgICAgICAgICAgICAgICAgICB7YFdlIGNvdWxkbid0IGZpbmQgYSBtYXRjaCBmb3IgYH1cbiAgICAgICAgICAgICAgICAgICAgICA8VGV4dCBmb250V2VpZ2h0PVwiYm9sZFwiPntgXCIke3ZhbHVlVHJpbW1lZH0uXCJgfTwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnIFRyeSBhbm90aGVyIGtleXdvcmQsIG9yIHNlZSB3aGF0IG91ciBtZW1iZXJzIGFyZSBsZWFybmluZy4nXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgPE1lbnUgYm9yZGVyPVwibm9uZVwiIHZhcmlhbnQ9XCJwb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPFBvcHVsYXJDb250ZW50IG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgIDxQb3B1bGFyU2VhcmNoZXNcbiAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2g9e25hdmlnYXRlVG9TZWFyY2h9XG4gICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgeyEhc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCAmJiAoXG4gICAgICAgICAgICAgIDxTdHJva2VCdXR0b25cbiAgICAgICAgICAgICAgICBteT17MTZ9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCd2aWV3X2FsbF9yZXN1bHRzJywge1xuICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFZpZXcgYWxsIHJlc3VsdHNcbiAgICAgICAgICAgICAgPC9TdHJva2VCdXR0b24+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPFF1aXpBbmRIZWxwQ2VudGVyTGlua3NcbiAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgIGhhbmRsZUNsb3NlRHJvcGRvd249e2Nsb3NlU2VhcmNofVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1N1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgIDwvQm94PlxuICAgICAgPC9Gb2N1c1RyYXA+XG4gICAgPC8+XG4gICk7XG59O1xuIl19 */");
55
54
  const StyledInput = /*#__PURE__*/_styled(Input, {
56
55
  target: "e1e5b20r4",
57
56
  label: "StyledInput"
@@ -60,7 +59,7 @@ const StyledInput = /*#__PURE__*/_styled(Input, {
60
59
  '&::placeholder': {
61
60
  textColor: theme.colors['text-secondary']
62
61
  }
63
- }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdEb0IiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVNlYXJjaFRyYWNraW5nIH0gZnJvbSAnLi9ob29rcy91c2VTZWFyY2hUcmFja2luZyc7XG5pbXBvcnQgeyB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24gfSBmcm9tICcuL2hvb2tzL3VzZVVybENoYW5nZURldGVjdGlvbic7XG5pbXBvcnQgeyBRdWl6QW5kSGVscENlbnRlckxpbmtzIH0gZnJvbSAnLi9RdWl6QW5kSGVscENlbnRlckxpbmtzJztcbmltcG9ydCB7IHNhZmVseVJlZGlyZWN0IH0gZnJvbSAnLi9zYWZlbHlSZWRpcmVjdCc7XG5pbXBvcnQgeyB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQgfSBmcm9tICcuL1NlYXJjaFRyYWNraW5nUHJvdmlkZXInO1xuaW1wb3J0IHsgc2VhcmNoV29ya2VyIH0gZnJvbSAnLi9TZWFyY2hXb3JrZXInO1xuaW1wb3J0IHR5cGUge1xuICBBdXRvY29tcGxldGVTdWdnZXN0aW9uLFxuICBTZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxufSBmcm9tICcuL1NlYXJjaFdvcmtlci90eXBlcyc7XG5pbXBvcnQgeyBTZWFyY2hQYW5lUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgRm9ybSA9IEJveC53aXRoQ29tcG9uZW50KCdmb3JtJyk7XG5jb25zdCBJbnB1dCA9IEJveC53aXRoQ29tcG9uZW50KCdpbnB1dCcpO1xuXG5jb25zdCBRdWVyeUNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKShcbiAgY3NzKHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBwdDogMTYsXG4gICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgcHg6IHsgXzogMjQgfSxcbiAgfSlcbik7XG5cbmNvbnN0IFN1Z2dlc3Rpb25Db250YWluZXIgPSBzdHlsZWQoQ29udGVudENvbnRhaW5lcikoXG4gIGNzcyh7XG4gICAgcHQ6IDE2LFxuICAgIHBiOiB7IF86IDAsIG1kOiAyNCB9LFxuICAgIHB4OiB7IF86IDI0IH0sXG4gIH0pXG4pO1xuXG5jb25zdCBTdHlsZWRJbnB1dCA9IHN0eWxlZChJbnB1dCkoXG4gIGNzcyh7XG4gICAgb3V0bGluZTogYG5vbmVgLFxuICAgICcmOjpwbGFjZWhvbGRlcic6IHtcbiAgICAgIHRleHRDb2xvcjogdGhlbWUuY29sb3JzWyd0ZXh0LXNlY29uZGFyeSddIGFzIG5ldmVyLFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVSZXN1bHRMaSA9IHN0eWxlZChNZW51SXRlbSkoXG4gIGNzcyh7XG4gICAgcGw6IDAsXG4gICAgcHk6IDgsXG4gICAgZm9udFNpemU6IDE2LFxuICAgICcmOmZvY3VzLXZpc2libGU6YWZ0ZXInOiB7XG4gICAgICBsZWZ0OiAtNCxcbiAgICB9LFxuICB9KVxuKTtcblxuY29uc3QgSW5saW5lTG9hZGVyTGkgPSBzdHlsZWQubGkoXG4gIGNzcyh7XG4gICAgbGlzdFN0eWxlVHlwZTogJ25vbmUnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBnYXA6IDEyLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IFNlbWlib2xkU2VhcmNoSWNvbiA9IHN0eWxlZChTZWFyY2hJY29uKWBcbiAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDtcbiAgY2lyY2xlLFxuICBwYXRoIHtcbiAgICBzdHJva2Utd2lkdGg6IDJweDtcbiAgfVxuICByZWN0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMnB4LCAtMnB4KTtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDRweCk7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSArIDRweCk7XG4gIH1cbmA7XG5cbmNvbnN0IEVsbGlwc2lzQm94ID0gc3R5bGVkKEJveClgXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuYDtcblxuY29uc3QgSGlnaGxpZ2h0ZWRUZXh0ID0gKHtcbiAgc3VnZ2VzdGlvbjogeyB0aXRsZSwgc2VnbWVudHMgfSxcbn06IHtcbiAgc3VnZ2VzdGlvbjogQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbjtcbn0pID0+IHtcbiAgY29uc3QgbW9kZSA9IHVzZUN1cnJlbnRNb2RlKCk7XG4gIGNvbnN0IGhpZ2hsaWdodENvbG9yID0gbW9kZSA9PT0gJ2RhcmsnID8gJ2h5cGVyJyA6ICd5ZWxsb3cnO1xuXG4gIHJldHVybiAoXG4gICAgPEZsZXhCb3g+XG4gICAgICA8RWxsaXBzaXNCb3hcbiAgICAgICAgbWF4V2lkdGg9XCJjYWxjKDEwMHZ3IC0gMTI4cHgpXCJcbiAgICAgICAgd2hpdGVTcGFjZT1cInByZVwiXG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIG92ZXJmbG93PVwiaGlkZGVuXCJcbiAgICAgID5cbiAgICAgICAge3NlZ21lbnRzLm1hcCgoc2VnbWVudCwgaSkgPT4gKFxuICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICBrZXk9e2Ake3RpdGxlfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgbGluZUhlaWdodD1cInRpdGxlXCJcbiAgICAgICAgICAgIHsuLi4oc2VnbWVudC5oaWdobGlnaHRcbiAgICAgICAgICAgICAgPyB7IGJnOiBoaWdobGlnaHRDb2xvciwgZm9udFdlaWdodDogJ2JvbGQnIH1cbiAgICAgICAgICAgICAgOiB7fSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3NlZ21lbnQudmFsdWV9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApKX1cbiAgICAgIDwvRWxsaXBzaXNCb3g+XG4gICAgICA8VGV4dCBzY3JlZW5yZWFkZXI+e3RpdGxlfTwvVGV4dD5cbiAgICA8L0ZsZXhCb3g+XG4gICk7XG59O1xuXG50eXBlIFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHtcbiAgc2hpbW1lclJvd3M6IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICBzaGltbWVyczoge1xuICAgICAga2V5OiBzdHJpbmc7XG4gICAgICB3aWR0aDogbnVtYmVyO1xuICAgIH1bXTtcbiAgfVtdO1xufTtcblxubGV0IGxvYWRlcktleSA9IDA7XG5mdW5jdGlvbiBybmRMb2FkZXIoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wbHVzcGx1c1xuICBjb25zdCBrZXkgPSBsb2FkZXJLZXkrKztcbiAgY29uc3QgbG9hZGVyOiBTZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSB7IHNoaW1tZXJSb3dzOiBbXSB9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xuICAgIGNvbnN0IHJvdyA9IHtcbiAgICAgIGtleTogYCR7a2V5fToke2l9YCxcbiAgICAgIHNoaW1tZXJzOiBbXSBhcyB7IGtleTogc3RyaW5nOyB3aWR0aDogbnVtYmVyIH1bXSxcbiAgICB9O1xuICAgIGNvbnN0IHdvcmRzID0gTWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiAzKTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHdvcmRzOyBqKyspIHtcbiAgICAgIGNvbnN0IHdpZHRoID0gMTIgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiA5Nik7XG4gICAgICByb3cuc2hpbW1lcnMucHVzaCh7XG4gICAgICAgIGtleTogYCR7a2V5fToke2p9YCxcbiAgICAgICAgd2lkdGgsXG4gICAgICB9KTtcbiAgICB9XG4gICAgbG9hZGVyLnNoaW1tZXJSb3dzLnB1c2gocm93KTtcbiAgfVxuICByZXR1cm4gbG9hZGVyO1xufVxuXG5leHBvcnQgY29uc3QgU2VhcmNoUGFuZTogUmVhY3QuRkM8U2VhcmNoUGFuZVByb3BzPiA9ICh7XG4gIG9uU2VhcmNoLFxuICBvblRyYWNraW5nQ2xpY2ssXG4gIHNlYXJjaEJ1dHRvblJlZixcbiAgdG9nZ2xlU2VhcmNoLFxuICBvblNlYXJjaEFzWW91VHlwZSxcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFthdXRvQ29tcGxldGVTdWdnZXN0aW9ucywgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnNdID0gdXNlU3RhdGU8XG4gICAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbltdXG4gID4oW10pO1xuICBjb25zdCBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0cywgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0c10gPVxuICAgIHVzZVN0YXRlPFNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfCBudWxsPihudWxsKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG5cbiAgY29uc3QgaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzID0gb25TZWFyY2hBc1lvdVR5cGUgJiYgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcblxuICBjb25zdCBjbG9zZVNlYXJjaCA9IGFzeW5jIChmcm9tUmVzdWx0Q2xpY2sgPSBmYWxzZSkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHVzZXIgbWFkZSBhIHNlYXJjaCBhbmQgdGhlbiBjbG9zZWQgc2VhcmNoIHBhbmVcbiAgICBpZiAoXG4gICAgICBoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHMgJiZcbiAgICAgICFmcm9tUmVzdWx0Q2xpY2sgJiZcbiAgICAgIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRvZ2dsZVNlYXJjaCgpO1xuICAgIC8vIGFkZHMgYSBsaXR0bGUgZGVsYXkgYmV0d2VlbiBjbG9zaW5nIHRoZSBzZWFyY2ggcGFuZSBhbmQgZm9jdXNpbmcgb24gdGhlIGJ1dHRvblxuICAgIC8vIHRvIHByZXZlbnQgdGhlIHNlYXJjaCBwYW5lIGZyb20gaW1tZWRpYXRlbHkgb3BlbmluZyBhZ2FpblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHNlYXJjaEJ1dHRvblJlZiAmJiBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgc2VhcmNoQnV0dG9uUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZU9uRXNjSGFuZGxlcigoKSA9PiBjbG9zZVNlYXJjaCgpKTtcblxuICBjb25zdCBvbk1vdXNlRG93bk91dHNpZGUgPSAoeyB0YXJnZXQgfTogTW91c2VFdmVudCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZU91dHNpZGVDbGljayA9ICgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWRvY3VtZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXRlc3RpZD1cImhlYWRlci1zZWFyY2gtZHJvcGRvd25cIl0nKVxuICAgICAgICAgID8uY29udGFpbnModGFyZ2V0IGFzIEhUTUxFbGVtZW50KSAmJlxuICAgICAgICB0YXJnZXQgIT09IHNlYXJjaEJ1dHRvblJlZj8uY3VycmVudFxuICAgICAgKSB7XG4gICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICB9XG5cbiAgICAgIHRhcmdldD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gICAgfTtcblxuICAgIHRhcmdldD8uYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gIH07XG5cbiAgY29uc3QgbmF2aWdhdGVUb1NlYXJjaCA9IChzZWFyY2hUZXJtOiBzdHJpbmcsIGZyb21QcmV2U2VhcmNoPzogc3RyaW5nKSA9PiB7XG4gICAgb25TZWFyY2goc2VhcmNoVGVybSwgZnJvbVByZXZTZWFyY2gpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZTogUmVhY3QuQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgIHNldFZhbHVlKGV2dC50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdDogUmVhY3QuRm9ybUV2ZW50SGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB0aGUgdXNlciBzdWJtaXRzIHRoZSBmb3JtIHRvIGNhcHR1cmUgY29tcGxldGUgcXVlcnlcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgfTtcblxuICBjb25zdCBjbGVhcklucHV0ID0gKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCBiZWZvcmUgdXNlciBjbGVhcnMgaW5wdXRcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIHNldFZhbHVlKCcnKTtcbiAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgLy8gcmVzZXQgdGhlIGNvbnRleHQgd2l0aCBlbXB0eSB2YWx1ZXNcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICBxdWVyeTogJycsXG4gICAgICBzZWFyY2hJZDogJycsXG4gICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICAvLyBhbmQgdHJhY2sgc2VhcmNoIGV2ZW50IGlmIHVzZXIgbWFkZSBhIHNlYXJjaFxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiAoKSA9PiB7XG4gICAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgfVxuXG4gICAgICB0b2dnbGVTZWFyY2goKTtcbiAgICB9LFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlucHV0UmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgc2VhcmNoV29ya2VyLmluaXQoKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF2YWx1ZVRyaW1tZWQubGVuZ3RoKSB7XG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgICBxdWVyeTogJycsXG4gICAgICAgIHNlYXJjaElkOiAnJyxcbiAgICAgICAgcmVzdWx0c0NvdW50OiAwLFxuICAgICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGNhbmNlbCA9IGZhbHNlO1xuICAgIGxldCBjbGVhckF1dG9jb21wbGV0ZSA9IHRydWU7XG4gICAgbGV0IGNsZWFyU2VhcmNoQXNZb3VUeXBlID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICB9O1xuICB9LCBbdmFsdWVUcmltbWVkLCBvblNlYXJjaEFzWW91VHlwZSwgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXNdKTtcblxuICB1c2VTZWFyY2hUcmFja2luZyh7XG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgYmc9XCJzaGFkb3ctc2Vjb25kYXJ5XCJcbiAgICAgICAgaGVpZ2h0PVwiMTAwdmhcIlxuICAgICAgICBwb3NpdGlvbj1cImZpeGVkXCJcbiAgICAgICAgLy8gV2UgYWRkIDVyZW0gaGVyZSBpbiBjYXNlIHRoZXJlJ3Mgc29tZSBzb3J0IG9mIGJyYW5kZWQgYmFubmVyIGFib3ZlIHNlYXJjaFxuICAgICAgICAvLyBUaGUgc2VhcmNoIGFyZWEgaXMgbXVjaCB0YWxsZXIgdGhhbiA1cmVtIHNvIHRoaXMgaXMgYSBzYWZlIGFtb3VudCBvZiBwYWRkaW5nXG4gICAgICAgIHRvcD17YGNhbGMoJHt0aGVtZS5lbGVtZW50cy5oZWFkZXJIZWlnaHR9ICsgNXJlbSlgfVxuICAgICAgICB3aWR0aD17MX1cbiAgICAgIC8+XG4gICAgICA8Rm9jdXNUcmFwXG4gICAgICAgIG9uRXNjYXBlS2V5PXsoKSA9PiBjbG9zZVNlYXJjaCgpfVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249e3sgXzogJ2ZpeGVkJywgbWQ6ICdhYnNvbHV0ZScgfX1cbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIG1heEhlaWdodD17eyBfOiAnY2FsYygxMDB2aCAtIDYzcHgpJywgbWQ6ICdjYWxjKDEwMHZoIC0gODBweCknIH19XG4gICAgICAgICAgb3ZlcmZsb3c9XCJhdXRvXCJcbiAgICAgICAgICB6SW5kZXg9ezEwfSAvLyBlbnN1cmUgZHJvcGRvd24gaXMgYWJvdmUgdGhlIHBhZ2UgY29udGVudFxuICAgICAgICA+XG4gICAgICAgICAgPEJveCBib3JkZXI9XCJub25lXCIgd2lkdGg9XCJhdXRvXCI+XG4gICAgICAgICAgICA8UXVlcnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtcz1cImJhc2VsaW5lXCJcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktNjAwXCJcbiAgICAgICAgICAgICAgICBib3JkZXJTdHlsZUJvdHRvbT1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aEJvdHRvbT1cIjFweFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEZvcm1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbj1cIi9zZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZWFyY2gtZm9ybVwiXG4gICAgICAgICAgICAgICAgICBtbD17OH1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBib3JkZXI9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMjAsIG1kOiAyNiB9fVxuICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0PVwiYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaGVhZGVyLXNlYXJjaC1iYXJcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwicXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiBvbktleURvd24oZSl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Gb3JtPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICBpY29uPXtNaW5pRGVsZXRlSWNvbn1cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdmbG9hdGluZycsXG4gICAgICAgICAgICAgICAgICAgIG5hcnJvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NsZWFySW5wdXR9XG4gICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgIDwvUXVlcnlDb250YWluZXI+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPFN1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICB7dmFsdWVUcmltbWVkLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPEZsZXhCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGFzPVwidWxcIiBsaXN0U3R5bGU9XCJub25lXCIgcD17MH0+XG4gICAgICAgICAgICAgICAgICB7YXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgIGtleT17cy50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U2VtaWJvbGRTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBtYj17MiBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT17MTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17OH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBtcj17MTJ9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgeyhzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cImgyXCIgZm9udFNpemU9ezIwfSBtYj17MTZ9IG10PXsyNH0+XG4gICAgICAgICAgICAgICAgICAgICAgVG9wIHJlc3VsdHNcbiAgICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICA8RmxleEJveFxuICAgICAgICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgIGFzPVwidWxcIlxuICAgICAgICAgICAgICAgICAgICAgIGxpc3RTdHlsZT1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIHA9ezB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWFyY2hBc1lvdVR5cGVMb2FkZXI/LnNoaW1tZXJSb3dzLm1hcCgocikgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVMb2FkZXJMaSBrZXk9e3Iua2V5fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyLnNoaW1tZXJzLm1hcCgod29yZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2hpbW1lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MzB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHk9ezggYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3dvcmQua2V5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXt3b3JkLndpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk9XCJhY2NlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I9XCJ0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXt7IF86IDEwIGFzIDE2IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiYm9yZGVyLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcj17MX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPVwieGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweD17MTZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk9ezAuMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZUxvYWRlckxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lUmVzdWx0TGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMucXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH06JHtpLnRvU3RyaW5nKCl9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2godHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZSBzaXplPVwic21cIiB2YXJpYW50PVwidGVydGlhcnlcIiBtbD17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cy50eXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgICAgPC8+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+IHtcbiAgICBpbnB1dFJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgIHNlYXJjaFdvcmtlci5pbml0KCk7XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghdmFsdWVUcmltbWVkLmxlbmd0aCkge1xuICAgICAgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhudWxsKTtcbiAgICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgICAgcXVlcnk6ICcnLFxuICAgICAgICBzZWFyY2hJZDogJycsXG4gICAgICAgIHJlc3VsdHNDb3VudDogMCxcbiAgICAgICAgcXVlcnlMb2FkVGltZTogMCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBsZXQgY2xlYXJBdXRvY29tcGxldGUgPSB0cnVlO1xuICAgIGxldCBjbGVhclNlYXJjaEFzWW91VHlwZSA9IHRydWU7XG5cbiAgICBsZXQgc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5OiBOb2RlSlMuVGltZW91dDtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2l0aCBhIHNtYWxsIGRlbGF5IHdoZW4gdGhlcmUgYXJlIG5vIHJlc3VsdHNcbiAgICAgIGlmIChcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUgJiZcbiAgICAgICAgcmVzdWx0cy50b3AubGVuZ3RoID09PSAwICYmXG4gICAgICAgICFzZWFyY2hSZXN1bHRDbGlja2VkXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHF1ZXJ5TG9hZFRpbWUgfSA9IHJlc3VsdHM7XG4gICAgICAgIHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICghY2FuY2VsKSB7XG4gICAgICAgICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIDAsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICAgIGNsZWFyVGltZW91dChzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXkpO1xuICAgIH07XG4gIH0sIFtcbiAgICB2YWx1ZVRyaW1tZWQsXG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyxcbiAgXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICBiZz1cInNoYWRvdy1zZWNvbmRhcnlcIlxuICAgICAgICBoZWlnaHQ9XCIxMDB2aFwiXG4gICAgICAgIHBvc2l0aW9uPVwiZml4ZWRcIlxuICAgICAgICAvLyBXZSBhZGQgNXJlbSBoZXJlIGluIGNhc2UgdGhlcmUncyBzb21lIHNvcnQgb2YgYnJhbmRlZCBiYW5uZXIgYWJvdmUgc2VhcmNoXG4gICAgICAgIC8vIFRoZSBzZWFyY2ggYXJlYSBpcyBtdWNoIHRhbGxlciB0aGFuIDVyZW0gc28gdGhpcyBpcyBhIHNhZmUgYW1vdW50IG9mIHBhZGRpbmdcbiAgICAgICAgdG9wPXtgY2FsYygke3RoZW1lLmVsZW1lbnRzLmhlYWRlckhlaWdodH0gKyA1cmVtKWB9XG4gICAgICAgIHdpZHRoPXsxfVxuICAgICAgLz5cbiAgICAgIDxGb2N1c1RyYXBcbiAgICAgICAgb25Fc2NhcGVLZXk9e2Nsb3NlU2VhcmNofVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249e3sgXzogJ2ZpeGVkJywgbWQ6ICdhYnNvbHV0ZScgfX1cbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIG1heEhlaWdodD17eyBfOiAnY2FsYygxMDB2aCAtIDYzcHgpJywgbWQ6ICdjYWxjKDEwMHZoIC0gODBweCknIH19XG4gICAgICAgICAgb3ZlcmZsb3c9XCJhdXRvXCJcbiAgICAgICAgICB6SW5kZXg9ezEwfSAvLyBlbnN1cmUgZHJvcGRvd24gaXMgYWJvdmUgdGhlIHBhZ2UgY29udGVudFxuICAgICAgICA+XG4gICAgICAgICAgPEJveCBib3JkZXI9XCJub25lXCIgd2lkdGg9XCJhdXRvXCI+XG4gICAgICAgICAgICA8UXVlcnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtcz1cImJhc2VsaW5lXCJcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktNjAwXCJcbiAgICAgICAgICAgICAgICBib3JkZXJTdHlsZUJvdHRvbT1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aEJvdHRvbT1cIjFweFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEZvcm1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbj1cIi9zZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZWFyY2gtZm9ybVwiXG4gICAgICAgICAgICAgICAgICBtbD17OH1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBib3JkZXI9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMjAsIG1kOiAyNiB9fVxuICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0PVwiYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaGVhZGVyLXNlYXJjaC1iYXJcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwicXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiBvbktleURvd24oZSl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Gb3JtPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICBpY29uPXtNaW5pRGVsZXRlSWNvbn1cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdmbG9hdGluZycsXG4gICAgICAgICAgICAgICAgICAgIG5hcnJvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NsZWFySW5wdXR9XG4gICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgIDwvUXVlcnlDb250YWluZXI+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPFN1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICB7dmFsdWVUcmltbWVkLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPEZsZXhCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGFzPVwidWxcIiBsaXN0U3R5bGU9XCJub25lXCIgcD17MH0+XG4gICAgICAgICAgICAgICAgICB7YXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgIGtleT17cy50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW1pYm9sZFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1iPXsyIGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPXsxNH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXs4fVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1yPXsxMn1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICB7KHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0IGFzPVwiaDJcIiBmb250U2l6ZT17MjB9IG1iPXsxNn0gbXQ9ezI0fT5cbiAgICAgICAgICAgICAgICAgICAgICBUb3AgcmVzdWx0c1xuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbj1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJ1bFwiXG4gICAgICAgICAgICAgICAgICAgICAgbGlzdFN0eWxlPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcD17MH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNlYXJjaEFzWW91VHlwZUxvYWRlcj8uc2hpbW1lclJvd3MubWFwKChyKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZUxvYWRlckxpIGtleT17ci5rZXl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Iuc2hpbW1lcnMubWFwKCh3b3JkKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTaGltbWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXszMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweT17OCBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17d29yZC5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9e3dvcmQud2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseT1cImFjY2VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDb2xvcj1cInRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMTAgYXMgMTYgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I9XCJib3JkZXItc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyPXsxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM9XCJ4bFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB4PXsxNn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eT17MC4xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lTG9hZGVyTGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLm1hcCgocywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5xdWVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwibGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHMuc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgY29udGVudF9pZDogcy5jb250ZW50SWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZWx5UmVkaXJlY3Qocy51cmxQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhpZ2hsaWdodGVkVGV4dCBzdWdnZXN0aW9uPXtzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJhZGdlIHNpemU9XCJzbVwiIHZhcmlhbnQ9XCJ0ZXJ0aWFyeVwiIG1sPXsxMn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzLnR5cGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy50b3AubGVuZ3RoID09PSAwICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxCb3ggZm9udFNpemU9e3sgXzogMjAsIHNtOiAyNiB9fSBtdD17MH0gbWI9ezQ4fT5cbiAgICAgICAgICAgICAgICAgICAgICB7YFdlIGNvdWxkbid0IGZpbmQgYSBtYXRjaCBmb3IgYH1cbiAgICAgICAgICAgICAgICAgICAgICA8VGV4dCBmb250V2VpZ2h0PVwiYm9sZFwiPntgXCIke3ZhbHVlVHJpbW1lZH0uXCJgfTwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnIFRyeSBhbm90aGVyIGtleXdvcmQsIG9yIHNlZSB3aGF0IG91ciBtZW1iZXJzIGFyZSBsZWFybmluZy4nXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgPE1lbnUgYm9yZGVyPVwibm9uZVwiIHZhcmlhbnQ9XCJwb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPFBvcHVsYXJDb250ZW50IG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgIDxQb3B1bGFyU2VhcmNoZXNcbiAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2g9e25hdmlnYXRlVG9TZWFyY2h9XG4gICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgeyEhc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCAmJiAoXG4gICAgICAgICAgICAgIDxTdHJva2VCdXR0b25cbiAgICAgICAgICAgICAgICBteT17MTZ9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCd2aWV3X2FsbF9yZXN1bHRzJywge1xuICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFZpZXcgYWxsIHJlc3VsdHNcbiAgICAgICAgICAgICAgPC9TdHJva2VCdXR0b24+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPFF1aXpBbmRIZWxwQ2VudGVyTGlua3NcbiAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgIGhhbmRsZUNsb3NlRHJvcGRvd249e2Nsb3NlU2VhcmNofVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1N1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgIDwvQm94PlxuICAgICAgPC9Gb2N1c1RyYXA+XG4gICAgPC8+XG4gICk7XG59O1xuIl19 */");
64
63
  const InlineResultLi = /*#__PURE__*/_styled(MenuItem, {
65
64
  target: "e1e5b20r3",
66
65
  label: "InlineResultLi"
@@ -71,7 +70,7 @@ const InlineResultLi = /*#__PURE__*/_styled(MenuItem, {
71
70
  '&:focus-visible:after': {
72
71
  left: -4
73
72
  }
74
- }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlFdUIiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVNlYXJjaFRyYWNraW5nIH0gZnJvbSAnLi9ob29rcy91c2VTZWFyY2hUcmFja2luZyc7XG5pbXBvcnQgeyB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24gfSBmcm9tICcuL2hvb2tzL3VzZVVybENoYW5nZURldGVjdGlvbic7XG5pbXBvcnQgeyBRdWl6QW5kSGVscENlbnRlckxpbmtzIH0gZnJvbSAnLi9RdWl6QW5kSGVscENlbnRlckxpbmtzJztcbmltcG9ydCB7IHNhZmVseVJlZGlyZWN0IH0gZnJvbSAnLi9zYWZlbHlSZWRpcmVjdCc7XG5pbXBvcnQgeyB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQgfSBmcm9tICcuL1NlYXJjaFRyYWNraW5nUHJvdmlkZXInO1xuaW1wb3J0IHsgc2VhcmNoV29ya2VyIH0gZnJvbSAnLi9TZWFyY2hXb3JrZXInO1xuaW1wb3J0IHR5cGUge1xuICBBdXRvY29tcGxldGVTdWdnZXN0aW9uLFxuICBTZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxufSBmcm9tICcuL1NlYXJjaFdvcmtlci90eXBlcyc7XG5pbXBvcnQgeyBTZWFyY2hQYW5lUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgRm9ybSA9IEJveC53aXRoQ29tcG9uZW50KCdmb3JtJyk7XG5jb25zdCBJbnB1dCA9IEJveC53aXRoQ29tcG9uZW50KCdpbnB1dCcpO1xuXG5jb25zdCBRdWVyeUNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKShcbiAgY3NzKHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBwdDogMTYsXG4gICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgcHg6IHsgXzogMjQgfSxcbiAgfSlcbik7XG5cbmNvbnN0IFN1Z2dlc3Rpb25Db250YWluZXIgPSBzdHlsZWQoQ29udGVudENvbnRhaW5lcikoXG4gIGNzcyh7XG4gICAgcHQ6IDE2LFxuICAgIHBiOiB7IF86IDAsIG1kOiAyNCB9LFxuICAgIHB4OiB7IF86IDI0IH0sXG4gIH0pXG4pO1xuXG5jb25zdCBTdHlsZWRJbnB1dCA9IHN0eWxlZChJbnB1dCkoXG4gIGNzcyh7XG4gICAgb3V0bGluZTogYG5vbmVgLFxuICAgICcmOjpwbGFjZWhvbGRlcic6IHtcbiAgICAgIHRleHRDb2xvcjogdGhlbWUuY29sb3JzWyd0ZXh0LXNlY29uZGFyeSddIGFzIG5ldmVyLFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVSZXN1bHRMaSA9IHN0eWxlZChNZW51SXRlbSkoXG4gIGNzcyh7XG4gICAgcGw6IDAsXG4gICAgcHk6IDgsXG4gICAgZm9udFNpemU6IDE2LFxuICAgICcmOmZvY3VzLXZpc2libGU6YWZ0ZXInOiB7XG4gICAgICBsZWZ0OiAtNCxcbiAgICB9LFxuICB9KVxuKTtcblxuY29uc3QgSW5saW5lTG9hZGVyTGkgPSBzdHlsZWQubGkoXG4gIGNzcyh7XG4gICAgbGlzdFN0eWxlVHlwZTogJ25vbmUnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBnYXA6IDEyLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IFNlbWlib2xkU2VhcmNoSWNvbiA9IHN0eWxlZChTZWFyY2hJY29uKWBcbiAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDtcbiAgY2lyY2xlLFxuICBwYXRoIHtcbiAgICBzdHJva2Utd2lkdGg6IDJweDtcbiAgfVxuICByZWN0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMnB4LCAtMnB4KTtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDRweCk7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSArIDRweCk7XG4gIH1cbmA7XG5cbmNvbnN0IEVsbGlwc2lzQm94ID0gc3R5bGVkKEJveClgXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuYDtcblxuY29uc3QgSGlnaGxpZ2h0ZWRUZXh0ID0gKHtcbiAgc3VnZ2VzdGlvbjogeyB0aXRsZSwgc2VnbWVudHMgfSxcbn06IHtcbiAgc3VnZ2VzdGlvbjogQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbjtcbn0pID0+IHtcbiAgY29uc3QgbW9kZSA9IHVzZUN1cnJlbnRNb2RlKCk7XG4gIGNvbnN0IGhpZ2hsaWdodENvbG9yID0gbW9kZSA9PT0gJ2RhcmsnID8gJ2h5cGVyJyA6ICd5ZWxsb3cnO1xuXG4gIHJldHVybiAoXG4gICAgPEZsZXhCb3g+XG4gICAgICA8RWxsaXBzaXNCb3hcbiAgICAgICAgbWF4V2lkdGg9XCJjYWxjKDEwMHZ3IC0gMTI4cHgpXCJcbiAgICAgICAgd2hpdGVTcGFjZT1cInByZVwiXG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIG92ZXJmbG93PVwiaGlkZGVuXCJcbiAgICAgID5cbiAgICAgICAge3NlZ21lbnRzLm1hcCgoc2VnbWVudCwgaSkgPT4gKFxuICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICBrZXk9e2Ake3RpdGxlfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgbGluZUhlaWdodD1cInRpdGxlXCJcbiAgICAgICAgICAgIHsuLi4oc2VnbWVudC5oaWdobGlnaHRcbiAgICAgICAgICAgICAgPyB7IGJnOiBoaWdobGlnaHRDb2xvciwgZm9udFdlaWdodDogJ2JvbGQnIH1cbiAgICAgICAgICAgICAgOiB7fSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3NlZ21lbnQudmFsdWV9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApKX1cbiAgICAgIDwvRWxsaXBzaXNCb3g+XG4gICAgICA8VGV4dCBzY3JlZW5yZWFkZXI+e3RpdGxlfTwvVGV4dD5cbiAgICA8L0ZsZXhCb3g+XG4gICk7XG59O1xuXG50eXBlIFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHtcbiAgc2hpbW1lclJvd3M6IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICBzaGltbWVyczoge1xuICAgICAga2V5OiBzdHJpbmc7XG4gICAgICB3aWR0aDogbnVtYmVyO1xuICAgIH1bXTtcbiAgfVtdO1xufTtcblxubGV0IGxvYWRlcktleSA9IDA7XG5mdW5jdGlvbiBybmRMb2FkZXIoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wbHVzcGx1c1xuICBjb25zdCBrZXkgPSBsb2FkZXJLZXkrKztcbiAgY29uc3QgbG9hZGVyOiBTZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSB7IHNoaW1tZXJSb3dzOiBbXSB9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xuICAgIGNvbnN0IHJvdyA9IHtcbiAgICAgIGtleTogYCR7a2V5fToke2l9YCxcbiAgICAgIHNoaW1tZXJzOiBbXSBhcyB7IGtleTogc3RyaW5nOyB3aWR0aDogbnVtYmVyIH1bXSxcbiAgICB9O1xuICAgIGNvbnN0IHdvcmRzID0gTWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiAzKTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHdvcmRzOyBqKyspIHtcbiAgICAgIGNvbnN0IHdpZHRoID0gMTIgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiA5Nik7XG4gICAgICByb3cuc2hpbW1lcnMucHVzaCh7XG4gICAgICAgIGtleTogYCR7a2V5fToke2p9YCxcbiAgICAgICAgd2lkdGgsXG4gICAgICB9KTtcbiAgICB9XG4gICAgbG9hZGVyLnNoaW1tZXJSb3dzLnB1c2gocm93KTtcbiAgfVxuICByZXR1cm4gbG9hZGVyO1xufVxuXG5leHBvcnQgY29uc3QgU2VhcmNoUGFuZTogUmVhY3QuRkM8U2VhcmNoUGFuZVByb3BzPiA9ICh7XG4gIG9uU2VhcmNoLFxuICBvblRyYWNraW5nQ2xpY2ssXG4gIHNlYXJjaEJ1dHRvblJlZixcbiAgdG9nZ2xlU2VhcmNoLFxuICBvblNlYXJjaEFzWW91VHlwZSxcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFthdXRvQ29tcGxldGVTdWdnZXN0aW9ucywgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnNdID0gdXNlU3RhdGU8XG4gICAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbltdXG4gID4oW10pO1xuICBjb25zdCBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0cywgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0c10gPVxuICAgIHVzZVN0YXRlPFNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfCBudWxsPihudWxsKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG5cbiAgY29uc3QgaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzID0gb25TZWFyY2hBc1lvdVR5cGUgJiYgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcblxuICBjb25zdCBjbG9zZVNlYXJjaCA9IGFzeW5jIChmcm9tUmVzdWx0Q2xpY2sgPSBmYWxzZSkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHVzZXIgbWFkZSBhIHNlYXJjaCBhbmQgdGhlbiBjbG9zZWQgc2VhcmNoIHBhbmVcbiAgICBpZiAoXG4gICAgICBoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHMgJiZcbiAgICAgICFmcm9tUmVzdWx0Q2xpY2sgJiZcbiAgICAgIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRvZ2dsZVNlYXJjaCgpO1xuICAgIC8vIGFkZHMgYSBsaXR0bGUgZGVsYXkgYmV0d2VlbiBjbG9zaW5nIHRoZSBzZWFyY2ggcGFuZSBhbmQgZm9jdXNpbmcgb24gdGhlIGJ1dHRvblxuICAgIC8vIHRvIHByZXZlbnQgdGhlIHNlYXJjaCBwYW5lIGZyb20gaW1tZWRpYXRlbHkgb3BlbmluZyBhZ2FpblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHNlYXJjaEJ1dHRvblJlZiAmJiBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgc2VhcmNoQnV0dG9uUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZU9uRXNjSGFuZGxlcigoKSA9PiBjbG9zZVNlYXJjaCgpKTtcblxuICBjb25zdCBvbk1vdXNlRG93bk91dHNpZGUgPSAoeyB0YXJnZXQgfTogTW91c2VFdmVudCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZU91dHNpZGVDbGljayA9ICgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWRvY3VtZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXRlc3RpZD1cImhlYWRlci1zZWFyY2gtZHJvcGRvd25cIl0nKVxuICAgICAgICAgID8uY29udGFpbnModGFyZ2V0IGFzIEhUTUxFbGVtZW50KSAmJlxuICAgICAgICB0YXJnZXQgIT09IHNlYXJjaEJ1dHRvblJlZj8uY3VycmVudFxuICAgICAgKSB7XG4gICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICB9XG5cbiAgICAgIHRhcmdldD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gICAgfTtcblxuICAgIHRhcmdldD8uYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gIH07XG5cbiAgY29uc3QgbmF2aWdhdGVUb1NlYXJjaCA9IChzZWFyY2hUZXJtOiBzdHJpbmcsIGZyb21QcmV2U2VhcmNoPzogc3RyaW5nKSA9PiB7XG4gICAgb25TZWFyY2goc2VhcmNoVGVybSwgZnJvbVByZXZTZWFyY2gpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZTogUmVhY3QuQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgIHNldFZhbHVlKGV2dC50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdDogUmVhY3QuRm9ybUV2ZW50SGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB0aGUgdXNlciBzdWJtaXRzIHRoZSBmb3JtIHRvIGNhcHR1cmUgY29tcGxldGUgcXVlcnlcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgfTtcblxuICBjb25zdCBjbGVhcklucHV0ID0gKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCBiZWZvcmUgdXNlciBjbGVhcnMgaW5wdXRcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIHNldFZhbHVlKCcnKTtcbiAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgLy8gcmVzZXQgdGhlIGNvbnRleHQgd2l0aCBlbXB0eSB2YWx1ZXNcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICBxdWVyeTogJycsXG4gICAgICBzZWFyY2hJZDogJycsXG4gICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICAvLyBhbmQgdHJhY2sgc2VhcmNoIGV2ZW50IGlmIHVzZXIgbWFkZSBhIHNlYXJjaFxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiAoKSA9PiB7XG4gICAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgfVxuXG4gICAgICB0b2dnbGVTZWFyY2goKTtcbiAgICB9LFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlucHV0UmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgc2VhcmNoV29ya2VyLmluaXQoKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF2YWx1ZVRyaW1tZWQubGVuZ3RoKSB7XG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgICBxdWVyeTogJycsXG4gICAgICAgIHNlYXJjaElkOiAnJyxcbiAgICAgICAgcmVzdWx0c0NvdW50OiAwLFxuICAgICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGNhbmNlbCA9IGZhbHNlO1xuICAgIGxldCBjbGVhckF1dG9jb21wbGV0ZSA9IHRydWU7XG4gICAgbGV0IGNsZWFyU2VhcmNoQXNZb3VUeXBlID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICB9O1xuICB9LCBbdmFsdWVUcmltbWVkLCBvblNlYXJjaEFzWW91VHlwZSwgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXNdKTtcblxuICB1c2VTZWFyY2hUcmFja2luZyh7XG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgYmc9XCJzaGFkb3ctc2Vjb25kYXJ5XCJcbiAgICAgICAgaGVpZ2h0PVwiMTAwdmhcIlxuICAgICAgICBwb3NpdGlvbj1cImZpeGVkXCJcbiAgICAgICAgLy8gV2UgYWRkIDVyZW0gaGVyZSBpbiBjYXNlIHRoZXJlJ3Mgc29tZSBzb3J0IG9mIGJyYW5kZWQgYmFubmVyIGFib3ZlIHNlYXJjaFxuICAgICAgICAvLyBUaGUgc2VhcmNoIGFyZWEgaXMgbXVjaCB0YWxsZXIgdGhhbiA1cmVtIHNvIHRoaXMgaXMgYSBzYWZlIGFtb3VudCBvZiBwYWRkaW5nXG4gICAgICAgIHRvcD17YGNhbGMoJHt0aGVtZS5lbGVtZW50cy5oZWFkZXJIZWlnaHR9ICsgNXJlbSlgfVxuICAgICAgICB3aWR0aD17MX1cbiAgICAgIC8+XG4gICAgICA8Rm9jdXNUcmFwXG4gICAgICAgIG9uRXNjYXBlS2V5PXsoKSA9PiBjbG9zZVNlYXJjaCgpfVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249e3sgXzogJ2ZpeGVkJywgbWQ6ICdhYnNvbHV0ZScgfX1cbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIG1heEhlaWdodD17eyBfOiAnY2FsYygxMDB2aCAtIDYzcHgpJywgbWQ6ICdjYWxjKDEwMHZoIC0gODBweCknIH19XG4gICAgICAgICAgb3ZlcmZsb3c9XCJhdXRvXCJcbiAgICAgICAgICB6SW5kZXg9ezEwfSAvLyBlbnN1cmUgZHJvcGRvd24gaXMgYWJvdmUgdGhlIHBhZ2UgY29udGVudFxuICAgICAgICA+XG4gICAgICAgICAgPEJveCBib3JkZXI9XCJub25lXCIgd2lkdGg9XCJhdXRvXCI+XG4gICAgICAgICAgICA8UXVlcnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtcz1cImJhc2VsaW5lXCJcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktNjAwXCJcbiAgICAgICAgICAgICAgICBib3JkZXJTdHlsZUJvdHRvbT1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aEJvdHRvbT1cIjFweFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEZvcm1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbj1cIi9zZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZWFyY2gtZm9ybVwiXG4gICAgICAgICAgICAgICAgICBtbD17OH1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBib3JkZXI9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMjAsIG1kOiAyNiB9fVxuICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0PVwiYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaGVhZGVyLXNlYXJjaC1iYXJcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwicXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiBvbktleURvd24oZSl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Gb3JtPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICBpY29uPXtNaW5pRGVsZXRlSWNvbn1cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdmbG9hdGluZycsXG4gICAgICAgICAgICAgICAgICAgIG5hcnJvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NsZWFySW5wdXR9XG4gICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgIDwvUXVlcnlDb250YWluZXI+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPFN1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICB7dmFsdWVUcmltbWVkLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPEZsZXhCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGFzPVwidWxcIiBsaXN0U3R5bGU9XCJub25lXCIgcD17MH0+XG4gICAgICAgICAgICAgICAgICB7YXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgIGtleT17cy50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U2VtaWJvbGRTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBtYj17MiBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT17MTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17OH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBtcj17MTJ9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgeyhzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cImgyXCIgZm9udFNpemU9ezIwfSBtYj17MTZ9IG10PXsyNH0+XG4gICAgICAgICAgICAgICAgICAgICAgVG9wIHJlc3VsdHNcbiAgICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICA8RmxleEJveFxuICAgICAgICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgIGFzPVwidWxcIlxuICAgICAgICAgICAgICAgICAgICAgIGxpc3RTdHlsZT1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIHA9ezB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWFyY2hBc1lvdVR5cGVMb2FkZXI/LnNoaW1tZXJSb3dzLm1hcCgocikgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVMb2FkZXJMaSBrZXk9e3Iua2V5fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyLnNoaW1tZXJzLm1hcCgod29yZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2hpbW1lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MzB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHk9ezggYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3dvcmQua2V5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXt3b3JkLndpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk9XCJhY2NlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I9XCJ0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXt7IF86IDEwIGFzIDE2IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiYm9yZGVyLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcj17MX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPVwieGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweD17MTZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk9ezAuMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZUxvYWRlckxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lUmVzdWx0TGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMucXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH06JHtpLnRvU3RyaW5nKCl9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2godHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZSBzaXplPVwic21cIiB2YXJpYW50PVwidGVydGlhcnlcIiBtbD17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cy50eXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgICAgPC8+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+IHtcbiAgICBpbnB1dFJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgIHNlYXJjaFdvcmtlci5pbml0KCk7XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghdmFsdWVUcmltbWVkLmxlbmd0aCkge1xuICAgICAgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhudWxsKTtcbiAgICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgICAgcXVlcnk6ICcnLFxuICAgICAgICBzZWFyY2hJZDogJycsXG4gICAgICAgIHJlc3VsdHNDb3VudDogMCxcbiAgICAgICAgcXVlcnlMb2FkVGltZTogMCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBsZXQgY2xlYXJBdXRvY29tcGxldGUgPSB0cnVlO1xuICAgIGxldCBjbGVhclNlYXJjaEFzWW91VHlwZSA9IHRydWU7XG5cbiAgICBsZXQgc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5OiBOb2RlSlMuVGltZW91dDtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2l0aCBhIHNtYWxsIGRlbGF5IHdoZW4gdGhlcmUgYXJlIG5vIHJlc3VsdHNcbiAgICAgIGlmIChcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUgJiZcbiAgICAgICAgcmVzdWx0cy50b3AubGVuZ3RoID09PSAwICYmXG4gICAgICAgICFzZWFyY2hSZXN1bHRDbGlja2VkXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHF1ZXJ5TG9hZFRpbWUgfSA9IHJlc3VsdHM7XG4gICAgICAgIHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICghY2FuY2VsKSB7XG4gICAgICAgICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIDAsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICAgIGNsZWFyVGltZW91dChzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXkpO1xuICAgIH07XG4gIH0sIFtcbiAgICB2YWx1ZVRyaW1tZWQsXG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyxcbiAgXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICBiZz1cInNoYWRvdy1zZWNvbmRhcnlcIlxuICAgICAgICBoZWlnaHQ9XCIxMDB2aFwiXG4gICAgICAgIHBvc2l0aW9uPVwiZml4ZWRcIlxuICAgICAgICAvLyBXZSBhZGQgNXJlbSBoZXJlIGluIGNhc2UgdGhlcmUncyBzb21lIHNvcnQgb2YgYnJhbmRlZCBiYW5uZXIgYWJvdmUgc2VhcmNoXG4gICAgICAgIC8vIFRoZSBzZWFyY2ggYXJlYSBpcyBtdWNoIHRhbGxlciB0aGFuIDVyZW0gc28gdGhpcyBpcyBhIHNhZmUgYW1vdW50IG9mIHBhZGRpbmdcbiAgICAgICAgdG9wPXtgY2FsYygke3RoZW1lLmVsZW1lbnRzLmhlYWRlckhlaWdodH0gKyA1cmVtKWB9XG4gICAgICAgIHdpZHRoPXsxfVxuICAgICAgLz5cbiAgICAgIDxGb2N1c1RyYXBcbiAgICAgICAgb25Fc2NhcGVLZXk9e2Nsb3NlU2VhcmNofVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249e3sgXzogJ2ZpeGVkJywgbWQ6ICdhYnNvbHV0ZScgfX1cbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIG1heEhlaWdodD17eyBfOiAnY2FsYygxMDB2aCAtIDYzcHgpJywgbWQ6ICdjYWxjKDEwMHZoIC0gODBweCknIH19XG4gICAgICAgICAgb3ZlcmZsb3c9XCJhdXRvXCJcbiAgICAgICAgICB6SW5kZXg9ezEwfSAvLyBlbnN1cmUgZHJvcGRvd24gaXMgYWJvdmUgdGhlIHBhZ2UgY29udGVudFxuICAgICAgICA+XG4gICAgICAgICAgPEJveCBib3JkZXI9XCJub25lXCIgd2lkdGg9XCJhdXRvXCI+XG4gICAgICAgICAgICA8UXVlcnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtcz1cImJhc2VsaW5lXCJcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktNjAwXCJcbiAgICAgICAgICAgICAgICBib3JkZXJTdHlsZUJvdHRvbT1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aEJvdHRvbT1cIjFweFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEZvcm1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbj1cIi9zZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZWFyY2gtZm9ybVwiXG4gICAgICAgICAgICAgICAgICBtbD17OH1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBib3JkZXI9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMjAsIG1kOiAyNiB9fVxuICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0PVwiYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaGVhZGVyLXNlYXJjaC1iYXJcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwicXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiBvbktleURvd24oZSl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Gb3JtPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICBpY29uPXtNaW5pRGVsZXRlSWNvbn1cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdmbG9hdGluZycsXG4gICAgICAgICAgICAgICAgICAgIG5hcnJvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NsZWFySW5wdXR9XG4gICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgIDwvUXVlcnlDb250YWluZXI+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPFN1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICB7dmFsdWVUcmltbWVkLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPEZsZXhCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGFzPVwidWxcIiBsaXN0U3R5bGU9XCJub25lXCIgcD17MH0+XG4gICAgICAgICAgICAgICAgICB7YXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgIGtleT17cy50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW1pYm9sZFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1iPXsyIGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPXsxNH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXs4fVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1yPXsxMn1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICB7KHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0IGFzPVwiaDJcIiBmb250U2l6ZT17MjB9IG1iPXsxNn0gbXQ9ezI0fT5cbiAgICAgICAgICAgICAgICAgICAgICBUb3AgcmVzdWx0c1xuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbj1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJ1bFwiXG4gICAgICAgICAgICAgICAgICAgICAgbGlzdFN0eWxlPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcD17MH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNlYXJjaEFzWW91VHlwZUxvYWRlcj8uc2hpbW1lclJvd3MubWFwKChyKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZUxvYWRlckxpIGtleT17ci5rZXl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Iuc2hpbW1lcnMubWFwKCh3b3JkKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTaGltbWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXszMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweT17OCBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17d29yZC5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9e3dvcmQud2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseT1cImFjY2VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDb2xvcj1cInRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMTAgYXMgMTYgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I9XCJib3JkZXItc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyPXsxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM9XCJ4bFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB4PXsxNn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eT17MC4xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lTG9hZGVyTGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLm1hcCgocywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5xdWVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwibGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHMuc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgY29udGVudF9pZDogcy5jb250ZW50SWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZWx5UmVkaXJlY3Qocy51cmxQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhpZ2hsaWdodGVkVGV4dCBzdWdnZXN0aW9uPXtzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJhZGdlIHNpemU9XCJzbVwiIHZhcmlhbnQ9XCJ0ZXJ0aWFyeVwiIG1sPXsxMn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzLnR5cGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy50b3AubGVuZ3RoID09PSAwICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxCb3ggZm9udFNpemU9e3sgXzogMjAsIHNtOiAyNiB9fSBtdD17MH0gbWI9ezQ4fT5cbiAgICAgICAgICAgICAgICAgICAgICB7YFdlIGNvdWxkbid0IGZpbmQgYSBtYXRjaCBmb3IgYH1cbiAgICAgICAgICAgICAgICAgICAgICA8VGV4dCBmb250V2VpZ2h0PVwiYm9sZFwiPntgXCIke3ZhbHVlVHJpbW1lZH0uXCJgfTwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnIFRyeSBhbm90aGVyIGtleXdvcmQsIG9yIHNlZSB3aGF0IG91ciBtZW1iZXJzIGFyZSBsZWFybmluZy4nXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgPE1lbnUgYm9yZGVyPVwibm9uZVwiIHZhcmlhbnQ9XCJwb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPFBvcHVsYXJDb250ZW50IG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgIDxQb3B1bGFyU2VhcmNoZXNcbiAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2g9e25hdmlnYXRlVG9TZWFyY2h9XG4gICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgeyEhc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCAmJiAoXG4gICAgICAgICAgICAgIDxTdHJva2VCdXR0b25cbiAgICAgICAgICAgICAgICBteT17MTZ9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCd2aWV3X2FsbF9yZXN1bHRzJywge1xuICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFZpZXcgYWxsIHJlc3VsdHNcbiAgICAgICAgICAgICAgPC9TdHJva2VCdXR0b24+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPFF1aXpBbmRIZWxwQ2VudGVyTGlua3NcbiAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgIGhhbmRsZUNsb3NlRHJvcGRvd249e2Nsb3NlU2VhcmNofVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1N1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgIDwvQm94PlxuICAgICAgPC9Gb2N1c1RyYXA+XG4gICAgPC8+XG4gICk7XG59O1xuIl19 */");
75
74
  const InlineLoaderLi = /*#__PURE__*/_styled("li", {
76
75
  target: "e1e5b20r2",
77
76
  label: "InlineLoaderLi"
@@ -80,7 +79,7 @@ const InlineLoaderLi = /*#__PURE__*/_styled("li", {
80
79
  display: 'flex',
81
80
  gap: 12,
82
81
  alignItems: 'center'
83
- }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTRFdUIiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVNlYXJjaFRyYWNraW5nIH0gZnJvbSAnLi9ob29rcy91c2VTZWFyY2hUcmFja2luZyc7XG5pbXBvcnQgeyB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24gfSBmcm9tICcuL2hvb2tzL3VzZVVybENoYW5nZURldGVjdGlvbic7XG5pbXBvcnQgeyBRdWl6QW5kSGVscENlbnRlckxpbmtzIH0gZnJvbSAnLi9RdWl6QW5kSGVscENlbnRlckxpbmtzJztcbmltcG9ydCB7IHNhZmVseVJlZGlyZWN0IH0gZnJvbSAnLi9zYWZlbHlSZWRpcmVjdCc7XG5pbXBvcnQgeyB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQgfSBmcm9tICcuL1NlYXJjaFRyYWNraW5nUHJvdmlkZXInO1xuaW1wb3J0IHsgc2VhcmNoV29ya2VyIH0gZnJvbSAnLi9TZWFyY2hXb3JrZXInO1xuaW1wb3J0IHR5cGUge1xuICBBdXRvY29tcGxldGVTdWdnZXN0aW9uLFxuICBTZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxufSBmcm9tICcuL1NlYXJjaFdvcmtlci90eXBlcyc7XG5pbXBvcnQgeyBTZWFyY2hQYW5lUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgRm9ybSA9IEJveC53aXRoQ29tcG9uZW50KCdmb3JtJyk7XG5jb25zdCBJbnB1dCA9IEJveC53aXRoQ29tcG9uZW50KCdpbnB1dCcpO1xuXG5jb25zdCBRdWVyeUNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKShcbiAgY3NzKHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBwdDogMTYsXG4gICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgcHg6IHsgXzogMjQgfSxcbiAgfSlcbik7XG5cbmNvbnN0IFN1Z2dlc3Rpb25Db250YWluZXIgPSBzdHlsZWQoQ29udGVudENvbnRhaW5lcikoXG4gIGNzcyh7XG4gICAgcHQ6IDE2LFxuICAgIHBiOiB7IF86IDAsIG1kOiAyNCB9LFxuICAgIHB4OiB7IF86IDI0IH0sXG4gIH0pXG4pO1xuXG5jb25zdCBTdHlsZWRJbnB1dCA9IHN0eWxlZChJbnB1dCkoXG4gIGNzcyh7XG4gICAgb3V0bGluZTogYG5vbmVgLFxuICAgICcmOjpwbGFjZWhvbGRlcic6IHtcbiAgICAgIHRleHRDb2xvcjogdGhlbWUuY29sb3JzWyd0ZXh0LXNlY29uZGFyeSddIGFzIG5ldmVyLFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVSZXN1bHRMaSA9IHN0eWxlZChNZW51SXRlbSkoXG4gIGNzcyh7XG4gICAgcGw6IDAsXG4gICAgcHk6IDgsXG4gICAgZm9udFNpemU6IDE2LFxuICAgICcmOmZvY3VzLXZpc2libGU6YWZ0ZXInOiB7XG4gICAgICBsZWZ0OiAtNCxcbiAgICB9LFxuICB9KVxuKTtcblxuY29uc3QgSW5saW5lTG9hZGVyTGkgPSBzdHlsZWQubGkoXG4gIGNzcyh7XG4gICAgbGlzdFN0eWxlVHlwZTogJ25vbmUnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBnYXA6IDEyLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IFNlbWlib2xkU2VhcmNoSWNvbiA9IHN0eWxlZChTZWFyY2hJY29uKWBcbiAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDtcbiAgY2lyY2xlLFxuICBwYXRoIHtcbiAgICBzdHJva2Utd2lkdGg6IDJweDtcbiAgfVxuICByZWN0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMnB4LCAtMnB4KTtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDRweCk7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSArIDRweCk7XG4gIH1cbmA7XG5cbmNvbnN0IEVsbGlwc2lzQm94ID0gc3R5bGVkKEJveClgXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuYDtcblxuY29uc3QgSGlnaGxpZ2h0ZWRUZXh0ID0gKHtcbiAgc3VnZ2VzdGlvbjogeyB0aXRsZSwgc2VnbWVudHMgfSxcbn06IHtcbiAgc3VnZ2VzdGlvbjogQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbjtcbn0pID0+IHtcbiAgY29uc3QgbW9kZSA9IHVzZUN1cnJlbnRNb2RlKCk7XG4gIGNvbnN0IGhpZ2hsaWdodENvbG9yID0gbW9kZSA9PT0gJ2RhcmsnID8gJ2h5cGVyJyA6ICd5ZWxsb3cnO1xuXG4gIHJldHVybiAoXG4gICAgPEZsZXhCb3g+XG4gICAgICA8RWxsaXBzaXNCb3hcbiAgICAgICAgbWF4V2lkdGg9XCJjYWxjKDEwMHZ3IC0gMTI4cHgpXCJcbiAgICAgICAgd2hpdGVTcGFjZT1cInByZVwiXG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIG92ZXJmbG93PVwiaGlkZGVuXCJcbiAgICAgID5cbiAgICAgICAge3NlZ21lbnRzLm1hcCgoc2VnbWVudCwgaSkgPT4gKFxuICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICBrZXk9e2Ake3RpdGxlfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgbGluZUhlaWdodD1cInRpdGxlXCJcbiAgICAgICAgICAgIHsuLi4oc2VnbWVudC5oaWdobGlnaHRcbiAgICAgICAgICAgICAgPyB7IGJnOiBoaWdobGlnaHRDb2xvciwgZm9udFdlaWdodDogJ2JvbGQnIH1cbiAgICAgICAgICAgICAgOiB7fSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3NlZ21lbnQudmFsdWV9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApKX1cbiAgICAgIDwvRWxsaXBzaXNCb3g+XG4gICAgICA8VGV4dCBzY3JlZW5yZWFkZXI+e3RpdGxlfTwvVGV4dD5cbiAgICA8L0ZsZXhCb3g+XG4gICk7XG59O1xuXG50eXBlIFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHtcbiAgc2hpbW1lclJvd3M6IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICBzaGltbWVyczoge1xuICAgICAga2V5OiBzdHJpbmc7XG4gICAgICB3aWR0aDogbnVtYmVyO1xuICAgIH1bXTtcbiAgfVtdO1xufTtcblxubGV0IGxvYWRlcktleSA9IDA7XG5mdW5jdGlvbiBybmRMb2FkZXIoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wbHVzcGx1c1xuICBjb25zdCBrZXkgPSBsb2FkZXJLZXkrKztcbiAgY29uc3QgbG9hZGVyOiBTZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSB7IHNoaW1tZXJSb3dzOiBbXSB9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xuICAgIGNvbnN0IHJvdyA9IHtcbiAgICAgIGtleTogYCR7a2V5fToke2l9YCxcbiAgICAgIHNoaW1tZXJzOiBbXSBhcyB7IGtleTogc3RyaW5nOyB3aWR0aDogbnVtYmVyIH1bXSxcbiAgICB9O1xuICAgIGNvbnN0IHdvcmRzID0gTWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiAzKTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHdvcmRzOyBqKyspIHtcbiAgICAgIGNvbnN0IHdpZHRoID0gMTIgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiA5Nik7XG4gICAgICByb3cuc2hpbW1lcnMucHVzaCh7XG4gICAgICAgIGtleTogYCR7a2V5fToke2p9YCxcbiAgICAgICAgd2lkdGgsXG4gICAgICB9KTtcbiAgICB9XG4gICAgbG9hZGVyLnNoaW1tZXJSb3dzLnB1c2gocm93KTtcbiAgfVxuICByZXR1cm4gbG9hZGVyO1xufVxuXG5leHBvcnQgY29uc3QgU2VhcmNoUGFuZTogUmVhY3QuRkM8U2VhcmNoUGFuZVByb3BzPiA9ICh7XG4gIG9uU2VhcmNoLFxuICBvblRyYWNraW5nQ2xpY2ssXG4gIHNlYXJjaEJ1dHRvblJlZixcbiAgdG9nZ2xlU2VhcmNoLFxuICBvblNlYXJjaEFzWW91VHlwZSxcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFthdXRvQ29tcGxldGVTdWdnZXN0aW9ucywgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnNdID0gdXNlU3RhdGU8XG4gICAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbltdXG4gID4oW10pO1xuICBjb25zdCBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0cywgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0c10gPVxuICAgIHVzZVN0YXRlPFNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfCBudWxsPihudWxsKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG5cbiAgY29uc3QgaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzID0gb25TZWFyY2hBc1lvdVR5cGUgJiYgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcblxuICBjb25zdCBjbG9zZVNlYXJjaCA9IGFzeW5jIChmcm9tUmVzdWx0Q2xpY2sgPSBmYWxzZSkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHVzZXIgbWFkZSBhIHNlYXJjaCBhbmQgdGhlbiBjbG9zZWQgc2VhcmNoIHBhbmVcbiAgICBpZiAoXG4gICAgICBoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHMgJiZcbiAgICAgICFmcm9tUmVzdWx0Q2xpY2sgJiZcbiAgICAgIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRvZ2dsZVNlYXJjaCgpO1xuICAgIC8vIGFkZHMgYSBsaXR0bGUgZGVsYXkgYmV0d2VlbiBjbG9zaW5nIHRoZSBzZWFyY2ggcGFuZSBhbmQgZm9jdXNpbmcgb24gdGhlIGJ1dHRvblxuICAgIC8vIHRvIHByZXZlbnQgdGhlIHNlYXJjaCBwYW5lIGZyb20gaW1tZWRpYXRlbHkgb3BlbmluZyBhZ2FpblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHNlYXJjaEJ1dHRvblJlZiAmJiBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgc2VhcmNoQnV0dG9uUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZU9uRXNjSGFuZGxlcigoKSA9PiBjbG9zZVNlYXJjaCgpKTtcblxuICBjb25zdCBvbk1vdXNlRG93bk91dHNpZGUgPSAoeyB0YXJnZXQgfTogTW91c2VFdmVudCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZU91dHNpZGVDbGljayA9ICgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWRvY3VtZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXRlc3RpZD1cImhlYWRlci1zZWFyY2gtZHJvcGRvd25cIl0nKVxuICAgICAgICAgID8uY29udGFpbnModGFyZ2V0IGFzIEhUTUxFbGVtZW50KSAmJlxuICAgICAgICB0YXJnZXQgIT09IHNlYXJjaEJ1dHRvblJlZj8uY3VycmVudFxuICAgICAgKSB7XG4gICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICB9XG5cbiAgICAgIHRhcmdldD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gICAgfTtcblxuICAgIHRhcmdldD8uYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gIH07XG5cbiAgY29uc3QgbmF2aWdhdGVUb1NlYXJjaCA9IChzZWFyY2hUZXJtOiBzdHJpbmcsIGZyb21QcmV2U2VhcmNoPzogc3RyaW5nKSA9PiB7XG4gICAgb25TZWFyY2goc2VhcmNoVGVybSwgZnJvbVByZXZTZWFyY2gpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZTogUmVhY3QuQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgIHNldFZhbHVlKGV2dC50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdDogUmVhY3QuRm9ybUV2ZW50SGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB0aGUgdXNlciBzdWJtaXRzIHRoZSBmb3JtIHRvIGNhcHR1cmUgY29tcGxldGUgcXVlcnlcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgfTtcblxuICBjb25zdCBjbGVhcklucHV0ID0gKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCBiZWZvcmUgdXNlciBjbGVhcnMgaW5wdXRcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIHNldFZhbHVlKCcnKTtcbiAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgLy8gcmVzZXQgdGhlIGNvbnRleHQgd2l0aCBlbXB0eSB2YWx1ZXNcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICBxdWVyeTogJycsXG4gICAgICBzZWFyY2hJZDogJycsXG4gICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICAvLyBhbmQgdHJhY2sgc2VhcmNoIGV2ZW50IGlmIHVzZXIgbWFkZSBhIHNlYXJjaFxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiAoKSA9PiB7XG4gICAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgfVxuXG4gICAgICB0b2dnbGVTZWFyY2goKTtcbiAgICB9LFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlucHV0UmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgc2VhcmNoV29ya2VyLmluaXQoKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF2YWx1ZVRyaW1tZWQubGVuZ3RoKSB7XG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgICBxdWVyeTogJycsXG4gICAgICAgIHNlYXJjaElkOiAnJyxcbiAgICAgICAgcmVzdWx0c0NvdW50OiAwLFxuICAgICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGNhbmNlbCA9IGZhbHNlO1xuICAgIGxldCBjbGVhckF1dG9jb21wbGV0ZSA9IHRydWU7XG4gICAgbGV0IGNsZWFyU2VhcmNoQXNZb3VUeXBlID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICB9O1xuICB9LCBbdmFsdWVUcmltbWVkLCBvblNlYXJjaEFzWW91VHlwZSwgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXNdKTtcblxuICB1c2VTZWFyY2hUcmFja2luZyh7XG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgYmc9XCJzaGFkb3ctc2Vjb25kYXJ5XCJcbiAgICAgICAgaGVpZ2h0PVwiMTAwdmhcIlxuICAgICAgICBwb3NpdGlvbj1cImZpeGVkXCJcbiAgICAgICAgLy8gV2UgYWRkIDVyZW0gaGVyZSBpbiBjYXNlIHRoZXJlJ3Mgc29tZSBzb3J0IG9mIGJyYW5kZWQgYmFubmVyIGFib3ZlIHNlYXJjaFxuICAgICAgICAvLyBUaGUgc2VhcmNoIGFyZWEgaXMgbXVjaCB0YWxsZXIgdGhhbiA1cmVtIHNvIHRoaXMgaXMgYSBzYWZlIGFtb3VudCBvZiBwYWRkaW5nXG4gICAgICAgIHRvcD17YGNhbGMoJHt0aGVtZS5lbGVtZW50cy5oZWFkZXJIZWlnaHR9ICsgNXJlbSlgfVxuICAgICAgICB3aWR0aD17MX1cbiAgICAgIC8+XG4gICAgICA8Rm9jdXNUcmFwXG4gICAgICAgIG9uRXNjYXBlS2V5PXsoKSA9PiBjbG9zZVNlYXJjaCgpfVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249e3sgXzogJ2ZpeGVkJywgbWQ6ICdhYnNvbHV0ZScgfX1cbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIG1heEhlaWdodD17eyBfOiAnY2FsYygxMDB2aCAtIDYzcHgpJywgbWQ6ICdjYWxjKDEwMHZoIC0gODBweCknIH19XG4gICAgICAgICAgb3ZlcmZsb3c9XCJhdXRvXCJcbiAgICAgICAgICB6SW5kZXg9ezEwfSAvLyBlbnN1cmUgZHJvcGRvd24gaXMgYWJvdmUgdGhlIHBhZ2UgY29udGVudFxuICAgICAgICA+XG4gICAgICAgICAgPEJveCBib3JkZXI9XCJub25lXCIgd2lkdGg9XCJhdXRvXCI+XG4gICAgICAgICAgICA8UXVlcnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtcz1cImJhc2VsaW5lXCJcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktNjAwXCJcbiAgICAgICAgICAgICAgICBib3JkZXJTdHlsZUJvdHRvbT1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aEJvdHRvbT1cIjFweFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEZvcm1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbj1cIi9zZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZWFyY2gtZm9ybVwiXG4gICAgICAgICAgICAgICAgICBtbD17OH1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBib3JkZXI9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMjAsIG1kOiAyNiB9fVxuICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0PVwiYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaGVhZGVyLXNlYXJjaC1iYXJcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwicXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiBvbktleURvd24oZSl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Gb3JtPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICBpY29uPXtNaW5pRGVsZXRlSWNvbn1cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdmbG9hdGluZycsXG4gICAgICAgICAgICAgICAgICAgIG5hcnJvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NsZWFySW5wdXR9XG4gICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgIDwvUXVlcnlDb250YWluZXI+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPFN1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICB7dmFsdWVUcmltbWVkLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPEZsZXhCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGFzPVwidWxcIiBsaXN0U3R5bGU9XCJub25lXCIgcD17MH0+XG4gICAgICAgICAgICAgICAgICB7YXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgIGtleT17cy50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U2VtaWJvbGRTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBtYj17MiBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT17MTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17OH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBtcj17MTJ9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgeyhzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cImgyXCIgZm9udFNpemU9ezIwfSBtYj17MTZ9IG10PXsyNH0+XG4gICAgICAgICAgICAgICAgICAgICAgVG9wIHJlc3VsdHNcbiAgICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICA8RmxleEJveFxuICAgICAgICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgIGFzPVwidWxcIlxuICAgICAgICAgICAgICAgICAgICAgIGxpc3RTdHlsZT1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIHA9ezB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWFyY2hBc1lvdVR5cGVMb2FkZXI/LnNoaW1tZXJSb3dzLm1hcCgocikgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVMb2FkZXJMaSBrZXk9e3Iua2V5fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyLnNoaW1tZXJzLm1hcCgod29yZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2hpbW1lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MzB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHk9ezggYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3dvcmQua2V5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXt3b3JkLndpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk9XCJhY2NlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I9XCJ0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXt7IF86IDEwIGFzIDE2IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiYm9yZGVyLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcj17MX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPVwieGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweD17MTZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk9ezAuMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZUxvYWRlckxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lUmVzdWx0TGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMucXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH06JHtpLnRvU3RyaW5nKCl9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2godHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZSBzaXplPVwic21cIiB2YXJpYW50PVwidGVydGlhcnlcIiBtbD17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cy50eXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgICAgPC8+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+IHtcbiAgICBpbnB1dFJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgIHNlYXJjaFdvcmtlci5pbml0KCk7XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghdmFsdWVUcmltbWVkLmxlbmd0aCkge1xuICAgICAgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhudWxsKTtcbiAgICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgICAgcXVlcnk6ICcnLFxuICAgICAgICBzZWFyY2hJZDogJycsXG4gICAgICAgIHJlc3VsdHNDb3VudDogMCxcbiAgICAgICAgcXVlcnlMb2FkVGltZTogMCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBsZXQgY2xlYXJBdXRvY29tcGxldGUgPSB0cnVlO1xuICAgIGxldCBjbGVhclNlYXJjaEFzWW91VHlwZSA9IHRydWU7XG5cbiAgICBsZXQgc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5OiBOb2RlSlMuVGltZW91dDtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2l0aCBhIHNtYWxsIGRlbGF5IHdoZW4gdGhlcmUgYXJlIG5vIHJlc3VsdHNcbiAgICAgIGlmIChcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUgJiZcbiAgICAgICAgcmVzdWx0cy50b3AubGVuZ3RoID09PSAwICYmXG4gICAgICAgICFzZWFyY2hSZXN1bHRDbGlja2VkXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHF1ZXJ5TG9hZFRpbWUgfSA9IHJlc3VsdHM7XG4gICAgICAgIHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICghY2FuY2VsKSB7XG4gICAgICAgICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIDAsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICAgIGNsZWFyVGltZW91dChzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXkpO1xuICAgIH07XG4gIH0sIFtcbiAgICB2YWx1ZVRyaW1tZWQsXG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyxcbiAgXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICBiZz1cInNoYWRvdy1zZWNvbmRhcnlcIlxuICAgICAgICBoZWlnaHQ9XCIxMDB2aFwiXG4gICAgICAgIHBvc2l0aW9uPVwiZml4ZWRcIlxuICAgICAgICAvLyBXZSBhZGQgNXJlbSBoZXJlIGluIGNhc2UgdGhlcmUncyBzb21lIHNvcnQgb2YgYnJhbmRlZCBiYW5uZXIgYWJvdmUgc2VhcmNoXG4gICAgICAgIC8vIFRoZSBzZWFyY2ggYXJlYSBpcyBtdWNoIHRhbGxlciB0aGFuIDVyZW0gc28gdGhpcyBpcyBhIHNhZmUgYW1vdW50IG9mIHBhZGRpbmdcbiAgICAgICAgdG9wPXtgY2FsYygke3RoZW1lLmVsZW1lbnRzLmhlYWRlckhlaWdodH0gKyA1cmVtKWB9XG4gICAgICAgIHdpZHRoPXsxfVxuICAgICAgLz5cbiAgICAgIDxGb2N1c1RyYXBcbiAgICAgICAgb25Fc2NhcGVLZXk9e2Nsb3NlU2VhcmNofVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249e3sgXzogJ2ZpeGVkJywgbWQ6ICdhYnNvbHV0ZScgfX1cbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIG1heEhlaWdodD17eyBfOiAnY2FsYygxMDB2aCAtIDYzcHgpJywgbWQ6ICdjYWxjKDEwMHZoIC0gODBweCknIH19XG4gICAgICAgICAgb3ZlcmZsb3c9XCJhdXRvXCJcbiAgICAgICAgICB6SW5kZXg9ezEwfSAvLyBlbnN1cmUgZHJvcGRvd24gaXMgYWJvdmUgdGhlIHBhZ2UgY29udGVudFxuICAgICAgICA+XG4gICAgICAgICAgPEJveCBib3JkZXI9XCJub25lXCIgd2lkdGg9XCJhdXRvXCI+XG4gICAgICAgICAgICA8UXVlcnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtcz1cImJhc2VsaW5lXCJcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktNjAwXCJcbiAgICAgICAgICAgICAgICBib3JkZXJTdHlsZUJvdHRvbT1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aEJvdHRvbT1cIjFweFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEZvcm1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbj1cIi9zZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZWFyY2gtZm9ybVwiXG4gICAgICAgICAgICAgICAgICBtbD17OH1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBib3JkZXI9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMjAsIG1kOiAyNiB9fVxuICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0PVwiYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaGVhZGVyLXNlYXJjaC1iYXJcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwicXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiBvbktleURvd24oZSl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Gb3JtPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICBpY29uPXtNaW5pRGVsZXRlSWNvbn1cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdmbG9hdGluZycsXG4gICAgICAgICAgICAgICAgICAgIG5hcnJvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NsZWFySW5wdXR9XG4gICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgIDwvUXVlcnlDb250YWluZXI+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPFN1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICB7dmFsdWVUcmltbWVkLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPEZsZXhCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGFzPVwidWxcIiBsaXN0U3R5bGU9XCJub25lXCIgcD17MH0+XG4gICAgICAgICAgICAgICAgICB7YXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgIGtleT17cy50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW1pYm9sZFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1iPXsyIGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPXsxNH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXs4fVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1yPXsxMn1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICB7KHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0IGFzPVwiaDJcIiBmb250U2l6ZT17MjB9IG1iPXsxNn0gbXQ9ezI0fT5cbiAgICAgICAgICAgICAgICAgICAgICBUb3AgcmVzdWx0c1xuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbj1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJ1bFwiXG4gICAgICAgICAgICAgICAgICAgICAgbGlzdFN0eWxlPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcD17MH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNlYXJjaEFzWW91VHlwZUxvYWRlcj8uc2hpbW1lclJvd3MubWFwKChyKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZUxvYWRlckxpIGtleT17ci5rZXl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Iuc2hpbW1lcnMubWFwKCh3b3JkKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTaGltbWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXszMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweT17OCBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17d29yZC5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9e3dvcmQud2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseT1cImFjY2VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDb2xvcj1cInRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMTAgYXMgMTYgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I9XCJib3JkZXItc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyPXsxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM9XCJ4bFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB4PXsxNn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eT17MC4xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lTG9hZGVyTGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLm1hcCgocywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5xdWVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwibGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHMuc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgY29udGVudF9pZDogcy5jb250ZW50SWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZWx5UmVkaXJlY3Qocy51cmxQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhpZ2hsaWdodGVkVGV4dCBzdWdnZXN0aW9uPXtzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJhZGdlIHNpemU9XCJzbVwiIHZhcmlhbnQ9XCJ0ZXJ0aWFyeVwiIG1sPXsxMn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzLnR5cGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy50b3AubGVuZ3RoID09PSAwICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxCb3ggZm9udFNpemU9e3sgXzogMjAsIHNtOiAyNiB9fSBtdD17MH0gbWI9ezQ4fT5cbiAgICAgICAgICAgICAgICAgICAgICB7YFdlIGNvdWxkbid0IGZpbmQgYSBtYXRjaCBmb3IgYH1cbiAgICAgICAgICAgICAgICAgICAgICA8VGV4dCBmb250V2VpZ2h0PVwiYm9sZFwiPntgXCIke3ZhbHVlVHJpbW1lZH0uXCJgfTwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnIFRyeSBhbm90aGVyIGtleXdvcmQsIG9yIHNlZSB3aGF0IG91ciBtZW1iZXJzIGFyZSBsZWFybmluZy4nXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgPE1lbnUgYm9yZGVyPVwibm9uZVwiIHZhcmlhbnQ9XCJwb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPFBvcHVsYXJDb250ZW50IG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgIDxQb3B1bGFyU2VhcmNoZXNcbiAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2g9e25hdmlnYXRlVG9TZWFyY2h9XG4gICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgeyEhc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCAmJiAoXG4gICAgICAgICAgICAgIDxTdHJva2VCdXR0b25cbiAgICAgICAgICAgICAgICBteT17MTZ9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCd2aWV3X2FsbF9yZXN1bHRzJywge1xuICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFZpZXcgYWxsIHJlc3VsdHNcbiAgICAgICAgICAgICAgPC9TdHJva2VCdXR0b24+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPFF1aXpBbmRIZWxwQ2VudGVyTGlua3NcbiAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgIGhhbmRsZUNsb3NlRHJvcGRvd249e2Nsb3NlU2VhcmNofVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1N1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgIDwvQm94PlxuICAgICAgPC9Gb2N1c1RyYXA+XG4gICAgPC8+XG4gICk7XG59O1xuIl19 */");
84
83
  export const SemiboldSearchIcon = /*#__PURE__*/_styled(SearchIcon, {
85
84
  target: "e1e5b20r1",
86
85
  label: "SemiboldSearchIcon"
@@ -89,7 +88,7 @@ export const SemiboldSearchIcon = /*#__PURE__*/_styled(SearchIcon, {
89
88
  styles: "overflow:visible!important;circle,path{stroke-width:2px;}rect{transform:translate(-2px, -2px);height:calc(100% + 4px);width:calc(100% + 4px);}"
90
89
  } : {
91
90
  name: "138xhwl",
92
- 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFGb0QiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVNlYXJjaFRyYWNraW5nIH0gZnJvbSAnLi9ob29rcy91c2VTZWFyY2hUcmFja2luZyc7XG5pbXBvcnQgeyB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24gfSBmcm9tICcuL2hvb2tzL3VzZVVybENoYW5nZURldGVjdGlvbic7XG5pbXBvcnQgeyBRdWl6QW5kSGVscENlbnRlckxpbmtzIH0gZnJvbSAnLi9RdWl6QW5kSGVscENlbnRlckxpbmtzJztcbmltcG9ydCB7IHNhZmVseVJlZGlyZWN0IH0gZnJvbSAnLi9zYWZlbHlSZWRpcmVjdCc7XG5pbXBvcnQgeyB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQgfSBmcm9tICcuL1NlYXJjaFRyYWNraW5nUHJvdmlkZXInO1xuaW1wb3J0IHsgc2VhcmNoV29ya2VyIH0gZnJvbSAnLi9TZWFyY2hXb3JrZXInO1xuaW1wb3J0IHR5cGUge1xuICBBdXRvY29tcGxldGVTdWdnZXN0aW9uLFxuICBTZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxufSBmcm9tICcuL1NlYXJjaFdvcmtlci90eXBlcyc7XG5pbXBvcnQgeyBTZWFyY2hQYW5lUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgRm9ybSA9IEJveC53aXRoQ29tcG9uZW50KCdmb3JtJyk7XG5jb25zdCBJbnB1dCA9IEJveC53aXRoQ29tcG9uZW50KCdpbnB1dCcpO1xuXG5jb25zdCBRdWVyeUNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKShcbiAgY3NzKHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBwdDogMTYsXG4gICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgcHg6IHsgXzogMjQgfSxcbiAgfSlcbik7XG5cbmNvbnN0IFN1Z2dlc3Rpb25Db250YWluZXIgPSBzdHlsZWQoQ29udGVudENvbnRhaW5lcikoXG4gIGNzcyh7XG4gICAgcHQ6IDE2LFxuICAgIHBiOiB7IF86IDAsIG1kOiAyNCB9LFxuICAgIHB4OiB7IF86IDI0IH0sXG4gIH0pXG4pO1xuXG5jb25zdCBTdHlsZWRJbnB1dCA9IHN0eWxlZChJbnB1dCkoXG4gIGNzcyh7XG4gICAgb3V0bGluZTogYG5vbmVgLFxuICAgICcmOjpwbGFjZWhvbGRlcic6IHtcbiAgICAgIHRleHRDb2xvcjogdGhlbWUuY29sb3JzWyd0ZXh0LXNlY29uZGFyeSddIGFzIG5ldmVyLFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVSZXN1bHRMaSA9IHN0eWxlZChNZW51SXRlbSkoXG4gIGNzcyh7XG4gICAgcGw6IDAsXG4gICAgcHk6IDgsXG4gICAgZm9udFNpemU6IDE2LFxuICAgICcmOmZvY3VzLXZpc2libGU6YWZ0ZXInOiB7XG4gICAgICBsZWZ0OiAtNCxcbiAgICB9LFxuICB9KVxuKTtcblxuY29uc3QgSW5saW5lTG9hZGVyTGkgPSBzdHlsZWQubGkoXG4gIGNzcyh7XG4gICAgbGlzdFN0eWxlVHlwZTogJ25vbmUnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBnYXA6IDEyLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IFNlbWlib2xkU2VhcmNoSWNvbiA9IHN0eWxlZChTZWFyY2hJY29uKWBcbiAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDtcbiAgY2lyY2xlLFxuICBwYXRoIHtcbiAgICBzdHJva2Utd2lkdGg6IDJweDtcbiAgfVxuICByZWN0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMnB4LCAtMnB4KTtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDRweCk7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSArIDRweCk7XG4gIH1cbmA7XG5cbmNvbnN0IEVsbGlwc2lzQm94ID0gc3R5bGVkKEJveClgXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuYDtcblxuY29uc3QgSGlnaGxpZ2h0ZWRUZXh0ID0gKHtcbiAgc3VnZ2VzdGlvbjogeyB0aXRsZSwgc2VnbWVudHMgfSxcbn06IHtcbiAgc3VnZ2VzdGlvbjogQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbjtcbn0pID0+IHtcbiAgY29uc3QgbW9kZSA9IHVzZUN1cnJlbnRNb2RlKCk7XG4gIGNvbnN0IGhpZ2hsaWdodENvbG9yID0gbW9kZSA9PT0gJ2RhcmsnID8gJ2h5cGVyJyA6ICd5ZWxsb3cnO1xuXG4gIHJldHVybiAoXG4gICAgPEZsZXhCb3g+XG4gICAgICA8RWxsaXBzaXNCb3hcbiAgICAgICAgbWF4V2lkdGg9XCJjYWxjKDEwMHZ3IC0gMTI4cHgpXCJcbiAgICAgICAgd2hpdGVTcGFjZT1cInByZVwiXG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIG92ZXJmbG93PVwiaGlkZGVuXCJcbiAgICAgID5cbiAgICAgICAge3NlZ21lbnRzLm1hcCgoc2VnbWVudCwgaSkgPT4gKFxuICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICBrZXk9e2Ake3RpdGxlfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgbGluZUhlaWdodD1cInRpdGxlXCJcbiAgICAgICAgICAgIHsuLi4oc2VnbWVudC5oaWdobGlnaHRcbiAgICAgICAgICAgICAgPyB7IGJnOiBoaWdobGlnaHRDb2xvciwgZm9udFdlaWdodDogJ2JvbGQnIH1cbiAgICAgICAgICAgICAgOiB7fSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3NlZ21lbnQudmFsdWV9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApKX1cbiAgICAgIDwvRWxsaXBzaXNCb3g+XG4gICAgICA8VGV4dCBzY3JlZW5yZWFkZXI+e3RpdGxlfTwvVGV4dD5cbiAgICA8L0ZsZXhCb3g+XG4gICk7XG59O1xuXG50eXBlIFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHtcbiAgc2hpbW1lclJvd3M6IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICBzaGltbWVyczoge1xuICAgICAga2V5OiBzdHJpbmc7XG4gICAgICB3aWR0aDogbnVtYmVyO1xuICAgIH1bXTtcbiAgfVtdO1xufTtcblxubGV0IGxvYWRlcktleSA9IDA7XG5mdW5jdGlvbiBybmRMb2FkZXIoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wbHVzcGx1c1xuICBjb25zdCBrZXkgPSBsb2FkZXJLZXkrKztcbiAgY29uc3QgbG9hZGVyOiBTZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSB7IHNoaW1tZXJSb3dzOiBbXSB9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xuICAgIGNvbnN0IHJvdyA9IHtcbiAgICAgIGtleTogYCR7a2V5fToke2l9YCxcbiAgICAgIHNoaW1tZXJzOiBbXSBhcyB7IGtleTogc3RyaW5nOyB3aWR0aDogbnVtYmVyIH1bXSxcbiAgICB9O1xuICAgIGNvbnN0IHdvcmRzID0gTWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiAzKTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHdvcmRzOyBqKyspIHtcbiAgICAgIGNvbnN0IHdpZHRoID0gMTIgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiA5Nik7XG4gICAgICByb3cuc2hpbW1lcnMucHVzaCh7XG4gICAgICAgIGtleTogYCR7a2V5fToke2p9YCxcbiAgICAgICAgd2lkdGgsXG4gICAgICB9KTtcbiAgICB9XG4gICAgbG9hZGVyLnNoaW1tZXJSb3dzLnB1c2gocm93KTtcbiAgfVxuICByZXR1cm4gbG9hZGVyO1xufVxuXG5leHBvcnQgY29uc3QgU2VhcmNoUGFuZTogUmVhY3QuRkM8U2VhcmNoUGFuZVByb3BzPiA9ICh7XG4gIG9uU2VhcmNoLFxuICBvblRyYWNraW5nQ2xpY2ssXG4gIHNlYXJjaEJ1dHRvblJlZixcbiAgdG9nZ2xlU2VhcmNoLFxuICBvblNlYXJjaEFzWW91VHlwZSxcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFthdXRvQ29tcGxldGVTdWdnZXN0aW9ucywgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnNdID0gdXNlU3RhdGU8XG4gICAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbltdXG4gID4oW10pO1xuICBjb25zdCBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0cywgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0c10gPVxuICAgIHVzZVN0YXRlPFNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfCBudWxsPihudWxsKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG5cbiAgY29uc3QgaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzID0gb25TZWFyY2hBc1lvdVR5cGUgJiYgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcblxuICBjb25zdCBjbG9zZVNlYXJjaCA9IGFzeW5jIChmcm9tUmVzdWx0Q2xpY2sgPSBmYWxzZSkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHVzZXIgbWFkZSBhIHNlYXJjaCBhbmQgdGhlbiBjbG9zZWQgc2VhcmNoIHBhbmVcbiAgICBpZiAoXG4gICAgICBoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHMgJiZcbiAgICAgICFmcm9tUmVzdWx0Q2xpY2sgJiZcbiAgICAgIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRvZ2dsZVNlYXJjaCgpO1xuICAgIC8vIGFkZHMgYSBsaXR0bGUgZGVsYXkgYmV0d2VlbiBjbG9zaW5nIHRoZSBzZWFyY2ggcGFuZSBhbmQgZm9jdXNpbmcgb24gdGhlIGJ1dHRvblxuICAgIC8vIHRvIHByZXZlbnQgdGhlIHNlYXJjaCBwYW5lIGZyb20gaW1tZWRpYXRlbHkgb3BlbmluZyBhZ2FpblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHNlYXJjaEJ1dHRvblJlZiAmJiBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgc2VhcmNoQnV0dG9uUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZU9uRXNjSGFuZGxlcigoKSA9PiBjbG9zZVNlYXJjaCgpKTtcblxuICBjb25zdCBvbk1vdXNlRG93bk91dHNpZGUgPSAoeyB0YXJnZXQgfTogTW91c2VFdmVudCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZU91dHNpZGVDbGljayA9ICgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWRvY3VtZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXRlc3RpZD1cImhlYWRlci1zZWFyY2gtZHJvcGRvd25cIl0nKVxuICAgICAgICAgID8uY29udGFpbnModGFyZ2V0IGFzIEhUTUxFbGVtZW50KSAmJlxuICAgICAgICB0YXJnZXQgIT09IHNlYXJjaEJ1dHRvblJlZj8uY3VycmVudFxuICAgICAgKSB7XG4gICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICB9XG5cbiAgICAgIHRhcmdldD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gICAgfTtcblxuICAgIHRhcmdldD8uYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gIH07XG5cbiAgY29uc3QgbmF2aWdhdGVUb1NlYXJjaCA9IChzZWFyY2hUZXJtOiBzdHJpbmcsIGZyb21QcmV2U2VhcmNoPzogc3RyaW5nKSA9PiB7XG4gICAgb25TZWFyY2goc2VhcmNoVGVybSwgZnJvbVByZXZTZWFyY2gpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZTogUmVhY3QuQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgIHNldFZhbHVlKGV2dC50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdDogUmVhY3QuRm9ybUV2ZW50SGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB0aGUgdXNlciBzdWJtaXRzIHRoZSBmb3JtIHRvIGNhcHR1cmUgY29tcGxldGUgcXVlcnlcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgfTtcblxuICBjb25zdCBjbGVhcklucHV0ID0gKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCBiZWZvcmUgdXNlciBjbGVhcnMgaW5wdXRcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIHNldFZhbHVlKCcnKTtcbiAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgLy8gcmVzZXQgdGhlIGNvbnRleHQgd2l0aCBlbXB0eSB2YWx1ZXNcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICBxdWVyeTogJycsXG4gICAgICBzZWFyY2hJZDogJycsXG4gICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICAvLyBhbmQgdHJhY2sgc2VhcmNoIGV2ZW50IGlmIHVzZXIgbWFkZSBhIHNlYXJjaFxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiAoKSA9PiB7XG4gICAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgfVxuXG4gICAgICB0b2dnbGVTZWFyY2goKTtcbiAgICB9LFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlucHV0UmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgc2VhcmNoV29ya2VyLmluaXQoKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF2YWx1ZVRyaW1tZWQubGVuZ3RoKSB7XG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgICBxdWVyeTogJycsXG4gICAgICAgIHNlYXJjaElkOiAnJyxcbiAgICAgICAgcmVzdWx0c0NvdW50OiAwLFxuICAgICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGNhbmNlbCA9IGZhbHNlO1xuICAgIGxldCBjbGVhckF1dG9jb21wbGV0ZSA9IHRydWU7XG4gICAgbGV0IGNsZWFyU2VhcmNoQXNZb3VUeXBlID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICB9O1xuICB9LCBbdmFsdWVUcmltbWVkLCBvblNlYXJjaEFzWW91VHlwZSwgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXNdKTtcblxuICB1c2VTZWFyY2hUcmFja2luZyh7XG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgYmc9XCJzaGFkb3ctc2Vjb25kYXJ5XCJcbiAgICAgICAgaGVpZ2h0PVwiMTAwdmhcIlxuICAgICAgICBwb3NpdGlvbj1cImZpeGVkXCJcbiAgICAgICAgLy8gV2UgYWRkIDVyZW0gaGVyZSBpbiBjYXNlIHRoZXJlJ3Mgc29tZSBzb3J0IG9mIGJyYW5kZWQgYmFubmVyIGFib3ZlIHNlYXJjaFxuICAgICAgICAvLyBUaGUgc2VhcmNoIGFyZWEgaXMgbXVjaCB0YWxsZXIgdGhhbiA1cmVtIHNvIHRoaXMgaXMgYSBzYWZlIGFtb3VudCBvZiBwYWRkaW5nXG4gICAgICAgIHRvcD17YGNhbGMoJHt0aGVtZS5lbGVtZW50cy5oZWFkZXJIZWlnaHR9ICsgNXJlbSlgfVxuICAgICAgICB3aWR0aD17MX1cbiAgICAgIC8+XG4gICAgICA8Rm9jdXNUcmFwXG4gICAgICAgIG9uRXNjYXBlS2V5PXsoKSA9PiBjbG9zZVNlYXJjaCgpfVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249e3sgXzogJ2ZpeGVkJywgbWQ6ICdhYnNvbHV0ZScgfX1cbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIG1heEhlaWdodD17eyBfOiAnY2FsYygxMDB2aCAtIDYzcHgpJywgbWQ6ICdjYWxjKDEwMHZoIC0gODBweCknIH19XG4gICAgICAgICAgb3ZlcmZsb3c9XCJhdXRvXCJcbiAgICAgICAgICB6SW5kZXg9ezEwfSAvLyBlbnN1cmUgZHJvcGRvd24gaXMgYWJvdmUgdGhlIHBhZ2UgY29udGVudFxuICAgICAgICA+XG4gICAgICAgICAgPEJveCBib3JkZXI9XCJub25lXCIgd2lkdGg9XCJhdXRvXCI+XG4gICAgICAgICAgICA8UXVlcnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtcz1cImJhc2VsaW5lXCJcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktNjAwXCJcbiAgICAgICAgICAgICAgICBib3JkZXJTdHlsZUJvdHRvbT1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aEJvdHRvbT1cIjFweFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEZvcm1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbj1cIi9zZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZWFyY2gtZm9ybVwiXG4gICAgICAgICAgICAgICAgICBtbD17OH1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBib3JkZXI9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMjAsIG1kOiAyNiB9fVxuICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0PVwiYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaGVhZGVyLXNlYXJjaC1iYXJcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwicXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiBvbktleURvd24oZSl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Gb3JtPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICBpY29uPXtNaW5pRGVsZXRlSWNvbn1cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdmbG9hdGluZycsXG4gICAgICAgICAgICAgICAgICAgIG5hcnJvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NsZWFySW5wdXR9XG4gICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgIDwvUXVlcnlDb250YWluZXI+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPFN1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICB7dmFsdWVUcmltbWVkLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPEZsZXhCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGFzPVwidWxcIiBsaXN0U3R5bGU9XCJub25lXCIgcD17MH0+XG4gICAgICAgICAgICAgICAgICB7YXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgIGtleT17cy50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U2VtaWJvbGRTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBtYj17MiBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT17MTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17OH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBtcj17MTJ9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgeyhzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cImgyXCIgZm9udFNpemU9ezIwfSBtYj17MTZ9IG10PXsyNH0+XG4gICAgICAgICAgICAgICAgICAgICAgVG9wIHJlc3VsdHNcbiAgICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICA8RmxleEJveFxuICAgICAgICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgIGFzPVwidWxcIlxuICAgICAgICAgICAgICAgICAgICAgIGxpc3RTdHlsZT1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIHA9ezB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWFyY2hBc1lvdVR5cGVMb2FkZXI/LnNoaW1tZXJSb3dzLm1hcCgocikgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVMb2FkZXJMaSBrZXk9e3Iua2V5fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyLnNoaW1tZXJzLm1hcCgod29yZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2hpbW1lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MzB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHk9ezggYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3dvcmQua2V5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXt3b3JkLndpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk9XCJhY2NlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I9XCJ0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXt7IF86IDEwIGFzIDE2IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiYm9yZGVyLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcj17MX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPVwieGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweD17MTZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk9ezAuMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZUxvYWRlckxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lUmVzdWx0TGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMucXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH06JHtpLnRvU3RyaW5nKCl9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2godHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZSBzaXplPVwic21cIiB2YXJpYW50PVwidGVydGlhcnlcIiBtbD17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cy50eXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgICAgPC8+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+IHtcbiAgICBpbnB1dFJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgIHNlYXJjaFdvcmtlci5pbml0KCk7XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghdmFsdWVUcmltbWVkLmxlbmd0aCkge1xuICAgICAgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhudWxsKTtcbiAgICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgICAgcXVlcnk6ICcnLFxuICAgICAgICBzZWFyY2hJZDogJycsXG4gICAgICAgIHJlc3VsdHNDb3VudDogMCxcbiAgICAgICAgcXVlcnlMb2FkVGltZTogMCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBsZXQgY2xlYXJBdXRvY29tcGxldGUgPSB0cnVlO1xuICAgIGxldCBjbGVhclNlYXJjaEFzWW91VHlwZSA9IHRydWU7XG5cbiAgICBsZXQgc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5OiBOb2RlSlMuVGltZW91dDtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2l0aCBhIHNtYWxsIGRlbGF5IHdoZW4gdGhlcmUgYXJlIG5vIHJlc3VsdHNcbiAgICAgIGlmIChcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUgJiZcbiAgICAgICAgcmVzdWx0cy50b3AubGVuZ3RoID09PSAwICYmXG4gICAgICAgICFzZWFyY2hSZXN1bHRDbGlja2VkXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHF1ZXJ5TG9hZFRpbWUgfSA9IHJlc3VsdHM7XG4gICAgICAgIHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICghY2FuY2VsKSB7XG4gICAgICAgICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIDAsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICAgIGNsZWFyVGltZW91dChzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXkpO1xuICAgIH07XG4gIH0sIFtcbiAgICB2YWx1ZVRyaW1tZWQsXG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyxcbiAgXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICBiZz1cInNoYWRvdy1zZWNvbmRhcnlcIlxuICAgICAgICBoZWlnaHQ9XCIxMDB2aFwiXG4gICAgICAgIHBvc2l0aW9uPVwiZml4ZWRcIlxuICAgICAgICAvLyBXZSBhZGQgNXJlbSBoZXJlIGluIGNhc2UgdGhlcmUncyBzb21lIHNvcnQgb2YgYnJhbmRlZCBiYW5uZXIgYWJvdmUgc2VhcmNoXG4gICAgICAgIC8vIFRoZSBzZWFyY2ggYXJlYSBpcyBtdWNoIHRhbGxlciB0aGFuIDVyZW0gc28gdGhpcyBpcyBhIHNhZmUgYW1vdW50IG9mIHBhZGRpbmdcbiAgICAgICAgdG9wPXtgY2FsYygke3RoZW1lLmVsZW1lbnRzLmhlYWRlckhlaWdodH0gKyA1cmVtKWB9XG4gICAgICAgIHdpZHRoPXsxfVxuICAgICAgLz5cbiAgICAgIDxGb2N1c1RyYXBcbiAgICAgICAgb25Fc2NhcGVLZXk9e2Nsb3NlU2VhcmNofVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249e3sgXzogJ2ZpeGVkJywgbWQ6ICdhYnNvbHV0ZScgfX1cbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIG1heEhlaWdodD17eyBfOiAnY2FsYygxMDB2aCAtIDYzcHgpJywgbWQ6ICdjYWxjKDEwMHZoIC0gODBweCknIH19XG4gICAgICAgICAgb3ZlcmZsb3c9XCJhdXRvXCJcbiAgICAgICAgICB6SW5kZXg9ezEwfSAvLyBlbnN1cmUgZHJvcGRvd24gaXMgYWJvdmUgdGhlIHBhZ2UgY29udGVudFxuICAgICAgICA+XG4gICAgICAgICAgPEJveCBib3JkZXI9XCJub25lXCIgd2lkdGg9XCJhdXRvXCI+XG4gICAgICAgICAgICA8UXVlcnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtcz1cImJhc2VsaW5lXCJcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktNjAwXCJcbiAgICAgICAgICAgICAgICBib3JkZXJTdHlsZUJvdHRvbT1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aEJvdHRvbT1cIjFweFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEZvcm1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbj1cIi9zZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZWFyY2gtZm9ybVwiXG4gICAgICAgICAgICAgICAgICBtbD17OH1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBib3JkZXI9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMjAsIG1kOiAyNiB9fVxuICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0PVwiYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaGVhZGVyLXNlYXJjaC1iYXJcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwicXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiBvbktleURvd24oZSl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Gb3JtPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICBpY29uPXtNaW5pRGVsZXRlSWNvbn1cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdmbG9hdGluZycsXG4gICAgICAgICAgICAgICAgICAgIG5hcnJvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NsZWFySW5wdXR9XG4gICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgIDwvUXVlcnlDb250YWluZXI+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPFN1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICB7dmFsdWVUcmltbWVkLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPEZsZXhCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGFzPVwidWxcIiBsaXN0U3R5bGU9XCJub25lXCIgcD17MH0+XG4gICAgICAgICAgICAgICAgICB7YXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgIGtleT17cy50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW1pYm9sZFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1iPXsyIGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPXsxNH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXs4fVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1yPXsxMn1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICB7KHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0IGFzPVwiaDJcIiBmb250U2l6ZT17MjB9IG1iPXsxNn0gbXQ9ezI0fT5cbiAgICAgICAgICAgICAgICAgICAgICBUb3AgcmVzdWx0c1xuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbj1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJ1bFwiXG4gICAgICAgICAgICAgICAgICAgICAgbGlzdFN0eWxlPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcD17MH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNlYXJjaEFzWW91VHlwZUxvYWRlcj8uc2hpbW1lclJvd3MubWFwKChyKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZUxvYWRlckxpIGtleT17ci5rZXl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Iuc2hpbW1lcnMubWFwKCh3b3JkKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTaGltbWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXszMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweT17OCBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17d29yZC5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9e3dvcmQud2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseT1cImFjY2VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDb2xvcj1cInRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMTAgYXMgMTYgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I9XCJib3JkZXItc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyPXsxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM9XCJ4bFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB4PXsxNn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eT17MC4xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lTG9hZGVyTGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLm1hcCgocywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5xdWVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwibGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHMuc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgY29udGVudF9pZDogcy5jb250ZW50SWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZWx5UmVkaXJlY3Qocy51cmxQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhpZ2hsaWdodGVkVGV4dCBzdWdnZXN0aW9uPXtzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJhZGdlIHNpemU9XCJzbVwiIHZhcmlhbnQ9XCJ0ZXJ0aWFyeVwiIG1sPXsxMn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzLnR5cGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy50b3AubGVuZ3RoID09PSAwICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxCb3ggZm9udFNpemU9e3sgXzogMjAsIHNtOiAyNiB9fSBtdD17MH0gbWI9ezQ4fT5cbiAgICAgICAgICAgICAgICAgICAgICB7YFdlIGNvdWxkbid0IGZpbmQgYSBtYXRjaCBmb3IgYH1cbiAgICAgICAgICAgICAgICAgICAgICA8VGV4dCBmb250V2VpZ2h0PVwiYm9sZFwiPntgXCIke3ZhbHVlVHJpbW1lZH0uXCJgfTwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnIFRyeSBhbm90aGVyIGtleXdvcmQsIG9yIHNlZSB3aGF0IG91ciBtZW1iZXJzIGFyZSBsZWFybmluZy4nXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgPE1lbnUgYm9yZGVyPVwibm9uZVwiIHZhcmlhbnQ9XCJwb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPFBvcHVsYXJDb250ZW50IG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgIDxQb3B1bGFyU2VhcmNoZXNcbiAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2g9e25hdmlnYXRlVG9TZWFyY2h9XG4gICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgeyEhc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCAmJiAoXG4gICAgICAgICAgICAgIDxTdHJva2VCdXR0b25cbiAgICAgICAgICAgICAgICBteT17MTZ9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCd2aWV3X2FsbF9yZXN1bHRzJywge1xuICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFZpZXcgYWxsIHJlc3VsdHNcbiAgICAgICAgICAgICAgPC9TdHJva2VCdXR0b24+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPFF1aXpBbmRIZWxwQ2VudGVyTGlua3NcbiAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgIGhhbmRsZUNsb3NlRHJvcGRvd249e2Nsb3NlU2VhcmNofVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1N1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgIDwvQm94PlxuICAgICAgPC9Gb2N1c1RyYXA+XG4gICAgPC8+XG4gICk7XG59O1xuIl19 */",
93
92
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
94
93
  });
95
94
  const EllipsisBox = /*#__PURE__*/_styled(Box, {
@@ -100,7 +99,7 @@ const EllipsisBox = /*#__PURE__*/_styled(Box, {
100
99
  styles: "text-overflow:ellipsis"
101
100
  } : {
102
101
  name: "rkw162",
103
- styles: "text-overflow:ellipsis/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtHK0IiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVNlYXJjaFRyYWNraW5nIH0gZnJvbSAnLi9ob29rcy91c2VTZWFyY2hUcmFja2luZyc7XG5pbXBvcnQgeyB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24gfSBmcm9tICcuL2hvb2tzL3VzZVVybENoYW5nZURldGVjdGlvbic7XG5pbXBvcnQgeyBRdWl6QW5kSGVscENlbnRlckxpbmtzIH0gZnJvbSAnLi9RdWl6QW5kSGVscENlbnRlckxpbmtzJztcbmltcG9ydCB7IHNhZmVseVJlZGlyZWN0IH0gZnJvbSAnLi9zYWZlbHlSZWRpcmVjdCc7XG5pbXBvcnQgeyB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQgfSBmcm9tICcuL1NlYXJjaFRyYWNraW5nUHJvdmlkZXInO1xuaW1wb3J0IHsgc2VhcmNoV29ya2VyIH0gZnJvbSAnLi9TZWFyY2hXb3JrZXInO1xuaW1wb3J0IHR5cGUge1xuICBBdXRvY29tcGxldGVTdWdnZXN0aW9uLFxuICBTZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxufSBmcm9tICcuL1NlYXJjaFdvcmtlci90eXBlcyc7XG5pbXBvcnQgeyBTZWFyY2hQYW5lUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgRm9ybSA9IEJveC53aXRoQ29tcG9uZW50KCdmb3JtJyk7XG5jb25zdCBJbnB1dCA9IEJveC53aXRoQ29tcG9uZW50KCdpbnB1dCcpO1xuXG5jb25zdCBRdWVyeUNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKShcbiAgY3NzKHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBwdDogMTYsXG4gICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgcHg6IHsgXzogMjQgfSxcbiAgfSlcbik7XG5cbmNvbnN0IFN1Z2dlc3Rpb25Db250YWluZXIgPSBzdHlsZWQoQ29udGVudENvbnRhaW5lcikoXG4gIGNzcyh7XG4gICAgcHQ6IDE2LFxuICAgIHBiOiB7IF86IDAsIG1kOiAyNCB9LFxuICAgIHB4OiB7IF86IDI0IH0sXG4gIH0pXG4pO1xuXG5jb25zdCBTdHlsZWRJbnB1dCA9IHN0eWxlZChJbnB1dCkoXG4gIGNzcyh7XG4gICAgb3V0bGluZTogYG5vbmVgLFxuICAgICcmOjpwbGFjZWhvbGRlcic6IHtcbiAgICAgIHRleHRDb2xvcjogdGhlbWUuY29sb3JzWyd0ZXh0LXNlY29uZGFyeSddIGFzIG5ldmVyLFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVSZXN1bHRMaSA9IHN0eWxlZChNZW51SXRlbSkoXG4gIGNzcyh7XG4gICAgcGw6IDAsXG4gICAgcHk6IDgsXG4gICAgZm9udFNpemU6IDE2LFxuICAgICcmOmZvY3VzLXZpc2libGU6YWZ0ZXInOiB7XG4gICAgICBsZWZ0OiAtNCxcbiAgICB9LFxuICB9KVxuKTtcblxuY29uc3QgSW5saW5lTG9hZGVyTGkgPSBzdHlsZWQubGkoXG4gIGNzcyh7XG4gICAgbGlzdFN0eWxlVHlwZTogJ25vbmUnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBnYXA6IDEyLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IFNlbWlib2xkU2VhcmNoSWNvbiA9IHN0eWxlZChTZWFyY2hJY29uKWBcbiAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDtcbiAgY2lyY2xlLFxuICBwYXRoIHtcbiAgICBzdHJva2Utd2lkdGg6IDJweDtcbiAgfVxuICByZWN0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMnB4LCAtMnB4KTtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDRweCk7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSArIDRweCk7XG4gIH1cbmA7XG5cbmNvbnN0IEVsbGlwc2lzQm94ID0gc3R5bGVkKEJveClgXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuYDtcblxuY29uc3QgSGlnaGxpZ2h0ZWRUZXh0ID0gKHtcbiAgc3VnZ2VzdGlvbjogeyB0aXRsZSwgc2VnbWVudHMgfSxcbn06IHtcbiAgc3VnZ2VzdGlvbjogQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbjtcbn0pID0+IHtcbiAgY29uc3QgbW9kZSA9IHVzZUN1cnJlbnRNb2RlKCk7XG4gIGNvbnN0IGhpZ2hsaWdodENvbG9yID0gbW9kZSA9PT0gJ2RhcmsnID8gJ2h5cGVyJyA6ICd5ZWxsb3cnO1xuXG4gIHJldHVybiAoXG4gICAgPEZsZXhCb3g+XG4gICAgICA8RWxsaXBzaXNCb3hcbiAgICAgICAgbWF4V2lkdGg9XCJjYWxjKDEwMHZ3IC0gMTI4cHgpXCJcbiAgICAgICAgd2hpdGVTcGFjZT1cInByZVwiXG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIG92ZXJmbG93PVwiaGlkZGVuXCJcbiAgICAgID5cbiAgICAgICAge3NlZ21lbnRzLm1hcCgoc2VnbWVudCwgaSkgPT4gKFxuICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICBrZXk9e2Ake3RpdGxlfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgbGluZUhlaWdodD1cInRpdGxlXCJcbiAgICAgICAgICAgIHsuLi4oc2VnbWVudC5oaWdobGlnaHRcbiAgICAgICAgICAgICAgPyB7IGJnOiBoaWdobGlnaHRDb2xvciwgZm9udFdlaWdodDogJ2JvbGQnIH1cbiAgICAgICAgICAgICAgOiB7fSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3NlZ21lbnQudmFsdWV9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApKX1cbiAgICAgIDwvRWxsaXBzaXNCb3g+XG4gICAgICA8VGV4dCBzY3JlZW5yZWFkZXI+e3RpdGxlfTwvVGV4dD5cbiAgICA8L0ZsZXhCb3g+XG4gICk7XG59O1xuXG50eXBlIFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHtcbiAgc2hpbW1lclJvd3M6IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICBzaGltbWVyczoge1xuICAgICAga2V5OiBzdHJpbmc7XG4gICAgICB3aWR0aDogbnVtYmVyO1xuICAgIH1bXTtcbiAgfVtdO1xufTtcblxubGV0IGxvYWRlcktleSA9IDA7XG5mdW5jdGlvbiBybmRMb2FkZXIoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wbHVzcGx1c1xuICBjb25zdCBrZXkgPSBsb2FkZXJLZXkrKztcbiAgY29uc3QgbG9hZGVyOiBTZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSB7IHNoaW1tZXJSb3dzOiBbXSB9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xuICAgIGNvbnN0IHJvdyA9IHtcbiAgICAgIGtleTogYCR7a2V5fToke2l9YCxcbiAgICAgIHNoaW1tZXJzOiBbXSBhcyB7IGtleTogc3RyaW5nOyB3aWR0aDogbnVtYmVyIH1bXSxcbiAgICB9O1xuICAgIGNvbnN0IHdvcmRzID0gTWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiAzKTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHdvcmRzOyBqKyspIHtcbiAgICAgIGNvbnN0IHdpZHRoID0gMTIgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiA5Nik7XG4gICAgICByb3cuc2hpbW1lcnMucHVzaCh7XG4gICAgICAgIGtleTogYCR7a2V5fToke2p9YCxcbiAgICAgICAgd2lkdGgsXG4gICAgICB9KTtcbiAgICB9XG4gICAgbG9hZGVyLnNoaW1tZXJSb3dzLnB1c2gocm93KTtcbiAgfVxuICByZXR1cm4gbG9hZGVyO1xufVxuXG5leHBvcnQgY29uc3QgU2VhcmNoUGFuZTogUmVhY3QuRkM8U2VhcmNoUGFuZVByb3BzPiA9ICh7XG4gIG9uU2VhcmNoLFxuICBvblRyYWNraW5nQ2xpY2ssXG4gIHNlYXJjaEJ1dHRvblJlZixcbiAgdG9nZ2xlU2VhcmNoLFxuICBvblNlYXJjaEFzWW91VHlwZSxcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFthdXRvQ29tcGxldGVTdWdnZXN0aW9ucywgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnNdID0gdXNlU3RhdGU8XG4gICAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbltdXG4gID4oW10pO1xuICBjb25zdCBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0cywgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0c10gPVxuICAgIHVzZVN0YXRlPFNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfCBudWxsPihudWxsKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG5cbiAgY29uc3QgaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzID0gb25TZWFyY2hBc1lvdVR5cGUgJiYgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcblxuICBjb25zdCBjbG9zZVNlYXJjaCA9IGFzeW5jIChmcm9tUmVzdWx0Q2xpY2sgPSBmYWxzZSkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHVzZXIgbWFkZSBhIHNlYXJjaCBhbmQgdGhlbiBjbG9zZWQgc2VhcmNoIHBhbmVcbiAgICBpZiAoXG4gICAgICBoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHMgJiZcbiAgICAgICFmcm9tUmVzdWx0Q2xpY2sgJiZcbiAgICAgIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRvZ2dsZVNlYXJjaCgpO1xuICAgIC8vIGFkZHMgYSBsaXR0bGUgZGVsYXkgYmV0d2VlbiBjbG9zaW5nIHRoZSBzZWFyY2ggcGFuZSBhbmQgZm9jdXNpbmcgb24gdGhlIGJ1dHRvblxuICAgIC8vIHRvIHByZXZlbnQgdGhlIHNlYXJjaCBwYW5lIGZyb20gaW1tZWRpYXRlbHkgb3BlbmluZyBhZ2FpblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHNlYXJjaEJ1dHRvblJlZiAmJiBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgc2VhcmNoQnV0dG9uUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZU9uRXNjSGFuZGxlcigoKSA9PiBjbG9zZVNlYXJjaCgpKTtcblxuICBjb25zdCBvbk1vdXNlRG93bk91dHNpZGUgPSAoeyB0YXJnZXQgfTogTW91c2VFdmVudCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZU91dHNpZGVDbGljayA9ICgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWRvY3VtZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXRlc3RpZD1cImhlYWRlci1zZWFyY2gtZHJvcGRvd25cIl0nKVxuICAgICAgICAgID8uY29udGFpbnModGFyZ2V0IGFzIEhUTUxFbGVtZW50KSAmJlxuICAgICAgICB0YXJnZXQgIT09IHNlYXJjaEJ1dHRvblJlZj8uY3VycmVudFxuICAgICAgKSB7XG4gICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICB9XG5cbiAgICAgIHRhcmdldD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gICAgfTtcblxuICAgIHRhcmdldD8uYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gIH07XG5cbiAgY29uc3QgbmF2aWdhdGVUb1NlYXJjaCA9IChzZWFyY2hUZXJtOiBzdHJpbmcsIGZyb21QcmV2U2VhcmNoPzogc3RyaW5nKSA9PiB7XG4gICAgb25TZWFyY2goc2VhcmNoVGVybSwgZnJvbVByZXZTZWFyY2gpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZTogUmVhY3QuQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgIHNldFZhbHVlKGV2dC50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdDogUmVhY3QuRm9ybUV2ZW50SGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB0aGUgdXNlciBzdWJtaXRzIHRoZSBmb3JtIHRvIGNhcHR1cmUgY29tcGxldGUgcXVlcnlcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgfTtcblxuICBjb25zdCBjbGVhcklucHV0ID0gKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCBiZWZvcmUgdXNlciBjbGVhcnMgaW5wdXRcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIHNldFZhbHVlKCcnKTtcbiAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgLy8gcmVzZXQgdGhlIGNvbnRleHQgd2l0aCBlbXB0eSB2YWx1ZXNcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICBxdWVyeTogJycsXG4gICAgICBzZWFyY2hJZDogJycsXG4gICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICAvLyBhbmQgdHJhY2sgc2VhcmNoIGV2ZW50IGlmIHVzZXIgbWFkZSBhIHNlYXJjaFxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiAoKSA9PiB7XG4gICAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgfVxuXG4gICAgICB0b2dnbGVTZWFyY2goKTtcbiAgICB9LFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlucHV0UmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgc2VhcmNoV29ya2VyLmluaXQoKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF2YWx1ZVRyaW1tZWQubGVuZ3RoKSB7XG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgICBxdWVyeTogJycsXG4gICAgICAgIHNlYXJjaElkOiAnJyxcbiAgICAgICAgcmVzdWx0c0NvdW50OiAwLFxuICAgICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGNhbmNlbCA9IGZhbHNlO1xuICAgIGxldCBjbGVhckF1dG9jb21wbGV0ZSA9IHRydWU7XG4gICAgbGV0IGNsZWFyU2VhcmNoQXNZb3VUeXBlID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICB9O1xuICB9LCBbdmFsdWVUcmltbWVkLCBvblNlYXJjaEFzWW91VHlwZSwgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXNdKTtcblxuICB1c2VTZWFyY2hUcmFja2luZyh7XG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgYmc9XCJzaGFkb3ctc2Vjb25kYXJ5XCJcbiAgICAgICAgaGVpZ2h0PVwiMTAwdmhcIlxuICAgICAgICBwb3NpdGlvbj1cImZpeGVkXCJcbiAgICAgICAgLy8gV2UgYWRkIDVyZW0gaGVyZSBpbiBjYXNlIHRoZXJlJ3Mgc29tZSBzb3J0IG9mIGJyYW5kZWQgYmFubmVyIGFib3ZlIHNlYXJjaFxuICAgICAgICAvLyBUaGUgc2VhcmNoIGFyZWEgaXMgbXVjaCB0YWxsZXIgdGhhbiA1cmVtIHNvIHRoaXMgaXMgYSBzYWZlIGFtb3VudCBvZiBwYWRkaW5nXG4gICAgICAgIHRvcD17YGNhbGMoJHt0aGVtZS5lbGVtZW50cy5oZWFkZXJIZWlnaHR9ICsgNXJlbSlgfVxuICAgICAgICB3aWR0aD17MX1cbiAgICAgIC8+XG4gICAgICA8Rm9jdXNUcmFwXG4gICAgICAgIG9uRXNjYXBlS2V5PXsoKSA9PiBjbG9zZVNlYXJjaCgpfVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249e3sgXzogJ2ZpeGVkJywgbWQ6ICdhYnNvbHV0ZScgfX1cbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIG1heEhlaWdodD17eyBfOiAnY2FsYygxMDB2aCAtIDYzcHgpJywgbWQ6ICdjYWxjKDEwMHZoIC0gODBweCknIH19XG4gICAgICAgICAgb3ZlcmZsb3c9XCJhdXRvXCJcbiAgICAgICAgICB6SW5kZXg9ezEwfSAvLyBlbnN1cmUgZHJvcGRvd24gaXMgYWJvdmUgdGhlIHBhZ2UgY29udGVudFxuICAgICAgICA+XG4gICAgICAgICAgPEJveCBib3JkZXI9XCJub25lXCIgd2lkdGg9XCJhdXRvXCI+XG4gICAgICAgICAgICA8UXVlcnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtcz1cImJhc2VsaW5lXCJcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktNjAwXCJcbiAgICAgICAgICAgICAgICBib3JkZXJTdHlsZUJvdHRvbT1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aEJvdHRvbT1cIjFweFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEZvcm1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbj1cIi9zZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZWFyY2gtZm9ybVwiXG4gICAgICAgICAgICAgICAgICBtbD17OH1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBib3JkZXI9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMjAsIG1kOiAyNiB9fVxuICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0PVwiYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaGVhZGVyLXNlYXJjaC1iYXJcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwicXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiBvbktleURvd24oZSl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Gb3JtPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICBpY29uPXtNaW5pRGVsZXRlSWNvbn1cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdmbG9hdGluZycsXG4gICAgICAgICAgICAgICAgICAgIG5hcnJvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NsZWFySW5wdXR9XG4gICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgIDwvUXVlcnlDb250YWluZXI+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPFN1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICB7dmFsdWVUcmltbWVkLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPEZsZXhCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGFzPVwidWxcIiBsaXN0U3R5bGU9XCJub25lXCIgcD17MH0+XG4gICAgICAgICAgICAgICAgICB7YXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgIGtleT17cy50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U2VtaWJvbGRTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBtYj17MiBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT17MTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17OH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBtcj17MTJ9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgeyhzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cImgyXCIgZm9udFNpemU9ezIwfSBtYj17MTZ9IG10PXsyNH0+XG4gICAgICAgICAgICAgICAgICAgICAgVG9wIHJlc3VsdHNcbiAgICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICA8RmxleEJveFxuICAgICAgICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgIGFzPVwidWxcIlxuICAgICAgICAgICAgICAgICAgICAgIGxpc3RTdHlsZT1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIHA9ezB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWFyY2hBc1lvdVR5cGVMb2FkZXI/LnNoaW1tZXJSb3dzLm1hcCgocikgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVMb2FkZXJMaSBrZXk9e3Iua2V5fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyLnNoaW1tZXJzLm1hcCgod29yZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2hpbW1lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MzB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHk9ezggYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3dvcmQua2V5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXt3b3JkLndpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk9XCJhY2NlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I9XCJ0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXt7IF86IDEwIGFzIDE2IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiYm9yZGVyLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcj17MX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPVwieGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweD17MTZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk9ezAuMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZUxvYWRlckxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lUmVzdWx0TGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMucXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH06JHtpLnRvU3RyaW5nKCl9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2godHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZSBzaXplPVwic21cIiB2YXJpYW50PVwidGVydGlhcnlcIiBtbD17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cy50eXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgICAgPC8+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+IHtcbiAgICBpbnB1dFJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgIHNlYXJjaFdvcmtlci5pbml0KCk7XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghdmFsdWVUcmltbWVkLmxlbmd0aCkge1xuICAgICAgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhudWxsKTtcbiAgICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgICAgcXVlcnk6ICcnLFxuICAgICAgICBzZWFyY2hJZDogJycsXG4gICAgICAgIHJlc3VsdHNDb3VudDogMCxcbiAgICAgICAgcXVlcnlMb2FkVGltZTogMCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBsZXQgY2xlYXJBdXRvY29tcGxldGUgPSB0cnVlO1xuICAgIGxldCBjbGVhclNlYXJjaEFzWW91VHlwZSA9IHRydWU7XG5cbiAgICBsZXQgc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5OiBOb2RlSlMuVGltZW91dDtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2l0aCBhIHNtYWxsIGRlbGF5IHdoZW4gdGhlcmUgYXJlIG5vIHJlc3VsdHNcbiAgICAgIGlmIChcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUgJiZcbiAgICAgICAgcmVzdWx0cy50b3AubGVuZ3RoID09PSAwICYmXG4gICAgICAgICFzZWFyY2hSZXN1bHRDbGlja2VkXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHF1ZXJ5TG9hZFRpbWUgfSA9IHJlc3VsdHM7XG4gICAgICAgIHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICghY2FuY2VsKSB7XG4gICAgICAgICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIDAsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICAgIGNsZWFyVGltZW91dChzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXkpO1xuICAgIH07XG4gIH0sIFtcbiAgICB2YWx1ZVRyaW1tZWQsXG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyxcbiAgXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICBiZz1cInNoYWRvdy1zZWNvbmRhcnlcIlxuICAgICAgICBoZWlnaHQ9XCIxMDB2aFwiXG4gICAgICAgIHBvc2l0aW9uPVwiZml4ZWRcIlxuICAgICAgICAvLyBXZSBhZGQgNXJlbSBoZXJlIGluIGNhc2UgdGhlcmUncyBzb21lIHNvcnQgb2YgYnJhbmRlZCBiYW5uZXIgYWJvdmUgc2VhcmNoXG4gICAgICAgIC8vIFRoZSBzZWFyY2ggYXJlYSBpcyBtdWNoIHRhbGxlciB0aGFuIDVyZW0gc28gdGhpcyBpcyBhIHNhZmUgYW1vdW50IG9mIHBhZGRpbmdcbiAgICAgICAgdG9wPXtgY2FsYygke3RoZW1lLmVsZW1lbnRzLmhlYWRlckhlaWdodH0gKyA1cmVtKWB9XG4gICAgICAgIHdpZHRoPXsxfVxuICAgICAgLz5cbiAgICAgIDxGb2N1c1RyYXBcbiAgICAgICAgb25Fc2NhcGVLZXk9e2Nsb3NlU2VhcmNofVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249e3sgXzogJ2ZpeGVkJywgbWQ6ICdhYnNvbHV0ZScgfX1cbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIG1heEhlaWdodD17eyBfOiAnY2FsYygxMDB2aCAtIDYzcHgpJywgbWQ6ICdjYWxjKDEwMHZoIC0gODBweCknIH19XG4gICAgICAgICAgb3ZlcmZsb3c9XCJhdXRvXCJcbiAgICAgICAgICB6SW5kZXg9ezEwfSAvLyBlbnN1cmUgZHJvcGRvd24gaXMgYWJvdmUgdGhlIHBhZ2UgY29udGVudFxuICAgICAgICA+XG4gICAgICAgICAgPEJveCBib3JkZXI9XCJub25lXCIgd2lkdGg9XCJhdXRvXCI+XG4gICAgICAgICAgICA8UXVlcnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtcz1cImJhc2VsaW5lXCJcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktNjAwXCJcbiAgICAgICAgICAgICAgICBib3JkZXJTdHlsZUJvdHRvbT1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aEJvdHRvbT1cIjFweFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEZvcm1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbj1cIi9zZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZWFyY2gtZm9ybVwiXG4gICAgICAgICAgICAgICAgICBtbD17OH1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBib3JkZXI9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMjAsIG1kOiAyNiB9fVxuICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0PVwiYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaGVhZGVyLXNlYXJjaC1iYXJcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwicXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiBvbktleURvd24oZSl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Gb3JtPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICBpY29uPXtNaW5pRGVsZXRlSWNvbn1cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdmbG9hdGluZycsXG4gICAgICAgICAgICAgICAgICAgIG5hcnJvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NsZWFySW5wdXR9XG4gICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgIDwvUXVlcnlDb250YWluZXI+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPFN1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICB7dmFsdWVUcmltbWVkLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPEZsZXhCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGFzPVwidWxcIiBsaXN0U3R5bGU9XCJub25lXCIgcD17MH0+XG4gICAgICAgICAgICAgICAgICB7YXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgIGtleT17cy50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW1pYm9sZFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1iPXsyIGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPXsxNH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXs4fVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1yPXsxMn1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICB7KHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0IGFzPVwiaDJcIiBmb250U2l6ZT17MjB9IG1iPXsxNn0gbXQ9ezI0fT5cbiAgICAgICAgICAgICAgICAgICAgICBUb3AgcmVzdWx0c1xuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbj1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJ1bFwiXG4gICAgICAgICAgICAgICAgICAgICAgbGlzdFN0eWxlPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcD17MH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNlYXJjaEFzWW91VHlwZUxvYWRlcj8uc2hpbW1lclJvd3MubWFwKChyKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZUxvYWRlckxpIGtleT17ci5rZXl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Iuc2hpbW1lcnMubWFwKCh3b3JkKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTaGltbWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXszMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweT17OCBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17d29yZC5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9e3dvcmQud2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseT1cImFjY2VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDb2xvcj1cInRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMTAgYXMgMTYgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I9XCJib3JkZXItc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyPXsxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM9XCJ4bFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB4PXsxNn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eT17MC4xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lTG9hZGVyTGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLm1hcCgocywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5xdWVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwibGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHMuc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgY29udGVudF9pZDogcy5jb250ZW50SWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZWx5UmVkaXJlY3Qocy51cmxQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhpZ2hsaWdodGVkVGV4dCBzdWdnZXN0aW9uPXtzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJhZGdlIHNpemU9XCJzbVwiIHZhcmlhbnQ9XCJ0ZXJ0aWFyeVwiIG1sPXsxMn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzLnR5cGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy50b3AubGVuZ3RoID09PSAwICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxCb3ggZm9udFNpemU9e3sgXzogMjAsIHNtOiAyNiB9fSBtdD17MH0gbWI9ezQ4fT5cbiAgICAgICAgICAgICAgICAgICAgICB7YFdlIGNvdWxkbid0IGZpbmQgYSBtYXRjaCBmb3IgYH1cbiAgICAgICAgICAgICAgICAgICAgICA8VGV4dCBmb250V2VpZ2h0PVwiYm9sZFwiPntgXCIke3ZhbHVlVHJpbW1lZH0uXCJgfTwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnIFRyeSBhbm90aGVyIGtleXdvcmQsIG9yIHNlZSB3aGF0IG91ciBtZW1iZXJzIGFyZSBsZWFybmluZy4nXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgPE1lbnUgYm9yZGVyPVwibm9uZVwiIHZhcmlhbnQ9XCJwb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPFBvcHVsYXJDb250ZW50IG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgIDxQb3B1bGFyU2VhcmNoZXNcbiAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2g9e25hdmlnYXRlVG9TZWFyY2h9XG4gICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgeyEhc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCAmJiAoXG4gICAgICAgICAgICAgIDxTdHJva2VCdXR0b25cbiAgICAgICAgICAgICAgICBteT17MTZ9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCd2aWV3X2FsbF9yZXN1bHRzJywge1xuICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFZpZXcgYWxsIHJlc3VsdHNcbiAgICAgICAgICAgICAgPC9TdHJva2VCdXR0b24+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPFF1aXpBbmRIZWxwQ2VudGVyTGlua3NcbiAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgIGhhbmRsZUNsb3NlRHJvcGRvd249e2Nsb3NlU2VhcmNofVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1N1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgIDwvQm94PlxuICAgICAgPC9Gb2N1c1RyYXA+XG4gICAgPC8+XG4gICk7XG59O1xuIl19 */",
104
103
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
105
104
  });
106
105
  const HighlightedText = ({
@@ -167,15 +166,16 @@ export const SearchPane = ({
167
166
  const inputRef = useRef(null);
168
167
  const [autoCompleteSuggestions, setAutoCompleteSuggestions] = useState([]);
169
168
  const [searchAsYouTypeResults, setSearchAsYouTypeResults] = useState(null);
169
+ const [searchResultClicked, setSearchResultClicked] = useState(false);
170
170
  const {
171
171
  setOnSearchAsYouTypeParams
172
172
  } = useSearchTrackingContext();
173
173
  const searchAsYouTypeLoader = React.useMemo(() => searchAsYouTypeResults === null ? rndLoader() : null, [searchAsYouTypeResults]);
174
174
  const valueTrimmed = value.trim();
175
- const hasSearchEventAndResults = onSearchAsYouType && searchAsYouTypeResults;
176
- const closeSearch = async (fromResultClick = false) => {
175
+ const hasSearchEventAndResultsWithoutClick = onSearchAsYouType && searchAsYouTypeResults && !searchResultClicked;
176
+ const closeSearch = async () => {
177
177
  // track search event when user made a search and then closed search pane
178
- if (hasSearchEventAndResults && !fromResultClick && valueTrimmed.length > 0) {
178
+ if (hasSearchEventAndResultsWithoutClick && valueTrimmed.length > 0) {
179
179
  const {
180
180
  query,
181
181
  searchId,
@@ -193,7 +193,7 @@ export const SearchPane = ({
193
193
  }
194
194
  }, 10);
195
195
  };
196
- const onKeyDown = useOnEscHandler(() => closeSearch());
196
+ const onKeyDown = useOnEscHandler(closeSearch);
197
197
  const onMouseDownOutside = ({
198
198
  target
199
199
  }) => {
@@ -210,12 +210,14 @@ export const SearchPane = ({
210
210
  };
211
211
  const handleChange = evt => {
212
212
  setValue(evt.target.value);
213
+ // reset to false when the search query changes
214
+ setSearchResultClicked(false);
213
215
  };
214
216
  const handleSubmit = event => {
215
217
  event.preventDefault();
216
218
 
217
219
  // track search event when the user submits the form to capture complete query
218
- if (hasSearchEventAndResults) {
220
+ if (hasSearchEventAndResultsWithoutClick) {
219
221
  const {
220
222
  query,
221
223
  searchId,
@@ -228,7 +230,7 @@ export const SearchPane = ({
228
230
  };
229
231
  const clearInput = () => {
230
232
  // track search event before user clears input
231
- if (hasSearchEventAndResults && valueTrimmed.length > 0) {
233
+ if (hasSearchEventAndResultsWithoutClick && valueTrimmed.length > 0) {
232
234
  const {
233
235
  query,
234
236
  searchId,
@@ -252,7 +254,7 @@ export const SearchPane = ({
252
254
  // and track search event if user made a search
253
255
  useUrlChangeDetection({
254
256
  onUrlChange: () => {
255
- if (hasSearchEventAndResults && valueTrimmed.length > 0) {
257
+ if (hasSearchEventAndResultsWithoutClick && valueTrimmed.length > 0) {
256
258
  const {
257
259
  query,
258
260
  searchId,
@@ -264,6 +266,12 @@ export const SearchPane = ({
264
266
  toggleSearch();
265
267
  }
266
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]);
267
275
  useEffect(() => {
268
276
  inputRef.current?.focus();
269
277
  searchWorker.init();
@@ -283,6 +291,7 @@ export const SearchPane = ({
283
291
  let cancel = false;
284
292
  let clearAutocomplete = true;
285
293
  let clearSearchAsYouType = true;
294
+ let searchEventNoResultDelay;
286
295
  const loaderDelay = setTimeout(() => {
287
296
  /*
288
297
  * Wait 10 milliseconds to get a response for worker before showing loaders.
@@ -309,15 +318,27 @@ export const SearchPane = ({
309
318
  resultsCount: results.top.length,
310
319
  queryLoadTime: results.queryLoadTime
311
320
  });
321
+
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);
334
+ }
312
335
  });
313
336
  return () => {
314
337
  cancel = true;
315
338
  clearTimeout(loaderDelay);
339
+ clearTimeout(searchEventNoResultDelay);
316
340
  };
317
- }, [valueTrimmed, onSearchAsYouType, setOnSearchAsYouTypeParams]);
318
- useSearchTracking({
319
- onSearchAsYouType
320
- });
341
+ }, [valueTrimmed, onSearchAsYouType, searchResultClicked, setOnSearchAsYouTypeParams]);
321
342
  return /*#__PURE__*/_jsxs(_Fragment, {
322
343
  children: [/*#__PURE__*/_jsx(Box, {
323
344
  "aria-hidden": true,
@@ -330,7 +351,7 @@ export const SearchPane = ({
330
351
  top: `calc(${theme.elements.headerHeight} + 5rem)`,
331
352
  width: 1
332
353
  }), /*#__PURE__*/_jsx(FocusTrap, {
333
- onEscapeKey: () => closeSearch(),
354
+ onEscapeKey: closeSearch,
334
355
  onClickOutside: onMouseDownOutside,
335
356
  allowPageInteraction: true,
336
357
  children: /*#__PURE__*/_jsxs(Box, {
@@ -424,6 +445,7 @@ export const SearchPane = ({
424
445
  tabIndex: 0,
425
446
  onKeyDown: evt => {
426
447
  if (evt.key === 'Enter') {
448
+ setSearchResultClicked(true);
427
449
  onTrackingClick('autocomplete_result', {
428
450
  search_id: searchAsYouTypeResults?.searchId ?? '',
429
451
  misc: JSON.stringify({
@@ -431,10 +453,11 @@ export const SearchPane = ({
431
453
  })
432
454
  });
433
455
  navigateToSearch(s.title, searchAsYouTypeResults?.searchId);
434
- closeSearch(true);
456
+ closeSearch();
435
457
  }
436
458
  },
437
459
  onClick: () => {
460
+ setSearchResultClicked(true);
438
461
  onTrackingClick('autocomplete_result', {
439
462
  search_id: searchAsYouTypeResults?.searchId ?? '',
440
463
  misc: JSON.stringify({
@@ -442,7 +465,7 @@ export const SearchPane = ({
442
465
  })
443
466
  });
444
467
  navigateToSearch(s.title, searchAsYouTypeResults?.searchId);
445
- closeSearch(true);
468
+ closeSearch();
446
469
  },
447
470
  children: [/*#__PURE__*/_jsx(SemiboldSearchIcon, {
448
471
  mb: 2,
@@ -489,6 +512,7 @@ export const SearchPane = ({
489
512
  role: "link",
490
513
  onKeyDown: evt => {
491
514
  if (evt.key === 'Enter') {
515
+ setSearchResultClicked(true);
492
516
  onTrackingClick('search_as_you_type_result', {
493
517
  search_id: searchAsYouTypeResults.searchId,
494
518
  slug: s.slug,
@@ -499,11 +523,12 @@ export const SearchPane = ({
499
523
  position: i
500
524
  })
501
525
  });
502
- closeSearch(true);
526
+ closeSearch();
503
527
  safelyRedirect(s.urlPath);
504
528
  }
505
529
  },
506
530
  onClick: () => {
531
+ setSearchResultClicked(true);
507
532
  onTrackingClick('search_as_you_type_result', {
508
533
  search_id: searchAsYouTypeResults.searchId,
509
534
  slug: s.slug,
@@ -514,7 +539,7 @@ export const SearchPane = ({
514
539
  position: i
515
540
  })
516
541
  });
517
- closeSearch(true);
542
+ closeSearch();
518
543
  safelyRedirect(s.urlPath);
519
544
  },
520
545
  children: [/*#__PURE__*/_jsx(HighlightedText, {