@wix/system-core-components 1.3.1
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.
- package/README.md +38 -0
- package/dist/bundles/debug/es/system-core-components.mjs +3679 -0
- package/dist/bundles/debug/es/system-core-components.mjs.map +1 -0
- package/dist/bundles/debug/style.css +1 -0
- package/dist/bundles/debug/umd/system-core-components.js +3680 -0
- package/dist/bundles/debug/umd/system-core-components.js.map +1 -0
- package/dist/bundles/es/system-core-components.mjs +3579 -0
- package/dist/bundles/es/system-core-components.mjs.map +1 -0
- package/dist/bundles/style.css +1 -0
- package/dist/bundles/umd/system-core-components.js +2 -0
- package/dist/bundles/umd/system-core-components.js.map +1 -0
- package/dist/esm/Anchor.d.ts +2 -0
- package/dist/esm/Anchor.js +5 -0
- package/dist/esm/Anchor.js.map +1 -0
- package/dist/esm/FooterContainer_TransparentScreen.d.ts +4 -0
- package/dist/esm/FooterContainer_TransparentScreen.js +6 -0
- package/dist/esm/FooterContainer_TransparentScreen.js.map +1 -0
- package/dist/esm/FooterSection.d.ts +4 -0
- package/dist/esm/FooterSection.js +6 -0
- package/dist/esm/FooterSection.js.map +1 -0
- package/dist/esm/HeaderContainer_TransparentScreen.d.ts +6 -0
- package/dist/esm/HeaderContainer_TransparentScreen.js +7 -0
- package/dist/esm/HeaderContainer_TransparentScreen.js.map +1 -0
- package/dist/esm/HeaderSection.d.ts +6 -0
- package/dist/esm/HeaderSection.js +7 -0
- package/dist/esm/HeaderSection.js.map +1 -0
- package/dist/esm/PageGroup.d.ts +4 -0
- package/dist/esm/PageGroup.js +6 -0
- package/dist/esm/PageGroup.js.map +1 -0
- package/dist/esm/PageSections.d.ts +4 -0
- package/dist/esm/PageSections.js +6 -0
- package/dist/esm/PageSections.js.map +1 -0
- package/dist/esm/Page_BasicPageSkin.d.ts +4 -0
- package/dist/esm/Page_BasicPageSkin.js +6 -0
- package/dist/esm/Page_BasicPageSkin.js.map +1 -0
- package/dist/esm/Page_ResponsivePageWithColorBG.d.ts +4 -0
- package/dist/esm/Page_ResponsivePageWithColorBG.js +6 -0
- package/dist/esm/Page_ResponsivePageWithColorBG.js.map +1 -0
- package/dist/esm/PagesContainer.d.ts +3 -0
- package/dist/esm/PagesContainer.js +5 -0
- package/dist/esm/PagesContainer.js.map +1 -0
- package/dist/esm/ResponsiveContainer.d.ts +4 -0
- package/dist/esm/ResponsiveContainer.js +6 -0
- package/dist/esm/ResponsiveContainer.js.map +1 -0
- package/dist/esm/ResponsivePopupPage_WithoutOverlay.d.ts +6 -0
- package/dist/esm/ResponsivePopupPage_WithoutOverlay.js +7 -0
- package/dist/esm/ResponsivePopupPage_WithoutOverlay.js.map +1 -0
- package/dist/esm/Section.d.ts +6 -0
- package/dist/esm/Section.js +7 -0
- package/dist/esm/Section.js.map +1 -0
- package/dist/esm/hocs.d.ts +28 -0
- package/dist/esm/hocs.js +23 -0
- package/dist/esm/hocs.js.map +1 -0
- package/dist/esm/index.d.ts +13 -0
- package/dist/esm/index.js +14 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/types/Anchor.d.ts +3 -0
- package/dist/types/Anchor.d.ts.map +1 -0
- package/dist/types/FooterContainer_TransparentScreen.d.ts +5 -0
- package/dist/types/FooterContainer_TransparentScreen.d.ts.map +1 -0
- package/dist/types/FooterSection.d.ts +5 -0
- package/dist/types/FooterSection.d.ts.map +1 -0
- package/dist/types/HeaderContainer_TransparentScreen.d.ts +7 -0
- package/dist/types/HeaderContainer_TransparentScreen.d.ts.map +1 -0
- package/dist/types/HeaderSection.d.ts +7 -0
- package/dist/types/HeaderSection.d.ts.map +1 -0
- package/dist/types/PageGroup.d.ts +5 -0
- package/dist/types/PageGroup.d.ts.map +1 -0
- package/dist/types/PageSections.d.ts +5 -0
- package/dist/types/PageSections.d.ts.map +1 -0
- package/dist/types/Page_BasicPageSkin.d.ts +5 -0
- package/dist/types/Page_BasicPageSkin.d.ts.map +1 -0
- package/dist/types/Page_ResponsivePageWithColorBG.d.ts +5 -0
- package/dist/types/Page_ResponsivePageWithColorBG.d.ts.map +1 -0
- package/dist/types/PagesContainer.d.ts +4 -0
- package/dist/types/PagesContainer.d.ts.map +1 -0
- package/dist/types/ResponsiveContainer.d.ts +5 -0
- package/dist/types/ResponsiveContainer.d.ts.map +1 -0
- package/dist/types/ResponsivePopupPage_WithoutOverlay.d.ts +7 -0
- package/dist/types/ResponsivePopupPage_WithoutOverlay.d.ts.map +1 -0
- package/dist/types/Section.d.ts +7 -0
- package/dist/types/Section.d.ts.map +1 -0
- package/dist/types/hocs.d.ts +29 -0
- package/dist/types/hocs.d.ts.map +1 -0
- package/dist/types/index.d.ts +14 -0
- package/dist/types/index.d.ts.map +1 -0
- package/package.json +73 -0
- package/src/Anchor.tsx +5 -0
- package/src/FooterContainer_TransparentScreen.tsx +6 -0
- package/src/FooterSection.tsx +6 -0
- package/src/HeaderContainer_TransparentScreen.tsx +7 -0
- package/src/HeaderSection.tsx +7 -0
- package/src/PageGroup.tsx +6 -0
- package/src/PageSections.tsx +6 -0
- package/src/Page_BasicPageSkin.tsx +6 -0
- package/src/Page_ResponsivePageWithColorBG.tsx +6 -0
- package/src/PagesContainer.tsx +5 -0
- package/src/ResponsiveContainer.tsx +6 -0
- package/src/ResponsivePopupPage_WithoutOverlay.tsx +7 -0
- package/src/Section.tsx +7 -0
- package/src/hocs.tsx +34 -0
- package/src/index.ts +13 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-core-components.js","sources":["../../../../../../node_modules/@wix/editor-components/dist/component/Anchor/Anchor.bundle.min.js","../../esm/Anchor.js","../../../../../../node_modules/@wix/editor-components/dist/skin/FooterContainer/TransparentScreen/FooterContainer.bundle.min.js","../../esm/hocs.js","../../esm/FooterContainer_TransparentScreen.js","../../../../../../node_modules/@wix/editor-components/dist/component/FooterSection/FooterSection.bundle.min.js","../../esm/FooterSection.js","../../../../../../node_modules/@wix/editor-components/dist/skin/HeaderContainer/TransparentScreen/HeaderContainer.bundle.min.js","../../../../../../node_modules/@wix/editor-components/dist/controller/HeaderContainer/HeaderContainer.bundle.min.js","../../esm/HeaderContainer_TransparentScreen.js","../../../../../../node_modules/@wix/editor-components/dist/component/HeaderSection/HeaderSection.bundle.min.js","../../../../../../node_modules/@wix/editor-components/dist/controller/HeaderSection/HeaderSection.bundle.min.js","../../esm/HeaderSection.js","../../../../../../node_modules/@wix/editor-components/dist/skin/Page/BasicPageSkin/Page.bundle.min.js","../../esm/Page_BasicPageSkin.js","../../../../../../node_modules/@wix/editor-components/dist/skin/Page/ResponsivePageWithColorBG/Page.bundle.min.js","../../esm/Page_ResponsivePageWithColorBG.js","../../../../../../node_modules/@wix/editor-components/dist/component/PageGroup/PageGroup.bundle.min.js","../../esm/PageGroup.js","../../../../../../node_modules/@wix/editor-components/dist/component/PagesContainer/PagesContainer.bundle.min.js","../../esm/PagesContainer.js","../../../../../../node_modules/@wix/editor-components/dist/component/ResponsiveContainer/ResponsiveContainer.bundle.min.js","../../esm/PageSections.js","../../esm/ResponsiveContainer.js","../../../../../../node_modules/@wix/editor-components/dist/component/ResponsivePopupPage/ResponsivePopupPage.bundle.min.js","../../../../../../node_modules/@wix/editor-components/dist/controller/ResponsivePopupPage/ResponsivePopupPage.bundle.min.js","../../esm/ResponsivePopupPage_WithoutOverlay.js","../../../../../../node_modules/@wix/editor-components/dist/component/Section/Section.bundle.min.js","../../../../../../node_modules/@wix/editor-components/dist/controller/Section/Section.bundle.min.js","../../esm/Section.js"],"sourcesContent":["!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\")):\"function\"==typeof define&&define.amd?define(\"thunderbolt/component/Anchor/Anchor\",[\"react\"],t):\"object\"==typeof exports?exports[\"thunderbolt/component/Anchor/Anchor\"]=t(require(\"react\")):e[\"thunderbolt/component/Anchor/Anchor\"]=t(e.React)}(\"undefined\"!=typeof self?self:this,function(e){return function(){var t={\"Xdf/\":function(t){\"use strict\";t.exports=e},Fe5V:function(e){function t(){return e.exports=t=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},e.exports.__esModule=!0,e.exports.default=e.exports,t.apply(null,arguments)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports}},r={};function n(e){var o=r[e];if(void 0!==o)return o.exports;var u=r[e]={exports:{}};return t[e](u,u.exports,n),u.exports}n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var o={};return function(){\"use strict\";n.r(o),n.d(o,{default:function(){return c}});var e=n(\"Fe5V\"),t=n.n(e),r=n(\"Xdf/\");var u=\"Vd6aQZ\",a=\"mHZSwn\";var c=e=>{const{id:n,name:o,urlFragment:c,className:i,isAriaHidden:d}=e;return r.createElement(\"div\",t()({id:n},(e=>Object.entries(e).reduce((e,[t,r])=>(t.includes(\"data-\")&&(e[t]=r),e),{}))(e),{className:u+\" ignore-focus \"+i,\"aria-hidden\":d},!d&&{role:\"region\",tabIndex:-1,\"aria-label\":o}),c&&r.createElement(\"div\",{id:c}),r.createElement(\"span\",{className:a},o))}}(),o}()});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGh1bmRlcmJvbHQvY29tcG9uZW50L0FuY2hvci9BbmNob3IuYnVuZGxlLm1pbi5qcyIsIm1hcHBpbmdzIjoiQ0FBQSxTQUEyQ0EsRUFBTUMsR0FDMUIsaUJBQVpDLFNBQTBDLGlCQUFYQyxPQUN4Q0EsT0FBT0QsUUFBVUQsRUFBUUcsUUFBUSxVQUNSLG1CQUFYQyxRQUF5QkEsT0FBT0MsSUFDOUNELE9BQU8sc0NBQXVDLENBQUMsU0FBVUosR0FDL0IsaUJBQVpDLFFBQ2RBLFFBQVEsdUNBQXlDRCxFQUFRRyxRQUFRLFVBRWpFSixFQUFLLHVDQUF5Q0MsRUFBUUQsRUFBWSxNQUNuRSxDQVRELENBU29CLG9CQUFUTyxLQUF1QkEsS0FBT0MsS0FBTyxTQUFTQyxHQUN6RCxPLGtEQ1ZBTixFQUFPRCxRQUFVTyxDLG1CQ0FqQixTQUFTQyxJQUNQLE9BQU9QLEVBQU9ELFFBQVVRLEVBQVdDLE9BQU9DLE9BQVNELE9BQU9DLE9BQU9DLE9BQVMsU0FBVUMsR0FDbEYsSUFBSyxJQUFJQyxFQUFJLEVBQUdBLEVBQUlDLFVBQVVDLE9BQVFGLElBQUssQ0FDekMsSUFBSUcsRUFBSUYsVUFBVUQsR0FDbEIsSUFBSyxJQUFJSSxLQUFLRCxHQUFHLENBQUcsR0FBRUUsZUFBZUMsS0FBS0gsRUFBR0MsS0FBT0wsRUFBRUssR0FBS0QsRUFBRUMsR0FDL0QsQ0FDQSxPQUFPTCxDQUNULEVBQUdYLEVBQU9ELFFBQVFvQixZQUFhLEVBQU1uQixFQUFPRCxRQUFpQixRQUFJQyxFQUFPRCxRQUFTUSxFQUFTYSxNQUFNLEtBQU1QLFVBQ3hHLENBQ0FiLEVBQU9ELFFBQVVRLEVBQVVQLEVBQU9ELFFBQVFvQixZQUFhLEVBQU1uQixFQUFPRCxRQUFpQixRQUFJQyxFQUFPRCxPLEdDUjVGc0IsRUFBMkIsQ0FBQyxFQUdoQyxTQUFTQyxFQUFvQkMsR0FFNUIsSUFBSUMsRUFBZUgsRUFBeUJFLEdBQzVDLFFBQXFCRSxJQUFqQkQsRUFDSCxPQUFPQSxFQUFhekIsUUFHckIsSUFBSUMsRUFBU3FCLEVBQXlCRSxHQUFZLENBR2pEeEIsUUFBUyxDQUFDLEdBT1gsT0FIQTJCLEVBQW9CSCxHQUFVdkIsRUFBUUEsRUFBT0QsUUFBU3VCLEdBRy9DdEIsRUFBT0QsT0FDZixDQ3JCQXVCLEVBQW9CWCxFQUFJLFNBQVNYLEdBQ2hDLElBQUkyQixFQUFTM0IsR0FBVUEsRUFBT21CLFdBQzdCLFdBQWEsT0FBT25CLEVBQWdCLE9BQUcsRUFDdkMsV0FBYSxPQUFPQSxDQUFRLEVBRTdCLE9BREFzQixFQUFvQk0sRUFBRUQsRUFBUSxDQUFFRSxFQUFHRixJQUM1QkEsQ0FDUixFQ05BTCxFQUFvQk0sRUFBSSxTQUFTN0IsRUFBUytCLEdBQ3pDLElBQUksSUFBSUMsS0FBT0QsRUFDWFIsRUFBb0JVLEVBQUVGLEVBQVlDLEtBQVNULEVBQW9CVSxFQUFFakMsRUFBU2dDLElBQzVFdkIsT0FBT3lCLGVBQWVsQyxFQUFTZ0MsRUFBSyxDQUFFRyxZQUFZLEVBQU1DLElBQUtMLEVBQVdDLElBRzNFLEVDUEFULEVBQW9CVSxFQUFJLFNBQVNJLEVBQUtDLEdBQVEsT0FBTzdCLE9BQU84QixVQUFVckIsZUFBZUMsS0FBS2tCLEVBQUtDLEVBQU8sRUNDdEdmLEVBQW9CTixFQUFJLFNBQVNqQixHQUNYLG9CQUFYd0MsUUFBMEJBLE9BQU9DLGFBQzFDaEMsT0FBT3lCLGVBQWVsQyxFQUFTd0MsT0FBT0MsWUFBYSxDQUFFQyxNQUFPLFdBRTdEakMsT0FBT3lCLGVBQWVsQyxFQUFTLGFBQWMsQ0FBRTBDLE9BQU8sR0FDdkQsRSwwSENMQSxNQUF1QixTQUF2QixFQUF5QyxTQ2dDekMsTUEzQnNDQyxJQUNwQyxNQUFNLEdBQUVDLEVBQUUsS0FBRUMsRUFBSSxZQUFFQyxFQUFXLFVBQUVDLEVBQVMsYUFBRUMsR0FBaUJMLEVBUTNELE9BQ0VNLEVBQUFBLGNBQUEsTUFBQXpDLElBQUEsQ0FDRW9DLEdBQUlBLEdDbUR1QixDQUFDRCxHQUN2QmxDLE9BQU95QyxRQUFRUCxHQUFPUSxPQUFPLENBQUNDLEdBQU1wQixFQUFLcUIsTUFDeENyQixFQUFJc0IsU0FBUyxXQUNiRixFQUFJcEIsR0FBT3FCLEdBRVJELEdBQ1IsQ0FBQyxHRHhERUcsQ0FBa0JaLEdBQU0sQ0FDNUJJLFVBQWNTLEVBQVcsaUJBQWlCVCxFQUMxQyxjQUFhQyxJQUNQQSxHQUFnQixDQUNwQlMsS0FBTSxTQUNOQyxVQUFXLEVBQ1gsYUFBY2IsSUFHZkMsR0FBZUcsRUFBQUEsY0FBQSxPQUFLTCxHQUFJRSxJQUN6QkcsRUFBQUEsY0FBQSxRQUFNRixVQUFXUyxHQUFnQlgsSSIsInNvdXJjZXMiOlsid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvZXh0ZXJuYWwgdW1kIHtcImFtZFwiOlwicmVhY3RcIixcImNvbW1vbmpzXCI6XCJyZWFjdFwiLFwiY29tbW9uanMyXCI6XCJyZWFjdFwiLFwicm9vdFwiOlwiUmVhY3RcIn0iLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvQW5jaG9yL3ZpZXdlci9BbmNob3Iuc2NzcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL0FuY2hvci92aWV3ZXIvQW5jaG9yLnRzeCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL2VkaXRvci1lbGVtZW50cy1jb21tb24tdXRpbHMvZGlzdC9lc20vY29tbW9ucy91dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShcInRodW5kZXJib2x0L2NvbXBvbmVudC9BbmNob3IvQW5jaG9yXCIsIFtcInJlYWN0XCJdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcInRodW5kZXJib2x0L2NvbXBvbmVudC9BbmNob3IvQW5jaG9yXCJdID0gZmFjdG9yeShyZXF1aXJlKFwicmVhY3RcIikpO1xuXHRlbHNlXG5cdFx0cm9vdFtcInRodW5kZXJib2x0L2NvbXBvbmVudC9BbmNob3IvQW5jaG9yXCJdID0gZmFjdG9yeShyb290W1wiUmVhY3RcIl0pO1xufSkoKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB0aGlzKSwgZnVuY3Rpb24oX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9YZGZfX18pIHtcbnJldHVybiAiLCJtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfWGRmX19fOyIsImZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICByZXR1cm4gbW9kdWxlLmV4cG9ydHMgPSBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uIChuKSB7XG4gICAgZm9yICh2YXIgZSA9IDE7IGUgPCBhcmd1bWVudHMubGVuZ3RoOyBlKyspIHtcbiAgICAgIHZhciB0ID0gYXJndW1lbnRzW2VdO1xuICAgICAgZm9yICh2YXIgciBpbiB0KSAoe30pLmhhc093blByb3BlcnR5LmNhbGwodCwgcikgJiYgKG5bcl0gPSB0W3JdKTtcbiAgICB9XG4gICAgcmV0dXJuIG47XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgX2V4dGVuZHMuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2V4dGVuZHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHRmdW5jdGlvbigpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcblx0XHRmdW5jdGlvbigpIHsgcmV0dXJuIG1vZHVsZTsgfTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIGRlZmluaXRpb24pIHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqLCBwcm9wKSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTsgfSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQgZGVmYXVsdCB7XCJyb290XCI6XCJWZDZhUVpcIixcInNyT25seVwiOlwibUhaU3duXCJ9OyIsIid1c2UtY2xpZW50JztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGdldERhdGFBdHRyaWJ1dGVzIH0gZnJvbSAnQHdpeC9lZGl0b3ItZWxlbWVudHMtY29tbW9uLXV0aWxzJztcbmltcG9ydCB0eXBlIHsgQW5jaG9yUHJvcHMgfSBmcm9tICcuLi9BbmNob3IudHlwZXMnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL0FuY2hvci5zY3NzJztcblxuY29uc3QgQW5jaG9yOiBSZWFjdC5GQzxBbmNob3JQcm9wcz4gPSBwcm9wcyA9PiB7XG4gIGNvbnN0IHsgaWQsIG5hbWUsIHVybEZyYWdtZW50LCBjbGFzc05hbWUsIGlzQXJpYUhpZGRlbiB9ID0gcHJvcHM7XG4gIC8qKlxuICAgKiAuaWdub3JlLWZvY3VzIGNsYXNzTmFtZSBoYXMgbm8gZG9jcyBhbmQgaXMgcGFydCBvZiB0aGUgYTExeSBmb2N1cyByaW5nIGZlYXR1cmUuIEltcGxlbWVudGF0aW9uIGlzIG1hZGUgb24gVEI6XG4gICAgIGh0dHBzOi8vZ2l0aHViLmNvbS93aXgtcHJpdmF0ZS90aHVuZGVyYm9sdC9ibG9iL21hc3Rlci9wYWNrYWdlcy90aHVuZGVyYm9sdC1iZWNreS9zcmMvY2FybWkvY3NzLmNhcm1pLnRzI0wxNTRcblxuICAgKiBBZGRzIHRvICNzaXRlQ29udGFpbmVyIGEgY3NzIHJ1bGUgdGhhdCBhZGRzIGJveC1zaGFkb3cgaWYgY2hpbGQgZWxlbWVudCBpcyBmb2N1c2VkKCkgYW5kIGRvZXNuJ3QgaGF2ZSB0aGUgY2xhc3Nlc1xuICAgICAuaGFzLWN1c3RvbS1mb2N1cyBPUiAuaWdub3JlLWZvY3VzXG4gICAqL1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGlkPXtpZH1cbiAgICAgIHsuLi5nZXREYXRhQXR0cmlidXRlcyhwcm9wcyl9XG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5yb290fSBpZ25vcmUtZm9jdXMgJHtjbGFzc05hbWV9YH1cbiAgICAgIGFyaWEtaGlkZGVuPXtpc0FyaWFIaWRkZW59XG4gICAgICB7Li4uKCFpc0FyaWFIaWRkZW4gJiYge1xuICAgICAgICByb2xlOiAncmVnaW9uJyxcbiAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICAnYXJpYS1sYWJlbCc6IG5hbWUsXG4gICAgICB9KX1cbiAgICA+XG4gICAgICB7dXJsRnJhZ21lbnQgJiYgPGRpdiBpZD17dXJsRnJhZ21lbnR9IC8+fVxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc3JPbmx5fT57bmFtZX08L3NwYW4+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBBbmNob3I7XG4iLCJpbXBvcnQgeyBrZXlDb2RlcyB9IGZyb20gJy4vYTExeSc7XG5leHBvcnQgY29uc3QgaXNUaGVtZUZvbnQgPSAodmFsdWUpID0+IC9eZm9udF9cXGQrJC8udGVzdCh2YWx1ZSk7XG5leHBvcnQgY29uc3QgZGVib3VuY2UgPSAoZm4sIG1zID0gMCwgeyBsZWFkaW5nID0gZmFsc2UsIHRyYWlsaW5nID0gdHJ1ZSB9ID0ge30pID0+IHtcbiAgICBsZXQgdGltZW91dElkID0gbnVsbDtcbiAgICByZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgaWYgKGxlYWRpbmcgJiYgdGltZW91dElkID09PSBudWxsKSB7XG4gICAgICAgICAgICBmbi5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGltZW91dElkKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRyYWlsaW5nIHx8ICFsZWFkaW5nIHx8IHRpbWVvdXRJZCkge1xuICAgICAgICAgICAgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRyYWlsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aW1lb3V0SWQgPSBudWxsO1xuICAgICAgICAgICAgfSwgbXMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gU3BlY2lhbCBjYXNlIGZvciBhIHNpbmdsZSBjYWxsIHdpdGggYm90aCBsZWFkaW5nIGFuZCB0cmFpbGluZyAoc2VlIHRlc3RzKVxuICAgICAgICAgICAgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGltZW91dElkID0gbnVsbDtcbiAgICAgICAgICAgIH0sIG1zKTtcbiAgICAgICAgfVxuICAgIH07XG59O1xuZXhwb3J0IGNvbnN0IHRocm90dGxlID0gKGZ1bmMsIG1zID0gMCkgPT4ge1xuICAgIGxldCBpc1Rocm90dGxlZCA9IGZhbHNlLCBzYXZlZEFyZ3M7XG4gICAgZnVuY3Rpb24gd3JhcHBlciguLi5hcmdzKSB7XG4gICAgICAgIGlmIChpc1Rocm90dGxlZCkge1xuICAgICAgICAgICAgc2F2ZWRBcmdzID0gYXJncztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICBpc1Rocm90dGxlZCA9IHRydWU7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaXNUaHJvdHRsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChzYXZlZEFyZ3MpIHtcbiAgICAgICAgICAgICAgICB3cmFwcGVyLmFwcGx5KHRoaXMsIHNhdmVkQXJncyk7XG4gICAgICAgICAgICAgICAgc2F2ZWRBcmdzID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgbXMpO1xuICAgIH1cbiAgICByZXR1cm4gd3JhcHBlcjtcbn07XG5leHBvcnQgY29uc3QgaXNCcm93c2VyID0gKCkgPT4gdHlwZW9mIHdpbmRvdyAhPT0gYHVuZGVmaW5lZGA7XG5leHBvcnQgY29uc3QgcGVyZm9ybU9uRW50ZXIgPSAoZm4pID0+IHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSBrZXlDb2Rlcy5lbnRlcikge1xuICAgICAgICAgICAgZm4oZXZlbnQpO1xuICAgICAgICB9XG4gICAgfTtcbn07XG5leHBvcnQgY29uc3QgaXNDU1NNYXNrU3VwcG9ydGVkID0gKCkgPT4ge1xuICAgIGlmICghaXNCcm93c2VyKCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiAod2luZG93LkNTUyAmJlxuICAgICAgICB3aW5kb3cuQ1NTLnN1cHBvcnRzKCcobWFzay1yZXBlYXQ6IG5vLXJlcGVhdCkgb3IgKC13ZWJraXQtbWFzay1yZXBlYXQ6IG5vLXJlcGVhdCknKSk7XG59O1xuZXhwb3J0IGNvbnN0IGlzRW1wdHlPYmplY3QgPSAob2JqKSA9PiAhb2JqIHx8IChPYmplY3Qua2V5cyhvYmopLmxlbmd0aCA9PT0gMCAmJiBvYmouY29uc3RydWN0b3IgPT09IE9iamVjdCk7XG5leHBvcnQgY29uc3QgaXNTYWZhcmkgPSAoKSA9PiAvXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KG5hdmlnYXRvcj8udXNlckFnZW50KTtcbi8vIGV2ZW4gdGhvdWdoIG5hdmlnYXRvci5wbGF0Zm9ybSBpcyBkZXByZWNhdGVkLCBpdCdzIHN0aWxsIHRoZSBtb3N0IHJlbGlhYmxlIHdheSB0byBkZXRlY3QgdGhlIE9TXG4vLyBzdWdnZXN0ZWQgYnkgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL05hdmlnYXRvci9wbGF0Zm9ybVxuLy8gdGhpcyBmdW5jdGlvbiBpcyBub3Qgd29ya2luZyBpbiBTU1IgZW52aXJvbm1lbnRcbi8vIHNob3VsZCBiZSB1c2VkIG9ubHkgaW4gdGhlIGJyb3dzZXIgZW52aXJvbm1lbnRcbmV4cG9ydCBjb25zdCBpc01hYyA9ICgpID0+IG5hdmlnYXRvcj8ucGxhdGZvcm0/LnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgnbWFjJyk7XG5leHBvcnQgY29uc3QgZ2V0RGF0YUF0dHJpYnV0ZXMgPSAocHJvcHMpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMocHJvcHMpLnJlZHVjZSgoYWNjLCBba2V5LCB2YWxdKSA9PiB7XG4gICAgICAgIGlmIChrZXkuaW5jbHVkZXMoJ2RhdGEtJykpIHtcbiAgICAgICAgICAgIGFjY1trZXldID0gdmFsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBwaWNrKHNvdXJjZSwga2V5cykge1xuICAgIHJldHVybiBrZXlzLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgaWYgKCFzb3VyY2UuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgW2tleV06IHNvdXJjZVtrZXldLFxuICAgICAgICB9O1xuICAgIH0sIHt9KTtcbn1cbmV4cG9ydCBjb25zdCBpZFRvQ29tcFJlZiA9IChpZCkgPT4gKHsgaWQsIHR5cGU6ICdERVNLVE9QJyB9KTtcbmV4cG9ydCBjb25zdCBpc1dpeERvbWFpbiA9ICh1cmwpID0+IFsnZWRpdG9yeC5pbycsICd3aXhzaXRlLmNvbScsICd3aXguY29tJywgJ3dpeHN0dWRpby5pbyddLnNvbWUoZG9tYWluID0+IHVybC5pbmNsdWRlcyhkb21haW4pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXV0aWxzLmpzLm1hcCJdLCJuYW1lcyI6WyJyb290IiwiZmFjdG9yeSIsImV4cG9ydHMiLCJtb2R1bGUiLCJyZXF1aXJlIiwiZGVmaW5lIiwiYW1kIiwic2VsZiIsInRoaXMiLCJfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX1hkZl9fXyIsIl9leHRlbmRzIiwiT2JqZWN0IiwiYXNzaWduIiwiYmluZCIsIm4iLCJlIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidCIsInIiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJfX2VzTW9kdWxlIiwiYXBwbHkiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJ1bmRlZmluZWQiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwiZ2V0dGVyIiwiZCIsImEiLCJkZWZpbml0aW9uIiwia2V5IiwibyIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsIm9iaiIsInByb3AiLCJwcm90b3R5cGUiLCJTeW1ib2wiLCJ0b1N0cmluZ1RhZyIsInZhbHVlIiwicHJvcHMiLCJpZCIsIm5hbWUiLCJ1cmxGcmFnbWVudCIsImNsYXNzTmFtZSIsImlzQXJpYUhpZGRlbiIsIlJlYWN0IiwiZW50cmllcyIsInJlZHVjZSIsImFjYyIsInZhbCIsImluY2x1ZGVzIiwiZ2V0RGF0YUF0dHJpYnV0ZXMiLCJzdHlsZXMiLCJyb2xlIiwidGFiSW5kZXgiXSwic291cmNlUm9vdCI6IiJ9","'use client';\nimport { Anchor as Component } from '@wix/editor-components/component/Anchor';\nimport '@wix/editor-components/component/Anchor/css';\nexport const Anchor = Component;\n//# sourceMappingURL=Anchor.js.map","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\")):\"function\"==typeof define&&define.amd?define(\"thunderbolt/skin/FooterContainer/TransparentScreen/FooterContainer\",[\"react\"],t):\"object\"==typeof exports?exports[\"thunderbolt/skin/FooterContainer/TransparentScreen/FooterContainer\"]=t(require(\"react\")):e[\"thunderbolt/skin/FooterContainer/TransparentScreen/FooterContainer\"]=t(e.React)}(\"undefined\"!=typeof self?self:this,function(e){return function(){var t={XCHU:function(e,t,n){\"use strict\";n.d(t,{default:function(){return C}});var r=n(\"Fe5V\"),o=n.n(r),a=n(\"Xdf/\"),s=n.n(a),i=n(\"MRkx\");const d=\"wixui-\",c=(e,...t)=>{const n=[];return e&&n.push(`${d}${e}`),t.forEach(e=>{e&&(n.push(`${d}${e}`),n.push(e))}),n.join(\" \")};var l=n(\"guqK\");const u=\"mesh-container-content\",f=\"inline-content\",p=e=>s().createElement(\"div\",{key:e.props.id+\"-rotated-wrapper\",\"data-mesh-id\":e.props.id+\"-rotated-wrapper\"},e),m=(e,t)=>{const{id:n,className:r,wedges:a=[],rotatedComponents:d=[],children:c,fixedComponents:m=[],extraClassName:v=\"\",renderRotatedComponents:h=p}=e,C=s().Children.toArray(c()),y=[],x=[];C.forEach(e=>m.includes(e.props.id)?y.push(e):x.push(e));const g=(e=>{const{wedges:t,rotatedComponents:n,childrenArray:r,renderRotatedComponents:o}=e,a=n.reduce((e,t)=>({...e,[t]:!0}),{});return[...r.map(e=>{return a[(t=e,t.props.id.split(\"__\")[0])]?o(e):e;var t}),...t.map(e=>s().createElement(\"div\",{key:e,\"data-mesh-id\":e}))]})({childrenArray:x,rotatedComponents:d,wedges:a,renderRotatedComponents:h});return s().createElement(\"div\",o()({},(0,l.P5)(e),{\"data-mesh-id\":n+\"inlineContent\",\"data-testid\":f,className:(0,i.Z)(r,v),ref:t}),s().createElement(\"div\",{\"data-mesh-id\":n+\"inlineContent-gridContainer\",\"data-testid\":u},g),y)};var v=s().forwardRef(m);var h={root:\"footer\"};var C=e=>{const{id:t,className:n,customClassNames:r=[],skin:s,children:d,meshProps:u,fillLayers:f,lang:p}=e,m={onMouseEnter:e.onMouseEnter,onMouseLeave:e.onMouseLeave,onClick:e.onClick,onDoubleClick:e.onDblClick},C=(0,i.Z)(n,c(h.root,...r));return a.createElement(s,{wrapperProps:{...(0,l.P5)(e),lang:p,id:t,tagName:\"footer\",eventHandlers:m,tabIndex:\"-1\",className:C},fillLayers:f,\"data-block-level-container\":\"FooterContainer\"},a.createElement(v,o()({id:t},u),d))}},guqK:function(e,t,n){\"use strict\";n.d(t,{P5:function(){return r}});const r=e=>Object.entries(e).reduce((e,[t,n])=>(t.includes(\"data-\")&&(e[t]=n),e),{})},\"Xdf/\":function(t){\"use strict\";t.exports=e},Fe5V:function(e){function t(){return e.exports=t=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},e.exports.__esModule=!0,e.exports.default=e.exports,t.apply(null,arguments)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},MRkx:function(e,t,n){\"use strict\";function r(e){var t,n,o=\"\";if(\"string\"==typeof e||\"number\"==typeof e)o+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=r(e[t]))&&(o&&(o+=\" \"),o+=n);else for(t in e)e[t]&&(o&&(o+=\" \"),o+=t);return o}t.Z=function(){for(var e,t,n=0,o=\"\";n<arguments.length;)(e=arguments[n++])&&(t=r(e))&&(o&&(o+=\" \"),o+=t);return o}}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var a=n[e]={exports:{}};return t[e](a,a.exports,r),a.exports}r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var o={};return function(){\"use strict\";r.r(o),r.d(o,{default:function(){return f}});var e=r(\"Fe5V\"),t=r.n(e),n=r(\"Xdf/\"),a=r.n(n),s={screenWidthBackground:\"lvxhkV\",HeaderHideToTop:\"QJjwEo\",headerHideToTop:\"QJjwEo\",HeaderHideToTopReverse:\"kdBXfh\",headerHideToTopReverse:\"kdBXfh\",HeaderFadeOut:\"MP52zt\",headerFadeOut:\"MP52zt\",transitionEnded:\"Bhu9m5\",HeaderFadeOutReverse:\"LVP8Wf\",headerFadeOutReverse:\"LVP8Wf\",inlineContent:\"VrZrC0\",centeredContent:\"cKxVkc\",centeredContentBg:\"vlM3HR\",root:\"AT7o0U\"},i=r(\"MRkx\");var d=e=>{let{id:n,className:r,skinClassName:o,tagName:s=\"div\",transition:d,transitionEnded:c,eventHandlers:l,skinStyles:u,children:f,tabIndex:p,lang:m}=e;const v=s;return a().createElement(v,t()({id:n,className:(0,i.Z)(o,d&&u[d],c&&u.transitionEnded,r),tabIndex:p,lang:m},l),f)};var c=e=>{let{wrapperProps:r,children:o,skinStyles:a}=e;return n.createElement(d,t()({},r,{skinClassName:a.root,skinStyles:a}),n.createElement(\"div\",{className:a.screenWidthBackground}),n.createElement(\"div\",{className:a.centeredContent},n.createElement(\"div\",{className:a.centeredContentBg}),n.createElement(\"div\",{className:a.inlineContent},o)))};var l=e=>a().createElement(c,t()({},e,{skinStyles:s})),u=r(\"XCHU\");var f=e=>a().createElement(u.default,t()({},e,{skin:l}))}(),o}()});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGh1bmRlcmJvbHQvc2tpbi9Gb290ZXJDb250YWluZXIvVHJhbnNwYXJlbnRTY3JlZW4vRm9vdGVyQ29udGFpbmVyLmJ1bmRsZS5taW4uanMiLCJtYXBwaW5ncyI6IkNBQUEsU0FBMkNBLEVBQU1DLEdBQzFCLGlCQUFaQyxTQUEwQyxpQkFBWEMsT0FDeENBLE9BQU9ELFFBQVVELEVBQVFHLFFBQVEsVUFDUixtQkFBWEMsUUFBeUJBLE9BQU9DLElBQzlDRCxPQUFPLHFFQUFzRSxDQUFDLFNBQVVKLEdBQzlELGlCQUFaQyxRQUNkQSxRQUFRLHNFQUF3RUQsRUFBUUcsUUFBUSxVQUVoR0osRUFBSyxzRUFBd0VDLEVBQVFELEVBQVksTUFDbEcsQ0FURCxDQVNvQixvQkFBVE8sS0FBdUJBLEtBQU9DLEtBQU8sU0FBU0MsR0FDekQsTyxvSkNWTyxNQUFNQyxFQUFhLFNBQ2JDLEVBQW1CLENBQUNDLEtBQXNCQyxLQUNuRCxNQUFNQyxFQUFTLEdBV2YsT0FWSUYsR0FDQUUsRUFBT0MsS0FBSyxHQUFHTCxJQUFhRSxLQUVoQ0MsRUFBaUJHLFFBQVFDLElBQ2pCQSxJQUVBSCxFQUFPQyxLQUFLLEdBQUdMLElBQWFPLEtBQzVCSCxFQUFPQyxLQUFLRSxNQUdiSCxFQUFPSSxLQUFLLE0sZ0JDYmhCLE1BQU1DLEVBQ0YseUJBREVBLEVBRUksaUJDc0JYQyxFQUFrQ0MsR0FDdENDLElBQUFBLGNBQUEsT0FDRUMsSUFBUUYsRUFBTUcsTUFBTUMsR0FBRSxtQkFDdEIsZUFBaUJKLEVBQU1HLE1BQU1DLEdBQUUsb0JBRTlCSixHQWdDQ0ssRUFHRkEsQ0FBQ0YsRUFBT0csS0FDVixNQUFNLEdBQ0pGLEVBQUUsVUFDRlIsRUFBUyxPQUNUVyxFQUFTLEdBQUUsa0JBQ1hDLEVBQW9CLEdBQUUsU0FDdEJDLEVBQVEsZ0JBQ1JDLEVBQWtCLEdBQUUsZUFDcEJDLEVBQWlCLEdBQUUsd0JBQ25CQyxFQUEwQmIsR0FDeEJJLEVBQ0VVLEVBQWdCWixJQUFBQSxTQUFlYSxRQUFRTCxLQUV2Q00sRUFB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RixHQUVGbUQsU0FBVUEsRUFDVlosS0FBTUEsR0FDRlcsR0FFSHJDLElDUlAsTUFwQmtENkUsSUFJM0MsSUFKNEMsYUFDakQxQyxFQUFZLFNBQ1puQyxFQUFRLFdBQ1JpRixHQUNESixFQUNDLE9BQ0VyRixFQUFBQSxjQUFDMkYsRUFBY2hFLElBQUEsR0FDVGdCLEVBQVksQ0FDaEIyQyxjQUFlRyxFQUFXL0csS0FDMUIrRyxXQUFZQSxJQUVaekYsRUFBQUEsY0FBQSxPQUFLTCxVQUFXOEYsRUFBV0csd0JBQzNCNUYsRUFBQUEsY0FBQSxPQUFLTCxVQUFXOEYsRUFBV0ksaUJBQ3pCN0YsRUFBQUEsY0FBQSxPQUFLTCxVQUFXOEYsRUFBV0ssb0JBQzNCOUYsRUFBQUEsY0FBQSxPQUFLTCxVQUFXOEYsRUFBV00sZUFBZ0J2RixNQ2RuRCxNQUZJTixHQUFTRixJQUFBQSxjQUFDZ0csRUFBY3JFLElBQUEsR0FBS3pCLEVBQUssQ0FBRXVGLFdBQVlRLEssWUNNcEQsTUFKSS9GLEdBQ0ZGLElBQUFBLGNBQUNrRyxFQUFBQSxRQUFldkUsSUFBQSxHQUFLekIsRUFBSyxDQUFFNEIsS0FBTXFFLEkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL2VkaXRvci1lbGVtZW50cy1jb21tb24tdXRpbHMvZGlzdC9lc20vY3NzRWRpdGluZy9jbGFzcy1uYW1lcy1mb3JtbWF0ZXIuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvdGh1bmRlcmJvbHQtY29yZS1jb21wb25lbnRzL01lc2hDb250YWluZXIvY29uc3RhbnRzLnRzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL3RodW5kZXJib2x0LWNvcmUtY29tcG9uZW50cy9NZXNoQ29udGFpbmVyL3ZpZXdlci9NZXNoQ29udGFpbmVyLnRzeCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL0Zvb3RlckNvbnRhaW5lci9Gb290ZXJDb250YWluZXIuc2VtYW50aWNDbGFzc05hbWVzLnRzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvRm9vdGVyQ29udGFpbmVyL3ZpZXdlci9Gb290ZXJDb250YWluZXIudHN4Iiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vZWRpdG9yLWVsZW1lbnRzLWNvbW1vbi11dGlscy9kaXN0L2VzbS9jb21tb25zL3V0aWxzLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvZXh0ZXJuYWwgdW1kIHtcImFtZFwiOlwicmVhY3RcIixcImNvbW1vbmpzXCI6XCJyZWFjdFwiLFwiY29tbW9uanMyXCI6XCJyZWFjdFwiLFwicm9vdFwiOlwiUmVhY3RcIn0iLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nsc3gvZGlzdC9jbHN4Lm1qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL1NjcmVlbldpZHRoQ29udGFpbmVyL3ZpZXdlci9za2luQ29tcHMvQmFzZVNjcmVlbi9zdHlsZXMvVHJhbnNwYXJlbnRTY3JlZW4uc2NzcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL1NjcmVlbldpZHRoQ29udGFpbmVyL3ZpZXdlci9XcmFwcGVyRWxlbWVudC50c3giLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvY29tcG9uZW50cy9TY3JlZW5XaWR0aENvbnRhaW5lci92aWV3ZXIvc2tpbkNvbXBzL0Jhc2VTY3JlZW4vQmFzZVNjcmVlblNraW4udHN4Iiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvU2NyZWVuV2lkdGhDb250YWluZXIvdmlld2VyL3NraW5Db21wcy9CYXNlU2NyZWVuL1RyYW5zcGFyZW50U2NyZWVuLnRzeCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL0Zvb3RlckNvbnRhaW5lci92aWV3ZXIvc2tpbkNvbXBzL0Jhc2VTY3JlZW4vVHJhbnNwYXJlbnRTY3JlZW4uc2tpbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwicmVhY3RcIikpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoXCJ0aHVuZGVyYm9sdC9za2luL0Zvb3RlckNvbnRhaW5lci9UcmFuc3BhcmVudFNjcmVlbi9Gb290ZXJDb250YWluZXJcIiwgW1wicmVhY3RcIl0sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1widGh1bmRlcmJvbHQvc2tpbi9Gb290ZXJDb250YWluZXIvVHJhbnNwYXJlbnRTY3JlZW4vRm9vdGVyQ29udGFpbmVyXCJdID0gZmFjdG9yeShyZXF1aXJlKFwicmVhY3RcIikpO1xuXHRlbHNlXG5cdFx0cm9vdFtcInRodW5kZXJib2x0L3NraW4vRm9vdGVyQ29udGFpbmVyL1RyYW5zcGFyZW50U2NyZWVuL0Zvb3RlckNvbnRhaW5lclwiXSA9IGZhY3Rvcnkocm9vdFtcIlJlYWN0XCJdKTtcbn0pKCh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDogdGhpcyksIGZ1bmN0aW9uKF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfWGRmX19fKSB7XG5yZXR1cm4gIiwiZXhwb3J0IGNvbnN0IENTU19QUkVGSVggPSAnd2l4dWktJztcbmV4cG9ydCBjb25zdCBmb3JtYXRDbGFzc05hbWVzID0gKHNlbWFudGljQ2xhc3NOYW1lLCAuLi5jdXN0b21DbGFzc05hbWVzKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgaWYgKHNlbWFudGljQ2xhc3NOYW1lKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGAke0NTU19QUkVGSVh9JHtzZW1hbnRpY0NsYXNzTmFtZX1gKTtcbiAgICB9XG4gICAgY3VzdG9tQ2xhc3NOYW1lcy5mb3JFYWNoKGNsYXNzTmFtZSA9PiB7XG4gICAgICAgIGlmIChjbGFzc05hbWUpIHtcbiAgICAgICAgICAgIC8vIGFkZCBlYWNoIGN1c3RvbSBjbGFzcyB3aXRoIGFuZCB3aXRob3V0IHRoZSBwcmVmaXhcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGAke0NTU19QUkVGSVh9JHtjbGFzc05hbWV9YCk7XG4gICAgICAgICAgICByZXN1bHQucHVzaChjbGFzc05hbWUpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdC5qb2luKCcgJyk7XG59O1xuLy8gcmVtb3ZlIHdoZW4gaHR0cHM6Ly9naXRodWIuY29tL3NlYXJjaD9xPXJlcG8lM0F3aXgtcHJpdmF0ZSUyRnRodW5kZXJib2x0JTIwY3VzdG9tQ3NzQ2xhc3NlcyZ0eXBlPWNvZGUgaGFzIG5vIHVzYWdlc1xuZXhwb3J0IGNvbnN0IGN1c3RvbUNzc0NsYXNzZXMgPSAoLi4uY2xhc3NOYW1lcykgPT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgY29uc29sZS53YXJuKCdjdXN0b21Dc3NDbGFzc2VzIGlzIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2UgZm9ybWF0Q2xhc3NOYW1lcyBpbnN0ZWFkJyk7XG4gICAgY29uc3QgW3NlbWFudGljLCAuLi5yZXN0XSA9IGNsYXNzTmFtZXM7XG4gICAgcmV0dXJuIGZvcm1hdENsYXNzTmFtZXMoc2VtYW50aWMsIC4uLnJlc3QpO1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNsYXNzLW5hbWVzLWZvcm1tYXRlci5qcy5tYXAiLCJleHBvcnQgY29uc3QgVGVzdElkcyA9IHtcbiAgY29udGVudDogJ21lc2gtY29udGFpbmVyLWNvbnRlbnQnLFxuICBpbmxpbmVDb250ZW50OiAnaW5saW5lLWNvbnRlbnQnLFxufSBhcyBjb25zdDtcbiIsImltcG9ydCB0eXBlIHtcbiAgRGVmYXVsdENvbXBQbGF0Zm9ybVByb3BzLFxuICBEZWZhdWx0Q29udGFpbmVyUHJvcHMsXG59IGZyb20gJ0B3aXgvZWRpdG9yLWVsZW1lbnRzLXR5cGVzL3RodW5kZXJib2x0JztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHR5cGUgeyBSZWFjdEVsZW1lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZ2V0RGF0YUF0dHJpYnV0ZXMgfSBmcm9tICdAd2l4L2VkaXRvci1lbGVtZW50cy1jb21tb24tdXRpbHMnO1xuaW1wb3J0IHsgVGVzdElkcyB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmV4cG9ydCB0eXBlIE1lc2hDb250YWluZXJQcm9wcyA9IERlZmF1bHRDb21wUGxhdGZvcm1Qcm9wcyAmXG4gIERlZmF1bHRDb250YWluZXJQcm9wcyAmIHtcbiAgICB3ZWRnZXM/OiBBcnJheTxzdHJpbmc+O1xuICAgIHJvdGF0ZWRDb21wb25lbnRzPzogQXJyYXk8c3RyaW5nPjtcbiAgICBmaXhlZENvbXBvbmVudHM/OiBBcnJheTxzdHJpbmc+O1xuICAgIGV4dHJhQ2xhc3NOYW1lPzogc3RyaW5nO1xuICAgIHJlbmRlclJvdGF0ZWRDb21wb25lbnRzPzogKGNoaWxkOiBSZWFjdEVsZW1lbnQpID0+IFJlYWN0RWxlbWVudDtcbiAgfTtcblxuY29uc3QgUkVQRUFURVJfREVMSU1JVEVSID0gJ19fJztcblxuY29uc3QgZ2V0VGVtcGxhdGVJZCA9IChjb21wOiBSZWFjdEVsZW1lbnQpID0+XG4gIGNvbXAucHJvcHMuaWQuc3BsaXQoUkVQRUFURVJfREVMSU1JVEVSKVswXTtcblxuY29uc3QgcmVuZGVyUm90YXRlZENvbXBvbmVudHNXcmFwcGVyID0gKGNoaWxkOiBSZWFjdEVsZW1lbnQpOiBSZWFjdEVsZW1lbnQgPT4gKFxuICA8ZGl2XG4gICAga2V5PXtgJHtjaGlsZC5wcm9wcy5pZH0tcm90YXRlZC13cmFwcGVyYH1cbiAgICBkYXRhLW1lc2gtaWQ9e2Ake2NoaWxkLnByb3BzLmlkfS1yb3RhdGVkLXdyYXBwZXJgfVxuICA+XG4gICAge2NoaWxkfVxuICA8L2Rpdj5cbik7XG5cbnR5cGUgUmVuZGVyQ2hpbGRyZW5Qcm9wcyA9IHtcbiAgd2VkZ2VzOiBBcnJheTxzdHJpbmc+O1xuICByb3RhdGVkQ29tcG9uZW50czogQXJyYXk8c3RyaW5nPjtcbiAgY2hpbGRyZW5BcnJheTogQXJyYXk8UmVhY3QuUmVhY3ROb2RlPjtcbiAgcmVuZGVyUm90YXRlZENvbXBvbmVudHM6IChjaGlsZDogUmVhY3RFbGVtZW50KSA9PiBSZWFjdEVsZW1lbnQ7XG59O1xuXG5jb25zdCByZW5kZXJDaGlsZHJlbiA9IChwcm9wczogUmVuZGVyQ2hpbGRyZW5Qcm9wcykgPT4ge1xuICBjb25zdCB7IHdlZGdlcywgcm90YXRlZENvbXBvbmVudHMsIGNoaWxkcmVuQXJyYXksIHJlbmRlclJvdGF0ZWRDb21wb25lbnRzIH0gPVxuICAgIHByb3BzO1xuICBjb25zdCByb3RhdGVkQ29tcG9uZW50c1NldDogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPVxuICAgIHJvdGF0ZWRDb21wb25lbnRzLnJlZHVjZShcbiAgICAgIChhY2MsIHJvdGF0ZWRDb21wb25lbnQpID0+ICh7IC4uLmFjYywgW3JvdGF0ZWRDb21wb25lbnRdOiB0cnVlIH0pLFxuICAgICAge30sXG4gICAgKTtcblxuICBjb25zdCByZW5kZXJlZFJvdGF0ZWRDb21wb25lbnRzID0gY2hpbGRyZW5BcnJheS5tYXAoY2hpbGQgPT5cbiAgICByb3RhdGVkQ29tcG9uZW50c1NldFtnZXRUZW1wbGF0ZUlkKGNoaWxkIGFzIFJlYWN0LlJlYWN0RWxlbWVudCldXG4gICAgICA/IHJlbmRlclJvdGF0ZWRDb21wb25lbnRzKGNoaWxkIGFzIFJlYWN0LlJlYWN0RWxlbWVudClcbiAgICAgIDogY2hpbGQsXG4gICk7XG4gIGNvbnN0IHJlbmRlcmVkV2VkZ2VzID0gd2VkZ2VzLm1hcCh3ZWRnZSA9PiAoXG4gICAgPGRpdiBrZXk9e3dlZGdlfSBkYXRhLW1lc2gtaWQ9e3dlZGdlfSAvPlxuICApKTtcblxuICByZXR1cm4gWy4uLnJlbmRlcmVkUm90YXRlZENvbXBvbmVudHMsIC4uLnJlbmRlcmVkV2VkZ2VzXTtcbn07XG5cbmNvbnN0IE1lc2hDb250YWluZXI6IFJlYWN0LkZvcndhcmRSZWZSZW5kZXJGdW5jdGlvbjxcbiAgSFRNTERpdkVsZW1lbnQsXG4gIE1lc2hDb250YWluZXJQcm9wc1xuPiA9IChwcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBpZCxcbiAgICBjbGFzc05hbWUsXG4gICAgd2VkZ2VzID0gW10sXG4gICAgcm90YXRlZENvbXBvbmVudHMgPSBbXSxcbiAgICBjaGlsZHJlbixcbiAgICBmaXhlZENvbXBvbmVudHMgPSBbXSxcbiAgICBleHRyYUNsYXNzTmFtZSA9ICcnLFxuICAgIHJlbmRlclJvdGF0ZWRDb21wb25lbnRzID0gcmVuZGVyUm90YXRlZENvbXBvbmVudHNXcmFwcGVyLFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IGNoaWxkcmVuQXJyYXkgPSBSZWFjdC5DaGlsZHJlbi50b0FycmF5KGNoaWxkcmVuKCkpO1xuXG4gIGNvbnN0IGZpeGVkQ2hpbGRyZW46IEFycmF5PFJlYWN0LlJlYWN0Tm9kZT4gPSBbXTtcbiAgY29uc3Qgbm9uRml4ZWRDaGlsZHJlbjogQXJyYXk8UmVhY3QuUmVhY3ROb2RlPiA9IFtdO1xuXG4gIGNoaWxkcmVuQXJyYXkuZm9yRWFjaChjb21wID0+XG4gICAgZml4ZWRDb21wb25lbnRzLmluY2x1ZGVzKChjb21wIGFzIFJlYWN0LlJlYWN0RWxlbWVudCkucHJvcHMuaWQpXG4gICAgICA/IGZpeGVkQ2hpbGRyZW4ucHVzaChjb21wKVxuICAgICAgOiBub25GaXhlZENoaWxkcmVuLnB1c2goY29tcCksXG4gICk7XG5cbiAgY29uc3QgbWVzaENoaWxkcmVuID0gcmVuZGVyQ2hpbGRyZW4oe1xuICAgIGNoaWxkcmVuQXJyYXk6IG5vbkZpeGVkQ2hpbGRyZW4sXG4gICAgcm90YXRlZENvbXBvbmVudHMsXG4gICAgd2VkZ2VzLFxuICAgIHJlbmRlclJvdGF0ZWRDb21wb25lbnRzLFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5nZXREYXRhQXR0cmlidXRlcyhwcm9wcyl9XG4gICAgICBkYXRhLW1lc2gtaWQ9e2Ake2lkfWlubGluZUNvbnRlbnRgfVxuICAgICAgZGF0YS10ZXN0aWQ9e1Rlc3RJZHMuaW5saW5lQ29udGVudH1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhjbGFzc05hbWUsIGV4dHJhQ2xhc3NOYW1lKX1cbiAgICAgIHJlZj17cmVmfVxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgZGF0YS1tZXNoLWlkPXtgJHtpZH1pbmxpbmVDb250ZW50LWdyaWRDb250YWluZXJgfVxuICAgICAgICBkYXRhLXRlc3RpZD17VGVzdElkcy5jb250ZW50fVxuICAgICAgPlxuICAgICAgICB7bWVzaENoaWxkcmVufVxuICAgICAgPC9kaXY+XG4gICAgICB7Zml4ZWRDaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlYWN0LmZvcndhcmRSZWYoTWVzaENvbnRhaW5lcik7XG4iLCJjb25zdCBzZW1hbnRpY0NsYXNzTmFtZXMgPSB7XG4gIHJvb3Q6ICdmb290ZXInLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGRlZmF1bHQgc2VtYW50aWNDbGFzc05hbWVzO1xuIiwiJ3VzZS1jbGllbnQnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xzeCc7XG5pbXBvcnQge1xuICBmb3JtYXRDbGFzc05hbWVzLFxuICBnZXREYXRhQXR0cmlidXRlcyxcbn0gZnJvbSAnQHdpeC9lZGl0b3ItZWxlbWVudHMtY29tbW9uLXV0aWxzJztcbmltcG9ydCBNZXNoQ29udGFpbmVyIGZyb20gJy4uLy4uLy4uL3RodW5kZXJib2x0LWNvcmUtY29tcG9uZW50cy9NZXNoQ29udGFpbmVyL3ZpZXdlci9NZXNoQ29udGFpbmVyJztcbmltcG9ydCB0eXBlIHsgSUZvb3RlckNvbnRhaW5lclByb3BzIH0gZnJvbSAnLi4vRm9vdGVyQ29udGFpbmVyLnR5cGVzJztcbmltcG9ydCBzZW1hbnRpY0NsYXNzTmFtZXMgZnJvbSAnLi4vRm9vdGVyQ29udGFpbmVyLnNlbWFudGljQ2xhc3NOYW1lcyc7XG5cbmNvbnN0IERFRkFVTFRfVEFCX0lOREVYID0gJy0xJztcblxuY29uc3QgRm9vdGVyQ29udGFpbmVyOiBSZWFjdC5GQzxJRm9vdGVyQ29udGFpbmVyUHJvcHM+ID0gcHJvcHMgPT4ge1xuICBjb25zdCB7XG4gICAgaWQsXG4gICAgY2xhc3NOYW1lLFxuICAgIGN1c3RvbUNsYXNzTmFtZXMgPSBbXSxcbiAgICBza2luOiBGb290ZXJDb250YWluZXJDbGFzcyxcbiAgICBjaGlsZHJlbixcbiAgICBtZXNoUHJvcHMsXG4gICAgZmlsbExheWVycyxcbiAgICBsYW5nLFxuICB9ID0gcHJvcHM7XG5cbiAgY29uc3Qgc2RrRXZlbnRIYW5kbGVycyA9IHtcbiAgICBvbk1vdXNlRW50ZXI6IHByb3BzLm9uTW91c2VFbnRlcixcbiAgICBvbk1vdXNlTGVhdmU6IHByb3BzLm9uTW91c2VMZWF2ZSxcbiAgICBvbkNsaWNrOiBwcm9wcy5vbkNsaWNrLFxuICAgIG9uRG91YmxlQ2xpY2s6IHByb3BzLm9uRGJsQ2xpY2ssXG4gIH07XG5cbiAgY29uc3Qgcm9vdENsYXNzTmFtZXMgPSBjbGFzc05hbWVzKFxuICAgIGNsYXNzTmFtZSxcbiAgICBmb3JtYXRDbGFzc05hbWVzKHNlbWFudGljQ2xhc3NOYW1lcy5yb290LCAuLi5jdXN0b21DbGFzc05hbWVzKSxcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxGb290ZXJDb250YWluZXJDbGFzc1xuICAgICAgd3JhcHBlclByb3BzPXt7XG4gICAgICAgIC4uLmdldERhdGFBdHRyaWJ1dGVzKHByb3BzKSxcbiAgICAgICAgbGFuZyxcbiAgICAgICAgaWQsXG4gICAgICAgIHRhZ05hbWU6ICdmb290ZXInLFxuICAgICAgICBldmVudEhhbmRsZXJzOiBzZGtFdmVudEhhbmRsZXJzLFxuICAgICAgICB0YWJJbmRleDogREVGQVVMVF9UQUJfSU5ERVgsXG4gICAgICAgIGNsYXNzTmFtZTogcm9vdENsYXNzTmFtZXMsXG4gICAgICB9fVxuICAgICAgZmlsbExheWVycz17ZmlsbExheWVyc31cbiAgICAgIGRhdGEtYmxvY2stbGV2ZWwtY29udGFpbmVyPVwiRm9vdGVyQ29udGFpbmVyXCJcbiAgICA+XG4gICAgICA8TWVzaENvbnRhaW5lciBpZD17aWR9IHsuLi5tZXNoUHJvcHN9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L01lc2hDb250YWluZXI+XG4gICAgPC9Gb290ZXJDb250YWluZXJDbGFzcz5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZvb3RlckNvbnRhaW5lcjtcbiIsImltcG9ydCB7IGtleUNvZGVzIH0gZnJvbSAnLi9hMTF5JztcbmV4cG9ydCBjb25zdCBpc1RoZW1lRm9udCA9ICh2YWx1ZSkgPT4gL15mb250X1xcZCskLy50ZXN0KHZhbHVlKTtcbmV4cG9ydCBjb25zdCBkZWJvdW5jZSA9IChmbiwgbXMgPSAwLCB7IGxlYWRpbmcgPSBmYWxzZSwgdHJhaWxpbmcgPSB0cnVlIH0gPSB7fSkgPT4ge1xuICAgIGxldCB0aW1lb3V0SWQgPSBudWxsO1xuICAgIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBpZiAobGVhZGluZyAmJiB0aW1lb3V0SWQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aW1lb3V0SWQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdHJhaWxpbmcgfHwgIWxlYWRpbmcgfHwgdGltZW91dElkKSB7XG4gICAgICAgICAgICB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodHJhaWxpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgZm4uYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRpbWVvdXRJZCA9IG51bGw7XG4gICAgICAgICAgICB9LCBtcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIGEgc2luZ2xlIGNhbGwgd2l0aCBib3RoIGxlYWRpbmcgYW5kIHRyYWlsaW5nIChzZWUgdGVzdHMpXG4gICAgICAgICAgICB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aW1lb3V0SWQgPSBudWxsO1xuICAgICAgICAgICAgfSwgbXMpO1xuICAgICAgICB9XG4gICAgfTtcbn07XG5leHBvcnQgY29uc3QgdGhyb3R0bGUgPSAoZnVuYywgbXMgPSAwKSA9PiB7XG4gICAgbGV0IGlzVGhyb3R0bGVkID0gZmFsc2UsIHNhdmVkQXJncztcbiAgICBmdW5jdGlvbiB3cmFwcGVyKC4uLmFyZ3MpIHtcbiAgICAgICAgaWYgKGlzVGhyb3R0bGVkKSB7XG4gICAgICAgICAgICBzYXZlZEFyZ3MgPSBhcmdzO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIGlzVGhyb3R0bGVkID0gdHJ1ZTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpc1Rocm90dGxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHNhdmVkQXJncykge1xuICAgICAgICAgICAgICAgIHdyYXBwZXIuYXBwbHkodGhpcywgc2F2ZWRBcmdzKTtcbiAgICAgICAgICAgICAgICBzYXZlZEFyZ3MgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBtcyk7XG4gICAgfVxuICAgIHJldHVybiB3cmFwcGVyO1xufTtcbmV4cG9ydCBjb25zdCBpc0Jyb3dzZXIgPSAoKSA9PiB0eXBlb2Ygd2luZG93ICE9PSBgdW5kZWZpbmVkYDtcbmV4cG9ydCBjb25zdCBwZXJmb3JtT25FbnRlciA9IChmbikgPT4ge1xuICAgIHJldHVybiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IGtleUNvZGVzLmVudGVyKSB7XG4gICAgICAgICAgICBmbihldmVudCk7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbmV4cG9ydCBjb25zdCBpc0NTU01hc2tTdXBwb3J0ZWQgPSAoKSA9PiB7XG4gICAgaWYgKCFpc0Jyb3dzZXIoKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuICh3aW5kb3cuQ1NTICYmXG4gICAgICAgIHdpbmRvdy5DU1Muc3VwcG9ydHMoJyhtYXNrLXJlcGVhdDogbm8tcmVwZWF0KSBvciAoLXdlYmtpdC1tYXNrLXJlcGVhdDogbm8tcmVwZWF0KScpKTtcbn07XG5leHBvcnQgY29uc3QgaXNFbXB0eU9iamVjdCA9IChvYmopID0+ICFvYmogfHwgKE9iamVjdC5rZXlzKG9iaikubGVuZ3RoID09PSAwICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0KTtcbmV4cG9ydCBjb25zdCBpc1NhZmFyaSA9ICgpID0+IC9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QobmF2aWdhdG9yPy51c2VyQWdlbnQpO1xuLy8gZXZlbiB0aG91Z2ggbmF2aWdhdG9yLnBsYXRmb3JtIGlzIGRlcHJlY2F0ZWQsIGl0J3Mgc3RpbGwgdGhlIG1vc3QgcmVsaWFibGUgd2F5IHRvIGRldGVjdCB0aGUgT1Ncbi8vIHN1Z2dlc3RlZCBieSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvTmF2aWdhdG9yL3BsYXRmb3JtXG4vLyB0aGlzIGZ1bmN0aW9uIGlzIG5vdCB3b3JraW5nIGluIFNTUiBlbnZpcm9ubWVudFxuLy8gc2hvdWxkIGJlIHVzZWQgb25seSBpbiB0aGUgYnJvd3NlciBlbnZpcm9ubWVudFxuZXhwb3J0IGNvbnN0IGlzTWFjID0gKCkgPT4gbmF2aWdhdG9yPy5wbGF0Zm9ybT8udG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCdtYWMnKTtcbmV4cG9ydCBjb25zdCBnZXREYXRhQXR0cmlidXRlcyA9IChwcm9wcykgPT4ge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhwcm9wcykucmVkdWNlKChhY2MsIFtrZXksIHZhbF0pID0+IHtcbiAgICAgICAgaWYgKGtleS5pbmNsdWRlcygnZGF0YS0nKSkge1xuICAgICAgICAgICAgYWNjW2tleV0gPSB2YWw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIHBpY2soc291cmNlLCBrZXlzKSB7XG4gICAgcmV0dXJuIGtleXMucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgICBpZiAoIXNvdXJjZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICBba2V5XTogc291cmNlW2tleV0sXG4gICAgICAgIH07XG4gICAgfSwge30pO1xufVxuZXhwb3J0IGNvbnN0IGlkVG9Db21wUmVmID0gKGlkKSA9PiAoeyBpZCwgdHlwZTogJ0RFU0tUT1AnIH0pO1xuZXhwb3J0IGNvbnN0IGlzV2l4RG9tYWluID0gKHVybCkgPT4gWydlZGl0b3J4LmlvJywgJ3dpeHNpdGUuY29tJywgJ3dpeC5jb20nLCAnd2l4c3R1ZGlvLmlvJ10uc29tZShkb21haW4gPT4gdXJsLmluY2x1ZGVzKGRvbWFpbikpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbHMuanMubWFwIiwibW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX1hkZl9fXzsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHtcbiAgcmV0dXJuIG1vZHVsZS5leHBvcnRzID0gX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAobikge1xuICAgIGZvciAodmFyIGUgPSAxOyBlIDwgYXJndW1lbnRzLmxlbmd0aDsgZSsrKSB7XG4gICAgICB2YXIgdCA9IGFyZ3VtZW50c1tlXTtcbiAgICAgIGZvciAodmFyIHIgaW4gdCkgKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsIHIpICYmIChuW3JdID0gdFtyXSk7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIF9leHRlbmRzLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9leHRlbmRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gcihlKXt2YXIgdCxmLG49XCJcIjtpZihcInN0cmluZ1wiPT10eXBlb2YgZXx8XCJudW1iZXJcIj09dHlwZW9mIGUpbis9ZTtlbHNlIGlmKFwib2JqZWN0XCI9PXR5cGVvZiBlKWlmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdJiYoZj1yKGVbdF0pKSYmKG4mJihuKz1cIiBcIiksbis9Zik7ZWxzZSBmb3IodCBpbiBlKWVbdF0mJihuJiYobis9XCIgXCIpLG4rPXQpO3JldHVybiBufWV4cG9ydCBmdW5jdGlvbiBjbHN4KCl7Zm9yKHZhciBlLHQsZj0wLG49XCJcIjtmPGFyZ3VtZW50cy5sZW5ndGg7KShlPWFyZ3VtZW50c1tmKytdKSYmKHQ9cihlKSkmJihuJiYobis9XCIgXCIpLG4rPXQpO3JldHVybiBufWV4cG9ydCBkZWZhdWx0IGNsc3g7IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0ZnVuY3Rpb24oKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG5cdFx0ZnVuY3Rpb24oKSB7IHJldHVybiBtb2R1bGU7IH07XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBkZWZpbml0aW9uKSB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iaiwgcHJvcCkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7IH0iLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuZXhwb3J0IGRlZmF1bHQge1wic2NyZWVuV2lkdGhCYWNrZ3JvdW5kXCI6XCJsdnhoa1ZcIixcIkhlYWRlckhpZGVUb1RvcFwiOlwiUUpqd0VvXCIsXCJoZWFkZXJIaWRlVG9Ub3BcIjpcIlFKandFb1wiLFwiSGVhZGVySGlkZVRvVG9wUmV2ZXJzZVwiOlwia2RCWGZoXCIsXCJoZWFkZXJIaWRlVG9Ub3BSZXZlcnNlXCI6XCJrZEJYZmhcIixcIkhlYWRlckZhZGVPdXRcIjpcIk1QNTJ6dFwiLFwiaGVhZGVyRmFkZU91dFwiOlwiTVA1Mnp0XCIsXCJ0cmFuc2l0aW9uRW5kZWRcIjpcIkJodTltNVwiLFwiSGVhZGVyRmFkZU91dFJldmVyc2VcIjpcIkxWUDhXZlwiLFwiaGVhZGVyRmFkZU91dFJldmVyc2VcIjpcIkxWUDhXZlwiLFwiaW5saW5lQ29udGVudFwiOlwiVnJackMwXCIsXCJjZW50ZXJlZENvbnRlbnRcIjpcImNLeFZrY1wiLFwiY2VudGVyZWRDb250ZW50QmdcIjpcInZsTTNIUlwiLFwicm9vdFwiOlwiQVQ3bzBVXCJ9OyIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbHN4JztcbmltcG9ydCB0eXBlIHsgU2tpblNjcmVlbldpZHRoQ29udGFpbmVyV3JhcHBlclByb3BzIH0gZnJvbSAnLi4vU2tpblNjcmVlbldpZHRoQ29udGFpbmVyJztcblxuY29uc3QgV3JhcHBlckVsZW1lbnQ6IFJlYWN0LkZDPFxuICBTa2luU2NyZWVuV2lkdGhDb250YWluZXJXcmFwcGVyUHJvcHMgJiB7XG4gICAgc2tpblN0eWxlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgfVxuPiA9ICh7XG4gIGlkLFxuICBjbGFzc05hbWUsXG4gIHNraW5DbGFzc05hbWUsXG4gIHRhZ05hbWUgPSAnZGl2JyxcbiAgdHJhbnNpdGlvbixcbiAgdHJhbnNpdGlvbkVuZGVkLFxuICBldmVudEhhbmRsZXJzLFxuICBza2luU3R5bGVzLFxuICBjaGlsZHJlbixcbiAgdGFiSW5kZXgsXG4gIGxhbmcsXG59KSA9PiB7XG4gIGNvbnN0IFNlbWFudGljRWxlbWVudCA9IHRhZ05hbWUgYXMga2V5b2YgSlNYLkludHJpbnNpY0VsZW1lbnRzO1xuXG4gIHJldHVybiAoXG4gICAgPFNlbWFudGljRWxlbWVudFxuICAgICAgaWQ9e2lkfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKFxuICAgICAgICBza2luQ2xhc3NOYW1lLFxuICAgICAgICB0cmFuc2l0aW9uICYmIHNraW5TdHlsZXNbdHJhbnNpdGlvbl0sXG4gICAgICAgIHRyYW5zaXRpb25FbmRlZCAmJiBza2luU3R5bGVzLnRyYW5zaXRpb25FbmRlZCxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHRhYkluZGV4PXt0YWJJbmRleH1cbiAgICAgIGxhbmc9e2xhbmd9XG4gICAgICB7Li4uZXZlbnRIYW5kbGVyc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9TZW1hbnRpY0VsZW1lbnQ+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXcmFwcGVyRWxlbWVudDtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBXcmFwcGVyRWxlbWVudCBmcm9tICcuLi8uLi9XcmFwcGVyRWxlbWVudCc7XG5pbXBvcnQgeyBTa2luU2NyZWVuV2lkdGhDb250YWluZXJQcm9wcyB9IGZyb20gJy4uLy4uLy4uL1NraW5TY3JlZW5XaWR0aENvbnRhaW5lcic7XG5cbmV4cG9ydCB0eXBlIEJhc2VTY3JlZW5Ta2luUHJvcHMgPSBTa2luU2NyZWVuV2lkdGhDb250YWluZXJQcm9wcyAmIHtcbiAgc2tpblN0eWxlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn07XG5cbmNvbnN0IEJhc2VTY3JlZW46IFJlYWN0LkZDPEJhc2VTY3JlZW5Ta2luUHJvcHM+ID0gKHtcbiAgd3JhcHBlclByb3BzLFxuICBjaGlsZHJlbixcbiAgc2tpblN0eWxlcyxcbn0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8V3JhcHBlckVsZW1lbnRcbiAgICAgIHsuLi53cmFwcGVyUHJvcHN9XG4gICAgICBza2luQ2xhc3NOYW1lPXtza2luU3R5bGVzLnJvb3R9XG4gICAgICBza2luU3R5bGVzPXtza2luU3R5bGVzfVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtza2luU3R5bGVzLnNjcmVlbldpZHRoQmFja2dyb3VuZH0+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c2tpblN0eWxlcy5jZW50ZXJlZENvbnRlbnR9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c2tpblN0eWxlcy5jZW50ZXJlZENvbnRlbnRCZ30+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtza2luU3R5bGVzLmlubGluZUNvbnRlbnR9PntjaGlsZHJlbn08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvV3JhcHBlckVsZW1lbnQ+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBCYXNlU2NyZWVuO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBza2luc1N0eWxlcyBmcm9tICcuL3N0eWxlcy9UcmFuc3BhcmVudFNjcmVlbi5zY3NzJztcbmltcG9ydCBCYXNlU2NyZWVuU2tpbiwgeyBCYXNlU2NyZWVuU2tpblByb3BzIH0gZnJvbSAnLi9CYXNlU2NyZWVuU2tpbic7XG5cbmNvbnN0IFRyYW5zcGFyZW50U2NyZWVuOiBSZWFjdC5GQzxcbiAgT21pdDxCYXNlU2NyZWVuU2tpblByb3BzLCAnc2tpbicgfCAnc2tpblN0eWxlcyc+XG4+ID0gcHJvcHMgPT4gPEJhc2VTY3JlZW5Ta2luIHsuLi5wcm9wc30gc2tpblN0eWxlcz17c2tpbnNTdHlsZXN9IC8+O1xuXG5leHBvcnQgZGVmYXVsdCBUcmFuc3BhcmVudFNjcmVlbjtcbiIsIid1c2UtY2xpZW50JztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7IElGb290ZXJDb250YWluZXJQcm9wcyB9IGZyb20gJy4uLy4uLy4uL0Zvb3RlckNvbnRhaW5lci50eXBlcyc7XG5pbXBvcnQgVHJhbnNwYXJlbnRTY3JlZW4gZnJvbSAnLi4vLi4vLi4vLi4vU2NyZWVuV2lkdGhDb250YWluZXIvdmlld2VyL3NraW5Db21wcy9CYXNlU2NyZWVuL1RyYW5zcGFyZW50U2NyZWVuJztcbmltcG9ydCBGb290ZXJDb250YWluZXIgZnJvbSAnLi4vLi4vRm9vdGVyQ29udGFpbmVyJztcblxuY29uc3QgVHJhbnNwYXJlbnRTY3JlZW5Gb290ZXI6IFJlYWN0LkZDPFxuICBPbWl0PElGb290ZXJDb250YWluZXJQcm9wcywgJ3NraW4nPlxuPiA9IHByb3BzID0+IChcbiAgPEZvb3RlckNvbnRhaW5lciB7Li4ucHJvcHN9IHNraW49e1RyYW5zcGFyZW50U2NyZWVufT48L0Zvb3RlckNvbnRhaW5lcj5cbik7XG5cbmV4cG9ydCBkZWZhdWx0IFRyYW5zcGFyZW50U2NyZWVuRm9vdGVyO1xuIl0sIm5hbWVzIjpbInJvb3QiLCJmYWN0b3J5IiwiZXhwb3J0cyIsIm1vZHVsZSIsInJlcXVpcmUiLCJkZWZpbmUiLCJhbWQiLCJzZWxmIiwidGhpcyIsIl9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfWGRmX19fIiwiQ1NTX1BSRUZJWCIsImZvcm1hdENsYXNzTmFtZXMiLCJzZW1hbnRpY0NsYXNzTmFtZSIsImN1c3RvbUNsYXNzTmFtZXMiLCJyZXN1bHQiLCJwdXNoIiwiZm9yRWFjaCIsImNsYXNzTmFtZSIsImpvaW4iLCJUZXN0SWRzIiwicmVuZGVyUm90YXRlZENvbXBvbmVudHNXcmFwcGVyIiwiY2hpbGQiLCJSZWFjdCIsImtleSIsInByb3BzIiwiaWQiLCJNZXNoQ29udGFpbmVyIiwicmVmIiwid2VkZ2VzIiwicm90YXRlZENvbXBvbmVudHMiLCJjaGlsZHJlbiIsImZpeGVkQ29tcG9uZW50cyIsImV4dHJhQ2xhc3NOYW1lIiwicmVuZGVyUm90YXRlZENvbXBvbmVudHMiLCJjaGlsZHJlbkFycmF5IiwidG9BcnJheSIsImZpeGVkQ2hpbGRyZW4iLCJub25GaXhlZENoaWxkcmVuIiwiY29tcCIsImluY2x1ZGVzIiwibWVzaENoaWxkcmVuIiwicm90YXRlZENvbXBvbmVudHNTZXQiLCJyZWR1Y2UiLCJhY2MiLCJyb3RhdGVkQ29tcG9uZW50IiwibWFwIiwic3BsaXQiLCJ3ZWRnZSIsInJlbmRlckNoaWxkcmVuIiwiX2V4dGVuZHMiLCJnZXREYXRhQXR0cmlidXRlcyIsImNsYXNzTmFtZXMiLCJza2luIiwiRm9vdGVyQ29udGFpbmVyQ2xhc3MiLCJtZXNoUHJvcHMiLCJmaWxsTGF5ZXJzIiwibGFuZyIsInNka0V2ZW50SGFuZGxlcnMiLCJvbk1vdXNlRW50ZXIiLCJvbk1vdXNlTGVhdmUiLCJvbkNsaWNrIiwib25Eb3VibGVDbGljayIsIm9uRGJsQ2xpY2siLCJyb290Q2xhc3NOYW1lcyIsInNlbWFudGljQ2xhc3NOYW1lcyIsIndyYXBwZXJQcm9wcyIsInRhZ05hbWUiLCJldmVudEhhbmRsZXJzIiwidGFiSW5kZXgiLCJPYmplY3QiLCJlbnRyaWVzIiwidmFsIiwiYXNzaWduIiwiYmluZCIsIm4iLCJlIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidCIsInIiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJfX2VzTW9kdWxlIiwiYXBwbHkiLCJmIiwiQXJyYXkiLCJpc0FycmF5IiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwidW5kZWZpbmVkIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsImdldHRlciIsImQiLCJhIiwiZGVmaW5pdGlvbiIsIm8iLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJvYmoiLCJwcm9wIiwicHJvdG90eXBlIiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJ2YWx1ZSIsIl9yZWYiLCJza2luQ2xhc3NOYW1lIiwidHJhbnNpdGlvbiIsInRyYW5zaXRpb25FbmRlZCIsInNraW5TdHlsZXMiLCJTZW1hbnRpY0VsZW1lbnQiLCJXcmFwcGVyRWxlbWVudCIsInNjcmVlbldpZHRoQmFja2dyb3VuZCIsImNlbnRlcmVkQ29udGVudCIsImNlbnRlcmVkQ29udGVudEJnIiwiaW5saW5lQ29udGVudCIsIkJhc2VTY3JlZW5Ta2luIiwic2tpbnNTdHlsZXMiLCJGb290ZXJDb250YWluZXIiLCJUcmFuc3BhcmVudFNjcmVlbiJdLCJzb3VyY2VSb290IjoiIn0=","'use client';\nimport React from 'react';\nimport { useStateOverrides } from '@wix/builder-state-react';\n/**\n * An HOC that gets a container component that expects children as a function (like EditorElement components)\n * and returns a container component that gets children as an array.\n */\nexport const withNormalChildren = (Component) => ({ children, ...props }) => React.createElement(Component, { ...props }, () => children || []);\n/**\n * An HOC that connects a component to its EditorElements controller.\n * As this is a special code for EditorElements, it should be moved to their project in the future.\n *\n * Note:\n * Since the controller can update props, and since they have to be synced with velo if exists,\n * every component with a controller should be connected by default. Since the consumer (widget genreated code)\n * doesn't always connect the component, we do the connection here for now.\n */\nexport const withController = (Component, controller) => (props) => {\n const [propsOverrides = {}, , setters] = useStateOverrides(props.nickname);\n const controllerProps = controller.useComponentProps({ ...props, ...propsOverrides }, {}, setters);\n return React.createElement(Component, { ...props, ...controllerProps });\n};\n//# sourceMappingURL=hocs.js.map","'use client';\nimport Component from '@wix/editor-components/skin/FooterContainer/TransparentScreen';\nimport '@wix/editor-components/skin/FooterContainer/TransparentScreen/css';\nimport { withNormalChildren } from './hocs';\nexport const FooterContainer_TransparentScreen = withNormalChildren(Component);\n//# sourceMappingURL=FooterContainer_TransparentScreen.js.map","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\")):\"function\"==typeof define&&define.amd?define(\"thunderbolt/component/FooterSection/FooterSection\",[\"react\"],t):\"object\"==typeof exports?exports[\"thunderbolt/component/FooterSection/FooterSection\"]=t(require(\"react\")):e[\"thunderbolt/component/FooterSection/FooterSection\"]=t(e.React)}(\"undefined\"!=typeof self?self:this,function(e){return function(){var t={iCIt:function(e,t,i){\"use strict\";i.d(t,{default:function(){return ai}});var a={};i.r(a),i.d(a,{STATIC_MEDIA_URL:function(){return it},ph:function(){return Qe}});var n=i(\"Fe5V\"),r=i.n(n),o=i(\"Xdf/\"),c=i.n(o),s=i(\"MRkx\");const l=\"wixui-\",d=(e,...t)=>{const i=[];return e&&i.push(`${l}${e}`),t.forEach(e=>{e&&(i.push(`${l}${e}`),i.push(e))}),i.join(\" \")};var u=i(\"guqK\");const h=13,g=27;function m(e){return t=>{t.keyCode===e&&(t.preventDefault(),t.stopPropagation(),t.currentTarget.click())}}m(32),m(h),m(g);const f=\"section-container\";var p=\"jhxvbR\";const _=\"v1\",T=2,I=1920,E=1920,L=1e3,b=1e3,A={SCALE_TO_FILL:\"fill\",SCALE_TO_FIT:\"fit\",STRETCH:\"stretch\",ORIGINAL_SIZE:\"original_size\",TILE:\"tile\",TILE_HORIZONTAL:\"tile_horizontal\",TILE_VERTICAL:\"tile_vertical\",FIT_AND_TILE:\"fit_and_tile\",LEGACY_STRIP_TILE:\"legacy_strip_tile\",LEGACY_STRIP_TILE_HORIZONTAL:\"legacy_strip_tile_horizontal\",LEGACY_STRIP_TILE_VERTICAL:\"legacy_strip_tile_vertical\",LEGACY_STRIP_SCALE_TO_FILL:\"legacy_strip_fill\",LEGACY_STRIP_SCALE_TO_FIT:\"legacy_strip_fit\",LEGACY_STRIP_FIT_AND_TILE:\"legacy_strip_fit_and_tile\",LEGACY_STRIP_ORIGINAL_SIZE:\"legacy_strip_original_size\",LEGACY_ORIGINAL_SIZE:\"actual_size\",LEGACY_FIT_WIDTH:\"fitWidth\",LEGACY_FIT_HEIGHT:\"fitHeight\",LEGACY_FULL:\"full\",LEGACY_BG_FIT_AND_TILE:\"legacy_tile\",LEGACY_BG_FIT_AND_TILE_HORIZONTAL:\"legacy_tile_horizontal\",LEGACY_BG_FIT_AND_TILE_VERTICAL:\"legacy_tile_vertical\",LEGACY_BG_NORMAL:\"legacy_normal\"},y={FIT:\"fit\",FILL:\"fill\",FILL_FOCAL:\"fill_focal\",CROP:\"crop\",LEGACY_CROP:\"legacy_crop\",LEGACY_FILL:\"legacy_fill\"},M={CENTER:\"center\",TOP:\"top\",TOP_LEFT:\"top_left\",TOP_RIGHT:\"top_right\",BOTTOM:\"bottom\",BOTTOM_LEFT:\"bottom_left\",BOTTOM_RIGHT:\"bottom_right\",LEFT:\"left\",RIGHT:\"right\"},w={[M.CENTER]:{x:.5,y:.5},[M.TOP_LEFT]:{x:0,y:0},[M.TOP_RIGHT]:{x:1,y:0},[M.TOP]:{x:.5,y:0},[M.BOTTOM_LEFT]:{x:0,y:1},[M.BOTTOM_RIGHT]:{x:1,y:1},[M.BOTTOM]:{x:.5,y:1},[M.RIGHT]:{x:1,y:.5},[M.LEFT]:{x:0,y:.5}},v={center:\"c\",top:\"t\",top_left:\"tl\",top_right:\"tr\",bottom:\"b\",bottom_left:\"bl\",bottom_right:\"br\",left:\"l\",right:\"r\"},O={BG:\"bg\",IMG:\"img\",SVG:\"svg\"},S={AUTO:\"auto\",CLASSIC:\"classic\",SUPER:\"super\"},C={classic:1,super:2},G={radius:\"0.66\",amount:\"1.00\",threshold:\"0.01\"},R={uri:\"\",css:{img:{},container:{}},attr:{img:{},container:{}},transformed:!1},F=25e6,N=[1.5,2,4],P={HIGH:{size:196e4,quality:90,maxUpscale:1},MEDIUM:{size:36e4,quality:85,maxUpscale:1},LOW:{size:16e4,quality:80,maxUpscale:1.2},TINY:{size:0,quality:80,maxUpscale:1.4}},x={HIGH:\"HIGH\",MEDIUM:\"MEDIUM\",LOW:\"LOW\",TINY:\"TINY\"},k={CONTRAST:\"contrast\",BRIGHTNESS:\"brightness\",SATURATION:\"saturation\",HUE:\"hue\",BLUR:\"blur\"},B={JPG:\"jpg\",JPEG:\"jpeg\",JPE:\"jpe\",PNG:\"png\",WEBP:\"webp\",WIX_ICO_MP:\"wix_ico_mp\",WIX_MP:\"wix_mp\",GIF:\"gif\",SVG:\"svg\",AVIF:\"avif\",UNRECOGNIZED:\"unrecognized\"},H={AVIF:\"AVIF\",PAVIF:\"PAVIF\"};B.JPG,B.JPEG,B.JPE,B.PNG,B.GIF,B.WEBP;function Y(e,...t){return function(...i){const a=i[i.length-1]||{},n=[e[0]];return t.forEach(function(t,r){const o=Number.isInteger(t)?i[t]:a[t];n.push(o,e[r+1])}),n.join(\"\")}}function U(e){return e[e.length-1]}const $=[B.PNG,B.JPEG,B.JPG,B.JPE,B.WIX_ICO_MP,B.WIX_MP,B.WEBP,B.AVIF],z=[B.JPEG,B.JPG,B.JPE];function Z(e,t,i){return i&&t&&!(!(a=t.id)||!a.trim()||\"none\"===a.toLowerCase())&&Object.values(A).includes(e);var a}function j(e,t,i,a){if(/(^https?)|(^data)|(^\\/\\/)/.test(e))return!1;if(!function(e,t,i){return!(V(e)||q(e))||!t||i}(e,t,i))return!1;const n=function(e){return $.includes(ee(e))}(e),r=function(e,t,i){return!(!W(e)||!t&&!i)}(e,i,a);return n||r}function D(e){return ee(e)===B.PNG}function V(e){return ee(e)===B.WEBP}function W(e){return ee(e)===B.GIF}function q(e){return ee(e)===B.AVIF}const J=[\"/\",\"\\\\\",\"?\",\"<\",\">\",\"|\",\"\\u201c\",\":\",'\"'].map(encodeURIComponent),K=[\"\\\\.\",\"\\\\*\"],X=\"_\";function Q(e){return function(e){return z.includes(ee(e))}(e)?B.JPG:D(e)?B.PNG:V(e)?B.WEBP:W(e)?B.GIF:q(e)?B.AVIF:B.UNRECOGNIZED}function ee(e){return(/[.]([^.]+)$/.exec(e)&&/[.]([^.]+)$/.exec(e)[1]||\"\").toLowerCase()}function te(e,t,i,a,n){let r;return r=n===y.FILL?function(e,t,i,a){return Math.max(i/e,a/t)}(e,t,i,a):n===y.FIT?function(e,t,i,a){return Math.min(i/e,a/t)}(e,t,i,a):1,r}function ie(e,t,i,a,n,r){e=e||a.width,t=t||a.height;const{scaleFactor:o,width:c,height:s}=function(e,t,i,a,n){let r,o=i,c=a;if(r=te(e,t,i,a,n),n===y.FIT&&(o=e*r,c=t*r),o&&c&&o*c>F){const i=Math.sqrt(F/(o*c));o*=i,c*=i,r=te(e,t,o,c,n)}return{scaleFactor:r,width:o,height:c}}(e,t,a.width*n,a.height*n,i);return function(e,t,i,a,n,r,o){const{optimizedScaleFactor:c,upscaleMethodValue:s,forceUSM:l}=function(e,t,i,a){if(\"auto\"===a)return function(e,t){const i=oe(e,t);return{optimizedScaleFactor:P[i].maxUpscale,upscaleMethodValue:C.classic,forceUSM:!1}}(e,t);if(\"super\"===a)return function(e){return{optimizedScaleFactor:U(N),upscaleMethodValue:C.super,forceUSM:!(N.includes(e)||e>U(N))}}(i);return function(e,t){const i=oe(e,t);return{optimizedScaleFactor:P[i].maxUpscale,upscaleMethodValue:C.classic,forceUSM:!1}}(e,t)}(e,t,r,n);let d=i,u=a;if(r<=c)return{width:d,height:u,scaleFactor:r,upscaleMethodValue:s,forceUSM:l,cssUpscaleNeeded:!1};switch(o){case y.FILL:d=i*(c/r),u=a*(c/r);break;case y.FIT:d=e*c,u=t*c}return{width:d,height:u,scaleFactor:c,upscaleMethodValue:s,forceUSM:l,cssUpscaleNeeded:!0}}(e,t,c,s,r,o,i)}function ae(e,t,i,a){const n=re(i)||function(e=M.CENTER){return w[e]}(a);return{x:Math.max(0,Math.min(e.width-t.width,n.x*e.width-t.width/2)),y:Math.max(0,Math.min(e.height-t.height,n.y*e.height-t.height/2)),width:Math.min(e.width,t.width),height:Math.min(e.height,t.height)}}function ne(e){return e.alignment&&v[e.alignment]||v[M.CENTER]}function re(e){let t;return!e||\"number\"!=typeof e.x||isNaN(e.x)||\"number\"!=typeof e.y||isNaN(e.y)||(t={x:ce(Math.max(0,Math.min(100,e.x))/100,2),y:ce(Math.max(0,Math.min(100,e.y))/100,2)}),t}function oe(e,t){const i=e*t;return i>P[x.HIGH].size?x.HIGH:i>P[x.MEDIUM].size?x.MEDIUM:i>P[x.LOW].size?x.LOW:x.TINY}function ce(e,t){const i=Math.pow(10,t||0);return(e*i/i).toFixed(t)}function se(e){return e&&e.upscaleMethod&&S[e.upscaleMethod.toUpperCase()]||S.AUTO}function le(e,t){const i=V(e)||q(e);return ee(e)===B.GIF||i&&t}const de={isMobile:!1},ue=function(e){return de[e]};function he(){if(\"undefined\"!=typeof window&&\"undefined\"!=typeof navigator){const t=window.matchMedia&&window.matchMedia(\"(max-width: 767px)\").matches,i=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);e=t&&i,de[\"isMobile\"]=e}var e}function ge(e,t){const i={css:{container:{}}},{css:a}=i,{fittingType:n}=e;switch(n){case A.ORIGINAL_SIZE:case A.LEGACY_ORIGINAL_SIZE:case A.LEGACY_STRIP_ORIGINAL_SIZE:a.container.backgroundSize=\"auto\",a.container.backgroundRepeat=\"no-repeat\";break;case A.SCALE_TO_FIT:case A.LEGACY_STRIP_SCALE_TO_FIT:a.container.backgroundSize=\"contain\",a.container.backgroundRepeat=\"no-repeat\";break;case A.STRETCH:a.container.backgroundSize=\"100% 100%\",a.container.backgroundRepeat=\"no-repeat\";break;case A.SCALE_TO_FILL:case A.LEGACY_STRIP_SCALE_TO_FILL:a.container.backgroundSize=\"cover\",a.container.backgroundRepeat=\"no-repeat\";break;case A.TILE_HORIZONTAL:case A.LEGACY_STRIP_TILE_HORIZONTAL:a.container.backgroundSize=\"auto\",a.container.backgroundRepeat=\"repeat-x\";break;case A.TILE_VERTICAL:case A.LEGACY_STRIP_TILE_VERTICAL:a.container.backgroundSize=\"auto\",a.container.backgroundRepeat=\"repeat-y\";break;case A.TILE:case A.LEGACY_STRIP_TILE:a.container.backgroundSize=\"auto\",a.container.backgroundRepeat=\"repeat\";break;case A.LEGACY_STRIP_FIT_AND_TILE:a.container.backgroundSize=\"contain\",a.container.backgroundRepeat=\"repeat\";break;case A.FIT_AND_TILE:case A.LEGACY_BG_FIT_AND_TILE:a.container.backgroundSize=\"auto\",a.container.backgroundRepeat=\"repeat\";break;case A.LEGACY_BG_FIT_AND_TILE_HORIZONTAL:a.container.backgroundSize=\"auto\",a.container.backgroundRepeat=\"repeat-x\";break;case A.LEGACY_BG_FIT_AND_TILE_VERTICAL:a.container.backgroundSize=\"auto\",a.container.backgroundRepeat=\"repeat-y\";break;case A.LEGACY_BG_NORMAL:a.container.backgroundSize=\"auto\",a.container.backgroundRepeat=\"no-repeat\"}switch(t.alignment){case M.CENTER:a.container.backgroundPosition=\"center center\";break;case M.LEFT:a.container.backgroundPosition=\"left center\";break;case M.RIGHT:a.container.backgroundPosition=\"right center\";break;case M.TOP:a.container.backgroundPosition=\"center top\";break;case M.BOTTOM:a.container.backgroundPosition=\"center bottom\";break;case M.TOP_RIGHT:a.container.backgroundPosition=\"right top\";break;case M.TOP_LEFT:a.container.backgroundPosition=\"left top\";break;case M.BOTTOM_RIGHT:a.container.backgroundPosition=\"right bottom\";break;case M.BOTTOM_LEFT:a.container.backgroundPosition=\"left bottom\"}return i}const me={[M.CENTER]:\"center\",[M.TOP]:\"top\",[M.TOP_LEFT]:\"top left\",[M.TOP_RIGHT]:\"top right\",[M.BOTTOM]:\"bottom\",[M.BOTTOM_LEFT]:\"bottom left\",[M.BOTTOM_RIGHT]:\"bottom right\",[M.LEFT]:\"left\",[M.RIGHT]:\"right\"},fe={position:\"absolute\",top:\"auto\",right:\"auto\",bottom:\"auto\",left:\"auto\"};function pe(e,t){const i={css:{container:{},img:{}}},{css:a}=i,{fittingType:n}=e,r=t.alignment;switch(a.container.position=\"relative\",n){case A.ORIGINAL_SIZE:case A.LEGACY_ORIGINAL_SIZE:e.parts&&e.parts.length?(a.img.width=e.parts[0].width,a.img.height=e.parts[0].height):(a.img.width=e.src.width,a.img.height=e.src.height);break;case A.SCALE_TO_FIT:case A.LEGACY_FIT_WIDTH:case A.LEGACY_FIT_HEIGHT:case A.LEGACY_FULL:a.img.width=t.width,a.img.height=t.height,a.img.objectFit=\"contain\",a.img.objectPosition=me[r]||\"unset\";break;case A.LEGACY_BG_NORMAL:a.img.width=\"100%\",a.img.height=\"100%\",a.img.objectFit=\"none\",a.img.objectPosition=me[r]||\"unset\";break;case A.STRETCH:a.img.width=t.width,a.img.height=t.height,a.img.objectFit=\"fill\";break;case A.SCALE_TO_FILL:a.img.width=t.width,a.img.height=t.height,a.img.objectFit=\"cover\"}if(\"number\"==typeof a.img.width&&\"number\"==typeof a.img.height&&(a.img.width!==t.width||a.img.height!==t.height)){const e=Math.round((t.height-a.img.height)/2),i=Math.round((t.width-a.img.width)/2);Object.assign(a.img,fe,function(e,t,i){return{[M.TOP_LEFT]:{top:0,left:0},[M.TOP_RIGHT]:{top:0,right:0},[M.TOP]:{top:0,left:t},[M.BOTTOM_LEFT]:{bottom:0,left:0},[M.BOTTOM_RIGHT]:{bottom:0,right:0},[M.BOTTOM]:{bottom:0,left:t},[M.RIGHT]:{top:e,right:0},[M.LEFT]:{top:e,left:0},[M.CENTER]:{width:i.width,height:i.height,objectFit:\"none\"}}}(e,i,t)[r])}return i}function _e(e,t){const i={css:{container:{}},attr:{container:{},img:{}}},{css:a,attr:n}=i,{fittingType:r}=e,o=t.alignment,{width:c,height:s}=e.src;let l;switch(a.container.position=\"relative\",r){case A.ORIGINAL_SIZE:case A.LEGACY_ORIGINAL_SIZE:case A.TILE:e.parts&&e.parts.length?(n.img.width=e.parts[0].width,n.img.height=e.parts[0].height):(n.img.width=c,n.img.height=s),n.img.preserveAspectRatio=\"xMidYMid slice\";break;case A.SCALE_TO_FIT:case A.LEGACY_FIT_WIDTH:case A.LEGACY_FIT_HEIGHT:case A.LEGACY_FULL:n.img.width=\"100%\",n.img.height=\"100%\",n.img.transform=\"\",n.img.preserveAspectRatio=\"\";break;case A.STRETCH:n.img.width=t.width,n.img.height=t.height,n.img.x=0,n.img.y=0,n.img.transform=\"\",n.img.preserveAspectRatio=\"none\";break;case A.SCALE_TO_FILL:j(e.src.id)?(n.img.width=t.width,n.img.height=t.height):(l=function(e,t,i,a,n){const r=te(e,t,i,a,n);return{width:Math.round(e*r),height:Math.round(t*r)}}(c,s,t.width,t.height,y.FILL),n.img.width=l.width,n.img.height=l.height),n.img.x=0,n.img.y=0,n.img.transform=\"\",n.img.preserveAspectRatio=\"xMidYMid slice\"}if(\"number\"==typeof n.img.width&&\"number\"==typeof n.img.height&&(n.img.width!==t.width||n.img.height!==t.height)){let e,i,a=0,c=0;r===A.TILE?(e=t.width%n.img.width,i=t.height%n.img.height):(e=t.width-n.img.width,i=t.height-n.img.height);const s=Math.round(e/2),l=Math.round(i/2);switch(o){case M.TOP_LEFT:a=0,c=0;break;case M.TOP:a=s,c=0;break;case M.TOP_RIGHT:a=e,c=0;break;case M.LEFT:a=0,c=l;break;case M.CENTER:a=s,c=l;break;case M.RIGHT:a=e,c=l;break;case M.BOTTOM_LEFT:a=0,c=i;break;case M.BOTTOM:a=s,c=i;break;case M.BOTTOM_RIGHT:a=e,c=i}n.img.x=a,n.img.y=c}return n.container.width=t.width,n.container.height=t.height,n.container.viewBox=[0,0,t.width,t.height].join(\" \"),i}function Te(e,t,i){let a;switch(t.crop&&(a=function(e,t){const i=Math.max(0,Math.min(e.width,t.x+t.width)-Math.max(0,t.x)),a=Math.max(0,Math.min(e.height,t.y+t.height)-Math.max(0,t.y));return i&&a&&(e.width!==i||e.height!==a)?{x:Math.max(0,t.x),y:Math.max(0,t.y),width:i,height:a}:null}(t,t.crop),a&&(e.src.width=a.width,e.src.height=a.height,e.src.isCropped=!0,e.parts.push(Ee(a)))),e.fittingType){case A.SCALE_TO_FIT:case A.LEGACY_FIT_WIDTH:case A.LEGACY_FIT_HEIGHT:case A.LEGACY_FULL:case A.FIT_AND_TILE:case A.LEGACY_BG_FIT_AND_TILE:case A.LEGACY_BG_FIT_AND_TILE_HORIZONTAL:case A.LEGACY_BG_FIT_AND_TILE_VERTICAL:case A.LEGACY_BG_NORMAL:e.parts.push(Ie(e,i));break;case A.SCALE_TO_FILL:e.parts.push(function(e,t){const i=ie(e.src.width,e.src.height,y.FILL,t,e.devicePixelRatio,e.upscaleMethod),a=re(e.focalPoint);return{transformType:a?y.FILL_FOCAL:y.FILL,width:Math.round(i.width),height:Math.round(i.height),alignment:ne(t),focalPointX:a&&a.x,focalPointY:a&&a.y,upscale:i.scaleFactor>1,forceUSM:i.forceUSM,scaleFactor:i.scaleFactor,cssUpscaleNeeded:i.cssUpscaleNeeded,upscaleMethodValue:i.upscaleMethodValue}}(e,i));break;case A.STRETCH:e.parts.push(function(e,t){const i=te(e.src.width,e.src.height,t.width,t.height,y.FILL),a={...t};return a.width=e.src.width*i,a.height=e.src.height*i,Ie(e,a)}(e,i));break;case A.TILE_HORIZONTAL:case A.TILE_VERTICAL:case A.TILE:case A.LEGACY_ORIGINAL_SIZE:case A.ORIGINAL_SIZE:a=ae(e.src,i,e.focalPoint,i.alignment),e.src.isCropped?(Object.assign(e.parts[0],a),e.src.width=a.width,e.src.height=a.height):e.parts.push(Ee(a));break;case A.LEGACY_STRIP_TILE_HORIZONTAL:case A.LEGACY_STRIP_TILE_VERTICAL:case A.LEGACY_STRIP_TILE:case A.LEGACY_STRIP_ORIGINAL_SIZE:e.parts.push(function(e){return{transformType:y.LEGACY_CROP,width:Math.round(e.width),height:Math.round(e.height),alignment:ne(e),upscale:!1,forceUSM:!1,scaleFactor:1,cssUpscaleNeeded:!1}}(i));break;case A.LEGACY_STRIP_SCALE_TO_FIT:case A.LEGACY_STRIP_FIT_AND_TILE:e.parts.push(function(e){return{transformType:y.FIT,width:Math.round(e.width),height:Math.round(e.height),upscale:!1,forceUSM:!0,scaleFactor:1,cssUpscaleNeeded:!1}}(i));break;case A.LEGACY_STRIP_SCALE_TO_FILL:e.parts.push(function(e){return{transformType:y.LEGACY_FILL,width:Math.round(e.width),height:Math.round(e.height),alignment:ne(e),upscale:!1,forceUSM:!0,scaleFactor:1,cssUpscaleNeeded:!1}}(i))}}function Ie(e,t){const i=ie(e.src.width,e.src.height,y.FIT,t,e.devicePixelRatio,e.upscaleMethod);return{transformType:!e.src.width||!e.src.height?y.FIT:y.FILL,width:Math.round(i.width),height:Math.round(i.height),alignment:v.center,upscale:i.scaleFactor>1,forceUSM:i.forceUSM,scaleFactor:i.scaleFactor,cssUpscaleNeeded:i.cssUpscaleNeeded,upscaleMethodValue:i.upscaleMethodValue}}function Ee(e){return{transformType:y.CROP,x:Math.round(e.x),y:Math.round(e.y),width:Math.round(e.width),height:Math.round(e.height),upscale:!1,forceUSM:!1,scaleFactor:1,cssUpscaleNeeded:!1}}function Le(e,t){t=t||{},e.quality=function(e,t){const i=e.fileType===B.PNG,a=e.fileType===B.JPG,n=e.fileType===B.WEBP,r=e.fileType===B.AVIF,o=a||i||n||r;if(o){const a=U(e.parts),n=(c=a.width,s=a.height,P[oe(c,s)].quality);let r=t.quality&&t.quality>=5&&t.quality<=90?t.quality:n;return r=i?r+5:r,r}var c,s;return 0}(e,t),e.progressive=function(e){return!1!==e.progressive}(t),e.watermark=function(e){return e.watermark}(t),e.autoEncode=t.autoEncode??!0,e.encoding=t?.encoding,e.unsharpMask=function(e,t){if(function(e){const t=\"number\"==typeof(e=e||{}).radius&&!isNaN(e.radius)&&e.radius>=.1&&e.radius<=500,i=\"number\"==typeof e.amount&&!isNaN(e.amount)&&e.amount>=0&&e.amount<=10,a=\"number\"==typeof e.threshold&&!isNaN(e.threshold)&&e.threshold>=0&&e.threshold<=255;return t&&i&&a}(t.unsharpMask))return{radius:ce(t.unsharpMask?.radius,2),amount:ce(t.unsharpMask?.amount,2),threshold:ce(t.unsharpMask?.threshold,2)};if((\"number\"!=typeof(i=(i=t.unsharpMask)||{}).radius||isNaN(i.radius)||0!==i.radius||\"number\"!=typeof i.amount||isNaN(i.amount)||0!==i.amount||\"number\"!=typeof i.threshold||isNaN(i.threshold)||0!==i.threshold)&&function(e){const t=U(e.parts);return!(t.scaleFactor>=1)||t.forceUSM||t.transformType===y.FIT}(e))return G;var i;return}(e,t),e.filters=function(e){const t=e.filters||{},i={};be(t[k.CONTRAST],-100,100)&&(i[k.CONTRAST]=t[k.CONTRAST]);be(t[k.BRIGHTNESS],-100,100)&&(i[k.BRIGHTNESS]=t[k.BRIGHTNESS]);be(t[k.SATURATION],-100,100)&&(i[k.SATURATION]=t[k.SATURATION]);be(t[k.HUE],-180,180)&&(i[k.HUE]=t[k.HUE]);be(t[k.BLUR],0,100)&&(i[k.BLUR]=t[k.BLUR]);return i}(t)}function be(e,t,i){return\"number\"==typeof e&&!isNaN(e)&&0!==e&&e>=t&&e<=i}function Ae(e,t,i,a){const n=function(e){return e?.isSEOBot??!1}(a),r=Q(t.id),o=function(e,t){const i=/\\.([^.]*)$/,a=new RegExp(`(${J.concat(K).join(\"|\")})`,\"g\");if(t&&t.length){let e=t;const n=t.match(i);return n&&$.includes(n[1])&&(e=t.replace(i,\"\")),encodeURIComponent(e).replace(a,X)}const n=e.match(/\\/(.*?)$/);return(n?n[1]:e).replace(i,\"\")}(t.id,t.name),c=n?1:function(e){return Math.min(e.pixelAspectRatio||1,T)}(i),s=ee(t.id),l=s,d=j(t.id,a?.hasAnimation,a?.allowAnimatedTransform,a?.allowFullGIFTransformation),u={fileName:o,fileExtension:s,fileType:r,fittingType:e,preferredExtension:l,src:{id:t.id,width:t.width,height:t.height,isCropped:!1,isAnimated:le(t.id,a?.hasAnimation)},focalPoint:{x:t.focalPoint&&t.focalPoint.x,y:t.focalPoint&&t.focalPoint.y},parts:[],devicePixelRatio:c,quality:0,upscaleMethod:se(a),progressive:!0,watermark:\"\",unsharpMask:{},filters:{},transformed:d,allowFullGIFTransformation:a?.allowFullGIFTransformation,isPlaceholderFlow:a?.isPlaceholderFlow};return d&&(Te(u,t,i),Le(u,a)),u}function ye(e,t,i){const a={...i},n=ue(\"isMobile\");switch(e){case A.LEGACY_BG_FIT_AND_TILE:case A.LEGACY_BG_FIT_AND_TILE_HORIZONTAL:case A.LEGACY_BG_FIT_AND_TILE_VERTICAL:case A.LEGACY_BG_NORMAL:const e=n?L:I,i=n?b:E;a.width=Math.min(e,t.width),a.height=Math.min(i,Math.round(a.width/(t.width/t.height))),a.pixelAspectRatio=1}return a}const Me=Y`fit/w_${\"width\"},h_${\"height\"}`,we=Y`fill/w_${\"width\"},h_${\"height\"},al_${\"alignment\"}`,ve=Y`fill/w_${\"width\"},h_${\"height\"},fp_${\"focalPointX\"}_${\"focalPointY\"}`,Oe=Y`crop/x_${\"x\"},y_${\"y\"},w_${\"width\"},h_${\"height\"}`,Se=Y`crop/w_${\"width\"},h_${\"height\"},al_${\"alignment\"}`,Ce=Y`fill/w_${\"width\"},h_${\"height\"},al_${\"alignment\"}`,Ge=Y`,lg_${\"upscaleMethodValue\"}`,Re=Y`,q_${\"quality\"}`,Fe=Y`,quality_auto`,Ne=Y`,usm_${\"radius\"}_${\"amount\"}_${\"threshold\"}`,Pe=Y`,bl`,xe=Y`,wm_${\"watermark\"}`,ke={[k.CONTRAST]:Y`,con_${\"contrast\"}`,[k.BRIGHTNESS]:Y`,br_${\"brightness\"}`,[k.SATURATION]:Y`,sat_${\"saturation\"}`,[k.HUE]:Y`,hue_${\"hue\"}`,[k.BLUR]:Y`,blur_${\"blur\"}`},Be=Y`,enc_auto`,He=Y`,enc_avif`,Ye=Y`,enc_pavif`,Ue=Y`,pstr`,$e=Y`,anm_all`;function ze(e,t,i,a={},n){if(j(t.id,a?.hasAnimation,a?.allowAnimatedTransform,a?.allowFullGIFTransformation)){if(V(t.id)||q(t.id)){const{alignment:r,...o}=i;t.focalPoint={x:void 0,y:void 0},delete t?.crop,n=Ae(e,t,o,a)}else n=n||Ae(e,t,i,a);return function(e){const t=[];e.parts.forEach(e=>{switch(e.transformType){case y.CROP:t.push(Oe(e));break;case y.LEGACY_CROP:t.push(Se(e));break;case y.LEGACY_FILL:let i=Ce(e);e.upscale&&(i+=Ge(e)),t.push(i);break;case y.FIT:let a=Me(e);e.upscale&&(a+=Ge(e)),t.push(a);break;case y.FILL:let n=we(e);e.upscale&&(n+=Ge(e)),t.push(n);break;case y.FILL_FOCAL:let r=ve(e);e.upscale&&(r+=Ge(e)),t.push(r)}});let i=t.join(\"/\");if(e.quality&&(i+=Re(e)),e.unsharpMask&&(i+=Ne(e.unsharpMask)),e.progressive||(i+=Pe(e)),e.watermark&&(i+=xe(e)),e.filters&&(i+=Object.keys(e.filters).map(t=>ke[t](e.filters)).join(\"\")),e.fileType!==B.GIF&&(e.encoding===H.AVIF?(i+=He(e),i+=Fe(e)):e.encoding===H.PAVIF?(i+=Ye(e),i+=Fe(e)):e.autoEncode&&(i+=Be(e))),e.src?.isAnimated&&e.transformed){const t=W(e.src.id),a=!0===e.isPlaceholderFlow,n=!0===e.allowFullGIFTransformation;a?i+=Ue(e):t&&n&&(i+=$e(e))}return`${e.src.id}/${_}/${i}/${e.fileName}.${e.preferredExtension}`}(n)}return t.id}const Ze={[M.CENTER]:\"50% 50%\",[M.TOP_LEFT]:\"0% 0%\",[M.TOP_RIGHT]:\"100% 0%\",[M.TOP]:\"50% 0%\",[M.BOTTOM_LEFT]:\"0% 100%\",[M.BOTTOM_RIGHT]:\"100% 100%\",[M.BOTTOM]:\"50% 100%\",[M.RIGHT]:\"100% 50%\",[M.LEFT]:\"0% 50%\"},je=Object.entries(Ze).reduce((e,[t,i])=>(e[i]=t,e),{}),De=[A.TILE,A.TILE_HORIZONTAL,A.TILE_VERTICAL,A.LEGACY_BG_FIT_AND_TILE,A.LEGACY_BG_FIT_AND_TILE_HORIZONTAL,A.LEGACY_BG_FIT_AND_TILE_VERTICAL],Ve=[A.LEGACY_ORIGINAL_SIZE,A.ORIGINAL_SIZE,A.LEGACY_BG_NORMAL];function We(e,t,{width:i,height:a}){return e===A.TILE&&t.width>i&&t.height>a}function qe(e,{width:t,height:i}){if(!t||!i){const a=t||Math.min(980,e.width),n=a/e.width;return{width:a,height:i||e.height*n}}return{width:t,height:i}}function Je(e,t,i,a=\"center\"){const n={img:{},container:{}};if(e===A.SCALE_TO_FILL){const e=t.focalPoint&&function(e){const t=`${e.x}% ${e.y}%`;return je[t]||\"\"}(t.focalPoint),r=e||a;t.focalPoint&&!e?n.img={objectPosition:Ke(t,i,t.focalPoint)}:n.img={objectPosition:Ze[r]}}else[A.LEGACY_ORIGINAL_SIZE,A.ORIGINAL_SIZE].includes(e)?n.img={objectFit:\"none\",top:\"auto\",left:\"auto\",right:\"auto\",bottom:\"auto\"}:De.includes(e)&&(n.container={backgroundSize:`${t.width}px ${t.height}px`});return n}function Ke(e,t,i){const{width:a,height:n}=e,{width:r,height:o}=t,{x:c,y:s}=i;if(!r||!o)return`${c}% ${s}%`;const l=Math.max(r/a,o/n),d=a*l,u=n*l,h=Math.max(0,Math.min(d-r,d*(c/100)-r/2)),g=Math.max(0,Math.min(u-o,u*(s/100)-o/2));return`${h&&Math.floor(h/(d-r)*100)}% ${g&&Math.floor(g/(u-o)*100)}%`}const Xe={width:\"100%\",height:\"100%\"};function Qe(e,t,i,a={}){const{autoEncode:n=!0,isSEOBot:r,shouldLoadHQImage:o,hasAnimation:c,allowAnimatedTransform:s,encoding:l}=a;if(!Z(e,t,i))return R;const d=!0,u=s??d,h=j(t.id,c,u);if(!h||o)return et(e,t,i,{...a,autoEncode:n,useSrcset:h});const g={...i,...qe(t,i)},{alignment:m,htmlTag:f}=g,p=We(e,t,g),_=function(e,t,{width:i,height:a},n=!1){if(n)return{width:i,height:a};const r=!Ve.includes(e),o=We(e,t,{width:i,height:a}),c=!o&&De.includes(e),s=c?t.width:i,l=c?t.height:a,d=r?function(e,t){return e>900?t?.05:.15:e>500?t?.1:.18:e>200?.25:1}(s,D(t.id)):1;return{width:o?1920:s*d,height:l*d}}(e,t,g,r),T=function(e,t,i){return i?0:De.includes(t)?1:e>200?2:3}(g.width,e,r),I=function(e,t){const i=De.includes(e)&&!t;return e===A.SCALE_TO_FILL||i?A.SCALE_TO_FIT:e}(e,p),E=Je(e,t,i,m),{uri:L}=et(I,t,{..._,alignment:m,htmlTag:f},{autoEncode:n,filters:T?{blur:T}:{},hasAnimation:c,allowAnimatedTransform:u,encoding:l,isPlaceholderFlow:d}),{attr:b={},css:y}=et(e,t,{...g,alignment:m,htmlTag:f},{});return y.img=y.img||{},y.container=y.container||{},Object.assign(y.img,E.img,Xe),Object.assign(y.container,E.container),{uri:L,css:y,attr:b,transformed:!0}}function et(e,t,i,a){let n={};if(Z(e,t,i)){const r=ye(e,t,i),o=Ae(e,t,r,a);n.uri=ze(e,t,r,a,o),a?.useSrcset&&(n.srcset=function(e,t,i,a,n){const r=i.pixelAspectRatio||1;return{dpr:[`${1===r?n.uri:ze(e,t,{...i,pixelAspectRatio:1},a)} 1x`,`${2===r?n.uri:ze(e,t,{...i,pixelAspectRatio:2},a)} 2x`]}}(e,t,r,a,n)),Object.assign(n,function(e,t){let i;return i=t.htmlTag===O.BG?ge:t.htmlTag===O.SVG?_e:pe,i(e,t)}(o,r),{transformed:o.transformed})}else n=R;return n}const tt=\"https://static.wixstatic.com/media/\";\"undefined\"!=typeof window&&window.devicePixelRatio;he();he();const it=tt,{STATIC_MEDIA_URL:at}=a,nt=({fittingType:e,src:t,target:i,options:a})=>{const n=Qe(e,t,i,{...a,autoEncode:!0});return n?.uri&&!/^[a-z]+:/.test(n.uri)&&(n.uri=`${at}${n.uri}`),n},rt=/^[a-z]+:/,ot=e=>{const{id:t,containerId:i,uri:a,alt:n,name:r=\"\",role:c,width:s,height:l,displayMode:d,devicePixelRatio:u,quality:h,alignType:g,bgEffectName:m=\"\",focalPoint:f,upscaleMethod:_,className:T=\"\",crop:I,imageStyles:E={},targetWidth:L,targetHeight:b,targetScale:A,onLoad:y=()=>{},onError:M=()=>{},shouldUseLQIP:w,containerWidth:v,containerHeight:O,getPlaceholder:S,isInFirstFold:C,placeholderTransition:G,socialAttrs:R,isSEOBot:F,skipMeasure:N,hasAnimation:P,encoding:x,isFluidLayout:k}=e,B=o.useRef(null);let H=\"\";const Y=\"blur\"===G,U=o.useRef(null);if(!U.current)if(S||w||C||F){const e={upscaleMethod:_,...h||{},shouldLoadHQImage:C,isSEOBot:F,hasAnimation:P,encoding:x};U.current=(S||nt)({fittingType:d,src:{id:a,width:s,height:l,crop:I,name:r,focalPoint:f},target:{width:v,height:O,alignment:g,htmlTag:\"img\"},options:e}),H=!U.current.transformed||C||F?\"\":\"true\"}else U.current={uri:void 0,css:{img:{}},attr:{img:{},container:{}},transformed:!1};const $=!F&&(S||w)&&!C&&U.current.transformed,z=o.useMemo(()=>JSON.stringify({containerId:i,...i&&{containerId:i},...g&&{alignType:g},...N&&{skipMeasure:!0},displayMode:d,...v&&{targetWidth:v},...O&&{targetHeight:O},...L&&{targetWidth:L},...b&&{targetHeight:b},...A&&{targetScale:A},isLQIP:$,isSEOBot:F,lqipTransition:G,encoding:x,imageData:{width:s,height:l,uri:a,name:r,displayMode:d,hasAnimation:P,...h&&{quality:h},...u&&{devicePixelRatio:u},...f&&{focalPoint:f},...I&&{crop:I},..._&&{upscaleMethod:_}}}),[i,g,N,d,v,O,L,b,A,$,F,G,x,s,l,a,r,P,h,u,f,I,_]),Z=U.current,j=Z?.uri,D=Z?.srcset,V=Z.css?.img,W=`${p} ${T}`;o.useEffect(()=>{const e=B.current;y&&e?.currentSrc&&e?.complete&&y({target:e})},[]);const q=Z&&!Z?.transformed?`max(${s}px, 100%)`:L?`${L}px`:null;return o.createElement(\"wow-image\",{id:t,class:W,\"data-image-info\":z,\"data-motion-part\":`BG_IMG ${i}`,\"data-bg-effect-name\":m,\"data-has-ssr-src\":H,\"data-animate-blur\":!F&&$&&Y?\"\":void 0,\"data-is-responsive\":k?\"true\":void 0,style:q?{\"--wix-img-max-width\":q}:{}},o.createElement(\"img\",{src:j,ref:B,alt:n||\"\",role:c,style:{...V,...E},onLoad:y,onError:M,width:v||void 0,height:O||void 0,...R,srcSet:C?D?.dpr?.map(e=>rt.test(e)?e:`${at}${e}`).join(\", \"):void 0,fetchpriority:C?\"high\":void 0,loading:!1===C?\"lazy\":void 0,suppressHydrationWarning:!0}))};var ct=\"Tj01hh\";var st=e=>{var t,i;const{id:a,alt:n,role:c,className:l,imageStyles:d={},targetWidth:u,targetHeight:h,onLoad:g,onError:m,containerWidth:f,containerHeight:p,isInFirstFold:_,socialAttrs:T,skipMeasure:I,responsiveImageProps:E,zoomedImageResponsiveOverride:L,displayMode:b}=e,A=u||f,y=h||p,{fallbackSrc:M,srcset:w,sources:v,css:O}=E||{},{width:S,height:C,...G}=(null==E||null==(t=E.css)?void 0:t.img)||{},R=\"original_size\"===b?null==E||null==(i=E.css)?void 0:i.img:G;var F;return M&&w&&O?o.createElement(\"img\",r()({fetchpriority:_?\"high\":void 0,loading:!1===_?\"lazy\":void 0,sizes:A+\"px\",srcSet:I?null==L?void 0:L.srcset:null==E?void 0:E.srcset,id:a,src:M,alt:n||\"\",role:c,style:{...d,...I?{...null==L||null==(F=L.css)?void 0:F.img}:{...R}},onLoad:g,onError:m,className:(0,s.Z)(l,ct),width:A,height:y},T)):M&&v&&O?o.createElement(\"picture\",null,v.map(e=>{let{srcset:t,media:i,sizes:a}=e;return o.createElement(\"source\",{key:i,srcSet:t,media:i,sizes:a})}),o.createElement(\"img\",r()({fetchpriority:_?\"high\":void 0,loading:!1===_?\"lazy\":void 0,id:a,src:v[0].fallbackSrc,alt:n||\"\",role:c,style:{...d,objectFit:v[0].imgStyle.objectFit,objectPosition:v[0].imgStyle.objectPosition},onLoad:g,onError:m,className:(0,s.Z)(l,ct),width:A,height:y},T))):o.createElement(ot,e)};var lt=e=>{var t,i,a;const{className:n,customIdPrefix:r,getPlaceholder:c,hasAnimation:s,...l}=e,d=o.useMemo(()=>JSON.stringify({containerId:l.containerId,alignType:l.alignType,fittingType:l.displayMode,hasAnimation:s,imageData:{width:l.width,height:l.height,uri:l.uri,name:l.name,...l.quality&&{quality:l.quality},displayMode:l.displayMode}}),[l,s]),u=o.useRef(null);u.current||(u.current=c?c({fittingType:l.displayMode,src:{id:l.uri,width:l.width,height:l.height,name:l.name},target:{width:l.containerWidth,height:l.containerHeight,alignment:l.alignType,htmlTag:\"bg\"},options:{hasAnimation:s,allowAnimatedTransform:!1}}):{uri:void 0,css:{img:{}},attr:{img:{},container:{}}});const h=u.current,g=null!=(t=null==h?void 0:h.uri)?t:\"\",m=null!=(i=null==(a=h.css)?void 0:a.container)?i:{},f=Object.assign(g?{backgroundImage:\"url(\"+g+\")\"}:{},m);return o.createElement(\"wix-bg-image\",{id:\"\"+(r||\"bgImg_\")+l.containerId,class:n,style:f,\"data-tiled-image-info\":d,\"data-has-bg-scroll-effect\":l.hasBgScrollEffect||\"\",\"data-bg-effect-name\":l.bgEffectName||\"\",\"data-motion-part\":\"BG_IMG \"+l.containerId})};const dt=new RegExp(\"<%= compId %>\",\"g\"),ut=(e,t)=>e.replace(dt,t);var ht=e=>null==e?void 0:e.replace(\":hover\",\"\"),gt=\"bX9O_S\",mt=\"Z_wCwr\",ft=\"Jxk_UL\",pt=\"K8MSra\",_t=\"YTb3b4\";const Tt={quality:{unsharpMask:{radius:.33,amount:1,threshold:0}},devicePixelRatio:1};var It=e=>{const{id:t,videoRef:i,videoInfo:a,posterImageInfo:n,muted:c,preload:l,loop:d,alt:u,isVideoEnabled:h,getPlaceholder:g,extraClassName:m=\"\"}=e;a.containerId=ht(a.containerId);const f=o.useMemo(()=>JSON.stringify(a),[a]),p=o.createElement(o.Fragment,null,n.filterEffectSvgString&&o.createElement(\"svg\",{id:\"svg_\"+a.containerId,className:_t},o.createElement(\"defs\",{dangerouslySetInnerHTML:{__html:ut(n.filterEffectSvgString,a.containerId)}})),o.createElement(st,r()({key:a.videoId+\"_img\",id:n.containerId+\"_img\",className:(0,s.Z)(mt,ft,\"bgVideoposter\",m),imageStyles:{width:\"100%\",height:\"100%\"}},n,Tt,{getPlaceholder:g})));return h?o.createElement(\"wix-video\",{id:t,\"data-video-info\":f,\"data-motion-part\":\"BG_IMG \"+a.containerId,class:(0,s.Z)(gt,\"bgVideo\",m)},o.createElement(\"video\",{key:a.videoId+\"_video\",ref:i,id:a.containerId+\"_video\",className:pt,crossOrigin:\"anonymous\",\"aria-label\":u,playsInline:!0,preload:l,muted:c,loop:d}),p):p},Et=\"SUz0WK\";var Lt=e=>{const{id:t,containerId:i,pageId:a,children:n,bgEffectName:r=\"\",containerSize:c}=e;return o.createElement(\"wix-bg-media\",{id:t,class:Et,\"data-container-id\":i,\"data-container-size\":((null==c?void 0:c.width)||0)+\", \"+((null==c?void 0:c.height)||0),\"data-page-id\":a,\"data-bg-effect-name\":r,\"data-motion-part\":\"BG_MEDIA \"+i},n)};const bt=\"bgOverlay\";var At=\"m4khSP\",yt=\"FNxOn5\";var Mt=e=>{const{imageOverlay:t}=e;return o.createElement(\"div\",{\"data-testid\":bt,className:At},t&&o.createElement(lt,r()({customIdPrefix:\"bgImgOverlay_\",className:yt},t)))};const wt=\"bgLayers\",vt=\"colorUnderlay\",Ot=\"mediaPadding\",St=\"canvas\";var Ct=\"MW5IWV\",Gt=\"N3eg0s\",Rt=\"Kv1aVt\",Ft=\"dLPlxY\",Nt=\"VgO9Yg\",Pt=\"LWbAav\",xt=\"yK6aSC\",kt=\"K_YxMd\",Bt=\"NGjcJN\",Ht=\"mNGsUM\",Yt=\"I8xA4L\";const Ut=\"bgImage\";var $t=e=>{const{videoRef:t,canvasRef:i,hasBgFullscreenScrollEffect:a,image:n,backgroundImage:c,backgroundMedia:l,video:d,backgroundOverlay:u,shouldPadMedia:h,extraClass:g=\"\",shouldRenderUnderlay:m=!d,reducedMotion:f=!1,getPlaceholder:p,hasCanvasAnimation:_,useWixMediaCanvas:T,onClick:I}=e,{onImageLoad:E}=(e=>{let{onReady:t,image:i}=e;return(0,o.useEffect)(()=>{t&&!i&&t()},[t,i]),{onImageLoad:e=>{null!=i&&i.onLoad&&i.onLoad(e),t&&t()}}})(e),L=ht(e.containerId),b=\"img_\"+ht(L),A=n&&o.createElement(st,r()({id:b,className:(0,s.Z)(Rt,Ft,Ht,Ut),imageStyles:{width:\"100%\",height:\"100%\"},getPlaceholder:p},n,{onLoad:E})),y=c&&o.createElement(lt,r()({},c,{containerId:L,className:(0,s.Z)(Rt,Ft,Ht,Ut),getPlaceholder:p})),M=d&&o.createElement(It,r()({id:\"videoContainer_\"+L},d,{extraClassName:xt,reducedMotion:f,videoRef:t,getPlaceholder:p})),w=T&&i||_?o.createElement(\"wix-media-canvas\",{\"data-container-id\":L,class:_?Yt:\"\"},A,y,M,o.createElement(\"canvas\",{id:L+\"webglcanvas\",className:(0,s.Z)(kt,\"webglcanvas\"),\"aria-label\":(null==d?void 0:d.alt)||\"\",role:\"presentation\",\"data-testid\":St})):o.createElement(o.Fragment,null,A,y,M,i&&o.createElement(\"canvas\",{id:L+\"webglcanvas\",ref:i,className:(0,s.Z)(kt,\"webglcanvas\"),\"aria-label\":(null==d?void 0:d.alt)||\"\",role:\"presentation\",\"data-testid\":St})),v=l?o.createElement(Lt,r()({id:\"bgMedia_\"+L},l),w):o.createElement(\"div\",{id:\"bgMedia_\"+L,\"data-motion-part\":\"BG_MEDIA \"+L,className:Nt},w),O=u&&o.createElement(Mt,u);return o.createElement(\"div\",{id:wt+\"_\"+L,\"data-hook\":wt,\"data-motion-part\":\"BG_LAYER \"+L,className:(0,s.Z)(Ct,g,{[Gt]:a}),onClick:I},m&&o.createElement(\"div\",{\"data-testid\":vt,className:(0,s.Z)(Pt,Rt)}),h?o.createElement(\"div\",{\"data-testid\":Ot,className:Bt},v,O):o.createElement(o.Fragment,null,v,O))};var zt=e=>o.createElement($t,e),Zt=\"dkukWC\",jt=\"FRCqDF\",Dt=\"xnZvZH\",Vt=\"MBOSCN\";const Wt=(e,t,i)=>{const a=((e,t)=>e?[...Array(1+(t||0)).keys()].reverse().map(e=>o.createElement(\"div\",{key:\"divider-layer-\"+e,style:{\"--divider-layer-i\":e},className:jt,\"data-testid\":\"divider-layer-\"+e,\"data-divider-layer\":e})):null)(!!t,i);return t?o.createElement(\"div\",{className:(0,s.Z)(Zt,{[Dt]:\"top\"===e,[Vt]:\"bottom\"===e}),\"data-testid\":e+\"-divider\"},a):null};var qt=e=>{var t,i;const a=o.useMemo(()=>{var t;return Wt(\"top\",null==e?void 0:e.hasTopDivider,null==e||null==(t=e.topLayers)?void 0:t.size)},[null==e?void 0:e.hasTopDivider,null==e||null==(t=e.topLayers)?void 0:t.size]),n=o.useMemo(()=>{var t;return Wt(\"bottom\",null==e?void 0:e.hasBottomDivider,null==e||null==(t=e.bottomLayers)?void 0:t.size)},[null==e?void 0:e.hasBottomDivider,null==e||null==(i=e.bottomLayers)?void 0:i.size]);return o.createElement(o.Fragment,null,a,n)};var Jt={root:\"section\"},Kt=i(\"p1x1\");const Xt=({size:e,...t})=>o.createElement(\"svg\",{viewBox:\"0 0 18 18\",fill:\"currentColor\",width:e||\"18\",height:e||\"18\",...t},o.createElement(\"path\",{d:\"M7.5,5 C8.32842712,5 9,5.67157288 9,6.5 L9,11.5 C9,12.3284271 8.32842712,13 7.5,13 C6.67157288,13 6,12.3284271 6,11.5 L6,6.5 C6,5.67157288 6.67157288,5 7.5,5 Z M11.5,5 C12.3284271,5 13,5.67157288 13,6.5 L13,11.5 C13,12.3284271 12.3284271,13 11.5,13 C10.6715729,13 10,12.3284271 10,11.5 L10,6.5 C10,5.67157288 10.6715729,5 11.5,5 Z M7.5,6 C7.22385763,6 7,6.22385763 7,6.5 L7,11.5 C7,11.7761424 7.22385763,12 7.5,12 C7.77614237,12 8,11.7761424 8,11.5 L8,6.5 C8,6.22385763 7.77614237,6 7.5,6 Z M11.5,6 C11.2238576,6 11,6.22385763 11,6.5 L11,11.5 C11,11.7761424 11.2238576,12 11.5,12 C11.7761424,12 12,11.7761424 12,11.5 L12,6.5 C12,6.22385763 11.7761424,6 11.5,6 Z\"}));Xt.displayName=\"PauseSmall\";var Qt=Xt;const ei=({size:e,...t})=>o.createElement(\"svg\",{viewBox:\"0 0 18 18\",fill:\"currentColor\",width:e||\"18\",height:e||\"18\",...t},o.createElement(\"path\",{d:\"M6.87468837,5.45041947 L12.7318793,8.46657119 C13.20163,8.68731241 13.20163,9.26940918 12.7318793,9.53342881 L6.87468837,12.5495805 C6.58008377,12.7012867 6.00070071,12.5801226 6,12.0161517 L6,5.98384828 C6,5.65247743 6.35266876,5.20682168 6.87468837,5.45041947 Z M7,11.3602529 L11.5834735,9 L7,6.63974714 L7,11.3602529 Z\"}));ei.displayName=\"PlaySmall\";var ti=ei;const ii=(e,t)=>{var i;const{id:a,skin:n=\"RectangleArea\",className:l,containerRootClassName:h=\"\",customClassNames:g=[],containerProps:m,children:p,fillLayers:_=e.fillLayers||e.background,tagName:T,getPlaceholder:I,dividers:E,semanticClassNames:L,onStop:b,onClick:A,onDblClick:y,onMouseEnter:M,onMouseLeave:w,lang:v,translations:O,isPlayPauseSectionExperimentOn:S,isBuilder:C}=e,G=T||\"section\",{shouldOmitWrapperLayers:R}=m,F=(0,s.Z)(Kt.Z[n],h,l,L?d(L.root,...g):d(Jt.root,...g),{[Kt.Z.shouldOmitWrapperLayers]:R}),N=!(null==_||!_.video),P=function(e,t,i){const a=c().useRef(null),n=c().useRef(null);return t?n.current||(n.current={play:()=>a.current?.play(),load:()=>a.current?.load(),pause:()=>a.current?.pause(),stop:()=>{a.current&&(a.current.pause(),a.current.currentTime=0,i&&i(a.current))}}):n.current=null,c().useImperativeHandle(e,()=>n.current||{load(){},stop(){}}),a}(t,N,b),[x,k]=o.useState(!(null!=P&&null!=(i=P.current)&&i.paused));return o.createElement(G,r()({id:a},(0,u.P5)(e),((e={})=>{const t=e.tabIndex??e.tabindex??void 0;return void 0!==t?{tabIndex:Number(t)}:{}})(e.a11y||{tabIndex:-1}),(B=e.a11y,B?.label?{\"aria-label\":B.label}:{}),{\"data-block-level-container\":\"Section\",className:F+\" \"+Kt.Z.section,\"data-testid\":f,onClick:A,onDoubleClick:y,onMouseEnter:M,onMouseLeave:w,lang:v}),_&&!C&&o.createElement(zt,r()({},_,{videoRef:P,getPlaceholder:I})),N&&S&&!C&&o.createElement(\"button\",{className:\"\"+Kt.Z.videoPlayPauseButton,onClick:()=>{const e=null==P?void 0:P.current;e&&(e.paused?e.play():e.pause(),k(t=>{const i=!t,n=document.getElementById(a);if(n){n.querySelectorAll(\"video\").forEach(t=>{t!==e&&(i?t.play():t.pause())})}return i}))},\"aria-pressed\":x,\"aria-label\":null==O?void 0:O.ariaLabel},x?o.createElement(Qt,null):o.createElement(ti,null)),E&&!C&&o.createElement(qt,E),p());var B};var ai=o.forwardRef(ii)},p1x1:function(e,t){\"use strict\";t.Z={\"bg-underlay\":\"LWbAav\",bgUnderlay:\"LWbAav\",\"layers-container\":\"MW5IWV\",layersContainer:\"MW5IWV\",animate:\"V7OeEw\",headerSectionAddVisibilityTransition:\"MDGLoD\",move:\"BHIo43\",fade:\"UvF1nu\",scrollUp:\"YzrQFb\",RectangleArea:\"xuzjBY\",rectangleArea:\"xuzjBY\",DefaultAreaSkin:\"O7Ybkb\",defaultAreaSkin:\"O7Ybkb\",\"full-screen-scroll-effect\":\"GeNLDt\",fullScreenScrollEffect:\"GeNLDt\",\"fill-layer\":\"K8pHFh\",fillLayer:\"K8pHFh\",\"image-fill-layer\":\"TaweqS\",imageFillLayer:\"TaweqS\",\"bg-media\":\"yzHyNT\",bgMedia:\"yzHyNT\",videoFillLayer:\"zBFCpO\",\"alpha-canvas\":\"xjgrS3\",alphaCanvas:\"xjgrS3\",\"media-padding-layer\":\"b3zSS0\",mediaPaddingLayer:\"b3zSS0\",transforms:\"Wsv3ak\",\"media-canvas\":\"IiJMfn\",mediaCanvas:\"IiJMfn\",RectangleAreaAfterScroll:\"KJgt14\",rectangleAreaAfterScroll:\"KJgt14\",scrolled:\"VTwcX7\",section:\"Gzsk0j\",\"video-play-pause-button\":\"MdLl0h\",videoPlayPauseButton:\"MdLl0h\",childrenContainer:\"Gmmci1\"}},guqK:function(e,t,i){\"use strict\";i.d(t,{P5:function(){return a}});const a=e=>Object.entries(e).reduce((e,[t,i])=>(t.includes(\"data-\")&&(e[t]=i),e),{})},\"Xdf/\":function(t){\"use strict\";t.exports=e},Fe5V:function(e){function t(){return e.exports=t=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var a in i)({}).hasOwnProperty.call(i,a)&&(e[a]=i[a])}return e},e.exports.__esModule=!0,e.exports.default=e.exports,t.apply(null,arguments)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},MRkx:function(e,t,i){\"use strict\";function a(e){var t,i,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(i=a(e[t]))&&(n&&(n+=\" \"),n+=i);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}t.Z=function(){for(var e,t,i=0,n=\"\";i<arguments.length;)(e=arguments[i++])&&(t=a(e))&&(n&&(n+=\" \"),n+=t);return n}}},i={};function a(e){var n=i[e];if(void 0!==n)return n.exports;var r=i[e]={exports:{}};return t[e](r,r.exports,a),r.exports}a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,{a:t}),t},a.d=function(e,t){for(var i in t)a.o(t,i)&&!a.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var n={};return function(){\"use strict\";a.r(n),a.d(n,{default:function(){return c}});var e=a(\"Fe5V\"),t=a.n(e),i=a(\"Xdf/\"),r=a(\"iCIt\");var o={root:\"footer\"};var c=e=>i.createElement(r.default,t()({},e,{semanticClassNames:o}))}(),n}()});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGh1bmRlcmJvbHQvY29tcG9uZW50L0Zvb3RlclNlY3Rpb24vRm9vdGVyU2VjdGlvbi5idW5kbGUubWluLmpzIiwibWFwcGluZ3MiOiJDQUFBLFNBQTJDQSxFQUFNQyxHQUMxQixpQkFBWkMsU0FBMEMsaUJBQVhDLE9BQ3hDQSxPQUFPRCxRQUFVRCxFQUFRRyxRQUFRLFVBQ1IsbUJBQVhDLFFBQXlCQSxPQUFPQyxJQUM5Q0QsT0FBTyxvREFBcUQsQ0FBQyxTQUFVSixHQUM3QyxpQkFBWkMsUUFDZEEsUUFBUSxxREFBdURELEVBQVFHLFFBQVEsVUFFL0VKLEVBQUsscURBQXVEQyxFQUFRRCxFQUFZLE1BQ2pGLENBVEQsQ0FTb0Isb0JBQVRPLEtBQXVCQSxLQUFPQyxLQUFPLFNBQVNDLEdBQ3pELE8sOE9DVk8sTUFBTUMsRUFBYSxTQUNiQyxFQUFtQixDQUFDQyxLQUFzQkMsS0FDbkQsTUFBTUMsRUFBUyxHQVdmLE9BVklGLEdBQ0FFLEVBQU9DLEtBQUssR0FBR0wsSUFBYUUsS0FFaENDLEVBQWlCRyxRQUFRQyxJQUNqQkEsSUFFQUgsRUFBT0MsS0FBSyxHQUFHTCxJQUFhTyxLQUM1QkgsRUFBT0MsS0FBS0UsTUFHYkgsRUFBT0ksS0FBSyxNLGdCQ2JoQixNQUFNQyxFQUNGLEdBREVBLEVBS0QsR0F3QlosU0FBU0MsRUFBY0MsR0FDbkIsT0FBT0MsSUFDQ0EsRUFBTUMsVUFBWUYsSUFDbEJDLEVBQU1FLGlCQUNORixFQUFNRyxrQkFDTkgsRUFBTUksY0FBY0MsU0FHaEMsQ0FDcUNQLEVBcEMxQixJQXFDMEJBLEVBQWNELEdBS2JDLEVBQWNELEdDNUM3QyxNQUFNUyxFQUNGLG9CQ0FYLE1BQXdCLFNDRXhCLE1BQU1DLEVBQWMsS0FJZEMsRUFBeUIsRUFJekJDLEVBQWlDLEtBQ2pDQyxFQUFrQyxLQUNsQ0MsRUFBa0MsSUFDbENDLEVBQW1DLElBTW5DQyxFQUFlLENBQ2pCQyxjQUFlLE9BQ2ZDLGFBQWMsTUFDZEMsUUFBUyxVQUNUQyxjQUFlLGdCQUNmQyxLQUFNLE9B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SUFBSTFvQixLQUFPMG9CLEVBQ1hOLEVBQW9CTyxFQUFFRCxFQUFZMW9CLEtBQVNvb0IsRUFBb0JPLEVBQUU5cEIsRUFBU21CLElBQzVFK0ksT0FBTzZmLGVBQWUvcEIsRUFBU21CLEVBQUssQ0FBRTZvQixZQUFZLEVBQU1DLElBQUtKLEVBQVcxb0IsSUFHM0UsRUNQQW9vQixFQUFvQk8sRUFBSSxTQUFTSSxFQUFLQyxHQUFRLE9BQU9qZ0IsT0FBT2tnQixVQUFVcEIsZUFBZUMsS0FBS2lCLEVBQUtDLEVBQU8sRUNDdEdaLEVBQW9CUixFQUFJLFNBQVMvb0IsR0FDWCxvQkFBWHFxQixRQUEwQkEsT0FBT0MsYUFDMUNwZ0IsT0FBTzZmLGVBQWUvcEIsRUFBU3FxQixPQUFPQyxZQUFhLENBQUVuaEIsTUFBTyxXQUU3RGUsT0FBTzZmLGVBQWUvcEIsRUFBUyxhQUFjLENBQUVtSixPQUFPLEdBQ3ZELEUsc0lDRkEsTUFKMkIsQ0FDekJySixLQUFNLFVDU1IsTUFKK0MyYixHQUN0Q3VELEVBQUFBLGNBQUNxRyxFQUFBQSxRQUFPcEcsSUFBQSxHQUFLeEQsRUFBSyxDQUFFcUssbUJBQW9CQSxJIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi9lZGl0b3ItZWxlbWVudHMtY29tbW9uLXV0aWxzL2Rpc3QvZXNtL2Nzc0VkaXRpbmcvY2xhc3MtbmFtZXMtZm9ybW1hdGVyLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vZWRpdG9yLWVsZW1lbnRzLWNvbW1vbi11dGlscy9kaXN0L2VzbS9jb21tb25zL2ExMXkuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvY29tcG9uZW50cy9TZWN0aW9ucy9TZWN0aW9uL2NvbnN0YW50cy50cyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9Ad2l4L2ltYWdlL2Rpc3QvZXNtL0ltYWdlLm1vZHVsZS5zY3NzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B3aXgvaW1hZ2Uta2l0L2Rpc3QvZXNtL2hlbHBlcnMvaW1hZ2VTZXJ2aWNlQ29uc3RhbnRzLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B3aXgvaW1hZ2Uta2l0L2Rpc3QvZXNtL2hlbHBlcnMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdpeC9pbWFnZS1raXQvZGlzdC9lc20vaGVscGVycy9pbWFnZVNlcnZpY2VVdGlscy5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9Ad2l4L2ltYWdlLWtpdC9kaXN0L2VzbS9oZWxwZXJzL2ltYWdlU2VydmljZUZlYXR1cmVTdXBwb3J0T2JqZWN0LmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B3aXgvaW1hZ2Uta2l0L2Rpc3QvZXNtL2hlbHBlcnMvcG9wdWxhdGVGZWF0dXJlU3VwcG9ydC5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9Ad2l4L2ltYWdlLWtpdC9kaXN0L2VzbS9lbmdpbmVzL2F0dHJpYnV0ZXMvYmFja2dyb3VuZEF0dHJpYnV0ZXMuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdpeC9pbWFnZS1raXQvZGlzdC9lc20vZW5naW5lcy9hdHRyaWJ1dGVzL2ltZ0F0dHJpYnV0ZXMuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdpeC9pbWFnZS1raXQvZGlzdC9lc20vZW5naW5lcy9hdHRyaWJ1dGVzL1NWR0F0dHJpYnV0ZXMuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdpeC9pbWFnZS1raXQvZGlzdC9lc20vaGVscGVycy9pbWFnZVRyYW5zZm9ybVBhcnRzLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B3aXgvaW1hZ2Uta2l0L2Rpc3QvZXNtL2hlbHBlcnMvaW1hZ2VUcmFuc2Zvcm1PcHRpb25zLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B3aXgvaW1hZ2Uta2l0L2Rpc3QvZXNtL2FwaS90cmFuc2Zvcm0uanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdpeC9pbWFnZS1raXQvZGlzdC9lc20vaGVscGVycy9icm93c2VyRmVhdHVyZVN1cHBvcnQuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdpeC9pbWFnZS1raXQvZGlzdC9lc20vZW5naW5lcy90cmFuc2Zvcm1zLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B3aXgvaW1hZ2Uta2l0L2Rpc3QvZXNtL2FwaS91cmkuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdpeC9pbWFnZS1raXQvZGlzdC9lc20vaGVscGVycy9pbWFnZVBsYWNlaG9sZGVyVXRpbHMuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdpeC9pbWFnZS1raXQvZGlzdC9lc20vYXBpL21heC9hcGkuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdpeC9pbWFnZS1raXQvZGlzdC9lc20vYXBpL3NyY3NldC5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9Ad2l4L2ltYWdlLWtpdC9kaXN0L2VzbS9lbmdpbmVzL2F0dHJpYnV0ZXMuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdpeC9pbWFnZS1raXQvZGlzdC9lc20vc2RrL2FwaS5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9Ad2l4L2ltYWdlLWtpdC9kaXN0L2VzbS9zZGsvaW5kZXguanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdpeC9pbWFnZS1raXQvZGlzdC9lc20vYXBpL21heC9pbmRleC5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9Ad2l4L2ltYWdlL2Rpc3QvZXNtL0ltYWdlLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvSW1hZ2Uvdmlld2VyL3N0eWxlL0ltYWdlLm1vZHVsZS5zY3NzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvSW1hZ2Uvdmlld2VyL0ltYWdlLnRzeCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL0JhY2tncm91bmRJbWFnZS92aWV3ZXIvQmFja2dyb3VuZEltYWdlLnRzeCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL2VkaXRvci1lbGVtZW50cy1jb21tb24tdXRpbHMvZGlzdC9lc20vY29tbW9ucy92ZWN0b3JJbWFnZVV0aWxzLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvTWVkaWFDb250YWluZXJzL0hvdmVyQm94L3V0aWxzLnRzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvVmlkZW8vdmlld2VyL3N0eWxlL1ZpZGVvLnNjc3MiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvY29tcG9uZW50cy9WaWRlby92aWV3ZXIvVmlkZW8udHN4Iiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvQmFja2dyb3VuZE1lZGlhL3ZpZXdlci9zdHlsZS9CYWNrZ3JvdW5kTWVkaWEuc2NzcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL0JhY2tncm91bmRNZWRpYS92aWV3ZXIvQmFja2dyb3VuZE1lZGlhLnRzeCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL0JhY2tncm91bmRPdmVybGF5L2NvbnN0YW50cy50cyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL0JhY2tncm91bmRPdmVybGF5L3ZpZXdlci9zdHlsZS9CYWNrZ3JvdW5kT3ZlcmxheS5zY3NzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvQmFja2dyb3VuZE92ZXJsYXkvdmlld2VyL0JhY2tncm91bmRPdmVybGF5LnRzeCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL0ZpbGxMYXllcnMvY29uc3RhbnRzLnRzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvRmlsbExheWVycy92aWV3ZXIvc3R5bGUvRmlsbExheWVycy5zY3NzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvRmlsbExheWVycy92aWV3ZXIvdXNlT25Mb2Fkc0V2ZW50cy50cyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL0ZpbGxMYXllcnMvdmlld2VyL0ZpbGxMYXllcnMudHN4Iiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvQmFja2dyb3VuZFgvdmlld2VyL0JhY2tncm91bmRYLnRzeCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL01lZGlhQ29udGFpbmVycy9TaGFwZURpdmlkZXJzL3ZpZXdlci9zdHlsZS9zaGFwZURpdmlkZXJzLnNjc3MiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvY29tcG9uZW50cy9NZWRpYUNvbnRhaW5lcnMvU2hhcGVEaXZpZGVycy92aWV3ZXIvc2hhcGVEaXZpZGVycy50c3giLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvY29tcG9uZW50cy9TZWN0aW9ucy9TZWN0aW9uL1NlY3Rpb24uc2VtYW50aWNDbGFzc05hbWVzLnRzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B3aXgvd2l4LXVpLWljb25zLWNvbW1vbi9kaXN0L2VzbS9kZWZhdWx0L2dlbmVyYWwvZGlzdC9jb21wb25lbnRzL1BhdXNlU21hbGwuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdpeC93aXgtdWktaWNvbnMtY29tbW9uL2Rpc3QvZXNtL2RlZmF1bHQvZ2VuZXJhbC9kaXN0L2NvbXBvbmVudHMvUGxheVNtYWxsLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvU2VjdGlvbnMvU2VjdGlvbi92aWV3ZXIvU2VjdGlvbi50c3giLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi9lZGl0b3ItZWxlbWVudHMtY29tbW9uLXV0aWxzL2Rpc3QvZXNtL21lZGlhL3VzZVZpZGVvQVBJLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvU2VjdGlvbnMvU2VjdGlvbi92aWV3ZXIvc3R5bGVzL1NlY3Rpb24uc2NzcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL2VkaXRvci1lbGVtZW50cy1jb21tb24tdXRpbHMvZGlzdC9lc20vY29tbW9ucy91dGlscy5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L2V4dGVybmFsIHVtZCB7XCJhbWRcIjpcInJlYWN0XCIsXCJjb21tb25qc1wiOlwicmVhY3RcIixcImNvbW1vbmpzMlwiOlwicmVhY3RcIixcInJvb3RcIjpcIlJlYWN0XCJ9Iiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kcy5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9jbHN4L2Rpc3QvY2xzeC5tanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvY29tcG9uZW50cy9TZWN0aW9ucy9Gb290ZXJTZWN0aW9uL0Zvb3RlclNlY3Rpb24uc2VtYW50aWNDbGFzc05hbWVzLnRzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvU2VjdGlvbnMvRm9vdGVyU2VjdGlvbi92aWV3ZXIvRm9vdGVyU2VjdGlvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwicmVhY3RcIikpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoXCJ0aHVuZGVyYm9sdC9jb21wb25lbnQvRm9vdGVyU2VjdGlvbi9Gb290ZXJTZWN0aW9uXCIsIFtcInJlYWN0XCJdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcInRodW5kZXJib2x0L2NvbXBvbmVudC9Gb290ZXJTZWN0aW9uL0Zvb3RlclNlY3Rpb25cIl0gPSBmYWN0b3J5KHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cdGVsc2Vcblx0XHRyb290W1widGh1bmRlcmJvbHQvY29tcG9uZW50L0Zvb3RlclNlY3Rpb24vRm9vdGVyU2VjdGlvblwiXSA9IGZhY3Rvcnkocm9vdFtcIlJlYWN0XCJdKTtcbn0pKCh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDogdGhpcyksIGZ1bmN0aW9uKF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfWGRmX19fKSB7XG5yZXR1cm4gIiwiZXhwb3J0IGNvbnN0IENTU19QUkVGSVggPSAnd2l4dWktJztcbmV4cG9ydCBjb25zdCBmb3JtYXRDbGFzc05hbWVzID0gKHNlbWFudGljQ2xhc3NOYW1lLCAuLi5jdXN0b21DbGFzc05hbWVzKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgaWYgKHNlbWFudGljQ2xhc3NOYW1lKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGAke0NTU19QUkVGSVh9JHtzZW1hbnRpY0NsYXNzTmFtZX1gKTtcbiAgICB9XG4gICAgY3VzdG9tQ2xhc3NOYW1lcy5mb3JFYWNoKGNsYXNzTmFtZSA9PiB7XG4gICAgICAgIGlmIChjbGFzc05hbWUpIHtcbiAgICAgICAgICAgIC8vIGFkZCBlYWNoIGN1c3RvbSBjbGFzcyB3aXRoIGFuZCB3aXRob3V0IHRoZSBwcmVmaXhcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGAke0NTU19QUkVGSVh9JHtjbGFzc05hbWV9YCk7XG4gICAgICAgICAgICByZXN1bHQucHVzaChjbGFzc05hbWUpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdC5qb2luKCcgJyk7XG59O1xuLy8gcmVtb3ZlIHdoZW4gaHR0cHM6Ly9naXRodWIuY29tL3NlYXJjaD9xPXJlcG8lM0F3aXgtcHJpdmF0ZSUyRnRodW5kZXJib2x0JTIwY3VzdG9tQ3NzQ2xhc3NlcyZ0eXBlPWNvZGUgaGFzIG5vIHVzYWdlc1xuZXhwb3J0IGNvbnN0IGN1c3RvbUNzc0NsYXNzZXMgPSAoLi4uY2xhc3NOYW1lcykgPT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgY29uc29sZS53YXJuKCdjdXN0b21Dc3NDbGFzc2VzIGlzIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2UgZm9ybWF0Q2xhc3NOYW1lcyBpbnN0ZWFkJyk7XG4gICAgY29uc3QgW3NlbWFudGljLCAuLi5yZXN0XSA9IGNsYXNzTmFtZXM7XG4gICAgcmV0dXJuIGZvcm1hdENsYXNzTmFtZXMoc2VtYW50aWMsIC4uLnJlc3QpO1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNsYXNzLW5hbWVzLWZvcm1tYXRlci5qcy5tYXAiLCJleHBvcnQgY29uc3Qga2V5Q29kZXMgPSB7XG4gICAgZW50ZXI6IDEzLFxuICAgIHNwYWNlOiAzMixcbiAgICBlbmQ6IDM1LFxuICAgIGhvbWU6IDM2LFxuICAgIGVzY2FwZTogMjcsXG4gICAgYXJyb3dMZWZ0OiAzNyxcbiAgICBhcnJvd1VwOiAzOCxcbiAgICBhcnJvd1JpZ2h0OiAzOSxcbiAgICBhcnJvd0Rvd246IDQwLFxuICAgIHRhYjogOSxcbiAgICBkZWxldGU6IDQ2LFxuICAgIGE6IDY1LFxuICAgIHo6IDkwLFxuICAgIHBhZ2VVcDogMzMsXG4gICAgcGFnZURvd246IDM0LFxufTtcbmV4cG9ydCBjb25zdCBrZXlib2FyZFNob3J0Y3V0cyA9IHtcbiAgICBjb25maXJtS2V5OiAnRW50ZXInLFxuICAgIHNwYWNlS2V5OiAnICcsXG4gICAgYXJyb3dEb3duS2V5OiAnQXJyb3dEb3duJyxcbiAgICBhcnJvd1VwS2V5OiAnQXJyb3dVcCcsXG4gICAgZXNjYXBlS2V5OiAnRXNjYXBlJyxcbn07XG4vLyBzZWU6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9LZXlib2FyZEV2ZW50L2tleS9LZXlfVmFsdWVzXG5leHBvcnQgY29uc3Qga2V5cyA9IHtcbiAgICBzcGFjZTogWydTcGFjZWJhcicsICcgJ10sXG4gICAgZW50ZXI6IFsnRW50ZXInXSxcbn07XG5mdW5jdGlvbiBhY3RpdmF0ZUJ5S2V5KGtleSkge1xuICAgIHJldHVybiBldmVudCA9PiB7XG4gICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSBrZXkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuY2xpY2soKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5leHBvcnQgY29uc3QgYWN0aXZhdGVCeVNwYWNlQnV0dG9uID0gYWN0aXZhdGVCeUtleShrZXlDb2Rlcy5zcGFjZSk7XG5leHBvcnQgY29uc3QgYWN0aXZhdGVCeUVudGVyQnV0dG9uID0gYWN0aXZhdGVCeUtleShrZXlDb2Rlcy5lbnRlcik7XG5leHBvcnQgY29uc3QgYWN0aXZhdGVCeVNwYWNlT3JFbnRlckJ1dHRvbiA9IGV2ZW50ID0+IHtcbiAgICBhY3RpdmF0ZUJ5RW50ZXJCdXR0b24oZXZlbnQpO1xuICAgIGFjdGl2YXRlQnlTcGFjZUJ1dHRvbihldmVudCk7XG59O1xuZXhwb3J0IGNvbnN0IGFjdGl2YXRlQnlFc2NhcGVCdXR0b24gPSBhY3RpdmF0ZUJ5S2V5KGtleUNvZGVzLmVzY2FwZSk7XG5leHBvcnQgY29uc3QgSEFTX0NVU1RPTV9GT0NVU19DTEFTU05BTUUgPSAnaGFzLWN1c3RvbS1mb2N1cyc7XG5leHBvcnQgY29uc3QgYTExeUJsYWNrTGlzdCA9IFsnYXJpYS1pZCcsICdhcmlhLW1ldGFkYXRhJywgJ2FyaWEtdHlwZSddO1xuZXhwb3J0IGNvbnN0IGZpbHRlcmVkQTExeSA9IChhMTF5LCBibGFja2xpc3QpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoYTExeSkucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICBpZiAoIWJsYWNrbGlzdC5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgICBhY2Nba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xufTtcbi8qKlxuICogQGRlcHJlY2F0ZWQgdXNlIGdldEFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVzIGluc3RlYWQgd2hlcmV2ZXIgeW91IGNhblxuICovXG5leHBvcnQgY29uc3QgZ2V0QXJpYUF0dHJpYnV0ZXMgPSAoeyByb2xlLCB0YWJJbmRleCwgdGFiaW5kZXgsIC4uLmFyaWFQcm9wcyB9ID0ge30pID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBPYmplY3QuZW50cmllcyhhcmlhUHJvcHMpLnJlZHVjZSgocHJldiwgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLnByZXYsIFtgYXJpYS0ke2tleX1gLnRvTG93ZXJDYXNlKCldOiB2YWx1ZSB9O1xuICAgIH0sIHsgcm9sZSwgdGFiSW5kZXg6IHRhYkluZGV4ID8/IHRhYmluZGV4IH0pO1xuICAgIE9iamVjdC5rZXlzKHJlc3VsdCkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICBpZiAocmVzdWx0W2tleV0gPT09IHVuZGVmaW5lZCB8fCByZXN1bHRba2V5XSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgICAgICBkZWxldGUgcmVzdWx0W2tleV07XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZmlsdGVyZWRBMTF5KHJlc3VsdCwgYTExeUJsYWNrTGlzdCk7XG59O1xuZXhwb3J0IGNvbnN0IGdldFRhYkluZGV4QXR0cmlidXRlID0gKGExMXkgPSB7fSkgPT4ge1xuICAgIGNvbnN0IHRhYkluZGV4ID0gYTExeS50YWJJbmRleCA/PyBhMTF5LnRhYmluZGV4ID8/IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdGFiSW5kZXggIT09IHVuZGVmaW5lZCA/IHsgdGFiSW5kZXg6IE51bWJlcih0YWJJbmRleCkgfSA6IHt9O1xufTtcbmV4cG9ydCBjb25zdCBnZXRBcmlhTGFiZWxBdHRyaWJ1dGUgPSAoYTExeSkgPT4ge1xuICAgIHJldHVybiBhMTF5Py5sYWJlbCA/IHsgJ2FyaWEtbGFiZWwnOiBhMTF5LmxhYmVsIH0gOiB7fTtcbn07XG5leHBvcnQgY29uc3QgSU5ORVJfRk9DVVNfUklOR19DTEFTU05BTUUgPSAnaGFzLWlubmVyLWZvY3VzLXJpbmcnO1xuY29uc3QgTElORTEgPSAnMCAwIDAgMXB4JztcbmNvbnN0IExJTkUyID0gJzAgMCAwIDNweCc7XG5jb25zdCBDT0xPUjEgPSAnI2ZmZmZmZic7XG5jb25zdCBDT0xPUjIgPSAnIzExNmRmZic7XG5jb25zdCBPVVRFUl9GT0NVU19SSU5HID0gYCR7TElORTF9JHtDT0xPUjF9LCAke0xJTkUyfSR7Q09MT1IyfWA7XG5jb25zdCBJTk5FUl9GT0NVU19SSU5HID0gYGluc2V0ICR7TElORTF9JHtDT0xPUjJ9LCBpbnNldCAke0xJTkUyfSR7Q09MT1IxfWA7XG5leHBvcnQgY29uc3QgZ2V0Rm9jdXNSaW5nVmFsdWUgPSAoaXNPdXRlciA9IHRydWUpID0+IGlzT3V0ZXIgPyBPVVRFUl9GT0NVU19SSU5HIDogSU5ORVJfRk9DVVNfUklORztcbmV4cG9ydCBjb25zdCBnZXRBY2Nlc3NpYmlsaXR5QXR0cmlidXRlcyA9IChhdHRyaWJ1dGVzKSA9PiB7XG4gICAgY29uc3QgeyByb2xlLCB0YWJJbmRleCwgdGFiaW5kZXgsIHNjcmVlblJlYWRlciwgbGFuZywgYXJpYUF0dHJpYnV0ZXMgPSB7fSwgfSA9IGF0dHJpYnV0ZXM7XG4gICAgY29uc3QgcHJlZml4ZWRBcmlhQXR0cmlidXRlcyA9IE9iamVjdC5lbnRyaWVzKGFyaWFBdHRyaWJ1dGVzKS5yZWR1Y2UoKHByZXYsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICByZXR1cm4geyAuLi5wcmV2LCBbYGFyaWEtJHtrZXl9YC50b0xvd2VyQ2FzZSgpXTogdmFsdWUgfTtcbiAgICB9LCB7fSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcm9sZSxcbiAgICAgICAgdGFiSW5kZXg6IHRhYkluZGV4ID8/IHRhYmluZGV4LFxuICAgICAgICBzY3JlZW5SZWFkZXIsXG4gICAgICAgIGFyaWFBdHRyaWJ1dGVzOiBmaWx0ZXJlZEExMXkocHJlZml4ZWRBcmlhQXR0cmlidXRlcywgYTExeUJsYWNrTGlzdCksXG4gICAgICAgIGxhbmcsXG4gICAgfTtcbn07XG5leHBvcnQgY29uc3QgZ2V0QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZXNTcHJlYWQgPSAoYXR0cmlidXRlcykgPT4ge1xuICAgIGNvbnN0IGExMXlQcm9wcyA9IGdldEFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpO1xuICAgIHJldHVybiB7XG4gICAgICAgIC4uLmExMXlQcm9wcy5hcmlhQXR0cmlidXRlcyxcbiAgICAgICAgdGFiSW5kZXg6IGExMXlQcm9wcy50YWJJbmRleCxcbiAgICAgICAgc2NyZWVuUmVhZGVyOiBhMTF5UHJvcHMuc2NyZWVuUmVhZGVyLFxuICAgICAgICBsYW5nOiBhMTF5UHJvcHMubGFuZyxcbiAgICAgICAgcm9sZTogYTExeVByb3BzLnJvbGUsXG4gICAgfTtcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hMTF5LmpzLm1hcCIsImV4cG9ydCBjb25zdCBUZXN0SWRzID0ge1xuICBzZWN0aW9uOiAnc2VjdGlvbi1jb250YWluZXInLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IGNvcnZpZE5hbWUgPSAnJHcuU2VjdGlvbic7XG5cbmV4cG9ydCBjb25zdCBUcmFuc2xhdGlvbktleXMgPSB7XG4gIGFyaWFMYWJlbDogJ1RleHRFZmZlY3RzX01lZGlhQnV0dG9uX0FyaWFMYWJlbCcsXG4gIG5hbWVzcGFjZTogJ2FyaWFMYWJlbHMnLFxufTtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuZXhwb3J0IGRlZmF1bHQge1wiaW1hZ2VcIjpcImpoeHZiUlwifTsiLCIvKipcbiAqIGltYWdlIHNlcnZpY2UgYXBpIHZlcnNpb25cbiAqL1xuY29uc3QgQVBJX1ZFUlNJT04gPSAndjEnO1xuLyoqXG50aGUgbWF4aW11bSByZXRpbmEgZmFjdG9yXG4gKi9cbmNvbnN0IE1BWF9ERVZJQ0VfUElYRUxfUkFUSU8gPSAyO1xuLyoqXG4gc2l0ZSBCRyBsZWdhY3kgbWF4IHdpZHRoIHggaGVpZ2h0XG4gKi9cbmNvbnN0IERTS1RQX01BWF9CR19TSVRFX0xFR0FDWV9XSURUSCA9IDE5MjA7XG5jb25zdCBEU0tUUF9NQVhfQkdfU0lURV9MRUdBQ1lfSEVJR0hUID0gMTkyMDtcbmNvbnN0IE1PQklMRV9NQVhfQkdfU0lURV9MRUdBQ1lfV0lEVEggPSAxMDAwO1xuY29uc3QgTU9CSUxFX01BWF9CR19TSVRFX0xFR0FDWV9IRUlHSFQgPSAxMDAwO1xuLyoqXG4gKiBFbnVtIHN0cmluZyB2YWx1ZXMgb2YgcmVxdWVzdGVkIGltYWdlIGZpdHRpbmcgdHlwZXNcbiAqIE5vdGU6IFRJTEVfSE9SSVpPTlRBTCwgVElMRV9WRVJUSUNBTCwgRklUX0FORF9USUxFIGFyZSBzdXBwb3J0ZWQgZm9yIGxlZ2FjeSBwdXJwb3NlcyBidXQgYXJlIG5vdCBleHBvc2VkXG4gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBiZWNhdXNlIHRoZXkgc2hvdWxkIG5vdCBiZSBleHBvc2VkIGZvciBuZXcgZmVhdHVyZXNcbiAqL1xuY29uc3QgZml0dGluZ1R5cGVzID0ge1xuICAgIFNDQUxFX1RPX0ZJTEw6ICdmaWxsJyxcbiAgICBTQ0FMRV9UT19GSVQ6ICdmaXQnLFxuICAgIFNUUkVUQ0g6ICdzdHJldGNoJyxcbiAgICBPUklHSU5BTF9TSVpFOiAnb3JpZ2luYWxfc2l6ZScsXG4gICAgVElMRTogJ3RpbGUnLFxuICAgIFRJTEVfSE9SSVpPTlRBTDogJ3RpbGVfaG9yaXpvbnRhbCcsXG4gICAgVElMRV9WRVJUSUNBTDogJ3RpbGVfdmVydGljYWwnLFxuICAgIEZJVF9BTkRfVElMRTogJ2ZpdF9hbmRfdGlsZScsXG4gICAgTEVHQUNZX1NUUklQX1RJTEU6ICdsZWdhY3lfc3RyaXBfdGlsZScsXG4gICAgTEVHQUNZX1NUUklQX1RJTEVfSE9SSVpPTlRBTDogJ2xlZ2FjeV9zdHJpcF90aWxlX2hvcml6b250YWwnLFxuICAgIExFR0FDWV9TVFJJUF9USUxFX1ZFUlRJQ0FMOiAnbGVnYWN5X3N0cmlwX3RpbGVfdmVydGljYWwnLFxuICAgIExFR0FDWV9TVFJJUF9TQ0FMRV9UT19GSUxMOiAnbGVnYWN5X3N0cmlwX2ZpbGwnLFxuICAgIExFR0FDWV9TVFJJUF9TQ0FMRV9UT19GSVQ6ICdsZWdhY3lfc3RyaXBfZml0JyxcbiAgICBMRUdBQ1lfU1RSSVBfRklUX0FORF9USUxFOiAnbGVnYWN5X3N0cmlwX2ZpdF9hbmRfdGlsZScsXG4gICAgTEVHQUNZX1NUUklQX09SSUdJTkFMX1NJWkU6ICdsZWdhY3lfc3RyaXBfb3JpZ2luYWxfc2l6ZScsXG4gICAgTEVHQUNZX09SSUdJTkFMX1NJWkU6ICdhY3R1YWxfc2l6ZScsXG4gICAgTEVHQUNZX0ZJVF9XSURUSDogJ2ZpdFdpZHRoJyxcbiAgICBMRUdBQ1lfRklUX0hFSUdIVDogJ2ZpdEhlaWdodCcsXG4gICAgTEVHQUNZX0ZVTEw6ICdmdWxsJyxcbiAgICBMRUdBQ1lfQkdfRklUX0FORF9USUxFOiAnbGVnYWN5X3RpbGUnLFxuICAgIExFR0FDWV9CR19GSVRfQU5EX1RJTEVfSE9SSVpPTlRBTDogJ2xlZ2FjeV90aWxlX2hvcml6b250YWwnLFxuICAgIExFR0FDWV9CR19GSVRfQU5EX1RJTEVfVkVSVElDQUw6ICdsZWdhY3lfdGlsZV92ZXJ0aWNhbCcsXG4gICAgTEVHQUNZX0JHX05PUk1BTDogJ2xlZ2FjeV9ub3JtYWwnLFxufTtcbi8qKlxuICogRW51bSBzdHJpbmcgdmFsdWVzIG9mIGltYWdlIHRyYW5zZm9ybSB0eXBlcyBhcyBwYXNzZWQgdG8gdGhlIGltYWdlIHNlcnZpY2UgYXBpXG4gKi9cbmNvbnN0IHRyYW5zZm9ybVR5cGVzID0ge1xuICAgIEZJVDogJ2ZpdCcsXG4gICAgRklMTDogJ2ZpbGwnLFxuICAgIEZJTExfRk9DQUw6ICdmaWxsX2ZvY2FsJyxcbiAgICBDUk9QOiAnY3JvcCcsXG4gICAgTEVHQUNZX0NST1A6ICdsZWdhY3lfY3JvcCcsXG4gICAgTEVHQUNZX0ZJTEw6ICdsZWdhY3lfZmlsbCcsXG59O1xuLyoqXG4gKiBFbnVtIHN0cmluZyB2YWx1ZXMgb2YgcmVxdWVzdGVkIGltYWdlIGFsaWduIHR5cGVzXG4gKiBAdHlwZSB7e0NFTlRFUjogc3RyaW5nLCBSSUdIVDogc3RyaW5nLCBMRUZUOiBzdHJpbmcsIFRPUDogc3RyaW5nLCBCT1RUT006IHN0cmluZywgVE9QX1JJR0hUOiBzdHJpbmcsIFRPUF9MRUZUOiBzdHJpbmcsIEJPVFRPTV9SSUdIVDogc3RyaW5nLCBCT1RUT01fTEVGVDogc3RyaW5nfX1cbiAqL1xuY29uc3QgYWxpZ25UeXBlcyA9IHtcbiAgICBDRU5URVI6ICdjZW50ZXInLFxuICAgIFRPUDogJ3RvcCcsXG4gICAgVE9QX0xFRlQ6ICd0b3BfbGVmdCcsXG4gICAgVE9QX1JJR0hUOiAndG9wX3JpZ2h0JyxcbiAgICBCT1RUT006ICdib3R0b20nLFxuICAgIEJPVFRPTV9MRUZUOiAnYm90dG9tX2xlZnQnLFxuICAgIEJPVFRPTV9SSUdIVDogJ2JvdHRvbV9yaWdodCcsXG4gICAgTEVGVDogJ2xlZnQnLFxuICAgIFJJR0hUOiAncmlnaHQnLFxufTtcbi8qKlxuICogRW51bSA5R3JpZCBhbGlnbm1lbnQgdG8gZm9jYWwgcG9pbnRcbiAqL1xuY29uc3QgQUxJR05fVFlQRV9UT19GT0NBTF9QT0lOVCA9IHtcbiAgICBbYWxpZ25UeXBlcy5DRU5URVJdOiB7IHg6IDAuNSwgeTogMC41IH0sXG4gICAgW2FsaWduVHlwZXMuVE9QX0xFRlRdOiB7IHg6IDAsIHk6IDAgfSxcbiAgICBbYWxpZ25UeXBlcy5UT1BfUklHSFRdOiB7IHg6IDEuMCwgeTogMCB9LFxuICAgIFthbGlnblR5cGVzLlRPUF06IHsgeDogMC41LCB5OiAwIH0sXG4gICAgW2FsaWduVHlwZXMuQk9UVE9NX0xFRlRdOiB7IHg6IDAsIHk6IDEuMCB9LFxuICAgIFthbGlnblR5cGVzLkJPVFRPTV9SSUdIVF06IHsgeDogMS4wLCB5OiAxLjAgfSxcbiAgICBbYWxpZ25UeXBlcy5CT1RUT01dOiB7IHg6IDAuNSwgeTogMS4wIH0sXG4gICAgW2FsaWduVHlwZXMuUklHSFRdOiB7IHg6IDEuMCwgeTogMC41IH0sXG4gICAgW2FsaWduVHlwZXMuTEVGVF06IHsgeDogMCwgeTogMC41IH0sXG59O1xuLyoqXG4gKiBFbnVtIHN0cmluZyB2YWx1ZXMgb2YgaW1hZ2UgYWxpZ24gdHlwZXMgYXMgcGFzc2VkIHRvIHRoZSBpbWFnZSBzZXJ2aWNlXG4gKi9cbmNvbnN0IGFsaWduVHlwZXNNYXAgPSB7XG4gICAgY2VudGVyOiAnYycsXG4gICAgdG9wOiAndCcsXG4gICAgdG9wX2xlZnQ6ICd0bCcsXG4gICAgdG9wX3JpZ2h0OiAndHInLFxuICAgIGJvdHRvbTogJ2InLFxuICAgIGJvdHRvbV9sZWZ0OiAnYmwnLFxuICAgIGJvdHRvbV9yaWdodDogJ2JyJyxcbiAgICBsZWZ0OiAnbCcsXG4gICAgcmlnaHQ6ICdyJyxcbn07XG4vKipcbiAqIEVudW0gc3RyaW5nIHZhbHVlcyBvZiBodG1sIHRhZyB1c2VkIHRvIGNvbnN0cnVjdCB0aGUgY3NzIG9yIHN2ZyBhdHRyaWJ1dGVzXG4gKiAgQHR5cGUge3tCRzogc3RyaW5nLCBJTUc6IHN0cmluZywgU1ZHOiBzdHJpbmd9fVxuICovXG5jb25zdCBodG1sVGFnID0ge1xuICAgIEJHOiAnYmcnLFxuICAgIElNRzogJ2ltZycsXG4gICAgU1ZHOiAnc3ZnJyxcbn07XG4vKipcbiAqIEVudW0gc3RyaW5nIHZhbHVlcyBvZiB1cHNjYWxlIG1ldGhvZFxuICogIEB0eXBlIHt7REVGQVVMVDogc3RyaW5nLCBTVVBFUjogc3RyaW5nfX1cbiAqL1xuY29uc3QgdXBzY2FsZU1ldGhvZHMgPSB7XG4gICAgQVVUTzogJ2F1dG8nLFxuICAgIENMQVNTSUM6ICdjbGFzc2ljJyxcbiAgICBTVVBFUjogJ3N1cGVyJyxcbn07XG4vKipcbiAqICBhcGkgdmFsdWVzIG9mIHVwc2NhbGUgbWV0aG9kXG4gKiAgQHR5cGUge3tkZWZhdWx0OiBudW1iZXIsIHN1cGVyOiBudW1iZXJ9fVxuICovXG5jb25zdCB1cHNjYWxlTWV0aG9kc1ZhbHVlcyA9IHtcbiAgICBjbGFzc2ljOiAxLFxuICAgIHN1cGVyOiAyLFxufTtcbi8qKlxuICogZGVmYXVsdCB1bnNoYXJwIG1hc2sgdmFsdWVzXG4gKiAgQHR5cGUge3tyYWRpdXM6IG51bWJlciwgYW1vdW50OiBudW1iZXIsIHRocmVzaG9sZDogbnVtYmVyfX1cbiAqL1xuY29uc3QgZGVmYXVsdFVTTSA9IHtcbiAgICByYWRpdXM6ICcwLjY2JyxcbiAgICBhbW91bnQ6ICcxLjAwJyxcbiAgICB0aHJlc2hvbGQ6ICcwLjAxJyxcbn07XG4vKipcbiAqIGRlZmF1bHQgZW1wdHkgZGF0YVxuICovXG5jb25zdCBlbXB0eURhdGEgPSB7XG4gICAgdXJpOiAnJyxcbiAgICBjc3M6IHtcbiAgICAgICAgaW1nOiB7fSxcbiAgICAgICAgY29udGFpbmVyOiB7fSxcbiAgICB9LFxuICAgIGF0dHI6IHtcbiAgICAgICAgaW1nOiB7fSxcbiAgICAgICAgY29udGFpbmVyOiB7fSxcbiAgICB9LFxuICAgIHRyYW5zZm9ybWVkOiBmYWxzZSxcbn07XG5jb25zdCBNQVhfVFJBTlNGT1JNRURfSU1BR0VfV0lEVEggPSA1MDAwO1xuY29uc3QgTUFYX1RSQU5TRk9STUVEX0lNQUdFX0hFSUdIVCA9IDUwMDA7XG5jb25zdCBTQUZFX1RSQU5TRk9STUVEX0FSRUEgPSBNQVhfVFJBTlNGT1JNRURfSU1BR0VfV0lEVEggKiBNQVhfVFJBTlNGT1JNRURfSU1BR0VfSEVJR0hUO1xuLyoqXG4gKiBzdXBlciByZXMgbWFjaGluZSBsZWFybmluZyB1cHNjYWxlIGZhY3RvciBtb2RlbHMgLVxuICogQHR5cGUge251bWJlcltdfVxuICovXG5jb25zdCBTVVBFUl9VUFNDQUxFX01PREVMUyA9IFsxLjUsIDIsIDRdO1xuLyoqXG4gKiBpbWFnZSBxdWFsaXRpZXNcbiAqL1xuY29uc3QgaW1hZ2VTY2FsZURlZmF1bHRzID0ge1xuICAgIEhJR0g6IHtcbiAgICAgICAgc2l6ZTogMTQwMCAqIDE0MDAsXG4gICAgICAgIHF1YWxpdHk6IDkwLFxuICAgICAgICBtYXhVcHNjYWxlOiAxLFxuICAgIH0sXG4gICAgTUVESVVNOiB7XG4gICAgICAgIHNpemU6IDYwMCAqIDYwMCxcbiAgICAgICAgcXVhbGl0eTogODUsXG4gICAgICAgIG1heFVwc2NhbGU6IDEsXG4gICAgfSxcbiAgICBMT1c6IHtcbiAgICAgICAgc2l6ZTogNDAwICogNDAwLFxuICAgICAgICBxdWFsaXR5OiA4MCxcbiAgICAgICAgbWF4VXBzY2FsZTogMS4yLFxuICAgIH0sXG4gICAgVElOWToge1xuICAgICAgICBzaXplOiAwLFxuICAgICAgICBxdWFsaXR5OiA4MCxcbiAgICAgICAgbWF4VXBzY2FsZTogMS40LFxuICAgIH0sXG59O1xuLyoqXG4gKiBpbWFnZSBxdWFsaXR5XG4gKiBAdHlwZSB7e0hJR0g6IHN0cmluZywgTUVESVVNOiBzdHJpbmcsIExPVzogc3RyaW5nLCBUSU5ZOiBzdHJpbmd9fVxuICovXG5jb25zdCBpbWFnZVF1YWxpdHkgPSB7XG4gICAgSElHSDogJ0hJR0gnLFxuICAgIE1FRElVTTogJ01FRElVTScsXG4gICAgTE9XOiAnTE9XJyxcbiAgICBUSU5ZOiAnVElOWScsXG59O1xuLyoqXG4gKiBpbWFnZSBmaWx0ZXJzXG4gKiBAdHlwZSB7e0NPTlRSQVNUOiBzdHJpbmcsIEJSSUdIVE5FU1M6IHN0cmluZywgU0FUVVJBVElPTjogc3RyaW5nLCBIVUU6IHN0cmluZywgQkxVUjogc3RyaW5nfX1cbiAqL1xuY29uc3QgaW1hZ2VGaWx0ZXJzID0ge1xuICAgIENPTlRSQVNUOiAnY29udHJhc3QnLFxuICAgIEJSSUdIVE5FU1M6ICdicmlnaHRuZXNzJyxcbiAgICBTQVRVUkFUSU9OOiAnc2F0dXJhdGlvbicsXG4gICAgSFVFOiAnaHVlJyxcbiAgICBCTFVSOiAnYmx1cicsXG59O1xuY29uc3QgZmlsZVR5cGUgPSB7XG4gICAgSlBHOiAnanBnJyxcbiAgICBKUEVHOiAnanBlZycsXG4gICAgSlBFOiAnanBlJyxcbiAgICBQTkc6ICdwbmcnLFxuICAgIFdFQlA6ICd3ZWJwJyxcbiAgICBXSVhfSUNPX01QOiAnd2l4X2ljb19tcCcsXG4gICAgV0lYX01QOiAnd2l4X21wJyxcbiAgICBHSUY6ICdnaWYnLFxuICAgIFNWRzogJ3N2ZycsXG4gICAgQVZJRjogJ2F2aWYnLFxuICAgIFVOUkVDT0dOSVpFRDogJ3VucmVjb2duaXplZCcsXG59O1xuY29uc3QgZW5jb2RpbmdUeXBlcyA9IHtcbiAgICBBVklGOiAnQVZJRicsXG4gICAgUEFWSUY6ICdQQVZJRicsXG59O1xuY29uc3Qgc3VwcG9ydGVkRXh0ZW5zaW9ucyA9IFtcbiAgICBmaWxlVHlwZS5KUEcsXG4gICAgZmlsZVR5cGUuSlBFRyxcbiAgICBmaWxlVHlwZS5KUEUsXG4gICAgZmlsZVR5cGUuUE5HLFxuICAgIGZpbGVUeXBlLkdJRixcbiAgICBmaWxlVHlwZS5XRUJQLFxuXTtcbmV4cG9ydCB7IGFsaWduVHlwZXMsIGFsaWduVHlwZXNNYXAsIHRyYW5zZm9ybVR5cGVzLCBlbmNvZGluZ1R5cGVzLCBmaXR0aW5nVHlwZXMsIGh0bWxUYWcsIHVwc2NhbGVNZXRob2RzLCB1cHNjYWxlTWV0aG9kc1ZhbHVlcywgZGVmYXVsdFVTTSwgZW1wdHlEYXRhLCBpbWFnZVF1YWxpdHksIGltYWdlRmlsdGVycywgaW1hZ2VTY2FsZURlZmF1bHRzLCBmaWxlVHlwZSwgc3VwcG9ydGVkRXh0ZW5zaW9ucywgRFNLVFBfTUFYX0JHX1NJVEVfTEVHQUNZX1dJRFRILCBNT0JJTEVfTUFYX0JHX1NJVEVfTEVHQUNZX1dJRFRILCBEU0tUUF9NQVhfQkdfU0lURV9MRUdBQ1lfSEVJR0hULCBNT0JJTEVfTUFYX0JHX1NJVEVfTEVHQUNZX0hFSUdIVCwgU0FGRV9UUkFOU0ZPUk1FRF9BUkVBLCBTVVBFUl9VUFNDQUxFX01PREVMUywgTUFYX0RFVklDRV9QSVhFTF9SQVRJTywgQUxJR05fVFlQRV9UT19GT0NBTF9QT0lOVCwgQVBJX1ZFUlNJT04sIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZVNlcnZpY2VDb25zdGFudHMuanMubWFwIiwiLyoqXG4gKiBTaW1wbGUgdGVtcGxhdGVzLlxuICogUmVjZWl2ZXMgYSBzdHJpbmcgd2l0aCBlczYgJHsuLi59IHN0eWxlIHRlbXBsYXRlIGFyZ3VtZW50cyBhbmQgcmV0dXJucyBhIHRyYW5zZm9ybWVkIHN0cmluZy5cbiAqIEBwYXJhbSBzdHJpbmdcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn1cbiAqL1xuZnVuY3Rpb24gdGVtcGxhdGUoc3RyaW5ncywgLi4ua2V5cykge1xuICAgIHJldHVybiBmdW5jdGlvbiAoLi4udmFsdWVzKSB7XG4gICAgICAgIGNvbnN0IGRpY3QgPSB2YWx1ZXNbdmFsdWVzLmxlbmd0aCAtIDFdIHx8IHt9O1xuICAgICAgICBjb25zdCByZXN1bHQgPSBbc3RyaW5nc1swXV07XG4gICAgICAgIGtleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5LCBpKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IE51bWJlci5pc0ludGVnZXIoa2V5KSA/IHZhbHVlc1trZXldIDogZGljdFtrZXldO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUsIHN0cmluZ3NbaSArIDFdKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQuam9pbignJyk7XG4gICAgfTtcbn1cbi8qKlxuICogR2V0IHRoZSBsYXN0IGVsZW1lbnQgaW4gYW4gYXJyYXlcbiAqIEBwYXJhbSBhcnJheVxuICogQHJldHVybnMgeyp9XG4gKi9cbmZ1bmN0aW9uIGxhc3QoYXJyYXkpIHtcbiAgICByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gMV07XG59XG5leHBvcnQgeyBsYXN0LCB0ZW1wbGF0ZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbHMuanMubWFwIiwiaW1wb3J0IHsgYWxpZ25UeXBlcywgYWxpZ25UeXBlc01hcCwgZmlsZVR5cGUsIGZpdHRpbmdUeXBlcywgaW1hZ2VRdWFsaXR5LCBpbWFnZVNjYWxlRGVmYXVsdHMsIHRyYW5zZm9ybVR5cGVzLCB1cHNjYWxlTWV0aG9kcywgdXBzY2FsZU1ldGhvZHNWYWx1ZXMsIEFMSUdOX1RZUEVfVE9fRk9DQUxfUE9JTlQsIE1BWF9ERVZJQ0VfUElYRUxfUkFUSU8sIFNVUEVSX1VQU0NBTEVfTU9ERUxTLCBTQUZFX1RSQU5TRk9STUVEX0FSRUEsIH0gZnJvbSAnLi9pbWFnZVNlcnZpY2VDb25zdGFudHMnO1xuaW1wb3J0IHsgbGFzdCB9IGZyb20gJy4vdXRpbHMnO1xuY29uc3QgU1VQUE9SVEVEX0lNQUdFX0VYVEVOU0lPTlMgPSBbXG4gICAgZmlsZVR5cGUuUE5HLFxuICAgIGZpbGVUeXBlLkpQRUcsXG4gICAgZmlsZVR5cGUuSlBHLFxuICAgIGZpbGVUeXBlLkpQRSxcbiAgICBmaWxlVHlwZS5XSVhfSUNPX01QLFxuICAgIGZpbGVUeXBlLldJWF9NUCxcbiAgICBmaWxlVHlwZS5XRUJQLFxuICAgIGZpbGVUeXBlLkFWSUYsXG5dO1xuY29uc3QgSlBHX0VYVEVOU0lPTlMgPSBbXG4gICAgZmlsZVR5cGUuSlBFRyxcbiAgICBmaWxlVHlwZS5KUEcsXG4gICAgZmlsZVR5cGUuSlBFLFxuXTtcbi8qKlxuICogY2hlY2tzIGlmIGltYWdlIHR5cGUgaXMgc3VwcG9ydGVkXG4gKiBAcGFyYW0ge3N0cmluZ30gICAgIHVyaSAgICAgIGltYWdlIHNvdXJjZSB1cmlcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNJbWFnZVR5cGVTdXBwb3J0ZWQodXJpKSB7XG4gICAgcmV0dXJuIFNVUFBPUlRFRF9JTUFHRV9FWFRFTlNJT05TLmluY2x1ZGVzKGdldEZpbGVFeHRlbnNpb24odXJpKSk7XG59XG4vKipcbiAqIGNoZWNrIHJlcXVlc3QgaW50ZWdyaXR5XG4gKiBAcGFyYW0ge0ZpdHRpbmdUeXBlfSAgICAgICAgICAgICBmaXR0aW5nVHlwZSAgICAgICAgIGltYWdlU2VydmljZS5maXR0aW5nVHlwZXNcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1Tb3VyY2V9ICAgIHNyY1xuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybVRhcmdldH0gICAgdGFyZ2V0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWRSZXF1ZXN0KGZpdHRpbmdUeXBlLCBzcmMsIHRhcmdldCkge1xuICAgIHJldHVybiAodGFyZ2V0ICYmXG4gICAgICAgIHNyYyAmJlxuICAgICAgICAhaXNVcmxFbXB0eU9yTm9uZShzcmMuaWQpICYmXG4gICAgICAgIE9iamVjdC52YWx1ZXMoZml0dGluZ1R5cGVzKS5pbmNsdWRlcyhmaXR0aW5nVHlwZSkpO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgYW5pbWF0ZWQgV2ViUC9BVklGIGltYWdlcyBjYW4gYmUgdHJhbnNmb3JtZWQuXG4gKiBUaGVzZSBmb3JtYXRzIGNhbiBvbmx5IGJlIHRyYW5zZm9ybWVkIHdoZW4gZXhwbGljaXRseSBhbGxvd2VkIHZpYSBhbGxvd0FuaW1hdGVkVHJhbnNmb3JtLlxuICpcbiAqIEBwYXJhbSB1cmkgLSBJbWFnZSBVUkkgdG8gY2hlY2tcbiAqIEBwYXJhbSBoYXNBbmltYXRpb24gLSBXaGV0aGVyIHRoZSBpbWFnZSBoYXMgYW5pbWF0aW9uIG1ldGFkYXRhXG4gKiBAcGFyYW0gYWxsb3dBbmltYXRlZFRyYW5zZm9ybSAtIFdoZXRoZXIgYW5pbWF0ZWQgdHJhbnNmb3JtcyBhcmUgYWxsb3dlZCAodXNlZCBpbiBwbGFjZWhvbGRlciBmbG93KVxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgaW1hZ2UgY2FuIGJlIHRyYW5zZm9ybWVkXG4gKi9cbmZ1bmN0aW9uIGNhblRyYW5zZm9ybUFuaW1hdGVkV2VicE9yQXZpZih1cmksIGhhc0FuaW1hdGlvbiwgYWxsb3dBbmltYXRlZFRyYW5zZm9ybSkge1xuICAgIGNvbnN0IGlzQXZpZldlYnBGb3JtYXQgPSBpc1dFQlAodXJpKSB8fCBpc0FWSUYodXJpKTtcbiAgICBpZiAoIWlzQXZpZldlYnBGb3JtYXQgfHwgIWhhc0FuaW1hdGlvbikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGFsbG93QW5pbWF0ZWRUcmFuc2Zvcm07XG59XG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiBhIEdJRiBjYW4gYmUgdHJhbnNmb3JtZWQuXG4gKiBHSUZzIGNhbiBiZSB0cmFuc2Zvcm1lZCBpbiB0d28gc2NlbmFyaW9zOlxuICogMS4gSW4gcGxhY2Vob2xkZXIgZmxvdyB3aGVuIGFsbG93QW5pbWF0ZWRUcmFuc2Zvcm0gaXMgdHJ1ZVxuICogMi4gSW4gbm9uLXBsYWNlaG9sZGVyIGZsb3cgd2hlbiBhbGxvd0Z1bGxHSUZUcmFuc2Zvcm1hdGlvbiBpcyB0cnVlXG4gKlxuICogQHBhcmFtIHVyaSAtIEltYWdlIFVSSSB0byBjaGVja1xuICogQHBhcmFtIGFsbG93QW5pbWF0ZWRUcmFuc2Zvcm0gLSBXaGV0aGVyIGFuaW1hdGVkIHRyYW5zZm9ybXMgYXJlIGFsbG93ZWQgKHVzZWQgaW4gcGxhY2Vob2xkZXIgZmxvdylcbiAqIEBwYXJhbSBhbGxvd0Z1bGxHSUZUcmFuc2Zvcm1hdGlvbiAtIFdoZXRoZXIgZnVsbCBHSUYgdHJhbnNmb3JtYXRpb24gaXMgYWxsb3dlZCAodXNlZCBpbiBub24tcGxhY2Vob2xkZXIgZmxvdylcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIEdJRiBjYW4gYmUgdHJhbnNmb3JtZWRcbiAqL1xuZnVuY3Rpb24gY2FuVHJhbnNmb3JtR0lGKHVyaSwgYWxsb3dBbmltYXRlZFRyYW5zZm9ybSwgYWxsb3dGdWxsR0lGVHJhbnNmb3JtYXRpb24pIHtcbiAgICBpZiAoIWlzR0lGKHVyaSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gISEoYWxsb3dBbmltYXRlZFRyYW5zZm9ybSB8fCBhbGxvd0Z1bGxHSUZUcmFuc2Zvcm1hdGlvbik7XG59XG4vKipcbiAqIENoZWNrIGlmIGltYWdlIHRyYW5zZm9ybSBpcyBzdXBwb3J0ZWQgZm9yIHNvdXJjZSBpbWFnZS5cbiAqIFJldHVybnMgdHJ1ZSBpZjpcbiAqIC0gSW1hZ2UgaXMgYSBzdXBwb3J0ZWQgdHlwZSAoUE5HLCBKUEVHLCBXZWJQLCBBVklGLCBldGMuKSwgT1JcbiAqIC0gSW1hZ2UgaXMgYSBHSUYgdGhhdCBjYW4gYmUgdHJhbnNmb3JtZWQgKHNlZSBjYW5UcmFuc2Zvcm1HSUYpXG4gKlxuICogQHBhcmFtIHVyaSAtIEltYWdlIFVSSSB0byBjaGVja1xuICogQHBhcmFtIGhhc0FuaW1hdGlvbiAtIFdoZXRoZXIgdGhlIGltYWdlIGhhcyBhbmltYXRpb24gbWV0YWRhdGFcbiAqIEBwYXJhbSBhbGxvd0FuaW1hdGVkVHJhbnNmb3JtIC0gV2hldGhlciBhbmltYXRlZCB0cmFuc2Zvcm1zIGFyZSBhbGxvd2VkICh1c2VkIGluIHBsYWNlaG9sZGVyIGZsb3cpXG4gKiBAcGFyYW0gYWxsb3dGdWxsR0lGVHJhbnNmb3JtYXRpb24gLSBXaGV0aGVyIGZ1bGwgR0lGIHRyYW5zZm9ybWF0aW9uIGlzIGFsbG93ZWQgKHVzZWQgaW4gbm9uLXBsYWNlaG9sZGVyIGZsb3cpXG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBpbWFnZSBjYW4gYmUgdHJhbnNmb3JtZWRcbiAqL1xuZnVuY3Rpb24gaXNJbWFnZVRyYW5zZm9ybUFwcGxpY2FibGUodXJpLCBoYXNBbmltYXRpb24sIGFsbG93QW5pbWF0ZWRUcmFuc2Zvcm0sIGFsbG93RnVsbEdJRlRyYW5zZm9ybWF0aW9uKSB7XG4gICAgLy8gRXh0ZXJuYWwgVVJMcyBjYW5ub3QgYmUgdHJhbnNmb3JtZWRcbiAgICBpZiAoaXNFeHRlcm5hbFVybCh1cmkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gQ2hlY2sgaWYgYW5pbWF0ZWQgd2VicC9hdmlmIGNhbiBiZSB0cmFuc2Zvcm1lZFxuICAgIGlmICghY2FuVHJhbnNmb3JtQW5pbWF0ZWRXZWJwT3JBdmlmKHVyaSwgaGFzQW5pbWF0aW9uLCBhbGxvd0FuaW1hdGVkVHJhbnNmb3JtKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIENoZWNrIGlmIGltYWdlIHR5cGUgaXMgc3VwcG9ydGVkIG9yIGlmIGl0J3MgYSB0cmFuc2Zvcm1hYmxlIEdJRlxuICAgIGNvbnN0IGlzU3VwcG9ydGVkSW1hZ2VUeXBlID0gaXNJbWFnZVR5cGVTdXBwb3J0ZWQodXJpKTtcbiAgICBjb25zdCBpc1RyYW5zZm9ybWFibGVHaWYgPSBjYW5UcmFuc2Zvcm1HSUYodXJpLCBhbGxvd0FuaW1hdGVkVHJhbnNmb3JtLCBhbGxvd0Z1bGxHSUZUcmFuc2Zvcm1hdGlvbik7XG4gICAgcmV0dXJuIGlzU3VwcG9ydGVkSW1hZ2VUeXBlIHx8IGlzVHJhbnNmb3JtYWJsZUdpZjtcbn1cbi8qKlxuICogcmV0dXJucyB0cnVlIGlmIGltYWdlIGlzIG9mIEpQRyB0eXBlXG4gKiBAcGFyYW0ge3N0cmluZ30gIHVyaVxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc0pQRyh1cmkpIHtcbiAgICByZXR1cm4gSlBHX0VYVEVOU0lPTlMuaW5jbHVkZXMoZ2V0RmlsZUV4dGVuc2lvbih1cmkpKTtcbn1cbi8qKlxuICogcmV0dXJucyB0cnVlIGlmIGltYWdlIGlzIG9mIFBORyB0eXBlXG4gKiBAcGFyYW0ge3N0cmluZ30gIHVyaVxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc1BORyh1cmkpIHtcbiAgICByZXR1cm4gZ2V0RmlsZUV4dGVuc2lvbih1cmkpID09PSBmaWxlVHlwZS5QTkc7XG59XG4vKipcbiAqIHJldHVybnMgdHJ1ZSBpZiBpbWFnZSBpcyBvZiB3ZWJQIHR5cGVcbiAqIEBwYXJhbSB7c3RyaW5nfSAgdXJpXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzV0VCUCh1cmkpIHtcbiAgICByZXR1cm4gZ2V0RmlsZUV4dGVuc2lvbih1cmkpID09PSBmaWxlVHlwZS5XRUJQO1xufVxuLyoqXG4gKiByZXR1cm5zIHRydWUgaWYgaW1hZ2UgaXMgb2YgR0lGIHR5cGVcbiAqIEBwYXJhbSB7c3RyaW5nfSAgdXJpXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzR0lGKHVyaSkge1xuICAgIHJldHVybiBnZXRGaWxlRXh0ZW5zaW9uKHVyaSkgPT09IGZpbGVUeXBlLkdJRjtcbn1cbi8qKlxuICogcmV0dXJucyB0cnVlIGlmIGltYWdlIGlzIG9mIHdlYlAgdHlwZVxuICogQHBhcmFtIHtzdHJpbmd9ICB1cmlcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNBVklGKHVyaSkge1xuICAgIHJldHVybiBnZXRGaWxlRXh0ZW5zaW9uKHVyaSkgPT09IGZpbGVUeXBlLkFWSUY7XG59XG4vKipcbiAqIHJldHVybnMgdHJ1ZSBpZiB0aGUgdXJsIHN0YXJ0cyB3aXRoIGh0dHAsIGh0dHBzLCAvLyBvciBkYXRhXG4gKiBAcGFyYW0ge3N0cmluZ30gIHVybFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc0V4dGVybmFsVXJsKHVybCkge1xuICAgIHJldHVybiAvKF5odHRwcz8pfCheZGF0YSl8KF5cXC9cXC8pLy50ZXN0KHVybCk7XG59XG4vKipcbiAqIHJldHVybnMgdHJ1ZSBpZiB0aGUgdXJsIGVtcHR5IG9yIG5vbmUgc3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gIHVybFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc1VybEVtcHR5T3JOb25lKHVybCkge1xuICAgIHJldHVybiAhdXJsIHx8ICF1cmwudHJpbSgpIHx8IHVybC50b0xvd2VyQ2FzZSgpID09PSAnbm9uZSc7XG59XG4vKipcbiAqIHJldHVybnMgc2VhcmNoIGJvdCB0cnVlIG9yIGZhbHNlIGFzIGluZGljYXRlZCBpbiBvcHRpb25zXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtT3B0aW9uc30gICBvcHRpb25zXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzU0VPQm90KG9wdGlvbnMpIHtcbiAgICByZXR1cm4gb3B0aW9ucz8uaXNTRU9Cb3QgPz8gZmFsc2U7XG59XG4vLyBodHRwczovL2ppcmEud2l4cHJlc3MuY29tL2Jyb3dzZS9XRUVELTEyNjY3XG4vLyBjb25zdCBpbGxlZ2FsQ2hhcnMgPSBbJy8nLCAnXFxcXCcsICcjJywgJ14nLCAnPycsICd7JywgJ30nLCAnPCcsICc+JywgJ3wnLCAnYCcsICfigJwnLCAnOicsICdcIiddLm1hcChlbmNvZGVVUklDb21wb25lbnQpXG5jb25zdCBJTExFR0FMX0NIQVJTID0gWycvJywgJ1xcXFwnLCAnPycsICc8JywgJz4nLCAnfCcsICfigJwnLCAnOicsICdcIiddLm1hcChlbmNvZGVVUklDb21wb25lbnQpO1xuY29uc3QgVVJMX1NBRkVfSUxMRUdBTF9DSEFSUyA9IFsnXFxcXC4nLCAnXFxcXConXTtcbmNvbnN0IElMTEVHQUxfQ0hBUlNfUkVQTEFDRU1FTlQgPSAnXyc7XG4vKipcbiAqIHJldHVybnMgc291cmNlIGltYWdlIGZpbGUgbmFtZSAobm8gZXh0ZW5zaW9uKVxuICogQHBhcmFtIHtzdHJpbmd9ICAgICB1cmkgICAgICBpbWFnZSBzb3VyY2UgdXJpXG4gKiBAcGFyYW0ge3N0cmluZ30gICAgIFtuYW1lXSAgIG9wdGlvbmFsIGltYWdlIHNvdXJjZSBuYW1lXG4gKlxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZ2V0RmlsZU5hbWUodXJpLCBuYW1lKSB7XG4gICAgY29uc3QgYmVmb3JlTGVhZGluZ1NsYXNoUmVnZXhwID0gL1xcLyguKj8pJC87XG4gICAgY29uc3QgZmlsZUV4dGVuc2lvblJlZ2V4cCA9IC9cXC4oW14uXSopJC87XG4gICAgY29uc3QgaWxsZWdhbENoYXJzUmVnZXggPSBuZXcgUmVnRXhwKGAoJHtJTExFR0FMX0NIQVJTLmNvbmNhdChVUkxfU0FGRV9JTExFR0FMX0NIQVJTKS5qb2luKCd8Jyl9KWAsICdnJyk7XG4gICAgLy8gaWYgbmFtZSBpcyBhIG5vbiBlbXB0eSBzdHJpbmcsIHJlbW92ZSBvbmx5IHN1cHBvcnRlZCBleHRlbnNpb24gaWYgZXhpc3RzIGFuZCB1cmwgZW5jb2RlIHRoZSBzdHJpbmdcbiAgICBpZiAobmFtZSAmJiBuYW1lLmxlbmd0aCkge1xuICAgICAgICBsZXQgZmlsZU5hbWUgPSBuYW1lO1xuICAgICAgICBjb25zdCBleHRlbnNpb24gPSBuYW1lLm1hdGNoKGZpbGVFeHRlbnNpb25SZWdleHApO1xuICAgICAgICBpZiAoZXh0ZW5zaW9uICYmXG4gICAgICAgICAgICBTVVBQT1JURURfSU1BR0VfRVhURU5TSU9OUy5pbmNsdWRlcyhleHRlbnNpb25bMV0pKSB7XG4gICAgICAgICAgICBmaWxlTmFtZSA9IG5hbWUucmVwbGFjZShmaWxlRXh0ZW5zaW9uUmVnZXhwLCAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChmaWxlTmFtZSkucmVwbGFjZShpbGxlZ2FsQ2hhcnNSZWdleCwgSUxMRUdBTF9DSEFSU19SRVBMQUNFTUVOVCk7XG4gICAgfVxuICAgIC8vIGVsc2UsIHRyaW0gYW55IHByZWNlZGluZyBtZWRpYSBzdHJ1Y3R1cmUgZnJvbSB0aGUgdXJpIHN0cmluZyAobGlrZSBcIm1lZGlhL1wiIGV0Yy4pIGFuZCByZW1vdmUgZXh0ZW5zaW9uXG4gICAgY29uc3QgdHJpbW1lZCA9IHVyaS5tYXRjaChiZWZvcmVMZWFkaW5nU2xhc2hSZWdleHApO1xuICAgIGNvbnN0IGZpbGVOYW1lID0gdHJpbW1lZCA/IHRyaW1tZWRbMV0gOiB1cmk7XG4gICAgcmV0dXJuIGZpbGVOYW1lLnJlcGxhY2UoZmlsZUV4dGVuc2lvblJlZ2V4cCwgJycpO1xufVxuLyoqXG4gKiByZXR1cm5zIHNvdXJjZSBpbWFnZSBmaWxlIG5hbWUgKG5vIGV4dGVuc2lvbilcbiAqIEBwYXJhbSB7c3RyaW5nfSAgICAgdXJpICAgICAgaW1hZ2Ugc291cmNlIHVyaVxuICpcbiAqIEByZXR1cm5zIHtGaWxlVHlwZX1cbiAqL1xuZnVuY3Rpb24gZ2V0RmlsZVR5cGUodXJpKSB7XG4gICAgaWYgKGlzSlBHKHVyaSkpIHtcbiAgICAgICAgcmV0dXJuIGZpbGVUeXBlLkpQRztcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNQTkcodXJpKSkge1xuICAgICAgICByZXR1cm4gZmlsZVR5cGUuUE5HO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc1dFQlAodXJpKSkge1xuICAgICAgICByZXR1cm4gZmlsZVR5cGUuV0VCUDtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNHSUYodXJpKSkge1xuICAgICAgICByZXR1cm4gZmlsZVR5cGUuR0lGO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc0FWSUYodXJpKSkge1xuICAgICAgICByZXR1cm4gZmlsZVR5cGUuQVZJRjtcbiAgICB9XG4gICAgcmV0dXJuIGZpbGVUeXBlLlVOUkVDT0dOSVpFRDtcbn1cbi8qKlxuICogcmV0dXJucyBzb3VyY2UgaW1hZ2UgZmlsZSBleHRlbnNpb25cbiAqIEBwYXJhbSB7c3RyaW5nfSAgICAgdXJpICAgICAgaW1hZ2Ugc291cmNlIHVyaVxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGdldEZpbGVFeHRlbnNpb24odXJpKSB7XG4gICAgY29uc3Qgc3BsaXRVUkkgPSAvWy5dKFteLl0rKSQvLmV4ZWModXJpKTtcbiAgICByZXR1cm4gKChzcGxpdFVSSSAmJiAvWy5dKFteLl0rKSQvLmV4ZWModXJpKVsxXSkgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG59XG4vKipcbiAqIHJldHVybnMgc2NhbGUgZmFjdG9yIG5lZWRlZCBpZiBGSVQgZml0dGluZ1xuICogQHBhcmFtIHtudW1iZXJ9ICBzV2lkdGhcbiAqIEBwYXJhbSB7bnVtYmVyfSAgc0hlaWdodFxuICogQHBhcmFtIHtudW1iZXJ9ICBkV2lkdGhcbiAqIEBwYXJhbSB7bnVtYmVyfSAgZEhlaWdodFxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9XG4gKi9cbmZ1bmN0aW9uIGdldEZpdFNjYWxlRmFjdG9yKHNXaWR0aCwgc0hlaWdodCwgZFdpZHRoLCBkSGVpZ2h0KSB7XG4gICAgcmV0dXJuIE1hdGgubWluKGRXaWR0aCAvIHNXaWR0aCwgZEhlaWdodCAvIHNIZWlnaHQpO1xufVxuLyoqXG4gKiByZXR1cm5zIHNjYWxlIGZhY3RvciBuZWVkZWQgaWYgRklMTCBmaXR0aW5nXG4gKiBAcGFyYW0ge251bWJlcn0gIHNXaWR0aFxuICogQHBhcmFtIHtudW1iZXJ9ICBzSGVpZ2h0XG4gKiBAcGFyYW0ge251bWJlcn0gIGRXaWR0aFxuICogQHBhcmFtIHtudW1iZXJ9ICBkSGVpZ2h0XG4gKlxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZnVuY3Rpb24gZ2V0RmlsbFNjYWxlRmFjdG9yKHNXaWR0aCwgc0hlaWdodCwgZFdpZHRoLCBkSGVpZ2h0KSB7XG4gICAgcmV0dXJuIE1hdGgubWF4KGRXaWR0aCAvIHNXaWR0aCwgZEhlaWdodCAvIHNIZWlnaHQpO1xufVxuLyoqXG4gKiByZXR1cm5zIHNjYWxlIGZhY3RvciBzb3VyY2UgdGFyZ2V0XG4gKiBAcGFyYW0ge251bWJlcn0gIHNXaWR0aFxuICogQHBhcmFtIHtudW1iZXJ9ICBzSGVpZ2h0XG4gKiBAcGFyYW0ge251bWJlcn0gIGRXaWR0aFxuICogQHBhcmFtIHtudW1iZXJ9ICBkSGVpZ2h0XG4gKiBAcGFyYW0ge3N0cmluZ30gIHRyYW5zZm9ybVR5cGVcbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5mdW5jdGlvbiBnZXRTY2FsZUZhY3RvcihzV2lkdGgsIHNIZWlnaHQsIGRXaWR0aCwgZEhlaWdodCwgdHJhbnNmb3JtVHlwZSkge1xuICAgIGxldCBzY2FsZUZhY3RvcjtcbiAgICBpZiAodHJhbnNmb3JtVHlwZSA9PT0gdHJhbnNmb3JtVHlwZXMuRklMTCkge1xuICAgICAgICBzY2FsZUZhY3RvciA9IGdldEZpbGxTY2FsZUZhY3RvcihzV2lkdGgsIHNIZWlnaHQsIGRXaWR0aCwgZEhlaWdodCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHRyYW5zZm9ybVR5cGUgPT09IHRyYW5zZm9ybVR5cGVzLkZJVCkge1xuICAgICAgICBzY2FsZUZhY3RvciA9IGdldEZpdFNjYWxlRmFjdG9yKHNXaWR0aCwgc0hlaWdodCwgZFdpZHRoLCBkSGVpZ2h0KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHNjYWxlRmFjdG9yID0gMTtcbiAgICB9XG4gICAgcmV0dXJuIHNjYWxlRmFjdG9yO1xufVxuLyoqXG4gKiBnZXQgY2FsY3VsYXRlZCBzY2FsZSBmYWN0b3IgLCB3aWR0aCBhbmQgaGVpZ2h0IHdoaWxlIGNvbnNpZGVyaW5nIHdpeG1wIGltYWdlIHRyYW5zZm9ybSBkaW1lbnNpb24gbGltaXRzXG4gKiBAcGFyYW0gc1dpZHRoXG4gKiBAcGFyYW0gc0hlaWdodFxuICogQHBhcmFtIGRXaWR0aFxuICogQHBhcmFtIGRIZWlnaHRcbiAqIEBwYXJhbSB0cmFuc2Zvcm1UeXBlXG4gKiBAcmV0dXJucyB7e3NjYWxlRmFjdG9yOiAqLCB3aWR0aDogKiwgaGVpZ2h0OiAqfX1cbiAqL1xuZnVuY3Rpb24gZ2V0U2FmZVRyYW5zZm9ybURhdGEoc1dpZHRoLCBzSGVpZ2h0LCBkV2lkdGgsIGRIZWlnaHQsIHRyYW5zZm9ybVR5cGUpIHtcbiAgICBsZXQgc2NhbGVGYWN0b3I7XG4gICAgLy8gZGVmYXVsdHMgZm9yIEZJTEwgdHJhbnNmb3JtIHR5cGVcbiAgICBsZXQgd2lkdGggPSBkV2lkdGg7XG4gICAgbGV0IGhlaWdodCA9IGRIZWlnaHQ7XG4gICAgLy8gY2FsY3VsYXRlIHNhZmUgaW1hZ2UgdHJhbnNmb3JtZWQgYXJlYVxuICAgIHNjYWxlRmFjdG9yID0gZ2V0U2NhbGVGYWN0b3Ioc1dpZHRoLCBzSGVpZ2h0LCBkV2lkdGgsIGRIZWlnaHQsIHRyYW5zZm9ybVR5cGUpO1xuICAgIGlmICh0cmFuc2Zvcm1UeXBlID09PSB0cmFuc2Zvcm1UeXBlcy5GSVQpIHtcbiAgICAgICAgd2lkdGggPSBzV2lkdGggKiBzY2FsZUZhY3RvcjtcbiAgICAgICAgaGVpZ2h0ID0gc0hlaWdodCAqIHNjYWxlRmFjdG9yO1xuICAgIH1cbiAgICAvLyBhZGp1c3QgdGFyZ2V0IHdpZHRoICYgaGVpZ2h0ICYgc2NhbGVGYWN0b3JcbiAgICBpZiAod2lkdGggJiYgaGVpZ2h0ICYmIHdpZHRoICogaGVpZ2h0ID4gU0FGRV9UUkFOU0ZPUk1FRF9BUkVBKSB7XG4gICAgICAgIGNvbnN0IGRpbWVuc2lvblNjYWxlRmFjdG9yID0gTWF0aC5zcXJ0KFNBRkVfVFJBTlNGT1JNRURfQVJFQSAvICh3aWR0aCAqIGhlaWdodCkpO1xuICAgICAgICB3aWR0aCAqPSBkaW1lbnNpb25TY2FsZUZhY3RvcjtcbiAgICAgICAgaGVpZ2h0ICo9IGRpbWVuc2lvblNjYWxlRmFjdG9yO1xuICAgICAgICAvLyBnZXQgdGhlIG5ldyBzY2FsZSBmYWN0b3JcbiAgICAgICAgc2NhbGVGYWN0b3IgPSBnZXRTY2FsZUZhY3RvcihzV2lkdGgsIHNIZWlnaHQsIHdpZHRoLCBoZWlnaHQsIHRyYW5zZm9ybVR5cGUpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBzY2FsZUZhY3RvcixcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodCxcbiAgICB9O1xufVxuLyoqXG4gKiByZXR1cm5zIHRoZSBkZXN0aW5hdGlvbiByZWN0YW5nbGVcbiAqIEBwYXJhbSB7bnVtYmVyfSAgICAgICAgICAgICAgICAgIHNXaWR0aFxuICogQHBhcmFtIHtudW1iZXJ9ICAgICAgICAgICAgICAgICAgc0hlaWdodFxuICogQHBhcmFtIHtUcmFuc2Zvcm1UeXBlfSAgICAgICAgICAgdHJhbnNmb3JtVHlwZVxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybVRhcmdldH0gICAgdGFyZ2V0XG4gKiBAcGFyYW0ge251bWJlcn0gICAgICAgICAgICAgICAgICBkcHIgLSBkZXZpY2UgcGl4ZWwgcmF0aW9cbiAqIEBwYXJhbSB7VXBzY2FsZU1ldGhvZH0gICAgICAgICAgIHVwc2NhbGVNZXRob2RcbiAqXG4gKiBAcmV0dXJucyB7SW1hZ2VUcmFuc2Zvcm1EYXRhICYge3Vwc2NhbGVNZXRob2RWYWx1ZTogbnVtYmVyfX1cbiAqL1xuZnVuY3Rpb24gZ2V0VHJhbnNmb3JtRGF0YShzV2lkdGgsIHNIZWlnaHQsIHRyYW5zZm9ybVR5cGUsIHRhcmdldCwgZHByLCB1cHNjYWxlTWV0aG9kKSB7XG4gICAgLy8gdXNlIHRhcmdldCBkaW1lbnNpb24gaXMgc3JjIG5vdCBwcm92aWRlZFxuICAgIHNXaWR0aCA9IHNXaWR0aCB8fCB0YXJnZXQud2lkdGg7XG4gICAgc0hlaWdodCA9IHNIZWlnaHQgfHwgdGFyZ2V0LmhlaWdodDtcbiAgICAvLyBhZGp1c3QgaW1hZ2UgdHJhbnNmb3JtIHZhbHVlcyBjb25zaWRlcmluZyBzZXJ2ZXIgc2lkZSB0cmFuc2Zvcm0gbGltaXRhdGlvbnMgYW5kIHBlcmZvcm1hbmNlXG4gICAgY29uc3QgeyBzY2FsZUZhY3Rvciwgd2lkdGgsIGhlaWdodCB9ID0gZ2V0U2FmZVRyYW5zZm9ybURhdGEoc1dpZHRoLCBzSGVpZ2h0LCB0YXJnZXQud2lkdGggKiBkcHIsIHRhcmdldC5oZWlnaHQgKiBkcHIsIHRyYW5zZm9ybVR5cGUpO1xuICAgIC8vIGFkanVzdCBpbWFnZSB0cmFuc2Zvcm0gdmFsdWVzIHRvIG9wdGltaXppbmcgdXBzYWNsZSBxdWFsaXR5IGFuZCBwYXlsb2FkXG4gICAgcmV0dXJuIGdldE9wdGltaXplZFRyYW5zZm9ybURhdGEoc1dpZHRoLCBzSGVpZ2h0LCB3aWR0aCwgaGVpZ2h0LCB1cHNjYWxlTWV0aG9kLCBzY2FsZUZhY3RvciwgdHJhbnNmb3JtVHlwZSk7XG59XG4vKipcbiAqIGNvbnZlcnRzIDkgZ3JpZCBhbGlnbm1lbnQgdG8gRm9jYWwgcG9pbnQgcG9zaXRpb25cbiAqIEBwYXJhbSB7c3RyaW5nfSAgW2FsaWdubWVudF1cbiAqXG4gKiBAcmV0dXJucyB7eDpudW1iZXIseTpudW1iZXJ9XG4gKi9cbmZ1bmN0aW9uIGdldEZvY2FsUG9pbnRGcm9tOUdyaWRBbGlnbm1lbnQoYWxpZ25tZW50ID0gYWxpZ25UeXBlcy5DRU5URVIpIHtcbiAgICByZXR1cm4gQUxJR05fVFlQRV9UT19GT0NBTF9QT0lOVFthbGlnbm1lbnRdO1xufVxuLyoqXG4gKiByZXR1cm5zIG92ZXJsYXBwaW5nIHJlY3RhbmdsZSB3aGVyZSBzUmVjdFxuICogaWQgYWxpZ25lZCAoYWNjb3JkaW5nIHRvIGFsaWdubWVudCkgd2l0aGluIGRSZWN0XG4gKiBAcGFyYW0ge3sgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfX0gc1JlY3QgcmVjdCAxXG4gKiBAcGFyYW0ge3sgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIgfX0gZFJlY3QgcmVjdCAyXG4gKiBAcGFyYW0ge3t4OiBudW1iZXIsIHk6IG51bWJlcn18dW5kZWZpbmVkfSAgc0ZQICAgc291cmNlIGltYWdlIGZvY2FsIHBvaW50XG4gKiBAcGFyYW0ge3N0cmluZ30gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50XG4gKlxuICogQHJldHVybnMge3t4OiBudW1iZXIsIHk6IG51bWJlciwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXJ9fVxuICovXG5mdW5jdGlvbiBnZXRBbGlnbmVkUmVjdChzUmVjdCwgZFJlY3QsIHNGUCwgYWxpZ25tZW50KSB7XG4gICAgY29uc3QgZnAgPSBnZXRGb2NhbFBvaW50KHNGUCkgfHxcbiAgICAgICAgZ2V0Rm9jYWxQb2ludEZyb205R3JpZEFsaWdubWVudChhbGlnbm1lbnQpO1xuICAgIGNvbnN0IHggPSBNYXRoLm1heCgwLCBNYXRoLm1pbihzUmVjdC53aWR0aCAtIGRSZWN0LndpZHRoLCBmcC54ICogc1JlY3Qud2lkdGggLSBkUmVjdC53aWR0aCAvIDIpKTtcbiAgICBjb25zdCB5ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oc1JlY3QuaGVpZ2h0IC0gZFJlY3QuaGVpZ2h0LCBmcC55ICogc1JlY3QuaGVpZ2h0IC0gZFJlY3QuaGVpZ2h0IC8gMikpO1xuICAgIC8vIHJlY3RcbiAgICByZXR1cm4ge1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICB3aWR0aDogTWF0aC5taW4oc1JlY3Qud2lkdGgsIGRSZWN0LndpZHRoKSxcbiAgICAgICAgaGVpZ2h0OiBNYXRoLm1pbihzUmVjdC5oZWlnaHQsIGRSZWN0LmhlaWdodCksXG4gICAgfTtcbn1cbi8qKlxuICogcmV0dXJucyBvdmVybGFwcGluZyByZWN0YW5nbGUgYmV0d2VlbiBzUmVjdCBhbmQgZFJlY3RcbiAqIEBwYXJhbSB7b2JqZWN0fSAgICAgIHNSZWN0ICAgICAgICAgcmVjdCAxXG4gKiBAcGFyYW0ge29iamVjdH0gICAgICBkUmVjdCAgICAgICAgIHJlY3QgMlxuICpcbiAqIEByZXR1cm5zIHt7eDpudW1iZXIseTpudW1iZXIsd2lkdGg6bnVtYmVyLCBoZWlnaHQ6bnVtYmVyfSB8fCBudWxsfVxuICovXG5mdW5jdGlvbiBnZXRPdmVybGFwcGluZ1JlY3Qoc1JlY3QsIGRSZWN0KSB7XG4gICAgY29uc3Qgd2lkdGggPSBNYXRoLm1heCgwLCBNYXRoLm1pbihzUmVjdC53aWR0aCwgZFJlY3QueCArIGRSZWN0LndpZHRoKSAtIE1hdGgubWF4KDAsIGRSZWN0LngpKTtcbiAgICBjb25zdCBoZWlnaHQgPSBNYXRoLm1heCgwLCBNYXRoLm1pbihzUmVjdC5oZWlnaHQsIGRSZWN0LnkgKyBkUmVjdC5oZWlnaHQpIC0gTWF0aC5tYXgoMCwgZFJlY3QueSkpO1xuICAgIGNvbnN0IGlzVmFsaWRSZWN0ID0gd2lkdGggJiYgaGVpZ2h0ICYmIChzUmVjdC53aWR0aCAhPT0gd2lkdGggfHwgc1JlY3QuaGVpZ2h0ICE9PSBoZWlnaHQpO1xuICAgIC8vIHJldHVybiBvdmVybGFwcGluZyBzUmVjdC9kUmVjdCByZWN0YW5nbGUoeCwgeSwgd2lkdGgsIGhlaWdodClcbiAgICByZXR1cm4gaXNWYWxpZFJlY3RcbiAgICAgICAgPyB7XG4gICAgICAgICAgICB4OiBNYXRoLm1heCgwLCBkUmVjdC54KSxcbiAgICAgICAgICAgIHk6IE1hdGgubWF4KDAsIGRSZWN0LnkpLFxuICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgIH1cbiAgICAgICAgOiBudWxsO1xufVxuLyoqXG4gKiByZXR1cm5zIHBpeGVsIGFzcGVjdCByYXRpbyB2YWx1ZVxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybVRhcmdldH0gICAgdGFyZ2V0XG4gKlxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZnVuY3Rpb24gZ2V0RGV2aWNlUGl4ZWxSYXRpbyh0YXJnZXQpIHtcbiAgICByZXR1cm4gTWF0aC5taW4odGFyZ2V0LnBpeGVsQXNwZWN0UmF0aW8gfHwgMSwgTUFYX0RFVklDRV9QSVhFTF9SQVRJTyk7XG59XG4vKipcbiAqIHJldHVybnMgdGFyZ2V0IGFsaWdubWVudCB2YWx1ZVxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybVRhcmdldH0gICAgdGFyZ2V0XG4gKlxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZ2V0QWxpZ25tZW50KHRhcmdldCkge1xuICAgIHJldHVybiAoKHRhcmdldC5hbGlnbm1lbnQgJiYgYWxpZ25UeXBlc01hcFt0YXJnZXQuYWxpZ25tZW50XSkgfHxcbiAgICAgICAgYWxpZ25UeXBlc01hcFthbGlnblR5cGVzLkNFTlRFUl0pO1xufVxuLyoqXG4gKiByZXR1cm5zIHRoZSBmb2NhbCBwb2ludCB2YWx1ZSwgaWYgbm8gZm9jYWwgcG9pbnQgcGFzc2VkIHVzZSBhbGlnbm1lbnRcbiAqIEBwYXJhbSB7e3g6IG51bWJlciwgeTogbnVtYmVyfXx1bmRlZmluZWR9IGZvY2FsUG9pbnRcbiAqL1xuZnVuY3Rpb24gZ2V0Rm9jYWxQb2ludChmb2NhbFBvaW50KSB7XG4gICAgbGV0IGZwO1xuICAgIGlmIChmb2NhbFBvaW50ICYmXG4gICAgICAgIHR5cGVvZiBmb2NhbFBvaW50LnggPT09ICdudW1iZXInICYmXG4gICAgICAgICFpc05hTihmb2NhbFBvaW50LngpICYmXG4gICAgICAgIHR5cGVvZiBmb2NhbFBvaW50LnkgPT09ICdudW1iZXInICYmXG4gICAgICAgICFpc05hTihmb2NhbFBvaW50LnkpKSB7XG4gICAgICAgIGZwID0ge1xuICAgICAgICAgICAgeDogcm91bmRUb0ZpeGVkKE1hdGgubWF4KDAsIE1hdGgubWluKDEwMCwgZm9jYWxQb2ludC54KSkgLyAxMDAsIDIpLFxuICAgICAgICAgICAgeTogcm91bmRUb0ZpeGVkKE1hdGgubWF4KDAsIE1hdGgubWluKDEwMCwgZm9jYWxQb2ludC55KSkgLyAxMDAsIDIpLFxuICAgICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gZnA7XG59XG4vKipcbiAqIHJldHVybnMgcHJlZmVycmVkIGltYWdlIHF1YWxpdHkgdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSAgICBpbWFnZVdpZHRoXG4gKiBAcGFyYW0ge251bWJlcn0gICAgaW1hZ2VIZWlnaHRcbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5mdW5jdGlvbiBnZXRQcmVmZXJyZWRJbWFnZVF1YWxpdHkoaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpIHtcbiAgICByZXR1cm4gaW1hZ2VTY2FsZURlZmF1bHRzW2dldEltYWdlUXVhbGl0eUtleShpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCldXG4gICAgICAgIC5xdWFsaXR5O1xufVxuLyoqXG4gKiByZXR1cm5zIHRoZSBzY2FsZSBkZXNjcmlwdG9yIG9mIENMQVNTSUMgdXBzY2FsZSBtZXRob2RcbiAqIEBwYXJhbSBzV2lkdGhcbiAqIEBwYXJhbSBzSGVpZ2h0XG4gKiBAcmV0dXJucyB7e29wdGltaXplZFNjYWxlRmFjdG9yOiBudW1iZXIsIHVwc2NhbGVNZXRob2RWYWx1ZTogbnVtYmVyLCBmb3JjZVVTTTogYm9vbGVhbn19XG4gKi9cbmZ1bmN0aW9uIGdldENsYXNzaWNTY2FsZURhdGEoc1dpZHRoLCBzSGVpZ2h0KSB7XG4gICAgY29uc3QgaW1hZ2VLZXkgPSBnZXRJbWFnZVF1YWxpdHlLZXkoc1dpZHRoLCBzSGVpZ2h0KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBvcHRpbWl6ZWRTY2FsZUZhY3RvcjogaW1hZ2VTY2FsZURlZmF1bHRzW2ltYWdlS2V5XS5tYXhVcHNjYWxlLFxuICAgICAgICB1cHNjYWxlTWV0aG9kVmFsdWU6IHVwc2NhbGVNZXRob2RzVmFsdWVzLmNsYXNzaWMsXG4gICAgICAgIGZvcmNlVVNNOiBmYWxzZSxcbiAgICB9O1xufVxuLyoqXG4gKiByZXR1cm5zIHRoZSBzY2FsZSBkZXNjcmlwdG9yIG9mIEFVVE8gdXBzY2FsZSBtZXRob2RcbiAqIEBwYXJhbSBzV2lkdGhcbiAqIEBwYXJhbSBzSGVpZ2h0XG4gKiBAcmV0dXJucyB7e29wdGltaXplZFNjYWxlRmFjdG9yOiBudW1iZXIsIHVwc2NhbGVNZXRob2RWYWx1ZTogbnVtYmVyLCBmb3JjZVVTTTogYm9vbGVhbn19XG4gKi9cbmZ1bmN0aW9uIGdldEF1dG9TY2FsZURhdGEoc1dpZHRoLCBzSGVpZ2h0KSB7XG4gICAgY29uc3QgaW1hZ2VLZXkgPSBnZXRJbWFnZVF1YWxpdHlLZXkoc1dpZHRoLCBzSGVpZ2h0KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBvcHRpbWl6ZWRTY2FsZUZhY3RvcjogaW1hZ2VTY2FsZURlZmF1bHRzW2ltYWdlS2V5XS5tYXhVcHNjYWxlLFxuICAgICAgICB1cHNjYWxlTWV0aG9kVmFsdWU6IHVwc2NhbGVNZXRob2RzVmFsdWVzLmNsYXNzaWMsXG4gICAgICAgIGZvcmNlVVNNOiBmYWxzZSxcbiAgICB9O1xufVxuLyoqXG4gKiByZXR1cm5zIHRoZSBzY2FsZSBkZXNjcmlwdG9yIG9mIFNVUEVSIHVwc2NhbGUgbWV0aG9kXG4gKiBAcGFyYW0gc2NhbGVGYWN0b3JcbiAqIEByZXR1cm5zIHt7b3B0aW1pemVkU2NhbGVGYWN0b3I6IG51bWJlciwgdXBzY2FsZU1ldGhvZFZhbHVlOiBudW1iZXIsIGZvcmNlVVNNOiBib29sZWFufX1cbiAqL1xuZnVuY3Rpb24gZ2V0U3VwZXJTY2FsZURhdGEoc2NhbGVGYWN0b3IpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBvcHRpbWl6ZWRTY2FsZUZhY3RvcjogbGFzdChTVVBFUl9VUFNDQUxFX01PREVMUyksXG4gICAgICAgIHVwc2NhbGVNZXRob2RWYWx1ZTogdXBzY2FsZU1ldGhvZHNWYWx1ZXMuc3VwZXIsXG4gICAgICAgIGZvcmNlVVNNOiAhKFNVUEVSX1VQU0NBTEVfTU9ERUxTLmluY2x1ZGVzKHNjYWxlRmFjdG9yKSB8fFxuICAgICAgICAgICAgc2NhbGVGYWN0b3IgPiBsYXN0KFNVUEVSX1VQU0NBTEVfTU9ERUxTKSksXG4gICAgfTtcbn1cbi8qKlxuICogcmV0dXJucyB1cHNjYWxlIGRlc2NyaXB0b3Igb2JqZWN0XG4gKiBAcGFyYW0ge251bWJlcn0gICAgc1dpZHRoXG4gKiBAcGFyYW0ge251bWJlcn0gICAgc0hlaWdodFxuICogQHBhcmFtIHtzdHJpbmd9ICAgIHVwc2NhbGVNZXRob2RcbiAqIEBwYXJhbSB7bnVtYmVyfSAgICBzY2FsZUZhY3RvclxuICpcbiAqIEByZXR1cm5zICB7e21heFNjYWxlOiBudW1iZXIsIHVwc2NhbGVNZXRob2RWYWx1ZTogbnVtYmVyLCBmb3JjZVVTTTogYm9vbGVhbn19XG4gKi9cbmZ1bmN0aW9uIGdldE9wdGltaXplZFNjYWxlRGF0YShzV2lkdGgsIHNIZWlnaHQsIHNjYWxlRmFjdG9yLCB1cHNjYWxlTWV0aG9kKSB7XG4gICAgaWYgKHVwc2NhbGVNZXRob2QgPT09ICdhdXRvJykge1xuICAgICAgICByZXR1cm4gZ2V0QXV0b1NjYWxlRGF0YShzV2lkdGgsIHNIZWlnaHQpO1xuICAgIH1cbiAgICBlbHNlIGlmICh1cHNjYWxlTWV0aG9kID09PSAnc3VwZXInKSB7XG4gICAgICAgIHJldHVybiBnZXRTdXBlclNjYWxlRGF0YShzY2FsZUZhY3Rvcik7XG4gICAgfVxuICAgIC8vIGFzc3VtaW5nICdjbGFzc2ljJyBtZXRob2RcbiAgICByZXR1cm4gZ2V0Q2xhc3NpY1NjYWxlRGF0YShzV2lkdGgsIHNIZWlnaHQpO1xufVxuLyoqXG4gKiByZXR1cm5zIG9wdGltaXplZCB1cHNjYWxlIGRhdGEsIGNvbnNpZGVyaW5nIHJlcXVlc3RlZCB1cHNjYWxlIG1ldGhvZCAsIG9wdGltaXplIHVwc2NhbGUgZm9yIGJlc3QgcXVhbGl0eSBhbmQgYmFuZHdpZHRoXG4gKiBAcGFyYW0ge251bWJlcn0gICAgc1dpZHRoXG4gKiBAcGFyYW0ge251bWJlcn0gICAgc0hlaWdodFxuICogQHBhcmFtIHtudW1iZXJ9ICAgIHRXaWR0aFxuICogQHBhcmFtIHtudW1iZXJ9ICAgIHRIZWlnaHRcbiAqIEBwYXJhbSB7VXBzY2FsZU1ldGhvZH0gICAgdXBzY2FsZU1ldGhvZFxuICogQHBhcmFtIHtudW1iZXJ9ICAgIHNjYWxlRmFjdG9yXG4gKiBAcGFyYW0ge1RyYW5zZm9ybVR5cGV9ICAgIHRyYW5zZm9ybVR5cGVcbiAqXG4gKiBAcmV0dXJucyAge0ltYWdlVHJhbnNmb3JtRGF0YX1cbiAqL1xuZnVuY3Rpb24gZ2V0T3B0aW1pemVkVHJhbnNmb3JtRGF0YShzV2lkdGgsIHNIZWlnaHQsIHRXaWR0aCwgdEhlaWdodCwgdXBzY2FsZU1ldGhvZCwgc2NhbGVGYWN0b3IsIHRyYW5zZm9ybVR5cGUpIHtcbiAgICBjb25zdCB7IG9wdGltaXplZFNjYWxlRmFjdG9yLCB1cHNjYWxlTWV0aG9kVmFsdWUsIGZvcmNlVVNNIH0gPSBnZXRPcHRpbWl6ZWRTY2FsZURhdGEoc1dpZHRoLCBzSGVpZ2h0LCBzY2FsZUZhY3RvciwgdXBzY2FsZU1ldGhvZCk7XG4gICAgbGV0IHdpZHRoID0gdFdpZHRoO1xuICAgIGxldCBoZWlnaHQgPSB0SGVpZ2h0O1xuICAgIGlmIChzY2FsZUZhY3RvciA8PSBvcHRpbWl6ZWRTY2FsZUZhY3Rvcikge1xuICAgICAgICAvLyB0YXJnZXQgdXBzY2FsZSB3aXRoaW4gbGltaXRzIG9yIGRvd25zY2FsZVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgIHVwc2NhbGVNZXRob2RWYWx1ZSxcbiAgICAgICAgICAgIGZvcmNlVVNNLFxuICAgICAgICAgICAgY3NzVXBzY2FsZU5lZWRlZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8vIGxpbWl0ZWQgdXBzY2FsZVxuICAgIHN3aXRjaCAodHJhbnNmb3JtVHlwZSkge1xuICAgICAgICBjYXNlIHRyYW5zZm9ybVR5cGVzLkZJTEw6XG4gICAgICAgICAgICB3aWR0aCA9IHRXaWR0aCAqIChvcHRpbWl6ZWRTY2FsZUZhY3RvciAvIHNjYWxlRmFjdG9yKTtcbiAgICAgICAgICAgIGhlaWdodCA9IHRIZWlnaHQgKiAob3B0aW1pemVkU2NhbGVGYWN0b3IgLyBzY2FsZUZhY3Rvcik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSB0cmFuc2Zvcm1UeXBlcy5GSVQ6XG4gICAgICAgICAgICB3aWR0aCA9IHNXaWR0aCAqIG9wdGltaXplZFNjYWxlRmFjdG9yO1xuICAgICAgICAgICAgaGVpZ2h0ID0gc0hlaWdodCAqIG9wdGltaXplZFNjYWxlRmFjdG9yO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgLy8gYWRqdXN0IHRyYW5zZm9ybSB2YWx1ZXNcbiAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICBzY2FsZUZhY3Rvcjogb3B0aW1pemVkU2NhbGVGYWN0b3IsXG4gICAgICAgIHVwc2NhbGVNZXRob2RWYWx1ZSxcbiAgICAgICAgZm9yY2VVU00sXG4gICAgICAgIGNzc1Vwc2NhbGVOZWVkZWQ6IHRydWUsXG4gICAgfTtcbn1cbi8qKlxuICogcmV0dXJucyBpbWFnZSBxdWFsaXR5IGtleVxuICogQHBhcmFtIHtudW1iZXJ9ICAgIGltYWdlV2lkdGhcbiAqIEBwYXJhbSB7bnVtYmVyfSAgICBpbWFnZUhlaWdodFxuICpcbiAqIEByZXR1cm5zIHtJbWFnZVF1YWxpdHl9XG4gKi9cbmZ1bmN0aW9uIGdldEltYWdlUXVhbGl0eUtleShpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCkge1xuICAgIGNvbnN0IHNpemUgPSBpbWFnZVdpZHRoICogaW1hZ2VIZWlnaHQ7XG4gICAgaWYgKHNpemUgPiBpbWFnZVNjYWxlRGVmYXVsdHNbaW1hZ2VRdWFsaXR5LkhJR0hdLnNpemUpIHtcbiAgICAgICAgcmV0dXJuIGltYWdlUXVhbGl0eS5ISUdIO1xuICAgIH1cbiAgICBlbHNlIGlmIChzaXplID4gaW1hZ2VTY2FsZURlZmF1bHRzW2ltYWdlUXVhbGl0eS5NRURJVU1dLnNpemUpIHtcbiAgICAgICAgcmV0dXJuIGltYWdlUXVhbGl0eS5NRURJVU07XG4gICAgfVxuICAgIGVsc2UgaWYgKHNpemUgPiBpbWFnZVNjYWxlRGVmYXVsdHNbaW1hZ2VRdWFsaXR5LkxPV10uc2l6ZSkge1xuICAgICAgICByZXR1cm4gaW1hZ2VRdWFsaXR5LkxPVztcbiAgICB9XG4gICAgcmV0dXJuIGltYWdlUXVhbGl0eS5USU5ZO1xufVxuLyoqXG4gKiByZXR1cm4gdGhlIGFjdHVhbCByb3VuZGVkIGRpbWVuc2lvbiBvZiBhIHNjYWxlZCByZWN0YW5nbGVcbiAqIEBwYXJhbSBzV2lkdGhcbiAqIEBwYXJhbSBzSGVpZ2h0XG4gKiBAcGFyYW0gdFdpZHRoXG4gKiBAcGFyYW0gdEhlaWdodFxuICogQHBhcmFtIHRyYW5zZm9ybVR5cGVcbiAqIEByZXR1cm5zIHt7d2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXJ9fVxuICovXG5mdW5jdGlvbiBnZXREaW1lbnNpb24oc1dpZHRoLCBzSGVpZ2h0LCB0V2lkdGgsIHRIZWlnaHQsIHRyYW5zZm9ybVR5cGUpIHtcbiAgICBjb25zdCBzY2FsZUZhY3RvciA9IGdldFNjYWxlRmFjdG9yKHNXaWR0aCwgc0hlaWdodCwgdFdpZHRoLCB0SGVpZ2h0LCB0cmFuc2Zvcm1UeXBlKTtcbiAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aDogTWF0aC5yb3VuZChzV2lkdGggKiBzY2FsZUZhY3RvciksXG4gICAgICAgIGhlaWdodDogTWF0aC5yb3VuZChzSGVpZ2h0ICogc2NhbGVGYWN0b3IpLFxuICAgIH07XG59XG4vKipcbiAqIHJvdW5kcyBudW1iZXIgbiBkaWdpdCBwcmVjaXNpb24gYW5kIGNvbnZlcnRzIHRvIHN0cmluZ1xuICogQHBhcmFtIHtudW1iZXJ9ICAgICAgdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSAgICAgIHByZWNpc2lvblxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIHJvdW5kVG9GaXhlZCh2YWx1ZSwgcHJlY2lzaW9uKSB7XG4gICAgY29uc3QgdHJ1bmNhdGVQcmVjaXNpb24gPSBNYXRoLnBvdygxMCwgcHJlY2lzaW9uIHx8IDApO1xuICAgIHJldHVybiAoKHZhbHVlICogdHJ1bmNhdGVQcmVjaXNpb24pIC8gdHJ1bmNhdGVQcmVjaXNpb24pLnRvRml4ZWQocHJlY2lzaW9uKTtcbn1cbi8qKlxuICogZ2V0IG5vcm1hbGl6ZSBzY2FsZSBtZXRob2RcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1PcHRpb25zfSBbb3B0aW9uc11cbiAqIEByZXR1cm5zIHtVcHNjYWxlTWV0aG9kfVxuICovXG5mdW5jdGlvbiBnZXRVcHNjYWxlU3RyaW5nKG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMgfHwgIW9wdGlvbnMudXBzY2FsZU1ldGhvZCkge1xuICAgICAgICByZXR1cm4gdXBzY2FsZU1ldGhvZHMuQVVUTztcbiAgICB9XG4gICAgcmV0dXJuICh1cHNjYWxlTWV0aG9kc1tvcHRpb25zLnVwc2NhbGVNZXRob2QudG9VcHBlckNhc2UoKV0gfHwgdXBzY2FsZU1ldGhvZHMuQVVUTyk7XG59XG5mdW5jdGlvbiBpbWFnZUlzQW5pbWF0ZWQodXJpLCBoYXNBbmltYXRpb24pIHtcbiAgICBjb25zdCBpc0F2aWZXZWJwRm9ybWF0ID0gaXNXRUJQKHVyaSkgfHwgaXNBVklGKHVyaSk7XG4gICAgcmV0dXJuIChnZXRGaWxlRXh0ZW5zaW9uKHVyaSkgPT09IGZpbGVUeXBlLkdJRiB8fCAoaXNBdmlmV2VicEZvcm1hdCAmJiBoYXNBbmltYXRpb24pKTtcbn1cbmV4cG9ydCB7IGdldEFsaWduZWRSZWN0LCBnZXRBbGlnbm1lbnQsIGdldERldmljZVBpeGVsUmF0aW8sIGdldERpbWVuc2lvbiwgZ2V0RmlsZUV4dGVuc2lvbiwgZ2V0RmlsZU5hbWUsIGdldEZpbGVUeXBlLCBnZXRGb2NhbFBvaW50LCBnZXRPdmVybGFwcGluZ1JlY3QsIGdldFByZWZlcnJlZEltYWdlUXVhbGl0eSwgZ2V0U2NhbGVGYWN0b3IsIGdldFRyYW5zZm9ybURhdGEsIGdldFVwc2NhbGVTdHJpbmcsIGltYWdlSXNBbmltYXRlZCwgaXNFeHRlcm5hbFVybCwgaXNJbWFnZVRyYW5zZm9ybUFwcGxpY2FibGUsIGlzSW1hZ2VUeXBlU3VwcG9ydGVkLCBpc1NFT0JvdCwgaXNWYWxpZFJlcXVlc3QsIGlzUE5HLCBpc1dFQlAsIGlzR0lGLCBpc0FWSUYsIHJvdW5kVG9GaXhlZCwgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWltYWdlU2VydmljZVV0aWxzLmpzLm1hcCIsImNvbnN0IGdsb2JhbEZlYXR1cmVzU3VwcG9ydE9iaiA9IHtcbiAgICAvKipcbiAgICAgKiBAdHlwZSB7b2JqZWN0PGJvb2xlYW4+fVxuICAgICAqL1xuICAgIGlzTW9iaWxlOiBmYWxzZSxcbn07XG5jb25zdCBnZXRGZWF0dXJlID0gZnVuY3Rpb24gKGZlYXR1cmUpIHtcbiAgICByZXR1cm4gZ2xvYmFsRmVhdHVyZXNTdXBwb3J0T2JqW2ZlYXR1cmVdO1xufTtcbmNvbnN0IHNldEZlYXR1cmUgPSBmdW5jdGlvbiAoZmVhdHVyZSwgdmFsdWUpIHtcbiAgICBnbG9iYWxGZWF0dXJlc1N1cHBvcnRPYmpbZmVhdHVyZV0gPSB2YWx1ZTtcbn07XG5leHBvcnQgeyBnZXRGZWF0dXJlLCBzZXRGZWF0dXJlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZVNlcnZpY2VGZWF0dXJlU3VwcG9ydE9iamVjdC5qcy5tYXAiLCJpbXBvcnQgeyBzZXRGZWF0dXJlIH0gZnJvbSAnLi9pbWFnZVNlcnZpY2VGZWF0dXJlU3VwcG9ydE9iamVjdCc7XG4vKipcbiAqIFBvcHVsYXRlIHRoZSBnbG9iYWwgZmVhdHVyZSBzdXBwb3J0IG9iamVjdCB3aXRoIGJyb3dzZXIgc3BlY2lmaWMgdmFsdWVzXG4gKi9cbmZ1bmN0aW9uIHBvcHVsYXRlR2xvYmFsRmVhdHVyZVN1cHBvcnQoKSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbnN0IGlzU21hbGxTY3JlZW4gPSB3aW5kb3cubWF0Y2hNZWRpYSAmJiB3aW5kb3cubWF0Y2hNZWRpYSgnKG1heC13aWR0aDogNzY3cHgpJykubWF0Y2hlcztcbiAgICAgICAgY29uc3QgaXNNb2JpbGVBZ2VudCA9IC9BbmRyb2lkfHdlYk9TfGlQaG9uZXxpUGFkfGlQb2R8QmxhY2tCZXJyeXxJRU1vYmlsZXxPcGVyYSBNaW5pL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcbiAgICAgICAgLy8gc2V0IGlzIG1vYmlsZVxuICAgICAgICBzZXRGZWF0dXJlKCdpc01vYmlsZScsIGlzU21hbGxTY3JlZW4gJiYgaXNNb2JpbGVBZ2VudCk7XG4gICAgfVxufVxuZXhwb3J0IHsgcG9wdWxhdGVHbG9iYWxGZWF0dXJlU3VwcG9ydCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cG9wdWxhdGVGZWF0dXJlU3VwcG9ydC5qcy5tYXAiLCJpbXBvcnQgeyBhbGlnblR5cGVzLCBmaXR0aW5nVHlwZXMgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2ltYWdlU2VydmljZUNvbnN0YW50cyc7XG4vKipcbiAqIHJldHVybnMgQkcgdGFnIENTUyBkYXRhXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtT2JqZWN0fSAgICB0cmFuc2Zvcm1zT2JqICAgIHRyYW5zZm9ybSBwYXJ0cyBvYmplY3RcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1UYXJnZXR9ICAgIHRhcmdldFxuICpcbiAqIEByZXR1cm5zIHtCYWNrZ3JvdW5kSW1hZ2VBdHRyaWJ1dGVzfVxuICovXG5mdW5jdGlvbiBnZXRDU1ModHJhbnNmb3Jtc09iaiwgdGFyZ2V0KSB7XG4gICAgY29uc3QgYXR0cmlidXRlcyA9IHtcbiAgICAgICAgY3NzOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IHt9LFxuICAgICAgICB9LFxuICAgIH07XG4gICAgY29uc3QgeyBjc3MgfSA9IGF0dHJpYnV0ZXM7XG4gICAgY29uc3QgeyBmaXR0aW5nVHlwZSB9ID0gdHJhbnNmb3Jtc09iajtcbiAgICAvLyBzZXQgZml0dGluZ1xuICAgIHN3aXRjaCAoZml0dGluZ1R5cGUpIHtcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuT1JJR0lOQUxfU0laRTpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX09SSUdJTkFMX1NJWkU6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9TVFJJUF9PUklHSU5BTF9TSVpFOlxuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kU2l6ZSA9ICdhdXRvJztcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFJlcGVhdCA9ICduby1yZXBlYXQnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLlNDQUxFX1RPX0ZJVDpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX1NUUklQX1NDQUxFX1RPX0ZJVDpcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFNpemUgPSAnY29udGFpbic7XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRSZXBlYXQgPSAnbm8tcmVwZWF0JztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5TVFJFVENIOlxuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kU2l6ZSA9ICcxMDAlIDEwMCUnO1xuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kUmVwZWF0ID0gJ25vLXJlcGVhdCc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuU0NBTEVfVE9fRklMTDpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX1NUUklQX1NDQUxFX1RPX0ZJTEw6XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRTaXplID0gJ2NvdmVyJztcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFJlcGVhdCA9ICduby1yZXBlYXQnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLlRJTEVfSE9SSVpPTlRBTDpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX1NUUklQX1RJTEVfSE9SSVpPTlRBTDpcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFNpemUgPSAnYXV0byc7XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRSZXBlYXQgPSAncmVwZWF0LXgnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLlRJTEVfVkVSVElDQUw6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9TVFJJUF9USUxFX1ZFUlRJQ0FMOlxuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kU2l6ZSA9ICdhdXRvJztcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFJlcGVhdCA9ICdyZXBlYXQteSc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuVElMRTpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX1NUUklQX1RJTEU6XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRTaXplID0gJ2F1dG8nO1xuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kUmVwZWF0ID0gJ3JlcGVhdCc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX1NUUklQX0ZJVF9BTkRfVElMRTpcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFNpemUgPSAnY29udGFpbic7XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRSZXBlYXQgPSAncmVwZWF0JztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5GSVRfQU5EX1RJTEU6XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRTaXplID0gJ2F1dG8nO1xuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kUmVwZWF0ID0gJ3JlcGVhdCc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgLy8gTGVnYWN5IG9sZCBlZGl0b3IgYmcgdHlwZXMuXG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9CR19GSVRfQU5EX1RJTEU6XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRTaXplID0gJ2F1dG8nO1xuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kUmVwZWF0ID0gJ3JlcGVhdCc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX0JHX0ZJVF9BTkRfVElMRV9IT1JJWk9OVEFMOlxuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kU2l6ZSA9ICdhdXRvJztcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFJlcGVhdCA9ICdyZXBlYXQteCc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX0JHX0ZJVF9BTkRfVElMRV9WRVJUSUNBTDpcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFNpemUgPSAnYXV0byc7XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRSZXBlYXQgPSAncmVwZWF0LXknO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9CR19OT1JNQUw6XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRTaXplID0gJ2F1dG8nO1xuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kUmVwZWF0ID0gJ25vLXJlcGVhdCc7XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgLy8gc2V0IGFsaWdubWVudFxuICAgIHN3aXRjaCAodGFyZ2V0LmFsaWdubWVudCkge1xuICAgICAgICBjYXNlIGFsaWduVHlwZXMuQ0VOVEVSOlxuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kUG9zaXRpb24gPSAnY2VudGVyIGNlbnRlcic7IC8vIDUwJSA1MCVcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGFsaWduVHlwZXMuTEVGVDpcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFBvc2l0aW9uID0gJ2xlZnQgY2VudGVyJzsgLy8gMCUgNTAlXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBhbGlnblR5cGVzLlJJR0hUOlxuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kUG9zaXRpb24gPSAncmlnaHQgY2VudGVyJzsgLy8gMTAwJSA1MCVcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGFsaWduVHlwZXMuVE9QOlxuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kUG9zaXRpb24gPSAnY2VudGVyIHRvcCc7IC8vIDUwJSAwJVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgYWxpZ25UeXBlcy5CT1RUT006XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRQb3NpdGlvbiA9ICdjZW50ZXIgYm90dG9tJzsgLy8gNTAlIDEwMCVcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGFsaWduVHlwZXMuVE9QX1JJR0hUOlxuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kUG9zaXRpb24gPSAncmlnaHQgdG9wJzsgLy8gMTAwJSAwJVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgYWxpZ25UeXBlcy5UT1BfTEVGVDpcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFBvc2l0aW9uID0gJ2xlZnQgdG9wJzsgLy8gMCUgMCVcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGFsaWduVHlwZXMuQk9UVE9NX1JJR0hUOlxuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kUG9zaXRpb24gPSAncmlnaHQgYm90dG9tJzsgLy8gMTAwJSAxMDAlXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBhbGlnblR5cGVzLkJPVFRPTV9MRUZUOlxuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kUG9zaXRpb24gPSAnbGVmdCBib3R0b20nOyAvLyAwJSAxMDAlXG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgLy8gcmV0dXJuIGJhY2tncm91bmQgQ1NTXG4gICAgcmV0dXJuIGF0dHJpYnV0ZXM7XG59XG5leHBvcnQgeyBnZXRDU1MgYXMgZ2V0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1iYWNrZ3JvdW5kQXR0cmlidXRlcy5qcy5tYXAiLCJpbXBvcnQgeyBhbGlnblR5cGVzLCBmaXR0aW5nVHlwZXMgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2ltYWdlU2VydmljZUNvbnN0YW50cyc7XG4vKipcbiAqIGFsaWduIHR5cGUgdG8gcG9zaXRpb25cbiAqIEBwYXJhbSB2ZXJ0aWNhbE1pZGRsZVxuICogQHBhcmFtIGhvcml6b250YWxNaWRkbGVcbiAqIEBwYXJhbSB0YXJnZXRcbiAqIEByZXR1cm5zIHt7fX1cbiAqL1xuZnVuY3Rpb24gYWxpZ25UeXBlVG9Qb3NpdGlvbih2ZXJ0aWNhbE1pZGRsZSwgaG9yaXpvbnRhbE1pZGRsZSwgdGFyZ2V0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgW2FsaWduVHlwZXMuVE9QX0xFRlRdOiB7IHRvcDogMCwgbGVmdDogMCB9LFxuICAgICAgICBbYWxpZ25UeXBlcy5UT1BfUklHSFRdOiB7IHRvcDogMCwgcmlnaHQ6IDAgfSxcbiAgICAgICAgW2FsaWduVHlwZXMuVE9QXTogeyB0b3A6IDAsIGxlZnQ6IGhvcml6b250YWxNaWRkbGUgfSxcbiAgICAgICAgW2FsaWduVHlwZXMuQk9UVE9NX0xFRlRdOiB7IGJvdHRvbTogMCwgbGVmdDogMCB9LFxuICAgICAgICBbYWxpZ25UeXBlcy5CT1RUT01fUklHSFRdOiB7IGJvdHRvbTogMCwgcmlnaHQ6IDAgfSxcbiAgICAgICAgW2FsaWduVHlwZXMuQk9UVE9NXTogeyBib3R0b206IDAsIGxlZnQ6IGhvcml6b250YWxNaWRkbGUgfSxcbiAgICAgICAgW2FsaWduVHlwZXMuUklHSFRdOiB7IHRvcDogdmVydGljYWxNaWRkbGUsIHJpZ2h0OiAwIH0sXG4gICAgICAgIFthbGlnblR5cGVzLkxFRlRdOiB7IHRvcDogdmVydGljYWxNaWRkbGUsIGxlZnQ6IDAgfSxcbiAgICAgICAgW2FsaWduVHlwZXMuQ0VOVEVSXToge1xuICAgICAgICAgICAgd2lkdGg6IHRhcmdldC53aWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogdGFyZ2V0LmhlaWdodCxcbiAgICAgICAgICAgIG9iamVjdEZpdDogJ25vbmUnLFxuICAgICAgICB9LFxuICAgIH07XG59XG5jb25zdCBhbGlnblR5cGVUb1Bvc2l0aW9uU3RyID0ge1xuICAgIFthbGlnblR5cGVzLkNFTlRFUl06ICdjZW50ZXInLFxuICAgIFthbGlnblR5cGVzLlRPUF06ICd0b3AnLFxuICAgIFthbGlnblR5cGVzLlRPUF9MRUZUXTogJ3RvcCBsZWZ0JyxcbiAgICBbYWxpZ25UeXBlcy5UT1BfUklHSFRdOiAndG9wIHJpZ2h0JyxcbiAgICBbYWxpZ25UeXBlcy5CT1RUT01dOiAnYm90dG9tJyxcbiAgICBbYWxpZ25UeXBlcy5CT1RUT01fTEVGVF06ICdib3R0b20gbGVmdCcsXG4gICAgW2FsaWduVHlwZXMuQk9UVE9NX1JJR0hUXTogJ2JvdHRvbSByaWdodCcsXG4gICAgW2FsaWduVHlwZXMuTEVGVF06ICdsZWZ0JyxcbiAgICBbYWxpZ25UeXBlcy5SSUdIVF06ICdyaWdodCcsXG59O1xuY29uc3QgYWxpZ21lbnREZWZhdWx0cyA9IHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB0b3A6ICdhdXRvJyxcbiAgICByaWdodDogJ2F1dG8nLFxuICAgIGJvdHRvbTogJ2F1dG8nLFxuICAgIGxlZnQ6ICdhdXRvJyxcbn07XG4vKipcbiAqIHJldHVybnMgaW1hZ2UgdGFnIENTUyBkYXRhXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtT2JqZWN0fSAgICB0cmFuc2Zvcm1zT2JqICAgIHRyYW5zZm9ybSBwYXJ0cyBvYmplY3RcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1UYXJnZXR9ICAgIHRhcmdldFxuICpcbiAqIEByZXR1cm5zIHtJbWFnZUF0dHJpYnV0ZXN9XG4gKi9cbmZ1bmN0aW9uIGdldENTUyh0cmFuc2Zvcm1zT2JqLCB0YXJnZXQpIHtcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0ge1xuICAgICAgICBjc3M6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjoge30sXG4gICAgICAgICAgICBpbWc6IHt9LFxuICAgICAgICB9LFxuICAgIH07XG4gICAgY29uc3QgeyBjc3MgfSA9IGF0dHJpYnV0ZXM7XG4gICAgY29uc3QgeyBmaXR0aW5nVHlwZSB9ID0gdHJhbnNmb3Jtc09iajtcbiAgICBjb25zdCBhbGlnblR5cGUgPSB0YXJnZXQuYWxpZ25tZW50O1xuICAgIGNzcy5jb250YWluZXIucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuICAgIHN3aXRjaCAoZml0dGluZ1R5cGUpIHtcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuT1JJR0lOQUxfU0laRTpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX09SSUdJTkFMX1NJWkU6XG4gICAgICAgICAgICBpZiAodHJhbnNmb3Jtc09iai5wYXJ0cyAmJiB0cmFuc2Zvcm1zT2JqLnBhcnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNzcy5pbWcud2lkdGggPSB0cmFuc2Zvcm1zT2JqLnBhcnRzWzBdLndpZHRoO1xuICAgICAgICAgICAgICAgIGNzcy5pbWcuaGVpZ2h0ID0gdHJhbnNmb3Jtc09iai5wYXJ0c1swXS5oZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjc3MuaW1nLndpZHRoID0gdHJhbnNmb3Jtc09iai5zcmMud2lkdGg7XG4gICAgICAgICAgICAgICAgY3NzLmltZy5oZWlnaHQgPSB0cmFuc2Zvcm1zT2JqLnNyYy5oZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuU0NBTEVfVE9fRklUOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfRklUX1dJRFRIOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfRklUX0hFSUdIVDpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX0ZVTEw6XG4gICAgICAgICAgICBjc3MuaW1nLndpZHRoID0gdGFyZ2V0LndpZHRoO1xuICAgICAgICAgICAgY3NzLmltZy5oZWlnaHQgPSB0YXJnZXQuaGVpZ2h0O1xuICAgICAgICAgICAgY3NzLmltZy5vYmplY3RGaXQgPSAnY29udGFpbic7XG4gICAgICAgICAgICBjc3MuaW1nLm9iamVjdFBvc2l0aW9uID1cbiAgICAgICAgICAgICAgICBhbGlnblR5cGVUb1Bvc2l0aW9uU3RyW2FsaWduVHlwZV0gfHwgJ3Vuc2V0JztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAvLyBCR19OT1JNQUwgaXMgYSBzaXRlYmFja2dyb3VuZCBsZWdhY3kgZm9yIG9yaWdpbmFsIHNpemUgZml0dGluZyB0eXBlLlxuICAgICAgICAvLyB0YXJnZXQgd2lkdGggYW5kIGhlaWdodCB3ZXJlIG1vZGlmaWVkIGluIHRyYW5zZm9ybS5qc1xuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfQkdfTk9STUFMOlxuICAgICAgICAgICAgY3NzLmltZy53aWR0aCA9ICcxMDAlJztcbiAgICAgICAgICAgIGNzcy5pbWcuaGVpZ2h0ID0gJzEwMCUnO1xuICAgICAgICAgICAgY3NzLmltZy5vYmplY3RGaXQgPSAnbm9uZSc7XG4gICAgICAgICAgICBjc3MuaW1nLm9iamVjdFBvc2l0aW9uID1cbiAgICAgICAgICAgICAgICBhbGlnblR5cGVUb1Bvc2l0aW9uU3RyW2FsaWduVHlwZV0gfHwgJ3Vuc2V0JztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5TVFJFVENIOlxuICAgICAgICAgICAgY3NzLmltZy53aWR0aCA9IHRhcmdldC53aWR0aDtcbiAgICAgICAgICAgIGNzcy5pbWcuaGVpZ2h0ID0gdGFyZ2V0LmhlaWdodDtcbiAgICAgICAgICAgIGNzcy5pbWcub2JqZWN0Rml0ID0gJ2ZpbGwnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLlNDQUxFX1RPX0ZJTEw6XG4gICAgICAgICAgICBjc3MuaW1nLndpZHRoID0gdGFyZ2V0LndpZHRoO1xuICAgICAgICAgICAgY3NzLmltZy5oZWlnaHQgPSB0YXJnZXQuaGVpZ2h0O1xuICAgICAgICAgICAgY3NzLmltZy5vYmplY3RGaXQgPSAnY292ZXInO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC8vIHNldCBhbGlnbm1lbnQgaW4gYSBwcml2YXRlIGNhc2Ugd2hlcmUgdGhlIGltYWdlIHNyYyBpcyBzbWFsbGVyIHRoYW4gdGhlIGltYWdlIGNvbnRhaW5lcixcbiAgICBpZiAodHlwZW9mIGNzcy5pbWcud2lkdGggPT09ICdudW1iZXInICYmXG4gICAgICAgIHR5cGVvZiBjc3MuaW1nLmhlaWdodCA9PT0gJ251bWJlcicgJiZcbiAgICAgICAgKGNzcy5pbWcud2lkdGggIT09IHRhcmdldC53aWR0aCB8fCBjc3MuaW1nLmhlaWdodCAhPT0gdGFyZ2V0LmhlaWdodCkpIHtcbiAgICAgICAgY29uc3QgdmVydGljYWxNaWRkbGUgPSBNYXRoLnJvdW5kKCh0YXJnZXQuaGVpZ2h0IC0gY3NzLmltZy5oZWlnaHQpIC8gMik7XG4gICAgICAgIGNvbnN0IGhvcml6b250YWxNaWRkbGUgPSBNYXRoLnJvdW5kKCh0YXJnZXQud2lkdGggLSBjc3MuaW1nLndpZHRoKSAvIDIpO1xuICAgICAgICBPYmplY3QuYXNzaWduKGNzcy5pbWcsIGFsaWdtZW50RGVmYXVsdHMsIGFsaWduVHlwZVRvUG9zaXRpb24odmVydGljYWxNaWRkbGUsIGhvcml6b250YWxNaWRkbGUsIHRhcmdldClbYWxpZ25UeXBlXSk7XG4gICAgfVxuICAgIHJldHVybiBhdHRyaWJ1dGVzO1xufVxuZXhwb3J0IHsgZ2V0Q1NTIGFzIGdldCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW1nQXR0cmlidXRlcy5qcy5tYXAiLCJpbXBvcnQgeyBmaXR0aW5nVHlwZXMsIGFsaWduVHlwZXMsIHRyYW5zZm9ybVR5cGVzLCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvaW1hZ2VTZXJ2aWNlQ29uc3RhbnRzJztcbmltcG9ydCB7IGdldERpbWVuc2lvbiwgaXNJbWFnZVRyYW5zZm9ybUFwcGxpY2FibGUsIH0gZnJvbSAnLi4vLi4vaGVscGVycy9pbWFnZVNlcnZpY2VVdGlscyc7XG4vKiBlc2xpbnQtZGlzYWJsZSBpbmRlbnQgKi9cbi8qKlxuICogZ2V0IENTUyBvciBTVkcgYXR0cmlidXRlcyB0byBiZSB1c2VkIGluIHRoZSBicm93c2VyXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtT2JqZWN0fSAgdHJhbnNmb3Jtc09iaiAgdHJhbnNmb3JtIHBhcnRzIG9iamVjdFxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybVRhcmdldH0gIHRhcmdldFxuICpcbiAqIEByZXR1cm5zIHtTVkdJbWFnZUF0dHJpYnV0ZXN9XG4gKi9cbmZ1bmN0aW9uIGdldFN2Z0F0dHIodHJhbnNmb3Jtc09iaiwgdGFyZ2V0KSB7XG4gICAgY29uc3QgYXR0cmlidXRlcyA9IHtcbiAgICAgICAgY3NzOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IHt9LFxuICAgICAgICB9LFxuICAgICAgICBhdHRyOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IHt9LFxuICAgICAgICAgICAgaW1nOiB7fSxcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIGNvbnN0IHsgY3NzLCBhdHRyIH0gPSBhdHRyaWJ1dGVzO1xuICAgIGNvbnN0IHsgZml0dGluZ1R5cGUgfSA9IHRyYW5zZm9ybXNPYmo7XG4gICAgY29uc3QgYWxpZ25UeXBlID0gdGFyZ2V0LmFsaWdubWVudDtcbiAgICBjb25zdCB7IHdpZHRoOiBzb3VyY2VXaWR0aCwgaGVpZ2h0OiBzb3VyY2VIZWlnaHQgfSA9IHRyYW5zZm9ybXNPYmouc3JjO1xuICAgIGxldCBpbWFnZVNjYWxlO1xuICAgIGNzcy5jb250YWluZXIucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuICAgIC8vIHBvcHVsYXRlIFNWRyBhdHRyaWJ1dGVzIG9iamVjdFxuICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgaW5kZW50XG4gICAgc3dpdGNoIChmaXR0aW5nVHlwZSkge1xuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5PUklHSU5BTF9TSVpFOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfT1JJR0lOQUxfU0laRTpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuVElMRTpcbiAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1zT2JqLnBhcnRzICYmIHRyYW5zZm9ybXNPYmoucGFydHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgYXR0ci5pbWcud2lkdGggPSB0cmFuc2Zvcm1zT2JqLnBhcnRzWzBdLndpZHRoO1xuICAgICAgICAgICAgICAgIGF0dHIuaW1nLmhlaWdodCA9IHRyYW5zZm9ybXNPYmoucGFydHNbMF0uaGVpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYXR0ci5pbWcud2lkdGggPSBzb3VyY2VXaWR0aDtcbiAgICAgICAgICAgICAgICBhdHRyLmltZy5oZWlnaHQgPSBzb3VyY2VIZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhdHRyLmltZy5wcmVzZXJ2ZUFzcGVjdFJhdGlvID0gJ3hNaWRZTWlkIHNsaWNlJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5TQ0FMRV9UT19GSVQ6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9GSVRfV0lEVEg6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9GSVRfSEVJR0hUOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfRlVMTDpcbiAgICAgICAgICAgIGF0dHIuaW1nLndpZHRoID0gJzEwMCUnO1xuICAgICAgICAgICAgYXR0ci5pbWcuaGVpZ2h0ID0gJzEwMCUnO1xuICAgICAgICAgICAgYXR0ci5pbWcudHJhbnNmb3JtID0gJyc7XG4gICAgICAgICAgICBhdHRyLmltZy5wcmVzZXJ2ZUFzcGVjdFJhdGlvID0gJyc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuU1RSRVRDSDpcbiAgICAgICAgICAgIGF0dHIuaW1nLndpZHRoID0gdGFyZ2V0LndpZHRoO1xuICAgICAgICAgICAgYXR0ci5pbWcuaGVpZ2h0ID0gdGFyZ2V0LmhlaWdodDtcbiAgICAgICAgICAgIGF0dHIuaW1nLnggPSAwO1xuICAgICAgICAgICAgYXR0ci5pbWcueSA9IDA7XG4gICAgICAgICAgICBhdHRyLmltZy50cmFuc2Zvcm0gPSAnJztcbiAgICAgICAgICAgIGF0dHIuaW1nLnByZXNlcnZlQXNwZWN0UmF0aW8gPSAnbm9uZSc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuU0NBTEVfVE9fRklMTDpcbiAgICAgICAgICAgIGlmICghaXNJbWFnZVRyYW5zZm9ybUFwcGxpY2FibGUodHJhbnNmb3Jtc09iai5zcmMuaWQpKSB7XG4gICAgICAgICAgICAgICAgaW1hZ2VTY2FsZSA9IGdldERpbWVuc2lvbihzb3VyY2VXaWR0aCwgc291cmNlSGVpZ2h0LCB0YXJnZXQud2lkdGgsIHRhcmdldC5oZWlnaHQsIHRyYW5zZm9ybVR5cGVzLkZJTEwpO1xuICAgICAgICAgICAgICAgIGF0dHIuaW1nLndpZHRoID0gaW1hZ2VTY2FsZS53aWR0aDtcbiAgICAgICAgICAgICAgICBhdHRyLmltZy5oZWlnaHQgPSBpbWFnZVNjYWxlLmhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGF0dHIuaW1nLndpZHRoID0gdGFyZ2V0LndpZHRoO1xuICAgICAgICAgICAgICAgIGF0dHIuaW1nLmhlaWdodCA9IHRhcmdldC5oZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhdHRyLmltZy54ID0gMDtcbiAgICAgICAgICAgIGF0dHIuaW1nLnkgPSAwO1xuICAgICAgICAgICAgYXR0ci5pbWcudHJhbnNmb3JtID0gJyc7XG4gICAgICAgICAgICBhdHRyLmltZy5wcmVzZXJ2ZUFzcGVjdFJhdGlvID0gJ3hNaWRZTWlkIHNsaWNlJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICAvLyBzZXQgYWxpZ25tZW50IGZvciBjYXNlcyB3aGVyZSB0aGUgcmVxdWVzdGVkIHNyYyBpcyBzbWFsbGVyIG9yIGJpZ2dlciB0aGFuIHRoZSB0YXJnZXQgZWxlbWVudCxcbiAgICBpZiAodHlwZW9mIGF0dHIuaW1nLndpZHRoID09PSAnbnVtYmVyJyAmJlxuICAgICAgICB0eXBlb2YgYXR0ci5pbWcuaGVpZ2h0ID09PSAnbnVtYmVyJyAmJlxuICAgICAgICAoYXR0ci5pbWcud2lkdGggIT09IHRhcmdldC53aWR0aCB8fCBhdHRyLmltZy5oZWlnaHQgIT09IHRhcmdldC5oZWlnaHQpKSB7XG4gICAgICAgIC8vIHggYW5kIHkgdG8gdXNlIGluIHN2ZyA8cGF0dGVybj4gZWxlbWVudFxuICAgICAgICBsZXQgeCA9IDA7XG4gICAgICAgIGxldCB5ID0gMDtcbiAgICAgICAgbGV0IHJpZ2h0O1xuICAgICAgICBsZXQgYm90dG9tO1xuICAgICAgICBpZiAoZml0dGluZ1R5cGUgPT09IGZpdHRpbmdUeXBlcy5USUxFKSB7XG4gICAgICAgICAgICByaWdodCA9IHRhcmdldC53aWR0aCAlIGF0dHIuaW1nLndpZHRoO1xuICAgICAgICAgICAgYm90dG9tID0gdGFyZ2V0LmhlaWdodCAlIGF0dHIuaW1nLmhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJpZ2h0ID0gdGFyZ2V0LndpZHRoIC0gYXR0ci5pbWcud2lkdGg7XG4gICAgICAgICAgICBib3R0b20gPSB0YXJnZXQuaGVpZ2h0IC0gYXR0ci5pbWcuaGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNlbnRlciA9IE1hdGgucm91bmQocmlnaHQgLyAyKTtcbiAgICAgICAgY29uc3QgbWlkZGxlID0gTWF0aC5yb3VuZChib3R0b20gLyAyKTtcbiAgICAgICAgc3dpdGNoIChhbGlnblR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgYWxpZ25UeXBlcy5UT1BfTEVGVDpcbiAgICAgICAgICAgICAgICB4ID0gMDtcbiAgICAgICAgICAgICAgICB5ID0gMDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgYWxpZ25UeXBlcy5UT1A6XG4gICAgICAgICAgICAgICAgeCA9IGNlbnRlcjtcbiAgICAgICAgICAgICAgICB5ID0gMDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgYWxpZ25UeXBlcy5UT1BfUklHSFQ6XG4gICAgICAgICAgICAgICAgeCA9IHJpZ2h0O1xuICAgICAgICAgICAgICAgIHkgPSAwO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBhbGlnblR5cGVzLkxFRlQ6XG4gICAgICAgICAgICAgICAgeCA9IDA7XG4gICAgICAgICAgICAgICAgeSA9IG1pZGRsZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgYWxpZ25UeXBlcy5DRU5URVI6XG4gICAgICAgICAgICAgICAgeCA9IGNlbnRlcjtcbiAgICAgICAgICAgICAgICB5ID0gbWlkZGxlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBhbGlnblR5cGVzLlJJR0hUOlxuICAgICAgICAgICAgICAgIHggPSByaWdodDtcbiAgICAgICAgICAgICAgICB5ID0gbWlkZGxlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBhbGlnblR5cGVzLkJPVFRPTV9MRUZUOlxuICAgICAgICAgICAgICAgIHggPSAwO1xuICAgICAgICAgICAgICAgIHkgPSBib3R0b207XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIGFsaWduVHlwZXMuQk9UVE9NOlxuICAgICAgICAgICAgICAgIHggPSBjZW50ZXI7XG4gICAgICAgICAgICAgICAgeSA9IGJvdHRvbTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgYWxpZ25UeXBlcy5CT1RUT01fUklHSFQ6XG4gICAgICAgICAgICAgICAgeCA9IHJpZ2h0O1xuICAgICAgICAgICAgICAgIHkgPSBib3R0b207XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgYXR0ci5pbWcueCA9IHg7XG4gICAgICAgIGF0dHIuaW1nLnkgPSB5O1xuICAgIH1cbiAgICBhdHRyLmNvbnRhaW5lci53aWR0aCA9IHRhcmdldC53aWR0aDtcbiAgICBhdHRyLmNvbnRhaW5lci5oZWlnaHQgPSB0YXJnZXQuaGVpZ2h0O1xuICAgIGF0dHIuY29udGFpbmVyLnZpZXdCb3ggPSBbMCwgMCwgdGFyZ2V0LndpZHRoLCB0YXJnZXQuaGVpZ2h0XS5qb2luKCcgJyk7XG4gICAgLy8gcmV0dXJuIGF0dHJpYnV0ZXMgb2JqZWN0XG4gICAgcmV0dXJuIGF0dHJpYnV0ZXM7XG59XG4vKiBlc2xpbnQtZW5hYmxlIGluZGVudCAqL1xuZXhwb3J0IHsgZ2V0U3ZnQXR0ciBhcyBnZXQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNWR0F0dHJpYnV0ZXMuanMubWFwIiwiaW1wb3J0IHsgZml0dGluZ1R5cGVzLCB0cmFuc2Zvcm1UeXBlcywgYWxpZ25UeXBlc01hcCwgfSBmcm9tICcuL2ltYWdlU2VydmljZUNvbnN0YW50cyc7XG5pbXBvcnQgeyBnZXRBbGlnbm1lbnQsIGdldFNjYWxlRmFjdG9yLCBnZXRPdmVybGFwcGluZ1JlY3QsIGdldEFsaWduZWRSZWN0LCBnZXRUcmFuc2Zvcm1EYXRhLCBnZXRGb2NhbFBvaW50LCB9IGZyb20gJy4vaW1hZ2VTZXJ2aWNlVXRpbHMnO1xuLyoqXG4gKiByZXF1ZXN0IGFuYWx5c2lzLCByZXR1cm5zIHBhcnNlZCB0cmFuc2Zvcm1zIG9iamVjdFxuICogQHBhcmFtIHtvYmplY3R9ICAgICAgICAgICAgICAgICAgdHJhbnNmb3Jtc09ialxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybVNvdXJjZX0gICAgc3JjXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtVGFyZ2V0fSAgICB0YXJnZXRcbiAqL1xuZnVuY3Rpb24gc2V0VHJhbnNmb3JtUGFydHModHJhbnNmb3Jtc09iaiwgc3JjLCB0YXJnZXQpIHtcbiAgICBsZXQgcmVjdDtcbiAgICAvLyBjcm9wIHNvdXJjZSBpbWFnZSBpZiBuZWVkZWRcbiAgICAvLyBzZXQgY3JvcCBwYXJ0IGFuZCBhZGp1c3Qgc291cmNlIGRpbWVuc2lvbnNcbiAgICBpZiAoc3JjLmNyb3ApIHtcbiAgICAgICAgcmVjdCA9IGdldE92ZXJsYXBwaW5nUmVjdChzcmMsIHNyYy5jcm9wKTtcbiAgICAgICAgaWYgKHJlY3QpIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybXNPYmouc3JjLndpZHRoID0gcmVjdC53aWR0aDtcbiAgICAgICAgICAgIHRyYW5zZm9ybXNPYmouc3JjLmhlaWdodCA9IHJlY3QuaGVpZ2h0O1xuICAgICAgICAgICAgdHJhbnNmb3Jtc09iai5zcmMuaXNDcm9wcGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRyYW5zZm9ybXNPYmoucGFydHMucHVzaChnZXRDcm9wUGFydChyZWN0KSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gc2V0IGFkZGl0aW9uYWwgdHJhbnNmb3JtIHBhcnRcbiAgICBzd2l0Y2ggKHRyYW5zZm9ybXNPYmouZml0dGluZ1R5cGUpIHtcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuU0NBTEVfVE9fRklUOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfRklUX1dJRFRIOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfRklUX0hFSUdIVDpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX0ZVTEw6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkZJVF9BTkRfVElMRTpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX0JHX0ZJVF9BTkRfVElMRTpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX0JHX0ZJVF9BTkRfVElMRV9IT1JJWk9OVEFMOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfQkdfRklUX0FORF9USUxFX1ZFUlRJQ0FMOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfQkdfTk9STUFMOlxuICAgICAgICAgICAgLy8gZml0XG4gICAgICAgICAgICB0cmFuc2Zvcm1zT2JqLnBhcnRzLnB1c2goZ2V0Rml0UGFydCh0cmFuc2Zvcm1zT2JqLCB0YXJnZXQpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5TQ0FMRV9UT19GSUxMOlxuICAgICAgICAgICAgLy8gZmlsbFxuICAgICAgICAgICAgdHJhbnNmb3Jtc09iai5wYXJ0cy5wdXNoKGdldEZpbGxQYXJ0KHRyYW5zZm9ybXNPYmosIHRhcmdldCkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLlNUUkVUQ0g6XG4gICAgICAgICAgICAvLyBzdHJldGNoXG4gICAgICAgICAgICB0cmFuc2Zvcm1zT2JqLnBhcnRzLnB1c2goZ2V0U3RyZXRjaFBhcnQodHJhbnNmb3Jtc09iaiwgdGFyZ2V0KSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuVElMRV9IT1JJWk9OVEFMOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5USUxFX1ZFUlRJQ0FMOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5USUxFOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfT1JJR0lOQUxfU0laRTpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuT1JJR0lOQUxfU0laRTpcbiAgICAgICAgICAgIC8vIHVzZSBjcm9wIHRyYW5zZm9ybVxuICAgICAgICAgICAgLy8gaWYgY3JvcCBvZiBzb3VyY2UgaW1hZ2Ugd2FzIHJlcXVlc3RlZCBhZGp1c3QgY3JvcHBpbmcgcmVjdGFuZ2xlXG4gICAgICAgICAgICByZWN0ID0gZ2V0QWxpZ25lZFJlY3QodHJhbnNmb3Jtc09iai5zcmMsIHRhcmdldCwgdHJhbnNmb3Jtc09iai5mb2NhbFBvaW50LCB0YXJnZXQuYWxpZ25tZW50KTtcbiAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1zT2JqLnNyYy5pc0Nyb3BwZWQpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHRyYW5zZm9ybXNPYmoucGFydHNbMF0sIHJlY3QpO1xuICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSBzb3VyY2Ugd2lkdGggJiBoZWlnaHQgYWNjb3JkaW5nbHlcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1zT2JqLnNyYy53aWR0aCA9IHJlY3Qud2lkdGg7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3Jtc09iai5zcmMuaGVpZ2h0ID0gcmVjdC5oZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1zT2JqLnBhcnRzLnB1c2goZ2V0Q3JvcFBhcnQocmVjdCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAvLyBoYW5kbGVzIGEgbGVnYWN5IGJ1ZyBvbiBiZ0ltYWdlU3RyaXAsIGJhY2tncm91bmQgaHRtbCB0YWdcbiAgICAgICAgLy8gY29tcG9uZW50IEZ1bGwgV2lkdGggU3RyaXAgc3RvcmVkIGluY29ycmVjdCBpbWFnZSBzb3VyY2Ugd2lkdGggYW5kIGhlaWdodFxuICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX1NUUklQX1RJTEVfSE9SSVpPTlRBTDpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX1NUUklQX1RJTEVfVkVSVElDQUw6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9TVFJJUF9USUxFOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfU1RSSVBfT1JJR0lOQUxfU0laRTpcbiAgICAgICAgICAgIC8vIGNyb3AgcmVxdWVzdCBvZiBzb3VyY2UgaW1hZ2UgaXMgbm90IHN1cHBvcnRlZFxuICAgICAgICAgICAgLy8gdXNlIGxlZ2FjeSBjcm9wXG4gICAgICAgICAgICB0cmFuc2Zvcm1zT2JqLnBhcnRzLnB1c2goZ2V0TGVnYWN5Q3JvcFBhcnQodGFyZ2V0KSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX1NUUklQX1NDQUxFX1RPX0ZJVDpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX1NUUklQX0ZJVF9BTkRfVElMRTpcbiAgICAgICAgICAgIC8vIGxlZ2FjeSBmaXRcbiAgICAgICAgICAgIHRyYW5zZm9ybXNPYmoucGFydHMucHVzaChnZXRMZWdhY3lGaXRQYXJ0KHRhcmdldCkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9TVFJJUF9TQ0FMRV9UT19GSUxMOlxuICAgICAgICAgICAgLy8gbGVnYWN5IGZpbGxcbiAgICAgICAgICAgIHRyYW5zZm9ybXNPYmoucGFydHMucHVzaChnZXRMZWdhY3lGaWxsUGFydCh0YXJnZXQpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbn1cbi8qKlxuICogcmV0dXJucyBmaXQgcGFydCBvZiB0aGUgaW1hZ2UgdHJhbnNmb3JtIHVyaVxuICogQHBhcmFtIHtvYmplY3R9ICAgICAgICAgICAgICAgICAgdHJhbnNmb3Jtc09ialxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybVRhcmdldH0gICAgdGFyZ2V0XG4gKlxuICogQHJldHVybnMge1RyYW5zZm9ybUZpdFBhcnR9XG4gKi9cbmZ1bmN0aW9uIGdldEZpdFBhcnQodHJhbnNmb3Jtc09iaiwgdGFyZ2V0KSB7XG4gICAgLy8gY2FsY3VsYXRlIHRoZSB0cmFuc2Zvcm1lZCBpbWFnZSBzaXplIG5lZWRlZFxuICAgIGNvbnN0IHRyYW5zZm9ybWVkRGF0YSA9IGdldFRyYW5zZm9ybURhdGEodHJhbnNmb3Jtc09iai5zcmMud2lkdGgsIHRyYW5zZm9ybXNPYmouc3JjLmhlaWdodCwgdHJhbnNmb3JtVHlwZXMuRklULCB0YXJnZXQsIHRyYW5zZm9ybXNPYmouZGV2aWNlUGl4ZWxSYXRpbywgdHJhbnNmb3Jtc09iai51cHNjYWxlTWV0aG9kKTtcbiAgICBjb25zdCBpc01pc3NpbmdTcmNEaW1lbnNpb25zID0gIXRyYW5zZm9ybXNPYmouc3JjLndpZHRoIHx8ICF0cmFuc2Zvcm1zT2JqLnNyYy5oZWlnaHQ7XG4gICAgY29uc3QgdHJhbnNmb3JtVHlwZSA9IGlzTWlzc2luZ1NyY0RpbWVuc2lvbnNcbiAgICAgICAgPyB0cmFuc2Zvcm1UeXBlcy5GSVRcbiAgICAgICAgOiB0cmFuc2Zvcm1UeXBlcy5GSUxMO1xuICAgIC8vIHJldHVybiBmaXQgdHJhbnNmb3JtIGRhdGFcbiAgICByZXR1cm4ge1xuICAgICAgICB0cmFuc2Zvcm1UeXBlLFxuICAgICAgICB3aWR0aDogTWF0aC5yb3VuZCh0cmFuc2Zvcm1lZERhdGEud2lkdGgpLFxuICAgICAgICBoZWlnaHQ6IE1hdGgucm91bmQodHJhbnNmb3JtZWREYXRhLmhlaWdodCksXG4gICAgICAgIGFsaWdubWVudDogYWxpZ25UeXBlc01hcC5jZW50ZXIsXG4gICAgICAgIHVwc2NhbGU6IHRyYW5zZm9ybWVkRGF0YS5zY2FsZUZhY3RvciA+IDEsXG4gICAgICAgIGZvcmNlVVNNOiB0cmFuc2Zvcm1lZERhdGEuZm9yY2VVU00sXG4gICAgICAgIHNjYWxlRmFjdG9yOiB0cmFuc2Zvcm1lZERhdGEuc2NhbGVGYWN0b3IsXG4gICAgICAgIGNzc1Vwc2NhbGVOZWVkZWQ6IHRyYW5zZm9ybWVkRGF0YS5jc3NVcHNjYWxlTmVlZGVkLFxuICAgICAgICB1cHNjYWxlTWV0aG9kVmFsdWU6IHRyYW5zZm9ybWVkRGF0YS51cHNjYWxlTWV0aG9kVmFsdWUsXG4gICAgfTtcbn1cbi8qKlxuICogcmV0dXJucyBmaWxsIHBhcnQgb2YgdGhlIGltYWdlIHRyYW5zZm9ybSB1cmlcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1PYmplY3R9IHRyYW5zZm9ybXNPYmpcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1UYXJnZXR9IHRhcmdldFxuICpcbiAqIEByZXR1cm5zIHtUcmFuc2Zvcm1GaWxsUGFydH1cbiAqL1xuZnVuY3Rpb24gZ2V0RmlsbFBhcnQodHJhbnNmb3Jtc09iaiwgdGFyZ2V0KSB7XG4gICAgLy8gY2FsY3VsYXRlIHRoZSB0cmFuc2Zvcm1lZCBpbWFnZSBzaXplIG5lZWRlZFxuICAgIGNvbnN0IHRyYW5zZm9ybWVkRGF0YSA9IGdldFRyYW5zZm9ybURhdGEodHJhbnNmb3Jtc09iai5zcmMud2lkdGgsIHRyYW5zZm9ybXNPYmouc3JjLmhlaWdodCwgdHJhbnNmb3JtVHlwZXMuRklMTCwgdGFyZ2V0LCB0cmFuc2Zvcm1zT2JqLmRldmljZVBpeGVsUmF0aW8sIHRyYW5zZm9ybXNPYmoudXBzY2FsZU1ldGhvZCk7XG4gICAgY29uc3QgZm9jYWxQb2ludCA9IGdldEZvY2FsUG9pbnQodHJhbnNmb3Jtc09iai5mb2NhbFBvaW50KTtcbiAgICBjb25zdCB0cmFuc2Zvcm1UeXBlID0gZm9jYWxQb2ludFxuICAgICAgICA/IHRyYW5zZm9ybVR5cGVzLkZJTExfRk9DQUxcbiAgICAgICAgOiB0cmFuc2Zvcm1UeXBlcy5GSUxMO1xuICAgIHJldHVybiB7XG4gICAgICAgIHRyYW5zZm9ybVR5cGUsXG4gICAgICAgIHdpZHRoOiBNYXRoLnJvdW5kKHRyYW5zZm9ybWVkRGF0YS53aWR0aCksXG4gICAgICAgIGhlaWdodDogTWF0aC5yb3VuZCh0cmFuc2Zvcm1lZERhdGEuaGVpZ2h0KSxcbiAgICAgICAgYWxpZ25tZW50OiBnZXRBbGlnbm1lbnQodGFyZ2V0KSxcbiAgICAgICAgZm9jYWxQb2ludFg6IGZvY2FsUG9pbnQgJiYgZm9jYWxQb2ludC54LFxuICAgICAgICBmb2NhbFBvaW50WTogZm9jYWxQb2ludCAmJiBmb2NhbFBvaW50LnksXG4gICAgICAgIHVwc2NhbGU6IHRyYW5zZm9ybWVkRGF0YS5zY2FsZUZhY3RvciA+IDEsXG4gICAgICAgIGZvcmNlVVNNOiB0cmFuc2Zvcm1lZERhdGEuZm9yY2VVU00sXG4gICAgICAgIHNjYWxlRmFjdG9yOiB0cmFuc2Zvcm1lZERhdGEuc2NhbGVGYWN0b3IsXG4gICAgICAgIGNzc1Vwc2NhbGVOZWVkZWQ6IHRyYW5zZm9ybWVkRGF0YS5jc3NVcHNjYWxlTmVlZGVkLFxuICAgICAgICB1cHNjYWxlTWV0aG9kVmFsdWU6IHRyYW5zZm9ybWVkRGF0YS51cHNjYWxlTWV0aG9kVmFsdWUsXG4gICAgfTtcbn1cbi8qKlxuICogcmV0dXJucyBmaWxsIHBhcnQgb2YgdGhlIGltYWdlIHRyYW5zZm9ybSB1cmlcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1PYmplY3R9IHRyYW5zZm9ybXNPYmpcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1UYXJnZXR9IHRhcmdldFxuICpcbiAqIEByZXR1cm5zIHtUcmFuc2Zvcm1GaXRQYXJ0fVxuICovXG5mdW5jdGlvbiBnZXRTdHJldGNoUGFydCh0cmFuc2Zvcm1zT2JqLCB0YXJnZXQpIHtcbiAgICAvLyBzdHJldGNoIGRhdGFcbiAgICBjb25zdCBzY2FsZUZhY3RvciA9IGdldFNjYWxlRmFjdG9yKHRyYW5zZm9ybXNPYmouc3JjLndpZHRoLCB0cmFuc2Zvcm1zT2JqLnNyYy5oZWlnaHQsIHRhcmdldC53aWR0aCwgdGFyZ2V0LmhlaWdodCwgdHJhbnNmb3JtVHlwZXMuRklMTCk7XG4gICAgY29uc3QgY2xvbmVkVGFyZ2V0ID0geyAuLi50YXJnZXQgfTtcbiAgICBjbG9uZWRUYXJnZXQud2lkdGggPSB0cmFuc2Zvcm1zT2JqLnNyYy53aWR0aCAqIHNjYWxlRmFjdG9yO1xuICAgIGNsb25lZFRhcmdldC5oZWlnaHQgPSB0cmFuc2Zvcm1zT2JqLnNyYy5oZWlnaHQgKiBzY2FsZUZhY3RvcjtcbiAgICAvLyByZXR1cm4gc3RyZXRjaCBwYXJ0XG4gICAgcmV0dXJuIGdldEZpdFBhcnQodHJhbnNmb3Jtc09iaiwgY2xvbmVkVGFyZ2V0KTtcbn1cbi8qKlxuICogcmV0dXJucyBjcm9wIHBhcnQgb2YgdGhlIGltYWdlIHRyYW5zZm9ybSB1cmlcbiAqIEBwYXJhbSB7e3g6IG51bWJlciwgeTogbnVtYmVyLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcn19ICByZWN0ICAgICB4LCB5LCB3aWR0aCwgaGVpZ2h0XG4gKlxuICogQHJldHVybnMge1RyYW5zZm9ybUNyb3BQYXJ0fVxuICovXG5mdW5jdGlvbiBnZXRDcm9wUGFydChyZWN0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHJhbnNmb3JtVHlwZTogdHJhbnNmb3JtVHlwZXMuQ1JPUCxcbiAgICAgICAgeDogTWF0aC5yb3VuZChyZWN0LngpLFxuICAgICAgICB5OiBNYXRoLnJvdW5kKHJlY3QueSksXG4gICAgICAgIHdpZHRoOiBNYXRoLnJvdW5kKHJlY3Qud2lkdGgpLFxuICAgICAgICBoZWlnaHQ6IE1hdGgucm91bmQocmVjdC5oZWlnaHQpLFxuICAgICAgICB1cHNjYWxlOiBmYWxzZSxcbiAgICAgICAgZm9yY2VVU006IGZhbHNlLFxuICAgICAgICBzY2FsZUZhY3RvcjogMSxcbiAgICAgICAgY3NzVXBzY2FsZU5lZWRlZDogZmFsc2UsXG4gICAgfTtcbn1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gaGFuZGxlcyBhIGxlZ2FjeSBidWcgb24gYmdJbWFnZVN0cmlwLCBiYWNrZ3JvdW5kIGh0bWwgdGFnXG4vLyBjb21wb25lbnQgRnVsbCBXaWR0aCBTdHJpcCBzdG9yZWQgaW5jb3JyZWN0IGltYWdlIHNvdXJjZSB3aWR0aCBhbmQgaGVpZ2h0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8qKlxuICogcmV0dXJucyBmaXQgcGFydCBvZiB0aGUgaW1hZ2UgdHJhbnNmb3JtIHVyaVxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybVRhcmdldH0gICAgdGFyZ2V0XG4gKlxuICogQHJldHVybnMge1RyYW5zZm9ybUxlZ2FjeUZpdFBhcnR9XG4gKi9cbmZ1bmN0aW9uIGdldExlZ2FjeUZpdFBhcnQodGFyZ2V0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHJhbnNmb3JtVHlwZTogdHJhbnNmb3JtVHlwZXMuRklULFxuICAgICAgICB3aWR0aDogTWF0aC5yb3VuZCh0YXJnZXQud2lkdGgpLFxuICAgICAgICBoZWlnaHQ6IE1hdGgucm91bmQodGFyZ2V0LmhlaWdodCksXG4gICAgICAgIHVwc2NhbGU6IGZhbHNlLFxuICAgICAgICBmb3JjZVVTTTogdHJ1ZSxcbiAgICAgICAgc2NhbGVGYWN0b3I6IDEsXG4gICAgICAgIGNzc1Vwc2NhbGVOZWVkZWQ6IGZhbHNlLFxuICAgIH07XG59XG4vKipcbiAqIHJldHVybnMgZmlsbCBwYXJ0IG9mIHRoZSBpbWFnZSB0cmFuc2Zvcm0gdXJpXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtVGFyZ2V0fSAgICB0YXJnZXRcbiAqXG4gKiBAcmV0dXJucyB7VHJhbnNmb3JtTGVnYWN5RmlsbFBhcnR9XG4gKi9cbmZ1bmN0aW9uIGdldExlZ2FjeUZpbGxQYXJ0KHRhcmdldCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIHRyYW5zZm9ybVR5cGU6IHRyYW5zZm9ybVR5cGVzLkxFR0FDWV9GSUxMLFxuICAgICAgICB3aWR0aDogTWF0aC5yb3VuZCh0YXJnZXQud2lkdGgpLFxuICAgICAgICBoZWlnaHQ6IE1hdGgucm91bmQodGFyZ2V0LmhlaWdodCksXG4gICAgICAgIGFsaWdubWVudDogZ2V0QWxpZ25tZW50KHRhcmdldCksXG4gICAgICAgIHVwc2NhbGU6IGZhbHNlLFxuICAgICAgICBmb3JjZVVTTTogdHJ1ZSxcbiAgICAgICAgc2NhbGVGYWN0b3I6IDEsXG4gICAgICAgIGNzc1Vwc2NhbGVOZWVkZWQ6IGZhbHNlLFxuICAgIH07XG59XG4vKipcbiAqIHJldHVybnMgbGVnYWN5IGNyb3AgcGFydCBvZiB0aGUgaW1hZ2UgdHJhbnNmb3JtIHVyaVxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybVRhcmdldH0gICAgIHRhcmdldFxuICpcbiAqIEByZXR1cm5zIHtUcmFuc2Zvcm1MZWdhY3lDcm9wUGFydH1cbiAqL1xuZnVuY3Rpb24gZ2V0TGVnYWN5Q3JvcFBhcnQodGFyZ2V0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHJhbnNmb3JtVHlwZTogdHJhbnNmb3JtVHlwZXMuTEVHQUNZX0NST1AsXG4gICAgICAgIHdpZHRoOiBNYXRoLnJvdW5kKHRhcmdldC53aWR0aCksXG4gICAgICAgIGhlaWdodDogTWF0aC5yb3VuZCh0YXJnZXQuaGVpZ2h0KSxcbiAgICAgICAgYWxpZ25tZW50OiBnZXRBbGlnbm1lbnQodGFyZ2V0KSxcbiAgICAgICAgdXBzY2FsZTogZmFsc2UsXG4gICAgICAgIGZvcmNlVVNNOiBmYWxzZSxcbiAgICAgICAgc2NhbGVGYWN0b3I6IDEsXG4gICAgICAgIGNzc1Vwc2NhbGVOZWVkZWQ6IGZhbHNlLFxuICAgIH07XG59XG5leHBvcnQgeyBzZXRUcmFuc2Zvcm1QYXJ0cyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW1hZ2VUcmFuc2Zvcm1QYXJ0cy5qcy5tYXAiLCJpbXBvcnQgeyBsYXN0IH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBnZXRQcmVmZXJyZWRJbWFnZVF1YWxpdHksIHJvdW5kVG9GaXhlZCB9IGZyb20gJy4vaW1hZ2VTZXJ2aWNlVXRpbHMnO1xuaW1wb3J0IHsgZGVmYXVsdFVTTSwgZmlsZVR5cGUsIGltYWdlRmlsdGVycywgdHJhbnNmb3JtVHlwZXMsIH0gZnJvbSAnLi9pbWFnZVNlcnZpY2VDb25zdGFudHMnO1xuLyoqXG4gKiByZXR1cm5zIGltYWdlIGZpbHRlcnMgcGFydCBvZiB0aGUgaW1hZ2UgdHJhbnNmb3JtIHVyaVxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybU9iamVjdH0gICAgdHJhbnNmb3Jtc09iaiAgICB0cmFuc2Zvcm0gcGFydHMgb2JqZWN0XG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtT3B0aW9uc30gICBbb3B0aW9uc11cbiAqL1xuZnVuY3Rpb24gc2V0VHJhbnNmb3JtT3B0aW9ucyh0cmFuc2Zvcm1zT2JqLCBvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgLy8gb3B0aW9ucyAtIGdlbmVyYWxcbiAgICB0cmFuc2Zvcm1zT2JqLnF1YWxpdHkgPSBnZXRRdWFsaXR5KHRyYW5zZm9ybXNPYmosIG9wdGlvbnMpO1xuICAgIHRyYW5zZm9ybXNPYmoucHJvZ3Jlc3NpdmUgPSBnZXRQcm9ncmVzc2l2ZShvcHRpb25zKTtcbiAgICB0cmFuc2Zvcm1zT2JqLndhdGVybWFyayA9IGdldFdhdGVybWFyayhvcHRpb25zKTtcbiAgICB0cmFuc2Zvcm1zT2JqLmF1dG9FbmNvZGUgPSBvcHRpb25zLmF1dG9FbmNvZGUgPz8gdHJ1ZTtcbiAgICB0cmFuc2Zvcm1zT2JqLmVuY29kaW5nID0gb3B0aW9ucz8uZW5jb2Rpbmc7XG4gICAgLy8gb3B0aW9ucyAtIGZpbHRlcnMgJiBhZGp1c3RtZW50c1xuICAgIHRyYW5zZm9ybXNPYmoudW5zaGFycE1hc2sgPSBnZXRVbnNoYXJwTWFzayh0cmFuc2Zvcm1zT2JqLCBvcHRpb25zKTtcbiAgICB0cmFuc2Zvcm1zT2JqLmZpbHRlcnMgPSBnZXRGaWx0ZXJzKG9wdGlvbnMpO1xufVxuLyoqXG4gKlxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybU9wdGlvbnN9ICAgb3B0aW9uc1xuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZ2V0V2F0ZXJtYXJrKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gb3B0aW9ucy53YXRlcm1hcms7XG59XG4vKipcbiAqIHJldHVybnMgcHJvZ3Jlc3NpdmUgaWYgcmVxdWlyZWRcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1PcHRpb25zfSAgIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gZ2V0UHJvZ3Jlc3NpdmUob3B0aW9ucykge1xuICAgIHJldHVybiBvcHRpb25zLnByb2dyZXNzaXZlICE9PSBmYWxzZTtcbn1cbi8qKlxuICogcmV0dXJucyBpbWFnZSBmaWx0ZXJzIHBhcnQgb2YgdGhlIGltYWdlIHRyYW5zZm9ybSB1cmlcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1PYmplY3R9ICAgIHRyYW5zZm9ybXNPYmogICAgdHJhbnNmb3JtIHBhcnRzIG9iamVjdFxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybU9wdGlvbnN9ICAgb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9XG4gKi9cbmZ1bmN0aW9uIGdldFF1YWxpdHkodHJhbnNmb3Jtc09iaiwgb3B0aW9ucykge1xuICAgIGNvbnN0IGlzUE5HID0gdHJhbnNmb3Jtc09iai5maWxlVHlwZSA9PT0gZmlsZVR5cGUuUE5HO1xuICAgIGNvbnN0IGlzSlBHID0gdHJhbnNmb3Jtc09iai5maWxlVHlwZSA9PT0gZmlsZVR5cGUuSlBHO1xuICAgIGNvbnN0IGlzV0VCUCA9IHRyYW5zZm9ybXNPYmouZmlsZVR5cGUgPT09IGZpbGVUeXBlLldFQlA7XG4gICAgY29uc3QgaXNBVklGID0gdHJhbnNmb3Jtc09iai5maWxlVHlwZSA9PT0gZmlsZVR5cGUuQVZJRjtcbiAgICBjb25zdCBpc1F1YWxpdHlTdXBwb3J0ZWQgPSBpc0pQRyB8fCBpc1BORyB8fCBpc1dFQlAgfHwgaXNBVklGO1xuICAgIGlmIChpc1F1YWxpdHlTdXBwb3J0ZWQpIHtcbiAgICAgICAgY29uc3QgdHJhbnNmb3JtRGF0YSA9IGxhc3QodHJhbnNmb3Jtc09iai5wYXJ0cyk7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRRdWFsaXR5ID0gZ2V0UHJlZmVycmVkSW1hZ2VRdWFsaXR5KHRyYW5zZm9ybURhdGEud2lkdGgsIHRyYW5zZm9ybURhdGEuaGVpZ2h0KTtcbiAgICAgICAgbGV0IHF1YWxpdHkgPSBvcHRpb25zLnF1YWxpdHkgJiYgb3B0aW9ucy5xdWFsaXR5ID49IDUgJiYgb3B0aW9ucy5xdWFsaXR5IDw9IDkwXG4gICAgICAgICAgICA/IG9wdGlvbnMucXVhbGl0eVxuICAgICAgICAgICAgOiBkZWZhdWx0UXVhbGl0eTtcbiAgICAgICAgLy8gaW5jcmVhc2UgcXVhbGl0eSBieSA1IGZvciB3ZWJwIGltYWdlc1xuICAgICAgICBxdWFsaXR5ID0gaXNQTkcgPyBxdWFsaXR5ICsgNSA6IHF1YWxpdHk7XG4gICAgICAgIHJldHVybiBxdWFsaXR5O1xuICAgIH1cbiAgICAvLyBxdWFsaXR5IG5vdCBzdXBwb3J0ZWRcbiAgICByZXR1cm4gMDtcbn1cbi8qKlxuICogcmV0dXJucyB0aGUgZGVzaXJlZCB0cmFuc2Zvcm1lZCBpbWFnZSBmaWx0ZXJzXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtT3B0aW9uc30gICBvcHRpb25zXG4gKlxuICogQHJldHVybnMge29iamVjdH1cbiAqL1xuZnVuY3Rpb24gZ2V0RmlsdGVycyhvcHRpb25zKSB7XG4gICAgY29uc3QgZmlsdGVyT3B0aW9ucyA9IG9wdGlvbnMuZmlsdGVycyB8fCB7fTtcbiAgICBjb25zdCBmaWx0ZXJzID0ge307XG4gICAgLy8gY29udHJhc3RcbiAgICBpZiAoaXNWYWxpZEltYWdlRmlsdGVyKGZpbHRlck9wdGlvbnNbaW1hZ2VGaWx0ZXJzLkNPTlRSQVNUXSwgLTEwMCwgMTAwKSkge1xuICAgICAgICBmaWx0ZXJzW2ltYWdlRmlsdGVycy5DT05UUkFTVF0gPSBmaWx0ZXJPcHRpb25zW2ltYWdlRmlsdGVycy5DT05UUkFTVF07XG4gICAgfVxuICAgIC8vIGJyaWdodG5lc3NcbiAgICBpZiAoaXNWYWxpZEltYWdlRmlsdGVyKGZpbHRlck9wdGlvbnNbaW1hZ2VGaWx0ZXJzLkJSSUdIVE5FU1NdLCAtMTAwLCAxMDApKSB7XG4gICAgICAgIGZpbHRlcnNbaW1hZ2VGaWx0ZXJzLkJSSUdIVE5FU1NdID0gZmlsdGVyT3B0aW9uc1tpbWFnZUZpbHRlcnMuQlJJR0hUTkVTU107XG4gICAgfVxuICAgIC8vIHNhdHVyYXRpb25cbiAgICBpZiAoaXNWYWxpZEltYWdlRmlsdGVyKGZpbHRlck9wdGlvbnNbaW1hZ2VGaWx0ZXJzLlNBVFVSQVRJT05dLCAtMTAwLCAxMDApKSB7XG4gICAgICAgIGZpbHRlcnNbaW1hZ2VGaWx0ZXJzLlNBVFVSQVRJT05dID0gZmlsdGVyT3B0aW9uc1tpbWFnZUZpbHRlcnMuU0FUVVJBVElPTl07XG4gICAgfVxuICAgIC8vIGh1ZVxuICAgIGlmIChpc1ZhbGlkSW1hZ2VGaWx0ZXIoZmlsdGVyT3B0aW9uc1tpbWFnZUZpbHRlcnMuSFVFXSwgLTE4MCwgMTgwKSkge1xuICAgICAgICBmaWx0ZXJzW2ltYWdlRmlsdGVycy5IVUVdID0gZmlsdGVyT3B0aW9uc1tpbWFnZUZpbHRlcnMuSFVFXTtcbiAgICB9XG4gICAgLy8gYmx1clxuICAgIGlmIChpc1ZhbGlkSW1hZ2VGaWx0ZXIoZmlsdGVyT3B0aW9uc1tpbWFnZUZpbHRlcnMuQkxVUl0sIDAsIDEwMCkpIHtcbiAgICAgICAgZmlsdGVyc1tpbWFnZUZpbHRlcnMuQkxVUl0gPSBmaWx0ZXJPcHRpb25zW2ltYWdlRmlsdGVycy5CTFVSXTtcbiAgICB9XG4gICAgcmV0dXJuIGZpbHRlcnM7XG59XG4vKipcbiAqIGluZGljYXRlcyBpZiByZXF1ZXN0ZWQgZmlsdGVyIHZhbHVlIGlzIHZhbGlkXG4gKiBAcGFyYW0ge251bWJlcnx1bmRlZmluZWR9ICBmaWx0ZXJWYWx1ZSAgICAgZmlsdGVyJ3MgdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSAgbWluVmFsdWUgICAgICAgIG1pbiByYW5nZVxuICogQHBhcmFtIHtudW1iZXJ9ICBtYXhWYWx1ZSAgICAgICAgbWF4IHJhbmdlXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWRJbWFnZUZpbHRlcihmaWx0ZXJWYWx1ZSwgbWluVmFsdWUsIG1heFZhbHVlKSB7XG4gICAgLy8gY2hlY2sgaWYgZmlsdGVyIG5hbWUgYW5kIGZpbHRlciB2YWx1ZXMgcmFuZ2UgdmFsaWRcbiAgICByZXR1cm4gKHR5cGVvZiBmaWx0ZXJWYWx1ZSA9PT0gJ251bWJlcicgJiZcbiAgICAgICAgIWlzTmFOKGZpbHRlclZhbHVlKSAmJlxuICAgICAgICBmaWx0ZXJWYWx1ZSAhPT0gMCAmJlxuICAgICAgICBmaWx0ZXJWYWx1ZSA+PSBtaW5WYWx1ZSAmJlxuICAgICAgICBmaWx0ZXJWYWx1ZSA8PSBtYXhWYWx1ZSk7XG59XG4vKipcbiAqIHJldHVybnMgdGhlIGRlc2lyZWQgdHJhbnNmb3JtZWQgaW1hZ2UgdW5TaGFycE1hc2sgdmFsdWVzXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtT2JqZWN0fSAgICB0cmFuc2Zvcm1zT2JqICAgIHRyYW5zZm9ybSBwYXJ0cyBvYmplY3RcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1PcHRpb25zfSAgIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyB7b2JqZWN0fVxuICovXG5mdW5jdGlvbiBnZXRVbnNoYXJwTWFzayh0cmFuc2Zvcm1zT2JqLCBvcHRpb25zKSB7XG4gICAgLy8gSWYgb3B0aW9ucy51bnNoYXJwTWFzayBpcyBhIHZhbGlkIHZhbHVlLCB1c2UgaXRcbiAgICBpZiAoaXNVU01WYWxpZChvcHRpb25zLnVuc2hhcnBNYXNrKSkge1xuICAgICAgICAvLyBJZiB3ZSBnb3QgdXNtLCBjaGFuZ2UgdmFsdWVzIHRvIGhhdmUgdHJhaWxpbmcgemVyb3MgKC4wMCksIGVsc2UgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmFkaXVzOiByb3VuZFRvRml4ZWQob3B0aW9ucy51bnNoYXJwTWFzaz8ucmFkaXVzLCAyKSxcbiAgICAgICAgICAgIGFtb3VudDogcm91bmRUb0ZpeGVkKG9wdGlvbnMudW5zaGFycE1hc2s/LmFtb3VudCwgMiksXG4gICAgICAgICAgICB0aHJlc2hvbGQ6IHJvdW5kVG9GaXhlZChvcHRpb25zLnVuc2hhcnBNYXNrPy50aHJlc2hvbGQsIDIpLFxuICAgICAgICB9O1xuICAgICAgICAvLyBpZiBvcHRpb25zLnVuc2hhcnBNYXNrIGlzIG5vdCBhbGwgemVyb3MgYW5kIG5vdCB2YWxpZCBhbmQgdXNtIHNob3VsZCBiZSB1c2VkLCB1c2UgZGVmYXVsdFxuICAgIH1cbiAgICBlbHNlIGlmICghaXNaZXJvVVNNKG9wdGlvbnMudW5zaGFycE1hc2spICYmIGlzVVNNTmVlZGVkKHRyYW5zZm9ybXNPYmopKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0VVNNO1xuICAgIH1cbiAgICByZXR1cm47XG59XG4vKipcbiAqIGluZGljYXRlcyBpZiB1c20gaXMgbmVlZGVkXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtT2JqZWN0fSAgICAgIHRyYW5zZm9ybXNPYmogICB0cmFuc2Zvcm0gcGFydHMgb2JqZWN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzVVNNTmVlZGVkKHRyYW5zZm9ybXNPYmopIHtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBkbyBub3QgYXBwbHkgdXNtIGlmIHRyYW5zZm9ybWVkIGltYWdlIHdpZHRoICYgaGVpZ2h0IGlzIHNhbWUgYXMgc291cmNlIGltYWdlIG9yIGxhcmdlclxuICAgIC8vIGFuZCBubyBmb3JjZSB1c20gaXMgZGVzaXJlZFxuICAgIC8vIGFuZCB0cmFuc2Zvcm0gdHlwZSBpcyBub3QgZml0XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgdHJhbnNmb3JtUGFydCA9IGxhc3QodHJhbnNmb3Jtc09iai5wYXJ0cyk7XG4gICAgY29uc3QgdXBzY2FsZSA9IHRyYW5zZm9ybVBhcnQuc2NhbGVGYWN0b3IgPj0gMTtcbiAgICAvLyByZXR1cm4gaWYgdXNtIGlzIG5lZWRlZFxuICAgIHJldHVybiAoIXVwc2NhbGUgfHxcbiAgICAgICAgdHJhbnNmb3JtUGFydC5mb3JjZVVTTSB8fFxuICAgICAgICB0cmFuc2Zvcm1QYXJ0LnRyYW5zZm9ybVR5cGUgPT09IHRyYW5zZm9ybVR5cGVzLkZJVCk7XG59XG4vKipcbiAqIGluZGljYXRlcyBpZiBhbGwgdXNtIHZhbHVlcyBhcmUgcHJlc2VudGVkIGFuZCBpbiByYW5nZVxuICogQHBhcmFtIHtPcHRpb25VbnNoYXJwTWFza3x1bmRlZmluZWR9ICB1c20gICAgIHVuc2hhcnAgbWFza1xuICpcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc1VTTVZhbGlkKHVzbSkge1xuICAgIHVzbSA9IHVzbSB8fCB7fTtcbiAgICBjb25zdCByYWRpdXMgPSB0eXBlb2YgdXNtLnJhZGl1cyA9PT0gJ251bWJlcicgJiZcbiAgICAgICAgIWlzTmFOKHVzbS5yYWRpdXMpICYmXG4gICAgICAgIHVzbS5yYWRpdXMgPj0gMC4xICYmXG4gICAgICAgIHVzbS5yYWRpdXMgPD0gNTAwO1xuICAgIGNvbnN0IGFtb3VudCA9IHR5cGVvZiB1c20uYW1vdW50ID09PSAnbnVtYmVyJyAmJlxuICAgICAgICAhaXNOYU4odXNtLmFtb3VudCkgJiZcbiAgICAgICAgdXNtLmFtb3VudCA+PSAwICYmXG4gICAgICAgIHVzbS5hbW91bnQgPD0gMTA7XG4gICAgY29uc3QgdGhyZXNob2xkID0gdHlwZW9mIHVzbS50aHJlc2hvbGQgPT09ICdudW1iZXInICYmXG4gICAgICAgICFpc05hTih1c20udGhyZXNob2xkKSAmJlxuICAgICAgICB1c20udGhyZXNob2xkID49IDAgJiZcbiAgICAgICAgdXNtLnRocmVzaG9sZCA8PSAyNTU7XG4gICAgLy8gcmV0dXJuIGlzIGEgdmFsaWQgVVNNIGRhdGFcbiAgICByZXR1cm4gcmFkaXVzICYmIGFtb3VudCAmJiB0aHJlc2hvbGQ7XG59XG4vKipcbiAqIGluZGljYXRlcyBpZiBhbGwgdXNtIHZhbHVlcyBhcmUgcHJlc2VudGVkIGFuZCBhcmUgemVyby4gYW4gZXhwbGljaXQgcmVxdWVzdCB0byBub3QgYXBwbHkgdXNtXG4gKiBAcGFyYW0ge09wdGlvblVuc2hhcnBNYXNrfHVuZGVmaW5lZH0gIHVzbSAgICAgdW5zaGFycCBtYXNrXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzWmVyb1VTTSh1c20pIHtcbiAgICB1c20gPSB1c20gfHwge307XG4gICAgcmV0dXJuICh0eXBlb2YgdXNtLnJhZGl1cyA9PT0gJ251bWJlcicgJiZcbiAgICAgICAgIWlzTmFOKHVzbS5yYWRpdXMpICYmXG4gICAgICAgIHVzbS5yYWRpdXMgPT09IDAgJiZcbiAgICAgICAgdHlwZW9mIHVzbS5hbW91bnQgPT09ICdudW1iZXInICYmXG4gICAgICAgICFpc05hTih1c20uYW1vdW50KSAmJlxuICAgICAgICB1c20uYW1vdW50ID09PSAwICYmXG4gICAgICAgIHR5cGVvZiB1c20udGhyZXNob2xkID09PSAnbnVtYmVyJyAmJlxuICAgICAgICAhaXNOYU4odXNtLnRocmVzaG9sZCkgJiZcbiAgICAgICAgdXNtLnRocmVzaG9sZCA9PT0gMCk7XG59XG5leHBvcnQgeyBzZXRUcmFuc2Zvcm1PcHRpb25zIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZVRyYW5zZm9ybU9wdGlvbnMuanMubWFwIiwiaW1wb3J0IHsgaXNTRU9Cb3QsIGdldEZpbGVUeXBlLCBnZXRGaWxlTmFtZSwgZ2V0RmlsZUV4dGVuc2lvbiwgZ2V0RGV2aWNlUGl4ZWxSYXRpbywgZ2V0VXBzY2FsZVN0cmluZywgaXNJbWFnZVRyYW5zZm9ybUFwcGxpY2FibGUsIGltYWdlSXNBbmltYXRlZCwgfSBmcm9tICcuLi9oZWxwZXJzL2ltYWdlU2VydmljZVV0aWxzJztcbmltcG9ydCB7IGlzTW9iaWxlIH0gZnJvbSAnLi4vaGVscGVycy9icm93c2VyRmVhdHVyZVN1cHBvcnQnO1xuaW1wb3J0IHsgc2V0VHJhbnNmb3JtUGFydHMgfSBmcm9tICcuLi9oZWxwZXJzL2ltYWdlVHJhbnNmb3JtUGFydHMnO1xuaW1wb3J0IHsgc2V0VHJhbnNmb3JtT3B0aW9ucyB9IGZyb20gJy4uL2hlbHBlcnMvaW1hZ2VUcmFuc2Zvcm1PcHRpb25zJztcbmltcG9ydCB7IE1PQklMRV9NQVhfQkdfU0lURV9MRUdBQ1lfV0lEVEgsIERTS1RQX01BWF9CR19TSVRFX0xFR0FDWV9XSURUSCwgTU9CSUxFX01BWF9CR19TSVRFX0xFR0FDWV9IRUlHSFQsIERTS1RQX01BWF9CR19TSVRFX0xFR0FDWV9IRUlHSFQsIGZpdHRpbmdUeXBlcywgfSBmcm9tICcuLi9oZWxwZXJzL2ltYWdlU2VydmljZUNvbnN0YW50cyc7XG4vKipcbiAqIHJldHVybnMgaW1hZ2UgdHJhbnNmb3JtIGRhdGFcbiAqXG4gKiBAcGFyYW0ge0ZpdHRpbmdUeXBlfSAgICAgICAgICAgICBmaXR0aW5nVHlwZSAgICAgICAgIGltYWdlU2VydmljZXNUeXBlcy5maXR0aW5nVHlwZXNcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1Tb3VyY2V9ICAgIHNyYyAgICAgICAgICAgICAgICAgc291cmNlIGltYWdlXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtVGFyZ2V0fSAgICB0YXJnZXQgICAgICAgICAgICAgIHRhcmdldCBjb21wb25lbnRcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1PcHRpb25zfSAgIFtvcHRpb25zXSAgICAgICAgICAgdHJhbnNmb3JtIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyB7SW1hZ2VUcmFuc2Zvcm1PYmplY3R9XG4gKi9cbmZ1bmN0aW9uIGdldFRyYW5zZm9ybShmaXR0aW5nVHlwZSwgc3JjLCB0YXJnZXQsIG9wdGlvbnMpIHtcbiAgICBjb25zdCBfaXNTRU9Cb3QgPSBpc1NFT0JvdChvcHRpb25zKTtcbiAgICBjb25zdCBmaWxlVHlwZSA9IGdldEZpbGVUeXBlKHNyYy5pZCk7XG4gICAgY29uc3QgZmlsZU5hbWUgPSBnZXRGaWxlTmFtZShzcmMuaWQsIHNyYy5uYW1lKTtcbiAgICBjb25zdCBkZXZpY2VQaXhlbFJhdGlvID0gX2lzU0VPQm90ID8gMSA6IGdldERldmljZVBpeGVsUmF0aW8odGFyZ2V0KTtcbiAgICBjb25zdCBmaWxlRXh0ZW5zaW9uID0gZ2V0RmlsZUV4dGVuc2lvbihzcmMuaWQpO1xuICAgIGNvbnN0IHByZWZlcnJlZEV4dGVuc2lvbiA9IGZpbGVFeHRlbnNpb247XG4gICAgY29uc3QgY2FuVHJhbnNmb3JtSW1hZ2UgPSBpc0ltYWdlVHJhbnNmb3JtQXBwbGljYWJsZShzcmMuaWQsIG9wdGlvbnM/Lmhhc0FuaW1hdGlvbiwgb3B0aW9ucz8uYWxsb3dBbmltYXRlZFRyYW5zZm9ybSwgb3B0aW9ucz8uYWxsb3dGdWxsR0lGVHJhbnNmb3JtYXRpb24pO1xuICAgIGNvbnN0IHRyYW5zZm9ybXNPYmogPSB7XG4gICAgICAgIGZpbGVOYW1lLFxuICAgICAgICBmaWxlRXh0ZW5zaW9uLFxuICAgICAgICBmaWxlVHlwZSxcbiAgICAgICAgZml0dGluZ1R5cGUsXG4gICAgICAgIHByZWZlcnJlZEV4dGVuc2lvbixcbiAgICAgICAgc3JjOiB7XG4gICAgICAgICAgICBpZDogc3JjLmlkLFxuICAgICAgICAgICAgd2lkdGg6IHNyYy53aWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogc3JjLmhlaWdodCxcbiAgICAgICAgICAgIGlzQ3JvcHBlZDogZmFsc2UsXG4gICAgICAgICAgICBpc0FuaW1hdGVkOiBpbWFnZUlzQW5pbWF0ZWQoc3JjLmlkLCBvcHRpb25zPy5oYXNBbmltYXRpb24pLFxuICAgICAgICB9LFxuICAgICAgICBmb2NhbFBvaW50OiB7XG4gICAgICAgICAgICB4OiBzcmMuZm9jYWxQb2ludCAmJiBzcmMuZm9jYWxQb2ludC54LFxuICAgICAgICAgICAgeTogc3JjLmZvY2FsUG9pbnQgJiYgc3JjLmZvY2FsUG9pbnQueSxcbiAgICAgICAgfSxcbiAgICAgICAgcGFydHM6IFtdLFxuICAgICAgICAvLyBvcHRpb25zIC0gZ2VuZXJhbFxuICAgICAgICBkZXZpY2VQaXhlbFJhdGlvLFxuICAgICAgICBxdWFsaXR5OiAwLFxuICAgICAgICB1cHNjYWxlTWV0aG9kOiBnZXRVcHNjYWxlU3RyaW5nKG9wdGlvbnMpLFxuICAgICAgICBwcm9ncmVzc2l2ZTogdHJ1ZSxcbiAgICAgICAgd2F0ZXJtYXJrOiAnJyxcbiAgICAgICAgdW5zaGFycE1hc2s6IHt9LFxuICAgICAgICBmaWx0ZXJzOiB7fSxcbiAgICAgICAgdHJhbnNmb3JtZWQ6IGNhblRyYW5zZm9ybUltYWdlLFxuICAgICAgICBhbGxvd0Z1bGxHSUZUcmFuc2Zvcm1hdGlvbjogb3B0aW9ucz8uYWxsb3dGdWxsR0lGVHJhbnNmb3JtYXRpb24sXG4gICAgICAgIGlzUGxhY2Vob2xkZXJGbG93OiBvcHRpb25zPy5pc1BsYWNlaG9sZGVyRmxvdyxcbiAgICB9O1xuICAgIGlmIChjYW5UcmFuc2Zvcm1JbWFnZSkge1xuICAgICAgICBzZXRUcmFuc2Zvcm1QYXJ0cyh0cmFuc2Zvcm1zT2JqLCBzcmMsIHRhcmdldCk7XG4gICAgICAgIHNldFRyYW5zZm9ybU9wdGlvbnModHJhbnNmb3Jtc09iaiwgb3B0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiB0cmFuc2Zvcm1zT2JqO1xufVxuLyoqXG4gKiByZXR1cm5zIHRhcmdldCBkYXRhXG4gKiBoYW5kbGUgbGVnYWN5IEJHIHNpdGUgaWYgbmVlZGVkXG4gKlxuICogQHBhcmFtIHtGaXR0aW5nVHlwZX0gICAgICAgICAgICAgZml0dGluZ1R5cGUgICAgICAgICBpbWFnZVNlcnZpY2VzVHlwZXMuZml0dGluZ1R5cGVzXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtU291cmNlfSAgICBzcmMgICAgICAgICAgICAgICAgIHNvdXJjZSBpbWFnZVxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybVRhcmdldH0gICAgdGFyZ2V0ICAgICAgICAgICAgICB0YXJnZXQgY29tcG9uZW50XG4gKlxuICogQHJldHVybnMge09iamVjdH1cbiAqL1xuZnVuY3Rpb24gZ2V0VGFyZ2V0KGZpdHRpbmdUeXBlLCBzcmMsIHRhcmdldCkge1xuICAgIGNvbnN0IHRhcmdldE9iaiA9IHsgLi4udGFyZ2V0IH07XG4gICAgY29uc3QgX2lzTW9iaWxlID0gaXNNb2JpbGUoKTtcbiAgICAvLyBoYW5kbGUgc2l0ZSBCRyBsZWdhY3kgZml0dGluZyB0eXBlcyAoZGVza3RvcCAmIG1vYmlsZSlcbiAgICBzd2l0Y2ggKGZpdHRpbmdUeXBlKSB7XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9CR19GSVRfQU5EX1RJTEU6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9CR19GSVRfQU5EX1RJTEVfSE9SSVpPTlRBTDpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX0JHX0ZJVF9BTkRfVElMRV9WRVJUSUNBTDpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX0JHX05PUk1BTDpcbiAgICAgICAgICAgIGNvbnN0IG1heEJHU2l0ZUxlZ2FjeVdpZHRoID0gX2lzTW9iaWxlXG4gICAgICAgICAgICAgICAgPyBNT0JJTEVfTUFYX0JHX1NJVEVfTEVHQUNZX1dJRFRIXG4gICAgICAgICAgICAgICAgOiBEU0tUUF9NQVhfQkdfU0lURV9MRUdBQ1lfV0lEVEg7XG4gICAgICAgICAgICBjb25zdCBtYXhCR1NpdGVMZWdhY3lIZWlnaHQgPSBfaXNNb2JpbGVcbiAgICAgICAgICAgICAgICA/IE1PQklMRV9NQVhfQkdfU0lURV9MRUdBQ1lfSEVJR0hUXG4gICAgICAgICAgICAgICAgOiBEU0tUUF9NQVhfQkdfU0lURV9MRUdBQ1lfSEVJR0hUO1xuICAgICAgICAgICAgdGFyZ2V0T2JqLndpZHRoID0gTWF0aC5taW4obWF4QkdTaXRlTGVnYWN5V2lkdGgsIHNyYy53aWR0aCk7XG4gICAgICAgICAgICB0YXJnZXRPYmouaGVpZ2h0ID0gTWF0aC5taW4obWF4QkdTaXRlTGVnYWN5SGVpZ2h0LCBNYXRoLnJvdW5kKHRhcmdldE9iai53aWR0aCAvIChzcmMud2lkdGggLyBzcmMuaGVpZ2h0KSkpO1xuICAgICAgICAgICAgLy8gZm9yIGxlZ2FjeSB0eXBlcyBmb3JjZSBodG1sVGFnPSdiZycgYW5kIGRldmljZVBpeGVsUmF0aW89MVxuICAgICAgICAgICAgdGFyZ2V0T2JqLnBpeGVsQXNwZWN0UmF0aW8gPSAxO1xuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0T2JqO1xufVxuZXhwb3J0IHsgZ2V0VHJhbnNmb3JtLCBnZXRUYXJnZXQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRyYW5zZm9ybS5qcy5tYXAiLCJpbXBvcnQgeyBnZXRGZWF0dXJlIH0gZnJvbSAnLi9pbWFnZVNlcnZpY2VGZWF0dXJlU3VwcG9ydE9iamVjdCc7XG4vKipcbiAqIGdldCBhIGJyb3dzZXIgZGV0ZWN0aW9uIGlmIHJ1bm5pbmcgb24gbW9iaWxlIGRldmljZVxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc01vYmlsZSgpIHtcbiAgICByZXR1cm4gZ2V0RmVhdHVyZSgnaXNNb2JpbGUnKTtcbn1cbmV4cG9ydCB7IGlzTW9iaWxlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1icm93c2VyRmVhdHVyZVN1cHBvcnQuanMubWFwIiwiaW1wb3J0IHsgdGVtcGxhdGUgfSBmcm9tICcuLi9oZWxwZXJzL3V0aWxzJztcbmltcG9ydCB7IGltYWdlRmlsdGVycywgdHJhbnNmb3JtVHlwZXMsIEFQSV9WRVJTSU9OLCBmaWxlVHlwZSwgZW5jb2RpbmdUeXBlcywgfSBmcm9tICcuLi9oZWxwZXJzL2ltYWdlU2VydmljZUNvbnN0YW50cyc7XG5pbXBvcnQgeyBpc0dJRiB9IGZyb20gJy4uL2hlbHBlcnMvaW1hZ2VTZXJ2aWNlVXRpbHMnO1xuLy8gdHJhbnNmb3JtIHRlbXBsYXRlc1xuY29uc3QgZml0VGVtcGxhdGUgPSB0ZW1wbGF0ZSBgZml0L3dfJHsnd2lkdGgnfSxoXyR7J2hlaWdodCd9YDtcbmNvbnN0IGZpbGxUZW1wbGF0ZSA9IHRlbXBsYXRlIGBmaWxsL3dfJHsnd2lkdGgnfSxoXyR7J2hlaWdodCd9LGFsXyR7J2FsaWdubWVudCd9YDtcbmNvbnN0IGZpbGxGb2NhbFRlbXBsYXRlID0gdGVtcGxhdGUgYGZpbGwvd18keyd3aWR0aCd9LGhfJHsnaGVpZ2h0J30sZnBfJHsnZm9jYWxQb2ludFgnfV8keydmb2NhbFBvaW50WSd9YDtcbmNvbnN0IGNyb3BUZW1wbGF0ZSA9IHRlbXBsYXRlIGBjcm9wL3hfJHsneCd9LHlfJHsneSd9LHdfJHsnd2lkdGgnfSxoXyR7J2hlaWdodCd9YDtcbi8vIGxlZ2FjeSB0ZW1wbGF0ZXNcbmNvbnN0IGxlZ2FjeUNyb3BUZW1wbGF0ZSA9IHRlbXBsYXRlIGBjcm9wL3dfJHsnd2lkdGgnfSxoXyR7J2hlaWdodCd9LGFsXyR7J2FsaWdubWVudCd9YDtcbmNvbnN0IGxlZ2FjeUZpbGxUZW1wbGF0ZSA9IHRlbXBsYXRlIGBmaWxsL3dfJHsnd2lkdGgnfSxoXyR7J2hlaWdodCd9LGFsXyR7J2FsaWdubWVudCd9YDtcbi8vIHVwc2NhbGUgdGVtcGxhdGVcbmNvbnN0IHVwc2NhbGVUZW1wbGF0ZSA9IHRlbXBsYXRlIGAsbGdfJHsndXBzY2FsZU1ldGhvZFZhbHVlJ31gO1xuLy8gb3B0aW9ucyB0ZW1wbGF0ZXNcbmNvbnN0IHF1YWxpdHlUZW1wbGF0ZSA9IHRlbXBsYXRlIGAscV8keydxdWFsaXR5J31gO1xuY29uc3QgcXVhbGl0eUF1dG9UZW1wbGF0ZSA9IHRlbXBsYXRlIGAscXVhbGl0eV9hdXRvYDtcbmNvbnN0IHVuU2hhcnBNYXNrVGVtcGxhdGUgPSB0ZW1wbGF0ZSBgLHVzbV8keydyYWRpdXMnfV8keydhbW91bnQnfV8keyd0aHJlc2hvbGQnfWA7XG5jb25zdCBub25Qcm9ncmVzc2l2ZVRlbXBsYXRlID0gdGVtcGxhdGUgYCxibGA7XG5jb25zdCB3YXRlcm1hcmtUZW1wbGF0ZSA9IHRlbXBsYXRlIGAsd21fJHsnd2F0ZXJtYXJrJ31gO1xuY29uc3QgZmlsdGVyVGVtcGxhdGVzTWFwID0ge1xuICAgIFtpbWFnZUZpbHRlcnMuQ09OVFJBU1RdOiB0ZW1wbGF0ZSBgLGNvbl8keydjb250cmFzdCd9YCxcbiAgICBbaW1hZ2VGaWx0ZXJzLkJSSUdIVE5FU1NdOiB0ZW1wbGF0ZSBgLGJyXyR7J2JyaWdodG5lc3MnfWAsXG4gICAgW2ltYWdlRmlsdGVycy5TQVRVUkFUSU9OXTogdGVtcGxhdGUgYCxzYXRfJHsnc2F0dXJhdGlvbid9YCxcbiAgICBbaW1hZ2VGaWx0ZXJzLkhVRV06IHRlbXBsYXRlIGAsaHVlXyR7J2h1ZSd9YCxcbiAgICBbaW1hZ2VGaWx0ZXJzLkJMVVJdOiB0ZW1wbGF0ZSBgLGJsdXJfJHsnYmx1cid9YCxcbn07XG5jb25zdCBhdXRvRW5jb2RlVGVtcGxhdGUgPSB0ZW1wbGF0ZSBgLGVuY19hdXRvYDtcbmNvbnN0IEFWSUZFbmNvZGVUZW1wbGF0ZSA9IHRlbXBsYXRlIGAsZW5jX2F2aWZgO1xuY29uc3QgcEFWSUZFbmNvZGVUZW1wbGF0ZSA9IHRlbXBsYXRlIGAsZW5jX3BhdmlmYDtcbmNvbnN0IGFuaW1hdGVkVHJhbnNmb3JtVGVtcGxhdGUgPSB0ZW1wbGF0ZSBgLHBzdHJgO1xuY29uc3QgYW5pbWF0ZWRHSUZUcmFuc2Zvcm1UZW1wbGF0ZSA9IHRlbXBsYXRlIGAsYW5tX2FsbGA7XG4vKipcbiAqIHJldHVybnMgaW1hZ2UgdHJhbnNmb3JtIHVyaVxuICogQHBhcmFtIHtvYmplY3R9ICB0cmFuc2Zvcm1zT2JqXG4gKlxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZ2V0SW1hZ2VVUkkodHJhbnNmb3Jtc09iaikge1xuICAgIC8vIGNvbnN0cnVjdCBpbWFnZSB0cmFuc2Zvcm1zXG4gICAgY29uc3QgdHJhbnNmb3Jtc09ialN0ckFyciA9IFtdO1xuICAgIC8vIGNvbnN0cnVjdCB0cmFuc2Zvcm1cbiAgICB0cmFuc2Zvcm1zT2JqLnBhcnRzLmZvckVhY2goKHRyYW5zZm9ybVBhcnQpID0+IHtcbiAgICAgICAgc3dpdGNoICh0cmFuc2Zvcm1QYXJ0LnRyYW5zZm9ybVR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgdHJhbnNmb3JtVHlwZXMuQ1JPUDpcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1zT2JqU3RyQXJyLnB1c2goY3JvcFRlbXBsYXRlKHRyYW5zZm9ybVBhcnQpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgdHJhbnNmb3JtVHlwZXMuTEVHQUNZX0NST1A6XG4gICAgICAgICAgICAgICAgdHJhbnNmb3Jtc09ialN0ckFyci5wdXNoKGxlZ2FjeUNyb3BUZW1wbGF0ZSh0cmFuc2Zvcm1QYXJ0KSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIHRyYW5zZm9ybVR5cGVzLkxFR0FDWV9GSUxMOlxuICAgICAgICAgICAgICAgIGxldCBsZWdhY3lGaWxsU3RyID0gbGVnYWN5RmlsbFRlbXBsYXRlKHRyYW5zZm9ybVBhcnQpO1xuICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1QYXJ0LnVwc2NhbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgbGVnYWN5RmlsbFN0ciArPSB1cHNjYWxlVGVtcGxhdGUodHJhbnNmb3JtUGFydCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybXNPYmpTdHJBcnIucHVzaChsZWdhY3lGaWxsU3RyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgdHJhbnNmb3JtVHlwZXMuRklUOlxuICAgICAgICAgICAgICAgIGxldCBmaXRTdHIgPSBmaXRUZW1wbGF0ZSh0cmFuc2Zvcm1QYXJ0KTtcbiAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtUGFydC51cHNjYWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpdFN0ciArPSB1cHNjYWxlVGVtcGxhdGUodHJhbnNmb3JtUGFydCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybXNPYmpTdHJBcnIucHVzaChmaXRTdHIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSB0cmFuc2Zvcm1UeXBlcy5GSUxMOlxuICAgICAgICAgICAgICAgIGxldCBmaWxsU3RyID0gZmlsbFRlbXBsYXRlKHRyYW5zZm9ybVBhcnQpO1xuICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1QYXJ0LnVwc2NhbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsbFN0ciArPSB1cHNjYWxlVGVtcGxhdGUodHJhbnNmb3JtUGFydCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybXNPYmpTdHJBcnIucHVzaChmaWxsU3RyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgdHJhbnNmb3JtVHlwZXMuRklMTF9GT0NBTDpcbiAgICAgICAgICAgICAgICBsZXQgZmlsbEZvY2FsU3RyID0gZmlsbEZvY2FsVGVtcGxhdGUodHJhbnNmb3JtUGFydCk7XG4gICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVBhcnQudXBzY2FsZSkge1xuICAgICAgICAgICAgICAgICAgICBmaWxsRm9jYWxTdHIgKz0gdXBzY2FsZVRlbXBsYXRlKHRyYW5zZm9ybVBhcnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1zT2JqU3RyQXJyLnB1c2goZmlsbEZvY2FsU3RyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGxldCB0cmFuc2Zvcm1zU3RyID0gdHJhbnNmb3Jtc09ialN0ckFyci5qb2luKCcvJyk7XG4gICAgLy8gY29uc3RydWN0IHRyYW5zZm9ybSBvcHRpb25zXG4gICAgLy8gcXVhbGl0eVxuICAgIGlmICh0cmFuc2Zvcm1zT2JqLnF1YWxpdHkpIHtcbiAgICAgICAgdHJhbnNmb3Jtc1N0ciArPSBxdWFsaXR5VGVtcGxhdGUodHJhbnNmb3Jtc09iaik7XG4gICAgfVxuICAgIC8vIHVuLXNoYXJwIG1hc2tcbiAgICBpZiAodHJhbnNmb3Jtc09iai51bnNoYXJwTWFzaykge1xuICAgICAgICB0cmFuc2Zvcm1zU3RyICs9IHVuU2hhcnBNYXNrVGVtcGxhdGUodHJhbnNmb3Jtc09iai51bnNoYXJwTWFzayk7XG4gICAgfVxuICAgIC8vIHByb2dyZXNzaXZlXG4gICAgaWYgKCF0cmFuc2Zvcm1zT2JqLnByb2dyZXNzaXZlKSB7XG4gICAgICAgIHRyYW5zZm9ybXNTdHIgKz0gbm9uUHJvZ3Jlc3NpdmVUZW1wbGF0ZSh0cmFuc2Zvcm1zT2JqKTtcbiAgICB9XG4gICAgLy8gd2F0ZXJtYXJrXG4gICAgaWYgKHRyYW5zZm9ybXNPYmoud2F0ZXJtYXJrKSB7XG4gICAgICAgIHRyYW5zZm9ybXNTdHIgKz0gd2F0ZXJtYXJrVGVtcGxhdGUodHJhbnNmb3Jtc09iaik7XG4gICAgfVxuICAgIC8vIGZpbHRlcnNcbiAgICBpZiAodHJhbnNmb3Jtc09iai5maWx0ZXJzKSB7XG4gICAgICAgIHRyYW5zZm9ybXNTdHIgKz0gT2JqZWN0LmtleXModHJhbnNmb3Jtc09iai5maWx0ZXJzKVxuICAgICAgICAgICAgLm1hcCgoZmlsdGVyTmFtZSkgPT4gZmlsdGVyVGVtcGxhdGVzTWFwW2ZpbHRlck5hbWVdKHRyYW5zZm9ybXNPYmouZmlsdGVycykpXG4gICAgICAgICAgICAuam9pbignJyk7XG4gICAgfVxuICAgIC8vIGVuY29kaW5nXG4gICAgaWYgKHRyYW5zZm9ybXNPYmouZmlsZVR5cGUgIT09IGZpbGVUeXBlLkdJRikge1xuICAgICAgICBpZiAodHJhbnNmb3Jtc09iai5lbmNvZGluZyA9PT0gZW5jb2RpbmdUeXBlcy5BVklGKSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1zU3RyICs9IEFWSUZFbmNvZGVUZW1wbGF0ZSh0cmFuc2Zvcm1zT2JqKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybXNTdHIgKz0gcXVhbGl0eUF1dG9UZW1wbGF0ZSh0cmFuc2Zvcm1zT2JqKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0cmFuc2Zvcm1zT2JqLmVuY29kaW5nID09PSBlbmNvZGluZ1R5cGVzLlBBVklGKSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1zU3RyICs9IHBBVklGRW5jb2RlVGVtcGxhdGUodHJhbnNmb3Jtc09iaik7XG4gICAgICAgICAgICB0cmFuc2Zvcm1zU3RyICs9IHF1YWxpdHlBdXRvVGVtcGxhdGUodHJhbnNmb3Jtc09iaik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodHJhbnNmb3Jtc09iai5hdXRvRW5jb2RlKSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1zU3RyICs9IGF1dG9FbmNvZGVUZW1wbGF0ZSh0cmFuc2Zvcm1zT2JqKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBhbmltYXRlZCBpbWFnZXMgdHJhbnNmb3Jtc1xuICAgIGlmICh0cmFuc2Zvcm1zT2JqLnNyYz8uaXNBbmltYXRlZCAmJiB0cmFuc2Zvcm1zT2JqLnRyYW5zZm9ybWVkKSB7XG4gICAgICAgIGNvbnN0IGlzR2lmID0gaXNHSUYodHJhbnNmb3Jtc09iai5zcmMuaWQpO1xuICAgICAgICBjb25zdCBpc1BsYWNlaG9sZGVyRmxvdyA9IHRyYW5zZm9ybXNPYmouaXNQbGFjZWhvbGRlckZsb3cgPT09IHRydWU7XG4gICAgICAgIGNvbnN0IGFsbG93RnVsbEdJRlRyYW5zZm9ybWF0aW9uID0gdHJhbnNmb3Jtc09iai5hbGxvd0Z1bGxHSUZUcmFuc2Zvcm1hdGlvbiA9PT0gdHJ1ZTtcbiAgICAgICAgaWYgKGlzUGxhY2Vob2xkZXJGbG93KSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1zU3RyICs9IGFuaW1hdGVkVHJhbnNmb3JtVGVtcGxhdGUodHJhbnNmb3Jtc09iaik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNHaWYgJiYgYWxsb3dGdWxsR0lGVHJhbnNmb3JtYXRpb24pIHtcbiAgICAgICAgICAgIC8vIE5vbi1wbGFjZWhvbGRlciBmbG93ICsgR0lGICsgZmxhZyBlbmFibGVkOiB1c2UgYW5tX2FsbFxuICAgICAgICAgICAgdHJhbnNmb3Jtc1N0ciArPSBhbmltYXRlZEdJRlRyYW5zZm9ybVRlbXBsYXRlKHRyYW5zZm9ybXNPYmopO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIGltYWdlIHVybCBzdHJpbmdcbiAgICByZXR1cm4gYCR7dHJhbnNmb3Jtc09iai5zcmMuaWR9LyR7QVBJX1ZFUlNJT059LyR7dHJhbnNmb3Jtc1N0cn0vJHt0cmFuc2Zvcm1zT2JqLmZpbGVOYW1lfS4ke3RyYW5zZm9ybXNPYmoucHJlZmVycmVkRXh0ZW5zaW9ufWA7XG59XG5leHBvcnQgeyBnZXRJbWFnZVVSSSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dHJhbnNmb3Jtcy5qcy5tYXAiLCJpbXBvcnQgeyBpc0FWSUYsIGlzSW1hZ2VUcmFuc2Zvcm1BcHBsaWNhYmxlLCBpc1dFQlAsIH0gZnJvbSAnLi4vaGVscGVycy9pbWFnZVNlcnZpY2VVdGlscyc7XG5pbXBvcnQgeyBnZXRJbWFnZVVSSSB9IGZyb20gJy4uL2VuZ2luZXMvdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBnZXRUcmFuc2Zvcm0gfSBmcm9tICcuL3RyYW5zZm9ybSc7XG4vKipcbiAqIHJldHVybnMgaW1hZ2UgdHJhbnNmb3JtIHVyaVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSAgICAgICAgICAgICAgICAgIGZpdHRpbmdUeXBlICAgICAgICAgaW1hZ2VTZXJ2aWNlc1R5cGVzLmZpdHRpbmdUeXBlc1xuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybVNvdXJjZX0gICAgc3JjICAgICAgICAgICAgICAgICBzb3VyY2UgaW1hZ2VcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1UYXJnZXR9ICAgIHRhcmdldCAgICAgICAgICAgICAgdGFyZ2V0IGNvbXBvbmVudFxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybU9wdGlvbnN9ICAgb3B0aW9ucyAgICAgICAgICAgICB0cmFuc2Zvcm0gb3B0aW9uc1xuICogQHBhcmFtIHtPYmplY3R9ICAgICAgICAgICAgICAgICAgW3RyYW5zZm9ybU9ial0gICAgICB0cmFuc2Zvcm0gZGF0YSBvYmplY3QgdG8gdXNlXG4gKlxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZ2V0VVJJKGZpdHRpbmdUeXBlLCBzcmMsIHRhcmdldCwgb3B0aW9ucyA9IHt9LCB0cmFuc2Zvcm1PYmopIHtcbiAgICAvLyBjaGVjayBpZiBpbWFnZSB0cmFuc2Zvcm1hdGlvbiBpcyBhcHBsaWNhYmxlIChlLmcuIC5naWYsIC53aXhfbXApXG4gICAgaWYgKGlzSW1hZ2VUcmFuc2Zvcm1BcHBsaWNhYmxlKHNyYy5pZCwgb3B0aW9ucz8uaGFzQW5pbWF0aW9uLCBvcHRpb25zPy5hbGxvd0FuaW1hdGVkVHJhbnNmb3JtLCBvcHRpb25zPy5hbGxvd0Z1bGxHSUZUcmFuc2Zvcm1hdGlvbikpIHtcbiAgICAgICAgaWYgKGlzV0VCUChzcmMuaWQpIHx8IGlzQVZJRihzcmMuaWQpKSB7XG4gICAgICAgICAgICAvLyBleGNsdWRlIGFsaWdubWVudCwgZm9jYWxQb2ludCBhbmQgY3JvcCBmcm9tIHdlYnAgYW5kIGF2aWYgdHJhbnNmb3JtYXRpb24gaW4gb3JkZXIgbm90IHRvIGJyZWFrIHdlYnAgb3IgYXZpZiBpbWFnZXMgYmVmb3JlIHRyYW5zZm9ybWF0aW9uIHdhcyBlbmFibGVkXG4gICAgICAgICAgICBjb25zdCB7IGFsaWdubWVudCwgLi4udHJhbnNmb3JtVGFyZ2V0IH0gPSB0YXJnZXQ7XG4gICAgICAgICAgICBzcmMuZm9jYWxQb2ludCA9IHsgeDogdW5kZWZpbmVkLCB5OiB1bmRlZmluZWQgfTtcbiAgICAgICAgICAgIGRlbGV0ZSBzcmM/LmNyb3A7XG4gICAgICAgICAgICB0cmFuc2Zvcm1PYmogPSBnZXRUcmFuc2Zvcm0oZml0dGluZ1R5cGUsIHNyYywgdHJhbnNmb3JtVGFyZ2V0LCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybU9iaiA9XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtT2JqIHx8IGdldFRyYW5zZm9ybShmaXR0aW5nVHlwZSwgc3JjLCB0YXJnZXQsIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHNldCB0aGUgdXJpIHByb3BlcnR5XG4gICAgICAgIHJldHVybiBnZXRJbWFnZVVSSSh0cmFuc2Zvcm1PYmopO1xuICAgIH1cbiAgICByZXR1cm4gc3JjLmlkO1xufVxuZXhwb3J0IHsgZ2V0VVJJIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD11cmkuanMubWFwIiwiaW1wb3J0IHsgYWxpZ25UeXBlcywgZml0dGluZ1R5cGVzIH0gZnJvbSAnLi9pbWFnZVNlcnZpY2VDb25zdGFudHMnO1xuaW1wb3J0IHsgaXNQTkcgfSBmcm9tICcuL2ltYWdlU2VydmljZVV0aWxzJztcbmNvbnN0IEFMSUdOX1RZUEVfVE9fUE9TSVRJT04gPSB7XG4gICAgW2FsaWduVHlwZXMuQ0VOVEVSXTogJzUwJSA1MCUnLFxuICAgIFthbGlnblR5cGVzLlRPUF9MRUZUXTogJzAlIDAlJyxcbiAgICBbYWxpZ25UeXBlcy5UT1BfUklHSFRdOiAnMTAwJSAwJScsXG4gICAgW2FsaWduVHlwZXMuVE9QXTogJzUwJSAwJScsXG4gICAgW2FsaWduVHlwZXMuQk9UVE9NX0xFRlRdOiAnMCUgMTAwJScsXG4gICAgW2FsaWduVHlwZXMuQk9UVE9NX1JJR0hUXTogJzEwMCUgMTAwJScsXG4gICAgW2FsaWduVHlwZXMuQk9UVE9NXTogJzUwJSAxMDAlJyxcbiAgICBbYWxpZ25UeXBlcy5SSUdIVF06ICcxMDAlIDUwJScsXG4gICAgW2FsaWduVHlwZXMuTEVGVF06ICcwJSA1MCUnLFxufTtcbmNvbnN0IFBPU0lUSU9OX1RPX0FMSUdOX1RZUEUgPSBPYmplY3QuZW50cmllcyhBTElHTl9UWVBFX1RPX1BPU0lUSU9OKS5yZWR1Y2UoKGFjYywgW2FsaWduLCBwb3NpdGlvbl0pID0+IHtcbiAgICBhY2NbcG9zaXRpb25dID0gYWxpZ247XG4gICAgcmV0dXJuIGFjYztcbn0sIHt9KTtcbmNvbnN0IFRJTEVfRklUVElOR19UWVBFUyA9IFtcbiAgICBmaXR0aW5nVHlwZXMuVElMRSxcbiAgICBmaXR0aW5nVHlwZXMuVElMRV9IT1JJWk9OVEFMLFxuICAgIGZpdHRpbmdUeXBlcy5USUxFX1ZFUlRJQ0FMLFxuICAgIGZpdHRpbmdUeXBlcy5MRUdBQ1lfQkdfRklUX0FORF9USUxFLFxuICAgIGZpdHRpbmdUeXBlcy5MRUdBQ1lfQkdfRklUX0FORF9USUxFX0hPUklaT05UQUwsXG4gICAgZml0dGluZ1R5cGVzLkxFR0FDWV9CR19GSVRfQU5EX1RJTEVfVkVSVElDQUwsXG5dO1xuY29uc3QgTk9OX1NDQUxJTkdfRklUVElOR19UWVBFUyA9IFtcbiAgICBmaXR0aW5nVHlwZXMuTEVHQUNZX09SSUdJTkFMX1NJWkUsXG4gICAgZml0dGluZ1R5cGVzLk9SSUdJTkFMX1NJWkUsXG4gICAgZml0dGluZ1R5cGVzLkxFR0FDWV9CR19OT1JNQUwsXG5dO1xuZnVuY3Rpb24gZ2V0SXNGYWtlVGlsZShmaXR0aW5nVHlwZSwgc3JjLCB7IHdpZHRoOiB0YXJnZXRXaWR0aCwgaGVpZ2h0OiB0YXJnZXRIZWlnaHQsIH0pIHtcbiAgICByZXR1cm4gKGZpdHRpbmdUeXBlID09PSBmaXR0aW5nVHlwZXMuVElMRSAmJlxuICAgICAgICBzcmMud2lkdGggPiB0YXJnZXRXaWR0aCAmJlxuICAgICAgICBzcmMuaGVpZ2h0ID4gdGFyZ2V0SGVpZ2h0KTtcbn1cbi8qKlxuICpcbiAqIEBwYXJhbSB7Rml0dGluZ1R5cGV9ICAgICAgICAgICAgIGZpdHRpbmdUeXBlICAgICAgaW1hZ2VTZXJ2aWNlc1R5cGVzLmZpdHRpbmdUeXBlc1xuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybVNvdXJjZX0gICAgc3JjICAgICAgICAgICAgICBzb3VyY2UgaW1hZ2VcbiAqIEBwYXJhbSB7RGltZW5zaW9uc30gICAgICAgICAgICAgIHRhcmdldCAgICAgICAgICAgdGFyZ2V0IGNvbnRhaW5lciBkaW1lbnNpb25zXG4gKiBAcGFyYW0ge2Jvb2xlYW59ICAgICAgICAgICAgICAgICBbaXNTRU9Cb3Q9ZmFsc2VdIHdoZXRoZXIgaXQgaXMgYSByZW5kZXIgZm9yIGEgYm90IHJlcXVlc3RcbiAqIEByZXR1cm5zIHtEaW1lbnNpb25zfSBzY2FsZWQgZGltZW5zaW9uc1xuICovXG5mdW5jdGlvbiBnZXRTY2FsZWREaW1lbnNpb25zKGZpdHRpbmdUeXBlLCBzcmMsIHsgd2lkdGgsIGhlaWdodCB9LCBpc1NFT0JvdCA9IGZhbHNlKSB7XG4gICAgaWYgKGlzU0VPQm90KSB7XG4gICAgICAgIHJldHVybiB7IHdpZHRoLCBoZWlnaHQgfTtcbiAgICB9XG4gICAgY29uc3QgaXNTY2FsYWJsZSA9ICFOT05fU0NBTElOR19GSVRUSU5HX1RZUEVTLmluY2x1ZGVzKGZpdHRpbmdUeXBlKTtcbiAgICBjb25zdCBpc0Zha2VUaWxlID0gZ2V0SXNGYWtlVGlsZShmaXR0aW5nVHlwZSwgc3JjLCB7IHdpZHRoLCBoZWlnaHQgfSk7XG4gICAgY29uc3QgaXNUaWxlID0gIWlzRmFrZVRpbGUgJiYgVElMRV9GSVRUSU5HX1RZUEVTLmluY2x1ZGVzKGZpdHRpbmdUeXBlKTtcbiAgICBjb25zdCBfd2lkdGggPSBpc1RpbGUgPyBzcmMud2lkdGggOiB3aWR0aDtcbiAgICBjb25zdCBfaGVpZ2h0ID0gaXNUaWxlID8gc3JjLmhlaWdodCA6IGhlaWdodDtcbiAgICBjb25zdCBzY2FsZUZhY3RvciA9IGlzU2NhbGFibGVcbiAgICAgICAgPyBnZXRTY2FsZUZhY3RvckJ5V2lkdGgoX3dpZHRoLCBpc1BORyhzcmMuaWQpKVxuICAgICAgICA6IDE7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgd2lkdGg6IGlzRmFrZVRpbGUgPyAxOTIwIDogX3dpZHRoICogc2NhbGVGYWN0b3IsXG4gICAgICAgIGhlaWdodDogX2hlaWdodCAqIHNjYWxlRmFjdG9yLFxuICAgIH07XG59XG4vKipcbiAqXG4gKiBAcGFyYW0ge0ZpdHRpbmdUeXBlfSBmaXR0aW5nVHlwZSAgaW1hZ2VTZXJ2aWNlc1R5cGVzLmZpdHRpbmdUeXBlc1xuICogQHBhcmFtIHtib29sZWFufSBpc0Zha2VUaWxlXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBmaXR0aW5nVHlwZVxuICovXG5mdW5jdGlvbiBnZXRDb252ZXJ0ZWRGaXR0aW5nKGZpdHRpbmdUeXBlLCBpc0Zha2VUaWxlKSB7XG4gICAgY29uc3QgaXNUaWxlID0gVElMRV9GSVRUSU5HX1RZUEVTLmluY2x1ZGVzKGZpdHRpbmdUeXBlKSAmJiAhaXNGYWtlVGlsZTtcbiAgICBjb25zdCBpc0ZpbGwgPSBmaXR0aW5nVHlwZSA9PT0gZml0dGluZ1R5cGVzLlNDQUxFX1RPX0ZJTEw7XG4gICAgcmV0dXJuIGlzRmlsbCB8fCBpc1RpbGUgPyBmaXR0aW5nVHlwZXMuU0NBTEVfVE9fRklUIDogZml0dGluZ1R5cGU7XG59XG4vKipcbiAqXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtU291cmNlfSAgICBzcmMgICAgICAgICAgICAgICAgIHNvdXJjZSBpbWFnZVxuICogQHBhcmFtIHtudW1iZXIgfHwgJyd9ICAgICAgICAgICAgd2lkdGhcbiAqIEBwYXJhbSB7bnVtYmVyIHx8ICcnfSAgICAgICAgICAgIGhlaWdodFxuICogQHJldHVybnMge0RpbWVuc2lvbnN9ICAgIHdpZHRoLCBoZWlnaHRcbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVUYXJnZXREaW1lbnNpb25zKHNyYywgeyB3aWR0aCwgaGVpZ2h0IH0pIHtcbiAgICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQpIHtcbiAgICAgICAgY29uc3QgX3dpZHRoID0gd2lkdGggfHwgTWF0aC5taW4oOTgwLCBzcmMud2lkdGgpO1xuICAgICAgICBjb25zdCBoZWlnaHRSYXRpbyA9IF93aWR0aCAvIHNyYy53aWR0aDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHdpZHRoOiBfd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IGhlaWdodCB8fCBzcmMuaGVpZ2h0ICogaGVpZ2h0UmF0aW8sXG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7IHdpZHRoLCBoZWlnaHQgfTtcbn1cbi8qKlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aFxuICogQHBhcmFtIHtib29sZWFufSBpc0hpZ2hRdWFsaXR5XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmZ1bmN0aW9uIGdldFNjYWxlRmFjdG9yQnlXaWR0aCh3aWR0aCwgaXNIaWdoUXVhbGl0eSkge1xuICAgIGlmICh3aWR0aCA+IDkwMCkge1xuICAgICAgICByZXR1cm4gaXNIaWdoUXVhbGl0eSA/IDAuMDUgOiAwLjE1O1xuICAgIH1cbiAgICBlbHNlIGlmICh3aWR0aCA+IDUwMCkge1xuICAgICAgICByZXR1cm4gaXNIaWdoUXVhbGl0eSA/IDAuMSA6IDAuMTg7XG4gICAgfVxuICAgIGVsc2UgaWYgKHdpZHRoID4gMjAwKSB7XG4gICAgICAgIHJldHVybiAwLjI1O1xuICAgIH1cbiAgICByZXR1cm4gMTtcbn1cbi8qKlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aFxuICogQHBhcmFtIHtGaXR0aW5nVHlwZX0gZml0dGluZ1R5cGUgaW1hZ2VTZXJ2aWNlc1R5cGVzLmZpdHRpbmdUeXBlc1xuICogQHBhcmFtIHtib29sZWFufSBpc1NFT0JvdFxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5mdW5jdGlvbiBnZXRCbHVyVmFsdWUod2lkdGgsIGZpdHRpbmdUeXBlLCBpc1NFT0JvdCkge1xuICAgIGlmIChpc1NFT0JvdCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgaWYgKFRJTEVfRklUVElOR19UWVBFUy5pbmNsdWRlcyhmaXR0aW5nVHlwZSkpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGlmICh3aWR0aCA+IDIwMCkge1xuICAgICAgICByZXR1cm4gMjtcbiAgICB9XG4gICAgcmV0dXJuIDM7XG59XG4vKipcbiAqXG4gKiBAcGFyYW0ge0ZpdHRpbmdUeXBlfSAgICAgICAgICAgICAgICAgICAgICAgZml0dGluZ1R5cGVcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1Tb3VyY2V9ICAgICAgICAgICAgICBzcmMgICAgICAgICAgICAgICAgICBzb3VyY2UgaW1hZ2VcbiAqIEBwYXJhbSB7e3dpZHRoPzogbnVtYmVyOyBoZWlnaHQ/OiBudW1iZXJ9fSB0YXJnZXQgICAgICAgICAgICAgICB0YXJnZXQgZWxlbWVudFxuICogQHBhcmFtIHtzdHJpbmd9ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbGlnbm1lbnQ9J2NlbnRlciddXG4gKiBAcmV0dXJucyB7e2ltZ30sIHtjb250YWluZXJ9fVxuICovXG5mdW5jdGlvbiBnZXRDU1NPdmVycmlkZXMoZml0dGluZ1R5cGUsIHNyYywgdGFyZ2V0LCBhbGlnbm1lbnQgPSAnY2VudGVyJykge1xuICAgIGNvbnN0IHJldHVyblZhbHVlID0ge1xuICAgICAgICBpbWc6IHt9LFxuICAgICAgICBjb250YWluZXI6IHt9LFxuICAgIH07XG4gICAgaWYgKGZpdHRpbmdUeXBlID09PSBmaXR0aW5nVHlwZXMuU0NBTEVfVE9fRklMTCkge1xuICAgICAgICBjb25zdCBhbGlnblR5cGVGcm9tRm9jYWxQb2ludCA9IHNyYy5mb2NhbFBvaW50ICYmIGNvbnZlcnRGb2NhbFBvaW50VG9BbGlnblR5cGUoc3JjLmZvY2FsUG9pbnQpO1xuICAgICAgICBjb25zdCBhbGlnblR5cGUgPSBhbGlnblR5cGVGcm9tRm9jYWxQb2ludCB8fCBhbGlnbm1lbnQ7XG4gICAgICAgIGlmIChzcmMuZm9jYWxQb2ludCAmJiAhYWxpZ25UeXBlRnJvbUZvY2FsUG9pbnQpIHtcbiAgICAgICAgICAgIHJldHVyblZhbHVlLmltZyA9IHtcbiAgICAgICAgICAgICAgICBvYmplY3RQb3NpdGlvbjogY29udmVydEZpbGxGb2NhbFRvUG9zaXRpb24oc3JjLCB0YXJnZXQsIHNyYy5mb2NhbFBvaW50KSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm5WYWx1ZS5pbWcgPSB7XG4gICAgICAgICAgICAgICAgb2JqZWN0UG9zaXRpb246IEFMSUdOX1RZUEVfVE9fUE9TSVRJT05bYWxpZ25UeXBlXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAoW2ZpdHRpbmdUeXBlcy5MRUdBQ1lfT1JJR0lOQUxfU0laRSwgZml0dGluZ1R5cGVzLk9SSUdJTkFMX1NJWkVdLmluY2x1ZGVzKGZpdHRpbmdUeXBlKSkge1xuICAgICAgICByZXR1cm5WYWx1ZS5pbWcgPSB7XG4gICAgICAgICAgICBvYmplY3RGaXQ6ICdub25lJyxcbiAgICAgICAgICAgIHRvcDogJ2F1dG8nLFxuICAgICAgICAgICAgbGVmdDogJ2F1dG8nLFxuICAgICAgICAgICAgcmlnaHQ6ICdhdXRvJyxcbiAgICAgICAgICAgIGJvdHRvbTogJ2F1dG8nLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBlbHNlIGlmIChUSUxFX0ZJVFRJTkdfVFlQRVMuaW5jbHVkZXMoZml0dGluZ1R5cGUpKSB7XG4gICAgICAgIHJldHVyblZhbHVlLmNvbnRhaW5lciA9IHtcbiAgICAgICAgICAgIGJhY2tncm91bmRTaXplOiBgJHtzcmMud2lkdGh9cHggJHtzcmMuaGVpZ2h0fXB4YCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xufVxuLyoqXG4gKiBUcnkgdG8gY29udmVydCBmb2NhbCBwb2ludCB2YWx1ZSB0byA5IGdyaWQgYWxpZ25tZW50IHZhbHVlXG4gKlxuICogQHBhcmFtIHtQb2ludH0gICAgZm9jYWxQb2ludFxuICogQHJldHVybnMge0FsaWduVHlwZX0gYWxpZ24gdHlwZVxuICovXG5mdW5jdGlvbiBjb252ZXJ0Rm9jYWxQb2ludFRvQWxpZ25UeXBlKGZvY2FsUG9pbnQpIHtcbiAgICBjb25zdCBwb3NpdGlvbiA9IGAke2ZvY2FsUG9pbnQueH0lICR7Zm9jYWxQb2ludC55fSVgO1xuICAgIHJldHVybiBQT1NJVElPTl9UT19BTElHTl9UWVBFW3Bvc2l0aW9uXSB8fCAnJztcbn1cbi8qKlxuICpcbiAqIEBwYXJhbSB7RGltZW5zaW9uc30gc3JjIHNvdXJjZSBkaW1lbnNpb25zXG4gKiBAcGFyYW0ge3dpZHRoPzogbnVtYmVyOyBoZWlnaHQ/OiBudW1iZXJ9IHRhcmdldCB0YXJnZXQgZGltZW5zaW9uc1xuICogQHBhcmFtIHtQb2ludH0gZm9jYWxQb2ludCB4L3kgYXMgMC0xMDAgcGVyY2VudGFnZXNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IGluICd4JSB5JScgZm9ybWF0XG4gKi9cbmZ1bmN0aW9uIGNvbnZlcnRGaWxsRm9jYWxUb1Bvc2l0aW9uKHNyYywgdGFyZ2V0LCBmb2NhbFBvaW50KSB7XG4gICAgY29uc3QgeyB3aWR0aDogc1csIGhlaWdodDogc0ggfSA9IHNyYztcbiAgICBjb25zdCB7IHdpZHRoOiB0VywgaGVpZ2h0OiB0SCB9ID0gdGFyZ2V0O1xuICAgIGNvbnN0IHsgeDogZnBYLCB5OiBmcFkgfSA9IGZvY2FsUG9pbnQ7XG4gICAgaWYgKCF0VyB8fCAhdEgpIHtcbiAgICAgICAgcmV0dXJuIGAke2ZwWH0lICR7ZnBZfSVgO1xuICAgIH1cbiAgICBjb25zdCBmaWxsU2NhbGVGYWN0b3IgPSBNYXRoLm1heCh0VyAvIHNXLCB0SCAvIHNIKTtcbiAgICBjb25zdCBpbWdTY2FsZWRXID0gc1cgKiBmaWxsU2NhbGVGYWN0b3I7XG4gICAgY29uc3QgaW1nU2NhbGVkSCA9IHNIICogZmlsbFNjYWxlRmFjdG9yO1xuICAgIGNvbnN0IHggPSBNYXRoLm1heCgwLCBNYXRoLm1pbihpbWdTY2FsZWRXIC0gdFcsIGltZ1NjYWxlZFcgKiAoZnBYIC8gMTAwKSAtIHRXIC8gMikpO1xuICAgIGNvbnN0IHkgPSBNYXRoLm1heCgwLCBNYXRoLm1pbihpbWdTY2FsZWRIIC0gdEgsIGltZ1NjYWxlZEggKiAoZnBZIC8gMTAwKSAtIHRIIC8gMikpO1xuICAgIGNvbnN0IHBvc1ggPSB4ICYmIE1hdGguZmxvb3IoKHggLyAoaW1nU2NhbGVkVyAtIHRXKSkgKiAxMDApO1xuICAgIGNvbnN0IHBvc1kgPSB5ICYmIE1hdGguZmxvb3IoKHkgLyAoaW1nU2NhbGVkSCAtIHRIKSkgKiAxMDApO1xuICAgIHJldHVybiBgJHtwb3NYfSUgJHtwb3NZfSVgO1xufVxuZXhwb3J0IHsgZ2V0Qmx1clZhbHVlLCBnZXRDb252ZXJ0ZWRGaXR0aW5nLCBnZXRDU1NPdmVycmlkZXMsIGdldElzRmFrZVRpbGUsIGdldFNjYWxlZERpbWVuc2lvbnMsIHZhbGlkYXRlVGFyZ2V0RGltZW5zaW9ucywgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWltYWdlUGxhY2Vob2xkZXJVdGlscy5qcy5tYXAiLCJpbXBvcnQgeyBlbXB0eURhdGEgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2ltYWdlU2VydmljZUNvbnN0YW50cyc7XG5pbXBvcnQgeyBpc0ltYWdlVHJhbnNmb3JtQXBwbGljYWJsZSwgaXNWYWxpZFJlcXVlc3QsIH0gZnJvbSAnLi4vLi4vaGVscGVycy9pbWFnZVNlcnZpY2VVdGlscyc7XG5pbXBvcnQgeyBnZXRBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vLi4vZW5naW5lcy9hdHRyaWJ1dGVzJztcbmltcG9ydCB7IGdldFRyYW5zZm9ybSwgZ2V0VGFyZ2V0IH0gZnJvbSAnLi4vdHJhbnNmb3JtJztcbmltcG9ydCB7IGdldFVSSSB9IGZyb20gJy4uL3VyaSc7XG5pbXBvcnQgeyBnZXRTcmNzZXQgfSBmcm9tICcuLi9zcmNzZXQnO1xuaW1wb3J0IHsgZ2V0U2NhbGVkRGltZW5zaW9ucywgZ2V0Qmx1clZhbHVlLCBnZXRDU1NPdmVycmlkZXMsIHZhbGlkYXRlVGFyZ2V0RGltZW5zaW9ucywgZ2V0SXNGYWtlVGlsZSwgZ2V0Q29udmVydGVkRml0dGluZywgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2ltYWdlUGxhY2Vob2xkZXJVdGlscyc7XG5jb25zdCBQTEFDRUhPTERFUl9JTUdfQ1NTX09WRVJSSURFUyA9IHsgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTAwJScgfTtcbi8qKlxuICogcmV0dXJucyBpbWFnZSBfcGxhY2Vob2xkZXJfIHRyYW5zZm9ybSB1cmkgYW5kIHRoZVxuICogbmVlZGVkIGNzcyBmb3IgYWxpZ25tZW50IGFuZCBwb3NpdGlvbmluZ1xuICpcbiAqIEBwYXJhbSB7Rml0dGluZ1R5cGV9ICAgICAgICAgICAgIGZpdHRpbmdUeXBlIGltYWdlU2VydmljZXNUeXBlcy5maXR0aW5nVHlwZXNcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1Tb3VyY2V9ICAgIHNyYyAgICAgICAgIGltYWdlXG4gKiBAcGFyYW0ge0ltYWdlUGxhY2Vob2xkZXJUcmFuc2Zvcm1UYXJnZXR9ICAgIHRhcmdldCAgICAgIHRhcmdldCBkaW1lbnNpb25zXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtT3B0aW9uc30gW29wdGlvbnNdICAgZW52aXJvbm1lbnQgLyB0cmFuc2Zvcm1hdGlvbiAgb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHtJbWFnZURhdGFBdHRyaWJ1dGVzfVxuICovXG5mdW5jdGlvbiBnZXRQbGFjZWhvbGRlcihmaXR0aW5nVHlwZSwgc3JjLCB0YXJnZXQsIG9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IHsgYXV0b0VuY29kZSA9IHRydWUsIGlzU0VPQm90LCBzaG91bGRMb2FkSFFJbWFnZSwgaGFzQW5pbWF0aW9uLCBhbGxvd0FuaW1hdGVkVHJhbnNmb3JtLCBlbmNvZGluZywgfSA9IG9wdGlvbnM7XG4gICAgaWYgKCFpc1ZhbGlkUmVxdWVzdChmaXR0aW5nVHlwZSwgc3JjLCB0YXJnZXQpKSB7XG4gICAgICAgIHJldHVybiBlbXB0eURhdGE7XG4gICAgfVxuICAgIGNvbnN0IElTX0lOX1BMQUNFSE9MREVSX0ZMT1cgPSB0cnVlO1xuICAgIC8vIEluIHBsYWNlaG9sZGVyIGZsb3csIGFsbG93IGFuaW1hdGVkIHRyYW5zZm9ybXMgYnkgZGVmYXVsdCB1bmxlc3MgZXhwbGljaXRseSBkaXNhYmxlZFxuICAgIGNvbnN0IHNob3VsZEFsbG93QW5pbWF0ZWRUcmFuc2Zvcm1JblBsYWNlaG9sZGVyID0gYWxsb3dBbmltYXRlZFRyYW5zZm9ybSA/PyBJU19JTl9QTEFDRUhPTERFUl9GTE9XO1xuICAgIGNvbnN0IGNhblRyYW5zZm9ybUltYWdlID0gaXNJbWFnZVRyYW5zZm9ybUFwcGxpY2FibGUoc3JjLmlkLCBoYXNBbmltYXRpb24sIHNob3VsZEFsbG93QW5pbWF0ZWRUcmFuc2Zvcm1JblBsYWNlaG9sZGVyKTtcbiAgICBpZiAoIWNhblRyYW5zZm9ybUltYWdlIHx8IHNob3VsZExvYWRIUUltYWdlKSB7XG4gICAgICAgIC8qIEVpdGhlcjpcbiAgICAgICAgICogMS4gVHJhbnNmb3JtIGlzbid0IGFwcGxpY2FibGUgc28gdGFyZ2V0IGlzIG9yaWdpbmFsIHNpemUgYXBwbGllZCB3aXRoIGZsdWlkIENTU1xuICAgICAgICAgKiAyLiBVc2VyIGFza2VkIGZvciBhbiBIUSBpbWFnZSwgc28gdGhleSBtdXN0IGhhdmUgc3VwcGxpZWQgdGFyZ2V0IHNpemUgKHdpZHRoL2hlaWdodClcbiAgICAgICAgICovXG4gICAgICAgIHJldHVybiBnZXREYXRhKGZpdHRpbmdUeXBlLCBzcmMsIHRhcmdldCwge1xuICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgIGF1dG9FbmNvZGUsXG4gICAgICAgICAgICB1c2VTcmNzZXQ6IGNhblRyYW5zZm9ybUltYWdlLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8gSWYgdGhlcmUgYXJlbid0IGRpbWVuc2lvbnMsIHdlIG1ha2UgdGhlbSB1cFxuICAgIGNvbnN0IG5ld1RhcmdldCA9IHtcbiAgICAgICAgLi4udGFyZ2V0LFxuICAgICAgICAuLi52YWxpZGF0ZVRhcmdldERpbWVuc2lvbnMoc3JjLCB0YXJnZXQpLFxuICAgIH07XG4gICAgY29uc3QgeyBhbGlnbm1lbnQsIGh0bWxUYWcgfSA9IG5ld1RhcmdldDtcbiAgICBjb25zdCBpc0Zha2VUaWxlID0gZ2V0SXNGYWtlVGlsZShmaXR0aW5nVHlwZSwgc3JjLCBuZXdUYXJnZXQpO1xuICAgIGNvbnN0IHNjYWxlZERpbWVuc2lvbnMgPSBnZXRTY2FsZWREaW1lbnNpb25zKGZpdHRpbmdUeXBlLCBzcmMsIG5ld1RhcmdldCwgaXNTRU9Cb3QpO1xuICAgIGNvbnN0IGJsdXIgPSBnZXRCbHVyVmFsdWUobmV3VGFyZ2V0LndpZHRoLCBmaXR0aW5nVHlwZSwgaXNTRU9Cb3QpO1xuICAgIGNvbnN0IGNvbnZlcnRlZEZpdHRpbmdUeXBlID0gZ2V0Q29udmVydGVkRml0dGluZyhmaXR0aW5nVHlwZSwgaXNGYWtlVGlsZSk7XG4gICAgY29uc3Qgb3ZlcnJpZGVDU1MgPSBnZXRDU1NPdmVycmlkZXMoZml0dGluZ1R5cGUsIHNyYywgdGFyZ2V0LCBhbGlnbm1lbnQpO1xuICAgIGNvbnN0IHsgdXJpIH0gPSBnZXREYXRhKGNvbnZlcnRlZEZpdHRpbmdUeXBlLCBzcmMsIHtcbiAgICAgICAgLi4uc2NhbGVkRGltZW5zaW9ucyxcbiAgICAgICAgYWxpZ25tZW50LFxuICAgICAgICBodG1sVGFnLFxuICAgIH0sIHtcbiAgICAgICAgYXV0b0VuY29kZSxcbiAgICAgICAgZmlsdGVyczogYmx1ciA/IHsgYmx1ciB9IDoge30sXG4gICAgICAgIGhhc0FuaW1hdGlvbixcbiAgICAgICAgYWxsb3dBbmltYXRlZFRyYW5zZm9ybTogc2hvdWxkQWxsb3dBbmltYXRlZFRyYW5zZm9ybUluUGxhY2Vob2xkZXIsXG4gICAgICAgIGVuY29kaW5nLFxuICAgICAgICBpc1BsYWNlaG9sZGVyRmxvdzogSVNfSU5fUExBQ0VIT0xERVJfRkxPVyxcbiAgICB9KTtcbiAgICBjb25zdCB7IGF0dHIgPSB7fSwgY3NzIH0gPSBnZXREYXRhKGZpdHRpbmdUeXBlLCBzcmMsIHtcbiAgICAgICAgLi4ubmV3VGFyZ2V0LFxuICAgICAgICBhbGlnbm1lbnQsXG4gICAgICAgIGh0bWxUYWcsXG4gICAgfSwge30pO1xuICAgIGNzcy5pbWcgPSBjc3MuaW1nIHx8IHt9O1xuICAgIGNzcy5jb250YWluZXIgPSBjc3MuY29udGFpbmVyIHx8IHt9O1xuICAgIE9iamVjdC5hc3NpZ24oY3NzLmltZywgb3ZlcnJpZGVDU1MuaW1nLCBQTEFDRUhPTERFUl9JTUdfQ1NTX09WRVJSSURFUyk7XG4gICAgT2JqZWN0LmFzc2lnbihjc3MuY29udGFpbmVyLCBvdmVycmlkZUNTUy5jb250YWluZXIpO1xuICAgIHJldHVybiB7IHVyaSwgY3NzLCBhdHRyLCB0cmFuc2Zvcm1lZDogdHJ1ZSB9O1xufVxuLyoqXG4gKiByZXR1cm5zIGltYWdlIHRyYW5zZm9ybSB1cmkgYW5kIHRoZVxuICogbmVlZGVkIGNzcyBmb3IgYWxpZ25tZW50IGFuZCBwb3NpdGlvbmluZ1xuICpcbiAqIEBwYXJhbSB7Rml0dGluZ1R5cGV9ICAgICAgICAgICAgIGZpdHRpbmdUeXBlICAgICAgICAgaW1hZ2VTZXJ2aWNlc1R5cGVzLmZpdHRpbmdUeXBlc1xuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybVNvdXJjZX0gICAgc3JjICAgICAgICAgICAgICAgICBzb3VyY2UgaW1hZ2VcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1UYXJnZXR9ICAgIHRhcmdldCAgICAgICAgICAgICAgdGFyZ2V0IGNvbXBvbmVudFxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybU9wdGlvbnN9ICAgW29wdGlvbnNdICAgICAgICAgIHRyYW5zZm9ybSBvcHRpb25zXG4gKlxuICogQHJldHVybnMge0ltYWdlRGF0YUF0dHJpYnV0ZXN9XG4gKi9cbmZ1bmN0aW9uIGdldERhdGEoZml0dGluZ1R5cGUsIHNyYywgdGFyZ2V0LCBvcHRpb25zKSB7XG4gICAgbGV0IGRhdGEgPSB7fTtcbiAgICAvLyBjaGVjayBpZiB2YWxpZCByZXF1ZXN0XG4gICAgaWYgKGlzVmFsaWRSZXF1ZXN0KGZpdHRpbmdUeXBlLCBzcmMsIHRhcmdldCkpIHtcbiAgICAgICAgLy8gaGFuZGxlIHNpdGUgQkcgbGVnYWN5IGZpdHRpbmcgdHlwZXMgaWYgbmVlZGVkXG4gICAgICAgIGNvbnN0IHRhcmdldE9iaiA9IGdldFRhcmdldChmaXR0aW5nVHlwZSwgc3JjLCB0YXJnZXQpO1xuICAgICAgICAvLyBwYXJzZSByZXF1ZXN0IGFuZCBjcmVhdGUgd29ya2luZyBPQkpcbiAgICAgICAgY29uc3QgdHJhbnNmb3JtT2JqID0gZ2V0VHJhbnNmb3JtKGZpdHRpbmdUeXBlLCBzcmMsIHRhcmdldE9iaiwgb3B0aW9ucyk7XG4gICAgICAgIGRhdGEudXJpID0gZ2V0VVJJKGZpdHRpbmdUeXBlLCBzcmMsIHRhcmdldE9iaiwgb3B0aW9ucywgdHJhbnNmb3JtT2JqKTtcbiAgICAgICAgaWYgKG9wdGlvbnM/LnVzZVNyY3NldCkge1xuICAgICAgICAgICAgZGF0YS5zcmNzZXQgPSBnZXRTcmNzZXQoZml0dGluZ1R5cGUsIHNyYywgdGFyZ2V0T2JqLCBvcHRpb25zLCBkYXRhKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBzZXQgdGhlIENTUyBvciB0aGUgU1ZHIHByb3BlcnR5XG4gICAgICAgIE9iamVjdC5hc3NpZ24oZGF0YSwgZ2V0QXR0cmlidXRlcyh0cmFuc2Zvcm1PYmosIHRhcmdldE9iaiksIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybWVkOiB0cmFuc2Zvcm1PYmoudHJhbnNmb3JtZWQsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgLy8gZW1wdHkgZGF0YVxuICAgICAgICBkYXRhID0gZW1wdHlEYXRhO1xuICAgIH1cbiAgICAvLyByZXR1cm4gZGF0YSB0byBiZSB1c2VkIGluIGh0bWxcbiAgICByZXR1cm4gZGF0YTtcbn1cbmV4cG9ydCB7IGdldERhdGEsIGdldFBsYWNlaG9sZGVyIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hcGkuanMubWFwIiwiaW1wb3J0IHsgZ2V0VVJJIH0gZnJvbSAnLi91cmknO1xuZnVuY3Rpb24gZ2V0U3Jjc2V0KGZpdHRpbmdUeXBlLCBzcmMsIHRhcmdldCwgb3B0aW9ucywgZGF0YSkge1xuICAgIGNvbnN0IGRwciA9IHRhcmdldC5waXhlbEFzcGVjdFJhdGlvIHx8IDE7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZHByOiBbXG4gICAgICAgICAgICBgJHtkcHIgPT09IDFcbiAgICAgICAgICAgICAgICA/IGRhdGEudXJpXG4gICAgICAgICAgICAgICAgOiBnZXRVUkkoZml0dGluZ1R5cGUsIHNyYywge1xuICAgICAgICAgICAgICAgICAgICAuLi50YXJnZXQsXG4gICAgICAgICAgICAgICAgICAgIHBpeGVsQXNwZWN0UmF0aW86IDEsXG4gICAgICAgICAgICAgICAgfSwgb3B0aW9ucyl9IDF4YCxcbiAgICAgICAgICAgIGAke2RwciA9PT0gMlxuICAgICAgICAgICAgICAgID8gZGF0YS51cmlcbiAgICAgICAgICAgICAgICA6IGdldFVSSShmaXR0aW5nVHlwZSwgc3JjLCB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgcGl4ZWxBc3BlY3RSYXRpbzogMixcbiAgICAgICAgICAgICAgICB9LCBvcHRpb25zKX0gMnhgLFxuICAgICAgICBdLFxuICAgIH07XG59XG5leHBvcnQgeyBnZXRTcmNzZXQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNyY3NldC5qcy5tYXAiLCJpbXBvcnQgeyBodG1sVGFnIH0gZnJvbSAnLi4vaGVscGVycy9pbWFnZVNlcnZpY2VDb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0IGFzIGJhY2tncm91bmRBdHRyaWJ1dGVzIH0gZnJvbSAnLi9hdHRyaWJ1dGVzL2JhY2tncm91bmRBdHRyaWJ1dGVzJztcbmltcG9ydCB7IGdldCBhcyBpbWdBdHRyaWJ1dGVzIH0gZnJvbSAnLi9hdHRyaWJ1dGVzL2ltZ0F0dHJpYnV0ZXMnO1xuaW1wb3J0IHsgZ2V0IGFzIFNWR0F0dHJpYnV0ZXMgfSBmcm9tICcuL2F0dHJpYnV0ZXMvU1ZHQXR0cmlidXRlcyc7XG4vKipcbiAqIGdldCBDU1Mgb3IgU1ZHIGF0dHJpYnV0ZXMgdG8gYmUgdXNlZCBpbiB0aGUgYnJvd3NlclxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybU9iamVjdH0gICAgdHJhbnNmb3Jtc09iaiAgICB0cmFuc2Zvcm0gcGFydHMgb2JqZWN0XG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtVGFyZ2V0fSAgICB0YXJnZXRcbiAqXG4gKiBAcmV0dXJucyBvYmplY3RcbiAqL1xuZnVuY3Rpb24gZ2V0QXR0cmlidXRlcyh0cmFuc2Zvcm1zT2JqLCB0YXJnZXQpIHtcbiAgICBsZXQgYXR0cmlidXRlc0dldHRlcjtcbiAgICBpZiAodGFyZ2V0Lmh0bWxUYWcgPT09IGh0bWxUYWcuQkcpIHtcbiAgICAgICAgYXR0cmlidXRlc0dldHRlciA9IGJhY2tncm91bmRBdHRyaWJ1dGVzO1xuICAgIH1cbiAgICBlbHNlIGlmICh0YXJnZXQuaHRtbFRhZyA9PT0gaHRtbFRhZy5TVkcpIHtcbiAgICAgICAgYXR0cmlidXRlc0dldHRlciA9IFNWR0F0dHJpYnV0ZXM7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBhdHRyaWJ1dGVzR2V0dGVyID0gaW1nQXR0cmlidXRlcztcbiAgICB9XG4gICAgcmV0dXJuIGF0dHJpYnV0ZXNHZXR0ZXIodHJhbnNmb3Jtc09iaiwgdGFyZ2V0KTtcbn1cbmV4cG9ydCB7IGdldEF0dHJpYnV0ZXMgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWF0dHJpYnV0ZXMuanMubWFwIiwiaW1wb3J0IHsgZ2V0RGF0YSwgcG9wdWxhdGVHbG9iYWxGZWF0dXJlU3VwcG9ydCB9IGZyb20gJy4uL2FwaS91cmkvaW5kZXgnO1xuaW1wb3J0IHsgZml0dGluZ1R5cGVzLCBodG1sVGFnLCBhbGlnblR5cGVzLCB9IGZyb20gJy4uL2hlbHBlcnMvaW1hZ2VTZXJ2aWNlQ29uc3RhbnRzJztcbmNvbnN0IHdpeFN0YXRpYyA9ICdodHRwczovL3N0YXRpYy53aXhzdGF0aWMuY29tLyc7XG5jb25zdCB3aXhTdGF0aWNXaXRoTWVkaWEgPSAnaHR0cHM6Ly9zdGF0aWMud2l4c3RhdGljLmNvbS9tZWRpYS8nO1xuY29uc3QgSEFTX01FRElBX1BSRUZJWF9SRSA9IC9ebWVkaWFcXC8vaTtcbmNvbnN0IGRldmljZVBpeGVsUmF0aW8gPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvIDogMTtcbmNvbnN0IGdldFdpeFN0YXRpY1VSTCA9ICh1cmkpID0+IEhBU19NRURJQV9QUkVGSVhfUkUudGVzdCh1cmkpXG4gICAgPyBgJHt3aXhTdGF0aWN9JHt1cml9YFxuICAgIDogYCR7d2l4U3RhdGljV2l0aE1lZGlhfSR7dXJpfWA7XG5jb25zdCBnZXRVUkwgPSAodXJpLCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3QgYmFzZUhvc3RVUkwgPSBvcHRpb25zICYmIG9wdGlvbnMuYmFzZUhvc3RVUkw7XG4gICAgcmV0dXJuIGJhc2VIb3N0VVJMID8gYCR7YmFzZUhvc3RVUkx9JHt1cml9YCA6IGdldFdpeFN0YXRpY1VSTCh1cmkpO1xufTtcbmZ1bmN0aW9uIGdldFNjYWxlVG9GaXRJbWFnZVVSTChyZWxhdGl2ZVVybCwgc291cmNlV2lkdGgsIHNvdXJjZUhlaWdodCwgdGFyZ2V0V2lkdGgsIHRhcmdldEhlaWdodCwgb3B0aW9ucykge1xuICAgIGNvbnN0IGRhdGEgPSBnZXREYXRhKGZpdHRpbmdUeXBlcy5TQ0FMRV9UT19GSVQsIHtcbiAgICAgICAgaWQ6IHJlbGF0aXZlVXJsLFxuICAgICAgICB3aWR0aDogc291cmNlV2lkdGgsXG4gICAgICAgIGhlaWdodDogc291cmNlSGVpZ2h0LFxuICAgICAgICBuYW1lOiBvcHRpb25zICYmIG9wdGlvbnMubmFtZSxcbiAgICB9LCB7XG4gICAgICAgIHdpZHRoOiB0YXJnZXRXaWR0aCxcbiAgICAgICAgaGVpZ2h0OiB0YXJnZXRIZWlnaHQsXG4gICAgICAgIGh0bWxUYWc6IGh0bWxUYWcuSU1HLFxuICAgICAgICBhbGlnbm1lbnQ6IGFsaWduVHlwZXMuQ0VOVEVSLFxuICAgICAgICBwaXhlbEFzcGVjdFJhdGlvOiBvcHRpb25zPy5kZXZpY2VQaXhlbFJhdGlvID8/IGRldmljZVBpeGVsUmF0aW8sXG4gICAgfSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIGdldFVSTChkYXRhLnVyaSwgb3B0aW9ucyk7XG59XG5mdW5jdGlvbiBnZXRTY2FsZVRvRmlsbEltYWdlVVJMKHJlbGF0aXZlVXJsLCBzb3VyY2VXaWR0aCwgc291cmNlSGVpZ2h0LCB0YXJnZXRXaWR0aCwgdGFyZ2V0SGVpZ2h0LCBvcHRpb25zKSB7XG4gICAgY29uc3QgZGF0YSA9IGdldERhdGEoZml0dGluZ1R5cGVzLlNDQUxFX1RPX0ZJTEwsIHtcbiAgICAgICAgaWQ6IHJlbGF0aXZlVXJsLFxuICAgICAgICB3aWR0aDogc291cmNlV2lkdGgsXG4gICAgICAgIGhlaWdodDogc291cmNlSGVpZ2h0LFxuICAgICAgICBuYW1lOiBvcHRpb25zICYmIG9wdGlvbnMubmFtZSxcbiAgICAgICAgZm9jYWxQb2ludDoge1xuICAgICAgICAgICAgeDogb3B0aW9ucyAmJiBvcHRpb25zLmZvY2FsUG9pbnQgJiYgb3B0aW9ucy5mb2NhbFBvaW50LngsXG4gICAgICAgICAgICB5OiBvcHRpb25zICYmIG9wdGlvbnMuZm9jYWxQb2ludCAmJiBvcHRpb25zLmZvY2FsUG9pbnQueSxcbiAgICAgICAgfSxcbiAgICB9LCB7XG4gICAgICAgIHdpZHRoOiB0YXJnZXRXaWR0aCxcbiAgICAgICAgaGVpZ2h0OiB0YXJnZXRIZWlnaHQsXG4gICAgICAgIGh0bWxUYWc6IGh0bWxUYWcuSU1HLFxuICAgICAgICBhbGlnbm1lbnQ6IGFsaWduVHlwZXMuQ0VOVEVSLFxuICAgICAgICBwaXhlbEFzcGVjdFJhdGlvOiBvcHRpb25zPy5kZXZpY2VQaXhlbFJhdGlvID8/IGRldmljZVBpeGVsUmF0aW8sXG4gICAgfSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIGdldFVSTChkYXRhLnVyaSwgb3B0aW9ucyk7XG59XG5mdW5jdGlvbiBnZXRDcm9wSW1hZ2VVUkwocmVsYXRpdmVVcmwsIHNvdXJjZVdpZHRoLCBzb3VyY2VIZWlnaHQsIGNyb3BYLCBjcm9wWSwgY3JvcFdpZHRoLCBjcm9wSGVpZ2h0LCB0YXJnZXRXaWR0aCwgdGFyZ2V0SGVpZ2h0LCBvcHRpb25zKSB7XG4gICAgY29uc3QgZGF0YSA9IGdldERhdGEoZml0dGluZ1R5cGVzLlNDQUxFX1RPX0ZJTEwsIHtcbiAgICAgICAgaWQ6IHJlbGF0aXZlVXJsLFxuICAgICAgICB3aWR0aDogc291cmNlV2lkdGgsXG4gICAgICAgIGhlaWdodDogc291cmNlSGVpZ2h0LFxuICAgICAgICBuYW1lOiBvcHRpb25zICYmIG9wdGlvbnMubmFtZSxcbiAgICAgICAgY3JvcDoge1xuICAgICAgICAgICAgeDogY3JvcFgsXG4gICAgICAgICAgICB5OiBjcm9wWSxcbiAgICAgICAgICAgIHdpZHRoOiBjcm9wV2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IGNyb3BIZWlnaHQsXG4gICAgICAgIH0sXG4gICAgfSwge1xuICAgICAgICB3aWR0aDogdGFyZ2V0V2lkdGgsXG4gICAgICAgIGhlaWdodDogdGFyZ2V0SGVpZ2h0LFxuICAgICAgICBodG1sVGFnOiBodG1sVGFnLklNRyxcbiAgICAgICAgYWxpZ25tZW50OiBhbGlnblR5cGVzLkNFTlRFUixcbiAgICAgICAgcGl4ZWxBc3BlY3RSYXRpbzogb3B0aW9ucz8uZGV2aWNlUGl4ZWxSYXRpbyA/PyBkZXZpY2VQaXhlbFJhdGlvLFxuICAgIH0sIG9wdGlvbnMpO1xuICAgIHJldHVybiBnZXRVUkwoZGF0YS51cmksIG9wdGlvbnMpO1xufVxuZXhwb3J0IHsgcG9wdWxhdGVHbG9iYWxGZWF0dXJlU3VwcG9ydCwgZ2V0U2NhbGVUb0ZpdEltYWdlVVJMLCBnZXRTY2FsZVRvRmlsbEltYWdlVVJMLCBnZXRDcm9wSW1hZ2VVUkwsIHdpeFN0YXRpYywgd2l4U3RhdGljV2l0aE1lZGlhLCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXBpLmpzLm1hcCIsImltcG9ydCB7IHBvcHVsYXRlR2xvYmFsRmVhdHVyZVN1cHBvcnQsIGdldFNjYWxlVG9GaXRJbWFnZVVSTCwgZ2V0U2NhbGVUb0ZpbGxJbWFnZVVSTCwgZ2V0Q3JvcEltYWdlVVJMLCB3aXhTdGF0aWMsIHdpeFN0YXRpY1dpdGhNZWRpYSwgfSBmcm9tICcuL2FwaSc7XG5wb3B1bGF0ZUdsb2JhbEZlYXR1cmVTdXBwb3J0KCk7XG5leHBvcnQgeyBnZXRTY2FsZVRvRml0SW1hZ2VVUkwsIGdldFNjYWxlVG9GaWxsSW1hZ2VVUkwsIGdldENyb3BJbWFnZVVSTCwgd2l4U3RhdGljLCB3aXhTdGF0aWNXaXRoTWVkaWEsIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCJpbXBvcnQgeyBhbGlnblR5cGVzLCBmaXR0aW5nVHlwZXMsIGh0bWxUYWcsIHVwc2NhbGVNZXRob2RzLCBmaWxlVHlwZSwgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2ltYWdlU2VydmljZUNvbnN0YW50cyc7XG5pbXBvcnQgeyBpc1dFQlAsIGdldEZpbGVFeHRlbnNpb24gfSBmcm9tICcuLi8uLi9oZWxwZXJzL2ltYWdlU2VydmljZVV0aWxzJztcbmltcG9ydCB7IHBvcHVsYXRlR2xvYmFsRmVhdHVyZVN1cHBvcnQgfSBmcm9tICcuLi8uLi9oZWxwZXJzL3BvcHVsYXRlRmVhdHVyZVN1cHBvcnQnO1xuaW1wb3J0IHsgZ2V0RGF0YSwgZ2V0UGxhY2Vob2xkZXIgfSBmcm9tICcuL2FwaSc7XG5pbXBvcnQgeyBnZXRTY2FsZVRvRml0SW1hZ2VVUkwsIGdldFNjYWxlVG9GaWxsSW1hZ2VVUkwsIGdldENyb3BJbWFnZVVSTCwgd2l4U3RhdGljV2l0aE1lZGlhLCB9IGZyb20gJy4uLy4uL3Nkayc7XG5pbXBvcnQgeyBnZXRSZXNwb25zaXZlSW1hZ2VQcm9wcyB9IGZyb20gJy4uLy4uL2hlbHBlcnMvcmVzcG9uc2l2ZUltYWdlVXRpbHMnO1xucG9wdWxhdGVHbG9iYWxGZWF0dXJlU3VwcG9ydCgpO1xuY29uc3Qgc2RrID0ge1xuICAgIGdldFNjYWxlVG9GaXRJbWFnZVVSTCxcbiAgICBnZXRTY2FsZVRvRmlsbEltYWdlVVJMLFxuICAgIGdldENyb3BJbWFnZVVSTCxcbn07XG5leHBvcnQgKiBmcm9tICcuLi8uLi90eXBlcyc7XG5jb25zdCBTVEFUSUNfTUVESUFfVVJMID0gd2l4U3RhdGljV2l0aE1lZGlhO1xuZXhwb3J0IHsgU1RBVElDX01FRElBX1VSTCwgYWxpZ25UeXBlcywgZml0dGluZ1R5cGVzLCBnZXREYXRhLCBnZXRQbGFjZWhvbGRlciwgaHRtbFRhZywgcG9wdWxhdGVHbG9iYWxGZWF0dXJlU3VwcG9ydCwgc2RrLCB1cHNjYWxlTWV0aG9kcywgaXNXRUJQLCBnZXRGaWxlRXh0ZW5zaW9uLCBmaWxlVHlwZSwgZ2V0UmVzcG9uc2l2ZUltYWdlUHJvcHMsIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vSW1hZ2UubW9kdWxlLnNjc3MnO1xuaW1wb3J0ICogYXMgaW1hZ2VLaXQgZnJvbSAnQHdpeC9pbWFnZS1raXQnO1xuY29uc3QgeyBTVEFUSUNfTUVESUFfVVJMIH0gPSBpbWFnZUtpdDtcbmNvbnN0IGZldGNoTFFJUCA9ICh7IGZpdHRpbmdUeXBlLCBzcmMsIHRhcmdldCwgb3B0aW9ucywgfSkgPT4ge1xuICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gaW1hZ2VLaXQuZ2V0UGxhY2Vob2xkZXIoZml0dGluZ1R5cGUsIHNyYywgdGFyZ2V0LCB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIGF1dG9FbmNvZGU6IHRydWUsXG4gICAgfSk7XG4gICAgaWYgKHBsYWNlaG9sZGVyPy51cmkgJiYgIS9eW2Etel0rOi8udGVzdChwbGFjZWhvbGRlci51cmkpKSB7XG4gICAgICAgIHBsYWNlaG9sZGVyLnVyaSA9IGAke1NUQVRJQ19NRURJQV9VUkx9JHtwbGFjZWhvbGRlci51cml9YDtcbiAgICB9XG4gICAgcmV0dXJuIHBsYWNlaG9sZGVyO1xufTtcbmNvbnN0IFNDSEVNRV9SRSA9IC9eW2Etel0rOi87XG5jb25zdCBJbWFnZSA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgaWQsIGNvbnRhaW5lcklkLCB1cmksIGFsdCwgbmFtZSA9ICcnLCByb2xlLCB3aWR0aCwgaGVpZ2h0LCBkaXNwbGF5TW9kZSwgZGV2aWNlUGl4ZWxSYXRpbywgcXVhbGl0eSwgYWxpZ25UeXBlLCBiZ0VmZmVjdE5hbWUgPSAnJywgZm9jYWxQb2ludCwgdXBzY2FsZU1ldGhvZCwgY2xhc3NOYW1lID0gJycsIGNyb3AsIGltYWdlU3R5bGVzID0ge30sIHRhcmdldFdpZHRoLCB0YXJnZXRIZWlnaHQsIHRhcmdldFNjYWxlLCBvbkxvYWQgPSAoKSA9PiB7IH0sIG9uRXJyb3IgPSAoKSA9PiB7IH0sIHNob3VsZFVzZUxRSVAsIGNvbnRhaW5lcldpZHRoLCBjb250YWluZXJIZWlnaHQsIGdldFBsYWNlaG9sZGVyLCBpc0luRmlyc3RGb2xkLCBwbGFjZWhvbGRlclRyYW5zaXRpb24sIHNvY2lhbEF0dHJzLCBpc1NFT0JvdCwgc2tpcE1lYXN1cmUsIGhhc0FuaW1hdGlvbiwgZW5jb2RpbmcsIGlzRmx1aWRMYXlvdXQsIH0gPSBwcm9wcztcbiAgICBjb25zdCBpbWFnZVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICAvLyBmaXggY29udGFpbmVySWQgYW5kIGlkIHRvIHN1cHBvcnQgaG92ZXJCb3ggY29tcG9uZW50XG4gICAgbGV0IGhhc1NzclNyYyA9ICcnO1xuICAgIGNvbnN0IGhhc0JsdXJUcmFuc2l0aW9uID0gcGxhY2Vob2xkZXJUcmFuc2l0aW9uID09PSAnYmx1cic7XG4gICAgY29uc3Qgc3NySW1hZ2VEYXRhID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIGlmICghc3NySW1hZ2VEYXRhLmN1cnJlbnQpIHtcbiAgICAgICAgaWYgKGdldFBsYWNlaG9sZGVyIHx8IHNob3VsZFVzZUxRSVAgfHwgaXNJbkZpcnN0Rm9sZCB8fCBpc1NFT0JvdCkge1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICB1cHNjYWxlTWV0aG9kLFxuICAgICAgICAgICAgICAgIC4uLihxdWFsaXR5ID8gcXVhbGl0eSA6IHt9KSxcbiAgICAgICAgICAgICAgICBzaG91bGRMb2FkSFFJbWFnZTogaXNJbkZpcnN0Rm9sZCxcbiAgICAgICAgICAgICAgICBpc1NFT0JvdCxcbiAgICAgICAgICAgICAgICBoYXNBbmltYXRpb24sXG4gICAgICAgICAgICAgICAgZW5jb2RpbmcsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgc3NySW1hZ2VEYXRhLmN1cnJlbnQgPSAoZ2V0UGxhY2Vob2xkZXIgfHwgZmV0Y2hMUUlQKSh7XG4gICAgICAgICAgICAgICAgZml0dGluZ1R5cGU6IGRpc3BsYXlNb2RlLFxuICAgICAgICAgICAgICAgIHNyYzoge1xuICAgICAgICAgICAgICAgICAgICBpZDogdXJpLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICBjcm9wLFxuICAgICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgICBmb2NhbFBvaW50LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGFyZ2V0OiB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBjb250YWluZXJXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBjb250YWluZXJIZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogYWxpZ25UeXBlLFxuICAgICAgICAgICAgICAgICAgICBodG1sVGFnOiAnaW1nJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGhhc1NzclNyYyA9XG4gICAgICAgICAgICAgICAgIXNzckltYWdlRGF0YS5jdXJyZW50LnRyYW5zZm9ybWVkIHx8IGlzSW5GaXJzdEZvbGQgfHwgaXNTRU9Cb3RcbiAgICAgICAgICAgICAgICAgICAgPyAnJ1xuICAgICAgICAgICAgICAgICAgICA6ICd0cnVlJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIHRvIGtlZXAgYW4gZW1wdHkgcGxhY2Vob2xkZXIgZGF0YVxuICAgICAgICAgICAgc3NySW1hZ2VEYXRhLmN1cnJlbnQgPSB7XG4gICAgICAgICAgICAgICAgdXJpOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgY3NzOiB7IGltZzoge30gfSxcbiAgICAgICAgICAgICAgICBhdHRyOiB7IGltZzoge30sIGNvbnRhaW5lcjoge30gfSxcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1lZDogZmFsc2UsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGlzTFFJUCA9ICFpc1NFT0JvdCAmJlxuICAgICAgICAoZ2V0UGxhY2Vob2xkZXIgfHwgc2hvdWxkVXNlTFFJUCkgJiZcbiAgICAgICAgIWlzSW5GaXJzdEZvbGQgJiZcbiAgICAgICAgc3NySW1hZ2VEYXRhLmN1cnJlbnQudHJhbnNmb3JtZWQ7XG4gICAgY29uc3QgaW1hZ2VJbmZvID0gUmVhY3QudXNlTWVtbygoKSA9PiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGNvbnRhaW5lcklkLFxuICAgICAgICAuLi4oY29udGFpbmVySWQgJiYgeyBjb250YWluZXJJZCB9KSxcbiAgICAgICAgLi4uKGFsaWduVHlwZSAmJiB7IGFsaWduVHlwZSB9KSxcbiAgICAgICAgLi4uKHNraXBNZWFzdXJlICYmIHsgc2tpcE1lYXN1cmU6IHRydWUgfSksXG4gICAgICAgIGRpc3BsYXlNb2RlLFxuICAgICAgICAuLi4oY29udGFpbmVyV2lkdGggJiYgeyB0YXJnZXRXaWR0aDogY29udGFpbmVyV2lkdGggfSksXG4gICAgICAgIC4uLihjb250YWluZXJIZWlnaHQgJiYgeyB0YXJnZXRIZWlnaHQ6IGNvbnRhaW5lckhlaWdodCB9KSxcbiAgICAgICAgLi4uKHRhcmdldFdpZHRoICYmIHsgdGFyZ2V0V2lkdGggfSksXG4gICAgICAgIC4uLih0YXJnZXRIZWlnaHQgJiYgeyB0YXJnZXRIZWlnaHQgfSksXG4gICAgICAgIC4uLih0YXJnZXRTY2FsZSAmJiB7IHRhcmdldFNjYWxlIH0pLFxuICAgICAgICBpc0xRSVAsXG4gICAgICAgIGlzU0VPQm90LFxuICAgICAgICBscWlwVHJhbnNpdGlvbjogcGxhY2Vob2xkZXJUcmFuc2l0aW9uLFxuICAgICAgICBlbmNvZGluZyxcbiAgICAgICAgaW1hZ2VEYXRhOiB7XG4gICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgIHVyaSxcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBkaXNwbGF5TW9kZSxcbiAgICAgICAgICAgIGhhc0FuaW1hdGlvbixcbiAgICAgICAgICAgIC4uLihxdWFsaXR5ICYmIHsgcXVhbGl0eSB9KSxcbiAgICAgICAgICAgIC4uLihkZXZpY2VQaXhlbFJhdGlvICYmIHsgZGV2aWNlUGl4ZWxSYXRpbyB9KSxcbiAgICAgICAgICAgIC4uLihmb2NhbFBvaW50ICYmIHsgZm9jYWxQb2ludCB9KSxcbiAgICAgICAgICAgIC4uLihjcm9wICYmIHsgY3JvcCB9KSxcbiAgICAgICAgICAgIC4uLih1cHNjYWxlTWV0aG9kICYmIHsgdXBzY2FsZU1ldGhvZCB9KSxcbiAgICAgICAgfSxcbiAgICB9KSwgW1xuICAgICAgICBjb250YWluZXJJZCxcbiAgICAgICAgYWxpZ25UeXBlLFxuICAgICAgICBza2lwTWVhc3VyZSxcbiAgICAgICAgZGlzcGxheU1vZGUsXG4gICAgICAgIGNvbnRhaW5lcldpZHRoLFxuICAgICAgICBjb250YWluZXJIZWlnaHQsXG4gICAgICAgIHRhcmdldFdpZHRoLFxuICAgICAgICB0YXJnZXRIZWlnaHQsXG4gICAgICAgIHRhcmdldFNjYWxlLFxuICAgICAgICBpc0xRSVAsXG4gICAgICAgIGlzU0VPQm90LFxuICAgICAgICBwbGFjZWhvbGRlclRyYW5zaXRpb24sXG4gICAgICAgIGVuY29kaW5nLFxuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICB1cmksXG4gICAgICAgIG5hbWUsXG4gICAgICAgIGhhc0FuaW1hdGlvbixcbiAgICAgICAgcXVhbGl0eSxcbiAgICAgICAgZGV2aWNlUGl4ZWxSYXRpbyxcbiAgICAgICAgZm9jYWxQb2ludCxcbiAgICAgICAgY3JvcCxcbiAgICAgICAgdXBzY2FsZU1ldGhvZCxcbiAgICBdKTtcbiAgICBjb25zdCBzc3JSZXN1bHQgPSBzc3JJbWFnZURhdGEuY3VycmVudDtcbiAgICBjb25zdCBzcmMgPSBzc3JSZXN1bHQ/LnVyaTtcbiAgICBjb25zdCBzcmNzZXQgPSBzc3JSZXN1bHQ/LnNyY3NldDtcbiAgICBjb25zdCBwbGFjZWhvbGRlclN0eWxlID0gc3NyUmVzdWx0LmNzcz8uaW1nO1xuICAgIGNvbnN0IGNsYXNzTmFtZXMgPSBgJHtzdHlsZXMuaW1hZ2V9ICR7Y2xhc3NOYW1lfWA7XG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgLy8gV2hlbiBpbWFnZSBjb21lcyBmcm9tIGNhY2hlIG9uTG9hZCBub3QgdHJpZ2dlciBvbiBuYXRpdmUgSFRNTCBlbGVtZW50XG4gICAgICAgIGNvbnN0IGltZ0VsZW1lbnQgPSBpbWFnZVJlZi5jdXJyZW50O1xuICAgICAgICBpZiAob25Mb2FkICYmIGltZ0VsZW1lbnQ/LmN1cnJlbnRTcmMgJiYgaW1nRWxlbWVudD8uY29tcGxldGUpIHtcbiAgICAgICAgICAgIG9uTG9hZCh7XG4gICAgICAgICAgICAgICAgdGFyZ2V0OiBpbWdFbGVtZW50LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICAgIH0sIFtdKTtcbiAgICBjb25zdCBtYXhXaWR0aCA9IHNzclJlc3VsdCAmJiAhc3NyUmVzdWx0Py50cmFuc2Zvcm1lZFxuICAgICAgICA/IGBtYXgoJHt3aWR0aH1weCwgMTAwJSlgXG4gICAgICAgIDogdGFyZ2V0V2lkdGhcbiAgICAgICAgICAgID8gYCR7dGFyZ2V0V2lkdGh9cHhgXG4gICAgICAgICAgICA6IG51bGw7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwid293LWltYWdlXCIsIHsgaWQ6IGlkLCBjbGFzczogY2xhc3NOYW1lcywgXCJkYXRhLWltYWdlLWluZm9cIjogaW1hZ2VJbmZvLCBcImRhdGEtbW90aW9uLXBhcnRcIjogYEJHX0lNRyAke2NvbnRhaW5lcklkfWAsIFwiZGF0YS1iZy1lZmZlY3QtbmFtZVwiOiBiZ0VmZmVjdE5hbWUsIFwiZGF0YS1oYXMtc3NyLXNyY1wiOiBoYXNTc3JTcmMsIFwiZGF0YS1hbmltYXRlLWJsdXJcIjogIWlzU0VPQm90ICYmIGlzTFFJUCAmJiBoYXNCbHVyVHJhbnNpdGlvbiA/ICcnIDogdW5kZWZpbmVkLCBcImRhdGEtaXMtcmVzcG9uc2l2ZVwiOiBpc0ZsdWlkTGF5b3V0ID8gJ3RydWUnIDogdW5kZWZpbmVkLCBzdHlsZTogbWF4V2lkdGggPyB7ICctLXdpeC1pbWctbWF4LXdpZHRoJzogbWF4V2lkdGggfSA6IHt9IH0sXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIiwgeyBzcmM6IHNyYywgcmVmOiBpbWFnZVJlZiwgYWx0OiBhbHQgfHwgJycsIHJvbGU6IHJvbGUsIHN0eWxlOiB7IC4uLnBsYWNlaG9sZGVyU3R5bGUsIC4uLmltYWdlU3R5bGVzIH0sIG9uTG9hZDogb25Mb2FkLCBvbkVycm9yOiBvbkVycm9yLCB3aWR0aDogY29udGFpbmVyV2lkdGggPyBjb250YWluZXJXaWR0aCA6IHVuZGVmaW5lZCwgaGVpZ2h0OiBjb250YWluZXJIZWlnaHQgPyBjb250YWluZXJIZWlnaHQgOiB1bmRlZmluZWQsIC4uLnNvY2lhbEF0dHJzLCBzcmNTZXQ6IGlzSW5GaXJzdEZvbGRcbiAgICAgICAgICAgICAgICA/IHNyY3NldD8uZHByXG4gICAgICAgICAgICAgICAgICAgID8ubWFwKChzKSA9PiBTQ0hFTUVfUkUudGVzdChzKSA/IHMgOiBgJHtTVEFUSUNfTUVESUFfVVJMfSR7c31gKVxuICAgICAgICAgICAgICAgICAgICAuam9pbignLCAnKVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLCBcbiAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgZmV0Y2hwcmlvcml0eSB0eXBlIHNob3VsZCB3b3JrIGluIHJlYWN0ID4gMTguMyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC8yNTkyN1xuICAgICAgICAgICAgZmV0Y2hwcmlvcml0eTogaXNJbkZpcnN0Rm9sZCA/ICdoaWdoJyA6IHVuZGVmaW5lZCwgbG9hZGluZzogaXNJbkZpcnN0Rm9sZCA9PT0gZmFsc2UgPyAnbGF6eScgOiB1bmRlZmluZWQsIFxuICAgICAgICAgICAgLy8gVGhlIHNyYyBhdHRyaWJ1dGUgdHJpZ2dlcnMgYSBtaXNtYXRjaCB3YXJuaW5nIGJlY2F1c2Ugd293LWltYWdlIHVwZGF0ZXMgaXRzIHNyYyBvdXRzaWRlIG9mIHRoZSBSZWFjdCBsaWZlY3ljbGUuIFRoaXMgY2F1c2VzIFJlYWN0IHRvIHJldGFpbiB0aGUgb2xkIHZhbHVlIGluIHRoZSB2aXJ0dWFsIERPTSwgd2hpY2ggY291bGQgcG90ZW50aWFsbHkgbGVhZCB0byBhIGJ1ZyB3aGVyZSB0aGUgb2xkIHZhbHVlIGlzIHJlLXJlbmRlcmVkIGR1cmluZyB1cGRhdGVzLiBIb3dldmVyLCB3ZeKAmXJlIGNvbmZpZGVudCB0aGF0IHRoaXMgaXNzdWUgaXMgbm90IHJlcHJvZHVjaW5nIGluIGN1cnJlbnQgKDE2LTE4KSBSZWFjdCB2ZXJzaW9uc1xuICAgICAgICAgICAgc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nOiB0cnVlIH0pKSk7XG59O1xuZXhwb3J0IHsgSW1hZ2UsIGltYWdlS2l0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1JbWFnZS5qcy5tYXAiLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbmV4cG9ydCBkZWZhdWx0IHtcImltYWdlXCI6XCJUajAxaGhcIn07IiwiJ3VzZS1jbGllbnQnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgSW1hZ2UgYXMgUGl4ZWxQZXJmZWN0SW1hZ2UgfSBmcm9tICdAd2l4L2ltYWdlJztcbmltcG9ydCB0eXBlIHsgSW1hZ2VQcm9wcyB9IGZyb20gJ0B3aXgvaW1hZ2UnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlL0ltYWdlLm1vZHVsZS5zY3NzJztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHR5cGUgeyBSZXNwb25zaXZlSW1hZ2VQcm9wcyB9IGZyb20gJ0B3aXgvZWRpdG9yLWVsZW1lbnRzLWRlZmluaXRpb25zJztcblxuY29uc3QgSW1hZ2U6IFJlYWN0LkZDPFxuICBJbWFnZVByb3BzICYge1xuICAgIHJlc3BvbnNpdmVJbWFnZVByb3BzPzogUmVzcG9uc2l2ZUltYWdlUHJvcHM7XG4gICAgem9vbWVkSW1hZ2VSZXNwb25zaXZlT3ZlcnJpZGU/OiBSZXNwb25zaXZlSW1hZ2VQcm9wcztcbiAgfVxuPiA9IHByb3BzID0+IHtcbiAgY29uc3Qge1xuICAgIGlkLFxuICAgIGFsdCxcbiAgICByb2xlLFxuICAgIGNsYXNzTmFtZSxcbiAgICBpbWFnZVN0eWxlcyA9IHt9LFxuICAgIHRhcmdldFdpZHRoLFxuICAgIHRhcmdldEhlaWdodCxcbiAgICBvbkxvYWQsXG4gICAgb25FcnJvcixcbiAgICBjb250YWluZXJXaWR0aCxcbiAgICBjb250YWluZXJIZWlnaHQsXG4gICAgaXNJbkZpcnN0Rm9sZCxcbiAgICBzb2NpYWxBdHRycyxcbiAgICBza2lwTWVhc3VyZSxcbiAgICByZXNwb25zaXZlSW1hZ2VQcm9wcyxcbiAgICB6b29tZWRJbWFnZVJlc3BvbnNpdmVPdmVycmlkZSxcbiAgICBkaXNwbGF5TW9kZSxcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IGVmZmVjdGl2ZVdpZHRoID0gdGFyZ2V0V2lkdGggfHwgY29udGFpbmVyV2lkdGg7XG4gIGNvbnN0IGVmZmVjdGl2ZUhlaWdodCA9IHRhcmdldEhlaWdodCB8fCBjb250YWluZXJIZWlnaHQ7XG5cbiAgY29uc3QgeyBmYWxsYmFja1NyYywgc3Jjc2V0LCBzb3VyY2VzLCBjc3MgfSA9IHJlc3BvbnNpdmVJbWFnZVByb3BzIHx8IHt9O1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0LCAuLi5yZXNwb25zaXZlSW1nQ3NzTm9IZWlnaHRBbmRXaWR0aCB9ID1cbiAgICByZXNwb25zaXZlSW1hZ2VQcm9wcz8uY3NzPy5pbWcgfHwge307XG5cbiAgY29uc3QgcmVzcG9uc2l2ZUltYWdlc1N0eWxlID1cbiAgICBkaXNwbGF5TW9kZSA9PT0gJ29yaWdpbmFsX3NpemUnXG4gICAgICA/IHJlc3BvbnNpdmVJbWFnZVByb3BzPy5jc3M/LmltZ1xuICAgICAgOiByZXNwb25zaXZlSW1nQ3NzTm9IZWlnaHRBbmRXaWR0aDtcblxuICBpZiAoZmFsbGJhY2tTcmMgJiYgc3Jjc2V0ICYmIGNzcykge1xuICAgIHJldHVybiAoXG4gICAgICA8aW1nXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgZmV0Y2hwcmlvcml0eSB0eXBlIHNob3VsZCB3b3JrIGluIHJlYWN0ID4gMTguMyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC8yNTkyN1xuICAgICAgICBmZXRjaHByaW9yaXR5PXtpc0luRmlyc3RGb2xkID8gJ2hpZ2gnIDogdW5kZWZpbmVkfVxuICAgICAgICBsb2FkaW5nPXtpc0luRmlyc3RGb2xkID09PSBmYWxzZSA/ICdsYXp5JyA6IHVuZGVmaW5lZH1cbiAgICAgICAgc2l6ZXM9e2Ake2VmZmVjdGl2ZVdpZHRofXB4YH1cbiAgICAgICAgc3JjU2V0PXtcbiAgICAgICAgICBza2lwTWVhc3VyZVxuICAgICAgICAgICAgPyB6b29tZWRJbWFnZVJlc3BvbnNpdmVPdmVycmlkZT8uc3Jjc2V0XG4gICAgICAgICAgICA6IHJlc3BvbnNpdmVJbWFnZVByb3BzPy5zcmNzZXRcbiAgICAgICAgfVxuICAgICAgICBpZD17aWR9XG4gICAgICAgIHNyYz17ZmFsbGJhY2tTcmN9XG4gICAgICAgIGFsdD17YWx0IHx8ICcnfVxuICAgICAgICByb2xlPXtyb2xlfVxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIC4uLmltYWdlU3R5bGVzLFxuICAgICAgICAgIC4uLihza2lwTWVhc3VyZVxuICAgICAgICAgICAgPyB7IC4uLnpvb21lZEltYWdlUmVzcG9uc2l2ZU92ZXJyaWRlPy5jc3M/LmltZyB9XG4gICAgICAgICAgICA6IHsgLi4ucmVzcG9uc2l2ZUltYWdlc1N0eWxlIH0pLFxuICAgICAgICB9fVxuICAgICAgICBvbkxvYWQ9e29uTG9hZH1cbiAgICAgICAgb25FcnJvcj17b25FcnJvcn1cbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKGNsYXNzTmFtZSwgc3R5bGVzLmltYWdlKX1cbiAgICAgICAgd2lkdGg9e2VmZmVjdGl2ZVdpZHRofVxuICAgICAgICBoZWlnaHQ9e2VmZmVjdGl2ZUhlaWdodH1cbiAgICAgICAgey4uLnNvY2lhbEF0dHJzfVxuICAgICAgLz5cbiAgICApO1xuICB9XG5cbiAgaWYgKGZhbGxiYWNrU3JjICYmIHNvdXJjZXMgJiYgY3NzKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxwaWN0dXJlPlxuICAgICAgICB7c291cmNlcy5tYXAoXG4gICAgICAgICAgKHtcbiAgICAgICAgICAgIHNyY3NldDogc291cmNlU3Jjc2V0LFxuICAgICAgICAgICAgbWVkaWEsXG4gICAgICAgICAgICBzaXplcyxcbiAgICAgICAgICB9OiB7XG4gICAgICAgICAgICBzcmNzZXQ6IHN0cmluZztcbiAgICAgICAgICAgIG1lZGlhOiBzdHJpbmc7XG4gICAgICAgICAgICBzaXplczogc3RyaW5nO1xuICAgICAgICAgIH0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxzb3VyY2VcbiAgICAgICAgICAgICAgICBrZXk9e21lZGlhfVxuICAgICAgICAgICAgICAgIHNyY1NldD17c291cmNlU3Jjc2V0fVxuICAgICAgICAgICAgICAgIG1lZGlhPXttZWRpYX1cbiAgICAgICAgICAgICAgICBzaXplcz17c2l6ZXN9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0sXG4gICAgICAgICl9XG4gICAgICAgIDxpbWdcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGZldGNocHJpb3JpdHkgdHlwZSBzaG91bGQgd29yayBpbiByZWFjdCA+IDE4LjMgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvMjU5MjdcbiAgICAgICAgICBmZXRjaHByaW9yaXR5PXtpc0luRmlyc3RGb2xkID8gJ2hpZ2gnIDogdW5kZWZpbmVkfVxuICAgICAgICAgIGxvYWRpbmc9e2lzSW5GaXJzdEZvbGQgPT09IGZhbHNlID8gJ2xhenknIDogdW5kZWZpbmVkfVxuICAgICAgICAgIGlkPXtpZH1cbiAgICAgICAgICBzcmM9e3NvdXJjZXNbMF0uZmFsbGJhY2tTcmN9XG4gICAgICAgICAgYWx0PXthbHQgfHwgJyd9XG4gICAgICAgICAgcm9sZT17cm9sZX1cbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgLi4uaW1hZ2VTdHlsZXMsXG4gICAgICAgICAgICBvYmplY3RGaXQ6IHNvdXJjZXNbMF0uaW1nU3R5bGUub2JqZWN0Rml0LFxuICAgICAgICAgICAgb2JqZWN0UG9zaXRpb246IHNvdXJjZXNbMF0uaW1nU3R5bGUub2JqZWN0UG9zaXRpb24sXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkxvYWQ9e29uTG9hZH1cbiAgICAgICAgICBvbkVycm9yPXtvbkVycm9yfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhjbGFzc05hbWUsIHN0eWxlcy5pbWFnZSl9XG4gICAgICAgICAgd2lkdGg9e2VmZmVjdGl2ZVdpZHRofVxuICAgICAgICAgIGhlaWdodD17ZWZmZWN0aXZlSGVpZ2h0fVxuICAgICAgICAgIHsuLi5zb2NpYWxBdHRyc31cbiAgICAgICAgLz5cbiAgICAgIDwvcGljdHVyZT5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIDxQaXhlbFBlcmZlY3RJbWFnZSB7Li4ucHJvcHN9IC8+O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgSW1hZ2U7XG4iLCIndXNlLWNsaWVudCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7IEJhY2tncm91bmRJbWFnZVByb3BzIH0gZnJvbSAnLi4vQmFja2dyb3VuZEltYWdlLnR5cGVzJztcblxuY29uc3QgZGVmYXVsdElkUHJlZml4ID0gJ2JnSW1nXyc7XG5cbmNvbnN0IEJhY2tncm91bmRJbWFnZTogUmVhY3QuRkM8QmFja2dyb3VuZEltYWdlUHJvcHM+ID0gcHJvcHMgPT4ge1xuICBjb25zdCB7XG4gICAgY2xhc3NOYW1lLFxuICAgIGN1c3RvbUlkUHJlZml4LFxuICAgIGdldFBsYWNlaG9sZGVyLFxuICAgIGhhc0FuaW1hdGlvbixcbiAgICAuLi5iYWNrZ3JvdW5kSW1hZ2VcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHRpbGVJbWFnZWRJbmZvU3RyaW5nID0gUmVhY3QudXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBjb250YWluZXJJZDogYmFja2dyb3VuZEltYWdlLmNvbnRhaW5lcklkLFxuICAgICAgICBhbGlnblR5cGU6IGJhY2tncm91bmRJbWFnZS5hbGlnblR5cGUsXG4gICAgICAgIGZpdHRpbmdUeXBlOiBiYWNrZ3JvdW5kSW1hZ2UuZGlzcGxheU1vZGUsXG4gICAgICAgIGhhc0FuaW1hdGlvbixcbiAgICAgICAgaW1hZ2VEYXRhOiB7XG4gICAgICAgICAgd2lkdGg6IGJhY2tncm91bmRJbWFnZS53aWR0aCxcbiAgICAgICAgICBoZWlnaHQ6IGJhY2tncm91bmRJbWFnZS5oZWlnaHQsXG4gICAgICAgICAgdXJpOiBiYWNrZ3JvdW5kSW1hZ2UudXJpLFxuICAgICAgICAgIG5hbWU6IGJhY2tncm91bmRJbWFnZS5uYW1lLFxuICAgICAgICAgIC4uLihiYWNrZ3JvdW5kSW1hZ2UucXVhbGl0eSAmJiB7IHF1YWxpdHk6IGJhY2tncm91bmRJbWFnZS5xdWFsaXR5IH0pLFxuICAgICAgICAgIGRpc3BsYXlNb2RlOiBiYWNrZ3JvdW5kSW1hZ2UuZGlzcGxheU1vZGUsXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICBbYmFja2dyb3VuZEltYWdlLCBoYXNBbmltYXRpb25dLFxuICApO1xuXG4gIGNvbnN0IGltYWdlUGxhY2Vob2xkZXJEYXRhID0gUmVhY3QudXNlUmVmPGFueT4obnVsbCk7XG5cbiAgaWYgKCFpbWFnZVBsYWNlaG9sZGVyRGF0YS5jdXJyZW50KSB7XG4gICAgaW1hZ2VQbGFjZWhvbGRlckRhdGEuY3VycmVudCA9IGdldFBsYWNlaG9sZGVyXG4gICAgICA/IGdldFBsYWNlaG9sZGVyKHtcbiAgICAgICAgICBmaXR0aW5nVHlwZTogYmFja2dyb3VuZEltYWdlLmRpc3BsYXlNb2RlLFxuICAgICAgICAgIHNyYzoge1xuICAgICAgICAgICAgaWQ6IGJhY2tncm91bmRJbWFnZS51cmksXG4gICAgICAgICAgICB3aWR0aDogYmFja2dyb3VuZEltYWdlLndpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiBiYWNrZ3JvdW5kSW1hZ2UuaGVpZ2h0LFxuICAgICAgICAgICAgbmFtZTogYmFja2dyb3VuZEltYWdlLm5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0YXJnZXQ6IHtcbiAgICAgICAgICAgIHdpZHRoOiBiYWNrZ3JvdW5kSW1hZ2UuY29udGFpbmVyV2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IGJhY2tncm91bmRJbWFnZS5jb250YWluZXJIZWlnaHQsXG4gICAgICAgICAgICBhbGlnbm1lbnQ6IGJhY2tncm91bmRJbWFnZS5hbGlnblR5cGUsXG4gICAgICAgICAgICBodG1sVGFnOiAnYmcnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgaGFzQW5pbWF0aW9uLFxuICAgICAgICAgICAgYWxsb3dBbmltYXRlZFRyYW5zZm9ybTogZmFsc2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgIDogLy8gdG8ga2VlcCBhbiBlbXB0eSBwbGFjZWhvbGRlciBkYXRhXG4gICAgICAgIHtcbiAgICAgICAgICB1cmk6IHVuZGVmaW5lZCwgLy8gdG8gcmVtb3ZlIHNyYyBhdHRyaWJ1dGUgY29tcGxldGVseVxuICAgICAgICAgIGNzczogeyBpbWc6IHt9IH0sXG4gICAgICAgICAgYXR0cjogeyBpbWc6IHt9LCBjb250YWluZXI6IHt9IH0sXG4gICAgICAgIH07XG4gIH1cblxuICBjb25zdCBjdXJyZW50UGxhY2Vob2xkZXIgPSBpbWFnZVBsYWNlaG9sZGVyRGF0YS5jdXJyZW50O1xuXG4gIGNvbnN0IHNyYyA9IGN1cnJlbnRQbGFjZWhvbGRlcj8udXJpID8/ICcnO1xuICBjb25zdCBwbGFjZWhvbGRlclN0eWxlID0gY3VycmVudFBsYWNlaG9sZGVyLmNzcz8uY29udGFpbmVyID8/IHt9O1xuXG4gIGNvbnN0IHBsYWNlaG9sZGVyID0gT2JqZWN0LmFzc2lnbihcbiAgICBzcmNcbiAgICAgID8ge1xuICAgICAgICAgIGJhY2tncm91bmRJbWFnZTogYHVybCgke3NyY30pYCxcbiAgICAgICAgfVxuICAgICAgOiB7fSxcbiAgICBwbGFjZWhvbGRlclN0eWxlLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgLy8gXHRDdXN0b20gZWxlbWVudCBkZWZpbmVkIGluOiBodHRwczovL2dpdGh1Yi5jb20vd2l4LXByaXZhdGUvc2FudGEtY29yZS9ibG9iL21hc3Rlci93aXgtY3VzdG9tLWVsZW1lbnRzL3NyYy9lbGVtZW50cy93aXhCZ0ltYWdlL3dpeEJnSW1hZ2UuanNcbiAgICA8d2l4LWJnLWltYWdlXG4gICAgICBpZD17YCR7Y3VzdG9tSWRQcmVmaXggfHwgZGVmYXVsdElkUHJlZml4fSR7YmFja2dyb3VuZEltYWdlLmNvbnRhaW5lcklkfWB9XG4gICAgICBjbGFzcz17Y2xhc3NOYW1lfVxuICAgICAgc3R5bGU9e3BsYWNlaG9sZGVyfVxuICAgICAgZGF0YS10aWxlZC1pbWFnZS1pbmZvPXt0aWxlSW1hZ2VkSW5mb1N0cmluZ31cbiAgICAgIGRhdGEtaGFzLWJnLXNjcm9sbC1lZmZlY3Q9e2JhY2tncm91bmRJbWFnZS5oYXNCZ1Njcm9sbEVmZmVjdCB8fCAnJ31cbiAgICAgIGRhdGEtYmctZWZmZWN0LW5hbWU9e2JhY2tncm91bmRJbWFnZS5iZ0VmZmVjdE5hbWUgfHwgJyd9XG4gICAgICBkYXRhLW1vdGlvbi1wYXJ0PXtgQkdfSU1HICR7YmFja2dyb3VuZEltYWdlLmNvbnRhaW5lcklkfWB9XG4gICAgLz5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEJhY2tncm91bmRJbWFnZTtcbiIsImV4cG9ydCBjb25zdCBDT01QX0lEX1BMQUNFSE9MREVSID0gJzwlPSBjb21wSWQgJT4nO1xuY29uc3QgQ09NUF9JRF9QTEFDRUhPTERFUl9SRUdFWCA9IG5ldyBSZWdFeHAoQ09NUF9JRF9QTEFDRUhPTERFUiwgJ2cnKTtcbmV4cG9ydCBjb25zdCByZXBsYWNlQ29tcElkUGxhY2Vob2xkZXIgPSAoc3RyLCBjb21wSWQpID0+IHN0ci5yZXBsYWNlKENPTVBfSURfUExBQ0VIT0xERVJfUkVHRVgsIGNvbXBJZCk7XG5leHBvcnQgY29uc3QgcmVwbGFjZUNvbXBJZFBsYWNlaG9sZGVySW5TdmdDb250ZW50ID0gKHZlY3RvckltYWdlUHJvcHMsIGlkKSA9PiB7XG4gICAgaWYgKHZlY3RvckltYWdlUHJvcHMgJiYgdmVjdG9ySW1hZ2VQcm9wcy5zdmdDb250ZW50KSB7XG4gICAgICAgIHZlY3RvckltYWdlUHJvcHMuc3ZnQ29udGVudCA9IHJlcGxhY2VDb21wSWRQbGFjZWhvbGRlcih2ZWN0b3JJbWFnZVByb3BzLnN2Z0NvbnRlbnQsIGlkKTtcbiAgICB9XG59O1xuZXhwb3J0IGNvbnN0IGdldEZpbHRlckVmZmVjdFN0eWxlID0gKGlkLCBmaWx0ZXJFZmZlY3RTdmdVcmwpID0+IHtcbiAgICByZXR1cm4gZmlsdGVyRWZmZWN0U3ZnVXJsXG4gICAgICAgID8ge1xuICAgICAgICAgICAgJy0tZmlsdGVyLWVmZmVjdC1zdmctdXJsJzogcmVwbGFjZUNvbXBJZFBsYWNlaG9sZGVyKGZpbHRlckVmZmVjdFN2Z1VybCwgaWQpLFxuICAgICAgICB9XG4gICAgICAgIDoge307XG59O1xuZXhwb3J0IGNvbnN0IHJlcGxhY2VDb250ZW50SWRzID0gKHN2ZywgY29tcElkKSA9PiB7XG4gICAgY29uc3QgaWRNYXAgPSB7fTtcbiAgICAvLyBuZWVkIHRvIGFjY291bnQgZm9yIGNvbXBJZCBwbGFjZWhvbGRlciBgPCU9IGNvbXBJZCAlPmBcbiAgICBjb25zdCByZXN1bHQgPSBzdmcucmVwbGFjZSgvXFxzaWQ9XCIoW15cIjxdKylcIi9nLCAobWF0Y2gsIGlkKSA9PiB7XG4gICAgICAgIGNvbnN0IHVuaXF1ZSA9IGlkLmVuZHNXaXRoKGNvbXBJZCkgPyBpZCA6IGAke2lkfV8ke2NvbXBJZH1gO1xuICAgICAgICBpZE1hcFtpZF0gPSB1bmlxdWU7XG4gICAgICAgIHJldHVybiBgIGlkPVwiJHt1bmlxdWV9XCJgO1xuICAgIH0pO1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhpZE1hcCkucmVkdWNlKChjdXJyZW50LCBrZXkpID0+IGN1cnJlbnQucmVwbGFjZShuZXcgUmVnRXhwKGAoJHtrZXl9KSg/IV8ke2NvbXBJZH0pYCwgJ2cnKSwgaWRNYXBba2V5XSksIHJlc3VsdCk7XG59O1xuZXhwb3J0IGNvbnN0IG1vZGlmeUExMVlBdHRyaWJ1dGVzID0gKHN2ZywgYXJpYUxhYmVsKSA9PiB7XG4gICAgbGV0IHJlc3VsdCA9IHN2ZztcbiAgICBjb25zdCBhcmlhTGFiZWxNYXRjaGVyID0gL2FyaWEtbGFiZWw9XCJbXlwiXSpcIi87XG4gICAgY29uc3QgYXJpYUhpZGRlbk1hdGNoZXIgPSAvYXJpYS1oaWRkZW49XCI/dHJ1ZVwiPy87XG4gICAgY29uc3Qgcm9sZU1hdGNoZXIgPSAvcm9sZT1cIj9wcmVzZW50YXRpb25cIj8vO1xuICAgIC8vIGlmIHRoZSBzdmcgY29udGFpbnMgYW4gYXJpYS1sYWJlbCBtb2RpZnkgaXQsIGVsc2UgYXBwZW5kIGl0XG4gICAgaWYgKHN2Zy5tYXRjaChhcmlhTGFiZWxNYXRjaGVyKSkge1xuICAgICAgICByZXN1bHQgPSBzdmcucmVwbGFjZShhcmlhTGFiZWxNYXRjaGVyLCBgYXJpYS1sYWJlbD1cIiR7YXJpYUxhYmVsfVwiYCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXN1bHQgPSBzdmcucmVwbGFjZSgvKDxzdmdbXj5dKik+LywgYCQxIGFyaWEtbGFiZWw9XCIke2FyaWFMYWJlbH1cIj5gKTtcbiAgICB9XG4gICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoYXJpYUhpZGRlbk1hdGNoZXIsICcnKTtcbiAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZShyb2xlTWF0Y2hlciwgYHJvbGU9XCJpbWdcImApO1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dmVjdG9ySW1hZ2VVdGlscy5qcy5tYXAiLCJjb25zdCBIT1ZFUl9TVUZGSVggPSAnOmhvdmVyJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICBnZXREZWZhdWx0SWQ6IChpZD86IHN0cmluZykgPT4gaWQ/LnJlcGxhY2UoSE9WRVJfU1VGRklYLCAnJyksXG59O1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQgZGVmYXVsdCB7XCJ2aWRlby1jb250YWluZXJcIjpcImJYOU9fU1wiLFwidmlkZW9Db250YWluZXJcIjpcImJYOU9fU1wiLFwidmlkZW8tcG9zdGVyXCI6XCJaX3dDd3JcIixcInZpZGVvUG9zdGVyXCI6XCJaX3dDd3JcIixcInZpZGVvLXBvc3Rlci1pbWdcIjpcIkp4a19VTFwiLFwidmlkZW9Qb3N0ZXJJbWdcIjpcIkp4a19VTFwiLFwidmlkZW9cIjpcIks4TVNyYVwiLFwiZmlsdGVyLWVmZmVjdC1zdmdcIjpcIllUYjNiNFwiLFwiZmlsdGVyRWZmZWN0U3ZnXCI6XCJZVGIzYjRcIn07IiwiJ3VzZS1jbGllbnQnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyByZXBsYWNlQ29tcElkUGxhY2Vob2xkZXIgfSBmcm9tICdAd2l4L2VkaXRvci1lbGVtZW50cy1jb21tb24tdXRpbHMnO1xuaW1wb3J0IEltYWdlIGZyb20gJy4uLy4uL0ltYWdlL3ZpZXdlci9JbWFnZSc7XG5pbXBvcnQgdHlwZSB7IElWaWRlb1Byb3BzIH0gZnJvbSAnLi4vVmlkZW8udHlwZXMnO1xuaW1wb3J0IGhvdmVyQm94VXRpbHMgZnJvbSAnLi4vLi4vTWVkaWFDb250YWluZXJzL0hvdmVyQm94L3V0aWxzJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZS9WaWRlby5zY3NzJztcblxuY29uc3QgVklERU9fQ0xBU1NfRk9SX0xBWU9VVCA9ICdiZ1ZpZGVvJztcbmNvbnN0IFZJREVPX1BPU1RFUl9DTEFTU19GT1JfTEFZT1VUID0gJ2JnVmlkZW9wb3N0ZXInO1xuXG5jb25zdCBQT1NURVJfSU1BR0VfUVVBTElUWSA9IHtcbiAgcXVhbGl0eToge1xuICAgIHVuc2hhcnBNYXNrOiB7XG4gICAgICByYWRpdXM6IDAuMzMsXG4gICAgICBhbW91bnQ6IDEuMCxcbiAgICAgIHRocmVzaG9sZDogMC4wLFxuICAgIH0sXG4gIH0sXG4gIGRldmljZVBpeGVsUmF0aW86IDEsXG59O1xuXG5jb25zdCBWaWRlbzogUmVhY3QuRkM8SVZpZGVvUHJvcHM+ID0gcHJvcHMgPT4ge1xuICBjb25zdCB7XG4gICAgaWQsXG4gICAgdmlkZW9SZWYsXG4gICAgdmlkZW9JbmZvLFxuICAgIHBvc3RlckltYWdlSW5mbyxcbiAgICBtdXRlZCxcbiAgICBwcmVsb2FkLFxuICAgIGxvb3AsXG4gICAgYWx0LFxuICAgIGlzVmlkZW9FbmFibGVkLFxuICAgIGdldFBsYWNlaG9sZGVyLFxuICAgIGV4dHJhQ2xhc3NOYW1lID0gJycsXG4gIH0gPSBwcm9wcztcblxuICAvLyBmaXggY29udGFpbmVySWQgdG8gc3VwcG9ydCBob3ZlckJveCBjb21wb25lbnRcbiAgdmlkZW9JbmZvLmNvbnRhaW5lcklkID0gaG92ZXJCb3hVdGlscy5nZXREZWZhdWx0SWQodmlkZW9JbmZvLmNvbnRhaW5lcklkKSE7XG5cbiAgY29uc3QgdmlkZW9JbmZvU3RyaW5nID0gUmVhY3QudXNlTWVtbyhcbiAgICAoKSA9PiBKU09OLnN0cmluZ2lmeSh2aWRlb0luZm8pLFxuICAgIFt2aWRlb0luZm9dLFxuICApO1xuICBjb25zdCBWaWRlb1Bvc3RlckltYWdlID0gKFxuICAgIDw+XG4gICAgICB7cG9zdGVySW1hZ2VJbmZvLmZpbHRlckVmZmVjdFN2Z1N0cmluZyAmJiAoXG4gICAgICAgIDxzdmdcbiAgICAgICAgICBpZD17YHN2Z18ke3ZpZGVvSW5mby5jb250YWluZXJJZH1gfVxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckVmZmVjdFN2Z31cbiAgICAgICAgPlxuICAgICAgICAgIDxkZWZzXG4gICAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17e1xuICAgICAgICAgICAgICBfX2h0bWw6IHJlcGxhY2VDb21wSWRQbGFjZWhvbGRlcihcbiAgICAgICAgICAgICAgICBwb3N0ZXJJbWFnZUluZm8uZmlsdGVyRWZmZWN0U3ZnU3RyaW5nLFxuICAgICAgICAgICAgICAgIHZpZGVvSW5mby5jb250YWluZXJJZCEsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgKX1cbiAgICAgIDxJbWFnZVxuICAgICAgICBrZXk9e2Ake3ZpZGVvSW5mby52aWRlb0lkfV9pbWdgfVxuICAgICAgICBpZD17YCR7cG9zdGVySW1hZ2VJbmZvLmNvbnRhaW5lcklkfV9pbWdgfVxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXG4gICAgICAgICAgc3R5bGVzLnZpZGVvUG9zdGVyLFxuICAgICAgICAgIHN0eWxlcy52aWRlb1Bvc3RlckltZyxcbiAgICAgICAgICBWSURFT19QT1NURVJfQ0xBU1NfRk9SX0xBWU9VVCxcbiAgICAgICAgICBleHRyYUNsYXNzTmFtZSxcbiAgICAgICAgKX1cbiAgICAgICAgaW1hZ2VTdHlsZXM9e3sgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTAwJScgfX1cbiAgICAgICAgey4uLnBvc3RlckltYWdlSW5mb31cbiAgICAgICAgey4uLlBPU1RFUl9JTUFHRV9RVUFMSVRZfVxuICAgICAgICBnZXRQbGFjZWhvbGRlcj17Z2V0UGxhY2Vob2xkZXJ9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xuXG4gIGlmICghaXNWaWRlb0VuYWJsZWQpIHtcbiAgICByZXR1cm4gVmlkZW9Qb3N0ZXJJbWFnZTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgLy8gQ3VzdG9tIGVsZW1lbnQgZGVmaW5lZCBpbjogaHR0cHM6Ly9naXRodWIuY29tL3dpeC1wcml2YXRlL3NhbnRhLWNvcmUvYmxvYi9tYXN0ZXIvd2l4LWN1c3RvbS1lbGVtZW50cy9zcmMvZWxlbWVudHMvd2l4VmlkZW8vd2l4VmlkZW8uanNcbiAgICA8d2l4LXZpZGVvXG4gICAgICBpZD17aWR9XG4gICAgICBkYXRhLXZpZGVvLWluZm89e3ZpZGVvSW5mb1N0cmluZ31cbiAgICAgIGRhdGEtbW90aW9uLXBhcnQ9e2BCR19JTUcgJHt2aWRlb0luZm8uY29udGFpbmVySWR9YH1cbiAgICAgIGNsYXNzPXtjbGFzc05hbWVzKFxuICAgICAgICBzdHlsZXMudmlkZW9Db250YWluZXIsXG4gICAgICAgIFZJREVPX0NMQVNTX0ZPUl9MQVlPVVQsXG4gICAgICAgIGV4dHJhQ2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICA+XG4gICAgICA8dmlkZW9cbiAgICAgICAga2V5PXtgJHt2aWRlb0luZm8udmlkZW9JZH1fdmlkZW9gfVxuICAgICAgICByZWY9e3ZpZGVvUmVmfVxuICAgICAgICBpZD17YCR7dmlkZW9JbmZvLmNvbnRhaW5lcklkfV92aWRlb2B9XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnZpZGVvfVxuICAgICAgICBjcm9zc09yaWdpbj1cImFub255bW91c1wiXG4gICAgICAgIGFyaWEtbGFiZWw9e2FsdH1cbiAgICAgICAgcGxheXNJbmxpbmU9e3RydWV9XG4gICAgICAgIHByZWxvYWQ9e3ByZWxvYWR9XG4gICAgICAgIG11dGVkPXttdXRlZH1cbiAgICAgICAgbG9vcD17bG9vcH1cbiAgICAgIC8+XG4gICAgICB7VmlkZW9Qb3N0ZXJJbWFnZX1cbiAgICA8L3dpeC12aWRlbz5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFZpZGVvO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQgZGVmYXVsdCB7XCJtZWRpYS1jb250YWluZXJcIjpcIlNVejBXS1wiLFwibWVkaWFDb250YWluZXJcIjpcIlNVejBXS1wifTsiLCIndXNlLWNsaWVudCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7IEJhY2tncm91bmRNZWRpYVByb3BzIH0gZnJvbSAnLi4vQmFja2dyb3VuZE1lZGlhLnR5cGVzJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZS9CYWNrZ3JvdW5kTWVkaWEuc2Nzcyc7XG5cbmNvbnN0IEJhY2tncm91bmRNZWRpYTogUmVhY3QuRkM8QmFja2dyb3VuZE1lZGlhUHJvcHM+ID0gcHJvcHMgPT4ge1xuICBjb25zdCB7XG4gICAgaWQsXG4gICAgY29udGFpbmVySWQsXG4gICAgcGFnZUlkLFxuICAgIGNoaWxkcmVuLFxuICAgIGJnRWZmZWN0TmFtZSA9ICcnLFxuICAgIGNvbnRhaW5lclNpemUsXG4gIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIC8vIFx0Q3VzdG9tIGVsZW1lbnQgZGVmaW5lZCBpbjogaHR0cHM6Ly9naXRodWIuY29tL3dpeC1wcml2YXRlL3NhbnRhLWNvcmUvYmxvYi9tYXN0ZXIvd2l4LWN1c3RvbS1lbGVtZW50cy9zcmMvZWxlbWVudHMvd2l4QmdNZWRpYS93aXhCZ01lZGlhLmpzXG4gICAgPHdpeC1iZy1tZWRpYVxuICAgICAgaWQ9e2lkfVxuICAgICAgY2xhc3M9e3N0eWxlcy5tZWRpYUNvbnRhaW5lcn1cbiAgICAgIGRhdGEtY29udGFpbmVyLWlkPXtjb250YWluZXJJZH1cbiAgICAgIGRhdGEtY29udGFpbmVyLXNpemU9e2Ake2NvbnRhaW5lclNpemU/LndpZHRoIHx8IDB9LCAke1xuICAgICAgICBjb250YWluZXJTaXplPy5oZWlnaHQgfHwgMFxuICAgICAgfWB9XG4gICAgICBkYXRhLXBhZ2UtaWQ9e3BhZ2VJZH1cbiAgICAgIGRhdGEtYmctZWZmZWN0LW5hbWU9e2JnRWZmZWN0TmFtZX1cbiAgICAgIGRhdGEtbW90aW9uLXBhcnQ9e2BCR19NRURJQSAke2NvbnRhaW5lcklkfWB9XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvd2l4LWJnLW1lZGlhPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQmFja2dyb3VuZE1lZGlhO1xuIiwiZXhwb3J0IGNvbnN0IFRlc3RJZHMgPSB7XG4gIGJnT3ZlcmxheTogJ2JnT3ZlcmxheScsXG59IGFzIGNvbnN0O1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQgZGVmYXVsdCB7XCJiZy1vdmVybGF5XCI6XCJtNGtoU1BcIixcImJnT3ZlcmxheVwiOlwibTRraFNQXCIsXCJiZy1pbWctb3ZlcmxheVwiOlwiRk54T241XCIsXCJiZ0ltZ092ZXJsYXlcIjpcIkZOeE9uNVwifTsiLCIndXNlLWNsaWVudCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7IEJhY2tncm91bmRPdmVybGF5UHJvcHMgfSBmcm9tICcuLi9CYWNrZ3JvdW5kT3ZlcmxheS50eXBlcyc7XG5pbXBvcnQgeyBUZXN0SWRzIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBCYWNrZ3JvdW5kSW1hZ2UgZnJvbSAnLi4vLi4vQmFja2dyb3VuZEltYWdlL3ZpZXdlci9CYWNrZ3JvdW5kSW1hZ2UnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlL0JhY2tncm91bmRPdmVybGF5LnNjc3MnO1xuXG5jb25zdCBCYWNrZ3JvdW5kT3ZlcmxheTogUmVhY3QuRkM8QmFja2dyb3VuZE92ZXJsYXlQcm9wcz4gPSBwcm9wcyA9PiB7XG4gIGNvbnN0IHsgaW1hZ2VPdmVybGF5IH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxkaXYgZGF0YS10ZXN0aWQ9e1Rlc3RJZHMuYmdPdmVybGF5fSBjbGFzc05hbWU9e3N0eWxlcy5iZ092ZXJsYXl9PlxuICAgICAge2ltYWdlT3ZlcmxheSAmJiAoXG4gICAgICAgIDxCYWNrZ3JvdW5kSW1hZ2VcbiAgICAgICAgICBjdXN0b21JZFByZWZpeD1cImJnSW1nT3ZlcmxheV9cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmJnSW1nT3ZlcmxheX1cbiAgICAgICAgICB7Li4uaW1hZ2VPdmVybGF5fVxuICAgICAgICA+PC9CYWNrZ3JvdW5kSW1hZ2U+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQmFja2dyb3VuZE92ZXJsYXk7XG4iLCJleHBvcnQgY29uc3QgVGVzdElkcyA9IHtcbiAgYmdMYXllcnM6ICdiZ0xheWVycycsXG4gIGNvbG9yVW5kZXJsYXk6ICdjb2xvclVuZGVybGF5JyxcbiAgbWVkaWFQYWRkaW5nOiAnbWVkaWFQYWRkaW5nJyxcbiAgY2FudmFzOiAnY2FudmFzJyxcbn0gYXMgY29uc3Q7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbmV4cG9ydCBkZWZhdWx0IHtcImxheWVycy1jb250YWluZXJcIjpcIk1XNUlXVlwiLFwibGF5ZXJzQ29udGFpbmVyXCI6XCJNVzVJV1ZcIixcImZ1bGwtc2NyZWVuLXNjcm9sbC1lZmZlY3RcIjpcIk4zZWcwc1wiLFwiZnVsbFNjcmVlblNjcm9sbEVmZmVjdFwiOlwiTjNlZzBzXCIsXCJmaWxsLWxheWVyXCI6XCJLdjFhVnRcIixcImZpbGxMYXllclwiOlwiS3YxYVZ0XCIsXCJpbWFnZS1maWxsLWxheWVyXCI6XCJkTFBseFlcIixcImltYWdlRmlsbExheWVyXCI6XCJkTFBseFlcIixcImJnLW1lZGlhXCI6XCJWZ085WWdcIixcImJnTWVkaWFcIjpcIlZnTzlZZ1wiLFwiYmctdW5kZXJsYXlcIjpcIkxXYkFhdlwiLFwiYmdVbmRlcmxheVwiOlwiTFdiQWF2XCIsXCJ2aWRlb0ZpbGxMYXllclwiOlwieUs2YVNDXCIsXCJhbHBoYS1jYW52YXNcIjpcIktfWXhNZFwiLFwiYWxwaGFDYW52YXNcIjpcIktfWXhNZFwiLFwibWVkaWEtcGFkZGluZy1sYXllclwiOlwiTkdqY0pOXCIsXCJtZWRpYVBhZGRpbmdMYXllclwiOlwiTkdqY0pOXCIsXCJ0cmFuc2Zvcm1zXCI6XCJtTkdzVU1cIixcIm1lZGlhLWNhbnZhc1wiOlwiSTh4QTRMXCIsXCJtZWRpYUNhbnZhc1wiOlwiSTh4QTRMXCJ9OyIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBGaWxsTGF5ZXJzUHJvcHMgfSBmcm9tICcuLi9GaWxsTGF5ZXJzLnR5cGVzJztcblxudHlwZSBMb2FkYWJsZVByb3BzID0gUGljazxGaWxsTGF5ZXJzUHJvcHMsICdpbWFnZSc+O1xudHlwZSBVc2VPbkxvYWRQcm9wcyA9IExvYWRhYmxlUHJvcHMgJiBQaWNrPEZpbGxMYXllcnNQcm9wcywgJ29uUmVhZHknPjtcblxuZXhwb3J0IGNvbnN0IHVzZU9uTG9hZHNFdmVudHMgPSAoeyBvblJlYWR5LCBpbWFnZSB9OiBVc2VPbkxvYWRQcm9wcykgPT4ge1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChvblJlYWR5ICYmICFpbWFnZSkge1xuICAgICAgb25SZWFkeSgpO1xuICAgIH1cbiAgfSwgW29uUmVhZHksIGltYWdlXSk7XG4gIHJldHVybiB7XG4gICAgb25JbWFnZUxvYWQ6IChlOiBSZWFjdC5TeW50aGV0aWNFdmVudDxIVE1MSW1hZ2VFbGVtZW50LCBFdmVudD4pID0+IHtcbiAgICAgIGlmIChpbWFnZT8ub25Mb2FkKSB7XG4gICAgICAgIGltYWdlLm9uTG9hZChlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9uUmVhZHkpIHtcbiAgICAgICAgb25SZWFkeSgpO1xuICAgICAgfVxuICAgIH0sXG4gIH07XG59O1xuIiwiJ3VzZS1jbGllbnQnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xzeCc7XG5pbXBvcnQgSW1hZ2UgZnJvbSAnLi4vLi4vSW1hZ2Uvdmlld2VyL0ltYWdlJztcbmltcG9ydCBCYWNrZ3JvdW5kSW1hZ2UgZnJvbSAnLi4vLi4vQmFja2dyb3VuZEltYWdlL3ZpZXdlci9CYWNrZ3JvdW5kSW1hZ2UnO1xuaW1wb3J0IFZpZGVvIGZyb20gJy4uLy4uL1ZpZGVvL3ZpZXdlci9WaWRlbyc7XG5pbXBvcnQgQmFja2dyb3VuZE1lZGlhIGZyb20gJy4uLy4uL0JhY2tncm91bmRNZWRpYS92aWV3ZXIvQmFja2dyb3VuZE1lZGlhJztcbmltcG9ydCBCYWNrZ3JvdW5kT3ZlcmxheSBmcm9tICcuLi8uLi9CYWNrZ3JvdW5kT3ZlcmxheS92aWV3ZXIvQmFja2dyb3VuZE92ZXJsYXknO1xuaW1wb3J0IHR5cGUgeyBGaWxsTGF5ZXJzUHJvcHMgfSBmcm9tICcuLi9GaWxsTGF5ZXJzLnR5cGVzJztcbmltcG9ydCB7IFRlc3RJZHMgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IGhvdmVyQm94VXRpbHMgZnJvbSAnLi4vLi4vTWVkaWFDb250YWluZXJzL0hvdmVyQm94L3V0aWxzJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZS9GaWxsTGF5ZXJzLnNjc3MnO1xuaW1wb3J0IHsgdXNlT25Mb2Fkc0V2ZW50cyB9IGZyb20gJy4vdXNlT25Mb2Fkc0V2ZW50cyc7XG5cbmNvbnN0IElNQUdFX0NMQVNTX0ZPUl9MQVlPVVQgPSAnYmdJbWFnZSc7XG5cbmNvbnN0IEZpbGxMYXllcnM6IFJlYWN0LkZDPEZpbGxMYXllcnNQcm9wcz4gPSBwcm9wcyA9PiB7XG4gIGNvbnN0IHtcbiAgICB2aWRlb1JlZixcbiAgICBjYW52YXNSZWYsXG4gICAgaGFzQmdGdWxsc2NyZWVuU2Nyb2xsRWZmZWN0LFxuICAgIGltYWdlLFxuICAgIGJhY2tncm91bmRJbWFnZSxcbiAgICBiYWNrZ3JvdW5kTWVkaWEsXG4gICAgdmlkZW8sXG4gICAgYmFja2dyb3VuZE92ZXJsYXksXG4gICAgc2hvdWxkUGFkTWVkaWEsXG4gICAgZXh0cmFDbGFzcyA9ICcnLFxuICAgIHNob3VsZFJlbmRlclVuZGVybGF5ID0gIXZpZGVvLFxuICAgIHJlZHVjZWRNb3Rpb24gPSBmYWxzZSxcbiAgICBnZXRQbGFjZWhvbGRlcixcbiAgICBoYXNDYW52YXNBbmltYXRpb24sXG4gICAgdXNlV2l4TWVkaWFDYW52YXMsXG4gICAgb25DbGljayxcbiAgfSA9IHByb3BzO1xuICBjb25zdCB7IG9uSW1hZ2VMb2FkIH0gPSB1c2VPbkxvYWRzRXZlbnRzKHByb3BzKTtcbiAgLy8gZml4IGNvbnRhaW5lcklkIHRvIHN1cHBvcnQgaG92ZXJCb3ggY29tcG9uZW50XG4gIGNvbnN0IGNvbnRhaW5lcklkID0gaG92ZXJCb3hVdGlscy5nZXREZWZhdWx0SWQocHJvcHMuY29udGFpbmVySWQpO1xuICBjb25zdCBmaXhlZEltYWdlSWQgPSBgaW1nXyR7aG92ZXJCb3hVdGlscy5nZXREZWZhdWx0SWQoY29udGFpbmVySWQpfWA7XG5cbiAgY29uc3QgSW1hZ2VDb21wb25lbnQgPSBpbWFnZSAmJiAoXG4gICAgPEltYWdlXG4gICAgICBpZD17Zml4ZWRJbWFnZUlkfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKFxuICAgICAgICBzdHlsZXMuZmlsbExheWVyLFxuICAgICAgICBzdHlsZXMuaW1hZ2VGaWxsTGF5ZXIsXG4gICAgICAgIHN0eWxlcy50cmFuc2Zvcm1zLFxuICAgICAgICBJTUFHRV9DTEFTU19GT1JfTEFZT1VULFxuICAgICAgKX1cbiAgICAgIC8vIG92ZXJyaWRpbmcgZGltZW5zaW9ucyByZXR1cm5lZCBmcm9tICBpbWFnZUNsaWVudEFwaS5nZXRQbGFjZWhvbGRlcigpLmNzcy5pbWdcbiAgICAgIGltYWdlU3R5bGVzPXt7IHdpZHRoOiAnMTAwJScsIGhlaWdodDogJzEwMCUnIH19XG4gICAgICBnZXRQbGFjZWhvbGRlcj17Z2V0UGxhY2Vob2xkZXJ9XG4gICAgICB7Li4uaW1hZ2V9XG4gICAgICBvbkxvYWQ9e29uSW1hZ2VMb2FkfVxuICAgIC8+XG4gICk7XG4gIGNvbnN0IEJhY2tncm91bmRJbWFnZUNvbXBvbmVudCA9IGJhY2tncm91bmRJbWFnZSAmJiAoXG4gICAgPEJhY2tncm91bmRJbWFnZVxuICAgICAgey4uLmJhY2tncm91bmRJbWFnZX1cbiAgICAgIGNvbnRhaW5lcklkPXtjb250YWluZXJJZH1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhcbiAgICAgICAgc3R5bGVzLmZpbGxMYXllcixcbiAgICAgICAgc3R5bGVzLmltYWdlRmlsbExheWVyLFxuICAgICAgICBzdHlsZXMudHJhbnNmb3JtcyxcbiAgICAgICAgSU1BR0VfQ0xBU1NfRk9SX0xBWU9VVCxcbiAgICAgICl9XG4gICAgICBnZXRQbGFjZWhvbGRlcj17Z2V0UGxhY2Vob2xkZXJ9XG4gICAgLz5cbiAgKTtcbiAgY29uc3QgVmlkZW9Db21wb25lbnQgPSB2aWRlbyAmJiAoXG4gICAgPFZpZGVvXG4gICAgICBpZD17YHZpZGVvQ29udGFpbmVyXyR7Y29udGFpbmVySWR9YH1cbiAgICAgIHsuLi52aWRlb31cbiAgICAgIGV4dHJhQ2xhc3NOYW1lPXtzdHlsZXMudmlkZW9GaWxsTGF5ZXJ9XG4gICAgICByZWR1Y2VkTW90aW9uPXtyZWR1Y2VkTW90aW9ufVxuICAgICAgdmlkZW9SZWY9e3ZpZGVvUmVmfVxuICAgICAgZ2V0UGxhY2Vob2xkZXI9e2dldFBsYWNlaG9sZGVyfVxuICAgIC8+XG4gICk7XG5cbiAgY29uc3QgTWVkaWEgPVxuICAgICh1c2VXaXhNZWRpYUNhbnZhcyAmJiBjYW52YXNSZWYpIHx8IGhhc0NhbnZhc0FuaW1hdGlvbiA/IChcbiAgICAgIDx3aXgtbWVkaWEtY2FudmFzXG4gICAgICAgIGRhdGEtY29udGFpbmVyLWlkPXtjb250YWluZXJJZH1cbiAgICAgICAgY2xhc3M9e2hhc0NhbnZhc0FuaW1hdGlvbiA/IHN0eWxlcy5tZWRpYUNhbnZhcyA6ICcnfVxuICAgICAgPlxuICAgICAgICB7SW1hZ2VDb21wb25lbnR9XG4gICAgICAgIHtCYWNrZ3JvdW5kSW1hZ2VDb21wb25lbnR9XG4gICAgICAgIHtWaWRlb0NvbXBvbmVudH1cbiAgICAgICAgPGNhbnZhc1xuICAgICAgICAgIGlkPXtgJHtjb250YWluZXJJZH13ZWJnbGNhbnZhc2B9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKHN0eWxlcy5hbHBoYUNhbnZhcywgJ3dlYmdsY2FudmFzJyl9XG4gICAgICAgICAgYXJpYS1sYWJlbD17dmlkZW8/LmFsdCB8fCAnJ31cbiAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgICBkYXRhLXRlc3RpZD17VGVzdElkcy5jYW52YXN9XG4gICAgICAgIC8+XG4gICAgICA8L3dpeC1tZWRpYS1jYW52YXM+XG4gICAgKSA6IChcbiAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAge0ltYWdlQ29tcG9uZW50fVxuICAgICAgICB7QmFja2dyb3VuZEltYWdlQ29tcG9uZW50fVxuICAgICAgICB7VmlkZW9Db21wb25lbnR9XG4gICAgICAgIHtjYW52YXNSZWYgJiYgKFxuICAgICAgICAgIDxjYW52YXNcbiAgICAgICAgICAgIGlkPXtgJHtjb250YWluZXJJZH13ZWJnbGNhbnZhc2B9XG4gICAgICAgICAgICByZWY9e2NhbnZhc1JlZn1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhzdHlsZXMuYWxwaGFDYW52YXMsICd3ZWJnbGNhbnZhcycpfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD17dmlkZW8/LmFsdCB8fCAnJ31cbiAgICAgICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e1Rlc3RJZHMuY2FudmFzfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L1JlYWN0LkZyYWdtZW50PlxuICAgICk7XG5cbiAgY29uc3QgQmdNZWRpYSA9IGJhY2tncm91bmRNZWRpYSA/IChcbiAgICA8QmFja2dyb3VuZE1lZGlhIGlkPXtgYmdNZWRpYV8ke2NvbnRhaW5lcklkfWB9IHsuLi5iYWNrZ3JvdW5kTWVkaWF9PlxuICAgICAge01lZGlhfVxuICAgIDwvQmFja2dyb3VuZE1lZGlhPlxuICApIDogKFxuICAgIDxkaXZcbiAgICAgIGlkPXtgYmdNZWRpYV8ke2NvbnRhaW5lcklkfWB9XG4gICAgICBkYXRhLW1vdGlvbi1wYXJ0PXtgQkdfTUVESUEgJHtjb250YWluZXJJZH1gfVxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYmdNZWRpYX1cbiAgICA+XG4gICAgICB7TWVkaWF9XG4gICAgPC9kaXY+XG4gICk7XG4gIGNvbnN0IEJnT3ZlcmxheSA9IGJhY2tncm91bmRPdmVybGF5ICYmIChcbiAgICA8QmFja2dyb3VuZE92ZXJsYXkgey4uLmJhY2tncm91bmRPdmVybGF5fSAvPlxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgaWQ9e2Ake1Rlc3RJZHMuYmdMYXllcnN9XyR7Y29udGFpbmVySWR9YH1cbiAgICAgIGRhdGEtaG9vaz17VGVzdElkcy5iZ0xheWVyc31cbiAgICAgIGRhdGEtbW90aW9uLXBhcnQ9e2BCR19MQVlFUiAke2NvbnRhaW5lcklkfWB9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoc3R5bGVzLmxheWVyc0NvbnRhaW5lciwgZXh0cmFDbGFzcywge1xuICAgICAgICBbc3R5bGVzLmZ1bGxTY3JlZW5TY3JvbGxFZmZlY3RdOiBoYXNCZ0Z1bGxzY3JlZW5TY3JvbGxFZmZlY3QsXG4gICAgICB9KX1cbiAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgPlxuICAgICAge3Nob3VsZFJlbmRlclVuZGVybGF5ICYmIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGRhdGEtdGVzdGlkPXtUZXN0SWRzLmNvbG9yVW5kZXJsYXl9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKHN0eWxlcy5iZ1VuZGVybGF5LCBzdHlsZXMuZmlsbExheWVyKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICB7c2hvdWxkUGFkTWVkaWEgPyAoXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBkYXRhLXRlc3RpZD17VGVzdElkcy5tZWRpYVBhZGRpbmd9XG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMubWVkaWFQYWRkaW5nTGF5ZXJ9XG4gICAgICAgID5cbiAgICAgICAgICB7QmdNZWRpYX1cbiAgICAgICAgICB7QmdPdmVybGF5fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICkgOiAoXG4gICAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICB7QmdNZWRpYX1cbiAgICAgICAgICB7QmdPdmVybGF5fVxuICAgICAgICA8L1JlYWN0LkZyYWdtZW50PlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZpbGxMYXllcnM7XG4iLCIndXNlLWNsaWVudCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7IEJhY2tncm91bmRYUHJvcHMgfSBmcm9tICcuLi9CYWNrZ3JvdW5kWC50eXBlcyc7XG5pbXBvcnQgRmlsbExheWVycyBmcm9tICcuLi8uLi9GaWxsTGF5ZXJzL3ZpZXdlci9GaWxsTGF5ZXJzJztcblxuY29uc3QgQmFja2dyb3VuZFg6IFJlYWN0LkZDPEJhY2tncm91bmRYUHJvcHM+ID0gcHJvcHMgPT4gKFxuICA8RmlsbExheWVycyB7Li4ucHJvcHN9IC8+XG4pO1xuXG5leHBvcnQgZGVmYXVsdCBCYWNrZ3JvdW5kWDtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuZXhwb3J0IGRlZmF1bHQge1wic2hhcGUtZGl2aWRlclwiOlwiZGt1a1dDXCIsXCJzaGFwZURpdmlkZXJcIjpcImRrdWtXQ1wiLFwiZGl2aWRlci1sYXllclwiOlwiRlJDcURGXCIsXCJkaXZpZGVyTGF5ZXJcIjpcIkZSQ3FERlwiLFwidG9wLXNoYXBlLWRpdmlkZXJcIjpcInhuWnZaSFwiLFwidG9wU2hhcGVEaXZpZGVyXCI6XCJ4blp2WkhcIixcImJvdHRvbS1zaGFwZS1kaXZpZGVyXCI6XCJNQk9TQ05cIixcImJvdHRvbVNoYXBlRGl2aWRlclwiOlwiTUJPU0NOXCJ9OyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHR5cGUgeyBEaXZpZGVyc1Byb3BzLCBEaXZpZGVyTGF5ZXJTdHlsZSB9IGZyb20gJy4uL3NoYXBlRGl2aWRlcnMudHlwZXMnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlL3NoYXBlRGl2aWRlcnMuc2Nzcyc7XG5cbmNvbnN0IGdlbmVyYXRlTGF5ZXJzID0gKGhhc0RpdmlkZXI6IGJvb2xlYW4sIGxheWVyQ291bnQ/OiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIGhhc0RpdmlkZXJcbiAgICA/IFsuLi5BcnJheSgxICsgKGxheWVyQ291bnQgfHwgMCkpLmtleXMoKV1cbiAgICAgICAgLnJldmVyc2UoKVxuICAgICAgICAubWFwKGkgPT4gKFxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGtleT17YGRpdmlkZXItbGF5ZXItJHtpfWB9XG4gICAgICAgICAgICBzdHlsZT17eyAnLS1kaXZpZGVyLWxheWVyLWknOiBpIH0gYXMgRGl2aWRlckxheWVyU3R5bGV9XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kaXZpZGVyTGF5ZXJ9XG4gICAgICAgICAgICBkYXRhLXRlc3RpZD17YGRpdmlkZXItbGF5ZXItJHtpfWB9XG4gICAgICAgICAgICBkYXRhLWRpdmlkZXItbGF5ZXI9e2l9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSlcbiAgICA6IG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVEaXZpZGVyID0gKFxuICBzaWRlOiAndG9wJyB8ICdib3R0b20nLFxuICBoYXNEaXZpZGVyPzogYm9vbGVhbixcbiAgc2l6ZT86IG51bWJlcixcbikgPT4ge1xuICBjb25zdCBkaXZpZGVyTGF5ZXJzID0gZ2VuZXJhdGVMYXllcnMoISFoYXNEaXZpZGVyLCBzaXplKTtcblxuICByZXR1cm4gaGFzRGl2aWRlciA/IChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoc3R5bGVzLnNoYXBlRGl2aWRlciwge1xuICAgICAgICBbc3R5bGVzLnRvcFNoYXBlRGl2aWRlcl06IHNpZGUgPT09ICd0b3AnLFxuICAgICAgICBbc3R5bGVzLmJvdHRvbVNoYXBlRGl2aWRlcl06IHNpZGUgPT09ICdib3R0b20nLFxuICAgICAgfSl9XG4gICAgICBkYXRhLXRlc3RpZD17YCR7c2lkZX0tZGl2aWRlcmB9XG4gICAgPlxuICAgICAge2RpdmlkZXJMYXllcnN9XG4gICAgPC9kaXY+XG4gICkgOiBudWxsO1xufTtcblxuY29uc3QgU2hhcGVEaXZpZGVyczogUmVhY3QuRkM8RGl2aWRlcnNQcm9wcz4gPSBkaXZpZGVycyA9PiB7XG4gIGNvbnN0IHRvcERpdmlkZXIgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gZ2VuZXJhdGVEaXZpZGVyKFxuICAgICAgJ3RvcCcsXG4gICAgICBkaXZpZGVycz8uaGFzVG9wRGl2aWRlcixcbiAgICAgIGRpdmlkZXJzPy50b3BMYXllcnM/LnNpemUsXG4gICAgKTtcbiAgfSwgW2RpdmlkZXJzPy5oYXNUb3BEaXZpZGVyLCBkaXZpZGVycz8udG9wTGF5ZXJzPy5zaXplXSk7XG5cbiAgY29uc3QgYm90dG9tRGl2aWRlciA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBnZW5lcmF0ZURpdmlkZXIoXG4gICAgICAnYm90dG9tJyxcbiAgICAgIGRpdmlkZXJzPy5oYXNCb3R0b21EaXZpZGVyLFxuICAgICAgZGl2aWRlcnM/LmJvdHRvbUxheWVycz8uc2l6ZSxcbiAgICApO1xuICB9LCBbZGl2aWRlcnM/Lmhhc0JvdHRvbURpdmlkZXIsIGRpdmlkZXJzPy5ib3R0b21MYXllcnM/LnNpemVdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7dG9wRGl2aWRlcn1cbiAgICAgIHtib3R0b21EaXZpZGVyfVxuICAgIDwvPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2hhcGVEaXZpZGVycztcbiIsImNvbnN0IHNlbWFudGljQ2xhc3NOYW1lcyA9IHtcbiAgcm9vdDogJ3NlY3Rpb24nLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGRlZmF1bHQgc2VtYW50aWNDbGFzc05hbWVzO1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5jb25zdCBQYXVzZVNtYWxsID0gKHsgc2l6ZSwgLi4ucHJvcHMgfSkgPT4gLyogQF9fUFVSRV9fICovIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgeyB2aWV3Qm94OiBcIjAgMCAxOCAxOFwiLCBmaWxsOiBcImN1cnJlbnRDb2xvclwiLCB3aWR0aDogc2l6ZSB8fCBcIjE4XCIsIGhlaWdodDogc2l6ZSB8fCBcIjE4XCIsIC4uLnByb3BzIH0sIC8qIEBfX1BVUkVfXyAqLyBSZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTcuNSw1IEM4LjMyODQyNzEyLDUgOSw1LjY3MTU3Mjg4IDksNi41IEw5LDExLjUgQzksMTIuMzI4NDI3MSA4LjMyODQyNzEyLDEzIDcuNSwxMyBDNi42NzE1NzI4OCwxMyA2LDEyLjMyODQyNzEgNiwxMS41IEw2LDYuNSBDNiw1LjY3MTU3Mjg4IDYuNjcxNTcyODgsNSA3LjUsNSBaIE0xMS41LDUgQzEyLjMyODQyNzEsNSAxMyw1LjY3MTU3Mjg4IDEzLDYuNSBMMTMsMTEuNSBDMTMsMTIuMzI4NDI3MSAxMi4zMjg0MjcxLDEzIDExLjUsMTMgQzEwLjY3MTU3MjksMTMgMTAsMTIuMzI4NDI3MSAxMCwxMS41IEwxMCw2LjUgQzEwLDUuNjcxNTcyODggMTAuNjcxNTcyOSw1IDExLjUsNSBaIE03LjUsNiBDNy4yMjM4NTc2Myw2IDcsNi4yMjM4NTc2MyA3LDYuNSBMNywxMS41IEM3LDExLjc3NjE0MjQgNy4yMjM4NTc2MywxMiA3LjUsMTIgQzcuNzc2MTQyMzcsMTIgOCwxMS43NzYxNDI0IDgsMTEuNSBMOCw2LjUgQzgsNi4yMjM4NTc2MyA3Ljc3NjE0MjM3LDYgNy41LDYgWiBNMTEuNSw2IEMxMS4yMjM4NTc2LDYgMTEsNi4yMjM4NTc2MyAxMSw2LjUgTDExLDExLjUgQzExLDExLjc3NjE0MjQgMTEuMjIzODU3NiwxMiAxMS41LDEyIEMxMS43NzYxNDI0LDEyIDEyLDExLjc3NjE0MjQgMTIsMTEuNSBMMTIsNi41IEMxMiw2LjIyMzg1NzYzIDExLjc3NjE0MjQsNiAxMS41LDYgWlwiIH0pKTtcblBhdXNlU21hbGwuZGlzcGxheU5hbWUgPSBcIlBhdXNlU21hbGxcIjtcbnZhciBQYXVzZVNtYWxsX2RlZmF1bHQgPSBQYXVzZVNtYWxsO1xuZXhwb3J0IHtcbiAgUGF1c2VTbWFsbF9kZWZhdWx0IGFzIGRlZmF1bHRcbn07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmNvbnN0IFBsYXlTbWFsbCA9ICh7IHNpemUsIC4uLnByb3BzIH0pID0+IC8qIEBfX1BVUkVfXyAqLyBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHsgdmlld0JveDogXCIwIDAgMTggMThcIiwgZmlsbDogXCJjdXJyZW50Q29sb3JcIiwgd2lkdGg6IHNpemUgfHwgXCIxOFwiLCBoZWlnaHQ6IHNpemUgfHwgXCIxOFwiLCAuLi5wcm9wcyB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk02Ljg3NDY4ODM3LDUuNDUwNDE5NDcgTDEyLjczMTg3OTMsOC40NjY1NzExOSBDMTMuMjAxNjMsOC42ODczMTI0MSAxMy4yMDE2Myw5LjI2OTQwOTE4IDEyLjczMTg3OTMsOS41MzM0Mjg4MSBMNi44NzQ2ODgzNywxMi41NDk1ODA1IEM2LjU4MDA4Mzc3LDEyLjcwMTI4NjcgNi4wMDA3MDA3MSwxMi41ODAxMjI2IDYsMTIuMDE2MTUxNyBMNiw1Ljk4Mzg0ODI4IEM2LDUuNjUyNDc3NDMgNi4zNTI2Njg3Niw1LjIwNjgyMTY4IDYuODc0Njg4MzcsNS40NTA0MTk0NyBaIE03LDExLjM2MDI1MjkgTDExLjU4MzQ3MzUsOSBMNyw2LjYzOTc0NzE0IEw3LDExLjM2MDI1MjkgWlwiIH0pKTtcblBsYXlTbWFsbC5kaXNwbGF5TmFtZSA9IFwiUGxheVNtYWxsXCI7XG52YXIgUGxheVNtYWxsX2RlZmF1bHQgPSBQbGF5U21hbGw7XG5leHBvcnQge1xuICBQbGF5U21hbGxfZGVmYXVsdCBhcyBkZWZhdWx0XG59O1xuIiwiJ3VzZS1jbGllbnQnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xzeCc7XG5pbXBvcnQge1xuICBmb3JtYXRDbGFzc05hbWVzLFxuICBnZXREYXRhQXR0cmlidXRlcyxcbiAgZ2V0VGFiSW5kZXhBdHRyaWJ1dGUsXG4gIGdldEFyaWFMYWJlbEF0dHJpYnV0ZSxcbn0gZnJvbSAnQHdpeC9lZGl0b3ItZWxlbWVudHMtY29tbW9uLXV0aWxzJztcbmltcG9ydCB7IHVzZVZpZGVvQVBJIH0gZnJvbSAnQHdpeC9lZGl0b3ItZWxlbWVudHMtY29tbW9uLXV0aWxzL2hvb2tzJztcbmltcG9ydCB0eXBlIHsgTWVkaWFDb250YWluZXJWaWRlb0FQSSB9IGZyb20gJ0B3aXgvZWRpdG9yLWVsZW1lbnRzLXR5cGVzL2NvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBJU2VjdGlvblByb3BzIH0gZnJvbSAnLi4vU2VjdGlvbi50eXBlcyc7XG5pbXBvcnQgeyBUZXN0SWRzIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBCYWNrZ3JvdW5kWCBmcm9tICcuLi8uLi8uLi9CYWNrZ3JvdW5kWC92aWV3ZXIvQmFja2dyb3VuZFgnO1xuaW1wb3J0IFNoYXBlRGl2aWRlcnMgZnJvbSAnLi4vLi4vLi4vTWVkaWFDb250YWluZXJzL1NoYXBlRGl2aWRlcnMvdmlld2VyL3NoYXBlRGl2aWRlcnMnO1xuaW1wb3J0IHNlY3Rpb25TZW1hbnRpY0NsYXNzTmFtZXMgZnJvbSAnLi4vU2VjdGlvbi5zZW1hbnRpY0NsYXNzTmFtZXMnO1xuaW1wb3J0IHN0eWxlIGZyb20gJy4vc3R5bGVzL1NlY3Rpb24uc2Nzcyc7XG5pbXBvcnQgeyBQYXVzZVNtYWxsLCBQbGF5U21hbGwgfSBmcm9tICdAd2l4L3dpeC11aS1pY29ucy1jb21tb24nO1xuXG5jb25zdCBTZWN0aW9uOiBSZWFjdC5Gb3J3YXJkUmVmUmVuZGVyRnVuY3Rpb248XG4gIE1lZGlhQ29udGFpbmVyVmlkZW9BUEksXG4gIElTZWN0aW9uUHJvcHNcbj4gPSAocHJvcHMsIGNvbXBSZWYpID0+IHtcbiAgY29uc3Qge1xuICAgIGlkLFxuICAgIHNraW4gPSAnUmVjdGFuZ2xlQXJlYScsXG4gICAgY2xhc3NOYW1lLFxuICAgIGNvbnRhaW5lclJvb3RDbGFzc05hbWUgPSAnJyxcbiAgICBjdXN0b21DbGFzc05hbWVzID0gW10sXG4gICAgY29udGFpbmVyUHJvcHMsXG4gICAgY2hpbGRyZW4sXG4gICAgZmlsbExheWVycyA9IHByb3BzLmZpbGxMYXllcnMgfHwgcHJvcHMuYmFja2dyb3VuZCxcbiAgICB0YWdOYW1lLFxuICAgIGdldFBsYWNlaG9sZGVyLFxuICAgIGRpdmlkZXJzLFxuICAgIHNlbWFudGljQ2xhc3NOYW1lcyxcbiAgICBvblN0b3AsXG4gICAgb25DbGljayxcbiAgICBvbkRibENsaWNrLFxuICAgIG9uTW91c2VFbnRlcixcbiAgICBvbk1vdXNlTGVhdmUsXG4gICAgbGFuZyxcbiAgICB0cmFuc2xhdGlvbnMsXG4gICAgaXNQbGF5UGF1c2VTZWN0aW9uRXhwZXJpbWVudE9uLFxuICAgIGlzQnVpbGRlcixcbiAgfSA9IHByb3BzO1xuICBjb25zdCBUYWdOYW1lID0gdGFnTmFtZSB8fCAoJ3NlY3Rpb24nIGFzIGtleW9mIEpTWC5JbnRyaW5zaWNFbGVtZW50cyk7XG4gIGNvbnN0IHsgc2hvdWxkT21pdFdyYXBwZXJMYXllcnMgfSA9IGNvbnRhaW5lclByb3BzO1xuICBjb25zdCBjbGFzc05hbWVzID0gY2xhc3NuYW1lcyhcbiAgICBzdHlsZVtza2luXSxcbiAgICBjb250YWluZXJSb290Q2xhc3NOYW1lLFxuICAgIGNsYXNzTmFtZSxcbiAgICBzZW1hbnRpY0NsYXNzTmFtZXNcbiAgICAgID8gZm9ybWF0Q2xhc3NOYW1lcyhzZW1hbnRpY0NsYXNzTmFtZXMucm9vdCwgLi4uY3VzdG9tQ2xhc3NOYW1lcylcbiAgICAgIDogZm9ybWF0Q2xhc3NOYW1lcyhzZWN0aW9uU2VtYW50aWNDbGFzc05hbWVzLnJvb3QsIC4uLmN1c3RvbUNsYXNzTmFtZXMpLFxuICAgIHtcbiAgICAgIFtzdHlsZS5zaG91bGRPbWl0V3JhcHBlckxheWVyc106IHNob3VsZE9taXRXcmFwcGVyTGF5ZXJzLFxuICAgIH0sXG4gICk7XG4gIGNvbnN0IGhhc1ZpZGVvID0gISFmaWxsTGF5ZXJzPy52aWRlbztcbiAgY29uc3QgdmlkZW9SZWYgPSB1c2VWaWRlb0FQSShjb21wUmVmLCBoYXNWaWRlbywgb25TdG9wKTtcbiAgY29uc3QgW2lzVmlkZW9QbGF5aW5nLCBzZXRJc1ZpZGVvUGxheWluZ10gPSBSZWFjdC51c2VTdGF0ZShcbiAgICAhdmlkZW9SZWY/LmN1cnJlbnQ/LnBhdXNlZCB8fCBmYWxzZSxcbiAgKTtcbiAgY29uc3QgaGFuZGxlUGxheVBhdXNlID0gKCkgPT4ge1xuICAgIGNvbnN0IHZpZGVvID0gdmlkZW9SZWY/LmN1cnJlbnQ7XG4gICAgaWYgKHZpZGVvKSB7XG4gICAgICB2aWRlby5wYXVzZWQgPyB2aWRlby5wbGF5KCkgOiB2aWRlby5wYXVzZSgpO1xuICAgICAgc2V0SXNWaWRlb1BsYXlpbmcocHJldiA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1BsYXlpbmdTdGF0ZSA9ICFwcmV2O1xuICAgICAgICAvLyBGaW5kIGFuZCBjb250cm9sIGFsbCBjaGlsZCB2aWRlbyBlbGVtZW50c1xuICAgICAgICBjb25zdCBzZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcbiAgICAgICAgaWYgKHNlY3Rpb25FbGVtZW50KSB7XG4gICAgICAgICAgY29uc3QgY2hpbGRWaWRlb3MgPSBzZWN0aW9uRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCd2aWRlbycpO1xuICAgICAgICAgIGNoaWxkVmlkZW9zLmZvckVhY2goY2hpbGRWaWRlbyA9PiB7XG4gICAgICAgICAgICBpZiAoY2hpbGRWaWRlbyAhPT0gdmlkZW8pIHtcbiAgICAgICAgICAgICAgLy8gVXNlIHRoZSBuZXcgcGxheWluZyBzdGF0ZSB0byBzeW5jIGFsbCB2aWRlb3NcbiAgICAgICAgICAgICAgbmV3UGxheWluZ1N0YXRlID8gY2hpbGRWaWRlby5wbGF5KCkgOiBjaGlsZFZpZGVvLnBhdXNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld1BsYXlpbmdTdGF0ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxUYWdOYW1lXG4gICAgICBpZD17aWR9XG4gICAgICB7Li4uZ2V0RGF0YUF0dHJpYnV0ZXMocHJvcHMpfVxuICAgICAgey4uLmdldFRhYkluZGV4QXR0cmlidXRlKHByb3BzLmExMXkgfHwgeyB0YWJJbmRleDogLTEgfSl9XG4gICAgICB7Li4uZ2V0QXJpYUxhYmVsQXR0cmlidXRlKHByb3BzLmExMXkpfVxuICAgICAgZGF0YS1ibG9jay1sZXZlbC1jb250YWluZXI9XCJTZWN0aW9uXCJcbiAgICAgIGNsYXNzTmFtZT17YCR7Y2xhc3NOYW1lc30gJHtzdHlsZS5zZWN0aW9ufWB9XG4gICAgICBkYXRhLXRlc3RpZD17VGVzdElkcy5zZWN0aW9ufVxuICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgIG9uRG91YmxlQ2xpY2s9e29uRGJsQ2xpY2t9XG4gICAgICBvbk1vdXNlRW50ZXI9e29uTW91c2VFbnRlcn1cbiAgICAgIG9uTW91c2VMZWF2ZT17b25Nb3VzZUxlYXZlfVxuICAgICAgbGFuZz17bGFuZ31cbiAgICA+XG4gICAgICB7ZmlsbExheWVycyAmJiAhaXNCdWlsZGVyICYmIChcbiAgICAgICAgPEJhY2tncm91bmRYXG4gICAgICAgICAgey4uLmZpbGxMYXllcnN9XG4gICAgICAgICAgdmlkZW9SZWY9e3ZpZGVvUmVmfVxuICAgICAgICAgIGdldFBsYWNlaG9sZGVyPXtnZXRQbGFjZWhvbGRlcn1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICB7aGFzVmlkZW8gJiYgaXNQbGF5UGF1c2VTZWN0aW9uRXhwZXJpbWVudE9uICYmICFpc0J1aWxkZXIgJiYgKFxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZS52aWRlb1BsYXlQYXVzZUJ1dHRvbn1gfVxuICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZVBsYXlQYXVzZX1cbiAgICAgICAgICBhcmlhLXByZXNzZWQ9e2lzVmlkZW9QbGF5aW5nfVxuICAgICAgICAgIGFyaWEtbGFiZWw9e3RyYW5zbGF0aW9ucz8uYXJpYUxhYmVsfVxuICAgICAgICA+XG4gICAgICAgICAge2lzVmlkZW9QbGF5aW5nID8gPFBhdXNlU21hbGwgLz4gOiA8UGxheVNtYWxsIC8+fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICl9XG4gICAgICB7ZGl2aWRlcnMgJiYgIWlzQnVpbGRlciAmJiA8U2hhcGVEaXZpZGVycyB7Li4uZGl2aWRlcnN9IC8+fVxuICAgICAge2NoaWxkcmVuKCl9XG4gICAgPC9UYWdOYW1lPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVhY3QuZm9yd2FyZFJlZihTZWN0aW9uKTtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5leHBvcnQgZnVuY3Rpb24gdXNlVmlkZW9BUEkoY29tcFJlZiwgaGFzVmlkZW8sIG9uU3RvcCkge1xuICAgIGNvbnN0IHZpZGVvUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHZpZGVvQVBJID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIGlmIChoYXNWaWRlbykge1xuICAgICAgICBpZiAoIXZpZGVvQVBJLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHZpZGVvQVBJLmN1cnJlbnQgPSB7XG4gICAgICAgICAgICAgICAgcGxheTogKCkgPT4gdmlkZW9SZWYuY3VycmVudD8ucGxheSgpLFxuICAgICAgICAgICAgICAgIGxvYWQ6ICgpID0+IHZpZGVvUmVmLmN1cnJlbnQ/LmxvYWQoKSxcbiAgICAgICAgICAgICAgICBwYXVzZTogKCkgPT4gdmlkZW9SZWYuY3VycmVudD8ucGF1c2UoKSxcbiAgICAgICAgICAgICAgICBzdG9wOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2aWRlb1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2aWRlb1JlZi5jdXJyZW50LnBhdXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2aWRlb1JlZi5jdXJyZW50LmN1cnJlbnRUaW1lID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvblN0b3ApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblN0b3AodmlkZW9SZWYuY3VycmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgLy8gbm8gdmlkZW8gcmVtb3ZlIHZpZGVvIEFQSVxuICAgICAgICB2aWRlb0FQSS5jdXJyZW50ID0gbnVsbDtcbiAgICB9XG4gICAgUmVhY3QudXNlSW1wZXJhdGl2ZUhhbmRsZShjb21wUmVmLCAoKSA9PiB7XG4gICAgICAgIHJldHVybiB2aWRlb0FQSS5jdXJyZW50IHx8IHsgbG9hZCgpIHsgfSwgc3RvcCgpIHsgfSB9O1xuICAgIH0pO1xuICAgIHJldHVybiB2aWRlb1JlZjtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVzZVZpZGVvQVBJLmpzLm1hcCIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuZXhwb3J0IGRlZmF1bHQge1wiYmctdW5kZXJsYXlcIjpcIkxXYkFhdlwiLFwiYmdVbmRlcmxheVwiOlwiTFdiQWF2XCIsXCJsYXllcnMtY29udGFpbmVyXCI6XCJNVzVJV1ZcIixcImxheWVyc0NvbnRhaW5lclwiOlwiTVc1SVdWXCIsXCJhbmltYXRlXCI6XCJWN09lRXdcIixcImhlYWRlclNlY3Rpb25BZGRWaXNpYmlsaXR5VHJhbnNpdGlvblwiOlwiTURHTG9EXCIsXCJtb3ZlXCI6XCJCSElvNDNcIixcImZhZGVcIjpcIlV2RjFudVwiLFwic2Nyb2xsVXBcIjpcIll6clFGYlwiLFwiUmVjdGFuZ2xlQXJlYVwiOlwieHV6akJZXCIsXCJyZWN0YW5nbGVBcmVhXCI6XCJ4dXpqQllcIixcIkRlZmF1bHRBcmVhU2tpblwiOlwiTzdZYmtiXCIsXCJkZWZhdWx0QXJlYVNraW5cIjpcIk83WWJrYlwiLFwiZnVsbC1zY3JlZW4tc2Nyb2xsLWVmZmVjdFwiOlwiR2VOTER0XCIsXCJmdWxsU2NyZWVuU2Nyb2xsRWZmZWN0XCI6XCJHZU5MRHRcIixcImZpbGwtbGF5ZXJcIjpcIks4cEhGaFwiLFwiZmlsbExheWVyXCI6XCJLOHBIRmhcIixcImltYWdlLWZpbGwtbGF5ZXJcIjpcIlRhd2VxU1wiLFwiaW1hZ2VGaWxsTGF5ZXJcIjpcIlRhd2VxU1wiLFwiYmctbWVkaWFcIjpcInl6SHlOVFwiLFwiYmdNZWRpYVwiOlwieXpIeU5UXCIsXCJ2aWRlb0ZpbGxMYXllclwiOlwiekJGQ3BPXCIsXCJhbHBoYS1jYW52YXNcIjpcInhqZ3JTM1wiLFwiYWxwaGFDYW52YXNcIjpcInhqZ3JTM1wiLFwibWVkaWEtcGFkZGluZy1sYXllclwiOlwiYjN6U1MwXCIsXCJtZWRpYVBhZGRpbmdMYXllclwiOlwiYjN6U1MwXCIsXCJ0cmFuc2Zvcm1zXCI6XCJXc3YzYWtcIixcIm1lZGlhLWNhbnZhc1wiOlwiSWlKTWZuXCIsXCJtZWRpYUNhbnZhc1wiOlwiSWlKTWZuXCIsXCJSZWN0YW5nbGVBcmVhQWZ0ZXJTY3JvbGxcIjpcIktKZ3QxNFwiLFwicmVjdGFuZ2xlQXJlYUFmdGVyU2Nyb2xsXCI6XCJLSmd0MTRcIixcInNjcm9sbGVkXCI6XCJWVHdjWDdcIixcInNlY3Rpb25cIjpcIkd6c2swalwiLFwidmlkZW8tcGxheS1wYXVzZS1idXR0b25cIjpcIk1kTGwwaFwiLFwidmlkZW9QbGF5UGF1c2VCdXR0b25cIjpcIk1kTGwwaFwiLFwiY2hpbGRyZW5Db250YWluZXJcIjpcIkdtbWNpMVwifTsiLCJpbXBvcnQgeyBrZXlDb2RlcyB9IGZyb20gJy4vYTExeSc7XG5leHBvcnQgY29uc3QgaXNUaGVtZUZvbnQgPSAodmFsdWUpID0+IC9eZm9udF9cXGQrJC8udGVzdCh2YWx1ZSk7XG5leHBvcnQgY29uc3QgZGVib3VuY2UgPSAoZm4sIG1zID0gMCwgeyBsZWFkaW5nID0gZmFsc2UsIHRyYWlsaW5nID0gdHJ1ZSB9ID0ge30pID0+IHtcbiAgICBsZXQgdGltZW91dElkID0gbnVsbDtcbiAgICByZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgaWYgKGxlYWRpbmcgJiYgdGltZW91dElkID09PSBudWxsKSB7XG4gICAgICAgICAgICBmbi5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGltZW91dElkKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRyYWlsaW5nIHx8ICFsZWFkaW5nIHx8IHRpbWVvdXRJZCkge1xuICAgICAgICAgICAgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRyYWlsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aW1lb3V0SWQgPSBudWxsO1xuICAgICAgICAgICAgfSwgbXMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gU3BlY2lhbCBjYXNlIGZvciBhIHNpbmdsZSBjYWxsIHdpdGggYm90aCBsZWFkaW5nIGFuZCB0cmFpbGluZyAoc2VlIHRlc3RzKVxuICAgICAgICAgICAgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGltZW91dElkID0gbnVsbDtcbiAgICAgICAgICAgIH0sIG1zKTtcbiAgICAgICAgfVxuICAgIH07XG59O1xuZXhwb3J0IGNvbnN0IHRocm90dGxlID0gKGZ1bmMsIG1zID0gMCkgPT4ge1xuICAgIGxldCBpc1Rocm90dGxlZCA9IGZhbHNlLCBzYXZlZEFyZ3M7XG4gICAgZnVuY3Rpb24gd3JhcHBlciguLi5hcmdzKSB7XG4gICAgICAgIGlmIChpc1Rocm90dGxlZCkge1xuICAgICAgICAgICAgc2F2ZWRBcmdzID0gYXJncztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICBpc1Rocm90dGxlZCA9IHRydWU7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaXNUaHJvdHRsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChzYXZlZEFyZ3MpIHtcbiAgICAgICAgICAgICAgICB3cmFwcGVyLmFwcGx5KHRoaXMsIHNhdmVkQXJncyk7XG4gICAgICAgICAgICAgICAgc2F2ZWRBcmdzID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgbXMpO1xuICAgIH1cbiAgICByZXR1cm4gd3JhcHBlcjtcbn07XG5leHBvcnQgY29uc3QgaXNCcm93c2VyID0gKCkgPT4gdHlwZW9mIHdpbmRvdyAhPT0gYHVuZGVmaW5lZGA7XG5leHBvcnQgY29uc3QgcGVyZm9ybU9uRW50ZXIgPSAoZm4pID0+IHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSBrZXlDb2Rlcy5lbnRlcikge1xuICAgICAgICAgICAgZm4oZXZlbnQpO1xuICAgICAgICB9XG4gICAgfTtcbn07XG5leHBvcnQgY29uc3QgaXNDU1NNYXNrU3VwcG9ydGVkID0gKCkgPT4ge1xuICAgIGlmICghaXNCcm93c2VyKCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiAod2luZG93LkNTUyAmJlxuICAgICAgICB3aW5kb3cuQ1NTLnN1cHBvcnRzKCcobWFzay1yZXBlYXQ6IG5vLXJlcGVhdCkgb3IgKC13ZWJraXQtbWFzay1yZXBlYXQ6IG5vLXJlcGVhdCknKSk7XG59O1xuZXhwb3J0IGNvbnN0IGlzRW1wdHlPYmplY3QgPSAob2JqKSA9PiAhb2JqIHx8IChPYmplY3Qua2V5cyhvYmopLmxlbmd0aCA9PT0gMCAmJiBvYmouY29uc3RydWN0b3IgPT09IE9iamVjdCk7XG5leHBvcnQgY29uc3QgaXNTYWZhcmkgPSAoKSA9PiAvXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KG5hdmlnYXRvcj8udXNlckFnZW50KTtcbi8vIGV2ZW4gdGhvdWdoIG5hdmlnYXRvci5wbGF0Zm9ybSBpcyBkZXByZWNhdGVkLCBpdCdzIHN0aWxsIHRoZSBtb3N0IHJlbGlhYmxlIHdheSB0byBkZXRlY3QgdGhlIE9TXG4vLyBzdWdnZXN0ZWQgYnkgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL05hdmlnYXRvci9wbGF0Zm9ybVxuLy8gdGhpcyBmdW5jdGlvbiBpcyBub3Qgd29ya2luZyBpbiBTU1IgZW52aXJvbm1lbnRcbi8vIHNob3VsZCBiZSB1c2VkIG9ubHkgaW4gdGhlIGJyb3dzZXIgZW52aXJvbm1lbnRcbmV4cG9ydCBjb25zdCBpc01hYyA9ICgpID0+IG5hdmlnYXRvcj8ucGxhdGZvcm0/LnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgnbWFjJyk7XG5leHBvcnQgY29uc3QgZ2V0RGF0YUF0dHJpYnV0ZXMgPSAocHJvcHMpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMocHJvcHMpLnJlZHVjZSgoYWNjLCBba2V5LCB2YWxdKSA9PiB7XG4gICAgICAgIGlmIChrZXkuaW5jbHVkZXMoJ2RhdGEtJykpIHtcbiAgICAgICAgICAgIGFjY1trZXldID0gdmFsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBwaWNrKHNvdXJjZSwga2V5cykge1xuICAgIHJldHVybiBrZXlzLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgaWYgKCFzb3VyY2UuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgW2tleV06IHNvdXJjZVtrZXldLFxuICAgICAgICB9O1xuICAgIH0sIHt9KTtcbn1cbmV4cG9ydCBjb25zdCBpZFRvQ29tcFJlZiA9IChpZCkgPT4gKHsgaWQsIHR5cGU6ICdERVNLVE9QJyB9KTtcbmV4cG9ydCBjb25zdCBpc1dpeERvbWFpbiA9ICh1cmwpID0+IFsnZWRpdG9yeC5pbycsICd3aXhzaXRlLmNvbScsICd3aXguY29tJywgJ3dpeHN0dWRpby5pbyddLnNvbWUoZG9tYWluID0+IHVybC5pbmNsdWRlcyhkb21haW4pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXV0aWxzLmpzLm1hcCIsIm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9YZGZfX187IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7XG4gIHJldHVybiBtb2R1bGUuZXhwb3J0cyA9IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKG4pIHtcbiAgICBmb3IgKHZhciBlID0gMTsgZSA8IGFyZ3VtZW50cy5sZW5ndGg7IGUrKykge1xuICAgICAgdmFyIHQgPSBhcmd1bWVudHNbZV07XG4gICAgICBmb3IgKHZhciByIGluIHQpICh7fSkuaGFzT3duUHJvcGVydHkuY2FsbCh0LCByKSAmJiAobltyXSA9IHRbcl0pO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBfZXh0ZW5kcy5hcHBseShudWxsLCBhcmd1bWVudHMpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfZXh0ZW5kcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIHIoZSl7dmFyIHQsZixuPVwiXCI7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGV8fFwibnVtYmVyXCI9PXR5cGVvZiBlKW4rPWU7ZWxzZSBpZihcIm9iamVjdFwiPT10eXBlb2YgZSlpZihBcnJheS5pc0FycmF5KGUpKWZvcih0PTA7dDxlLmxlbmd0aDt0KyspZVt0XSYmKGY9cihlW3RdKSkmJihuJiYobis9XCIgXCIpLG4rPWYpO2Vsc2UgZm9yKHQgaW4gZSllW3RdJiYobiYmKG4rPVwiIFwiKSxuKz10KTtyZXR1cm4gbn1leHBvcnQgZnVuY3Rpb24gY2xzeCgpe2Zvcih2YXIgZSx0LGY9MCxuPVwiXCI7Zjxhcmd1bWVudHMubGVuZ3RoOykoZT1hcmd1bWVudHNbZisrXSkmJih0PXIoZSkpJiYobiYmKG4rPVwiIFwiKSxuKz10KTtyZXR1cm4gbn1leHBvcnQgZGVmYXVsdCBjbHN4OyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdGZ1bmN0aW9uKCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuXHRcdGZ1bmN0aW9uKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgZGVmaW5pdGlvbikge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmosIHByb3ApIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApOyB9IiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJjb25zdCBzZW1hbnRpY0NsYXNzTmFtZXMgPSB7XG4gIHJvb3Q6ICdmb290ZXInLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGRlZmF1bHQgc2VtYW50aWNDbGFzc05hbWVzO1xuIiwiJ3VzZS1jbGllbnQnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBJU2VjdGlvblByb3BzIH0gZnJvbSAnLi4vLi4vU2VjdGlvbi9TZWN0aW9uLnR5cGVzJztcbmltcG9ydCBTZWN0aW9uIGZyb20gJy4uLy4uL1NlY3Rpb24vdmlld2VyL1NlY3Rpb24nO1xuaW1wb3J0IHNlbWFudGljQ2xhc3NOYW1lcyBmcm9tICcuLi9Gb290ZXJTZWN0aW9uLnNlbWFudGljQ2xhc3NOYW1lcyc7XG5cbmNvbnN0IEZvb3RlclNlY3Rpb246IFJlYWN0LkZDPElTZWN0aW9uUHJvcHM+ID0gcHJvcHMgPT4ge1xuICByZXR1cm4gPFNlY3Rpb24gey4uLnByb3BzfSBzZW1hbnRpY0NsYXNzTmFtZXM9e3NlbWFudGljQ2xhc3NOYW1lc30gLz47XG59O1xuXG5leHBvcnQgZGVmYXVsdCBGb290ZXJTZWN0aW9uO1xuIl0sIm5hbWVzIjpbInJvb3QiLCJmYWN0b3J5IiwiZXhwb3J0cyIsIm1vZHVsZSIsInJlcXVpcmUiLCJkZWZpbmUiLCJhbWQiLCJzZWxmIiwidGhpcyIsIl9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfWGRmX19fIiwiQ1NTX1BSRUZJWCIsImZvcm1hdENsYXNzTmFtZXMiLCJzZW1hbnRpY0NsYXNzTmFtZSIsImN1c3RvbUNsYXNzTmFtZXMiLCJyZXN1bHQiLCJwdXNoIiwiZm9yRWFjaCIsImNsYXNzTmFtZSIsImpvaW4iLCJrZXlDb2RlcyIsImFjdGl2YXRlQnlLZXkiLCJrZXkiLCJldmVudCIsImtleUNvZGUiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsImN1cnJlbnRUYXJnZXQiLCJjbGljayIsIlRlc3RJZHMiLCJBUElfVkVSU0lPTiIsIk1BWF9ERVZJQ0VfUElYRUxfUkFUSU8iLCJEU0tUUF9NQVhfQkdfU0lURV9MRUdBQ1lfV0lEVEgiLCJEU0tUUF9NQVhfQkdfU0lURV9MRUdBQ1lfSEVJR0hUIiwiTU9CSUxFX01BWF9CR19TSVRFX0xFR0FDWV9XSURUSCIsIk1PQklMRV9NQVhfQkdfU0lURV9MRUdBQ1lfSEVJR0hUIiwiZml0dGluZ1R5cGVzIiwiU0NBTEVfVE9fRklMTCIsIlNDQUxFX1RPX0ZJVCIsIlNUUkVUQ0giLCJPUklHSU5BTF9TSVpFIiwiVElMRSIsIlRJTEVfSE9SSVpPTlRBTCIsIlRJTEVfVkVSVElDQUwiLCJGSVRfQU5EX1RJTEUiLCJMRUdBQ1lfU1RSSVBfVElMRSIsIkxFR0FDWV9TVFJJUF9USUxFX0hPUklaT05UQUwiLCJMRUdBQ1lfU1RSSVBfVElMRV9WRVJUSUNBTCIsIkxFR0FDWV9TVFJJUF9TQ0FMRV9UT19GSUxMIiwiTEVHQUNZX1NUUklQX1NDQUxFX1RPX0ZJVCIsIkxFR0FDWV9TVFJJUF9GSVRfQU5EX1RJTEUiLCJMRUdBQ1lfU1RSSVBfT1JJR0lOQUxfU0laRSIsIkxFR0FDWV9PUklHSU5BTF9TSVpFIiwiTEVHQUNZX0ZJVF9XSURUSCIsIkxFR0FDWV9GSVRfSEVJR0hUIiwiTEVHQUNZX0ZVTEwiLCJMRUdBQ1lfQkdfRklUX0FORF9USUxFIiwiTEVHQUNZX0JHX0ZJVF9BTkRfVElMRV9IT1JJWk9OVEFMIiwiTEVHQUNZX0JHX0ZJVF9BTkRfVElMRV9WRVJUSUNBTCIsIkxFR0FDWV9CR19OT1JNQUwiLCJ0cmFuc2Zvcm1UeXBlcyIsIkZJVCIsIkZJTEwiLCJGSUxMX0ZPQ0FMIiwiQ1JPUCIsIkxFR0FDWV9DUk9QIiwiTEVHQUNZX0ZJTEwiLCJhbGlnblR5cGVzIiwiQ0VOVEVSIiwiVE9QIiwiVE9QX0xFRlQiLCJUT1BfUklHSFQiLCJCT1RUT00iLCJCT1RUT01fTEVGVCIsIkJPVFRPTV9SSUdIVCIsIkxFRlQiLCJSSUdIVCIsIkFMSUdOX1RZUEVfVE9fRk9DQUxfUE9JTlQiLCJ4IiwieSIsImFsaWduVHlwZXNNYXAiLCJjZW50ZXIiLCJ0b3AiLCJ0b3BfbGVmdCIsInRvcF9yaWdodCIsImJvdHRvbSIsImJvdHRvbV9sZWZ0IiwiYm90dG9tX3JpZ2h0IiwibGVmdCIsInJpZ2h0IiwiaHRtbFRhZyIsIkJHIiwiSU1HIiwiU1ZHIiwidXBzY2FsZU1ldGhvZHMiLCJBVVRPIiwiQ0xBU1NJQyIsIlNVUEVSIiwidXBzY2FsZU1ldGhvZHNWYWx1ZXMiLCJjbGFzc2ljIiwic3VwZXIiLCJkZWZhdWx0VVNNIiwicmFkaXVzIiwiYW1vdW50IiwidGhyZXNob2xkIiwiZW1wdHlEYXRhIiwidXJpIiwiY3NzIiwiaW1nIiwiY29udGFpbmVyIiwiYXR0ciIsInRyYW5zZm9ybWVkIiwiU0FGRV9UUkFOU0ZPUk1FRF9BUkVBIiwiTUFYX1RSQU5TRk9STUVEX0lNQUdFX1dJRFRIIiwiU1VQRVJfVVBTQ0FMRV9NT0RFTFMiLCJpbWFnZVNjYWxlRGVmYXVsdHMiLCJISUdIIiwic2l6ZSIsInF1YWxpdHkiLCJtYXhVcHNjYWxlIiwiTUVESVVNIiwiTE9XIiwiVElOWSIsImltYWdlUXVhbGl0eSIsImltYWdlRmlsdGVycyIsIkNPTlRSQVNUIiwiQlJJR0hUTkVTUyIsIlNBVFVSQVRJT04iLCJIVUUiLCJCTFVSIiwiZmlsZVR5cGUiLCJKUEciLCJKUEVHIiwiSlBFIiwiUE5HIiwiV0VCUCIsIldJWF9JQ09fTVAiLCJXSVhfTVAiLCJHSUYiLCJBVklGIiwiVU5SRUNPR05JWkVEIiwiZW5jb2RpbmdUeXBlcyIsIlBBVklGIiwidGVtcGxhdGUiLCJzdHJpbmdzIiwia2V5cyIsInZhbHVlcyIsImRpY3QiLCJsZW5ndGgiLCJpIiwidmFsdWUiLCJOdW1iZXIiLCJpc0ludGVnZXIiLCJsYXN0IiwiYXJyYXkiLCJTVVBQT1JURURfSU1BR0VfRVhURU5TSU9OUyIsIkpQR19FWFRFTlNJT05TIiwiaXNWYWxpZFJlcXVlc3QiLCJmaXR0aW5nVHlwZSIsInNyYyIsInRhcmdldCIsInVybCIsImlkIiwidHJpbSIsInRvTG93ZXJDYXNlIiwiT2JqZWN0IiwiaW5jbHVkZXMiLCJpc0ltYWdlVHJhbnNmb3JtQXBwbGljYWJsZSIsImhhc0FuaW1hdGlvbiIsImFsbG93QW5pbWF0ZWRUcmFuc2Zvcm0iLCJhbGxvd0Z1bGxHSUZUcmFuc2Zvcm1hdGlvbiIsInRlc3QiLCJpc1dFQlAiLCJpc0FWSUYiLCJjYW5UcmFuc2Zvcm1BbmltYXRlZFdlYnBPckF2aWYiLCJpc1N1cHBvcnRlZEltYWdlVHlwZSIsImdldEZpbGVFeHRlbnNpb24iLCJpc0ltYWdlVHlwZVN1cHBvcnRlZCIsImlzVHJhbnNmb3JtYWJsZUdpZiIsImlzR0lGIiwiY2FuVHJhbnNmb3JtR0lGIiwiaXNQTkciLCJJTExFR0FMX0NIQVJTIiwibWFwIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiVVJMX1NBRkVfSUxMRUdBTF9DSEFSUyIsIklMTEVHQUxfQ0hBUlNfUkVQTEFDRU1FTlQiLCJnZXRGaWxlVHlwZSIsImlzSlBHIiwiZXhlYyIsImdldFNjYWxlRmFjdG9yIiwic1dpZHRoIiwic0hlaWdodCIsImRXaWR0aCIsImRIZWlnaHQiLCJ0cmFuc2Zvcm1UeXBlIiwic2NhbGVGYWN0b3IiLCJNYXRoIiwibWF4IiwiZ2V0RmlsbFNjYWxlRmFjdG9yIiwibWluIiwiZ2V0Rml0U2NhbGVGYWN0b3IiLCJnZXRUcmFuc2Zvcm1EYXRhIiwiZHByIiwidXBzY2FsZU1ldGhvZCIsIndpZHRoIiwiaGVpZ2h0IiwiZGltZW5zaW9uU2NhbGVGYWN0b3IiLCJzcXJ0IiwiZ2V0U2FmZVRyYW5zZm9ybURhdGEiLCJ0V2lkdGgiLCJ0SGVpZ2h0Iiwib3B0aW1pemVkU2NhbGVGYWN0b3IiLCJ1cHNjYWxlTWV0aG9kVmFsdWUiLCJmb3JjZVVTTSIsImltYWdlS2V5IiwiZ2V0SW1hZ2VRdWFsaXR5S2V5IiwiZ2V0QXV0b1NjYWxlRGF0YSIsImdldFN1cGVyU2NhbGVEYXRhIiwiZ2V0Q2xhc3NpY1NjYWxlRGF0YSIsImdldE9wdGltaXplZFNjYWxlRGF0YSIsImNzc1Vwc2NhbGVOZWVkZWQiLCJnZXRPcHRpbWl6ZWRUcmFuc2Zvcm1EYXRhIiwiZ2V0QWxpZ25lZFJlY3QiLCJzUmVjdCIsImRSZWN0Iiwic0ZQIiwiYWxpZ25tZW50IiwiZnAiLCJnZXRGb2NhbFBvaW50IiwiZ2V0Rm9jYWxQb2ludEZyb205R3JpZEFsaWdubWVudCIsImdldEFsaWdubWVudCIsImZvY2FsUG9pbnQiLCJpc05hTiIsInJvdW5kVG9GaXhlZCIsImltYWdlV2lkdGgiLCJpbWFnZUhlaWdodCIsInByZWNpc2lvbiIsInRydW5jYXRlUHJlY2lzaW9uIiwicG93IiwidG9GaXhlZCIsImdldFVwc2NhbGVTdHJpbmciLCJvcHRpb25zIiwidG9VcHBlckNhc2UiLCJpbWFnZUlzQW5pbWF0ZWQiLCJpc0F2aWZXZWJwRm9ybWF0IiwiZ2xvYmFsRmVhdHVyZXNTdXBwb3J0T2JqIiwiaXNNb2JpbGUiLCJnZXRGZWF0dXJlIiwiZmVhdHVyZSIsInBvcHVsYXRlR2xvYmFsRmVhdHVyZVN1cHBvcnQiLCJ3aW5kb3ciLCJuYXZpZ2F0b3IiLCJpc1NtYWxsU2NyZWVuIiwibWF0Y2hNZWRpYSIsIm1hdGNoZXMiLCJpc01vYmlsZUFnZW50IiwidXNlckFnZW50IiwiZ2V0Q1NTIiwidHJhbnNmb3Jtc09iaiIsImF0dHJpYnV0ZXMiLCJiYWNrZ3JvdW5kU2l6ZSIsImJhY2tncm91bmRSZXBlYXQiLCJiYWNrZ3JvdW5kUG9zaXRpb24iLCJhbGlnblR5cGVUb1Bvc2l0aW9uU3RyIiwiYWxpZ21lbnREZWZhdWx0cyIsInBvc2l0aW9uIiwiYWxpZ25UeXBlIiwicGFydHMiLCJvYmplY3RGaXQiLCJvYmplY3RQb3NpdGlvbiIsInZlcnRpY2FsTWlkZGxlIiwicm91bmQiLCJob3Jpem9udGFsTWlkZGxlIiwiYXNzaWduIiwiYWxpZ25UeXBlVG9Qb3NpdGlvbiIsImdldFN2Z0F0dHIiLCJzb3VyY2VXaWR0aCIsInNvdXJjZUhlaWdodCIsImltYWdlU2NhbGUiLCJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwidHJhbnNmb3JtIiwiZ2V0RGltZW5zaW9uIiwibWlkZGxlIiwidmlld0JveCIsInNldFRyYW5zZm9ybVBhcnRzIiwicmVjdCIsImNyb3AiLCJnZXRPdmVybGFwcGluZ1JlY3QiLCJpc0Nyb3BwZWQiLCJnZXRDcm9wUGFydCIsImdldEZpdFBhcnQiLCJ0cmFuc2Zvcm1lZERhdGEiLCJkZXZpY2VQaXhlbFJhdGlvIiwiZm9jYWxQb2ludFgiLCJmb2NhbFBvaW50WSIsInVwc2NhbGUiLCJnZXRGaWxsUGFydCIsImNsb25lZFRhcmdldCIsImdldFN0cmV0Y2hQYXJ0IiwiZ2V0TGVnYWN5Q3JvcFBhcnQiLCJnZXRMZWdhY3lGaXRQYXJ0IiwiZ2V0TGVnYWN5RmlsbFBhcnQiLCJzZXRUcmFuc2Zvcm1PcHRpb25zIiwiaXNRdWFsaXR5U3VwcG9ydGVkIiwidHJhbnNmb3JtRGF0YSIsImRlZmF1bHRRdWFsaXR5IiwiZ2V0UXVhbGl0eSIsInByb2dyZXNzaXZlIiwiZ2V0UHJvZ3Jlc3NpdmUiLCJ3YXRlcm1hcmsiLCJnZXRXYXRlcm1hcmsiLCJhdXRvRW5jb2RlIiwiZW5jb2RpbmciLCJ1bnNoYXJwTWFzayIsInVzbSIsImlzVVNNVmFsaWQiLCJ0cmFuc2Zvcm1QYXJ0IiwiaXNVU01OZWVkZWQiLCJnZXRVbnNoYXJwTWFzayIsImZpbHRlcnMiLCJmaWx0ZXJPcHRpb25zIiwiaXNWYWxpZEltYWdlRmlsdGVyIiwiZ2V0RmlsdGVycyIsImZpbHRlclZhbHVlIiwibWluVmFsdWUiLCJtYXhWYWx1ZSIsImdldFRyYW5zZm9ybSIsIl9pc1NFT0JvdCIsImlzU0VPQm90IiwiZmlsZU5hbWUiLCJuYW1lIiwiZmlsZUV4dGVuc2lvblJlZ2V4cCIsImlsbGVnYWxDaGFyc1JlZ2V4IiwiUmVnRXhwIiwiY29uY2F0IiwiZXh0ZW5zaW9uIiwibWF0Y2giLCJyZXBsYWNlIiwidHJpbW1lZCIsImdldEZpbGVOYW1lIiwicGl4ZWxBc3BlY3RSYXRpbyIsImdldERldmljZVBpeGVsUmF0aW8iLCJmaWxlRXh0ZW5zaW9uIiwicHJlZmVycmVkRXh0ZW5zaW9uIiwiY2FuVHJhbnNmb3JtSW1hZ2UiLCJpc0FuaW1hdGVkIiwiaXNQbGFjZWhvbGRlckZsb3ciLCJnZXRUYXJnZXQiLCJ0YXJnZXRPYmoiLCJfaXNNb2JpbGUiLCJtYXhCR1NpdGVMZWdhY3lXaWR0aCIsIm1heEJHU2l0ZUxlZ2FjeUhlaWdodCIsImZpdFRlbXBsYXRlIiwiZmlsbFRlbXBsYXRlIiwiZmlsbEZvY2FsVGVtcGxhdGUiLCJjcm9wVGVtcGxhdGUiLCJsZWdhY3lDcm9wVGVtcGxhdGUiLCJsZWdhY3lGaWxsVGVtcGxhdGUiLCJ1cHNjYWxlVGVtcGxhdGUiLCJxdWFsaXR5VGVtcGxhdGUiLCJxdWFsaXR5QXV0b1RlbXBsYXRlIiwidW5TaGFycE1hc2tUZW1wbGF0ZSIsIm5vblByb2dyZXNzaXZlVGVtcGxhdGUiLCJ3YXRlcm1hcmtUZW1wbGF0ZSIsImZpbHRlclRlbXBsYXRlc01hcCIsImF1dG9FbmNvZGVUZW1wbGF0ZSIsIkFWSUZFbmNvZGVUZW1wbGF0ZSIsInBBVklGRW5jb2RlVGVtcGxhdGUiLCJhbmltYXRlZFRyYW5zZm9ybVRlbXBsYXRlIiwiYW5pbWF0ZWRHSUZUcmFuc2Zvcm1UZW1wbGF0ZSIsImdldFVSSSIsInRyYW5zZm9ybU9iaiIsInRyYW5zZm9ybVRhcmdldCIsInVuZGVmaW5lZCIsInRyYW5zZm9ybXNPYmpTdHJBcnIiLCJsZWdhY3lGaWxsU3RyIiwiZml0U3RyIiwiZmlsbFN0ciIsImZpbGxGb2NhbFN0ciIsInRyYW5zZm9ybXNTdHIiLCJmaWx0ZXJOYW1lIiwiaXNHaWYiLCJnZXRJbWFnZVVSSSIsIkFMSUdOX1RZUEVfVE9fUE9TSVRJT04iLCJQT1NJVElPTl9UT19BTElHTl9UWVBFIiwiZW50cmllcyIsInJlZHVjZSIsImFjYyIsImFsaWduIiwiVElMRV9GSVRUSU5HX1RZUEVTIiwiTk9OX1NDQUxJTkdfRklUVElOR19UWVBFUyIsImdldElzRmFrZVRpbGUiLCJ0YXJnZXRXaWR0aCIsInRhcmdldEhlaWdodCIsInZhbGlkYXRlVGFyZ2V0RGltZW5zaW9ucyIsIl93aWR0aCIsImhlaWdodFJhdGlvIiwiZ2V0Q1NTT3ZlcnJpZGVzIiwicmV0dXJuVmFsdWUiLCJhbGlnblR5cGVGcm9tRm9jYWxQb2ludCIsImNvbnZlcnRGb2NhbFBvaW50VG9BbGlnblR5cGUiLCJjb252ZXJ0RmlsbEZvY2FsVG9Qb3NpdGlvbiIsInNXIiwic0giLCJ0VyIsInRIIiwiZnBYIiwiZnBZIiwiZmlsbFNjYWxlRmFjdG9yIiwiaW1nU2NhbGVkVyIsImltZ1NjYWxlZEgiLCJmbG9vciIsIlBMQUNFSE9MREVSX0lNR19DU1NfT1ZFUlJJREVTIiwiZ2V0UGxhY2Vob2xkZXIiLCJzaG91bGRMb2FkSFFJbWFnZSIsIklTX0lOX1BMQUNFSE9MREVSX0ZMT1ciLCJzaG91bGRBbGxvd0FuaW1hdGVkVHJhbnNmb3JtSW5QbGFjZWhvbGRlciIsInVzZVNyY3NldCIsIm5ld1RhcmdldCIsImlzRmFrZVRpbGUiLCJzY2FsZWREaW1lbnNpb25zIiwiaXNTY2FsYWJsZSIsImlzVGlsZSIsIl9oZWlnaHQiLCJpc0hpZ2hRdWFsaXR5IiwiZ2V0U2NhbGVGYWN0b3JCeVdpZHRoIiwiZ2V0U2NhbGVkRGltZW5zaW9ucyIsImJsdXIiLCJnZXRCbHVyVmFsdWUiLCJjb252ZXJ0ZWRGaXR0aW5nVHlwZSIsImdldENvbnZlcnRlZEZpdHRpbmciLCJvdmVycmlkZUNTUyIsImRhdGEiLCJzcmNzZXQiLCJnZXRTcmNzZXQiLCJhdHRyaWJ1dGVzR2V0dGVyIiwiZ2V0QXR0cmlidXRlcyIsIndpeFN0YXRpY1dpdGhNZWRpYSIsIlNUQVRJQ19NRURJQV9VUkwiLCJmZXRjaExRSVAiLCJwbGFjZWhvbGRlciIsIlNDSEVNRV9SRSIsIkltYWdlIiwicHJvcHMiLCJjb250YWluZXJJZCIsImFsdCIsInJvbGUiLCJkaXNwbGF5TW9kZSIsImJnRWZmZWN0TmFtZSIsImltYWdlU3R5bGVzIiwidGFyZ2V0U2NhbGUiLCJvbkxvYWQiLCJvbkVycm9yIiwic2hvdWxkVXNlTFFJUCIsImNvbnRhaW5lcldpZHRoIiwiY29udGFpbmVySGVpZ2h0IiwiaXNJbkZpcnN0Rm9sZCIsInBsYWNlaG9sZGVyVHJhbnNpdGlvbiIsInNvY2lhbEF0dHJzIiwic2tpcE1lYXN1cmUiLCJpc0ZsdWlkTGF5b3V0IiwiaW1hZ2VSZWYiLCJoYXNTc3JTcmMiLCJoYXNCbHVyVHJhbnNpdGlvbiIsInNzckltYWdlRGF0YSIsImN1cnJlbnQiLCJpc0xRSVAiLCJpbWFnZUluZm8iLCJKU09OIiwic3RyaW5naWZ5IiwibHFpcFRyYW5zaXRpb24iLCJpbWFnZURhdGEiLCJzc3JSZXN1bHQiLCJwbGFjZWhvbGRlclN0eWxlIiwiY2xhc3NOYW1lcyIsImltZ0VsZW1lbnQiLCJjdXJyZW50U3JjIiwiY29tcGxldGUiLCJtYXhXaWR0aCIsImNsYXNzIiwic3R5bGUiLCJyZWYiLCJzcmNTZXQiLCJzIiwiZmV0Y2hwcmlvcml0eSIsImxvYWRpbmciLCJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmciLCJfcmVzcG9uc2l2ZUltYWdlUHJvcHMiLCJfcmVzcG9uc2l2ZUltYWdlUHJvcHMyIiwicmVzcG9uc2l2ZUltYWdlUHJvcHMiLCJ6b29tZWRJbWFnZVJlc3BvbnNpdmVPdmVycmlkZSIsImVmZmVjdGl2ZVdpZHRoIiwiZWZmZWN0aXZlSGVpZ2h0IiwiZmFsbGJhY2tTcmMiLCJzb3VyY2VzIiwicmVzcG9uc2l2ZUltZ0Nzc05vSGVpZ2h0QW5kV2lkdGgiLCJyZXNwb25zaXZlSW1hZ2VzU3R5bGUiLCJfem9vbWVkSW1hZ2VSZXNwb25zaXYiLCJSZWFjdCIsIl9leHRlbmRzIiwic2l6ZXMiLCJzdHlsZXMiLCJfcmVmIiwic291cmNlU3Jjc2V0IiwibWVkaWEiLCJpbWdTdHlsZSIsIlBpeGVsUGVyZmVjdEltYWdlIiwiX2N1cnJlbnRQbGFjZWhvbGRlciR1IiwiX2N1cnJlbnRQbGFjZWhvbGRlciRjIiwiX2N1cnJlbnRQbGFjZWhvbGRlciRjMiIsImN1c3RvbUlkUHJlZml4IiwiYmFja2dyb3VuZEltYWdlIiwidGlsZUltYWdlZEluZm9TdHJpbmciLCJpbWFnZVBsYWNlaG9sZGVyRGF0YSIsImN1cnJlbnRQbGFjZWhvbGRlciIsImhhc0JnU2Nyb2xsRWZmZWN0IiwiQ09NUF9JRF9QTEFDRUhPTERFUl9SRUdFWCIsInJlcGxhY2VDb21wSWRQbGFjZWhvbGRlciIsInN0ciIsImNvbXBJZCIsIlBPU1RFUl9JTUFHRV9RVUFMSVRZIiwidmlkZW9SZWYiLCJ2aWRlb0luZm8iLCJwb3N0ZXJJbWFnZUluZm8iLCJtdXRlZCIsInByZWxvYWQiLCJsb29wIiwiaXNWaWRlb0VuYWJsZWQiLCJleHRyYUNsYXNzTmFtZSIsImhvdmVyQm94VXRpbHMiLCJ2aWRlb0luZm9TdHJpbmciLCJWaWRlb1Bvc3RlckltYWdlIiwiZmlsdGVyRWZmZWN0U3ZnU3RyaW5nIiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJfX2h0bWwiLCJ2aWRlb0lkIiwiY3Jvc3NPcmlnaW4iLCJwbGF5c0lubGluZSIsInBhZ2VJZCIsImNoaWxkcmVuIiwiY29udGFpbmVyU2l6ZSIsImltYWdlT3ZlcmxheSIsIkJhY2tncm91bmRJbWFnZSIsIklNQUdFX0NMQVNTX0ZPUl9MQVlPVVQiLCJjYW52YXNSZWYiLCJoYXNCZ0Z1bGxzY3JlZW5TY3JvbGxFZmZlY3QiLCJpbWFnZSIsImJhY2tncm91bmRNZWRpYSIsInZpZGVvIiwiYmFja2dyb3VuZE92ZXJsYXkiLCJzaG91bGRQYWRNZWRpYSIsImV4dHJhQ2xhc3MiLCJzaG91bGRSZW5kZXJVbmRlcmxheSIsInJlZHVjZWRNb3Rpb24iLCJoYXNDYW52YXNBbmltYXRpb24iLCJ1c2VXaXhNZWRpYUNhbnZhcyIsIm9uQ2xpY2siLCJvbkltYWdlTG9hZCIsIm9uUmVhZHkiLCJ1c2VFZmZlY3QiLCJlIiwidXNlT25Mb2Fkc0V2ZW50cyIsImZpeGVkSW1hZ2VJZCIsIkltYWdlQ29tcG9uZW50IiwiQmFja2dyb3VuZEltYWdlQ29tcG9uZW50IiwiVmlkZW9Db21wb25lbnQiLCJWaWRlbyIsIk1lZGlhIiwiQmdNZWRpYSIsIkJhY2tncm91bmRNZWRpYSIsIkJnT3ZlcmxheSIsIkJhY2tncm91bmRPdmVybGF5IiwiRmlsbExheWVycyIsImdlbmVyYXRlRGl2aWRlciIsInNpZGUiLCJoYXNEaXZpZGVyIiwiZGl2aWRlckxheWVycyIsImdlbmVyYXRlTGF5ZXJzIiwibGF5ZXJDb3VudCIsIkFycmF5IiwicmV2ZXJzZSIsImRpdmlkZXJzIiwiX2RpdmlkZXJzJHRvcExheWVyczIiLCJfZGl2aWRlcnMkYm90dG9tTGF5ZXIyIiwidG9wRGl2aWRlciIsIl9kaXZpZGVycyR0b3BMYXllcnMiLCJoYXNUb3BEaXZpZGVyIiwidG9wTGF5ZXJzIiwiYm90dG9tRGl2aWRlciIsIl9kaXZpZGVycyRib3R0b21MYXllciIsImhhc0JvdHRvbURpdmlkZXIiLCJib3R0b21MYXllcnMiLCJQYXVzZVNtYWxsIiwiZmlsbCIsImQiLCJkaXNwbGF5TmFtZSIsIlBhdXNlU21hbGxfZGVmYXVsdCIsIlBsYXlTbWFsbCIsIlBsYXlTbWFsbF9kZWZhdWx0IiwiU2VjdGlvbiIsImNvbXBSZWYiLCJfdmlkZW9SZWYkY3VycmVudCIsInNraW4iLCJjb250YWluZXJSb290Q2xhc3NOYW1lIiwiY29udGFpbmVyUHJvcHMiLCJmaWxsTGF5ZXJzIiwiYmFja2dyb3VuZCIsInRhZ05hbWUiLCJzZW1hbnRpY0NsYXNzTmFtZXMiLCJvblN0b3AiLCJvbkRibENsaWNrIiwib25Nb3VzZUVudGVyIiwib25Nb3VzZUxlYXZlIiwibGFuZyIsInRyYW5zbGF0aW9ucyIsImlzUGxheVBhdXNlU2VjdGlvbkV4cGVyaW1lbnRPbiIsImlzQnVpbGRlciIsIlRhZ05hbWUiLCJzaG91bGRPbWl0V3JhcHBlckxheWVycyIsImNsYXNzbmFtZXMiLCJzZWN0aW9uU2VtYW50aWNDbGFzc05hbWVzIiwiaGFzVmlkZW8iLCJ2aWRlb0FQSSIsInBsYXkiLCJsb2FkIiwicGF1c2UiLCJzdG9wIiwiY3VycmVudFRpbWUiLCJ1c2VWaWRlb0FQSSIsImlzVmlkZW9QbGF5aW5nIiwic2V0SXNWaWRlb1BsYXlpbmciLCJwYXVzZWQiLCJnZXREYXRhQXR0cmlidXRlcyIsImExMXkiLCJ0YWJJbmRleCIsInRhYmluZGV4IiwiZ2V0VGFiSW5kZXhBdHRyaWJ1dGUiLCJsYWJlbCIsInNlY3Rpb24iLCJvbkRvdWJsZUNsaWNrIiwiQmFja2dyb3VuZFgiLCJ2aWRlb1BsYXlQYXVzZUJ1dHRvbiIsImhhbmRsZVBsYXlQYXVzZSIsInByZXYiLCJuZXdQbGF5aW5nU3RhdGUiLCJzZWN0aW9uRWxlbWVudCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJxdWVyeVNlbGVjdG9yQWxsIiwiY2hpbGRWaWRlbyIsImFyaWFMYWJlbCIsIlNoYXBlRGl2aWRlcnMiLCJ2YWwiLCJiaW5kIiwibiIsImFyZ3VtZW50cyIsInQiLCJyIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiX19lc01vZHVsZSIsImFwcGx5IiwiZiIsImlzQXJyYXkiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwiZ2V0dGVyIiwiYSIsImRlZmluaXRpb24iLCJvIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0Iiwib2JqIiwicHJvcCIsInByb3RvdHlwZSIsIlN5bWJvbCIsInRvU3RyaW5nVGFnIl0sInNvdXJjZVJvb3QiOiIifQ==","'use client';\nimport { FooterSection as Component } from '@wix/editor-components/component/FooterSection';\nimport '@wix/editor-components/component/FooterSection/css';\nimport { withNormalChildren } from './hocs';\nexport const FooterSection = withNormalChildren(Component);\n//# sourceMappingURL=FooterSection.js.map","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\")):\"function\"==typeof define&&define.amd?define(\"thunderbolt/skin/HeaderContainer/TransparentScreen/HeaderContainer\",[\"react\"],t):\"object\"==typeof exports?exports[\"thunderbolt/skin/HeaderContainer/TransparentScreen/HeaderContainer\"]=t(require(\"react\")):e[\"thunderbolt/skin/HeaderContainer/TransparentScreen/HeaderContainer\"]=t(e.React)}(\"undefined\"!=typeof self?self:this,function(e){return function(){var t={eV9E:function(e,t,n){\"use strict\";n.d(t,{default:function(){return x}});var r=n(\"Fe5V\"),o=n.n(r),i=n(\"Xdf/\"),a=n.n(i),s=n(\"MRkx\");const d=\"wixui-\",u=(e,...t)=>{const n=[];return e&&n.push(`${d}${e}`),t.forEach(e=>{e&&(n.push(`${d}${e}`),n.push(e))}),n.join(\" \")};var c=n(\"guqK\");const l=\"mesh-container-content\",f=\"inline-content\",p=e=>a().createElement(\"div\",{key:e.props.id+\"-rotated-wrapper\",\"data-mesh-id\":e.props.id+\"-rotated-wrapper\"},e),m=(e,t)=>{const{id:n,className:r,wedges:i=[],rotatedComponents:d=[],children:u,fixedComponents:m=[],extraClassName:h=\"\",renderRotatedComponents:v=p}=e,w=a().Children.toArray(u()),y=[],g=[];w.forEach(e=>m.includes(e.props.id)?y.push(e):g.push(e));const b=(e=>{const{wedges:t,rotatedComponents:n,childrenArray:r,renderRotatedComponents:o}=e,i=n.reduce((e,t)=>({...e,[t]:!0}),{});return[...r.map(e=>{return i[(t=e,t.props.id.split(\"__\")[0])]?o(e):e;var t}),...t.map(e=>a().createElement(\"div\",{key:e,\"data-mesh-id\":e}))]})({childrenArray:g,rotatedComponents:d,wedges:i,renderRotatedComponents:v});return a().createElement(\"div\",o()({},(0,c.P5)(e),{\"data-mesh-id\":n+\"inlineContent\",\"data-testid\":f,className:(0,s.Z)(r,h),ref:t}),a().createElement(\"div\",{\"data-mesh-id\":n+\"inlineContent-gridContainer\",\"data-testid\":l},b),y)};var h=a().forwardRef(m),v=n(\"5zKW\");var w={root:\"header\"};const y=\"Reverse\",g=\"up\",b=\"down\";var x=e=>{const{id:t,skin:n,children:r,animations:d,meshProps:c,className:l,customClassNames:f=[],fillLayers:p,lang:m}=e,[x,C]=(0,i.useState)(\"\"),[E,k]=(0,i.useState)(!1),T=e=>{C(e),k(!1)};(0,i.useEffect)(()=>{window.TransitionEvent||setTimeout(()=>k(!0),200)},[x]);const H=x&&!(e=>e.endsWith(y))(x),j=()=>{const e=(e=>\"\"+e+y)(x);T(e)},P={onMouseEnter:e.onMouseEnter,onMouseLeave:e.onMouseLeave,onClick:e.onClick,onDoubleClick:e.onDblClick,onFocus:H?j:void 0,onTransitionEnd:()=>k(!0)};let R=b,O=0;(0,v.R)(e=>{var t,n;let{currPos:r,prevPos:o}=e;const i=r.y&&-1*r.y,a=o.y&&-1*o.y,s=d[d.length-1],u=null==(t=s.params)||null==(t=t.animations)?void 0:t[s.params.animations.length-1];if(!u)return;const c=\"mobile\"===(null==(n=s.viewMode)?void 0:n.toLowerCase())?1:(e=>{switch(e){case\"HeaderFadeOut\":return 200;case\"HeaderHideToTop\":return 400;default:return null}})(u.name);c&&(((e,t)=>{R===b&&e<t?(O=t,R=g):R===g&&e>t&&e>=0&&t>=0&&(O=t,R=b)})(i,a),H?(R===g&&i+c<O||0===r.y)&&j():R===b&&i-O>=c&&T(u.name))},[x,d],{disabled:!d||!d.length});const M=(0,s.Z)(l,u(w.root,...f));return a().createElement(n,{wrapperProps:{id:t,tagName:\"header\",eventHandlers:P,className:M,transition:x,transitionEnded:E,tabIndex:\"-1\",lang:m},\"data-block-level-container\":\"HeaderContainer\",fillLayers:p},a().createElement(h,o()({id:t},c,{children:r})))}},\"5zKW\":function(e,t,n){\"use strict\";n.d(t,{R:function(){return d}});var r=n(\"Xdf/\"),o=n(\"cy2i\"),i=n.n(o),a=n(\"guqK\");function s(){if(!(0,a.jU)())return{x:0,y:0,isAtPageBottom:!1};const{left:e,top:t}=document.body.getBoundingClientRect();return{x:e,y:t,isAtPageBottom:window.innerHeight+window.scrollY===document.body.scrollHeight}}function d(e,t,n){void 0===n&&(n={}),n={waitFor:100,disabled:!1,...n};const o=(0,r.useRef)(s());let d=null;const u=()=>{i().measure(()=>{const t=s(),n=o.current;o.current=t,d=null,i().mutate(()=>e({prevPos:n,currPos:t}))})};((0,a.jU)()?r.useLayoutEffect:r.useEffect)(()=>{if(!(0,a.jU)())return;const e=()=>{null===d&&(d=window.setTimeout(u,n.waitFor))};return n.disabled?()=>{}:(window.addEventListener(\"scroll\",e),()=>{window.removeEventListener(\"scroll\",e),d&&window.clearTimeout(d)})},t)}},cy2i:function(e,t,n){var r;!function(t){\"use strict\";var o=function(){},i=t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.msRequestAnimationFrame||function(e){return setTimeout(e,16)};function a(){var e=this;e.reads=[],e.writes=[],e.raf=i.bind(t),o(\"initialized\",e)}function s(e){e.scheduled||(e.scheduled=!0,e.raf(d.bind(null,e)),o(\"flush scheduled\"))}function d(e){o(\"flush\");var t,n=e.writes,r=e.reads;try{o(\"flushing reads\",r.length),e.runTasks(r),o(\"flushing writes\",n.length),e.runTasks(n)}catch(e){t=e}if(e.scheduled=!1,(r.length||n.length)&&s(e),t){if(o(\"task errored\",t.message),!e.catch)throw t;e.catch(t)}}function u(e,t){var n=e.indexOf(t);return!!~n&&!!e.splice(n,1)}a.prototype={constructor:a,runTasks:function(e){var t;for(o(\"run tasks\");t=e.shift();)t()},measure:function(e,t){o(\"measure\");var n=t?e.bind(t):e;return this.reads.push(n),s(this),n},mutate:function(e,t){o(\"mutate\");var n=t?e.bind(t):e;return this.writes.push(n),s(this),n},clear:function(e){return o(\"clear\",e),u(this.reads,e)||u(this.writes,e)},extend:function(e){if(o(\"extend\",e),\"object\"!=typeof e)throw new Error(\"expected object\");var t=Object.create(this);return function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])}(t,e),t.fastdom=this,t.initialize&&t.initialize(),t},catch:null};var c=t.fastdom=t.fastdom||new a;void 0===(r=function(){return c}.call(c,n,c,e))||(e.exports=r)}(\"undefined\"!=typeof window?window:void 0!==this?this:globalThis)},guqK:function(e,t,n){\"use strict\";n.d(t,{P5:function(){return o},jU:function(){return r}});const r=()=>\"undefined\"!=typeof window,o=e=>Object.entries(e).reduce((e,[t,n])=>(t.includes(\"data-\")&&(e[t]=n),e),{})},\"Xdf/\":function(t){\"use strict\";t.exports=e},Fe5V:function(e){function t(){return e.exports=t=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},e.exports.__esModule=!0,e.exports.default=e.exports,t.apply(null,arguments)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},MRkx:function(e,t,n){\"use strict\";function r(e){var t,n,o=\"\";if(\"string\"==typeof e||\"number\"==typeof e)o+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=r(e[t]))&&(o&&(o+=\" \"),o+=n);else for(t in e)e[t]&&(o&&(o+=\" \"),o+=t);return o}t.Z=function(){for(var e,t,n=0,o=\"\";n<arguments.length;)(e=arguments[n++])&&(t=r(e))&&(o&&(o+=\" \"),o+=t);return o}}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var i=n[e]={exports:{}};return t[e].call(i.exports,i,i.exports,r),i.exports}r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var o={};return function(){\"use strict\";r.r(o),r.d(o,{default:function(){return f}});var e=r(\"Fe5V\"),t=r.n(e),n=r(\"Xdf/\"),i=r.n(n),a={screenWidthBackground:\"lvxhkV\",HeaderHideToTop:\"QJjwEo\",headerHideToTop:\"QJjwEo\",HeaderHideToTopReverse:\"kdBXfh\",headerHideToTopReverse:\"kdBXfh\",HeaderFadeOut:\"MP52zt\",headerFadeOut:\"MP52zt\",transitionEnded:\"Bhu9m5\",HeaderFadeOutReverse:\"LVP8Wf\",headerFadeOutReverse:\"LVP8Wf\",inlineContent:\"VrZrC0\",centeredContent:\"cKxVkc\",centeredContentBg:\"vlM3HR\",root:\"AT7o0U\"},s=r(\"MRkx\");var d=e=>{let{id:n,className:r,skinClassName:o,tagName:a=\"div\",transition:d,transitionEnded:u,eventHandlers:c,skinStyles:l,children:f,tabIndex:p,lang:m}=e;const h=a;return i().createElement(h,t()({id:n,className:(0,s.Z)(o,d&&l[d],u&&l.transitionEnded,r),tabIndex:p,lang:m},c),f)};var u=e=>{let{wrapperProps:r,children:o,skinStyles:i}=e;return n.createElement(d,t()({},r,{skinClassName:i.root,skinStyles:i}),n.createElement(\"div\",{className:i.screenWidthBackground}),n.createElement(\"div\",{className:i.centeredContent},n.createElement(\"div\",{className:i.centeredContentBg}),n.createElement(\"div\",{className:i.inlineContent},o)))};var c=e=>i().createElement(u,t()({},e,{skinStyles:a})),l=r(\"eV9E\");var f=e=>i().createElement(l.default,t()({},e,{skin:c}))}(),o}()});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGh1bmRlcmJvbHQvc2tpbi9IZWFkZXJDb250YWluZXIvVHJhbnNwYXJlbnRTY3JlZW4vSGVhZGVyQ29udGFpbmVyLmJ1bmRsZS5taW4uanMiLCJtYXBwaW5ncyI6IkNBQUEsU0FBMkNBLEVBQU1DLEdBQzFCLGlCQUFaQyxTQUEwQyxpQkFBWEMsT0FDeENBLE9BQU9ELFFBQVVELEVBQVFHLFFBQVEsVUFDUixtQkFBWEMsUUFBeUJBLE9BQU9DLElBQzlDRCxPQUFPLHFFQUFzRSxDQUFDLFNBQVVKLEdBQzlELGlCQUFaQyxRQUNkQSxRQUFRLHNFQUF3RUQsRUFBUUcsUUFBUSxVQUVoR0osRUFBSyxzRUFBd0VDLEVBQVFELEVBQVksTUFDbEcsQ0FURCxDQVNvQixvQkFBVE8sS0FBdUJBLEtBQU9DLEtBQU8sU0FBU0MsR0FDekQsTyxvSkNWTyxNQUFNQyxFQUFhLFNBQ2JDLEVBQW1CLENBQUNDLEtBQXNCQyxLQUNuRCxNQUFNQyxFQUFTLEdBV2YsT0FWSUYsR0FDQUUsRUFBT0MsS0FBSyxHQUFHTCxJQUFhRSxLQUVoQ0MsRUFBaUJHLFFBQVFDLElBQ2pCQSxJQUVBSCxFQUFPQyxLQUFLLEdBQUdMLElBQWFPLEtBQzVCSCxFQUFPQyxLQUFLRSxNQUdiSCxFQUFPSSxLQUFLLE0sZ0JDYmhCLE1BQU1DLEVBQ0YseUJBREVBLEVBRUksaUJDc0JYQyxFQUFrQ0MsR0FDdENDLElBQUFBLGNBQUEsT0FDRUMsSUFBUUYsRUFBTUcsTUFBTUMsR0FBRSxtQkFDdEIsZUFBaUJKLEVBQU1HLE1BQU1DLEdBQUUsb0JBRTlCSixHQWdDQ0ssRUFHRkEsQ0FBQ0YsRUFBT0csS0FDVixNQUFNLEdBQ0pGLEVBQUUsVUFDRlIsRUFBUyxPQUNUVyxFQUFTLEdBQUUsa0JBQ1hDLEVBQW9CLEdBQUUsU0FDdEJDLEVBQVEsZ0JBQ1JDLEVBQWtCLEdBQUUsZUFDcEJDLEVBQWlCLEdBQUUsd0JBQ25CQyxFQUEwQmIsR0FDeEJJLEVBQ0VVLEVBQWdCWixJQUFBQSxTQUFlYSxRQUFRTCxLQUV2Q00sRUFB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ekIsRUFBSyxDQUFFOEIsS0FBTWlMLEkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL2VkaXRvci1lbGVtZW50cy1jb21tb24tdXRpbHMvZGlzdC9lc20vY3NzRWRpdGluZy9jbGFzcy1uYW1lcy1mb3JtbWF0ZXIuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvdGh1bmRlcmJvbHQtY29yZS1jb21wb25lbnRzL01lc2hDb250YWluZXIvY29uc3RhbnRzLnRzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL3RodW5kZXJib2x0LWNvcmUtY29tcG9uZW50cy9NZXNoQ29udGFpbmVyL3ZpZXdlci9NZXNoQ29udGFpbmVyLnRzeCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL0hlYWRlckNvbnRhaW5lci9IZWFkZXJDb250YWluZXIuc2VtYW50aWNDbGFzc05hbWVzLnRzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvSGVhZGVyQ29udGFpbmVyL3ZpZXdlci9IZWFkZXJDb250YWluZXIudHN4Iiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL3Byb3ZpZGVycy91c2VTY3JvbGxQb3NpdGlvbi9pbmRleC50cyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9mYXN0ZG9tL2Zhc3Rkb20uanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi9lZGl0b3ItZWxlbWVudHMtY29tbW9uLXV0aWxzL2Rpc3QvZXNtL2NvbW1vbnMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS9leHRlcm5hbCB1bWQge1wiYW1kXCI6XCJyZWFjdFwiLFwiY29tbW9uanNcIjpcInJlYWN0XCIsXCJjb21tb25qczJcIjpcInJlYWN0XCIsXCJyb290XCI6XCJSZWFjdFwifSIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHMuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2xzeC9kaXN0L2Nsc3gubWpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvU2NyZWVuV2lkdGhDb250YWluZXIvdmlld2VyL3NraW5Db21wcy9CYXNlU2NyZWVuL3N0eWxlcy9UcmFuc3BhcmVudFNjcmVlbi5zY3NzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvU2NyZWVuV2lkdGhDb250YWluZXIvdmlld2VyL1dyYXBwZXJFbGVtZW50LnRzeCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL1NjcmVlbldpZHRoQ29udGFpbmVyL3ZpZXdlci9za2luQ29tcHMvQmFzZVNjcmVlbi9CYXNlU2NyZWVuU2tpbi50c3giLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvY29tcG9uZW50cy9TY3JlZW5XaWR0aENvbnRhaW5lci92aWV3ZXIvc2tpbkNvbXBzL0Jhc2VTY3JlZW4vVHJhbnNwYXJlbnRTY3JlZW4udHN4Iiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvSGVhZGVyQ29udGFpbmVyL3ZpZXdlci9za2luQ29tcHMvQmFzZVNjcmVlbi9UcmFuc3BhcmVudFNjcmVlbi5za2luLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShcInRodW5kZXJib2x0L3NraW4vSGVhZGVyQ29udGFpbmVyL1RyYW5zcGFyZW50U2NyZWVuL0hlYWRlckNvbnRhaW5lclwiLCBbXCJyZWFjdFwiXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJ0aHVuZGVyYm9sdC9za2luL0hlYWRlckNvbnRhaW5lci9UcmFuc3BhcmVudFNjcmVlbi9IZWFkZXJDb250YWluZXJcIl0gPSBmYWN0b3J5KHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cdGVsc2Vcblx0XHRyb290W1widGh1bmRlcmJvbHQvc2tpbi9IZWFkZXJDb250YWluZXIvVHJhbnNwYXJlbnRTY3JlZW4vSGVhZGVyQ29udGFpbmVyXCJdID0gZmFjdG9yeShyb290W1wiUmVhY3RcIl0pO1xufSkoKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB0aGlzKSwgZnVuY3Rpb24oX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9YZGZfX18pIHtcbnJldHVybiAiLCJleHBvcnQgY29uc3QgQ1NTX1BSRUZJWCA9ICd3aXh1aS0nO1xuZXhwb3J0IGNvbnN0IGZvcm1hdENsYXNzTmFtZXMgPSAoc2VtYW50aWNDbGFzc05hbWUsIC4uLmN1c3RvbUNsYXNzTmFtZXMpID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBpZiAoc2VtYW50aWNDbGFzc05hbWUpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goYCR7Q1NTX1BSRUZJWH0ke3NlbWFudGljQ2xhc3NOYW1lfWApO1xuICAgIH1cbiAgICBjdXN0b21DbGFzc05hbWVzLmZvckVhY2goY2xhc3NOYW1lID0+IHtcbiAgICAgICAgaWYgKGNsYXNzTmFtZSkge1xuICAgICAgICAgICAgLy8gYWRkIGVhY2ggY3VzdG9tIGNsYXNzIHdpdGggYW5kIHdpdGhvdXQgdGhlIHByZWZpeFxuICAgICAgICAgICAgcmVzdWx0LnB1c2goYCR7Q1NTX1BSRUZJWH0ke2NsYXNzTmFtZX1gKTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGNsYXNzTmFtZSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0LmpvaW4oJyAnKTtcbn07XG4vLyByZW1vdmUgd2hlbiBodHRwczovL2dpdGh1Yi5jb20vc2VhcmNoP3E9cmVwbyUzQXdpeC1wcml2YXRlJTJGdGh1bmRlcmJvbHQlMjBjdXN0b21Dc3NDbGFzc2VzJnR5cGU9Y29kZSBoYXMgbm8gdXNhZ2VzXG5leHBvcnQgY29uc3QgY3VzdG9tQ3NzQ2xhc3NlcyA9ICguLi5jbGFzc05hbWVzKSA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLndhcm4oJ2N1c3RvbUNzc0NsYXNzZXMgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBmb3JtYXRDbGFzc05hbWVzIGluc3RlYWQnKTtcbiAgICBjb25zdCBbc2VtYW50aWMsIC4uLnJlc3RdID0gY2xhc3NOYW1lcztcbiAgICByZXR1cm4gZm9ybWF0Q2xhc3NOYW1lcyhzZW1hbnRpYywgLi4ucmVzdCk7XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2xhc3MtbmFtZXMtZm9ybW1hdGVyLmpzLm1hcCIsImV4cG9ydCBjb25zdCBUZXN0SWRzID0ge1xuICBjb250ZW50OiAnbWVzaC1jb250YWluZXItY29udGVudCcsXG4gIGlubGluZUNvbnRlbnQ6ICdpbmxpbmUtY29udGVudCcsXG59IGFzIGNvbnN0O1xuIiwiaW1wb3J0IHR5cGUge1xuICBEZWZhdWx0Q29tcFBsYXRmb3JtUHJvcHMsXG4gIERlZmF1bHRDb250YWluZXJQcm9wcyxcbn0gZnJvbSAnQHdpeC9lZGl0b3ItZWxlbWVudHMtdHlwZXMvdGh1bmRlcmJvbHQnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xzeCc7XG5pbXBvcnQgdHlwZSB7IFJlYWN0RWxlbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBnZXREYXRhQXR0cmlidXRlcyB9IGZyb20gJ0B3aXgvZWRpdG9yLWVsZW1lbnRzLWNvbW1vbi11dGlscyc7XG5pbXBvcnQgeyBUZXN0SWRzIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuZXhwb3J0IHR5cGUgTWVzaENvbnRhaW5lclByb3BzID0gRGVmYXVsdENvbXBQbGF0Zm9ybVByb3BzICZcbiAgRGVmYXVsdENvbnRhaW5lclByb3BzICYge1xuICAgIHdlZGdlcz86IEFycmF5PHN0cmluZz47XG4gICAgcm90YXRlZENvbXBvbmVudHM/OiBBcnJheTxzdHJpbmc+O1xuICAgIGZpeGVkQ29tcG9uZW50cz86IEFycmF5PHN0cmluZz47XG4gICAgZXh0cmFDbGFzc05hbWU/OiBzdHJpbmc7XG4gICAgcmVuZGVyUm90YXRlZENvbXBvbmVudHM/OiAoY2hpbGQ6IFJlYWN0RWxlbWVudCkgPT4gUmVhY3RFbGVtZW50O1xuICB9O1xuXG5jb25zdCBSRVBFQVRFUl9ERUxJTUlURVIgPSAnX18nO1xuXG5jb25zdCBnZXRUZW1wbGF0ZUlkID0gKGNvbXA6IFJlYWN0RWxlbWVudCkgPT5cbiAgY29tcC5wcm9wcy5pZC5zcGxpdChSRVBFQVRFUl9ERUxJTUlURVIpWzBdO1xuXG5jb25zdCByZW5kZXJSb3RhdGVkQ29tcG9uZW50c1dyYXBwZXIgPSAoY2hpbGQ6IFJlYWN0RWxlbWVudCk6IFJlYWN0RWxlbWVudCA9PiAoXG4gIDxkaXZcbiAgICBrZXk9e2Ake2NoaWxkLnByb3BzLmlkfS1yb3RhdGVkLXdyYXBwZXJgfVxuICAgIGRhdGEtbWVzaC1pZD17YCR7Y2hpbGQucHJvcHMuaWR9LXJvdGF0ZWQtd3JhcHBlcmB9XG4gID5cbiAgICB7Y2hpbGR9XG4gIDwvZGl2PlxuKTtcblxudHlwZSBSZW5kZXJDaGlsZHJlblByb3BzID0ge1xuICB3ZWRnZXM6IEFycmF5PHN0cmluZz47XG4gIHJvdGF0ZWRDb21wb25lbnRzOiBBcnJheTxzdHJpbmc+O1xuICBjaGlsZHJlbkFycmF5OiBBcnJheTxSZWFjdC5SZWFjdE5vZGU+O1xuICByZW5kZXJSb3RhdGVkQ29tcG9uZW50czogKGNoaWxkOiBSZWFjdEVsZW1lbnQpID0+IFJlYWN0RWxlbWVudDtcbn07XG5cbmNvbnN0IHJlbmRlckNoaWxkcmVuID0gKHByb3BzOiBSZW5kZXJDaGlsZHJlblByb3BzKSA9PiB7XG4gIGNvbnN0IHsgd2VkZ2VzLCByb3RhdGVkQ29tcG9uZW50cywgY2hpbGRyZW5BcnJheSwgcmVuZGVyUm90YXRlZENvbXBvbmVudHMgfSA9XG4gICAgcHJvcHM7XG4gIGNvbnN0IHJvdGF0ZWRDb21wb25lbnRzU2V0OiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9XG4gICAgcm90YXRlZENvbXBvbmVudHMucmVkdWNlKFxuICAgICAgKGFjYywgcm90YXRlZENvbXBvbmVudCkgPT4gKHsgLi4uYWNjLCBbcm90YXRlZENvbXBvbmVudF06IHRydWUgfSksXG4gICAgICB7fSxcbiAgICApO1xuXG4gIGNvbnN0IHJlbmRlcmVkUm90YXRlZENvbXBvbmVudHMgPSBjaGlsZHJlbkFycmF5Lm1hcChjaGlsZCA9PlxuICAgIHJvdGF0ZWRDb21wb25lbnRzU2V0W2dldFRlbXBsYXRlSWQoY2hpbGQgYXMgUmVhY3QuUmVhY3RFbGVtZW50KV1cbiAgICAgID8gcmVuZGVyUm90YXRlZENvbXBvbmVudHMoY2hpbGQgYXMgUmVhY3QuUmVhY3RFbGVtZW50KVxuICAgICAgOiBjaGlsZCxcbiAgKTtcbiAgY29uc3QgcmVuZGVyZWRXZWRnZXMgPSB3ZWRnZXMubWFwKHdlZGdlID0+IChcbiAgICA8ZGl2IGtleT17d2VkZ2V9IGRhdGEtbWVzaC1pZD17d2VkZ2V9IC8+XG4gICkpO1xuXG4gIHJldHVybiBbLi4ucmVuZGVyZWRSb3RhdGVkQ29tcG9uZW50cywgLi4ucmVuZGVyZWRXZWRnZXNdO1xufTtcblxuY29uc3QgTWVzaENvbnRhaW5lcjogUmVhY3QuRm9yd2FyZFJlZlJlbmRlckZ1bmN0aW9uPFxuICBIVE1MRGl2RWxlbWVudCxcbiAgTWVzaENvbnRhaW5lclByb3BzXG4+ID0gKHByb3BzLCByZWYpID0+IHtcbiAgY29uc3Qge1xuICAgIGlkLFxuICAgIGNsYXNzTmFtZSxcbiAgICB3ZWRnZXMgPSBbXSxcbiAgICByb3RhdGVkQ29tcG9uZW50cyA9IFtdLFxuICAgIGNoaWxkcmVuLFxuICAgIGZpeGVkQ29tcG9uZW50cyA9IFtdLFxuICAgIGV4dHJhQ2xhc3NOYW1lID0gJycsXG4gICAgcmVuZGVyUm90YXRlZENvbXBvbmVudHMgPSByZW5kZXJSb3RhdGVkQ29tcG9uZW50c1dyYXBwZXIsXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgY2hpbGRyZW5BcnJheSA9IFJlYWN0LkNoaWxkcmVuLnRvQXJyYXkoY2hpbGRyZW4oKSk7XG5cbiAgY29uc3QgZml4ZWRDaGlsZHJlbjogQXJyYXk8UmVhY3QuUmVhY3ROb2RlPiA9IFtdO1xuICBjb25zdCBub25GaXhlZENoaWxkcmVuOiBBcnJheTxSZWFjdC5SZWFjdE5vZGU+ID0gW107XG5cbiAgY2hpbGRyZW5BcnJheS5mb3JFYWNoKGNvbXAgPT5cbiAgICBmaXhlZENvbXBvbmVudHMuaW5jbHVkZXMoKGNvbXAgYXMgUmVhY3QuUmVhY3RFbGVtZW50KS5wcm9wcy5pZClcbiAgICAgID8gZml4ZWRDaGlsZHJlbi5wdXNoKGNvbXApXG4gICAgICA6IG5vbkZpeGVkQ2hpbGRyZW4ucHVzaChjb21wKSxcbiAgKTtcblxuICBjb25zdCBtZXNoQ2hpbGRyZW4gPSByZW5kZXJDaGlsZHJlbih7XG4gICAgY2hpbGRyZW5BcnJheTogbm9uRml4ZWRDaGlsZHJlbixcbiAgICByb3RhdGVkQ29tcG9uZW50cyxcbiAgICB3ZWRnZXMsXG4gICAgcmVuZGVyUm90YXRlZENvbXBvbmVudHMsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgey4uLmdldERhdGFBdHRyaWJ1dGVzKHByb3BzKX1cbiAgICAgIGRhdGEtbWVzaC1pZD17YCR7aWR9aW5saW5lQ29udGVudGB9XG4gICAgICBkYXRhLXRlc3RpZD17VGVzdElkcy5pbmxpbmVDb250ZW50fVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKGNsYXNzTmFtZSwgZXh0cmFDbGFzc05hbWUpfVxuICAgICAgcmVmPXtyZWZ9XG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBkYXRhLW1lc2gtaWQ9e2Ake2lkfWlubGluZUNvbnRlbnQtZ3JpZENvbnRhaW5lcmB9XG4gICAgICAgIGRhdGEtdGVzdGlkPXtUZXN0SWRzLmNvbnRlbnR9XG4gICAgICA+XG4gICAgICAgIHttZXNoQ2hpbGRyZW59XG4gICAgICA8L2Rpdj5cbiAgICAgIHtmaXhlZENoaWxkcmVufVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVhY3QuZm9yd2FyZFJlZihNZXNoQ29udGFpbmVyKTtcbiIsImNvbnN0IHNlbWFudGljQ2xhc3NOYW1lcyA9IHtcbiAgcm9vdDogJ2hlYWRlcicsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgZGVmYXVsdCBzZW1hbnRpY0NsYXNzTmFtZXM7XG4iLCIndXNlLWNsaWVudCc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyBmb3JtYXRDbGFzc05hbWVzIH0gZnJvbSAnQHdpeC9lZGl0b3ItZWxlbWVudHMtY29tbW9uLXV0aWxzJztcbmltcG9ydCBNZXNoQ29udGFpbmVyIGZyb20gJy4uLy4uLy4uL3RodW5kZXJib2x0LWNvcmUtY29tcG9uZW50cy9NZXNoQ29udGFpbmVyL3ZpZXdlci9NZXNoQ29udGFpbmVyJztcbmltcG9ydCB0eXBlIHsgSUhlYWRlckNvbnRhaW5lclByb3BzIH0gZnJvbSAnLi4vSGVhZGVyQ29udGFpbmVyLnR5cGVzJztcbmltcG9ydCB7IHVzZVNjcm9sbFBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vLi4vcHJvdmlkZXJzL3VzZVNjcm9sbFBvc2l0aW9uJztcbmltcG9ydCB0eXBlIHsgV3JhcHBlckV2ZW50SGFuZGxlcnMgfSBmcm9tICcuLi8uLi9TY3JlZW5XaWR0aENvbnRhaW5lci9Ta2luU2NyZWVuV2lkdGhDb250YWluZXInO1xuaW1wb3J0IHNlbWFudGljQ2xhc3NOYW1lcyBmcm9tICcuLi9IZWFkZXJDb250YWluZXIuc2VtYW50aWNDbGFzc05hbWVzJztcblxuY29uc3QgVFJBTlNJVElPTl9EVVJBVElPTiA9IDIwMDtcbmNvbnN0IFJFVkVSU0VfVFJBTlNJVElPTl9TVUZGSVggPSAnUmV2ZXJzZSc7XG5jb25zdCBERUZBVUxUX1RBQl9JTkRFWCA9ICctMSc7XG5cbmNvbnN0IGlzUmV2ZXJzZVRyYW5zaXRpb24gPSAodHJhbnNpdGlvbk5hbWU6IHN0cmluZykgPT5cbiAgdHJhbnNpdGlvbk5hbWUuZW5kc1dpdGgoUkVWRVJTRV9UUkFOU0lUSU9OX1NVRkZJWCk7XG5jb25zdCBnZXRSZXZlcnNlVHJhbnNpdGlvbk5hbWUgPSAodHJhbnNpdGlvbk5hbWU6IHN0cmluZykgPT5cbiAgYCR7dHJhbnNpdGlvbk5hbWV9JHtSRVZFUlNFX1RSQU5TSVRJT05fU1VGRklYfWA7XG5cbmNvbnN0IFNjcm9sbERpcmVjdGlvbiA9IHtcbiAgdXA6ICd1cCcsXG4gIGRvd246ICdkb3duJyxcbn0gYXMgY29uc3Q7XG5jb25zdCBNT0JJTEVWSUVXID0gJ21vYmlsZSc7XG5cbmNvbnN0IGdldEFuaW1hdGlvblN0YXJ0VGhyZXNob2xkRm9yTW9iaWxlID0gKCkgPT4ge1xuICAvLyBzdGFydCBhbmltYXRpb24gaW1tZWRpYXRlbHksIGRvbid0IHdhaXQgZm9yIGNlcnRhaW4gc2Nyb2xsIHBvc2l0aW9uXG4gIHJldHVybiAxO1xufTtcblxuY29uc3QgZ2V0QW5pbWF0aW9uU3RhcnRUaHJlc2hvbGRGb3JEZXNrdG9wID0gKGFuaW1hdGlvbjogc3RyaW5nKSA9PiB7XG4gIHN3aXRjaCAoYW5pbWF0aW9uKSB7XG4gICAgY2FzZSAnSGVhZGVyRmFkZU91dCc6XG4gICAgICByZXR1cm4gMjAwO1xuICAgIGNhc2UgJ0hlYWRlckhpZGVUb1RvcCc6XG4gICAgICByZXR1cm4gNDAwO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufTtcblxuY29uc3QgSGVhZGVyQ29udGFpbmVyOiBSZWFjdC5GQzxJSGVhZGVyQ29udGFpbmVyUHJvcHM+ID0gcHJvcHMgPT4ge1xuICBjb25zdCB7XG4gICAgaWQsXG4gICAgc2tpbjogSGVhZGVyQ29udGFpbmVyQ2xhc3MsXG4gICAgY2hpbGRyZW4sXG4gICAgYW5pbWF0aW9ucyxcbiAgICBtZXNoUHJvcHMsXG4gICAgY2xhc3NOYW1lLFxuICAgIGN1c3RvbUNsYXNzTmFtZXMgPSBbXSxcbiAgICBmaWxsTGF5ZXJzLFxuICAgIGxhbmcsXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCBbdHJhbnNpdGlvbk5hbWUsIHNldFRyYW5zaXRpb25OYW1lXSA9IHVzZVN0YXRlPHN0cmluZz4oJycpO1xuICBjb25zdCBbdHJhbnNpdGlvbkVuZGVkLCBzZXRUcmFuc2l0aW9uRW5kZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IHN0YXJ0VHJhbnNpdGlvbiA9IChuZXdUcmFuc2l0aW9uOiBzdHJpbmcpID0+IHtcbiAgICBzZXRUcmFuc2l0aW9uTmFtZShuZXdUcmFuc2l0aW9uKTtcbiAgICBzZXRUcmFuc2l0aW9uRW5kZWQoZmFsc2UpO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLyoqIElmIGJyb3dzZXIgZG9lc24ndCBzdXBwb3J0IGBvbnRyYW5zaXRpb25lbmRgXG4gICAgICogbWFudWFsbHkgc2V0IHRyYW5zaXRpb24gZW5kZWQgYWZ0ZXIgdHJhbnNpdGlvbiBkdXJhdGlvbiAqL1xuICAgIGlmICghd2luZG93LlRyYW5zaXRpb25FdmVudCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiBzZXRUcmFuc2l0aW9uRW5kZWQodHJ1ZSksIFRSQU5TSVRJT05fRFVSQVRJT04pO1xuICAgIH1cbiAgfSwgW3RyYW5zaXRpb25OYW1lXSk7XG5cbiAgY29uc3QgaXNIaWRkZW4gPSB0cmFuc2l0aW9uTmFtZSAmJiAhaXNSZXZlcnNlVHJhbnNpdGlvbih0cmFuc2l0aW9uTmFtZSk7XG5cbiAgLy8gc2hvdyBoZWFkZXIgYnkgcnVubmluZyBhbmltYXRpb25cbiAgY29uc3Qgc2hvd0hlYWRlciA9ICgpID0+IHtcbiAgICBjb25zdCByZXZlcnNlVHJhbnNpdGlvbk5hbWUgPSBnZXRSZXZlcnNlVHJhbnNpdGlvbk5hbWUodHJhbnNpdGlvbk5hbWUpO1xuICAgIHN0YXJ0VHJhbnNpdGlvbihyZXZlcnNlVHJhbnNpdGlvbk5hbWUpO1xuICB9O1xuXG4gIGNvbnN0IHNka0V2ZW50SGFuZGxlcnM6IFdyYXBwZXJFdmVudEhhbmRsZXJzID0ge1xuICAgIG9uTW91c2VFbnRlcjogcHJvcHMub25Nb3VzZUVudGVyLFxuICAgIG9uTW91c2VMZWF2ZTogcHJvcHMub25Nb3VzZUxlYXZlLFxuICAgIG9uQ2xpY2s6IHByb3BzLm9uQ2xpY2ssXG4gICAgb25Eb3VibGVDbGljazogcHJvcHMub25EYmxDbGljayxcbiAgICBvbkZvY3VzOiBpc0hpZGRlbiA/IHNob3dIZWFkZXIgOiB1bmRlZmluZWQsXG4gICAgb25UcmFuc2l0aW9uRW5kOiAoKSA9PiBzZXRUcmFuc2l0aW9uRW5kZWQodHJ1ZSksXG4gIH07XG5cbiAgbGV0IGRpcmVjdGlvbjogKHR5cGVvZiBTY3JvbGxEaXJlY3Rpb24pW2tleW9mIHR5cGVvZiBTY3JvbGxEaXJlY3Rpb25dID1cbiAgICBTY3JvbGxEaXJlY3Rpb24uZG93bjtcbiAgbGV0IGRpcmVjdGlvbkZsaXBQb3NpdGlvbiA9IDA7XG5cbiAgY29uc3QgdXBkYXRlU2Nyb2xsRGlyZWN0aW9uID0gKFxuICAgIGN1cnJlbnRQb3NpdGlvbjogbnVtYmVyLFxuICAgIHByZXZQb3NpdGlvbjogbnVtYmVyLFxuICApID0+IHtcbiAgICAvLyBjYXRjaCBzY3JvbGwgZGlyZWN0aW9uIGNoYW5nZSBhbmQgcmVjb3JkIHNjcm9sbCBmbGlwIHBvc2l0aW9uXG4gICAgLy8gZGlyZWN0aW9uRmxpcFBvc2l0aW9uIGRlZmF1bHRzIHRvIDAgKHRvcCBvZiB0aGUgcGFnZSksIGJ1dCBpZiB3ZSBmbGlwIHNjcm9sbCBkaXJlY3Rpb24sXG4gICAgLy8gdGhpcyB3aWxsIGJlIHRoZSBuZXcgZGlyZWN0aW9uRmxpcFBvc2l0aW9uLCBmcm9tIHdoaWNoIHdlIGNhbGN1bGF0ZSB3aGVuIHRvIHN0YXJ0IGFuaW1hdGlvblxuICAgIGlmIChkaXJlY3Rpb24gPT09IFNjcm9sbERpcmVjdGlvbi5kb3duICYmIGN1cnJlbnRQb3NpdGlvbiA8IHByZXZQb3NpdGlvbikge1xuICAgICAgZGlyZWN0aW9uRmxpcFBvc2l0aW9uID0gcHJldlBvc2l0aW9uO1xuICAgICAgZGlyZWN0aW9uID0gU2Nyb2xsRGlyZWN0aW9uLnVwO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBkaXJlY3Rpb24gPT09IFNjcm9sbERpcmVjdGlvbi51cCAmJlxuICAgICAgY3VycmVudFBvc2l0aW9uID4gcHJldlBvc2l0aW9uICYmXG4gICAgICBjdXJyZW50UG9zaXRpb24gPj0gMCAmJlxuICAgICAgcHJldlBvc2l0aW9uID49IDAgLy8gaWdub3JlIGRpcmVjdGlvbiBmbGlwIG91dHNpZGUgc2Nyb2xscG9ydCwgb3RoZXJ3aXNlIHdpdGggcnViYmVyIHNjcm9sbCBvbiBTYWZhcmkgaGVhZGVyIGRpc2FwcGVhcnMgYXQgdGhlIHRvcCBvZiB0aGUgcGFnZVxuICAgICkge1xuICAgICAgZGlyZWN0aW9uRmxpcFBvc2l0aW9uID0gcHJldlBvc2l0aW9uO1xuICAgICAgZGlyZWN0aW9uID0gU2Nyb2xsRGlyZWN0aW9uLmRvd247XG4gICAgfVxuICB9O1xuXG4gIHVzZVNjcm9sbFBvc2l0aW9uKFxuICAgICh7IGN1cnJQb3MsIHByZXZQb3MgfSkgPT4ge1xuICAgICAgLy8gbXVsdGlwbHkgYnkgLTEgaWYgbm90IHplcm8gKC0wIGlzIGNvbmZ1c2luZyBkdXJpbmcgZGVidWcpXG4gICAgICBjb25zdCBjdXJyZW50UG9zaXRpb24gPSBjdXJyUG9zLnkgJiYgY3VyclBvcy55ICogLTE7XG4gICAgICBjb25zdCBwcmV2UG9zaXRpb24gPSBwcmV2UG9zLnkgJiYgcHJldlBvcy55ICogLTE7XG5cbiAgICAgIGNvbnN0IGxhc3RBbmltYXRpb24gPSBhbmltYXRpb25zW2FuaW1hdGlvbnMubGVuZ3RoIC0gMV07XG4gICAgICBjb25zdCBsYXN0VHJhbnNpdGlvbiA9XG4gICAgICAgIGxhc3RBbmltYXRpb24ucGFyYW1zPy5hbmltYXRpb25zPy5bXG4gICAgICAgICAgbGFzdEFuaW1hdGlvbi5wYXJhbXMuYW5pbWF0aW9ucy5sZW5ndGggLSAxXG4gICAgICAgIF07XG5cbiAgICAgIGlmICghbGFzdFRyYW5zaXRpb24pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBhbmltYXRpb25TdGFydFRocmVzaG9sZCA9XG4gICAgICAgIGxhc3RBbmltYXRpb24udmlld01vZGU/LnRvTG93ZXJDYXNlKCkgPT09IE1PQklMRVZJRVdcbiAgICAgICAgICA/IGdldEFuaW1hdGlvblN0YXJ0VGhyZXNob2xkRm9yTW9iaWxlKClcbiAgICAgICAgICA6IGdldEFuaW1hdGlvblN0YXJ0VGhyZXNob2xkRm9yRGVza3RvcChsYXN0VHJhbnNpdGlvbi5uYW1lKTtcbiAgICAgIGlmIChhbmltYXRpb25TdGFydFRocmVzaG9sZCkge1xuICAgICAgICB1cGRhdGVTY3JvbGxEaXJlY3Rpb24oY3VycmVudFBvc2l0aW9uLCBwcmV2UG9zaXRpb24pO1xuXG4gICAgICAgIGlmIChpc0hpZGRlbikge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIC8vIHdlIGhhdmUgc2Nyb2xsZWQgZmFyIGVub3VnaCBmcm9tIHRoZSBwb3NpdGlvbiB3aGVyZSBzY3JvbGwgZGlyZWN0aW9uIHdhcyBmbGlwcGVkIG9yIHdlIGFyZSBhdCB0aGUgdG9wIG9mIHRoZSBwYWdlXG4gICAgICAgICAgICAoZGlyZWN0aW9uID09PSBTY3JvbGxEaXJlY3Rpb24udXAgJiZcbiAgICAgICAgICAgICAgY3VycmVudFBvc2l0aW9uICsgYW5pbWF0aW9uU3RhcnRUaHJlc2hvbGQgPFxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbkZsaXBQb3NpdGlvbikgfHxcbiAgICAgICAgICAgIGN1cnJQb3MueSA9PT0gMCAvLyBtYWtlIHN1cmUgaGVhZGVyIGlzIGFsd2F5cyB2aXNpYmxlIGF0IHRoZSB0b3Agb2YgdGhlIHBhZ2UuIER1ZSB0byBydWJiZXIgc2Nyb2xsIG9uIFNhZmFyaSBpdCBtYXkgZGlzYXBwZWFyIGFmdGVyIG92ZXJzY3JvbGxcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHNob3dIZWFkZXIoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgLy8gd2UgaGF2ZSBzY3JvbGxlZCBmYXIgZW5vdWdoIGZyb20gdGhlIHBvc2l0aW9uIHdoZXJlIHNjcm9sbCBkaXJlY3Rpb24gd2FzIGZsaXBwZWRcbiAgICAgICAgICBkaXJlY3Rpb24gPT09IFNjcm9sbERpcmVjdGlvbi5kb3duICYmXG4gICAgICAgICAgY3VycmVudFBvc2l0aW9uIC0gZGlyZWN0aW9uRmxpcFBvc2l0aW9uID49IGFuaW1hdGlvblN0YXJ0VGhyZXNob2xkXG4gICAgICAgICkge1xuICAgICAgICAgIC8vIGhpZGUgaGVhZGVyIGJ5IHJ1bm5pbmcgYW1pbWF0aW9uXG4gICAgICAgICAgc3RhcnRUcmFuc2l0aW9uKGxhc3RUcmFuc2l0aW9uLm5hbWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbdHJhbnNpdGlvbk5hbWUsIGFuaW1hdGlvbnNdLFxuICAgIHsgZGlzYWJsZWQ6ICFhbmltYXRpb25zIHx8ICFhbmltYXRpb25zLmxlbmd0aCB9LFxuICApO1xuXG4gIGNvbnN0IHJvb3RDbGFzc05hbWVzID0gY2xhc3NOYW1lcyhcbiAgICBjbGFzc05hbWUsXG4gICAgZm9ybWF0Q2xhc3NOYW1lcyhzZW1hbnRpY0NsYXNzTmFtZXMucm9vdCwgLi4uY3VzdG9tQ2xhc3NOYW1lcyksXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8SGVhZGVyQ29udGFpbmVyQ2xhc3NcbiAgICAgIHdyYXBwZXJQcm9wcz17e1xuICAgICAgICBpZCxcbiAgICAgICAgdGFnTmFtZTogJ2hlYWRlcicsXG4gICAgICAgIGV2ZW50SGFuZGxlcnM6IHNka0V2ZW50SGFuZGxlcnMsXG4gICAgICAgIGNsYXNzTmFtZTogcm9vdENsYXNzTmFtZXMsXG4gICAgICAgIHRyYW5zaXRpb246IHRyYW5zaXRpb25OYW1lLFxuICAgICAgICB0cmFuc2l0aW9uRW5kZWQsXG4gICAgICAgIHRhYkluZGV4OiBERUZBVUxUX1RBQl9JTkRFWCxcbiAgICAgICAgbGFuZyxcbiAgICAgIH19XG4gICAgICBkYXRhLWJsb2NrLWxldmVsLWNvbnRhaW5lcj1cIkhlYWRlckNvbnRhaW5lclwiXG4gICAgICBmaWxsTGF5ZXJzPXtmaWxsTGF5ZXJzfVxuICAgID5cbiAgICAgIDxNZXNoQ29udGFpbmVyIGlkPXtpZH0gey4uLm1lc2hQcm9wc30gY2hpbGRyZW49e2NoaWxkcmVufSAvPlxuICAgIDwvSGVhZGVyQ29udGFpbmVyQ2xhc3M+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBIZWFkZXJDb250YWluZXI7XG4iLCIvLyBzaGFtZWxlc3NseSBzdG9sZW4gZm9ybSBodHRwczovL2Rldi50by9uOHRiMXQvdHJhY2tpbmctc2Nyb2xsLXBvc2l0aW9uLXdpdGgtcmVhY3QtaG9va3MtM2JialxuaW1wb3J0IHsgdXNlUmVmLCB1c2VMYXlvdXRFZmZlY3QsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBmYXN0ZG9tIGZyb20gJ2Zhc3Rkb20nO1xuaW1wb3J0IHsgaXNCcm93c2VyIH0gZnJvbSAnQHdpeC9lZGl0b3ItZWxlbWVudHMtY29tbW9uLXV0aWxzJztcblxuZXhwb3J0IHR5cGUgUG9zID0geyB4OiBudW1iZXI7IHk6IG51bWJlcjsgaXNBdFBhZ2VCb3R0b206IGJvb2xlYW4gfTtcblxuZnVuY3Rpb24gZ2V0U2Nyb2xsUG9zaXRpb24oKTogUG9zIHtcbiAgaWYgKCFpc0Jyb3dzZXIoKSkge1xuICAgIHJldHVybiB7IHg6IDAsIHk6IDAsIGlzQXRQYWdlQm90dG9tOiBmYWxzZSB9O1xuICB9XG5cbiAgY29uc3QgeyBsZWZ0LCB0b3AgfSA9IGRvY3VtZW50LmJvZHkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IGlzQXRQYWdlQm90dG9tID1cbiAgICB3aW5kb3cuaW5uZXJIZWlnaHQgKyB3aW5kb3cuc2Nyb2xsWSA9PT0gZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQ7XG4gIHJldHVybiB7IHg6IGxlZnQsIHk6IHRvcCwgaXNBdFBhZ2VCb3R0b20gfTtcbn1cblxuZXhwb3J0IHR5cGUgdXNlU2Nyb2xsUG9zaXRpb25PcHRpb25zID0ge1xuICB3YWl0Rm9yPzogbnVtYmVyO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlU2Nyb2xsUG9zaXRpb24oXG4gIGVmZmVjdDogKHsgcHJldlBvcywgY3VyclBvcyB9OiB7IHByZXZQb3M6IFBvczsgY3VyclBvczogUG9zIH0pID0+IHZvaWQsXG4gIGRlcHM6IEFycmF5PGFueT4sXG4gIG9wdGlvbnM6IHVzZVNjcm9sbFBvc2l0aW9uT3B0aW9ucyA9IHt9LFxuKSB7XG4gIG9wdGlvbnMgPSB7XG4gICAgd2FpdEZvcjogMTAwLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAuLi5vcHRpb25zLFxuICB9O1xuXG4gIGNvbnN0IHBvc2l0aW9uID0gdXNlUmVmKGdldFNjcm9sbFBvc2l0aW9uKCkpO1xuICBsZXQgdGhyb3R0bGVUaW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgY29uc3QgY2FsbEJhY2sgPSAoKSA9PiB7XG4gICAgZmFzdGRvbS5tZWFzdXJlKCgpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJQb3MgPSBnZXRTY3JvbGxQb3NpdGlvbigpO1xuICAgICAgY29uc3QgcHJldlBvcyA9IHBvc2l0aW9uLmN1cnJlbnQ7XG4gICAgICBwb3NpdGlvbi5jdXJyZW50ID0gY3VyclBvcztcbiAgICAgIHRocm90dGxlVGltZW91dCA9IG51bGw7XG4gICAgICBmYXN0ZG9tLm11dGF0ZSgoKSA9PiBlZmZlY3QoeyBwcmV2UG9zLCBjdXJyUG9zIH0pKTtcbiAgICB9KTtcbiAgfTtcbiAgY29uc3QgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCA9IGlzQnJvd3NlcigpID8gdXNlTGF5b3V0RWZmZWN0IDogdXNlRWZmZWN0O1xuICB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzQnJvd3NlcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGhhbmRsZVNjcm9sbCA9ICgpID0+IHtcbiAgICAgIGlmICh0aHJvdHRsZVRpbWVvdXQgPT09IG51bGwpIHtcbiAgICAgICAgdGhyb3R0bGVUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoY2FsbEJhY2ssIG9wdGlvbnMud2FpdEZvcik7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmICghb3B0aW9ucy5kaXNhYmxlZCkge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCk7XG4gICAgICAvLyBjbGVhbnVwIGNhbGxiYWNrXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgaWYgKHRocm90dGxlVGltZW91dCkge1xuICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhyb3R0bGVUaW1lb3V0KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHt9O1xuICB9LCBkZXBzKTtcbn1cbiIsIiEoZnVuY3Rpb24od2luKSB7XG5cbi8qKlxuICogRmFzdERvbVxuICpcbiAqIEVsaW1pbmF0ZXMgbGF5b3V0IHRocmFzaGluZ1xuICogYnkgYmF0Y2hpbmcgRE9NIHJlYWQvd3JpdGVcbiAqIGludGVyYWN0aW9ucy5cbiAqXG4gKiBAYXV0aG9yIFdpbHNvbiBQYWdlIDx3aWxzb25wYWdlQG1lLmNvbT5cbiAqIEBhdXRob3IgS29ybmVsIExlc2luc2tpIDxrb3JuZWwubGVzaW5za2lAZnQuY29tPlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBNaW5pIGxvZ2dlclxuICpcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufVxuICovXG52YXIgZGVidWcgPSAwID8gY29uc29sZS5sb2cuYmluZChjb25zb2xlLCAnW2Zhc3Rkb21dJykgOiBmdW5jdGlvbigpIHt9O1xuXG4vKipcbiAqIE5vcm1hbGl6ZWQgckFGXG4gKlxuICogQHR5cGUge0Z1bmN0aW9ufVxuICovXG52YXIgcmFmID0gd2luLnJlcXVlc3RBbmltYXRpb25GcmFtZVxuICB8fCB3aW4ud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gIHx8IHdpbi5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgfHwgd2luLm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gIHx8IGZ1bmN0aW9uKGNiKSB7IHJldHVybiBzZXRUaW1lb3V0KGNiLCAxNik7IH07XG5cbi8qKlxuICogSW5pdGlhbGl6ZSBhIGBGYXN0RG9tYC5cbiAqXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZnVuY3Rpb24gRmFzdERvbSgpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBzZWxmLnJlYWRzID0gW107XG4gIHNlbGYud3JpdGVzID0gW107XG4gIHNlbGYucmFmID0gcmFmLmJpbmQod2luKTsgLy8gdGVzdCBob29rXG4gIGRlYnVnKCdpbml0aWFsaXplZCcsIHNlbGYpO1xufVxuXG5GYXN0RG9tLnByb3RvdHlwZSA9IHtcbiAgY29uc3RydWN0b3I6IEZhc3REb20sXG5cbiAgLyoqXG4gICAqIFdlIHJ1biB0aGlzIGluc2lkZSBhIHRyeSBjYXRjaFxuICAgKiBzbyB0aGF0IGlmIGFueSBqb2JzIGVycm9yLCB3ZVxuICAgKiBhcmUgYWJsZSB0byByZWNvdmVyIGFuZCBjb250aW51ZVxuICAgKiB0byBmbHVzaCB0aGUgYmF0Y2ggdW50aWwgaXQncyBlbXB0eS5cbiAgICpcbiAgICogQHBhcmFtIHtBcnJheX0gdGFza3NcbiAgICovXG4gIHJ1blRhc2tzOiBmdW5jdGlvbih0YXNrcykge1xuICAgIGRlYnVnKCdydW4gdGFza3MnKTtcbiAgICB2YXIgdGFzazsgd2hpbGUgKHRhc2sgPSB0YXNrcy5zaGlmdCgpKSB0YXNrKCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEFkZHMgYSBqb2IgdG8gdGhlIHJlYWQgYmF0Y2ggYW5kXG4gICAqIHNjaGVkdWxlcyBhIG5ldyBmcmFtZSBpZiBuZWVkIGJlLlxuICAgKlxuICAgKiBAcGFyYW0gIHtGdW5jdGlvbn0gZm5cbiAgICogQHBhcmFtICB7T2JqZWN0fSBjdHggdGhlIGNvbnRleHQgdG8gYmUgYm91bmQgdG8gYGZuYCAob3B0aW9uYWwpLlxuICAgKiBAcHVibGljXG4gICAqL1xuICBtZWFzdXJlOiBmdW5jdGlvbihmbiwgY3R4KSB7XG4gICAgZGVidWcoJ21lYXN1cmUnKTtcbiAgICB2YXIgdGFzayA9ICFjdHggPyBmbiA6IGZuLmJpbmQoY3R4KTtcbiAgICB0aGlzLnJlYWRzLnB1c2godGFzayk7XG4gICAgc2NoZWR1bGVGbHVzaCh0aGlzKTtcbiAgICByZXR1cm4gdGFzaztcbiAgfSxcblxuICAvKipcbiAgICogQWRkcyBhIGpvYiB0byB0aGVcbiAgICogd3JpdGUgYmF0Y2ggYW5kIHNjaGVkdWxlc1xuICAgKiBhIG5ldyBmcmFtZSBpZiBuZWVkIGJlLlxuICAgKlxuICAgKiBAcGFyYW0gIHtGdW5jdGlvbn0gZm5cbiAgICogQHBhcmFtICB7T2JqZWN0fSBjdHggdGhlIGNvbnRleHQgdG8gYmUgYm91bmQgdG8gYGZuYCAob3B0aW9uYWwpLlxuICAgKiBAcHVibGljXG4gICAqL1xuICBtdXRhdGU6IGZ1bmN0aW9uKGZuLCBjdHgpIHtcbiAgICBkZWJ1ZygnbXV0YXRlJyk7XG4gICAgdmFyIHRhc2sgPSAhY3R4ID8gZm4gOiBmbi5iaW5kKGN0eCk7XG4gICAgdGhpcy53cml0ZXMucHVzaCh0YXNrKTtcbiAgICBzY2hlZHVsZUZsdXNoKHRoaXMpO1xuICAgIHJldHVybiB0YXNrO1xuICB9LFxuXG4gIC8qKlxuICAgKiBDbGVhcnMgYSBzY2hlZHVsZWQgJ3JlYWQnIG9yICd3cml0ZScgdGFzay5cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IHRhc2tcbiAgICogQHJldHVybiB7Qm9vbGVhbn0gc3VjY2Vzc1xuICAgKiBAcHVibGljXG4gICAqL1xuICBjbGVhcjogZnVuY3Rpb24odGFzaykge1xuICAgIGRlYnVnKCdjbGVhcicsIHRhc2spO1xuICAgIHJldHVybiByZW1vdmUodGhpcy5yZWFkcywgdGFzaykgfHwgcmVtb3ZlKHRoaXMud3JpdGVzLCB0YXNrKTtcbiAgfSxcblxuICAvKipcbiAgICogRXh0ZW5kIHRoaXMgRmFzdERvbSB3aXRoIHNvbWVcbiAgICogY3VzdG9tIGZ1bmN0aW9uYWxpdHkuXG4gICAqXG4gICAqIEJlY2F1c2UgZmFzdGRvbSBtdXN0ICphbHdheXMqIGJlIGFcbiAgICogc2luZ2xldG9uLCB3ZSdyZSBhY3R1YWxseSBleHRlbmRpbmdcbiAgICogdGhlIGZhc3Rkb20gaW5zdGFuY2UuIFRoaXMgbWVhbnMgdGFza3NcbiAgICogc2NoZWR1bGVkIGJ5IGFuIGV4dGVuc2lvbiBzdGlsbCBlbnRlclxuICAgKiBmYXN0ZG9tJ3MgZ2xvYmFsIHRhc2sgcXVldWUuXG4gICAqXG4gICAqIFRoZSAnc3VwZXInIGluc3RhbmNlIGNhbiBiZSBhY2Nlc3NlZFxuICAgKiBmcm9tIGB0aGlzLmZhc3Rkb21gLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKlxuICAgKiB2YXIgbXlGYXN0ZG9tID0gZmFzdGRvbS5leHRlbmQoe1xuICAgKiAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKCkge1xuICAgKiAgICAgLy8gcnVucyBvbiBjcmVhdGlvblxuICAgKiAgIH0sXG4gICAqXG4gICAqICAgLy8gb3ZlcnJpZGUgYSBtZXRob2RcbiAgICogICBtZWFzdXJlOiBmdW5jdGlvbihmbikge1xuICAgKiAgICAgLy8gZG8gZXh0cmEgc3R1ZmYgLi4uXG4gICAqXG4gICAqICAgICAvLyB0aGVuIGNhbGwgdGhlIG9yaWdpbmFsXG4gICAqICAgICByZXR1cm4gdGhpcy5mYXN0ZG9tLm1lYXN1cmUoZm4pO1xuICAgKiAgIH0sXG4gICAqXG4gICAqICAgLi4uXG4gICAqIH0pO1xuICAgKlxuICAgKiBAcGFyYW0gIHtPYmplY3R9IHByb3BzICBwcm9wZXJ0aWVzIHRvIG1peGluXG4gICAqIEByZXR1cm4ge0Zhc3REb219XG4gICAqL1xuICBleHRlbmQ6IGZ1bmN0aW9uKHByb3BzKSB7XG4gICAgZGVidWcoJ2V4dGVuZCcsIHByb3BzKTtcbiAgICBpZiAodHlwZW9mIHByb3BzICE9ICdvYmplY3QnKSB0aHJvdyBuZXcgRXJyb3IoJ2V4cGVjdGVkIG9iamVjdCcpO1xuXG4gICAgdmFyIGNoaWxkID0gT2JqZWN0LmNyZWF0ZSh0aGlzKTtcbiAgICBtaXhpbihjaGlsZCwgcHJvcHMpO1xuICAgIGNoaWxkLmZhc3Rkb20gPSB0aGlzO1xuXG4gICAgLy8gcnVuIG9wdGlvbmFsIGNyZWF0aW9uIGhvb2tcbiAgICBpZiAoY2hpbGQuaW5pdGlhbGl6ZSkgY2hpbGQuaW5pdGlhbGl6ZSgpO1xuXG4gICAgcmV0dXJuIGNoaWxkO1xuICB9LFxuXG4gIC8vIG92ZXJyaWRlIHRoaXMgd2l0aCBhIGZ1bmN0aW9uXG4gIC8vIHRvIHByZXZlbnQgRXJyb3JzIGluIGNvbnNvbGVcbiAgLy8gd2hlbiB0YXNrcyB0aHJvd1xuICBjYXRjaDogbnVsbFxufTtcblxuLyoqXG4gKiBTY2hlZHVsZXMgYSBuZXcgcmVhZC93cml0ZVxuICogYmF0Y2ggaWYgb25lIGlzbid0IHBlbmRpbmcuXG4gKlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gc2NoZWR1bGVGbHVzaChmYXN0ZG9tKSB7XG4gIGlmICghZmFzdGRvbS5zY2hlZHVsZWQpIHtcbiAgICBmYXN0ZG9tLnNjaGVkdWxlZCA9IHRydWU7XG4gICAgZmFzdGRvbS5yYWYoZmx1c2guYmluZChudWxsLCBmYXN0ZG9tKSk7XG4gICAgZGVidWcoJ2ZsdXNoIHNjaGVkdWxlZCcpO1xuICB9XG59XG5cbi8qKlxuICogUnVucyBxdWV1ZWQgYHJlYWRgIGFuZCBgd3JpdGVgIHRhc2tzLlxuICpcbiAqIEVycm9ycyBhcmUgY2F1Z2h0IGFuZCB0aHJvd24gYnkgZGVmYXVsdC5cbiAqIElmIGEgYC5jYXRjaGAgZnVuY3Rpb24gaGFzIGJlZW4gZGVmaW5lZFxuICogaXQgaXMgY2FsbGVkIGluc3RlYWQuXG4gKlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gZmx1c2goZmFzdGRvbSkge1xuICBkZWJ1ZygnZmx1c2gnKTtcblxuICB2YXIgd3JpdGVzID0gZmFzdGRvbS53cml0ZXM7XG4gIHZhciByZWFkcyA9IGZhc3Rkb20ucmVhZHM7XG4gIHZhciBlcnJvcjtcblxuICB0cnkge1xuICAgIGRlYnVnKCdmbHVzaGluZyByZWFkcycsIHJlYWRzLmxlbmd0aCk7XG4gICAgZmFzdGRvbS5ydW5UYXNrcyhyZWFkcyk7XG4gICAgZGVidWcoJ2ZsdXNoaW5nIHdyaXRlcycsIHdyaXRlcy5sZW5ndGgpO1xuICAgIGZhc3Rkb20ucnVuVGFza3Mod3JpdGVzKTtcbiAgfSBjYXRjaCAoZSkgeyBlcnJvciA9IGU7IH1cblxuICBmYXN0ZG9tLnNjaGVkdWxlZCA9IGZhbHNlO1xuXG4gIC8vIElmIHRoZSBiYXRjaCBlcnJvcmVkIHdlIG1heSBzdGlsbCBoYXZlIHRhc2tzIHF1ZXVlZFxuICBpZiAocmVhZHMubGVuZ3RoIHx8IHdyaXRlcy5sZW5ndGgpIHNjaGVkdWxlRmx1c2goZmFzdGRvbSk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgZGVidWcoJ3Rhc2sgZXJyb3JlZCcsIGVycm9yLm1lc3NhZ2UpO1xuICAgIGlmIChmYXN0ZG9tLmNhdGNoKSBmYXN0ZG9tLmNhdGNoKGVycm9yKTtcbiAgICBlbHNlIHRocm93IGVycm9yO1xuICB9XG59XG5cbi8qKlxuICogUmVtb3ZlIGFuIGl0ZW0gZnJvbSBhbiBBcnJheS5cbiAqXG4gKiBAcGFyYW0gIHtBcnJheX0gYXJyYXlcbiAqIEBwYXJhbSAgeyp9IGl0ZW1cbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIHJlbW92ZShhcnJheSwgaXRlbSkge1xuICB2YXIgaW5kZXggPSBhcnJheS5pbmRleE9mKGl0ZW0pO1xuICByZXR1cm4gISF+aW5kZXggJiYgISFhcnJheS5zcGxpY2UoaW5kZXgsIDEpO1xufVxuXG4vKipcbiAqIE1peGluIG93biBwcm9wZXJ0aWVzIG9mIHNvdXJjZVxuICogb2JqZWN0IGludG8gdGhlIHRhcmdldC5cbiAqXG4gKiBAcGFyYW0gIHtPYmplY3R9IHRhcmdldFxuICogQHBhcmFtICB7T2JqZWN0fSBzb3VyY2VcbiAqL1xuZnVuY3Rpb24gbWl4aW4odGFyZ2V0LCBzb3VyY2UpIHtcbiAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkge1xuICAgIGlmIChzb3VyY2UuaGFzT3duUHJvcGVydHkoa2V5KSkgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgfVxufVxuXG4vLyBUaGVyZSBzaG91bGQgbmV2ZXIgYmUgbW9yZSB0aGFuXG4vLyBvbmUgaW5zdGFuY2Ugb2YgYEZhc3REb21gIGluIGFuIGFwcFxudmFyIGV4cG9ydHMgPSB3aW4uZmFzdGRvbSA9ICh3aW4uZmFzdGRvbSB8fCBuZXcgRmFzdERvbSgpKTsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5cbi8vIEV4cG9zZSB0byBDSlMgJiBBTURcbmlmICgodHlwZW9mIGRlZmluZSkgPT0gJ2Z1bmN0aW9uJykgZGVmaW5lKGZ1bmN0aW9uKCkgeyByZXR1cm4gZXhwb3J0czsgfSk7XG5lbHNlIGlmICgodHlwZW9mIG1vZHVsZSkgPT0gJ29iamVjdCcpIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cztcblxufSkoIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93IDogdHlwZW9mIHRoaXMgIT0gJ3VuZGVmaW5lZCcgPyB0aGlzIDogZ2xvYmFsVGhpcyk7XG4iLCJpbXBvcnQgeyBrZXlDb2RlcyB9IGZyb20gJy4vYTExeSc7XG5leHBvcnQgY29uc3QgaXNUaGVtZUZvbnQgPSAodmFsdWUpID0+IC9eZm9udF9cXGQrJC8udGVzdCh2YWx1ZSk7XG5leHBvcnQgY29uc3QgZGVib3VuY2UgPSAoZm4sIG1zID0gMCwgeyBsZWFkaW5nID0gZmFsc2UsIHRyYWlsaW5nID0gdHJ1ZSB9ID0ge30pID0+IHtcbiAgICBsZXQgdGltZW91dElkID0gbnVsbDtcbiAgICByZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgaWYgKGxlYWRpbmcgJiYgdGltZW91dElkID09PSBudWxsKSB7XG4gICAgICAgICAgICBmbi5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGltZW91dElkKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRyYWlsaW5nIHx8ICFsZWFkaW5nIHx8IHRpbWVvdXRJZCkge1xuICAgICAgICAgICAgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRyYWlsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aW1lb3V0SWQgPSBudWxsO1xuICAgICAgICAgICAgfSwgbXMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gU3BlY2lhbCBjYXNlIGZvciBhIHNpbmdsZSBjYWxsIHdpdGggYm90aCBsZWFkaW5nIGFuZCB0cmFpbGluZyAoc2VlIHRlc3RzKVxuICAgICAgICAgICAgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGltZW91dElkID0gbnVsbDtcbiAgICAgICAgICAgIH0sIG1zKTtcbiAgICAgICAgfVxuICAgIH07XG59O1xuZXhwb3J0IGNvbnN0IHRocm90dGxlID0gKGZ1bmMsIG1zID0gMCkgPT4ge1xuICAgIGxldCBpc1Rocm90dGxlZCA9IGZhbHNlLCBzYXZlZEFyZ3M7XG4gICAgZnVuY3Rpb24gd3JhcHBlciguLi5hcmdzKSB7XG4gICAgICAgIGlmIChpc1Rocm90dGxlZCkge1xuICAgICAgICAgICAgc2F2ZWRBcmdzID0gYXJncztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICBpc1Rocm90dGxlZCA9IHRydWU7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaXNUaHJvdHRsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChzYXZlZEFyZ3MpIHtcbiAgICAgICAgICAgICAgICB3cmFwcGVyLmFwcGx5KHRoaXMsIHNhdmVkQXJncyk7XG4gICAgICAgICAgICAgICAgc2F2ZWRBcmdzID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgbXMpO1xuICAgIH1cbiAgICByZXR1cm4gd3JhcHBlcjtcbn07XG5leHBvcnQgY29uc3QgaXNCcm93c2VyID0gKCkgPT4gdHlwZW9mIHdpbmRvdyAhPT0gYHVuZGVmaW5lZGA7XG5leHBvcnQgY29uc3QgcGVyZm9ybU9uRW50ZXIgPSAoZm4pID0+IHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSBrZXlDb2Rlcy5lbnRlcikge1xuICAgICAgICAgICAgZm4oZXZlbnQpO1xuICAgICAgICB9XG4gICAgfTtcbn07XG5leHBvcnQgY29uc3QgaXNDU1NNYXNrU3VwcG9ydGVkID0gKCkgPT4ge1xuICAgIGlmICghaXNCcm93c2VyKCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiAod2luZG93LkNTUyAmJlxuICAgICAgICB3aW5kb3cuQ1NTLnN1cHBvcnRzKCcobWFzay1yZXBlYXQ6IG5vLXJlcGVhdCkgb3IgKC13ZWJraXQtbWFzay1yZXBlYXQ6IG5vLXJlcGVhdCknKSk7XG59O1xuZXhwb3J0IGNvbnN0IGlzRW1wdHlPYmplY3QgPSAob2JqKSA9PiAhb2JqIHx8IChPYmplY3Qua2V5cyhvYmopLmxlbmd0aCA9PT0gMCAmJiBvYmouY29uc3RydWN0b3IgPT09IE9iamVjdCk7XG5leHBvcnQgY29uc3QgaXNTYWZhcmkgPSAoKSA9PiAvXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KG5hdmlnYXRvcj8udXNlckFnZW50KTtcbi8vIGV2ZW4gdGhvdWdoIG5hdmlnYXRvci5wbGF0Zm9ybSBpcyBkZXByZWNhdGVkLCBpdCdzIHN0aWxsIHRoZSBtb3N0IHJlbGlhYmxlIHdheSB0byBkZXRlY3QgdGhlIE9TXG4vLyBzdWdnZXN0ZWQgYnkgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL05hdmlnYXRvci9wbGF0Zm9ybVxuLy8gdGhpcyBmdW5jdGlvbiBpcyBub3Qgd29ya2luZyBpbiBTU1IgZW52aXJvbm1lbnRcbi8vIHNob3VsZCBiZSB1c2VkIG9ubHkgaW4gdGhlIGJyb3dzZXIgZW52aXJvbm1lbnRcbmV4cG9ydCBjb25zdCBpc01hYyA9ICgpID0+IG5hdmlnYXRvcj8ucGxhdGZvcm0/LnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgnbWFjJyk7XG5leHBvcnQgY29uc3QgZ2V0RGF0YUF0dHJpYnV0ZXMgPSAocHJvcHMpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMocHJvcHMpLnJlZHVjZSgoYWNjLCBba2V5LCB2YWxdKSA9PiB7XG4gICAgICAgIGlmIChrZXkuaW5jbHVkZXMoJ2RhdGEtJykpIHtcbiAgICAgICAgICAgIGFjY1trZXldID0gdmFsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBwaWNrKHNvdXJjZSwga2V5cykge1xuICAgIHJldHVybiBrZXlzLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgaWYgKCFzb3VyY2UuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgW2tleV06IHNvdXJjZVtrZXldLFxuICAgICAgICB9O1xuICAgIH0sIHt9KTtcbn1cbmV4cG9ydCBjb25zdCBpZFRvQ29tcFJlZiA9IChpZCkgPT4gKHsgaWQsIHR5cGU6ICdERVNLVE9QJyB9KTtcbmV4cG9ydCBjb25zdCBpc1dpeERvbWFpbiA9ICh1cmwpID0+IFsnZWRpdG9yeC5pbycsICd3aXhzaXRlLmNvbScsICd3aXguY29tJywgJ3dpeHN0dWRpby5pbyddLnNvbWUoZG9tYWluID0+IHVybC5pbmNsdWRlcyhkb21haW4pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXV0aWxzLmpzLm1hcCIsIm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9YZGZfX187IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7XG4gIHJldHVybiBtb2R1bGUuZXhwb3J0cyA9IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKG4pIHtcbiAgICBmb3IgKHZhciBlID0gMTsgZSA8IGFyZ3VtZW50cy5sZW5ndGg7IGUrKykge1xuICAgICAgdmFyIHQgPSBhcmd1bWVudHNbZV07XG4gICAgICBmb3IgKHZhciByIGluIHQpICh7fSkuaGFzT3duUHJvcGVydHkuY2FsbCh0LCByKSAmJiAobltyXSA9IHRbcl0pO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBfZXh0ZW5kcy5hcHBseShudWxsLCBhcmd1bWVudHMpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfZXh0ZW5kcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIHIoZSl7dmFyIHQsZixuPVwiXCI7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGV8fFwibnVtYmVyXCI9PXR5cGVvZiBlKW4rPWU7ZWxzZSBpZihcIm9iamVjdFwiPT10eXBlb2YgZSlpZihBcnJheS5pc0FycmF5KGUpKWZvcih0PTA7dDxlLmxlbmd0aDt0KyspZVt0XSYmKGY9cihlW3RdKSkmJihuJiYobis9XCIgXCIpLG4rPWYpO2Vsc2UgZm9yKHQgaW4gZSllW3RdJiYobiYmKG4rPVwiIFwiKSxuKz10KTtyZXR1cm4gbn1leHBvcnQgZnVuY3Rpb24gY2xzeCgpe2Zvcih2YXIgZSx0LGY9MCxuPVwiXCI7Zjxhcmd1bWVudHMubGVuZ3RoOykoZT1hcmd1bWVudHNbZisrXSkmJih0PXIoZSkpJiYobiYmKG4rPVwiIFwiKSxuKz10KTtyZXR1cm4gbn1leHBvcnQgZGVmYXVsdCBjbHN4OyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdGZ1bmN0aW9uKCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuXHRcdGZ1bmN0aW9uKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgZGVmaW5pdGlvbikge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmosIHByb3ApIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApOyB9IiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbmV4cG9ydCBkZWZhdWx0IHtcInNjcmVlbldpZHRoQmFja2dyb3VuZFwiOlwibHZ4aGtWXCIsXCJIZWFkZXJIaWRlVG9Ub3BcIjpcIlFKandFb1wiLFwiaGVhZGVySGlkZVRvVG9wXCI6XCJRSmp3RW9cIixcIkhlYWRlckhpZGVUb1RvcFJldmVyc2VcIjpcImtkQlhmaFwiLFwiaGVhZGVySGlkZVRvVG9wUmV2ZXJzZVwiOlwia2RCWGZoXCIsXCJIZWFkZXJGYWRlT3V0XCI6XCJNUDUyenRcIixcImhlYWRlckZhZGVPdXRcIjpcIk1QNTJ6dFwiLFwidHJhbnNpdGlvbkVuZGVkXCI6XCJCaHU5bTVcIixcIkhlYWRlckZhZGVPdXRSZXZlcnNlXCI6XCJMVlA4V2ZcIixcImhlYWRlckZhZGVPdXRSZXZlcnNlXCI6XCJMVlA4V2ZcIixcImlubGluZUNvbnRlbnRcIjpcIlZyWnJDMFwiLFwiY2VudGVyZWRDb250ZW50XCI6XCJjS3hWa2NcIixcImNlbnRlcmVkQ29udGVudEJnXCI6XCJ2bE0zSFJcIixcInJvb3RcIjpcIkFUN28wVVwifTsiLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xzeCc7XG5pbXBvcnQgdHlwZSB7IFNraW5TY3JlZW5XaWR0aENvbnRhaW5lcldyYXBwZXJQcm9wcyB9IGZyb20gJy4uL1NraW5TY3JlZW5XaWR0aENvbnRhaW5lcic7XG5cbmNvbnN0IFdyYXBwZXJFbGVtZW50OiBSZWFjdC5GQzxcbiAgU2tpblNjcmVlbldpZHRoQ29udGFpbmVyV3JhcHBlclByb3BzICYge1xuICAgIHNraW5TdHlsZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIH1cbj4gPSAoe1xuICBpZCxcbiAgY2xhc3NOYW1lLFxuICBza2luQ2xhc3NOYW1lLFxuICB0YWdOYW1lID0gJ2RpdicsXG4gIHRyYW5zaXRpb24sXG4gIHRyYW5zaXRpb25FbmRlZCxcbiAgZXZlbnRIYW5kbGVycyxcbiAgc2tpblN0eWxlcyxcbiAgY2hpbGRyZW4sXG4gIHRhYkluZGV4LFxuICBsYW5nLFxufSkgPT4ge1xuICBjb25zdCBTZW1hbnRpY0VsZW1lbnQgPSB0YWdOYW1lIGFzIGtleW9mIEpTWC5JbnRyaW5zaWNFbGVtZW50cztcblxuICByZXR1cm4gKFxuICAgIDxTZW1hbnRpY0VsZW1lbnRcbiAgICAgIGlkPXtpZH1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhcbiAgICAgICAgc2tpbkNsYXNzTmFtZSxcbiAgICAgICAgdHJhbnNpdGlvbiAmJiBza2luU3R5bGVzW3RyYW5zaXRpb25dLFxuICAgICAgICB0cmFuc2l0aW9uRW5kZWQgJiYgc2tpblN0eWxlcy50cmFuc2l0aW9uRW5kZWQsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB0YWJJbmRleD17dGFiSW5kZXh9XG4gICAgICBsYW5nPXtsYW5nfVxuICAgICAgey4uLmV2ZW50SGFuZGxlcnN9XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvU2VtYW50aWNFbGVtZW50PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgV3JhcHBlckVsZW1lbnQ7XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgV3JhcHBlckVsZW1lbnQgZnJvbSAnLi4vLi4vV3JhcHBlckVsZW1lbnQnO1xuaW1wb3J0IHsgU2tpblNjcmVlbldpZHRoQ29udGFpbmVyUHJvcHMgfSBmcm9tICcuLi8uLi8uLi9Ta2luU2NyZWVuV2lkdGhDb250YWluZXInO1xuXG5leHBvcnQgdHlwZSBCYXNlU2NyZWVuU2tpblByb3BzID0gU2tpblNjcmVlbldpZHRoQ29udGFpbmVyUHJvcHMgJiB7XG4gIHNraW5TdHlsZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59O1xuXG5jb25zdCBCYXNlU2NyZWVuOiBSZWFjdC5GQzxCYXNlU2NyZWVuU2tpblByb3BzPiA9ICh7XG4gIHdyYXBwZXJQcm9wcyxcbiAgY2hpbGRyZW4sXG4gIHNraW5TdHlsZXMsXG59KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPFdyYXBwZXJFbGVtZW50XG4gICAgICB7Li4ud3JhcHBlclByb3BzfVxuICAgICAgc2tpbkNsYXNzTmFtZT17c2tpblN0eWxlcy5yb290fVxuICAgICAgc2tpblN0eWxlcz17c2tpblN0eWxlc31cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c2tpblN0eWxlcy5zY3JlZW5XaWR0aEJhY2tncm91bmR9PjwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e3NraW5TdHlsZXMuY2VudGVyZWRDb250ZW50fT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3NraW5TdHlsZXMuY2VudGVyZWRDb250ZW50Qmd9PjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c2tpblN0eWxlcy5pbmxpbmVDb250ZW50fT57Y2hpbGRyZW59PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L1dyYXBwZXJFbGVtZW50PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQmFzZVNjcmVlbjtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc2tpbnNTdHlsZXMgZnJvbSAnLi9zdHlsZXMvVHJhbnNwYXJlbnRTY3JlZW4uc2Nzcyc7XG5pbXBvcnQgQmFzZVNjcmVlblNraW4sIHsgQmFzZVNjcmVlblNraW5Qcm9wcyB9IGZyb20gJy4vQmFzZVNjcmVlblNraW4nO1xuXG5jb25zdCBUcmFuc3BhcmVudFNjcmVlbjogUmVhY3QuRkM8XG4gIE9taXQ8QmFzZVNjcmVlblNraW5Qcm9wcywgJ3NraW4nIHwgJ3NraW5TdHlsZXMnPlxuPiA9IHByb3BzID0+IDxCYXNlU2NyZWVuU2tpbiB7Li4ucHJvcHN9IHNraW5TdHlsZXM9e3NraW5zU3R5bGVzfSAvPjtcblxuZXhwb3J0IGRlZmF1bHQgVHJhbnNwYXJlbnRTY3JlZW47XG4iLCIndXNlLWNsaWVudCc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBJSGVhZGVyQ29udGFpbmVyUHJvcHMgfSBmcm9tICcuLi8uLi8uLi9IZWFkZXJDb250YWluZXIudHlwZXMnO1xuaW1wb3J0IFRyYW5zcGFyZW50U2NyZWVuIGZyb20gJy4uLy4uLy4uLy4uL1NjcmVlbldpZHRoQ29udGFpbmVyL3ZpZXdlci9za2luQ29tcHMvQmFzZVNjcmVlbi9UcmFuc3BhcmVudFNjcmVlbic7XG5pbXBvcnQgSGVhZGVyQ29udGFpbmVyIGZyb20gJy4uLy4uL0hlYWRlckNvbnRhaW5lcic7XG5cbmNvbnN0IFRyYW5zcGFyZW50U2NyZWVuSGVhZGVyOiBSZWFjdC5GQzxcbiAgT21pdDxJSGVhZGVyQ29udGFpbmVyUHJvcHMsICdza2luJz5cbj4gPSBwcm9wcyA9PiB7XG4gIHJldHVybiAoXG4gICAgPEhlYWRlckNvbnRhaW5lciB7Li4ucHJvcHN9IHNraW49e1RyYW5zcGFyZW50U2NyZWVufT48L0hlYWRlckNvbnRhaW5lcj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRyYW5zcGFyZW50U2NyZWVuSGVhZGVyO1xuIl0sIm5hbWVzIjpbInJvb3QiLCJmYWN0b3J5IiwiZXhwb3J0cyIsIm1vZHVsZSIsInJlcXVpcmUiLCJkZWZpbmUiLCJhbWQiLCJzZWxmIiwidGhpcyIsIl9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfWGRmX19fIiwiQ1NTX1BSRUZJWCIsImZvcm1hdENsYXNzTmFtZXMiLCJzZW1hbnRpY0NsYXNzTmFtZSIsImN1c3RvbUNsYXNzTmFtZXMiLCJyZXN1bHQiLCJwdXNoIiwiZm9yRWFjaCIsImNsYXNzTmFtZSIsImpvaW4iLCJUZXN0SWRzIiwicmVuZGVyUm90YXRlZENvbXBvbmVudHNXcmFwcGVyIiwiY2hpbGQiLCJSZWFjdCIsImtleSIsInByb3BzIiwiaWQiLCJNZXNoQ29udGFpbmVyIiwicmVmIiwid2VkZ2VzIiwicm90YXRlZENvbXBvbmVudHMiLCJjaGlsZHJlbiIsImZpeGVkQ29tcG9uZW50cyIsImV4dHJhQ2xhc3NOYW1lIiwicmVuZGVyUm90YXRlZENvbXBvbmVudHMiLCJjaGlsZHJlbkFycmF5IiwidG9BcnJheSIsImZpeGVkQ2hpbGRyZW4iLCJub25GaXhlZENoaWxkcmVuIiwiY29tcCIsImluY2x1ZGVzIiwibWVzaENoaWxkcmVuIiwicm90YXRlZENvbXBvbmVudHNTZXQiLCJyZWR1Y2UiLCJhY2MiLCJyb3RhdGVkQ29tcG9uZW50IiwibWFwIiwic3BsaXQiLCJ3ZWRnZSIsInJlbmRlckNoaWxkcmVuIiwiX2V4dGVuZHMiLCJnZXREYXRhQXR0cmlidXRlcyIsImNsYXNzTmFtZXMiLCJSRVZFUlNFX1RSQU5TSVRJT05fU1VGRklYIiwiU2Nyb2xsRGlyZWN0aW9uIiwic2tpbiIsIkhlYWRlckNvbnRhaW5lckNsYXNzIiwiYW5pbWF0aW9ucyIsIm1lc2hQcm9wcyIsImZpbGxMYXllcnMiLCJsYW5nIiwidHJhbnNpdGlvbk5hbWUiLCJzZXRUcmFuc2l0aW9uTmFtZSIsInVzZVN0YXRlIiwidHJhbnNpdGlvbkVuZGVkIiwic2V0VHJhbnNpdGlvbkVuZGVkIiwic3RhcnRUcmFuc2l0aW9uIiwibmV3VHJhbnNpdGlvbiIsInVzZUVmZmVjdCIsIndpbmRvdyIsIlRyYW5zaXRpb25FdmVudCIsInNldFRpbWVvdXQiLCJpc0hpZGRlbiIsImVuZHNXaXRoIiwiaXNSZXZlcnNlVHJhbnNpdGlvbiIsInNob3dIZWFkZXIiLCJyZXZlcnNlVHJhbnNpdGlvbk5hbWUiLCJnZXRSZXZlcnNlVHJhbnNpdGlvbk5hbWUiLCJzZGtFdmVudEhhbmRsZXJzIiwib25Nb3VzZUVudGVyIiwib25Nb3VzZUxlYXZlIiwib25DbGljayIsIm9uRG91YmxlQ2xpY2siLCJvbkRibENsaWNrIiwib25Gb2N1cyIsInVuZGVmaW5lZCIsIm9uVHJhbnNpdGlvbkVuZCIsImRpcmVjdGlvbiIsImRpcmVjdGlvbkZsaXBQb3NpdGlvbiIsInVzZVNjcm9sbFBvc2l0aW9uIiwiX3JlZiIsIl9sYXN0QW5pbWF0aW9uJHBhcmFtcyIsIl9sYXN0QW5pbWF0aW9uJHZpZXdNbyIsImN1cnJQb3MiLCJwcmV2UG9zIiwiY3VycmVudFBvc2l0aW9uIiwieSIsInByZXZQb3NpdGlvbiIsImxhc3RBbmltYXRpb24iLCJsZW5ndGgiLCJsYXN0VHJhbnNpdGlvbiIsInBhcmFtcyIsImFuaW1hdGlvblN0YXJ0VGhyZXNob2xkIiwidmlld01vZGUiLCJ0b0xvd2VyQ2FzZSIsImFuaW1hdGlvbiIsImdldEFuaW1hdGlvblN0YXJ0VGhyZXNob2xkRm9yRGVza3RvcCIsIm5hbWUiLCJ1cGRhdGVTY3JvbGxEaXJlY3Rpb24iLCJkaXNhYmxlZCIsInJvb3RDbGFzc05hbWVzIiwic2VtYW50aWNDbGFzc05hbWVzIiwid3JhcHBlclByb3BzIiwidGFnTmFtZSIsImV2ZW50SGFuZGxlcnMiLCJ0cmFuc2l0aW9uIiwidGFiSW5kZXgiLCJnZXRTY3JvbGxQb3NpdGlvbiIsImlzQnJvd3NlciIsIngiLCJpc0F0UGFnZUJvdHRvbSIsImxlZnQiLCJ0b3AiLCJkb2N1bWVudCIsImJvZHkiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJpbm5lckhlaWdodCIsInNjcm9sbFkiLCJzY3JvbGxIZWlnaHQiLCJlZmZlY3QiLCJkZXBzIiwib3B0aW9ucyIsIndhaXRGb3IiLCJwb3NpdGlvbiIsInVzZVJlZiIsInRocm90dGxlVGltZW91dCIsImNhbGxCYWNrIiwiZmFzdGRvbSIsImN1cnJlbnQiLCJ1c2VMYXlvdXRFZmZlY3QiLCJoYW5kbGVTY3JvbGwiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImNsZWFyVGltZW91dCIsImRlYnVnIiwicmFmIiwid2luIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwid2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwibW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwibXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJjYiIsIkZhc3REb20iLCJyZWFkcyIsIndyaXRlcyIsImJpbmQiLCJzY2hlZHVsZUZsdXNoIiwic2NoZWR1bGVkIiwiZmx1c2giLCJlcnJvciIsInJ1blRhc2tzIiwiZSIsIm1lc3NhZ2UiLCJjYXRjaCIsInJlbW92ZSIsImFycmF5IiwiaXRlbSIsImluZGV4IiwiaW5kZXhPZiIsInNwbGljZSIsInByb3RvdHlwZSIsImNvbnN0cnVjdG9yIiwidGFza3MiLCJ0YXNrIiwic2hpZnQiLCJtZWFzdXJlIiwiZm4iLCJjdHgiLCJtdXRhdGUiLCJjbGVhciIsImV4dGVuZCIsIkVycm9yIiwiT2JqZWN0IiwiY3JlYXRlIiwidGFyZ2V0Iiwic291cmNlIiwiaGFzT3duUHJvcGVydHkiLCJtaXhpbiIsImluaXRpYWxpemUiLCJnbG9iYWxUaGlzIiwiZW50cmllcyIsInZhbCIsImFzc2lnbiIsIm4iLCJhcmd1bWVudHMiLCJ0IiwiciIsImNhbGwiLCJfX2VzTW9kdWxlIiwiYXBwbHkiLCJmIiwiQXJyYXkiLCJpc0FycmF5IiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsImdldHRlciIsImQiLCJhIiwiZGVmaW5pdGlvbiIsIm8iLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJvYmoiLCJwcm9wIiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJ2YWx1ZSIsInNraW5DbGFzc05hbWUiLCJza2luU3R5bGVzIiwiU2VtYW50aWNFbGVtZW50IiwiV3JhcHBlckVsZW1lbnQiLCJzY3JlZW5XaWR0aEJhY2tncm91bmQiLCJjZW50ZXJlZENvbnRlbnQiLCJjZW50ZXJlZENvbnRlbnRCZyIsImlubGluZUNvbnRlbnQiLCJCYXNlU2NyZWVuU2tpbiIsInNraW5zU3R5bGVzIiwiSGVhZGVyQ29udGFpbmVyIiwiVHJhbnNwYXJlbnRTY3JlZW4iXSwic291cmNlUm9vdCI6IiJ9","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\")):\"function\"==typeof define&&define.amd?define(\"thunderbolt/controller/HeaderContainer/HeaderContainer\",[\"react\"],t):\"object\"==typeof exports?exports[\"thunderbolt/controller/HeaderContainer/HeaderContainer\"]=t(require(\"react\")):e[\"thunderbolt/controller/HeaderContainer/HeaderContainer\"]=t(e.React)}(\"undefined\"!=typeof self?self:this,function(e){return function(){\"use strict\";var t={\"Xdf/\":function(t){t.exports=e}},r={};function o(e){var n=r[e];if(void 0!==n)return n.exports;var i=r[e]={exports:{}};return t[e](i,i.exports,o),i.exports}o.d=function(e,t){for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var n={};return function(){o.r(n),o.d(n,{default:function(){return i}});const e=e=>e.replace(/([A-Z])/g,e=>`-${e.toLowerCase()}`);var t=o(\"Xdf/\");var r,i=(r=e=>{let{mapperProps:r,controllerUtils:o}=e;const{updateStyles:n}=o,{compId:i,marginTop:a,isMobileView:u,isFixed:l,...d}=r;var c;return c=()=>{var e;const t=((null==(e=window.document.getElementById(i))?void 0:e.clientHeight)||0)>=window.document.body.clientHeight/2;u&&l&&t&&n({position:\"relative !important\",marginTop:a,top:0})},(0,t.useEffect)(c,[]),d},{useComponentProps:(t,o,n)=>{const i=(t=>({...t,updateStyles:r=>{const o=Object.entries(r).reduce((t,[r,o])=>{return{...t,[(n=r,n.startsWith(\"--\")?r:e(r))]:void 0===o?null:o};var n},{});t.updateStyles(o)}}))(n);return r({mapperProps:t,stateValues:o,controllerUtils:i})}})}(),n}()});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGh1bmRlcmJvbHQvY29udHJvbGxlci9IZWFkZXJDb250YWluZXIvSGVhZGVyQ29udGFpbmVyLmJ1bmRsZS5taW4uanMiLCJtYXBwaW5ncyI6IkNBQUEsU0FBMkNBLEVBQU1DLEdBQzFCLGlCQUFaQyxTQUEwQyxpQkFBWEMsT0FDeENBLE9BQU9ELFFBQVVELEVBQVFHLFFBQVEsVUFDUixtQkFBWEMsUUFBeUJBLE9BQU9DLElBQzlDRCxPQUFPLHlEQUEwRCxDQUFDLFNBQVVKLEdBQ2xELGlCQUFaQyxRQUNkQSxRQUFRLDBEQUE0REQsRUFBUUcsUUFBUSxVQUVwRkosRUFBSywwREFBNERDLEVBQVFELEVBQVksTUFDdEYsQ0FURCxDQVNvQixvQkFBVE8sS0FBdUJBLEtBQU9DLEtBQU8sU0FBU0MsR0FDekQsTyxrRENWQU4sRUFBT0QsUUFBVU8sQyxHQ0NiQyxFQUEyQixDQUFDLEVBR2hDLFNBQVNDLEVBQW9CQyxHQUU1QixJQUFJQyxFQUFlSCxFQUF5QkUsR0FDNUMsUUFBcUJFLElBQWpCRCxFQUNILE9BQU9BLEVBQWFYLFFBR3JCLElBQUlDLEVBQVNPLEVBQXlCRSxHQUFZLENBR2pEVixRQUFTLENBQUMsR0FPWCxPQUhBYSxFQUFvQkgsR0FBVVQsRUFBUUEsRUFBT0QsUUFBU1MsR0FHL0NSLEVBQU9ELE9BQ2YsQ0NyQkFTLEVBQW9CSyxFQUFJLFNBQVNkLEVBQVNlLEdBQ3pDLElBQUksSUFBSUMsS0FBT0QsRUFDWE4sRUFBb0JRLEVBQUVGLEVBQVlDLEtBQVNQLEVBQW9CUSxFQUFFakIsRUFBU2dCLElBQzVFRSxPQUFPQyxlQUFlbkIsRUFBU2dCLEVBQUssQ0FBRUksWUFBWSxFQUFNQyxJQUFLTixFQUFXQyxJQUczRSxFQ1BBUCxFQUFvQlEsRUFBSSxTQUFTSyxFQUFLQyxHQUFRLE9BQU9MLE9BQU9NLFVBQVVDLGVBQWVDLEtBQUtKLEVBQUtDLEVBQU8sRUNDdEdkLEVBQW9Ca0IsRUFBSSxTQUFTM0IsR0FDWCxvQkFBWDRCLFFBQTBCQSxPQUFPQyxhQUMxQ1gsT0FBT0MsZUFBZW5CLEVBQVM0QixPQUFPQyxZQUFhLENBQUVDLE1BQU8sV0FFN0RaLE9BQU9DLGVBQWVuQixFQUFTLGFBQWMsQ0FBRThCLE9BQU8sR0FDdkQsRSx3RUNpREEsTUFDTUMsRUFBdUJDLEdBQVFBLEVBQUlDLFFBQVEsV0FBWUMsR0FBTyxJQUFJQSxFQUFJQyxpQixnQkNoRDVFLElEa0VtQ0MsRUNsRW5DLEdEa0VtQ0EsRUMvRGpDQyxJQUF1QyxJQUF0QyxZQUFFQyxFQUFXLGdCQUFFQyxHQUFpQkYsRUFDakMsTUFBTSxhQUFFRyxHQUFpQkQsR0FDbkIsT0FBRUUsRUFBTSxVQUFFQyxFQUFTLGFBQUVDLEVBQVksUUFBRUMsS0FBWUMsR0FDbkRQLEVDWHdCUSxNRG9DMUIsT0NwQzBCQSxFRG9CZCxLQUFPLElBQURDLEVBQ2hCLE1BR01DLElBRm1DLE9BQXZDRCxFQUFBRSxPQUFRQyxTQUFTQyxlQUFlVixTQUFPLEVBQXZDTSxFQUF5Q0ssZUFBZ0IsSUFHekNILE9BQVFDLFNBQVNHLEtBQUtELGFBQWUsRUFFbkRULEdBQWdCQyxHQUFXSSxHQUM3QlIsRUFBYSxDQUNYYyxTQUFVLHNCQUNWWixZQUNBYSxJQUFLLE1DL0I0Q0MsRUFBQUEsRUFBQUEsV0FBVVYsRUFBSSxJRG9DOURELEdEb0NFLENBQ0hZLGtCQUFtQixDQUFDbkIsRUFBYW9CLEVBQWFuQixLQUMxQyxNQUFNb0IsRUFwQlcsQ0FBQ3BCLElBWW5CLElBQ0FBLEVBQ0hDLGFBVHlCb0IsSUFDekIsTUFBTUMsRUFBUzNDLE9BQU80QyxRQUFRRixHQUFhRyxPQUFPLENBQUNDLEdBQU1oRCxFQUFLYyxNQUFXLFVBQ2xFa0MsRUFDSCxFQVZXaEMsRUFVSWhCLEVBVklnQixFQUFJaUMsV0FBVyxNQVVaakQsRUFBTWUsRUFBb0JmLFVBQWlCSixJQUFWa0IsRUFBc0IsS0FBT0EsR0FWMUUsSUFBQ0UsR0FXWCxDQUFDLEdBQ0xPLEVBQWdCQyxhQUFhcUIsTUFVSkssQ0FBcUIzQixHQUMxQyxPQUFPSCxFQUFzQixDQUN6QkUsY0FDQW9CLGNBQ0FuQixnQkFBaUJvQixNIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS9leHRlcm5hbCB1bWQge1wiYW1kXCI6XCJyZWFjdFwiLFwiY29tbW9uanNcIjpcInJlYWN0XCIsXCJjb21tb25qczJcIjpcInJlYWN0XCIsXCJyb290XCI6XCJSZWFjdFwifSIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi9lZGl0b3ItZWxlbWVudHMtaW50ZWdyYXRpb25zL2Rpc3QvZXNtL3RodW5kZXJib2x0L2NyZWF0ZUNvbXBvbmVudE1hcHBlci5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL0hlYWRlckNvbnRhaW5lci92aWV3ZXIvSGVhZGVyQ29udGFpbmVyLmNvbnRyb2xsZXIudHMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvcHJvdmlkZXJzL3VzZURpZE1vdW50L2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcInJlYWN0XCIpKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFwidGh1bmRlcmJvbHQvY29udHJvbGxlci9IZWFkZXJDb250YWluZXIvSGVhZGVyQ29udGFpbmVyXCIsIFtcInJlYWN0XCJdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcInRodW5kZXJib2x0L2NvbnRyb2xsZXIvSGVhZGVyQ29udGFpbmVyL0hlYWRlckNvbnRhaW5lclwiXSA9IGZhY3RvcnkocmVxdWlyZShcInJlYWN0XCIpKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJ0aHVuZGVyYm9sdC9jb250cm9sbGVyL0hlYWRlckNvbnRhaW5lci9IZWFkZXJDb250YWluZXJcIl0gPSBmYWN0b3J5KHJvb3RbXCJSZWFjdFwiXSk7XG59KSgodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHRoaXMpLCBmdW5jdGlvbihfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX1hkZl9fXykge1xucmV0dXJuICIsIm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9YZGZfX187IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIGRlZmluaXRpb24pIHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqLCBwcm9wKSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTsgfSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiaW1wb3J0IHsgaXNFeHBlcmltZW50T3BlbiB9IGZyb20gJ0B3aXgvZWRpdG9yLWVsZW1lbnRzLWNvbW1vbi11dGlscyc7XG5leHBvcnQgY29uc3Qgd2l0aENvbXBJbmZvID0gKCkgPT4gKGRlcHNBcnJheSwgcmVzb2x2ZXIsIGVuaGFuY2VycyA9IFtdKSA9PiB7XG4gICAgY29uc3QgZGVwcyA9IGRlcHNBcnJheS5yZWR1Y2UoKGFjYywga2V5KSA9PiAoeyAuLi5hY2MsIFtrZXldOiB0cnVlIH0pLCB7fSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZGVwcyxcbiAgICAgICAgcmVzb2x2ZXI6IGVuaGFuY2Vycy5sZW5ndGhcbiAgICAgICAgICAgID8gKHJhd0NvbXBJbmZvLCBjYXJtaURhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbmhhbmNlZENvbXBJbmZvID0gZW5oYW5jZXJzLnJlZHVjZSgoY29tcEluZm8sIGVuaGFuY2VyKSA9PiBlbmhhbmNlcihjb21wSW5mbyksIHJhd0NvbXBJbmZvKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZXIoZW5oYW5jZWRDb21wSW5mbywgY2FybWlEYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogcmVzb2x2ZXIsXG4gICAgfTtcbn07XG5leHBvcnQgY29uc3QgaXNTdHlsYWJsZUNvbXBvbmVudCA9IChzdHlsZVByb3BlcnRpZXMpID0+IHtcbiAgICAvLyBpbiBFZGl0b3IgfHwgaW4gVEJcbiAgICByZXR1cm4gQm9vbGVhbihzdHlsZVByb3BlcnRpZXNbJyRzdC1jc3MnXSB8fCBzdHlsZVByb3BlcnRpZXNbJ3N0LWNzcyddKTtcbn07XG5leHBvcnQgY29uc3QgY3JlYXRlVURQVWlUeXBlTWFwcGVyID0gKHN0eWxhYmxlU2tpbk5hbWUsIHVkcFNraW5OYW1lKSA9PiB3aXRoQ29tcEluZm8oKShbJ3N0eWxlUHJvcGVydGllcycsICdleHBlcmltZW50cyddLCAoeyBzdHlsZVByb3BlcnRpZXMsIGV4cGVyaW1lbnRzIH0pID0+IHtcbiAgICBjb25zdCBCVUlMREVSX1NQRUMgPSAnc3BlY3MudGh1bmRlcmJvbHQucmVuZGVyUGxhdGZvcm1CdWlsZGVyQ29tcG9uZW50JztcbiAgICBjb25zdCBpc0J1aWxkZXJFbnYgPSBpc0V4cGVyaW1lbnRPcGVuKGV4cGVyaW1lbnRzLCBCVUlMREVSX1NQRUMpO1xuICAgIGlmICghaXNTdHlsYWJsZUNvbXBvbmVudChzdHlsZVByb3BlcnRpZXMpIHx8IGlzQnVpbGRlckVudikge1xuICAgICAgICByZXR1cm4gdWRwU2tpbk5hbWU7XG4gICAgfVxuICAgIHJldHVybiBzdHlsYWJsZVNraW5OYW1lO1xufSk7XG5leHBvcnQgY29uc3Qgd2l0aFVpVHlwZUNvbXBJbmZvID0gd2l0aENvbXBJbmZvO1xuZXhwb3J0IGNvbnN0IHdpdGhTdGF0ZVJlZnMgPSAoKSA9PiAoZGVwc0FycmF5LCByZXNvbHZlcikgPT4ge1xuICAgIGNvbnN0IHJlZkFwaUtleSA9ICdyZWZBcGknO1xuICAgIGNvbnN0IGRlcHMgPSBbLi4uZGVwc0FycmF5LCByZWZBcGlLZXldO1xuICAgIGNvbnN0IHdpdGhDb21wSW5mb0Z1bmMgPSB3aXRoQ29tcEluZm8oKTtcbiAgICByZXR1cm4gd2l0aENvbXBJbmZvRnVuYyhkZXBzLCByZXNvbHZlcik7XG59O1xuY29uc3QgZ2V0U3RhdGVSZWZHZXR0ZXJzID0gKHN0YXRlUmVmc0tleXMsIHJlZkFwaSkgPT4ge1xuICAgIGNvbnN0IHN0YXRlUmVmc0dldHRlcnMgPSBPYmplY3QudmFsdWVzKHJlZkFwaSkucmVkdWNlKChhY2MsIGZlYXR1cmVEb21haW4pID0+ICh7XG4gICAgICAgIC4uLmFjYyxcbiAgICAgICAgLi4uZmVhdHVyZURvbWFpbixcbiAgICB9KSwge30pO1xuICAgIHJldHVybiBzdGF0ZVJlZnNLZXlzLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgaWYgKCFzdGF0ZVJlZnNHZXR0ZXJzW2tleV0pIHtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgIFtrZXldOiBzdGF0ZVJlZnNHZXR0ZXJzW2tleV0oKSxcbiAgICAgICAgfTtcbiAgICB9LCB7fSk7XG59O1xuZXhwb3J0IGNvbnN0IHdpdGhTdGF0ZVJlZnNWYWx1ZXMgPSAoc3RhdGVSZWZzS2V5cykgPT4ge1xuICAgIHJldHVybiB3aXRoQ29tcEluZm8oKShbJ3JlZkFwaSddLCAoeyByZWZBcGkgfSkgPT4ge1xuICAgICAgICByZXR1cm4gZ2V0U3RhdGVSZWZHZXR0ZXJzKHN0YXRlUmVmc0tleXMsIHJlZkFwaSk7XG4gICAgfSk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudE1hcHBlck1vZGVsKG1hcHBlcikge1xuICAgIHJldHVybiBtYXBwZXI7XG59XG5jb25zdCBpc0NTU1ZhcmlhYmxlID0gKHN0cikgPT4gc3RyLnN0YXJ0c1dpdGgoJy0tJyk7XG5jb25zdCBjYW1lbENhc2VUb0Rhc2hDYXNlID0gKHN0cikgPT4gc3RyLnJlcGxhY2UoLyhbQS1aXSkvZywgdmFsID0+IGAtJHt2YWwudG9Mb3dlckNhc2UoKX1gKTtcbmNvbnN0IHBhdGNoQ29udHJvbGxlclV0aWxzID0gKGNvbnRyb2xsZXJVdGlscykgPT4ge1xuICAgIC8qKlxuICAgICAqIEZyb20gdGhpczogeyBtYXJnaW5Ub3A6IDEwIH1cbiAgICAgKiB0byB0aGlzIHsgbWFyZ2luLXRvcDogMTAgfVxuICAgICAqL1xuICAgIGNvbnN0IHBhdGNoZWRVcGRhdGVTdHlsZXMgPSAocmVhY3RTdHlsZXMpID0+IHtcbiAgICAgICAgY29uc3Qgc3R5bGVzID0gT2JqZWN0LmVudHJpZXMocmVhY3RTdHlsZXMpLnJlZHVjZSgoYWNjLCBba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICBbaXNDU1NWYXJpYWJsZShrZXkpID8ga2V5IDogY2FtZWxDYXNlVG9EYXNoQ2FzZShrZXkpXTogdmFsdWUgPT09IHVuZGVmaW5lZCA/IG51bGwgOiB2YWx1ZSxcbiAgICAgICAgfSksIHt9KTtcbiAgICAgICAgY29udHJvbGxlclV0aWxzLnVwZGF0ZVN0eWxlcyhzdHlsZXMpO1xuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgICAgLi4uY29udHJvbGxlclV0aWxzLFxuICAgICAgICB1cGRhdGVTdHlsZXM6IHBhdGNoZWRVcGRhdGVTdHlsZXMsXG4gICAgfTtcbn07XG5leHBvcnQgY29uc3Qgd2l0aENvbXBDb250cm9sbGVyID0gKGNvbXBvbmVudFByb3BzQ3JlYXRvcikgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAgIHVzZUNvbXBvbmVudFByb3BzOiAobWFwcGVyUHJvcHMsIHN0YXRlVmFsdWVzLCBjb250cm9sbGVyVXRpbHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhdGNoZWRVdGlscyA9IHBhdGNoQ29udHJvbGxlclV0aWxzKGNvbnRyb2xsZXJVdGlscyk7XG4gICAgICAgICAgICByZXR1cm4gY29tcG9uZW50UHJvcHNDcmVhdG9yKHtcbiAgICAgICAgICAgICAgICBtYXBwZXJQcm9wcyxcbiAgICAgICAgICAgICAgICBzdGF0ZVZhbHVlcyxcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyVXRpbHM6IHBhdGNoZWRVdGlscyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgIH07XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y3JlYXRlQ29tcG9uZW50TWFwcGVyLmpzLm1hcCIsImltcG9ydCB0eXBlIHsgQ1NTUHJvcGVydGllcyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHdpdGhDb21wQ29udHJvbGxlciB9IGZyb20gJ0B3aXgvZWRpdG9yLWVsZW1lbnRzLWludGVncmF0aW9ucyc7XG5pbXBvcnQgdHlwZSB7XG4gIElIZWFkZXJDb250YWluZXJQcmV2aWV3TWFwcGVyUHJvcHMsXG4gIElIZWFkZXJDb250YWluZXJDb250cm9sbGVyUHJvcHMsXG59IGZyb20gJy4uL0hlYWRlckNvbnRhaW5lci50eXBlcyc7XG5pbXBvcnQgeyB1c2VEaWRNb3VudCB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy91c2VEaWRNb3VudCc7XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhDb21wQ29udHJvbGxlcjxcbiAgSUhlYWRlckNvbnRhaW5lclByZXZpZXdNYXBwZXJQcm9wcyxcbiAgSUhlYWRlckNvbnRhaW5lckNvbnRyb2xsZXJQcm9wc1xuPigoeyBtYXBwZXJQcm9wcywgY29udHJvbGxlclV0aWxzIH0pID0+IHtcbiAgY29uc3QgeyB1cGRhdGVTdHlsZXMgfSA9IGNvbnRyb2xsZXJVdGlscztcbiAgY29uc3QgeyBjb21wSWQsIG1hcmdpblRvcCwgaXNNb2JpbGVWaWV3LCBpc0ZpeGVkLCAuLi5yZXN0TWFwcGVyUHJvcHMgfSA9XG4gICAgbWFwcGVyUHJvcHM7XG5cbiAgLyoqXG4gICAqIFRoZXJlIGlzIGEgc3BlY2lhbCBIZWFkZXJDb250YWluZXIgZWRnZWNhc2UgdGhhdCBuZWVkcyB0byBiZSBoYW5kbGVkLlxuICAgKiBPbiBtb2JpbGUgaWYgdGhlIEhlYWRlckNvbnRhaW5lciBpcyBvdmVyIDEvMiBib2R5IGhlaWdodCxcbiAgICogaXQgc2hvdWxkIG5vdCBiZSByZW5kZXJlZCBhcyBmaXhlZCwgZXZlbiBpZiB0aGUgdXNlciBjaG9zZVxuICAgKiB0aGlzIHNjcm9sbGluZyBiZWhhdmlvdXIgKG90aGVyd2lzZSBpdCB3b3VsZCBjb3ZlciB0aGUgc2NyZWVuIGFuZCBicmVhayBzY3JvbGxpbmcuXG4gICAqL1xuXG4gIHVzZURpZE1vdW50KCgpID0+IHtcbiAgICBjb25zdCBoZWFkZXJIZWlnaHQgPVxuICAgICAgd2luZG93IS5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChjb21wSWQpPy5jbGllbnRIZWlnaHQgfHwgMDtcblxuICAgIGNvbnN0IGlzVG9vSGlnaFRvQmVGaXhlZE9uTW9iaWxlID1cbiAgICAgIGhlYWRlckhlaWdodCA+PSB3aW5kb3chLmRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0IC8gMjtcblxuICAgIGlmIChpc01vYmlsZVZpZXcgJiYgaXNGaXhlZCAmJiBpc1Rvb0hpZ2hUb0JlRml4ZWRPbk1vYmlsZSkge1xuICAgICAgdXBkYXRlU3R5bGVzKHtcbiAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZSAhaW1wb3J0YW50JyBhcyBDU1NQcm9wZXJ0aWVzWydwb3NpdGlvbiddLFxuICAgICAgICBtYXJnaW5Ub3AsXG4gICAgICAgIHRvcDogMCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3RNYXBwZXJQcm9wcztcbn0pO1xuIiwiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG5leHBvcnQgY29uc3QgdXNlRGlkTW91bnQgPSAoY2I6IFJlYWN0LkVmZmVjdENhbGxiYWNrKSA9PiB1c2VFZmZlY3QoY2IsIFtdKTtcbiJdLCJuYW1lcyI6WyJyb290IiwiZmFjdG9yeSIsImV4cG9ydHMiLCJtb2R1bGUiLCJyZXF1aXJlIiwiZGVmaW5lIiwiYW1kIiwic2VsZiIsInRoaXMiLCJfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX1hkZl9fXyIsIl9fd2VicGFja19tb2R1bGVfY2FjaGVfXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImNhY2hlZE1vZHVsZSIsInVuZGVmaW5lZCIsIl9fd2VicGFja19tb2R1bGVzX18iLCJkIiwiZGVmaW5pdGlvbiIsImtleSIsIm8iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJvYmoiLCJwcm9wIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiciIsIlN5bWJvbCIsInRvU3RyaW5nVGFnIiwidmFsdWUiLCJjYW1lbENhc2VUb0Rhc2hDYXNlIiwic3RyIiwicmVwbGFjZSIsInZhbCIsInRvTG93ZXJDYXNlIiwiY29tcG9uZW50UHJvcHNDcmVhdG9yIiwiX3JlZiIsIm1hcHBlclByb3BzIiwiY29udHJvbGxlclV0aWxzIiwidXBkYXRlU3R5bGVzIiwiY29tcElkIiwibWFyZ2luVG9wIiwiaXNNb2JpbGVWaWV3IiwiaXNGaXhlZCIsInJlc3RNYXBwZXJQcm9wcyIsImNiIiwiX2RvY3VtZW50JGdldEVsZW1lbnRCIiwiaXNUb29IaWdoVG9CZUZpeGVkT25Nb2JpbGUiLCJ3aW5kb3ciLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiY2xpZW50SGVpZ2h0IiwiYm9keSIsInBvc2l0aW9uIiwidG9wIiwidXNlRWZmZWN0IiwidXNlQ29tcG9uZW50UHJvcHMiLCJzdGF0ZVZhbHVlcyIsInBhdGNoZWRVdGlscyIsInJlYWN0U3R5bGVzIiwic3R5bGVzIiwiZW50cmllcyIsInJlZHVjZSIsImFjYyIsInN0YXJ0c1dpdGgiLCJwYXRjaENvbnRyb2xsZXJVdGlscyJdLCJzb3VyY2VSb290IjoiIn0=","'use client';\nimport Component from '@wix/editor-components/skin/HeaderContainer/TransparentScreen';\nimport { HeaderContainer as controller } from '@wix/editor-components/controller/HeaderContainer';\nimport '@wix/editor-components/skin/HeaderContainer/TransparentScreen/css';\nimport { withController, withNormalChildren } from './hocs';\nexport const HeaderContainer_TransparentScreen = withNormalChildren(withController(Component, controller));\n//# sourceMappingURL=HeaderContainer_TransparentScreen.js.map","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\")):\"function\"==typeof define&&define.amd?define(\"thunderbolt/component/HeaderSection/HeaderSection\",[\"react\"],t):\"object\"==typeof exports?exports[\"thunderbolt/component/HeaderSection/HeaderSection\"]=t(require(\"react\")):e[\"thunderbolt/component/HeaderSection/HeaderSection\"]=t(e.React)}(\"undefined\"!=typeof self?self:this,function(e){return function(){var t={iCIt:function(e,t,i){\"use strict\";i.d(t,{default:function(){return ai}});var a={};i.r(a),i.d(a,{STATIC_MEDIA_URL:function(){return it},ph:function(){return Qe}});var n=i(\"Fe5V\"),r=i.n(n),o=i(\"Xdf/\"),s=i.n(o),c=i(\"MRkx\");const l=\"wixui-\",d=(e,...t)=>{const i=[];return e&&i.push(`${l}${e}`),t.forEach(e=>{e&&(i.push(`${l}${e}`),i.push(e))}),i.join(\" \")};var u=i(\"guqK\");const h=13,g=27;function m(e){return t=>{t.keyCode===e&&(t.preventDefault(),t.stopPropagation(),t.currentTarget.click())}}m(32),m(h),m(g);const f=\"section-container\";var p=\"jhxvbR\";const T=\"v1\",_=2,I=1920,E=1920,L=1e3,b=1e3,A={SCALE_TO_FILL:\"fill\",SCALE_TO_FIT:\"fit\",STRETCH:\"stretch\",ORIGINAL_SIZE:\"original_size\",TILE:\"tile\",TILE_HORIZONTAL:\"tile_horizontal\",TILE_VERTICAL:\"tile_vertical\",FIT_AND_TILE:\"fit_and_tile\",LEGACY_STRIP_TILE:\"legacy_strip_tile\",LEGACY_STRIP_TILE_HORIZONTAL:\"legacy_strip_tile_horizontal\",LEGACY_STRIP_TILE_VERTICAL:\"legacy_strip_tile_vertical\",LEGACY_STRIP_SCALE_TO_FILL:\"legacy_strip_fill\",LEGACY_STRIP_SCALE_TO_FIT:\"legacy_strip_fit\",LEGACY_STRIP_FIT_AND_TILE:\"legacy_strip_fit_and_tile\",LEGACY_STRIP_ORIGINAL_SIZE:\"legacy_strip_original_size\",LEGACY_ORIGINAL_SIZE:\"actual_size\",LEGACY_FIT_WIDTH:\"fitWidth\",LEGACY_FIT_HEIGHT:\"fitHeight\",LEGACY_FULL:\"full\",LEGACY_BG_FIT_AND_TILE:\"legacy_tile\",LEGACY_BG_FIT_AND_TILE_HORIZONTAL:\"legacy_tile_horizontal\",LEGACY_BG_FIT_AND_TILE_VERTICAL:\"legacy_tile_vertical\",LEGACY_BG_NORMAL:\"legacy_normal\"},w={FIT:\"fit\",FILL:\"fill\",FILL_FOCAL:\"fill_focal\",CROP:\"crop\",LEGACY_CROP:\"legacy_crop\",LEGACY_FILL:\"legacy_fill\"},y={CENTER:\"center\",TOP:\"top\",TOP_LEFT:\"top_left\",TOP_RIGHT:\"top_right\",BOTTOM:\"bottom\",BOTTOM_LEFT:\"bottom_left\",BOTTOM_RIGHT:\"bottom_right\",LEFT:\"left\",RIGHT:\"right\"},v={[y.CENTER]:{x:.5,y:.5},[y.TOP_LEFT]:{x:0,y:0},[y.TOP_RIGHT]:{x:1,y:0},[y.TOP]:{x:.5,y:0},[y.BOTTOM_LEFT]:{x:0,y:1},[y.BOTTOM_RIGHT]:{x:1,y:1},[y.BOTTOM]:{x:.5,y:1},[y.RIGHT]:{x:1,y:.5},[y.LEFT]:{x:0,y:.5}},M={center:\"c\",top:\"t\",top_left:\"tl\",top_right:\"tr\",bottom:\"b\",bottom_left:\"bl\",bottom_right:\"br\",left:\"l\",right:\"r\"},O={BG:\"bg\",IMG:\"img\",SVG:\"svg\"},S={AUTO:\"auto\",CLASSIC:\"classic\",SUPER:\"super\"},R={classic:1,super:2},C={radius:\"0.66\",amount:\"1.00\",threshold:\"0.01\"},G={uri:\"\",css:{img:{},container:{}},attr:{img:{},container:{}},transformed:!1},F=25e6,N=[1.5,2,4],P={HIGH:{size:196e4,quality:90,maxUpscale:1},MEDIUM:{size:36e4,quality:85,maxUpscale:1},LOW:{size:16e4,quality:80,maxUpscale:1.2},TINY:{size:0,quality:80,maxUpscale:1.4}},x={HIGH:\"HIGH\",MEDIUM:\"MEDIUM\",LOW:\"LOW\",TINY:\"TINY\"},k={CONTRAST:\"contrast\",BRIGHTNESS:\"brightness\",SATURATION:\"saturation\",HUE:\"hue\",BLUR:\"blur\"},H={JPG:\"jpg\",JPEG:\"jpeg\",JPE:\"jpe\",PNG:\"png\",WEBP:\"webp\",WIX_ICO_MP:\"wix_ico_mp\",WIX_MP:\"wix_mp\",GIF:\"gif\",SVG:\"svg\",AVIF:\"avif\",UNRECOGNIZED:\"unrecognized\"},B={AVIF:\"AVIF\",PAVIF:\"PAVIF\"};H.JPG,H.JPEG,H.JPE,H.PNG,H.GIF,H.WEBP;function Y(e,...t){return function(...i){const a=i[i.length-1]||{},n=[e[0]];return t.forEach(function(t,r){const o=Number.isInteger(t)?i[t]:a[t];n.push(o,e[r+1])}),n.join(\"\")}}function U(e){return e[e.length-1]}const Z=[H.PNG,H.JPEG,H.JPG,H.JPE,H.WIX_ICO_MP,H.WIX_MP,H.WEBP,H.AVIF],z=[H.JPEG,H.JPG,H.JPE];function $(e,t,i){return i&&t&&!(!(a=t.id)||!a.trim()||\"none\"===a.toLowerCase())&&Object.values(A).includes(e);var a}function j(e,t,i,a){if(/(^https?)|(^data)|(^\\/\\/)/.test(e))return!1;if(!function(e,t,i){return!(D(e)||q(e))||!t||i}(e,t,i))return!1;const n=function(e){return Z.includes(ee(e))}(e),r=function(e,t,i){return!(!W(e)||!t&&!i)}(e,i,a);return n||r}function V(e){return ee(e)===H.PNG}function D(e){return ee(e)===H.WEBP}function W(e){return ee(e)===H.GIF}function q(e){return ee(e)===H.AVIF}const J=[\"/\",\"\\\\\",\"?\",\"<\",\">\",\"|\",\"\\u201c\",\":\",'\"'].map(encodeURIComponent),K=[\"\\\\.\",\"\\\\*\"],X=\"_\";function Q(e){return function(e){return z.includes(ee(e))}(e)?H.JPG:V(e)?H.PNG:D(e)?H.WEBP:W(e)?H.GIF:q(e)?H.AVIF:H.UNRECOGNIZED}function ee(e){return(/[.]([^.]+)$/.exec(e)&&/[.]([^.]+)$/.exec(e)[1]||\"\").toLowerCase()}function te(e,t,i,a,n){let r;return r=n===w.FILL?function(e,t,i,a){return Math.max(i/e,a/t)}(e,t,i,a):n===w.FIT?function(e,t,i,a){return Math.min(i/e,a/t)}(e,t,i,a):1,r}function ie(e,t,i,a,n,r){e=e||a.width,t=t||a.height;const{scaleFactor:o,width:s,height:c}=function(e,t,i,a,n){let r,o=i,s=a;if(r=te(e,t,i,a,n),n===w.FIT&&(o=e*r,s=t*r),o&&s&&o*s>F){const i=Math.sqrt(F/(o*s));o*=i,s*=i,r=te(e,t,o,s,n)}return{scaleFactor:r,width:o,height:s}}(e,t,a.width*n,a.height*n,i);return function(e,t,i,a,n,r,o){const{optimizedScaleFactor:s,upscaleMethodValue:c,forceUSM:l}=function(e,t,i,a){if(\"auto\"===a)return function(e,t){const i=oe(e,t);return{optimizedScaleFactor:P[i].maxUpscale,upscaleMethodValue:R.classic,forceUSM:!1}}(e,t);if(\"super\"===a)return function(e){return{optimizedScaleFactor:U(N),upscaleMethodValue:R.super,forceUSM:!(N.includes(e)||e>U(N))}}(i);return function(e,t){const i=oe(e,t);return{optimizedScaleFactor:P[i].maxUpscale,upscaleMethodValue:R.classic,forceUSM:!1}}(e,t)}(e,t,r,n);let d=i,u=a;if(r<=s)return{width:d,height:u,scaleFactor:r,upscaleMethodValue:c,forceUSM:l,cssUpscaleNeeded:!1};switch(o){case w.FILL:d=i*(s/r),u=a*(s/r);break;case w.FIT:d=e*s,u=t*s}return{width:d,height:u,scaleFactor:s,upscaleMethodValue:c,forceUSM:l,cssUpscaleNeeded:!0}}(e,t,s,c,r,o,i)}function ae(e,t,i,a){const n=re(i)||function(e=y.CENTER){return v[e]}(a);return{x:Math.max(0,Math.min(e.width-t.width,n.x*e.width-t.width/2)),y:Math.max(0,Math.min(e.height-t.height,n.y*e.height-t.height/2)),width:Math.min(e.width,t.width),height:Math.min(e.height,t.height)}}function ne(e){return e.alignment&&M[e.alignment]||M[y.CENTER]}function re(e){let t;return!e||\"number\"!=typeof e.x||isNaN(e.x)||\"number\"!=typeof e.y||isNaN(e.y)||(t={x:se(Math.max(0,Math.min(100,e.x))/100,2),y:se(Math.max(0,Math.min(100,e.y))/100,2)}),t}function oe(e,t){const i=e*t;return i>P[x.HIGH].size?x.HIGH:i>P[x.MEDIUM].size?x.MEDIUM:i>P[x.LOW].size?x.LOW:x.TINY}function se(e,t){const i=Math.pow(10,t||0);return(e*i/i).toFixed(t)}function ce(e){return e&&e.upscaleMethod&&S[e.upscaleMethod.toUpperCase()]||S.AUTO}function le(e,t){const i=D(e)||q(e);return ee(e)===H.GIF||i&&t}const de={isMobile:!1},ue=function(e){return de[e]};function he(){if(\"undefined\"!=typeof window&&\"undefined\"!=typeof navigator){const t=window.matchMedia&&window.matchMedia(\"(max-width: 767px)\").matches,i=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);e=t&&i,de[\"isMobile\"]=e}var e}function ge(e,t){const i={css:{container:{}}},{css:a}=i,{fittingType:n}=e;switch(n){case A.ORIGINAL_SIZE:case A.LEGACY_ORIGINAL_SIZE:case A.LEGACY_STRIP_ORIGINAL_SIZE:a.container.backgroundSize=\"auto\",a.container.backgroundRepeat=\"no-repeat\";break;case A.SCALE_TO_FIT:case A.LEGACY_STRIP_SCALE_TO_FIT:a.container.backgroundSize=\"contain\",a.container.backgroundRepeat=\"no-repeat\";break;case A.STRETCH:a.container.backgroundSize=\"100% 100%\",a.container.backgroundRepeat=\"no-repeat\";break;case A.SCALE_TO_FILL:case A.LEGACY_STRIP_SCALE_TO_FILL:a.container.backgroundSize=\"cover\",a.container.backgroundRepeat=\"no-repeat\";break;case A.TILE_HORIZONTAL:case A.LEGACY_STRIP_TILE_HORIZONTAL:a.container.backgroundSize=\"auto\",a.container.backgroundRepeat=\"repeat-x\";break;case A.TILE_VERTICAL:case A.LEGACY_STRIP_TILE_VERTICAL:a.container.backgroundSize=\"auto\",a.container.backgroundRepeat=\"repeat-y\";break;case A.TILE:case A.LEGACY_STRIP_TILE:a.container.backgroundSize=\"auto\",a.container.backgroundRepeat=\"repeat\";break;case A.LEGACY_STRIP_FIT_AND_TILE:a.container.backgroundSize=\"contain\",a.container.backgroundRepeat=\"repeat\";break;case A.FIT_AND_TILE:case A.LEGACY_BG_FIT_AND_TILE:a.container.backgroundSize=\"auto\",a.container.backgroundRepeat=\"repeat\";break;case A.LEGACY_BG_FIT_AND_TILE_HORIZONTAL:a.container.backgroundSize=\"auto\",a.container.backgroundRepeat=\"repeat-x\";break;case A.LEGACY_BG_FIT_AND_TILE_VERTICAL:a.container.backgroundSize=\"auto\",a.container.backgroundRepeat=\"repeat-y\";break;case A.LEGACY_BG_NORMAL:a.container.backgroundSize=\"auto\",a.container.backgroundRepeat=\"no-repeat\"}switch(t.alignment){case y.CENTER:a.container.backgroundPosition=\"center center\";break;case y.LEFT:a.container.backgroundPosition=\"left center\";break;case y.RIGHT:a.container.backgroundPosition=\"right center\";break;case y.TOP:a.container.backgroundPosition=\"center top\";break;case y.BOTTOM:a.container.backgroundPosition=\"center bottom\";break;case y.TOP_RIGHT:a.container.backgroundPosition=\"right top\";break;case y.TOP_LEFT:a.container.backgroundPosition=\"left top\";break;case y.BOTTOM_RIGHT:a.container.backgroundPosition=\"right bottom\";break;case y.BOTTOM_LEFT:a.container.backgroundPosition=\"left bottom\"}return i}const me={[y.CENTER]:\"center\",[y.TOP]:\"top\",[y.TOP_LEFT]:\"top left\",[y.TOP_RIGHT]:\"top right\",[y.BOTTOM]:\"bottom\",[y.BOTTOM_LEFT]:\"bottom left\",[y.BOTTOM_RIGHT]:\"bottom right\",[y.LEFT]:\"left\",[y.RIGHT]:\"right\"},fe={position:\"absolute\",top:\"auto\",right:\"auto\",bottom:\"auto\",left:\"auto\"};function pe(e,t){const i={css:{container:{},img:{}}},{css:a}=i,{fittingType:n}=e,r=t.alignment;switch(a.container.position=\"relative\",n){case A.ORIGINAL_SIZE:case A.LEGACY_ORIGINAL_SIZE:e.parts&&e.parts.length?(a.img.width=e.parts[0].width,a.img.height=e.parts[0].height):(a.img.width=e.src.width,a.img.height=e.src.height);break;case A.SCALE_TO_FIT:case A.LEGACY_FIT_WIDTH:case A.LEGACY_FIT_HEIGHT:case A.LEGACY_FULL:a.img.width=t.width,a.img.height=t.height,a.img.objectFit=\"contain\",a.img.objectPosition=me[r]||\"unset\";break;case A.LEGACY_BG_NORMAL:a.img.width=\"100%\",a.img.height=\"100%\",a.img.objectFit=\"none\",a.img.objectPosition=me[r]||\"unset\";break;case A.STRETCH:a.img.width=t.width,a.img.height=t.height,a.img.objectFit=\"fill\";break;case A.SCALE_TO_FILL:a.img.width=t.width,a.img.height=t.height,a.img.objectFit=\"cover\"}if(\"number\"==typeof a.img.width&&\"number\"==typeof a.img.height&&(a.img.width!==t.width||a.img.height!==t.height)){const e=Math.round((t.height-a.img.height)/2),i=Math.round((t.width-a.img.width)/2);Object.assign(a.img,fe,function(e,t,i){return{[y.TOP_LEFT]:{top:0,left:0},[y.TOP_RIGHT]:{top:0,right:0},[y.TOP]:{top:0,left:t},[y.BOTTOM_LEFT]:{bottom:0,left:0},[y.BOTTOM_RIGHT]:{bottom:0,right:0},[y.BOTTOM]:{bottom:0,left:t},[y.RIGHT]:{top:e,right:0},[y.LEFT]:{top:e,left:0},[y.CENTER]:{width:i.width,height:i.height,objectFit:\"none\"}}}(e,i,t)[r])}return i}function Te(e,t){const i={css:{container:{}},attr:{container:{},img:{}}},{css:a,attr:n}=i,{fittingType:r}=e,o=t.alignment,{width:s,height:c}=e.src;let l;switch(a.container.position=\"relative\",r){case A.ORIGINAL_SIZE:case A.LEGACY_ORIGINAL_SIZE:case A.TILE:e.parts&&e.parts.length?(n.img.width=e.parts[0].width,n.img.height=e.parts[0].height):(n.img.width=s,n.img.height=c),n.img.preserveAspectRatio=\"xMidYMid slice\";break;case A.SCALE_TO_FIT:case A.LEGACY_FIT_WIDTH:case A.LEGACY_FIT_HEIGHT:case A.LEGACY_FULL:n.img.width=\"100%\",n.img.height=\"100%\",n.img.transform=\"\",n.img.preserveAspectRatio=\"\";break;case A.STRETCH:n.img.width=t.width,n.img.height=t.height,n.img.x=0,n.img.y=0,n.img.transform=\"\",n.img.preserveAspectRatio=\"none\";break;case A.SCALE_TO_FILL:j(e.src.id)?(n.img.width=t.width,n.img.height=t.height):(l=function(e,t,i,a,n){const r=te(e,t,i,a,n);return{width:Math.round(e*r),height:Math.round(t*r)}}(s,c,t.width,t.height,w.FILL),n.img.width=l.width,n.img.height=l.height),n.img.x=0,n.img.y=0,n.img.transform=\"\",n.img.preserveAspectRatio=\"xMidYMid slice\"}if(\"number\"==typeof n.img.width&&\"number\"==typeof n.img.height&&(n.img.width!==t.width||n.img.height!==t.height)){let e,i,a=0,s=0;r===A.TILE?(e=t.width%n.img.width,i=t.height%n.img.height):(e=t.width-n.img.width,i=t.height-n.img.height);const c=Math.round(e/2),l=Math.round(i/2);switch(o){case y.TOP_LEFT:a=0,s=0;break;case y.TOP:a=c,s=0;break;case y.TOP_RIGHT:a=e,s=0;break;case y.LEFT:a=0,s=l;break;case y.CENTER:a=c,s=l;break;case y.RIGHT:a=e,s=l;break;case y.BOTTOM_LEFT:a=0,s=i;break;case y.BOTTOM:a=c,s=i;break;case y.BOTTOM_RIGHT:a=e,s=i}n.img.x=a,n.img.y=s}return n.container.width=t.width,n.container.height=t.height,n.container.viewBox=[0,0,t.width,t.height].join(\" \"),i}function _e(e,t,i){let a;switch(t.crop&&(a=function(e,t){const i=Math.max(0,Math.min(e.width,t.x+t.width)-Math.max(0,t.x)),a=Math.max(0,Math.min(e.height,t.y+t.height)-Math.max(0,t.y));return i&&a&&(e.width!==i||e.height!==a)?{x:Math.max(0,t.x),y:Math.max(0,t.y),width:i,height:a}:null}(t,t.crop),a&&(e.src.width=a.width,e.src.height=a.height,e.src.isCropped=!0,e.parts.push(Ee(a)))),e.fittingType){case A.SCALE_TO_FIT:case A.LEGACY_FIT_WIDTH:case A.LEGACY_FIT_HEIGHT:case A.LEGACY_FULL:case A.FIT_AND_TILE:case A.LEGACY_BG_FIT_AND_TILE:case A.LEGACY_BG_FIT_AND_TILE_HORIZONTAL:case A.LEGACY_BG_FIT_AND_TILE_VERTICAL:case A.LEGACY_BG_NORMAL:e.parts.push(Ie(e,i));break;case A.SCALE_TO_FILL:e.parts.push(function(e,t){const i=ie(e.src.width,e.src.height,w.FILL,t,e.devicePixelRatio,e.upscaleMethod),a=re(e.focalPoint);return{transformType:a?w.FILL_FOCAL:w.FILL,width:Math.round(i.width),height:Math.round(i.height),alignment:ne(t),focalPointX:a&&a.x,focalPointY:a&&a.y,upscale:i.scaleFactor>1,forceUSM:i.forceUSM,scaleFactor:i.scaleFactor,cssUpscaleNeeded:i.cssUpscaleNeeded,upscaleMethodValue:i.upscaleMethodValue}}(e,i));break;case A.STRETCH:e.parts.push(function(e,t){const i=te(e.src.width,e.src.height,t.width,t.height,w.FILL),a={...t};return a.width=e.src.width*i,a.height=e.src.height*i,Ie(e,a)}(e,i));break;case A.TILE_HORIZONTAL:case A.TILE_VERTICAL:case A.TILE:case A.LEGACY_ORIGINAL_SIZE:case A.ORIGINAL_SIZE:a=ae(e.src,i,e.focalPoint,i.alignment),e.src.isCropped?(Object.assign(e.parts[0],a),e.src.width=a.width,e.src.height=a.height):e.parts.push(Ee(a));break;case A.LEGACY_STRIP_TILE_HORIZONTAL:case A.LEGACY_STRIP_TILE_VERTICAL:case A.LEGACY_STRIP_TILE:case A.LEGACY_STRIP_ORIGINAL_SIZE:e.parts.push(function(e){return{transformType:w.LEGACY_CROP,width:Math.round(e.width),height:Math.round(e.height),alignment:ne(e),upscale:!1,forceUSM:!1,scaleFactor:1,cssUpscaleNeeded:!1}}(i));break;case A.LEGACY_STRIP_SCALE_TO_FIT:case A.LEGACY_STRIP_FIT_AND_TILE:e.parts.push(function(e){return{transformType:w.FIT,width:Math.round(e.width),height:Math.round(e.height),upscale:!1,forceUSM:!0,scaleFactor:1,cssUpscaleNeeded:!1}}(i));break;case A.LEGACY_STRIP_SCALE_TO_FILL:e.parts.push(function(e){return{transformType:w.LEGACY_FILL,width:Math.round(e.width),height:Math.round(e.height),alignment:ne(e),upscale:!1,forceUSM:!0,scaleFactor:1,cssUpscaleNeeded:!1}}(i))}}function Ie(e,t){const i=ie(e.src.width,e.src.height,w.FIT,t,e.devicePixelRatio,e.upscaleMethod);return{transformType:!e.src.width||!e.src.height?w.FIT:w.FILL,width:Math.round(i.width),height:Math.round(i.height),alignment:M.center,upscale:i.scaleFactor>1,forceUSM:i.forceUSM,scaleFactor:i.scaleFactor,cssUpscaleNeeded:i.cssUpscaleNeeded,upscaleMethodValue:i.upscaleMethodValue}}function Ee(e){return{transformType:w.CROP,x:Math.round(e.x),y:Math.round(e.y),width:Math.round(e.width),height:Math.round(e.height),upscale:!1,forceUSM:!1,scaleFactor:1,cssUpscaleNeeded:!1}}function Le(e,t){t=t||{},e.quality=function(e,t){const i=e.fileType===H.PNG,a=e.fileType===H.JPG,n=e.fileType===H.WEBP,r=e.fileType===H.AVIF,o=a||i||n||r;if(o){const a=U(e.parts),n=(s=a.width,c=a.height,P[oe(s,c)].quality);let r=t.quality&&t.quality>=5&&t.quality<=90?t.quality:n;return r=i?r+5:r,r}var s,c;return 0}(e,t),e.progressive=function(e){return!1!==e.progressive}(t),e.watermark=function(e){return e.watermark}(t),e.autoEncode=t.autoEncode??!0,e.encoding=t?.encoding,e.unsharpMask=function(e,t){if(function(e){const t=\"number\"==typeof(e=e||{}).radius&&!isNaN(e.radius)&&e.radius>=.1&&e.radius<=500,i=\"number\"==typeof e.amount&&!isNaN(e.amount)&&e.amount>=0&&e.amount<=10,a=\"number\"==typeof e.threshold&&!isNaN(e.threshold)&&e.threshold>=0&&e.threshold<=255;return t&&i&&a}(t.unsharpMask))return{radius:se(t.unsharpMask?.radius,2),amount:se(t.unsharpMask?.amount,2),threshold:se(t.unsharpMask?.threshold,2)};if((\"number\"!=typeof(i=(i=t.unsharpMask)||{}).radius||isNaN(i.radius)||0!==i.radius||\"number\"!=typeof i.amount||isNaN(i.amount)||0!==i.amount||\"number\"!=typeof i.threshold||isNaN(i.threshold)||0!==i.threshold)&&function(e){const t=U(e.parts);return!(t.scaleFactor>=1)||t.forceUSM||t.transformType===w.FIT}(e))return C;var i;return}(e,t),e.filters=function(e){const t=e.filters||{},i={};be(t[k.CONTRAST],-100,100)&&(i[k.CONTRAST]=t[k.CONTRAST]);be(t[k.BRIGHTNESS],-100,100)&&(i[k.BRIGHTNESS]=t[k.BRIGHTNESS]);be(t[k.SATURATION],-100,100)&&(i[k.SATURATION]=t[k.SATURATION]);be(t[k.HUE],-180,180)&&(i[k.HUE]=t[k.HUE]);be(t[k.BLUR],0,100)&&(i[k.BLUR]=t[k.BLUR]);return i}(t)}function be(e,t,i){return\"number\"==typeof e&&!isNaN(e)&&0!==e&&e>=t&&e<=i}function Ae(e,t,i,a){const n=function(e){return e?.isSEOBot??!1}(a),r=Q(t.id),o=function(e,t){const i=/\\.([^.]*)$/,a=new RegExp(`(${J.concat(K).join(\"|\")})`,\"g\");if(t&&t.length){let e=t;const n=t.match(i);return n&&Z.includes(n[1])&&(e=t.replace(i,\"\")),encodeURIComponent(e).replace(a,X)}const n=e.match(/\\/(.*?)$/);return(n?n[1]:e).replace(i,\"\")}(t.id,t.name),s=n?1:function(e){return Math.min(e.pixelAspectRatio||1,_)}(i),c=ee(t.id),l=c,d=j(t.id,a?.hasAnimation,a?.allowAnimatedTransform,a?.allowFullGIFTransformation),u={fileName:o,fileExtension:c,fileType:r,fittingType:e,preferredExtension:l,src:{id:t.id,width:t.width,height:t.height,isCropped:!1,isAnimated:le(t.id,a?.hasAnimation)},focalPoint:{x:t.focalPoint&&t.focalPoint.x,y:t.focalPoint&&t.focalPoint.y},parts:[],devicePixelRatio:s,quality:0,upscaleMethod:ce(a),progressive:!0,watermark:\"\",unsharpMask:{},filters:{},transformed:d,allowFullGIFTransformation:a?.allowFullGIFTransformation,isPlaceholderFlow:a?.isPlaceholderFlow};return d&&(_e(u,t,i),Le(u,a)),u}function we(e,t,i){const a={...i},n=ue(\"isMobile\");switch(e){case A.LEGACY_BG_FIT_AND_TILE:case A.LEGACY_BG_FIT_AND_TILE_HORIZONTAL:case A.LEGACY_BG_FIT_AND_TILE_VERTICAL:case A.LEGACY_BG_NORMAL:const e=n?L:I,i=n?b:E;a.width=Math.min(e,t.width),a.height=Math.min(i,Math.round(a.width/(t.width/t.height))),a.pixelAspectRatio=1}return a}const ye=Y`fit/w_${\"width\"},h_${\"height\"}`,ve=Y`fill/w_${\"width\"},h_${\"height\"},al_${\"alignment\"}`,Me=Y`fill/w_${\"width\"},h_${\"height\"},fp_${\"focalPointX\"}_${\"focalPointY\"}`,Oe=Y`crop/x_${\"x\"},y_${\"y\"},w_${\"width\"},h_${\"height\"}`,Se=Y`crop/w_${\"width\"},h_${\"height\"},al_${\"alignment\"}`,Re=Y`fill/w_${\"width\"},h_${\"height\"},al_${\"alignment\"}`,Ce=Y`,lg_${\"upscaleMethodValue\"}`,Ge=Y`,q_${\"quality\"}`,Fe=Y`,quality_auto`,Ne=Y`,usm_${\"radius\"}_${\"amount\"}_${\"threshold\"}`,Pe=Y`,bl`,xe=Y`,wm_${\"watermark\"}`,ke={[k.CONTRAST]:Y`,con_${\"contrast\"}`,[k.BRIGHTNESS]:Y`,br_${\"brightness\"}`,[k.SATURATION]:Y`,sat_${\"saturation\"}`,[k.HUE]:Y`,hue_${\"hue\"}`,[k.BLUR]:Y`,blur_${\"blur\"}`},He=Y`,enc_auto`,Be=Y`,enc_avif`,Ye=Y`,enc_pavif`,Ue=Y`,pstr`,Ze=Y`,anm_all`;function ze(e,t,i,a={},n){if(j(t.id,a?.hasAnimation,a?.allowAnimatedTransform,a?.allowFullGIFTransformation)){if(D(t.id)||q(t.id)){const{alignment:r,...o}=i;t.focalPoint={x:void 0,y:void 0},delete t?.crop,n=Ae(e,t,o,a)}else n=n||Ae(e,t,i,a);return function(e){const t=[];e.parts.forEach(e=>{switch(e.transformType){case w.CROP:t.push(Oe(e));break;case w.LEGACY_CROP:t.push(Se(e));break;case w.LEGACY_FILL:let i=Re(e);e.upscale&&(i+=Ce(e)),t.push(i);break;case w.FIT:let a=ye(e);e.upscale&&(a+=Ce(e)),t.push(a);break;case w.FILL:let n=ve(e);e.upscale&&(n+=Ce(e)),t.push(n);break;case w.FILL_FOCAL:let r=Me(e);e.upscale&&(r+=Ce(e)),t.push(r)}});let i=t.join(\"/\");if(e.quality&&(i+=Ge(e)),e.unsharpMask&&(i+=Ne(e.unsharpMask)),e.progressive||(i+=Pe(e)),e.watermark&&(i+=xe(e)),e.filters&&(i+=Object.keys(e.filters).map(t=>ke[t](e.filters)).join(\"\")),e.fileType!==H.GIF&&(e.encoding===B.AVIF?(i+=Be(e),i+=Fe(e)):e.encoding===B.PAVIF?(i+=Ye(e),i+=Fe(e)):e.autoEncode&&(i+=He(e))),e.src?.isAnimated&&e.transformed){const t=W(e.src.id),a=!0===e.isPlaceholderFlow,n=!0===e.allowFullGIFTransformation;a?i+=Ue(e):t&&n&&(i+=Ze(e))}return`${e.src.id}/${T}/${i}/${e.fileName}.${e.preferredExtension}`}(n)}return t.id}const $e={[y.CENTER]:\"50% 50%\",[y.TOP_LEFT]:\"0% 0%\",[y.TOP_RIGHT]:\"100% 0%\",[y.TOP]:\"50% 0%\",[y.BOTTOM_LEFT]:\"0% 100%\",[y.BOTTOM_RIGHT]:\"100% 100%\",[y.BOTTOM]:\"50% 100%\",[y.RIGHT]:\"100% 50%\",[y.LEFT]:\"0% 50%\"},je=Object.entries($e).reduce((e,[t,i])=>(e[i]=t,e),{}),Ve=[A.TILE,A.TILE_HORIZONTAL,A.TILE_VERTICAL,A.LEGACY_BG_FIT_AND_TILE,A.LEGACY_BG_FIT_AND_TILE_HORIZONTAL,A.LEGACY_BG_FIT_AND_TILE_VERTICAL],De=[A.LEGACY_ORIGINAL_SIZE,A.ORIGINAL_SIZE,A.LEGACY_BG_NORMAL];function We(e,t,{width:i,height:a}){return e===A.TILE&&t.width>i&&t.height>a}function qe(e,{width:t,height:i}){if(!t||!i){const a=t||Math.min(980,e.width),n=a/e.width;return{width:a,height:i||e.height*n}}return{width:t,height:i}}function Je(e,t,i,a=\"center\"){const n={img:{},container:{}};if(e===A.SCALE_TO_FILL){const e=t.focalPoint&&function(e){const t=`${e.x}% ${e.y}%`;return je[t]||\"\"}(t.focalPoint),r=e||a;t.focalPoint&&!e?n.img={objectPosition:Ke(t,i,t.focalPoint)}:n.img={objectPosition:$e[r]}}else[A.LEGACY_ORIGINAL_SIZE,A.ORIGINAL_SIZE].includes(e)?n.img={objectFit:\"none\",top:\"auto\",left:\"auto\",right:\"auto\",bottom:\"auto\"}:Ve.includes(e)&&(n.container={backgroundSize:`${t.width}px ${t.height}px`});return n}function Ke(e,t,i){const{width:a,height:n}=e,{width:r,height:o}=t,{x:s,y:c}=i;if(!r||!o)return`${s}% ${c}%`;const l=Math.max(r/a,o/n),d=a*l,u=n*l,h=Math.max(0,Math.min(d-r,d*(s/100)-r/2)),g=Math.max(0,Math.min(u-o,u*(c/100)-o/2));return`${h&&Math.floor(h/(d-r)*100)}% ${g&&Math.floor(g/(u-o)*100)}%`}const Xe={width:\"100%\",height:\"100%\"};function Qe(e,t,i,a={}){const{autoEncode:n=!0,isSEOBot:r,shouldLoadHQImage:o,hasAnimation:s,allowAnimatedTransform:c,encoding:l}=a;if(!$(e,t,i))return G;const d=!0,u=c??d,h=j(t.id,s,u);if(!h||o)return et(e,t,i,{...a,autoEncode:n,useSrcset:h});const g={...i,...qe(t,i)},{alignment:m,htmlTag:f}=g,p=We(e,t,g),T=function(e,t,{width:i,height:a},n=!1){if(n)return{width:i,height:a};const r=!De.includes(e),o=We(e,t,{width:i,height:a}),s=!o&&Ve.includes(e),c=s?t.width:i,l=s?t.height:a,d=r?function(e,t){return e>900?t?.05:.15:e>500?t?.1:.18:e>200?.25:1}(c,V(t.id)):1;return{width:o?1920:c*d,height:l*d}}(e,t,g,r),_=function(e,t,i){return i?0:Ve.includes(t)?1:e>200?2:3}(g.width,e,r),I=function(e,t){const i=Ve.includes(e)&&!t;return e===A.SCALE_TO_FILL||i?A.SCALE_TO_FIT:e}(e,p),E=Je(e,t,i,m),{uri:L}=et(I,t,{...T,alignment:m,htmlTag:f},{autoEncode:n,filters:_?{blur:_}:{},hasAnimation:s,allowAnimatedTransform:u,encoding:l,isPlaceholderFlow:d}),{attr:b={},css:w}=et(e,t,{...g,alignment:m,htmlTag:f},{});return w.img=w.img||{},w.container=w.container||{},Object.assign(w.img,E.img,Xe),Object.assign(w.container,E.container),{uri:L,css:w,attr:b,transformed:!0}}function et(e,t,i,a){let n={};if($(e,t,i)){const r=we(e,t,i),o=Ae(e,t,r,a);n.uri=ze(e,t,r,a,o),a?.useSrcset&&(n.srcset=function(e,t,i,a,n){const r=i.pixelAspectRatio||1;return{dpr:[`${1===r?n.uri:ze(e,t,{...i,pixelAspectRatio:1},a)} 1x`,`${2===r?n.uri:ze(e,t,{...i,pixelAspectRatio:2},a)} 2x`]}}(e,t,r,a,n)),Object.assign(n,function(e,t){let i;return i=t.htmlTag===O.BG?ge:t.htmlTag===O.SVG?Te:pe,i(e,t)}(o,r),{transformed:o.transformed})}else n=G;return n}const tt=\"https://static.wixstatic.com/media/\";\"undefined\"!=typeof window&&window.devicePixelRatio;he();he();const it=tt,{STATIC_MEDIA_URL:at}=a,nt=({fittingType:e,src:t,target:i,options:a})=>{const n=Qe(e,t,i,{...a,autoEncode:!0});return n?.uri&&!/^[a-z]+:/.test(n.uri)&&(n.uri=`${at}${n.uri}`),n},rt=/^[a-z]+:/,ot=e=>{const{id:t,containerId:i,uri:a,alt:n,name:r=\"\",role:s,width:c,height:l,displayMode:d,devicePixelRatio:u,quality:h,alignType:g,bgEffectName:m=\"\",focalPoint:f,upscaleMethod:T,className:_=\"\",crop:I,imageStyles:E={},targetWidth:L,targetHeight:b,targetScale:A,onLoad:w=()=>{},onError:y=()=>{},shouldUseLQIP:v,containerWidth:M,containerHeight:O,getPlaceholder:S,isInFirstFold:R,placeholderTransition:C,socialAttrs:G,isSEOBot:F,skipMeasure:N,hasAnimation:P,encoding:x,isFluidLayout:k}=e,H=o.useRef(null);let B=\"\";const Y=\"blur\"===C,U=o.useRef(null);if(!U.current)if(S||v||R||F){const e={upscaleMethod:T,...h||{},shouldLoadHQImage:R,isSEOBot:F,hasAnimation:P,encoding:x};U.current=(S||nt)({fittingType:d,src:{id:a,width:c,height:l,crop:I,name:r,focalPoint:f},target:{width:M,height:O,alignment:g,htmlTag:\"img\"},options:e}),B=!U.current.transformed||R||F?\"\":\"true\"}else U.current={uri:void 0,css:{img:{}},attr:{img:{},container:{}},transformed:!1};const Z=!F&&(S||v)&&!R&&U.current.transformed,z=o.useMemo(()=>JSON.stringify({containerId:i,...i&&{containerId:i},...g&&{alignType:g},...N&&{skipMeasure:!0},displayMode:d,...M&&{targetWidth:M},...O&&{targetHeight:O},...L&&{targetWidth:L},...b&&{targetHeight:b},...A&&{targetScale:A},isLQIP:Z,isSEOBot:F,lqipTransition:C,encoding:x,imageData:{width:c,height:l,uri:a,name:r,displayMode:d,hasAnimation:P,...h&&{quality:h},...u&&{devicePixelRatio:u},...f&&{focalPoint:f},...I&&{crop:I},...T&&{upscaleMethod:T}}}),[i,g,N,d,M,O,L,b,A,Z,F,C,x,c,l,a,r,P,h,u,f,I,T]),$=U.current,j=$?.uri,V=$?.srcset,D=$.css?.img,W=`${p} ${_}`;o.useEffect(()=>{const e=H.current;w&&e?.currentSrc&&e?.complete&&w({target:e})},[]);const q=$&&!$?.transformed?`max(${c}px, 100%)`:L?`${L}px`:null;return o.createElement(\"wow-image\",{id:t,class:W,\"data-image-info\":z,\"data-motion-part\":`BG_IMG ${i}`,\"data-bg-effect-name\":m,\"data-has-ssr-src\":B,\"data-animate-blur\":!F&&Z&&Y?\"\":void 0,\"data-is-responsive\":k?\"true\":void 0,style:q?{\"--wix-img-max-width\":q}:{}},o.createElement(\"img\",{src:j,ref:H,alt:n||\"\",role:s,style:{...D,...E},onLoad:w,onError:y,width:M||void 0,height:O||void 0,...G,srcSet:R?V?.dpr?.map(e=>rt.test(e)?e:`${at}${e}`).join(\", \"):void 0,fetchpriority:R?\"high\":void 0,loading:!1===R?\"lazy\":void 0,suppressHydrationWarning:!0}))};var st=\"Tj01hh\";var ct=e=>{var t,i;const{id:a,alt:n,role:s,className:l,imageStyles:d={},targetWidth:u,targetHeight:h,onLoad:g,onError:m,containerWidth:f,containerHeight:p,isInFirstFold:T,socialAttrs:_,skipMeasure:I,responsiveImageProps:E,zoomedImageResponsiveOverride:L,displayMode:b}=e,A=u||f,w=h||p,{fallbackSrc:y,srcset:v,sources:M,css:O}=E||{},{width:S,height:R,...C}=(null==E||null==(t=E.css)?void 0:t.img)||{},G=\"original_size\"===b?null==E||null==(i=E.css)?void 0:i.img:C;var F;return y&&v&&O?o.createElement(\"img\",r()({fetchpriority:T?\"high\":void 0,loading:!1===T?\"lazy\":void 0,sizes:A+\"px\",srcSet:I?null==L?void 0:L.srcset:null==E?void 0:E.srcset,id:a,src:y,alt:n||\"\",role:s,style:{...d,...I?{...null==L||null==(F=L.css)?void 0:F.img}:{...G}},onLoad:g,onError:m,className:(0,c.Z)(l,st),width:A,height:w},_)):y&&M&&O?o.createElement(\"picture\",null,M.map(e=>{let{srcset:t,media:i,sizes:a}=e;return o.createElement(\"source\",{key:i,srcSet:t,media:i,sizes:a})}),o.createElement(\"img\",r()({fetchpriority:T?\"high\":void 0,loading:!1===T?\"lazy\":void 0,id:a,src:M[0].fallbackSrc,alt:n||\"\",role:s,style:{...d,objectFit:M[0].imgStyle.objectFit,objectPosition:M[0].imgStyle.objectPosition},onLoad:g,onError:m,className:(0,c.Z)(l,st),width:A,height:w},_))):o.createElement(ot,e)};var lt=e=>{var t,i,a;const{className:n,customIdPrefix:r,getPlaceholder:s,hasAnimation:c,...l}=e,d=o.useMemo(()=>JSON.stringify({containerId:l.containerId,alignType:l.alignType,fittingType:l.displayMode,hasAnimation:c,imageData:{width:l.width,height:l.height,uri:l.uri,name:l.name,...l.quality&&{quality:l.quality},displayMode:l.displayMode}}),[l,c]),u=o.useRef(null);u.current||(u.current=s?s({fittingType:l.displayMode,src:{id:l.uri,width:l.width,height:l.height,name:l.name},target:{width:l.containerWidth,height:l.containerHeight,alignment:l.alignType,htmlTag:\"bg\"},options:{hasAnimation:c,allowAnimatedTransform:!1}}):{uri:void 0,css:{img:{}},attr:{img:{},container:{}}});const h=u.current,g=null!=(t=null==h?void 0:h.uri)?t:\"\",m=null!=(i=null==(a=h.css)?void 0:a.container)?i:{},f=Object.assign(g?{backgroundImage:\"url(\"+g+\")\"}:{},m);return o.createElement(\"wix-bg-image\",{id:\"\"+(r||\"bgImg_\")+l.containerId,class:n,style:f,\"data-tiled-image-info\":d,\"data-has-bg-scroll-effect\":l.hasBgScrollEffect||\"\",\"data-bg-effect-name\":l.bgEffectName||\"\",\"data-motion-part\":\"BG_IMG \"+l.containerId})};const dt=new RegExp(\"<%= compId %>\",\"g\"),ut=(e,t)=>e.replace(dt,t);var ht=e=>null==e?void 0:e.replace(\":hover\",\"\"),gt=\"bX9O_S\",mt=\"Z_wCwr\",ft=\"Jxk_UL\",pt=\"K8MSra\",Tt=\"YTb3b4\";const _t={quality:{unsharpMask:{radius:.33,amount:1,threshold:0}},devicePixelRatio:1};var It=e=>{const{id:t,videoRef:i,videoInfo:a,posterImageInfo:n,muted:s,preload:l,loop:d,alt:u,isVideoEnabled:h,getPlaceholder:g,extraClassName:m=\"\"}=e;a.containerId=ht(a.containerId);const f=o.useMemo(()=>JSON.stringify(a),[a]),p=o.createElement(o.Fragment,null,n.filterEffectSvgString&&o.createElement(\"svg\",{id:\"svg_\"+a.containerId,className:Tt},o.createElement(\"defs\",{dangerouslySetInnerHTML:{__html:ut(n.filterEffectSvgString,a.containerId)}})),o.createElement(ct,r()({key:a.videoId+\"_img\",id:n.containerId+\"_img\",className:(0,c.Z)(mt,ft,\"bgVideoposter\",m),imageStyles:{width:\"100%\",height:\"100%\"}},n,_t,{getPlaceholder:g})));return h?o.createElement(\"wix-video\",{id:t,\"data-video-info\":f,\"data-motion-part\":\"BG_IMG \"+a.containerId,class:(0,c.Z)(gt,\"bgVideo\",m)},o.createElement(\"video\",{key:a.videoId+\"_video\",ref:i,id:a.containerId+\"_video\",className:pt,crossOrigin:\"anonymous\",\"aria-label\":u,playsInline:!0,preload:l,muted:s,loop:d}),p):p},Et=\"SUz0WK\";var Lt=e=>{const{id:t,containerId:i,pageId:a,children:n,bgEffectName:r=\"\",containerSize:s}=e;return o.createElement(\"wix-bg-media\",{id:t,class:Et,\"data-container-id\":i,\"data-container-size\":((null==s?void 0:s.width)||0)+\", \"+((null==s?void 0:s.height)||0),\"data-page-id\":a,\"data-bg-effect-name\":r,\"data-motion-part\":\"BG_MEDIA \"+i},n)};const bt=\"bgOverlay\";var At=\"m4khSP\",wt=\"FNxOn5\";var yt=e=>{const{imageOverlay:t}=e;return o.createElement(\"div\",{\"data-testid\":bt,className:At},t&&o.createElement(lt,r()({customIdPrefix:\"bgImgOverlay_\",className:wt},t)))};const vt=\"bgLayers\",Mt=\"colorUnderlay\",Ot=\"mediaPadding\",St=\"canvas\";var Rt=\"MW5IWV\",Ct=\"N3eg0s\",Gt=\"Kv1aVt\",Ft=\"dLPlxY\",Nt=\"VgO9Yg\",Pt=\"LWbAav\",xt=\"yK6aSC\",kt=\"K_YxMd\",Ht=\"NGjcJN\",Bt=\"mNGsUM\",Yt=\"I8xA4L\";const Ut=\"bgImage\";var Zt=e=>{const{videoRef:t,canvasRef:i,hasBgFullscreenScrollEffect:a,image:n,backgroundImage:s,backgroundMedia:l,video:d,backgroundOverlay:u,shouldPadMedia:h,extraClass:g=\"\",shouldRenderUnderlay:m=!d,reducedMotion:f=!1,getPlaceholder:p,hasCanvasAnimation:T,useWixMediaCanvas:_,onClick:I}=e,{onImageLoad:E}=(e=>{let{onReady:t,image:i}=e;return(0,o.useEffect)(()=>{t&&!i&&t()},[t,i]),{onImageLoad:e=>{null!=i&&i.onLoad&&i.onLoad(e),t&&t()}}})(e),L=ht(e.containerId),b=\"img_\"+ht(L),A=n&&o.createElement(ct,r()({id:b,className:(0,c.Z)(Gt,Ft,Bt,Ut),imageStyles:{width:\"100%\",height:\"100%\"},getPlaceholder:p},n,{onLoad:E})),w=s&&o.createElement(lt,r()({},s,{containerId:L,className:(0,c.Z)(Gt,Ft,Bt,Ut),getPlaceholder:p})),y=d&&o.createElement(It,r()({id:\"videoContainer_\"+L},d,{extraClassName:xt,reducedMotion:f,videoRef:t,getPlaceholder:p})),v=_&&i||T?o.createElement(\"wix-media-canvas\",{\"data-container-id\":L,class:T?Yt:\"\"},A,w,y,o.createElement(\"canvas\",{id:L+\"webglcanvas\",className:(0,c.Z)(kt,\"webglcanvas\"),\"aria-label\":(null==d?void 0:d.alt)||\"\",role:\"presentation\",\"data-testid\":St})):o.createElement(o.Fragment,null,A,w,y,i&&o.createElement(\"canvas\",{id:L+\"webglcanvas\",ref:i,className:(0,c.Z)(kt,\"webglcanvas\"),\"aria-label\":(null==d?void 0:d.alt)||\"\",role:\"presentation\",\"data-testid\":St})),M=l?o.createElement(Lt,r()({id:\"bgMedia_\"+L},l),v):o.createElement(\"div\",{id:\"bgMedia_\"+L,\"data-motion-part\":\"BG_MEDIA \"+L,className:Nt},v),O=u&&o.createElement(yt,u);return o.createElement(\"div\",{id:vt+\"_\"+L,\"data-hook\":vt,\"data-motion-part\":\"BG_LAYER \"+L,className:(0,c.Z)(Rt,g,{[Ct]:a}),onClick:I},m&&o.createElement(\"div\",{\"data-testid\":Mt,className:(0,c.Z)(Pt,Gt)}),h?o.createElement(\"div\",{\"data-testid\":Ot,className:Ht},M,O):o.createElement(o.Fragment,null,M,O))};var zt=e=>o.createElement(Zt,e),$t=\"dkukWC\",jt=\"FRCqDF\",Vt=\"xnZvZH\",Dt=\"MBOSCN\";const Wt=(e,t,i)=>{const a=((e,t)=>e?[...Array(1+(t||0)).keys()].reverse().map(e=>o.createElement(\"div\",{key:\"divider-layer-\"+e,style:{\"--divider-layer-i\":e},className:jt,\"data-testid\":\"divider-layer-\"+e,\"data-divider-layer\":e})):null)(!!t,i);return t?o.createElement(\"div\",{className:(0,c.Z)($t,{[Vt]:\"top\"===e,[Dt]:\"bottom\"===e}),\"data-testid\":e+\"-divider\"},a):null};var qt=e=>{var t,i;const a=o.useMemo(()=>{var t;return Wt(\"top\",null==e?void 0:e.hasTopDivider,null==e||null==(t=e.topLayers)?void 0:t.size)},[null==e?void 0:e.hasTopDivider,null==e||null==(t=e.topLayers)?void 0:t.size]),n=o.useMemo(()=>{var t;return Wt(\"bottom\",null==e?void 0:e.hasBottomDivider,null==e||null==(t=e.bottomLayers)?void 0:t.size)},[null==e?void 0:e.hasBottomDivider,null==e||null==(i=e.bottomLayers)?void 0:i.size]);return o.createElement(o.Fragment,null,a,n)};var Jt={root:\"section\"},Kt=i(\"p1x1\");const Xt=({size:e,...t})=>o.createElement(\"svg\",{viewBox:\"0 0 18 18\",fill:\"currentColor\",width:e||\"18\",height:e||\"18\",...t},o.createElement(\"path\",{d:\"M7.5,5 C8.32842712,5 9,5.67157288 9,6.5 L9,11.5 C9,12.3284271 8.32842712,13 7.5,13 C6.67157288,13 6,12.3284271 6,11.5 L6,6.5 C6,5.67157288 6.67157288,5 7.5,5 Z M11.5,5 C12.3284271,5 13,5.67157288 13,6.5 L13,11.5 C13,12.3284271 12.3284271,13 11.5,13 C10.6715729,13 10,12.3284271 10,11.5 L10,6.5 C10,5.67157288 10.6715729,5 11.5,5 Z M7.5,6 C7.22385763,6 7,6.22385763 7,6.5 L7,11.5 C7,11.7761424 7.22385763,12 7.5,12 C7.77614237,12 8,11.7761424 8,11.5 L8,6.5 C8,6.22385763 7.77614237,6 7.5,6 Z M11.5,6 C11.2238576,6 11,6.22385763 11,6.5 L11,11.5 C11,11.7761424 11.2238576,12 11.5,12 C11.7761424,12 12,11.7761424 12,11.5 L12,6.5 C12,6.22385763 11.7761424,6 11.5,6 Z\"}));Xt.displayName=\"PauseSmall\";var Qt=Xt;const ei=({size:e,...t})=>o.createElement(\"svg\",{viewBox:\"0 0 18 18\",fill:\"currentColor\",width:e||\"18\",height:e||\"18\",...t},o.createElement(\"path\",{d:\"M6.87468837,5.45041947 L12.7318793,8.46657119 C13.20163,8.68731241 13.20163,9.26940918 12.7318793,9.53342881 L6.87468837,12.5495805 C6.58008377,12.7012867 6.00070071,12.5801226 6,12.0161517 L6,5.98384828 C6,5.65247743 6.35266876,5.20682168 6.87468837,5.45041947 Z M7,11.3602529 L11.5834735,9 L7,6.63974714 L7,11.3602529 Z\"}));ei.displayName=\"PlaySmall\";var ti=ei;const ii=(e,t)=>{var i;const{id:a,skin:n=\"RectangleArea\",className:l,containerRootClassName:h=\"\",customClassNames:g=[],containerProps:m,children:p,fillLayers:T=e.fillLayers||e.background,tagName:_,getPlaceholder:I,dividers:E,semanticClassNames:L,onStop:b,onClick:A,onDblClick:w,onMouseEnter:y,onMouseLeave:v,lang:M,translations:O,isPlayPauseSectionExperimentOn:S,isBuilder:R}=e,C=_||\"section\",{shouldOmitWrapperLayers:G}=m,F=(0,c.Z)(Kt.Z[n],h,l,L?d(L.root,...g):d(Jt.root,...g),{[Kt.Z.shouldOmitWrapperLayers]:G}),N=!(null==T||!T.video),P=function(e,t,i){const a=s().useRef(null),n=s().useRef(null);return t?n.current||(n.current={play:()=>a.current?.play(),load:()=>a.current?.load(),pause:()=>a.current?.pause(),stop:()=>{a.current&&(a.current.pause(),a.current.currentTime=0,i&&i(a.current))}}):n.current=null,s().useImperativeHandle(e,()=>n.current||{load(){},stop(){}}),a}(t,N,b),[x,k]=o.useState(!(null!=P&&null!=(i=P.current)&&i.paused));return o.createElement(C,r()({id:a},(0,u.P5)(e),((e={})=>{const t=e.tabIndex??e.tabindex??void 0;return void 0!==t?{tabIndex:Number(t)}:{}})(e.a11y||{tabIndex:-1}),(H=e.a11y,H?.label?{\"aria-label\":H.label}:{}),{\"data-block-level-container\":\"Section\",className:F+\" \"+Kt.Z.section,\"data-testid\":f,onClick:A,onDoubleClick:w,onMouseEnter:y,onMouseLeave:v,lang:M}),T&&!R&&o.createElement(zt,r()({},T,{videoRef:P,getPlaceholder:I})),N&&S&&!R&&o.createElement(\"button\",{className:\"\"+Kt.Z.videoPlayPauseButton,onClick:()=>{const e=null==P?void 0:P.current;e&&(e.paused?e.play():e.pause(),k(t=>{const i=!t,n=document.getElementById(a);if(n){n.querySelectorAll(\"video\").forEach(t=>{t!==e&&(i?t.play():t.pause())})}return i}))},\"aria-pressed\":x,\"aria-label\":null==O?void 0:O.ariaLabel},x?o.createElement(Qt,null):o.createElement(ti,null)),E&&!R&&o.createElement(qt,E),p());var H};var ai=o.forwardRef(ii)},cy2i:function(e,t,i){var a;!function(t){\"use strict\";var n=function(){},r=t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.msRequestAnimationFrame||function(e){return setTimeout(e,16)};function o(){var e=this;e.reads=[],e.writes=[],e.raf=r.bind(t),n(\"initialized\",e)}function s(e){e.scheduled||(e.scheduled=!0,e.raf(c.bind(null,e)),n(\"flush scheduled\"))}function c(e){n(\"flush\");var t,i=e.writes,a=e.reads;try{n(\"flushing reads\",a.length),e.runTasks(a),n(\"flushing writes\",i.length),e.runTasks(i)}catch(e){t=e}if(e.scheduled=!1,(a.length||i.length)&&s(e),t){if(n(\"task errored\",t.message),!e.catch)throw t;e.catch(t)}}function l(e,t){var i=e.indexOf(t);return!!~i&&!!e.splice(i,1)}o.prototype={constructor:o,runTasks:function(e){var t;for(n(\"run tasks\");t=e.shift();)t()},measure:function(e,t){n(\"measure\");var i=t?e.bind(t):e;return this.reads.push(i),s(this),i},mutate:function(e,t){n(\"mutate\");var i=t?e.bind(t):e;return this.writes.push(i),s(this),i},clear:function(e){return n(\"clear\",e),l(this.reads,e)||l(this.writes,e)},extend:function(e){if(n(\"extend\",e),\"object\"!=typeof e)throw new Error(\"expected object\");var t=Object.create(this);return function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])}(t,e),t.fastdom=this,t.initialize&&t.initialize(),t},catch:null};var d=t.fastdom=t.fastdom||new o;void 0===(a=function(){return d}.call(d,i,d,e))||(e.exports=a)}(\"undefined\"!=typeof window?window:void 0!==this?this:globalThis)},p1x1:function(e,t){\"use strict\";t.Z={\"bg-underlay\":\"LWbAav\",bgUnderlay:\"LWbAav\",\"layers-container\":\"MW5IWV\",layersContainer:\"MW5IWV\",animate:\"V7OeEw\",headerSectionAddVisibilityTransition:\"MDGLoD\",move:\"BHIo43\",fade:\"UvF1nu\",scrollUp:\"YzrQFb\",RectangleArea:\"xuzjBY\",rectangleArea:\"xuzjBY\",DefaultAreaSkin:\"O7Ybkb\",defaultAreaSkin:\"O7Ybkb\",\"full-screen-scroll-effect\":\"GeNLDt\",fullScreenScrollEffect:\"GeNLDt\",\"fill-layer\":\"K8pHFh\",fillLayer:\"K8pHFh\",\"image-fill-layer\":\"TaweqS\",imageFillLayer:\"TaweqS\",\"bg-media\":\"yzHyNT\",bgMedia:\"yzHyNT\",videoFillLayer:\"zBFCpO\",\"alpha-canvas\":\"xjgrS3\",alphaCanvas:\"xjgrS3\",\"media-padding-layer\":\"b3zSS0\",mediaPaddingLayer:\"b3zSS0\",transforms:\"Wsv3ak\",\"media-canvas\":\"IiJMfn\",mediaCanvas:\"IiJMfn\",RectangleAreaAfterScroll:\"KJgt14\",rectangleAreaAfterScroll:\"KJgt14\",scrolled:\"VTwcX7\",section:\"Gzsk0j\",\"video-play-pause-button\":\"MdLl0h\",videoPlayPauseButton:\"MdLl0h\",childrenContainer:\"Gmmci1\"}},guqK:function(e,t,i){\"use strict\";i.d(t,{P5:function(){return n},jU:function(){return a}});const a=()=>\"undefined\"!=typeof window,n=e=>Object.entries(e).reduce((e,[t,i])=>(t.includes(\"data-\")&&(e[t]=i),e),{})},\"Xdf/\":function(t){\"use strict\";t.exports=e},Fe5V:function(e){function t(){return e.exports=t=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var a in i)({}).hasOwnProperty.call(i,a)&&(e[a]=i[a])}return e},e.exports.__esModule=!0,e.exports.default=e.exports,t.apply(null,arguments)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},MRkx:function(e,t,i){\"use strict\";function a(e){var t,i,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(i=a(e[t]))&&(n&&(n+=\" \"),n+=i);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}t.Z=function(){for(var e,t,i=0,n=\"\";i<arguments.length;)(e=arguments[i++])&&(t=a(e))&&(n&&(n+=\" \"),n+=t);return n}}},i={};function a(e){var n=i[e];if(void 0!==n)return n.exports;var r=i[e]={exports:{}};return t[e].call(r.exports,r,r.exports,a),r.exports}a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,{a:t}),t},a.d=function(e,t){for(var i in t)a.o(t,i)&&!a.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var n={};return function(){\"use strict\";a.r(n),a.d(n,{default:function(){return _}});var e=a(\"Fe5V\"),t=a.n(e),i=a(\"Xdf/\"),r=a.n(i),o=a(\"MRkx\"),s=a(\"iCIt\"),c=a(\"cy2i\"),l=a.n(c),d=a(\"guqK\");function u(){if(!(0,d.jU)())return{x:0,y:0,isAtPageBottom:!1};const{left:e,top:t}=document.body.getBoundingClientRect();return{x:e,y:t,isAtPageBottom:window.innerHeight+window.scrollY===document.body.scrollHeight}}function h(e,t,a){void 0===a&&(a={}),a={waitFor:100,disabled:!1,...a};const n=(0,i.useRef)(u());let r=null;const o=()=>{l().measure(()=>{const t=u(),i=n.current;n.current=t,r=null,l().mutate(()=>e({prevPos:i,currPos:t}))})};((0,d.jU)()?i.useLayoutEffect:i.useEffect)(()=>{if(!(0,d.jU)())return;const e=()=>{null===r&&(r=window.setTimeout(o,a.waitFor))};return a.disabled?()=>{}:(window.addEventListener(\"scroll\",e),()=>{window.removeEventListener(\"scroll\",e),r&&window.clearTimeout(r)})},t)}var g=a(\"p1x1\");var m={root:\"header\"},f=\"PgbBOL\",p=\"mBJHfd\";var T=e=>{const i=\"scrolled-down\"===e.animationState&&\"fade\"===e.animate;return r().createElement(\"div\",{id:\"header-section-wrapper_\"+e.id,className:(0,o.Z)(p,e.className,{[g.Z.animate]:\"none\"!==e.animate,[g.Z.move]:\"scrolled-down\"===e.animationState&&\"move\"===e.animate,[g.Z.fade]:i,[g.Z.headerSectionAddVisibilityTransition]:i&&e.isHeaderSectionAddVisibilityTransitionEnabled,[g.Z.scrollUp]:\"scrolled-up\"===e.animationState,[g.Z.scrolled]:e.scrolled})},r().createElement(s.default,t()({},e,{semanticClassNames:m,className:(0,o.Z)(e.className,{[g.Z[e.skin]]:!0})})))};var _=e=>{const[a,n]=r().useState(!1);h(e=>{let{currPos:t}=e;-1*t.y>=2?a||n(!0):a&&n(!1)},[a],{disabled:\"RectangleAreaAfterScroll\"!==e.skin});const[c,l]=(0,i.useState)(\"\");if(h(((e,t)=>{let i=0,a=\"DOWN\";return n=>{let{prevPos:r,currPos:o}=n;const s=-1*o.y,c=-1*r.y;s>=c?(\"UP\"===a&&(i=c,a=\"DOWN\"),s-i>(e=>\"move\"===e?400:200)(e)&&t(\"scrolled-down\")):(\"DOWN\"===a&&(i=c,a=\"UP\"),(i-s>100||s<=10)&&t(\"scrolled-up\"))}})(e.animate,l),[],{waitFor:45,disabled:\"none\"===e.animate}),e.isBuilder&&!e.isHeaderUseMarginsEnabled)return r().createElement(T,t()({},e,{animationState:c,scrolled:a}));const d=\"scrolled-down\"===c&&\"fade\"===e.animate;return r().createElement(s.default,t()({},e,{semanticClassNames:m,className:(0,o.Z)(e.className,{[g.Z[e.skin]]:!0,[g.Z.scrolled]:a,[g.Z.animate]:\"none\"!==e.animate,[g.Z.move]:\"scrolled-down\"===c&&\"move\"===e.animate,[g.Z.fade]:d,[g.Z.headerSectionAddVisibilityTransition]:d&&e.isHeaderSectionAddVisibilityTransitionEnabled,[g.Z.scrollUp]:\"scrolled-up\"===c,[f]:e.isHeaderUseMarginsEnabled&&e.isBuilder})}))}}(),n}()});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGh1bmRlcmJvbHQvY29tcG9uZW50L0hlYWRlclNlY3Rpb24vSGVhZGVyU2VjdGlvbi5idW5kbGUubWluLmpzIiwibWFwcGluZ3MiOiJDQUFBLFNBQTJDQSxFQUFNQyxHQUMxQixpQkFBWkMsU0FBMEMsaUJBQVhDLE9BQ3hDQSxPQUFPRCxRQUFVRCxFQUFRRyxRQUFRLFVBQ1IsbUJBQVhDLFFBQXlCQSxPQUFPQyxJQUM5Q0QsT0FBTyxvREFBcUQsQ0FBQyxTQUFVSixHQUM3QyxpQkFBWkMsUUFDZEEsUUFBUSxxREFBdURELEVBQVFHLFFBQVEsVUFFL0VKLEVBQUsscURBQXVEQyxFQUFRRCxFQUFZLE1BQ2pGLENBVEQsQ0FTb0Isb0JBQVRPLEtBQXVCQSxLQUFPQyxLQUFPLFNBQVNDLEdBQ3pELE8sOE9DVk8sTUFBTUMsRUFBYSxTQUNiQyxFQUFtQixDQUFDQyxLQUFzQkMsS0FDbkQsTUFBTUMsRUFBUyxHQVdmLE9BVklGLEdBQ0FFLEVBQU9DLEtBQUssR0FBR0wsSUFBYUUsS0FFaENDLEVBQWlCRyxRQUFRQyxJQUNqQkEsSUFFQUgsRUFBT0MsS0FBSyxHQUFHTCxJQUFhTyxLQUM1QkgsRUFBT0MsS0FBS0UsTUFHYkgsRUFBT0ksS0FBSyxNLGdCQ2JoQixNQUFNQyxFQUNGLEdBREVBLEVBS0QsR0F3QlosU0FBU0MsRUFBY0MsR0FDbkIsT0FBT0MsSUFDQ0EsRUFBTUMsVUFBWUYsSUFDbEJDLEVBQU1FLGlCQUNORixFQUFNRyxrQkFDTkgsRUFBTUksY0FBY0MsU0FHaEMsQ0FDcUNQLEVBcEMxQixJQXFDMEJBLEVBQWNELEdBS2JDLEVBQWNELEdDNUM3QyxNQUFNUyxFQUNGLG9CQ0FYLE1BQXdCLFNDRXhCLE1BQU1DLEVBQWMsS0FJZEMsRUFBeUIsRUFJekJDLEVBQWlDLEtBQ2pDQyxFQUFrQyxLQUNsQ0MsRUFBa0MsSUFDbENDLEVBQW1DLElBTW5DQyxFQUFlLENBQ2pCQyxjQUFlLE9BQ2ZDLGFBQWMsTUFDZEMsUUFBUyxVQUNUQyxjQUFlLGdCQUNmQyxLQUFNLE9B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SyxZQUFjN0ssRUFBTW9VLDBCQUM1QixPQUNFN1EsSUFBQUEsY0FBQzhRLEVBQW9CN1EsSUFBQSxHQUNmeEQsRUFBSyxDQUNUZ1QsZUFBZ0JBLEVBQ2hCUSxTQUFVQSxLQUtoQixNQUFNVCxFQUNlLGtCQUFuQkMsR0FBd0QsU0FBbEJoVCxFQUFNaVQsUUFFOUMsT0FDRTFQLElBQUFBLGNBQUNxRyxFQUFBQSxRQUFPcEcsSUFBQSxHQUNGeEQsRUFBSyxDQUNUcUssbUJBQW9CQSxFQUNwQi9rQixXQUFXeWMsRUFBQUEsRUFBQUEsR0FBVy9CLEVBQU0xYSxVQUFXLENBQ3JDLENBQUNvZSxFQUFBQSxFQUFPMUQsRUFBTStKLFFBQVEsRUFDdEIsQ0FBQ3JHLEVBQUFBLEVBQU84UCxVQUFXQSxFQUNuQixDQUFDOVAsRUFBQUEsRUFBT3VQLFNBQTRCLFNBQWxCalQsRUFBTWlULFFBQ3hCLENBQUN2UCxFQUFBQSxFQUFPeVAsTUFDYSxrQkFBbkJILEdBQXdELFNBQWxCaFQsRUFBTWlULFFBQzlDLENBQUN2UCxFQUFBQSxFQUFPMFAsTUFBT0wsRUFDZixDQUFDclAsRUFBQUEsRUFBTzJQLHNDQUNOTixHQUFlL1MsRUFBTXNULDhDQUN2QixDQUFDNVAsRUFBQUEsRUFBTzZQLFVBQThCLGdCQUFuQlAsRUFDbkIsQ0FBQ0UsR0FDQ2xULEVBQU1vVSwyQkFBNkJwVSxFQUFNNkssZSIsInNvdXJjZXMiOlsid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vZWRpdG9yLWVsZW1lbnRzLWNvbW1vbi11dGlscy9kaXN0L2VzbS9jc3NFZGl0aW5nL2NsYXNzLW5hbWVzLWZvcm1tYXRlci5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL2VkaXRvci1lbGVtZW50cy1jb21tb24tdXRpbHMvZGlzdC9lc20vY29tbW9ucy9hMTF5LmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvU2VjdGlvbnMvU2VjdGlvbi9jb25zdGFudHMudHMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdpeC9pbWFnZS9kaXN0L2VzbS9JbWFnZS5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9Ad2l4L2ltYWdlLWtpdC9kaXN0L2VzbS9oZWxwZXJzL2ltYWdlU2VydmljZUNvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9Ad2l4L2ltYWdlLWtpdC9kaXN0L2VzbS9oZWxwZXJzL3V0aWxzLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B3aXgvaW1hZ2Uta2l0L2Rpc3QvZXNtL2hlbHBlcnMvaW1hZ2VTZXJ2aWNlVXRpbHMuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdpeC9pbWFnZS1raXQvZGlzdC9lc20vaGVscGVycy9pbWFnZVNlcnZpY2VGZWF0dXJlU3VwcG9ydE9iamVjdC5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9Ad2l4L2ltYWdlLWtpdC9kaXN0L2VzbS9oZWxwZXJzL3BvcHVsYXRlRmVhdHVyZVN1cHBvcnQuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdpeC9pbWFnZS1raXQvZGlzdC9lc20vZW5naW5lcy9hdHRyaWJ1dGVzL2JhY2tncm91bmRBdHRyaWJ1dGVzLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B3aXgvaW1hZ2Uta2l0L2Rpc3QvZXNtL2VuZ2luZXMvYXR0cmlidXRlcy9pbWdBdHRyaWJ1dGVzLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B3aXgvaW1hZ2Uta2l0L2Rpc3QvZXNtL2VuZ2luZXMvYXR0cmlidXRlcy9TVkdBdHRyaWJ1dGVzLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B3aXgvaW1hZ2Uta2l0L2Rpc3QvZXNtL2hlbHBlcnMvaW1hZ2VUcmFuc2Zvcm1QYXJ0cy5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9Ad2l4L2ltYWdlLWtpdC9kaXN0L2VzbS9oZWxwZXJzL2ltYWdlVHJhbnNmb3JtT3B0aW9ucy5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9Ad2l4L2ltYWdlLWtpdC9kaXN0L2VzbS9hcGkvdHJhbnNmb3JtLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B3aXgvaW1hZ2Uta2l0L2Rpc3QvZXNtL2hlbHBlcnMvYnJvd3NlckZlYXR1cmVTdXBwb3J0LmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B3aXgvaW1hZ2Uta2l0L2Rpc3QvZXNtL2VuZ2luZXMvdHJhbnNmb3Jtcy5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9Ad2l4L2ltYWdlLWtpdC9kaXN0L2VzbS9hcGkvdXJpLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B3aXgvaW1hZ2Uta2l0L2Rpc3QvZXNtL2hlbHBlcnMvaW1hZ2VQbGFjZWhvbGRlclV0aWxzLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B3aXgvaW1hZ2Uta2l0L2Rpc3QvZXNtL2FwaS9tYXgvYXBpLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B3aXgvaW1hZ2Uta2l0L2Rpc3QvZXNtL2FwaS9zcmNzZXQuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdpeC9pbWFnZS1raXQvZGlzdC9lc20vZW5naW5lcy9hdHRyaWJ1dGVzLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B3aXgvaW1hZ2Uta2l0L2Rpc3QvZXNtL3Nkay9hcGkuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdpeC9pbWFnZS1raXQvZGlzdC9lc20vc2RrL2luZGV4LmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B3aXgvaW1hZ2Uta2l0L2Rpc3QvZXNtL2FwaS9tYXgvaW5kZXguanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdpeC9pbWFnZS9kaXN0L2VzbS9JbWFnZS5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL0ltYWdlL3ZpZXdlci9zdHlsZS9JbWFnZS5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL0ltYWdlL3ZpZXdlci9JbWFnZS50c3giLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvY29tcG9uZW50cy9CYWNrZ3JvdW5kSW1hZ2Uvdmlld2VyL0JhY2tncm91bmRJbWFnZS50c3giLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi9lZGl0b3ItZWxlbWVudHMtY29tbW9uLXV0aWxzL2Rpc3QvZXNtL2NvbW1vbnMvdmVjdG9ySW1hZ2VVdGlscy5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL01lZGlhQ29udGFpbmVycy9Ib3ZlckJveC91dGlscy50cyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL1ZpZGVvL3ZpZXdlci9zdHlsZS9WaWRlby5zY3NzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvVmlkZW8vdmlld2VyL1ZpZGVvLnRzeCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL0JhY2tncm91bmRNZWRpYS92aWV3ZXIvc3R5bGUvQmFja2dyb3VuZE1lZGlhLnNjc3MiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvY29tcG9uZW50cy9CYWNrZ3JvdW5kTWVkaWEvdmlld2VyL0JhY2tncm91bmRNZWRpYS50c3giLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvY29tcG9uZW50cy9CYWNrZ3JvdW5kT3ZlcmxheS9jb25zdGFudHMudHMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvY29tcG9uZW50cy9CYWNrZ3JvdW5kT3ZlcmxheS92aWV3ZXIvc3R5bGUvQmFja2dyb3VuZE92ZXJsYXkuc2NzcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL0JhY2tncm91bmRPdmVybGF5L3ZpZXdlci9CYWNrZ3JvdW5kT3ZlcmxheS50c3giLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvY29tcG9uZW50cy9GaWxsTGF5ZXJzL2NvbnN0YW50cy50cyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL0ZpbGxMYXllcnMvdmlld2VyL3N0eWxlL0ZpbGxMYXllcnMuc2NzcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL0ZpbGxMYXllcnMvdmlld2VyL3VzZU9uTG9hZHNFdmVudHMudHMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvY29tcG9uZW50cy9GaWxsTGF5ZXJzL3ZpZXdlci9GaWxsTGF5ZXJzLnRzeCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL0JhY2tncm91bmRYL3ZpZXdlci9CYWNrZ3JvdW5kWC50c3giLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvY29tcG9uZW50cy9NZWRpYUNvbnRhaW5lcnMvU2hhcGVEaXZpZGVycy92aWV3ZXIvc3R5bGUvc2hhcGVEaXZpZGVycy5zY3NzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvTWVkaWFDb250YWluZXJzL1NoYXBlRGl2aWRlcnMvdmlld2VyL3NoYXBlRGl2aWRlcnMudHN4Iiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvU2VjdGlvbnMvU2VjdGlvbi9TZWN0aW9uLnNlbWFudGljQ2xhc3NOYW1lcy50cyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9Ad2l4L3dpeC11aS1pY29ucy1jb21tb24vZGlzdC9lc20vZGVmYXVsdC9nZW5lcmFsL2Rpc3QvY29tcG9uZW50cy9QYXVzZVNtYWxsLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B3aXgvd2l4LXVpLWljb25zLWNvbW1vbi9kaXN0L2VzbS9kZWZhdWx0L2dlbmVyYWwvZGlzdC9jb21wb25lbnRzL1BsYXlTbWFsbC5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL1NlY3Rpb25zL1NlY3Rpb24vdmlld2VyL1NlY3Rpb24udHN4Iiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vZWRpdG9yLWVsZW1lbnRzLWNvbW1vbi11dGlscy9kaXN0L2VzbS9tZWRpYS91c2VWaWRlb0FQSS5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9mYXN0ZG9tL2Zhc3Rkb20uanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvY29tcG9uZW50cy9TZWN0aW9ucy9TZWN0aW9uL3ZpZXdlci9zdHlsZXMvU2VjdGlvbi5zY3NzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vZWRpdG9yLWVsZW1lbnRzLWNvbW1vbi11dGlscy9kaXN0L2VzbS9jb21tb25zL3V0aWxzLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvZXh0ZXJuYWwgdW1kIHtcImFtZFwiOlwicmVhY3RcIixcImNvbW1vbmpzXCI6XCJyZWFjdFwiLFwiY29tbW9uanMyXCI6XCJyZWFjdFwiLFwicm9vdFwiOlwiUmVhY3RcIn0iLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nsc3gvZGlzdC9jbHN4Lm1qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9wcm92aWRlcnMvdXNlU2Nyb2xsUG9zaXRpb24vaW5kZXgudHMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvY29tcG9uZW50cy9TZWN0aW9ucy9IZWFkZXJTZWN0aW9uL0hlYWRlclNlY3Rpb24uc2VtYW50aWNDbGFzc05hbWVzLnRzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvU2VjdGlvbnMvSGVhZGVyU2VjdGlvbi92aWV3ZXIvSGVhZGVyU2VjdGlvbi5zY3NzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvU2VjdGlvbnMvSGVhZGVyU2VjdGlvbi92aWV3ZXIvSGVhZGVyU2VjdGlvbkJ1aWxkZXIuc2NzcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL1NlY3Rpb25zL0hlYWRlclNlY3Rpb24vdmlld2VyL0hlYWRlclNlY3Rpb25CdWlsZGVyLnRzeCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL1NlY3Rpb25zL0hlYWRlclNlY3Rpb24vdmlld2VyL0hlYWRlclNlY3Rpb24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcInJlYWN0XCIpKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFwidGh1bmRlcmJvbHQvY29tcG9uZW50L0hlYWRlclNlY3Rpb24vSGVhZGVyU2VjdGlvblwiLCBbXCJyZWFjdFwiXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJ0aHVuZGVyYm9sdC9jb21wb25lbnQvSGVhZGVyU2VjdGlvbi9IZWFkZXJTZWN0aW9uXCJdID0gZmFjdG9yeShyZXF1aXJlKFwicmVhY3RcIikpO1xuXHRlbHNlXG5cdFx0cm9vdFtcInRodW5kZXJib2x0L2NvbXBvbmVudC9IZWFkZXJTZWN0aW9uL0hlYWRlclNlY3Rpb25cIl0gPSBmYWN0b3J5KHJvb3RbXCJSZWFjdFwiXSk7XG59KSgodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHRoaXMpLCBmdW5jdGlvbihfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX1hkZl9fXykge1xucmV0dXJuICIsImV4cG9ydCBjb25zdCBDU1NfUFJFRklYID0gJ3dpeHVpLSc7XG5leHBvcnQgY29uc3QgZm9ybWF0Q2xhc3NOYW1lcyA9IChzZW1hbnRpY0NsYXNzTmFtZSwgLi4uY3VzdG9tQ2xhc3NOYW1lcykgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgIGlmIChzZW1hbnRpY0NsYXNzTmFtZSkge1xuICAgICAgICByZXN1bHQucHVzaChgJHtDU1NfUFJFRklYfSR7c2VtYW50aWNDbGFzc05hbWV9YCk7XG4gICAgfVxuICAgIGN1c3RvbUNsYXNzTmFtZXMuZm9yRWFjaChjbGFzc05hbWUgPT4ge1xuICAgICAgICBpZiAoY2xhc3NOYW1lKSB7XG4gICAgICAgICAgICAvLyBhZGQgZWFjaCBjdXN0b20gY2xhc3Mgd2l0aCBhbmQgd2l0aG91dCB0aGUgcHJlZml4XG4gICAgICAgICAgICByZXN1bHQucHVzaChgJHtDU1NfUFJFRklYfSR7Y2xhc3NOYW1lfWApO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goY2xhc3NOYW1lKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQuam9pbignICcpO1xufTtcbi8vIHJlbW92ZSB3aGVuIGh0dHBzOi8vZ2l0aHViLmNvbS9zZWFyY2g/cT1yZXBvJTNBd2l4LXByaXZhdGUlMkZ0aHVuZGVyYm9sdCUyMGN1c3RvbUNzc0NsYXNzZXMmdHlwZT1jb2RlIGhhcyBubyB1c2FnZXNcbmV4cG9ydCBjb25zdCBjdXN0b21Dc3NDbGFzc2VzID0gKC4uLmNsYXNzTmFtZXMpID0+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgIGNvbnNvbGUud2FybignY3VzdG9tQ3NzQ2xhc3NlcyBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIGZvcm1hdENsYXNzTmFtZXMgaW5zdGVhZCcpO1xuICAgIGNvbnN0IFtzZW1hbnRpYywgLi4ucmVzdF0gPSBjbGFzc05hbWVzO1xuICAgIHJldHVybiBmb3JtYXRDbGFzc05hbWVzKHNlbWFudGljLCAuLi5yZXN0KTtcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jbGFzcy1uYW1lcy1mb3JtbWF0ZXIuanMubWFwIiwiZXhwb3J0IGNvbnN0IGtleUNvZGVzID0ge1xuICAgIGVudGVyOiAxMyxcbiAgICBzcGFjZTogMzIsXG4gICAgZW5kOiAzNSxcbiAgICBob21lOiAzNixcbiAgICBlc2NhcGU6IDI3LFxuICAgIGFycm93TGVmdDogMzcsXG4gICAgYXJyb3dVcDogMzgsXG4gICAgYXJyb3dSaWdodDogMzksXG4gICAgYXJyb3dEb3duOiA0MCxcbiAgICB0YWI6IDksXG4gICAgZGVsZXRlOiA0NixcbiAgICBhOiA2NSxcbiAgICB6OiA5MCxcbiAgICBwYWdlVXA6IDMzLFxuICAgIHBhZ2VEb3duOiAzNCxcbn07XG5leHBvcnQgY29uc3Qga2V5Ym9hcmRTaG9ydGN1dHMgPSB7XG4gICAgY29uZmlybUtleTogJ0VudGVyJyxcbiAgICBzcGFjZUtleTogJyAnLFxuICAgIGFycm93RG93bktleTogJ0Fycm93RG93bicsXG4gICAgYXJyb3dVcEtleTogJ0Fycm93VXAnLFxuICAgIGVzY2FwZUtleTogJ0VzY2FwZScsXG59O1xuLy8gc2VlOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudC9rZXkvS2V5X1ZhbHVlc1xuZXhwb3J0IGNvbnN0IGtleXMgPSB7XG4gICAgc3BhY2U6IFsnU3BhY2ViYXInLCAnICddLFxuICAgIGVudGVyOiBbJ0VudGVyJ10sXG59O1xuZnVuY3Rpb24gYWN0aXZhdGVCeUtleShrZXkpIHtcbiAgICByZXR1cm4gZXZlbnQgPT4ge1xuICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0ga2V5KSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0LmNsaWNrKCk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuZXhwb3J0IGNvbnN0IGFjdGl2YXRlQnlTcGFjZUJ1dHRvbiA9IGFjdGl2YXRlQnlLZXkoa2V5Q29kZXMuc3BhY2UpO1xuZXhwb3J0IGNvbnN0IGFjdGl2YXRlQnlFbnRlckJ1dHRvbiA9IGFjdGl2YXRlQnlLZXkoa2V5Q29kZXMuZW50ZXIpO1xuZXhwb3J0IGNvbnN0IGFjdGl2YXRlQnlTcGFjZU9yRW50ZXJCdXR0b24gPSBldmVudCA9PiB7XG4gICAgYWN0aXZhdGVCeUVudGVyQnV0dG9uKGV2ZW50KTtcbiAgICBhY3RpdmF0ZUJ5U3BhY2VCdXR0b24oZXZlbnQpO1xufTtcbmV4cG9ydCBjb25zdCBhY3RpdmF0ZUJ5RXNjYXBlQnV0dG9uID0gYWN0aXZhdGVCeUtleShrZXlDb2Rlcy5lc2NhcGUpO1xuZXhwb3J0IGNvbnN0IEhBU19DVVNUT01fRk9DVVNfQ0xBU1NOQU1FID0gJ2hhcy1jdXN0b20tZm9jdXMnO1xuZXhwb3J0IGNvbnN0IGExMXlCbGFja0xpc3QgPSBbJ2FyaWEtaWQnLCAnYXJpYS1tZXRhZGF0YScsICdhcmlhLXR5cGUnXTtcbmV4cG9ydCBjb25zdCBmaWx0ZXJlZEExMXkgPSAoYTExeSwgYmxhY2tsaXN0KSA9PiB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGExMXkpLnJlZHVjZSgoYWNjLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKCFibGFja2xpc3QuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgYWNjW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTtcbn07XG4vKipcbiAqIEBkZXByZWNhdGVkIHVzZSBnZXRBY2Nlc3NpYmlsaXR5QXR0cmlidXRlcyBpbnN0ZWFkIHdoZXJldmVyIHlvdSBjYW5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEFyaWFBdHRyaWJ1dGVzID0gKHsgcm9sZSwgdGFiSW5kZXgsIHRhYmluZGV4LCAuLi5hcmlhUHJvcHMgfSA9IHt9KSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LmVudHJpZXMoYXJpYVByb3BzKS5yZWR1Y2UoKHByZXYsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICByZXR1cm4geyAuLi5wcmV2LCBbYGFyaWEtJHtrZXl9YC50b0xvd2VyQ2FzZSgpXTogdmFsdWUgfTtcbiAgICB9LCB7IHJvbGUsIHRhYkluZGV4OiB0YWJJbmRleCA/PyB0YWJpbmRleCB9KTtcbiAgICBPYmplY3Qua2V5cyhyZXN1bHQpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdFtrZXldID09PSB1bmRlZmluZWQgfHwgcmVzdWx0W2tleV0gPT09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgICAgICAgZGVsZXRlIHJlc3VsdFtrZXldO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGZpbHRlcmVkQTExeShyZXN1bHQsIGExMXlCbGFja0xpc3QpO1xufTtcbmV4cG9ydCBjb25zdCBnZXRUYWJJbmRleEF0dHJpYnV0ZSA9IChhMTF5ID0ge30pID0+IHtcbiAgICBjb25zdCB0YWJJbmRleCA9IGExMXkudGFiSW5kZXggPz8gYTExeS50YWJpbmRleCA/PyB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHRhYkluZGV4ICE9PSB1bmRlZmluZWQgPyB7IHRhYkluZGV4OiBOdW1iZXIodGFiSW5kZXgpIH0gOiB7fTtcbn07XG5leHBvcnQgY29uc3QgZ2V0QXJpYUxhYmVsQXR0cmlidXRlID0gKGExMXkpID0+IHtcbiAgICByZXR1cm4gYTExeT8ubGFiZWwgPyB7ICdhcmlhLWxhYmVsJzogYTExeS5sYWJlbCB9IDoge307XG59O1xuZXhwb3J0IGNvbnN0IElOTkVSX0ZPQ1VTX1JJTkdfQ0xBU1NOQU1FID0gJ2hhcy1pbm5lci1mb2N1cy1yaW5nJztcbmNvbnN0IExJTkUxID0gJzAgMCAwIDFweCc7XG5jb25zdCBMSU5FMiA9ICcwIDAgMCAzcHgnO1xuY29uc3QgQ09MT1IxID0gJyNmZmZmZmYnO1xuY29uc3QgQ09MT1IyID0gJyMxMTZkZmYnO1xuY29uc3QgT1VURVJfRk9DVVNfUklORyA9IGAke0xJTkUxfSR7Q09MT1IxfSwgJHtMSU5FMn0ke0NPTE9SMn1gO1xuY29uc3QgSU5ORVJfRk9DVVNfUklORyA9IGBpbnNldCAke0xJTkUxfSR7Q09MT1IyfSwgaW5zZXQgJHtMSU5FMn0ke0NPTE9SMX1gO1xuZXhwb3J0IGNvbnN0IGdldEZvY3VzUmluZ1ZhbHVlID0gKGlzT3V0ZXIgPSB0cnVlKSA9PiBpc091dGVyID8gT1VURVJfRk9DVVNfUklORyA6IElOTkVSX0ZPQ1VTX1JJTkc7XG5leHBvcnQgY29uc3QgZ2V0QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZXMgPSAoYXR0cmlidXRlcykgPT4ge1xuICAgIGNvbnN0IHsgcm9sZSwgdGFiSW5kZXgsIHRhYmluZGV4LCBzY3JlZW5SZWFkZXIsIGxhbmcsIGFyaWFBdHRyaWJ1dGVzID0ge30sIH0gPSBhdHRyaWJ1dGVzO1xuICAgIGNvbnN0IHByZWZpeGVkQXJpYUF0dHJpYnV0ZXMgPSBPYmplY3QuZW50cmllcyhhcmlhQXR0cmlidXRlcykucmVkdWNlKChwcmV2LCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgcmV0dXJuIHsgLi4ucHJldiwgW2BhcmlhLSR7a2V5fWAudG9Mb3dlckNhc2UoKV06IHZhbHVlIH07XG4gICAgfSwge30pO1xuICAgIHJldHVybiB7XG4gICAgICAgIHJvbGUsXG4gICAgICAgIHRhYkluZGV4OiB0YWJJbmRleCA/PyB0YWJpbmRleCxcbiAgICAgICAgc2NyZWVuUmVhZGVyLFxuICAgICAgICBhcmlhQXR0cmlidXRlczogZmlsdGVyZWRBMTF5KHByZWZpeGVkQXJpYUF0dHJpYnV0ZXMsIGExMXlCbGFja0xpc3QpLFxuICAgICAgICBsYW5nLFxuICAgIH07XG59O1xuZXhwb3J0IGNvbnN0IGdldEFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVzU3ByZWFkID0gKGF0dHJpYnV0ZXMpID0+IHtcbiAgICBjb25zdCBhMTF5UHJvcHMgPSBnZXRBY2Nlc3NpYmlsaXR5QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTtcbiAgICByZXR1cm4ge1xuICAgICAgICAuLi5hMTF5UHJvcHMuYXJpYUF0dHJpYnV0ZXMsXG4gICAgICAgIHRhYkluZGV4OiBhMTF5UHJvcHMudGFiSW5kZXgsXG4gICAgICAgIHNjcmVlblJlYWRlcjogYTExeVByb3BzLnNjcmVlblJlYWRlcixcbiAgICAgICAgbGFuZzogYTExeVByb3BzLmxhbmcsXG4gICAgICAgIHJvbGU6IGExMXlQcm9wcy5yb2xlLFxuICAgIH07XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YTExeS5qcy5tYXAiLCJleHBvcnQgY29uc3QgVGVzdElkcyA9IHtcbiAgc2VjdGlvbjogJ3NlY3Rpb24tY29udGFpbmVyJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBjb3J2aWROYW1lID0gJyR3LlNlY3Rpb24nO1xuXG5leHBvcnQgY29uc3QgVHJhbnNsYXRpb25LZXlzID0ge1xuICBhcmlhTGFiZWw6ICdUZXh0RWZmZWN0c19NZWRpYUJ1dHRvbl9BcmlhTGFiZWwnLFxuICBuYW1lc3BhY2U6ICdhcmlhTGFiZWxzJyxcbn07XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbmV4cG9ydCBkZWZhdWx0IHtcImltYWdlXCI6XCJqaHh2YlJcIn07IiwiLyoqXG4gKiBpbWFnZSBzZXJ2aWNlIGFwaSB2ZXJzaW9uXG4gKi9cbmNvbnN0IEFQSV9WRVJTSU9OID0gJ3YxJztcbi8qKlxudGhlIG1heGltdW0gcmV0aW5hIGZhY3RvclxuICovXG5jb25zdCBNQVhfREVWSUNFX1BJWEVMX1JBVElPID0gMjtcbi8qKlxuIHNpdGUgQkcgbGVnYWN5IG1heCB3aWR0aCB4IGhlaWdodFxuICovXG5jb25zdCBEU0tUUF9NQVhfQkdfU0lURV9MRUdBQ1lfV0lEVEggPSAxOTIwO1xuY29uc3QgRFNLVFBfTUFYX0JHX1NJVEVfTEVHQUNZX0hFSUdIVCA9IDE5MjA7XG5jb25zdCBNT0JJTEVfTUFYX0JHX1NJVEVfTEVHQUNZX1dJRFRIID0gMTAwMDtcbmNvbnN0IE1PQklMRV9NQVhfQkdfU0lURV9MRUdBQ1lfSEVJR0hUID0gMTAwMDtcbi8qKlxuICogRW51bSBzdHJpbmcgdmFsdWVzIG9mIHJlcXVlc3RlZCBpbWFnZSBmaXR0aW5nIHR5cGVzXG4gKiBOb3RlOiBUSUxFX0hPUklaT05UQUwsIFRJTEVfVkVSVElDQUwsIEZJVF9BTkRfVElMRSBhcmUgc3VwcG9ydGVkIGZvciBsZWdhY3kgcHVycG9zZXMgYnV0IGFyZSBub3QgZXhwb3NlZFxuICogaW4gdGhlIGRvY3VtZW50YXRpb24gYmVjYXVzZSB0aGV5IHNob3VsZCBub3QgYmUgZXhwb3NlZCBmb3IgbmV3IGZlYXR1cmVzXG4gKi9cbmNvbnN0IGZpdHRpbmdUeXBlcyA9IHtcbiAgICBTQ0FMRV9UT19GSUxMOiAnZmlsbCcsXG4gICAgU0NBTEVfVE9fRklUOiAnZml0JyxcbiAgICBTVFJFVENIOiAnc3RyZXRjaCcsXG4gICAgT1JJR0lOQUxfU0laRTogJ29yaWdpbmFsX3NpemUnLFxuICAgIFRJTEU6ICd0aWxlJyxcbiAgICBUSUxFX0hPUklaT05UQUw6ICd0aWxlX2hvcml6b250YWwnLFxuICAgIFRJTEVfVkVSVElDQUw6ICd0aWxlX3ZlcnRpY2FsJyxcbiAgICBGSVRfQU5EX1RJTEU6ICdmaXRfYW5kX3RpbGUnLFxuICAgIExFR0FDWV9TVFJJUF9USUxFOiAnbGVnYWN5X3N0cmlwX3RpbGUnLFxuICAgIExFR0FDWV9TVFJJUF9USUxFX0hPUklaT05UQUw6ICdsZWdhY3lfc3RyaXBfdGlsZV9ob3Jpem9udGFsJyxcbiAgICBMRUdBQ1lfU1RSSVBfVElMRV9WRVJUSUNBTDogJ2xlZ2FjeV9zdHJpcF90aWxlX3ZlcnRpY2FsJyxcbiAgICBMRUdBQ1lfU1RSSVBfU0NBTEVfVE9fRklMTDogJ2xlZ2FjeV9zdHJpcF9maWxsJyxcbiAgICBMRUdBQ1lfU1RSSVBfU0NBTEVfVE9fRklUOiAnbGVnYWN5X3N0cmlwX2ZpdCcsXG4gICAgTEVHQUNZX1NUUklQX0ZJVF9BTkRfVElMRTogJ2xlZ2FjeV9zdHJpcF9maXRfYW5kX3RpbGUnLFxuICAgIExFR0FDWV9TVFJJUF9PUklHSU5BTF9TSVpFOiAnbGVnYWN5X3N0cmlwX29yaWdpbmFsX3NpemUnLFxuICAgIExFR0FDWV9PUklHSU5BTF9TSVpFOiAnYWN0dWFsX3NpemUnLFxuICAgIExFR0FDWV9GSVRfV0lEVEg6ICdmaXRXaWR0aCcsXG4gICAgTEVHQUNZX0ZJVF9IRUlHSFQ6ICdmaXRIZWlnaHQnLFxuICAgIExFR0FDWV9GVUxMOiAnZnVsbCcsXG4gICAgTEVHQUNZX0JHX0ZJVF9BTkRfVElMRTogJ2xlZ2FjeV90aWxlJyxcbiAgICBMRUdBQ1lfQkdfRklUX0FORF9USUxFX0hPUklaT05UQUw6ICdsZWdhY3lfdGlsZV9ob3Jpem9udGFsJyxcbiAgICBMRUdBQ1lfQkdfRklUX0FORF9USUxFX1ZFUlRJQ0FMOiAnbGVnYWN5X3RpbGVfdmVydGljYWwnLFxuICAgIExFR0FDWV9CR19OT1JNQUw6ICdsZWdhY3lfbm9ybWFsJyxcbn07XG4vKipcbiAqIEVudW0gc3RyaW5nIHZhbHVlcyBvZiBpbWFnZSB0cmFuc2Zvcm0gdHlwZXMgYXMgcGFzc2VkIHRvIHRoZSBpbWFnZSBzZXJ2aWNlIGFwaVxuICovXG5jb25zdCB0cmFuc2Zvcm1UeXBlcyA9IHtcbiAgICBGSVQ6ICdmaXQnLFxuICAgIEZJTEw6ICdmaWxsJyxcbiAgICBGSUxMX0ZPQ0FMOiAnZmlsbF9mb2NhbCcsXG4gICAgQ1JPUDogJ2Nyb3AnLFxuICAgIExFR0FDWV9DUk9QOiAnbGVnYWN5X2Nyb3AnLFxuICAgIExFR0FDWV9GSUxMOiAnbGVnYWN5X2ZpbGwnLFxufTtcbi8qKlxuICogRW51bSBzdHJpbmcgdmFsdWVzIG9mIHJlcXVlc3RlZCBpbWFnZSBhbGlnbiB0eXBlc1xuICogQHR5cGUge3tDRU5URVI6IHN0cmluZywgUklHSFQ6IHN0cmluZywgTEVGVDogc3RyaW5nLCBUT1A6IHN0cmluZywgQk9UVE9NOiBzdHJpbmcsIFRPUF9SSUdIVDogc3RyaW5nLCBUT1BfTEVGVDogc3RyaW5nLCBCT1RUT01fUklHSFQ6IHN0cmluZywgQk9UVE9NX0xFRlQ6IHN0cmluZ319XG4gKi9cbmNvbnN0IGFsaWduVHlwZXMgPSB7XG4gICAgQ0VOVEVSOiAnY2VudGVyJyxcbiAgICBUT1A6ICd0b3AnLFxuICAgIFRPUF9MRUZUOiAndG9wX2xlZnQnLFxuICAgIFRPUF9SSUdIVDogJ3RvcF9yaWdodCcsXG4gICAgQk9UVE9NOiAnYm90dG9tJyxcbiAgICBCT1RUT01fTEVGVDogJ2JvdHRvbV9sZWZ0JyxcbiAgICBCT1RUT01fUklHSFQ6ICdib3R0b21fcmlnaHQnLFxuICAgIExFRlQ6ICdsZWZ0JyxcbiAgICBSSUdIVDogJ3JpZ2h0Jyxcbn07XG4vKipcbiAqIEVudW0gOUdyaWQgYWxpZ25tZW50IHRvIGZvY2FsIHBvaW50XG4gKi9cbmNvbnN0IEFMSUdOX1RZUEVfVE9fRk9DQUxfUE9JTlQgPSB7XG4gICAgW2FsaWduVHlwZXMuQ0VOVEVSXTogeyB4OiAwLjUsIHk6IDAuNSB9LFxuICAgIFthbGlnblR5cGVzLlRPUF9MRUZUXTogeyB4OiAwLCB5OiAwIH0sXG4gICAgW2FsaWduVHlwZXMuVE9QX1JJR0hUXTogeyB4OiAxLjAsIHk6IDAgfSxcbiAgICBbYWxpZ25UeXBlcy5UT1BdOiB7IHg6IDAuNSwgeTogMCB9LFxuICAgIFthbGlnblR5cGVzLkJPVFRPTV9MRUZUXTogeyB4OiAwLCB5OiAxLjAgfSxcbiAgICBbYWxpZ25UeXBlcy5CT1RUT01fUklHSFRdOiB7IHg6IDEuMCwgeTogMS4wIH0sXG4gICAgW2FsaWduVHlwZXMuQk9UVE9NXTogeyB4OiAwLjUsIHk6IDEuMCB9LFxuICAgIFthbGlnblR5cGVzLlJJR0hUXTogeyB4OiAxLjAsIHk6IDAuNSB9LFxuICAgIFthbGlnblR5cGVzLkxFRlRdOiB7IHg6IDAsIHk6IDAuNSB9LFxufTtcbi8qKlxuICogRW51bSBzdHJpbmcgdmFsdWVzIG9mIGltYWdlIGFsaWduIHR5cGVzIGFzIHBhc3NlZCB0byB0aGUgaW1hZ2Ugc2VydmljZVxuICovXG5jb25zdCBhbGlnblR5cGVzTWFwID0ge1xuICAgIGNlbnRlcjogJ2MnLFxuICAgIHRvcDogJ3QnLFxuICAgIHRvcF9sZWZ0OiAndGwnLFxuICAgIHRvcF9yaWdodDogJ3RyJyxcbiAgICBib3R0b206ICdiJyxcbiAgICBib3R0b21fbGVmdDogJ2JsJyxcbiAgICBib3R0b21fcmlnaHQ6ICdicicsXG4gICAgbGVmdDogJ2wnLFxuICAgIHJpZ2h0OiAncicsXG59O1xuLyoqXG4gKiBFbnVtIHN0cmluZyB2YWx1ZXMgb2YgaHRtbCB0YWcgdXNlZCB0byBjb25zdHJ1Y3QgdGhlIGNzcyBvciBzdmcgYXR0cmlidXRlc1xuICogIEB0eXBlIHt7Qkc6IHN0cmluZywgSU1HOiBzdHJpbmcsIFNWRzogc3RyaW5nfX1cbiAqL1xuY29uc3QgaHRtbFRhZyA9IHtcbiAgICBCRzogJ2JnJyxcbiAgICBJTUc6ICdpbWcnLFxuICAgIFNWRzogJ3N2ZycsXG59O1xuLyoqXG4gKiBFbnVtIHN0cmluZyB2YWx1ZXMgb2YgdXBzY2FsZSBtZXRob2RcbiAqICBAdHlwZSB7e0RFRkFVTFQ6IHN0cmluZywgU1VQRVI6IHN0cmluZ319XG4gKi9cbmNvbnN0IHVwc2NhbGVNZXRob2RzID0ge1xuICAgIEFVVE86ICdhdXRvJyxcbiAgICBDTEFTU0lDOiAnY2xhc3NpYycsXG4gICAgU1VQRVI6ICdzdXBlcicsXG59O1xuLyoqXG4gKiAgYXBpIHZhbHVlcyBvZiB1cHNjYWxlIG1ldGhvZFxuICogIEB0eXBlIHt7ZGVmYXVsdDogbnVtYmVyLCBzdXBlcjogbnVtYmVyfX1cbiAqL1xuY29uc3QgdXBzY2FsZU1ldGhvZHNWYWx1ZXMgPSB7XG4gICAgY2xhc3NpYzogMSxcbiAgICBzdXBlcjogMixcbn07XG4vKipcbiAqIGRlZmF1bHQgdW5zaGFycCBtYXNrIHZhbHVlc1xuICogIEB0eXBlIHt7cmFkaXVzOiBudW1iZXIsIGFtb3VudDogbnVtYmVyLCB0aHJlc2hvbGQ6IG51bWJlcn19XG4gKi9cbmNvbnN0IGRlZmF1bHRVU00gPSB7XG4gICAgcmFkaXVzOiAnMC42NicsXG4gICAgYW1vdW50OiAnMS4wMCcsXG4gICAgdGhyZXNob2xkOiAnMC4wMScsXG59O1xuLyoqXG4gKiBkZWZhdWx0IGVtcHR5IGRhdGFcbiAqL1xuY29uc3QgZW1wdHlEYXRhID0ge1xuICAgIHVyaTogJycsXG4gICAgY3NzOiB7XG4gICAgICAgIGltZzoge30sXG4gICAgICAgIGNvbnRhaW5lcjoge30sXG4gICAgfSxcbiAgICBhdHRyOiB7XG4gICAgICAgIGltZzoge30sXG4gICAgICAgIGNvbnRhaW5lcjoge30sXG4gICAgfSxcbiAgICB0cmFuc2Zvcm1lZDogZmFsc2UsXG59O1xuY29uc3QgTUFYX1RSQU5TRk9STUVEX0lNQUdFX1dJRFRIID0gNTAwMDtcbmNvbnN0IE1BWF9UUkFOU0ZPUk1FRF9JTUFHRV9IRUlHSFQgPSA1MDAwO1xuY29uc3QgU0FGRV9UUkFOU0ZPUk1FRF9BUkVBID0gTUFYX1RSQU5TRk9STUVEX0lNQUdFX1dJRFRIICogTUFYX1RSQU5TRk9STUVEX0lNQUdFX0hFSUdIVDtcbi8qKlxuICogc3VwZXIgcmVzIG1hY2hpbmUgbGVhcm5pbmcgdXBzY2FsZSBmYWN0b3IgbW9kZWxzIC1cbiAqIEB0eXBlIHtudW1iZXJbXX1cbiAqL1xuY29uc3QgU1VQRVJfVVBTQ0FMRV9NT0RFTFMgPSBbMS41LCAyLCA0XTtcbi8qKlxuICogaW1hZ2UgcXVhbGl0aWVzXG4gKi9cbmNvbnN0IGltYWdlU2NhbGVEZWZhdWx0cyA9IHtcbiAgICBISUdIOiB7XG4gICAgICAgIHNpemU6IDE0MDAgKiAxNDAwLFxuICAgICAgICBxdWFsaXR5OiA5MCxcbiAgICAgICAgbWF4VXBzY2FsZTogMSxcbiAgICB9LFxuICAgIE1FRElVTToge1xuICAgICAgICBzaXplOiA2MDAgKiA2MDAsXG4gICAgICAgIHF1YWxpdHk6IDg1LFxuICAgICAgICBtYXhVcHNjYWxlOiAxLFxuICAgIH0sXG4gICAgTE9XOiB7XG4gICAgICAgIHNpemU6IDQwMCAqIDQwMCxcbiAgICAgICAgcXVhbGl0eTogODAsXG4gICAgICAgIG1heFVwc2NhbGU6IDEuMixcbiAgICB9LFxuICAgIFRJTlk6IHtcbiAgICAgICAgc2l6ZTogMCxcbiAgICAgICAgcXVhbGl0eTogODAsXG4gICAgICAgIG1heFVwc2NhbGU6IDEuNCxcbiAgICB9LFxufTtcbi8qKlxuICogaW1hZ2UgcXVhbGl0eVxuICogQHR5cGUge3tISUdIOiBzdHJpbmcsIE1FRElVTTogc3RyaW5nLCBMT1c6IHN0cmluZywgVElOWTogc3RyaW5nfX1cbiAqL1xuY29uc3QgaW1hZ2VRdWFsaXR5ID0ge1xuICAgIEhJR0g6ICdISUdIJyxcbiAgICBNRURJVU06ICdNRURJVU0nLFxuICAgIExPVzogJ0xPVycsXG4gICAgVElOWTogJ1RJTlknLFxufTtcbi8qKlxuICogaW1hZ2UgZmlsdGVyc1xuICogQHR5cGUge3tDT05UUkFTVDogc3RyaW5nLCBCUklHSFRORVNTOiBzdHJpbmcsIFNBVFVSQVRJT046IHN0cmluZywgSFVFOiBzdHJpbmcsIEJMVVI6IHN0cmluZ319XG4gKi9cbmNvbnN0IGltYWdlRmlsdGVycyA9IHtcbiAgICBDT05UUkFTVDogJ2NvbnRyYXN0JyxcbiAgICBCUklHSFRORVNTOiAnYnJpZ2h0bmVzcycsXG4gICAgU0FUVVJBVElPTjogJ3NhdHVyYXRpb24nLFxuICAgIEhVRTogJ2h1ZScsXG4gICAgQkxVUjogJ2JsdXInLFxufTtcbmNvbnN0IGZpbGVUeXBlID0ge1xuICAgIEpQRzogJ2pwZycsXG4gICAgSlBFRzogJ2pwZWcnLFxuICAgIEpQRTogJ2pwZScsXG4gICAgUE5HOiAncG5nJyxcbiAgICBXRUJQOiAnd2VicCcsXG4gICAgV0lYX0lDT19NUDogJ3dpeF9pY29fbXAnLFxuICAgIFdJWF9NUDogJ3dpeF9tcCcsXG4gICAgR0lGOiAnZ2lmJyxcbiAgICBTVkc6ICdzdmcnLFxuICAgIEFWSUY6ICdhdmlmJyxcbiAgICBVTlJFQ09HTklaRUQ6ICd1bnJlY29nbml6ZWQnLFxufTtcbmNvbnN0IGVuY29kaW5nVHlwZXMgPSB7XG4gICAgQVZJRjogJ0FWSUYnLFxuICAgIFBBVklGOiAnUEFWSUYnLFxufTtcbmNvbnN0IHN1cHBvcnRlZEV4dGVuc2lvbnMgPSBbXG4gICAgZmlsZVR5cGUuSlBHLFxuICAgIGZpbGVUeXBlLkpQRUcsXG4gICAgZmlsZVR5cGUuSlBFLFxuICAgIGZpbGVUeXBlLlBORyxcbiAgICBmaWxlVHlwZS5HSUYsXG4gICAgZmlsZVR5cGUuV0VCUCxcbl07XG5leHBvcnQgeyBhbGlnblR5cGVzLCBhbGlnblR5cGVzTWFwLCB0cmFuc2Zvcm1UeXBlcywgZW5jb2RpbmdUeXBlcywgZml0dGluZ1R5cGVzLCBodG1sVGFnLCB1cHNjYWxlTWV0aG9kcywgdXBzY2FsZU1ldGhvZHNWYWx1ZXMsIGRlZmF1bHRVU00sIGVtcHR5RGF0YSwgaW1hZ2VRdWFsaXR5LCBpbWFnZUZpbHRlcnMsIGltYWdlU2NhbGVEZWZhdWx0cywgZmlsZVR5cGUsIHN1cHBvcnRlZEV4dGVuc2lvbnMsIERTS1RQX01BWF9CR19TSVRFX0xFR0FDWV9XSURUSCwgTU9CSUxFX01BWF9CR19TSVRFX0xFR0FDWV9XSURUSCwgRFNLVFBfTUFYX0JHX1NJVEVfTEVHQUNZX0hFSUdIVCwgTU9CSUxFX01BWF9CR19TSVRFX0xFR0FDWV9IRUlHSFQsIFNBRkVfVFJBTlNGT1JNRURfQVJFQSwgU1VQRVJfVVBTQ0FMRV9NT0RFTFMsIE1BWF9ERVZJQ0VfUElYRUxfUkFUSU8sIEFMSUdOX1RZUEVfVE9fRk9DQUxfUE9JTlQsIEFQSV9WRVJTSU9OLCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW1hZ2VTZXJ2aWNlQ29uc3RhbnRzLmpzLm1hcCIsIi8qKlxuICogU2ltcGxlIHRlbXBsYXRlcy5cbiAqIFJlY2VpdmVzIGEgc3RyaW5nIHdpdGggZXM2ICR7Li4ufSBzdHlsZSB0ZW1wbGF0ZSBhcmd1bWVudHMgYW5kIHJldHVybnMgYSB0cmFuc2Zvcm1lZCBzdHJpbmcuXG4gKiBAcGFyYW0gc3RyaW5nXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259XG4gKi9cbmZ1bmN0aW9uIHRlbXBsYXRlKHN0cmluZ3MsIC4uLmtleXMpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKC4uLnZhbHVlcykge1xuICAgICAgICBjb25zdCBkaWN0ID0gdmFsdWVzW3ZhbHVlcy5sZW5ndGggLSAxXSB8fCB7fTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW3N0cmluZ3NbMF1dO1xuICAgICAgICBrZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSwgaSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBOdW1iZXIuaXNJbnRlZ2VyKGtleSkgPyB2YWx1ZXNba2V5XSA6IGRpY3Rba2V5XTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlLCBzdHJpbmdzW2kgKyAxXSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0LmpvaW4oJycpO1xuICAgIH07XG59XG4vKipcbiAqIEdldCB0aGUgbGFzdCBlbGVtZW50IGluIGFuIGFycmF5XG4gKiBAcGFyYW0gYXJyYXlcbiAqIEByZXR1cm5zIHsqfVxuICovXG5mdW5jdGlvbiBsYXN0KGFycmF5KSB7XG4gICAgcmV0dXJuIGFycmF5W2FycmF5Lmxlbmd0aCAtIDFdO1xufVxuZXhwb3J0IHsgbGFzdCwgdGVtcGxhdGUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXV0aWxzLmpzLm1hcCIsImltcG9ydCB7IGFsaWduVHlwZXMsIGFsaWduVHlwZXNNYXAsIGZpbGVUeXBlLCBmaXR0aW5nVHlwZXMsIGltYWdlUXVhbGl0eSwgaW1hZ2VTY2FsZURlZmF1bHRzLCB0cmFuc2Zvcm1UeXBlcywgdXBzY2FsZU1ldGhvZHMsIHVwc2NhbGVNZXRob2RzVmFsdWVzLCBBTElHTl9UWVBFX1RPX0ZPQ0FMX1BPSU5ULCBNQVhfREVWSUNFX1BJWEVMX1JBVElPLCBTVVBFUl9VUFNDQUxFX01PREVMUywgU0FGRV9UUkFOU0ZPUk1FRF9BUkVBLCB9IGZyb20gJy4vaW1hZ2VTZXJ2aWNlQ29uc3RhbnRzJztcbmltcG9ydCB7IGxhc3QgfSBmcm9tICcuL3V0aWxzJztcbmNvbnN0IFNVUFBPUlRFRF9JTUFHRV9FWFRFTlNJT05TID0gW1xuICAgIGZpbGVUeXBlLlBORyxcbiAgICBmaWxlVHlwZS5KUEVHLFxuICAgIGZpbGVUeXBlLkpQRyxcbiAgICBmaWxlVHlwZS5KUEUsXG4gICAgZmlsZVR5cGUuV0lYX0lDT19NUCxcbiAgICBmaWxlVHlwZS5XSVhfTVAsXG4gICAgZmlsZVR5cGUuV0VCUCxcbiAgICBmaWxlVHlwZS5BVklGLFxuXTtcbmNvbnN0IEpQR19FWFRFTlNJT05TID0gW1xuICAgIGZpbGVUeXBlLkpQRUcsXG4gICAgZmlsZVR5cGUuSlBHLFxuICAgIGZpbGVUeXBlLkpQRSxcbl07XG4vKipcbiAqIGNoZWNrcyBpZiBpbWFnZSB0eXBlIGlzIHN1cHBvcnRlZFxuICogQHBhcmFtIHtzdHJpbmd9ICAgICB1cmkgICAgICBpbWFnZSBzb3VyY2UgdXJpXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzSW1hZ2VUeXBlU3VwcG9ydGVkKHVyaSkge1xuICAgIHJldHVybiBTVVBQT1JURURfSU1BR0VfRVhURU5TSU9OUy5pbmNsdWRlcyhnZXRGaWxlRXh0ZW5zaW9uKHVyaSkpO1xufVxuLyoqXG4gKiBjaGVjayByZXF1ZXN0IGludGVncml0eVxuICogQHBhcmFtIHtGaXR0aW5nVHlwZX0gICAgICAgICAgICAgZml0dGluZ1R5cGUgICAgICAgICBpbWFnZVNlcnZpY2UuZml0dGluZ1R5cGVzXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtU291cmNlfSAgICBzcmNcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1UYXJnZXR9ICAgIHRhcmdldFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc1ZhbGlkUmVxdWVzdChmaXR0aW5nVHlwZSwgc3JjLCB0YXJnZXQpIHtcbiAgICByZXR1cm4gKHRhcmdldCAmJlxuICAgICAgICBzcmMgJiZcbiAgICAgICAgIWlzVXJsRW1wdHlPck5vbmUoc3JjLmlkKSAmJlxuICAgICAgICBPYmplY3QudmFsdWVzKGZpdHRpbmdUeXBlcykuaW5jbHVkZXMoZml0dGluZ1R5cGUpKTtcbn1cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIGFuaW1hdGVkIFdlYlAvQVZJRiBpbWFnZXMgY2FuIGJlIHRyYW5zZm9ybWVkLlxuICogVGhlc2UgZm9ybWF0cyBjYW4gb25seSBiZSB0cmFuc2Zvcm1lZCB3aGVuIGV4cGxpY2l0bHkgYWxsb3dlZCB2aWEgYWxsb3dBbmltYXRlZFRyYW5zZm9ybS5cbiAqXG4gKiBAcGFyYW0gdXJpIC0gSW1hZ2UgVVJJIHRvIGNoZWNrXG4gKiBAcGFyYW0gaGFzQW5pbWF0aW9uIC0gV2hldGhlciB0aGUgaW1hZ2UgaGFzIGFuaW1hdGlvbiBtZXRhZGF0YVxuICogQHBhcmFtIGFsbG93QW5pbWF0ZWRUcmFuc2Zvcm0gLSBXaGV0aGVyIGFuaW1hdGVkIHRyYW5zZm9ybXMgYXJlIGFsbG93ZWQgKHVzZWQgaW4gcGxhY2Vob2xkZXIgZmxvdylcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGltYWdlIGNhbiBiZSB0cmFuc2Zvcm1lZFxuICovXG5mdW5jdGlvbiBjYW5UcmFuc2Zvcm1BbmltYXRlZFdlYnBPckF2aWYodXJpLCBoYXNBbmltYXRpb24sIGFsbG93QW5pbWF0ZWRUcmFuc2Zvcm0pIHtcbiAgICBjb25zdCBpc0F2aWZXZWJwRm9ybWF0ID0gaXNXRUJQKHVyaSkgfHwgaXNBVklGKHVyaSk7XG4gICAgaWYgKCFpc0F2aWZXZWJwRm9ybWF0IHx8ICFoYXNBbmltYXRpb24pIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBhbGxvd0FuaW1hdGVkVHJhbnNmb3JtO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgYSBHSUYgY2FuIGJlIHRyYW5zZm9ybWVkLlxuICogR0lGcyBjYW4gYmUgdHJhbnNmb3JtZWQgaW4gdHdvIHNjZW5hcmlvczpcbiAqIDEuIEluIHBsYWNlaG9sZGVyIGZsb3cgd2hlbiBhbGxvd0FuaW1hdGVkVHJhbnNmb3JtIGlzIHRydWVcbiAqIDIuIEluIG5vbi1wbGFjZWhvbGRlciBmbG93IHdoZW4gYWxsb3dGdWxsR0lGVHJhbnNmb3JtYXRpb24gaXMgdHJ1ZVxuICpcbiAqIEBwYXJhbSB1cmkgLSBJbWFnZSBVUkkgdG8gY2hlY2tcbiAqIEBwYXJhbSBhbGxvd0FuaW1hdGVkVHJhbnNmb3JtIC0gV2hldGhlciBhbmltYXRlZCB0cmFuc2Zvcm1zIGFyZSBhbGxvd2VkICh1c2VkIGluIHBsYWNlaG9sZGVyIGZsb3cpXG4gKiBAcGFyYW0gYWxsb3dGdWxsR0lGVHJhbnNmb3JtYXRpb24gLSBXaGV0aGVyIGZ1bGwgR0lGIHRyYW5zZm9ybWF0aW9uIGlzIGFsbG93ZWQgKHVzZWQgaW4gbm9uLXBsYWNlaG9sZGVyIGZsb3cpXG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBHSUYgY2FuIGJlIHRyYW5zZm9ybWVkXG4gKi9cbmZ1bmN0aW9uIGNhblRyYW5zZm9ybUdJRih1cmksIGFsbG93QW5pbWF0ZWRUcmFuc2Zvcm0sIGFsbG93RnVsbEdJRlRyYW5zZm9ybWF0aW9uKSB7XG4gICAgaWYgKCFpc0dJRih1cmkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuICEhKGFsbG93QW5pbWF0ZWRUcmFuc2Zvcm0gfHwgYWxsb3dGdWxsR0lGVHJhbnNmb3JtYXRpb24pO1xufVxuLyoqXG4gKiBDaGVjayBpZiBpbWFnZSB0cmFuc2Zvcm0gaXMgc3VwcG9ydGVkIGZvciBzb3VyY2UgaW1hZ2UuXG4gKiBSZXR1cm5zIHRydWUgaWY6XG4gKiAtIEltYWdlIGlzIGEgc3VwcG9ydGVkIHR5cGUgKFBORywgSlBFRywgV2ViUCwgQVZJRiwgZXRjLiksIE9SXG4gKiAtIEltYWdlIGlzIGEgR0lGIHRoYXQgY2FuIGJlIHRyYW5zZm9ybWVkIChzZWUgY2FuVHJhbnNmb3JtR0lGKVxuICpcbiAqIEBwYXJhbSB1cmkgLSBJbWFnZSBVUkkgdG8gY2hlY2tcbiAqIEBwYXJhbSBoYXNBbmltYXRpb24gLSBXaGV0aGVyIHRoZSBpbWFnZSBoYXMgYW5pbWF0aW9uIG1ldGFkYXRhXG4gKiBAcGFyYW0gYWxsb3dBbmltYXRlZFRyYW5zZm9ybSAtIFdoZXRoZXIgYW5pbWF0ZWQgdHJhbnNmb3JtcyBhcmUgYWxsb3dlZCAodXNlZCBpbiBwbGFjZWhvbGRlciBmbG93KVxuICogQHBhcmFtIGFsbG93RnVsbEdJRlRyYW5zZm9ybWF0aW9uIC0gV2hldGhlciBmdWxsIEdJRiB0cmFuc2Zvcm1hdGlvbiBpcyBhbGxvd2VkICh1c2VkIGluIG5vbi1wbGFjZWhvbGRlciBmbG93KVxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgaW1hZ2UgY2FuIGJlIHRyYW5zZm9ybWVkXG4gKi9cbmZ1bmN0aW9uIGlzSW1hZ2VUcmFuc2Zvcm1BcHBsaWNhYmxlKHVyaSwgaGFzQW5pbWF0aW9uLCBhbGxvd0FuaW1hdGVkVHJhbnNmb3JtLCBhbGxvd0Z1bGxHSUZUcmFuc2Zvcm1hdGlvbikge1xuICAgIC8vIEV4dGVybmFsIFVSTHMgY2Fubm90IGJlIHRyYW5zZm9ybWVkXG4gICAgaWYgKGlzRXh0ZXJuYWxVcmwodXJpKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIENoZWNrIGlmIGFuaW1hdGVkIHdlYnAvYXZpZiBjYW4gYmUgdHJhbnNmb3JtZWRcbiAgICBpZiAoIWNhblRyYW5zZm9ybUFuaW1hdGVkV2VicE9yQXZpZih1cmksIGhhc0FuaW1hdGlvbiwgYWxsb3dBbmltYXRlZFRyYW5zZm9ybSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBDaGVjayBpZiBpbWFnZSB0eXBlIGlzIHN1cHBvcnRlZCBvciBpZiBpdCdzIGEgdHJhbnNmb3JtYWJsZSBHSUZcbiAgICBjb25zdCBpc1N1cHBvcnRlZEltYWdlVHlwZSA9IGlzSW1hZ2VUeXBlU3VwcG9ydGVkKHVyaSk7XG4gICAgY29uc3QgaXNUcmFuc2Zvcm1hYmxlR2lmID0gY2FuVHJhbnNmb3JtR0lGKHVyaSwgYWxsb3dBbmltYXRlZFRyYW5zZm9ybSwgYWxsb3dGdWxsR0lGVHJhbnNmb3JtYXRpb24pO1xuICAgIHJldHVybiBpc1N1cHBvcnRlZEltYWdlVHlwZSB8fCBpc1RyYW5zZm9ybWFibGVHaWY7XG59XG4vKipcbiAqIHJldHVybnMgdHJ1ZSBpZiBpbWFnZSBpcyBvZiBKUEcgdHlwZVxuICogQHBhcmFtIHtzdHJpbmd9ICB1cmlcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNKUEcodXJpKSB7XG4gICAgcmV0dXJuIEpQR19FWFRFTlNJT05TLmluY2x1ZGVzKGdldEZpbGVFeHRlbnNpb24odXJpKSk7XG59XG4vKipcbiAqIHJldHVybnMgdHJ1ZSBpZiBpbWFnZSBpcyBvZiBQTkcgdHlwZVxuICogQHBhcmFtIHtzdHJpbmd9ICB1cmlcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNQTkcodXJpKSB7XG4gICAgcmV0dXJuIGdldEZpbGVFeHRlbnNpb24odXJpKSA9PT0gZmlsZVR5cGUuUE5HO1xufVxuLyoqXG4gKiByZXR1cm5zIHRydWUgaWYgaW1hZ2UgaXMgb2Ygd2ViUCB0eXBlXG4gKiBAcGFyYW0ge3N0cmluZ30gIHVyaVxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc1dFQlAodXJpKSB7XG4gICAgcmV0dXJuIGdldEZpbGVFeHRlbnNpb24odXJpKSA9PT0gZmlsZVR5cGUuV0VCUDtcbn1cbi8qKlxuICogcmV0dXJucyB0cnVlIGlmIGltYWdlIGlzIG9mIEdJRiB0eXBlXG4gKiBAcGFyYW0ge3N0cmluZ30gIHVyaVxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc0dJRih1cmkpIHtcbiAgICByZXR1cm4gZ2V0RmlsZUV4dGVuc2lvbih1cmkpID09PSBmaWxlVHlwZS5HSUY7XG59XG4vKipcbiAqIHJldHVybnMgdHJ1ZSBpZiBpbWFnZSBpcyBvZiB3ZWJQIHR5cGVcbiAqIEBwYXJhbSB7c3RyaW5nfSAgdXJpXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzQVZJRih1cmkpIHtcbiAgICByZXR1cm4gZ2V0RmlsZUV4dGVuc2lvbih1cmkpID09PSBmaWxlVHlwZS5BVklGO1xufVxuLyoqXG4gKiByZXR1cm5zIHRydWUgaWYgdGhlIHVybCBzdGFydHMgd2l0aCBodHRwLCBodHRwcywgLy8gb3IgZGF0YVxuICogQHBhcmFtIHtzdHJpbmd9ICB1cmxcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNFeHRlcm5hbFVybCh1cmwpIHtcbiAgICByZXR1cm4gLyheaHR0cHM/KXwoXmRhdGEpfCheXFwvXFwvKS8udGVzdCh1cmwpO1xufVxuLyoqXG4gKiByZXR1cm5zIHRydWUgaWYgdGhlIHVybCBlbXB0eSBvciBub25lIHN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9ICB1cmxcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNVcmxFbXB0eU9yTm9uZSh1cmwpIHtcbiAgICByZXR1cm4gIXVybCB8fCAhdXJsLnRyaW0oKSB8fCB1cmwudG9Mb3dlckNhc2UoKSA9PT0gJ25vbmUnO1xufVxuLyoqXG4gKiByZXR1cm5zIHNlYXJjaCBib3QgdHJ1ZSBvciBmYWxzZSBhcyBpbmRpY2F0ZWQgaW4gb3B0aW9uc1xuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybU9wdGlvbnN9ICAgb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc1NFT0JvdChvcHRpb25zKSB7XG4gICAgcmV0dXJuIG9wdGlvbnM/LmlzU0VPQm90ID8/IGZhbHNlO1xufVxuLy8gaHR0cHM6Ly9qaXJhLndpeHByZXNzLmNvbS9icm93c2UvV0VFRC0xMjY2N1xuLy8gY29uc3QgaWxsZWdhbENoYXJzID0gWycvJywgJ1xcXFwnLCAnIycsICdeJywgJz8nLCAneycsICd9JywgJzwnLCAnPicsICd8JywgJ2AnLCAn4oCcJywgJzonLCAnXCInXS5tYXAoZW5jb2RlVVJJQ29tcG9uZW50KVxuY29uc3QgSUxMRUdBTF9DSEFSUyA9IFsnLycsICdcXFxcJywgJz8nLCAnPCcsICc+JywgJ3wnLCAn4oCcJywgJzonLCAnXCInXS5tYXAoZW5jb2RlVVJJQ29tcG9uZW50KTtcbmNvbnN0IFVSTF9TQUZFX0lMTEVHQUxfQ0hBUlMgPSBbJ1xcXFwuJywgJ1xcXFwqJ107XG5jb25zdCBJTExFR0FMX0NIQVJTX1JFUExBQ0VNRU5UID0gJ18nO1xuLyoqXG4gKiByZXR1cm5zIHNvdXJjZSBpbWFnZSBmaWxlIG5hbWUgKG5vIGV4dGVuc2lvbilcbiAqIEBwYXJhbSB7c3RyaW5nfSAgICAgdXJpICAgICAgaW1hZ2Ugc291cmNlIHVyaVxuICogQHBhcmFtIHtzdHJpbmd9ICAgICBbbmFtZV0gICBvcHRpb25hbCBpbWFnZSBzb3VyY2UgbmFtZVxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGdldEZpbGVOYW1lKHVyaSwgbmFtZSkge1xuICAgIGNvbnN0IGJlZm9yZUxlYWRpbmdTbGFzaFJlZ2V4cCA9IC9cXC8oLio/KSQvO1xuICAgIGNvbnN0IGZpbGVFeHRlbnNpb25SZWdleHAgPSAvXFwuKFteLl0qKSQvO1xuICAgIGNvbnN0IGlsbGVnYWxDaGFyc1JlZ2V4ID0gbmV3IFJlZ0V4cChgKCR7SUxMRUdBTF9DSEFSUy5jb25jYXQoVVJMX1NBRkVfSUxMRUdBTF9DSEFSUykuam9pbignfCcpfSlgLCAnZycpO1xuICAgIC8vIGlmIG5hbWUgaXMgYSBub24gZW1wdHkgc3RyaW5nLCByZW1vdmUgb25seSBzdXBwb3J0ZWQgZXh0ZW5zaW9uIGlmIGV4aXN0cyBhbmQgdXJsIGVuY29kZSB0aGUgc3RyaW5nXG4gICAgaWYgKG5hbWUgJiYgbmFtZS5sZW5ndGgpIHtcbiAgICAgICAgbGV0IGZpbGVOYW1lID0gbmFtZTtcbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uID0gbmFtZS5tYXRjaChmaWxlRXh0ZW5zaW9uUmVnZXhwKTtcbiAgICAgICAgaWYgKGV4dGVuc2lvbiAmJlxuICAgICAgICAgICAgU1VQUE9SVEVEX0lNQUdFX0VYVEVOU0lPTlMuaW5jbHVkZXMoZXh0ZW5zaW9uWzFdKSkge1xuICAgICAgICAgICAgZmlsZU5hbWUgPSBuYW1lLnJlcGxhY2UoZmlsZUV4dGVuc2lvblJlZ2V4cCwgJycpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoZmlsZU5hbWUpLnJlcGxhY2UoaWxsZWdhbENoYXJzUmVnZXgsIElMTEVHQUxfQ0hBUlNfUkVQTEFDRU1FTlQpO1xuICAgIH1cbiAgICAvLyBlbHNlLCB0cmltIGFueSBwcmVjZWRpbmcgbWVkaWEgc3RydWN0dXJlIGZyb20gdGhlIHVyaSBzdHJpbmcgKGxpa2UgXCJtZWRpYS9cIiBldGMuKSBhbmQgcmVtb3ZlIGV4dGVuc2lvblxuICAgIGNvbnN0IHRyaW1tZWQgPSB1cmkubWF0Y2goYmVmb3JlTGVhZGluZ1NsYXNoUmVnZXhwKTtcbiAgICBjb25zdCBmaWxlTmFtZSA9IHRyaW1tZWQgPyB0cmltbWVkWzFdIDogdXJpO1xuICAgIHJldHVybiBmaWxlTmFtZS5yZXBsYWNlKGZpbGVFeHRlbnNpb25SZWdleHAsICcnKTtcbn1cbi8qKlxuICogcmV0dXJucyBzb3VyY2UgaW1hZ2UgZmlsZSBuYW1lIChubyBleHRlbnNpb24pXG4gKiBAcGFyYW0ge3N0cmluZ30gICAgIHVyaSAgICAgIGltYWdlIHNvdXJjZSB1cmlcbiAqXG4gKiBAcmV0dXJucyB7RmlsZVR5cGV9XG4gKi9cbmZ1bmN0aW9uIGdldEZpbGVUeXBlKHVyaSkge1xuICAgIGlmIChpc0pQRyh1cmkpKSB7XG4gICAgICAgIHJldHVybiBmaWxlVHlwZS5KUEc7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzUE5HKHVyaSkpIHtcbiAgICAgICAgcmV0dXJuIGZpbGVUeXBlLlBORztcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNXRUJQKHVyaSkpIHtcbiAgICAgICAgcmV0dXJuIGZpbGVUeXBlLldFQlA7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzR0lGKHVyaSkpIHtcbiAgICAgICAgcmV0dXJuIGZpbGVUeXBlLkdJRjtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNBVklGKHVyaSkpIHtcbiAgICAgICAgcmV0dXJuIGZpbGVUeXBlLkFWSUY7XG4gICAgfVxuICAgIHJldHVybiBmaWxlVHlwZS5VTlJFQ09HTklaRUQ7XG59XG4vKipcbiAqIHJldHVybnMgc291cmNlIGltYWdlIGZpbGUgZXh0ZW5zaW9uXG4gKiBAcGFyYW0ge3N0cmluZ30gICAgIHVyaSAgICAgIGltYWdlIHNvdXJjZSB1cmlcbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBnZXRGaWxlRXh0ZW5zaW9uKHVyaSkge1xuICAgIGNvbnN0IHNwbGl0VVJJID0gL1suXShbXi5dKykkLy5leGVjKHVyaSk7XG4gICAgcmV0dXJuICgoc3BsaXRVUkkgJiYgL1suXShbXi5dKykkLy5leGVjKHVyaSlbMV0pIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xufVxuLyoqXG4gKiByZXR1cm5zIHNjYWxlIGZhY3RvciBuZWVkZWQgaWYgRklUIGZpdHRpbmdcbiAqIEBwYXJhbSB7bnVtYmVyfSAgc1dpZHRoXG4gKiBAcGFyYW0ge251bWJlcn0gIHNIZWlnaHRcbiAqIEBwYXJhbSB7bnVtYmVyfSAgZFdpZHRoXG4gKiBAcGFyYW0ge251bWJlcn0gIGRIZWlnaHRcbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5mdW5jdGlvbiBnZXRGaXRTY2FsZUZhY3RvcihzV2lkdGgsIHNIZWlnaHQsIGRXaWR0aCwgZEhlaWdodCkge1xuICAgIHJldHVybiBNYXRoLm1pbihkV2lkdGggLyBzV2lkdGgsIGRIZWlnaHQgLyBzSGVpZ2h0KTtcbn1cbi8qKlxuICogcmV0dXJucyBzY2FsZSBmYWN0b3IgbmVlZGVkIGlmIEZJTEwgZml0dGluZ1xuICogQHBhcmFtIHtudW1iZXJ9ICBzV2lkdGhcbiAqIEBwYXJhbSB7bnVtYmVyfSAgc0hlaWdodFxuICogQHBhcmFtIHtudW1iZXJ9ICBkV2lkdGhcbiAqIEBwYXJhbSB7bnVtYmVyfSAgZEhlaWdodFxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9XG4gKi9cbmZ1bmN0aW9uIGdldEZpbGxTY2FsZUZhY3RvcihzV2lkdGgsIHNIZWlnaHQsIGRXaWR0aCwgZEhlaWdodCkge1xuICAgIHJldHVybiBNYXRoLm1heChkV2lkdGggLyBzV2lkdGgsIGRIZWlnaHQgLyBzSGVpZ2h0KTtcbn1cbi8qKlxuICogcmV0dXJucyBzY2FsZSBmYWN0b3Igc291cmNlIHRhcmdldFxuICogQHBhcmFtIHtudW1iZXJ9ICBzV2lkdGhcbiAqIEBwYXJhbSB7bnVtYmVyfSAgc0hlaWdodFxuICogQHBhcmFtIHtudW1iZXJ9ICBkV2lkdGhcbiAqIEBwYXJhbSB7bnVtYmVyfSAgZEhlaWdodFxuICogQHBhcmFtIHtzdHJpbmd9ICB0cmFuc2Zvcm1UeXBlXG4gKlxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZnVuY3Rpb24gZ2V0U2NhbGVGYWN0b3Ioc1dpZHRoLCBzSGVpZ2h0LCBkV2lkdGgsIGRIZWlnaHQsIHRyYW5zZm9ybVR5cGUpIHtcbiAgICBsZXQgc2NhbGVGYWN0b3I7XG4gICAgaWYgKHRyYW5zZm9ybVR5cGUgPT09IHRyYW5zZm9ybVR5cGVzLkZJTEwpIHtcbiAgICAgICAgc2NhbGVGYWN0b3IgPSBnZXRGaWxsU2NhbGVGYWN0b3Ioc1dpZHRoLCBzSGVpZ2h0LCBkV2lkdGgsIGRIZWlnaHQpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0cmFuc2Zvcm1UeXBlID09PSB0cmFuc2Zvcm1UeXBlcy5GSVQpIHtcbiAgICAgICAgc2NhbGVGYWN0b3IgPSBnZXRGaXRTY2FsZUZhY3RvcihzV2lkdGgsIHNIZWlnaHQsIGRXaWR0aCwgZEhlaWdodCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBzY2FsZUZhY3RvciA9IDE7XG4gICAgfVxuICAgIHJldHVybiBzY2FsZUZhY3Rvcjtcbn1cbi8qKlxuICogZ2V0IGNhbGN1bGF0ZWQgc2NhbGUgZmFjdG9yICwgd2lkdGggYW5kIGhlaWdodCB3aGlsZSBjb25zaWRlcmluZyB3aXhtcCBpbWFnZSB0cmFuc2Zvcm0gZGltZW5zaW9uIGxpbWl0c1xuICogQHBhcmFtIHNXaWR0aFxuICogQHBhcmFtIHNIZWlnaHRcbiAqIEBwYXJhbSBkV2lkdGhcbiAqIEBwYXJhbSBkSGVpZ2h0XG4gKiBAcGFyYW0gdHJhbnNmb3JtVHlwZVxuICogQHJldHVybnMge3tzY2FsZUZhY3RvcjogKiwgd2lkdGg6ICosIGhlaWdodDogKn19XG4gKi9cbmZ1bmN0aW9uIGdldFNhZmVUcmFuc2Zvcm1EYXRhKHNXaWR0aCwgc0hlaWdodCwgZFdpZHRoLCBkSGVpZ2h0LCB0cmFuc2Zvcm1UeXBlKSB7XG4gICAgbGV0IHNjYWxlRmFjdG9yO1xuICAgIC8vIGRlZmF1bHRzIGZvciBGSUxMIHRyYW5zZm9ybSB0eXBlXG4gICAgbGV0IHdpZHRoID0gZFdpZHRoO1xuICAgIGxldCBoZWlnaHQgPSBkSGVpZ2h0O1xuICAgIC8vIGNhbGN1bGF0ZSBzYWZlIGltYWdlIHRyYW5zZm9ybWVkIGFyZWFcbiAgICBzY2FsZUZhY3RvciA9IGdldFNjYWxlRmFjdG9yKHNXaWR0aCwgc0hlaWdodCwgZFdpZHRoLCBkSGVpZ2h0LCB0cmFuc2Zvcm1UeXBlKTtcbiAgICBpZiAodHJhbnNmb3JtVHlwZSA9PT0gdHJhbnNmb3JtVHlwZXMuRklUKSB7XG4gICAgICAgIHdpZHRoID0gc1dpZHRoICogc2NhbGVGYWN0b3I7XG4gICAgICAgIGhlaWdodCA9IHNIZWlnaHQgKiBzY2FsZUZhY3RvcjtcbiAgICB9XG4gICAgLy8gYWRqdXN0IHRhcmdldCB3aWR0aCAmIGhlaWdodCAmIHNjYWxlRmFjdG9yXG4gICAgaWYgKHdpZHRoICYmIGhlaWdodCAmJiB3aWR0aCAqIGhlaWdodCA+IFNBRkVfVFJBTlNGT1JNRURfQVJFQSkge1xuICAgICAgICBjb25zdCBkaW1lbnNpb25TY2FsZUZhY3RvciA9IE1hdGguc3FydChTQUZFX1RSQU5TRk9STUVEX0FSRUEgLyAod2lkdGggKiBoZWlnaHQpKTtcbiAgICAgICAgd2lkdGggKj0gZGltZW5zaW9uU2NhbGVGYWN0b3I7XG4gICAgICAgIGhlaWdodCAqPSBkaW1lbnNpb25TY2FsZUZhY3RvcjtcbiAgICAgICAgLy8gZ2V0IHRoZSBuZXcgc2NhbGUgZmFjdG9yXG4gICAgICAgIHNjYWxlRmFjdG9yID0gZ2V0U2NhbGVGYWN0b3Ioc1dpZHRoLCBzSGVpZ2h0LCB3aWR0aCwgaGVpZ2h0LCB0cmFuc2Zvcm1UeXBlKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc2NhbGVGYWN0b3IsXG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHQsXG4gICAgfTtcbn1cbi8qKlxuICogcmV0dXJucyB0aGUgZGVzdGluYXRpb24gcmVjdGFuZ2xlXG4gKiBAcGFyYW0ge251bWJlcn0gICAgICAgICAgICAgICAgICBzV2lkdGhcbiAqIEBwYXJhbSB7bnVtYmVyfSAgICAgICAgICAgICAgICAgIHNIZWlnaHRcbiAqIEBwYXJhbSB7VHJhbnNmb3JtVHlwZX0gICAgICAgICAgIHRyYW5zZm9ybVR5cGVcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1UYXJnZXR9ICAgIHRhcmdldFxuICogQHBhcmFtIHtudW1iZXJ9ICAgICAgICAgICAgICAgICAgZHByIC0gZGV2aWNlIHBpeGVsIHJhdGlvXG4gKiBAcGFyYW0ge1Vwc2NhbGVNZXRob2R9ICAgICAgICAgICB1cHNjYWxlTWV0aG9kXG4gKlxuICogQHJldHVybnMge0ltYWdlVHJhbnNmb3JtRGF0YSAmIHt1cHNjYWxlTWV0aG9kVmFsdWU6IG51bWJlcn19XG4gKi9cbmZ1bmN0aW9uIGdldFRyYW5zZm9ybURhdGEoc1dpZHRoLCBzSGVpZ2h0LCB0cmFuc2Zvcm1UeXBlLCB0YXJnZXQsIGRwciwgdXBzY2FsZU1ldGhvZCkge1xuICAgIC8vIHVzZSB0YXJnZXQgZGltZW5zaW9uIGlzIHNyYyBub3QgcHJvdmlkZWRcbiAgICBzV2lkdGggPSBzV2lkdGggfHwgdGFyZ2V0LndpZHRoO1xuICAgIHNIZWlnaHQgPSBzSGVpZ2h0IHx8IHRhcmdldC5oZWlnaHQ7XG4gICAgLy8gYWRqdXN0IGltYWdlIHRyYW5zZm9ybSB2YWx1ZXMgY29uc2lkZXJpbmcgc2VydmVyIHNpZGUgdHJhbnNmb3JtIGxpbWl0YXRpb25zIGFuZCBwZXJmb3JtYW5jZVxuICAgIGNvbnN0IHsgc2NhbGVGYWN0b3IsIHdpZHRoLCBoZWlnaHQgfSA9IGdldFNhZmVUcmFuc2Zvcm1EYXRhKHNXaWR0aCwgc0hlaWdodCwgdGFyZ2V0LndpZHRoICogZHByLCB0YXJnZXQuaGVpZ2h0ICogZHByLCB0cmFuc2Zvcm1UeXBlKTtcbiAgICAvLyBhZGp1c3QgaW1hZ2UgdHJhbnNmb3JtIHZhbHVlcyB0byBvcHRpbWl6aW5nIHVwc2FjbGUgcXVhbGl0eSBhbmQgcGF5bG9hZFxuICAgIHJldHVybiBnZXRPcHRpbWl6ZWRUcmFuc2Zvcm1EYXRhKHNXaWR0aCwgc0hlaWdodCwgd2lkdGgsIGhlaWdodCwgdXBzY2FsZU1ldGhvZCwgc2NhbGVGYWN0b3IsIHRyYW5zZm9ybVR5cGUpO1xufVxuLyoqXG4gKiBjb252ZXJ0cyA5IGdyaWQgYWxpZ25tZW50IHRvIEZvY2FsIHBvaW50IHBvc2l0aW9uXG4gKiBAcGFyYW0ge3N0cmluZ30gIFthbGlnbm1lbnRdXG4gKlxuICogQHJldHVybnMge3g6bnVtYmVyLHk6bnVtYmVyfVxuICovXG5mdW5jdGlvbiBnZXRGb2NhbFBvaW50RnJvbTlHcmlkQWxpZ25tZW50KGFsaWdubWVudCA9IGFsaWduVHlwZXMuQ0VOVEVSKSB7XG4gICAgcmV0dXJuIEFMSUdOX1RZUEVfVE9fRk9DQUxfUE9JTlRbYWxpZ25tZW50XTtcbn1cbi8qKlxuICogcmV0dXJucyBvdmVybGFwcGluZyByZWN0YW5nbGUgd2hlcmUgc1JlY3RcbiAqIGlkIGFsaWduZWQgKGFjY29yZGluZyB0byBhbGlnbm1lbnQpIHdpdGhpbiBkUmVjdFxuICogQHBhcmFtIHt7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH19IHNSZWN0IHJlY3QgMVxuICogQHBhcmFtIHt7IHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyIH19IGRSZWN0IHJlY3QgMlxuICogQHBhcmFtIHt7eDogbnVtYmVyLCB5OiBudW1iZXJ9fHVuZGVmaW5lZH0gIHNGUCAgIHNvdXJjZSBpbWFnZSBmb2NhbCBwb2ludFxuICogQHBhcmFtIHtzdHJpbmd9ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWdubWVudFxuICpcbiAqIEByZXR1cm5zIHt7eDogbnVtYmVyLCB5OiBudW1iZXIsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyfX1cbiAqL1xuZnVuY3Rpb24gZ2V0QWxpZ25lZFJlY3Qoc1JlY3QsIGRSZWN0LCBzRlAsIGFsaWdubWVudCkge1xuICAgIGNvbnN0IGZwID0gZ2V0Rm9jYWxQb2ludChzRlApIHx8XG4gICAgICAgIGdldEZvY2FsUG9pbnRGcm9tOUdyaWRBbGlnbm1lbnQoYWxpZ25tZW50KTtcbiAgICBjb25zdCB4ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oc1JlY3Qud2lkdGggLSBkUmVjdC53aWR0aCwgZnAueCAqIHNSZWN0LndpZHRoIC0gZFJlY3Qud2lkdGggLyAyKSk7XG4gICAgY29uc3QgeSA9IE1hdGgubWF4KDAsIE1hdGgubWluKHNSZWN0LmhlaWdodCAtIGRSZWN0LmhlaWdodCwgZnAueSAqIHNSZWN0LmhlaWdodCAtIGRSZWN0LmhlaWdodCAvIDIpKTtcbiAgICAvLyByZWN0XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgd2lkdGg6IE1hdGgubWluKHNSZWN0LndpZHRoLCBkUmVjdC53aWR0aCksXG4gICAgICAgIGhlaWdodDogTWF0aC5taW4oc1JlY3QuaGVpZ2h0LCBkUmVjdC5oZWlnaHQpLFxuICAgIH07XG59XG4vKipcbiAqIHJldHVybnMgb3ZlcmxhcHBpbmcgcmVjdGFuZ2xlIGJldHdlZW4gc1JlY3QgYW5kIGRSZWN0XG4gKiBAcGFyYW0ge29iamVjdH0gICAgICBzUmVjdCAgICAgICAgIHJlY3QgMVxuICogQHBhcmFtIHtvYmplY3R9ICAgICAgZFJlY3QgICAgICAgICByZWN0IDJcbiAqXG4gKiBAcmV0dXJucyB7e3g6bnVtYmVyLHk6bnVtYmVyLHdpZHRoOm51bWJlciwgaGVpZ2h0Om51bWJlcn0gfHwgbnVsbH1cbiAqL1xuZnVuY3Rpb24gZ2V0T3ZlcmxhcHBpbmdSZWN0KHNSZWN0LCBkUmVjdCkge1xuICAgIGNvbnN0IHdpZHRoID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oc1JlY3Qud2lkdGgsIGRSZWN0LnggKyBkUmVjdC53aWR0aCkgLSBNYXRoLm1heCgwLCBkUmVjdC54KSk7XG4gICAgY29uc3QgaGVpZ2h0ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oc1JlY3QuaGVpZ2h0LCBkUmVjdC55ICsgZFJlY3QuaGVpZ2h0KSAtIE1hdGgubWF4KDAsIGRSZWN0LnkpKTtcbiAgICBjb25zdCBpc1ZhbGlkUmVjdCA9IHdpZHRoICYmIGhlaWdodCAmJiAoc1JlY3Qud2lkdGggIT09IHdpZHRoIHx8IHNSZWN0LmhlaWdodCAhPT0gaGVpZ2h0KTtcbiAgICAvLyByZXR1cm4gb3ZlcmxhcHBpbmcgc1JlY3QvZFJlY3QgcmVjdGFuZ2xlKHgsIHksIHdpZHRoLCBoZWlnaHQpXG4gICAgcmV0dXJuIGlzVmFsaWRSZWN0XG4gICAgICAgID8ge1xuICAgICAgICAgICAgeDogTWF0aC5tYXgoMCwgZFJlY3QueCksXG4gICAgICAgICAgICB5OiBNYXRoLm1heCgwLCBkUmVjdC55KSxcbiAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICB9XG4gICAgICAgIDogbnVsbDtcbn1cbi8qKlxuICogcmV0dXJucyBwaXhlbCBhc3BlY3QgcmF0aW8gdmFsdWVcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1UYXJnZXR9ICAgIHRhcmdldFxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9XG4gKi9cbmZ1bmN0aW9uIGdldERldmljZVBpeGVsUmF0aW8odGFyZ2V0KSB7XG4gICAgcmV0dXJuIE1hdGgubWluKHRhcmdldC5waXhlbEFzcGVjdFJhdGlvIHx8IDEsIE1BWF9ERVZJQ0VfUElYRUxfUkFUSU8pO1xufVxuLyoqXG4gKiByZXR1cm5zIHRhcmdldCBhbGlnbm1lbnQgdmFsdWVcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1UYXJnZXR9ICAgIHRhcmdldFxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGdldEFsaWdubWVudCh0YXJnZXQpIHtcbiAgICByZXR1cm4gKCh0YXJnZXQuYWxpZ25tZW50ICYmIGFsaWduVHlwZXNNYXBbdGFyZ2V0LmFsaWdubWVudF0pIHx8XG4gICAgICAgIGFsaWduVHlwZXNNYXBbYWxpZ25UeXBlcy5DRU5URVJdKTtcbn1cbi8qKlxuICogcmV0dXJucyB0aGUgZm9jYWwgcG9pbnQgdmFsdWUsIGlmIG5vIGZvY2FsIHBvaW50IHBhc3NlZCB1c2UgYWxpZ25tZW50XG4gKiBAcGFyYW0ge3t4OiBudW1iZXIsIHk6IG51bWJlcn18dW5kZWZpbmVkfSBmb2NhbFBvaW50XG4gKi9cbmZ1bmN0aW9uIGdldEZvY2FsUG9pbnQoZm9jYWxQb2ludCkge1xuICAgIGxldCBmcDtcbiAgICBpZiAoZm9jYWxQb2ludCAmJlxuICAgICAgICB0eXBlb2YgZm9jYWxQb2ludC54ID09PSAnbnVtYmVyJyAmJlxuICAgICAgICAhaXNOYU4oZm9jYWxQb2ludC54KSAmJlxuICAgICAgICB0eXBlb2YgZm9jYWxQb2ludC55ID09PSAnbnVtYmVyJyAmJlxuICAgICAgICAhaXNOYU4oZm9jYWxQb2ludC55KSkge1xuICAgICAgICBmcCA9IHtcbiAgICAgICAgICAgIHg6IHJvdW5kVG9GaXhlZChNYXRoLm1heCgwLCBNYXRoLm1pbigxMDAsIGZvY2FsUG9pbnQueCkpIC8gMTAwLCAyKSxcbiAgICAgICAgICAgIHk6IHJvdW5kVG9GaXhlZChNYXRoLm1heCgwLCBNYXRoLm1pbigxMDAsIGZvY2FsUG9pbnQueSkpIC8gMTAwLCAyKSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGZwO1xufVxuLyoqXG4gKiByZXR1cm5zIHByZWZlcnJlZCBpbWFnZSBxdWFsaXR5IHZhbHVlXG4gKiBAcGFyYW0ge251bWJlcn0gICAgaW1hZ2VXaWR0aFxuICogQHBhcmFtIHtudW1iZXJ9ICAgIGltYWdlSGVpZ2h0XG4gKlxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZnVuY3Rpb24gZ2V0UHJlZmVycmVkSW1hZ2VRdWFsaXR5KGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0KSB7XG4gICAgcmV0dXJuIGltYWdlU2NhbGVEZWZhdWx0c1tnZXRJbWFnZVF1YWxpdHlLZXkoaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpXVxuICAgICAgICAucXVhbGl0eTtcbn1cbi8qKlxuICogcmV0dXJucyB0aGUgc2NhbGUgZGVzY3JpcHRvciBvZiBDTEFTU0lDIHVwc2NhbGUgbWV0aG9kXG4gKiBAcGFyYW0gc1dpZHRoXG4gKiBAcGFyYW0gc0hlaWdodFxuICogQHJldHVybnMge3tvcHRpbWl6ZWRTY2FsZUZhY3RvcjogbnVtYmVyLCB1cHNjYWxlTWV0aG9kVmFsdWU6IG51bWJlciwgZm9yY2VVU006IGJvb2xlYW59fVxuICovXG5mdW5jdGlvbiBnZXRDbGFzc2ljU2NhbGVEYXRhKHNXaWR0aCwgc0hlaWdodCkge1xuICAgIGNvbnN0IGltYWdlS2V5ID0gZ2V0SW1hZ2VRdWFsaXR5S2V5KHNXaWR0aCwgc0hlaWdodCk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgb3B0aW1pemVkU2NhbGVGYWN0b3I6IGltYWdlU2NhbGVEZWZhdWx0c1tpbWFnZUtleV0ubWF4VXBzY2FsZSxcbiAgICAgICAgdXBzY2FsZU1ldGhvZFZhbHVlOiB1cHNjYWxlTWV0aG9kc1ZhbHVlcy5jbGFzc2ljLFxuICAgICAgICBmb3JjZVVTTTogZmFsc2UsXG4gICAgfTtcbn1cbi8qKlxuICogcmV0dXJucyB0aGUgc2NhbGUgZGVzY3JpcHRvciBvZiBBVVRPIHVwc2NhbGUgbWV0aG9kXG4gKiBAcGFyYW0gc1dpZHRoXG4gKiBAcGFyYW0gc0hlaWdodFxuICogQHJldHVybnMge3tvcHRpbWl6ZWRTY2FsZUZhY3RvcjogbnVtYmVyLCB1cHNjYWxlTWV0aG9kVmFsdWU6IG51bWJlciwgZm9yY2VVU006IGJvb2xlYW59fVxuICovXG5mdW5jdGlvbiBnZXRBdXRvU2NhbGVEYXRhKHNXaWR0aCwgc0hlaWdodCkge1xuICAgIGNvbnN0IGltYWdlS2V5ID0gZ2V0SW1hZ2VRdWFsaXR5S2V5KHNXaWR0aCwgc0hlaWdodCk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgb3B0aW1pemVkU2NhbGVGYWN0b3I6IGltYWdlU2NhbGVEZWZhdWx0c1tpbWFnZUtleV0ubWF4VXBzY2FsZSxcbiAgICAgICAgdXBzY2FsZU1ldGhvZFZhbHVlOiB1cHNjYWxlTWV0aG9kc1ZhbHVlcy5jbGFzc2ljLFxuICAgICAgICBmb3JjZVVTTTogZmFsc2UsXG4gICAgfTtcbn1cbi8qKlxuICogcmV0dXJucyB0aGUgc2NhbGUgZGVzY3JpcHRvciBvZiBTVVBFUiB1cHNjYWxlIG1ldGhvZFxuICogQHBhcmFtIHNjYWxlRmFjdG9yXG4gKiBAcmV0dXJucyB7e29wdGltaXplZFNjYWxlRmFjdG9yOiBudW1iZXIsIHVwc2NhbGVNZXRob2RWYWx1ZTogbnVtYmVyLCBmb3JjZVVTTTogYm9vbGVhbn19XG4gKi9cbmZ1bmN0aW9uIGdldFN1cGVyU2NhbGVEYXRhKHNjYWxlRmFjdG9yKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgb3B0aW1pemVkU2NhbGVGYWN0b3I6IGxhc3QoU1VQRVJfVVBTQ0FMRV9NT0RFTFMpLFxuICAgICAgICB1cHNjYWxlTWV0aG9kVmFsdWU6IHVwc2NhbGVNZXRob2RzVmFsdWVzLnN1cGVyLFxuICAgICAgICBmb3JjZVVTTTogIShTVVBFUl9VUFNDQUxFX01PREVMUy5pbmNsdWRlcyhzY2FsZUZhY3RvcikgfHxcbiAgICAgICAgICAgIHNjYWxlRmFjdG9yID4gbGFzdChTVVBFUl9VUFNDQUxFX01PREVMUykpLFxuICAgIH07XG59XG4vKipcbiAqIHJldHVybnMgdXBzY2FsZSBkZXNjcmlwdG9yIG9iamVjdFxuICogQHBhcmFtIHtudW1iZXJ9ICAgIHNXaWR0aFxuICogQHBhcmFtIHtudW1iZXJ9ICAgIHNIZWlnaHRcbiAqIEBwYXJhbSB7c3RyaW5nfSAgICB1cHNjYWxlTWV0aG9kXG4gKiBAcGFyYW0ge251bWJlcn0gICAgc2NhbGVGYWN0b3JcbiAqXG4gKiBAcmV0dXJucyAge3ttYXhTY2FsZTogbnVtYmVyLCB1cHNjYWxlTWV0aG9kVmFsdWU6IG51bWJlciwgZm9yY2VVU006IGJvb2xlYW59fVxuICovXG5mdW5jdGlvbiBnZXRPcHRpbWl6ZWRTY2FsZURhdGEoc1dpZHRoLCBzSGVpZ2h0LCBzY2FsZUZhY3RvciwgdXBzY2FsZU1ldGhvZCkge1xuICAgIGlmICh1cHNjYWxlTWV0aG9kID09PSAnYXV0bycpIHtcbiAgICAgICAgcmV0dXJuIGdldEF1dG9TY2FsZURhdGEoc1dpZHRoLCBzSGVpZ2h0KTtcbiAgICB9XG4gICAgZWxzZSBpZiAodXBzY2FsZU1ldGhvZCA9PT0gJ3N1cGVyJykge1xuICAgICAgICByZXR1cm4gZ2V0U3VwZXJTY2FsZURhdGEoc2NhbGVGYWN0b3IpO1xuICAgIH1cbiAgICAvLyBhc3N1bWluZyAnY2xhc3NpYycgbWV0aG9kXG4gICAgcmV0dXJuIGdldENsYXNzaWNTY2FsZURhdGEoc1dpZHRoLCBzSGVpZ2h0KTtcbn1cbi8qKlxuICogcmV0dXJucyBvcHRpbWl6ZWQgdXBzY2FsZSBkYXRhLCBjb25zaWRlcmluZyByZXF1ZXN0ZWQgdXBzY2FsZSBtZXRob2QgLCBvcHRpbWl6ZSB1cHNjYWxlIGZvciBiZXN0IHF1YWxpdHkgYW5kIGJhbmR3aWR0aFxuICogQHBhcmFtIHtudW1iZXJ9ICAgIHNXaWR0aFxuICogQHBhcmFtIHtudW1iZXJ9ICAgIHNIZWlnaHRcbiAqIEBwYXJhbSB7bnVtYmVyfSAgICB0V2lkdGhcbiAqIEBwYXJhbSB7bnVtYmVyfSAgICB0SGVpZ2h0XG4gKiBAcGFyYW0ge1Vwc2NhbGVNZXRob2R9ICAgIHVwc2NhbGVNZXRob2RcbiAqIEBwYXJhbSB7bnVtYmVyfSAgICBzY2FsZUZhY3RvclxuICogQHBhcmFtIHtUcmFuc2Zvcm1UeXBlfSAgICB0cmFuc2Zvcm1UeXBlXG4gKlxuICogQHJldHVybnMgIHtJbWFnZVRyYW5zZm9ybURhdGF9XG4gKi9cbmZ1bmN0aW9uIGdldE9wdGltaXplZFRyYW5zZm9ybURhdGEoc1dpZHRoLCBzSGVpZ2h0LCB0V2lkdGgsIHRIZWlnaHQsIHVwc2NhbGVNZXRob2QsIHNjYWxlRmFjdG9yLCB0cmFuc2Zvcm1UeXBlKSB7XG4gICAgY29uc3QgeyBvcHRpbWl6ZWRTY2FsZUZhY3RvciwgdXBzY2FsZU1ldGhvZFZhbHVlLCBmb3JjZVVTTSB9ID0gZ2V0T3B0aW1pemVkU2NhbGVEYXRhKHNXaWR0aCwgc0hlaWdodCwgc2NhbGVGYWN0b3IsIHVwc2NhbGVNZXRob2QpO1xuICAgIGxldCB3aWR0aCA9IHRXaWR0aDtcbiAgICBsZXQgaGVpZ2h0ID0gdEhlaWdodDtcbiAgICBpZiAoc2NhbGVGYWN0b3IgPD0gb3B0aW1pemVkU2NhbGVGYWN0b3IpIHtcbiAgICAgICAgLy8gdGFyZ2V0IHVwc2NhbGUgd2l0aGluIGxpbWl0cyBvciBkb3duc2NhbGVcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgc2NhbGVGYWN0b3IsXG4gICAgICAgICAgICB1cHNjYWxlTWV0aG9kVmFsdWUsXG4gICAgICAgICAgICBmb3JjZVVTTSxcbiAgICAgICAgICAgIGNzc1Vwc2NhbGVOZWVkZWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgIH1cbiAgICAvLyBsaW1pdGVkIHVwc2NhbGVcbiAgICBzd2l0Y2ggKHRyYW5zZm9ybVR5cGUpIHtcbiAgICAgICAgY2FzZSB0cmFuc2Zvcm1UeXBlcy5GSUxMOlxuICAgICAgICAgICAgd2lkdGggPSB0V2lkdGggKiAob3B0aW1pemVkU2NhbGVGYWN0b3IgLyBzY2FsZUZhY3Rvcik7XG4gICAgICAgICAgICBoZWlnaHQgPSB0SGVpZ2h0ICogKG9wdGltaXplZFNjYWxlRmFjdG9yIC8gc2NhbGVGYWN0b3IpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgdHJhbnNmb3JtVHlwZXMuRklUOlxuICAgICAgICAgICAgd2lkdGggPSBzV2lkdGggKiBvcHRpbWl6ZWRTY2FsZUZhY3RvcjtcbiAgICAgICAgICAgIGhlaWdodCA9IHNIZWlnaHQgKiBvcHRpbWl6ZWRTY2FsZUZhY3RvcjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC8vIGFkanVzdCB0cmFuc2Zvcm0gdmFsdWVzXG4gICAgcmV0dXJuIHtcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodCxcbiAgICAgICAgc2NhbGVGYWN0b3I6IG9wdGltaXplZFNjYWxlRmFjdG9yLFxuICAgICAgICB1cHNjYWxlTWV0aG9kVmFsdWUsXG4gICAgICAgIGZvcmNlVVNNLFxuICAgICAgICBjc3NVcHNjYWxlTmVlZGVkOiB0cnVlLFxuICAgIH07XG59XG4vKipcbiAqIHJldHVybnMgaW1hZ2UgcXVhbGl0eSBrZXlcbiAqIEBwYXJhbSB7bnVtYmVyfSAgICBpbWFnZVdpZHRoXG4gKiBAcGFyYW0ge251bWJlcn0gICAgaW1hZ2VIZWlnaHRcbiAqXG4gKiBAcmV0dXJucyB7SW1hZ2VRdWFsaXR5fVxuICovXG5mdW5jdGlvbiBnZXRJbWFnZVF1YWxpdHlLZXkoaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpIHtcbiAgICBjb25zdCBzaXplID0gaW1hZ2VXaWR0aCAqIGltYWdlSGVpZ2h0O1xuICAgIGlmIChzaXplID4gaW1hZ2VTY2FsZURlZmF1bHRzW2ltYWdlUXVhbGl0eS5ISUdIXS5zaXplKSB7XG4gICAgICAgIHJldHVybiBpbWFnZVF1YWxpdHkuSElHSDtcbiAgICB9XG4gICAgZWxzZSBpZiAoc2l6ZSA+IGltYWdlU2NhbGVEZWZhdWx0c1tpbWFnZVF1YWxpdHkuTUVESVVNXS5zaXplKSB7XG4gICAgICAgIHJldHVybiBpbWFnZVF1YWxpdHkuTUVESVVNO1xuICAgIH1cbiAgICBlbHNlIGlmIChzaXplID4gaW1hZ2VTY2FsZURlZmF1bHRzW2ltYWdlUXVhbGl0eS5MT1ddLnNpemUpIHtcbiAgICAgICAgcmV0dXJuIGltYWdlUXVhbGl0eS5MT1c7XG4gICAgfVxuICAgIHJldHVybiBpbWFnZVF1YWxpdHkuVElOWTtcbn1cbi8qKlxuICogcmV0dXJuIHRoZSBhY3R1YWwgcm91bmRlZCBkaW1lbnNpb24gb2YgYSBzY2FsZWQgcmVjdGFuZ2xlXG4gKiBAcGFyYW0gc1dpZHRoXG4gKiBAcGFyYW0gc0hlaWdodFxuICogQHBhcmFtIHRXaWR0aFxuICogQHBhcmFtIHRIZWlnaHRcbiAqIEBwYXJhbSB0cmFuc2Zvcm1UeXBlXG4gKiBAcmV0dXJucyB7e3dpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyfX1cbiAqL1xuZnVuY3Rpb24gZ2V0RGltZW5zaW9uKHNXaWR0aCwgc0hlaWdodCwgdFdpZHRoLCB0SGVpZ2h0LCB0cmFuc2Zvcm1UeXBlKSB7XG4gICAgY29uc3Qgc2NhbGVGYWN0b3IgPSBnZXRTY2FsZUZhY3RvcihzV2lkdGgsIHNIZWlnaHQsIHRXaWR0aCwgdEhlaWdodCwgdHJhbnNmb3JtVHlwZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgd2lkdGg6IE1hdGgucm91bmQoc1dpZHRoICogc2NhbGVGYWN0b3IpLFxuICAgICAgICBoZWlnaHQ6IE1hdGgucm91bmQoc0hlaWdodCAqIHNjYWxlRmFjdG9yKSxcbiAgICB9O1xufVxuLyoqXG4gKiByb3VuZHMgbnVtYmVyIG4gZGlnaXQgcHJlY2lzaW9uIGFuZCBjb252ZXJ0cyB0byBzdHJpbmdcbiAqIEBwYXJhbSB7bnVtYmVyfSAgICAgIHZhbHVlXG4gKiBAcGFyYW0ge251bWJlcn0gICAgICBwcmVjaXNpb25cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiByb3VuZFRvRml4ZWQodmFsdWUsIHByZWNpc2lvbikge1xuICAgIGNvbnN0IHRydW5jYXRlUHJlY2lzaW9uID0gTWF0aC5wb3coMTAsIHByZWNpc2lvbiB8fCAwKTtcbiAgICByZXR1cm4gKCh2YWx1ZSAqIHRydW5jYXRlUHJlY2lzaW9uKSAvIHRydW5jYXRlUHJlY2lzaW9uKS50b0ZpeGVkKHByZWNpc2lvbik7XG59XG4vKipcbiAqIGdldCBub3JtYWxpemUgc2NhbGUgbWV0aG9kXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtT3B0aW9uc30gW29wdGlvbnNdXG4gKiBAcmV0dXJucyB7VXBzY2FsZU1ldGhvZH1cbiAqL1xuZnVuY3Rpb24gZ2V0VXBzY2FsZVN0cmluZyhvcHRpb25zKSB7XG4gICAgaWYgKCFvcHRpb25zIHx8ICFvcHRpb25zLnVwc2NhbGVNZXRob2QpIHtcbiAgICAgICAgcmV0dXJuIHVwc2NhbGVNZXRob2RzLkFVVE87XG4gICAgfVxuICAgIHJldHVybiAodXBzY2FsZU1ldGhvZHNbb3B0aW9ucy51cHNjYWxlTWV0aG9kLnRvVXBwZXJDYXNlKCldIHx8IHVwc2NhbGVNZXRob2RzLkFVVE8pO1xufVxuZnVuY3Rpb24gaW1hZ2VJc0FuaW1hdGVkKHVyaSwgaGFzQW5pbWF0aW9uKSB7XG4gICAgY29uc3QgaXNBdmlmV2VicEZvcm1hdCA9IGlzV0VCUCh1cmkpIHx8IGlzQVZJRih1cmkpO1xuICAgIHJldHVybiAoZ2V0RmlsZUV4dGVuc2lvbih1cmkpID09PSBmaWxlVHlwZS5HSUYgfHwgKGlzQXZpZldlYnBGb3JtYXQgJiYgaGFzQW5pbWF0aW9uKSk7XG59XG5leHBvcnQgeyBnZXRBbGlnbmVkUmVjdCwgZ2V0QWxpZ25tZW50LCBnZXREZXZpY2VQaXhlbFJhdGlvLCBnZXREaW1lbnNpb24sIGdldEZpbGVFeHRlbnNpb24sIGdldEZpbGVOYW1lLCBnZXRGaWxlVHlwZSwgZ2V0Rm9jYWxQb2ludCwgZ2V0T3ZlcmxhcHBpbmdSZWN0LCBnZXRQcmVmZXJyZWRJbWFnZVF1YWxpdHksIGdldFNjYWxlRmFjdG9yLCBnZXRUcmFuc2Zvcm1EYXRhLCBnZXRVcHNjYWxlU3RyaW5nLCBpbWFnZUlzQW5pbWF0ZWQsIGlzRXh0ZXJuYWxVcmwsIGlzSW1hZ2VUcmFuc2Zvcm1BcHBsaWNhYmxlLCBpc0ltYWdlVHlwZVN1cHBvcnRlZCwgaXNTRU9Cb3QsIGlzVmFsaWRSZXF1ZXN0LCBpc1BORywgaXNXRUJQLCBpc0dJRiwgaXNBVklGLCByb3VuZFRvRml4ZWQsIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZVNlcnZpY2VVdGlscy5qcy5tYXAiLCJjb25zdCBnbG9iYWxGZWF0dXJlc1N1cHBvcnRPYmogPSB7XG4gICAgLyoqXG4gICAgICogQHR5cGUge29iamVjdDxib29sZWFuPn1cbiAgICAgKi9cbiAgICBpc01vYmlsZTogZmFsc2UsXG59O1xuY29uc3QgZ2V0RmVhdHVyZSA9IGZ1bmN0aW9uIChmZWF0dXJlKSB7XG4gICAgcmV0dXJuIGdsb2JhbEZlYXR1cmVzU3VwcG9ydE9ialtmZWF0dXJlXTtcbn07XG5jb25zdCBzZXRGZWF0dXJlID0gZnVuY3Rpb24gKGZlYXR1cmUsIHZhbHVlKSB7XG4gICAgZ2xvYmFsRmVhdHVyZXNTdXBwb3J0T2JqW2ZlYXR1cmVdID0gdmFsdWU7XG59O1xuZXhwb3J0IHsgZ2V0RmVhdHVyZSwgc2V0RmVhdHVyZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW1hZ2VTZXJ2aWNlRmVhdHVyZVN1cHBvcnRPYmplY3QuanMubWFwIiwiaW1wb3J0IHsgc2V0RmVhdHVyZSB9IGZyb20gJy4vaW1hZ2VTZXJ2aWNlRmVhdHVyZVN1cHBvcnRPYmplY3QnO1xuLyoqXG4gKiBQb3B1bGF0ZSB0aGUgZ2xvYmFsIGZlYXR1cmUgc3VwcG9ydCBvYmplY3Qgd2l0aCBicm93c2VyIHNwZWNpZmljIHZhbHVlc1xuICovXG5mdW5jdGlvbiBwb3B1bGF0ZUdsb2JhbEZlYXR1cmVTdXBwb3J0KCkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb25zdCBpc1NtYWxsU2NyZWVuID0gd2luZG93Lm1hdGNoTWVkaWEgJiYgd2luZG93Lm1hdGNoTWVkaWEoJyhtYXgtd2lkdGg6IDc2N3B4KScpLm1hdGNoZXM7XG4gICAgICAgIGNvbnN0IGlzTW9iaWxlQWdlbnQgPSAvQW5kcm9pZHx3ZWJPU3xpUGhvbmV8aVBhZHxpUG9kfEJsYWNrQmVycnl8SUVNb2JpbGV8T3BlcmEgTWluaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG4gICAgICAgIC8vIHNldCBpcyBtb2JpbGVcbiAgICAgICAgc2V0RmVhdHVyZSgnaXNNb2JpbGUnLCBpc1NtYWxsU2NyZWVuICYmIGlzTW9iaWxlQWdlbnQpO1xuICAgIH1cbn1cbmV4cG9ydCB7IHBvcHVsYXRlR2xvYmFsRmVhdHVyZVN1cHBvcnQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBvcHVsYXRlRmVhdHVyZVN1cHBvcnQuanMubWFwIiwiaW1wb3J0IHsgYWxpZ25UeXBlcywgZml0dGluZ1R5cGVzIH0gZnJvbSAnLi4vLi4vaGVscGVycy9pbWFnZVNlcnZpY2VDb25zdGFudHMnO1xuLyoqXG4gKiByZXR1cm5zIEJHIHRhZyBDU1MgZGF0YVxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybU9iamVjdH0gICAgdHJhbnNmb3Jtc09iaiAgICB0cmFuc2Zvcm0gcGFydHMgb2JqZWN0XG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtVGFyZ2V0fSAgICB0YXJnZXRcbiAqXG4gKiBAcmV0dXJucyB7QmFja2dyb3VuZEltYWdlQXR0cmlidXRlc31cbiAqL1xuZnVuY3Rpb24gZ2V0Q1NTKHRyYW5zZm9ybXNPYmosIHRhcmdldCkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB7XG4gICAgICAgIGNzczoge1xuICAgICAgICAgICAgY29udGFpbmVyOiB7fSxcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIGNvbnN0IHsgY3NzIH0gPSBhdHRyaWJ1dGVzO1xuICAgIGNvbnN0IHsgZml0dGluZ1R5cGUgfSA9IHRyYW5zZm9ybXNPYmo7XG4gICAgLy8gc2V0IGZpdHRpbmdcbiAgICBzd2l0Y2ggKGZpdHRpbmdUeXBlKSB7XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLk9SSUdJTkFMX1NJWkU6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9PUklHSU5BTF9TSVpFOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfU1RSSVBfT1JJR0lOQUxfU0laRTpcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFNpemUgPSAnYXV0byc7XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRSZXBlYXQgPSAnbm8tcmVwZWF0JztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5TQ0FMRV9UT19GSVQ6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9TVFJJUF9TQ0FMRV9UT19GSVQ6XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRTaXplID0gJ2NvbnRhaW4nO1xuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kUmVwZWF0ID0gJ25vLXJlcGVhdCc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuU1RSRVRDSDpcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFNpemUgPSAnMTAwJSAxMDAlJztcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFJlcGVhdCA9ICduby1yZXBlYXQnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLlNDQUxFX1RPX0ZJTEw6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9TVFJJUF9TQ0FMRV9UT19GSUxMOlxuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kU2l6ZSA9ICdjb3Zlcic7XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRSZXBlYXQgPSAnbm8tcmVwZWF0JztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5USUxFX0hPUklaT05UQUw6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9TVFJJUF9USUxFX0hPUklaT05UQUw6XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRTaXplID0gJ2F1dG8nO1xuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kUmVwZWF0ID0gJ3JlcGVhdC14JztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5USUxFX1ZFUlRJQ0FMOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfU1RSSVBfVElMRV9WRVJUSUNBTDpcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFNpemUgPSAnYXV0byc7XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRSZXBlYXQgPSAncmVwZWF0LXknO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLlRJTEU6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9TVFJJUF9USUxFOlxuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kU2l6ZSA9ICdhdXRvJztcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFJlcGVhdCA9ICdyZXBlYXQnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9TVFJJUF9GSVRfQU5EX1RJTEU6XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRTaXplID0gJ2NvbnRhaW4nO1xuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kUmVwZWF0ID0gJ3JlcGVhdCc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuRklUX0FORF9USUxFOlxuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kU2l6ZSA9ICdhdXRvJztcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFJlcGVhdCA9ICdyZXBlYXQnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIC8vIExlZ2FjeSBvbGQgZWRpdG9yIGJnIHR5cGVzLlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfQkdfRklUX0FORF9USUxFOlxuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kU2l6ZSA9ICdhdXRvJztcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFJlcGVhdCA9ICdyZXBlYXQnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9CR19GSVRfQU5EX1RJTEVfSE9SSVpPTlRBTDpcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFNpemUgPSAnYXV0byc7XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRSZXBlYXQgPSAncmVwZWF0LXgnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9CR19GSVRfQU5EX1RJTEVfVkVSVElDQUw6XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRTaXplID0gJ2F1dG8nO1xuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kUmVwZWF0ID0gJ3JlcGVhdC15JztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfQkdfTk9STUFMOlxuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kU2l6ZSA9ICdhdXRvJztcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFJlcGVhdCA9ICduby1yZXBlYXQnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC8vIHNldCBhbGlnbm1lbnRcbiAgICBzd2l0Y2ggKHRhcmdldC5hbGlnbm1lbnQpIHtcbiAgICAgICAgY2FzZSBhbGlnblR5cGVzLkNFTlRFUjpcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFBvc2l0aW9uID0gJ2NlbnRlciBjZW50ZXInOyAvLyA1MCUgNTAlXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBhbGlnblR5cGVzLkxFRlQ6XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRQb3NpdGlvbiA9ICdsZWZ0IGNlbnRlcic7IC8vIDAlIDUwJVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgYWxpZ25UeXBlcy5SSUdIVDpcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFBvc2l0aW9uID0gJ3JpZ2h0IGNlbnRlcic7IC8vIDEwMCUgNTAlXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBhbGlnblR5cGVzLlRPUDpcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFBvc2l0aW9uID0gJ2NlbnRlciB0b3AnOyAvLyA1MCUgMCVcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGFsaWduVHlwZXMuQk9UVE9NOlxuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kUG9zaXRpb24gPSAnY2VudGVyIGJvdHRvbSc7IC8vIDUwJSAxMDAlXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBhbGlnblR5cGVzLlRPUF9SSUdIVDpcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFBvc2l0aW9uID0gJ3JpZ2h0IHRvcCc7IC8vIDEwMCUgMCVcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGFsaWduVHlwZXMuVE9QX0xFRlQ6XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRQb3NpdGlvbiA9ICdsZWZ0IHRvcCc7IC8vIDAlIDAlXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBhbGlnblR5cGVzLkJPVFRPTV9SSUdIVDpcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFBvc2l0aW9uID0gJ3JpZ2h0IGJvdHRvbSc7IC8vIDEwMCUgMTAwJVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgYWxpZ25UeXBlcy5CT1RUT01fTEVGVDpcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFBvc2l0aW9uID0gJ2xlZnQgYm90dG9tJzsgLy8gMCUgMTAwJVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC8vIHJldHVybiBiYWNrZ3JvdW5kIENTU1xuICAgIHJldHVybiBhdHRyaWJ1dGVzO1xufVxuZXhwb3J0IHsgZ2V0Q1NTIGFzIGdldCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YmFja2dyb3VuZEF0dHJpYnV0ZXMuanMubWFwIiwiaW1wb3J0IHsgYWxpZ25UeXBlcywgZml0dGluZ1R5cGVzIH0gZnJvbSAnLi4vLi4vaGVscGVycy9pbWFnZVNlcnZpY2VDb25zdGFudHMnO1xuLyoqXG4gKiBhbGlnbiB0eXBlIHRvIHBvc2l0aW9uXG4gKiBAcGFyYW0gdmVydGljYWxNaWRkbGVcbiAqIEBwYXJhbSBob3Jpem9udGFsTWlkZGxlXG4gKiBAcGFyYW0gdGFyZ2V0XG4gKiBAcmV0dXJucyB7e319XG4gKi9cbmZ1bmN0aW9uIGFsaWduVHlwZVRvUG9zaXRpb24odmVydGljYWxNaWRkbGUsIGhvcml6b250YWxNaWRkbGUsIHRhcmdldCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIFthbGlnblR5cGVzLlRPUF9MRUZUXTogeyB0b3A6IDAsIGxlZnQ6IDAgfSxcbiAgICAgICAgW2FsaWduVHlwZXMuVE9QX1JJR0hUXTogeyB0b3A6IDAsIHJpZ2h0OiAwIH0sXG4gICAgICAgIFthbGlnblR5cGVzLlRPUF06IHsgdG9wOiAwLCBsZWZ0OiBob3Jpem9udGFsTWlkZGxlIH0sXG4gICAgICAgIFthbGlnblR5cGVzLkJPVFRPTV9MRUZUXTogeyBib3R0b206IDAsIGxlZnQ6IDAgfSxcbiAgICAgICAgW2FsaWduVHlwZXMuQk9UVE9NX1JJR0hUXTogeyBib3R0b206IDAsIHJpZ2h0OiAwIH0sXG4gICAgICAgIFthbGlnblR5cGVzLkJPVFRPTV06IHsgYm90dG9tOiAwLCBsZWZ0OiBob3Jpem9udGFsTWlkZGxlIH0sXG4gICAgICAgIFthbGlnblR5cGVzLlJJR0hUXTogeyB0b3A6IHZlcnRpY2FsTWlkZGxlLCByaWdodDogMCB9LFxuICAgICAgICBbYWxpZ25UeXBlcy5MRUZUXTogeyB0b3A6IHZlcnRpY2FsTWlkZGxlLCBsZWZ0OiAwIH0sXG4gICAgICAgIFthbGlnblR5cGVzLkNFTlRFUl06IHtcbiAgICAgICAgICAgIHdpZHRoOiB0YXJnZXQud2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IHRhcmdldC5oZWlnaHQsXG4gICAgICAgICAgICBvYmplY3RGaXQ6ICdub25lJyxcbiAgICAgICAgfSxcbiAgICB9O1xufVxuY29uc3QgYWxpZ25UeXBlVG9Qb3NpdGlvblN0ciA9IHtcbiAgICBbYWxpZ25UeXBlcy5DRU5URVJdOiAnY2VudGVyJyxcbiAgICBbYWxpZ25UeXBlcy5UT1BdOiAndG9wJyxcbiAgICBbYWxpZ25UeXBlcy5UT1BfTEVGVF06ICd0b3AgbGVmdCcsXG4gICAgW2FsaWduVHlwZXMuVE9QX1JJR0hUXTogJ3RvcCByaWdodCcsXG4gICAgW2FsaWduVHlwZXMuQk9UVE9NXTogJ2JvdHRvbScsXG4gICAgW2FsaWduVHlwZXMuQk9UVE9NX0xFRlRdOiAnYm90dG9tIGxlZnQnLFxuICAgIFthbGlnblR5cGVzLkJPVFRPTV9SSUdIVF06ICdib3R0b20gcmlnaHQnLFxuICAgIFthbGlnblR5cGVzLkxFRlRdOiAnbGVmdCcsXG4gICAgW2FsaWduVHlwZXMuUklHSFRdOiAncmlnaHQnLFxufTtcbmNvbnN0IGFsaWdtZW50RGVmYXVsdHMgPSB7XG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgdG9wOiAnYXV0bycsXG4gICAgcmlnaHQ6ICdhdXRvJyxcbiAgICBib3R0b206ICdhdXRvJyxcbiAgICBsZWZ0OiAnYXV0bycsXG59O1xuLyoqXG4gKiByZXR1cm5zIGltYWdlIHRhZyBDU1MgZGF0YVxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybU9iamVjdH0gICAgdHJhbnNmb3Jtc09iaiAgICB0cmFuc2Zvcm0gcGFydHMgb2JqZWN0XG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtVGFyZ2V0fSAgICB0YXJnZXRcbiAqXG4gKiBAcmV0dXJucyB7SW1hZ2VBdHRyaWJ1dGVzfVxuICovXG5mdW5jdGlvbiBnZXRDU1ModHJhbnNmb3Jtc09iaiwgdGFyZ2V0KSB7XG4gICAgY29uc3QgYXR0cmlidXRlcyA9IHtcbiAgICAgICAgY3NzOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IHt9LFxuICAgICAgICAgICAgaW1nOiB7fSxcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIGNvbnN0IHsgY3NzIH0gPSBhdHRyaWJ1dGVzO1xuICAgIGNvbnN0IHsgZml0dGluZ1R5cGUgfSA9IHRyYW5zZm9ybXNPYmo7XG4gICAgY29uc3QgYWxpZ25UeXBlID0gdGFyZ2V0LmFsaWdubWVudDtcbiAgICBjc3MuY29udGFpbmVyLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcbiAgICBzd2l0Y2ggKGZpdHRpbmdUeXBlKSB7XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLk9SSUdJTkFMX1NJWkU6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9PUklHSU5BTF9TSVpFOlxuICAgICAgICAgICAgaWYgKHRyYW5zZm9ybXNPYmoucGFydHMgJiYgdHJhbnNmb3Jtc09iai5wYXJ0cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjc3MuaW1nLndpZHRoID0gdHJhbnNmb3Jtc09iai5wYXJ0c1swXS53aWR0aDtcbiAgICAgICAgICAgICAgICBjc3MuaW1nLmhlaWdodCA9IHRyYW5zZm9ybXNPYmoucGFydHNbMF0uaGVpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY3NzLmltZy53aWR0aCA9IHRyYW5zZm9ybXNPYmouc3JjLndpZHRoO1xuICAgICAgICAgICAgICAgIGNzcy5pbWcuaGVpZ2h0ID0gdHJhbnNmb3Jtc09iai5zcmMuaGVpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLlNDQUxFX1RPX0ZJVDpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX0ZJVF9XSURUSDpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX0ZJVF9IRUlHSFQ6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9GVUxMOlxuICAgICAgICAgICAgY3NzLmltZy53aWR0aCA9IHRhcmdldC53aWR0aDtcbiAgICAgICAgICAgIGNzcy5pbWcuaGVpZ2h0ID0gdGFyZ2V0LmhlaWdodDtcbiAgICAgICAgICAgIGNzcy5pbWcub2JqZWN0Rml0ID0gJ2NvbnRhaW4nO1xuICAgICAgICAgICAgY3NzLmltZy5vYmplY3RQb3NpdGlvbiA9XG4gICAgICAgICAgICAgICAgYWxpZ25UeXBlVG9Qb3NpdGlvblN0clthbGlnblR5cGVdIHx8ICd1bnNldCc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgLy8gQkdfTk9STUFMIGlzIGEgc2l0ZWJhY2tncm91bmQgbGVnYWN5IGZvciBvcmlnaW5hbCBzaXplIGZpdHRpbmcgdHlwZS5cbiAgICAgICAgLy8gdGFyZ2V0IHdpZHRoIGFuZCBoZWlnaHQgd2VyZSBtb2RpZmllZCBpbiB0cmFuc2Zvcm0uanNcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX0JHX05PUk1BTDpcbiAgICAgICAgICAgIGNzcy5pbWcud2lkdGggPSAnMTAwJSc7XG4gICAgICAgICAgICBjc3MuaW1nLmhlaWdodCA9ICcxMDAlJztcbiAgICAgICAgICAgIGNzcy5pbWcub2JqZWN0Rml0ID0gJ25vbmUnO1xuICAgICAgICAgICAgY3NzLmltZy5vYmplY3RQb3NpdGlvbiA9XG4gICAgICAgICAgICAgICAgYWxpZ25UeXBlVG9Qb3NpdGlvblN0clthbGlnblR5cGVdIHx8ICd1bnNldCc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuU1RSRVRDSDpcbiAgICAgICAgICAgIGNzcy5pbWcud2lkdGggPSB0YXJnZXQud2lkdGg7XG4gICAgICAgICAgICBjc3MuaW1nLmhlaWdodCA9IHRhcmdldC5oZWlnaHQ7XG4gICAgICAgICAgICBjc3MuaW1nLm9iamVjdEZpdCA9ICdmaWxsJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5TQ0FMRV9UT19GSUxMOlxuICAgICAgICAgICAgY3NzLmltZy53aWR0aCA9IHRhcmdldC53aWR0aDtcbiAgICAgICAgICAgIGNzcy5pbWcuaGVpZ2h0ID0gdGFyZ2V0LmhlaWdodDtcbiAgICAgICAgICAgIGNzcy5pbWcub2JqZWN0Rml0ID0gJ2NvdmVyJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICAvLyBzZXQgYWxpZ25tZW50IGluIGEgcHJpdmF0ZSBjYXNlIHdoZXJlIHRoZSBpbWFnZSBzcmMgaXMgc21hbGxlciB0aGFuIHRoZSBpbWFnZSBjb250YWluZXIsXG4gICAgaWYgKHR5cGVvZiBjc3MuaW1nLndpZHRoID09PSAnbnVtYmVyJyAmJlxuICAgICAgICB0eXBlb2YgY3NzLmltZy5oZWlnaHQgPT09ICdudW1iZXInICYmXG4gICAgICAgIChjc3MuaW1nLndpZHRoICE9PSB0YXJnZXQud2lkdGggfHwgY3NzLmltZy5oZWlnaHQgIT09IHRhcmdldC5oZWlnaHQpKSB7XG4gICAgICAgIGNvbnN0IHZlcnRpY2FsTWlkZGxlID0gTWF0aC5yb3VuZCgodGFyZ2V0LmhlaWdodCAtIGNzcy5pbWcuaGVpZ2h0KSAvIDIpO1xuICAgICAgICBjb25zdCBob3Jpem9udGFsTWlkZGxlID0gTWF0aC5yb3VuZCgodGFyZ2V0LndpZHRoIC0gY3NzLmltZy53aWR0aCkgLyAyKTtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihjc3MuaW1nLCBhbGlnbWVudERlZmF1bHRzLCBhbGlnblR5cGVUb1Bvc2l0aW9uKHZlcnRpY2FsTWlkZGxlLCBob3Jpem9udGFsTWlkZGxlLCB0YXJnZXQpW2FsaWduVHlwZV0pO1xuICAgIH1cbiAgICByZXR1cm4gYXR0cmlidXRlcztcbn1cbmV4cG9ydCB7IGdldENTUyBhcyBnZXQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWltZ0F0dHJpYnV0ZXMuanMubWFwIiwiaW1wb3J0IHsgZml0dGluZ1R5cGVzLCBhbGlnblR5cGVzLCB0cmFuc2Zvcm1UeXBlcywgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2ltYWdlU2VydmljZUNvbnN0YW50cyc7XG5pbXBvcnQgeyBnZXREaW1lbnNpb24sIGlzSW1hZ2VUcmFuc2Zvcm1BcHBsaWNhYmxlLCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvaW1hZ2VTZXJ2aWNlVXRpbHMnO1xuLyogZXNsaW50LWRpc2FibGUgaW5kZW50ICovXG4vKipcbiAqIGdldCBDU1Mgb3IgU1ZHIGF0dHJpYnV0ZXMgdG8gYmUgdXNlZCBpbiB0aGUgYnJvd3NlclxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybU9iamVjdH0gIHRyYW5zZm9ybXNPYmogIHRyYW5zZm9ybSBwYXJ0cyBvYmplY3RcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1UYXJnZXR9ICB0YXJnZXRcbiAqXG4gKiBAcmV0dXJucyB7U1ZHSW1hZ2VBdHRyaWJ1dGVzfVxuICovXG5mdW5jdGlvbiBnZXRTdmdBdHRyKHRyYW5zZm9ybXNPYmosIHRhcmdldCkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB7XG4gICAgICAgIGNzczoge1xuICAgICAgICAgICAgY29udGFpbmVyOiB7fSxcbiAgICAgICAgfSxcbiAgICAgICAgYXR0cjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiB7fSxcbiAgICAgICAgICAgIGltZzoge30sXG4gICAgICAgIH0sXG4gICAgfTtcbiAgICBjb25zdCB7IGNzcywgYXR0ciB9ID0gYXR0cmlidXRlcztcbiAgICBjb25zdCB7IGZpdHRpbmdUeXBlIH0gPSB0cmFuc2Zvcm1zT2JqO1xuICAgIGNvbnN0IGFsaWduVHlwZSA9IHRhcmdldC5hbGlnbm1lbnQ7XG4gICAgY29uc3QgeyB3aWR0aDogc291cmNlV2lkdGgsIGhlaWdodDogc291cmNlSGVpZ2h0IH0gPSB0cmFuc2Zvcm1zT2JqLnNyYztcbiAgICBsZXQgaW1hZ2VTY2FsZTtcbiAgICBjc3MuY29udGFpbmVyLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcbiAgICAvLyBwb3B1bGF0ZSBTVkcgYXR0cmlidXRlcyBvYmplY3RcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGluZGVudFxuICAgIHN3aXRjaCAoZml0dGluZ1R5cGUpIHtcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuT1JJR0lOQUxfU0laRTpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX09SSUdJTkFMX1NJWkU6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLlRJTEU6XG4gICAgICAgICAgICBpZiAodHJhbnNmb3Jtc09iai5wYXJ0cyAmJiB0cmFuc2Zvcm1zT2JqLnBhcnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGF0dHIuaW1nLndpZHRoID0gdHJhbnNmb3Jtc09iai5wYXJ0c1swXS53aWR0aDtcbiAgICAgICAgICAgICAgICBhdHRyLmltZy5oZWlnaHQgPSB0cmFuc2Zvcm1zT2JqLnBhcnRzWzBdLmhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGF0dHIuaW1nLndpZHRoID0gc291cmNlV2lkdGg7XG4gICAgICAgICAgICAgICAgYXR0ci5pbWcuaGVpZ2h0ID0gc291cmNlSGVpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXR0ci5pbWcucHJlc2VydmVBc3BlY3RSYXRpbyA9ICd4TWlkWU1pZCBzbGljZSc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuU0NBTEVfVE9fRklUOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfRklUX1dJRFRIOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfRklUX0hFSUdIVDpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX0ZVTEw6XG4gICAgICAgICAgICBhdHRyLmltZy53aWR0aCA9ICcxMDAlJztcbiAgICAgICAgICAgIGF0dHIuaW1nLmhlaWdodCA9ICcxMDAlJztcbiAgICAgICAgICAgIGF0dHIuaW1nLnRyYW5zZm9ybSA9ICcnO1xuICAgICAgICAgICAgYXR0ci5pbWcucHJlc2VydmVBc3BlY3RSYXRpbyA9ICcnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLlNUUkVUQ0g6XG4gICAgICAgICAgICBhdHRyLmltZy53aWR0aCA9IHRhcmdldC53aWR0aDtcbiAgICAgICAgICAgIGF0dHIuaW1nLmhlaWdodCA9IHRhcmdldC5oZWlnaHQ7XG4gICAgICAgICAgICBhdHRyLmltZy54ID0gMDtcbiAgICAgICAgICAgIGF0dHIuaW1nLnkgPSAwO1xuICAgICAgICAgICAgYXR0ci5pbWcudHJhbnNmb3JtID0gJyc7XG4gICAgICAgICAgICBhdHRyLmltZy5wcmVzZXJ2ZUFzcGVjdFJhdGlvID0gJ25vbmUnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLlNDQUxFX1RPX0ZJTEw6XG4gICAgICAgICAgICBpZiAoIWlzSW1hZ2VUcmFuc2Zvcm1BcHBsaWNhYmxlKHRyYW5zZm9ybXNPYmouc3JjLmlkKSkge1xuICAgICAgICAgICAgICAgIGltYWdlU2NhbGUgPSBnZXREaW1lbnNpb24oc291cmNlV2lkdGgsIHNvdXJjZUhlaWdodCwgdGFyZ2V0LndpZHRoLCB0YXJnZXQuaGVpZ2h0LCB0cmFuc2Zvcm1UeXBlcy5GSUxMKTtcbiAgICAgICAgICAgICAgICBhdHRyLmltZy53aWR0aCA9IGltYWdlU2NhbGUud2lkdGg7XG4gICAgICAgICAgICAgICAgYXR0ci5pbWcuaGVpZ2h0ID0gaW1hZ2VTY2FsZS5oZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBhdHRyLmltZy53aWR0aCA9IHRhcmdldC53aWR0aDtcbiAgICAgICAgICAgICAgICBhdHRyLmltZy5oZWlnaHQgPSB0YXJnZXQuaGVpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXR0ci5pbWcueCA9IDA7XG4gICAgICAgICAgICBhdHRyLmltZy55ID0gMDtcbiAgICAgICAgICAgIGF0dHIuaW1nLnRyYW5zZm9ybSA9ICcnO1xuICAgICAgICAgICAgYXR0ci5pbWcucHJlc2VydmVBc3BlY3RSYXRpbyA9ICd4TWlkWU1pZCBzbGljZSc7XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgLy8gc2V0IGFsaWdubWVudCBmb3IgY2FzZXMgd2hlcmUgdGhlIHJlcXVlc3RlZCBzcmMgaXMgc21hbGxlciBvciBiaWdnZXIgdGhhbiB0aGUgdGFyZ2V0IGVsZW1lbnQsXG4gICAgaWYgKHR5cGVvZiBhdHRyLmltZy53aWR0aCA9PT0gJ251bWJlcicgJiZcbiAgICAgICAgdHlwZW9mIGF0dHIuaW1nLmhlaWdodCA9PT0gJ251bWJlcicgJiZcbiAgICAgICAgKGF0dHIuaW1nLndpZHRoICE9PSB0YXJnZXQud2lkdGggfHwgYXR0ci5pbWcuaGVpZ2h0ICE9PSB0YXJnZXQuaGVpZ2h0KSkge1xuICAgICAgICAvLyB4IGFuZCB5IHRvIHVzZSBpbiBzdmcgPHBhdHRlcm4+IGVsZW1lbnRcbiAgICAgICAgbGV0IHggPSAwO1xuICAgICAgICBsZXQgeSA9IDA7XG4gICAgICAgIGxldCByaWdodDtcbiAgICAgICAgbGV0IGJvdHRvbTtcbiAgICAgICAgaWYgKGZpdHRpbmdUeXBlID09PSBmaXR0aW5nVHlwZXMuVElMRSkge1xuICAgICAgICAgICAgcmlnaHQgPSB0YXJnZXQud2lkdGggJSBhdHRyLmltZy53aWR0aDtcbiAgICAgICAgICAgIGJvdHRvbSA9IHRhcmdldC5oZWlnaHQgJSBhdHRyLmltZy5oZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByaWdodCA9IHRhcmdldC53aWR0aCAtIGF0dHIuaW1nLndpZHRoO1xuICAgICAgICAgICAgYm90dG9tID0gdGFyZ2V0LmhlaWdodCAtIGF0dHIuaW1nLmhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjZW50ZXIgPSBNYXRoLnJvdW5kKHJpZ2h0IC8gMik7XG4gICAgICAgIGNvbnN0IG1pZGRsZSA9IE1hdGgucm91bmQoYm90dG9tIC8gMik7XG4gICAgICAgIHN3aXRjaCAoYWxpZ25UeXBlKSB7XG4gICAgICAgICAgICBjYXNlIGFsaWduVHlwZXMuVE9QX0xFRlQ6XG4gICAgICAgICAgICAgICAgeCA9IDA7XG4gICAgICAgICAgICAgICAgeSA9IDA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIGFsaWduVHlwZXMuVE9QOlxuICAgICAgICAgICAgICAgIHggPSBjZW50ZXI7XG4gICAgICAgICAgICAgICAgeSA9IDA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIGFsaWduVHlwZXMuVE9QX1JJR0hUOlxuICAgICAgICAgICAgICAgIHggPSByaWdodDtcbiAgICAgICAgICAgICAgICB5ID0gMDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgYWxpZ25UeXBlcy5MRUZUOlxuICAgICAgICAgICAgICAgIHggPSAwO1xuICAgICAgICAgICAgICAgIHkgPSBtaWRkbGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIGFsaWduVHlwZXMuQ0VOVEVSOlxuICAgICAgICAgICAgICAgIHggPSBjZW50ZXI7XG4gICAgICAgICAgICAgICAgeSA9IG1pZGRsZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgYWxpZ25UeXBlcy5SSUdIVDpcbiAgICAgICAgICAgICAgICB4ID0gcmlnaHQ7XG4gICAgICAgICAgICAgICAgeSA9IG1pZGRsZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgYWxpZ25UeXBlcy5CT1RUT01fTEVGVDpcbiAgICAgICAgICAgICAgICB4ID0gMDtcbiAgICAgICAgICAgICAgICB5ID0gYm90dG9tO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBhbGlnblR5cGVzLkJPVFRPTTpcbiAgICAgICAgICAgICAgICB4ID0gY2VudGVyO1xuICAgICAgICAgICAgICAgIHkgPSBib3R0b207XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIGFsaWduVHlwZXMuQk9UVE9NX1JJR0hUOlxuICAgICAgICAgICAgICAgIHggPSByaWdodDtcbiAgICAgICAgICAgICAgICB5ID0gYm90dG9tO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGF0dHIuaW1nLnggPSB4O1xuICAgICAgICBhdHRyLmltZy55ID0geTtcbiAgICB9XG4gICAgYXR0ci5jb250YWluZXIud2lkdGggPSB0YXJnZXQud2lkdGg7XG4gICAgYXR0ci5jb250YWluZXIuaGVpZ2h0ID0gdGFyZ2V0LmhlaWdodDtcbiAgICBhdHRyLmNvbnRhaW5lci52aWV3Qm94ID0gWzAsIDAsIHRhcmdldC53aWR0aCwgdGFyZ2V0LmhlaWdodF0uam9pbignICcpO1xuICAgIC8vIHJldHVybiBhdHRyaWJ1dGVzIG9iamVjdFxuICAgIHJldHVybiBhdHRyaWJ1dGVzO1xufVxuLyogZXNsaW50LWVuYWJsZSBpbmRlbnQgKi9cbmV4cG9ydCB7IGdldFN2Z0F0dHIgYXMgZ2V0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TVkdBdHRyaWJ1dGVzLmpzLm1hcCIsImltcG9ydCB7IGZpdHRpbmdUeXBlcywgdHJhbnNmb3JtVHlwZXMsIGFsaWduVHlwZXNNYXAsIH0gZnJvbSAnLi9pbWFnZVNlcnZpY2VDb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0QWxpZ25tZW50LCBnZXRTY2FsZUZhY3RvciwgZ2V0T3ZlcmxhcHBpbmdSZWN0LCBnZXRBbGlnbmVkUmVjdCwgZ2V0VHJhbnNmb3JtRGF0YSwgZ2V0Rm9jYWxQb2ludCwgfSBmcm9tICcuL2ltYWdlU2VydmljZVV0aWxzJztcbi8qKlxuICogcmVxdWVzdCBhbmFseXNpcywgcmV0dXJucyBwYXJzZWQgdHJhbnNmb3JtcyBvYmplY3RcbiAqIEBwYXJhbSB7b2JqZWN0fSAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybXNPYmpcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1Tb3VyY2V9ICAgIHNyY1xuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybVRhcmdldH0gICAgdGFyZ2V0XG4gKi9cbmZ1bmN0aW9uIHNldFRyYW5zZm9ybVBhcnRzKHRyYW5zZm9ybXNPYmosIHNyYywgdGFyZ2V0KSB7XG4gICAgbGV0IHJlY3Q7XG4gICAgLy8gY3JvcCBzb3VyY2UgaW1hZ2UgaWYgbmVlZGVkXG4gICAgLy8gc2V0IGNyb3AgcGFydCBhbmQgYWRqdXN0IHNvdXJjZSBkaW1lbnNpb25zXG4gICAgaWYgKHNyYy5jcm9wKSB7XG4gICAgICAgIHJlY3QgPSBnZXRPdmVybGFwcGluZ1JlY3Qoc3JjLCBzcmMuY3JvcCk7XG4gICAgICAgIGlmIChyZWN0KSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1zT2JqLnNyYy53aWR0aCA9IHJlY3Qud2lkdGg7XG4gICAgICAgICAgICB0cmFuc2Zvcm1zT2JqLnNyYy5oZWlnaHQgPSByZWN0LmhlaWdodDtcbiAgICAgICAgICAgIHRyYW5zZm9ybXNPYmouc3JjLmlzQ3JvcHBlZCA9IHRydWU7XG4gICAgICAgICAgICB0cmFuc2Zvcm1zT2JqLnBhcnRzLnB1c2goZ2V0Q3JvcFBhcnQocmVjdCkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIHNldCBhZGRpdGlvbmFsIHRyYW5zZm9ybSBwYXJ0XG4gICAgc3dpdGNoICh0cmFuc2Zvcm1zT2JqLmZpdHRpbmdUeXBlKSB7XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLlNDQUxFX1RPX0ZJVDpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX0ZJVF9XSURUSDpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX0ZJVF9IRUlHSFQ6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9GVUxMOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5GSVRfQU5EX1RJTEU6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9CR19GSVRfQU5EX1RJTEU6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9CR19GSVRfQU5EX1RJTEVfSE9SSVpPTlRBTDpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX0JHX0ZJVF9BTkRfVElMRV9WRVJUSUNBTDpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX0JHX05PUk1BTDpcbiAgICAgICAgICAgIC8vIGZpdFxuICAgICAgICAgICAgdHJhbnNmb3Jtc09iai5wYXJ0cy5wdXNoKGdldEZpdFBhcnQodHJhbnNmb3Jtc09iaiwgdGFyZ2V0KSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuU0NBTEVfVE9fRklMTDpcbiAgICAgICAgICAgIC8vIGZpbGxcbiAgICAgICAgICAgIHRyYW5zZm9ybXNPYmoucGFydHMucHVzaChnZXRGaWxsUGFydCh0cmFuc2Zvcm1zT2JqLCB0YXJnZXQpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5TVFJFVENIOlxuICAgICAgICAgICAgLy8gc3RyZXRjaFxuICAgICAgICAgICAgdHJhbnNmb3Jtc09iai5wYXJ0cy5wdXNoKGdldFN0cmV0Y2hQYXJ0KHRyYW5zZm9ybXNPYmosIHRhcmdldCkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLlRJTEVfSE9SSVpPTlRBTDpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuVElMRV9WRVJUSUNBTDpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuVElMRTpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX09SSUdJTkFMX1NJWkU6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLk9SSUdJTkFMX1NJWkU6XG4gICAgICAgICAgICAvLyB1c2UgY3JvcCB0cmFuc2Zvcm1cbiAgICAgICAgICAgIC8vIGlmIGNyb3Agb2Ygc291cmNlIGltYWdlIHdhcyByZXF1ZXN0ZWQgYWRqdXN0IGNyb3BwaW5nIHJlY3RhbmdsZVxuICAgICAgICAgICAgcmVjdCA9IGdldEFsaWduZWRSZWN0KHRyYW5zZm9ybXNPYmouc3JjLCB0YXJnZXQsIHRyYW5zZm9ybXNPYmouZm9jYWxQb2ludCwgdGFyZ2V0LmFsaWdubWVudCk7XG4gICAgICAgICAgICBpZiAodHJhbnNmb3Jtc09iai5zcmMuaXNDcm9wcGVkKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0cmFuc2Zvcm1zT2JqLnBhcnRzWzBdLCByZWN0KTtcbiAgICAgICAgICAgICAgICAvLyB1cGRhdGUgc291cmNlIHdpZHRoICYgaGVpZ2h0IGFjY29yZGluZ2x5XG4gICAgICAgICAgICAgICAgdHJhbnNmb3Jtc09iai5zcmMud2lkdGggPSByZWN0LndpZHRoO1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybXNPYmouc3JjLmhlaWdodCA9IHJlY3QuaGVpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3Jtc09iai5wYXJ0cy5wdXNoKGdldENyb3BQYXJ0KHJlY3QpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgLy8gaGFuZGxlcyBhIGxlZ2FjeSBidWcgb24gYmdJbWFnZVN0cmlwLCBiYWNrZ3JvdW5kIGh0bWwgdGFnXG4gICAgICAgIC8vIGNvbXBvbmVudCBGdWxsIFdpZHRoIFN0cmlwIHN0b3JlZCBpbmNvcnJlY3QgaW1hZ2Ugc291cmNlIHdpZHRoIGFuZCBoZWlnaHRcbiAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9TVFJJUF9USUxFX0hPUklaT05UQUw6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9TVFJJUF9USUxFX1ZFUlRJQ0FMOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfU1RSSVBfVElMRTpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX1NUUklQX09SSUdJTkFMX1NJWkU6XG4gICAgICAgICAgICAvLyBjcm9wIHJlcXVlc3Qgb2Ygc291cmNlIGltYWdlIGlzIG5vdCBzdXBwb3J0ZWRcbiAgICAgICAgICAgIC8vIHVzZSBsZWdhY3kgY3JvcFxuICAgICAgICAgICAgdHJhbnNmb3Jtc09iai5wYXJ0cy5wdXNoKGdldExlZ2FjeUNyb3BQYXJ0KHRhcmdldCkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9TVFJJUF9TQ0FMRV9UT19GSVQ6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9TVFJJUF9GSVRfQU5EX1RJTEU6XG4gICAgICAgICAgICAvLyBsZWdhY3kgZml0XG4gICAgICAgICAgICB0cmFuc2Zvcm1zT2JqLnBhcnRzLnB1c2goZ2V0TGVnYWN5Rml0UGFydCh0YXJnZXQpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfU1RSSVBfU0NBTEVfVE9fRklMTDpcbiAgICAgICAgICAgIC8vIGxlZ2FjeSBmaWxsXG4gICAgICAgICAgICB0cmFuc2Zvcm1zT2JqLnBhcnRzLnB1c2goZ2V0TGVnYWN5RmlsbFBhcnQodGFyZ2V0KSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG59XG4vKipcbiAqIHJldHVybnMgZml0IHBhcnQgb2YgdGhlIGltYWdlIHRyYW5zZm9ybSB1cmlcbiAqIEBwYXJhbSB7b2JqZWN0fSAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybXNPYmpcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1UYXJnZXR9ICAgIHRhcmdldFxuICpcbiAqIEByZXR1cm5zIHtUcmFuc2Zvcm1GaXRQYXJ0fVxuICovXG5mdW5jdGlvbiBnZXRGaXRQYXJ0KHRyYW5zZm9ybXNPYmosIHRhcmdldCkge1xuICAgIC8vIGNhbGN1bGF0ZSB0aGUgdHJhbnNmb3JtZWQgaW1hZ2Ugc2l6ZSBuZWVkZWRcbiAgICBjb25zdCB0cmFuc2Zvcm1lZERhdGEgPSBnZXRUcmFuc2Zvcm1EYXRhKHRyYW5zZm9ybXNPYmouc3JjLndpZHRoLCB0cmFuc2Zvcm1zT2JqLnNyYy5oZWlnaHQsIHRyYW5zZm9ybVR5cGVzLkZJVCwgdGFyZ2V0LCB0cmFuc2Zvcm1zT2JqLmRldmljZVBpeGVsUmF0aW8sIHRyYW5zZm9ybXNPYmoudXBzY2FsZU1ldGhvZCk7XG4gICAgY29uc3QgaXNNaXNzaW5nU3JjRGltZW5zaW9ucyA9ICF0cmFuc2Zvcm1zT2JqLnNyYy53aWR0aCB8fCAhdHJhbnNmb3Jtc09iai5zcmMuaGVpZ2h0O1xuICAgIGNvbnN0IHRyYW5zZm9ybVR5cGUgPSBpc01pc3NpbmdTcmNEaW1lbnNpb25zXG4gICAgICAgID8gdHJhbnNmb3JtVHlwZXMuRklUXG4gICAgICAgIDogdHJhbnNmb3JtVHlwZXMuRklMTDtcbiAgICAvLyByZXR1cm4gZml0IHRyYW5zZm9ybSBkYXRhXG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHJhbnNmb3JtVHlwZSxcbiAgICAgICAgd2lkdGg6IE1hdGgucm91bmQodHJhbnNmb3JtZWREYXRhLndpZHRoKSxcbiAgICAgICAgaGVpZ2h0OiBNYXRoLnJvdW5kKHRyYW5zZm9ybWVkRGF0YS5oZWlnaHQpLFxuICAgICAgICBhbGlnbm1lbnQ6IGFsaWduVHlwZXNNYXAuY2VudGVyLFxuICAgICAgICB1cHNjYWxlOiB0cmFuc2Zvcm1lZERhdGEuc2NhbGVGYWN0b3IgPiAxLFxuICAgICAgICBmb3JjZVVTTTogdHJhbnNmb3JtZWREYXRhLmZvcmNlVVNNLFxuICAgICAgICBzY2FsZUZhY3RvcjogdHJhbnNmb3JtZWREYXRhLnNjYWxlRmFjdG9yLFxuICAgICAgICBjc3NVcHNjYWxlTmVlZGVkOiB0cmFuc2Zvcm1lZERhdGEuY3NzVXBzY2FsZU5lZWRlZCxcbiAgICAgICAgdXBzY2FsZU1ldGhvZFZhbHVlOiB0cmFuc2Zvcm1lZERhdGEudXBzY2FsZU1ldGhvZFZhbHVlLFxuICAgIH07XG59XG4vKipcbiAqIHJldHVybnMgZmlsbCBwYXJ0IG9mIHRoZSBpbWFnZSB0cmFuc2Zvcm0gdXJpXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtT2JqZWN0fSB0cmFuc2Zvcm1zT2JqXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtVGFyZ2V0fSB0YXJnZXRcbiAqXG4gKiBAcmV0dXJucyB7VHJhbnNmb3JtRmlsbFBhcnR9XG4gKi9cbmZ1bmN0aW9uIGdldEZpbGxQYXJ0KHRyYW5zZm9ybXNPYmosIHRhcmdldCkge1xuICAgIC8vIGNhbGN1bGF0ZSB0aGUgdHJhbnNmb3JtZWQgaW1hZ2Ugc2l6ZSBuZWVkZWRcbiAgICBjb25zdCB0cmFuc2Zvcm1lZERhdGEgPSBnZXRUcmFuc2Zvcm1EYXRhKHRyYW5zZm9ybXNPYmouc3JjLndpZHRoLCB0cmFuc2Zvcm1zT2JqLnNyYy5oZWlnaHQsIHRyYW5zZm9ybVR5cGVzLkZJTEwsIHRhcmdldCwgdHJhbnNmb3Jtc09iai5kZXZpY2VQaXhlbFJhdGlvLCB0cmFuc2Zvcm1zT2JqLnVwc2NhbGVNZXRob2QpO1xuICAgIGNvbnN0IGZvY2FsUG9pbnQgPSBnZXRGb2NhbFBvaW50KHRyYW5zZm9ybXNPYmouZm9jYWxQb2ludCk7XG4gICAgY29uc3QgdHJhbnNmb3JtVHlwZSA9IGZvY2FsUG9pbnRcbiAgICAgICAgPyB0cmFuc2Zvcm1UeXBlcy5GSUxMX0ZPQ0FMXG4gICAgICAgIDogdHJhbnNmb3JtVHlwZXMuRklMTDtcbiAgICByZXR1cm4ge1xuICAgICAgICB0cmFuc2Zvcm1UeXBlLFxuICAgICAgICB3aWR0aDogTWF0aC5yb3VuZCh0cmFuc2Zvcm1lZERhdGEud2lkdGgpLFxuICAgICAgICBoZWlnaHQ6IE1hdGgucm91bmQodHJhbnNmb3JtZWREYXRhLmhlaWdodCksXG4gICAgICAgIGFsaWdubWVudDogZ2V0QWxpZ25tZW50KHRhcmdldCksXG4gICAgICAgIGZvY2FsUG9pbnRYOiBmb2NhbFBvaW50ICYmIGZvY2FsUG9pbnQueCxcbiAgICAgICAgZm9jYWxQb2ludFk6IGZvY2FsUG9pbnQgJiYgZm9jYWxQb2ludC55LFxuICAgICAgICB1cHNjYWxlOiB0cmFuc2Zvcm1lZERhdGEuc2NhbGVGYWN0b3IgPiAxLFxuICAgICAgICBmb3JjZVVTTTogdHJhbnNmb3JtZWREYXRhLmZvcmNlVVNNLFxuICAgICAgICBzY2FsZUZhY3RvcjogdHJhbnNmb3JtZWREYXRhLnNjYWxlRmFjdG9yLFxuICAgICAgICBjc3NVcHNjYWxlTmVlZGVkOiB0cmFuc2Zvcm1lZERhdGEuY3NzVXBzY2FsZU5lZWRlZCxcbiAgICAgICAgdXBzY2FsZU1ldGhvZFZhbHVlOiB0cmFuc2Zvcm1lZERhdGEudXBzY2FsZU1ldGhvZFZhbHVlLFxuICAgIH07XG59XG4vKipcbiAqIHJldHVybnMgZmlsbCBwYXJ0IG9mIHRoZSBpbWFnZSB0cmFuc2Zvcm0gdXJpXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtT2JqZWN0fSB0cmFuc2Zvcm1zT2JqXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtVGFyZ2V0fSB0YXJnZXRcbiAqXG4gKiBAcmV0dXJucyB7VHJhbnNmb3JtRml0UGFydH1cbiAqL1xuZnVuY3Rpb24gZ2V0U3RyZXRjaFBhcnQodHJhbnNmb3Jtc09iaiwgdGFyZ2V0KSB7XG4gICAgLy8gc3RyZXRjaCBkYXRhXG4gICAgY29uc3Qgc2NhbGVGYWN0b3IgPSBnZXRTY2FsZUZhY3Rvcih0cmFuc2Zvcm1zT2JqLnNyYy53aWR0aCwgdHJhbnNmb3Jtc09iai5zcmMuaGVpZ2h0LCB0YXJnZXQud2lkdGgsIHRhcmdldC5oZWlnaHQsIHRyYW5zZm9ybVR5cGVzLkZJTEwpO1xuICAgIGNvbnN0IGNsb25lZFRhcmdldCA9IHsgLi4udGFyZ2V0IH07XG4gICAgY2xvbmVkVGFyZ2V0LndpZHRoID0gdHJhbnNmb3Jtc09iai5zcmMud2lkdGggKiBzY2FsZUZhY3RvcjtcbiAgICBjbG9uZWRUYXJnZXQuaGVpZ2h0ID0gdHJhbnNmb3Jtc09iai5zcmMuaGVpZ2h0ICogc2NhbGVGYWN0b3I7XG4gICAgLy8gcmV0dXJuIHN0cmV0Y2ggcGFydFxuICAgIHJldHVybiBnZXRGaXRQYXJ0KHRyYW5zZm9ybXNPYmosIGNsb25lZFRhcmdldCk7XG59XG4vKipcbiAqIHJldHVybnMgY3JvcCBwYXJ0IG9mIHRoZSBpbWFnZSB0cmFuc2Zvcm0gdXJpXG4gKiBAcGFyYW0ge3t4OiBudW1iZXIsIHk6IG51bWJlciwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXJ9fSAgcmVjdCAgICAgeCwgeSwgd2lkdGgsIGhlaWdodFxuICpcbiAqIEByZXR1cm5zIHtUcmFuc2Zvcm1Dcm9wUGFydH1cbiAqL1xuZnVuY3Rpb24gZ2V0Q3JvcFBhcnQocmVjdCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIHRyYW5zZm9ybVR5cGU6IHRyYW5zZm9ybVR5cGVzLkNST1AsXG4gICAgICAgIHg6IE1hdGgucm91bmQocmVjdC54KSxcbiAgICAgICAgeTogTWF0aC5yb3VuZChyZWN0LnkpLFxuICAgICAgICB3aWR0aDogTWF0aC5yb3VuZChyZWN0LndpZHRoKSxcbiAgICAgICAgaGVpZ2h0OiBNYXRoLnJvdW5kKHJlY3QuaGVpZ2h0KSxcbiAgICAgICAgdXBzY2FsZTogZmFsc2UsXG4gICAgICAgIGZvcmNlVVNNOiBmYWxzZSxcbiAgICAgICAgc2NhbGVGYWN0b3I6IDEsXG4gICAgICAgIGNzc1Vwc2NhbGVOZWVkZWQ6IGZhbHNlLFxuICAgIH07XG59XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIGhhbmRsZXMgYSBsZWdhY3kgYnVnIG9uIGJnSW1hZ2VTdHJpcCwgYmFja2dyb3VuZCBodG1sIHRhZ1xuLy8gY29tcG9uZW50IEZ1bGwgV2lkdGggU3RyaXAgc3RvcmVkIGluY29ycmVjdCBpbWFnZSBzb3VyY2Ugd2lkdGggYW5kIGhlaWdodFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vKipcbiAqIHJldHVybnMgZml0IHBhcnQgb2YgdGhlIGltYWdlIHRyYW5zZm9ybSB1cmlcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1UYXJnZXR9ICAgIHRhcmdldFxuICpcbiAqIEByZXR1cm5zIHtUcmFuc2Zvcm1MZWdhY3lGaXRQYXJ0fVxuICovXG5mdW5jdGlvbiBnZXRMZWdhY3lGaXRQYXJ0KHRhcmdldCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIHRyYW5zZm9ybVR5cGU6IHRyYW5zZm9ybVR5cGVzLkZJVCxcbiAgICAgICAgd2lkdGg6IE1hdGgucm91bmQodGFyZ2V0LndpZHRoKSxcbiAgICAgICAgaGVpZ2h0OiBNYXRoLnJvdW5kKHRhcmdldC5oZWlnaHQpLFxuICAgICAgICB1cHNjYWxlOiBmYWxzZSxcbiAgICAgICAgZm9yY2VVU006IHRydWUsXG4gICAgICAgIHNjYWxlRmFjdG9yOiAxLFxuICAgICAgICBjc3NVcHNjYWxlTmVlZGVkOiBmYWxzZSxcbiAgICB9O1xufVxuLyoqXG4gKiByZXR1cm5zIGZpbGwgcGFydCBvZiB0aGUgaW1hZ2UgdHJhbnNmb3JtIHVyaVxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybVRhcmdldH0gICAgdGFyZ2V0XG4gKlxuICogQHJldHVybnMge1RyYW5zZm9ybUxlZ2FjeUZpbGxQYXJ0fVxuICovXG5mdW5jdGlvbiBnZXRMZWdhY3lGaWxsUGFydCh0YXJnZXQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICB0cmFuc2Zvcm1UeXBlOiB0cmFuc2Zvcm1UeXBlcy5MRUdBQ1lfRklMTCxcbiAgICAgICAgd2lkdGg6IE1hdGgucm91bmQodGFyZ2V0LndpZHRoKSxcbiAgICAgICAgaGVpZ2h0OiBNYXRoLnJvdW5kKHRhcmdldC5oZWlnaHQpLFxuICAgICAgICBhbGlnbm1lbnQ6IGdldEFsaWdubWVudCh0YXJnZXQpLFxuICAgICAgICB1cHNjYWxlOiBmYWxzZSxcbiAgICAgICAgZm9yY2VVU006IHRydWUsXG4gICAgICAgIHNjYWxlRmFjdG9yOiAxLFxuICAgICAgICBjc3NVcHNjYWxlTmVlZGVkOiBmYWxzZSxcbiAgICB9O1xufVxuLyoqXG4gKiByZXR1cm5zIGxlZ2FjeSBjcm9wIHBhcnQgb2YgdGhlIGltYWdlIHRyYW5zZm9ybSB1cmlcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1UYXJnZXR9ICAgICB0YXJnZXRcbiAqXG4gKiBAcmV0dXJucyB7VHJhbnNmb3JtTGVnYWN5Q3JvcFBhcnR9XG4gKi9cbmZ1bmN0aW9uIGdldExlZ2FjeUNyb3BQYXJ0KHRhcmdldCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIHRyYW5zZm9ybVR5cGU6IHRyYW5zZm9ybVR5cGVzLkxFR0FDWV9DUk9QLFxuICAgICAgICB3aWR0aDogTWF0aC5yb3VuZCh0YXJnZXQud2lkdGgpLFxuICAgICAgICBoZWlnaHQ6IE1hdGgucm91bmQodGFyZ2V0LmhlaWdodCksXG4gICAgICAgIGFsaWdubWVudDogZ2V0QWxpZ25tZW50KHRhcmdldCksXG4gICAgICAgIHVwc2NhbGU6IGZhbHNlLFxuICAgICAgICBmb3JjZVVTTTogZmFsc2UsXG4gICAgICAgIHNjYWxlRmFjdG9yOiAxLFxuICAgICAgICBjc3NVcHNjYWxlTmVlZGVkOiBmYWxzZSxcbiAgICB9O1xufVxuZXhwb3J0IHsgc2V0VHJhbnNmb3JtUGFydHMgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWltYWdlVHJhbnNmb3JtUGFydHMuanMubWFwIiwiaW1wb3J0IHsgbGFzdCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgZ2V0UHJlZmVycmVkSW1hZ2VRdWFsaXR5LCByb3VuZFRvRml4ZWQgfSBmcm9tICcuL2ltYWdlU2VydmljZVV0aWxzJztcbmltcG9ydCB7IGRlZmF1bHRVU00sIGZpbGVUeXBlLCBpbWFnZUZpbHRlcnMsIHRyYW5zZm9ybVR5cGVzLCB9IGZyb20gJy4vaW1hZ2VTZXJ2aWNlQ29uc3RhbnRzJztcbi8qKlxuICogcmV0dXJucyBpbWFnZSBmaWx0ZXJzIHBhcnQgb2YgdGhlIGltYWdlIHRyYW5zZm9ybSB1cmlcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1PYmplY3R9ICAgIHRyYW5zZm9ybXNPYmogICAgdHJhbnNmb3JtIHBhcnRzIG9iamVjdFxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybU9wdGlvbnN9ICAgW29wdGlvbnNdXG4gKi9cbmZ1bmN0aW9uIHNldFRyYW5zZm9ybU9wdGlvbnModHJhbnNmb3Jtc09iaiwgb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgIC8vIG9wdGlvbnMgLSBnZW5lcmFsXG4gICAgdHJhbnNmb3Jtc09iai5xdWFsaXR5ID0gZ2V0UXVhbGl0eSh0cmFuc2Zvcm1zT2JqLCBvcHRpb25zKTtcbiAgICB0cmFuc2Zvcm1zT2JqLnByb2dyZXNzaXZlID0gZ2V0UHJvZ3Jlc3NpdmUob3B0aW9ucyk7XG4gICAgdHJhbnNmb3Jtc09iai53YXRlcm1hcmsgPSBnZXRXYXRlcm1hcmsob3B0aW9ucyk7XG4gICAgdHJhbnNmb3Jtc09iai5hdXRvRW5jb2RlID0gb3B0aW9ucy5hdXRvRW5jb2RlID8/IHRydWU7XG4gICAgdHJhbnNmb3Jtc09iai5lbmNvZGluZyA9IG9wdGlvbnM/LmVuY29kaW5nO1xuICAgIC8vIG9wdGlvbnMgLSBmaWx0ZXJzICYgYWRqdXN0bWVudHNcbiAgICB0cmFuc2Zvcm1zT2JqLnVuc2hhcnBNYXNrID0gZ2V0VW5zaGFycE1hc2sodHJhbnNmb3Jtc09iaiwgb3B0aW9ucyk7XG4gICAgdHJhbnNmb3Jtc09iai5maWx0ZXJzID0gZ2V0RmlsdGVycyhvcHRpb25zKTtcbn1cbi8qKlxuICpcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1PcHRpb25zfSAgIG9wdGlvbnNcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGdldFdhdGVybWFyayhvcHRpb25zKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMud2F0ZXJtYXJrO1xufVxuLyoqXG4gKiByZXR1cm5zIHByb2dyZXNzaXZlIGlmIHJlcXVpcmVkXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtT3B0aW9uc30gICBvcHRpb25zXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGdldFByb2dyZXNzaXZlKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gb3B0aW9ucy5wcm9ncmVzc2l2ZSAhPT0gZmFsc2U7XG59XG4vKipcbiAqIHJldHVybnMgaW1hZ2UgZmlsdGVycyBwYXJ0IG9mIHRoZSBpbWFnZSB0cmFuc2Zvcm0gdXJpXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtT2JqZWN0fSAgICB0cmFuc2Zvcm1zT2JqICAgIHRyYW5zZm9ybSBwYXJ0cyBvYmplY3RcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1PcHRpb25zfSAgIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5mdW5jdGlvbiBnZXRRdWFsaXR5KHRyYW5zZm9ybXNPYmosIG9wdGlvbnMpIHtcbiAgICBjb25zdCBpc1BORyA9IHRyYW5zZm9ybXNPYmouZmlsZVR5cGUgPT09IGZpbGVUeXBlLlBORztcbiAgICBjb25zdCBpc0pQRyA9IHRyYW5zZm9ybXNPYmouZmlsZVR5cGUgPT09IGZpbGVUeXBlLkpQRztcbiAgICBjb25zdCBpc1dFQlAgPSB0cmFuc2Zvcm1zT2JqLmZpbGVUeXBlID09PSBmaWxlVHlwZS5XRUJQO1xuICAgIGNvbnN0IGlzQVZJRiA9IHRyYW5zZm9ybXNPYmouZmlsZVR5cGUgPT09IGZpbGVUeXBlLkFWSUY7XG4gICAgY29uc3QgaXNRdWFsaXR5U3VwcG9ydGVkID0gaXNKUEcgfHwgaXNQTkcgfHwgaXNXRUJQIHx8IGlzQVZJRjtcbiAgICBpZiAoaXNRdWFsaXR5U3VwcG9ydGVkKSB7XG4gICAgICAgIGNvbnN0IHRyYW5zZm9ybURhdGEgPSBsYXN0KHRyYW5zZm9ybXNPYmoucGFydHMpO1xuICAgICAgICBjb25zdCBkZWZhdWx0UXVhbGl0eSA9IGdldFByZWZlcnJlZEltYWdlUXVhbGl0eSh0cmFuc2Zvcm1EYXRhLndpZHRoLCB0cmFuc2Zvcm1EYXRhLmhlaWdodCk7XG4gICAgICAgIGxldCBxdWFsaXR5ID0gb3B0aW9ucy5xdWFsaXR5ICYmIG9wdGlvbnMucXVhbGl0eSA+PSA1ICYmIG9wdGlvbnMucXVhbGl0eSA8PSA5MFxuICAgICAgICAgICAgPyBvcHRpb25zLnF1YWxpdHlcbiAgICAgICAgICAgIDogZGVmYXVsdFF1YWxpdHk7XG4gICAgICAgIC8vIGluY3JlYXNlIHF1YWxpdHkgYnkgNSBmb3Igd2VicCBpbWFnZXNcbiAgICAgICAgcXVhbGl0eSA9IGlzUE5HID8gcXVhbGl0eSArIDUgOiBxdWFsaXR5O1xuICAgICAgICByZXR1cm4gcXVhbGl0eTtcbiAgICB9XG4gICAgLy8gcXVhbGl0eSBub3Qgc3VwcG9ydGVkXG4gICAgcmV0dXJuIDA7XG59XG4vKipcbiAqIHJldHVybnMgdGhlIGRlc2lyZWQgdHJhbnNmb3JtZWQgaW1hZ2UgZmlsdGVyc1xuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybU9wdGlvbnN9ICAgb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHtvYmplY3R9XG4gKi9cbmZ1bmN0aW9uIGdldEZpbHRlcnMob3B0aW9ucykge1xuICAgIGNvbnN0IGZpbHRlck9wdGlvbnMgPSBvcHRpb25zLmZpbHRlcnMgfHwge307XG4gICAgY29uc3QgZmlsdGVycyA9IHt9O1xuICAgIC8vIGNvbnRyYXN0XG4gICAgaWYgKGlzVmFsaWRJbWFnZUZpbHRlcihmaWx0ZXJPcHRpb25zW2ltYWdlRmlsdGVycy5DT05UUkFTVF0sIC0xMDAsIDEwMCkpIHtcbiAgICAgICAgZmlsdGVyc1tpbWFnZUZpbHRlcnMuQ09OVFJBU1RdID0gZmlsdGVyT3B0aW9uc1tpbWFnZUZpbHRlcnMuQ09OVFJBU1RdO1xuICAgIH1cbiAgICAvLyBicmlnaHRuZXNzXG4gICAgaWYgKGlzVmFsaWRJbWFnZUZpbHRlcihmaWx0ZXJPcHRpb25zW2ltYWdlRmlsdGVycy5CUklHSFRORVNTXSwgLTEwMCwgMTAwKSkge1xuICAgICAgICBmaWx0ZXJzW2ltYWdlRmlsdGVycy5CUklHSFRORVNTXSA9IGZpbHRlck9wdGlvbnNbaW1hZ2VGaWx0ZXJzLkJSSUdIVE5FU1NdO1xuICAgIH1cbiAgICAvLyBzYXR1cmF0aW9uXG4gICAgaWYgKGlzVmFsaWRJbWFnZUZpbHRlcihmaWx0ZXJPcHRpb25zW2ltYWdlRmlsdGVycy5TQVRVUkFUSU9OXSwgLTEwMCwgMTAwKSkge1xuICAgICAgICBmaWx0ZXJzW2ltYWdlRmlsdGVycy5TQVRVUkFUSU9OXSA9IGZpbHRlck9wdGlvbnNbaW1hZ2VGaWx0ZXJzLlNBVFVSQVRJT05dO1xuICAgIH1cbiAgICAvLyBodWVcbiAgICBpZiAoaXNWYWxpZEltYWdlRmlsdGVyKGZpbHRlck9wdGlvbnNbaW1hZ2VGaWx0ZXJzLkhVRV0sIC0xODAsIDE4MCkpIHtcbiAgICAgICAgZmlsdGVyc1tpbWFnZUZpbHRlcnMuSFVFXSA9IGZpbHRlck9wdGlvbnNbaW1hZ2VGaWx0ZXJzLkhVRV07XG4gICAgfVxuICAgIC8vIGJsdXJcbiAgICBpZiAoaXNWYWxpZEltYWdlRmlsdGVyKGZpbHRlck9wdGlvbnNbaW1hZ2VGaWx0ZXJzLkJMVVJdLCAwLCAxMDApKSB7XG4gICAgICAgIGZpbHRlcnNbaW1hZ2VGaWx0ZXJzLkJMVVJdID0gZmlsdGVyT3B0aW9uc1tpbWFnZUZpbHRlcnMuQkxVUl07XG4gICAgfVxuICAgIHJldHVybiBmaWx0ZXJzO1xufVxuLyoqXG4gKiBpbmRpY2F0ZXMgaWYgcmVxdWVzdGVkIGZpbHRlciB2YWx1ZSBpcyB2YWxpZFxuICogQHBhcmFtIHtudW1iZXJ8dW5kZWZpbmVkfSAgZmlsdGVyVmFsdWUgICAgIGZpbHRlcidzIHZhbHVlXG4gKiBAcGFyYW0ge251bWJlcn0gIG1pblZhbHVlICAgICAgICBtaW4gcmFuZ2VcbiAqIEBwYXJhbSB7bnVtYmVyfSAgbWF4VmFsdWUgICAgICAgIG1heCByYW5nZVxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc1ZhbGlkSW1hZ2VGaWx0ZXIoZmlsdGVyVmFsdWUsIG1pblZhbHVlLCBtYXhWYWx1ZSkge1xuICAgIC8vIGNoZWNrIGlmIGZpbHRlciBuYW1lIGFuZCBmaWx0ZXIgdmFsdWVzIHJhbmdlIHZhbGlkXG4gICAgcmV0dXJuICh0eXBlb2YgZmlsdGVyVmFsdWUgPT09ICdudW1iZXInICYmXG4gICAgICAgICFpc05hTihmaWx0ZXJWYWx1ZSkgJiZcbiAgICAgICAgZmlsdGVyVmFsdWUgIT09IDAgJiZcbiAgICAgICAgZmlsdGVyVmFsdWUgPj0gbWluVmFsdWUgJiZcbiAgICAgICAgZmlsdGVyVmFsdWUgPD0gbWF4VmFsdWUpO1xufVxuLyoqXG4gKiByZXR1cm5zIHRoZSBkZXNpcmVkIHRyYW5zZm9ybWVkIGltYWdlIHVuU2hhcnBNYXNrIHZhbHVlc1xuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybU9iamVjdH0gICAgdHJhbnNmb3Jtc09iaiAgICB0cmFuc2Zvcm0gcGFydHMgb2JqZWN0XG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtT3B0aW9uc30gICBvcHRpb25zXG4gKlxuICogQHJldHVybnMge29iamVjdH1cbiAqL1xuZnVuY3Rpb24gZ2V0VW5zaGFycE1hc2sodHJhbnNmb3Jtc09iaiwgb3B0aW9ucykge1xuICAgIC8vIElmIG9wdGlvbnMudW5zaGFycE1hc2sgaXMgYSB2YWxpZCB2YWx1ZSwgdXNlIGl0XG4gICAgaWYgKGlzVVNNVmFsaWQob3B0aW9ucy51bnNoYXJwTWFzaykpIHtcbiAgICAgICAgLy8gSWYgd2UgZ290IHVzbSwgY2hhbmdlIHZhbHVlcyB0byBoYXZlIHRyYWlsaW5nIHplcm9zICguMDApLCBlbHNlIHJldHVybiB1bmRlZmluZWRcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJhZGl1czogcm91bmRUb0ZpeGVkKG9wdGlvbnMudW5zaGFycE1hc2s/LnJhZGl1cywgMiksXG4gICAgICAgICAgICBhbW91bnQ6IHJvdW5kVG9GaXhlZChvcHRpb25zLnVuc2hhcnBNYXNrPy5hbW91bnQsIDIpLFxuICAgICAgICAgICAgdGhyZXNob2xkOiByb3VuZFRvRml4ZWQob3B0aW9ucy51bnNoYXJwTWFzaz8udGhyZXNob2xkLCAyKSxcbiAgICAgICAgfTtcbiAgICAgICAgLy8gaWYgb3B0aW9ucy51bnNoYXJwTWFzayBpcyBub3QgYWxsIHplcm9zIGFuZCBub3QgdmFsaWQgYW5kIHVzbSBzaG91bGQgYmUgdXNlZCwgdXNlIGRlZmF1bHRcbiAgICB9XG4gICAgZWxzZSBpZiAoIWlzWmVyb1VTTShvcHRpb25zLnVuc2hhcnBNYXNrKSAmJiBpc1VTTU5lZWRlZCh0cmFuc2Zvcm1zT2JqKSkge1xuICAgICAgICByZXR1cm4gZGVmYXVsdFVTTTtcbiAgICB9XG4gICAgcmV0dXJuO1xufVxuLyoqXG4gKiBpbmRpY2F0ZXMgaWYgdXNtIGlzIG5lZWRlZFxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybU9iamVjdH0gICAgICB0cmFuc2Zvcm1zT2JqICAgdHJhbnNmb3JtIHBhcnRzIG9iamVjdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc1VTTU5lZWRlZCh0cmFuc2Zvcm1zT2JqKSB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gZG8gbm90IGFwcGx5IHVzbSBpZiB0cmFuc2Zvcm1lZCBpbWFnZSB3aWR0aCAmIGhlaWdodCBpcyBzYW1lIGFzIHNvdXJjZSBpbWFnZSBvciBsYXJnZXJcbiAgICAvLyBhbmQgbm8gZm9yY2UgdXNtIGlzIGRlc2lyZWRcbiAgICAvLyBhbmQgdHJhbnNmb3JtIHR5cGUgaXMgbm90IGZpdFxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IHRyYW5zZm9ybVBhcnQgPSBsYXN0KHRyYW5zZm9ybXNPYmoucGFydHMpO1xuICAgIGNvbnN0IHVwc2NhbGUgPSB0cmFuc2Zvcm1QYXJ0LnNjYWxlRmFjdG9yID49IDE7XG4gICAgLy8gcmV0dXJuIGlmIHVzbSBpcyBuZWVkZWRcbiAgICByZXR1cm4gKCF1cHNjYWxlIHx8XG4gICAgICAgIHRyYW5zZm9ybVBhcnQuZm9yY2VVU00gfHxcbiAgICAgICAgdHJhbnNmb3JtUGFydC50cmFuc2Zvcm1UeXBlID09PSB0cmFuc2Zvcm1UeXBlcy5GSVQpO1xufVxuLyoqXG4gKiBpbmRpY2F0ZXMgaWYgYWxsIHVzbSB2YWx1ZXMgYXJlIHByZXNlbnRlZCBhbmQgaW4gcmFuZ2VcbiAqIEBwYXJhbSB7T3B0aW9uVW5zaGFycE1hc2t8dW5kZWZpbmVkfSAgdXNtICAgICB1bnNoYXJwIG1hc2tcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNVU01WYWxpZCh1c20pIHtcbiAgICB1c20gPSB1c20gfHwge307XG4gICAgY29uc3QgcmFkaXVzID0gdHlwZW9mIHVzbS5yYWRpdXMgPT09ICdudW1iZXInICYmXG4gICAgICAgICFpc05hTih1c20ucmFkaXVzKSAmJlxuICAgICAgICB1c20ucmFkaXVzID49IDAuMSAmJlxuICAgICAgICB1c20ucmFkaXVzIDw9IDUwMDtcbiAgICBjb25zdCBhbW91bnQgPSB0eXBlb2YgdXNtLmFtb3VudCA9PT0gJ251bWJlcicgJiZcbiAgICAgICAgIWlzTmFOKHVzbS5hbW91bnQpICYmXG4gICAgICAgIHVzbS5hbW91bnQgPj0gMCAmJlxuICAgICAgICB1c20uYW1vdW50IDw9IDEwO1xuICAgIGNvbnN0IHRocmVzaG9sZCA9IHR5cGVvZiB1c20udGhyZXNob2xkID09PSAnbnVtYmVyJyAmJlxuICAgICAgICAhaXNOYU4odXNtLnRocmVzaG9sZCkgJiZcbiAgICAgICAgdXNtLnRocmVzaG9sZCA+PSAwICYmXG4gICAgICAgIHVzbS50aHJlc2hvbGQgPD0gMjU1O1xuICAgIC8vIHJldHVybiBpcyBhIHZhbGlkIFVTTSBkYXRhXG4gICAgcmV0dXJuIHJhZGl1cyAmJiBhbW91bnQgJiYgdGhyZXNob2xkO1xufVxuLyoqXG4gKiBpbmRpY2F0ZXMgaWYgYWxsIHVzbSB2YWx1ZXMgYXJlIHByZXNlbnRlZCBhbmQgYXJlIHplcm8uIGFuIGV4cGxpY2l0IHJlcXVlc3QgdG8gbm90IGFwcGx5IHVzbVxuICogQHBhcmFtIHtPcHRpb25VbnNoYXJwTWFza3x1bmRlZmluZWR9ICB1c20gICAgIHVuc2hhcnAgbWFza1xuICpcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc1plcm9VU00odXNtKSB7XG4gICAgdXNtID0gdXNtIHx8IHt9O1xuICAgIHJldHVybiAodHlwZW9mIHVzbS5yYWRpdXMgPT09ICdudW1iZXInICYmXG4gICAgICAgICFpc05hTih1c20ucmFkaXVzKSAmJlxuICAgICAgICB1c20ucmFkaXVzID09PSAwICYmXG4gICAgICAgIHR5cGVvZiB1c20uYW1vdW50ID09PSAnbnVtYmVyJyAmJlxuICAgICAgICAhaXNOYU4odXNtLmFtb3VudCkgJiZcbiAgICAgICAgdXNtLmFtb3VudCA9PT0gMCAmJlxuICAgICAgICB0eXBlb2YgdXNtLnRocmVzaG9sZCA9PT0gJ251bWJlcicgJiZcbiAgICAgICAgIWlzTmFOKHVzbS50aHJlc2hvbGQpICYmXG4gICAgICAgIHVzbS50aHJlc2hvbGQgPT09IDApO1xufVxuZXhwb3J0IHsgc2V0VHJhbnNmb3JtT3B0aW9ucyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW1hZ2VUcmFuc2Zvcm1PcHRpb25zLmpzLm1hcCIsImltcG9ydCB7IGlzU0VPQm90LCBnZXRGaWxlVHlwZSwgZ2V0RmlsZU5hbWUsIGdldEZpbGVFeHRlbnNpb24sIGdldERldmljZVBpeGVsUmF0aW8sIGdldFVwc2NhbGVTdHJpbmcsIGlzSW1hZ2VUcmFuc2Zvcm1BcHBsaWNhYmxlLCBpbWFnZUlzQW5pbWF0ZWQsIH0gZnJvbSAnLi4vaGVscGVycy9pbWFnZVNlcnZpY2VVdGlscyc7XG5pbXBvcnQgeyBpc01vYmlsZSB9IGZyb20gJy4uL2hlbHBlcnMvYnJvd3NlckZlYXR1cmVTdXBwb3J0JztcbmltcG9ydCB7IHNldFRyYW5zZm9ybVBhcnRzIH0gZnJvbSAnLi4vaGVscGVycy9pbWFnZVRyYW5zZm9ybVBhcnRzJztcbmltcG9ydCB7IHNldFRyYW5zZm9ybU9wdGlvbnMgfSBmcm9tICcuLi9oZWxwZXJzL2ltYWdlVHJhbnNmb3JtT3B0aW9ucyc7XG5pbXBvcnQgeyBNT0JJTEVfTUFYX0JHX1NJVEVfTEVHQUNZX1dJRFRILCBEU0tUUF9NQVhfQkdfU0lURV9MRUdBQ1lfV0lEVEgsIE1PQklMRV9NQVhfQkdfU0lURV9MRUdBQ1lfSEVJR0hULCBEU0tUUF9NQVhfQkdfU0lURV9MRUdBQ1lfSEVJR0hULCBmaXR0aW5nVHlwZXMsIH0gZnJvbSAnLi4vaGVscGVycy9pbWFnZVNlcnZpY2VDb25zdGFudHMnO1xuLyoqXG4gKiByZXR1cm5zIGltYWdlIHRyYW5zZm9ybSBkYXRhXG4gKlxuICogQHBhcmFtIHtGaXR0aW5nVHlwZX0gICAgICAgICAgICAgZml0dGluZ1R5cGUgICAgICAgICBpbWFnZVNlcnZpY2VzVHlwZXMuZml0dGluZ1R5cGVzXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtU291cmNlfSAgICBzcmMgICAgICAgICAgICAgICAgIHNvdXJjZSBpbWFnZVxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybVRhcmdldH0gICAgdGFyZ2V0ICAgICAgICAgICAgICB0YXJnZXQgY29tcG9uZW50XG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtT3B0aW9uc30gICBbb3B0aW9uc10gICAgICAgICAgIHRyYW5zZm9ybSBvcHRpb25zXG4gKlxuICogQHJldHVybnMge0ltYWdlVHJhbnNmb3JtT2JqZWN0fVxuICovXG5mdW5jdGlvbiBnZXRUcmFuc2Zvcm0oZml0dGluZ1R5cGUsIHNyYywgdGFyZ2V0LCBvcHRpb25zKSB7XG4gICAgY29uc3QgX2lzU0VPQm90ID0gaXNTRU9Cb3Qob3B0aW9ucyk7XG4gICAgY29uc3QgZmlsZVR5cGUgPSBnZXRGaWxlVHlwZShzcmMuaWQpO1xuICAgIGNvbnN0IGZpbGVOYW1lID0gZ2V0RmlsZU5hbWUoc3JjLmlkLCBzcmMubmFtZSk7XG4gICAgY29uc3QgZGV2aWNlUGl4ZWxSYXRpbyA9IF9pc1NFT0JvdCA/IDEgOiBnZXREZXZpY2VQaXhlbFJhdGlvKHRhcmdldCk7XG4gICAgY29uc3QgZmlsZUV4dGVuc2lvbiA9IGdldEZpbGVFeHRlbnNpb24oc3JjLmlkKTtcbiAgICBjb25zdCBwcmVmZXJyZWRFeHRlbnNpb24gPSBmaWxlRXh0ZW5zaW9uO1xuICAgIGNvbnN0IGNhblRyYW5zZm9ybUltYWdlID0gaXNJbWFnZVRyYW5zZm9ybUFwcGxpY2FibGUoc3JjLmlkLCBvcHRpb25zPy5oYXNBbmltYXRpb24sIG9wdGlvbnM/LmFsbG93QW5pbWF0ZWRUcmFuc2Zvcm0sIG9wdGlvbnM/LmFsbG93RnVsbEdJRlRyYW5zZm9ybWF0aW9uKTtcbiAgICBjb25zdCB0cmFuc2Zvcm1zT2JqID0ge1xuICAgICAgICBmaWxlTmFtZSxcbiAgICAgICAgZmlsZUV4dGVuc2lvbixcbiAgICAgICAgZmlsZVR5cGUsXG4gICAgICAgIGZpdHRpbmdUeXBlLFxuICAgICAgICBwcmVmZXJyZWRFeHRlbnNpb24sXG4gICAgICAgIHNyYzoge1xuICAgICAgICAgICAgaWQ6IHNyYy5pZCxcbiAgICAgICAgICAgIHdpZHRoOiBzcmMud2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IHNyYy5oZWlnaHQsXG4gICAgICAgICAgICBpc0Nyb3BwZWQ6IGZhbHNlLFxuICAgICAgICAgICAgaXNBbmltYXRlZDogaW1hZ2VJc0FuaW1hdGVkKHNyYy5pZCwgb3B0aW9ucz8uaGFzQW5pbWF0aW9uKSxcbiAgICAgICAgfSxcbiAgICAgICAgZm9jYWxQb2ludDoge1xuICAgICAgICAgICAgeDogc3JjLmZvY2FsUG9pbnQgJiYgc3JjLmZvY2FsUG9pbnQueCxcbiAgICAgICAgICAgIHk6IHNyYy5mb2NhbFBvaW50ICYmIHNyYy5mb2NhbFBvaW50LnksXG4gICAgICAgIH0sXG4gICAgICAgIHBhcnRzOiBbXSxcbiAgICAgICAgLy8gb3B0aW9ucyAtIGdlbmVyYWxcbiAgICAgICAgZGV2aWNlUGl4ZWxSYXRpbyxcbiAgICAgICAgcXVhbGl0eTogMCxcbiAgICAgICAgdXBzY2FsZU1ldGhvZDogZ2V0VXBzY2FsZVN0cmluZyhvcHRpb25zKSxcbiAgICAgICAgcHJvZ3Jlc3NpdmU6IHRydWUsXG4gICAgICAgIHdhdGVybWFyazogJycsXG4gICAgICAgIHVuc2hhcnBNYXNrOiB7fSxcbiAgICAgICAgZmlsdGVyczoge30sXG4gICAgICAgIHRyYW5zZm9ybWVkOiBjYW5UcmFuc2Zvcm1JbWFnZSxcbiAgICAgICAgYWxsb3dGdWxsR0lGVHJhbnNmb3JtYXRpb246IG9wdGlvbnM/LmFsbG93RnVsbEdJRlRyYW5zZm9ybWF0aW9uLFxuICAgICAgICBpc1BsYWNlaG9sZGVyRmxvdzogb3B0aW9ucz8uaXNQbGFjZWhvbGRlckZsb3csXG4gICAgfTtcbiAgICBpZiAoY2FuVHJhbnNmb3JtSW1hZ2UpIHtcbiAgICAgICAgc2V0VHJhbnNmb3JtUGFydHModHJhbnNmb3Jtc09iaiwgc3JjLCB0YXJnZXQpO1xuICAgICAgICBzZXRUcmFuc2Zvcm1PcHRpb25zKHRyYW5zZm9ybXNPYmosIG9wdGlvbnMpO1xuICAgIH1cbiAgICByZXR1cm4gdHJhbnNmb3Jtc09iajtcbn1cbi8qKlxuICogcmV0dXJucyB0YXJnZXQgZGF0YVxuICogaGFuZGxlIGxlZ2FjeSBCRyBzaXRlIGlmIG5lZWRlZFxuICpcbiAqIEBwYXJhbSB7Rml0dGluZ1R5cGV9ICAgICAgICAgICAgIGZpdHRpbmdUeXBlICAgICAgICAgaW1hZ2VTZXJ2aWNlc1R5cGVzLmZpdHRpbmdUeXBlc1xuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybVNvdXJjZX0gICAgc3JjICAgICAgICAgICAgICAgICBzb3VyY2UgaW1hZ2VcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1UYXJnZXR9ICAgIHRhcmdldCAgICAgICAgICAgICAgdGFyZ2V0IGNvbXBvbmVudFxuICpcbiAqIEByZXR1cm5zIHtPYmplY3R9XG4gKi9cbmZ1bmN0aW9uIGdldFRhcmdldChmaXR0aW5nVHlwZSwgc3JjLCB0YXJnZXQpIHtcbiAgICBjb25zdCB0YXJnZXRPYmogPSB7IC4uLnRhcmdldCB9O1xuICAgIGNvbnN0IF9pc01vYmlsZSA9IGlzTW9iaWxlKCk7XG4gICAgLy8gaGFuZGxlIHNpdGUgQkcgbGVnYWN5IGZpdHRpbmcgdHlwZXMgKGRlc2t0b3AgJiBtb2JpbGUpXG4gICAgc3dpdGNoIChmaXR0aW5nVHlwZSkge1xuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfQkdfRklUX0FORF9USUxFOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfQkdfRklUX0FORF9USUxFX0hPUklaT05UQUw6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9CR19GSVRfQU5EX1RJTEVfVkVSVElDQUw6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9CR19OT1JNQUw6XG4gICAgICAgICAgICBjb25zdCBtYXhCR1NpdGVMZWdhY3lXaWR0aCA9IF9pc01vYmlsZVxuICAgICAgICAgICAgICAgID8gTU9CSUxFX01BWF9CR19TSVRFX0xFR0FDWV9XSURUSFxuICAgICAgICAgICAgICAgIDogRFNLVFBfTUFYX0JHX1NJVEVfTEVHQUNZX1dJRFRIO1xuICAgICAgICAgICAgY29uc3QgbWF4QkdTaXRlTGVnYWN5SGVpZ2h0ID0gX2lzTW9iaWxlXG4gICAgICAgICAgICAgICAgPyBNT0JJTEVfTUFYX0JHX1NJVEVfTEVHQUNZX0hFSUdIVFxuICAgICAgICAgICAgICAgIDogRFNLVFBfTUFYX0JHX1NJVEVfTEVHQUNZX0hFSUdIVDtcbiAgICAgICAgICAgIHRhcmdldE9iai53aWR0aCA9IE1hdGgubWluKG1heEJHU2l0ZUxlZ2FjeVdpZHRoLCBzcmMud2lkdGgpO1xuICAgICAgICAgICAgdGFyZ2V0T2JqLmhlaWdodCA9IE1hdGgubWluKG1heEJHU2l0ZUxlZ2FjeUhlaWdodCwgTWF0aC5yb3VuZCh0YXJnZXRPYmoud2lkdGggLyAoc3JjLndpZHRoIC8gc3JjLmhlaWdodCkpKTtcbiAgICAgICAgICAgIC8vIGZvciBsZWdhY3kgdHlwZXMgZm9yY2UgaHRtbFRhZz0nYmcnIGFuZCBkZXZpY2VQaXhlbFJhdGlvPTFcbiAgICAgICAgICAgIHRhcmdldE9iai5waXhlbEFzcGVjdFJhdGlvID0gMTtcbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldE9iajtcbn1cbmV4cG9ydCB7IGdldFRyYW5zZm9ybSwgZ2V0VGFyZ2V0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10cmFuc2Zvcm0uanMubWFwIiwiaW1wb3J0IHsgZ2V0RmVhdHVyZSB9IGZyb20gJy4vaW1hZ2VTZXJ2aWNlRmVhdHVyZVN1cHBvcnRPYmplY3QnO1xuLyoqXG4gKiBnZXQgYSBicm93c2VyIGRldGVjdGlvbiBpZiBydW5uaW5nIG9uIG1vYmlsZSBkZXZpY2VcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNNb2JpbGUoKSB7XG4gICAgcmV0dXJuIGdldEZlYXR1cmUoJ2lzTW9iaWxlJyk7XG59XG5leHBvcnQgeyBpc01vYmlsZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YnJvd3NlckZlYXR1cmVTdXBwb3J0LmpzLm1hcCIsImltcG9ydCB7IHRlbXBsYXRlIH0gZnJvbSAnLi4vaGVscGVycy91dGlscyc7XG5pbXBvcnQgeyBpbWFnZUZpbHRlcnMsIHRyYW5zZm9ybVR5cGVzLCBBUElfVkVSU0lPTiwgZmlsZVR5cGUsIGVuY29kaW5nVHlwZXMsIH0gZnJvbSAnLi4vaGVscGVycy9pbWFnZVNlcnZpY2VDb25zdGFudHMnO1xuaW1wb3J0IHsgaXNHSUYgfSBmcm9tICcuLi9oZWxwZXJzL2ltYWdlU2VydmljZVV0aWxzJztcbi8vIHRyYW5zZm9ybSB0ZW1wbGF0ZXNcbmNvbnN0IGZpdFRlbXBsYXRlID0gdGVtcGxhdGUgYGZpdC93XyR7J3dpZHRoJ30saF8keydoZWlnaHQnfWA7XG5jb25zdCBmaWxsVGVtcGxhdGUgPSB0ZW1wbGF0ZSBgZmlsbC93XyR7J3dpZHRoJ30saF8keydoZWlnaHQnfSxhbF8keydhbGlnbm1lbnQnfWA7XG5jb25zdCBmaWxsRm9jYWxUZW1wbGF0ZSA9IHRlbXBsYXRlIGBmaWxsL3dfJHsnd2lkdGgnfSxoXyR7J2hlaWdodCd9LGZwXyR7J2ZvY2FsUG9pbnRYJ31fJHsnZm9jYWxQb2ludFknfWA7XG5jb25zdCBjcm9wVGVtcGxhdGUgPSB0ZW1wbGF0ZSBgY3JvcC94XyR7J3gnfSx5XyR7J3knfSx3XyR7J3dpZHRoJ30saF8keydoZWlnaHQnfWA7XG4vLyBsZWdhY3kgdGVtcGxhdGVzXG5jb25zdCBsZWdhY3lDcm9wVGVtcGxhdGUgPSB0ZW1wbGF0ZSBgY3JvcC93XyR7J3dpZHRoJ30saF8keydoZWlnaHQnfSxhbF8keydhbGlnbm1lbnQnfWA7XG5jb25zdCBsZWdhY3lGaWxsVGVtcGxhdGUgPSB0ZW1wbGF0ZSBgZmlsbC93XyR7J3dpZHRoJ30saF8keydoZWlnaHQnfSxhbF8keydhbGlnbm1lbnQnfWA7XG4vLyB1cHNjYWxlIHRlbXBsYXRlXG5jb25zdCB1cHNjYWxlVGVtcGxhdGUgPSB0ZW1wbGF0ZSBgLGxnXyR7J3Vwc2NhbGVNZXRob2RWYWx1ZSd9YDtcbi8vIG9wdGlvbnMgdGVtcGxhdGVzXG5jb25zdCBxdWFsaXR5VGVtcGxhdGUgPSB0ZW1wbGF0ZSBgLHFfJHsncXVhbGl0eSd9YDtcbmNvbnN0IHF1YWxpdHlBdXRvVGVtcGxhdGUgPSB0ZW1wbGF0ZSBgLHF1YWxpdHlfYXV0b2A7XG5jb25zdCB1blNoYXJwTWFza1RlbXBsYXRlID0gdGVtcGxhdGUgYCx1c21fJHsncmFkaXVzJ31fJHsnYW1vdW50J31fJHsndGhyZXNob2xkJ31gO1xuY29uc3Qgbm9uUHJvZ3Jlc3NpdmVUZW1wbGF0ZSA9IHRlbXBsYXRlIGAsYmxgO1xuY29uc3Qgd2F0ZXJtYXJrVGVtcGxhdGUgPSB0ZW1wbGF0ZSBgLHdtXyR7J3dhdGVybWFyayd9YDtcbmNvbnN0IGZpbHRlclRlbXBsYXRlc01hcCA9IHtcbiAgICBbaW1hZ2VGaWx0ZXJzLkNPTlRSQVNUXTogdGVtcGxhdGUgYCxjb25fJHsnY29udHJhc3QnfWAsXG4gICAgW2ltYWdlRmlsdGVycy5CUklHSFRORVNTXTogdGVtcGxhdGUgYCxicl8keydicmlnaHRuZXNzJ31gLFxuICAgIFtpbWFnZUZpbHRlcnMuU0FUVVJBVElPTl06IHRlbXBsYXRlIGAsc2F0XyR7J3NhdHVyYXRpb24nfWAsXG4gICAgW2ltYWdlRmlsdGVycy5IVUVdOiB0ZW1wbGF0ZSBgLGh1ZV8keydodWUnfWAsXG4gICAgW2ltYWdlRmlsdGVycy5CTFVSXTogdGVtcGxhdGUgYCxibHVyXyR7J2JsdXInfWAsXG59O1xuY29uc3QgYXV0b0VuY29kZVRlbXBsYXRlID0gdGVtcGxhdGUgYCxlbmNfYXV0b2A7XG5jb25zdCBBVklGRW5jb2RlVGVtcGxhdGUgPSB0ZW1wbGF0ZSBgLGVuY19hdmlmYDtcbmNvbnN0IHBBVklGRW5jb2RlVGVtcGxhdGUgPSB0ZW1wbGF0ZSBgLGVuY19wYXZpZmA7XG5jb25zdCBhbmltYXRlZFRyYW5zZm9ybVRlbXBsYXRlID0gdGVtcGxhdGUgYCxwc3RyYDtcbmNvbnN0IGFuaW1hdGVkR0lGVHJhbnNmb3JtVGVtcGxhdGUgPSB0ZW1wbGF0ZSBgLGFubV9hbGxgO1xuLyoqXG4gKiByZXR1cm5zIGltYWdlIHRyYW5zZm9ybSB1cmlcbiAqIEBwYXJhbSB7b2JqZWN0fSAgdHJhbnNmb3Jtc09ialxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGdldEltYWdlVVJJKHRyYW5zZm9ybXNPYmopIHtcbiAgICAvLyBjb25zdHJ1Y3QgaW1hZ2UgdHJhbnNmb3Jtc1xuICAgIGNvbnN0IHRyYW5zZm9ybXNPYmpTdHJBcnIgPSBbXTtcbiAgICAvLyBjb25zdHJ1Y3QgdHJhbnNmb3JtXG4gICAgdHJhbnNmb3Jtc09iai5wYXJ0cy5mb3JFYWNoKCh0cmFuc2Zvcm1QYXJ0KSA9PiB7XG4gICAgICAgIHN3aXRjaCAodHJhbnNmb3JtUGFydC50cmFuc2Zvcm1UeXBlKSB7XG4gICAgICAgICAgICBjYXNlIHRyYW5zZm9ybVR5cGVzLkNST1A6XG4gICAgICAgICAgICAgICAgdHJhbnNmb3Jtc09ialN0ckFyci5wdXNoKGNyb3BUZW1wbGF0ZSh0cmFuc2Zvcm1QYXJ0KSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIHRyYW5zZm9ybVR5cGVzLkxFR0FDWV9DUk9QOlxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybXNPYmpTdHJBcnIucHVzaChsZWdhY3lDcm9wVGVtcGxhdGUodHJhbnNmb3JtUGFydCkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSB0cmFuc2Zvcm1UeXBlcy5MRUdBQ1lfRklMTDpcbiAgICAgICAgICAgICAgICBsZXQgbGVnYWN5RmlsbFN0ciA9IGxlZ2FjeUZpbGxUZW1wbGF0ZSh0cmFuc2Zvcm1QYXJ0KTtcbiAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtUGFydC51cHNjYWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGxlZ2FjeUZpbGxTdHIgKz0gdXBzY2FsZVRlbXBsYXRlKHRyYW5zZm9ybVBhcnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1zT2JqU3RyQXJyLnB1c2gobGVnYWN5RmlsbFN0cik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIHRyYW5zZm9ybVR5cGVzLkZJVDpcbiAgICAgICAgICAgICAgICBsZXQgZml0U3RyID0gZml0VGVtcGxhdGUodHJhbnNmb3JtUGFydCk7XG4gICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVBhcnQudXBzY2FsZSkge1xuICAgICAgICAgICAgICAgICAgICBmaXRTdHIgKz0gdXBzY2FsZVRlbXBsYXRlKHRyYW5zZm9ybVBhcnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1zT2JqU3RyQXJyLnB1c2goZml0U3RyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgdHJhbnNmb3JtVHlwZXMuRklMTDpcbiAgICAgICAgICAgICAgICBsZXQgZmlsbFN0ciA9IGZpbGxUZW1wbGF0ZSh0cmFuc2Zvcm1QYXJ0KTtcbiAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtUGFydC51cHNjYWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGxTdHIgKz0gdXBzY2FsZVRlbXBsYXRlKHRyYW5zZm9ybVBhcnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1zT2JqU3RyQXJyLnB1c2goZmlsbFN0cik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIHRyYW5zZm9ybVR5cGVzLkZJTExfRk9DQUw6XG4gICAgICAgICAgICAgICAgbGV0IGZpbGxGb2NhbFN0ciA9IGZpbGxGb2NhbFRlbXBsYXRlKHRyYW5zZm9ybVBhcnQpO1xuICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1QYXJ0LnVwc2NhbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsbEZvY2FsU3RyICs9IHVwc2NhbGVUZW1wbGF0ZSh0cmFuc2Zvcm1QYXJ0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdHJhbnNmb3Jtc09ialN0ckFyci5wdXNoKGZpbGxGb2NhbFN0cik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBsZXQgdHJhbnNmb3Jtc1N0ciA9IHRyYW5zZm9ybXNPYmpTdHJBcnIuam9pbignLycpO1xuICAgIC8vIGNvbnN0cnVjdCB0cmFuc2Zvcm0gb3B0aW9uc1xuICAgIC8vIHF1YWxpdHlcbiAgICBpZiAodHJhbnNmb3Jtc09iai5xdWFsaXR5KSB7XG4gICAgICAgIHRyYW5zZm9ybXNTdHIgKz0gcXVhbGl0eVRlbXBsYXRlKHRyYW5zZm9ybXNPYmopO1xuICAgIH1cbiAgICAvLyB1bi1zaGFycCBtYXNrXG4gICAgaWYgKHRyYW5zZm9ybXNPYmoudW5zaGFycE1hc2spIHtcbiAgICAgICAgdHJhbnNmb3Jtc1N0ciArPSB1blNoYXJwTWFza1RlbXBsYXRlKHRyYW5zZm9ybXNPYmoudW5zaGFycE1hc2spO1xuICAgIH1cbiAgICAvLyBwcm9ncmVzc2l2ZVxuICAgIGlmICghdHJhbnNmb3Jtc09iai5wcm9ncmVzc2l2ZSkge1xuICAgICAgICB0cmFuc2Zvcm1zU3RyICs9IG5vblByb2dyZXNzaXZlVGVtcGxhdGUodHJhbnNmb3Jtc09iaik7XG4gICAgfVxuICAgIC8vIHdhdGVybWFya1xuICAgIGlmICh0cmFuc2Zvcm1zT2JqLndhdGVybWFyaykge1xuICAgICAgICB0cmFuc2Zvcm1zU3RyICs9IHdhdGVybWFya1RlbXBsYXRlKHRyYW5zZm9ybXNPYmopO1xuICAgIH1cbiAgICAvLyBmaWx0ZXJzXG4gICAgaWYgKHRyYW5zZm9ybXNPYmouZmlsdGVycykge1xuICAgICAgICB0cmFuc2Zvcm1zU3RyICs9IE9iamVjdC5rZXlzKHRyYW5zZm9ybXNPYmouZmlsdGVycylcbiAgICAgICAgICAgIC5tYXAoKGZpbHRlck5hbWUpID0+IGZpbHRlclRlbXBsYXRlc01hcFtmaWx0ZXJOYW1lXSh0cmFuc2Zvcm1zT2JqLmZpbHRlcnMpKVxuICAgICAgICAgICAgLmpvaW4oJycpO1xuICAgIH1cbiAgICAvLyBlbmNvZGluZ1xuICAgIGlmICh0cmFuc2Zvcm1zT2JqLmZpbGVUeXBlICE9PSBmaWxlVHlwZS5HSUYpIHtcbiAgICAgICAgaWYgKHRyYW5zZm9ybXNPYmouZW5jb2RpbmcgPT09IGVuY29kaW5nVHlwZXMuQVZJRikge1xuICAgICAgICAgICAgdHJhbnNmb3Jtc1N0ciArPSBBVklGRW5jb2RlVGVtcGxhdGUodHJhbnNmb3Jtc09iaik7XG4gICAgICAgICAgICB0cmFuc2Zvcm1zU3RyICs9IHF1YWxpdHlBdXRvVGVtcGxhdGUodHJhbnNmb3Jtc09iaik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodHJhbnNmb3Jtc09iai5lbmNvZGluZyA9PT0gZW5jb2RpbmdUeXBlcy5QQVZJRikge1xuICAgICAgICAgICAgdHJhbnNmb3Jtc1N0ciArPSBwQVZJRkVuY29kZVRlbXBsYXRlKHRyYW5zZm9ybXNPYmopO1xuICAgICAgICAgICAgdHJhbnNmb3Jtc1N0ciArPSBxdWFsaXR5QXV0b1RlbXBsYXRlKHRyYW5zZm9ybXNPYmopO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRyYW5zZm9ybXNPYmouYXV0b0VuY29kZSkge1xuICAgICAgICAgICAgdHJhbnNmb3Jtc1N0ciArPSBhdXRvRW5jb2RlVGVtcGxhdGUodHJhbnNmb3Jtc09iaik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gYW5pbWF0ZWQgaW1hZ2VzIHRyYW5zZm9ybXNcbiAgICBpZiAodHJhbnNmb3Jtc09iai5zcmM/LmlzQW5pbWF0ZWQgJiYgdHJhbnNmb3Jtc09iai50cmFuc2Zvcm1lZCkge1xuICAgICAgICBjb25zdCBpc0dpZiA9IGlzR0lGKHRyYW5zZm9ybXNPYmouc3JjLmlkKTtcbiAgICAgICAgY29uc3QgaXNQbGFjZWhvbGRlckZsb3cgPSB0cmFuc2Zvcm1zT2JqLmlzUGxhY2Vob2xkZXJGbG93ID09PSB0cnVlO1xuICAgICAgICBjb25zdCBhbGxvd0Z1bGxHSUZUcmFuc2Zvcm1hdGlvbiA9IHRyYW5zZm9ybXNPYmouYWxsb3dGdWxsR0lGVHJhbnNmb3JtYXRpb24gPT09IHRydWU7XG4gICAgICAgIGlmIChpc1BsYWNlaG9sZGVyRmxvdykge1xuICAgICAgICAgICAgdHJhbnNmb3Jtc1N0ciArPSBhbmltYXRlZFRyYW5zZm9ybVRlbXBsYXRlKHRyYW5zZm9ybXNPYmopO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzR2lmICYmIGFsbG93RnVsbEdJRlRyYW5zZm9ybWF0aW9uKSB7XG4gICAgICAgICAgICAvLyBOb24tcGxhY2Vob2xkZXIgZmxvdyArIEdJRiArIGZsYWcgZW5hYmxlZDogdXNlIGFubV9hbGxcbiAgICAgICAgICAgIHRyYW5zZm9ybXNTdHIgKz0gYW5pbWF0ZWRHSUZUcmFuc2Zvcm1UZW1wbGF0ZSh0cmFuc2Zvcm1zT2JqKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBpbWFnZSB1cmwgc3RyaW5nXG4gICAgcmV0dXJuIGAke3RyYW5zZm9ybXNPYmouc3JjLmlkfS8ke0FQSV9WRVJTSU9OfS8ke3RyYW5zZm9ybXNTdHJ9LyR7dHJhbnNmb3Jtc09iai5maWxlTmFtZX0uJHt0cmFuc2Zvcm1zT2JqLnByZWZlcnJlZEV4dGVuc2lvbn1gO1xufVxuZXhwb3J0IHsgZ2V0SW1hZ2VVUkkgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRyYW5zZm9ybXMuanMubWFwIiwiaW1wb3J0IHsgaXNBVklGLCBpc0ltYWdlVHJhbnNmb3JtQXBwbGljYWJsZSwgaXNXRUJQLCB9IGZyb20gJy4uL2hlbHBlcnMvaW1hZ2VTZXJ2aWNlVXRpbHMnO1xuaW1wb3J0IHsgZ2V0SW1hZ2VVUkkgfSBmcm9tICcuLi9lbmdpbmVzL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgZ2V0VHJhbnNmb3JtIH0gZnJvbSAnLi90cmFuc2Zvcm0nO1xuLyoqXG4gKiByZXR1cm5zIGltYWdlIHRyYW5zZm9ybSB1cmlcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gICAgICAgICAgICAgICAgICBmaXR0aW5nVHlwZSAgICAgICAgIGltYWdlU2VydmljZXNUeXBlcy5maXR0aW5nVHlwZXNcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1Tb3VyY2V9ICAgIHNyYyAgICAgICAgICAgICAgICAgc291cmNlIGltYWdlXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtVGFyZ2V0fSAgICB0YXJnZXQgICAgICAgICAgICAgIHRhcmdldCBjb21wb25lbnRcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1PcHRpb25zfSAgIG9wdGlvbnMgICAgICAgICAgICAgdHJhbnNmb3JtIG9wdGlvbnNcbiAqIEBwYXJhbSB7T2JqZWN0fSAgICAgICAgICAgICAgICAgIFt0cmFuc2Zvcm1PYmpdICAgICAgdHJhbnNmb3JtIGRhdGEgb2JqZWN0IHRvIHVzZVxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGdldFVSSShmaXR0aW5nVHlwZSwgc3JjLCB0YXJnZXQsIG9wdGlvbnMgPSB7fSwgdHJhbnNmb3JtT2JqKSB7XG4gICAgLy8gY2hlY2sgaWYgaW1hZ2UgdHJhbnNmb3JtYXRpb24gaXMgYXBwbGljYWJsZSAoZS5nLiAuZ2lmLCAud2l4X21wKVxuICAgIGlmIChpc0ltYWdlVHJhbnNmb3JtQXBwbGljYWJsZShzcmMuaWQsIG9wdGlvbnM/Lmhhc0FuaW1hdGlvbiwgb3B0aW9ucz8uYWxsb3dBbmltYXRlZFRyYW5zZm9ybSwgb3B0aW9ucz8uYWxsb3dGdWxsR0lGVHJhbnNmb3JtYXRpb24pKSB7XG4gICAgICAgIGlmIChpc1dFQlAoc3JjLmlkKSB8fCBpc0FWSUYoc3JjLmlkKSkge1xuICAgICAgICAgICAgLy8gZXhjbHVkZSBhbGlnbm1lbnQsIGZvY2FsUG9pbnQgYW5kIGNyb3AgZnJvbSB3ZWJwIGFuZCBhdmlmIHRyYW5zZm9ybWF0aW9uIGluIG9yZGVyIG5vdCB0byBicmVhayB3ZWJwIG9yIGF2aWYgaW1hZ2VzIGJlZm9yZSB0cmFuc2Zvcm1hdGlvbiB3YXMgZW5hYmxlZFxuICAgICAgICAgICAgY29uc3QgeyBhbGlnbm1lbnQsIC4uLnRyYW5zZm9ybVRhcmdldCB9ID0gdGFyZ2V0O1xuICAgICAgICAgICAgc3JjLmZvY2FsUG9pbnQgPSB7IHg6IHVuZGVmaW5lZCwgeTogdW5kZWZpbmVkIH07XG4gICAgICAgICAgICBkZWxldGUgc3JjPy5jcm9wO1xuICAgICAgICAgICAgdHJhbnNmb3JtT2JqID0gZ2V0VHJhbnNmb3JtKGZpdHRpbmdUeXBlLCBzcmMsIHRyYW5zZm9ybVRhcmdldCwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1PYmogPVxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybU9iaiB8fCBnZXRUcmFuc2Zvcm0oZml0dGluZ1R5cGUsIHNyYywgdGFyZ2V0LCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBzZXQgdGhlIHVyaSBwcm9wZXJ0eVxuICAgICAgICByZXR1cm4gZ2V0SW1hZ2VVUkkodHJhbnNmb3JtT2JqKTtcbiAgICB9XG4gICAgcmV0dXJuIHNyYy5pZDtcbn1cbmV4cG9ydCB7IGdldFVSSSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXJpLmpzLm1hcCIsImltcG9ydCB7IGFsaWduVHlwZXMsIGZpdHRpbmdUeXBlcyB9IGZyb20gJy4vaW1hZ2VTZXJ2aWNlQ29uc3RhbnRzJztcbmltcG9ydCB7IGlzUE5HIH0gZnJvbSAnLi9pbWFnZVNlcnZpY2VVdGlscyc7XG5jb25zdCBBTElHTl9UWVBFX1RPX1BPU0lUSU9OID0ge1xuICAgIFthbGlnblR5cGVzLkNFTlRFUl06ICc1MCUgNTAlJyxcbiAgICBbYWxpZ25UeXBlcy5UT1BfTEVGVF06ICcwJSAwJScsXG4gICAgW2FsaWduVHlwZXMuVE9QX1JJR0hUXTogJzEwMCUgMCUnLFxuICAgIFthbGlnblR5cGVzLlRPUF06ICc1MCUgMCUnLFxuICAgIFthbGlnblR5cGVzLkJPVFRPTV9MRUZUXTogJzAlIDEwMCUnLFxuICAgIFthbGlnblR5cGVzLkJPVFRPTV9SSUdIVF06ICcxMDAlIDEwMCUnLFxuICAgIFthbGlnblR5cGVzLkJPVFRPTV06ICc1MCUgMTAwJScsXG4gICAgW2FsaWduVHlwZXMuUklHSFRdOiAnMTAwJSA1MCUnLFxuICAgIFthbGlnblR5cGVzLkxFRlRdOiAnMCUgNTAlJyxcbn07XG5jb25zdCBQT1NJVElPTl9UT19BTElHTl9UWVBFID0gT2JqZWN0LmVudHJpZXMoQUxJR05fVFlQRV9UT19QT1NJVElPTikucmVkdWNlKChhY2MsIFthbGlnbiwgcG9zaXRpb25dKSA9PiB7XG4gICAgYWNjW3Bvc2l0aW9uXSA9IGFsaWduO1xuICAgIHJldHVybiBhY2M7XG59LCB7fSk7XG5jb25zdCBUSUxFX0ZJVFRJTkdfVFlQRVMgPSBbXG4gICAgZml0dGluZ1R5cGVzLlRJTEUsXG4gICAgZml0dGluZ1R5cGVzLlRJTEVfSE9SSVpPTlRBTCxcbiAgICBmaXR0aW5nVHlwZXMuVElMRV9WRVJUSUNBTCxcbiAgICBmaXR0aW5nVHlwZXMuTEVHQUNZX0JHX0ZJVF9BTkRfVElMRSxcbiAgICBmaXR0aW5nVHlwZXMuTEVHQUNZX0JHX0ZJVF9BTkRfVElMRV9IT1JJWk9OVEFMLFxuICAgIGZpdHRpbmdUeXBlcy5MRUdBQ1lfQkdfRklUX0FORF9USUxFX1ZFUlRJQ0FMLFxuXTtcbmNvbnN0IE5PTl9TQ0FMSU5HX0ZJVFRJTkdfVFlQRVMgPSBbXG4gICAgZml0dGluZ1R5cGVzLkxFR0FDWV9PUklHSU5BTF9TSVpFLFxuICAgIGZpdHRpbmdUeXBlcy5PUklHSU5BTF9TSVpFLFxuICAgIGZpdHRpbmdUeXBlcy5MRUdBQ1lfQkdfTk9STUFMLFxuXTtcbmZ1bmN0aW9uIGdldElzRmFrZVRpbGUoZml0dGluZ1R5cGUsIHNyYywgeyB3aWR0aDogdGFyZ2V0V2lkdGgsIGhlaWdodDogdGFyZ2V0SGVpZ2h0LCB9KSB7XG4gICAgcmV0dXJuIChmaXR0aW5nVHlwZSA9PT0gZml0dGluZ1R5cGVzLlRJTEUgJiZcbiAgICAgICAgc3JjLndpZHRoID4gdGFyZ2V0V2lkdGggJiZcbiAgICAgICAgc3JjLmhlaWdodCA+IHRhcmdldEhlaWdodCk7XG59XG4vKipcbiAqXG4gKiBAcGFyYW0ge0ZpdHRpbmdUeXBlfSAgICAgICAgICAgICBmaXR0aW5nVHlwZSAgICAgIGltYWdlU2VydmljZXNUeXBlcy5maXR0aW5nVHlwZXNcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1Tb3VyY2V9ICAgIHNyYyAgICAgICAgICAgICAgc291cmNlIGltYWdlXG4gKiBAcGFyYW0ge0RpbWVuc2lvbnN9ICAgICAgICAgICAgICB0YXJnZXQgICAgICAgICAgIHRhcmdldCBjb250YWluZXIgZGltZW5zaW9uc1xuICogQHBhcmFtIHtib29sZWFufSAgICAgICAgICAgICAgICAgW2lzU0VPQm90PWZhbHNlXSB3aGV0aGVyIGl0IGlzIGEgcmVuZGVyIGZvciBhIGJvdCByZXF1ZXN0XG4gKiBAcmV0dXJucyB7RGltZW5zaW9uc30gc2NhbGVkIGRpbWVuc2lvbnNcbiAqL1xuZnVuY3Rpb24gZ2V0U2NhbGVkRGltZW5zaW9ucyhmaXR0aW5nVHlwZSwgc3JjLCB7IHdpZHRoLCBoZWlnaHQgfSwgaXNTRU9Cb3QgPSBmYWxzZSkge1xuICAgIGlmIChpc1NFT0JvdCkge1xuICAgICAgICByZXR1cm4geyB3aWR0aCwgaGVpZ2h0IH07XG4gICAgfVxuICAgIGNvbnN0IGlzU2NhbGFibGUgPSAhTk9OX1NDQUxJTkdfRklUVElOR19UWVBFUy5pbmNsdWRlcyhmaXR0aW5nVHlwZSk7XG4gICAgY29uc3QgaXNGYWtlVGlsZSA9IGdldElzRmFrZVRpbGUoZml0dGluZ1R5cGUsIHNyYywgeyB3aWR0aCwgaGVpZ2h0IH0pO1xuICAgIGNvbnN0IGlzVGlsZSA9ICFpc0Zha2VUaWxlICYmIFRJTEVfRklUVElOR19UWVBFUy5pbmNsdWRlcyhmaXR0aW5nVHlwZSk7XG4gICAgY29uc3QgX3dpZHRoID0gaXNUaWxlID8gc3JjLndpZHRoIDogd2lkdGg7XG4gICAgY29uc3QgX2hlaWdodCA9IGlzVGlsZSA/IHNyYy5oZWlnaHQgOiBoZWlnaHQ7XG4gICAgY29uc3Qgc2NhbGVGYWN0b3IgPSBpc1NjYWxhYmxlXG4gICAgICAgID8gZ2V0U2NhbGVGYWN0b3JCeVdpZHRoKF93aWR0aCwgaXNQTkcoc3JjLmlkKSlcbiAgICAgICAgOiAxO1xuICAgIHJldHVybiB7XG4gICAgICAgIHdpZHRoOiBpc0Zha2VUaWxlID8gMTkyMCA6IF93aWR0aCAqIHNjYWxlRmFjdG9yLFxuICAgICAgICBoZWlnaHQ6IF9oZWlnaHQgKiBzY2FsZUZhY3RvcixcbiAgICB9O1xufVxuLyoqXG4gKlxuICogQHBhcmFtIHtGaXR0aW5nVHlwZX0gZml0dGluZ1R5cGUgIGltYWdlU2VydmljZXNUeXBlcy5maXR0aW5nVHlwZXNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNGYWtlVGlsZVxuICogQHJldHVybnMge3N0cmluZ30gZml0dGluZ1R5cGVcbiAqL1xuZnVuY3Rpb24gZ2V0Q29udmVydGVkRml0dGluZyhmaXR0aW5nVHlwZSwgaXNGYWtlVGlsZSkge1xuICAgIGNvbnN0IGlzVGlsZSA9IFRJTEVfRklUVElOR19UWVBFUy5pbmNsdWRlcyhmaXR0aW5nVHlwZSkgJiYgIWlzRmFrZVRpbGU7XG4gICAgY29uc3QgaXNGaWxsID0gZml0dGluZ1R5cGUgPT09IGZpdHRpbmdUeXBlcy5TQ0FMRV9UT19GSUxMO1xuICAgIHJldHVybiBpc0ZpbGwgfHwgaXNUaWxlID8gZml0dGluZ1R5cGVzLlNDQUxFX1RPX0ZJVCA6IGZpdHRpbmdUeXBlO1xufVxuLyoqXG4gKlxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybVNvdXJjZX0gICAgc3JjICAgICAgICAgICAgICAgICBzb3VyY2UgaW1hZ2VcbiAqIEBwYXJhbSB7bnVtYmVyIHx8ICcnfSAgICAgICAgICAgIHdpZHRoXG4gKiBAcGFyYW0ge251bWJlciB8fCAnJ30gICAgICAgICAgICBoZWlnaHRcbiAqIEByZXR1cm5zIHtEaW1lbnNpb25zfSAgICB3aWR0aCwgaGVpZ2h0XG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlVGFyZ2V0RGltZW5zaW9ucyhzcmMsIHsgd2lkdGgsIGhlaWdodCB9KSB7XG4gICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0KSB7XG4gICAgICAgIGNvbnN0IF93aWR0aCA9IHdpZHRoIHx8IE1hdGgubWluKDk4MCwgc3JjLndpZHRoKTtcbiAgICAgICAgY29uc3QgaGVpZ2h0UmF0aW8gPSBfd2lkdGggLyBzcmMud2lkdGg7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB3aWR0aDogX3dpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQgfHwgc3JjLmhlaWdodCAqIGhlaWdodFJhdGlvLFxuICAgICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4geyB3aWR0aCwgaGVpZ2h0IH07XG59XG4vKipcbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gd2lkdGhcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNIaWdoUXVhbGl0eVxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5mdW5jdGlvbiBnZXRTY2FsZUZhY3RvckJ5V2lkdGgod2lkdGgsIGlzSGlnaFF1YWxpdHkpIHtcbiAgICBpZiAod2lkdGggPiA5MDApIHtcbiAgICAgICAgcmV0dXJuIGlzSGlnaFF1YWxpdHkgPyAwLjA1IDogMC4xNTtcbiAgICB9XG4gICAgZWxzZSBpZiAod2lkdGggPiA1MDApIHtcbiAgICAgICAgcmV0dXJuIGlzSGlnaFF1YWxpdHkgPyAwLjEgOiAwLjE4O1xuICAgIH1cbiAgICBlbHNlIGlmICh3aWR0aCA+IDIwMCkge1xuICAgICAgICByZXR1cm4gMC4yNTtcbiAgICB9XG4gICAgcmV0dXJuIDE7XG59XG4vKipcbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gd2lkdGhcbiAqIEBwYXJhbSB7Rml0dGluZ1R5cGV9IGZpdHRpbmdUeXBlIGltYWdlU2VydmljZXNUeXBlcy5maXR0aW5nVHlwZXNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNTRU9Cb3RcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZnVuY3Rpb24gZ2V0Qmx1clZhbHVlKHdpZHRoLCBmaXR0aW5nVHlwZSwgaXNTRU9Cb3QpIHtcbiAgICBpZiAoaXNTRU9Cb3QpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGlmIChUSUxFX0ZJVFRJTkdfVFlQRVMuaW5jbHVkZXMoZml0dGluZ1R5cGUpKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBpZiAod2lkdGggPiAyMDApIHtcbiAgICAgICAgcmV0dXJuIDI7XG4gICAgfVxuICAgIHJldHVybiAzO1xufVxuLyoqXG4gKlxuICogQHBhcmFtIHtGaXR0aW5nVHlwZX0gICAgICAgICAgICAgICAgICAgICAgIGZpdHRpbmdUeXBlXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtU291cmNlfSAgICAgICAgICAgICAgc3JjICAgICAgICAgICAgICAgICAgc291cmNlIGltYWdlXG4gKiBAcGFyYW0ge3t3aWR0aD86IG51bWJlcjsgaGVpZ2h0PzogbnVtYmVyfX0gdGFyZ2V0ICAgICAgICAgICAgICAgdGFyZ2V0IGVsZW1lbnRcbiAqIEBwYXJhbSB7c3RyaW5nfSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWxpZ25tZW50PSdjZW50ZXInXVxuICogQHJldHVybnMge3tpbWd9LCB7Y29udGFpbmVyfX1cbiAqL1xuZnVuY3Rpb24gZ2V0Q1NTT3ZlcnJpZGVzKGZpdHRpbmdUeXBlLCBzcmMsIHRhcmdldCwgYWxpZ25tZW50ID0gJ2NlbnRlcicpIHtcbiAgICBjb25zdCByZXR1cm5WYWx1ZSA9IHtcbiAgICAgICAgaW1nOiB7fSxcbiAgICAgICAgY29udGFpbmVyOiB7fSxcbiAgICB9O1xuICAgIGlmIChmaXR0aW5nVHlwZSA9PT0gZml0dGluZ1R5cGVzLlNDQUxFX1RPX0ZJTEwpIHtcbiAgICAgICAgY29uc3QgYWxpZ25UeXBlRnJvbUZvY2FsUG9pbnQgPSBzcmMuZm9jYWxQb2ludCAmJiBjb252ZXJ0Rm9jYWxQb2ludFRvQWxpZ25UeXBlKHNyYy5mb2NhbFBvaW50KTtcbiAgICAgICAgY29uc3QgYWxpZ25UeXBlID0gYWxpZ25UeXBlRnJvbUZvY2FsUG9pbnQgfHwgYWxpZ25tZW50O1xuICAgICAgICBpZiAoc3JjLmZvY2FsUG9pbnQgJiYgIWFsaWduVHlwZUZyb21Gb2NhbFBvaW50KSB7XG4gICAgICAgICAgICByZXR1cm5WYWx1ZS5pbWcgPSB7XG4gICAgICAgICAgICAgICAgb2JqZWN0UG9zaXRpb246IGNvbnZlcnRGaWxsRm9jYWxUb1Bvc2l0aW9uKHNyYywgdGFyZ2V0LCBzcmMuZm9jYWxQb2ludCksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuVmFsdWUuaW1nID0ge1xuICAgICAgICAgICAgICAgIG9iamVjdFBvc2l0aW9uOiBBTElHTl9UWVBFX1RPX1BPU0lUSU9OW2FsaWduVHlwZV0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKFtmaXR0aW5nVHlwZXMuTEVHQUNZX09SSUdJTkFMX1NJWkUsIGZpdHRpbmdUeXBlcy5PUklHSU5BTF9TSVpFXS5pbmNsdWRlcyhmaXR0aW5nVHlwZSkpIHtcbiAgICAgICAgcmV0dXJuVmFsdWUuaW1nID0ge1xuICAgICAgICAgICAgb2JqZWN0Rml0OiAnbm9uZScsXG4gICAgICAgICAgICB0b3A6ICdhdXRvJyxcbiAgICAgICAgICAgIGxlZnQ6ICdhdXRvJyxcbiAgICAgICAgICAgIHJpZ2h0OiAnYXV0bycsXG4gICAgICAgICAgICBib3R0b206ICdhdXRvJyxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAoVElMRV9GSVRUSU5HX1RZUEVTLmluY2x1ZGVzKGZpdHRpbmdUeXBlKSkge1xuICAgICAgICByZXR1cm5WYWx1ZS5jb250YWluZXIgPSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kU2l6ZTogYCR7c3JjLndpZHRofXB4ICR7c3JjLmhlaWdodH1weGAsXG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiByZXR1cm5WYWx1ZTtcbn1cbi8qKlxuICogVHJ5IHRvIGNvbnZlcnQgZm9jYWwgcG9pbnQgdmFsdWUgdG8gOSBncmlkIGFsaWdubWVudCB2YWx1ZVxuICpcbiAqIEBwYXJhbSB7UG9pbnR9ICAgIGZvY2FsUG9pbnRcbiAqIEByZXR1cm5zIHtBbGlnblR5cGV9IGFsaWduIHR5cGVcbiAqL1xuZnVuY3Rpb24gY29udmVydEZvY2FsUG9pbnRUb0FsaWduVHlwZShmb2NhbFBvaW50KSB7XG4gICAgY29uc3QgcG9zaXRpb24gPSBgJHtmb2NhbFBvaW50Lnh9JSAke2ZvY2FsUG9pbnQueX0lYDtcbiAgICByZXR1cm4gUE9TSVRJT05fVE9fQUxJR05fVFlQRVtwb3NpdGlvbl0gfHwgJyc7XG59XG4vKipcbiAqXG4gKiBAcGFyYW0ge0RpbWVuc2lvbnN9IHNyYyBzb3VyY2UgZGltZW5zaW9uc1xuICogQHBhcmFtIHt3aWR0aD86IG51bWJlcjsgaGVpZ2h0PzogbnVtYmVyfSB0YXJnZXQgdGFyZ2V0IGRpbWVuc2lvbnNcbiAqIEBwYXJhbSB7UG9pbnR9IGZvY2FsUG9pbnQgeC95IGFzIDAtMTAwIHBlcmNlbnRhZ2VzXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBpbiAneCUgeSUnIGZvcm1hdFxuICovXG5mdW5jdGlvbiBjb252ZXJ0RmlsbEZvY2FsVG9Qb3NpdGlvbihzcmMsIHRhcmdldCwgZm9jYWxQb2ludCkge1xuICAgIGNvbnN0IHsgd2lkdGg6IHNXLCBoZWlnaHQ6IHNIIH0gPSBzcmM7XG4gICAgY29uc3QgeyB3aWR0aDogdFcsIGhlaWdodDogdEggfSA9IHRhcmdldDtcbiAgICBjb25zdCB7IHg6IGZwWCwgeTogZnBZIH0gPSBmb2NhbFBvaW50O1xuICAgIGlmICghdFcgfHwgIXRIKSB7XG4gICAgICAgIHJldHVybiBgJHtmcFh9JSAke2ZwWX0lYDtcbiAgICB9XG4gICAgY29uc3QgZmlsbFNjYWxlRmFjdG9yID0gTWF0aC5tYXgodFcgLyBzVywgdEggLyBzSCk7XG4gICAgY29uc3QgaW1nU2NhbGVkVyA9IHNXICogZmlsbFNjYWxlRmFjdG9yO1xuICAgIGNvbnN0IGltZ1NjYWxlZEggPSBzSCAqIGZpbGxTY2FsZUZhY3RvcjtcbiAgICBjb25zdCB4ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oaW1nU2NhbGVkVyAtIHRXLCBpbWdTY2FsZWRXICogKGZwWCAvIDEwMCkgLSB0VyAvIDIpKTtcbiAgICBjb25zdCB5ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oaW1nU2NhbGVkSCAtIHRILCBpbWdTY2FsZWRIICogKGZwWSAvIDEwMCkgLSB0SCAvIDIpKTtcbiAgICBjb25zdCBwb3NYID0geCAmJiBNYXRoLmZsb29yKCh4IC8gKGltZ1NjYWxlZFcgLSB0VykpICogMTAwKTtcbiAgICBjb25zdCBwb3NZID0geSAmJiBNYXRoLmZsb29yKCh5IC8gKGltZ1NjYWxlZEggLSB0SCkpICogMTAwKTtcbiAgICByZXR1cm4gYCR7cG9zWH0lICR7cG9zWX0lYDtcbn1cbmV4cG9ydCB7IGdldEJsdXJWYWx1ZSwgZ2V0Q29udmVydGVkRml0dGluZywgZ2V0Q1NTT3ZlcnJpZGVzLCBnZXRJc0Zha2VUaWxlLCBnZXRTY2FsZWREaW1lbnNpb25zLCB2YWxpZGF0ZVRhcmdldERpbWVuc2lvbnMsIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZVBsYWNlaG9sZGVyVXRpbHMuanMubWFwIiwiaW1wb3J0IHsgZW1wdHlEYXRhIH0gZnJvbSAnLi4vLi4vaGVscGVycy9pbWFnZVNlcnZpY2VDb25zdGFudHMnO1xuaW1wb3J0IHsgaXNJbWFnZVRyYW5zZm9ybUFwcGxpY2FibGUsIGlzVmFsaWRSZXF1ZXN0LCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvaW1hZ2VTZXJ2aWNlVXRpbHMnO1xuaW1wb3J0IHsgZ2V0QXR0cmlidXRlcyB9IGZyb20gJy4uLy4uL2VuZ2luZXMvYXR0cmlidXRlcyc7XG5pbXBvcnQgeyBnZXRUcmFuc2Zvcm0sIGdldFRhcmdldCB9IGZyb20gJy4uL3RyYW5zZm9ybSc7XG5pbXBvcnQgeyBnZXRVUkkgfSBmcm9tICcuLi91cmknO1xuaW1wb3J0IHsgZ2V0U3Jjc2V0IH0gZnJvbSAnLi4vc3Jjc2V0JztcbmltcG9ydCB7IGdldFNjYWxlZERpbWVuc2lvbnMsIGdldEJsdXJWYWx1ZSwgZ2V0Q1NTT3ZlcnJpZGVzLCB2YWxpZGF0ZVRhcmdldERpbWVuc2lvbnMsIGdldElzRmFrZVRpbGUsIGdldENvbnZlcnRlZEZpdHRpbmcsIH0gZnJvbSAnLi4vLi4vaGVscGVycy9pbWFnZVBsYWNlaG9sZGVyVXRpbHMnO1xuY29uc3QgUExBQ0VIT0xERVJfSU1HX0NTU19PVkVSUklERVMgPSB7IHdpZHRoOiAnMTAwJScsIGhlaWdodDogJzEwMCUnIH07XG4vKipcbiAqIHJldHVybnMgaW1hZ2UgX3BsYWNlaG9sZGVyXyB0cmFuc2Zvcm0gdXJpIGFuZCB0aGVcbiAqIG5lZWRlZCBjc3MgZm9yIGFsaWdubWVudCBhbmQgcG9zaXRpb25pbmdcbiAqXG4gKiBAcGFyYW0ge0ZpdHRpbmdUeXBlfSAgICAgICAgICAgICBmaXR0aW5nVHlwZSBpbWFnZVNlcnZpY2VzVHlwZXMuZml0dGluZ1R5cGVzXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtU291cmNlfSAgICBzcmMgICAgICAgICBpbWFnZVxuICogQHBhcmFtIHtJbWFnZVBsYWNlaG9sZGVyVHJhbnNmb3JtVGFyZ2V0fSAgICB0YXJnZXQgICAgICB0YXJnZXQgZGltZW5zaW9uc1xuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybU9wdGlvbnN9IFtvcHRpb25zXSAgIGVudmlyb25tZW50IC8gdHJhbnNmb3JtYXRpb24gIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyB7SW1hZ2VEYXRhQXR0cmlidXRlc31cbiAqL1xuZnVuY3Rpb24gZ2V0UGxhY2Vob2xkZXIoZml0dGluZ1R5cGUsIHNyYywgdGFyZ2V0LCBvcHRpb25zID0ge30pIHtcbiAgICBjb25zdCB7IGF1dG9FbmNvZGUgPSB0cnVlLCBpc1NFT0JvdCwgc2hvdWxkTG9hZEhRSW1hZ2UsIGhhc0FuaW1hdGlvbiwgYWxsb3dBbmltYXRlZFRyYW5zZm9ybSwgZW5jb2RpbmcsIH0gPSBvcHRpb25zO1xuICAgIGlmICghaXNWYWxpZFJlcXVlc3QoZml0dGluZ1R5cGUsIHNyYywgdGFyZ2V0KSkge1xuICAgICAgICByZXR1cm4gZW1wdHlEYXRhO1xuICAgIH1cbiAgICBjb25zdCBJU19JTl9QTEFDRUhPTERFUl9GTE9XID0gdHJ1ZTtcbiAgICAvLyBJbiBwbGFjZWhvbGRlciBmbG93LCBhbGxvdyBhbmltYXRlZCB0cmFuc2Zvcm1zIGJ5IGRlZmF1bHQgdW5sZXNzIGV4cGxpY2l0bHkgZGlzYWJsZWRcbiAgICBjb25zdCBzaG91bGRBbGxvd0FuaW1hdGVkVHJhbnNmb3JtSW5QbGFjZWhvbGRlciA9IGFsbG93QW5pbWF0ZWRUcmFuc2Zvcm0gPz8gSVNfSU5fUExBQ0VIT0xERVJfRkxPVztcbiAgICBjb25zdCBjYW5UcmFuc2Zvcm1JbWFnZSA9IGlzSW1hZ2VUcmFuc2Zvcm1BcHBsaWNhYmxlKHNyYy5pZCwgaGFzQW5pbWF0aW9uLCBzaG91bGRBbGxvd0FuaW1hdGVkVHJhbnNmb3JtSW5QbGFjZWhvbGRlcik7XG4gICAgaWYgKCFjYW5UcmFuc2Zvcm1JbWFnZSB8fCBzaG91bGRMb2FkSFFJbWFnZSkge1xuICAgICAgICAvKiBFaXRoZXI6XG4gICAgICAgICAqIDEuIFRyYW5zZm9ybSBpc24ndCBhcHBsaWNhYmxlIHNvIHRhcmdldCBpcyBvcmlnaW5hbCBzaXplIGFwcGxpZWQgd2l0aCBmbHVpZCBDU1NcbiAgICAgICAgICogMi4gVXNlciBhc2tlZCBmb3IgYW4gSFEgaW1hZ2UsIHNvIHRoZXkgbXVzdCBoYXZlIHN1cHBsaWVkIHRhcmdldCBzaXplICh3aWR0aC9oZWlnaHQpXG4gICAgICAgICAqL1xuICAgICAgICByZXR1cm4gZ2V0RGF0YShmaXR0aW5nVHlwZSwgc3JjLCB0YXJnZXQsIHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICBhdXRvRW5jb2RlLFxuICAgICAgICAgICAgdXNlU3Jjc2V0OiBjYW5UcmFuc2Zvcm1JbWFnZSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8vIElmIHRoZXJlIGFyZW4ndCBkaW1lbnNpb25zLCB3ZSBtYWtlIHRoZW0gdXBcbiAgICBjb25zdCBuZXdUYXJnZXQgPSB7XG4gICAgICAgIC4uLnRhcmdldCxcbiAgICAgICAgLi4udmFsaWRhdGVUYXJnZXREaW1lbnNpb25zKHNyYywgdGFyZ2V0KSxcbiAgICB9O1xuICAgIGNvbnN0IHsgYWxpZ25tZW50LCBodG1sVGFnIH0gPSBuZXdUYXJnZXQ7XG4gICAgY29uc3QgaXNGYWtlVGlsZSA9IGdldElzRmFrZVRpbGUoZml0dGluZ1R5cGUsIHNyYywgbmV3VGFyZ2V0KTtcbiAgICBjb25zdCBzY2FsZWREaW1lbnNpb25zID0gZ2V0U2NhbGVkRGltZW5zaW9ucyhmaXR0aW5nVHlwZSwgc3JjLCBuZXdUYXJnZXQsIGlzU0VPQm90KTtcbiAgICBjb25zdCBibHVyID0gZ2V0Qmx1clZhbHVlKG5ld1RhcmdldC53aWR0aCwgZml0dGluZ1R5cGUsIGlzU0VPQm90KTtcbiAgICBjb25zdCBjb252ZXJ0ZWRGaXR0aW5nVHlwZSA9IGdldENvbnZlcnRlZEZpdHRpbmcoZml0dGluZ1R5cGUsIGlzRmFrZVRpbGUpO1xuICAgIGNvbnN0IG92ZXJyaWRlQ1NTID0gZ2V0Q1NTT3ZlcnJpZGVzKGZpdHRpbmdUeXBlLCBzcmMsIHRhcmdldCwgYWxpZ25tZW50KTtcbiAgICBjb25zdCB7IHVyaSB9ID0gZ2V0RGF0YShjb252ZXJ0ZWRGaXR0aW5nVHlwZSwgc3JjLCB7XG4gICAgICAgIC4uLnNjYWxlZERpbWVuc2lvbnMsXG4gICAgICAgIGFsaWdubWVudCxcbiAgICAgICAgaHRtbFRhZyxcbiAgICB9LCB7XG4gICAgICAgIGF1dG9FbmNvZGUsXG4gICAgICAgIGZpbHRlcnM6IGJsdXIgPyB7IGJsdXIgfSA6IHt9LFxuICAgICAgICBoYXNBbmltYXRpb24sXG4gICAgICAgIGFsbG93QW5pbWF0ZWRUcmFuc2Zvcm06IHNob3VsZEFsbG93QW5pbWF0ZWRUcmFuc2Zvcm1JblBsYWNlaG9sZGVyLFxuICAgICAgICBlbmNvZGluZyxcbiAgICAgICAgaXNQbGFjZWhvbGRlckZsb3c6IElTX0lOX1BMQUNFSE9MREVSX0ZMT1csXG4gICAgfSk7XG4gICAgY29uc3QgeyBhdHRyID0ge30sIGNzcyB9ID0gZ2V0RGF0YShmaXR0aW5nVHlwZSwgc3JjLCB7XG4gICAgICAgIC4uLm5ld1RhcmdldCxcbiAgICAgICAgYWxpZ25tZW50LFxuICAgICAgICBodG1sVGFnLFxuICAgIH0sIHt9KTtcbiAgICBjc3MuaW1nID0gY3NzLmltZyB8fCB7fTtcbiAgICBjc3MuY29udGFpbmVyID0gY3NzLmNvbnRhaW5lciB8fCB7fTtcbiAgICBPYmplY3QuYXNzaWduKGNzcy5pbWcsIG92ZXJyaWRlQ1NTLmltZywgUExBQ0VIT0xERVJfSU1HX0NTU19PVkVSUklERVMpO1xuICAgIE9iamVjdC5hc3NpZ24oY3NzLmNvbnRhaW5lciwgb3ZlcnJpZGVDU1MuY29udGFpbmVyKTtcbiAgICByZXR1cm4geyB1cmksIGNzcywgYXR0ciwgdHJhbnNmb3JtZWQ6IHRydWUgfTtcbn1cbi8qKlxuICogcmV0dXJucyBpbWFnZSB0cmFuc2Zvcm0gdXJpIGFuZCB0aGVcbiAqIG5lZWRlZCBjc3MgZm9yIGFsaWdubWVudCBhbmQgcG9zaXRpb25pbmdcbiAqXG4gKiBAcGFyYW0ge0ZpdHRpbmdUeXBlfSAgICAgICAgICAgICBmaXR0aW5nVHlwZSAgICAgICAgIGltYWdlU2VydmljZXNUeXBlcy5maXR0aW5nVHlwZXNcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1Tb3VyY2V9ICAgIHNyYyAgICAgICAgICAgICAgICAgc291cmNlIGltYWdlXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtVGFyZ2V0fSAgICB0YXJnZXQgICAgICAgICAgICAgIHRhcmdldCBjb21wb25lbnRcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1PcHRpb25zfSAgIFtvcHRpb25zXSAgICAgICAgICB0cmFuc2Zvcm0gb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHtJbWFnZURhdGFBdHRyaWJ1dGVzfVxuICovXG5mdW5jdGlvbiBnZXREYXRhKGZpdHRpbmdUeXBlLCBzcmMsIHRhcmdldCwgb3B0aW9ucykge1xuICAgIGxldCBkYXRhID0ge307XG4gICAgLy8gY2hlY2sgaWYgdmFsaWQgcmVxdWVzdFxuICAgIGlmIChpc1ZhbGlkUmVxdWVzdChmaXR0aW5nVHlwZSwgc3JjLCB0YXJnZXQpKSB7XG4gICAgICAgIC8vIGhhbmRsZSBzaXRlIEJHIGxlZ2FjeSBmaXR0aW5nIHR5cGVzIGlmIG5lZWRlZFxuICAgICAgICBjb25zdCB0YXJnZXRPYmogPSBnZXRUYXJnZXQoZml0dGluZ1R5cGUsIHNyYywgdGFyZ2V0KTtcbiAgICAgICAgLy8gcGFyc2UgcmVxdWVzdCBhbmQgY3JlYXRlIHdvcmtpbmcgT0JKXG4gICAgICAgIGNvbnN0IHRyYW5zZm9ybU9iaiA9IGdldFRyYW5zZm9ybShmaXR0aW5nVHlwZSwgc3JjLCB0YXJnZXRPYmosIG9wdGlvbnMpO1xuICAgICAgICBkYXRhLnVyaSA9IGdldFVSSShmaXR0aW5nVHlwZSwgc3JjLCB0YXJnZXRPYmosIG9wdGlvbnMsIHRyYW5zZm9ybU9iaik7XG4gICAgICAgIGlmIChvcHRpb25zPy51c2VTcmNzZXQpIHtcbiAgICAgICAgICAgIGRhdGEuc3Jjc2V0ID0gZ2V0U3Jjc2V0KGZpdHRpbmdUeXBlLCBzcmMsIHRhcmdldE9iaiwgb3B0aW9ucywgZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gc2V0IHRoZSBDU1Mgb3IgdGhlIFNWRyBwcm9wZXJ0eVxuICAgICAgICBPYmplY3QuYXNzaWduKGRhdGEsIGdldEF0dHJpYnV0ZXModHJhbnNmb3JtT2JqLCB0YXJnZXRPYmopLCB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1lZDogdHJhbnNmb3JtT2JqLnRyYW5zZm9ybWVkLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIC8vIGVtcHR5IGRhdGFcbiAgICAgICAgZGF0YSA9IGVtcHR5RGF0YTtcbiAgICB9XG4gICAgLy8gcmV0dXJuIGRhdGEgdG8gYmUgdXNlZCBpbiBodG1sXG4gICAgcmV0dXJuIGRhdGE7XG59XG5leHBvcnQgeyBnZXREYXRhLCBnZXRQbGFjZWhvbGRlciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXBpLmpzLm1hcCIsImltcG9ydCB7IGdldFVSSSB9IGZyb20gJy4vdXJpJztcbmZ1bmN0aW9uIGdldFNyY3NldChmaXR0aW5nVHlwZSwgc3JjLCB0YXJnZXQsIG9wdGlvbnMsIGRhdGEpIHtcbiAgICBjb25zdCBkcHIgPSB0YXJnZXQucGl4ZWxBc3BlY3RSYXRpbyB8fCAxO1xuICAgIHJldHVybiB7XG4gICAgICAgIGRwcjogW1xuICAgICAgICAgICAgYCR7ZHByID09PSAxXG4gICAgICAgICAgICAgICAgPyBkYXRhLnVyaVxuICAgICAgICAgICAgICAgIDogZ2V0VVJJKGZpdHRpbmdUeXBlLCBzcmMsIHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICBwaXhlbEFzcGVjdFJhdGlvOiAxLFxuICAgICAgICAgICAgICAgIH0sIG9wdGlvbnMpfSAxeGAsXG4gICAgICAgICAgICBgJHtkcHIgPT09IDJcbiAgICAgICAgICAgICAgICA/IGRhdGEudXJpXG4gICAgICAgICAgICAgICAgOiBnZXRVUkkoZml0dGluZ1R5cGUsIHNyYywge1xuICAgICAgICAgICAgICAgICAgICAuLi50YXJnZXQsXG4gICAgICAgICAgICAgICAgICAgIHBpeGVsQXNwZWN0UmF0aW86IDIsXG4gICAgICAgICAgICAgICAgfSwgb3B0aW9ucyl9IDJ4YCxcbiAgICAgICAgXSxcbiAgICB9O1xufVxuZXhwb3J0IHsgZ2V0U3Jjc2V0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zcmNzZXQuanMubWFwIiwiaW1wb3J0IHsgaHRtbFRhZyB9IGZyb20gJy4uL2hlbHBlcnMvaW1hZ2VTZXJ2aWNlQ29uc3RhbnRzJztcbmltcG9ydCB7IGdldCBhcyBiYWNrZ3JvdW5kQXR0cmlidXRlcyB9IGZyb20gJy4vYXR0cmlidXRlcy9iYWNrZ3JvdW5kQXR0cmlidXRlcyc7XG5pbXBvcnQgeyBnZXQgYXMgaW1nQXR0cmlidXRlcyB9IGZyb20gJy4vYXR0cmlidXRlcy9pbWdBdHRyaWJ1dGVzJztcbmltcG9ydCB7IGdldCBhcyBTVkdBdHRyaWJ1dGVzIH0gZnJvbSAnLi9hdHRyaWJ1dGVzL1NWR0F0dHJpYnV0ZXMnO1xuLyoqXG4gKiBnZXQgQ1NTIG9yIFNWRyBhdHRyaWJ1dGVzIHRvIGJlIHVzZWQgaW4gdGhlIGJyb3dzZXJcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1PYmplY3R9ICAgIHRyYW5zZm9ybXNPYmogICAgdHJhbnNmb3JtIHBhcnRzIG9iamVjdFxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybVRhcmdldH0gICAgdGFyZ2V0XG4gKlxuICogQHJldHVybnMgb2JqZWN0XG4gKi9cbmZ1bmN0aW9uIGdldEF0dHJpYnV0ZXModHJhbnNmb3Jtc09iaiwgdGFyZ2V0KSB7XG4gICAgbGV0IGF0dHJpYnV0ZXNHZXR0ZXI7XG4gICAgaWYgKHRhcmdldC5odG1sVGFnID09PSBodG1sVGFnLkJHKSB7XG4gICAgICAgIGF0dHJpYnV0ZXNHZXR0ZXIgPSBiYWNrZ3JvdW5kQXR0cmlidXRlcztcbiAgICB9XG4gICAgZWxzZSBpZiAodGFyZ2V0Lmh0bWxUYWcgPT09IGh0bWxUYWcuU1ZHKSB7XG4gICAgICAgIGF0dHJpYnV0ZXNHZXR0ZXIgPSBTVkdBdHRyaWJ1dGVzO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgYXR0cmlidXRlc0dldHRlciA9IGltZ0F0dHJpYnV0ZXM7XG4gICAgfVxuICAgIHJldHVybiBhdHRyaWJ1dGVzR2V0dGVyKHRyYW5zZm9ybXNPYmosIHRhcmdldCk7XG59XG5leHBvcnQgeyBnZXRBdHRyaWJ1dGVzIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hdHRyaWJ1dGVzLmpzLm1hcCIsImltcG9ydCB7IGdldERhdGEsIHBvcHVsYXRlR2xvYmFsRmVhdHVyZVN1cHBvcnQgfSBmcm9tICcuLi9hcGkvdXJpL2luZGV4JztcbmltcG9ydCB7IGZpdHRpbmdUeXBlcywgaHRtbFRhZywgYWxpZ25UeXBlcywgfSBmcm9tICcuLi9oZWxwZXJzL2ltYWdlU2VydmljZUNvbnN0YW50cyc7XG5jb25zdCB3aXhTdGF0aWMgPSAnaHR0cHM6Ly9zdGF0aWMud2l4c3RhdGljLmNvbS8nO1xuY29uc3Qgd2l4U3RhdGljV2l0aE1lZGlhID0gJ2h0dHBzOi8vc3RhdGljLndpeHN0YXRpYy5jb20vbWVkaWEvJztcbmNvbnN0IEhBU19NRURJQV9QUkVGSVhfUkUgPSAvXm1lZGlhXFwvL2k7XG5jb25zdCBkZXZpY2VQaXhlbFJhdGlvID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyA6IDE7XG5jb25zdCBnZXRXaXhTdGF0aWNVUkwgPSAodXJpKSA9PiBIQVNfTUVESUFfUFJFRklYX1JFLnRlc3QodXJpKVxuICAgID8gYCR7d2l4U3RhdGljfSR7dXJpfWBcbiAgICA6IGAke3dpeFN0YXRpY1dpdGhNZWRpYX0ke3VyaX1gO1xuY29uc3QgZ2V0VVJMID0gKHVyaSwgb3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IGJhc2VIb3N0VVJMID0gb3B0aW9ucyAmJiBvcHRpb25zLmJhc2VIb3N0VVJMO1xuICAgIHJldHVybiBiYXNlSG9zdFVSTCA/IGAke2Jhc2VIb3N0VVJMfSR7dXJpfWAgOiBnZXRXaXhTdGF0aWNVUkwodXJpKTtcbn07XG5mdW5jdGlvbiBnZXRTY2FsZVRvRml0SW1hZ2VVUkwocmVsYXRpdmVVcmwsIHNvdXJjZVdpZHRoLCBzb3VyY2VIZWlnaHQsIHRhcmdldFdpZHRoLCB0YXJnZXRIZWlnaHQsIG9wdGlvbnMpIHtcbiAgICBjb25zdCBkYXRhID0gZ2V0RGF0YShmaXR0aW5nVHlwZXMuU0NBTEVfVE9fRklULCB7XG4gICAgICAgIGlkOiByZWxhdGl2ZVVybCxcbiAgICAgICAgd2lkdGg6IHNvdXJjZVdpZHRoLFxuICAgICAgICBoZWlnaHQ6IHNvdXJjZUhlaWdodCxcbiAgICAgICAgbmFtZTogb3B0aW9ucyAmJiBvcHRpb25zLm5hbWUsXG4gICAgfSwge1xuICAgICAgICB3aWR0aDogdGFyZ2V0V2lkdGgsXG4gICAgICAgIGhlaWdodDogdGFyZ2V0SGVpZ2h0LFxuICAgICAgICBodG1sVGFnOiBodG1sVGFnLklNRyxcbiAgICAgICAgYWxpZ25tZW50OiBhbGlnblR5cGVzLkNFTlRFUixcbiAgICAgICAgcGl4ZWxBc3BlY3RSYXRpbzogb3B0aW9ucz8uZGV2aWNlUGl4ZWxSYXRpbyA/PyBkZXZpY2VQaXhlbFJhdGlvLFxuICAgIH0sIG9wdGlvbnMpO1xuICAgIHJldHVybiBnZXRVUkwoZGF0YS51cmksIG9wdGlvbnMpO1xufVxuZnVuY3Rpb24gZ2V0U2NhbGVUb0ZpbGxJbWFnZVVSTChyZWxhdGl2ZVVybCwgc291cmNlV2lkdGgsIHNvdXJjZUhlaWdodCwgdGFyZ2V0V2lkdGgsIHRhcmdldEhlaWdodCwgb3B0aW9ucykge1xuICAgIGNvbnN0IGRhdGEgPSBnZXREYXRhKGZpdHRpbmdUeXBlcy5TQ0FMRV9UT19GSUxMLCB7XG4gICAgICAgIGlkOiByZWxhdGl2ZVVybCxcbiAgICAgICAgd2lkdGg6IHNvdXJjZVdpZHRoLFxuICAgICAgICBoZWlnaHQ6IHNvdXJjZUhlaWdodCxcbiAgICAgICAgbmFtZTogb3B0aW9ucyAmJiBvcHRpb25zLm5hbWUsXG4gICAgICAgIGZvY2FsUG9pbnQ6IHtcbiAgICAgICAgICAgIHg6IG9wdGlvbnMgJiYgb3B0aW9ucy5mb2NhbFBvaW50ICYmIG9wdGlvbnMuZm9jYWxQb2ludC54LFxuICAgICAgICAgICAgeTogb3B0aW9ucyAmJiBvcHRpb25zLmZvY2FsUG9pbnQgJiYgb3B0aW9ucy5mb2NhbFBvaW50LnksXG4gICAgICAgIH0sXG4gICAgfSwge1xuICAgICAgICB3aWR0aDogdGFyZ2V0V2lkdGgsXG4gICAgICAgIGhlaWdodDogdGFyZ2V0SGVpZ2h0LFxuICAgICAgICBodG1sVGFnOiBodG1sVGFnLklNRyxcbiAgICAgICAgYWxpZ25tZW50OiBhbGlnblR5cGVzLkNFTlRFUixcbiAgICAgICAgcGl4ZWxBc3BlY3RSYXRpbzogb3B0aW9ucz8uZGV2aWNlUGl4ZWxSYXRpbyA/PyBkZXZpY2VQaXhlbFJhdGlvLFxuICAgIH0sIG9wdGlvbnMpO1xuICAgIHJldHVybiBnZXRVUkwoZGF0YS51cmksIG9wdGlvbnMpO1xufVxuZnVuY3Rpb24gZ2V0Q3JvcEltYWdlVVJMKHJlbGF0aXZlVXJsLCBzb3VyY2VXaWR0aCwgc291cmNlSGVpZ2h0LCBjcm9wWCwgY3JvcFksIGNyb3BXaWR0aCwgY3JvcEhlaWdodCwgdGFyZ2V0V2lkdGgsIHRhcmdldEhlaWdodCwgb3B0aW9ucykge1xuICAgIGNvbnN0IGRhdGEgPSBnZXREYXRhKGZpdHRpbmdUeXBlcy5TQ0FMRV9UT19GSUxMLCB7XG4gICAgICAgIGlkOiByZWxhdGl2ZVVybCxcbiAgICAgICAgd2lkdGg6IHNvdXJjZVdpZHRoLFxuICAgICAgICBoZWlnaHQ6IHNvdXJjZUhlaWdodCxcbiAgICAgICAgbmFtZTogb3B0aW9ucyAmJiBvcHRpb25zLm5hbWUsXG4gICAgICAgIGNyb3A6IHtcbiAgICAgICAgICAgIHg6IGNyb3BYLFxuICAgICAgICAgICAgeTogY3JvcFksXG4gICAgICAgICAgICB3aWR0aDogY3JvcFdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiBjcm9wSGVpZ2h0LFxuICAgICAgICB9LFxuICAgIH0sIHtcbiAgICAgICAgd2lkdGg6IHRhcmdldFdpZHRoLFxuICAgICAgICBoZWlnaHQ6IHRhcmdldEhlaWdodCxcbiAgICAgICAgaHRtbFRhZzogaHRtbFRhZy5JTUcsXG4gICAgICAgIGFsaWdubWVudDogYWxpZ25UeXBlcy5DRU5URVIsXG4gICAgICAgIHBpeGVsQXNwZWN0UmF0aW86IG9wdGlvbnM/LmRldmljZVBpeGVsUmF0aW8gPz8gZGV2aWNlUGl4ZWxSYXRpbyxcbiAgICB9LCBvcHRpb25zKTtcbiAgICByZXR1cm4gZ2V0VVJMKGRhdGEudXJpLCBvcHRpb25zKTtcbn1cbmV4cG9ydCB7IHBvcHVsYXRlR2xvYmFsRmVhdHVyZVN1cHBvcnQsIGdldFNjYWxlVG9GaXRJbWFnZVVSTCwgZ2V0U2NhbGVUb0ZpbGxJbWFnZVVSTCwgZ2V0Q3JvcEltYWdlVVJMLCB3aXhTdGF0aWMsIHdpeFN0YXRpY1dpdGhNZWRpYSwgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFwaS5qcy5tYXAiLCJpbXBvcnQgeyBwb3B1bGF0ZUdsb2JhbEZlYXR1cmVTdXBwb3J0LCBnZXRTY2FsZVRvRml0SW1hZ2VVUkwsIGdldFNjYWxlVG9GaWxsSW1hZ2VVUkwsIGdldENyb3BJbWFnZVVSTCwgd2l4U3RhdGljLCB3aXhTdGF0aWNXaXRoTWVkaWEsIH0gZnJvbSAnLi9hcGknO1xucG9wdWxhdGVHbG9iYWxGZWF0dXJlU3VwcG9ydCgpO1xuZXhwb3J0IHsgZ2V0U2NhbGVUb0ZpdEltYWdlVVJMLCBnZXRTY2FsZVRvRmlsbEltYWdlVVJMLCBnZXRDcm9wSW1hZ2VVUkwsIHdpeFN0YXRpYywgd2l4U3RhdGljV2l0aE1lZGlhLCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiaW1wb3J0IHsgYWxpZ25UeXBlcywgZml0dGluZ1R5cGVzLCBodG1sVGFnLCB1cHNjYWxlTWV0aG9kcywgZmlsZVR5cGUsIH0gZnJvbSAnLi4vLi4vaGVscGVycy9pbWFnZVNlcnZpY2VDb25zdGFudHMnO1xuaW1wb3J0IHsgaXNXRUJQLCBnZXRGaWxlRXh0ZW5zaW9uIH0gZnJvbSAnLi4vLi4vaGVscGVycy9pbWFnZVNlcnZpY2VVdGlscyc7XG5pbXBvcnQgeyBwb3B1bGF0ZUdsb2JhbEZlYXR1cmVTdXBwb3J0IH0gZnJvbSAnLi4vLi4vaGVscGVycy9wb3B1bGF0ZUZlYXR1cmVTdXBwb3J0JztcbmltcG9ydCB7IGdldERhdGEsIGdldFBsYWNlaG9sZGVyIH0gZnJvbSAnLi9hcGknO1xuaW1wb3J0IHsgZ2V0U2NhbGVUb0ZpdEltYWdlVVJMLCBnZXRTY2FsZVRvRmlsbEltYWdlVVJMLCBnZXRDcm9wSW1hZ2VVUkwsIHdpeFN0YXRpY1dpdGhNZWRpYSwgfSBmcm9tICcuLi8uLi9zZGsnO1xuaW1wb3J0IHsgZ2V0UmVzcG9uc2l2ZUltYWdlUHJvcHMgfSBmcm9tICcuLi8uLi9oZWxwZXJzL3Jlc3BvbnNpdmVJbWFnZVV0aWxzJztcbnBvcHVsYXRlR2xvYmFsRmVhdHVyZVN1cHBvcnQoKTtcbmNvbnN0IHNkayA9IHtcbiAgICBnZXRTY2FsZVRvRml0SW1hZ2VVUkwsXG4gICAgZ2V0U2NhbGVUb0ZpbGxJbWFnZVVSTCxcbiAgICBnZXRDcm9wSW1hZ2VVUkwsXG59O1xuZXhwb3J0ICogZnJvbSAnLi4vLi4vdHlwZXMnO1xuY29uc3QgU1RBVElDX01FRElBX1VSTCA9IHdpeFN0YXRpY1dpdGhNZWRpYTtcbmV4cG9ydCB7IFNUQVRJQ19NRURJQV9VUkwsIGFsaWduVHlwZXMsIGZpdHRpbmdUeXBlcywgZ2V0RGF0YSwgZ2V0UGxhY2Vob2xkZXIsIGh0bWxUYWcsIHBvcHVsYXRlR2xvYmFsRmVhdHVyZVN1cHBvcnQsIHNkaywgdXBzY2FsZU1ldGhvZHMsIGlzV0VCUCwgZ2V0RmlsZUV4dGVuc2lvbiwgZmlsZVR5cGUsIGdldFJlc3BvbnNpdmVJbWFnZVByb3BzLCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL0ltYWdlLm1vZHVsZS5zY3NzJztcbmltcG9ydCAqIGFzIGltYWdlS2l0IGZyb20gJ0B3aXgvaW1hZ2Uta2l0JztcbmNvbnN0IHsgU1RBVElDX01FRElBX1VSTCB9ID0gaW1hZ2VLaXQ7XG5jb25zdCBmZXRjaExRSVAgPSAoeyBmaXR0aW5nVHlwZSwgc3JjLCB0YXJnZXQsIG9wdGlvbnMsIH0pID0+IHtcbiAgICBjb25zdCBwbGFjZWhvbGRlciA9IGltYWdlS2l0LmdldFBsYWNlaG9sZGVyKGZpdHRpbmdUeXBlLCBzcmMsIHRhcmdldCwge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICBhdXRvRW5jb2RlOiB0cnVlLFxuICAgIH0pO1xuICAgIGlmIChwbGFjZWhvbGRlcj8udXJpICYmICEvXlthLXpdKzovLnRlc3QocGxhY2Vob2xkZXIudXJpKSkge1xuICAgICAgICBwbGFjZWhvbGRlci51cmkgPSBgJHtTVEFUSUNfTUVESUFfVVJMfSR7cGxhY2Vob2xkZXIudXJpfWA7XG4gICAgfVxuICAgIHJldHVybiBwbGFjZWhvbGRlcjtcbn07XG5jb25zdCBTQ0hFTUVfUkUgPSAvXlthLXpdKzovO1xuY29uc3QgSW1hZ2UgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IGlkLCBjb250YWluZXJJZCwgdXJpLCBhbHQsIG5hbWUgPSAnJywgcm9sZSwgd2lkdGgsIGhlaWdodCwgZGlzcGxheU1vZGUsIGRldmljZVBpeGVsUmF0aW8sIHF1YWxpdHksIGFsaWduVHlwZSwgYmdFZmZlY3ROYW1lID0gJycsIGZvY2FsUG9pbnQsIHVwc2NhbGVNZXRob2QsIGNsYXNzTmFtZSA9ICcnLCBjcm9wLCBpbWFnZVN0eWxlcyA9IHt9LCB0YXJnZXRXaWR0aCwgdGFyZ2V0SGVpZ2h0LCB0YXJnZXRTY2FsZSwgb25Mb2FkID0gKCkgPT4geyB9LCBvbkVycm9yID0gKCkgPT4geyB9LCBzaG91bGRVc2VMUUlQLCBjb250YWluZXJXaWR0aCwgY29udGFpbmVySGVpZ2h0LCBnZXRQbGFjZWhvbGRlciwgaXNJbkZpcnN0Rm9sZCwgcGxhY2Vob2xkZXJUcmFuc2l0aW9uLCBzb2NpYWxBdHRycywgaXNTRU9Cb3QsIHNraXBNZWFzdXJlLCBoYXNBbmltYXRpb24sIGVuY29kaW5nLCBpc0ZsdWlkTGF5b3V0LCB9ID0gcHJvcHM7XG4gICAgY29uc3QgaW1hZ2VSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgLy8gZml4IGNvbnRhaW5lcklkIGFuZCBpZCB0byBzdXBwb3J0IGhvdmVyQm94IGNvbXBvbmVudFxuICAgIGxldCBoYXNTc3JTcmMgPSAnJztcbiAgICBjb25zdCBoYXNCbHVyVHJhbnNpdGlvbiA9IHBsYWNlaG9sZGVyVHJhbnNpdGlvbiA9PT0gJ2JsdXInO1xuICAgIGNvbnN0IHNzckltYWdlRGF0YSA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBpZiAoIXNzckltYWdlRGF0YS5jdXJyZW50KSB7XG4gICAgICAgIGlmIChnZXRQbGFjZWhvbGRlciB8fCBzaG91bGRVc2VMUUlQIHx8IGlzSW5GaXJzdEZvbGQgfHwgaXNTRU9Cb3QpIHtcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgdXBzY2FsZU1ldGhvZCxcbiAgICAgICAgICAgICAgICAuLi4ocXVhbGl0eSA/IHF1YWxpdHkgOiB7fSksXG4gICAgICAgICAgICAgICAgc2hvdWxkTG9hZEhRSW1hZ2U6IGlzSW5GaXJzdEZvbGQsXG4gICAgICAgICAgICAgICAgaXNTRU9Cb3QsXG4gICAgICAgICAgICAgICAgaGFzQW5pbWF0aW9uLFxuICAgICAgICAgICAgICAgIGVuY29kaW5nLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHNzckltYWdlRGF0YS5jdXJyZW50ID0gKGdldFBsYWNlaG9sZGVyIHx8IGZldGNoTFFJUCkoe1xuICAgICAgICAgICAgICAgIGZpdHRpbmdUeXBlOiBkaXNwbGF5TW9kZSxcbiAgICAgICAgICAgICAgICBzcmM6IHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHVyaSxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgY3JvcCxcbiAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgZm9jYWxQb2ludCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHRhcmdldDoge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogY29udGFpbmVyV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogY29udGFpbmVySGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICBhbGlnbm1lbnQ6IGFsaWduVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgaHRtbFRhZzogJ2ltZycsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBoYXNTc3JTcmMgPVxuICAgICAgICAgICAgICAgICFzc3JJbWFnZURhdGEuY3VycmVudC50cmFuc2Zvcm1lZCB8fCBpc0luRmlyc3RGb2xkIHx8IGlzU0VPQm90XG4gICAgICAgICAgICAgICAgICAgID8gJydcbiAgICAgICAgICAgICAgICAgICAgOiAndHJ1ZSc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyB0byBrZWVwIGFuIGVtcHR5IHBsYWNlaG9sZGVyIGRhdGFcbiAgICAgICAgICAgIHNzckltYWdlRGF0YS5jdXJyZW50ID0ge1xuICAgICAgICAgICAgICAgIHVyaTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGNzczogeyBpbWc6IHt9IH0sXG4gICAgICAgICAgICAgICAgYXR0cjogeyBpbWc6IHt9LCBjb250YWluZXI6IHt9IH0sXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtZWQ6IGZhbHNlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBpc0xRSVAgPSAhaXNTRU9Cb3QgJiZcbiAgICAgICAgKGdldFBsYWNlaG9sZGVyIHx8IHNob3VsZFVzZUxRSVApICYmXG4gICAgICAgICFpc0luRmlyc3RGb2xkICYmXG4gICAgICAgIHNzckltYWdlRGF0YS5jdXJyZW50LnRyYW5zZm9ybWVkO1xuICAgIGNvbnN0IGltYWdlSW5mbyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBjb250YWluZXJJZCxcbiAgICAgICAgLi4uKGNvbnRhaW5lcklkICYmIHsgY29udGFpbmVySWQgfSksXG4gICAgICAgIC4uLihhbGlnblR5cGUgJiYgeyBhbGlnblR5cGUgfSksXG4gICAgICAgIC4uLihza2lwTWVhc3VyZSAmJiB7IHNraXBNZWFzdXJlOiB0cnVlIH0pLFxuICAgICAgICBkaXNwbGF5TW9kZSxcbiAgICAgICAgLi4uKGNvbnRhaW5lcldpZHRoICYmIHsgdGFyZ2V0V2lkdGg6IGNvbnRhaW5lcldpZHRoIH0pLFxuICAgICAgICAuLi4oY29udGFpbmVySGVpZ2h0ICYmIHsgdGFyZ2V0SGVpZ2h0OiBjb250YWluZXJIZWlnaHQgfSksXG4gICAgICAgIC4uLih0YXJnZXRXaWR0aCAmJiB7IHRhcmdldFdpZHRoIH0pLFxuICAgICAgICAuLi4odGFyZ2V0SGVpZ2h0ICYmIHsgdGFyZ2V0SGVpZ2h0IH0pLFxuICAgICAgICAuLi4odGFyZ2V0U2NhbGUgJiYgeyB0YXJnZXRTY2FsZSB9KSxcbiAgICAgICAgaXNMUUlQLFxuICAgICAgICBpc1NFT0JvdCxcbiAgICAgICAgbHFpcFRyYW5zaXRpb246IHBsYWNlaG9sZGVyVHJhbnNpdGlvbixcbiAgICAgICAgZW5jb2RpbmcsXG4gICAgICAgIGltYWdlRGF0YToge1xuICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICB1cmksXG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgZGlzcGxheU1vZGUsXG4gICAgICAgICAgICBoYXNBbmltYXRpb24sXG4gICAgICAgICAgICAuLi4ocXVhbGl0eSAmJiB7IHF1YWxpdHkgfSksXG4gICAgICAgICAgICAuLi4oZGV2aWNlUGl4ZWxSYXRpbyAmJiB7IGRldmljZVBpeGVsUmF0aW8gfSksXG4gICAgICAgICAgICAuLi4oZm9jYWxQb2ludCAmJiB7IGZvY2FsUG9pbnQgfSksXG4gICAgICAgICAgICAuLi4oY3JvcCAmJiB7IGNyb3AgfSksXG4gICAgICAgICAgICAuLi4odXBzY2FsZU1ldGhvZCAmJiB7IHVwc2NhbGVNZXRob2QgfSksXG4gICAgICAgIH0sXG4gICAgfSksIFtcbiAgICAgICAgY29udGFpbmVySWQsXG4gICAgICAgIGFsaWduVHlwZSxcbiAgICAgICAgc2tpcE1lYXN1cmUsXG4gICAgICAgIGRpc3BsYXlNb2RlLFxuICAgICAgICBjb250YWluZXJXaWR0aCxcbiAgICAgICAgY29udGFpbmVySGVpZ2h0LFxuICAgICAgICB0YXJnZXRXaWR0aCxcbiAgICAgICAgdGFyZ2V0SGVpZ2h0LFxuICAgICAgICB0YXJnZXRTY2FsZSxcbiAgICAgICAgaXNMUUlQLFxuICAgICAgICBpc1NFT0JvdCxcbiAgICAgICAgcGxhY2Vob2xkZXJUcmFuc2l0aW9uLFxuICAgICAgICBlbmNvZGluZyxcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodCxcbiAgICAgICAgdXJpLFxuICAgICAgICBuYW1lLFxuICAgICAgICBoYXNBbmltYXRpb24sXG4gICAgICAgIHF1YWxpdHksXG4gICAgICAgIGRldmljZVBpeGVsUmF0aW8sXG4gICAgICAgIGZvY2FsUG9pbnQsXG4gICAgICAgIGNyb3AsXG4gICAgICAgIHVwc2NhbGVNZXRob2QsXG4gICAgXSk7XG4gICAgY29uc3Qgc3NyUmVzdWx0ID0gc3NySW1hZ2VEYXRhLmN1cnJlbnQ7XG4gICAgY29uc3Qgc3JjID0gc3NyUmVzdWx0Py51cmk7XG4gICAgY29uc3Qgc3Jjc2V0ID0gc3NyUmVzdWx0Py5zcmNzZXQ7XG4gICAgY29uc3QgcGxhY2Vob2xkZXJTdHlsZSA9IHNzclJlc3VsdC5jc3M/LmltZztcbiAgICBjb25zdCBjbGFzc05hbWVzID0gYCR7c3R5bGVzLmltYWdlfSAke2NsYXNzTmFtZX1gO1xuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIC8vIFdoZW4gaW1hZ2UgY29tZXMgZnJvbSBjYWNoZSBvbkxvYWQgbm90IHRyaWdnZXIgb24gbmF0aXZlIEhUTUwgZWxlbWVudFxuICAgICAgICBjb25zdCBpbWdFbGVtZW50ID0gaW1hZ2VSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKG9uTG9hZCAmJiBpbWdFbGVtZW50Py5jdXJyZW50U3JjICYmIGltZ0VsZW1lbnQ/LmNvbXBsZXRlKSB7XG4gICAgICAgICAgICBvbkxvYWQoe1xuICAgICAgICAgICAgICAgIHRhcmdldDogaW1nRWxlbWVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICB9LCBbXSk7XG4gICAgY29uc3QgbWF4V2lkdGggPSBzc3JSZXN1bHQgJiYgIXNzclJlc3VsdD8udHJhbnNmb3JtZWRcbiAgICAgICAgPyBgbWF4KCR7d2lkdGh9cHgsIDEwMCUpYFxuICAgICAgICA6IHRhcmdldFdpZHRoXG4gICAgICAgICAgICA/IGAke3RhcmdldFdpZHRofXB4YFxuICAgICAgICAgICAgOiBudWxsO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcIndvdy1pbWFnZVwiLCB7IGlkOiBpZCwgY2xhc3M6IGNsYXNzTmFtZXMsIFwiZGF0YS1pbWFnZS1pbmZvXCI6IGltYWdlSW5mbywgXCJkYXRhLW1vdGlvbi1wYXJ0XCI6IGBCR19JTUcgJHtjb250YWluZXJJZH1gLCBcImRhdGEtYmctZWZmZWN0LW5hbWVcIjogYmdFZmZlY3ROYW1lLCBcImRhdGEtaGFzLXNzci1zcmNcIjogaGFzU3NyU3JjLCBcImRhdGEtYW5pbWF0ZS1ibHVyXCI6ICFpc1NFT0JvdCAmJiBpc0xRSVAgJiYgaGFzQmx1clRyYW5zaXRpb24gPyAnJyA6IHVuZGVmaW5lZCwgXCJkYXRhLWlzLXJlc3BvbnNpdmVcIjogaXNGbHVpZExheW91dCA/ICd0cnVlJyA6IHVuZGVmaW5lZCwgc3R5bGU6IG1heFdpZHRoID8geyAnLS13aXgtaW1nLW1heC13aWR0aCc6IG1heFdpZHRoIH0gOiB7fSB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW1nXCIsIHsgc3JjOiBzcmMsIHJlZjogaW1hZ2VSZWYsIGFsdDogYWx0IHx8ICcnLCByb2xlOiByb2xlLCBzdHlsZTogeyAuLi5wbGFjZWhvbGRlclN0eWxlLCAuLi5pbWFnZVN0eWxlcyB9LCBvbkxvYWQ6IG9uTG9hZCwgb25FcnJvcjogb25FcnJvciwgd2lkdGg6IGNvbnRhaW5lcldpZHRoID8gY29udGFpbmVyV2lkdGggOiB1bmRlZmluZWQsIGhlaWdodDogY29udGFpbmVySGVpZ2h0ID8gY29udGFpbmVySGVpZ2h0IDogdW5kZWZpbmVkLCAuLi5zb2NpYWxBdHRycywgc3JjU2V0OiBpc0luRmlyc3RGb2xkXG4gICAgICAgICAgICAgICAgPyBzcmNzZXQ/LmRwclxuICAgICAgICAgICAgICAgICAgICA/Lm1hcCgocykgPT4gU0NIRU1FX1JFLnRlc3QocykgPyBzIDogYCR7U1RBVElDX01FRElBX1VSTH0ke3N9YClcbiAgICAgICAgICAgICAgICAgICAgLmpvaW4oJywgJylcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCwgXG4gICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGZldGNocHJpb3JpdHkgdHlwZSBzaG91bGQgd29yayBpbiByZWFjdCA+IDE4LjMgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvMjU5MjdcbiAgICAgICAgICAgIGZldGNocHJpb3JpdHk6IGlzSW5GaXJzdEZvbGQgPyAnaGlnaCcgOiB1bmRlZmluZWQsIGxvYWRpbmc6IGlzSW5GaXJzdEZvbGQgPT09IGZhbHNlID8gJ2xhenknIDogdW5kZWZpbmVkLCBcbiAgICAgICAgICAgIC8vIFRoZSBzcmMgYXR0cmlidXRlIHRyaWdnZXJzIGEgbWlzbWF0Y2ggd2FybmluZyBiZWNhdXNlIHdvdy1pbWFnZSB1cGRhdGVzIGl0cyBzcmMgb3V0c2lkZSBvZiB0aGUgUmVhY3QgbGlmZWN5Y2xlLiBUaGlzIGNhdXNlcyBSZWFjdCB0byByZXRhaW4gdGhlIG9sZCB2YWx1ZSBpbiB0aGUgdmlydHVhbCBET00sIHdoaWNoIGNvdWxkIHBvdGVudGlhbGx5IGxlYWQgdG8gYSBidWcgd2hlcmUgdGhlIG9sZCB2YWx1ZSBpcyByZS1yZW5kZXJlZCBkdXJpbmcgdXBkYXRlcy4gSG93ZXZlciwgd2XigJlyZSBjb25maWRlbnQgdGhhdCB0aGlzIGlzc3VlIGlzIG5vdCByZXByb2R1Y2luZyBpbiBjdXJyZW50ICgxNi0xOCkgUmVhY3QgdmVyc2lvbnNcbiAgICAgICAgICAgIHN1cHByZXNzSHlkcmF0aW9uV2FybmluZzogdHJ1ZSB9KSkpO1xufTtcbmV4cG9ydCB7IEltYWdlLCBpbWFnZUtpdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SW1hZ2UuanMubWFwIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQgZGVmYXVsdCB7XCJpbWFnZVwiOlwiVGowMWhoXCJ9OyIsIid1c2UtY2xpZW50JztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEltYWdlIGFzIFBpeGVsUGVyZmVjdEltYWdlIH0gZnJvbSAnQHdpeC9pbWFnZSc7XG5pbXBvcnQgdHlwZSB7IEltYWdlUHJvcHMgfSBmcm9tICdAd2l4L2ltYWdlJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZS9JbWFnZS5tb2R1bGUuc2Nzcyc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbHN4JztcbmltcG9ydCB0eXBlIHsgUmVzcG9uc2l2ZUltYWdlUHJvcHMgfSBmcm9tICdAd2l4L2VkaXRvci1lbGVtZW50cy1kZWZpbml0aW9ucyc7XG5cbmNvbnN0IEltYWdlOiBSZWFjdC5GQzxcbiAgSW1hZ2VQcm9wcyAmIHtcbiAgICByZXNwb25zaXZlSW1hZ2VQcm9wcz86IFJlc3BvbnNpdmVJbWFnZVByb3BzO1xuICAgIHpvb21lZEltYWdlUmVzcG9uc2l2ZU92ZXJyaWRlPzogUmVzcG9uc2l2ZUltYWdlUHJvcHM7XG4gIH1cbj4gPSBwcm9wcyA9PiB7XG4gIGNvbnN0IHtcbiAgICBpZCxcbiAgICBhbHQsXG4gICAgcm9sZSxcbiAgICBjbGFzc05hbWUsXG4gICAgaW1hZ2VTdHlsZXMgPSB7fSxcbiAgICB0YXJnZXRXaWR0aCxcbiAgICB0YXJnZXRIZWlnaHQsXG4gICAgb25Mb2FkLFxuICAgIG9uRXJyb3IsXG4gICAgY29udGFpbmVyV2lkdGgsXG4gICAgY29udGFpbmVySGVpZ2h0LFxuICAgIGlzSW5GaXJzdEZvbGQsXG4gICAgc29jaWFsQXR0cnMsXG4gICAgc2tpcE1lYXN1cmUsXG4gICAgcmVzcG9uc2l2ZUltYWdlUHJvcHMsXG4gICAgem9vbWVkSW1hZ2VSZXNwb25zaXZlT3ZlcnJpZGUsXG4gICAgZGlzcGxheU1vZGUsXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCBlZmZlY3RpdmVXaWR0aCA9IHRhcmdldFdpZHRoIHx8IGNvbnRhaW5lcldpZHRoO1xuICBjb25zdCBlZmZlY3RpdmVIZWlnaHQgPSB0YXJnZXRIZWlnaHQgfHwgY29udGFpbmVySGVpZ2h0O1xuXG4gIGNvbnN0IHsgZmFsbGJhY2tTcmMsIHNyY3NldCwgc291cmNlcywgY3NzIH0gPSByZXNwb25zaXZlSW1hZ2VQcm9wcyB8fCB7fTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIGNvbnN0IHsgd2lkdGgsIGhlaWdodCwgLi4ucmVzcG9uc2l2ZUltZ0Nzc05vSGVpZ2h0QW5kV2lkdGggfSA9XG4gICAgcmVzcG9uc2l2ZUltYWdlUHJvcHM/LmNzcz8uaW1nIHx8IHt9O1xuXG4gIGNvbnN0IHJlc3BvbnNpdmVJbWFnZXNTdHlsZSA9XG4gICAgZGlzcGxheU1vZGUgPT09ICdvcmlnaW5hbF9zaXplJ1xuICAgICAgPyByZXNwb25zaXZlSW1hZ2VQcm9wcz8uY3NzPy5pbWdcbiAgICAgIDogcmVzcG9uc2l2ZUltZ0Nzc05vSGVpZ2h0QW5kV2lkdGg7XG5cbiAgaWYgKGZhbGxiYWNrU3JjICYmIHNyY3NldCAmJiBjc3MpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGltZ1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGZldGNocHJpb3JpdHkgdHlwZSBzaG91bGQgd29yayBpbiByZWFjdCA+IDE4LjMgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvMjU5MjdcbiAgICAgICAgZmV0Y2hwcmlvcml0eT17aXNJbkZpcnN0Rm9sZCA/ICdoaWdoJyA6IHVuZGVmaW5lZH1cbiAgICAgICAgbG9hZGluZz17aXNJbkZpcnN0Rm9sZCA9PT0gZmFsc2UgPyAnbGF6eScgOiB1bmRlZmluZWR9XG4gICAgICAgIHNpemVzPXtgJHtlZmZlY3RpdmVXaWR0aH1weGB9XG4gICAgICAgIHNyY1NldD17XG4gICAgICAgICAgc2tpcE1lYXN1cmVcbiAgICAgICAgICAgID8gem9vbWVkSW1hZ2VSZXNwb25zaXZlT3ZlcnJpZGU/LnNyY3NldFxuICAgICAgICAgICAgOiByZXNwb25zaXZlSW1hZ2VQcm9wcz8uc3Jjc2V0XG4gICAgICAgIH1cbiAgICAgICAgaWQ9e2lkfVxuICAgICAgICBzcmM9e2ZhbGxiYWNrU3JjfVxuICAgICAgICBhbHQ9e2FsdCB8fCAnJ31cbiAgICAgICAgcm9sZT17cm9sZX1cbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAuLi5pbWFnZVN0eWxlcyxcbiAgICAgICAgICAuLi4oc2tpcE1lYXN1cmVcbiAgICAgICAgICAgID8geyAuLi56b29tZWRJbWFnZVJlc3BvbnNpdmVPdmVycmlkZT8uY3NzPy5pbWcgfVxuICAgICAgICAgICAgOiB7IC4uLnJlc3BvbnNpdmVJbWFnZXNTdHlsZSB9KSxcbiAgICAgICAgfX1cbiAgICAgICAgb25Mb2FkPXtvbkxvYWR9XG4gICAgICAgIG9uRXJyb3I9e29uRXJyb3J9XG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhjbGFzc05hbWUsIHN0eWxlcy5pbWFnZSl9XG4gICAgICAgIHdpZHRoPXtlZmZlY3RpdmVXaWR0aH1cbiAgICAgICAgaGVpZ2h0PXtlZmZlY3RpdmVIZWlnaHR9XG4gICAgICAgIHsuLi5zb2NpYWxBdHRyc31cbiAgICAgIC8+XG4gICAgKTtcbiAgfVxuXG4gIGlmIChmYWxsYmFja1NyYyAmJiBzb3VyY2VzICYmIGNzcykge1xuICAgIHJldHVybiAoXG4gICAgICA8cGljdHVyZT5cbiAgICAgICAge3NvdXJjZXMubWFwKFxuICAgICAgICAgICh7XG4gICAgICAgICAgICBzcmNzZXQ6IHNvdXJjZVNyY3NldCxcbiAgICAgICAgICAgIG1lZGlhLFxuICAgICAgICAgICAgc2l6ZXMsXG4gICAgICAgICAgfToge1xuICAgICAgICAgICAgc3Jjc2V0OiBzdHJpbmc7XG4gICAgICAgICAgICBtZWRpYTogc3RyaW5nO1xuICAgICAgICAgICAgc2l6ZXM6IHN0cmluZztcbiAgICAgICAgICB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8c291cmNlXG4gICAgICAgICAgICAgICAga2V5PXttZWRpYX1cbiAgICAgICAgICAgICAgICBzcmNTZXQ9e3NvdXJjZVNyY3NldH1cbiAgICAgICAgICAgICAgICBtZWRpYT17bWVkaWF9XG4gICAgICAgICAgICAgICAgc2l6ZXM9e3NpemVzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9LFxuICAgICAgICApfVxuICAgICAgICA8aW1nXG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBmZXRjaHByaW9yaXR5IHR5cGUgc2hvdWxkIHdvcmsgaW4gcmVhY3QgPiAxOC4zIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzI1OTI3XG4gICAgICAgICAgZmV0Y2hwcmlvcml0eT17aXNJbkZpcnN0Rm9sZCA/ICdoaWdoJyA6IHVuZGVmaW5lZH1cbiAgICAgICAgICBsb2FkaW5nPXtpc0luRmlyc3RGb2xkID09PSBmYWxzZSA/ICdsYXp5JyA6IHVuZGVmaW5lZH1cbiAgICAgICAgICBpZD17aWR9XG4gICAgICAgICAgc3JjPXtzb3VyY2VzWzBdLmZhbGxiYWNrU3JjfVxuICAgICAgICAgIGFsdD17YWx0IHx8ICcnfVxuICAgICAgICAgIHJvbGU9e3JvbGV9XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIC4uLmltYWdlU3R5bGVzLFxuICAgICAgICAgICAgb2JqZWN0Rml0OiBzb3VyY2VzWzBdLmltZ1N0eWxlLm9iamVjdEZpdCxcbiAgICAgICAgICAgIG9iamVjdFBvc2l0aW9uOiBzb3VyY2VzWzBdLmltZ1N0eWxlLm9iamVjdFBvc2l0aW9uLFxuICAgICAgICAgIH19XG4gICAgICAgICAgb25Mb2FkPXtvbkxvYWR9XG4gICAgICAgICAgb25FcnJvcj17b25FcnJvcn1cbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoY2xhc3NOYW1lLCBzdHlsZXMuaW1hZ2UpfVxuICAgICAgICAgIHdpZHRoPXtlZmZlY3RpdmVXaWR0aH1cbiAgICAgICAgICBoZWlnaHQ9e2VmZmVjdGl2ZUhlaWdodH1cbiAgICAgICAgICB7Li4uc29jaWFsQXR0cnN9XG4gICAgICAgIC8+XG4gICAgICA8L3BpY3R1cmU+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiA8UGl4ZWxQZXJmZWN0SW1hZ2Ugey4uLnByb3BzfSAvPjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEltYWdlO1xuIiwiJ3VzZS1jbGllbnQnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBCYWNrZ3JvdW5kSW1hZ2VQcm9wcyB9IGZyb20gJy4uL0JhY2tncm91bmRJbWFnZS50eXBlcyc7XG5cbmNvbnN0IGRlZmF1bHRJZFByZWZpeCA9ICdiZ0ltZ18nO1xuXG5jb25zdCBCYWNrZ3JvdW5kSW1hZ2U6IFJlYWN0LkZDPEJhY2tncm91bmRJbWFnZVByb3BzPiA9IHByb3BzID0+IHtcbiAgY29uc3Qge1xuICAgIGNsYXNzTmFtZSxcbiAgICBjdXN0b21JZFByZWZpeCxcbiAgICBnZXRQbGFjZWhvbGRlcixcbiAgICBoYXNBbmltYXRpb24sXG4gICAgLi4uYmFja2dyb3VuZEltYWdlXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCB0aWxlSW1hZ2VkSW5mb1N0cmluZyA9IFJlYWN0LnVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgY29udGFpbmVySWQ6IGJhY2tncm91bmRJbWFnZS5jb250YWluZXJJZCxcbiAgICAgICAgYWxpZ25UeXBlOiBiYWNrZ3JvdW5kSW1hZ2UuYWxpZ25UeXBlLFxuICAgICAgICBmaXR0aW5nVHlwZTogYmFja2dyb3VuZEltYWdlLmRpc3BsYXlNb2RlLFxuICAgICAgICBoYXNBbmltYXRpb24sXG4gICAgICAgIGltYWdlRGF0YToge1xuICAgICAgICAgIHdpZHRoOiBiYWNrZ3JvdW5kSW1hZ2Uud2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiBiYWNrZ3JvdW5kSW1hZ2UuaGVpZ2h0LFxuICAgICAgICAgIHVyaTogYmFja2dyb3VuZEltYWdlLnVyaSxcbiAgICAgICAgICBuYW1lOiBiYWNrZ3JvdW5kSW1hZ2UubmFtZSxcbiAgICAgICAgICAuLi4oYmFja2dyb3VuZEltYWdlLnF1YWxpdHkgJiYgeyBxdWFsaXR5OiBiYWNrZ3JvdW5kSW1hZ2UucXVhbGl0eSB9KSxcbiAgICAgICAgICBkaXNwbGF5TW9kZTogYmFja2dyb3VuZEltYWdlLmRpc3BsYXlNb2RlLFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgW2JhY2tncm91bmRJbWFnZSwgaGFzQW5pbWF0aW9uXSxcbiAgKTtcblxuICBjb25zdCBpbWFnZVBsYWNlaG9sZGVyRGF0YSA9IFJlYWN0LnVzZVJlZjxhbnk+KG51bGwpO1xuXG4gIGlmICghaW1hZ2VQbGFjZWhvbGRlckRhdGEuY3VycmVudCkge1xuICAgIGltYWdlUGxhY2Vob2xkZXJEYXRhLmN1cnJlbnQgPSBnZXRQbGFjZWhvbGRlclxuICAgICAgPyBnZXRQbGFjZWhvbGRlcih7XG4gICAgICAgICAgZml0dGluZ1R5cGU6IGJhY2tncm91bmRJbWFnZS5kaXNwbGF5TW9kZSxcbiAgICAgICAgICBzcmM6IHtcbiAgICAgICAgICAgIGlkOiBiYWNrZ3JvdW5kSW1hZ2UudXJpLFxuICAgICAgICAgICAgd2lkdGg6IGJhY2tncm91bmRJbWFnZS53aWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogYmFja2dyb3VuZEltYWdlLmhlaWdodCxcbiAgICAgICAgICAgIG5hbWU6IGJhY2tncm91bmRJbWFnZS5uYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdGFyZ2V0OiB7XG4gICAgICAgICAgICB3aWR0aDogYmFja2dyb3VuZEltYWdlLmNvbnRhaW5lcldpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiBiYWNrZ3JvdW5kSW1hZ2UuY29udGFpbmVySGVpZ2h0LFxuICAgICAgICAgICAgYWxpZ25tZW50OiBiYWNrZ3JvdW5kSW1hZ2UuYWxpZ25UeXBlLFxuICAgICAgICAgICAgaHRtbFRhZzogJ2JnJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIGhhc0FuaW1hdGlvbixcbiAgICAgICAgICAgIGFsbG93QW5pbWF0ZWRUcmFuc2Zvcm06IGZhbHNlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICA6IC8vIHRvIGtlZXAgYW4gZW1wdHkgcGxhY2Vob2xkZXIgZGF0YVxuICAgICAgICB7XG4gICAgICAgICAgdXJpOiB1bmRlZmluZWQsIC8vIHRvIHJlbW92ZSBzcmMgYXR0cmlidXRlIGNvbXBsZXRlbHlcbiAgICAgICAgICBjc3M6IHsgaW1nOiB7fSB9LFxuICAgICAgICAgIGF0dHI6IHsgaW1nOiB7fSwgY29udGFpbmVyOiB7fSB9LFxuICAgICAgICB9O1xuICB9XG5cbiAgY29uc3QgY3VycmVudFBsYWNlaG9sZGVyID0gaW1hZ2VQbGFjZWhvbGRlckRhdGEuY3VycmVudDtcblxuICBjb25zdCBzcmMgPSBjdXJyZW50UGxhY2Vob2xkZXI/LnVyaSA/PyAnJztcbiAgY29uc3QgcGxhY2Vob2xkZXJTdHlsZSA9IGN1cnJlbnRQbGFjZWhvbGRlci5jc3M/LmNvbnRhaW5lciA/PyB7fTtcblxuICBjb25zdCBwbGFjZWhvbGRlciA9IE9iamVjdC5hc3NpZ24oXG4gICAgc3JjXG4gICAgICA/IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kSW1hZ2U6IGB1cmwoJHtzcmN9KWAsXG4gICAgICAgIH1cbiAgICAgIDoge30sXG4gICAgcGxhY2Vob2xkZXJTdHlsZSxcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIC8vIFx0Q3VzdG9tIGVsZW1lbnQgZGVmaW5lZCBpbjogaHR0cHM6Ly9naXRodWIuY29tL3dpeC1wcml2YXRlL3NhbnRhLWNvcmUvYmxvYi9tYXN0ZXIvd2l4LWN1c3RvbS1lbGVtZW50cy9zcmMvZWxlbWVudHMvd2l4QmdJbWFnZS93aXhCZ0ltYWdlLmpzXG4gICAgPHdpeC1iZy1pbWFnZVxuICAgICAgaWQ9e2Ake2N1c3RvbUlkUHJlZml4IHx8IGRlZmF1bHRJZFByZWZpeH0ke2JhY2tncm91bmRJbWFnZS5jb250YWluZXJJZH1gfVxuICAgICAgY2xhc3M9e2NsYXNzTmFtZX1cbiAgICAgIHN0eWxlPXtwbGFjZWhvbGRlcn1cbiAgICAgIGRhdGEtdGlsZWQtaW1hZ2UtaW5mbz17dGlsZUltYWdlZEluZm9TdHJpbmd9XG4gICAgICBkYXRhLWhhcy1iZy1zY3JvbGwtZWZmZWN0PXtiYWNrZ3JvdW5kSW1hZ2UuaGFzQmdTY3JvbGxFZmZlY3QgfHwgJyd9XG4gICAgICBkYXRhLWJnLWVmZmVjdC1uYW1lPXtiYWNrZ3JvdW5kSW1hZ2UuYmdFZmZlY3ROYW1lIHx8ICcnfVxuICAgICAgZGF0YS1tb3Rpb24tcGFydD17YEJHX0lNRyAke2JhY2tncm91bmRJbWFnZS5jb250YWluZXJJZH1gfVxuICAgIC8+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBCYWNrZ3JvdW5kSW1hZ2U7XG4iLCJleHBvcnQgY29uc3QgQ09NUF9JRF9QTEFDRUhPTERFUiA9ICc8JT0gY29tcElkICU+JztcbmNvbnN0IENPTVBfSURfUExBQ0VIT0xERVJfUkVHRVggPSBuZXcgUmVnRXhwKENPTVBfSURfUExBQ0VIT0xERVIsICdnJyk7XG5leHBvcnQgY29uc3QgcmVwbGFjZUNvbXBJZFBsYWNlaG9sZGVyID0gKHN0ciwgY29tcElkKSA9PiBzdHIucmVwbGFjZShDT01QX0lEX1BMQUNFSE9MREVSX1JFR0VYLCBjb21wSWQpO1xuZXhwb3J0IGNvbnN0IHJlcGxhY2VDb21wSWRQbGFjZWhvbGRlckluU3ZnQ29udGVudCA9ICh2ZWN0b3JJbWFnZVByb3BzLCBpZCkgPT4ge1xuICAgIGlmICh2ZWN0b3JJbWFnZVByb3BzICYmIHZlY3RvckltYWdlUHJvcHMuc3ZnQ29udGVudCkge1xuICAgICAgICB2ZWN0b3JJbWFnZVByb3BzLnN2Z0NvbnRlbnQgPSByZXBsYWNlQ29tcElkUGxhY2Vob2xkZXIodmVjdG9ySW1hZ2VQcm9wcy5zdmdDb250ZW50LCBpZCk7XG4gICAgfVxufTtcbmV4cG9ydCBjb25zdCBnZXRGaWx0ZXJFZmZlY3RTdHlsZSA9IChpZCwgZmlsdGVyRWZmZWN0U3ZnVXJsKSA9PiB7XG4gICAgcmV0dXJuIGZpbHRlckVmZmVjdFN2Z1VybFxuICAgICAgICA/IHtcbiAgICAgICAgICAgICctLWZpbHRlci1lZmZlY3Qtc3ZnLXVybCc6IHJlcGxhY2VDb21wSWRQbGFjZWhvbGRlcihmaWx0ZXJFZmZlY3RTdmdVcmwsIGlkKSxcbiAgICAgICAgfVxuICAgICAgICA6IHt9O1xufTtcbmV4cG9ydCBjb25zdCByZXBsYWNlQ29udGVudElkcyA9IChzdmcsIGNvbXBJZCkgPT4ge1xuICAgIGNvbnN0IGlkTWFwID0ge307XG4gICAgLy8gbmVlZCB0byBhY2NvdW50IGZvciBjb21wSWQgcGxhY2Vob2xkZXIgYDwlPSBjb21wSWQgJT5gXG4gICAgY29uc3QgcmVzdWx0ID0gc3ZnLnJlcGxhY2UoL1xcc2lkPVwiKFteXCI8XSspXCIvZywgKG1hdGNoLCBpZCkgPT4ge1xuICAgICAgICBjb25zdCB1bmlxdWUgPSBpZC5lbmRzV2l0aChjb21wSWQpID8gaWQgOiBgJHtpZH1fJHtjb21wSWR9YDtcbiAgICAgICAgaWRNYXBbaWRdID0gdW5pcXVlO1xuICAgICAgICByZXR1cm4gYCBpZD1cIiR7dW5pcXVlfVwiYDtcbiAgICB9KTtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoaWRNYXApLnJlZHVjZSgoY3VycmVudCwga2V5KSA9PiBjdXJyZW50LnJlcGxhY2UobmV3IFJlZ0V4cChgKCR7a2V5fSkoPyFfJHtjb21wSWR9KWAsICdnJyksIGlkTWFwW2tleV0pLCByZXN1bHQpO1xufTtcbmV4cG9ydCBjb25zdCBtb2RpZnlBMTFZQXR0cmlidXRlcyA9IChzdmcsIGFyaWFMYWJlbCkgPT4ge1xuICAgIGxldCByZXN1bHQgPSBzdmc7XG4gICAgY29uc3QgYXJpYUxhYmVsTWF0Y2hlciA9IC9hcmlhLWxhYmVsPVwiW15cIl0qXCIvO1xuICAgIGNvbnN0IGFyaWFIaWRkZW5NYXRjaGVyID0gL2FyaWEtaGlkZGVuPVwiP3RydWVcIj8vO1xuICAgIGNvbnN0IHJvbGVNYXRjaGVyID0gL3JvbGU9XCI/cHJlc2VudGF0aW9uXCI/LztcbiAgICAvLyBpZiB0aGUgc3ZnIGNvbnRhaW5zIGFuIGFyaWEtbGFiZWwgbW9kaWZ5IGl0LCBlbHNlIGFwcGVuZCBpdFxuICAgIGlmIChzdmcubWF0Y2goYXJpYUxhYmVsTWF0Y2hlcikpIHtcbiAgICAgICAgcmVzdWx0ID0gc3ZnLnJlcGxhY2UoYXJpYUxhYmVsTWF0Y2hlciwgYGFyaWEtbGFiZWw9XCIke2FyaWFMYWJlbH1cImApO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gc3ZnLnJlcGxhY2UoLyg8c3ZnW14+XSopPi8sIGAkMSBhcmlhLWxhYmVsPVwiJHthcmlhTGFiZWx9XCI+YCk7XG4gICAgfVxuICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKGFyaWFIaWRkZW5NYXRjaGVyLCAnJyk7XG4gICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2Uocm9sZU1hdGNoZXIsIGByb2xlPVwiaW1nXCJgKTtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXZlY3RvckltYWdlVXRpbHMuanMubWFwIiwiY29uc3QgSE9WRVJfU1VGRklYID0gJzpob3Zlcic7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0RGVmYXVsdElkOiAoaWQ/OiBzdHJpbmcpID0+IGlkPy5yZXBsYWNlKEhPVkVSX1NVRkZJWCwgJycpLFxufTtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuZXhwb3J0IGRlZmF1bHQge1widmlkZW8tY29udGFpbmVyXCI6XCJiWDlPX1NcIixcInZpZGVvQ29udGFpbmVyXCI6XCJiWDlPX1NcIixcInZpZGVvLXBvc3RlclwiOlwiWl93Q3dyXCIsXCJ2aWRlb1Bvc3RlclwiOlwiWl93Q3dyXCIsXCJ2aWRlby1wb3N0ZXItaW1nXCI6XCJKeGtfVUxcIixcInZpZGVvUG9zdGVySW1nXCI6XCJKeGtfVUxcIixcInZpZGVvXCI6XCJLOE1TcmFcIixcImZpbHRlci1lZmZlY3Qtc3ZnXCI6XCJZVGIzYjRcIixcImZpbHRlckVmZmVjdFN2Z1wiOlwiWVRiM2I0XCJ9OyIsIid1c2UtY2xpZW50JztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgcmVwbGFjZUNvbXBJZFBsYWNlaG9sZGVyIH0gZnJvbSAnQHdpeC9lZGl0b3ItZWxlbWVudHMtY29tbW9uLXV0aWxzJztcbmltcG9ydCBJbWFnZSBmcm9tICcuLi8uLi9JbWFnZS92aWV3ZXIvSW1hZ2UnO1xuaW1wb3J0IHR5cGUgeyBJVmlkZW9Qcm9wcyB9IGZyb20gJy4uL1ZpZGVvLnR5cGVzJztcbmltcG9ydCBob3ZlckJveFV0aWxzIGZyb20gJy4uLy4uL01lZGlhQ29udGFpbmVycy9Ib3ZlckJveC91dGlscyc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGUvVmlkZW8uc2Nzcyc7XG5cbmNvbnN0IFZJREVPX0NMQVNTX0ZPUl9MQVlPVVQgPSAnYmdWaWRlbyc7XG5jb25zdCBWSURFT19QT1NURVJfQ0xBU1NfRk9SX0xBWU9VVCA9ICdiZ1ZpZGVvcG9zdGVyJztcblxuY29uc3QgUE9TVEVSX0lNQUdFX1FVQUxJVFkgPSB7XG4gIHF1YWxpdHk6IHtcbiAgICB1bnNoYXJwTWFzazoge1xuICAgICAgcmFkaXVzOiAwLjMzLFxuICAgICAgYW1vdW50OiAxLjAsXG4gICAgICB0aHJlc2hvbGQ6IDAuMCxcbiAgICB9LFxuICB9LFxuICBkZXZpY2VQaXhlbFJhdGlvOiAxLFxufTtcblxuY29uc3QgVmlkZW86IFJlYWN0LkZDPElWaWRlb1Byb3BzPiA9IHByb3BzID0+IHtcbiAgY29uc3Qge1xuICAgIGlkLFxuICAgIHZpZGVvUmVmLFxuICAgIHZpZGVvSW5mbyxcbiAgICBwb3N0ZXJJbWFnZUluZm8sXG4gICAgbXV0ZWQsXG4gICAgcHJlbG9hZCxcbiAgICBsb29wLFxuICAgIGFsdCxcbiAgICBpc1ZpZGVvRW5hYmxlZCxcbiAgICBnZXRQbGFjZWhvbGRlcixcbiAgICBleHRyYUNsYXNzTmFtZSA9ICcnLFxuICB9ID0gcHJvcHM7XG5cbiAgLy8gZml4IGNvbnRhaW5lcklkIHRvIHN1cHBvcnQgaG92ZXJCb3ggY29tcG9uZW50XG4gIHZpZGVvSW5mby5jb250YWluZXJJZCA9IGhvdmVyQm94VXRpbHMuZ2V0RGVmYXVsdElkKHZpZGVvSW5mby5jb250YWluZXJJZCkhO1xuXG4gIGNvbnN0IHZpZGVvSW5mb1N0cmluZyA9IFJlYWN0LnVzZU1lbW8oXG4gICAgKCkgPT4gSlNPTi5zdHJpbmdpZnkodmlkZW9JbmZvKSxcbiAgICBbdmlkZW9JbmZvXSxcbiAgKTtcbiAgY29uc3QgVmlkZW9Qb3N0ZXJJbWFnZSA9IChcbiAgICA8PlxuICAgICAge3Bvc3RlckltYWdlSW5mby5maWx0ZXJFZmZlY3RTdmdTdHJpbmcgJiYgKFxuICAgICAgICA8c3ZnXG4gICAgICAgICAgaWQ9e2BzdmdfJHt2aWRlb0luZm8uY29udGFpbmVySWR9YH1cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJFZmZlY3RTdmd9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGVmc1xuICAgICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tcbiAgICAgICAgICAgICAgX19odG1sOiByZXBsYWNlQ29tcElkUGxhY2Vob2xkZXIoXG4gICAgICAgICAgICAgICAgcG9zdGVySW1hZ2VJbmZvLmZpbHRlckVmZmVjdFN2Z1N0cmluZyxcbiAgICAgICAgICAgICAgICB2aWRlb0luZm8uY29udGFpbmVySWQhLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgICl9XG4gICAgICA8SW1hZ2VcbiAgICAgICAga2V5PXtgJHt2aWRlb0luZm8udmlkZW9JZH1faW1nYH1cbiAgICAgICAgaWQ9e2Ake3Bvc3RlckltYWdlSW5mby5jb250YWluZXJJZH1faW1nYH1cbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKFxuICAgICAgICAgIHN0eWxlcy52aWRlb1Bvc3RlcixcbiAgICAgICAgICBzdHlsZXMudmlkZW9Qb3N0ZXJJbWcsXG4gICAgICAgICAgVklERU9fUE9TVEVSX0NMQVNTX0ZPUl9MQVlPVVQsXG4gICAgICAgICAgZXh0cmFDbGFzc05hbWUsXG4gICAgICAgICl9XG4gICAgICAgIGltYWdlU3R5bGVzPXt7IHdpZHRoOiAnMTAwJScsIGhlaWdodDogJzEwMCUnIH19XG4gICAgICAgIHsuLi5wb3N0ZXJJbWFnZUluZm99XG4gICAgICAgIHsuLi5QT1NURVJfSU1BR0VfUVVBTElUWX1cbiAgICAgICAgZ2V0UGxhY2Vob2xkZXI9e2dldFBsYWNlaG9sZGVyfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcblxuICBpZiAoIWlzVmlkZW9FbmFibGVkKSB7XG4gICAgcmV0dXJuIFZpZGVvUG9zdGVySW1hZ2U7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIC8vIEN1c3RvbSBlbGVtZW50IGRlZmluZWQgaW46IGh0dHBzOi8vZ2l0aHViLmNvbS93aXgtcHJpdmF0ZS9zYW50YS1jb3JlL2Jsb2IvbWFzdGVyL3dpeC1jdXN0b20tZWxlbWVudHMvc3JjL2VsZW1lbnRzL3dpeFZpZGVvL3dpeFZpZGVvLmpzXG4gICAgPHdpeC12aWRlb1xuICAgICAgaWQ9e2lkfVxuICAgICAgZGF0YS12aWRlby1pbmZvPXt2aWRlb0luZm9TdHJpbmd9XG4gICAgICBkYXRhLW1vdGlvbi1wYXJ0PXtgQkdfSU1HICR7dmlkZW9JbmZvLmNvbnRhaW5lcklkfWB9XG4gICAgICBjbGFzcz17Y2xhc3NOYW1lcyhcbiAgICAgICAgc3R5bGVzLnZpZGVvQ29udGFpbmVyLFxuICAgICAgICBWSURFT19DTEFTU19GT1JfTEFZT1VULFxuICAgICAgICBleHRyYUNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgPlxuICAgICAgPHZpZGVvXG4gICAgICAgIGtleT17YCR7dmlkZW9JbmZvLnZpZGVvSWR9X3ZpZGVvYH1cbiAgICAgICAgcmVmPXt2aWRlb1JlZn1cbiAgICAgICAgaWQ9e2Ake3ZpZGVvSW5mby5jb250YWluZXJJZH1fdmlkZW9gfVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWRlb31cbiAgICAgICAgY3Jvc3NPcmlnaW49XCJhbm9ueW1vdXNcIlxuICAgICAgICBhcmlhLWxhYmVsPXthbHR9XG4gICAgICAgIHBsYXlzSW5saW5lPXt0cnVlfVxuICAgICAgICBwcmVsb2FkPXtwcmVsb2FkfVxuICAgICAgICBtdXRlZD17bXV0ZWR9XG4gICAgICAgIGxvb3A9e2xvb3B9XG4gICAgICAvPlxuICAgICAge1ZpZGVvUG9zdGVySW1hZ2V9XG4gICAgPC93aXgtdmlkZW8+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBWaWRlbztcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuZXhwb3J0IGRlZmF1bHQge1wibWVkaWEtY29udGFpbmVyXCI6XCJTVXowV0tcIixcIm1lZGlhQ29udGFpbmVyXCI6XCJTVXowV0tcIn07IiwiJ3VzZS1jbGllbnQnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBCYWNrZ3JvdW5kTWVkaWFQcm9wcyB9IGZyb20gJy4uL0JhY2tncm91bmRNZWRpYS50eXBlcyc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGUvQmFja2dyb3VuZE1lZGlhLnNjc3MnO1xuXG5jb25zdCBCYWNrZ3JvdW5kTWVkaWE6IFJlYWN0LkZDPEJhY2tncm91bmRNZWRpYVByb3BzPiA9IHByb3BzID0+IHtcbiAgY29uc3Qge1xuICAgIGlkLFxuICAgIGNvbnRhaW5lcklkLFxuICAgIHBhZ2VJZCxcbiAgICBjaGlsZHJlbixcbiAgICBiZ0VmZmVjdE5hbWUgPSAnJyxcbiAgICBjb250YWluZXJTaXplLFxuICB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICAvLyBcdEN1c3RvbSBlbGVtZW50IGRlZmluZWQgaW46IGh0dHBzOi8vZ2l0aHViLmNvbS93aXgtcHJpdmF0ZS9zYW50YS1jb3JlL2Jsb2IvbWFzdGVyL3dpeC1jdXN0b20tZWxlbWVudHMvc3JjL2VsZW1lbnRzL3dpeEJnTWVkaWEvd2l4QmdNZWRpYS5qc1xuICAgIDx3aXgtYmctbWVkaWFcbiAgICAgIGlkPXtpZH1cbiAgICAgIGNsYXNzPXtzdHlsZXMubWVkaWFDb250YWluZXJ9XG4gICAgICBkYXRhLWNvbnRhaW5lci1pZD17Y29udGFpbmVySWR9XG4gICAgICBkYXRhLWNvbnRhaW5lci1zaXplPXtgJHtjb250YWluZXJTaXplPy53aWR0aCB8fCAwfSwgJHtcbiAgICAgICAgY29udGFpbmVyU2l6ZT8uaGVpZ2h0IHx8IDBcbiAgICAgIH1gfVxuICAgICAgZGF0YS1wYWdlLWlkPXtwYWdlSWR9XG4gICAgICBkYXRhLWJnLWVmZmVjdC1uYW1lPXtiZ0VmZmVjdE5hbWV9XG4gICAgICBkYXRhLW1vdGlvbi1wYXJ0PXtgQkdfTUVESUEgJHtjb250YWluZXJJZH1gfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L3dpeC1iZy1tZWRpYT5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEJhY2tncm91bmRNZWRpYTtcbiIsImV4cG9ydCBjb25zdCBUZXN0SWRzID0ge1xuICBiZ092ZXJsYXk6ICdiZ092ZXJsYXknLFxufSBhcyBjb25zdDtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuZXhwb3J0IGRlZmF1bHQge1wiYmctb3ZlcmxheVwiOlwibTRraFNQXCIsXCJiZ092ZXJsYXlcIjpcIm00a2hTUFwiLFwiYmctaW1nLW92ZXJsYXlcIjpcIkZOeE9uNVwiLFwiYmdJbWdPdmVybGF5XCI6XCJGTnhPbjVcIn07IiwiJ3VzZS1jbGllbnQnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBCYWNrZ3JvdW5kT3ZlcmxheVByb3BzIH0gZnJvbSAnLi4vQmFja2dyb3VuZE92ZXJsYXkudHlwZXMnO1xuaW1wb3J0IHsgVGVzdElkcyB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgQmFja2dyb3VuZEltYWdlIGZyb20gJy4uLy4uL0JhY2tncm91bmRJbWFnZS92aWV3ZXIvQmFja2dyb3VuZEltYWdlJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZS9CYWNrZ3JvdW5kT3ZlcmxheS5zY3NzJztcblxuY29uc3QgQmFja2dyb3VuZE92ZXJsYXk6IFJlYWN0LkZDPEJhY2tncm91bmRPdmVybGF5UHJvcHM+ID0gcHJvcHMgPT4ge1xuICBjb25zdCB7IGltYWdlT3ZlcmxheSB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGRhdGEtdGVzdGlkPXtUZXN0SWRzLmJnT3ZlcmxheX0gY2xhc3NOYW1lPXtzdHlsZXMuYmdPdmVybGF5fT5cbiAgICAgIHtpbWFnZU92ZXJsYXkgJiYgKFxuICAgICAgICA8QmFja2dyb3VuZEltYWdlXG4gICAgICAgICAgY3VzdG9tSWRQcmVmaXg9XCJiZ0ltZ092ZXJsYXlfXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5iZ0ltZ092ZXJsYXl9XG4gICAgICAgICAgey4uLmltYWdlT3ZlcmxheX1cbiAgICAgICAgPjwvQmFja2dyb3VuZEltYWdlPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEJhY2tncm91bmRPdmVybGF5O1xuIiwiZXhwb3J0IGNvbnN0IFRlc3RJZHMgPSB7XG4gIGJnTGF5ZXJzOiAnYmdMYXllcnMnLFxuICBjb2xvclVuZGVybGF5OiAnY29sb3JVbmRlcmxheScsXG4gIG1lZGlhUGFkZGluZzogJ21lZGlhUGFkZGluZycsXG4gIGNhbnZhczogJ2NhbnZhcycsXG59IGFzIGNvbnN0O1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQgZGVmYXVsdCB7XCJsYXllcnMtY29udGFpbmVyXCI6XCJNVzVJV1ZcIixcImxheWVyc0NvbnRhaW5lclwiOlwiTVc1SVdWXCIsXCJmdWxsLXNjcmVlbi1zY3JvbGwtZWZmZWN0XCI6XCJOM2VnMHNcIixcImZ1bGxTY3JlZW5TY3JvbGxFZmZlY3RcIjpcIk4zZWcwc1wiLFwiZmlsbC1sYXllclwiOlwiS3YxYVZ0XCIsXCJmaWxsTGF5ZXJcIjpcIkt2MWFWdFwiLFwiaW1hZ2UtZmlsbC1sYXllclwiOlwiZExQbHhZXCIsXCJpbWFnZUZpbGxMYXllclwiOlwiZExQbHhZXCIsXCJiZy1tZWRpYVwiOlwiVmdPOVlnXCIsXCJiZ01lZGlhXCI6XCJWZ085WWdcIixcImJnLXVuZGVybGF5XCI6XCJMV2JBYXZcIixcImJnVW5kZXJsYXlcIjpcIkxXYkFhdlwiLFwidmlkZW9GaWxsTGF5ZXJcIjpcInlLNmFTQ1wiLFwiYWxwaGEtY2FudmFzXCI6XCJLX1l4TWRcIixcImFscGhhQ2FudmFzXCI6XCJLX1l4TWRcIixcIm1lZGlhLXBhZGRpbmctbGF5ZXJcIjpcIk5HamNKTlwiLFwibWVkaWFQYWRkaW5nTGF5ZXJcIjpcIk5HamNKTlwiLFwidHJhbnNmb3Jtc1wiOlwibU5Hc1VNXCIsXCJtZWRpYS1jYW52YXNcIjpcIkk4eEE0TFwiLFwibWVkaWFDYW52YXNcIjpcIkk4eEE0TFwifTsiLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgRmlsbExheWVyc1Byb3BzIH0gZnJvbSAnLi4vRmlsbExheWVycy50eXBlcyc7XG5cbnR5cGUgTG9hZGFibGVQcm9wcyA9IFBpY2s8RmlsbExheWVyc1Byb3BzLCAnaW1hZ2UnPjtcbnR5cGUgVXNlT25Mb2FkUHJvcHMgPSBMb2FkYWJsZVByb3BzICYgUGljazxGaWxsTGF5ZXJzUHJvcHMsICdvblJlYWR5Jz47XG5cbmV4cG9ydCBjb25zdCB1c2VPbkxvYWRzRXZlbnRzID0gKHsgb25SZWFkeSwgaW1hZ2UgfTogVXNlT25Mb2FkUHJvcHMpID0+IHtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAob25SZWFkeSAmJiAhaW1hZ2UpIHtcbiAgICAgIG9uUmVhZHkoKTtcbiAgICB9XG4gIH0sIFtvblJlYWR5LCBpbWFnZV0pO1xuICByZXR1cm4ge1xuICAgIG9uSW1hZ2VMb2FkOiAoZTogUmVhY3QuU3ludGhldGljRXZlbnQ8SFRNTEltYWdlRWxlbWVudCwgRXZlbnQ+KSA9PiB7XG4gICAgICBpZiAoaW1hZ2U/Lm9uTG9hZCkge1xuICAgICAgICBpbWFnZS5vbkxvYWQoZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvblJlYWR5KSB7XG4gICAgICAgIG9uUmVhZHkoKTtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xufTtcbiIsIid1c2UtY2xpZW50JztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2Nsc3gnO1xuaW1wb3J0IEltYWdlIGZyb20gJy4uLy4uL0ltYWdlL3ZpZXdlci9JbWFnZSc7XG5pbXBvcnQgQmFja2dyb3VuZEltYWdlIGZyb20gJy4uLy4uL0JhY2tncm91bmRJbWFnZS92aWV3ZXIvQmFja2dyb3VuZEltYWdlJztcbmltcG9ydCBWaWRlbyBmcm9tICcuLi8uLi9WaWRlby92aWV3ZXIvVmlkZW8nO1xuaW1wb3J0IEJhY2tncm91bmRNZWRpYSBmcm9tICcuLi8uLi9CYWNrZ3JvdW5kTWVkaWEvdmlld2VyL0JhY2tncm91bmRNZWRpYSc7XG5pbXBvcnQgQmFja2dyb3VuZE92ZXJsYXkgZnJvbSAnLi4vLi4vQmFja2dyb3VuZE92ZXJsYXkvdmlld2VyL0JhY2tncm91bmRPdmVybGF5JztcbmltcG9ydCB0eXBlIHsgRmlsbExheWVyc1Byb3BzIH0gZnJvbSAnLi4vRmlsbExheWVycy50eXBlcyc7XG5pbXBvcnQgeyBUZXN0SWRzIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBob3ZlckJveFV0aWxzIGZyb20gJy4uLy4uL01lZGlhQ29udGFpbmVycy9Ib3ZlckJveC91dGlscyc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGUvRmlsbExheWVycy5zY3NzJztcbmltcG9ydCB7IHVzZU9uTG9hZHNFdmVudHMgfSBmcm9tICcuL3VzZU9uTG9hZHNFdmVudHMnO1xuXG5jb25zdCBJTUFHRV9DTEFTU19GT1JfTEFZT1VUID0gJ2JnSW1hZ2UnO1xuXG5jb25zdCBGaWxsTGF5ZXJzOiBSZWFjdC5GQzxGaWxsTGF5ZXJzUHJvcHM+ID0gcHJvcHMgPT4ge1xuICBjb25zdCB7XG4gICAgdmlkZW9SZWYsXG4gICAgY2FudmFzUmVmLFxuICAgIGhhc0JnRnVsbHNjcmVlblNjcm9sbEVmZmVjdCxcbiAgICBpbWFnZSxcbiAgICBiYWNrZ3JvdW5kSW1hZ2UsXG4gICAgYmFja2dyb3VuZE1lZGlhLFxuICAgIHZpZGVvLFxuICAgIGJhY2tncm91bmRPdmVybGF5LFxuICAgIHNob3VsZFBhZE1lZGlhLFxuICAgIGV4dHJhQ2xhc3MgPSAnJyxcbiAgICBzaG91bGRSZW5kZXJVbmRlcmxheSA9ICF2aWRlbyxcbiAgICByZWR1Y2VkTW90aW9uID0gZmFsc2UsXG4gICAgZ2V0UGxhY2Vob2xkZXIsXG4gICAgaGFzQ2FudmFzQW5pbWF0aW9uLFxuICAgIHVzZVdpeE1lZGlhQ2FudmFzLFxuICAgIG9uQ2xpY2ssXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgeyBvbkltYWdlTG9hZCB9ID0gdXNlT25Mb2Fkc0V2ZW50cyhwcm9wcyk7XG4gIC8vIGZpeCBjb250YWluZXJJZCB0byBzdXBwb3J0IGhvdmVyQm94IGNvbXBvbmVudFxuICBjb25zdCBjb250YWluZXJJZCA9IGhvdmVyQm94VXRpbHMuZ2V0RGVmYXVsdElkKHByb3BzLmNvbnRhaW5lcklkKTtcbiAgY29uc3QgZml4ZWRJbWFnZUlkID0gYGltZ18ke2hvdmVyQm94VXRpbHMuZ2V0RGVmYXVsdElkKGNvbnRhaW5lcklkKX1gO1xuXG4gIGNvbnN0IEltYWdlQ29tcG9uZW50ID0gaW1hZ2UgJiYgKFxuICAgIDxJbWFnZVxuICAgICAgaWQ9e2ZpeGVkSW1hZ2VJZH1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhcbiAgICAgICAgc3R5bGVzLmZpbGxMYXllcixcbiAgICAgICAgc3R5bGVzLmltYWdlRmlsbExheWVyLFxuICAgICAgICBzdHlsZXMudHJhbnNmb3JtcyxcbiAgICAgICAgSU1BR0VfQ0xBU1NfRk9SX0xBWU9VVCxcbiAgICAgICl9XG4gICAgICAvLyBvdmVycmlkaW5nIGRpbWVuc2lvbnMgcmV0dXJuZWQgZnJvbSAgaW1hZ2VDbGllbnRBcGkuZ2V0UGxhY2Vob2xkZXIoKS5jc3MuaW1nXG4gICAgICBpbWFnZVN0eWxlcz17eyB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICcxMDAlJyB9fVxuICAgICAgZ2V0UGxhY2Vob2xkZXI9e2dldFBsYWNlaG9sZGVyfVxuICAgICAgey4uLmltYWdlfVxuICAgICAgb25Mb2FkPXtvbkltYWdlTG9hZH1cbiAgICAvPlxuICApO1xuICBjb25zdCBCYWNrZ3JvdW5kSW1hZ2VDb21wb25lbnQgPSBiYWNrZ3JvdW5kSW1hZ2UgJiYgKFxuICAgIDxCYWNrZ3JvdW5kSW1hZ2VcbiAgICAgIHsuLi5iYWNrZ3JvdW5kSW1hZ2V9XG4gICAgICBjb250YWluZXJJZD17Y29udGFpbmVySWR9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXG4gICAgICAgIHN0eWxlcy5maWxsTGF5ZXIsXG4gICAgICAgIHN0eWxlcy5pbWFnZUZpbGxMYXllcixcbiAgICAgICAgc3R5bGVzLnRyYW5zZm9ybXMsXG4gICAgICAgIElNQUdFX0NMQVNTX0ZPUl9MQVlPVVQsXG4gICAgICApfVxuICAgICAgZ2V0UGxhY2Vob2xkZXI9e2dldFBsYWNlaG9sZGVyfVxuICAgIC8+XG4gICk7XG4gIGNvbnN0IFZpZGVvQ29tcG9uZW50ID0gdmlkZW8gJiYgKFxuICAgIDxWaWRlb1xuICAgICAgaWQ9e2B2aWRlb0NvbnRhaW5lcl8ke2NvbnRhaW5lcklkfWB9XG4gICAgICB7Li4udmlkZW99XG4gICAgICBleHRyYUNsYXNzTmFtZT17c3R5bGVzLnZpZGVvRmlsbExheWVyfVxuICAgICAgcmVkdWNlZE1vdGlvbj17cmVkdWNlZE1vdGlvbn1cbiAgICAgIHZpZGVvUmVmPXt2aWRlb1JlZn1cbiAgICAgIGdldFBsYWNlaG9sZGVyPXtnZXRQbGFjZWhvbGRlcn1cbiAgICAvPlxuICApO1xuXG4gIGNvbnN0IE1lZGlhID1cbiAgICAodXNlV2l4TWVkaWFDYW52YXMgJiYgY2FudmFzUmVmKSB8fCBoYXNDYW52YXNBbmltYXRpb24gPyAoXG4gICAgICA8d2l4LW1lZGlhLWNhbnZhc1xuICAgICAgICBkYXRhLWNvbnRhaW5lci1pZD17Y29udGFpbmVySWR9XG4gICAgICAgIGNsYXNzPXtoYXNDYW52YXNBbmltYXRpb24gPyBzdHlsZXMubWVkaWFDYW52YXMgOiAnJ31cbiAgICAgID5cbiAgICAgICAge0ltYWdlQ29tcG9uZW50fVxuICAgICAgICB7QmFja2dyb3VuZEltYWdlQ29tcG9uZW50fVxuICAgICAgICB7VmlkZW9Db21wb25lbnR9XG4gICAgICAgIDxjYW52YXNcbiAgICAgICAgICBpZD17YCR7Y29udGFpbmVySWR9d2ViZ2xjYW52YXNgfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhzdHlsZXMuYWxwaGFDYW52YXMsICd3ZWJnbGNhbnZhcycpfVxuICAgICAgICAgIGFyaWEtbGFiZWw9e3ZpZGVvPy5hbHQgfHwgJyd9XG4gICAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9e1Rlc3RJZHMuY2FudmFzfVxuICAgICAgICAvPlxuICAgICAgPC93aXgtbWVkaWEtY2FudmFzPlxuICAgICkgOiAoXG4gICAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgIHtJbWFnZUNvbXBvbmVudH1cbiAgICAgICAge0JhY2tncm91bmRJbWFnZUNvbXBvbmVudH1cbiAgICAgICAge1ZpZGVvQ29tcG9uZW50fVxuICAgICAgICB7Y2FudmFzUmVmICYmIChcbiAgICAgICAgICA8Y2FudmFzXG4gICAgICAgICAgICBpZD17YCR7Y29udGFpbmVySWR9d2ViZ2xjYW52YXNgfVxuICAgICAgICAgICAgcmVmPXtjYW52YXNSZWZ9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoc3R5bGVzLmFscGhhQ2FudmFzLCAnd2ViZ2xjYW52YXMnKX1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9e3ZpZGVvPy5hbHQgfHwgJyd9XG4gICAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtUZXN0SWRzLmNhbnZhc31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICApO1xuXG4gIGNvbnN0IEJnTWVkaWEgPSBiYWNrZ3JvdW5kTWVkaWEgPyAoXG4gICAgPEJhY2tncm91bmRNZWRpYSBpZD17YGJnTWVkaWFfJHtjb250YWluZXJJZH1gfSB7Li4uYmFja2dyb3VuZE1lZGlhfT5cbiAgICAgIHtNZWRpYX1cbiAgICA8L0JhY2tncm91bmRNZWRpYT5cbiAgKSA6IChcbiAgICA8ZGl2XG4gICAgICBpZD17YGJnTWVkaWFfJHtjb250YWluZXJJZH1gfVxuICAgICAgZGF0YS1tb3Rpb24tcGFydD17YEJHX01FRElBICR7Y29udGFpbmVySWR9YH1cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmJnTWVkaWF9XG4gICAgPlxuICAgICAge01lZGlhfVxuICAgIDwvZGl2PlxuICApO1xuICBjb25zdCBCZ092ZXJsYXkgPSBiYWNrZ3JvdW5kT3ZlcmxheSAmJiAoXG4gICAgPEJhY2tncm91bmRPdmVybGF5IHsuLi5iYWNrZ3JvdW5kT3ZlcmxheX0gLz5cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGlkPXtgJHtUZXN0SWRzLmJnTGF5ZXJzfV8ke2NvbnRhaW5lcklkfWB9XG4gICAgICBkYXRhLWhvb2s9e1Rlc3RJZHMuYmdMYXllcnN9XG4gICAgICBkYXRhLW1vdGlvbi1wYXJ0PXtgQkdfTEFZRVIgJHtjb250YWluZXJJZH1gfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKHN0eWxlcy5sYXllcnNDb250YWluZXIsIGV4dHJhQ2xhc3MsIHtcbiAgICAgICAgW3N0eWxlcy5mdWxsU2NyZWVuU2Nyb2xsRWZmZWN0XTogaGFzQmdGdWxsc2NyZWVuU2Nyb2xsRWZmZWN0LFxuICAgICAgfSl9XG4gICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgID5cbiAgICAgIHtzaG91bGRSZW5kZXJVbmRlcmxheSAmJiAoXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBkYXRhLXRlc3RpZD17VGVzdElkcy5jb2xvclVuZGVybGF5fVxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhzdHlsZXMuYmdVbmRlcmxheSwgc3R5bGVzLmZpbGxMYXllcil9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAge3Nob3VsZFBhZE1lZGlhID8gKFxuICAgICAgICA8ZGl2XG4gICAgICAgICAgZGF0YS10ZXN0aWQ9e1Rlc3RJZHMubWVkaWFQYWRkaW5nfVxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm1lZGlhUGFkZGluZ0xheWVyfVxuICAgICAgICA+XG4gICAgICAgICAge0JnTWVkaWF9XG4gICAgICAgICAge0JnT3ZlcmxheX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApIDogKFxuICAgICAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICAge0JnTWVkaWF9XG4gICAgICAgICAge0JnT3ZlcmxheX1cbiAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBGaWxsTGF5ZXJzO1xuIiwiJ3VzZS1jbGllbnQnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBCYWNrZ3JvdW5kWFByb3BzIH0gZnJvbSAnLi4vQmFja2dyb3VuZFgudHlwZXMnO1xuaW1wb3J0IEZpbGxMYXllcnMgZnJvbSAnLi4vLi4vRmlsbExheWVycy92aWV3ZXIvRmlsbExheWVycyc7XG5cbmNvbnN0IEJhY2tncm91bmRYOiBSZWFjdC5GQzxCYWNrZ3JvdW5kWFByb3BzPiA9IHByb3BzID0+IChcbiAgPEZpbGxMYXllcnMgey4uLnByb3BzfSAvPlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgQmFja2dyb3VuZFg7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbmV4cG9ydCBkZWZhdWx0IHtcInNoYXBlLWRpdmlkZXJcIjpcImRrdWtXQ1wiLFwic2hhcGVEaXZpZGVyXCI6XCJka3VrV0NcIixcImRpdmlkZXItbGF5ZXJcIjpcIkZSQ3FERlwiLFwiZGl2aWRlckxheWVyXCI6XCJGUkNxREZcIixcInRvcC1zaGFwZS1kaXZpZGVyXCI6XCJ4blp2WkhcIixcInRvcFNoYXBlRGl2aWRlclwiOlwieG5adlpIXCIsXCJib3R0b20tc2hhcGUtZGl2aWRlclwiOlwiTUJPU0NOXCIsXCJib3R0b21TaGFwZURpdmlkZXJcIjpcIk1CT1NDTlwifTsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbHN4JztcbmltcG9ydCB0eXBlIHsgRGl2aWRlcnNQcm9wcywgRGl2aWRlckxheWVyU3R5bGUgfSBmcm9tICcuLi9zaGFwZURpdmlkZXJzLnR5cGVzJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZS9zaGFwZURpdmlkZXJzLnNjc3MnO1xuXG5jb25zdCBnZW5lcmF0ZUxheWVycyA9IChoYXNEaXZpZGVyOiBib29sZWFuLCBsYXllckNvdW50PzogbnVtYmVyKSA9PiB7XG4gIHJldHVybiBoYXNEaXZpZGVyXG4gICAgPyBbLi4uQXJyYXkoMSArIChsYXllckNvdW50IHx8IDApKS5rZXlzKCldXG4gICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgLm1hcChpID0+IChcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBrZXk9e2BkaXZpZGVyLWxheWVyLSR7aX1gfVxuICAgICAgICAgICAgc3R5bGU9e3sgJy0tZGl2aWRlci1sYXllci1pJzogaSB9IGFzIERpdmlkZXJMYXllclN0eWxlfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZGl2aWRlckxheWVyfVxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2BkaXZpZGVyLWxheWVyLSR7aX1gfVxuICAgICAgICAgICAgZGF0YS1kaXZpZGVyLWxheWVyPXtpfVxuICAgICAgICAgIC8+XG4gICAgICAgICkpXG4gICAgOiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlRGl2aWRlciA9IChcbiAgc2lkZTogJ3RvcCcgfCAnYm90dG9tJyxcbiAgaGFzRGl2aWRlcj86IGJvb2xlYW4sXG4gIHNpemU/OiBudW1iZXIsXG4pID0+IHtcbiAgY29uc3QgZGl2aWRlckxheWVycyA9IGdlbmVyYXRlTGF5ZXJzKCEhaGFzRGl2aWRlciwgc2l6ZSk7XG5cbiAgcmV0dXJuIGhhc0RpdmlkZXIgPyAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKHN0eWxlcy5zaGFwZURpdmlkZXIsIHtcbiAgICAgICAgW3N0eWxlcy50b3BTaGFwZURpdmlkZXJdOiBzaWRlID09PSAndG9wJyxcbiAgICAgICAgW3N0eWxlcy5ib3R0b21TaGFwZURpdmlkZXJdOiBzaWRlID09PSAnYm90dG9tJyxcbiAgICAgIH0pfVxuICAgICAgZGF0YS10ZXN0aWQ9e2Ake3NpZGV9LWRpdmlkZXJgfVxuICAgID5cbiAgICAgIHtkaXZpZGVyTGF5ZXJzfVxuICAgIDwvZGl2PlxuICApIDogbnVsbDtcbn07XG5cbmNvbnN0IFNoYXBlRGl2aWRlcnM6IFJlYWN0LkZDPERpdmlkZXJzUHJvcHM+ID0gZGl2aWRlcnMgPT4ge1xuICBjb25zdCB0b3BEaXZpZGVyID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIGdlbmVyYXRlRGl2aWRlcihcbiAgICAgICd0b3AnLFxuICAgICAgZGl2aWRlcnM/Lmhhc1RvcERpdmlkZXIsXG4gICAgICBkaXZpZGVycz8udG9wTGF5ZXJzPy5zaXplLFxuICAgICk7XG4gIH0sIFtkaXZpZGVycz8uaGFzVG9wRGl2aWRlciwgZGl2aWRlcnM/LnRvcExheWVycz8uc2l6ZV0pO1xuXG4gIGNvbnN0IGJvdHRvbURpdmlkZXIgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gZ2VuZXJhdGVEaXZpZGVyKFxuICAgICAgJ2JvdHRvbScsXG4gICAgICBkaXZpZGVycz8uaGFzQm90dG9tRGl2aWRlcixcbiAgICAgIGRpdmlkZXJzPy5ib3R0b21MYXllcnM/LnNpemUsXG4gICAgKTtcbiAgfSwgW2RpdmlkZXJzPy5oYXNCb3R0b21EaXZpZGVyLCBkaXZpZGVycz8uYm90dG9tTGF5ZXJzPy5zaXplXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge3RvcERpdmlkZXJ9XG4gICAgICB7Ym90dG9tRGl2aWRlcn1cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNoYXBlRGl2aWRlcnM7XG4iLCJjb25zdCBzZW1hbnRpY0NsYXNzTmFtZXMgPSB7XG4gIHJvb3Q6ICdzZWN0aW9uJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBkZWZhdWx0IHNlbWFudGljQ2xhc3NOYW1lcztcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuY29uc3QgUGF1c2VTbWFsbCA9ICh7IHNpemUsIC4uLnByb3BzIH0pID0+IC8qIEBfX1BVUkVfXyAqLyBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHsgdmlld0JveDogXCIwIDAgMTggMThcIiwgZmlsbDogXCJjdXJyZW50Q29sb3JcIiwgd2lkdGg6IHNpemUgfHwgXCIxOFwiLCBoZWlnaHQ6IHNpemUgfHwgXCIxOFwiLCAuLi5wcm9wcyB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk03LjUsNSBDOC4zMjg0MjcxMiw1IDksNS42NzE1NzI4OCA5LDYuNSBMOSwxMS41IEM5LDEyLjMyODQyNzEgOC4zMjg0MjcxMiwxMyA3LjUsMTMgQzYuNjcxNTcyODgsMTMgNiwxMi4zMjg0MjcxIDYsMTEuNSBMNiw2LjUgQzYsNS42NzE1NzI4OCA2LjY3MTU3Mjg4LDUgNy41LDUgWiBNMTEuNSw1IEMxMi4zMjg0MjcxLDUgMTMsNS42NzE1NzI4OCAxMyw2LjUgTDEzLDExLjUgQzEzLDEyLjMyODQyNzEgMTIuMzI4NDI3MSwxMyAxMS41LDEzIEMxMC42NzE1NzI5LDEzIDEwLDEyLjMyODQyNzEgMTAsMTEuNSBMMTAsNi41IEMxMCw1LjY3MTU3Mjg4IDEwLjY3MTU3MjksNSAxMS41LDUgWiBNNy41LDYgQzcuMjIzODU3NjMsNiA3LDYuMjIzODU3NjMgNyw2LjUgTDcsMTEuNSBDNywxMS43NzYxNDI0IDcuMjIzODU3NjMsMTIgNy41LDEyIEM3Ljc3NjE0MjM3LDEyIDgsMTEuNzc2MTQyNCA4LDExLjUgTDgsNi41IEM4LDYuMjIzODU3NjMgNy43NzYxNDIzNyw2IDcuNSw2IFogTTExLjUsNiBDMTEuMjIzODU3Niw2IDExLDYuMjIzODU3NjMgMTEsNi41IEwxMSwxMS41IEMxMSwxMS43NzYxNDI0IDExLjIyMzg1NzYsMTIgMTEuNSwxMiBDMTEuNzc2MTQyNCwxMiAxMiwxMS43NzYxNDI0IDEyLDExLjUgTDEyLDYuNSBDMTIsNi4yMjM4NTc2MyAxMS43NzYxNDI0LDYgMTEuNSw2IFpcIiB9KSk7XG5QYXVzZVNtYWxsLmRpc3BsYXlOYW1lID0gXCJQYXVzZVNtYWxsXCI7XG52YXIgUGF1c2VTbWFsbF9kZWZhdWx0ID0gUGF1c2VTbWFsbDtcbmV4cG9ydCB7XG4gIFBhdXNlU21hbGxfZGVmYXVsdCBhcyBkZWZhdWx0XG59O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5jb25zdCBQbGF5U21hbGwgPSAoeyBzaXplLCAuLi5wcm9wcyB9KSA9PiAvKiBAX19QVVJFX18gKi8gUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCB7IHZpZXdCb3g6IFwiMCAwIDE4IDE4XCIsIGZpbGw6IFwiY3VycmVudENvbG9yXCIsIHdpZHRoOiBzaXplIHx8IFwiMThcIiwgaGVpZ2h0OiBzaXplIHx8IFwiMThcIiwgLi4ucHJvcHMgfSwgLyogQF9fUFVSRV9fICovIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNNi44NzQ2ODgzNyw1LjQ1MDQxOTQ3IEwxMi43MzE4NzkzLDguNDY2NTcxMTkgQzEzLjIwMTYzLDguNjg3MzEyNDEgMTMuMjAxNjMsOS4yNjk0MDkxOCAxMi43MzE4NzkzLDkuNTMzNDI4ODEgTDYuODc0Njg4MzcsMTIuNTQ5NTgwNSBDNi41ODAwODM3NywxMi43MDEyODY3IDYuMDAwNzAwNzEsMTIuNTgwMTIyNiA2LDEyLjAxNjE1MTcgTDYsNS45ODM4NDgyOCBDNiw1LjY1MjQ3NzQzIDYuMzUyNjY4NzYsNS4yMDY4MjE2OCA2Ljg3NDY4ODM3LDUuNDUwNDE5NDcgWiBNNywxMS4zNjAyNTI5IEwxMS41ODM0NzM1LDkgTDcsNi42Mzk3NDcxNCBMNywxMS4zNjAyNTI5IFpcIiB9KSk7XG5QbGF5U21hbGwuZGlzcGxheU5hbWUgPSBcIlBsYXlTbWFsbFwiO1xudmFyIFBsYXlTbWFsbF9kZWZhdWx0ID0gUGxheVNtYWxsO1xuZXhwb3J0IHtcbiAgUGxheVNtYWxsX2RlZmF1bHQgYXMgZGVmYXVsdFxufTtcbiIsIid1c2UtY2xpZW50JztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHtcbiAgZm9ybWF0Q2xhc3NOYW1lcyxcbiAgZ2V0RGF0YUF0dHJpYnV0ZXMsXG4gIGdldFRhYkluZGV4QXR0cmlidXRlLFxuICBnZXRBcmlhTGFiZWxBdHRyaWJ1dGUsXG59IGZyb20gJ0B3aXgvZWRpdG9yLWVsZW1lbnRzLWNvbW1vbi11dGlscyc7XG5pbXBvcnQgeyB1c2VWaWRlb0FQSSB9IGZyb20gJ0B3aXgvZWRpdG9yLWVsZW1lbnRzLWNvbW1vbi11dGlscy9ob29rcyc7XG5pbXBvcnQgdHlwZSB7IE1lZGlhQ29udGFpbmVyVmlkZW9BUEkgfSBmcm9tICdAd2l4L2VkaXRvci1lbGVtZW50cy10eXBlcy9jb21wb25lbnRzJztcbmltcG9ydCB0eXBlIHsgSVNlY3Rpb25Qcm9wcyB9IGZyb20gJy4uL1NlY3Rpb24udHlwZXMnO1xuaW1wb3J0IHsgVGVzdElkcyB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgQmFja2dyb3VuZFggZnJvbSAnLi4vLi4vLi4vQmFja2dyb3VuZFgvdmlld2VyL0JhY2tncm91bmRYJztcbmltcG9ydCBTaGFwZURpdmlkZXJzIGZyb20gJy4uLy4uLy4uL01lZGlhQ29udGFpbmVycy9TaGFwZURpdmlkZXJzL3ZpZXdlci9zaGFwZURpdmlkZXJzJztcbmltcG9ydCBzZWN0aW9uU2VtYW50aWNDbGFzc05hbWVzIGZyb20gJy4uL1NlY3Rpb24uc2VtYW50aWNDbGFzc05hbWVzJztcbmltcG9ydCBzdHlsZSBmcm9tICcuL3N0eWxlcy9TZWN0aW9uLnNjc3MnO1xuaW1wb3J0IHsgUGF1c2VTbWFsbCwgUGxheVNtYWxsIH0gZnJvbSAnQHdpeC93aXgtdWktaWNvbnMtY29tbW9uJztcblxuY29uc3QgU2VjdGlvbjogUmVhY3QuRm9yd2FyZFJlZlJlbmRlckZ1bmN0aW9uPFxuICBNZWRpYUNvbnRhaW5lclZpZGVvQVBJLFxuICBJU2VjdGlvblByb3BzXG4+ID0gKHByb3BzLCBjb21wUmVmKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBpZCxcbiAgICBza2luID0gJ1JlY3RhbmdsZUFyZWEnLFxuICAgIGNsYXNzTmFtZSxcbiAgICBjb250YWluZXJSb290Q2xhc3NOYW1lID0gJycsXG4gICAgY3VzdG9tQ2xhc3NOYW1lcyA9IFtdLFxuICAgIGNvbnRhaW5lclByb3BzLFxuICAgIGNoaWxkcmVuLFxuICAgIGZpbGxMYXllcnMgPSBwcm9wcy5maWxsTGF5ZXJzIHx8IHByb3BzLmJhY2tncm91bmQsXG4gICAgdGFnTmFtZSxcbiAgICBnZXRQbGFjZWhvbGRlcixcbiAgICBkaXZpZGVycyxcbiAgICBzZW1hbnRpY0NsYXNzTmFtZXMsXG4gICAgb25TdG9wLFxuICAgIG9uQ2xpY2ssXG4gICAgb25EYmxDbGljayxcbiAgICBvbk1vdXNlRW50ZXIsXG4gICAgb25Nb3VzZUxlYXZlLFxuICAgIGxhbmcsXG4gICAgdHJhbnNsYXRpb25zLFxuICAgIGlzUGxheVBhdXNlU2VjdGlvbkV4cGVyaW1lbnRPbixcbiAgICBpc0J1aWxkZXIsXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgVGFnTmFtZSA9IHRhZ05hbWUgfHwgKCdzZWN0aW9uJyBhcyBrZXlvZiBKU1guSW50cmluc2ljRWxlbWVudHMpO1xuICBjb25zdCB7IHNob3VsZE9taXRXcmFwcGVyTGF5ZXJzIH0gPSBjb250YWluZXJQcm9wcztcbiAgY29uc3QgY2xhc3NOYW1lcyA9IGNsYXNzbmFtZXMoXG4gICAgc3R5bGVbc2tpbl0sXG4gICAgY29udGFpbmVyUm9vdENsYXNzTmFtZSxcbiAgICBjbGFzc05hbWUsXG4gICAgc2VtYW50aWNDbGFzc05hbWVzXG4gICAgICA/IGZvcm1hdENsYXNzTmFtZXMoc2VtYW50aWNDbGFzc05hbWVzLnJvb3QsIC4uLmN1c3RvbUNsYXNzTmFtZXMpXG4gICAgICA6IGZvcm1hdENsYXNzTmFtZXMoc2VjdGlvblNlbWFudGljQ2xhc3NOYW1lcy5yb290LCAuLi5jdXN0b21DbGFzc05hbWVzKSxcbiAgICB7XG4gICAgICBbc3R5bGUuc2hvdWxkT21pdFdyYXBwZXJMYXllcnNdOiBzaG91bGRPbWl0V3JhcHBlckxheWVycyxcbiAgICB9LFxuICApO1xuICBjb25zdCBoYXNWaWRlbyA9ICEhZmlsbExheWVycz8udmlkZW87XG4gIGNvbnN0IHZpZGVvUmVmID0gdXNlVmlkZW9BUEkoY29tcFJlZiwgaGFzVmlkZW8sIG9uU3RvcCk7XG4gIGNvbnN0IFtpc1ZpZGVvUGxheWluZywgc2V0SXNWaWRlb1BsYXlpbmddID0gUmVhY3QudXNlU3RhdGUoXG4gICAgIXZpZGVvUmVmPy5jdXJyZW50Py5wYXVzZWQgfHwgZmFsc2UsXG4gICk7XG4gIGNvbnN0IGhhbmRsZVBsYXlQYXVzZSA9ICgpID0+IHtcbiAgICBjb25zdCB2aWRlbyA9IHZpZGVvUmVmPy5jdXJyZW50O1xuICAgIGlmICh2aWRlbykge1xuICAgICAgdmlkZW8ucGF1c2VkID8gdmlkZW8ucGxheSgpIDogdmlkZW8ucGF1c2UoKTtcbiAgICAgIHNldElzVmlkZW9QbGF5aW5nKHByZXYgPT4ge1xuICAgICAgICBjb25zdCBuZXdQbGF5aW5nU3RhdGUgPSAhcHJldjtcbiAgICAgICAgLy8gRmluZCBhbmQgY29udHJvbCBhbGwgY2hpbGQgdmlkZW8gZWxlbWVudHNcbiAgICAgICAgY29uc3Qgc2VjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XG4gICAgICAgIGlmIChzZWN0aW9uRWxlbWVudCkge1xuICAgICAgICAgIGNvbnN0IGNoaWxkVmlkZW9zID0gc2VjdGlvbkVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgndmlkZW8nKTtcbiAgICAgICAgICBjaGlsZFZpZGVvcy5mb3JFYWNoKGNoaWxkVmlkZW8gPT4ge1xuICAgICAgICAgICAgaWYgKGNoaWxkVmlkZW8gIT09IHZpZGVvKSB7XG4gICAgICAgICAgICAgIC8vIFVzZSB0aGUgbmV3IHBsYXlpbmcgc3RhdGUgdG8gc3luYyBhbGwgdmlkZW9zXG4gICAgICAgICAgICAgIG5ld1BsYXlpbmdTdGF0ZSA/IGNoaWxkVmlkZW8ucGxheSgpIDogY2hpbGRWaWRlby5wYXVzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdQbGF5aW5nU3RhdGU7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8VGFnTmFtZVxuICAgICAgaWQ9e2lkfVxuICAgICAgey4uLmdldERhdGFBdHRyaWJ1dGVzKHByb3BzKX1cbiAgICAgIHsuLi5nZXRUYWJJbmRleEF0dHJpYnV0ZShwcm9wcy5hMTF5IHx8IHsgdGFiSW5kZXg6IC0xIH0pfVxuICAgICAgey4uLmdldEFyaWFMYWJlbEF0dHJpYnV0ZShwcm9wcy5hMTF5KX1cbiAgICAgIGRhdGEtYmxvY2stbGV2ZWwtY29udGFpbmVyPVwiU2VjdGlvblwiXG4gICAgICBjbGFzc05hbWU9e2Ake2NsYXNzTmFtZXN9ICR7c3R5bGUuc2VjdGlvbn1gfVxuICAgICAgZGF0YS10ZXN0aWQ9e1Rlc3RJZHMuc2VjdGlvbn1cbiAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICBvbkRvdWJsZUNsaWNrPXtvbkRibENsaWNrfVxuICAgICAgb25Nb3VzZUVudGVyPXtvbk1vdXNlRW50ZXJ9XG4gICAgICBvbk1vdXNlTGVhdmU9e29uTW91c2VMZWF2ZX1cbiAgICAgIGxhbmc9e2xhbmd9XG4gICAgPlxuICAgICAge2ZpbGxMYXllcnMgJiYgIWlzQnVpbGRlciAmJiAoXG4gICAgICAgIDxCYWNrZ3JvdW5kWFxuICAgICAgICAgIHsuLi5maWxsTGF5ZXJzfVxuICAgICAgICAgIHZpZGVvUmVmPXt2aWRlb1JlZn1cbiAgICAgICAgICBnZXRQbGFjZWhvbGRlcj17Z2V0UGxhY2Vob2xkZXJ9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAge2hhc1ZpZGVvICYmIGlzUGxheVBhdXNlU2VjdGlvbkV4cGVyaW1lbnRPbiAmJiAhaXNCdWlsZGVyICYmIChcbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGUudmlkZW9QbGF5UGF1c2VCdXR0b259YH1cbiAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVQbGF5UGF1c2V9XG4gICAgICAgICAgYXJpYS1wcmVzc2VkPXtpc1ZpZGVvUGxheWluZ31cbiAgICAgICAgICBhcmlhLWxhYmVsPXt0cmFuc2xhdGlvbnM/LmFyaWFMYWJlbH1cbiAgICAgICAgPlxuICAgICAgICAgIHtpc1ZpZGVvUGxheWluZyA/IDxQYXVzZVNtYWxsIC8+IDogPFBsYXlTbWFsbCAvPn1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICApfVxuICAgICAge2RpdmlkZXJzICYmICFpc0J1aWxkZXIgJiYgPFNoYXBlRGl2aWRlcnMgey4uLmRpdmlkZXJzfSAvPn1cbiAgICAgIHtjaGlsZHJlbigpfVxuICAgIDwvVGFnTmFtZT5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlYWN0LmZvcndhcmRSZWYoU2VjdGlvbik7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVZpZGVvQVBJKGNvbXBSZWYsIGhhc1ZpZGVvLCBvblN0b3ApIHtcbiAgICBjb25zdCB2aWRlb1JlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBjb25zdCB2aWRlb0FQSSA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBpZiAoaGFzVmlkZW8pIHtcbiAgICAgICAgaWYgKCF2aWRlb0FQSS5jdXJyZW50KSB7XG4gICAgICAgICAgICB2aWRlb0FQSS5jdXJyZW50ID0ge1xuICAgICAgICAgICAgICAgIHBsYXk6ICgpID0+IHZpZGVvUmVmLmN1cnJlbnQ/LnBsYXkoKSxcbiAgICAgICAgICAgICAgICBsb2FkOiAoKSA9PiB2aWRlb1JlZi5jdXJyZW50Py5sb2FkKCksXG4gICAgICAgICAgICAgICAgcGF1c2U6ICgpID0+IHZpZGVvUmVmLmN1cnJlbnQ/LnBhdXNlKCksXG4gICAgICAgICAgICAgICAgc3RvcDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodmlkZW9SZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9SZWYuY3VycmVudC5wYXVzZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9SZWYuY3VycmVudC5jdXJyZW50VGltZSA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob25TdG9wKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TdG9wKHZpZGVvUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIC8vIG5vIHZpZGVvIHJlbW92ZSB2aWRlbyBBUElcbiAgICAgICAgdmlkZW9BUEkuY3VycmVudCA9IG51bGw7XG4gICAgfVxuICAgIFJlYWN0LnVzZUltcGVyYXRpdmVIYW5kbGUoY29tcFJlZiwgKCkgPT4ge1xuICAgICAgICByZXR1cm4gdmlkZW9BUEkuY3VycmVudCB8fCB7IGxvYWQoKSB7IH0sIHN0b3AoKSB7IH0gfTtcbiAgICB9KTtcbiAgICByZXR1cm4gdmlkZW9SZWY7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD11c2VWaWRlb0FQSS5qcy5tYXAiLCIhKGZ1bmN0aW9uKHdpbikge1xuXG4vKipcbiAqIEZhc3REb21cbiAqXG4gKiBFbGltaW5hdGVzIGxheW91dCB0aHJhc2hpbmdcbiAqIGJ5IGJhdGNoaW5nIERPTSByZWFkL3dyaXRlXG4gKiBpbnRlcmFjdGlvbnMuXG4gKlxuICogQGF1dGhvciBXaWxzb24gUGFnZSA8d2lsc29ucGFnZUBtZS5jb20+XG4gKiBAYXV0aG9yIEtvcm5lbCBMZXNpbnNraSA8a29ybmVsLmxlc2luc2tpQGZ0LmNvbT5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogTWluaSBsb2dnZXJcbiAqXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn1cbiAqL1xudmFyIGRlYnVnID0gMCA/IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSwgJ1tmYXN0ZG9tXScpIDogZnVuY3Rpb24oKSB7fTtcblxuLyoqXG4gKiBOb3JtYWxpemVkIHJBRlxuICpcbiAqIEB0eXBlIHtGdW5jdGlvbn1cbiAqL1xudmFyIHJhZiA9IHdpbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgfHwgd2luLndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZVxuICB8fCB3aW4ubW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gIHx8IHdpbi5tc1JlcXVlc3RBbmltYXRpb25GcmFtZVxuICB8fCBmdW5jdGlvbihjYikgeyByZXR1cm4gc2V0VGltZW91dChjYiwgMTYpOyB9O1xuXG4vKipcbiAqIEluaXRpYWxpemUgYSBgRmFzdERvbWAuXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKi9cbmZ1bmN0aW9uIEZhc3REb20oKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgc2VsZi5yZWFkcyA9IFtdO1xuICBzZWxmLndyaXRlcyA9IFtdO1xuICBzZWxmLnJhZiA9IHJhZi5iaW5kKHdpbik7IC8vIHRlc3QgaG9va1xuICBkZWJ1ZygnaW5pdGlhbGl6ZWQnLCBzZWxmKTtcbn1cblxuRmFzdERvbS5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBGYXN0RG9tLFxuXG4gIC8qKlxuICAgKiBXZSBydW4gdGhpcyBpbnNpZGUgYSB0cnkgY2F0Y2hcbiAgICogc28gdGhhdCBpZiBhbnkgam9icyBlcnJvciwgd2VcbiAgICogYXJlIGFibGUgdG8gcmVjb3ZlciBhbmQgY29udGludWVcbiAgICogdG8gZmx1c2ggdGhlIGJhdGNoIHVudGlsIGl0J3MgZW1wdHkuXG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXl9IHRhc2tzXG4gICAqL1xuICBydW5UYXNrczogZnVuY3Rpb24odGFza3MpIHtcbiAgICBkZWJ1ZygncnVuIHRhc2tzJyk7XG4gICAgdmFyIHRhc2s7IHdoaWxlICh0YXNrID0gdGFza3Muc2hpZnQoKSkgdGFzaygpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBBZGRzIGEgam9iIHRvIHRoZSByZWFkIGJhdGNoIGFuZFxuICAgKiBzY2hlZHVsZXMgYSBuZXcgZnJhbWUgaWYgbmVlZCBiZS5cbiAgICpcbiAgICogQHBhcmFtICB7RnVuY3Rpb259IGZuXG4gICAqIEBwYXJhbSAge09iamVjdH0gY3R4IHRoZSBjb250ZXh0IHRvIGJlIGJvdW5kIHRvIGBmbmAgKG9wdGlvbmFsKS5cbiAgICogQHB1YmxpY1xuICAgKi9cbiAgbWVhc3VyZTogZnVuY3Rpb24oZm4sIGN0eCkge1xuICAgIGRlYnVnKCdtZWFzdXJlJyk7XG4gICAgdmFyIHRhc2sgPSAhY3R4ID8gZm4gOiBmbi5iaW5kKGN0eCk7XG4gICAgdGhpcy5yZWFkcy5wdXNoKHRhc2spO1xuICAgIHNjaGVkdWxlRmx1c2godGhpcyk7XG4gICAgcmV0dXJuIHRhc2s7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEFkZHMgYSBqb2IgdG8gdGhlXG4gICAqIHdyaXRlIGJhdGNoIGFuZCBzY2hlZHVsZXNcbiAgICogYSBuZXcgZnJhbWUgaWYgbmVlZCBiZS5cbiAgICpcbiAgICogQHBhcmFtICB7RnVuY3Rpb259IGZuXG4gICAqIEBwYXJhbSAge09iamVjdH0gY3R4IHRoZSBjb250ZXh0IHRvIGJlIGJvdW5kIHRvIGBmbmAgKG9wdGlvbmFsKS5cbiAgICogQHB1YmxpY1xuICAgKi9cbiAgbXV0YXRlOiBmdW5jdGlvbihmbiwgY3R4KSB7XG4gICAgZGVidWcoJ211dGF0ZScpO1xuICAgIHZhciB0YXNrID0gIWN0eCA/IGZuIDogZm4uYmluZChjdHgpO1xuICAgIHRoaXMud3JpdGVzLnB1c2godGFzayk7XG4gICAgc2NoZWR1bGVGbHVzaCh0aGlzKTtcbiAgICByZXR1cm4gdGFzaztcbiAgfSxcblxuICAvKipcbiAgICogQ2xlYXJzIGEgc2NoZWR1bGVkICdyZWFkJyBvciAnd3JpdGUnIHRhc2suXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSB0YXNrXG4gICAqIEByZXR1cm4ge0Jvb2xlYW59IHN1Y2Nlc3NcbiAgICogQHB1YmxpY1xuICAgKi9cbiAgY2xlYXI6IGZ1bmN0aW9uKHRhc2spIHtcbiAgICBkZWJ1ZygnY2xlYXInLCB0YXNrKTtcbiAgICByZXR1cm4gcmVtb3ZlKHRoaXMucmVhZHMsIHRhc2spIHx8IHJlbW92ZSh0aGlzLndyaXRlcywgdGFzayk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEV4dGVuZCB0aGlzIEZhc3REb20gd2l0aCBzb21lXG4gICAqIGN1c3RvbSBmdW5jdGlvbmFsaXR5LlxuICAgKlxuICAgKiBCZWNhdXNlIGZhc3Rkb20gbXVzdCAqYWx3YXlzKiBiZSBhXG4gICAqIHNpbmdsZXRvbiwgd2UncmUgYWN0dWFsbHkgZXh0ZW5kaW5nXG4gICAqIHRoZSBmYXN0ZG9tIGluc3RhbmNlLiBUaGlzIG1lYW5zIHRhc2tzXG4gICAqIHNjaGVkdWxlZCBieSBhbiBleHRlbnNpb24gc3RpbGwgZW50ZXJcbiAgICogZmFzdGRvbSdzIGdsb2JhbCB0YXNrIHF1ZXVlLlxuICAgKlxuICAgKiBUaGUgJ3N1cGVyJyBpbnN0YW5jZSBjYW4gYmUgYWNjZXNzZWRcbiAgICogZnJvbSBgdGhpcy5mYXN0ZG9tYC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICpcbiAgICogdmFyIG15RmFzdGRvbSA9IGZhc3Rkb20uZXh0ZW5kKHtcbiAgICogICBpbml0aWFsaXplOiBmdW5jdGlvbigpIHtcbiAgICogICAgIC8vIHJ1bnMgb24gY3JlYXRpb25cbiAgICogICB9LFxuICAgKlxuICAgKiAgIC8vIG92ZXJyaWRlIGEgbWV0aG9kXG4gICAqICAgbWVhc3VyZTogZnVuY3Rpb24oZm4pIHtcbiAgICogICAgIC8vIGRvIGV4dHJhIHN0dWZmIC4uLlxuICAgKlxuICAgKiAgICAgLy8gdGhlbiBjYWxsIHRoZSBvcmlnaW5hbFxuICAgKiAgICAgcmV0dXJuIHRoaXMuZmFzdGRvbS5tZWFzdXJlKGZuKTtcbiAgICogICB9LFxuICAgKlxuICAgKiAgIC4uLlxuICAgKiB9KTtcbiAgICpcbiAgICogQHBhcmFtICB7T2JqZWN0fSBwcm9wcyAgcHJvcGVydGllcyB0byBtaXhpblxuICAgKiBAcmV0dXJuIHtGYXN0RG9tfVxuICAgKi9cbiAgZXh0ZW5kOiBmdW5jdGlvbihwcm9wcykge1xuICAgIGRlYnVnKCdleHRlbmQnLCBwcm9wcyk7XG4gICAgaWYgKHR5cGVvZiBwcm9wcyAhPSAnb2JqZWN0JykgdGhyb3cgbmV3IEVycm9yKCdleHBlY3RlZCBvYmplY3QnKTtcblxuICAgIHZhciBjaGlsZCA9IE9iamVjdC5jcmVhdGUodGhpcyk7XG4gICAgbWl4aW4oY2hpbGQsIHByb3BzKTtcbiAgICBjaGlsZC5mYXN0ZG9tID0gdGhpcztcblxuICAgIC8vIHJ1biBvcHRpb25hbCBjcmVhdGlvbiBob29rXG4gICAgaWYgKGNoaWxkLmluaXRpYWxpemUpIGNoaWxkLmluaXRpYWxpemUoKTtcblxuICAgIHJldHVybiBjaGlsZDtcbiAgfSxcblxuICAvLyBvdmVycmlkZSB0aGlzIHdpdGggYSBmdW5jdGlvblxuICAvLyB0byBwcmV2ZW50IEVycm9ycyBpbiBjb25zb2xlXG4gIC8vIHdoZW4gdGFza3MgdGhyb3dcbiAgY2F0Y2g6IG51bGxcbn07XG5cbi8qKlxuICogU2NoZWR1bGVzIGEgbmV3IHJlYWQvd3JpdGVcbiAqIGJhdGNoIGlmIG9uZSBpc24ndCBwZW5kaW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIHNjaGVkdWxlRmx1c2goZmFzdGRvbSkge1xuICBpZiAoIWZhc3Rkb20uc2NoZWR1bGVkKSB7XG4gICAgZmFzdGRvbS5zY2hlZHVsZWQgPSB0cnVlO1xuICAgIGZhc3Rkb20ucmFmKGZsdXNoLmJpbmQobnVsbCwgZmFzdGRvbSkpO1xuICAgIGRlYnVnKCdmbHVzaCBzY2hlZHVsZWQnKTtcbiAgfVxufVxuXG4vKipcbiAqIFJ1bnMgcXVldWVkIGByZWFkYCBhbmQgYHdyaXRlYCB0YXNrcy5cbiAqXG4gKiBFcnJvcnMgYXJlIGNhdWdodCBhbmQgdGhyb3duIGJ5IGRlZmF1bHQuXG4gKiBJZiBhIGAuY2F0Y2hgIGZ1bmN0aW9uIGhhcyBiZWVuIGRlZmluZWRcbiAqIGl0IGlzIGNhbGxlZCBpbnN0ZWFkLlxuICpcbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGZsdXNoKGZhc3Rkb20pIHtcbiAgZGVidWcoJ2ZsdXNoJyk7XG5cbiAgdmFyIHdyaXRlcyA9IGZhc3Rkb20ud3JpdGVzO1xuICB2YXIgcmVhZHMgPSBmYXN0ZG9tLnJlYWRzO1xuICB2YXIgZXJyb3I7XG5cbiAgdHJ5IHtcbiAgICBkZWJ1ZygnZmx1c2hpbmcgcmVhZHMnLCByZWFkcy5sZW5ndGgpO1xuICAgIGZhc3Rkb20ucnVuVGFza3MocmVhZHMpO1xuICAgIGRlYnVnKCdmbHVzaGluZyB3cml0ZXMnLCB3cml0ZXMubGVuZ3RoKTtcbiAgICBmYXN0ZG9tLnJ1blRhc2tzKHdyaXRlcyk7XG4gIH0gY2F0Y2ggKGUpIHsgZXJyb3IgPSBlOyB9XG5cbiAgZmFzdGRvbS5zY2hlZHVsZWQgPSBmYWxzZTtcblxuICAvLyBJZiB0aGUgYmF0Y2ggZXJyb3JlZCB3ZSBtYXkgc3RpbGwgaGF2ZSB0YXNrcyBxdWV1ZWRcbiAgaWYgKHJlYWRzLmxlbmd0aCB8fCB3cml0ZXMubGVuZ3RoKSBzY2hlZHVsZUZsdXNoKGZhc3Rkb20pO1xuXG4gIGlmIChlcnJvcikge1xuICAgIGRlYnVnKCd0YXNrIGVycm9yZWQnLCBlcnJvci5tZXNzYWdlKTtcbiAgICBpZiAoZmFzdGRvbS5jYXRjaCkgZmFzdGRvbS5jYXRjaChlcnJvcik7XG4gICAgZWxzZSB0aHJvdyBlcnJvcjtcbiAgfVxufVxuXG4vKipcbiAqIFJlbW92ZSBhbiBpdGVtIGZyb20gYW4gQXJyYXkuXG4gKlxuICogQHBhcmFtICB7QXJyYXl9IGFycmF5XG4gKiBAcGFyYW0gIHsqfSBpdGVtXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICovXG5mdW5jdGlvbiByZW1vdmUoYXJyYXksIGl0ZW0pIHtcbiAgdmFyIGluZGV4ID0gYXJyYXkuaW5kZXhPZihpdGVtKTtcbiAgcmV0dXJuICEhfmluZGV4ICYmICEhYXJyYXkuc3BsaWNlKGluZGV4LCAxKTtcbn1cblxuLyoqXG4gKiBNaXhpbiBvd24gcHJvcGVydGllcyBvZiBzb3VyY2VcbiAqIG9iamVjdCBpbnRvIHRoZSB0YXJnZXQuXG4gKlxuICogQHBhcmFtICB7T2JqZWN0fSB0YXJnZXRcbiAqIEBwYXJhbSAge09iamVjdH0gc291cmNlXG4gKi9cbmZ1bmN0aW9uIG1peGluKHRhcmdldCwgc291cmNlKSB7XG4gIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICBpZiAoc291cmNlLmhhc093blByb3BlcnR5KGtleSkpIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gIH1cbn1cblxuLy8gVGhlcmUgc2hvdWxkIG5ldmVyIGJlIG1vcmUgdGhhblxuLy8gb25lIGluc3RhbmNlIG9mIGBGYXN0RG9tYCBpbiBhbiBhcHBcbnZhciBleHBvcnRzID0gd2luLmZhc3Rkb20gPSAod2luLmZhc3Rkb20gfHwgbmV3IEZhc3REb20oKSk7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuXG4vLyBFeHBvc2UgdG8gQ0pTICYgQU1EXG5pZiAoKHR5cGVvZiBkZWZpbmUpID09ICdmdW5jdGlvbicpIGRlZmluZShmdW5jdGlvbigpIHsgcmV0dXJuIGV4cG9ydHM7IH0pO1xuZWxzZSBpZiAoKHR5cGVvZiBtb2R1bGUpID09ICdvYmplY3QnKSBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHM7XG5cbn0pKCB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdyA6IHR5cGVvZiB0aGlzICE9ICd1bmRlZmluZWQnID8gdGhpcyA6IGdsb2JhbFRoaXMpO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQgZGVmYXVsdCB7XCJiZy11bmRlcmxheVwiOlwiTFdiQWF2XCIsXCJiZ1VuZGVybGF5XCI6XCJMV2JBYXZcIixcImxheWVycy1jb250YWluZXJcIjpcIk1XNUlXVlwiLFwibGF5ZXJzQ29udGFpbmVyXCI6XCJNVzVJV1ZcIixcImFuaW1hdGVcIjpcIlY3T2VFd1wiLFwiaGVhZGVyU2VjdGlvbkFkZFZpc2liaWxpdHlUcmFuc2l0aW9uXCI6XCJNREdMb0RcIixcIm1vdmVcIjpcIkJISW80M1wiLFwiZmFkZVwiOlwiVXZGMW51XCIsXCJzY3JvbGxVcFwiOlwiWXpyUUZiXCIsXCJSZWN0YW5nbGVBcmVhXCI6XCJ4dXpqQllcIixcInJlY3RhbmdsZUFyZWFcIjpcInh1empCWVwiLFwiRGVmYXVsdEFyZWFTa2luXCI6XCJPN1lia2JcIixcImRlZmF1bHRBcmVhU2tpblwiOlwiTzdZYmtiXCIsXCJmdWxsLXNjcmVlbi1zY3JvbGwtZWZmZWN0XCI6XCJHZU5MRHRcIixcImZ1bGxTY3JlZW5TY3JvbGxFZmZlY3RcIjpcIkdlTkxEdFwiLFwiZmlsbC1sYXllclwiOlwiSzhwSEZoXCIsXCJmaWxsTGF5ZXJcIjpcIks4cEhGaFwiLFwiaW1hZ2UtZmlsbC1sYXllclwiOlwiVGF3ZXFTXCIsXCJpbWFnZUZpbGxMYXllclwiOlwiVGF3ZXFTXCIsXCJiZy1tZWRpYVwiOlwieXpIeU5UXCIsXCJiZ01lZGlhXCI6XCJ5ekh5TlRcIixcInZpZGVvRmlsbExheWVyXCI6XCJ6QkZDcE9cIixcImFscGhhLWNhbnZhc1wiOlwieGpnclMzXCIsXCJhbHBoYUNhbnZhc1wiOlwieGpnclMzXCIsXCJtZWRpYS1wYWRkaW5nLWxheWVyXCI6XCJiM3pTUzBcIixcIm1lZGlhUGFkZGluZ0xheWVyXCI6XCJiM3pTUzBcIixcInRyYW5zZm9ybXNcIjpcIldzdjNha1wiLFwibWVkaWEtY2FudmFzXCI6XCJJaUpNZm5cIixcIm1lZGlhQ2FudmFzXCI6XCJJaUpNZm5cIixcIlJlY3RhbmdsZUFyZWFBZnRlclNjcm9sbFwiOlwiS0pndDE0XCIsXCJyZWN0YW5nbGVBcmVhQWZ0ZXJTY3JvbGxcIjpcIktKZ3QxNFwiLFwic2Nyb2xsZWRcIjpcIlZUd2NYN1wiLFwic2VjdGlvblwiOlwiR3pzazBqXCIsXCJ2aWRlby1wbGF5LXBhdXNlLWJ1dHRvblwiOlwiTWRMbDBoXCIsXCJ2aWRlb1BsYXlQYXVzZUJ1dHRvblwiOlwiTWRMbDBoXCIsXCJjaGlsZHJlbkNvbnRhaW5lclwiOlwiR21tY2kxXCJ9OyIsImltcG9ydCB7IGtleUNvZGVzIH0gZnJvbSAnLi9hMTF5JztcbmV4cG9ydCBjb25zdCBpc1RoZW1lRm9udCA9ICh2YWx1ZSkgPT4gL15mb250X1xcZCskLy50ZXN0KHZhbHVlKTtcbmV4cG9ydCBjb25zdCBkZWJvdW5jZSA9IChmbiwgbXMgPSAwLCB7IGxlYWRpbmcgPSBmYWxzZSwgdHJhaWxpbmcgPSB0cnVlIH0gPSB7fSkgPT4ge1xuICAgIGxldCB0aW1lb3V0SWQgPSBudWxsO1xuICAgIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBpZiAobGVhZGluZyAmJiB0aW1lb3V0SWQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aW1lb3V0SWQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdHJhaWxpbmcgfHwgIWxlYWRpbmcgfHwgdGltZW91dElkKSB7XG4gICAgICAgICAgICB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodHJhaWxpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgZm4uYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRpbWVvdXRJZCA9IG51bGw7XG4gICAgICAgICAgICB9LCBtcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIGEgc2luZ2xlIGNhbGwgd2l0aCBib3RoIGxlYWRpbmcgYW5kIHRyYWlsaW5nIChzZWUgdGVzdHMpXG4gICAgICAgICAgICB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aW1lb3V0SWQgPSBudWxsO1xuICAgICAgICAgICAgfSwgbXMpO1xuICAgICAgICB9XG4gICAgfTtcbn07XG5leHBvcnQgY29uc3QgdGhyb3R0bGUgPSAoZnVuYywgbXMgPSAwKSA9PiB7XG4gICAgbGV0IGlzVGhyb3R0bGVkID0gZmFsc2UsIHNhdmVkQXJncztcbiAgICBmdW5jdGlvbiB3cmFwcGVyKC4uLmFyZ3MpIHtcbiAgICAgICAgaWYgKGlzVGhyb3R0bGVkKSB7XG4gICAgICAgICAgICBzYXZlZEFyZ3MgPSBhcmdzO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIGlzVGhyb3R0bGVkID0gdHJ1ZTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpc1Rocm90dGxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHNhdmVkQXJncykge1xuICAgICAgICAgICAgICAgIHdyYXBwZXIuYXBwbHkodGhpcywgc2F2ZWRBcmdzKTtcbiAgICAgICAgICAgICAgICBzYXZlZEFyZ3MgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBtcyk7XG4gICAgfVxuICAgIHJldHVybiB3cmFwcGVyO1xufTtcbmV4cG9ydCBjb25zdCBpc0Jyb3dzZXIgPSAoKSA9PiB0eXBlb2Ygd2luZG93ICE9PSBgdW5kZWZpbmVkYDtcbmV4cG9ydCBjb25zdCBwZXJmb3JtT25FbnRlciA9IChmbikgPT4ge1xuICAgIHJldHVybiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IGtleUNvZGVzLmVudGVyKSB7XG4gICAgICAgICAgICBmbihldmVudCk7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbmV4cG9ydCBjb25zdCBpc0NTU01hc2tTdXBwb3J0ZWQgPSAoKSA9PiB7XG4gICAgaWYgKCFpc0Jyb3dzZXIoKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuICh3aW5kb3cuQ1NTICYmXG4gICAgICAgIHdpbmRvdy5DU1Muc3VwcG9ydHMoJyhtYXNrLXJlcGVhdDogbm8tcmVwZWF0KSBvciAoLXdlYmtpdC1tYXNrLXJlcGVhdDogbm8tcmVwZWF0KScpKTtcbn07XG5leHBvcnQgY29uc3QgaXNFbXB0eU9iamVjdCA9IChvYmopID0+ICFvYmogfHwgKE9iamVjdC5rZXlzKG9iaikubGVuZ3RoID09PSAwICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0KTtcbmV4cG9ydCBjb25zdCBpc1NhZmFyaSA9ICgpID0+IC9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QobmF2aWdhdG9yPy51c2VyQWdlbnQpO1xuLy8gZXZlbiB0aG91Z2ggbmF2aWdhdG9yLnBsYXRmb3JtIGlzIGRlcHJlY2F0ZWQsIGl0J3Mgc3RpbGwgdGhlIG1vc3QgcmVsaWFibGUgd2F5IHRvIGRldGVjdCB0aGUgT1Ncbi8vIHN1Z2dlc3RlZCBieSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvTmF2aWdhdG9yL3BsYXRmb3JtXG4vLyB0aGlzIGZ1bmN0aW9uIGlzIG5vdCB3b3JraW5nIGluIFNTUiBlbnZpcm9ubWVudFxuLy8gc2hvdWxkIGJlIHVzZWQgb25seSBpbiB0aGUgYnJvd3NlciBlbnZpcm9ubWVudFxuZXhwb3J0IGNvbnN0IGlzTWFjID0gKCkgPT4gbmF2aWdhdG9yPy5wbGF0Zm9ybT8udG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCdtYWMnKTtcbmV4cG9ydCBjb25zdCBnZXREYXRhQXR0cmlidXRlcyA9IChwcm9wcykgPT4ge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhwcm9wcykucmVkdWNlKChhY2MsIFtrZXksIHZhbF0pID0+IHtcbiAgICAgICAgaWYgKGtleS5pbmNsdWRlcygnZGF0YS0nKSkge1xuICAgICAgICAgICAgYWNjW2tleV0gPSB2YWw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIHBpY2soc291cmNlLCBrZXlzKSB7XG4gICAgcmV0dXJuIGtleXMucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgICBpZiAoIXNvdXJjZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICBba2V5XTogc291cmNlW2tleV0sXG4gICAgICAgIH07XG4gICAgfSwge30pO1xufVxuZXhwb3J0IGNvbnN0IGlkVG9Db21wUmVmID0gKGlkKSA9PiAoeyBpZCwgdHlwZTogJ0RFU0tUT1AnIH0pO1xuZXhwb3J0IGNvbnN0IGlzV2l4RG9tYWluID0gKHVybCkgPT4gWydlZGl0b3J4LmlvJywgJ3dpeHNpdGUuY29tJywgJ3dpeC5jb20nLCAnd2l4c3R1ZGlvLmlvJ10uc29tZShkb21haW4gPT4gdXJsLmluY2x1ZGVzKGRvbWFpbikpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbHMuanMubWFwIiwibW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX1hkZl9fXzsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHtcbiAgcmV0dXJuIG1vZHVsZS5leHBvcnRzID0gX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAobikge1xuICAgIGZvciAodmFyIGUgPSAxOyBlIDwgYXJndW1lbnRzLmxlbmd0aDsgZSsrKSB7XG4gICAgICB2YXIgdCA9IGFyZ3VtZW50c1tlXTtcbiAgICAgIGZvciAodmFyIHIgaW4gdCkgKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsIHIpICYmIChuW3JdID0gdFtyXSk7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIF9leHRlbmRzLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9leHRlbmRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gcihlKXt2YXIgdCxmLG49XCJcIjtpZihcInN0cmluZ1wiPT10eXBlb2YgZXx8XCJudW1iZXJcIj09dHlwZW9mIGUpbis9ZTtlbHNlIGlmKFwib2JqZWN0XCI9PXR5cGVvZiBlKWlmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdJiYoZj1yKGVbdF0pKSYmKG4mJihuKz1cIiBcIiksbis9Zik7ZWxzZSBmb3IodCBpbiBlKWVbdF0mJihuJiYobis9XCIgXCIpLG4rPXQpO3JldHVybiBufWV4cG9ydCBmdW5jdGlvbiBjbHN4KCl7Zm9yKHZhciBlLHQsZj0wLG49XCJcIjtmPGFyZ3VtZW50cy5sZW5ndGg7KShlPWFyZ3VtZW50c1tmKytdKSYmKHQ9cihlKSkmJihuJiYobis9XCIgXCIpLG4rPXQpO3JldHVybiBufWV4cG9ydCBkZWZhdWx0IGNsc3g7IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0ZnVuY3Rpb24oKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG5cdFx0ZnVuY3Rpb24oKSB7IHJldHVybiBtb2R1bGU7IH07XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBkZWZpbml0aW9uKSB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iaiwgcHJvcCkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7IH0iLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsIi8vIHNoYW1lbGVzc2x5IHN0b2xlbiBmb3JtIGh0dHBzOi8vZGV2LnRvL244dGIxdC90cmFja2luZy1zY3JvbGwtcG9zaXRpb24td2l0aC1yZWFjdC1ob29rcy0zYmJqXG5pbXBvcnQgeyB1c2VSZWYsIHVzZUxheW91dEVmZmVjdCwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGZhc3Rkb20gZnJvbSAnZmFzdGRvbSc7XG5pbXBvcnQgeyBpc0Jyb3dzZXIgfSBmcm9tICdAd2l4L2VkaXRvci1lbGVtZW50cy1jb21tb24tdXRpbHMnO1xuXG5leHBvcnQgdHlwZSBQb3MgPSB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyBpc0F0UGFnZUJvdHRvbTogYm9vbGVhbiB9O1xuXG5mdW5jdGlvbiBnZXRTY3JvbGxQb3NpdGlvbigpOiBQb3Mge1xuICBpZiAoIWlzQnJvd3NlcigpKSB7XG4gICAgcmV0dXJuIHsgeDogMCwgeTogMCwgaXNBdFBhZ2VCb3R0b206IGZhbHNlIH07XG4gIH1cblxuICBjb25zdCB7IGxlZnQsIHRvcCB9ID0gZG9jdW1lbnQuYm9keS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgaXNBdFBhZ2VCb3R0b20gPVxuICAgIHdpbmRvdy5pbm5lckhlaWdodCArIHdpbmRvdy5zY3JvbGxZID09PSBkb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodDtcbiAgcmV0dXJuIHsgeDogbGVmdCwgeTogdG9wLCBpc0F0UGFnZUJvdHRvbSB9O1xufVxuXG5leHBvcnQgdHlwZSB1c2VTY3JvbGxQb3NpdGlvbk9wdGlvbnMgPSB7XG4gIHdhaXRGb3I/OiBudW1iZXI7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTY3JvbGxQb3NpdGlvbihcbiAgZWZmZWN0OiAoeyBwcmV2UG9zLCBjdXJyUG9zIH06IHsgcHJldlBvczogUG9zOyBjdXJyUG9zOiBQb3MgfSkgPT4gdm9pZCxcbiAgZGVwczogQXJyYXk8YW55PixcbiAgb3B0aW9uczogdXNlU2Nyb2xsUG9zaXRpb25PcHRpb25zID0ge30sXG4pIHtcbiAgb3B0aW9ucyA9IHtcbiAgICB3YWl0Rm9yOiAxMDAsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIC4uLm9wdGlvbnMsXG4gIH07XG5cbiAgY29uc3QgcG9zaXRpb24gPSB1c2VSZWYoZ2V0U2Nyb2xsUG9zaXRpb24oKSk7XG4gIGxldCB0aHJvdHRsZVRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBjb25zdCBjYWxsQmFjayA9ICgpID0+IHtcbiAgICBmYXN0ZG9tLm1lYXN1cmUoKCkgPT4ge1xuICAgICAgY29uc3QgY3VyclBvcyA9IGdldFNjcm9sbFBvc2l0aW9uKCk7XG4gICAgICBjb25zdCBwcmV2UG9zID0gcG9zaXRpb24uY3VycmVudDtcbiAgICAgIHBvc2l0aW9uLmN1cnJlbnQgPSBjdXJyUG9zO1xuICAgICAgdGhyb3R0bGVUaW1lb3V0ID0gbnVsbDtcbiAgICAgIGZhc3Rkb20ubXV0YXRlKCgpID0+IGVmZmVjdCh7IHByZXZQb3MsIGN1cnJQb3MgfSkpO1xuICAgIH0pO1xuICB9O1xuICBjb25zdCB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0ID0gaXNCcm93c2VyKCkgPyB1c2VMYXlvdXRFZmZlY3QgOiB1c2VFZmZlY3Q7XG4gIHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNCcm93c2VyKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaGFuZGxlU2Nyb2xsID0gKCkgPT4ge1xuICAgICAgaWYgKHRocm90dGxlVGltZW91dCA9PT0gbnVsbCkge1xuICAgICAgICB0aHJvdHRsZVRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dChjYWxsQmFjaywgb3B0aW9ucy53YWl0Rm9yKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKCFvcHRpb25zLmRpc2FibGVkKSB7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgIC8vIGNsZWFudXAgY2FsbGJhY2tcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICBpZiAodGhyb3R0bGVUaW1lb3V0KSB7XG4gICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aHJvdHRsZVRpbWVvdXQpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge307XG4gIH0sIGRlcHMpO1xufVxuIiwiY29uc3Qgc2VtYW50aWNDbGFzc05hbWVzID0ge1xuICByb290OiAnaGVhZGVyJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBkZWZhdWx0IHNlbWFudGljQ2xhc3NOYW1lcztcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuZXhwb3J0IGRlZmF1bHQge1wid2l0aFNwYWNpbmdcIjpcIlBnYkJPTFwifTsiLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbmV4cG9ydCBkZWZhdWx0IHtcInJvb3RcIjpcIm1CSkhmZFwifTsiLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUge1xuICBIZWFkZXJBbmltYXRpb25TdGF0ZSxcbiAgSUhlYWRlclNlY3Rpb25Qcm9wcyxcbn0gZnJvbSAnLi4vSGVhZGVyU2VjdGlvbi50eXBlcyc7XG5pbXBvcnQgaGVhZGVyU3R5bGVzIGZyb20gJy4vSGVhZGVyU2VjdGlvbkJ1aWxkZXIuc2Nzcyc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbHN4JztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi4vLi4vU2VjdGlvbi92aWV3ZXIvc3R5bGVzL1NlY3Rpb24uc2Nzcyc7XG5pbXBvcnQgc2VtYW50aWNDbGFzc05hbWVzIGZyb20gJy4uL0hlYWRlclNlY3Rpb24uc2VtYW50aWNDbGFzc05hbWVzJztcbmltcG9ydCBTZWN0aW9uIGZyb20gJy4uLy4uL1NlY3Rpb24vdmlld2VyL1NlY3Rpb24nO1xuXG5pbnRlcmZhY2UgSGVhZGVyU2VjdGlvbkJ1aWxkZXJPd25Qcm9wcyB7XG4gIGFuaW1hdGlvblN0YXRlOiBIZWFkZXJBbmltYXRpb25TdGF0ZTtcbiAgc2Nyb2xsZWQ6IGJvb2xlYW47XG59XG50eXBlIFByb3BzID0gSUhlYWRlclNlY3Rpb25Qcm9wcyAmIEhlYWRlclNlY3Rpb25CdWlsZGVyT3duUHJvcHM7XG5cbmNvbnN0IEhlYWRlclNlY3Rpb25CdWlsZGVyOiBSZWFjdC5GQzxQcm9wcz4gPSBwcm9wcyA9PiB7XG4gIGNvbnN0IGlzRmFkZWREb3duID1cbiAgICBwcm9wcy5hbmltYXRpb25TdGF0ZSA9PT0gJ3Njcm9sbGVkLWRvd24nICYmIHByb3BzLmFuaW1hdGUgPT09ICdmYWRlJztcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGlkPXsnaGVhZGVyLXNlY3Rpb24td3JhcHBlcl8nICsgcHJvcHMuaWR9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoaGVhZGVyU3R5bGVzLnJvb3QsIHByb3BzLmNsYXNzTmFtZSwge1xuICAgICAgICBbc3R5bGVzLmFuaW1hdGVdOiBwcm9wcy5hbmltYXRlICE9PSAnbm9uZScsXG4gICAgICAgIFtzdHlsZXMubW92ZV06XG4gICAgICAgICAgcHJvcHMuYW5pbWF0aW9uU3RhdGUgPT09ICdzY3JvbGxlZC1kb3duJyAmJiBwcm9wcy5hbmltYXRlID09PSAnbW92ZScsXG4gICAgICAgIFtzdHlsZXMuZmFkZV06IGlzRmFkZWREb3duLFxuICAgICAgICBbc3R5bGVzLmhlYWRlclNlY3Rpb25BZGRWaXNpYmlsaXR5VHJhbnNpdGlvbl06XG4gICAgICAgICAgaXNGYWRlZERvd24gJiYgcHJvcHMuaXNIZWFkZXJTZWN0aW9uQWRkVmlzaWJpbGl0eVRyYW5zaXRpb25FbmFibGVkLFxuICAgICAgICBbc3R5bGVzLnNjcm9sbFVwXTogcHJvcHMuYW5pbWF0aW9uU3RhdGUgPT09ICdzY3JvbGxlZC11cCcsXG4gICAgICAgIFtzdHlsZXMuc2Nyb2xsZWRdOiBwcm9wcy5zY3JvbGxlZCxcbiAgICAgIH0pfVxuICAgID5cbiAgICAgIDxTZWN0aW9uXG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgc2VtYW50aWNDbGFzc05hbWVzPXtzZW1hbnRpY0NsYXNzTmFtZXN9XG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhwcm9wcy5jbGFzc05hbWUsIHtcbiAgICAgICAgICBbc3R5bGVzW3Byb3BzLnNraW5dXTogdHJ1ZSxcbiAgICAgICAgfSl9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgSGVhZGVyU2VjdGlvbkJ1aWxkZXI7XG4iLCIndXNlLWNsaWVudCc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbHN4JztcbmltcG9ydCBTZWN0aW9uIGZyb20gJy4uLy4uL1NlY3Rpb24vdmlld2VyL1NlY3Rpb24nO1xuaW1wb3J0IHR5cGUgeyBQb3MgfSBmcm9tICcuLi8uLi8uLi8uLi9wcm92aWRlcnMvdXNlU2Nyb2xsUG9zaXRpb24nO1xuaW1wb3J0IHsgdXNlU2Nyb2xsUG9zaXRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9wcm92aWRlcnMvdXNlU2Nyb2xsUG9zaXRpb24nO1xuaW1wb3J0IHR5cGUge1xuICBIZWFkZXJBbmltYXRpb25TdGF0ZSxcbiAgSUhlYWRlclNlY3Rpb25Qcm9wcyxcbn0gZnJvbSAnLi4vSGVhZGVyU2VjdGlvbi50eXBlcyc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4uLy4uL1NlY3Rpb24vdmlld2VyL3N0eWxlcy9TZWN0aW9uLnNjc3MnO1xuaW1wb3J0IHNlbWFudGljQ2xhc3NOYW1lcyBmcm9tICcuLi9IZWFkZXJTZWN0aW9uLnNlbWFudGljQ2xhc3NOYW1lcyc7XG5pbXBvcnQgaGVhZGVyU3R5bGVzIGZyb20gJy4vSGVhZGVyU2VjdGlvbi5zY3NzJztcbmltcG9ydCBIZWFkZXJTZWN0aW9uQnVpbGRlciBmcm9tICcuL0hlYWRlclNlY3Rpb25CdWlsZGVyJztcblxuY29uc3QgU0NST0xMRURfWSA9IDI7XG5cbmNvbnN0IFNDUk9MTF9VUF9USFJFU0hPTEQgPSAxMDA7XG5cbmNvbnN0IGdldERvd25UaHJlc2hvbGQgPSAoYW5pbWF0aW9uVHlwZTogSUhlYWRlclNlY3Rpb25Qcm9wc1snYW5pbWF0ZSddKSA9PiB7XG4gIHN3aXRjaCAoYW5pbWF0aW9uVHlwZSkge1xuICAgIGNhc2UgJ21vdmUnOlxuICAgICAgcmV0dXJuIDQwMDtcbiAgICBjYXNlICdmYWRlJzpcbiAgICAgIHJldHVybiAyMDA7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAyMDA7XG4gIH1cbn07XG5cbmNvbnN0IGNyZWF0ZUFuaW1hdGlvblNjcm9sbExpc3RlbmVyID0gKFxuICBhbmltYXRpb25UeXBlOiBJSGVhZGVyU2VjdGlvblByb3BzWydhbmltYXRlJ10sXG4gIHNldEFuaW1hdGlvbkNsYXNzOiBGdW5jdGlvbixcbikgPT4ge1xuICBsZXQgZGlyQ2hhbmdlU3RhcnQgPSAwO1xuICBsZXQgc2Nyb2xsU3RhdGU6ICdVUCcgfCAnRE9XTicgPSAnRE9XTic7XG4gIGNvbnN0IGxpc3RlbmVyID0gKHsgcHJldlBvcywgY3VyclBvcyB9OiB7IHByZXZQb3M6IFBvczsgY3VyclBvczogUG9zIH0pID0+IHtcbiAgICBjb25zdCBjdXJyU2Nyb2xsID0gY3VyclBvcy55ICogLTE7XG4gICAgY29uc3QgcHJldlNjcm9sbCA9IHByZXZQb3MueSAqIC0xO1xuICAgIGlmIChjdXJyU2Nyb2xsID49IHByZXZTY3JvbGwpIHtcbiAgICAgIGlmIChzY3JvbGxTdGF0ZSA9PT0gJ1VQJykge1xuICAgICAgICBkaXJDaGFuZ2VTdGFydCA9IHByZXZTY3JvbGw7XG4gICAgICAgIHNjcm9sbFN0YXRlID0gJ0RPV04nO1xuICAgICAgfVxuICAgICAgaWYgKGN1cnJTY3JvbGwgLSBkaXJDaGFuZ2VTdGFydCA+IGdldERvd25UaHJlc2hvbGQoYW5pbWF0aW9uVHlwZSkpIHtcbiAgICAgICAgc2V0QW5pbWF0aW9uQ2xhc3MoJ3Njcm9sbGVkLWRvd24nKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHNjcm9sbFN0YXRlID09PSAnRE9XTicpIHtcbiAgICAgICAgZGlyQ2hhbmdlU3RhcnQgPSBwcmV2U2Nyb2xsO1xuICAgICAgICBzY3JvbGxTdGF0ZSA9ICdVUCc7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGRpckNoYW5nZVN0YXJ0IC0gY3VyclNjcm9sbCA+IFNDUk9MTF9VUF9USFJFU0hPTEQgfHxcbiAgICAgICAgY3VyclNjcm9sbCA8PSAxMFxuICAgICAgKSB7XG4gICAgICAgIHNldEFuaW1hdGlvbkNsYXNzKCdzY3JvbGxlZC11cCcpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGxpc3RlbmVyO1xufTtcblxuY29uc3QgSGVhZGVyU2VjdGlvbjogUmVhY3QuRkM8SUhlYWRlclNlY3Rpb25Qcm9wcz4gPSBwcm9wcyA9PiB7XG4gIGNvbnN0IFtzY3JvbGxlZCwgc2V0U2Nyb2xsZWRdID0gUmVhY3QudXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIC8vIGJnIGNvbG9yIGNoYW5nZSBsaXN0ZW5lclxuICB1c2VTY3JvbGxQb3NpdGlvbihcbiAgICAoeyBjdXJyUG9zIH0pID0+IHtcbiAgICAgIGlmIChjdXJyUG9zLnkgKiAtMSA+PSBTQ1JPTExFRF9ZKSB7XG4gICAgICAgIGlmICghc2Nyb2xsZWQpIHtcbiAgICAgICAgICBzZXRTY3JvbGxlZCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzY3JvbGxlZCkge1xuICAgICAgICBzZXRTY3JvbGxlZChmYWxzZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbc2Nyb2xsZWRdLFxuICAgIHsgZGlzYWJsZWQ6IHByb3BzLnNraW4gIT09ICdSZWN0YW5nbGVBcmVhQWZ0ZXJTY3JvbGwnIH0sXG4gICk7XG5cbiAgY29uc3QgW2FuaW1hdGlvblN0YXRlLCBzZXRBbmltYXRpb25DbGFzc10gPVxuICAgIHVzZVN0YXRlPEhlYWRlckFuaW1hdGlvblN0YXRlPignJyk7XG5cbiAgLy8gYW5pbWF0aW9uIGxpc3RlbmVyXG4gIHVzZVNjcm9sbFBvc2l0aW9uKFxuICAgIGNyZWF0ZUFuaW1hdGlvblNjcm9sbExpc3RlbmVyKHByb3BzLmFuaW1hdGUsIHNldEFuaW1hdGlvbkNsYXNzKSxcbiAgICBbXSxcbiAgICB7XG4gICAgICB3YWl0Rm9yOiA0NSxcbiAgICAgIGRpc2FibGVkOiBwcm9wcy5hbmltYXRlID09PSAnbm9uZScsXG4gICAgfSxcbiAgKTtcblxuICBpZiAocHJvcHMuaXNCdWlsZGVyICYmICFwcm9wcy5pc0hlYWRlclVzZU1hcmdpbnNFbmFibGVkKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxIZWFkZXJTZWN0aW9uQnVpbGRlclxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIGFuaW1hdGlvblN0YXRlPXthbmltYXRpb25TdGF0ZX1cbiAgICAgICAgc2Nyb2xsZWQ9e3Njcm9sbGVkfVxuICAgICAgLz5cbiAgICApO1xuICB9XG5cbiAgY29uc3QgaXNGYWRlZERvd24gPVxuICAgIGFuaW1hdGlvblN0YXRlID09PSAnc2Nyb2xsZWQtZG93bicgJiYgcHJvcHMuYW5pbWF0ZSA9PT0gJ2ZhZGUnO1xuXG4gIHJldHVybiAoXG4gICAgPFNlY3Rpb25cbiAgICAgIHsuLi5wcm9wc31cbiAgICAgIHNlbWFudGljQ2xhc3NOYW1lcz17c2VtYW50aWNDbGFzc05hbWVzfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKHByb3BzLmNsYXNzTmFtZSwge1xuICAgICAgICBbc3R5bGVzW3Byb3BzLnNraW5dXTogdHJ1ZSxcbiAgICAgICAgW3N0eWxlcy5zY3JvbGxlZF06IHNjcm9sbGVkLFxuICAgICAgICBbc3R5bGVzLmFuaW1hdGVdOiBwcm9wcy5hbmltYXRlICE9PSAnbm9uZScsXG4gICAgICAgIFtzdHlsZXMubW92ZV06XG4gICAgICAgICAgYW5pbWF0aW9uU3RhdGUgPT09ICdzY3JvbGxlZC1kb3duJyAmJiBwcm9wcy5hbmltYXRlID09PSAnbW92ZScsXG4gICAgICAgIFtzdHlsZXMuZmFkZV06IGlzRmFkZWREb3duLFxuICAgICAgICBbc3R5bGVzLmhlYWRlclNlY3Rpb25BZGRWaXNpYmlsaXR5VHJhbnNpdGlvbl06XG4gICAgICAgICAgaXNGYWRlZERvd24gJiYgcHJvcHMuaXNIZWFkZXJTZWN0aW9uQWRkVmlzaWJpbGl0eVRyYW5zaXRpb25FbmFibGVkLFxuICAgICAgICBbc3R5bGVzLnNjcm9sbFVwXTogYW5pbWF0aW9uU3RhdGUgPT09ICdzY3JvbGxlZC11cCcsXG4gICAgICAgIFtoZWFkZXJTdHlsZXMud2l0aFNwYWNpbmddOlxuICAgICAgICAgIHByb3BzLmlzSGVhZGVyVXNlTWFyZ2luc0VuYWJsZWQgJiYgcHJvcHMuaXNCdWlsZGVyLFxuICAgICAgfSl9XG4gICAgLz5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEhlYWRlclNlY3Rpb247XG4iXSwibmFtZXMiOlsicm9vdCIsImZhY3RvcnkiLCJleHBvcnRzIiwibW9kdWxlIiwicmVxdWlyZSIsImRlZmluZSIsImFtZCIsInNlbGYiLCJ0aGlzIiwiX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9YZGZfX18iLCJDU1NfUFJFRklYIiwiZm9ybWF0Q2xhc3NOYW1lcyIsInNlbWFudGljQ2xhc3NOYW1lIiwiY3VzdG9tQ2xhc3NOYW1lcyIsInJlc3VsdCIsInB1c2giLCJmb3JFYWNoIiwiY2xhc3NOYW1lIiwiam9pbiIsImtleUNvZGVzIiwiYWN0aXZhdGVCeUtleSIsImtleSIsImV2ZW50Iiwia2V5Q29kZSIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiY3VycmVudFRhcmdldCIsImNsaWNrIiwiVGVzdElkcyIsIkFQSV9WRVJTSU9OIiwiTUFYX0RFVklDRV9QSVhFTF9SQVRJTyIsIkRTS1RQX01BWF9CR19TSVRFX0xFR0FDWV9XSURUSCIsIkRTS1RQX01BWF9CR19TSVRFX0xFR0FDWV9IRUlHSFQiLCJNT0JJTEVfTUFYX0JHX1NJVEVfTEVHQUNZX1dJRFRIIiwiTU9CSUxFX01BWF9CR19TSVRFX0xFR0FDWV9IRUlHSFQiLCJmaXR0aW5nVHlwZXMiLCJTQ0FMRV9UT19GSUxMIiwiU0NBTEVfVE9fRklUIiwiU1RSRVRDSCIsIk9SSUdJTkFMX1NJWkUiLCJUSUxFIiwiVElMRV9IT1JJWk9OVEFMIiwiVElMRV9WRVJUSUNBTCIsIkZJVF9BTkRfVElMRSIsIkxFR0FDWV9TVFJJUF9USUxFIiwiTEVHQUNZX1NUUklQX1RJTEVfSE9SSVpPTlRBTCIsIkxFR0FDWV9TVFJJUF9USUxFX1ZFUlRJQ0FMIiwiTEVHQUNZX1NUUklQX1NDQUxFX1RPX0ZJTEwiLCJMRUdBQ1lfU1RSSVBfU0NBTEVfVE9fRklUIiwiTEVHQUNZX1NUUklQX0ZJVF9BTkRfVElMRSIsIkxFR0FDWV9TVFJJUF9PUklHSU5BTF9TSVpFIiwiTEVHQUNZX09SSUdJTkFMX1NJWkUiLCJMRUdBQ1lfRklUX1dJRFRIIiwiTEVHQUNZX0ZJVF9IRUlHSFQiLCJMRUdBQ1lfRlVMTCIsIkxFR0FDWV9CR19GSVRfQU5EX1RJTEUiLCJMRUdBQ1lfQkdfRklUX0FORF9USUxFX0hPUklaT05UQUwiLCJMRUdBQ1lfQkdfRklUX0FORF9USUxFX1ZFUlRJQ0FMIiwiTEVHQUNZX0JHX05PUk1BTCIsInRyYW5zZm9ybVR5cGVzIiwiRklUIiwiRklMTCIsIkZJTExfRk9DQUwiLCJDUk9QIiwiTEVHQUNZX0NST1AiLCJMRUdBQ1lfRklMTCIsImFsaWduVHlwZXMiLCJDRU5URVIiLCJUT1AiLCJUT1BfTEVGVCIsIlRPUF9SSUdIVCIsIkJPVFRPTSIsIkJPVFRPTV9MRUZUIiwiQk9UVE9NX1JJR0hUIiwiTEVGVCIsIlJJR0hUIiwiQUxJR05fVFlQRV9UT19GT0NBTF9QT0lOVCIsIngiLCJ5IiwiYWxpZ25UeXBlc01hcCIsImNlbnRlciIsInRvcCIsInRvcF9sZWZ0IiwidG9wX3JpZ2h0IiwiYm90dG9tIiwiYm90dG9tX2xlZnQiLCJib3R0b21fcmlnaHQiLCJsZWZ0IiwicmlnaHQiLCJodG1sVGFnIiwiQkciLCJJTUciLCJTVkciLCJ1cHNjYWxlTWV0aG9kcyIsIkFVVE8iLCJDTEFTU0lDIiwiU1VQRVIiLCJ1cHNjYWxlTWV0aG9kc1ZhbHVlcyIsImNsYXNzaWMiLCJzdXBlciIsImRlZmF1bHRVU00iLCJyYWRpdXMiLCJhbW91bnQiLCJ0aHJlc2hvbGQiLCJlbXB0eURhdGEiLCJ1cmkiLCJjc3MiLCJpbWciLCJjb250YWluZXIiLCJhdHRyIiwidHJhbnNmb3JtZWQiLCJTQUZFX1RSQU5TRk9STUVEX0FSRUEiLCJNQVhfVFJBTlNGT1JNRURfSU1BR0VfV0lEVEgiLCJTVVBFUl9VUFNDQUxFX01PREVMUyIsImltYWdlU2NhbGVEZWZhdWx0cyIsIkhJR0giLCJzaXplIiwicXVhbGl0eSIsIm1heFVwc2NhbGUiLCJNRURJVU0iLCJMT1ciLCJUSU5ZIiwiaW1hZ2VRdWFsaXR5IiwiaW1hZ2VGaWx0ZXJzIiwiQ09OVFJBU1QiLCJCUklHSFRORVNTIiwiU0FUVVJBVElPTiIsIkhVRSIsIkJMVVIiLCJmaWxlVHlwZSIsIkpQRyIsIkpQRUciLCJKUEUiLCJQTkciLCJXRUJQIiwiV0lYX0lDT19NUCIsIldJWF9NUCIsIkdJRiIsIkFWSUYiLCJVTlJFQ09HTklaRUQiLCJlbmNvZGluZ1R5cGVzIiwiUEFWSUYiLCJ0ZW1wbGF0ZSIsInN0cmluZ3MiLCJrZXlzIiwidmFsdWVzIiwiZGljdCIsImxlbmd0aCIsImkiLCJ2YWx1ZSIsIk51bWJlciIsImlzSW50ZWdlciIsImxhc3QiLCJhcnJheSIsIlNVUFBPUlRFRF9JTUFHRV9FWFRFTlNJT05TIiwiSlBHX0VYVEVOU0lPTlMiLCJpc1ZhbGlkUmVxdWVzdCIsImZpdHRpbmdUeXBlIiwic3JjIiwidGFyZ2V0IiwidXJsIiwiaWQiLCJ0cmltIiwidG9Mb3dlckNhc2UiLCJPYmplY3QiLCJpbmNsdWRlcyIsImlzSW1hZ2VUcmFuc2Zvcm1BcHBsaWNhYmxlIiwiaGFzQW5pbWF0aW9uIiwiYWxsb3dBbmltYXRlZFRyYW5zZm9ybSIsImFsbG93RnVsbEdJRlRyYW5zZm9ybWF0aW9uIiwidGVzdCIsImlzV0VCUCIsImlzQVZJRiIsImNhblRyYW5zZm9ybUFuaW1hdGVkV2VicE9yQXZpZiIsImlzU3VwcG9ydGVkSW1hZ2VUeXBlIiwiZ2V0RmlsZUV4dGVuc2lvbiIsImlzSW1hZ2VUeXBlU3VwcG9ydGVkIiwiaXNUcmFuc2Zvcm1hYmxlR2lmIiwiaXNHSUYiLCJjYW5UcmFuc2Zvcm1HSUYiLCJpc1BORyIsIklMTEVHQUxfQ0hBUlMiLCJtYXAiLCJlbmNvZGVVUklDb21wb25lbnQiLCJVUkxfU0FGRV9JTExFR0FMX0NIQVJTIiwiSUxMRUdBTF9DSEFSU19SRVBMQUNFTUVOVCIsImdldEZpbGVUeXBlIiwiaXNKUEciLCJleGVjIiwiZ2V0U2NhbGVGYWN0b3IiLCJzV2lkdGgiLCJzSGVpZ2h0IiwiZFdpZHRoIiwiZEhlaWdodCIsInRyYW5zZm9ybVR5cGUiLCJzY2FsZUZhY3RvciIsIk1hdGgiLCJtYXgiLCJnZXRGaWxsU2NhbGVGYWN0b3IiLCJtaW4iLCJnZXRGaXRTY2FsZUZhY3RvciIsImdldFRyYW5zZm9ybURhdGEiLCJkcHIiLCJ1cHNjYWxlTWV0aG9kIiwid2lkdGgiLCJoZWlnaHQiLCJkaW1lbnNpb25TY2FsZUZhY3RvciIsInNxcnQiLCJnZXRTYWZlVHJhbnNmb3JtRGF0YSIsInRXaWR0aCIsInRIZWlnaHQiLCJvcHRpbWl6ZWRTY2FsZUZhY3RvciIsInVwc2NhbGVNZXRob2RWYWx1ZSIsImZvcmNlVVNNIiwiaW1hZ2VLZXkiLCJnZXRJbWFnZVF1YWxpdHlLZXkiLCJnZXRBdXRvU2NhbGVEYXRhIiwiZ2V0U3VwZXJTY2FsZURhdGEiLCJnZXRDbGFzc2ljU2NhbGVEYXRhIiwiZ2V0T3B0aW1pemVkU2NhbGVEYXRhIiwiY3NzVXBzY2FsZU5lZWRlZCIsImdldE9wdGltaXplZFRyYW5zZm9ybURhdGEiLCJnZXRBbGlnbmVkUmVjdCIsInNSZWN0IiwiZFJlY3QiLCJzRlAiLCJhbGlnbm1lbnQiLCJmcCIsImdldEZvY2FsUG9pbnQiLCJnZXRGb2NhbFBvaW50RnJvbTlHcmlkQWxpZ25tZW50IiwiZ2V0QWxpZ25tZW50IiwiZm9jYWxQb2ludCIsImlzTmFOIiwicm91bmRUb0ZpeGVkIiwiaW1hZ2VXaWR0aCIsImltYWdlSGVpZ2h0IiwicHJlY2lzaW9uIiwidHJ1bmNhdGVQcmVjaXNpb24iLCJwb3ciLCJ0b0ZpeGVkIiwiZ2V0VXBzY2FsZVN0cmluZyIsIm9wdGlvbnMiLCJ0b1VwcGVyQ2FzZSIsImltYWdlSXNBbmltYXRlZCIsImlzQXZpZldlYnBGb3JtYXQiLCJnbG9iYWxGZWF0dXJlc1N1cHBvcnRPYmoiLCJpc01vYmlsZSIsImdldEZlYXR1cmUiLCJmZWF0dXJlIiwicG9wdWxhdGVHbG9iYWxGZWF0dXJlU3VwcG9ydCIsIndpbmRvdyIsIm5hdmlnYXRvciIsImlzU21hbGxTY3JlZW4iLCJtYXRjaE1lZGlhIiwibWF0Y2hlcyIsImlzTW9iaWxlQWdlbnQiLCJ1c2VyQWdlbnQiLCJnZXRDU1MiLCJ0cmFuc2Zvcm1zT2JqIiwiYXR0cmlidXRlcyIsImJhY2tncm91bmRTaXplIiwiYmFja2dyb3VuZFJlcGVhdCIsImJhY2tncm91bmRQb3NpdGlvbiIsImFsaWduVHlwZVRvUG9zaXRpb25TdHIiLCJhbGlnbWVudERlZmF1bHRzIiwicG9zaXRpb24iLCJhbGlnblR5cGUiLCJwYXJ0cyIsIm9iamVjdEZpdCIsIm9iamVjdFBvc2l0aW9uIiwidmVydGljYWxNaWRkbGUiLCJyb3VuZCIsImhvcml6b250YWxNaWRkbGUiLCJhc3NpZ24iLCJhbGlnblR5cGVUb1Bvc2l0aW9uIiwiZ2V0U3ZnQXR0ciIsInNvdXJjZVdpZHRoIiwic291cmNlSGVpZ2h0IiwiaW1hZ2VTY2FsZSIsInByZXNlcnZlQXNwZWN0UmF0aW8iLCJ0cmFuc2Zvcm0iLCJnZXREaW1lbnNpb24iLCJtaWRkbGUiLCJ2aWV3Qm94Iiwic2V0VHJhbnNmb3JtUGFydHMiLCJyZWN0IiwiY3JvcCIsImdldE92ZXJsYXBwaW5nUmVjdCIsImlzQ3JvcHBlZCIsImdldENyb3BQYXJ0IiwiZ2V0Rml0UGFydCIsInRyYW5zZm9ybWVkRGF0YSIsImRldmljZVBpeGVsUmF0aW8iLCJmb2NhbFBvaW50WCIsImZvY2FsUG9pbnRZIiwidXBzY2FsZSIsImdldEZpbGxQYXJ0IiwiY2xvbmVkVGFyZ2V0IiwiZ2V0U3RyZXRjaFBhcnQiLCJnZXRMZWdhY3lDcm9wUGFydCIsImdldExlZ2FjeUZpdFBhcnQiLCJnZXRMZWdhY3lGaWxsUGFydCIsInNldFRyYW5zZm9ybU9wdGlvbnMiLCJpc1F1YWxpdHlTdXBwb3J0ZWQiLCJ0cmFuc2Zvcm1EYXRhIiwiZGVmYXVsdFF1YWxpdHkiLCJnZXRRdWFsaXR5IiwicHJvZ3Jlc3NpdmUiLCJnZXRQcm9ncmVzc2l2ZSIsIndhdGVybWFyayIsImdldFdhdGVybWFyayIsImF1dG9FbmNvZGUiLCJlbmNvZGluZyIsInVuc2hhcnBNYXNrIiwidXNtIiwiaXNVU01WYWxpZCIsInRyYW5zZm9ybVBhcnQiLCJpc1VTTU5lZWRlZCIsImdldFVuc2hhcnBNYXNrIiwiZmlsdGVycyIsImZpbHRlck9wdGlvbnMiLCJpc1ZhbGlkSW1hZ2VGaWx0ZXIiLCJnZXRGaWx0ZXJzIiwiZmlsdGVyVmFsdWUiLCJtaW5WYWx1ZSIsIm1heFZhbHVlIiwiZ2V0VHJhbnNmb3JtIiwiX2lzU0VPQm90IiwiaXNTRU9Cb3QiLCJmaWxlTmFtZSIsIm5hbWUiLCJmaWxlRXh0ZW5zaW9uUmVnZXhwIiwiaWxsZWdhbENoYXJzUmVnZXgiLCJSZWdFeHAiLCJjb25jYXQiLCJleHRlbnNpb24iLCJtYXRjaCIsInJlcGxhY2UiLCJ0cmltbWVkIiwiZ2V0RmlsZU5hbWUiLCJwaXhlbEFzcGVjdFJhdGlvIiwiZ2V0RGV2aWNlUGl4ZWxSYXRpbyIsImZpbGVFeHRlbnNpb24iLCJwcmVmZXJyZWRFeHRlbnNpb24iLCJjYW5UcmFuc2Zvcm1JbWFnZSIsImlzQW5pbWF0ZWQiLCJpc1BsYWNlaG9sZGVyRmxvdyIsImdldFRhcmdldCIsInRhcmdldE9iaiIsIl9pc01vYmlsZSIsIm1heEJHU2l0ZUxlZ2FjeVdpZHRoIiwibWF4QkdTaXRlTGVnYWN5SGVpZ2h0IiwiZml0VGVtcGxhdGUiLCJmaWxsVGVtcGxhdGUiLCJmaWxsRm9jYWxUZW1wbGF0ZSIsImNyb3BUZW1wbGF0ZSIsImxlZ2FjeUNyb3BUZW1wbGF0ZSIsImxlZ2FjeUZpbGxUZW1wbGF0ZSIsInVwc2NhbGVUZW1wbGF0ZSIsInF1YWxpdHlUZW1wbGF0ZSIsInF1YWxpdHlBdXRvVGVtcGxhdGUiLCJ1blNoYXJwTWFza1RlbXBsYXRlIiwibm9uUHJvZ3Jlc3NpdmVUZW1wbGF0ZSIsIndhdGVybWFya1RlbXBsYXRlIiwiZmlsdGVyVGVtcGxhdGVzTWFwIiwiYXV0b0VuY29kZVRlbXBsYXRlIiwiQVZJRkVuY29kZVRlbXBsYXRlIiwicEFWSUZFbmNvZGVUZW1wbGF0ZSIsImFuaW1hdGVkVHJhbnNmb3JtVGVtcGxhdGUiLCJhbmltYXRlZEdJRlRyYW5zZm9ybVRlbXBsYXRlIiwiZ2V0VVJJIiwidHJhbnNmb3JtT2JqIiwidHJhbnNmb3JtVGFyZ2V0IiwidW5kZWZpbmVkIiwidHJhbnNmb3Jtc09ialN0ckFyciIsImxlZ2FjeUZpbGxTdHIiLCJmaXRTdHIiLCJmaWxsU3RyIiwiZmlsbEZvY2FsU3RyIiwidHJhbnNmb3Jtc1N0ciIsImZpbHRlck5hbWUiLCJpc0dpZiIsImdldEltYWdlVVJJIiwiQUxJR05fVFlQRV9UT19QT1NJVElPTiIsIlBPU0lUSU9OX1RPX0FMSUdOX1RZUEUiLCJlbnRyaWVzIiwicmVkdWNlIiwiYWNjIiwiYWxpZ24iLCJUSUxFX0ZJVFRJTkdfVFlQRVMiLCJOT05fU0NBTElOR19GSVRUSU5HX1RZUEVTIiwiZ2V0SXNGYWtlVGlsZSIsInRhcmdldFdpZHRoIiwidGFyZ2V0SGVpZ2h0IiwidmFsaWRhdGVUYXJnZXREaW1lbnNpb25zIiwiX3dpZHRoIiwiaGVpZ2h0UmF0aW8iLCJnZXRDU1NPdmVycmlkZXMiLCJyZXR1cm5WYWx1ZSIsImFsaWduVHlwZUZyb21Gb2NhbFBvaW50IiwiY29udmVydEZvY2FsUG9pbnRUb0FsaWduVHlwZSIsImNvbnZlcnRGaWxsRm9jYWxUb1Bvc2l0aW9uIiwic1ciLCJzSCIsInRXIiwidEgiLCJmcFgiLCJmcFkiLCJmaWxsU2NhbGVGYWN0b3IiLCJpbWdTY2FsZWRXIiwiaW1nU2NhbGVkSCIsImZsb29yIiwiUExBQ0VIT0xERVJfSU1HX0NTU19PVkVSUklERVMiLCJnZXRQbGFjZWhvbGRlciIsInNob3VsZExvYWRIUUltYWdlIiwiSVNfSU5fUExBQ0VIT0xERVJfRkxPVyIsInNob3VsZEFsbG93QW5pbWF0ZWRUcmFuc2Zvcm1JblBsYWNlaG9sZGVyIiwidXNlU3Jjc2V0IiwibmV3VGFyZ2V0IiwiaXNGYWtlVGlsZSIsInNjYWxlZERpbWVuc2lvbnMiLCJpc1NjYWxhYmxlIiwiaXNUaWxlIiwiX2hlaWdodCIsImlzSGlnaFF1YWxpdHkiLCJnZXRTY2FsZUZhY3RvckJ5V2lkdGgiLCJnZXRTY2FsZWREaW1lbnNpb25zIiwiYmx1ciIsImdldEJsdXJWYWx1ZSIsImNvbnZlcnRlZEZpdHRpbmdUeXBlIiwiZ2V0Q29udmVydGVkRml0dGluZyIsIm92ZXJyaWRlQ1NTIiwiZGF0YSIsInNyY3NldCIsImdldFNyY3NldCIsImF0dHJpYnV0ZXNHZXR0ZXIiLCJnZXRBdHRyaWJ1dGVzIiwid2l4U3RhdGljV2l0aE1lZGlhIiwiU1RBVElDX01FRElBX1VSTCIsImZldGNoTFFJUCIsInBsYWNlaG9sZGVyIiwiU0NIRU1FX1JFIiwiSW1hZ2UiLCJwcm9wcyIsImNvbnRhaW5lcklkIiwiYWx0Iiwicm9sZSIsImRpc3BsYXlNb2RlIiwiYmdFZmZlY3ROYW1lIiwiaW1hZ2VTdHlsZXMiLCJ0YXJnZXRTY2FsZSIsIm9uTG9hZCIsIm9uRXJyb3IiLCJzaG91bGRVc2VMUUlQIiwiY29udGFpbmVyV2lkdGgiLCJjb250YWluZXJIZWlnaHQiLCJpc0luRmlyc3RGb2xkIiwicGxhY2Vob2xkZXJUcmFuc2l0aW9uIiwic29jaWFsQXR0cnMiLCJza2lwTWVhc3VyZSIsImlzRmx1aWRMYXlvdXQiLCJpbWFnZVJlZiIsImhhc1NzclNyYyIsImhhc0JsdXJUcmFuc2l0aW9uIiwic3NySW1hZ2VEYXRhIiwiY3VycmVudCIsImlzTFFJUCIsImltYWdlSW5mbyIsIkpTT04iLCJzdHJpbmdpZnkiLCJscWlwVHJhbnNpdGlvbiIsImltYWdlRGF0YSIsInNzclJlc3VsdCIsInBsYWNlaG9sZGVyU3R5bGUiLCJjbGFzc05hbWVzIiwiaW1nRWxlbWVudCIsImN1cnJlbnRTcmMiLCJjb21wbGV0ZSIsIm1heFdpZHRoIiwiY2xhc3MiLCJzdHlsZSIsInJlZiIsInNyY1NldCIsInMiLCJmZXRjaHByaW9yaXR5IiwibG9hZGluZyIsInN1cHByZXNzSHlkcmF0aW9uV2FybmluZyIsIl9yZXNwb25zaXZlSW1hZ2VQcm9wcyIsIl9yZXNwb25zaXZlSW1hZ2VQcm9wczIiLCJyZXNwb25zaXZlSW1hZ2VQcm9wcyIsInpvb21lZEltYWdlUmVzcG9uc2l2ZU92ZXJyaWRlIiwiZWZmZWN0aXZlV2lkdGgiLCJlZmZlY3RpdmVIZWlnaHQiLCJmYWxsYmFja1NyYyIsInNvdXJjZXMiLCJyZXNwb25zaXZlSW1nQ3NzTm9IZWlnaHRBbmRXaWR0aCIsInJlc3BvbnNpdmVJbWFnZXNTdHlsZSIsIl96b29tZWRJbWFnZVJlc3BvbnNpdiIsIlJlYWN0IiwiX2V4dGVuZHMiLCJzaXplcyIsInN0eWxlcyIsIl9yZWYiLCJzb3VyY2VTcmNzZXQiLCJtZWRpYSIsImltZ1N0eWxlIiwiUGl4ZWxQZXJmZWN0SW1hZ2UiLCJfY3VycmVudFBsYWNlaG9sZGVyJHUiLCJfY3VycmVudFBsYWNlaG9sZGVyJGMiLCJfY3VycmVudFBsYWNlaG9sZGVyJGMyIiwiY3VzdG9tSWRQcmVmaXgiLCJiYWNrZ3JvdW5kSW1hZ2UiLCJ0aWxlSW1hZ2VkSW5mb1N0cmluZyIsImltYWdlUGxhY2Vob2xkZXJEYXRhIiwiY3VycmVudFBsYWNlaG9sZGVyIiwiaGFzQmdTY3JvbGxFZmZlY3QiLCJDT01QX0lEX1BMQUNFSE9MREVSX1JFR0VYIiwicmVwbGFjZUNvbXBJZFBsYWNlaG9sZGVyIiwic3RyIiwiY29tcElkIiwiUE9TVEVSX0lNQUdFX1FVQUxJVFkiLCJ2aWRlb1JlZiIsInZpZGVvSW5mbyIsInBvc3RlckltYWdlSW5mbyIsIm11dGVkIiwicHJlbG9hZCIsImxvb3AiLCJpc1ZpZGVvRW5hYmxlZCIsImV4dHJhQ2xhc3NOYW1lIiwiaG92ZXJCb3hVdGlscyIsInZpZGVvSW5mb1N0cmluZyIsIlZpZGVvUG9zdGVySW1hZ2UiLCJmaWx0ZXJFZmZlY3RTdmdTdHJpbmciLCJkYW5nZXJvdXNseVNldElubmVySFRNTCIsIl9faHRtbCIsInZpZGVvSWQiLCJjcm9zc09yaWdpbiIsInBsYXlzSW5saW5lIiwicGFnZUlkIiwiY2hpbGRyZW4iLCJjb250YWluZXJTaXplIiwiaW1hZ2VPdmVybGF5IiwiQmFja2dyb3VuZEltYWdlIiwiSU1BR0VfQ0xBU1NfRk9SX0xBWU9VVCIsImNhbnZhc1JlZiIsImhhc0JnRnVsbHNjcmVlblNjcm9sbEVmZmVjdCIsImltYWdlIiwiYmFja2dyb3VuZE1lZGlhIiwidmlkZW8iLCJiYWNrZ3JvdW5kT3ZlcmxheSIsInNob3VsZFBhZE1lZGlhIiwiZXh0cmFDbGFzcyIsInNob3VsZFJlbmRlclVuZGVybGF5IiwicmVkdWNlZE1vdGlvbiIsImhhc0NhbnZhc0FuaW1hdGlvbiIsInVzZVdpeE1lZGlhQ2FudmFzIiwib25DbGljayIsIm9uSW1hZ2VMb2FkIiwib25SZWFkeSIsInVzZUVmZmVjdCIsImUiLCJ1c2VPbkxvYWRzRXZlbnRzIiwiZml4ZWRJbWFnZUlkIiwiSW1hZ2VDb21wb25lbnQiLCJCYWNrZ3JvdW5kSW1hZ2VDb21wb25lbnQiLCJWaWRlb0NvbXBvbmVudCIsIlZpZGVvIiwiTWVkaWEiLCJCZ01lZGlhIiwiQmFja2dyb3VuZE1lZGlhIiwiQmdPdmVybGF5IiwiQmFja2dyb3VuZE92ZXJsYXkiLCJGaWxsTGF5ZXJzIiwiZ2VuZXJhdGVEaXZpZGVyIiwic2lkZSIsImhhc0RpdmlkZXIiLCJkaXZpZGVyTGF5ZXJzIiwiZ2VuZXJhdGVMYXllcnMiLCJsYXllckNvdW50IiwiQXJyYXkiLCJyZXZlcnNlIiwiZGl2aWRlcnMiLCJfZGl2aWRlcnMkdG9wTGF5ZXJzMiIsIl9kaXZpZGVycyRib3R0b21MYXllcjIiLCJ0b3BEaXZpZGVyIiwiX2RpdmlkZXJzJHRvcExheWVycyIsImhhc1RvcERpdmlkZXIiLCJ0b3BMYXllcnMiLCJib3R0b21EaXZpZGVyIiwiX2RpdmlkZXJzJGJvdHRvbUxheWVyIiwiaGFzQm90dG9tRGl2aWRlciIsImJvdHRvbUxheWVycyIsIlBhdXNlU21hbGwiLCJmaWxsIiwiZCIsImRpc3BsYXlOYW1lIiwiUGF1c2VTbWFsbF9kZWZhdWx0IiwiUGxheVNtYWxsIiwiUGxheVNtYWxsX2RlZmF1bHQiLCJTZWN0aW9uIiwiY29tcFJlZiIsIl92aWRlb1JlZiRjdXJyZW50Iiwic2tpbiIsImNvbnRhaW5lclJvb3RDbGFzc05hbWUiLCJjb250YWluZXJQcm9wcyIsImZpbGxMYXllcnMiLCJiYWNrZ3JvdW5kIiwidGFnTmFtZSIsInNlbWFudGljQ2xhc3NOYW1lcyIsIm9uU3RvcCIsIm9uRGJsQ2xpY2siLCJvbk1vdXNlRW50ZXIiLCJvbk1vdXNlTGVhdmUiLCJsYW5nIiwidHJhbnNsYXRpb25zIiwiaXNQbGF5UGF1c2VTZWN0aW9uRXhwZXJpbWVudE9uIiwiaXNCdWlsZGVyIiwiVGFnTmFtZSIsInNob3VsZE9taXRXcmFwcGVyTGF5ZXJzIiwiY2xhc3NuYW1lcyIsInNlY3Rpb25TZW1hbnRpY0NsYXNzTmFtZXMiLCJoYXNWaWRlbyIsInZpZGVvQVBJIiwicGxheSIsImxvYWQiLCJwYXVzZSIsInN0b3AiLCJjdXJyZW50VGltZSIsInVzZVZpZGVvQVBJIiwiaXNWaWRlb1BsYXlpbmciLCJzZXRJc1ZpZGVvUGxheWluZyIsInBhdXNlZCIsImdldERhdGFBdHRyaWJ1dGVzIiwiYTExeSIsInRhYkluZGV4IiwidGFiaW5kZXgiLCJnZXRUYWJJbmRleEF0dHJpYnV0ZSIsImxhYmVsIiwic2VjdGlvbiIsIm9uRG91YmxlQ2xpY2siLCJCYWNrZ3JvdW5kWCIsInZpZGVvUGxheVBhdXNlQnV0dG9uIiwiaGFuZGxlUGxheVBhdXNlIiwicHJldiIsIm5ld1BsYXlpbmdTdGF0ZSIsInNlY3Rpb25FbGVtZW50IiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJjaGlsZFZpZGVvIiwiYXJpYUxhYmVsIiwiU2hhcGVEaXZpZGVycyIsImRlYnVnIiwicmFmIiwid2luIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwid2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwibW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwibXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJjYiIsInNldFRpbWVvdXQiLCJGYXN0RG9tIiwicmVhZHMiLCJ3cml0ZXMiLCJiaW5kIiwic2NoZWR1bGVGbHVzaCIsImZhc3Rkb20iLCJzY2hlZHVsZWQiLCJmbHVzaCIsImVycm9yIiwicnVuVGFza3MiLCJtZXNzYWdlIiwiY2F0Y2giLCJyZW1vdmUiLCJpdGVtIiwiaW5kZXgiLCJpbmRleE9mIiwic3BsaWNlIiwicHJvdG90eXBlIiwiY29uc3RydWN0b3IiLCJ0YXNrcyIsInRhc2siLCJzaGlmdCIsIm1lYXN1cmUiLCJmbiIsImN0eCIsIm11dGF0ZSIsImNsZWFyIiwiZXh0ZW5kIiwiRXJyb3IiLCJjaGlsZCIsImNyZWF0ZSIsInNvdXJjZSIsImhhc093blByb3BlcnR5IiwibWl4aW4iLCJpbml0aWFsaXplIiwiZ2xvYmFsVGhpcyIsImlzQnJvd3NlciIsInZhbCIsIm4iLCJhcmd1bWVudHMiLCJ0IiwiciIsImNhbGwiLCJfX2VzTW9kdWxlIiwiYXBwbHkiLCJmIiwiaXNBcnJheSIsIl9fd2VicGFja19tb2R1bGVfY2FjaGVfXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImNhY2hlZE1vZHVsZSIsIl9fd2VicGFja19tb2R1bGVzX18iLCJnZXR0ZXIiLCJhIiwiZGVmaW5pdGlvbiIsIm8iLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJvYmoiLCJwcm9wIiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJnZXRTY3JvbGxQb3NpdGlvbiIsImlzQXRQYWdlQm90dG9tIiwiYm9keSIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImlubmVySGVpZ2h0Iiwic2Nyb2xsWSIsInNjcm9sbEhlaWdodCIsInVzZVNjcm9sbFBvc2l0aW9uIiwiZWZmZWN0IiwiZGVwcyIsIndhaXRGb3IiLCJkaXNhYmxlZCIsInVzZVJlZiIsInRocm90dGxlVGltZW91dCIsImNhbGxCYWNrIiwiY3VyclBvcyIsInByZXZQb3MiLCJ1c2VMYXlvdXRFZmZlY3QiLCJoYW5kbGVTY3JvbGwiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImNsZWFyVGltZW91dCIsImlzRmFkZWREb3duIiwiYW5pbWF0aW9uU3RhdGUiLCJhbmltYXRlIiwiaGVhZGVyU3R5bGVzIiwibW92ZSIsImZhZGUiLCJoZWFkZXJTZWN0aW9uQWRkVmlzaWJpbGl0eVRyYW5zaXRpb24iLCJpc0hlYWRlclNlY3Rpb25BZGRWaXNpYmlsaXR5VHJhbnNpdGlvbkVuYWJsZWQiLCJzY3JvbGxVcCIsInNjcm9sbGVkIiwic2V0U2Nyb2xsZWQiLCJfcmVmMiIsInNldEFuaW1hdGlvbkNsYXNzIiwidXNlU3RhdGUiLCJjcmVhdGVBbmltYXRpb25TY3JvbGxMaXN0ZW5lciIsImFuaW1hdGlvblR5cGUiLCJkaXJDaGFuZ2VTdGFydCIsInNjcm9sbFN0YXRlIiwiY3VyclNjcm9sbCIsInByZXZTY3JvbGwiLCJnZXREb3duVGhyZXNob2xkIiwiaXNIZWFkZXJVc2VNYXJnaW5zRW5hYmxlZCIsIkhlYWRlclNlY3Rpb25CdWlsZGVyIl0sInNvdXJjZVJvb3QiOiIifQ==","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"thunderbolt/controller/HeaderSection/HeaderSection\",[],t):\"object\"==typeof exports?exports[\"thunderbolt/controller/HeaderSection/HeaderSection\"]=t():e[\"thunderbolt/controller/HeaderSection/HeaderSection\"]=t()}(\"undefined\"!=typeof self?self:this,function(){return function(){\"use strict\";var e={d:function(t,r){for(var o in r)e.o(r,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:r[o]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r:function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})}},t={};e.r(t),e.d(t,{default:function(){return d}});const r=e=>e.replace(/([A-Z])/g,e=>`-${e.toLowerCase()}`),o=(e={},t)=>!0===e[t]||\"true\"===e[t]||\"new\"===e[t],n=\"specs.thunderbolt.HeaderSectionAddVisibilityTransition\",i=\"specs.thunderbolt.headerUseMargins\";var s,d=(s=e=>{let{mapperProps:t,stateValues:r}=e;const{experiments:s={}}=r;return{...t,isHeaderUseMarginsEnabled:o(s,i),isHeaderSectionAddVisibilityTransitionEnabled:o(s,n)}},{useComponentProps:(e,t,o)=>{const n=(e=>({...e,updateStyles:t=>{const o=Object.entries(t).reduce((e,[t,o])=>{return{...e,[(n=t,n.startsWith(\"--\")?t:r(t))]:void 0===o?null:o};var n},{});e.updateStyles(o)}}))(o);return s({mapperProps:e,stateValues:t,controllerUtils:n})}});return t}()});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGh1bmRlcmJvbHQvY29udHJvbGxlci9IZWFkZXJTZWN0aW9uL0hlYWRlclNlY3Rpb24uYnVuZGxlLm1pbi5qcyIsIm1hcHBpbmdzIjoiQ0FBQSxTQUEyQ0EsRUFBTUMsR0FDMUIsaUJBQVpDLFNBQTBDLGlCQUFYQyxPQUN4Q0EsT0FBT0QsUUFBVUQsSUFDUSxtQkFBWEcsUUFBeUJBLE9BQU9DLElBQzlDRCxPQUFPLHFEQUFzRCxHQUFJSCxHQUN2QyxpQkFBWkMsUUFDZEEsUUFBUSxzREFBd0RELElBRWhFRCxFQUFLLHNEQUF3REMsR0FDOUQsQ0FURCxDQVNvQixvQkFBVEssS0FBdUJBLEtBQU9DLEtBQU8sV0FDaEQsTyx3QkNUQSxJQUFJQyxFQUFzQixDQ0ExQkEsRUFBd0IsU0FBU04sRUFBU08sR0FDekMsSUFBSSxJQUFJQyxLQUFPRCxFQUNYRCxFQUFvQkcsRUFBRUYsRUFBWUMsS0FBU0YsRUFBb0JHLEVBQUVULEVBQVNRLElBQzVFRSxPQUFPQyxlQUFlWCxFQUFTUSxFQUFLLENBQUVJLFlBQVksRUFBTUMsSUFBS04sRUFBV0MsSUFHM0UsRUNQQUYsRUFBd0IsU0FBU1EsRUFBS0MsR0FBUSxPQUFPTCxPQUFPTSxVQUFVQyxlQUFlQyxLQUFLSixFQUFLQyxFQUFPLEVDQ3RHVCxFQUF3QixTQUFTTixHQUNYLG9CQUFYbUIsUUFBMEJBLE9BQU9DLGFBQzFDVixPQUFPQyxlQUFlWCxFQUFTbUIsT0FBT0MsWUFBYSxDQUFFQyxNQUFPLFdBRTdEWCxPQUFPQyxlQUFlWCxFQUFTLGFBQWMsQ0FBRXFCLE9BQU8sR0FDdkQsRyxrRENpREEsTUFDTUMsRUFBdUJDLEdBQVFBLEVBQUlDLFFBQVEsV0FBWUMsR0FBTyxJQUFJQSxFQUFJQyxpQkN4RC9ELEVBQW1CLENBQUNDLEVBQWMsQ0FBQyxFQUFHQyxLQUFtRCxJQUFoQ0QsRUFBWUMsSUFDOUMsU0FBaENELEVBQVlDLElBQ29CLFFBQWhDRCxFQUFZQyxHQ0ZIQyxFQUVULHlEQUZTQSxFQUdPLHFDQ0twQixJSGtFbUNDLEVHbEVuQyxHSGtFbUNBLEVHN0RqQ0MsSUFBbUMsSUFBbEMsWUFBRUMsRUFBVyxZQUFFQyxHQUFhRixFQUM3QixNQUFNLFlBQUVKLEVBQWMsQ0FBQyxHQUFNTSxFQVU3QixNQUFPLElBQ0ZELEVBQ0hFLDBCQVhnQ0MsRUFDaENSLEVBQ0FFLEdBVUFPLDhDQVJvREQsRUFDcERSLEVBQ0FFLEtIc0RPLENBQ0hRLGtCQUFtQixDQUFDTCxFQUFhQyxFQUFhSyxLQUMxQyxNQUFNQyxFQXBCVyxDQUFDRCxJQVluQixJQUNBQSxFQUNIRSxhQVR5QkMsSUFDekIsTUFBTUMsRUFBU2hDLE9BQU9pQyxRQUFRRixHQUFhRyxPQUFPLENBQUNDLEdBQU1yQyxFQUFLYSxNQUFXLFVBQ2xFd0IsRUFDSCxFQVZXdEIsRUFVSWYsRUFWSWUsRUFBSXVCLFdBQVcsTUFVWnRDLEVBQU1jLEVBQW9CZCxVQUFpQnVDLElBQVYxQixFQUFzQixLQUFPQSxHQVYxRSxJQUFDRSxHQVdYLENBQUMsR0FDTGUsRUFBZ0JFLGFBQWFFLE1BVUpNLENBQXFCVixHQUMxQyxPQUFPUixFQUFzQixDQUN6QkUsY0FDQUMsY0FDQUssZ0JBQWlCQyxPIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vZWRpdG9yLWVsZW1lbnRzLWludGVncmF0aW9ucy9kaXN0L2VzbS90aHVuZGVyYm9sdC9jcmVhdGVDb21wb25lbnRNYXBwZXIuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi9lZGl0b3ItZWxlbWVudHMtY29tbW9uLXV0aWxzL2Rpc3QvZXNtL2NvbW1vbnMvZXhwZXJpbWVudHMuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvY29tcG9uZW50cy9TZWN0aW9ucy9jb21tb24vY29uc3RhbnRzLnRzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvU2VjdGlvbnMvSGVhZGVyU2VjdGlvbi92aWV3ZXIvSGVhZGVyU2VjdGlvbi5jb250cm9sbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFwidGh1bmRlcmJvbHQvY29udHJvbGxlci9IZWFkZXJTZWN0aW9uL0hlYWRlclNlY3Rpb25cIiwgW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1widGh1bmRlcmJvbHQvY29udHJvbGxlci9IZWFkZXJTZWN0aW9uL0hlYWRlclNlY3Rpb25cIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1widGh1bmRlcmJvbHQvY29udHJvbGxlci9IZWFkZXJTZWN0aW9uL0hlYWRlclNlY3Rpb25cIl0gPSBmYWN0b3J5KCk7XG59KSgodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHRoaXMpLCBmdW5jdGlvbigpIHtcbnJldHVybiAiLCIvLyBUaGUgcmVxdWlyZSBzY29wZVxudmFyIF9fd2VicGFja19yZXF1aXJlX18gPSB7fTtcblxuIiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgZGVmaW5pdGlvbikge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmosIHByb3ApIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApOyB9IiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJpbXBvcnQgeyBpc0V4cGVyaW1lbnRPcGVuIH0gZnJvbSAnQHdpeC9lZGl0b3ItZWxlbWVudHMtY29tbW9uLXV0aWxzJztcbmV4cG9ydCBjb25zdCB3aXRoQ29tcEluZm8gPSAoKSA9PiAoZGVwc0FycmF5LCByZXNvbHZlciwgZW5oYW5jZXJzID0gW10pID0+IHtcbiAgICBjb25zdCBkZXBzID0gZGVwc0FycmF5LnJlZHVjZSgoYWNjLCBrZXkpID0+ICh7IC4uLmFjYywgW2tleV06IHRydWUgfSksIHt9KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBkZXBzLFxuICAgICAgICByZXNvbHZlcjogZW5oYW5jZXJzLmxlbmd0aFxuICAgICAgICAgICAgPyAocmF3Q29tcEluZm8sIGNhcm1pRGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVuaGFuY2VkQ29tcEluZm8gPSBlbmhhbmNlcnMucmVkdWNlKChjb21wSW5mbywgZW5oYW5jZXIpID0+IGVuaGFuY2VyKGNvbXBJbmZvKSwgcmF3Q29tcEluZm8pO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlcihlbmhhbmNlZENvbXBJbmZvLCBjYXJtaURhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiByZXNvbHZlcixcbiAgICB9O1xufTtcbmV4cG9ydCBjb25zdCBpc1N0eWxhYmxlQ29tcG9uZW50ID0gKHN0eWxlUHJvcGVydGllcykgPT4ge1xuICAgIC8vIGluIEVkaXRvciB8fCBpbiBUQlxuICAgIHJldHVybiBCb29sZWFuKHN0eWxlUHJvcGVydGllc1snJHN0LWNzcyddIHx8IHN0eWxlUHJvcGVydGllc1snc3QtY3NzJ10pO1xufTtcbmV4cG9ydCBjb25zdCBjcmVhdGVVRFBVaVR5cGVNYXBwZXIgPSAoc3R5bGFibGVTa2luTmFtZSwgdWRwU2tpbk5hbWUpID0+IHdpdGhDb21wSW5mbygpKFsnc3R5bGVQcm9wZXJ0aWVzJywgJ2V4cGVyaW1lbnRzJ10sICh7IHN0eWxlUHJvcGVydGllcywgZXhwZXJpbWVudHMgfSkgPT4ge1xuICAgIGNvbnN0IEJVSUxERVJfU1BFQyA9ICdzcGVjcy50aHVuZGVyYm9sdC5yZW5kZXJQbGF0Zm9ybUJ1aWxkZXJDb21wb25lbnQnO1xuICAgIGNvbnN0IGlzQnVpbGRlckVudiA9IGlzRXhwZXJpbWVudE9wZW4oZXhwZXJpbWVudHMsIEJVSUxERVJfU1BFQyk7XG4gICAgaWYgKCFpc1N0eWxhYmxlQ29tcG9uZW50KHN0eWxlUHJvcGVydGllcykgfHwgaXNCdWlsZGVyRW52KSB7XG4gICAgICAgIHJldHVybiB1ZHBTa2luTmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIHN0eWxhYmxlU2tpbk5hbWU7XG59KTtcbmV4cG9ydCBjb25zdCB3aXRoVWlUeXBlQ29tcEluZm8gPSB3aXRoQ29tcEluZm87XG5leHBvcnQgY29uc3Qgd2l0aFN0YXRlUmVmcyA9ICgpID0+IChkZXBzQXJyYXksIHJlc29sdmVyKSA9PiB7XG4gICAgY29uc3QgcmVmQXBpS2V5ID0gJ3JlZkFwaSc7XG4gICAgY29uc3QgZGVwcyA9IFsuLi5kZXBzQXJyYXksIHJlZkFwaUtleV07XG4gICAgY29uc3Qgd2l0aENvbXBJbmZvRnVuYyA9IHdpdGhDb21wSW5mbygpO1xuICAgIHJldHVybiB3aXRoQ29tcEluZm9GdW5jKGRlcHMsIHJlc29sdmVyKTtcbn07XG5jb25zdCBnZXRTdGF0ZVJlZkdldHRlcnMgPSAoc3RhdGVSZWZzS2V5cywgcmVmQXBpKSA9PiB7XG4gICAgY29uc3Qgc3RhdGVSZWZzR2V0dGVycyA9IE9iamVjdC52YWx1ZXMocmVmQXBpKS5yZWR1Y2UoKGFjYywgZmVhdHVyZURvbWFpbikgPT4gKHtcbiAgICAgICAgLi4uYWNjLFxuICAgICAgICAuLi5mZWF0dXJlRG9tYWluLFxuICAgIH0pLCB7fSk7XG4gICAgcmV0dXJuIHN0YXRlUmVmc0tleXMucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgICBpZiAoIXN0YXRlUmVmc0dldHRlcnNba2V5XSkge1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgW2tleV06IHN0YXRlUmVmc0dldHRlcnNba2V5XSgpLFxuICAgICAgICB9O1xuICAgIH0sIHt9KTtcbn07XG5leHBvcnQgY29uc3Qgd2l0aFN0YXRlUmVmc1ZhbHVlcyA9IChzdGF0ZVJlZnNLZXlzKSA9PiB7XG4gICAgcmV0dXJuIHdpdGhDb21wSW5mbygpKFsncmVmQXBpJ10sICh7IHJlZkFwaSB9KSA9PiB7XG4gICAgICAgIHJldHVybiBnZXRTdGF0ZVJlZkdldHRlcnMoc3RhdGVSZWZzS2V5cywgcmVmQXBpKTtcbiAgICB9KTtcbn07XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50TWFwcGVyTW9kZWwobWFwcGVyKSB7XG4gICAgcmV0dXJuIG1hcHBlcjtcbn1cbmNvbnN0IGlzQ1NTVmFyaWFibGUgPSAoc3RyKSA9PiBzdHIuc3RhcnRzV2l0aCgnLS0nKTtcbmNvbnN0IGNhbWVsQ2FzZVRvRGFzaENhc2UgPSAoc3RyKSA9PiBzdHIucmVwbGFjZSgvKFtBLVpdKS9nLCB2YWwgPT4gYC0ke3ZhbC50b0xvd2VyQ2FzZSgpfWApO1xuY29uc3QgcGF0Y2hDb250cm9sbGVyVXRpbHMgPSAoY29udHJvbGxlclV0aWxzKSA9PiB7XG4gICAgLyoqXG4gICAgICogRnJvbSB0aGlzOiB7IG1hcmdpblRvcDogMTAgfVxuICAgICAqIHRvIHRoaXMgeyBtYXJnaW4tdG9wOiAxMCB9XG4gICAgICovXG4gICAgY29uc3QgcGF0Y2hlZFVwZGF0ZVN0eWxlcyA9IChyZWFjdFN0eWxlcykgPT4ge1xuICAgICAgICBjb25zdCBzdHlsZXMgPSBPYmplY3QuZW50cmllcyhyZWFjdFN0eWxlcykucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgIFtpc0NTU1ZhcmlhYmxlKGtleSkgPyBrZXkgOiBjYW1lbENhc2VUb0Rhc2hDYXNlKGtleSldOiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IHZhbHVlLFxuICAgICAgICB9KSwge30pO1xuICAgICAgICBjb250cm9sbGVyVXRpbHMudXBkYXRlU3R5bGVzKHN0eWxlcyk7XG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgICAuLi5jb250cm9sbGVyVXRpbHMsXG4gICAgICAgIHVwZGF0ZVN0eWxlczogcGF0Y2hlZFVwZGF0ZVN0eWxlcyxcbiAgICB9O1xufTtcbmV4cG9ydCBjb25zdCB3aXRoQ29tcENvbnRyb2xsZXIgPSAoY29tcG9uZW50UHJvcHNDcmVhdG9yKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdXNlQ29tcG9uZW50UHJvcHM6IChtYXBwZXJQcm9wcywgc3RhdGVWYWx1ZXMsIGNvbnRyb2xsZXJVdGlscykgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGF0Y2hlZFV0aWxzID0gcGF0Y2hDb250cm9sbGVyVXRpbHMoY29udHJvbGxlclV0aWxzKTtcbiAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRQcm9wc0NyZWF0b3Ioe1xuICAgICAgICAgICAgICAgIG1hcHBlclByb3BzLFxuICAgICAgICAgICAgICAgIHN0YXRlVmFsdWVzLFxuICAgICAgICAgICAgICAgIGNvbnRyb2xsZXJVdGlsczogcGF0Y2hlZFV0aWxzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgfTtcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jcmVhdGVDb21wb25lbnRNYXBwZXIuanMubWFwIiwiZXhwb3J0IGNvbnN0IGlzRXhwZXJpbWVudE9wZW4gPSAoZXhwZXJpbWVudHMgPSB7fSwgZXhwZXJpbWVudE5hbWUpID0+IGV4cGVyaW1lbnRzW2V4cGVyaW1lbnROYW1lXSA9PT0gdHJ1ZSB8fFxuICAgIGV4cGVyaW1lbnRzW2V4cGVyaW1lbnROYW1lXSA9PT0gJ3RydWUnIHx8XG4gICAgZXhwZXJpbWVudHNbZXhwZXJpbWVudE5hbWVdID09PSAnbmV3Jztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWV4cGVyaW1lbnRzLmpzLm1hcCIsImV4cG9ydCBjb25zdCBzZWN0aW9uRXhwZXJpbWVudHMgPSB7XG4gIGhlYWRlclNlY3Rpb25BZGRWaXNpYmlsaXR5VHJhbnNpdGlvbjpcbiAgICAnc3BlY3MudGh1bmRlcmJvbHQuSGVhZGVyU2VjdGlvbkFkZFZpc2liaWxpdHlUcmFuc2l0aW9uJyxcbiAgaGVhZGVyVXNlTWFyZ2luczogJ3NwZWNzLnRodW5kZXJib2x0LmhlYWRlclVzZU1hcmdpbnMnLFxufTtcbiIsImltcG9ydCB7IHdpdGhDb21wQ29udHJvbGxlciB9IGZyb20gJ0B3aXgvZWRpdG9yLWVsZW1lbnRzLWludGVncmF0aW9ucyc7XG5pbXBvcnQgeyBpc0V4cGVyaW1lbnRPcGVuIH0gZnJvbSAnQHdpeC9lZGl0b3ItZWxlbWVudHMtY29tbW9uLXV0aWxzJztcbmltcG9ydCB0eXBlIHtcbiAgSUhlYWRlclNlY3Rpb25Qcm9wcyxcbiAgSUhlYWRlclNlY3Rpb25TdGF0ZVZhbHVlcyxcbn0gZnJvbSAnLi4vSGVhZGVyU2VjdGlvbi50eXBlcyc7XG5pbXBvcnQgeyBzZWN0aW9uRXhwZXJpbWVudHMgfSBmcm9tICcuLi8uLi9jb21tb24vY29uc3RhbnRzJztcblxuZXhwb3J0IGRlZmF1bHQgd2l0aENvbXBDb250cm9sbGVyPFxuICBJSGVhZGVyU2VjdGlvblByb3BzLFxuICBJSGVhZGVyU2VjdGlvblByb3BzLFxuICBJSGVhZGVyU2VjdGlvblByb3BzLFxuICBJSGVhZGVyU2VjdGlvblN0YXRlVmFsdWVzXG4+KCh7IG1hcHBlclByb3BzLCBzdGF0ZVZhbHVlcyB9KSA9PiB7XG4gIGNvbnN0IHsgZXhwZXJpbWVudHMgPSB7fSB9ID0gc3RhdGVWYWx1ZXM7XG4gIGNvbnN0IGlzSGVhZGVyVXNlTWFyZ2luc0VuYWJsZWQgPSBpc0V4cGVyaW1lbnRPcGVuKFxuICAgIGV4cGVyaW1lbnRzLFxuICAgIHNlY3Rpb25FeHBlcmltZW50cy5oZWFkZXJVc2VNYXJnaW5zLFxuICApO1xuICBjb25zdCBpc0hlYWRlclNlY3Rpb25BZGRWaXNpYmlsaXR5VHJhbnNpdGlvbkVuYWJsZWQgPSBpc0V4cGVyaW1lbnRPcGVuKFxuICAgIGV4cGVyaW1lbnRzLFxuICAgIHNlY3Rpb25FeHBlcmltZW50cy5oZWFkZXJTZWN0aW9uQWRkVmlzaWJpbGl0eVRyYW5zaXRpb24sXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5tYXBwZXJQcm9wcyxcbiAgICBpc0hlYWRlclVzZU1hcmdpbnNFbmFibGVkLFxuICAgIGlzSGVhZGVyU2VjdGlvbkFkZFZpc2liaWxpdHlUcmFuc2l0aW9uRW5hYmxlZCxcbiAgfTtcbn0pO1xuIl0sIm5hbWVzIjpbInJvb3QiLCJmYWN0b3J5IiwiZXhwb3J0cyIsIm1vZHVsZSIsImRlZmluZSIsImFtZCIsInNlbGYiLCJ0aGlzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsImRlZmluaXRpb24iLCJrZXkiLCJvIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0Iiwib2JqIiwicHJvcCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIlN5bWJvbCIsInRvU3RyaW5nVGFnIiwidmFsdWUiLCJjYW1lbENhc2VUb0Rhc2hDYXNlIiwic3RyIiwicmVwbGFjZSIsInZhbCIsInRvTG93ZXJDYXNlIiwiZXhwZXJpbWVudHMiLCJleHBlcmltZW50TmFtZSIsInNlY3Rpb25FeHBlcmltZW50cyIsImNvbXBvbmVudFByb3BzQ3JlYXRvciIsIl9yZWYiLCJtYXBwZXJQcm9wcyIsInN0YXRlVmFsdWVzIiwiaXNIZWFkZXJVc2VNYXJnaW5zRW5hYmxlZCIsImlzRXhwZXJpbWVudE9wZW4iLCJpc0hlYWRlclNlY3Rpb25BZGRWaXNpYmlsaXR5VHJhbnNpdGlvbkVuYWJsZWQiLCJ1c2VDb21wb25lbnRQcm9wcyIsImNvbnRyb2xsZXJVdGlscyIsInBhdGNoZWRVdGlscyIsInVwZGF0ZVN0eWxlcyIsInJlYWN0U3R5bGVzIiwic3R5bGVzIiwiZW50cmllcyIsInJlZHVjZSIsImFjYyIsInN0YXJ0c1dpdGgiLCJ1bmRlZmluZWQiLCJwYXRjaENvbnRyb2xsZXJVdGlscyJdLCJzb3VyY2VSb290IjoiIn0=","'use client';\nimport { HeaderSection as Component } from '@wix/editor-components/component/HeaderSection';\nimport { HeaderSection as controller } from '@wix/editor-components/controller/HeaderSection';\nimport '@wix/editor-components/component/HeaderSection/css';\nimport { withController, withNormalChildren } from './hocs';\nexport const HeaderSection = withNormalChildren(withController(Component, controller));\n//# sourceMappingURL=HeaderSection.js.map","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\")):\"function\"==typeof define&&define.amd?define(\"thunderbolt/skin/Page/BasicPageSkin/Page\",[\"react\"],t):\"object\"==typeof exports?exports[\"thunderbolt/skin/Page/BasicPageSkin/Page\"]=t(require(\"react\")):e[\"thunderbolt/skin/Page/BasicPageSkin/Page\"]=t(e.React)}(\"undefined\"!=typeof self?self:this,function(e){return function(){var t={QRCH:function(e,t,n){\"use strict\";n.d(t,{default:function(){return s}});var r=n(\"Fe5V\"),o=n.n(r),a=n(\"Xdf/\");var s=e=>{const{id:t,className:n,customClassNames:r=[],skin:s,pageDidMount:i,onClick:u=()=>{},onDblClick:c=()=>{},onMouseEnter:l,onMouseLeave:f,children:d}=e;return a.createElement(s,o()({id:t,className:n,customClassNames:r},(e=>Object.entries(e).reduce((e,[t,n])=>(t.includes(\"data-\")&&(e[t]=n),e),{}))(e),{pageDidMount:i,onClick:u,onDblClick:c,onMouseEnter:l,onMouseLeave:f}),d)}},\"Xdf/\":function(t){\"use strict\";t.exports=e},Fe5V:function(e){function t(){return e.exports=t=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},e.exports.__esModule=!0,e.exports.default=e.exports,t.apply(null,arguments)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var a=n[e]={exports:{}};return t[e](a,a.exports,r),a.exports}r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var o={};return function(){\"use strict\";r.r(o),r.d(o,{default:function(){return b}});var e=r(\"Fe5V\"),t=r.n(e),n=r(\"Xdf/\"),a=r.n(n),s=r(\"QRCH\"),i={bg:\"c7cMWz\",inlineContent:\"FVGvCX\",pageWrapper:\"zK7MhX\",root:\"fEm0Bo\"};function u(e){var t,n,r=\"\";if(\"string\"==typeof e||\"number\"==typeof e)r+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=u(e[t]))&&(r&&(r+=\" \"),r+=n);else for(t in e)e[t]&&(r&&(r+=\" \"),r+=t);return r}var c=function(){for(var e,t,n=0,r=\"\";n<arguments.length;)(e=arguments[n++])&&(t=u(e))&&(r&&(r+=\" \"),r+=t);return r};const l=\"wixui-\",f=(e,...t)=>{const n=[];return e&&n.push(`${l}${e}`),t.forEach(e=>{e&&(n.push(`${l}${e}`),n.push(e))}),n.join(\" \")},d=\"page-bg\";var p={root:\"page\"};var g=e=>{let{id:t,className:n,customClassNames:r=[],pageDidMount:o,onClick:s,onDblClick:i,children:u,skinsStyle:l,onMouseEnter:g,onMouseLeave:v}=e;const b=c(l.root,l.pageWrapper,n);return a().createElement(\"div\",{id:t,className:b,ref:o,onClick:s,onDoubleClick:i,onMouseEnter:g,onMouseLeave:v},a().createElement(\"div\",{className:c(l.bg,f(p.root,...r)),\"data-testid\":d}),a().createElement(\"div\",{className:l.inlineContent},u()))};const v=e=>a().createElement(g,t()({},e,{skinsStyle:i}));var b=e=>a().createElement(s.default,t()({},e,{skin:v}))}(),o}()});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGh1bmRlcmJvbHQvc2tpbi9QYWdlL0Jhc2ljUGFnZVNraW4vUGFnZS5idW5kbGUubWluLmpzIiwibWFwcGluZ3MiOiJDQUFBLFNBQTJDQSxFQUFNQyxHQUMxQixpQkFBWkMsU0FBMEMsaUJBQVhDLE9BQ3hDQSxPQUFPRCxRQUFVRCxFQUFRRyxRQUFRLFVBQ1IsbUJBQVhDLFFBQXlCQSxPQUFPQyxJQUM5Q0QsT0FBTywyQ0FBNEMsQ0FBQyxTQUFVSixHQUNwQyxpQkFBWkMsUUFDZEEsUUFBUSw0Q0FBOENELEVBQVFHLFFBQVEsVUFFdEVKLEVBQUssNENBQThDQyxFQUFRRCxFQUFZLE1BQ3hFLENBVEQsQ0FTb0Isb0JBQVRPLEtBQXVCQSxLQUFPQyxLQUFPLFNBQVNDLEdBQ3pELE8sK0hDd0JBLE1BOUJrQ0MsSUFDaEMsTUFBTSxHQUNKQyxFQUFFLFVBQ0ZDLEVBQVMsaUJBQ1RDLEVBQW1CLEdBQ25CQyxLQUFNQyxFQUFTLGFBQ2ZDLEVBQVksUUFDWkMsRUFBVUEsT0FBUSxXQUNsQkMsRUFBYUEsT0FBUSxhQUNyQkMsRUFBWSxhQUNaQyxFQUFZLFNBQ1pDLEdBQ0VYLEVBQ0osT0FDRVksRUFBQUEsY0FBQ1AsRUFBU1EsSUFBQSxDQUNSWixHQUFJQSxFQUNKQyxVQUFXQSxFQUNYQyxpQkFBa0JBLEdDK0NTLENBQUNILEdBQ3ZCYyxPQUFPQyxRQUFRZixHQUFPZ0IsT0FBTyxDQUFDQyxHQUFNQyxFQUFLQyxNQUN4Q0QsRUFBSUUsU0FBUyxXQUNiSCxFQUFJQyxHQUFPQyxHQUVSRixHQUNSLENBQUMsR0RwREVJLENBQWtCckIsR0FBTSxDQUM1Qk0sYUFBY0EsRUFDZEMsUUFBU0EsRUFDVEMsV0FBWUEsRUFDWkMsYUFBY0EsRUFDZEMsYUFBY0EsSUFFYkMsRyxrQ0U3QlBsQixFQUFPRCxRQUFVTyxDLG1CQ0FqQixTQUFTYyxJQUNQLE9BQU9wQixFQUFPRCxRQUFVcUIsRUFBV0MsT0FBT1EsT0FBU1IsT0FBT1EsT0FBT0MsT0FBUyxTQUFVQyxHQUNsRixJQUFLLElBQUlD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SyxHQUFHSixJQUFhdkQsS0FDNUIwRCxFQUFPQyxLQUFLM0QsTUFHYjBELEVBQU9HLEtBQUssTUNiVkMsRUFDQyxVQ0tkLE1BSjJCLENBQ3pCMUUsS0FBTSxRQ2dEUixNQXhDa0QyRSxJQVczQyxJQVg0QyxHQUNqRGhFLEVBQUUsVUFDRkMsRUFBUyxpQkFDVEMsRUFBbUIsR0FBRSxhQUNyQkcsRUFBWSxRQUNaQyxFQUFPLFdBQ1BDLEVBQVUsU0FDVkcsRUFBUSxXQUNSdUQsRUFBVSxhQUNWekQsRUFBWSxhQUNaQyxHQUNEdUQsRUFDQyxNQUFNRSxFQUFnQkMsRUFDcEJGLEVBQVc1RSxLQUNYNEUsRUFBV0csWUFDWG5FLEdBR0YsT0FDRVUsSUFBQUEsY0FBQSxPQUNFWCxHQUFJQSxFQUNKQyxVQUFXaUUsRUFDWEcsSUFBS2hFLEVBQ0xDLFFBQVNBLEVBQ1RnRSxjQUFlL0QsRUFDZkMsYUFBY0EsRUFDZEMsYUFBY0EsR0FFZEUsSUFBQUEsY0FBQSxPQUNFVixVQUFXa0UsRUFDVEYsRUFBV00sR0FDWGQsRUFBaUJlLEVBQW1CbkYsUUFBU2EsSUFFL0MsY0FBYTZELElBRWZwRCxJQUFBQSxjQUFBLE9BQUtWLFVBQVdnRSxFQUFXUSxlQUFnQi9ELE9DdkNqRCxNQUFNZ0UsRUFFRjNFLEdBQVNZLElBQUFBLGNBQUNnRSxFQUFZL0QsSUFBQSxHQUFLYixFQUFLLENBQUVrRSxXQUFZVyxLQU1sRCxNQUoyQzdFLEdBQ3pDWSxJQUFBQSxjQUFDa0UsRUFBQUEsUUFBSWpFLElBQUEsR0FBS2IsRUFBSyxDQUFFSSxLQUFNdUUsSSIsInNvdXJjZXMiOlsid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL3RodW5kZXJib2x0LWNvcmUtY29tcG9uZW50cy9QYWdlL3ZpZXdlci9QYWdlLnRzeCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL2VkaXRvci1lbGVtZW50cy1jb21tb24tdXRpbHMvZGlzdC9lc20vY29tbW9ucy91dGlscy5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L2V4dGVybmFsIHVtZCB7XCJhbWRcIjpcInJlYWN0XCIsXCJjb21tb25qc1wiOlwicmVhY3RcIixcImNvbW1vbmpzMlwiOlwicmVhY3RcIixcInJvb3RcIjpcIlJlYWN0XCJ9Iiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kcy5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy90aHVuZGVyYm9sdC1jb3JlLWNvbXBvbmVudHMvUGFnZS92aWV3ZXIvc2tpbkNvbXBzL0Jhc2VQYWdlL3N0eWxlcy9CYXNpY1BhZ2VTa2luLnNjc3MiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2xzeC9kaXN0L2Nsc3gubWpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vZWRpdG9yLWVsZW1lbnRzLWNvbW1vbi11dGlscy9kaXN0L2VzbS9jc3NFZGl0aW5nL2NsYXNzLW5hbWVzLWZvcm1tYXRlci5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy90aHVuZGVyYm9sdC1jb3JlLWNvbXBvbmVudHMvUGFnZS9jb25zdGFudHMudHMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvdGh1bmRlcmJvbHQtY29yZS1jb21wb25lbnRzL1BhZ2UvUGFnZS5zZW1hbnRpY0NsYXNzTmFtZXMudHMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvdGh1bmRlcmJvbHQtY29yZS1jb21wb25lbnRzL1BhZ2Uvdmlld2VyL3NraW5Db21wcy9CYXNlUGFnZS9CYXNlUGFnZVNraW4udHN4Iiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL3RodW5kZXJib2x0LWNvcmUtY29tcG9uZW50cy9QYWdlL3ZpZXdlci9za2luQ29tcHMvQmFzZVBhZ2UvQmFzaWNQYWdlU2tpbi5za2luLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShcInRodW5kZXJib2x0L3NraW4vUGFnZS9CYXNpY1BhZ2VTa2luL1BhZ2VcIiwgW1wicmVhY3RcIl0sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1widGh1bmRlcmJvbHQvc2tpbi9QYWdlL0Jhc2ljUGFnZVNraW4vUGFnZVwiXSA9IGZhY3RvcnkocmVxdWlyZShcInJlYWN0XCIpKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJ0aHVuZGVyYm9sdC9za2luL1BhZ2UvQmFzaWNQYWdlU2tpbi9QYWdlXCJdID0gZmFjdG9yeShyb290W1wiUmVhY3RcIl0pO1xufSkoKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB0aGlzKSwgZnVuY3Rpb24oX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9YZGZfX18pIHtcbnJldHVybiAiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBnZXREYXRhQXR0cmlidXRlcyB9IGZyb20gJ0B3aXgvZWRpdG9yLWVsZW1lbnRzLWNvbW1vbi11dGlscyc7XG5pbXBvcnQgdHlwZSB7IFBhZ2VQcm9wcyB9IGZyb20gJy4uL1BhZ2UudHlwZXMnO1xuXG5jb25zdCBQYWdlOiBSZWFjdC5GQzxQYWdlUHJvcHM+ID0gcHJvcHMgPT4ge1xuICBjb25zdCB7XG4gICAgaWQsXG4gICAgY2xhc3NOYW1lLFxuICAgIGN1c3RvbUNsYXNzTmFtZXMgPSBbXSxcbiAgICBza2luOiBQYWdlQ2xhc3MsXG4gICAgcGFnZURpZE1vdW50LFxuICAgIG9uQ2xpY2sgPSAoKSA9PiB7fSxcbiAgICBvbkRibENsaWNrID0gKCkgPT4ge30sXG4gICAgb25Nb3VzZUVudGVyLFxuICAgIG9uTW91c2VMZWF2ZSxcbiAgICBjaGlsZHJlbixcbiAgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxQYWdlQ2xhc3NcbiAgICAgIGlkPXtpZH1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgY3VzdG9tQ2xhc3NOYW1lcz17Y3VzdG9tQ2xhc3NOYW1lc31cbiAgICAgIHsuLi5nZXREYXRhQXR0cmlidXRlcyhwcm9wcyl9XG4gICAgICBwYWdlRGlkTW91bnQ9e3BhZ2VEaWRNb3VudH1cbiAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICBvbkRibENsaWNrPXtvbkRibENsaWNrfVxuICAgICAgb25Nb3VzZUVudGVyPXtvbk1vdXNlRW50ZXJ9XG4gICAgICBvbk1vdXNlTGVhdmU9e29uTW91c2VMZWF2ZX1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9QYWdlQ2xhc3M+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBQYWdlO1xuIiwiaW1wb3J0IHsga2V5Q29kZXMgfSBmcm9tICcuL2ExMXknO1xuZXhwb3J0IGNvbnN0IGlzVGhlbWVGb250ID0gKHZhbHVlKSA9PiAvXmZvbnRfXFxkKyQvLnRlc3QodmFsdWUpO1xuZXhwb3J0IGNvbnN0IGRlYm91bmNlID0gKGZuLCBtcyA9IDAsIHsgbGVhZGluZyA9IGZhbHNlLCB0cmFpbGluZyA9IHRydWUgfSA9IHt9KSA9PiB7XG4gICAgbGV0IHRpbWVvdXRJZCA9IG51bGw7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgICAgIGlmIChsZWFkaW5nICYmIHRpbWVvdXRJZCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgZm4uYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRpbWVvdXRJZCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0cmFpbGluZyB8fCAhbGVhZGluZyB8fCB0aW1lb3V0SWQpIHtcbiAgICAgICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0cmFpbGluZykge1xuICAgICAgICAgICAgICAgICAgICBmbi5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGltZW91dElkID0gbnVsbDtcbiAgICAgICAgICAgIH0sIG1zKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgYSBzaW5nbGUgY2FsbCB3aXRoIGJvdGggbGVhZGluZyBhbmQgdHJhaWxpbmcgKHNlZSB0ZXN0cylcbiAgICAgICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRpbWVvdXRJZCA9IG51bGw7XG4gICAgICAgICAgICB9LCBtcyk7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbmV4cG9ydCBjb25zdCB0aHJvdHRsZSA9IChmdW5jLCBtcyA9IDApID0+IHtcbiAgICBsZXQgaXNUaHJvdHRsZWQgPSBmYWxzZSwgc2F2ZWRBcmdzO1xuICAgIGZ1bmN0aW9uIHdyYXBwZXIoLi4uYXJncykge1xuICAgICAgICBpZiAoaXNUaHJvdHRsZWQpIHtcbiAgICAgICAgICAgIHNhdmVkQXJncyA9IGFyZ3M7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgaXNUaHJvdHRsZWQgPSB0cnVlO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlzVGhyb3R0bGVkID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAoc2F2ZWRBcmdzKSB7XG4gICAgICAgICAgICAgICAgd3JhcHBlci5hcHBseSh0aGlzLCBzYXZlZEFyZ3MpO1xuICAgICAgICAgICAgICAgIHNhdmVkQXJncyA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIG1zKTtcbiAgICB9XG4gICAgcmV0dXJuIHdyYXBwZXI7XG59O1xuZXhwb3J0IGNvbnN0IGlzQnJvd3NlciA9ICgpID0+IHR5cGVvZiB3aW5kb3cgIT09IGB1bmRlZmluZWRgO1xuZXhwb3J0IGNvbnN0IHBlcmZvcm1PbkVudGVyID0gKGZuKSA9PiB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0ga2V5Q29kZXMuZW50ZXIpIHtcbiAgICAgICAgICAgIGZuKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH07XG59O1xuZXhwb3J0IGNvbnN0IGlzQ1NTTWFza1N1cHBvcnRlZCA9ICgpID0+IHtcbiAgICBpZiAoIWlzQnJvd3NlcigpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gKHdpbmRvdy5DU1MgJiZcbiAgICAgICAgd2luZG93LkNTUy5zdXBwb3J0cygnKG1hc2stcmVwZWF0OiBuby1yZXBlYXQpIG9yICgtd2Via2l0LW1hc2stcmVwZWF0OiBuby1yZXBlYXQpJykpO1xufTtcbmV4cG9ydCBjb25zdCBpc0VtcHR5T2JqZWN0ID0gKG9iaikgPT4gIW9iaiB8fCAoT2JqZWN0LmtleXMob2JqKS5sZW5ndGggPT09IDAgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBPYmplY3QpO1xuZXhwb3J0IGNvbnN0IGlzU2FmYXJpID0gKCkgPT4gL14oKD8hY2hyb21lfGFuZHJvaWQpLikqc2FmYXJpL2kudGVzdChuYXZpZ2F0b3I/LnVzZXJBZ2VudCk7XG4vLyBldmVuIHRob3VnaCBuYXZpZ2F0b3IucGxhdGZvcm0gaXMgZGVwcmVjYXRlZCwgaXQncyBzdGlsbCB0aGUgbW9zdCByZWxpYWJsZSB3YXkgdG8gZGV0ZWN0IHRoZSBPU1xuLy8gc3VnZ2VzdGVkIGJ5IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9OYXZpZ2F0b3IvcGxhdGZvcm1cbi8vIHRoaXMgZnVuY3Rpb24gaXMgbm90IHdvcmtpbmcgaW4gU1NSIGVudmlyb25tZW50XG4vLyBzaG91bGQgYmUgdXNlZCBvbmx5IGluIHRoZSBicm93c2VyIGVudmlyb25tZW50XG5leHBvcnQgY29uc3QgaXNNYWMgPSAoKSA9PiBuYXZpZ2F0b3I/LnBsYXRmb3JtPy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ21hYycpO1xuZXhwb3J0IGNvbnN0IGdldERhdGFBdHRyaWJ1dGVzID0gKHByb3BzKSA9PiB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHByb3BzKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsXSkgPT4ge1xuICAgICAgICBpZiAoa2V5LmluY2x1ZGVzKCdkYXRhLScpKSB7XG4gICAgICAgICAgICBhY2Nba2V5XSA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTtcbn07XG5leHBvcnQgZnVuY3Rpb24gcGljayhzb3VyY2UsIGtleXMpIHtcbiAgICByZXR1cm4ga2V5cy5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgIGlmICghc291cmNlLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgIFtrZXldOiBzb3VyY2Vba2V5XSxcbiAgICAgICAgfTtcbiAgICB9LCB7fSk7XG59XG5leHBvcnQgY29uc3QgaWRUb0NvbXBSZWYgPSAoaWQpID0+ICh7IGlkLCB0eXBlOiAnREVTS1RPUCcgfSk7XG5leHBvcnQgY29uc3QgaXNXaXhEb21haW4gPSAodXJsKSA9PiBbJ2VkaXRvcnguaW8nLCAnd2l4c2l0ZS5jb20nLCAnd2l4LmNvbScsICd3aXhzdHVkaW8uaW8nXS5zb21lKGRvbWFpbiA9PiB1cmwuaW5jbHVkZXMoZG9tYWluKSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD11dGlscy5qcy5tYXAiLCJtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfWGRmX19fOyIsImZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICByZXR1cm4gbW9kdWxlLmV4cG9ydHMgPSBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uIChuKSB7XG4gICAgZm9yICh2YXIgZSA9IDE7IGUgPCBhcmd1bWVudHMubGVuZ3RoOyBlKyspIHtcbiAgICAgIHZhciB0ID0gYXJndW1lbnRzW2VdO1xuICAgICAgZm9yICh2YXIgciBpbiB0KSAoe30pLmhhc093blByb3BlcnR5LmNhbGwodCwgcikgJiYgKG5bcl0gPSB0W3JdKTtcbiAgICB9XG4gICAgcmV0dXJuIG47XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgX2V4dGVuZHMuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2V4dGVuZHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHRmdW5jdGlvbigpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcblx0XHRmdW5jdGlvbigpIHsgcmV0dXJuIG1vZHVsZTsgfTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIGRlZmluaXRpb24pIHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqLCBwcm9wKSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTsgfSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQgZGVmYXVsdCB7XCJiZ1wiOlwiYzdjTVd6XCIsXCJpbmxpbmVDb250ZW50XCI6XCJGVkd2Q1hcIixcInBhZ2VXcmFwcGVyXCI6XCJ6SzdNaFhcIixcInJvb3RcIjpcImZFbTBCb1wifTsiLCJmdW5jdGlvbiByKGUpe3ZhciB0LGYsbj1cIlwiO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlfHxcIm51bWJlclwiPT10eXBlb2YgZSluKz1lO2Vsc2UgaWYoXCJvYmplY3RcIj09dHlwZW9mIGUpaWYoQXJyYXkuaXNBcnJheShlKSlmb3IodD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF0mJihmPXIoZVt0XSkpJiYobiYmKG4rPVwiIFwiKSxuKz1mKTtlbHNlIGZvcih0IGluIGUpZVt0XSYmKG4mJihuKz1cIiBcIiksbis9dCk7cmV0dXJuIG59ZXhwb3J0IGZ1bmN0aW9uIGNsc3goKXtmb3IodmFyIGUsdCxmPTAsbj1cIlwiO2Y8YXJndW1lbnRzLmxlbmd0aDspKGU9YXJndW1lbnRzW2YrK10pJiYodD1yKGUpKSYmKG4mJihuKz1cIiBcIiksbis9dCk7cmV0dXJuIG59ZXhwb3J0IGRlZmF1bHQgY2xzeDsiLCJleHBvcnQgY29uc3QgQ1NTX1BSRUZJWCA9ICd3aXh1aS0nO1xuZXhwb3J0IGNvbnN0IGZvcm1hdENsYXNzTmFtZXMgPSAoc2VtYW50aWNDbGFzc05hbWUsIC4uLmN1c3RvbUNsYXNzTmFtZXMpID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBpZiAoc2VtYW50aWNDbGFzc05hbWUpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goYCR7Q1NTX1BSRUZJWH0ke3NlbWFudGljQ2xhc3NOYW1lfWApO1xuICAgIH1cbiAgICBjdXN0b21DbGFzc05hbWVzLmZvckVhY2goY2xhc3NOYW1lID0+IHtcbiAgICAgICAgaWYgKGNsYXNzTmFtZSkge1xuICAgICAgICAgICAgLy8gYWRkIGVhY2ggY3VzdG9tIGNsYXNzIHdpdGggYW5kIHdpdGhvdXQgdGhlIHByZWZpeFxuICAgICAgICAgICAgcmVzdWx0LnB1c2goYCR7Q1NTX1BSRUZJWH0ke2NsYXNzTmFtZX1gKTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGNsYXNzTmFtZSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0LmpvaW4oJyAnKTtcbn07XG4vLyByZW1vdmUgd2hlbiBodHRwczovL2dpdGh1Yi5jb20vc2VhcmNoP3E9cmVwbyUzQXdpeC1wcml2YXRlJTJGdGh1bmRlcmJvbHQlMjBjdXN0b21Dc3NDbGFzc2VzJnR5cGU9Y29kZSBoYXMgbm8gdXNhZ2VzXG5leHBvcnQgY29uc3QgY3VzdG9tQ3NzQ2xhc3NlcyA9ICguLi5jbGFzc05hbWVzKSA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLndhcm4oJ2N1c3RvbUNzc0NsYXNzZXMgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBmb3JtYXRDbGFzc05hbWVzIGluc3RlYWQnKTtcbiAgICBjb25zdCBbc2VtYW50aWMsIC4uLnJlc3RdID0gY2xhc3NOYW1lcztcbiAgICByZXR1cm4gZm9ybWF0Q2xhc3NOYW1lcyhzZW1hbnRpYywgLi4ucmVzdCk7XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2xhc3MtbmFtZXMtZm9ybW1hdGVyLmpzLm1hcCIsImV4cG9ydCBjb25zdCBUZXN0SWRzID0ge1xuICBiYWNrZ3JvdW5kOiAncGFnZS1iZycsXG59IGFzIGNvbnN0O1xuIiwiLy8gVGhpcyBjbGFzcyBpcyBub3QgaW5qZWN0ZWQgdG8gdGhlIERPTSBhbnl3aGVyZSwgaXQncyBvbmx5IGhlcmUgZm9yIHRoZSBhdXRvY29tcGxldGUuXG4vLyBUaGUgc2VsZWN0b3IgLnBhZ2UgaXMgaW1wbGVtZW50ZWQgaGVyZTogaHR0cHM6Ly9naXRodWIuY29tL3dpeC1wcml2YXRlL2Nzcy1lZGl0aW5nLXV0aWxzL2Jsb2IvbWFzdGVyL3BhY2thZ2VzL2Nzcy1wcm9jZXNzb3Ivc3JjL2Nzc1Byb2Nlc3Nvci50cyNMMjlcbmNvbnN0IHNlbWFudGljQ2xhc3NOYW1lcyA9IHtcbiAgcm9vdDogJ3BhZ2UnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGRlZmF1bHQgc2VtYW50aWNDbGFzc05hbWVzO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgZm9ybWF0Q2xhc3NOYW1lcyB9IGZyb20gJ0B3aXgvZWRpdG9yLWVsZW1lbnRzLWNvbW1vbi11dGlscyc7XG5pbXBvcnQgdHlwZSB7IFNraW5QYWdlUHJvcHMgfSBmcm9tICcuLi9Ta2luUGFnZSc7XG5pbXBvcnQgeyBUZXN0SWRzIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCBzZW1hbnRpY0NsYXNzTmFtZXMgZnJvbSAnLi4vLi4vLi4vUGFnZS5zZW1hbnRpY0NsYXNzTmFtZXMnO1xuXG5leHBvcnQgdHlwZSBCYXNlUGFnZVNraW5Qcm9wcyA9IFNraW5QYWdlUHJvcHMgJiB7XG4gIHNraW5zU3R5bGU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59O1xuXG5jb25zdCBCYXNlUGFnZVNraW46IFJlYWN0LkZDPEJhc2VQYWdlU2tpblByb3BzPiA9ICh7XG4gIGlkLFxuICBjbGFzc05hbWUsXG4gIGN1c3RvbUNsYXNzTmFtZXMgPSBbXSxcbiAgcGFnZURpZE1vdW50LFxuICBvbkNsaWNrLFxuICBvbkRibENsaWNrLFxuICBjaGlsZHJlbixcbiAgc2tpbnNTdHlsZSxcbiAgb25Nb3VzZUVudGVyLFxuICBvbk1vdXNlTGVhdmUsXG59KSA9PiB7XG4gIGNvbnN0IGNvbXB1dGVkQ2xhc3MgPSBjbGFzc25hbWVzKFxuICAgIHNraW5zU3R5bGUucm9vdCxcbiAgICBza2luc1N0eWxlLnBhZ2VXcmFwcGVyLFxuICAgIGNsYXNzTmFtZSxcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGlkPXtpZH1cbiAgICAgIGNsYXNzTmFtZT17Y29tcHV0ZWRDbGFzc31cbiAgICAgIHJlZj17cGFnZURpZE1vdW50fVxuICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgIG9uRG91YmxlQ2xpY2s9e29uRGJsQ2xpY2t9XG4gICAgICBvbk1vdXNlRW50ZXI9e29uTW91c2VFbnRlcn1cbiAgICAgIG9uTW91c2VMZWF2ZT17b25Nb3VzZUxlYXZlfVxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgIHNraW5zU3R5bGUuYmcsXG4gICAgICAgICAgZm9ybWF0Q2xhc3NOYW1lcyhzZW1hbnRpY0NsYXNzTmFtZXMucm9vdCwgLi4uY3VzdG9tQ2xhc3NOYW1lcyksXG4gICAgICAgICl9XG4gICAgICAgIGRhdGEtdGVzdGlkPXtUZXN0SWRzLmJhY2tncm91bmR9XG4gICAgICAvPlxuICAgICAgPGRpdiBjbGFzc05hbWU9e3NraW5zU3R5bGUuaW5saW5lQ29udGVudH0+e2NoaWxkcmVuKCl9PC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBCYXNlUGFnZVNraW47XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFBhZ2UgZnJvbSAnLi4vLi4vUGFnZSc7XG5pbXBvcnQgdHlwZSB7IFNraW5QYWdlUHJvcHMgfSBmcm9tICcuLi9Ta2luUGFnZSc7XG5pbXBvcnQgc2tpbnNTdHlsZXMgZnJvbSAnLi9zdHlsZXMvQmFzaWNQYWdlU2tpbi5zY3NzJztcbmltcG9ydCB0eXBlIHsgQmFzZVBhZ2VTa2luUHJvcHMgfSBmcm9tICcuL0Jhc2VQYWdlU2tpbic7XG5pbXBvcnQgQmFzZVBhZ2VTa2luIGZyb20gJy4vQmFzZVBhZ2VTa2luJztcblxuY29uc3QgQmFzaWNQYWdlU2tpbjogUmVhY3QuRkM8XG4gIE9taXQ8QmFzZVBhZ2VTa2luUHJvcHMsICdza2luc1N0eWxlJz5cbj4gPSBwcm9wcyA9PiA8QmFzZVBhZ2VTa2luIHsuLi5wcm9wc30gc2tpbnNTdHlsZT17c2tpbnNTdHlsZXN9IC8+O1xuXG5jb25zdCBCYXNpY1BhZ2U6IFJlYWN0LkZDPFNraW5QYWdlUHJvcHM+ID0gcHJvcHMgPT4gKFxuICA8UGFnZSB7Li4ucHJvcHN9IHNraW49e0Jhc2ljUGFnZVNraW59IC8+XG4pO1xuXG5leHBvcnQgZGVmYXVsdCBCYXNpY1BhZ2U7XG4iXSwibmFtZXMiOlsicm9vdCIsImZhY3RvcnkiLCJleHBvcnRzIiwibW9kdWxlIiwicmVxdWlyZSIsImRlZmluZSIsImFtZCIsInNlbGYiLCJ0aGlzIiwiX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9YZGZfX18iLCJwcm9wcyIsImlkIiwiY2xhc3NOYW1lIiwiY3VzdG9tQ2xhc3NOYW1lcyIsInNraW4iLCJQYWdlQ2xhc3MiLCJwYWdlRGlkTW91bnQiLCJvbkNsaWNrIiwib25EYmxDbGljayIsIm9uTW91c2VFbnRlciIsIm9uTW91c2VMZWF2ZSIsImNoaWxkcmVuIiwiUmVhY3QiLCJfZXh0ZW5kcyIsIk9iamVjdCIsImVudHJpZXMiLCJyZWR1Y2UiLCJhY2MiLCJrZXkiLCJ2YWwiLCJpbmNsdWRlcyIsImdldERhdGFBdHRyaWJ1dGVzIiwiYXNzaWduIiwiYmluZCIsIm4iLCJlIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidCIsInIiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJfX2VzTW9kdWxlIiwiYXBwbHkiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJ1bmRlZmluZWQiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwiZ2V0dGVyIiwiZCIsImEiLCJkZWZpbml0aW9uIiwibyIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsIm9iaiIsInByb3AiLCJwcm90b3R5cGUiLCJTeW1ib2wiLCJ0b1N0cmluZ1RhZyIsInZhbHVlIiwiZiIsIkFycmF5IiwiaXNBcnJheSIsIkNTU19QUkVGSVgiLCJmb3JtYXRDbGFzc05hbWVzIiwic2VtYW50aWNDbGFzc05hbWUiLCJyZXN1bHQiLCJwdXNoIiwiZm9yRWFjaCIsImpvaW4iLCJUZXN0SWRzIiwiX3JlZiIsInNraW5zU3R5bGUiLCJjb21wdXRlZENsYXNzIiwiY2xhc3NuYW1lcyIsInBhZ2VXcmFwcGVyIiwicmVmIiwib25Eb3VibGVDbGljayIsImJnIiwic2VtYW50aWNDbGFzc05hbWVzIiwiaW5saW5lQ29udGVudCIsIkJhc2ljUGFnZVNraW4iLCJCYXNlUGFnZVNraW4iLCJza2luc1N0eWxlcyIsIlBhZ2UiXSwic291cmNlUm9vdCI6IiJ9","'use client';\nimport Component from '@wix/editor-components/skin/Page/BasicPageSkin';\nimport '@wix/editor-components/skin/Page/BasicPageSkin/css';\nimport { withNormalChildren } from './hocs';\nexport const Page_BasicPageSkin = withNormalChildren(Component);\n//# sourceMappingURL=Page_BasicPageSkin.js.map","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\")):\"function\"==typeof define&&define.amd?define(\"thunderbolt/skin/Page/ResponsivePageWithColorBG/Page\",[\"react\"],t):\"object\"==typeof exports?exports[\"thunderbolt/skin/Page/ResponsivePageWithColorBG/Page\"]=t(require(\"react\")):e[\"thunderbolt/skin/Page/ResponsivePageWithColorBG/Page\"]=t(e.React)}(\"undefined\"!=typeof self?self:this,function(e){return function(){\"use strict\";var t={\"Xdf/\":function(t){t.exports=e}},o={};function n(e){var r=o[e];if(void 0!==r)return r.exports;var i=o[e]={exports:{}};return t[e](i,i.exports,n),i.exports}n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var r={};return function(){function e(t){var o,n,r=\"\";if(\"string\"==typeof t||\"number\"==typeof t)r+=t;else if(\"object\"==typeof t)if(Array.isArray(t))for(o=0;o<t.length;o++)t[o]&&(n=e(t[o]))&&(r&&(r+=\" \"),r+=n);else for(o in t)t[o]&&(r&&(r+=\" \"),r+=o);return r}n.r(r),n.d(r,{default:function(){return d}});var t=function(){for(var t,o,n=0,r=\"\";n<arguments.length;)(t=arguments[n++])&&(o=e(t))&&(r&&(r+=\" \"),r+=o);return r},o=n(\"Xdf/\"),i=n.n(o);const u=\"wixui-\",a=(e,...t)=>{const o=[];return e&&o.push(`${u}${e}`),t.forEach(e=>{e&&(o.push(`${u}${e}`),o.push(e))}),o.join(\" \")},s=\"page-bg\";var f={root:\"page\"},c=\"P0dCOY\",l=\"PJ4KCX\";var d=e=>{let{id:o,className:n,customClassNames:r=[],pageDidMount:u,onClick:d,onDblClick:p,children:v,onMouseEnter:g,onMouseLeave:b}=e;return i().createElement(\"div\",{id:o,className:t(c,n),ref:u,onClick:d,onDoubleClick:p,onMouseEnter:g,onMouseLeave:b},i().createElement(\"div\",{className:t(l,a(f.root,...r)),\"data-testid\":s}),i().createElement(\"div\",null,v()))}}(),r}()});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGh1bmRlcmJvbHQvc2tpbi9QYWdlL1Jlc3BvbnNpdmVQYWdlV2l0aENvbG9yQkcvUGFnZS5idW5kbGUubWluLmpzIiwibWFwcGluZ3MiOiJDQUFBLFNBQTJDQSxFQUFNQyxHQUMxQixpQkFBWkMsU0FBMEMsaUJBQVhDLE9BQ3hDQSxPQUFPRCxRQUFVRCxFQUFRRyxRQUFRLFVBQ1IsbUJBQVhDLFFBQXlCQSxPQUFPQyxJQUM5Q0QsT0FBTyx1REFBd0QsQ0FBQyxTQUFVSixHQUNoRCxpQkFBWkMsUUFDZEEsUUFBUSx3REFBMERELEVBQVFHLFFBQVEsVUFFbEZKLEVBQUssd0RBQTBEQyxFQUFRRCxFQUFZLE1BQ3BGLENBVEQsQ0FTb0Isb0JBQVRPLEtBQXVCQSxLQUFPQyxLQUFPLFNBQVNDLEdBQ3pELE8sa0RDVkFOLEVBQU9ELFFBQVVPLEMsR0NDYkMsRUFBMkIsQ0FBQyxFQUdoQyxTQUFTQyxFQUFvQkMsR0FFNUIsSUFBSUMsRUFBZUgsRUFBeUJFLEdBQzVDLFFBQXFCRSxJQUFqQkQsRUFDSCxPQUFPQSxFQUFhWCxRQUdyQixJQUFJQyxFQUFTTyxFQUF5QkUsR0FBWSxDQUdqRFYsUUFBUyxDQUFDLEdBT1gsT0FIQWEsRUFBb0JILEdBQVVULEVBQVFBLEVBQU9ELFFBQVNTLEdBRy9DUixFQUFPRCxPQUNmLENDckJBUyxFQUFvQkssRUFBSSxTQUFTYixHQUNoQyxJQUFJYyxFQUFTZCxHQUFVQSxFQUFPZSxXQUM3QixXQUFhLE9BQU9mLEVBQWdCLE9BQUcsRUFDdkMsV0FBYSxPQUFPQSxDQUFRLEVBRTdCLE9BREFRLEVBQW9CUSxFQUFFRixFQUFRLENBQUVHLEVBQUdILElBQzVCQSxDQUNSLEVDTkFOLEVBQW9CUSxFQUFJLFNBQVNqQixFQUFTbUIsR0FDekMsSUFBSSxJQUFJQyxLQUFPRCxFQUNYVixFQUFvQlksRUFBRUYsRUFBWUMsS0FBU1gsRUFBb0JZLEVBQUVyQixFQUFTb0IsSUFDNUVFLE9BQU9DLGVBQWV2QixFQUFTb0IsRUFBSyxDQUFFSSxZQUFZLEVBQU1DLElBQUtOLEVBQVdDLElBRzNFLEVDUEFYLEVBQW9CWSxFQUFJLFNBQVNLLEVBQUtDLEdBQVEsT0FBT0wsT0FBT00sVUFBVUMsZUFBZUMsS0FBS0osRUFBS0MsRUFBTyxFQ0N0R2xCLEVBQW9Cc0IsRUFBSSxTQUFTL0IsR0FDWCxvQkFBWGdDLFFBQTBCQSxPQUFPQyxhQUMxQ1gsT0FBT0MsZUFBZXZCLEVBQVNnQyxPQUFPQyxZQUFhLENBQUVDLE1BQU8sV0FFN0RaLE9BQU9DLGVBQWV2QixFQUFTLGFBQWMsQ0FBRWtDLE9BQU8sR0FDdkQsRSwyQkNOQSxTQUFTSCxFQUFFSSxHQUFHLElBQUlDLEVBQUVDLEVBQUV2QixFQUFFLEdBQUcsR0FBRyxpQkFBaUJxQixHQUFHLGlCQUFpQkEsRUFBRXJCLEdBQUdxQixPQUFPLEdBQUcsaUJBQWlCQSxFQUFFLEdBQUdHLE1BQU1DLFFBQVFKLEdBQUcsSUFBSUMsRUFBRSxFQUFFQSxFQUFFRCxFQUFFSyxPQUFPSixJQUFJRCxFQUFFQyxLQUFLQyxFQUFFTixFQUFFSSxFQUFFQyxPQUFPdEIsSUFBSUEsR0FBRyxLQUFLQSxHQUFHdUIsUUFBUSxJQUFJRCxLQUFLRCxFQUFFQSxFQUFFQyxLQUFLdEIsSUFBSUEsR0FBRyxLQUFLQSxHQUFHc0IsR0FBRyxPQUFPdEIsQ0FBQyxDLDZDQUEySCxNQUFuSCxXQUFnQixJQUFJLElBQUlxQixFQUFFQyxFQUFFQyxFQUFFLEVBQUV2QixFQUFFLEdBQUd1QixFQUFFSSxVQUFVRCxTQUFTTCxFQUFFTSxVQUFVSixRQUFRRCxFQUFFTCxFQUFFSSxNQUFNckIsSUFBSUEsR0FBRyxLQUFLQSxHQUFHc0IsR0FBRyxPQUFPdEIsQ0FBQyxFLHFCQ0ExVixNQUFNNEIsRUFBYSxTQUNiQyxFQUFtQixDQUFDQyxLQUFzQkMsS0FDbkQsTUFBTUMsRUFBUyxHQVdmLE9BVklGLEdBQ0FFLEVBQU9DLEtBQUssR0FBR0wsSUFBYUUsS0FFaENDLEVBQWlCRyxRQUFRQyxJQUNqQkEsSUFFQUgsRUFBT0MsS0FBSyxHQUFHTCxJQUFhTyxLQUM1QkgsRUFBT0MsS0FBS0UsTUFHYkgsRUFBT0ksS0FBSyxNQ2JWQyxFQUNDLFVDS2QsTUFKMkIsQ0FDekJyRCxLQUFNLFFDRlIsRUFBdUIsU0FBdkIsRUFBcUMsU0N3Q3JDLE1BakMyRHNELElBVXBELElBVnFELEdBQzFEQyxFQUFFLFVBQ0ZKLEVBQVMsaUJBQ1RKLEVBQW1CLEdBQUUsYUFDckJTLEVBQVksUUFDWkMsRUFBTyxXQUNQQyxFQUFVLFNBQ1ZDLEVBQVEsYUFDUkMsRUFBWSxhQUNaQyxHQUNEUCxFQUNDLE9BQ0VRLElBQUFBLGNBQUEsT0FDRVAsR0FBSUEsRUFDSkosVUFBV1ksRUFBV0MsRUFBYWIsR0FDbkNjLElBQUtULEVBQ0xDLFFBQVNBLEVBQ1RTLGNBQWVSLEVBQ2ZFLGFBQWNBLEVBQ2RDLGFBQWNBLEdBRWRDLElBQUFBLGNBQUEsT0FDRVgsVUFBV1ksRUFDVEMsRUFDQW5CLEVBQWlCc0IsRUFBbUJuRSxRQUFTK0MsSUFFL0MsY0FBYU0sSUFFZlMsSUFBQUEsY0FBQSxXQUFNSCxNIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS9leHRlcm5hbCB1bWQge1wiYW1kXCI6XCJyZWFjdFwiLFwiY29tbW9uanNcIjpcInJlYWN0XCIsXCJjb21tb25qczJcIjpcInJlYWN0XCIsXCJyb290XCI6XCJSZWFjdFwifSIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9jbHN4L2Rpc3QvY2xzeC5tanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi9lZGl0b3ItZWxlbWVudHMtY29tbW9uLXV0aWxzL2Rpc3QvZXNtL2Nzc0VkaXRpbmcvY2xhc3MtbmFtZXMtZm9ybW1hdGVyLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL3RodW5kZXJib2x0LWNvcmUtY29tcG9uZW50cy9QYWdlL2NvbnN0YW50cy50cyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy90aHVuZGVyYm9sdC1jb3JlLWNvbXBvbmVudHMvUGFnZS9QYWdlLnNlbWFudGljQ2xhc3NOYW1lcy50cyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy90aHVuZGVyYm9sdC1jb3JlLWNvbXBvbmVudHMvUGFnZS92aWV3ZXIvc2tpbkNvbXBzL1Jlc3BvbnNpdmUvc3R5bGVzL1Jlc3BvbnNpdmVQYWdlV2l0aENvbG9yQkcuc2NzcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy90aHVuZGVyYm9sdC1jb3JlLWNvbXBvbmVudHMvUGFnZS92aWV3ZXIvc2tpbkNvbXBzL1Jlc3BvbnNpdmUvUmVzcG9uc2l2ZVBhZ2VXaXRoQ29sb3JCRy5za2luLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShcInRodW5kZXJib2x0L3NraW4vUGFnZS9SZXNwb25zaXZlUGFnZVdpdGhDb2xvckJHL1BhZ2VcIiwgW1wicmVhY3RcIl0sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1widGh1bmRlcmJvbHQvc2tpbi9QYWdlL1Jlc3BvbnNpdmVQYWdlV2l0aENvbG9yQkcvUGFnZVwiXSA9IGZhY3RvcnkocmVxdWlyZShcInJlYWN0XCIpKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJ0aHVuZGVyYm9sdC9za2luL1BhZ2UvUmVzcG9uc2l2ZVBhZ2VXaXRoQ29sb3JCRy9QYWdlXCJdID0gZmFjdG9yeShyb290W1wiUmVhY3RcIl0pO1xufSkoKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB0aGlzKSwgZnVuY3Rpb24oX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9YZGZfX18pIHtcbnJldHVybiAiLCJtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfWGRmX19fOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdGZ1bmN0aW9uKCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuXHRcdGZ1bmN0aW9uKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgZGVmaW5pdGlvbikge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmosIHByb3ApIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApOyB9IiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJmdW5jdGlvbiByKGUpe3ZhciB0LGYsbj1cIlwiO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlfHxcIm51bWJlclwiPT10eXBlb2YgZSluKz1lO2Vsc2UgaWYoXCJvYmplY3RcIj09dHlwZW9mIGUpaWYoQXJyYXkuaXNBcnJheShlKSlmb3IodD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF0mJihmPXIoZVt0XSkpJiYobiYmKG4rPVwiIFwiKSxuKz1mKTtlbHNlIGZvcih0IGluIGUpZVt0XSYmKG4mJihuKz1cIiBcIiksbis9dCk7cmV0dXJuIG59ZXhwb3J0IGZ1bmN0aW9uIGNsc3goKXtmb3IodmFyIGUsdCxmPTAsbj1cIlwiO2Y8YXJndW1lbnRzLmxlbmd0aDspKGU9YXJndW1lbnRzW2YrK10pJiYodD1yKGUpKSYmKG4mJihuKz1cIiBcIiksbis9dCk7cmV0dXJuIG59ZXhwb3J0IGRlZmF1bHQgY2xzeDsiLCJleHBvcnQgY29uc3QgQ1NTX1BSRUZJWCA9ICd3aXh1aS0nO1xuZXhwb3J0IGNvbnN0IGZvcm1hdENsYXNzTmFtZXMgPSAoc2VtYW50aWNDbGFzc05hbWUsIC4uLmN1c3RvbUNsYXNzTmFtZXMpID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBpZiAoc2VtYW50aWNDbGFzc05hbWUpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goYCR7Q1NTX1BSRUZJWH0ke3NlbWFudGljQ2xhc3NOYW1lfWApO1xuICAgIH1cbiAgICBjdXN0b21DbGFzc05hbWVzLmZvckVhY2goY2xhc3NOYW1lID0+IHtcbiAgICAgICAgaWYgKGNsYXNzTmFtZSkge1xuICAgICAgICAgICAgLy8gYWRkIGVhY2ggY3VzdG9tIGNsYXNzIHdpdGggYW5kIHdpdGhvdXQgdGhlIHByZWZpeFxuICAgICAgICAgICAgcmVzdWx0LnB1c2goYCR7Q1NTX1BSRUZJWH0ke2NsYXNzTmFtZX1gKTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGNsYXNzTmFtZSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0LmpvaW4oJyAnKTtcbn07XG4vLyByZW1vdmUgd2hlbiBodHRwczovL2dpdGh1Yi5jb20vc2VhcmNoP3E9cmVwbyUzQXdpeC1wcml2YXRlJTJGdGh1bmRlcmJvbHQlMjBjdXN0b21Dc3NDbGFzc2VzJnR5cGU9Y29kZSBoYXMgbm8gdXNhZ2VzXG5leHBvcnQgY29uc3QgY3VzdG9tQ3NzQ2xhc3NlcyA9ICguLi5jbGFzc05hbWVzKSA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLndhcm4oJ2N1c3RvbUNzc0NsYXNzZXMgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBmb3JtYXRDbGFzc05hbWVzIGluc3RlYWQnKTtcbiAgICBjb25zdCBbc2VtYW50aWMsIC4uLnJlc3RdID0gY2xhc3NOYW1lcztcbiAgICByZXR1cm4gZm9ybWF0Q2xhc3NOYW1lcyhzZW1hbnRpYywgLi4ucmVzdCk7XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2xhc3MtbmFtZXMtZm9ybW1hdGVyLmpzLm1hcCIsImV4cG9ydCBjb25zdCBUZXN0SWRzID0ge1xuICBiYWNrZ3JvdW5kOiAncGFnZS1iZycsXG59IGFzIGNvbnN0O1xuIiwiLy8gVGhpcyBjbGFzcyBpcyBub3QgaW5qZWN0ZWQgdG8gdGhlIERPTSBhbnl3aGVyZSwgaXQncyBvbmx5IGhlcmUgZm9yIHRoZSBhdXRvY29tcGxldGUuXG4vLyBUaGUgc2VsZWN0b3IgLnBhZ2UgaXMgaW1wbGVtZW50ZWQgaGVyZTogaHR0cHM6Ly9naXRodWIuY29tL3dpeC1wcml2YXRlL2Nzcy1lZGl0aW5nLXV0aWxzL2Jsb2IvbWFzdGVyL3BhY2thZ2VzL2Nzcy1wcm9jZXNzb3Ivc3JjL2Nzc1Byb2Nlc3Nvci50cyNMMjlcbmNvbnN0IHNlbWFudGljQ2xhc3NOYW1lcyA9IHtcbiAgcm9vdDogJ3BhZ2UnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGRlZmF1bHQgc2VtYW50aWNDbGFzc05hbWVzO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQgZGVmYXVsdCB7XCJyb290XCI6XCJQMGRDT1lcIixcImJnXCI6XCJQSjRLQ1hcIn07IiwiaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xzeCc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZm9ybWF0Q2xhc3NOYW1lcyB9IGZyb20gJ0B3aXgvZWRpdG9yLWVsZW1lbnRzLWNvbW1vbi11dGlscyc7XG5pbXBvcnQgeyBUZXN0SWRzIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB0eXBlIHsgU2tpblBhZ2VQcm9wcyB9IGZyb20gJy4uL1NraW5QYWdlJztcbmltcG9ydCBzZW1hbnRpY0NsYXNzTmFtZXMgZnJvbSAnLi4vLi4vLi4vUGFnZS5zZW1hbnRpY0NsYXNzTmFtZXMnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy9SZXNwb25zaXZlUGFnZVdpdGhDb2xvckJHLnNjc3MnO1xuXG5jb25zdCBSZXNwb25zaXZlUGFnZVdpdGhDb2xvckJHOiBSZWFjdC5GQzxTa2luUGFnZVByb3BzPiA9ICh7XG4gIGlkLFxuICBjbGFzc05hbWUsXG4gIGN1c3RvbUNsYXNzTmFtZXMgPSBbXSxcbiAgcGFnZURpZE1vdW50LFxuICBvbkNsaWNrLFxuICBvbkRibENsaWNrLFxuICBjaGlsZHJlbixcbiAgb25Nb3VzZUVudGVyLFxuICBvbk1vdXNlTGVhdmUsXG59KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgaWQ9e2lkfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKHN0eWxlcy5yb290LCBjbGFzc05hbWUpfVxuICAgICAgcmVmPXtwYWdlRGlkTW91bnR9XG4gICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgb25Eb3VibGVDbGljaz17b25EYmxDbGlja31cbiAgICAgIG9uTW91c2VFbnRlcj17b25Nb3VzZUVudGVyfVxuICAgICAgb25Nb3VzZUxlYXZlPXtvbk1vdXNlTGVhdmV9XG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgc3R5bGVzLmJnLFxuICAgICAgICAgIGZvcm1hdENsYXNzTmFtZXMoc2VtYW50aWNDbGFzc05hbWVzLnJvb3QsIC4uLmN1c3RvbUNsYXNzTmFtZXMpLFxuICAgICAgICApfVxuICAgICAgICBkYXRhLXRlc3RpZD17VGVzdElkcy5iYWNrZ3JvdW5kfVxuICAgICAgLz5cbiAgICAgIDxkaXY+e2NoaWxkcmVuKCl9PC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZXNwb25zaXZlUGFnZVdpdGhDb2xvckJHO1xuIl0sIm5hbWVzIjpbInJvb3QiLCJmYWN0b3J5IiwiZXhwb3J0cyIsIm1vZHVsZSIsInJlcXVpcmUiLCJkZWZpbmUiLCJhbWQiLCJzZWxmIiwidGhpcyIsIl9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfWGRmX19fIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwidW5kZWZpbmVkIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsIm4iLCJnZXR0ZXIiLCJfX2VzTW9kdWxlIiwiZCIsImEiLCJkZWZpbml0aW9uIiwia2V5IiwibyIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsIm9iaiIsInByb3AiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJyIiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJ2YWx1ZSIsImUiLCJ0IiwiZiIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsImFyZ3VtZW50cyIsIkNTU19QUkVGSVgiLCJmb3JtYXRDbGFzc05hbWVzIiwic2VtYW50aWNDbGFzc05hbWUiLCJjdXN0b21DbGFzc05hbWVzIiwicmVzdWx0IiwicHVzaCIsImZvckVhY2giLCJjbGFzc05hbWUiLCJqb2luIiwiVGVzdElkcyIsIl9yZWYiLCJpZCIsInBhZ2VEaWRNb3VudCIsIm9uQ2xpY2siLCJvbkRibENsaWNrIiwiY2hpbGRyZW4iLCJvbk1vdXNlRW50ZXIiLCJvbk1vdXNlTGVhdmUiLCJSZWFjdCIsImNsYXNzbmFtZXMiLCJzdHlsZXMiLCJyZWYiLCJvbkRvdWJsZUNsaWNrIiwic2VtYW50aWNDbGFzc05hbWVzIl0sInNvdXJjZVJvb3QiOiIifQ==","'use client';\nimport Component from '@wix/editor-components/skin/Page/ResponsivePageWithColorBG';\nimport '@wix/editor-components/skin/Page/ResponsivePageWithColorBG/css';\nimport { withNormalChildren } from './hocs';\nexport const Page_ResponsivePageWithColorBG = withNormalChildren(Component);\n//# sourceMappingURL=Page_ResponsivePageWithColorBG.js.map","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\"),require(\"react-dom\")):\"function\"==typeof define&&define.amd?define(\"thunderbolt/component/PageGroup/PageGroup\",[\"react\",\"reactDOM\"],t):\"object\"==typeof exports?exports[\"thunderbolt/component/PageGroup/PageGroup\"]=t(require(\"react\"),require(\"react-dom\")):e[\"thunderbolt/component/PageGroup/PageGroup\"]=t(e.React,e.ReactDOM)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(){var n={\"Xdf/\":function(t){\"use strict\";t.exports=e},NUjG:function(e){\"use strict\";e.exports=t},Fe5V:function(e){function t(){return e.exports=t=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},e.exports.__esModule=!0,e.exports.default=e.exports,t.apply(null,arguments)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports}},r={};function i(e){var t=r[e];if(void 0!==t)return t.exports;var o=r[e]={exports:{}};return n[e](o,o.exports,i),o.exports}i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,{a:t}),t},i.d=function(e,t){for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var o={};return function(){\"use strict\";i.r(o),i.d(o,{default:function(){return fe}});var e=i(\"Fe5V\"),t=i.n(e),n=i(\"Xdf/\"),r=i.n(n);function s(e){var t,n,r=\"\";if(\"string\"==typeof e||\"number\"==typeof e)r+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=s(e[t]))&&(r&&(r+=\" \"),r+=n);else for(t in e)e[t]&&(r&&(r+=\" \"),r+=t);return r}var a=function(){for(var e,t,n=0,r=\"\";n<arguments.length;)(e=arguments[n++])&&(t=s(e))&&(r&&(r+=\" \"),r+=t);return r};const l=e=>Object.entries(e).reduce((e,[t,n])=>(t.includes(\"data-\")&&(e[t]=n),e),{});function c(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==t.indexOf(r))continue;n[r]=e[r]}return n}function u(){return u=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u.apply(null,arguments)}function p(e,t){return p=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},p(e,t)}function d(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,p(e,t)}var f=r().createContext(null);function h(e,t){var r=Object.create(null);return e&&n.Children.map(e,function(e){return e}).forEach(function(e){r[e.key]=function(e){return t&&(0,n.isValidElement)(e)?t(e):e}(e)}),r}function m(e,t,n){return null!=n[t]?n[t]:e.props[t]}function E(e,t,r){var i=h(e.children),o=function(e,t){function n(n){return n in t?t[n]:e[n]}e=e||{},t=t||{};var r,i=Object.create(null),o=[];for(var s in e)s in t?o.length&&(i[s]=o,o=[]):o.push(s);var a={};for(var l in t){if(i[l])for(r=0;r<i[l].length;r++){var c=i[l][r];a[i[l][r]]=n(c)}a[l]=n(l)}for(r=0;r<o.length;r++)a[o[r]]=n(o[r]);return a}(t,i);return Object.keys(o).forEach(function(s){var a=o[s];if((0,n.isValidElement)(a)){var l=s in t,c=s in i,u=t[s],p=(0,n.isValidElement)(u)&&!u.props.in;!c||l&&!p?c||!l||p?c&&l&&(0,n.isValidElement)(u)&&(o[s]=(0,n.cloneElement)(a,{onExited:r.bind(null,a),in:u.props.in,exit:m(a,\"exit\",e),enter:m(a,\"enter\",e)})):o[s]=(0,n.cloneElement)(a,{in:!1}):o[s]=(0,n.cloneElement)(a,{onExited:r.bind(null,a),in:!0,exit:m(a,\"exit\",e),enter:m(a,\"enter\",e)})}}),o}var v=Object.values||function(e){return Object.keys(e).map(function(t){return e[t]})},x=function(e){function t(t,n){var r,i=(r=e.call(this,t,n)||this).handleExited.bind(function(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}(r));return r.state={contextValue:{isMounting:!0},handleExited:i,firstRender:!0},r}d(t,e);var i=t.prototype;return i.componentDidMount=function(){this.mounted=!0,this.setState({contextValue:{isMounting:!1}})},i.componentWillUnmount=function(){this.mounted=!1},t.getDerivedStateFromProps=function(e,t){var r,i,o=t.children,s=t.handleExited;return{children:t.firstRender?(r=e,i=s,h(r.children,function(e){return(0,n.cloneElement)(e,{onExited:i.bind(null,e),in:!0,appear:m(e,\"appear\",r),enter:m(e,\"enter\",r),exit:m(e,\"exit\",r)})})):E(e,o,s),firstRender:!1}},i.handleExited=function(e,t){var n=h(this.props.children);e.key in n||(e.props.onExited&&e.props.onExited(t),this.mounted&&this.setState(function(t){var n=u({},t.children);return delete n[e.key],{children:n}}))},i.render=function(){var e=this.props,t=e.component,n=e.childFactory,i=c(e,[\"component\",\"childFactory\"]),o=this.state.contextValue,s=v(this.state.children).map(n);return delete i.appear,delete i.enter,delete i.exit,null===t?r().createElement(f.Provider,{value:o},s):r().createElement(f.Provider,{value:o},r().createElement(t,i,s))},t}(r().Component);x.propTypes={},x.defaultProps={component:\"div\",childFactory:function(e){return e}};var g=x;function b(e,t){return e.replace(new RegExp(\"(^|\\\\s)\"+t+\"(?:\\\\s|$)\",\"g\"),\"$1\").replace(/\\s+/g,\" \").replace(/^\\s*|\\s*$/g,\"\")}var y=i(\"NUjG\"),N=i.n(y),C=!1,O=function(e){return e.scrollTop},S=\"unmounted\",A=\"exited\",T=\"entering\",j=\"entered\",P=\"exiting\",k=function(e){function t(t,n){var r;r=e.call(this,t,n)||this;var i,o=n&&!n.isMounting?t.enter:t.appear;return r.appearStatus=null,t.in?o?(i=A,r.appearStatus=T):i=j:i=t.unmountOnExit||t.mountOnEnter?S:A,r.state={status:i},r.nextCallback=null,r}d(t,e),t.getDerivedStateFromProps=function(e,t){return e.in&&t.status===S?{status:A}:null};var n=t.prototype;return n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(e){var t=null;if(e!==this.props){var n=this.state.status;this.props.in?n!==T&&n!==j&&(t=T):n!==T&&n!==j||(t=P)}this.updateStatus(!1,t)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var e,t,n,r=this.props.timeout;return e=t=n=r,null!=r&&\"number\"!=typeof r&&(e=r.exit,t=r.enter,n=void 0!==r.appear?r.appear:t),{exit:e,enter:t,appear:n}},n.updateStatus=function(e,t){if(void 0===e&&(e=!1),null!==t)if(this.cancelNextCallback(),t===T){if(this.props.unmountOnExit||this.props.mountOnEnter){var n=this.props.nodeRef?this.props.nodeRef.current:N().findDOMNode(this);n&&O(n)}this.performEnter(e)}else this.performExit();else this.props.unmountOnExit&&this.state.status===A&&this.setState({status:S})},n.performEnter=function(e){var t=this,n=this.props.enter,r=this.context?this.context.isMounting:e,i=this.props.nodeRef?[r]:[N().findDOMNode(this),r],o=i[0],s=i[1],a=this.getTimeouts(),l=r?a.appear:a.enter;!e&&!n||C?this.safeSetState({status:j},function(){t.props.onEntered(o)}):(this.props.onEnter(o,s),this.safeSetState({status:T},function(){t.props.onEntering(o,s),t.onTransitionEnd(l,function(){t.safeSetState({status:j},function(){t.props.onEntered(o,s)})})}))},n.performExit=function(){var e=this,t=this.props.exit,n=this.getTimeouts(),r=this.props.nodeRef?void 0:N().findDOMNode(this);t&&!C?(this.props.onExit(r),this.safeSetState({status:P},function(){e.props.onExiting(r),e.onTransitionEnd(n.exit,function(){e.safeSetState({status:A},function(){e.props.onExited(r)})})})):this.safeSetState({status:A},function(){e.props.onExited(r)})},n.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},n.setNextCallback=function(e){var t=this,n=!0;return this.nextCallback=function(r){n&&(n=!1,t.nextCallback=null,e(r))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},n.onTransitionEnd=function(e,t){this.setNextCallback(t);var n=this.props.nodeRef?this.props.nodeRef.current:N().findDOMNode(this),r=null==e&&!this.props.addEndListener;if(n&&!r){if(this.props.addEndListener){var i=this.props.nodeRef?[this.nextCallback]:[n,this.nextCallback],o=i[0],s=i[1];this.props.addEndListener(o,s)}null!=e&&setTimeout(this.nextCallback,e)}else setTimeout(this.nextCallback,0)},n.render=function(){var e=this.state.status;if(e===S)return null;var t=this.props,n=t.children,i=(t.in,t.mountOnEnter,t.unmountOnExit,t.appear,t.enter,t.exit,t.timeout,t.addEndListener,t.onEnter,t.onEntering,t.onEntered,t.onExit,t.onExiting,t.onExited,t.nodeRef,c(t,[\"children\",\"in\",\"mountOnEnter\",\"unmountOnExit\",\"appear\",\"enter\",\"exit\",\"timeout\",\"addEndListener\",\"onEnter\",\"onEntering\",\"onEntered\",\"onExit\",\"onExiting\",\"onExited\",\"nodeRef\"]));return r().createElement(f.Provider,{value:null},\"function\"==typeof n?n(e,i):r().cloneElement(r().Children.only(n),i))},t}(r().Component);function R(){}k.contextType=f,k.propTypes={},k.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:R,onEntering:R,onEntered:R,onExit:R,onExiting:R,onExited:R},k.UNMOUNTED=S,k.EXITED=A,k.ENTERING=T,k.ENTERED=j,k.EXITING=P;var D=k,M=function(e,t){return e&&t&&t.split(\" \").forEach(function(t){return r=t,void((n=e).classList?n.classList.remove(r):\"string\"==typeof n.className?n.className=b(n.className,r):n.setAttribute(\"class\",b(n.className&&n.className.baseVal||\"\",r)));var n,r})},V=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return(t=e.call.apply(e,[this].concat(r))||this).appliedClasses={appear:{},enter:{},exit:{}},t.onEnter=function(e,n){var r=t.resolveArguments(e,n),i=r[0],o=r[1];t.removeClasses(i,\"exit\"),t.addClass(i,o?\"appear\":\"enter\",\"base\"),t.props.onEnter&&t.props.onEnter(e,n)},t.onEntering=function(e,n){var r=t.resolveArguments(e,n),i=r[0],o=r[1]?\"appear\":\"enter\";t.addClass(i,o,\"active\"),t.props.onEntering&&t.props.onEntering(e,n)},t.onEntered=function(e,n){var r=t.resolveArguments(e,n),i=r[0],o=r[1]?\"appear\":\"enter\";t.removeClasses(i,o),t.addClass(i,o,\"done\"),t.props.onEntered&&t.props.onEntered(e,n)},t.onExit=function(e){var n=t.resolveArguments(e)[0];t.removeClasses(n,\"appear\"),t.removeClasses(n,\"enter\"),t.addClass(n,\"exit\",\"base\"),t.props.onExit&&t.props.onExit(e)},t.onExiting=function(e){var n=t.resolveArguments(e)[0];t.addClass(n,\"exit\",\"active\"),t.props.onExiting&&t.props.onExiting(e)},t.onExited=function(e){var n=t.resolveArguments(e)[0];t.removeClasses(n,\"exit\"),t.addClass(n,\"exit\",\"done\"),t.props.onExited&&t.props.onExited(e)},t.resolveArguments=function(e,n){return t.props.nodeRef?[t.props.nodeRef.current,e]:[e,n]},t.getClassNames=function(e){var n=t.props.classNames,r=\"string\"==typeof n,i=r?\"\"+(r&&n?n+\"-\":\"\")+e:n[e];return{baseClassName:i,activeClassName:r?i+\"-active\":n[e+\"Active\"],doneClassName:r?i+\"-done\":n[e+\"Done\"]}},t}d(t,e);var n=t.prototype;return n.addClass=function(e,t,n){var r=this.getClassNames(t)[n+\"ClassName\"],i=this.getClassNames(\"enter\").doneClassName;\"appear\"===t&&\"done\"===n&&i&&(r+=\" \"+i),\"active\"===n&&e&&O(e),r&&(this.appliedClasses[t][n]=r,function(e,t){e&&t&&t.split(\" \").forEach(function(t){return r=t,void((n=e).classList?n.classList.add(r):function(e,t){return e.classList?!!t&&e.classList.contains(t):-1!==(\" \"+(e.className.baseVal||e.className)+\" \").indexOf(\" \"+t+\" \")}(n,r)||(\"string\"==typeof n.className?n.className=n.className+\" \"+r:n.setAttribute(\"class\",(n.className&&n.className.baseVal||\"\")+\" \"+r)));var n,r})}(e,r))},n.removeClasses=function(e,t){var n=this.appliedClasses[t],r=n.base,i=n.active,o=n.done;this.appliedClasses[t]={},r&&M(e,r),i&&M(e,i),o&&M(e,o)},n.render=function(){var e=this.props,t=(e.classNames,c(e,[\"classNames\"]));return r().createElement(D,u({},t,{onEnter:this.onEnter,onEntered:this.onEntered,onEntering:this.onEntering,onExit:this.onExit,onExiting:this.onExiting,onExited:this.onExited}))},t}(r().Component);V.defaultProps={classNames:\"\"},V.propTypes={};var _=V,G=\"sNF2R0\",w=\"hLoBV3\",F=\"Rdf41z\",L=\"ftlZWo\";var U=\"ATGlOr\",I=\"KQSXD0\",X=\"pagQKE\",q=\"_6zG5H\";var J=\"BB49uC\",W=\"j9xE1V\",z=\"ICs7Rs\",B=\"DxijZJ\",H=\"B5kjYq\",K=\"cJijIV\",Q=\"hOxaWM\",Y=\"T9p3fN\";var $=\"qDxYJm\",Z=\"aA9V0P\",ee=\"YPXPAS\",te=\"Xf2zsA\",ne=\"y7Kt7s\",re=\"EeUgMu\",ie=\"fdHrtm\",oe=\"WIFaG4\";const se={CrossFade:e=>{const{reverse:r,...i}=e;return n.createElement(_,t()({},i,{classNames:{enter:G,enterActive:w,exit:F,exitActive:L}}),e.children)},OutIn:e=>{const{reverse:r,...i}=e;return n.createElement(_,t()({},i,{classNames:{enter:U,enterActive:I,exit:X,exitActive:q}}),e.children)},SlideHorizontal:e=>{const{reverse:r,...i}=e;return n.createElement(_,t()({},i,{classNames:r?{enter:H,enterActive:K,exit:Q,exitActive:Y}:{enter:J,enterActive:W,exit:z,exitActive:B}}),e.children)},SlideVertical:e=>{const{reverse:r,...i}=e;return n.createElement(_,t()({},i,{classNames:r?{enter:ne,enterActive:re,exit:ie,exitActive:oe}:{enter:$,enterActive:Z,exit:ee,exitActive:te}}),e.children)}};var ae=e=>{const t=se[e.type],{type:r,...i}=e;return n.createElement(t,i)};const le=\"TRANSITION_GROUP\";var ce=e=>{const{id:r=le,transition:i=\"none\",transitionDuration:o=0,transitionEnabled:s=!0,onTransitionComplete:a=()=>{},onTransitionStarting:c=()=>{},className:u,children:p,shouldUseViewTransition:d}=e,f=n.Children.toArray(p())[0],h=null==f?void 0:f.props.id,m=\"none\"===i,E=\"SlideVertical\"===i,v=\"undefined\"!=typeof window&&\"startViewTransition\"in document&&d;return n.createElement(n.Fragment,null,m?p():v?n.createElement(\"div\",t()({id:r},l(e),{className:u}),p()):n.createElement(g,t()({id:r},l(e),{className:u,childFactory:e=>n.cloneElement(e,{reverse:E})}),n.createElement(ae,{type:i,key:h,timeout:o,onEntered:a,onExiting:c,enter:s,exit:s,unmountOnExit:!0},()=>f)))},ue=\"JsJXaX\",pe=\"AnQkDU\";const de=n.memo(ce,(e,t)=>!t.children().length);var fe=e=>{const{id:r,children:i,className:o,...s}=e;return n.createElement(\"div\",t()({id:r},l(e),{className:a(ue,o)}),n.createElement(de,t()({id:r+\"_\"+le,className:pe},s),i))}}(),o}()});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGh1bmRlcmJvbHQvY29tcG9uZW50L1BhZ2VHcm91cC9QYWdlR3JvdXAuYnVuZGxlLm1pbi5qcyIsIm1hcHBpbmdzIjoiQ0FBQSxTQUEyQ0EsRUFBTUMsR0FDMUIsaUJBQVpDLFNBQTBDLGlCQUFYQyxPQUN4Q0EsT0FBT0QsUUFBVUQsRUFBUUcsUUFBUSxTQUFVQSxRQUFRLGNBQzFCLG1CQUFYQyxRQUF5QkEsT0FBT0MsSUFDOUNELE9BQU8sNENBQTZDLENBQUMsUUFBUyxZQUFhSixHQUNqRCxpQkFBWkMsUUFDZEEsUUFBUSw2Q0FBK0NELEVBQVFHLFFBQVEsU0FBVUEsUUFBUSxjQUV6RkosRUFBSyw2Q0FBK0NDLEVBQVFELEVBQVksTUFBR0EsRUFBZSxTQUMzRixDQVRELENBU29CLG9CQUFUTyxLQUF1QkEsS0FBT0MsS0FBTyxTQUFTQyxFQUFrQ0MsR0FDM0YsTyxrRENWQVAsRUFBT0QsUUFBVU8sQyxnQ0NBakJOLEVBQU9ELFFBQVVRLEMsbUJDQWpCLFNBQVNDLElBQ1AsT0FBT1IsRUFBT0QsUUFBVVMsRUFBV0MsT0FBT0MsT0FBU0QsT0FBT0MsT0FBT0MsT0FBUyxTQUFVQyxHQUNsRixJQUFLLElBQUlDLEVBQUksRUFBR0EsRUFBSUMsVUFBVUMsT0FBUUYsSUFBSyxDQUN6QyxJQUFJRyxFQUFJRixVQUFVRCxHQUNsQixJQUFLLElBQUlJLEtBQUtELEdBQUcsQ0FBRyxHQUFFRSxlQUFlQyxLQUFLSCxFQUFHQyxLQUFPTCxFQUFFSyxHQUFLRCxFQUFFQyxHQUMvRCxDQUNBLE9BQU9MLENBQ1QsRUFBR1osRUFBT0QsUUFBUXFCLFlBQWEsRUFBTXBCLEVBQU9ELFFBQWlCLFFBQUlDLEVBQU9ELFFBQVNTLEVBQVNhLE1BQU0sS0FBTVAsVUFDeEcsQ0FDQWQsRUFBT0QsUUFBVVMsRUFBVVIsRUFBT0QsUUFBUXFCLFlBQWEsRUFBTXBCLEVBQU9ELFFBQWlCLFFBQUlDLEVBQU9ELE8sR0NSNUZ1QixFQUEyQixDQUFDLEVBR2hDLFNBQVNDLEVBQW9CQyxHQUU1QixJQUFJ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QUFJQSxHQUNBeE0sRUFBa0JDLEdBQU0sQ0FDNUJ3SixVQUFXb0IsRUFBVzZDLEdBQXdCakUsS0FFOUNxQyxFQUFBQSxjQUFDd0IsR0FBZ0I1UCxJQUFBLENBQ2Y4TyxHQUFPQSxFQUFFLElBQUlELEdBQ2I5QyxVQUFXaUUsSUFDUEQsR0FFSHpNLEkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L2V4dGVybmFsIHVtZCB7XCJhbWRcIjpcInJlYWN0XCIsXCJjb21tb25qc1wiOlwicmVhY3RcIixcImNvbW1vbmpzMlwiOlwicmVhY3RcIixcInJvb3RcIjpcIlJlYWN0XCJ9Iiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvZXh0ZXJuYWwgdW1kIHtcImFtZFwiOlwicmVhY3RET01cIixcImNvbW1vbmpzXCI6XCJyZWFjdC1kb21cIixcImNvbW1vbmpzMlwiOlwicmVhY3QtZG9tXCIsXCJyb290XCI6XCJSZWFjdERPTVwifSIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHMuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2xzeC9kaXN0L2Nsc3gubWpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vZWRpdG9yLWVsZW1lbnRzLWNvbW1vbi11dGlscy9kaXN0L2VzbS9jb21tb25zL3V0aWxzLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kcy5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zZXRQcm90b3R5cGVPZi5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c0xvb3NlLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvZXNtL1RyYW5zaXRpb25Hcm91cENvbnRleHQuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtdHJhbnNpdGlvbi1ncm91cC9lc20vdXRpbHMvQ2hpbGRNYXBwaW5nLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvZXNtL1RyYW5zaXRpb25Hcm91cC5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL3JlbW92ZUNsYXNzLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvZXNtL2NvbmZpZy5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC10cmFuc2l0aW9uLWdyb3VwL2VzbS91dGlscy9yZWZsb3cuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtdHJhbnNpdGlvbi1ncm91cC9lc20vVHJhbnNpdGlvbi5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC10cmFuc2l0aW9uLWdyb3VwL2VzbS9DU1NUcmFuc2l0aW9uLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9hZGRDbGFzcy5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vaGFzQ2xhc3MuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvY29tcG9uZW50cy9UcmFuc2l0aW9uL3N0eWxlcy9Dcm9zc0ZhZGUuc2NzcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL1RyYW5zaXRpb24vdHJhbnNpdGlvbnMvQ3Jvc3NGYWRlLnRzeCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL1RyYW5zaXRpb24vc3R5bGVzL091dEluLnNjc3MiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvY29tcG9uZW50cy9UcmFuc2l0aW9uL3RyYW5zaXRpb25zL091dEluLnRzeCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL1RyYW5zaXRpb24vc3R5bGVzL1NsaWRlSG9yaXpvbnRhbC5zY3NzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvVHJhbnNpdGlvbi90cmFuc2l0aW9ucy9TbGlkZUhvcml6b250YWwudHN4Iiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvVHJhbnNpdGlvbi9zdHlsZXMvU2xpZGVWZXJ0aWNhbC5zY3NzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvVHJhbnNpdGlvbi9UcmFuc2l0aW9uLnRzeCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL1RyYW5zaXRpb24vdHJhbnNpdGlvbnMvU2xpZGVWZXJ0aWNhbC50c3giLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uL2NvbXBvbmVudHMvUGFnZUdyb3VwL2NvbW1vbnMvY29uc3RhbnRzLnRzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi9jb21wb25lbnRzL1BhZ2VHcm91cC9jb21tb25zL3ZpZXdlci9Hcm91cENvbnRlbnQudHN4Iiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi9jb21wb25lbnRzL1BhZ2VHcm91cC9QYWdlR3JvdXAvdmlld2VyL3N0eWxlL3N0eWxlLnNjc3MiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uL2NvbXBvbmVudHMvUGFnZUdyb3VwL1BhZ2VHcm91cC92aWV3ZXIvUGFnZUdyb3VwLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCJyZWFjdFwiKSwgcmVxdWlyZShcInJlYWN0LWRvbVwiKSk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShcInRodW5kZXJib2x0L2NvbXBvbmVudC9QYWdlR3JvdXAvUGFnZUdyb3VwXCIsIFtcInJlYWN0XCIsIFwicmVhY3RET01cIl0sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1widGh1bmRlcmJvbHQvY29tcG9uZW50L1BhZ2VHcm91cC9QYWdlR3JvdXBcIl0gPSBmYWN0b3J5KHJlcXVpcmUoXCJyZWFjdFwiKSwgcmVxdWlyZShcInJlYWN0LWRvbVwiKSk7XG5cdGVsc2Vcblx0XHRyb290W1widGh1bmRlcmJvbHQvY29tcG9uZW50L1BhZ2VHcm91cC9QYWdlR3JvdXBcIl0gPSBmYWN0b3J5KHJvb3RbXCJSZWFjdFwiXSwgcm9vdFtcIlJlYWN0RE9NXCJdKTtcbn0pKCh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDogdGhpcyksIGZ1bmN0aW9uKF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfWGRmX19fLCBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX05VakdfXykge1xucmV0dXJuICIsIm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9YZGZfX187IiwibW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX05VakdfXzsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHtcbiAgcmV0dXJuIG1vZHVsZS5leHBvcnRzID0gX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAobikge1xuICAgIGZvciAodmFyIGUgPSAxOyBlIDwgYXJndW1lbnRzLmxlbmd0aDsgZSsrKSB7XG4gICAgICB2YXIgdCA9IGFyZ3VtZW50c1tlXTtcbiAgICAgIGZvciAodmFyIHIgaW4gdCkgKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsIHIpICYmIChuW3JdID0gdFtyXSk7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIF9leHRlbmRzLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9leHRlbmRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0ZnVuY3Rpb24oKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG5cdFx0ZnVuY3Rpb24oKSB7IHJldHVybiBtb2R1bGU7IH07XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBkZWZpbml0aW9uKSB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iaiwgcHJvcCkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7IH0iLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsImZ1bmN0aW9uIHIoZSl7dmFyIHQsZixuPVwiXCI7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGV8fFwibnVtYmVyXCI9PXR5cGVvZiBlKW4rPWU7ZWxzZSBpZihcIm9iamVjdFwiPT10eXBlb2YgZSlpZihBcnJheS5pc0FycmF5KGUpKWZvcih0PTA7dDxlLmxlbmd0aDt0KyspZVt0XSYmKGY9cihlW3RdKSkmJihuJiYobis9XCIgXCIpLG4rPWYpO2Vsc2UgZm9yKHQgaW4gZSllW3RdJiYobiYmKG4rPVwiIFwiKSxuKz10KTtyZXR1cm4gbn1leHBvcnQgZnVuY3Rpb24gY2xzeCgpe2Zvcih2YXIgZSx0LGY9MCxuPVwiXCI7Zjxhcmd1bWVudHMubGVuZ3RoOykoZT1hcmd1bWVudHNbZisrXSkmJih0PXIoZSkpJiYobiYmKG4rPVwiIFwiKSxuKz10KTtyZXR1cm4gbn1leHBvcnQgZGVmYXVsdCBjbHN4OyIsImltcG9ydCB7IGtleUNvZGVzIH0gZnJvbSAnLi9hMTF5JztcbmV4cG9ydCBjb25zdCBpc1RoZW1lRm9udCA9ICh2YWx1ZSkgPT4gL15mb250X1xcZCskLy50ZXN0KHZhbHVlKTtcbmV4cG9ydCBjb25zdCBkZWJvdW5jZSA9IChmbiwgbXMgPSAwLCB7IGxlYWRpbmcgPSBmYWxzZSwgdHJhaWxpbmcgPSB0cnVlIH0gPSB7fSkgPT4ge1xuICAgIGxldCB0aW1lb3V0SWQgPSBudWxsO1xuICAgIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBpZiAobGVhZGluZyAmJiB0aW1lb3V0SWQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aW1lb3V0SWQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdHJhaWxpbmcgfHwgIWxlYWRpbmcgfHwgdGltZW91dElkKSB7XG4gICAgICAgICAgICB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodHJhaWxpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgZm4uYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRpbWVvdXRJZCA9IG51bGw7XG4gICAgICAgICAgICB9LCBtcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIGEgc2luZ2xlIGNhbGwgd2l0aCBib3RoIGxlYWRpbmcgYW5kIHRyYWlsaW5nIChzZWUgdGVzdHMpXG4gICAgICAgICAgICB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aW1lb3V0SWQgPSBudWxsO1xuICAgICAgICAgICAgfSwgbXMpO1xuICAgICAgICB9XG4gICAgfTtcbn07XG5leHBvcnQgY29uc3QgdGhyb3R0bGUgPSAoZnVuYywgbXMgPSAwKSA9PiB7XG4gICAgbGV0IGlzVGhyb3R0bGVkID0gZmFsc2UsIHNhdmVkQXJncztcbiAgICBmdW5jdGlvbiB3cmFwcGVyKC4uLmFyZ3MpIHtcbiAgICAgICAgaWYgKGlzVGhyb3R0bGVkKSB7XG4gICAgICAgICAgICBzYXZlZEFyZ3MgPSBhcmdzO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIGlzVGhyb3R0bGVkID0gdHJ1ZTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpc1Rocm90dGxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHNhdmVkQXJncykge1xuICAgICAgICAgICAgICAgIHdyYXBwZXIuYXBwbHkodGhpcywgc2F2ZWRBcmdzKTtcbiAgICAgICAgICAgICAgICBzYXZlZEFyZ3MgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBtcyk7XG4gICAgfVxuICAgIHJldHVybiB3cmFwcGVyO1xufTtcbmV4cG9ydCBjb25zdCBpc0Jyb3dzZXIgPSAoKSA9PiB0eXBlb2Ygd2luZG93ICE9PSBgdW5kZWZpbmVkYDtcbmV4cG9ydCBjb25zdCBwZXJmb3JtT25FbnRlciA9IChmbikgPT4ge1xuICAgIHJldHVybiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IGtleUNvZGVzLmVudGVyKSB7XG4gICAgICAgICAgICBmbihldmVudCk7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbmV4cG9ydCBjb25zdCBpc0NTU01hc2tTdXBwb3J0ZWQgPSAoKSA9PiB7XG4gICAgaWYgKCFpc0Jyb3dzZXIoKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuICh3aW5kb3cuQ1NTICYmXG4gICAgICAgIHdpbmRvdy5DU1Muc3VwcG9ydHMoJyhtYXNrLXJlcGVhdDogbm8tcmVwZWF0KSBvciAoLXdlYmtpdC1tYXNrLXJlcGVhdDogbm8tcmVwZWF0KScpKTtcbn07XG5leHBvcnQgY29uc3QgaXNFbXB0eU9iamVjdCA9IChvYmopID0+ICFvYmogfHwgKE9iamVjdC5rZXlzKG9iaikubGVuZ3RoID09PSAwICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0KTtcbmV4cG9ydCBjb25zdCBpc1NhZmFyaSA9ICgpID0+IC9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QobmF2aWdhdG9yPy51c2VyQWdlbnQpO1xuLy8gZXZlbiB0aG91Z2ggbmF2aWdhdG9yLnBsYXRmb3JtIGlzIGRlcHJlY2F0ZWQsIGl0J3Mgc3RpbGwgdGhlIG1vc3QgcmVsaWFibGUgd2F5IHRvIGRldGVjdCB0aGUgT1Ncbi8vIHN1Z2dlc3RlZCBieSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvTmF2aWdhdG9yL3BsYXRmb3JtXG4vLyB0aGlzIGZ1bmN0aW9uIGlzIG5vdCB3b3JraW5nIGluIFNTUiBlbnZpcm9ubWVudFxuLy8gc2hvdWxkIGJlIHVzZWQgb25seSBpbiB0aGUgYnJvd3NlciBlbnZpcm9ubWVudFxuZXhwb3J0IGNvbnN0IGlzTWFjID0gKCkgPT4gbmF2aWdhdG9yPy5wbGF0Zm9ybT8udG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCdtYWMnKTtcbmV4cG9ydCBjb25zdCBnZXREYXRhQXR0cmlidXRlcyA9IChwcm9wcykgPT4ge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhwcm9wcykucmVkdWNlKChhY2MsIFtrZXksIHZhbF0pID0+IHtcbiAgICAgICAgaWYgKGtleS5pbmNsdWRlcygnZGF0YS0nKSkge1xuICAgICAgICAgICAgYWNjW2tleV0gPSB2YWw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIHBpY2soc291cmNlLCBrZXlzKSB7XG4gICAgcmV0dXJuIGtleXMucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgICBpZiAoIXNvdXJjZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICBba2V5XTogc291cmNlW2tleV0sXG4gICAgICAgIH07XG4gICAgfSwge30pO1xufVxuZXhwb3J0IGNvbnN0IGlkVG9Db21wUmVmID0gKGlkKSA9PiAoeyBpZCwgdHlwZTogJ0RFU0tUT1AnIH0pO1xuZXhwb3J0IGNvbnN0IGlzV2l4RG9tYWluID0gKHVybCkgPT4gWydlZGl0b3J4LmlvJywgJ3dpeHNpdGUuY29tJywgJ3dpeC5jb20nLCAnd2l4c3R1ZGlvLmlvJ10uc29tZShkb21haW4gPT4gdXJsLmluY2x1ZGVzKGRvbWFpbikpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbHMuanMubWFwIiwiZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UociwgZSkge1xuICBpZiAobnVsbCA9PSByKSByZXR1cm4ge307XG4gIHZhciB0ID0ge307XG4gIGZvciAodmFyIG4gaW4gcikgaWYgKHt9Lmhhc093blByb3BlcnR5LmNhbGwociwgbikpIHtcbiAgICBpZiAoLTEgIT09IGUuaW5kZXhPZihuKSkgY29udGludWU7XG4gICAgdFtuXSA9IHJbbl07XG4gIH1cbiAgcmV0dXJuIHQ7XG59XG5leHBvcnQgeyBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7XG4gIHJldHVybiBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uIChuKSB7XG4gICAgZm9yICh2YXIgZSA9IDE7IGUgPCBhcmd1bWVudHMubGVuZ3RoOyBlKyspIHtcbiAgICAgIHZhciB0ID0gYXJndW1lbnRzW2VdO1xuICAgICAgZm9yICh2YXIgciBpbiB0KSAoe30pLmhhc093blByb3BlcnR5LmNhbGwodCwgcikgJiYgKG5bcl0gPSB0W3JdKTtcbiAgICB9XG4gICAgcmV0dXJuIG47XG4gIH0sIF9leHRlbmRzLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG59XG5leHBvcnQgeyBfZXh0ZW5kcyBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKHQsIGUpIHtcbiAgcmV0dXJuIF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiAodCwgZSkge1xuICAgIHJldHVybiB0Ll9fcHJvdG9fXyA9IGUsIHQ7XG4gIH0sIF9zZXRQcm90b3R5cGVPZih0LCBlKTtcbn1cbmV4cG9ydCB7IF9zZXRQcm90b3R5cGVPZiBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IHNldFByb3RvdHlwZU9mIGZyb20gXCIuL3NldFByb3RvdHlwZU9mLmpzXCI7XG5mdW5jdGlvbiBfaW5oZXJpdHNMb29zZSh0LCBvKSB7XG4gIHQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShvLnByb3RvdHlwZSksIHQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gdCwgc2V0UHJvdG90eXBlT2YodCwgbyk7XG59XG5leHBvcnQgeyBfaW5oZXJpdHNMb29zZSBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmV4cG9ydCBkZWZhdWx0IFJlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7IiwiaW1wb3J0IHsgQ2hpbGRyZW4sIGNsb25lRWxlbWVudCwgaXNWYWxpZEVsZW1lbnQgfSBmcm9tICdyZWFjdCc7XG4vKipcbiAqIEdpdmVuIGB0aGlzLnByb3BzLmNoaWxkcmVuYCwgcmV0dXJuIGFuIG9iamVjdCBtYXBwaW5nIGtleSB0byBjaGlsZC5cbiAqXG4gKiBAcGFyYW0geyp9IGNoaWxkcmVuIGB0aGlzLnByb3BzLmNoaWxkcmVuYFxuICogQHJldHVybiB7b2JqZWN0fSBNYXBwaW5nIG9mIGtleSB0byBjaGlsZFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGlsZE1hcHBpbmcoY2hpbGRyZW4sIG1hcEZuKSB7XG4gIHZhciBtYXBwZXIgPSBmdW5jdGlvbiBtYXBwZXIoY2hpbGQpIHtcbiAgICByZXR1cm4gbWFwRm4gJiYgaXNWYWxpZEVsZW1lbnQoY2hpbGQpID8gbWFwRm4oY2hpbGQpIDogY2hpbGQ7XG4gIH07XG5cbiAgdmFyIHJlc3VsdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGlmIChjaGlsZHJlbikgQ2hpbGRyZW4ubWFwKGNoaWxkcmVuLCBmdW5jdGlvbiAoYykge1xuICAgIHJldHVybiBjO1xuICB9KS5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIC8vIHJ1biB0aGUgbWFwIGZ1bmN0aW9uIGhlcmUgaW5zdGVhZCBzbyB0aGF0IHRoZSBrZXkgaXMgdGhlIGNvbXB1dGVkIG9uZVxuICAgIHJlc3VsdFtjaGlsZC5rZXldID0gbWFwcGVyKGNoaWxkKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG4vKipcbiAqIFdoZW4geW91J3JlIGFkZGluZyBvciByZW1vdmluZyBjaGlsZHJlbiBzb21lIG1heSBiZSBhZGRlZCBvciByZW1vdmVkIGluIHRoZVxuICogc2FtZSByZW5kZXIgcGFzcy4gV2Ugd2FudCB0byBzaG93ICpib3RoKiBzaW5jZSB3ZSB3YW50IHRvIHNpbXVsdGFuZW91c2x5XG4gKiBhbmltYXRlIGVsZW1lbnRzIGluIGFuZCBvdXQuIFRoaXMgZnVuY3Rpb24gdGFrZXMgYSBwcmV2aW91cyBzZXQgb2Yga2V5c1xuICogYW5kIGEgbmV3IHNldCBvZiBrZXlzIGFuZCBtZXJnZXMgdGhlbSB3aXRoIGl0cyBiZXN0IGd1ZXNzIG9mIHRoZSBjb3JyZWN0XG4gKiBvcmRlcmluZy4gSW4gdGhlIGZ1dHVyZSB3ZSBtYXkgZXhwb3NlIHNvbWUgb2YgdGhlIHV0aWxpdGllcyBpblxuICogUmVhY3RNdWx0aUNoaWxkIHRvIG1ha2UgdGhpcyBlYXN5LCBidXQgZm9yIG5vdyBSZWFjdCBpdHNlbGYgZG9lcyBub3RcbiAqIGRpcmVjdGx5IGhhdmUgdGhpcyBjb25jZXB0IG9mIHRoZSB1bmlvbiBvZiBwcmV2Q2hpbGRyZW4gYW5kIG5leHRDaGlsZHJlblxuICogc28gd2UgaW1wbGVtZW50IGl0IGhlcmUuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHByZXYgcHJldiBjaGlsZHJlbiBhcyByZXR1cm5lZCBmcm9tXG4gKiBgUmVhY3RUcmFuc2l0aW9uQ2hpbGRNYXBwaW5nLmdldENoaWxkTWFwcGluZygpYC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0IG5leHQgY2hpbGRyZW4gYXMgcmV0dXJuZWQgZnJvbVxuICogYFJlYWN0VHJhbnNpdGlvbkNoaWxkTWFwcGluZy5nZXRDaGlsZE1hcHBpbmcoKWAuXG4gKiBAcmV0dXJuIHtvYmplY3R9IGEga2V5IHNldCB0aGF0IGNvbnRhaW5zIGFsbCBrZXlzIGluIGBwcmV2YCBhbmQgYWxsIGtleXNcbiAqIGluIGBuZXh0YCBpbiBhIHJlYXNvbmFibGUgb3JkZXIuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlQ2hpbGRNYXBwaW5ncyhwcmV2LCBuZXh0KSB7XG4gIHByZXYgPSBwcmV2IHx8IHt9O1xuICBuZXh0ID0gbmV4dCB8fCB7fTtcblxuICBmdW5jdGlvbiBnZXRWYWx1ZUZvcktleShrZXkpIHtcbiAgICByZXR1cm4ga2V5IGluIG5leHQgPyBuZXh0W2tleV0gOiBwcmV2W2tleV07XG4gIH0gLy8gRm9yIGVhY2gga2V5IG9mIGBuZXh0YCwgdGhlIGxpc3Qgb2Yga2V5cyB0byBpbnNlcnQgYmVmb3JlIHRoYXQga2V5IGluXG4gIC8vIHRoZSBjb21iaW5lZCBsaXN0XG5cblxuICB2YXIgbmV4dEtleXNQZW5kaW5nID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdmFyIHBlbmRpbmdLZXlzID0gW107XG5cbiAgZm9yICh2YXIgcHJldktleSBpbiBwcmV2KSB7XG4gICAgaWYgKHByZXZLZXkgaW4gbmV4dCkge1xuICAgICAgaWYgKHBlbmRpbmdLZXlzLmxlbmd0aCkge1xuICAgICAgICBuZXh0S2V5c1BlbmRpbmdbcHJldktleV0gPSBwZW5kaW5nS2V5cztcbiAgICAgICAgcGVuZGluZ0tleXMgPSBbXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVuZGluZ0tleXMucHVzaChwcmV2S2V5KTtcbiAgICB9XG4gIH1cblxuICB2YXIgaTtcbiAgdmFyIGNoaWxkTWFwcGluZyA9IHt9O1xuXG4gIGZvciAodmFyIG5leHRLZXkgaW4gbmV4dCkge1xuICAgIGlmIChuZXh0S2V5c1BlbmRpbmdbbmV4dEtleV0pIHtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBuZXh0S2V5c1BlbmRpbmdbbmV4dEtleV0ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHBlbmRpbmdOZXh0S2V5ID0gbmV4dEtleXNQZW5kaW5nW25leHRLZXldW2ldO1xuICAgICAgICBjaGlsZE1hcHBpbmdbbmV4dEtleXNQZW5kaW5nW25leHRLZXldW2ldXSA9IGdldFZhbHVlRm9yS2V5KHBlbmRpbmdOZXh0S2V5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjaGlsZE1hcHBpbmdbbmV4dEtleV0gPSBnZXRWYWx1ZUZvcktleShuZXh0S2V5KTtcbiAgfSAvLyBGaW5hbGx5LCBhZGQgdGhlIGtleXMgd2hpY2ggZGlkbid0IGFwcGVhciBiZWZvcmUgYW55IGtleSBpbiBgbmV4dGBcblxuXG4gIGZvciAoaSA9IDA7IGkgPCBwZW5kaW5nS2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGNoaWxkTWFwcGluZ1twZW5kaW5nS2V5c1tpXV0gPSBnZXRWYWx1ZUZvcktleShwZW5kaW5nS2V5c1tpXSk7XG4gIH1cblxuICByZXR1cm4gY2hpbGRNYXBwaW5nO1xufVxuXG5mdW5jdGlvbiBnZXRQcm9wKGNoaWxkLCBwcm9wLCBwcm9wcykge1xuICByZXR1cm4gcHJvcHNbcHJvcF0gIT0gbnVsbCA/IHByb3BzW3Byb3BdIDogY2hpbGQucHJvcHNbcHJvcF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbml0aWFsQ2hpbGRNYXBwaW5nKHByb3BzLCBvbkV4aXRlZCkge1xuICByZXR1cm4gZ2V0Q2hpbGRNYXBwaW5nKHByb3BzLmNoaWxkcmVuLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICByZXR1cm4gY2xvbmVFbGVtZW50KGNoaWxkLCB7XG4gICAgICBvbkV4aXRlZDogb25FeGl0ZWQuYmluZChudWxsLCBjaGlsZCksXG4gICAgICBpbjogdHJ1ZSxcbiAgICAgIGFwcGVhcjogZ2V0UHJvcChjaGlsZCwgJ2FwcGVhcicsIHByb3BzKSxcbiAgICAgIGVudGVyOiBnZXRQcm9wKGNoaWxkLCAnZW50ZXInLCBwcm9wcyksXG4gICAgICBleGl0OiBnZXRQcm9wKGNoaWxkLCAnZXhpdCcsIHByb3BzKVxuICAgIH0pO1xuICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXh0Q2hpbGRNYXBwaW5nKG5leHRQcm9wcywgcHJldkNoaWxkTWFwcGluZywgb25FeGl0ZWQpIHtcbiAgdmFyIG5leHRDaGlsZE1hcHBpbmcgPSBnZXRDaGlsZE1hcHBpbmcobmV4dFByb3BzLmNoaWxkcmVuKTtcbiAgdmFyIGNoaWxkcmVuID0gbWVyZ2VDaGlsZE1hcHBpbmdzKHByZXZDaGlsZE1hcHBpbmcsIG5leHRDaGlsZE1hcHBpbmcpO1xuICBPYmplY3Qua2V5cyhjaGlsZHJlbikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIGNoaWxkID0gY2hpbGRyZW5ba2V5XTtcbiAgICBpZiAoIWlzVmFsaWRFbGVtZW50KGNoaWxkKSkgcmV0dXJuO1xuICAgIHZhciBoYXNQcmV2ID0gKGtleSBpbiBwcmV2Q2hpbGRNYXBwaW5nKTtcbiAgICB2YXIgaGFzTmV4dCA9IChrZXkgaW4gbmV4dENoaWxkTWFwcGluZyk7XG4gICAgdmFyIHByZXZDaGlsZCA9IHByZXZDaGlsZE1hcHBpbmdba2V5XTtcbiAgICB2YXIgaXNMZWF2aW5nID0gaXNWYWxpZEVsZW1lbnQocHJldkNoaWxkKSAmJiAhcHJldkNoaWxkLnByb3BzLmluOyAvLyBpdGVtIGlzIG5ldyAoZW50ZXJpbmcpXG5cbiAgICBpZiAoaGFzTmV4dCAmJiAoIWhhc1ByZXYgfHwgaXNMZWF2aW5nKSkge1xuICAgICAgLy8gY29uc29sZS5sb2coJ2VudGVyaW5nJywga2V5KVxuICAgICAgY2hpbGRyZW5ba2V5XSA9IGNsb25lRWxlbWVudChjaGlsZCwge1xuICAgICAgICBvbkV4aXRlZDogb25FeGl0ZWQuYmluZChudWxsLCBjaGlsZCksXG4gICAgICAgIGluOiB0cnVlLFxuICAgICAgICBleGl0OiBnZXRQcm9wKGNoaWxkLCAnZXhpdCcsIG5leHRQcm9wcyksXG4gICAgICAgIGVudGVyOiBnZXRQcm9wKGNoaWxkLCAnZW50ZXInLCBuZXh0UHJvcHMpXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKCFoYXNOZXh0ICYmIGhhc1ByZXYgJiYgIWlzTGVhdmluZykge1xuICAgICAgLy8gaXRlbSBpcyBvbGQgKGV4aXRpbmcpXG4gICAgICAvLyBjb25zb2xlLmxvZygnbGVhdmluZycsIGtleSlcbiAgICAgIGNoaWxkcmVuW2tleV0gPSBjbG9uZUVsZW1lbnQoY2hpbGQsIHtcbiAgICAgICAgaW46IGZhbHNlXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKGhhc05leHQgJiYgaGFzUHJldiAmJiBpc1ZhbGlkRWxlbWVudChwcmV2Q2hpbGQpKSB7XG4gICAgICAvLyBpdGVtIGhhc24ndCBjaGFuZ2VkIHRyYW5zaXRpb24gc3RhdGVzXG4gICAgICAvLyBjb3B5IG92ZXIgdGhlIGxhc3QgdHJhbnNpdGlvbiBwcm9wcztcbiAgICAgIC8vIGNvbnNvbGUubG9nKCd1bmNoYW5nZWQnLCBrZXkpXG4gICAgICBjaGlsZHJlbltrZXldID0gY2xvbmVFbGVtZW50KGNoaWxkLCB7XG4gICAgICAgIG9uRXhpdGVkOiBvbkV4aXRlZC5iaW5kKG51bGwsIGNoaWxkKSxcbiAgICAgICAgaW46IHByZXZDaGlsZC5wcm9wcy5pbixcbiAgICAgICAgZXhpdDogZ2V0UHJvcChjaGlsZCwgJ2V4aXQnLCBuZXh0UHJvcHMpLFxuICAgICAgICBlbnRlcjogZ2V0UHJvcChjaGlsZCwgJ2VudGVyJywgbmV4dFByb3BzKVxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGNoaWxkcmVuO1xufSIsImltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzTG9vc2VcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFRyYW5zaXRpb25Hcm91cENvbnRleHQgZnJvbSAnLi9UcmFuc2l0aW9uR3JvdXBDb250ZXh0JztcbmltcG9ydCB7IGdldENoaWxkTWFwcGluZywgZ2V0SW5pdGlhbENoaWxkTWFwcGluZywgZ2V0TmV4dENoaWxkTWFwcGluZyB9IGZyb20gJy4vdXRpbHMvQ2hpbGRNYXBwaW5nJztcblxudmFyIHZhbHVlcyA9IE9iamVjdC52YWx1ZXMgfHwgZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gT2JqZWN0LmtleXMob2JqKS5tYXAoZnVuY3Rpb24gKGspIHtcbiAgICByZXR1cm4gb2JqW2tdO1xuICB9KTtcbn07XG5cbnZhciBkZWZhdWx0UHJvcHMgPSB7XG4gIGNvbXBvbmVudDogJ2RpdicsXG4gIGNoaWxkRmFjdG9yeTogZnVuY3Rpb24gY2hpbGRGYWN0b3J5KGNoaWxkKSB7XG4gICAgcmV0dXJuIGNoaWxkO1xuICB9XG59O1xuLyoqXG4gKiBUaGUgYDxUcmFuc2l0aW9uR3JvdXA+YCBjb21wb25lbnQgbWFuYWdlcyBhIHNldCBvZiB0cmFuc2l0aW9uIGNvbXBvbmVudHNcbiAqIChgPFRyYW5zaXRpb24+YCBhbmQgYDxDU1NUcmFuc2l0aW9uPmApIGluIGEgbGlzdC4gTGlrZSB3aXRoIHRoZSB0cmFuc2l0aW9uXG4gKiBjb21wb25lbnRzLCBgPFRyYW5zaXRpb25Hcm91cD5gIGlzIGEgc3RhdGUgbWFjaGluZSBmb3IgbWFuYWdpbmcgdGhlIG1vdW50aW5nXG4gKiBhbmQgdW5tb3VudGluZyBvZiBjb21wb25lbnRzIG92ZXIgdGltZS5cbiAqXG4gKiBDb25zaWRlciB0aGUgZXhhbXBsZSBiZWxvdy4gQXMgaXRlbXMgYXJlIHJlbW92ZWQgb3IgYWRkZWQgdG8gdGhlIFRvZG9MaXN0IHRoZVxuICogYGluYCBwcm9wIGlzIHRvZ2dsZWQgYXV0b21hdGljYWxseSBieSB0aGUgYDxUcmFuc2l0aW9uR3JvdXA+YC5cbiAqXG4gKiBOb3RlIHRoYXQgYDxUcmFuc2l0aW9uR3JvdXA+YCAgZG9lcyBub3QgZGVmaW5lIGFueSBhbmltYXRpb24gYmVoYXZpb3IhXG4gKiBFeGFjdGx5IF9ob3dfIGEgbGlzdCBpdGVtIGFuaW1hdGVzIGlzIHVwIHRvIHRoZSBpbmRpdmlkdWFsIHRyYW5zaXRpb25cbiAqIGNvbXBvbmVudC4gVGhpcyBtZWFucyB5b3UgY2FuIG1peCBhbmQgbWF0Y2ggYW5pbWF0aW9ucyBhY3Jvc3MgZGlmZmVyZW50IGxpc3RcbiAqIGl0ZW1zLlxuICovXG5cbnZhciBUcmFuc2l0aW9uR3JvdXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzTG9vc2UoVHJhbnNpdGlvbkdyb3VwLCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICBmdW5jdGlvbiBUcmFuc2l0aW9uR3JvdXAocHJvcHMsIGNvbnRleHQpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfdGhpcyA9IF9SZWFjdCRDb21wb25lbnQuY2FsbCh0aGlzLCBwcm9wcywgY29udGV4dCkgfHwgdGhpcztcblxuICAgIHZhciBoYW5kbGVFeGl0ZWQgPSBfdGhpcy5oYW5kbGVFeGl0ZWQuYmluZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSk7IC8vIEluaXRpYWwgY2hpbGRyZW4gc2hvdWxkIGFsbCBiZSBlbnRlcmluZywgZGVwZW5kZW50IG9uIGFwcGVhclxuXG5cbiAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGNvbnRleHRWYWx1ZToge1xuICAgICAgICBpc01vdW50aW5nOiB0cnVlXG4gICAgICB9LFxuICAgICAgaGFuZGxlRXhpdGVkOiBoYW5kbGVFeGl0ZWQsXG4gICAgICBmaXJzdFJlbmRlcjogdHJ1ZVxuICAgIH07XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgdmFyIF9wcm90byA9IFRyYW5zaXRpb25Hcm91cC5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLmNvbXBvbmVudERpZE1vdW50ID0gZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgdGhpcy5tb3VudGVkID0gdHJ1ZTtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGNvbnRleHRWYWx1ZToge1xuICAgICAgICBpc01vdW50aW5nOiBmYWxzZVxuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIF9wcm90by5jb21wb25lbnRXaWxsVW5tb3VudCA9IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIHRoaXMubW91bnRlZCA9IGZhbHNlO1xuICB9O1xuXG4gIFRyYW5zaXRpb25Hcm91cC5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgPSBmdW5jdGlvbiBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMobmV4dFByb3BzLCBfcmVmKSB7XG4gICAgdmFyIHByZXZDaGlsZE1hcHBpbmcgPSBfcmVmLmNoaWxkcmVuLFxuICAgICAgICBoYW5kbGVFeGl0ZWQgPSBfcmVmLmhhbmRsZUV4aXRlZCxcbiAgICAgICAgZmlyc3RSZW5kZXIgPSBfcmVmLmZpcnN0UmVuZGVyO1xuICAgIHJldHVybiB7XG4gICAgICBjaGlsZHJlbjogZmlyc3RSZW5kZXIgPyBnZXRJbml0aWFsQ2hpbGRNYXBwaW5nKG5leHRQcm9wcywgaGFuZGxlRXhpdGVkKSA6IGdldE5leHRDaGlsZE1hcHBpbmcobmV4dFByb3BzLCBwcmV2Q2hpbGRNYXBwaW5nLCBoYW5kbGVFeGl0ZWQpLFxuICAgICAgZmlyc3RSZW5kZXI6IGZhbHNlXG4gICAgfTtcbiAgfSAvLyBub2RlIGlzIGB1bmRlZmluZWRgIHdoZW4gdXNlciBwcm92aWRlZCBgbm9kZVJlZmAgcHJvcFxuICA7XG5cbiAgX3Byb3RvLmhhbmRsZUV4aXRlZCA9IGZ1bmN0aW9uIGhhbmRsZUV4aXRlZChjaGlsZCwgbm9kZSkge1xuICAgIHZhciBjdXJyZW50Q2hpbGRNYXBwaW5nID0gZ2V0Q2hpbGRNYXBwaW5nKHRoaXMucHJvcHMuY2hpbGRyZW4pO1xuICAgIGlmIChjaGlsZC5rZXkgaW4gY3VycmVudENoaWxkTWFwcGluZykgcmV0dXJuO1xuXG4gICAgaWYgKGNoaWxkLnByb3BzLm9uRXhpdGVkKSB7XG4gICAgICBjaGlsZC5wcm9wcy5vbkV4aXRlZChub2RlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5tb3VudGVkKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSBfZXh0ZW5kcyh7fSwgc3RhdGUuY2hpbGRyZW4pO1xuXG4gICAgICAgIGRlbGV0ZSBjaGlsZHJlbltjaGlsZC5rZXldO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIF9wcm90by5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgdmFyIF90aGlzJHByb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgQ29tcG9uZW50ID0gX3RoaXMkcHJvcHMuY29tcG9uZW50LFxuICAgICAgICBjaGlsZEZhY3RvcnkgPSBfdGhpcyRwcm9wcy5jaGlsZEZhY3RvcnksXG4gICAgICAgIHByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX3RoaXMkcHJvcHMsIFtcImNvbXBvbmVudFwiLCBcImNoaWxkRmFjdG9yeVwiXSk7XG5cbiAgICB2YXIgY29udGV4dFZhbHVlID0gdGhpcy5zdGF0ZS5jb250ZXh0VmFsdWU7XG4gICAgdmFyIGNoaWxkcmVuID0gdmFsdWVzKHRoaXMuc3RhdGUuY2hpbGRyZW4pLm1hcChjaGlsZEZhY3RvcnkpO1xuICAgIGRlbGV0ZSBwcm9wcy5hcHBlYXI7XG4gICAgZGVsZXRlIHByb3BzLmVudGVyO1xuICAgIGRlbGV0ZSBwcm9wcy5leGl0O1xuXG4gICAgaWYgKENvbXBvbmVudCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFRyYW5zaXRpb25Hcm91cENvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgICAgdmFsdWU6IGNvbnRleHRWYWx1ZVxuICAgICAgfSwgY2hpbGRyZW4pO1xuICAgIH1cblxuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChUcmFuc2l0aW9uR3JvdXBDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgICB2YWx1ZTogY29udGV4dFZhbHVlXG4gICAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQ29tcG9uZW50LCBwcm9wcywgY2hpbGRyZW4pKTtcbiAgfTtcblxuICByZXR1cm4gVHJhbnNpdGlvbkdyb3VwO1xufShSZWFjdC5Db21wb25lbnQpO1xuXG5UcmFuc2l0aW9uR3JvdXAucHJvcFR5cGVzID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8ge1xuICAvKipcbiAgICogYDxUcmFuc2l0aW9uR3JvdXA+YCByZW5kZXJzIGEgYDxkaXY+YCBieSBkZWZhdWx0LiBZb3UgY2FuIGNoYW5nZSB0aGlzXG4gICAqIGJlaGF2aW9yIGJ5IHByb3ZpZGluZyBhIGBjb21wb25lbnRgIHByb3AuXG4gICAqIElmIHlvdSB1c2UgUmVhY3QgdjE2KyBhbmQgd291bGQgbGlrZSB0byBhdm9pZCBhIHdyYXBwaW5nIGA8ZGl2PmAgZWxlbWVudFxuICAgKiB5b3UgY2FuIHBhc3MgaW4gYGNvbXBvbmVudD17bnVsbH1gLiBUaGlzIGlzIHVzZWZ1bCBpZiB0aGUgd3JhcHBpbmcgZGl2XG4gICAqIGJvcmtzIHlvdXIgY3NzIHN0eWxlcy5cbiAgICovXG4gIGNvbXBvbmVudDogUHJvcFR5cGVzLmFueSxcblxuICAvKipcbiAgICogQSBzZXQgb2YgYDxUcmFuc2l0aW9uPmAgY29tcG9uZW50cywgdGhhdCBhcmUgdG9nZ2xlZCBgaW5gIGFuZCBvdXQgYXMgdGhleVxuICAgKiBsZWF2ZS4gdGhlIGA8VHJhbnNpdGlvbkdyb3VwPmAgd2lsbCBpbmplY3Qgc3BlY2lmaWMgdHJhbnNpdGlvbiBwcm9wcywgc29cbiAgICogcmVtZW1iZXIgdG8gc3ByZWFkIHRoZW0gdGhyb3VnaCBpZiB5b3UgYXJlIHdyYXBwaW5nIHRoZSBgPFRyYW5zaXRpb24+YCBhc1xuICAgKiB3aXRoIG91ciBgPEZhZGU+YCBleGFtcGxlLlxuICAgKlxuICAgKiBXaGlsZSB0aGlzIGNvbXBvbmVudCBpcyBtZWFudCBmb3IgbXVsdGlwbGUgYFRyYW5zaXRpb25gIG9yIGBDU1NUcmFuc2l0aW9uYFxuICAgKiBjaGlsZHJlbiwgc29tZXRpbWVzIHlvdSBtYXkgd2FudCB0byBoYXZlIGEgc2luZ2xlIHRyYW5zaXRpb24gY2hpbGQgd2l0aFxuICAgKiBjb250ZW50IHRoYXQgeW91IHdhbnQgdG8gYmUgdHJhbnNpdGlvbmVkIG91dCBhbmQgaW4gd2hlbiB5b3UgY2hhbmdlIGl0XG4gICAqIChlLmcuIHJvdXRlcywgaW1hZ2VzIGV0Yy4pIEluIHRoYXQgY2FzZSB5b3UgY2FuIGNoYW5nZSB0aGUgYGtleWAgcHJvcCBvZlxuICAgKiB0aGUgdHJhbnNpdGlvbiBjaGlsZCBhcyB5b3UgY2hhbmdlIGl0cyBjb250ZW50LCB0aGlzIHdpbGwgY2F1c2VcbiAgICogYFRyYW5zaXRpb25Hcm91cGAgdG8gdHJhbnNpdGlvbiB0aGUgY2hpbGQgb3V0IGFuZCBiYWNrIGluLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuXG4gIC8qKlxuICAgKiBBIGNvbnZlbmllbmNlIHByb3AgdGhhdCBlbmFibGVzIG9yIGRpc2FibGVzIGFwcGVhciBhbmltYXRpb25zXG4gICAqIGZvciBhbGwgY2hpbGRyZW4uIE5vdGUgdGhhdCBzcGVjaWZ5aW5nIHRoaXMgd2lsbCBvdmVycmlkZSBhbnkgZGVmYXVsdHMgc2V0XG4gICAqIG9uIGluZGl2aWR1YWwgY2hpbGRyZW4gVHJhbnNpdGlvbnMuXG4gICAqL1xuICBhcHBlYXI6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBBIGNvbnZlbmllbmNlIHByb3AgdGhhdCBlbmFibGVzIG9yIGRpc2FibGVzIGVudGVyIGFuaW1hdGlvbnNcbiAgICogZm9yIGFsbCBjaGlsZHJlbi4gTm90ZSB0aGF0IHNwZWNpZnlpbmcgdGhpcyB3aWxsIG92ZXJyaWRlIGFueSBkZWZhdWx0cyBzZXRcbiAgICogb24gaW5kaXZpZHVhbCBjaGlsZHJlbiBUcmFuc2l0aW9ucy5cbiAgICovXG4gIGVudGVyOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogQSBjb252ZW5pZW5jZSBwcm9wIHRoYXQgZW5hYmxlcyBvciBkaXNhYmxlcyBleGl0IGFuaW1hdGlvbnNcbiAgICogZm9yIGFsbCBjaGlsZHJlbi4gTm90ZSB0aGF0IHNwZWNpZnlpbmcgdGhpcyB3aWxsIG92ZXJyaWRlIGFueSBkZWZhdWx0cyBzZXRcbiAgICogb24gaW5kaXZpZHVhbCBjaGlsZHJlbiBUcmFuc2l0aW9ucy5cbiAgICovXG4gIGV4aXQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBZb3UgbWF5IG5lZWQgdG8gYXBwbHkgcmVhY3RpdmUgdXBkYXRlcyB0byBhIGNoaWxkIGFzIGl0IGlzIGV4aXRpbmcuXG4gICAqIFRoaXMgaXMgZ2VuZXJhbGx5IGRvbmUgYnkgdXNpbmcgYGNsb25lRWxlbWVudGAgaG93ZXZlciBpbiB0aGUgY2FzZSBvZiBhbiBleGl0aW5nXG4gICAqIGNoaWxkIHRoZSBlbGVtZW50IGhhcyBhbHJlYWR5IGJlZW4gcmVtb3ZlZCBhbmQgbm90IGFjY2Vzc2libGUgdG8gdGhlIGNvbnN1bWVyLlxuICAgKlxuICAgKiBJZiB5b3UgZG8gbmVlZCB0byB1cGRhdGUgYSBjaGlsZCBhcyBpdCBsZWF2ZXMgeW91IGNhbiBwcm92aWRlIGEgYGNoaWxkRmFjdG9yeWBcbiAgICogdG8gd3JhcCBldmVyeSBjaGlsZCwgZXZlbiB0aGUgb25lcyB0aGF0IGFyZSBsZWF2aW5nLlxuICAgKlxuICAgKiBAdHlwZSBGdW5jdGlvbihjaGlsZDogUmVhY3RFbGVtZW50KSAtPiBSZWFjdEVsZW1lbnRcbiAgICovXG4gIGNoaWxkRmFjdG9yeTogUHJvcFR5cGVzLmZ1bmNcbn0gOiB7fTtcblRyYW5zaXRpb25Hcm91cC5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5leHBvcnQgZGVmYXVsdCBUcmFuc2l0aW9uR3JvdXA7IiwiZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChlKSB7XG4gIGlmICh2b2lkIDAgPT09IGUpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtcbiAgcmV0dXJuIGU7XG59XG5leHBvcnQgeyBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiByZXBsYWNlQ2xhc3NOYW1lKG9yaWdDbGFzcywgY2xhc3NUb1JlbW92ZSkge1xuICByZXR1cm4gb3JpZ0NsYXNzLnJlcGxhY2UobmV3IFJlZ0V4cChcIihefFxcXFxzKVwiICsgY2xhc3NUb1JlbW92ZSArIFwiKD86XFxcXHN8JClcIiwgJ2cnKSwgJyQxJykucmVwbGFjZSgvXFxzKy9nLCAnICcpLnJlcGxhY2UoL15cXHMqfFxccyokL2csICcnKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVtb3ZlQ2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lKSB7XG4gIGlmIChlbGVtZW50LmNsYXNzTGlzdCkge1xuICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShjbGFzc05hbWUpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBlbGVtZW50LmNsYXNzTmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICA7XG4gICAgZWxlbWVudC5jbGFzc05hbWUgPSByZXBsYWNlQ2xhc3NOYW1lKGVsZW1lbnQuY2xhc3NOYW1lLCBjbGFzc05hbWUpO1xuICB9IGVsc2Uge1xuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdjbGFzcycsIHJlcGxhY2VDbGFzc05hbWUoZWxlbWVudC5jbGFzc05hbWUgJiYgZWxlbWVudC5jbGFzc05hbWUuYmFzZVZhbCB8fCAnJywgY2xhc3NOYW1lKSk7XG4gIH1cbn0iLCJleHBvcnQgZGVmYXVsdCB7XG4gIGRpc2FibGVkOiBmYWxzZVxufTsiLCJleHBvcnQgdmFyIGZvcmNlUmVmbG93ID0gZnVuY3Rpb24gZm9yY2VSZWZsb3cobm9kZSkge1xuICByZXR1cm4gbm9kZS5zY3JvbGxUb3A7XG59OyIsImltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuaW1wb3J0IF9pbmhlcml0c0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c0xvb3NlXCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IGNvbmZpZyBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyB0aW1lb3V0c1NoYXBlIH0gZnJvbSAnLi91dGlscy9Qcm9wVHlwZXMnO1xuaW1wb3J0IFRyYW5zaXRpb25Hcm91cENvbnRleHQgZnJvbSAnLi9UcmFuc2l0aW9uR3JvdXBDb250ZXh0JztcbmltcG9ydCB7IGZvcmNlUmVmbG93IH0gZnJvbSAnLi91dGlscy9yZWZsb3cnO1xuZXhwb3J0IHZhciBVTk1PVU5URUQgPSAndW5tb3VudGVkJztcbmV4cG9ydCB2YXIgRVhJVEVEID0gJ2V4aXRlZCc7XG5leHBvcnQgdmFyIEVOVEVSSU5HID0gJ2VudGVyaW5nJztcbmV4cG9ydCB2YXIgRU5URVJFRCA9ICdlbnRlcmVkJztcbmV4cG9ydCB2YXIgRVhJVElORyA9ICdleGl0aW5nJztcbi8qKlxuICogVGhlIFRyYW5zaXRpb24gY29tcG9uZW50IGxldHMgeW91IGRlc2NyaWJlIGEgdHJhbnNpdGlvbiBmcm9tIG9uZSBjb21wb25lbnRcbiAqIHN0YXRlIHRvIGFub3RoZXIgX292ZXIgdGltZV8gd2l0aCBhIHNpbXBsZSBkZWNsYXJhdGl2ZSBBUEkuIE1vc3QgY29tbW9ubHlcbiAqIGl0J3MgdXNlZCB0byBhbmltYXRlIHRoZSBtb3VudGluZyBhbmQgdW5tb3VudGluZyBvZiBhIGNvbXBvbmVudCwgYnV0IGNhbiBhbHNvXG4gKiBiZSB1c2VkIHRvIGRlc2NyaWJlIGluLXBsYWNlIHRyYW5zaXRpb24gc3RhdGVzIGFzIHdlbGwuXG4gKlxuICogLS0tXG4gKlxuICogKipOb3RlKio6IGBUcmFuc2l0aW9uYCBpcyBhIHBsYXRmb3JtLWFnbm9zdGljIGJhc2UgY29tcG9uZW50LiBJZiB5b3UncmUgdXNpbmdcbiAqIHRyYW5zaXRpb25zIGluIENTUywgeW91J2xsIHByb2JhYmx5IHdhbnQgdG8gdXNlXG4gKiBbYENTU1RyYW5zaXRpb25gXShodHRwczovL3JlYWN0Y29tbXVuaXR5Lm9yZy9yZWFjdC10cmFuc2l0aW9uLWdyb3VwL2Nzcy10cmFuc2l0aW9uKVxuICogaW5zdGVhZC4gSXQgaW5oZXJpdHMgYWxsIHRoZSBmZWF0dXJlcyBvZiBgVHJhbnNpdGlvbmAsIGJ1dCBjb250YWluc1xuICogYWRkaXRpb25hbCBmZWF0dXJlcyBuZWNlc3NhcnkgdG8gcGxheSBuaWNlIHdpdGggQ1NTIHRyYW5zaXRpb25zIChoZW5jZSB0aGVcbiAqIG5hbWUgb2YgdGhlIGNvbXBvbmVudCkuXG4gKlxuICogLS0tXG4gKlxuICogQnkgZGVmYXVsdCB0aGUgYFRyYW5zaXRpb25gIGNvbXBvbmVudCBkb2VzIG5vdCBhbHRlciB0aGUgYmVoYXZpb3Igb2YgdGhlXG4gKiBjb21wb25lbnQgaXQgcmVuZGVycywgaXQgb25seSB0cmFja3MgXCJlbnRlclwiIGFuZCBcImV4aXRcIiBzdGF0ZXMgZm9yIHRoZVxuICogY29tcG9uZW50cy4gSXQncyB1cCB0byB5b3UgdG8gZ2l2ZSBtZWFuaW5nIGFuZCBlZmZlY3QgdG8gdGhvc2Ugc3RhdGVzLiBGb3JcbiAqIGV4YW1wbGUgd2UgY2FuIGFkZCBzdHlsZXMgdG8gYSBjb21wb25lbnQgd2hlbiBpdCBlbnRlcnMgb3IgZXhpdHM6XG4gKlxuICogYGBganN4XG4gKiBpbXBvcnQgeyBUcmFuc2l0aW9uIH0gZnJvbSAncmVhY3QtdHJhbnNpdGlvbi1ncm91cCc7XG4gKlxuICogY29uc3QgZHVyYXRpb24gPSAzMDA7XG4gKlxuICogY29uc3QgZGVmYXVsdFN0eWxlID0ge1xuICogICB0cmFuc2l0aW9uOiBgb3BhY2l0eSAke2R1cmF0aW9ufW1zIGVhc2UtaW4tb3V0YCxcbiAqICAgb3BhY2l0eTogMCxcbiAqIH1cbiAqXG4gKiBjb25zdCB0cmFuc2l0aW9uU3R5bGVzID0ge1xuICogICBlbnRlcmluZzogeyBvcGFjaXR5OiAxIH0sXG4gKiAgIGVudGVyZWQ6ICB7IG9wYWNpdHk6IDEgfSxcbiAqICAgZXhpdGluZzogIHsgb3BhY2l0eTogMCB9LFxuICogICBleGl0ZWQ6ICB7IG9wYWNpdHk6IDAgfSxcbiAqIH07XG4gKlxuICogY29uc3QgRmFkZSA9ICh7IGluOiBpblByb3AgfSkgPT4gKFxuICogICA8VHJhbnNpdGlvbiBpbj17aW5Qcm9wfSB0aW1lb3V0PXtkdXJhdGlvbn0+XG4gKiAgICAge3N0YXRlID0+IChcbiAqICAgICAgIDxkaXYgc3R5bGU9e3tcbiAqICAgICAgICAgLi4uZGVmYXVsdFN0eWxlLFxuICogICAgICAgICAuLi50cmFuc2l0aW9uU3R5bGVzW3N0YXRlXVxuICogICAgICAgfX0+XG4gKiAgICAgICAgIEknbSBhIGZhZGUgVHJhbnNpdGlvbiFcbiAqICAgICAgIDwvZGl2PlxuICogICAgICl9XG4gKiAgIDwvVHJhbnNpdGlvbj5cbiAqICk7XG4gKiBgYGBcbiAqXG4gKiBUaGVyZSBhcmUgNCBtYWluIHN0YXRlcyBhIFRyYW5zaXRpb24gY2FuIGJlIGluOlxuICogIC0gYCdlbnRlcmluZydgXG4gKiAgLSBgJ2VudGVyZWQnYFxuICogIC0gYCdleGl0aW5nJ2BcbiAqICAtIGAnZXhpdGVkJ2BcbiAqXG4gKiBUcmFuc2l0aW9uIHN0YXRlIGlzIHRvZ2dsZWQgdmlhIHRoZSBgaW5gIHByb3AuIFdoZW4gYHRydWVgIHRoZSBjb21wb25lbnRcbiAqIGJlZ2lucyB0aGUgXCJFbnRlclwiIHN0YWdlLiBEdXJpbmcgdGhpcyBzdGFnZSwgdGhlIGNvbXBvbmVudCB3aWxsIHNoaWZ0IGZyb21cbiAqIGl0cyBjdXJyZW50IHRyYW5zaXRpb24gc3RhdGUsIHRvIGAnZW50ZXJpbmcnYCBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZVxuICogdHJhbnNpdGlvbiBhbmQgdGhlbiB0byB0aGUgYCdlbnRlcmVkJ2Agc3RhZ2Ugb25jZSBpdCdzIGNvbXBsZXRlLiBMZXQncyB0YWtlXG4gKiB0aGUgZm9sbG93aW5nIGV4YW1wbGUgKHdlJ2xsIHVzZSB0aGVcbiAqIFt1c2VTdGF0ZV0oaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2hvb2tzLXJlZmVyZW5jZS5odG1sI3VzZXN0YXRlKSBob29rKTpcbiAqXG4gKiBgYGBqc3hcbiAqIGZ1bmN0aW9uIEFwcCgpIHtcbiAqICAgY29uc3QgW2luUHJvcCwgc2V0SW5Qcm9wXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAqICAgcmV0dXJuIChcbiAqICAgICA8ZGl2PlxuICogICAgICAgPFRyYW5zaXRpb24gaW49e2luUHJvcH0gdGltZW91dD17NTAwfT5cbiAqICAgICAgICAge3N0YXRlID0+IChcbiAqICAgICAgICAgICAvLyAuLi5cbiAqICAgICAgICAgKX1cbiAqICAgICAgIDwvVHJhbnNpdGlvbj5cbiAqICAgICAgIDxidXR0b24gb25DbGljaz17KCkgPT4gc2V0SW5Qcm9wKHRydWUpfT5cbiAqICAgICAgICAgQ2xpY2sgdG8gRW50ZXJcbiAqICAgICAgIDwvYnV0dG9uPlxuICogICAgIDwvZGl2PlxuICogICApO1xuICogfVxuICogYGBgXG4gKlxuICogV2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWQgdGhlIGNvbXBvbmVudCB3aWxsIHNoaWZ0IHRvIHRoZSBgJ2VudGVyaW5nJ2Agc3RhdGVcbiAqIGFuZCBzdGF5IHRoZXJlIGZvciA1MDBtcyAodGhlIHZhbHVlIG9mIGB0aW1lb3V0YCkgYmVmb3JlIGl0IGZpbmFsbHkgc3dpdGNoZXNcbiAqIHRvIGAnZW50ZXJlZCdgLlxuICpcbiAqIFdoZW4gYGluYCBpcyBgZmFsc2VgIHRoZSBzYW1lIHRoaW5nIGhhcHBlbnMgZXhjZXB0IHRoZSBzdGF0ZSBtb3ZlcyBmcm9tXG4gKiBgJ2V4aXRpbmcnYCB0byBgJ2V4aXRlZCdgLlxuICovXG5cbnZhciBUcmFuc2l0aW9uID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0c0xvb3NlKFRyYW5zaXRpb24sIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIFRyYW5zaXRpb24ocHJvcHMsIGNvbnRleHQpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfdGhpcyA9IF9SZWFjdCRDb21wb25lbnQuY2FsbCh0aGlzLCBwcm9wcywgY29udGV4dCkgfHwgdGhpcztcbiAgICB2YXIgcGFyZW50R3JvdXAgPSBjb250ZXh0OyAvLyBJbiB0aGUgY29udGV4dCBvZiBhIFRyYW5zaXRpb25Hcm91cCBhbGwgZW50ZXJzIGFyZSByZWFsbHkgYXBwZWFyc1xuXG4gICAgdmFyIGFwcGVhciA9IHBhcmVudEdyb3VwICYmICFwYXJlbnRHcm91cC5pc01vdW50aW5nID8gcHJvcHMuZW50ZXIgOiBwcm9wcy5hcHBlYXI7XG4gICAgdmFyIGluaXRpYWxTdGF0dXM7XG4gICAgX3RoaXMuYXBwZWFyU3RhdHVzID0gbnVsbDtcblxuICAgIGlmIChwcm9wcy5pbikge1xuICAgICAgaWYgKGFwcGVhcikge1xuICAgICAgICBpbml0aWFsU3RhdHVzID0gRVhJVEVEO1xuICAgICAgICBfdGhpcy5hcHBlYXJTdGF0dXMgPSBFTlRFUklORztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluaXRpYWxTdGF0dXMgPSBFTlRFUkVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocHJvcHMudW5tb3VudE9uRXhpdCB8fCBwcm9wcy5tb3VudE9uRW50ZXIpIHtcbiAgICAgICAgaW5pdGlhbFN0YXR1cyA9IFVOTU9VTlRFRDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluaXRpYWxTdGF0dXMgPSBFWElURUQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgX3RoaXMuc3RhdGUgPSB7XG4gICAgICBzdGF0dXM6IGluaXRpYWxTdGF0dXNcbiAgICB9O1xuICAgIF90aGlzLm5leHRDYWxsYmFjayA9IG51bGw7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgVHJhbnNpdGlvbi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgPSBmdW5jdGlvbiBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoX3JlZiwgcHJldlN0YXRlKSB7XG4gICAgdmFyIG5leHRJbiA9IF9yZWYuaW47XG5cbiAgICBpZiAobmV4dEluICYmIHByZXZTdGF0ZS5zdGF0dXMgPT09IFVOTU9VTlRFRCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhdHVzOiBFWElURURcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH0gLy8gZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUocHJldlByb3BzKSB7XG4gIC8vICAgbGV0IG5leHRTdGF0dXMgPSBudWxsXG4gIC8vICAgaWYgKHByZXZQcm9wcyAhPT0gdGhpcy5wcm9wcykge1xuICAvLyAgICAgY29uc3QgeyBzdGF0dXMgfSA9IHRoaXMuc3RhdGVcbiAgLy8gICAgIGlmICh0aGlzLnByb3BzLmluKSB7XG4gIC8vICAgICAgIGlmIChzdGF0dXMgIT09IEVOVEVSSU5HICYmIHN0YXR1cyAhPT0gRU5URVJFRCkge1xuICAvLyAgICAgICAgIG5leHRTdGF0dXMgPSBFTlRFUklOR1xuICAvLyAgICAgICB9XG4gIC8vICAgICB9IGVsc2Uge1xuICAvLyAgICAgICBpZiAoc3RhdHVzID09PSBFTlRFUklORyB8fCBzdGF0dXMgPT09IEVOVEVSRUQpIHtcbiAgLy8gICAgICAgICBuZXh0U3RhdHVzID0gRVhJVElOR1xuICAvLyAgICAgICB9XG4gIC8vICAgICB9XG4gIC8vICAgfVxuICAvLyAgIHJldHVybiB7IG5leHRTdGF0dXMgfVxuICAvLyB9XG4gIDtcblxuICB2YXIgX3Byb3RvID0gVHJhbnNpdGlvbi5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLmNvbXBvbmVudERpZE1vdW50ID0gZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgdGhpcy51cGRhdGVTdGF0dXModHJ1ZSwgdGhpcy5hcHBlYXJTdGF0dXMpO1xuICB9O1xuXG4gIF9wcm90by5jb21wb25lbnREaWRVcGRhdGUgPSBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XG4gICAgdmFyIG5leHRTdGF0dXMgPSBudWxsO1xuXG4gICAgaWYgKHByZXZQcm9wcyAhPT0gdGhpcy5wcm9wcykge1xuICAgICAgdmFyIHN0YXR1cyA9IHRoaXMuc3RhdGUuc3RhdHVzO1xuXG4gICAgICBpZiAodGhpcy5wcm9wcy5pbikge1xuICAgICAgICBpZiAoc3RhdHVzICE9PSBFTlRFUklORyAmJiBzdGF0dXMgIT09IEVOVEVSRUQpIHtcbiAgICAgICAgICBuZXh0U3RhdHVzID0gRU5URVJJTkc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChzdGF0dXMgPT09IEVOVEVSSU5HIHx8IHN0YXR1cyA9PT0gRU5URVJFRCkge1xuICAgICAgICAgIG5leHRTdGF0dXMgPSBFWElUSU5HO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVTdGF0dXMoZmFsc2UsIG5leHRTdGF0dXMpO1xuICB9O1xuXG4gIF9wcm90by5jb21wb25lbnRXaWxsVW5tb3VudCA9IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIHRoaXMuY2FuY2VsTmV4dENhbGxiYWNrKCk7XG4gIH07XG5cbiAgX3Byb3RvLmdldFRpbWVvdXRzID0gZnVuY3Rpb24gZ2V0VGltZW91dHMoKSB7XG4gICAgdmFyIHRpbWVvdXQgPSB0aGlzLnByb3BzLnRpbWVvdXQ7XG4gICAgdmFyIGV4aXQsIGVudGVyLCBhcHBlYXI7XG4gICAgZXhpdCA9IGVudGVyID0gYXBwZWFyID0gdGltZW91dDtcblxuICAgIGlmICh0aW1lb3V0ICE9IG51bGwgJiYgdHlwZW9mIHRpbWVvdXQgIT09ICdudW1iZXInKSB7XG4gICAgICBleGl0ID0gdGltZW91dC5leGl0O1xuICAgICAgZW50ZXIgPSB0aW1lb3V0LmVudGVyOyAvLyBUT0RPOiByZW1vdmUgZmFsbGJhY2sgZm9yIG5leHQgbWFqb3JcblxuICAgICAgYXBwZWFyID0gdGltZW91dC5hcHBlYXIgIT09IHVuZGVmaW5lZCA/IHRpbWVvdXQuYXBwZWFyIDogZW50ZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGV4aXQ6IGV4aXQsXG4gICAgICBlbnRlcjogZW50ZXIsXG4gICAgICBhcHBlYXI6IGFwcGVhclxuICAgIH07XG4gIH07XG5cbiAgX3Byb3RvLnVwZGF0ZVN0YXR1cyA9IGZ1bmN0aW9uIHVwZGF0ZVN0YXR1cyhtb3VudGluZywgbmV4dFN0YXR1cykge1xuICAgIGlmIChtb3VudGluZyA9PT0gdm9pZCAwKSB7XG4gICAgICBtb3VudGluZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChuZXh0U3RhdHVzICE9PSBudWxsKSB7XG4gICAgICAvLyBuZXh0U3RhdHVzIHdpbGwgYWx3YXlzIGJlIEVOVEVSSU5HIG9yIEVYSVRJTkcuXG4gICAgICB0aGlzLmNhbmNlbE5leHRDYWxsYmFjaygpO1xuXG4gICAgICBpZiAobmV4dFN0YXR1cyA9PT0gRU5URVJJTkcpIHtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMudW5tb3VudE9uRXhpdCB8fCB0aGlzLnByb3BzLm1vdW50T25FbnRlcikge1xuICAgICAgICAgIHZhciBub2RlID0gdGhpcy5wcm9wcy5ub2RlUmVmID8gdGhpcy5wcm9wcy5ub2RlUmVmLmN1cnJlbnQgOiBSZWFjdERPTS5maW5kRE9NTm9kZSh0aGlzKTsgLy8gaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0anMvcmVhY3QtdHJhbnNpdGlvbi1ncm91cC9wdWxsLzc0OVxuICAgICAgICAgIC8vIFdpdGggdW5tb3VudE9uRXhpdCBvciBtb3VudE9uRW50ZXIsIHRoZSBlbnRlciBhbmltYXRpb24gc2hvdWxkIGhhcHBlbiBhdCB0aGUgdHJhbnNpdGlvbiBiZXR3ZWVuIGBleGl0ZWRgIGFuZCBgZW50ZXJpbmdgLlxuICAgICAgICAgIC8vIFRvIG1ha2UgdGhlIGFuaW1hdGlvbiBoYXBwZW4sICB3ZSBoYXZlIHRvIHNlcGFyYXRlIGVhY2ggcmVuZGVyaW5nIGFuZCBhdm9pZCBiZWluZyBwcm9jZXNzZWQgYXMgYmF0Y2hlZC5cblxuICAgICAgICAgIGlmIChub2RlKSBmb3JjZVJlZmxvdyhub2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucGVyZm9ybUVudGVyKG1vdW50aW5nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGVyZm9ybUV4aXQoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMudW5tb3VudE9uRXhpdCAmJiB0aGlzLnN0YXRlLnN0YXR1cyA9PT0gRVhJVEVEKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgc3RhdHVzOiBVTk1PVU5URURcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBfcHJvdG8ucGVyZm9ybUVudGVyID0gZnVuY3Rpb24gcGVyZm9ybUVudGVyKG1vdW50aW5nKSB7XG4gICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICB2YXIgZW50ZXIgPSB0aGlzLnByb3BzLmVudGVyO1xuICAgIHZhciBhcHBlYXJpbmcgPSB0aGlzLmNvbnRleHQgPyB0aGlzLmNvbnRleHQuaXNNb3VudGluZyA6IG1vdW50aW5nO1xuXG4gICAgdmFyIF9yZWYyID0gdGhpcy5wcm9wcy5ub2RlUmVmID8gW2FwcGVhcmluZ10gOiBbUmVhY3RET00uZmluZERPTU5vZGUodGhpcyksIGFwcGVhcmluZ10sXG4gICAgICAgIG1heWJlTm9kZSA9IF9yZWYyWzBdLFxuICAgICAgICBtYXliZUFwcGVhcmluZyA9IF9yZWYyWzFdO1xuXG4gICAgdmFyIHRpbWVvdXRzID0gdGhpcy5nZXRUaW1lb3V0cygpO1xuICAgIHZhciBlbnRlclRpbWVvdXQgPSBhcHBlYXJpbmcgPyB0aW1lb3V0cy5hcHBlYXIgOiB0aW1lb3V0cy5lbnRlcjsgLy8gbm8gZW50ZXIgYW5pbWF0aW9uIHNraXAgcmlnaHQgdG8gRU5URVJFRFxuICAgIC8vIGlmIHdlIGFyZSBtb3VudGluZyBhbmQgcnVubmluZyB0aGlzIGl0IG1lYW5zIGFwcGVhciBfbXVzdF8gYmUgc2V0XG5cbiAgICBpZiAoIW1vdW50aW5nICYmICFlbnRlciB8fCBjb25maWcuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc2FmZVNldFN0YXRlKHtcbiAgICAgICAgc3RhdHVzOiBFTlRFUkVEXG4gICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzMi5wcm9wcy5vbkVudGVyZWQobWF5YmVOb2RlKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucHJvcHMub25FbnRlcihtYXliZU5vZGUsIG1heWJlQXBwZWFyaW5nKTtcbiAgICB0aGlzLnNhZmVTZXRTdGF0ZSh7XG4gICAgICBzdGF0dXM6IEVOVEVSSU5HXG4gICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMyLnByb3BzLm9uRW50ZXJpbmcobWF5YmVOb2RlLCBtYXliZUFwcGVhcmluZyk7XG5cbiAgICAgIF90aGlzMi5vblRyYW5zaXRpb25FbmQoZW50ZXJUaW1lb3V0LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzMi5zYWZlU2V0U3RhdGUoe1xuICAgICAgICAgIHN0YXR1czogRU5URVJFRFxuICAgICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXMyLnByb3BzLm9uRW50ZXJlZChtYXliZU5vZGUsIG1heWJlQXBwZWFyaW5nKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcblxuICBfcHJvdG8ucGVyZm9ybUV4aXQgPSBmdW5jdGlvbiBwZXJmb3JtRXhpdCgpIHtcbiAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgIHZhciBleGl0ID0gdGhpcy5wcm9wcy5leGl0O1xuICAgIHZhciB0aW1lb3V0cyA9IHRoaXMuZ2V0VGltZW91dHMoKTtcbiAgICB2YXIgbWF5YmVOb2RlID0gdGhpcy5wcm9wcy5ub2RlUmVmID8gdW5kZWZpbmVkIDogUmVhY3RET00uZmluZERPTU5vZGUodGhpcyk7IC8vIG5vIGV4aXQgYW5pbWF0aW9uIHNraXAgcmlnaHQgdG8gRVhJVEVEXG5cbiAgICBpZiAoIWV4aXQgfHwgY29uZmlnLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnNhZmVTZXRTdGF0ZSh7XG4gICAgICAgIHN0YXR1czogRVhJVEVEXG4gICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzMy5wcm9wcy5vbkV4aXRlZChtYXliZU5vZGUpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wcm9wcy5vbkV4aXQobWF5YmVOb2RlKTtcbiAgICB0aGlzLnNhZmVTZXRTdGF0ZSh7XG4gICAgICBzdGF0dXM6IEVYSVRJTkdcbiAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpczMucHJvcHMub25FeGl0aW5nKG1heWJlTm9kZSk7XG5cbiAgICAgIF90aGlzMy5vblRyYW5zaXRpb25FbmQodGltZW91dHMuZXhpdCwgZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpczMuc2FmZVNldFN0YXRlKHtcbiAgICAgICAgICBzdGF0dXM6IEVYSVRFRFxuICAgICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXMzLnByb3BzLm9uRXhpdGVkKG1heWJlTm9kZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG5cbiAgX3Byb3RvLmNhbmNlbE5leHRDYWxsYmFjayA9IGZ1bmN0aW9uIGNhbmNlbE5leHRDYWxsYmFjaygpIHtcbiAgICBpZiAodGhpcy5uZXh0Q2FsbGJhY2sgIT09IG51bGwpIHtcbiAgICAgIHRoaXMubmV4dENhbGxiYWNrLmNhbmNlbCgpO1xuICAgICAgdGhpcy5uZXh0Q2FsbGJhY2sgPSBudWxsO1xuICAgIH1cbiAgfTtcblxuICBfcHJvdG8uc2FmZVNldFN0YXRlID0gZnVuY3Rpb24gc2FmZVNldFN0YXRlKG5leHRTdGF0ZSwgY2FsbGJhY2spIHtcbiAgICAvLyBUaGlzIHNob3VsZG4ndCBiZSBuZWNlc3NhcnksIGJ1dCB0aGVyZSBhcmUgd2VpcmQgcmFjZSBjb25kaXRpb25zIHdpdGhcbiAgICAvLyBzZXRTdGF0ZSBjYWxsYmFja3MgYW5kIHVubW91bnRpbmcgaW4gdGVzdGluZywgc28gYWx3YXlzIG1ha2Ugc3VyZSB0aGF0XG4gICAgLy8gd2UgY2FuIGNhbmNlbCBhbnkgcGVuZGluZyBzZXRTdGF0ZSBjYWxsYmFja3MgYWZ0ZXIgd2UgdW5tb3VudC5cbiAgICBjYWxsYmFjayA9IHRoaXMuc2V0TmV4dENhbGxiYWNrKGNhbGxiYWNrKTtcbiAgICB0aGlzLnNldFN0YXRlKG5leHRTdGF0ZSwgY2FsbGJhY2spO1xuICB9O1xuXG4gIF9wcm90by5zZXROZXh0Q2FsbGJhY2sgPSBmdW5jdGlvbiBzZXROZXh0Q2FsbGJhY2soY2FsbGJhY2spIHtcbiAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgIHZhciBhY3RpdmUgPSB0cnVlO1xuXG4gICAgdGhpcy5uZXh0Q2FsbGJhY2sgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmIChhY3RpdmUpIHtcbiAgICAgICAgYWN0aXZlID0gZmFsc2U7XG4gICAgICAgIF90aGlzNC5uZXh0Q2FsbGJhY2sgPSBudWxsO1xuICAgICAgICBjYWxsYmFjayhldmVudCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHRoaXMubmV4dENhbGxiYWNrLmNhbmNlbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGFjdGl2ZSA9IGZhbHNlO1xuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5uZXh0Q2FsbGJhY2s7XG4gIH07XG5cbiAgX3Byb3RvLm9uVHJhbnNpdGlvbkVuZCA9IGZ1bmN0aW9uIG9uVHJhbnNpdGlvbkVuZCh0aW1lb3V0LCBoYW5kbGVyKSB7XG4gICAgdGhpcy5zZXROZXh0Q2FsbGJhY2soaGFuZGxlcik7XG4gICAgdmFyIG5vZGUgPSB0aGlzLnByb3BzLm5vZGVSZWYgPyB0aGlzLnByb3BzLm5vZGVSZWYuY3VycmVudCA6IFJlYWN0RE9NLmZpbmRET01Ob2RlKHRoaXMpO1xuICAgIHZhciBkb2VzTm90SGF2ZVRpbWVvdXRPckxpc3RlbmVyID0gdGltZW91dCA9PSBudWxsICYmICF0aGlzLnByb3BzLmFkZEVuZExpc3RlbmVyO1xuXG4gICAgaWYgKCFub2RlIHx8IGRvZXNOb3RIYXZlVGltZW91dE9yTGlzdGVuZXIpIHtcbiAgICAgIHNldFRpbWVvdXQodGhpcy5uZXh0Q2FsbGJhY2ssIDApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3BzLmFkZEVuZExpc3RlbmVyKSB7XG4gICAgICB2YXIgX3JlZjMgPSB0aGlzLnByb3BzLm5vZGVSZWYgPyBbdGhpcy5uZXh0Q2FsbGJhY2tdIDogW25vZGUsIHRoaXMubmV4dENhbGxiYWNrXSxcbiAgICAgICAgICBtYXliZU5vZGUgPSBfcmVmM1swXSxcbiAgICAgICAgICBtYXliZU5leHRDYWxsYmFjayA9IF9yZWYzWzFdO1xuXG4gICAgICB0aGlzLnByb3BzLmFkZEVuZExpc3RlbmVyKG1heWJlTm9kZSwgbWF5YmVOZXh0Q2FsbGJhY2spO1xuICAgIH1cblxuICAgIGlmICh0aW1lb3V0ICE9IG51bGwpIHtcbiAgICAgIHNldFRpbWVvdXQodGhpcy5uZXh0Q2FsbGJhY2ssIHRpbWVvdXQpO1xuICAgIH1cbiAgfTtcblxuICBfcHJvdG8ucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgIHZhciBzdGF0dXMgPSB0aGlzLnN0YXRlLnN0YXR1cztcblxuICAgIGlmIChzdGF0dXMgPT09IFVOTU9VTlRFRCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFyIF90aGlzJHByb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgY2hpbGRyZW4gPSBfdGhpcyRwcm9wcy5jaGlsZHJlbixcbiAgICAgICAgX2luID0gX3RoaXMkcHJvcHMuaW4sXG4gICAgICAgIF9tb3VudE9uRW50ZXIgPSBfdGhpcyRwcm9wcy5tb3VudE9uRW50ZXIsXG4gICAgICAgIF91bm1vdW50T25FeGl0ID0gX3RoaXMkcHJvcHMudW5tb3VudE9uRXhpdCxcbiAgICAgICAgX2FwcGVhciA9IF90aGlzJHByb3BzLmFwcGVhcixcbiAgICAgICAgX2VudGVyID0gX3RoaXMkcHJvcHMuZW50ZXIsXG4gICAgICAgIF9leGl0ID0gX3RoaXMkcHJvcHMuZXhpdCxcbiAgICAgICAgX3RpbWVvdXQgPSBfdGhpcyRwcm9wcy50aW1lb3V0LFxuICAgICAgICBfYWRkRW5kTGlzdGVuZXIgPSBfdGhpcyRwcm9wcy5hZGRFbmRMaXN0ZW5lcixcbiAgICAgICAgX29uRW50ZXIgPSBfdGhpcyRwcm9wcy5vbkVudGVyLFxuICAgICAgICBfb25FbnRlcmluZyA9IF90aGlzJHByb3BzLm9uRW50ZXJpbmcsXG4gICAgICAgIF9vbkVudGVyZWQgPSBfdGhpcyRwcm9wcy5vbkVudGVyZWQsXG4gICAgICAgIF9vbkV4aXQgPSBfdGhpcyRwcm9wcy5vbkV4aXQsXG4gICAgICAgIF9vbkV4aXRpbmcgPSBfdGhpcyRwcm9wcy5vbkV4aXRpbmcsXG4gICAgICAgIF9vbkV4aXRlZCA9IF90aGlzJHByb3BzLm9uRXhpdGVkLFxuICAgICAgICBfbm9kZVJlZiA9IF90aGlzJHByb3BzLm5vZGVSZWYsXG4gICAgICAgIGNoaWxkUHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfdGhpcyRwcm9wcywgW1wiY2hpbGRyZW5cIiwgXCJpblwiLCBcIm1vdW50T25FbnRlclwiLCBcInVubW91bnRPbkV4aXRcIiwgXCJhcHBlYXJcIiwgXCJlbnRlclwiLCBcImV4aXRcIiwgXCJ0aW1lb3V0XCIsIFwiYWRkRW5kTGlzdGVuZXJcIiwgXCJvbkVudGVyXCIsIFwib25FbnRlcmluZ1wiLCBcIm9uRW50ZXJlZFwiLCBcIm9uRXhpdFwiLCBcIm9uRXhpdGluZ1wiLCBcIm9uRXhpdGVkXCIsIFwibm9kZVJlZlwiXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgLyojX19QVVJFX18qL1xuICAgICAgLy8gYWxsb3dzIGZvciBuZXN0ZWQgVHJhbnNpdGlvbnNcbiAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJhbnNpdGlvbkdyb3VwQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgfSwgdHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nID8gY2hpbGRyZW4oc3RhdHVzLCBjaGlsZFByb3BzKSA6IFJlYWN0LmNsb25lRWxlbWVudChSZWFjdC5DaGlsZHJlbi5vbmx5KGNoaWxkcmVuKSwgY2hpbGRQcm9wcykpXG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gVHJhbnNpdGlvbjtcbn0oUmVhY3QuQ29tcG9uZW50KTtcblxuVHJhbnNpdGlvbi5jb250ZXh0VHlwZSA9IFRyYW5zaXRpb25Hcm91cENvbnRleHQ7XG5UcmFuc2l0aW9uLnByb3BUeXBlcyA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHtcbiAgLyoqXG4gICAqIEEgUmVhY3QgcmVmZXJlbmNlIHRvIERPTSBlbGVtZW50IHRoYXQgbmVlZCB0byB0cmFuc2l0aW9uOlxuICAgKiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNTExMjcxMzAvNDY3MTkzMlxuICAgKlxuICAgKiAgIC0gV2hlbiBgbm9kZVJlZmAgcHJvcCBpcyB1c2VkLCBgbm9kZWAgaXMgbm90IHBhc3NlZCB0byBjYWxsYmFjayBmdW5jdGlvbnNcbiAgICogICAgICAoZS5nLiBgb25FbnRlcmApIGJlY2F1c2UgdXNlciBhbHJlYWR5IGhhcyBkaXJlY3QgYWNjZXNzIHRvIHRoZSBub2RlLlxuICAgKiAgIC0gV2hlbiBjaGFuZ2luZyBga2V5YCBwcm9wIG9mIGBUcmFuc2l0aW9uYCBpbiBhIGBUcmFuc2l0aW9uR3JvdXBgIGEgbmV3XG4gICAqICAgICBgbm9kZVJlZmAgbmVlZCB0byBiZSBwcm92aWRlZCB0byBgVHJhbnNpdGlvbmAgd2l0aCBjaGFuZ2VkIGBrZXlgIHByb3BcbiAgICogICAgIChzZWVcbiAgICogICAgIFt0ZXN0L0NTU1RyYW5zaXRpb24tdGVzdC5qc10oaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0anMvcmVhY3QtdHJhbnNpdGlvbi1ncm91cC9ibG9iLzEzNDM1Zjg5N2IzYWI3MWY2ZTE5ZDcyNGYxNDU1OTZmNTkxMDU4MWMvdGVzdC9DU1NUcmFuc2l0aW9uLXRlc3QuanMjTDM2Mi1MNDM3KSkuXG4gICAqL1xuICBub2RlUmVmOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGN1cnJlbnQ6IHR5cGVvZiBFbGVtZW50ID09PSAndW5kZWZpbmVkJyA/IFByb3BUeXBlcy5hbnkgOiBmdW5jdGlvbiAocHJvcFZhbHVlLCBrZXksIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgICAgdmFyIHZhbHVlID0gcHJvcFZhbHVlW2tleV07XG4gICAgICByZXR1cm4gUHJvcFR5cGVzLmluc3RhbmNlT2YodmFsdWUgJiYgJ293bmVyRG9jdW1lbnQnIGluIHZhbHVlID8gdmFsdWUub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5FbGVtZW50IDogRWxlbWVudCkocHJvcFZhbHVlLCBrZXksIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCk7XG4gICAgfVxuICB9KSxcblxuICAvKipcbiAgICogQSBgZnVuY3Rpb25gIGNoaWxkIGNhbiBiZSB1c2VkIGluc3RlYWQgb2YgYSBSZWFjdCBlbGVtZW50LiBUaGlzIGZ1bmN0aW9uIGlzXG4gICAqIGNhbGxlZCB3aXRoIHRoZSBjdXJyZW50IHRyYW5zaXRpb24gc3RhdHVzIChgJ2VudGVyaW5nJ2AsIGAnZW50ZXJlZCdgLFxuICAgKiBgJ2V4aXRpbmcnYCwgYCdleGl0ZWQnYCksIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGFwcGx5IGNvbnRleHRcbiAgICogc3BlY2lmaWMgcHJvcHMgdG8gYSBjb21wb25lbnQuXG4gICAqXG4gICAqIGBgYGpzeFxuICAgKiA8VHJhbnNpdGlvbiBpbj17dGhpcy5zdGF0ZS5pbn0gdGltZW91dD17MTUwfT5cbiAgICogICB7c3RhdGUgPT4gKFxuICAgKiAgICAgPE15Q29tcG9uZW50IGNsYXNzTmFtZT17YGZhZGUgZmFkZS0ke3N0YXRlfWB9IC8+XG4gICAqICAgKX1cbiAgICogPC9UcmFuc2l0aW9uPlxuICAgKiBgYGBcbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLCBQcm9wVHlwZXMuZWxlbWVudC5pc1JlcXVpcmVkXSkuaXNSZXF1aXJlZCxcblxuICAvKipcbiAgICogU2hvdyB0aGUgY29tcG9uZW50OyB0cmlnZ2VycyB0aGUgZW50ZXIgb3IgZXhpdCBzdGF0ZXNcbiAgICovXG4gIGluOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogQnkgZGVmYXVsdCB0aGUgY2hpbGQgY29tcG9uZW50IGlzIG1vdW50ZWQgaW1tZWRpYXRlbHkgYWxvbmcgd2l0aFxuICAgKiB0aGUgcGFyZW50IGBUcmFuc2l0aW9uYCBjb21wb25lbnQuIElmIHlvdSB3YW50IHRvIFwibGF6eSBtb3VudFwiIHRoZSBjb21wb25lbnQgb24gdGhlXG4gICAqIGZpcnN0IGBpbj17dHJ1ZX1gIHlvdSBjYW4gc2V0IGBtb3VudE9uRW50ZXJgLiBBZnRlciB0aGUgZmlyc3QgZW50ZXIgdHJhbnNpdGlvbiB0aGUgY29tcG9uZW50IHdpbGwgc3RheVxuICAgKiBtb3VudGVkLCBldmVuIG9uIFwiZXhpdGVkXCIsIHVubGVzcyB5b3UgYWxzbyBzcGVjaWZ5IGB1bm1vdW50T25FeGl0YC5cbiAgICovXG4gIG1vdW50T25FbnRlcjogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQgdGhlIGNoaWxkIGNvbXBvbmVudCBzdGF5cyBtb3VudGVkIGFmdGVyIGl0IHJlYWNoZXMgdGhlIGAnZXhpdGVkJ2Agc3RhdGUuXG4gICAqIFNldCBgdW5tb3VudE9uRXhpdGAgaWYgeW91J2QgcHJlZmVyIHRvIHVubW91bnQgdGhlIGNvbXBvbmVudCBhZnRlciBpdCBmaW5pc2hlcyBleGl0aW5nLlxuICAgKi9cbiAgdW5tb3VudE9uRXhpdDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQgdGhlIGNoaWxkIGNvbXBvbmVudCBkb2VzIG5vdCBwZXJmb3JtIHRoZSBlbnRlciB0cmFuc2l0aW9uIHdoZW5cbiAgICogaXQgZmlyc3QgbW91bnRzLCByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZSBvZiBgaW5gLiBJZiB5b3Ugd2FudCB0aGlzXG4gICAqIGJlaGF2aW9yLCBzZXQgYm90aCBgYXBwZWFyYCBhbmQgYGluYCB0byBgdHJ1ZWAuXG4gICAqXG4gICAqID4gKipOb3RlKio6IHRoZXJlIGFyZSBubyBzcGVjaWFsIGFwcGVhciBzdGF0ZXMgbGlrZSBgYXBwZWFyaW5nYC9gYXBwZWFyZWRgLCB0aGlzIHByb3BcbiAgICogPiBvbmx5IGFkZHMgYW4gYWRkaXRpb25hbCBlbnRlciB0cmFuc2l0aW9uLiBIb3dldmVyLCBpbiB0aGVcbiAgICogPiBgPENTU1RyYW5zaXRpb24+YCBjb21wb25lbnQgdGhhdCBmaXJzdCBlbnRlciB0cmFuc2l0aW9uIGRvZXMgcmVzdWx0IGluXG4gICAqID4gYWRkaXRpb25hbCBgLmFwcGVhci0qYCBjbGFzc2VzLCB0aGF0IHdheSB5b3UgY2FuIGNob29zZSB0byBzdHlsZSBpdFxuICAgKiA+IGRpZmZlcmVudGx5LlxuICAgKi9cbiAgYXBwZWFyOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogRW5hYmxlIG9yIGRpc2FibGUgZW50ZXIgdHJhbnNpdGlvbnMuXG4gICAqL1xuICBlbnRlcjogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIEVuYWJsZSBvciBkaXNhYmxlIGV4aXQgdHJhbnNpdGlvbnMuXG4gICAqL1xuICBleGl0OiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogVGhlIGR1cmF0aW9uIG9mIHRoZSB0cmFuc2l0aW9uLCBpbiBtaWxsaXNlY29uZHMuXG4gICAqIFJlcXVpcmVkIHVubGVzcyBgYWRkRW5kTGlzdGVuZXJgIGlzIHByb3ZpZGVkLlxuICAgKlxuICAgKiBZb3UgbWF5IHNwZWNpZnkgYSBzaW5nbGUgdGltZW91dCBmb3IgYWxsIHRyYW5zaXRpb25zOlxuICAgKlxuICAgKiBgYGBqc3hcbiAgICogdGltZW91dD17NTAwfVxuICAgKiBgYGBcbiAgICpcbiAgICogb3IgaW5kaXZpZHVhbGx5OlxuICAgKlxuICAgKiBgYGBqc3hcbiAgICogdGltZW91dD17e1xuICAgKiAgYXBwZWFyOiA1MDAsXG4gICAqICBlbnRlcjogMzAwLFxuICAgKiAgZXhpdDogNTAwLFxuICAgKiB9fVxuICAgKiBgYGBcbiAgICpcbiAgICogLSBgYXBwZWFyYCBkZWZhdWx0cyB0byB0aGUgdmFsdWUgb2YgYGVudGVyYFxuICAgKiAtIGBlbnRlcmAgZGVmYXVsdHMgdG8gYDBgXG4gICAqIC0gYGV4aXRgIGRlZmF1bHRzIHRvIGAwYFxuICAgKlxuICAgKiBAdHlwZSB7bnVtYmVyIHwgeyBlbnRlcj86IG51bWJlciwgZXhpdD86IG51bWJlciwgYXBwZWFyPzogbnVtYmVyIH19XG4gICAqL1xuICB0aW1lb3V0OiBmdW5jdGlvbiB0aW1lb3V0KHByb3BzKSB7XG4gICAgdmFyIHB0ID0gdGltZW91dHNTaGFwZTtcbiAgICBpZiAoIXByb3BzLmFkZEVuZExpc3RlbmVyKSBwdCA9IHB0LmlzUmVxdWlyZWQ7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHQuYXBwbHkodm9pZCAwLCBbcHJvcHNdLmNvbmNhdChhcmdzKSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEFkZCBhIGN1c3RvbSB0cmFuc2l0aW9uIGVuZCB0cmlnZ2VyLiBDYWxsZWQgd2l0aCB0aGUgdHJhbnNpdGlvbmluZ1xuICAgKiBET00gbm9kZSBhbmQgYSBgZG9uZWAgY2FsbGJhY2suIEFsbG93cyBmb3IgbW9yZSBmaW5lIGdyYWluZWQgdHJhbnNpdGlvbiBlbmRcbiAgICogbG9naWMuIFRpbWVvdXRzIGFyZSBzdGlsbCB1c2VkIGFzIGEgZmFsbGJhY2sgaWYgcHJvdmlkZWQuXG4gICAqXG4gICAqICoqTm90ZSoqOiB3aGVuIGBub2RlUmVmYCBwcm9wIGlzIHBhc3NlZCwgYG5vZGVgIGlzIG5vdCBwYXNzZWQuXG4gICAqXG4gICAqIGBgYGpzeFxuICAgKiBhZGRFbmRMaXN0ZW5lcj17KG5vZGUsIGRvbmUpID0+IHtcbiAgICogICAvLyB1c2UgdGhlIGNzcyB0cmFuc2l0aW9uZW5kIGV2ZW50IHRvIG1hcmsgdGhlIGZpbmlzaCBvZiBhIHRyYW5zaXRpb25cbiAgICogICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBkb25lLCBmYWxzZSk7XG4gICAqIH19XG4gICAqIGBgYFxuICAgKi9cbiAgYWRkRW5kTGlzdGVuZXI6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmaXJlZCBiZWZvcmUgdGhlIFwiZW50ZXJpbmdcIiBzdGF0dXMgaXMgYXBwbGllZC4gQW4gZXh0cmEgcGFyYW1ldGVyXG4gICAqIGBpc0FwcGVhcmluZ2AgaXMgc3VwcGxpZWQgdG8gaW5kaWNhdGUgaWYgdGhlIGVudGVyIHN0YWdlIGlzIG9jY3VycmluZyBvbiB0aGUgaW5pdGlhbCBtb3VudFxuICAgKlxuICAgKiAqKk5vdGUqKjogd2hlbiBgbm9kZVJlZmAgcHJvcCBpcyBwYXNzZWQsIGBub2RlYCBpcyBub3QgcGFzc2VkLlxuICAgKlxuICAgKiBAdHlwZSBGdW5jdGlvbihub2RlOiBIdG1sRWxlbWVudCwgaXNBcHBlYXJpbmc6IGJvb2wpIC0+IHZvaWRcbiAgICovXG4gIG9uRW50ZXI6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmaXJlZCBhZnRlciB0aGUgXCJlbnRlcmluZ1wiIHN0YXR1cyBpcyBhcHBsaWVkLiBBbiBleHRyYSBwYXJhbWV0ZXJcbiAgICogYGlzQXBwZWFyaW5nYCBpcyBzdXBwbGllZCB0byBpbmRpY2F0ZSBpZiB0aGUgZW50ZXIgc3RhZ2UgaXMgb2NjdXJyaW5nIG9uIHRoZSBpbml0aWFsIG1vdW50XG4gICAqXG4gICAqICoqTm90ZSoqOiB3aGVuIGBub2RlUmVmYCBwcm9wIGlzIHBhc3NlZCwgYG5vZGVgIGlzIG5vdCBwYXNzZWQuXG4gICAqXG4gICAqIEB0eXBlIEZ1bmN0aW9uKG5vZGU6IEh0bWxFbGVtZW50LCBpc0FwcGVhcmluZzogYm9vbClcbiAgICovXG4gIG9uRW50ZXJpbmc6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmaXJlZCBhZnRlciB0aGUgXCJlbnRlcmVkXCIgc3RhdHVzIGlzIGFwcGxpZWQuIEFuIGV4dHJhIHBhcmFtZXRlclxuICAgKiBgaXNBcHBlYXJpbmdgIGlzIHN1cHBsaWVkIHRvIGluZGljYXRlIGlmIHRoZSBlbnRlciBzdGFnZSBpcyBvY2N1cnJpbmcgb24gdGhlIGluaXRpYWwgbW91bnRcbiAgICpcbiAgICogKipOb3RlKio6IHdoZW4gYG5vZGVSZWZgIHByb3AgaXMgcGFzc2VkLCBgbm9kZWAgaXMgbm90IHBhc3NlZC5cbiAgICpcbiAgICogQHR5cGUgRnVuY3Rpb24obm9kZTogSHRtbEVsZW1lbnQsIGlzQXBwZWFyaW5nOiBib29sKSAtPiB2b2lkXG4gICAqL1xuICBvbkVudGVyZWQ6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmaXJlZCBiZWZvcmUgdGhlIFwiZXhpdGluZ1wiIHN0YXR1cyBpcyBhcHBsaWVkLlxuICAgKlxuICAgKiAqKk5vdGUqKjogd2hlbiBgbm9kZVJlZmAgcHJvcCBpcyBwYXNzZWQsIGBub2RlYCBpcyBub3QgcGFzc2VkLlxuICAgKlxuICAgKiBAdHlwZSBGdW5jdGlvbihub2RlOiBIdG1sRWxlbWVudCkgLT4gdm9pZFxuICAgKi9cbiAgb25FeGl0OiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgYWZ0ZXIgdGhlIFwiZXhpdGluZ1wiIHN0YXR1cyBpcyBhcHBsaWVkLlxuICAgKlxuICAgKiAqKk5vdGUqKjogd2hlbiBgbm9kZVJlZmAgcHJvcCBpcyBwYXNzZWQsIGBub2RlYCBpcyBub3QgcGFzc2VkLlxuICAgKlxuICAgKiBAdHlwZSBGdW5jdGlvbihub2RlOiBIdG1sRWxlbWVudCkgLT4gdm9pZFxuICAgKi9cbiAgb25FeGl0aW5nOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgYWZ0ZXIgdGhlIFwiZXhpdGVkXCIgc3RhdHVzIGlzIGFwcGxpZWQuXG4gICAqXG4gICAqICoqTm90ZSoqOiB3aGVuIGBub2RlUmVmYCBwcm9wIGlzIHBhc3NlZCwgYG5vZGVgIGlzIG5vdCBwYXNzZWRcbiAgICpcbiAgICogQHR5cGUgRnVuY3Rpb24obm9kZTogSHRtbEVsZW1lbnQpIC0+IHZvaWRcbiAgICovXG4gIG9uRXhpdGVkOiBQcm9wVHlwZXMuZnVuY1xufSA6IHt9OyAvLyBOYW1lIHRoZSBmdW5jdGlvbiBzbyBpdCBpcyBjbGVhcmVyIGluIHRoZSBkb2N1bWVudGF0aW9uXG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5UcmFuc2l0aW9uLmRlZmF1bHRQcm9wcyA9IHtcbiAgaW46IGZhbHNlLFxuICBtb3VudE9uRW50ZXI6IGZhbHNlLFxuICB1bm1vdW50T25FeGl0OiBmYWxzZSxcbiAgYXBwZWFyOiBmYWxzZSxcbiAgZW50ZXI6IHRydWUsXG4gIGV4aXQ6IHRydWUsXG4gIG9uRW50ZXI6IG5vb3AsXG4gIG9uRW50ZXJpbmc6IG5vb3AsXG4gIG9uRW50ZXJlZDogbm9vcCxcbiAgb25FeGl0OiBub29wLFxuICBvbkV4aXRpbmc6IG5vb3AsXG4gIG9uRXhpdGVkOiBub29wXG59O1xuVHJhbnNpdGlvbi5VTk1PVU5URUQgPSBVTk1PVU5URUQ7XG5UcmFuc2l0aW9uLkVYSVRFRCA9IEVYSVRFRDtcblRyYW5zaXRpb24uRU5URVJJTkcgPSBFTlRFUklORztcblRyYW5zaXRpb24uRU5URVJFRCA9IEVOVEVSRUQ7XG5UcmFuc2l0aW9uLkVYSVRJTkcgPSBFWElUSU5HO1xuZXhwb3J0IGRlZmF1bHQgVHJhbnNpdGlvbjsiLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuaW1wb3J0IF9pbmhlcml0c0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c0xvb3NlXCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGFkZE9uZUNsYXNzIGZyb20gJ2RvbS1oZWxwZXJzL2FkZENsYXNzJztcbmltcG9ydCByZW1vdmVPbmVDbGFzcyBmcm9tICdkb20taGVscGVycy9yZW1vdmVDbGFzcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFRyYW5zaXRpb24gZnJvbSAnLi9UcmFuc2l0aW9uJztcbmltcG9ydCB7IGNsYXNzTmFtZXNTaGFwZSB9IGZyb20gJy4vdXRpbHMvUHJvcFR5cGVzJztcbmltcG9ydCB7IGZvcmNlUmVmbG93IH0gZnJvbSAnLi91dGlscy9yZWZsb3cnO1xuXG52YXIgX2FkZENsYXNzID0gZnVuY3Rpb24gYWRkQ2xhc3Mobm9kZSwgY2xhc3Nlcykge1xuICByZXR1cm4gbm9kZSAmJiBjbGFzc2VzICYmIGNsYXNzZXMuc3BsaXQoJyAnKS5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7XG4gICAgcmV0dXJuIGFkZE9uZUNsYXNzKG5vZGUsIGMpO1xuICB9KTtcbn07XG5cbnZhciByZW1vdmVDbGFzcyA9IGZ1bmN0aW9uIHJlbW92ZUNsYXNzKG5vZGUsIGNsYXNzZXMpIHtcbiAgcmV0dXJuIG5vZGUgJiYgY2xhc3NlcyAmJiBjbGFzc2VzLnNwbGl0KCcgJykuZm9yRWFjaChmdW5jdGlvbiAoYykge1xuICAgIHJldHVybiByZW1vdmVPbmVDbGFzcyhub2RlLCBjKTtcbiAgfSk7XG59O1xuLyoqXG4gKiBBIHRyYW5zaXRpb24gY29tcG9uZW50IGluc3BpcmVkIGJ5IHRoZSBleGNlbGxlbnRcbiAqIFtuZy1hbmltYXRlXShodHRwczovL2RvY3MuYW5ndWxhcmpzLm9yZy9hcGkvbmdBbmltYXRlKSBsaWJyYXJ5LCB5b3Ugc2hvdWxkXG4gKiB1c2UgaXQgaWYgeW91J3JlIHVzaW5nIENTUyB0cmFuc2l0aW9ucyBvciBhbmltYXRpb25zLiBJdCdzIGJ1aWx0IHVwb24gdGhlXG4gKiBbYFRyYW5zaXRpb25gXShodHRwczovL3JlYWN0Y29tbXVuaXR5Lm9yZy9yZWFjdC10cmFuc2l0aW9uLWdyb3VwL3RyYW5zaXRpb24pXG4gKiBjb21wb25lbnQsIHNvIGl0IGluaGVyaXRzIGFsbCBvZiBpdHMgcHJvcHMuXG4gKlxuICogYENTU1RyYW5zaXRpb25gIGFwcGxpZXMgYSBwYWlyIG9mIGNsYXNzIG5hbWVzIGR1cmluZyB0aGUgYGFwcGVhcmAsIGBlbnRlcmAsXG4gKiBhbmQgYGV4aXRgIHN0YXRlcyBvZiB0aGUgdHJhbnNpdGlvbi4gVGhlIGZpcnN0IGNsYXNzIGlzIGFwcGxpZWQgYW5kIHRoZW4gYVxuICogc2Vjb25kIGAqLWFjdGl2ZWAgY2xhc3MgaW4gb3JkZXIgdG8gYWN0aXZhdGUgdGhlIENTUyB0cmFuc2l0aW9uLiBBZnRlciB0aGVcbiAqIHRyYW5zaXRpb24sIG1hdGNoaW5nIGAqLWRvbmVgIGNsYXNzIG5hbWVzIGFyZSBhcHBsaWVkIHRvIHBlcnNpc3QgdGhlXG4gKiB0cmFuc2l0aW9uIHN0YXRlLlxuICpcbiAqIGBgYGpzeFxuICogZnVuY3Rpb24gQXBwKCkge1xuICogICBjb25zdCBbaW5Qcm9wLCBzZXRJblByb3BdID0gdXNlU3RhdGUoZmFsc2UpO1xuICogICByZXR1cm4gKFxuICogICAgIDxkaXY+XG4gKiAgICAgICA8Q1NTVHJhbnNpdGlvbiBpbj17aW5Qcm9wfSB0aW1lb3V0PXsyMDB9IGNsYXNzTmFtZXM9XCJteS1ub2RlXCI+XG4gKiAgICAgICAgIDxkaXY+XG4gKiAgICAgICAgICAge1wiSSdsbCByZWNlaXZlIG15LW5vZGUtKiBjbGFzc2VzXCJ9XG4gKiAgICAgICAgIDwvZGl2PlxuICogICAgICAgPC9DU1NUcmFuc2l0aW9uPlxuICogICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17KCkgPT4gc2V0SW5Qcm9wKHRydWUpfT5cbiAqICAgICAgICAgQ2xpY2sgdG8gRW50ZXJcbiAqICAgICAgIDwvYnV0dG9uPlxuICogICAgIDwvZGl2PlxuICogICApO1xuICogfVxuICogYGBgXG4gKlxuICogV2hlbiB0aGUgYGluYCBwcm9wIGlzIHNldCB0byBgdHJ1ZWAsIHRoZSBjaGlsZCBjb21wb25lbnQgd2lsbCBmaXJzdCByZWNlaXZlXG4gKiB0aGUgY2xhc3MgYGV4YW1wbGUtZW50ZXJgLCB0aGVuIHRoZSBgZXhhbXBsZS1lbnRlci1hY3RpdmVgIHdpbGwgYmUgYWRkZWQgaW5cbiAqIHRoZSBuZXh0IHRpY2suIGBDU1NUcmFuc2l0aW9uYCBbZm9yY2VzIGFcbiAqIHJlZmxvd10oaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0anMvcmVhY3QtdHJhbnNpdGlvbi1ncm91cC9ibG9iLzUwMDczMDNlNzI5YTc0YmU2NmEyMWMzZTIyMDVlNDkxNjgyMTUyNGIvc3JjL0NTU1RyYW5zaXRpb24uanMjTDIwOC1MMjE1KVxuICogYmV0d2VlbiBiZWZvcmUgYWRkaW5nIHRoZSBgZXhhbXBsZS1lbnRlci1hY3RpdmVgLiBUaGlzIGlzIGFuIGltcG9ydGFudCB0cmlja1xuICogYmVjYXVzZSBpdCBhbGxvd3MgdXMgdG8gdHJhbnNpdGlvbiBiZXR3ZWVuIGBleGFtcGxlLWVudGVyYCBhbmRcbiAqIGBleGFtcGxlLWVudGVyLWFjdGl2ZWAgZXZlbiB0aG91Z2ggdGhleSB3ZXJlIGFkZGVkIGltbWVkaWF0ZWx5IG9uZSBhZnRlclxuICogYW5vdGhlci4gTW9zdCBub3RhYmx5LCB0aGlzIGlzIHdoYXQgbWFrZXMgaXQgcG9zc2libGUgZm9yIHVzIHRvIGFuaW1hdGVcbiAqIF9hcHBlYXJhbmNlXy5cbiAqXG4gKiBgYGBjc3NcbiAqIC5teS1ub2RlLWVudGVyIHtcbiAqICAgb3BhY2l0eTogMDtcbiAqIH1cbiAqIC5teS1ub2RlLWVudGVyLWFjdGl2ZSB7XG4gKiAgIG9wYWNpdHk6IDE7XG4gKiAgIHRyYW5zaXRpb246IG9wYWNpdHkgMjAwbXM7XG4gKiB9XG4gKiAubXktbm9kZS1leGl0IHtcbiAqICAgb3BhY2l0eTogMTtcbiAqIH1cbiAqIC5teS1ub2RlLWV4aXQtYWN0aXZlIHtcbiAqICAgb3BhY2l0eTogMDtcbiAqICAgdHJhbnNpdGlvbjogb3BhY2l0eSAyMDBtcztcbiAqIH1cbiAqIGBgYFxuICpcbiAqIGAqLWFjdGl2ZWAgY2xhc3NlcyByZXByZXNlbnQgd2hpY2ggc3R5bGVzIHlvdSB3YW50IHRvIGFuaW1hdGUgKip0byoqLCBzbyBpdCdzXG4gKiBpbXBvcnRhbnQgdG8gYWRkIGB0cmFuc2l0aW9uYCBkZWNsYXJhdGlvbiBvbmx5IHRvIHRoZW0sIG90aGVyd2lzZSB0cmFuc2l0aW9uc1xuICogbWlnaHQgbm90IGJlaGF2ZSBhcyBpbnRlbmRlZCEgVGhpcyBtaWdodCBub3QgYmUgb2J2aW91cyB3aGVuIHRoZSB0cmFuc2l0aW9uc1xuICogYXJlIHN5bW1ldHJpY2FsLCBpLmUuIHdoZW4gYCotZW50ZXItYWN0aXZlYCBpcyB0aGUgc2FtZSBhcyBgKi1leGl0YCwgbGlrZSBpblxuICogdGhlIGV4YW1wbGUgYWJvdmUgKG1pbnVzIGB0cmFuc2l0aW9uYCksIGJ1dCBpdCBiZWNvbWVzIGFwcGFyZW50IGluIG1vcmVcbiAqIGNvbXBsZXggdHJhbnNpdGlvbnMuXG4gKlxuICogKipOb3RlKio6IElmIHlvdSdyZSB1c2luZyB0aGVcbiAqIFtgYXBwZWFyYF0oaHR0cDovL3JlYWN0Y29tbXVuaXR5Lm9yZy9yZWFjdC10cmFuc2l0aW9uLWdyb3VwL3RyYW5zaXRpb24jVHJhbnNpdGlvbi1wcm9wLWFwcGVhcilcbiAqIHByb3AsIG1ha2Ugc3VyZSB0byBkZWZpbmUgc3R5bGVzIGZvciBgLmFwcGVhci0qYCBjbGFzc2VzIGFzIHdlbGwuXG4gKi9cblxuXG52YXIgQ1NTVHJhbnNpdGlvbiA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHNMb29zZShDU1NUcmFuc2l0aW9uLCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICBmdW5jdGlvbiBDU1NUcmFuc2l0aW9uKCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9SZWFjdCRDb21wb25lbnQuY2FsbC5hcHBseShfUmVhY3QkQ29tcG9uZW50LCBbdGhpc10uY29uY2F0KGFyZ3MpKSB8fCB0aGlzO1xuICAgIF90aGlzLmFwcGxpZWRDbGFzc2VzID0ge1xuICAgICAgYXBwZWFyOiB7fSxcbiAgICAgIGVudGVyOiB7fSxcbiAgICAgIGV4aXQ6IHt9XG4gICAgfTtcblxuICAgIF90aGlzLm9uRW50ZXIgPSBmdW5jdGlvbiAobWF5YmVOb2RlLCBtYXliZUFwcGVhcmluZykge1xuICAgICAgdmFyIF90aGlzJHJlc29sdmVBcmd1bWVudCA9IF90aGlzLnJlc29sdmVBcmd1bWVudHMobWF5YmVOb2RlLCBtYXliZUFwcGVhcmluZyksXG4gICAgICAgICAgbm9kZSA9IF90aGlzJHJlc29sdmVBcmd1bWVudFswXSxcbiAgICAgICAgICBhcHBlYXJpbmcgPSBfdGhpcyRyZXNvbHZlQXJndW1lbnRbMV07XG5cbiAgICAgIF90aGlzLnJlbW92ZUNsYXNzZXMobm9kZSwgJ2V4aXQnKTtcblxuICAgICAgX3RoaXMuYWRkQ2xhc3Mobm9kZSwgYXBwZWFyaW5nID8gJ2FwcGVhcicgOiAnZW50ZXInLCAnYmFzZScpO1xuXG4gICAgICBpZiAoX3RoaXMucHJvcHMub25FbnRlcikge1xuICAgICAgICBfdGhpcy5wcm9wcy5vbkVudGVyKG1heWJlTm9kZSwgbWF5YmVBcHBlYXJpbmcpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfdGhpcy5vbkVudGVyaW5nID0gZnVuY3Rpb24gKG1heWJlTm9kZSwgbWF5YmVBcHBlYXJpbmcpIHtcbiAgICAgIHZhciBfdGhpcyRyZXNvbHZlQXJndW1lbnQyID0gX3RoaXMucmVzb2x2ZUFyZ3VtZW50cyhtYXliZU5vZGUsIG1heWJlQXBwZWFyaW5nKSxcbiAgICAgICAgICBub2RlID0gX3RoaXMkcmVzb2x2ZUFyZ3VtZW50MlswXSxcbiAgICAgICAgICBhcHBlYXJpbmcgPSBfdGhpcyRyZXNvbHZlQXJndW1lbnQyWzFdO1xuXG4gICAgICB2YXIgdHlwZSA9IGFwcGVhcmluZyA/ICdhcHBlYXInIDogJ2VudGVyJztcblxuICAgICAgX3RoaXMuYWRkQ2xhc3Mobm9kZSwgdHlwZSwgJ2FjdGl2ZScpO1xuXG4gICAgICBpZiAoX3RoaXMucHJvcHMub25FbnRlcmluZykge1xuICAgICAgICBfdGhpcy5wcm9wcy5vbkVudGVyaW5nKG1heWJlTm9kZSwgbWF5YmVBcHBlYXJpbmcpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfdGhpcy5vbkVudGVyZWQgPSBmdW5jdGlvbiAobWF5YmVOb2RlLCBtYXliZUFwcGVhcmluZykge1xuICAgICAgdmFyIF90aGlzJHJlc29sdmVBcmd1bWVudDMgPSBfdGhpcy5yZXNvbHZlQXJndW1lbnRzKG1heWJlTm9kZSwgbWF5YmVBcHBlYXJpbmcpLFxuICAgICAgICAgIG5vZGUgPSBfdGhpcyRyZXNvbHZlQXJndW1lbnQzWzBdLFxuICAgICAgICAgIGFwcGVhcmluZyA9IF90aGlzJHJlc29sdmVBcmd1bWVudDNbMV07XG5cbiAgICAgIHZhciB0eXBlID0gYXBwZWFyaW5nID8gJ2FwcGVhcicgOiAnZW50ZXInO1xuXG4gICAgICBfdGhpcy5yZW1vdmVDbGFzc2VzKG5vZGUsIHR5cGUpO1xuXG4gICAgICBfdGhpcy5hZGRDbGFzcyhub2RlLCB0eXBlLCAnZG9uZScpO1xuXG4gICAgICBpZiAoX3RoaXMucHJvcHMub25FbnRlcmVkKSB7XG4gICAgICAgIF90aGlzLnByb3BzLm9uRW50ZXJlZChtYXliZU5vZGUsIG1heWJlQXBwZWFyaW5nKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX3RoaXMub25FeGl0ID0gZnVuY3Rpb24gKG1heWJlTm9kZSkge1xuICAgICAgdmFyIF90aGlzJHJlc29sdmVBcmd1bWVudDQgPSBfdGhpcy5yZXNvbHZlQXJndW1lbnRzKG1heWJlTm9kZSksXG4gICAgICAgICAgbm9kZSA9IF90aGlzJHJlc29sdmVBcmd1bWVudDRbMF07XG5cbiAgICAgIF90aGlzLnJlbW92ZUNsYXNzZXMobm9kZSwgJ2FwcGVhcicpO1xuXG4gICAgICBfdGhpcy5yZW1vdmVDbGFzc2VzKG5vZGUsICdlbnRlcicpO1xuXG4gICAgICBfdGhpcy5hZGRDbGFzcyhub2RlLCAnZXhpdCcsICdiYXNlJyk7XG5cbiAgICAgIGlmIChfdGhpcy5wcm9wcy5vbkV4aXQpIHtcbiAgICAgICAgX3RoaXMucHJvcHMub25FeGl0KG1heWJlTm9kZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF90aGlzLm9uRXhpdGluZyA9IGZ1bmN0aW9uIChtYXliZU5vZGUpIHtcbiAgICAgIHZhciBfdGhpcyRyZXNvbHZlQXJndW1lbnQ1ID0gX3RoaXMucmVzb2x2ZUFyZ3VtZW50cyhtYXliZU5vZGUpLFxuICAgICAgICAgIG5vZGUgPSBfdGhpcyRyZXNvbHZlQXJndW1lbnQ1WzBdO1xuXG4gICAgICBfdGhpcy5hZGRDbGFzcyhub2RlLCAnZXhpdCcsICdhY3RpdmUnKTtcblxuICAgICAgaWYgKF90aGlzLnByb3BzLm9uRXhpdGluZykge1xuICAgICAgICBfdGhpcy5wcm9wcy5vbkV4aXRpbmcobWF5YmVOb2RlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX3RoaXMub25FeGl0ZWQgPSBmdW5jdGlvbiAobWF5YmVOb2RlKSB7XG4gICAgICB2YXIgX3RoaXMkcmVzb2x2ZUFyZ3VtZW50NiA9IF90aGlzLnJlc29sdmVBcmd1bWVudHMobWF5YmVOb2RlKSxcbiAgICAgICAgICBub2RlID0gX3RoaXMkcmVzb2x2ZUFyZ3VtZW50NlswXTtcblxuICAgICAgX3RoaXMucmVtb3ZlQ2xhc3Nlcyhub2RlLCAnZXhpdCcpO1xuXG4gICAgICBfdGhpcy5hZGRDbGFzcyhub2RlLCAnZXhpdCcsICdkb25lJyk7XG5cbiAgICAgIGlmIChfdGhpcy5wcm9wcy5vbkV4aXRlZCkge1xuICAgICAgICBfdGhpcy5wcm9wcy5vbkV4aXRlZChtYXliZU5vZGUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfdGhpcy5yZXNvbHZlQXJndW1lbnRzID0gZnVuY3Rpb24gKG1heWJlTm9kZSwgbWF5YmVBcHBlYXJpbmcpIHtcbiAgICAgIHJldHVybiBfdGhpcy5wcm9wcy5ub2RlUmVmID8gW190aGlzLnByb3BzLm5vZGVSZWYuY3VycmVudCwgbWF5YmVOb2RlXSAvLyBoZXJlIGBtYXliZU5vZGVgIGlzIGFjdHVhbGx5IGBhcHBlYXJpbmdgXG4gICAgICA6IFttYXliZU5vZGUsIG1heWJlQXBwZWFyaW5nXTtcbiAgICB9O1xuXG4gICAgX3RoaXMuZ2V0Q2xhc3NOYW1lcyA9IGZ1bmN0aW9uICh0eXBlKSB7XG4gICAgICB2YXIgY2xhc3NOYW1lcyA9IF90aGlzLnByb3BzLmNsYXNzTmFtZXM7XG4gICAgICB2YXIgaXNTdHJpbmdDbGFzc05hbWVzID0gdHlwZW9mIGNsYXNzTmFtZXMgPT09ICdzdHJpbmcnO1xuICAgICAgdmFyIHByZWZpeCA9IGlzU3RyaW5nQ2xhc3NOYW1lcyAmJiBjbGFzc05hbWVzID8gY2xhc3NOYW1lcyArIFwiLVwiIDogJyc7XG4gICAgICB2YXIgYmFzZUNsYXNzTmFtZSA9IGlzU3RyaW5nQ2xhc3NOYW1lcyA/IFwiXCIgKyBwcmVmaXggKyB0eXBlIDogY2xhc3NOYW1lc1t0eXBlXTtcbiAgICAgIHZhciBhY3RpdmVDbGFzc05hbWUgPSBpc1N0cmluZ0NsYXNzTmFtZXMgPyBiYXNlQ2xhc3NOYW1lICsgXCItYWN0aXZlXCIgOiBjbGFzc05hbWVzW3R5cGUgKyBcIkFjdGl2ZVwiXTtcbiAgICAgIHZhciBkb25lQ2xhc3NOYW1lID0gaXNTdHJpbmdDbGFzc05hbWVzID8gYmFzZUNsYXNzTmFtZSArIFwiLWRvbmVcIiA6IGNsYXNzTmFtZXNbdHlwZSArIFwiRG9uZVwiXTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhc2VDbGFzc05hbWU6IGJhc2VDbGFzc05hbWUsXG4gICAgICAgIGFjdGl2ZUNsYXNzTmFtZTogYWN0aXZlQ2xhc3NOYW1lLFxuICAgICAgICBkb25lQ2xhc3NOYW1lOiBkb25lQ2xhc3NOYW1lXG4gICAgICB9O1xuICAgIH07XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICB2YXIgX3Byb3RvID0gQ1NTVHJhbnNpdGlvbi5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLmFkZENsYXNzID0gZnVuY3Rpb24gYWRkQ2xhc3Mobm9kZSwgdHlwZSwgcGhhc2UpIHtcbiAgICB2YXIgY2xhc3NOYW1lID0gdGhpcy5nZXRDbGFzc05hbWVzKHR5cGUpW3BoYXNlICsgXCJDbGFzc05hbWVcIl07XG5cbiAgICB2YXIgX3RoaXMkZ2V0Q2xhc3NOYW1lcyA9IHRoaXMuZ2V0Q2xhc3NOYW1lcygnZW50ZXInKSxcbiAgICAgICAgZG9uZUNsYXNzTmFtZSA9IF90aGlzJGdldENsYXNzTmFtZXMuZG9uZUNsYXNzTmFtZTtcblxuICAgIGlmICh0eXBlID09PSAnYXBwZWFyJyAmJiBwaGFzZSA9PT0gJ2RvbmUnICYmIGRvbmVDbGFzc05hbWUpIHtcbiAgICAgIGNsYXNzTmFtZSArPSBcIiBcIiArIGRvbmVDbGFzc05hbWU7XG4gICAgfSAvLyBUaGlzIGlzIHRvIGZvcmNlIGEgcmVwYWludCxcbiAgICAvLyB3aGljaCBpcyBuZWNlc3NhcnkgaW4gb3JkZXIgdG8gdHJhbnNpdGlvbiBzdHlsZXMgd2hlbiBhZGRpbmcgYSBjbGFzcyBuYW1lLlxuXG5cbiAgICBpZiAocGhhc2UgPT09ICdhY3RpdmUnKSB7XG4gICAgICBpZiAobm9kZSkgZm9yY2VSZWZsb3cobm9kZSk7XG4gICAgfVxuXG4gICAgaWYgKGNsYXNzTmFtZSkge1xuICAgICAgdGhpcy5hcHBsaWVkQ2xhc3Nlc1t0eXBlXVtwaGFzZV0gPSBjbGFzc05hbWU7XG5cbiAgICAgIF9hZGRDbGFzcyhub2RlLCBjbGFzc05hbWUpO1xuICAgIH1cbiAgfTtcblxuICBfcHJvdG8ucmVtb3ZlQ2xhc3NlcyA9IGZ1bmN0aW9uIHJlbW92ZUNsYXNzZXMobm9kZSwgdHlwZSkge1xuICAgIHZhciBfdGhpcyRhcHBsaWVkQ2xhc3NlcyQgPSB0aGlzLmFwcGxpZWRDbGFzc2VzW3R5cGVdLFxuICAgICAgICBiYXNlQ2xhc3NOYW1lID0gX3RoaXMkYXBwbGllZENsYXNzZXMkLmJhc2UsXG4gICAgICAgIGFjdGl2ZUNsYXNzTmFtZSA9IF90aGlzJGFwcGxpZWRDbGFzc2VzJC5hY3RpdmUsXG4gICAgICAgIGRvbmVDbGFzc05hbWUgPSBfdGhpcyRhcHBsaWVkQ2xhc3NlcyQuZG9uZTtcbiAgICB0aGlzLmFwcGxpZWRDbGFzc2VzW3R5cGVdID0ge307XG5cbiAgICBpZiAoYmFzZUNsYXNzTmFtZSkge1xuICAgICAgcmVtb3ZlQ2xhc3Mobm9kZSwgYmFzZUNsYXNzTmFtZSk7XG4gICAgfVxuXG4gICAgaWYgKGFjdGl2ZUNsYXNzTmFtZSkge1xuICAgICAgcmVtb3ZlQ2xhc3Mobm9kZSwgYWN0aXZlQ2xhc3NOYW1lKTtcbiAgICB9XG5cbiAgICBpZiAoZG9uZUNsYXNzTmFtZSkge1xuICAgICAgcmVtb3ZlQ2xhc3Mobm9kZSwgZG9uZUNsYXNzTmFtZSk7XG4gICAgfVxuICB9O1xuXG4gIF9wcm90by5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgdmFyIF90aGlzJHByb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgXyA9IF90aGlzJHByb3BzLmNsYXNzTmFtZXMsXG4gICAgICAgIHByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX3RoaXMkcHJvcHMsIFtcImNsYXNzTmFtZXNcIl0pO1xuXG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFRyYW5zaXRpb24sIF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgb25FbnRlcjogdGhpcy5vbkVudGVyLFxuICAgICAgb25FbnRlcmVkOiB0aGlzLm9uRW50ZXJlZCxcbiAgICAgIG9uRW50ZXJpbmc6IHRoaXMub25FbnRlcmluZyxcbiAgICAgIG9uRXhpdDogdGhpcy5vbkV4aXQsXG4gICAgICBvbkV4aXRpbmc6IHRoaXMub25FeGl0aW5nLFxuICAgICAgb25FeGl0ZWQ6IHRoaXMub25FeGl0ZWRcbiAgICB9KSk7XG4gIH07XG5cbiAgcmV0dXJuIENTU1RyYW5zaXRpb247XG59KFJlYWN0LkNvbXBvbmVudCk7XG5cbkNTU1RyYW5zaXRpb24uZGVmYXVsdFByb3BzID0ge1xuICBjbGFzc05hbWVzOiAnJ1xufTtcbkNTU1RyYW5zaXRpb24ucHJvcFR5cGVzID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gX2V4dGVuZHMoe30sIFRyYW5zaXRpb24ucHJvcFR5cGVzLCB7XG4gIC8qKlxuICAgKiBUaGUgYW5pbWF0aW9uIGNsYXNzTmFtZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50IGFzIGl0IGFwcGVhcnMsIGVudGVycyxcbiAgICogZXhpdHMgb3IgaGFzIGZpbmlzaGVkIHRoZSB0cmFuc2l0aW9uLiBBIHNpbmdsZSBuYW1lIGNhbiBiZSBwcm92aWRlZCwgd2hpY2hcbiAgICogd2lsbCBiZSBzdWZmaXhlZCBmb3IgZWFjaCBzdGFnZSwgZS5nLiBgY2xhc3NOYW1lcz1cImZhZGVcImAgYXBwbGllczpcbiAgICpcbiAgICogLSBgZmFkZS1hcHBlYXJgLCBgZmFkZS1hcHBlYXItYWN0aXZlYCwgYGZhZGUtYXBwZWFyLWRvbmVgXG4gICAqIC0gYGZhZGUtZW50ZXJgLCBgZmFkZS1lbnRlci1hY3RpdmVgLCBgZmFkZS1lbnRlci1kb25lYFxuICAgKiAtIGBmYWRlLWV4aXRgLCBgZmFkZS1leGl0LWFjdGl2ZWAsIGBmYWRlLWV4aXQtZG9uZWBcbiAgICpcbiAgICogQSBmZXcgZGV0YWlscyB0byBub3RlIGFib3V0IGhvdyB0aGVzZSBjbGFzc2VzIGFyZSBhcHBsaWVkOlxuICAgKlxuICAgKiAxLiBUaGV5IGFyZSBfam9pbmVkXyB3aXRoIHRoZSBvbmVzIHRoYXQgYXJlIGFscmVhZHkgZGVmaW5lZCBvbiB0aGUgY2hpbGRcbiAgICogICAgY29tcG9uZW50LCBzbyBpZiB5b3Ugd2FudCB0byBhZGQgc29tZSBiYXNlIHN0eWxlcywgeW91IGNhbiB1c2VcbiAgICogICAgYGNsYXNzTmFtZWAgd2l0aG91dCB3b3JyeWluZyB0aGF0IGl0IHdpbGwgYmUgb3ZlcnJpZGRlbi5cbiAgICpcbiAgICogMi4gSWYgdGhlIHRyYW5zaXRpb24gY29tcG9uZW50IG1vdW50cyB3aXRoIGBpbj17ZmFsc2V9YCwgbm8gY2xhc3NlcyBhcmVcbiAgICogICAgYXBwbGllZCB5ZXQuIFlvdSBtaWdodCBiZSBleHBlY3RpbmcgYCotZXhpdC1kb25lYCwgYnV0IGlmIHlvdSB0aGlua1xuICAgKiAgICBhYm91dCBpdCwgYSBjb21wb25lbnQgY2Fubm90IGZpbmlzaCBleGl0aW5nIGlmIGl0IGhhc24ndCBlbnRlcmVkIHlldC5cbiAgICpcbiAgICogMi4gYGZhZGUtYXBwZWFyLWRvbmVgIGFuZCBgZmFkZS1lbnRlci1kb25lYCB3aWxsIF9ib3RoXyBiZSBhcHBsaWVkLiBUaGlzXG4gICAqICAgIGFsbG93cyB5b3UgdG8gZGVmaW5lIGRpZmZlcmVudCBiZWhhdmlvciBmb3Igd2hlbiBhcHBlYXJpbmcgaXMgZG9uZSBhbmRcbiAgICogICAgd2hlbiByZWd1bGFyIGVudGVyaW5nIGlzIGRvbmUsIHVzaW5nIHNlbGVjdG9ycyBsaWtlXG4gICAqICAgIGAuZmFkZS1lbnRlci1kb25lOm5vdCguZmFkZS1hcHBlYXItZG9uZSlgLiBGb3IgZXhhbXBsZSwgeW91IGNvdWxkIGFwcGx5XG4gICAqICAgIGFuIGVwaWMgZW50cmFuY2UgYW5pbWF0aW9uIHdoZW4gZWxlbWVudCBmaXJzdCBhcHBlYXJzIGluIHRoZSBET00gdXNpbmdcbiAgICogICAgW0FuaW1hdGUuY3NzXShodHRwczovL2RhbmVkZW4uZ2l0aHViLmlvL2FuaW1hdGUuY3NzLykuIE90aGVyd2lzZSB5b3UgY2FuXG4gICAqICAgIHNpbXBseSB1c2UgYGZhZGUtZW50ZXItZG9uZWAgZm9yIGRlZmluaW5nIGJvdGggY2FzZXMuXG4gICAqXG4gICAqIEVhY2ggaW5kaXZpZHVhbCBjbGFzc05hbWVzIGNhbiBhbHNvIGJlIHNwZWNpZmllZCBpbmRlcGVuZGVudGx5IGxpa2U6XG4gICAqXG4gICAqIGBgYGpzXG4gICAqIGNsYXNzTmFtZXM9e3tcbiAgICogIGFwcGVhcjogJ215LWFwcGVhcicsXG4gICAqICBhcHBlYXJBY3RpdmU6ICdteS1hY3RpdmUtYXBwZWFyJyxcbiAgICogIGFwcGVhckRvbmU6ICdteS1kb25lLWFwcGVhcicsXG4gICAqICBlbnRlcjogJ215LWVudGVyJyxcbiAgICogIGVudGVyQWN0aXZlOiAnbXktYWN0aXZlLWVudGVyJyxcbiAgICogIGVudGVyRG9uZTogJ215LWRvbmUtZW50ZXInLFxuICAgKiAgZXhpdDogJ215LWV4aXQnLFxuICAgKiAgZXhpdEFjdGl2ZTogJ215LWFjdGl2ZS1leGl0JyxcbiAgICogIGV4aXREb25lOiAnbXktZG9uZS1leGl0JyxcbiAgICogfX1cbiAgICogYGBgXG4gICAqXG4gICAqIElmIHlvdSB3YW50IHRvIHNldCB0aGVzZSBjbGFzc2VzIHVzaW5nIENTUyBNb2R1bGVzOlxuICAgKlxuICAgKiBgYGBqc1xuICAgKiBpbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzLmNzcyc7XG4gICAqIGBgYFxuICAgKlxuICAgKiB5b3UgbWlnaHQgd2FudCB0byB1c2UgY2FtZWxDYXNlIGluIHlvdXIgQ1NTIGZpbGUsIHRoYXQgd2F5IGNvdWxkIHNpbXBseVxuICAgKiBzcHJlYWQgdGhlbSBpbnN0ZWFkIG9mIGxpc3RpbmcgdGhlbSBvbmUgYnkgb25lOlxuICAgKlxuICAgKiBgYGBqc1xuICAgKiBjbGFzc05hbWVzPXt7IC4uLnN0eWxlcyB9fVxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge3N0cmluZyB8IHtcbiAgICogIGFwcGVhcj86IHN0cmluZyxcbiAgICogIGFwcGVhckFjdGl2ZT86IHN0cmluZyxcbiAgICogIGFwcGVhckRvbmU/OiBzdHJpbmcsXG4gICAqICBlbnRlcj86IHN0cmluZyxcbiAgICogIGVudGVyQWN0aXZlPzogc3RyaW5nLFxuICAgKiAgZW50ZXJEb25lPzogc3RyaW5nLFxuICAgKiAgZXhpdD86IHN0cmluZyxcbiAgICogIGV4aXRBY3RpdmU/OiBzdHJpbmcsXG4gICAqICBleGl0RG9uZT86IHN0cmluZyxcbiAgICogfX1cbiAgICovXG4gIGNsYXNzTmFtZXM6IGNsYXNzTmFtZXNTaGFwZSxcblxuICAvKipcbiAgICogQSBgPFRyYW5zaXRpb24+YCBjYWxsYmFjayBmaXJlZCBpbW1lZGlhdGVseSBhZnRlciB0aGUgJ2VudGVyJyBvciAnYXBwZWFyJyBjbGFzcyBpc1xuICAgKiBhcHBsaWVkLlxuICAgKlxuICAgKiAqKk5vdGUqKjogd2hlbiBgbm9kZVJlZmAgcHJvcCBpcyBwYXNzZWQsIGBub2RlYCBpcyBub3QgcGFzc2VkLlxuICAgKlxuICAgKiBAdHlwZSBGdW5jdGlvbihub2RlOiBIdG1sRWxlbWVudCwgaXNBcHBlYXJpbmc6IGJvb2wpXG4gICAqL1xuICBvbkVudGVyOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogQSBgPFRyYW5zaXRpb24+YCBjYWxsYmFjayBmaXJlZCBpbW1lZGlhdGVseSBhZnRlciB0aGUgJ2VudGVyLWFjdGl2ZScgb3JcbiAgICogJ2FwcGVhci1hY3RpdmUnIGNsYXNzIGlzIGFwcGxpZWQuXG4gICAqXG4gICAqICoqTm90ZSoqOiB3aGVuIGBub2RlUmVmYCBwcm9wIGlzIHBhc3NlZCwgYG5vZGVgIGlzIG5vdCBwYXNzZWQuXG4gICAqXG4gICAqIEB0eXBlIEZ1bmN0aW9uKG5vZGU6IEh0bWxFbGVtZW50LCBpc0FwcGVhcmluZzogYm9vbClcbiAgICovXG4gIG9uRW50ZXJpbmc6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBBIGA8VHJhbnNpdGlvbj5gIGNhbGxiYWNrIGZpcmVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSAnZW50ZXInIG9yXG4gICAqICdhcHBlYXInIGNsYXNzZXMgYXJlICoqcmVtb3ZlZCoqIGFuZCB0aGUgYGRvbmVgIGNsYXNzIGlzIGFkZGVkIHRvIHRoZSBET00gbm9kZS5cbiAgICpcbiAgICogKipOb3RlKio6IHdoZW4gYG5vZGVSZWZgIHByb3AgaXMgcGFzc2VkLCBgbm9kZWAgaXMgbm90IHBhc3NlZC5cbiAgICpcbiAgICogQHR5cGUgRnVuY3Rpb24obm9kZTogSHRtbEVsZW1lbnQsIGlzQXBwZWFyaW5nOiBib29sKVxuICAgKi9cbiAgb25FbnRlcmVkOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogQSBgPFRyYW5zaXRpb24+YCBjYWxsYmFjayBmaXJlZCBpbW1lZGlhdGVseSBhZnRlciB0aGUgJ2V4aXQnIGNsYXNzIGlzXG4gICAqIGFwcGxpZWQuXG4gICAqXG4gICAqICoqTm90ZSoqOiB3aGVuIGBub2RlUmVmYCBwcm9wIGlzIHBhc3NlZCwgYG5vZGVgIGlzIG5vdCBwYXNzZWRcbiAgICpcbiAgICogQHR5cGUgRnVuY3Rpb24obm9kZTogSHRtbEVsZW1lbnQpXG4gICAqL1xuICBvbkV4aXQ6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBBIGA8VHJhbnNpdGlvbj5gIGNhbGxiYWNrIGZpcmVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSAnZXhpdC1hY3RpdmUnIGlzIGFwcGxpZWQuXG4gICAqXG4gICAqICoqTm90ZSoqOiB3aGVuIGBub2RlUmVmYCBwcm9wIGlzIHBhc3NlZCwgYG5vZGVgIGlzIG5vdCBwYXNzZWRcbiAgICpcbiAgICogQHR5cGUgRnVuY3Rpb24obm9kZTogSHRtbEVsZW1lbnQpXG4gICAqL1xuICBvbkV4aXRpbmc6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBBIGA8VHJhbnNpdGlvbj5gIGNhbGxiYWNrIGZpcmVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSAnZXhpdCcgY2xhc3Nlc1xuICAgKiBhcmUgKipyZW1vdmVkKiogYW5kIHRoZSBgZXhpdC1kb25lYCBjbGFzcyBpcyBhZGRlZCB0byB0aGUgRE9NIG5vZGUuXG4gICAqXG4gICAqICoqTm90ZSoqOiB3aGVuIGBub2RlUmVmYCBwcm9wIGlzIHBhc3NlZCwgYG5vZGVgIGlzIG5vdCBwYXNzZWRcbiAgICpcbiAgICogQHR5cGUgRnVuY3Rpb24obm9kZTogSHRtbEVsZW1lbnQpXG4gICAqL1xuICBvbkV4aXRlZDogUHJvcFR5cGVzLmZ1bmNcbn0pIDoge307XG5leHBvcnQgZGVmYXVsdCBDU1NUcmFuc2l0aW9uOyIsImltcG9ydCBoYXNDbGFzcyBmcm9tICcuL2hhc0NsYXNzJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFkZENsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZSkge1xuICBpZiAoZWxlbWVudC5jbGFzc0xpc3QpIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpO2Vsc2UgaWYgKCFoYXNDbGFzcyhlbGVtZW50LCBjbGFzc05hbWUpKSBpZiAodHlwZW9mIGVsZW1lbnQuY2xhc3NOYW1lID09PSAnc3RyaW5nJykgZWxlbWVudC5jbGFzc05hbWUgPSBlbGVtZW50LmNsYXNzTmFtZSArIFwiIFwiICsgY2xhc3NOYW1lO2Vsc2UgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgKGVsZW1lbnQuY2xhc3NOYW1lICYmIGVsZW1lbnQuY2xhc3NOYW1lLmJhc2VWYWwgfHwgJycpICsgXCIgXCIgKyBjbGFzc05hbWUpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGhhc0NsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZSkge1xuICBpZiAoZWxlbWVudC5jbGFzc0xpc3QpIHJldHVybiAhIWNsYXNzTmFtZSAmJiBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhjbGFzc05hbWUpO1xuICByZXR1cm4gKFwiIFwiICsgKGVsZW1lbnQuY2xhc3NOYW1lLmJhc2VWYWwgfHwgZWxlbWVudC5jbGFzc05hbWUpICsgXCIgXCIpLmluZGV4T2YoXCIgXCIgKyBjbGFzc05hbWUgKyBcIiBcIikgIT09IC0xO1xufSIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuZXhwb3J0IGRlZmF1bHQge1wiZW50ZXJcIjpcInNORjJSMFwiLFwiZW50ZXJBY3RpdmVcIjpcImhMb0JWM1wiLFwiZXhpdFwiOlwiUmRmNDF6XCIsXCJleGl0QWN0aXZlXCI6XCJmdGxaV29cIn07IiwiaW1wb3J0IHsgQ1NTVHJhbnNpdGlvbiB9IGZyb20gJ3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuLi9zdHlsZXMvQ3Jvc3NGYWRlLnNjc3MnO1xuaW1wb3J0IHsgQ3VzdG9tVHJhbnNpdGlvblByb3BzIH0gZnJvbSAnLi4vdHJhbnNpdGlvbi50eXBlcyc7XG5cbmNvbnN0IENyb3NzRmFkZTogUmVhY3QuRkM8Q3VzdG9tVHJhbnNpdGlvblByb3BzPiA9IHByb3BzID0+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBjb25zdCB7IHJldmVyc2UsIC4uLmNzc1RyYW5zaXRpb25Qcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q1NTVHJhbnNpdGlvblxuICAgICAgLy8gPFRyYW5zaXRpb25Hcm91cD4gcGFzc2VzIHRyYW5zaXRpb24gcHJvcHMgdG8gaGlzIGltbWVkaWF0ZSBjaGlsZCBzbyB3ZSBoYXZlIHRvIHBhc3MgYWxsIHByb3BzIHdoZW4gd3JhcHBpbmcgPENTU1RyYW5zaXRpb24+XG4gICAgICB7Li4uY3NzVHJhbnNpdGlvblByb3BzfVxuICAgICAgY2xhc3NOYW1lcz17e1xuICAgICAgICBlbnRlcjogc3R5bGVzLmVudGVyLFxuICAgICAgICBlbnRlckFjdGl2ZTogc3R5bGVzLmVudGVyQWN0aXZlLFxuICAgICAgICBleGl0OiBzdHlsZXMuZXhpdCxcbiAgICAgICAgZXhpdEFjdGl2ZTogc3R5bGVzLmV4aXRBY3RpdmUsXG4gICAgICB9fVxuICAgID5cbiAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICA8L0NTU1RyYW5zaXRpb24+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBDcm9zc0ZhZGU7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbmV4cG9ydCBkZWZhdWx0IHtcImVudGVyXCI6XCJBVEdsT3JcIixcImVudGVyQWN0aXZlXCI6XCJLUVNYRDBcIixcImV4aXRcIjpcInBhZ1FLRVwiLFwiZXhpdEFjdGl2ZVwiOlwiXzZ6RzVIXCJ9OyIsImltcG9ydCB7IENTU1RyYW5zaXRpb24gfSBmcm9tICdyZWFjdC10cmFuc2l0aW9uLWdyb3VwJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi4vc3R5bGVzL091dEluLnNjc3MnO1xuaW1wb3J0IHsgQ3VzdG9tVHJhbnNpdGlvblByb3BzIH0gZnJvbSAnLi4vdHJhbnNpdGlvbi50eXBlcyc7XG5cbmNvbnN0IE91dEluOiBSZWFjdC5GQzxDdXN0b21UcmFuc2l0aW9uUHJvcHM+ID0gcHJvcHMgPT4ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIGNvbnN0IHsgcmV2ZXJzZSwgLi4uY3NzVHJhbnNpdGlvblByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDU1NUcmFuc2l0aW9uXG4gICAgICAvLyA8VHJhbnNpdGlvbkdyb3VwPiBwYXNzZXMgdHJhbnNpdGlvbiBwcm9wcyB0byBoaXMgaW1tZWRpYXRlIGNoaWxkIHNvIHdlIGhhdmUgdG8gcGFzcyBhbGwgcHJvcHMgd2hlbiB3cmFwcGluZyA8Q1NTVHJhbnNpdGlvbj5cbiAgICAgIHsuLi5jc3NUcmFuc2l0aW9uUHJvcHN9XG4gICAgICBjbGFzc05hbWVzPXt7XG4gICAgICAgIGVudGVyOiBzdHlsZXMuZW50ZXIsXG4gICAgICAgIGVudGVyQWN0aXZlOiBzdHlsZXMuZW50ZXJBY3RpdmUsXG4gICAgICAgIGV4aXQ6IHN0eWxlcy5leGl0LFxuICAgICAgICBleGl0QWN0aXZlOiBzdHlsZXMuZXhpdEFjdGl2ZSxcbiAgICAgIH19XG4gICAgPlxuICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgIDwvQ1NTVHJhbnNpdGlvbj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE91dEluO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQgZGVmYXVsdCB7XCJlbnRlclwiOlwiQkI0OXVDXCIsXCJlbnRlckFjdGl2ZVwiOlwiajl4RTFWXCIsXCJleGl0XCI6XCJJQ3M3UnNcIixcImV4aXRBY3RpdmVcIjpcIkR4aWpaSlwiLFwiZW50ZXJSZXZlcnNlXCI6XCJCNWtqWXFcIixcImVudGVyQWN0aXZlUmV2ZXJzZVwiOlwiY0ppaklWXCIsXCJleGl0UmV2ZXJzZVwiOlwiaE94YVdNXCIsXCJleGl0QWN0aXZlUmV2ZXJzZVwiOlwiVDlwM2ZOXCJ9OyIsImltcG9ydCB7IENTU1RyYW5zaXRpb24gfSBmcm9tICdyZWFjdC10cmFuc2l0aW9uLWdyb3VwJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi4vc3R5bGVzL1NsaWRlSG9yaXpvbnRhbC5zY3NzJztcbmltcG9ydCB7IEN1c3RvbVRyYW5zaXRpb25Qcm9wcyB9IGZyb20gJy4uL3RyYW5zaXRpb24udHlwZXMnO1xuXG5jb25zdCBTbGlkZUhvcml6b250YWw6IFJlYWN0LkZDPEN1c3RvbVRyYW5zaXRpb25Qcm9wcz4gPSBwcm9wcyA9PiB7XG4gIGNvbnN0IHsgcmV2ZXJzZSwgLi4uY3NzVHJhbnNpdGlvblByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDU1NUcmFuc2l0aW9uXG4gICAgICAvLyA8VHJhbnNpdGlvbkdyb3VwPiBwYXNzZXMgdHJhbnNpdGlvbiBwcm9wcyB0byBoaXMgaW1tZWRpYXRlIGNoaWxkIHNvIHdlIGhhdmUgdG8gcGFzcyBhbGwgcHJvcHMgd2hlbiB3cmFwcGluZyA8Q1NTVHJhbnNpdGlvbj5cbiAgICAgIHsuLi5jc3NUcmFuc2l0aW9uUHJvcHN9XG4gICAgICBjbGFzc05hbWVzPXtcbiAgICAgICAgcmV2ZXJzZVxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBlbnRlcjogc3R5bGVzLmVudGVyUmV2ZXJzZSxcbiAgICAgICAgICAgICAgZW50ZXJBY3RpdmU6IHN0eWxlcy5lbnRlckFjdGl2ZVJldmVyc2UsXG4gICAgICAgICAgICAgIGV4aXQ6IHN0eWxlcy5leGl0UmV2ZXJzZSxcbiAgICAgICAgICAgICAgZXhpdEFjdGl2ZTogc3R5bGVzLmV4aXRBY3RpdmVSZXZlcnNlLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDoge1xuICAgICAgICAgICAgICBlbnRlcjogc3R5bGVzLmVudGVyLFxuICAgICAgICAgICAgICBlbnRlckFjdGl2ZTogc3R5bGVzLmVudGVyQWN0aXZlLFxuICAgICAgICAgICAgICBleGl0OiBzdHlsZXMuZXhpdCxcbiAgICAgICAgICAgICAgZXhpdEFjdGl2ZTogc3R5bGVzLmV4aXRBY3RpdmUsXG4gICAgICAgICAgICB9XG4gICAgICB9XG4gICAgPlxuICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgIDwvQ1NTVHJhbnNpdGlvbj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNsaWRlSG9yaXpvbnRhbDtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuZXhwb3J0IGRlZmF1bHQge1wiZW50ZXJcIjpcInFEeFlKbVwiLFwiZW50ZXJBY3RpdmVcIjpcImFBOVYwUFwiLFwiZXhpdFwiOlwiWVBYUEFTXCIsXCJleGl0QWN0aXZlXCI6XCJYZjJ6c0FcIixcImVudGVyUmV2ZXJzZVwiOlwieTdLdDdzXCIsXCJlbnRlckFjdGl2ZVJldmVyc2VcIjpcIkVlVWdNdVwiLFwiZXhpdFJldmVyc2VcIjpcImZkSHJ0bVwiLFwiZXhpdEFjdGl2ZVJldmVyc2VcIjpcIldJRmFHNFwifTsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBJVHJhbnNpdGlvblByb3BzIH0gZnJvbSAnLi90cmFuc2l0aW9uLnR5cGVzJztcbmltcG9ydCBDcm9zc0ZhZGUgZnJvbSAnLi90cmFuc2l0aW9ucy9Dcm9zc0ZhZGUnO1xuaW1wb3J0IE91dEluIGZyb20gJy4vdHJhbnNpdGlvbnMvT3V0SW4nO1xuaW1wb3J0IFNsaWRlSG9yaXpvbnRhbCBmcm9tICcuL3RyYW5zaXRpb25zL1NsaWRlSG9yaXpvbnRhbCc7XG5pbXBvcnQgU2xpZGVWZXJ0aWNhbCBmcm9tICcuL3RyYW5zaXRpb25zL1NsaWRlVmVydGljYWwnO1xuXG5jb25zdCBUcmFuc2l0aW9uc0NvbXBzID0ge1xuICBDcm9zc0ZhZGUsXG4gIE91dEluLFxuICBTbGlkZUhvcml6b250YWwsXG4gIFNsaWRlVmVydGljYWwsXG59IGFzIGNvbnN0O1xuXG5jb25zdCBUcmFuc2l0aW9uOiBSZWFjdC5GQzxJVHJhbnNpdGlvblByb3BzPiA9IHByb3BzID0+IHtcbiAgY29uc3QgVHJhbnNpdGlvbkNvbXAgPSBUcmFuc2l0aW9uc0NvbXBzW3Byb3BzLnR5cGVdO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIGNvbnN0IHsgdHlwZSwgLi4udHJhbnNpdGlvbkNvbXBQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIDxUcmFuc2l0aW9uQ29tcCB7Li4udHJhbnNpdGlvbkNvbXBQcm9wc30gLz47XG59O1xuXG5leHBvcnQgZGVmYXVsdCBUcmFuc2l0aW9uO1xuIiwiaW1wb3J0IHsgQ1NTVHJhbnNpdGlvbiB9IGZyb20gJ3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuLi9zdHlsZXMvU2xpZGVWZXJ0aWNhbC5zY3NzJztcbmltcG9ydCB7IEN1c3RvbVRyYW5zaXRpb25Qcm9wcyB9IGZyb20gJy4uL3RyYW5zaXRpb24udHlwZXMnO1xuXG5jb25zdCBTbGlkZVZlcnRpY2FsOiBSZWFjdC5GQzxDdXN0b21UcmFuc2l0aW9uUHJvcHM+ID0gcHJvcHMgPT4ge1xuICBjb25zdCB7IHJldmVyc2UsIC4uLmNzc1RyYW5zaXRpb25Qcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q1NTVHJhbnNpdGlvblxuICAgICAgLy8gPFRyYW5zaXRpb25Hcm91cD4gcGFzc2VzIHRyYW5zaXRpb24gcHJvcHMgdG8gaGlzIGltbWVkaWF0ZSBjaGlsZCBzbyB3ZSBoYXZlIHRvIHBhc3MgYWxsIHByb3BzIHdoZW4gd3JhcHBpbmcgPENTU1RyYW5zaXRpb24+XG4gICAgICB7Li4uY3NzVHJhbnNpdGlvblByb3BzfVxuICAgICAgY2xhc3NOYW1lcz17XG4gICAgICAgIHJldmVyc2VcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgZW50ZXI6IHN0eWxlcy5lbnRlclJldmVyc2UsXG4gICAgICAgICAgICAgIGVudGVyQWN0aXZlOiBzdHlsZXMuZW50ZXJBY3RpdmVSZXZlcnNlLFxuICAgICAgICAgICAgICBleGl0OiBzdHlsZXMuZXhpdFJldmVyc2UsXG4gICAgICAgICAgICAgIGV4aXRBY3RpdmU6IHN0eWxlcy5leGl0QWN0aXZlUmV2ZXJzZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgZW50ZXI6IHN0eWxlcy5lbnRlcixcbiAgICAgICAgICAgICAgZW50ZXJBY3RpdmU6IHN0eWxlcy5lbnRlckFjdGl2ZSxcbiAgICAgICAgICAgICAgZXhpdDogc3R5bGVzLmV4aXQsXG4gICAgICAgICAgICAgIGV4aXRBY3RpdmU6IHN0eWxlcy5leGl0QWN0aXZlLFxuICAgICAgICAgICAgfVxuICAgICAgfVxuICAgID5cbiAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICA8L0NTU1RyYW5zaXRpb24+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTbGlkZVZlcnRpY2FsO1xuIiwiZXhwb3J0IGNvbnN0IEJBQ0tHUk9VTkRfR1JPVVBfSUQgPSAnQkFDS0dST1VORF9HUk9VUCc7XG5leHBvcnQgY29uc3QgVFJBTlNJVElPTl9HUk9VUF9JRCA9ICdUUkFOU0lUSU9OX0dST1VQJztcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgUmVhY3RFbGVtZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgVHJhbnNpdGlvbkdyb3VwIH0gZnJvbSAncmVhY3QtdHJhbnNpdGlvbi1ncm91cCc7XG5pbXBvcnQgeyBnZXREYXRhQXR0cmlidXRlcyB9IGZyb20gJ0B3aXgvZWRpdG9yLWVsZW1lbnRzLWNvbW1vbi11dGlscyc7XG5pbXBvcnQgVHJhbnNpdGlvbiBmcm9tICdAd2l4L3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL1RyYW5zaXRpb24vVHJhbnNpdGlvbic7XG5pbXBvcnQgdHlwZSB7IElHcm91cENvbnRlbnRQcm9wcyB9IGZyb20gJy4uL2NvbW1vbnMudHlwZXMnO1xuaW1wb3J0IHsgVFJBTlNJVElPTl9HUk9VUF9JRCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmNvbnN0IEdyb3VwQ29udGVudDogUmVhY3QuRkM8SUdyb3VwQ29udGVudFByb3BzPiA9IHByb3BzID0+IHtcbiAgY29uc3Qge1xuICAgIGlkID0gVFJBTlNJVElPTl9HUk9VUF9JRCxcbiAgICB0cmFuc2l0aW9uID0gJ25vbmUnLFxuICAgIHRyYW5zaXRpb25EdXJhdGlvbiA9IDAsXG4gICAgdHJhbnNpdGlvbkVuYWJsZWQgPSB0cnVlLFxuICAgIG9uVHJhbnNpdGlvbkNvbXBsZXRlID0gKCkgPT4ge30sXG4gICAgb25UcmFuc2l0aW9uU3RhcnRpbmcgPSAoKSA9PiB7fSxcbiAgICBjbGFzc05hbWUsXG4gICAgY2hpbGRyZW4sXG4gICAgc2hvdWxkVXNlVmlld1RyYW5zaXRpb24sXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCBjaGlsZHJlbkFycmF5ID0gUmVhY3QuQ2hpbGRyZW4udG9BcnJheShjaGlsZHJlbigpKTtcbiAgY29uc3QgY2hpbGQgPSBjaGlsZHJlbkFycmF5WzBdIGFzIFJlYWN0RWxlbWVudDtcbiAgY29uc3QgY2hpbGRJZCA9IGNoaWxkPy5wcm9wcy5pZDtcblxuICBjb25zdCBub1RyYW5zaXRpb24gPSB0cmFuc2l0aW9uID09PSAnbm9uZSc7XG4gIGNvbnN0IHJldmVyc2UgPSB0cmFuc2l0aW9uID09PSAnU2xpZGVWZXJ0aWNhbCc7XG5cbiAgY29uc3Qgc3VwcG9ydHNWaWV3VHJhbnNpdGlvbiA9XG4gICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyAnc3RhcnRWaWV3VHJhbnNpdGlvbicgaW4gZG9jdW1lbnQgOiBmYWxzZTtcbiAgY29uc3QgdXNlVmlld1RyYW5zaXRpb24gPSBzdXBwb3J0c1ZpZXdUcmFuc2l0aW9uICYmIHNob3VsZFVzZVZpZXdUcmFuc2l0aW9uO1xuXG4gIGNvbnN0IGdldENvbnRlbnQgPSAoKSA9PiB7XG4gICAgaWYgKG5vVHJhbnNpdGlvbikge1xuICAgICAgcmV0dXJuIGNoaWxkcmVuKCk7XG4gICAgfVxuXG4gICAgaWYgKHVzZVZpZXdUcmFuc2l0aW9uKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGlkPXtpZH0gey4uLmdldERhdGFBdHRyaWJ1dGVzKHByb3BzKX0gY2xhc3NOYW1lPXtjbGFzc05hbWV9PlxuICAgICAgICAgIHtjaGlsZHJlbigpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxUcmFuc2l0aW9uR3JvdXBcbiAgICAgICAgaWQ9e2lkfVxuICAgICAgICB7Li4uZ2V0RGF0YUF0dHJpYnV0ZXMocHJvcHMpfVxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgY2hpbGRGYWN0b3J5PXtfY2hpbGQgPT4gUmVhY3QuY2xvbmVFbGVtZW50KF9jaGlsZCwgeyByZXZlcnNlIH0pfVxuICAgICAgPlxuICAgICAgICA8VHJhbnNpdGlvblxuICAgICAgICAgIHR5cGU9e3RyYW5zaXRpb259XG4gICAgICAgICAga2V5PXtjaGlsZElkfVxuICAgICAgICAgIHRpbWVvdXQ9e3RyYW5zaXRpb25EdXJhdGlvbn1cbiAgICAgICAgICBvbkVudGVyZWQ9e29uVHJhbnNpdGlvbkNvbXBsZXRlfVxuICAgICAgICAgIG9uRXhpdGluZz17b25UcmFuc2l0aW9uU3RhcnRpbmd9XG4gICAgICAgICAgZW50ZXI9e3RyYW5zaXRpb25FbmFibGVkfVxuICAgICAgICAgIGV4aXQ9e3RyYW5zaXRpb25FbmFibGVkfVxuICAgICAgICAgIHVubW91bnRPbkV4aXRcbiAgICAgICAgPlxuICAgICAgICAgIHsoKSA9PiBjaGlsZH1cbiAgICAgICAgPC9UcmFuc2l0aW9uPlxuICAgICAgPC9UcmFuc2l0aW9uR3JvdXA+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gPD57Z2V0Q29udGVudCgpfTwvPjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEdyb3VwQ29udGVudDtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuZXhwb3J0IGRlZmF1bHQge1wicGFnZUdyb3VwV3JhcHBlclwiOlwiSnNKWGFYXCIsXCJwYWdlR3JvdXBcIjpcIkFuUWtEVVwifTsiLCIndXNlLWNsaWVudCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7IFJlYWN0Tm9kZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgZ2V0RGF0YUF0dHJpYnV0ZXMgfSBmcm9tICdAd2l4L2VkaXRvci1lbGVtZW50cy1jb21tb24tdXRpbHMnO1xuaW1wb3J0IHR5cGUgeyBJUGFnZUdyb3VwUHJvcHMgfSBmcm9tICcuLi9QYWdlR3JvdXAudHlwZXMnO1xuaW1wb3J0IEdyb3VwQ29udGVudCBmcm9tICcuLi8uLi9jb21tb25zL3ZpZXdlci9Hcm91cENvbnRlbnQnO1xuaW1wb3J0IHsgVFJBTlNJVElPTl9HUk9VUF9JRCB9IGZyb20gJy4uLy4uL2NvbW1vbnMvY29uc3RhbnRzJztcbmltcG9ydCBzdHlsZSBmcm9tICcuL3N0eWxlL3N0eWxlLnNjc3MnO1xuXG5jb25zdCBHcm91cENvbnRlbnRNZW1vID0gUmVhY3QubWVtbyhHcm91cENvbnRlbnQsIChfXywgbmV4dFByb3BzKSA9PiB7XG4gIHJldHVybiAhKG5leHRQcm9wcy5jaGlsZHJlbigpISBhcyBBcnJheTxSZWFjdE5vZGU+KS5sZW5ndGg7XG59KTtcblxuY29uc3QgUGFnZUdyb3VwOiBSZWFjdC5GQzxJUGFnZUdyb3VwUHJvcHM+ID0gcHJvcHMgPT4ge1xuICBjb25zdCB7IGlkLCBjaGlsZHJlbiwgY2xhc3NOYW1lLCAuLi5yZXN0UHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgaWQ9e2lkfVxuICAgICAgey4uLmdldERhdGFBdHRyaWJ1dGVzKHByb3BzKX1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhzdHlsZS5wYWdlR3JvdXBXcmFwcGVyLCBjbGFzc05hbWUpfVxuICAgID5cbiAgICAgIDxHcm91cENvbnRlbnRNZW1vXG4gICAgICAgIGlkPXtgJHtpZH1fJHtUUkFOU0lUSU9OX0dST1VQX0lEfWB9XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGUucGFnZUdyb3VwfVxuICAgICAgICB7Li4ucmVzdFByb3BzfVxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0dyb3VwQ29udGVudE1lbW8+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBQYWdlR3JvdXA7XG4iXSwibmFtZXMiOlsicm9vdCIsImZhY3RvcnkiLCJleHBvcnRzIiwibW9kdWxlIiwicmVxdWlyZSIsImRlZmluZSIsImFtZCIsInNlbGYiLCJ0aGlzIiwiX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9YZGZfX18iLCJfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX05VakdfXyIsIl9leHRlbmRzIiwiT2JqZWN0IiwiYXNzaWduIiwiYmluZCIsIm4iLCJlIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidCIsInIiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJfX2VzTW9kdWxlIiwiYXBwbHkiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJ1bmRlZmluZWQiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwiZ2V0dGVyIiwiZCIsImEiLCJkZWZpbml0aW9uIiwia2V5IiwibyIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsIm9iaiIsInByb3AiLCJwcm90b3R5cGUiLCJTeW1ib2wiLCJ0b1N0cmluZ1RhZyIsInZhbHVlIiwiZiIsIkFycmF5IiwiaXNBcnJheSIsImdldERhdGFBdHRyaWJ1dGVzIiwicHJvcHMiLCJlbnRyaWVzIiwicmVkdWNlIiwiYWNjIiwidmFsIiwiaW5jbHVkZXMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsImluZGV4T2YiLCJfc2V0UHJvdG90eXBlT2YiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsIl9pbmhlcml0c0xvb3NlIiwiY3JlYXRlIiwiY29uc3RydWN0b3IiLCJnZXRDaGlsZE1hcHBpbmciLCJjaGlsZHJlbiIsIm1hcEZuIiwicmVzdWx0IiwiQ2hpbGRyZW4iLCJtYXAiLCJjIiwiZm9yRWFjaCIsImNoaWxkIiwiaXNWYWxpZEVsZW1lbnQiLCJtYXBwZXIiLCJnZXRQcm9wIiwiZ2V0TmV4dENoaWxkTWFwcGluZyIsIm5leHRQcm9wcyIsInByZXZDaGlsZE1hcHBpbmciLCJvbkV4aXRlZCIsIm5leHRDaGlsZE1hcHBpbmciLCJwcmV2IiwibmV4dCIsImdldFZhbHVlRm9yS2V5IiwiaSIsIm5leHRLZXlzUGVuZGluZyIsInBlbmRpbmdLZXlzIiwicHJldktleSIsInB1c2giLCJjaGlsZE1hcHBpbmciLCJuZXh0S2V5IiwicGVuZGluZ05leHRLZXkiLCJtZXJnZUNoaWxkTWFwcGluZ3MiLCJrZXlzIiwiaGFzUHJldiIsImhhc05leHQiLCJwcmV2Q2hpbGQiLCJpc0xlYXZpbmciLCJpbiIsImNsb25lRWxlbWVudCIsImV4aXQiLCJlbnRlciIsInZhbHVlcyIsImsiLCJUcmFuc2l0aW9uR3JvdXAiLCJfUmVhY3QkQ29tcG9uZW50IiwiY29udGV4dCIsIl90aGlzIiwiaGFuZGxlRXhpdGVkIiwiUmVmZXJlbmNlRXJyb3IiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwic3RhdGUiLCJjb250ZXh0VmFsdWUiLCJpc01vdW50aW5nIiwiZmlyc3RSZW5kZXIiLCJfcHJvdG8iLCJjb21wb25lbnREaWRNb3VudCIsIm1vdW50ZWQiLCJzZXRTdGF0ZSIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwiX3JlZiIsImFwcGVhciIsIm5vZGUiLCJjdXJyZW50Q2hpbGRNYXBwaW5nIiwicmVuZGVyIiwiX3RoaXMkcHJvcHMiLCJDb21wb25lbnQiLCJjb21wb25lbnQiLCJjaGlsZEZhY3RvcnkiLCJUcmFuc2l0aW9uR3JvdXBDb250ZXh0IiwiUHJvdmlkZXIiLCJwcm9wVHlwZXMiLCJkZWZhdWx0UHJvcHMiLCJyZXBsYWNlQ2xhc3NOYW1lIiwib3JpZ0NsYXNzIiwiY2xhc3NUb1JlbW92ZSIsInJlcGxhY2UiLCJSZWdFeHAiLCJmb3JjZVJlZmxvdyIsInNjcm9sbFRvcCIsIlVOTU9VTlRFRCIsIkVYSVRFRCIsIkVOVEVSSU5HIiwiRU5URVJFRCIsIkVYSVRJTkciLCJUcmFuc2l0aW9uIiwiaW5pdGlhbFN0YXR1cyIsImFwcGVhclN0YXR1cyIsInVubW91bnRPbkV4aXQiLCJtb3VudE9uRW50ZXIiLCJzdGF0dXMiLCJuZXh0Q2FsbGJhY2siLCJwcmV2U3RhdGUiLCJ1cGRhdGVTdGF0dXMiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJuZXh0U3RhdHVzIiwiY2FuY2VsTmV4dENhbGxiYWNrIiwiZ2V0VGltZW91dHMiLCJ0aW1lb3V0IiwibW91bnRpbmciLCJub2RlUmVmIiwiY3VycmVudCIsInBlcmZvcm1FbnRlciIsInBlcmZvcm1FeGl0IiwiX3RoaXMyIiwiYXBwZWFyaW5nIiwiX3JlZjIiLCJtYXliZU5vZGUiLCJtYXliZUFwcGVhcmluZyIsInRpbWVvdXRzIiwiZW50ZXJUaW1lb3V0IiwiY29uZmlnIiwic2FmZVNldFN0YXRlIiwib25FbnRlcmVkIiwib25FbnRlciIsIm9uRW50ZXJpbmciLCJvblRyYW5zaXRpb25FbmQiLCJfdGhpczMiLCJvbkV4aXQiLCJvbkV4aXRpbmciLCJjYW5jZWwiLCJuZXh0U3RhdGUiLCJjYWxsYmFjayIsInNldE5leHRDYWxsYmFjayIsIl90aGlzNCIsImFjdGl2ZSIsImV2ZW50IiwiaGFuZGxlciIsImRvZXNOb3RIYXZlVGltZW91dE9yTGlzdGVuZXIiLCJhZGRFbmRMaXN0ZW5lciIsIl9yZWYzIiwibWF5YmVOZXh0Q2FsbGJhY2siLCJzZXRUaW1lb3V0IiwiY2hpbGRQcm9wcyIsIm9ubHkiLCJub29wIiwiY29udGV4dFR5cGUiLCJyZW1vdmVDbGFzcyIsImNsYXNzZXMiLCJzcGxpdCIsImNsYXNzTmFtZSIsImVsZW1lbnQiLCJjbGFzc0xpc3QiLCJyZW1vdmUiLCJzZXRBdHRyaWJ1dGUiLCJiYXNlVmFsIiwiQ1NTVHJhbnNpdGlvbiIsIl9sZW4iLCJhcmdzIiwiX2tleSIsImNvbmNhdCIsImFwcGxpZWRDbGFzc2VzIiwiX3RoaXMkcmVzb2x2ZUFyZ3VtZW50IiwicmVzb2x2ZUFyZ3VtZW50cyIsInJlbW92ZUNsYXNzZXMiLCJhZGRDbGFzcyIsIl90aGlzJHJlc29sdmVBcmd1bWVudDIiLCJ0eXBlIiwiX3RoaXMkcmVzb2x2ZUFyZ3VtZW50MyIsImdldENsYXNzTmFtZXMiLCJjbGFzc05hbWVzIiwiaXNTdHJpbmdDbGFzc05hbWVzIiwiYmFzZUNsYXNzTmFtZSIsImFjdGl2ZUNsYXNzTmFtZSIsImRvbmVDbGFzc05hbWUiLCJwaGFzZSIsImFkZCIsImNvbnRhaW5zIiwiaGFzQ2xhc3MiLCJfYWRkQ2xhc3MiLCJfdGhpcyRhcHBsaWVkQ2xhc3NlcyQiLCJiYXNlIiwiZG9uZSIsIlRyYW5zaXRpb25zQ29tcHMiLCJDcm9zc0ZhZGUiLCJyZXZlcnNlIiwiY3NzVHJhbnNpdGlvblByb3BzIiwiUmVhY3QiLCJzdHlsZXMiLCJlbnRlckFjdGl2ZSIsImV4aXRBY3RpdmUiLCJPdXRJbiIsIlNsaWRlSG9yaXpvbnRhbCIsIlNsaWRlVmVydGljYWwiLCJUcmFuc2l0aW9uQ29tcCIsInRyYW5zaXRpb25Db21wUHJvcHMiLCJUUkFOU0lUSU9OX0dST1VQX0lEIiwiaWQiLCJ0cmFuc2l0aW9uIiwidHJhbnNpdGlvbkR1cmF0aW9uIiwidHJhbnNpdGlvbkVuYWJsZWQiLCJvblRyYW5zaXRpb25Db21wbGV0ZSIsIm9uVHJhbnNpdGlvblN0YXJ0aW5nIiwic2hvdWxkVXNlVmlld1RyYW5zaXRpb24iLCJ0b0FycmF5IiwiY2hpbGRJZCIsIm5vVHJhbnNpdGlvbiIsInVzZVZpZXdUcmFuc2l0aW9uIiwid2luZG93IiwiZG9jdW1lbnQiLCJfY2hpbGQiLCJHcm91cENvbnRlbnRNZW1vIiwiR3JvdXBDb250ZW50IiwiX18iLCJyZXN0UHJvcHMiLCJzdHlsZSJdLCJzb3VyY2VSb290IjoiIn0=","'use client';\nimport { PageGroup as Component } from '@wix/editor-components/component/PageGroup';\nimport '@wix/editor-components/component/PageGroup/css';\nimport { withNormalChildren } from './hocs';\nexport const PageGroup = withNormalChildren(Component);\n//# sourceMappingURL=PageGroup.js.map","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\")):\"function\"==typeof define&&define.amd?define(\"thunderbolt/component/PagesContainer/PagesContainer\",[\"react\"],t):\"object\"==typeof exports?exports[\"thunderbolt/component/PagesContainer/PagesContainer\"]=t(require(\"react\")):e[\"thunderbolt/component/PagesContainer/PagesContainer\"]=t(e.React)}(\"undefined\"!=typeof self?self:this,function(e){return function(){var t={\"Xdf/\":function(t){\"use strict\";t.exports=e},Fe5V:function(e){function t(){return e.exports=t=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},e.exports.__esModule=!0,e.exports.default=e.exports,t.apply(null,arguments)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var a=n[e]={exports:{}};return t[e](a,a.exports,r),a.exports}r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var o={};return function(){\"use strict\";r.r(o),r.d(o,{default:function(){return a}});var e=r(\"Fe5V\"),t=r.n(e),n=r(\"Xdf/\");var a=e=>{const{children:r,className:o}=e;return n.createElement(\"main\",t()({id:\"PAGES_CONTAINER\"},(e=>Object.entries(e).reduce((e,[t,n])=>(t.includes(\"data-\")&&(e[t]=n),e),{}))(e),{className:o,tabIndex:-1,\"data-main-content\":!0}),r())}}(),o}()});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGh1bmRlcmJvbHQvY29tcG9uZW50L1BhZ2VzQ29udGFpbmVyL1BhZ2VzQ29udGFpbmVyLmJ1bmRsZS5taW4uanMiLCJtYXBwaW5ncyI6IkNBQUEsU0FBMkNBLEVBQU1DLEdBQzFCLGlCQUFaQyxTQUEwQyxpQkFBWEMsT0FDeENBLE9BQU9ELFFBQVVELEVBQVFHLFFBQVEsVUFDUixtQkFBWEMsUUFBeUJBLE9BQU9DLElBQzlDRCxPQUFPLHNEQUF1RCxDQUFDLFNBQVVKLEdBQy9DLGlCQUFaQyxRQUNkQSxRQUFRLHVEQUF5REQsRUFBUUcsUUFBUSxVQUVqRkosRUFBSyx1REFBeURDLEVBQVFELEVBQVksTUFDbkYsQ0FURCxDQVNvQixvQkFBVE8sS0FBdUJBLEtBQU9DLEtBQU8sU0FBU0MsR0FDekQsTyxrRENWQU4sRUFBT0QsUUFBVU8sQyxtQkNBakIsU0FBU0MsSUFDUCxPQUFPUCxFQUFPRCxRQUFVUSxFQUFXQyxPQUFPQyxPQUFTRCxPQUFPQyxPQUFPQyxPQUFTLFNBQVVDLEdBQ2xGLElBQUssSUFBSUMsRUFBSSxFQUFHQSxFQUFJQyxVQUFVQyxPQUFRRixJQUFLLENBQ3pDLElBQUlHLEVBQUlGLFVBQVVELEdBQ2xCLElBQUssSUFBSUksS0FBS0QsR0FBRyxDQUFHLEdBQUVFLGVBQWVDLEtBQUtILEVBQUdDLEtBQU9MLEVBQUVLLEdBQUtELEVBQUVDLEdBQy9ELENBQ0EsT0FBT0wsQ0FDVCxFQUFHWCxFQUFPRCxRQUFRb0IsWUFBYSxFQUFNbkIsRUFBT0QsUUFBaUIsUUFBSUMsRUFBT0QsUUFBU1EsRUFBU2EsTUFBTSxLQUFNUCxVQUN4RyxDQUNBYixFQUFPRCxRQUFVUSxFQUFVUCxFQUFPRCxRQUFRb0IsWUFBYSxFQUFNbkIsRUFBT0QsUUFBaUIsUUFBSUMsRUFBT0QsTyxHQ1I1RnNCLEVBQTJCLENBQUMsRUFHaEMsU0FBU0MsRUFBb0JDLEdBRTVCLElBQUlDLEVBQWVILEVBQXlCRSxHQUM1QyxRQUFxQkUsSUFBakJELEVBQ0gsT0FBT0EsRUFBYXpCLFFBR3JCLElBQUlDLEVBQVNxQixFQUF5QkUsR0FBWSxDQUdqRHhCLFFBQVMsQ0FBQyxHQU9YLE9BSEEyQixFQUFvQkgsR0FBVXZCLEVBQVFBLEVBQU9ELFFBQVN1QixHQUcvQ3RCLEVBQU9ELE9BQ2YsQ0NyQkF1QixFQUFvQlgsRUFBSSxTQUFTWCxHQUNoQyxJQUFJMkIsRUFBUzNCLEdBQVVBLEVBQU9tQixXQUM3QixXQUFhLE9BQU9uQixFQUFnQixPQUFHLEVBQ3ZDLFdBQWEsT0FBT0EsQ0FBUSxFQUU3QixPQURBc0IsRUFBb0JNLEVBQUVELEVBQVEsQ0FBRUUsRUFBR0YsSUFDNUJBLENBQ1IsRUNOQUwsRUFBb0JNLEVBQUksU0FBUzdCLEVBQVMrQixHQUN6QyxJQUFJLElBQUlDLEtBQU9ELEVBQ1hSLEVBQW9CVSxFQUFFRixFQUFZQyxLQUFTVCxFQUFvQlUsRUFBRWpDLEVBQVNnQyxJQUM1RXZCLE9BQU95QixlQUFlbEMsRUFBU2dDLEVBQUssQ0FBRUcsWUFBWSxFQUFNQyxJQUFLTCxFQUFXQyxJQUczRSxFQ1BBVCxFQUFvQlUsRUFBSSxTQUFTSSxFQUFLQyxHQUFRLE9BQU83QixPQUFPOEIsVUFBVXJCLGVBQWVDLEtBQUtrQixFQUFLQyxFQUFPLEVDQ3RHZixFQUFvQk4sRUFBSSxTQUFTakIsR0FDWCxvQkFBWHdDLFFBQTBCQSxPQUFPQyxhQUMxQ2hDLE9BQU95QixlQUFlbEMsRUFBU3dDLE9BQU9DLFlBQWEsQ0FBRUMsTUFBTyxXQUU3RGpDLE9BQU95QixlQUFlbEMsRUFBUyxhQUFjLENBQUUwQyxPQUFPLEdBQ3ZELEUsMEhDY0EsTUFmdURDLElBQ3JELE1BQU0sU0FBRUMsRUFBUSxVQUFFQyxHQUFjRixFQUNoQyxPQUNFRyxFQUFBQSxjQUFBLE9BQUF0QyxJQUFBLENBQ0V1QyxHQUFHLG1CQzJEd0IsQ0FBQ0osR0FDdkJsQyxPQUFPdUMsUUFBUUwsR0FBT00sT0FBTyxDQUFDQyxHQUFNbEIsRUFBS21CLE1BQ3hDbkIsRUFBSW9CLFNBQVMsV0FDYkYsRUFBSWxCLEdBQU9tQixHQUVSRCxHQUNSLENBQUMsR0RoRUVHLENBQWtCVixHQUFNLENBQzVCRSxVQUFXQSxFQUNYUyxVQUFXLEVBQ1gscUJBQW1CLElBRWxCVixLIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS9leHRlcm5hbCB1bWQge1wiYW1kXCI6XCJyZWFjdFwiLFwiY29tbW9uanNcIjpcInJlYWN0XCIsXCJjb21tb25qczJcIjpcInJlYWN0XCIsXCJyb290XCI6XCJSZWFjdFwifSIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHMuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvY29tcG9uZW50cy9QYWdlc0NvbnRhaW5lci92aWV3ZXIvUGFnZXNDb250YWluZXIudHN4Iiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vZWRpdG9yLWVsZW1lbnRzLWNvbW1vbi11dGlscy9kaXN0L2VzbS9jb21tb25zL3V0aWxzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcInJlYWN0XCIpKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFwidGh1bmRlcmJvbHQvY29tcG9uZW50L1BhZ2VzQ29udGFpbmVyL1BhZ2VzQ29udGFpbmVyXCIsIFtcInJlYWN0XCJdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcInRodW5kZXJib2x0L2NvbXBvbmVudC9QYWdlc0NvbnRhaW5lci9QYWdlc0NvbnRhaW5lclwiXSA9IGZhY3RvcnkocmVxdWlyZShcInJlYWN0XCIpKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJ0aHVuZGVyYm9sdC9jb21wb25lbnQvUGFnZXNDb250YWluZXIvUGFnZXNDb250YWluZXJcIl0gPSBmYWN0b3J5KHJvb3RbXCJSZWFjdFwiXSk7XG59KSgodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHRoaXMpLCBmdW5jdGlvbihfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX1hkZl9fXykge1xucmV0dXJuICIsIm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9YZGZfX187IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7XG4gIHJldHVybiBtb2R1bGUuZXhwb3J0cyA9IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKG4pIHtcbiAgICBmb3IgKHZhciBlID0gMTsgZSA8IGFyZ3VtZW50cy5sZW5ndGg7IGUrKykge1xuICAgICAgdmFyIHQgPSBhcmd1bWVudHNbZV07XG4gICAgICBmb3IgKHZhciByIGluIHQpICh7fSkuaGFzT3duUHJvcGVydHkuY2FsbCh0LCByKSAmJiAobltyXSA9IHRbcl0pO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBfZXh0ZW5kcy5hcHBseShudWxsLCBhcmd1bWVudHMpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfZXh0ZW5kcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdGZ1bmN0aW9uKCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuXHRcdGZ1bmN0aW9uKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgZGVmaW5pdGlvbikge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmosIHByb3ApIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApOyB9IiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCIndXNlLWNsaWVudCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBnZXREYXRhQXR0cmlidXRlcyB9IGZyb20gJ0B3aXgvZWRpdG9yLWVsZW1lbnRzLWNvbW1vbi11dGlscyc7XG5pbXBvcnQgdHlwZSB7IElQYWdlc0NvbnRhaW5lclByb3BzIH0gZnJvbSAnLi4vUGFnZXNDb250YWluZXIudHlwZXMnO1xuXG5jb25zdCBQYWdlc0NvbnRhaW5lcjogUmVhY3QuRkM8SVBhZ2VzQ29udGFpbmVyUHJvcHM+ID0gcHJvcHMgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxtYWluXG4gICAgICBpZD1cIlBBR0VTX0NPTlRBSU5FUlwiXG4gICAgICB7Li4uZ2V0RGF0YUF0dHJpYnV0ZXMocHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgICBkYXRhLW1haW4tY29udGVudD17dHJ1ZX1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW4oKX1cbiAgICA8L21haW4+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBQYWdlc0NvbnRhaW5lcjtcbiIsImltcG9ydCB7IGtleUNvZGVzIH0gZnJvbSAnLi9hMTF5JztcbmV4cG9ydCBjb25zdCBpc1RoZW1lRm9udCA9ICh2YWx1ZSkgPT4gL15mb250X1xcZCskLy50ZXN0KHZhbHVlKTtcbmV4cG9ydCBjb25zdCBkZWJvdW5jZSA9IChmbiwgbXMgPSAwLCB7IGxlYWRpbmcgPSBmYWxzZSwgdHJhaWxpbmcgPSB0cnVlIH0gPSB7fSkgPT4ge1xuICAgIGxldCB0aW1lb3V0SWQgPSBudWxsO1xuICAgIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBpZiAobGVhZGluZyAmJiB0aW1lb3V0SWQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aW1lb3V0SWQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdHJhaWxpbmcgfHwgIWxlYWRpbmcgfHwgdGltZW91dElkKSB7XG4gICAgICAgICAgICB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodHJhaWxpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgZm4uYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRpbWVvdXRJZCA9IG51bGw7XG4gICAgICAgICAgICB9LCBtcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIGEgc2luZ2xlIGNhbGwgd2l0aCBib3RoIGxlYWRpbmcgYW5kIHRyYWlsaW5nIChzZWUgdGVzdHMpXG4gICAgICAgICAgICB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aW1lb3V0SWQgPSBudWxsO1xuICAgICAgICAgICAgfSwgbXMpO1xuICAgICAgICB9XG4gICAgfTtcbn07XG5leHBvcnQgY29uc3QgdGhyb3R0bGUgPSAoZnVuYywgbXMgPSAwKSA9PiB7XG4gICAgbGV0IGlzVGhyb3R0bGVkID0gZmFsc2UsIHNhdmVkQXJncztcbiAgICBmdW5jdGlvbiB3cmFwcGVyKC4uLmFyZ3MpIHtcbiAgICAgICAgaWYgKGlzVGhyb3R0bGVkKSB7XG4gICAgICAgICAgICBzYXZlZEFyZ3MgPSBhcmdzO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIGlzVGhyb3R0bGVkID0gdHJ1ZTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpc1Rocm90dGxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHNhdmVkQXJncykge1xuICAgICAgICAgICAgICAgIHdyYXBwZXIuYXBwbHkodGhpcywgc2F2ZWRBcmdzKTtcbiAgICAgICAgICAgICAgICBzYXZlZEFyZ3MgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBtcyk7XG4gICAgfVxuICAgIHJldHVybiB3cmFwcGVyO1xufTtcbmV4cG9ydCBjb25zdCBpc0Jyb3dzZXIgPSAoKSA9PiB0eXBlb2Ygd2luZG93ICE9PSBgdW5kZWZpbmVkYDtcbmV4cG9ydCBjb25zdCBwZXJmb3JtT25FbnRlciA9IChmbikgPT4ge1xuICAgIHJldHVybiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IGtleUNvZGVzLmVudGVyKSB7XG4gICAgICAgICAgICBmbihldmVudCk7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbmV4cG9ydCBjb25zdCBpc0NTU01hc2tTdXBwb3J0ZWQgPSAoKSA9PiB7XG4gICAgaWYgKCFpc0Jyb3dzZXIoKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuICh3aW5kb3cuQ1NTICYmXG4gICAgICAgIHdpbmRvdy5DU1Muc3VwcG9ydHMoJyhtYXNrLXJlcGVhdDogbm8tcmVwZWF0KSBvciAoLXdlYmtpdC1tYXNrLXJlcGVhdDogbm8tcmVwZWF0KScpKTtcbn07XG5leHBvcnQgY29uc3QgaXNFbXB0eU9iamVjdCA9IChvYmopID0+ICFvYmogfHwgKE9iamVjdC5rZXlzKG9iaikubGVuZ3RoID09PSAwICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0KTtcbmV4cG9ydCBjb25zdCBpc1NhZmFyaSA9ICgpID0+IC9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QobmF2aWdhdG9yPy51c2VyQWdlbnQpO1xuLy8gZXZlbiB0aG91Z2ggbmF2aWdhdG9yLnBsYXRmb3JtIGlzIGRlcHJlY2F0ZWQsIGl0J3Mgc3RpbGwgdGhlIG1vc3QgcmVsaWFibGUgd2F5IHRvIGRldGVjdCB0aGUgT1Ncbi8vIHN1Z2dlc3RlZCBieSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvTmF2aWdhdG9yL3BsYXRmb3JtXG4vLyB0aGlzIGZ1bmN0aW9uIGlzIG5vdCB3b3JraW5nIGluIFNTUiBlbnZpcm9ubWVudFxuLy8gc2hvdWxkIGJlIHVzZWQgb25seSBpbiB0aGUgYnJvd3NlciBlbnZpcm9ubWVudFxuZXhwb3J0IGNvbnN0IGlzTWFjID0gKCkgPT4gbmF2aWdhdG9yPy5wbGF0Zm9ybT8udG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCdtYWMnKTtcbmV4cG9ydCBjb25zdCBnZXREYXRhQXR0cmlidXRlcyA9IChwcm9wcykgPT4ge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhwcm9wcykucmVkdWNlKChhY2MsIFtrZXksIHZhbF0pID0+IHtcbiAgICAgICAgaWYgKGtleS5pbmNsdWRlcygnZGF0YS0nKSkge1xuICAgICAgICAgICAgYWNjW2tleV0gPSB2YWw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIHBpY2soc291cmNlLCBrZXlzKSB7XG4gICAgcmV0dXJuIGtleXMucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgICBpZiAoIXNvdXJjZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICBba2V5XTogc291cmNlW2tleV0sXG4gICAgICAgIH07XG4gICAgfSwge30pO1xufVxuZXhwb3J0IGNvbnN0IGlkVG9Db21wUmVmID0gKGlkKSA9PiAoeyBpZCwgdHlwZTogJ0RFU0tUT1AnIH0pO1xuZXhwb3J0IGNvbnN0IGlzV2l4RG9tYWluID0gKHVybCkgPT4gWydlZGl0b3J4LmlvJywgJ3dpeHNpdGUuY29tJywgJ3dpeC5jb20nLCAnd2l4c3R1ZGlvLmlvJ10uc29tZShkb21haW4gPT4gdXJsLmluY2x1ZGVzKGRvbWFpbikpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbHMuanMubWFwIl0sIm5hbWVzIjpbInJvb3QiLCJmYWN0b3J5IiwiZXhwb3J0cyIsIm1vZHVsZSIsInJlcXVpcmUiLCJkZWZpbmUiLCJhbWQiLCJzZWxmIiwidGhpcyIsIl9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfWGRmX19fIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwibiIsImUiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ0IiwiciIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIl9fZXNNb2R1bGUiLCJhcHBseSIsIl9fd2VicGFja19tb2R1bGVfY2FjaGVfXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImNhY2hlZE1vZHVsZSIsInVuZGVmaW5lZCIsIl9fd2VicGFja19tb2R1bGVzX18iLCJnZXR0ZXIiLCJkIiwiYSIsImRlZmluaXRpb24iLCJrZXkiLCJvIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0Iiwib2JqIiwicHJvcCIsInByb3RvdHlwZSIsIlN5bWJvbCIsInRvU3RyaW5nVGFnIiwidmFsdWUiLCJwcm9wcyIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwiUmVhY3QiLCJpZCIsImVudHJpZXMiLCJyZWR1Y2UiLCJhY2MiLCJ2YWwiLCJpbmNsdWRlcyIsImdldERhdGFBdHRyaWJ1dGVzIiwidGFiSW5kZXgiXSwic291cmNlUm9vdCI6IiJ9","'use client';\nimport { PagesContainer as Component } from '@wix/editor-components/component/PagesContainer';\nimport { withNormalChildren } from './hocs';\nexport const PagesContainer = withNormalChildren(Component);\n//# sourceMappingURL=PagesContainer.js.map","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\")):\"function\"==typeof define&&define.amd?define(\"thunderbolt/component/ResponsiveContainer/ResponsiveContainer\",[\"react\"],t):\"object\"==typeof exports?exports[\"thunderbolt/component/ResponsiveContainer/ResponsiveContainer\"]=t(require(\"react\")):e[\"thunderbolt/component/ResponsiveContainer/ResponsiveContainer\"]=t(e.React)}(\"undefined\"!=typeof self?self:this,function(e){return function(){\"use strict\";var t={jBV1:function(e,t,r){r.d(t,{V5:function(){return c}});const n=13,o=27;function a(e){return t=>{t.keyCode===e&&(t.preventDefault(),t.stopPropagation(),t.currentTarget.click())}}a(32),a(n),a(o);const i=[\"aria-id\",\"aria-metadata\",\"aria-type\"],s=(e,t)=>Object.entries(e).reduce((e,[r,n])=>(t.includes(r)||(e[r]=n),e),{}),c=({role:e,tabIndex:t,tabindex:r,...n}={})=>{const o=Object.entries(n).reduce((e,[t,r])=>({...e,[`aria-${t}`.toLowerCase()]:r}),{role:e,tabIndex:t??r});return Object.keys(o).forEach(e=>{void 0!==o[e]&&null!==o[e]||delete o[e]}),s(o,i)}},\"Xdf/\":function(t){t.exports=e},MRkx:function(e,t,r){function n(e){var t,r,o=\"\";if(\"string\"==typeof e||\"number\"==typeof e)o+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(r=n(e[t]))&&(o&&(o+=\" \"),o+=r);else for(t in e)e[t]&&(o&&(o+=\" \"),o+=t);return o}t.Z=function(){for(var e,t,r=0,o=\"\";r<arguments.length;)(e=arguments[r++])&&(t=n(e))&&(o&&(o+=\" \"),o+=t);return o}}},r={};function n(e){var o=r[e];if(void 0!==o)return o.exports;var a=r[e]={exports:{}};return t[e](a,a.exports,n),a.exports}n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var o={};return function(){n.r(o),n.d(o,{default:function(){return f}});var e=n(\"Xdf/\"),t=n.n(e),r=n(\"jBV1\"),a=n(\"MRkx\");const i=\"responsive-container-overflow\",s=\"responsive-container-content\";var c=\"xpmKd_\";const l=t().forwardRef((e,r)=>{let{children:n,className:o}=e;return t().createElement(\"div\",{className:(0,a.Z)(o,c),\"data-testid\":i,ref:r},n)}),u=(n,o)=>{let{containerLayoutClassName:i,overlowWrapperClassName:c,hasOverflow:u,hasScrollOverflow:f,shouldOmitWrapperLayers:d,children:p,role:v,label:b,extraRootClass:m=\"\",ariaLive:y,ariaAttributes:x,tabIndex:h,tagName:j=\"div\"}=n;const g=!d&&u;let C=-1;f&&void 0!==h&&(C=h);const R=g?C:void 0,O=(0,e.useCallback)(e=>g?t().createElement(l,{className:(0,a.Z)(c,m)},e):e,[g,c,m]),w=u?i:(0,a.Z)(i,m),N={ref:o,\"data-testid\":s,tabIndex:R,...v?{role:v}:{},...b?{\"aria-label\":b}:{},...y?{\"aria-live\":y}:{},...(0,r.V5)(x)};return\"multi-column-layouter\"===j?(N.class=w,N.style={visibility:\"hidden\"}):N.className=w,O(d?t().createElement(t().Fragment,null,p()):t().createElement(j||\"div\",N,p()))};var f=t().forwardRef(u)}(),o}()});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGh1bmRlcmJvbHQvY29tcG9uZW50L1Jlc3BvbnNpdmVDb250YWluZXIvUmVzcG9uc2l2ZUNvbnRhaW5lci5idW5kbGUubWluLmpzIiwibWFwcGluZ3MiOiJDQUFBLFNBQTJDQSxFQUFNQyxHQUMxQixpQkFBWkMsU0FBMEMsaUJBQVhDLE9BQ3hDQSxPQUFPRCxRQUFVRCxFQUFRRyxRQUFRLFVBQ1IsbUJBQVhDLFFBQXlCQSxPQUFPQyxJQUM5Q0QsT0FBTyxnRUFBaUUsQ0FBQyxTQUFVSixHQUN6RCxpQkFBWkMsUUFDZEEsUUFBUSxpRUFBbUVELEVBQVFHLFFBQVEsVUFFM0ZKLEVBQUssaUVBQW1FQyxFQUFRRCxFQUFZLE1BQzdGLENBVEQsQ0FTb0Isb0JBQVRPLEtBQXVCQSxLQUFPQyxLQUFPLFNBQVNDLEdBQ3pELE8scUZDVk8sTUFBTUMsRUFDRixHQURFQSxFQUtELEdBd0JaLFNBQVNDLEVBQWNDLEdBQ25CLE9BQU9DLElBQ0NBLEVBQU1DLFVBQVlGLElBQ2xCQyxFQUFNRSxpQkFDTkYsRUFBTUcsa0JBQ05ILEVBQU1JLGNBQWNDLFNBR2hDLENBQ3FDUCxFQXBDMUIsSUFxQzBCQSxFQUFjRCxHQUtiQyxFQUFjRCxHQU43QyxNQVFNUyxFQUFnQixDQUFDLFVBQVcsZ0JBQWlCLGFBQzdDQyxFQUFlLENBQUNDLEVBQU1DLElBQ3hCQyxPQUFPQyxRQUFRSCxHQUFNSSxPQUFPLENBQUNDLEdBQU1kLEVBQUtlLE1BQ3RDTCxFQUFVTSxTQUFTaEIsS0FDcEJjLEVBQUlkLEdBQU9lLEdBRVJELEdBQ1IsQ0FBQyxHQUtLRyxFQUFvQixFQUFHQyxPQUFNQyxXQUFVQyxjQUFhQyxHQUFjLENBQUMsS0FDNUUsTUFBTUMsRUFBU1gsT0FBT0MsUUFBUVMsR0FBV1IsT0FBTyxDQUFDVSxHQUFPdkIsRUFBS2UsTUFDbEQsSUFBS1EsRUFBTSxDQUFDLFFBQVF2QixJQUFNd0IsZUFBZ0JULElBQ2xELENBQUVHLE9BQU1DLFNBQVVBLEdBQVlDLElBT2pDLE9BTkFULE9BQU9jLEtBQUtI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LE1BQU1ZLEdBQXNCUCxHQUEyQkYsRUFDdkQsSUFBSVUsR0FBd0IsRUFDeEJULFFBQTJDN0MsSUFBdEJtRCxJQUN2QkcsRUFBdUJILEdBR3pCLE1BQU0zRCxFQUFXNkQsRUFBcUJDLE9BQXVCdEQsRUFFdkR1RCxHQUFrQ0MsRUFBQUEsRUFBQUEsYUFDckNDLEdBQ0NKLEVBQ0VwQixJQUFBQSxjQUFDRCxFQUFlLENBQ2RLLFdBQVdDLEVBQUFBLEVBQUFBLEdBQVdLLEVBQXlCSyxJQUU5Q1MsR0FHSEEsRUFFSixDQUFDSixFQUFvQlYsRUFBeUJLLElBRzFDVSxFQUFVZCxFQUNaRixHQUNBSixFQUFBQSxFQUFBQSxHQUFXSSxFQUEwQk0sR0FFbkNXLEVBQWtDLENBQ3RDeEIsTUFDQSxjQUFlSixFQUNmdkMsY0FDSUQsRUFBTyxDQUFFQSxRQUFTLENBQUMsS0FDbkJ3RCxFQUFRLENBQUUsYUFBY0EsR0FBVSxDQUFDLEtBQ25DRSxFQUFXLENBQUUsWUFBYUEsR0FBYSxDQUFDLE1BQ3pDM0QsRUFBQUEsRUFBQUEsSUFBa0I0RCxJQVV2QixNQVBnQiwwQkFBWkUsR0FDRk8sRUFBV0MsTUFBUUYsRUFDbkJDLEVBQVdwQixNQUFRLENBQUVzQixXQUFZLFdBRWpDRixFQUFXdEIsVUFBWXFCLEVBR2xCSCxFQUNMVCxFQUNFYixJQUFBQSxjQUFDQSxJQUFBQSxTQUFjLEtBQUVHLEtBRWpCSCxJQUFBQSxjQUFvQm1CLEdBQVcsTUFBT08sRUFBWXZCLE9BS3hELE1BQWVILElBQUFBLFdBQWlCTyxFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi9lZGl0b3ItZWxlbWVudHMtY29tbW9uLXV0aWxzL2Rpc3QvZXNtL2NvbW1vbnMvYTExeS5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L2V4dGVybmFsIHVtZCB7XCJhbWRcIjpcInJlYWN0XCIsXCJjb21tb25qc1wiOlwicmVhY3RcIixcImNvbW1vbmpzMlwiOlwicmVhY3RcIixcInJvb3RcIjpcIlJlYWN0XCJ9Iiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nsc3gvZGlzdC9jbHN4Lm1qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy90aHVuZGVyYm9sdC1jb3JlLWNvbXBvbmVudHMvUmVzcG9uc2l2ZUNvbnRhaW5lci9jb25zdGFudHMudHMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvdGh1bmRlcmJvbHQtY29yZS1jb21wb25lbnRzL1Jlc3BvbnNpdmVDb250YWluZXIvdmlld2VyL3N0eWxlL1Jlc3BvbnNpdmVDb250YWluZXIubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvdGh1bmRlcmJvbHQtY29yZS1jb21wb25lbnRzL1Jlc3BvbnNpdmVDb250YWluZXIvdmlld2VyL1Jlc3BvbnNpdmVDb250YWluZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcInJlYWN0XCIpKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFwidGh1bmRlcmJvbHQvY29tcG9uZW50L1Jlc3BvbnNpdmVDb250YWluZXIvUmVzcG9uc2l2ZUNvbnRhaW5lclwiLCBbXCJyZWFjdFwiXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJ0aHVuZGVyYm9sdC9jb21wb25lbnQvUmVzcG9uc2l2ZUNvbnRhaW5lci9SZXNwb25zaXZlQ29udGFpbmVyXCJdID0gZmFjdG9yeShyZXF1aXJlKFwicmVhY3RcIikpO1xuXHRlbHNlXG5cdFx0cm9vdFtcInRodW5kZXJib2x0L2NvbXBvbmVudC9SZXNwb25zaXZlQ29udGFpbmVyL1Jlc3BvbnNpdmVDb250YWluZXJcIl0gPSBmYWN0b3J5KHJvb3RbXCJSZWFjdFwiXSk7XG59KSgodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHRoaXMpLCBmdW5jdGlvbihfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX1hkZl9fXykge1xucmV0dXJuICIsImV4cG9ydCBjb25zdCBrZXlDb2RlcyA9IHtcbiAgICBlbnRlcjogMTMsXG4gICAgc3BhY2U6IDMyLFxuICAgIGVuZDogMzUsXG4gICAgaG9tZTogMzYsXG4gICAgZXNjYXBlOiAyNyxcbiAgICBhcnJvd0xlZnQ6IDM3LFxuICAgIGFycm93VXA6IDM4LFxuICAgIGFycm93UmlnaHQ6IDM5LFxuICAgIGFycm93RG93bjogNDAsXG4gICAgdGFiOiA5LFxuICAgIGRlbGV0ZTogNDYsXG4gICAgYTogNjUsXG4gICAgejogOTAsXG4gICAgcGFnZVVwOiAzMyxcbiAgICBwYWdlRG93bjogMzQsXG59O1xuZXhwb3J0IGNvbnN0IGtleWJvYXJkU2hvcnRjdXRzID0ge1xuICAgIGNvbmZpcm1LZXk6ICdFbnRlcicsXG4gICAgc3BhY2VLZXk6ICcgJyxcbiAgICBhcnJvd0Rvd25LZXk6ICdBcnJvd0Rvd24nLFxuICAgIGFycm93VXBLZXk6ICdBcnJvd1VwJyxcbiAgICBlc2NhcGVLZXk6ICdFc2NhcGUnLFxufTtcbi8vIHNlZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0tleWJvYXJkRXZlbnQva2V5L0tleV9WYWx1ZXNcbmV4cG9ydCBjb25zdCBrZXlzID0ge1xuICAgIHNwYWNlOiBbJ1NwYWNlYmFyJywgJyAnXSxcbiAgICBlbnRlcjogWydFbnRlciddLFxufTtcbmZ1bmN0aW9uIGFjdGl2YXRlQnlLZXkoa2V5KSB7XG4gICAgcmV0dXJuIGV2ZW50ID0+IHtcbiAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IGtleSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5jbGljaygpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbmV4cG9ydCBjb25zdCBhY3RpdmF0ZUJ5U3BhY2VCdXR0b24gPSBhY3RpdmF0ZUJ5S2V5KGtleUNvZGVzLnNwYWNlKTtcbmV4cG9ydCBjb25zdCBhY3RpdmF0ZUJ5RW50ZXJCdXR0b24gPSBhY3RpdmF0ZUJ5S2V5KGtleUNvZGVzLmVudGVyKTtcbmV4cG9ydCBjb25zdCBhY3RpdmF0ZUJ5U3BhY2VPckVudGVyQnV0dG9uID0gZXZlbnQgPT4ge1xuICAgIGFjdGl2YXRlQnlFbnRlckJ1dHRvbihldmVudCk7XG4gICAgYWN0aXZhdGVCeVNwYWNlQnV0dG9uKGV2ZW50KTtcbn07XG5leHBvcnQgY29uc3QgYWN0aXZhdGVCeUVzY2FwZUJ1dHRvbiA9IGFjdGl2YXRlQnlLZXkoa2V5Q29kZXMuZXNjYXBlKTtcbmV4cG9ydCBjb25zdCBIQVNfQ1VTVE9NX0ZPQ1VTX0NMQVNTTkFNRSA9ICdoYXMtY3VzdG9tLWZvY3VzJztcbmV4cG9ydCBjb25zdCBhMTF5QmxhY2tMaXN0ID0gWydhcmlhLWlkJywgJ2FyaWEtbWV0YWRhdGEnLCAnYXJpYS10eXBlJ107XG5leHBvcnQgY29uc3QgZmlsdGVyZWRBMTF5ID0gKGExMXksIGJsYWNrbGlzdCkgPT4ge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhhMTF5KS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGlmICghYmxhY2tsaXN0LmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgICAgIGFjY1trZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG59O1xuLyoqXG4gKiBAZGVwcmVjYXRlZCB1c2UgZ2V0QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZXMgaW5zdGVhZCB3aGVyZXZlciB5b3UgY2FuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRBcmlhQXR0cmlidXRlcyA9ICh7IHJvbGUsIHRhYkluZGV4LCB0YWJpbmRleCwgLi4uYXJpYVByb3BzIH0gPSB7fSkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IE9iamVjdC5lbnRyaWVzKGFyaWFQcm9wcykucmVkdWNlKChwcmV2LCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgcmV0dXJuIHsgLi4ucHJldiwgW2BhcmlhLSR7a2V5fWAudG9Mb3dlckNhc2UoKV06IHZhbHVlIH07XG4gICAgfSwgeyByb2xlLCB0YWJJbmRleDogdGFiSW5kZXggPz8gdGFiaW5kZXggfSk7XG4gICAgT2JqZWN0LmtleXMocmVzdWx0KS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGlmIChyZXN1bHRba2V5XSA9PT0gdW5kZWZpbmVkIHx8IHJlc3VsdFtrZXldID09PSBudWxsKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgICAgIGRlbGV0ZSByZXN1bHRba2V5XTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmaWx0ZXJlZEExMXkocmVzdWx0LCBhMTF5QmxhY2tMaXN0KTtcbn07XG5leHBvcnQgY29uc3QgZ2V0VGFiSW5kZXhBdHRyaWJ1dGUgPSAoYTExeSA9IHt9KSA9PiB7XG4gICAgY29uc3QgdGFiSW5kZXggPSBhMTF5LnRhYkluZGV4ID8/IGExMXkudGFiaW5kZXggPz8gdW5kZWZpbmVkO1xuICAgIHJldHVybiB0YWJJbmRleCAhPT0gdW5kZWZpbmVkID8geyB0YWJJbmRleDogTnVtYmVyKHRhYkluZGV4KSB9IDoge307XG59O1xuZXhwb3J0IGNvbnN0IGdldEFyaWFMYWJlbEF0dHJpYnV0ZSA9IChhMTF5KSA9PiB7XG4gICAgcmV0dXJuIGExMXk/LmxhYmVsID8geyAnYXJpYS1sYWJlbCc6IGExMXkubGFiZWwgfSA6IHt9O1xufTtcbmV4cG9ydCBjb25zdCBJTk5FUl9GT0NVU19SSU5HX0NMQVNTTkFNRSA9ICdoYXMtaW5uZXItZm9jdXMtcmluZyc7XG5jb25zdCBMSU5FMSA9ICcwIDAgMCAxcHgnO1xuY29uc3QgTElORTIgPSAnMCAwIDAgM3B4JztcbmNvbnN0IENPTE9SMSA9ICcjZmZmZmZmJztcbmNvbnN0IENPTE9SMiA9ICcjMTE2ZGZmJztcbmNvbnN0IE9VVEVSX0ZPQ1VTX1JJTkcgPSBgJHtMSU5FMX0ke0NPTE9SMX0sICR7TElORTJ9JHtDT0xPUjJ9YDtcbmNvbnN0IElOTkVSX0ZPQ1VTX1JJTkcgPSBgaW5zZXQgJHtMSU5FMX0ke0NPTE9SMn0sIGluc2V0ICR7TElORTJ9JHtDT0xPUjF9YDtcbmV4cG9ydCBjb25zdCBnZXRGb2N1c1JpbmdWYWx1ZSA9IChpc091dGVyID0gdHJ1ZSkgPT4gaXNPdXRlciA/IE9VVEVSX0ZPQ1VTX1JJTkcgOiBJTk5FUl9GT0NVU19SSU5HO1xuZXhwb3J0IGNvbnN0IGdldEFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVzID0gKGF0dHJpYnV0ZXMpID0+IHtcbiAgICBjb25zdCB7IHJvbGUsIHRhYkluZGV4LCB0YWJpbmRleCwgc2NyZWVuUmVhZGVyLCBsYW5nLCBhcmlhQXR0cmlidXRlcyA9IHt9LCB9ID0gYXR0cmlidXRlcztcbiAgICBjb25zdCBwcmVmaXhlZEFyaWFBdHRyaWJ1dGVzID0gT2JqZWN0LmVudHJpZXMoYXJpYUF0dHJpYnV0ZXMpLnJlZHVjZSgocHJldiwgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLnByZXYsIFtgYXJpYS0ke2tleX1gLnRvTG93ZXJDYXNlKCldOiB2YWx1ZSB9O1xuICAgIH0sIHt9KTtcbiAgICByZXR1cm4ge1xuICAgICAgICByb2xlLFxuICAgICAgICB0YWJJbmRleDogdGFiSW5kZXggPz8gdGFiaW5kZXgsXG4gICAgICAgIHNjcmVlblJlYWRlcixcbiAgICAgICAgYXJpYUF0dHJpYnV0ZXM6IGZpbHRlcmVkQTExeShwcmVmaXhlZEFyaWFBdHRyaWJ1dGVzLCBhMTF5QmxhY2tMaXN0KSxcbiAgICAgICAgbGFuZyxcbiAgICB9O1xufTtcbmV4cG9ydCBjb25zdCBnZXRBY2Nlc3NpYmlsaXR5QXR0cmlidXRlc1NwcmVhZCA9IChhdHRyaWJ1dGVzKSA9PiB7XG4gICAgY29uc3QgYTExeVByb3BzID0gZ2V0QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgLi4uYTExeVByb3BzLmFyaWFBdHRyaWJ1dGVzLFxuICAgICAgICB0YWJJbmRleDogYTExeVByb3BzLnRhYkluZGV4LFxuICAgICAgICBzY3JlZW5SZWFkZXI6IGExMXlQcm9wcy5zY3JlZW5SZWFkZXIsXG4gICAgICAgIGxhbmc6IGExMXlQcm9wcy5sYW5nLFxuICAgICAgICByb2xlOiBhMTF5UHJvcHMucm9sZSxcbiAgICB9O1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWExMXkuanMubWFwIiwibW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX1hkZl9fXzsiLCJmdW5jdGlvbiByKGUpe3ZhciB0LGYsbj1cIlwiO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlfHxcIm51bWJlclwiPT10eXBlb2YgZSluKz1lO2Vsc2UgaWYoXCJvYmplY3RcIj09dHlwZW9mIGUpaWYoQXJyYXkuaXNBcnJheShlKSlmb3IodD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF0mJihmPXIoZVt0XSkpJiYobiYmKG4rPVwiIFwiKSxuKz1mKTtlbHNlIGZvcih0IGluIGUpZVt0XSYmKG4mJihuKz1cIiBcIiksbis9dCk7cmV0dXJuIG59ZXhwb3J0IGZ1bmN0aW9uIGNsc3goKXtmb3IodmFyIGUsdCxmPTAsbj1cIlwiO2Y8YXJndW1lbnRzLmxlbmd0aDspKGU9YXJndW1lbnRzW2YrK10pJiYodD1yKGUpKSYmKG4mJihuKz1cIiBcIiksbis9dCk7cmV0dXJuIG59ZXhwb3J0IGRlZmF1bHQgY2xzeDsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHRmdW5jdGlvbigpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcblx0XHRmdW5jdGlvbigpIHsgcmV0dXJuIG1vZHVsZTsgfTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIGRlZmluaXRpb24pIHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqLCBwcm9wKSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTsgfSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiZXhwb3J0IGNvbnN0IFRlc3RJZHMgPSB7XG4gIG92ZXJmbG93OiAncmVzcG9uc2l2ZS1jb250YWluZXItb3ZlcmZsb3cnLFxuICBjb250ZW50OiAncmVzcG9uc2l2ZS1jb250YWluZXItY29udGVudCcsXG59IGFzIGNvbnN0O1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQgZGVmYXVsdCB7XCJjb250YWluZXItb3ZlcmZsb3dcIjpcInhwbUtkX1wiLFwiY29udGFpbmVyT3ZlcmZsb3dcIjpcInhwbUtkX1wifTsiLCJpbXBvcnQgdHlwZSB7IFJlYWN0RWxlbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGdldEFyaWFBdHRyaWJ1dGVzIH0gZnJvbSAnQHdpeC9lZGl0b3ItZWxlbWVudHMtY29tbW9uLXV0aWxzJztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHR5cGUgeyBJUmVzcG9uc2l2ZUNvbnRhaW5lclByb3BzIH0gZnJvbSAnLi4vUmVzcG9uc2l2ZUNvbnRhaW5lci50eXBlcyc7XG5pbXBvcnQgeyBUZXN0SWRzIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBzdHlsZSBmcm9tICcuL3N0eWxlL1Jlc3BvbnNpdmVDb250YWluZXIubW9kdWxlLnNjc3MnO1xuXG5jb25zdCBPdmVyZmxvd1dyYXBwZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MRGl2RWxlbWVudCxcbiAge1xuICAgIGNsYXNzTmFtZTogc3RyaW5nO1xuICAgIGNoaWxkcmVuPzogUmVhY3QuUmVhY3RFbGVtZW50O1xuICB9XG4+KCh7IGNoaWxkcmVuLCBjbGFzc05hbWUgfSwgcmVmKSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKGNsYXNzTmFtZSwgc3R5bGVbJ2NvbnRhaW5lci1vdmVyZmxvdyddKX1cbiAgICAgIGRhdGEtdGVzdGlkPXtUZXN0SWRzLm92ZXJmbG93fVxuICAgICAgcmVmPXtyZWZ9XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvZGl2PlxuICApO1xufSk7XG5cbmNvbnN0IFJlc3BvbnNpdmVDb250YWluZXI6IFJlYWN0LkZvcndhcmRSZWZSZW5kZXJGdW5jdGlvbjxcbiAgSFRNTERpdkVsZW1lbnQsXG4gIElSZXNwb25zaXZlQ29udGFpbmVyUHJvcHNcbj4gPSAoXG4gIHtcbiAgICBjb250YWluZXJMYXlvdXRDbGFzc05hbWUsXG4gICAgb3Zlcmxvd1dyYXBwZXJDbGFzc05hbWUsXG4gICAgaGFzT3ZlcmZsb3csXG4gICAgaGFzU2Nyb2xsT3ZlcmZsb3csXG4gICAgc2hvdWxkT21pdFdyYXBwZXJMYXllcnMsXG4gICAgY2hpbGRyZW4sXG4gICAgcm9sZSxcbiAgICBsYWJlbCxcbiAgICBleHRyYVJvb3RDbGFzcyA9ICcnLFxuICAgIGFyaWFMaXZlLFxuICAgIGFyaWFBdHRyaWJ1dGVzLFxuICAgIHRhYkluZGV4OiB0YWJJbmRleEZyb21Qcm9wcyxcbiAgICB0YWdOYW1lID0gJ2RpdicsXG4gIH0sXG4gIHJlZixcbikgPT4ge1xuICBjb25zdCBoYXNPdmVyZmxvd1dyYXBwZXIgPSAhc2hvdWxkT21pdFdyYXBwZXJMYXllcnMgJiYgaGFzT3ZlcmZsb3c7XG4gIGxldCB0YWJJbmRleFdpdGhPdmVyZmxvdyA9IC0xO1xuICBpZiAoaGFzU2Nyb2xsT3ZlcmZsb3cgJiYgdGFiSW5kZXhGcm9tUHJvcHMgIT09IHVuZGVmaW5lZCkge1xuICAgIHRhYkluZGV4V2l0aE92ZXJmbG93ID0gdGFiSW5kZXhGcm9tUHJvcHM7XG4gIH1cblxuICBjb25zdCB0YWJJbmRleCA9IGhhc092ZXJmbG93V3JhcHBlciA/IHRhYkluZGV4V2l0aE92ZXJmbG93IDogdW5kZWZpbmVkO1xuXG4gIGNvbnN0IHdyYXBXaXRoT3ZlcmZsb3dXcmFwcGVySWZOZWVkZWQgPSB1c2VDYWxsYmFjayhcbiAgICAocmVhY3RDaGlsZHJlbjogUmVhY3RFbGVtZW50KSA9PlxuICAgICAgaGFzT3ZlcmZsb3dXcmFwcGVyID8gKFxuICAgICAgICA8T3ZlcmZsb3dXcmFwcGVyXG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKG92ZXJsb3dXcmFwcGVyQ2xhc3NOYW1lLCBleHRyYVJvb3RDbGFzcyl9XG4gICAgICAgID5cbiAgICAgICAgICB7cmVhY3RDaGlsZHJlbn1cbiAgICAgICAgPC9PdmVyZmxvd1dyYXBwZXI+XG4gICAgICApIDogKFxuICAgICAgICByZWFjdENoaWxkcmVuXG4gICAgICApLFxuICAgIFtoYXNPdmVyZmxvd1dyYXBwZXIsIG92ZXJsb3dXcmFwcGVyQ2xhc3NOYW1lLCBleHRyYVJvb3RDbGFzc10sXG4gICk7XG5cbiAgY29uc3QgY2xhc3NlcyA9IGhhc092ZXJmbG93XG4gICAgPyBjb250YWluZXJMYXlvdXRDbGFzc05hbWVcbiAgICA6IGNsYXNzTmFtZXMoY29udGFpbmVyTGF5b3V0Q2xhc3NOYW1lLCBleHRyYVJvb3RDbGFzcyk7XG5cbiAgY29uc3QgY2hpbGRQcm9wczogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcbiAgICByZWYsXG4gICAgJ2RhdGEtdGVzdGlkJzogVGVzdElkcy5jb250ZW50LFxuICAgIHRhYkluZGV4LFxuICAgIC4uLihyb2xlID8geyByb2xlIH0gOiB7fSksXG4gICAgLi4uKGxhYmVsID8geyAnYXJpYS1sYWJlbCc6IGxhYmVsIH0gOiB7fSksXG4gICAgLi4uKGFyaWFMaXZlID8geyAnYXJpYS1saXZlJzogYXJpYUxpdmUgfSA6IHt9KSxcbiAgICAuLi5nZXRBcmlhQXR0cmlidXRlcyhhcmlhQXR0cmlidXRlcyksXG4gIH07XG5cbiAgaWYgKHRhZ05hbWUgPT09ICdtdWx0aS1jb2x1bW4tbGF5b3V0ZXInKSB7XG4gICAgY2hpbGRQcm9wcy5jbGFzcyA9IGNsYXNzZXM7XG4gICAgY2hpbGRQcm9wcy5zdHlsZSA9IHsgdmlzaWJpbGl0eTogJ2hpZGRlbicgfTtcbiAgfSBlbHNlIHtcbiAgICBjaGlsZFByb3BzLmNsYXNzTmFtZSA9IGNsYXNzZXM7XG4gIH1cblxuICByZXR1cm4gd3JhcFdpdGhPdmVyZmxvd1dyYXBwZXJJZk5lZWRlZChcbiAgICBzaG91bGRPbWl0V3JhcHBlckxheWVycyA/IChcbiAgICAgIDxSZWFjdC5GcmFnbWVudD57Y2hpbGRyZW4oKX08L1JlYWN0LkZyYWdtZW50PlxuICAgICkgOiAoXG4gICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KHRhZ05hbWUgfHwgJ2RpdicsIGNoaWxkUHJvcHMsIGNoaWxkcmVuKCkpXG4gICAgKSxcbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlYWN0LmZvcndhcmRSZWYoUmVzcG9uc2l2ZUNvbnRhaW5lcik7XG4iXSwibmFtZXMiOlsicm9vdCIsImZhY3RvcnkiLCJleHBvcnRzIiwibW9kdWxlIiwicmVxdWlyZSIsImRlZmluZSIsImFtZCIsInNlbGYiLCJ0aGlzIiwiX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9YZGZfX18iLCJrZXlDb2RlcyIsImFjdGl2YXRlQnlLZXkiLCJrZXkiLCJldmVudCIsImtleUNvZGUiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsImN1cnJlbnRUYXJnZXQiLCJjbGljayIsImExMXlCbGFja0xpc3QiLCJmaWx0ZXJlZEExMXkiLCJhMTF5IiwiYmxhY2tsaXN0IiwiT2JqZWN0IiwiZW50cmllcyIsInJlZHVjZSIsImFjYyIsInZhbHVlIiwiaW5jbHVkZXMiLCJnZXRBcmlhQXR0cmlidXRlcyIsInJvbGUiLCJ0YWJJbmRleCIsInRhYmluZGV4IiwiYXJpYVByb3BzIiwicmVzdWx0IiwicHJldiIsInRvTG93ZXJDYXNlIiwia2V5cyIsImZvckVhY2giLCJ1bmRlZmluZWQiLCJyIiwiZSIsInQiLCJmIiwibiIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsImFyZ3VtZW50cyIsIl9fd2VicGFja19tb2R1bGVfY2FjaGVfXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImNhY2hlZE1vZHVsZSIsIl9fd2VicGFja19tb2R1bGVzX18iLCJnZXR0ZXIiLCJfX2VzTW9kdWxlIiwiZCIsImEiLCJkZWZpbml0aW9uIiwibyIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsIm9iaiIsInByb3AiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJTeW1ib2wiLCJ0b1N0cmluZ1RhZyIsIlRlc3RJZHMiLCJPdmVyZmxvd1dyYXBwZXIiLCJSZWFjdCIsIl9yZWYiLCJyZWYiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsImNsYXNzTmFtZXMiLCJzdHlsZSIsIlJlc3BvbnNpdmVDb250YWluZXIiLCJfcmVmMiIsImNvbnRhaW5lckxheW91dENsYXNzTmFtZSIsIm92ZXJsb3dXcmFwcGVyQ2xhc3NOYW1lIiwiaGFzT3ZlcmZsb3ciLCJoYXNTY3JvbGxPdmVyZmxvdyIsInNob3VsZE9taXRXcmFwcGVyTGF5ZXJzIiwibGFiZWwiLCJleHRyYVJvb3RDbGFzcyIsImFyaWFMaXZlIiwiYXJpYUF0dHJpYnV0ZXMiLCJ0YWJJbmRleEZyb21Qcm9wcyIsInRhZ05hbWUiLCJoYXNPdmVyZmxvd1dyYXBwZXIiLCJ0YWJJbmRleFdpdGhPdmVyZmxvdyIsIndyYXBXaXRoT3ZlcmZsb3dXcmFwcGVySWZOZWVkZWQiLCJ1c2VDYWxsYmFjayIsInJlYWN0Q2hpbGRyZW4iLCJjbGFzc2VzIiwiY2hpbGRQcm9wcyIsImNsYXNzIiwidmlzaWJpbGl0eSJdLCJzb3VyY2VSb290IjoiIn0=","'use client';\nimport { ResponsiveContainer as Component } from '@wix/editor-components/component/ResponsiveContainer';\nimport '@wix/editor-components/component/ResponsiveContainer/css';\nimport { withNormalChildren } from './hocs';\nexport const PageSections = withNormalChildren(Component);\n//# sourceMappingURL=PageSections.js.map","'use client';\nimport { ResponsiveContainer as Component } from '@wix/editor-components/component/ResponsiveContainer';\nimport '@wix/editor-components/component/ResponsiveContainer/css';\nimport { withNormalChildren } from './hocs';\nexport const ResponsiveContainer = withNormalChildren(Component);\n//# sourceMappingURL=ResponsiveContainer.js.map","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\")):\"function\"==typeof define&&define.amd?define(\"thunderbolt/component/ResponsivePopupPage/ResponsivePopupPage\",[\"react\"],t):\"object\"==typeof exports?exports[\"thunderbolt/component/ResponsivePopupPage/ResponsivePopupPage\"]=t(require(\"react\")):e[\"thunderbolt/component/ResponsivePopupPage/ResponsivePopupPage\"]=t(e.React)}(\"undefined\"!=typeof self?self:this,function(e){return function(){var t={\"Xdf/\":function(t){\"use strict\";t.exports=e},Fe5V:function(e){function t(){return e.exports=t=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},e.exports.__esModule=!0,e.exports.default=e.exports,t.apply(null,arguments)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports}},r={};function n(e){var o=r[e];if(void 0!==o)return o.exports;var a=r[e]={exports:{}};return t[e](a,a.exports,n),a.exports}n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var o={};return function(){\"use strict\";n.r(o),n.d(o,{default:function(){return w}});var e=n(\"Fe5V\"),t=n.n(e),r=n(\"Xdf/\"),a=n.n(r);function i(e){var t,r,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(r=i(e[t]))&&(n&&(n+=\" \"),n+=r);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}var s=function(){for(var e,t,r=0,n=\"\";r<arguments.length;)(e=arguments[r++])&&(t=i(e))&&(n&&(n+=\" \"),n+=t);return n};const l=13,c=27;function u(e){return t=>{t.keyCode===e&&(t.preventDefault(),t.stopPropagation(),t.currentTarget.click())}}u(32),u(l),u(c);const d=[\"aria-id\",\"aria-metadata\",\"aria-type\"],p=(e,t)=>Object.entries(e).reduce((e,[r,n])=>(t.includes(r)||(e[r]=n),e),{}),f=({role:e,tabIndex:t,tabindex:r,...n}={})=>{const o=Object.entries(n).reduce((e,[t,r])=>({...e,[`aria-${t}`.toLowerCase()]:r}),{role:e,tabIndex:t??r});return Object.keys(o).forEach(e=>{void 0!==o[e]&&null!==o[e]||delete o[e]}),p(o,d)},v=\"responsive-container-overflow\",b=\"responsive-container-content\";var m=\"gNqkn3\";const y=a().forwardRef(({children:e,className:t},r)=>a().createElement(\"div\",{className:s(t,m),\"data-testid\":v,ref:r},e));var g=a().forwardRef(({containerLayoutClassName:e,overlowWrapperClassName:t,hasOverflow:n,hasScrollOverflow:o,shouldOmitWrapperLayers:i,children:l,role:c,label:u,extraRootClass:d=\"\",ariaLive:p,ariaAttributes:v,tabIndex:m,tagName:g=\"div\"},x)=>{const P=!i&&n;let h=-1;o&&void 0!==m&&(h=m);const O=P?h:void 0,j=(0,r.useCallback)(e=>P?a().createElement(y,{className:s(t,d)},e):e,[P,t,d]),N=n?e:s(e,d),R={ref:x,\"data-testid\":b,tabIndex:O,...c?{role:c}:{},...u?{\"aria-label\":u}:{},...p?{\"aria-live\":p}:{},...f(v)};return\"multi-column-layouter\"===g?(R.class=N,R.style={visibility:\"hidden\"}):R.className=N,j(i?a().createElement(a().Fragment,null,l()):a().createElement(g||\"div\",R,l()))});const x=\"ResponsivePopupPageOverlay\";var P=\"_6rK0h\",h=\"v_sFOS\",O=\"wEzP_D\",j=\"QN18GJ\",N=\"bfgH5E\",R=\"SHhFKf\";var w=e=>{const{id:n,className:o,pageDidMount:a,onClick:i,children:l,containerProps:c,withOverlay:u=!0,fixOverlayTouchAction:d}=e;return r.createElement(\"div\",t()({id:n},(e=>Object.entries(e).reduce((e,[t,r])=>(t.includes(\"data-\")&&(e[t]=r),e),{}))(e),{className:s(o,P,{[O]:i}),ref:a,\"data-block-level-container\":\"PopupPage\"}),u&&r.createElement(\"div\",{className:s(j,{[N]:d}),onClick:i,\"data-testid\":x}),r.createElement(g,t()({},c,{extraRootClass:h}),()=>r.createElement(\"div\",{className:R},l())))}}(),o}()});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGh1bmRlcmJvbHQvY29tcG9uZW50L1Jlc3BvbnNpdmVQb3B1cFBhZ2UvUmVzcG9uc2l2ZVBvcHVwUGFnZS5idW5kbGUubWluLmpzIiwibWFwcGluZ3MiOiJDQUFBLFNBQTJDQSxFQUFNQyxHQUMxQixpQkFBWkMsU0FBMEMsaUJBQVhDLE9BQ3hDQSxPQUFPRCxRQUFVRCxFQUFRRyxRQUFRLFVBQ1IsbUJBQVhDLFFBQXlCQSxPQUFPQyxJQUM5Q0QsT0FBTyxnRUFBaUUsQ0FBQyxTQUFVSixHQUN6RCxpQkFBWkMsUUFDZEEsUUFBUSxpRUFBbUVELEVBQVFHLFFBQVEsVUFFM0ZKLEVBQUssaUVBQW1FQyxFQUFRRCxFQUFZLE1BQzdGLENBVEQsQ0FTb0Isb0JBQVRPLEtBQXVCQSxLQUFPQyxLQUFPLFNBQVNDLEdBQ3pELE8sa0RDVkFOLEVBQU9ELFFBQVVPLEMsbUJDQWpCLFNBQVNDLElBQ1AsT0FBT1AsRUFBT0QsUUFBVVEsRUFBV0MsT0FBT0MsT0FBU0QsT0FBT0MsT0FBT0MsT0FBUyxTQUFVQyxHQUNsRixJQUFLLElBQUlDLEVBQUksRUFBR0EsRUFBSUMsVUFBVUMsT0FBUUYsSUFBSyxDQUN6QyxJQUFJRyxFQUFJRixVQUFVRCxHQUNsQixJQUFLLElBQUlJLEtBQUtELEdBQUcsQ0FBRyxHQUFFRSxlQUFlQyxLQUFLSCxFQUFHQyxLQUFPTCxFQUFFSyxHQUFLRCxFQUFFQyxHQUMvRCxDQUNBLE9BQU9MLENBQ1QsRUFBR1gsRUFBT0QsUUFBUW9CLFlBQWEsRUFBTW5CLEVBQU9ELFFBQWlCLFFBQUlDLEVBQU9ELFFBQVNRLEVBQVNhLE1BQU0sS0FBTVAsVUFDeEcsQ0FDQWIsRUFBT0QsUUFBVVEsRUFBVVAsRUFBT0QsUUFBUW9CLFlBQWEsRUFBTW5CLEVBQU9ELFFBQWlCLFFBQUlDLEVBQU9ELE8sR0NSNUZzQixFQUEyQixDQUFDLEVBR2hDLFNBQVNDLEVBQW9CQyxHQUU1QixJQUFJQyxFQUFlSCxFQUF5QkUsR0FDNUMsUUFBcUJFLElBQWpCRCxFQUNILE9BQU9BLEVB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QXZCLEVBQXNELFNBQXRELEVBQTJFLFNBQTNFLEVBQThGLFNBQTlGLEVBQStILFNBQS9ILEVBQWtMLFNDaURsTCxNQXpDdUQwQixJQUNyRCxNQUFNLEdBQ0pDLEVBQUUsVUFDRnhCLEVBQVMsYUFDVHlCLEVBQVksUUFDWkMsRUFBTyxTQUNQM0IsRUFBUSxlQUNSNEIsRUFBYyxZQUNkQyxHQUFjLEVBQUksc0JBQ2xCQyxHQUNFTixFQUVKLE9BQ0VPLEVBQUFBLGNBQUEsTUFBQWhHLElBQUEsQ0FDRTBGLEdBQUlBLEdQNkN1QixDQUFDRCxHQUN2QnhGLE9BQU9nRCxRQUFRd0MsR0FBT3ZDLE9BQU8sQ0FBQ0MsR0FBTTNCLEVBQUt5RSxNQUN4Q3pFLEVBQUk0QixTQUFTLFdBQ2JELEVBQUkzQixHQUFPeUUsR0FFUjlDLEdBQ1IsQ0FBQyxHT2xERStDLENBQWtCVCxHQUFNLENBQzVCdkIsVUFBV2lDLEVBQVdqQyxFQUFXcUIsRUFBWSxDQUMzQyxDQUFDQSxHQUFrQkssSUFFckJ6QixJQUFLd0IsRUFDTCw2QkFBMkIsY0FFMUJHLEdBQ0NFLEVBQUFBLGNBQUEsT0FDRTlCLFVBQVdpQyxFQUFXWixFQUFlLENBQ25DLENBQUNBLEdBQThCUSxJQUVqQ0gsUUFBU0EsRUFDVCxjQUFhN0IsSUFHakJpQyxFQUFBQSxjQUFDSSxFQUFtQnBHLElBQUEsR0FDZDZGLEVBQWMsQ0FDbEJuQixlQUFnQmEsSUFFZixJQUFNUyxFQUFBQSxjQUFBLE9BQUs5QixVQUFXcUIsR0FBc0J0QixPIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS9leHRlcm5hbCB1bWQge1wiYW1kXCI6XCJyZWFjdFwiLFwiY29tbW9uanNcIjpcInJlYWN0XCIsXCJjb21tb25qczJcIjpcInJlYWN0XCIsXCJyb290XCI6XCJSZWFjdFwifSIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHMuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY2xzeC9kaXN0L2Nsc3gubWpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vZWRpdG9yLWVsZW1lbnRzLWNvbW1vbi11dGlscy9kaXN0L2VzbS9jb21tb25zL3V0aWxzLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vZWRpdG9yLWVsZW1lbnRzLWNvbW1vbi11dGlscy9kaXN0L2VzbS9jb21tb25zL2ExMXkuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9kaXN0L2VzbS90aHVuZGVyYm9sdC1jb3JlLWNvbXBvbmVudHMvUmVzcG9uc2l2ZUNvbnRhaW5lci9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9kaXN0L2VzbS90aHVuZGVyYm9sdC1jb3JlLWNvbXBvbmVudHMvUmVzcG9uc2l2ZUNvbnRhaW5lci92aWV3ZXIvc3R5bGUvUmVzcG9uc2l2ZUNvbnRhaW5lci5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL2Rpc3QvZXNtL3RodW5kZXJib2x0LWNvcmUtY29tcG9uZW50cy9SZXNwb25zaXZlQ29udGFpbmVyL3ZpZXdlci9SZXNwb25zaXZlQ29udGFpbmVyLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi9jb21wb25lbnRzL1Jlc3BvbnNpdmVQb3B1cFBhZ2UvY29uc3RhbnRzLnRzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi9jb21wb25lbnRzL1Jlc3BvbnNpdmVQb3B1cFBhZ2Uvdmlld2VyL3N0eWxlL1Jlc3BvbnNpdmVQb3B1cFBhZ2Uuc2NzcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4vY29tcG9uZW50cy9SZXNwb25zaXZlUG9wdXBQYWdlL3ZpZXdlci9SZXNwb25zaXZlUG9wdXBQYWdlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShcInRodW5kZXJib2x0L2NvbXBvbmVudC9SZXNwb25zaXZlUG9wdXBQYWdlL1Jlc3BvbnNpdmVQb3B1cFBhZ2VcIiwgW1wicmVhY3RcIl0sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1widGh1bmRlcmJvbHQvY29tcG9uZW50L1Jlc3BvbnNpdmVQb3B1cFBhZ2UvUmVzcG9uc2l2ZVBvcHVwUGFnZVwiXSA9IGZhY3RvcnkocmVxdWlyZShcInJlYWN0XCIpKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJ0aHVuZGVyYm9sdC9jb21wb25lbnQvUmVzcG9uc2l2ZVBvcHVwUGFnZS9SZXNwb25zaXZlUG9wdXBQYWdlXCJdID0gZmFjdG9yeShyb290W1wiUmVhY3RcIl0pO1xufSkoKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB0aGlzKSwgZnVuY3Rpb24oX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9YZGZfX18pIHtcbnJldHVybiAiLCJtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfWGRmX19fOyIsImZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICByZXR1cm4gbW9kdWxlLmV4cG9ydHMgPSBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uIChuKSB7XG4gICAgZm9yICh2YXIgZSA9IDE7IGUgPCBhcmd1bWVudHMubGVuZ3RoOyBlKyspIHtcbiAgICAgIHZhciB0ID0gYXJndW1lbnRzW2VdO1xuICAgICAgZm9yICh2YXIgciBpbiB0KSAoe30pLmhhc093blByb3BlcnR5LmNhbGwodCwgcikgJiYgKG5bcl0gPSB0W3JdKTtcbiAgICB9XG4gICAgcmV0dXJuIG47XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgX2V4dGVuZHMuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2V4dGVuZHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHRmdW5jdGlvbigpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcblx0XHRmdW5jdGlvbigpIHsgcmV0dXJuIG1vZHVsZTsgfTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIGRlZmluaXRpb24pIHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqLCBwcm9wKSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTsgfSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiZnVuY3Rpb24gcihlKXt2YXIgdCxmLG49XCJcIjtpZihcInN0cmluZ1wiPT10eXBlb2YgZXx8XCJudW1iZXJcIj09dHlwZW9mIGUpbis9ZTtlbHNlIGlmKFwib2JqZWN0XCI9PXR5cGVvZiBlKWlmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdJiYoZj1yKGVbdF0pKSYmKG4mJihuKz1cIiBcIiksbis9Zik7ZWxzZSBmb3IodCBpbiBlKWVbdF0mJihuJiYobis9XCIgXCIpLG4rPXQpO3JldHVybiBufWV4cG9ydCBmdW5jdGlvbiBjbHN4KCl7Zm9yKHZhciBlLHQsZj0wLG49XCJcIjtmPGFyZ3VtZW50cy5sZW5ndGg7KShlPWFyZ3VtZW50c1tmKytdKSYmKHQ9cihlKSkmJihuJiYobis9XCIgXCIpLG4rPXQpO3JldHVybiBufWV4cG9ydCBkZWZhdWx0IGNsc3g7IiwiaW1wb3J0IHsga2V5Q29kZXMgfSBmcm9tICcuL2ExMXknO1xuZXhwb3J0IGNvbnN0IGlzVGhlbWVGb250ID0gKHZhbHVlKSA9PiAvXmZvbnRfXFxkKyQvLnRlc3QodmFsdWUpO1xuZXhwb3J0IGNvbnN0IGRlYm91bmNlID0gKGZuLCBtcyA9IDAsIHsgbGVhZGluZyA9IGZhbHNlLCB0cmFpbGluZyA9IHRydWUgfSA9IHt9KSA9PiB7XG4gICAgbGV0IHRpbWVvdXRJZCA9IG51bGw7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgICAgIGlmIChsZWFkaW5nICYmIHRpbWVvdXRJZCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgZm4uYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRpbWVvdXRJZCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0cmFpbGluZyB8fCAhbGVhZGluZyB8fCB0aW1lb3V0SWQpIHtcbiAgICAgICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0cmFpbGluZykge1xuICAgICAgICAgICAgICAgICAgICBmbi5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGltZW91dElkID0gbnVsbDtcbiAgICAgICAgICAgIH0sIG1zKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgYSBzaW5nbGUgY2FsbCB3aXRoIGJvdGggbGVhZGluZyBhbmQgdHJhaWxpbmcgKHNlZSB0ZXN0cylcbiAgICAgICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRpbWVvdXRJZCA9IG51bGw7XG4gICAgICAgICAgICB9LCBtcyk7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbmV4cG9ydCBjb25zdCB0aHJvdHRsZSA9IChmdW5jLCBtcyA9IDApID0+IHtcbiAgICBsZXQgaXNUaHJvdHRsZWQgPSBmYWxzZSwgc2F2ZWRBcmdzO1xuICAgIGZ1bmN0aW9uIHdyYXBwZXIoLi4uYXJncykge1xuICAgICAgICBpZiAoaXNUaHJvdHRsZWQpIHtcbiAgICAgICAgICAgIHNhdmVkQXJncyA9IGFyZ3M7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgaXNUaHJvdHRsZWQgPSB0cnVlO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlzVGhyb3R0bGVkID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAoc2F2ZWRBcmdzKSB7XG4gICAgICAgICAgICAgICAgd3JhcHBlci5hcHBseSh0aGlzLCBzYXZlZEFyZ3MpO1xuICAgICAgICAgICAgICAgIHNhdmVkQXJncyA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIG1zKTtcbiAgICB9XG4gICAgcmV0dXJuIHdyYXBwZXI7XG59O1xuZXhwb3J0IGNvbnN0IGlzQnJvd3NlciA9ICgpID0+IHR5cGVvZiB3aW5kb3cgIT09IGB1bmRlZmluZWRgO1xuZXhwb3J0IGNvbnN0IHBlcmZvcm1PbkVudGVyID0gKGZuKSA9PiB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0ga2V5Q29kZXMuZW50ZXIpIHtcbiAgICAgICAgICAgIGZuKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH07XG59O1xuZXhwb3J0IGNvbnN0IGlzQ1NTTWFza1N1cHBvcnRlZCA9ICgpID0+IHtcbiAgICBpZiAoIWlzQnJvd3NlcigpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gKHdpbmRvdy5DU1MgJiZcbiAgICAgICAgd2luZG93LkNTUy5zdXBwb3J0cygnKG1hc2stcmVwZWF0OiBuby1yZXBlYXQpIG9yICgtd2Via2l0LW1hc2stcmVwZWF0OiBuby1yZXBlYXQpJykpO1xufTtcbmV4cG9ydCBjb25zdCBpc0VtcHR5T2JqZWN0ID0gKG9iaikgPT4gIW9iaiB8fCAoT2JqZWN0LmtleXMob2JqKS5sZW5ndGggPT09IDAgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBPYmplY3QpO1xuZXhwb3J0IGNvbnN0IGlzU2FmYXJpID0gKCkgPT4gL14oKD8hY2hyb21lfGFuZHJvaWQpLikqc2FmYXJpL2kudGVzdChuYXZpZ2F0b3I/LnVzZXJBZ2VudCk7XG4vLyBldmVuIHRob3VnaCBuYXZpZ2F0b3IucGxhdGZvcm0gaXMgZGVwcmVjYXRlZCwgaXQncyBzdGlsbCB0aGUgbW9zdCByZWxpYWJsZSB3YXkgdG8gZGV0ZWN0IHRoZSBPU1xuLy8gc3VnZ2VzdGVkIGJ5IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9OYXZpZ2F0b3IvcGxhdGZvcm1cbi8vIHRoaXMgZnVuY3Rpb24gaXMgbm90IHdvcmtpbmcgaW4gU1NSIGVudmlyb25tZW50XG4vLyBzaG91bGQgYmUgdXNlZCBvbmx5IGluIHRoZSBicm93c2VyIGVudmlyb25tZW50XG5leHBvcnQgY29uc3QgaXNNYWMgPSAoKSA9PiBuYXZpZ2F0b3I/LnBsYXRmb3JtPy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ21hYycpO1xuZXhwb3J0IGNvbnN0IGdldERhdGFBdHRyaWJ1dGVzID0gKHByb3BzKSA9PiB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHByb3BzKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsXSkgPT4ge1xuICAgICAgICBpZiAoa2V5LmluY2x1ZGVzKCdkYXRhLScpKSB7XG4gICAgICAgICAgICBhY2Nba2V5XSA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTtcbn07XG5leHBvcnQgZnVuY3Rpb24gcGljayhzb3VyY2UsIGtleXMpIHtcbiAgICByZXR1cm4ga2V5cy5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgIGlmICghc291cmNlLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgIFtrZXldOiBzb3VyY2Vba2V5XSxcbiAgICAgICAgfTtcbiAgICB9LCB7fSk7XG59XG5leHBvcnQgY29uc3QgaWRUb0NvbXBSZWYgPSAoaWQpID0+ICh7IGlkLCB0eXBlOiAnREVTS1RPUCcgfSk7XG5leHBvcnQgY29uc3QgaXNXaXhEb21haW4gPSAodXJsKSA9PiBbJ2VkaXRvcnguaW8nLCAnd2l4c2l0ZS5jb20nLCAnd2l4LmNvbScsICd3aXhzdHVkaW8uaW8nXS5zb21lKGRvbWFpbiA9PiB1cmwuaW5jbHVkZXMoZG9tYWluKSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD11dGlscy5qcy5tYXAiLCJleHBvcnQgY29uc3Qga2V5Q29kZXMgPSB7XG4gICAgZW50ZXI6IDEzLFxuICAgIHNwYWNlOiAzMixcbiAgICBlbmQ6IDM1LFxuICAgIGhvbWU6IDM2LFxuICAgIGVzY2FwZTogMjcsXG4gICAgYXJyb3dMZWZ0OiAzNyxcbiAgICBhcnJvd1VwOiAzOCxcbiAgICBhcnJvd1JpZ2h0OiAzOSxcbiAgICBhcnJvd0Rvd246IDQwLFxuICAgIHRhYjogOSxcbiAgICBkZWxldGU6IDQ2LFxuICAgIGE6IDY1LFxuICAgIHo6IDkwLFxuICAgIHBhZ2VVcDogMzMsXG4gICAgcGFnZURvd246IDM0LFxufTtcbmV4cG9ydCBjb25zdCBrZXlib2FyZFNob3J0Y3V0cyA9IHtcbiAgICBjb25maXJtS2V5OiAnRW50ZXInLFxuICAgIHNwYWNlS2V5OiAnICcsXG4gICAgYXJyb3dEb3duS2V5OiAnQXJyb3dEb3duJyxcbiAgICBhcnJvd1VwS2V5OiAnQXJyb3dVcCcsXG4gICAgZXNjYXBlS2V5OiAnRXNjYXBlJyxcbn07XG4vLyBzZWU6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9LZXlib2FyZEV2ZW50L2tleS9LZXlfVmFsdWVzXG5leHBvcnQgY29uc3Qga2V5cyA9IHtcbiAgICBzcGFjZTogWydTcGFjZWJhcicsICcgJ10sXG4gICAgZW50ZXI6IFsnRW50ZXInXSxcbn07XG5mdW5jdGlvbiBhY3RpdmF0ZUJ5S2V5KGtleSkge1xuICAgIHJldHVybiBldmVudCA9PiB7XG4gICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSBrZXkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuY2xpY2soKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5leHBvcnQgY29uc3QgYWN0aXZhdGVCeVNwYWNlQnV0dG9uID0gYWN0aXZhdGVCeUtleShrZXlDb2Rlcy5zcGFjZSk7XG5leHBvcnQgY29uc3QgYWN0aXZhdGVCeUVudGVyQnV0dG9uID0gYWN0aXZhdGVCeUtleShrZXlDb2Rlcy5lbnRlcik7XG5leHBvcnQgY29uc3QgYWN0aXZhdGVCeVNwYWNlT3JFbnRlckJ1dHRvbiA9IGV2ZW50ID0+IHtcbiAgICBhY3RpdmF0ZUJ5RW50ZXJCdXR0b24oZXZlbnQpO1xuICAgIGFjdGl2YXRlQnlTcGFjZUJ1dHRvbihldmVudCk7XG59O1xuZXhwb3J0IGNvbnN0IGFjdGl2YXRlQnlFc2NhcGVCdXR0b24gPSBhY3RpdmF0ZUJ5S2V5KGtleUNvZGVzLmVzY2FwZSk7XG5leHBvcnQgY29uc3QgSEFTX0NVU1RPTV9GT0NVU19DTEFTU05BTUUgPSAnaGFzLWN1c3RvbS1mb2N1cyc7XG5leHBvcnQgY29uc3QgYTExeUJsYWNrTGlzdCA9IFsnYXJpYS1pZCcsICdhcmlhLW1ldGFkYXRhJywgJ2FyaWEtdHlwZSddO1xuZXhwb3J0IGNvbnN0IGZpbHRlcmVkQTExeSA9IChhMTF5LCBibGFja2xpc3QpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoYTExeSkucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICBpZiAoIWJsYWNrbGlzdC5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgICBhY2Nba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xufTtcbi8qKlxuICogQGRlcHJlY2F0ZWQgdXNlIGdldEFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVzIGluc3RlYWQgd2hlcmV2ZXIgeW91IGNhblxuICovXG5leHBvcnQgY29uc3QgZ2V0QXJpYUF0dHJpYnV0ZXMgPSAoeyByb2xlLCB0YWJJbmRleCwgdGFiaW5kZXgsIC4uLmFyaWFQcm9wcyB9ID0ge30pID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBPYmplY3QuZW50cmllcyhhcmlhUHJvcHMpLnJlZHVjZSgocHJldiwgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLnByZXYsIFtgYXJpYS0ke2tleX1gLnRvTG93ZXJDYXNlKCldOiB2YWx1ZSB9O1xuICAgIH0sIHsgcm9sZSwgdGFiSW5kZXg6IHRhYkluZGV4ID8/IHRhYmluZGV4IH0pO1xuICAgIE9iamVjdC5rZXlzKHJlc3VsdCkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICBpZiAocmVzdWx0W2tleV0gPT09IHVuZGVmaW5lZCB8fCByZXN1bHRba2V5XSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgICAgICBkZWxldGUgcmVzdWx0W2tleV07XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZmlsdGVyZWRBMTF5KHJlc3VsdCwgYTExeUJsYWNrTGlzdCk7XG59O1xuZXhwb3J0IGNvbnN0IGdldFRhYkluZGV4QXR0cmlidXRlID0gKGExMXkgPSB7fSkgPT4ge1xuICAgIGNvbnN0IHRhYkluZGV4ID0gYTExeS50YWJJbmRleCA/PyBhMTF5LnRhYmluZGV4ID8/IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdGFiSW5kZXggIT09IHVuZGVmaW5lZCA/IHsgdGFiSW5kZXg6IE51bWJlcih0YWJJbmRleCkgfSA6IHt9O1xufTtcbmV4cG9ydCBjb25zdCBnZXRBcmlhTGFiZWxBdHRyaWJ1dGUgPSAoYTExeSkgPT4ge1xuICAgIHJldHVybiBhMTF5Py5sYWJlbCA/IHsgJ2FyaWEtbGFiZWwnOiBhMTF5LmxhYmVsIH0gOiB7fTtcbn07XG5leHBvcnQgY29uc3QgSU5ORVJfRk9DVVNfUklOR19DTEFTU05BTUUgPSAnaGFzLWlubmVyLWZvY3VzLXJpbmcnO1xuY29uc3QgTElORTEgPSAnMCAwIDAgMXB4JztcbmNvbnN0IExJTkUyID0gJzAgMCAwIDNweCc7XG5jb25zdCBDT0xPUjEgPSAnI2ZmZmZmZic7XG5jb25zdCBDT0xPUjIgPSAnIzExNmRmZic7XG5jb25zdCBPVVRFUl9GT0NVU19SSU5HID0gYCR7TElORTF9JHtDT0xPUjF9LCAke0xJTkUyfSR7Q09MT1IyfWA7XG5jb25zdCBJTk5FUl9GT0NVU19SSU5HID0gYGluc2V0ICR7TElORTF9JHtDT0xPUjJ9LCBpbnNldCAke0xJTkUyfSR7Q09MT1IxfWA7XG5leHBvcnQgY29uc3QgZ2V0Rm9jdXNSaW5nVmFsdWUgPSAoaXNPdXRlciA9IHRydWUpID0+IGlzT3V0ZXIgPyBPVVRFUl9GT0NVU19SSU5HIDogSU5ORVJfRk9DVVNfUklORztcbmV4cG9ydCBjb25zdCBnZXRBY2Nlc3NpYmlsaXR5QXR0cmlidXRlcyA9IChhdHRyaWJ1dGVzKSA9PiB7XG4gICAgY29uc3QgeyByb2xlLCB0YWJJbmRleCwgdGFiaW5kZXgsIHNjcmVlblJlYWRlciwgbGFuZywgYXJpYUF0dHJpYnV0ZXMgPSB7fSwgfSA9IGF0dHJpYnV0ZXM7XG4gICAgY29uc3QgcHJlZml4ZWRBcmlhQXR0cmlidXRlcyA9IE9iamVjdC5lbnRyaWVzKGFyaWFBdHRyaWJ1dGVzKS5yZWR1Y2UoKHByZXYsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICByZXR1cm4geyAuLi5wcmV2LCBbYGFyaWEtJHtrZXl9YC50b0xvd2VyQ2FzZSgpXTogdmFsdWUgfTtcbiAgICB9LCB7fSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcm9sZSxcbiAgICAgICAgdGFiSW5kZXg6IHRhYkluZGV4ID8/IHRhYmluZGV4LFxuICAgICAgICBzY3JlZW5SZWFkZXIsXG4gICAgICAgIGFyaWFBdHRyaWJ1dGVzOiBmaWx0ZXJlZEExMXkocHJlZml4ZWRBcmlhQXR0cmlidXRlcywgYTExeUJsYWNrTGlzdCksXG4gICAgICAgIGxhbmcsXG4gICAgfTtcbn07XG5leHBvcnQgY29uc3QgZ2V0QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZXNTcHJlYWQgPSAoYXR0cmlidXRlcykgPT4ge1xuICAgIGNvbnN0IGExMXlQcm9wcyA9IGdldEFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpO1xuICAgIHJldHVybiB7XG4gICAgICAgIC4uLmExMXlQcm9wcy5hcmlhQXR0cmlidXRlcyxcbiAgICAgICAgdGFiSW5kZXg6IGExMXlQcm9wcy50YWJJbmRleCxcbiAgICAgICAgc2NyZWVuUmVhZGVyOiBhMTF5UHJvcHMuc2NyZWVuUmVhZGVyLFxuICAgICAgICBsYW5nOiBhMTF5UHJvcHMubGFuZyxcbiAgICAgICAgcm9sZTogYTExeVByb3BzLnJvbGUsXG4gICAgfTtcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hMTF5LmpzLm1hcCIsImV4cG9ydCBjb25zdCBUZXN0SWRzID0ge1xuICAgIG92ZXJmbG93OiAncmVzcG9uc2l2ZS1jb250YWluZXItb3ZlcmZsb3cnLFxuICAgIGNvbnRlbnQ6ICdyZXNwb25zaXZlLWNvbnRhaW5lci1jb250ZW50Jyxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb25zdGFudHMuanMubWFwIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQgZGVmYXVsdCB7XCJjb250YWluZXItb3ZlcmZsb3dcIjpcImdOcWtuM1wiLFwiY29udGFpbmVyT3ZlcmZsb3dcIjpcImdOcWtuM1wifTsiLCJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBnZXRBcmlhQXR0cmlidXRlcyB9IGZyb20gJ0B3aXgvZWRpdG9yLWVsZW1lbnRzLWNvbW1vbi11dGlscyc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbHN4JztcbmltcG9ydCB7IFRlc3RJZHMgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHN0eWxlIGZyb20gJy4vc3R5bGUvUmVzcG9uc2l2ZUNvbnRhaW5lci5tb2R1bGUuc2Nzcyc7XG5jb25zdCBPdmVyZmxvd1dyYXBwZXIgPSBSZWFjdC5mb3J3YXJkUmVmKCh7IGNoaWxkcmVuLCBjbGFzc05hbWUgfSwgcmVmKSA9PiB7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwgc3R5bGVbJ2NvbnRhaW5lci1vdmVyZmxvdyddKSwgXCJkYXRhLXRlc3RpZFwiOiBUZXN0SWRzLm92ZXJmbG93LCByZWY6IHJlZiB9LCBjaGlsZHJlbikpO1xufSk7XG5jb25zdCBSZXNwb25zaXZlQ29udGFpbmVyID0gKHsgY29udGFpbmVyTGF5b3V0Q2xhc3NOYW1lLCBvdmVybG93V3JhcHBlckNsYXNzTmFtZSwgaGFzT3ZlcmZsb3csIGhhc1Njcm9sbE92ZXJmbG93LCBzaG91bGRPbWl0V3JhcHBlckxheWVycywgY2hpbGRyZW4sIHJvbGUsIGxhYmVsLCBleHRyYVJvb3RDbGFzcyA9ICcnLCBhcmlhTGl2ZSwgYXJpYUF0dHJpYnV0ZXMsIHRhYkluZGV4OiB0YWJJbmRleEZyb21Qcm9wcywgdGFnTmFtZSA9ICdkaXYnLCB9LCByZWYpID0+IHtcbiAgICBjb25zdCBoYXNPdmVyZmxvd1dyYXBwZXIgPSAhc2hvdWxkT21pdFdyYXBwZXJMYXllcnMgJiYgaGFzT3ZlcmZsb3c7XG4gICAgbGV0IHRhYkluZGV4V2l0aE92ZXJmbG93ID0gLTE7XG4gICAgaWYgKGhhc1Njcm9sbE92ZXJmbG93ICYmIHRhYkluZGV4RnJvbVByb3BzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGFiSW5kZXhXaXRoT3ZlcmZsb3cgPSB0YWJJbmRleEZyb21Qcm9wcztcbiAgICB9XG4gICAgY29uc3QgdGFiSW5kZXggPSBoYXNPdmVyZmxvd1dyYXBwZXIgPyB0YWJJbmRleFdpdGhPdmVyZmxvdyA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCB3cmFwV2l0aE92ZXJmbG93V3JhcHBlcklmTmVlZGVkID0gdXNlQ2FsbGJhY2soKHJlYWN0Q2hpbGRyZW4pID0+IGhhc092ZXJmbG93V3JhcHBlciA/IChSZWFjdC5jcmVhdGVFbGVtZW50KE92ZXJmbG93V3JhcHBlciwgeyBjbGFzc05hbWU6IGNsYXNzTmFtZXMob3Zlcmxvd1dyYXBwZXJDbGFzc05hbWUsIGV4dHJhUm9vdENsYXNzKSB9LCByZWFjdENoaWxkcmVuKSkgOiAocmVhY3RDaGlsZHJlbiksIFtoYXNPdmVyZmxvd1dyYXBwZXIsIG92ZXJsb3dXcmFwcGVyQ2xhc3NOYW1lLCBleHRyYVJvb3RDbGFzc10pO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBoYXNPdmVyZmxvd1xuICAgICAgICA/IGNvbnRhaW5lckxheW91dENsYXNzTmFtZVxuICAgICAgICA6IGNsYXNzTmFtZXMoY29udGFpbmVyTGF5b3V0Q2xhc3NOYW1lLCBleHRyYVJvb3RDbGFzcyk7XG4gICAgY29uc3QgY2hpbGRQcm9wcyA9IHtcbiAgICAgICAgcmVmLFxuICAgICAgICAnZGF0YS10ZXN0aWQnOiBUZXN0SWRzLmNvbnRlbnQsXG4gICAgICAgIHRhYkluZGV4LFxuICAgICAgICAuLi4ocm9sZSA/IHsgcm9sZSB9IDoge30pLFxuICAgICAgICAuLi4obGFiZWwgPyB7ICdhcmlhLWxhYmVsJzogbGFiZWwgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFyaWFMaXZlID8geyAnYXJpYS1saXZlJzogYXJpYUxpdmUgfSA6IHt9KSxcbiAgICAgICAgLi4uZ2V0QXJpYUF0dHJpYnV0ZXMoYXJpYUF0dHJpYnV0ZXMpLFxuICAgIH07XG4gICAgaWYgKHRhZ05hbWUgPT09ICdtdWx0aS1jb2x1bW4tbGF5b3V0ZXInKSB7XG4gICAgICAgIGNoaWxkUHJvcHMuY2xhc3MgPSBjbGFzc2VzO1xuICAgICAgICBjaGlsZFByb3BzLnN0eWxlID0geyB2aXNpYmlsaXR5OiAnaGlkZGVuJyB9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgY2hpbGRQcm9wcy5jbGFzc05hbWUgPSBjbGFzc2VzO1xuICAgIH1cbiAgICByZXR1cm4gd3JhcFdpdGhPdmVyZmxvd1dyYXBwZXJJZk5lZWRlZChzaG91bGRPbWl0V3JhcHBlckxheWVycyA/IChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCBjaGlsZHJlbigpKSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudCh0YWdOYW1lIHx8ICdkaXYnLCBjaGlsZFByb3BzLCBjaGlsZHJlbigpKSkpO1xufTtcbmV4cG9ydCBkZWZhdWx0IFJlYWN0LmZvcndhcmRSZWYoUmVzcG9uc2l2ZUNvbnRhaW5lcik7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SZXNwb25zaXZlQ29udGFpbmVyLmpzLm1hcCIsImV4cG9ydCBjb25zdCBUZXN0SWRzID0ge1xuICBSZXNwb25zaXZlUG9wdXBQYWdlT3ZlcmxheTogJ1Jlc3BvbnNpdmVQb3B1cFBhZ2VPdmVybGF5Jyxcbn0gYXMgY29uc3Q7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbmV4cG9ydCBkZWZhdWx0IHtcInJvb3RcIjpcIl82ckswaFwiLFwicmVzcG9uc2l2ZUNvbnRhaW5lclwiOlwidl9zRk9TXCIsXCJjbGlja2FibGVcIjpcIndFelBfRFwiLFwib3ZlcmxheVwiOlwiUU4xOEdKXCIsXCJvdmVybGF5Rml4VG91Y2hBY3Rpb25cIjpcImJmZ0g1RVwiLFwibGlnaHRib3gtbGF5ZXJcIjpcIlNIaEZLZlwiLFwibGlnaHRib3hMYXllclwiOlwiU0hoRktmXCJ9OyIsIid1c2UtY2xpZW50JztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgZ2V0RGF0YUF0dHJpYnV0ZXMgfSBmcm9tICdAd2l4L2VkaXRvci1lbGVtZW50cy1jb21tb24tdXRpbHMnO1xuaW1wb3J0IHR5cGUgeyBJUmVzcG9uc2l2ZVBvcHVwUGFnZVByb3BzIH0gZnJvbSAnLi4vUmVzcG9uc2l2ZVBvcHVwUGFnZS50eXBlcyc7XG5pbXBvcnQgUmVzcG9uc2l2ZUNvbnRhaW5lciBmcm9tICdAd2l4L3RodW5kZXJib2x0LWVsZW1lbnRzL2NvbXBvbmVudHMvUmVzcG9uc2l2ZUNvbnRhaW5lcic7XG5pbXBvcnQgeyBUZXN0SWRzIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBzdHlsZSBmcm9tICcuL3N0eWxlL1Jlc3BvbnNpdmVQb3B1cFBhZ2Uuc2Nzcyc7XG5cbmNvbnN0IFBvcHVwUGFnZTogUmVhY3QuRkM8SVJlc3BvbnNpdmVQb3B1cFBhZ2VQcm9wcz4gPSBwcm9wcyA9PiB7XG4gIGNvbnN0IHtcbiAgICBpZCxcbiAgICBjbGFzc05hbWUsXG4gICAgcGFnZURpZE1vdW50LFxuICAgIG9uQ2xpY2ssXG4gICAgY2hpbGRyZW4sXG4gICAgY29udGFpbmVyUHJvcHMsXG4gICAgd2l0aE92ZXJsYXkgPSB0cnVlLFxuICAgIGZpeE92ZXJsYXlUb3VjaEFjdGlvbixcbiAgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgaWQ9e2lkfVxuICAgICAgey4uLmdldERhdGFBdHRyaWJ1dGVzKHByb3BzKX1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhjbGFzc05hbWUsIHN0eWxlLnJvb3QsIHtcbiAgICAgICAgW3N0eWxlLmNsaWNrYWJsZV06IG9uQ2xpY2ssXG4gICAgICB9KX1cbiAgICAgIHJlZj17cGFnZURpZE1vdW50fVxuICAgICAgZGF0YS1ibG9jay1sZXZlbC1jb250YWluZXI9XCJQb3B1cFBhZ2VcIlxuICAgID5cbiAgICAgIHt3aXRoT3ZlcmxheSAmJiAoXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoc3R5bGUub3ZlcmxheSwge1xuICAgICAgICAgICAgW3N0eWxlLm92ZXJsYXlGaXhUb3VjaEFjdGlvbl06IGZpeE92ZXJsYXlUb3VjaEFjdGlvbixcbiAgICAgICAgICB9KX1cbiAgICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICAgIGRhdGEtdGVzdGlkPXtUZXN0SWRzLlJlc3BvbnNpdmVQb3B1cFBhZ2VPdmVybGF5fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxSZXNwb25zaXZlQ29udGFpbmVyXG4gICAgICAgIHsuLi5jb250YWluZXJQcm9wc31cbiAgICAgICAgZXh0cmFSb290Q2xhc3M9e3N0eWxlLnJlc3BvbnNpdmVDb250YWluZXJ9XG4gICAgICA+XG4gICAgICAgIHsoKSA9PiA8ZGl2IGNsYXNzTmFtZT17c3R5bGUubGlnaHRib3hMYXllcn0+e2NoaWxkcmVuKCl9PC9kaXY+fVxuICAgICAgPC9SZXNwb25zaXZlQ29udGFpbmVyPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUG9wdXBQYWdlO1xuIl0sIm5hbWVzIjpbInJvb3QiLCJmYWN0b3J5IiwiZXhwb3J0cyIsIm1vZHVsZSIsInJlcXVpcmUiLCJkZWZpbmUiLCJhbWQiLCJzZWxmIiwidGhpcyIsIl9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfWGRmX19fIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwibiIsImUiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ0IiwiciIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIl9fZXNNb2R1bGUiLCJhcHBseSIsIl9fd2VicGFja19tb2R1bGVfY2FjaGVfXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImNhY2hlZE1vZHVsZSIsInVuZGVmaW5lZCIsIl9fd2VicGFja19tb2R1bGVzX18iLCJnZXR0ZXIiLCJkIiwiYSIsImRlZmluaXRpb24iLCJrZXkiLCJvIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0Iiwib2JqIiwicHJvcCIsInByb3RvdHlwZSIsIlN5bWJvbCIsInRvU3RyaW5nVGFnIiwidmFsdWUiLCJmIiwiQXJyYXkiLCJpc0FycmF5IiwiYWN0aXZhdGVCeUtleSIsImV2ZW50Iiwia2V5Q29kZSIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiY3VycmVudFRhcmdldCIsImNsaWNrIiwiYTExeUJsYWNrTGlzdCIsImZpbHRlcmVkQTExeSIsImExMXkiLCJibGFja2xpc3QiLCJlbnRyaWVzIiwicmVkdWNlIiwiYWNjIiwiaW5jbHVkZXMiLCJnZXRBcmlhQXR0cmlidXRlcyIsInJvbGUiLCJ0YWJJbmRleCIsInRhYmluZGV4IiwiYXJpYVByb3BzIiwicmVzdWx0IiwicHJldiIsInRvTG93ZXJDYXNlIiwia2V5cyIsImZvckVhY2giLCJUZXN0SWRzIiwiT3ZlcmZsb3dXcmFwcGVyIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJyZWYiLCJjb250YWluZXJMYXlvdXRDbGFzc05hbWUiLCJvdmVybG93V3JhcHBlckNsYXNzTmFtZSIsImhhc092ZXJmbG93IiwiaGFzU2Nyb2xsT3ZlcmZsb3ciLCJzaG91bGRPbWl0V3JhcHBlckxheWVycyIsImxhYmVsIiwiZXh0cmFSb290Q2xhc3MiLCJhcmlhTGl2ZSIsImFyaWFBdHRyaWJ1dGVzIiwidGFiSW5kZXhGcm9tUHJvcHMiLCJ0YWdOYW1lIiwiaGFzT3ZlcmZsb3dXcmFwcGVyIiwidGFiSW5kZXhXaXRoT3ZlcmZsb3ciLCJ3cmFwV2l0aE92ZXJmbG93V3JhcHBlcklmTmVlZGVkIiwidXNlQ2FsbGJhY2siLCJyZWFjdENoaWxkcmVuIiwiY2xhc3NlcyIsImNoaWxkUHJvcHMiLCJjbGFzcyIsInN0eWxlIiwidmlzaWJpbGl0eSIsInByb3BzIiwiaWQiLCJwYWdlRGlkTW91bnQiLCJvbkNsaWNrIiwiY29udGFpbmVyUHJvcHMiLCJ3aXRoT3ZlcmxheSIsImZpeE92ZXJsYXlUb3VjaEFjdGlvbiIsIlJlYWN0IiwidmFsIiwiZ2V0RGF0YUF0dHJpYnV0ZXMiLCJjbGFzc05hbWVzIiwiUmVzcG9uc2l2ZUNvbnRhaW5lciJdLCJzb3VyY2VSb290IjoiIn0=","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"thunderbolt/controller/ResponsivePopupPage/ResponsivePopupPage\",[],t):\"object\"==typeof exports?exports[\"thunderbolt/controller/ResponsivePopupPage/ResponsivePopupPage\"]=t():e[\"thunderbolt/controller/ResponsivePopupPage/ResponsivePopupPage\"]=t()}(\"undefined\"!=typeof self?self:this,function(){return function(){\"use strict\";var e={d:function(t,o){for(var n in o)e.o(o,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:o[n]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r:function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})}},t={};e.r(t),e.d(t,{default:function(){return p}});const o=e=>e.replace(/([A-Z])/g,e=>`-${e.toLowerCase()}`),n=(e={},t)=>!0===e[t]||\"true\"===e[t]||\"new\"===e[t];var r,p=(r=e=>{let{mapperProps:t,stateValues:o}=e;const{experiments:r={}}=o;return{...t,fixOverlayTouchAction:n(r,\"specs.thunderbolt.fixLightboxOverlayIosTouchAction\")}},{useComponentProps:(e,t,n)=>{const p=(e=>({...e,updateStyles:t=>{const n=Object.entries(t).reduce((e,[t,n])=>{return{...e,[(r=t,r.startsWith(\"--\")?t:o(t))]:void 0===n?null:n};var r},{});e.updateStyles(n)}}))(n);return r({mapperProps:e,stateValues:t,controllerUtils:p})}});return t}()});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGh1bmRlcmJvbHQvY29udHJvbGxlci9SZXNwb25zaXZlUG9wdXBQYWdlL1Jlc3BvbnNpdmVQb3B1cFBhZ2UuYnVuZGxlLm1pbi5qcyIsIm1hcHBpbmdzIjoiQ0FBQSxTQUEyQ0EsRUFBTUMsR0FDMUIsaUJBQVpDLFNBQTBDLGlCQUFYQyxPQUN4Q0EsT0FBT0QsUUFBVUQsSUFDUSxtQkFBWEcsUUFBeUJBLE9BQU9DLElBQzlDRCxPQUFPLGlFQUFrRSxHQUFJSCxHQUNuRCxpQkFBWkMsUUFDZEEsUUFBUSxrRUFBb0VELElBRTVFRCxFQUFLLGtFQUFvRUMsR0FDMUUsQ0FURCxDQVNvQixvQkFBVEssS0FBdUJBLEtBQU9DLEtBQU8sV0FDaEQsTyx3QkNUQSxJQUFJQyxFQUFzQixDQ0ExQkEsRUFBd0IsU0FBU04sRUFBU08sR0FDekMsSUFBSSxJQUFJQyxLQUFPRCxFQUNYRCxFQUFvQkcsRUFBRUYsRUFBWUMsS0FBU0YsRUFBb0JHLEVBQUVULEVBQVNRLElBQzVFRSxPQUFPQyxlQUFlWCxFQUFTUSxFQUFLLENBQUVJLFlBQVksRUFBTUMsSUFBS04sRUFBV0MsSUFHM0UsRUNQQUYsRUFBd0IsU0FBU1EsRUFBS0MsR0FBUSxPQUFPTCxPQUFPTSxVQUFVQyxlQUFlQyxLQUFLSixFQUFLQyxFQUFPLEVDQ3RHVCxFQUF3QixTQUFTTixHQUNYLG9CQUFYbUIsUUFBMEJBLE9BQU9DLGFBQzFDVixPQUFPQyxlQUFlWCxFQUFTbUIsT0FBT0MsWUFBYSxDQUFFQyxNQUFPLFdBRTdEWCxPQUFPQyxlQUFlWCxFQUFTLGFBQWMsQ0FBRXFCLE9BQU8sR0FDdkQsRyxrRENpREEsTUFDTUMsRUFBdUJDLEdBQVFBLEVBQUlDLFFBQVEsV0FBWUMsR0FBTyxJQUFJQSxFQUFJQyxpQkN4RC9ELEVBQW1CLENBQUNDLEVBQWMsQ0FBQyxFQUFHQyxLQUFtRCxJQUFoQ0QsRUFBWUMsSUFDOUMsU0FBaENELEVBQVlDLElBQ29CLFFBQWhDRCxFQUFZQyxHQ09oQixJRmlFbUNDLEVFakVuQyxHRmlFbUNBLEVFNURqQ0MsSUFBbUMsSUFBbEMsWUFBRUMsRUFBVyxZQUFFQyxHQUFhRixFQUM3QixNQUFNLFlBQUVILEVBQWMsQ0FBQyxHQUFNSyxFQUU3QixNQUFPLElBQ0ZELEVBQ0hFLHNCQUF1QkMsRUFDckJQLEVDbkJKLHdESDBFUyxDQUNIUSxrQkFBbUIsQ0FBQ0osRUFBYUMsRUFBYUksS0FDMUMsTUFBTUMsRUFwQlcsQ0FBQ0QsSUFZbkIsSUFDQUEsRUFDSEUsYUFUeUJDLElBQ3pCLE1BQU1DLEVBQVM5QixPQUFPK0IsUUFBUUYsR0FBYUcsT0FBTyxDQUFDQyxHQUFNbkMsRUFBS2EsTUFBVyxVQUNsRXNCLEVBQ0gsRUFWV3BCLEVBVUlmLEVBVkllLEVBQUlxQixXQUFXLE1BVVpwQyxFQUFNYyxFQUFvQmQsVUFBaUJxQyxJQUFWeEIsRUFBc0IsS0FBT0EsR0FWMUUsSUFBQ0UsR0FXWCxDQUFDLEdBQ0xhLEVBQWdCRSxhQUFhRSxNQVVKTSxDQUFxQlYsR0FDMUMsT0FBT1AsRUFBc0IsQ0FDekJFLGNBQ0FDLGNBQ0FJLGdCQUFpQkMsTyIsInNvdXJjZXMiOlsid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL2VkaXRvci1lbGVtZW50cy1pbnRlZ3JhdGlvbnMvZGlzdC9lc20vdGh1bmRlcmJvbHQvY3JlYXRlQ29tcG9uZW50TWFwcGVyLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vZWRpdG9yLWVsZW1lbnRzLWNvbW1vbi11dGlscy9kaXN0L2VzbS9jb21tb25zL2V4cGVyaW1lbnRzLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi9jb21wb25lbnRzL1Jlc3BvbnNpdmVQb3B1cFBhZ2Uvdmlld2VyL1Jlc3BvbnNpdmVQb3B1cFBhZ2UuY29udHJvbGxlci50cyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4vY29tcG9uZW50cy9SZXNwb25zaXZlUG9wdXBQYWdlL2V4cGVyaW1lbnRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFwidGh1bmRlcmJvbHQvY29udHJvbGxlci9SZXNwb25zaXZlUG9wdXBQYWdlL1Jlc3BvbnNpdmVQb3B1cFBhZ2VcIiwgW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1widGh1bmRlcmJvbHQvY29udHJvbGxlci9SZXNwb25zaXZlUG9wdXBQYWdlL1Jlc3BvbnNpdmVQb3B1cFBhZ2VcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1widGh1bmRlcmJvbHQvY29udHJvbGxlci9SZXNwb25zaXZlUG9wdXBQYWdlL1Jlc3BvbnNpdmVQb3B1cFBhZ2VcIl0gPSBmYWN0b3J5KCk7XG59KSgodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHRoaXMpLCBmdW5jdGlvbigpIHtcbnJldHVybiAiLCIvLyBUaGUgcmVxdWlyZSBzY29wZVxudmFyIF9fd2VicGFja19yZXF1aXJlX18gPSB7fTtcblxuIiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgZGVmaW5pdGlvbikge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmosIHByb3ApIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApOyB9IiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJpbXBvcnQgeyBpc0V4cGVyaW1lbnRPcGVuIH0gZnJvbSAnQHdpeC9lZGl0b3ItZWxlbWVudHMtY29tbW9uLXV0aWxzJztcbmV4cG9ydCBjb25zdCB3aXRoQ29tcEluZm8gPSAoKSA9PiAoZGVwc0FycmF5LCByZXNvbHZlciwgZW5oYW5jZXJzID0gW10pID0+IHtcbiAgICBjb25zdCBkZXBzID0gZGVwc0FycmF5LnJlZHVjZSgoYWNjLCBrZXkpID0+ICh7IC4uLmFjYywgW2tleV06IHRydWUgfSksIHt9KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBkZXBzLFxuICAgICAgICByZXNvbHZlcjogZW5oYW5jZXJzLmxlbmd0aFxuICAgICAgICAgICAgPyAocmF3Q29tcEluZm8sIGNhcm1pRGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVuaGFuY2VkQ29tcEluZm8gPSBlbmhhbmNlcnMucmVkdWNlKChjb21wSW5mbywgZW5oYW5jZXIpID0+IGVuaGFuY2VyKGNvbXBJbmZvKSwgcmF3Q29tcEluZm8pO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlcihlbmhhbmNlZENvbXBJbmZvLCBjYXJtaURhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiByZXNvbHZlcixcbiAgICB9O1xufTtcbmV4cG9ydCBjb25zdCBpc1N0eWxhYmxlQ29tcG9uZW50ID0gKHN0eWxlUHJvcGVydGllcykgPT4ge1xuICAgIC8vIGluIEVkaXRvciB8fCBpbiBUQlxuICAgIHJldHVybiBCb29sZWFuKHN0eWxlUHJvcGVydGllc1snJHN0LWNzcyddIHx8IHN0eWxlUHJvcGVydGllc1snc3QtY3NzJ10pO1xufTtcbmV4cG9ydCBjb25zdCBjcmVhdGVVRFBVaVR5cGVNYXBwZXIgPSAoc3R5bGFibGVTa2luTmFtZSwgdWRwU2tpbk5hbWUpID0+IHdpdGhDb21wSW5mbygpKFsnc3R5bGVQcm9wZXJ0aWVzJywgJ2V4cGVyaW1lbnRzJ10sICh7IHN0eWxlUHJvcGVydGllcywgZXhwZXJpbWVudHMgfSkgPT4ge1xuICAgIGNvbnN0IEJVSUxERVJfU1BFQyA9ICdzcGVjcy50aHVuZGVyYm9sdC5yZW5kZXJQbGF0Zm9ybUJ1aWxkZXJDb21wb25lbnQnO1xuICAgIGNvbnN0IGlzQnVpbGRlckVudiA9IGlzRXhwZXJpbWVudE9wZW4oZXhwZXJpbWVudHMsIEJVSUxERVJfU1BFQyk7XG4gICAgaWYgKCFpc1N0eWxhYmxlQ29tcG9uZW50KHN0eWxlUHJvcGVydGllcykgfHwgaXNCdWlsZGVyRW52KSB7XG4gICAgICAgIHJldHVybiB1ZHBTa2luTmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIHN0eWxhYmxlU2tpbk5hbWU7XG59KTtcbmV4cG9ydCBjb25zdCB3aXRoVWlUeXBlQ29tcEluZm8gPSB3aXRoQ29tcEluZm87XG5leHBvcnQgY29uc3Qgd2l0aFN0YXRlUmVmcyA9ICgpID0+IChkZXBzQXJyYXksIHJlc29sdmVyKSA9PiB7XG4gICAgY29uc3QgcmVmQXBpS2V5ID0gJ3JlZkFwaSc7XG4gICAgY29uc3QgZGVwcyA9IFsuLi5kZXBzQXJyYXksIHJlZkFwaUtleV07XG4gICAgY29uc3Qgd2l0aENvbXBJbmZvRnVuYyA9IHdpdGhDb21wSW5mbygpO1xuICAgIHJldHVybiB3aXRoQ29tcEluZm9GdW5jKGRlcHMsIHJlc29sdmVyKTtcbn07XG5jb25zdCBnZXRTdGF0ZVJlZkdldHRlcnMgPSAoc3RhdGVSZWZzS2V5cywgcmVmQXBpKSA9PiB7XG4gICAgY29uc3Qgc3RhdGVSZWZzR2V0dGVycyA9IE9iamVjdC52YWx1ZXMocmVmQXBpKS5yZWR1Y2UoKGFjYywgZmVhdHVyZURvbWFpbikgPT4gKHtcbiAgICAgICAgLi4uYWNjLFxuICAgICAgICAuLi5mZWF0dXJlRG9tYWluLFxuICAgIH0pLCB7fSk7XG4gICAgcmV0dXJuIHN0YXRlUmVmc0tleXMucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgICBpZiAoIXN0YXRlUmVmc0dldHRlcnNba2V5XSkge1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgW2tleV06IHN0YXRlUmVmc0dldHRlcnNba2V5XSgpLFxuICAgICAgICB9O1xuICAgIH0sIHt9KTtcbn07XG5leHBvcnQgY29uc3Qgd2l0aFN0YXRlUmVmc1ZhbHVlcyA9IChzdGF0ZVJlZnNLZXlzKSA9PiB7XG4gICAgcmV0dXJuIHdpdGhDb21wSW5mbygpKFsncmVmQXBpJ10sICh7IHJlZkFwaSB9KSA9PiB7XG4gICAgICAgIHJldHVybiBnZXRTdGF0ZVJlZkdldHRlcnMoc3RhdGVSZWZzS2V5cywgcmVmQXBpKTtcbiAgICB9KTtcbn07XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50TWFwcGVyTW9kZWwobWFwcGVyKSB7XG4gICAgcmV0dXJuIG1hcHBlcjtcbn1cbmNvbnN0IGlzQ1NTVmFyaWFibGUgPSAoc3RyKSA9PiBzdHIuc3RhcnRzV2l0aCgnLS0nKTtcbmNvbnN0IGNhbWVsQ2FzZVRvRGFzaENhc2UgPSAoc3RyKSA9PiBzdHIucmVwbGFjZSgvKFtBLVpdKS9nLCB2YWwgPT4gYC0ke3ZhbC50b0xvd2VyQ2FzZSgpfWApO1xuY29uc3QgcGF0Y2hDb250cm9sbGVyVXRpbHMgPSAoY29udHJvbGxlclV0aWxzKSA9PiB7XG4gICAgLyoqXG4gICAgICogRnJvbSB0aGlzOiB7IG1hcmdpblRvcDogMTAgfVxuICAgICAqIHRvIHRoaXMgeyBtYXJnaW4tdG9wOiAxMCB9XG4gICAgICovXG4gICAgY29uc3QgcGF0Y2hlZFVwZGF0ZVN0eWxlcyA9IChyZWFjdFN0eWxlcykgPT4ge1xuICAgICAgICBjb25zdCBzdHlsZXMgPSBPYmplY3QuZW50cmllcyhyZWFjdFN0eWxlcykucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgIFtpc0NTU1ZhcmlhYmxlKGtleSkgPyBrZXkgOiBjYW1lbENhc2VUb0Rhc2hDYXNlKGtleSldOiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IHZhbHVlLFxuICAgICAgICB9KSwge30pO1xuICAgICAgICBjb250cm9sbGVyVXRpbHMudXBkYXRlU3R5bGVzKHN0eWxlcyk7XG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgICAuLi5jb250cm9sbGVyVXRpbHMsXG4gICAgICAgIHVwZGF0ZVN0eWxlczogcGF0Y2hlZFVwZGF0ZVN0eWxlcyxcbiAgICB9O1xufTtcbmV4cG9ydCBjb25zdCB3aXRoQ29tcENvbnRyb2xsZXIgPSAoY29tcG9uZW50UHJvcHNDcmVhdG9yKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdXNlQ29tcG9uZW50UHJvcHM6IChtYXBwZXJQcm9wcywgc3RhdGVWYWx1ZXMsIGNvbnRyb2xsZXJVdGlscykgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGF0Y2hlZFV0aWxzID0gcGF0Y2hDb250cm9sbGVyVXRpbHMoY29udHJvbGxlclV0aWxzKTtcbiAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRQcm9wc0NyZWF0b3Ioe1xuICAgICAgICAgICAgICAgIG1hcHBlclByb3BzLFxuICAgICAgICAgICAgICAgIHN0YXRlVmFsdWVzLFxuICAgICAgICAgICAgICAgIGNvbnRyb2xsZXJVdGlsczogcGF0Y2hlZFV0aWxzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgfTtcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jcmVhdGVDb21wb25lbnRNYXBwZXIuanMubWFwIiwiZXhwb3J0IGNvbnN0IGlzRXhwZXJpbWVudE9wZW4gPSAoZXhwZXJpbWVudHMgPSB7fSwgZXhwZXJpbWVudE5hbWUpID0+IGV4cGVyaW1lbnRzW2V4cGVyaW1lbnROYW1lXSA9PT0gdHJ1ZSB8fFxuICAgIGV4cGVyaW1lbnRzW2V4cGVyaW1lbnROYW1lXSA9PT0gJ3RydWUnIHx8XG4gICAgZXhwZXJpbWVudHNbZXhwZXJpbWVudE5hbWVdID09PSAnbmV3Jztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWV4cGVyaW1lbnRzLmpzLm1hcCIsImltcG9ydCB7IHdpdGhDb21wQ29udHJvbGxlciB9IGZyb20gJ0B3aXgvZWRpdG9yLWVsZW1lbnRzLWludGVncmF0aW9ucyc7XG5pbXBvcnQgeyBpc0V4cGVyaW1lbnRPcGVuIH0gZnJvbSAnQHdpeC9lZGl0b3ItZWxlbWVudHMtY29tbW9uLXV0aWxzJztcbmltcG9ydCB0eXBlIHtcbiAgSVJlc3BvbnNpdmVQb3B1cFBhZ2VQcm9wcyxcbiAgSVJlc3BvbnNpdmVQb3B1cFBhZ2VDb250cm9sbGVyUHJvcHMsXG4gIElSZXNwb25zaXZlUG9wdXBQYWdlU3RhdGVWYWx1ZXMsXG59IGZyb20gJy4uL1Jlc3BvbnNpdmVQb3B1cFBhZ2UudHlwZXMnO1xuaW1wb3J0IHsgZml4TGlnaHRib3hPdmVybGF5VG91Y2hBY3Rpb25FeHBlcmltZW50IH0gZnJvbSAnLi4vZXhwZXJpbWVudHMnO1xuXG5leHBvcnQgZGVmYXVsdCB3aXRoQ29tcENvbnRyb2xsZXI8XG4gIElSZXNwb25zaXZlUG9wdXBQYWdlUHJvcHMsXG4gIElSZXNwb25zaXZlUG9wdXBQYWdlQ29udHJvbGxlclByb3BzLFxuICBJUmVzcG9uc2l2ZVBvcHVwUGFnZVByb3BzLFxuICBJUmVzcG9uc2l2ZVBvcHVwUGFnZVN0YXRlVmFsdWVzXG4+KCh7IG1hcHBlclByb3BzLCBzdGF0ZVZhbHVlcyB9KSA9PiB7XG4gIGNvbnN0IHsgZXhwZXJpbWVudHMgPSB7fSB9ID0gc3RhdGVWYWx1ZXM7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5tYXBwZXJQcm9wcyxcbiAgICBmaXhPdmVybGF5VG91Y2hBY3Rpb246IGlzRXhwZXJpbWVudE9wZW4oXG4gICAgICBleHBlcmltZW50cyxcbiAgICAgIGZpeExpZ2h0Ym94T3ZlcmxheVRvdWNoQWN0aW9uRXhwZXJpbWVudCxcbiAgICApLFxuICB9O1xufSk7XG4iLCJleHBvcnQgY29uc3QgZml4TGlnaHRib3hPdmVybGF5VG91Y2hBY3Rpb25FeHBlcmltZW50ID1cbiAgJ3NwZWNzLnRodW5kZXJib2x0LmZpeExpZ2h0Ym94T3ZlcmxheUlvc1RvdWNoQWN0aW9uJztcbiJdLCJuYW1lcyI6WyJyb290IiwiZmFjdG9yeSIsImV4cG9ydHMiLCJtb2R1bGUiLCJkZWZpbmUiLCJhbWQiLCJzZWxmIiwidGhpcyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJkZWZpbml0aW9uIiwia2V5IiwibyIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsIm9iaiIsInByb3AiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJTeW1ib2wiLCJ0b1N0cmluZ1RhZyIsInZhbHVlIiwiY2FtZWxDYXNlVG9EYXNoQ2FzZSIsInN0ciIsInJlcGxhY2UiLCJ2YWwiLCJ0b0xvd2VyQ2FzZSIsImV4cGVyaW1lbnRzIiwiZXhwZXJpbWVudE5hbWUiLCJjb21wb25lbnRQcm9wc0NyZWF0b3IiLCJfcmVmIiwibWFwcGVyUHJvcHMiLCJzdGF0ZVZhbHVlcyIsImZpeE92ZXJsYXlUb3VjaEFjdGlvbiIsImlzRXhwZXJpbWVudE9wZW4iLCJ1c2VDb21wb25lbnRQcm9wcyIsImNvbnRyb2xsZXJVdGlscyIsInBhdGNoZWRVdGlscyIsInVwZGF0ZVN0eWxlcyIsInJlYWN0U3R5bGVzIiwic3R5bGVzIiwiZW50cmllcyIsInJlZHVjZSIsImFjYyIsInN0YXJ0c1dpdGgiLCJ1bmRlZmluZWQiLCJwYXRjaENvbnRyb2xsZXJVdGlscyJdLCJzb3VyY2VSb290IjoiIn0=","'use client';\nimport { ResponsivePopupPage as Component } from '@wix/editor-components/component/ResponsivePopupPage';\nimport { ResponsivePopupPage as controller } from '@wix/editor-components/controller/ResponsivePopupPage';\nimport '@wix/editor-components/component/ResponsivePopupPage/css';\nimport { withController, withNormalChildren } from './hocs';\nexport const ResponsivePopupPage_WithoutOverlay = withNormalChildren(withController(Component, controller));\n//# sourceMappingURL=ResponsivePopupPage_WithoutOverlay.js.map","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\")):\"function\"==typeof define&&define.amd?define(\"thunderbolt/component/Section/Section\",[\"react\"],t):\"object\"==typeof exports?exports[\"thunderbolt/component/Section/Section\"]=t(require(\"react\")):e[\"thunderbolt/component/Section/Section\"]=t(e.React)}(\"undefined\"!=typeof self?self:this,function(e){return function(){var t={p1x1:function(e,t){\"use strict\";t.Z={\"bg-underlay\":\"LWbAav\",bgUnderlay:\"LWbAav\",\"layers-container\":\"MW5IWV\",layersContainer:\"MW5IWV\",animate:\"V7OeEw\",headerSectionAddVisibilityTransition:\"MDGLoD\",move:\"BHIo43\",fade:\"UvF1nu\",scrollUp:\"YzrQFb\",RectangleArea:\"xuzjBY\",rectangleArea:\"xuzjBY\",DefaultAreaSkin:\"O7Ybkb\",defaultAreaSkin:\"O7Ybkb\",\"full-screen-scroll-effect\":\"GeNLDt\",fullScreenScrollEffect:\"GeNLDt\",\"fill-layer\":\"K8pHFh\",fillLayer:\"K8pHFh\",\"image-fill-layer\":\"TaweqS\",imageFillLayer:\"TaweqS\",\"bg-media\":\"yzHyNT\",bgMedia:\"yzHyNT\",videoFillLayer:\"zBFCpO\",\"alpha-canvas\":\"xjgrS3\",alphaCanvas:\"xjgrS3\",\"media-padding-layer\":\"b3zSS0\",mediaPaddingLayer:\"b3zSS0\",transforms:\"Wsv3ak\",\"media-canvas\":\"IiJMfn\",mediaCanvas:\"IiJMfn\",RectangleAreaAfterScroll:\"KJgt14\",rectangleAreaAfterScroll:\"KJgt14\",scrolled:\"VTwcX7\",section:\"Gzsk0j\",\"video-play-pause-button\":\"MdLl0h\",videoPlayPauseButton:\"MdLl0h\",childrenContainer:\"Gmmci1\"}},guqK:function(e,t,i){\"use strict\";i.d(t,{P5:function(){return a}});const a=e=>Object.entries(e).reduce((e,[t,i])=>(t.includes(\"data-\")&&(e[t]=i),e),{})},\"Xdf/\":function(t){\"use strict\";t.exports=e},Fe5V:function(e){function t(){return e.exports=t=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var a in i)({}).hasOwnProperty.call(i,a)&&(e[a]=i[a])}return e},e.exports.__esModule=!0,e.exports.default=e.exports,t.apply(null,arguments)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},MRkx:function(e,t,i){\"use strict\";function a(e){var t,i,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(i=a(e[t]))&&(n&&(n+=\" \"),n+=i);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}t.Z=function(){for(var e,t,i=0,n=\"\";i<arguments.length;)(e=arguments[i++])&&(t=a(e))&&(n&&(n+=\" \"),n+=t);return n}}},i={};function a(e){var n=i[e];if(void 0!==n)return n.exports;var r=i[e]={exports:{}};return t[e](r,r.exports,a),r.exports}a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,{a:t}),t},a.d=function(e,t){for(var i in t)a.o(t,i)&&!a.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var n={};return function(){\"use strict\";a.r(n),a.d(n,{default:function(){return ii}});var e={};a.r(e),a.d(e,{STATIC_MEDIA_URL:function(){return tt},ph:function(){return Xe}});var t=a(\"Fe5V\"),i=a.n(t),r=a(\"Xdf/\"),o=a.n(r),c=a(\"MRkx\");const s=\"wixui-\",l=(e,...t)=>{const i=[];return e&&i.push(`${s}${e}`),t.forEach(e=>{e&&(i.push(`${s}${e}`),i.push(e))}),i.join(\" \")};var d=a(\"guqK\");const u=13,h=27;function g(e){return t=>{t.keyCode===e&&(t.preventDefault(),t.stopPropagation(),t.currentTarget.click())}}g(32),g(u),g(h);const m=\"section-container\";var f=\"jhxvbR\";const p=\"v1\",_=2,T=1920,I=1920,E=1e3,L=1e3,b={SCALE_TO_FILL:\"fill\",SCALE_TO_FIT:\"fit\",STRETCH:\"stretch\",ORIGINAL_SIZE:\"original_size\",TILE:\"tile\",TILE_HORIZONTAL:\"tile_horizontal\",TILE_VERTICAL:\"tile_vertical\",FIT_AND_TILE:\"fit_and_tile\",LEGACY_STRIP_TILE:\"legacy_strip_tile\",LEGACY_STRIP_TILE_HORIZONTAL:\"legacy_strip_tile_horizontal\",LEGACY_STRIP_TILE_VERTICAL:\"legacy_strip_tile_vertical\",LEGACY_STRIP_SCALE_TO_FILL:\"legacy_strip_fill\",LEGACY_STRIP_SCALE_TO_FIT:\"legacy_strip_fit\",LEGACY_STRIP_FIT_AND_TILE:\"legacy_strip_fit_and_tile\",LEGACY_STRIP_ORIGINAL_SIZE:\"legacy_strip_original_size\",LEGACY_ORIGINAL_SIZE:\"actual_size\",LEGACY_FIT_WIDTH:\"fitWidth\",LEGACY_FIT_HEIGHT:\"fitHeight\",LEGACY_FULL:\"full\",LEGACY_BG_FIT_AND_TILE:\"legacy_tile\",LEGACY_BG_FIT_AND_TILE_HORIZONTAL:\"legacy_tile_horizontal\",LEGACY_BG_FIT_AND_TILE_VERTICAL:\"legacy_tile_vertical\",LEGACY_BG_NORMAL:\"legacy_normal\"},A={FIT:\"fit\",FILL:\"fill\",FILL_FOCAL:\"fill_focal\",CROP:\"crop\",LEGACY_CROP:\"legacy_crop\",LEGACY_FILL:\"legacy_fill\"},y={CENTER:\"center\",TOP:\"top\",TOP_LEFT:\"top_left\",TOP_RIGHT:\"top_right\",BOTTOM:\"bottom\",BOTTOM_LEFT:\"bottom_left\",BOTTOM_RIGHT:\"bottom_right\",LEFT:\"left\",RIGHT:\"right\"},M={[y.CENTER]:{x:.5,y:.5},[y.TOP_LEFT]:{x:0,y:0},[y.TOP_RIGHT]:{x:1,y:0},[y.TOP]:{x:.5,y:0},[y.BOTTOM_LEFT]:{x:0,y:1},[y.BOTTOM_RIGHT]:{x:1,y:1},[y.BOTTOM]:{x:.5,y:1},[y.RIGHT]:{x:1,y:.5},[y.LEFT]:{x:0,y:.5}},w={center:\"c\",top:\"t\",top_left:\"tl\",top_right:\"tr\",bottom:\"b\",bottom_left:\"bl\",bottom_right:\"br\",left:\"l\",right:\"r\"},O={BG:\"bg\",IMG:\"img\",SVG:\"svg\"},v={AUTO:\"auto\",CLASSIC:\"classic\",SUPER:\"super\"},S={classic:1,super:2},G={radius:\"0.66\",amount:\"1.00\",threshold:\"0.01\"},C={uri:\"\",css:{img:{},container:{}},attr:{img:{},container:{}},transformed:!1},R=25e6,F=[1.5,2,4],N={HIGH:{size:196e4,quality:90,maxUpscale:1},MEDIUM:{size:36e4,quality:85,maxUpscale:1},LOW:{size:16e4,quality:80,maxUpscale:1.2},TINY:{size:0,quality:80,maxUpscale:1.4}},P={HIGH:\"HIGH\",MEDIUM:\"MEDIUM\",LOW:\"LOW\",TINY:\"TINY\"},x={CONTRAST:\"contrast\",BRIGHTNESS:\"brightness\",SATURATION:\"saturation\",HUE:\"hue\",BLUR:\"blur\"},k={JPG:\"jpg\",JPEG:\"jpeg\",JPE:\"jpe\",PNG:\"png\",WEBP:\"webp\",WIX_ICO_MP:\"wix_ico_mp\",WIX_MP:\"wix_mp\",GIF:\"gif\",SVG:\"svg\",AVIF:\"avif\",UNRECOGNIZED:\"unrecognized\"},B={AVIF:\"AVIF\",PAVIF:\"PAVIF\"};k.JPG,k.JPEG,k.JPE,k.PNG,k.GIF,k.WEBP;function H(e,...t){return function(...i){const a=i[i.length-1]||{},n=[e[0]];return t.forEach(function(t,r){const o=Number.isInteger(t)?i[t]:a[t];n.push(o,e[r+1])}),n.join(\"\")}}function Y(e){return e[e.length-1]}const U=[k.PNG,k.JPEG,k.JPG,k.JPE,k.WIX_ICO_MP,k.WIX_MP,k.WEBP,k.AVIF],$=[k.JPEG,k.JPG,k.JPE];function z(e,t,i){return i&&t&&!(!(a=t.id)||!a.trim()||\"none\"===a.toLowerCase())&&Object.values(b).includes(e);var a}function Z(e,t,i,a){if(/(^https?)|(^data)|(^\\/\\/)/.test(e))return!1;if(!function(e,t,i){return!(D(e)||W(e))||!t||i}(e,t,i))return!1;const n=function(e){return U.includes(Q(e))}(e),r=function(e,t,i){return!(!V(e)||!t&&!i)}(e,i,a);return n||r}function j(e){return Q(e)===k.PNG}function D(e){return Q(e)===k.WEBP}function V(e){return Q(e)===k.GIF}function W(e){return Q(e)===k.AVIF}const q=[\"/\",\"\\\\\",\"?\",\"<\",\">\",\"|\",\"\\u201c\",\":\",'\"'].map(encodeURIComponent),J=[\"\\\\.\",\"\\\\*\"],K=\"_\";function X(e){return function(e){return $.includes(Q(e))}(e)?k.JPG:j(e)?k.PNG:D(e)?k.WEBP:V(e)?k.GIF:W(e)?k.AVIF:k.UNRECOGNIZED}function Q(e){return(/[.]([^.]+)$/.exec(e)&&/[.]([^.]+)$/.exec(e)[1]||\"\").toLowerCase()}function ee(e,t,i,a,n){let r;return r=n===A.FILL?function(e,t,i,a){return Math.max(i/e,a/t)}(e,t,i,a):n===A.FIT?function(e,t,i,a){return Math.min(i/e,a/t)}(e,t,i,a):1,r}function te(e,t,i,a,n,r){e=e||a.width,t=t||a.height;const{scaleFactor:o,width:c,height:s}=function(e,t,i,a,n){let r,o=i,c=a;if(r=ee(e,t,i,a,n),n===A.FIT&&(o=e*r,c=t*r),o&&c&&o*c>R){const i=Math.sqrt(R/(o*c));o*=i,c*=i,r=ee(e,t,o,c,n)}return{scaleFactor:r,width:o,height:c}}(e,t,a.width*n,a.height*n,i);return function(e,t,i,a,n,r,o){const{optimizedScaleFactor:c,upscaleMethodValue:s,forceUSM:l}=function(e,t,i,a){if(\"auto\"===a)return function(e,t){const i=re(e,t);return{optimizedScaleFactor:N[i].maxUpscale,upscaleMethodValue:S.classic,forceUSM:!1}}(e,t);if(\"super\"===a)return function(e){return{optimizedScaleFactor:Y(F),upscaleMethodValue:S.super,forceUSM:!(F.includes(e)||e>Y(F))}}(i);return function(e,t){const i=re(e,t);return{optimizedScaleFactor:N[i].maxUpscale,upscaleMethodValue:S.classic,forceUSM:!1}}(e,t)}(e,t,r,n);let d=i,u=a;if(r<=c)return{width:d,height:u,scaleFactor:r,upscaleMethodValue:s,forceUSM:l,cssUpscaleNeeded:!1};switch(o){case A.FILL:d=i*(c/r),u=a*(c/r);break;case A.FIT:d=e*c,u=t*c}return{width:d,height:u,scaleFactor:c,upscaleMethodValue:s,forceUSM:l,cssUpscaleNeeded:!0}}(e,t,c,s,r,o,i)}function ie(e,t,i,a){const n=ne(i)||function(e=y.CENTER){return M[e]}(a);return{x:Math.max(0,Math.min(e.width-t.width,n.x*e.width-t.width/2)),y:Math.max(0,Math.min(e.height-t.height,n.y*e.height-t.height/2)),width:Math.min(e.width,t.width),height:Math.min(e.height,t.height)}}function ae(e){return e.alignment&&w[e.alignment]||w[y.CENTER]}function ne(e){let t;return!e||\"number\"!=typeof e.x||isNaN(e.x)||\"number\"!=typeof e.y||isNaN(e.y)||(t={x:oe(Math.max(0,Math.min(100,e.x))/100,2),y:oe(Math.max(0,Math.min(100,e.y))/100,2)}),t}function re(e,t){const i=e*t;return i>N[P.HIGH].size?P.HIGH:i>N[P.MEDIUM].size?P.MEDIUM:i>N[P.LOW].size?P.LOW:P.TINY}function oe(e,t){const i=Math.pow(10,t||0);return(e*i/i).toFixed(t)}function ce(e){return e&&e.upscaleMethod&&v[e.upscaleMethod.toUpperCase()]||v.AUTO}function se(e,t){const i=D(e)||W(e);return Q(e)===k.GIF||i&&t}const le={isMobile:!1},de=function(e){return le[e]};function ue(){if(\"undefined\"!=typeof window&&\"undefined\"!=typeof navigator){const t=window.matchMedia&&window.matchMedia(\"(max-width: 767px)\").matches,i=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);e=t&&i,le[\"isMobile\"]=e}var e}function he(e,t){const i={css:{container:{}}},{css:a}=i,{fittingType:n}=e;switch(n){case b.ORIGINAL_SIZE:case b.LEGACY_ORIGINAL_SIZE:case b.LEGACY_STRIP_ORIGINAL_SIZE:a.container.backgroundSize=\"auto\",a.container.backgroundRepeat=\"no-repeat\";break;case b.SCALE_TO_FIT:case b.LEGACY_STRIP_SCALE_TO_FIT:a.container.backgroundSize=\"contain\",a.container.backgroundRepeat=\"no-repeat\";break;case b.STRETCH:a.container.backgroundSize=\"100% 100%\",a.container.backgroundRepeat=\"no-repeat\";break;case b.SCALE_TO_FILL:case b.LEGACY_STRIP_SCALE_TO_FILL:a.container.backgroundSize=\"cover\",a.container.backgroundRepeat=\"no-repeat\";break;case b.TILE_HORIZONTAL:case b.LEGACY_STRIP_TILE_HORIZONTAL:a.container.backgroundSize=\"auto\",a.container.backgroundRepeat=\"repeat-x\";break;case b.TILE_VERTICAL:case b.LEGACY_STRIP_TILE_VERTICAL:a.container.backgroundSize=\"auto\",a.container.backgroundRepeat=\"repeat-y\";break;case b.TILE:case b.LEGACY_STRIP_TILE:a.container.backgroundSize=\"auto\",a.container.backgroundRepeat=\"repeat\";break;case b.LEGACY_STRIP_FIT_AND_TILE:a.container.backgroundSize=\"contain\",a.container.backgroundRepeat=\"repeat\";break;case b.FIT_AND_TILE:case b.LEGACY_BG_FIT_AND_TILE:a.container.backgroundSize=\"auto\",a.container.backgroundRepeat=\"repeat\";break;case b.LEGACY_BG_FIT_AND_TILE_HORIZONTAL:a.container.backgroundSize=\"auto\",a.container.backgroundRepeat=\"repeat-x\";break;case b.LEGACY_BG_FIT_AND_TILE_VERTICAL:a.container.backgroundSize=\"auto\",a.container.backgroundRepeat=\"repeat-y\";break;case b.LEGACY_BG_NORMAL:a.container.backgroundSize=\"auto\",a.container.backgroundRepeat=\"no-repeat\"}switch(t.alignment){case y.CENTER:a.container.backgroundPosition=\"center center\";break;case y.LEFT:a.container.backgroundPosition=\"left center\";break;case y.RIGHT:a.container.backgroundPosition=\"right center\";break;case y.TOP:a.container.backgroundPosition=\"center top\";break;case y.BOTTOM:a.container.backgroundPosition=\"center bottom\";break;case y.TOP_RIGHT:a.container.backgroundPosition=\"right top\";break;case y.TOP_LEFT:a.container.backgroundPosition=\"left top\";break;case y.BOTTOM_RIGHT:a.container.backgroundPosition=\"right bottom\";break;case y.BOTTOM_LEFT:a.container.backgroundPosition=\"left bottom\"}return i}const ge={[y.CENTER]:\"center\",[y.TOP]:\"top\",[y.TOP_LEFT]:\"top left\",[y.TOP_RIGHT]:\"top right\",[y.BOTTOM]:\"bottom\",[y.BOTTOM_LEFT]:\"bottom left\",[y.BOTTOM_RIGHT]:\"bottom right\",[y.LEFT]:\"left\",[y.RIGHT]:\"right\"},me={position:\"absolute\",top:\"auto\",right:\"auto\",bottom:\"auto\",left:\"auto\"};function fe(e,t){const i={css:{container:{},img:{}}},{css:a}=i,{fittingType:n}=e,r=t.alignment;switch(a.container.position=\"relative\",n){case b.ORIGINAL_SIZE:case b.LEGACY_ORIGINAL_SIZE:e.parts&&e.parts.length?(a.img.width=e.parts[0].width,a.img.height=e.parts[0].height):(a.img.width=e.src.width,a.img.height=e.src.height);break;case b.SCALE_TO_FIT:case b.LEGACY_FIT_WIDTH:case b.LEGACY_FIT_HEIGHT:case b.LEGACY_FULL:a.img.width=t.width,a.img.height=t.height,a.img.objectFit=\"contain\",a.img.objectPosition=ge[r]||\"unset\";break;case b.LEGACY_BG_NORMAL:a.img.width=\"100%\",a.img.height=\"100%\",a.img.objectFit=\"none\",a.img.objectPosition=ge[r]||\"unset\";break;case b.STRETCH:a.img.width=t.width,a.img.height=t.height,a.img.objectFit=\"fill\";break;case b.SCALE_TO_FILL:a.img.width=t.width,a.img.height=t.height,a.img.objectFit=\"cover\"}if(\"number\"==typeof a.img.width&&\"number\"==typeof a.img.height&&(a.img.width!==t.width||a.img.height!==t.height)){const e=Math.round((t.height-a.img.height)/2),i=Math.round((t.width-a.img.width)/2);Object.assign(a.img,me,function(e,t,i){return{[y.TOP_LEFT]:{top:0,left:0},[y.TOP_RIGHT]:{top:0,right:0},[y.TOP]:{top:0,left:t},[y.BOTTOM_LEFT]:{bottom:0,left:0},[y.BOTTOM_RIGHT]:{bottom:0,right:0},[y.BOTTOM]:{bottom:0,left:t},[y.RIGHT]:{top:e,right:0},[y.LEFT]:{top:e,left:0},[y.CENTER]:{width:i.width,height:i.height,objectFit:\"none\"}}}(e,i,t)[r])}return i}function pe(e,t){const i={css:{container:{}},attr:{container:{},img:{}}},{css:a,attr:n}=i,{fittingType:r}=e,o=t.alignment,{width:c,height:s}=e.src;let l;switch(a.container.position=\"relative\",r){case b.ORIGINAL_SIZE:case b.LEGACY_ORIGINAL_SIZE:case b.TILE:e.parts&&e.parts.length?(n.img.width=e.parts[0].width,n.img.height=e.parts[0].height):(n.img.width=c,n.img.height=s),n.img.preserveAspectRatio=\"xMidYMid slice\";break;case b.SCALE_TO_FIT:case b.LEGACY_FIT_WIDTH:case b.LEGACY_FIT_HEIGHT:case b.LEGACY_FULL:n.img.width=\"100%\",n.img.height=\"100%\",n.img.transform=\"\",n.img.preserveAspectRatio=\"\";break;case b.STRETCH:n.img.width=t.width,n.img.height=t.height,n.img.x=0,n.img.y=0,n.img.transform=\"\",n.img.preserveAspectRatio=\"none\";break;case b.SCALE_TO_FILL:Z(e.src.id)?(n.img.width=t.width,n.img.height=t.height):(l=function(e,t,i,a,n){const r=ee(e,t,i,a,n);return{width:Math.round(e*r),height:Math.round(t*r)}}(c,s,t.width,t.height,A.FILL),n.img.width=l.width,n.img.height=l.height),n.img.x=0,n.img.y=0,n.img.transform=\"\",n.img.preserveAspectRatio=\"xMidYMid slice\"}if(\"number\"==typeof n.img.width&&\"number\"==typeof n.img.height&&(n.img.width!==t.width||n.img.height!==t.height)){let e,i,a=0,c=0;r===b.TILE?(e=t.width%n.img.width,i=t.height%n.img.height):(e=t.width-n.img.width,i=t.height-n.img.height);const s=Math.round(e/2),l=Math.round(i/2);switch(o){case y.TOP_LEFT:a=0,c=0;break;case y.TOP:a=s,c=0;break;case y.TOP_RIGHT:a=e,c=0;break;case y.LEFT:a=0,c=l;break;case y.CENTER:a=s,c=l;break;case y.RIGHT:a=e,c=l;break;case y.BOTTOM_LEFT:a=0,c=i;break;case y.BOTTOM:a=s,c=i;break;case y.BOTTOM_RIGHT:a=e,c=i}n.img.x=a,n.img.y=c}return n.container.width=t.width,n.container.height=t.height,n.container.viewBox=[0,0,t.width,t.height].join(\" \"),i}function _e(e,t,i){let a;switch(t.crop&&(a=function(e,t){const i=Math.max(0,Math.min(e.width,t.x+t.width)-Math.max(0,t.x)),a=Math.max(0,Math.min(e.height,t.y+t.height)-Math.max(0,t.y));return i&&a&&(e.width!==i||e.height!==a)?{x:Math.max(0,t.x),y:Math.max(0,t.y),width:i,height:a}:null}(t,t.crop),a&&(e.src.width=a.width,e.src.height=a.height,e.src.isCropped=!0,e.parts.push(Ie(a)))),e.fittingType){case b.SCALE_TO_FIT:case b.LEGACY_FIT_WIDTH:case b.LEGACY_FIT_HEIGHT:case b.LEGACY_FULL:case b.FIT_AND_TILE:case b.LEGACY_BG_FIT_AND_TILE:case b.LEGACY_BG_FIT_AND_TILE_HORIZONTAL:case b.LEGACY_BG_FIT_AND_TILE_VERTICAL:case b.LEGACY_BG_NORMAL:e.parts.push(Te(e,i));break;case b.SCALE_TO_FILL:e.parts.push(function(e,t){const i=te(e.src.width,e.src.height,A.FILL,t,e.devicePixelRatio,e.upscaleMethod),a=ne(e.focalPoint);return{transformType:a?A.FILL_FOCAL:A.FILL,width:Math.round(i.width),height:Math.round(i.height),alignment:ae(t),focalPointX:a&&a.x,focalPointY:a&&a.y,upscale:i.scaleFactor>1,forceUSM:i.forceUSM,scaleFactor:i.scaleFactor,cssUpscaleNeeded:i.cssUpscaleNeeded,upscaleMethodValue:i.upscaleMethodValue}}(e,i));break;case b.STRETCH:e.parts.push(function(e,t){const i=ee(e.src.width,e.src.height,t.width,t.height,A.FILL),a={...t};return a.width=e.src.width*i,a.height=e.src.height*i,Te(e,a)}(e,i));break;case b.TILE_HORIZONTAL:case b.TILE_VERTICAL:case b.TILE:case b.LEGACY_ORIGINAL_SIZE:case b.ORIGINAL_SIZE:a=ie(e.src,i,e.focalPoint,i.alignment),e.src.isCropped?(Object.assign(e.parts[0],a),e.src.width=a.width,e.src.height=a.height):e.parts.push(Ie(a));break;case b.LEGACY_STRIP_TILE_HORIZONTAL:case b.LEGACY_STRIP_TILE_VERTICAL:case b.LEGACY_STRIP_TILE:case b.LEGACY_STRIP_ORIGINAL_SIZE:e.parts.push(function(e){return{transformType:A.LEGACY_CROP,width:Math.round(e.width),height:Math.round(e.height),alignment:ae(e),upscale:!1,forceUSM:!1,scaleFactor:1,cssUpscaleNeeded:!1}}(i));break;case b.LEGACY_STRIP_SCALE_TO_FIT:case b.LEGACY_STRIP_FIT_AND_TILE:e.parts.push(function(e){return{transformType:A.FIT,width:Math.round(e.width),height:Math.round(e.height),upscale:!1,forceUSM:!0,scaleFactor:1,cssUpscaleNeeded:!1}}(i));break;case b.LEGACY_STRIP_SCALE_TO_FILL:e.parts.push(function(e){return{transformType:A.LEGACY_FILL,width:Math.round(e.width),height:Math.round(e.height),alignment:ae(e),upscale:!1,forceUSM:!0,scaleFactor:1,cssUpscaleNeeded:!1}}(i))}}function Te(e,t){const i=te(e.src.width,e.src.height,A.FIT,t,e.devicePixelRatio,e.upscaleMethod);return{transformType:!e.src.width||!e.src.height?A.FIT:A.FILL,width:Math.round(i.width),height:Math.round(i.height),alignment:w.center,upscale:i.scaleFactor>1,forceUSM:i.forceUSM,scaleFactor:i.scaleFactor,cssUpscaleNeeded:i.cssUpscaleNeeded,upscaleMethodValue:i.upscaleMethodValue}}function Ie(e){return{transformType:A.CROP,x:Math.round(e.x),y:Math.round(e.y),width:Math.round(e.width),height:Math.round(e.height),upscale:!1,forceUSM:!1,scaleFactor:1,cssUpscaleNeeded:!1}}function Ee(e,t){t=t||{},e.quality=function(e,t){const i=e.fileType===k.PNG,a=e.fileType===k.JPG,n=e.fileType===k.WEBP,r=e.fileType===k.AVIF,o=a||i||n||r;if(o){const a=Y(e.parts),n=(c=a.width,s=a.height,N[re(c,s)].quality);let r=t.quality&&t.quality>=5&&t.quality<=90?t.quality:n;return r=i?r+5:r,r}var c,s;return 0}(e,t),e.progressive=function(e){return!1!==e.progressive}(t),e.watermark=function(e){return e.watermark}(t),e.autoEncode=t.autoEncode??!0,e.encoding=t?.encoding,e.unsharpMask=function(e,t){if(function(e){const t=\"number\"==typeof(e=e||{}).radius&&!isNaN(e.radius)&&e.radius>=.1&&e.radius<=500,i=\"number\"==typeof e.amount&&!isNaN(e.amount)&&e.amount>=0&&e.amount<=10,a=\"number\"==typeof e.threshold&&!isNaN(e.threshold)&&e.threshold>=0&&e.threshold<=255;return t&&i&&a}(t.unsharpMask))return{radius:oe(t.unsharpMask?.radius,2),amount:oe(t.unsharpMask?.amount,2),threshold:oe(t.unsharpMask?.threshold,2)};if((\"number\"!=typeof(i=(i=t.unsharpMask)||{}).radius||isNaN(i.radius)||0!==i.radius||\"number\"!=typeof i.amount||isNaN(i.amount)||0!==i.amount||\"number\"!=typeof i.threshold||isNaN(i.threshold)||0!==i.threshold)&&function(e){const t=Y(e.parts);return!(t.scaleFactor>=1)||t.forceUSM||t.transformType===A.FIT}(e))return G;var i;return}(e,t),e.filters=function(e){const t=e.filters||{},i={};Le(t[x.CONTRAST],-100,100)&&(i[x.CONTRAST]=t[x.CONTRAST]);Le(t[x.BRIGHTNESS],-100,100)&&(i[x.BRIGHTNESS]=t[x.BRIGHTNESS]);Le(t[x.SATURATION],-100,100)&&(i[x.SATURATION]=t[x.SATURATION]);Le(t[x.HUE],-180,180)&&(i[x.HUE]=t[x.HUE]);Le(t[x.BLUR],0,100)&&(i[x.BLUR]=t[x.BLUR]);return i}(t)}function Le(e,t,i){return\"number\"==typeof e&&!isNaN(e)&&0!==e&&e>=t&&e<=i}function be(e,t,i,a){const n=function(e){return e?.isSEOBot??!1}(a),r=X(t.id),o=function(e,t){const i=/\\.([^.]*)$/,a=new RegExp(`(${q.concat(J).join(\"|\")})`,\"g\");if(t&&t.length){let e=t;const n=t.match(i);return n&&U.includes(n[1])&&(e=t.replace(i,\"\")),encodeURIComponent(e).replace(a,K)}const n=e.match(/\\/(.*?)$/);return(n?n[1]:e).replace(i,\"\")}(t.id,t.name),c=n?1:function(e){return Math.min(e.pixelAspectRatio||1,_)}(i),s=Q(t.id),l=s,d=Z(t.id,a?.hasAnimation,a?.allowAnimatedTransform,a?.allowFullGIFTransformation),u={fileName:o,fileExtension:s,fileType:r,fittingType:e,preferredExtension:l,src:{id:t.id,width:t.width,height:t.height,isCropped:!1,isAnimated:se(t.id,a?.hasAnimation)},focalPoint:{x:t.focalPoint&&t.focalPoint.x,y:t.focalPoint&&t.focalPoint.y},parts:[],devicePixelRatio:c,quality:0,upscaleMethod:ce(a),progressive:!0,watermark:\"\",unsharpMask:{},filters:{},transformed:d,allowFullGIFTransformation:a?.allowFullGIFTransformation,isPlaceholderFlow:a?.isPlaceholderFlow};return d&&(_e(u,t,i),Ee(u,a)),u}function Ae(e,t,i){const a={...i},n=de(\"isMobile\");switch(e){case b.LEGACY_BG_FIT_AND_TILE:case b.LEGACY_BG_FIT_AND_TILE_HORIZONTAL:case b.LEGACY_BG_FIT_AND_TILE_VERTICAL:case b.LEGACY_BG_NORMAL:const e=n?E:T,i=n?L:I;a.width=Math.min(e,t.width),a.height=Math.min(i,Math.round(a.width/(t.width/t.height))),a.pixelAspectRatio=1}return a}const ye=H`fit/w_${\"width\"},h_${\"height\"}`,Me=H`fill/w_${\"width\"},h_${\"height\"},al_${\"alignment\"}`,we=H`fill/w_${\"width\"},h_${\"height\"},fp_${\"focalPointX\"}_${\"focalPointY\"}`,Oe=H`crop/x_${\"x\"},y_${\"y\"},w_${\"width\"},h_${\"height\"}`,ve=H`crop/w_${\"width\"},h_${\"height\"},al_${\"alignment\"}`,Se=H`fill/w_${\"width\"},h_${\"height\"},al_${\"alignment\"}`,Ge=H`,lg_${\"upscaleMethodValue\"}`,Ce=H`,q_${\"quality\"}`,Re=H`,quality_auto`,Fe=H`,usm_${\"radius\"}_${\"amount\"}_${\"threshold\"}`,Ne=H`,bl`,Pe=H`,wm_${\"watermark\"}`,xe={[x.CONTRAST]:H`,con_${\"contrast\"}`,[x.BRIGHTNESS]:H`,br_${\"brightness\"}`,[x.SATURATION]:H`,sat_${\"saturation\"}`,[x.HUE]:H`,hue_${\"hue\"}`,[x.BLUR]:H`,blur_${\"blur\"}`},ke=H`,enc_auto`,Be=H`,enc_avif`,He=H`,enc_pavif`,Ye=H`,pstr`,Ue=H`,anm_all`;function $e(e,t,i,a={},n){if(Z(t.id,a?.hasAnimation,a?.allowAnimatedTransform,a?.allowFullGIFTransformation)){if(D(t.id)||W(t.id)){const{alignment:r,...o}=i;t.focalPoint={x:void 0,y:void 0},delete t?.crop,n=be(e,t,o,a)}else n=n||be(e,t,i,a);return function(e){const t=[];e.parts.forEach(e=>{switch(e.transformType){case A.CROP:t.push(Oe(e));break;case A.LEGACY_CROP:t.push(ve(e));break;case A.LEGACY_FILL:let i=Se(e);e.upscale&&(i+=Ge(e)),t.push(i);break;case A.FIT:let a=ye(e);e.upscale&&(a+=Ge(e)),t.push(a);break;case A.FILL:let n=Me(e);e.upscale&&(n+=Ge(e)),t.push(n);break;case A.FILL_FOCAL:let r=we(e);e.upscale&&(r+=Ge(e)),t.push(r)}});let i=t.join(\"/\");if(e.quality&&(i+=Ce(e)),e.unsharpMask&&(i+=Fe(e.unsharpMask)),e.progressive||(i+=Ne(e)),e.watermark&&(i+=Pe(e)),e.filters&&(i+=Object.keys(e.filters).map(t=>xe[t](e.filters)).join(\"\")),e.fileType!==k.GIF&&(e.encoding===B.AVIF?(i+=Be(e),i+=Re(e)):e.encoding===B.PAVIF?(i+=He(e),i+=Re(e)):e.autoEncode&&(i+=ke(e))),e.src?.isAnimated&&e.transformed){const t=V(e.src.id),a=!0===e.isPlaceholderFlow,n=!0===e.allowFullGIFTransformation;a?i+=Ye(e):t&&n&&(i+=Ue(e))}return`${e.src.id}/${p}/${i}/${e.fileName}.${e.preferredExtension}`}(n)}return t.id}const ze={[y.CENTER]:\"50% 50%\",[y.TOP_LEFT]:\"0% 0%\",[y.TOP_RIGHT]:\"100% 0%\",[y.TOP]:\"50% 0%\",[y.BOTTOM_LEFT]:\"0% 100%\",[y.BOTTOM_RIGHT]:\"100% 100%\",[y.BOTTOM]:\"50% 100%\",[y.RIGHT]:\"100% 50%\",[y.LEFT]:\"0% 50%\"},Ze=Object.entries(ze).reduce((e,[t,i])=>(e[i]=t,e),{}),je=[b.TILE,b.TILE_HORIZONTAL,b.TILE_VERTICAL,b.LEGACY_BG_FIT_AND_TILE,b.LEGACY_BG_FIT_AND_TILE_HORIZONTAL,b.LEGACY_BG_FIT_AND_TILE_VERTICAL],De=[b.LEGACY_ORIGINAL_SIZE,b.ORIGINAL_SIZE,b.LEGACY_BG_NORMAL];function Ve(e,t,{width:i,height:a}){return e===b.TILE&&t.width>i&&t.height>a}function We(e,{width:t,height:i}){if(!t||!i){const a=t||Math.min(980,e.width),n=a/e.width;return{width:a,height:i||e.height*n}}return{width:t,height:i}}function qe(e,t,i,a=\"center\"){const n={img:{},container:{}};if(e===b.SCALE_TO_FILL){const e=t.focalPoint&&function(e){const t=`${e.x}% ${e.y}%`;return Ze[t]||\"\"}(t.focalPoint),r=e||a;t.focalPoint&&!e?n.img={objectPosition:Je(t,i,t.focalPoint)}:n.img={objectPosition:ze[r]}}else[b.LEGACY_ORIGINAL_SIZE,b.ORIGINAL_SIZE].includes(e)?n.img={objectFit:\"none\",top:\"auto\",left:\"auto\",right:\"auto\",bottom:\"auto\"}:je.includes(e)&&(n.container={backgroundSize:`${t.width}px ${t.height}px`});return n}function Je(e,t,i){const{width:a,height:n}=e,{width:r,height:o}=t,{x:c,y:s}=i;if(!r||!o)return`${c}% ${s}%`;const l=Math.max(r/a,o/n),d=a*l,u=n*l,h=Math.max(0,Math.min(d-r,d*(c/100)-r/2)),g=Math.max(0,Math.min(u-o,u*(s/100)-o/2));return`${h&&Math.floor(h/(d-r)*100)}% ${g&&Math.floor(g/(u-o)*100)}%`}const Ke={width:\"100%\",height:\"100%\"};function Xe(e,t,i,a={}){const{autoEncode:n=!0,isSEOBot:r,shouldLoadHQImage:o,hasAnimation:c,allowAnimatedTransform:s,encoding:l}=a;if(!z(e,t,i))return C;const d=!0,u=s??d,h=Z(t.id,c,u);if(!h||o)return Qe(e,t,i,{...a,autoEncode:n,useSrcset:h});const g={...i,...We(t,i)},{alignment:m,htmlTag:f}=g,p=Ve(e,t,g),_=function(e,t,{width:i,height:a},n=!1){if(n)return{width:i,height:a};const r=!De.includes(e),o=Ve(e,t,{width:i,height:a}),c=!o&&je.includes(e),s=c?t.width:i,l=c?t.height:a,d=r?function(e,t){return e>900?t?.05:.15:e>500?t?.1:.18:e>200?.25:1}(s,j(t.id)):1;return{width:o?1920:s*d,height:l*d}}(e,t,g,r),T=function(e,t,i){return i?0:je.includes(t)?1:e>200?2:3}(g.width,e,r),I=function(e,t){const i=je.includes(e)&&!t;return e===b.SCALE_TO_FILL||i?b.SCALE_TO_FIT:e}(e,p),E=qe(e,t,i,m),{uri:L}=Qe(I,t,{..._,alignment:m,htmlTag:f},{autoEncode:n,filters:T?{blur:T}:{},hasAnimation:c,allowAnimatedTransform:u,encoding:l,isPlaceholderFlow:d}),{attr:A={},css:y}=Qe(e,t,{...g,alignment:m,htmlTag:f},{});return y.img=y.img||{},y.container=y.container||{},Object.assign(y.img,E.img,Ke),Object.assign(y.container,E.container),{uri:L,css:y,attr:A,transformed:!0}}function Qe(e,t,i,a){let n={};if(z(e,t,i)){const r=Ae(e,t,i),o=be(e,t,r,a);n.uri=$e(e,t,r,a,o),a?.useSrcset&&(n.srcset=function(e,t,i,a,n){const r=i.pixelAspectRatio||1;return{dpr:[`${1===r?n.uri:$e(e,t,{...i,pixelAspectRatio:1},a)} 1x`,`${2===r?n.uri:$e(e,t,{...i,pixelAspectRatio:2},a)} 2x`]}}(e,t,r,a,n)),Object.assign(n,function(e,t){let i;return i=t.htmlTag===O.BG?he:t.htmlTag===O.SVG?pe:fe,i(e,t)}(o,r),{transformed:o.transformed})}else n=C;return n}const et=\"https://static.wixstatic.com/media/\";\"undefined\"!=typeof window&&window.devicePixelRatio;ue();ue();const tt=et,{STATIC_MEDIA_URL:it}=e,at=({fittingType:e,src:t,target:i,options:a})=>{const n=Xe(e,t,i,{...a,autoEncode:!0});return n?.uri&&!/^[a-z]+:/.test(n.uri)&&(n.uri=`${it}${n.uri}`),n},nt=/^[a-z]+:/,rt=e=>{const{id:t,containerId:i,uri:a,alt:n,name:o=\"\",role:c,width:s,height:l,displayMode:d,devicePixelRatio:u,quality:h,alignType:g,bgEffectName:m=\"\",focalPoint:p,upscaleMethod:_,className:T=\"\",crop:I,imageStyles:E={},targetWidth:L,targetHeight:b,targetScale:A,onLoad:y=()=>{},onError:M=()=>{},shouldUseLQIP:w,containerWidth:O,containerHeight:v,getPlaceholder:S,isInFirstFold:G,placeholderTransition:C,socialAttrs:R,isSEOBot:F,skipMeasure:N,hasAnimation:P,encoding:x,isFluidLayout:k}=e,B=r.useRef(null);let H=\"\";const Y=\"blur\"===C,U=r.useRef(null);if(!U.current)if(S||w||G||F){const e={upscaleMethod:_,...h||{},shouldLoadHQImage:G,isSEOBot:F,hasAnimation:P,encoding:x};U.current=(S||at)({fittingType:d,src:{id:a,width:s,height:l,crop:I,name:o,focalPoint:p},target:{width:O,height:v,alignment:g,htmlTag:\"img\"},options:e}),H=!U.current.transformed||G||F?\"\":\"true\"}else U.current={uri:void 0,css:{img:{}},attr:{img:{},container:{}},transformed:!1};const $=!F&&(S||w)&&!G&&U.current.transformed,z=r.useMemo(()=>JSON.stringify({containerId:i,...i&&{containerId:i},...g&&{alignType:g},...N&&{skipMeasure:!0},displayMode:d,...O&&{targetWidth:O},...v&&{targetHeight:v},...L&&{targetWidth:L},...b&&{targetHeight:b},...A&&{targetScale:A},isLQIP:$,isSEOBot:F,lqipTransition:C,encoding:x,imageData:{width:s,height:l,uri:a,name:o,displayMode:d,hasAnimation:P,...h&&{quality:h},...u&&{devicePixelRatio:u},...p&&{focalPoint:p},...I&&{crop:I},..._&&{upscaleMethod:_}}}),[i,g,N,d,O,v,L,b,A,$,F,C,x,s,l,a,o,P,h,u,p,I,_]),Z=U.current,j=Z?.uri,D=Z?.srcset,V=Z.css?.img,W=`${f} ${T}`;r.useEffect(()=>{const e=B.current;y&&e?.currentSrc&&e?.complete&&y({target:e})},[]);const q=Z&&!Z?.transformed?`max(${s}px, 100%)`:L?`${L}px`:null;return r.createElement(\"wow-image\",{id:t,class:W,\"data-image-info\":z,\"data-motion-part\":`BG_IMG ${i}`,\"data-bg-effect-name\":m,\"data-has-ssr-src\":H,\"data-animate-blur\":!F&&$&&Y?\"\":void 0,\"data-is-responsive\":k?\"true\":void 0,style:q?{\"--wix-img-max-width\":q}:{}},r.createElement(\"img\",{src:j,ref:B,alt:n||\"\",role:c,style:{...V,...E},onLoad:y,onError:M,width:O||void 0,height:v||void 0,...R,srcSet:G?D?.dpr?.map(e=>nt.test(e)?e:`${it}${e}`).join(\", \"):void 0,fetchpriority:G?\"high\":void 0,loading:!1===G?\"lazy\":void 0,suppressHydrationWarning:!0}))};var ot=\"Tj01hh\";var ct=e=>{var t,a;const{id:n,alt:o,role:s,className:l,imageStyles:d={},targetWidth:u,targetHeight:h,onLoad:g,onError:m,containerWidth:f,containerHeight:p,isInFirstFold:_,socialAttrs:T,skipMeasure:I,responsiveImageProps:E,zoomedImageResponsiveOverride:L,displayMode:b}=e,A=u||f,y=h||p,{fallbackSrc:M,srcset:w,sources:O,css:v}=E||{},{width:S,height:G,...C}=(null==E||null==(t=E.css)?void 0:t.img)||{},R=\"original_size\"===b?null==E||null==(a=E.css)?void 0:a.img:C;var F;return M&&w&&v?r.createElement(\"img\",i()({fetchpriority:_?\"high\":void 0,loading:!1===_?\"lazy\":void 0,sizes:A+\"px\",srcSet:I?null==L?void 0:L.srcset:null==E?void 0:E.srcset,id:n,src:M,alt:o||\"\",role:s,style:{...d,...I?{...null==L||null==(F=L.css)?void 0:F.img}:{...R}},onLoad:g,onError:m,className:(0,c.Z)(l,ot),width:A,height:y},T)):M&&O&&v?r.createElement(\"picture\",null,O.map(e=>{let{srcset:t,media:i,sizes:a}=e;return r.createElement(\"source\",{key:i,srcSet:t,media:i,sizes:a})}),r.createElement(\"img\",i()({fetchpriority:_?\"high\":void 0,loading:!1===_?\"lazy\":void 0,id:n,src:O[0].fallbackSrc,alt:o||\"\",role:s,style:{...d,objectFit:O[0].imgStyle.objectFit,objectPosition:O[0].imgStyle.objectPosition},onLoad:g,onError:m,className:(0,c.Z)(l,ot),width:A,height:y},T))):r.createElement(rt,e)};var st=e=>{var t,i,a;const{className:n,customIdPrefix:o,getPlaceholder:c,hasAnimation:s,...l}=e,d=r.useMemo(()=>JSON.stringify({containerId:l.containerId,alignType:l.alignType,fittingType:l.displayMode,hasAnimation:s,imageData:{width:l.width,height:l.height,uri:l.uri,name:l.name,...l.quality&&{quality:l.quality},displayMode:l.displayMode}}),[l,s]),u=r.useRef(null);u.current||(u.current=c?c({fittingType:l.displayMode,src:{id:l.uri,width:l.width,height:l.height,name:l.name},target:{width:l.containerWidth,height:l.containerHeight,alignment:l.alignType,htmlTag:\"bg\"},options:{hasAnimation:s,allowAnimatedTransform:!1}}):{uri:void 0,css:{img:{}},attr:{img:{},container:{}}});const h=u.current,g=null!=(t=null==h?void 0:h.uri)?t:\"\",m=null!=(i=null==(a=h.css)?void 0:a.container)?i:{},f=Object.assign(g?{backgroundImage:\"url(\"+g+\")\"}:{},m);return r.createElement(\"wix-bg-image\",{id:\"\"+(o||\"bgImg_\")+l.containerId,class:n,style:f,\"data-tiled-image-info\":d,\"data-has-bg-scroll-effect\":l.hasBgScrollEffect||\"\",\"data-bg-effect-name\":l.bgEffectName||\"\",\"data-motion-part\":\"BG_IMG \"+l.containerId})};const lt=new RegExp(\"<%= compId %>\",\"g\"),dt=(e,t)=>e.replace(lt,t);var ut=e=>null==e?void 0:e.replace(\":hover\",\"\"),ht=\"bX9O_S\",gt=\"Z_wCwr\",mt=\"Jxk_UL\",ft=\"K8MSra\",pt=\"YTb3b4\";const _t={quality:{unsharpMask:{radius:.33,amount:1,threshold:0}},devicePixelRatio:1};var Tt=e=>{const{id:t,videoRef:a,videoInfo:n,posterImageInfo:o,muted:s,preload:l,loop:d,alt:u,isVideoEnabled:h,getPlaceholder:g,extraClassName:m=\"\"}=e;n.containerId=ut(n.containerId);const f=r.useMemo(()=>JSON.stringify(n),[n]),p=r.createElement(r.Fragment,null,o.filterEffectSvgString&&r.createElement(\"svg\",{id:\"svg_\"+n.containerId,className:pt},r.createElement(\"defs\",{dangerouslySetInnerHTML:{__html:dt(o.filterEffectSvgString,n.containerId)}})),r.createElement(ct,i()({key:n.videoId+\"_img\",id:o.containerId+\"_img\",className:(0,c.Z)(gt,mt,\"bgVideoposter\",m),imageStyles:{width:\"100%\",height:\"100%\"}},o,_t,{getPlaceholder:g})));return h?r.createElement(\"wix-video\",{id:t,\"data-video-info\":f,\"data-motion-part\":\"BG_IMG \"+n.containerId,class:(0,c.Z)(ht,\"bgVideo\",m)},r.createElement(\"video\",{key:n.videoId+\"_video\",ref:a,id:n.containerId+\"_video\",className:ft,crossOrigin:\"anonymous\",\"aria-label\":u,playsInline:!0,preload:l,muted:s,loop:d}),p):p},It=\"SUz0WK\";var Et=e=>{const{id:t,containerId:i,pageId:a,children:n,bgEffectName:o=\"\",containerSize:c}=e;return r.createElement(\"wix-bg-media\",{id:t,class:It,\"data-container-id\":i,\"data-container-size\":((null==c?void 0:c.width)||0)+\", \"+((null==c?void 0:c.height)||0),\"data-page-id\":a,\"data-bg-effect-name\":o,\"data-motion-part\":\"BG_MEDIA \"+i},n)};const Lt=\"bgOverlay\";var bt=\"m4khSP\",At=\"FNxOn5\";var yt=e=>{const{imageOverlay:t}=e;return r.createElement(\"div\",{\"data-testid\":Lt,className:bt},t&&r.createElement(st,i()({customIdPrefix:\"bgImgOverlay_\",className:At},t)))};const Mt=\"bgLayers\",wt=\"colorUnderlay\",Ot=\"mediaPadding\",vt=\"canvas\";var St=\"MW5IWV\",Gt=\"N3eg0s\",Ct=\"Kv1aVt\",Rt=\"dLPlxY\",Ft=\"VgO9Yg\",Nt=\"LWbAav\",Pt=\"yK6aSC\",xt=\"K_YxMd\",kt=\"NGjcJN\",Bt=\"mNGsUM\",Ht=\"I8xA4L\";const Yt=\"bgImage\";var Ut=e=>{const{videoRef:t,canvasRef:a,hasBgFullscreenScrollEffect:n,image:o,backgroundImage:s,backgroundMedia:l,video:d,backgroundOverlay:u,shouldPadMedia:h,extraClass:g=\"\",shouldRenderUnderlay:m=!d,reducedMotion:f=!1,getPlaceholder:p,hasCanvasAnimation:_,useWixMediaCanvas:T,onClick:I}=e,{onImageLoad:E}=(e=>{let{onReady:t,image:i}=e;return(0,r.useEffect)(()=>{t&&!i&&t()},[t,i]),{onImageLoad:e=>{null!=i&&i.onLoad&&i.onLoad(e),t&&t()}}})(e),L=ut(e.containerId),b=\"img_\"+ut(L),A=o&&r.createElement(ct,i()({id:b,className:(0,c.Z)(Ct,Rt,Bt,Yt),imageStyles:{width:\"100%\",height:\"100%\"},getPlaceholder:p},o,{onLoad:E})),y=s&&r.createElement(st,i()({},s,{containerId:L,className:(0,c.Z)(Ct,Rt,Bt,Yt),getPlaceholder:p})),M=d&&r.createElement(Tt,i()({id:\"videoContainer_\"+L},d,{extraClassName:Pt,reducedMotion:f,videoRef:t,getPlaceholder:p})),w=T&&a||_?r.createElement(\"wix-media-canvas\",{\"data-container-id\":L,class:_?Ht:\"\"},A,y,M,r.createElement(\"canvas\",{id:L+\"webglcanvas\",className:(0,c.Z)(xt,\"webglcanvas\"),\"aria-label\":(null==d?void 0:d.alt)||\"\",role:\"presentation\",\"data-testid\":vt})):r.createElement(r.Fragment,null,A,y,M,a&&r.createElement(\"canvas\",{id:L+\"webglcanvas\",ref:a,className:(0,c.Z)(xt,\"webglcanvas\"),\"aria-label\":(null==d?void 0:d.alt)||\"\",role:\"presentation\",\"data-testid\":vt})),O=l?r.createElement(Et,i()({id:\"bgMedia_\"+L},l),w):r.createElement(\"div\",{id:\"bgMedia_\"+L,\"data-motion-part\":\"BG_MEDIA \"+L,className:Ft},w),v=u&&r.createElement(yt,u);return r.createElement(\"div\",{id:Mt+\"_\"+L,\"data-hook\":Mt,\"data-motion-part\":\"BG_LAYER \"+L,className:(0,c.Z)(St,g,{[Gt]:n}),onClick:I},m&&r.createElement(\"div\",{\"data-testid\":wt,className:(0,c.Z)(Nt,Ct)}),h?r.createElement(\"div\",{\"data-testid\":Ot,className:kt},O,v):r.createElement(r.Fragment,null,O,v))};var $t=e=>r.createElement(Ut,e),zt=\"dkukWC\",Zt=\"FRCqDF\",jt=\"xnZvZH\",Dt=\"MBOSCN\";const Vt=(e,t,i)=>{const a=((e,t)=>e?[...Array(1+(t||0)).keys()].reverse().map(e=>r.createElement(\"div\",{key:\"divider-layer-\"+e,style:{\"--divider-layer-i\":e},className:Zt,\"data-testid\":\"divider-layer-\"+e,\"data-divider-layer\":e})):null)(!!t,i);return t?r.createElement(\"div\",{className:(0,c.Z)(zt,{[jt]:\"top\"===e,[Dt]:\"bottom\"===e}),\"data-testid\":e+\"-divider\"},a):null};var Wt=e=>{var t,i;const a=r.useMemo(()=>{var t;return Vt(\"top\",null==e?void 0:e.hasTopDivider,null==e||null==(t=e.topLayers)?void 0:t.size)},[null==e?void 0:e.hasTopDivider,null==e||null==(t=e.topLayers)?void 0:t.size]),n=r.useMemo(()=>{var t;return Vt(\"bottom\",null==e?void 0:e.hasBottomDivider,null==e||null==(t=e.bottomLayers)?void 0:t.size)},[null==e?void 0:e.hasBottomDivider,null==e||null==(i=e.bottomLayers)?void 0:i.size]);return r.createElement(r.Fragment,null,a,n)};var qt={root:\"section\"},Jt=a(\"p1x1\");const Kt=({size:e,...t})=>r.createElement(\"svg\",{viewBox:\"0 0 18 18\",fill:\"currentColor\",width:e||\"18\",height:e||\"18\",...t},r.createElement(\"path\",{d:\"M7.5,5 C8.32842712,5 9,5.67157288 9,6.5 L9,11.5 C9,12.3284271 8.32842712,13 7.5,13 C6.67157288,13 6,12.3284271 6,11.5 L6,6.5 C6,5.67157288 6.67157288,5 7.5,5 Z M11.5,5 C12.3284271,5 13,5.67157288 13,6.5 L13,11.5 C13,12.3284271 12.3284271,13 11.5,13 C10.6715729,13 10,12.3284271 10,11.5 L10,6.5 C10,5.67157288 10.6715729,5 11.5,5 Z M7.5,6 C7.22385763,6 7,6.22385763 7,6.5 L7,11.5 C7,11.7761424 7.22385763,12 7.5,12 C7.77614237,12 8,11.7761424 8,11.5 L8,6.5 C8,6.22385763 7.77614237,6 7.5,6 Z M11.5,6 C11.2238576,6 11,6.22385763 11,6.5 L11,11.5 C11,11.7761424 11.2238576,12 11.5,12 C11.7761424,12 12,11.7761424 12,11.5 L12,6.5 C12,6.22385763 11.7761424,6 11.5,6 Z\"}));Kt.displayName=\"PauseSmall\";var Xt=Kt;const Qt=({size:e,...t})=>r.createElement(\"svg\",{viewBox:\"0 0 18 18\",fill:\"currentColor\",width:e||\"18\",height:e||\"18\",...t},r.createElement(\"path\",{d:\"M6.87468837,5.45041947 L12.7318793,8.46657119 C13.20163,8.68731241 13.20163,9.26940918 12.7318793,9.53342881 L6.87468837,12.5495805 C6.58008377,12.7012867 6.00070071,12.5801226 6,12.0161517 L6,5.98384828 C6,5.65247743 6.35266876,5.20682168 6.87468837,5.45041947 Z M7,11.3602529 L11.5834735,9 L7,6.63974714 L7,11.3602529 Z\"}));Qt.displayName=\"PlaySmall\";var ei=Qt;const ti=(e,t)=>{var a;const{id:n,skin:s=\"RectangleArea\",className:u,containerRootClassName:h=\"\",customClassNames:g=[],containerProps:f,children:p,fillLayers:_=e.fillLayers||e.background,tagName:T,getPlaceholder:I,dividers:E,semanticClassNames:L,onStop:b,onClick:A,onDblClick:y,onMouseEnter:M,onMouseLeave:w,lang:O,translations:v,isPlayPauseSectionExperimentOn:S,isBuilder:G}=e,C=T||\"section\",{shouldOmitWrapperLayers:R}=f,F=(0,c.Z)(Jt.Z[s],h,u,L?l(L.root,...g):l(qt.root,...g),{[Jt.Z.shouldOmitWrapperLayers]:R}),N=!(null==_||!_.video),P=function(e,t,i){const a=o().useRef(null),n=o().useRef(null);return t?n.current||(n.current={play:()=>a.current?.play(),load:()=>a.current?.load(),pause:()=>a.current?.pause(),stop:()=>{a.current&&(a.current.pause(),a.current.currentTime=0,i&&i(a.current))}}):n.current=null,o().useImperativeHandle(e,()=>n.current||{load(){},stop(){}}),a}(t,N,b),[x,k]=r.useState(!(null!=P&&null!=(a=P.current)&&a.paused));return r.createElement(C,i()({id:n},(0,d.P5)(e),((e={})=>{const t=e.tabIndex??e.tabindex??void 0;return void 0!==t?{tabIndex:Number(t)}:{}})(e.a11y||{tabIndex:-1}),(B=e.a11y,B?.label?{\"aria-label\":B.label}:{}),{\"data-block-level-container\":\"Section\",className:F+\" \"+Jt.Z.section,\"data-testid\":m,onClick:A,onDoubleClick:y,onMouseEnter:M,onMouseLeave:w,lang:O}),_&&!G&&r.createElement($t,i()({},_,{videoRef:P,getPlaceholder:I})),N&&S&&!G&&r.createElement(\"button\",{className:\"\"+Jt.Z.videoPlayPauseButton,onClick:()=>{const e=null==P?void 0:P.current;e&&(e.paused?e.play():e.pause(),k(t=>{const i=!t,a=document.getElementById(n);if(a){a.querySelectorAll(\"video\").forEach(t=>{t!==e&&(i?t.play():t.pause())})}return i}))},\"aria-pressed\":x,\"aria-label\":null==v?void 0:v.ariaLabel},x?r.createElement(Xt,null):r.createElement(ei,null)),E&&!G&&r.createElement(Wt,E),p());var B};var ii=r.forwardRef(ti)}(),n}()});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGh1bmRlcmJvbHQvY29tcG9uZW50L1NlY3Rpb24vU2VjdGlvbi5idW5kbGUubWluLmpzIiwibWFwcGluZ3MiOiJDQUFBLFNBQTJDQSxFQUFNQyxHQUMxQixpQkFBWkMsU0FBMEMsaUJBQVhDLE9BQ3hDQSxPQUFPRCxRQUFVRCxFQUFRRyxRQUFRLFVBQ1IsbUJBQVhDLFFBQXlCQSxPQUFPQyxJQUM5Q0QsT0FBTyx3Q0FBeUMsQ0FBQyxTQUFVSixHQUNqQyxpQkFBWkMsUUFDZEEsUUFBUSx5Q0FBMkNELEVBQVFHLFFBQVEsVUFFbkVKLEVBQUsseUNBQTJDQyxFQUFRRCxFQUFZLE1BQ3JFLENBVEQsQ0FTb0Isb0JBQVRPLEtBQXVCQSxLQUFPQyxLQUFPLFNBQVNDLEdBQ3pELE8sa0RDVEEsS0FBZ0IsY0FBYyxTQUFTLFdBQWEsU0FBUyxtQkFBbUIsU0FBUyxnQkFBa0IsU0FBUyxRQUFVLFNBQVMscUNBQXVDLFNBQVMsS0FBTyxTQUFTLEtBQU8sU0FBUyxTQUFXLFNBQVMsY0FBZ0IsU0FBUyxjQUFnQixTQUFTLGdCQUFrQixTQUFTLGdCQUFrQixTQUFTLDRCQUE0QixTQUFTLHVCQUF5QixTQUFTLGFBQWEsU0FBUyxVQUFZLFNBQVMsbUJBQW1CLFNBQVMsZUFBaUIsU0FBUyxXQUFXLFNBQVMsUUFBVSxTQUFTLGVBQWlCLFNBQVMsZUFBZSxTQUFTLFlBQWMsU0FBUyxzQkFBc0IsU0FBUyxrQkFBb0IsU0FBUyxXQUFhLFNBQVMsZUFBZSxTQUFTLFlBQWMsU0FBUyx5QkFBMkIsU0FBUyx5QkFBMkIsU0FBUyxTQUFXLFNBQVMsUUFBVSxTQUFTLDBCQUEwQixTQUFTLHFCQUF1QixTQUFTLGtCQUFvQixTLHFFQ0EzNkIsTUFtRU1DLEVBQXFCQyxHQUN2QkMsT0FBT0MsUUFBUUYsR0FBT0csT0FBTyxDQUFDQyxHQUFNQyxFQUFLQyxNQUN4Q0QsRUFBSUUsU0FBUyxXQUNiSCxFQUFJQyxHQUFPQyxHQUVSRixHQUNSLENBQUMsRSxrQ0MxRVJaLEVBQU9ELFFBQVVPLEMsbUJDQWpC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LE1BQU1DLEdBQW1CRCxFQUVuQkUsRUFBaUJDLFNBQVNDLGVBQWV6ZCxHQUMvQyxHQUFJdWQsRUFBZ0IsQ0FDRUEsRUFBZUcsaUJBQWlCLFNBQ3hDeG1CLFFBQVF5bUIsSUFDZEEsSUFBZWpHLElBRWpCNEYsRUFBa0JLLEVBQVd6QixPQUFTeUIsRUFBV3ZCLFVBR3ZELENBQ0EsT0FBT2tCLE1BK0JMLGVBQWNkLEVBQ2QsYUFBd0IsTUFBWmYsT0FBWSxFQUFaQSxFQUFjbUMsV0FFekJwQixFQUFpQi9ILEVBQUFBLGNBQUMyRixHQUFVLE1BQU0zRixFQUFBQSxjQUFDK0YsR0FBUyxPQUdoRGYsSUFBYWtDLEdBQWFsSCxFQUFBQSxjQUFDb0osR0FBa0JwRSxHQUM3Q3hDLEsvQzdDOEIsSUFBQzBGLEcrQ2tEdEMsT0FBZWxJLEVBQUFBLFdBQWlCaUcsRyIsInNvdXJjZXMiOlsid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvU2VjdGlvbnMvU2VjdGlvbi92aWV3ZXIvc3R5bGVzL1NlY3Rpb24uc2NzcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL2VkaXRvci1lbGVtZW50cy1jb21tb24tdXRpbHMvZGlzdC9lc20vY29tbW9ucy91dGlscy5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L2V4dGVybmFsIHVtZCB7XCJhbWRcIjpcInJlYWN0XCIsXCJjb21tb25qc1wiOlwicmVhY3RcIixcImNvbW1vbmpzMlwiOlwicmVhY3RcIixcInJvb3RcIjpcIlJlYWN0XCJ9Iiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kcy5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9jbHN4L2Rpc3QvY2xzeC5tanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi9lZGl0b3ItZWxlbWVudHMtY29tbW9uLXV0aWxzL2Rpc3QvZXNtL2Nzc0VkaXRpbmcvY2xhc3MtbmFtZXMtZm9ybW1hdGVyLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vZWRpdG9yLWVsZW1lbnRzLWNvbW1vbi11dGlscy9kaXN0L2VzbS9jb21tb25zL2ExMXkuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvY29tcG9uZW50cy9TZWN0aW9ucy9TZWN0aW9uL2NvbnN0YW50cy50cyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9Ad2l4L2ltYWdlL2Rpc3QvZXNtL0ltYWdlLm1vZHVsZS5zY3NzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B3aXgvaW1hZ2Uta2l0L2Rpc3QvZXNtL2hlbHBlcnMvaW1hZ2VTZXJ2aWNlQ29uc3RhbnRzLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B3aXgvaW1hZ2Uta2l0L2Rpc3QvZXNtL2hlbHBlcnMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdpeC9pbWFnZS1raXQvZGlzdC9lc20vaGVscGVycy9pbWFnZVNlcnZpY2VVdGlscy5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9Ad2l4L2ltYWdlLWtpdC9kaXN0L2VzbS9oZWxwZXJzL2ltYWdlU2VydmljZUZlYXR1cmVTdXBwb3J0T2JqZWN0LmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B3aXgvaW1hZ2Uta2l0L2Rpc3QvZXNtL2hlbHBlcnMvcG9wdWxhdGVGZWF0dXJlU3VwcG9ydC5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9Ad2l4L2ltYWdlLWtpdC9kaXN0L2VzbS9lbmdpbmVzL2F0dHJpYnV0ZXMvYmFja2dyb3VuZEF0dHJpYnV0ZXMuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdpeC9pbWFnZS1raXQvZGlzdC9lc20vZW5naW5lcy9hdHRyaWJ1dGVzL2ltZ0F0dHJpYnV0ZXMuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdpeC9pbWFnZS1raXQvZGlzdC9lc20vZW5naW5lcy9hdHRyaWJ1dGVzL1NWR0F0dHJpYnV0ZXMuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdpeC9pbWFnZS1raXQvZGlzdC9lc20vaGVscGVycy9pbWFnZVRyYW5zZm9ybVBhcnRzLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B3aXgvaW1hZ2Uta2l0L2Rpc3QvZXNtL2hlbHBlcnMvaW1hZ2VUcmFuc2Zvcm1PcHRpb25zLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B3aXgvaW1hZ2Uta2l0L2Rpc3QvZXNtL2FwaS90cmFuc2Zvcm0uanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdpeC9pbWFnZS1raXQvZGlzdC9lc20vaGVscGVycy9icm93c2VyRmVhdHVyZVN1cHBvcnQuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdpeC9pbWFnZS1raXQvZGlzdC9lc20vZW5naW5lcy90cmFuc2Zvcm1zLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B3aXgvaW1hZ2Uta2l0L2Rpc3QvZXNtL2FwaS91cmkuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdpeC9pbWFnZS1raXQvZGlzdC9lc20vaGVscGVycy9pbWFnZVBsYWNlaG9sZGVyVXRpbHMuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdpeC9pbWFnZS1raXQvZGlzdC9lc20vYXBpL21heC9hcGkuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdpeC9pbWFnZS1raXQvZGlzdC9lc20vYXBpL3NyY3NldC5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9Ad2l4L2ltYWdlLWtpdC9kaXN0L2VzbS9lbmdpbmVzL2F0dHJpYnV0ZXMuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdpeC9pbWFnZS1raXQvZGlzdC9lc20vc2RrL2FwaS5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9Ad2l4L2ltYWdlLWtpdC9kaXN0L2VzbS9zZGsvaW5kZXguanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdpeC9pbWFnZS1raXQvZGlzdC9lc20vYXBpL21heC9pbmRleC5qcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uLy4uL25vZGVfbW9kdWxlcy9Ad2l4L2ltYWdlL2Rpc3QvZXNtL0ltYWdlLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvSW1hZ2Uvdmlld2VyL3N0eWxlL0ltYWdlLm1vZHVsZS5zY3NzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvSW1hZ2Uvdmlld2VyL0ltYWdlLnRzeCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL0JhY2tncm91bmRJbWFnZS92aWV3ZXIvQmFja2dyb3VuZEltYWdlLnRzeCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL2VkaXRvci1lbGVtZW50cy1jb21tb24tdXRpbHMvZGlzdC9lc20vY29tbW9ucy92ZWN0b3JJbWFnZVV0aWxzLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvTWVkaWFDb250YWluZXJzL0hvdmVyQm94L3V0aWxzLnRzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvVmlkZW8vdmlld2VyL3N0eWxlL1ZpZGVvLnNjc3MiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvY29tcG9uZW50cy9WaWRlby92aWV3ZXIvVmlkZW8udHN4Iiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvQmFja2dyb3VuZE1lZGlhL3ZpZXdlci9zdHlsZS9CYWNrZ3JvdW5kTWVkaWEuc2NzcyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL0JhY2tncm91bmRNZWRpYS92aWV3ZXIvQmFja2dyb3VuZE1lZGlhLnRzeCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL0JhY2tncm91bmRPdmVybGF5L2NvbnN0YW50cy50cyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL0JhY2tncm91bmRPdmVybGF5L3ZpZXdlci9zdHlsZS9CYWNrZ3JvdW5kT3ZlcmxheS5zY3NzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvQmFja2dyb3VuZE92ZXJsYXkvdmlld2VyL0JhY2tncm91bmRPdmVybGF5LnRzeCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL0ZpbGxMYXllcnMvY29uc3RhbnRzLnRzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvRmlsbExheWVycy92aWV3ZXIvc3R5bGUvRmlsbExheWVycy5zY3NzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvRmlsbExheWVycy92aWV3ZXIvdXNlT25Mb2Fkc0V2ZW50cy50cyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL0ZpbGxMYXllcnMvdmlld2VyL0ZpbGxMYXllcnMudHN4Iiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvQmFja2dyb3VuZFgvdmlld2VyL0JhY2tncm91bmRYLnRzeCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5Ly4uLy4uL3RodW5kZXJib2x0LWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL01lZGlhQ29udGFpbmVycy9TaGFwZURpdmlkZXJzL3ZpZXdlci9zdHlsZS9zaGFwZURpdmlkZXJzLnNjc3MiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvY29tcG9uZW50cy9NZWRpYUNvbnRhaW5lcnMvU2hhcGVEaXZpZGVycy92aWV3ZXIvc2hhcGVEaXZpZGVycy50c3giLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvY29tcG9uZW50cy9TZWN0aW9ucy9TZWN0aW9uL1NlY3Rpb24uc2VtYW50aWNDbGFzc05hbWVzLnRzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B3aXgvd2l4LXVpLWljb25zLWNvbW1vbi9kaXN0L2VzbS9kZWZhdWx0L2dlbmVyYWwvZGlzdC9jb21wb25lbnRzL1BhdXNlU21hbGwuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdpeC93aXgtdWktaWNvbnMtY29tbW9uL2Rpc3QvZXNtL2RlZmF1bHQvZ2VuZXJhbC9kaXN0L2NvbXBvbmVudHMvUGxheVNtYWxsLmpzIiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vdGh1bmRlcmJvbHQtZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvU2VjdGlvbnMvU2VjdGlvbi92aWV3ZXIvU2VjdGlvbi50c3giLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi9lZGl0b3ItZWxlbWVudHMtY29tbW9uLXV0aWxzL2Rpc3QvZXNtL21lZGlhL3VzZVZpZGVvQVBJLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcInJlYWN0XCIpKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFwidGh1bmRlcmJvbHQvY29tcG9uZW50L1NlY3Rpb24vU2VjdGlvblwiLCBbXCJyZWFjdFwiXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJ0aHVuZGVyYm9sdC9jb21wb25lbnQvU2VjdGlvbi9TZWN0aW9uXCJdID0gZmFjdG9yeShyZXF1aXJlKFwicmVhY3RcIikpO1xuXHRlbHNlXG5cdFx0cm9vdFtcInRodW5kZXJib2x0L2NvbXBvbmVudC9TZWN0aW9uL1NlY3Rpb25cIl0gPSBmYWN0b3J5KHJvb3RbXCJSZWFjdFwiXSk7XG59KSgodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHRoaXMpLCBmdW5jdGlvbihfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX1hkZl9fXykge1xucmV0dXJuICIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuZXhwb3J0IGRlZmF1bHQge1wiYmctdW5kZXJsYXlcIjpcIkxXYkFhdlwiLFwiYmdVbmRlcmxheVwiOlwiTFdiQWF2XCIsXCJsYXllcnMtY29udGFpbmVyXCI6XCJNVzVJV1ZcIixcImxheWVyc0NvbnRhaW5lclwiOlwiTVc1SVdWXCIsXCJhbmltYXRlXCI6XCJWN09lRXdcIixcImhlYWRlclNlY3Rpb25BZGRWaXNpYmlsaXR5VHJhbnNpdGlvblwiOlwiTURHTG9EXCIsXCJtb3ZlXCI6XCJCSElvNDNcIixcImZhZGVcIjpcIlV2RjFudVwiLFwic2Nyb2xsVXBcIjpcIll6clFGYlwiLFwiUmVjdGFuZ2xlQXJlYVwiOlwieHV6akJZXCIsXCJyZWN0YW5nbGVBcmVhXCI6XCJ4dXpqQllcIixcIkRlZmF1bHRBcmVhU2tpblwiOlwiTzdZYmtiXCIsXCJkZWZhdWx0QXJlYVNraW5cIjpcIk83WWJrYlwiLFwiZnVsbC1zY3JlZW4tc2Nyb2xsLWVmZmVjdFwiOlwiR2VOTER0XCIsXCJmdWxsU2NyZWVuU2Nyb2xsRWZmZWN0XCI6XCJHZU5MRHRcIixcImZpbGwtbGF5ZXJcIjpcIks4cEhGaFwiLFwiZmlsbExheWVyXCI6XCJLOHBIRmhcIixcImltYWdlLWZpbGwtbGF5ZXJcIjpcIlRhd2VxU1wiLFwiaW1hZ2VGaWxsTGF5ZXJcIjpcIlRhd2VxU1wiLFwiYmctbWVkaWFcIjpcInl6SHlOVFwiLFwiYmdNZWRpYVwiOlwieXpIeU5UXCIsXCJ2aWRlb0ZpbGxMYXllclwiOlwiekJGQ3BPXCIsXCJhbHBoYS1jYW52YXNcIjpcInhqZ3JTM1wiLFwiYWxwaGFDYW52YXNcIjpcInhqZ3JTM1wiLFwibWVkaWEtcGFkZGluZy1sYXllclwiOlwiYjN6U1MwXCIsXCJtZWRpYVBhZGRpbmdMYXllclwiOlwiYjN6U1MwXCIsXCJ0cmFuc2Zvcm1zXCI6XCJXc3YzYWtcIixcIm1lZGlhLWNhbnZhc1wiOlwiSWlKTWZuXCIsXCJtZWRpYUNhbnZhc1wiOlwiSWlKTWZuXCIsXCJSZWN0YW5nbGVBcmVhQWZ0ZXJTY3JvbGxcIjpcIktKZ3QxNFwiLFwicmVjdGFuZ2xlQXJlYUFmdGVyU2Nyb2xsXCI6XCJLSmd0MTRcIixcInNjcm9sbGVkXCI6XCJWVHdjWDdcIixcInNlY3Rpb25cIjpcIkd6c2swalwiLFwidmlkZW8tcGxheS1wYXVzZS1idXR0b25cIjpcIk1kTGwwaFwiLFwidmlkZW9QbGF5UGF1c2VCdXR0b25cIjpcIk1kTGwwaFwiLFwiY2hpbGRyZW5Db250YWluZXJcIjpcIkdtbWNpMVwifTsiLCJpbXBvcnQgeyBrZXlDb2RlcyB9IGZyb20gJy4vYTExeSc7XG5leHBvcnQgY29uc3QgaXNUaGVtZUZvbnQgPSAodmFsdWUpID0+IC9eZm9udF9cXGQrJC8udGVzdCh2YWx1ZSk7XG5leHBvcnQgY29uc3QgZGVib3VuY2UgPSAoZm4sIG1zID0gMCwgeyBsZWFkaW5nID0gZmFsc2UsIHRyYWlsaW5nID0gdHJ1ZSB9ID0ge30pID0+IHtcbiAgICBsZXQgdGltZW91dElkID0gbnVsbDtcbiAgICByZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgaWYgKGxlYWRpbmcgJiYgdGltZW91dElkID09PSBudWxsKSB7XG4gICAgICAgICAgICBmbi5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGltZW91dElkKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRyYWlsaW5nIHx8ICFsZWFkaW5nIHx8IHRpbWVvdXRJZCkge1xuICAgICAgICAgICAgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRyYWlsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aW1lb3V0SWQgPSBudWxsO1xuICAgICAgICAgICAgfSwgbXMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gU3BlY2lhbCBjYXNlIGZvciBhIHNpbmdsZSBjYWxsIHdpdGggYm90aCBsZWFkaW5nIGFuZCB0cmFpbGluZyAoc2VlIHRlc3RzKVxuICAgICAgICAgICAgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGltZW91dElkID0gbnVsbDtcbiAgICAgICAgICAgIH0sIG1zKTtcbiAgICAgICAgfVxuICAgIH07XG59O1xuZXhwb3J0IGNvbnN0IHRocm90dGxlID0gKGZ1bmMsIG1zID0gMCkgPT4ge1xuICAgIGxldCBpc1Rocm90dGxlZCA9IGZhbHNlLCBzYXZlZEFyZ3M7XG4gICAgZnVuY3Rpb24gd3JhcHBlciguLi5hcmdzKSB7XG4gICAgICAgIGlmIChpc1Rocm90dGxlZCkge1xuICAgICAgICAgICAgc2F2ZWRBcmdzID0gYXJncztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICBpc1Rocm90dGxlZCA9IHRydWU7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaXNUaHJvdHRsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChzYXZlZEFyZ3MpIHtcbiAgICAgICAgICAgICAgICB3cmFwcGVyLmFwcGx5KHRoaXMsIHNhdmVkQXJncyk7XG4gICAgICAgICAgICAgICAgc2F2ZWRBcmdzID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgbXMpO1xuICAgIH1cbiAgICByZXR1cm4gd3JhcHBlcjtcbn07XG5leHBvcnQgY29uc3QgaXNCcm93c2VyID0gKCkgPT4gdHlwZW9mIHdpbmRvdyAhPT0gYHVuZGVmaW5lZGA7XG5leHBvcnQgY29uc3QgcGVyZm9ybU9uRW50ZXIgPSAoZm4pID0+IHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSBrZXlDb2Rlcy5lbnRlcikge1xuICAgICAgICAgICAgZm4oZXZlbnQpO1xuICAgICAgICB9XG4gICAgfTtcbn07XG5leHBvcnQgY29uc3QgaXNDU1NNYXNrU3VwcG9ydGVkID0gKCkgPT4ge1xuICAgIGlmICghaXNCcm93c2VyKCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiAod2luZG93LkNTUyAmJlxuICAgICAgICB3aW5kb3cuQ1NTLnN1cHBvcnRzKCcobWFzay1yZXBlYXQ6IG5vLXJlcGVhdCkgb3IgKC13ZWJraXQtbWFzay1yZXBlYXQ6IG5vLXJlcGVhdCknKSk7XG59O1xuZXhwb3J0IGNvbnN0IGlzRW1wdHlPYmplY3QgPSAob2JqKSA9PiAhb2JqIHx8IChPYmplY3Qua2V5cyhvYmopLmxlbmd0aCA9PT0gMCAmJiBvYmouY29uc3RydWN0b3IgPT09IE9iamVjdCk7XG5leHBvcnQgY29uc3QgaXNTYWZhcmkgPSAoKSA9PiAvXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KG5hdmlnYXRvcj8udXNlckFnZW50KTtcbi8vIGV2ZW4gdGhvdWdoIG5hdmlnYXRvci5wbGF0Zm9ybSBpcyBkZXByZWNhdGVkLCBpdCdzIHN0aWxsIHRoZSBtb3N0IHJlbGlhYmxlIHdheSB0byBkZXRlY3QgdGhlIE9TXG4vLyBzdWdnZXN0ZWQgYnkgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL05hdmlnYXRvci9wbGF0Zm9ybVxuLy8gdGhpcyBmdW5jdGlvbiBpcyBub3Qgd29ya2luZyBpbiBTU1IgZW52aXJvbm1lbnRcbi8vIHNob3VsZCBiZSB1c2VkIG9ubHkgaW4gdGhlIGJyb3dzZXIgZW52aXJvbm1lbnRcbmV4cG9ydCBjb25zdCBpc01hYyA9ICgpID0+IG5hdmlnYXRvcj8ucGxhdGZvcm0/LnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgnbWFjJyk7XG5leHBvcnQgY29uc3QgZ2V0RGF0YUF0dHJpYnV0ZXMgPSAocHJvcHMpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMocHJvcHMpLnJlZHVjZSgoYWNjLCBba2V5LCB2YWxdKSA9PiB7XG4gICAgICAgIGlmIChrZXkuaW5jbHVkZXMoJ2RhdGEtJykpIHtcbiAgICAgICAgICAgIGFjY1trZXldID0gdmFsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBwaWNrKHNvdXJjZSwga2V5cykge1xuICAgIHJldHVybiBrZXlzLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgaWYgKCFzb3VyY2UuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgW2tleV06IHNvdXJjZVtrZXldLFxuICAgICAgICB9O1xuICAgIH0sIHt9KTtcbn1cbmV4cG9ydCBjb25zdCBpZFRvQ29tcFJlZiA9IChpZCkgPT4gKHsgaWQsIHR5cGU6ICdERVNLVE9QJyB9KTtcbmV4cG9ydCBjb25zdCBpc1dpeERvbWFpbiA9ICh1cmwpID0+IFsnZWRpdG9yeC5pbycsICd3aXhzaXRlLmNvbScsICd3aXguY29tJywgJ3dpeHN0dWRpby5pbyddLnNvbWUoZG9tYWluID0+IHVybC5pbmNsdWRlcyhkb21haW4pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXV0aWxzLmpzLm1hcCIsIm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9YZGZfX187IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7XG4gIHJldHVybiBtb2R1bGUuZXhwb3J0cyA9IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKG4pIHtcbiAgICBmb3IgKHZhciBlID0gMTsgZSA8IGFyZ3VtZW50cy5sZW5ndGg7IGUrKykge1xuICAgICAgdmFyIHQgPSBhcmd1bWVudHNbZV07XG4gICAgICBmb3IgKHZhciByIGluIHQpICh7fSkuaGFzT3duUHJvcGVydHkuY2FsbCh0LCByKSAmJiAobltyXSA9IHRbcl0pO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBfZXh0ZW5kcy5hcHBseShudWxsLCBhcmd1bWVudHMpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfZXh0ZW5kcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIHIoZSl7dmFyIHQsZixuPVwiXCI7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGV8fFwibnVtYmVyXCI9PXR5cGVvZiBlKW4rPWU7ZWxzZSBpZihcIm9iamVjdFwiPT10eXBlb2YgZSlpZihBcnJheS5pc0FycmF5KGUpKWZvcih0PTA7dDxlLmxlbmd0aDt0KyspZVt0XSYmKGY9cihlW3RdKSkmJihuJiYobis9XCIgXCIpLG4rPWYpO2Vsc2UgZm9yKHQgaW4gZSllW3RdJiYobiYmKG4rPVwiIFwiKSxuKz10KTtyZXR1cm4gbn1leHBvcnQgZnVuY3Rpb24gY2xzeCgpe2Zvcih2YXIgZSx0LGY9MCxuPVwiXCI7Zjxhcmd1bWVudHMubGVuZ3RoOykoZT1hcmd1bWVudHNbZisrXSkmJih0PXIoZSkpJiYobiYmKG4rPVwiIFwiKSxuKz10KTtyZXR1cm4gbn1leHBvcnQgZGVmYXVsdCBjbHN4OyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdGZ1bmN0aW9uKCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuXHRcdGZ1bmN0aW9uKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgZGVmaW5pdGlvbikge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmosIHByb3ApIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApOyB9IiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJleHBvcnQgY29uc3QgQ1NTX1BSRUZJWCA9ICd3aXh1aS0nO1xuZXhwb3J0IGNvbnN0IGZvcm1hdENsYXNzTmFtZXMgPSAoc2VtYW50aWNDbGFzc05hbWUsIC4uLmN1c3RvbUNsYXNzTmFtZXMpID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBpZiAoc2VtYW50aWNDbGFzc05hbWUpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goYCR7Q1NTX1BSRUZJWH0ke3NlbWFudGljQ2xhc3NOYW1lfWApO1xuICAgIH1cbiAgICBjdXN0b21DbGFzc05hbWVzLmZvckVhY2goY2xhc3NOYW1lID0+IHtcbiAgICAgICAgaWYgKGNsYXNzTmFtZSkge1xuICAgICAgICAgICAgLy8gYWRkIGVhY2ggY3VzdG9tIGNsYXNzIHdpdGggYW5kIHdpdGhvdXQgdGhlIHByZWZpeFxuICAgICAgICAgICAgcmVzdWx0LnB1c2goYCR7Q1NTX1BSRUZJWH0ke2NsYXNzTmFtZX1gKTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGNsYXNzTmFtZSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0LmpvaW4oJyAnKTtcbn07XG4vLyByZW1vdmUgd2hlbiBodHRwczovL2dpdGh1Yi5jb20vc2VhcmNoP3E9cmVwbyUzQXdpeC1wcml2YXRlJTJGdGh1bmRlcmJvbHQlMjBjdXN0b21Dc3NDbGFzc2VzJnR5cGU9Y29kZSBoYXMgbm8gdXNhZ2VzXG5leHBvcnQgY29uc3QgY3VzdG9tQ3NzQ2xhc3NlcyA9ICguLi5jbGFzc05hbWVzKSA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLndhcm4oJ2N1c3RvbUNzc0NsYXNzZXMgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBmb3JtYXRDbGFzc05hbWVzIGluc3RlYWQnKTtcbiAgICBjb25zdCBbc2VtYW50aWMsIC4uLnJlc3RdID0gY2xhc3NOYW1lcztcbiAgICByZXR1cm4gZm9ybWF0Q2xhc3NOYW1lcyhzZW1hbnRpYywgLi4ucmVzdCk7XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2xhc3MtbmFtZXMtZm9ybW1hdGVyLmpzLm1hcCIsImV4cG9ydCBjb25zdCBrZXlDb2RlcyA9IHtcbiAgICBlbnRlcjogMTMsXG4gICAgc3BhY2U6IDMyLFxuICAgIGVuZDogMzUsXG4gICAgaG9tZTogMzYsXG4gICAgZXNjYXBlOiAyNyxcbiAgICBhcnJvd0xlZnQ6IDM3LFxuICAgIGFycm93VXA6IDM4LFxuICAgIGFycm93UmlnaHQ6IDM5LFxuICAgIGFycm93RG93bjogNDAsXG4gICAgdGFiOiA5LFxuICAgIGRlbGV0ZTogNDYsXG4gICAgYTogNjUsXG4gICAgejogOTAsXG4gICAgcGFnZVVwOiAzMyxcbiAgICBwYWdlRG93bjogMzQsXG59O1xuZXhwb3J0IGNvbnN0IGtleWJvYXJkU2hvcnRjdXRzID0ge1xuICAgIGNvbmZpcm1LZXk6ICdFbnRlcicsXG4gICAgc3BhY2VLZXk6ICcgJyxcbiAgICBhcnJvd0Rvd25LZXk6ICdBcnJvd0Rvd24nLFxuICAgIGFycm93VXBLZXk6ICdBcnJvd1VwJyxcbiAgICBlc2NhcGVLZXk6ICdFc2NhcGUnLFxufTtcbi8vIHNlZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0tleWJvYXJkRXZlbnQva2V5L0tleV9WYWx1ZXNcbmV4cG9ydCBjb25zdCBrZXlzID0ge1xuICAgIHNwYWNlOiBbJ1NwYWNlYmFyJywgJyAnXSxcbiAgICBlbnRlcjogWydFbnRlciddLFxufTtcbmZ1bmN0aW9uIGFjdGl2YXRlQnlLZXkoa2V5KSB7XG4gICAgcmV0dXJuIGV2ZW50ID0+IHtcbiAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IGtleSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5jbGljaygpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbmV4cG9ydCBjb25zdCBhY3RpdmF0ZUJ5U3BhY2VCdXR0b24gPSBhY3RpdmF0ZUJ5S2V5KGtleUNvZGVzLnNwYWNlKTtcbmV4cG9ydCBjb25zdCBhY3RpdmF0ZUJ5RW50ZXJCdXR0b24gPSBhY3RpdmF0ZUJ5S2V5KGtleUNvZGVzLmVudGVyKTtcbmV4cG9ydCBjb25zdCBhY3RpdmF0ZUJ5U3BhY2VPckVudGVyQnV0dG9uID0gZXZlbnQgPT4ge1xuICAgIGFjdGl2YXRlQnlFbnRlckJ1dHRvbihldmVudCk7XG4gICAgYWN0aXZhdGVCeVNwYWNlQnV0dG9uKGV2ZW50KTtcbn07XG5leHBvcnQgY29uc3QgYWN0aXZhdGVCeUVzY2FwZUJ1dHRvbiA9IGFjdGl2YXRlQnlLZXkoa2V5Q29kZXMuZXNjYXBlKTtcbmV4cG9ydCBjb25zdCBIQVNfQ1VTVE9NX0ZPQ1VTX0NMQVNTTkFNRSA9ICdoYXMtY3VzdG9tLWZvY3VzJztcbmV4cG9ydCBjb25zdCBhMTF5QmxhY2tMaXN0ID0gWydhcmlhLWlkJywgJ2FyaWEtbWV0YWRhdGEnLCAnYXJpYS10eXBlJ107XG5leHBvcnQgY29uc3QgZmlsdGVyZWRBMTF5ID0gKGExMXksIGJsYWNrbGlzdCkgPT4ge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhhMTF5KS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGlmICghYmxhY2tsaXN0LmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgICAgIGFjY1trZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG59O1xuLyoqXG4gKiBAZGVwcmVjYXRlZCB1c2UgZ2V0QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZXMgaW5zdGVhZCB3aGVyZXZlciB5b3UgY2FuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRBcmlhQXR0cmlidXRlcyA9ICh7IHJvbGUsIHRhYkluZGV4LCB0YWJpbmRleCwgLi4uYXJpYVByb3BzIH0gPSB7fSkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IE9iamVjdC5lbnRyaWVzKGFyaWFQcm9wcykucmVkdWNlKChwcmV2LCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgcmV0dXJuIHsgLi4ucHJldiwgW2BhcmlhLSR7a2V5fWAudG9Mb3dlckNhc2UoKV06IHZhbHVlIH07XG4gICAgfSwgeyByb2xlLCB0YWJJbmRleDogdGFiSW5kZXggPz8gdGFiaW5kZXggfSk7XG4gICAgT2JqZWN0LmtleXMocmVzdWx0KS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGlmIChyZXN1bHRba2V5XSA9PT0gdW5kZWZpbmVkIHx8IHJlc3VsdFtrZXldID09PSBudWxsKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgICAgIGRlbGV0ZSByZXN1bHRba2V5XTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmaWx0ZXJlZEExMXkocmVzdWx0LCBhMTF5QmxhY2tMaXN0KTtcbn07XG5leHBvcnQgY29uc3QgZ2V0VGFiSW5kZXhBdHRyaWJ1dGUgPSAoYTExeSA9IHt9KSA9PiB7XG4gICAgY29uc3QgdGFiSW5kZXggPSBhMTF5LnRhYkluZGV4ID8/IGExMXkudGFiaW5kZXggPz8gdW5kZWZpbmVkO1xuICAgIHJldHVybiB0YWJJbmRleCAhPT0gdW5kZWZpbmVkID8geyB0YWJJbmRleDogTnVtYmVyKHRhYkluZGV4KSB9IDoge307XG59O1xuZXhwb3J0IGNvbnN0IGdldEFyaWFMYWJlbEF0dHJpYnV0ZSA9IChhMTF5KSA9PiB7XG4gICAgcmV0dXJuIGExMXk/LmxhYmVsID8geyAnYXJpYS1sYWJlbCc6IGExMXkubGFiZWwgfSA6IHt9O1xufTtcbmV4cG9ydCBjb25zdCBJTk5FUl9GT0NVU19SSU5HX0NMQVNTTkFNRSA9ICdoYXMtaW5uZXItZm9jdXMtcmluZyc7XG5jb25zdCBMSU5FMSA9ICcwIDAgMCAxcHgnO1xuY29uc3QgTElORTIgPSAnMCAwIDAgM3B4JztcbmNvbnN0IENPTE9SMSA9ICcjZmZmZmZmJztcbmNvbnN0IENPTE9SMiA9ICcjMTE2ZGZmJztcbmNvbnN0IE9VVEVSX0ZPQ1VTX1JJTkcgPSBgJHtMSU5FMX0ke0NPTE9SMX0sICR7TElORTJ9JHtDT0xPUjJ9YDtcbmNvbnN0IElOTkVSX0ZPQ1VTX1JJTkcgPSBgaW5zZXQgJHtMSU5FMX0ke0NPTE9SMn0sIGluc2V0ICR7TElORTJ9JHtDT0xPUjF9YDtcbmV4cG9ydCBjb25zdCBnZXRGb2N1c1JpbmdWYWx1ZSA9IChpc091dGVyID0gdHJ1ZSkgPT4gaXNPdXRlciA/IE9VVEVSX0ZPQ1VTX1JJTkcgOiBJTk5FUl9GT0NVU19SSU5HO1xuZXhwb3J0IGNvbnN0IGdldEFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVzID0gKGF0dHJpYnV0ZXMpID0+IHtcbiAgICBjb25zdCB7IHJvbGUsIHRhYkluZGV4LCB0YWJpbmRleCwgc2NyZWVuUmVhZGVyLCBsYW5nLCBhcmlhQXR0cmlidXRlcyA9IHt9LCB9ID0gYXR0cmlidXRlcztcbiAgICBjb25zdCBwcmVmaXhlZEFyaWFBdHRyaWJ1dGVzID0gT2JqZWN0LmVudHJpZXMoYXJpYUF0dHJpYnV0ZXMpLnJlZHVjZSgocHJldiwgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLnByZXYsIFtgYXJpYS0ke2tleX1gLnRvTG93ZXJDYXNlKCldOiB2YWx1ZSB9O1xuICAgIH0sIHt9KTtcbiAgICByZXR1cm4ge1xuICAgICAgICByb2xlLFxuICAgICAgICB0YWJJbmRleDogdGFiSW5kZXggPz8gdGFiaW5kZXgsXG4gICAgICAgIHNjcmVlblJlYWRlcixcbiAgICAgICAgYXJpYUF0dHJpYnV0ZXM6IGZpbHRlcmVkQTExeShwcmVmaXhlZEFyaWFBdHRyaWJ1dGVzLCBhMTF5QmxhY2tMaXN0KSxcbiAgICAgICAgbGFuZyxcbiAgICB9O1xufTtcbmV4cG9ydCBjb25zdCBnZXRBY2Nlc3NpYmlsaXR5QXR0cmlidXRlc1NwcmVhZCA9IChhdHRyaWJ1dGVzKSA9PiB7XG4gICAgY29uc3QgYTExeVByb3BzID0gZ2V0QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgLi4uYTExeVByb3BzLmFyaWFBdHRyaWJ1dGVzLFxuICAgICAgICB0YWJJbmRleDogYTExeVByb3BzLnRhYkluZGV4LFxuICAgICAgICBzY3JlZW5SZWFkZXI6IGExMXlQcm9wcy5zY3JlZW5SZWFkZXIsXG4gICAgICAgIGxhbmc6IGExMXlQcm9wcy5sYW5nLFxuICAgICAgICByb2xlOiBhMTF5UHJvcHMucm9sZSxcbiAgICB9O1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWExMXkuanMubWFwIiwiZXhwb3J0IGNvbnN0IFRlc3RJZHMgPSB7XG4gIHNlY3Rpb246ICdzZWN0aW9uLWNvbnRhaW5lcicsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgY29ydmlkTmFtZSA9ICckdy5TZWN0aW9uJztcblxuZXhwb3J0IGNvbnN0IFRyYW5zbGF0aW9uS2V5cyA9IHtcbiAgYXJpYUxhYmVsOiAnVGV4dEVmZmVjdHNfTWVkaWFCdXR0b25fQXJpYUxhYmVsJyxcbiAgbmFtZXNwYWNlOiAnYXJpYUxhYmVscycsXG59O1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQgZGVmYXVsdCB7XCJpbWFnZVwiOlwiamh4dmJSXCJ9OyIsIi8qKlxuICogaW1hZ2Ugc2VydmljZSBhcGkgdmVyc2lvblxuICovXG5jb25zdCBBUElfVkVSU0lPTiA9ICd2MSc7XG4vKipcbnRoZSBtYXhpbXVtIHJldGluYSBmYWN0b3JcbiAqL1xuY29uc3QgTUFYX0RFVklDRV9QSVhFTF9SQVRJTyA9IDI7XG4vKipcbiBzaXRlIEJHIGxlZ2FjeSBtYXggd2lkdGggeCBoZWlnaHRcbiAqL1xuY29uc3QgRFNLVFBfTUFYX0JHX1NJVEVfTEVHQUNZX1dJRFRIID0gMTkyMDtcbmNvbnN0IERTS1RQX01BWF9CR19TSVRFX0xFR0FDWV9IRUlHSFQgPSAxOTIwO1xuY29uc3QgTU9CSUxFX01BWF9CR19TSVRFX0xFR0FDWV9XSURUSCA9IDEwMDA7XG5jb25zdCBNT0JJTEVfTUFYX0JHX1NJVEVfTEVHQUNZX0hFSUdIVCA9IDEwMDA7XG4vKipcbiAqIEVudW0gc3RyaW5nIHZhbHVlcyBvZiByZXF1ZXN0ZWQgaW1hZ2UgZml0dGluZyB0eXBlc1xuICogTm90ZTogVElMRV9IT1JJWk9OVEFMLCBUSUxFX1ZFUlRJQ0FMLCBGSVRfQU5EX1RJTEUgYXJlIHN1cHBvcnRlZCBmb3IgbGVnYWN5IHB1cnBvc2VzIGJ1dCBhcmUgbm90IGV4cG9zZWRcbiAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGJlY2F1c2UgdGhleSBzaG91bGQgbm90IGJlIGV4cG9zZWQgZm9yIG5ldyBmZWF0dXJlc1xuICovXG5jb25zdCBmaXR0aW5nVHlwZXMgPSB7XG4gICAgU0NBTEVfVE9fRklMTDogJ2ZpbGwnLFxuICAgIFNDQUxFX1RPX0ZJVDogJ2ZpdCcsXG4gICAgU1RSRVRDSDogJ3N0cmV0Y2gnLFxuICAgIE9SSUdJTkFMX1NJWkU6ICdvcmlnaW5hbF9zaXplJyxcbiAgICBUSUxFOiAndGlsZScsXG4gICAgVElMRV9IT1JJWk9OVEFMOiAndGlsZV9ob3Jpem9udGFsJyxcbiAgICBUSUxFX1ZFUlRJQ0FMOiAndGlsZV92ZXJ0aWNhbCcsXG4gICAgRklUX0FORF9USUxFOiAnZml0X2FuZF90aWxlJyxcbiAgICBMRUdBQ1lfU1RSSVBfVElMRTogJ2xlZ2FjeV9zdHJpcF90aWxlJyxcbiAgICBMRUdBQ1lfU1RSSVBfVElMRV9IT1JJWk9OVEFMOiAnbGVnYWN5X3N0cmlwX3RpbGVfaG9yaXpvbnRhbCcsXG4gICAgTEVHQUNZX1NUUklQX1RJTEVfVkVSVElDQUw6ICdsZWdhY3lfc3RyaXBfdGlsZV92ZXJ0aWNhbCcsXG4gICAgTEVHQUNZX1NUUklQX1NDQUxFX1RPX0ZJTEw6ICdsZWdhY3lfc3RyaXBfZmlsbCcsXG4gICAgTEVHQUNZX1NUUklQX1NDQUxFX1RPX0ZJVDogJ2xlZ2FjeV9zdHJpcF9maXQnLFxuICAgIExFR0FDWV9TVFJJUF9GSVRfQU5EX1RJTEU6ICdsZWdhY3lfc3RyaXBfZml0X2FuZF90aWxlJyxcbiAgICBMRUdBQ1lfU1RSSVBfT1JJR0lOQUxfU0laRTogJ2xlZ2FjeV9zdHJpcF9vcmlnaW5hbF9zaXplJyxcbiAgICBMRUdBQ1lfT1JJR0lOQUxfU0laRTogJ2FjdHVhbF9zaXplJyxcbiAgICBMRUdBQ1lfRklUX1dJRFRIOiAnZml0V2lkdGgnLFxuICAgIExFR0FDWV9GSVRfSEVJR0hUOiAnZml0SGVpZ2h0JyxcbiAgICBMRUdBQ1lfRlVMTDogJ2Z1bGwnLFxuICAgIExFR0FDWV9CR19GSVRfQU5EX1RJTEU6ICdsZWdhY3lfdGlsZScsXG4gICAgTEVHQUNZX0JHX0ZJVF9BTkRfVElMRV9IT1JJWk9OVEFMOiAnbGVnYWN5X3RpbGVfaG9yaXpvbnRhbCcsXG4gICAgTEVHQUNZX0JHX0ZJVF9BTkRfVElMRV9WRVJUSUNBTDogJ2xlZ2FjeV90aWxlX3ZlcnRpY2FsJyxcbiAgICBMRUdBQ1lfQkdfTk9STUFMOiAnbGVnYWN5X25vcm1hbCcsXG59O1xuLyoqXG4gKiBFbnVtIHN0cmluZyB2YWx1ZXMgb2YgaW1hZ2UgdHJhbnNmb3JtIHR5cGVzIGFzIHBhc3NlZCB0byB0aGUgaW1hZ2Ugc2VydmljZSBhcGlcbiAqL1xuY29uc3QgdHJhbnNmb3JtVHlwZXMgPSB7XG4gICAgRklUOiAnZml0JyxcbiAgICBGSUxMOiAnZmlsbCcsXG4gICAgRklMTF9GT0NBTDogJ2ZpbGxfZm9jYWwnLFxuICAgIENST1A6ICdjcm9wJyxcbiAgICBMRUdBQ1lfQ1JPUDogJ2xlZ2FjeV9jcm9wJyxcbiAgICBMRUdBQ1lfRklMTDogJ2xlZ2FjeV9maWxsJyxcbn07XG4vKipcbiAqIEVudW0gc3RyaW5nIHZhbHVlcyBvZiByZXF1ZXN0ZWQgaW1hZ2UgYWxpZ24gdHlwZXNcbiAqIEB0eXBlIHt7Q0VOVEVSOiBzdHJpbmcsIFJJR0hUOiBzdHJpbmcsIExFRlQ6IHN0cmluZywgVE9QOiBzdHJpbmcsIEJPVFRPTTogc3RyaW5nLCBUT1BfUklHSFQ6IHN0cmluZywgVE9QX0xFRlQ6IHN0cmluZywgQk9UVE9NX1JJR0hUOiBzdHJpbmcsIEJPVFRPTV9MRUZUOiBzdHJpbmd9fVxuICovXG5jb25zdCBhbGlnblR5cGVzID0ge1xuICAgIENFTlRFUjogJ2NlbnRlcicsXG4gICAgVE9QOiAndG9wJyxcbiAgICBUT1BfTEVGVDogJ3RvcF9sZWZ0JyxcbiAgICBUT1BfUklHSFQ6ICd0b3BfcmlnaHQnLFxuICAgIEJPVFRPTTogJ2JvdHRvbScsXG4gICAgQk9UVE9NX0xFRlQ6ICdib3R0b21fbGVmdCcsXG4gICAgQk9UVE9NX1JJR0hUOiAnYm90dG9tX3JpZ2h0JyxcbiAgICBMRUZUOiAnbGVmdCcsXG4gICAgUklHSFQ6ICdyaWdodCcsXG59O1xuLyoqXG4gKiBFbnVtIDlHcmlkIGFsaWdubWVudCB0byBmb2NhbCBwb2ludFxuICovXG5jb25zdCBBTElHTl9UWVBFX1RPX0ZPQ0FMX1BPSU5UID0ge1xuICAgIFthbGlnblR5cGVzLkNFTlRFUl06IHsgeDogMC41LCB5OiAwLjUgfSxcbiAgICBbYWxpZ25UeXBlcy5UT1BfTEVGVF06IHsgeDogMCwgeTogMCB9LFxuICAgIFthbGlnblR5cGVzLlRPUF9SSUdIVF06IHsgeDogMS4wLCB5OiAwIH0sXG4gICAgW2FsaWduVHlwZXMuVE9QXTogeyB4OiAwLjUsIHk6IDAgfSxcbiAgICBbYWxpZ25UeXBlcy5CT1RUT01fTEVGVF06IHsgeDogMCwgeTogMS4wIH0sXG4gICAgW2FsaWduVHlwZXMuQk9UVE9NX1JJR0hUXTogeyB4OiAxLjAsIHk6IDEuMCB9LFxuICAgIFthbGlnblR5cGVzLkJPVFRPTV06IHsgeDogMC41LCB5OiAxLjAgfSxcbiAgICBbYWxpZ25UeXBlcy5SSUdIVF06IHsgeDogMS4wLCB5OiAwLjUgfSxcbiAgICBbYWxpZ25UeXBlcy5MRUZUXTogeyB4OiAwLCB5OiAwLjUgfSxcbn07XG4vKipcbiAqIEVudW0gc3RyaW5nIHZhbHVlcyBvZiBpbWFnZSBhbGlnbiB0eXBlcyBhcyBwYXNzZWQgdG8gdGhlIGltYWdlIHNlcnZpY2VcbiAqL1xuY29uc3QgYWxpZ25UeXBlc01hcCA9IHtcbiAgICBjZW50ZXI6ICdjJyxcbiAgICB0b3A6ICd0JyxcbiAgICB0b3BfbGVmdDogJ3RsJyxcbiAgICB0b3BfcmlnaHQ6ICd0cicsXG4gICAgYm90dG9tOiAnYicsXG4gICAgYm90dG9tX2xlZnQ6ICdibCcsXG4gICAgYm90dG9tX3JpZ2h0OiAnYnInLFxuICAgIGxlZnQ6ICdsJyxcbiAgICByaWdodDogJ3InLFxufTtcbi8qKlxuICogRW51bSBzdHJpbmcgdmFsdWVzIG9mIGh0bWwgdGFnIHVzZWQgdG8gY29uc3RydWN0IHRoZSBjc3Mgb3Igc3ZnIGF0dHJpYnV0ZXNcbiAqICBAdHlwZSB7e0JHOiBzdHJpbmcsIElNRzogc3RyaW5nLCBTVkc6IHN0cmluZ319XG4gKi9cbmNvbnN0IGh0bWxUYWcgPSB7XG4gICAgQkc6ICdiZycsXG4gICAgSU1HOiAnaW1nJyxcbiAgICBTVkc6ICdzdmcnLFxufTtcbi8qKlxuICogRW51bSBzdHJpbmcgdmFsdWVzIG9mIHVwc2NhbGUgbWV0aG9kXG4gKiAgQHR5cGUge3tERUZBVUxUOiBzdHJpbmcsIFNVUEVSOiBzdHJpbmd9fVxuICovXG5jb25zdCB1cHNjYWxlTWV0aG9kcyA9IHtcbiAgICBBVVRPOiAnYXV0bycsXG4gICAgQ0xBU1NJQzogJ2NsYXNzaWMnLFxuICAgIFNVUEVSOiAnc3VwZXInLFxufTtcbi8qKlxuICogIGFwaSB2YWx1ZXMgb2YgdXBzY2FsZSBtZXRob2RcbiAqICBAdHlwZSB7e2RlZmF1bHQ6IG51bWJlciwgc3VwZXI6IG51bWJlcn19XG4gKi9cbmNvbnN0IHVwc2NhbGVNZXRob2RzVmFsdWVzID0ge1xuICAgIGNsYXNzaWM6IDEsXG4gICAgc3VwZXI6IDIsXG59O1xuLyoqXG4gKiBkZWZhdWx0IHVuc2hhcnAgbWFzayB2YWx1ZXNcbiAqICBAdHlwZSB7e3JhZGl1czogbnVtYmVyLCBhbW91bnQ6IG51bWJlciwgdGhyZXNob2xkOiBudW1iZXJ9fVxuICovXG5jb25zdCBkZWZhdWx0VVNNID0ge1xuICAgIHJhZGl1czogJzAuNjYnLFxuICAgIGFtb3VudDogJzEuMDAnLFxuICAgIHRocmVzaG9sZDogJzAuMDEnLFxufTtcbi8qKlxuICogZGVmYXVsdCBlbXB0eSBkYXRhXG4gKi9cbmNvbnN0IGVtcHR5RGF0YSA9IHtcbiAgICB1cmk6ICcnLFxuICAgIGNzczoge1xuICAgICAgICBpbWc6IHt9LFxuICAgICAgICBjb250YWluZXI6IHt9LFxuICAgIH0sXG4gICAgYXR0cjoge1xuICAgICAgICBpbWc6IHt9LFxuICAgICAgICBjb250YWluZXI6IHt9LFxuICAgIH0sXG4gICAgdHJhbnNmb3JtZWQ6IGZhbHNlLFxufTtcbmNvbnN0IE1BWF9UUkFOU0ZPUk1FRF9JTUFHRV9XSURUSCA9IDUwMDA7XG5jb25zdCBNQVhfVFJBTlNGT1JNRURfSU1BR0VfSEVJR0hUID0gNTAwMDtcbmNvbnN0IFNBRkVfVFJBTlNGT1JNRURfQVJFQSA9IE1BWF9UUkFOU0ZPUk1FRF9JTUFHRV9XSURUSCAqIE1BWF9UUkFOU0ZPUk1FRF9JTUFHRV9IRUlHSFQ7XG4vKipcbiAqIHN1cGVyIHJlcyBtYWNoaW5lIGxlYXJuaW5nIHVwc2NhbGUgZmFjdG9yIG1vZGVscyAtXG4gKiBAdHlwZSB7bnVtYmVyW119XG4gKi9cbmNvbnN0IFNVUEVSX1VQU0NBTEVfTU9ERUxTID0gWzEuNSwgMiwgNF07XG4vKipcbiAqIGltYWdlIHF1YWxpdGllc1xuICovXG5jb25zdCBpbWFnZVNjYWxlRGVmYXVsdHMgPSB7XG4gICAgSElHSDoge1xuICAgICAgICBzaXplOiAxNDAwICogMTQwMCxcbiAgICAgICAgcXVhbGl0eTogOTAsXG4gICAgICAgIG1heFVwc2NhbGU6IDEsXG4gICAgfSxcbiAgICBNRURJVU06IHtcbiAgICAgICAgc2l6ZTogNjAwICogNjAwLFxuICAgICAgICBxdWFsaXR5OiA4NSxcbiAgICAgICAgbWF4VXBzY2FsZTogMSxcbiAgICB9LFxuICAgIExPVzoge1xuICAgICAgICBzaXplOiA0MDAgKiA0MDAsXG4gICAgICAgIHF1YWxpdHk6IDgwLFxuICAgICAgICBtYXhVcHNjYWxlOiAxLjIsXG4gICAgfSxcbiAgICBUSU5ZOiB7XG4gICAgICAgIHNpemU6IDAsXG4gICAgICAgIHF1YWxpdHk6IDgwLFxuICAgICAgICBtYXhVcHNjYWxlOiAxLjQsXG4gICAgfSxcbn07XG4vKipcbiAqIGltYWdlIHF1YWxpdHlcbiAqIEB0eXBlIHt7SElHSDogc3RyaW5nLCBNRURJVU06IHN0cmluZywgTE9XOiBzdHJpbmcsIFRJTlk6IHN0cmluZ319XG4gKi9cbmNvbnN0IGltYWdlUXVhbGl0eSA9IHtcbiAgICBISUdIOiAnSElHSCcsXG4gICAgTUVESVVNOiAnTUVESVVNJyxcbiAgICBMT1c6ICdMT1cnLFxuICAgIFRJTlk6ICdUSU5ZJyxcbn07XG4vKipcbiAqIGltYWdlIGZpbHRlcnNcbiAqIEB0eXBlIHt7Q09OVFJBU1Q6IHN0cmluZywgQlJJR0hUTkVTUzogc3RyaW5nLCBTQVRVUkFUSU9OOiBzdHJpbmcsIEhVRTogc3RyaW5nLCBCTFVSOiBzdHJpbmd9fVxuICovXG5jb25zdCBpbWFnZUZpbHRlcnMgPSB7XG4gICAgQ09OVFJBU1Q6ICdjb250cmFzdCcsXG4gICAgQlJJR0hUTkVTUzogJ2JyaWdodG5lc3MnLFxuICAgIFNBVFVSQVRJT046ICdzYXR1cmF0aW9uJyxcbiAgICBIVUU6ICdodWUnLFxuICAgIEJMVVI6ICdibHVyJyxcbn07XG5jb25zdCBmaWxlVHlwZSA9IHtcbiAgICBKUEc6ICdqcGcnLFxuICAgIEpQRUc6ICdqcGVnJyxcbiAgICBKUEU6ICdqcGUnLFxuICAgIFBORzogJ3BuZycsXG4gICAgV0VCUDogJ3dlYnAnLFxuICAgIFdJWF9JQ09fTVA6ICd3aXhfaWNvX21wJyxcbiAgICBXSVhfTVA6ICd3aXhfbXAnLFxuICAgIEdJRjogJ2dpZicsXG4gICAgU1ZHOiAnc3ZnJyxcbiAgICBBVklGOiAnYXZpZicsXG4gICAgVU5SRUNPR05JWkVEOiAndW5yZWNvZ25pemVkJyxcbn07XG5jb25zdCBlbmNvZGluZ1R5cGVzID0ge1xuICAgIEFWSUY6ICdBVklGJyxcbiAgICBQQVZJRjogJ1BBVklGJyxcbn07XG5jb25zdCBzdXBwb3J0ZWRFeHRlbnNpb25zID0gW1xuICAgIGZpbGVUeXBlLkpQRyxcbiAgICBmaWxlVHlwZS5KUEVHLFxuICAgIGZpbGVUeXBlLkpQRSxcbiAgICBmaWxlVHlwZS5QTkcsXG4gICAgZmlsZVR5cGUuR0lGLFxuICAgIGZpbGVUeXBlLldFQlAsXG5dO1xuZXhwb3J0IHsgYWxpZ25UeXBlcywgYWxpZ25UeXBlc01hcCwgdHJhbnNmb3JtVHlwZXMsIGVuY29kaW5nVHlwZXMsIGZpdHRpbmdUeXBlcywgaHRtbFRhZywgdXBzY2FsZU1ldGhvZHMsIHVwc2NhbGVNZXRob2RzVmFsdWVzLCBkZWZhdWx0VVNNLCBlbXB0eURhdGEsIGltYWdlUXVhbGl0eSwgaW1hZ2VGaWx0ZXJzLCBpbWFnZVNjYWxlRGVmYXVsdHMsIGZpbGVUeXBlLCBzdXBwb3J0ZWRFeHRlbnNpb25zLCBEU0tUUF9NQVhfQkdfU0lURV9MRUdBQ1lfV0lEVEgsIE1PQklMRV9NQVhfQkdfU0lURV9MRUdBQ1lfV0lEVEgsIERTS1RQX01BWF9CR19TSVRFX0xFR0FDWV9IRUlHSFQsIE1PQklMRV9NQVhfQkdfU0lURV9MRUdBQ1lfSEVJR0hULCBTQUZFX1RSQU5TRk9STUVEX0FSRUEsIFNVUEVSX1VQU0NBTEVfTU9ERUxTLCBNQVhfREVWSUNFX1BJWEVMX1JBVElPLCBBTElHTl9UWVBFX1RPX0ZPQ0FMX1BPSU5ULCBBUElfVkVSU0lPTiwgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWltYWdlU2VydmljZUNvbnN0YW50cy5qcy5tYXAiLCIvKipcbiAqIFNpbXBsZSB0ZW1wbGF0ZXMuXG4gKiBSZWNlaXZlcyBhIHN0cmluZyB3aXRoIGVzNiAkey4uLn0gc3R5bGUgdGVtcGxhdGUgYXJndW1lbnRzIGFuZCByZXR1cm5zIGEgdHJhbnNmb3JtZWQgc3RyaW5nLlxuICogQHBhcmFtIHN0cmluZ1xuICogQHJldHVybnMge0Z1bmN0aW9ufVxuICovXG5mdW5jdGlvbiB0ZW1wbGF0ZShzdHJpbmdzLCAuLi5rZXlzKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICguLi52YWx1ZXMpIHtcbiAgICAgICAgY29uc3QgZGljdCA9IHZhbHVlc1t2YWx1ZXMubGVuZ3RoIC0gMV0gfHwge307XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtzdHJpbmdzWzBdXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXksIGkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gTnVtYmVyLmlzSW50ZWdlcihrZXkpID8gdmFsdWVzW2tleV0gOiBkaWN0W2tleV07XG4gICAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSwgc3RyaW5nc1tpICsgMV0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5qb2luKCcnKTtcbiAgICB9O1xufVxuLyoqXG4gKiBHZXQgdGhlIGxhc3QgZWxlbWVudCBpbiBhbiBhcnJheVxuICogQHBhcmFtIGFycmF5XG4gKiBAcmV0dXJucyB7Kn1cbiAqL1xuZnVuY3Rpb24gbGFzdChhcnJheSkge1xuICAgIHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAxXTtcbn1cbmV4cG9ydCB7IGxhc3QsIHRlbXBsYXRlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD11dGlscy5qcy5tYXAiLCJpbXBvcnQgeyBhbGlnblR5cGVzLCBhbGlnblR5cGVzTWFwLCBmaWxlVHlwZSwgZml0dGluZ1R5cGVzLCBpbWFnZVF1YWxpdHksIGltYWdlU2NhbGVEZWZhdWx0cywgdHJhbnNmb3JtVHlwZXMsIHVwc2NhbGVNZXRob2RzLCB1cHNjYWxlTWV0aG9kc1ZhbHVlcywgQUxJR05fVFlQRV9UT19GT0NBTF9QT0lOVCwgTUFYX0RFVklDRV9QSVhFTF9SQVRJTywgU1VQRVJfVVBTQ0FMRV9NT0RFTFMsIFNBRkVfVFJBTlNGT1JNRURfQVJFQSwgfSBmcm9tICcuL2ltYWdlU2VydmljZUNvbnN0YW50cyc7XG5pbXBvcnQgeyBsYXN0IH0gZnJvbSAnLi91dGlscyc7XG5jb25zdCBTVVBQT1JURURfSU1BR0VfRVhURU5TSU9OUyA9IFtcbiAgICBmaWxlVHlwZS5QTkcsXG4gICAgZmlsZVR5cGUuSlBFRyxcbiAgICBmaWxlVHlwZS5KUEcsXG4gICAgZmlsZVR5cGUuSlBFLFxuICAgIGZpbGVUeXBlLldJWF9JQ09fTVAsXG4gICAgZmlsZVR5cGUuV0lYX01QLFxuICAgIGZpbGVUeXBlLldFQlAsXG4gICAgZmlsZVR5cGUuQVZJRixcbl07XG5jb25zdCBKUEdfRVhURU5TSU9OUyA9IFtcbiAgICBmaWxlVHlwZS5KUEVHLFxuICAgIGZpbGVUeXBlLkpQRyxcbiAgICBmaWxlVHlwZS5KUEUsXG5dO1xuLyoqXG4gKiBjaGVja3MgaWYgaW1hZ2UgdHlwZSBpcyBzdXBwb3J0ZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSAgICAgdXJpICAgICAgaW1hZ2Ugc291cmNlIHVyaVxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc0ltYWdlVHlwZVN1cHBvcnRlZCh1cmkpIHtcbiAgICByZXR1cm4gU1VQUE9SVEVEX0lNQUdFX0VYVEVOU0lPTlMuaW5jbHVkZXMoZ2V0RmlsZUV4dGVuc2lvbih1cmkpKTtcbn1cbi8qKlxuICogY2hlY2sgcmVxdWVzdCBpbnRlZ3JpdHlcbiAqIEBwYXJhbSB7Rml0dGluZ1R5cGV9ICAgICAgICAgICAgIGZpdHRpbmdUeXBlICAgICAgICAgaW1hZ2VTZXJ2aWNlLmZpdHRpbmdUeXBlc1xuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybVNvdXJjZX0gICAgc3JjXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtVGFyZ2V0fSAgICB0YXJnZXRcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNWYWxpZFJlcXVlc3QoZml0dGluZ1R5cGUsIHNyYywgdGFyZ2V0KSB7XG4gICAgcmV0dXJuICh0YXJnZXQgJiZcbiAgICAgICAgc3JjICYmXG4gICAgICAgICFpc1VybEVtcHR5T3JOb25lKHNyYy5pZCkgJiZcbiAgICAgICAgT2JqZWN0LnZhbHVlcyhmaXR0aW5nVHlwZXMpLmluY2x1ZGVzKGZpdHRpbmdUeXBlKSk7XG59XG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiBhbmltYXRlZCBXZWJQL0FWSUYgaW1hZ2VzIGNhbiBiZSB0cmFuc2Zvcm1lZC5cbiAqIFRoZXNlIGZvcm1hdHMgY2FuIG9ubHkgYmUgdHJhbnNmb3JtZWQgd2hlbiBleHBsaWNpdGx5IGFsbG93ZWQgdmlhIGFsbG93QW5pbWF0ZWRUcmFuc2Zvcm0uXG4gKlxuICogQHBhcmFtIHVyaSAtIEltYWdlIFVSSSB0byBjaGVja1xuICogQHBhcmFtIGhhc0FuaW1hdGlvbiAtIFdoZXRoZXIgdGhlIGltYWdlIGhhcyBhbmltYXRpb24gbWV0YWRhdGFcbiAqIEBwYXJhbSBhbGxvd0FuaW1hdGVkVHJhbnNmb3JtIC0gV2hldGhlciBhbmltYXRlZCB0cmFuc2Zvcm1zIGFyZSBhbGxvd2VkICh1c2VkIGluIHBsYWNlaG9sZGVyIGZsb3cpXG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBpbWFnZSBjYW4gYmUgdHJhbnNmb3JtZWRcbiAqL1xuZnVuY3Rpb24gY2FuVHJhbnNmb3JtQW5pbWF0ZWRXZWJwT3JBdmlmKHVyaSwgaGFzQW5pbWF0aW9uLCBhbGxvd0FuaW1hdGVkVHJhbnNmb3JtKSB7XG4gICAgY29uc3QgaXNBdmlmV2VicEZvcm1hdCA9IGlzV0VCUCh1cmkpIHx8IGlzQVZJRih1cmkpO1xuICAgIGlmICghaXNBdmlmV2VicEZvcm1hdCB8fCAhaGFzQW5pbWF0aW9uKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gYWxsb3dBbmltYXRlZFRyYW5zZm9ybTtcbn1cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIGEgR0lGIGNhbiBiZSB0cmFuc2Zvcm1lZC5cbiAqIEdJRnMgY2FuIGJlIHRyYW5zZm9ybWVkIGluIHR3byBzY2VuYXJpb3M6XG4gKiAxLiBJbiBwbGFjZWhvbGRlciBmbG93IHdoZW4gYWxsb3dBbmltYXRlZFRyYW5zZm9ybSBpcyB0cnVlXG4gKiAyLiBJbiBub24tcGxhY2Vob2xkZXIgZmxvdyB3aGVuIGFsbG93RnVsbEdJRlRyYW5zZm9ybWF0aW9uIGlzIHRydWVcbiAqXG4gKiBAcGFyYW0gdXJpIC0gSW1hZ2UgVVJJIHRvIGNoZWNrXG4gKiBAcGFyYW0gYWxsb3dBbmltYXRlZFRyYW5zZm9ybSAtIFdoZXRoZXIgYW5pbWF0ZWQgdHJhbnNmb3JtcyBhcmUgYWxsb3dlZCAodXNlZCBpbiBwbGFjZWhvbGRlciBmbG93KVxuICogQHBhcmFtIGFsbG93RnVsbEdJRlRyYW5zZm9ybWF0aW9uIC0gV2hldGhlciBmdWxsIEdJRiB0cmFuc2Zvcm1hdGlvbiBpcyBhbGxvd2VkICh1c2VkIGluIG5vbi1wbGFjZWhvbGRlciBmbG93KVxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgR0lGIGNhbiBiZSB0cmFuc2Zvcm1lZFxuICovXG5mdW5jdGlvbiBjYW5UcmFuc2Zvcm1HSUYodXJpLCBhbGxvd0FuaW1hdGVkVHJhbnNmb3JtLCBhbGxvd0Z1bGxHSUZUcmFuc2Zvcm1hdGlvbikge1xuICAgIGlmICghaXNHSUYodXJpKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiAhIShhbGxvd0FuaW1hdGVkVHJhbnNmb3JtIHx8IGFsbG93RnVsbEdJRlRyYW5zZm9ybWF0aW9uKTtcbn1cbi8qKlxuICogQ2hlY2sgaWYgaW1hZ2UgdHJhbnNmb3JtIGlzIHN1cHBvcnRlZCBmb3Igc291cmNlIGltYWdlLlxuICogUmV0dXJucyB0cnVlIGlmOlxuICogLSBJbWFnZSBpcyBhIHN1cHBvcnRlZCB0eXBlIChQTkcsIEpQRUcsIFdlYlAsIEFWSUYsIGV0Yy4pLCBPUlxuICogLSBJbWFnZSBpcyBhIEdJRiB0aGF0IGNhbiBiZSB0cmFuc2Zvcm1lZCAoc2VlIGNhblRyYW5zZm9ybUdJRilcbiAqXG4gKiBAcGFyYW0gdXJpIC0gSW1hZ2UgVVJJIHRvIGNoZWNrXG4gKiBAcGFyYW0gaGFzQW5pbWF0aW9uIC0gV2hldGhlciB0aGUgaW1hZ2UgaGFzIGFuaW1hdGlvbiBtZXRhZGF0YVxuICogQHBhcmFtIGFsbG93QW5pbWF0ZWRUcmFuc2Zvcm0gLSBXaGV0aGVyIGFuaW1hdGVkIHRyYW5zZm9ybXMgYXJlIGFsbG93ZWQgKHVzZWQgaW4gcGxhY2Vob2xkZXIgZmxvdylcbiAqIEBwYXJhbSBhbGxvd0Z1bGxHSUZUcmFuc2Zvcm1hdGlvbiAtIFdoZXRoZXIgZnVsbCBHSUYgdHJhbnNmb3JtYXRpb24gaXMgYWxsb3dlZCAodXNlZCBpbiBub24tcGxhY2Vob2xkZXIgZmxvdylcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGltYWdlIGNhbiBiZSB0cmFuc2Zvcm1lZFxuICovXG5mdW5jdGlvbiBpc0ltYWdlVHJhbnNmb3JtQXBwbGljYWJsZSh1cmksIGhhc0FuaW1hdGlvbiwgYWxsb3dBbmltYXRlZFRyYW5zZm9ybSwgYWxsb3dGdWxsR0lGVHJhbnNmb3JtYXRpb24pIHtcbiAgICAvLyBFeHRlcm5hbCBVUkxzIGNhbm5vdCBiZSB0cmFuc2Zvcm1lZFxuICAgIGlmIChpc0V4dGVybmFsVXJsKHVyaSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBDaGVjayBpZiBhbmltYXRlZCB3ZWJwL2F2aWYgY2FuIGJlIHRyYW5zZm9ybWVkXG4gICAgaWYgKCFjYW5UcmFuc2Zvcm1BbmltYXRlZFdlYnBPckF2aWYodXJpLCBoYXNBbmltYXRpb24sIGFsbG93QW5pbWF0ZWRUcmFuc2Zvcm0pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gQ2hlY2sgaWYgaW1hZ2UgdHlwZSBpcyBzdXBwb3J0ZWQgb3IgaWYgaXQncyBhIHRyYW5zZm9ybWFibGUgR0lGXG4gICAgY29uc3QgaXNTdXBwb3J0ZWRJbWFnZVR5cGUgPSBpc0ltYWdlVHlwZVN1cHBvcnRlZCh1cmkpO1xuICAgIGNvbnN0IGlzVHJhbnNmb3JtYWJsZUdpZiA9IGNhblRyYW5zZm9ybUdJRih1cmksIGFsbG93QW5pbWF0ZWRUcmFuc2Zvcm0sIGFsbG93RnVsbEdJRlRyYW5zZm9ybWF0aW9uKTtcbiAgICByZXR1cm4gaXNTdXBwb3J0ZWRJbWFnZVR5cGUgfHwgaXNUcmFuc2Zvcm1hYmxlR2lmO1xufVxuLyoqXG4gKiByZXR1cm5zIHRydWUgaWYgaW1hZ2UgaXMgb2YgSlBHIHR5cGVcbiAqIEBwYXJhbSB7c3RyaW5nfSAgdXJpXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzSlBHKHVyaSkge1xuICAgIHJldHVybiBKUEdfRVhURU5TSU9OUy5pbmNsdWRlcyhnZXRGaWxlRXh0ZW5zaW9uKHVyaSkpO1xufVxuLyoqXG4gKiByZXR1cm5zIHRydWUgaWYgaW1hZ2UgaXMgb2YgUE5HIHR5cGVcbiAqIEBwYXJhbSB7c3RyaW5nfSAgdXJpXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzUE5HKHVyaSkge1xuICAgIHJldHVybiBnZXRGaWxlRXh0ZW5zaW9uKHVyaSkgPT09IGZpbGVUeXBlLlBORztcbn1cbi8qKlxuICogcmV0dXJucyB0cnVlIGlmIGltYWdlIGlzIG9mIHdlYlAgdHlwZVxuICogQHBhcmFtIHtzdHJpbmd9ICB1cmlcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNXRUJQKHVyaSkge1xuICAgIHJldHVybiBnZXRGaWxlRXh0ZW5zaW9uKHVyaSkgPT09IGZpbGVUeXBlLldFQlA7XG59XG4vKipcbiAqIHJldHVybnMgdHJ1ZSBpZiBpbWFnZSBpcyBvZiBHSUYgdHlwZVxuICogQHBhcmFtIHtzdHJpbmd9ICB1cmlcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNHSUYodXJpKSB7XG4gICAgcmV0dXJuIGdldEZpbGVFeHRlbnNpb24odXJpKSA9PT0gZmlsZVR5cGUuR0lGO1xufVxuLyoqXG4gKiByZXR1cm5zIHRydWUgaWYgaW1hZ2UgaXMgb2Ygd2ViUCB0eXBlXG4gKiBAcGFyYW0ge3N0cmluZ30gIHVyaVxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc0FWSUYodXJpKSB7XG4gICAgcmV0dXJuIGdldEZpbGVFeHRlbnNpb24odXJpKSA9PT0gZmlsZVR5cGUuQVZJRjtcbn1cbi8qKlxuICogcmV0dXJucyB0cnVlIGlmIHRoZSB1cmwgc3RhcnRzIHdpdGggaHR0cCwgaHR0cHMsIC8vIG9yIGRhdGFcbiAqIEBwYXJhbSB7c3RyaW5nfSAgdXJsXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzRXh0ZXJuYWxVcmwodXJsKSB7XG4gICAgcmV0dXJuIC8oXmh0dHBzPyl8KF5kYXRhKXwoXlxcL1xcLykvLnRlc3QodXJsKTtcbn1cbi8qKlxuICogcmV0dXJucyB0cnVlIGlmIHRoZSB1cmwgZW1wdHkgb3Igbm9uZSBzdHJpbmdcbiAqIEBwYXJhbSB7c3RyaW5nfSAgdXJsXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzVXJsRW1wdHlPck5vbmUodXJsKSB7XG4gICAgcmV0dXJuICF1cmwgfHwgIXVybC50cmltKCkgfHwgdXJsLnRvTG93ZXJDYXNlKCkgPT09ICdub25lJztcbn1cbi8qKlxuICogcmV0dXJucyBzZWFyY2ggYm90IHRydWUgb3IgZmFsc2UgYXMgaW5kaWNhdGVkIGluIG9wdGlvbnNcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1PcHRpb25zfSAgIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNTRU9Cb3Qob3B0aW9ucykge1xuICAgIHJldHVybiBvcHRpb25zPy5pc1NFT0JvdCA/PyBmYWxzZTtcbn1cbi8vIGh0dHBzOi8vamlyYS53aXhwcmVzcy5jb20vYnJvd3NlL1dFRUQtMTI2Njdcbi8vIGNvbnN0IGlsbGVnYWxDaGFycyA9IFsnLycsICdcXFxcJywgJyMnLCAnXicsICc/JywgJ3snLCAnfScsICc8JywgJz4nLCAnfCcsICdgJywgJ+KAnCcsICc6JywgJ1wiJ10ubWFwKGVuY29kZVVSSUNvbXBvbmVudClcbmNvbnN0IElMTEVHQUxfQ0hBUlMgPSBbJy8nLCAnXFxcXCcsICc/JywgJzwnLCAnPicsICd8JywgJ+KAnCcsICc6JywgJ1wiJ10ubWFwKGVuY29kZVVSSUNvbXBvbmVudCk7XG5jb25zdCBVUkxfU0FGRV9JTExFR0FMX0NIQVJTID0gWydcXFxcLicsICdcXFxcKiddO1xuY29uc3QgSUxMRUdBTF9DSEFSU19SRVBMQUNFTUVOVCA9ICdfJztcbi8qKlxuICogcmV0dXJucyBzb3VyY2UgaW1hZ2UgZmlsZSBuYW1lIChubyBleHRlbnNpb24pXG4gKiBAcGFyYW0ge3N0cmluZ30gICAgIHVyaSAgICAgIGltYWdlIHNvdXJjZSB1cmlcbiAqIEBwYXJhbSB7c3RyaW5nfSAgICAgW25hbWVdICAgb3B0aW9uYWwgaW1hZ2Ugc291cmNlIG5hbWVcbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBnZXRGaWxlTmFtZSh1cmksIG5hbWUpIHtcbiAgICBjb25zdCBiZWZvcmVMZWFkaW5nU2xhc2hSZWdleHAgPSAvXFwvKC4qPykkLztcbiAgICBjb25zdCBmaWxlRXh0ZW5zaW9uUmVnZXhwID0gL1xcLihbXi5dKikkLztcbiAgICBjb25zdCBpbGxlZ2FsQ2hhcnNSZWdleCA9IG5ldyBSZWdFeHAoYCgke0lMTEVHQUxfQ0hBUlMuY29uY2F0KFVSTF9TQUZFX0lMTEVHQUxfQ0hBUlMpLmpvaW4oJ3wnKX0pYCwgJ2cnKTtcbiAgICAvLyBpZiBuYW1lIGlzIGEgbm9uIGVtcHR5IHN0cmluZywgcmVtb3ZlIG9ubHkgc3VwcG9ydGVkIGV4dGVuc2lvbiBpZiBleGlzdHMgYW5kIHVybCBlbmNvZGUgdGhlIHN0cmluZ1xuICAgIGlmIChuYW1lICYmIG5hbWUubGVuZ3RoKSB7XG4gICAgICAgIGxldCBmaWxlTmFtZSA9IG5hbWU7XG4gICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IG5hbWUubWF0Y2goZmlsZUV4dGVuc2lvblJlZ2V4cCk7XG4gICAgICAgIGlmIChleHRlbnNpb24gJiZcbiAgICAgICAgICAgIFNVUFBPUlRFRF9JTUFHRV9FWFRFTlNJT05TLmluY2x1ZGVzKGV4dGVuc2lvblsxXSkpIHtcbiAgICAgICAgICAgIGZpbGVOYW1lID0gbmFtZS5yZXBsYWNlKGZpbGVFeHRlbnNpb25SZWdleHAsICcnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGZpbGVOYW1lKS5yZXBsYWNlKGlsbGVnYWxDaGFyc1JlZ2V4LCBJTExFR0FMX0NIQVJTX1JFUExBQ0VNRU5UKTtcbiAgICB9XG4gICAgLy8gZWxzZSwgdHJpbSBhbnkgcHJlY2VkaW5nIG1lZGlhIHN0cnVjdHVyZSBmcm9tIHRoZSB1cmkgc3RyaW5nIChsaWtlIFwibWVkaWEvXCIgZXRjLikgYW5kIHJlbW92ZSBleHRlbnNpb25cbiAgICBjb25zdCB0cmltbWVkID0gdXJpLm1hdGNoKGJlZm9yZUxlYWRpbmdTbGFzaFJlZ2V4cCk7XG4gICAgY29uc3QgZmlsZU5hbWUgPSB0cmltbWVkID8gdHJpbW1lZFsxXSA6IHVyaTtcbiAgICByZXR1cm4gZmlsZU5hbWUucmVwbGFjZShmaWxlRXh0ZW5zaW9uUmVnZXhwLCAnJyk7XG59XG4vKipcbiAqIHJldHVybnMgc291cmNlIGltYWdlIGZpbGUgbmFtZSAobm8gZXh0ZW5zaW9uKVxuICogQHBhcmFtIHtzdHJpbmd9ICAgICB1cmkgICAgICBpbWFnZSBzb3VyY2UgdXJpXG4gKlxuICogQHJldHVybnMge0ZpbGVUeXBlfVxuICovXG5mdW5jdGlvbiBnZXRGaWxlVHlwZSh1cmkpIHtcbiAgICBpZiAoaXNKUEcodXJpKSkge1xuICAgICAgICByZXR1cm4gZmlsZVR5cGUuSlBHO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc1BORyh1cmkpKSB7XG4gICAgICAgIHJldHVybiBmaWxlVHlwZS5QTkc7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzV0VCUCh1cmkpKSB7XG4gICAgICAgIHJldHVybiBmaWxlVHlwZS5XRUJQO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc0dJRih1cmkpKSB7XG4gICAgICAgIHJldHVybiBmaWxlVHlwZS5HSUY7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzQVZJRih1cmkpKSB7XG4gICAgICAgIHJldHVybiBmaWxlVHlwZS5BVklGO1xuICAgIH1cbiAgICByZXR1cm4gZmlsZVR5cGUuVU5SRUNPR05JWkVEO1xufVxuLyoqXG4gKiByZXR1cm5zIHNvdXJjZSBpbWFnZSBmaWxlIGV4dGVuc2lvblxuICogQHBhcmFtIHtzdHJpbmd9ICAgICB1cmkgICAgICBpbWFnZSBzb3VyY2UgdXJpXG4gKlxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZ2V0RmlsZUV4dGVuc2lvbih1cmkpIHtcbiAgICBjb25zdCBzcGxpdFVSSSA9IC9bLl0oW14uXSspJC8uZXhlYyh1cmkpO1xuICAgIHJldHVybiAoKHNwbGl0VVJJICYmIC9bLl0oW14uXSspJC8uZXhlYyh1cmkpWzFdKSB8fCAnJykudG9Mb3dlckNhc2UoKTtcbn1cbi8qKlxuICogcmV0dXJucyBzY2FsZSBmYWN0b3IgbmVlZGVkIGlmIEZJVCBmaXR0aW5nXG4gKiBAcGFyYW0ge251bWJlcn0gIHNXaWR0aFxuICogQHBhcmFtIHtudW1iZXJ9ICBzSGVpZ2h0XG4gKiBAcGFyYW0ge251bWJlcn0gIGRXaWR0aFxuICogQHBhcmFtIHtudW1iZXJ9ICBkSGVpZ2h0XG4gKlxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZnVuY3Rpb24gZ2V0Rml0U2NhbGVGYWN0b3Ioc1dpZHRoLCBzSGVpZ2h0LCBkV2lkdGgsIGRIZWlnaHQpIHtcbiAgICByZXR1cm4gTWF0aC5taW4oZFdpZHRoIC8gc1dpZHRoLCBkSGVpZ2h0IC8gc0hlaWdodCk7XG59XG4vKipcbiAqIHJldHVybnMgc2NhbGUgZmFjdG9yIG5lZWRlZCBpZiBGSUxMIGZpdHRpbmdcbiAqIEBwYXJhbSB7bnVtYmVyfSAgc1dpZHRoXG4gKiBAcGFyYW0ge251bWJlcn0gIHNIZWlnaHRcbiAqIEBwYXJhbSB7bnVtYmVyfSAgZFdpZHRoXG4gKiBAcGFyYW0ge251bWJlcn0gIGRIZWlnaHRcbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5mdW5jdGlvbiBnZXRGaWxsU2NhbGVGYWN0b3Ioc1dpZHRoLCBzSGVpZ2h0LCBkV2lkdGgsIGRIZWlnaHQpIHtcbiAgICByZXR1cm4gTWF0aC5tYXgoZFdpZHRoIC8gc1dpZHRoLCBkSGVpZ2h0IC8gc0hlaWdodCk7XG59XG4vKipcbiAqIHJldHVybnMgc2NhbGUgZmFjdG9yIHNvdXJjZSB0YXJnZXRcbiAqIEBwYXJhbSB7bnVtYmVyfSAgc1dpZHRoXG4gKiBAcGFyYW0ge251bWJlcn0gIHNIZWlnaHRcbiAqIEBwYXJhbSB7bnVtYmVyfSAgZFdpZHRoXG4gKiBAcGFyYW0ge251bWJlcn0gIGRIZWlnaHRcbiAqIEBwYXJhbSB7c3RyaW5nfSAgdHJhbnNmb3JtVHlwZVxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9XG4gKi9cbmZ1bmN0aW9uIGdldFNjYWxlRmFjdG9yKHNXaWR0aCwgc0hlaWdodCwgZFdpZHRoLCBkSGVpZ2h0LCB0cmFuc2Zvcm1UeXBlKSB7XG4gICAgbGV0IHNjYWxlRmFjdG9yO1xuICAgIGlmICh0cmFuc2Zvcm1UeXBlID09PSB0cmFuc2Zvcm1UeXBlcy5GSUxMKSB7XG4gICAgICAgIHNjYWxlRmFjdG9yID0gZ2V0RmlsbFNjYWxlRmFjdG9yKHNXaWR0aCwgc0hlaWdodCwgZFdpZHRoLCBkSGVpZ2h0KTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHJhbnNmb3JtVHlwZSA9PT0gdHJhbnNmb3JtVHlwZXMuRklUKSB7XG4gICAgICAgIHNjYWxlRmFjdG9yID0gZ2V0Rml0U2NhbGVGYWN0b3Ioc1dpZHRoLCBzSGVpZ2h0LCBkV2lkdGgsIGRIZWlnaHQpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgc2NhbGVGYWN0b3IgPSAxO1xuICAgIH1cbiAgICByZXR1cm4gc2NhbGVGYWN0b3I7XG59XG4vKipcbiAqIGdldCBjYWxjdWxhdGVkIHNjYWxlIGZhY3RvciAsIHdpZHRoIGFuZCBoZWlnaHQgd2hpbGUgY29uc2lkZXJpbmcgd2l4bXAgaW1hZ2UgdHJhbnNmb3JtIGRpbWVuc2lvbiBsaW1pdHNcbiAqIEBwYXJhbSBzV2lkdGhcbiAqIEBwYXJhbSBzSGVpZ2h0XG4gKiBAcGFyYW0gZFdpZHRoXG4gKiBAcGFyYW0gZEhlaWdodFxuICogQHBhcmFtIHRyYW5zZm9ybVR5cGVcbiAqIEByZXR1cm5zIHt7c2NhbGVGYWN0b3I6ICosIHdpZHRoOiAqLCBoZWlnaHQ6ICp9fVxuICovXG5mdW5jdGlvbiBnZXRTYWZlVHJhbnNmb3JtRGF0YShzV2lkdGgsIHNIZWlnaHQsIGRXaWR0aCwgZEhlaWdodCwgdHJhbnNmb3JtVHlwZSkge1xuICAgIGxldCBzY2FsZUZhY3RvcjtcbiAgICAvLyBkZWZhdWx0cyBmb3IgRklMTCB0cmFuc2Zvcm0gdHlwZVxuICAgIGxldCB3aWR0aCA9IGRXaWR0aDtcbiAgICBsZXQgaGVpZ2h0ID0gZEhlaWdodDtcbiAgICAvLyBjYWxjdWxhdGUgc2FmZSBpbWFnZSB0cmFuc2Zvcm1lZCBhcmVhXG4gICAgc2NhbGVGYWN0b3IgPSBnZXRTY2FsZUZhY3RvcihzV2lkdGgsIHNIZWlnaHQsIGRXaWR0aCwgZEhlaWdodCwgdHJhbnNmb3JtVHlwZSk7XG4gICAgaWYgKHRyYW5zZm9ybVR5cGUgPT09IHRyYW5zZm9ybVR5cGVzLkZJVCkge1xuICAgICAgICB3aWR0aCA9IHNXaWR0aCAqIHNjYWxlRmFjdG9yO1xuICAgICAgICBoZWlnaHQgPSBzSGVpZ2h0ICogc2NhbGVGYWN0b3I7XG4gICAgfVxuICAgIC8vIGFkanVzdCB0YXJnZXQgd2lkdGggJiBoZWlnaHQgJiBzY2FsZUZhY3RvclxuICAgIGlmICh3aWR0aCAmJiBoZWlnaHQgJiYgd2lkdGggKiBoZWlnaHQgPiBTQUZFX1RSQU5TRk9STUVEX0FSRUEpIHtcbiAgICAgICAgY29uc3QgZGltZW5zaW9uU2NhbGVGYWN0b3IgPSBNYXRoLnNxcnQoU0FGRV9UUkFOU0ZPUk1FRF9BUkVBIC8gKHdpZHRoICogaGVpZ2h0KSk7XG4gICAgICAgIHdpZHRoICo9IGRpbWVuc2lvblNjYWxlRmFjdG9yO1xuICAgICAgICBoZWlnaHQgKj0gZGltZW5zaW9uU2NhbGVGYWN0b3I7XG4gICAgICAgIC8vIGdldCB0aGUgbmV3IHNjYWxlIGZhY3RvclxuICAgICAgICBzY2FsZUZhY3RvciA9IGdldFNjYWxlRmFjdG9yKHNXaWR0aCwgc0hlaWdodCwgd2lkdGgsIGhlaWdodCwgdHJhbnNmb3JtVHlwZSk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHNjYWxlRmFjdG9yLFxuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0LFxuICAgIH07XG59XG4vKipcbiAqIHJldHVybnMgdGhlIGRlc3RpbmF0aW9uIHJlY3RhbmdsZVxuICogQHBhcmFtIHtudW1iZXJ9ICAgICAgICAgICAgICAgICAgc1dpZHRoXG4gKiBAcGFyYW0ge251bWJlcn0gICAgICAgICAgICAgICAgICBzSGVpZ2h0XG4gKiBAcGFyYW0ge1RyYW5zZm9ybVR5cGV9ICAgICAgICAgICB0cmFuc2Zvcm1UeXBlXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtVGFyZ2V0fSAgICB0YXJnZXRcbiAqIEBwYXJhbSB7bnVtYmVyfSAgICAgICAgICAgICAgICAgIGRwciAtIGRldmljZSBwaXhlbCByYXRpb1xuICogQHBhcmFtIHtVcHNjYWxlTWV0aG9kfSAgICAgICAgICAgdXBzY2FsZU1ldGhvZFxuICpcbiAqIEByZXR1cm5zIHtJbWFnZVRyYW5zZm9ybURhdGEgJiB7dXBzY2FsZU1ldGhvZFZhbHVlOiBudW1iZXJ9fVxuICovXG5mdW5jdGlvbiBnZXRUcmFuc2Zvcm1EYXRhKHNXaWR0aCwgc0hlaWdodCwgdHJhbnNmb3JtVHlwZSwgdGFyZ2V0LCBkcHIsIHVwc2NhbGVNZXRob2QpIHtcbiAgICAvLyB1c2UgdGFyZ2V0IGRpbWVuc2lvbiBpcyBzcmMgbm90IHByb3ZpZGVkXG4gICAgc1dpZHRoID0gc1dpZHRoIHx8IHRhcmdldC53aWR0aDtcbiAgICBzSGVpZ2h0ID0gc0hlaWdodCB8fCB0YXJnZXQuaGVpZ2h0O1xuICAgIC8vIGFkanVzdCBpbWFnZSB0cmFuc2Zvcm0gdmFsdWVzIGNvbnNpZGVyaW5nIHNlcnZlciBzaWRlIHRyYW5zZm9ybSBsaW1pdGF0aW9ucyBhbmQgcGVyZm9ybWFuY2VcbiAgICBjb25zdCB7IHNjYWxlRmFjdG9yLCB3aWR0aCwgaGVpZ2h0IH0gPSBnZXRTYWZlVHJhbnNmb3JtRGF0YShzV2lkdGgsIHNIZWlnaHQsIHRhcmdldC53aWR0aCAqIGRwciwgdGFyZ2V0LmhlaWdodCAqIGRwciwgdHJhbnNmb3JtVHlwZSk7XG4gICAgLy8gYWRqdXN0IGltYWdlIHRyYW5zZm9ybSB2YWx1ZXMgdG8gb3B0aW1pemluZyB1cHNhY2xlIHF1YWxpdHkgYW5kIHBheWxvYWRcbiAgICByZXR1cm4gZ2V0T3B0aW1pemVkVHJhbnNmb3JtRGF0YShzV2lkdGgsIHNIZWlnaHQsIHdpZHRoLCBoZWlnaHQsIHVwc2NhbGVNZXRob2QsIHNjYWxlRmFjdG9yLCB0cmFuc2Zvcm1UeXBlKTtcbn1cbi8qKlxuICogY29udmVydHMgOSBncmlkIGFsaWdubWVudCB0byBGb2NhbCBwb2ludCBwb3NpdGlvblxuICogQHBhcmFtIHtzdHJpbmd9ICBbYWxpZ25tZW50XVxuICpcbiAqIEByZXR1cm5zIHt4Om51bWJlcix5Om51bWJlcn1cbiAqL1xuZnVuY3Rpb24gZ2V0Rm9jYWxQb2ludEZyb205R3JpZEFsaWdubWVudChhbGlnbm1lbnQgPSBhbGlnblR5cGVzLkNFTlRFUikge1xuICAgIHJldHVybiBBTElHTl9UWVBFX1RPX0ZPQ0FMX1BPSU5UW2FsaWdubWVudF07XG59XG4vKipcbiAqIHJldHVybnMgb3ZlcmxhcHBpbmcgcmVjdGFuZ2xlIHdoZXJlIHNSZWN0XG4gKiBpZCBhbGlnbmVkIChhY2NvcmRpbmcgdG8gYWxpZ25tZW50KSB3aXRoaW4gZFJlY3RcbiAqIEBwYXJhbSB7eyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9fSBzUmVjdCByZWN0IDFcbiAqIEBwYXJhbSB7eyB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciB9fSBkUmVjdCByZWN0IDJcbiAqIEBwYXJhbSB7e3g6IG51bWJlciwgeTogbnVtYmVyfXx1bmRlZmluZWR9ICBzRlAgICBzb3VyY2UgaW1hZ2UgZm9jYWwgcG9pbnRcbiAqIEBwYXJhbSB7c3RyaW5nfSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbm1lbnRcbiAqXG4gKiBAcmV0dXJucyB7e3g6IG51bWJlciwgeTogbnVtYmVyLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcn19XG4gKi9cbmZ1bmN0aW9uIGdldEFsaWduZWRSZWN0KHNSZWN0LCBkUmVjdCwgc0ZQLCBhbGlnbm1lbnQpIHtcbiAgICBjb25zdCBmcCA9IGdldEZvY2FsUG9pbnQoc0ZQKSB8fFxuICAgICAgICBnZXRGb2NhbFBvaW50RnJvbTlHcmlkQWxpZ25tZW50KGFsaWdubWVudCk7XG4gICAgY29uc3QgeCA9IE1hdGgubWF4KDAsIE1hdGgubWluKHNSZWN0LndpZHRoIC0gZFJlY3Qud2lkdGgsIGZwLnggKiBzUmVjdC53aWR0aCAtIGRSZWN0LndpZHRoIC8gMikpO1xuICAgIGNvbnN0IHkgPSBNYXRoLm1heCgwLCBNYXRoLm1pbihzUmVjdC5oZWlnaHQgLSBkUmVjdC5oZWlnaHQsIGZwLnkgKiBzUmVjdC5oZWlnaHQgLSBkUmVjdC5oZWlnaHQgLyAyKSk7XG4gICAgLy8gcmVjdFxuICAgIHJldHVybiB7XG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHdpZHRoOiBNYXRoLm1pbihzUmVjdC53aWR0aCwgZFJlY3Qud2lkdGgpLFxuICAgICAgICBoZWlnaHQ6IE1hdGgubWluKHNSZWN0LmhlaWdodCwgZFJlY3QuaGVpZ2h0KSxcbiAgICB9O1xufVxuLyoqXG4gKiByZXR1cm5zIG92ZXJsYXBwaW5nIHJlY3RhbmdsZSBiZXR3ZWVuIHNSZWN0IGFuZCBkUmVjdFxuICogQHBhcmFtIHtvYmplY3R9ICAgICAgc1JlY3QgICAgICAgICByZWN0IDFcbiAqIEBwYXJhbSB7b2JqZWN0fSAgICAgIGRSZWN0ICAgICAgICAgcmVjdCAyXG4gKlxuICogQHJldHVybnMge3t4Om51bWJlcix5Om51bWJlcix3aWR0aDpudW1iZXIsIGhlaWdodDpudW1iZXJ9IHx8IG51bGx9XG4gKi9cbmZ1bmN0aW9uIGdldE92ZXJsYXBwaW5nUmVjdChzUmVjdCwgZFJlY3QpIHtcbiAgICBjb25zdCB3aWR0aCA9IE1hdGgubWF4KDAsIE1hdGgubWluKHNSZWN0LndpZHRoLCBkUmVjdC54ICsgZFJlY3Qud2lkdGgpIC0gTWF0aC5tYXgoMCwgZFJlY3QueCkpO1xuICAgIGNvbnN0IGhlaWdodCA9IE1hdGgubWF4KDAsIE1hdGgubWluKHNSZWN0LmhlaWdodCwgZFJlY3QueSArIGRSZWN0LmhlaWdodCkgLSBNYXRoLm1heCgwLCBkUmVjdC55KSk7XG4gICAgY29uc3QgaXNWYWxpZFJlY3QgPSB3aWR0aCAmJiBoZWlnaHQgJiYgKHNSZWN0LndpZHRoICE9PSB3aWR0aCB8fCBzUmVjdC5oZWlnaHQgIT09IGhlaWdodCk7XG4gICAgLy8gcmV0dXJuIG92ZXJsYXBwaW5nIHNSZWN0L2RSZWN0IHJlY3RhbmdsZSh4LCB5LCB3aWR0aCwgaGVpZ2h0KVxuICAgIHJldHVybiBpc1ZhbGlkUmVjdFxuICAgICAgICA/IHtcbiAgICAgICAgICAgIHg6IE1hdGgubWF4KDAsIGRSZWN0LngpLFxuICAgICAgICAgICAgeTogTWF0aC5tYXgoMCwgZFJlY3QueSksXG4gICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgfVxuICAgICAgICA6IG51bGw7XG59XG4vKipcbiAqIHJldHVybnMgcGl4ZWwgYXNwZWN0IHJhdGlvIHZhbHVlXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtVGFyZ2V0fSAgICB0YXJnZXRcbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5mdW5jdGlvbiBnZXREZXZpY2VQaXhlbFJhdGlvKHRhcmdldCkge1xuICAgIHJldHVybiBNYXRoLm1pbih0YXJnZXQucGl4ZWxBc3BlY3RSYXRpbyB8fCAxLCBNQVhfREVWSUNFX1BJWEVMX1JBVElPKTtcbn1cbi8qKlxuICogcmV0dXJucyB0YXJnZXQgYWxpZ25tZW50IHZhbHVlXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtVGFyZ2V0fSAgICB0YXJnZXRcbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBnZXRBbGlnbm1lbnQodGFyZ2V0KSB7XG4gICAgcmV0dXJuICgodGFyZ2V0LmFsaWdubWVudCAmJiBhbGlnblR5cGVzTWFwW3RhcmdldC5hbGlnbm1lbnRdKSB8fFxuICAgICAgICBhbGlnblR5cGVzTWFwW2FsaWduVHlwZXMuQ0VOVEVSXSk7XG59XG4vKipcbiAqIHJldHVybnMgdGhlIGZvY2FsIHBvaW50IHZhbHVlLCBpZiBubyBmb2NhbCBwb2ludCBwYXNzZWQgdXNlIGFsaWdubWVudFxuICogQHBhcmFtIHt7eDogbnVtYmVyLCB5OiBudW1iZXJ9fHVuZGVmaW5lZH0gZm9jYWxQb2ludFxuICovXG5mdW5jdGlvbiBnZXRGb2NhbFBvaW50KGZvY2FsUG9pbnQpIHtcbiAgICBsZXQgZnA7XG4gICAgaWYgKGZvY2FsUG9pbnQgJiZcbiAgICAgICAgdHlwZW9mIGZvY2FsUG9pbnQueCA9PT0gJ251bWJlcicgJiZcbiAgICAgICAgIWlzTmFOKGZvY2FsUG9pbnQueCkgJiZcbiAgICAgICAgdHlwZW9mIGZvY2FsUG9pbnQueSA9PT0gJ251bWJlcicgJiZcbiAgICAgICAgIWlzTmFOKGZvY2FsUG9pbnQueSkpIHtcbiAgICAgICAgZnAgPSB7XG4gICAgICAgICAgICB4OiByb3VuZFRvRml4ZWQoTWF0aC5tYXgoMCwgTWF0aC5taW4oMTAwLCBmb2NhbFBvaW50LngpKSAvIDEwMCwgMiksXG4gICAgICAgICAgICB5OiByb3VuZFRvRml4ZWQoTWF0aC5tYXgoMCwgTWF0aC5taW4oMTAwLCBmb2NhbFBvaW50LnkpKSAvIDEwMCwgMiksXG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBmcDtcbn1cbi8qKlxuICogcmV0dXJucyBwcmVmZXJyZWQgaW1hZ2UgcXVhbGl0eSB2YWx1ZVxuICogQHBhcmFtIHtudW1iZXJ9ICAgIGltYWdlV2lkdGhcbiAqIEBwYXJhbSB7bnVtYmVyfSAgICBpbWFnZUhlaWdodFxuICpcbiAqIEByZXR1cm5zIHtudW1iZXJ9XG4gKi9cbmZ1bmN0aW9uIGdldFByZWZlcnJlZEltYWdlUXVhbGl0eShpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCkge1xuICAgIHJldHVybiBpbWFnZVNjYWxlRGVmYXVsdHNbZ2V0SW1hZ2VRdWFsaXR5S2V5KGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0KV1cbiAgICAgICAgLnF1YWxpdHk7XG59XG4vKipcbiAqIHJldHVybnMgdGhlIHNjYWxlIGRlc2NyaXB0b3Igb2YgQ0xBU1NJQyB1cHNjYWxlIG1ldGhvZFxuICogQHBhcmFtIHNXaWR0aFxuICogQHBhcmFtIHNIZWlnaHRcbiAqIEByZXR1cm5zIHt7b3B0aW1pemVkU2NhbGVGYWN0b3I6IG51bWJlciwgdXBzY2FsZU1ldGhvZFZhbHVlOiBudW1iZXIsIGZvcmNlVVNNOiBib29sZWFufX1cbiAqL1xuZnVuY3Rpb24gZ2V0Q2xhc3NpY1NjYWxlRGF0YShzV2lkdGgsIHNIZWlnaHQpIHtcbiAgICBjb25zdCBpbWFnZUtleSA9IGdldEltYWdlUXVhbGl0eUtleShzV2lkdGgsIHNIZWlnaHQpO1xuICAgIHJldHVybiB7XG4gICAgICAgIG9wdGltaXplZFNjYWxlRmFjdG9yOiBpbWFnZVNjYWxlRGVmYXVsdHNbaW1hZ2VLZXldLm1heFVwc2NhbGUsXG4gICAgICAgIHVwc2NhbGVNZXRob2RWYWx1ZTogdXBzY2FsZU1ldGhvZHNWYWx1ZXMuY2xhc3NpYyxcbiAgICAgICAgZm9yY2VVU006IGZhbHNlLFxuICAgIH07XG59XG4vKipcbiAqIHJldHVybnMgdGhlIHNjYWxlIGRlc2NyaXB0b3Igb2YgQVVUTyB1cHNjYWxlIG1ldGhvZFxuICogQHBhcmFtIHNXaWR0aFxuICogQHBhcmFtIHNIZWlnaHRcbiAqIEByZXR1cm5zIHt7b3B0aW1pemVkU2NhbGVGYWN0b3I6IG51bWJlciwgdXBzY2FsZU1ldGhvZFZhbHVlOiBudW1iZXIsIGZvcmNlVVNNOiBib29sZWFufX1cbiAqL1xuZnVuY3Rpb24gZ2V0QXV0b1NjYWxlRGF0YShzV2lkdGgsIHNIZWlnaHQpIHtcbiAgICBjb25zdCBpbWFnZUtleSA9IGdldEltYWdlUXVhbGl0eUtleShzV2lkdGgsIHNIZWlnaHQpO1xuICAgIHJldHVybiB7XG4gICAgICAgIG9wdGltaXplZFNjYWxlRmFjdG9yOiBpbWFnZVNjYWxlRGVmYXVsdHNbaW1hZ2VLZXldLm1heFVwc2NhbGUsXG4gICAgICAgIHVwc2NhbGVNZXRob2RWYWx1ZTogdXBzY2FsZU1ldGhvZHNWYWx1ZXMuY2xhc3NpYyxcbiAgICAgICAgZm9yY2VVU006IGZhbHNlLFxuICAgIH07XG59XG4vKipcbiAqIHJldHVybnMgdGhlIHNjYWxlIGRlc2NyaXB0b3Igb2YgU1VQRVIgdXBzY2FsZSBtZXRob2RcbiAqIEBwYXJhbSBzY2FsZUZhY3RvclxuICogQHJldHVybnMge3tvcHRpbWl6ZWRTY2FsZUZhY3RvcjogbnVtYmVyLCB1cHNjYWxlTWV0aG9kVmFsdWU6IG51bWJlciwgZm9yY2VVU006IGJvb2xlYW59fVxuICovXG5mdW5jdGlvbiBnZXRTdXBlclNjYWxlRGF0YShzY2FsZUZhY3Rvcikge1xuICAgIHJldHVybiB7XG4gICAgICAgIG9wdGltaXplZFNjYWxlRmFjdG9yOiBsYXN0KFNVUEVSX1VQU0NBTEVfTU9ERUxTKSxcbiAgICAgICAgdXBzY2FsZU1ldGhvZFZhbHVlOiB1cHNjYWxlTWV0aG9kc1ZhbHVlcy5zdXBlcixcbiAgICAgICAgZm9yY2VVU006ICEoU1VQRVJfVVBTQ0FMRV9NT0RFTFMuaW5jbHVkZXMoc2NhbGVGYWN0b3IpIHx8XG4gICAgICAgICAgICBzY2FsZUZhY3RvciA+IGxhc3QoU1VQRVJfVVBTQ0FMRV9NT0RFTFMpKSxcbiAgICB9O1xufVxuLyoqXG4gKiByZXR1cm5zIHVwc2NhbGUgZGVzY3JpcHRvciBvYmplY3RcbiAqIEBwYXJhbSB7bnVtYmVyfSAgICBzV2lkdGhcbiAqIEBwYXJhbSB7bnVtYmVyfSAgICBzSGVpZ2h0XG4gKiBAcGFyYW0ge3N0cmluZ30gICAgdXBzY2FsZU1ldGhvZFxuICogQHBhcmFtIHtudW1iZXJ9ICAgIHNjYWxlRmFjdG9yXG4gKlxuICogQHJldHVybnMgIHt7bWF4U2NhbGU6IG51bWJlciwgdXBzY2FsZU1ldGhvZFZhbHVlOiBudW1iZXIsIGZvcmNlVVNNOiBib29sZWFufX1cbiAqL1xuZnVuY3Rpb24gZ2V0T3B0aW1pemVkU2NhbGVEYXRhKHNXaWR0aCwgc0hlaWdodCwgc2NhbGVGYWN0b3IsIHVwc2NhbGVNZXRob2QpIHtcbiAgICBpZiAodXBzY2FsZU1ldGhvZCA9PT0gJ2F1dG8nKSB7XG4gICAgICAgIHJldHVybiBnZXRBdXRvU2NhbGVEYXRhKHNXaWR0aCwgc0hlaWdodCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHVwc2NhbGVNZXRob2QgPT09ICdzdXBlcicpIHtcbiAgICAgICAgcmV0dXJuIGdldFN1cGVyU2NhbGVEYXRhKHNjYWxlRmFjdG9yKTtcbiAgICB9XG4gICAgLy8gYXNzdW1pbmcgJ2NsYXNzaWMnIG1ldGhvZFxuICAgIHJldHVybiBnZXRDbGFzc2ljU2NhbGVEYXRhKHNXaWR0aCwgc0hlaWdodCk7XG59XG4vKipcbiAqIHJldHVybnMgb3B0aW1pemVkIHVwc2NhbGUgZGF0YSwgY29uc2lkZXJpbmcgcmVxdWVzdGVkIHVwc2NhbGUgbWV0aG9kICwgb3B0aW1pemUgdXBzY2FsZSBmb3IgYmVzdCBxdWFsaXR5IGFuZCBiYW5kd2lkdGhcbiAqIEBwYXJhbSB7bnVtYmVyfSAgICBzV2lkdGhcbiAqIEBwYXJhbSB7bnVtYmVyfSAgICBzSGVpZ2h0XG4gKiBAcGFyYW0ge251bWJlcn0gICAgdFdpZHRoXG4gKiBAcGFyYW0ge251bWJlcn0gICAgdEhlaWdodFxuICogQHBhcmFtIHtVcHNjYWxlTWV0aG9kfSAgICB1cHNjYWxlTWV0aG9kXG4gKiBAcGFyYW0ge251bWJlcn0gICAgc2NhbGVGYWN0b3JcbiAqIEBwYXJhbSB7VHJhbnNmb3JtVHlwZX0gICAgdHJhbnNmb3JtVHlwZVxuICpcbiAqIEByZXR1cm5zICB7SW1hZ2VUcmFuc2Zvcm1EYXRhfVxuICovXG5mdW5jdGlvbiBnZXRPcHRpbWl6ZWRUcmFuc2Zvcm1EYXRhKHNXaWR0aCwgc0hlaWdodCwgdFdpZHRoLCB0SGVpZ2h0LCB1cHNjYWxlTWV0aG9kLCBzY2FsZUZhY3RvciwgdHJhbnNmb3JtVHlwZSkge1xuICAgIGNvbnN0IHsgb3B0aW1pemVkU2NhbGVGYWN0b3IsIHVwc2NhbGVNZXRob2RWYWx1ZSwgZm9yY2VVU00gfSA9IGdldE9wdGltaXplZFNjYWxlRGF0YShzV2lkdGgsIHNIZWlnaHQsIHNjYWxlRmFjdG9yLCB1cHNjYWxlTWV0aG9kKTtcbiAgICBsZXQgd2lkdGggPSB0V2lkdGg7XG4gICAgbGV0IGhlaWdodCA9IHRIZWlnaHQ7XG4gICAgaWYgKHNjYWxlRmFjdG9yIDw9IG9wdGltaXplZFNjYWxlRmFjdG9yKSB7XG4gICAgICAgIC8vIHRhcmdldCB1cHNjYWxlIHdpdGhpbiBsaW1pdHMgb3IgZG93bnNjYWxlXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgdXBzY2FsZU1ldGhvZFZhbHVlLFxuICAgICAgICAgICAgZm9yY2VVU00sXG4gICAgICAgICAgICBjc3NVcHNjYWxlTmVlZGVkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLy8gbGltaXRlZCB1cHNjYWxlXG4gICAgc3dpdGNoICh0cmFuc2Zvcm1UeXBlKSB7XG4gICAgICAgIGNhc2UgdHJhbnNmb3JtVHlwZXMuRklMTDpcbiAgICAgICAgICAgIHdpZHRoID0gdFdpZHRoICogKG9wdGltaXplZFNjYWxlRmFjdG9yIC8gc2NhbGVGYWN0b3IpO1xuICAgICAgICAgICAgaGVpZ2h0ID0gdEhlaWdodCAqIChvcHRpbWl6ZWRTY2FsZUZhY3RvciAvIHNjYWxlRmFjdG9yKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIHRyYW5zZm9ybVR5cGVzLkZJVDpcbiAgICAgICAgICAgIHdpZHRoID0gc1dpZHRoICogb3B0aW1pemVkU2NhbGVGYWN0b3I7XG4gICAgICAgICAgICBoZWlnaHQgPSBzSGVpZ2h0ICogb3B0aW1pemVkU2NhbGVGYWN0b3I7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICAvLyBhZGp1c3QgdHJhbnNmb3JtIHZhbHVlc1xuICAgIHJldHVybiB7XG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHQsXG4gICAgICAgIHNjYWxlRmFjdG9yOiBvcHRpbWl6ZWRTY2FsZUZhY3RvcixcbiAgICAgICAgdXBzY2FsZU1ldGhvZFZhbHVlLFxuICAgICAgICBmb3JjZVVTTSxcbiAgICAgICAgY3NzVXBzY2FsZU5lZWRlZDogdHJ1ZSxcbiAgICB9O1xufVxuLyoqXG4gKiByZXR1cm5zIGltYWdlIHF1YWxpdHkga2V5XG4gKiBAcGFyYW0ge251bWJlcn0gICAgaW1hZ2VXaWR0aFxuICogQHBhcmFtIHtudW1iZXJ9ICAgIGltYWdlSGVpZ2h0XG4gKlxuICogQHJldHVybnMge0ltYWdlUXVhbGl0eX1cbiAqL1xuZnVuY3Rpb24gZ2V0SW1hZ2VRdWFsaXR5S2V5KGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0KSB7XG4gICAgY29uc3Qgc2l6ZSA9IGltYWdlV2lkdGggKiBpbWFnZUhlaWdodDtcbiAgICBpZiAoc2l6ZSA+IGltYWdlU2NhbGVEZWZhdWx0c1tpbWFnZVF1YWxpdHkuSElHSF0uc2l6ZSkge1xuICAgICAgICByZXR1cm4gaW1hZ2VRdWFsaXR5LkhJR0g7XG4gICAgfVxuICAgIGVsc2UgaWYgKHNpemUgPiBpbWFnZVNjYWxlRGVmYXVsdHNbaW1hZ2VRdWFsaXR5Lk1FRElVTV0uc2l6ZSkge1xuICAgICAgICByZXR1cm4gaW1hZ2VRdWFsaXR5Lk1FRElVTTtcbiAgICB9XG4gICAgZWxzZSBpZiAoc2l6ZSA+IGltYWdlU2NhbGVEZWZhdWx0c1tpbWFnZVF1YWxpdHkuTE9XXS5zaXplKSB7XG4gICAgICAgIHJldHVybiBpbWFnZVF1YWxpdHkuTE9XO1xuICAgIH1cbiAgICByZXR1cm4gaW1hZ2VRdWFsaXR5LlRJTlk7XG59XG4vKipcbiAqIHJldHVybiB0aGUgYWN0dWFsIHJvdW5kZWQgZGltZW5zaW9uIG9mIGEgc2NhbGVkIHJlY3RhbmdsZVxuICogQHBhcmFtIHNXaWR0aFxuICogQHBhcmFtIHNIZWlnaHRcbiAqIEBwYXJhbSB0V2lkdGhcbiAqIEBwYXJhbSB0SGVpZ2h0XG4gKiBAcGFyYW0gdHJhbnNmb3JtVHlwZVxuICogQHJldHVybnMge3t3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcn19XG4gKi9cbmZ1bmN0aW9uIGdldERpbWVuc2lvbihzV2lkdGgsIHNIZWlnaHQsIHRXaWR0aCwgdEhlaWdodCwgdHJhbnNmb3JtVHlwZSkge1xuICAgIGNvbnN0IHNjYWxlRmFjdG9yID0gZ2V0U2NhbGVGYWN0b3Ioc1dpZHRoLCBzSGVpZ2h0LCB0V2lkdGgsIHRIZWlnaHQsIHRyYW5zZm9ybVR5cGUpO1xuICAgIHJldHVybiB7XG4gICAgICAgIHdpZHRoOiBNYXRoLnJvdW5kKHNXaWR0aCAqIHNjYWxlRmFjdG9yKSxcbiAgICAgICAgaGVpZ2h0OiBNYXRoLnJvdW5kKHNIZWlnaHQgKiBzY2FsZUZhY3RvciksXG4gICAgfTtcbn1cbi8qKlxuICogcm91bmRzIG51bWJlciBuIGRpZ2l0IHByZWNpc2lvbiBhbmQgY29udmVydHMgdG8gc3RyaW5nXG4gKiBAcGFyYW0ge251bWJlcn0gICAgICB2YWx1ZVxuICogQHBhcmFtIHtudW1iZXJ9ICAgICAgcHJlY2lzaW9uXG4gKlxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gcm91bmRUb0ZpeGVkKHZhbHVlLCBwcmVjaXNpb24pIHtcbiAgICBjb25zdCB0cnVuY2F0ZVByZWNpc2lvbiA9IE1hdGgucG93KDEwLCBwcmVjaXNpb24gfHwgMCk7XG4gICAgcmV0dXJuICgodmFsdWUgKiB0cnVuY2F0ZVByZWNpc2lvbikgLyB0cnVuY2F0ZVByZWNpc2lvbikudG9GaXhlZChwcmVjaXNpb24pO1xufVxuLyoqXG4gKiBnZXQgbm9ybWFsaXplIHNjYWxlIG1ldGhvZFxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybU9wdGlvbnN9IFtvcHRpb25zXVxuICogQHJldHVybnMge1Vwc2NhbGVNZXRob2R9XG4gKi9cbmZ1bmN0aW9uIGdldFVwc2NhbGVTdHJpbmcob3B0aW9ucykge1xuICAgIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy51cHNjYWxlTWV0aG9kKSB7XG4gICAgICAgIHJldHVybiB1cHNjYWxlTWV0aG9kcy5BVVRPO1xuICAgIH1cbiAgICByZXR1cm4gKHVwc2NhbGVNZXRob2RzW29wdGlvbnMudXBzY2FsZU1ldGhvZC50b1VwcGVyQ2FzZSgpXSB8fCB1cHNjYWxlTWV0aG9kcy5BVVRPKTtcbn1cbmZ1bmN0aW9uIGltYWdlSXNBbmltYXRlZCh1cmksIGhhc0FuaW1hdGlvbikge1xuICAgIGNvbnN0IGlzQXZpZldlYnBGb3JtYXQgPSBpc1dFQlAodXJpKSB8fCBpc0FWSUYodXJpKTtcbiAgICByZXR1cm4gKGdldEZpbGVFeHRlbnNpb24odXJpKSA9PT0gZmlsZVR5cGUuR0lGIHx8IChpc0F2aWZXZWJwRm9ybWF0ICYmIGhhc0FuaW1hdGlvbikpO1xufVxuZXhwb3J0IHsgZ2V0QWxpZ25lZFJlY3QsIGdldEFsaWdubWVudCwgZ2V0RGV2aWNlUGl4ZWxSYXRpbywgZ2V0RGltZW5zaW9uLCBnZXRGaWxlRXh0ZW5zaW9uLCBnZXRGaWxlTmFtZSwgZ2V0RmlsZVR5cGUsIGdldEZvY2FsUG9pbnQsIGdldE92ZXJsYXBwaW5nUmVjdCwgZ2V0UHJlZmVycmVkSW1hZ2VRdWFsaXR5LCBnZXRTY2FsZUZhY3RvciwgZ2V0VHJhbnNmb3JtRGF0YSwgZ2V0VXBzY2FsZVN0cmluZywgaW1hZ2VJc0FuaW1hdGVkLCBpc0V4dGVybmFsVXJsLCBpc0ltYWdlVHJhbnNmb3JtQXBwbGljYWJsZSwgaXNJbWFnZVR5cGVTdXBwb3J0ZWQsIGlzU0VPQm90LCBpc1ZhbGlkUmVxdWVzdCwgaXNQTkcsIGlzV0VCUCwgaXNHSUYsIGlzQVZJRiwgcm91bmRUb0ZpeGVkLCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW1hZ2VTZXJ2aWNlVXRpbHMuanMubWFwIiwiY29uc3QgZ2xvYmFsRmVhdHVyZXNTdXBwb3J0T2JqID0ge1xuICAgIC8qKlxuICAgICAqIEB0eXBlIHtvYmplY3Q8Ym9vbGVhbj59XG4gICAgICovXG4gICAgaXNNb2JpbGU6IGZhbHNlLFxufTtcbmNvbnN0IGdldEZlYXR1cmUgPSBmdW5jdGlvbiAoZmVhdHVyZSkge1xuICAgIHJldHVybiBnbG9iYWxGZWF0dXJlc1N1cHBvcnRPYmpbZmVhdHVyZV07XG59O1xuY29uc3Qgc2V0RmVhdHVyZSA9IGZ1bmN0aW9uIChmZWF0dXJlLCB2YWx1ZSkge1xuICAgIGdsb2JhbEZlYXR1cmVzU3VwcG9ydE9ialtmZWF0dXJlXSA9IHZhbHVlO1xufTtcbmV4cG9ydCB7IGdldEZlYXR1cmUsIHNldEZlYXR1cmUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWltYWdlU2VydmljZUZlYXR1cmVTdXBwb3J0T2JqZWN0LmpzLm1hcCIsImltcG9ydCB7IHNldEZlYXR1cmUgfSBmcm9tICcuL2ltYWdlU2VydmljZUZlYXR1cmVTdXBwb3J0T2JqZWN0Jztcbi8qKlxuICogUG9wdWxhdGUgdGhlIGdsb2JhbCBmZWF0dXJlIHN1cHBvcnQgb2JqZWN0IHdpdGggYnJvd3NlciBzcGVjaWZpYyB2YWx1ZXNcbiAqL1xuZnVuY3Rpb24gcG9wdWxhdGVHbG9iYWxGZWF0dXJlU3VwcG9ydCgpIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgY29uc3QgaXNTbWFsbFNjcmVlbiA9IHdpbmRvdy5tYXRjaE1lZGlhICYmIHdpbmRvdy5tYXRjaE1lZGlhKCcobWF4LXdpZHRoOiA3NjdweCknKS5tYXRjaGVzO1xuICAgICAgICBjb25zdCBpc01vYmlsZUFnZW50ID0gL0FuZHJvaWR8d2ViT1N8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fElFTW9iaWxlfE9wZXJhIE1pbmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuICAgICAgICAvLyBzZXQgaXMgbW9iaWxlXG4gICAgICAgIHNldEZlYXR1cmUoJ2lzTW9iaWxlJywgaXNTbWFsbFNjcmVlbiAmJiBpc01vYmlsZUFnZW50KTtcbiAgICB9XG59XG5leHBvcnQgeyBwb3B1bGF0ZUdsb2JhbEZlYXR1cmVTdXBwb3J0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wb3B1bGF0ZUZlYXR1cmVTdXBwb3J0LmpzLm1hcCIsImltcG9ydCB7IGFsaWduVHlwZXMsIGZpdHRpbmdUeXBlcyB9IGZyb20gJy4uLy4uL2hlbHBlcnMvaW1hZ2VTZXJ2aWNlQ29uc3RhbnRzJztcbi8qKlxuICogcmV0dXJucyBCRyB0YWcgQ1NTIGRhdGFcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1PYmplY3R9ICAgIHRyYW5zZm9ybXNPYmogICAgdHJhbnNmb3JtIHBhcnRzIG9iamVjdFxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybVRhcmdldH0gICAgdGFyZ2V0XG4gKlxuICogQHJldHVybnMge0JhY2tncm91bmRJbWFnZUF0dHJpYnV0ZXN9XG4gKi9cbmZ1bmN0aW9uIGdldENTUyh0cmFuc2Zvcm1zT2JqLCB0YXJnZXQpIHtcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0ge1xuICAgICAgICBjc3M6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjoge30sXG4gICAgICAgIH0sXG4gICAgfTtcbiAgICBjb25zdCB7IGNzcyB9ID0gYXR0cmlidXRlcztcbiAgICBjb25zdCB7IGZpdHRpbmdUeXBlIH0gPSB0cmFuc2Zvcm1zT2JqO1xuICAgIC8vIHNldCBmaXR0aW5nXG4gICAgc3dpdGNoIChmaXR0aW5nVHlwZSkge1xuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5PUklHSU5BTF9TSVpFOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfT1JJR0lOQUxfU0laRTpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX1NUUklQX09SSUdJTkFMX1NJWkU6XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRTaXplID0gJ2F1dG8nO1xuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kUmVwZWF0ID0gJ25vLXJlcGVhdCc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuU0NBTEVfVE9fRklUOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfU1RSSVBfU0NBTEVfVE9fRklUOlxuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kU2l6ZSA9ICdjb250YWluJztcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFJlcGVhdCA9ICduby1yZXBlYXQnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLlNUUkVUQ0g6XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRTaXplID0gJzEwMCUgMTAwJSc7XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRSZXBlYXQgPSAnbm8tcmVwZWF0JztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5TQ0FMRV9UT19GSUxMOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfU1RSSVBfU0NBTEVfVE9fRklMTDpcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFNpemUgPSAnY292ZXInO1xuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kUmVwZWF0ID0gJ25vLXJlcGVhdCc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuVElMRV9IT1JJWk9OVEFMOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfU1RSSVBfVElMRV9IT1JJWk9OVEFMOlxuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kU2l6ZSA9ICdhdXRvJztcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFJlcGVhdCA9ICdyZXBlYXQteCc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuVElMRV9WRVJUSUNBTDpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX1NUUklQX1RJTEVfVkVSVElDQUw6XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRTaXplID0gJ2F1dG8nO1xuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kUmVwZWF0ID0gJ3JlcGVhdC15JztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5USUxFOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfU1RSSVBfVElMRTpcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFNpemUgPSAnYXV0byc7XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRSZXBlYXQgPSAncmVwZWF0JztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfU1RSSVBfRklUX0FORF9USUxFOlxuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kU2l6ZSA9ICdjb250YWluJztcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFJlcGVhdCA9ICdyZXBlYXQnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkZJVF9BTkRfVElMRTpcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFNpemUgPSAnYXV0byc7XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRSZXBlYXQgPSAncmVwZWF0JztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAvLyBMZWdhY3kgb2xkIGVkaXRvciBiZyB0eXBlcy5cbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX0JHX0ZJVF9BTkRfVElMRTpcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFNpemUgPSAnYXV0byc7XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRSZXBlYXQgPSAncmVwZWF0JztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfQkdfRklUX0FORF9USUxFX0hPUklaT05UQUw6XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRTaXplID0gJ2F1dG8nO1xuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kUmVwZWF0ID0gJ3JlcGVhdC14JztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfQkdfRklUX0FORF9USUxFX1ZFUlRJQ0FMOlxuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kU2l6ZSA9ICdhdXRvJztcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFJlcGVhdCA9ICdyZXBlYXQteSc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX0JHX05PUk1BTDpcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFNpemUgPSAnYXV0byc7XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRSZXBlYXQgPSAnbm8tcmVwZWF0JztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICAvLyBzZXQgYWxpZ25tZW50XG4gICAgc3dpdGNoICh0YXJnZXQuYWxpZ25tZW50KSB7XG4gICAgICAgIGNhc2UgYWxpZ25UeXBlcy5DRU5URVI6XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRQb3NpdGlvbiA9ICdjZW50ZXIgY2VudGVyJzsgLy8gNTAlIDUwJVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgYWxpZ25UeXBlcy5MRUZUOlxuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kUG9zaXRpb24gPSAnbGVmdCBjZW50ZXInOyAvLyAwJSA1MCVcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGFsaWduVHlwZXMuUklHSFQ6XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRQb3NpdGlvbiA9ICdyaWdodCBjZW50ZXInOyAvLyAxMDAlIDUwJVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgYWxpZ25UeXBlcy5UT1A6XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRQb3NpdGlvbiA9ICdjZW50ZXIgdG9wJzsgLy8gNTAlIDAlXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBhbGlnblR5cGVzLkJPVFRPTTpcbiAgICAgICAgICAgIGNzcy5jb250YWluZXIuYmFja2dyb3VuZFBvc2l0aW9uID0gJ2NlbnRlciBib3R0b20nOyAvLyA1MCUgMTAwJVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgYWxpZ25UeXBlcy5UT1BfUklHSFQ6XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRQb3NpdGlvbiA9ICdyaWdodCB0b3AnOyAvLyAxMDAlIDAlXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBhbGlnblR5cGVzLlRPUF9MRUZUOlxuICAgICAgICAgICAgY3NzLmNvbnRhaW5lci5iYWNrZ3JvdW5kUG9zaXRpb24gPSAnbGVmdCB0b3AnOyAvLyAwJSAwJVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgYWxpZ25UeXBlcy5CT1RUT01fUklHSFQ6XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRQb3NpdGlvbiA9ICdyaWdodCBib3R0b20nOyAvLyAxMDAlIDEwMCVcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGFsaWduVHlwZXMuQk9UVE9NX0xFRlQ6XG4gICAgICAgICAgICBjc3MuY29udGFpbmVyLmJhY2tncm91bmRQb3NpdGlvbiA9ICdsZWZ0IGJvdHRvbSc7IC8vIDAlIDEwMCVcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICAvLyByZXR1cm4gYmFja2dyb3VuZCBDU1NcbiAgICByZXR1cm4gYXR0cmlidXRlcztcbn1cbmV4cG9ydCB7IGdldENTUyBhcyBnZXQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJhY2tncm91bmRBdHRyaWJ1dGVzLmpzLm1hcCIsImltcG9ydCB7IGFsaWduVHlwZXMsIGZpdHRpbmdUeXBlcyB9IGZyb20gJy4uLy4uL2hlbHBlcnMvaW1hZ2VTZXJ2aWNlQ29uc3RhbnRzJztcbi8qKlxuICogYWxpZ24gdHlwZSB0byBwb3NpdGlvblxuICogQHBhcmFtIHZlcnRpY2FsTWlkZGxlXG4gKiBAcGFyYW0gaG9yaXpvbnRhbE1pZGRsZVxuICogQHBhcmFtIHRhcmdldFxuICogQHJldHVybnMge3t9fVxuICovXG5mdW5jdGlvbiBhbGlnblR5cGVUb1Bvc2l0aW9uKHZlcnRpY2FsTWlkZGxlLCBob3Jpem9udGFsTWlkZGxlLCB0YXJnZXQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBbYWxpZ25UeXBlcy5UT1BfTEVGVF06IHsgdG9wOiAwLCBsZWZ0OiAwIH0sXG4gICAgICAgIFthbGlnblR5cGVzLlRPUF9SSUdIVF06IHsgdG9wOiAwLCByaWdodDogMCB9LFxuICAgICAgICBbYWxpZ25UeXBlcy5UT1BdOiB7IHRvcDogMCwgbGVmdDogaG9yaXpvbnRhbE1pZGRsZSB9LFxuICAgICAgICBbYWxpZ25UeXBlcy5CT1RUT01fTEVGVF06IHsgYm90dG9tOiAwLCBsZWZ0OiAwIH0sXG4gICAgICAgIFthbGlnblR5cGVzLkJPVFRPTV9SSUdIVF06IHsgYm90dG9tOiAwLCByaWdodDogMCB9LFxuICAgICAgICBbYWxpZ25UeXBlcy5CT1RUT01dOiB7IGJvdHRvbTogMCwgbGVmdDogaG9yaXpvbnRhbE1pZGRsZSB9LFxuICAgICAgICBbYWxpZ25UeXBlcy5SSUdIVF06IHsgdG9wOiB2ZXJ0aWNhbE1pZGRsZSwgcmlnaHQ6IDAgfSxcbiAgICAgICAgW2FsaWduVHlwZXMuTEVGVF06IHsgdG9wOiB2ZXJ0aWNhbE1pZGRsZSwgbGVmdDogMCB9LFxuICAgICAgICBbYWxpZ25UeXBlcy5DRU5URVJdOiB7XG4gICAgICAgICAgICB3aWR0aDogdGFyZ2V0LndpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiB0YXJnZXQuaGVpZ2h0LFxuICAgICAgICAgICAgb2JqZWN0Rml0OiAnbm9uZScsXG4gICAgICAgIH0sXG4gICAgfTtcbn1cbmNvbnN0IGFsaWduVHlwZVRvUG9zaXRpb25TdHIgPSB7XG4gICAgW2FsaWduVHlwZXMuQ0VOVEVSXTogJ2NlbnRlcicsXG4gICAgW2FsaWduVHlwZXMuVE9QXTogJ3RvcCcsXG4gICAgW2FsaWduVHlwZXMuVE9QX0xFRlRdOiAndG9wIGxlZnQnLFxuICAgIFthbGlnblR5cGVzLlRPUF9SSUdIVF06ICd0b3AgcmlnaHQnLFxuICAgIFthbGlnblR5cGVzLkJPVFRPTV06ICdib3R0b20nLFxuICAgIFthbGlnblR5cGVzLkJPVFRPTV9MRUZUXTogJ2JvdHRvbSBsZWZ0JyxcbiAgICBbYWxpZ25UeXBlcy5CT1RUT01fUklHSFRdOiAnYm90dG9tIHJpZ2h0JyxcbiAgICBbYWxpZ25UeXBlcy5MRUZUXTogJ2xlZnQnLFxuICAgIFthbGlnblR5cGVzLlJJR0hUXTogJ3JpZ2h0Jyxcbn07XG5jb25zdCBhbGlnbWVudERlZmF1bHRzID0ge1xuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIHRvcDogJ2F1dG8nLFxuICAgIHJpZ2h0OiAnYXV0bycsXG4gICAgYm90dG9tOiAnYXV0bycsXG4gICAgbGVmdDogJ2F1dG8nLFxufTtcbi8qKlxuICogcmV0dXJucyBpbWFnZSB0YWcgQ1NTIGRhdGFcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1PYmplY3R9ICAgIHRyYW5zZm9ybXNPYmogICAgdHJhbnNmb3JtIHBhcnRzIG9iamVjdFxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybVRhcmdldH0gICAgdGFyZ2V0XG4gKlxuICogQHJldHVybnMge0ltYWdlQXR0cmlidXRlc31cbiAqL1xuZnVuY3Rpb24gZ2V0Q1NTKHRyYW5zZm9ybXNPYmosIHRhcmdldCkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB7XG4gICAgICAgIGNzczoge1xuICAgICAgICAgICAgY29udGFpbmVyOiB7fSxcbiAgICAgICAgICAgIGltZzoge30sXG4gICAgICAgIH0sXG4gICAgfTtcbiAgICBjb25zdCB7IGNzcyB9ID0gYXR0cmlidXRlcztcbiAgICBjb25zdCB7IGZpdHRpbmdUeXBlIH0gPSB0cmFuc2Zvcm1zT2JqO1xuICAgIGNvbnN0IGFsaWduVHlwZSA9IHRhcmdldC5hbGlnbm1lbnQ7XG4gICAgY3NzLmNvbnRhaW5lci5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XG4gICAgc3dpdGNoIChmaXR0aW5nVHlwZSkge1xuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5PUklHSU5BTF9TSVpFOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfT1JJR0lOQUxfU0laRTpcbiAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1zT2JqLnBhcnRzICYmIHRyYW5zZm9ybXNPYmoucGFydHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY3NzLmltZy53aWR0aCA9IHRyYW5zZm9ybXNPYmoucGFydHNbMF0ud2lkdGg7XG4gICAgICAgICAgICAgICAgY3NzLmltZy5oZWlnaHQgPSB0cmFuc2Zvcm1zT2JqLnBhcnRzWzBdLmhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNzcy5pbWcud2lkdGggPSB0cmFuc2Zvcm1zT2JqLnNyYy53aWR0aDtcbiAgICAgICAgICAgICAgICBjc3MuaW1nLmhlaWdodCA9IHRyYW5zZm9ybXNPYmouc3JjLmhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5TQ0FMRV9UT19GSVQ6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9GSVRfV0lEVEg6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9GSVRfSEVJR0hUOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfRlVMTDpcbiAgICAgICAgICAgIGNzcy5pbWcud2lkdGggPSB0YXJnZXQud2lkdGg7XG4gICAgICAgICAgICBjc3MuaW1nLmhlaWdodCA9IHRhcmdldC5oZWlnaHQ7XG4gICAgICAgICAgICBjc3MuaW1nLm9iamVjdEZpdCA9ICdjb250YWluJztcbiAgICAgICAgICAgIGNzcy5pbWcub2JqZWN0UG9zaXRpb24gPVxuICAgICAgICAgICAgICAgIGFsaWduVHlwZVRvUG9zaXRpb25TdHJbYWxpZ25UeXBlXSB8fCAndW5zZXQnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIC8vIEJHX05PUk1BTCBpcyBhIHNpdGViYWNrZ3JvdW5kIGxlZ2FjeSBmb3Igb3JpZ2luYWwgc2l6ZSBmaXR0aW5nIHR5cGUuXG4gICAgICAgIC8vIHRhcmdldCB3aWR0aCBhbmQgaGVpZ2h0IHdlcmUgbW9kaWZpZWQgaW4gdHJhbnNmb3JtLmpzXG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9CR19OT1JNQUw6XG4gICAgICAgICAgICBjc3MuaW1nLndpZHRoID0gJzEwMCUnO1xuICAgICAgICAgICAgY3NzLmltZy5oZWlnaHQgPSAnMTAwJSc7XG4gICAgICAgICAgICBjc3MuaW1nLm9iamVjdEZpdCA9ICdub25lJztcbiAgICAgICAgICAgIGNzcy5pbWcub2JqZWN0UG9zaXRpb24gPVxuICAgICAgICAgICAgICAgIGFsaWduVHlwZVRvUG9zaXRpb25TdHJbYWxpZ25UeXBlXSB8fCAndW5zZXQnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLlNUUkVUQ0g6XG4gICAgICAgICAgICBjc3MuaW1nLndpZHRoID0gdGFyZ2V0LndpZHRoO1xuICAgICAgICAgICAgY3NzLmltZy5oZWlnaHQgPSB0YXJnZXQuaGVpZ2h0O1xuICAgICAgICAgICAgY3NzLmltZy5vYmplY3RGaXQgPSAnZmlsbCc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuU0NBTEVfVE9fRklMTDpcbiAgICAgICAgICAgIGNzcy5pbWcud2lkdGggPSB0YXJnZXQud2lkdGg7XG4gICAgICAgICAgICBjc3MuaW1nLmhlaWdodCA9IHRhcmdldC5oZWlnaHQ7XG4gICAgICAgICAgICBjc3MuaW1nLm9iamVjdEZpdCA9ICdjb3Zlcic7XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgLy8gc2V0IGFsaWdubWVudCBpbiBhIHByaXZhdGUgY2FzZSB3aGVyZSB0aGUgaW1hZ2Ugc3JjIGlzIHNtYWxsZXIgdGhhbiB0aGUgaW1hZ2UgY29udGFpbmVyLFxuICAgIGlmICh0eXBlb2YgY3NzLmltZy53aWR0aCA9PT0gJ251bWJlcicgJiZcbiAgICAgICAgdHlwZW9mIGNzcy5pbWcuaGVpZ2h0ID09PSAnbnVtYmVyJyAmJlxuICAgICAgICAoY3NzLmltZy53aWR0aCAhPT0gdGFyZ2V0LndpZHRoIHx8IGNzcy5pbWcuaGVpZ2h0ICE9PSB0YXJnZXQuaGVpZ2h0KSkge1xuICAgICAgICBjb25zdCB2ZXJ0aWNhbE1pZGRsZSA9IE1hdGgucm91bmQoKHRhcmdldC5oZWlnaHQgLSBjc3MuaW1nLmhlaWdodCkgLyAyKTtcbiAgICAgICAgY29uc3QgaG9yaXpvbnRhbE1pZGRsZSA9IE1hdGgucm91bmQoKHRhcmdldC53aWR0aCAtIGNzcy5pbWcud2lkdGgpIC8gMik7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oY3NzLmltZywgYWxpZ21lbnREZWZhdWx0cywgYWxpZ25UeXBlVG9Qb3NpdGlvbih2ZXJ0aWNhbE1pZGRsZSwgaG9yaXpvbnRhbE1pZGRsZSwgdGFyZ2V0KVthbGlnblR5cGVdKTtcbiAgICB9XG4gICAgcmV0dXJuIGF0dHJpYnV0ZXM7XG59XG5leHBvcnQgeyBnZXRDU1MgYXMgZ2V0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbWdBdHRyaWJ1dGVzLmpzLm1hcCIsImltcG9ydCB7IGZpdHRpbmdUeXBlcywgYWxpZ25UeXBlcywgdHJhbnNmb3JtVHlwZXMsIH0gZnJvbSAnLi4vLi4vaGVscGVycy9pbWFnZVNlcnZpY2VDb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0RGltZW5zaW9uLCBpc0ltYWdlVHJhbnNmb3JtQXBwbGljYWJsZSwgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2ltYWdlU2VydmljZVV0aWxzJztcbi8qIGVzbGludC1kaXNhYmxlIGluZGVudCAqL1xuLyoqXG4gKiBnZXQgQ1NTIG9yIFNWRyBhdHRyaWJ1dGVzIHRvIGJlIHVzZWQgaW4gdGhlIGJyb3dzZXJcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1PYmplY3R9ICB0cmFuc2Zvcm1zT2JqICB0cmFuc2Zvcm0gcGFydHMgb2JqZWN0XG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtVGFyZ2V0fSAgdGFyZ2V0XG4gKlxuICogQHJldHVybnMge1NWR0ltYWdlQXR0cmlidXRlc31cbiAqL1xuZnVuY3Rpb24gZ2V0U3ZnQXR0cih0cmFuc2Zvcm1zT2JqLCB0YXJnZXQpIHtcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0ge1xuICAgICAgICBjc3M6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjoge30sXG4gICAgICAgIH0sXG4gICAgICAgIGF0dHI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjoge30sXG4gICAgICAgICAgICBpbWc6IHt9LFxuICAgICAgICB9LFxuICAgIH07XG4gICAgY29uc3QgeyBjc3MsIGF0dHIgfSA9IGF0dHJpYnV0ZXM7XG4gICAgY29uc3QgeyBmaXR0aW5nVHlwZSB9ID0gdHJhbnNmb3Jtc09iajtcbiAgICBjb25zdCBhbGlnblR5cGUgPSB0YXJnZXQuYWxpZ25tZW50O1xuICAgIGNvbnN0IHsgd2lkdGg6IHNvdXJjZVdpZHRoLCBoZWlnaHQ6IHNvdXJjZUhlaWdodCB9ID0gdHJhbnNmb3Jtc09iai5zcmM7XG4gICAgbGV0IGltYWdlU2NhbGU7XG4gICAgY3NzLmNvbnRhaW5lci5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XG4gICAgLy8gcG9wdWxhdGUgU1ZHIGF0dHJpYnV0ZXMgb2JqZWN0XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBpbmRlbnRcbiAgICBzd2l0Y2ggKGZpdHRpbmdUeXBlKSB7XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLk9SSUdJTkFMX1NJWkU6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9PUklHSU5BTF9TSVpFOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5USUxFOlxuICAgICAgICAgICAgaWYgKHRyYW5zZm9ybXNPYmoucGFydHMgJiYgdHJhbnNmb3Jtc09iai5wYXJ0cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBhdHRyLmltZy53aWR0aCA9IHRyYW5zZm9ybXNPYmoucGFydHNbMF0ud2lkdGg7XG4gICAgICAgICAgICAgICAgYXR0ci5pbWcuaGVpZ2h0ID0gdHJhbnNmb3Jtc09iai5wYXJ0c1swXS5oZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBhdHRyLmltZy53aWR0aCA9IHNvdXJjZVdpZHRoO1xuICAgICAgICAgICAgICAgIGF0dHIuaW1nLmhlaWdodCA9IHNvdXJjZUhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF0dHIuaW1nLnByZXNlcnZlQXNwZWN0UmF0aW8gPSAneE1pZFlNaWQgc2xpY2UnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLlNDQUxFX1RPX0ZJVDpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX0ZJVF9XSURUSDpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX0ZJVF9IRUlHSFQ6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9GVUxMOlxuICAgICAgICAgICAgYXR0ci5pbWcud2lkdGggPSAnMTAwJSc7XG4gICAgICAgICAgICBhdHRyLmltZy5oZWlnaHQgPSAnMTAwJSc7XG4gICAgICAgICAgICBhdHRyLmltZy50cmFuc2Zvcm0gPSAnJztcbiAgICAgICAgICAgIGF0dHIuaW1nLnByZXNlcnZlQXNwZWN0UmF0aW8gPSAnJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5TVFJFVENIOlxuICAgICAgICAgICAgYXR0ci5pbWcud2lkdGggPSB0YXJnZXQud2lkdGg7XG4gICAgICAgICAgICBhdHRyLmltZy5oZWlnaHQgPSB0YXJnZXQuaGVpZ2h0O1xuICAgICAgICAgICAgYXR0ci5pbWcueCA9IDA7XG4gICAgICAgICAgICBhdHRyLmltZy55ID0gMDtcbiAgICAgICAgICAgIGF0dHIuaW1nLnRyYW5zZm9ybSA9ICcnO1xuICAgICAgICAgICAgYXR0ci5pbWcucHJlc2VydmVBc3BlY3RSYXRpbyA9ICdub25lJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5TQ0FMRV9UT19GSUxMOlxuICAgICAgICAgICAgaWYgKCFpc0ltYWdlVHJhbnNmb3JtQXBwbGljYWJsZSh0cmFuc2Zvcm1zT2JqLnNyYy5pZCkpIHtcbiAgICAgICAgICAgICAgICBpbWFnZVNjYWxlID0gZ2V0RGltZW5zaW9uKHNvdXJjZVdpZHRoLCBzb3VyY2VIZWlnaHQsIHRhcmdldC53aWR0aCwgdGFyZ2V0LmhlaWdodCwgdHJhbnNmb3JtVHlwZXMuRklMTCk7XG4gICAgICAgICAgICAgICAgYXR0ci5pbWcud2lkdGggPSBpbWFnZVNjYWxlLndpZHRoO1xuICAgICAgICAgICAgICAgIGF0dHIuaW1nLmhlaWdodCA9IGltYWdlU2NhbGUuaGVpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYXR0ci5pbWcud2lkdGggPSB0YXJnZXQud2lkdGg7XG4gICAgICAgICAgICAgICAgYXR0ci5pbWcuaGVpZ2h0ID0gdGFyZ2V0LmhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF0dHIuaW1nLnggPSAwO1xuICAgICAgICAgICAgYXR0ci5pbWcueSA9IDA7XG4gICAgICAgICAgICBhdHRyLmltZy50cmFuc2Zvcm0gPSAnJztcbiAgICAgICAgICAgIGF0dHIuaW1nLnByZXNlcnZlQXNwZWN0UmF0aW8gPSAneE1pZFlNaWQgc2xpY2UnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC8vIHNldCBhbGlnbm1lbnQgZm9yIGNhc2VzIHdoZXJlIHRoZSByZXF1ZXN0ZWQgc3JjIGlzIHNtYWxsZXIgb3IgYmlnZ2VyIHRoYW4gdGhlIHRhcmdldCBlbGVtZW50LFxuICAgIGlmICh0eXBlb2YgYXR0ci5pbWcud2lkdGggPT09ICdudW1iZXInICYmXG4gICAgICAgIHR5cGVvZiBhdHRyLmltZy5oZWlnaHQgPT09ICdudW1iZXInICYmXG4gICAgICAgIChhdHRyLmltZy53aWR0aCAhPT0gdGFyZ2V0LndpZHRoIHx8IGF0dHIuaW1nLmhlaWdodCAhPT0gdGFyZ2V0LmhlaWdodCkpIHtcbiAgICAgICAgLy8geCBhbmQgeSB0byB1c2UgaW4gc3ZnIDxwYXR0ZXJuPiBlbGVtZW50XG4gICAgICAgIGxldCB4ID0gMDtcbiAgICAgICAgbGV0IHkgPSAwO1xuICAgICAgICBsZXQgcmlnaHQ7XG4gICAgICAgIGxldCBib3R0b207XG4gICAgICAgIGlmIChmaXR0aW5nVHlwZSA9PT0gZml0dGluZ1R5cGVzLlRJTEUpIHtcbiAgICAgICAgICAgIHJpZ2h0ID0gdGFyZ2V0LndpZHRoICUgYXR0ci5pbWcud2lkdGg7XG4gICAgICAgICAgICBib3R0b20gPSB0YXJnZXQuaGVpZ2h0ICUgYXR0ci5pbWcuaGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmlnaHQgPSB0YXJnZXQud2lkdGggLSBhdHRyLmltZy53aWR0aDtcbiAgICAgICAgICAgIGJvdHRvbSA9IHRhcmdldC5oZWlnaHQgLSBhdHRyLmltZy5oZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2VudGVyID0gTWF0aC5yb3VuZChyaWdodCAvIDIpO1xuICAgICAgICBjb25zdCBtaWRkbGUgPSBNYXRoLnJvdW5kKGJvdHRvbSAvIDIpO1xuICAgICAgICBzd2l0Y2ggKGFsaWduVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBhbGlnblR5cGVzLlRPUF9MRUZUOlxuICAgICAgICAgICAgICAgIHggPSAwO1xuICAgICAgICAgICAgICAgIHkgPSAwO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBhbGlnblR5cGVzLlRPUDpcbiAgICAgICAgICAgICAgICB4ID0gY2VudGVyO1xuICAgICAgICAgICAgICAgIHkgPSAwO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBhbGlnblR5cGVzLlRPUF9SSUdIVDpcbiAgICAgICAgICAgICAgICB4ID0gcmlnaHQ7XG4gICAgICAgICAgICAgICAgeSA9IDA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIGFsaWduVHlwZXMuTEVGVDpcbiAgICAgICAgICAgICAgICB4ID0gMDtcbiAgICAgICAgICAgICAgICB5ID0gbWlkZGxlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBhbGlnblR5cGVzLkNFTlRFUjpcbiAgICAgICAgICAgICAgICB4ID0gY2VudGVyO1xuICAgICAgICAgICAgICAgIHkgPSBtaWRkbGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIGFsaWduVHlwZXMuUklHSFQ6XG4gICAgICAgICAgICAgICAgeCA9IHJpZ2h0O1xuICAgICAgICAgICAgICAgIHkgPSBtaWRkbGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIGFsaWduVHlwZXMuQk9UVE9NX0xFRlQ6XG4gICAgICAgICAgICAgICAgeCA9IDA7XG4gICAgICAgICAgICAgICAgeSA9IGJvdHRvbTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgYWxpZ25UeXBlcy5CT1RUT006XG4gICAgICAgICAgICAgICAgeCA9IGNlbnRlcjtcbiAgICAgICAgICAgICAgICB5ID0gYm90dG9tO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBhbGlnblR5cGVzLkJPVFRPTV9SSUdIVDpcbiAgICAgICAgICAgICAgICB4ID0gcmlnaHQ7XG4gICAgICAgICAgICAgICAgeSA9IGJvdHRvbTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBhdHRyLmltZy54ID0geDtcbiAgICAgICAgYXR0ci5pbWcueSA9IHk7XG4gICAgfVxuICAgIGF0dHIuY29udGFpbmVyLndpZHRoID0gdGFyZ2V0LndpZHRoO1xuICAgIGF0dHIuY29udGFpbmVyLmhlaWdodCA9IHRhcmdldC5oZWlnaHQ7XG4gICAgYXR0ci5jb250YWluZXIudmlld0JveCA9IFswLCAwLCB0YXJnZXQud2lkdGgsIHRhcmdldC5oZWlnaHRdLmpvaW4oJyAnKTtcbiAgICAvLyByZXR1cm4gYXR0cmlidXRlcyBvYmplY3RcbiAgICByZXR1cm4gYXR0cmlidXRlcztcbn1cbi8qIGVzbGludC1lbmFibGUgaW5kZW50ICovXG5leHBvcnQgeyBnZXRTdmdBdHRyIGFzIGdldCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U1ZHQXR0cmlidXRlcy5qcy5tYXAiLCJpbXBvcnQgeyBmaXR0aW5nVHlwZXMsIHRyYW5zZm9ybVR5cGVzLCBhbGlnblR5cGVzTWFwLCB9IGZyb20gJy4vaW1hZ2VTZXJ2aWNlQ29uc3RhbnRzJztcbmltcG9ydCB7IGdldEFsaWdubWVudCwgZ2V0U2NhbGVGYWN0b3IsIGdldE92ZXJsYXBwaW5nUmVjdCwgZ2V0QWxpZ25lZFJlY3QsIGdldFRyYW5zZm9ybURhdGEsIGdldEZvY2FsUG9pbnQsIH0gZnJvbSAnLi9pbWFnZVNlcnZpY2VVdGlscyc7XG4vKipcbiAqIHJlcXVlc3QgYW5hbHlzaXMsIHJldHVybnMgcGFyc2VkIHRyYW5zZm9ybXMgb2JqZWN0XG4gKiBAcGFyYW0ge29iamVjdH0gICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1zT2JqXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtU291cmNlfSAgICBzcmNcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1UYXJnZXR9ICAgIHRhcmdldFxuICovXG5mdW5jdGlvbiBzZXRUcmFuc2Zvcm1QYXJ0cyh0cmFuc2Zvcm1zT2JqLCBzcmMsIHRhcmdldCkge1xuICAgIGxldCByZWN0O1xuICAgIC8vIGNyb3Agc291cmNlIGltYWdlIGlmIG5lZWRlZFxuICAgIC8vIHNldCBjcm9wIHBhcnQgYW5kIGFkanVzdCBzb3VyY2UgZGltZW5zaW9uc1xuICAgIGlmIChzcmMuY3JvcCkge1xuICAgICAgICByZWN0ID0gZ2V0T3ZlcmxhcHBpbmdSZWN0KHNyYywgc3JjLmNyb3ApO1xuICAgICAgICBpZiAocmVjdCkge1xuICAgICAgICAgICAgdHJhbnNmb3Jtc09iai5zcmMud2lkdGggPSByZWN0LndpZHRoO1xuICAgICAgICAgICAgdHJhbnNmb3Jtc09iai5zcmMuaGVpZ2h0ID0gcmVjdC5oZWlnaHQ7XG4gICAgICAgICAgICB0cmFuc2Zvcm1zT2JqLnNyYy5pc0Nyb3BwZWQgPSB0cnVlO1xuICAgICAgICAgICAgdHJhbnNmb3Jtc09iai5wYXJ0cy5wdXNoKGdldENyb3BQYXJ0KHJlY3QpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBzZXQgYWRkaXRpb25hbCB0cmFuc2Zvcm0gcGFydFxuICAgIHN3aXRjaCAodHJhbnNmb3Jtc09iai5maXR0aW5nVHlwZSkge1xuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5TQ0FMRV9UT19GSVQ6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9GSVRfV0lEVEg6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9GSVRfSEVJR0hUOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfRlVMTDpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuRklUX0FORF9USUxFOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfQkdfRklUX0FORF9USUxFOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfQkdfRklUX0FORF9USUxFX0hPUklaT05UQUw6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9CR19GSVRfQU5EX1RJTEVfVkVSVElDQUw6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9CR19OT1JNQUw6XG4gICAgICAgICAgICAvLyBmaXRcbiAgICAgICAgICAgIHRyYW5zZm9ybXNPYmoucGFydHMucHVzaChnZXRGaXRQYXJ0KHRyYW5zZm9ybXNPYmosIHRhcmdldCkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLlNDQUxFX1RPX0ZJTEw6XG4gICAgICAgICAgICAvLyBmaWxsXG4gICAgICAgICAgICB0cmFuc2Zvcm1zT2JqLnBhcnRzLnB1c2goZ2V0RmlsbFBhcnQodHJhbnNmb3Jtc09iaiwgdGFyZ2V0KSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuU1RSRVRDSDpcbiAgICAgICAgICAgIC8vIHN0cmV0Y2hcbiAgICAgICAgICAgIHRyYW5zZm9ybXNPYmoucGFydHMucHVzaChnZXRTdHJldGNoUGFydCh0cmFuc2Zvcm1zT2JqLCB0YXJnZXQpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5USUxFX0hPUklaT05UQUw6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLlRJTEVfVkVSVElDQUw6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLlRJTEU6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9PUklHSU5BTF9TSVpFOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5PUklHSU5BTF9TSVpFOlxuICAgICAgICAgICAgLy8gdXNlIGNyb3AgdHJhbnNmb3JtXG4gICAgICAgICAgICAvLyBpZiBjcm9wIG9mIHNvdXJjZSBpbWFnZSB3YXMgcmVxdWVzdGVkIGFkanVzdCBjcm9wcGluZyByZWN0YW5nbGVcbiAgICAgICAgICAgIHJlY3QgPSBnZXRBbGlnbmVkUmVjdCh0cmFuc2Zvcm1zT2JqLnNyYywgdGFyZ2V0LCB0cmFuc2Zvcm1zT2JqLmZvY2FsUG9pbnQsIHRhcmdldC5hbGlnbm1lbnQpO1xuICAgICAgICAgICAgaWYgKHRyYW5zZm9ybXNPYmouc3JjLmlzQ3JvcHBlZCkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odHJhbnNmb3Jtc09iai5wYXJ0c1swXSwgcmVjdCk7XG4gICAgICAgICAgICAgICAgLy8gdXBkYXRlIHNvdXJjZSB3aWR0aCAmIGhlaWdodCBhY2NvcmRpbmdseVxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybXNPYmouc3JjLndpZHRoID0gcmVjdC53aWR0aDtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1zT2JqLnNyYy5oZWlnaHQgPSByZWN0LmhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybXNPYmoucGFydHMucHVzaChnZXRDcm9wUGFydChyZWN0KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgIC8vIGhhbmRsZXMgYSBsZWdhY3kgYnVnIG9uIGJnSW1hZ2VTdHJpcCwgYmFja2dyb3VuZCBodG1sIHRhZ1xuICAgICAgICAvLyBjb21wb25lbnQgRnVsbCBXaWR0aCBTdHJpcCBzdG9yZWQgaW5jb3JyZWN0IGltYWdlIHNvdXJjZSB3aWR0aCBhbmQgaGVpZ2h0XG4gICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfU1RSSVBfVElMRV9IT1JJWk9OVEFMOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfU1RSSVBfVElMRV9WRVJUSUNBTDpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX1NUUklQX1RJTEU6XG4gICAgICAgIGNhc2UgZml0dGluZ1R5cGVzLkxFR0FDWV9TVFJJUF9PUklHSU5BTF9TSVpFOlxuICAgICAgICAgICAgLy8gY3JvcCByZXF1ZXN0IG9mIHNvdXJjZSBpbWFnZSBpcyBub3Qgc3VwcG9ydGVkXG4gICAgICAgICAgICAvLyB1c2UgbGVnYWN5IGNyb3BcbiAgICAgICAgICAgIHRyYW5zZm9ybXNPYmoucGFydHMucHVzaChnZXRMZWdhY3lDcm9wUGFydCh0YXJnZXQpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfU1RSSVBfU0NBTEVfVE9fRklUOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfU1RSSVBfRklUX0FORF9USUxFOlxuICAgICAgICAgICAgLy8gbGVnYWN5IGZpdFxuICAgICAgICAgICAgdHJhbnNmb3Jtc09iai5wYXJ0cy5wdXNoKGdldExlZ2FjeUZpdFBhcnQodGFyZ2V0KSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX1NUUklQX1NDQUxFX1RPX0ZJTEw6XG4gICAgICAgICAgICAvLyBsZWdhY3kgZmlsbFxuICAgICAgICAgICAgdHJhbnNmb3Jtc09iai5wYXJ0cy5wdXNoKGdldExlZ2FjeUZpbGxQYXJ0KHRhcmdldCkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxufVxuLyoqXG4gKiByZXR1cm5zIGZpdCBwYXJ0IG9mIHRoZSBpbWFnZSB0cmFuc2Zvcm0gdXJpXG4gKiBAcGFyYW0ge29iamVjdH0gICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1zT2JqXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtVGFyZ2V0fSAgICB0YXJnZXRcbiAqXG4gKiBAcmV0dXJucyB7VHJhbnNmb3JtRml0UGFydH1cbiAqL1xuZnVuY3Rpb24gZ2V0Rml0UGFydCh0cmFuc2Zvcm1zT2JqLCB0YXJnZXQpIHtcbiAgICAvLyBjYWxjdWxhdGUgdGhlIHRyYW5zZm9ybWVkIGltYWdlIHNpemUgbmVlZGVkXG4gICAgY29uc3QgdHJhbnNmb3JtZWREYXRhID0gZ2V0VHJhbnNmb3JtRGF0YSh0cmFuc2Zvcm1zT2JqLnNyYy53aWR0aCwgdHJhbnNmb3Jtc09iai5zcmMuaGVpZ2h0LCB0cmFuc2Zvcm1UeXBlcy5GSVQsIHRhcmdldCwgdHJhbnNmb3Jtc09iai5kZXZpY2VQaXhlbFJhdGlvLCB0cmFuc2Zvcm1zT2JqLnVwc2NhbGVNZXRob2QpO1xuICAgIGNvbnN0IGlzTWlzc2luZ1NyY0RpbWVuc2lvbnMgPSAhdHJhbnNmb3Jtc09iai5zcmMud2lkdGggfHwgIXRyYW5zZm9ybXNPYmouc3JjLmhlaWdodDtcbiAgICBjb25zdCB0cmFuc2Zvcm1UeXBlID0gaXNNaXNzaW5nU3JjRGltZW5zaW9uc1xuICAgICAgICA/IHRyYW5zZm9ybVR5cGVzLkZJVFxuICAgICAgICA6IHRyYW5zZm9ybVR5cGVzLkZJTEw7XG4gICAgLy8gcmV0dXJuIGZpdCB0cmFuc2Zvcm0gZGF0YVxuICAgIHJldHVybiB7XG4gICAgICAgIHRyYW5zZm9ybVR5cGUsXG4gICAgICAgIHdpZHRoOiBNYXRoLnJvdW5kKHRyYW5zZm9ybWVkRGF0YS53aWR0aCksXG4gICAgICAgIGhlaWdodDogTWF0aC5yb3VuZCh0cmFuc2Zvcm1lZERhdGEuaGVpZ2h0KSxcbiAgICAgICAgYWxpZ25tZW50OiBhbGlnblR5cGVzTWFwLmNlbnRlcixcbiAgICAgICAgdXBzY2FsZTogdHJhbnNmb3JtZWREYXRhLnNjYWxlRmFjdG9yID4gMSxcbiAgICAgICAgZm9yY2VVU006IHRyYW5zZm9ybWVkRGF0YS5mb3JjZVVTTSxcbiAgICAgICAgc2NhbGVGYWN0b3I6IHRyYW5zZm9ybWVkRGF0YS5zY2FsZUZhY3RvcixcbiAgICAgICAgY3NzVXBzY2FsZU5lZWRlZDogdHJhbnNmb3JtZWREYXRhLmNzc1Vwc2NhbGVOZWVkZWQsXG4gICAgICAgIHVwc2NhbGVNZXRob2RWYWx1ZTogdHJhbnNmb3JtZWREYXRhLnVwc2NhbGVNZXRob2RWYWx1ZSxcbiAgICB9O1xufVxuLyoqXG4gKiByZXR1cm5zIGZpbGwgcGFydCBvZiB0aGUgaW1hZ2UgdHJhbnNmb3JtIHVyaVxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybU9iamVjdH0gdHJhbnNmb3Jtc09ialxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybVRhcmdldH0gdGFyZ2V0XG4gKlxuICogQHJldHVybnMge1RyYW5zZm9ybUZpbGxQYXJ0fVxuICovXG5mdW5jdGlvbiBnZXRGaWxsUGFydCh0cmFuc2Zvcm1zT2JqLCB0YXJnZXQpIHtcbiAgICAvLyBjYWxjdWxhdGUgdGhlIHRyYW5zZm9ybWVkIGltYWdlIHNpemUgbmVlZGVkXG4gICAgY29uc3QgdHJhbnNmb3JtZWREYXRhID0gZ2V0VHJhbnNmb3JtRGF0YSh0cmFuc2Zvcm1zT2JqLnNyYy53aWR0aCwgdHJhbnNmb3Jtc09iai5zcmMuaGVpZ2h0LCB0cmFuc2Zvcm1UeXBlcy5GSUxMLCB0YXJnZXQsIHRyYW5zZm9ybXNPYmouZGV2aWNlUGl4ZWxSYXRpbywgdHJhbnNmb3Jtc09iai51cHNjYWxlTWV0aG9kKTtcbiAgICBjb25zdCBmb2NhbFBvaW50ID0gZ2V0Rm9jYWxQb2ludCh0cmFuc2Zvcm1zT2JqLmZvY2FsUG9pbnQpO1xuICAgIGNvbnN0IHRyYW5zZm9ybVR5cGUgPSBmb2NhbFBvaW50XG4gICAgICAgID8gdHJhbnNmb3JtVHlwZXMuRklMTF9GT0NBTFxuICAgICAgICA6IHRyYW5zZm9ybVR5cGVzLkZJTEw7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHJhbnNmb3JtVHlwZSxcbiAgICAgICAgd2lkdGg6IE1hdGgucm91bmQodHJhbnNmb3JtZWREYXRhLndpZHRoKSxcbiAgICAgICAgaGVpZ2h0OiBNYXRoLnJvdW5kKHRyYW5zZm9ybWVkRGF0YS5oZWlnaHQpLFxuICAgICAgICBhbGlnbm1lbnQ6IGdldEFsaWdubWVudCh0YXJnZXQpLFxuICAgICAgICBmb2NhbFBvaW50WDogZm9jYWxQb2ludCAmJiBmb2NhbFBvaW50LngsXG4gICAgICAgIGZvY2FsUG9pbnRZOiBmb2NhbFBvaW50ICYmIGZvY2FsUG9pbnQueSxcbiAgICAgICAgdXBzY2FsZTogdHJhbnNmb3JtZWREYXRhLnNjYWxlRmFjdG9yID4gMSxcbiAgICAgICAgZm9yY2VVU006IHRyYW5zZm9ybWVkRGF0YS5mb3JjZVVTTSxcbiAgICAgICAgc2NhbGVGYWN0b3I6IHRyYW5zZm9ybWVkRGF0YS5zY2FsZUZhY3RvcixcbiAgICAgICAgY3NzVXBzY2FsZU5lZWRlZDogdHJhbnNmb3JtZWREYXRhLmNzc1Vwc2NhbGVOZWVkZWQsXG4gICAgICAgIHVwc2NhbGVNZXRob2RWYWx1ZTogdHJhbnNmb3JtZWREYXRhLnVwc2NhbGVNZXRob2RWYWx1ZSxcbiAgICB9O1xufVxuLyoqXG4gKiByZXR1cm5zIGZpbGwgcGFydCBvZiB0aGUgaW1hZ2UgdHJhbnNmb3JtIHVyaVxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybU9iamVjdH0gdHJhbnNmb3Jtc09ialxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybVRhcmdldH0gdGFyZ2V0XG4gKlxuICogQHJldHVybnMge1RyYW5zZm9ybUZpdFBhcnR9XG4gKi9cbmZ1bmN0aW9uIGdldFN0cmV0Y2hQYXJ0KHRyYW5zZm9ybXNPYmosIHRhcmdldCkge1xuICAgIC8vIHN0cmV0Y2ggZGF0YVxuICAgIGNvbnN0IHNjYWxlRmFjdG9yID0gZ2V0U2NhbGVGYWN0b3IodHJhbnNmb3Jtc09iai5zcmMud2lkdGgsIHRyYW5zZm9ybXNPYmouc3JjLmhlaWdodCwgdGFyZ2V0LndpZHRoLCB0YXJnZXQuaGVpZ2h0LCB0cmFuc2Zvcm1UeXBlcy5GSUxMKTtcbiAgICBjb25zdCBjbG9uZWRUYXJnZXQgPSB7IC4uLnRhcmdldCB9O1xuICAgIGNsb25lZFRhcmdldC53aWR0aCA9IHRyYW5zZm9ybXNPYmouc3JjLndpZHRoICogc2NhbGVGYWN0b3I7XG4gICAgY2xvbmVkVGFyZ2V0LmhlaWdodCA9IHRyYW5zZm9ybXNPYmouc3JjLmhlaWdodCAqIHNjYWxlRmFjdG9yO1xuICAgIC8vIHJldHVybiBzdHJldGNoIHBhcnRcbiAgICByZXR1cm4gZ2V0Rml0UGFydCh0cmFuc2Zvcm1zT2JqLCBjbG9uZWRUYXJnZXQpO1xufVxuLyoqXG4gKiByZXR1cm5zIGNyb3AgcGFydCBvZiB0aGUgaW1hZ2UgdHJhbnNmb3JtIHVyaVxuICogQHBhcmFtIHt7eDogbnVtYmVyLCB5OiBudW1iZXIsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyfX0gIHJlY3QgICAgIHgsIHksIHdpZHRoLCBoZWlnaHRcbiAqXG4gKiBAcmV0dXJucyB7VHJhbnNmb3JtQ3JvcFBhcnR9XG4gKi9cbmZ1bmN0aW9uIGdldENyb3BQYXJ0KHJlY3QpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICB0cmFuc2Zvcm1UeXBlOiB0cmFuc2Zvcm1UeXBlcy5DUk9QLFxuICAgICAgICB4OiBNYXRoLnJvdW5kKHJlY3QueCksXG4gICAgICAgIHk6IE1hdGgucm91bmQocmVjdC55KSxcbiAgICAgICAgd2lkdGg6IE1hdGgucm91bmQocmVjdC53aWR0aCksXG4gICAgICAgIGhlaWdodDogTWF0aC5yb3VuZChyZWN0LmhlaWdodCksXG4gICAgICAgIHVwc2NhbGU6IGZhbHNlLFxuICAgICAgICBmb3JjZVVTTTogZmFsc2UsXG4gICAgICAgIHNjYWxlRmFjdG9yOiAxLFxuICAgICAgICBjc3NVcHNjYWxlTmVlZGVkOiBmYWxzZSxcbiAgICB9O1xufVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBoYW5kbGVzIGEgbGVnYWN5IGJ1ZyBvbiBiZ0ltYWdlU3RyaXAsIGJhY2tncm91bmQgaHRtbCB0YWdcbi8vIGNvbXBvbmVudCBGdWxsIFdpZHRoIFN0cmlwIHN0b3JlZCBpbmNvcnJlY3QgaW1hZ2Ugc291cmNlIHdpZHRoIGFuZCBoZWlnaHRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLyoqXG4gKiByZXR1cm5zIGZpdCBwYXJ0IG9mIHRoZSBpbWFnZSB0cmFuc2Zvcm0gdXJpXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtVGFyZ2V0fSAgICB0YXJnZXRcbiAqXG4gKiBAcmV0dXJucyB7VHJhbnNmb3JtTGVnYWN5Rml0UGFydH1cbiAqL1xuZnVuY3Rpb24gZ2V0TGVnYWN5Rml0UGFydCh0YXJnZXQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICB0cmFuc2Zvcm1UeXBlOiB0cmFuc2Zvcm1UeXBlcy5GSVQsXG4gICAgICAgIHdpZHRoOiBNYXRoLnJvdW5kKHRhcmdldC53aWR0aCksXG4gICAgICAgIGhlaWdodDogTWF0aC5yb3VuZCh0YXJnZXQuaGVpZ2h0KSxcbiAgICAgICAgdXBzY2FsZTogZmFsc2UsXG4gICAgICAgIGZvcmNlVVNNOiB0cnVlLFxuICAgICAgICBzY2FsZUZhY3RvcjogMSxcbiAgICAgICAgY3NzVXBzY2FsZU5lZWRlZDogZmFsc2UsXG4gICAgfTtcbn1cbi8qKlxuICogcmV0dXJucyBmaWxsIHBhcnQgb2YgdGhlIGltYWdlIHRyYW5zZm9ybSB1cmlcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1UYXJnZXR9ICAgIHRhcmdldFxuICpcbiAqIEByZXR1cm5zIHtUcmFuc2Zvcm1MZWdhY3lGaWxsUGFydH1cbiAqL1xuZnVuY3Rpb24gZ2V0TGVnYWN5RmlsbFBhcnQodGFyZ2V0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHJhbnNmb3JtVHlwZTogdHJhbnNmb3JtVHlwZXMuTEVHQUNZX0ZJTEwsXG4gICAgICAgIHdpZHRoOiBNYXRoLnJvdW5kKHRhcmdldC53aWR0aCksXG4gICAgICAgIGhlaWdodDogTWF0aC5yb3VuZCh0YXJnZXQuaGVpZ2h0KSxcbiAgICAgICAgYWxpZ25tZW50OiBnZXRBbGlnbm1lbnQodGFyZ2V0KSxcbiAgICAgICAgdXBzY2FsZTogZmFsc2UsXG4gICAgICAgIGZvcmNlVVNNOiB0cnVlLFxuICAgICAgICBzY2FsZUZhY3RvcjogMSxcbiAgICAgICAgY3NzVXBzY2FsZU5lZWRlZDogZmFsc2UsXG4gICAgfTtcbn1cbi8qKlxuICogcmV0dXJucyBsZWdhY3kgY3JvcCBwYXJ0IG9mIHRoZSBpbWFnZSB0cmFuc2Zvcm0gdXJpXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtVGFyZ2V0fSAgICAgdGFyZ2V0XG4gKlxuICogQHJldHVybnMge1RyYW5zZm9ybUxlZ2FjeUNyb3BQYXJ0fVxuICovXG5mdW5jdGlvbiBnZXRMZWdhY3lDcm9wUGFydCh0YXJnZXQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICB0cmFuc2Zvcm1UeXBlOiB0cmFuc2Zvcm1UeXBlcy5MRUdBQ1lfQ1JPUCxcbiAgICAgICAgd2lkdGg6IE1hdGgucm91bmQodGFyZ2V0LndpZHRoKSxcbiAgICAgICAgaGVpZ2h0OiBNYXRoLnJvdW5kKHRhcmdldC5oZWlnaHQpLFxuICAgICAgICBhbGlnbm1lbnQ6IGdldEFsaWdubWVudCh0YXJnZXQpLFxuICAgICAgICB1cHNjYWxlOiBmYWxzZSxcbiAgICAgICAgZm9yY2VVU006IGZhbHNlLFxuICAgICAgICBzY2FsZUZhY3RvcjogMSxcbiAgICAgICAgY3NzVXBzY2FsZU5lZWRlZDogZmFsc2UsXG4gICAgfTtcbn1cbmV4cG9ydCB7IHNldFRyYW5zZm9ybVBhcnRzIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZVRyYW5zZm9ybVBhcnRzLmpzLm1hcCIsImltcG9ydCB7IGxhc3QgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IGdldFByZWZlcnJlZEltYWdlUXVhbGl0eSwgcm91bmRUb0ZpeGVkIH0gZnJvbSAnLi9pbWFnZVNlcnZpY2VVdGlscyc7XG5pbXBvcnQgeyBkZWZhdWx0VVNNLCBmaWxlVHlwZSwgaW1hZ2VGaWx0ZXJzLCB0cmFuc2Zvcm1UeXBlcywgfSBmcm9tICcuL2ltYWdlU2VydmljZUNvbnN0YW50cyc7XG4vKipcbiAqIHJldHVybnMgaW1hZ2UgZmlsdGVycyBwYXJ0IG9mIHRoZSBpbWFnZSB0cmFuc2Zvcm0gdXJpXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtT2JqZWN0fSAgICB0cmFuc2Zvcm1zT2JqICAgIHRyYW5zZm9ybSBwYXJ0cyBvYmplY3RcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1PcHRpb25zfSAgIFtvcHRpb25zXVxuICovXG5mdW5jdGlvbiBzZXRUcmFuc2Zvcm1PcHRpb25zKHRyYW5zZm9ybXNPYmosIG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICAvLyBvcHRpb25zIC0gZ2VuZXJhbFxuICAgIHRyYW5zZm9ybXNPYmoucXVhbGl0eSA9IGdldFF1YWxpdHkodHJhbnNmb3Jtc09iaiwgb3B0aW9ucyk7XG4gICAgdHJhbnNmb3Jtc09iai5wcm9ncmVzc2l2ZSA9IGdldFByb2dyZXNzaXZlKG9wdGlvbnMpO1xuICAgIHRyYW5zZm9ybXNPYmoud2F0ZXJtYXJrID0gZ2V0V2F0ZXJtYXJrKG9wdGlvbnMpO1xuICAgIHRyYW5zZm9ybXNPYmouYXV0b0VuY29kZSA9IG9wdGlvbnMuYXV0b0VuY29kZSA/PyB0cnVlO1xuICAgIHRyYW5zZm9ybXNPYmouZW5jb2RpbmcgPSBvcHRpb25zPy5lbmNvZGluZztcbiAgICAvLyBvcHRpb25zIC0gZmlsdGVycyAmIGFkanVzdG1lbnRzXG4gICAgdHJhbnNmb3Jtc09iai51bnNoYXJwTWFzayA9IGdldFVuc2hhcnBNYXNrKHRyYW5zZm9ybXNPYmosIG9wdGlvbnMpO1xuICAgIHRyYW5zZm9ybXNPYmouZmlsdGVycyA9IGdldEZpbHRlcnMob3B0aW9ucyk7XG59XG4vKipcbiAqXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtT3B0aW9uc30gICBvcHRpb25zXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBnZXRXYXRlcm1hcmsob3B0aW9ucykge1xuICAgIHJldHVybiBvcHRpb25zLndhdGVybWFyaztcbn1cbi8qKlxuICogcmV0dXJucyBwcm9ncmVzc2l2ZSBpZiByZXF1aXJlZFxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybU9wdGlvbnN9ICAgb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBnZXRQcm9ncmVzc2l2ZShvcHRpb25zKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMucHJvZ3Jlc3NpdmUgIT09IGZhbHNlO1xufVxuLyoqXG4gKiByZXR1cm5zIGltYWdlIGZpbHRlcnMgcGFydCBvZiB0aGUgaW1hZ2UgdHJhbnNmb3JtIHVyaVxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybU9iamVjdH0gICAgdHJhbnNmb3Jtc09iaiAgICB0cmFuc2Zvcm0gcGFydHMgb2JqZWN0XG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtT3B0aW9uc30gICBvcHRpb25zXG4gKlxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZnVuY3Rpb24gZ2V0UXVhbGl0eSh0cmFuc2Zvcm1zT2JqLCBvcHRpb25zKSB7XG4gICAgY29uc3QgaXNQTkcgPSB0cmFuc2Zvcm1zT2JqLmZpbGVUeXBlID09PSBmaWxlVHlwZS5QTkc7XG4gICAgY29uc3QgaXNKUEcgPSB0cmFuc2Zvcm1zT2JqLmZpbGVUeXBlID09PSBmaWxlVHlwZS5KUEc7XG4gICAgY29uc3QgaXNXRUJQID0gdHJhbnNmb3Jtc09iai5maWxlVHlwZSA9PT0gZmlsZVR5cGUuV0VCUDtcbiAgICBjb25zdCBpc0FWSUYgPSB0cmFuc2Zvcm1zT2JqLmZpbGVUeXBlID09PSBmaWxlVHlwZS5BVklGO1xuICAgIGNvbnN0IGlzUXVhbGl0eVN1cHBvcnRlZCA9IGlzSlBHIHx8IGlzUE5HIHx8IGlzV0VCUCB8fCBpc0FWSUY7XG4gICAgaWYgKGlzUXVhbGl0eVN1cHBvcnRlZCkge1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1EYXRhID0gbGFzdCh0cmFuc2Zvcm1zT2JqLnBhcnRzKTtcbiAgICAgICAgY29uc3QgZGVmYXVsdFF1YWxpdHkgPSBnZXRQcmVmZXJyZWRJbWFnZVF1YWxpdHkodHJhbnNmb3JtRGF0YS53aWR0aCwgdHJhbnNmb3JtRGF0YS5oZWlnaHQpO1xuICAgICAgICBsZXQgcXVhbGl0eSA9IG9wdGlvbnMucXVhbGl0eSAmJiBvcHRpb25zLnF1YWxpdHkgPj0gNSAmJiBvcHRpb25zLnF1YWxpdHkgPD0gOTBcbiAgICAgICAgICAgID8gb3B0aW9ucy5xdWFsaXR5XG4gICAgICAgICAgICA6IGRlZmF1bHRRdWFsaXR5O1xuICAgICAgICAvLyBpbmNyZWFzZSBxdWFsaXR5IGJ5IDUgZm9yIHdlYnAgaW1hZ2VzXG4gICAgICAgIHF1YWxpdHkgPSBpc1BORyA/IHF1YWxpdHkgKyA1IDogcXVhbGl0eTtcbiAgICAgICAgcmV0dXJuIHF1YWxpdHk7XG4gICAgfVxuICAgIC8vIHF1YWxpdHkgbm90IHN1cHBvcnRlZFxuICAgIHJldHVybiAwO1xufVxuLyoqXG4gKiByZXR1cm5zIHRoZSBkZXNpcmVkIHRyYW5zZm9ybWVkIGltYWdlIGZpbHRlcnNcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1PcHRpb25zfSAgIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyB7b2JqZWN0fVxuICovXG5mdW5jdGlvbiBnZXRGaWx0ZXJzKG9wdGlvbnMpIHtcbiAgICBjb25zdCBmaWx0ZXJPcHRpb25zID0gb3B0aW9ucy5maWx0ZXJzIHx8IHt9O1xuICAgIGNvbnN0IGZpbHRlcnMgPSB7fTtcbiAgICAvLyBjb250cmFzdFxuICAgIGlmIChpc1ZhbGlkSW1hZ2VGaWx0ZXIoZmlsdGVyT3B0aW9uc1tpbWFnZUZpbHRlcnMuQ09OVFJBU1RdLCAtMTAwLCAxMDApKSB7XG4gICAgICAgIGZpbHRlcnNbaW1hZ2VGaWx0ZXJzLkNPTlRSQVNUXSA9IGZpbHRlck9wdGlvbnNbaW1hZ2VGaWx0ZXJzLkNPTlRSQVNUXTtcbiAgICB9XG4gICAgLy8gYnJpZ2h0bmVzc1xuICAgIGlmIChpc1ZhbGlkSW1hZ2VGaWx0ZXIoZmlsdGVyT3B0aW9uc1tpbWFnZUZpbHRlcnMuQlJJR0hUTkVTU10sIC0xMDAsIDEwMCkpIHtcbiAgICAgICAgZmlsdGVyc1tpbWFnZUZpbHRlcnMuQlJJR0hUTkVTU10gPSBmaWx0ZXJPcHRpb25zW2ltYWdlRmlsdGVycy5CUklHSFRORVNTXTtcbiAgICB9XG4gICAgLy8gc2F0dXJhdGlvblxuICAgIGlmIChpc1ZhbGlkSW1hZ2VGaWx0ZXIoZmlsdGVyT3B0aW9uc1tpbWFnZUZpbHRlcnMuU0FUVVJBVElPTl0sIC0xMDAsIDEwMCkpIHtcbiAgICAgICAgZmlsdGVyc1tpbWFnZUZpbHRlcnMuU0FUVVJBVElPTl0gPSBmaWx0ZXJPcHRpb25zW2ltYWdlRmlsdGVycy5TQVRVUkFUSU9OXTtcbiAgICB9XG4gICAgLy8gaHVlXG4gICAgaWYgKGlzVmFsaWRJbWFnZUZpbHRlcihmaWx0ZXJPcHRpb25zW2ltYWdlRmlsdGVycy5IVUVdLCAtMTgwLCAxODApKSB7XG4gICAgICAgIGZpbHRlcnNbaW1hZ2VGaWx0ZXJzLkhVRV0gPSBmaWx0ZXJPcHRpb25zW2ltYWdlRmlsdGVycy5IVUVdO1xuICAgIH1cbiAgICAvLyBibHVyXG4gICAgaWYgKGlzVmFsaWRJbWFnZUZpbHRlcihmaWx0ZXJPcHRpb25zW2ltYWdlRmlsdGVycy5CTFVSXSwgMCwgMTAwKSkge1xuICAgICAgICBmaWx0ZXJzW2ltYWdlRmlsdGVycy5CTFVSXSA9IGZpbHRlck9wdGlvbnNbaW1hZ2VGaWx0ZXJzLkJMVVJdO1xuICAgIH1cbiAgICByZXR1cm4gZmlsdGVycztcbn1cbi8qKlxuICogaW5kaWNhdGVzIGlmIHJlcXVlc3RlZCBmaWx0ZXIgdmFsdWUgaXMgdmFsaWRcbiAqIEBwYXJhbSB7bnVtYmVyfHVuZGVmaW5lZH0gIGZpbHRlclZhbHVlICAgICBmaWx0ZXIncyB2YWx1ZVxuICogQHBhcmFtIHtudW1iZXJ9ICBtaW5WYWx1ZSAgICAgICAgbWluIHJhbmdlXG4gKiBAcGFyYW0ge251bWJlcn0gIG1heFZhbHVlICAgICAgICBtYXggcmFuZ2VcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNWYWxpZEltYWdlRmlsdGVyKGZpbHRlclZhbHVlLCBtaW5WYWx1ZSwgbWF4VmFsdWUpIHtcbiAgICAvLyBjaGVjayBpZiBmaWx0ZXIgbmFtZSBhbmQgZmlsdGVyIHZhbHVlcyByYW5nZSB2YWxpZFxuICAgIHJldHVybiAodHlwZW9mIGZpbHRlclZhbHVlID09PSAnbnVtYmVyJyAmJlxuICAgICAgICAhaXNOYU4oZmlsdGVyVmFsdWUpICYmXG4gICAgICAgIGZpbHRlclZhbHVlICE9PSAwICYmXG4gICAgICAgIGZpbHRlclZhbHVlID49IG1pblZhbHVlICYmXG4gICAgICAgIGZpbHRlclZhbHVlIDw9IG1heFZhbHVlKTtcbn1cbi8qKlxuICogcmV0dXJucyB0aGUgZGVzaXJlZCB0cmFuc2Zvcm1lZCBpbWFnZSB1blNoYXJwTWFzayB2YWx1ZXNcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1PYmplY3R9ICAgIHRyYW5zZm9ybXNPYmogICAgdHJhbnNmb3JtIHBhcnRzIG9iamVjdFxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybU9wdGlvbnN9ICAgb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHtvYmplY3R9XG4gKi9cbmZ1bmN0aW9uIGdldFVuc2hhcnBNYXNrKHRyYW5zZm9ybXNPYmosIG9wdGlvbnMpIHtcbiAgICAvLyBJZiBvcHRpb25zLnVuc2hhcnBNYXNrIGlzIGEgdmFsaWQgdmFsdWUsIHVzZSBpdFxuICAgIGlmIChpc1VTTVZhbGlkKG9wdGlvbnMudW5zaGFycE1hc2spKSB7XG4gICAgICAgIC8vIElmIHdlIGdvdCB1c20sIGNoYW5nZSB2YWx1ZXMgdG8gaGF2ZSB0cmFpbGluZyB6ZXJvcyAoLjAwKSwgZWxzZSByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByYWRpdXM6IHJvdW5kVG9GaXhlZChvcHRpb25zLnVuc2hhcnBNYXNrPy5yYWRpdXMsIDIpLFxuICAgICAgICAgICAgYW1vdW50OiByb3VuZFRvRml4ZWQob3B0aW9ucy51bnNoYXJwTWFzaz8uYW1vdW50LCAyKSxcbiAgICAgICAgICAgIHRocmVzaG9sZDogcm91bmRUb0ZpeGVkKG9wdGlvbnMudW5zaGFycE1hc2s/LnRocmVzaG9sZCwgMiksXG4gICAgICAgIH07XG4gICAgICAgIC8vIGlmIG9wdGlvbnMudW5zaGFycE1hc2sgaXMgbm90IGFsbCB6ZXJvcyBhbmQgbm90IHZhbGlkIGFuZCB1c20gc2hvdWxkIGJlIHVzZWQsIHVzZSBkZWZhdWx0XG4gICAgfVxuICAgIGVsc2UgaWYgKCFpc1plcm9VU00ob3B0aW9ucy51bnNoYXJwTWFzaykgJiYgaXNVU01OZWVkZWQodHJhbnNmb3Jtc09iaikpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRVU007XG4gICAgfVxuICAgIHJldHVybjtcbn1cbi8qKlxuICogaW5kaWNhdGVzIGlmIHVzbSBpcyBuZWVkZWRcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1PYmplY3R9ICAgICAgdHJhbnNmb3Jtc09iaiAgIHRyYW5zZm9ybSBwYXJ0cyBvYmplY3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNVU01OZWVkZWQodHJhbnNmb3Jtc09iaikge1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIGRvIG5vdCBhcHBseSB1c20gaWYgdHJhbnNmb3JtZWQgaW1hZ2Ugd2lkdGggJiBoZWlnaHQgaXMgc2FtZSBhcyBzb3VyY2UgaW1hZ2Ugb3IgbGFyZ2VyXG4gICAgLy8gYW5kIG5vIGZvcmNlIHVzbSBpcyBkZXNpcmVkXG4gICAgLy8gYW5kIHRyYW5zZm9ybSB0eXBlIGlzIG5vdCBmaXRcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCB0cmFuc2Zvcm1QYXJ0ID0gbGFzdCh0cmFuc2Zvcm1zT2JqLnBhcnRzKTtcbiAgICBjb25zdCB1cHNjYWxlID0gdHJhbnNmb3JtUGFydC5zY2FsZUZhY3RvciA+PSAxO1xuICAgIC8vIHJldHVybiBpZiB1c20gaXMgbmVlZGVkXG4gICAgcmV0dXJuICghdXBzY2FsZSB8fFxuICAgICAgICB0cmFuc2Zvcm1QYXJ0LmZvcmNlVVNNIHx8XG4gICAgICAgIHRyYW5zZm9ybVBhcnQudHJhbnNmb3JtVHlwZSA9PT0gdHJhbnNmb3JtVHlwZXMuRklUKTtcbn1cbi8qKlxuICogaW5kaWNhdGVzIGlmIGFsbCB1c20gdmFsdWVzIGFyZSBwcmVzZW50ZWQgYW5kIGluIHJhbmdlXG4gKiBAcGFyYW0ge09wdGlvblVuc2hhcnBNYXNrfHVuZGVmaW5lZH0gIHVzbSAgICAgdW5zaGFycCBtYXNrXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzVVNNVmFsaWQodXNtKSB7XG4gICAgdXNtID0gdXNtIHx8IHt9O1xuICAgIGNvbnN0IHJhZGl1cyA9IHR5cGVvZiB1c20ucmFkaXVzID09PSAnbnVtYmVyJyAmJlxuICAgICAgICAhaXNOYU4odXNtLnJhZGl1cykgJiZcbiAgICAgICAgdXNtLnJhZGl1cyA+PSAwLjEgJiZcbiAgICAgICAgdXNtLnJhZGl1cyA8PSA1MDA7XG4gICAgY29uc3QgYW1vdW50ID0gdHlwZW9mIHVzbS5hbW91bnQgPT09ICdudW1iZXInICYmXG4gICAgICAgICFpc05hTih1c20uYW1vdW50KSAmJlxuICAgICAgICB1c20uYW1vdW50ID49IDAgJiZcbiAgICAgICAgdXNtLmFtb3VudCA8PSAxMDtcbiAgICBjb25zdCB0aHJlc2hvbGQgPSB0eXBlb2YgdXNtLnRocmVzaG9sZCA9PT0gJ251bWJlcicgJiZcbiAgICAgICAgIWlzTmFOKHVzbS50aHJlc2hvbGQpICYmXG4gICAgICAgIHVzbS50aHJlc2hvbGQgPj0gMCAmJlxuICAgICAgICB1c20udGhyZXNob2xkIDw9IDI1NTtcbiAgICAvLyByZXR1cm4gaXMgYSB2YWxpZCBVU00gZGF0YVxuICAgIHJldHVybiByYWRpdXMgJiYgYW1vdW50ICYmIHRocmVzaG9sZDtcbn1cbi8qKlxuICogaW5kaWNhdGVzIGlmIGFsbCB1c20gdmFsdWVzIGFyZSBwcmVzZW50ZWQgYW5kIGFyZSB6ZXJvLiBhbiBleHBsaWNpdCByZXF1ZXN0IHRvIG5vdCBhcHBseSB1c21cbiAqIEBwYXJhbSB7T3B0aW9uVW5zaGFycE1hc2t8dW5kZWZpbmVkfSAgdXNtICAgICB1bnNoYXJwIG1hc2tcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNaZXJvVVNNKHVzbSkge1xuICAgIHVzbSA9IHVzbSB8fCB7fTtcbiAgICByZXR1cm4gKHR5cGVvZiB1c20ucmFkaXVzID09PSAnbnVtYmVyJyAmJlxuICAgICAgICAhaXNOYU4odXNtLnJhZGl1cykgJiZcbiAgICAgICAgdXNtLnJhZGl1cyA9PT0gMCAmJlxuICAgICAgICB0eXBlb2YgdXNtLmFtb3VudCA9PT0gJ251bWJlcicgJiZcbiAgICAgICAgIWlzTmFOKHVzbS5hbW91bnQpICYmXG4gICAgICAgIHVzbS5hbW91bnQgPT09IDAgJiZcbiAgICAgICAgdHlwZW9mIHVzbS50aHJlc2hvbGQgPT09ICdudW1iZXInICYmXG4gICAgICAgICFpc05hTih1c20udGhyZXNob2xkKSAmJlxuICAgICAgICB1c20udGhyZXNob2xkID09PSAwKTtcbn1cbmV4cG9ydCB7IHNldFRyYW5zZm9ybU9wdGlvbnMgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWltYWdlVHJhbnNmb3JtT3B0aW9ucy5qcy5tYXAiLCJpbXBvcnQgeyBpc1NFT0JvdCwgZ2V0RmlsZVR5cGUsIGdldEZpbGVOYW1lLCBnZXRGaWxlRXh0ZW5zaW9uLCBnZXREZXZpY2VQaXhlbFJhdGlvLCBnZXRVcHNjYWxlU3RyaW5nLCBpc0ltYWdlVHJhbnNmb3JtQXBwbGljYWJsZSwgaW1hZ2VJc0FuaW1hdGVkLCB9IGZyb20gJy4uL2hlbHBlcnMvaW1hZ2VTZXJ2aWNlVXRpbHMnO1xuaW1wb3J0IHsgaXNNb2JpbGUgfSBmcm9tICcuLi9oZWxwZXJzL2Jyb3dzZXJGZWF0dXJlU3VwcG9ydCc7XG5pbXBvcnQgeyBzZXRUcmFuc2Zvcm1QYXJ0cyB9IGZyb20gJy4uL2hlbHBlcnMvaW1hZ2VUcmFuc2Zvcm1QYXJ0cyc7XG5pbXBvcnQgeyBzZXRUcmFuc2Zvcm1PcHRpb25zIH0gZnJvbSAnLi4vaGVscGVycy9pbWFnZVRyYW5zZm9ybU9wdGlvbnMnO1xuaW1wb3J0IHsgTU9CSUxFX01BWF9CR19TSVRFX0xFR0FDWV9XSURUSCwgRFNLVFBfTUFYX0JHX1NJVEVfTEVHQUNZX1dJRFRILCBNT0JJTEVfTUFYX0JHX1NJVEVfTEVHQUNZX0hFSUdIVCwgRFNLVFBfTUFYX0JHX1NJVEVfTEVHQUNZX0hFSUdIVCwgZml0dGluZ1R5cGVzLCB9IGZyb20gJy4uL2hlbHBlcnMvaW1hZ2VTZXJ2aWNlQ29uc3RhbnRzJztcbi8qKlxuICogcmV0dXJucyBpbWFnZSB0cmFuc2Zvcm0gZGF0YVxuICpcbiAqIEBwYXJhbSB7Rml0dGluZ1R5cGV9ICAgICAgICAgICAgIGZpdHRpbmdUeXBlICAgICAgICAgaW1hZ2VTZXJ2aWNlc1R5cGVzLmZpdHRpbmdUeXBlc1xuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybVNvdXJjZX0gICAgc3JjICAgICAgICAgICAgICAgICBzb3VyY2UgaW1hZ2VcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1UYXJnZXR9ICAgIHRhcmdldCAgICAgICAgICAgICAgdGFyZ2V0IGNvbXBvbmVudFxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybU9wdGlvbnN9ICAgW29wdGlvbnNdICAgICAgICAgICB0cmFuc2Zvcm0gb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIHtJbWFnZVRyYW5zZm9ybU9iamVjdH1cbiAqL1xuZnVuY3Rpb24gZ2V0VHJhbnNmb3JtKGZpdHRpbmdUeXBlLCBzcmMsIHRhcmdldCwgb3B0aW9ucykge1xuICAgIGNvbnN0IF9pc1NFT0JvdCA9IGlzU0VPQm90KG9wdGlvbnMpO1xuICAgIGNvbnN0IGZpbGVUeXBlID0gZ2V0RmlsZVR5cGUoc3JjLmlkKTtcbiAgICBjb25zdCBmaWxlTmFtZSA9IGdldEZpbGVOYW1lKHNyYy5pZCwgc3JjLm5hbWUpO1xuICAgIGNvbnN0IGRldmljZVBpeGVsUmF0aW8gPSBfaXNTRU9Cb3QgPyAxIDogZ2V0RGV2aWNlUGl4ZWxSYXRpbyh0YXJnZXQpO1xuICAgIGNvbnN0IGZpbGVFeHRlbnNpb24gPSBnZXRGaWxlRXh0ZW5zaW9uKHNyYy5pZCk7XG4gICAgY29uc3QgcHJlZmVycmVkRXh0ZW5zaW9uID0gZmlsZUV4dGVuc2lvbjtcbiAgICBjb25zdCBjYW5UcmFuc2Zvcm1JbWFnZSA9IGlzSW1hZ2VUcmFuc2Zvcm1BcHBsaWNhYmxlKHNyYy5pZCwgb3B0aW9ucz8uaGFzQW5pbWF0aW9uLCBvcHRpb25zPy5hbGxvd0FuaW1hdGVkVHJhbnNmb3JtLCBvcHRpb25zPy5hbGxvd0Z1bGxHSUZUcmFuc2Zvcm1hdGlvbik7XG4gICAgY29uc3QgdHJhbnNmb3Jtc09iaiA9IHtcbiAgICAgICAgZmlsZU5hbWUsXG4gICAgICAgIGZpbGVFeHRlbnNpb24sXG4gICAgICAgIGZpbGVUeXBlLFxuICAgICAgICBmaXR0aW5nVHlwZSxcbiAgICAgICAgcHJlZmVycmVkRXh0ZW5zaW9uLFxuICAgICAgICBzcmM6IHtcbiAgICAgICAgICAgIGlkOiBzcmMuaWQsXG4gICAgICAgICAgICB3aWR0aDogc3JjLndpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiBzcmMuaGVpZ2h0LFxuICAgICAgICAgICAgaXNDcm9wcGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGlzQW5pbWF0ZWQ6IGltYWdlSXNBbmltYXRlZChzcmMuaWQsIG9wdGlvbnM/Lmhhc0FuaW1hdGlvbiksXG4gICAgICAgIH0sXG4gICAgICAgIGZvY2FsUG9pbnQ6IHtcbiAgICAgICAgICAgIHg6IHNyYy5mb2NhbFBvaW50ICYmIHNyYy5mb2NhbFBvaW50LngsXG4gICAgICAgICAgICB5OiBzcmMuZm9jYWxQb2ludCAmJiBzcmMuZm9jYWxQb2ludC55LFxuICAgICAgICB9LFxuICAgICAgICBwYXJ0czogW10sXG4gICAgICAgIC8vIG9wdGlvbnMgLSBnZW5lcmFsXG4gICAgICAgIGRldmljZVBpeGVsUmF0aW8sXG4gICAgICAgIHF1YWxpdHk6IDAsXG4gICAgICAgIHVwc2NhbGVNZXRob2Q6IGdldFVwc2NhbGVTdHJpbmcob3B0aW9ucyksXG4gICAgICAgIHByb2dyZXNzaXZlOiB0cnVlLFxuICAgICAgICB3YXRlcm1hcms6ICcnLFxuICAgICAgICB1bnNoYXJwTWFzazoge30sXG4gICAgICAgIGZpbHRlcnM6IHt9LFxuICAgICAgICB0cmFuc2Zvcm1lZDogY2FuVHJhbnNmb3JtSW1hZ2UsXG4gICAgICAgIGFsbG93RnVsbEdJRlRyYW5zZm9ybWF0aW9uOiBvcHRpb25zPy5hbGxvd0Z1bGxHSUZUcmFuc2Zvcm1hdGlvbixcbiAgICAgICAgaXNQbGFjZWhvbGRlckZsb3c6IG9wdGlvbnM/LmlzUGxhY2Vob2xkZXJGbG93LFxuICAgIH07XG4gICAgaWYgKGNhblRyYW5zZm9ybUltYWdlKSB7XG4gICAgICAgIHNldFRyYW5zZm9ybVBhcnRzKHRyYW5zZm9ybXNPYmosIHNyYywgdGFyZ2V0KTtcbiAgICAgICAgc2V0VHJhbnNmb3JtT3B0aW9ucyh0cmFuc2Zvcm1zT2JqLCBvcHRpb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIHRyYW5zZm9ybXNPYmo7XG59XG4vKipcbiAqIHJldHVybnMgdGFyZ2V0IGRhdGFcbiAqIGhhbmRsZSBsZWdhY3kgQkcgc2l0ZSBpZiBuZWVkZWRcbiAqXG4gKiBAcGFyYW0ge0ZpdHRpbmdUeXBlfSAgICAgICAgICAgICBmaXR0aW5nVHlwZSAgICAgICAgIGltYWdlU2VydmljZXNUeXBlcy5maXR0aW5nVHlwZXNcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1Tb3VyY2V9ICAgIHNyYyAgICAgICAgICAgICAgICAgc291cmNlIGltYWdlXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtVGFyZ2V0fSAgICB0YXJnZXQgICAgICAgICAgICAgIHRhcmdldCBjb21wb25lbnRcbiAqXG4gKiBAcmV0dXJucyB7T2JqZWN0fVxuICovXG5mdW5jdGlvbiBnZXRUYXJnZXQoZml0dGluZ1R5cGUsIHNyYywgdGFyZ2V0KSB7XG4gICAgY29uc3QgdGFyZ2V0T2JqID0geyAuLi50YXJnZXQgfTtcbiAgICBjb25zdCBfaXNNb2JpbGUgPSBpc01vYmlsZSgpO1xuICAgIC8vIGhhbmRsZSBzaXRlIEJHIGxlZ2FjeSBmaXR0aW5nIHR5cGVzIChkZXNrdG9wICYgbW9iaWxlKVxuICAgIHN3aXRjaCAoZml0dGluZ1R5cGUpIHtcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX0JHX0ZJVF9BTkRfVElMRTpcbiAgICAgICAgY2FzZSBmaXR0aW5nVHlwZXMuTEVHQUNZX0JHX0ZJVF9BTkRfVElMRV9IT1JJWk9OVEFMOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfQkdfRklUX0FORF9USUxFX1ZFUlRJQ0FMOlxuICAgICAgICBjYXNlIGZpdHRpbmdUeXBlcy5MRUdBQ1lfQkdfTk9STUFMOlxuICAgICAgICAgICAgY29uc3QgbWF4QkdTaXRlTGVnYWN5V2lkdGggPSBfaXNNb2JpbGVcbiAgICAgICAgICAgICAgICA/IE1PQklMRV9NQVhfQkdfU0lURV9MRUdBQ1lfV0lEVEhcbiAgICAgICAgICAgICAgICA6IERTS1RQX01BWF9CR19TSVRFX0xFR0FDWV9XSURUSDtcbiAgICAgICAgICAgIGNvbnN0IG1heEJHU2l0ZUxlZ2FjeUhlaWdodCA9IF9pc01vYmlsZVxuICAgICAgICAgICAgICAgID8gTU9CSUxFX01BWF9CR19TSVRFX0xFR0FDWV9IRUlHSFRcbiAgICAgICAgICAgICAgICA6IERTS1RQX01BWF9CR19TSVRFX0xFR0FDWV9IRUlHSFQ7XG4gICAgICAgICAgICB0YXJnZXRPYmoud2lkdGggPSBNYXRoLm1pbihtYXhCR1NpdGVMZWdhY3lXaWR0aCwgc3JjLndpZHRoKTtcbiAgICAgICAgICAgIHRhcmdldE9iai5oZWlnaHQgPSBNYXRoLm1pbihtYXhCR1NpdGVMZWdhY3lIZWlnaHQsIE1hdGgucm91bmQodGFyZ2V0T2JqLndpZHRoIC8gKHNyYy53aWR0aCAvIHNyYy5oZWlnaHQpKSk7XG4gICAgICAgICAgICAvLyBmb3IgbGVnYWN5IHR5cGVzIGZvcmNlIGh0bWxUYWc9J2JnJyBhbmQgZGV2aWNlUGl4ZWxSYXRpbz0xXG4gICAgICAgICAgICB0YXJnZXRPYmoucGl4ZWxBc3BlY3RSYXRpbyA9IDE7XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXRPYmo7XG59XG5leHBvcnQgeyBnZXRUcmFuc2Zvcm0sIGdldFRhcmdldCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dHJhbnNmb3JtLmpzLm1hcCIsImltcG9ydCB7IGdldEZlYXR1cmUgfSBmcm9tICcuL2ltYWdlU2VydmljZUZlYXR1cmVTdXBwb3J0T2JqZWN0Jztcbi8qKlxuICogZ2V0IGEgYnJvd3NlciBkZXRlY3Rpb24gaWYgcnVubmluZyBvbiBtb2JpbGUgZGV2aWNlXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzTW9iaWxlKCkge1xuICAgIHJldHVybiBnZXRGZWF0dXJlKCdpc01vYmlsZScpO1xufVxuZXhwb3J0IHsgaXNNb2JpbGUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJyb3dzZXJGZWF0dXJlU3VwcG9ydC5qcy5tYXAiLCJpbXBvcnQgeyB0ZW1wbGF0ZSB9IGZyb20gJy4uL2hlbHBlcnMvdXRpbHMnO1xuaW1wb3J0IHsgaW1hZ2VGaWx0ZXJzLCB0cmFuc2Zvcm1UeXBlcywgQVBJX1ZFUlNJT04sIGZpbGVUeXBlLCBlbmNvZGluZ1R5cGVzLCB9IGZyb20gJy4uL2hlbHBlcnMvaW1hZ2VTZXJ2aWNlQ29uc3RhbnRzJztcbmltcG9ydCB7IGlzR0lGIH0gZnJvbSAnLi4vaGVscGVycy9pbWFnZVNlcnZpY2VVdGlscyc7XG4vLyB0cmFuc2Zvcm0gdGVtcGxhdGVzXG5jb25zdCBmaXRUZW1wbGF0ZSA9IHRlbXBsYXRlIGBmaXQvd18keyd3aWR0aCd9LGhfJHsnaGVpZ2h0J31gO1xuY29uc3QgZmlsbFRlbXBsYXRlID0gdGVtcGxhdGUgYGZpbGwvd18keyd3aWR0aCd9LGhfJHsnaGVpZ2h0J30sYWxfJHsnYWxpZ25tZW50J31gO1xuY29uc3QgZmlsbEZvY2FsVGVtcGxhdGUgPSB0ZW1wbGF0ZSBgZmlsbC93XyR7J3dpZHRoJ30saF8keydoZWlnaHQnfSxmcF8keydmb2NhbFBvaW50WCd9XyR7J2ZvY2FsUG9pbnRZJ31gO1xuY29uc3QgY3JvcFRlbXBsYXRlID0gdGVtcGxhdGUgYGNyb3AveF8keyd4J30seV8keyd5J30sd18keyd3aWR0aCd9LGhfJHsnaGVpZ2h0J31gO1xuLy8gbGVnYWN5IHRlbXBsYXRlc1xuY29uc3QgbGVnYWN5Q3JvcFRlbXBsYXRlID0gdGVtcGxhdGUgYGNyb3Avd18keyd3aWR0aCd9LGhfJHsnaGVpZ2h0J30sYWxfJHsnYWxpZ25tZW50J31gO1xuY29uc3QgbGVnYWN5RmlsbFRlbXBsYXRlID0gdGVtcGxhdGUgYGZpbGwvd18keyd3aWR0aCd9LGhfJHsnaGVpZ2h0J30sYWxfJHsnYWxpZ25tZW50J31gO1xuLy8gdXBzY2FsZSB0ZW1wbGF0ZVxuY29uc3QgdXBzY2FsZVRlbXBsYXRlID0gdGVtcGxhdGUgYCxsZ18keyd1cHNjYWxlTWV0aG9kVmFsdWUnfWA7XG4vLyBvcHRpb25zIHRlbXBsYXRlc1xuY29uc3QgcXVhbGl0eVRlbXBsYXRlID0gdGVtcGxhdGUgYCxxXyR7J3F1YWxpdHknfWA7XG5jb25zdCBxdWFsaXR5QXV0b1RlbXBsYXRlID0gdGVtcGxhdGUgYCxxdWFsaXR5X2F1dG9gO1xuY29uc3QgdW5TaGFycE1hc2tUZW1wbGF0ZSA9IHRlbXBsYXRlIGAsdXNtXyR7J3JhZGl1cyd9XyR7J2Ftb3VudCd9XyR7J3RocmVzaG9sZCd9YDtcbmNvbnN0IG5vblByb2dyZXNzaXZlVGVtcGxhdGUgPSB0ZW1wbGF0ZSBgLGJsYDtcbmNvbnN0IHdhdGVybWFya1RlbXBsYXRlID0gdGVtcGxhdGUgYCx3bV8keyd3YXRlcm1hcmsnfWA7XG5jb25zdCBmaWx0ZXJUZW1wbGF0ZXNNYXAgPSB7XG4gICAgW2ltYWdlRmlsdGVycy5DT05UUkFTVF06IHRlbXBsYXRlIGAsY29uXyR7J2NvbnRyYXN0J31gLFxuICAgIFtpbWFnZUZpbHRlcnMuQlJJR0hUTkVTU106IHRlbXBsYXRlIGAsYnJfJHsnYnJpZ2h0bmVzcyd9YCxcbiAgICBbaW1hZ2VGaWx0ZXJzLlNBVFVSQVRJT05dOiB0ZW1wbGF0ZSBgLHNhdF8keydzYXR1cmF0aW9uJ31gLFxuICAgIFtpbWFnZUZpbHRlcnMuSFVFXTogdGVtcGxhdGUgYCxodWVfJHsnaHVlJ31gLFxuICAgIFtpbWFnZUZpbHRlcnMuQkxVUl06IHRlbXBsYXRlIGAsYmx1cl8keydibHVyJ31gLFxufTtcbmNvbnN0IGF1dG9FbmNvZGVUZW1wbGF0ZSA9IHRlbXBsYXRlIGAsZW5jX2F1dG9gO1xuY29uc3QgQVZJRkVuY29kZVRlbXBsYXRlID0gdGVtcGxhdGUgYCxlbmNfYXZpZmA7XG5jb25zdCBwQVZJRkVuY29kZVRlbXBsYXRlID0gdGVtcGxhdGUgYCxlbmNfcGF2aWZgO1xuY29uc3QgYW5pbWF0ZWRUcmFuc2Zvcm1UZW1wbGF0ZSA9IHRlbXBsYXRlIGAscHN0cmA7XG5jb25zdCBhbmltYXRlZEdJRlRyYW5zZm9ybVRlbXBsYXRlID0gdGVtcGxhdGUgYCxhbm1fYWxsYDtcbi8qKlxuICogcmV0dXJucyBpbWFnZSB0cmFuc2Zvcm0gdXJpXG4gKiBAcGFyYW0ge29iamVjdH0gIHRyYW5zZm9ybXNPYmpcbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBnZXRJbWFnZVVSSSh0cmFuc2Zvcm1zT2JqKSB7XG4gICAgLy8gY29uc3RydWN0IGltYWdlIHRyYW5zZm9ybXNcbiAgICBjb25zdCB0cmFuc2Zvcm1zT2JqU3RyQXJyID0gW107XG4gICAgLy8gY29uc3RydWN0IHRyYW5zZm9ybVxuICAgIHRyYW5zZm9ybXNPYmoucGFydHMuZm9yRWFjaCgodHJhbnNmb3JtUGFydCkgPT4ge1xuICAgICAgICBzd2l0Y2ggKHRyYW5zZm9ybVBhcnQudHJhbnNmb3JtVHlwZSkge1xuICAgICAgICAgICAgY2FzZSB0cmFuc2Zvcm1UeXBlcy5DUk9QOlxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybXNPYmpTdHJBcnIucHVzaChjcm9wVGVtcGxhdGUodHJhbnNmb3JtUGFydCkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSB0cmFuc2Zvcm1UeXBlcy5MRUdBQ1lfQ1JPUDpcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1zT2JqU3RyQXJyLnB1c2gobGVnYWN5Q3JvcFRlbXBsYXRlKHRyYW5zZm9ybVBhcnQpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgdHJhbnNmb3JtVHlwZXMuTEVHQUNZX0ZJTEw6XG4gICAgICAgICAgICAgICAgbGV0IGxlZ2FjeUZpbGxTdHIgPSBsZWdhY3lGaWxsVGVtcGxhdGUodHJhbnNmb3JtUGFydCk7XG4gICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVBhcnQudXBzY2FsZSkge1xuICAgICAgICAgICAgICAgICAgICBsZWdhY3lGaWxsU3RyICs9IHVwc2NhbGVUZW1wbGF0ZSh0cmFuc2Zvcm1QYXJ0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdHJhbnNmb3Jtc09ialN0ckFyci5wdXNoKGxlZ2FjeUZpbGxTdHIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSB0cmFuc2Zvcm1UeXBlcy5GSVQ6XG4gICAgICAgICAgICAgICAgbGV0IGZpdFN0ciA9IGZpdFRlbXBsYXRlKHRyYW5zZm9ybVBhcnQpO1xuICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1QYXJ0LnVwc2NhbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZml0U3RyICs9IHVwc2NhbGVUZW1wbGF0ZSh0cmFuc2Zvcm1QYXJ0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdHJhbnNmb3Jtc09ialN0ckFyci5wdXNoKGZpdFN0cik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIHRyYW5zZm9ybVR5cGVzLkZJTEw6XG4gICAgICAgICAgICAgICAgbGV0IGZpbGxTdHIgPSBmaWxsVGVtcGxhdGUodHJhbnNmb3JtUGFydCk7XG4gICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVBhcnQudXBzY2FsZSkge1xuICAgICAgICAgICAgICAgICAgICBmaWxsU3RyICs9IHVwc2NhbGVUZW1wbGF0ZSh0cmFuc2Zvcm1QYXJ0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdHJhbnNmb3Jtc09ialN0ckFyci5wdXNoKGZpbGxTdHIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSB0cmFuc2Zvcm1UeXBlcy5GSUxMX0ZPQ0FMOlxuICAgICAgICAgICAgICAgIGxldCBmaWxsRm9jYWxTdHIgPSBmaWxsRm9jYWxUZW1wbGF0ZSh0cmFuc2Zvcm1QYXJ0KTtcbiAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtUGFydC51cHNjYWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGxGb2NhbFN0ciArPSB1cHNjYWxlVGVtcGxhdGUodHJhbnNmb3JtUGFydCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybXNPYmpTdHJBcnIucHVzaChmaWxsRm9jYWxTdHIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgbGV0IHRyYW5zZm9ybXNTdHIgPSB0cmFuc2Zvcm1zT2JqU3RyQXJyLmpvaW4oJy8nKTtcbiAgICAvLyBjb25zdHJ1Y3QgdHJhbnNmb3JtIG9wdGlvbnNcbiAgICAvLyBxdWFsaXR5XG4gICAgaWYgKHRyYW5zZm9ybXNPYmoucXVhbGl0eSkge1xuICAgICAgICB0cmFuc2Zvcm1zU3RyICs9IHF1YWxpdHlUZW1wbGF0ZSh0cmFuc2Zvcm1zT2JqKTtcbiAgICB9XG4gICAgLy8gdW4tc2hhcnAgbWFza1xuICAgIGlmICh0cmFuc2Zvcm1zT2JqLnVuc2hhcnBNYXNrKSB7XG4gICAgICAgIHRyYW5zZm9ybXNTdHIgKz0gdW5TaGFycE1hc2tUZW1wbGF0ZSh0cmFuc2Zvcm1zT2JqLnVuc2hhcnBNYXNrKTtcbiAgICB9XG4gICAgLy8gcHJvZ3Jlc3NpdmVcbiAgICBpZiAoIXRyYW5zZm9ybXNPYmoucHJvZ3Jlc3NpdmUpIHtcbiAgICAgICAgdHJhbnNmb3Jtc1N0ciArPSBub25Qcm9ncmVzc2l2ZVRlbXBsYXRlKHRyYW5zZm9ybXNPYmopO1xuICAgIH1cbiAgICAvLyB3YXRlcm1hcmtcbiAgICBpZiAodHJhbnNmb3Jtc09iai53YXRlcm1hcmspIHtcbiAgICAgICAgdHJhbnNmb3Jtc1N0ciArPSB3YXRlcm1hcmtUZW1wbGF0ZSh0cmFuc2Zvcm1zT2JqKTtcbiAgICB9XG4gICAgLy8gZmlsdGVyc1xuICAgIGlmICh0cmFuc2Zvcm1zT2JqLmZpbHRlcnMpIHtcbiAgICAgICAgdHJhbnNmb3Jtc1N0ciArPSBPYmplY3Qua2V5cyh0cmFuc2Zvcm1zT2JqLmZpbHRlcnMpXG4gICAgICAgICAgICAubWFwKChmaWx0ZXJOYW1lKSA9PiBmaWx0ZXJUZW1wbGF0ZXNNYXBbZmlsdGVyTmFtZV0odHJhbnNmb3Jtc09iai5maWx0ZXJzKSlcbiAgICAgICAgICAgIC5qb2luKCcnKTtcbiAgICB9XG4gICAgLy8gZW5jb2RpbmdcbiAgICBpZiAodHJhbnNmb3Jtc09iai5maWxlVHlwZSAhPT0gZmlsZVR5cGUuR0lGKSB7XG4gICAgICAgIGlmICh0cmFuc2Zvcm1zT2JqLmVuY29kaW5nID09PSBlbmNvZGluZ1R5cGVzLkFWSUYpIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybXNTdHIgKz0gQVZJRkVuY29kZVRlbXBsYXRlKHRyYW5zZm9ybXNPYmopO1xuICAgICAgICAgICAgdHJhbnNmb3Jtc1N0ciArPSBxdWFsaXR5QXV0b1RlbXBsYXRlKHRyYW5zZm9ybXNPYmopO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRyYW5zZm9ybXNPYmouZW5jb2RpbmcgPT09IGVuY29kaW5nVHlwZXMuUEFWSUYpIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybXNTdHIgKz0gcEFWSUZFbmNvZGVUZW1wbGF0ZSh0cmFuc2Zvcm1zT2JqKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybXNTdHIgKz0gcXVhbGl0eUF1dG9UZW1wbGF0ZSh0cmFuc2Zvcm1zT2JqKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0cmFuc2Zvcm1zT2JqLmF1dG9FbmNvZGUpIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybXNTdHIgKz0gYXV0b0VuY29kZVRlbXBsYXRlKHRyYW5zZm9ybXNPYmopO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIGFuaW1hdGVkIGltYWdlcyB0cmFuc2Zvcm1zXG4gICAgaWYgKHRyYW5zZm9ybXNPYmouc3JjPy5pc0FuaW1hdGVkICYmIHRyYW5zZm9ybXNPYmoudHJhbnNmb3JtZWQpIHtcbiAgICAgICAgY29uc3QgaXNHaWYgPSBpc0dJRih0cmFuc2Zvcm1zT2JqLnNyYy5pZCk7XG4gICAgICAgIGNvbnN0IGlzUGxhY2Vob2xkZXJGbG93ID0gdHJhbnNmb3Jtc09iai5pc1BsYWNlaG9sZGVyRmxvdyA9PT0gdHJ1ZTtcbiAgICAgICAgY29uc3QgYWxsb3dGdWxsR0lGVHJhbnNmb3JtYXRpb24gPSB0cmFuc2Zvcm1zT2JqLmFsbG93RnVsbEdJRlRyYW5zZm9ybWF0aW9uID09PSB0cnVlO1xuICAgICAgICBpZiAoaXNQbGFjZWhvbGRlckZsb3cpIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybXNTdHIgKz0gYW5pbWF0ZWRUcmFuc2Zvcm1UZW1wbGF0ZSh0cmFuc2Zvcm1zT2JqKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc0dpZiAmJiBhbGxvd0Z1bGxHSUZUcmFuc2Zvcm1hdGlvbikge1xuICAgICAgICAgICAgLy8gTm9uLXBsYWNlaG9sZGVyIGZsb3cgKyBHSUYgKyBmbGFnIGVuYWJsZWQ6IHVzZSBhbm1fYWxsXG4gICAgICAgICAgICB0cmFuc2Zvcm1zU3RyICs9IGFuaW1hdGVkR0lGVHJhbnNmb3JtVGVtcGxhdGUodHJhbnNmb3Jtc09iaik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gaW1hZ2UgdXJsIHN0cmluZ1xuICAgIHJldHVybiBgJHt0cmFuc2Zvcm1zT2JqLnNyYy5pZH0vJHtBUElfVkVSU0lPTn0vJHt0cmFuc2Zvcm1zU3RyfS8ke3RyYW5zZm9ybXNPYmouZmlsZU5hbWV9LiR7dHJhbnNmb3Jtc09iai5wcmVmZXJyZWRFeHRlbnNpb259YDtcbn1cbmV4cG9ydCB7IGdldEltYWdlVVJJIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD10cmFuc2Zvcm1zLmpzLm1hcCIsImltcG9ydCB7IGlzQVZJRiwgaXNJbWFnZVRyYW5zZm9ybUFwcGxpY2FibGUsIGlzV0VCUCwgfSBmcm9tICcuLi9oZWxwZXJzL2ltYWdlU2VydmljZVV0aWxzJztcbmltcG9ydCB7IGdldEltYWdlVVJJIH0gZnJvbSAnLi4vZW5naW5lcy90cmFuc2Zvcm1zJztcbmltcG9ydCB7IGdldFRyYW5zZm9ybSB9IGZyb20gJy4vdHJhbnNmb3JtJztcbi8qKlxuICogcmV0dXJucyBpbWFnZSB0cmFuc2Zvcm0gdXJpXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9ICAgICAgICAgICAgICAgICAgZml0dGluZ1R5cGUgICAgICAgICBpbWFnZVNlcnZpY2VzVHlwZXMuZml0dGluZ1R5cGVzXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtU291cmNlfSAgICBzcmMgICAgICAgICAgICAgICAgIHNvdXJjZSBpbWFnZVxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybVRhcmdldH0gICAgdGFyZ2V0ICAgICAgICAgICAgICB0YXJnZXQgY29tcG9uZW50XG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtT3B0aW9uc30gICBvcHRpb25zICAgICAgICAgICAgIHRyYW5zZm9ybSBvcHRpb25zXG4gKiBAcGFyYW0ge09iamVjdH0gICAgICAgICAgICAgICAgICBbdHJhbnNmb3JtT2JqXSAgICAgIHRyYW5zZm9ybSBkYXRhIG9iamVjdCB0byB1c2VcbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBnZXRVUkkoZml0dGluZ1R5cGUsIHNyYywgdGFyZ2V0LCBvcHRpb25zID0ge30sIHRyYW5zZm9ybU9iaikge1xuICAgIC8vIGNoZWNrIGlmIGltYWdlIHRyYW5zZm9ybWF0aW9uIGlzIGFwcGxpY2FibGUgKGUuZy4gLmdpZiwgLndpeF9tcClcbiAgICBpZiAoaXNJbWFnZVRyYW5zZm9ybUFwcGxpY2FibGUoc3JjLmlkLCBvcHRpb25zPy5oYXNBbmltYXRpb24sIG9wdGlvbnM/LmFsbG93QW5pbWF0ZWRUcmFuc2Zvcm0sIG9wdGlvbnM/LmFsbG93RnVsbEdJRlRyYW5zZm9ybWF0aW9uKSkge1xuICAgICAgICBpZiAoaXNXRUJQKHNyYy5pZCkgfHwgaXNBVklGKHNyYy5pZCkpIHtcbiAgICAgICAgICAgIC8vIGV4Y2x1ZGUgYWxpZ25tZW50LCBmb2NhbFBvaW50IGFuZCBjcm9wIGZyb20gd2VicCBhbmQgYXZpZiB0cmFuc2Zvcm1hdGlvbiBpbiBvcmRlciBub3QgdG8gYnJlYWsgd2VicCBvciBhdmlmIGltYWdlcyBiZWZvcmUgdHJhbnNmb3JtYXRpb24gd2FzIGVuYWJsZWRcbiAgICAgICAgICAgIGNvbnN0IHsgYWxpZ25tZW50LCAuLi50cmFuc2Zvcm1UYXJnZXQgfSA9IHRhcmdldDtcbiAgICAgICAgICAgIHNyYy5mb2NhbFBvaW50ID0geyB4OiB1bmRlZmluZWQsIHk6IHVuZGVmaW5lZCB9O1xuICAgICAgICAgICAgZGVsZXRlIHNyYz8uY3JvcDtcbiAgICAgICAgICAgIHRyYW5zZm9ybU9iaiA9IGdldFRyYW5zZm9ybShmaXR0aW5nVHlwZSwgc3JjLCB0cmFuc2Zvcm1UYXJnZXQsIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdHJhbnNmb3JtT2JqID1cbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1PYmogfHwgZ2V0VHJhbnNmb3JtKGZpdHRpbmdUeXBlLCBzcmMsIHRhcmdldCwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gc2V0IHRoZSB1cmkgcHJvcGVydHlcbiAgICAgICAgcmV0dXJuIGdldEltYWdlVVJJKHRyYW5zZm9ybU9iaik7XG4gICAgfVxuICAgIHJldHVybiBzcmMuaWQ7XG59XG5leHBvcnQgeyBnZXRVUkkgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVyaS5qcy5tYXAiLCJpbXBvcnQgeyBhbGlnblR5cGVzLCBmaXR0aW5nVHlwZXMgfSBmcm9tICcuL2ltYWdlU2VydmljZUNvbnN0YW50cyc7XG5pbXBvcnQgeyBpc1BORyB9IGZyb20gJy4vaW1hZ2VTZXJ2aWNlVXRpbHMnO1xuY29uc3QgQUxJR05fVFlQRV9UT19QT1NJVElPTiA9IHtcbiAgICBbYWxpZ25UeXBlcy5DRU5URVJdOiAnNTAlIDUwJScsXG4gICAgW2FsaWduVHlwZXMuVE9QX0xFRlRdOiAnMCUgMCUnLFxuICAgIFthbGlnblR5cGVzLlRPUF9SSUdIVF06ICcxMDAlIDAlJyxcbiAgICBbYWxpZ25UeXBlcy5UT1BdOiAnNTAlIDAlJyxcbiAgICBbYWxpZ25UeXBlcy5CT1RUT01fTEVGVF06ICcwJSAxMDAlJyxcbiAgICBbYWxpZ25UeXBlcy5CT1RUT01fUklHSFRdOiAnMTAwJSAxMDAlJyxcbiAgICBbYWxpZ25UeXBlcy5CT1RUT01dOiAnNTAlIDEwMCUnLFxuICAgIFthbGlnblR5cGVzLlJJR0hUXTogJzEwMCUgNTAlJyxcbiAgICBbYWxpZ25UeXBlcy5MRUZUXTogJzAlIDUwJScsXG59O1xuY29uc3QgUE9TSVRJT05fVE9fQUxJR05fVFlQRSA9IE9iamVjdC5lbnRyaWVzKEFMSUdOX1RZUEVfVE9fUE9TSVRJT04pLnJlZHVjZSgoYWNjLCBbYWxpZ24sIHBvc2l0aW9uXSkgPT4ge1xuICAgIGFjY1twb3NpdGlvbl0gPSBhbGlnbjtcbiAgICByZXR1cm4gYWNjO1xufSwge30pO1xuY29uc3QgVElMRV9GSVRUSU5HX1RZUEVTID0gW1xuICAgIGZpdHRpbmdUeXBlcy5USUxFLFxuICAgIGZpdHRpbmdUeXBlcy5USUxFX0hPUklaT05UQUwsXG4gICAgZml0dGluZ1R5cGVzLlRJTEVfVkVSVElDQUwsXG4gICAgZml0dGluZ1R5cGVzLkxFR0FDWV9CR19GSVRfQU5EX1RJTEUsXG4gICAgZml0dGluZ1R5cGVzLkxFR0FDWV9CR19GSVRfQU5EX1RJTEVfSE9SSVpPTlRBTCxcbiAgICBmaXR0aW5nVHlwZXMuTEVHQUNZX0JHX0ZJVF9BTkRfVElMRV9WRVJUSUNBTCxcbl07XG5jb25zdCBOT05fU0NBTElOR19GSVRUSU5HX1RZUEVTID0gW1xuICAgIGZpdHRpbmdUeXBlcy5MRUdBQ1lfT1JJR0lOQUxfU0laRSxcbiAgICBmaXR0aW5nVHlwZXMuT1JJR0lOQUxfU0laRSxcbiAgICBmaXR0aW5nVHlwZXMuTEVHQUNZX0JHX05PUk1BTCxcbl07XG5mdW5jdGlvbiBnZXRJc0Zha2VUaWxlKGZpdHRpbmdUeXBlLCBzcmMsIHsgd2lkdGg6IHRhcmdldFdpZHRoLCBoZWlnaHQ6IHRhcmdldEhlaWdodCwgfSkge1xuICAgIHJldHVybiAoZml0dGluZ1R5cGUgPT09IGZpdHRpbmdUeXBlcy5USUxFICYmXG4gICAgICAgIHNyYy53aWR0aCA+IHRhcmdldFdpZHRoICYmXG4gICAgICAgIHNyYy5oZWlnaHQgPiB0YXJnZXRIZWlnaHQpO1xufVxuLyoqXG4gKlxuICogQHBhcmFtIHtGaXR0aW5nVHlwZX0gICAgICAgICAgICAgZml0dGluZ1R5cGUgICAgICBpbWFnZVNlcnZpY2VzVHlwZXMuZml0dGluZ1R5cGVzXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtU291cmNlfSAgICBzcmMgICAgICAgICAgICAgIHNvdXJjZSBpbWFnZVxuICogQHBhcmFtIHtEaW1lbnNpb25zfSAgICAgICAgICAgICAgdGFyZ2V0ICAgICAgICAgICB0YXJnZXQgY29udGFpbmVyIGRpbWVuc2lvbnNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gICAgICAgICAgICAgICAgIFtpc1NFT0JvdD1mYWxzZV0gd2hldGhlciBpdCBpcyBhIHJlbmRlciBmb3IgYSBib3QgcmVxdWVzdFxuICogQHJldHVybnMge0RpbWVuc2lvbnN9IHNjYWxlZCBkaW1lbnNpb25zXG4gKi9cbmZ1bmN0aW9uIGdldFNjYWxlZERpbWVuc2lvbnMoZml0dGluZ1R5cGUsIHNyYywgeyB3aWR0aCwgaGVpZ2h0IH0sIGlzU0VPQm90ID0gZmFsc2UpIHtcbiAgICBpZiAoaXNTRU9Cb3QpIHtcbiAgICAgICAgcmV0dXJuIHsgd2lkdGgsIGhlaWdodCB9O1xuICAgIH1cbiAgICBjb25zdCBpc1NjYWxhYmxlID0gIU5PTl9TQ0FMSU5HX0ZJVFRJTkdfVFlQRVMuaW5jbHVkZXMoZml0dGluZ1R5cGUpO1xuICAgIGNvbnN0IGlzRmFrZVRpbGUgPSBnZXRJc0Zha2VUaWxlKGZpdHRpbmdUeXBlLCBzcmMsIHsgd2lkdGgsIGhlaWdodCB9KTtcbiAgICBjb25zdCBpc1RpbGUgPSAhaXNGYWtlVGlsZSAmJiBUSUxFX0ZJVFRJTkdfVFlQRVMuaW5jbHVkZXMoZml0dGluZ1R5cGUpO1xuICAgIGNvbnN0IF93aWR0aCA9IGlzVGlsZSA/IHNyYy53aWR0aCA6IHdpZHRoO1xuICAgIGNvbnN0IF9oZWlnaHQgPSBpc1RpbGUgPyBzcmMuaGVpZ2h0IDogaGVpZ2h0O1xuICAgIGNvbnN0IHNjYWxlRmFjdG9yID0gaXNTY2FsYWJsZVxuICAgICAgICA/IGdldFNjYWxlRmFjdG9yQnlXaWR0aChfd2lkdGgsIGlzUE5HKHNyYy5pZCkpXG4gICAgICAgIDogMTtcbiAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aDogaXNGYWtlVGlsZSA/IDE5MjAgOiBfd2lkdGggKiBzY2FsZUZhY3RvcixcbiAgICAgICAgaGVpZ2h0OiBfaGVpZ2h0ICogc2NhbGVGYWN0b3IsXG4gICAgfTtcbn1cbi8qKlxuICpcbiAqIEBwYXJhbSB7Rml0dGluZ1R5cGV9IGZpdHRpbmdUeXBlICBpbWFnZVNlcnZpY2VzVHlwZXMuZml0dGluZ1R5cGVzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGlzRmFrZVRpbGVcbiAqIEByZXR1cm5zIHtzdHJpbmd9IGZpdHRpbmdUeXBlXG4gKi9cbmZ1bmN0aW9uIGdldENvbnZlcnRlZEZpdHRpbmcoZml0dGluZ1R5cGUsIGlzRmFrZVRpbGUpIHtcbiAgICBjb25zdCBpc1RpbGUgPSBUSUxFX0ZJVFRJTkdfVFlQRVMuaW5jbHVkZXMoZml0dGluZ1R5cGUpICYmICFpc0Zha2VUaWxlO1xuICAgIGNvbnN0IGlzRmlsbCA9IGZpdHRpbmdUeXBlID09PSBmaXR0aW5nVHlwZXMuU0NBTEVfVE9fRklMTDtcbiAgICByZXR1cm4gaXNGaWxsIHx8IGlzVGlsZSA/IGZpdHRpbmdUeXBlcy5TQ0FMRV9UT19GSVQgOiBmaXR0aW5nVHlwZTtcbn1cbi8qKlxuICpcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1Tb3VyY2V9ICAgIHNyYyAgICAgICAgICAgICAgICAgc291cmNlIGltYWdlXG4gKiBAcGFyYW0ge251bWJlciB8fCAnJ30gICAgICAgICAgICB3aWR0aFxuICogQHBhcmFtIHtudW1iZXIgfHwgJyd9ICAgICAgICAgICAgaGVpZ2h0XG4gKiBAcmV0dXJucyB7RGltZW5zaW9uc30gICAgd2lkdGgsIGhlaWdodFxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZVRhcmdldERpbWVuc2lvbnMoc3JjLCB7IHdpZHRoLCBoZWlnaHQgfSkge1xuICAgIGlmICghd2lkdGggfHwgIWhlaWdodCkge1xuICAgICAgICBjb25zdCBfd2lkdGggPSB3aWR0aCB8fCBNYXRoLm1pbig5ODAsIHNyYy53aWR0aCk7XG4gICAgICAgIGNvbnN0IGhlaWdodFJhdGlvID0gX3dpZHRoIC8gc3JjLndpZHRoO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgd2lkdGg6IF93aWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0IHx8IHNyYy5oZWlnaHQgKiBoZWlnaHRSYXRpbyxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHsgd2lkdGgsIGhlaWdodCB9O1xufVxuLyoqXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGlzSGlnaFF1YWxpdHlcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZnVuY3Rpb24gZ2V0U2NhbGVGYWN0b3JCeVdpZHRoKHdpZHRoLCBpc0hpZ2hRdWFsaXR5KSB7XG4gICAgaWYgKHdpZHRoID4gOTAwKSB7XG4gICAgICAgIHJldHVybiBpc0hpZ2hRdWFsaXR5ID8gMC4wNSA6IDAuMTU7XG4gICAgfVxuICAgIGVsc2UgaWYgKHdpZHRoID4gNTAwKSB7XG4gICAgICAgIHJldHVybiBpc0hpZ2hRdWFsaXR5ID8gMC4xIDogMC4xODtcbiAgICB9XG4gICAgZWxzZSBpZiAod2lkdGggPiAyMDApIHtcbiAgICAgICAgcmV0dXJuIDAuMjU7XG4gICAgfVxuICAgIHJldHVybiAxO1xufVxuLyoqXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoXG4gKiBAcGFyYW0ge0ZpdHRpbmdUeXBlfSBmaXR0aW5nVHlwZSBpbWFnZVNlcnZpY2VzVHlwZXMuZml0dGluZ1R5cGVzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGlzU0VPQm90XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmZ1bmN0aW9uIGdldEJsdXJWYWx1ZSh3aWR0aCwgZml0dGluZ1R5cGUsIGlzU0VPQm90KSB7XG4gICAgaWYgKGlzU0VPQm90KSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBpZiAoVElMRV9GSVRUSU5HX1RZUEVTLmluY2x1ZGVzKGZpdHRpbmdUeXBlKSkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgaWYgKHdpZHRoID4gMjAwKSB7XG4gICAgICAgIHJldHVybiAyO1xuICAgIH1cbiAgICByZXR1cm4gMztcbn1cbi8qKlxuICpcbiAqIEBwYXJhbSB7Rml0dGluZ1R5cGV9ICAgICAgICAgICAgICAgICAgICAgICBmaXR0aW5nVHlwZVxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybVNvdXJjZX0gICAgICAgICAgICAgIHNyYyAgICAgICAgICAgICAgICAgIHNvdXJjZSBpbWFnZVxuICogQHBhcmFtIHt7d2lkdGg/OiBudW1iZXI7IGhlaWdodD86IG51bWJlcn19IHRhcmdldCAgICAgICAgICAgICAgIHRhcmdldCBlbGVtZW50XG4gKiBAcGFyYW0ge3N0cmluZ30gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsaWdubWVudD0nY2VudGVyJ11cbiAqIEByZXR1cm5zIHt7aW1nfSwge2NvbnRhaW5lcn19XG4gKi9cbmZ1bmN0aW9uIGdldENTU092ZXJyaWRlcyhmaXR0aW5nVHlwZSwgc3JjLCB0YXJnZXQsIGFsaWdubWVudCA9ICdjZW50ZXInKSB7XG4gICAgY29uc3QgcmV0dXJuVmFsdWUgPSB7XG4gICAgICAgIGltZzoge30sXG4gICAgICAgIGNvbnRhaW5lcjoge30sXG4gICAgfTtcbiAgICBpZiAoZml0dGluZ1R5cGUgPT09IGZpdHRpbmdUeXBlcy5TQ0FMRV9UT19GSUxMKSB7XG4gICAgICAgIGNvbnN0IGFsaWduVHlwZUZyb21Gb2NhbFBvaW50ID0gc3JjLmZvY2FsUG9pbnQgJiYgY29udmVydEZvY2FsUG9pbnRUb0FsaWduVHlwZShzcmMuZm9jYWxQb2ludCk7XG4gICAgICAgIGNvbnN0IGFsaWduVHlwZSA9IGFsaWduVHlwZUZyb21Gb2NhbFBvaW50IHx8IGFsaWdubWVudDtcbiAgICAgICAgaWYgKHNyYy5mb2NhbFBvaW50ICYmICFhbGlnblR5cGVGcm9tRm9jYWxQb2ludCkge1xuICAgICAgICAgICAgcmV0dXJuVmFsdWUuaW1nID0ge1xuICAgICAgICAgICAgICAgIG9iamVjdFBvc2l0aW9uOiBjb252ZXJ0RmlsbEZvY2FsVG9Qb3NpdGlvbihzcmMsIHRhcmdldCwgc3JjLmZvY2FsUG9pbnQpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVyblZhbHVlLmltZyA9IHtcbiAgICAgICAgICAgICAgICBvYmplY3RQb3NpdGlvbjogQUxJR05fVFlQRV9UT19QT1NJVElPTlthbGlnblR5cGVdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmIChbZml0dGluZ1R5cGVzLkxFR0FDWV9PUklHSU5BTF9TSVpFLCBmaXR0aW5nVHlwZXMuT1JJR0lOQUxfU0laRV0uaW5jbHVkZXMoZml0dGluZ1R5cGUpKSB7XG4gICAgICAgIHJldHVyblZhbHVlLmltZyA9IHtcbiAgICAgICAgICAgIG9iamVjdEZpdDogJ25vbmUnLFxuICAgICAgICAgICAgdG9wOiAnYXV0bycsXG4gICAgICAgICAgICBsZWZ0OiAnYXV0bycsXG4gICAgICAgICAgICByaWdodDogJ2F1dG8nLFxuICAgICAgICAgICAgYm90dG9tOiAnYXV0bycsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2UgaWYgKFRJTEVfRklUVElOR19UWVBFUy5pbmNsdWRlcyhmaXR0aW5nVHlwZSkpIHtcbiAgICAgICAgcmV0dXJuVmFsdWUuY29udGFpbmVyID0ge1xuICAgICAgICAgICAgYmFja2dyb3VuZFNpemU6IGAke3NyYy53aWR0aH1weCAke3NyYy5oZWlnaHR9cHhgLFxuICAgICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gcmV0dXJuVmFsdWU7XG59XG4vKipcbiAqIFRyeSB0byBjb252ZXJ0IGZvY2FsIHBvaW50IHZhbHVlIHRvIDkgZ3JpZCBhbGlnbm1lbnQgdmFsdWVcbiAqXG4gKiBAcGFyYW0ge1BvaW50fSAgICBmb2NhbFBvaW50XG4gKiBAcmV0dXJucyB7QWxpZ25UeXBlfSBhbGlnbiB0eXBlXG4gKi9cbmZ1bmN0aW9uIGNvbnZlcnRGb2NhbFBvaW50VG9BbGlnblR5cGUoZm9jYWxQb2ludCkge1xuICAgIGNvbnN0IHBvc2l0aW9uID0gYCR7Zm9jYWxQb2ludC54fSUgJHtmb2NhbFBvaW50Lnl9JWA7XG4gICAgcmV0dXJuIFBPU0lUSU9OX1RPX0FMSUdOX1RZUEVbcG9zaXRpb25dIHx8ICcnO1xufVxuLyoqXG4gKlxuICogQHBhcmFtIHtEaW1lbnNpb25zfSBzcmMgc291cmNlIGRpbWVuc2lvbnNcbiAqIEBwYXJhbSB7d2lkdGg/OiBudW1iZXI7IGhlaWdodD86IG51bWJlcn0gdGFyZ2V0IHRhcmdldCBkaW1lbnNpb25zXG4gKiBAcGFyYW0ge1BvaW50fSBmb2NhbFBvaW50IHgveSBhcyAwLTEwMCBwZXJjZW50YWdlc1xuICogQHJldHVybnMge3N0cmluZ30gaW4gJ3glIHklJyBmb3JtYXRcbiAqL1xuZnVuY3Rpb24gY29udmVydEZpbGxGb2NhbFRvUG9zaXRpb24oc3JjLCB0YXJnZXQsIGZvY2FsUG9pbnQpIHtcbiAgICBjb25zdCB7IHdpZHRoOiBzVywgaGVpZ2h0OiBzSCB9ID0gc3JjO1xuICAgIGNvbnN0IHsgd2lkdGg6IHRXLCBoZWlnaHQ6IHRIIH0gPSB0YXJnZXQ7XG4gICAgY29uc3QgeyB4OiBmcFgsIHk6IGZwWSB9ID0gZm9jYWxQb2ludDtcbiAgICBpZiAoIXRXIHx8ICF0SCkge1xuICAgICAgICByZXR1cm4gYCR7ZnBYfSUgJHtmcFl9JWA7XG4gICAgfVxuICAgIGNvbnN0IGZpbGxTY2FsZUZhY3RvciA9IE1hdGgubWF4KHRXIC8gc1csIHRIIC8gc0gpO1xuICAgIGNvbnN0IGltZ1NjYWxlZFcgPSBzVyAqIGZpbGxTY2FsZUZhY3RvcjtcbiAgICBjb25zdCBpbWdTY2FsZWRIID0gc0ggKiBmaWxsU2NhbGVGYWN0b3I7XG4gICAgY29uc3QgeCA9IE1hdGgubWF4KDAsIE1hdGgubWluKGltZ1NjYWxlZFcgLSB0VywgaW1nU2NhbGVkVyAqIChmcFggLyAxMDApIC0gdFcgLyAyKSk7XG4gICAgY29uc3QgeSA9IE1hdGgubWF4KDAsIE1hdGgubWluKGltZ1NjYWxlZEggLSB0SCwgaW1nU2NhbGVkSCAqIChmcFkgLyAxMDApIC0gdEggLyAyKSk7XG4gICAgY29uc3QgcG9zWCA9IHggJiYgTWF0aC5mbG9vcigoeCAvIChpbWdTY2FsZWRXIC0gdFcpKSAqIDEwMCk7XG4gICAgY29uc3QgcG9zWSA9IHkgJiYgTWF0aC5mbG9vcigoeSAvIChpbWdTY2FsZWRIIC0gdEgpKSAqIDEwMCk7XG4gICAgcmV0dXJuIGAke3Bvc1h9JSAke3Bvc1l9JWA7XG59XG5leHBvcnQgeyBnZXRCbHVyVmFsdWUsIGdldENvbnZlcnRlZEZpdHRpbmcsIGdldENTU092ZXJyaWRlcywgZ2V0SXNGYWtlVGlsZSwgZ2V0U2NhbGVkRGltZW5zaW9ucywgdmFsaWRhdGVUYXJnZXREaW1lbnNpb25zLCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW1hZ2VQbGFjZWhvbGRlclV0aWxzLmpzLm1hcCIsImltcG9ydCB7IGVtcHR5RGF0YSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvaW1hZ2VTZXJ2aWNlQ29uc3RhbnRzJztcbmltcG9ydCB7IGlzSW1hZ2VUcmFuc2Zvcm1BcHBsaWNhYmxlLCBpc1ZhbGlkUmVxdWVzdCwgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2ltYWdlU2VydmljZVV0aWxzJztcbmltcG9ydCB7IGdldEF0dHJpYnV0ZXMgfSBmcm9tICcuLi8uLi9lbmdpbmVzL2F0dHJpYnV0ZXMnO1xuaW1wb3J0IHsgZ2V0VHJhbnNmb3JtLCBnZXRUYXJnZXQgfSBmcm9tICcuLi90cmFuc2Zvcm0nO1xuaW1wb3J0IHsgZ2V0VVJJIH0gZnJvbSAnLi4vdXJpJztcbmltcG9ydCB7IGdldFNyY3NldCB9IGZyb20gJy4uL3NyY3NldCc7XG5pbXBvcnQgeyBnZXRTY2FsZWREaW1lbnNpb25zLCBnZXRCbHVyVmFsdWUsIGdldENTU092ZXJyaWRlcywgdmFsaWRhdGVUYXJnZXREaW1lbnNpb25zLCBnZXRJc0Zha2VUaWxlLCBnZXRDb252ZXJ0ZWRGaXR0aW5nLCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvaW1hZ2VQbGFjZWhvbGRlclV0aWxzJztcbmNvbnN0IFBMQUNFSE9MREVSX0lNR19DU1NfT1ZFUlJJREVTID0geyB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICcxMDAlJyB9O1xuLyoqXG4gKiByZXR1cm5zIGltYWdlIF9wbGFjZWhvbGRlcl8gdHJhbnNmb3JtIHVyaSBhbmQgdGhlXG4gKiBuZWVkZWQgY3NzIGZvciBhbGlnbm1lbnQgYW5kIHBvc2l0aW9uaW5nXG4gKlxuICogQHBhcmFtIHtGaXR0aW5nVHlwZX0gICAgICAgICAgICAgZml0dGluZ1R5cGUgaW1hZ2VTZXJ2aWNlc1R5cGVzLmZpdHRpbmdUeXBlc1xuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybVNvdXJjZX0gICAgc3JjICAgICAgICAgaW1hZ2VcbiAqIEBwYXJhbSB7SW1hZ2VQbGFjZWhvbGRlclRyYW5zZm9ybVRhcmdldH0gICAgdGFyZ2V0ICAgICAgdGFyZ2V0IGRpbWVuc2lvbnNcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1PcHRpb25zfSBbb3B0aW9uc10gICBlbnZpcm9ubWVudCAvIHRyYW5zZm9ybWF0aW9uICBvcHRpb25zXG4gKlxuICogQHJldHVybnMge0ltYWdlRGF0YUF0dHJpYnV0ZXN9XG4gKi9cbmZ1bmN0aW9uIGdldFBsYWNlaG9sZGVyKGZpdHRpbmdUeXBlLCBzcmMsIHRhcmdldCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3QgeyBhdXRvRW5jb2RlID0gdHJ1ZSwgaXNTRU9Cb3QsIHNob3VsZExvYWRIUUltYWdlLCBoYXNBbmltYXRpb24sIGFsbG93QW5pbWF0ZWRUcmFuc2Zvcm0sIGVuY29kaW5nLCB9ID0gb3B0aW9ucztcbiAgICBpZiAoIWlzVmFsaWRSZXF1ZXN0KGZpdHRpbmdUeXBlLCBzcmMsIHRhcmdldCkpIHtcbiAgICAgICAgcmV0dXJuIGVtcHR5RGF0YTtcbiAgICB9XG4gICAgY29uc3QgSVNfSU5fUExBQ0VIT0xERVJfRkxPVyA9IHRydWU7XG4gICAgLy8gSW4gcGxhY2Vob2xkZXIgZmxvdywgYWxsb3cgYW5pbWF0ZWQgdHJhbnNmb3JtcyBieSBkZWZhdWx0IHVubGVzcyBleHBsaWNpdGx5IGRpc2FibGVkXG4gICAgY29uc3Qgc2hvdWxkQWxsb3dBbmltYXRlZFRyYW5zZm9ybUluUGxhY2Vob2xkZXIgPSBhbGxvd0FuaW1hdGVkVHJhbnNmb3JtID8/IElTX0lOX1BMQUNFSE9MREVSX0ZMT1c7XG4gICAgY29uc3QgY2FuVHJhbnNmb3JtSW1hZ2UgPSBpc0ltYWdlVHJhbnNmb3JtQXBwbGljYWJsZShzcmMuaWQsIGhhc0FuaW1hdGlvbiwgc2hvdWxkQWxsb3dBbmltYXRlZFRyYW5zZm9ybUluUGxhY2Vob2xkZXIpO1xuICAgIGlmICghY2FuVHJhbnNmb3JtSW1hZ2UgfHwgc2hvdWxkTG9hZEhRSW1hZ2UpIHtcbiAgICAgICAgLyogRWl0aGVyOlxuICAgICAgICAgKiAxLiBUcmFuc2Zvcm0gaXNuJ3QgYXBwbGljYWJsZSBzbyB0YXJnZXQgaXMgb3JpZ2luYWwgc2l6ZSBhcHBsaWVkIHdpdGggZmx1aWQgQ1NTXG4gICAgICAgICAqIDIuIFVzZXIgYXNrZWQgZm9yIGFuIEhRIGltYWdlLCBzbyB0aGV5IG11c3QgaGF2ZSBzdXBwbGllZCB0YXJnZXQgc2l6ZSAod2lkdGgvaGVpZ2h0KVxuICAgICAgICAgKi9cbiAgICAgICAgcmV0dXJuIGdldERhdGEoZml0dGluZ1R5cGUsIHNyYywgdGFyZ2V0LCB7XG4gICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgYXV0b0VuY29kZSxcbiAgICAgICAgICAgIHVzZVNyY3NldDogY2FuVHJhbnNmb3JtSW1hZ2UsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBJZiB0aGVyZSBhcmVuJ3QgZGltZW5zaW9ucywgd2UgbWFrZSB0aGVtIHVwXG4gICAgY29uc3QgbmV3VGFyZ2V0ID0ge1xuICAgICAgICAuLi50YXJnZXQsXG4gICAgICAgIC4uLnZhbGlkYXRlVGFyZ2V0RGltZW5zaW9ucyhzcmMsIHRhcmdldCksXG4gICAgfTtcbiAgICBjb25zdCB7IGFsaWdubWVudCwgaHRtbFRhZyB9ID0gbmV3VGFyZ2V0O1xuICAgIGNvbnN0IGlzRmFrZVRpbGUgPSBnZXRJc0Zha2VUaWxlKGZpdHRpbmdUeXBlLCBzcmMsIG5ld1RhcmdldCk7XG4gICAgY29uc3Qgc2NhbGVkRGltZW5zaW9ucyA9IGdldFNjYWxlZERpbWVuc2lvbnMoZml0dGluZ1R5cGUsIHNyYywgbmV3VGFyZ2V0LCBpc1NFT0JvdCk7XG4gICAgY29uc3QgYmx1ciA9IGdldEJsdXJWYWx1ZShuZXdUYXJnZXQud2lkdGgsIGZpdHRpbmdUeXBlLCBpc1NFT0JvdCk7XG4gICAgY29uc3QgY29udmVydGVkRml0dGluZ1R5cGUgPSBnZXRDb252ZXJ0ZWRGaXR0aW5nKGZpdHRpbmdUeXBlLCBpc0Zha2VUaWxlKTtcbiAgICBjb25zdCBvdmVycmlkZUNTUyA9IGdldENTU092ZXJyaWRlcyhmaXR0aW5nVHlwZSwgc3JjLCB0YXJnZXQsIGFsaWdubWVudCk7XG4gICAgY29uc3QgeyB1cmkgfSA9IGdldERhdGEoY29udmVydGVkRml0dGluZ1R5cGUsIHNyYywge1xuICAgICAgICAuLi5zY2FsZWREaW1lbnNpb25zLFxuICAgICAgICBhbGlnbm1lbnQsXG4gICAgICAgIGh0bWxUYWcsXG4gICAgfSwge1xuICAgICAgICBhdXRvRW5jb2RlLFxuICAgICAgICBmaWx0ZXJzOiBibHVyID8geyBibHVyIH0gOiB7fSxcbiAgICAgICAgaGFzQW5pbWF0aW9uLFxuICAgICAgICBhbGxvd0FuaW1hdGVkVHJhbnNmb3JtOiBzaG91bGRBbGxvd0FuaW1hdGVkVHJhbnNmb3JtSW5QbGFjZWhvbGRlcixcbiAgICAgICAgZW5jb2RpbmcsXG4gICAgICAgIGlzUGxhY2Vob2xkZXJGbG93OiBJU19JTl9QTEFDRUhPTERFUl9GTE9XLFxuICAgIH0pO1xuICAgIGNvbnN0IHsgYXR0ciA9IHt9LCBjc3MgfSA9IGdldERhdGEoZml0dGluZ1R5cGUsIHNyYywge1xuICAgICAgICAuLi5uZXdUYXJnZXQsXG4gICAgICAgIGFsaWdubWVudCxcbiAgICAgICAgaHRtbFRhZyxcbiAgICB9LCB7fSk7XG4gICAgY3NzLmltZyA9IGNzcy5pbWcgfHwge307XG4gICAgY3NzLmNvbnRhaW5lciA9IGNzcy5jb250YWluZXIgfHwge307XG4gICAgT2JqZWN0LmFzc2lnbihjc3MuaW1nLCBvdmVycmlkZUNTUy5pbWcsIFBMQUNFSE9MREVSX0lNR19DU1NfT1ZFUlJJREVTKTtcbiAgICBPYmplY3QuYXNzaWduKGNzcy5jb250YWluZXIsIG92ZXJyaWRlQ1NTLmNvbnRhaW5lcik7XG4gICAgcmV0dXJuIHsgdXJpLCBjc3MsIGF0dHIsIHRyYW5zZm9ybWVkOiB0cnVlIH07XG59XG4vKipcbiAqIHJldHVybnMgaW1hZ2UgdHJhbnNmb3JtIHVyaSBhbmQgdGhlXG4gKiBuZWVkZWQgY3NzIGZvciBhbGlnbm1lbnQgYW5kIHBvc2l0aW9uaW5nXG4gKlxuICogQHBhcmFtIHtGaXR0aW5nVHlwZX0gICAgICAgICAgICAgZml0dGluZ1R5cGUgICAgICAgICBpbWFnZVNlcnZpY2VzVHlwZXMuZml0dGluZ1R5cGVzXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtU291cmNlfSAgICBzcmMgICAgICAgICAgICAgICAgIHNvdXJjZSBpbWFnZVxuICogQHBhcmFtIHtJbWFnZVRyYW5zZm9ybVRhcmdldH0gICAgdGFyZ2V0ICAgICAgICAgICAgICB0YXJnZXQgY29tcG9uZW50XG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtT3B0aW9uc30gICBbb3B0aW9uc10gICAgICAgICAgdHJhbnNmb3JtIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyB7SW1hZ2VEYXRhQXR0cmlidXRlc31cbiAqL1xuZnVuY3Rpb24gZ2V0RGF0YShmaXR0aW5nVHlwZSwgc3JjLCB0YXJnZXQsIG9wdGlvbnMpIHtcbiAgICBsZXQgZGF0YSA9IHt9O1xuICAgIC8vIGNoZWNrIGlmIHZhbGlkIHJlcXVlc3RcbiAgICBpZiAoaXNWYWxpZFJlcXVlc3QoZml0dGluZ1R5cGUsIHNyYywgdGFyZ2V0KSkge1xuICAgICAgICAvLyBoYW5kbGUgc2l0ZSBCRyBsZWdhY3kgZml0dGluZyB0eXBlcyBpZiBuZWVkZWRcbiAgICAgICAgY29uc3QgdGFyZ2V0T2JqID0gZ2V0VGFyZ2V0KGZpdHRpbmdUeXBlLCBzcmMsIHRhcmdldCk7XG4gICAgICAgIC8vIHBhcnNlIHJlcXVlc3QgYW5kIGNyZWF0ZSB3b3JraW5nIE9CSlxuICAgICAgICBjb25zdCB0cmFuc2Zvcm1PYmogPSBnZXRUcmFuc2Zvcm0oZml0dGluZ1R5cGUsIHNyYywgdGFyZ2V0T2JqLCBvcHRpb25zKTtcbiAgICAgICAgZGF0YS51cmkgPSBnZXRVUkkoZml0dGluZ1R5cGUsIHNyYywgdGFyZ2V0T2JqLCBvcHRpb25zLCB0cmFuc2Zvcm1PYmopO1xuICAgICAgICBpZiAob3B0aW9ucz8udXNlU3Jjc2V0KSB7XG4gICAgICAgICAgICBkYXRhLnNyY3NldCA9IGdldFNyY3NldChmaXR0aW5nVHlwZSwgc3JjLCB0YXJnZXRPYmosIG9wdGlvbnMsIGRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHNldCB0aGUgQ1NTIG9yIHRoZSBTVkcgcHJvcGVydHlcbiAgICAgICAgT2JqZWN0LmFzc2lnbihkYXRhLCBnZXRBdHRyaWJ1dGVzKHRyYW5zZm9ybU9iaiwgdGFyZ2V0T2JqKSwge1xuICAgICAgICAgICAgdHJhbnNmb3JtZWQ6IHRyYW5zZm9ybU9iai50cmFuc2Zvcm1lZCxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICAvLyBlbXB0eSBkYXRhXG4gICAgICAgIGRhdGEgPSBlbXB0eURhdGE7XG4gICAgfVxuICAgIC8vIHJldHVybiBkYXRhIHRvIGJlIHVzZWQgaW4gaHRtbFxuICAgIHJldHVybiBkYXRhO1xufVxuZXhwb3J0IHsgZ2V0RGF0YSwgZ2V0UGxhY2Vob2xkZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFwaS5qcy5tYXAiLCJpbXBvcnQgeyBnZXRVUkkgfSBmcm9tICcuL3VyaSc7XG5mdW5jdGlvbiBnZXRTcmNzZXQoZml0dGluZ1R5cGUsIHNyYywgdGFyZ2V0LCBvcHRpb25zLCBkYXRhKSB7XG4gICAgY29uc3QgZHByID0gdGFyZ2V0LnBpeGVsQXNwZWN0UmF0aW8gfHwgMTtcbiAgICByZXR1cm4ge1xuICAgICAgICBkcHI6IFtcbiAgICAgICAgICAgIGAke2RwciA9PT0gMVxuICAgICAgICAgICAgICAgID8gZGF0YS51cmlcbiAgICAgICAgICAgICAgICA6IGdldFVSSShmaXR0aW5nVHlwZSwgc3JjLCB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgcGl4ZWxBc3BlY3RSYXRpbzogMSxcbiAgICAgICAgICAgICAgICB9LCBvcHRpb25zKX0gMXhgLFxuICAgICAgICAgICAgYCR7ZHByID09PSAyXG4gICAgICAgICAgICAgICAgPyBkYXRhLnVyaVxuICAgICAgICAgICAgICAgIDogZ2V0VVJJKGZpdHRpbmdUeXBlLCBzcmMsIHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICBwaXhlbEFzcGVjdFJhdGlvOiAyLFxuICAgICAgICAgICAgICAgIH0sIG9wdGlvbnMpfSAyeGAsXG4gICAgICAgIF0sXG4gICAgfTtcbn1cbmV4cG9ydCB7IGdldFNyY3NldCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3Jjc2V0LmpzLm1hcCIsImltcG9ydCB7IGh0bWxUYWcgfSBmcm9tICcuLi9oZWxwZXJzL2ltYWdlU2VydmljZUNvbnN0YW50cyc7XG5pbXBvcnQgeyBnZXQgYXMgYmFja2dyb3VuZEF0dHJpYnV0ZXMgfSBmcm9tICcuL2F0dHJpYnV0ZXMvYmFja2dyb3VuZEF0dHJpYnV0ZXMnO1xuaW1wb3J0IHsgZ2V0IGFzIGltZ0F0dHJpYnV0ZXMgfSBmcm9tICcuL2F0dHJpYnV0ZXMvaW1nQXR0cmlidXRlcyc7XG5pbXBvcnQgeyBnZXQgYXMgU1ZHQXR0cmlidXRlcyB9IGZyb20gJy4vYXR0cmlidXRlcy9TVkdBdHRyaWJ1dGVzJztcbi8qKlxuICogZ2V0IENTUyBvciBTVkcgYXR0cmlidXRlcyB0byBiZSB1c2VkIGluIHRoZSBicm93c2VyXG4gKiBAcGFyYW0ge0ltYWdlVHJhbnNmb3JtT2JqZWN0fSAgICB0cmFuc2Zvcm1zT2JqICAgIHRyYW5zZm9ybSBwYXJ0cyBvYmplY3RcbiAqIEBwYXJhbSB7SW1hZ2VUcmFuc2Zvcm1UYXJnZXR9ICAgIHRhcmdldFxuICpcbiAqIEByZXR1cm5zIG9iamVjdFxuICovXG5mdW5jdGlvbiBnZXRBdHRyaWJ1dGVzKHRyYW5zZm9ybXNPYmosIHRhcmdldCkge1xuICAgIGxldCBhdHRyaWJ1dGVzR2V0dGVyO1xuICAgIGlmICh0YXJnZXQuaHRtbFRhZyA9PT0gaHRtbFRhZy5CRykge1xuICAgICAgICBhdHRyaWJ1dGVzR2V0dGVyID0gYmFja2dyb3VuZEF0dHJpYnV0ZXM7XG4gICAgfVxuICAgIGVsc2UgaWYgKHRhcmdldC5odG1sVGFnID09PSBodG1sVGFnLlNWRykge1xuICAgICAgICBhdHRyaWJ1dGVzR2V0dGVyID0gU1ZHQXR0cmlidXRlcztcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGF0dHJpYnV0ZXNHZXR0ZXIgPSBpbWdBdHRyaWJ1dGVzO1xuICAgIH1cbiAgICByZXR1cm4gYXR0cmlidXRlc0dldHRlcih0cmFuc2Zvcm1zT2JqLCB0YXJnZXQpO1xufVxuZXhwb3J0IHsgZ2V0QXR0cmlidXRlcyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXR0cmlidXRlcy5qcy5tYXAiLCJpbXBvcnQgeyBnZXREYXRhLCBwb3B1bGF0ZUdsb2JhbEZlYXR1cmVTdXBwb3J0IH0gZnJvbSAnLi4vYXBpL3VyaS9pbmRleCc7XG5pbXBvcnQgeyBmaXR0aW5nVHlwZXMsIGh0bWxUYWcsIGFsaWduVHlwZXMsIH0gZnJvbSAnLi4vaGVscGVycy9pbWFnZVNlcnZpY2VDb25zdGFudHMnO1xuY29uc3Qgd2l4U3RhdGljID0gJ2h0dHBzOi8vc3RhdGljLndpeHN0YXRpYy5jb20vJztcbmNvbnN0IHdpeFN0YXRpY1dpdGhNZWRpYSA9ICdodHRwczovL3N0YXRpYy53aXhzdGF0aWMuY29tL21lZGlhLyc7XG5jb25zdCBIQVNfTUVESUFfUFJFRklYX1JFID0gL15tZWRpYVxcLy9pO1xuY29uc3QgZGV2aWNlUGl4ZWxSYXRpbyA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LmRldmljZVBpeGVsUmF0aW8gOiAxO1xuY29uc3QgZ2V0V2l4U3RhdGljVVJMID0gKHVyaSkgPT4gSEFTX01FRElBX1BSRUZJWF9SRS50ZXN0KHVyaSlcbiAgICA/IGAke3dpeFN0YXRpY30ke3VyaX1gXG4gICAgOiBgJHt3aXhTdGF0aWNXaXRoTWVkaWF9JHt1cml9YDtcbmNvbnN0IGdldFVSTCA9ICh1cmksIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBiYXNlSG9zdFVSTCA9IG9wdGlvbnMgJiYgb3B0aW9ucy5iYXNlSG9zdFVSTDtcbiAgICByZXR1cm4gYmFzZUhvc3RVUkwgPyBgJHtiYXNlSG9zdFVSTH0ke3VyaX1gIDogZ2V0V2l4U3RhdGljVVJMKHVyaSk7XG59O1xuZnVuY3Rpb24gZ2V0U2NhbGVUb0ZpdEltYWdlVVJMKHJlbGF0aXZlVXJsLCBzb3VyY2VXaWR0aCwgc291cmNlSGVpZ2h0LCB0YXJnZXRXaWR0aCwgdGFyZ2V0SGVpZ2h0LCBvcHRpb25zKSB7XG4gICAgY29uc3QgZGF0YSA9IGdldERhdGEoZml0dGluZ1R5cGVzLlNDQUxFX1RPX0ZJVCwge1xuICAgICAgICBpZDogcmVsYXRpdmVVcmwsXG4gICAgICAgIHdpZHRoOiBzb3VyY2VXaWR0aCxcbiAgICAgICAgaGVpZ2h0OiBzb3VyY2VIZWlnaHQsXG4gICAgICAgIG5hbWU6IG9wdGlvbnMgJiYgb3B0aW9ucy5uYW1lLFxuICAgIH0sIHtcbiAgICAgICAgd2lkdGg6IHRhcmdldFdpZHRoLFxuICAgICAgICBoZWlnaHQ6IHRhcmdldEhlaWdodCxcbiAgICAgICAgaHRtbFRhZzogaHRtbFRhZy5JTUcsXG4gICAgICAgIGFsaWdubWVudDogYWxpZ25UeXBlcy5DRU5URVIsXG4gICAgICAgIHBpeGVsQXNwZWN0UmF0aW86IG9wdGlvbnM/LmRldmljZVBpeGVsUmF0aW8gPz8gZGV2aWNlUGl4ZWxSYXRpbyxcbiAgICB9LCBvcHRpb25zKTtcbiAgICByZXR1cm4gZ2V0VVJMKGRhdGEudXJpLCBvcHRpb25zKTtcbn1cbmZ1bmN0aW9uIGdldFNjYWxlVG9GaWxsSW1hZ2VVUkwocmVsYXRpdmVVcmwsIHNvdXJjZVdpZHRoLCBzb3VyY2VIZWlnaHQsIHRhcmdldFdpZHRoLCB0YXJnZXRIZWlnaHQsIG9wdGlvbnMpIHtcbiAgICBjb25zdCBkYXRhID0gZ2V0RGF0YShmaXR0aW5nVHlwZXMuU0NBTEVfVE9fRklMTCwge1xuICAgICAgICBpZDogcmVsYXRpdmVVcmwsXG4gICAgICAgIHdpZHRoOiBzb3VyY2VXaWR0aCxcbiAgICAgICAgaGVpZ2h0OiBzb3VyY2VIZWlnaHQsXG4gICAgICAgIG5hbWU6IG9wdGlvbnMgJiYgb3B0aW9ucy5uYW1lLFxuICAgICAgICBmb2NhbFBvaW50OiB7XG4gICAgICAgICAgICB4OiBvcHRpb25zICYmIG9wdGlvbnMuZm9jYWxQb2ludCAmJiBvcHRpb25zLmZvY2FsUG9pbnQueCxcbiAgICAgICAgICAgIHk6IG9wdGlvbnMgJiYgb3B0aW9ucy5mb2NhbFBvaW50ICYmIG9wdGlvbnMuZm9jYWxQb2ludC55LFxuICAgICAgICB9LFxuICAgIH0sIHtcbiAgICAgICAgd2lkdGg6IHRhcmdldFdpZHRoLFxuICAgICAgICBoZWlnaHQ6IHRhcmdldEhlaWdodCxcbiAgICAgICAgaHRtbFRhZzogaHRtbFRhZy5JTUcsXG4gICAgICAgIGFsaWdubWVudDogYWxpZ25UeXBlcy5DRU5URVIsXG4gICAgICAgIHBpeGVsQXNwZWN0UmF0aW86IG9wdGlvbnM/LmRldmljZVBpeGVsUmF0aW8gPz8gZGV2aWNlUGl4ZWxSYXRpbyxcbiAgICB9LCBvcHRpb25zKTtcbiAgICByZXR1cm4gZ2V0VVJMKGRhdGEudXJpLCBvcHRpb25zKTtcbn1cbmZ1bmN0aW9uIGdldENyb3BJbWFnZVVSTChyZWxhdGl2ZVVybCwgc291cmNlV2lkdGgsIHNvdXJjZUhlaWdodCwgY3JvcFgsIGNyb3BZLCBjcm9wV2lkdGgsIGNyb3BIZWlnaHQsIHRhcmdldFdpZHRoLCB0YXJnZXRIZWlnaHQsIG9wdGlvbnMpIHtcbiAgICBjb25zdCBkYXRhID0gZ2V0RGF0YShmaXR0aW5nVHlwZXMuU0NBTEVfVE9fRklMTCwge1xuICAgICAgICBpZDogcmVsYXRpdmVVcmwsXG4gICAgICAgIHdpZHRoOiBzb3VyY2VXaWR0aCxcbiAgICAgICAgaGVpZ2h0OiBzb3VyY2VIZWlnaHQsXG4gICAgICAgIG5hbWU6IG9wdGlvbnMgJiYgb3B0aW9ucy5uYW1lLFxuICAgICAgICBjcm9wOiB7XG4gICAgICAgICAgICB4OiBjcm9wWCxcbiAgICAgICAgICAgIHk6IGNyb3BZLFxuICAgICAgICAgICAgd2lkdGg6IGNyb3BXaWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogY3JvcEhlaWdodCxcbiAgICAgICAgfSxcbiAgICB9LCB7XG4gICAgICAgIHdpZHRoOiB0YXJnZXRXaWR0aCxcbiAgICAgICAgaGVpZ2h0OiB0YXJnZXRIZWlnaHQsXG4gICAgICAgIGh0bWxUYWc6IGh0bWxUYWcuSU1HLFxuICAgICAgICBhbGlnbm1lbnQ6IGFsaWduVHlwZXMuQ0VOVEVSLFxuICAgICAgICBwaXhlbEFzcGVjdFJhdGlvOiBvcHRpb25zPy5kZXZpY2VQaXhlbFJhdGlvID8/IGRldmljZVBpeGVsUmF0aW8sXG4gICAgfSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIGdldFVSTChkYXRhLnVyaSwgb3B0aW9ucyk7XG59XG5leHBvcnQgeyBwb3B1bGF0ZUdsb2JhbEZlYXR1cmVTdXBwb3J0LCBnZXRTY2FsZVRvRml0SW1hZ2VVUkwsIGdldFNjYWxlVG9GaWxsSW1hZ2VVUkwsIGdldENyb3BJbWFnZVVSTCwgd2l4U3RhdGljLCB3aXhTdGF0aWNXaXRoTWVkaWEsIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hcGkuanMubWFwIiwiaW1wb3J0IHsgcG9wdWxhdGVHbG9iYWxGZWF0dXJlU3VwcG9ydCwgZ2V0U2NhbGVUb0ZpdEltYWdlVVJMLCBnZXRTY2FsZVRvRmlsbEltYWdlVVJMLCBnZXRDcm9wSW1hZ2VVUkwsIHdpeFN0YXRpYywgd2l4U3RhdGljV2l0aE1lZGlhLCB9IGZyb20gJy4vYXBpJztcbnBvcHVsYXRlR2xvYmFsRmVhdHVyZVN1cHBvcnQoKTtcbmV4cG9ydCB7IGdldFNjYWxlVG9GaXRJbWFnZVVSTCwgZ2V0U2NhbGVUb0ZpbGxJbWFnZVVSTCwgZ2V0Q3JvcEltYWdlVVJMLCB3aXhTdGF0aWMsIHdpeFN0YXRpY1dpdGhNZWRpYSwgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsImltcG9ydCB7IGFsaWduVHlwZXMsIGZpdHRpbmdUeXBlcywgaHRtbFRhZywgdXBzY2FsZU1ldGhvZHMsIGZpbGVUeXBlLCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvaW1hZ2VTZXJ2aWNlQ29uc3RhbnRzJztcbmltcG9ydCB7IGlzV0VCUCwgZ2V0RmlsZUV4dGVuc2lvbiB9IGZyb20gJy4uLy4uL2hlbHBlcnMvaW1hZ2VTZXJ2aWNlVXRpbHMnO1xuaW1wb3J0IHsgcG9wdWxhdGVHbG9iYWxGZWF0dXJlU3VwcG9ydCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvcG9wdWxhdGVGZWF0dXJlU3VwcG9ydCc7XG5pbXBvcnQgeyBnZXREYXRhLCBnZXRQbGFjZWhvbGRlciB9IGZyb20gJy4vYXBpJztcbmltcG9ydCB7IGdldFNjYWxlVG9GaXRJbWFnZVVSTCwgZ2V0U2NhbGVUb0ZpbGxJbWFnZVVSTCwgZ2V0Q3JvcEltYWdlVVJMLCB3aXhTdGF0aWNXaXRoTWVkaWEsIH0gZnJvbSAnLi4vLi4vc2RrJztcbmltcG9ydCB7IGdldFJlc3BvbnNpdmVJbWFnZVByb3BzIH0gZnJvbSAnLi4vLi4vaGVscGVycy9yZXNwb25zaXZlSW1hZ2VVdGlscyc7XG5wb3B1bGF0ZUdsb2JhbEZlYXR1cmVTdXBwb3J0KCk7XG5jb25zdCBzZGsgPSB7XG4gICAgZ2V0U2NhbGVUb0ZpdEltYWdlVVJMLFxuICAgIGdldFNjYWxlVG9GaWxsSW1hZ2VVUkwsXG4gICAgZ2V0Q3JvcEltYWdlVVJMLFxufTtcbmV4cG9ydCAqIGZyb20gJy4uLy4uL3R5cGVzJztcbmNvbnN0IFNUQVRJQ19NRURJQV9VUkwgPSB3aXhTdGF0aWNXaXRoTWVkaWE7XG5leHBvcnQgeyBTVEFUSUNfTUVESUFfVVJMLCBhbGlnblR5cGVzLCBmaXR0aW5nVHlwZXMsIGdldERhdGEsIGdldFBsYWNlaG9sZGVyLCBodG1sVGFnLCBwb3B1bGF0ZUdsb2JhbEZlYXR1cmVTdXBwb3J0LCBzZGssIHVwc2NhbGVNZXRob2RzLCBpc1dFQlAsIGdldEZpbGVFeHRlbnNpb24sIGZpbGVUeXBlLCBnZXRSZXNwb25zaXZlSW1hZ2VQcm9wcywgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9JbWFnZS5tb2R1bGUuc2Nzcyc7XG5pbXBvcnQgKiBhcyBpbWFnZUtpdCBmcm9tICdAd2l4L2ltYWdlLWtpdCc7XG5jb25zdCB7IFNUQVRJQ19NRURJQV9VUkwgfSA9IGltYWdlS2l0O1xuY29uc3QgZmV0Y2hMUUlQID0gKHsgZml0dGluZ1R5cGUsIHNyYywgdGFyZ2V0LCBvcHRpb25zLCB9KSA9PiB7XG4gICAgY29uc3QgcGxhY2Vob2xkZXIgPSBpbWFnZUtpdC5nZXRQbGFjZWhvbGRlcihmaXR0aW5nVHlwZSwgc3JjLCB0YXJnZXQsIHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgYXV0b0VuY29kZTogdHJ1ZSxcbiAgICB9KTtcbiAgICBpZiAocGxhY2Vob2xkZXI/LnVyaSAmJiAhL15bYS16XSs6Ly50ZXN0KHBsYWNlaG9sZGVyLnVyaSkpIHtcbiAgICAgICAgcGxhY2Vob2xkZXIudXJpID0gYCR7U1RBVElDX01FRElBX1VSTH0ke3BsYWNlaG9sZGVyLnVyaX1gO1xuICAgIH1cbiAgICByZXR1cm4gcGxhY2Vob2xkZXI7XG59O1xuY29uc3QgU0NIRU1FX1JFID0gL15bYS16XSs6LztcbmNvbnN0IEltYWdlID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyBpZCwgY29udGFpbmVySWQsIHVyaSwgYWx0LCBuYW1lID0gJycsIHJvbGUsIHdpZHRoLCBoZWlnaHQsIGRpc3BsYXlNb2RlLCBkZXZpY2VQaXhlbFJhdGlvLCBxdWFsaXR5LCBhbGlnblR5cGUsIGJnRWZmZWN0TmFtZSA9ICcnLCBmb2NhbFBvaW50LCB1cHNjYWxlTWV0aG9kLCBjbGFzc05hbWUgPSAnJywgY3JvcCwgaW1hZ2VTdHlsZXMgPSB7fSwgdGFyZ2V0V2lkdGgsIHRhcmdldEhlaWdodCwgdGFyZ2V0U2NhbGUsIG9uTG9hZCA9ICgpID0+IHsgfSwgb25FcnJvciA9ICgpID0+IHsgfSwgc2hvdWxkVXNlTFFJUCwgY29udGFpbmVyV2lkdGgsIGNvbnRhaW5lckhlaWdodCwgZ2V0UGxhY2Vob2xkZXIsIGlzSW5GaXJzdEZvbGQsIHBsYWNlaG9sZGVyVHJhbnNpdGlvbiwgc29jaWFsQXR0cnMsIGlzU0VPQm90LCBza2lwTWVhc3VyZSwgaGFzQW5pbWF0aW9uLCBlbmNvZGluZywgaXNGbHVpZExheW91dCwgfSA9IHByb3BzO1xuICAgIGNvbnN0IGltYWdlUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIC8vIGZpeCBjb250YWluZXJJZCBhbmQgaWQgdG8gc3VwcG9ydCBob3ZlckJveCBjb21wb25lbnRcbiAgICBsZXQgaGFzU3NyU3JjID0gJyc7XG4gICAgY29uc3QgaGFzQmx1clRyYW5zaXRpb24gPSBwbGFjZWhvbGRlclRyYW5zaXRpb24gPT09ICdibHVyJztcbiAgICBjb25zdCBzc3JJbWFnZURhdGEgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgaWYgKCFzc3JJbWFnZURhdGEuY3VycmVudCkge1xuICAgICAgICBpZiAoZ2V0UGxhY2Vob2xkZXIgfHwgc2hvdWxkVXNlTFFJUCB8fCBpc0luRmlyc3RGb2xkIHx8IGlzU0VPQm90KSB7XG4gICAgICAgICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIHVwc2NhbGVNZXRob2QsXG4gICAgICAgICAgICAgICAgLi4uKHF1YWxpdHkgPyBxdWFsaXR5IDoge30pLFxuICAgICAgICAgICAgICAgIHNob3VsZExvYWRIUUltYWdlOiBpc0luRmlyc3RGb2xkLFxuICAgICAgICAgICAgICAgIGlzU0VPQm90LFxuICAgICAgICAgICAgICAgIGhhc0FuaW1hdGlvbixcbiAgICAgICAgICAgICAgICBlbmNvZGluZyxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBzc3JJbWFnZURhdGEuY3VycmVudCA9IChnZXRQbGFjZWhvbGRlciB8fCBmZXRjaExRSVApKHtcbiAgICAgICAgICAgICAgICBmaXR0aW5nVHlwZTogZGlzcGxheU1vZGUsXG4gICAgICAgICAgICAgICAgc3JjOiB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiB1cmksXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgIGNyb3AsXG4gICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGZvY2FsUG9pbnQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNvbnRhaW5lcldpZHRoLFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGNvbnRhaW5lckhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50OiBhbGlnblR5cGUsXG4gICAgICAgICAgICAgICAgICAgIGh0bWxUYWc6ICdpbWcnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaGFzU3NyU3JjID1cbiAgICAgICAgICAgICAgICAhc3NySW1hZ2VEYXRhLmN1cnJlbnQudHJhbnNmb3JtZWQgfHwgaXNJbkZpcnN0Rm9sZCB8fCBpc1NFT0JvdFxuICAgICAgICAgICAgICAgICAgICA/ICcnXG4gICAgICAgICAgICAgICAgICAgIDogJ3RydWUnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gdG8ga2VlcCBhbiBlbXB0eSBwbGFjZWhvbGRlciBkYXRhXG4gICAgICAgICAgICBzc3JJbWFnZURhdGEuY3VycmVudCA9IHtcbiAgICAgICAgICAgICAgICB1cmk6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBjc3M6IHsgaW1nOiB7fSB9LFxuICAgICAgICAgICAgICAgIGF0dHI6IHsgaW1nOiB7fSwgY29udGFpbmVyOiB7fSB9LFxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybWVkOiBmYWxzZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgaXNMUUlQID0gIWlzU0VPQm90ICYmXG4gICAgICAgIChnZXRQbGFjZWhvbGRlciB8fCBzaG91bGRVc2VMUUlQKSAmJlxuICAgICAgICAhaXNJbkZpcnN0Rm9sZCAmJlxuICAgICAgICBzc3JJbWFnZURhdGEuY3VycmVudC50cmFuc2Zvcm1lZDtcbiAgICBjb25zdCBpbWFnZUluZm8gPSBSZWFjdC51c2VNZW1vKCgpID0+IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgY29udGFpbmVySWQsXG4gICAgICAgIC4uLihjb250YWluZXJJZCAmJiB7IGNvbnRhaW5lcklkIH0pLFxuICAgICAgICAuLi4oYWxpZ25UeXBlICYmIHsgYWxpZ25UeXBlIH0pLFxuICAgICAgICAuLi4oc2tpcE1lYXN1cmUgJiYgeyBza2lwTWVhc3VyZTogdHJ1ZSB9KSxcbiAgICAgICAgZGlzcGxheU1vZGUsXG4gICAgICAgIC4uLihjb250YWluZXJXaWR0aCAmJiB7IHRhcmdldFdpZHRoOiBjb250YWluZXJXaWR0aCB9KSxcbiAgICAgICAgLi4uKGNvbnRhaW5lckhlaWdodCAmJiB7IHRhcmdldEhlaWdodDogY29udGFpbmVySGVpZ2h0IH0pLFxuICAgICAgICAuLi4odGFyZ2V0V2lkdGggJiYgeyB0YXJnZXRXaWR0aCB9KSxcbiAgICAgICAgLi4uKHRhcmdldEhlaWdodCAmJiB7IHRhcmdldEhlaWdodCB9KSxcbiAgICAgICAgLi4uKHRhcmdldFNjYWxlICYmIHsgdGFyZ2V0U2NhbGUgfSksXG4gICAgICAgIGlzTFFJUCxcbiAgICAgICAgaXNTRU9Cb3QsXG4gICAgICAgIGxxaXBUcmFuc2l0aW9uOiBwbGFjZWhvbGRlclRyYW5zaXRpb24sXG4gICAgICAgIGVuY29kaW5nLFxuICAgICAgICBpbWFnZURhdGE6IHtcbiAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgdXJpLFxuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIGRpc3BsYXlNb2RlLFxuICAgICAgICAgICAgaGFzQW5pbWF0aW9uLFxuICAgICAgICAgICAgLi4uKHF1YWxpdHkgJiYgeyBxdWFsaXR5IH0pLFxuICAgICAgICAgICAgLi4uKGRldmljZVBpeGVsUmF0aW8gJiYgeyBkZXZpY2VQaXhlbFJhdGlvIH0pLFxuICAgICAgICAgICAgLi4uKGZvY2FsUG9pbnQgJiYgeyBmb2NhbFBvaW50IH0pLFxuICAgICAgICAgICAgLi4uKGNyb3AgJiYgeyBjcm9wIH0pLFxuICAgICAgICAgICAgLi4uKHVwc2NhbGVNZXRob2QgJiYgeyB1cHNjYWxlTWV0aG9kIH0pLFxuICAgICAgICB9LFxuICAgIH0pLCBbXG4gICAgICAgIGNvbnRhaW5lcklkLFxuICAgICAgICBhbGlnblR5cGUsXG4gICAgICAgIHNraXBNZWFzdXJlLFxuICAgICAgICBkaXNwbGF5TW9kZSxcbiAgICAgICAgY29udGFpbmVyV2lkdGgsXG4gICAgICAgIGNvbnRhaW5lckhlaWdodCxcbiAgICAgICAgdGFyZ2V0V2lkdGgsXG4gICAgICAgIHRhcmdldEhlaWdodCxcbiAgICAgICAgdGFyZ2V0U2NhbGUsXG4gICAgICAgIGlzTFFJUCxcbiAgICAgICAgaXNTRU9Cb3QsXG4gICAgICAgIHBsYWNlaG9sZGVyVHJhbnNpdGlvbixcbiAgICAgICAgZW5jb2RpbmcsXG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHQsXG4gICAgICAgIHVyaSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgaGFzQW5pbWF0aW9uLFxuICAgICAgICBxdWFsaXR5LFxuICAgICAgICBkZXZpY2VQaXhlbFJhdGlvLFxuICAgICAgICBmb2NhbFBvaW50LFxuICAgICAgICBjcm9wLFxuICAgICAgICB1cHNjYWxlTWV0aG9kLFxuICAgIF0pO1xuICAgIGNvbnN0IHNzclJlc3VsdCA9IHNzckltYWdlRGF0YS5jdXJyZW50O1xuICAgIGNvbnN0IHNyYyA9IHNzclJlc3VsdD8udXJpO1xuICAgIGNvbnN0IHNyY3NldCA9IHNzclJlc3VsdD8uc3Jjc2V0O1xuICAgIGNvbnN0IHBsYWNlaG9sZGVyU3R5bGUgPSBzc3JSZXN1bHQuY3NzPy5pbWc7XG4gICAgY29uc3QgY2xhc3NOYW1lcyA9IGAke3N0eWxlcy5pbWFnZX0gJHtjbGFzc05hbWV9YDtcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAvLyBXaGVuIGltYWdlIGNvbWVzIGZyb20gY2FjaGUgb25Mb2FkIG5vdCB0cmlnZ2VyIG9uIG5hdGl2ZSBIVE1MIGVsZW1lbnRcbiAgICAgICAgY29uc3QgaW1nRWxlbWVudCA9IGltYWdlUmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmIChvbkxvYWQgJiYgaW1nRWxlbWVudD8uY3VycmVudFNyYyAmJiBpbWdFbGVtZW50Py5jb21wbGV0ZSkge1xuICAgICAgICAgICAgb25Mb2FkKHtcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IGltZ0VsZW1lbnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgfSwgW10pO1xuICAgIGNvbnN0IG1heFdpZHRoID0gc3NyUmVzdWx0ICYmICFzc3JSZXN1bHQ/LnRyYW5zZm9ybWVkXG4gICAgICAgID8gYG1heCgke3dpZHRofXB4LCAxMDAlKWBcbiAgICAgICAgOiB0YXJnZXRXaWR0aFxuICAgICAgICAgICAgPyBgJHt0YXJnZXRXaWR0aH1weGBcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ3b3ctaW1hZ2VcIiwgeyBpZDogaWQsIGNsYXNzOiBjbGFzc05hbWVzLCBcImRhdGEtaW1hZ2UtaW5mb1wiOiBpbWFnZUluZm8sIFwiZGF0YS1tb3Rpb24tcGFydFwiOiBgQkdfSU1HICR7Y29udGFpbmVySWR9YCwgXCJkYXRhLWJnLWVmZmVjdC1uYW1lXCI6IGJnRWZmZWN0TmFtZSwgXCJkYXRhLWhhcy1zc3Itc3JjXCI6IGhhc1NzclNyYywgXCJkYXRhLWFuaW1hdGUtYmx1clwiOiAhaXNTRU9Cb3QgJiYgaXNMUUlQICYmIGhhc0JsdXJUcmFuc2l0aW9uID8gJycgOiB1bmRlZmluZWQsIFwiZGF0YS1pcy1yZXNwb25zaXZlXCI6IGlzRmx1aWRMYXlvdXQgPyAndHJ1ZScgOiB1bmRlZmluZWQsIHN0eWxlOiBtYXhXaWR0aCA/IHsgJy0td2l4LWltZy1tYXgtd2lkdGgnOiBtYXhXaWR0aCB9IDoge30gfSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImltZ1wiLCB7IHNyYzogc3JjLCByZWY6IGltYWdlUmVmLCBhbHQ6IGFsdCB8fCAnJywgcm9sZTogcm9sZSwgc3R5bGU6IHsgLi4ucGxhY2Vob2xkZXJTdHlsZSwgLi4uaW1hZ2VTdHlsZXMgfSwgb25Mb2FkOiBvbkxvYWQsIG9uRXJyb3I6IG9uRXJyb3IsIHdpZHRoOiBjb250YWluZXJXaWR0aCA/IGNvbnRhaW5lcldpZHRoIDogdW5kZWZpbmVkLCBoZWlnaHQ6IGNvbnRhaW5lckhlaWdodCA/IGNvbnRhaW5lckhlaWdodCA6IHVuZGVmaW5lZCwgLi4uc29jaWFsQXR0cnMsIHNyY1NldDogaXNJbkZpcnN0Rm9sZFxuICAgICAgICAgICAgICAgID8gc3Jjc2V0Py5kcHJcbiAgICAgICAgICAgICAgICAgICAgPy5tYXAoKHMpID0+IFNDSEVNRV9SRS50ZXN0KHMpID8gcyA6IGAke1NUQVRJQ19NRURJQV9VUkx9JHtzfWApXG4gICAgICAgICAgICAgICAgICAgIC5qb2luKCcsICcpXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsIFxuICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBmZXRjaHByaW9yaXR5IHR5cGUgc2hvdWxkIHdvcmsgaW4gcmVhY3QgPiAxOC4zIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzI1OTI3XG4gICAgICAgICAgICBmZXRjaHByaW9yaXR5OiBpc0luRmlyc3RGb2xkID8gJ2hpZ2gnIDogdW5kZWZpbmVkLCBsb2FkaW5nOiBpc0luRmlyc3RGb2xkID09PSBmYWxzZSA/ICdsYXp5JyA6IHVuZGVmaW5lZCwgXG4gICAgICAgICAgICAvLyBUaGUgc3JjIGF0dHJpYnV0ZSB0cmlnZ2VycyBhIG1pc21hdGNoIHdhcm5pbmcgYmVjYXVzZSB3b3ctaW1hZ2UgdXBkYXRlcyBpdHMgc3JjIG91dHNpZGUgb2YgdGhlIFJlYWN0IGxpZmVjeWNsZS4gVGhpcyBjYXVzZXMgUmVhY3QgdG8gcmV0YWluIHRoZSBvbGQgdmFsdWUgaW4gdGhlIHZpcnR1YWwgRE9NLCB3aGljaCBjb3VsZCBwb3RlbnRpYWxseSBsZWFkIHRvIGEgYnVnIHdoZXJlIHRoZSBvbGQgdmFsdWUgaXMgcmUtcmVuZGVyZWQgZHVyaW5nIHVwZGF0ZXMuIEhvd2V2ZXIsIHdl4oCZcmUgY29uZmlkZW50IHRoYXQgdGhpcyBpc3N1ZSBpcyBub3QgcmVwcm9kdWNpbmcgaW4gY3VycmVudCAoMTYtMTgpIFJlYWN0IHZlcnNpb25zXG4gICAgICAgICAgICBzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmc6IHRydWUgfSkpKTtcbn07XG5leHBvcnQgeyBJbWFnZSwgaW1hZ2VLaXQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUltYWdlLmpzLm1hcCIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuZXhwb3J0IGRlZmF1bHQge1wiaW1hZ2VcIjpcIlRqMDFoaFwifTsiLCIndXNlLWNsaWVudCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBJbWFnZSBhcyBQaXhlbFBlcmZlY3RJbWFnZSB9IGZyb20gJ0B3aXgvaW1hZ2UnO1xuaW1wb3J0IHR5cGUgeyBJbWFnZVByb3BzIH0gZnJvbSAnQHdpeC9pbWFnZSc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGUvSW1hZ2UubW9kdWxlLnNjc3MnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xzeCc7XG5pbXBvcnQgdHlwZSB7IFJlc3BvbnNpdmVJbWFnZVByb3BzIH0gZnJvbSAnQHdpeC9lZGl0b3ItZWxlbWVudHMtZGVmaW5pdGlvbnMnO1xuXG5jb25zdCBJbWFnZTogUmVhY3QuRkM8XG4gIEltYWdlUHJvcHMgJiB7XG4gICAgcmVzcG9uc2l2ZUltYWdlUHJvcHM/OiBSZXNwb25zaXZlSW1hZ2VQcm9wcztcbiAgICB6b29tZWRJbWFnZVJlc3BvbnNpdmVPdmVycmlkZT86IFJlc3BvbnNpdmVJbWFnZVByb3BzO1xuICB9XG4+ID0gcHJvcHMgPT4ge1xuICBjb25zdCB7XG4gICAgaWQsXG4gICAgYWx0LFxuICAgIHJvbGUsXG4gICAgY2xhc3NOYW1lLFxuICAgIGltYWdlU3R5bGVzID0ge30sXG4gICAgdGFyZ2V0V2lkdGgsXG4gICAgdGFyZ2V0SGVpZ2h0LFxuICAgIG9uTG9hZCxcbiAgICBvbkVycm9yLFxuICAgIGNvbnRhaW5lcldpZHRoLFxuICAgIGNvbnRhaW5lckhlaWdodCxcbiAgICBpc0luRmlyc3RGb2xkLFxuICAgIHNvY2lhbEF0dHJzLFxuICAgIHNraXBNZWFzdXJlLFxuICAgIHJlc3BvbnNpdmVJbWFnZVByb3BzLFxuICAgIHpvb21lZEltYWdlUmVzcG9uc2l2ZU92ZXJyaWRlLFxuICAgIGRpc3BsYXlNb2RlLFxuICB9ID0gcHJvcHM7XG5cbiAgY29uc3QgZWZmZWN0aXZlV2lkdGggPSB0YXJnZXRXaWR0aCB8fCBjb250YWluZXJXaWR0aDtcbiAgY29uc3QgZWZmZWN0aXZlSGVpZ2h0ID0gdGFyZ2V0SGVpZ2h0IHx8IGNvbnRhaW5lckhlaWdodDtcblxuICBjb25zdCB7IGZhbGxiYWNrU3JjLCBzcmNzZXQsIHNvdXJjZXMsIGNzcyB9ID0gcmVzcG9uc2l2ZUltYWdlUHJvcHMgfHwge307XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBjb25zdCB7IHdpZHRoLCBoZWlnaHQsIC4uLnJlc3BvbnNpdmVJbWdDc3NOb0hlaWdodEFuZFdpZHRoIH0gPVxuICAgIHJlc3BvbnNpdmVJbWFnZVByb3BzPy5jc3M/LmltZyB8fCB7fTtcblxuICBjb25zdCByZXNwb25zaXZlSW1hZ2VzU3R5bGUgPVxuICAgIGRpc3BsYXlNb2RlID09PSAnb3JpZ2luYWxfc2l6ZSdcbiAgICAgID8gcmVzcG9uc2l2ZUltYWdlUHJvcHM/LmNzcz8uaW1nXG4gICAgICA6IHJlc3BvbnNpdmVJbWdDc3NOb0hlaWdodEFuZFdpZHRoO1xuXG4gIGlmIChmYWxsYmFja1NyYyAmJiBzcmNzZXQgJiYgY3NzKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxpbWdcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBmZXRjaHByaW9yaXR5IHR5cGUgc2hvdWxkIHdvcmsgaW4gcmVhY3QgPiAxOC4zIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzI1OTI3XG4gICAgICAgIGZldGNocHJpb3JpdHk9e2lzSW5GaXJzdEZvbGQgPyAnaGlnaCcgOiB1bmRlZmluZWR9XG4gICAgICAgIGxvYWRpbmc9e2lzSW5GaXJzdEZvbGQgPT09IGZhbHNlID8gJ2xhenknIDogdW5kZWZpbmVkfVxuICAgICAgICBzaXplcz17YCR7ZWZmZWN0aXZlV2lkdGh9cHhgfVxuICAgICAgICBzcmNTZXQ9e1xuICAgICAgICAgIHNraXBNZWFzdXJlXG4gICAgICAgICAgICA/IHpvb21lZEltYWdlUmVzcG9uc2l2ZU92ZXJyaWRlPy5zcmNzZXRcbiAgICAgICAgICAgIDogcmVzcG9uc2l2ZUltYWdlUHJvcHM/LnNyY3NldFxuICAgICAgICB9XG4gICAgICAgIGlkPXtpZH1cbiAgICAgICAgc3JjPXtmYWxsYmFja1NyY31cbiAgICAgICAgYWx0PXthbHQgfHwgJyd9XG4gICAgICAgIHJvbGU9e3JvbGV9XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgLi4uaW1hZ2VTdHlsZXMsXG4gICAgICAgICAgLi4uKHNraXBNZWFzdXJlXG4gICAgICAgICAgICA/IHsgLi4uem9vbWVkSW1hZ2VSZXNwb25zaXZlT3ZlcnJpZGU/LmNzcz8uaW1nIH1cbiAgICAgICAgICAgIDogeyAuLi5yZXNwb25zaXZlSW1hZ2VzU3R5bGUgfSksXG4gICAgICAgIH19XG4gICAgICAgIG9uTG9hZD17b25Mb2FkfVxuICAgICAgICBvbkVycm9yPXtvbkVycm9yfVxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoY2xhc3NOYW1lLCBzdHlsZXMuaW1hZ2UpfVxuICAgICAgICB3aWR0aD17ZWZmZWN0aXZlV2lkdGh9XG4gICAgICAgIGhlaWdodD17ZWZmZWN0aXZlSGVpZ2h0fVxuICAgICAgICB7Li4uc29jaWFsQXR0cnN9XG4gICAgICAvPlxuICAgICk7XG4gIH1cblxuICBpZiAoZmFsbGJhY2tTcmMgJiYgc291cmNlcyAmJiBjc3MpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPHBpY3R1cmU+XG4gICAgICAgIHtzb3VyY2VzLm1hcChcbiAgICAgICAgICAoe1xuICAgICAgICAgICAgc3Jjc2V0OiBzb3VyY2VTcmNzZXQsXG4gICAgICAgICAgICBtZWRpYSxcbiAgICAgICAgICAgIHNpemVzLFxuICAgICAgICAgIH06IHtcbiAgICAgICAgICAgIHNyY3NldDogc3RyaW5nO1xuICAgICAgICAgICAgbWVkaWE6IHN0cmluZztcbiAgICAgICAgICAgIHNpemVzOiBzdHJpbmc7XG4gICAgICAgICAgfSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPHNvdXJjZVxuICAgICAgICAgICAgICAgIGtleT17bWVkaWF9XG4gICAgICAgICAgICAgICAgc3JjU2V0PXtzb3VyY2VTcmNzZXR9XG4gICAgICAgICAgICAgICAgbWVkaWE9e21lZGlhfVxuICAgICAgICAgICAgICAgIHNpemVzPXtzaXplc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSxcbiAgICAgICAgKX1cbiAgICAgICAgPGltZ1xuICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgZmV0Y2hwcmlvcml0eSB0eXBlIHNob3VsZCB3b3JrIGluIHJlYWN0ID4gMTguMyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC8yNTkyN1xuICAgICAgICAgIGZldGNocHJpb3JpdHk9e2lzSW5GaXJzdEZvbGQgPyAnaGlnaCcgOiB1bmRlZmluZWR9XG4gICAgICAgICAgbG9hZGluZz17aXNJbkZpcnN0Rm9sZCA9PT0gZmFsc2UgPyAnbGF6eScgOiB1bmRlZmluZWR9XG4gICAgICAgICAgaWQ9e2lkfVxuICAgICAgICAgIHNyYz17c291cmNlc1swXS5mYWxsYmFja1NyY31cbiAgICAgICAgICBhbHQ9e2FsdCB8fCAnJ31cbiAgICAgICAgICByb2xlPXtyb2xlfVxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAuLi5pbWFnZVN0eWxlcyxcbiAgICAgICAgICAgIG9iamVjdEZpdDogc291cmNlc1swXS5pbWdTdHlsZS5vYmplY3RGaXQsXG4gICAgICAgICAgICBvYmplY3RQb3NpdGlvbjogc291cmNlc1swXS5pbWdTdHlsZS5vYmplY3RQb3NpdGlvbixcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uTG9hZD17b25Mb2FkfVxuICAgICAgICAgIG9uRXJyb3I9e29uRXJyb3J9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKGNsYXNzTmFtZSwgc3R5bGVzLmltYWdlKX1cbiAgICAgICAgICB3aWR0aD17ZWZmZWN0aXZlV2lkdGh9XG4gICAgICAgICAgaGVpZ2h0PXtlZmZlY3RpdmVIZWlnaHR9XG4gICAgICAgICAgey4uLnNvY2lhbEF0dHJzfVxuICAgICAgICAvPlxuICAgICAgPC9waWN0dXJlPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gPFBpeGVsUGVyZmVjdEltYWdlIHsuLi5wcm9wc30gLz47XG59O1xuXG5leHBvcnQgZGVmYXVsdCBJbWFnZTtcbiIsIid1c2UtY2xpZW50JztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgQmFja2dyb3VuZEltYWdlUHJvcHMgfSBmcm9tICcuLi9CYWNrZ3JvdW5kSW1hZ2UudHlwZXMnO1xuXG5jb25zdCBkZWZhdWx0SWRQcmVmaXggPSAnYmdJbWdfJztcblxuY29uc3QgQmFja2dyb3VuZEltYWdlOiBSZWFjdC5GQzxCYWNrZ3JvdW5kSW1hZ2VQcm9wcz4gPSBwcm9wcyA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGFzc05hbWUsXG4gICAgY3VzdG9tSWRQcmVmaXgsXG4gICAgZ2V0UGxhY2Vob2xkZXIsXG4gICAgaGFzQW5pbWF0aW9uLFxuICAgIC4uLmJhY2tncm91bmRJbWFnZVxuICB9ID0gcHJvcHM7XG5cbiAgY29uc3QgdGlsZUltYWdlZEluZm9TdHJpbmcgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGNvbnRhaW5lcklkOiBiYWNrZ3JvdW5kSW1hZ2UuY29udGFpbmVySWQsXG4gICAgICAgIGFsaWduVHlwZTogYmFja2dyb3VuZEltYWdlLmFsaWduVHlwZSxcbiAgICAgICAgZml0dGluZ1R5cGU6IGJhY2tncm91bmRJbWFnZS5kaXNwbGF5TW9kZSxcbiAgICAgICAgaGFzQW5pbWF0aW9uLFxuICAgICAgICBpbWFnZURhdGE6IHtcbiAgICAgICAgICB3aWR0aDogYmFja2dyb3VuZEltYWdlLndpZHRoLFxuICAgICAgICAgIGhlaWdodDogYmFja2dyb3VuZEltYWdlLmhlaWdodCxcbiAgICAgICAgICB1cmk6IGJhY2tncm91bmRJbWFnZS51cmksXG4gICAgICAgICAgbmFtZTogYmFja2dyb3VuZEltYWdlLm5hbWUsXG4gICAgICAgICAgLi4uKGJhY2tncm91bmRJbWFnZS5xdWFsaXR5ICYmIHsgcXVhbGl0eTogYmFja2dyb3VuZEltYWdlLnF1YWxpdHkgfSksXG4gICAgICAgICAgZGlzcGxheU1vZGU6IGJhY2tncm91bmRJbWFnZS5kaXNwbGF5TW9kZSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgIFtiYWNrZ3JvdW5kSW1hZ2UsIGhhc0FuaW1hdGlvbl0sXG4gICk7XG5cbiAgY29uc3QgaW1hZ2VQbGFjZWhvbGRlckRhdGEgPSBSZWFjdC51c2VSZWY8YW55PihudWxsKTtcblxuICBpZiAoIWltYWdlUGxhY2Vob2xkZXJEYXRhLmN1cnJlbnQpIHtcbiAgICBpbWFnZVBsYWNlaG9sZGVyRGF0YS5jdXJyZW50ID0gZ2V0UGxhY2Vob2xkZXJcbiAgICAgID8gZ2V0UGxhY2Vob2xkZXIoe1xuICAgICAgICAgIGZpdHRpbmdUeXBlOiBiYWNrZ3JvdW5kSW1hZ2UuZGlzcGxheU1vZGUsXG4gICAgICAgICAgc3JjOiB7XG4gICAgICAgICAgICBpZDogYmFja2dyb3VuZEltYWdlLnVyaSxcbiAgICAgICAgICAgIHdpZHRoOiBiYWNrZ3JvdW5kSW1hZ2Uud2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IGJhY2tncm91bmRJbWFnZS5oZWlnaHQsXG4gICAgICAgICAgICBuYW1lOiBiYWNrZ3JvdW5kSW1hZ2UubmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRhcmdldDoge1xuICAgICAgICAgICAgd2lkdGg6IGJhY2tncm91bmRJbWFnZS5jb250YWluZXJXaWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogYmFja2dyb3VuZEltYWdlLmNvbnRhaW5lckhlaWdodCxcbiAgICAgICAgICAgIGFsaWdubWVudDogYmFja2dyb3VuZEltYWdlLmFsaWduVHlwZSxcbiAgICAgICAgICAgIGh0bWxUYWc6ICdiZycsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBoYXNBbmltYXRpb24sXG4gICAgICAgICAgICBhbGxvd0FuaW1hdGVkVHJhbnNmb3JtOiBmYWxzZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgOiAvLyB0byBrZWVwIGFuIGVtcHR5IHBsYWNlaG9sZGVyIGRhdGFcbiAgICAgICAge1xuICAgICAgICAgIHVyaTogdW5kZWZpbmVkLCAvLyB0byByZW1vdmUgc3JjIGF0dHJpYnV0ZSBjb21wbGV0ZWx5XG4gICAgICAgICAgY3NzOiB7IGltZzoge30gfSxcbiAgICAgICAgICBhdHRyOiB7IGltZzoge30sIGNvbnRhaW5lcjoge30gfSxcbiAgICAgICAgfTtcbiAgfVxuXG4gIGNvbnN0IGN1cnJlbnRQbGFjZWhvbGRlciA9IGltYWdlUGxhY2Vob2xkZXJEYXRhLmN1cnJlbnQ7XG5cbiAgY29uc3Qgc3JjID0gY3VycmVudFBsYWNlaG9sZGVyPy51cmkgPz8gJyc7XG4gIGNvbnN0IHBsYWNlaG9sZGVyU3R5bGUgPSBjdXJyZW50UGxhY2Vob2xkZXIuY3NzPy5jb250YWluZXIgPz8ge307XG5cbiAgY29uc3QgcGxhY2Vob2xkZXIgPSBPYmplY3QuYXNzaWduKFxuICAgIHNyY1xuICAgICAgPyB7XG4gICAgICAgICAgYmFja2dyb3VuZEltYWdlOiBgdXJsKCR7c3JjfSlgLFxuICAgICAgICB9XG4gICAgICA6IHt9LFxuICAgIHBsYWNlaG9sZGVyU3R5bGUsXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICAvLyBcdEN1c3RvbSBlbGVtZW50IGRlZmluZWQgaW46IGh0dHBzOi8vZ2l0aHViLmNvbS93aXgtcHJpdmF0ZS9zYW50YS1jb3JlL2Jsb2IvbWFzdGVyL3dpeC1jdXN0b20tZWxlbWVudHMvc3JjL2VsZW1lbnRzL3dpeEJnSW1hZ2Uvd2l4QmdJbWFnZS5qc1xuICAgIDx3aXgtYmctaW1hZ2VcbiAgICAgIGlkPXtgJHtjdXN0b21JZFByZWZpeCB8fCBkZWZhdWx0SWRQcmVmaXh9JHtiYWNrZ3JvdW5kSW1hZ2UuY29udGFpbmVySWR9YH1cbiAgICAgIGNsYXNzPXtjbGFzc05hbWV9XG4gICAgICBzdHlsZT17cGxhY2Vob2xkZXJ9XG4gICAgICBkYXRhLXRpbGVkLWltYWdlLWluZm89e3RpbGVJbWFnZWRJbmZvU3RyaW5nfVxuICAgICAgZGF0YS1oYXMtYmctc2Nyb2xsLWVmZmVjdD17YmFja2dyb3VuZEltYWdlLmhhc0JnU2Nyb2xsRWZmZWN0IHx8ICcnfVxuICAgICAgZGF0YS1iZy1lZmZlY3QtbmFtZT17YmFja2dyb3VuZEltYWdlLmJnRWZmZWN0TmFtZSB8fCAnJ31cbiAgICAgIGRhdGEtbW90aW9uLXBhcnQ9e2BCR19JTUcgJHtiYWNrZ3JvdW5kSW1hZ2UuY29udGFpbmVySWR9YH1cbiAgICAvPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQmFja2dyb3VuZEltYWdlO1xuIiwiZXhwb3J0IGNvbnN0IENPTVBfSURfUExBQ0VIT0xERVIgPSAnPCU9IGNvbXBJZCAlPic7XG5jb25zdCBDT01QX0lEX1BMQUNFSE9MREVSX1JFR0VYID0gbmV3IFJlZ0V4cChDT01QX0lEX1BMQUNFSE9MREVSLCAnZycpO1xuZXhwb3J0IGNvbnN0IHJlcGxhY2VDb21wSWRQbGFjZWhvbGRlciA9IChzdHIsIGNvbXBJZCkgPT4gc3RyLnJlcGxhY2UoQ09NUF9JRF9QTEFDRUhPTERFUl9SRUdFWCwgY29tcElkKTtcbmV4cG9ydCBjb25zdCByZXBsYWNlQ29tcElkUGxhY2Vob2xkZXJJblN2Z0NvbnRlbnQgPSAodmVjdG9ySW1hZ2VQcm9wcywgaWQpID0+IHtcbiAgICBpZiAodmVjdG9ySW1hZ2VQcm9wcyAmJiB2ZWN0b3JJbWFnZVByb3BzLnN2Z0NvbnRlbnQpIHtcbiAgICAgICAgdmVjdG9ySW1hZ2VQcm9wcy5zdmdDb250ZW50ID0gcmVwbGFjZUNvbXBJZFBsYWNlaG9sZGVyKHZlY3RvckltYWdlUHJvcHMuc3ZnQ29udGVudCwgaWQpO1xuICAgIH1cbn07XG5leHBvcnQgY29uc3QgZ2V0RmlsdGVyRWZmZWN0U3R5bGUgPSAoaWQsIGZpbHRlckVmZmVjdFN2Z1VybCkgPT4ge1xuICAgIHJldHVybiBmaWx0ZXJFZmZlY3RTdmdVcmxcbiAgICAgICAgPyB7XG4gICAgICAgICAgICAnLS1maWx0ZXItZWZmZWN0LXN2Zy11cmwnOiByZXBsYWNlQ29tcElkUGxhY2Vob2xkZXIoZmlsdGVyRWZmZWN0U3ZnVXJsLCBpZCksXG4gICAgICAgIH1cbiAgICAgICAgOiB7fTtcbn07XG5leHBvcnQgY29uc3QgcmVwbGFjZUNvbnRlbnRJZHMgPSAoc3ZnLCBjb21wSWQpID0+IHtcbiAgICBjb25zdCBpZE1hcCA9IHt9O1xuICAgIC8vIG5lZWQgdG8gYWNjb3VudCBmb3IgY29tcElkIHBsYWNlaG9sZGVyIGA8JT0gY29tcElkICU+YFxuICAgIGNvbnN0IHJlc3VsdCA9IHN2Zy5yZXBsYWNlKC9cXHNpZD1cIihbXlwiPF0rKVwiL2csIChtYXRjaCwgaWQpID0+IHtcbiAgICAgICAgY29uc3QgdW5pcXVlID0gaWQuZW5kc1dpdGgoY29tcElkKSA/IGlkIDogYCR7aWR9XyR7Y29tcElkfWA7XG4gICAgICAgIGlkTWFwW2lkXSA9IHVuaXF1ZTtcbiAgICAgICAgcmV0dXJuIGAgaWQ9XCIke3VuaXF1ZX1cImA7XG4gICAgfSk7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGlkTWFwKS5yZWR1Y2UoKGN1cnJlbnQsIGtleSkgPT4gY3VycmVudC5yZXBsYWNlKG5ldyBSZWdFeHAoYCgke2tleX0pKD8hXyR7Y29tcElkfSlgLCAnZycpLCBpZE1hcFtrZXldKSwgcmVzdWx0KTtcbn07XG5leHBvcnQgY29uc3QgbW9kaWZ5QTExWUF0dHJpYnV0ZXMgPSAoc3ZnLCBhcmlhTGFiZWwpID0+IHtcbiAgICBsZXQgcmVzdWx0ID0gc3ZnO1xuICAgIGNvbnN0IGFyaWFMYWJlbE1hdGNoZXIgPSAvYXJpYS1sYWJlbD1cIlteXCJdKlwiLztcbiAgICBjb25zdCBhcmlhSGlkZGVuTWF0Y2hlciA9IC9hcmlhLWhpZGRlbj1cIj90cnVlXCI/LztcbiAgICBjb25zdCByb2xlTWF0Y2hlciA9IC9yb2xlPVwiP3ByZXNlbnRhdGlvblwiPy87XG4gICAgLy8gaWYgdGhlIHN2ZyBjb250YWlucyBhbiBhcmlhLWxhYmVsIG1vZGlmeSBpdCwgZWxzZSBhcHBlbmQgaXRcbiAgICBpZiAoc3ZnLm1hdGNoKGFyaWFMYWJlbE1hdGNoZXIpKSB7XG4gICAgICAgIHJlc3VsdCA9IHN2Zy5yZXBsYWNlKGFyaWFMYWJlbE1hdGNoZXIsIGBhcmlhLWxhYmVsPVwiJHthcmlhTGFiZWx9XCJgKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IHN2Zy5yZXBsYWNlKC8oPHN2Z1tePl0qKT4vLCBgJDEgYXJpYS1sYWJlbD1cIiR7YXJpYUxhYmVsfVwiPmApO1xuICAgIH1cbiAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZShhcmlhSGlkZGVuTWF0Y2hlciwgJycpO1xuICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKHJvbGVNYXRjaGVyLCBgcm9sZT1cImltZ1wiYCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD12ZWN0b3JJbWFnZVV0aWxzLmpzLm1hcCIsImNvbnN0IEhPVkVSX1NVRkZJWCA9ICc6aG92ZXInO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldERlZmF1bHRJZDogKGlkPzogc3RyaW5nKSA9PiBpZD8ucmVwbGFjZShIT1ZFUl9TVUZGSVgsICcnKSxcbn07XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbmV4cG9ydCBkZWZhdWx0IHtcInZpZGVvLWNvbnRhaW5lclwiOlwiYlg5T19TXCIsXCJ2aWRlb0NvbnRhaW5lclwiOlwiYlg5T19TXCIsXCJ2aWRlby1wb3N0ZXJcIjpcIlpfd0N3clwiLFwidmlkZW9Qb3N0ZXJcIjpcIlpfd0N3clwiLFwidmlkZW8tcG9zdGVyLWltZ1wiOlwiSnhrX1VMXCIsXCJ2aWRlb1Bvc3RlckltZ1wiOlwiSnhrX1VMXCIsXCJ2aWRlb1wiOlwiSzhNU3JhXCIsXCJmaWx0ZXItZWZmZWN0LXN2Z1wiOlwiWVRiM2I0XCIsXCJmaWx0ZXJFZmZlY3RTdmdcIjpcIllUYjNiNFwifTsiLCIndXNlLWNsaWVudCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbHN4JztcbmltcG9ydCB7IHJlcGxhY2VDb21wSWRQbGFjZWhvbGRlciB9IGZyb20gJ0B3aXgvZWRpdG9yLWVsZW1lbnRzLWNvbW1vbi11dGlscyc7XG5pbXBvcnQgSW1hZ2UgZnJvbSAnLi4vLi4vSW1hZ2Uvdmlld2VyL0ltYWdlJztcbmltcG9ydCB0eXBlIHsgSVZpZGVvUHJvcHMgfSBmcm9tICcuLi9WaWRlby50eXBlcyc7XG5pbXBvcnQgaG92ZXJCb3hVdGlscyBmcm9tICcuLi8uLi9NZWRpYUNvbnRhaW5lcnMvSG92ZXJCb3gvdXRpbHMnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlL1ZpZGVvLnNjc3MnO1xuXG5jb25zdCBWSURFT19DTEFTU19GT1JfTEFZT1VUID0gJ2JnVmlkZW8nO1xuY29uc3QgVklERU9fUE9TVEVSX0NMQVNTX0ZPUl9MQVlPVVQgPSAnYmdWaWRlb3Bvc3Rlcic7XG5cbmNvbnN0IFBPU1RFUl9JTUFHRV9RVUFMSVRZID0ge1xuICBxdWFsaXR5OiB7XG4gICAgdW5zaGFycE1hc2s6IHtcbiAgICAgIHJhZGl1czogMC4zMyxcbiAgICAgIGFtb3VudDogMS4wLFxuICAgICAgdGhyZXNob2xkOiAwLjAsXG4gICAgfSxcbiAgfSxcbiAgZGV2aWNlUGl4ZWxSYXRpbzogMSxcbn07XG5cbmNvbnN0IFZpZGVvOiBSZWFjdC5GQzxJVmlkZW9Qcm9wcz4gPSBwcm9wcyA9PiB7XG4gIGNvbnN0IHtcbiAgICBpZCxcbiAgICB2aWRlb1JlZixcbiAgICB2aWRlb0luZm8sXG4gICAgcG9zdGVySW1hZ2VJbmZvLFxuICAgIG11dGVkLFxuICAgIHByZWxvYWQsXG4gICAgbG9vcCxcbiAgICBhbHQsXG4gICAgaXNWaWRlb0VuYWJsZWQsXG4gICAgZ2V0UGxhY2Vob2xkZXIsXG4gICAgZXh0cmFDbGFzc05hbWUgPSAnJyxcbiAgfSA9IHByb3BzO1xuXG4gIC8vIGZpeCBjb250YWluZXJJZCB0byBzdXBwb3J0IGhvdmVyQm94IGNvbXBvbmVudFxuICB2aWRlb0luZm8uY29udGFpbmVySWQgPSBob3ZlckJveFV0aWxzLmdldERlZmF1bHRJZCh2aWRlb0luZm8uY29udGFpbmVySWQpITtcblxuICBjb25zdCB2aWRlb0luZm9TdHJpbmcgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IEpTT04uc3RyaW5naWZ5KHZpZGVvSW5mbyksXG4gICAgW3ZpZGVvSW5mb10sXG4gICk7XG4gIGNvbnN0IFZpZGVvUG9zdGVySW1hZ2UgPSAoXG4gICAgPD5cbiAgICAgIHtwb3N0ZXJJbWFnZUluZm8uZmlsdGVyRWZmZWN0U3ZnU3RyaW5nICYmIChcbiAgICAgICAgPHN2Z1xuICAgICAgICAgIGlkPXtgc3ZnXyR7dmlkZW9JbmZvLmNvbnRhaW5lcklkfWB9XG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyRWZmZWN0U3ZnfVxuICAgICAgICA+XG4gICAgICAgICAgPGRlZnNcbiAgICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7XG4gICAgICAgICAgICAgIF9faHRtbDogcmVwbGFjZUNvbXBJZFBsYWNlaG9sZGVyKFxuICAgICAgICAgICAgICAgIHBvc3RlckltYWdlSW5mby5maWx0ZXJFZmZlY3RTdmdTdHJpbmcsXG4gICAgICAgICAgICAgICAgdmlkZW9JbmZvLmNvbnRhaW5lcklkISxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICApfVxuICAgICAgPEltYWdlXG4gICAgICAgIGtleT17YCR7dmlkZW9JbmZvLnZpZGVvSWR9X2ltZ2B9XG4gICAgICAgIGlkPXtgJHtwb3N0ZXJJbWFnZUluZm8uY29udGFpbmVySWR9X2ltZ2B9XG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhcbiAgICAgICAgICBzdHlsZXMudmlkZW9Qb3N0ZXIsXG4gICAgICAgICAgc3R5bGVzLnZpZGVvUG9zdGVySW1nLFxuICAgICAgICAgIFZJREVPX1BPU1RFUl9DTEFTU19GT1JfTEFZT1VULFxuICAgICAgICAgIGV4dHJhQ2xhc3NOYW1lLFxuICAgICAgICApfVxuICAgICAgICBpbWFnZVN0eWxlcz17eyB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICcxMDAlJyB9fVxuICAgICAgICB7Li4ucG9zdGVySW1hZ2VJbmZvfVxuICAgICAgICB7Li4uUE9TVEVSX0lNQUdFX1FVQUxJVFl9XG4gICAgICAgIGdldFBsYWNlaG9sZGVyPXtnZXRQbGFjZWhvbGRlcn1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG5cbiAgaWYgKCFpc1ZpZGVvRW5hYmxlZCkge1xuICAgIHJldHVybiBWaWRlb1Bvc3RlckltYWdlO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICAvLyBDdXN0b20gZWxlbWVudCBkZWZpbmVkIGluOiBodHRwczovL2dpdGh1Yi5jb20vd2l4LXByaXZhdGUvc2FudGEtY29yZS9ibG9iL21hc3Rlci93aXgtY3VzdG9tLWVsZW1lbnRzL3NyYy9lbGVtZW50cy93aXhWaWRlby93aXhWaWRlby5qc1xuICAgIDx3aXgtdmlkZW9cbiAgICAgIGlkPXtpZH1cbiAgICAgIGRhdGEtdmlkZW8taW5mbz17dmlkZW9JbmZvU3RyaW5nfVxuICAgICAgZGF0YS1tb3Rpb24tcGFydD17YEJHX0lNRyAke3ZpZGVvSW5mby5jb250YWluZXJJZH1gfVxuICAgICAgY2xhc3M9e2NsYXNzTmFtZXMoXG4gICAgICAgIHN0eWxlcy52aWRlb0NvbnRhaW5lcixcbiAgICAgICAgVklERU9fQ0xBU1NfRk9SX0xBWU9VVCxcbiAgICAgICAgZXh0cmFDbGFzc05hbWUsXG4gICAgICApfVxuICAgID5cbiAgICAgIDx2aWRlb1xuICAgICAgICBrZXk9e2Ake3ZpZGVvSW5mby52aWRlb0lkfV92aWRlb2B9XG4gICAgICAgIHJlZj17dmlkZW9SZWZ9XG4gICAgICAgIGlkPXtgJHt2aWRlb0luZm8uY29udGFpbmVySWR9X3ZpZGVvYH1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudmlkZW99XG4gICAgICAgIGNyb3NzT3JpZ2luPVwiYW5vbnltb3VzXCJcbiAgICAgICAgYXJpYS1sYWJlbD17YWx0fVxuICAgICAgICBwbGF5c0lubGluZT17dHJ1ZX1cbiAgICAgICAgcHJlbG9hZD17cHJlbG9hZH1cbiAgICAgICAgbXV0ZWQ9e211dGVkfVxuICAgICAgICBsb29wPXtsb29wfVxuICAgICAgLz5cbiAgICAgIHtWaWRlb1Bvc3RlckltYWdlfVxuICAgIDwvd2l4LXZpZGVvPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVmlkZW87XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbmV4cG9ydCBkZWZhdWx0IHtcIm1lZGlhLWNvbnRhaW5lclwiOlwiU1V6MFdLXCIsXCJtZWRpYUNvbnRhaW5lclwiOlwiU1V6MFdLXCJ9OyIsIid1c2UtY2xpZW50JztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgQmFja2dyb3VuZE1lZGlhUHJvcHMgfSBmcm9tICcuLi9CYWNrZ3JvdW5kTWVkaWEudHlwZXMnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlL0JhY2tncm91bmRNZWRpYS5zY3NzJztcblxuY29uc3QgQmFja2dyb3VuZE1lZGlhOiBSZWFjdC5GQzxCYWNrZ3JvdW5kTWVkaWFQcm9wcz4gPSBwcm9wcyA9PiB7XG4gIGNvbnN0IHtcbiAgICBpZCxcbiAgICBjb250YWluZXJJZCxcbiAgICBwYWdlSWQsXG4gICAgY2hpbGRyZW4sXG4gICAgYmdFZmZlY3ROYW1lID0gJycsXG4gICAgY29udGFpbmVyU2l6ZSxcbiAgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgLy8gXHRDdXN0b20gZWxlbWVudCBkZWZpbmVkIGluOiBodHRwczovL2dpdGh1Yi5jb20vd2l4LXByaXZhdGUvc2FudGEtY29yZS9ibG9iL21hc3Rlci93aXgtY3VzdG9tLWVsZW1lbnRzL3NyYy9lbGVtZW50cy93aXhCZ01lZGlhL3dpeEJnTWVkaWEuanNcbiAgICA8d2l4LWJnLW1lZGlhXG4gICAgICBpZD17aWR9XG4gICAgICBjbGFzcz17c3R5bGVzLm1lZGlhQ29udGFpbmVyfVxuICAgICAgZGF0YS1jb250YWluZXItaWQ9e2NvbnRhaW5lcklkfVxuICAgICAgZGF0YS1jb250YWluZXItc2l6ZT17YCR7Y29udGFpbmVyU2l6ZT8ud2lkdGggfHwgMH0sICR7XG4gICAgICAgIGNvbnRhaW5lclNpemU/LmhlaWdodCB8fCAwXG4gICAgICB9YH1cbiAgICAgIGRhdGEtcGFnZS1pZD17cGFnZUlkfVxuICAgICAgZGF0YS1iZy1lZmZlY3QtbmFtZT17YmdFZmZlY3ROYW1lfVxuICAgICAgZGF0YS1tb3Rpb24tcGFydD17YEJHX01FRElBICR7Y29udGFpbmVySWR9YH1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC93aXgtYmctbWVkaWE+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBCYWNrZ3JvdW5kTWVkaWE7XG4iLCJleHBvcnQgY29uc3QgVGVzdElkcyA9IHtcbiAgYmdPdmVybGF5OiAnYmdPdmVybGF5Jyxcbn0gYXMgY29uc3Q7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbmV4cG9ydCBkZWZhdWx0IHtcImJnLW92ZXJsYXlcIjpcIm00a2hTUFwiLFwiYmdPdmVybGF5XCI6XCJtNGtoU1BcIixcImJnLWltZy1vdmVybGF5XCI6XCJGTnhPbjVcIixcImJnSW1nT3ZlcmxheVwiOlwiRk54T241XCJ9OyIsIid1c2UtY2xpZW50JztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgQmFja2dyb3VuZE92ZXJsYXlQcm9wcyB9IGZyb20gJy4uL0JhY2tncm91bmRPdmVybGF5LnR5cGVzJztcbmltcG9ydCB7IFRlc3RJZHMgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IEJhY2tncm91bmRJbWFnZSBmcm9tICcuLi8uLi9CYWNrZ3JvdW5kSW1hZ2Uvdmlld2VyL0JhY2tncm91bmRJbWFnZSc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGUvQmFja2dyb3VuZE92ZXJsYXkuc2Nzcyc7XG5cbmNvbnN0IEJhY2tncm91bmRPdmVybGF5OiBSZWFjdC5GQzxCYWNrZ3JvdW5kT3ZlcmxheVByb3BzPiA9IHByb3BzID0+IHtcbiAgY29uc3QgeyBpbWFnZU92ZXJsYXkgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBkYXRhLXRlc3RpZD17VGVzdElkcy5iZ092ZXJsYXl9IGNsYXNzTmFtZT17c3R5bGVzLmJnT3ZlcmxheX0+XG4gICAgICB7aW1hZ2VPdmVybGF5ICYmIChcbiAgICAgICAgPEJhY2tncm91bmRJbWFnZVxuICAgICAgICAgIGN1c3RvbUlkUHJlZml4PVwiYmdJbWdPdmVybGF5X1wiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYmdJbWdPdmVybGF5fVxuICAgICAgICAgIHsuLi5pbWFnZU92ZXJsYXl9XG4gICAgICAgID48L0JhY2tncm91bmRJbWFnZT5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBCYWNrZ3JvdW5kT3ZlcmxheTtcbiIsImV4cG9ydCBjb25zdCBUZXN0SWRzID0ge1xuICBiZ0xheWVyczogJ2JnTGF5ZXJzJyxcbiAgY29sb3JVbmRlcmxheTogJ2NvbG9yVW5kZXJsYXknLFxuICBtZWRpYVBhZGRpbmc6ICdtZWRpYVBhZGRpbmcnLFxuICBjYW52YXM6ICdjYW52YXMnLFxufSBhcyBjb25zdDtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuZXhwb3J0IGRlZmF1bHQge1wibGF5ZXJzLWNvbnRhaW5lclwiOlwiTVc1SVdWXCIsXCJsYXllcnNDb250YWluZXJcIjpcIk1XNUlXVlwiLFwiZnVsbC1zY3JlZW4tc2Nyb2xsLWVmZmVjdFwiOlwiTjNlZzBzXCIsXCJmdWxsU2NyZWVuU2Nyb2xsRWZmZWN0XCI6XCJOM2VnMHNcIixcImZpbGwtbGF5ZXJcIjpcIkt2MWFWdFwiLFwiZmlsbExheWVyXCI6XCJLdjFhVnRcIixcImltYWdlLWZpbGwtbGF5ZXJcIjpcImRMUGx4WVwiLFwiaW1hZ2VGaWxsTGF5ZXJcIjpcImRMUGx4WVwiLFwiYmctbWVkaWFcIjpcIlZnTzlZZ1wiLFwiYmdNZWRpYVwiOlwiVmdPOVlnXCIsXCJiZy11bmRlcmxheVwiOlwiTFdiQWF2XCIsXCJiZ1VuZGVybGF5XCI6XCJMV2JBYXZcIixcInZpZGVvRmlsbExheWVyXCI6XCJ5SzZhU0NcIixcImFscGhhLWNhbnZhc1wiOlwiS19ZeE1kXCIsXCJhbHBoYUNhbnZhc1wiOlwiS19ZeE1kXCIsXCJtZWRpYS1wYWRkaW5nLWxheWVyXCI6XCJOR2pjSk5cIixcIm1lZGlhUGFkZGluZ0xheWVyXCI6XCJOR2pjSk5cIixcInRyYW5zZm9ybXNcIjpcIm1OR3NVTVwiLFwibWVkaWEtY2FudmFzXCI6XCJJOHhBNExcIixcIm1lZGlhQ2FudmFzXCI6XCJJOHhBNExcIn07IiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEZpbGxMYXllcnNQcm9wcyB9IGZyb20gJy4uL0ZpbGxMYXllcnMudHlwZXMnO1xuXG50eXBlIExvYWRhYmxlUHJvcHMgPSBQaWNrPEZpbGxMYXllcnNQcm9wcywgJ2ltYWdlJz47XG50eXBlIFVzZU9uTG9hZFByb3BzID0gTG9hZGFibGVQcm9wcyAmIFBpY2s8RmlsbExheWVyc1Byb3BzLCAnb25SZWFkeSc+O1xuXG5leHBvcnQgY29uc3QgdXNlT25Mb2Fkc0V2ZW50cyA9ICh7IG9uUmVhZHksIGltYWdlIH06IFVzZU9uTG9hZFByb3BzKSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG9uUmVhZHkgJiYgIWltYWdlKSB7XG4gICAgICBvblJlYWR5KCk7XG4gICAgfVxuICB9LCBbb25SZWFkeSwgaW1hZ2VdKTtcbiAgcmV0dXJuIHtcbiAgICBvbkltYWdlTG9hZDogKGU6IFJlYWN0LlN5bnRoZXRpY0V2ZW50PEhUTUxJbWFnZUVsZW1lbnQsIEV2ZW50PikgPT4ge1xuICAgICAgaWYgKGltYWdlPy5vbkxvYWQpIHtcbiAgICAgICAgaW1hZ2Uub25Mb2FkKGUpO1xuICAgICAgfVxuXG4gICAgICBpZiAob25SZWFkeSkge1xuICAgICAgICBvblJlYWR5KCk7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn07XG4iLCIndXNlLWNsaWVudCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbHN4JztcbmltcG9ydCBJbWFnZSBmcm9tICcuLi8uLi9JbWFnZS92aWV3ZXIvSW1hZ2UnO1xuaW1wb3J0IEJhY2tncm91bmRJbWFnZSBmcm9tICcuLi8uLi9CYWNrZ3JvdW5kSW1hZ2Uvdmlld2VyL0JhY2tncm91bmRJbWFnZSc7XG5pbXBvcnQgVmlkZW8gZnJvbSAnLi4vLi4vVmlkZW8vdmlld2VyL1ZpZGVvJztcbmltcG9ydCBCYWNrZ3JvdW5kTWVkaWEgZnJvbSAnLi4vLi4vQmFja2dyb3VuZE1lZGlhL3ZpZXdlci9CYWNrZ3JvdW5kTWVkaWEnO1xuaW1wb3J0IEJhY2tncm91bmRPdmVybGF5IGZyb20gJy4uLy4uL0JhY2tncm91bmRPdmVybGF5L3ZpZXdlci9CYWNrZ3JvdW5kT3ZlcmxheSc7XG5pbXBvcnQgdHlwZSB7IEZpbGxMYXllcnNQcm9wcyB9IGZyb20gJy4uL0ZpbGxMYXllcnMudHlwZXMnO1xuaW1wb3J0IHsgVGVzdElkcyB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgaG92ZXJCb3hVdGlscyBmcm9tICcuLi8uLi9NZWRpYUNvbnRhaW5lcnMvSG92ZXJCb3gvdXRpbHMnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlL0ZpbGxMYXllcnMuc2Nzcyc7XG5pbXBvcnQgeyB1c2VPbkxvYWRzRXZlbnRzIH0gZnJvbSAnLi91c2VPbkxvYWRzRXZlbnRzJztcblxuY29uc3QgSU1BR0VfQ0xBU1NfRk9SX0xBWU9VVCA9ICdiZ0ltYWdlJztcblxuY29uc3QgRmlsbExheWVyczogUmVhY3QuRkM8RmlsbExheWVyc1Byb3BzPiA9IHByb3BzID0+IHtcbiAgY29uc3Qge1xuICAgIHZpZGVvUmVmLFxuICAgIGNhbnZhc1JlZixcbiAgICBoYXNCZ0Z1bGxzY3JlZW5TY3JvbGxFZmZlY3QsXG4gICAgaW1hZ2UsXG4gICAgYmFja2dyb3VuZEltYWdlLFxuICAgIGJhY2tncm91bmRNZWRpYSxcbiAgICB2aWRlbyxcbiAgICBiYWNrZ3JvdW5kT3ZlcmxheSxcbiAgICBzaG91bGRQYWRNZWRpYSxcbiAgICBleHRyYUNsYXNzID0gJycsXG4gICAgc2hvdWxkUmVuZGVyVW5kZXJsYXkgPSAhdmlkZW8sXG4gICAgcmVkdWNlZE1vdGlvbiA9IGZhbHNlLFxuICAgIGdldFBsYWNlaG9sZGVyLFxuICAgIGhhc0NhbnZhc0FuaW1hdGlvbixcbiAgICB1c2VXaXhNZWRpYUNhbnZhcyxcbiAgICBvbkNsaWNrLFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgb25JbWFnZUxvYWQgfSA9IHVzZU9uTG9hZHNFdmVudHMocHJvcHMpO1xuICAvLyBmaXggY29udGFpbmVySWQgdG8gc3VwcG9ydCBob3ZlckJveCBjb21wb25lbnRcbiAgY29uc3QgY29udGFpbmVySWQgPSBob3ZlckJveFV0aWxzLmdldERlZmF1bHRJZChwcm9wcy5jb250YWluZXJJZCk7XG4gIGNvbnN0IGZpeGVkSW1hZ2VJZCA9IGBpbWdfJHtob3ZlckJveFV0aWxzLmdldERlZmF1bHRJZChjb250YWluZXJJZCl9YDtcblxuICBjb25zdCBJbWFnZUNvbXBvbmVudCA9IGltYWdlICYmIChcbiAgICA8SW1hZ2VcbiAgICAgIGlkPXtmaXhlZEltYWdlSWR9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXG4gICAgICAgIHN0eWxlcy5maWxsTGF5ZXIsXG4gICAgICAgIHN0eWxlcy5pbWFnZUZpbGxMYXllcixcbiAgICAgICAgc3R5bGVzLnRyYW5zZm9ybXMsXG4gICAgICAgIElNQUdFX0NMQVNTX0ZPUl9MQVlPVVQsXG4gICAgICApfVxuICAgICAgLy8gb3ZlcnJpZGluZyBkaW1lbnNpb25zIHJldHVybmVkIGZyb20gIGltYWdlQ2xpZW50QXBpLmdldFBsYWNlaG9sZGVyKCkuY3NzLmltZ1xuICAgICAgaW1hZ2VTdHlsZXM9e3sgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTAwJScgfX1cbiAgICAgIGdldFBsYWNlaG9sZGVyPXtnZXRQbGFjZWhvbGRlcn1cbiAgICAgIHsuLi5pbWFnZX1cbiAgICAgIG9uTG9hZD17b25JbWFnZUxvYWR9XG4gICAgLz5cbiAgKTtcbiAgY29uc3QgQmFja2dyb3VuZEltYWdlQ29tcG9uZW50ID0gYmFja2dyb3VuZEltYWdlICYmIChcbiAgICA8QmFja2dyb3VuZEltYWdlXG4gICAgICB7Li4uYmFja2dyb3VuZEltYWdlfVxuICAgICAgY29udGFpbmVySWQ9e2NvbnRhaW5lcklkfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKFxuICAgICAgICBzdHlsZXMuZmlsbExheWVyLFxuICAgICAgICBzdHlsZXMuaW1hZ2VGaWxsTGF5ZXIsXG4gICAgICAgIHN0eWxlcy50cmFuc2Zvcm1zLFxuICAgICAgICBJTUFHRV9DTEFTU19GT1JfTEFZT1VULFxuICAgICAgKX1cbiAgICAgIGdldFBsYWNlaG9sZGVyPXtnZXRQbGFjZWhvbGRlcn1cbiAgICAvPlxuICApO1xuICBjb25zdCBWaWRlb0NvbXBvbmVudCA9IHZpZGVvICYmIChcbiAgICA8VmlkZW9cbiAgICAgIGlkPXtgdmlkZW9Db250YWluZXJfJHtjb250YWluZXJJZH1gfVxuICAgICAgey4uLnZpZGVvfVxuICAgICAgZXh0cmFDbGFzc05hbWU9e3N0eWxlcy52aWRlb0ZpbGxMYXllcn1cbiAgICAgIHJlZHVjZWRNb3Rpb249e3JlZHVjZWRNb3Rpb259XG4gICAgICB2aWRlb1JlZj17dmlkZW9SZWZ9XG4gICAgICBnZXRQbGFjZWhvbGRlcj17Z2V0UGxhY2Vob2xkZXJ9XG4gICAgLz5cbiAgKTtcblxuICBjb25zdCBNZWRpYSA9XG4gICAgKHVzZVdpeE1lZGlhQ2FudmFzICYmIGNhbnZhc1JlZikgfHwgaGFzQ2FudmFzQW5pbWF0aW9uID8gKFxuICAgICAgPHdpeC1tZWRpYS1jYW52YXNcbiAgICAgICAgZGF0YS1jb250YWluZXItaWQ9e2NvbnRhaW5lcklkfVxuICAgICAgICBjbGFzcz17aGFzQ2FudmFzQW5pbWF0aW9uID8gc3R5bGVzLm1lZGlhQ2FudmFzIDogJyd9XG4gICAgICA+XG4gICAgICAgIHtJbWFnZUNvbXBvbmVudH1cbiAgICAgICAge0JhY2tncm91bmRJbWFnZUNvbXBvbmVudH1cbiAgICAgICAge1ZpZGVvQ29tcG9uZW50fVxuICAgICAgICA8Y2FudmFzXG4gICAgICAgICAgaWQ9e2Ake2NvbnRhaW5lcklkfXdlYmdsY2FudmFzYH1cbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoc3R5bGVzLmFscGhhQ2FudmFzLCAnd2ViZ2xjYW52YXMnKX1cbiAgICAgICAgICBhcmlhLWxhYmVsPXt2aWRlbz8uYWx0IHx8ICcnfVxuICAgICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPXtUZXN0SWRzLmNhbnZhc31cbiAgICAgICAgLz5cbiAgICAgIDwvd2l4LW1lZGlhLWNhbnZhcz5cbiAgICApIDogKFxuICAgICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgICB7SW1hZ2VDb21wb25lbnR9XG4gICAgICAgIHtCYWNrZ3JvdW5kSW1hZ2VDb21wb25lbnR9XG4gICAgICAgIHtWaWRlb0NvbXBvbmVudH1cbiAgICAgICAge2NhbnZhc1JlZiAmJiAoXG4gICAgICAgICAgPGNhbnZhc1xuICAgICAgICAgICAgaWQ9e2Ake2NvbnRhaW5lcklkfXdlYmdsY2FudmFzYH1cbiAgICAgICAgICAgIHJlZj17Y2FudmFzUmVmfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKHN0eWxlcy5hbHBoYUNhbnZhcywgJ3dlYmdsY2FudmFzJyl9XG4gICAgICAgICAgICBhcmlhLWxhYmVsPXt2aWRlbz8uYWx0IHx8ICcnfVxuICAgICAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICAgICAgICBkYXRhLXRlc3RpZD17VGVzdElkcy5jYW52YXN9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgKTtcblxuICBjb25zdCBCZ01lZGlhID0gYmFja2dyb3VuZE1lZGlhID8gKFxuICAgIDxCYWNrZ3JvdW5kTWVkaWEgaWQ9e2BiZ01lZGlhXyR7Y29udGFpbmVySWR9YH0gey4uLmJhY2tncm91bmRNZWRpYX0+XG4gICAgICB7TWVkaWF9XG4gICAgPC9CYWNrZ3JvdW5kTWVkaWE+XG4gICkgOiAoXG4gICAgPGRpdlxuICAgICAgaWQ9e2BiZ01lZGlhXyR7Y29udGFpbmVySWR9YH1cbiAgICAgIGRhdGEtbW90aW9uLXBhcnQ9e2BCR19NRURJQSAke2NvbnRhaW5lcklkfWB9XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5iZ01lZGlhfVxuICAgID5cbiAgICAgIHtNZWRpYX1cbiAgICA8L2Rpdj5cbiAgKTtcbiAgY29uc3QgQmdPdmVybGF5ID0gYmFja2dyb3VuZE92ZXJsYXkgJiYgKFxuICAgIDxCYWNrZ3JvdW5kT3ZlcmxheSB7Li4uYmFja2dyb3VuZE92ZXJsYXl9IC8+XG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBpZD17YCR7VGVzdElkcy5iZ0xheWVyc31fJHtjb250YWluZXJJZH1gfVxuICAgICAgZGF0YS1ob29rPXtUZXN0SWRzLmJnTGF5ZXJzfVxuICAgICAgZGF0YS1tb3Rpb24tcGFydD17YEJHX0xBWUVSICR7Y29udGFpbmVySWR9YH1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhzdHlsZXMubGF5ZXJzQ29udGFpbmVyLCBleHRyYUNsYXNzLCB7XG4gICAgICAgIFtzdHlsZXMuZnVsbFNjcmVlblNjcm9sbEVmZmVjdF06IGhhc0JnRnVsbHNjcmVlblNjcm9sbEVmZmVjdCxcbiAgICAgIH0pfVxuICAgICAgb25DbGljaz17b25DbGlja31cbiAgICA+XG4gICAgICB7c2hvdWxkUmVuZGVyVW5kZXJsYXkgJiYgKFxuICAgICAgICA8ZGl2XG4gICAgICAgICAgZGF0YS10ZXN0aWQ9e1Rlc3RJZHMuY29sb3JVbmRlcmxheX1cbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoc3R5bGVzLmJnVW5kZXJsYXksIHN0eWxlcy5maWxsTGF5ZXIpfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHtzaG91bGRQYWRNZWRpYSA/IChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGRhdGEtdGVzdGlkPXtUZXN0SWRzLm1lZGlhUGFkZGluZ31cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5tZWRpYVBhZGRpbmdMYXllcn1cbiAgICAgICAgPlxuICAgICAgICAgIHtCZ01lZGlhfVxuICAgICAgICAgIHtCZ092ZXJsYXl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSA6IChcbiAgICAgICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgICAgIHtCZ01lZGlhfVxuICAgICAgICAgIHtCZ092ZXJsYXl9XG4gICAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRmlsbExheWVycztcbiIsIid1c2UtY2xpZW50JztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgQmFja2dyb3VuZFhQcm9wcyB9IGZyb20gJy4uL0JhY2tncm91bmRYLnR5cGVzJztcbmltcG9ydCBGaWxsTGF5ZXJzIGZyb20gJy4uLy4uL0ZpbGxMYXllcnMvdmlld2VyL0ZpbGxMYXllcnMnO1xuXG5jb25zdCBCYWNrZ3JvdW5kWDogUmVhY3QuRkM8QmFja2dyb3VuZFhQcm9wcz4gPSBwcm9wcyA9PiAoXG4gIDxGaWxsTGF5ZXJzIHsuLi5wcm9wc30gLz5cbik7XG5cbmV4cG9ydCBkZWZhdWx0IEJhY2tncm91bmRYO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQgZGVmYXVsdCB7XCJzaGFwZS1kaXZpZGVyXCI6XCJka3VrV0NcIixcInNoYXBlRGl2aWRlclwiOlwiZGt1a1dDXCIsXCJkaXZpZGVyLWxheWVyXCI6XCJGUkNxREZcIixcImRpdmlkZXJMYXllclwiOlwiRlJDcURGXCIsXCJ0b3Atc2hhcGUtZGl2aWRlclwiOlwieG5adlpIXCIsXCJ0b3BTaGFwZURpdmlkZXJcIjpcInhuWnZaSFwiLFwiYm90dG9tLXNoYXBlLWRpdmlkZXJcIjpcIk1CT1NDTlwiLFwiYm90dG9tU2hhcGVEaXZpZGVyXCI6XCJNQk9TQ05cIn07IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xzeCc7XG5pbXBvcnQgdHlwZSB7IERpdmlkZXJzUHJvcHMsIERpdmlkZXJMYXllclN0eWxlIH0gZnJvbSAnLi4vc2hhcGVEaXZpZGVycy50eXBlcyc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGUvc2hhcGVEaXZpZGVycy5zY3NzJztcblxuY29uc3QgZ2VuZXJhdGVMYXllcnMgPSAoaGFzRGl2aWRlcjogYm9vbGVhbiwgbGF5ZXJDb3VudD86IG51bWJlcikgPT4ge1xuICByZXR1cm4gaGFzRGl2aWRlclxuICAgID8gWy4uLkFycmF5KDEgKyAobGF5ZXJDb3VudCB8fCAwKSkua2V5cygpXVxuICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgIC5tYXAoaSA9PiAoXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAga2V5PXtgZGl2aWRlci1sYXllci0ke2l9YH1cbiAgICAgICAgICAgIHN0eWxlPXt7ICctLWRpdmlkZXItbGF5ZXItaSc6IGkgfSBhcyBEaXZpZGVyTGF5ZXJTdHlsZX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRpdmlkZXJMYXllcn1cbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgZGl2aWRlci1sYXllci0ke2l9YH1cbiAgICAgICAgICAgIGRhdGEtZGl2aWRlci1sYXllcj17aX1cbiAgICAgICAgICAvPlxuICAgICAgICApKVxuICAgIDogbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZURpdmlkZXIgPSAoXG4gIHNpZGU6ICd0b3AnIHwgJ2JvdHRvbScsXG4gIGhhc0RpdmlkZXI/OiBib29sZWFuLFxuICBzaXplPzogbnVtYmVyLFxuKSA9PiB7XG4gIGNvbnN0IGRpdmlkZXJMYXllcnMgPSBnZW5lcmF0ZUxheWVycyghIWhhc0RpdmlkZXIsIHNpemUpO1xuXG4gIHJldHVybiBoYXNEaXZpZGVyID8gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhzdHlsZXMuc2hhcGVEaXZpZGVyLCB7XG4gICAgICAgIFtzdHlsZXMudG9wU2hhcGVEaXZpZGVyXTogc2lkZSA9PT0gJ3RvcCcsXG4gICAgICAgIFtzdHlsZXMuYm90dG9tU2hhcGVEaXZpZGVyXTogc2lkZSA9PT0gJ2JvdHRvbScsXG4gICAgICB9KX1cbiAgICAgIGRhdGEtdGVzdGlkPXtgJHtzaWRlfS1kaXZpZGVyYH1cbiAgICA+XG4gICAgICB7ZGl2aWRlckxheWVyc31cbiAgICA8L2Rpdj5cbiAgKSA6IG51bGw7XG59O1xuXG5jb25zdCBTaGFwZURpdmlkZXJzOiBSZWFjdC5GQzxEaXZpZGVyc1Byb3BzPiA9IGRpdmlkZXJzID0+IHtcbiAgY29uc3QgdG9wRGl2aWRlciA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBnZW5lcmF0ZURpdmlkZXIoXG4gICAgICAndG9wJyxcbiAgICAgIGRpdmlkZXJzPy5oYXNUb3BEaXZpZGVyLFxuICAgICAgZGl2aWRlcnM/LnRvcExheWVycz8uc2l6ZSxcbiAgICApO1xuICB9LCBbZGl2aWRlcnM/Lmhhc1RvcERpdmlkZXIsIGRpdmlkZXJzPy50b3BMYXllcnM/LnNpemVdKTtcblxuICBjb25zdCBib3R0b21EaXZpZGVyID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIGdlbmVyYXRlRGl2aWRlcihcbiAgICAgICdib3R0b20nLFxuICAgICAgZGl2aWRlcnM/Lmhhc0JvdHRvbURpdmlkZXIsXG4gICAgICBkaXZpZGVycz8uYm90dG9tTGF5ZXJzPy5zaXplLFxuICAgICk7XG4gIH0sIFtkaXZpZGVycz8uaGFzQm90dG9tRGl2aWRlciwgZGl2aWRlcnM/LmJvdHRvbUxheWVycz8uc2l6ZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHt0b3BEaXZpZGVyfVxuICAgICAge2JvdHRvbURpdmlkZXJ9XG4gICAgPC8+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTaGFwZURpdmlkZXJzO1xuIiwiY29uc3Qgc2VtYW50aWNDbGFzc05hbWVzID0ge1xuICByb290OiAnc2VjdGlvbicsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgZGVmYXVsdCBzZW1hbnRpY0NsYXNzTmFtZXM7XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmNvbnN0IFBhdXNlU21hbGwgPSAoeyBzaXplLCAuLi5wcm9wcyB9KSA9PiAvKiBAX19QVVJFX18gKi8gUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCB7IHZpZXdCb3g6IFwiMCAwIDE4IDE4XCIsIGZpbGw6IFwiY3VycmVudENvbG9yXCIsIHdpZHRoOiBzaXplIHx8IFwiMThcIiwgaGVpZ2h0OiBzaXplIHx8IFwiMThcIiwgLi4ucHJvcHMgfSwgLyogQF9fUFVSRV9fICovIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNNy41LDUgQzguMzI4NDI3MTIsNSA5LDUuNjcxNTcyODggOSw2LjUgTDksMTEuNSBDOSwxMi4zMjg0MjcxIDguMzI4NDI3MTIsMTMgNy41LDEzIEM2LjY3MTU3Mjg4LDEzIDYsMTIuMzI4NDI3MSA2LDExLjUgTDYsNi41IEM2LDUuNjcxNTcyODggNi42NzE1NzI4OCw1IDcuNSw1IFogTTExLjUsNSBDMTIuMzI4NDI3MSw1IDEzLDUuNjcxNTcyODggMTMsNi41IEwxMywxMS41IEMxMywxMi4zMjg0MjcxIDEyLjMyODQyNzEsMTMgMTEuNSwxMyBDMTAuNjcxNTcyOSwxMyAxMCwxMi4zMjg0MjcxIDEwLDExLjUgTDEwLDYuNSBDMTAsNS42NzE1NzI4OCAxMC42NzE1NzI5LDUgMTEuNSw1IFogTTcuNSw2IEM3LjIyMzg1NzYzLDYgNyw2LjIyMzg1NzYzIDcsNi41IEw3LDExLjUgQzcsMTEuNzc2MTQyNCA3LjIyMzg1NzYzLDEyIDcuNSwxMiBDNy43NzYxNDIzNywxMiA4LDExLjc3NjE0MjQgOCwxMS41IEw4LDYuNSBDOCw2LjIyMzg1NzYzIDcuNzc2MTQyMzcsNiA3LjUsNiBaIE0xMS41LDYgQzExLjIyMzg1NzYsNiAxMSw2LjIyMzg1NzYzIDExLDYuNSBMMTEsMTEuNSBDMTEsMTEuNzc2MTQyNCAxMS4yMjM4NTc2LDEyIDExLjUsMTIgQzExLjc3NjE0MjQsMTIgMTIsMTEuNzc2MTQyNCAxMiwxMS41IEwxMiw2LjUgQzEyLDYuMjIzODU3NjMgMTEuNzc2MTQyNCw2IDExLjUsNiBaXCIgfSkpO1xuUGF1c2VTbWFsbC5kaXNwbGF5TmFtZSA9IFwiUGF1c2VTbWFsbFwiO1xudmFyIFBhdXNlU21hbGxfZGVmYXVsdCA9IFBhdXNlU21hbGw7XG5leHBvcnQge1xuICBQYXVzZVNtYWxsX2RlZmF1bHQgYXMgZGVmYXVsdFxufTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuY29uc3QgUGxheVNtYWxsID0gKHsgc2l6ZSwgLi4ucHJvcHMgfSkgPT4gLyogQF9fUFVSRV9fICovIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgeyB2aWV3Qm94OiBcIjAgMCAxOCAxOFwiLCBmaWxsOiBcImN1cnJlbnRDb2xvclwiLCB3aWR0aDogc2l6ZSB8fCBcIjE4XCIsIGhlaWdodDogc2l6ZSB8fCBcIjE4XCIsIC4uLnByb3BzIH0sIC8qIEBfX1BVUkVfXyAqLyBSZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTYuODc0Njg4MzcsNS40NTA0MTk0NyBMMTIuNzMxODc5Myw4LjQ2NjU3MTE5IEMxMy4yMDE2Myw4LjY4NzMxMjQxIDEzLjIwMTYzLDkuMjY5NDA5MTggMTIuNzMxODc5Myw5LjUzMzQyODgxIEw2Ljg3NDY4ODM3LDEyLjU0OTU4MDUgQzYuNTgwMDgzNzcsMTIuNzAxMjg2NyA2LjAwMDcwMDcxLDEyLjU4MDEyMjYgNiwxMi4wMTYxNTE3IEw2LDUuOTgzODQ4MjggQzYsNS42NTI0Nzc0MyA2LjM1MjY2ODc2LDUuMjA2ODIxNjggNi44NzQ2ODgzNyw1LjQ1MDQxOTQ3IFogTTcsMTEuMzYwMjUyOSBMMTEuNTgzNDczNSw5IEw3LDYuNjM5NzQ3MTQgTDcsMTEuMzYwMjUyOSBaXCIgfSkpO1xuUGxheVNtYWxsLmRpc3BsYXlOYW1lID0gXCJQbGF5U21hbGxcIjtcbnZhciBQbGF5U21hbGxfZGVmYXVsdCA9IFBsYXlTbWFsbDtcbmV4cG9ydCB7XG4gIFBsYXlTbWFsbF9kZWZhdWx0IGFzIGRlZmF1bHRcbn07XG4iLCIndXNlLWNsaWVudCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbHN4JztcbmltcG9ydCB7XG4gIGZvcm1hdENsYXNzTmFtZXMsXG4gIGdldERhdGFBdHRyaWJ1dGVzLFxuICBnZXRUYWJJbmRleEF0dHJpYnV0ZSxcbiAgZ2V0QXJpYUxhYmVsQXR0cmlidXRlLFxufSBmcm9tICdAd2l4L2VkaXRvci1lbGVtZW50cy1jb21tb24tdXRpbHMnO1xuaW1wb3J0IHsgdXNlVmlkZW9BUEkgfSBmcm9tICdAd2l4L2VkaXRvci1lbGVtZW50cy1jb21tb24tdXRpbHMvaG9va3MnO1xuaW1wb3J0IHR5cGUgeyBNZWRpYUNvbnRhaW5lclZpZGVvQVBJIH0gZnJvbSAnQHdpeC9lZGl0b3ItZWxlbWVudHMtdHlwZXMvY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IElTZWN0aW9uUHJvcHMgfSBmcm9tICcuLi9TZWN0aW9uLnR5cGVzJztcbmltcG9ydCB7IFRlc3RJZHMgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IEJhY2tncm91bmRYIGZyb20gJy4uLy4uLy4uL0JhY2tncm91bmRYL3ZpZXdlci9CYWNrZ3JvdW5kWCc7XG5pbXBvcnQgU2hhcGVEaXZpZGVycyBmcm9tICcuLi8uLi8uLi9NZWRpYUNvbnRhaW5lcnMvU2hhcGVEaXZpZGVycy92aWV3ZXIvc2hhcGVEaXZpZGVycyc7XG5pbXBvcnQgc2VjdGlvblNlbWFudGljQ2xhc3NOYW1lcyBmcm9tICcuLi9TZWN0aW9uLnNlbWFudGljQ2xhc3NOYW1lcyc7XG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9zdHlsZXMvU2VjdGlvbi5zY3NzJztcbmltcG9ydCB7IFBhdXNlU21hbGwsIFBsYXlTbWFsbCB9IGZyb20gJ0B3aXgvd2l4LXVpLWljb25zLWNvbW1vbic7XG5cbmNvbnN0IFNlY3Rpb246IFJlYWN0LkZvcndhcmRSZWZSZW5kZXJGdW5jdGlvbjxcbiAgTWVkaWFDb250YWluZXJWaWRlb0FQSSxcbiAgSVNlY3Rpb25Qcm9wc1xuPiA9IChwcm9wcywgY29tcFJlZikgPT4ge1xuICBjb25zdCB7XG4gICAgaWQsXG4gICAgc2tpbiA9ICdSZWN0YW5nbGVBcmVhJyxcbiAgICBjbGFzc05hbWUsXG4gICAgY29udGFpbmVyUm9vdENsYXNzTmFtZSA9ICcnLFxuICAgIGN1c3RvbUNsYXNzTmFtZXMgPSBbXSxcbiAgICBjb250YWluZXJQcm9wcyxcbiAgICBjaGlsZHJlbixcbiAgICBmaWxsTGF5ZXJzID0gcHJvcHMuZmlsbExheWVycyB8fCBwcm9wcy5iYWNrZ3JvdW5kLFxuICAgIHRhZ05hbWUsXG4gICAgZ2V0UGxhY2Vob2xkZXIsXG4gICAgZGl2aWRlcnMsXG4gICAgc2VtYW50aWNDbGFzc05hbWVzLFxuICAgIG9uU3RvcCxcbiAgICBvbkNsaWNrLFxuICAgIG9uRGJsQ2xpY2ssXG4gICAgb25Nb3VzZUVudGVyLFxuICAgIG9uTW91c2VMZWF2ZSxcbiAgICBsYW5nLFxuICAgIHRyYW5zbGF0aW9ucyxcbiAgICBpc1BsYXlQYXVzZVNlY3Rpb25FeHBlcmltZW50T24sXG4gICAgaXNCdWlsZGVyLFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IFRhZ05hbWUgPSB0YWdOYW1lIHx8ICgnc2VjdGlvbicgYXMga2V5b2YgSlNYLkludHJpbnNpY0VsZW1lbnRzKTtcbiAgY29uc3QgeyBzaG91bGRPbWl0V3JhcHBlckxheWVycyB9ID0gY29udGFpbmVyUHJvcHM7XG4gIGNvbnN0IGNsYXNzTmFtZXMgPSBjbGFzc25hbWVzKFxuICAgIHN0eWxlW3NraW5dLFxuICAgIGNvbnRhaW5lclJvb3RDbGFzc05hbWUsXG4gICAgY2xhc3NOYW1lLFxuICAgIHNlbWFudGljQ2xhc3NOYW1lc1xuICAgICAgPyBmb3JtYXRDbGFzc05hbWVzKHNlbWFudGljQ2xhc3NOYW1lcy5yb290LCAuLi5jdXN0b21DbGFzc05hbWVzKVxuICAgICAgOiBmb3JtYXRDbGFzc05hbWVzKHNlY3Rpb25TZW1hbnRpY0NsYXNzTmFtZXMucm9vdCwgLi4uY3VzdG9tQ2xhc3NOYW1lcyksXG4gICAge1xuICAgICAgW3N0eWxlLnNob3VsZE9taXRXcmFwcGVyTGF5ZXJzXTogc2hvdWxkT21pdFdyYXBwZXJMYXllcnMsXG4gICAgfSxcbiAgKTtcbiAgY29uc3QgaGFzVmlkZW8gPSAhIWZpbGxMYXllcnM/LnZpZGVvO1xuICBjb25zdCB2aWRlb1JlZiA9IHVzZVZpZGVvQVBJKGNvbXBSZWYsIGhhc1ZpZGVvLCBvblN0b3ApO1xuICBjb25zdCBbaXNWaWRlb1BsYXlpbmcsIHNldElzVmlkZW9QbGF5aW5nXSA9IFJlYWN0LnVzZVN0YXRlKFxuICAgICF2aWRlb1JlZj8uY3VycmVudD8ucGF1c2VkIHx8IGZhbHNlLFxuICApO1xuICBjb25zdCBoYW5kbGVQbGF5UGF1c2UgPSAoKSA9PiB7XG4gICAgY29uc3QgdmlkZW8gPSB2aWRlb1JlZj8uY3VycmVudDtcbiAgICBpZiAodmlkZW8pIHtcbiAgICAgIHZpZGVvLnBhdXNlZCA/IHZpZGVvLnBsYXkoKSA6IHZpZGVvLnBhdXNlKCk7XG4gICAgICBzZXRJc1ZpZGVvUGxheWluZyhwcmV2ID0+IHtcbiAgICAgICAgY29uc3QgbmV3UGxheWluZ1N0YXRlID0gIXByZXY7XG4gICAgICAgIC8vIEZpbmQgYW5kIGNvbnRyb2wgYWxsIGNoaWxkIHZpZGVvIGVsZW1lbnRzXG4gICAgICAgIGNvbnN0IHNlY3Rpb25FbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuICAgICAgICBpZiAoc2VjdGlvbkVsZW1lbnQpIHtcbiAgICAgICAgICBjb25zdCBjaGlsZFZpZGVvcyA9IHNlY3Rpb25FbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3ZpZGVvJyk7XG4gICAgICAgICAgY2hpbGRWaWRlb3MuZm9yRWFjaChjaGlsZFZpZGVvID0+IHtcbiAgICAgICAgICAgIGlmIChjaGlsZFZpZGVvICE9PSB2aWRlbykge1xuICAgICAgICAgICAgICAvLyBVc2UgdGhlIG5ldyBwbGF5aW5nIHN0YXRlIHRvIHN5bmMgYWxsIHZpZGVvc1xuICAgICAgICAgICAgICBuZXdQbGF5aW5nU3RhdGUgPyBjaGlsZFZpZGVvLnBsYXkoKSA6IGNoaWxkVmlkZW8ucGF1c2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3UGxheWluZ1N0YXRlO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPFRhZ05hbWVcbiAgICAgIGlkPXtpZH1cbiAgICAgIHsuLi5nZXREYXRhQXR0cmlidXRlcyhwcm9wcyl9XG4gICAgICB7Li4uZ2V0VGFiSW5kZXhBdHRyaWJ1dGUocHJvcHMuYTExeSB8fCB7IHRhYkluZGV4OiAtMSB9KX1cbiAgICAgIHsuLi5nZXRBcmlhTGFiZWxBdHRyaWJ1dGUocHJvcHMuYTExeSl9XG4gICAgICBkYXRhLWJsb2NrLWxldmVsLWNvbnRhaW5lcj1cIlNlY3Rpb25cIlxuICAgICAgY2xhc3NOYW1lPXtgJHtjbGFzc05hbWVzfSAke3N0eWxlLnNlY3Rpb259YH1cbiAgICAgIGRhdGEtdGVzdGlkPXtUZXN0SWRzLnNlY3Rpb259XG4gICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgb25Eb3VibGVDbGljaz17b25EYmxDbGlja31cbiAgICAgIG9uTW91c2VFbnRlcj17b25Nb3VzZUVudGVyfVxuICAgICAgb25Nb3VzZUxlYXZlPXtvbk1vdXNlTGVhdmV9XG4gICAgICBsYW5nPXtsYW5nfVxuICAgID5cbiAgICAgIHtmaWxsTGF5ZXJzICYmICFpc0J1aWxkZXIgJiYgKFxuICAgICAgICA8QmFja2dyb3VuZFhcbiAgICAgICAgICB7Li4uZmlsbExheWVyc31cbiAgICAgICAgICB2aWRlb1JlZj17dmlkZW9SZWZ9XG4gICAgICAgICAgZ2V0UGxhY2Vob2xkZXI9e2dldFBsYWNlaG9sZGVyfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHtoYXNWaWRlbyAmJiBpc1BsYXlQYXVzZVNlY3Rpb25FeHBlcmltZW50T24gJiYgIWlzQnVpbGRlciAmJiAoXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlLnZpZGVvUGxheVBhdXNlQnV0dG9ufWB9XG4gICAgICAgICAgb25DbGljaz17aGFuZGxlUGxheVBhdXNlfVxuICAgICAgICAgIGFyaWEtcHJlc3NlZD17aXNWaWRlb1BsYXlpbmd9XG4gICAgICAgICAgYXJpYS1sYWJlbD17dHJhbnNsYXRpb25zPy5hcmlhTGFiZWx9XG4gICAgICAgID5cbiAgICAgICAgICB7aXNWaWRlb1BsYXlpbmcgPyA8UGF1c2VTbWFsbCAvPiA6IDxQbGF5U21hbGwgLz59XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgKX1cbiAgICAgIHtkaXZpZGVycyAmJiAhaXNCdWlsZGVyICYmIDxTaGFwZURpdmlkZXJzIHsuLi5kaXZpZGVyc30gLz59XG4gICAgICB7Y2hpbGRyZW4oKX1cbiAgICA8L1RhZ05hbWU+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWFjdC5mb3J3YXJkUmVmKFNlY3Rpb24pO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmV4cG9ydCBmdW5jdGlvbiB1c2VWaWRlb0FQSShjb21wUmVmLCBoYXNWaWRlbywgb25TdG9wKSB7XG4gICAgY29uc3QgdmlkZW9SZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgY29uc3QgdmlkZW9BUEkgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgaWYgKGhhc1ZpZGVvKSB7XG4gICAgICAgIGlmICghdmlkZW9BUEkuY3VycmVudCkge1xuICAgICAgICAgICAgdmlkZW9BUEkuY3VycmVudCA9IHtcbiAgICAgICAgICAgICAgICBwbGF5OiAoKSA9PiB2aWRlb1JlZi5jdXJyZW50Py5wbGF5KCksXG4gICAgICAgICAgICAgICAgbG9hZDogKCkgPT4gdmlkZW9SZWYuY3VycmVudD8ubG9hZCgpLFxuICAgICAgICAgICAgICAgIHBhdXNlOiAoKSA9PiB2aWRlb1JlZi5jdXJyZW50Py5wYXVzZSgpLFxuICAgICAgICAgICAgICAgIHN0b3A6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZpZGVvUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvUmVmLmN1cnJlbnQucGF1c2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvUmVmLmN1cnJlbnQuY3VycmVudFRpbWUgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9uU3RvcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU3RvcCh2aWRlb1JlZi5jdXJyZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICAvLyBubyB2aWRlbyByZW1vdmUgdmlkZW8gQVBJXG4gICAgICAgIHZpZGVvQVBJLmN1cnJlbnQgPSBudWxsO1xuICAgIH1cbiAgICBSZWFjdC51c2VJbXBlcmF0aXZlSGFuZGxlKGNvbXBSZWYsICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHZpZGVvQVBJLmN1cnJlbnQgfHwgeyBsb2FkKCkgeyB9LCBzdG9wKCkgeyB9IH07XG4gICAgfSk7XG4gICAgcmV0dXJuIHZpZGVvUmVmO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXNlVmlkZW9BUEkuanMubWFwIl0sIm5hbWVzIjpbInJvb3QiLCJmYWN0b3J5IiwiZXhwb3J0cyIsIm1vZHVsZSIsInJlcXVpcmUiLCJkZWZpbmUiLCJhbWQiLCJzZWxmIiwidGhpcyIsIl9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfWGRmX19fIiwiZ2V0RGF0YUF0dHJpYnV0ZXMiLCJwcm9wcyIsIk9iamVjdCIsImVudHJpZXMiLCJyZWR1Y2UiLCJhY2MiLCJrZXkiLCJ2YWwiLCJpbmNsdWRlcyIsIl9leHRlbmRzIiwiYXNzaWduIiwiYmluZCIsIm4iLCJlIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidCIsInIiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJfX2VzTW9kdWxlIiwiYXBwbHkiLCJmIiwiQXJyYXkiLCJpc0FycmF5IiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwidW5kZWZpbmVkIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsImdldHRlciIsImQiLCJhIiwiZGVmaW5pdGlvbiIsIm8iLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJvYmoiLCJwcm9wIiwicHJvdG90eXBlIiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJ2YWx1ZSIsIkNTU19QUkVGSVgiLCJmb3JtYXRDbGFzc05hbWVzIiwic2VtYW50aWNDbGFzc05hbWUiLCJjdXN0b21DbGFzc05hbWVzIiwicmVzdWx0IiwicHVzaCIsImZvckVhY2giLCJjbGFzc05hbWUiLCJqb2luIiwia2V5Q29kZXMiLCJhY3RpdmF0ZUJ5S2V5IiwiZXZlbnQiLCJrZXlDb2RlIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJjdXJyZW50VGFyZ2V0IiwiY2xpY2siLCJUZXN0SWRzIiwiQVBJX1ZFUlNJT04iLCJNQVhfREVWSUNFX1BJWEVMX1JBVElPIiwiRFNLVFBfTUFYX0JHX1NJVEVfTEVHQUNZX1dJRFRIIiwiRFNLVFBfTUFYX0JHX1NJVEVfTEVHQUNZX0hFSUdIVCIsIk1PQklMRV9NQVhfQkdfU0lURV9MRUdBQ1lfV0lEVEgiLCJNT0JJTEVfTUFYX0JHX1NJVEVfTEVHQUNZX0hFSUdIVCIsImZpdHRpbmdUeXBlcyIsIlNDQUxFX1RPX0ZJTEwiLCJTQ0FMRV9UT19GSVQiLCJTVFJFVENIIiwiT1JJR0lOQUxfU0laRSIsIlRJTEUiLCJUSUxFX0hPUklaT05UQUwiLCJUSUxFX1ZFUlRJQ0FMIiwiRklUX0FORF9USUxFIiwiTEVHQUNZX1NUUklQX1RJTEUiLCJMRUdBQ1lfU1RSSVBfVElMRV9IT1JJWk9OVEFMIiwiTEVHQUNZX1NUUklQX1RJTEVfVkVSVElDQUwiLCJMRUdBQ1lfU1RSSVBfU0NBTEVfVE9fRklMTCIsIkxFR0FDWV9TVFJJUF9TQ0FMRV9UT19GSVQiLCJMRUdBQ1lfU1RSSVBfRklUX0FORF9USUxFIiwiTEVHQUNZX1NUUklQX09SSUdJTkFMX1NJWkUiLCJMRUdBQ1lfT1JJR0lOQUxfU0laRSIsIkxFR0FDWV9GSVRfV0lEVEgiLCJMRUdBQ1lfRklUX0hFSUdIVCIsIkxFR0FDWV9GVUxMIiwiTEVHQUNZX0JHX0ZJVF9BTkRfVElMRSIsIkxFR0FDWV9CR19GSVRfQU5EX1RJTEVfSE9SSVpPTlRBTCIsIkxFR0FDWV9CR19GSVRfQU5EX1RJTEVfVkVSVElDQUwiLCJMRUdBQ1lfQkdfTk9STUFMIiwidHJhbnNmb3JtVHlwZXMiLCJGSVQiLCJGSUxMIiwiRklMTF9GT0NBTCIsIkNST1AiLCJMRUdBQ1lfQ1JPUCIsIkxFR0FDWV9GSUxMIiwiYWxpZ25UeXBlcyIsIkNFTlRFUiIsIlRPUCIsIlRPUF9MRUZUIiwiVE9QX1JJR0hUIiwiQk9UVE9NIiwiQk9UVE9NX0xFRlQiLCJCT1RUT01fUklHSFQiLCJMRUZUIiwiUklHSFQiLCJBTElHTl9UWVBFX1RPX0ZPQ0FMX1BPSU5UIiwieCIsInkiLCJhbGlnblR5cGVzTWFwIiwiY2VudGVyIiwidG9wIiwidG9wX2xlZnQiLCJ0b3BfcmlnaHQiLCJib3R0b20iLCJib3R0b21fbGVmdCIsImJvdHRvbV9yaWdodCIsImxlZnQiLCJyaWdodCIsImh0bWxUYWciLCJCRyIsIklNRyIsIlNWRyIsInVwc2NhbGVNZXRob2RzIiwiQVVUTyIsIkNMQVNTSUMiLCJTVVBFUiIsInVwc2NhbGVNZXRob2RzVmFsdWVzIiwiY2xhc3NpYyIsInN1cGVyIiwiZGVmYXVsdFVTTSIsInJhZGl1cyIsImFtb3VudCIsInRocmVzaG9sZCIsImVtcHR5RGF0YSIsInVyaSIsImNzcyIsImltZyIsImNvbnRhaW5lciIsImF0dHIiLCJ0cmFuc2Zvcm1lZCIsIlNBRkVfVFJBTlNGT1JNRURfQVJFQSIsIk1BWF9UUkFOU0ZPUk1FRF9JTUFHRV9XSURUSCIsIlNVUEVSX1VQU0NBTEVfTU9ERUxTIiwiaW1hZ2VTY2FsZURlZmF1bHRzIiwiSElHSCIsInNpemUiLCJxdWFsaXR5IiwibWF4VXBzY2FsZSIsIk1FRElVTSIsIkxPVyIsIlRJTlkiLCJpbWFnZVF1YWxpdHkiLCJpbWFnZUZpbHRlcnMiLCJDT05UUkFTVCIsIkJSSUdIVE5FU1MiLCJTQVRVUkFUSU9OIiwiSFVFIiwiQkxVUiIsImZpbGVUeXBlIiwiSlBHIiwiSlBFRyIsIkpQRSIsIlBORyIsIldFQlAiLCJXSVhfSUNPX01QIiwiV0lYX01QIiwiR0lGIiwiQVZJRiIsIlVOUkVDT0dOSVpFRCIsImVuY29kaW5nVHlwZXMiLCJQQVZJRiIsInRlbXBsYXRlIiwic3RyaW5ncyIsImtleXMiLCJ2YWx1ZXMiLCJkaWN0IiwiaSIsIk51bWJlciIsImlzSW50ZWdlciIsImxhc3QiLCJhcnJheSIsIlNVUFBPUlRFRF9JTUFHRV9FWFRFTlNJT05TIiwiSlBHX0VYVEVOU0lPTlMiLCJpc1ZhbGlkUmVxdWVzdCIsImZpdHRpbmdUeXBlIiwic3JjIiwidGFyZ2V0IiwidXJsIiwiaWQiLCJ0cmltIiwidG9Mb3dlckNhc2UiLCJpc0ltYWdlVHJhbnNmb3JtQXBwbGljYWJsZSIsImhhc0FuaW1hdGlvbiIsImFsbG93QW5pbWF0ZWRUcmFuc2Zvcm0iLCJhbGxvd0Z1bGxHSUZUcmFuc2Zvcm1hdGlvbiIsInRlc3QiLCJpc1dFQlAiLCJpc0FWSUYiLCJjYW5UcmFuc2Zvcm1BbmltYXRlZFdlYnBPckF2aWYiLCJpc1N1cHBvcnRlZEltYWdlVHlwZSIsImdldEZpbGVFeHRlbnNpb24iLCJpc0ltYWdlVHlwZVN1cHBvcnRlZCIsImlzVHJhbnNmb3JtYWJsZUdpZiIsImlzR0lGIiwiY2FuVHJhbnNmb3JtR0lGIiwiaXNQTkciLCJJTExFR0FMX0NIQVJTIiwibWFwIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiVVJMX1NBRkVfSUxMRUdBTF9DSEFSUyIsIklMTEVHQUxfQ0hBUlNfUkVQTEFDRU1FTlQiLCJnZXRGaWxlVHlwZSIsImlzSlBHIiwiZXhlYyIsImdldFNjYWxlRmFjdG9yIiwic1dpZHRoIiwic0hlaWdodCIsImRXaWR0aCIsImRIZWlnaHQiLCJ0cmFuc2Zvcm1UeXBlIiwic2NhbGVGYWN0b3IiLCJNYXRoIiwibWF4IiwiZ2V0RmlsbFNjYWxlRmFjdG9yIiwibWluIiwiZ2V0Rml0U2NhbGVGYWN0b3IiLCJnZXRUcmFuc2Zvcm1EYXRhIiwiZHByIiwidXBzY2FsZU1ldGhvZCIsIndpZHRoIiwiaGVpZ2h0IiwiZGltZW5zaW9uU2NhbGVGYWN0b3IiLCJzcXJ0IiwiZ2V0U2FmZVRyYW5zZm9ybURhdGEiLCJ0V2lkdGgiLCJ0SGVpZ2h0Iiwib3B0aW1pemVkU2NhbGVGYWN0b3IiLCJ1cHNjYWxlTWV0aG9kVmFsdWUiLCJmb3JjZVVTTSIsImltYWdlS2V5IiwiZ2V0SW1hZ2VRdWFsaXR5S2V5IiwiZ2V0QXV0b1NjYWxlRGF0YSIsImdldFN1cGVyU2NhbGVEYXRhIiwiZ2V0Q2xhc3NpY1NjYWxlRGF0YSIsImdldE9wdGltaXplZFNjYWxlRGF0YSIsImNzc1Vwc2NhbGVOZWVkZWQiLCJnZXRPcHRpbWl6ZWRUcmFuc2Zvcm1EYXRhIiwiZ2V0QWxpZ25lZFJlY3QiLCJzUmVjdCIsImRSZWN0Iiwic0ZQIiwiYWxpZ25tZW50IiwiZnAiLCJnZXRGb2NhbFBvaW50IiwiZ2V0Rm9jYWxQb2ludEZyb205R3JpZEFsaWdubWVudCIsImdldEFsaWdubWVudCIsImZvY2FsUG9pbnQiLCJpc05hTiIsInJvdW5kVG9GaXhlZCIsImltYWdlV2lkdGgiLCJpbWFnZUhlaWdodCIsInByZWNpc2lvbiIsInRydW5jYXRlUHJlY2lzaW9uIiwicG93IiwidG9GaXhlZCIsImdldFVwc2NhbGVTdHJpbmciLCJvcHRpb25zIiwidG9VcHBlckNhc2UiLCJpbWFnZUlzQW5pbWF0ZWQiLCJpc0F2aWZXZWJwRm9ybWF0IiwiZ2xvYmFsRmVhdHVyZXNTdXBwb3J0T2JqIiwiaXNNb2JpbGUiLCJnZXRGZWF0dXJlIiwiZmVhdHVyZSIsInBvcHVsYXRlR2xvYmFsRmVhdHVyZVN1cHBvcnQiLCJ3aW5kb3ciLCJuYXZpZ2F0b3IiLCJpc1NtYWxsU2NyZWVuIiwibWF0Y2hNZWRpYSIsIm1hdGNoZXMiLCJpc01vYmlsZUFnZW50IiwidXNlckFnZW50IiwiZ2V0Q1NTIiwidHJhbnNmb3Jtc09iaiIsImF0dHJpYnV0ZXMiLCJiYWNrZ3JvdW5kU2l6ZSIsImJhY2tncm91bmRSZXBlYXQiLCJiYWNrZ3JvdW5kUG9zaXRpb24iLCJhbGlnblR5cGVUb1Bvc2l0aW9uU3RyIiwiYWxpZ21lbnREZWZhdWx0cyIsInBvc2l0aW9uIiwiYWxpZ25UeXBlIiwicGFydHMiLCJvYmplY3RGaXQiLCJvYmplY3RQb3NpdGlvbiIsInZlcnRpY2FsTWlkZGxlIiwicm91bmQiLCJob3Jpem9udGFsTWlkZGxlIiwiYWxpZ25UeXBlVG9Qb3NpdGlvbiIsImdldFN2Z0F0dHIiLCJzb3VyY2VXaWR0aCIsInNvdXJjZUhlaWdodCIsImltYWdlU2NhbGUiLCJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwidHJhbnNmb3JtIiwiZ2V0RGltZW5zaW9uIiwibWlkZGxlIiwidmlld0JveCIsInNldFRyYW5zZm9ybVBhcnRzIiwicmVjdCIsImNyb3AiLCJnZXRPdmVybGFwcGluZ1JlY3QiLCJpc0Nyb3BwZWQiLCJnZXRDcm9wUGFydCIsImdldEZpdFBhcnQiLCJ0cmFuc2Zvcm1lZERhdGEiLCJkZXZpY2VQaXhlbFJhdGlvIiwiZm9jYWxQb2ludFgiLCJmb2NhbFBvaW50WSIsInVwc2NhbGUiLCJnZXRGaWxsUGFydCIsImNsb25lZFRhcmdldCIsImdldFN0cmV0Y2hQYXJ0IiwiZ2V0TGVnYWN5Q3JvcFBhcnQiLCJnZXRMZWdhY3lGaXRQYXJ0IiwiZ2V0TGVnYWN5RmlsbFBhcnQiLCJzZXRUcmFuc2Zvcm1PcHRpb25zIiwiaXNRdWFsaXR5U3VwcG9ydGVkIiwidHJhbnNmb3JtRGF0YSIsImRlZmF1bHRRdWFsaXR5IiwiZ2V0UXVhbGl0eSIsInByb2dyZXNzaXZlIiwiZ2V0UHJvZ3Jlc3NpdmUiLCJ3YXRlcm1hcmsiLCJnZXRXYXRlcm1hcmsiLCJhdXRvRW5jb2RlIiwiZW5jb2RpbmciLCJ1bnNoYXJwTWFzayIsInVzbSIsImlzVVNNVmFsaWQiLCJ0cmFuc2Zvcm1QYXJ0IiwiaXNVU01OZWVkZWQiLCJnZXRVbnNoYXJwTWFzayIsImZpbHRlcnMiLCJmaWx0ZXJPcHRpb25zIiwiaXNWYWxpZEltYWdlRmlsdGVyIiwiZ2V0RmlsdGVycyIsImZpbHRlclZhbHVlIiwibWluVmFsdWUiLCJtYXhWYWx1ZSIsImdldFRyYW5zZm9ybSIsIl9pc1NFT0JvdCIsImlzU0VPQm90IiwiZmlsZU5hbWUiLCJuYW1lIiwiZmlsZUV4dGVuc2lvblJlZ2V4cCIsImlsbGVnYWxDaGFyc1JlZ2V4IiwiUmVnRXhwIiwiY29uY2F0IiwiZXh0ZW5zaW9uIiwibWF0Y2giLCJyZXBsYWNlIiwidHJpbW1lZCIsImdldEZpbGVOYW1lIiwicGl4ZWxBc3BlY3RSYXRpbyIsImdldERldmljZVBpeGVsUmF0aW8iLCJmaWxlRXh0ZW5zaW9uIiwicHJlZmVycmVkRXh0ZW5zaW9uIiwiY2FuVHJhbnNmb3JtSW1hZ2UiLCJpc0FuaW1hdGVkIiwiaXNQbGFjZWhvbGRlckZsb3ciLCJnZXRUYXJnZXQiLCJ0YXJnZXRPYmoiLCJfaXNNb2JpbGUiLCJtYXhCR1NpdGVMZWdhY3lXaWR0aCIsIm1heEJHU2l0ZUxlZ2FjeUhlaWdodCIsImZpdFRlbXBsYXRlIiwiZmlsbFRlbXBsYXRlIiwiZmlsbEZvY2FsVGVtcGxhdGUiLCJjcm9wVGVtcGxhdGUiLCJsZWdhY3lDcm9wVGVtcGxhdGUiLCJsZWdhY3lGaWxsVGVtcGxhdGUiLCJ1cHNjYWxlVGVtcGxhdGUiLCJxdWFsaXR5VGVtcGxhdGUiLCJxdWFsaXR5QXV0b1RlbXBsYXRlIiwidW5TaGFycE1hc2tUZW1wbGF0ZSIsIm5vblByb2dyZXNzaXZlVGVtcGxhdGUiLCJ3YXRlcm1hcmtUZW1wbGF0ZSIsImZpbHRlclRlbXBsYXRlc01hcCIsImF1dG9FbmNvZGVUZW1wbGF0ZSIsIkFWSUZFbmNvZGVUZW1wbGF0ZSIsInBBVklGRW5jb2RlVGVtcGxhdGUiLCJhbmltYXRlZFRyYW5zZm9ybVRlbXBsYXRlIiwiYW5pbWF0ZWRHSUZUcmFuc2Zvcm1UZW1wbGF0ZSIsImdldFVSSSIsInRyYW5zZm9ybU9iaiIsInRyYW5zZm9ybVRhcmdldCIsInRyYW5zZm9ybXNPYmpTdHJBcnIiLCJsZWdhY3lGaWxsU3RyIiwiZml0U3RyIiwiZmlsbFN0ciIsImZpbGxGb2NhbFN0ciIsInRyYW5zZm9ybXNTdHIiLCJmaWx0ZXJOYW1lIiwiaXNHaWYiLCJnZXRJbWFnZVVSSSIsIkFMSUdOX1RZUEVfVE9fUE9TSVRJT04iLCJQT1NJVElPTl9UT19BTElHTl9UWVBFIiwiYWxpZ24iLCJUSUxFX0ZJVFRJTkdfVFlQRVMiLCJOT05fU0NBTElOR19GSVRUSU5HX1RZUEVTIiwiZ2V0SXNGYWtlVGlsZSIsInRhcmdldFdpZHRoIiwidGFyZ2V0SGVpZ2h0IiwidmFsaWRhdGVUYXJnZXREaW1lbnNpb25zIiwiX3dpZHRoIiwiaGVpZ2h0UmF0aW8iLCJnZXRDU1NPdmVycmlkZXMiLCJyZXR1cm5WYWx1ZSIsImFsaWduVHlwZUZyb21Gb2NhbFBvaW50IiwiY29udmVydEZvY2FsUG9pbnRUb0FsaWduVHlwZSIsImNvbnZlcnRGaWxsRm9jYWxUb1Bvc2l0aW9uIiwic1ciLCJzSCIsInRXIiwidEgiLCJmcFgiLCJmcFkiLCJmaWxsU2NhbGVGYWN0b3IiLCJpbWdTY2FsZWRXIiwiaW1nU2NhbGVkSCIsImZsb29yIiwiUExBQ0VIT0xERVJfSU1HX0NTU19PVkVSUklERVMiLCJnZXRQbGFjZWhvbGRlciIsInNob3VsZExvYWRIUUltYWdlIiwiSVNfSU5fUExBQ0VIT0xERVJfRkxPVyIsInNob3VsZEFsbG93QW5pbWF0ZWRUcmFuc2Zvcm1JblBsYWNlaG9sZGVyIiwidXNlU3Jjc2V0IiwibmV3VGFyZ2V0IiwiaXNGYWtlVGlsZSIsInNjYWxlZERpbWVuc2lvbnMiLCJpc1NjYWxhYmxlIiwiaXNUaWxlIiwiX2hlaWdodCIsImlzSGlnaFF1YWxpdHkiLCJnZXRTY2FsZUZhY3RvckJ5V2lkdGgiLCJnZXRTY2FsZWREaW1lbnNpb25zIiwiYmx1ciIsImdldEJsdXJWYWx1ZSIsImNvbnZlcnRlZEZpdHRpbmdUeXBlIiwiZ2V0Q29udmVydGVkRml0dGluZyIsIm92ZXJyaWRlQ1NTIiwiZGF0YSIsInNyY3NldCIsImdldFNyY3NldCIsImF0dHJpYnV0ZXNHZXR0ZXIiLCJnZXRBdHRyaWJ1dGVzIiwid2l4U3RhdGljV2l0aE1lZGlhIiwiU1RBVElDX01FRElBX1VSTCIsImZldGNoTFFJUCIsInBsYWNlaG9sZGVyIiwiU0NIRU1FX1JFIiwiSW1hZ2UiLCJjb250YWluZXJJZCIsImFsdCIsInJvbGUiLCJkaXNwbGF5TW9kZSIsImJnRWZmZWN0TmFtZSIsImltYWdlU3R5bGVzIiwidGFyZ2V0U2NhbGUiLCJvbkxvYWQiLCJvbkVycm9yIiwic2hvdWxkVXNlTFFJUCIsImNvbnRhaW5lcldpZHRoIiwiY29udGFpbmVySGVpZ2h0IiwiaXNJbkZpcnN0Rm9sZCIsInBsYWNlaG9sZGVyVHJhbnNpdGlvbiIsInNvY2lhbEF0dHJzIiwic2tpcE1lYXN1cmUiLCJpc0ZsdWlkTGF5b3V0IiwiaW1hZ2VSZWYiLCJoYXNTc3JTcmMiLCJoYXNCbHVyVHJhbnNpdGlvbiIsInNzckltYWdlRGF0YSIsImN1cnJlbnQiLCJpc0xRSVAiLCJpbWFnZUluZm8iLCJKU09OIiwic3RyaW5naWZ5IiwibHFpcFRyYW5zaXRpb24iLCJpbWFnZURhdGEiLCJzc3JSZXN1bHQiLCJwbGFjZWhvbGRlclN0eWxlIiwiY2xhc3NOYW1lcyIsImltZ0VsZW1lbnQiLCJjdXJyZW50U3JjIiwiY29tcGxldGUiLCJtYXhXaWR0aCIsImNsYXNzIiwic3R5bGUiLCJyZWYiLCJzcmNTZXQiLCJzIiwiZmV0Y2hwcmlvcml0eSIsImxvYWRpbmciLCJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmciLCJfcmVzcG9uc2l2ZUltYWdlUHJvcHMiLCJfcmVzcG9uc2l2ZUltYWdlUHJvcHMyIiwicmVzcG9uc2l2ZUltYWdlUHJvcHMiLCJ6b29tZWRJbWFnZVJlc3BvbnNpdmVPdmVycmlkZSIsImVmZmVjdGl2ZVdpZHRoIiwiZWZmZWN0aXZlSGVpZ2h0IiwiZmFsbGJhY2tTcmMiLCJzb3VyY2VzIiwicmVzcG9uc2l2ZUltZ0Nzc05vSGVpZ2h0QW5kV2lkdGgiLCJyZXNwb25zaXZlSW1hZ2VzU3R5bGUiLCJfem9vbWVkSW1hZ2VSZXNwb25zaXYiLCJSZWFjdCIsInNpemVzIiwic3R5bGVzIiwiX3JlZiIsInNvdXJjZVNyY3NldCIsIm1lZGlhIiwiaW1nU3R5bGUiLCJQaXhlbFBlcmZlY3RJbWFnZSIsIl9jdXJyZW50UGxhY2Vob2xkZXIkdSIsIl9jdXJyZW50UGxhY2Vob2xkZXIkYyIsIl9jdXJyZW50UGxhY2Vob2xkZXIkYzIiLCJjdXN0b21JZFByZWZpeCIsImJhY2tncm91bmRJbWFnZSIsInRpbGVJbWFnZWRJbmZvU3RyaW5nIiwiaW1hZ2VQbGFjZWhvbGRlckRhdGEiLCJjdXJyZW50UGxhY2Vob2xkZXIiLCJoYXNCZ1Njcm9sbEVmZmVjdCIsIkNPTVBfSURfUExBQ0VIT0xERVJfUkVHRVgiLCJyZXBsYWNlQ29tcElkUGxhY2Vob2xkZXIiLCJzdHIiLCJjb21wSWQiLCJQT1NURVJfSU1BR0VfUVVBTElUWSIsInZpZGVvUmVmIiwidmlkZW9JbmZvIiwicG9zdGVySW1hZ2VJbmZvIiwibXV0ZWQiLCJwcmVsb2FkIiwibG9vcCIsImlzVmlkZW9FbmFibGVkIiwiZXh0cmFDbGFzc05hbWUiLCJob3ZlckJveFV0aWxzIiwidmlkZW9JbmZvU3RyaW5nIiwiVmlkZW9Qb3N0ZXJJbWFnZSIsImZpbHRlckVmZmVjdFN2Z1N0cmluZyIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiX19odG1sIiwidmlkZW9JZCIsImNyb3NzT3JpZ2luIiwicGxheXNJbmxpbmUiLCJwYWdlSWQiLCJjaGlsZHJlbiIsImNvbnRhaW5lclNpemUiLCJpbWFnZU92ZXJsYXkiLCJCYWNrZ3JvdW5kSW1hZ2UiLCJJTUFHRV9DTEFTU19GT1JfTEFZT1VUIiwiY2FudmFzUmVmIiwiaGFzQmdGdWxsc2NyZWVuU2Nyb2xsRWZmZWN0IiwiaW1hZ2UiLCJiYWNrZ3JvdW5kTWVkaWEiLCJ2aWRlbyIsImJhY2tncm91bmRPdmVybGF5Iiwic2hvdWxkUGFkTWVkaWEiLCJleHRyYUNsYXNzIiwic2hvdWxkUmVuZGVyVW5kZXJsYXkiLCJyZWR1Y2VkTW90aW9uIiwiaGFzQ2FudmFzQW5pbWF0aW9uIiwidXNlV2l4TWVkaWFDYW52YXMiLCJvbkNsaWNrIiwib25JbWFnZUxvYWQiLCJvblJlYWR5IiwidXNlRWZmZWN0IiwidXNlT25Mb2Fkc0V2ZW50cyIsImZpeGVkSW1hZ2VJZCIsIkltYWdlQ29tcG9uZW50IiwiQmFja2dyb3VuZEltYWdlQ29tcG9uZW50IiwiVmlkZW9Db21wb25lbnQiLCJWaWRlbyIsIk1lZGlhIiwiQmdNZWRpYSIsIkJhY2tncm91bmRNZWRpYSIsIkJnT3ZlcmxheSIsIkJhY2tncm91bmRPdmVybGF5IiwiRmlsbExheWVycyIsImdlbmVyYXRlRGl2aWRlciIsInNpZGUiLCJoYXNEaXZpZGVyIiwiZGl2aWRlckxheWVycyIsImdlbmVyYXRlTGF5ZXJzIiwibGF5ZXJDb3VudCIsInJldmVyc2UiLCJkaXZpZGVycyIsIl9kaXZpZGVycyR0b3BMYXllcnMyIiwiX2RpdmlkZXJzJGJvdHRvbUxheWVyMiIsInRvcERpdmlkZXIiLCJfZGl2aWRlcnMkdG9wTGF5ZXJzIiwiaGFzVG9wRGl2aWRlciIsInRvcExheWVycyIsImJvdHRvbURpdmlkZXIiLCJfZGl2aWRlcnMkYm90dG9tTGF5ZXIiLCJoYXNCb3R0b21EaXZpZGVyIiwiYm90dG9tTGF5ZXJzIiwiUGF1c2VTbWFsbCIsImZpbGwiLCJkaXNwbGF5TmFtZSIsIlBhdXNlU21hbGxfZGVmYXVsdCIsIlBsYXlTbWFsbCIsIlBsYXlTbWFsbF9kZWZhdWx0IiwiU2VjdGlvbiIsImNvbXBSZWYiLCJfdmlkZW9SZWYkY3VycmVudCIsInNraW4iLCJjb250YWluZXJSb290Q2xhc3NOYW1lIiwiY29udGFpbmVyUHJvcHMiLCJmaWxsTGF5ZXJzIiwiYmFja2dyb3VuZCIsInRhZ05hbWUiLCJzZW1hbnRpY0NsYXNzTmFtZXMiLCJvblN0b3AiLCJvbkRibENsaWNrIiwib25Nb3VzZUVudGVyIiwib25Nb3VzZUxlYXZlIiwibGFuZyIsInRyYW5zbGF0aW9ucyIsImlzUGxheVBhdXNlU2VjdGlvbkV4cGVyaW1lbnRPbiIsImlzQnVpbGRlciIsIlRhZ05hbWUiLCJzaG91bGRPbWl0V3JhcHBlckxheWVycyIsImNsYXNzbmFtZXMiLCJzZWN0aW9uU2VtYW50aWNDbGFzc05hbWVzIiwiaGFzVmlkZW8iLCJ2aWRlb0FQSSIsInBsYXkiLCJsb2FkIiwicGF1c2UiLCJzdG9wIiwiY3VycmVudFRpbWUiLCJ1c2VWaWRlb0FQSSIsImlzVmlkZW9QbGF5aW5nIiwic2V0SXNWaWRlb1BsYXlpbmciLCJwYXVzZWQiLCJhMTF5IiwidGFiSW5kZXgiLCJ0YWJpbmRleCIsImdldFRhYkluZGV4QXR0cmlidXRlIiwibGFiZWwiLCJzZWN0aW9uIiwib25Eb3VibGVDbGljayIsIkJhY2tncm91bmRYIiwidmlkZW9QbGF5UGF1c2VCdXR0b24iLCJoYW5kbGVQbGF5UGF1c2UiLCJwcmV2IiwibmV3UGxheWluZ1N0YXRlIiwic2VjdGlvbkVsZW1lbnQiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwicXVlcnlTZWxlY3RvckFsbCIsImNoaWxkVmlkZW8iLCJhcmlhTGFiZWwiLCJTaGFwZURpdmlkZXJzIl0sInNvdXJjZVJvb3QiOiIifQ==","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"thunderbolt/controller/Section/Section\",[],t):\"object\"==typeof exports?exports[\"thunderbolt/controller/Section/Section\"]=t():e[\"thunderbolt/controller/Section/Section\"]=t()}(\"undefined\"!=typeof self?self:this,function(){return function(){\"use strict\";var e={d:function(t,o){for(var n in o)e.o(o,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:o[n]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r:function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})}},t={};e.r(t),e.d(t,{default:function(){return r}});const o=e=>e.replace(/([A-Z])/g,e=>`-${e.toLowerCase()}`);var n,r=(n=e=>{let{mapperProps:t,stateValues:o}=e;const{experiments:n={}}=o,r=((e={},t)=>!0===e[t]||\"true\"===e[t]||\"new\"===e[t])(n,\"specs.thunderbolt.playPauseSection\");return{...t,isPlayPauseSectionExperimentOn:r}},{useComponentProps:(e,t,r)=>{const u=(e=>({...e,updateStyles:t=>{const n=Object.entries(t).reduce((e,[t,n])=>{return{...e,[(r=t,r.startsWith(\"--\")?t:o(t))]:void 0===n?null:n};var r},{});e.updateStyles(n)}}))(r);return n({mapperProps:e,stateValues:t,controllerUtils:u})}});return t}()});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGh1bmRlcmJvbHQvY29udHJvbGxlci9TZWN0aW9uL1NlY3Rpb24uYnVuZGxlLm1pbi5qcyIsIm1hcHBpbmdzIjoiQ0FBQSxTQUEyQ0EsRUFBTUMsR0FDMUIsaUJBQVpDLFNBQTBDLGlCQUFYQyxPQUN4Q0EsT0FBT0QsUUFBVUQsSUFDUSxtQkFBWEcsUUFBeUJBLE9BQU9DLElBQzlDRCxPQUFPLHlDQUEwQyxHQUFJSCxHQUMzQixpQkFBWkMsUUFDZEEsUUFBUSwwQ0FBNENELElBRXBERCxFQUFLLDBDQUE0Q0MsR0FDbEQsQ0FURCxDQVNvQixvQkFBVEssS0FBdUJBLEtBQU9DLEtBQU8sV0FDaEQsTyx3QkNUQSxJQUFJQyxFQUFzQixDQ0ExQkEsRUFBd0IsU0FBU04sRUFBU08sR0FDekMsSUFBSSxJQUFJQyxLQUFPRCxFQUNYRCxFQUFvQkcsRUFBRUYsRUFBWUMsS0FBU0YsRUFBb0JHLEVBQUVULEVBQVNRLElBQzVFRSxPQUFPQyxlQUFlWCxFQUFTUSxFQUFLLENBQUVJLFlBQVksRUFBTUMsSUFBS04sRUFBV0MsSUFHM0UsRUNQQUYsRUFBd0IsU0FBU1EsRUFBS0MsR0FBUSxPQUFPTCxPQUFPTSxVQUFVQyxlQUFlQyxLQUFLSixFQUFLQyxFQUFPLEVDQ3RHVCxFQUF3QixTQUFTTixHQUNYLG9CQUFYbUIsUUFBMEJBLE9BQU9DLGFBQzFDVixPQUFPQyxlQUFlWCxFQUFTbUIsT0FBT0MsWUFBYSxDQUFFQyxNQUFPLFdBRTdEWCxPQUFPQyxlQUFlWCxFQUFTLGFBQWMsQ0FBRXFCLE9BQU8sR0FDdkQsRyxrRENpREEsTUFDTUMsRUFBdUJDLEdBQVFBLEVBQUlDLFFBQVEsV0FBWUMsR0FBTyxJQUFJQSxFQUFJQyxpQkNwRDVFLElEc0VtQ0MsRUN0RW5DLEdEc0VtQ0EsRUNqRWpDQyxJQUFtQyxJQUFsQyxZQUFFQyxFQUFXLFlBQUVDLEdBQWFGLEVBQzdCLE1BQU0sWUFBRUcsRUFBYyxDQUFDLEdBQU1ELEVBQ3ZCRSxFQ1h3QixFQUFDRCxFQUFjLENBQUMsRUFBR0UsS0FBbUQsSUFBaENGLEVBQVlFLElBQzlDLFNBQWhDRixFQUFZRSxJQUNvQixRQUFoQ0YsRUFBWUUsR0RTeUJDLENBQ3JDSCxFQUNBLHNDQUdGLE1BQU8sSUFDRkYsRUFDSEcsbUNEeURPLENBQ0hHLGtCQUFtQixDQUFDTixFQUFhQyxFQUFhTSxLQUMxQyxNQUFNQyxFQXBCVyxDQUFDRCxJQVluQixJQUNBQSxFQUNIRSxhQVR5QkMsSUFDekIsTUFBTUMsRUFBUzlCLE9BQU8rQixRQUFRRixHQUFhRyxPQUFPLENBQUNDLEdBQU1uQyxFQUFLYSxNQUFXLFVBQ2xFc0IsRUFDSCxFQVZXcEIsRUFVSWYsRUFWSWUsRUFBSXFCLFdBQVcsTUFVWnBDLEVBQU1jLEVBQW9CZCxVQUFpQnFDLElBQVZ4QixFQUFzQixLQUFPQSxHQVYxRSxJQUFDRSxHQVdYLENBQUMsR0FDTGEsRUFBZ0JFLGFBQWFFLE1BVUpNLENBQXFCVixHQUMxQyxPQUFPVCxFQUFzQixDQUN6QkUsY0FDQUMsY0FDQU0sZ0JBQWlCQyxPIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9fd2l4X2VkaXRvcl9lbGVtZW50c19saWJyYXJ5L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL193aXhfZWRpdG9yX2VsZW1lbnRzX2xpYnJhcnkvLi4vLi4vZWRpdG9yLWVsZW1lbnRzLWludGVncmF0aW9ucy9kaXN0L2VzbS90aHVuZGVyYm9sdC9jcmVhdGVDb21wb25lbnRNYXBwZXIuanMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi90aHVuZGVyYm9sdC1lbGVtZW50cy9zcmMvY29tcG9uZW50cy9TZWN0aW9ucy9TZWN0aW9uL3ZpZXdlci9TZWN0aW9uLmNvbnRyb2xsZXIudHMiLCJ3ZWJwYWNrOi8vX3dpeF9lZGl0b3JfZWxlbWVudHNfbGlicmFyeS8uLi8uLi9lZGl0b3ItZWxlbWVudHMtY29tbW9uLXV0aWxzL2Rpc3QvZXNtL2NvbW1vbnMvZXhwZXJpbWVudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoXCJ0aHVuZGVyYm9sdC9jb250cm9sbGVyL1NlY3Rpb24vU2VjdGlvblwiLCBbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJ0aHVuZGVyYm9sdC9jb250cm9sbGVyL1NlY3Rpb24vU2VjdGlvblwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJ0aHVuZGVyYm9sdC9jb250cm9sbGVyL1NlY3Rpb24vU2VjdGlvblwiXSA9IGZhY3RvcnkoKTtcbn0pKCh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDogdGhpcyksIGZ1bmN0aW9uKCkge1xucmV0dXJuICIsIi8vIFRoZSByZXF1aXJlIHNjb3BlXG52YXIgX193ZWJwYWNrX3JlcXVpcmVfXyA9IHt9O1xuXG4iLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBkZWZpbml0aW9uKSB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iaiwgcHJvcCkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7IH0iLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsImltcG9ydCB7IGlzRXhwZXJpbWVudE9wZW4gfSBmcm9tICdAd2l4L2VkaXRvci1lbGVtZW50cy1jb21tb24tdXRpbHMnO1xuZXhwb3J0IGNvbnN0IHdpdGhDb21wSW5mbyA9ICgpID0+IChkZXBzQXJyYXksIHJlc29sdmVyLCBlbmhhbmNlcnMgPSBbXSkgPT4ge1xuICAgIGNvbnN0IGRlcHMgPSBkZXBzQXJyYXkucmVkdWNlKChhY2MsIGtleSkgPT4gKHsgLi4uYWNjLCBba2V5XTogdHJ1ZSB9KSwge30pO1xuICAgIHJldHVybiB7XG4gICAgICAgIGRlcHMsXG4gICAgICAgIHJlc29sdmVyOiBlbmhhbmNlcnMubGVuZ3RoXG4gICAgICAgICAgICA/IChyYXdDb21wSW5mbywgY2FybWlEYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZW5oYW5jZWRDb21wSW5mbyA9IGVuaGFuY2Vycy5yZWR1Y2UoKGNvbXBJbmZvLCBlbmhhbmNlcikgPT4gZW5oYW5jZXIoY29tcEluZm8pLCByYXdDb21wSW5mbyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVyKGVuaGFuY2VkQ29tcEluZm8sIGNhcm1pRGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHJlc29sdmVyLFxuICAgIH07XG59O1xuZXhwb3J0IGNvbnN0IGlzU3R5bGFibGVDb21wb25lbnQgPSAoc3R5bGVQcm9wZXJ0aWVzKSA9PiB7XG4gICAgLy8gaW4gRWRpdG9yIHx8IGluIFRCXG4gICAgcmV0dXJuIEJvb2xlYW4oc3R5bGVQcm9wZXJ0aWVzWyckc3QtY3NzJ10gfHwgc3R5bGVQcm9wZXJ0aWVzWydzdC1jc3MnXSk7XG59O1xuZXhwb3J0IGNvbnN0IGNyZWF0ZVVEUFVpVHlwZU1hcHBlciA9IChzdHlsYWJsZVNraW5OYW1lLCB1ZHBTa2luTmFtZSkgPT4gd2l0aENvbXBJbmZvKCkoWydzdHlsZVByb3BlcnRpZXMnLCAnZXhwZXJpbWVudHMnXSwgKHsgc3R5bGVQcm9wZXJ0aWVzLCBleHBlcmltZW50cyB9KSA9PiB7XG4gICAgY29uc3QgQlVJTERFUl9TUEVDID0gJ3NwZWNzLnRodW5kZXJib2x0LnJlbmRlclBsYXRmb3JtQnVpbGRlckNvbXBvbmVudCc7XG4gICAgY29uc3QgaXNCdWlsZGVyRW52ID0gaXNFeHBlcmltZW50T3BlbihleHBlcmltZW50cywgQlVJTERFUl9TUEVDKTtcbiAgICBpZiAoIWlzU3R5bGFibGVDb21wb25lbnQoc3R5bGVQcm9wZXJ0aWVzKSB8fCBpc0J1aWxkZXJFbnYpIHtcbiAgICAgICAgcmV0dXJuIHVkcFNraW5OYW1lO1xuICAgIH1cbiAgICByZXR1cm4gc3R5bGFibGVTa2luTmFtZTtcbn0pO1xuZXhwb3J0IGNvbnN0IHdpdGhVaVR5cGVDb21wSW5mbyA9IHdpdGhDb21wSW5mbztcbmV4cG9ydCBjb25zdCB3aXRoU3RhdGVSZWZzID0gKCkgPT4gKGRlcHNBcnJheSwgcmVzb2x2ZXIpID0+IHtcbiAgICBjb25zdCByZWZBcGlLZXkgPSAncmVmQXBpJztcbiAgICBjb25zdCBkZXBzID0gWy4uLmRlcHNBcnJheSwgcmVmQXBpS2V5XTtcbiAgICBjb25zdCB3aXRoQ29tcEluZm9GdW5jID0gd2l0aENvbXBJbmZvKCk7XG4gICAgcmV0dXJuIHdpdGhDb21wSW5mb0Z1bmMoZGVwcywgcmVzb2x2ZXIpO1xufTtcbmNvbnN0IGdldFN0YXRlUmVmR2V0dGVycyA9IChzdGF0ZVJlZnNLZXlzLCByZWZBcGkpID0+IHtcbiAgICBjb25zdCBzdGF0ZVJlZnNHZXR0ZXJzID0gT2JqZWN0LnZhbHVlcyhyZWZBcGkpLnJlZHVjZSgoYWNjLCBmZWF0dXJlRG9tYWluKSA9PiAoe1xuICAgICAgICAuLi5hY2MsXG4gICAgICAgIC4uLmZlYXR1cmVEb21haW4sXG4gICAgfSksIHt9KTtcbiAgICByZXR1cm4gc3RhdGVSZWZzS2V5cy5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgIGlmICghc3RhdGVSZWZzR2V0dGVyc1trZXldKSB7XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICBba2V5XTogc3RhdGVSZWZzR2V0dGVyc1trZXldKCksXG4gICAgICAgIH07XG4gICAgfSwge30pO1xufTtcbmV4cG9ydCBjb25zdCB3aXRoU3RhdGVSZWZzVmFsdWVzID0gKHN0YXRlUmVmc0tleXMpID0+IHtcbiAgICByZXR1cm4gd2l0aENvbXBJbmZvKCkoWydyZWZBcGknXSwgKHsgcmVmQXBpIH0pID0+IHtcbiAgICAgICAgcmV0dXJuIGdldFN0YXRlUmVmR2V0dGVycyhzdGF0ZVJlZnNLZXlzLCByZWZBcGkpO1xuICAgIH0pO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb21wb25lbnRNYXBwZXJNb2RlbChtYXBwZXIpIHtcbiAgICByZXR1cm4gbWFwcGVyO1xufVxuY29uc3QgaXNDU1NWYXJpYWJsZSA9IChzdHIpID0+IHN0ci5zdGFydHNXaXRoKCctLScpO1xuY29uc3QgY2FtZWxDYXNlVG9EYXNoQ2FzZSA9IChzdHIpID0+IHN0ci5yZXBsYWNlKC8oW0EtWl0pL2csIHZhbCA9PiBgLSR7dmFsLnRvTG93ZXJDYXNlKCl9YCk7XG5jb25zdCBwYXRjaENvbnRyb2xsZXJVdGlscyA9IChjb250cm9sbGVyVXRpbHMpID0+IHtcbiAgICAvKipcbiAgICAgKiBGcm9tIHRoaXM6IHsgbWFyZ2luVG9wOiAxMCB9XG4gICAgICogdG8gdGhpcyB7IG1hcmdpbi10b3A6IDEwIH1cbiAgICAgKi9cbiAgICBjb25zdCBwYXRjaGVkVXBkYXRlU3R5bGVzID0gKHJlYWN0U3R5bGVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0eWxlcyA9IE9iamVjdC5lbnRyaWVzKHJlYWN0U3R5bGVzKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgW2lzQ1NTVmFyaWFibGUoa2V5KSA/IGtleSA6IGNhbWVsQ2FzZVRvRGFzaENhc2Uoa2V5KV06IHZhbHVlID09PSB1bmRlZmluZWQgPyBudWxsIDogdmFsdWUsXG4gICAgICAgIH0pLCB7fSk7XG4gICAgICAgIGNvbnRyb2xsZXJVdGlscy51cGRhdGVTdHlsZXMoc3R5bGVzKTtcbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNvbnRyb2xsZXJVdGlscyxcbiAgICAgICAgdXBkYXRlU3R5bGVzOiBwYXRjaGVkVXBkYXRlU3R5bGVzLFxuICAgIH07XG59O1xuZXhwb3J0IGNvbnN0IHdpdGhDb21wQ29udHJvbGxlciA9IChjb21wb25lbnRQcm9wc0NyZWF0b3IpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICB1c2VDb21wb25lbnRQcm9wczogKG1hcHBlclByb3BzLCBzdGF0ZVZhbHVlcywgY29udHJvbGxlclV0aWxzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXRjaGVkVXRpbHMgPSBwYXRjaENvbnRyb2xsZXJVdGlscyhjb250cm9sbGVyVXRpbHMpO1xuICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudFByb3BzQ3JlYXRvcih7XG4gICAgICAgICAgICAgICAgbWFwcGVyUHJvcHMsXG4gICAgICAgICAgICAgICAgc3RhdGVWYWx1ZXMsXG4gICAgICAgICAgICAgICAgY29udHJvbGxlclV0aWxzOiBwYXRjaGVkVXRpbHMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICB9O1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNyZWF0ZUNvbXBvbmVudE1hcHBlci5qcy5tYXAiLCJpbXBvcnQgeyB3aXRoQ29tcENvbnRyb2xsZXIgfSBmcm9tICdAd2l4L2VkaXRvci1lbGVtZW50cy1pbnRlZ3JhdGlvbnMnO1xuaW1wb3J0IHsgaXNFeHBlcmltZW50T3BlbiB9IGZyb20gJ0B3aXgvZWRpdG9yLWVsZW1lbnRzLWNvbW1vbi11dGlscyc7XG5pbXBvcnQgdHlwZSB7IElTZWN0aW9uUHJvcHMsIElTZWN0aW9uU3RhdGVWYWx1ZXMgfSBmcm9tICcuLi9TZWN0aW9uLnR5cGVzJztcblxuZXhwb3J0IGRlZmF1bHQgd2l0aENvbXBDb250cm9sbGVyPFxuICBJU2VjdGlvblByb3BzLFxuICBJU2VjdGlvblByb3BzLFxuICBJU2VjdGlvblByb3BzLFxuICBJU2VjdGlvblN0YXRlVmFsdWVzXG4+KCh7IG1hcHBlclByb3BzLCBzdGF0ZVZhbHVlcyB9KSA9PiB7XG4gIGNvbnN0IHsgZXhwZXJpbWVudHMgPSB7fSB9ID0gc3RhdGVWYWx1ZXM7XG4gIGNvbnN0IGlzUGxheVBhdXNlU2VjdGlvbkV4cGVyaW1lbnRPbiA9IGlzRXhwZXJpbWVudE9wZW4oXG4gICAgZXhwZXJpbWVudHMsXG4gICAgJ3NwZWNzLnRodW5kZXJib2x0LnBsYXlQYXVzZVNlY3Rpb24nLFxuICApO1xuXG4gIHJldHVybiB7XG4gICAgLi4ubWFwcGVyUHJvcHMsXG4gICAgaXNQbGF5UGF1c2VTZWN0aW9uRXhwZXJpbWVudE9uLFxuICB9O1xufSk7XG4iLCJleHBvcnQgY29uc3QgaXNFeHBlcmltZW50T3BlbiA9IChleHBlcmltZW50cyA9IHt9LCBleHBlcmltZW50TmFtZSkgPT4gZXhwZXJpbWVudHNbZXhwZXJpbWVudE5hbWVdID09PSB0cnVlIHx8XG4gICAgZXhwZXJpbWVudHNbZXhwZXJpbWVudE5hbWVdID09PSAndHJ1ZScgfHxcbiAgICBleHBlcmltZW50c1tleHBlcmltZW50TmFtZV0gPT09ICduZXcnO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXhwZXJpbWVudHMuanMubWFwIl0sIm5hbWVzIjpbInJvb3QiLCJmYWN0b3J5IiwiZXhwb3J0cyIsIm1vZHVsZSIsImRlZmluZSIsImFtZCIsInNlbGYiLCJ0aGlzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsImRlZmluaXRpb24iLCJrZXkiLCJvIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0Iiwib2JqIiwicHJvcCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIlN5bWJvbCIsInRvU3RyaW5nVGFnIiwidmFsdWUiLCJjYW1lbENhc2VUb0Rhc2hDYXNlIiwic3RyIiwicmVwbGFjZSIsInZhbCIsInRvTG93ZXJDYXNlIiwiY29tcG9uZW50UHJvcHNDcmVhdG9yIiwiX3JlZiIsIm1hcHBlclByb3BzIiwic3RhdGVWYWx1ZXMiLCJleHBlcmltZW50cyIsImlzUGxheVBhdXNlU2VjdGlvbkV4cGVyaW1lbnRPbiIsImV4cGVyaW1lbnROYW1lIiwiaXNFeHBlcmltZW50T3BlbiIsInVzZUNvbXBvbmVudFByb3BzIiwiY29udHJvbGxlclV0aWxzIiwicGF0Y2hlZFV0aWxzIiwidXBkYXRlU3R5bGVzIiwicmVhY3RTdHlsZXMiLCJzdHlsZXMiLCJlbnRyaWVzIiwicmVkdWNlIiwiYWNjIiwic3RhcnRzV2l0aCIsInVuZGVmaW5lZCIsInBhdGNoQ29udHJvbGxlclV0aWxzIl0sInNvdXJjZVJvb3QiOiIifQ==","'use client';\nimport { Section as Component } from '@wix/editor-components/component/Section';\nimport { Section as controller } from '@wix/editor-components/controller/Section';\nimport '@wix/editor-components/component/Section/css';\nimport { withController, withNormalChildren } from './hocs';\nexport const Section = withNormalChildren(withController(Component, controller));\n//# sourceMappingURL=Section.js.map"],"names":["e","t","module","require$$0","this","r","n","o","u","c","a","i","d","Anchor","C","s","l","f","p","m","v","h","y","x","g","withNormalChildren","Component","children","props","React","withController","controller","propsOverrides","setters","useStateOverrides","controllerProps","FooterContainer_TransparentScreen","ai","it","Qe","_","T","I","E","L","b","A","M","w","O","S","G","R","F","N","P","k","B","H","Y","U","$","z","Z","j","V","q","ee","W","D","J","K","X","Q","te","ie","oe","ae","re","ne","ce","se","le","de","ue","he","ge","me","fe","pe","_e","Te","Ee","Ie","Le","be","Ae","ye","Me","we","ve","Oe","Se","Ce","Ge","Re","Fe","Ne","Pe","xe","ke","Be","He","Ye","Ue","$e","ze","Ze","je","De","Ve","We","qe","Je","Ke","Xe","et","tt","at","nt","rt","ot","ct","st","lt","dt","ut","ht","gt","mt","ft","pt","_t","Tt","It","Et","Lt","bt","At","yt","Mt","wt","vt","Ot","St","Ct","Gt","Rt","Ft","Nt","Pt","xt","kt","Bt","Ht","Yt","Ut","$t","zt","Zt","jt","Dt","Vt","Wt","qt","Jt","Kt","Xt","Qt","ei","ti","ii","FooterSection","HeaderContainer_TransparentScreen","HeaderSection","Page_BasicPageSkin","Page_ResponsivePageWithColorBG","require$$1","PageGroup","PagesContainer","PageSections","ResponsiveContainer","ResponsivePopupPage_WithoutOverlay","Section"],"mappings":"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","x_google_ignoreList":[0,2,5,7,8,10,11,13,15,17,19,21,24,25,27,28]}
|