@react-magma/charts 14.0.0 → 15.0.0-rc.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/dist/charts.js +1 -9
- package/dist/charts.js.map +1 -1
- package/dist/charts.modern.module.js +1 -9
- package/dist/charts.modern.module.js.map +1 -1
- package/dist/charts.umd.js +18 -24
- package/dist/charts.umd.js.map +1 -1
- package/package.json +3 -3
- package/src/components/CarbonChart/CarbonChart.tsx +3 -9
package/dist/charts.umd.js
CHANGED
|
@@ -24896,7 +24896,7 @@
|
|
|
24896
24896
|
styles: "display:inline-block;position:relative"
|
|
24897
24897
|
} : {
|
|
24898
24898
|
name: "11ffxfj",
|
|
24899
|
-
styles: "display:inline-block;position:relative/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRyb3Bkb3duLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvQjZCIiwiZmlsZSI6IkRyb3Bkb3duLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcclxuaW1wb3J0IHsgYXV0b1VwZGF0ZSwgZmxpcCwgb2Zmc2V0LCB1c2VGbG9hdGluZywgfSBmcm9tICdAZmxvYXRpbmctdWkvcmVhY3QtZG9tJztcclxuaW1wb3J0IHsgdXNlRGVzY2VuZGFudHMgfSBmcm9tICcuLi8uLi9ob29rcy91c2VEZXNjZW5kYW50cyc7XHJcbmltcG9ydCB7IHVzZUlzSW52ZXJzZSB9IGZyb20gJy4uLy4uL2ludmVyc2UnO1xyXG5pbXBvcnQgeyBpc0VsZW1lbnRJbnRlcmFjdGl2ZSwgcmVzb2x2ZVByb3BzLCB1c2VGb3JrZWRSZWYsIHVzZUdlbmVyYXRlSWQsIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xyXG5pbXBvcnQgeyBCdXR0b25Hcm91cENvbnRleHQgfSBmcm9tICcuLi9CdXR0b25Hcm91cCc7XHJcbmV4cG9ydCB2YXIgRHJvcGRvd25Ecm9wRGlyZWN0aW9uO1xyXG4oZnVuY3Rpb24gKERyb3Bkb3duRHJvcERpcmVjdGlvbikge1xyXG4gICAgRHJvcGRvd25Ecm9wRGlyZWN0aW9uW1wiZG93blwiXSA9IFwiZG93blwiO1xyXG4gICAgRHJvcGRvd25Ecm9wRGlyZWN0aW9uW1wibGVmdFwiXSA9IFwibGVmdFwiO1xyXG4gICAgRHJvcGRvd25Ecm9wRGlyZWN0aW9uW1wicmlnaHRcIl0gPSBcInJpZ2h0XCI7XHJcbiAgICBEcm9wZG93bkRyb3BEaXJlY3Rpb25bXCJ1cFwiXSA9IFwidXBcIjtcclxufSkoRHJvcGRvd25Ecm9wRGlyZWN0aW9uIHx8IChEcm9wZG93bkRyb3BEaXJlY3Rpb24gPSB7fSkpO1xyXG5leHBvcnQgdmFyIERyb3Bkb3duQWxpZ25tZW50O1xyXG4oZnVuY3Rpb24gKERyb3Bkb3duQWxpZ25tZW50KSB7XHJcbiAgICBEcm9wZG93bkFsaWdubWVudFtcInN0YXJ0XCJdID0gXCJzdGFydFwiO1xyXG4gICAgRHJvcGRvd25BbGlnbm1lbnRbXCJlbmRcIl0gPSBcImVuZFwiO1xyXG59KShEcm9wZG93bkFsaWdubWVudCB8fCAoRHJvcGRvd25BbGlnbm1lbnQgPSB7fSkpO1xyXG5jb25zdCBDb250YWluZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5gO1xyXG5leHBvcnQgY29uc3QgRHJvcGRvd25Db250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dCh7XHJcbiAgICBpc09wZW46IGZhbHNlLFxyXG4gICAgcmVnaXN0ZXJEcm9wZG93bk1lbnVJdGVtOiAoZWxlbWVudHMsIGVsZW1lbnQpID0+IHsgfSxcclxuICAgIHNldElzT3BlbjogKCkgPT4gZmFsc2UsXHJcbn0pO1xyXG5leHBvcnQgY29uc3QgdXNlRHJvcGRvd25Db250ZXh0ID0gKCkgPT4gUmVhY3QudXNlQ29udGV4dChEcm9wZG93bkNvbnRleHQpO1xyXG5leHBvcnQgY29uc3QgRHJvcGRvd24gPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XHJcbiAgICBjb25zdCBjb250ZXh0UHJvcHMgPSBSZWFjdC51c2VDb250ZXh0KEJ1dHRvbkdyb3VwQ29udGV4dCk7XHJcbiAgICBjb25zdCByZXNvbHZlZFByb3BzID0gcmVzb2x2ZVByb3BzKGNvbnRleHRQcm9wcywgcHJvcHMpO1xyXG4gICAgY29uc3QgeyBhY3RpdmVJbmRleCwgYWxpZ25tZW50LCBjaGlsZHJlbiwgZHJvcERpcmVjdGlvbiwgbWF4SGVpZ2h0LCBvbkNsb3NlLCBvbk9wZW4sIHRlc3RJZCwgd2lkdGgsIC4uLm90aGVyIH0gPSByZXNvbHZlZFByb3BzO1xyXG4gICAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcclxuICAgIGNvbnN0IFthY3RpdmVJdGVtSW5kZXgsIHNldEFjdGl2ZUl0ZW1JbmRleF0gPSBSZWFjdC51c2VTdGF0ZShhY3RpdmVJbmRleCB8fCAtMSk7XHJcbiAgICBjb25zdCBvd25SZWYgPSBSZWFjdC51c2VSZWYoKTtcclxuICAgIGNvbnN0IHRvZ2dsZVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcclxuICAgIGNvbnN0IG1lbnVSZWYgPSBSZWFjdC51c2VSZWYoW10pO1xyXG4gICAgY29uc3QgZHJvcGRvd25CdXR0b25JZCA9IFJlYWN0LnVzZVJlZignJyk7XHJcbiAgICBjb25zdCByZWYgPSB1c2VGb3JrZWRSZWYoZm9yd2FyZGVkUmVmLCBvd25SZWYpO1xyXG4gICAgY29uc3QgW2l0ZW1SZWZBcnJheSwgcmVnaXN0ZXJEcm9wZG93bk1lbnVJdGVtXSA9IHVzZURlc2NlbmRhbnRzKCk7XHJcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIGlmIChhY3RpdmVJbmRleCA+PSAwKSB7XHJcbiAgICAgICAgICAgIHNldEFjdGl2ZUl0ZW1JbmRleChhY3RpdmVJbmRleCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2FjdGl2ZUluZGV4XSk7XHJcbiAgICBmdW5jdGlvbiBvcGVuRHJvcGRvd24oKSB7XHJcbiAgICAgICAgY29uc3QgW2ZpbHRlcmVkSXRlbXNdID0gZ2V0RmlsdGVyZWRJdGVtKCk7XHJcbiAgICAgICAgc2V0SXNPcGVuKHRydWUpO1xyXG4gICAgICAgIGlmIChmaWx0ZXJlZEl0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJlZEl0ZW1zWzBdPy5jdXJyZW50Py5mb2N1cygpO1xyXG4gICAgICAgICAgICB9LCAwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbWVudVJlZi5jdXJyZW50LmZvY3VzKCk7XHJcbiAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvbk9wZW4gJiYgdHlwZW9mIG9uT3BlbiA9PT0gJ2Z1bmN0aW9uJyAmJiBvbk9wZW4oKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGNsb3NlRHJvcGRvd24oZXZlbnQpIHtcclxuICAgICAgICBzZXRJc09wZW4oZmFsc2UpO1xyXG4gICAgICAgIGlmIChldmVudCAmJiBldmVudC50eXBlID09PSAnYmx1cicpIHtcclxuICAgICAgICAgICAgY29uc3QgcmVsYXRlZFRhcmdldCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQ7XHJcbiAgICAgICAgICAgIGlmICghaXNFbGVtZW50SW50ZXJhY3RpdmUocmVsYXRlZFRhcmdldCkpIHtcclxuICAgICAgICAgICAgICAgIHRvZ2dsZVJlZi5jdXJyZW50Py5mb2N1cygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG9uQ2xvc2UgJiYgdHlwZW9mIG9uQ2xvc2UgPT09ICdmdW5jdGlvbicgJiYgb25DbG9zZShldmVudCk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBnZXRGaWx0ZXJlZEl0ZW0oKSB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyZWRJdGVtcyA9IGl0ZW1SZWZBcnJheS5jdXJyZW50LmZpbHRlcihpdGVtUmVmID0+IGl0ZW1SZWYuY3VycmVudCk7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyZWRJdGVtSW5kZXggPSBmaWx0ZXJlZEl0ZW1zXHJcbiAgICAgICAgICAgIC5tYXAoZmlsdGVyZWRJdGVtID0+IGZpbHRlcmVkSXRlbS5jdXJyZW50KVxyXG4gICAgICAgICAgICAuaW5kZXhPZihkb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcclxuICAgICAgICByZXR1cm4gW2ZpbHRlcmVkSXRlbXMsIGZpbHRlcmVkSXRlbUluZGV4XTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGhhbmRsZUtleURvd24oZXZlbnQpIHtcclxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xyXG4gICAgICAgICAgICBldmVudC5uYXRpdmVFdmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgY2xvc2VEcm9wZG93bihldmVudCk7XHJcbiAgICAgICAgICAgIHRvZ2dsZVJlZi5jdXJyZW50Py5mb2N1cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xyXG4gICAgICAgICAgICBjb25zdCBbZmlsdGVyZWRJdGVtcywgZmlsdGVyZWRJdGVtSW5kZXhdID0gZ2V0RmlsdGVyZWRJdGVtKCk7XHJcbiAgICAgICAgICAgIGlmIChmaWx0ZXJlZEl0ZW1zLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGlmIChmaWx0ZXJlZEl0ZW1JbmRleCA9PT0gLTEgfHxcclxuICAgICAgICAgICAgICAgIGZpbHRlcmVkSXRlbUluZGV4ID09PSBmaWx0ZXJlZEl0ZW1zLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgICAgIGZpbHRlcmVkSXRlbXNbMF0uY3VycmVudC5mb2N1cygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZmlsdGVyZWRJdGVtc1tmaWx0ZXJlZEl0ZW1JbmRleCArIDFdLmN1cnJlbnQuZm9jdXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcclxuICAgICAgICAgICAgY29uc3QgW2ZpbHRlcmVkSXRlbXMsIGZpbHRlcmVkSXRlbUluZGV4XSA9IGdldEZpbHRlcmVkSXRlbSgpO1xyXG4gICAgICAgICAgICBpZiAoZmlsdGVyZWRJdGVtcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBpZiAoZmlsdGVyZWRJdGVtSW5kZXggPT09IC0xIHx8IGZpbHRlcmVkSXRlbUluZGV4ID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJlZEl0ZW1zW2ZpbHRlcmVkSXRlbXMubGVuZ3RoIC0gMV0uY3VycmVudC5mb2N1cygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZmlsdGVyZWRJdGVtc1tmaWx0ZXJlZEl0ZW1JbmRleCAtIDFdLmN1cnJlbnQuZm9jdXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGhhbmRsZURyb3Bkb3duQmx1cihldmVudCkge1xyXG4gICAgICAgIGNvbnN0IHsgY3VycmVudFRhcmdldCwgcmVsYXRlZFRhcmdldCB9ID0gZXZlbnQ7XHJcbiAgICAgICAgY29uc3QgaXNJbk1lbnUgPSByZWxhdGVkVGFyZ2V0ICYmIGN1cnJlbnRUYXJnZXQuY29udGFpbnMocmVsYXRlZFRhcmdldCk7XHJcbiAgICAgICAgaWYgKCFpc0luTWVudSAmJiBpc09wZW4pIHtcclxuICAgICAgICAgICAgY2xvc2VEcm9wZG93bihldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgbWF4SGVpZ2h0U3RyaW5nID0gdHlwZW9mIG1heEhlaWdodCA9PT0gJ251bWJlcicgPyBgJHttYXhIZWlnaHR9cHhgIDogbWF4SGVpZ2h0O1xyXG4gICAgY29uc3Qgd2lkdGhTdHJpbmcgPSB0eXBlb2Ygd2lkdGggPT09ICdudW1iZXInID8gYCR7d2lkdGh9cHhgIDogd2lkdGg7XHJcbiAgICBjb25zdCBpc0ludmVyc2UgPSB1c2VJc0ludmVyc2UocmVzb2x2ZWRQcm9wcy5pc0ludmVyc2UpO1xyXG4gICAgY29uc3QgW3BsYWNlbWVudCwgc2V0UGxhY2VtZW50XSA9IHVzZVN0YXRlKCdib3R0b20tc3RhcnQnKTtcclxuICAgIGRyb3Bkb3duQnV0dG9uSWQuY3VycmVudCA9IHVzZUdlbmVyYXRlSWQoKTtcclxuICAgIGNvbnN0IGNoYW5nZVBsYWNlbWVudCA9IChkcm9wRGlyZWN0aW9uID0gRHJvcGRvd25Ecm9wRGlyZWN0aW9uLmRvd24sIGFsaWdubWVudCA9IERyb3Bkb3duQWxpZ25tZW50LnN0YXJ0KSA9PiB7XHJcbiAgICAgICAgY29uc3QgcGxhY2VtZW50TWFwID0gbmV3IE1hcChbXHJcbiAgICAgICAgICAgIFsndXAtc3RhcnQnLCAndG9wLXN0YXJ0J10sXHJcbiAgICAgICAgICAgIFsndXAtZW5kJywgJ3RvcC1lbmQnXSxcclxuICAgICAgICAgICAgWydyaWdodC1zdGFydCcsICdyaWdodC1zdGFydCddLFxyXG4gICAgICAgICAgICBbJ3JpZ2h0LWVuZCcsICdyaWdodC1lbmQnXSxcclxuICAgICAgICAgICAgWydkb3duLWVuZCcsICdib3R0b20tZW5kJ10sXHJcbiAgICAgICAgICAgIFsnbGVmdC1zdGFydCcsICdsZWZ0LXN0YXJ0J10sXHJcbiAgICAgICAgICAgIFsnbGVmdC1lbmQnLCAnbGVmdC1lbmQnXSxcclxuICAgICAgICBdKTtcclxuICAgICAgICAvLyBkcm9wRGlyZWN0aW9uICYgYWxpZ25tZW50IGFyZSBkZXByZWNhdGVkLlxyXG4gICAgICAgIC8vIHRoaXMgZmFsbGJhY2sgY2FuIGJlIHJlbW92ZWQgd2hlbiB0aGUgcHJvcHMgYXJlIGRlbGV0ZWQuXHJcbiAgICAgICAgY29uc3QgY29udGVudFBvc2l0aW9uID0gYCR7ZHJvcERpcmVjdGlvbn0tJHthbGlnbm1lbnR9YDtcclxuICAgICAgICBzZXRQbGFjZW1lbnQocGxhY2VtZW50TWFwLmdldChjb250ZW50UG9zaXRpb24pID8/ICdib3R0b20tc3RhcnQnKTtcclxuICAgIH07XHJcbiAgICBjb25zdCB7IHJlZnMsIGZsb2F0aW5nU3R5bGVzLCBlbGVtZW50cywgdXBkYXRlIH0gPSB1c2VGbG9hdGluZyh7XHJcbiAgICAgICAgbWlkZGxld2FyZTogW2ZsaXAoKSwgb2Zmc2V0KDIpXSxcclxuICAgICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCxcclxuICAgICAgICB3aGlsZUVsZW1lbnRzTW91bnRlZDogYXV0b1VwZGF0ZSxcclxuICAgIH0pO1xyXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICBjaGFuZ2VQbGFjZW1lbnQoZHJvcERpcmVjdGlvbiwgYWxpZ25tZW50KTtcclxuICAgIH0sIFtkcm9wRGlyZWN0aW9uLCBhbGlnbm1lbnRdKTtcclxuICAgIC8vIE5lZWQgY2xlYW51cCBzdGF0ZSB0byBhdm9pZCBtZW1vcnkgbGVha3NcclxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlRHJvcGRvd25CdXR0b24gPSBlbGVtZW50cy5yZWZlcmVuY2U7XHJcbiAgICAgICAgY29uc3QgZmxvYXRpbmdEcm9wZG93bkNvbnRlbnQgPSBlbGVtZW50cy5mbG9hdGluZztcclxuICAgICAgICBpZiAoaXNPcGVuICYmIHJlZmVyZW5jZURyb3Bkb3duQnV0dG9uICYmIGZsb2F0aW5nRHJvcGRvd25Db250ZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhdXRvVXBkYXRlKHJlZmVyZW5jZURyb3Bkb3duQnV0dG9uLCBmbG9hdGluZ0Ryb3Bkb3duQ29udGVudCwgdXBkYXRlKTtcclxuICAgICAgICB9XHJcbiAgICB9LCBbaXNPcGVuLCBlbGVtZW50cywgdXBkYXRlXSk7XHJcbiAgICBjb25zdCBjb250ZXh0VmFsdWUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XHJcbiAgICAgICAgYWN0aXZlSXRlbUluZGV4LFxyXG4gICAgICAgIGFsaWdubWVudCxcclxuICAgICAgICBjbG9zZURyb3Bkb3duLFxyXG4gICAgICAgIGRyb3Bkb3duQnV0dG9uSWQsXHJcbiAgICAgICAgZHJvcERpcmVjdGlvbixcclxuICAgICAgICBmbG9hdGluZ1N0eWxlcyxcclxuICAgICAgICBoYW5kbGVEcm9wZG93bkJsdXIsXHJcbiAgICAgICAgaXRlbVJlZkFycmF5LFxyXG4gICAgICAgIGlzRml4ZWRXaWR0aDogISF3aWR0aCxcclxuICAgICAgICBpc09wZW4sXHJcbiAgICAgICAgaXNJbnZlcnNlLFxyXG4gICAgICAgIG1heEhlaWdodDogbWF4SGVpZ2h0U3RyaW5nLFxyXG4gICAgICAgIG1lbnVSZWYsXHJcbiAgICAgICAgb3BlbkRyb3Bkb3duLFxyXG4gICAgICAgIHJlZ2lzdGVyRHJvcGRvd25NZW51SXRlbSxcclxuICAgICAgICBzZXRBY3RpdmVJdGVtSW5kZXgsXHJcbiAgICAgICAgc2V0SXNPcGVuLFxyXG4gICAgICAgIHNldFJlZmVyZW5jZTogcmVmcy5zZXRSZWZlcmVuY2UsXHJcbiAgICAgICAgc2V0RmxvYXRpbmc6IHJlZnMuc2V0RmxvYXRpbmcsXHJcbiAgICAgICAgdG9nZ2xlUmVmLFxyXG4gICAgICAgIHdpZHRoOiB3aWR0aFN0cmluZyxcclxuICAgIH0pLCBbXHJcbiAgICAgICAgYWN0aXZlSXRlbUluZGV4LFxyXG4gICAgICAgIGFsaWdubWVudCxcclxuICAgICAgICBjbG9zZURyb3Bkb3duLFxyXG4gICAgICAgIGRyb3Bkb3duQnV0dG9uSWQsXHJcbiAgICAgICAgZHJvcERpcmVjdGlvbixcclxuICAgICAgICBmbG9hdGluZ1N0eWxlcyxcclxuICAgICAgICBoYW5kbGVEcm9wZG93bkJsdXIsXHJcbiAgICAgICAgaXRlbVJlZkFycmF5LFxyXG4gICAgICAgIHdpZHRoLFxyXG4gICAgICAgIGlzT3BlbixcclxuICAgICAgICBpc0ludmVyc2UsXHJcbiAgICAgICAgbWF4SGVpZ2h0U3RyaW5nLFxyXG4gICAgICAgIG1lbnVSZWYsXHJcbiAgICAgICAgb3BlbkRyb3Bkb3duLFxyXG4gICAgICAgIHJlZ2lzdGVyRHJvcGRvd25NZW51SXRlbSxcclxuICAgICAgICBzZXRBY3RpdmVJdGVtSW5kZXgsXHJcbiAgICAgICAgc2V0SXNPcGVuLFxyXG4gICAgICAgIHJlZnMuc2V0UmVmZXJlbmNlLFxyXG4gICAgICAgIHJlZnMuc2V0RmxvYXRpbmcsXHJcbiAgICAgICAgdG9nZ2xlUmVmLFxyXG4gICAgICAgIHdpZHRoU3RyaW5nLFxyXG4gICAgXSk7XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRHJvcGRvd25Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBjb250ZXh0VmFsdWUgfSxcclxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KENvbnRhaW5lciwgT2JqZWN0LmFzc2lnbih7fSwgb3RoZXIsIHsgcmVmOiByZWYsIFwiZGF0YS10ZXN0aWRcIjogdGVzdElkLCBvbktleURvd246IGlzT3BlbiA/IGhhbmRsZUtleURvd24gOiBudWxsLCBvbkJsdXI6IGhhbmRsZURyb3Bkb3duQmx1ciB9KSwgY2hpbGRyZW4pKSk7XHJcbn0pO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1Ecm9wZG93bi5qcy5tYXAiXX0= */",
|
|
24899
|
+
styles: "display:inline-block;position:relative/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRyb3Bkb3duLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvQjZCIiwiZmlsZSI6IkRyb3Bkb3duLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcclxuaW1wb3J0IHsgYXV0b1VwZGF0ZSwgZmxpcCwgb2Zmc2V0LCB1c2VGbG9hdGluZywgfSBmcm9tICdAZmxvYXRpbmctdWkvcmVhY3QtZG9tJztcclxuaW1wb3J0IHsgdXNlRGVzY2VuZGFudHMgfSBmcm9tICcuLi8uLi9ob29rcy91c2VEZXNjZW5kYW50cyc7XHJcbmltcG9ydCB7IHVzZUlzSW52ZXJzZSB9IGZyb20gJy4uLy4uL2ludmVyc2UnO1xyXG5pbXBvcnQgeyBpc0VsZW1lbnRJbnRlcmFjdGl2ZSwgcmVzb2x2ZVByb3BzLCB1c2VGb3JrZWRSZWYsIHVzZUdlbmVyYXRlSWQsIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xyXG5pbXBvcnQgeyBCdXR0b25Hcm91cENvbnRleHQgfSBmcm9tICcuLi9CdXR0b25Hcm91cCc7XHJcbmV4cG9ydCB2YXIgRHJvcGRvd25Ecm9wRGlyZWN0aW9uO1xyXG4oZnVuY3Rpb24gKERyb3Bkb3duRHJvcERpcmVjdGlvbikge1xyXG4gICAgRHJvcGRvd25Ecm9wRGlyZWN0aW9uW1wiZG93blwiXSA9IFwiZG93blwiO1xyXG4gICAgRHJvcGRvd25Ecm9wRGlyZWN0aW9uW1wibGVmdFwiXSA9IFwibGVmdFwiO1xyXG4gICAgRHJvcGRvd25Ecm9wRGlyZWN0aW9uW1wicmlnaHRcIl0gPSBcInJpZ2h0XCI7XHJcbiAgICBEcm9wZG93bkRyb3BEaXJlY3Rpb25bXCJ1cFwiXSA9IFwidXBcIjtcclxufSkoRHJvcGRvd25Ecm9wRGlyZWN0aW9uIHx8IChEcm9wZG93bkRyb3BEaXJlY3Rpb24gPSB7fSkpO1xyXG5leHBvcnQgdmFyIERyb3Bkb3duQWxpZ25tZW50O1xyXG4oZnVuY3Rpb24gKERyb3Bkb3duQWxpZ25tZW50KSB7XHJcbiAgICBEcm9wZG93bkFsaWdubWVudFtcInN0YXJ0XCJdID0gXCJzdGFydFwiO1xyXG4gICAgRHJvcGRvd25BbGlnbm1lbnRbXCJlbmRcIl0gPSBcImVuZFwiO1xyXG59KShEcm9wZG93bkFsaWdubWVudCB8fCAoRHJvcGRvd25BbGlnbm1lbnQgPSB7fSkpO1xyXG5jb25zdCBDb250YWluZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5gO1xyXG5leHBvcnQgY29uc3QgRHJvcGRvd25Db250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dCh7XHJcbiAgICBpc09wZW46IGZhbHNlLFxyXG4gICAgcmVnaXN0ZXJEcm9wZG93bk1lbnVJdGVtOiAoZWxlbWVudHMsIGVsZW1lbnQpID0+IHsgfSxcclxuICAgIHNldElzT3BlbjogKCkgPT4gZmFsc2UsXHJcbn0pO1xyXG5leHBvcnQgY29uc3QgdXNlRHJvcGRvd25Db250ZXh0ID0gKCkgPT4gUmVhY3QudXNlQ29udGV4dChEcm9wZG93bkNvbnRleHQpO1xyXG5leHBvcnQgY29uc3QgRHJvcGRvd24gPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XHJcbiAgICBjb25zdCBjb250ZXh0UHJvcHMgPSBSZWFjdC51c2VDb250ZXh0KEJ1dHRvbkdyb3VwQ29udGV4dCk7XHJcbiAgICBjb25zdCByZXNvbHZlZFByb3BzID0gcmVzb2x2ZVByb3BzKGNvbnRleHRQcm9wcywgcHJvcHMpO1xyXG4gICAgY29uc3QgeyBhY3RpdmVJbmRleCwgYWxpZ25tZW50LCBjaGlsZHJlbiwgZHJvcERpcmVjdGlvbiwgbWF4SGVpZ2h0LCBvbkNsb3NlLCBvbk9wZW4sIHRlc3RJZCwgd2lkdGgsIC4uLm90aGVyIH0gPSByZXNvbHZlZFByb3BzO1xyXG4gICAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcclxuICAgIGNvbnN0IFthY3RpdmVJdGVtSW5kZXgsIHNldEFjdGl2ZUl0ZW1JbmRleF0gPSBSZWFjdC51c2VTdGF0ZShhY3RpdmVJbmRleCB8fCAtMSk7XHJcbiAgICBjb25zdCBvd25SZWYgPSBSZWFjdC51c2VSZWYoKTtcclxuICAgIGNvbnN0IHRvZ2dsZVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcclxuICAgIGNvbnN0IG1lbnVSZWYgPSBSZWFjdC51c2VSZWYoW10pO1xyXG4gICAgY29uc3QgZHJvcGRvd25CdXR0b25JZCA9IFJlYWN0LnVzZVJlZignJyk7XHJcbiAgICBjb25zdCByZWYgPSB1c2VGb3JrZWRSZWYoZm9yd2FyZGVkUmVmLCBvd25SZWYpO1xyXG4gICAgY29uc3QgW2l0ZW1SZWZBcnJheSwgcmVnaXN0ZXJEcm9wZG93bk1lbnVJdGVtXSA9IHVzZURlc2NlbmRhbnRzKCk7XHJcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIGlmIChhY3RpdmVJbmRleCA+PSAwKSB7XHJcbiAgICAgICAgICAgIHNldEFjdGl2ZUl0ZW1JbmRleChhY3RpdmVJbmRleCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2FjdGl2ZUluZGV4XSk7XHJcbiAgICBmdW5jdGlvbiBvcGVuRHJvcGRvd24oKSB7XHJcbiAgICAgICAgY29uc3QgW2ZpbHRlcmVkSXRlbXNdID0gZ2V0RmlsdGVyZWRJdGVtKCk7XHJcbiAgICAgICAgc2V0SXNPcGVuKHRydWUpO1xyXG4gICAgICAgIGlmIChmaWx0ZXJlZEl0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJlZEl0ZW1zWzBdPy5jdXJyZW50Py5mb2N1cygpO1xyXG4gICAgICAgICAgICB9LCAwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbWVudVJlZi5jdXJyZW50LmZvY3VzKCk7XHJcbiAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvbk9wZW4gJiYgdHlwZW9mIG9uT3BlbiA9PT0gJ2Z1bmN0aW9uJyAmJiBvbk9wZW4oKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGNsb3NlRHJvcGRvd24oZXZlbnQpIHtcclxuICAgICAgICBzZXRJc09wZW4oZmFsc2UpO1xyXG4gICAgICAgIGlmIChldmVudCAmJiBldmVudC50eXBlID09PSAnYmx1cicpIHtcclxuICAgICAgICAgICAgY29uc3QgcmVsYXRlZFRhcmdldCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQ7XHJcbiAgICAgICAgICAgIGlmICghaXNFbGVtZW50SW50ZXJhY3RpdmUocmVsYXRlZFRhcmdldCkpIHtcclxuICAgICAgICAgICAgICAgIHRvZ2dsZVJlZi5jdXJyZW50Py5mb2N1cygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG9uQ2xvc2UgJiYgdHlwZW9mIG9uQ2xvc2UgPT09ICdmdW5jdGlvbicgJiYgb25DbG9zZShldmVudCk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBnZXRGaWx0ZXJlZEl0ZW0oKSB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyZWRJdGVtcyA9IGl0ZW1SZWZBcnJheS5jdXJyZW50LmZpbHRlcihpdGVtUmVmID0+IGl0ZW1SZWYuY3VycmVudCk7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyZWRJdGVtSW5kZXggPSBmaWx0ZXJlZEl0ZW1zXHJcbiAgICAgICAgICAgIC5tYXAoZmlsdGVyZWRJdGVtID0+IGZpbHRlcmVkSXRlbS5jdXJyZW50KVxyXG4gICAgICAgICAgICAuaW5kZXhPZihkb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcclxuICAgICAgICByZXR1cm4gW2ZpbHRlcmVkSXRlbXMsIGZpbHRlcmVkSXRlbUluZGV4XTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGhhbmRsZUtleURvd24oZXZlbnQpIHtcclxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xyXG4gICAgICAgICAgICBldmVudC5uYXRpdmVFdmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGNsb3NlRHJvcGRvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICB0b2dnbGVSZWYuY3VycmVudD8uZm9jdXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcclxuICAgICAgICAgICAgY29uc3QgW2ZpbHRlcmVkSXRlbXMsIGZpbHRlcmVkSXRlbUluZGV4XSA9IGdldEZpbHRlcmVkSXRlbSgpO1xyXG4gICAgICAgICAgICBpZiAoZmlsdGVyZWRJdGVtcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBpZiAoZmlsdGVyZWRJdGVtSW5kZXggPT09IC0xIHx8XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJlZEl0ZW1JbmRleCA9PT0gZmlsdGVyZWRJdGVtcy5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJlZEl0ZW1zWzBdLmN1cnJlbnQuZm9jdXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGZpbHRlcmVkSXRlbXNbZmlsdGVyZWRJdGVtSW5kZXggKyAxXS5jdXJyZW50LmZvY3VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IFtmaWx0ZXJlZEl0ZW1zLCBmaWx0ZXJlZEl0ZW1JbmRleF0gPSBnZXRGaWx0ZXJlZEl0ZW0oKTtcclxuICAgICAgICAgICAgaWYgKGZpbHRlcmVkSXRlbXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgaWYgKGZpbHRlcmVkSXRlbUluZGV4ID09PSAtMSB8fCBmaWx0ZXJlZEl0ZW1JbmRleCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgZmlsdGVyZWRJdGVtc1tmaWx0ZXJlZEl0ZW1zLmxlbmd0aCAtIDFdLmN1cnJlbnQuZm9jdXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGZpbHRlcmVkSXRlbXNbZmlsdGVyZWRJdGVtSW5kZXggLSAxXS5jdXJyZW50LmZvY3VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBoYW5kbGVEcm9wZG93bkJsdXIoZXZlbnQpIHtcclxuICAgICAgICBjb25zdCB7IGN1cnJlbnRUYXJnZXQsIHJlbGF0ZWRUYXJnZXQgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGlzSW5NZW51ID0gcmVsYXRlZFRhcmdldCAmJiBjdXJyZW50VGFyZ2V0LmNvbnRhaW5zKHJlbGF0ZWRUYXJnZXQpO1xyXG4gICAgICAgIGlmICghaXNJbk1lbnUgJiYgaXNPcGVuKSB7XHJcbiAgICAgICAgICAgIGNsb3NlRHJvcGRvd24oZXZlbnQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IG1heEhlaWdodFN0cmluZyA9IHR5cGVvZiBtYXhIZWlnaHQgPT09ICdudW1iZXInID8gYCR7bWF4SGVpZ2h0fXB4YCA6IG1heEhlaWdodDtcclxuICAgIGNvbnN0IHdpZHRoU3RyaW5nID0gdHlwZW9mIHdpZHRoID09PSAnbnVtYmVyJyA/IGAke3dpZHRofXB4YCA6IHdpZHRoO1xyXG4gICAgY29uc3QgaXNJbnZlcnNlID0gdXNlSXNJbnZlcnNlKHJlc29sdmVkUHJvcHMuaXNJbnZlcnNlKTtcclxuICAgIGNvbnN0IFtwbGFjZW1lbnQsIHNldFBsYWNlbWVudF0gPSB1c2VTdGF0ZSgnYm90dG9tLXN0YXJ0Jyk7XHJcbiAgICBkcm9wZG93bkJ1dHRvbklkLmN1cnJlbnQgPSB1c2VHZW5lcmF0ZUlkKCk7XHJcbiAgICBjb25zdCBjaGFuZ2VQbGFjZW1lbnQgPSAoZHJvcERpcmVjdGlvbiA9IERyb3Bkb3duRHJvcERpcmVjdGlvbi5kb3duLCBhbGlnbm1lbnQgPSBEcm9wZG93bkFsaWdubWVudC5zdGFydCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHBsYWNlbWVudE1hcCA9IG5ldyBNYXAoW1xyXG4gICAgICAgICAgICBbJ3VwLXN0YXJ0JywgJ3RvcC1zdGFydCddLFxyXG4gICAgICAgICAgICBbJ3VwLWVuZCcsICd0b3AtZW5kJ10sXHJcbiAgICAgICAgICAgIFsncmlnaHQtc3RhcnQnLCAncmlnaHQtc3RhcnQnXSxcclxuICAgICAgICAgICAgWydyaWdodC1lbmQnLCAncmlnaHQtZW5kJ10sXHJcbiAgICAgICAgICAgIFsnZG93bi1lbmQnLCAnYm90dG9tLWVuZCddLFxyXG4gICAgICAgICAgICBbJ2xlZnQtc3RhcnQnLCAnbGVmdC1zdGFydCddLFxyXG4gICAgICAgICAgICBbJ2xlZnQtZW5kJywgJ2xlZnQtZW5kJ10sXHJcbiAgICAgICAgXSk7XHJcbiAgICAgICAgLy8gZHJvcERpcmVjdGlvbiAmIGFsaWdubWVudCBhcmUgZGVwcmVjYXRlZC5cclxuICAgICAgICAvLyB0aGlzIGZhbGxiYWNrIGNhbiBiZSByZW1vdmVkIHdoZW4gdGhlIHByb3BzIGFyZSBkZWxldGVkLlxyXG4gICAgICAgIGNvbnN0IGNvbnRlbnRQb3NpdGlvbiA9IGAke2Ryb3BEaXJlY3Rpb259LSR7YWxpZ25tZW50fWA7XHJcbiAgICAgICAgc2V0UGxhY2VtZW50KHBsYWNlbWVudE1hcC5nZXQoY29udGVudFBvc2l0aW9uKSA/PyAnYm90dG9tLXN0YXJ0Jyk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyByZWZzLCBmbG9hdGluZ1N0eWxlcywgZWxlbWVudHMsIHVwZGF0ZSB9ID0gdXNlRmxvYXRpbmcoe1xyXG4gICAgICAgIG1pZGRsZXdhcmU6IFtmbGlwKCksIG9mZnNldCgyKV0sXHJcbiAgICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXHJcbiAgICAgICAgd2hpbGVFbGVtZW50c01vdW50ZWQ6IGF1dG9VcGRhdGUsXHJcbiAgICB9KTtcclxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgY2hhbmdlUGxhY2VtZW50KGRyb3BEaXJlY3Rpb24sIGFsaWdubWVudCk7XHJcbiAgICB9LCBbZHJvcERpcmVjdGlvbiwgYWxpZ25tZW50XSk7XHJcbiAgICAvLyBOZWVkIGNsZWFudXAgc3RhdGUgdG8gYXZvaWQgbWVtb3J5IGxlYWtzXHJcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlZmVyZW5jZURyb3Bkb3duQnV0dG9uID0gZWxlbWVudHMucmVmZXJlbmNlO1xyXG4gICAgICAgIGNvbnN0IGZsb2F0aW5nRHJvcGRvd25Db250ZW50ID0gZWxlbWVudHMuZmxvYXRpbmc7XHJcbiAgICAgICAgaWYgKGlzT3BlbiAmJiByZWZlcmVuY2VEcm9wZG93bkJ1dHRvbiAmJiBmbG9hdGluZ0Ryb3Bkb3duQ29udGVudCkge1xyXG4gICAgICAgICAgICByZXR1cm4gYXV0b1VwZGF0ZShyZWZlcmVuY2VEcm9wZG93bkJ1dHRvbiwgZmxvYXRpbmdEcm9wZG93bkNvbnRlbnQsIHVwZGF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzT3BlbiwgZWxlbWVudHMsIHVwZGF0ZV0pO1xyXG4gICAgY29uc3QgY29udGV4dFZhbHVlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xyXG4gICAgICAgIGFjdGl2ZUl0ZW1JbmRleCxcclxuICAgICAgICBhbGlnbm1lbnQsXHJcbiAgICAgICAgY2xvc2VEcm9wZG93bixcclxuICAgICAgICBkcm9wZG93bkJ1dHRvbklkLFxyXG4gICAgICAgIGRyb3BEaXJlY3Rpb24sXHJcbiAgICAgICAgZmxvYXRpbmdTdHlsZXMsXHJcbiAgICAgICAgaGFuZGxlRHJvcGRvd25CbHVyLFxyXG4gICAgICAgIGl0ZW1SZWZBcnJheSxcclxuICAgICAgICBpc0ZpeGVkV2lkdGg6ICEhd2lkdGgsXHJcbiAgICAgICAgaXNPcGVuLFxyXG4gICAgICAgIGlzSW52ZXJzZSxcclxuICAgICAgICBtYXhIZWlnaHQ6IG1heEhlaWdodFN0cmluZyxcclxuICAgICAgICBtZW51UmVmLFxyXG4gICAgICAgIG9wZW5Ecm9wZG93bixcclxuICAgICAgICByZWdpc3RlckRyb3Bkb3duTWVudUl0ZW0sXHJcbiAgICAgICAgc2V0QWN0aXZlSXRlbUluZGV4LFxyXG4gICAgICAgIHNldElzT3BlbixcclxuICAgICAgICBzZXRSZWZlcmVuY2U6IHJlZnMuc2V0UmVmZXJlbmNlLFxyXG4gICAgICAgIHNldEZsb2F0aW5nOiByZWZzLnNldEZsb2F0aW5nLFxyXG4gICAgICAgIHRvZ2dsZVJlZixcclxuICAgICAgICB3aWR0aDogd2lkdGhTdHJpbmcsXHJcbiAgICB9KSwgW1xyXG4gICAgICAgIGFjdGl2ZUl0ZW1JbmRleCxcclxuICAgICAgICBhbGlnbm1lbnQsXHJcbiAgICAgICAgY2xvc2VEcm9wZG93bixcclxuICAgICAgICBkcm9wZG93bkJ1dHRvbklkLFxyXG4gICAgICAgIGRyb3BEaXJlY3Rpb24sXHJcbiAgICAgICAgZmxvYXRpbmdTdHlsZXMsXHJcbiAgICAgICAgaGFuZGxlRHJvcGRvd25CbHVyLFxyXG4gICAgICAgIGl0ZW1SZWZBcnJheSxcclxuICAgICAgICB3aWR0aCxcclxuICAgICAgICBpc09wZW4sXHJcbiAgICAgICAgaXNJbnZlcnNlLFxyXG4gICAgICAgIG1heEhlaWdodFN0cmluZyxcclxuICAgICAgICBtZW51UmVmLFxyXG4gICAgICAgIG9wZW5Ecm9wZG93bixcclxuICAgICAgICByZWdpc3RlckRyb3Bkb3duTWVudUl0ZW0sXHJcbiAgICAgICAgc2V0QWN0aXZlSXRlbUluZGV4LFxyXG4gICAgICAgIHNldElzT3BlbixcclxuICAgICAgICByZWZzLnNldFJlZmVyZW5jZSxcclxuICAgICAgICByZWZzLnNldEZsb2F0aW5nLFxyXG4gICAgICAgIHRvZ2dsZVJlZixcclxuICAgICAgICB3aWR0aFN0cmluZyxcclxuICAgIF0pO1xyXG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KERyb3Bkb3duQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogY29udGV4dFZhbHVlIH0sXHJcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChDb250YWluZXIsIE9iamVjdC5hc3NpZ24oe30sIG90aGVyLCB7IHJlZjogcmVmLCBcImRhdGEtdGVzdGlkXCI6IHRlc3RJZCwgb25LZXlEb3duOiBpc09wZW4gPyBoYW5kbGVLZXlEb3duIDogbnVsbCwgb25CbHVyOiBoYW5kbGVEcm9wZG93bkJsdXIgfSksIGNoaWxkcmVuKSkpO1xyXG59KTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RHJvcGRvd24uanMubWFwIl19 */",
|
|
24900
24900
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__$m
|
|
24901
24901
|
});
|
|
24902
24902
|
var DropdownContext = /*#__PURE__*/React__default.createContext({
|
|
@@ -24978,6 +24978,7 @@
|
|
|
24978
24978
|
if (event.key === 'Escape') {
|
|
24979
24979
|
var _toggleRef$current2;
|
|
24980
24980
|
event.nativeEvent.stopImmediatePropagation();
|
|
24981
|
+
event.stopPropagation();
|
|
24981
24982
|
closeDropdown(event);
|
|
24982
24983
|
(_toggleRef$current2 = toggleRef.current) == null || _toggleRef$current2.focus();
|
|
24983
24984
|
}
|
|
@@ -25570,8 +25571,8 @@
|
|
|
25570
25571
|
expandedIndex = _React$useContext.expandedIndex,
|
|
25571
25572
|
isMulti = _React$useContext.isMulti;
|
|
25572
25573
|
var idPrefix = useGenerateId(index.toString());
|
|
25573
|
-
var buttonId = idPrefix + "_btn";
|
|
25574
|
-
var panelId = idPrefix + "_panel";
|
|
25574
|
+
var buttonId = "accordion_" + idPrefix + "_btn";
|
|
25575
|
+
var panelId = "accordion_" + idPrefix + "_panel";
|
|
25575
25576
|
React__default.useEffect(function () {
|
|
25576
25577
|
var newIsExpanded = isMulti ? Array.isArray(expandedIndex) && expandedIndex.includes(index) : expandedIndex === index;
|
|
25577
25578
|
setIsExpanded(newIsExpanded);
|
|
@@ -26394,7 +26395,7 @@
|
|
|
26394
26395
|
return props.theme.bodyFont;
|
|
26395
26396
|
}, ";padding:", function (props) {
|
|
26396
26397
|
return props.theme.spaceScale.spacing03 + " " + props.theme.spaceScale.spacing05 + " " + props.theme.spaceScale.spacing04;
|
|
26397
|
-
}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFjY29yZGlvblBhbmVsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNK0IiLCJmaWxlIjoiQWNjb3JkaW9uUGFuZWwudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IEFjY29yZGlvbkl0ZW1Db250ZXh0IH0gZnJvbSAnLi91c2VBY2NvcmRpb25JdGVtJztcclxuaW1wb3J0IHsgdXNlSXNJbnZlcnNlIH0gZnJvbSAnLi4vLi4vaW52ZXJzZSc7XHJcbmltcG9ydCB7IFRoZW1lQ29udGV4dCB9IGZyb20gJy4uLy4uL3RoZW1lL1RoZW1lQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyYW5zaXRpb24gfSBmcm9tICcuLi9UcmFuc2l0aW9uJztcclxuY29uc3QgU3R5bGVkUGFuZWwgPSBzdHlsZWQuZGl2IGBcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLmlzSW52ZXJzZVxyXG4gICAgPyBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDEwMFxyXG4gICAgOiBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDcwMH07XG4gIGZvbnQtZmFtaWx5OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmJvZHlGb250fTtcbiAgcGFkZGluZzogJHtwcm9wcyA9PiBgJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM30gJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX0gJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNH1gfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBBY2NvcmRpb25QYW5lbCA9IFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCByZWYpID0+
|
|
26398
|
+
}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFjY29yZGlvblBhbmVsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNK0IiLCJmaWxlIjoiQWNjb3JkaW9uUGFuZWwudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IEFjY29yZGlvbkl0ZW1Db250ZXh0IH0gZnJvbSAnLi91c2VBY2NvcmRpb25JdGVtJztcclxuaW1wb3J0IHsgdXNlSXNJbnZlcnNlIH0gZnJvbSAnLi4vLi4vaW52ZXJzZSc7XHJcbmltcG9ydCB7IFRoZW1lQ29udGV4dCB9IGZyb20gJy4uLy4uL3RoZW1lL1RoZW1lQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyYW5zaXRpb24gfSBmcm9tICcuLi9UcmFuc2l0aW9uJztcclxuY29uc3QgU3R5bGVkUGFuZWwgPSBzdHlsZWQuZGl2IGBcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLmlzSW52ZXJzZVxyXG4gICAgPyBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDEwMFxyXG4gICAgOiBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDcwMH07XG4gIGZvbnQtZmFtaWx5OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmJvZHlGb250fTtcbiAgcGFkZGluZzogJHtwcm9wcyA9PiBgJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM30gJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX0gJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNH1gfTtcbmA7XHJcbmV4cG9ydCBjb25zdCBBY2NvcmRpb25QYW5lbCA9IFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCByZWYpID0+IHtcclxuICAgIGNvbnN0IHsgY2hpbGRyZW4sIHRlc3RJZCwgaXNJbnZlcnNlOiBpc0ludmVyc2VQcm9wLCAuLi5yZXN0IH0gPSBwcm9wcztcclxuICAgIGNvbnN0IHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xyXG4gICAgY29uc3QgaXNJbnZlcnNlID0gdXNlSXNJbnZlcnNlKGlzSW52ZXJzZVByb3ApO1xyXG4gICAgY29uc3QgeyBidXR0b25JZCwgaXNFeHBhbmRlZCwgcGFuZWxJZCB9ID0gUmVhY3QudXNlQ29udGV4dChBY2NvcmRpb25JdGVtQ29udGV4dCk7XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJhbnNpdGlvbiwgeyBpc09wZW46IGlzRXhwYW5kZWQsIGNvbGxhcHNlOiB0cnVlLCB1bm1vdW50T25FeGl0OiB0cnVlIH0sXHJcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRQYW5lbCwgT2JqZWN0LmFzc2lnbih7fSwgcmVzdCwgeyBcImFyaWEtaGlkZGVuXCI6ICFpc0V4cGFuZGVkLCBcImFyaWEtbGFiZWxsZWRieVwiOiBidXR0b25JZCwgXCJkYXRhLXRlc3RpZFwiOiB0ZXN0SWQsIGlkOiBwYW5lbElkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgcmVmOiByZWYsIHRoZW1lOiB0aGVtZSwgcm9sZTogXCJyZWdpb25cIiB9KSwgY2hpbGRyZW4pKSk7XHJcbn0pO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1BY2NvcmRpb25QYW5lbC5qcy5tYXAiXX0= */"));
|
|
26398
26399
|
var AccordionPanel = /*#__PURE__*/React__default.forwardRef(function (props, ref) {
|
|
26399
26400
|
var children = props.children,
|
|
26400
26401
|
testId = props.testId,
|
|
@@ -26417,7 +26418,8 @@
|
|
|
26417
26418
|
id: panelId,
|
|
26418
26419
|
isInverse: isInverse,
|
|
26419
26420
|
ref: ref,
|
|
26420
|
-
theme: theme
|
|
26421
|
+
theme: theme,
|
|
26422
|
+
role: "region"
|
|
26421
26423
|
}), children));
|
|
26422
26424
|
});
|
|
26423
26425
|
|
|
@@ -29365,7 +29367,7 @@
|
|
|
29365
29367
|
}, ";padding-right:", function (props) {
|
|
29366
29368
|
return props.theme.spaceScale.spacing02;
|
|
29367
29369
|
}, ";", function (props) {
|
|
29368
|
-
return props.selected && /*#__PURE__*/react.css("&:before{position:absolute;background-color:", props.isInverse ? props.theme.colors.tertiary500 : props.theme.colors.primary500, ";block-size:100%;content:'';inline-size:", props.theme.spaceScale.spacing02, ";inset-block-start:0;inset-inline-start:0;};label:StyledTreeItem;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvRVEiLCJmaWxlIjoiVHJlZUl0ZW0udHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XHJcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcclxuaW1wb3J0IHsgdHJhbnNwYXJlbnRpemUgfSBmcm9tICdwb2xpc2hlZCc7XHJcbmltcG9ydCB7IEFydGljbGVJY29uLCBDaGV2cm9uUmlnaHRJY29uLCBFeHBhbmRNb3JlSWNvbiwgRm9sZGVySWNvbiwgfSBmcm9tICdyZWFjdC1tYWdtYS1pY29ucyc7XHJcbmltcG9ydCB7IFRyZWVJdGVtQ29udGV4dCB9IGZyb20gJy4vVHJlZUl0ZW1Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0IH0gZnJvbSAnLi9UcmVlSXRlbUhpZXJhcmNoeUNvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0NvbmZpZ0NvbnRleHQgfSBmcm9tICcuL1RyZWVWaWV3Q29uZmlnQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdFeHBhbnNpb25Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld1NlbGVjdGlvbkNvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld1NlbGVjdGFibGUgfSBmcm9tICcuL3R5cGVzJztcclxuaW1wb3J0IHsgY2hlY2tlZFN0YXR1c1RvQm9vbGVhbiwgdXNlVHJlZUl0ZW0sIH0gZnJvbSAnLi91c2VUcmVlSXRlbSc7XHJcbmltcG9ydCB7IGNhbGN1bGF0ZU9mZnNldCwgZ2V0VHJlZUl0ZW1MYWJlbENvbG9yLCBnZXRUcmVlSXRlbVdyYXBwZXJDdXJzb3IsIFRyZWVOb2RlVHlwZSwgfSBmcm9tICcuL3V0aWxzJztcclxuaW1wb3J0IHsgSTE4bkNvbnRleHQgfSBmcm9tICcuLi8uLic7XHJcbmltcG9ydCB1c2VEZXZpY2VEZXRlY3QgZnJvbSAnLi4vLi4vaG9va3MvdXNlRGV2aWNlRGV0ZWN0JztcclxuaW1wb3J0IHsgdXNlRm9jdXNMb2NrIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlRm9jdXNMb2NrJztcclxuaW1wb3J0IHsgdXNlSXNJbnZlcnNlIH0gZnJvbSAnLi4vLi4vaW52ZXJzZSc7XHJcbmltcG9ydCB7IFRoZW1lQ29udGV4dCB9IGZyb20gJy4uLy4uL3RoZW1lL1RoZW1lQ29udGV4dCc7XHJcbmltcG9ydCB7IG1lcmdlUmVmcyB9IGZyb20gJy4uLy4uL3V0aWxzJztcclxuaW1wb3J0IHsgQW5ub3VuY2UgfSBmcm9tICcuLi9Bbm5vdW5jZSc7XHJcbmltcG9ydCB7IENoZWNrYm94IH0gZnJvbSAnLi4vQ2hlY2tib3gnO1xyXG5pbXBvcnQgeyBJbmRldGVybWluYXRlQ2hlY2tib3gsIEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cywgfSBmcm9tICcuLi9JbmRldGVybWluYXRlQ2hlY2tib3gnO1xyXG5pbXBvcnQgeyBUcmFuc2l0aW9uIH0gZnJvbSAnLi4vVHJhbnNpdGlvbic7XHJcbmltcG9ydCB7IFZpc3VhbGx5SGlkZGVuIH0gZnJvbSAnLi4vVmlzdWFsbHlIaWRkZW4nO1xyXG5jb25zdCBTdHlsZWRUcmVlSXRlbSA9IHN0eWxlZC5saSBgXG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLmlzSW52ZXJzZVxyXG4gICAgPyBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDEwMFxyXG4gICAgOiBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDcwMH07XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgY3Vyc29yOiAke3Byb3BzID0+IGdldFRyZWVJdGVtV3JhcHBlckN1cnNvcihwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy5zZWxlY3RhYmxlVHlwZSwgcHJvcHMubm9kZVR5cGUpfTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIGZhbHNlLCBmYWxzZSwgcHJvcHMuaXNWaXJ0dWFsaXplZCl9O1xuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG5cbiAgICAmID4gKjpmaXJzdC1jaGlsZCB7XG4gICAgICAmOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICBvdXRsaW5lOiAycHggc29saWRcbiAgICAgICAgICAke3Byb3BzID0+IHByb3BzLmlzSW52ZXJzZVxyXG4gICAgPyBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXNJbnZlcnNlXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5mb2N1c307XG4gICAgICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICA+IGRpdjpmaXJzdC1vZi10eXBlIHtcbiAgICBiYWNrZ3JvdW5kOiAke3Byb3BzID0+IHByb3BzLnNlbGVjdGVkICYmIHByb3BzLmlzSW52ZXJzZVxyXG4gICAgPyB0cmFuc3BhcmVudGl6ZSgwLjcsIHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsOTAwKVxyXG4gICAgOiBwcm9wcy5zZWxlY3RlZCAmJlxyXG4gICAgICAgIHRyYW5zcGFyZW50aXplKDAuOTIsIHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsOTAwKX07XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6ICR7cHJvcHMgPT4gY2FsY3VsYXRlT2Zmc2V0KHByb3BzLm5vZGVUeXBlLCBwcm9wcy5kZXB0aCwgdHJ1ZSwgZmFsc2UsIHByb3BzLmlzVmlydHVhbGl6ZWQpfTtcbiAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIHRydWUsIHByb3BzLmlzVmlydHVhbGl6ZWQpfTtcbiAgICBwYWRkaW5nLWJsb2NrLWVuZDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1ibG9jay1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG5cbiAgICAke3Byb3BzID0+IHByb3BzLnNlbGVjdGVkICYmXHJcbiAgICBjc3MgYFxuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMuaXNJbnZlcnNlXHJcbiAgICAgICAgPyBwcm9wcy50aGVtZS5jb2xvcnMudGVydGlhcnk1MDBcclxuICAgICAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5wcmltYXJ5NTAwfTtcbiAgICAgICAgICBibG9jay1zaXplOiAxMDAlO1xuICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgIGlubGluZS1zaXplOiAke3Byb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAyfTtcbiAgICAgICAgICBpbnNldC1ibG9jay1zdGFydDogMDtcbiAgICAgICAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDA7XG4gICAgICAgIH1cbiAgICAgIGB9XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAke3Byb3BzID0+IGdldEhvdmVyQmFja2dyb3VuZCh7XHJcbiAgICBpc0Rpc2FibGVkOiBwcm9wcy5pc0Rpc2FibGVkLFxyXG4gICAgaG92ZXJDb2xvcjogcHJvcHMuaG92ZXJDb2xvcixcclxuICAgIGlzSW52ZXJzZTogcHJvcHMuaXNJbnZlcnNlLFxyXG4gICAgdGhlbWU6IHByb3BzLnRoZW1lLFxyXG59KX07XG4gICAgfVxuICB9XG5gO1xyXG5mdW5jdGlvbiBnZXRIb3ZlckJhY2tncm91bmQoeyBpc0Rpc2FibGVkLCBob3ZlckNvbG9yLCBpc0ludmVyc2UsIHRoZW1lIH0pIHtcclxuICAgIGlmIChpc0Rpc2FibGVkKVxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICBpZiAoaG92ZXJDb2xvcilcclxuICAgICAgICByZXR1cm4gaG92ZXJDb2xvcjtcclxuICAgIGNvbnN0IHRyYW5zcGFyZW5jeSA9IGlzSW52ZXJzZSA/IDAuOCA6IDAuOTU7XHJcbiAgICByZXR1cm4gdHJhbnNwYXJlbnRpemUodHJhbnNwYXJlbmN5LCB0aGVtZS5jb2xvcnMubmV1dHJhbDkwMCk7XHJcbn1cclxuY29uc3QgSWNvbldyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGNvbG9yOiAke3Byb3BzID0+IGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIG1hcmdpbi1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM307XG4gIG1hcmdpbi1sZWZ0OiAwO1xuXG4gIHN2ZyB7XG4gICAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaWNvblNpemVzLm1lZGl1bX1weDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB9XG5gO1xyXG5jb25zdCBTdHlsZWRMYWJlbFdyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICB3aWR0aDogMTAwJTtcbmA7XHJcbmNvbnN0IFN0eWxlZEV4cGFuZFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5jb2xvciB8fFxyXG4gICAgZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgd2lkdGg6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG4gIGhlaWdodDogJHsoeyBzaXplLCB0aGVtZSB9KSA9PiBzaXplICE9PSB1bmRlZmluZWQgPyBgJHtzaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fTtcbmA7XHJcbmNvbnN0IEd1aWRlTGluZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwOH07XG4gIGJvdHRvbTogMDtcbiAgaW5zZXQtaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IHByb3BzLmd1aWRlTGluZUxlZnR9O1xuICB3aWR0aDogMDtcbiAgYm9yZGVyLWlubGluZS1zdGFydDogMXB4IHNvbGlkXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDEwMClcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwzMDB9O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMTtcbmA7XHJcbmNvbnN0IFZpcnR1YWxpemVkR3VpZGVMaW5lID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBib3R0b206IDA7XG4gIHdpZHRoOiAwO1xuICBib3JkZXItaW5saW5lLXN0YXJ0OiAxcHggc29saWRcbiAgICAke3Byb3BzID0+IHByb3BzLmlzSW52ZXJzZVxyXG4gICAgPyB0cmFuc3BhcmVudGl6ZSgwLjcsIHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMTAwKVxyXG4gICAgOiBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDMwMH07XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB6LWluZGV4OiAxO1xuYDtcclxuY29uc3QgU3R5bGVkQ2hlY2tib3hXcmFwcGVyID0gc3R5bGVkLmRpdiBgXG4gIG1hcmdpbi1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM307XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGRpc3BsYXk6ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2ZsZXgnIDogJ2lubGluZS1mbGV4Jyl9O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB3aWR0aDogJHtwcm9wcyA9PiBgY2FsYygxMDAlIC0gJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM30pYH07XG5gO1xyXG5jb25zdCBTdHlsZWRJdGVtV3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogJHtwcm9wcyA9PiAocHJvcHMuaGFzQWRkaXRpb25hbENvbnRlbnQgPyAnY29sdW1uJyA6ICdyb3cnKX07XG4gIGFsaWduLWl0ZW1zOiAke3Byb3BzID0+IChwcm9wcy5oYXNDdXN0b21JY29uU2l6ZSA/ICdjZW50ZXInIDogJ2ZsZXgtc3RhcnQnKX07XG4gIGN1cnNvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbVdyYXBwZXJDdXJzb3IocHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMuc2VsZWN0YWJsZSwgcHJvcHMubm9kZVR5cGUpfTtcbmA7XHJcbmNvbnN0IEFkZGl0aW9uYWxDb250ZW50V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tYm90dG9tOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA1fTtcbmA7XHJcbmV4cG9ydCBjb25zdCBUcmVlSXRlbUNvbXBvbmVudCA9IFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpID0+IHtcclxuICAgIGNvbnN0IHsgYWRkaXRpb25hbENvbnRlbnQsIGNoaWxkcmVuLCBob3ZlckNvbG9yLCBpY29uLCBpbmRleDogaW5kZXhQcm9wLCBsYWJlbCwgbGFiZWxTdHlsZSwgc3R5bGUsIHRlc3RJZCwgdG9wTGV2ZWw6IHRvcExldmVsUHJvcCwgdHJlZUl0ZW1TdHlsZXMsIC4uLnJlc3QgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgdGhlbWUgPSBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XHJcbiAgICBjb25zdCBpc0ludmVyc2UgPSB1c2VJc0ludmVyc2UoKTtcclxuICAgIC8vIFJlYWQgaGllcmFyY2h5IGluZm9ybWF0aW9uIGZyb20gY29udGV4dCAocmVkdWNlcyBjbG9uZUVsZW1lbnQgb3ZlcmhlYWQpXHJcbiAgICBjb25zdCBoaWVyYXJjaHlDb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChUcmVlSXRlbUhpZXJhcmNoeUNvbnRleHQpO1xyXG4gICAgLy8gVXNlIGNvbnRleHQgdmFsdWVzIGlmIHByb3BzIGFyZSBub3QgcHJvdmlkZWQgKGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KVxyXG4gICAgY29uc3QgaW5kZXggPSBpbmRleFByb3AgIT09IHVuZGVmaW5lZCA/IGluZGV4UHJvcCA6IGhpZXJhcmNoeUNvbnRleHQuaW5kZXg7XHJcbiAgICBjb25zdCB0b3BMZXZlbCA9IHRvcExldmVsUHJvcCAhPT0gdW5kZWZpbmVkID8gdG9wTGV2ZWxQcm9wIDogaGllcmFyY2h5Q29udGV4dC5pc1RvcExldmVsO1xyXG4gICAgLy8gQ29uc3VtZSBzcGxpdCBjb250ZXh0cyBmb3IgcmVkdWNlZCByZS1yZW5kZXIgc2NvcGVcclxuICAgIGNvbnN0IHsgaXRlbVRvRm9jdXMgfSA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0KTtcclxuICAgIGNvbnN0IHsgaGFuZGxlRXhwYW5kZWRDaGFuZ2UgfSA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZVZpZXdFeHBhbnNpb25Db250ZXh0KTtcclxuICAgIGNvbnN0IHsgZXhwYW5kSWNvblN0eWxlcywgaGFzR3VpZGVMaW5lcywgaGFzSWNvbnMsIGlzVG9wTGV2ZWxTZWxlY3RhYmxlLCBzZWxlY3RhYmxlLCBzZWxlY3RQYXJlbnRzID0gdHJ1ZSwgfSA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZVZpZXdDb25maWdDb250ZXh0KTtcclxuICAgIC8vIFBhc3MgdGhlIHJlc29sdmVkIHZhbHVlcyB0byB1c2VUcmVlSXRlbVxyXG4gICAgY29uc3QgcHJvcHNXaXRoSGllcmFyY2h5ID0ge1xyXG4gICAgICAgIC4uLnByb3BzLFxyXG4gICAgICAgIGluZGV4LFxyXG4gICAgICAgIHRvcExldmVsLFxyXG4gICAgICAgIGl0ZW1EZXB0aDogaGllcmFyY2h5Q29udGV4dC5kZXB0aCxcclxuICAgICAgICBwYXJlbnREZXB0aDogaGllcmFyY2h5Q29udGV4dC5wYXJlbnREZXB0aCxcclxuICAgIH07XHJcbiAgICBjb25zdCB7IGNvbnRleHRWYWx1ZSwgaGFuZGxlQ2xpY2ssIGhhbmRsZUtleURvd24gfSA9IHVzZVRyZWVJdGVtKHByb3BzV2l0aEhpZXJhcmNoeSwgZm9yd2FyZGVkUmVmKTtcclxuICAgIGNvbnN0IHsgaXNEaXNhYmxlZCB9ID0gY29udGV4dFZhbHVlO1xyXG4gICAgY29uc3QgeyBpc01hY09TIH0gPSB1c2VEZXZpY2VEZXRlY3QoKTtcclxuICAgIGNvbnN0IGkxOG4gPSBSZWFjdC51c2VDb250ZXh0KEkxOG5Db250ZXh0KTtcclxuICAgIGNvbnN0IHsgY2hlY2tib3hDaGFuZ2VIYW5kbGVyLCBjaGVja2VkU3RhdHVzLCBleHBhbmRlZCwgaGFzT3duVHJlZUl0ZW1zLCBpdGVtRGVwdGgsIGl0ZW1JZCwgcmVmLCBzZWxlY3RlZEl0ZW1zLCB9ID0gY29udGV4dFZhbHVlO1xyXG4gICAgY29uc3Qgbm9kZVR5cGUgPSBoYXNPd25UcmVlSXRlbXMgPyBUcmVlTm9kZVR5cGUuYnJhbmNoIDogVHJlZU5vZGVUeXBlLmxlYWY7XHJcbiAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUuc2luZ2xlXHJcbiAgICAgICAgPyBzZWxlY3RlZEl0ZW1zPy5bMF0/Lml0ZW1JZCA9PT0gaXRlbUlkXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgYXJpYUNoZWNrZWRWYWx1ZSA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aVxyXG4gICAgICAgID8gY2hlY2tlZFN0YXR1cyA9PT0gSW5kZXRlcm1pbmF0ZUNoZWNrYm94U3RhdHVzLmluZGV0ZXJtaW5hdGVcclxuICAgICAgICAgICAgPyAnbWl4ZWQnXHJcbiAgICAgICAgICAgIDogY2hlY2tlZFN0YXR1cyA9PT0gSW5kZXRlcm1pbmF0ZUNoZWNrYm94U3RhdHVzLmNoZWNrZWRcclxuICAgICAgICA6IG51bGw7XHJcbiAgICBjb25zdCBbaXNJbnNpZGVUcmVlSXRlbSwgc2V0SXNJbnNpZGVUcmVlSXRlbV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XHJcbiAgICBjb25zdCB0cmVlSXRlbVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcclxuICAgIGNvbnN0IGZvY3VzVHJhcEVsZW1lbnQgPSB1c2VGb2N1c0xvY2soaXNJbnNpZGVUcmVlSXRlbSk7XHJcbiAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzID0gJ2J1dHRvbiwgW3JvbGU9XCJidXR0b25cIl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBhW2hyZWZdLCBbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXg9XCItMVwiXSknO1xyXG4gICAgY29uc3QgZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyA9IFJlYWN0LnVzZUNhbGxiYWNrKChjb250YWluZXIsIHNlbGVjdG9yKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKS5maWx0ZXIoZWwgPT4gIWVsLmhhc0F0dHJpYnV0ZSgndGFiaW5kZXgnKSB8fFxyXG4gICAgICAgICAgICAoZWwudGFiSW5kZXggIT09IHVuZGVmaW5lZCAmJiBlbC50YWJJbmRleCA+PSAwKSk7XHJcbiAgICB9LCBbXSk7XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIHdpdGhpbiB0aGUgbGFiZWwgYW5kIGFkZGl0aW9uYWwgY29udGVudCBvZiBhIHRyZWUgaXRlbS5cclxuICAgICAqXHJcbiAgICAgKiBZb3UgY2FuIG5hdmlnYXRlIHRocm91Z2ggaW50ZXJhY3RpdmUgZWxlbWVudHMgdXNpbmcgdGhlIGBUYWJgIGtleSwgYWN0aXZhdGUgdGhlbSB3aXRoIGBFbnRlcmAgb3IgYFNwYWNlYCxcclxuICAgICAqIGFuZCBleGl0IG91dHNpZGUgYW5kIGZvY3VzIHRoZSB3aG9sZSB0cmVlIGl0ZW0gd2l0aCBgRXNjYXBlYC5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3QgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24gPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBjb25zdCB7IGtleSwgdGFyZ2V0LCBjdXJyZW50VGFyZ2V0LCBzaGlmdEtleSB9ID0gZXZlbnQ7XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSB0YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaXNFbnRlciA9IGtleSA9PT0gJ0VudGVyJztcclxuICAgICAgICBjb25zdCBpc1NwYWNlID0ga2V5ID09PSAnICc7XHJcbiAgICAgICAgY29uc3QgaXNFc2NhcGUgPSBrZXkgPT09ICdFc2NhcGUnO1xyXG4gICAgICAgIGNvbnN0IGlzVGFiID0ga2V5ID09PSAnVGFiJztcclxuICAgICAgICBjb25zdCBpc0FjdGl2YXRpb25LZXkgPSBpc0VudGVyIHx8IGlzU3BhY2U7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdChpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAvLyBJZiB0aGUga2V5IGlzIGBUYWJgLCB3ZSBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzVGFiICYmIGlzSW5zaWRlVHJlZUl0ZW0pIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50c0xpc3QgPSBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzKGN1cnJlbnRUYXJnZXQsIGludGVyYWN0aXZlRWxlbWVudHMpO1xyXG4gICAgICAgICAgICAvLyBGaWx0ZXIgbGlzdCBvZiBpbnRlcmFjdGl2ZSBlbGVtZW50cyB3aGljaCBhcmUgb25seSBpbmNsdWRlZCBmb3IgY3VycmVudCB0cmVlIGl0ZW1cclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cyA9IGludGVyYWN0aXZlRWxlbWVudHNMaXN0LmZpbHRlcihlbCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjbG9zZXN0VHJlZUl0ZW0gPSBlbC5jbG9zZXN0KCdbcm9sZT1cInRyZWVpdGVtXCJdJyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xvc2VzdFRyZWVJdGVtID09PSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5pbmRleE9mKGN1cnJlbnRFbGVtZW50KTtcclxuICAgICAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gc2hpZnRLZXkgPyAtMSA6IDE7XHJcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5sZW5ndGg7XHJcbiAgICAgICAgICAgIGNvbnN0IG5leHRJbmRleCA9IChjdXJyZW50SW5kZXggKyBkaXJlY3Rpb24gKyB0b3RhbCkgJSB0b3RhbDtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudFRvRm9jdXMgPSBjdXJyZW50VHJlZUl0ZW1JbnRlcmFjdGl2ZUVsZW1lbnRzW25leHRJbmRleF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBlbGVtZW50VG9Gb2N1cy5mb2N1cygpLCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFByZXNzaW5nIGBFbnRlcmAgb3IgYFNwYWNlYCBvbiBhbiBpbnRlcmFjdGl2ZSBlbGVtZW50IHdpbGwgdHJpZ2dlciBpdHMgY2xpY2sgZXZlbnRcclxuICAgICAgICBpZiAoaXNBY3RpdmF0aW9uS2V5ICYmIGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gTW92ZXMgZm9jdXMgb3V0c2lkZSB0aGUgdHJlZSBpdGVtIGFuZCBmb2N1c2VzIHRoZSB0cmVlIGl0ZW0gaXRzZWxmIHdoZW4gYEVzY2FwZWAgaXMgcHJlc3NlZFxyXG4gICAgICAgIGlmIChpc0VzY2FwZSkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgc2V0SXNJbnNpZGVUcmVlSXRlbShmYWxzZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHRyZWVJdGVtTm9kZSA9IHRyZWVJdGVtUmVmLmN1cnJlbnQ7XHJcbiAgICAgICAgICAgIGlmICh0cmVlSXRlbU5vZGUpIHtcclxuICAgICAgICAgICAgICAgIHRyZWVJdGVtTm9kZS5mb2N1cygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9LCBbaXNJbnNpZGVUcmVlSXRlbV0pO1xyXG4gICAgY29uc3QgZGVmYXVsdEljb24gPSBSZWFjdC51c2VNZW1vKCgpID0+IG5vZGVUeXBlID09PSBUcmVlTm9kZVR5cGUuYnJhbmNoID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9sZGVySWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUgfSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQXJ0aWNsZUljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlIH0pKSwgW25vZGVUeXBlXSk7XHJcbiAgICAvLyBNZW1vaXNlIHRoZSBsYWJlbCBKU1ggc28gdGhlIGBjaGVja2JveFByb3BzYCBtZW1vIGJlbG93IGFjdHVhbGx5IGhhc1xyXG4gICAgLy8gYSBzdGFibGUgYGxhYmVsVGV4dGAgcmVmZXJlbmNlIGJldHdlZW4gcmVuZGVycy4gUHJldmlvdXNseSB0aGlzXHJcbiAgICAvLyBlbGVtZW50IHdhcyByZS1jcmVhdGVkIG9uIGV2ZXJ5IHJlbmRlciwgd2hpY2ggZm9yY2VkXHJcbiAgICAvLyBgY2hlY2tib3hQcm9wc2AgdG8gYWxzbyBiZSByZS1jcmVhdGVkIGFuZCBhbnkgZnV0dXJlIFJlYWN0Lm1lbW8gb25cclxuICAgIC8vIENoZWNrYm94L0luZGV0ZXJtaW5hdGVDaGVja2JveCB3b3VsZCBhbHdheXMgYmFpbCBvdXQuXHJcbiAgICBjb25zdCBsYWJlbFRleHQgPSBSZWFjdC51c2VNZW1vKCgpID0+IChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZExhYmVsV3JhcHBlciwgeyB0aGVtZTogdGhlbWUsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBzdHlsZTogbGFiZWxTdHlsZSwgaWQ6IGAke2l0ZW1JZH0tbGFiZWxgLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWxhYmVsYCB9LFxyXG4gICAgICAgIGhhc0ljb25zICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KEljb25XcmFwcGVyLCB7IGlzSW52ZXJzZTogaXNJbnZlcnNlLCB0aGVtZTogdGhlbWUsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0taWNvbmAgfSwgaWNvbiB8fCBkZWZhdWx0SWNvbikpLFxyXG4gICAgICAgIGxhYmVsKSksIFtcclxuICAgICAgICB0aGVtZSxcclxuICAgICAgICBpc0Rpc2FibGVkLFxyXG4gICAgICAgIGlzSW52ZXJzZSxcclxuICAgICAgICBsYWJlbFN0eWxlLFxyXG4gICAgICAgIGl0ZW1JZCxcclxuICAgICAgICB0ZXN0SWQsXHJcbiAgICAgICAgaGFzSWNvbnMsXHJcbiAgICAgICAgaWNvbixcclxuICAgICAgICBkZWZhdWx0SWNvbixcclxuICAgICAgICBsYWJlbCxcclxuICAgIF0pO1xyXG4gICAgY29uc3QgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gYWRkaXRpb25hbENvbnRlbnQgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIsIHsgdGhlbWU6IHRoZW1lLCBpZDogYCR7aXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCA/PyBpdGVtSWR9LWFkZGl0aW9uYWxjb250ZW50d3JhcHBlcmAgfSwgYWRkaXRpb25hbENvbnRlbnQpKSA6IG51bGwsIFthZGRpdGlvbmFsQ29udGVudCwgdGhlbWUsIGl0ZW1JZCwgdGVzdElkXSk7XHJcbiAgICAvLyBTdGFibGUgcGVyLWNoaWxkIGhpZXJhcmNoeSB2YWx1ZXMuIFRoZSByZWZlcmVuY2UgbXVzdCBub3QgY2hhbmdlIG9uXHJcbiAgICAvLyByZS1yZW5kZXJzIHRyaWdnZXJlZCBieSBUcmVlVmlld1NlbGVjdGlvbkNvbnRleHQsIG90aGVyd2lzZSBldmVyeVxyXG4gICAgLy8gbmVzdGVkIFRyZWVJdGVtIHJlLXJlbmRlcnMgdGhyb3VnaCB0aGUgY29udGV4dCBhbmQgUmVhY3QubWVtbyBpc1xyXG4gICAgLy8gZGVmZWF0ZWQuXHJcbiAgICBjb25zdCBjaGlsZEhpZXJhcmNoaWVzID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY291bnQgPSBSZWFjdC5DaGlsZHJlbi5jb3VudChjaGlsZHJlbik7XHJcbiAgICAgICAgY29uc3QgYXJyID0gbmV3IEFycmF5KGNvdW50KTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcclxuICAgICAgICAgICAgYXJyW2ldID0ge1xyXG4gICAgICAgICAgICAgICAgZGVwdGg6IGl0ZW1EZXB0aCArIDEsXHJcbiAgICAgICAgICAgICAgICBwYXJlbnREZXB0aDogaXRlbURlcHRoLFxyXG4gICAgICAgICAgICAgICAgaXNUb3BMZXZlbDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBpbmRleDogaSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGFycjtcclxuICAgIH0sIFtjaGlsZHJlbiwgaXRlbURlcHRoXSk7XHJcbiAgICAvLyBNZW1vaXplIGlubGluZSBzdHlsZSBvYmplY3RzIHRvIHByZXZlbnQgdW5uZWNlc3NhcnkgcmUtcmVuZGVyc1xyXG4gICAgY29uc3QgY2hlY2tib3hJbnB1dFN0eWxlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoeyBtYXJnaW5SaWdodDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDMgfSksIFt0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM10pO1xyXG4gICAgY29uc3QgY2hlY2tib3hMYWJlbFN0eWxlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xyXG4gICAgICAgIHBhZGRpbmc6IDAsXHJcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcclxuICAgIH0pLCBbXSk7XHJcbiAgICAvLyBQcm9wcyBzaGFyZWQgYnkgQ2hlY2tib3ggYW5kIEluZGV0ZXJtaW5hdGVDaGVja2JveFxyXG4gICAgY29uc3QgY2hlY2tib3hQcm9wcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcclxuICAgICAgICBkaXNhYmxlZDogaXNEaXNhYmxlZCxcclxuICAgICAgICBoaWRlRm9jdXM6IHRydWUsXHJcbiAgICAgICAgaWQ6IGAke2l0ZW1JZH0tY2hlY2tib3hgLFxyXG4gICAgICAgIGlucHV0U3R5bGU6IGNoZWNrYm94SW5wdXRTdHlsZSxcclxuICAgICAgICBsYWJlbFN0eWxlOiBjaGVja2JveExhYmVsU3R5bGUsXHJcbiAgICAgICAgbGFiZWxUZXh0OiBsYWJlbFRleHQsXHJcbiAgICAgICAgb25DaGFuZ2U6IGNoZWNrYm94Q2hhbmdlSGFuZGxlcixcclxuICAgICAgICB0YWJJbmRleDogLTEsXHJcbiAgICAgICAgdGVzdElkOiBgJHtpdGVtSWR9LWNoZWNrYm94YCxcclxuICAgIH0pLCBbXHJcbiAgICAgICAgaXNEaXNhYmxlZCxcclxuICAgICAgICBpdGVtSWQsXHJcbiAgICAgICAgY2hlY2tib3hJbnB1dFN0eWxlLFxyXG4gICAgICAgIGNoZWNrYm94TGFiZWxTdHlsZSxcclxuICAgICAgICBsYWJlbFRleHQsXHJcbiAgICAgICAgY2hlY2tib3hDaGFuZ2VIYW5kbGVyLFxyXG4gICAgXSk7XHJcbiAgICBjb25zdCBvbkV4cGFuZGVkQ2xpY2tlZCA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgaGFuZGxlRXhwYW5kZWRDaGFuZ2UoZXZlbnQsIGl0ZW1JZCk7XHJcbiAgICB9LCBbaGFuZGxlRXhwYW5kZWRDaGFuZ2UsIGl0ZW1JZF0pO1xyXG4gICAgY29uc3QgaGFuZGxlRXhwYW5kQ2xpY2sgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBpZiAoIWlzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIG9uRXhwYW5kZWRDbGlja2VkKGV2ZW50KTtcclxuICAgICAgICB9XHJcbiAgICB9LCBbaXNEaXNhYmxlZCwgb25FeHBhbmRlZENsaWNrZWRdKTtcclxuICAgIGNvbnN0IGhhbmRsZU9uQ2xpY2sgPSAoZXZlbnQpID0+IHtcclxuICAgICAgICBpZiAoaXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjdXJyZW50RWxlbWVudCA9IGV2ZW50LnRhcmdldDtcclxuICAgICAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnQgPSBjdXJyZW50RWxlbWVudC5jbG9zZXN0KCdidXR0b24sIFtyb2xlPVwiYnV0dG9uXCJdLCBhW2hyZWZdLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgW3JvbGU9XCJtZW51aXRlbVwiXScpO1xyXG4gICAgICAgIC8vIFByZXZlbnRpbmcgc2VsZWN0aW5nIHRoZSBpdGVtIHdoZW4gY2xpY2tpbmcgb24gaW50ZXJhY3RpdmUgZWxlbWVudHMgd2hlbiBgc2VsZWN0YWJsZWAgaXMgYHNpbmdsZWBcclxuICAgICAgICBpZiAoaW50ZXJhY3RpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIElmIHNlbGVjdFBhcmVudHMgaXMgZmFsc2UgYW5kIHRoaXMgaXMgYSBwYXJlbnQgaXRlbSwgaGFuZGxlIGV4cGFuZC9jb2xsYXBzZSBpbnN0ZWFkIG9mIHNlbGVjdGlvblxyXG4gICAgICAgIGlmIChzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUuc2luZ2xlICYmXHJcbiAgICAgICAgICAgICFzZWxlY3RQYXJlbnRzICYmXHJcbiAgICAgICAgICAgIGhhc093blRyZWVJdGVtcykge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgb25FeHBhbmRlZENsaWNrZWQoZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUuc2luZ2xlKSB7XHJcbiAgICAgICAgICAgIGhhbmRsZUNsaWNrKGV2ZW50LCBpdGVtSWQpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCB0YWJJbmRleCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpdGVtVG9Gb2N1cyA9PT0gaXRlbUlkID8gMCA6IC0xO1xyXG4gICAgfSwgW2lzRGlzYWJsZWQsIGl0ZW1Ub0ZvY3VzLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IHNob3VsZFNob3dDaGVja2JveCA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aSAmJlxyXG4gICAgICAgIChpc1RvcExldmVsU2VsZWN0YWJsZSAhPT0gZmFsc2UgfHwgIXRvcExldmVsKTtcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gd2l0aGluIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogUHJlc3NpbmcgYEN0cmwgKyBFbnRlcmAgb3IgYENvbW1hbmQgKyBFbnRlcmAgZm9jdXNlcyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudCB3aXRoaW4gdGhlIHRyZWUgaXRlbVxyXG4gICAgICogYW5kIGxvY2tzIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIElmIHRoZSBmb2N1cyBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaXQgaGFuZGxlcyBrZXkgZXZlbnRzIGZvciBpbnRlcmFjdGlvbiBlbGVtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBJdCBhbHNvIGhhbmRsZXMgdGhlIG90aGVyIGtleXMgdG8gdHJpZ2dlciB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIHRyZWUgaXRlbS5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3Qgb25LZXlEb3duSGFuZGxlciA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsga2V5LCB0YXJnZXQsIGN1cnJlbnRUYXJnZXQgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNDdHJsT3JDb21tYW5kID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5O1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybEVudGVyID0gaXNDdHJsT3JDb21tYW5kICYmIGlzRW50ZXI7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBDdHJsICsgRW50ZXIgb3IgQ29tbWFuZCArIEVudGVyLCBmb2N1cyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudFxyXG4gICAgICAgIC8vIGFuZCBsb2NrIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzQ3RybEVudGVyICYmIHRhcmdldCA9PT0gY3VycmVudFRhcmdldCkge1xyXG4gICAgICAgICAgICBzZXRJc0luc2lkZVRyZWVJdGVtKHRydWUpO1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdCA9IGdldEludGVyYWN0aXZlRWxlbWVudHMoY3VycmVudFRhcmdldCwgaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gaW50ZXJhY3RpdmVFbGVtZW50c0xpc3RbMF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gRW5zdXJlIHZhbGlkIENTUyBzZWxlY3RvcnMgYnkgZXNjYXBpbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChlLmcuLCBwZXJpb2RzIGluIGl0ZW1JZClcclxuICAgICAgICBjb25zdCBzYWZlSXRlbUlkID0gQ1NTLmVzY2FwZShpdGVtSWQpO1xyXG4gICAgICAgIGNvbnN0IGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50ID0gdGFyZ2V0LmNsb3Nlc3QoYCMke3NhZmVJdGVtSWR9LWxhYmVsLCAjJHtzYWZlSXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgKTtcclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHdpdGhpbiB0aGUgbGFiZWwgb3IgYWRkaXRpb25hbCBjb250ZW50LCBoYW5kbGUga2V5IGV2ZW50cyBmb3IgdGhvc2UgYXJlYXNcclxuICAgICAgICBpZiAoaXNXaXRoaW5MYWJlbE9yQWRkaXRpb25hbENvbnRlbnQpIHtcclxuICAgICAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaXMgdGhlIHRyZWUgaXRlbSBpdHNlbGYsIGhhbmRsZSBrZXkgZG93biBmb3IgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgaGFuZGxlS2V5RG93bihldmVudCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9LCBbXHJcbiAgICAgICAgZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyxcclxuICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnRzLFxyXG4gICAgICAgIGl0ZW1JZCxcclxuICAgICAgICBoYW5kbGVMYWJlbEFuZEFkZGl0aW9uYWxDb250ZW50S2V5RG93bixcclxuICAgICAgICBoYW5kbGVLZXlEb3duLFxyXG4gICAgXSk7XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBjb250ZXh0VmFsdWUgfSxcclxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgc3R5bGU6IHRyZWVJdGVtU3R5bGVzIH0sXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkVHJlZUl0ZW0sIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgXCJhcmlhLWV4cGFuZGVkXCI6IGhhc093blRyZWVJdGVtcyA/IGV4cGFuZGVkIDogbnVsbCwgXCJhcmlhLXNlbGVjdGVkXCI6IHNlbGVjdGVkSXRlbSwgXCJhcmlhLWNoZWNrZWRcIjogc2hvdWxkU2hvd0NoZWNrYm94ID8gYXJpYUNoZWNrZWRWYWx1ZSA6IG51bGwsIFwiZGF0YS10ZXN0aWRcIjogdGVzdElkLCBkZXB0aDogaXRlbURlcHRoLCBoYXNPd25UcmVlSXRlbXM6IGhhc093blRyZWVJdGVtcywgaWQ6IGl0ZW1JZCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIGlzVmlydHVhbGl6ZWQ6IGhpZXJhcmNoeUNvbnRleHQuaXNWaXJ0dWFsaXplZCwgbm9kZVR5cGU6IG5vZGVUeXBlLCByb2xlOiBcInRyZWVpdGVtXCIsIHNlbGVjdGFibGVUeXBlOiBzZWxlY3RhYmxlLCBzZWxlY3RlZDogc2VsZWN0ZWRJdGVtLCB0aGVtZTogdGhlbWUsIHRhYkluZGV4OiB0YWJJbmRleCwgb25LZXlEb3duOiBvbktleURvd25IYW5kbGVyLCByZWY6IHRyZWVJdGVtUmVmLCBob3ZlckNvbG9yOiBob3ZlckNvbG9yIH0pLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRJdGVtV3JhcHBlciwgeyBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCA/PyBpdGVtSWR9LWl0ZW13cmFwcGVyYCwgZGVwdGg6IGl0ZW1EZXB0aCwgaGFzQWRkaXRpb25hbENvbnRlbnQ6ICEhYWRkaXRpb25hbENvbnRlbnQsIGhhc0N1c3RvbUljb25TaXplOiAhIWV4cGFuZEljb25TdHlsZXM/LnNpemUsIGlkOiBgJHtpdGVtSWR9LWl0ZW13cmFwcGVyYCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG5vZGVUeXBlOiBub2RlVHlwZSwgc2VsZWN0YWJsZTogc2VsZWN0YWJsZSwgc3R5bGU6IHN0eWxlLCB0aGVtZTogdGhlbWUsIHJlZjogbWVyZ2VSZWZzKHJlZiwgZm9jdXNUcmFwRWxlbWVudCksIG9uQ2xpY2s6IGhhbmRsZU9uQ2xpY2sgfSxcclxuICAgICAgICAgICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkRXhwYW5kV3JhcHBlciwgeyBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplLCBjb2xvcjogZXhwYW5kSWNvblN0eWxlcz8uY29sb3IsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tZXhwYW5kYCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG9uQ2xpY2s6IGhhbmRsZUV4cGFuZENsaWNrLCB0aGVtZTogdGhlbWUgfSwgZXhwYW5kZWQgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChFeHBhbmRNb3JlSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIHNpemU6IGV4cGFuZEljb25TdHlsZXM/LnNpemUgfSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hldnJvblJpZ2h0SWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIHNpemU6IGV4cGFuZEljb25TdHlsZXM/LnNpemUgfSkpKSksXHJcbiAgICAgICAgICAgICAgICAgICAgc2hvdWxkU2hvd0NoZWNrYm94ID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkQ2hlY2tib3hXcmFwcGVyLCB7IGhhc0FkZGl0aW9uYWxDb250ZW50OiAhIWFkZGl0aW9uYWxDb250ZW50LCB0aGVtZTogdGhlbWUgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzT3duVHJlZUl0ZW1zID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW5kZXRlcm1pbmF0ZUNoZWNrYm94LCBPYmplY3QuYXNzaWduKHt9LCBjaGVja2JveFByb3BzLCB7IHN0YXR1czogY2hlY2tlZFN0YXR1cyB9KSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hlY2tib3gsIE9iamVjdC5hc3NpZ24oe30sIGNoZWNrYm94UHJvcHMsIHsgY2hlY2tlZDogY2hlY2tlZFN0YXR1c1RvQm9vbGVhbihjaGVja2VkU3RhdHVzKSB9KSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlSXRlbUFkZGl0aW9uYWxDb250ZW50KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxUZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlSXRlbUFkZGl0aW9uYWxDb250ZW50KSkpLFxyXG4gICAgICAgICAgICAgICAgaGFzR3VpZGVMaW5lcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIChoaWVyYXJjaHlDb250ZXh0LmlzVmlydHVhbGl6ZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBpdGVtRGVwdGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5mcm9tKHsgbGVuZ3RoOiBpdGVtRGVwdGggfSwgKF8sIGQpID0+IChSZWFjdC5jcmVhdGVFbGVtZW50KFZpcnR1YWxpemVkR3VpZGVMaW5lLCB7IGtleTogYGd1aWRlbGluZS0ke2R9YCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS12aXJ0dWFsaXplZC1ndWlkZWxpbmUtJHtkfWAsIHRoZW1lOiB0aGVtZSwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2V0SW5saW5lU3RhcnQ6IGBjYWxjKCR7Y2FsY3VsYXRlT2Zmc2V0KFRyZWVOb2RlVHlwZS5icmFuY2gsIGQsIGZhbHNlLCBmYWxzZSwgdHJ1ZSl9ICsgJHtleHBhbmRJY29uU3R5bGVzPy5zaXplICE9PSB1bmRlZmluZWQgPyBgJHtleHBhbmRJY29uU3R5bGVzLnNpemV9cHhgIDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDZ9IC8gMiAtIDAuNXB4KWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB9KSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaGFzT3duVHJlZUl0ZW1zICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRlZCAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChHdWlkZUxpbmUsIHsgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1ndWlkZWxpbmVgLCB0aGVtZTogdGhlbWUsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBndWlkZUxpbmVMZWZ0OiBgY2FsYygke2NhbGN1bGF0ZU9mZnNldChUcmVlTm9kZVR5cGUuYnJhbmNoLCBpdGVtRGVwdGgsIGZhbHNlLCBmYWxzZSwgZmFsc2UpfSArICR7ZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7ZXhwYW5kSWNvblN0eWxlcy5zaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fSAvIDIgLSAwLjVweCkgYCB9KSkpLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuQ2hpbGRyZW4ubWFwKGNoaWxkcmVuLCAoY2hpbGQsIGNoaWxkSW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQ/LnR5cGUgIT09IFRyZWVJdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVXNlIHRoZSBzdGFibGUsIHByZS1tZW1vaXNlZCB2YWx1ZSAoc2VlIGNoaWxkSGllcmFyY2hpZXMgYWJvdmUpLlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5lc3RlZEhpZXJhcmNoeVZhbHVlID0gY2hpbGRIaWVyYXJjaGllc1tjaGlsZEluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJhbnNpdGlvbiwgeyBpc09wZW46IGV4cGFuZGVkLCB1bm1vdW50T25FeGl0OiB0cnVlIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ1bFwiLCB7IHJvbGU6IFwiZ3JvdXBcIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUcmVlSXRlbUhpZXJhcmNoeUNvbnRleHQuUHJvdmlkZXIsIHsga2V5OiBjaGlsZC5wcm9wcy5pdGVtSWQsIHZhbHVlOiBuZXN0ZWRIaWVyYXJjaHlWYWx1ZSB9LCBjaGlsZCkpKSk7XHJcbiAgICAgICAgICAgICAgICB9KSksXHJcbiAgICAgICAgICAgIGlzTWFjT1MgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVmlzdWFsbHlIaWRkZW4sIG51bGwsXHJcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEFubm91bmNlLCBudWxsLCBleHBhbmRlZFxyXG4gICAgICAgICAgICAgICAgICAgID8gaTE4bi5leHBhbnNpb25TdGF0ZS5leHBhbmRlZFxyXG4gICAgICAgICAgICAgICAgICAgIDogaTE4bi5leHBhbnNpb25TdGF0ZS5jb2xsYXBzZWQpKSkpKSk7XHJcbn0pO1xyXG4vKipcclxuICogQ3VzdG9tIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIFJlYWN0Lm1lbW9cclxuICogT25seSByZS1yZW5kZXIgVHJlZUl0ZW0gd2hlbiByZWxldmFudCBwcm9wcyBjaGFuZ2VcclxuICovXHJcbmZ1bmN0aW9uIGFyZVByb3BzRXF1YWwocHJldlByb3BzLCBuZXh0UHJvcHMpIHtcclxuICAgIC8vIENoZWNrIGlmIGl0ZW1JZCBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLml0ZW1JZCAhPT0gbmV4dFByb3BzLml0ZW1JZCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGxhYmVsIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMubGFiZWwgIT09IG5leHRQcm9wcy5sYWJlbCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGRpc2FibGVkIHN0YXRlIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaXNEaXNhYmxlZCAhPT0gbmV4dFByb3BzLmlzRGlzYWJsZWQpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBpY29uIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaWNvbiAhPT0gbmV4dFByb3BzLmljb24pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBhZGRpdGlvbmFsIGNvbnRlbnQgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5hZGRpdGlvbmFsQ29udGVudCAhPT0gbmV4dFByb3BzLmFkZGl0aW9uYWxDb250ZW50KSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgaG92ZXIgY29sb3IgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5ob3ZlckNvbG9yICE9PSBuZXh0UHJvcHMuaG92ZXJDb2xvcikge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGNoaWxkcmVuIGNoYW5nZWQgKGZvciBuZXN0ZWQgdHJlZSBpdGVtcylcclxuICAgIC8vIFVzaW5nIHR5cGUgYXNzZXJ0aW9uIHNpbmNlIGNoaWxkcmVuIGNvbWVzIGZyb20gUmVhY3QuSFRNTEF0dHJpYnV0ZXNcclxuICAgIGlmIChwcmV2UHJvcHMuY2hpbGRyZW4gIT09IG5leHRQcm9wcy5jaGlsZHJlbikge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIHN0eWxlcyBjaGFuZ2VkXHJcbiAgICAvLyBVc2luZyB0eXBlIGFzc2VydGlvbiBzaW5jZSBzdHlsZSBjb21lcyBmcm9tIFJlYWN0LkhUTUxBdHRyaWJ1dGVzXHJcbiAgICBpZiAocHJldlByb3BzLnN0eWxlICE9PSBuZXh0UHJvcHMuc3R5bGUpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAocHJldlByb3BzLmxhYmVsU3R5bGUgIT09IG5leHRQcm9wcy5sYWJlbFN0eWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZQcm9wcy50cmVlSXRlbVN0eWxlcyAhPT0gbmV4dFByb3BzLnRyZWVJdGVtU3R5bGVzKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQWxsIHJlbGV2YW50IHByb3BzIGFyZSBlcXVhbCwgc2tpcCByZS1yZW5kZXJcclxuICAgIHJldHVybiB0cnVlO1xyXG59XHJcbi8qKlxyXG4gKiBNZW1vaXplZCBUcmVlSXRlbSBjb21wb25lbnRcclxuICogT25seSByZS1yZW5kZXJzIHdoZW4gcmVsZXZhbnQgcHJvcHMgY2hhbmdlLCBpbXByb3ZpbmcgcGVyZm9ybWFuY2UgZm9yIGxhcmdlIHRyZWVzXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW0gPSBSZWFjdC5tZW1vKFRyZWVJdGVtQ29tcG9uZW50LCBhcmVQcm9wc0VxdWFsKTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VHJlZUl0ZW0uanMubWFwIl19 */"));
|
|
29370
|
+
return props.selected && /*#__PURE__*/react.css("&:before{position:absolute;background-color:", props.isInverse ? props.theme.colors.tertiary500 : props.theme.colors.primary500, ";block-size:100%;content:'';inline-size:", props.theme.spaceScale.spacing02, ";inset-block-start:0;inset-inline-start:0;};label:StyledTreeItem;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvRVEiLCJmaWxlIjoiVHJlZUl0ZW0udHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XHJcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcclxuaW1wb3J0IHsgdHJhbnNwYXJlbnRpemUgfSBmcm9tICdwb2xpc2hlZCc7XHJcbmltcG9ydCB7IEFydGljbGVJY29uLCBDaGV2cm9uUmlnaHRJY29uLCBFeHBhbmRNb3JlSWNvbiwgRm9sZGVySWNvbiwgfSBmcm9tICdyZWFjdC1tYWdtYS1pY29ucyc7XHJcbmltcG9ydCB7IFRyZWVJdGVtQ29udGV4dCB9IGZyb20gJy4vVHJlZUl0ZW1Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0IH0gZnJvbSAnLi9UcmVlSXRlbUhpZXJhcmNoeUNvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0NvbmZpZ0NvbnRleHQgfSBmcm9tICcuL1RyZWVWaWV3Q29uZmlnQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdFeHBhbnNpb25Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld1NlbGVjdGlvbkNvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld1NlbGVjdGFibGUgfSBmcm9tICcuL3R5cGVzJztcclxuaW1wb3J0IHsgY2hlY2tlZFN0YXR1c1RvQm9vbGVhbiwgdXNlVHJlZUl0ZW0sIH0gZnJvbSAnLi91c2VUcmVlSXRlbSc7XHJcbmltcG9ydCB7IGNhbGN1bGF0ZU9mZnNldCwgZ2V0VHJlZUl0ZW1MYWJlbENvbG9yLCBnZXRUcmVlSXRlbVdyYXBwZXJDdXJzb3IsIFRyZWVOb2RlVHlwZSwgfSBmcm9tICcuL3V0aWxzJztcclxuaW1wb3J0IHsgSTE4bkNvbnRleHQgfSBmcm9tICcuLi8uLic7XHJcbmltcG9ydCB1c2VEZXZpY2VEZXRlY3QgZnJvbSAnLi4vLi4vaG9va3MvdXNlRGV2aWNlRGV0ZWN0JztcclxuaW1wb3J0IHsgdXNlRm9jdXNMb2NrIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlRm9jdXNMb2NrJztcclxuaW1wb3J0IHsgdXNlSXNJbnZlcnNlIH0gZnJvbSAnLi4vLi4vaW52ZXJzZSc7XHJcbmltcG9ydCB7IFRoZW1lQ29udGV4dCB9IGZyb20gJy4uLy4uL3RoZW1lL1RoZW1lQ29udGV4dCc7XHJcbmltcG9ydCB7IG1lcmdlUmVmcyB9IGZyb20gJy4uLy4uL3V0aWxzJztcclxuaW1wb3J0IHsgQW5ub3VuY2UgfSBmcm9tICcuLi9Bbm5vdW5jZSc7XHJcbmltcG9ydCB7IENoZWNrYm94IH0gZnJvbSAnLi4vQ2hlY2tib3gnO1xyXG5pbXBvcnQgeyBJbmRldGVybWluYXRlQ2hlY2tib3gsIEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cywgfSBmcm9tICcuLi9JbmRldGVybWluYXRlQ2hlY2tib3gnO1xyXG5pbXBvcnQgeyBUcmFuc2l0aW9uIH0gZnJvbSAnLi4vVHJhbnNpdGlvbic7XHJcbmltcG9ydCB7IFZpc3VhbGx5SGlkZGVuIH0gZnJvbSAnLi4vVmlzdWFsbHlIaWRkZW4nO1xyXG5jb25zdCBTdHlsZWRUcmVlSXRlbSA9IHN0eWxlZC5saSBgXG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLmlzSW52ZXJzZVxyXG4gICAgPyBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDEwMFxyXG4gICAgOiBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDcwMH07XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgY3Vyc29yOiAke3Byb3BzID0+IGdldFRyZWVJdGVtV3JhcHBlckN1cnNvcihwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy5zZWxlY3RhYmxlVHlwZSwgcHJvcHMubm9kZVR5cGUpfTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIGZhbHNlLCBmYWxzZSwgcHJvcHMuaXNWaXJ0dWFsaXplZCl9O1xuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG5cbiAgICAmID4gKjpmaXJzdC1jaGlsZCB7XG4gICAgICAmOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICBvdXRsaW5lOiAycHggc29saWRcbiAgICAgICAgICAke3Byb3BzID0+IHByb3BzLmlzSW52ZXJzZVxyXG4gICAgPyBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXNJbnZlcnNlXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5mb2N1c307XG4gICAgICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICA+IGRpdjpmaXJzdC1vZi10eXBlIHtcbiAgICBiYWNrZ3JvdW5kOiAke3Byb3BzID0+IHByb3BzLnNlbGVjdGVkICYmIHByb3BzLmlzSW52ZXJzZVxyXG4gICAgPyB0cmFuc3BhcmVudGl6ZSgwLjcsIHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsOTAwKVxyXG4gICAgOiBwcm9wcy5zZWxlY3RlZCAmJlxyXG4gICAgICAgIHRyYW5zcGFyZW50aXplKDAuOTIsIHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsOTAwKX07XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6ICR7cHJvcHMgPT4gY2FsY3VsYXRlT2Zmc2V0KHByb3BzLm5vZGVUeXBlLCBwcm9wcy5kZXB0aCwgdHJ1ZSwgZmFsc2UsIHByb3BzLmlzVmlydHVhbGl6ZWQpfTtcbiAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIHRydWUsIHByb3BzLmlzVmlydHVhbGl6ZWQpfTtcbiAgICBwYWRkaW5nLWJsb2NrLWVuZDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1ibG9jay1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgcGFkZGluZy1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG5cbiAgICAke3Byb3BzID0+IHByb3BzLnNlbGVjdGVkICYmXHJcbiAgICBjc3MgYFxuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMuaXNJbnZlcnNlXHJcbiAgICAgICAgPyBwcm9wcy50aGVtZS5jb2xvcnMudGVydGlhcnk1MDBcclxuICAgICAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5wcmltYXJ5NTAwfTtcbiAgICAgICAgICBibG9jay1zaXplOiAxMDAlO1xuICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgIGlubGluZS1zaXplOiAke3Byb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAyfTtcbiAgICAgICAgICBpbnNldC1ibG9jay1zdGFydDogMDtcbiAgICAgICAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDA7XG4gICAgICAgIH1cbiAgICAgIGB9XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAke3Byb3BzID0+IGdldEhvdmVyQmFja2dyb3VuZCh7XHJcbiAgICBpc0Rpc2FibGVkOiBwcm9wcy5pc0Rpc2FibGVkLFxyXG4gICAgaG92ZXJDb2xvcjogcHJvcHMuaG92ZXJDb2xvcixcclxuICAgIGlzSW52ZXJzZTogcHJvcHMuaXNJbnZlcnNlLFxyXG4gICAgdGhlbWU6IHByb3BzLnRoZW1lLFxyXG59KX07XG4gICAgfVxuICB9XG5gO1xyXG5mdW5jdGlvbiBnZXRIb3ZlckJhY2tncm91bmQoeyBpc0Rpc2FibGVkLCBob3ZlckNvbG9yLCBpc0ludmVyc2UsIHRoZW1lIH0pIHtcclxuICAgIGlmIChpc0Rpc2FibGVkKVxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICBpZiAoaG92ZXJDb2xvcilcclxuICAgICAgICByZXR1cm4gaG92ZXJDb2xvcjtcclxuICAgIGNvbnN0IHRyYW5zcGFyZW5jeSA9IGlzSW52ZXJzZSA/IDAuOCA6IDAuOTU7XHJcbiAgICByZXR1cm4gdHJhbnNwYXJlbnRpemUodHJhbnNwYXJlbmN5LCB0aGVtZS5jb2xvcnMubmV1dHJhbDkwMCk7XHJcbn1cclxuY29uc3QgSWNvbldyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGNvbG9yOiAke3Byb3BzID0+IGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIG1hcmdpbi1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM307XG4gIG1hcmdpbi1sZWZ0OiAwO1xuXG4gIHN2ZyB7XG4gICAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaWNvblNpemVzLm1lZGl1bX1weDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB9XG5gO1xyXG5jb25zdCBTdHlsZWRMYWJlbFdyYXBwZXIgPSBzdHlsZWQuc3BhbiBgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICB3aWR0aDogMTAwJTtcbmA7XHJcbmNvbnN0IFN0eWxlZEV4cGFuZFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5jb2xvciB8fFxyXG4gICAgZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgd2lkdGg6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG4gIGhlaWdodDogJHsoeyBzaXplLCB0aGVtZSB9KSA9PiBzaXplICE9PSB1bmRlZmluZWQgPyBgJHtzaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fTtcbmA7XHJcbmNvbnN0IEd1aWRlTGluZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwOH07XG4gIGJvdHRvbTogMDtcbiAgaW5zZXQtaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IHByb3BzLmd1aWRlTGluZUxlZnR9O1xuICB3aWR0aDogMDtcbiAgYm9yZGVyLWlubGluZS1zdGFydDogMXB4IHNvbGlkXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDEwMClcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwzMDB9O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMTtcbmA7XHJcbmNvbnN0IFZpcnR1YWxpemVkR3VpZGVMaW5lID0gc3R5bGVkLmRpdiBgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBib3R0b206IDA7XG4gIHdpZHRoOiAwO1xuICBib3JkZXItaW5saW5lLXN0YXJ0OiAxcHggc29saWRcbiAgICAke3Byb3BzID0+IHByb3BzLmlzSW52ZXJzZVxyXG4gICAgPyB0cmFuc3BhcmVudGl6ZSgwLjcsIHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMTAwKVxyXG4gICAgOiBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDMwMH07XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB6LWluZGV4OiAxO1xuYDtcclxuY29uc3QgU3R5bGVkQ2hlY2tib3hXcmFwcGVyID0gc3R5bGVkLmRpdiBgXG4gIG1hcmdpbi1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM307XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGRpc3BsYXk6ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2ZsZXgnIDogJ2lubGluZS1mbGV4Jyl9O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB3aWR0aDogJHtwcm9wcyA9PiBgY2FsYygxMDAlIC0gJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM30pYH07XG5gO1xyXG5jb25zdCBTdHlsZWRJdGVtV3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogJHtwcm9wcyA9PiAocHJvcHMuaGFzQWRkaXRpb25hbENvbnRlbnQgPyAnY29sdW1uJyA6ICdyb3cnKX07XG4gIGFsaWduLWl0ZW1zOiAke3Byb3BzID0+IChwcm9wcy5oYXNDdXN0b21JY29uU2l6ZSA/ICdjZW50ZXInIDogJ2ZsZXgtc3RhcnQnKX07XG4gIGN1cnNvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbVdyYXBwZXJDdXJzb3IocHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMuc2VsZWN0YWJsZSwgcHJvcHMubm9kZVR5cGUpfTtcbmA7XHJcbmNvbnN0IEFkZGl0aW9uYWxDb250ZW50V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tYm90dG9tOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA1fTtcbmA7XHJcbmV4cG9ydCBjb25zdCBUcmVlSXRlbUNvbXBvbmVudCA9IFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpID0+IHtcclxuICAgIGNvbnN0IHsgYWRkaXRpb25hbENvbnRlbnQsIGNoaWxkcmVuLCBob3ZlckNvbG9yLCBpY29uLCBpbmRleDogaW5kZXhQcm9wLCBsYWJlbCwgbGFiZWxTdHlsZSwgc3R5bGUsIHRlc3RJZCwgdG9wTGV2ZWw6IHRvcExldmVsUHJvcCwgdHJlZUl0ZW1TdHlsZXMsIC4uLnJlc3QgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgdGhlbWUgPSBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XHJcbiAgICBjb25zdCBpc0ludmVyc2UgPSB1c2VJc0ludmVyc2UoKTtcclxuICAgIC8vIFJlYWQgaGllcmFyY2h5IGluZm9ybWF0aW9uIGZyb20gY29udGV4dCAocmVkdWNlcyBjbG9uZUVsZW1lbnQgb3ZlcmhlYWQpXHJcbiAgICBjb25zdCBoaWVyYXJjaHlDb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChUcmVlSXRlbUhpZXJhcmNoeUNvbnRleHQpO1xyXG4gICAgLy8gVXNlIGNvbnRleHQgdmFsdWVzIGlmIHByb3BzIGFyZSBub3QgcHJvdmlkZWQgKGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KVxyXG4gICAgY29uc3QgaW5kZXggPSBpbmRleFByb3AgIT09IHVuZGVmaW5lZCA/IGluZGV4UHJvcCA6IGhpZXJhcmNoeUNvbnRleHQuaW5kZXg7XHJcbiAgICBjb25zdCB0b3BMZXZlbCA9IHRvcExldmVsUHJvcCAhPT0gdW5kZWZpbmVkID8gdG9wTGV2ZWxQcm9wIDogaGllcmFyY2h5Q29udGV4dC5pc1RvcExldmVsO1xyXG4gICAgLy8gQ29uc3VtZSBzcGxpdCBjb250ZXh0cyBmb3IgcmVkdWNlZCByZS1yZW5kZXIgc2NvcGVcclxuICAgIGNvbnN0IHsgaXRlbVRvRm9jdXMgfSA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0KTtcclxuICAgIGNvbnN0IHsgaGFuZGxlRXhwYW5kZWRDaGFuZ2UgfSA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZVZpZXdFeHBhbnNpb25Db250ZXh0KTtcclxuICAgIGNvbnN0IHsgZXhwYW5kSWNvblN0eWxlcywgaGFzR3VpZGVMaW5lcywgaGFzSWNvbnMsIGlzVG9wTGV2ZWxTZWxlY3RhYmxlLCBzZWxlY3RhYmxlLCBzZWxlY3RQYXJlbnRzID0gdHJ1ZSwgfSA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZVZpZXdDb25maWdDb250ZXh0KTtcclxuICAgIC8vIFBhc3MgdGhlIHJlc29sdmVkIHZhbHVlcyB0byB1c2VUcmVlSXRlbVxyXG4gICAgY29uc3QgcHJvcHNXaXRoSGllcmFyY2h5ID0ge1xyXG4gICAgICAgIC4uLnByb3BzLFxyXG4gICAgICAgIGluZGV4LFxyXG4gICAgICAgIHRvcExldmVsLFxyXG4gICAgICAgIGl0ZW1EZXB0aDogaGllcmFyY2h5Q29udGV4dC5kZXB0aCxcclxuICAgICAgICBwYXJlbnREZXB0aDogaGllcmFyY2h5Q29udGV4dC5wYXJlbnREZXB0aCxcclxuICAgIH07XHJcbiAgICBjb25zdCB7IGNvbnRleHRWYWx1ZSwgaGFuZGxlQ2xpY2ssIGhhbmRsZUtleURvd24gfSA9IHVzZVRyZWVJdGVtKHByb3BzV2l0aEhpZXJhcmNoeSwgZm9yd2FyZGVkUmVmKTtcclxuICAgIGNvbnN0IHsgaXNEaXNhYmxlZCB9ID0gY29udGV4dFZhbHVlO1xyXG4gICAgY29uc3QgeyBpc01hY09TIH0gPSB1c2VEZXZpY2VEZXRlY3QoKTtcclxuICAgIGNvbnN0IGkxOG4gPSBSZWFjdC51c2VDb250ZXh0KEkxOG5Db250ZXh0KTtcclxuICAgIGNvbnN0IHsgY2hlY2tib3hDaGFuZ2VIYW5kbGVyLCBjaGVja2VkU3RhdHVzLCBleHBhbmRlZCwgaGFzT3duVHJlZUl0ZW1zLCBpdGVtRGVwdGgsIGl0ZW1JZCwgcmVmLCBzZWxlY3RlZEl0ZW1zLCB9ID0gY29udGV4dFZhbHVlO1xyXG4gICAgY29uc3Qgbm9kZVR5cGUgPSBoYXNPd25UcmVlSXRlbXMgPyBUcmVlTm9kZVR5cGUuYnJhbmNoIDogVHJlZU5vZGVUeXBlLmxlYWY7XHJcbiAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUuc2luZ2xlXHJcbiAgICAgICAgPyBzZWxlY3RlZEl0ZW1zPy5bMF0/Lml0ZW1JZCA9PT0gaXRlbUlkXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgYXJpYUNoZWNrZWRWYWx1ZSA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aVxyXG4gICAgICAgID8gY2hlY2tlZFN0YXR1cyA9PT0gSW5kZXRlcm1pbmF0ZUNoZWNrYm94U3RhdHVzLmluZGV0ZXJtaW5hdGVcclxuICAgICAgICAgICAgPyAnbWl4ZWQnXHJcbiAgICAgICAgICAgIDogY2hlY2tlZFN0YXR1cyA9PT0gSW5kZXRlcm1pbmF0ZUNoZWNrYm94U3RhdHVzLmNoZWNrZWRcclxuICAgICAgICA6IG51bGw7XHJcbiAgICBjb25zdCBbaXNJbnNpZGVUcmVlSXRlbSwgc2V0SXNJbnNpZGVUcmVlSXRlbV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XHJcbiAgICBjb25zdCB0cmVlSXRlbVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcclxuICAgIGNvbnN0IGZvY3VzVHJhcEVsZW1lbnQgPSB1c2VGb2N1c0xvY2soaXNJbnNpZGVUcmVlSXRlbSk7XHJcbiAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzID0gJ2J1dHRvbiwgW3JvbGU9XCJidXR0b25cIl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBhW2hyZWZdLCBbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXg9XCItMVwiXSknO1xyXG4gICAgY29uc3QgZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyA9IFJlYWN0LnVzZUNhbGxiYWNrKChjb250YWluZXIsIHNlbGVjdG9yKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKS5maWx0ZXIoZWwgPT4gIWVsLmhhc0F0dHJpYnV0ZSgndGFiaW5kZXgnKSB8fFxyXG4gICAgICAgICAgICAoZWwudGFiSW5kZXggIT09IHVuZGVmaW5lZCAmJiBlbC50YWJJbmRleCA+PSAwKSk7XHJcbiAgICB9LCBbXSk7XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIHdpdGhpbiB0aGUgbGFiZWwgYW5kIGFkZGl0aW9uYWwgY29udGVudCBvZiBhIHRyZWUgaXRlbS5cclxuICAgICAqXHJcbiAgICAgKiBZb3UgY2FuIG5hdmlnYXRlIHRocm91Z2ggaW50ZXJhY3RpdmUgZWxlbWVudHMgdXNpbmcgdGhlIGBUYWJgIGtleSwgYWN0aXZhdGUgdGhlbSB3aXRoIGBFbnRlcmAgb3IgYFNwYWNlYCxcclxuICAgICAqIGFuZCBleGl0IG91dHNpZGUgYW5kIGZvY3VzIHRoZSB3aG9sZSB0cmVlIGl0ZW0gd2l0aCBgRXNjYXBlYC5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3QgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24gPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBjb25zdCB7IGtleSwgdGFyZ2V0LCBjdXJyZW50VGFyZ2V0LCBzaGlmdEtleSB9ID0gZXZlbnQ7XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSB0YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaXNFbnRlciA9IGtleSA9PT0gJ0VudGVyJztcclxuICAgICAgICBjb25zdCBpc1NwYWNlID0ga2V5ID09PSAnICc7XHJcbiAgICAgICAgY29uc3QgaXNFc2NhcGUgPSBrZXkgPT09ICdFc2NhcGUnO1xyXG4gICAgICAgIGNvbnN0IGlzVGFiID0ga2V5ID09PSAnVGFiJztcclxuICAgICAgICBjb25zdCBpc0FjdGl2YXRpb25LZXkgPSBpc0VudGVyIHx8IGlzU3BhY2U7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdChpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAvLyBJZiB0aGUga2V5IGlzIGBUYWJgLCB3ZSBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzVGFiICYmIGlzSW5zaWRlVHJlZUl0ZW0pIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50c0xpc3QgPSBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzKGN1cnJlbnRUYXJnZXQsIGludGVyYWN0aXZlRWxlbWVudHMpO1xyXG4gICAgICAgICAgICAvLyBGaWx0ZXIgbGlzdCBvZiBpbnRlcmFjdGl2ZSBlbGVtZW50cyB3aGljaCBhcmUgb25seSBpbmNsdWRlZCBmb3IgY3VycmVudCB0cmVlIGl0ZW1cclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cyA9IGludGVyYWN0aXZlRWxlbWVudHNMaXN0LmZpbHRlcihlbCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjbG9zZXN0VHJlZUl0ZW0gPSBlbC5jbG9zZXN0KCdbcm9sZT1cInRyZWVpdGVtXCJdJyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xvc2VzdFRyZWVJdGVtID09PSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5pbmRleE9mKGN1cnJlbnRFbGVtZW50KTtcclxuICAgICAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gc2hpZnRLZXkgPyAtMSA6IDE7XHJcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50cy5sZW5ndGg7XHJcbiAgICAgICAgICAgIGNvbnN0IG5leHRJbmRleCA9IChjdXJyZW50SW5kZXggKyBkaXJlY3Rpb24gKyB0b3RhbCkgJSB0b3RhbDtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudFRvRm9jdXMgPSBjdXJyZW50VHJlZUl0ZW1JbnRlcmFjdGl2ZUVsZW1lbnRzW25leHRJbmRleF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBlbGVtZW50VG9Gb2N1cy5mb2N1cygpLCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFByZXNzaW5nIGBFbnRlcmAgb3IgYFNwYWNlYCBvbiBhbiBpbnRlcmFjdGl2ZSBlbGVtZW50IHdpbGwgdHJpZ2dlciBpdHMgY2xpY2sgZXZlbnRcclxuICAgICAgICBpZiAoaXNBY3RpdmF0aW9uS2V5ICYmIGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gTW92ZXMgZm9jdXMgb3V0c2lkZSB0aGUgdHJlZSBpdGVtIGFuZCBmb2N1c2VzIHRoZSB0cmVlIGl0ZW0gaXRzZWxmIHdoZW4gYEVzY2FwZWAgaXMgcHJlc3NlZFxyXG4gICAgICAgIGlmIChpc0VzY2FwZSkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgc2V0SXNJbnNpZGVUcmVlSXRlbShmYWxzZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHRyZWVJdGVtTm9kZSA9IHRyZWVJdGVtUmVmLmN1cnJlbnQ7XHJcbiAgICAgICAgICAgIGlmICh0cmVlSXRlbU5vZGUpIHtcclxuICAgICAgICAgICAgICAgIHRyZWVJdGVtTm9kZS5mb2N1cygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9LCBbaXNJbnNpZGVUcmVlSXRlbV0pO1xyXG4gICAgY29uc3QgZGVmYXVsdEljb24gPSBSZWFjdC51c2VNZW1vKCgpID0+IG5vZGVUeXBlID09PSBUcmVlTm9kZVR5cGUuYnJhbmNoID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9sZGVySWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUgfSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQXJ0aWNsZUljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlIH0pKSwgW25vZGVUeXBlXSk7XHJcbiAgICAvLyBNZW1vaXNlIHRoZSBsYWJlbCBKU1ggc28gdGhlIGBjaGVja2JveFByb3BzYCBtZW1vIGJlbG93IGFjdHVhbGx5IGhhc1xyXG4gICAgLy8gYSBzdGFibGUgYGxhYmVsVGV4dGAgcmVmZXJlbmNlIGJldHdlZW4gcmVuZGVycy4gUHJldmlvdXNseSB0aGlzXHJcbiAgICAvLyBlbGVtZW50IHdhcyByZS1jcmVhdGVkIG9uIGV2ZXJ5IHJlbmRlciwgd2hpY2ggZm9yY2VkXHJcbiAgICAvLyBgY2hlY2tib3hQcm9wc2AgdG8gYWxzbyBiZSByZS1jcmVhdGVkIGFuZCBhbnkgZnV0dXJlIFJlYWN0Lm1lbW8gb25cclxuICAgIC8vIENoZWNrYm94L0luZGV0ZXJtaW5hdGVDaGVja2JveCB3b3VsZCBhbHdheXMgYmFpbCBvdXQuXHJcbiAgICBjb25zdCBsYWJlbFRleHQgPSBSZWFjdC51c2VNZW1vKCgpID0+IChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZExhYmVsV3JhcHBlciwgeyB0aGVtZTogdGhlbWUsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBzdHlsZTogbGFiZWxTdHlsZSwgaWQ6IGAke2l0ZW1JZH0tbGFiZWxgLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWxhYmVsYCB9LFxyXG4gICAgICAgIGhhc0ljb25zICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KEljb25XcmFwcGVyLCB7IGlzSW52ZXJzZTogaXNJbnZlcnNlLCB0aGVtZTogdGhlbWUsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0taWNvbmAgfSwgaWNvbiB8fCBkZWZhdWx0SWNvbikpLFxyXG4gICAgICAgIGxhYmVsKSksIFtcclxuICAgICAgICB0aGVtZSxcclxuICAgICAgICBpc0Rpc2FibGVkLFxyXG4gICAgICAgIGlzSW52ZXJzZSxcclxuICAgICAgICBsYWJlbFN0eWxlLFxyXG4gICAgICAgIGl0ZW1JZCxcclxuICAgICAgICB0ZXN0SWQsXHJcbiAgICAgICAgaGFzSWNvbnMsXHJcbiAgICAgICAgaWNvbixcclxuICAgICAgICBkZWZhdWx0SWNvbixcclxuICAgICAgICBsYWJlbCxcclxuICAgIF0pO1xyXG4gICAgY29uc3QgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gYWRkaXRpb25hbENvbnRlbnQgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIsIHsgdGhlbWU6IHRoZW1lLCBpZDogYCR7aXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCA/PyBpdGVtSWR9LWFkZGl0aW9uYWxjb250ZW50d3JhcHBlcmAgfSwgYWRkaXRpb25hbENvbnRlbnQpKSA6IG51bGwsIFthZGRpdGlvbmFsQ29udGVudCwgdGhlbWUsIGl0ZW1JZCwgdGVzdElkXSk7XHJcbiAgICAvLyBTdGFibGUgcGVyLWNoaWxkIGhpZXJhcmNoeSB2YWx1ZXMuIFRoZSByZWZlcmVuY2UgbXVzdCBub3QgY2hhbmdlIG9uXHJcbiAgICAvLyByZS1yZW5kZXJzIHRyaWdnZXJlZCBieSBUcmVlVmlld1NlbGVjdGlvbkNvbnRleHQsIG90aGVyd2lzZSBldmVyeVxyXG4gICAgLy8gbmVzdGVkIFRyZWVJdGVtIHJlLXJlbmRlcnMgdGhyb3VnaCB0aGUgY29udGV4dCBhbmQgUmVhY3QubWVtbyBpc1xyXG4gICAgLy8gZGVmZWF0ZWQuXHJcbiAgICBjb25zdCBjaGlsZEhpZXJhcmNoaWVzID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY291bnQgPSBSZWFjdC5DaGlsZHJlbi5jb3VudChjaGlsZHJlbik7XHJcbiAgICAgICAgY29uc3QgYXJyID0gbmV3IEFycmF5KGNvdW50KTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcclxuICAgICAgICAgICAgYXJyW2ldID0ge1xyXG4gICAgICAgICAgICAgICAgZGVwdGg6IGl0ZW1EZXB0aCArIDEsXHJcbiAgICAgICAgICAgICAgICBwYXJlbnREZXB0aDogaXRlbURlcHRoLFxyXG4gICAgICAgICAgICAgICAgaXNUb3BMZXZlbDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBpbmRleDogaSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGFycjtcclxuICAgIH0sIFtjaGlsZHJlbiwgaXRlbURlcHRoXSk7XHJcbiAgICAvLyBNZW1vaXplIGlubGluZSBzdHlsZSBvYmplY3RzIHRvIHByZXZlbnQgdW5uZWNlc3NhcnkgcmUtcmVuZGVyc1xyXG4gICAgY29uc3QgY2hlY2tib3hJbnB1dFN0eWxlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoeyBtYXJnaW5SaWdodDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDMgfSksIFt0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwM10pO1xyXG4gICAgY29uc3QgY2hlY2tib3hMYWJlbFN0eWxlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xyXG4gICAgICAgIHBhZGRpbmc6IDAsXHJcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcclxuICAgIH0pLCBbXSk7XHJcbiAgICAvLyBQcm9wcyBzaGFyZWQgYnkgQ2hlY2tib3ggYW5kIEluZGV0ZXJtaW5hdGVDaGVja2JveFxyXG4gICAgY29uc3QgY2hlY2tib3hQcm9wcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcclxuICAgICAgICBkaXNhYmxlZDogaXNEaXNhYmxlZCxcclxuICAgICAgICBoaWRlRm9jdXM6IHRydWUsXHJcbiAgICAgICAgaWQ6IGAke2l0ZW1JZH0tY2hlY2tib3hgLFxyXG4gICAgICAgIGlucHV0U3R5bGU6IGNoZWNrYm94SW5wdXRTdHlsZSxcclxuICAgICAgICBsYWJlbFN0eWxlOiBjaGVja2JveExhYmVsU3R5bGUsXHJcbiAgICAgICAgbGFiZWxUZXh0OiBsYWJlbFRleHQsXHJcbiAgICAgICAgb25DaGFuZ2U6IGNoZWNrYm94Q2hhbmdlSGFuZGxlcixcclxuICAgICAgICB0YWJJbmRleDogLTEsXHJcbiAgICAgICAgdGVzdElkOiBgJHtpdGVtSWR9LWNoZWNrYm94YCxcclxuICAgIH0pLCBbXHJcbiAgICAgICAgaXNEaXNhYmxlZCxcclxuICAgICAgICBpdGVtSWQsXHJcbiAgICAgICAgY2hlY2tib3hJbnB1dFN0eWxlLFxyXG4gICAgICAgIGNoZWNrYm94TGFiZWxTdHlsZSxcclxuICAgICAgICBsYWJlbFRleHQsXHJcbiAgICAgICAgY2hlY2tib3hDaGFuZ2VIYW5kbGVyLFxyXG4gICAgXSk7XHJcbiAgICBjb25zdCBvbkV4cGFuZGVkQ2xpY2tlZCA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgaGFuZGxlRXhwYW5kZWRDaGFuZ2UoZXZlbnQsIGl0ZW1JZCk7XHJcbiAgICB9LCBbaGFuZGxlRXhwYW5kZWRDaGFuZ2UsIGl0ZW1JZF0pO1xyXG4gICAgY29uc3QgaGFuZGxlRXhwYW5kQ2xpY2sgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBpZiAoIWlzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIG9uRXhwYW5kZWRDbGlja2VkKGV2ZW50KTtcclxuICAgICAgICB9XHJcbiAgICB9LCBbaXNEaXNhYmxlZCwgb25FeHBhbmRlZENsaWNrZWRdKTtcclxuICAgIGNvbnN0IGhhbmRsZU9uQ2xpY2sgPSAoZXZlbnQpID0+IHtcclxuICAgICAgICBpZiAoaXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjdXJyZW50RWxlbWVudCA9IGV2ZW50LnRhcmdldDtcclxuICAgICAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnQgPSBjdXJyZW50RWxlbWVudC5jbG9zZXN0KCdidXR0b24sIFtyb2xlPVwiYnV0dG9uXCJdLCBhW2hyZWZdLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgW3JvbGU9XCJtZW51aXRlbVwiXScpO1xyXG4gICAgICAgIC8vIFByZXZlbnRpbmcgc2VsZWN0aW5nIHRoZSBpdGVtIHdoZW4gY2xpY2tpbmcgb24gaW50ZXJhY3RpdmUgZWxlbWVudHMgd2hlbiBgc2VsZWN0YWJsZWAgaXMgYHNpbmdsZWBcclxuICAgICAgICBpZiAoaW50ZXJhY3RpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIElmIHNlbGVjdFBhcmVudHMgaXMgZmFsc2UgYW5kIHRoaXMgaXMgYSBwYXJlbnQgaXRlbSwgaGFuZGxlIGV4cGFuZC9jb2xsYXBzZSBpbnN0ZWFkIG9mIHNlbGVjdGlvblxyXG4gICAgICAgIGlmIChzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUuc2luZ2xlICYmXHJcbiAgICAgICAgICAgICFzZWxlY3RQYXJlbnRzICYmXHJcbiAgICAgICAgICAgIGhhc093blRyZWVJdGVtcykge1xyXG4gICAgICAgICAgICBvbkV4cGFuZGVkQ2xpY2tlZChldmVudCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gSW4gc2VsZWN0YWJsZT1vZmYgbW9kZSwgY2xpY2tpbmcgYW55d2hlcmUgb24gYSBwYXJlbnQgaXRlbSB0b2dnbGVzIGV4cGFuZC9jb2xsYXBzZVxyXG4gICAgICAgIGlmIChzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUub2ZmICYmIGhhc093blRyZWVJdGVtcykge1xyXG4gICAgICAgICAgICBvbkV4cGFuZGVkQ2xpY2tlZChldmVudCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5zaW5nbGUpIHtcclxuICAgICAgICAgICAgaGFuZGxlQ2xpY2soZXZlbnQsIGl0ZW1JZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHRhYkluZGV4ID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XHJcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGl0ZW1Ub0ZvY3VzID09PSBpdGVtSWQgPyAwIDogLTE7XHJcbiAgICB9LCBbaXNEaXNhYmxlZCwgaXRlbVRvRm9jdXMsIGl0ZW1JZF0pO1xyXG4gICAgY29uc3Qgc2hvdWxkU2hvd0NoZWNrYm94ID0gc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLm11bHRpICYmXHJcbiAgICAgICAgKGlzVG9wTGV2ZWxTZWxlY3RhYmxlICE9PSBmYWxzZSB8fCAhdG9wTGV2ZWwpO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGFsbG93cyBmb3Iga2V5Ym9hcmQgbmF2aWdhdGlvbiB3aXRoaW4gdGhlIHRyZWUgaXRlbS5cclxuICAgICAqXHJcbiAgICAgKiBQcmVzc2luZyBgQ3RybCArIEVudGVyYCBvciBgQ29tbWFuZCArIEVudGVyYCBmb2N1c2VzIHRoZSBmaXJzdCBpbnRlcmFjdGl2ZSBlbGVtZW50IHdpdGhpbiB0aGUgdHJlZSBpdGVtXHJcbiAgICAgKiBhbmQgbG9ja3MgZm9jdXMgaW5zaWRlIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogSWYgdGhlIGZvY3VzIGlzIHdpdGhpbiB0aGUgbGFiZWwgb3IgYWRkaXRpb25hbCBjb250ZW50LCBpdCBoYW5kbGVzIGtleSBldmVudHMgZm9yIGludGVyYWN0aW9uIGVsZW1lbnRzLlxyXG4gICAgICpcclxuICAgICAqIEl0IGFsc28gaGFuZGxlcyB0aGUgb3RoZXIga2V5cyB0byB0cmlnZ2VyIHRoZSBjbGljayBldmVudCBvbiB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICogKiovXHJcbiAgICBjb25zdCBvbktleURvd25IYW5kbGVyID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBrZXksIHRhcmdldCwgY3VycmVudFRhcmdldCB9ID0gZXZlbnQ7XHJcbiAgICAgICAgY29uc3QgaXNFbnRlciA9IGtleSA9PT0gJ0VudGVyJztcclxuICAgICAgICBjb25zdCBpc0N0cmxPckNvbW1hbmQgPSBldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXk7XHJcbiAgICAgICAgY29uc3QgaXNDdHJsRW50ZXIgPSBpc0N0cmxPckNvbW1hbmQgJiYgaXNFbnRlcjtcclxuICAgICAgICAvLyBJZiB0aGUga2V5IGlzIEN0cmwgKyBFbnRlciBvciBDb21tYW5kICsgRW50ZXIsIGZvY3VzIHRoZSBmaXJzdCBpbnRlcmFjdGl2ZSBlbGVtZW50XHJcbiAgICAgICAgLy8gYW5kIGxvY2sgZm9jdXMgaW5zaWRlIHRoZSB0cmVlIGl0ZW1cclxuICAgICAgICBpZiAoaXNDdHJsRW50ZXIgJiYgdGFyZ2V0ID09PSBjdXJyZW50VGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIHNldElzSW5zaWRlVHJlZUl0ZW0odHJ1ZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudHNMaXN0ID0gZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyhjdXJyZW50VGFyZ2V0LCBpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudFRvRm9jdXMgPSBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdFswXTtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnRUb0ZvY3VzKSB7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50VG9Gb2N1cy5mb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBFbnN1cmUgdmFsaWQgQ1NTIHNlbGVjdG9ycyBieSBlc2NhcGluZyBzcGVjaWFsIGNoYXJhY3RlcnMgKGUuZy4sIHBlcmlvZHMgaW4gaXRlbUlkKVxyXG4gICAgICAgIGNvbnN0IHNhZmVJdGVtSWQgPSBDU1MuZXNjYXBlKGl0ZW1JZCk7XHJcbiAgICAgICAgY29uc3QgaXNXaXRoaW5MYWJlbE9yQWRkaXRpb25hbENvbnRlbnQgPSB0YXJnZXQuY2xvc2VzdChgIyR7c2FmZUl0ZW1JZH0tbGFiZWwsICMke3NhZmVJdGVtSWR9LWFkZGl0aW9uYWxjb250ZW50d3JhcHBlcmApO1xyXG4gICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaXMgd2l0aGluIHRoZSBsYWJlbCBvciBhZGRpdGlvbmFsIGNvbnRlbnQsIGhhbmRsZSBrZXkgZXZlbnRzIGZvciB0aG9zZSBhcmVhc1xyXG4gICAgICAgIGlmIChpc1dpdGhpbkxhYmVsT3JBZGRpdGlvbmFsQ29udGVudCkge1xyXG4gICAgICAgICAgICBoYW5kbGVMYWJlbEFuZEFkZGl0aW9uYWxDb250ZW50S2V5RG93bihldmVudCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBpcyB0aGUgdHJlZSBpdGVtIGl0c2VsZiwgaGFuZGxlIGtleSBkb3duIGZvciB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKHRhcmdldCA9PT0gY3VycmVudFRhcmdldCkge1xyXG4gICAgICAgICAgICBoYW5kbGVLZXlEb3duKGV2ZW50KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgIH0sIFtcclxuICAgICAgICBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzLFxyXG4gICAgICAgIGludGVyYWN0aXZlRWxlbWVudHMsXHJcbiAgICAgICAgaXRlbUlkLFxyXG4gICAgICAgIGhhbmRsZUxhYmVsQW5kQWRkaXRpb25hbENvbnRlbnRLZXlEb3duLFxyXG4gICAgICAgIGhhbmRsZUtleURvd24sXHJcbiAgICBdKTtcclxuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChUcmVlSXRlbUNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IGNvbnRleHRWYWx1ZSB9LFxyXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBzdHlsZTogdHJlZUl0ZW1TdHlsZXMgfSxcclxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRUcmVlSXRlbSwgT2JqZWN0LmFzc2lnbih7fSwgcmVzdCwgeyBcImFyaWEtZXhwYW5kZWRcIjogaGFzT3duVHJlZUl0ZW1zID8gZXhwYW5kZWQgOiBudWxsLCBcImFyaWEtc2VsZWN0ZWRcIjogc2VsZWN0ZWRJdGVtLCBcImFyaWEtY2hlY2tlZFwiOiBzaG91bGRTaG93Q2hlY2tib3ggPyBhcmlhQ2hlY2tlZFZhbHVlIDogbnVsbCwgXCJkYXRhLXRlc3RpZFwiOiB0ZXN0SWQsIGRlcHRoOiBpdGVtRGVwdGgsIGhhc093blRyZWVJdGVtczogaGFzT3duVHJlZUl0ZW1zLCBpZDogaXRlbUlkLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgaXNWaXJ0dWFsaXplZDogaGllcmFyY2h5Q29udGV4dC5pc1ZpcnR1YWxpemVkLCBub2RlVHlwZTogbm9kZVR5cGUsIHJvbGU6IFwidHJlZWl0ZW1cIiwgc2VsZWN0YWJsZVR5cGU6IHNlbGVjdGFibGUsIHNlbGVjdGVkOiBzZWxlY3RlZEl0ZW0sIHRoZW1lOiB0aGVtZSwgdGFiSW5kZXg6IHRhYkluZGV4LCBvbktleURvd246IG9uS2V5RG93bkhhbmRsZXIsIHJlZjogdHJlZUl0ZW1SZWYsIGhvdmVyQ29sb3I6IGhvdmVyQ29sb3IgfSksXHJcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZEl0ZW1XcmFwcGVyLCB7IFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkID8/IGl0ZW1JZH0taXRlbXdyYXBwZXJgLCBkZXB0aDogaXRlbURlcHRoLCBoYXNBZGRpdGlvbmFsQ29udGVudDogISFhZGRpdGlvbmFsQ29udGVudCwgaGFzQ3VzdG9tSWNvblNpemU6ICEhZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSwgaWQ6IGAke2l0ZW1JZH0taXRlbXdyYXBwZXJgLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgbm9kZVR5cGU6IG5vZGVUeXBlLCBzZWxlY3RhYmxlOiBzZWxlY3RhYmxlLCBzdHlsZTogc3R5bGUsIHRoZW1lOiB0aGVtZSwgcmVmOiBtZXJnZVJlZnMocmVmLCBmb2N1c1RyYXBFbGVtZW50KSwgb25DbGljazogaGFuZGxlT25DbGljayB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGhhc093blRyZWVJdGVtcyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRFeHBhbmRXcmFwcGVyLCB7IHNpemU6IGV4cGFuZEljb25TdHlsZXM/LnNpemUsIGNvbG9yOiBleHBhbmRJY29uU3R5bGVzPy5jb2xvciwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1leHBhbmRgLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgb25DbGljazogaGFuZGxlRXhwYW5kQ2xpY2ssIHRoZW1lOiB0aGVtZSB9LCBleHBhbmRlZCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEV4cGFuZE1vcmVJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgc2l6ZTogZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSB9KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChDaGV2cm9uUmlnaHRJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgc2l6ZTogZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSB9KSkpKSxcclxuICAgICAgICAgICAgICAgICAgICBzaG91bGRTaG93Q2hlY2tib3ggPyAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRDaGVja2JveFdyYXBwZXIsIHsgaGFzQWRkaXRpb25hbENvbnRlbnQ6ICEhYWRkaXRpb25hbENvbnRlbnQsIHRoZW1lOiB0aGVtZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChJbmRldGVybWluYXRlQ2hlY2tib3gsIE9iamVjdC5hc3NpZ24oe30sIGNoZWNrYm94UHJvcHMsIHsgc3RhdHVzOiBjaGVja2VkU3RhdHVzIH0pKSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChDaGVja2JveCwgT2JqZWN0LmFzc2lnbih7fSwgY2hlY2tib3hQcm9wcywgeyBjaGVja2VkOiBjaGVja2VkU3RhdHVzVG9Cb29sZWFuKGNoZWNrZWRTdGF0dXMpIH0pKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbFRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQpKSksXHJcbiAgICAgICAgICAgICAgICBoYXNHdWlkZUxpbmVzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgKGhpZXJhcmNoeUNvbnRleHQuaXNWaXJ0dWFsaXplZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGl0ZW1EZXB0aCA+IDAgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LmZyb20oeyBsZW5ndGg6IGl0ZW1EZXB0aCB9LCAoXywgZCkgPT4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVmlydHVhbGl6ZWRHdWlkZUxpbmUsIHsga2V5OiBgZ3VpZGVsaW5lLSR7ZH1gLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LXZpcnR1YWxpemVkLWd1aWRlbGluZS0ke2R9YCwgdGhlbWU6IHRoZW1lLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgc3R5bGU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXRJbmxpbmVTdGFydDogYGNhbGMoJHtjYWxjdWxhdGVPZmZzZXQoVHJlZU5vZGVUeXBlLmJyYW5jaCwgZCwgZmFsc2UsIGZhbHNlLCB0cnVlKX0gKyAke2V4cGFuZEljb25TdHlsZXM/LnNpemUgIT09IHVuZGVmaW5lZCA/IGAke2V4cGFuZEljb25TdHlsZXMuc2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn0gLyAyIC0gMC41cHgpYCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IH0pKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiBoYXNPd25UcmVlSXRlbXMgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZGVkICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KEd1aWRlTGluZSwgeyBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWd1aWRlbGluZWAsIHRoZW1lOiB0aGVtZSwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIGd1aWRlTGluZUxlZnQ6IGBjYWxjKCR7Y2FsY3VsYXRlT2Zmc2V0KFRyZWVOb2RlVHlwZS5icmFuY2gsIGl0ZW1EZXB0aCwgZmFsc2UsIGZhbHNlLCBmYWxzZSl9ICsgJHtleHBhbmRJY29uU3R5bGVzPy5zaXplICE9PSB1bmRlZmluZWQgPyBgJHtleHBhbmRJY29uU3R5bGVzLnNpemV9cHhgIDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDZ9IC8gMiAtIDAuNXB4KSBgIH0pKSksXHJcbiAgICAgICAgICAgICAgICBSZWFjdC5DaGlsZHJlbi5tYXAoY2hpbGRyZW4sIChjaGlsZCwgY2hpbGRJbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZD8udHlwZSAhPT0gVHJlZUl0ZW0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyBVc2UgdGhlIHN0YWJsZSwgcHJlLW1lbW9pc2VkIHZhbHVlIChzZWUgY2hpbGRIaWVyYXJjaGllcyBhYm92ZSkuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmVzdGVkSGllcmFyY2h5VmFsdWUgPSBjaGlsZEhpZXJhcmNoaWVzW2NoaWxkSW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChUcmFuc2l0aW9uLCB7IGlzT3BlbjogZXhwYW5kZWQsIHVubW91bnRPbkV4aXQ6IHRydWUgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInVsXCIsIHsgcm9sZTogXCJncm91cFwiIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dC5Qcm92aWRlciwgeyBrZXk6IGNoaWxkLnByb3BzLml0ZW1JZCwgdmFsdWU6IG5lc3RlZEhpZXJhcmNoeVZhbHVlIH0sIGNoaWxkKSkpKTtcclxuICAgICAgICAgICAgICAgIH0pKSxcclxuICAgICAgICAgICAgaXNNYWNPUyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChWaXN1YWxseUhpZGRlbiwgbnVsbCxcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQW5ub3VuY2UsIG51bGwsIGV4cGFuZGVkXHJcbiAgICAgICAgICAgICAgICAgICAgPyBpMThuLmV4cGFuc2lvblN0YXRlLmV4cGFuZGVkXHJcbiAgICAgICAgICAgICAgICAgICAgOiBpMThuLmV4cGFuc2lvblN0YXRlLmNvbGxhcHNlZCkpKSkpKTtcclxufSk7XHJcbi8qKlxyXG4gKiBDdXN0b20gY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgUmVhY3QubWVtb1xyXG4gKiBPbmx5IHJlLXJlbmRlciBUcmVlSXRlbSB3aGVuIHJlbGV2YW50IHByb3BzIGNoYW5nZVxyXG4gKi9cclxuZnVuY3Rpb24gYXJlUHJvcHNFcXVhbChwcmV2UHJvcHMsIG5leHRQcm9wcykge1xyXG4gICAgLy8gQ2hlY2sgaWYgaXRlbUlkIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaXRlbUlkICE9PSBuZXh0UHJvcHMuaXRlbUlkKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgbGFiZWwgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5sYWJlbCAhPT0gbmV4dFByb3BzLmxhYmVsKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgZGlzYWJsZWQgc3RhdGUgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5pc0Rpc2FibGVkICE9PSBuZXh0UHJvcHMuaXNEaXNhYmxlZCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGljb24gY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5pY29uICE9PSBuZXh0UHJvcHMuaWNvbikge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGFkZGl0aW9uYWwgY29udGVudCBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmFkZGl0aW9uYWxDb250ZW50ICE9PSBuZXh0UHJvcHMuYWRkaXRpb25hbENvbnRlbnQpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBob3ZlciBjb2xvciBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmhvdmVyQ29sb3IgIT09IG5leHRQcm9wcy5ob3ZlckNvbG9yKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgY2hpbGRyZW4gY2hhbmdlZCAoZm9yIG5lc3RlZCB0cmVlIGl0ZW1zKVxyXG4gICAgLy8gVXNpbmcgdHlwZSBhc3NlcnRpb24gc2luY2UgY2hpbGRyZW4gY29tZXMgZnJvbSBSZWFjdC5IVE1MQXR0cmlidXRlc1xyXG4gICAgaWYgKHByZXZQcm9wcy5jaGlsZHJlbiAhPT0gbmV4dFByb3BzLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgc3R5bGVzIGNoYW5nZWRcclxuICAgIC8vIFVzaW5nIHR5cGUgYXNzZXJ0aW9uIHNpbmNlIHN0eWxlIGNvbWVzIGZyb20gUmVhY3QuSFRNTEF0dHJpYnV0ZXNcclxuICAgIGlmIChwcmV2UHJvcHMuc3R5bGUgIT09IG5leHRQcm9wcy5zdHlsZSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChwcmV2UHJvcHMubGFiZWxTdHlsZSAhPT0gbmV4dFByb3BzLmxhYmVsU3R5bGUpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAocHJldlByb3BzLnRyZWVJdGVtU3R5bGVzICE9PSBuZXh0UHJvcHMudHJlZUl0ZW1TdHlsZXMpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBBbGwgcmVsZXZhbnQgcHJvcHMgYXJlIGVxdWFsLCBza2lwIHJlLXJlbmRlclxyXG4gICAgcmV0dXJuIHRydWU7XHJcbn1cclxuLyoqXHJcbiAqIE1lbW9pemVkIFRyZWVJdGVtIGNvbXBvbmVudFxyXG4gKiBPbmx5IHJlLXJlbmRlcnMgd2hlbiByZWxldmFudCBwcm9wcyBjaGFuZ2UsIGltcHJvdmluZyBwZXJmb3JtYW5jZSBmb3IgbGFyZ2UgdHJlZXNcclxuICovXHJcbmV4cG9ydCBjb25zdCBUcmVlSXRlbSA9IFJlYWN0Lm1lbW8oVHJlZUl0ZW1Db21wb25lbnQsIGFyZVByb3BzRXF1YWwpO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1UcmVlSXRlbS5qcy5tYXAiXX0= */"));
|
|
29369
29371
|
}, " &:hover{background:", function (props) {
|
|
29370
29372
|
return getHoverBackground({
|
|
29371
29373
|
isDisabled: props.isDisabled,
|
|
@@ -29373,7 +29375,7 @@
|
|
|
29373
29375
|
isInverse: props.isInverse,
|
|
29374
29376
|
theme: props.theme
|
|
29375
29377
|
});
|
|
29376
|
-
}, ";}}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF3QmlDIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dCB9IGZyb20gJy4vVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdDb25maWdDb250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld0NvbmZpZ0NvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0V4cGFuc2lvbkNvbnRleHQgfSBmcm9tICcuL1RyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyBjYWxjdWxhdGVPZmZzZXQsIGdldFRyZWVJdGVtTGFiZWxDb2xvciwgZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yLCBUcmVlTm9kZVR5cGUsIH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IEkxOG5Db250ZXh0IH0gZnJvbSAnLi4vLi4nO1xyXG5pbXBvcnQgdXNlRGV2aWNlRGV0ZWN0IGZyb20gJy4uLy4uL2hvb2tzL3VzZURldmljZURldGVjdCc7XHJcbmltcG9ydCB7IHVzZUZvY3VzTG9jayB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZUZvY3VzTG9jayc7XHJcbmltcG9ydCB7IHVzZUlzSW52ZXJzZSB9IGZyb20gJy4uLy4uL2ludmVyc2UnO1xyXG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgfSBmcm9tICcuLi8uLi90aGVtZS9UaGVtZUNvbnRleHQnO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmltcG9ydCB7IEFubm91bmNlIH0gZnJvbSAnLi4vQW5ub3VuY2UnO1xyXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gJy4uL0NoZWNrYm94JztcclxuaW1wb3J0IHsgSW5kZXRlcm1pbmF0ZUNoZWNrYm94LCBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMsIH0gZnJvbSAnLi4vSW5kZXRlcm1pbmF0ZUNoZWNrYm94JztcclxuaW1wb3J0IHsgVHJhbnNpdGlvbiB9IGZyb20gJy4uL1RyYW5zaXRpb24nO1xyXG5pbXBvcnQgeyBWaXN1YWxseUhpZGRlbiB9IGZyb20gJy4uL1Zpc3VhbGx5SGlkZGVuJztcclxuY29uc3QgU3R5bGVkVHJlZUl0ZW0gPSBzdHlsZWQubGkgYFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDBcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWw3MDB9O1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIGN1cnNvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbVdyYXBwZXJDdXJzb3IocHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMuc2VsZWN0YWJsZVR5cGUsIHByb3BzLm5vZGVUeXBlKX07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcblxuICBwYWRkaW5nLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCBmYWxzZSwgZmFsc2UsIHByb3BzLmlzVmlydHVhbGl6ZWQpfTtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuXG4gICAgJiA+ICo6Zmlyc3QtY2hpbGQge1xuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkXG4gICAgICAgICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLmZvY3VzSW52ZXJzZVxyXG4gICAgOiBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXN9O1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIGZhbHNlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgbWFyZ2luLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCB0cnVlLCB0cnVlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgcGFkZGluZy1ibG9jay1lbmQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctYmxvY2stc3RhcnQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJlxyXG4gICAgY3NzIGBcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzLmlzSW52ZXJzZVxyXG4gICAgICAgID8gcHJvcHMudGhlbWUuY29sb3JzLnRlcnRpYXJ5NTAwXHJcbiAgICAgICAgOiBwcm9wcy50aGVtZS5jb2xvcnMucHJpbWFyeTUwMH07XG4gICAgICAgICAgYmxvY2stc2l6ZTogMTAwJTtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICBpbmxpbmUtc2l6ZTogJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ6IDA7XG4gICAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAwO1xuICAgICAgICB9XG4gICAgICBgfVxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBnZXRIb3ZlckJhY2tncm91bmQoe1xyXG4gICAgaXNEaXNhYmxlZDogcHJvcHMuaXNEaXNhYmxlZCxcclxuICAgIGhvdmVyQ29sb3I6IHByb3BzLmhvdmVyQ29sb3IsXHJcbiAgICBpc0ludmVyc2U6IHByb3BzLmlzSW52ZXJzZSxcclxuICAgIHRoZW1lOiBwcm9wcy50aGVtZSxcclxufSl9O1xuICAgIH1cbiAgfVxuYDtcclxuZnVuY3Rpb24gZ2V0SG92ZXJCYWNrZ3JvdW5kKHsgaXNEaXNhYmxlZCwgaG92ZXJDb2xvciwgaXNJbnZlcnNlLCB0aGVtZSB9KSB7XHJcbiAgICBpZiAoaXNEaXNhYmxlZClcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgaWYgKGhvdmVyQ29sb3IpXHJcbiAgICAgICAgcmV0dXJuIGhvdmVyQ29sb3I7XHJcbiAgICBjb25zdCB0cmFuc3BhcmVuY3kgPSBpc0ludmVyc2UgPyAwLjggOiAwLjk1O1xyXG4gICAgcmV0dXJuIHRyYW5zcGFyZW50aXplKHRyYW5zcGFyZW5jeSwgdGhlbWUuY29sb3JzLm5ldXRyYWw5MDApO1xyXG59XHJcbmNvbnN0IEljb25XcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBtYXJnaW4tbGVmdDogMDtcblxuICBzdmcge1xuICAgIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pY29uU2l6ZXMubWVkaXVtfXB4O1xuICAgIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgfVxuYDtcclxuY29uc3QgU3R5bGVkTGFiZWxXcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgd2lkdGg6IDEwMCU7XG5gO1xyXG5jb25zdCBTdHlsZWRFeHBhbmRXcmFwcGVyID0gc3R5bGVkLmRpdiBgXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgbWFyZ2luLXJpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuY29sb3IgfHxcclxuICAgIGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIHdpZHRoOiAkeyh7IHNpemUsIHRoZW1lIH0pID0+IHNpemUgIT09IHVuZGVmaW5lZCA/IGAke3NpemV9cHhgIDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDZ9O1xuICBoZWlnaHQ6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG5gO1xyXG5jb25zdCBHdWlkZUxpbmUgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDh9O1xuICBib3R0b206IDA7XG4gIGluc2V0LWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy5ndWlkZUxpbmVMZWZ0fTtcbiAgd2lkdGg6IDA7XG4gIGJvcmRlci1pbmxpbmUtc3RhcnQ6IDFweCBzb2xpZFxuICAgICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHRyYW5zcGFyZW50aXplKDAuNywgcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDApXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMzAwfTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHotaW5kZXg6IDE7XG5gO1xyXG5jb25zdCBWaXJ0dWFsaXplZEd1aWRlTGluZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogMDtcbiAgYm9yZGVyLWlubGluZS1zdGFydDogMXB4IHNvbGlkXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDEwMClcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwzMDB9O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW1Db21wb25lbnQgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XHJcbiAgICBjb25zdCB7IGFkZGl0aW9uYWxDb250ZW50LCBjaGlsZHJlbiwgaG92ZXJDb2xvciwgaWNvbiwgaW5kZXg6IGluZGV4UHJvcCwgbGFiZWwsIGxhYmVsU3R5bGUsIHN0eWxlLCB0ZXN0SWQsIHRvcExldmVsOiB0b3BMZXZlbFByb3AsIHRyZWVJdGVtU3R5bGVzLCAuLi5yZXN0IH0gPSBwcm9wcztcclxuICAgIGNvbnN0IHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xyXG4gICAgY29uc3QgaXNJbnZlcnNlID0gdXNlSXNJbnZlcnNlKCk7XHJcbiAgICAvLyBSZWFkIGhpZXJhcmNoeSBpbmZvcm1hdGlvbiBmcm9tIGNvbnRleHQgKHJlZHVjZXMgY2xvbmVFbGVtZW50IG92ZXJoZWFkKVxyXG4gICAgY29uc3QgaGllcmFyY2h5Q29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0KTtcclxuICAgIC8vIFVzZSBjb250ZXh0IHZhbHVlcyBpZiBwcm9wcyBhcmUgbm90IHByb3ZpZGVkIChmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSlcclxuICAgIGNvbnN0IGluZGV4ID0gaW5kZXhQcm9wICE9PSB1bmRlZmluZWQgPyBpbmRleFByb3AgOiBoaWVyYXJjaHlDb250ZXh0LmluZGV4O1xyXG4gICAgY29uc3QgdG9wTGV2ZWwgPSB0b3BMZXZlbFByb3AgIT09IHVuZGVmaW5lZCA/IHRvcExldmVsUHJvcCA6IGhpZXJhcmNoeUNvbnRleHQuaXNUb3BMZXZlbDtcclxuICAgIC8vIENvbnN1bWUgc3BsaXQgY29udGV4dHMgZm9yIHJlZHVjZWQgcmUtcmVuZGVyIHNjb3BlXHJcbiAgICBjb25zdCB7IGl0ZW1Ub0ZvY3VzIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGhhbmRsZUV4cGFuZGVkQ2hhbmdlIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGV4cGFuZEljb25TdHlsZXMsIGhhc0d1aWRlTGluZXMsIGhhc0ljb25zLCBpc1RvcExldmVsU2VsZWN0YWJsZSwgc2VsZWN0YWJsZSwgc2VsZWN0UGFyZW50cyA9IHRydWUsIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29uZmlnQ29udGV4dCk7XHJcbiAgICAvLyBQYXNzIHRoZSByZXNvbHZlZCB2YWx1ZXMgdG8gdXNlVHJlZUl0ZW1cclxuICAgIGNvbnN0IHByb3BzV2l0aEhpZXJhcmNoeSA9IHtcclxuICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICBpbmRleCxcclxuICAgICAgICB0b3BMZXZlbCxcclxuICAgICAgICBpdGVtRGVwdGg6IGhpZXJhcmNoeUNvbnRleHQuZGVwdGgsXHJcbiAgICAgICAgcGFyZW50RGVwdGg6IGhpZXJhcmNoeUNvbnRleHQucGFyZW50RGVwdGgsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyBjb250ZXh0VmFsdWUsIGhhbmRsZUNsaWNrLCBoYW5kbGVLZXlEb3duIH0gPSB1c2VUcmVlSXRlbShwcm9wc1dpdGhIaWVyYXJjaHksIGZvcndhcmRlZFJlZik7XHJcbiAgICBjb25zdCB7IGlzRGlzYWJsZWQgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IHsgaXNNYWNPUyB9ID0gdXNlRGV2aWNlRGV0ZWN0KCk7XHJcbiAgICBjb25zdCBpMThuID0gUmVhY3QudXNlQ29udGV4dChJMThuQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGNoZWNrYm94Q2hhbmdlSGFuZGxlciwgY2hlY2tlZFN0YXR1cywgZXhwYW5kZWQsIGhhc093blRyZWVJdGVtcywgaXRlbURlcHRoLCBpdGVtSWQsIHJlZiwgc2VsZWN0ZWRJdGVtcywgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IG5vZGVUeXBlID0gaGFzT3duVHJlZUl0ZW1zID8gVHJlZU5vZGVUeXBlLmJyYW5jaCA6IFRyZWVOb2RlVHlwZS5sZWFmO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZVxyXG4gICAgICAgID8gc2VsZWN0ZWRJdGVtcz8uWzBdPy5pdGVtSWQgPT09IGl0ZW1JZFxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IGFyaWFDaGVja2VkVmFsdWUgPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUubXVsdGlcclxuICAgICAgICA/IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5pbmRldGVybWluYXRlXHJcbiAgICAgICAgICAgID8gJ21peGVkJ1xyXG4gICAgICAgICAgICA6IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5jaGVja2VkXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgW2lzSW5zaWRlVHJlZUl0ZW0sIHNldElzSW5zaWRlVHJlZUl0ZW1dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgdHJlZUl0ZW1SZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XHJcbiAgICBjb25zdCBmb2N1c1RyYXBFbGVtZW50ID0gdXNlRm9jdXNMb2NrKGlzSW5zaWRlVHJlZUl0ZW0pO1xyXG4gICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50cyA9ICdidXR0b24sIFtyb2xlPVwiYnV0dG9uXCJdLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgYVtocmVmXSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJztcclxuICAgIGNvbnN0IGdldEludGVyYWN0aXZlRWxlbWVudHMgPSBSZWFjdC51c2VDYWxsYmFjaygoY29udGFpbmVyLCBzZWxlY3RvcikgPT4ge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSkuZmlsdGVyKGVsID0+ICFlbC5oYXNBdHRyaWJ1dGUoJ3RhYmluZGV4JykgfHxcclxuICAgICAgICAgICAgKGVsLnRhYkluZGV4ICE9PSB1bmRlZmluZWQgJiYgZWwudGFiSW5kZXggPj0gMCkpO1xyXG4gICAgfSwgW10pO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGFsbG93cyBmb3Iga2V5Ym9hcmQgbmF2aWdhdGlvbiB3aXRoaW4gdGhlIGxhYmVsIGFuZCBhZGRpdGlvbmFsIGNvbnRlbnQgb2YgYSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogWW91IGNhbiBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIHVzaW5nIHRoZSBgVGFiYCBrZXksIGFjdGl2YXRlIHRoZW0gd2l0aCBgRW50ZXJgIG9yIGBTcGFjZWAsXHJcbiAgICAgKiBhbmQgZXhpdCBvdXRzaWRlIGFuZCBmb2N1cyB0aGUgd2hvbGUgdHJlZSBpdGVtIHdpdGggYEVzY2FwZWAuXHJcbiAgICAgKiAqKi9cclxuICAgIGNvbnN0IGhhbmRsZUxhYmVsQW5kQWRkaXRpb25hbENvbnRlbnRLZXlEb3duID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBrZXksIHRhcmdldCwgY3VycmVudFRhcmdldCwgc2hpZnRLZXkgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gdGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNTcGFjZSA9IGtleSA9PT0gJyAnO1xyXG4gICAgICAgIGNvbnN0IGlzRXNjYXBlID0ga2V5ID09PSAnRXNjYXBlJztcclxuICAgICAgICBjb25zdCBpc1RhYiA9IGtleSA9PT0gJ1RhYic7XHJcbiAgICAgICAgY29uc3QgaXNBY3RpdmF0aW9uS2V5ID0gaXNFbnRlciB8fCBpc1NwYWNlO1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBgVGFiYCwgd2UgbmF2aWdhdGUgdGhyb3VnaCBpbnRlcmFjdGl2ZSBlbGVtZW50cyBpbnNpZGUgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmIChpc1RhYiAmJiBpc0luc2lkZVRyZWVJdGVtKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudHNMaXN0ID0gZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyhjdXJyZW50VGFyZ2V0LCBpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAgICAgLy8gRmlsdGVyIGxpc3Qgb2YgaW50ZXJhY3RpdmUgZWxlbWVudHMgd2hpY2ggYXJlIG9ubHkgaW5jbHVkZWQgZm9yIGN1cnJlbnQgdHJlZSBpdGVtXHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMgPSBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdC5maWx0ZXIoZWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2xvc2VzdFRyZWVJdGVtID0gZWwuY2xvc2VzdCgnW3JvbGU9XCJ0cmVlaXRlbVwiXScpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsb3Nlc3RUcmVlSXRlbSA9PT0gdHJlZUl0ZW1SZWYuY3VycmVudDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMuaW5kZXhPZihjdXJyZW50RWxlbWVudCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHNoaWZ0S2V5ID8gLTEgOiAxO1xyXG4gICAgICAgICAgICBjb25zdCB0b3RhbCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMubGVuZ3RoO1xyXG4gICAgICAgICAgICBjb25zdCBuZXh0SW5kZXggPSAoY3VycmVudEluZGV4ICsgZGlyZWN0aW9uICsgdG90YWwpICUgdG90YWw7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50c1tuZXh0SW5kZXhdO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudFRvRm9jdXMpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZWxlbWVudFRvRm9jdXMuZm9jdXMoKSwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBQcmVzc2luZyBgRW50ZXJgIG9yIGBTcGFjZWAgb24gYW4gaW50ZXJhY3RpdmUgZWxlbWVudCB3aWxsIHRyaWdnZXIgaXRzIGNsaWNrIGV2ZW50XHJcbiAgICAgICAgaWYgKGlzQWN0aXZhdGlvbktleSAmJiBpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgaW50ZXJhY3RpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE1vdmVzIGZvY3VzIG91dHNpZGUgdGhlIHRyZWUgaXRlbSBhbmQgZm9jdXNlcyB0aGUgdHJlZSBpdGVtIGl0c2VsZiB3aGVuIGBFc2NhcGVgIGlzIHByZXNzZWRcclxuICAgICAgICBpZiAoaXNFc2NhcGUpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHNldElzSW5zaWRlVHJlZUl0ZW0oZmFsc2UpO1xyXG4gICAgICAgICAgICBjb25zdCB0cmVlSXRlbU5vZGUgPSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICBpZiAodHJlZUl0ZW1Ob2RlKSB7XHJcbiAgICAgICAgICAgICAgICB0cmVlSXRlbU5vZGUuZm9jdXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzSW5zaWRlVHJlZUl0ZW1dKTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gUmVhY3QudXNlTWVtbygoKSA9PiBub2RlVHlwZSA9PT0gVHJlZU5vZGVUeXBlLmJyYW5jaCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEZvbGRlckljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KEFydGljbGVJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSksIFtub2RlVHlwZV0pO1xyXG4gICAgLy8gTWVtb2lzZSB0aGUgbGFiZWwgSlNYIHNvIHRoZSBgY2hlY2tib3hQcm9wc2AgbWVtbyBiZWxvdyBhY3R1YWxseSBoYXNcclxuICAgIC8vIGEgc3RhYmxlIGBsYWJlbFRleHRgIHJlZmVyZW5jZSBiZXR3ZWVuIHJlbmRlcnMuIFByZXZpb3VzbHkgdGhpc1xyXG4gICAgLy8gZWxlbWVudCB3YXMgcmUtY3JlYXRlZCBvbiBldmVyeSByZW5kZXIsIHdoaWNoIGZvcmNlZFxyXG4gICAgLy8gYGNoZWNrYm94UHJvcHNgIHRvIGFsc28gYmUgcmUtY3JlYXRlZCBhbmQgYW55IGZ1dHVyZSBSZWFjdC5tZW1vIG9uXHJcbiAgICAvLyBDaGVja2JveC9JbmRldGVybWluYXRlQ2hlY2tib3ggd291bGQgYWx3YXlzIGJhaWwgb3V0LlxyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gUmVhY3QudXNlTWVtbygoKSA9PiAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRMYWJlbFdyYXBwZXIsIHsgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgc3R5bGU6IGxhYmVsU3R5bGUsIGlkOiBgJHtpdGVtSWR9LWxhYmVsYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1sYWJlbGAgfSxcclxuICAgICAgICBoYXNJY29ucyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChJY29uV3JhcHBlciwgeyBpc0ludmVyc2U6IGlzSW52ZXJzZSwgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWljb25gIH0sIGljb24gfHwgZGVmYXVsdEljb24pKSxcclxuICAgICAgICBsYWJlbCkpLCBbXHJcbiAgICAgICAgdGhlbWUsXHJcbiAgICAgICAgaXNEaXNhYmxlZCxcclxuICAgICAgICBpc0ludmVyc2UsXHJcbiAgICAgICAgbGFiZWxTdHlsZSxcclxuICAgICAgICBpdGVtSWQsXHJcbiAgICAgICAgdGVzdElkLFxyXG4gICAgICAgIGhhc0ljb25zLFxyXG4gICAgICAgIGljb24sXHJcbiAgICAgICAgZGVmYXVsdEljb24sXHJcbiAgICAgICAgbGFiZWwsXHJcbiAgICBdKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBSZWFjdC51c2VNZW1vKCgpID0+IGFkZGl0aW9uYWxDb250ZW50ID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQWRkaXRpb25hbENvbnRlbnRXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaWQ6IGAke2l0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgIH0sIGFkZGl0aW9uYWxDb250ZW50KSkgOiBudWxsLCBbYWRkaXRpb25hbENvbnRlbnQsIHRoZW1lLCBpdGVtSWQsIHRlc3RJZF0pO1xyXG4gICAgLy8gU3RhYmxlIHBlci1jaGlsZCBoaWVyYXJjaHkgdmFsdWVzLiBUaGUgcmVmZXJlbmNlIG11c3Qgbm90IGNoYW5nZSBvblxyXG4gICAgLy8gcmUtcmVuZGVycyB0cmlnZ2VyZWQgYnkgVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0LCBvdGhlcndpc2UgZXZlcnlcclxuICAgIC8vIG5lc3RlZCBUcmVlSXRlbSByZS1yZW5kZXJzIHRocm91Z2ggdGhlIGNvbnRleHQgYW5kIFJlYWN0Lm1lbW8gaXNcclxuICAgIC8vIGRlZmVhdGVkLlxyXG4gICAgY29uc3QgY2hpbGRIaWVyYXJjaGllcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvdW50ID0gUmVhY3QuQ2hpbGRyZW4uY291bnQoY2hpbGRyZW4pO1xyXG4gICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShjb3VudCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGFycltpXSA9IHtcclxuICAgICAgICAgICAgICAgIGRlcHRoOiBpdGVtRGVwdGggKyAxLFxyXG4gICAgICAgICAgICAgICAgcGFyZW50RGVwdGg6IGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgIGlzVG9wTGV2ZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhcnI7XHJcbiAgICB9LCBbY2hpbGRyZW4sIGl0ZW1EZXB0aF0pO1xyXG4gICAgLy8gTWVtb2l6ZSBpbmxpbmUgc3R5bGUgb2JqZWN0cyB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IHJlLXJlbmRlcnNcclxuICAgIGNvbnN0IGNoZWNrYm94SW5wdXRTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHsgbWFyZ2luUmlnaHQ6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzIH0pLCBbdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDNdKTtcclxuICAgIGNvbnN0IGNoZWNrYm94TGFiZWxTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcclxuICAgICAgICBwYWRkaW5nOiAwLFxyXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICB9KSwgW10pO1xyXG4gICAgLy8gUHJvcHMgc2hhcmVkIGJ5IENoZWNrYm94IGFuZCBJbmRldGVybWluYXRlQ2hlY2tib3hcclxuICAgIGNvbnN0IGNoZWNrYm94UHJvcHMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XHJcbiAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaGlkZUZvY3VzOiB0cnVlLFxyXG4gICAgICAgIGlkOiBgJHtpdGVtSWR9LWNoZWNrYm94YCxcclxuICAgICAgICBpbnB1dFN0eWxlOiBjaGVja2JveElucHV0U3R5bGUsXHJcbiAgICAgICAgbGFiZWxTdHlsZTogY2hlY2tib3hMYWJlbFN0eWxlLFxyXG4gICAgICAgIGxhYmVsVGV4dDogbGFiZWxUZXh0LFxyXG4gICAgICAgIG9uQ2hhbmdlOiBjaGVja2JveENoYW5nZUhhbmRsZXIsXHJcbiAgICAgICAgdGFiSW5kZXg6IC0xLFxyXG4gICAgICAgIHRlc3RJZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICB9KSwgW1xyXG4gICAgICAgIGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaXRlbUlkLFxyXG4gICAgICAgIGNoZWNrYm94SW5wdXRTdHlsZSxcclxuICAgICAgICBjaGVja2JveExhYmVsU3R5bGUsXHJcbiAgICAgICAgbGFiZWxUZXh0LFxyXG4gICAgICAgIGNoZWNrYm94Q2hhbmdlSGFuZGxlcixcclxuICAgIF0pO1xyXG4gICAgY29uc3Qgb25FeHBhbmRlZENsaWNrZWQgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGhhbmRsZUV4cGFuZGVkQ2hhbmdlKGV2ZW50LCBpdGVtSWQpO1xyXG4gICAgfSwgW2hhbmRsZUV4cGFuZGVkQ2hhbmdlLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IGhhbmRsZUV4cGFuZENsaWNrID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKCFpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICBvbkV4cGFuZGVkQ2xpY2tlZChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIG9uRXhwYW5kZWRDbGlja2VkXSk7XHJcbiAgICBjb25zdCBoYW5kbGVPbkNsaWNrID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSBldmVudC50YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdCgnYnV0dG9uLCBbcm9sZT1cImJ1dHRvblwiXSwgYVtocmVmXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIFtyb2xlPVwibWVudWl0ZW1cIl0nKTtcclxuICAgICAgICAvLyBQcmV2ZW50aW5nIHNlbGVjdGluZyB0aGUgaXRlbSB3aGVuIGNsaWNraW5nIG9uIGludGVyYWN0aXZlIGVsZW1lbnRzIHdoZW4gYHNlbGVjdGFibGVgIGlzIGBzaW5nbGVgXHJcbiAgICAgICAgaWYgKGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBJZiBzZWxlY3RQYXJlbnRzIGlzIGZhbHNlIGFuZCB0aGlzIGlzIGEgcGFyZW50IGl0ZW0sIGhhbmRsZSBleHBhbmQvY29sbGFwc2UgaW5zdGVhZCBvZiBzZWxlY3Rpb25cclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZSAmJlxyXG4gICAgICAgICAgICAhc2VsZWN0UGFyZW50cyAmJlxyXG4gICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIG9uRXhwYW5kZWRDbGlja2VkKGV2ZW50KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZSkge1xyXG4gICAgICAgICAgICBoYW5kbGVDbGljayhldmVudCwgaXRlbUlkKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgdGFiSW5kZXggPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcclxuICAgICAgICBpZiAoaXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaXRlbVRvRm9jdXMgPT09IGl0ZW1JZCA/IDAgOiAtMTtcclxuICAgIH0sIFtpc0Rpc2FibGVkLCBpdGVtVG9Gb2N1cywgaXRlbUlkXSk7XHJcbiAgICBjb25zdCBzaG91bGRTaG93Q2hlY2tib3ggPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUubXVsdGkgJiZcclxuICAgICAgICAoaXNUb3BMZXZlbFNlbGVjdGFibGUgIT09IGZhbHNlIHx8ICF0b3BMZXZlbCk7XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIHdpdGhpbiB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIFByZXNzaW5nIGBDdHJsICsgRW50ZXJgIG9yIGBDb21tYW5kICsgRW50ZXJgIGZvY3VzZXMgdGhlIGZpcnN0IGludGVyYWN0aXZlIGVsZW1lbnQgd2l0aGluIHRoZSB0cmVlIGl0ZW1cclxuICAgICAqIGFuZCBsb2NrcyBmb2N1cyBpbnNpZGUgdGhlIHRyZWUgaXRlbS5cclxuICAgICAqXHJcbiAgICAgKiBJZiB0aGUgZm9jdXMgaXMgd2l0aGluIHRoZSBsYWJlbCBvciBhZGRpdGlvbmFsIGNvbnRlbnQsIGl0IGhhbmRsZXMga2V5IGV2ZW50cyBmb3IgaW50ZXJhY3Rpb24gZWxlbWVudHMuXHJcbiAgICAgKlxyXG4gICAgICogSXQgYWxzbyBoYW5kbGVzIHRoZSBvdGhlciBrZXlzIHRvIHRyaWdnZXIgdGhlIGNsaWNrIGV2ZW50IG9uIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKiAqKi9cclxuICAgIGNvbnN0IG9uS2V5RG93bkhhbmRsZXIgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBjb25zdCB7IGtleSwgdGFyZ2V0LCBjdXJyZW50VGFyZ2V0IH0gPSBldmVudDtcclxuICAgICAgICBjb25zdCBpc0VudGVyID0ga2V5ID09PSAnRW50ZXInO1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybE9yQ29tbWFuZCA9IGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleTtcclxuICAgICAgICBjb25zdCBpc0N0cmxFbnRlciA9IGlzQ3RybE9yQ29tbWFuZCAmJiBpc0VudGVyO1xyXG4gICAgICAgIC8vIElmIHRoZSBrZXkgaXMgQ3RybCArIEVudGVyIG9yIENvbW1hbmQgKyBFbnRlciwgZm9jdXMgdGhlIGZpcnN0IGludGVyYWN0aXZlIGVsZW1lbnRcclxuICAgICAgICAvLyBhbmQgbG9jayBmb2N1cyBpbnNpZGUgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmIChpc0N0cmxFbnRlciAmJiB0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgc2V0SXNJbnNpZGVUcmVlSXRlbSh0cnVlKTtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50c0xpc3QgPSBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzKGN1cnJlbnRUYXJnZXQsIGludGVyYWN0aXZlRWxlbWVudHMpO1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50VG9Gb2N1cyA9IGludGVyYWN0aXZlRWxlbWVudHNMaXN0WzBdO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudFRvRm9jdXMpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRUb0ZvY3VzLmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICB9LCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEVuc3VyZSB2YWxpZCBDU1Mgc2VsZWN0b3JzIGJ5IGVzY2FwaW5nIHNwZWNpYWwgY2hhcmFjdGVycyAoZS5nLiwgcGVyaW9kcyBpbiBpdGVtSWQpXHJcbiAgICAgICAgY29uc3Qgc2FmZUl0ZW1JZCA9IENTUy5lc2NhcGUoaXRlbUlkKTtcclxuICAgICAgICBjb25zdCBpc1dpdGhpbkxhYmVsT3JBZGRpdGlvbmFsQ29udGVudCA9IHRhcmdldC5jbG9zZXN0KGAjJHtzYWZlSXRlbUlkfS1sYWJlbCwgIyR7c2FmZUl0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCk7XHJcbiAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaGFuZGxlIGtleSBldmVudHMgZm9yIHRob3NlIGFyZWFzXHJcbiAgICAgICAgaWYgKGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50KSB7XHJcbiAgICAgICAgICAgIGhhbmRsZUxhYmVsQW5kQWRkaXRpb25hbENvbnRlbnRLZXlEb3duKGV2ZW50KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHRoZSB0cmVlIGl0ZW0gaXRzZWxmLCBoYW5kbGUga2V5IGRvd24gZm9yIHRoZSB0cmVlIGl0ZW1cclxuICAgICAgICBpZiAodGFyZ2V0ID09PSBjdXJyZW50VGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIGhhbmRsZUtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW1xyXG4gICAgICAgIGdldEludGVyYWN0aXZlRWxlbWVudHMsXHJcbiAgICAgICAgaW50ZXJhY3RpdmVFbGVtZW50cyxcclxuICAgICAgICBpdGVtSWQsXHJcbiAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24sXHJcbiAgICAgICAgaGFuZGxlS2V5RG93bixcclxuICAgIF0pO1xyXG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyZWVJdGVtQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogY29udGV4dFZhbHVlIH0sXHJcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IHN0eWxlOiB0cmVlSXRlbVN0eWxlcyB9LFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZFRyZWVJdGVtLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IFwiYXJpYS1leHBhbmRlZFwiOiBoYXNPd25UcmVlSXRlbXMgPyBleHBhbmRlZCA6IG51bGwsIFwiYXJpYS1zZWxlY3RlZFwiOiBzZWxlY3RlZEl0ZW0sIFwiYXJpYS1jaGVja2VkXCI6IHNob3VsZFNob3dDaGVja2JveCA/IGFyaWFDaGVja2VkVmFsdWUgOiBudWxsLCBcImRhdGEtdGVzdGlkXCI6IHRlc3RJZCwgZGVwdGg6IGl0ZW1EZXB0aCwgaGFzT3duVHJlZUl0ZW1zOiBoYXNPd25UcmVlSXRlbXMsIGlkOiBpdGVtSWQsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBpc1ZpcnR1YWxpemVkOiBoaWVyYXJjaHlDb250ZXh0LmlzVmlydHVhbGl6ZWQsIG5vZGVUeXBlOiBub2RlVHlwZSwgcm9sZTogXCJ0cmVlaXRlbVwiLCBzZWxlY3RhYmxlVHlwZTogc2VsZWN0YWJsZSwgc2VsZWN0ZWQ6IHNlbGVjdGVkSXRlbSwgdGhlbWU6IHRoZW1lLCB0YWJJbmRleDogdGFiSW5kZXgsIG9uS2V5RG93bjogb25LZXlEb3duSGFuZGxlciwgcmVmOiB0cmVlSXRlbVJlZiwgaG92ZXJDb2xvcjogaG92ZXJDb2xvciB9KSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkSXRlbVdyYXBwZXIsIHsgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1pdGVtd3JhcHBlcmAsIGRlcHRoOiBpdGVtRGVwdGgsIGhhc0FkZGl0aW9uYWxDb250ZW50OiAhIWFkZGl0aW9uYWxDb250ZW50LCBoYXNDdXN0b21JY29uU2l6ZTogISFleHBhbmRJY29uU3R5bGVzPy5zaXplLCBpZDogYCR7aXRlbUlkfS1pdGVtd3JhcHBlcmAsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBub2RlVHlwZTogbm9kZVR5cGUsIHNlbGVjdGFibGU6IHNlbGVjdGFibGUsIHN0eWxlOiBzdHlsZSwgdGhlbWU6IHRoZW1lLCByZWY6IG1lcmdlUmVmcyhyZWYsIGZvY3VzVHJhcEVsZW1lbnQpLCBvbkNsaWNrOiBoYW5kbGVPbkNsaWNrIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgaGFzT3duVHJlZUl0ZW1zICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZEV4cGFuZFdyYXBwZXIsIHsgc2l6ZTogZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSwgY29sb3I6IGV4cGFuZEljb25TdHlsZXM/LmNvbG9yLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWV4cGFuZGAsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBvbkNsaWNrOiBoYW5kbGVFeHBhbmRDbGljaywgdGhlbWU6IHRoZW1lIH0sIGV4cGFuZGVkID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRXhwYW5kTW9yZUljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZXZyb25SaWdodEljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSkpLFxyXG4gICAgICAgICAgICAgICAgICAgIHNob3VsZFNob3dDaGVja2JveCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZENoZWNrYm94V3JhcHBlciwgeyBoYXNBZGRpdGlvbmFsQ29udGVudDogISFhZGRpdGlvbmFsQ29udGVudCwgdGhlbWU6IHRoZW1lIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc093blRyZWVJdGVtcyA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEluZGV0ZXJtaW5hdGVDaGVja2JveCwgT2JqZWN0LmFzc2lnbih7fSwgY2hlY2tib3hQcm9wcywgeyBzdGF0dXM6IGNoZWNrZWRTdGF0dXMgfSkpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZWNrYm94LCBPYmplY3QuYXNzaWduKHt9LCBjaGVja2JveFByb3BzLCB7IGNoZWNrZWQ6IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4oY2hlY2tlZFN0YXR1cykgfSkpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsVGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpKSxcclxuICAgICAgICAgICAgICAgIGhhc0d1aWRlTGluZXMgJiZcclxuICAgICAgICAgICAgICAgICAgICAoaGllcmFyY2h5Q29udGV4dC5pc1ZpcnR1YWxpemVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbURlcHRoID4gMCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkuZnJvbSh7IGxlbmd0aDogaXRlbURlcHRoIH0sIChfLCBkKSA9PiAoUmVhY3QuY3JlYXRlRWxlbWVudChWaXJ0dWFsaXplZEd1aWRlTGluZSwgeyBrZXk6IGBndWlkZWxpbmUtJHtkfWAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tdmlydHVhbGl6ZWQtZ3VpZGVsaW5lLSR7ZH1gLCB0aGVtZTogdGhlbWUsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBzdHlsZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNldElubGluZVN0YXJ0OiBgY2FsYygke2NhbGN1bGF0ZU9mZnNldChUcmVlTm9kZVR5cGUuYnJhbmNoLCBkLCBmYWxzZSwgZmFsc2UsIHRydWUpfSArICR7ZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7ZXhwYW5kSWNvblN0eWxlcy5zaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fSAvIDIgLSAwLjVweClgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfSkpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGhhc093blRyZWVJdGVtcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWQgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoR3VpZGVMaW5lLCB7IFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tZ3VpZGVsaW5lYCwgdGhlbWU6IHRoZW1lLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgZ3VpZGVMaW5lTGVmdDogYGNhbGMoJHtjYWxjdWxhdGVPZmZzZXQoVHJlZU5vZGVUeXBlLmJyYW5jaCwgaXRlbURlcHRoLCBmYWxzZSwgZmFsc2UsIGZhbHNlKX0gKyAke2V4cGFuZEljb25TdHlsZXM/LnNpemUgIT09IHVuZGVmaW5lZCA/IGAke2V4cGFuZEljb25TdHlsZXMuc2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn0gLyAyIC0gMC41cHgpIGAgfSkpKSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LkNoaWxkcmVuLm1hcChjaGlsZHJlbiwgKGNoaWxkLCBjaGlsZEluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkPy50eXBlICE9PSBUcmVlSXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFVzZSB0aGUgc3RhYmxlLCBwcmUtbWVtb2lzZWQgdmFsdWUgKHNlZSBjaGlsZEhpZXJhcmNoaWVzIGFib3ZlKS5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXN0ZWRIaWVyYXJjaHlWYWx1ZSA9IGNoaWxkSGllcmFyY2hpZXNbY2hpbGRJbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyYW5zaXRpb24sIHsgaXNPcGVuOiBleHBhbmRlZCwgdW5tb3VudE9uRXhpdDogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwidWxcIiwgeyByb2xlOiBcImdyb3VwXCIgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0LlByb3ZpZGVyLCB7IGtleTogY2hpbGQucHJvcHMuaXRlbUlkLCB2YWx1ZTogbmVzdGVkSGllcmFyY2h5VmFsdWUgfSwgY2hpbGQpKSkpO1xyXG4gICAgICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICBpc01hY09TICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFZpc3VhbGx5SGlkZGVuLCBudWxsLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChBbm5vdW5jZSwgbnVsbCwgZXhwYW5kZWRcclxuICAgICAgICAgICAgICAgICAgICA/IGkxOG4uZXhwYW5zaW9uU3RhdGUuZXhwYW5kZWRcclxuICAgICAgICAgICAgICAgICAgICA6IGkxOG4uZXhwYW5zaW9uU3RhdGUuY29sbGFwc2VkKSkpKSkpO1xyXG59KTtcclxuLyoqXHJcbiAqIEN1c3RvbSBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciBSZWFjdC5tZW1vXHJcbiAqIE9ubHkgcmUtcmVuZGVyIFRyZWVJdGVtIHdoZW4gcmVsZXZhbnQgcHJvcHMgY2hhbmdlXHJcbiAqL1xyXG5mdW5jdGlvbiBhcmVQcm9wc0VxdWFsKHByZXZQcm9wcywgbmV4dFByb3BzKSB7XHJcbiAgICAvLyBDaGVjayBpZiBpdGVtSWQgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5pdGVtSWQgIT09IG5leHRQcm9wcy5pdGVtSWQpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBsYWJlbCBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmxhYmVsICE9PSBuZXh0UHJvcHMubGFiZWwpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBkaXNhYmxlZCBzdGF0ZSBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmlzRGlzYWJsZWQgIT09IG5leHRQcm9wcy5pc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgaWNvbiBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmljb24gIT09IG5leHRQcm9wcy5pY29uKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgYWRkaXRpb25hbCBjb250ZW50IGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuYWRkaXRpb25hbENvbnRlbnQgIT09IG5leHRQcm9wcy5hZGRpdGlvbmFsQ29udGVudCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGhvdmVyIGNvbG9yIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaG92ZXJDb2xvciAhPT0gbmV4dFByb3BzLmhvdmVyQ29sb3IpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBjaGlsZHJlbiBjaGFuZ2VkIChmb3IgbmVzdGVkIHRyZWUgaXRlbXMpXHJcbiAgICAvLyBVc2luZyB0eXBlIGFzc2VydGlvbiBzaW5jZSBjaGlsZHJlbiBjb21lcyBmcm9tIFJlYWN0LkhUTUxBdHRyaWJ1dGVzXHJcbiAgICBpZiAocHJldlByb3BzLmNoaWxkcmVuICE9PSBuZXh0UHJvcHMuY2hpbGRyZW4pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBzdHlsZXMgY2hhbmdlZFxyXG4gICAgLy8gVXNpbmcgdHlwZSBhc3NlcnRpb24gc2luY2Ugc3R5bGUgY29tZXMgZnJvbSBSZWFjdC5IVE1MQXR0cmlidXRlc1xyXG4gICAgaWYgKHByZXZQcm9wcy5zdHlsZSAhPT0gbmV4dFByb3BzLnN0eWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZQcm9wcy5sYWJlbFN0eWxlICE9PSBuZXh0UHJvcHMubGFiZWxTdHlsZSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChwcmV2UHJvcHMudHJlZUl0ZW1TdHlsZXMgIT09IG5leHRQcm9wcy50cmVlSXRlbVN0eWxlcykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIEFsbCByZWxldmFudCBwcm9wcyBhcmUgZXF1YWwsIHNraXAgcmUtcmVuZGVyXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxyXG4vKipcclxuICogTWVtb2l6ZWQgVHJlZUl0ZW0gY29tcG9uZW50XHJcbiAqIE9ubHkgcmUtcmVuZGVycyB3aGVuIHJlbGV2YW50IHByb3BzIGNoYW5nZSwgaW1wcm92aW5nIHBlcmZvcm1hbmNlIGZvciBsYXJnZSB0cmVlc1xyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFRyZWVJdGVtID0gUmVhY3QubWVtbyhUcmVlSXRlbUNvbXBvbmVudCwgYXJlUHJvcHNFcXVhbCk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRyZWVJdGVtLmpzLm1hcCJdfQ== */"));
|
|
29378
|
+
}, ";}}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF3QmlDIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dCB9IGZyb20gJy4vVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdDb25maWdDb250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld0NvbmZpZ0NvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0V4cGFuc2lvbkNvbnRleHQgfSBmcm9tICcuL1RyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyBjYWxjdWxhdGVPZmZzZXQsIGdldFRyZWVJdGVtTGFiZWxDb2xvciwgZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yLCBUcmVlTm9kZVR5cGUsIH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IEkxOG5Db250ZXh0IH0gZnJvbSAnLi4vLi4nO1xyXG5pbXBvcnQgdXNlRGV2aWNlRGV0ZWN0IGZyb20gJy4uLy4uL2hvb2tzL3VzZURldmljZURldGVjdCc7XHJcbmltcG9ydCB7IHVzZUZvY3VzTG9jayB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZUZvY3VzTG9jayc7XHJcbmltcG9ydCB7IHVzZUlzSW52ZXJzZSB9IGZyb20gJy4uLy4uL2ludmVyc2UnO1xyXG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgfSBmcm9tICcuLi8uLi90aGVtZS9UaGVtZUNvbnRleHQnO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmltcG9ydCB7IEFubm91bmNlIH0gZnJvbSAnLi4vQW5ub3VuY2UnO1xyXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gJy4uL0NoZWNrYm94JztcclxuaW1wb3J0IHsgSW5kZXRlcm1pbmF0ZUNoZWNrYm94LCBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMsIH0gZnJvbSAnLi4vSW5kZXRlcm1pbmF0ZUNoZWNrYm94JztcclxuaW1wb3J0IHsgVHJhbnNpdGlvbiB9IGZyb20gJy4uL1RyYW5zaXRpb24nO1xyXG5pbXBvcnQgeyBWaXN1YWxseUhpZGRlbiB9IGZyb20gJy4uL1Zpc3VhbGx5SGlkZGVuJztcclxuY29uc3QgU3R5bGVkVHJlZUl0ZW0gPSBzdHlsZWQubGkgYFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDBcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWw3MDB9O1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIGN1cnNvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbVdyYXBwZXJDdXJzb3IocHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMuc2VsZWN0YWJsZVR5cGUsIHByb3BzLm5vZGVUeXBlKX07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcblxuICBwYWRkaW5nLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCBmYWxzZSwgZmFsc2UsIHByb3BzLmlzVmlydHVhbGl6ZWQpfTtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuXG4gICAgJiA+ICo6Zmlyc3QtY2hpbGQge1xuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkXG4gICAgICAgICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLmZvY3VzSW52ZXJzZVxyXG4gICAgOiBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXN9O1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIGZhbHNlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgbWFyZ2luLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCB0cnVlLCB0cnVlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgcGFkZGluZy1ibG9jay1lbmQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctYmxvY2stc3RhcnQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJlxyXG4gICAgY3NzIGBcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzLmlzSW52ZXJzZVxyXG4gICAgICAgID8gcHJvcHMudGhlbWUuY29sb3JzLnRlcnRpYXJ5NTAwXHJcbiAgICAgICAgOiBwcm9wcy50aGVtZS5jb2xvcnMucHJpbWFyeTUwMH07XG4gICAgICAgICAgYmxvY2stc2l6ZTogMTAwJTtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICBpbmxpbmUtc2l6ZTogJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ6IDA7XG4gICAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAwO1xuICAgICAgICB9XG4gICAgICBgfVxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBnZXRIb3ZlckJhY2tncm91bmQoe1xyXG4gICAgaXNEaXNhYmxlZDogcHJvcHMuaXNEaXNhYmxlZCxcclxuICAgIGhvdmVyQ29sb3I6IHByb3BzLmhvdmVyQ29sb3IsXHJcbiAgICBpc0ludmVyc2U6IHByb3BzLmlzSW52ZXJzZSxcclxuICAgIHRoZW1lOiBwcm9wcy50aGVtZSxcclxufSl9O1xuICAgIH1cbiAgfVxuYDtcclxuZnVuY3Rpb24gZ2V0SG92ZXJCYWNrZ3JvdW5kKHsgaXNEaXNhYmxlZCwgaG92ZXJDb2xvciwgaXNJbnZlcnNlLCB0aGVtZSB9KSB7XHJcbiAgICBpZiAoaXNEaXNhYmxlZClcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgaWYgKGhvdmVyQ29sb3IpXHJcbiAgICAgICAgcmV0dXJuIGhvdmVyQ29sb3I7XHJcbiAgICBjb25zdCB0cmFuc3BhcmVuY3kgPSBpc0ludmVyc2UgPyAwLjggOiAwLjk1O1xyXG4gICAgcmV0dXJuIHRyYW5zcGFyZW50aXplKHRyYW5zcGFyZW5jeSwgdGhlbWUuY29sb3JzLm5ldXRyYWw5MDApO1xyXG59XHJcbmNvbnN0IEljb25XcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBtYXJnaW4tbGVmdDogMDtcblxuICBzdmcge1xuICAgIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pY29uU2l6ZXMubWVkaXVtfXB4O1xuICAgIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgfVxuYDtcclxuY29uc3QgU3R5bGVkTGFiZWxXcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgd2lkdGg6IDEwMCU7XG5gO1xyXG5jb25zdCBTdHlsZWRFeHBhbmRXcmFwcGVyID0gc3R5bGVkLmRpdiBgXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgbWFyZ2luLXJpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuY29sb3IgfHxcclxuICAgIGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIHdpZHRoOiAkeyh7IHNpemUsIHRoZW1lIH0pID0+IHNpemUgIT09IHVuZGVmaW5lZCA/IGAke3NpemV9cHhgIDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDZ9O1xuICBoZWlnaHQ6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG5gO1xyXG5jb25zdCBHdWlkZUxpbmUgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDh9O1xuICBib3R0b206IDA7XG4gIGluc2V0LWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy5ndWlkZUxpbmVMZWZ0fTtcbiAgd2lkdGg6IDA7XG4gIGJvcmRlci1pbmxpbmUtc3RhcnQ6IDFweCBzb2xpZFxuICAgICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHRyYW5zcGFyZW50aXplKDAuNywgcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDApXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMzAwfTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHotaW5kZXg6IDE7XG5gO1xyXG5jb25zdCBWaXJ0dWFsaXplZEd1aWRlTGluZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogMDtcbiAgYm9yZGVyLWlubGluZS1zdGFydDogMXB4IHNvbGlkXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDEwMClcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwzMDB9O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW1Db21wb25lbnQgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XHJcbiAgICBjb25zdCB7IGFkZGl0aW9uYWxDb250ZW50LCBjaGlsZHJlbiwgaG92ZXJDb2xvciwgaWNvbiwgaW5kZXg6IGluZGV4UHJvcCwgbGFiZWwsIGxhYmVsU3R5bGUsIHN0eWxlLCB0ZXN0SWQsIHRvcExldmVsOiB0b3BMZXZlbFByb3AsIHRyZWVJdGVtU3R5bGVzLCAuLi5yZXN0IH0gPSBwcm9wcztcclxuICAgIGNvbnN0IHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xyXG4gICAgY29uc3QgaXNJbnZlcnNlID0gdXNlSXNJbnZlcnNlKCk7XHJcbiAgICAvLyBSZWFkIGhpZXJhcmNoeSBpbmZvcm1hdGlvbiBmcm9tIGNvbnRleHQgKHJlZHVjZXMgY2xvbmVFbGVtZW50IG92ZXJoZWFkKVxyXG4gICAgY29uc3QgaGllcmFyY2h5Q29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0KTtcclxuICAgIC8vIFVzZSBjb250ZXh0IHZhbHVlcyBpZiBwcm9wcyBhcmUgbm90IHByb3ZpZGVkIChmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSlcclxuICAgIGNvbnN0IGluZGV4ID0gaW5kZXhQcm9wICE9PSB1bmRlZmluZWQgPyBpbmRleFByb3AgOiBoaWVyYXJjaHlDb250ZXh0LmluZGV4O1xyXG4gICAgY29uc3QgdG9wTGV2ZWwgPSB0b3BMZXZlbFByb3AgIT09IHVuZGVmaW5lZCA/IHRvcExldmVsUHJvcCA6IGhpZXJhcmNoeUNvbnRleHQuaXNUb3BMZXZlbDtcclxuICAgIC8vIENvbnN1bWUgc3BsaXQgY29udGV4dHMgZm9yIHJlZHVjZWQgcmUtcmVuZGVyIHNjb3BlXHJcbiAgICBjb25zdCB7IGl0ZW1Ub0ZvY3VzIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGhhbmRsZUV4cGFuZGVkQ2hhbmdlIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGV4cGFuZEljb25TdHlsZXMsIGhhc0d1aWRlTGluZXMsIGhhc0ljb25zLCBpc1RvcExldmVsU2VsZWN0YWJsZSwgc2VsZWN0YWJsZSwgc2VsZWN0UGFyZW50cyA9IHRydWUsIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29uZmlnQ29udGV4dCk7XHJcbiAgICAvLyBQYXNzIHRoZSByZXNvbHZlZCB2YWx1ZXMgdG8gdXNlVHJlZUl0ZW1cclxuICAgIGNvbnN0IHByb3BzV2l0aEhpZXJhcmNoeSA9IHtcclxuICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICBpbmRleCxcclxuICAgICAgICB0b3BMZXZlbCxcclxuICAgICAgICBpdGVtRGVwdGg6IGhpZXJhcmNoeUNvbnRleHQuZGVwdGgsXHJcbiAgICAgICAgcGFyZW50RGVwdGg6IGhpZXJhcmNoeUNvbnRleHQucGFyZW50RGVwdGgsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyBjb250ZXh0VmFsdWUsIGhhbmRsZUNsaWNrLCBoYW5kbGVLZXlEb3duIH0gPSB1c2VUcmVlSXRlbShwcm9wc1dpdGhIaWVyYXJjaHksIGZvcndhcmRlZFJlZik7XHJcbiAgICBjb25zdCB7IGlzRGlzYWJsZWQgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IHsgaXNNYWNPUyB9ID0gdXNlRGV2aWNlRGV0ZWN0KCk7XHJcbiAgICBjb25zdCBpMThuID0gUmVhY3QudXNlQ29udGV4dChJMThuQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGNoZWNrYm94Q2hhbmdlSGFuZGxlciwgY2hlY2tlZFN0YXR1cywgZXhwYW5kZWQsIGhhc093blRyZWVJdGVtcywgaXRlbURlcHRoLCBpdGVtSWQsIHJlZiwgc2VsZWN0ZWRJdGVtcywgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IG5vZGVUeXBlID0gaGFzT3duVHJlZUl0ZW1zID8gVHJlZU5vZGVUeXBlLmJyYW5jaCA6IFRyZWVOb2RlVHlwZS5sZWFmO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZVxyXG4gICAgICAgID8gc2VsZWN0ZWRJdGVtcz8uWzBdPy5pdGVtSWQgPT09IGl0ZW1JZFxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IGFyaWFDaGVja2VkVmFsdWUgPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUubXVsdGlcclxuICAgICAgICA/IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5pbmRldGVybWluYXRlXHJcbiAgICAgICAgICAgID8gJ21peGVkJ1xyXG4gICAgICAgICAgICA6IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5jaGVja2VkXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgW2lzSW5zaWRlVHJlZUl0ZW0sIHNldElzSW5zaWRlVHJlZUl0ZW1dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgdHJlZUl0ZW1SZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XHJcbiAgICBjb25zdCBmb2N1c1RyYXBFbGVtZW50ID0gdXNlRm9jdXNMb2NrKGlzSW5zaWRlVHJlZUl0ZW0pO1xyXG4gICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50cyA9ICdidXR0b24sIFtyb2xlPVwiYnV0dG9uXCJdLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgYVtocmVmXSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJztcclxuICAgIGNvbnN0IGdldEludGVyYWN0aXZlRWxlbWVudHMgPSBSZWFjdC51c2VDYWxsYmFjaygoY29udGFpbmVyLCBzZWxlY3RvcikgPT4ge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSkuZmlsdGVyKGVsID0+ICFlbC5oYXNBdHRyaWJ1dGUoJ3RhYmluZGV4JykgfHxcclxuICAgICAgICAgICAgKGVsLnRhYkluZGV4ICE9PSB1bmRlZmluZWQgJiYgZWwudGFiSW5kZXggPj0gMCkpO1xyXG4gICAgfSwgW10pO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGFsbG93cyBmb3Iga2V5Ym9hcmQgbmF2aWdhdGlvbiB3aXRoaW4gdGhlIGxhYmVsIGFuZCBhZGRpdGlvbmFsIGNvbnRlbnQgb2YgYSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogWW91IGNhbiBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIHVzaW5nIHRoZSBgVGFiYCBrZXksIGFjdGl2YXRlIHRoZW0gd2l0aCBgRW50ZXJgIG9yIGBTcGFjZWAsXHJcbiAgICAgKiBhbmQgZXhpdCBvdXRzaWRlIGFuZCBmb2N1cyB0aGUgd2hvbGUgdHJlZSBpdGVtIHdpdGggYEVzY2FwZWAuXHJcbiAgICAgKiAqKi9cclxuICAgIGNvbnN0IGhhbmRsZUxhYmVsQW5kQWRkaXRpb25hbENvbnRlbnRLZXlEb3duID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBrZXksIHRhcmdldCwgY3VycmVudFRhcmdldCwgc2hpZnRLZXkgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gdGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNTcGFjZSA9IGtleSA9PT0gJyAnO1xyXG4gICAgICAgIGNvbnN0IGlzRXNjYXBlID0ga2V5ID09PSAnRXNjYXBlJztcclxuICAgICAgICBjb25zdCBpc1RhYiA9IGtleSA9PT0gJ1RhYic7XHJcbiAgICAgICAgY29uc3QgaXNBY3RpdmF0aW9uS2V5ID0gaXNFbnRlciB8fCBpc1NwYWNlO1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBgVGFiYCwgd2UgbmF2aWdhdGUgdGhyb3VnaCBpbnRlcmFjdGl2ZSBlbGVtZW50cyBpbnNpZGUgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmIChpc1RhYiAmJiBpc0luc2lkZVRyZWVJdGVtKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudHNMaXN0ID0gZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyhjdXJyZW50VGFyZ2V0LCBpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAgICAgLy8gRmlsdGVyIGxpc3Qgb2YgaW50ZXJhY3RpdmUgZWxlbWVudHMgd2hpY2ggYXJlIG9ubHkgaW5jbHVkZWQgZm9yIGN1cnJlbnQgdHJlZSBpdGVtXHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMgPSBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdC5maWx0ZXIoZWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2xvc2VzdFRyZWVJdGVtID0gZWwuY2xvc2VzdCgnW3JvbGU9XCJ0cmVlaXRlbVwiXScpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsb3Nlc3RUcmVlSXRlbSA9PT0gdHJlZUl0ZW1SZWYuY3VycmVudDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMuaW5kZXhPZihjdXJyZW50RWxlbWVudCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHNoaWZ0S2V5ID8gLTEgOiAxO1xyXG4gICAgICAgICAgICBjb25zdCB0b3RhbCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMubGVuZ3RoO1xyXG4gICAgICAgICAgICBjb25zdCBuZXh0SW5kZXggPSAoY3VycmVudEluZGV4ICsgZGlyZWN0aW9uICsgdG90YWwpICUgdG90YWw7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50c1tuZXh0SW5kZXhdO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudFRvRm9jdXMpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZWxlbWVudFRvRm9jdXMuZm9jdXMoKSwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBQcmVzc2luZyBgRW50ZXJgIG9yIGBTcGFjZWAgb24gYW4gaW50ZXJhY3RpdmUgZWxlbWVudCB3aWxsIHRyaWdnZXIgaXRzIGNsaWNrIGV2ZW50XHJcbiAgICAgICAgaWYgKGlzQWN0aXZhdGlvbktleSAmJiBpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgaW50ZXJhY3RpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE1vdmVzIGZvY3VzIG91dHNpZGUgdGhlIHRyZWUgaXRlbSBhbmQgZm9jdXNlcyB0aGUgdHJlZSBpdGVtIGl0c2VsZiB3aGVuIGBFc2NhcGVgIGlzIHByZXNzZWRcclxuICAgICAgICBpZiAoaXNFc2NhcGUpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHNldElzSW5zaWRlVHJlZUl0ZW0oZmFsc2UpO1xyXG4gICAgICAgICAgICBjb25zdCB0cmVlSXRlbU5vZGUgPSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICBpZiAodHJlZUl0ZW1Ob2RlKSB7XHJcbiAgICAgICAgICAgICAgICB0cmVlSXRlbU5vZGUuZm9jdXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzSW5zaWRlVHJlZUl0ZW1dKTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gUmVhY3QudXNlTWVtbygoKSA9PiBub2RlVHlwZSA9PT0gVHJlZU5vZGVUeXBlLmJyYW5jaCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEZvbGRlckljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KEFydGljbGVJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSksIFtub2RlVHlwZV0pO1xyXG4gICAgLy8gTWVtb2lzZSB0aGUgbGFiZWwgSlNYIHNvIHRoZSBgY2hlY2tib3hQcm9wc2AgbWVtbyBiZWxvdyBhY3R1YWxseSBoYXNcclxuICAgIC8vIGEgc3RhYmxlIGBsYWJlbFRleHRgIHJlZmVyZW5jZSBiZXR3ZWVuIHJlbmRlcnMuIFByZXZpb3VzbHkgdGhpc1xyXG4gICAgLy8gZWxlbWVudCB3YXMgcmUtY3JlYXRlZCBvbiBldmVyeSByZW5kZXIsIHdoaWNoIGZvcmNlZFxyXG4gICAgLy8gYGNoZWNrYm94UHJvcHNgIHRvIGFsc28gYmUgcmUtY3JlYXRlZCBhbmQgYW55IGZ1dHVyZSBSZWFjdC5tZW1vIG9uXHJcbiAgICAvLyBDaGVja2JveC9JbmRldGVybWluYXRlQ2hlY2tib3ggd291bGQgYWx3YXlzIGJhaWwgb3V0LlxyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gUmVhY3QudXNlTWVtbygoKSA9PiAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRMYWJlbFdyYXBwZXIsIHsgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgc3R5bGU6IGxhYmVsU3R5bGUsIGlkOiBgJHtpdGVtSWR9LWxhYmVsYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1sYWJlbGAgfSxcclxuICAgICAgICBoYXNJY29ucyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChJY29uV3JhcHBlciwgeyBpc0ludmVyc2U6IGlzSW52ZXJzZSwgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWljb25gIH0sIGljb24gfHwgZGVmYXVsdEljb24pKSxcclxuICAgICAgICBsYWJlbCkpLCBbXHJcbiAgICAgICAgdGhlbWUsXHJcbiAgICAgICAgaXNEaXNhYmxlZCxcclxuICAgICAgICBpc0ludmVyc2UsXHJcbiAgICAgICAgbGFiZWxTdHlsZSxcclxuICAgICAgICBpdGVtSWQsXHJcbiAgICAgICAgdGVzdElkLFxyXG4gICAgICAgIGhhc0ljb25zLFxyXG4gICAgICAgIGljb24sXHJcbiAgICAgICAgZGVmYXVsdEljb24sXHJcbiAgICAgICAgbGFiZWwsXHJcbiAgICBdKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBSZWFjdC51c2VNZW1vKCgpID0+IGFkZGl0aW9uYWxDb250ZW50ID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQWRkaXRpb25hbENvbnRlbnRXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaWQ6IGAke2l0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgIH0sIGFkZGl0aW9uYWxDb250ZW50KSkgOiBudWxsLCBbYWRkaXRpb25hbENvbnRlbnQsIHRoZW1lLCBpdGVtSWQsIHRlc3RJZF0pO1xyXG4gICAgLy8gU3RhYmxlIHBlci1jaGlsZCBoaWVyYXJjaHkgdmFsdWVzLiBUaGUgcmVmZXJlbmNlIG11c3Qgbm90IGNoYW5nZSBvblxyXG4gICAgLy8gcmUtcmVuZGVycyB0cmlnZ2VyZWQgYnkgVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0LCBvdGhlcndpc2UgZXZlcnlcclxuICAgIC8vIG5lc3RlZCBUcmVlSXRlbSByZS1yZW5kZXJzIHRocm91Z2ggdGhlIGNvbnRleHQgYW5kIFJlYWN0Lm1lbW8gaXNcclxuICAgIC8vIGRlZmVhdGVkLlxyXG4gICAgY29uc3QgY2hpbGRIaWVyYXJjaGllcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvdW50ID0gUmVhY3QuQ2hpbGRyZW4uY291bnQoY2hpbGRyZW4pO1xyXG4gICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShjb3VudCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGFycltpXSA9IHtcclxuICAgICAgICAgICAgICAgIGRlcHRoOiBpdGVtRGVwdGggKyAxLFxyXG4gICAgICAgICAgICAgICAgcGFyZW50RGVwdGg6IGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgIGlzVG9wTGV2ZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhcnI7XHJcbiAgICB9LCBbY2hpbGRyZW4sIGl0ZW1EZXB0aF0pO1xyXG4gICAgLy8gTWVtb2l6ZSBpbmxpbmUgc3R5bGUgb2JqZWN0cyB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IHJlLXJlbmRlcnNcclxuICAgIGNvbnN0IGNoZWNrYm94SW5wdXRTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHsgbWFyZ2luUmlnaHQ6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzIH0pLCBbdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDNdKTtcclxuICAgIGNvbnN0IGNoZWNrYm94TGFiZWxTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcclxuICAgICAgICBwYWRkaW5nOiAwLFxyXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICB9KSwgW10pO1xyXG4gICAgLy8gUHJvcHMgc2hhcmVkIGJ5IENoZWNrYm94IGFuZCBJbmRldGVybWluYXRlQ2hlY2tib3hcclxuICAgIGNvbnN0IGNoZWNrYm94UHJvcHMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XHJcbiAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaGlkZUZvY3VzOiB0cnVlLFxyXG4gICAgICAgIGlkOiBgJHtpdGVtSWR9LWNoZWNrYm94YCxcclxuICAgICAgICBpbnB1dFN0eWxlOiBjaGVja2JveElucHV0U3R5bGUsXHJcbiAgICAgICAgbGFiZWxTdHlsZTogY2hlY2tib3hMYWJlbFN0eWxlLFxyXG4gICAgICAgIGxhYmVsVGV4dDogbGFiZWxUZXh0LFxyXG4gICAgICAgIG9uQ2hhbmdlOiBjaGVja2JveENoYW5nZUhhbmRsZXIsXHJcbiAgICAgICAgdGFiSW5kZXg6IC0xLFxyXG4gICAgICAgIHRlc3RJZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICB9KSwgW1xyXG4gICAgICAgIGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaXRlbUlkLFxyXG4gICAgICAgIGNoZWNrYm94SW5wdXRTdHlsZSxcclxuICAgICAgICBjaGVja2JveExhYmVsU3R5bGUsXHJcbiAgICAgICAgbGFiZWxUZXh0LFxyXG4gICAgICAgIGNoZWNrYm94Q2hhbmdlSGFuZGxlcixcclxuICAgIF0pO1xyXG4gICAgY29uc3Qgb25FeHBhbmRlZENsaWNrZWQgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGhhbmRsZUV4cGFuZGVkQ2hhbmdlKGV2ZW50LCBpdGVtSWQpO1xyXG4gICAgfSwgW2hhbmRsZUV4cGFuZGVkQ2hhbmdlLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IGhhbmRsZUV4cGFuZENsaWNrID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKCFpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICBvbkV4cGFuZGVkQ2xpY2tlZChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIG9uRXhwYW5kZWRDbGlja2VkXSk7XHJcbiAgICBjb25zdCBoYW5kbGVPbkNsaWNrID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSBldmVudC50YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdCgnYnV0dG9uLCBbcm9sZT1cImJ1dHRvblwiXSwgYVtocmVmXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIFtyb2xlPVwibWVudWl0ZW1cIl0nKTtcclxuICAgICAgICAvLyBQcmV2ZW50aW5nIHNlbGVjdGluZyB0aGUgaXRlbSB3aGVuIGNsaWNraW5nIG9uIGludGVyYWN0aXZlIGVsZW1lbnRzIHdoZW4gYHNlbGVjdGFibGVgIGlzIGBzaW5nbGVgXHJcbiAgICAgICAgaWYgKGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBJZiBzZWxlY3RQYXJlbnRzIGlzIGZhbHNlIGFuZCB0aGlzIGlzIGEgcGFyZW50IGl0ZW0sIGhhbmRsZSBleHBhbmQvY29sbGFwc2UgaW5zdGVhZCBvZiBzZWxlY3Rpb25cclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZSAmJlxyXG4gICAgICAgICAgICAhc2VsZWN0UGFyZW50cyAmJlxyXG4gICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMpIHtcclxuICAgICAgICAgICAgb25FeHBhbmRlZENsaWNrZWQoZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEluIHNlbGVjdGFibGU9b2ZmIG1vZGUsIGNsaWNraW5nIGFueXdoZXJlIG9uIGEgcGFyZW50IGl0ZW0gdG9nZ2xlcyBleHBhbmQvY29sbGFwc2VcclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLm9mZiAmJiBoYXNPd25UcmVlSXRlbXMpIHtcclxuICAgICAgICAgICAgb25FeHBhbmRlZENsaWNrZWQoZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUuc2luZ2xlKSB7XHJcbiAgICAgICAgICAgIGhhbmRsZUNsaWNrKGV2ZW50LCBpdGVtSWQpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCB0YWJJbmRleCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpdGVtVG9Gb2N1cyA9PT0gaXRlbUlkID8gMCA6IC0xO1xyXG4gICAgfSwgW2lzRGlzYWJsZWQsIGl0ZW1Ub0ZvY3VzLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IHNob3VsZFNob3dDaGVja2JveCA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aSAmJlxyXG4gICAgICAgIChpc1RvcExldmVsU2VsZWN0YWJsZSAhPT0gZmFsc2UgfHwgIXRvcExldmVsKTtcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gd2l0aGluIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogUHJlc3NpbmcgYEN0cmwgKyBFbnRlcmAgb3IgYENvbW1hbmQgKyBFbnRlcmAgZm9jdXNlcyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudCB3aXRoaW4gdGhlIHRyZWUgaXRlbVxyXG4gICAgICogYW5kIGxvY2tzIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIElmIHRoZSBmb2N1cyBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaXQgaGFuZGxlcyBrZXkgZXZlbnRzIGZvciBpbnRlcmFjdGlvbiBlbGVtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBJdCBhbHNvIGhhbmRsZXMgdGhlIG90aGVyIGtleXMgdG8gdHJpZ2dlciB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIHRyZWUgaXRlbS5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3Qgb25LZXlEb3duSGFuZGxlciA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsga2V5LCB0YXJnZXQsIGN1cnJlbnRUYXJnZXQgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNDdHJsT3JDb21tYW5kID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5O1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybEVudGVyID0gaXNDdHJsT3JDb21tYW5kICYmIGlzRW50ZXI7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBDdHJsICsgRW50ZXIgb3IgQ29tbWFuZCArIEVudGVyLCBmb2N1cyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudFxyXG4gICAgICAgIC8vIGFuZCBsb2NrIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzQ3RybEVudGVyICYmIHRhcmdldCA9PT0gY3VycmVudFRhcmdldCkge1xyXG4gICAgICAgICAgICBzZXRJc0luc2lkZVRyZWVJdGVtKHRydWUpO1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdCA9IGdldEludGVyYWN0aXZlRWxlbWVudHMoY3VycmVudFRhcmdldCwgaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gaW50ZXJhY3RpdmVFbGVtZW50c0xpc3RbMF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gRW5zdXJlIHZhbGlkIENTUyBzZWxlY3RvcnMgYnkgZXNjYXBpbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChlLmcuLCBwZXJpb2RzIGluIGl0ZW1JZClcclxuICAgICAgICBjb25zdCBzYWZlSXRlbUlkID0gQ1NTLmVzY2FwZShpdGVtSWQpO1xyXG4gICAgICAgIGNvbnN0IGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50ID0gdGFyZ2V0LmNsb3Nlc3QoYCMke3NhZmVJdGVtSWR9LWxhYmVsLCAjJHtzYWZlSXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgKTtcclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHdpdGhpbiB0aGUgbGFiZWwgb3IgYWRkaXRpb25hbCBjb250ZW50LCBoYW5kbGUga2V5IGV2ZW50cyBmb3IgdGhvc2UgYXJlYXNcclxuICAgICAgICBpZiAoaXNXaXRoaW5MYWJlbE9yQWRkaXRpb25hbENvbnRlbnQpIHtcclxuICAgICAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaXMgdGhlIHRyZWUgaXRlbSBpdHNlbGYsIGhhbmRsZSBrZXkgZG93biBmb3IgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgaGFuZGxlS2V5RG93bihldmVudCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9LCBbXHJcbiAgICAgICAgZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyxcclxuICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnRzLFxyXG4gICAgICAgIGl0ZW1JZCxcclxuICAgICAgICBoYW5kbGVMYWJlbEFuZEFkZGl0aW9uYWxDb250ZW50S2V5RG93bixcclxuICAgICAgICBoYW5kbGVLZXlEb3duLFxyXG4gICAgXSk7XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBjb250ZXh0VmFsdWUgfSxcclxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgc3R5bGU6IHRyZWVJdGVtU3R5bGVzIH0sXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkVHJlZUl0ZW0sIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgXCJhcmlhLWV4cGFuZGVkXCI6IGhhc093blRyZWVJdGVtcyA/IGV4cGFuZGVkIDogbnVsbCwgXCJhcmlhLXNlbGVjdGVkXCI6IHNlbGVjdGVkSXRlbSwgXCJhcmlhLWNoZWNrZWRcIjogc2hvdWxkU2hvd0NoZWNrYm94ID8gYXJpYUNoZWNrZWRWYWx1ZSA6IG51bGwsIFwiZGF0YS10ZXN0aWRcIjogdGVzdElkLCBkZXB0aDogaXRlbURlcHRoLCBoYXNPd25UcmVlSXRlbXM6IGhhc093blRyZWVJdGVtcywgaWQ6IGl0ZW1JZCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIGlzVmlydHVhbGl6ZWQ6IGhpZXJhcmNoeUNvbnRleHQuaXNWaXJ0dWFsaXplZCwgbm9kZVR5cGU6IG5vZGVUeXBlLCByb2xlOiBcInRyZWVpdGVtXCIsIHNlbGVjdGFibGVUeXBlOiBzZWxlY3RhYmxlLCBzZWxlY3RlZDogc2VsZWN0ZWRJdGVtLCB0aGVtZTogdGhlbWUsIHRhYkluZGV4OiB0YWJJbmRleCwgb25LZXlEb3duOiBvbktleURvd25IYW5kbGVyLCByZWY6IHRyZWVJdGVtUmVmLCBob3ZlckNvbG9yOiBob3ZlckNvbG9yIH0pLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRJdGVtV3JhcHBlciwgeyBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCA/PyBpdGVtSWR9LWl0ZW13cmFwcGVyYCwgZGVwdGg6IGl0ZW1EZXB0aCwgaGFzQWRkaXRpb25hbENvbnRlbnQ6ICEhYWRkaXRpb25hbENvbnRlbnQsIGhhc0N1c3RvbUljb25TaXplOiAhIWV4cGFuZEljb25TdHlsZXM/LnNpemUsIGlkOiBgJHtpdGVtSWR9LWl0ZW13cmFwcGVyYCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG5vZGVUeXBlOiBub2RlVHlwZSwgc2VsZWN0YWJsZTogc2VsZWN0YWJsZSwgc3R5bGU6IHN0eWxlLCB0aGVtZTogdGhlbWUsIHJlZjogbWVyZ2VSZWZzKHJlZiwgZm9jdXNUcmFwRWxlbWVudCksIG9uQ2xpY2s6IGhhbmRsZU9uQ2xpY2sgfSxcclxuICAgICAgICAgICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkRXhwYW5kV3JhcHBlciwgeyBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplLCBjb2xvcjogZXhwYW5kSWNvblN0eWxlcz8uY29sb3IsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tZXhwYW5kYCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG9uQ2xpY2s6IGhhbmRsZUV4cGFuZENsaWNrLCB0aGVtZTogdGhlbWUgfSwgZXhwYW5kZWQgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChFeHBhbmRNb3JlSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIHNpemU6IGV4cGFuZEljb25TdHlsZXM/LnNpemUgfSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hldnJvblJpZ2h0SWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIHNpemU6IGV4cGFuZEljb25TdHlsZXM/LnNpemUgfSkpKSksXHJcbiAgICAgICAgICAgICAgICAgICAgc2hvdWxkU2hvd0NoZWNrYm94ID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkQ2hlY2tib3hXcmFwcGVyLCB7IGhhc0FkZGl0aW9uYWxDb250ZW50OiAhIWFkZGl0aW9uYWxDb250ZW50LCB0aGVtZTogdGhlbWUgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzT3duVHJlZUl0ZW1zID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW5kZXRlcm1pbmF0ZUNoZWNrYm94LCBPYmplY3QuYXNzaWduKHt9LCBjaGVja2JveFByb3BzLCB7IHN0YXR1czogY2hlY2tlZFN0YXR1cyB9KSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hlY2tib3gsIE9iamVjdC5hc3NpZ24oe30sIGNoZWNrYm94UHJvcHMsIHsgY2hlY2tlZDogY2hlY2tlZFN0YXR1c1RvQm9vbGVhbihjaGVja2VkU3RhdHVzKSB9KSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlSXRlbUFkZGl0aW9uYWxDb250ZW50KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxUZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlSXRlbUFkZGl0aW9uYWxDb250ZW50KSkpLFxyXG4gICAgICAgICAgICAgICAgaGFzR3VpZGVMaW5lcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIChoaWVyYXJjaHlDb250ZXh0LmlzVmlydHVhbGl6ZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBpdGVtRGVwdGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5mcm9tKHsgbGVuZ3RoOiBpdGVtRGVwdGggfSwgKF8sIGQpID0+IChSZWFjdC5jcmVhdGVFbGVtZW50KFZpcnR1YWxpemVkR3VpZGVMaW5lLCB7IGtleTogYGd1aWRlbGluZS0ke2R9YCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS12aXJ0dWFsaXplZC1ndWlkZWxpbmUtJHtkfWAsIHRoZW1lOiB0aGVtZSwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2V0SW5saW5lU3RhcnQ6IGBjYWxjKCR7Y2FsY3VsYXRlT2Zmc2V0KFRyZWVOb2RlVHlwZS5icmFuY2gsIGQsIGZhbHNlLCBmYWxzZSwgdHJ1ZSl9ICsgJHtleHBhbmRJY29uU3R5bGVzPy5zaXplICE9PSB1bmRlZmluZWQgPyBgJHtleHBhbmRJY29uU3R5bGVzLnNpemV9cHhgIDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDZ9IC8gMiAtIDAuNXB4KWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB9KSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaGFzT3duVHJlZUl0ZW1zICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRlZCAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChHdWlkZUxpbmUsIHsgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1ndWlkZWxpbmVgLCB0aGVtZTogdGhlbWUsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBndWlkZUxpbmVMZWZ0OiBgY2FsYygke2NhbGN1bGF0ZU9mZnNldChUcmVlTm9kZVR5cGUuYnJhbmNoLCBpdGVtRGVwdGgsIGZhbHNlLCBmYWxzZSwgZmFsc2UpfSArICR7ZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7ZXhwYW5kSWNvblN0eWxlcy5zaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fSAvIDIgLSAwLjVweCkgYCB9KSkpLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuQ2hpbGRyZW4ubWFwKGNoaWxkcmVuLCAoY2hpbGQsIGNoaWxkSW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQ/LnR5cGUgIT09IFRyZWVJdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVXNlIHRoZSBzdGFibGUsIHByZS1tZW1vaXNlZCB2YWx1ZSAoc2VlIGNoaWxkSGllcmFyY2hpZXMgYWJvdmUpLlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5lc3RlZEhpZXJhcmNoeVZhbHVlID0gY2hpbGRIaWVyYXJjaGllc1tjaGlsZEluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJhbnNpdGlvbiwgeyBpc09wZW46IGV4cGFuZGVkLCB1bm1vdW50T25FeGl0OiB0cnVlIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ1bFwiLCB7IHJvbGU6IFwiZ3JvdXBcIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUcmVlSXRlbUhpZXJhcmNoeUNvbnRleHQuUHJvdmlkZXIsIHsga2V5OiBjaGlsZC5wcm9wcy5pdGVtSWQsIHZhbHVlOiBuZXN0ZWRIaWVyYXJjaHlWYWx1ZSB9LCBjaGlsZCkpKSk7XHJcbiAgICAgICAgICAgICAgICB9KSksXHJcbiAgICAgICAgICAgIGlzTWFjT1MgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVmlzdWFsbHlIaWRkZW4sIG51bGwsXHJcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEFubm91bmNlLCBudWxsLCBleHBhbmRlZFxyXG4gICAgICAgICAgICAgICAgICAgID8gaTE4bi5leHBhbnNpb25TdGF0ZS5leHBhbmRlZFxyXG4gICAgICAgICAgICAgICAgICAgIDogaTE4bi5leHBhbnNpb25TdGF0ZS5jb2xsYXBzZWQpKSkpKSk7XHJcbn0pO1xyXG4vKipcclxuICogQ3VzdG9tIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIFJlYWN0Lm1lbW9cclxuICogT25seSByZS1yZW5kZXIgVHJlZUl0ZW0gd2hlbiByZWxldmFudCBwcm9wcyBjaGFuZ2VcclxuICovXHJcbmZ1bmN0aW9uIGFyZVByb3BzRXF1YWwocHJldlByb3BzLCBuZXh0UHJvcHMpIHtcclxuICAgIC8vIENoZWNrIGlmIGl0ZW1JZCBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLml0ZW1JZCAhPT0gbmV4dFByb3BzLml0ZW1JZCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGxhYmVsIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMubGFiZWwgIT09IG5leHRQcm9wcy5sYWJlbCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGRpc2FibGVkIHN0YXRlIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaXNEaXNhYmxlZCAhPT0gbmV4dFByb3BzLmlzRGlzYWJsZWQpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBpY29uIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaWNvbiAhPT0gbmV4dFByb3BzLmljb24pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBhZGRpdGlvbmFsIGNvbnRlbnQgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5hZGRpdGlvbmFsQ29udGVudCAhPT0gbmV4dFByb3BzLmFkZGl0aW9uYWxDb250ZW50KSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgaG92ZXIgY29sb3IgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5ob3ZlckNvbG9yICE9PSBuZXh0UHJvcHMuaG92ZXJDb2xvcikge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGNoaWxkcmVuIGNoYW5nZWQgKGZvciBuZXN0ZWQgdHJlZSBpdGVtcylcclxuICAgIC8vIFVzaW5nIHR5cGUgYXNzZXJ0aW9uIHNpbmNlIGNoaWxkcmVuIGNvbWVzIGZyb20gUmVhY3QuSFRNTEF0dHJpYnV0ZXNcclxuICAgIGlmIChwcmV2UHJvcHMuY2hpbGRyZW4gIT09IG5leHRQcm9wcy5jaGlsZHJlbikge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIHN0eWxlcyBjaGFuZ2VkXHJcbiAgICAvLyBVc2luZyB0eXBlIGFzc2VydGlvbiBzaW5jZSBzdHlsZSBjb21lcyBmcm9tIFJlYWN0LkhUTUxBdHRyaWJ1dGVzXHJcbiAgICBpZiAocHJldlByb3BzLnN0eWxlICE9PSBuZXh0UHJvcHMuc3R5bGUpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAocHJldlByb3BzLmxhYmVsU3R5bGUgIT09IG5leHRQcm9wcy5sYWJlbFN0eWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZQcm9wcy50cmVlSXRlbVN0eWxlcyAhPT0gbmV4dFByb3BzLnRyZWVJdGVtU3R5bGVzKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQWxsIHJlbGV2YW50IHByb3BzIGFyZSBlcXVhbCwgc2tpcCByZS1yZW5kZXJcclxuICAgIHJldHVybiB0cnVlO1xyXG59XHJcbi8qKlxyXG4gKiBNZW1vaXplZCBUcmVlSXRlbSBjb21wb25lbnRcclxuICogT25seSByZS1yZW5kZXJzIHdoZW4gcmVsZXZhbnQgcHJvcHMgY2hhbmdlLCBpbXByb3ZpbmcgcGVyZm9ybWFuY2UgZm9yIGxhcmdlIHRyZWVzXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW0gPSBSZWFjdC5tZW1vKFRyZWVJdGVtQ29tcG9uZW50LCBhcmVQcm9wc0VxdWFsKTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VHJlZUl0ZW0uanMubWFwIl19 */"));
|
|
29377
29379
|
function getHoverBackground(_ref) {
|
|
29378
29380
|
var isDisabled = _ref.isDisabled,
|
|
29379
29381
|
hoverColor = _ref.hoverColor,
|
|
@@ -29395,13 +29397,13 @@
|
|
|
29395
29397
|
return props.theme.iconSizes.medium;
|
|
29396
29398
|
}, "px;width:", function (props) {
|
|
29397
29399
|
return props.theme.iconSizes.medium;
|
|
29398
|
-
}, "px;vertical-align:middle;}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtR2dDIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dCB9IGZyb20gJy4vVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdDb25maWdDb250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld0NvbmZpZ0NvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0V4cGFuc2lvbkNvbnRleHQgfSBmcm9tICcuL1RyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyBjYWxjdWxhdGVPZmZzZXQsIGdldFRyZWVJdGVtTGFiZWxDb2xvciwgZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yLCBUcmVlTm9kZVR5cGUsIH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IEkxOG5Db250ZXh0IH0gZnJvbSAnLi4vLi4nO1xyXG5pbXBvcnQgdXNlRGV2aWNlRGV0ZWN0IGZyb20gJy4uLy4uL2hvb2tzL3VzZURldmljZURldGVjdCc7XHJcbmltcG9ydCB7IHVzZUZvY3VzTG9jayB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZUZvY3VzTG9jayc7XHJcbmltcG9ydCB7IHVzZUlzSW52ZXJzZSB9IGZyb20gJy4uLy4uL2ludmVyc2UnO1xyXG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgfSBmcm9tICcuLi8uLi90aGVtZS9UaGVtZUNvbnRleHQnO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmltcG9ydCB7IEFubm91bmNlIH0gZnJvbSAnLi4vQW5ub3VuY2UnO1xyXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gJy4uL0NoZWNrYm94JztcclxuaW1wb3J0IHsgSW5kZXRlcm1pbmF0ZUNoZWNrYm94LCBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMsIH0gZnJvbSAnLi4vSW5kZXRlcm1pbmF0ZUNoZWNrYm94JztcclxuaW1wb3J0IHsgVHJhbnNpdGlvbiB9IGZyb20gJy4uL1RyYW5zaXRpb24nO1xyXG5pbXBvcnQgeyBWaXN1YWxseUhpZGRlbiB9IGZyb20gJy4uL1Zpc3VhbGx5SGlkZGVuJztcclxuY29uc3QgU3R5bGVkVHJlZUl0ZW0gPSBzdHlsZWQubGkgYFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDBcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWw3MDB9O1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIGN1cnNvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbVdyYXBwZXJDdXJzb3IocHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMuc2VsZWN0YWJsZVR5cGUsIHByb3BzLm5vZGVUeXBlKX07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcblxuICBwYWRkaW5nLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCBmYWxzZSwgZmFsc2UsIHByb3BzLmlzVmlydHVhbGl6ZWQpfTtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuXG4gICAgJiA+ICo6Zmlyc3QtY2hpbGQge1xuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkXG4gICAgICAgICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLmZvY3VzSW52ZXJzZVxyXG4gICAgOiBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXN9O1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIGZhbHNlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgbWFyZ2luLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCB0cnVlLCB0cnVlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgcGFkZGluZy1ibG9jay1lbmQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctYmxvY2stc3RhcnQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJlxyXG4gICAgY3NzIGBcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzLmlzSW52ZXJzZVxyXG4gICAgICAgID8gcHJvcHMudGhlbWUuY29sb3JzLnRlcnRpYXJ5NTAwXHJcbiAgICAgICAgOiBwcm9wcy50aGVtZS5jb2xvcnMucHJpbWFyeTUwMH07XG4gICAgICAgICAgYmxvY2stc2l6ZTogMTAwJTtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICBpbmxpbmUtc2l6ZTogJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ6IDA7XG4gICAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAwO1xuICAgICAgICB9XG4gICAgICBgfVxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBnZXRIb3ZlckJhY2tncm91bmQoe1xyXG4gICAgaXNEaXNhYmxlZDogcHJvcHMuaXNEaXNhYmxlZCxcclxuICAgIGhvdmVyQ29sb3I6IHByb3BzLmhvdmVyQ29sb3IsXHJcbiAgICBpc0ludmVyc2U6IHByb3BzLmlzSW52ZXJzZSxcclxuICAgIHRoZW1lOiBwcm9wcy50aGVtZSxcclxufSl9O1xuICAgIH1cbiAgfVxuYDtcclxuZnVuY3Rpb24gZ2V0SG92ZXJCYWNrZ3JvdW5kKHsgaXNEaXNhYmxlZCwgaG92ZXJDb2xvciwgaXNJbnZlcnNlLCB0aGVtZSB9KSB7XHJcbiAgICBpZiAoaXNEaXNhYmxlZClcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgaWYgKGhvdmVyQ29sb3IpXHJcbiAgICAgICAgcmV0dXJuIGhvdmVyQ29sb3I7XHJcbiAgICBjb25zdCB0cmFuc3BhcmVuY3kgPSBpc0ludmVyc2UgPyAwLjggOiAwLjk1O1xyXG4gICAgcmV0dXJuIHRyYW5zcGFyZW50aXplKHRyYW5zcGFyZW5jeSwgdGhlbWUuY29sb3JzLm5ldXRyYWw5MDApO1xyXG59XHJcbmNvbnN0IEljb25XcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBtYXJnaW4tbGVmdDogMDtcblxuICBzdmcge1xuICAgIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pY29uU2l6ZXMubWVkaXVtfXB4O1xuICAgIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgfVxuYDtcclxuY29uc3QgU3R5bGVkTGFiZWxXcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgd2lkdGg6IDEwMCU7XG5gO1xyXG5jb25zdCBTdHlsZWRFeHBhbmRXcmFwcGVyID0gc3R5bGVkLmRpdiBgXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgbWFyZ2luLXJpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuY29sb3IgfHxcclxuICAgIGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIHdpZHRoOiAkeyh7IHNpemUsIHRoZW1lIH0pID0+IHNpemUgIT09IHVuZGVmaW5lZCA/IGAke3NpemV9cHhgIDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDZ9O1xuICBoZWlnaHQ6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG5gO1xyXG5jb25zdCBHdWlkZUxpbmUgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDh9O1xuICBib3R0b206IDA7XG4gIGluc2V0LWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy5ndWlkZUxpbmVMZWZ0fTtcbiAgd2lkdGg6IDA7XG4gIGJvcmRlci1pbmxpbmUtc3RhcnQ6IDFweCBzb2xpZFxuICAgICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHRyYW5zcGFyZW50aXplKDAuNywgcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDApXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMzAwfTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHotaW5kZXg6IDE7XG5gO1xyXG5jb25zdCBWaXJ0dWFsaXplZEd1aWRlTGluZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogMDtcbiAgYm9yZGVyLWlubGluZS1zdGFydDogMXB4IHNvbGlkXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDEwMClcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwzMDB9O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW1Db21wb25lbnQgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XHJcbiAgICBjb25zdCB7IGFkZGl0aW9uYWxDb250ZW50LCBjaGlsZHJlbiwgaG92ZXJDb2xvciwgaWNvbiwgaW5kZXg6IGluZGV4UHJvcCwgbGFiZWwsIGxhYmVsU3R5bGUsIHN0eWxlLCB0ZXN0SWQsIHRvcExldmVsOiB0b3BMZXZlbFByb3AsIHRyZWVJdGVtU3R5bGVzLCAuLi5yZXN0IH0gPSBwcm9wcztcclxuICAgIGNvbnN0IHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xyXG4gICAgY29uc3QgaXNJbnZlcnNlID0gdXNlSXNJbnZlcnNlKCk7XHJcbiAgICAvLyBSZWFkIGhpZXJhcmNoeSBpbmZvcm1hdGlvbiBmcm9tIGNvbnRleHQgKHJlZHVjZXMgY2xvbmVFbGVtZW50IG92ZXJoZWFkKVxyXG4gICAgY29uc3QgaGllcmFyY2h5Q29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0KTtcclxuICAgIC8vIFVzZSBjb250ZXh0IHZhbHVlcyBpZiBwcm9wcyBhcmUgbm90IHByb3ZpZGVkIChmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSlcclxuICAgIGNvbnN0IGluZGV4ID0gaW5kZXhQcm9wICE9PSB1bmRlZmluZWQgPyBpbmRleFByb3AgOiBoaWVyYXJjaHlDb250ZXh0LmluZGV4O1xyXG4gICAgY29uc3QgdG9wTGV2ZWwgPSB0b3BMZXZlbFByb3AgIT09IHVuZGVmaW5lZCA/IHRvcExldmVsUHJvcCA6IGhpZXJhcmNoeUNvbnRleHQuaXNUb3BMZXZlbDtcclxuICAgIC8vIENvbnN1bWUgc3BsaXQgY29udGV4dHMgZm9yIHJlZHVjZWQgcmUtcmVuZGVyIHNjb3BlXHJcbiAgICBjb25zdCB7IGl0ZW1Ub0ZvY3VzIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGhhbmRsZUV4cGFuZGVkQ2hhbmdlIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGV4cGFuZEljb25TdHlsZXMsIGhhc0d1aWRlTGluZXMsIGhhc0ljb25zLCBpc1RvcExldmVsU2VsZWN0YWJsZSwgc2VsZWN0YWJsZSwgc2VsZWN0UGFyZW50cyA9IHRydWUsIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29uZmlnQ29udGV4dCk7XHJcbiAgICAvLyBQYXNzIHRoZSByZXNvbHZlZCB2YWx1ZXMgdG8gdXNlVHJlZUl0ZW1cclxuICAgIGNvbnN0IHByb3BzV2l0aEhpZXJhcmNoeSA9IHtcclxuICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICBpbmRleCxcclxuICAgICAgICB0b3BMZXZlbCxcclxuICAgICAgICBpdGVtRGVwdGg6IGhpZXJhcmNoeUNvbnRleHQuZGVwdGgsXHJcbiAgICAgICAgcGFyZW50RGVwdGg6IGhpZXJhcmNoeUNvbnRleHQucGFyZW50RGVwdGgsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyBjb250ZXh0VmFsdWUsIGhhbmRsZUNsaWNrLCBoYW5kbGVLZXlEb3duIH0gPSB1c2VUcmVlSXRlbShwcm9wc1dpdGhIaWVyYXJjaHksIGZvcndhcmRlZFJlZik7XHJcbiAgICBjb25zdCB7IGlzRGlzYWJsZWQgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IHsgaXNNYWNPUyB9ID0gdXNlRGV2aWNlRGV0ZWN0KCk7XHJcbiAgICBjb25zdCBpMThuID0gUmVhY3QudXNlQ29udGV4dChJMThuQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGNoZWNrYm94Q2hhbmdlSGFuZGxlciwgY2hlY2tlZFN0YXR1cywgZXhwYW5kZWQsIGhhc093blRyZWVJdGVtcywgaXRlbURlcHRoLCBpdGVtSWQsIHJlZiwgc2VsZWN0ZWRJdGVtcywgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IG5vZGVUeXBlID0gaGFzT3duVHJlZUl0ZW1zID8gVHJlZU5vZGVUeXBlLmJyYW5jaCA6IFRyZWVOb2RlVHlwZS5sZWFmO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZVxyXG4gICAgICAgID8gc2VsZWN0ZWRJdGVtcz8uWzBdPy5pdGVtSWQgPT09IGl0ZW1JZFxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IGFyaWFDaGVja2VkVmFsdWUgPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUubXVsdGlcclxuICAgICAgICA/IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5pbmRldGVybWluYXRlXHJcbiAgICAgICAgICAgID8gJ21peGVkJ1xyXG4gICAgICAgICAgICA6IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5jaGVja2VkXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgW2lzSW5zaWRlVHJlZUl0ZW0sIHNldElzSW5zaWRlVHJlZUl0ZW1dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgdHJlZUl0ZW1SZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XHJcbiAgICBjb25zdCBmb2N1c1RyYXBFbGVtZW50ID0gdXNlRm9jdXNMb2NrKGlzSW5zaWRlVHJlZUl0ZW0pO1xyXG4gICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50cyA9ICdidXR0b24sIFtyb2xlPVwiYnV0dG9uXCJdLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgYVtocmVmXSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJztcclxuICAgIGNvbnN0IGdldEludGVyYWN0aXZlRWxlbWVudHMgPSBSZWFjdC51c2VDYWxsYmFjaygoY29udGFpbmVyLCBzZWxlY3RvcikgPT4ge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSkuZmlsdGVyKGVsID0+ICFlbC5oYXNBdHRyaWJ1dGUoJ3RhYmluZGV4JykgfHxcclxuICAgICAgICAgICAgKGVsLnRhYkluZGV4ICE9PSB1bmRlZmluZWQgJiYgZWwudGFiSW5kZXggPj0gMCkpO1xyXG4gICAgfSwgW10pO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGFsbG93cyBmb3Iga2V5Ym9hcmQgbmF2aWdhdGlvbiB3aXRoaW4gdGhlIGxhYmVsIGFuZCBhZGRpdGlvbmFsIGNvbnRlbnQgb2YgYSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogWW91IGNhbiBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIHVzaW5nIHRoZSBgVGFiYCBrZXksIGFjdGl2YXRlIHRoZW0gd2l0aCBgRW50ZXJgIG9yIGBTcGFjZWAsXHJcbiAgICAgKiBhbmQgZXhpdCBvdXRzaWRlIGFuZCBmb2N1cyB0aGUgd2hvbGUgdHJlZSBpdGVtIHdpdGggYEVzY2FwZWAuXHJcbiAgICAgKiAqKi9cclxuICAgIGNvbnN0IGhhbmRsZUxhYmVsQW5kQWRkaXRpb25hbENvbnRlbnRLZXlEb3duID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBrZXksIHRhcmdldCwgY3VycmVudFRhcmdldCwgc2hpZnRLZXkgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gdGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNTcGFjZSA9IGtleSA9PT0gJyAnO1xyXG4gICAgICAgIGNvbnN0IGlzRXNjYXBlID0ga2V5ID09PSAnRXNjYXBlJztcclxuICAgICAgICBjb25zdCBpc1RhYiA9IGtleSA9PT0gJ1RhYic7XHJcbiAgICAgICAgY29uc3QgaXNBY3RpdmF0aW9uS2V5ID0gaXNFbnRlciB8fCBpc1NwYWNlO1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBgVGFiYCwgd2UgbmF2aWdhdGUgdGhyb3VnaCBpbnRlcmFjdGl2ZSBlbGVtZW50cyBpbnNpZGUgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmIChpc1RhYiAmJiBpc0luc2lkZVRyZWVJdGVtKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudHNMaXN0ID0gZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyhjdXJyZW50VGFyZ2V0LCBpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAgICAgLy8gRmlsdGVyIGxpc3Qgb2YgaW50ZXJhY3RpdmUgZWxlbWVudHMgd2hpY2ggYXJlIG9ubHkgaW5jbHVkZWQgZm9yIGN1cnJlbnQgdHJlZSBpdGVtXHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMgPSBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdC5maWx0ZXIoZWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2xvc2VzdFRyZWVJdGVtID0gZWwuY2xvc2VzdCgnW3JvbGU9XCJ0cmVlaXRlbVwiXScpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsb3Nlc3RUcmVlSXRlbSA9PT0gdHJlZUl0ZW1SZWYuY3VycmVudDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMuaW5kZXhPZihjdXJyZW50RWxlbWVudCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHNoaWZ0S2V5ID8gLTEgOiAxO1xyXG4gICAgICAgICAgICBjb25zdCB0b3RhbCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMubGVuZ3RoO1xyXG4gICAgICAgICAgICBjb25zdCBuZXh0SW5kZXggPSAoY3VycmVudEluZGV4ICsgZGlyZWN0aW9uICsgdG90YWwpICUgdG90YWw7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50c1tuZXh0SW5kZXhdO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudFRvRm9jdXMpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZWxlbWVudFRvRm9jdXMuZm9jdXMoKSwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBQcmVzc2luZyBgRW50ZXJgIG9yIGBTcGFjZWAgb24gYW4gaW50ZXJhY3RpdmUgZWxlbWVudCB3aWxsIHRyaWdnZXIgaXRzIGNsaWNrIGV2ZW50XHJcbiAgICAgICAgaWYgKGlzQWN0aXZhdGlvbktleSAmJiBpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgaW50ZXJhY3RpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE1vdmVzIGZvY3VzIG91dHNpZGUgdGhlIHRyZWUgaXRlbSBhbmQgZm9jdXNlcyB0aGUgdHJlZSBpdGVtIGl0c2VsZiB3aGVuIGBFc2NhcGVgIGlzIHByZXNzZWRcclxuICAgICAgICBpZiAoaXNFc2NhcGUpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHNldElzSW5zaWRlVHJlZUl0ZW0oZmFsc2UpO1xyXG4gICAgICAgICAgICBjb25zdCB0cmVlSXRlbU5vZGUgPSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICBpZiAodHJlZUl0ZW1Ob2RlKSB7XHJcbiAgICAgICAgICAgICAgICB0cmVlSXRlbU5vZGUuZm9jdXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzSW5zaWRlVHJlZUl0ZW1dKTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gUmVhY3QudXNlTWVtbygoKSA9PiBub2RlVHlwZSA9PT0gVHJlZU5vZGVUeXBlLmJyYW5jaCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEZvbGRlckljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KEFydGljbGVJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSksIFtub2RlVHlwZV0pO1xyXG4gICAgLy8gTWVtb2lzZSB0aGUgbGFiZWwgSlNYIHNvIHRoZSBgY2hlY2tib3hQcm9wc2AgbWVtbyBiZWxvdyBhY3R1YWxseSBoYXNcclxuICAgIC8vIGEgc3RhYmxlIGBsYWJlbFRleHRgIHJlZmVyZW5jZSBiZXR3ZWVuIHJlbmRlcnMuIFByZXZpb3VzbHkgdGhpc1xyXG4gICAgLy8gZWxlbWVudCB3YXMgcmUtY3JlYXRlZCBvbiBldmVyeSByZW5kZXIsIHdoaWNoIGZvcmNlZFxyXG4gICAgLy8gYGNoZWNrYm94UHJvcHNgIHRvIGFsc28gYmUgcmUtY3JlYXRlZCBhbmQgYW55IGZ1dHVyZSBSZWFjdC5tZW1vIG9uXHJcbiAgICAvLyBDaGVja2JveC9JbmRldGVybWluYXRlQ2hlY2tib3ggd291bGQgYWx3YXlzIGJhaWwgb3V0LlxyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gUmVhY3QudXNlTWVtbygoKSA9PiAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRMYWJlbFdyYXBwZXIsIHsgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgc3R5bGU6IGxhYmVsU3R5bGUsIGlkOiBgJHtpdGVtSWR9LWxhYmVsYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1sYWJlbGAgfSxcclxuICAgICAgICBoYXNJY29ucyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChJY29uV3JhcHBlciwgeyBpc0ludmVyc2U6IGlzSW52ZXJzZSwgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWljb25gIH0sIGljb24gfHwgZGVmYXVsdEljb24pKSxcclxuICAgICAgICBsYWJlbCkpLCBbXHJcbiAgICAgICAgdGhlbWUsXHJcbiAgICAgICAgaXNEaXNhYmxlZCxcclxuICAgICAgICBpc0ludmVyc2UsXHJcbiAgICAgICAgbGFiZWxTdHlsZSxcclxuICAgICAgICBpdGVtSWQsXHJcbiAgICAgICAgdGVzdElkLFxyXG4gICAgICAgIGhhc0ljb25zLFxyXG4gICAgICAgIGljb24sXHJcbiAgICAgICAgZGVmYXVsdEljb24sXHJcbiAgICAgICAgbGFiZWwsXHJcbiAgICBdKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBSZWFjdC51c2VNZW1vKCgpID0+IGFkZGl0aW9uYWxDb250ZW50ID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQWRkaXRpb25hbENvbnRlbnRXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaWQ6IGAke2l0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgIH0sIGFkZGl0aW9uYWxDb250ZW50KSkgOiBudWxsLCBbYWRkaXRpb25hbENvbnRlbnQsIHRoZW1lLCBpdGVtSWQsIHRlc3RJZF0pO1xyXG4gICAgLy8gU3RhYmxlIHBlci1jaGlsZCBoaWVyYXJjaHkgdmFsdWVzLiBUaGUgcmVmZXJlbmNlIG11c3Qgbm90IGNoYW5nZSBvblxyXG4gICAgLy8gcmUtcmVuZGVycyB0cmlnZ2VyZWQgYnkgVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0LCBvdGhlcndpc2UgZXZlcnlcclxuICAgIC8vIG5lc3RlZCBUcmVlSXRlbSByZS1yZW5kZXJzIHRocm91Z2ggdGhlIGNvbnRleHQgYW5kIFJlYWN0Lm1lbW8gaXNcclxuICAgIC8vIGRlZmVhdGVkLlxyXG4gICAgY29uc3QgY2hpbGRIaWVyYXJjaGllcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvdW50ID0gUmVhY3QuQ2hpbGRyZW4uY291bnQoY2hpbGRyZW4pO1xyXG4gICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShjb3VudCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGFycltpXSA9IHtcclxuICAgICAgICAgICAgICAgIGRlcHRoOiBpdGVtRGVwdGggKyAxLFxyXG4gICAgICAgICAgICAgICAgcGFyZW50RGVwdGg6IGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgIGlzVG9wTGV2ZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhcnI7XHJcbiAgICB9LCBbY2hpbGRyZW4sIGl0ZW1EZXB0aF0pO1xyXG4gICAgLy8gTWVtb2l6ZSBpbmxpbmUgc3R5bGUgb2JqZWN0cyB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IHJlLXJlbmRlcnNcclxuICAgIGNvbnN0IGNoZWNrYm94SW5wdXRTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHsgbWFyZ2luUmlnaHQ6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzIH0pLCBbdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDNdKTtcclxuICAgIGNvbnN0IGNoZWNrYm94TGFiZWxTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcclxuICAgICAgICBwYWRkaW5nOiAwLFxyXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICB9KSwgW10pO1xyXG4gICAgLy8gUHJvcHMgc2hhcmVkIGJ5IENoZWNrYm94IGFuZCBJbmRldGVybWluYXRlQ2hlY2tib3hcclxuICAgIGNvbnN0IGNoZWNrYm94UHJvcHMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XHJcbiAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaGlkZUZvY3VzOiB0cnVlLFxyXG4gICAgICAgIGlkOiBgJHtpdGVtSWR9LWNoZWNrYm94YCxcclxuICAgICAgICBpbnB1dFN0eWxlOiBjaGVja2JveElucHV0U3R5bGUsXHJcbiAgICAgICAgbGFiZWxTdHlsZTogY2hlY2tib3hMYWJlbFN0eWxlLFxyXG4gICAgICAgIGxhYmVsVGV4dDogbGFiZWxUZXh0LFxyXG4gICAgICAgIG9uQ2hhbmdlOiBjaGVja2JveENoYW5nZUhhbmRsZXIsXHJcbiAgICAgICAgdGFiSW5kZXg6IC0xLFxyXG4gICAgICAgIHRlc3RJZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICB9KSwgW1xyXG4gICAgICAgIGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaXRlbUlkLFxyXG4gICAgICAgIGNoZWNrYm94SW5wdXRTdHlsZSxcclxuICAgICAgICBjaGVja2JveExhYmVsU3R5bGUsXHJcbiAgICAgICAgbGFiZWxUZXh0LFxyXG4gICAgICAgIGNoZWNrYm94Q2hhbmdlSGFuZGxlcixcclxuICAgIF0pO1xyXG4gICAgY29uc3Qgb25FeHBhbmRlZENsaWNrZWQgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGhhbmRsZUV4cGFuZGVkQ2hhbmdlKGV2ZW50LCBpdGVtSWQpO1xyXG4gICAgfSwgW2hhbmRsZUV4cGFuZGVkQ2hhbmdlLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IGhhbmRsZUV4cGFuZENsaWNrID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKCFpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICBvbkV4cGFuZGVkQ2xpY2tlZChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIG9uRXhwYW5kZWRDbGlja2VkXSk7XHJcbiAgICBjb25zdCBoYW5kbGVPbkNsaWNrID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSBldmVudC50YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdCgnYnV0dG9uLCBbcm9sZT1cImJ1dHRvblwiXSwgYVtocmVmXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIFtyb2xlPVwibWVudWl0ZW1cIl0nKTtcclxuICAgICAgICAvLyBQcmV2ZW50aW5nIHNlbGVjdGluZyB0aGUgaXRlbSB3aGVuIGNsaWNraW5nIG9uIGludGVyYWN0aXZlIGVsZW1lbnRzIHdoZW4gYHNlbGVjdGFibGVgIGlzIGBzaW5nbGVgXHJcbiAgICAgICAgaWYgKGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBJZiBzZWxlY3RQYXJlbnRzIGlzIGZhbHNlIGFuZCB0aGlzIGlzIGEgcGFyZW50IGl0ZW0sIGhhbmRsZSBleHBhbmQvY29sbGFwc2UgaW5zdGVhZCBvZiBzZWxlY3Rpb25cclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZSAmJlxyXG4gICAgICAgICAgICAhc2VsZWN0UGFyZW50cyAmJlxyXG4gICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIG9uRXhwYW5kZWRDbGlja2VkKGV2ZW50KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZSkge1xyXG4gICAgICAgICAgICBoYW5kbGVDbGljayhldmVudCwgaXRlbUlkKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgdGFiSW5kZXggPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcclxuICAgICAgICBpZiAoaXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaXRlbVRvRm9jdXMgPT09IGl0ZW1JZCA/IDAgOiAtMTtcclxuICAgIH0sIFtpc0Rpc2FibGVkLCBpdGVtVG9Gb2N1cywgaXRlbUlkXSk7XHJcbiAgICBjb25zdCBzaG91bGRTaG93Q2hlY2tib3ggPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUubXVsdGkgJiZcclxuICAgICAgICAoaXNUb3BMZXZlbFNlbGVjdGFibGUgIT09IGZhbHNlIHx8ICF0b3BMZXZlbCk7XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIHdpdGhpbiB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIFByZXNzaW5nIGBDdHJsICsgRW50ZXJgIG9yIGBDb21tYW5kICsgRW50ZXJgIGZvY3VzZXMgdGhlIGZpcnN0IGludGVyYWN0aXZlIGVsZW1lbnQgd2l0aGluIHRoZSB0cmVlIGl0ZW1cclxuICAgICAqIGFuZCBsb2NrcyBmb2N1cyBpbnNpZGUgdGhlIHRyZWUgaXRlbS5cclxuICAgICAqXHJcbiAgICAgKiBJZiB0aGUgZm9jdXMgaXMgd2l0aGluIHRoZSBsYWJlbCBvciBhZGRpdGlvbmFsIGNvbnRlbnQsIGl0IGhhbmRsZXMga2V5IGV2ZW50cyBmb3IgaW50ZXJhY3Rpb24gZWxlbWVudHMuXHJcbiAgICAgKlxyXG4gICAgICogSXQgYWxzbyBoYW5kbGVzIHRoZSBvdGhlciBrZXlzIHRvIHRyaWdnZXIgdGhlIGNsaWNrIGV2ZW50IG9uIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKiAqKi9cclxuICAgIGNvbnN0IG9uS2V5RG93bkhhbmRsZXIgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBjb25zdCB7IGtleSwgdGFyZ2V0LCBjdXJyZW50VGFyZ2V0IH0gPSBldmVudDtcclxuICAgICAgICBjb25zdCBpc0VudGVyID0ga2V5ID09PSAnRW50ZXInO1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybE9yQ29tbWFuZCA9IGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleTtcclxuICAgICAgICBjb25zdCBpc0N0cmxFbnRlciA9IGlzQ3RybE9yQ29tbWFuZCAmJiBpc0VudGVyO1xyXG4gICAgICAgIC8vIElmIHRoZSBrZXkgaXMgQ3RybCArIEVudGVyIG9yIENvbW1hbmQgKyBFbnRlciwgZm9jdXMgdGhlIGZpcnN0IGludGVyYWN0aXZlIGVsZW1lbnRcclxuICAgICAgICAvLyBhbmQgbG9jayBmb2N1cyBpbnNpZGUgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmIChpc0N0cmxFbnRlciAmJiB0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgc2V0SXNJbnNpZGVUcmVlSXRlbSh0cnVlKTtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50c0xpc3QgPSBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzKGN1cnJlbnRUYXJnZXQsIGludGVyYWN0aXZlRWxlbWVudHMpO1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50VG9Gb2N1cyA9IGludGVyYWN0aXZlRWxlbWVudHNMaXN0WzBdO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudFRvRm9jdXMpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRUb0ZvY3VzLmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICB9LCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEVuc3VyZSB2YWxpZCBDU1Mgc2VsZWN0b3JzIGJ5IGVzY2FwaW5nIHNwZWNpYWwgY2hhcmFjdGVycyAoZS5nLiwgcGVyaW9kcyBpbiBpdGVtSWQpXHJcbiAgICAgICAgY29uc3Qgc2FmZUl0ZW1JZCA9IENTUy5lc2NhcGUoaXRlbUlkKTtcclxuICAgICAgICBjb25zdCBpc1dpdGhpbkxhYmVsT3JBZGRpdGlvbmFsQ29udGVudCA9IHRhcmdldC5jbG9zZXN0KGAjJHtzYWZlSXRlbUlkfS1sYWJlbCwgIyR7c2FmZUl0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCk7XHJcbiAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaGFuZGxlIGtleSBldmVudHMgZm9yIHRob3NlIGFyZWFzXHJcbiAgICAgICAgaWYgKGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50KSB7XHJcbiAgICAgICAgICAgIGhhbmRsZUxhYmVsQW5kQWRkaXRpb25hbENvbnRlbnRLZXlEb3duKGV2ZW50KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHRoZSB0cmVlIGl0ZW0gaXRzZWxmLCBoYW5kbGUga2V5IGRvd24gZm9yIHRoZSB0cmVlIGl0ZW1cclxuICAgICAgICBpZiAodGFyZ2V0ID09PSBjdXJyZW50VGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIGhhbmRsZUtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW1xyXG4gICAgICAgIGdldEludGVyYWN0aXZlRWxlbWVudHMsXHJcbiAgICAgICAgaW50ZXJhY3RpdmVFbGVtZW50cyxcclxuICAgICAgICBpdGVtSWQsXHJcbiAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24sXHJcbiAgICAgICAgaGFuZGxlS2V5RG93bixcclxuICAgIF0pO1xyXG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyZWVJdGVtQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogY29udGV4dFZhbHVlIH0sXHJcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IHN0eWxlOiB0cmVlSXRlbVN0eWxlcyB9LFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZFRyZWVJdGVtLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IFwiYXJpYS1leHBhbmRlZFwiOiBoYXNPd25UcmVlSXRlbXMgPyBleHBhbmRlZCA6IG51bGwsIFwiYXJpYS1zZWxlY3RlZFwiOiBzZWxlY3RlZEl0ZW0sIFwiYXJpYS1jaGVja2VkXCI6IHNob3VsZFNob3dDaGVja2JveCA/IGFyaWFDaGVja2VkVmFsdWUgOiBudWxsLCBcImRhdGEtdGVzdGlkXCI6IHRlc3RJZCwgZGVwdGg6IGl0ZW1EZXB0aCwgaGFzT3duVHJlZUl0ZW1zOiBoYXNPd25UcmVlSXRlbXMsIGlkOiBpdGVtSWQsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBpc1ZpcnR1YWxpemVkOiBoaWVyYXJjaHlDb250ZXh0LmlzVmlydHVhbGl6ZWQsIG5vZGVUeXBlOiBub2RlVHlwZSwgcm9sZTogXCJ0cmVlaXRlbVwiLCBzZWxlY3RhYmxlVHlwZTogc2VsZWN0YWJsZSwgc2VsZWN0ZWQ6IHNlbGVjdGVkSXRlbSwgdGhlbWU6IHRoZW1lLCB0YWJJbmRleDogdGFiSW5kZXgsIG9uS2V5RG93bjogb25LZXlEb3duSGFuZGxlciwgcmVmOiB0cmVlSXRlbVJlZiwgaG92ZXJDb2xvcjogaG92ZXJDb2xvciB9KSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkSXRlbVdyYXBwZXIsIHsgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1pdGVtd3JhcHBlcmAsIGRlcHRoOiBpdGVtRGVwdGgsIGhhc0FkZGl0aW9uYWxDb250ZW50OiAhIWFkZGl0aW9uYWxDb250ZW50LCBoYXNDdXN0b21JY29uU2l6ZTogISFleHBhbmRJY29uU3R5bGVzPy5zaXplLCBpZDogYCR7aXRlbUlkfS1pdGVtd3JhcHBlcmAsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBub2RlVHlwZTogbm9kZVR5cGUsIHNlbGVjdGFibGU6IHNlbGVjdGFibGUsIHN0eWxlOiBzdHlsZSwgdGhlbWU6IHRoZW1lLCByZWY6IG1lcmdlUmVmcyhyZWYsIGZvY3VzVHJhcEVsZW1lbnQpLCBvbkNsaWNrOiBoYW5kbGVPbkNsaWNrIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgaGFzT3duVHJlZUl0ZW1zICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZEV4cGFuZFdyYXBwZXIsIHsgc2l6ZTogZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSwgY29sb3I6IGV4cGFuZEljb25TdHlsZXM/LmNvbG9yLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWV4cGFuZGAsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBvbkNsaWNrOiBoYW5kbGVFeHBhbmRDbGljaywgdGhlbWU6IHRoZW1lIH0sIGV4cGFuZGVkID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRXhwYW5kTW9yZUljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZXZyb25SaWdodEljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSkpLFxyXG4gICAgICAgICAgICAgICAgICAgIHNob3VsZFNob3dDaGVja2JveCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZENoZWNrYm94V3JhcHBlciwgeyBoYXNBZGRpdGlvbmFsQ29udGVudDogISFhZGRpdGlvbmFsQ29udGVudCwgdGhlbWU6IHRoZW1lIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc093blRyZWVJdGVtcyA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEluZGV0ZXJtaW5hdGVDaGVja2JveCwgT2JqZWN0LmFzc2lnbih7fSwgY2hlY2tib3hQcm9wcywgeyBzdGF0dXM6IGNoZWNrZWRTdGF0dXMgfSkpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZWNrYm94LCBPYmplY3QuYXNzaWduKHt9LCBjaGVja2JveFByb3BzLCB7IGNoZWNrZWQ6IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4oY2hlY2tlZFN0YXR1cykgfSkpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsVGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpKSxcclxuICAgICAgICAgICAgICAgIGhhc0d1aWRlTGluZXMgJiZcclxuICAgICAgICAgICAgICAgICAgICAoaGllcmFyY2h5Q29udGV4dC5pc1ZpcnR1YWxpemVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbURlcHRoID4gMCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkuZnJvbSh7IGxlbmd0aDogaXRlbURlcHRoIH0sIChfLCBkKSA9PiAoUmVhY3QuY3JlYXRlRWxlbWVudChWaXJ0dWFsaXplZEd1aWRlTGluZSwgeyBrZXk6IGBndWlkZWxpbmUtJHtkfWAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tdmlydHVhbGl6ZWQtZ3VpZGVsaW5lLSR7ZH1gLCB0aGVtZTogdGhlbWUsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBzdHlsZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNldElubGluZVN0YXJ0OiBgY2FsYygke2NhbGN1bGF0ZU9mZnNldChUcmVlTm9kZVR5cGUuYnJhbmNoLCBkLCBmYWxzZSwgZmFsc2UsIHRydWUpfSArICR7ZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7ZXhwYW5kSWNvblN0eWxlcy5zaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fSAvIDIgLSAwLjVweClgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfSkpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGhhc093blRyZWVJdGVtcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWQgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoR3VpZGVMaW5lLCB7IFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tZ3VpZGVsaW5lYCwgdGhlbWU6IHRoZW1lLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgZ3VpZGVMaW5lTGVmdDogYGNhbGMoJHtjYWxjdWxhdGVPZmZzZXQoVHJlZU5vZGVUeXBlLmJyYW5jaCwgaXRlbURlcHRoLCBmYWxzZSwgZmFsc2UsIGZhbHNlKX0gKyAke2V4cGFuZEljb25TdHlsZXM/LnNpemUgIT09IHVuZGVmaW5lZCA/IGAke2V4cGFuZEljb25TdHlsZXMuc2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn0gLyAyIC0gMC41cHgpIGAgfSkpKSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LkNoaWxkcmVuLm1hcChjaGlsZHJlbiwgKGNoaWxkLCBjaGlsZEluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkPy50eXBlICE9PSBUcmVlSXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFVzZSB0aGUgc3RhYmxlLCBwcmUtbWVtb2lzZWQgdmFsdWUgKHNlZSBjaGlsZEhpZXJhcmNoaWVzIGFib3ZlKS5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXN0ZWRIaWVyYXJjaHlWYWx1ZSA9IGNoaWxkSGllcmFyY2hpZXNbY2hpbGRJbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyYW5zaXRpb24sIHsgaXNPcGVuOiBleHBhbmRlZCwgdW5tb3VudE9uRXhpdDogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwidWxcIiwgeyByb2xlOiBcImdyb3VwXCIgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0LlByb3ZpZGVyLCB7IGtleTogY2hpbGQucHJvcHMuaXRlbUlkLCB2YWx1ZTogbmVzdGVkSGllcmFyY2h5VmFsdWUgfSwgY2hpbGQpKSkpO1xyXG4gICAgICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICBpc01hY09TICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFZpc3VhbGx5SGlkZGVuLCBudWxsLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChBbm5vdW5jZSwgbnVsbCwgZXhwYW5kZWRcclxuICAgICAgICAgICAgICAgICAgICA/IGkxOG4uZXhwYW5zaW9uU3RhdGUuZXhwYW5kZWRcclxuICAgICAgICAgICAgICAgICAgICA6IGkxOG4uZXhwYW5zaW9uU3RhdGUuY29sbGFwc2VkKSkpKSkpO1xyXG59KTtcclxuLyoqXHJcbiAqIEN1c3RvbSBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciBSZWFjdC5tZW1vXHJcbiAqIE9ubHkgcmUtcmVuZGVyIFRyZWVJdGVtIHdoZW4gcmVsZXZhbnQgcHJvcHMgY2hhbmdlXHJcbiAqL1xyXG5mdW5jdGlvbiBhcmVQcm9wc0VxdWFsKHByZXZQcm9wcywgbmV4dFByb3BzKSB7XHJcbiAgICAvLyBDaGVjayBpZiBpdGVtSWQgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5pdGVtSWQgIT09IG5leHRQcm9wcy5pdGVtSWQpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBsYWJlbCBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmxhYmVsICE9PSBuZXh0UHJvcHMubGFiZWwpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBkaXNhYmxlZCBzdGF0ZSBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmlzRGlzYWJsZWQgIT09IG5leHRQcm9wcy5pc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgaWNvbiBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmljb24gIT09IG5leHRQcm9wcy5pY29uKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgYWRkaXRpb25hbCBjb250ZW50IGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuYWRkaXRpb25hbENvbnRlbnQgIT09IG5leHRQcm9wcy5hZGRpdGlvbmFsQ29udGVudCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGhvdmVyIGNvbG9yIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaG92ZXJDb2xvciAhPT0gbmV4dFByb3BzLmhvdmVyQ29sb3IpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBjaGlsZHJlbiBjaGFuZ2VkIChmb3IgbmVzdGVkIHRyZWUgaXRlbXMpXHJcbiAgICAvLyBVc2luZyB0eXBlIGFzc2VydGlvbiBzaW5jZSBjaGlsZHJlbiBjb21lcyBmcm9tIFJlYWN0LkhUTUxBdHRyaWJ1dGVzXHJcbiAgICBpZiAocHJldlByb3BzLmNoaWxkcmVuICE9PSBuZXh0UHJvcHMuY2hpbGRyZW4pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBzdHlsZXMgY2hhbmdlZFxyXG4gICAgLy8gVXNpbmcgdHlwZSBhc3NlcnRpb24gc2luY2Ugc3R5bGUgY29tZXMgZnJvbSBSZWFjdC5IVE1MQXR0cmlidXRlc1xyXG4gICAgaWYgKHByZXZQcm9wcy5zdHlsZSAhPT0gbmV4dFByb3BzLnN0eWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZQcm9wcy5sYWJlbFN0eWxlICE9PSBuZXh0UHJvcHMubGFiZWxTdHlsZSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChwcmV2UHJvcHMudHJlZUl0ZW1TdHlsZXMgIT09IG5leHRQcm9wcy50cmVlSXRlbVN0eWxlcykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIEFsbCByZWxldmFudCBwcm9wcyBhcmUgZXF1YWwsIHNraXAgcmUtcmVuZGVyXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxyXG4vKipcclxuICogTWVtb2l6ZWQgVHJlZUl0ZW0gY29tcG9uZW50XHJcbiAqIE9ubHkgcmUtcmVuZGVycyB3aGVuIHJlbGV2YW50IHByb3BzIGNoYW5nZSwgaW1wcm92aW5nIHBlcmZvcm1hbmNlIGZvciBsYXJnZSB0cmVlc1xyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFRyZWVJdGVtID0gUmVhY3QubWVtbyhUcmVlSXRlbUNvbXBvbmVudCwgYXJlUHJvcHNFcXVhbCk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRyZWVJdGVtLmpzLm1hcCJdfQ== */"));
|
|
29400
|
+
}, "px;vertical-align:middle;}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtR2dDIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dCB9IGZyb20gJy4vVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdDb25maWdDb250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld0NvbmZpZ0NvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0V4cGFuc2lvbkNvbnRleHQgfSBmcm9tICcuL1RyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyBjYWxjdWxhdGVPZmZzZXQsIGdldFRyZWVJdGVtTGFiZWxDb2xvciwgZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yLCBUcmVlTm9kZVR5cGUsIH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IEkxOG5Db250ZXh0IH0gZnJvbSAnLi4vLi4nO1xyXG5pbXBvcnQgdXNlRGV2aWNlRGV0ZWN0IGZyb20gJy4uLy4uL2hvb2tzL3VzZURldmljZURldGVjdCc7XHJcbmltcG9ydCB7IHVzZUZvY3VzTG9jayB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZUZvY3VzTG9jayc7XHJcbmltcG9ydCB7IHVzZUlzSW52ZXJzZSB9IGZyb20gJy4uLy4uL2ludmVyc2UnO1xyXG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgfSBmcm9tICcuLi8uLi90aGVtZS9UaGVtZUNvbnRleHQnO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmltcG9ydCB7IEFubm91bmNlIH0gZnJvbSAnLi4vQW5ub3VuY2UnO1xyXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gJy4uL0NoZWNrYm94JztcclxuaW1wb3J0IHsgSW5kZXRlcm1pbmF0ZUNoZWNrYm94LCBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMsIH0gZnJvbSAnLi4vSW5kZXRlcm1pbmF0ZUNoZWNrYm94JztcclxuaW1wb3J0IHsgVHJhbnNpdGlvbiB9IGZyb20gJy4uL1RyYW5zaXRpb24nO1xyXG5pbXBvcnQgeyBWaXN1YWxseUhpZGRlbiB9IGZyb20gJy4uL1Zpc3VhbGx5SGlkZGVuJztcclxuY29uc3QgU3R5bGVkVHJlZUl0ZW0gPSBzdHlsZWQubGkgYFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDBcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWw3MDB9O1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIGN1cnNvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbVdyYXBwZXJDdXJzb3IocHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMuc2VsZWN0YWJsZVR5cGUsIHByb3BzLm5vZGVUeXBlKX07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcblxuICBwYWRkaW5nLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCBmYWxzZSwgZmFsc2UsIHByb3BzLmlzVmlydHVhbGl6ZWQpfTtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuXG4gICAgJiA+ICo6Zmlyc3QtY2hpbGQge1xuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkXG4gICAgICAgICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLmZvY3VzSW52ZXJzZVxyXG4gICAgOiBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXN9O1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIGZhbHNlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgbWFyZ2luLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCB0cnVlLCB0cnVlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgcGFkZGluZy1ibG9jay1lbmQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctYmxvY2stc3RhcnQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJlxyXG4gICAgY3NzIGBcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzLmlzSW52ZXJzZVxyXG4gICAgICAgID8gcHJvcHMudGhlbWUuY29sb3JzLnRlcnRpYXJ5NTAwXHJcbiAgICAgICAgOiBwcm9wcy50aGVtZS5jb2xvcnMucHJpbWFyeTUwMH07XG4gICAgICAgICAgYmxvY2stc2l6ZTogMTAwJTtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICBpbmxpbmUtc2l6ZTogJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ6IDA7XG4gICAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAwO1xuICAgICAgICB9XG4gICAgICBgfVxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBnZXRIb3ZlckJhY2tncm91bmQoe1xyXG4gICAgaXNEaXNhYmxlZDogcHJvcHMuaXNEaXNhYmxlZCxcclxuICAgIGhvdmVyQ29sb3I6IHByb3BzLmhvdmVyQ29sb3IsXHJcbiAgICBpc0ludmVyc2U6IHByb3BzLmlzSW52ZXJzZSxcclxuICAgIHRoZW1lOiBwcm9wcy50aGVtZSxcclxufSl9O1xuICAgIH1cbiAgfVxuYDtcclxuZnVuY3Rpb24gZ2V0SG92ZXJCYWNrZ3JvdW5kKHsgaXNEaXNhYmxlZCwgaG92ZXJDb2xvciwgaXNJbnZlcnNlLCB0aGVtZSB9KSB7XHJcbiAgICBpZiAoaXNEaXNhYmxlZClcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgaWYgKGhvdmVyQ29sb3IpXHJcbiAgICAgICAgcmV0dXJuIGhvdmVyQ29sb3I7XHJcbiAgICBjb25zdCB0cmFuc3BhcmVuY3kgPSBpc0ludmVyc2UgPyAwLjggOiAwLjk1O1xyXG4gICAgcmV0dXJuIHRyYW5zcGFyZW50aXplKHRyYW5zcGFyZW5jeSwgdGhlbWUuY29sb3JzLm5ldXRyYWw5MDApO1xyXG59XHJcbmNvbnN0IEljb25XcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBtYXJnaW4tbGVmdDogMDtcblxuICBzdmcge1xuICAgIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pY29uU2l6ZXMubWVkaXVtfXB4O1xuICAgIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgfVxuYDtcclxuY29uc3QgU3R5bGVkTGFiZWxXcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgd2lkdGg6IDEwMCU7XG5gO1xyXG5jb25zdCBTdHlsZWRFeHBhbmRXcmFwcGVyID0gc3R5bGVkLmRpdiBgXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgbWFyZ2luLXJpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuY29sb3IgfHxcclxuICAgIGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIHdpZHRoOiAkeyh7IHNpemUsIHRoZW1lIH0pID0+IHNpemUgIT09IHVuZGVmaW5lZCA/IGAke3NpemV9cHhgIDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDZ9O1xuICBoZWlnaHQ6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG5gO1xyXG5jb25zdCBHdWlkZUxpbmUgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDh9O1xuICBib3R0b206IDA7XG4gIGluc2V0LWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy5ndWlkZUxpbmVMZWZ0fTtcbiAgd2lkdGg6IDA7XG4gIGJvcmRlci1pbmxpbmUtc3RhcnQ6IDFweCBzb2xpZFxuICAgICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHRyYW5zcGFyZW50aXplKDAuNywgcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDApXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMzAwfTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHotaW5kZXg6IDE7XG5gO1xyXG5jb25zdCBWaXJ0dWFsaXplZEd1aWRlTGluZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogMDtcbiAgYm9yZGVyLWlubGluZS1zdGFydDogMXB4IHNvbGlkXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDEwMClcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwzMDB9O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW1Db21wb25lbnQgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XHJcbiAgICBjb25zdCB7IGFkZGl0aW9uYWxDb250ZW50LCBjaGlsZHJlbiwgaG92ZXJDb2xvciwgaWNvbiwgaW5kZXg6IGluZGV4UHJvcCwgbGFiZWwsIGxhYmVsU3R5bGUsIHN0eWxlLCB0ZXN0SWQsIHRvcExldmVsOiB0b3BMZXZlbFByb3AsIHRyZWVJdGVtU3R5bGVzLCAuLi5yZXN0IH0gPSBwcm9wcztcclxuICAgIGNvbnN0IHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xyXG4gICAgY29uc3QgaXNJbnZlcnNlID0gdXNlSXNJbnZlcnNlKCk7XHJcbiAgICAvLyBSZWFkIGhpZXJhcmNoeSBpbmZvcm1hdGlvbiBmcm9tIGNvbnRleHQgKHJlZHVjZXMgY2xvbmVFbGVtZW50IG92ZXJoZWFkKVxyXG4gICAgY29uc3QgaGllcmFyY2h5Q29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0KTtcclxuICAgIC8vIFVzZSBjb250ZXh0IHZhbHVlcyBpZiBwcm9wcyBhcmUgbm90IHByb3ZpZGVkIChmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSlcclxuICAgIGNvbnN0IGluZGV4ID0gaW5kZXhQcm9wICE9PSB1bmRlZmluZWQgPyBpbmRleFByb3AgOiBoaWVyYXJjaHlDb250ZXh0LmluZGV4O1xyXG4gICAgY29uc3QgdG9wTGV2ZWwgPSB0b3BMZXZlbFByb3AgIT09IHVuZGVmaW5lZCA/IHRvcExldmVsUHJvcCA6IGhpZXJhcmNoeUNvbnRleHQuaXNUb3BMZXZlbDtcclxuICAgIC8vIENvbnN1bWUgc3BsaXQgY29udGV4dHMgZm9yIHJlZHVjZWQgcmUtcmVuZGVyIHNjb3BlXHJcbiAgICBjb25zdCB7IGl0ZW1Ub0ZvY3VzIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGhhbmRsZUV4cGFuZGVkQ2hhbmdlIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGV4cGFuZEljb25TdHlsZXMsIGhhc0d1aWRlTGluZXMsIGhhc0ljb25zLCBpc1RvcExldmVsU2VsZWN0YWJsZSwgc2VsZWN0YWJsZSwgc2VsZWN0UGFyZW50cyA9IHRydWUsIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29uZmlnQ29udGV4dCk7XHJcbiAgICAvLyBQYXNzIHRoZSByZXNvbHZlZCB2YWx1ZXMgdG8gdXNlVHJlZUl0ZW1cclxuICAgIGNvbnN0IHByb3BzV2l0aEhpZXJhcmNoeSA9IHtcclxuICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICBpbmRleCxcclxuICAgICAgICB0b3BMZXZlbCxcclxuICAgICAgICBpdGVtRGVwdGg6IGhpZXJhcmNoeUNvbnRleHQuZGVwdGgsXHJcbiAgICAgICAgcGFyZW50RGVwdGg6IGhpZXJhcmNoeUNvbnRleHQucGFyZW50RGVwdGgsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyBjb250ZXh0VmFsdWUsIGhhbmRsZUNsaWNrLCBoYW5kbGVLZXlEb3duIH0gPSB1c2VUcmVlSXRlbShwcm9wc1dpdGhIaWVyYXJjaHksIGZvcndhcmRlZFJlZik7XHJcbiAgICBjb25zdCB7IGlzRGlzYWJsZWQgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IHsgaXNNYWNPUyB9ID0gdXNlRGV2aWNlRGV0ZWN0KCk7XHJcbiAgICBjb25zdCBpMThuID0gUmVhY3QudXNlQ29udGV4dChJMThuQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGNoZWNrYm94Q2hhbmdlSGFuZGxlciwgY2hlY2tlZFN0YXR1cywgZXhwYW5kZWQsIGhhc093blRyZWVJdGVtcywgaXRlbURlcHRoLCBpdGVtSWQsIHJlZiwgc2VsZWN0ZWRJdGVtcywgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IG5vZGVUeXBlID0gaGFzT3duVHJlZUl0ZW1zID8gVHJlZU5vZGVUeXBlLmJyYW5jaCA6IFRyZWVOb2RlVHlwZS5sZWFmO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZVxyXG4gICAgICAgID8gc2VsZWN0ZWRJdGVtcz8uWzBdPy5pdGVtSWQgPT09IGl0ZW1JZFxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IGFyaWFDaGVja2VkVmFsdWUgPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUubXVsdGlcclxuICAgICAgICA/IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5pbmRldGVybWluYXRlXHJcbiAgICAgICAgICAgID8gJ21peGVkJ1xyXG4gICAgICAgICAgICA6IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5jaGVja2VkXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgW2lzSW5zaWRlVHJlZUl0ZW0sIHNldElzSW5zaWRlVHJlZUl0ZW1dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgdHJlZUl0ZW1SZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XHJcbiAgICBjb25zdCBmb2N1c1RyYXBFbGVtZW50ID0gdXNlRm9jdXNMb2NrKGlzSW5zaWRlVHJlZUl0ZW0pO1xyXG4gICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50cyA9ICdidXR0b24sIFtyb2xlPVwiYnV0dG9uXCJdLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgYVtocmVmXSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJztcclxuICAgIGNvbnN0IGdldEludGVyYWN0aXZlRWxlbWVudHMgPSBSZWFjdC51c2VDYWxsYmFjaygoY29udGFpbmVyLCBzZWxlY3RvcikgPT4ge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSkuZmlsdGVyKGVsID0+ICFlbC5oYXNBdHRyaWJ1dGUoJ3RhYmluZGV4JykgfHxcclxuICAgICAgICAgICAgKGVsLnRhYkluZGV4ICE9PSB1bmRlZmluZWQgJiYgZWwudGFiSW5kZXggPj0gMCkpO1xyXG4gICAgfSwgW10pO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGFsbG93cyBmb3Iga2V5Ym9hcmQgbmF2aWdhdGlvbiB3aXRoaW4gdGhlIGxhYmVsIGFuZCBhZGRpdGlvbmFsIGNvbnRlbnQgb2YgYSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogWW91IGNhbiBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIHVzaW5nIHRoZSBgVGFiYCBrZXksIGFjdGl2YXRlIHRoZW0gd2l0aCBgRW50ZXJgIG9yIGBTcGFjZWAsXHJcbiAgICAgKiBhbmQgZXhpdCBvdXRzaWRlIGFuZCBmb2N1cyB0aGUgd2hvbGUgdHJlZSBpdGVtIHdpdGggYEVzY2FwZWAuXHJcbiAgICAgKiAqKi9cclxuICAgIGNvbnN0IGhhbmRsZUxhYmVsQW5kQWRkaXRpb25hbENvbnRlbnRLZXlEb3duID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBrZXksIHRhcmdldCwgY3VycmVudFRhcmdldCwgc2hpZnRLZXkgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gdGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNTcGFjZSA9IGtleSA9PT0gJyAnO1xyXG4gICAgICAgIGNvbnN0IGlzRXNjYXBlID0ga2V5ID09PSAnRXNjYXBlJztcclxuICAgICAgICBjb25zdCBpc1RhYiA9IGtleSA9PT0gJ1RhYic7XHJcbiAgICAgICAgY29uc3QgaXNBY3RpdmF0aW9uS2V5ID0gaXNFbnRlciB8fCBpc1NwYWNlO1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBgVGFiYCwgd2UgbmF2aWdhdGUgdGhyb3VnaCBpbnRlcmFjdGl2ZSBlbGVtZW50cyBpbnNpZGUgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmIChpc1RhYiAmJiBpc0luc2lkZVRyZWVJdGVtKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudHNMaXN0ID0gZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyhjdXJyZW50VGFyZ2V0LCBpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAgICAgLy8gRmlsdGVyIGxpc3Qgb2YgaW50ZXJhY3RpdmUgZWxlbWVudHMgd2hpY2ggYXJlIG9ubHkgaW5jbHVkZWQgZm9yIGN1cnJlbnQgdHJlZSBpdGVtXHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMgPSBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdC5maWx0ZXIoZWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2xvc2VzdFRyZWVJdGVtID0gZWwuY2xvc2VzdCgnW3JvbGU9XCJ0cmVlaXRlbVwiXScpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsb3Nlc3RUcmVlSXRlbSA9PT0gdHJlZUl0ZW1SZWYuY3VycmVudDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMuaW5kZXhPZihjdXJyZW50RWxlbWVudCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHNoaWZ0S2V5ID8gLTEgOiAxO1xyXG4gICAgICAgICAgICBjb25zdCB0b3RhbCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMubGVuZ3RoO1xyXG4gICAgICAgICAgICBjb25zdCBuZXh0SW5kZXggPSAoY3VycmVudEluZGV4ICsgZGlyZWN0aW9uICsgdG90YWwpICUgdG90YWw7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50c1tuZXh0SW5kZXhdO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudFRvRm9jdXMpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZWxlbWVudFRvRm9jdXMuZm9jdXMoKSwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBQcmVzc2luZyBgRW50ZXJgIG9yIGBTcGFjZWAgb24gYW4gaW50ZXJhY3RpdmUgZWxlbWVudCB3aWxsIHRyaWdnZXIgaXRzIGNsaWNrIGV2ZW50XHJcbiAgICAgICAgaWYgKGlzQWN0aXZhdGlvbktleSAmJiBpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgaW50ZXJhY3RpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE1vdmVzIGZvY3VzIG91dHNpZGUgdGhlIHRyZWUgaXRlbSBhbmQgZm9jdXNlcyB0aGUgdHJlZSBpdGVtIGl0c2VsZiB3aGVuIGBFc2NhcGVgIGlzIHByZXNzZWRcclxuICAgICAgICBpZiAoaXNFc2NhcGUpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHNldElzSW5zaWRlVHJlZUl0ZW0oZmFsc2UpO1xyXG4gICAgICAgICAgICBjb25zdCB0cmVlSXRlbU5vZGUgPSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICBpZiAodHJlZUl0ZW1Ob2RlKSB7XHJcbiAgICAgICAgICAgICAgICB0cmVlSXRlbU5vZGUuZm9jdXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzSW5zaWRlVHJlZUl0ZW1dKTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gUmVhY3QudXNlTWVtbygoKSA9PiBub2RlVHlwZSA9PT0gVHJlZU5vZGVUeXBlLmJyYW5jaCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEZvbGRlckljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KEFydGljbGVJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSksIFtub2RlVHlwZV0pO1xyXG4gICAgLy8gTWVtb2lzZSB0aGUgbGFiZWwgSlNYIHNvIHRoZSBgY2hlY2tib3hQcm9wc2AgbWVtbyBiZWxvdyBhY3R1YWxseSBoYXNcclxuICAgIC8vIGEgc3RhYmxlIGBsYWJlbFRleHRgIHJlZmVyZW5jZSBiZXR3ZWVuIHJlbmRlcnMuIFByZXZpb3VzbHkgdGhpc1xyXG4gICAgLy8gZWxlbWVudCB3YXMgcmUtY3JlYXRlZCBvbiBldmVyeSByZW5kZXIsIHdoaWNoIGZvcmNlZFxyXG4gICAgLy8gYGNoZWNrYm94UHJvcHNgIHRvIGFsc28gYmUgcmUtY3JlYXRlZCBhbmQgYW55IGZ1dHVyZSBSZWFjdC5tZW1vIG9uXHJcbiAgICAvLyBDaGVja2JveC9JbmRldGVybWluYXRlQ2hlY2tib3ggd291bGQgYWx3YXlzIGJhaWwgb3V0LlxyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gUmVhY3QudXNlTWVtbygoKSA9PiAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRMYWJlbFdyYXBwZXIsIHsgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgc3R5bGU6IGxhYmVsU3R5bGUsIGlkOiBgJHtpdGVtSWR9LWxhYmVsYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1sYWJlbGAgfSxcclxuICAgICAgICBoYXNJY29ucyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChJY29uV3JhcHBlciwgeyBpc0ludmVyc2U6IGlzSW52ZXJzZSwgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWljb25gIH0sIGljb24gfHwgZGVmYXVsdEljb24pKSxcclxuICAgICAgICBsYWJlbCkpLCBbXHJcbiAgICAgICAgdGhlbWUsXHJcbiAgICAgICAgaXNEaXNhYmxlZCxcclxuICAgICAgICBpc0ludmVyc2UsXHJcbiAgICAgICAgbGFiZWxTdHlsZSxcclxuICAgICAgICBpdGVtSWQsXHJcbiAgICAgICAgdGVzdElkLFxyXG4gICAgICAgIGhhc0ljb25zLFxyXG4gICAgICAgIGljb24sXHJcbiAgICAgICAgZGVmYXVsdEljb24sXHJcbiAgICAgICAgbGFiZWwsXHJcbiAgICBdKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBSZWFjdC51c2VNZW1vKCgpID0+IGFkZGl0aW9uYWxDb250ZW50ID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQWRkaXRpb25hbENvbnRlbnRXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaWQ6IGAke2l0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgIH0sIGFkZGl0aW9uYWxDb250ZW50KSkgOiBudWxsLCBbYWRkaXRpb25hbENvbnRlbnQsIHRoZW1lLCBpdGVtSWQsIHRlc3RJZF0pO1xyXG4gICAgLy8gU3RhYmxlIHBlci1jaGlsZCBoaWVyYXJjaHkgdmFsdWVzLiBUaGUgcmVmZXJlbmNlIG11c3Qgbm90IGNoYW5nZSBvblxyXG4gICAgLy8gcmUtcmVuZGVycyB0cmlnZ2VyZWQgYnkgVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0LCBvdGhlcndpc2UgZXZlcnlcclxuICAgIC8vIG5lc3RlZCBUcmVlSXRlbSByZS1yZW5kZXJzIHRocm91Z2ggdGhlIGNvbnRleHQgYW5kIFJlYWN0Lm1lbW8gaXNcclxuICAgIC8vIGRlZmVhdGVkLlxyXG4gICAgY29uc3QgY2hpbGRIaWVyYXJjaGllcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvdW50ID0gUmVhY3QuQ2hpbGRyZW4uY291bnQoY2hpbGRyZW4pO1xyXG4gICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShjb3VudCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGFycltpXSA9IHtcclxuICAgICAgICAgICAgICAgIGRlcHRoOiBpdGVtRGVwdGggKyAxLFxyXG4gICAgICAgICAgICAgICAgcGFyZW50RGVwdGg6IGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgIGlzVG9wTGV2ZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhcnI7XHJcbiAgICB9LCBbY2hpbGRyZW4sIGl0ZW1EZXB0aF0pO1xyXG4gICAgLy8gTWVtb2l6ZSBpbmxpbmUgc3R5bGUgb2JqZWN0cyB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IHJlLXJlbmRlcnNcclxuICAgIGNvbnN0IGNoZWNrYm94SW5wdXRTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHsgbWFyZ2luUmlnaHQ6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzIH0pLCBbdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDNdKTtcclxuICAgIGNvbnN0IGNoZWNrYm94TGFiZWxTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcclxuICAgICAgICBwYWRkaW5nOiAwLFxyXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICB9KSwgW10pO1xyXG4gICAgLy8gUHJvcHMgc2hhcmVkIGJ5IENoZWNrYm94IGFuZCBJbmRldGVybWluYXRlQ2hlY2tib3hcclxuICAgIGNvbnN0IGNoZWNrYm94UHJvcHMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XHJcbiAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaGlkZUZvY3VzOiB0cnVlLFxyXG4gICAgICAgIGlkOiBgJHtpdGVtSWR9LWNoZWNrYm94YCxcclxuICAgICAgICBpbnB1dFN0eWxlOiBjaGVja2JveElucHV0U3R5bGUsXHJcbiAgICAgICAgbGFiZWxTdHlsZTogY2hlY2tib3hMYWJlbFN0eWxlLFxyXG4gICAgICAgIGxhYmVsVGV4dDogbGFiZWxUZXh0LFxyXG4gICAgICAgIG9uQ2hhbmdlOiBjaGVja2JveENoYW5nZUhhbmRsZXIsXHJcbiAgICAgICAgdGFiSW5kZXg6IC0xLFxyXG4gICAgICAgIHRlc3RJZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICB9KSwgW1xyXG4gICAgICAgIGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaXRlbUlkLFxyXG4gICAgICAgIGNoZWNrYm94SW5wdXRTdHlsZSxcclxuICAgICAgICBjaGVja2JveExhYmVsU3R5bGUsXHJcbiAgICAgICAgbGFiZWxUZXh0LFxyXG4gICAgICAgIGNoZWNrYm94Q2hhbmdlSGFuZGxlcixcclxuICAgIF0pO1xyXG4gICAgY29uc3Qgb25FeHBhbmRlZENsaWNrZWQgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGhhbmRsZUV4cGFuZGVkQ2hhbmdlKGV2ZW50LCBpdGVtSWQpO1xyXG4gICAgfSwgW2hhbmRsZUV4cGFuZGVkQ2hhbmdlLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IGhhbmRsZUV4cGFuZENsaWNrID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKCFpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICBvbkV4cGFuZGVkQ2xpY2tlZChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIG9uRXhwYW5kZWRDbGlja2VkXSk7XHJcbiAgICBjb25zdCBoYW5kbGVPbkNsaWNrID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSBldmVudC50YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdCgnYnV0dG9uLCBbcm9sZT1cImJ1dHRvblwiXSwgYVtocmVmXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIFtyb2xlPVwibWVudWl0ZW1cIl0nKTtcclxuICAgICAgICAvLyBQcmV2ZW50aW5nIHNlbGVjdGluZyB0aGUgaXRlbSB3aGVuIGNsaWNraW5nIG9uIGludGVyYWN0aXZlIGVsZW1lbnRzIHdoZW4gYHNlbGVjdGFibGVgIGlzIGBzaW5nbGVgXHJcbiAgICAgICAgaWYgKGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBJZiBzZWxlY3RQYXJlbnRzIGlzIGZhbHNlIGFuZCB0aGlzIGlzIGEgcGFyZW50IGl0ZW0sIGhhbmRsZSBleHBhbmQvY29sbGFwc2UgaW5zdGVhZCBvZiBzZWxlY3Rpb25cclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZSAmJlxyXG4gICAgICAgICAgICAhc2VsZWN0UGFyZW50cyAmJlxyXG4gICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMpIHtcclxuICAgICAgICAgICAgb25FeHBhbmRlZENsaWNrZWQoZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEluIHNlbGVjdGFibGU9b2ZmIG1vZGUsIGNsaWNraW5nIGFueXdoZXJlIG9uIGEgcGFyZW50IGl0ZW0gdG9nZ2xlcyBleHBhbmQvY29sbGFwc2VcclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLm9mZiAmJiBoYXNPd25UcmVlSXRlbXMpIHtcclxuICAgICAgICAgICAgb25FeHBhbmRlZENsaWNrZWQoZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUuc2luZ2xlKSB7XHJcbiAgICAgICAgICAgIGhhbmRsZUNsaWNrKGV2ZW50LCBpdGVtSWQpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCB0YWJJbmRleCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpdGVtVG9Gb2N1cyA9PT0gaXRlbUlkID8gMCA6IC0xO1xyXG4gICAgfSwgW2lzRGlzYWJsZWQsIGl0ZW1Ub0ZvY3VzLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IHNob3VsZFNob3dDaGVja2JveCA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aSAmJlxyXG4gICAgICAgIChpc1RvcExldmVsU2VsZWN0YWJsZSAhPT0gZmFsc2UgfHwgIXRvcExldmVsKTtcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gd2l0aGluIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogUHJlc3NpbmcgYEN0cmwgKyBFbnRlcmAgb3IgYENvbW1hbmQgKyBFbnRlcmAgZm9jdXNlcyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudCB3aXRoaW4gdGhlIHRyZWUgaXRlbVxyXG4gICAgICogYW5kIGxvY2tzIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIElmIHRoZSBmb2N1cyBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaXQgaGFuZGxlcyBrZXkgZXZlbnRzIGZvciBpbnRlcmFjdGlvbiBlbGVtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBJdCBhbHNvIGhhbmRsZXMgdGhlIG90aGVyIGtleXMgdG8gdHJpZ2dlciB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIHRyZWUgaXRlbS5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3Qgb25LZXlEb3duSGFuZGxlciA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsga2V5LCB0YXJnZXQsIGN1cnJlbnRUYXJnZXQgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNDdHJsT3JDb21tYW5kID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5O1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybEVudGVyID0gaXNDdHJsT3JDb21tYW5kICYmIGlzRW50ZXI7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBDdHJsICsgRW50ZXIgb3IgQ29tbWFuZCArIEVudGVyLCBmb2N1cyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudFxyXG4gICAgICAgIC8vIGFuZCBsb2NrIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzQ3RybEVudGVyICYmIHRhcmdldCA9PT0gY3VycmVudFRhcmdldCkge1xyXG4gICAgICAgICAgICBzZXRJc0luc2lkZVRyZWVJdGVtKHRydWUpO1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdCA9IGdldEludGVyYWN0aXZlRWxlbWVudHMoY3VycmVudFRhcmdldCwgaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gaW50ZXJhY3RpdmVFbGVtZW50c0xpc3RbMF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gRW5zdXJlIHZhbGlkIENTUyBzZWxlY3RvcnMgYnkgZXNjYXBpbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChlLmcuLCBwZXJpb2RzIGluIGl0ZW1JZClcclxuICAgICAgICBjb25zdCBzYWZlSXRlbUlkID0gQ1NTLmVzY2FwZShpdGVtSWQpO1xyXG4gICAgICAgIGNvbnN0IGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50ID0gdGFyZ2V0LmNsb3Nlc3QoYCMke3NhZmVJdGVtSWR9LWxhYmVsLCAjJHtzYWZlSXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgKTtcclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHdpdGhpbiB0aGUgbGFiZWwgb3IgYWRkaXRpb25hbCBjb250ZW50LCBoYW5kbGUga2V5IGV2ZW50cyBmb3IgdGhvc2UgYXJlYXNcclxuICAgICAgICBpZiAoaXNXaXRoaW5MYWJlbE9yQWRkaXRpb25hbENvbnRlbnQpIHtcclxuICAgICAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaXMgdGhlIHRyZWUgaXRlbSBpdHNlbGYsIGhhbmRsZSBrZXkgZG93biBmb3IgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgaGFuZGxlS2V5RG93bihldmVudCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9LCBbXHJcbiAgICAgICAgZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyxcclxuICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnRzLFxyXG4gICAgICAgIGl0ZW1JZCxcclxuICAgICAgICBoYW5kbGVMYWJlbEFuZEFkZGl0aW9uYWxDb250ZW50S2V5RG93bixcclxuICAgICAgICBoYW5kbGVLZXlEb3duLFxyXG4gICAgXSk7XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBjb250ZXh0VmFsdWUgfSxcclxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgc3R5bGU6IHRyZWVJdGVtU3R5bGVzIH0sXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkVHJlZUl0ZW0sIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgXCJhcmlhLWV4cGFuZGVkXCI6IGhhc093blRyZWVJdGVtcyA/IGV4cGFuZGVkIDogbnVsbCwgXCJhcmlhLXNlbGVjdGVkXCI6IHNlbGVjdGVkSXRlbSwgXCJhcmlhLWNoZWNrZWRcIjogc2hvdWxkU2hvd0NoZWNrYm94ID8gYXJpYUNoZWNrZWRWYWx1ZSA6IG51bGwsIFwiZGF0YS10ZXN0aWRcIjogdGVzdElkLCBkZXB0aDogaXRlbURlcHRoLCBoYXNPd25UcmVlSXRlbXM6IGhhc093blRyZWVJdGVtcywgaWQ6IGl0ZW1JZCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIGlzVmlydHVhbGl6ZWQ6IGhpZXJhcmNoeUNvbnRleHQuaXNWaXJ0dWFsaXplZCwgbm9kZVR5cGU6IG5vZGVUeXBlLCByb2xlOiBcInRyZWVpdGVtXCIsIHNlbGVjdGFibGVUeXBlOiBzZWxlY3RhYmxlLCBzZWxlY3RlZDogc2VsZWN0ZWRJdGVtLCB0aGVtZTogdGhlbWUsIHRhYkluZGV4OiB0YWJJbmRleCwgb25LZXlEb3duOiBvbktleURvd25IYW5kbGVyLCByZWY6IHRyZWVJdGVtUmVmLCBob3ZlckNvbG9yOiBob3ZlckNvbG9yIH0pLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRJdGVtV3JhcHBlciwgeyBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCA/PyBpdGVtSWR9LWl0ZW13cmFwcGVyYCwgZGVwdGg6IGl0ZW1EZXB0aCwgaGFzQWRkaXRpb25hbENvbnRlbnQ6ICEhYWRkaXRpb25hbENvbnRlbnQsIGhhc0N1c3RvbUljb25TaXplOiAhIWV4cGFuZEljb25TdHlsZXM/LnNpemUsIGlkOiBgJHtpdGVtSWR9LWl0ZW13cmFwcGVyYCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG5vZGVUeXBlOiBub2RlVHlwZSwgc2VsZWN0YWJsZTogc2VsZWN0YWJsZSwgc3R5bGU6IHN0eWxlLCB0aGVtZTogdGhlbWUsIHJlZjogbWVyZ2VSZWZzKHJlZiwgZm9jdXNUcmFwRWxlbWVudCksIG9uQ2xpY2s6IGhhbmRsZU9uQ2xpY2sgfSxcclxuICAgICAgICAgICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkRXhwYW5kV3JhcHBlciwgeyBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplLCBjb2xvcjogZXhwYW5kSWNvblN0eWxlcz8uY29sb3IsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tZXhwYW5kYCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG9uQ2xpY2s6IGhhbmRsZUV4cGFuZENsaWNrLCB0aGVtZTogdGhlbWUgfSwgZXhwYW5kZWQgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChFeHBhbmRNb3JlSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIHNpemU6IGV4cGFuZEljb25TdHlsZXM/LnNpemUgfSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hldnJvblJpZ2h0SWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIHNpemU6IGV4cGFuZEljb25TdHlsZXM/LnNpemUgfSkpKSksXHJcbiAgICAgICAgICAgICAgICAgICAgc2hvdWxkU2hvd0NoZWNrYm94ID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkQ2hlY2tib3hXcmFwcGVyLCB7IGhhc0FkZGl0aW9uYWxDb250ZW50OiAhIWFkZGl0aW9uYWxDb250ZW50LCB0aGVtZTogdGhlbWUgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzT3duVHJlZUl0ZW1zID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW5kZXRlcm1pbmF0ZUNoZWNrYm94LCBPYmplY3QuYXNzaWduKHt9LCBjaGVja2JveFByb3BzLCB7IHN0YXR1czogY2hlY2tlZFN0YXR1cyB9KSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hlY2tib3gsIE9iamVjdC5hc3NpZ24oe30sIGNoZWNrYm94UHJvcHMsIHsgY2hlY2tlZDogY2hlY2tlZFN0YXR1c1RvQm9vbGVhbihjaGVja2VkU3RhdHVzKSB9KSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlSXRlbUFkZGl0aW9uYWxDb250ZW50KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxUZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlSXRlbUFkZGl0aW9uYWxDb250ZW50KSkpLFxyXG4gICAgICAgICAgICAgICAgaGFzR3VpZGVMaW5lcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIChoaWVyYXJjaHlDb250ZXh0LmlzVmlydHVhbGl6ZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBpdGVtRGVwdGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5mcm9tKHsgbGVuZ3RoOiBpdGVtRGVwdGggfSwgKF8sIGQpID0+IChSZWFjdC5jcmVhdGVFbGVtZW50KFZpcnR1YWxpemVkR3VpZGVMaW5lLCB7IGtleTogYGd1aWRlbGluZS0ke2R9YCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS12aXJ0dWFsaXplZC1ndWlkZWxpbmUtJHtkfWAsIHRoZW1lOiB0aGVtZSwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2V0SW5saW5lU3RhcnQ6IGBjYWxjKCR7Y2FsY3VsYXRlT2Zmc2V0KFRyZWVOb2RlVHlwZS5icmFuY2gsIGQsIGZhbHNlLCBmYWxzZSwgdHJ1ZSl9ICsgJHtleHBhbmRJY29uU3R5bGVzPy5zaXplICE9PSB1bmRlZmluZWQgPyBgJHtleHBhbmRJY29uU3R5bGVzLnNpemV9cHhgIDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDZ9IC8gMiAtIDAuNXB4KWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB9KSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaGFzT3duVHJlZUl0ZW1zICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRlZCAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChHdWlkZUxpbmUsIHsgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1ndWlkZWxpbmVgLCB0aGVtZTogdGhlbWUsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBndWlkZUxpbmVMZWZ0OiBgY2FsYygke2NhbGN1bGF0ZU9mZnNldChUcmVlTm9kZVR5cGUuYnJhbmNoLCBpdGVtRGVwdGgsIGZhbHNlLCBmYWxzZSwgZmFsc2UpfSArICR7ZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7ZXhwYW5kSWNvblN0eWxlcy5zaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fSAvIDIgLSAwLjVweCkgYCB9KSkpLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuQ2hpbGRyZW4ubWFwKGNoaWxkcmVuLCAoY2hpbGQsIGNoaWxkSW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQ/LnR5cGUgIT09IFRyZWVJdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVXNlIHRoZSBzdGFibGUsIHByZS1tZW1vaXNlZCB2YWx1ZSAoc2VlIGNoaWxkSGllcmFyY2hpZXMgYWJvdmUpLlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5lc3RlZEhpZXJhcmNoeVZhbHVlID0gY2hpbGRIaWVyYXJjaGllc1tjaGlsZEluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJhbnNpdGlvbiwgeyBpc09wZW46IGV4cGFuZGVkLCB1bm1vdW50T25FeGl0OiB0cnVlIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ1bFwiLCB7IHJvbGU6IFwiZ3JvdXBcIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUcmVlSXRlbUhpZXJhcmNoeUNvbnRleHQuUHJvdmlkZXIsIHsga2V5OiBjaGlsZC5wcm9wcy5pdGVtSWQsIHZhbHVlOiBuZXN0ZWRIaWVyYXJjaHlWYWx1ZSB9LCBjaGlsZCkpKSk7XHJcbiAgICAgICAgICAgICAgICB9KSksXHJcbiAgICAgICAgICAgIGlzTWFjT1MgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVmlzdWFsbHlIaWRkZW4sIG51bGwsXHJcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEFubm91bmNlLCBudWxsLCBleHBhbmRlZFxyXG4gICAgICAgICAgICAgICAgICAgID8gaTE4bi5leHBhbnNpb25TdGF0ZS5leHBhbmRlZFxyXG4gICAgICAgICAgICAgICAgICAgIDogaTE4bi5leHBhbnNpb25TdGF0ZS5jb2xsYXBzZWQpKSkpKSk7XHJcbn0pO1xyXG4vKipcclxuICogQ3VzdG9tIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIFJlYWN0Lm1lbW9cclxuICogT25seSByZS1yZW5kZXIgVHJlZUl0ZW0gd2hlbiByZWxldmFudCBwcm9wcyBjaGFuZ2VcclxuICovXHJcbmZ1bmN0aW9uIGFyZVByb3BzRXF1YWwocHJldlByb3BzLCBuZXh0UHJvcHMpIHtcclxuICAgIC8vIENoZWNrIGlmIGl0ZW1JZCBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLml0ZW1JZCAhPT0gbmV4dFByb3BzLml0ZW1JZCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGxhYmVsIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMubGFiZWwgIT09IG5leHRQcm9wcy5sYWJlbCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGRpc2FibGVkIHN0YXRlIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaXNEaXNhYmxlZCAhPT0gbmV4dFByb3BzLmlzRGlzYWJsZWQpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBpY29uIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaWNvbiAhPT0gbmV4dFByb3BzLmljb24pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBhZGRpdGlvbmFsIGNvbnRlbnQgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5hZGRpdGlvbmFsQ29udGVudCAhPT0gbmV4dFByb3BzLmFkZGl0aW9uYWxDb250ZW50KSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgaG92ZXIgY29sb3IgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5ob3ZlckNvbG9yICE9PSBuZXh0UHJvcHMuaG92ZXJDb2xvcikge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGNoaWxkcmVuIGNoYW5nZWQgKGZvciBuZXN0ZWQgdHJlZSBpdGVtcylcclxuICAgIC8vIFVzaW5nIHR5cGUgYXNzZXJ0aW9uIHNpbmNlIGNoaWxkcmVuIGNvbWVzIGZyb20gUmVhY3QuSFRNTEF0dHJpYnV0ZXNcclxuICAgIGlmIChwcmV2UHJvcHMuY2hpbGRyZW4gIT09IG5leHRQcm9wcy5jaGlsZHJlbikge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIHN0eWxlcyBjaGFuZ2VkXHJcbiAgICAvLyBVc2luZyB0eXBlIGFzc2VydGlvbiBzaW5jZSBzdHlsZSBjb21lcyBmcm9tIFJlYWN0LkhUTUxBdHRyaWJ1dGVzXHJcbiAgICBpZiAocHJldlByb3BzLnN0eWxlICE9PSBuZXh0UHJvcHMuc3R5bGUpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAocHJldlByb3BzLmxhYmVsU3R5bGUgIT09IG5leHRQcm9wcy5sYWJlbFN0eWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZQcm9wcy50cmVlSXRlbVN0eWxlcyAhPT0gbmV4dFByb3BzLnRyZWVJdGVtU3R5bGVzKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQWxsIHJlbGV2YW50IHByb3BzIGFyZSBlcXVhbCwgc2tpcCByZS1yZW5kZXJcclxuICAgIHJldHVybiB0cnVlO1xyXG59XHJcbi8qKlxyXG4gKiBNZW1vaXplZCBUcmVlSXRlbSBjb21wb25lbnRcclxuICogT25seSByZS1yZW5kZXJzIHdoZW4gcmVsZXZhbnQgcHJvcHMgY2hhbmdlLCBpbXByb3ZpbmcgcGVyZm9ybWFuY2UgZm9yIGxhcmdlIHRyZWVzXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW0gPSBSZWFjdC5tZW1vKFRyZWVJdGVtQ29tcG9uZW50LCBhcmVQcm9wc0VxdWFsKTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VHJlZUl0ZW0uanMubWFwIl19 */"));
|
|
29399
29401
|
/*#__PURE__*/createStyled("span", {
|
|
29400
29402
|
target: "e1xiryew6",
|
|
29401
29403
|
label: "StyledLabelWrapper"
|
|
29402
29404
|
})("display:flex;align-items:flex-start;color:", function (props) {
|
|
29403
29405
|
return getTreeItemLabelColor(props.isInverse, props.isDisabled, props.theme);
|
|
29404
|
-
}, ";width:100%;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4R3VDIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dCB9IGZyb20gJy4vVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdDb25maWdDb250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld0NvbmZpZ0NvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0V4cGFuc2lvbkNvbnRleHQgfSBmcm9tICcuL1RyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyBjYWxjdWxhdGVPZmZzZXQsIGdldFRyZWVJdGVtTGFiZWxDb2xvciwgZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yLCBUcmVlTm9kZVR5cGUsIH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IEkxOG5Db250ZXh0IH0gZnJvbSAnLi4vLi4nO1xyXG5pbXBvcnQgdXNlRGV2aWNlRGV0ZWN0IGZyb20gJy4uLy4uL2hvb2tzL3VzZURldmljZURldGVjdCc7XHJcbmltcG9ydCB7IHVzZUZvY3VzTG9jayB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZUZvY3VzTG9jayc7XHJcbmltcG9ydCB7IHVzZUlzSW52ZXJzZSB9IGZyb20gJy4uLy4uL2ludmVyc2UnO1xyXG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgfSBmcm9tICcuLi8uLi90aGVtZS9UaGVtZUNvbnRleHQnO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmltcG9ydCB7IEFubm91bmNlIH0gZnJvbSAnLi4vQW5ub3VuY2UnO1xyXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gJy4uL0NoZWNrYm94JztcclxuaW1wb3J0IHsgSW5kZXRlcm1pbmF0ZUNoZWNrYm94LCBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMsIH0gZnJvbSAnLi4vSW5kZXRlcm1pbmF0ZUNoZWNrYm94JztcclxuaW1wb3J0IHsgVHJhbnNpdGlvbiB9IGZyb20gJy4uL1RyYW5zaXRpb24nO1xyXG5pbXBvcnQgeyBWaXN1YWxseUhpZGRlbiB9IGZyb20gJy4uL1Zpc3VhbGx5SGlkZGVuJztcclxuY29uc3QgU3R5bGVkVHJlZUl0ZW0gPSBzdHlsZWQubGkgYFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDBcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWw3MDB9O1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIGN1cnNvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbVdyYXBwZXJDdXJzb3IocHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMuc2VsZWN0YWJsZVR5cGUsIHByb3BzLm5vZGVUeXBlKX07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcblxuICBwYWRkaW5nLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCBmYWxzZSwgZmFsc2UsIHByb3BzLmlzVmlydHVhbGl6ZWQpfTtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuXG4gICAgJiA+ICo6Zmlyc3QtY2hpbGQge1xuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkXG4gICAgICAgICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLmZvY3VzSW52ZXJzZVxyXG4gICAgOiBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXN9O1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIGZhbHNlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgbWFyZ2luLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCB0cnVlLCB0cnVlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgcGFkZGluZy1ibG9jay1lbmQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctYmxvY2stc3RhcnQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJlxyXG4gICAgY3NzIGBcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzLmlzSW52ZXJzZVxyXG4gICAgICAgID8gcHJvcHMudGhlbWUuY29sb3JzLnRlcnRpYXJ5NTAwXHJcbiAgICAgICAgOiBwcm9wcy50aGVtZS5jb2xvcnMucHJpbWFyeTUwMH07XG4gICAgICAgICAgYmxvY2stc2l6ZTogMTAwJTtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICBpbmxpbmUtc2l6ZTogJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ6IDA7XG4gICAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAwO1xuICAgICAgICB9XG4gICAgICBgfVxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBnZXRIb3ZlckJhY2tncm91bmQoe1xyXG4gICAgaXNEaXNhYmxlZDogcHJvcHMuaXNEaXNhYmxlZCxcclxuICAgIGhvdmVyQ29sb3I6IHByb3BzLmhvdmVyQ29sb3IsXHJcbiAgICBpc0ludmVyc2U6IHByb3BzLmlzSW52ZXJzZSxcclxuICAgIHRoZW1lOiBwcm9wcy50aGVtZSxcclxufSl9O1xuICAgIH1cbiAgfVxuYDtcclxuZnVuY3Rpb24gZ2V0SG92ZXJCYWNrZ3JvdW5kKHsgaXNEaXNhYmxlZCwgaG92ZXJDb2xvciwgaXNJbnZlcnNlLCB0aGVtZSB9KSB7XHJcbiAgICBpZiAoaXNEaXNhYmxlZClcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgaWYgKGhvdmVyQ29sb3IpXHJcbiAgICAgICAgcmV0dXJuIGhvdmVyQ29sb3I7XHJcbiAgICBjb25zdCB0cmFuc3BhcmVuY3kgPSBpc0ludmVyc2UgPyAwLjggOiAwLjk1O1xyXG4gICAgcmV0dXJuIHRyYW5zcGFyZW50aXplKHRyYW5zcGFyZW5jeSwgdGhlbWUuY29sb3JzLm5ldXRyYWw5MDApO1xyXG59XHJcbmNvbnN0IEljb25XcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBtYXJnaW4tbGVmdDogMDtcblxuICBzdmcge1xuICAgIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pY29uU2l6ZXMubWVkaXVtfXB4O1xuICAgIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgfVxuYDtcclxuY29uc3QgU3R5bGVkTGFiZWxXcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgd2lkdGg6IDEwMCU7XG5gO1xyXG5jb25zdCBTdHlsZWRFeHBhbmRXcmFwcGVyID0gc3R5bGVkLmRpdiBgXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgbWFyZ2luLXJpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuY29sb3IgfHxcclxuICAgIGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIHdpZHRoOiAkeyh7IHNpemUsIHRoZW1lIH0pID0+IHNpemUgIT09IHVuZGVmaW5lZCA/IGAke3NpemV9cHhgIDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDZ9O1xuICBoZWlnaHQ6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG5gO1xyXG5jb25zdCBHdWlkZUxpbmUgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDh9O1xuICBib3R0b206IDA7XG4gIGluc2V0LWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy5ndWlkZUxpbmVMZWZ0fTtcbiAgd2lkdGg6IDA7XG4gIGJvcmRlci1pbmxpbmUtc3RhcnQ6IDFweCBzb2xpZFxuICAgICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHRyYW5zcGFyZW50aXplKDAuNywgcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDApXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMzAwfTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHotaW5kZXg6IDE7XG5gO1xyXG5jb25zdCBWaXJ0dWFsaXplZEd1aWRlTGluZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogMDtcbiAgYm9yZGVyLWlubGluZS1zdGFydDogMXB4IHNvbGlkXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDEwMClcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwzMDB9O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW1Db21wb25lbnQgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XHJcbiAgICBjb25zdCB7IGFkZGl0aW9uYWxDb250ZW50LCBjaGlsZHJlbiwgaG92ZXJDb2xvciwgaWNvbiwgaW5kZXg6IGluZGV4UHJvcCwgbGFiZWwsIGxhYmVsU3R5bGUsIHN0eWxlLCB0ZXN0SWQsIHRvcExldmVsOiB0b3BMZXZlbFByb3AsIHRyZWVJdGVtU3R5bGVzLCAuLi5yZXN0IH0gPSBwcm9wcztcclxuICAgIGNvbnN0IHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xyXG4gICAgY29uc3QgaXNJbnZlcnNlID0gdXNlSXNJbnZlcnNlKCk7XHJcbiAgICAvLyBSZWFkIGhpZXJhcmNoeSBpbmZvcm1hdGlvbiBmcm9tIGNvbnRleHQgKHJlZHVjZXMgY2xvbmVFbGVtZW50IG92ZXJoZWFkKVxyXG4gICAgY29uc3QgaGllcmFyY2h5Q29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0KTtcclxuICAgIC8vIFVzZSBjb250ZXh0IHZhbHVlcyBpZiBwcm9wcyBhcmUgbm90IHByb3ZpZGVkIChmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSlcclxuICAgIGNvbnN0IGluZGV4ID0gaW5kZXhQcm9wICE9PSB1bmRlZmluZWQgPyBpbmRleFByb3AgOiBoaWVyYXJjaHlDb250ZXh0LmluZGV4O1xyXG4gICAgY29uc3QgdG9wTGV2ZWwgPSB0b3BMZXZlbFByb3AgIT09IHVuZGVmaW5lZCA/IHRvcExldmVsUHJvcCA6IGhpZXJhcmNoeUNvbnRleHQuaXNUb3BMZXZlbDtcclxuICAgIC8vIENvbnN1bWUgc3BsaXQgY29udGV4dHMgZm9yIHJlZHVjZWQgcmUtcmVuZGVyIHNjb3BlXHJcbiAgICBjb25zdCB7IGl0ZW1Ub0ZvY3VzIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGhhbmRsZUV4cGFuZGVkQ2hhbmdlIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGV4cGFuZEljb25TdHlsZXMsIGhhc0d1aWRlTGluZXMsIGhhc0ljb25zLCBpc1RvcExldmVsU2VsZWN0YWJsZSwgc2VsZWN0YWJsZSwgc2VsZWN0UGFyZW50cyA9IHRydWUsIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29uZmlnQ29udGV4dCk7XHJcbiAgICAvLyBQYXNzIHRoZSByZXNvbHZlZCB2YWx1ZXMgdG8gdXNlVHJlZUl0ZW1cclxuICAgIGNvbnN0IHByb3BzV2l0aEhpZXJhcmNoeSA9IHtcclxuICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICBpbmRleCxcclxuICAgICAgICB0b3BMZXZlbCxcclxuICAgICAgICBpdGVtRGVwdGg6IGhpZXJhcmNoeUNvbnRleHQuZGVwdGgsXHJcbiAgICAgICAgcGFyZW50RGVwdGg6IGhpZXJhcmNoeUNvbnRleHQucGFyZW50RGVwdGgsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyBjb250ZXh0VmFsdWUsIGhhbmRsZUNsaWNrLCBoYW5kbGVLZXlEb3duIH0gPSB1c2VUcmVlSXRlbShwcm9wc1dpdGhIaWVyYXJjaHksIGZvcndhcmRlZFJlZik7XHJcbiAgICBjb25zdCB7IGlzRGlzYWJsZWQgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IHsgaXNNYWNPUyB9ID0gdXNlRGV2aWNlRGV0ZWN0KCk7XHJcbiAgICBjb25zdCBpMThuID0gUmVhY3QudXNlQ29udGV4dChJMThuQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGNoZWNrYm94Q2hhbmdlSGFuZGxlciwgY2hlY2tlZFN0YXR1cywgZXhwYW5kZWQsIGhhc093blRyZWVJdGVtcywgaXRlbURlcHRoLCBpdGVtSWQsIHJlZiwgc2VsZWN0ZWRJdGVtcywgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IG5vZGVUeXBlID0gaGFzT3duVHJlZUl0ZW1zID8gVHJlZU5vZGVUeXBlLmJyYW5jaCA6IFRyZWVOb2RlVHlwZS5sZWFmO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZVxyXG4gICAgICAgID8gc2VsZWN0ZWRJdGVtcz8uWzBdPy5pdGVtSWQgPT09IGl0ZW1JZFxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IGFyaWFDaGVja2VkVmFsdWUgPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUubXVsdGlcclxuICAgICAgICA/IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5pbmRldGVybWluYXRlXHJcbiAgICAgICAgICAgID8gJ21peGVkJ1xyXG4gICAgICAgICAgICA6IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5jaGVja2VkXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgW2lzSW5zaWRlVHJlZUl0ZW0sIHNldElzSW5zaWRlVHJlZUl0ZW1dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgdHJlZUl0ZW1SZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XHJcbiAgICBjb25zdCBmb2N1c1RyYXBFbGVtZW50ID0gdXNlRm9jdXNMb2NrKGlzSW5zaWRlVHJlZUl0ZW0pO1xyXG4gICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50cyA9ICdidXR0b24sIFtyb2xlPVwiYnV0dG9uXCJdLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgYVtocmVmXSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJztcclxuICAgIGNvbnN0IGdldEludGVyYWN0aXZlRWxlbWVudHMgPSBSZWFjdC51c2VDYWxsYmFjaygoY29udGFpbmVyLCBzZWxlY3RvcikgPT4ge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSkuZmlsdGVyKGVsID0+ICFlbC5oYXNBdHRyaWJ1dGUoJ3RhYmluZGV4JykgfHxcclxuICAgICAgICAgICAgKGVsLnRhYkluZGV4ICE9PSB1bmRlZmluZWQgJiYgZWwudGFiSW5kZXggPj0gMCkpO1xyXG4gICAgfSwgW10pO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGFsbG93cyBmb3Iga2V5Ym9hcmQgbmF2aWdhdGlvbiB3aXRoaW4gdGhlIGxhYmVsIGFuZCBhZGRpdGlvbmFsIGNvbnRlbnQgb2YgYSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogWW91IGNhbiBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIHVzaW5nIHRoZSBgVGFiYCBrZXksIGFjdGl2YXRlIHRoZW0gd2l0aCBgRW50ZXJgIG9yIGBTcGFjZWAsXHJcbiAgICAgKiBhbmQgZXhpdCBvdXRzaWRlIGFuZCBmb2N1cyB0aGUgd2hvbGUgdHJlZSBpdGVtIHdpdGggYEVzY2FwZWAuXHJcbiAgICAgKiAqKi9cclxuICAgIGNvbnN0IGhhbmRsZUxhYmVsQW5kQWRkaXRpb25hbENvbnRlbnRLZXlEb3duID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBrZXksIHRhcmdldCwgY3VycmVudFRhcmdldCwgc2hpZnRLZXkgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gdGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNTcGFjZSA9IGtleSA9PT0gJyAnO1xyXG4gICAgICAgIGNvbnN0IGlzRXNjYXBlID0ga2V5ID09PSAnRXNjYXBlJztcclxuICAgICAgICBjb25zdCBpc1RhYiA9IGtleSA9PT0gJ1RhYic7XHJcbiAgICAgICAgY29uc3QgaXNBY3RpdmF0aW9uS2V5ID0gaXNFbnRlciB8fCBpc1NwYWNlO1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBgVGFiYCwgd2UgbmF2aWdhdGUgdGhyb3VnaCBpbnRlcmFjdGl2ZSBlbGVtZW50cyBpbnNpZGUgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmIChpc1RhYiAmJiBpc0luc2lkZVRyZWVJdGVtKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudHNMaXN0ID0gZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyhjdXJyZW50VGFyZ2V0LCBpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAgICAgLy8gRmlsdGVyIGxpc3Qgb2YgaW50ZXJhY3RpdmUgZWxlbWVudHMgd2hpY2ggYXJlIG9ubHkgaW5jbHVkZWQgZm9yIGN1cnJlbnQgdHJlZSBpdGVtXHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMgPSBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdC5maWx0ZXIoZWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2xvc2VzdFRyZWVJdGVtID0gZWwuY2xvc2VzdCgnW3JvbGU9XCJ0cmVlaXRlbVwiXScpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsb3Nlc3RUcmVlSXRlbSA9PT0gdHJlZUl0ZW1SZWYuY3VycmVudDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMuaW5kZXhPZihjdXJyZW50RWxlbWVudCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHNoaWZ0S2V5ID8gLTEgOiAxO1xyXG4gICAgICAgICAgICBjb25zdCB0b3RhbCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMubGVuZ3RoO1xyXG4gICAgICAgICAgICBjb25zdCBuZXh0SW5kZXggPSAoY3VycmVudEluZGV4ICsgZGlyZWN0aW9uICsgdG90YWwpICUgdG90YWw7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50c1tuZXh0SW5kZXhdO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudFRvRm9jdXMpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZWxlbWVudFRvRm9jdXMuZm9jdXMoKSwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBQcmVzc2luZyBgRW50ZXJgIG9yIGBTcGFjZWAgb24gYW4gaW50ZXJhY3RpdmUgZWxlbWVudCB3aWxsIHRyaWdnZXIgaXRzIGNsaWNrIGV2ZW50XHJcbiAgICAgICAgaWYgKGlzQWN0aXZhdGlvbktleSAmJiBpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgaW50ZXJhY3RpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE1vdmVzIGZvY3VzIG91dHNpZGUgdGhlIHRyZWUgaXRlbSBhbmQgZm9jdXNlcyB0aGUgdHJlZSBpdGVtIGl0c2VsZiB3aGVuIGBFc2NhcGVgIGlzIHByZXNzZWRcclxuICAgICAgICBpZiAoaXNFc2NhcGUpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHNldElzSW5zaWRlVHJlZUl0ZW0oZmFsc2UpO1xyXG4gICAgICAgICAgICBjb25zdCB0cmVlSXRlbU5vZGUgPSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICBpZiAodHJlZUl0ZW1Ob2RlKSB7XHJcbiAgICAgICAgICAgICAgICB0cmVlSXRlbU5vZGUuZm9jdXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzSW5zaWRlVHJlZUl0ZW1dKTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gUmVhY3QudXNlTWVtbygoKSA9PiBub2RlVHlwZSA9PT0gVHJlZU5vZGVUeXBlLmJyYW5jaCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEZvbGRlckljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KEFydGljbGVJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSksIFtub2RlVHlwZV0pO1xyXG4gICAgLy8gTWVtb2lzZSB0aGUgbGFiZWwgSlNYIHNvIHRoZSBgY2hlY2tib3hQcm9wc2AgbWVtbyBiZWxvdyBhY3R1YWxseSBoYXNcclxuICAgIC8vIGEgc3RhYmxlIGBsYWJlbFRleHRgIHJlZmVyZW5jZSBiZXR3ZWVuIHJlbmRlcnMuIFByZXZpb3VzbHkgdGhpc1xyXG4gICAgLy8gZWxlbWVudCB3YXMgcmUtY3JlYXRlZCBvbiBldmVyeSByZW5kZXIsIHdoaWNoIGZvcmNlZFxyXG4gICAgLy8gYGNoZWNrYm94UHJvcHNgIHRvIGFsc28gYmUgcmUtY3JlYXRlZCBhbmQgYW55IGZ1dHVyZSBSZWFjdC5tZW1vIG9uXHJcbiAgICAvLyBDaGVja2JveC9JbmRldGVybWluYXRlQ2hlY2tib3ggd291bGQgYWx3YXlzIGJhaWwgb3V0LlxyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gUmVhY3QudXNlTWVtbygoKSA9PiAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRMYWJlbFdyYXBwZXIsIHsgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgc3R5bGU6IGxhYmVsU3R5bGUsIGlkOiBgJHtpdGVtSWR9LWxhYmVsYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1sYWJlbGAgfSxcclxuICAgICAgICBoYXNJY29ucyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChJY29uV3JhcHBlciwgeyBpc0ludmVyc2U6IGlzSW52ZXJzZSwgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWljb25gIH0sIGljb24gfHwgZGVmYXVsdEljb24pKSxcclxuICAgICAgICBsYWJlbCkpLCBbXHJcbiAgICAgICAgdGhlbWUsXHJcbiAgICAgICAgaXNEaXNhYmxlZCxcclxuICAgICAgICBpc0ludmVyc2UsXHJcbiAgICAgICAgbGFiZWxTdHlsZSxcclxuICAgICAgICBpdGVtSWQsXHJcbiAgICAgICAgdGVzdElkLFxyXG4gICAgICAgIGhhc0ljb25zLFxyXG4gICAgICAgIGljb24sXHJcbiAgICAgICAgZGVmYXVsdEljb24sXHJcbiAgICAgICAgbGFiZWwsXHJcbiAgICBdKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBSZWFjdC51c2VNZW1vKCgpID0+IGFkZGl0aW9uYWxDb250ZW50ID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQWRkaXRpb25hbENvbnRlbnRXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaWQ6IGAke2l0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgIH0sIGFkZGl0aW9uYWxDb250ZW50KSkgOiBudWxsLCBbYWRkaXRpb25hbENvbnRlbnQsIHRoZW1lLCBpdGVtSWQsIHRlc3RJZF0pO1xyXG4gICAgLy8gU3RhYmxlIHBlci1jaGlsZCBoaWVyYXJjaHkgdmFsdWVzLiBUaGUgcmVmZXJlbmNlIG11c3Qgbm90IGNoYW5nZSBvblxyXG4gICAgLy8gcmUtcmVuZGVycyB0cmlnZ2VyZWQgYnkgVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0LCBvdGhlcndpc2UgZXZlcnlcclxuICAgIC8vIG5lc3RlZCBUcmVlSXRlbSByZS1yZW5kZXJzIHRocm91Z2ggdGhlIGNvbnRleHQgYW5kIFJlYWN0Lm1lbW8gaXNcclxuICAgIC8vIGRlZmVhdGVkLlxyXG4gICAgY29uc3QgY2hpbGRIaWVyYXJjaGllcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvdW50ID0gUmVhY3QuQ2hpbGRyZW4uY291bnQoY2hpbGRyZW4pO1xyXG4gICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShjb3VudCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGFycltpXSA9IHtcclxuICAgICAgICAgICAgICAgIGRlcHRoOiBpdGVtRGVwdGggKyAxLFxyXG4gICAgICAgICAgICAgICAgcGFyZW50RGVwdGg6IGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgIGlzVG9wTGV2ZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhcnI7XHJcbiAgICB9LCBbY2hpbGRyZW4sIGl0ZW1EZXB0aF0pO1xyXG4gICAgLy8gTWVtb2l6ZSBpbmxpbmUgc3R5bGUgb2JqZWN0cyB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IHJlLXJlbmRlcnNcclxuICAgIGNvbnN0IGNoZWNrYm94SW5wdXRTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHsgbWFyZ2luUmlnaHQ6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzIH0pLCBbdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDNdKTtcclxuICAgIGNvbnN0IGNoZWNrYm94TGFiZWxTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcclxuICAgICAgICBwYWRkaW5nOiAwLFxyXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICB9KSwgW10pO1xyXG4gICAgLy8gUHJvcHMgc2hhcmVkIGJ5IENoZWNrYm94IGFuZCBJbmRldGVybWluYXRlQ2hlY2tib3hcclxuICAgIGNvbnN0IGNoZWNrYm94UHJvcHMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XHJcbiAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaGlkZUZvY3VzOiB0cnVlLFxyXG4gICAgICAgIGlkOiBgJHtpdGVtSWR9LWNoZWNrYm94YCxcclxuICAgICAgICBpbnB1dFN0eWxlOiBjaGVja2JveElucHV0U3R5bGUsXHJcbiAgICAgICAgbGFiZWxTdHlsZTogY2hlY2tib3hMYWJlbFN0eWxlLFxyXG4gICAgICAgIGxhYmVsVGV4dDogbGFiZWxUZXh0LFxyXG4gICAgICAgIG9uQ2hhbmdlOiBjaGVja2JveENoYW5nZUhhbmRsZXIsXHJcbiAgICAgICAgdGFiSW5kZXg6IC0xLFxyXG4gICAgICAgIHRlc3RJZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICB9KSwgW1xyXG4gICAgICAgIGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaXRlbUlkLFxyXG4gICAgICAgIGNoZWNrYm94SW5wdXRTdHlsZSxcclxuICAgICAgICBjaGVja2JveExhYmVsU3R5bGUsXHJcbiAgICAgICAgbGFiZWxUZXh0LFxyXG4gICAgICAgIGNoZWNrYm94Q2hhbmdlSGFuZGxlcixcclxuICAgIF0pO1xyXG4gICAgY29uc3Qgb25FeHBhbmRlZENsaWNrZWQgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGhhbmRsZUV4cGFuZGVkQ2hhbmdlKGV2ZW50LCBpdGVtSWQpO1xyXG4gICAgfSwgW2hhbmRsZUV4cGFuZGVkQ2hhbmdlLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IGhhbmRsZUV4cGFuZENsaWNrID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKCFpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICBvbkV4cGFuZGVkQ2xpY2tlZChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIG9uRXhwYW5kZWRDbGlja2VkXSk7XHJcbiAgICBjb25zdCBoYW5kbGVPbkNsaWNrID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSBldmVudC50YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdCgnYnV0dG9uLCBbcm9sZT1cImJ1dHRvblwiXSwgYVtocmVmXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIFtyb2xlPVwibWVudWl0ZW1cIl0nKTtcclxuICAgICAgICAvLyBQcmV2ZW50aW5nIHNlbGVjdGluZyB0aGUgaXRlbSB3aGVuIGNsaWNraW5nIG9uIGludGVyYWN0aXZlIGVsZW1lbnRzIHdoZW4gYHNlbGVjdGFibGVgIGlzIGBzaW5nbGVgXHJcbiAgICAgICAgaWYgKGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBJZiBzZWxlY3RQYXJlbnRzIGlzIGZhbHNlIGFuZCB0aGlzIGlzIGEgcGFyZW50IGl0ZW0sIGhhbmRsZSBleHBhbmQvY29sbGFwc2UgaW5zdGVhZCBvZiBzZWxlY3Rpb25cclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZSAmJlxyXG4gICAgICAgICAgICAhc2VsZWN0UGFyZW50cyAmJlxyXG4gICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIG9uRXhwYW5kZWRDbGlja2VkKGV2ZW50KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZSkge1xyXG4gICAgICAgICAgICBoYW5kbGVDbGljayhldmVudCwgaXRlbUlkKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgdGFiSW5kZXggPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcclxuICAgICAgICBpZiAoaXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaXRlbVRvRm9jdXMgPT09IGl0ZW1JZCA/IDAgOiAtMTtcclxuICAgIH0sIFtpc0Rpc2FibGVkLCBpdGVtVG9Gb2N1cywgaXRlbUlkXSk7XHJcbiAgICBjb25zdCBzaG91bGRTaG93Q2hlY2tib3ggPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUubXVsdGkgJiZcclxuICAgICAgICAoaXNUb3BMZXZlbFNlbGVjdGFibGUgIT09IGZhbHNlIHx8ICF0b3BMZXZlbCk7XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIHdpdGhpbiB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIFByZXNzaW5nIGBDdHJsICsgRW50ZXJgIG9yIGBDb21tYW5kICsgRW50ZXJgIGZvY3VzZXMgdGhlIGZpcnN0IGludGVyYWN0aXZlIGVsZW1lbnQgd2l0aGluIHRoZSB0cmVlIGl0ZW1cclxuICAgICAqIGFuZCBsb2NrcyBmb2N1cyBpbnNpZGUgdGhlIHRyZWUgaXRlbS5cclxuICAgICAqXHJcbiAgICAgKiBJZiB0aGUgZm9jdXMgaXMgd2l0aGluIHRoZSBsYWJlbCBvciBhZGRpdGlvbmFsIGNvbnRlbnQsIGl0IGhhbmRsZXMga2V5IGV2ZW50cyBmb3IgaW50ZXJhY3Rpb24gZWxlbWVudHMuXHJcbiAgICAgKlxyXG4gICAgICogSXQgYWxzbyBoYW5kbGVzIHRoZSBvdGhlciBrZXlzIHRvIHRyaWdnZXIgdGhlIGNsaWNrIGV2ZW50IG9uIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKiAqKi9cclxuICAgIGNvbnN0IG9uS2V5RG93bkhhbmRsZXIgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBjb25zdCB7IGtleSwgdGFyZ2V0LCBjdXJyZW50VGFyZ2V0IH0gPSBldmVudDtcclxuICAgICAgICBjb25zdCBpc0VudGVyID0ga2V5ID09PSAnRW50ZXInO1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybE9yQ29tbWFuZCA9IGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleTtcclxuICAgICAgICBjb25zdCBpc0N0cmxFbnRlciA9IGlzQ3RybE9yQ29tbWFuZCAmJiBpc0VudGVyO1xyXG4gICAgICAgIC8vIElmIHRoZSBrZXkgaXMgQ3RybCArIEVudGVyIG9yIENvbW1hbmQgKyBFbnRlciwgZm9jdXMgdGhlIGZpcnN0IGludGVyYWN0aXZlIGVsZW1lbnRcclxuICAgICAgICAvLyBhbmQgbG9jayBmb2N1cyBpbnNpZGUgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmIChpc0N0cmxFbnRlciAmJiB0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgc2V0SXNJbnNpZGVUcmVlSXRlbSh0cnVlKTtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50c0xpc3QgPSBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzKGN1cnJlbnRUYXJnZXQsIGludGVyYWN0aXZlRWxlbWVudHMpO1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50VG9Gb2N1cyA9IGludGVyYWN0aXZlRWxlbWVudHNMaXN0WzBdO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudFRvRm9jdXMpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRUb0ZvY3VzLmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICB9LCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEVuc3VyZSB2YWxpZCBDU1Mgc2VsZWN0b3JzIGJ5IGVzY2FwaW5nIHNwZWNpYWwgY2hhcmFjdGVycyAoZS5nLiwgcGVyaW9kcyBpbiBpdGVtSWQpXHJcbiAgICAgICAgY29uc3Qgc2FmZUl0ZW1JZCA9IENTUy5lc2NhcGUoaXRlbUlkKTtcclxuICAgICAgICBjb25zdCBpc1dpdGhpbkxhYmVsT3JBZGRpdGlvbmFsQ29udGVudCA9IHRhcmdldC5jbG9zZXN0KGAjJHtzYWZlSXRlbUlkfS1sYWJlbCwgIyR7c2FmZUl0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCk7XHJcbiAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaGFuZGxlIGtleSBldmVudHMgZm9yIHRob3NlIGFyZWFzXHJcbiAgICAgICAgaWYgKGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50KSB7XHJcbiAgICAgICAgICAgIGhhbmRsZUxhYmVsQW5kQWRkaXRpb25hbENvbnRlbnRLZXlEb3duKGV2ZW50KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHRoZSB0cmVlIGl0ZW0gaXRzZWxmLCBoYW5kbGUga2V5IGRvd24gZm9yIHRoZSB0cmVlIGl0ZW1cclxuICAgICAgICBpZiAodGFyZ2V0ID09PSBjdXJyZW50VGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIGhhbmRsZUtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW1xyXG4gICAgICAgIGdldEludGVyYWN0aXZlRWxlbWVudHMsXHJcbiAgICAgICAgaW50ZXJhY3RpdmVFbGVtZW50cyxcclxuICAgICAgICBpdGVtSWQsXHJcbiAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24sXHJcbiAgICAgICAgaGFuZGxlS2V5RG93bixcclxuICAgIF0pO1xyXG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyZWVJdGVtQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogY29udGV4dFZhbHVlIH0sXHJcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IHN0eWxlOiB0cmVlSXRlbVN0eWxlcyB9LFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZFRyZWVJdGVtLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IFwiYXJpYS1leHBhbmRlZFwiOiBoYXNPd25UcmVlSXRlbXMgPyBleHBhbmRlZCA6IG51bGwsIFwiYXJpYS1zZWxlY3RlZFwiOiBzZWxlY3RlZEl0ZW0sIFwiYXJpYS1jaGVja2VkXCI6IHNob3VsZFNob3dDaGVja2JveCA/IGFyaWFDaGVja2VkVmFsdWUgOiBudWxsLCBcImRhdGEtdGVzdGlkXCI6IHRlc3RJZCwgZGVwdGg6IGl0ZW1EZXB0aCwgaGFzT3duVHJlZUl0ZW1zOiBoYXNPd25UcmVlSXRlbXMsIGlkOiBpdGVtSWQsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBpc1ZpcnR1YWxpemVkOiBoaWVyYXJjaHlDb250ZXh0LmlzVmlydHVhbGl6ZWQsIG5vZGVUeXBlOiBub2RlVHlwZSwgcm9sZTogXCJ0cmVlaXRlbVwiLCBzZWxlY3RhYmxlVHlwZTogc2VsZWN0YWJsZSwgc2VsZWN0ZWQ6IHNlbGVjdGVkSXRlbSwgdGhlbWU6IHRoZW1lLCB0YWJJbmRleDogdGFiSW5kZXgsIG9uS2V5RG93bjogb25LZXlEb3duSGFuZGxlciwgcmVmOiB0cmVlSXRlbVJlZiwgaG92ZXJDb2xvcjogaG92ZXJDb2xvciB9KSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkSXRlbVdyYXBwZXIsIHsgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1pdGVtd3JhcHBlcmAsIGRlcHRoOiBpdGVtRGVwdGgsIGhhc0FkZGl0aW9uYWxDb250ZW50OiAhIWFkZGl0aW9uYWxDb250ZW50LCBoYXNDdXN0b21JY29uU2l6ZTogISFleHBhbmRJY29uU3R5bGVzPy5zaXplLCBpZDogYCR7aXRlbUlkfS1pdGVtd3JhcHBlcmAsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBub2RlVHlwZTogbm9kZVR5cGUsIHNlbGVjdGFibGU6IHNlbGVjdGFibGUsIHN0eWxlOiBzdHlsZSwgdGhlbWU6IHRoZW1lLCByZWY6IG1lcmdlUmVmcyhyZWYsIGZvY3VzVHJhcEVsZW1lbnQpLCBvbkNsaWNrOiBoYW5kbGVPbkNsaWNrIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgaGFzT3duVHJlZUl0ZW1zICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZEV4cGFuZFdyYXBwZXIsIHsgc2l6ZTogZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSwgY29sb3I6IGV4cGFuZEljb25TdHlsZXM/LmNvbG9yLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWV4cGFuZGAsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBvbkNsaWNrOiBoYW5kbGVFeHBhbmRDbGljaywgdGhlbWU6IHRoZW1lIH0sIGV4cGFuZGVkID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRXhwYW5kTW9yZUljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZXZyb25SaWdodEljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSkpLFxyXG4gICAgICAgICAgICAgICAgICAgIHNob3VsZFNob3dDaGVja2JveCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZENoZWNrYm94V3JhcHBlciwgeyBoYXNBZGRpdGlvbmFsQ29udGVudDogISFhZGRpdGlvbmFsQ29udGVudCwgdGhlbWU6IHRoZW1lIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc093blRyZWVJdGVtcyA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEluZGV0ZXJtaW5hdGVDaGVja2JveCwgT2JqZWN0LmFzc2lnbih7fSwgY2hlY2tib3hQcm9wcywgeyBzdGF0dXM6IGNoZWNrZWRTdGF0dXMgfSkpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZWNrYm94LCBPYmplY3QuYXNzaWduKHt9LCBjaGVja2JveFByb3BzLCB7IGNoZWNrZWQ6IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4oY2hlY2tlZFN0YXR1cykgfSkpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsVGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpKSxcclxuICAgICAgICAgICAgICAgIGhhc0d1aWRlTGluZXMgJiZcclxuICAgICAgICAgICAgICAgICAgICAoaGllcmFyY2h5Q29udGV4dC5pc1ZpcnR1YWxpemVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbURlcHRoID4gMCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkuZnJvbSh7IGxlbmd0aDogaXRlbURlcHRoIH0sIChfLCBkKSA9PiAoUmVhY3QuY3JlYXRlRWxlbWVudChWaXJ0dWFsaXplZEd1aWRlTGluZSwgeyBrZXk6IGBndWlkZWxpbmUtJHtkfWAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tdmlydHVhbGl6ZWQtZ3VpZGVsaW5lLSR7ZH1gLCB0aGVtZTogdGhlbWUsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBzdHlsZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNldElubGluZVN0YXJ0OiBgY2FsYygke2NhbGN1bGF0ZU9mZnNldChUcmVlTm9kZVR5cGUuYnJhbmNoLCBkLCBmYWxzZSwgZmFsc2UsIHRydWUpfSArICR7ZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7ZXhwYW5kSWNvblN0eWxlcy5zaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fSAvIDIgLSAwLjVweClgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfSkpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGhhc093blRyZWVJdGVtcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWQgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoR3VpZGVMaW5lLCB7IFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tZ3VpZGVsaW5lYCwgdGhlbWU6IHRoZW1lLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgZ3VpZGVMaW5lTGVmdDogYGNhbGMoJHtjYWxjdWxhdGVPZmZzZXQoVHJlZU5vZGVUeXBlLmJyYW5jaCwgaXRlbURlcHRoLCBmYWxzZSwgZmFsc2UsIGZhbHNlKX0gKyAke2V4cGFuZEljb25TdHlsZXM/LnNpemUgIT09IHVuZGVmaW5lZCA/IGAke2V4cGFuZEljb25TdHlsZXMuc2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn0gLyAyIC0gMC41cHgpIGAgfSkpKSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LkNoaWxkcmVuLm1hcChjaGlsZHJlbiwgKGNoaWxkLCBjaGlsZEluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkPy50eXBlICE9PSBUcmVlSXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFVzZSB0aGUgc3RhYmxlLCBwcmUtbWVtb2lzZWQgdmFsdWUgKHNlZSBjaGlsZEhpZXJhcmNoaWVzIGFib3ZlKS5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXN0ZWRIaWVyYXJjaHlWYWx1ZSA9IGNoaWxkSGllcmFyY2hpZXNbY2hpbGRJbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyYW5zaXRpb24sIHsgaXNPcGVuOiBleHBhbmRlZCwgdW5tb3VudE9uRXhpdDogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwidWxcIiwgeyByb2xlOiBcImdyb3VwXCIgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0LlByb3ZpZGVyLCB7IGtleTogY2hpbGQucHJvcHMuaXRlbUlkLCB2YWx1ZTogbmVzdGVkSGllcmFyY2h5VmFsdWUgfSwgY2hpbGQpKSkpO1xyXG4gICAgICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICBpc01hY09TICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFZpc3VhbGx5SGlkZGVuLCBudWxsLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChBbm5vdW5jZSwgbnVsbCwgZXhwYW5kZWRcclxuICAgICAgICAgICAgICAgICAgICA/IGkxOG4uZXhwYW5zaW9uU3RhdGUuZXhwYW5kZWRcclxuICAgICAgICAgICAgICAgICAgICA6IGkxOG4uZXhwYW5zaW9uU3RhdGUuY29sbGFwc2VkKSkpKSkpO1xyXG59KTtcclxuLyoqXHJcbiAqIEN1c3RvbSBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciBSZWFjdC5tZW1vXHJcbiAqIE9ubHkgcmUtcmVuZGVyIFRyZWVJdGVtIHdoZW4gcmVsZXZhbnQgcHJvcHMgY2hhbmdlXHJcbiAqL1xyXG5mdW5jdGlvbiBhcmVQcm9wc0VxdWFsKHByZXZQcm9wcywgbmV4dFByb3BzKSB7XHJcbiAgICAvLyBDaGVjayBpZiBpdGVtSWQgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5pdGVtSWQgIT09IG5leHRQcm9wcy5pdGVtSWQpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBsYWJlbCBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmxhYmVsICE9PSBuZXh0UHJvcHMubGFiZWwpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBkaXNhYmxlZCBzdGF0ZSBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmlzRGlzYWJsZWQgIT09IG5leHRQcm9wcy5pc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgaWNvbiBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmljb24gIT09IG5leHRQcm9wcy5pY29uKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgYWRkaXRpb25hbCBjb250ZW50IGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuYWRkaXRpb25hbENvbnRlbnQgIT09IG5leHRQcm9wcy5hZGRpdGlvbmFsQ29udGVudCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGhvdmVyIGNvbG9yIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaG92ZXJDb2xvciAhPT0gbmV4dFByb3BzLmhvdmVyQ29sb3IpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBjaGlsZHJlbiBjaGFuZ2VkIChmb3IgbmVzdGVkIHRyZWUgaXRlbXMpXHJcbiAgICAvLyBVc2luZyB0eXBlIGFzc2VydGlvbiBzaW5jZSBjaGlsZHJlbiBjb21lcyBmcm9tIFJlYWN0LkhUTUxBdHRyaWJ1dGVzXHJcbiAgICBpZiAocHJldlByb3BzLmNoaWxkcmVuICE9PSBuZXh0UHJvcHMuY2hpbGRyZW4pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBzdHlsZXMgY2hhbmdlZFxyXG4gICAgLy8gVXNpbmcgdHlwZSBhc3NlcnRpb24gc2luY2Ugc3R5bGUgY29tZXMgZnJvbSBSZWFjdC5IVE1MQXR0cmlidXRlc1xyXG4gICAgaWYgKHByZXZQcm9wcy5zdHlsZSAhPT0gbmV4dFByb3BzLnN0eWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZQcm9wcy5sYWJlbFN0eWxlICE9PSBuZXh0UHJvcHMubGFiZWxTdHlsZSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChwcmV2UHJvcHMudHJlZUl0ZW1TdHlsZXMgIT09IG5leHRQcm9wcy50cmVlSXRlbVN0eWxlcykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIEFsbCByZWxldmFudCBwcm9wcyBhcmUgZXF1YWwsIHNraXAgcmUtcmVuZGVyXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxyXG4vKipcclxuICogTWVtb2l6ZWQgVHJlZUl0ZW0gY29tcG9uZW50XHJcbiAqIE9ubHkgcmUtcmVuZGVycyB3aGVuIHJlbGV2YW50IHByb3BzIGNoYW5nZSwgaW1wcm92aW5nIHBlcmZvcm1hbmNlIGZvciBsYXJnZSB0cmVlc1xyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFRyZWVJdGVtID0gUmVhY3QubWVtbyhUcmVlSXRlbUNvbXBvbmVudCwgYXJlUHJvcHNFcXVhbCk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRyZWVJdGVtLmpzLm1hcCJdfQ== */"));
|
|
29406
|
+
}, ";width:100%;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4R3VDIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dCB9IGZyb20gJy4vVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdDb25maWdDb250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld0NvbmZpZ0NvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0V4cGFuc2lvbkNvbnRleHQgfSBmcm9tICcuL1RyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyBjYWxjdWxhdGVPZmZzZXQsIGdldFRyZWVJdGVtTGFiZWxDb2xvciwgZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yLCBUcmVlTm9kZVR5cGUsIH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IEkxOG5Db250ZXh0IH0gZnJvbSAnLi4vLi4nO1xyXG5pbXBvcnQgdXNlRGV2aWNlRGV0ZWN0IGZyb20gJy4uLy4uL2hvb2tzL3VzZURldmljZURldGVjdCc7XHJcbmltcG9ydCB7IHVzZUZvY3VzTG9jayB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZUZvY3VzTG9jayc7XHJcbmltcG9ydCB7IHVzZUlzSW52ZXJzZSB9IGZyb20gJy4uLy4uL2ludmVyc2UnO1xyXG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgfSBmcm9tICcuLi8uLi90aGVtZS9UaGVtZUNvbnRleHQnO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmltcG9ydCB7IEFubm91bmNlIH0gZnJvbSAnLi4vQW5ub3VuY2UnO1xyXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gJy4uL0NoZWNrYm94JztcclxuaW1wb3J0IHsgSW5kZXRlcm1pbmF0ZUNoZWNrYm94LCBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMsIH0gZnJvbSAnLi4vSW5kZXRlcm1pbmF0ZUNoZWNrYm94JztcclxuaW1wb3J0IHsgVHJhbnNpdGlvbiB9IGZyb20gJy4uL1RyYW5zaXRpb24nO1xyXG5pbXBvcnQgeyBWaXN1YWxseUhpZGRlbiB9IGZyb20gJy4uL1Zpc3VhbGx5SGlkZGVuJztcclxuY29uc3QgU3R5bGVkVHJlZUl0ZW0gPSBzdHlsZWQubGkgYFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDBcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWw3MDB9O1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIGN1cnNvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbVdyYXBwZXJDdXJzb3IocHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMuc2VsZWN0YWJsZVR5cGUsIHByb3BzLm5vZGVUeXBlKX07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcblxuICBwYWRkaW5nLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCBmYWxzZSwgZmFsc2UsIHByb3BzLmlzVmlydHVhbGl6ZWQpfTtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuXG4gICAgJiA+ICo6Zmlyc3QtY2hpbGQge1xuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkXG4gICAgICAgICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLmZvY3VzSW52ZXJzZVxyXG4gICAgOiBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXN9O1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIGZhbHNlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgbWFyZ2luLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCB0cnVlLCB0cnVlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgcGFkZGluZy1ibG9jay1lbmQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctYmxvY2stc3RhcnQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJlxyXG4gICAgY3NzIGBcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzLmlzSW52ZXJzZVxyXG4gICAgICAgID8gcHJvcHMudGhlbWUuY29sb3JzLnRlcnRpYXJ5NTAwXHJcbiAgICAgICAgOiBwcm9wcy50aGVtZS5jb2xvcnMucHJpbWFyeTUwMH07XG4gICAgICAgICAgYmxvY2stc2l6ZTogMTAwJTtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICBpbmxpbmUtc2l6ZTogJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ6IDA7XG4gICAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAwO1xuICAgICAgICB9XG4gICAgICBgfVxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBnZXRIb3ZlckJhY2tncm91bmQoe1xyXG4gICAgaXNEaXNhYmxlZDogcHJvcHMuaXNEaXNhYmxlZCxcclxuICAgIGhvdmVyQ29sb3I6IHByb3BzLmhvdmVyQ29sb3IsXHJcbiAgICBpc0ludmVyc2U6IHByb3BzLmlzSW52ZXJzZSxcclxuICAgIHRoZW1lOiBwcm9wcy50aGVtZSxcclxufSl9O1xuICAgIH1cbiAgfVxuYDtcclxuZnVuY3Rpb24gZ2V0SG92ZXJCYWNrZ3JvdW5kKHsgaXNEaXNhYmxlZCwgaG92ZXJDb2xvciwgaXNJbnZlcnNlLCB0aGVtZSB9KSB7XHJcbiAgICBpZiAoaXNEaXNhYmxlZClcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgaWYgKGhvdmVyQ29sb3IpXHJcbiAgICAgICAgcmV0dXJuIGhvdmVyQ29sb3I7XHJcbiAgICBjb25zdCB0cmFuc3BhcmVuY3kgPSBpc0ludmVyc2UgPyAwLjggOiAwLjk1O1xyXG4gICAgcmV0dXJuIHRyYW5zcGFyZW50aXplKHRyYW5zcGFyZW5jeSwgdGhlbWUuY29sb3JzLm5ldXRyYWw5MDApO1xyXG59XHJcbmNvbnN0IEljb25XcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBtYXJnaW4tbGVmdDogMDtcblxuICBzdmcge1xuICAgIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pY29uU2l6ZXMubWVkaXVtfXB4O1xuICAgIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgfVxuYDtcclxuY29uc3QgU3R5bGVkTGFiZWxXcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgd2lkdGg6IDEwMCU7XG5gO1xyXG5jb25zdCBTdHlsZWRFeHBhbmRXcmFwcGVyID0gc3R5bGVkLmRpdiBgXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgbWFyZ2luLXJpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuY29sb3IgfHxcclxuICAgIGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIHdpZHRoOiAkeyh7IHNpemUsIHRoZW1lIH0pID0+IHNpemUgIT09IHVuZGVmaW5lZCA/IGAke3NpemV9cHhgIDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDZ9O1xuICBoZWlnaHQ6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG5gO1xyXG5jb25zdCBHdWlkZUxpbmUgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDh9O1xuICBib3R0b206IDA7XG4gIGluc2V0LWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy5ndWlkZUxpbmVMZWZ0fTtcbiAgd2lkdGg6IDA7XG4gIGJvcmRlci1pbmxpbmUtc3RhcnQ6IDFweCBzb2xpZFxuICAgICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHRyYW5zcGFyZW50aXplKDAuNywgcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDApXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMzAwfTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHotaW5kZXg6IDE7XG5gO1xyXG5jb25zdCBWaXJ0dWFsaXplZEd1aWRlTGluZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogMDtcbiAgYm9yZGVyLWlubGluZS1zdGFydDogMXB4IHNvbGlkXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDEwMClcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwzMDB9O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW1Db21wb25lbnQgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XHJcbiAgICBjb25zdCB7IGFkZGl0aW9uYWxDb250ZW50LCBjaGlsZHJlbiwgaG92ZXJDb2xvciwgaWNvbiwgaW5kZXg6IGluZGV4UHJvcCwgbGFiZWwsIGxhYmVsU3R5bGUsIHN0eWxlLCB0ZXN0SWQsIHRvcExldmVsOiB0b3BMZXZlbFByb3AsIHRyZWVJdGVtU3R5bGVzLCAuLi5yZXN0IH0gPSBwcm9wcztcclxuICAgIGNvbnN0IHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xyXG4gICAgY29uc3QgaXNJbnZlcnNlID0gdXNlSXNJbnZlcnNlKCk7XHJcbiAgICAvLyBSZWFkIGhpZXJhcmNoeSBpbmZvcm1hdGlvbiBmcm9tIGNvbnRleHQgKHJlZHVjZXMgY2xvbmVFbGVtZW50IG92ZXJoZWFkKVxyXG4gICAgY29uc3QgaGllcmFyY2h5Q29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0KTtcclxuICAgIC8vIFVzZSBjb250ZXh0IHZhbHVlcyBpZiBwcm9wcyBhcmUgbm90IHByb3ZpZGVkIChmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSlcclxuICAgIGNvbnN0IGluZGV4ID0gaW5kZXhQcm9wICE9PSB1bmRlZmluZWQgPyBpbmRleFByb3AgOiBoaWVyYXJjaHlDb250ZXh0LmluZGV4O1xyXG4gICAgY29uc3QgdG9wTGV2ZWwgPSB0b3BMZXZlbFByb3AgIT09IHVuZGVmaW5lZCA/IHRvcExldmVsUHJvcCA6IGhpZXJhcmNoeUNvbnRleHQuaXNUb3BMZXZlbDtcclxuICAgIC8vIENvbnN1bWUgc3BsaXQgY29udGV4dHMgZm9yIHJlZHVjZWQgcmUtcmVuZGVyIHNjb3BlXHJcbiAgICBjb25zdCB7IGl0ZW1Ub0ZvY3VzIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGhhbmRsZUV4cGFuZGVkQ2hhbmdlIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGV4cGFuZEljb25TdHlsZXMsIGhhc0d1aWRlTGluZXMsIGhhc0ljb25zLCBpc1RvcExldmVsU2VsZWN0YWJsZSwgc2VsZWN0YWJsZSwgc2VsZWN0UGFyZW50cyA9IHRydWUsIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29uZmlnQ29udGV4dCk7XHJcbiAgICAvLyBQYXNzIHRoZSByZXNvbHZlZCB2YWx1ZXMgdG8gdXNlVHJlZUl0ZW1cclxuICAgIGNvbnN0IHByb3BzV2l0aEhpZXJhcmNoeSA9IHtcclxuICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICBpbmRleCxcclxuICAgICAgICB0b3BMZXZlbCxcclxuICAgICAgICBpdGVtRGVwdGg6IGhpZXJhcmNoeUNvbnRleHQuZGVwdGgsXHJcbiAgICAgICAgcGFyZW50RGVwdGg6IGhpZXJhcmNoeUNvbnRleHQucGFyZW50RGVwdGgsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyBjb250ZXh0VmFsdWUsIGhhbmRsZUNsaWNrLCBoYW5kbGVLZXlEb3duIH0gPSB1c2VUcmVlSXRlbShwcm9wc1dpdGhIaWVyYXJjaHksIGZvcndhcmRlZFJlZik7XHJcbiAgICBjb25zdCB7IGlzRGlzYWJsZWQgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IHsgaXNNYWNPUyB9ID0gdXNlRGV2aWNlRGV0ZWN0KCk7XHJcbiAgICBjb25zdCBpMThuID0gUmVhY3QudXNlQ29udGV4dChJMThuQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGNoZWNrYm94Q2hhbmdlSGFuZGxlciwgY2hlY2tlZFN0YXR1cywgZXhwYW5kZWQsIGhhc093blRyZWVJdGVtcywgaXRlbURlcHRoLCBpdGVtSWQsIHJlZiwgc2VsZWN0ZWRJdGVtcywgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IG5vZGVUeXBlID0gaGFzT3duVHJlZUl0ZW1zID8gVHJlZU5vZGVUeXBlLmJyYW5jaCA6IFRyZWVOb2RlVHlwZS5sZWFmO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZVxyXG4gICAgICAgID8gc2VsZWN0ZWRJdGVtcz8uWzBdPy5pdGVtSWQgPT09IGl0ZW1JZFxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IGFyaWFDaGVja2VkVmFsdWUgPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUubXVsdGlcclxuICAgICAgICA/IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5pbmRldGVybWluYXRlXHJcbiAgICAgICAgICAgID8gJ21peGVkJ1xyXG4gICAgICAgICAgICA6IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5jaGVja2VkXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgW2lzSW5zaWRlVHJlZUl0ZW0sIHNldElzSW5zaWRlVHJlZUl0ZW1dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgdHJlZUl0ZW1SZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XHJcbiAgICBjb25zdCBmb2N1c1RyYXBFbGVtZW50ID0gdXNlRm9jdXNMb2NrKGlzSW5zaWRlVHJlZUl0ZW0pO1xyXG4gICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50cyA9ICdidXR0b24sIFtyb2xlPVwiYnV0dG9uXCJdLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgYVtocmVmXSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJztcclxuICAgIGNvbnN0IGdldEludGVyYWN0aXZlRWxlbWVudHMgPSBSZWFjdC51c2VDYWxsYmFjaygoY29udGFpbmVyLCBzZWxlY3RvcikgPT4ge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSkuZmlsdGVyKGVsID0+ICFlbC5oYXNBdHRyaWJ1dGUoJ3RhYmluZGV4JykgfHxcclxuICAgICAgICAgICAgKGVsLnRhYkluZGV4ICE9PSB1bmRlZmluZWQgJiYgZWwudGFiSW5kZXggPj0gMCkpO1xyXG4gICAgfSwgW10pO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGFsbG93cyBmb3Iga2V5Ym9hcmQgbmF2aWdhdGlvbiB3aXRoaW4gdGhlIGxhYmVsIGFuZCBhZGRpdGlvbmFsIGNvbnRlbnQgb2YgYSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogWW91IGNhbiBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIHVzaW5nIHRoZSBgVGFiYCBrZXksIGFjdGl2YXRlIHRoZW0gd2l0aCBgRW50ZXJgIG9yIGBTcGFjZWAsXHJcbiAgICAgKiBhbmQgZXhpdCBvdXRzaWRlIGFuZCBmb2N1cyB0aGUgd2hvbGUgdHJlZSBpdGVtIHdpdGggYEVzY2FwZWAuXHJcbiAgICAgKiAqKi9cclxuICAgIGNvbnN0IGhhbmRsZUxhYmVsQW5kQWRkaXRpb25hbENvbnRlbnRLZXlEb3duID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBrZXksIHRhcmdldCwgY3VycmVudFRhcmdldCwgc2hpZnRLZXkgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gdGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNTcGFjZSA9IGtleSA9PT0gJyAnO1xyXG4gICAgICAgIGNvbnN0IGlzRXNjYXBlID0ga2V5ID09PSAnRXNjYXBlJztcclxuICAgICAgICBjb25zdCBpc1RhYiA9IGtleSA9PT0gJ1RhYic7XHJcbiAgICAgICAgY29uc3QgaXNBY3RpdmF0aW9uS2V5ID0gaXNFbnRlciB8fCBpc1NwYWNlO1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBgVGFiYCwgd2UgbmF2aWdhdGUgdGhyb3VnaCBpbnRlcmFjdGl2ZSBlbGVtZW50cyBpbnNpZGUgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmIChpc1RhYiAmJiBpc0luc2lkZVRyZWVJdGVtKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudHNMaXN0ID0gZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyhjdXJyZW50VGFyZ2V0LCBpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAgICAgLy8gRmlsdGVyIGxpc3Qgb2YgaW50ZXJhY3RpdmUgZWxlbWVudHMgd2hpY2ggYXJlIG9ubHkgaW5jbHVkZWQgZm9yIGN1cnJlbnQgdHJlZSBpdGVtXHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMgPSBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdC5maWx0ZXIoZWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2xvc2VzdFRyZWVJdGVtID0gZWwuY2xvc2VzdCgnW3JvbGU9XCJ0cmVlaXRlbVwiXScpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsb3Nlc3RUcmVlSXRlbSA9PT0gdHJlZUl0ZW1SZWYuY3VycmVudDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMuaW5kZXhPZihjdXJyZW50RWxlbWVudCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHNoaWZ0S2V5ID8gLTEgOiAxO1xyXG4gICAgICAgICAgICBjb25zdCB0b3RhbCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMubGVuZ3RoO1xyXG4gICAgICAgICAgICBjb25zdCBuZXh0SW5kZXggPSAoY3VycmVudEluZGV4ICsgZGlyZWN0aW9uICsgdG90YWwpICUgdG90YWw7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50c1tuZXh0SW5kZXhdO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudFRvRm9jdXMpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZWxlbWVudFRvRm9jdXMuZm9jdXMoKSwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBQcmVzc2luZyBgRW50ZXJgIG9yIGBTcGFjZWAgb24gYW4gaW50ZXJhY3RpdmUgZWxlbWVudCB3aWxsIHRyaWdnZXIgaXRzIGNsaWNrIGV2ZW50XHJcbiAgICAgICAgaWYgKGlzQWN0aXZhdGlvbktleSAmJiBpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgaW50ZXJhY3RpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE1vdmVzIGZvY3VzIG91dHNpZGUgdGhlIHRyZWUgaXRlbSBhbmQgZm9jdXNlcyB0aGUgdHJlZSBpdGVtIGl0c2VsZiB3aGVuIGBFc2NhcGVgIGlzIHByZXNzZWRcclxuICAgICAgICBpZiAoaXNFc2NhcGUpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHNldElzSW5zaWRlVHJlZUl0ZW0oZmFsc2UpO1xyXG4gICAgICAgICAgICBjb25zdCB0cmVlSXRlbU5vZGUgPSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICBpZiAodHJlZUl0ZW1Ob2RlKSB7XHJcbiAgICAgICAgICAgICAgICB0cmVlSXRlbU5vZGUuZm9jdXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzSW5zaWRlVHJlZUl0ZW1dKTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gUmVhY3QudXNlTWVtbygoKSA9PiBub2RlVHlwZSA9PT0gVHJlZU5vZGVUeXBlLmJyYW5jaCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEZvbGRlckljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KEFydGljbGVJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSksIFtub2RlVHlwZV0pO1xyXG4gICAgLy8gTWVtb2lzZSB0aGUgbGFiZWwgSlNYIHNvIHRoZSBgY2hlY2tib3hQcm9wc2AgbWVtbyBiZWxvdyBhY3R1YWxseSBoYXNcclxuICAgIC8vIGEgc3RhYmxlIGBsYWJlbFRleHRgIHJlZmVyZW5jZSBiZXR3ZWVuIHJlbmRlcnMuIFByZXZpb3VzbHkgdGhpc1xyXG4gICAgLy8gZWxlbWVudCB3YXMgcmUtY3JlYXRlZCBvbiBldmVyeSByZW5kZXIsIHdoaWNoIGZvcmNlZFxyXG4gICAgLy8gYGNoZWNrYm94UHJvcHNgIHRvIGFsc28gYmUgcmUtY3JlYXRlZCBhbmQgYW55IGZ1dHVyZSBSZWFjdC5tZW1vIG9uXHJcbiAgICAvLyBDaGVja2JveC9JbmRldGVybWluYXRlQ2hlY2tib3ggd291bGQgYWx3YXlzIGJhaWwgb3V0LlxyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gUmVhY3QudXNlTWVtbygoKSA9PiAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRMYWJlbFdyYXBwZXIsIHsgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgc3R5bGU6IGxhYmVsU3R5bGUsIGlkOiBgJHtpdGVtSWR9LWxhYmVsYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1sYWJlbGAgfSxcclxuICAgICAgICBoYXNJY29ucyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChJY29uV3JhcHBlciwgeyBpc0ludmVyc2U6IGlzSW52ZXJzZSwgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWljb25gIH0sIGljb24gfHwgZGVmYXVsdEljb24pKSxcclxuICAgICAgICBsYWJlbCkpLCBbXHJcbiAgICAgICAgdGhlbWUsXHJcbiAgICAgICAgaXNEaXNhYmxlZCxcclxuICAgICAgICBpc0ludmVyc2UsXHJcbiAgICAgICAgbGFiZWxTdHlsZSxcclxuICAgICAgICBpdGVtSWQsXHJcbiAgICAgICAgdGVzdElkLFxyXG4gICAgICAgIGhhc0ljb25zLFxyXG4gICAgICAgIGljb24sXHJcbiAgICAgICAgZGVmYXVsdEljb24sXHJcbiAgICAgICAgbGFiZWwsXHJcbiAgICBdKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBSZWFjdC51c2VNZW1vKCgpID0+IGFkZGl0aW9uYWxDb250ZW50ID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQWRkaXRpb25hbENvbnRlbnRXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaWQ6IGAke2l0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgIH0sIGFkZGl0aW9uYWxDb250ZW50KSkgOiBudWxsLCBbYWRkaXRpb25hbENvbnRlbnQsIHRoZW1lLCBpdGVtSWQsIHRlc3RJZF0pO1xyXG4gICAgLy8gU3RhYmxlIHBlci1jaGlsZCBoaWVyYXJjaHkgdmFsdWVzLiBUaGUgcmVmZXJlbmNlIG11c3Qgbm90IGNoYW5nZSBvblxyXG4gICAgLy8gcmUtcmVuZGVycyB0cmlnZ2VyZWQgYnkgVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0LCBvdGhlcndpc2UgZXZlcnlcclxuICAgIC8vIG5lc3RlZCBUcmVlSXRlbSByZS1yZW5kZXJzIHRocm91Z2ggdGhlIGNvbnRleHQgYW5kIFJlYWN0Lm1lbW8gaXNcclxuICAgIC8vIGRlZmVhdGVkLlxyXG4gICAgY29uc3QgY2hpbGRIaWVyYXJjaGllcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvdW50ID0gUmVhY3QuQ2hpbGRyZW4uY291bnQoY2hpbGRyZW4pO1xyXG4gICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShjb3VudCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGFycltpXSA9IHtcclxuICAgICAgICAgICAgICAgIGRlcHRoOiBpdGVtRGVwdGggKyAxLFxyXG4gICAgICAgICAgICAgICAgcGFyZW50RGVwdGg6IGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgIGlzVG9wTGV2ZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhcnI7XHJcbiAgICB9LCBbY2hpbGRyZW4sIGl0ZW1EZXB0aF0pO1xyXG4gICAgLy8gTWVtb2l6ZSBpbmxpbmUgc3R5bGUgb2JqZWN0cyB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IHJlLXJlbmRlcnNcclxuICAgIGNvbnN0IGNoZWNrYm94SW5wdXRTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHsgbWFyZ2luUmlnaHQ6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzIH0pLCBbdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDNdKTtcclxuICAgIGNvbnN0IGNoZWNrYm94TGFiZWxTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcclxuICAgICAgICBwYWRkaW5nOiAwLFxyXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICB9KSwgW10pO1xyXG4gICAgLy8gUHJvcHMgc2hhcmVkIGJ5IENoZWNrYm94IGFuZCBJbmRldGVybWluYXRlQ2hlY2tib3hcclxuICAgIGNvbnN0IGNoZWNrYm94UHJvcHMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XHJcbiAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaGlkZUZvY3VzOiB0cnVlLFxyXG4gICAgICAgIGlkOiBgJHtpdGVtSWR9LWNoZWNrYm94YCxcclxuICAgICAgICBpbnB1dFN0eWxlOiBjaGVja2JveElucHV0U3R5bGUsXHJcbiAgICAgICAgbGFiZWxTdHlsZTogY2hlY2tib3hMYWJlbFN0eWxlLFxyXG4gICAgICAgIGxhYmVsVGV4dDogbGFiZWxUZXh0LFxyXG4gICAgICAgIG9uQ2hhbmdlOiBjaGVja2JveENoYW5nZUhhbmRsZXIsXHJcbiAgICAgICAgdGFiSW5kZXg6IC0xLFxyXG4gICAgICAgIHRlc3RJZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICB9KSwgW1xyXG4gICAgICAgIGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaXRlbUlkLFxyXG4gICAgICAgIGNoZWNrYm94SW5wdXRTdHlsZSxcclxuICAgICAgICBjaGVja2JveExhYmVsU3R5bGUsXHJcbiAgICAgICAgbGFiZWxUZXh0LFxyXG4gICAgICAgIGNoZWNrYm94Q2hhbmdlSGFuZGxlcixcclxuICAgIF0pO1xyXG4gICAgY29uc3Qgb25FeHBhbmRlZENsaWNrZWQgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGhhbmRsZUV4cGFuZGVkQ2hhbmdlKGV2ZW50LCBpdGVtSWQpO1xyXG4gICAgfSwgW2hhbmRsZUV4cGFuZGVkQ2hhbmdlLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IGhhbmRsZUV4cGFuZENsaWNrID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKCFpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICBvbkV4cGFuZGVkQ2xpY2tlZChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIG9uRXhwYW5kZWRDbGlja2VkXSk7XHJcbiAgICBjb25zdCBoYW5kbGVPbkNsaWNrID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSBldmVudC50YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdCgnYnV0dG9uLCBbcm9sZT1cImJ1dHRvblwiXSwgYVtocmVmXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIFtyb2xlPVwibWVudWl0ZW1cIl0nKTtcclxuICAgICAgICAvLyBQcmV2ZW50aW5nIHNlbGVjdGluZyB0aGUgaXRlbSB3aGVuIGNsaWNraW5nIG9uIGludGVyYWN0aXZlIGVsZW1lbnRzIHdoZW4gYHNlbGVjdGFibGVgIGlzIGBzaW5nbGVgXHJcbiAgICAgICAgaWYgKGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBJZiBzZWxlY3RQYXJlbnRzIGlzIGZhbHNlIGFuZCB0aGlzIGlzIGEgcGFyZW50IGl0ZW0sIGhhbmRsZSBleHBhbmQvY29sbGFwc2UgaW5zdGVhZCBvZiBzZWxlY3Rpb25cclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZSAmJlxyXG4gICAgICAgICAgICAhc2VsZWN0UGFyZW50cyAmJlxyXG4gICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMpIHtcclxuICAgICAgICAgICAgb25FeHBhbmRlZENsaWNrZWQoZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEluIHNlbGVjdGFibGU9b2ZmIG1vZGUsIGNsaWNraW5nIGFueXdoZXJlIG9uIGEgcGFyZW50IGl0ZW0gdG9nZ2xlcyBleHBhbmQvY29sbGFwc2VcclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLm9mZiAmJiBoYXNPd25UcmVlSXRlbXMpIHtcclxuICAgICAgICAgICAgb25FeHBhbmRlZENsaWNrZWQoZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUuc2luZ2xlKSB7XHJcbiAgICAgICAgICAgIGhhbmRsZUNsaWNrKGV2ZW50LCBpdGVtSWQpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCB0YWJJbmRleCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpdGVtVG9Gb2N1cyA9PT0gaXRlbUlkID8gMCA6IC0xO1xyXG4gICAgfSwgW2lzRGlzYWJsZWQsIGl0ZW1Ub0ZvY3VzLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IHNob3VsZFNob3dDaGVja2JveCA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aSAmJlxyXG4gICAgICAgIChpc1RvcExldmVsU2VsZWN0YWJsZSAhPT0gZmFsc2UgfHwgIXRvcExldmVsKTtcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gd2l0aGluIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogUHJlc3NpbmcgYEN0cmwgKyBFbnRlcmAgb3IgYENvbW1hbmQgKyBFbnRlcmAgZm9jdXNlcyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudCB3aXRoaW4gdGhlIHRyZWUgaXRlbVxyXG4gICAgICogYW5kIGxvY2tzIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIElmIHRoZSBmb2N1cyBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaXQgaGFuZGxlcyBrZXkgZXZlbnRzIGZvciBpbnRlcmFjdGlvbiBlbGVtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBJdCBhbHNvIGhhbmRsZXMgdGhlIG90aGVyIGtleXMgdG8gdHJpZ2dlciB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIHRyZWUgaXRlbS5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3Qgb25LZXlEb3duSGFuZGxlciA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsga2V5LCB0YXJnZXQsIGN1cnJlbnRUYXJnZXQgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNDdHJsT3JDb21tYW5kID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5O1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybEVudGVyID0gaXNDdHJsT3JDb21tYW5kICYmIGlzRW50ZXI7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBDdHJsICsgRW50ZXIgb3IgQ29tbWFuZCArIEVudGVyLCBmb2N1cyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudFxyXG4gICAgICAgIC8vIGFuZCBsb2NrIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzQ3RybEVudGVyICYmIHRhcmdldCA9PT0gY3VycmVudFRhcmdldCkge1xyXG4gICAgICAgICAgICBzZXRJc0luc2lkZVRyZWVJdGVtKHRydWUpO1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdCA9IGdldEludGVyYWN0aXZlRWxlbWVudHMoY3VycmVudFRhcmdldCwgaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gaW50ZXJhY3RpdmVFbGVtZW50c0xpc3RbMF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gRW5zdXJlIHZhbGlkIENTUyBzZWxlY3RvcnMgYnkgZXNjYXBpbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChlLmcuLCBwZXJpb2RzIGluIGl0ZW1JZClcclxuICAgICAgICBjb25zdCBzYWZlSXRlbUlkID0gQ1NTLmVzY2FwZShpdGVtSWQpO1xyXG4gICAgICAgIGNvbnN0IGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50ID0gdGFyZ2V0LmNsb3Nlc3QoYCMke3NhZmVJdGVtSWR9LWxhYmVsLCAjJHtzYWZlSXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgKTtcclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHdpdGhpbiB0aGUgbGFiZWwgb3IgYWRkaXRpb25hbCBjb250ZW50LCBoYW5kbGUga2V5IGV2ZW50cyBmb3IgdGhvc2UgYXJlYXNcclxuICAgICAgICBpZiAoaXNXaXRoaW5MYWJlbE9yQWRkaXRpb25hbENvbnRlbnQpIHtcclxuICAgICAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaXMgdGhlIHRyZWUgaXRlbSBpdHNlbGYsIGhhbmRsZSBrZXkgZG93biBmb3IgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgaGFuZGxlS2V5RG93bihldmVudCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9LCBbXHJcbiAgICAgICAgZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyxcclxuICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnRzLFxyXG4gICAgICAgIGl0ZW1JZCxcclxuICAgICAgICBoYW5kbGVMYWJlbEFuZEFkZGl0aW9uYWxDb250ZW50S2V5RG93bixcclxuICAgICAgICBoYW5kbGVLZXlEb3duLFxyXG4gICAgXSk7XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBjb250ZXh0VmFsdWUgfSxcclxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgc3R5bGU6IHRyZWVJdGVtU3R5bGVzIH0sXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkVHJlZUl0ZW0sIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgXCJhcmlhLWV4cGFuZGVkXCI6IGhhc093blRyZWVJdGVtcyA/IGV4cGFuZGVkIDogbnVsbCwgXCJhcmlhLXNlbGVjdGVkXCI6IHNlbGVjdGVkSXRlbSwgXCJhcmlhLWNoZWNrZWRcIjogc2hvdWxkU2hvd0NoZWNrYm94ID8gYXJpYUNoZWNrZWRWYWx1ZSA6IG51bGwsIFwiZGF0YS10ZXN0aWRcIjogdGVzdElkLCBkZXB0aDogaXRlbURlcHRoLCBoYXNPd25UcmVlSXRlbXM6IGhhc093blRyZWVJdGVtcywgaWQ6IGl0ZW1JZCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIGlzVmlydHVhbGl6ZWQ6IGhpZXJhcmNoeUNvbnRleHQuaXNWaXJ0dWFsaXplZCwgbm9kZVR5cGU6IG5vZGVUeXBlLCByb2xlOiBcInRyZWVpdGVtXCIsIHNlbGVjdGFibGVUeXBlOiBzZWxlY3RhYmxlLCBzZWxlY3RlZDogc2VsZWN0ZWRJdGVtLCB0aGVtZTogdGhlbWUsIHRhYkluZGV4OiB0YWJJbmRleCwgb25LZXlEb3duOiBvbktleURvd25IYW5kbGVyLCByZWY6IHRyZWVJdGVtUmVmLCBob3ZlckNvbG9yOiBob3ZlckNvbG9yIH0pLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRJdGVtV3JhcHBlciwgeyBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCA/PyBpdGVtSWR9LWl0ZW13cmFwcGVyYCwgZGVwdGg6IGl0ZW1EZXB0aCwgaGFzQWRkaXRpb25hbENvbnRlbnQ6ICEhYWRkaXRpb25hbENvbnRlbnQsIGhhc0N1c3RvbUljb25TaXplOiAhIWV4cGFuZEljb25TdHlsZXM/LnNpemUsIGlkOiBgJHtpdGVtSWR9LWl0ZW13cmFwcGVyYCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG5vZGVUeXBlOiBub2RlVHlwZSwgc2VsZWN0YWJsZTogc2VsZWN0YWJsZSwgc3R5bGU6IHN0eWxlLCB0aGVtZTogdGhlbWUsIHJlZjogbWVyZ2VSZWZzKHJlZiwgZm9jdXNUcmFwRWxlbWVudCksIG9uQ2xpY2s6IGhhbmRsZU9uQ2xpY2sgfSxcclxuICAgICAgICAgICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkRXhwYW5kV3JhcHBlciwgeyBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplLCBjb2xvcjogZXhwYW5kSWNvblN0eWxlcz8uY29sb3IsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tZXhwYW5kYCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG9uQ2xpY2s6IGhhbmRsZUV4cGFuZENsaWNrLCB0aGVtZTogdGhlbWUgfSwgZXhwYW5kZWQgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChFeHBhbmRNb3JlSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIHNpemU6IGV4cGFuZEljb25TdHlsZXM/LnNpemUgfSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hldnJvblJpZ2h0SWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIHNpemU6IGV4cGFuZEljb25TdHlsZXM/LnNpemUgfSkpKSksXHJcbiAgICAgICAgICAgICAgICAgICAgc2hvdWxkU2hvd0NoZWNrYm94ID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkQ2hlY2tib3hXcmFwcGVyLCB7IGhhc0FkZGl0aW9uYWxDb250ZW50OiAhIWFkZGl0aW9uYWxDb250ZW50LCB0aGVtZTogdGhlbWUgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzT3duVHJlZUl0ZW1zID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW5kZXRlcm1pbmF0ZUNoZWNrYm94LCBPYmplY3QuYXNzaWduKHt9LCBjaGVja2JveFByb3BzLCB7IHN0YXR1czogY2hlY2tlZFN0YXR1cyB9KSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hlY2tib3gsIE9iamVjdC5hc3NpZ24oe30sIGNoZWNrYm94UHJvcHMsIHsgY2hlY2tlZDogY2hlY2tlZFN0YXR1c1RvQm9vbGVhbihjaGVja2VkU3RhdHVzKSB9KSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlSXRlbUFkZGl0aW9uYWxDb250ZW50KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxUZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlSXRlbUFkZGl0aW9uYWxDb250ZW50KSkpLFxyXG4gICAgICAgICAgICAgICAgaGFzR3VpZGVMaW5lcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIChoaWVyYXJjaHlDb250ZXh0LmlzVmlydHVhbGl6ZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBpdGVtRGVwdGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5mcm9tKHsgbGVuZ3RoOiBpdGVtRGVwdGggfSwgKF8sIGQpID0+IChSZWFjdC5jcmVhdGVFbGVtZW50KFZpcnR1YWxpemVkR3VpZGVMaW5lLCB7IGtleTogYGd1aWRlbGluZS0ke2R9YCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS12aXJ0dWFsaXplZC1ndWlkZWxpbmUtJHtkfWAsIHRoZW1lOiB0aGVtZSwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2V0SW5saW5lU3RhcnQ6IGBjYWxjKCR7Y2FsY3VsYXRlT2Zmc2V0KFRyZWVOb2RlVHlwZS5icmFuY2gsIGQsIGZhbHNlLCBmYWxzZSwgdHJ1ZSl9ICsgJHtleHBhbmRJY29uU3R5bGVzPy5zaXplICE9PSB1bmRlZmluZWQgPyBgJHtleHBhbmRJY29uU3R5bGVzLnNpemV9cHhgIDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDZ9IC8gMiAtIDAuNXB4KWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB9KSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaGFzT3duVHJlZUl0ZW1zICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRlZCAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChHdWlkZUxpbmUsIHsgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1ndWlkZWxpbmVgLCB0aGVtZTogdGhlbWUsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBndWlkZUxpbmVMZWZ0OiBgY2FsYygke2NhbGN1bGF0ZU9mZnNldChUcmVlTm9kZVR5cGUuYnJhbmNoLCBpdGVtRGVwdGgsIGZhbHNlLCBmYWxzZSwgZmFsc2UpfSArICR7ZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7ZXhwYW5kSWNvblN0eWxlcy5zaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fSAvIDIgLSAwLjVweCkgYCB9KSkpLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuQ2hpbGRyZW4ubWFwKGNoaWxkcmVuLCAoY2hpbGQsIGNoaWxkSW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQ/LnR5cGUgIT09IFRyZWVJdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVXNlIHRoZSBzdGFibGUsIHByZS1tZW1vaXNlZCB2YWx1ZSAoc2VlIGNoaWxkSGllcmFyY2hpZXMgYWJvdmUpLlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5lc3RlZEhpZXJhcmNoeVZhbHVlID0gY2hpbGRIaWVyYXJjaGllc1tjaGlsZEluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJhbnNpdGlvbiwgeyBpc09wZW46IGV4cGFuZGVkLCB1bm1vdW50T25FeGl0OiB0cnVlIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ1bFwiLCB7IHJvbGU6IFwiZ3JvdXBcIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUcmVlSXRlbUhpZXJhcmNoeUNvbnRleHQuUHJvdmlkZXIsIHsga2V5OiBjaGlsZC5wcm9wcy5pdGVtSWQsIHZhbHVlOiBuZXN0ZWRIaWVyYXJjaHlWYWx1ZSB9LCBjaGlsZCkpKSk7XHJcbiAgICAgICAgICAgICAgICB9KSksXHJcbiAgICAgICAgICAgIGlzTWFjT1MgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVmlzdWFsbHlIaWRkZW4sIG51bGwsXHJcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEFubm91bmNlLCBudWxsLCBleHBhbmRlZFxyXG4gICAgICAgICAgICAgICAgICAgID8gaTE4bi5leHBhbnNpb25TdGF0ZS5leHBhbmRlZFxyXG4gICAgICAgICAgICAgICAgICAgIDogaTE4bi5leHBhbnNpb25TdGF0ZS5jb2xsYXBzZWQpKSkpKSk7XHJcbn0pO1xyXG4vKipcclxuICogQ3VzdG9tIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIFJlYWN0Lm1lbW9cclxuICogT25seSByZS1yZW5kZXIgVHJlZUl0ZW0gd2hlbiByZWxldmFudCBwcm9wcyBjaGFuZ2VcclxuICovXHJcbmZ1bmN0aW9uIGFyZVByb3BzRXF1YWwocHJldlByb3BzLCBuZXh0UHJvcHMpIHtcclxuICAgIC8vIENoZWNrIGlmIGl0ZW1JZCBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLml0ZW1JZCAhPT0gbmV4dFByb3BzLml0ZW1JZCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGxhYmVsIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMubGFiZWwgIT09IG5leHRQcm9wcy5sYWJlbCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGRpc2FibGVkIHN0YXRlIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaXNEaXNhYmxlZCAhPT0gbmV4dFByb3BzLmlzRGlzYWJsZWQpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBpY29uIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaWNvbiAhPT0gbmV4dFByb3BzLmljb24pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBhZGRpdGlvbmFsIGNvbnRlbnQgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5hZGRpdGlvbmFsQ29udGVudCAhPT0gbmV4dFByb3BzLmFkZGl0aW9uYWxDb250ZW50KSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgaG92ZXIgY29sb3IgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5ob3ZlckNvbG9yICE9PSBuZXh0UHJvcHMuaG92ZXJDb2xvcikge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGNoaWxkcmVuIGNoYW5nZWQgKGZvciBuZXN0ZWQgdHJlZSBpdGVtcylcclxuICAgIC8vIFVzaW5nIHR5cGUgYXNzZXJ0aW9uIHNpbmNlIGNoaWxkcmVuIGNvbWVzIGZyb20gUmVhY3QuSFRNTEF0dHJpYnV0ZXNcclxuICAgIGlmIChwcmV2UHJvcHMuY2hpbGRyZW4gIT09IG5leHRQcm9wcy5jaGlsZHJlbikge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIHN0eWxlcyBjaGFuZ2VkXHJcbiAgICAvLyBVc2luZyB0eXBlIGFzc2VydGlvbiBzaW5jZSBzdHlsZSBjb21lcyBmcm9tIFJlYWN0LkhUTUxBdHRyaWJ1dGVzXHJcbiAgICBpZiAocHJldlByb3BzLnN0eWxlICE9PSBuZXh0UHJvcHMuc3R5bGUpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAocHJldlByb3BzLmxhYmVsU3R5bGUgIT09IG5leHRQcm9wcy5sYWJlbFN0eWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZQcm9wcy50cmVlSXRlbVN0eWxlcyAhPT0gbmV4dFByb3BzLnRyZWVJdGVtU3R5bGVzKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQWxsIHJlbGV2YW50IHByb3BzIGFyZSBlcXVhbCwgc2tpcCByZS1yZW5kZXJcclxuICAgIHJldHVybiB0cnVlO1xyXG59XHJcbi8qKlxyXG4gKiBNZW1vaXplZCBUcmVlSXRlbSBjb21wb25lbnRcclxuICogT25seSByZS1yZW5kZXJzIHdoZW4gcmVsZXZhbnQgcHJvcHMgY2hhbmdlLCBpbXByb3ZpbmcgcGVyZm9ybWFuY2UgZm9yIGxhcmdlIHRyZWVzXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW0gPSBSZWFjdC5tZW1vKFRyZWVJdGVtQ29tcG9uZW50LCBhcmVQcm9wc0VxdWFsKTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VHJlZUl0ZW0uanMubWFwIl19 */"));
|
|
29405
29407
|
/*#__PURE__*/createStyled("div", {
|
|
29406
29408
|
target: "e1xiryew5",
|
|
29407
29409
|
label: "StyledExpandWrapper"
|
|
@@ -29417,7 +29419,7 @@
|
|
|
29417
29419
|
var size = _ref3.size,
|
|
29418
29420
|
theme = _ref3.theme;
|
|
29419
29421
|
return size !== undefined ? size + "px" : theme.spaceScale.spacing06;
|
|
29420
|
-
}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvSHVDIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dCB9IGZyb20gJy4vVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdDb25maWdDb250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld0NvbmZpZ0NvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0V4cGFuc2lvbkNvbnRleHQgfSBmcm9tICcuL1RyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyBjYWxjdWxhdGVPZmZzZXQsIGdldFRyZWVJdGVtTGFiZWxDb2xvciwgZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yLCBUcmVlTm9kZVR5cGUsIH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IEkxOG5Db250ZXh0IH0gZnJvbSAnLi4vLi4nO1xyXG5pbXBvcnQgdXNlRGV2aWNlRGV0ZWN0IGZyb20gJy4uLy4uL2hvb2tzL3VzZURldmljZURldGVjdCc7XHJcbmltcG9ydCB7IHVzZUZvY3VzTG9jayB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZUZvY3VzTG9jayc7XHJcbmltcG9ydCB7IHVzZUlzSW52ZXJzZSB9IGZyb20gJy4uLy4uL2ludmVyc2UnO1xyXG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgfSBmcm9tICcuLi8uLi90aGVtZS9UaGVtZUNvbnRleHQnO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmltcG9ydCB7IEFubm91bmNlIH0gZnJvbSAnLi4vQW5ub3VuY2UnO1xyXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gJy4uL0NoZWNrYm94JztcclxuaW1wb3J0IHsgSW5kZXRlcm1pbmF0ZUNoZWNrYm94LCBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMsIH0gZnJvbSAnLi4vSW5kZXRlcm1pbmF0ZUNoZWNrYm94JztcclxuaW1wb3J0IHsgVHJhbnNpdGlvbiB9IGZyb20gJy4uL1RyYW5zaXRpb24nO1xyXG5pbXBvcnQgeyBWaXN1YWxseUhpZGRlbiB9IGZyb20gJy4uL1Zpc3VhbGx5SGlkZGVuJztcclxuY29uc3QgU3R5bGVkVHJlZUl0ZW0gPSBzdHlsZWQubGkgYFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDBcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWw3MDB9O1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIGN1cnNvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbVdyYXBwZXJDdXJzb3IocHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMuc2VsZWN0YWJsZVR5cGUsIHByb3BzLm5vZGVUeXBlKX07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcblxuICBwYWRkaW5nLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCBmYWxzZSwgZmFsc2UsIHByb3BzLmlzVmlydHVhbGl6ZWQpfTtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuXG4gICAgJiA+ICo6Zmlyc3QtY2hpbGQge1xuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkXG4gICAgICAgICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLmZvY3VzSW52ZXJzZVxyXG4gICAgOiBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXN9O1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIGZhbHNlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgbWFyZ2luLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCB0cnVlLCB0cnVlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgcGFkZGluZy1ibG9jay1lbmQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctYmxvY2stc3RhcnQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJlxyXG4gICAgY3NzIGBcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzLmlzSW52ZXJzZVxyXG4gICAgICAgID8gcHJvcHMudGhlbWUuY29sb3JzLnRlcnRpYXJ5NTAwXHJcbiAgICAgICAgOiBwcm9wcy50aGVtZS5jb2xvcnMucHJpbWFyeTUwMH07XG4gICAgICAgICAgYmxvY2stc2l6ZTogMTAwJTtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICBpbmxpbmUtc2l6ZTogJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ6IDA7XG4gICAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAwO1xuICAgICAgICB9XG4gICAgICBgfVxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBnZXRIb3ZlckJhY2tncm91bmQoe1xyXG4gICAgaXNEaXNhYmxlZDogcHJvcHMuaXNEaXNhYmxlZCxcclxuICAgIGhvdmVyQ29sb3I6IHByb3BzLmhvdmVyQ29sb3IsXHJcbiAgICBpc0ludmVyc2U6IHByb3BzLmlzSW52ZXJzZSxcclxuICAgIHRoZW1lOiBwcm9wcy50aGVtZSxcclxufSl9O1xuICAgIH1cbiAgfVxuYDtcclxuZnVuY3Rpb24gZ2V0SG92ZXJCYWNrZ3JvdW5kKHsgaXNEaXNhYmxlZCwgaG92ZXJDb2xvciwgaXNJbnZlcnNlLCB0aGVtZSB9KSB7XHJcbiAgICBpZiAoaXNEaXNhYmxlZClcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgaWYgKGhvdmVyQ29sb3IpXHJcbiAgICAgICAgcmV0dXJuIGhvdmVyQ29sb3I7XHJcbiAgICBjb25zdCB0cmFuc3BhcmVuY3kgPSBpc0ludmVyc2UgPyAwLjggOiAwLjk1O1xyXG4gICAgcmV0dXJuIHRyYW5zcGFyZW50aXplKHRyYW5zcGFyZW5jeSwgdGhlbWUuY29sb3JzLm5ldXRyYWw5MDApO1xyXG59XHJcbmNvbnN0IEljb25XcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBtYXJnaW4tbGVmdDogMDtcblxuICBzdmcge1xuICAgIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pY29uU2l6ZXMubWVkaXVtfXB4O1xuICAgIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgfVxuYDtcclxuY29uc3QgU3R5bGVkTGFiZWxXcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgd2lkdGg6IDEwMCU7XG5gO1xyXG5jb25zdCBTdHlsZWRFeHBhbmRXcmFwcGVyID0gc3R5bGVkLmRpdiBgXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgbWFyZ2luLXJpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuY29sb3IgfHxcclxuICAgIGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIHdpZHRoOiAkeyh7IHNpemUsIHRoZW1lIH0pID0+IHNpemUgIT09IHVuZGVmaW5lZCA/IGAke3NpemV9cHhgIDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDZ9O1xuICBoZWlnaHQ6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG5gO1xyXG5jb25zdCBHdWlkZUxpbmUgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDh9O1xuICBib3R0b206IDA7XG4gIGluc2V0LWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy5ndWlkZUxpbmVMZWZ0fTtcbiAgd2lkdGg6IDA7XG4gIGJvcmRlci1pbmxpbmUtc3RhcnQ6IDFweCBzb2xpZFxuICAgICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHRyYW5zcGFyZW50aXplKDAuNywgcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDApXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMzAwfTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHotaW5kZXg6IDE7XG5gO1xyXG5jb25zdCBWaXJ0dWFsaXplZEd1aWRlTGluZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogMDtcbiAgYm9yZGVyLWlubGluZS1zdGFydDogMXB4IHNvbGlkXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDEwMClcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwzMDB9O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW1Db21wb25lbnQgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XHJcbiAgICBjb25zdCB7IGFkZGl0aW9uYWxDb250ZW50LCBjaGlsZHJlbiwgaG92ZXJDb2xvciwgaWNvbiwgaW5kZXg6IGluZGV4UHJvcCwgbGFiZWwsIGxhYmVsU3R5bGUsIHN0eWxlLCB0ZXN0SWQsIHRvcExldmVsOiB0b3BMZXZlbFByb3AsIHRyZWVJdGVtU3R5bGVzLCAuLi5yZXN0IH0gPSBwcm9wcztcclxuICAgIGNvbnN0IHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xyXG4gICAgY29uc3QgaXNJbnZlcnNlID0gdXNlSXNJbnZlcnNlKCk7XHJcbiAgICAvLyBSZWFkIGhpZXJhcmNoeSBpbmZvcm1hdGlvbiBmcm9tIGNvbnRleHQgKHJlZHVjZXMgY2xvbmVFbGVtZW50IG92ZXJoZWFkKVxyXG4gICAgY29uc3QgaGllcmFyY2h5Q29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0KTtcclxuICAgIC8vIFVzZSBjb250ZXh0IHZhbHVlcyBpZiBwcm9wcyBhcmUgbm90IHByb3ZpZGVkIChmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSlcclxuICAgIGNvbnN0IGluZGV4ID0gaW5kZXhQcm9wICE9PSB1bmRlZmluZWQgPyBpbmRleFByb3AgOiBoaWVyYXJjaHlDb250ZXh0LmluZGV4O1xyXG4gICAgY29uc3QgdG9wTGV2ZWwgPSB0b3BMZXZlbFByb3AgIT09IHVuZGVmaW5lZCA/IHRvcExldmVsUHJvcCA6IGhpZXJhcmNoeUNvbnRleHQuaXNUb3BMZXZlbDtcclxuICAgIC8vIENvbnN1bWUgc3BsaXQgY29udGV4dHMgZm9yIHJlZHVjZWQgcmUtcmVuZGVyIHNjb3BlXHJcbiAgICBjb25zdCB7IGl0ZW1Ub0ZvY3VzIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGhhbmRsZUV4cGFuZGVkQ2hhbmdlIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGV4cGFuZEljb25TdHlsZXMsIGhhc0d1aWRlTGluZXMsIGhhc0ljb25zLCBpc1RvcExldmVsU2VsZWN0YWJsZSwgc2VsZWN0YWJsZSwgc2VsZWN0UGFyZW50cyA9IHRydWUsIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29uZmlnQ29udGV4dCk7XHJcbiAgICAvLyBQYXNzIHRoZSByZXNvbHZlZCB2YWx1ZXMgdG8gdXNlVHJlZUl0ZW1cclxuICAgIGNvbnN0IHByb3BzV2l0aEhpZXJhcmNoeSA9IHtcclxuICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICBpbmRleCxcclxuICAgICAgICB0b3BMZXZlbCxcclxuICAgICAgICBpdGVtRGVwdGg6IGhpZXJhcmNoeUNvbnRleHQuZGVwdGgsXHJcbiAgICAgICAgcGFyZW50RGVwdGg6IGhpZXJhcmNoeUNvbnRleHQucGFyZW50RGVwdGgsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyBjb250ZXh0VmFsdWUsIGhhbmRsZUNsaWNrLCBoYW5kbGVLZXlEb3duIH0gPSB1c2VUcmVlSXRlbShwcm9wc1dpdGhIaWVyYXJjaHksIGZvcndhcmRlZFJlZik7XHJcbiAgICBjb25zdCB7IGlzRGlzYWJsZWQgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IHsgaXNNYWNPUyB9ID0gdXNlRGV2aWNlRGV0ZWN0KCk7XHJcbiAgICBjb25zdCBpMThuID0gUmVhY3QudXNlQ29udGV4dChJMThuQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGNoZWNrYm94Q2hhbmdlSGFuZGxlciwgY2hlY2tlZFN0YXR1cywgZXhwYW5kZWQsIGhhc093blRyZWVJdGVtcywgaXRlbURlcHRoLCBpdGVtSWQsIHJlZiwgc2VsZWN0ZWRJdGVtcywgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IG5vZGVUeXBlID0gaGFzT3duVHJlZUl0ZW1zID8gVHJlZU5vZGVUeXBlLmJyYW5jaCA6IFRyZWVOb2RlVHlwZS5sZWFmO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZVxyXG4gICAgICAgID8gc2VsZWN0ZWRJdGVtcz8uWzBdPy5pdGVtSWQgPT09IGl0ZW1JZFxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IGFyaWFDaGVja2VkVmFsdWUgPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUubXVsdGlcclxuICAgICAgICA/IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5pbmRldGVybWluYXRlXHJcbiAgICAgICAgICAgID8gJ21peGVkJ1xyXG4gICAgICAgICAgICA6IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5jaGVja2VkXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgW2lzSW5zaWRlVHJlZUl0ZW0sIHNldElzSW5zaWRlVHJlZUl0ZW1dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgdHJlZUl0ZW1SZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XHJcbiAgICBjb25zdCBmb2N1c1RyYXBFbGVtZW50ID0gdXNlRm9jdXNMb2NrKGlzSW5zaWRlVHJlZUl0ZW0pO1xyXG4gICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50cyA9ICdidXR0b24sIFtyb2xlPVwiYnV0dG9uXCJdLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgYVtocmVmXSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJztcclxuICAgIGNvbnN0IGdldEludGVyYWN0aXZlRWxlbWVudHMgPSBSZWFjdC51c2VDYWxsYmFjaygoY29udGFpbmVyLCBzZWxlY3RvcikgPT4ge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSkuZmlsdGVyKGVsID0+ICFlbC5oYXNBdHRyaWJ1dGUoJ3RhYmluZGV4JykgfHxcclxuICAgICAgICAgICAgKGVsLnRhYkluZGV4ICE9PSB1bmRlZmluZWQgJiYgZWwudGFiSW5kZXggPj0gMCkpO1xyXG4gICAgfSwgW10pO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGFsbG93cyBmb3Iga2V5Ym9hcmQgbmF2aWdhdGlvbiB3aXRoaW4gdGhlIGxhYmVsIGFuZCBhZGRpdGlvbmFsIGNvbnRlbnQgb2YgYSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogWW91IGNhbiBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIHVzaW5nIHRoZSBgVGFiYCBrZXksIGFjdGl2YXRlIHRoZW0gd2l0aCBgRW50ZXJgIG9yIGBTcGFjZWAsXHJcbiAgICAgKiBhbmQgZXhpdCBvdXRzaWRlIGFuZCBmb2N1cyB0aGUgd2hvbGUgdHJlZSBpdGVtIHdpdGggYEVzY2FwZWAuXHJcbiAgICAgKiAqKi9cclxuICAgIGNvbnN0IGhhbmRsZUxhYmVsQW5kQWRkaXRpb25hbENvbnRlbnRLZXlEb3duID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBrZXksIHRhcmdldCwgY3VycmVudFRhcmdldCwgc2hpZnRLZXkgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gdGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNTcGFjZSA9IGtleSA9PT0gJyAnO1xyXG4gICAgICAgIGNvbnN0IGlzRXNjYXBlID0ga2V5ID09PSAnRXNjYXBlJztcclxuICAgICAgICBjb25zdCBpc1RhYiA9IGtleSA9PT0gJ1RhYic7XHJcbiAgICAgICAgY29uc3QgaXNBY3RpdmF0aW9uS2V5ID0gaXNFbnRlciB8fCBpc1NwYWNlO1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBgVGFiYCwgd2UgbmF2aWdhdGUgdGhyb3VnaCBpbnRlcmFjdGl2ZSBlbGVtZW50cyBpbnNpZGUgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmIChpc1RhYiAmJiBpc0luc2lkZVRyZWVJdGVtKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudHNMaXN0ID0gZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyhjdXJyZW50VGFyZ2V0LCBpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAgICAgLy8gRmlsdGVyIGxpc3Qgb2YgaW50ZXJhY3RpdmUgZWxlbWVudHMgd2hpY2ggYXJlIG9ubHkgaW5jbHVkZWQgZm9yIGN1cnJlbnQgdHJlZSBpdGVtXHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMgPSBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdC5maWx0ZXIoZWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2xvc2VzdFRyZWVJdGVtID0gZWwuY2xvc2VzdCgnW3JvbGU9XCJ0cmVlaXRlbVwiXScpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsb3Nlc3RUcmVlSXRlbSA9PT0gdHJlZUl0ZW1SZWYuY3VycmVudDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMuaW5kZXhPZihjdXJyZW50RWxlbWVudCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHNoaWZ0S2V5ID8gLTEgOiAxO1xyXG4gICAgICAgICAgICBjb25zdCB0b3RhbCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMubGVuZ3RoO1xyXG4gICAgICAgICAgICBjb25zdCBuZXh0SW5kZXggPSAoY3VycmVudEluZGV4ICsgZGlyZWN0aW9uICsgdG90YWwpICUgdG90YWw7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50c1tuZXh0SW5kZXhdO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudFRvRm9jdXMpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZWxlbWVudFRvRm9jdXMuZm9jdXMoKSwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBQcmVzc2luZyBgRW50ZXJgIG9yIGBTcGFjZWAgb24gYW4gaW50ZXJhY3RpdmUgZWxlbWVudCB3aWxsIHRyaWdnZXIgaXRzIGNsaWNrIGV2ZW50XHJcbiAgICAgICAgaWYgKGlzQWN0aXZhdGlvbktleSAmJiBpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgaW50ZXJhY3RpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE1vdmVzIGZvY3VzIG91dHNpZGUgdGhlIHRyZWUgaXRlbSBhbmQgZm9jdXNlcyB0aGUgdHJlZSBpdGVtIGl0c2VsZiB3aGVuIGBFc2NhcGVgIGlzIHByZXNzZWRcclxuICAgICAgICBpZiAoaXNFc2NhcGUpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHNldElzSW5zaWRlVHJlZUl0ZW0oZmFsc2UpO1xyXG4gICAgICAgICAgICBjb25zdCB0cmVlSXRlbU5vZGUgPSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICBpZiAodHJlZUl0ZW1Ob2RlKSB7XHJcbiAgICAgICAgICAgICAgICB0cmVlSXRlbU5vZGUuZm9jdXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzSW5zaWRlVHJlZUl0ZW1dKTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gUmVhY3QudXNlTWVtbygoKSA9PiBub2RlVHlwZSA9PT0gVHJlZU5vZGVUeXBlLmJyYW5jaCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEZvbGRlckljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KEFydGljbGVJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSksIFtub2RlVHlwZV0pO1xyXG4gICAgLy8gTWVtb2lzZSB0aGUgbGFiZWwgSlNYIHNvIHRoZSBgY2hlY2tib3hQcm9wc2AgbWVtbyBiZWxvdyBhY3R1YWxseSBoYXNcclxuICAgIC8vIGEgc3RhYmxlIGBsYWJlbFRleHRgIHJlZmVyZW5jZSBiZXR3ZWVuIHJlbmRlcnMuIFByZXZpb3VzbHkgdGhpc1xyXG4gICAgLy8gZWxlbWVudCB3YXMgcmUtY3JlYXRlZCBvbiBldmVyeSByZW5kZXIsIHdoaWNoIGZvcmNlZFxyXG4gICAgLy8gYGNoZWNrYm94UHJvcHNgIHRvIGFsc28gYmUgcmUtY3JlYXRlZCBhbmQgYW55IGZ1dHVyZSBSZWFjdC5tZW1vIG9uXHJcbiAgICAvLyBDaGVja2JveC9JbmRldGVybWluYXRlQ2hlY2tib3ggd291bGQgYWx3YXlzIGJhaWwgb3V0LlxyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gUmVhY3QudXNlTWVtbygoKSA9PiAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRMYWJlbFdyYXBwZXIsIHsgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgc3R5bGU6IGxhYmVsU3R5bGUsIGlkOiBgJHtpdGVtSWR9LWxhYmVsYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1sYWJlbGAgfSxcclxuICAgICAgICBoYXNJY29ucyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChJY29uV3JhcHBlciwgeyBpc0ludmVyc2U6IGlzSW52ZXJzZSwgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWljb25gIH0sIGljb24gfHwgZGVmYXVsdEljb24pKSxcclxuICAgICAgICBsYWJlbCkpLCBbXHJcbiAgICAgICAgdGhlbWUsXHJcbiAgICAgICAgaXNEaXNhYmxlZCxcclxuICAgICAgICBpc0ludmVyc2UsXHJcbiAgICAgICAgbGFiZWxTdHlsZSxcclxuICAgICAgICBpdGVtSWQsXHJcbiAgICAgICAgdGVzdElkLFxyXG4gICAgICAgIGhhc0ljb25zLFxyXG4gICAgICAgIGljb24sXHJcbiAgICAgICAgZGVmYXVsdEljb24sXHJcbiAgICAgICAgbGFiZWwsXHJcbiAgICBdKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBSZWFjdC51c2VNZW1vKCgpID0+IGFkZGl0aW9uYWxDb250ZW50ID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQWRkaXRpb25hbENvbnRlbnRXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaWQ6IGAke2l0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgIH0sIGFkZGl0aW9uYWxDb250ZW50KSkgOiBudWxsLCBbYWRkaXRpb25hbENvbnRlbnQsIHRoZW1lLCBpdGVtSWQsIHRlc3RJZF0pO1xyXG4gICAgLy8gU3RhYmxlIHBlci1jaGlsZCBoaWVyYXJjaHkgdmFsdWVzLiBUaGUgcmVmZXJlbmNlIG11c3Qgbm90IGNoYW5nZSBvblxyXG4gICAgLy8gcmUtcmVuZGVycyB0cmlnZ2VyZWQgYnkgVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0LCBvdGhlcndpc2UgZXZlcnlcclxuICAgIC8vIG5lc3RlZCBUcmVlSXRlbSByZS1yZW5kZXJzIHRocm91Z2ggdGhlIGNvbnRleHQgYW5kIFJlYWN0Lm1lbW8gaXNcclxuICAgIC8vIGRlZmVhdGVkLlxyXG4gICAgY29uc3QgY2hpbGRIaWVyYXJjaGllcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvdW50ID0gUmVhY3QuQ2hpbGRyZW4uY291bnQoY2hpbGRyZW4pO1xyXG4gICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShjb3VudCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGFycltpXSA9IHtcclxuICAgICAgICAgICAgICAgIGRlcHRoOiBpdGVtRGVwdGggKyAxLFxyXG4gICAgICAgICAgICAgICAgcGFyZW50RGVwdGg6IGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgIGlzVG9wTGV2ZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhcnI7XHJcbiAgICB9LCBbY2hpbGRyZW4sIGl0ZW1EZXB0aF0pO1xyXG4gICAgLy8gTWVtb2l6ZSBpbmxpbmUgc3R5bGUgb2JqZWN0cyB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IHJlLXJlbmRlcnNcclxuICAgIGNvbnN0IGNoZWNrYm94SW5wdXRTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHsgbWFyZ2luUmlnaHQ6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzIH0pLCBbdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDNdKTtcclxuICAgIGNvbnN0IGNoZWNrYm94TGFiZWxTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcclxuICAgICAgICBwYWRkaW5nOiAwLFxyXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICB9KSwgW10pO1xyXG4gICAgLy8gUHJvcHMgc2hhcmVkIGJ5IENoZWNrYm94IGFuZCBJbmRldGVybWluYXRlQ2hlY2tib3hcclxuICAgIGNvbnN0IGNoZWNrYm94UHJvcHMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XHJcbiAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaGlkZUZvY3VzOiB0cnVlLFxyXG4gICAgICAgIGlkOiBgJHtpdGVtSWR9LWNoZWNrYm94YCxcclxuICAgICAgICBpbnB1dFN0eWxlOiBjaGVja2JveElucHV0U3R5bGUsXHJcbiAgICAgICAgbGFiZWxTdHlsZTogY2hlY2tib3hMYWJlbFN0eWxlLFxyXG4gICAgICAgIGxhYmVsVGV4dDogbGFiZWxUZXh0LFxyXG4gICAgICAgIG9uQ2hhbmdlOiBjaGVja2JveENoYW5nZUhhbmRsZXIsXHJcbiAgICAgICAgdGFiSW5kZXg6IC0xLFxyXG4gICAgICAgIHRlc3RJZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICB9KSwgW1xyXG4gICAgICAgIGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaXRlbUlkLFxyXG4gICAgICAgIGNoZWNrYm94SW5wdXRTdHlsZSxcclxuICAgICAgICBjaGVja2JveExhYmVsU3R5bGUsXHJcbiAgICAgICAgbGFiZWxUZXh0LFxyXG4gICAgICAgIGNoZWNrYm94Q2hhbmdlSGFuZGxlcixcclxuICAgIF0pO1xyXG4gICAgY29uc3Qgb25FeHBhbmRlZENsaWNrZWQgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGhhbmRsZUV4cGFuZGVkQ2hhbmdlKGV2ZW50LCBpdGVtSWQpO1xyXG4gICAgfSwgW2hhbmRsZUV4cGFuZGVkQ2hhbmdlLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IGhhbmRsZUV4cGFuZENsaWNrID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKCFpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICBvbkV4cGFuZGVkQ2xpY2tlZChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIG9uRXhwYW5kZWRDbGlja2VkXSk7XHJcbiAgICBjb25zdCBoYW5kbGVPbkNsaWNrID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSBldmVudC50YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdCgnYnV0dG9uLCBbcm9sZT1cImJ1dHRvblwiXSwgYVtocmVmXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIFtyb2xlPVwibWVudWl0ZW1cIl0nKTtcclxuICAgICAgICAvLyBQcmV2ZW50aW5nIHNlbGVjdGluZyB0aGUgaXRlbSB3aGVuIGNsaWNraW5nIG9uIGludGVyYWN0aXZlIGVsZW1lbnRzIHdoZW4gYHNlbGVjdGFibGVgIGlzIGBzaW5nbGVgXHJcbiAgICAgICAgaWYgKGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBJZiBzZWxlY3RQYXJlbnRzIGlzIGZhbHNlIGFuZCB0aGlzIGlzIGEgcGFyZW50IGl0ZW0sIGhhbmRsZSBleHBhbmQvY29sbGFwc2UgaW5zdGVhZCBvZiBzZWxlY3Rpb25cclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZSAmJlxyXG4gICAgICAgICAgICAhc2VsZWN0UGFyZW50cyAmJlxyXG4gICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIG9uRXhwYW5kZWRDbGlja2VkKGV2ZW50KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZSkge1xyXG4gICAgICAgICAgICBoYW5kbGVDbGljayhldmVudCwgaXRlbUlkKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgdGFiSW5kZXggPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcclxuICAgICAgICBpZiAoaXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaXRlbVRvRm9jdXMgPT09IGl0ZW1JZCA/IDAgOiAtMTtcclxuICAgIH0sIFtpc0Rpc2FibGVkLCBpdGVtVG9Gb2N1cywgaXRlbUlkXSk7XHJcbiAgICBjb25zdCBzaG91bGRTaG93Q2hlY2tib3ggPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUubXVsdGkgJiZcclxuICAgICAgICAoaXNUb3BMZXZlbFNlbGVjdGFibGUgIT09IGZhbHNlIHx8ICF0b3BMZXZlbCk7XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIHdpdGhpbiB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIFByZXNzaW5nIGBDdHJsICsgRW50ZXJgIG9yIGBDb21tYW5kICsgRW50ZXJgIGZvY3VzZXMgdGhlIGZpcnN0IGludGVyYWN0aXZlIGVsZW1lbnQgd2l0aGluIHRoZSB0cmVlIGl0ZW1cclxuICAgICAqIGFuZCBsb2NrcyBmb2N1cyBpbnNpZGUgdGhlIHRyZWUgaXRlbS5cclxuICAgICAqXHJcbiAgICAgKiBJZiB0aGUgZm9jdXMgaXMgd2l0aGluIHRoZSBsYWJlbCBvciBhZGRpdGlvbmFsIGNvbnRlbnQsIGl0IGhhbmRsZXMga2V5IGV2ZW50cyBmb3IgaW50ZXJhY3Rpb24gZWxlbWVudHMuXHJcbiAgICAgKlxyXG4gICAgICogSXQgYWxzbyBoYW5kbGVzIHRoZSBvdGhlciBrZXlzIHRvIHRyaWdnZXIgdGhlIGNsaWNrIGV2ZW50IG9uIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKiAqKi9cclxuICAgIGNvbnN0IG9uS2V5RG93bkhhbmRsZXIgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBjb25zdCB7IGtleSwgdGFyZ2V0LCBjdXJyZW50VGFyZ2V0IH0gPSBldmVudDtcclxuICAgICAgICBjb25zdCBpc0VudGVyID0ga2V5ID09PSAnRW50ZXInO1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybE9yQ29tbWFuZCA9IGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleTtcclxuICAgICAgICBjb25zdCBpc0N0cmxFbnRlciA9IGlzQ3RybE9yQ29tbWFuZCAmJiBpc0VudGVyO1xyXG4gICAgICAgIC8vIElmIHRoZSBrZXkgaXMgQ3RybCArIEVudGVyIG9yIENvbW1hbmQgKyBFbnRlciwgZm9jdXMgdGhlIGZpcnN0IGludGVyYWN0aXZlIGVsZW1lbnRcclxuICAgICAgICAvLyBhbmQgbG9jayBmb2N1cyBpbnNpZGUgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmIChpc0N0cmxFbnRlciAmJiB0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgc2V0SXNJbnNpZGVUcmVlSXRlbSh0cnVlKTtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50c0xpc3QgPSBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzKGN1cnJlbnRUYXJnZXQsIGludGVyYWN0aXZlRWxlbWVudHMpO1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50VG9Gb2N1cyA9IGludGVyYWN0aXZlRWxlbWVudHNMaXN0WzBdO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudFRvRm9jdXMpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRUb0ZvY3VzLmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICB9LCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEVuc3VyZSB2YWxpZCBDU1Mgc2VsZWN0b3JzIGJ5IGVzY2FwaW5nIHNwZWNpYWwgY2hhcmFjdGVycyAoZS5nLiwgcGVyaW9kcyBpbiBpdGVtSWQpXHJcbiAgICAgICAgY29uc3Qgc2FmZUl0ZW1JZCA9IENTUy5lc2NhcGUoaXRlbUlkKTtcclxuICAgICAgICBjb25zdCBpc1dpdGhpbkxhYmVsT3JBZGRpdGlvbmFsQ29udGVudCA9IHRhcmdldC5jbG9zZXN0KGAjJHtzYWZlSXRlbUlkfS1sYWJlbCwgIyR7c2FmZUl0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCk7XHJcbiAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaGFuZGxlIGtleSBldmVudHMgZm9yIHRob3NlIGFyZWFzXHJcbiAgICAgICAgaWYgKGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50KSB7XHJcbiAgICAgICAgICAgIGhhbmRsZUxhYmVsQW5kQWRkaXRpb25hbENvbnRlbnRLZXlEb3duKGV2ZW50KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHRoZSB0cmVlIGl0ZW0gaXRzZWxmLCBoYW5kbGUga2V5IGRvd24gZm9yIHRoZSB0cmVlIGl0ZW1cclxuICAgICAgICBpZiAodGFyZ2V0ID09PSBjdXJyZW50VGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIGhhbmRsZUtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW1xyXG4gICAgICAgIGdldEludGVyYWN0aXZlRWxlbWVudHMsXHJcbiAgICAgICAgaW50ZXJhY3RpdmVFbGVtZW50cyxcclxuICAgICAgICBpdGVtSWQsXHJcbiAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24sXHJcbiAgICAgICAgaGFuZGxlS2V5RG93bixcclxuICAgIF0pO1xyXG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyZWVJdGVtQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogY29udGV4dFZhbHVlIH0sXHJcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IHN0eWxlOiB0cmVlSXRlbVN0eWxlcyB9LFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZFRyZWVJdGVtLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IFwiYXJpYS1leHBhbmRlZFwiOiBoYXNPd25UcmVlSXRlbXMgPyBleHBhbmRlZCA6IG51bGwsIFwiYXJpYS1zZWxlY3RlZFwiOiBzZWxlY3RlZEl0ZW0sIFwiYXJpYS1jaGVja2VkXCI6IHNob3VsZFNob3dDaGVja2JveCA/IGFyaWFDaGVja2VkVmFsdWUgOiBudWxsLCBcImRhdGEtdGVzdGlkXCI6IHRlc3RJZCwgZGVwdGg6IGl0ZW1EZXB0aCwgaGFzT3duVHJlZUl0ZW1zOiBoYXNPd25UcmVlSXRlbXMsIGlkOiBpdGVtSWQsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBpc1ZpcnR1YWxpemVkOiBoaWVyYXJjaHlDb250ZXh0LmlzVmlydHVhbGl6ZWQsIG5vZGVUeXBlOiBub2RlVHlwZSwgcm9sZTogXCJ0cmVlaXRlbVwiLCBzZWxlY3RhYmxlVHlwZTogc2VsZWN0YWJsZSwgc2VsZWN0ZWQ6IHNlbGVjdGVkSXRlbSwgdGhlbWU6IHRoZW1lLCB0YWJJbmRleDogdGFiSW5kZXgsIG9uS2V5RG93bjogb25LZXlEb3duSGFuZGxlciwgcmVmOiB0cmVlSXRlbVJlZiwgaG92ZXJDb2xvcjogaG92ZXJDb2xvciB9KSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkSXRlbVdyYXBwZXIsIHsgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1pdGVtd3JhcHBlcmAsIGRlcHRoOiBpdGVtRGVwdGgsIGhhc0FkZGl0aW9uYWxDb250ZW50OiAhIWFkZGl0aW9uYWxDb250ZW50LCBoYXNDdXN0b21JY29uU2l6ZTogISFleHBhbmRJY29uU3R5bGVzPy5zaXplLCBpZDogYCR7aXRlbUlkfS1pdGVtd3JhcHBlcmAsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBub2RlVHlwZTogbm9kZVR5cGUsIHNlbGVjdGFibGU6IHNlbGVjdGFibGUsIHN0eWxlOiBzdHlsZSwgdGhlbWU6IHRoZW1lLCByZWY6IG1lcmdlUmVmcyhyZWYsIGZvY3VzVHJhcEVsZW1lbnQpLCBvbkNsaWNrOiBoYW5kbGVPbkNsaWNrIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgaGFzT3duVHJlZUl0ZW1zICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZEV4cGFuZFdyYXBwZXIsIHsgc2l6ZTogZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSwgY29sb3I6IGV4cGFuZEljb25TdHlsZXM/LmNvbG9yLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWV4cGFuZGAsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBvbkNsaWNrOiBoYW5kbGVFeHBhbmRDbGljaywgdGhlbWU6IHRoZW1lIH0sIGV4cGFuZGVkID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRXhwYW5kTW9yZUljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZXZyb25SaWdodEljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSkpLFxyXG4gICAgICAgICAgICAgICAgICAgIHNob3VsZFNob3dDaGVja2JveCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZENoZWNrYm94V3JhcHBlciwgeyBoYXNBZGRpdGlvbmFsQ29udGVudDogISFhZGRpdGlvbmFsQ29udGVudCwgdGhlbWU6IHRoZW1lIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc093blRyZWVJdGVtcyA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEluZGV0ZXJtaW5hdGVDaGVja2JveCwgT2JqZWN0LmFzc2lnbih7fSwgY2hlY2tib3hQcm9wcywgeyBzdGF0dXM6IGNoZWNrZWRTdGF0dXMgfSkpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZWNrYm94LCBPYmplY3QuYXNzaWduKHt9LCBjaGVja2JveFByb3BzLCB7IGNoZWNrZWQ6IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4oY2hlY2tlZFN0YXR1cykgfSkpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsVGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpKSxcclxuICAgICAgICAgICAgICAgIGhhc0d1aWRlTGluZXMgJiZcclxuICAgICAgICAgICAgICAgICAgICAoaGllcmFyY2h5Q29udGV4dC5pc1ZpcnR1YWxpemVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbURlcHRoID4gMCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkuZnJvbSh7IGxlbmd0aDogaXRlbURlcHRoIH0sIChfLCBkKSA9PiAoUmVhY3QuY3JlYXRlRWxlbWVudChWaXJ0dWFsaXplZEd1aWRlTGluZSwgeyBrZXk6IGBndWlkZWxpbmUtJHtkfWAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tdmlydHVhbGl6ZWQtZ3VpZGVsaW5lLSR7ZH1gLCB0aGVtZTogdGhlbWUsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBzdHlsZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNldElubGluZVN0YXJ0OiBgY2FsYygke2NhbGN1bGF0ZU9mZnNldChUcmVlTm9kZVR5cGUuYnJhbmNoLCBkLCBmYWxzZSwgZmFsc2UsIHRydWUpfSArICR7ZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7ZXhwYW5kSWNvblN0eWxlcy5zaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fSAvIDIgLSAwLjVweClgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfSkpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGhhc093blRyZWVJdGVtcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWQgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoR3VpZGVMaW5lLCB7IFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tZ3VpZGVsaW5lYCwgdGhlbWU6IHRoZW1lLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgZ3VpZGVMaW5lTGVmdDogYGNhbGMoJHtjYWxjdWxhdGVPZmZzZXQoVHJlZU5vZGVUeXBlLmJyYW5jaCwgaXRlbURlcHRoLCBmYWxzZSwgZmFsc2UsIGZhbHNlKX0gKyAke2V4cGFuZEljb25TdHlsZXM/LnNpemUgIT09IHVuZGVmaW5lZCA/IGAke2V4cGFuZEljb25TdHlsZXMuc2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn0gLyAyIC0gMC41cHgpIGAgfSkpKSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LkNoaWxkcmVuLm1hcChjaGlsZHJlbiwgKGNoaWxkLCBjaGlsZEluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkPy50eXBlICE9PSBUcmVlSXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFVzZSB0aGUgc3RhYmxlLCBwcmUtbWVtb2lzZWQgdmFsdWUgKHNlZSBjaGlsZEhpZXJhcmNoaWVzIGFib3ZlKS5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXN0ZWRIaWVyYXJjaHlWYWx1ZSA9IGNoaWxkSGllcmFyY2hpZXNbY2hpbGRJbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyYW5zaXRpb24sIHsgaXNPcGVuOiBleHBhbmRlZCwgdW5tb3VudE9uRXhpdDogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwidWxcIiwgeyByb2xlOiBcImdyb3VwXCIgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0LlByb3ZpZGVyLCB7IGtleTogY2hpbGQucHJvcHMuaXRlbUlkLCB2YWx1ZTogbmVzdGVkSGllcmFyY2h5VmFsdWUgfSwgY2hpbGQpKSkpO1xyXG4gICAgICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICBpc01hY09TICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFZpc3VhbGx5SGlkZGVuLCBudWxsLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChBbm5vdW5jZSwgbnVsbCwgZXhwYW5kZWRcclxuICAgICAgICAgICAgICAgICAgICA/IGkxOG4uZXhwYW5zaW9uU3RhdGUuZXhwYW5kZWRcclxuICAgICAgICAgICAgICAgICAgICA6IGkxOG4uZXhwYW5zaW9uU3RhdGUuY29sbGFwc2VkKSkpKSkpO1xyXG59KTtcclxuLyoqXHJcbiAqIEN1c3RvbSBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciBSZWFjdC5tZW1vXHJcbiAqIE9ubHkgcmUtcmVuZGVyIFRyZWVJdGVtIHdoZW4gcmVsZXZhbnQgcHJvcHMgY2hhbmdlXHJcbiAqL1xyXG5mdW5jdGlvbiBhcmVQcm9wc0VxdWFsKHByZXZQcm9wcywgbmV4dFByb3BzKSB7XHJcbiAgICAvLyBDaGVjayBpZiBpdGVtSWQgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5pdGVtSWQgIT09IG5leHRQcm9wcy5pdGVtSWQpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBsYWJlbCBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmxhYmVsICE9PSBuZXh0UHJvcHMubGFiZWwpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBkaXNhYmxlZCBzdGF0ZSBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmlzRGlzYWJsZWQgIT09IG5leHRQcm9wcy5pc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgaWNvbiBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmljb24gIT09IG5leHRQcm9wcy5pY29uKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgYWRkaXRpb25hbCBjb250ZW50IGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuYWRkaXRpb25hbENvbnRlbnQgIT09IG5leHRQcm9wcy5hZGRpdGlvbmFsQ29udGVudCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGhvdmVyIGNvbG9yIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaG92ZXJDb2xvciAhPT0gbmV4dFByb3BzLmhvdmVyQ29sb3IpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBjaGlsZHJlbiBjaGFuZ2VkIChmb3IgbmVzdGVkIHRyZWUgaXRlbXMpXHJcbiAgICAvLyBVc2luZyB0eXBlIGFzc2VydGlvbiBzaW5jZSBjaGlsZHJlbiBjb21lcyBmcm9tIFJlYWN0LkhUTUxBdHRyaWJ1dGVzXHJcbiAgICBpZiAocHJldlByb3BzLmNoaWxkcmVuICE9PSBuZXh0UHJvcHMuY2hpbGRyZW4pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBzdHlsZXMgY2hhbmdlZFxyXG4gICAgLy8gVXNpbmcgdHlwZSBhc3NlcnRpb24gc2luY2Ugc3R5bGUgY29tZXMgZnJvbSBSZWFjdC5IVE1MQXR0cmlidXRlc1xyXG4gICAgaWYgKHByZXZQcm9wcy5zdHlsZSAhPT0gbmV4dFByb3BzLnN0eWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZQcm9wcy5sYWJlbFN0eWxlICE9PSBuZXh0UHJvcHMubGFiZWxTdHlsZSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChwcmV2UHJvcHMudHJlZUl0ZW1TdHlsZXMgIT09IG5leHRQcm9wcy50cmVlSXRlbVN0eWxlcykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIEFsbCByZWxldmFudCBwcm9wcyBhcmUgZXF1YWwsIHNraXAgcmUtcmVuZGVyXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxyXG4vKipcclxuICogTWVtb2l6ZWQgVHJlZUl0ZW0gY29tcG9uZW50XHJcbiAqIE9ubHkgcmUtcmVuZGVycyB3aGVuIHJlbGV2YW50IHByb3BzIGNoYW5nZSwgaW1wcm92aW5nIHBlcmZvcm1hbmNlIGZvciBsYXJnZSB0cmVlc1xyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFRyZWVJdGVtID0gUmVhY3QubWVtbyhUcmVlSXRlbUNvbXBvbmVudCwgYXJlUHJvcHNFcXVhbCk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRyZWVJdGVtLmpzLm1hcCJdfQ== */"));
|
|
29422
|
+
}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvSHVDIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dCB9IGZyb20gJy4vVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdDb25maWdDb250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld0NvbmZpZ0NvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0V4cGFuc2lvbkNvbnRleHQgfSBmcm9tICcuL1RyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyBjYWxjdWxhdGVPZmZzZXQsIGdldFRyZWVJdGVtTGFiZWxDb2xvciwgZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yLCBUcmVlTm9kZVR5cGUsIH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IEkxOG5Db250ZXh0IH0gZnJvbSAnLi4vLi4nO1xyXG5pbXBvcnQgdXNlRGV2aWNlRGV0ZWN0IGZyb20gJy4uLy4uL2hvb2tzL3VzZURldmljZURldGVjdCc7XHJcbmltcG9ydCB7IHVzZUZvY3VzTG9jayB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZUZvY3VzTG9jayc7XHJcbmltcG9ydCB7IHVzZUlzSW52ZXJzZSB9IGZyb20gJy4uLy4uL2ludmVyc2UnO1xyXG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgfSBmcm9tICcuLi8uLi90aGVtZS9UaGVtZUNvbnRleHQnO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmltcG9ydCB7IEFubm91bmNlIH0gZnJvbSAnLi4vQW5ub3VuY2UnO1xyXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gJy4uL0NoZWNrYm94JztcclxuaW1wb3J0IHsgSW5kZXRlcm1pbmF0ZUNoZWNrYm94LCBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMsIH0gZnJvbSAnLi4vSW5kZXRlcm1pbmF0ZUNoZWNrYm94JztcclxuaW1wb3J0IHsgVHJhbnNpdGlvbiB9IGZyb20gJy4uL1RyYW5zaXRpb24nO1xyXG5pbXBvcnQgeyBWaXN1YWxseUhpZGRlbiB9IGZyb20gJy4uL1Zpc3VhbGx5SGlkZGVuJztcclxuY29uc3QgU3R5bGVkVHJlZUl0ZW0gPSBzdHlsZWQubGkgYFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDBcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWw3MDB9O1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIGN1cnNvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbVdyYXBwZXJDdXJzb3IocHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMuc2VsZWN0YWJsZVR5cGUsIHByb3BzLm5vZGVUeXBlKX07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcblxuICBwYWRkaW5nLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCBmYWxzZSwgZmFsc2UsIHByb3BzLmlzVmlydHVhbGl6ZWQpfTtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuXG4gICAgJiA+ICo6Zmlyc3QtY2hpbGQge1xuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkXG4gICAgICAgICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLmZvY3VzSW52ZXJzZVxyXG4gICAgOiBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXN9O1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIGZhbHNlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgbWFyZ2luLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCB0cnVlLCB0cnVlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgcGFkZGluZy1ibG9jay1lbmQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctYmxvY2stc3RhcnQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJlxyXG4gICAgY3NzIGBcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzLmlzSW52ZXJzZVxyXG4gICAgICAgID8gcHJvcHMudGhlbWUuY29sb3JzLnRlcnRpYXJ5NTAwXHJcbiAgICAgICAgOiBwcm9wcy50aGVtZS5jb2xvcnMucHJpbWFyeTUwMH07XG4gICAgICAgICAgYmxvY2stc2l6ZTogMTAwJTtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICBpbmxpbmUtc2l6ZTogJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ6IDA7XG4gICAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAwO1xuICAgICAgICB9XG4gICAgICBgfVxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBnZXRIb3ZlckJhY2tncm91bmQoe1xyXG4gICAgaXNEaXNhYmxlZDogcHJvcHMuaXNEaXNhYmxlZCxcclxuICAgIGhvdmVyQ29sb3I6IHByb3BzLmhvdmVyQ29sb3IsXHJcbiAgICBpc0ludmVyc2U6IHByb3BzLmlzSW52ZXJzZSxcclxuICAgIHRoZW1lOiBwcm9wcy50aGVtZSxcclxufSl9O1xuICAgIH1cbiAgfVxuYDtcclxuZnVuY3Rpb24gZ2V0SG92ZXJCYWNrZ3JvdW5kKHsgaXNEaXNhYmxlZCwgaG92ZXJDb2xvciwgaXNJbnZlcnNlLCB0aGVtZSB9KSB7XHJcbiAgICBpZiAoaXNEaXNhYmxlZClcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgaWYgKGhvdmVyQ29sb3IpXHJcbiAgICAgICAgcmV0dXJuIGhvdmVyQ29sb3I7XHJcbiAgICBjb25zdCB0cmFuc3BhcmVuY3kgPSBpc0ludmVyc2UgPyAwLjggOiAwLjk1O1xyXG4gICAgcmV0dXJuIHRyYW5zcGFyZW50aXplKHRyYW5zcGFyZW5jeSwgdGhlbWUuY29sb3JzLm5ldXRyYWw5MDApO1xyXG59XHJcbmNvbnN0IEljb25XcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBtYXJnaW4tbGVmdDogMDtcblxuICBzdmcge1xuICAgIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pY29uU2l6ZXMubWVkaXVtfXB4O1xuICAgIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgfVxuYDtcclxuY29uc3QgU3R5bGVkTGFiZWxXcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgd2lkdGg6IDEwMCU7XG5gO1xyXG5jb25zdCBTdHlsZWRFeHBhbmRXcmFwcGVyID0gc3R5bGVkLmRpdiBgXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgbWFyZ2luLXJpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuY29sb3IgfHxcclxuICAgIGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIHdpZHRoOiAkeyh7IHNpemUsIHRoZW1lIH0pID0+IHNpemUgIT09IHVuZGVmaW5lZCA/IGAke3NpemV9cHhgIDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDZ9O1xuICBoZWlnaHQ6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG5gO1xyXG5jb25zdCBHdWlkZUxpbmUgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDh9O1xuICBib3R0b206IDA7XG4gIGluc2V0LWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy5ndWlkZUxpbmVMZWZ0fTtcbiAgd2lkdGg6IDA7XG4gIGJvcmRlci1pbmxpbmUtc3RhcnQ6IDFweCBzb2xpZFxuICAgICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHRyYW5zcGFyZW50aXplKDAuNywgcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDApXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMzAwfTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHotaW5kZXg6IDE7XG5gO1xyXG5jb25zdCBWaXJ0dWFsaXplZEd1aWRlTGluZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogMDtcbiAgYm9yZGVyLWlubGluZS1zdGFydDogMXB4IHNvbGlkXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDEwMClcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwzMDB9O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW1Db21wb25lbnQgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XHJcbiAgICBjb25zdCB7IGFkZGl0aW9uYWxDb250ZW50LCBjaGlsZHJlbiwgaG92ZXJDb2xvciwgaWNvbiwgaW5kZXg6IGluZGV4UHJvcCwgbGFiZWwsIGxhYmVsU3R5bGUsIHN0eWxlLCB0ZXN0SWQsIHRvcExldmVsOiB0b3BMZXZlbFByb3AsIHRyZWVJdGVtU3R5bGVzLCAuLi5yZXN0IH0gPSBwcm9wcztcclxuICAgIGNvbnN0IHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xyXG4gICAgY29uc3QgaXNJbnZlcnNlID0gdXNlSXNJbnZlcnNlKCk7XHJcbiAgICAvLyBSZWFkIGhpZXJhcmNoeSBpbmZvcm1hdGlvbiBmcm9tIGNvbnRleHQgKHJlZHVjZXMgY2xvbmVFbGVtZW50IG92ZXJoZWFkKVxyXG4gICAgY29uc3QgaGllcmFyY2h5Q29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0KTtcclxuICAgIC8vIFVzZSBjb250ZXh0IHZhbHVlcyBpZiBwcm9wcyBhcmUgbm90IHByb3ZpZGVkIChmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSlcclxuICAgIGNvbnN0IGluZGV4ID0gaW5kZXhQcm9wICE9PSB1bmRlZmluZWQgPyBpbmRleFByb3AgOiBoaWVyYXJjaHlDb250ZXh0LmluZGV4O1xyXG4gICAgY29uc3QgdG9wTGV2ZWwgPSB0b3BMZXZlbFByb3AgIT09IHVuZGVmaW5lZCA/IHRvcExldmVsUHJvcCA6IGhpZXJhcmNoeUNvbnRleHQuaXNUb3BMZXZlbDtcclxuICAgIC8vIENvbnN1bWUgc3BsaXQgY29udGV4dHMgZm9yIHJlZHVjZWQgcmUtcmVuZGVyIHNjb3BlXHJcbiAgICBjb25zdCB7IGl0ZW1Ub0ZvY3VzIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGhhbmRsZUV4cGFuZGVkQ2hhbmdlIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGV4cGFuZEljb25TdHlsZXMsIGhhc0d1aWRlTGluZXMsIGhhc0ljb25zLCBpc1RvcExldmVsU2VsZWN0YWJsZSwgc2VsZWN0YWJsZSwgc2VsZWN0UGFyZW50cyA9IHRydWUsIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29uZmlnQ29udGV4dCk7XHJcbiAgICAvLyBQYXNzIHRoZSByZXNvbHZlZCB2YWx1ZXMgdG8gdXNlVHJlZUl0ZW1cclxuICAgIGNvbnN0IHByb3BzV2l0aEhpZXJhcmNoeSA9IHtcclxuICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICBpbmRleCxcclxuICAgICAgICB0b3BMZXZlbCxcclxuICAgICAgICBpdGVtRGVwdGg6IGhpZXJhcmNoeUNvbnRleHQuZGVwdGgsXHJcbiAgICAgICAgcGFyZW50RGVwdGg6IGhpZXJhcmNoeUNvbnRleHQucGFyZW50RGVwdGgsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyBjb250ZXh0VmFsdWUsIGhhbmRsZUNsaWNrLCBoYW5kbGVLZXlEb3duIH0gPSB1c2VUcmVlSXRlbShwcm9wc1dpdGhIaWVyYXJjaHksIGZvcndhcmRlZFJlZik7XHJcbiAgICBjb25zdCB7IGlzRGlzYWJsZWQgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IHsgaXNNYWNPUyB9ID0gdXNlRGV2aWNlRGV0ZWN0KCk7XHJcbiAgICBjb25zdCBpMThuID0gUmVhY3QudXNlQ29udGV4dChJMThuQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGNoZWNrYm94Q2hhbmdlSGFuZGxlciwgY2hlY2tlZFN0YXR1cywgZXhwYW5kZWQsIGhhc093blRyZWVJdGVtcywgaXRlbURlcHRoLCBpdGVtSWQsIHJlZiwgc2VsZWN0ZWRJdGVtcywgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IG5vZGVUeXBlID0gaGFzT3duVHJlZUl0ZW1zID8gVHJlZU5vZGVUeXBlLmJyYW5jaCA6IFRyZWVOb2RlVHlwZS5sZWFmO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZVxyXG4gICAgICAgID8gc2VsZWN0ZWRJdGVtcz8uWzBdPy5pdGVtSWQgPT09IGl0ZW1JZFxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IGFyaWFDaGVja2VkVmFsdWUgPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUubXVsdGlcclxuICAgICAgICA/IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5pbmRldGVybWluYXRlXHJcbiAgICAgICAgICAgID8gJ21peGVkJ1xyXG4gICAgICAgICAgICA6IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5jaGVja2VkXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgW2lzSW5zaWRlVHJlZUl0ZW0sIHNldElzSW5zaWRlVHJlZUl0ZW1dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgdHJlZUl0ZW1SZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XHJcbiAgICBjb25zdCBmb2N1c1RyYXBFbGVtZW50ID0gdXNlRm9jdXNMb2NrKGlzSW5zaWRlVHJlZUl0ZW0pO1xyXG4gICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50cyA9ICdidXR0b24sIFtyb2xlPVwiYnV0dG9uXCJdLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgYVtocmVmXSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJztcclxuICAgIGNvbnN0IGdldEludGVyYWN0aXZlRWxlbWVudHMgPSBSZWFjdC51c2VDYWxsYmFjaygoY29udGFpbmVyLCBzZWxlY3RvcikgPT4ge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSkuZmlsdGVyKGVsID0+ICFlbC5oYXNBdHRyaWJ1dGUoJ3RhYmluZGV4JykgfHxcclxuICAgICAgICAgICAgKGVsLnRhYkluZGV4ICE9PSB1bmRlZmluZWQgJiYgZWwudGFiSW5kZXggPj0gMCkpO1xyXG4gICAgfSwgW10pO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGFsbG93cyBmb3Iga2V5Ym9hcmQgbmF2aWdhdGlvbiB3aXRoaW4gdGhlIGxhYmVsIGFuZCBhZGRpdGlvbmFsIGNvbnRlbnQgb2YgYSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogWW91IGNhbiBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIHVzaW5nIHRoZSBgVGFiYCBrZXksIGFjdGl2YXRlIHRoZW0gd2l0aCBgRW50ZXJgIG9yIGBTcGFjZWAsXHJcbiAgICAgKiBhbmQgZXhpdCBvdXRzaWRlIGFuZCBmb2N1cyB0aGUgd2hvbGUgdHJlZSBpdGVtIHdpdGggYEVzY2FwZWAuXHJcbiAgICAgKiAqKi9cclxuICAgIGNvbnN0IGhhbmRsZUxhYmVsQW5kQWRkaXRpb25hbENvbnRlbnRLZXlEb3duID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBrZXksIHRhcmdldCwgY3VycmVudFRhcmdldCwgc2hpZnRLZXkgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gdGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNTcGFjZSA9IGtleSA9PT0gJyAnO1xyXG4gICAgICAgIGNvbnN0IGlzRXNjYXBlID0ga2V5ID09PSAnRXNjYXBlJztcclxuICAgICAgICBjb25zdCBpc1RhYiA9IGtleSA9PT0gJ1RhYic7XHJcbiAgICAgICAgY29uc3QgaXNBY3RpdmF0aW9uS2V5ID0gaXNFbnRlciB8fCBpc1NwYWNlO1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBgVGFiYCwgd2UgbmF2aWdhdGUgdGhyb3VnaCBpbnRlcmFjdGl2ZSBlbGVtZW50cyBpbnNpZGUgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmIChpc1RhYiAmJiBpc0luc2lkZVRyZWVJdGVtKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudHNMaXN0ID0gZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyhjdXJyZW50VGFyZ2V0LCBpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAgICAgLy8gRmlsdGVyIGxpc3Qgb2YgaW50ZXJhY3RpdmUgZWxlbWVudHMgd2hpY2ggYXJlIG9ubHkgaW5jbHVkZWQgZm9yIGN1cnJlbnQgdHJlZSBpdGVtXHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMgPSBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdC5maWx0ZXIoZWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2xvc2VzdFRyZWVJdGVtID0gZWwuY2xvc2VzdCgnW3JvbGU9XCJ0cmVlaXRlbVwiXScpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsb3Nlc3RUcmVlSXRlbSA9PT0gdHJlZUl0ZW1SZWYuY3VycmVudDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMuaW5kZXhPZihjdXJyZW50RWxlbWVudCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHNoaWZ0S2V5ID8gLTEgOiAxO1xyXG4gICAgICAgICAgICBjb25zdCB0b3RhbCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMubGVuZ3RoO1xyXG4gICAgICAgICAgICBjb25zdCBuZXh0SW5kZXggPSAoY3VycmVudEluZGV4ICsgZGlyZWN0aW9uICsgdG90YWwpICUgdG90YWw7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50c1tuZXh0SW5kZXhdO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudFRvRm9jdXMpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZWxlbWVudFRvRm9jdXMuZm9jdXMoKSwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBQcmVzc2luZyBgRW50ZXJgIG9yIGBTcGFjZWAgb24gYW4gaW50ZXJhY3RpdmUgZWxlbWVudCB3aWxsIHRyaWdnZXIgaXRzIGNsaWNrIGV2ZW50XHJcbiAgICAgICAgaWYgKGlzQWN0aXZhdGlvbktleSAmJiBpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgaW50ZXJhY3RpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE1vdmVzIGZvY3VzIG91dHNpZGUgdGhlIHRyZWUgaXRlbSBhbmQgZm9jdXNlcyB0aGUgdHJlZSBpdGVtIGl0c2VsZiB3aGVuIGBFc2NhcGVgIGlzIHByZXNzZWRcclxuICAgICAgICBpZiAoaXNFc2NhcGUpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHNldElzSW5zaWRlVHJlZUl0ZW0oZmFsc2UpO1xyXG4gICAgICAgICAgICBjb25zdCB0cmVlSXRlbU5vZGUgPSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICBpZiAodHJlZUl0ZW1Ob2RlKSB7XHJcbiAgICAgICAgICAgICAgICB0cmVlSXRlbU5vZGUuZm9jdXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzSW5zaWRlVHJlZUl0ZW1dKTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gUmVhY3QudXNlTWVtbygoKSA9PiBub2RlVHlwZSA9PT0gVHJlZU5vZGVUeXBlLmJyYW5jaCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEZvbGRlckljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KEFydGljbGVJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSksIFtub2RlVHlwZV0pO1xyXG4gICAgLy8gTWVtb2lzZSB0aGUgbGFiZWwgSlNYIHNvIHRoZSBgY2hlY2tib3hQcm9wc2AgbWVtbyBiZWxvdyBhY3R1YWxseSBoYXNcclxuICAgIC8vIGEgc3RhYmxlIGBsYWJlbFRleHRgIHJlZmVyZW5jZSBiZXR3ZWVuIHJlbmRlcnMuIFByZXZpb3VzbHkgdGhpc1xyXG4gICAgLy8gZWxlbWVudCB3YXMgcmUtY3JlYXRlZCBvbiBldmVyeSByZW5kZXIsIHdoaWNoIGZvcmNlZFxyXG4gICAgLy8gYGNoZWNrYm94UHJvcHNgIHRvIGFsc28gYmUgcmUtY3JlYXRlZCBhbmQgYW55IGZ1dHVyZSBSZWFjdC5tZW1vIG9uXHJcbiAgICAvLyBDaGVja2JveC9JbmRldGVybWluYXRlQ2hlY2tib3ggd291bGQgYWx3YXlzIGJhaWwgb3V0LlxyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gUmVhY3QudXNlTWVtbygoKSA9PiAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRMYWJlbFdyYXBwZXIsIHsgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgc3R5bGU6IGxhYmVsU3R5bGUsIGlkOiBgJHtpdGVtSWR9LWxhYmVsYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1sYWJlbGAgfSxcclxuICAgICAgICBoYXNJY29ucyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChJY29uV3JhcHBlciwgeyBpc0ludmVyc2U6IGlzSW52ZXJzZSwgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWljb25gIH0sIGljb24gfHwgZGVmYXVsdEljb24pKSxcclxuICAgICAgICBsYWJlbCkpLCBbXHJcbiAgICAgICAgdGhlbWUsXHJcbiAgICAgICAgaXNEaXNhYmxlZCxcclxuICAgICAgICBpc0ludmVyc2UsXHJcbiAgICAgICAgbGFiZWxTdHlsZSxcclxuICAgICAgICBpdGVtSWQsXHJcbiAgICAgICAgdGVzdElkLFxyXG4gICAgICAgIGhhc0ljb25zLFxyXG4gICAgICAgIGljb24sXHJcbiAgICAgICAgZGVmYXVsdEljb24sXHJcbiAgICAgICAgbGFiZWwsXHJcbiAgICBdKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBSZWFjdC51c2VNZW1vKCgpID0+IGFkZGl0aW9uYWxDb250ZW50ID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQWRkaXRpb25hbENvbnRlbnRXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaWQ6IGAke2l0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgIH0sIGFkZGl0aW9uYWxDb250ZW50KSkgOiBudWxsLCBbYWRkaXRpb25hbENvbnRlbnQsIHRoZW1lLCBpdGVtSWQsIHRlc3RJZF0pO1xyXG4gICAgLy8gU3RhYmxlIHBlci1jaGlsZCBoaWVyYXJjaHkgdmFsdWVzLiBUaGUgcmVmZXJlbmNlIG11c3Qgbm90IGNoYW5nZSBvblxyXG4gICAgLy8gcmUtcmVuZGVycyB0cmlnZ2VyZWQgYnkgVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0LCBvdGhlcndpc2UgZXZlcnlcclxuICAgIC8vIG5lc3RlZCBUcmVlSXRlbSByZS1yZW5kZXJzIHRocm91Z2ggdGhlIGNvbnRleHQgYW5kIFJlYWN0Lm1lbW8gaXNcclxuICAgIC8vIGRlZmVhdGVkLlxyXG4gICAgY29uc3QgY2hpbGRIaWVyYXJjaGllcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvdW50ID0gUmVhY3QuQ2hpbGRyZW4uY291bnQoY2hpbGRyZW4pO1xyXG4gICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShjb3VudCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGFycltpXSA9IHtcclxuICAgICAgICAgICAgICAgIGRlcHRoOiBpdGVtRGVwdGggKyAxLFxyXG4gICAgICAgICAgICAgICAgcGFyZW50RGVwdGg6IGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgIGlzVG9wTGV2ZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhcnI7XHJcbiAgICB9LCBbY2hpbGRyZW4sIGl0ZW1EZXB0aF0pO1xyXG4gICAgLy8gTWVtb2l6ZSBpbmxpbmUgc3R5bGUgb2JqZWN0cyB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IHJlLXJlbmRlcnNcclxuICAgIGNvbnN0IGNoZWNrYm94SW5wdXRTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHsgbWFyZ2luUmlnaHQ6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzIH0pLCBbdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDNdKTtcclxuICAgIGNvbnN0IGNoZWNrYm94TGFiZWxTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcclxuICAgICAgICBwYWRkaW5nOiAwLFxyXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICB9KSwgW10pO1xyXG4gICAgLy8gUHJvcHMgc2hhcmVkIGJ5IENoZWNrYm94IGFuZCBJbmRldGVybWluYXRlQ2hlY2tib3hcclxuICAgIGNvbnN0IGNoZWNrYm94UHJvcHMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XHJcbiAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaGlkZUZvY3VzOiB0cnVlLFxyXG4gICAgICAgIGlkOiBgJHtpdGVtSWR9LWNoZWNrYm94YCxcclxuICAgICAgICBpbnB1dFN0eWxlOiBjaGVja2JveElucHV0U3R5bGUsXHJcbiAgICAgICAgbGFiZWxTdHlsZTogY2hlY2tib3hMYWJlbFN0eWxlLFxyXG4gICAgICAgIGxhYmVsVGV4dDogbGFiZWxUZXh0LFxyXG4gICAgICAgIG9uQ2hhbmdlOiBjaGVja2JveENoYW5nZUhhbmRsZXIsXHJcbiAgICAgICAgdGFiSW5kZXg6IC0xLFxyXG4gICAgICAgIHRlc3RJZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICB9KSwgW1xyXG4gICAgICAgIGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaXRlbUlkLFxyXG4gICAgICAgIGNoZWNrYm94SW5wdXRTdHlsZSxcclxuICAgICAgICBjaGVja2JveExhYmVsU3R5bGUsXHJcbiAgICAgICAgbGFiZWxUZXh0LFxyXG4gICAgICAgIGNoZWNrYm94Q2hhbmdlSGFuZGxlcixcclxuICAgIF0pO1xyXG4gICAgY29uc3Qgb25FeHBhbmRlZENsaWNrZWQgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGhhbmRsZUV4cGFuZGVkQ2hhbmdlKGV2ZW50LCBpdGVtSWQpO1xyXG4gICAgfSwgW2hhbmRsZUV4cGFuZGVkQ2hhbmdlLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IGhhbmRsZUV4cGFuZENsaWNrID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKCFpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICBvbkV4cGFuZGVkQ2xpY2tlZChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIG9uRXhwYW5kZWRDbGlja2VkXSk7XHJcbiAgICBjb25zdCBoYW5kbGVPbkNsaWNrID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSBldmVudC50YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdCgnYnV0dG9uLCBbcm9sZT1cImJ1dHRvblwiXSwgYVtocmVmXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIFtyb2xlPVwibWVudWl0ZW1cIl0nKTtcclxuICAgICAgICAvLyBQcmV2ZW50aW5nIHNlbGVjdGluZyB0aGUgaXRlbSB3aGVuIGNsaWNraW5nIG9uIGludGVyYWN0aXZlIGVsZW1lbnRzIHdoZW4gYHNlbGVjdGFibGVgIGlzIGBzaW5nbGVgXHJcbiAgICAgICAgaWYgKGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBJZiBzZWxlY3RQYXJlbnRzIGlzIGZhbHNlIGFuZCB0aGlzIGlzIGEgcGFyZW50IGl0ZW0sIGhhbmRsZSBleHBhbmQvY29sbGFwc2UgaW5zdGVhZCBvZiBzZWxlY3Rpb25cclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZSAmJlxyXG4gICAgICAgICAgICAhc2VsZWN0UGFyZW50cyAmJlxyXG4gICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMpIHtcclxuICAgICAgICAgICAgb25FeHBhbmRlZENsaWNrZWQoZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEluIHNlbGVjdGFibGU9b2ZmIG1vZGUsIGNsaWNraW5nIGFueXdoZXJlIG9uIGEgcGFyZW50IGl0ZW0gdG9nZ2xlcyBleHBhbmQvY29sbGFwc2VcclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLm9mZiAmJiBoYXNPd25UcmVlSXRlbXMpIHtcclxuICAgICAgICAgICAgb25FeHBhbmRlZENsaWNrZWQoZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUuc2luZ2xlKSB7XHJcbiAgICAgICAgICAgIGhhbmRsZUNsaWNrKGV2ZW50LCBpdGVtSWQpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCB0YWJJbmRleCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpdGVtVG9Gb2N1cyA9PT0gaXRlbUlkID8gMCA6IC0xO1xyXG4gICAgfSwgW2lzRGlzYWJsZWQsIGl0ZW1Ub0ZvY3VzLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IHNob3VsZFNob3dDaGVja2JveCA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aSAmJlxyXG4gICAgICAgIChpc1RvcExldmVsU2VsZWN0YWJsZSAhPT0gZmFsc2UgfHwgIXRvcExldmVsKTtcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gd2l0aGluIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogUHJlc3NpbmcgYEN0cmwgKyBFbnRlcmAgb3IgYENvbW1hbmQgKyBFbnRlcmAgZm9jdXNlcyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudCB3aXRoaW4gdGhlIHRyZWUgaXRlbVxyXG4gICAgICogYW5kIGxvY2tzIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIElmIHRoZSBmb2N1cyBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaXQgaGFuZGxlcyBrZXkgZXZlbnRzIGZvciBpbnRlcmFjdGlvbiBlbGVtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBJdCBhbHNvIGhhbmRsZXMgdGhlIG90aGVyIGtleXMgdG8gdHJpZ2dlciB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIHRyZWUgaXRlbS5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3Qgb25LZXlEb3duSGFuZGxlciA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsga2V5LCB0YXJnZXQsIGN1cnJlbnRUYXJnZXQgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNDdHJsT3JDb21tYW5kID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5O1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybEVudGVyID0gaXNDdHJsT3JDb21tYW5kICYmIGlzRW50ZXI7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBDdHJsICsgRW50ZXIgb3IgQ29tbWFuZCArIEVudGVyLCBmb2N1cyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudFxyXG4gICAgICAgIC8vIGFuZCBsb2NrIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzQ3RybEVudGVyICYmIHRhcmdldCA9PT0gY3VycmVudFRhcmdldCkge1xyXG4gICAgICAgICAgICBzZXRJc0luc2lkZVRyZWVJdGVtKHRydWUpO1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdCA9IGdldEludGVyYWN0aXZlRWxlbWVudHMoY3VycmVudFRhcmdldCwgaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gaW50ZXJhY3RpdmVFbGVtZW50c0xpc3RbMF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gRW5zdXJlIHZhbGlkIENTUyBzZWxlY3RvcnMgYnkgZXNjYXBpbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChlLmcuLCBwZXJpb2RzIGluIGl0ZW1JZClcclxuICAgICAgICBjb25zdCBzYWZlSXRlbUlkID0gQ1NTLmVzY2FwZShpdGVtSWQpO1xyXG4gICAgICAgIGNvbnN0IGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50ID0gdGFyZ2V0LmNsb3Nlc3QoYCMke3NhZmVJdGVtSWR9LWxhYmVsLCAjJHtzYWZlSXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgKTtcclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHdpdGhpbiB0aGUgbGFiZWwgb3IgYWRkaXRpb25hbCBjb250ZW50LCBoYW5kbGUga2V5IGV2ZW50cyBmb3IgdGhvc2UgYXJlYXNcclxuICAgICAgICBpZiAoaXNXaXRoaW5MYWJlbE9yQWRkaXRpb25hbENvbnRlbnQpIHtcclxuICAgICAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaXMgdGhlIHRyZWUgaXRlbSBpdHNlbGYsIGhhbmRsZSBrZXkgZG93biBmb3IgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgaGFuZGxlS2V5RG93bihldmVudCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9LCBbXHJcbiAgICAgICAgZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyxcclxuICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnRzLFxyXG4gICAgICAgIGl0ZW1JZCxcclxuICAgICAgICBoYW5kbGVMYWJlbEFuZEFkZGl0aW9uYWxDb250ZW50S2V5RG93bixcclxuICAgICAgICBoYW5kbGVLZXlEb3duLFxyXG4gICAgXSk7XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBjb250ZXh0VmFsdWUgfSxcclxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgc3R5bGU6IHRyZWVJdGVtU3R5bGVzIH0sXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkVHJlZUl0ZW0sIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgXCJhcmlhLWV4cGFuZGVkXCI6IGhhc093blRyZWVJdGVtcyA/IGV4cGFuZGVkIDogbnVsbCwgXCJhcmlhLXNlbGVjdGVkXCI6IHNlbGVjdGVkSXRlbSwgXCJhcmlhLWNoZWNrZWRcIjogc2hvdWxkU2hvd0NoZWNrYm94ID8gYXJpYUNoZWNrZWRWYWx1ZSA6IG51bGwsIFwiZGF0YS10ZXN0aWRcIjogdGVzdElkLCBkZXB0aDogaXRlbURlcHRoLCBoYXNPd25UcmVlSXRlbXM6IGhhc093blRyZWVJdGVtcywgaWQ6IGl0ZW1JZCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIGlzVmlydHVhbGl6ZWQ6IGhpZXJhcmNoeUNvbnRleHQuaXNWaXJ0dWFsaXplZCwgbm9kZVR5cGU6IG5vZGVUeXBlLCByb2xlOiBcInRyZWVpdGVtXCIsIHNlbGVjdGFibGVUeXBlOiBzZWxlY3RhYmxlLCBzZWxlY3RlZDogc2VsZWN0ZWRJdGVtLCB0aGVtZTogdGhlbWUsIHRhYkluZGV4OiB0YWJJbmRleCwgb25LZXlEb3duOiBvbktleURvd25IYW5kbGVyLCByZWY6IHRyZWVJdGVtUmVmLCBob3ZlckNvbG9yOiBob3ZlckNvbG9yIH0pLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRJdGVtV3JhcHBlciwgeyBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCA/PyBpdGVtSWR9LWl0ZW13cmFwcGVyYCwgZGVwdGg6IGl0ZW1EZXB0aCwgaGFzQWRkaXRpb25hbENvbnRlbnQ6ICEhYWRkaXRpb25hbENvbnRlbnQsIGhhc0N1c3RvbUljb25TaXplOiAhIWV4cGFuZEljb25TdHlsZXM/LnNpemUsIGlkOiBgJHtpdGVtSWR9LWl0ZW13cmFwcGVyYCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG5vZGVUeXBlOiBub2RlVHlwZSwgc2VsZWN0YWJsZTogc2VsZWN0YWJsZSwgc3R5bGU6IHN0eWxlLCB0aGVtZTogdGhlbWUsIHJlZjogbWVyZ2VSZWZzKHJlZiwgZm9jdXNUcmFwRWxlbWVudCksIG9uQ2xpY2s6IGhhbmRsZU9uQ2xpY2sgfSxcclxuICAgICAgICAgICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkRXhwYW5kV3JhcHBlciwgeyBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplLCBjb2xvcjogZXhwYW5kSWNvblN0eWxlcz8uY29sb3IsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tZXhwYW5kYCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG9uQ2xpY2s6IGhhbmRsZUV4cGFuZENsaWNrLCB0aGVtZTogdGhlbWUgfSwgZXhwYW5kZWQgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChFeHBhbmRNb3JlSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIHNpemU6IGV4cGFuZEljb25TdHlsZXM/LnNpemUgfSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hldnJvblJpZ2h0SWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIHNpemU6IGV4cGFuZEljb25TdHlsZXM/LnNpemUgfSkpKSksXHJcbiAgICAgICAgICAgICAgICAgICAgc2hvdWxkU2hvd0NoZWNrYm94ID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkQ2hlY2tib3hXcmFwcGVyLCB7IGhhc0FkZGl0aW9uYWxDb250ZW50OiAhIWFkZGl0aW9uYWxDb250ZW50LCB0aGVtZTogdGhlbWUgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzT3duVHJlZUl0ZW1zID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW5kZXRlcm1pbmF0ZUNoZWNrYm94LCBPYmplY3QuYXNzaWduKHt9LCBjaGVja2JveFByb3BzLCB7IHN0YXR1czogY2hlY2tlZFN0YXR1cyB9KSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hlY2tib3gsIE9iamVjdC5hc3NpZ24oe30sIGNoZWNrYm94UHJvcHMsIHsgY2hlY2tlZDogY2hlY2tlZFN0YXR1c1RvQm9vbGVhbihjaGVja2VkU3RhdHVzKSB9KSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlSXRlbUFkZGl0aW9uYWxDb250ZW50KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxUZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlSXRlbUFkZGl0aW9uYWxDb250ZW50KSkpLFxyXG4gICAgICAgICAgICAgICAgaGFzR3VpZGVMaW5lcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIChoaWVyYXJjaHlDb250ZXh0LmlzVmlydHVhbGl6ZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBpdGVtRGVwdGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5mcm9tKHsgbGVuZ3RoOiBpdGVtRGVwdGggfSwgKF8sIGQpID0+IChSZWFjdC5jcmVhdGVFbGVtZW50KFZpcnR1YWxpemVkR3VpZGVMaW5lLCB7IGtleTogYGd1aWRlbGluZS0ke2R9YCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS12aXJ0dWFsaXplZC1ndWlkZWxpbmUtJHtkfWAsIHRoZW1lOiB0aGVtZSwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2V0SW5saW5lU3RhcnQ6IGBjYWxjKCR7Y2FsY3VsYXRlT2Zmc2V0KFRyZWVOb2RlVHlwZS5icmFuY2gsIGQsIGZhbHNlLCBmYWxzZSwgdHJ1ZSl9ICsgJHtleHBhbmRJY29uU3R5bGVzPy5zaXplICE9PSB1bmRlZmluZWQgPyBgJHtleHBhbmRJY29uU3R5bGVzLnNpemV9cHhgIDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDZ9IC8gMiAtIDAuNXB4KWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB9KSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaGFzT3duVHJlZUl0ZW1zICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRlZCAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChHdWlkZUxpbmUsIHsgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1ndWlkZWxpbmVgLCB0aGVtZTogdGhlbWUsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBndWlkZUxpbmVMZWZ0OiBgY2FsYygke2NhbGN1bGF0ZU9mZnNldChUcmVlTm9kZVR5cGUuYnJhbmNoLCBpdGVtRGVwdGgsIGZhbHNlLCBmYWxzZSwgZmFsc2UpfSArICR7ZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7ZXhwYW5kSWNvblN0eWxlcy5zaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fSAvIDIgLSAwLjVweCkgYCB9KSkpLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuQ2hpbGRyZW4ubWFwKGNoaWxkcmVuLCAoY2hpbGQsIGNoaWxkSW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQ/LnR5cGUgIT09IFRyZWVJdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVXNlIHRoZSBzdGFibGUsIHByZS1tZW1vaXNlZCB2YWx1ZSAoc2VlIGNoaWxkSGllcmFyY2hpZXMgYWJvdmUpLlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5lc3RlZEhpZXJhcmNoeVZhbHVlID0gY2hpbGRIaWVyYXJjaGllc1tjaGlsZEluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJhbnNpdGlvbiwgeyBpc09wZW46IGV4cGFuZGVkLCB1bm1vdW50T25FeGl0OiB0cnVlIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ1bFwiLCB7IHJvbGU6IFwiZ3JvdXBcIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUcmVlSXRlbUhpZXJhcmNoeUNvbnRleHQuUHJvdmlkZXIsIHsga2V5OiBjaGlsZC5wcm9wcy5pdGVtSWQsIHZhbHVlOiBuZXN0ZWRIaWVyYXJjaHlWYWx1ZSB9LCBjaGlsZCkpKSk7XHJcbiAgICAgICAgICAgICAgICB9KSksXHJcbiAgICAgICAgICAgIGlzTWFjT1MgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVmlzdWFsbHlIaWRkZW4sIG51bGwsXHJcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEFubm91bmNlLCBudWxsLCBleHBhbmRlZFxyXG4gICAgICAgICAgICAgICAgICAgID8gaTE4bi5leHBhbnNpb25TdGF0ZS5leHBhbmRlZFxyXG4gICAgICAgICAgICAgICAgICAgIDogaTE4bi5leHBhbnNpb25TdGF0ZS5jb2xsYXBzZWQpKSkpKSk7XHJcbn0pO1xyXG4vKipcclxuICogQ3VzdG9tIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIFJlYWN0Lm1lbW9cclxuICogT25seSByZS1yZW5kZXIgVHJlZUl0ZW0gd2hlbiByZWxldmFudCBwcm9wcyBjaGFuZ2VcclxuICovXHJcbmZ1bmN0aW9uIGFyZVByb3BzRXF1YWwocHJldlByb3BzLCBuZXh0UHJvcHMpIHtcclxuICAgIC8vIENoZWNrIGlmIGl0ZW1JZCBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLml0ZW1JZCAhPT0gbmV4dFByb3BzLml0ZW1JZCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGxhYmVsIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMubGFiZWwgIT09IG5leHRQcm9wcy5sYWJlbCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGRpc2FibGVkIHN0YXRlIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaXNEaXNhYmxlZCAhPT0gbmV4dFByb3BzLmlzRGlzYWJsZWQpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBpY29uIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaWNvbiAhPT0gbmV4dFByb3BzLmljb24pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBhZGRpdGlvbmFsIGNvbnRlbnQgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5hZGRpdGlvbmFsQ29udGVudCAhPT0gbmV4dFByb3BzLmFkZGl0aW9uYWxDb250ZW50KSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgaG92ZXIgY29sb3IgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5ob3ZlckNvbG9yICE9PSBuZXh0UHJvcHMuaG92ZXJDb2xvcikge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGNoaWxkcmVuIGNoYW5nZWQgKGZvciBuZXN0ZWQgdHJlZSBpdGVtcylcclxuICAgIC8vIFVzaW5nIHR5cGUgYXNzZXJ0aW9uIHNpbmNlIGNoaWxkcmVuIGNvbWVzIGZyb20gUmVhY3QuSFRNTEF0dHJpYnV0ZXNcclxuICAgIGlmIChwcmV2UHJvcHMuY2hpbGRyZW4gIT09IG5leHRQcm9wcy5jaGlsZHJlbikge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIHN0eWxlcyBjaGFuZ2VkXHJcbiAgICAvLyBVc2luZyB0eXBlIGFzc2VydGlvbiBzaW5jZSBzdHlsZSBjb21lcyBmcm9tIFJlYWN0LkhUTUxBdHRyaWJ1dGVzXHJcbiAgICBpZiAocHJldlByb3BzLnN0eWxlICE9PSBuZXh0UHJvcHMuc3R5bGUpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAocHJldlByb3BzLmxhYmVsU3R5bGUgIT09IG5leHRQcm9wcy5sYWJlbFN0eWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZQcm9wcy50cmVlSXRlbVN0eWxlcyAhPT0gbmV4dFByb3BzLnRyZWVJdGVtU3R5bGVzKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQWxsIHJlbGV2YW50IHByb3BzIGFyZSBlcXVhbCwgc2tpcCByZS1yZW5kZXJcclxuICAgIHJldHVybiB0cnVlO1xyXG59XHJcbi8qKlxyXG4gKiBNZW1vaXplZCBUcmVlSXRlbSBjb21wb25lbnRcclxuICogT25seSByZS1yZW5kZXJzIHdoZW4gcmVsZXZhbnQgcHJvcHMgY2hhbmdlLCBpbXByb3ZpbmcgcGVyZm9ybWFuY2UgZm9yIGxhcmdlIHRyZWVzXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW0gPSBSZWFjdC5tZW1vKFRyZWVJdGVtQ29tcG9uZW50LCBhcmVQcm9wc0VxdWFsKTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VHJlZUl0ZW0uanMubWFwIl19 */"));
|
|
29421
29423
|
/*#__PURE__*/createStyled("div", {
|
|
29422
29424
|
target: "e1xiryew4",
|
|
29423
29425
|
label: "GuideLine"
|
|
@@ -29427,13 +29429,13 @@
|
|
|
29427
29429
|
return props.guideLineLeft;
|
|
29428
29430
|
}, ";width:0;border-inline-start:1px solid ", function (props) {
|
|
29429
29431
|
return props.isInverse ? curriedTransparentize(0.7, props.theme.colors.neutral100) : props.theme.colors.neutral300;
|
|
29430
|
-
}, ";pointer-events:none;z-index:1;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4SDZCIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dCB9IGZyb20gJy4vVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdDb25maWdDb250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld0NvbmZpZ0NvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0V4cGFuc2lvbkNvbnRleHQgfSBmcm9tICcuL1RyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyBjYWxjdWxhdGVPZmZzZXQsIGdldFRyZWVJdGVtTGFiZWxDb2xvciwgZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yLCBUcmVlTm9kZVR5cGUsIH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IEkxOG5Db250ZXh0IH0gZnJvbSAnLi4vLi4nO1xyXG5pbXBvcnQgdXNlRGV2aWNlRGV0ZWN0IGZyb20gJy4uLy4uL2hvb2tzL3VzZURldmljZURldGVjdCc7XHJcbmltcG9ydCB7IHVzZUZvY3VzTG9jayB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZUZvY3VzTG9jayc7XHJcbmltcG9ydCB7IHVzZUlzSW52ZXJzZSB9IGZyb20gJy4uLy4uL2ludmVyc2UnO1xyXG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgfSBmcm9tICcuLi8uLi90aGVtZS9UaGVtZUNvbnRleHQnO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmltcG9ydCB7IEFubm91bmNlIH0gZnJvbSAnLi4vQW5ub3VuY2UnO1xyXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gJy4uL0NoZWNrYm94JztcclxuaW1wb3J0IHsgSW5kZXRlcm1pbmF0ZUNoZWNrYm94LCBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMsIH0gZnJvbSAnLi4vSW5kZXRlcm1pbmF0ZUNoZWNrYm94JztcclxuaW1wb3J0IHsgVHJhbnNpdGlvbiB9IGZyb20gJy4uL1RyYW5zaXRpb24nO1xyXG5pbXBvcnQgeyBWaXN1YWxseUhpZGRlbiB9IGZyb20gJy4uL1Zpc3VhbGx5SGlkZGVuJztcclxuY29uc3QgU3R5bGVkVHJlZUl0ZW0gPSBzdHlsZWQubGkgYFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDBcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWw3MDB9O1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIGN1cnNvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbVdyYXBwZXJDdXJzb3IocHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMuc2VsZWN0YWJsZVR5cGUsIHByb3BzLm5vZGVUeXBlKX07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcblxuICBwYWRkaW5nLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCBmYWxzZSwgZmFsc2UsIHByb3BzLmlzVmlydHVhbGl6ZWQpfTtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuXG4gICAgJiA+ICo6Zmlyc3QtY2hpbGQge1xuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkXG4gICAgICAgICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLmZvY3VzSW52ZXJzZVxyXG4gICAgOiBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXN9O1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIGZhbHNlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgbWFyZ2luLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCB0cnVlLCB0cnVlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgcGFkZGluZy1ibG9jay1lbmQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctYmxvY2stc3RhcnQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJlxyXG4gICAgY3NzIGBcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzLmlzSW52ZXJzZVxyXG4gICAgICAgID8gcHJvcHMudGhlbWUuY29sb3JzLnRlcnRpYXJ5NTAwXHJcbiAgICAgICAgOiBwcm9wcy50aGVtZS5jb2xvcnMucHJpbWFyeTUwMH07XG4gICAgICAgICAgYmxvY2stc2l6ZTogMTAwJTtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICBpbmxpbmUtc2l6ZTogJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ6IDA7XG4gICAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAwO1xuICAgICAgICB9XG4gICAgICBgfVxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBnZXRIb3ZlckJhY2tncm91bmQoe1xyXG4gICAgaXNEaXNhYmxlZDogcHJvcHMuaXNEaXNhYmxlZCxcclxuICAgIGhvdmVyQ29sb3I6IHByb3BzLmhvdmVyQ29sb3IsXHJcbiAgICBpc0ludmVyc2U6IHByb3BzLmlzSW52ZXJzZSxcclxuICAgIHRoZW1lOiBwcm9wcy50aGVtZSxcclxufSl9O1xuICAgIH1cbiAgfVxuYDtcclxuZnVuY3Rpb24gZ2V0SG92ZXJCYWNrZ3JvdW5kKHsgaXNEaXNhYmxlZCwgaG92ZXJDb2xvciwgaXNJbnZlcnNlLCB0aGVtZSB9KSB7XHJcbiAgICBpZiAoaXNEaXNhYmxlZClcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgaWYgKGhvdmVyQ29sb3IpXHJcbiAgICAgICAgcmV0dXJuIGhvdmVyQ29sb3I7XHJcbiAgICBjb25zdCB0cmFuc3BhcmVuY3kgPSBpc0ludmVyc2UgPyAwLjggOiAwLjk1O1xyXG4gICAgcmV0dXJuIHRyYW5zcGFyZW50aXplKHRyYW5zcGFyZW5jeSwgdGhlbWUuY29sb3JzLm5ldXRyYWw5MDApO1xyXG59XHJcbmNvbnN0IEljb25XcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBtYXJnaW4tbGVmdDogMDtcblxuICBzdmcge1xuICAgIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pY29uU2l6ZXMubWVkaXVtfXB4O1xuICAgIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgfVxuYDtcclxuY29uc3QgU3R5bGVkTGFiZWxXcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgd2lkdGg6IDEwMCU7XG5gO1xyXG5jb25zdCBTdHlsZWRFeHBhbmRXcmFwcGVyID0gc3R5bGVkLmRpdiBgXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgbWFyZ2luLXJpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuY29sb3IgfHxcclxuICAgIGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIHdpZHRoOiAkeyh7IHNpemUsIHRoZW1lIH0pID0+IHNpemUgIT09IHVuZGVmaW5lZCA/IGAke3NpemV9cHhgIDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDZ9O1xuICBoZWlnaHQ6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG5gO1xyXG5jb25zdCBHdWlkZUxpbmUgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDh9O1xuICBib3R0b206IDA7XG4gIGluc2V0LWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy5ndWlkZUxpbmVMZWZ0fTtcbiAgd2lkdGg6IDA7XG4gIGJvcmRlci1pbmxpbmUtc3RhcnQ6IDFweCBzb2xpZFxuICAgICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHRyYW5zcGFyZW50aXplKDAuNywgcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDApXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMzAwfTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHotaW5kZXg6IDE7XG5gO1xyXG5jb25zdCBWaXJ0dWFsaXplZEd1aWRlTGluZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogMDtcbiAgYm9yZGVyLWlubGluZS1zdGFydDogMXB4IHNvbGlkXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDEwMClcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwzMDB9O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW1Db21wb25lbnQgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XHJcbiAgICBjb25zdCB7IGFkZGl0aW9uYWxDb250ZW50LCBjaGlsZHJlbiwgaG92ZXJDb2xvciwgaWNvbiwgaW5kZXg6IGluZGV4UHJvcCwgbGFiZWwsIGxhYmVsU3R5bGUsIHN0eWxlLCB0ZXN0SWQsIHRvcExldmVsOiB0b3BMZXZlbFByb3AsIHRyZWVJdGVtU3R5bGVzLCAuLi5yZXN0IH0gPSBwcm9wcztcclxuICAgIGNvbnN0IHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xyXG4gICAgY29uc3QgaXNJbnZlcnNlID0gdXNlSXNJbnZlcnNlKCk7XHJcbiAgICAvLyBSZWFkIGhpZXJhcmNoeSBpbmZvcm1hdGlvbiBmcm9tIGNvbnRleHQgKHJlZHVjZXMgY2xvbmVFbGVtZW50IG92ZXJoZWFkKVxyXG4gICAgY29uc3QgaGllcmFyY2h5Q29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0KTtcclxuICAgIC8vIFVzZSBjb250ZXh0IHZhbHVlcyBpZiBwcm9wcyBhcmUgbm90IHByb3ZpZGVkIChmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSlcclxuICAgIGNvbnN0IGluZGV4ID0gaW5kZXhQcm9wICE9PSB1bmRlZmluZWQgPyBpbmRleFByb3AgOiBoaWVyYXJjaHlDb250ZXh0LmluZGV4O1xyXG4gICAgY29uc3QgdG9wTGV2ZWwgPSB0b3BMZXZlbFByb3AgIT09IHVuZGVmaW5lZCA/IHRvcExldmVsUHJvcCA6IGhpZXJhcmNoeUNvbnRleHQuaXNUb3BMZXZlbDtcclxuICAgIC8vIENvbnN1bWUgc3BsaXQgY29udGV4dHMgZm9yIHJlZHVjZWQgcmUtcmVuZGVyIHNjb3BlXHJcbiAgICBjb25zdCB7IGl0ZW1Ub0ZvY3VzIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGhhbmRsZUV4cGFuZGVkQ2hhbmdlIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGV4cGFuZEljb25TdHlsZXMsIGhhc0d1aWRlTGluZXMsIGhhc0ljb25zLCBpc1RvcExldmVsU2VsZWN0YWJsZSwgc2VsZWN0YWJsZSwgc2VsZWN0UGFyZW50cyA9IHRydWUsIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29uZmlnQ29udGV4dCk7XHJcbiAgICAvLyBQYXNzIHRoZSByZXNvbHZlZCB2YWx1ZXMgdG8gdXNlVHJlZUl0ZW1cclxuICAgIGNvbnN0IHByb3BzV2l0aEhpZXJhcmNoeSA9IHtcclxuICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICBpbmRleCxcclxuICAgICAgICB0b3BMZXZlbCxcclxuICAgICAgICBpdGVtRGVwdGg6IGhpZXJhcmNoeUNvbnRleHQuZGVwdGgsXHJcbiAgICAgICAgcGFyZW50RGVwdGg6IGhpZXJhcmNoeUNvbnRleHQucGFyZW50RGVwdGgsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyBjb250ZXh0VmFsdWUsIGhhbmRsZUNsaWNrLCBoYW5kbGVLZXlEb3duIH0gPSB1c2VUcmVlSXRlbShwcm9wc1dpdGhIaWVyYXJjaHksIGZvcndhcmRlZFJlZik7XHJcbiAgICBjb25zdCB7IGlzRGlzYWJsZWQgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IHsgaXNNYWNPUyB9ID0gdXNlRGV2aWNlRGV0ZWN0KCk7XHJcbiAgICBjb25zdCBpMThuID0gUmVhY3QudXNlQ29udGV4dChJMThuQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGNoZWNrYm94Q2hhbmdlSGFuZGxlciwgY2hlY2tlZFN0YXR1cywgZXhwYW5kZWQsIGhhc093blRyZWVJdGVtcywgaXRlbURlcHRoLCBpdGVtSWQsIHJlZiwgc2VsZWN0ZWRJdGVtcywgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IG5vZGVUeXBlID0gaGFzT3duVHJlZUl0ZW1zID8gVHJlZU5vZGVUeXBlLmJyYW5jaCA6IFRyZWVOb2RlVHlwZS5sZWFmO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZVxyXG4gICAgICAgID8gc2VsZWN0ZWRJdGVtcz8uWzBdPy5pdGVtSWQgPT09IGl0ZW1JZFxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IGFyaWFDaGVja2VkVmFsdWUgPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUubXVsdGlcclxuICAgICAgICA/IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5pbmRldGVybWluYXRlXHJcbiAgICAgICAgICAgID8gJ21peGVkJ1xyXG4gICAgICAgICAgICA6IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5jaGVja2VkXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgW2lzSW5zaWRlVHJlZUl0ZW0sIHNldElzSW5zaWRlVHJlZUl0ZW1dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgdHJlZUl0ZW1SZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XHJcbiAgICBjb25zdCBmb2N1c1RyYXBFbGVtZW50ID0gdXNlRm9jdXNMb2NrKGlzSW5zaWRlVHJlZUl0ZW0pO1xyXG4gICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50cyA9ICdidXR0b24sIFtyb2xlPVwiYnV0dG9uXCJdLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgYVtocmVmXSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJztcclxuICAgIGNvbnN0IGdldEludGVyYWN0aXZlRWxlbWVudHMgPSBSZWFjdC51c2VDYWxsYmFjaygoY29udGFpbmVyLCBzZWxlY3RvcikgPT4ge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSkuZmlsdGVyKGVsID0+ICFlbC5oYXNBdHRyaWJ1dGUoJ3RhYmluZGV4JykgfHxcclxuICAgICAgICAgICAgKGVsLnRhYkluZGV4ICE9PSB1bmRlZmluZWQgJiYgZWwudGFiSW5kZXggPj0gMCkpO1xyXG4gICAgfSwgW10pO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGFsbG93cyBmb3Iga2V5Ym9hcmQgbmF2aWdhdGlvbiB3aXRoaW4gdGhlIGxhYmVsIGFuZCBhZGRpdGlvbmFsIGNvbnRlbnQgb2YgYSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogWW91IGNhbiBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIHVzaW5nIHRoZSBgVGFiYCBrZXksIGFjdGl2YXRlIHRoZW0gd2l0aCBgRW50ZXJgIG9yIGBTcGFjZWAsXHJcbiAgICAgKiBhbmQgZXhpdCBvdXRzaWRlIGFuZCBmb2N1cyB0aGUgd2hvbGUgdHJlZSBpdGVtIHdpdGggYEVzY2FwZWAuXHJcbiAgICAgKiAqKi9cclxuICAgIGNvbnN0IGhhbmRsZUxhYmVsQW5kQWRkaXRpb25hbENvbnRlbnRLZXlEb3duID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBrZXksIHRhcmdldCwgY3VycmVudFRhcmdldCwgc2hpZnRLZXkgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gdGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNTcGFjZSA9IGtleSA9PT0gJyAnO1xyXG4gICAgICAgIGNvbnN0IGlzRXNjYXBlID0ga2V5ID09PSAnRXNjYXBlJztcclxuICAgICAgICBjb25zdCBpc1RhYiA9IGtleSA9PT0gJ1RhYic7XHJcbiAgICAgICAgY29uc3QgaXNBY3RpdmF0aW9uS2V5ID0gaXNFbnRlciB8fCBpc1NwYWNlO1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBgVGFiYCwgd2UgbmF2aWdhdGUgdGhyb3VnaCBpbnRlcmFjdGl2ZSBlbGVtZW50cyBpbnNpZGUgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmIChpc1RhYiAmJiBpc0luc2lkZVRyZWVJdGVtKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudHNMaXN0ID0gZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyhjdXJyZW50VGFyZ2V0LCBpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAgICAgLy8gRmlsdGVyIGxpc3Qgb2YgaW50ZXJhY3RpdmUgZWxlbWVudHMgd2hpY2ggYXJlIG9ubHkgaW5jbHVkZWQgZm9yIGN1cnJlbnQgdHJlZSBpdGVtXHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMgPSBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdC5maWx0ZXIoZWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2xvc2VzdFRyZWVJdGVtID0gZWwuY2xvc2VzdCgnW3JvbGU9XCJ0cmVlaXRlbVwiXScpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsb3Nlc3RUcmVlSXRlbSA9PT0gdHJlZUl0ZW1SZWYuY3VycmVudDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMuaW5kZXhPZihjdXJyZW50RWxlbWVudCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHNoaWZ0S2V5ID8gLTEgOiAxO1xyXG4gICAgICAgICAgICBjb25zdCB0b3RhbCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMubGVuZ3RoO1xyXG4gICAgICAgICAgICBjb25zdCBuZXh0SW5kZXggPSAoY3VycmVudEluZGV4ICsgZGlyZWN0aW9uICsgdG90YWwpICUgdG90YWw7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50c1tuZXh0SW5kZXhdO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudFRvRm9jdXMpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZWxlbWVudFRvRm9jdXMuZm9jdXMoKSwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBQcmVzc2luZyBgRW50ZXJgIG9yIGBTcGFjZWAgb24gYW4gaW50ZXJhY3RpdmUgZWxlbWVudCB3aWxsIHRyaWdnZXIgaXRzIGNsaWNrIGV2ZW50XHJcbiAgICAgICAgaWYgKGlzQWN0aXZhdGlvbktleSAmJiBpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgaW50ZXJhY3RpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE1vdmVzIGZvY3VzIG91dHNpZGUgdGhlIHRyZWUgaXRlbSBhbmQgZm9jdXNlcyB0aGUgdHJlZSBpdGVtIGl0c2VsZiB3aGVuIGBFc2NhcGVgIGlzIHByZXNzZWRcclxuICAgICAgICBpZiAoaXNFc2NhcGUpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHNldElzSW5zaWRlVHJlZUl0ZW0oZmFsc2UpO1xyXG4gICAgICAgICAgICBjb25zdCB0cmVlSXRlbU5vZGUgPSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICBpZiAodHJlZUl0ZW1Ob2RlKSB7XHJcbiAgICAgICAgICAgICAgICB0cmVlSXRlbU5vZGUuZm9jdXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzSW5zaWRlVHJlZUl0ZW1dKTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gUmVhY3QudXNlTWVtbygoKSA9PiBub2RlVHlwZSA9PT0gVHJlZU5vZGVUeXBlLmJyYW5jaCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEZvbGRlckljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KEFydGljbGVJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSksIFtub2RlVHlwZV0pO1xyXG4gICAgLy8gTWVtb2lzZSB0aGUgbGFiZWwgSlNYIHNvIHRoZSBgY2hlY2tib3hQcm9wc2AgbWVtbyBiZWxvdyBhY3R1YWxseSBoYXNcclxuICAgIC8vIGEgc3RhYmxlIGBsYWJlbFRleHRgIHJlZmVyZW5jZSBiZXR3ZWVuIHJlbmRlcnMuIFByZXZpb3VzbHkgdGhpc1xyXG4gICAgLy8gZWxlbWVudCB3YXMgcmUtY3JlYXRlZCBvbiBldmVyeSByZW5kZXIsIHdoaWNoIGZvcmNlZFxyXG4gICAgLy8gYGNoZWNrYm94UHJvcHNgIHRvIGFsc28gYmUgcmUtY3JlYXRlZCBhbmQgYW55IGZ1dHVyZSBSZWFjdC5tZW1vIG9uXHJcbiAgICAvLyBDaGVja2JveC9JbmRldGVybWluYXRlQ2hlY2tib3ggd291bGQgYWx3YXlzIGJhaWwgb3V0LlxyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gUmVhY3QudXNlTWVtbygoKSA9PiAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRMYWJlbFdyYXBwZXIsIHsgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgc3R5bGU6IGxhYmVsU3R5bGUsIGlkOiBgJHtpdGVtSWR9LWxhYmVsYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1sYWJlbGAgfSxcclxuICAgICAgICBoYXNJY29ucyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChJY29uV3JhcHBlciwgeyBpc0ludmVyc2U6IGlzSW52ZXJzZSwgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWljb25gIH0sIGljb24gfHwgZGVmYXVsdEljb24pKSxcclxuICAgICAgICBsYWJlbCkpLCBbXHJcbiAgICAgICAgdGhlbWUsXHJcbiAgICAgICAgaXNEaXNhYmxlZCxcclxuICAgICAgICBpc0ludmVyc2UsXHJcbiAgICAgICAgbGFiZWxTdHlsZSxcclxuICAgICAgICBpdGVtSWQsXHJcbiAgICAgICAgdGVzdElkLFxyXG4gICAgICAgIGhhc0ljb25zLFxyXG4gICAgICAgIGljb24sXHJcbiAgICAgICAgZGVmYXVsdEljb24sXHJcbiAgICAgICAgbGFiZWwsXHJcbiAgICBdKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBSZWFjdC51c2VNZW1vKCgpID0+IGFkZGl0aW9uYWxDb250ZW50ID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQWRkaXRpb25hbENvbnRlbnRXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaWQ6IGAke2l0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgIH0sIGFkZGl0aW9uYWxDb250ZW50KSkgOiBudWxsLCBbYWRkaXRpb25hbENvbnRlbnQsIHRoZW1lLCBpdGVtSWQsIHRlc3RJZF0pO1xyXG4gICAgLy8gU3RhYmxlIHBlci1jaGlsZCBoaWVyYXJjaHkgdmFsdWVzLiBUaGUgcmVmZXJlbmNlIG11c3Qgbm90IGNoYW5nZSBvblxyXG4gICAgLy8gcmUtcmVuZGVycyB0cmlnZ2VyZWQgYnkgVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0LCBvdGhlcndpc2UgZXZlcnlcclxuICAgIC8vIG5lc3RlZCBUcmVlSXRlbSByZS1yZW5kZXJzIHRocm91Z2ggdGhlIGNvbnRleHQgYW5kIFJlYWN0Lm1lbW8gaXNcclxuICAgIC8vIGRlZmVhdGVkLlxyXG4gICAgY29uc3QgY2hpbGRIaWVyYXJjaGllcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvdW50ID0gUmVhY3QuQ2hpbGRyZW4uY291bnQoY2hpbGRyZW4pO1xyXG4gICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShjb3VudCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGFycltpXSA9IHtcclxuICAgICAgICAgICAgICAgIGRlcHRoOiBpdGVtRGVwdGggKyAxLFxyXG4gICAgICAgICAgICAgICAgcGFyZW50RGVwdGg6IGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgIGlzVG9wTGV2ZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhcnI7XHJcbiAgICB9LCBbY2hpbGRyZW4sIGl0ZW1EZXB0aF0pO1xyXG4gICAgLy8gTWVtb2l6ZSBpbmxpbmUgc3R5bGUgb2JqZWN0cyB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IHJlLXJlbmRlcnNcclxuICAgIGNvbnN0IGNoZWNrYm94SW5wdXRTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHsgbWFyZ2luUmlnaHQ6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzIH0pLCBbdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDNdKTtcclxuICAgIGNvbnN0IGNoZWNrYm94TGFiZWxTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcclxuICAgICAgICBwYWRkaW5nOiAwLFxyXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICB9KSwgW10pO1xyXG4gICAgLy8gUHJvcHMgc2hhcmVkIGJ5IENoZWNrYm94IGFuZCBJbmRldGVybWluYXRlQ2hlY2tib3hcclxuICAgIGNvbnN0IGNoZWNrYm94UHJvcHMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XHJcbiAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaGlkZUZvY3VzOiB0cnVlLFxyXG4gICAgICAgIGlkOiBgJHtpdGVtSWR9LWNoZWNrYm94YCxcclxuICAgICAgICBpbnB1dFN0eWxlOiBjaGVja2JveElucHV0U3R5bGUsXHJcbiAgICAgICAgbGFiZWxTdHlsZTogY2hlY2tib3hMYWJlbFN0eWxlLFxyXG4gICAgICAgIGxhYmVsVGV4dDogbGFiZWxUZXh0LFxyXG4gICAgICAgIG9uQ2hhbmdlOiBjaGVja2JveENoYW5nZUhhbmRsZXIsXHJcbiAgICAgICAgdGFiSW5kZXg6IC0xLFxyXG4gICAgICAgIHRlc3RJZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICB9KSwgW1xyXG4gICAgICAgIGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaXRlbUlkLFxyXG4gICAgICAgIGNoZWNrYm94SW5wdXRTdHlsZSxcclxuICAgICAgICBjaGVja2JveExhYmVsU3R5bGUsXHJcbiAgICAgICAgbGFiZWxUZXh0LFxyXG4gICAgICAgIGNoZWNrYm94Q2hhbmdlSGFuZGxlcixcclxuICAgIF0pO1xyXG4gICAgY29uc3Qgb25FeHBhbmRlZENsaWNrZWQgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGhhbmRsZUV4cGFuZGVkQ2hhbmdlKGV2ZW50LCBpdGVtSWQpO1xyXG4gICAgfSwgW2hhbmRsZUV4cGFuZGVkQ2hhbmdlLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IGhhbmRsZUV4cGFuZENsaWNrID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKCFpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICBvbkV4cGFuZGVkQ2xpY2tlZChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIG9uRXhwYW5kZWRDbGlja2VkXSk7XHJcbiAgICBjb25zdCBoYW5kbGVPbkNsaWNrID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSBldmVudC50YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdCgnYnV0dG9uLCBbcm9sZT1cImJ1dHRvblwiXSwgYVtocmVmXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIFtyb2xlPVwibWVudWl0ZW1cIl0nKTtcclxuICAgICAgICAvLyBQcmV2ZW50aW5nIHNlbGVjdGluZyB0aGUgaXRlbSB3aGVuIGNsaWNraW5nIG9uIGludGVyYWN0aXZlIGVsZW1lbnRzIHdoZW4gYHNlbGVjdGFibGVgIGlzIGBzaW5nbGVgXHJcbiAgICAgICAgaWYgKGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBJZiBzZWxlY3RQYXJlbnRzIGlzIGZhbHNlIGFuZCB0aGlzIGlzIGEgcGFyZW50IGl0ZW0sIGhhbmRsZSBleHBhbmQvY29sbGFwc2UgaW5zdGVhZCBvZiBzZWxlY3Rpb25cclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZSAmJlxyXG4gICAgICAgICAgICAhc2VsZWN0UGFyZW50cyAmJlxyXG4gICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIG9uRXhwYW5kZWRDbGlja2VkKGV2ZW50KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZSkge1xyXG4gICAgICAgICAgICBoYW5kbGVDbGljayhldmVudCwgaXRlbUlkKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgdGFiSW5kZXggPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcclxuICAgICAgICBpZiAoaXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaXRlbVRvRm9jdXMgPT09IGl0ZW1JZCA/IDAgOiAtMTtcclxuICAgIH0sIFtpc0Rpc2FibGVkLCBpdGVtVG9Gb2N1cywgaXRlbUlkXSk7XHJcbiAgICBjb25zdCBzaG91bGRTaG93Q2hlY2tib3ggPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUubXVsdGkgJiZcclxuICAgICAgICAoaXNUb3BMZXZlbFNlbGVjdGFibGUgIT09IGZhbHNlIHx8ICF0b3BMZXZlbCk7XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIHdpdGhpbiB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIFByZXNzaW5nIGBDdHJsICsgRW50ZXJgIG9yIGBDb21tYW5kICsgRW50ZXJgIGZvY3VzZXMgdGhlIGZpcnN0IGludGVyYWN0aXZlIGVsZW1lbnQgd2l0aGluIHRoZSB0cmVlIGl0ZW1cclxuICAgICAqIGFuZCBsb2NrcyBmb2N1cyBpbnNpZGUgdGhlIHRyZWUgaXRlbS5cclxuICAgICAqXHJcbiAgICAgKiBJZiB0aGUgZm9jdXMgaXMgd2l0aGluIHRoZSBsYWJlbCBvciBhZGRpdGlvbmFsIGNvbnRlbnQsIGl0IGhhbmRsZXMga2V5IGV2ZW50cyBmb3IgaW50ZXJhY3Rpb24gZWxlbWVudHMuXHJcbiAgICAgKlxyXG4gICAgICogSXQgYWxzbyBoYW5kbGVzIHRoZSBvdGhlciBrZXlzIHRvIHRyaWdnZXIgdGhlIGNsaWNrIGV2ZW50IG9uIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKiAqKi9cclxuICAgIGNvbnN0IG9uS2V5RG93bkhhbmRsZXIgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBjb25zdCB7IGtleSwgdGFyZ2V0LCBjdXJyZW50VGFyZ2V0IH0gPSBldmVudDtcclxuICAgICAgICBjb25zdCBpc0VudGVyID0ga2V5ID09PSAnRW50ZXInO1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybE9yQ29tbWFuZCA9IGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleTtcclxuICAgICAgICBjb25zdCBpc0N0cmxFbnRlciA9IGlzQ3RybE9yQ29tbWFuZCAmJiBpc0VudGVyO1xyXG4gICAgICAgIC8vIElmIHRoZSBrZXkgaXMgQ3RybCArIEVudGVyIG9yIENvbW1hbmQgKyBFbnRlciwgZm9jdXMgdGhlIGZpcnN0IGludGVyYWN0aXZlIGVsZW1lbnRcclxuICAgICAgICAvLyBhbmQgbG9jayBmb2N1cyBpbnNpZGUgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmIChpc0N0cmxFbnRlciAmJiB0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgc2V0SXNJbnNpZGVUcmVlSXRlbSh0cnVlKTtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50c0xpc3QgPSBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzKGN1cnJlbnRUYXJnZXQsIGludGVyYWN0aXZlRWxlbWVudHMpO1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50VG9Gb2N1cyA9IGludGVyYWN0aXZlRWxlbWVudHNMaXN0WzBdO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudFRvRm9jdXMpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRUb0ZvY3VzLmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICB9LCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEVuc3VyZSB2YWxpZCBDU1Mgc2VsZWN0b3JzIGJ5IGVzY2FwaW5nIHNwZWNpYWwgY2hhcmFjdGVycyAoZS5nLiwgcGVyaW9kcyBpbiBpdGVtSWQpXHJcbiAgICAgICAgY29uc3Qgc2FmZUl0ZW1JZCA9IENTUy5lc2NhcGUoaXRlbUlkKTtcclxuICAgICAgICBjb25zdCBpc1dpdGhpbkxhYmVsT3JBZGRpdGlvbmFsQ29udGVudCA9IHRhcmdldC5jbG9zZXN0KGAjJHtzYWZlSXRlbUlkfS1sYWJlbCwgIyR7c2FmZUl0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCk7XHJcbiAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaGFuZGxlIGtleSBldmVudHMgZm9yIHRob3NlIGFyZWFzXHJcbiAgICAgICAgaWYgKGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50KSB7XHJcbiAgICAgICAgICAgIGhhbmRsZUxhYmVsQW5kQWRkaXRpb25hbENvbnRlbnRLZXlEb3duKGV2ZW50KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHRoZSB0cmVlIGl0ZW0gaXRzZWxmLCBoYW5kbGUga2V5IGRvd24gZm9yIHRoZSB0cmVlIGl0ZW1cclxuICAgICAgICBpZiAodGFyZ2V0ID09PSBjdXJyZW50VGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIGhhbmRsZUtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW1xyXG4gICAgICAgIGdldEludGVyYWN0aXZlRWxlbWVudHMsXHJcbiAgICAgICAgaW50ZXJhY3RpdmVFbGVtZW50cyxcclxuICAgICAgICBpdGVtSWQsXHJcbiAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24sXHJcbiAgICAgICAgaGFuZGxlS2V5RG93bixcclxuICAgIF0pO1xyXG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyZWVJdGVtQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogY29udGV4dFZhbHVlIH0sXHJcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IHN0eWxlOiB0cmVlSXRlbVN0eWxlcyB9LFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZFRyZWVJdGVtLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IFwiYXJpYS1leHBhbmRlZFwiOiBoYXNPd25UcmVlSXRlbXMgPyBleHBhbmRlZCA6IG51bGwsIFwiYXJpYS1zZWxlY3RlZFwiOiBzZWxlY3RlZEl0ZW0sIFwiYXJpYS1jaGVja2VkXCI6IHNob3VsZFNob3dDaGVja2JveCA/IGFyaWFDaGVja2VkVmFsdWUgOiBudWxsLCBcImRhdGEtdGVzdGlkXCI6IHRlc3RJZCwgZGVwdGg6IGl0ZW1EZXB0aCwgaGFzT3duVHJlZUl0ZW1zOiBoYXNPd25UcmVlSXRlbXMsIGlkOiBpdGVtSWQsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBpc1ZpcnR1YWxpemVkOiBoaWVyYXJjaHlDb250ZXh0LmlzVmlydHVhbGl6ZWQsIG5vZGVUeXBlOiBub2RlVHlwZSwgcm9sZTogXCJ0cmVlaXRlbVwiLCBzZWxlY3RhYmxlVHlwZTogc2VsZWN0YWJsZSwgc2VsZWN0ZWQ6IHNlbGVjdGVkSXRlbSwgdGhlbWU6IHRoZW1lLCB0YWJJbmRleDogdGFiSW5kZXgsIG9uS2V5RG93bjogb25LZXlEb3duSGFuZGxlciwgcmVmOiB0cmVlSXRlbVJlZiwgaG92ZXJDb2xvcjogaG92ZXJDb2xvciB9KSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkSXRlbVdyYXBwZXIsIHsgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1pdGVtd3JhcHBlcmAsIGRlcHRoOiBpdGVtRGVwdGgsIGhhc0FkZGl0aW9uYWxDb250ZW50OiAhIWFkZGl0aW9uYWxDb250ZW50LCBoYXNDdXN0b21JY29uU2l6ZTogISFleHBhbmRJY29uU3R5bGVzPy5zaXplLCBpZDogYCR7aXRlbUlkfS1pdGVtd3JhcHBlcmAsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBub2RlVHlwZTogbm9kZVR5cGUsIHNlbGVjdGFibGU6IHNlbGVjdGFibGUsIHN0eWxlOiBzdHlsZSwgdGhlbWU6IHRoZW1lLCByZWY6IG1lcmdlUmVmcyhyZWYsIGZvY3VzVHJhcEVsZW1lbnQpLCBvbkNsaWNrOiBoYW5kbGVPbkNsaWNrIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgaGFzT3duVHJlZUl0ZW1zICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZEV4cGFuZFdyYXBwZXIsIHsgc2l6ZTogZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSwgY29sb3I6IGV4cGFuZEljb25TdHlsZXM/LmNvbG9yLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWV4cGFuZGAsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBvbkNsaWNrOiBoYW5kbGVFeHBhbmRDbGljaywgdGhlbWU6IHRoZW1lIH0sIGV4cGFuZGVkID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRXhwYW5kTW9yZUljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZXZyb25SaWdodEljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSkpLFxyXG4gICAgICAgICAgICAgICAgICAgIHNob3VsZFNob3dDaGVja2JveCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZENoZWNrYm94V3JhcHBlciwgeyBoYXNBZGRpdGlvbmFsQ29udGVudDogISFhZGRpdGlvbmFsQ29udGVudCwgdGhlbWU6IHRoZW1lIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc093blRyZWVJdGVtcyA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEluZGV0ZXJtaW5hdGVDaGVja2JveCwgT2JqZWN0LmFzc2lnbih7fSwgY2hlY2tib3hQcm9wcywgeyBzdGF0dXM6IGNoZWNrZWRTdGF0dXMgfSkpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZWNrYm94LCBPYmplY3QuYXNzaWduKHt9LCBjaGVja2JveFByb3BzLCB7IGNoZWNrZWQ6IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4oY2hlY2tlZFN0YXR1cykgfSkpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsVGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpKSxcclxuICAgICAgICAgICAgICAgIGhhc0d1aWRlTGluZXMgJiZcclxuICAgICAgICAgICAgICAgICAgICAoaGllcmFyY2h5Q29udGV4dC5pc1ZpcnR1YWxpemVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbURlcHRoID4gMCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkuZnJvbSh7IGxlbmd0aDogaXRlbURlcHRoIH0sIChfLCBkKSA9PiAoUmVhY3QuY3JlYXRlRWxlbWVudChWaXJ0dWFsaXplZEd1aWRlTGluZSwgeyBrZXk6IGBndWlkZWxpbmUtJHtkfWAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tdmlydHVhbGl6ZWQtZ3VpZGVsaW5lLSR7ZH1gLCB0aGVtZTogdGhlbWUsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBzdHlsZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNldElubGluZVN0YXJ0OiBgY2FsYygke2NhbGN1bGF0ZU9mZnNldChUcmVlTm9kZVR5cGUuYnJhbmNoLCBkLCBmYWxzZSwgZmFsc2UsIHRydWUpfSArICR7ZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7ZXhwYW5kSWNvblN0eWxlcy5zaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fSAvIDIgLSAwLjVweClgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfSkpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGhhc093blRyZWVJdGVtcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWQgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoR3VpZGVMaW5lLCB7IFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tZ3VpZGVsaW5lYCwgdGhlbWU6IHRoZW1lLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgZ3VpZGVMaW5lTGVmdDogYGNhbGMoJHtjYWxjdWxhdGVPZmZzZXQoVHJlZU5vZGVUeXBlLmJyYW5jaCwgaXRlbURlcHRoLCBmYWxzZSwgZmFsc2UsIGZhbHNlKX0gKyAke2V4cGFuZEljb25TdHlsZXM/LnNpemUgIT09IHVuZGVmaW5lZCA/IGAke2V4cGFuZEljb25TdHlsZXMuc2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn0gLyAyIC0gMC41cHgpIGAgfSkpKSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LkNoaWxkcmVuLm1hcChjaGlsZHJlbiwgKGNoaWxkLCBjaGlsZEluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkPy50eXBlICE9PSBUcmVlSXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFVzZSB0aGUgc3RhYmxlLCBwcmUtbWVtb2lzZWQgdmFsdWUgKHNlZSBjaGlsZEhpZXJhcmNoaWVzIGFib3ZlKS5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXN0ZWRIaWVyYXJjaHlWYWx1ZSA9IGNoaWxkSGllcmFyY2hpZXNbY2hpbGRJbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyYW5zaXRpb24sIHsgaXNPcGVuOiBleHBhbmRlZCwgdW5tb3VudE9uRXhpdDogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwidWxcIiwgeyByb2xlOiBcImdyb3VwXCIgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0LlByb3ZpZGVyLCB7IGtleTogY2hpbGQucHJvcHMuaXRlbUlkLCB2YWx1ZTogbmVzdGVkSGllcmFyY2h5VmFsdWUgfSwgY2hpbGQpKSkpO1xyXG4gICAgICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICBpc01hY09TICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFZpc3VhbGx5SGlkZGVuLCBudWxsLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChBbm5vdW5jZSwgbnVsbCwgZXhwYW5kZWRcclxuICAgICAgICAgICAgICAgICAgICA/IGkxOG4uZXhwYW5zaW9uU3RhdGUuZXhwYW5kZWRcclxuICAgICAgICAgICAgICAgICAgICA6IGkxOG4uZXhwYW5zaW9uU3RhdGUuY29sbGFwc2VkKSkpKSkpO1xyXG59KTtcclxuLyoqXHJcbiAqIEN1c3RvbSBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciBSZWFjdC5tZW1vXHJcbiAqIE9ubHkgcmUtcmVuZGVyIFRyZWVJdGVtIHdoZW4gcmVsZXZhbnQgcHJvcHMgY2hhbmdlXHJcbiAqL1xyXG5mdW5jdGlvbiBhcmVQcm9wc0VxdWFsKHByZXZQcm9wcywgbmV4dFByb3BzKSB7XHJcbiAgICAvLyBDaGVjayBpZiBpdGVtSWQgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5pdGVtSWQgIT09IG5leHRQcm9wcy5pdGVtSWQpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBsYWJlbCBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmxhYmVsICE9PSBuZXh0UHJvcHMubGFiZWwpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBkaXNhYmxlZCBzdGF0ZSBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmlzRGlzYWJsZWQgIT09IG5leHRQcm9wcy5pc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgaWNvbiBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmljb24gIT09IG5leHRQcm9wcy5pY29uKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgYWRkaXRpb25hbCBjb250ZW50IGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuYWRkaXRpb25hbENvbnRlbnQgIT09IG5leHRQcm9wcy5hZGRpdGlvbmFsQ29udGVudCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGhvdmVyIGNvbG9yIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaG92ZXJDb2xvciAhPT0gbmV4dFByb3BzLmhvdmVyQ29sb3IpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBjaGlsZHJlbiBjaGFuZ2VkIChmb3IgbmVzdGVkIHRyZWUgaXRlbXMpXHJcbiAgICAvLyBVc2luZyB0eXBlIGFzc2VydGlvbiBzaW5jZSBjaGlsZHJlbiBjb21lcyBmcm9tIFJlYWN0LkhUTUxBdHRyaWJ1dGVzXHJcbiAgICBpZiAocHJldlByb3BzLmNoaWxkcmVuICE9PSBuZXh0UHJvcHMuY2hpbGRyZW4pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBzdHlsZXMgY2hhbmdlZFxyXG4gICAgLy8gVXNpbmcgdHlwZSBhc3NlcnRpb24gc2luY2Ugc3R5bGUgY29tZXMgZnJvbSBSZWFjdC5IVE1MQXR0cmlidXRlc1xyXG4gICAgaWYgKHByZXZQcm9wcy5zdHlsZSAhPT0gbmV4dFByb3BzLnN0eWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZQcm9wcy5sYWJlbFN0eWxlICE9PSBuZXh0UHJvcHMubGFiZWxTdHlsZSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChwcmV2UHJvcHMudHJlZUl0ZW1TdHlsZXMgIT09IG5leHRQcm9wcy50cmVlSXRlbVN0eWxlcykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIEFsbCByZWxldmFudCBwcm9wcyBhcmUgZXF1YWwsIHNraXAgcmUtcmVuZGVyXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxyXG4vKipcclxuICogTWVtb2l6ZWQgVHJlZUl0ZW0gY29tcG9uZW50XHJcbiAqIE9ubHkgcmUtcmVuZGVycyB3aGVuIHJlbGV2YW50IHByb3BzIGNoYW5nZSwgaW1wcm92aW5nIHBlcmZvcm1hbmNlIGZvciBsYXJnZSB0cmVlc1xyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFRyZWVJdGVtID0gUmVhY3QubWVtbyhUcmVlSXRlbUNvbXBvbmVudCwgYXJlUHJvcHNFcXVhbCk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRyZWVJdGVtLmpzLm1hcCJdfQ== */"));
|
|
29432
|
+
}, ";pointer-events:none;z-index:1;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4SDZCIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dCB9IGZyb20gJy4vVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdDb25maWdDb250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld0NvbmZpZ0NvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0V4cGFuc2lvbkNvbnRleHQgfSBmcm9tICcuL1RyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyBjYWxjdWxhdGVPZmZzZXQsIGdldFRyZWVJdGVtTGFiZWxDb2xvciwgZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yLCBUcmVlTm9kZVR5cGUsIH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IEkxOG5Db250ZXh0IH0gZnJvbSAnLi4vLi4nO1xyXG5pbXBvcnQgdXNlRGV2aWNlRGV0ZWN0IGZyb20gJy4uLy4uL2hvb2tzL3VzZURldmljZURldGVjdCc7XHJcbmltcG9ydCB7IHVzZUZvY3VzTG9jayB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZUZvY3VzTG9jayc7XHJcbmltcG9ydCB7IHVzZUlzSW52ZXJzZSB9IGZyb20gJy4uLy4uL2ludmVyc2UnO1xyXG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgfSBmcm9tICcuLi8uLi90aGVtZS9UaGVtZUNvbnRleHQnO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmltcG9ydCB7IEFubm91bmNlIH0gZnJvbSAnLi4vQW5ub3VuY2UnO1xyXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gJy4uL0NoZWNrYm94JztcclxuaW1wb3J0IHsgSW5kZXRlcm1pbmF0ZUNoZWNrYm94LCBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMsIH0gZnJvbSAnLi4vSW5kZXRlcm1pbmF0ZUNoZWNrYm94JztcclxuaW1wb3J0IHsgVHJhbnNpdGlvbiB9IGZyb20gJy4uL1RyYW5zaXRpb24nO1xyXG5pbXBvcnQgeyBWaXN1YWxseUhpZGRlbiB9IGZyb20gJy4uL1Zpc3VhbGx5SGlkZGVuJztcclxuY29uc3QgU3R5bGVkVHJlZUl0ZW0gPSBzdHlsZWQubGkgYFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDBcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWw3MDB9O1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIGN1cnNvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbVdyYXBwZXJDdXJzb3IocHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMuc2VsZWN0YWJsZVR5cGUsIHByb3BzLm5vZGVUeXBlKX07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcblxuICBwYWRkaW5nLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCBmYWxzZSwgZmFsc2UsIHByb3BzLmlzVmlydHVhbGl6ZWQpfTtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuXG4gICAgJiA+ICo6Zmlyc3QtY2hpbGQge1xuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkXG4gICAgICAgICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLmZvY3VzSW52ZXJzZVxyXG4gICAgOiBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXN9O1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIGZhbHNlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgbWFyZ2luLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCB0cnVlLCB0cnVlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgcGFkZGluZy1ibG9jay1lbmQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctYmxvY2stc3RhcnQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJlxyXG4gICAgY3NzIGBcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzLmlzSW52ZXJzZVxyXG4gICAgICAgID8gcHJvcHMudGhlbWUuY29sb3JzLnRlcnRpYXJ5NTAwXHJcbiAgICAgICAgOiBwcm9wcy50aGVtZS5jb2xvcnMucHJpbWFyeTUwMH07XG4gICAgICAgICAgYmxvY2stc2l6ZTogMTAwJTtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICBpbmxpbmUtc2l6ZTogJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ6IDA7XG4gICAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAwO1xuICAgICAgICB9XG4gICAgICBgfVxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBnZXRIb3ZlckJhY2tncm91bmQoe1xyXG4gICAgaXNEaXNhYmxlZDogcHJvcHMuaXNEaXNhYmxlZCxcclxuICAgIGhvdmVyQ29sb3I6IHByb3BzLmhvdmVyQ29sb3IsXHJcbiAgICBpc0ludmVyc2U6IHByb3BzLmlzSW52ZXJzZSxcclxuICAgIHRoZW1lOiBwcm9wcy50aGVtZSxcclxufSl9O1xuICAgIH1cbiAgfVxuYDtcclxuZnVuY3Rpb24gZ2V0SG92ZXJCYWNrZ3JvdW5kKHsgaXNEaXNhYmxlZCwgaG92ZXJDb2xvciwgaXNJbnZlcnNlLCB0aGVtZSB9KSB7XHJcbiAgICBpZiAoaXNEaXNhYmxlZClcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgaWYgKGhvdmVyQ29sb3IpXHJcbiAgICAgICAgcmV0dXJuIGhvdmVyQ29sb3I7XHJcbiAgICBjb25zdCB0cmFuc3BhcmVuY3kgPSBpc0ludmVyc2UgPyAwLjggOiAwLjk1O1xyXG4gICAgcmV0dXJuIHRyYW5zcGFyZW50aXplKHRyYW5zcGFyZW5jeSwgdGhlbWUuY29sb3JzLm5ldXRyYWw5MDApO1xyXG59XHJcbmNvbnN0IEljb25XcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBtYXJnaW4tbGVmdDogMDtcblxuICBzdmcge1xuICAgIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pY29uU2l6ZXMubWVkaXVtfXB4O1xuICAgIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgfVxuYDtcclxuY29uc3QgU3R5bGVkTGFiZWxXcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgd2lkdGg6IDEwMCU7XG5gO1xyXG5jb25zdCBTdHlsZWRFeHBhbmRXcmFwcGVyID0gc3R5bGVkLmRpdiBgXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgbWFyZ2luLXJpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuY29sb3IgfHxcclxuICAgIGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIHdpZHRoOiAkeyh7IHNpemUsIHRoZW1lIH0pID0+IHNpemUgIT09IHVuZGVmaW5lZCA/IGAke3NpemV9cHhgIDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDZ9O1xuICBoZWlnaHQ6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG5gO1xyXG5jb25zdCBHdWlkZUxpbmUgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDh9O1xuICBib3R0b206IDA7XG4gIGluc2V0LWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy5ndWlkZUxpbmVMZWZ0fTtcbiAgd2lkdGg6IDA7XG4gIGJvcmRlci1pbmxpbmUtc3RhcnQ6IDFweCBzb2xpZFxuICAgICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHRyYW5zcGFyZW50aXplKDAuNywgcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDApXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMzAwfTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHotaW5kZXg6IDE7XG5gO1xyXG5jb25zdCBWaXJ0dWFsaXplZEd1aWRlTGluZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogMDtcbiAgYm9yZGVyLWlubGluZS1zdGFydDogMXB4IHNvbGlkXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDEwMClcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwzMDB9O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW1Db21wb25lbnQgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XHJcbiAgICBjb25zdCB7IGFkZGl0aW9uYWxDb250ZW50LCBjaGlsZHJlbiwgaG92ZXJDb2xvciwgaWNvbiwgaW5kZXg6IGluZGV4UHJvcCwgbGFiZWwsIGxhYmVsU3R5bGUsIHN0eWxlLCB0ZXN0SWQsIHRvcExldmVsOiB0b3BMZXZlbFByb3AsIHRyZWVJdGVtU3R5bGVzLCAuLi5yZXN0IH0gPSBwcm9wcztcclxuICAgIGNvbnN0IHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xyXG4gICAgY29uc3QgaXNJbnZlcnNlID0gdXNlSXNJbnZlcnNlKCk7XHJcbiAgICAvLyBSZWFkIGhpZXJhcmNoeSBpbmZvcm1hdGlvbiBmcm9tIGNvbnRleHQgKHJlZHVjZXMgY2xvbmVFbGVtZW50IG92ZXJoZWFkKVxyXG4gICAgY29uc3QgaGllcmFyY2h5Q29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0KTtcclxuICAgIC8vIFVzZSBjb250ZXh0IHZhbHVlcyBpZiBwcm9wcyBhcmUgbm90IHByb3ZpZGVkIChmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSlcclxuICAgIGNvbnN0IGluZGV4ID0gaW5kZXhQcm9wICE9PSB1bmRlZmluZWQgPyBpbmRleFByb3AgOiBoaWVyYXJjaHlDb250ZXh0LmluZGV4O1xyXG4gICAgY29uc3QgdG9wTGV2ZWwgPSB0b3BMZXZlbFByb3AgIT09IHVuZGVmaW5lZCA/IHRvcExldmVsUHJvcCA6IGhpZXJhcmNoeUNvbnRleHQuaXNUb3BMZXZlbDtcclxuICAgIC8vIENvbnN1bWUgc3BsaXQgY29udGV4dHMgZm9yIHJlZHVjZWQgcmUtcmVuZGVyIHNjb3BlXHJcbiAgICBjb25zdCB7IGl0ZW1Ub0ZvY3VzIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGhhbmRsZUV4cGFuZGVkQ2hhbmdlIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGV4cGFuZEljb25TdHlsZXMsIGhhc0d1aWRlTGluZXMsIGhhc0ljb25zLCBpc1RvcExldmVsU2VsZWN0YWJsZSwgc2VsZWN0YWJsZSwgc2VsZWN0UGFyZW50cyA9IHRydWUsIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29uZmlnQ29udGV4dCk7XHJcbiAgICAvLyBQYXNzIHRoZSByZXNvbHZlZCB2YWx1ZXMgdG8gdXNlVHJlZUl0ZW1cclxuICAgIGNvbnN0IHByb3BzV2l0aEhpZXJhcmNoeSA9IHtcclxuICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICBpbmRleCxcclxuICAgICAgICB0b3BMZXZlbCxcclxuICAgICAgICBpdGVtRGVwdGg6IGhpZXJhcmNoeUNvbnRleHQuZGVwdGgsXHJcbiAgICAgICAgcGFyZW50RGVwdGg6IGhpZXJhcmNoeUNvbnRleHQucGFyZW50RGVwdGgsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyBjb250ZXh0VmFsdWUsIGhhbmRsZUNsaWNrLCBoYW5kbGVLZXlEb3duIH0gPSB1c2VUcmVlSXRlbShwcm9wc1dpdGhIaWVyYXJjaHksIGZvcndhcmRlZFJlZik7XHJcbiAgICBjb25zdCB7IGlzRGlzYWJsZWQgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IHsgaXNNYWNPUyB9ID0gdXNlRGV2aWNlRGV0ZWN0KCk7XHJcbiAgICBjb25zdCBpMThuID0gUmVhY3QudXNlQ29udGV4dChJMThuQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGNoZWNrYm94Q2hhbmdlSGFuZGxlciwgY2hlY2tlZFN0YXR1cywgZXhwYW5kZWQsIGhhc093blRyZWVJdGVtcywgaXRlbURlcHRoLCBpdGVtSWQsIHJlZiwgc2VsZWN0ZWRJdGVtcywgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IG5vZGVUeXBlID0gaGFzT3duVHJlZUl0ZW1zID8gVHJlZU5vZGVUeXBlLmJyYW5jaCA6IFRyZWVOb2RlVHlwZS5sZWFmO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZVxyXG4gICAgICAgID8gc2VsZWN0ZWRJdGVtcz8uWzBdPy5pdGVtSWQgPT09IGl0ZW1JZFxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IGFyaWFDaGVja2VkVmFsdWUgPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUubXVsdGlcclxuICAgICAgICA/IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5pbmRldGVybWluYXRlXHJcbiAgICAgICAgICAgID8gJ21peGVkJ1xyXG4gICAgICAgICAgICA6IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5jaGVja2VkXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgW2lzSW5zaWRlVHJlZUl0ZW0sIHNldElzSW5zaWRlVHJlZUl0ZW1dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgdHJlZUl0ZW1SZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XHJcbiAgICBjb25zdCBmb2N1c1RyYXBFbGVtZW50ID0gdXNlRm9jdXNMb2NrKGlzSW5zaWRlVHJlZUl0ZW0pO1xyXG4gICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50cyA9ICdidXR0b24sIFtyb2xlPVwiYnV0dG9uXCJdLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgYVtocmVmXSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJztcclxuICAgIGNvbnN0IGdldEludGVyYWN0aXZlRWxlbWVudHMgPSBSZWFjdC51c2VDYWxsYmFjaygoY29udGFpbmVyLCBzZWxlY3RvcikgPT4ge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSkuZmlsdGVyKGVsID0+ICFlbC5oYXNBdHRyaWJ1dGUoJ3RhYmluZGV4JykgfHxcclxuICAgICAgICAgICAgKGVsLnRhYkluZGV4ICE9PSB1bmRlZmluZWQgJiYgZWwudGFiSW5kZXggPj0gMCkpO1xyXG4gICAgfSwgW10pO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGFsbG93cyBmb3Iga2V5Ym9hcmQgbmF2aWdhdGlvbiB3aXRoaW4gdGhlIGxhYmVsIGFuZCBhZGRpdGlvbmFsIGNvbnRlbnQgb2YgYSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogWW91IGNhbiBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIHVzaW5nIHRoZSBgVGFiYCBrZXksIGFjdGl2YXRlIHRoZW0gd2l0aCBgRW50ZXJgIG9yIGBTcGFjZWAsXHJcbiAgICAgKiBhbmQgZXhpdCBvdXRzaWRlIGFuZCBmb2N1cyB0aGUgd2hvbGUgdHJlZSBpdGVtIHdpdGggYEVzY2FwZWAuXHJcbiAgICAgKiAqKi9cclxuICAgIGNvbnN0IGhhbmRsZUxhYmVsQW5kQWRkaXRpb25hbENvbnRlbnRLZXlEb3duID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBrZXksIHRhcmdldCwgY3VycmVudFRhcmdldCwgc2hpZnRLZXkgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gdGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNTcGFjZSA9IGtleSA9PT0gJyAnO1xyXG4gICAgICAgIGNvbnN0IGlzRXNjYXBlID0ga2V5ID09PSAnRXNjYXBlJztcclxuICAgICAgICBjb25zdCBpc1RhYiA9IGtleSA9PT0gJ1RhYic7XHJcbiAgICAgICAgY29uc3QgaXNBY3RpdmF0aW9uS2V5ID0gaXNFbnRlciB8fCBpc1NwYWNlO1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBgVGFiYCwgd2UgbmF2aWdhdGUgdGhyb3VnaCBpbnRlcmFjdGl2ZSBlbGVtZW50cyBpbnNpZGUgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmIChpc1RhYiAmJiBpc0luc2lkZVRyZWVJdGVtKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudHNMaXN0ID0gZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyhjdXJyZW50VGFyZ2V0LCBpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAgICAgLy8gRmlsdGVyIGxpc3Qgb2YgaW50ZXJhY3RpdmUgZWxlbWVudHMgd2hpY2ggYXJlIG9ubHkgaW5jbHVkZWQgZm9yIGN1cnJlbnQgdHJlZSBpdGVtXHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMgPSBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdC5maWx0ZXIoZWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2xvc2VzdFRyZWVJdGVtID0gZWwuY2xvc2VzdCgnW3JvbGU9XCJ0cmVlaXRlbVwiXScpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsb3Nlc3RUcmVlSXRlbSA9PT0gdHJlZUl0ZW1SZWYuY3VycmVudDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMuaW5kZXhPZihjdXJyZW50RWxlbWVudCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHNoaWZ0S2V5ID8gLTEgOiAxO1xyXG4gICAgICAgICAgICBjb25zdCB0b3RhbCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMubGVuZ3RoO1xyXG4gICAgICAgICAgICBjb25zdCBuZXh0SW5kZXggPSAoY3VycmVudEluZGV4ICsgZGlyZWN0aW9uICsgdG90YWwpICUgdG90YWw7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50c1tuZXh0SW5kZXhdO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudFRvRm9jdXMpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZWxlbWVudFRvRm9jdXMuZm9jdXMoKSwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBQcmVzc2luZyBgRW50ZXJgIG9yIGBTcGFjZWAgb24gYW4gaW50ZXJhY3RpdmUgZWxlbWVudCB3aWxsIHRyaWdnZXIgaXRzIGNsaWNrIGV2ZW50XHJcbiAgICAgICAgaWYgKGlzQWN0aXZhdGlvbktleSAmJiBpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgaW50ZXJhY3RpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE1vdmVzIGZvY3VzIG91dHNpZGUgdGhlIHRyZWUgaXRlbSBhbmQgZm9jdXNlcyB0aGUgdHJlZSBpdGVtIGl0c2VsZiB3aGVuIGBFc2NhcGVgIGlzIHByZXNzZWRcclxuICAgICAgICBpZiAoaXNFc2NhcGUpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHNldElzSW5zaWRlVHJlZUl0ZW0oZmFsc2UpO1xyXG4gICAgICAgICAgICBjb25zdCB0cmVlSXRlbU5vZGUgPSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICBpZiAodHJlZUl0ZW1Ob2RlKSB7XHJcbiAgICAgICAgICAgICAgICB0cmVlSXRlbU5vZGUuZm9jdXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzSW5zaWRlVHJlZUl0ZW1dKTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gUmVhY3QudXNlTWVtbygoKSA9PiBub2RlVHlwZSA9PT0gVHJlZU5vZGVUeXBlLmJyYW5jaCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEZvbGRlckljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KEFydGljbGVJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSksIFtub2RlVHlwZV0pO1xyXG4gICAgLy8gTWVtb2lzZSB0aGUgbGFiZWwgSlNYIHNvIHRoZSBgY2hlY2tib3hQcm9wc2AgbWVtbyBiZWxvdyBhY3R1YWxseSBoYXNcclxuICAgIC8vIGEgc3RhYmxlIGBsYWJlbFRleHRgIHJlZmVyZW5jZSBiZXR3ZWVuIHJlbmRlcnMuIFByZXZpb3VzbHkgdGhpc1xyXG4gICAgLy8gZWxlbWVudCB3YXMgcmUtY3JlYXRlZCBvbiBldmVyeSByZW5kZXIsIHdoaWNoIGZvcmNlZFxyXG4gICAgLy8gYGNoZWNrYm94UHJvcHNgIHRvIGFsc28gYmUgcmUtY3JlYXRlZCBhbmQgYW55IGZ1dHVyZSBSZWFjdC5tZW1vIG9uXHJcbiAgICAvLyBDaGVja2JveC9JbmRldGVybWluYXRlQ2hlY2tib3ggd291bGQgYWx3YXlzIGJhaWwgb3V0LlxyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gUmVhY3QudXNlTWVtbygoKSA9PiAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRMYWJlbFdyYXBwZXIsIHsgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgc3R5bGU6IGxhYmVsU3R5bGUsIGlkOiBgJHtpdGVtSWR9LWxhYmVsYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1sYWJlbGAgfSxcclxuICAgICAgICBoYXNJY29ucyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChJY29uV3JhcHBlciwgeyBpc0ludmVyc2U6IGlzSW52ZXJzZSwgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWljb25gIH0sIGljb24gfHwgZGVmYXVsdEljb24pKSxcclxuICAgICAgICBsYWJlbCkpLCBbXHJcbiAgICAgICAgdGhlbWUsXHJcbiAgICAgICAgaXNEaXNhYmxlZCxcclxuICAgICAgICBpc0ludmVyc2UsXHJcbiAgICAgICAgbGFiZWxTdHlsZSxcclxuICAgICAgICBpdGVtSWQsXHJcbiAgICAgICAgdGVzdElkLFxyXG4gICAgICAgIGhhc0ljb25zLFxyXG4gICAgICAgIGljb24sXHJcbiAgICAgICAgZGVmYXVsdEljb24sXHJcbiAgICAgICAgbGFiZWwsXHJcbiAgICBdKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBSZWFjdC51c2VNZW1vKCgpID0+IGFkZGl0aW9uYWxDb250ZW50ID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQWRkaXRpb25hbENvbnRlbnRXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaWQ6IGAke2l0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgIH0sIGFkZGl0aW9uYWxDb250ZW50KSkgOiBudWxsLCBbYWRkaXRpb25hbENvbnRlbnQsIHRoZW1lLCBpdGVtSWQsIHRlc3RJZF0pO1xyXG4gICAgLy8gU3RhYmxlIHBlci1jaGlsZCBoaWVyYXJjaHkgdmFsdWVzLiBUaGUgcmVmZXJlbmNlIG11c3Qgbm90IGNoYW5nZSBvblxyXG4gICAgLy8gcmUtcmVuZGVycyB0cmlnZ2VyZWQgYnkgVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0LCBvdGhlcndpc2UgZXZlcnlcclxuICAgIC8vIG5lc3RlZCBUcmVlSXRlbSByZS1yZW5kZXJzIHRocm91Z2ggdGhlIGNvbnRleHQgYW5kIFJlYWN0Lm1lbW8gaXNcclxuICAgIC8vIGRlZmVhdGVkLlxyXG4gICAgY29uc3QgY2hpbGRIaWVyYXJjaGllcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvdW50ID0gUmVhY3QuQ2hpbGRyZW4uY291bnQoY2hpbGRyZW4pO1xyXG4gICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShjb3VudCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGFycltpXSA9IHtcclxuICAgICAgICAgICAgICAgIGRlcHRoOiBpdGVtRGVwdGggKyAxLFxyXG4gICAgICAgICAgICAgICAgcGFyZW50RGVwdGg6IGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgIGlzVG9wTGV2ZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhcnI7XHJcbiAgICB9LCBbY2hpbGRyZW4sIGl0ZW1EZXB0aF0pO1xyXG4gICAgLy8gTWVtb2l6ZSBpbmxpbmUgc3R5bGUgb2JqZWN0cyB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IHJlLXJlbmRlcnNcclxuICAgIGNvbnN0IGNoZWNrYm94SW5wdXRTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHsgbWFyZ2luUmlnaHQ6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzIH0pLCBbdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDNdKTtcclxuICAgIGNvbnN0IGNoZWNrYm94TGFiZWxTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcclxuICAgICAgICBwYWRkaW5nOiAwLFxyXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICB9KSwgW10pO1xyXG4gICAgLy8gUHJvcHMgc2hhcmVkIGJ5IENoZWNrYm94IGFuZCBJbmRldGVybWluYXRlQ2hlY2tib3hcclxuICAgIGNvbnN0IGNoZWNrYm94UHJvcHMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XHJcbiAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaGlkZUZvY3VzOiB0cnVlLFxyXG4gICAgICAgIGlkOiBgJHtpdGVtSWR9LWNoZWNrYm94YCxcclxuICAgICAgICBpbnB1dFN0eWxlOiBjaGVja2JveElucHV0U3R5bGUsXHJcbiAgICAgICAgbGFiZWxTdHlsZTogY2hlY2tib3hMYWJlbFN0eWxlLFxyXG4gICAgICAgIGxhYmVsVGV4dDogbGFiZWxUZXh0LFxyXG4gICAgICAgIG9uQ2hhbmdlOiBjaGVja2JveENoYW5nZUhhbmRsZXIsXHJcbiAgICAgICAgdGFiSW5kZXg6IC0xLFxyXG4gICAgICAgIHRlc3RJZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICB9KSwgW1xyXG4gICAgICAgIGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaXRlbUlkLFxyXG4gICAgICAgIGNoZWNrYm94SW5wdXRTdHlsZSxcclxuICAgICAgICBjaGVja2JveExhYmVsU3R5bGUsXHJcbiAgICAgICAgbGFiZWxUZXh0LFxyXG4gICAgICAgIGNoZWNrYm94Q2hhbmdlSGFuZGxlcixcclxuICAgIF0pO1xyXG4gICAgY29uc3Qgb25FeHBhbmRlZENsaWNrZWQgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGhhbmRsZUV4cGFuZGVkQ2hhbmdlKGV2ZW50LCBpdGVtSWQpO1xyXG4gICAgfSwgW2hhbmRsZUV4cGFuZGVkQ2hhbmdlLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IGhhbmRsZUV4cGFuZENsaWNrID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKCFpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICBvbkV4cGFuZGVkQ2xpY2tlZChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIG9uRXhwYW5kZWRDbGlja2VkXSk7XHJcbiAgICBjb25zdCBoYW5kbGVPbkNsaWNrID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSBldmVudC50YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdCgnYnV0dG9uLCBbcm9sZT1cImJ1dHRvblwiXSwgYVtocmVmXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIFtyb2xlPVwibWVudWl0ZW1cIl0nKTtcclxuICAgICAgICAvLyBQcmV2ZW50aW5nIHNlbGVjdGluZyB0aGUgaXRlbSB3aGVuIGNsaWNraW5nIG9uIGludGVyYWN0aXZlIGVsZW1lbnRzIHdoZW4gYHNlbGVjdGFibGVgIGlzIGBzaW5nbGVgXHJcbiAgICAgICAgaWYgKGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBJZiBzZWxlY3RQYXJlbnRzIGlzIGZhbHNlIGFuZCB0aGlzIGlzIGEgcGFyZW50IGl0ZW0sIGhhbmRsZSBleHBhbmQvY29sbGFwc2UgaW5zdGVhZCBvZiBzZWxlY3Rpb25cclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZSAmJlxyXG4gICAgICAgICAgICAhc2VsZWN0UGFyZW50cyAmJlxyXG4gICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMpIHtcclxuICAgICAgICAgICAgb25FeHBhbmRlZENsaWNrZWQoZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEluIHNlbGVjdGFibGU9b2ZmIG1vZGUsIGNsaWNraW5nIGFueXdoZXJlIG9uIGEgcGFyZW50IGl0ZW0gdG9nZ2xlcyBleHBhbmQvY29sbGFwc2VcclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLm9mZiAmJiBoYXNPd25UcmVlSXRlbXMpIHtcclxuICAgICAgICAgICAgb25FeHBhbmRlZENsaWNrZWQoZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUuc2luZ2xlKSB7XHJcbiAgICAgICAgICAgIGhhbmRsZUNsaWNrKGV2ZW50LCBpdGVtSWQpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCB0YWJJbmRleCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpdGVtVG9Gb2N1cyA9PT0gaXRlbUlkID8gMCA6IC0xO1xyXG4gICAgfSwgW2lzRGlzYWJsZWQsIGl0ZW1Ub0ZvY3VzLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IHNob3VsZFNob3dDaGVja2JveCA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aSAmJlxyXG4gICAgICAgIChpc1RvcExldmVsU2VsZWN0YWJsZSAhPT0gZmFsc2UgfHwgIXRvcExldmVsKTtcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gd2l0aGluIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogUHJlc3NpbmcgYEN0cmwgKyBFbnRlcmAgb3IgYENvbW1hbmQgKyBFbnRlcmAgZm9jdXNlcyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudCB3aXRoaW4gdGhlIHRyZWUgaXRlbVxyXG4gICAgICogYW5kIGxvY2tzIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIElmIHRoZSBmb2N1cyBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaXQgaGFuZGxlcyBrZXkgZXZlbnRzIGZvciBpbnRlcmFjdGlvbiBlbGVtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBJdCBhbHNvIGhhbmRsZXMgdGhlIG90aGVyIGtleXMgdG8gdHJpZ2dlciB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIHRyZWUgaXRlbS5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3Qgb25LZXlEb3duSGFuZGxlciA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsga2V5LCB0YXJnZXQsIGN1cnJlbnRUYXJnZXQgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNDdHJsT3JDb21tYW5kID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5O1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybEVudGVyID0gaXNDdHJsT3JDb21tYW5kICYmIGlzRW50ZXI7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBDdHJsICsgRW50ZXIgb3IgQ29tbWFuZCArIEVudGVyLCBmb2N1cyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudFxyXG4gICAgICAgIC8vIGFuZCBsb2NrIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzQ3RybEVudGVyICYmIHRhcmdldCA9PT0gY3VycmVudFRhcmdldCkge1xyXG4gICAgICAgICAgICBzZXRJc0luc2lkZVRyZWVJdGVtKHRydWUpO1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdCA9IGdldEludGVyYWN0aXZlRWxlbWVudHMoY3VycmVudFRhcmdldCwgaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gaW50ZXJhY3RpdmVFbGVtZW50c0xpc3RbMF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gRW5zdXJlIHZhbGlkIENTUyBzZWxlY3RvcnMgYnkgZXNjYXBpbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChlLmcuLCBwZXJpb2RzIGluIGl0ZW1JZClcclxuICAgICAgICBjb25zdCBzYWZlSXRlbUlkID0gQ1NTLmVzY2FwZShpdGVtSWQpO1xyXG4gICAgICAgIGNvbnN0IGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50ID0gdGFyZ2V0LmNsb3Nlc3QoYCMke3NhZmVJdGVtSWR9LWxhYmVsLCAjJHtzYWZlSXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgKTtcclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHdpdGhpbiB0aGUgbGFiZWwgb3IgYWRkaXRpb25hbCBjb250ZW50LCBoYW5kbGUga2V5IGV2ZW50cyBmb3IgdGhvc2UgYXJlYXNcclxuICAgICAgICBpZiAoaXNXaXRoaW5MYWJlbE9yQWRkaXRpb25hbENvbnRlbnQpIHtcclxuICAgICAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaXMgdGhlIHRyZWUgaXRlbSBpdHNlbGYsIGhhbmRsZSBrZXkgZG93biBmb3IgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgaGFuZGxlS2V5RG93bihldmVudCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9LCBbXHJcbiAgICAgICAgZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyxcclxuICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnRzLFxyXG4gICAgICAgIGl0ZW1JZCxcclxuICAgICAgICBoYW5kbGVMYWJlbEFuZEFkZGl0aW9uYWxDb250ZW50S2V5RG93bixcclxuICAgICAgICBoYW5kbGVLZXlEb3duLFxyXG4gICAgXSk7XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBjb250ZXh0VmFsdWUgfSxcclxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgc3R5bGU6IHRyZWVJdGVtU3R5bGVzIH0sXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkVHJlZUl0ZW0sIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgXCJhcmlhLWV4cGFuZGVkXCI6IGhhc093blRyZWVJdGVtcyA/IGV4cGFuZGVkIDogbnVsbCwgXCJhcmlhLXNlbGVjdGVkXCI6IHNlbGVjdGVkSXRlbSwgXCJhcmlhLWNoZWNrZWRcIjogc2hvdWxkU2hvd0NoZWNrYm94ID8gYXJpYUNoZWNrZWRWYWx1ZSA6IG51bGwsIFwiZGF0YS10ZXN0aWRcIjogdGVzdElkLCBkZXB0aDogaXRlbURlcHRoLCBoYXNPd25UcmVlSXRlbXM6IGhhc093blRyZWVJdGVtcywgaWQ6IGl0ZW1JZCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIGlzVmlydHVhbGl6ZWQ6IGhpZXJhcmNoeUNvbnRleHQuaXNWaXJ0dWFsaXplZCwgbm9kZVR5cGU6IG5vZGVUeXBlLCByb2xlOiBcInRyZWVpdGVtXCIsIHNlbGVjdGFibGVUeXBlOiBzZWxlY3RhYmxlLCBzZWxlY3RlZDogc2VsZWN0ZWRJdGVtLCB0aGVtZTogdGhlbWUsIHRhYkluZGV4OiB0YWJJbmRleCwgb25LZXlEb3duOiBvbktleURvd25IYW5kbGVyLCByZWY6IHRyZWVJdGVtUmVmLCBob3ZlckNvbG9yOiBob3ZlckNvbG9yIH0pLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRJdGVtV3JhcHBlciwgeyBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCA/PyBpdGVtSWR9LWl0ZW13cmFwcGVyYCwgZGVwdGg6IGl0ZW1EZXB0aCwgaGFzQWRkaXRpb25hbENvbnRlbnQ6ICEhYWRkaXRpb25hbENvbnRlbnQsIGhhc0N1c3RvbUljb25TaXplOiAhIWV4cGFuZEljb25TdHlsZXM/LnNpemUsIGlkOiBgJHtpdGVtSWR9LWl0ZW13cmFwcGVyYCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG5vZGVUeXBlOiBub2RlVHlwZSwgc2VsZWN0YWJsZTogc2VsZWN0YWJsZSwgc3R5bGU6IHN0eWxlLCB0aGVtZTogdGhlbWUsIHJlZjogbWVyZ2VSZWZzKHJlZiwgZm9jdXNUcmFwRWxlbWVudCksIG9uQ2xpY2s6IGhhbmRsZU9uQ2xpY2sgfSxcclxuICAgICAgICAgICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkRXhwYW5kV3JhcHBlciwgeyBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplLCBjb2xvcjogZXhwYW5kSWNvblN0eWxlcz8uY29sb3IsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tZXhwYW5kYCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG9uQ2xpY2s6IGhhbmRsZUV4cGFuZENsaWNrLCB0aGVtZTogdGhlbWUgfSwgZXhwYW5kZWQgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChFeHBhbmRNb3JlSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIHNpemU6IGV4cGFuZEljb25TdHlsZXM/LnNpemUgfSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hldnJvblJpZ2h0SWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIHNpemU6IGV4cGFuZEljb25TdHlsZXM/LnNpemUgfSkpKSksXHJcbiAgICAgICAgICAgICAgICAgICAgc2hvdWxkU2hvd0NoZWNrYm94ID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkQ2hlY2tib3hXcmFwcGVyLCB7IGhhc0FkZGl0aW9uYWxDb250ZW50OiAhIWFkZGl0aW9uYWxDb250ZW50LCB0aGVtZTogdGhlbWUgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzT3duVHJlZUl0ZW1zID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW5kZXRlcm1pbmF0ZUNoZWNrYm94LCBPYmplY3QuYXNzaWduKHt9LCBjaGVja2JveFByb3BzLCB7IHN0YXR1czogY2hlY2tlZFN0YXR1cyB9KSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hlY2tib3gsIE9iamVjdC5hc3NpZ24oe30sIGNoZWNrYm94UHJvcHMsIHsgY2hlY2tlZDogY2hlY2tlZFN0YXR1c1RvQm9vbGVhbihjaGVja2VkU3RhdHVzKSB9KSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlSXRlbUFkZGl0aW9uYWxDb250ZW50KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxUZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlSXRlbUFkZGl0aW9uYWxDb250ZW50KSkpLFxyXG4gICAgICAgICAgICAgICAgaGFzR3VpZGVMaW5lcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIChoaWVyYXJjaHlDb250ZXh0LmlzVmlydHVhbGl6ZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBpdGVtRGVwdGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5mcm9tKHsgbGVuZ3RoOiBpdGVtRGVwdGggfSwgKF8sIGQpID0+IChSZWFjdC5jcmVhdGVFbGVtZW50KFZpcnR1YWxpemVkR3VpZGVMaW5lLCB7IGtleTogYGd1aWRlbGluZS0ke2R9YCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS12aXJ0dWFsaXplZC1ndWlkZWxpbmUtJHtkfWAsIHRoZW1lOiB0aGVtZSwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2V0SW5saW5lU3RhcnQ6IGBjYWxjKCR7Y2FsY3VsYXRlT2Zmc2V0KFRyZWVOb2RlVHlwZS5icmFuY2gsIGQsIGZhbHNlLCBmYWxzZSwgdHJ1ZSl9ICsgJHtleHBhbmRJY29uU3R5bGVzPy5zaXplICE9PSB1bmRlZmluZWQgPyBgJHtleHBhbmRJY29uU3R5bGVzLnNpemV9cHhgIDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDZ9IC8gMiAtIDAuNXB4KWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB9KSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaGFzT3duVHJlZUl0ZW1zICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRlZCAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChHdWlkZUxpbmUsIHsgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1ndWlkZWxpbmVgLCB0aGVtZTogdGhlbWUsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBndWlkZUxpbmVMZWZ0OiBgY2FsYygke2NhbGN1bGF0ZU9mZnNldChUcmVlTm9kZVR5cGUuYnJhbmNoLCBpdGVtRGVwdGgsIGZhbHNlLCBmYWxzZSwgZmFsc2UpfSArICR7ZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7ZXhwYW5kSWNvblN0eWxlcy5zaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fSAvIDIgLSAwLjVweCkgYCB9KSkpLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuQ2hpbGRyZW4ubWFwKGNoaWxkcmVuLCAoY2hpbGQsIGNoaWxkSW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQ/LnR5cGUgIT09IFRyZWVJdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVXNlIHRoZSBzdGFibGUsIHByZS1tZW1vaXNlZCB2YWx1ZSAoc2VlIGNoaWxkSGllcmFyY2hpZXMgYWJvdmUpLlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5lc3RlZEhpZXJhcmNoeVZhbHVlID0gY2hpbGRIaWVyYXJjaGllc1tjaGlsZEluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJhbnNpdGlvbiwgeyBpc09wZW46IGV4cGFuZGVkLCB1bm1vdW50T25FeGl0OiB0cnVlIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ1bFwiLCB7IHJvbGU6IFwiZ3JvdXBcIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUcmVlSXRlbUhpZXJhcmNoeUNvbnRleHQuUHJvdmlkZXIsIHsga2V5OiBjaGlsZC5wcm9wcy5pdGVtSWQsIHZhbHVlOiBuZXN0ZWRIaWVyYXJjaHlWYWx1ZSB9LCBjaGlsZCkpKSk7XHJcbiAgICAgICAgICAgICAgICB9KSksXHJcbiAgICAgICAgICAgIGlzTWFjT1MgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVmlzdWFsbHlIaWRkZW4sIG51bGwsXHJcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEFubm91bmNlLCBudWxsLCBleHBhbmRlZFxyXG4gICAgICAgICAgICAgICAgICAgID8gaTE4bi5leHBhbnNpb25TdGF0ZS5leHBhbmRlZFxyXG4gICAgICAgICAgICAgICAgICAgIDogaTE4bi5leHBhbnNpb25TdGF0ZS5jb2xsYXBzZWQpKSkpKSk7XHJcbn0pO1xyXG4vKipcclxuICogQ3VzdG9tIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIFJlYWN0Lm1lbW9cclxuICogT25seSByZS1yZW5kZXIgVHJlZUl0ZW0gd2hlbiByZWxldmFudCBwcm9wcyBjaGFuZ2VcclxuICovXHJcbmZ1bmN0aW9uIGFyZVByb3BzRXF1YWwocHJldlByb3BzLCBuZXh0UHJvcHMpIHtcclxuICAgIC8vIENoZWNrIGlmIGl0ZW1JZCBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLml0ZW1JZCAhPT0gbmV4dFByb3BzLml0ZW1JZCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGxhYmVsIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMubGFiZWwgIT09IG5leHRQcm9wcy5sYWJlbCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGRpc2FibGVkIHN0YXRlIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaXNEaXNhYmxlZCAhPT0gbmV4dFByb3BzLmlzRGlzYWJsZWQpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBpY29uIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaWNvbiAhPT0gbmV4dFByb3BzLmljb24pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBhZGRpdGlvbmFsIGNvbnRlbnQgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5hZGRpdGlvbmFsQ29udGVudCAhPT0gbmV4dFByb3BzLmFkZGl0aW9uYWxDb250ZW50KSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgaG92ZXIgY29sb3IgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5ob3ZlckNvbG9yICE9PSBuZXh0UHJvcHMuaG92ZXJDb2xvcikge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGNoaWxkcmVuIGNoYW5nZWQgKGZvciBuZXN0ZWQgdHJlZSBpdGVtcylcclxuICAgIC8vIFVzaW5nIHR5cGUgYXNzZXJ0aW9uIHNpbmNlIGNoaWxkcmVuIGNvbWVzIGZyb20gUmVhY3QuSFRNTEF0dHJpYnV0ZXNcclxuICAgIGlmIChwcmV2UHJvcHMuY2hpbGRyZW4gIT09IG5leHRQcm9wcy5jaGlsZHJlbikge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIHN0eWxlcyBjaGFuZ2VkXHJcbiAgICAvLyBVc2luZyB0eXBlIGFzc2VydGlvbiBzaW5jZSBzdHlsZSBjb21lcyBmcm9tIFJlYWN0LkhUTUxBdHRyaWJ1dGVzXHJcbiAgICBpZiAocHJldlByb3BzLnN0eWxlICE9PSBuZXh0UHJvcHMuc3R5bGUpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAocHJldlByb3BzLmxhYmVsU3R5bGUgIT09IG5leHRQcm9wcy5sYWJlbFN0eWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZQcm9wcy50cmVlSXRlbVN0eWxlcyAhPT0gbmV4dFByb3BzLnRyZWVJdGVtU3R5bGVzKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQWxsIHJlbGV2YW50IHByb3BzIGFyZSBlcXVhbCwgc2tpcCByZS1yZW5kZXJcclxuICAgIHJldHVybiB0cnVlO1xyXG59XHJcbi8qKlxyXG4gKiBNZW1vaXplZCBUcmVlSXRlbSBjb21wb25lbnRcclxuICogT25seSByZS1yZW5kZXJzIHdoZW4gcmVsZXZhbnQgcHJvcHMgY2hhbmdlLCBpbXByb3ZpbmcgcGVyZm9ybWFuY2UgZm9yIGxhcmdlIHRyZWVzXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW0gPSBSZWFjdC5tZW1vKFRyZWVJdGVtQ29tcG9uZW50LCBhcmVQcm9wc0VxdWFsKTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VHJlZUl0ZW0uanMubWFwIl19 */"));
|
|
29431
29433
|
/*#__PURE__*/createStyled("div", {
|
|
29432
29434
|
target: "e1xiryew3",
|
|
29433
29435
|
label: "VirtualizedGuideLine"
|
|
29434
29436
|
})("position:absolute;top:0;bottom:0;width:0;border-inline-start:1px solid ", function (props) {
|
|
29435
29437
|
return props.isInverse ? curriedTransparentize(0.7, props.theme.colors.neutral100) : props.theme.colors.neutral300;
|
|
29436
|
-
}, ";pointer-events:none;z-index:1;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEySXdDIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dCB9IGZyb20gJy4vVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdDb25maWdDb250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld0NvbmZpZ0NvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0V4cGFuc2lvbkNvbnRleHQgfSBmcm9tICcuL1RyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyBjYWxjdWxhdGVPZmZzZXQsIGdldFRyZWVJdGVtTGFiZWxDb2xvciwgZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yLCBUcmVlTm9kZVR5cGUsIH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IEkxOG5Db250ZXh0IH0gZnJvbSAnLi4vLi4nO1xyXG5pbXBvcnQgdXNlRGV2aWNlRGV0ZWN0IGZyb20gJy4uLy4uL2hvb2tzL3VzZURldmljZURldGVjdCc7XHJcbmltcG9ydCB7IHVzZUZvY3VzTG9jayB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZUZvY3VzTG9jayc7XHJcbmltcG9ydCB7IHVzZUlzSW52ZXJzZSB9IGZyb20gJy4uLy4uL2ludmVyc2UnO1xyXG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgfSBmcm9tICcuLi8uLi90aGVtZS9UaGVtZUNvbnRleHQnO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmltcG9ydCB7IEFubm91bmNlIH0gZnJvbSAnLi4vQW5ub3VuY2UnO1xyXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gJy4uL0NoZWNrYm94JztcclxuaW1wb3J0IHsgSW5kZXRlcm1pbmF0ZUNoZWNrYm94LCBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMsIH0gZnJvbSAnLi4vSW5kZXRlcm1pbmF0ZUNoZWNrYm94JztcclxuaW1wb3J0IHsgVHJhbnNpdGlvbiB9IGZyb20gJy4uL1RyYW5zaXRpb24nO1xyXG5pbXBvcnQgeyBWaXN1YWxseUhpZGRlbiB9IGZyb20gJy4uL1Zpc3VhbGx5SGlkZGVuJztcclxuY29uc3QgU3R5bGVkVHJlZUl0ZW0gPSBzdHlsZWQubGkgYFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDBcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWw3MDB9O1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIGN1cnNvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbVdyYXBwZXJDdXJzb3IocHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMuc2VsZWN0YWJsZVR5cGUsIHByb3BzLm5vZGVUeXBlKX07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcblxuICBwYWRkaW5nLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCBmYWxzZSwgZmFsc2UsIHByb3BzLmlzVmlydHVhbGl6ZWQpfTtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuXG4gICAgJiA+ICo6Zmlyc3QtY2hpbGQge1xuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkXG4gICAgICAgICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLmZvY3VzSW52ZXJzZVxyXG4gICAgOiBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXN9O1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIGZhbHNlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgbWFyZ2luLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCB0cnVlLCB0cnVlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgcGFkZGluZy1ibG9jay1lbmQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctYmxvY2stc3RhcnQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJlxyXG4gICAgY3NzIGBcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzLmlzSW52ZXJzZVxyXG4gICAgICAgID8gcHJvcHMudGhlbWUuY29sb3JzLnRlcnRpYXJ5NTAwXHJcbiAgICAgICAgOiBwcm9wcy50aGVtZS5jb2xvcnMucHJpbWFyeTUwMH07XG4gICAgICAgICAgYmxvY2stc2l6ZTogMTAwJTtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICBpbmxpbmUtc2l6ZTogJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ6IDA7XG4gICAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAwO1xuICAgICAgICB9XG4gICAgICBgfVxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBnZXRIb3ZlckJhY2tncm91bmQoe1xyXG4gICAgaXNEaXNhYmxlZDogcHJvcHMuaXNEaXNhYmxlZCxcclxuICAgIGhvdmVyQ29sb3I6IHByb3BzLmhvdmVyQ29sb3IsXHJcbiAgICBpc0ludmVyc2U6IHByb3BzLmlzSW52ZXJzZSxcclxuICAgIHRoZW1lOiBwcm9wcy50aGVtZSxcclxufSl9O1xuICAgIH1cbiAgfVxuYDtcclxuZnVuY3Rpb24gZ2V0SG92ZXJCYWNrZ3JvdW5kKHsgaXNEaXNhYmxlZCwgaG92ZXJDb2xvciwgaXNJbnZlcnNlLCB0aGVtZSB9KSB7XHJcbiAgICBpZiAoaXNEaXNhYmxlZClcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgaWYgKGhvdmVyQ29sb3IpXHJcbiAgICAgICAgcmV0dXJuIGhvdmVyQ29sb3I7XHJcbiAgICBjb25zdCB0cmFuc3BhcmVuY3kgPSBpc0ludmVyc2UgPyAwLjggOiAwLjk1O1xyXG4gICAgcmV0dXJuIHRyYW5zcGFyZW50aXplKHRyYW5zcGFyZW5jeSwgdGhlbWUuY29sb3JzLm5ldXRyYWw5MDApO1xyXG59XHJcbmNvbnN0IEljb25XcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBtYXJnaW4tbGVmdDogMDtcblxuICBzdmcge1xuICAgIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pY29uU2l6ZXMubWVkaXVtfXB4O1xuICAgIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgfVxuYDtcclxuY29uc3QgU3R5bGVkTGFiZWxXcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgd2lkdGg6IDEwMCU7XG5gO1xyXG5jb25zdCBTdHlsZWRFeHBhbmRXcmFwcGVyID0gc3R5bGVkLmRpdiBgXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgbWFyZ2luLXJpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuY29sb3IgfHxcclxuICAgIGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIHdpZHRoOiAkeyh7IHNpemUsIHRoZW1lIH0pID0+IHNpemUgIT09IHVuZGVmaW5lZCA/IGAke3NpemV9cHhgIDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDZ9O1xuICBoZWlnaHQ6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG5gO1xyXG5jb25zdCBHdWlkZUxpbmUgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDh9O1xuICBib3R0b206IDA7XG4gIGluc2V0LWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy5ndWlkZUxpbmVMZWZ0fTtcbiAgd2lkdGg6IDA7XG4gIGJvcmRlci1pbmxpbmUtc3RhcnQ6IDFweCBzb2xpZFxuICAgICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHRyYW5zcGFyZW50aXplKDAuNywgcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDApXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMzAwfTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHotaW5kZXg6IDE7XG5gO1xyXG5jb25zdCBWaXJ0dWFsaXplZEd1aWRlTGluZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogMDtcbiAgYm9yZGVyLWlubGluZS1zdGFydDogMXB4IHNvbGlkXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDEwMClcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwzMDB9O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW1Db21wb25lbnQgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XHJcbiAgICBjb25zdCB7IGFkZGl0aW9uYWxDb250ZW50LCBjaGlsZHJlbiwgaG92ZXJDb2xvciwgaWNvbiwgaW5kZXg6IGluZGV4UHJvcCwgbGFiZWwsIGxhYmVsU3R5bGUsIHN0eWxlLCB0ZXN0SWQsIHRvcExldmVsOiB0b3BMZXZlbFByb3AsIHRyZWVJdGVtU3R5bGVzLCAuLi5yZXN0IH0gPSBwcm9wcztcclxuICAgIGNvbnN0IHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xyXG4gICAgY29uc3QgaXNJbnZlcnNlID0gdXNlSXNJbnZlcnNlKCk7XHJcbiAgICAvLyBSZWFkIGhpZXJhcmNoeSBpbmZvcm1hdGlvbiBmcm9tIGNvbnRleHQgKHJlZHVjZXMgY2xvbmVFbGVtZW50IG92ZXJoZWFkKVxyXG4gICAgY29uc3QgaGllcmFyY2h5Q29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0KTtcclxuICAgIC8vIFVzZSBjb250ZXh0IHZhbHVlcyBpZiBwcm9wcyBhcmUgbm90IHByb3ZpZGVkIChmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSlcclxuICAgIGNvbnN0IGluZGV4ID0gaW5kZXhQcm9wICE9PSB1bmRlZmluZWQgPyBpbmRleFByb3AgOiBoaWVyYXJjaHlDb250ZXh0LmluZGV4O1xyXG4gICAgY29uc3QgdG9wTGV2ZWwgPSB0b3BMZXZlbFByb3AgIT09IHVuZGVmaW5lZCA/IHRvcExldmVsUHJvcCA6IGhpZXJhcmNoeUNvbnRleHQuaXNUb3BMZXZlbDtcclxuICAgIC8vIENvbnN1bWUgc3BsaXQgY29udGV4dHMgZm9yIHJlZHVjZWQgcmUtcmVuZGVyIHNjb3BlXHJcbiAgICBjb25zdCB7IGl0ZW1Ub0ZvY3VzIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGhhbmRsZUV4cGFuZGVkQ2hhbmdlIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGV4cGFuZEljb25TdHlsZXMsIGhhc0d1aWRlTGluZXMsIGhhc0ljb25zLCBpc1RvcExldmVsU2VsZWN0YWJsZSwgc2VsZWN0YWJsZSwgc2VsZWN0UGFyZW50cyA9IHRydWUsIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29uZmlnQ29udGV4dCk7XHJcbiAgICAvLyBQYXNzIHRoZSByZXNvbHZlZCB2YWx1ZXMgdG8gdXNlVHJlZUl0ZW1cclxuICAgIGNvbnN0IHByb3BzV2l0aEhpZXJhcmNoeSA9IHtcclxuICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICBpbmRleCxcclxuICAgICAgICB0b3BMZXZlbCxcclxuICAgICAgICBpdGVtRGVwdGg6IGhpZXJhcmNoeUNvbnRleHQuZGVwdGgsXHJcbiAgICAgICAgcGFyZW50RGVwdGg6IGhpZXJhcmNoeUNvbnRleHQucGFyZW50RGVwdGgsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyBjb250ZXh0VmFsdWUsIGhhbmRsZUNsaWNrLCBoYW5kbGVLZXlEb3duIH0gPSB1c2VUcmVlSXRlbShwcm9wc1dpdGhIaWVyYXJjaHksIGZvcndhcmRlZFJlZik7XHJcbiAgICBjb25zdCB7IGlzRGlzYWJsZWQgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IHsgaXNNYWNPUyB9ID0gdXNlRGV2aWNlRGV0ZWN0KCk7XHJcbiAgICBjb25zdCBpMThuID0gUmVhY3QudXNlQ29udGV4dChJMThuQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGNoZWNrYm94Q2hhbmdlSGFuZGxlciwgY2hlY2tlZFN0YXR1cywgZXhwYW5kZWQsIGhhc093blRyZWVJdGVtcywgaXRlbURlcHRoLCBpdGVtSWQsIHJlZiwgc2VsZWN0ZWRJdGVtcywgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IG5vZGVUeXBlID0gaGFzT3duVHJlZUl0ZW1zID8gVHJlZU5vZGVUeXBlLmJyYW5jaCA6IFRyZWVOb2RlVHlwZS5sZWFmO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZVxyXG4gICAgICAgID8gc2VsZWN0ZWRJdGVtcz8uWzBdPy5pdGVtSWQgPT09IGl0ZW1JZFxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IGFyaWFDaGVja2VkVmFsdWUgPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUubXVsdGlcclxuICAgICAgICA/IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5pbmRldGVybWluYXRlXHJcbiAgICAgICAgICAgID8gJ21peGVkJ1xyXG4gICAgICAgICAgICA6IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5jaGVja2VkXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgW2lzSW5zaWRlVHJlZUl0ZW0sIHNldElzSW5zaWRlVHJlZUl0ZW1dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgdHJlZUl0ZW1SZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XHJcbiAgICBjb25zdCBmb2N1c1RyYXBFbGVtZW50ID0gdXNlRm9jdXNMb2NrKGlzSW5zaWRlVHJlZUl0ZW0pO1xyXG4gICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50cyA9ICdidXR0b24sIFtyb2xlPVwiYnV0dG9uXCJdLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgYVtocmVmXSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJztcclxuICAgIGNvbnN0IGdldEludGVyYWN0aXZlRWxlbWVudHMgPSBSZWFjdC51c2VDYWxsYmFjaygoY29udGFpbmVyLCBzZWxlY3RvcikgPT4ge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSkuZmlsdGVyKGVsID0+ICFlbC5oYXNBdHRyaWJ1dGUoJ3RhYmluZGV4JykgfHxcclxuICAgICAgICAgICAgKGVsLnRhYkluZGV4ICE9PSB1bmRlZmluZWQgJiYgZWwudGFiSW5kZXggPj0gMCkpO1xyXG4gICAgfSwgW10pO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGFsbG93cyBmb3Iga2V5Ym9hcmQgbmF2aWdhdGlvbiB3aXRoaW4gdGhlIGxhYmVsIGFuZCBhZGRpdGlvbmFsIGNvbnRlbnQgb2YgYSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogWW91IGNhbiBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIHVzaW5nIHRoZSBgVGFiYCBrZXksIGFjdGl2YXRlIHRoZW0gd2l0aCBgRW50ZXJgIG9yIGBTcGFjZWAsXHJcbiAgICAgKiBhbmQgZXhpdCBvdXRzaWRlIGFuZCBmb2N1cyB0aGUgd2hvbGUgdHJlZSBpdGVtIHdpdGggYEVzY2FwZWAuXHJcbiAgICAgKiAqKi9cclxuICAgIGNvbnN0IGhhbmRsZUxhYmVsQW5kQWRkaXRpb25hbENvbnRlbnRLZXlEb3duID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBrZXksIHRhcmdldCwgY3VycmVudFRhcmdldCwgc2hpZnRLZXkgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gdGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNTcGFjZSA9IGtleSA9PT0gJyAnO1xyXG4gICAgICAgIGNvbnN0IGlzRXNjYXBlID0ga2V5ID09PSAnRXNjYXBlJztcclxuICAgICAgICBjb25zdCBpc1RhYiA9IGtleSA9PT0gJ1RhYic7XHJcbiAgICAgICAgY29uc3QgaXNBY3RpdmF0aW9uS2V5ID0gaXNFbnRlciB8fCBpc1NwYWNlO1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBgVGFiYCwgd2UgbmF2aWdhdGUgdGhyb3VnaCBpbnRlcmFjdGl2ZSBlbGVtZW50cyBpbnNpZGUgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmIChpc1RhYiAmJiBpc0luc2lkZVRyZWVJdGVtKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudHNMaXN0ID0gZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyhjdXJyZW50VGFyZ2V0LCBpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAgICAgLy8gRmlsdGVyIGxpc3Qgb2YgaW50ZXJhY3RpdmUgZWxlbWVudHMgd2hpY2ggYXJlIG9ubHkgaW5jbHVkZWQgZm9yIGN1cnJlbnQgdHJlZSBpdGVtXHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMgPSBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdC5maWx0ZXIoZWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2xvc2VzdFRyZWVJdGVtID0gZWwuY2xvc2VzdCgnW3JvbGU9XCJ0cmVlaXRlbVwiXScpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsb3Nlc3RUcmVlSXRlbSA9PT0gdHJlZUl0ZW1SZWYuY3VycmVudDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMuaW5kZXhPZihjdXJyZW50RWxlbWVudCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHNoaWZ0S2V5ID8gLTEgOiAxO1xyXG4gICAgICAgICAgICBjb25zdCB0b3RhbCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMubGVuZ3RoO1xyXG4gICAgICAgICAgICBjb25zdCBuZXh0SW5kZXggPSAoY3VycmVudEluZGV4ICsgZGlyZWN0aW9uICsgdG90YWwpICUgdG90YWw7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50c1tuZXh0SW5kZXhdO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudFRvRm9jdXMpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZWxlbWVudFRvRm9jdXMuZm9jdXMoKSwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBQcmVzc2luZyBgRW50ZXJgIG9yIGBTcGFjZWAgb24gYW4gaW50ZXJhY3RpdmUgZWxlbWVudCB3aWxsIHRyaWdnZXIgaXRzIGNsaWNrIGV2ZW50XHJcbiAgICAgICAgaWYgKGlzQWN0aXZhdGlvbktleSAmJiBpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgaW50ZXJhY3RpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE1vdmVzIGZvY3VzIG91dHNpZGUgdGhlIHRyZWUgaXRlbSBhbmQgZm9jdXNlcyB0aGUgdHJlZSBpdGVtIGl0c2VsZiB3aGVuIGBFc2NhcGVgIGlzIHByZXNzZWRcclxuICAgICAgICBpZiAoaXNFc2NhcGUpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHNldElzSW5zaWRlVHJlZUl0ZW0oZmFsc2UpO1xyXG4gICAgICAgICAgICBjb25zdCB0cmVlSXRlbU5vZGUgPSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICBpZiAodHJlZUl0ZW1Ob2RlKSB7XHJcbiAgICAgICAgICAgICAgICB0cmVlSXRlbU5vZGUuZm9jdXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzSW5zaWRlVHJlZUl0ZW1dKTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gUmVhY3QudXNlTWVtbygoKSA9PiBub2RlVHlwZSA9PT0gVHJlZU5vZGVUeXBlLmJyYW5jaCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEZvbGRlckljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KEFydGljbGVJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSksIFtub2RlVHlwZV0pO1xyXG4gICAgLy8gTWVtb2lzZSB0aGUgbGFiZWwgSlNYIHNvIHRoZSBgY2hlY2tib3hQcm9wc2AgbWVtbyBiZWxvdyBhY3R1YWxseSBoYXNcclxuICAgIC8vIGEgc3RhYmxlIGBsYWJlbFRleHRgIHJlZmVyZW5jZSBiZXR3ZWVuIHJlbmRlcnMuIFByZXZpb3VzbHkgdGhpc1xyXG4gICAgLy8gZWxlbWVudCB3YXMgcmUtY3JlYXRlZCBvbiBldmVyeSByZW5kZXIsIHdoaWNoIGZvcmNlZFxyXG4gICAgLy8gYGNoZWNrYm94UHJvcHNgIHRvIGFsc28gYmUgcmUtY3JlYXRlZCBhbmQgYW55IGZ1dHVyZSBSZWFjdC5tZW1vIG9uXHJcbiAgICAvLyBDaGVja2JveC9JbmRldGVybWluYXRlQ2hlY2tib3ggd291bGQgYWx3YXlzIGJhaWwgb3V0LlxyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gUmVhY3QudXNlTWVtbygoKSA9PiAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRMYWJlbFdyYXBwZXIsIHsgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgc3R5bGU6IGxhYmVsU3R5bGUsIGlkOiBgJHtpdGVtSWR9LWxhYmVsYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1sYWJlbGAgfSxcclxuICAgICAgICBoYXNJY29ucyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChJY29uV3JhcHBlciwgeyBpc0ludmVyc2U6IGlzSW52ZXJzZSwgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWljb25gIH0sIGljb24gfHwgZGVmYXVsdEljb24pKSxcclxuICAgICAgICBsYWJlbCkpLCBbXHJcbiAgICAgICAgdGhlbWUsXHJcbiAgICAgICAgaXNEaXNhYmxlZCxcclxuICAgICAgICBpc0ludmVyc2UsXHJcbiAgICAgICAgbGFiZWxTdHlsZSxcclxuICAgICAgICBpdGVtSWQsXHJcbiAgICAgICAgdGVzdElkLFxyXG4gICAgICAgIGhhc0ljb25zLFxyXG4gICAgICAgIGljb24sXHJcbiAgICAgICAgZGVmYXVsdEljb24sXHJcbiAgICAgICAgbGFiZWwsXHJcbiAgICBdKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBSZWFjdC51c2VNZW1vKCgpID0+IGFkZGl0aW9uYWxDb250ZW50ID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQWRkaXRpb25hbENvbnRlbnRXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaWQ6IGAke2l0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgIH0sIGFkZGl0aW9uYWxDb250ZW50KSkgOiBudWxsLCBbYWRkaXRpb25hbENvbnRlbnQsIHRoZW1lLCBpdGVtSWQsIHRlc3RJZF0pO1xyXG4gICAgLy8gU3RhYmxlIHBlci1jaGlsZCBoaWVyYXJjaHkgdmFsdWVzLiBUaGUgcmVmZXJlbmNlIG11c3Qgbm90IGNoYW5nZSBvblxyXG4gICAgLy8gcmUtcmVuZGVycyB0cmlnZ2VyZWQgYnkgVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0LCBvdGhlcndpc2UgZXZlcnlcclxuICAgIC8vIG5lc3RlZCBUcmVlSXRlbSByZS1yZW5kZXJzIHRocm91Z2ggdGhlIGNvbnRleHQgYW5kIFJlYWN0Lm1lbW8gaXNcclxuICAgIC8vIGRlZmVhdGVkLlxyXG4gICAgY29uc3QgY2hpbGRIaWVyYXJjaGllcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvdW50ID0gUmVhY3QuQ2hpbGRyZW4uY291bnQoY2hpbGRyZW4pO1xyXG4gICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShjb3VudCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGFycltpXSA9IHtcclxuICAgICAgICAgICAgICAgIGRlcHRoOiBpdGVtRGVwdGggKyAxLFxyXG4gICAgICAgICAgICAgICAgcGFyZW50RGVwdGg6IGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgIGlzVG9wTGV2ZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhcnI7XHJcbiAgICB9LCBbY2hpbGRyZW4sIGl0ZW1EZXB0aF0pO1xyXG4gICAgLy8gTWVtb2l6ZSBpbmxpbmUgc3R5bGUgb2JqZWN0cyB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IHJlLXJlbmRlcnNcclxuICAgIGNvbnN0IGNoZWNrYm94SW5wdXRTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHsgbWFyZ2luUmlnaHQ6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzIH0pLCBbdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDNdKTtcclxuICAgIGNvbnN0IGNoZWNrYm94TGFiZWxTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcclxuICAgICAgICBwYWRkaW5nOiAwLFxyXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICB9KSwgW10pO1xyXG4gICAgLy8gUHJvcHMgc2hhcmVkIGJ5IENoZWNrYm94IGFuZCBJbmRldGVybWluYXRlQ2hlY2tib3hcclxuICAgIGNvbnN0IGNoZWNrYm94UHJvcHMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XHJcbiAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaGlkZUZvY3VzOiB0cnVlLFxyXG4gICAgICAgIGlkOiBgJHtpdGVtSWR9LWNoZWNrYm94YCxcclxuICAgICAgICBpbnB1dFN0eWxlOiBjaGVja2JveElucHV0U3R5bGUsXHJcbiAgICAgICAgbGFiZWxTdHlsZTogY2hlY2tib3hMYWJlbFN0eWxlLFxyXG4gICAgICAgIGxhYmVsVGV4dDogbGFiZWxUZXh0LFxyXG4gICAgICAgIG9uQ2hhbmdlOiBjaGVja2JveENoYW5nZUhhbmRsZXIsXHJcbiAgICAgICAgdGFiSW5kZXg6IC0xLFxyXG4gICAgICAgIHRlc3RJZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICB9KSwgW1xyXG4gICAgICAgIGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaXRlbUlkLFxyXG4gICAgICAgIGNoZWNrYm94SW5wdXRTdHlsZSxcclxuICAgICAgICBjaGVja2JveExhYmVsU3R5bGUsXHJcbiAgICAgICAgbGFiZWxUZXh0LFxyXG4gICAgICAgIGNoZWNrYm94Q2hhbmdlSGFuZGxlcixcclxuICAgIF0pO1xyXG4gICAgY29uc3Qgb25FeHBhbmRlZENsaWNrZWQgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGhhbmRsZUV4cGFuZGVkQ2hhbmdlKGV2ZW50LCBpdGVtSWQpO1xyXG4gICAgfSwgW2hhbmRsZUV4cGFuZGVkQ2hhbmdlLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IGhhbmRsZUV4cGFuZENsaWNrID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKCFpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICBvbkV4cGFuZGVkQ2xpY2tlZChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIG9uRXhwYW5kZWRDbGlja2VkXSk7XHJcbiAgICBjb25zdCBoYW5kbGVPbkNsaWNrID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSBldmVudC50YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdCgnYnV0dG9uLCBbcm9sZT1cImJ1dHRvblwiXSwgYVtocmVmXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIFtyb2xlPVwibWVudWl0ZW1cIl0nKTtcclxuICAgICAgICAvLyBQcmV2ZW50aW5nIHNlbGVjdGluZyB0aGUgaXRlbSB3aGVuIGNsaWNraW5nIG9uIGludGVyYWN0aXZlIGVsZW1lbnRzIHdoZW4gYHNlbGVjdGFibGVgIGlzIGBzaW5nbGVgXHJcbiAgICAgICAgaWYgKGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBJZiBzZWxlY3RQYXJlbnRzIGlzIGZhbHNlIGFuZCB0aGlzIGlzIGEgcGFyZW50IGl0ZW0sIGhhbmRsZSBleHBhbmQvY29sbGFwc2UgaW5zdGVhZCBvZiBzZWxlY3Rpb25cclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZSAmJlxyXG4gICAgICAgICAgICAhc2VsZWN0UGFyZW50cyAmJlxyXG4gICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIG9uRXhwYW5kZWRDbGlja2VkKGV2ZW50KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZSkge1xyXG4gICAgICAgICAgICBoYW5kbGVDbGljayhldmVudCwgaXRlbUlkKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgdGFiSW5kZXggPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcclxuICAgICAgICBpZiAoaXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaXRlbVRvRm9jdXMgPT09IGl0ZW1JZCA/IDAgOiAtMTtcclxuICAgIH0sIFtpc0Rpc2FibGVkLCBpdGVtVG9Gb2N1cywgaXRlbUlkXSk7XHJcbiAgICBjb25zdCBzaG91bGRTaG93Q2hlY2tib3ggPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUubXVsdGkgJiZcclxuICAgICAgICAoaXNUb3BMZXZlbFNlbGVjdGFibGUgIT09IGZhbHNlIHx8ICF0b3BMZXZlbCk7XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIHdpdGhpbiB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIFByZXNzaW5nIGBDdHJsICsgRW50ZXJgIG9yIGBDb21tYW5kICsgRW50ZXJgIGZvY3VzZXMgdGhlIGZpcnN0IGludGVyYWN0aXZlIGVsZW1lbnQgd2l0aGluIHRoZSB0cmVlIGl0ZW1cclxuICAgICAqIGFuZCBsb2NrcyBmb2N1cyBpbnNpZGUgdGhlIHRyZWUgaXRlbS5cclxuICAgICAqXHJcbiAgICAgKiBJZiB0aGUgZm9jdXMgaXMgd2l0aGluIHRoZSBsYWJlbCBvciBhZGRpdGlvbmFsIGNvbnRlbnQsIGl0IGhhbmRsZXMga2V5IGV2ZW50cyBmb3IgaW50ZXJhY3Rpb24gZWxlbWVudHMuXHJcbiAgICAgKlxyXG4gICAgICogSXQgYWxzbyBoYW5kbGVzIHRoZSBvdGhlciBrZXlzIHRvIHRyaWdnZXIgdGhlIGNsaWNrIGV2ZW50IG9uIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKiAqKi9cclxuICAgIGNvbnN0IG9uS2V5RG93bkhhbmRsZXIgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBjb25zdCB7IGtleSwgdGFyZ2V0LCBjdXJyZW50VGFyZ2V0IH0gPSBldmVudDtcclxuICAgICAgICBjb25zdCBpc0VudGVyID0ga2V5ID09PSAnRW50ZXInO1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybE9yQ29tbWFuZCA9IGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleTtcclxuICAgICAgICBjb25zdCBpc0N0cmxFbnRlciA9IGlzQ3RybE9yQ29tbWFuZCAmJiBpc0VudGVyO1xyXG4gICAgICAgIC8vIElmIHRoZSBrZXkgaXMgQ3RybCArIEVudGVyIG9yIENvbW1hbmQgKyBFbnRlciwgZm9jdXMgdGhlIGZpcnN0IGludGVyYWN0aXZlIGVsZW1lbnRcclxuICAgICAgICAvLyBhbmQgbG9jayBmb2N1cyBpbnNpZGUgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmIChpc0N0cmxFbnRlciAmJiB0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgc2V0SXNJbnNpZGVUcmVlSXRlbSh0cnVlKTtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50c0xpc3QgPSBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzKGN1cnJlbnRUYXJnZXQsIGludGVyYWN0aXZlRWxlbWVudHMpO1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50VG9Gb2N1cyA9IGludGVyYWN0aXZlRWxlbWVudHNMaXN0WzBdO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudFRvRm9jdXMpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRUb0ZvY3VzLmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICB9LCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEVuc3VyZSB2YWxpZCBDU1Mgc2VsZWN0b3JzIGJ5IGVzY2FwaW5nIHNwZWNpYWwgY2hhcmFjdGVycyAoZS5nLiwgcGVyaW9kcyBpbiBpdGVtSWQpXHJcbiAgICAgICAgY29uc3Qgc2FmZUl0ZW1JZCA9IENTUy5lc2NhcGUoaXRlbUlkKTtcclxuICAgICAgICBjb25zdCBpc1dpdGhpbkxhYmVsT3JBZGRpdGlvbmFsQ29udGVudCA9IHRhcmdldC5jbG9zZXN0KGAjJHtzYWZlSXRlbUlkfS1sYWJlbCwgIyR7c2FmZUl0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCk7XHJcbiAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaGFuZGxlIGtleSBldmVudHMgZm9yIHRob3NlIGFyZWFzXHJcbiAgICAgICAgaWYgKGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50KSB7XHJcbiAgICAgICAgICAgIGhhbmRsZUxhYmVsQW5kQWRkaXRpb25hbENvbnRlbnRLZXlEb3duKGV2ZW50KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHRoZSB0cmVlIGl0ZW0gaXRzZWxmLCBoYW5kbGUga2V5IGRvd24gZm9yIHRoZSB0cmVlIGl0ZW1cclxuICAgICAgICBpZiAodGFyZ2V0ID09PSBjdXJyZW50VGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIGhhbmRsZUtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW1xyXG4gICAgICAgIGdldEludGVyYWN0aXZlRWxlbWVudHMsXHJcbiAgICAgICAgaW50ZXJhY3RpdmVFbGVtZW50cyxcclxuICAgICAgICBpdGVtSWQsXHJcbiAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24sXHJcbiAgICAgICAgaGFuZGxlS2V5RG93bixcclxuICAgIF0pO1xyXG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyZWVJdGVtQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogY29udGV4dFZhbHVlIH0sXHJcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IHN0eWxlOiB0cmVlSXRlbVN0eWxlcyB9LFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZFRyZWVJdGVtLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IFwiYXJpYS1leHBhbmRlZFwiOiBoYXNPd25UcmVlSXRlbXMgPyBleHBhbmRlZCA6IG51bGwsIFwiYXJpYS1zZWxlY3RlZFwiOiBzZWxlY3RlZEl0ZW0sIFwiYXJpYS1jaGVja2VkXCI6IHNob3VsZFNob3dDaGVja2JveCA/IGFyaWFDaGVja2VkVmFsdWUgOiBudWxsLCBcImRhdGEtdGVzdGlkXCI6IHRlc3RJZCwgZGVwdGg6IGl0ZW1EZXB0aCwgaGFzT3duVHJlZUl0ZW1zOiBoYXNPd25UcmVlSXRlbXMsIGlkOiBpdGVtSWQsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBpc1ZpcnR1YWxpemVkOiBoaWVyYXJjaHlDb250ZXh0LmlzVmlydHVhbGl6ZWQsIG5vZGVUeXBlOiBub2RlVHlwZSwgcm9sZTogXCJ0cmVlaXRlbVwiLCBzZWxlY3RhYmxlVHlwZTogc2VsZWN0YWJsZSwgc2VsZWN0ZWQ6IHNlbGVjdGVkSXRlbSwgdGhlbWU6IHRoZW1lLCB0YWJJbmRleDogdGFiSW5kZXgsIG9uS2V5RG93bjogb25LZXlEb3duSGFuZGxlciwgcmVmOiB0cmVlSXRlbVJlZiwgaG92ZXJDb2xvcjogaG92ZXJDb2xvciB9KSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkSXRlbVdyYXBwZXIsIHsgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1pdGVtd3JhcHBlcmAsIGRlcHRoOiBpdGVtRGVwdGgsIGhhc0FkZGl0aW9uYWxDb250ZW50OiAhIWFkZGl0aW9uYWxDb250ZW50LCBoYXNDdXN0b21JY29uU2l6ZTogISFleHBhbmRJY29uU3R5bGVzPy5zaXplLCBpZDogYCR7aXRlbUlkfS1pdGVtd3JhcHBlcmAsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBub2RlVHlwZTogbm9kZVR5cGUsIHNlbGVjdGFibGU6IHNlbGVjdGFibGUsIHN0eWxlOiBzdHlsZSwgdGhlbWU6IHRoZW1lLCByZWY6IG1lcmdlUmVmcyhyZWYsIGZvY3VzVHJhcEVsZW1lbnQpLCBvbkNsaWNrOiBoYW5kbGVPbkNsaWNrIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgaGFzT3duVHJlZUl0ZW1zICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZEV4cGFuZFdyYXBwZXIsIHsgc2l6ZTogZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSwgY29sb3I6IGV4cGFuZEljb25TdHlsZXM/LmNvbG9yLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWV4cGFuZGAsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBvbkNsaWNrOiBoYW5kbGVFeHBhbmRDbGljaywgdGhlbWU6IHRoZW1lIH0sIGV4cGFuZGVkID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRXhwYW5kTW9yZUljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZXZyb25SaWdodEljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSkpLFxyXG4gICAgICAgICAgICAgICAgICAgIHNob3VsZFNob3dDaGVja2JveCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZENoZWNrYm94V3JhcHBlciwgeyBoYXNBZGRpdGlvbmFsQ29udGVudDogISFhZGRpdGlvbmFsQ29udGVudCwgdGhlbWU6IHRoZW1lIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc093blRyZWVJdGVtcyA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEluZGV0ZXJtaW5hdGVDaGVja2JveCwgT2JqZWN0LmFzc2lnbih7fSwgY2hlY2tib3hQcm9wcywgeyBzdGF0dXM6IGNoZWNrZWRTdGF0dXMgfSkpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZWNrYm94LCBPYmplY3QuYXNzaWduKHt9LCBjaGVja2JveFByb3BzLCB7IGNoZWNrZWQ6IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4oY2hlY2tlZFN0YXR1cykgfSkpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsVGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpKSxcclxuICAgICAgICAgICAgICAgIGhhc0d1aWRlTGluZXMgJiZcclxuICAgICAgICAgICAgICAgICAgICAoaGllcmFyY2h5Q29udGV4dC5pc1ZpcnR1YWxpemVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbURlcHRoID4gMCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkuZnJvbSh7IGxlbmd0aDogaXRlbURlcHRoIH0sIChfLCBkKSA9PiAoUmVhY3QuY3JlYXRlRWxlbWVudChWaXJ0dWFsaXplZEd1aWRlTGluZSwgeyBrZXk6IGBndWlkZWxpbmUtJHtkfWAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tdmlydHVhbGl6ZWQtZ3VpZGVsaW5lLSR7ZH1gLCB0aGVtZTogdGhlbWUsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBzdHlsZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNldElubGluZVN0YXJ0OiBgY2FsYygke2NhbGN1bGF0ZU9mZnNldChUcmVlTm9kZVR5cGUuYnJhbmNoLCBkLCBmYWxzZSwgZmFsc2UsIHRydWUpfSArICR7ZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7ZXhwYW5kSWNvblN0eWxlcy5zaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fSAvIDIgLSAwLjVweClgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfSkpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGhhc093blRyZWVJdGVtcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWQgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoR3VpZGVMaW5lLCB7IFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tZ3VpZGVsaW5lYCwgdGhlbWU6IHRoZW1lLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgZ3VpZGVMaW5lTGVmdDogYGNhbGMoJHtjYWxjdWxhdGVPZmZzZXQoVHJlZU5vZGVUeXBlLmJyYW5jaCwgaXRlbURlcHRoLCBmYWxzZSwgZmFsc2UsIGZhbHNlKX0gKyAke2V4cGFuZEljb25TdHlsZXM/LnNpemUgIT09IHVuZGVmaW5lZCA/IGAke2V4cGFuZEljb25TdHlsZXMuc2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn0gLyAyIC0gMC41cHgpIGAgfSkpKSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LkNoaWxkcmVuLm1hcChjaGlsZHJlbiwgKGNoaWxkLCBjaGlsZEluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkPy50eXBlICE9PSBUcmVlSXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFVzZSB0aGUgc3RhYmxlLCBwcmUtbWVtb2lzZWQgdmFsdWUgKHNlZSBjaGlsZEhpZXJhcmNoaWVzIGFib3ZlKS5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXN0ZWRIaWVyYXJjaHlWYWx1ZSA9IGNoaWxkSGllcmFyY2hpZXNbY2hpbGRJbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyYW5zaXRpb24sIHsgaXNPcGVuOiBleHBhbmRlZCwgdW5tb3VudE9uRXhpdDogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwidWxcIiwgeyByb2xlOiBcImdyb3VwXCIgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0LlByb3ZpZGVyLCB7IGtleTogY2hpbGQucHJvcHMuaXRlbUlkLCB2YWx1ZTogbmVzdGVkSGllcmFyY2h5VmFsdWUgfSwgY2hpbGQpKSkpO1xyXG4gICAgICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICBpc01hY09TICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFZpc3VhbGx5SGlkZGVuLCBudWxsLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChBbm5vdW5jZSwgbnVsbCwgZXhwYW5kZWRcclxuICAgICAgICAgICAgICAgICAgICA/IGkxOG4uZXhwYW5zaW9uU3RhdGUuZXhwYW5kZWRcclxuICAgICAgICAgICAgICAgICAgICA6IGkxOG4uZXhwYW5zaW9uU3RhdGUuY29sbGFwc2VkKSkpKSkpO1xyXG59KTtcclxuLyoqXHJcbiAqIEN1c3RvbSBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciBSZWFjdC5tZW1vXHJcbiAqIE9ubHkgcmUtcmVuZGVyIFRyZWVJdGVtIHdoZW4gcmVsZXZhbnQgcHJvcHMgY2hhbmdlXHJcbiAqL1xyXG5mdW5jdGlvbiBhcmVQcm9wc0VxdWFsKHByZXZQcm9wcywgbmV4dFByb3BzKSB7XHJcbiAgICAvLyBDaGVjayBpZiBpdGVtSWQgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5pdGVtSWQgIT09IG5leHRQcm9wcy5pdGVtSWQpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBsYWJlbCBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmxhYmVsICE9PSBuZXh0UHJvcHMubGFiZWwpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBkaXNhYmxlZCBzdGF0ZSBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmlzRGlzYWJsZWQgIT09IG5leHRQcm9wcy5pc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgaWNvbiBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmljb24gIT09IG5leHRQcm9wcy5pY29uKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgYWRkaXRpb25hbCBjb250ZW50IGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuYWRkaXRpb25hbENvbnRlbnQgIT09IG5leHRQcm9wcy5hZGRpdGlvbmFsQ29udGVudCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGhvdmVyIGNvbG9yIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaG92ZXJDb2xvciAhPT0gbmV4dFByb3BzLmhvdmVyQ29sb3IpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBjaGlsZHJlbiBjaGFuZ2VkIChmb3IgbmVzdGVkIHRyZWUgaXRlbXMpXHJcbiAgICAvLyBVc2luZyB0eXBlIGFzc2VydGlvbiBzaW5jZSBjaGlsZHJlbiBjb21lcyBmcm9tIFJlYWN0LkhUTUxBdHRyaWJ1dGVzXHJcbiAgICBpZiAocHJldlByb3BzLmNoaWxkcmVuICE9PSBuZXh0UHJvcHMuY2hpbGRyZW4pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBzdHlsZXMgY2hhbmdlZFxyXG4gICAgLy8gVXNpbmcgdHlwZSBhc3NlcnRpb24gc2luY2Ugc3R5bGUgY29tZXMgZnJvbSBSZWFjdC5IVE1MQXR0cmlidXRlc1xyXG4gICAgaWYgKHByZXZQcm9wcy5zdHlsZSAhPT0gbmV4dFByb3BzLnN0eWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZQcm9wcy5sYWJlbFN0eWxlICE9PSBuZXh0UHJvcHMubGFiZWxTdHlsZSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChwcmV2UHJvcHMudHJlZUl0ZW1TdHlsZXMgIT09IG5leHRQcm9wcy50cmVlSXRlbVN0eWxlcykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIEFsbCByZWxldmFudCBwcm9wcyBhcmUgZXF1YWwsIHNraXAgcmUtcmVuZGVyXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxyXG4vKipcclxuICogTWVtb2l6ZWQgVHJlZUl0ZW0gY29tcG9uZW50XHJcbiAqIE9ubHkgcmUtcmVuZGVycyB3aGVuIHJlbGV2YW50IHByb3BzIGNoYW5nZSwgaW1wcm92aW5nIHBlcmZvcm1hbmNlIGZvciBsYXJnZSB0cmVlc1xyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFRyZWVJdGVtID0gUmVhY3QubWVtbyhUcmVlSXRlbUNvbXBvbmVudCwgYXJlUHJvcHNFcXVhbCk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRyZWVJdGVtLmpzLm1hcCJdfQ== */"));
|
|
29438
|
+
}, ";pointer-events:none;z-index:1;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEySXdDIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dCB9IGZyb20gJy4vVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdDb25maWdDb250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld0NvbmZpZ0NvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0V4cGFuc2lvbkNvbnRleHQgfSBmcm9tICcuL1RyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyBjYWxjdWxhdGVPZmZzZXQsIGdldFRyZWVJdGVtTGFiZWxDb2xvciwgZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yLCBUcmVlTm9kZVR5cGUsIH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IEkxOG5Db250ZXh0IH0gZnJvbSAnLi4vLi4nO1xyXG5pbXBvcnQgdXNlRGV2aWNlRGV0ZWN0IGZyb20gJy4uLy4uL2hvb2tzL3VzZURldmljZURldGVjdCc7XHJcbmltcG9ydCB7IHVzZUZvY3VzTG9jayB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZUZvY3VzTG9jayc7XHJcbmltcG9ydCB7IHVzZUlzSW52ZXJzZSB9IGZyb20gJy4uLy4uL2ludmVyc2UnO1xyXG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgfSBmcm9tICcuLi8uLi90aGVtZS9UaGVtZUNvbnRleHQnO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmltcG9ydCB7IEFubm91bmNlIH0gZnJvbSAnLi4vQW5ub3VuY2UnO1xyXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gJy4uL0NoZWNrYm94JztcclxuaW1wb3J0IHsgSW5kZXRlcm1pbmF0ZUNoZWNrYm94LCBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMsIH0gZnJvbSAnLi4vSW5kZXRlcm1pbmF0ZUNoZWNrYm94JztcclxuaW1wb3J0IHsgVHJhbnNpdGlvbiB9IGZyb20gJy4uL1RyYW5zaXRpb24nO1xyXG5pbXBvcnQgeyBWaXN1YWxseUhpZGRlbiB9IGZyb20gJy4uL1Zpc3VhbGx5SGlkZGVuJztcclxuY29uc3QgU3R5bGVkVHJlZUl0ZW0gPSBzdHlsZWQubGkgYFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDBcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWw3MDB9O1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIGN1cnNvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbVdyYXBwZXJDdXJzb3IocHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMuc2VsZWN0YWJsZVR5cGUsIHByb3BzLm5vZGVUeXBlKX07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcblxuICBwYWRkaW5nLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCBmYWxzZSwgZmFsc2UsIHByb3BzLmlzVmlydHVhbGl6ZWQpfTtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuXG4gICAgJiA+ICo6Zmlyc3QtY2hpbGQge1xuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkXG4gICAgICAgICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLmZvY3VzSW52ZXJzZVxyXG4gICAgOiBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXN9O1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIGZhbHNlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgbWFyZ2luLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCB0cnVlLCB0cnVlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgcGFkZGluZy1ibG9jay1lbmQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctYmxvY2stc3RhcnQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJlxyXG4gICAgY3NzIGBcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzLmlzSW52ZXJzZVxyXG4gICAgICAgID8gcHJvcHMudGhlbWUuY29sb3JzLnRlcnRpYXJ5NTAwXHJcbiAgICAgICAgOiBwcm9wcy50aGVtZS5jb2xvcnMucHJpbWFyeTUwMH07XG4gICAgICAgICAgYmxvY2stc2l6ZTogMTAwJTtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICBpbmxpbmUtc2l6ZTogJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ6IDA7XG4gICAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAwO1xuICAgICAgICB9XG4gICAgICBgfVxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBnZXRIb3ZlckJhY2tncm91bmQoe1xyXG4gICAgaXNEaXNhYmxlZDogcHJvcHMuaXNEaXNhYmxlZCxcclxuICAgIGhvdmVyQ29sb3I6IHByb3BzLmhvdmVyQ29sb3IsXHJcbiAgICBpc0ludmVyc2U6IHByb3BzLmlzSW52ZXJzZSxcclxuICAgIHRoZW1lOiBwcm9wcy50aGVtZSxcclxufSl9O1xuICAgIH1cbiAgfVxuYDtcclxuZnVuY3Rpb24gZ2V0SG92ZXJCYWNrZ3JvdW5kKHsgaXNEaXNhYmxlZCwgaG92ZXJDb2xvciwgaXNJbnZlcnNlLCB0aGVtZSB9KSB7XHJcbiAgICBpZiAoaXNEaXNhYmxlZClcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgaWYgKGhvdmVyQ29sb3IpXHJcbiAgICAgICAgcmV0dXJuIGhvdmVyQ29sb3I7XHJcbiAgICBjb25zdCB0cmFuc3BhcmVuY3kgPSBpc0ludmVyc2UgPyAwLjggOiAwLjk1O1xyXG4gICAgcmV0dXJuIHRyYW5zcGFyZW50aXplKHRyYW5zcGFyZW5jeSwgdGhlbWUuY29sb3JzLm5ldXRyYWw5MDApO1xyXG59XHJcbmNvbnN0IEljb25XcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBtYXJnaW4tbGVmdDogMDtcblxuICBzdmcge1xuICAgIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pY29uU2l6ZXMubWVkaXVtfXB4O1xuICAgIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgfVxuYDtcclxuY29uc3QgU3R5bGVkTGFiZWxXcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgd2lkdGg6IDEwMCU7XG5gO1xyXG5jb25zdCBTdHlsZWRFeHBhbmRXcmFwcGVyID0gc3R5bGVkLmRpdiBgXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgbWFyZ2luLXJpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuY29sb3IgfHxcclxuICAgIGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIHdpZHRoOiAkeyh7IHNpemUsIHRoZW1lIH0pID0+IHNpemUgIT09IHVuZGVmaW5lZCA/IGAke3NpemV9cHhgIDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDZ9O1xuICBoZWlnaHQ6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG5gO1xyXG5jb25zdCBHdWlkZUxpbmUgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDh9O1xuICBib3R0b206IDA7XG4gIGluc2V0LWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy5ndWlkZUxpbmVMZWZ0fTtcbiAgd2lkdGg6IDA7XG4gIGJvcmRlci1pbmxpbmUtc3RhcnQ6IDFweCBzb2xpZFxuICAgICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHRyYW5zcGFyZW50aXplKDAuNywgcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDApXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMzAwfTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHotaW5kZXg6IDE7XG5gO1xyXG5jb25zdCBWaXJ0dWFsaXplZEd1aWRlTGluZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogMDtcbiAgYm9yZGVyLWlubGluZS1zdGFydDogMXB4IHNvbGlkXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDEwMClcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwzMDB9O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW1Db21wb25lbnQgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XHJcbiAgICBjb25zdCB7IGFkZGl0aW9uYWxDb250ZW50LCBjaGlsZHJlbiwgaG92ZXJDb2xvciwgaWNvbiwgaW5kZXg6IGluZGV4UHJvcCwgbGFiZWwsIGxhYmVsU3R5bGUsIHN0eWxlLCB0ZXN0SWQsIHRvcExldmVsOiB0b3BMZXZlbFByb3AsIHRyZWVJdGVtU3R5bGVzLCAuLi5yZXN0IH0gPSBwcm9wcztcclxuICAgIGNvbnN0IHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xyXG4gICAgY29uc3QgaXNJbnZlcnNlID0gdXNlSXNJbnZlcnNlKCk7XHJcbiAgICAvLyBSZWFkIGhpZXJhcmNoeSBpbmZvcm1hdGlvbiBmcm9tIGNvbnRleHQgKHJlZHVjZXMgY2xvbmVFbGVtZW50IG92ZXJoZWFkKVxyXG4gICAgY29uc3QgaGllcmFyY2h5Q29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0KTtcclxuICAgIC8vIFVzZSBjb250ZXh0IHZhbHVlcyBpZiBwcm9wcyBhcmUgbm90IHByb3ZpZGVkIChmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSlcclxuICAgIGNvbnN0IGluZGV4ID0gaW5kZXhQcm9wICE9PSB1bmRlZmluZWQgPyBpbmRleFByb3AgOiBoaWVyYXJjaHlDb250ZXh0LmluZGV4O1xyXG4gICAgY29uc3QgdG9wTGV2ZWwgPSB0b3BMZXZlbFByb3AgIT09IHVuZGVmaW5lZCA/IHRvcExldmVsUHJvcCA6IGhpZXJhcmNoeUNvbnRleHQuaXNUb3BMZXZlbDtcclxuICAgIC8vIENvbnN1bWUgc3BsaXQgY29udGV4dHMgZm9yIHJlZHVjZWQgcmUtcmVuZGVyIHNjb3BlXHJcbiAgICBjb25zdCB7IGl0ZW1Ub0ZvY3VzIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGhhbmRsZUV4cGFuZGVkQ2hhbmdlIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGV4cGFuZEljb25TdHlsZXMsIGhhc0d1aWRlTGluZXMsIGhhc0ljb25zLCBpc1RvcExldmVsU2VsZWN0YWJsZSwgc2VsZWN0YWJsZSwgc2VsZWN0UGFyZW50cyA9IHRydWUsIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29uZmlnQ29udGV4dCk7XHJcbiAgICAvLyBQYXNzIHRoZSByZXNvbHZlZCB2YWx1ZXMgdG8gdXNlVHJlZUl0ZW1cclxuICAgIGNvbnN0IHByb3BzV2l0aEhpZXJhcmNoeSA9IHtcclxuICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICBpbmRleCxcclxuICAgICAgICB0b3BMZXZlbCxcclxuICAgICAgICBpdGVtRGVwdGg6IGhpZXJhcmNoeUNvbnRleHQuZGVwdGgsXHJcbiAgICAgICAgcGFyZW50RGVwdGg6IGhpZXJhcmNoeUNvbnRleHQucGFyZW50RGVwdGgsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyBjb250ZXh0VmFsdWUsIGhhbmRsZUNsaWNrLCBoYW5kbGVLZXlEb3duIH0gPSB1c2VUcmVlSXRlbShwcm9wc1dpdGhIaWVyYXJjaHksIGZvcndhcmRlZFJlZik7XHJcbiAgICBjb25zdCB7IGlzRGlzYWJsZWQgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IHsgaXNNYWNPUyB9ID0gdXNlRGV2aWNlRGV0ZWN0KCk7XHJcbiAgICBjb25zdCBpMThuID0gUmVhY3QudXNlQ29udGV4dChJMThuQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGNoZWNrYm94Q2hhbmdlSGFuZGxlciwgY2hlY2tlZFN0YXR1cywgZXhwYW5kZWQsIGhhc093blRyZWVJdGVtcywgaXRlbURlcHRoLCBpdGVtSWQsIHJlZiwgc2VsZWN0ZWRJdGVtcywgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IG5vZGVUeXBlID0gaGFzT3duVHJlZUl0ZW1zID8gVHJlZU5vZGVUeXBlLmJyYW5jaCA6IFRyZWVOb2RlVHlwZS5sZWFmO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZVxyXG4gICAgICAgID8gc2VsZWN0ZWRJdGVtcz8uWzBdPy5pdGVtSWQgPT09IGl0ZW1JZFxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IGFyaWFDaGVja2VkVmFsdWUgPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUubXVsdGlcclxuICAgICAgICA/IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5pbmRldGVybWluYXRlXHJcbiAgICAgICAgICAgID8gJ21peGVkJ1xyXG4gICAgICAgICAgICA6IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5jaGVja2VkXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgW2lzSW5zaWRlVHJlZUl0ZW0sIHNldElzSW5zaWRlVHJlZUl0ZW1dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgdHJlZUl0ZW1SZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XHJcbiAgICBjb25zdCBmb2N1c1RyYXBFbGVtZW50ID0gdXNlRm9jdXNMb2NrKGlzSW5zaWRlVHJlZUl0ZW0pO1xyXG4gICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50cyA9ICdidXR0b24sIFtyb2xlPVwiYnV0dG9uXCJdLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgYVtocmVmXSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJztcclxuICAgIGNvbnN0IGdldEludGVyYWN0aXZlRWxlbWVudHMgPSBSZWFjdC51c2VDYWxsYmFjaygoY29udGFpbmVyLCBzZWxlY3RvcikgPT4ge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSkuZmlsdGVyKGVsID0+ICFlbC5oYXNBdHRyaWJ1dGUoJ3RhYmluZGV4JykgfHxcclxuICAgICAgICAgICAgKGVsLnRhYkluZGV4ICE9PSB1bmRlZmluZWQgJiYgZWwudGFiSW5kZXggPj0gMCkpO1xyXG4gICAgfSwgW10pO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGFsbG93cyBmb3Iga2V5Ym9hcmQgbmF2aWdhdGlvbiB3aXRoaW4gdGhlIGxhYmVsIGFuZCBhZGRpdGlvbmFsIGNvbnRlbnQgb2YgYSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogWW91IGNhbiBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIHVzaW5nIHRoZSBgVGFiYCBrZXksIGFjdGl2YXRlIHRoZW0gd2l0aCBgRW50ZXJgIG9yIGBTcGFjZWAsXHJcbiAgICAgKiBhbmQgZXhpdCBvdXRzaWRlIGFuZCBmb2N1cyB0aGUgd2hvbGUgdHJlZSBpdGVtIHdpdGggYEVzY2FwZWAuXHJcbiAgICAgKiAqKi9cclxuICAgIGNvbnN0IGhhbmRsZUxhYmVsQW5kQWRkaXRpb25hbENvbnRlbnRLZXlEb3duID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBrZXksIHRhcmdldCwgY3VycmVudFRhcmdldCwgc2hpZnRLZXkgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gdGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNTcGFjZSA9IGtleSA9PT0gJyAnO1xyXG4gICAgICAgIGNvbnN0IGlzRXNjYXBlID0ga2V5ID09PSAnRXNjYXBlJztcclxuICAgICAgICBjb25zdCBpc1RhYiA9IGtleSA9PT0gJ1RhYic7XHJcbiAgICAgICAgY29uc3QgaXNBY3RpdmF0aW9uS2V5ID0gaXNFbnRlciB8fCBpc1NwYWNlO1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBgVGFiYCwgd2UgbmF2aWdhdGUgdGhyb3VnaCBpbnRlcmFjdGl2ZSBlbGVtZW50cyBpbnNpZGUgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmIChpc1RhYiAmJiBpc0luc2lkZVRyZWVJdGVtKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudHNMaXN0ID0gZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyhjdXJyZW50VGFyZ2V0LCBpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAgICAgLy8gRmlsdGVyIGxpc3Qgb2YgaW50ZXJhY3RpdmUgZWxlbWVudHMgd2hpY2ggYXJlIG9ubHkgaW5jbHVkZWQgZm9yIGN1cnJlbnQgdHJlZSBpdGVtXHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMgPSBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdC5maWx0ZXIoZWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2xvc2VzdFRyZWVJdGVtID0gZWwuY2xvc2VzdCgnW3JvbGU9XCJ0cmVlaXRlbVwiXScpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsb3Nlc3RUcmVlSXRlbSA9PT0gdHJlZUl0ZW1SZWYuY3VycmVudDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMuaW5kZXhPZihjdXJyZW50RWxlbWVudCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHNoaWZ0S2V5ID8gLTEgOiAxO1xyXG4gICAgICAgICAgICBjb25zdCB0b3RhbCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMubGVuZ3RoO1xyXG4gICAgICAgICAgICBjb25zdCBuZXh0SW5kZXggPSAoY3VycmVudEluZGV4ICsgZGlyZWN0aW9uICsgdG90YWwpICUgdG90YWw7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50c1tuZXh0SW5kZXhdO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudFRvRm9jdXMpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZWxlbWVudFRvRm9jdXMuZm9jdXMoKSwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBQcmVzc2luZyBgRW50ZXJgIG9yIGBTcGFjZWAgb24gYW4gaW50ZXJhY3RpdmUgZWxlbWVudCB3aWxsIHRyaWdnZXIgaXRzIGNsaWNrIGV2ZW50XHJcbiAgICAgICAgaWYgKGlzQWN0aXZhdGlvbktleSAmJiBpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgaW50ZXJhY3RpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE1vdmVzIGZvY3VzIG91dHNpZGUgdGhlIHRyZWUgaXRlbSBhbmQgZm9jdXNlcyB0aGUgdHJlZSBpdGVtIGl0c2VsZiB3aGVuIGBFc2NhcGVgIGlzIHByZXNzZWRcclxuICAgICAgICBpZiAoaXNFc2NhcGUpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHNldElzSW5zaWRlVHJlZUl0ZW0oZmFsc2UpO1xyXG4gICAgICAgICAgICBjb25zdCB0cmVlSXRlbU5vZGUgPSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICBpZiAodHJlZUl0ZW1Ob2RlKSB7XHJcbiAgICAgICAgICAgICAgICB0cmVlSXRlbU5vZGUuZm9jdXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzSW5zaWRlVHJlZUl0ZW1dKTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gUmVhY3QudXNlTWVtbygoKSA9PiBub2RlVHlwZSA9PT0gVHJlZU5vZGVUeXBlLmJyYW5jaCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEZvbGRlckljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KEFydGljbGVJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSksIFtub2RlVHlwZV0pO1xyXG4gICAgLy8gTWVtb2lzZSB0aGUgbGFiZWwgSlNYIHNvIHRoZSBgY2hlY2tib3hQcm9wc2AgbWVtbyBiZWxvdyBhY3R1YWxseSBoYXNcclxuICAgIC8vIGEgc3RhYmxlIGBsYWJlbFRleHRgIHJlZmVyZW5jZSBiZXR3ZWVuIHJlbmRlcnMuIFByZXZpb3VzbHkgdGhpc1xyXG4gICAgLy8gZWxlbWVudCB3YXMgcmUtY3JlYXRlZCBvbiBldmVyeSByZW5kZXIsIHdoaWNoIGZvcmNlZFxyXG4gICAgLy8gYGNoZWNrYm94UHJvcHNgIHRvIGFsc28gYmUgcmUtY3JlYXRlZCBhbmQgYW55IGZ1dHVyZSBSZWFjdC5tZW1vIG9uXHJcbiAgICAvLyBDaGVja2JveC9JbmRldGVybWluYXRlQ2hlY2tib3ggd291bGQgYWx3YXlzIGJhaWwgb3V0LlxyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gUmVhY3QudXNlTWVtbygoKSA9PiAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRMYWJlbFdyYXBwZXIsIHsgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgc3R5bGU6IGxhYmVsU3R5bGUsIGlkOiBgJHtpdGVtSWR9LWxhYmVsYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1sYWJlbGAgfSxcclxuICAgICAgICBoYXNJY29ucyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChJY29uV3JhcHBlciwgeyBpc0ludmVyc2U6IGlzSW52ZXJzZSwgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWljb25gIH0sIGljb24gfHwgZGVmYXVsdEljb24pKSxcclxuICAgICAgICBsYWJlbCkpLCBbXHJcbiAgICAgICAgdGhlbWUsXHJcbiAgICAgICAgaXNEaXNhYmxlZCxcclxuICAgICAgICBpc0ludmVyc2UsXHJcbiAgICAgICAgbGFiZWxTdHlsZSxcclxuICAgICAgICBpdGVtSWQsXHJcbiAgICAgICAgdGVzdElkLFxyXG4gICAgICAgIGhhc0ljb25zLFxyXG4gICAgICAgIGljb24sXHJcbiAgICAgICAgZGVmYXVsdEljb24sXHJcbiAgICAgICAgbGFiZWwsXHJcbiAgICBdKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBSZWFjdC51c2VNZW1vKCgpID0+IGFkZGl0aW9uYWxDb250ZW50ID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQWRkaXRpb25hbENvbnRlbnRXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaWQ6IGAke2l0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgIH0sIGFkZGl0aW9uYWxDb250ZW50KSkgOiBudWxsLCBbYWRkaXRpb25hbENvbnRlbnQsIHRoZW1lLCBpdGVtSWQsIHRlc3RJZF0pO1xyXG4gICAgLy8gU3RhYmxlIHBlci1jaGlsZCBoaWVyYXJjaHkgdmFsdWVzLiBUaGUgcmVmZXJlbmNlIG11c3Qgbm90IGNoYW5nZSBvblxyXG4gICAgLy8gcmUtcmVuZGVycyB0cmlnZ2VyZWQgYnkgVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0LCBvdGhlcndpc2UgZXZlcnlcclxuICAgIC8vIG5lc3RlZCBUcmVlSXRlbSByZS1yZW5kZXJzIHRocm91Z2ggdGhlIGNvbnRleHQgYW5kIFJlYWN0Lm1lbW8gaXNcclxuICAgIC8vIGRlZmVhdGVkLlxyXG4gICAgY29uc3QgY2hpbGRIaWVyYXJjaGllcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvdW50ID0gUmVhY3QuQ2hpbGRyZW4uY291bnQoY2hpbGRyZW4pO1xyXG4gICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShjb3VudCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGFycltpXSA9IHtcclxuICAgICAgICAgICAgICAgIGRlcHRoOiBpdGVtRGVwdGggKyAxLFxyXG4gICAgICAgICAgICAgICAgcGFyZW50RGVwdGg6IGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgIGlzVG9wTGV2ZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhcnI7XHJcbiAgICB9LCBbY2hpbGRyZW4sIGl0ZW1EZXB0aF0pO1xyXG4gICAgLy8gTWVtb2l6ZSBpbmxpbmUgc3R5bGUgb2JqZWN0cyB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IHJlLXJlbmRlcnNcclxuICAgIGNvbnN0IGNoZWNrYm94SW5wdXRTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHsgbWFyZ2luUmlnaHQ6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzIH0pLCBbdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDNdKTtcclxuICAgIGNvbnN0IGNoZWNrYm94TGFiZWxTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcclxuICAgICAgICBwYWRkaW5nOiAwLFxyXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICB9KSwgW10pO1xyXG4gICAgLy8gUHJvcHMgc2hhcmVkIGJ5IENoZWNrYm94IGFuZCBJbmRldGVybWluYXRlQ2hlY2tib3hcclxuICAgIGNvbnN0IGNoZWNrYm94UHJvcHMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XHJcbiAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaGlkZUZvY3VzOiB0cnVlLFxyXG4gICAgICAgIGlkOiBgJHtpdGVtSWR9LWNoZWNrYm94YCxcclxuICAgICAgICBpbnB1dFN0eWxlOiBjaGVja2JveElucHV0U3R5bGUsXHJcbiAgICAgICAgbGFiZWxTdHlsZTogY2hlY2tib3hMYWJlbFN0eWxlLFxyXG4gICAgICAgIGxhYmVsVGV4dDogbGFiZWxUZXh0LFxyXG4gICAgICAgIG9uQ2hhbmdlOiBjaGVja2JveENoYW5nZUhhbmRsZXIsXHJcbiAgICAgICAgdGFiSW5kZXg6IC0xLFxyXG4gICAgICAgIHRlc3RJZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICB9KSwgW1xyXG4gICAgICAgIGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaXRlbUlkLFxyXG4gICAgICAgIGNoZWNrYm94SW5wdXRTdHlsZSxcclxuICAgICAgICBjaGVja2JveExhYmVsU3R5bGUsXHJcbiAgICAgICAgbGFiZWxUZXh0LFxyXG4gICAgICAgIGNoZWNrYm94Q2hhbmdlSGFuZGxlcixcclxuICAgIF0pO1xyXG4gICAgY29uc3Qgb25FeHBhbmRlZENsaWNrZWQgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGhhbmRsZUV4cGFuZGVkQ2hhbmdlKGV2ZW50LCBpdGVtSWQpO1xyXG4gICAgfSwgW2hhbmRsZUV4cGFuZGVkQ2hhbmdlLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IGhhbmRsZUV4cGFuZENsaWNrID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKCFpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICBvbkV4cGFuZGVkQ2xpY2tlZChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIG9uRXhwYW5kZWRDbGlja2VkXSk7XHJcbiAgICBjb25zdCBoYW5kbGVPbkNsaWNrID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSBldmVudC50YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdCgnYnV0dG9uLCBbcm9sZT1cImJ1dHRvblwiXSwgYVtocmVmXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIFtyb2xlPVwibWVudWl0ZW1cIl0nKTtcclxuICAgICAgICAvLyBQcmV2ZW50aW5nIHNlbGVjdGluZyB0aGUgaXRlbSB3aGVuIGNsaWNraW5nIG9uIGludGVyYWN0aXZlIGVsZW1lbnRzIHdoZW4gYHNlbGVjdGFibGVgIGlzIGBzaW5nbGVgXHJcbiAgICAgICAgaWYgKGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBJZiBzZWxlY3RQYXJlbnRzIGlzIGZhbHNlIGFuZCB0aGlzIGlzIGEgcGFyZW50IGl0ZW0sIGhhbmRsZSBleHBhbmQvY29sbGFwc2UgaW5zdGVhZCBvZiBzZWxlY3Rpb25cclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZSAmJlxyXG4gICAgICAgICAgICAhc2VsZWN0UGFyZW50cyAmJlxyXG4gICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMpIHtcclxuICAgICAgICAgICAgb25FeHBhbmRlZENsaWNrZWQoZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEluIHNlbGVjdGFibGU9b2ZmIG1vZGUsIGNsaWNraW5nIGFueXdoZXJlIG9uIGEgcGFyZW50IGl0ZW0gdG9nZ2xlcyBleHBhbmQvY29sbGFwc2VcclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLm9mZiAmJiBoYXNPd25UcmVlSXRlbXMpIHtcclxuICAgICAgICAgICAgb25FeHBhbmRlZENsaWNrZWQoZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUuc2luZ2xlKSB7XHJcbiAgICAgICAgICAgIGhhbmRsZUNsaWNrKGV2ZW50LCBpdGVtSWQpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCB0YWJJbmRleCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpdGVtVG9Gb2N1cyA9PT0gaXRlbUlkID8gMCA6IC0xO1xyXG4gICAgfSwgW2lzRGlzYWJsZWQsIGl0ZW1Ub0ZvY3VzLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IHNob3VsZFNob3dDaGVja2JveCA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aSAmJlxyXG4gICAgICAgIChpc1RvcExldmVsU2VsZWN0YWJsZSAhPT0gZmFsc2UgfHwgIXRvcExldmVsKTtcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gd2l0aGluIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogUHJlc3NpbmcgYEN0cmwgKyBFbnRlcmAgb3IgYENvbW1hbmQgKyBFbnRlcmAgZm9jdXNlcyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudCB3aXRoaW4gdGhlIHRyZWUgaXRlbVxyXG4gICAgICogYW5kIGxvY2tzIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIElmIHRoZSBmb2N1cyBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaXQgaGFuZGxlcyBrZXkgZXZlbnRzIGZvciBpbnRlcmFjdGlvbiBlbGVtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBJdCBhbHNvIGhhbmRsZXMgdGhlIG90aGVyIGtleXMgdG8gdHJpZ2dlciB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIHRyZWUgaXRlbS5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3Qgb25LZXlEb3duSGFuZGxlciA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsga2V5LCB0YXJnZXQsIGN1cnJlbnRUYXJnZXQgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNDdHJsT3JDb21tYW5kID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5O1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybEVudGVyID0gaXNDdHJsT3JDb21tYW5kICYmIGlzRW50ZXI7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBDdHJsICsgRW50ZXIgb3IgQ29tbWFuZCArIEVudGVyLCBmb2N1cyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudFxyXG4gICAgICAgIC8vIGFuZCBsb2NrIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzQ3RybEVudGVyICYmIHRhcmdldCA9PT0gY3VycmVudFRhcmdldCkge1xyXG4gICAgICAgICAgICBzZXRJc0luc2lkZVRyZWVJdGVtKHRydWUpO1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdCA9IGdldEludGVyYWN0aXZlRWxlbWVudHMoY3VycmVudFRhcmdldCwgaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gaW50ZXJhY3RpdmVFbGVtZW50c0xpc3RbMF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gRW5zdXJlIHZhbGlkIENTUyBzZWxlY3RvcnMgYnkgZXNjYXBpbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChlLmcuLCBwZXJpb2RzIGluIGl0ZW1JZClcclxuICAgICAgICBjb25zdCBzYWZlSXRlbUlkID0gQ1NTLmVzY2FwZShpdGVtSWQpO1xyXG4gICAgICAgIGNvbnN0IGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50ID0gdGFyZ2V0LmNsb3Nlc3QoYCMke3NhZmVJdGVtSWR9LWxhYmVsLCAjJHtzYWZlSXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgKTtcclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHdpdGhpbiB0aGUgbGFiZWwgb3IgYWRkaXRpb25hbCBjb250ZW50LCBoYW5kbGUga2V5IGV2ZW50cyBmb3IgdGhvc2UgYXJlYXNcclxuICAgICAgICBpZiAoaXNXaXRoaW5MYWJlbE9yQWRkaXRpb25hbENvbnRlbnQpIHtcclxuICAgICAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaXMgdGhlIHRyZWUgaXRlbSBpdHNlbGYsIGhhbmRsZSBrZXkgZG93biBmb3IgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgaGFuZGxlS2V5RG93bihldmVudCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9LCBbXHJcbiAgICAgICAgZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyxcclxuICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnRzLFxyXG4gICAgICAgIGl0ZW1JZCxcclxuICAgICAgICBoYW5kbGVMYWJlbEFuZEFkZGl0aW9uYWxDb250ZW50S2V5RG93bixcclxuICAgICAgICBoYW5kbGVLZXlEb3duLFxyXG4gICAgXSk7XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBjb250ZXh0VmFsdWUgfSxcclxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgc3R5bGU6IHRyZWVJdGVtU3R5bGVzIH0sXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkVHJlZUl0ZW0sIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgXCJhcmlhLWV4cGFuZGVkXCI6IGhhc093blRyZWVJdGVtcyA/IGV4cGFuZGVkIDogbnVsbCwgXCJhcmlhLXNlbGVjdGVkXCI6IHNlbGVjdGVkSXRlbSwgXCJhcmlhLWNoZWNrZWRcIjogc2hvdWxkU2hvd0NoZWNrYm94ID8gYXJpYUNoZWNrZWRWYWx1ZSA6IG51bGwsIFwiZGF0YS10ZXN0aWRcIjogdGVzdElkLCBkZXB0aDogaXRlbURlcHRoLCBoYXNPd25UcmVlSXRlbXM6IGhhc093blRyZWVJdGVtcywgaWQ6IGl0ZW1JZCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIGlzVmlydHVhbGl6ZWQ6IGhpZXJhcmNoeUNvbnRleHQuaXNWaXJ0dWFsaXplZCwgbm9kZVR5cGU6IG5vZGVUeXBlLCByb2xlOiBcInRyZWVpdGVtXCIsIHNlbGVjdGFibGVUeXBlOiBzZWxlY3RhYmxlLCBzZWxlY3RlZDogc2VsZWN0ZWRJdGVtLCB0aGVtZTogdGhlbWUsIHRhYkluZGV4OiB0YWJJbmRleCwgb25LZXlEb3duOiBvbktleURvd25IYW5kbGVyLCByZWY6IHRyZWVJdGVtUmVmLCBob3ZlckNvbG9yOiBob3ZlckNvbG9yIH0pLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRJdGVtV3JhcHBlciwgeyBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCA/PyBpdGVtSWR9LWl0ZW13cmFwcGVyYCwgZGVwdGg6IGl0ZW1EZXB0aCwgaGFzQWRkaXRpb25hbENvbnRlbnQ6ICEhYWRkaXRpb25hbENvbnRlbnQsIGhhc0N1c3RvbUljb25TaXplOiAhIWV4cGFuZEljb25TdHlsZXM/LnNpemUsIGlkOiBgJHtpdGVtSWR9LWl0ZW13cmFwcGVyYCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG5vZGVUeXBlOiBub2RlVHlwZSwgc2VsZWN0YWJsZTogc2VsZWN0YWJsZSwgc3R5bGU6IHN0eWxlLCB0aGVtZTogdGhlbWUsIHJlZjogbWVyZ2VSZWZzKHJlZiwgZm9jdXNUcmFwRWxlbWVudCksIG9uQ2xpY2s6IGhhbmRsZU9uQ2xpY2sgfSxcclxuICAgICAgICAgICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkRXhwYW5kV3JhcHBlciwgeyBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplLCBjb2xvcjogZXhwYW5kSWNvblN0eWxlcz8uY29sb3IsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tZXhwYW5kYCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG9uQ2xpY2s6IGhhbmRsZUV4cGFuZENsaWNrLCB0aGVtZTogdGhlbWUgfSwgZXhwYW5kZWQgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChFeHBhbmRNb3JlSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIHNpemU6IGV4cGFuZEljb25TdHlsZXM/LnNpemUgfSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hldnJvblJpZ2h0SWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIHNpemU6IGV4cGFuZEljb25TdHlsZXM/LnNpemUgfSkpKSksXHJcbiAgICAgICAgICAgICAgICAgICAgc2hvdWxkU2hvd0NoZWNrYm94ID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkQ2hlY2tib3hXcmFwcGVyLCB7IGhhc0FkZGl0aW9uYWxDb250ZW50OiAhIWFkZGl0aW9uYWxDb250ZW50LCB0aGVtZTogdGhlbWUgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzT3duVHJlZUl0ZW1zID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW5kZXRlcm1pbmF0ZUNoZWNrYm94LCBPYmplY3QuYXNzaWduKHt9LCBjaGVja2JveFByb3BzLCB7IHN0YXR1czogY2hlY2tlZFN0YXR1cyB9KSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hlY2tib3gsIE9iamVjdC5hc3NpZ24oe30sIGNoZWNrYm94UHJvcHMsIHsgY2hlY2tlZDogY2hlY2tlZFN0YXR1c1RvQm9vbGVhbihjaGVja2VkU3RhdHVzKSB9KSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlSXRlbUFkZGl0aW9uYWxDb250ZW50KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxUZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlSXRlbUFkZGl0aW9uYWxDb250ZW50KSkpLFxyXG4gICAgICAgICAgICAgICAgaGFzR3VpZGVMaW5lcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIChoaWVyYXJjaHlDb250ZXh0LmlzVmlydHVhbGl6ZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBpdGVtRGVwdGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5mcm9tKHsgbGVuZ3RoOiBpdGVtRGVwdGggfSwgKF8sIGQpID0+IChSZWFjdC5jcmVhdGVFbGVtZW50KFZpcnR1YWxpemVkR3VpZGVMaW5lLCB7IGtleTogYGd1aWRlbGluZS0ke2R9YCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS12aXJ0dWFsaXplZC1ndWlkZWxpbmUtJHtkfWAsIHRoZW1lOiB0aGVtZSwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2V0SW5saW5lU3RhcnQ6IGBjYWxjKCR7Y2FsY3VsYXRlT2Zmc2V0KFRyZWVOb2RlVHlwZS5icmFuY2gsIGQsIGZhbHNlLCBmYWxzZSwgdHJ1ZSl9ICsgJHtleHBhbmRJY29uU3R5bGVzPy5zaXplICE9PSB1bmRlZmluZWQgPyBgJHtleHBhbmRJY29uU3R5bGVzLnNpemV9cHhgIDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDZ9IC8gMiAtIDAuNXB4KWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB9KSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaGFzT3duVHJlZUl0ZW1zICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRlZCAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChHdWlkZUxpbmUsIHsgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1ndWlkZWxpbmVgLCB0aGVtZTogdGhlbWUsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBndWlkZUxpbmVMZWZ0OiBgY2FsYygke2NhbGN1bGF0ZU9mZnNldChUcmVlTm9kZVR5cGUuYnJhbmNoLCBpdGVtRGVwdGgsIGZhbHNlLCBmYWxzZSwgZmFsc2UpfSArICR7ZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7ZXhwYW5kSWNvblN0eWxlcy5zaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fSAvIDIgLSAwLjVweCkgYCB9KSkpLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuQ2hpbGRyZW4ubWFwKGNoaWxkcmVuLCAoY2hpbGQsIGNoaWxkSW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQ/LnR5cGUgIT09IFRyZWVJdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVXNlIHRoZSBzdGFibGUsIHByZS1tZW1vaXNlZCB2YWx1ZSAoc2VlIGNoaWxkSGllcmFyY2hpZXMgYWJvdmUpLlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5lc3RlZEhpZXJhcmNoeVZhbHVlID0gY2hpbGRIaWVyYXJjaGllc1tjaGlsZEluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJhbnNpdGlvbiwgeyBpc09wZW46IGV4cGFuZGVkLCB1bm1vdW50T25FeGl0OiB0cnVlIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ1bFwiLCB7IHJvbGU6IFwiZ3JvdXBcIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUcmVlSXRlbUhpZXJhcmNoeUNvbnRleHQuUHJvdmlkZXIsIHsga2V5OiBjaGlsZC5wcm9wcy5pdGVtSWQsIHZhbHVlOiBuZXN0ZWRIaWVyYXJjaHlWYWx1ZSB9LCBjaGlsZCkpKSk7XHJcbiAgICAgICAgICAgICAgICB9KSksXHJcbiAgICAgICAgICAgIGlzTWFjT1MgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVmlzdWFsbHlIaWRkZW4sIG51bGwsXHJcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEFubm91bmNlLCBudWxsLCBleHBhbmRlZFxyXG4gICAgICAgICAgICAgICAgICAgID8gaTE4bi5leHBhbnNpb25TdGF0ZS5leHBhbmRlZFxyXG4gICAgICAgICAgICAgICAgICAgIDogaTE4bi5leHBhbnNpb25TdGF0ZS5jb2xsYXBzZWQpKSkpKSk7XHJcbn0pO1xyXG4vKipcclxuICogQ3VzdG9tIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIFJlYWN0Lm1lbW9cclxuICogT25seSByZS1yZW5kZXIgVHJlZUl0ZW0gd2hlbiByZWxldmFudCBwcm9wcyBjaGFuZ2VcclxuICovXHJcbmZ1bmN0aW9uIGFyZVByb3BzRXF1YWwocHJldlByb3BzLCBuZXh0UHJvcHMpIHtcclxuICAgIC8vIENoZWNrIGlmIGl0ZW1JZCBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLml0ZW1JZCAhPT0gbmV4dFByb3BzLml0ZW1JZCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGxhYmVsIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMubGFiZWwgIT09IG5leHRQcm9wcy5sYWJlbCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGRpc2FibGVkIHN0YXRlIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaXNEaXNhYmxlZCAhPT0gbmV4dFByb3BzLmlzRGlzYWJsZWQpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBpY29uIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaWNvbiAhPT0gbmV4dFByb3BzLmljb24pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBhZGRpdGlvbmFsIGNvbnRlbnQgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5hZGRpdGlvbmFsQ29udGVudCAhPT0gbmV4dFByb3BzLmFkZGl0aW9uYWxDb250ZW50KSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgaG92ZXIgY29sb3IgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5ob3ZlckNvbG9yICE9PSBuZXh0UHJvcHMuaG92ZXJDb2xvcikge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGNoaWxkcmVuIGNoYW5nZWQgKGZvciBuZXN0ZWQgdHJlZSBpdGVtcylcclxuICAgIC8vIFVzaW5nIHR5cGUgYXNzZXJ0aW9uIHNpbmNlIGNoaWxkcmVuIGNvbWVzIGZyb20gUmVhY3QuSFRNTEF0dHJpYnV0ZXNcclxuICAgIGlmIChwcmV2UHJvcHMuY2hpbGRyZW4gIT09IG5leHRQcm9wcy5jaGlsZHJlbikge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIHN0eWxlcyBjaGFuZ2VkXHJcbiAgICAvLyBVc2luZyB0eXBlIGFzc2VydGlvbiBzaW5jZSBzdHlsZSBjb21lcyBmcm9tIFJlYWN0LkhUTUxBdHRyaWJ1dGVzXHJcbiAgICBpZiAocHJldlByb3BzLnN0eWxlICE9PSBuZXh0UHJvcHMuc3R5bGUpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAocHJldlByb3BzLmxhYmVsU3R5bGUgIT09IG5leHRQcm9wcy5sYWJlbFN0eWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZQcm9wcy50cmVlSXRlbVN0eWxlcyAhPT0gbmV4dFByb3BzLnRyZWVJdGVtU3R5bGVzKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQWxsIHJlbGV2YW50IHByb3BzIGFyZSBlcXVhbCwgc2tpcCByZS1yZW5kZXJcclxuICAgIHJldHVybiB0cnVlO1xyXG59XHJcbi8qKlxyXG4gKiBNZW1vaXplZCBUcmVlSXRlbSBjb21wb25lbnRcclxuICogT25seSByZS1yZW5kZXJzIHdoZW4gcmVsZXZhbnQgcHJvcHMgY2hhbmdlLCBpbXByb3ZpbmcgcGVyZm9ybWFuY2UgZm9yIGxhcmdlIHRyZWVzXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW0gPSBSZWFjdC5tZW1vKFRyZWVJdGVtQ29tcG9uZW50LCBhcmVQcm9wc0VxdWFsKTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VHJlZUl0ZW0uanMubWFwIl19 */"));
|
|
29437
29439
|
/*#__PURE__*/createStyled("div", {
|
|
29438
29440
|
target: "e1xiryew2",
|
|
29439
29441
|
label: "StyledCheckboxWrapper"
|
|
@@ -29443,7 +29445,7 @@
|
|
|
29443
29445
|
return props.hasAdditionalContent ? 'flex' : 'inline-flex';
|
|
29444
29446
|
}, ";flex-direction:column;width:", function (props) {
|
|
29445
29447
|
return "calc(100% - " + props.theme.spaceScale.spacing03 + ")";
|
|
29446
|
-
}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF1SnlDIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dCB9IGZyb20gJy4vVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdDb25maWdDb250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld0NvbmZpZ0NvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0V4cGFuc2lvbkNvbnRleHQgfSBmcm9tICcuL1RyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyBjYWxjdWxhdGVPZmZzZXQsIGdldFRyZWVJdGVtTGFiZWxDb2xvciwgZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yLCBUcmVlTm9kZVR5cGUsIH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IEkxOG5Db250ZXh0IH0gZnJvbSAnLi4vLi4nO1xyXG5pbXBvcnQgdXNlRGV2aWNlRGV0ZWN0IGZyb20gJy4uLy4uL2hvb2tzL3VzZURldmljZURldGVjdCc7XHJcbmltcG9ydCB7IHVzZUZvY3VzTG9jayB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZUZvY3VzTG9jayc7XHJcbmltcG9ydCB7IHVzZUlzSW52ZXJzZSB9IGZyb20gJy4uLy4uL2ludmVyc2UnO1xyXG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgfSBmcm9tICcuLi8uLi90aGVtZS9UaGVtZUNvbnRleHQnO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmltcG9ydCB7IEFubm91bmNlIH0gZnJvbSAnLi4vQW5ub3VuY2UnO1xyXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gJy4uL0NoZWNrYm94JztcclxuaW1wb3J0IHsgSW5kZXRlcm1pbmF0ZUNoZWNrYm94LCBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMsIH0gZnJvbSAnLi4vSW5kZXRlcm1pbmF0ZUNoZWNrYm94JztcclxuaW1wb3J0IHsgVHJhbnNpdGlvbiB9IGZyb20gJy4uL1RyYW5zaXRpb24nO1xyXG5pbXBvcnQgeyBWaXN1YWxseUhpZGRlbiB9IGZyb20gJy4uL1Zpc3VhbGx5SGlkZGVuJztcclxuY29uc3QgU3R5bGVkVHJlZUl0ZW0gPSBzdHlsZWQubGkgYFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDBcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWw3MDB9O1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIGN1cnNvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbVdyYXBwZXJDdXJzb3IocHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMuc2VsZWN0YWJsZVR5cGUsIHByb3BzLm5vZGVUeXBlKX07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcblxuICBwYWRkaW5nLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCBmYWxzZSwgZmFsc2UsIHByb3BzLmlzVmlydHVhbGl6ZWQpfTtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuXG4gICAgJiA+ICo6Zmlyc3QtY2hpbGQge1xuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkXG4gICAgICAgICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLmZvY3VzSW52ZXJzZVxyXG4gICAgOiBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXN9O1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIGZhbHNlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgbWFyZ2luLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCB0cnVlLCB0cnVlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgcGFkZGluZy1ibG9jay1lbmQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctYmxvY2stc3RhcnQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJlxyXG4gICAgY3NzIGBcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzLmlzSW52ZXJzZVxyXG4gICAgICAgID8gcHJvcHMudGhlbWUuY29sb3JzLnRlcnRpYXJ5NTAwXHJcbiAgICAgICAgOiBwcm9wcy50aGVtZS5jb2xvcnMucHJpbWFyeTUwMH07XG4gICAgICAgICAgYmxvY2stc2l6ZTogMTAwJTtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICBpbmxpbmUtc2l6ZTogJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ6IDA7XG4gICAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAwO1xuICAgICAgICB9XG4gICAgICBgfVxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBnZXRIb3ZlckJhY2tncm91bmQoe1xyXG4gICAgaXNEaXNhYmxlZDogcHJvcHMuaXNEaXNhYmxlZCxcclxuICAgIGhvdmVyQ29sb3I6IHByb3BzLmhvdmVyQ29sb3IsXHJcbiAgICBpc0ludmVyc2U6IHByb3BzLmlzSW52ZXJzZSxcclxuICAgIHRoZW1lOiBwcm9wcy50aGVtZSxcclxufSl9O1xuICAgIH1cbiAgfVxuYDtcclxuZnVuY3Rpb24gZ2V0SG92ZXJCYWNrZ3JvdW5kKHsgaXNEaXNhYmxlZCwgaG92ZXJDb2xvciwgaXNJbnZlcnNlLCB0aGVtZSB9KSB7XHJcbiAgICBpZiAoaXNEaXNhYmxlZClcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgaWYgKGhvdmVyQ29sb3IpXHJcbiAgICAgICAgcmV0dXJuIGhvdmVyQ29sb3I7XHJcbiAgICBjb25zdCB0cmFuc3BhcmVuY3kgPSBpc0ludmVyc2UgPyAwLjggOiAwLjk1O1xyXG4gICAgcmV0dXJuIHRyYW5zcGFyZW50aXplKHRyYW5zcGFyZW5jeSwgdGhlbWUuY29sb3JzLm5ldXRyYWw5MDApO1xyXG59XHJcbmNvbnN0IEljb25XcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBtYXJnaW4tbGVmdDogMDtcblxuICBzdmcge1xuICAgIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pY29uU2l6ZXMubWVkaXVtfXB4O1xuICAgIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgfVxuYDtcclxuY29uc3QgU3R5bGVkTGFiZWxXcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgd2lkdGg6IDEwMCU7XG5gO1xyXG5jb25zdCBTdHlsZWRFeHBhbmRXcmFwcGVyID0gc3R5bGVkLmRpdiBgXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgbWFyZ2luLXJpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuY29sb3IgfHxcclxuICAgIGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIHdpZHRoOiAkeyh7IHNpemUsIHRoZW1lIH0pID0+IHNpemUgIT09IHVuZGVmaW5lZCA/IGAke3NpemV9cHhgIDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDZ9O1xuICBoZWlnaHQ6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG5gO1xyXG5jb25zdCBHdWlkZUxpbmUgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDh9O1xuICBib3R0b206IDA7XG4gIGluc2V0LWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy5ndWlkZUxpbmVMZWZ0fTtcbiAgd2lkdGg6IDA7XG4gIGJvcmRlci1pbmxpbmUtc3RhcnQ6IDFweCBzb2xpZFxuICAgICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHRyYW5zcGFyZW50aXplKDAuNywgcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDApXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMzAwfTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHotaW5kZXg6IDE7XG5gO1xyXG5jb25zdCBWaXJ0dWFsaXplZEd1aWRlTGluZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogMDtcbiAgYm9yZGVyLWlubGluZS1zdGFydDogMXB4IHNvbGlkXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDEwMClcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwzMDB9O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW1Db21wb25lbnQgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XHJcbiAgICBjb25zdCB7IGFkZGl0aW9uYWxDb250ZW50LCBjaGlsZHJlbiwgaG92ZXJDb2xvciwgaWNvbiwgaW5kZXg6IGluZGV4UHJvcCwgbGFiZWwsIGxhYmVsU3R5bGUsIHN0eWxlLCB0ZXN0SWQsIHRvcExldmVsOiB0b3BMZXZlbFByb3AsIHRyZWVJdGVtU3R5bGVzLCAuLi5yZXN0IH0gPSBwcm9wcztcclxuICAgIGNvbnN0IHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xyXG4gICAgY29uc3QgaXNJbnZlcnNlID0gdXNlSXNJbnZlcnNlKCk7XHJcbiAgICAvLyBSZWFkIGhpZXJhcmNoeSBpbmZvcm1hdGlvbiBmcm9tIGNvbnRleHQgKHJlZHVjZXMgY2xvbmVFbGVtZW50IG92ZXJoZWFkKVxyXG4gICAgY29uc3QgaGllcmFyY2h5Q29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0KTtcclxuICAgIC8vIFVzZSBjb250ZXh0IHZhbHVlcyBpZiBwcm9wcyBhcmUgbm90IHByb3ZpZGVkIChmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSlcclxuICAgIGNvbnN0IGluZGV4ID0gaW5kZXhQcm9wICE9PSB1bmRlZmluZWQgPyBpbmRleFByb3AgOiBoaWVyYXJjaHlDb250ZXh0LmluZGV4O1xyXG4gICAgY29uc3QgdG9wTGV2ZWwgPSB0b3BMZXZlbFByb3AgIT09IHVuZGVmaW5lZCA/IHRvcExldmVsUHJvcCA6IGhpZXJhcmNoeUNvbnRleHQuaXNUb3BMZXZlbDtcclxuICAgIC8vIENvbnN1bWUgc3BsaXQgY29udGV4dHMgZm9yIHJlZHVjZWQgcmUtcmVuZGVyIHNjb3BlXHJcbiAgICBjb25zdCB7IGl0ZW1Ub0ZvY3VzIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGhhbmRsZUV4cGFuZGVkQ2hhbmdlIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGV4cGFuZEljb25TdHlsZXMsIGhhc0d1aWRlTGluZXMsIGhhc0ljb25zLCBpc1RvcExldmVsU2VsZWN0YWJsZSwgc2VsZWN0YWJsZSwgc2VsZWN0UGFyZW50cyA9IHRydWUsIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29uZmlnQ29udGV4dCk7XHJcbiAgICAvLyBQYXNzIHRoZSByZXNvbHZlZCB2YWx1ZXMgdG8gdXNlVHJlZUl0ZW1cclxuICAgIGNvbnN0IHByb3BzV2l0aEhpZXJhcmNoeSA9IHtcclxuICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICBpbmRleCxcclxuICAgICAgICB0b3BMZXZlbCxcclxuICAgICAgICBpdGVtRGVwdGg6IGhpZXJhcmNoeUNvbnRleHQuZGVwdGgsXHJcbiAgICAgICAgcGFyZW50RGVwdGg6IGhpZXJhcmNoeUNvbnRleHQucGFyZW50RGVwdGgsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyBjb250ZXh0VmFsdWUsIGhhbmRsZUNsaWNrLCBoYW5kbGVLZXlEb3duIH0gPSB1c2VUcmVlSXRlbShwcm9wc1dpdGhIaWVyYXJjaHksIGZvcndhcmRlZFJlZik7XHJcbiAgICBjb25zdCB7IGlzRGlzYWJsZWQgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IHsgaXNNYWNPUyB9ID0gdXNlRGV2aWNlRGV0ZWN0KCk7XHJcbiAgICBjb25zdCBpMThuID0gUmVhY3QudXNlQ29udGV4dChJMThuQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGNoZWNrYm94Q2hhbmdlSGFuZGxlciwgY2hlY2tlZFN0YXR1cywgZXhwYW5kZWQsIGhhc093blRyZWVJdGVtcywgaXRlbURlcHRoLCBpdGVtSWQsIHJlZiwgc2VsZWN0ZWRJdGVtcywgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IG5vZGVUeXBlID0gaGFzT3duVHJlZUl0ZW1zID8gVHJlZU5vZGVUeXBlLmJyYW5jaCA6IFRyZWVOb2RlVHlwZS5sZWFmO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZVxyXG4gICAgICAgID8gc2VsZWN0ZWRJdGVtcz8uWzBdPy5pdGVtSWQgPT09IGl0ZW1JZFxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IGFyaWFDaGVja2VkVmFsdWUgPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUubXVsdGlcclxuICAgICAgICA/IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5pbmRldGVybWluYXRlXHJcbiAgICAgICAgICAgID8gJ21peGVkJ1xyXG4gICAgICAgICAgICA6IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5jaGVja2VkXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgW2lzSW5zaWRlVHJlZUl0ZW0sIHNldElzSW5zaWRlVHJlZUl0ZW1dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgdHJlZUl0ZW1SZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XHJcbiAgICBjb25zdCBmb2N1c1RyYXBFbGVtZW50ID0gdXNlRm9jdXNMb2NrKGlzSW5zaWRlVHJlZUl0ZW0pO1xyXG4gICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50cyA9ICdidXR0b24sIFtyb2xlPVwiYnV0dG9uXCJdLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgYVtocmVmXSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJztcclxuICAgIGNvbnN0IGdldEludGVyYWN0aXZlRWxlbWVudHMgPSBSZWFjdC51c2VDYWxsYmFjaygoY29udGFpbmVyLCBzZWxlY3RvcikgPT4ge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSkuZmlsdGVyKGVsID0+ICFlbC5oYXNBdHRyaWJ1dGUoJ3RhYmluZGV4JykgfHxcclxuICAgICAgICAgICAgKGVsLnRhYkluZGV4ICE9PSB1bmRlZmluZWQgJiYgZWwudGFiSW5kZXggPj0gMCkpO1xyXG4gICAgfSwgW10pO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGFsbG93cyBmb3Iga2V5Ym9hcmQgbmF2aWdhdGlvbiB3aXRoaW4gdGhlIGxhYmVsIGFuZCBhZGRpdGlvbmFsIGNvbnRlbnQgb2YgYSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogWW91IGNhbiBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIHVzaW5nIHRoZSBgVGFiYCBrZXksIGFjdGl2YXRlIHRoZW0gd2l0aCBgRW50ZXJgIG9yIGBTcGFjZWAsXHJcbiAgICAgKiBhbmQgZXhpdCBvdXRzaWRlIGFuZCBmb2N1cyB0aGUgd2hvbGUgdHJlZSBpdGVtIHdpdGggYEVzY2FwZWAuXHJcbiAgICAgKiAqKi9cclxuICAgIGNvbnN0IGhhbmRsZUxhYmVsQW5kQWRkaXRpb25hbENvbnRlbnRLZXlEb3duID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBrZXksIHRhcmdldCwgY3VycmVudFRhcmdldCwgc2hpZnRLZXkgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gdGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNTcGFjZSA9IGtleSA9PT0gJyAnO1xyXG4gICAgICAgIGNvbnN0IGlzRXNjYXBlID0ga2V5ID09PSAnRXNjYXBlJztcclxuICAgICAgICBjb25zdCBpc1RhYiA9IGtleSA9PT0gJ1RhYic7XHJcbiAgICAgICAgY29uc3QgaXNBY3RpdmF0aW9uS2V5ID0gaXNFbnRlciB8fCBpc1NwYWNlO1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBgVGFiYCwgd2UgbmF2aWdhdGUgdGhyb3VnaCBpbnRlcmFjdGl2ZSBlbGVtZW50cyBpbnNpZGUgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmIChpc1RhYiAmJiBpc0luc2lkZVRyZWVJdGVtKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudHNMaXN0ID0gZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyhjdXJyZW50VGFyZ2V0LCBpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAgICAgLy8gRmlsdGVyIGxpc3Qgb2YgaW50ZXJhY3RpdmUgZWxlbWVudHMgd2hpY2ggYXJlIG9ubHkgaW5jbHVkZWQgZm9yIGN1cnJlbnQgdHJlZSBpdGVtXHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMgPSBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdC5maWx0ZXIoZWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2xvc2VzdFRyZWVJdGVtID0gZWwuY2xvc2VzdCgnW3JvbGU9XCJ0cmVlaXRlbVwiXScpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsb3Nlc3RUcmVlSXRlbSA9PT0gdHJlZUl0ZW1SZWYuY3VycmVudDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMuaW5kZXhPZihjdXJyZW50RWxlbWVudCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHNoaWZ0S2V5ID8gLTEgOiAxO1xyXG4gICAgICAgICAgICBjb25zdCB0b3RhbCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMubGVuZ3RoO1xyXG4gICAgICAgICAgICBjb25zdCBuZXh0SW5kZXggPSAoY3VycmVudEluZGV4ICsgZGlyZWN0aW9uICsgdG90YWwpICUgdG90YWw7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50c1tuZXh0SW5kZXhdO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudFRvRm9jdXMpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZWxlbWVudFRvRm9jdXMuZm9jdXMoKSwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBQcmVzc2luZyBgRW50ZXJgIG9yIGBTcGFjZWAgb24gYW4gaW50ZXJhY3RpdmUgZWxlbWVudCB3aWxsIHRyaWdnZXIgaXRzIGNsaWNrIGV2ZW50XHJcbiAgICAgICAgaWYgKGlzQWN0aXZhdGlvbktleSAmJiBpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgaW50ZXJhY3RpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE1vdmVzIGZvY3VzIG91dHNpZGUgdGhlIHRyZWUgaXRlbSBhbmQgZm9jdXNlcyB0aGUgdHJlZSBpdGVtIGl0c2VsZiB3aGVuIGBFc2NhcGVgIGlzIHByZXNzZWRcclxuICAgICAgICBpZiAoaXNFc2NhcGUpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHNldElzSW5zaWRlVHJlZUl0ZW0oZmFsc2UpO1xyXG4gICAgICAgICAgICBjb25zdCB0cmVlSXRlbU5vZGUgPSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICBpZiAodHJlZUl0ZW1Ob2RlKSB7XHJcbiAgICAgICAgICAgICAgICB0cmVlSXRlbU5vZGUuZm9jdXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzSW5zaWRlVHJlZUl0ZW1dKTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gUmVhY3QudXNlTWVtbygoKSA9PiBub2RlVHlwZSA9PT0gVHJlZU5vZGVUeXBlLmJyYW5jaCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEZvbGRlckljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KEFydGljbGVJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSksIFtub2RlVHlwZV0pO1xyXG4gICAgLy8gTWVtb2lzZSB0aGUgbGFiZWwgSlNYIHNvIHRoZSBgY2hlY2tib3hQcm9wc2AgbWVtbyBiZWxvdyBhY3R1YWxseSBoYXNcclxuICAgIC8vIGEgc3RhYmxlIGBsYWJlbFRleHRgIHJlZmVyZW5jZSBiZXR3ZWVuIHJlbmRlcnMuIFByZXZpb3VzbHkgdGhpc1xyXG4gICAgLy8gZWxlbWVudCB3YXMgcmUtY3JlYXRlZCBvbiBldmVyeSByZW5kZXIsIHdoaWNoIGZvcmNlZFxyXG4gICAgLy8gYGNoZWNrYm94UHJvcHNgIHRvIGFsc28gYmUgcmUtY3JlYXRlZCBhbmQgYW55IGZ1dHVyZSBSZWFjdC5tZW1vIG9uXHJcbiAgICAvLyBDaGVja2JveC9JbmRldGVybWluYXRlQ2hlY2tib3ggd291bGQgYWx3YXlzIGJhaWwgb3V0LlxyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gUmVhY3QudXNlTWVtbygoKSA9PiAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRMYWJlbFdyYXBwZXIsIHsgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgc3R5bGU6IGxhYmVsU3R5bGUsIGlkOiBgJHtpdGVtSWR9LWxhYmVsYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1sYWJlbGAgfSxcclxuICAgICAgICBoYXNJY29ucyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChJY29uV3JhcHBlciwgeyBpc0ludmVyc2U6IGlzSW52ZXJzZSwgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWljb25gIH0sIGljb24gfHwgZGVmYXVsdEljb24pKSxcclxuICAgICAgICBsYWJlbCkpLCBbXHJcbiAgICAgICAgdGhlbWUsXHJcbiAgICAgICAgaXNEaXNhYmxlZCxcclxuICAgICAgICBpc0ludmVyc2UsXHJcbiAgICAgICAgbGFiZWxTdHlsZSxcclxuICAgICAgICBpdGVtSWQsXHJcbiAgICAgICAgdGVzdElkLFxyXG4gICAgICAgIGhhc0ljb25zLFxyXG4gICAgICAgIGljb24sXHJcbiAgICAgICAgZGVmYXVsdEljb24sXHJcbiAgICAgICAgbGFiZWwsXHJcbiAgICBdKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBSZWFjdC51c2VNZW1vKCgpID0+IGFkZGl0aW9uYWxDb250ZW50ID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQWRkaXRpb25hbENvbnRlbnRXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaWQ6IGAke2l0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgIH0sIGFkZGl0aW9uYWxDb250ZW50KSkgOiBudWxsLCBbYWRkaXRpb25hbENvbnRlbnQsIHRoZW1lLCBpdGVtSWQsIHRlc3RJZF0pO1xyXG4gICAgLy8gU3RhYmxlIHBlci1jaGlsZCBoaWVyYXJjaHkgdmFsdWVzLiBUaGUgcmVmZXJlbmNlIG11c3Qgbm90IGNoYW5nZSBvblxyXG4gICAgLy8gcmUtcmVuZGVycyB0cmlnZ2VyZWQgYnkgVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0LCBvdGhlcndpc2UgZXZlcnlcclxuICAgIC8vIG5lc3RlZCBUcmVlSXRlbSByZS1yZW5kZXJzIHRocm91Z2ggdGhlIGNvbnRleHQgYW5kIFJlYWN0Lm1lbW8gaXNcclxuICAgIC8vIGRlZmVhdGVkLlxyXG4gICAgY29uc3QgY2hpbGRIaWVyYXJjaGllcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvdW50ID0gUmVhY3QuQ2hpbGRyZW4uY291bnQoY2hpbGRyZW4pO1xyXG4gICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShjb3VudCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGFycltpXSA9IHtcclxuICAgICAgICAgICAgICAgIGRlcHRoOiBpdGVtRGVwdGggKyAxLFxyXG4gICAgICAgICAgICAgICAgcGFyZW50RGVwdGg6IGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgIGlzVG9wTGV2ZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhcnI7XHJcbiAgICB9LCBbY2hpbGRyZW4sIGl0ZW1EZXB0aF0pO1xyXG4gICAgLy8gTWVtb2l6ZSBpbmxpbmUgc3R5bGUgb2JqZWN0cyB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IHJlLXJlbmRlcnNcclxuICAgIGNvbnN0IGNoZWNrYm94SW5wdXRTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHsgbWFyZ2luUmlnaHQ6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzIH0pLCBbdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDNdKTtcclxuICAgIGNvbnN0IGNoZWNrYm94TGFiZWxTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcclxuICAgICAgICBwYWRkaW5nOiAwLFxyXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICB9KSwgW10pO1xyXG4gICAgLy8gUHJvcHMgc2hhcmVkIGJ5IENoZWNrYm94IGFuZCBJbmRldGVybWluYXRlQ2hlY2tib3hcclxuICAgIGNvbnN0IGNoZWNrYm94UHJvcHMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XHJcbiAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaGlkZUZvY3VzOiB0cnVlLFxyXG4gICAgICAgIGlkOiBgJHtpdGVtSWR9LWNoZWNrYm94YCxcclxuICAgICAgICBpbnB1dFN0eWxlOiBjaGVja2JveElucHV0U3R5bGUsXHJcbiAgICAgICAgbGFiZWxTdHlsZTogY2hlY2tib3hMYWJlbFN0eWxlLFxyXG4gICAgICAgIGxhYmVsVGV4dDogbGFiZWxUZXh0LFxyXG4gICAgICAgIG9uQ2hhbmdlOiBjaGVja2JveENoYW5nZUhhbmRsZXIsXHJcbiAgICAgICAgdGFiSW5kZXg6IC0xLFxyXG4gICAgICAgIHRlc3RJZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICB9KSwgW1xyXG4gICAgICAgIGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaXRlbUlkLFxyXG4gICAgICAgIGNoZWNrYm94SW5wdXRTdHlsZSxcclxuICAgICAgICBjaGVja2JveExhYmVsU3R5bGUsXHJcbiAgICAgICAgbGFiZWxUZXh0LFxyXG4gICAgICAgIGNoZWNrYm94Q2hhbmdlSGFuZGxlcixcclxuICAgIF0pO1xyXG4gICAgY29uc3Qgb25FeHBhbmRlZENsaWNrZWQgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGhhbmRsZUV4cGFuZGVkQ2hhbmdlKGV2ZW50LCBpdGVtSWQpO1xyXG4gICAgfSwgW2hhbmRsZUV4cGFuZGVkQ2hhbmdlLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IGhhbmRsZUV4cGFuZENsaWNrID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKCFpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICBvbkV4cGFuZGVkQ2xpY2tlZChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIG9uRXhwYW5kZWRDbGlja2VkXSk7XHJcbiAgICBjb25zdCBoYW5kbGVPbkNsaWNrID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSBldmVudC50YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdCgnYnV0dG9uLCBbcm9sZT1cImJ1dHRvblwiXSwgYVtocmVmXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIFtyb2xlPVwibWVudWl0ZW1cIl0nKTtcclxuICAgICAgICAvLyBQcmV2ZW50aW5nIHNlbGVjdGluZyB0aGUgaXRlbSB3aGVuIGNsaWNraW5nIG9uIGludGVyYWN0aXZlIGVsZW1lbnRzIHdoZW4gYHNlbGVjdGFibGVgIGlzIGBzaW5nbGVgXHJcbiAgICAgICAgaWYgKGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBJZiBzZWxlY3RQYXJlbnRzIGlzIGZhbHNlIGFuZCB0aGlzIGlzIGEgcGFyZW50IGl0ZW0sIGhhbmRsZSBleHBhbmQvY29sbGFwc2UgaW5zdGVhZCBvZiBzZWxlY3Rpb25cclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZSAmJlxyXG4gICAgICAgICAgICAhc2VsZWN0UGFyZW50cyAmJlxyXG4gICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIG9uRXhwYW5kZWRDbGlja2VkKGV2ZW50KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZSkge1xyXG4gICAgICAgICAgICBoYW5kbGVDbGljayhldmVudCwgaXRlbUlkKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgdGFiSW5kZXggPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcclxuICAgICAgICBpZiAoaXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaXRlbVRvRm9jdXMgPT09IGl0ZW1JZCA/IDAgOiAtMTtcclxuICAgIH0sIFtpc0Rpc2FibGVkLCBpdGVtVG9Gb2N1cywgaXRlbUlkXSk7XHJcbiAgICBjb25zdCBzaG91bGRTaG93Q2hlY2tib3ggPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUubXVsdGkgJiZcclxuICAgICAgICAoaXNUb3BMZXZlbFNlbGVjdGFibGUgIT09IGZhbHNlIHx8ICF0b3BMZXZlbCk7XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIHdpdGhpbiB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIFByZXNzaW5nIGBDdHJsICsgRW50ZXJgIG9yIGBDb21tYW5kICsgRW50ZXJgIGZvY3VzZXMgdGhlIGZpcnN0IGludGVyYWN0aXZlIGVsZW1lbnQgd2l0aGluIHRoZSB0cmVlIGl0ZW1cclxuICAgICAqIGFuZCBsb2NrcyBmb2N1cyBpbnNpZGUgdGhlIHRyZWUgaXRlbS5cclxuICAgICAqXHJcbiAgICAgKiBJZiB0aGUgZm9jdXMgaXMgd2l0aGluIHRoZSBsYWJlbCBvciBhZGRpdGlvbmFsIGNvbnRlbnQsIGl0IGhhbmRsZXMga2V5IGV2ZW50cyBmb3IgaW50ZXJhY3Rpb24gZWxlbWVudHMuXHJcbiAgICAgKlxyXG4gICAgICogSXQgYWxzbyBoYW5kbGVzIHRoZSBvdGhlciBrZXlzIHRvIHRyaWdnZXIgdGhlIGNsaWNrIGV2ZW50IG9uIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKiAqKi9cclxuICAgIGNvbnN0IG9uS2V5RG93bkhhbmRsZXIgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBjb25zdCB7IGtleSwgdGFyZ2V0LCBjdXJyZW50VGFyZ2V0IH0gPSBldmVudDtcclxuICAgICAgICBjb25zdCBpc0VudGVyID0ga2V5ID09PSAnRW50ZXInO1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybE9yQ29tbWFuZCA9IGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleTtcclxuICAgICAgICBjb25zdCBpc0N0cmxFbnRlciA9IGlzQ3RybE9yQ29tbWFuZCAmJiBpc0VudGVyO1xyXG4gICAgICAgIC8vIElmIHRoZSBrZXkgaXMgQ3RybCArIEVudGVyIG9yIENvbW1hbmQgKyBFbnRlciwgZm9jdXMgdGhlIGZpcnN0IGludGVyYWN0aXZlIGVsZW1lbnRcclxuICAgICAgICAvLyBhbmQgbG9jayBmb2N1cyBpbnNpZGUgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmIChpc0N0cmxFbnRlciAmJiB0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgc2V0SXNJbnNpZGVUcmVlSXRlbSh0cnVlKTtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50c0xpc3QgPSBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzKGN1cnJlbnRUYXJnZXQsIGludGVyYWN0aXZlRWxlbWVudHMpO1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50VG9Gb2N1cyA9IGludGVyYWN0aXZlRWxlbWVudHNMaXN0WzBdO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudFRvRm9jdXMpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRUb0ZvY3VzLmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICB9LCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEVuc3VyZSB2YWxpZCBDU1Mgc2VsZWN0b3JzIGJ5IGVzY2FwaW5nIHNwZWNpYWwgY2hhcmFjdGVycyAoZS5nLiwgcGVyaW9kcyBpbiBpdGVtSWQpXHJcbiAgICAgICAgY29uc3Qgc2FmZUl0ZW1JZCA9IENTUy5lc2NhcGUoaXRlbUlkKTtcclxuICAgICAgICBjb25zdCBpc1dpdGhpbkxhYmVsT3JBZGRpdGlvbmFsQ29udGVudCA9IHRhcmdldC5jbG9zZXN0KGAjJHtzYWZlSXRlbUlkfS1sYWJlbCwgIyR7c2FmZUl0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCk7XHJcbiAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaGFuZGxlIGtleSBldmVudHMgZm9yIHRob3NlIGFyZWFzXHJcbiAgICAgICAgaWYgKGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50KSB7XHJcbiAgICAgICAgICAgIGhhbmRsZUxhYmVsQW5kQWRkaXRpb25hbENvbnRlbnRLZXlEb3duKGV2ZW50KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHRoZSB0cmVlIGl0ZW0gaXRzZWxmLCBoYW5kbGUga2V5IGRvd24gZm9yIHRoZSB0cmVlIGl0ZW1cclxuICAgICAgICBpZiAodGFyZ2V0ID09PSBjdXJyZW50VGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIGhhbmRsZUtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW1xyXG4gICAgICAgIGdldEludGVyYWN0aXZlRWxlbWVudHMsXHJcbiAgICAgICAgaW50ZXJhY3RpdmVFbGVtZW50cyxcclxuICAgICAgICBpdGVtSWQsXHJcbiAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24sXHJcbiAgICAgICAgaGFuZGxlS2V5RG93bixcclxuICAgIF0pO1xyXG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyZWVJdGVtQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogY29udGV4dFZhbHVlIH0sXHJcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IHN0eWxlOiB0cmVlSXRlbVN0eWxlcyB9LFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZFRyZWVJdGVtLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IFwiYXJpYS1leHBhbmRlZFwiOiBoYXNPd25UcmVlSXRlbXMgPyBleHBhbmRlZCA6IG51bGwsIFwiYXJpYS1zZWxlY3RlZFwiOiBzZWxlY3RlZEl0ZW0sIFwiYXJpYS1jaGVja2VkXCI6IHNob3VsZFNob3dDaGVja2JveCA/IGFyaWFDaGVja2VkVmFsdWUgOiBudWxsLCBcImRhdGEtdGVzdGlkXCI6IHRlc3RJZCwgZGVwdGg6IGl0ZW1EZXB0aCwgaGFzT3duVHJlZUl0ZW1zOiBoYXNPd25UcmVlSXRlbXMsIGlkOiBpdGVtSWQsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBpc1ZpcnR1YWxpemVkOiBoaWVyYXJjaHlDb250ZXh0LmlzVmlydHVhbGl6ZWQsIG5vZGVUeXBlOiBub2RlVHlwZSwgcm9sZTogXCJ0cmVlaXRlbVwiLCBzZWxlY3RhYmxlVHlwZTogc2VsZWN0YWJsZSwgc2VsZWN0ZWQ6IHNlbGVjdGVkSXRlbSwgdGhlbWU6IHRoZW1lLCB0YWJJbmRleDogdGFiSW5kZXgsIG9uS2V5RG93bjogb25LZXlEb3duSGFuZGxlciwgcmVmOiB0cmVlSXRlbVJlZiwgaG92ZXJDb2xvcjogaG92ZXJDb2xvciB9KSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkSXRlbVdyYXBwZXIsIHsgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1pdGVtd3JhcHBlcmAsIGRlcHRoOiBpdGVtRGVwdGgsIGhhc0FkZGl0aW9uYWxDb250ZW50OiAhIWFkZGl0aW9uYWxDb250ZW50LCBoYXNDdXN0b21JY29uU2l6ZTogISFleHBhbmRJY29uU3R5bGVzPy5zaXplLCBpZDogYCR7aXRlbUlkfS1pdGVtd3JhcHBlcmAsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBub2RlVHlwZTogbm9kZVR5cGUsIHNlbGVjdGFibGU6IHNlbGVjdGFibGUsIHN0eWxlOiBzdHlsZSwgdGhlbWU6IHRoZW1lLCByZWY6IG1lcmdlUmVmcyhyZWYsIGZvY3VzVHJhcEVsZW1lbnQpLCBvbkNsaWNrOiBoYW5kbGVPbkNsaWNrIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgaGFzT3duVHJlZUl0ZW1zICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZEV4cGFuZFdyYXBwZXIsIHsgc2l6ZTogZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSwgY29sb3I6IGV4cGFuZEljb25TdHlsZXM/LmNvbG9yLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWV4cGFuZGAsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBvbkNsaWNrOiBoYW5kbGVFeHBhbmRDbGljaywgdGhlbWU6IHRoZW1lIH0sIGV4cGFuZGVkID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRXhwYW5kTW9yZUljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZXZyb25SaWdodEljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSkpLFxyXG4gICAgICAgICAgICAgICAgICAgIHNob3VsZFNob3dDaGVja2JveCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZENoZWNrYm94V3JhcHBlciwgeyBoYXNBZGRpdGlvbmFsQ29udGVudDogISFhZGRpdGlvbmFsQ29udGVudCwgdGhlbWU6IHRoZW1lIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc093blRyZWVJdGVtcyA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEluZGV0ZXJtaW5hdGVDaGVja2JveCwgT2JqZWN0LmFzc2lnbih7fSwgY2hlY2tib3hQcm9wcywgeyBzdGF0dXM6IGNoZWNrZWRTdGF0dXMgfSkpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZWNrYm94LCBPYmplY3QuYXNzaWduKHt9LCBjaGVja2JveFByb3BzLCB7IGNoZWNrZWQ6IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4oY2hlY2tlZFN0YXR1cykgfSkpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsVGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpKSxcclxuICAgICAgICAgICAgICAgIGhhc0d1aWRlTGluZXMgJiZcclxuICAgICAgICAgICAgICAgICAgICAoaGllcmFyY2h5Q29udGV4dC5pc1ZpcnR1YWxpemVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbURlcHRoID4gMCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkuZnJvbSh7IGxlbmd0aDogaXRlbURlcHRoIH0sIChfLCBkKSA9PiAoUmVhY3QuY3JlYXRlRWxlbWVudChWaXJ0dWFsaXplZEd1aWRlTGluZSwgeyBrZXk6IGBndWlkZWxpbmUtJHtkfWAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tdmlydHVhbGl6ZWQtZ3VpZGVsaW5lLSR7ZH1gLCB0aGVtZTogdGhlbWUsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBzdHlsZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNldElubGluZVN0YXJ0OiBgY2FsYygke2NhbGN1bGF0ZU9mZnNldChUcmVlTm9kZVR5cGUuYnJhbmNoLCBkLCBmYWxzZSwgZmFsc2UsIHRydWUpfSArICR7ZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7ZXhwYW5kSWNvblN0eWxlcy5zaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fSAvIDIgLSAwLjVweClgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfSkpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGhhc093blRyZWVJdGVtcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWQgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoR3VpZGVMaW5lLCB7IFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tZ3VpZGVsaW5lYCwgdGhlbWU6IHRoZW1lLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgZ3VpZGVMaW5lTGVmdDogYGNhbGMoJHtjYWxjdWxhdGVPZmZzZXQoVHJlZU5vZGVUeXBlLmJyYW5jaCwgaXRlbURlcHRoLCBmYWxzZSwgZmFsc2UsIGZhbHNlKX0gKyAke2V4cGFuZEljb25TdHlsZXM/LnNpemUgIT09IHVuZGVmaW5lZCA/IGAke2V4cGFuZEljb25TdHlsZXMuc2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn0gLyAyIC0gMC41cHgpIGAgfSkpKSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LkNoaWxkcmVuLm1hcChjaGlsZHJlbiwgKGNoaWxkLCBjaGlsZEluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkPy50eXBlICE9PSBUcmVlSXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFVzZSB0aGUgc3RhYmxlLCBwcmUtbWVtb2lzZWQgdmFsdWUgKHNlZSBjaGlsZEhpZXJhcmNoaWVzIGFib3ZlKS5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXN0ZWRIaWVyYXJjaHlWYWx1ZSA9IGNoaWxkSGllcmFyY2hpZXNbY2hpbGRJbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyYW5zaXRpb24sIHsgaXNPcGVuOiBleHBhbmRlZCwgdW5tb3VudE9uRXhpdDogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwidWxcIiwgeyByb2xlOiBcImdyb3VwXCIgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0LlByb3ZpZGVyLCB7IGtleTogY2hpbGQucHJvcHMuaXRlbUlkLCB2YWx1ZTogbmVzdGVkSGllcmFyY2h5VmFsdWUgfSwgY2hpbGQpKSkpO1xyXG4gICAgICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICBpc01hY09TICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFZpc3VhbGx5SGlkZGVuLCBudWxsLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChBbm5vdW5jZSwgbnVsbCwgZXhwYW5kZWRcclxuICAgICAgICAgICAgICAgICAgICA/IGkxOG4uZXhwYW5zaW9uU3RhdGUuZXhwYW5kZWRcclxuICAgICAgICAgICAgICAgICAgICA6IGkxOG4uZXhwYW5zaW9uU3RhdGUuY29sbGFwc2VkKSkpKSkpO1xyXG59KTtcclxuLyoqXHJcbiAqIEN1c3RvbSBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciBSZWFjdC5tZW1vXHJcbiAqIE9ubHkgcmUtcmVuZGVyIFRyZWVJdGVtIHdoZW4gcmVsZXZhbnQgcHJvcHMgY2hhbmdlXHJcbiAqL1xyXG5mdW5jdGlvbiBhcmVQcm9wc0VxdWFsKHByZXZQcm9wcywgbmV4dFByb3BzKSB7XHJcbiAgICAvLyBDaGVjayBpZiBpdGVtSWQgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5pdGVtSWQgIT09IG5leHRQcm9wcy5pdGVtSWQpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBsYWJlbCBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmxhYmVsICE9PSBuZXh0UHJvcHMubGFiZWwpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBkaXNhYmxlZCBzdGF0ZSBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmlzRGlzYWJsZWQgIT09IG5leHRQcm9wcy5pc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgaWNvbiBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmljb24gIT09IG5leHRQcm9wcy5pY29uKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgYWRkaXRpb25hbCBjb250ZW50IGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuYWRkaXRpb25hbENvbnRlbnQgIT09IG5leHRQcm9wcy5hZGRpdGlvbmFsQ29udGVudCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGhvdmVyIGNvbG9yIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaG92ZXJDb2xvciAhPT0gbmV4dFByb3BzLmhvdmVyQ29sb3IpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBjaGlsZHJlbiBjaGFuZ2VkIChmb3IgbmVzdGVkIHRyZWUgaXRlbXMpXHJcbiAgICAvLyBVc2luZyB0eXBlIGFzc2VydGlvbiBzaW5jZSBjaGlsZHJlbiBjb21lcyBmcm9tIFJlYWN0LkhUTUxBdHRyaWJ1dGVzXHJcbiAgICBpZiAocHJldlByb3BzLmNoaWxkcmVuICE9PSBuZXh0UHJvcHMuY2hpbGRyZW4pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBzdHlsZXMgY2hhbmdlZFxyXG4gICAgLy8gVXNpbmcgdHlwZSBhc3NlcnRpb24gc2luY2Ugc3R5bGUgY29tZXMgZnJvbSBSZWFjdC5IVE1MQXR0cmlidXRlc1xyXG4gICAgaWYgKHByZXZQcm9wcy5zdHlsZSAhPT0gbmV4dFByb3BzLnN0eWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZQcm9wcy5sYWJlbFN0eWxlICE9PSBuZXh0UHJvcHMubGFiZWxTdHlsZSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChwcmV2UHJvcHMudHJlZUl0ZW1TdHlsZXMgIT09IG5leHRQcm9wcy50cmVlSXRlbVN0eWxlcykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIEFsbCByZWxldmFudCBwcm9wcyBhcmUgZXF1YWwsIHNraXAgcmUtcmVuZGVyXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxyXG4vKipcclxuICogTWVtb2l6ZWQgVHJlZUl0ZW0gY29tcG9uZW50XHJcbiAqIE9ubHkgcmUtcmVuZGVycyB3aGVuIHJlbGV2YW50IHByb3BzIGNoYW5nZSwgaW1wcm92aW5nIHBlcmZvcm1hbmNlIGZvciBsYXJnZSB0cmVlc1xyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFRyZWVJdGVtID0gUmVhY3QubWVtbyhUcmVlSXRlbUNvbXBvbmVudCwgYXJlUHJvcHNFcXVhbCk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRyZWVJdGVtLmpzLm1hcCJdfQ== */"));
|
|
29448
|
+
}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF1SnlDIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dCB9IGZyb20gJy4vVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdDb25maWdDb250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld0NvbmZpZ0NvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0V4cGFuc2lvbkNvbnRleHQgfSBmcm9tICcuL1RyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyBjYWxjdWxhdGVPZmZzZXQsIGdldFRyZWVJdGVtTGFiZWxDb2xvciwgZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yLCBUcmVlTm9kZVR5cGUsIH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IEkxOG5Db250ZXh0IH0gZnJvbSAnLi4vLi4nO1xyXG5pbXBvcnQgdXNlRGV2aWNlRGV0ZWN0IGZyb20gJy4uLy4uL2hvb2tzL3VzZURldmljZURldGVjdCc7XHJcbmltcG9ydCB7IHVzZUZvY3VzTG9jayB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZUZvY3VzTG9jayc7XHJcbmltcG9ydCB7IHVzZUlzSW52ZXJzZSB9IGZyb20gJy4uLy4uL2ludmVyc2UnO1xyXG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgfSBmcm9tICcuLi8uLi90aGVtZS9UaGVtZUNvbnRleHQnO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmltcG9ydCB7IEFubm91bmNlIH0gZnJvbSAnLi4vQW5ub3VuY2UnO1xyXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gJy4uL0NoZWNrYm94JztcclxuaW1wb3J0IHsgSW5kZXRlcm1pbmF0ZUNoZWNrYm94LCBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMsIH0gZnJvbSAnLi4vSW5kZXRlcm1pbmF0ZUNoZWNrYm94JztcclxuaW1wb3J0IHsgVHJhbnNpdGlvbiB9IGZyb20gJy4uL1RyYW5zaXRpb24nO1xyXG5pbXBvcnQgeyBWaXN1YWxseUhpZGRlbiB9IGZyb20gJy4uL1Zpc3VhbGx5SGlkZGVuJztcclxuY29uc3QgU3R5bGVkVHJlZUl0ZW0gPSBzdHlsZWQubGkgYFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDBcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWw3MDB9O1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIGN1cnNvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbVdyYXBwZXJDdXJzb3IocHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMuc2VsZWN0YWJsZVR5cGUsIHByb3BzLm5vZGVUeXBlKX07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcblxuICBwYWRkaW5nLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCBmYWxzZSwgZmFsc2UsIHByb3BzLmlzVmlydHVhbGl6ZWQpfTtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuXG4gICAgJiA+ICo6Zmlyc3QtY2hpbGQge1xuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkXG4gICAgICAgICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLmZvY3VzSW52ZXJzZVxyXG4gICAgOiBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXN9O1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIGZhbHNlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgbWFyZ2luLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCB0cnVlLCB0cnVlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgcGFkZGluZy1ibG9jay1lbmQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctYmxvY2stc3RhcnQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJlxyXG4gICAgY3NzIGBcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzLmlzSW52ZXJzZVxyXG4gICAgICAgID8gcHJvcHMudGhlbWUuY29sb3JzLnRlcnRpYXJ5NTAwXHJcbiAgICAgICAgOiBwcm9wcy50aGVtZS5jb2xvcnMucHJpbWFyeTUwMH07XG4gICAgICAgICAgYmxvY2stc2l6ZTogMTAwJTtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICBpbmxpbmUtc2l6ZTogJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ6IDA7XG4gICAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAwO1xuICAgICAgICB9XG4gICAgICBgfVxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBnZXRIb3ZlckJhY2tncm91bmQoe1xyXG4gICAgaXNEaXNhYmxlZDogcHJvcHMuaXNEaXNhYmxlZCxcclxuICAgIGhvdmVyQ29sb3I6IHByb3BzLmhvdmVyQ29sb3IsXHJcbiAgICBpc0ludmVyc2U6IHByb3BzLmlzSW52ZXJzZSxcclxuICAgIHRoZW1lOiBwcm9wcy50aGVtZSxcclxufSl9O1xuICAgIH1cbiAgfVxuYDtcclxuZnVuY3Rpb24gZ2V0SG92ZXJCYWNrZ3JvdW5kKHsgaXNEaXNhYmxlZCwgaG92ZXJDb2xvciwgaXNJbnZlcnNlLCB0aGVtZSB9KSB7XHJcbiAgICBpZiAoaXNEaXNhYmxlZClcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgaWYgKGhvdmVyQ29sb3IpXHJcbiAgICAgICAgcmV0dXJuIGhvdmVyQ29sb3I7XHJcbiAgICBjb25zdCB0cmFuc3BhcmVuY3kgPSBpc0ludmVyc2UgPyAwLjggOiAwLjk1O1xyXG4gICAgcmV0dXJuIHRyYW5zcGFyZW50aXplKHRyYW5zcGFyZW5jeSwgdGhlbWUuY29sb3JzLm5ldXRyYWw5MDApO1xyXG59XHJcbmNvbnN0IEljb25XcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBtYXJnaW4tbGVmdDogMDtcblxuICBzdmcge1xuICAgIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pY29uU2l6ZXMubWVkaXVtfXB4O1xuICAgIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgfVxuYDtcclxuY29uc3QgU3R5bGVkTGFiZWxXcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgd2lkdGg6IDEwMCU7XG5gO1xyXG5jb25zdCBTdHlsZWRFeHBhbmRXcmFwcGVyID0gc3R5bGVkLmRpdiBgXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgbWFyZ2luLXJpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuY29sb3IgfHxcclxuICAgIGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIHdpZHRoOiAkeyh7IHNpemUsIHRoZW1lIH0pID0+IHNpemUgIT09IHVuZGVmaW5lZCA/IGAke3NpemV9cHhgIDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDZ9O1xuICBoZWlnaHQ6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG5gO1xyXG5jb25zdCBHdWlkZUxpbmUgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDh9O1xuICBib3R0b206IDA7XG4gIGluc2V0LWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy5ndWlkZUxpbmVMZWZ0fTtcbiAgd2lkdGg6IDA7XG4gIGJvcmRlci1pbmxpbmUtc3RhcnQ6IDFweCBzb2xpZFxuICAgICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHRyYW5zcGFyZW50aXplKDAuNywgcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDApXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMzAwfTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHotaW5kZXg6IDE7XG5gO1xyXG5jb25zdCBWaXJ0dWFsaXplZEd1aWRlTGluZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogMDtcbiAgYm9yZGVyLWlubGluZS1zdGFydDogMXB4IHNvbGlkXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDEwMClcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwzMDB9O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW1Db21wb25lbnQgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XHJcbiAgICBjb25zdCB7IGFkZGl0aW9uYWxDb250ZW50LCBjaGlsZHJlbiwgaG92ZXJDb2xvciwgaWNvbiwgaW5kZXg6IGluZGV4UHJvcCwgbGFiZWwsIGxhYmVsU3R5bGUsIHN0eWxlLCB0ZXN0SWQsIHRvcExldmVsOiB0b3BMZXZlbFByb3AsIHRyZWVJdGVtU3R5bGVzLCAuLi5yZXN0IH0gPSBwcm9wcztcclxuICAgIGNvbnN0IHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xyXG4gICAgY29uc3QgaXNJbnZlcnNlID0gdXNlSXNJbnZlcnNlKCk7XHJcbiAgICAvLyBSZWFkIGhpZXJhcmNoeSBpbmZvcm1hdGlvbiBmcm9tIGNvbnRleHQgKHJlZHVjZXMgY2xvbmVFbGVtZW50IG92ZXJoZWFkKVxyXG4gICAgY29uc3QgaGllcmFyY2h5Q29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0KTtcclxuICAgIC8vIFVzZSBjb250ZXh0IHZhbHVlcyBpZiBwcm9wcyBhcmUgbm90IHByb3ZpZGVkIChmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSlcclxuICAgIGNvbnN0IGluZGV4ID0gaW5kZXhQcm9wICE9PSB1bmRlZmluZWQgPyBpbmRleFByb3AgOiBoaWVyYXJjaHlDb250ZXh0LmluZGV4O1xyXG4gICAgY29uc3QgdG9wTGV2ZWwgPSB0b3BMZXZlbFByb3AgIT09IHVuZGVmaW5lZCA/IHRvcExldmVsUHJvcCA6IGhpZXJhcmNoeUNvbnRleHQuaXNUb3BMZXZlbDtcclxuICAgIC8vIENvbnN1bWUgc3BsaXQgY29udGV4dHMgZm9yIHJlZHVjZWQgcmUtcmVuZGVyIHNjb3BlXHJcbiAgICBjb25zdCB7IGl0ZW1Ub0ZvY3VzIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGhhbmRsZUV4cGFuZGVkQ2hhbmdlIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGV4cGFuZEljb25TdHlsZXMsIGhhc0d1aWRlTGluZXMsIGhhc0ljb25zLCBpc1RvcExldmVsU2VsZWN0YWJsZSwgc2VsZWN0YWJsZSwgc2VsZWN0UGFyZW50cyA9IHRydWUsIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29uZmlnQ29udGV4dCk7XHJcbiAgICAvLyBQYXNzIHRoZSByZXNvbHZlZCB2YWx1ZXMgdG8gdXNlVHJlZUl0ZW1cclxuICAgIGNvbnN0IHByb3BzV2l0aEhpZXJhcmNoeSA9IHtcclxuICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICBpbmRleCxcclxuICAgICAgICB0b3BMZXZlbCxcclxuICAgICAgICBpdGVtRGVwdGg6IGhpZXJhcmNoeUNvbnRleHQuZGVwdGgsXHJcbiAgICAgICAgcGFyZW50RGVwdGg6IGhpZXJhcmNoeUNvbnRleHQucGFyZW50RGVwdGgsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyBjb250ZXh0VmFsdWUsIGhhbmRsZUNsaWNrLCBoYW5kbGVLZXlEb3duIH0gPSB1c2VUcmVlSXRlbShwcm9wc1dpdGhIaWVyYXJjaHksIGZvcndhcmRlZFJlZik7XHJcbiAgICBjb25zdCB7IGlzRGlzYWJsZWQgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IHsgaXNNYWNPUyB9ID0gdXNlRGV2aWNlRGV0ZWN0KCk7XHJcbiAgICBjb25zdCBpMThuID0gUmVhY3QudXNlQ29udGV4dChJMThuQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGNoZWNrYm94Q2hhbmdlSGFuZGxlciwgY2hlY2tlZFN0YXR1cywgZXhwYW5kZWQsIGhhc093blRyZWVJdGVtcywgaXRlbURlcHRoLCBpdGVtSWQsIHJlZiwgc2VsZWN0ZWRJdGVtcywgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IG5vZGVUeXBlID0gaGFzT3duVHJlZUl0ZW1zID8gVHJlZU5vZGVUeXBlLmJyYW5jaCA6IFRyZWVOb2RlVHlwZS5sZWFmO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZVxyXG4gICAgICAgID8gc2VsZWN0ZWRJdGVtcz8uWzBdPy5pdGVtSWQgPT09IGl0ZW1JZFxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IGFyaWFDaGVja2VkVmFsdWUgPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUubXVsdGlcclxuICAgICAgICA/IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5pbmRldGVybWluYXRlXHJcbiAgICAgICAgICAgID8gJ21peGVkJ1xyXG4gICAgICAgICAgICA6IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5jaGVja2VkXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgW2lzSW5zaWRlVHJlZUl0ZW0sIHNldElzSW5zaWRlVHJlZUl0ZW1dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgdHJlZUl0ZW1SZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XHJcbiAgICBjb25zdCBmb2N1c1RyYXBFbGVtZW50ID0gdXNlRm9jdXNMb2NrKGlzSW5zaWRlVHJlZUl0ZW0pO1xyXG4gICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50cyA9ICdidXR0b24sIFtyb2xlPVwiYnV0dG9uXCJdLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgYVtocmVmXSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJztcclxuICAgIGNvbnN0IGdldEludGVyYWN0aXZlRWxlbWVudHMgPSBSZWFjdC51c2VDYWxsYmFjaygoY29udGFpbmVyLCBzZWxlY3RvcikgPT4ge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSkuZmlsdGVyKGVsID0+ICFlbC5oYXNBdHRyaWJ1dGUoJ3RhYmluZGV4JykgfHxcclxuICAgICAgICAgICAgKGVsLnRhYkluZGV4ICE9PSB1bmRlZmluZWQgJiYgZWwudGFiSW5kZXggPj0gMCkpO1xyXG4gICAgfSwgW10pO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGFsbG93cyBmb3Iga2V5Ym9hcmQgbmF2aWdhdGlvbiB3aXRoaW4gdGhlIGxhYmVsIGFuZCBhZGRpdGlvbmFsIGNvbnRlbnQgb2YgYSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogWW91IGNhbiBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIHVzaW5nIHRoZSBgVGFiYCBrZXksIGFjdGl2YXRlIHRoZW0gd2l0aCBgRW50ZXJgIG9yIGBTcGFjZWAsXHJcbiAgICAgKiBhbmQgZXhpdCBvdXRzaWRlIGFuZCBmb2N1cyB0aGUgd2hvbGUgdHJlZSBpdGVtIHdpdGggYEVzY2FwZWAuXHJcbiAgICAgKiAqKi9cclxuICAgIGNvbnN0IGhhbmRsZUxhYmVsQW5kQWRkaXRpb25hbENvbnRlbnRLZXlEb3duID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBrZXksIHRhcmdldCwgY3VycmVudFRhcmdldCwgc2hpZnRLZXkgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gdGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNTcGFjZSA9IGtleSA9PT0gJyAnO1xyXG4gICAgICAgIGNvbnN0IGlzRXNjYXBlID0ga2V5ID09PSAnRXNjYXBlJztcclxuICAgICAgICBjb25zdCBpc1RhYiA9IGtleSA9PT0gJ1RhYic7XHJcbiAgICAgICAgY29uc3QgaXNBY3RpdmF0aW9uS2V5ID0gaXNFbnRlciB8fCBpc1NwYWNlO1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBgVGFiYCwgd2UgbmF2aWdhdGUgdGhyb3VnaCBpbnRlcmFjdGl2ZSBlbGVtZW50cyBpbnNpZGUgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmIChpc1RhYiAmJiBpc0luc2lkZVRyZWVJdGVtKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudHNMaXN0ID0gZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyhjdXJyZW50VGFyZ2V0LCBpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAgICAgLy8gRmlsdGVyIGxpc3Qgb2YgaW50ZXJhY3RpdmUgZWxlbWVudHMgd2hpY2ggYXJlIG9ubHkgaW5jbHVkZWQgZm9yIGN1cnJlbnQgdHJlZSBpdGVtXHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMgPSBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdC5maWx0ZXIoZWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2xvc2VzdFRyZWVJdGVtID0gZWwuY2xvc2VzdCgnW3JvbGU9XCJ0cmVlaXRlbVwiXScpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsb3Nlc3RUcmVlSXRlbSA9PT0gdHJlZUl0ZW1SZWYuY3VycmVudDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMuaW5kZXhPZihjdXJyZW50RWxlbWVudCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHNoaWZ0S2V5ID8gLTEgOiAxO1xyXG4gICAgICAgICAgICBjb25zdCB0b3RhbCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMubGVuZ3RoO1xyXG4gICAgICAgICAgICBjb25zdCBuZXh0SW5kZXggPSAoY3VycmVudEluZGV4ICsgZGlyZWN0aW9uICsgdG90YWwpICUgdG90YWw7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50c1tuZXh0SW5kZXhdO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudFRvRm9jdXMpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZWxlbWVudFRvRm9jdXMuZm9jdXMoKSwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBQcmVzc2luZyBgRW50ZXJgIG9yIGBTcGFjZWAgb24gYW4gaW50ZXJhY3RpdmUgZWxlbWVudCB3aWxsIHRyaWdnZXIgaXRzIGNsaWNrIGV2ZW50XHJcbiAgICAgICAgaWYgKGlzQWN0aXZhdGlvbktleSAmJiBpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgaW50ZXJhY3RpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE1vdmVzIGZvY3VzIG91dHNpZGUgdGhlIHRyZWUgaXRlbSBhbmQgZm9jdXNlcyB0aGUgdHJlZSBpdGVtIGl0c2VsZiB3aGVuIGBFc2NhcGVgIGlzIHByZXNzZWRcclxuICAgICAgICBpZiAoaXNFc2NhcGUpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHNldElzSW5zaWRlVHJlZUl0ZW0oZmFsc2UpO1xyXG4gICAgICAgICAgICBjb25zdCB0cmVlSXRlbU5vZGUgPSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICBpZiAodHJlZUl0ZW1Ob2RlKSB7XHJcbiAgICAgICAgICAgICAgICB0cmVlSXRlbU5vZGUuZm9jdXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzSW5zaWRlVHJlZUl0ZW1dKTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gUmVhY3QudXNlTWVtbygoKSA9PiBub2RlVHlwZSA9PT0gVHJlZU5vZGVUeXBlLmJyYW5jaCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEZvbGRlckljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KEFydGljbGVJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSksIFtub2RlVHlwZV0pO1xyXG4gICAgLy8gTWVtb2lzZSB0aGUgbGFiZWwgSlNYIHNvIHRoZSBgY2hlY2tib3hQcm9wc2AgbWVtbyBiZWxvdyBhY3R1YWxseSBoYXNcclxuICAgIC8vIGEgc3RhYmxlIGBsYWJlbFRleHRgIHJlZmVyZW5jZSBiZXR3ZWVuIHJlbmRlcnMuIFByZXZpb3VzbHkgdGhpc1xyXG4gICAgLy8gZWxlbWVudCB3YXMgcmUtY3JlYXRlZCBvbiBldmVyeSByZW5kZXIsIHdoaWNoIGZvcmNlZFxyXG4gICAgLy8gYGNoZWNrYm94UHJvcHNgIHRvIGFsc28gYmUgcmUtY3JlYXRlZCBhbmQgYW55IGZ1dHVyZSBSZWFjdC5tZW1vIG9uXHJcbiAgICAvLyBDaGVja2JveC9JbmRldGVybWluYXRlQ2hlY2tib3ggd291bGQgYWx3YXlzIGJhaWwgb3V0LlxyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gUmVhY3QudXNlTWVtbygoKSA9PiAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRMYWJlbFdyYXBwZXIsIHsgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgc3R5bGU6IGxhYmVsU3R5bGUsIGlkOiBgJHtpdGVtSWR9LWxhYmVsYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1sYWJlbGAgfSxcclxuICAgICAgICBoYXNJY29ucyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChJY29uV3JhcHBlciwgeyBpc0ludmVyc2U6IGlzSW52ZXJzZSwgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWljb25gIH0sIGljb24gfHwgZGVmYXVsdEljb24pKSxcclxuICAgICAgICBsYWJlbCkpLCBbXHJcbiAgICAgICAgdGhlbWUsXHJcbiAgICAgICAgaXNEaXNhYmxlZCxcclxuICAgICAgICBpc0ludmVyc2UsXHJcbiAgICAgICAgbGFiZWxTdHlsZSxcclxuICAgICAgICBpdGVtSWQsXHJcbiAgICAgICAgdGVzdElkLFxyXG4gICAgICAgIGhhc0ljb25zLFxyXG4gICAgICAgIGljb24sXHJcbiAgICAgICAgZGVmYXVsdEljb24sXHJcbiAgICAgICAgbGFiZWwsXHJcbiAgICBdKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBSZWFjdC51c2VNZW1vKCgpID0+IGFkZGl0aW9uYWxDb250ZW50ID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQWRkaXRpb25hbENvbnRlbnRXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaWQ6IGAke2l0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgIH0sIGFkZGl0aW9uYWxDb250ZW50KSkgOiBudWxsLCBbYWRkaXRpb25hbENvbnRlbnQsIHRoZW1lLCBpdGVtSWQsIHRlc3RJZF0pO1xyXG4gICAgLy8gU3RhYmxlIHBlci1jaGlsZCBoaWVyYXJjaHkgdmFsdWVzLiBUaGUgcmVmZXJlbmNlIG11c3Qgbm90IGNoYW5nZSBvblxyXG4gICAgLy8gcmUtcmVuZGVycyB0cmlnZ2VyZWQgYnkgVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0LCBvdGhlcndpc2UgZXZlcnlcclxuICAgIC8vIG5lc3RlZCBUcmVlSXRlbSByZS1yZW5kZXJzIHRocm91Z2ggdGhlIGNvbnRleHQgYW5kIFJlYWN0Lm1lbW8gaXNcclxuICAgIC8vIGRlZmVhdGVkLlxyXG4gICAgY29uc3QgY2hpbGRIaWVyYXJjaGllcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvdW50ID0gUmVhY3QuQ2hpbGRyZW4uY291bnQoY2hpbGRyZW4pO1xyXG4gICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShjb3VudCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGFycltpXSA9IHtcclxuICAgICAgICAgICAgICAgIGRlcHRoOiBpdGVtRGVwdGggKyAxLFxyXG4gICAgICAgICAgICAgICAgcGFyZW50RGVwdGg6IGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgIGlzVG9wTGV2ZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhcnI7XHJcbiAgICB9LCBbY2hpbGRyZW4sIGl0ZW1EZXB0aF0pO1xyXG4gICAgLy8gTWVtb2l6ZSBpbmxpbmUgc3R5bGUgb2JqZWN0cyB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IHJlLXJlbmRlcnNcclxuICAgIGNvbnN0IGNoZWNrYm94SW5wdXRTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHsgbWFyZ2luUmlnaHQ6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzIH0pLCBbdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDNdKTtcclxuICAgIGNvbnN0IGNoZWNrYm94TGFiZWxTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcclxuICAgICAgICBwYWRkaW5nOiAwLFxyXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICB9KSwgW10pO1xyXG4gICAgLy8gUHJvcHMgc2hhcmVkIGJ5IENoZWNrYm94IGFuZCBJbmRldGVybWluYXRlQ2hlY2tib3hcclxuICAgIGNvbnN0IGNoZWNrYm94UHJvcHMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XHJcbiAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaGlkZUZvY3VzOiB0cnVlLFxyXG4gICAgICAgIGlkOiBgJHtpdGVtSWR9LWNoZWNrYm94YCxcclxuICAgICAgICBpbnB1dFN0eWxlOiBjaGVja2JveElucHV0U3R5bGUsXHJcbiAgICAgICAgbGFiZWxTdHlsZTogY2hlY2tib3hMYWJlbFN0eWxlLFxyXG4gICAgICAgIGxhYmVsVGV4dDogbGFiZWxUZXh0LFxyXG4gICAgICAgIG9uQ2hhbmdlOiBjaGVja2JveENoYW5nZUhhbmRsZXIsXHJcbiAgICAgICAgdGFiSW5kZXg6IC0xLFxyXG4gICAgICAgIHRlc3RJZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICB9KSwgW1xyXG4gICAgICAgIGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaXRlbUlkLFxyXG4gICAgICAgIGNoZWNrYm94SW5wdXRTdHlsZSxcclxuICAgICAgICBjaGVja2JveExhYmVsU3R5bGUsXHJcbiAgICAgICAgbGFiZWxUZXh0LFxyXG4gICAgICAgIGNoZWNrYm94Q2hhbmdlSGFuZGxlcixcclxuICAgIF0pO1xyXG4gICAgY29uc3Qgb25FeHBhbmRlZENsaWNrZWQgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGhhbmRsZUV4cGFuZGVkQ2hhbmdlKGV2ZW50LCBpdGVtSWQpO1xyXG4gICAgfSwgW2hhbmRsZUV4cGFuZGVkQ2hhbmdlLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IGhhbmRsZUV4cGFuZENsaWNrID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKCFpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICBvbkV4cGFuZGVkQ2xpY2tlZChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIG9uRXhwYW5kZWRDbGlja2VkXSk7XHJcbiAgICBjb25zdCBoYW5kbGVPbkNsaWNrID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSBldmVudC50YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdCgnYnV0dG9uLCBbcm9sZT1cImJ1dHRvblwiXSwgYVtocmVmXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIFtyb2xlPVwibWVudWl0ZW1cIl0nKTtcclxuICAgICAgICAvLyBQcmV2ZW50aW5nIHNlbGVjdGluZyB0aGUgaXRlbSB3aGVuIGNsaWNraW5nIG9uIGludGVyYWN0aXZlIGVsZW1lbnRzIHdoZW4gYHNlbGVjdGFibGVgIGlzIGBzaW5nbGVgXHJcbiAgICAgICAgaWYgKGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBJZiBzZWxlY3RQYXJlbnRzIGlzIGZhbHNlIGFuZCB0aGlzIGlzIGEgcGFyZW50IGl0ZW0sIGhhbmRsZSBleHBhbmQvY29sbGFwc2UgaW5zdGVhZCBvZiBzZWxlY3Rpb25cclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZSAmJlxyXG4gICAgICAgICAgICAhc2VsZWN0UGFyZW50cyAmJlxyXG4gICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMpIHtcclxuICAgICAgICAgICAgb25FeHBhbmRlZENsaWNrZWQoZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEluIHNlbGVjdGFibGU9b2ZmIG1vZGUsIGNsaWNraW5nIGFueXdoZXJlIG9uIGEgcGFyZW50IGl0ZW0gdG9nZ2xlcyBleHBhbmQvY29sbGFwc2VcclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLm9mZiAmJiBoYXNPd25UcmVlSXRlbXMpIHtcclxuICAgICAgICAgICAgb25FeHBhbmRlZENsaWNrZWQoZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUuc2luZ2xlKSB7XHJcbiAgICAgICAgICAgIGhhbmRsZUNsaWNrKGV2ZW50LCBpdGVtSWQpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCB0YWJJbmRleCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpdGVtVG9Gb2N1cyA9PT0gaXRlbUlkID8gMCA6IC0xO1xyXG4gICAgfSwgW2lzRGlzYWJsZWQsIGl0ZW1Ub0ZvY3VzLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IHNob3VsZFNob3dDaGVja2JveCA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aSAmJlxyXG4gICAgICAgIChpc1RvcExldmVsU2VsZWN0YWJsZSAhPT0gZmFsc2UgfHwgIXRvcExldmVsKTtcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gd2l0aGluIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogUHJlc3NpbmcgYEN0cmwgKyBFbnRlcmAgb3IgYENvbW1hbmQgKyBFbnRlcmAgZm9jdXNlcyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudCB3aXRoaW4gdGhlIHRyZWUgaXRlbVxyXG4gICAgICogYW5kIGxvY2tzIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIElmIHRoZSBmb2N1cyBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaXQgaGFuZGxlcyBrZXkgZXZlbnRzIGZvciBpbnRlcmFjdGlvbiBlbGVtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBJdCBhbHNvIGhhbmRsZXMgdGhlIG90aGVyIGtleXMgdG8gdHJpZ2dlciB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIHRyZWUgaXRlbS5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3Qgb25LZXlEb3duSGFuZGxlciA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsga2V5LCB0YXJnZXQsIGN1cnJlbnRUYXJnZXQgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNDdHJsT3JDb21tYW5kID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5O1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybEVudGVyID0gaXNDdHJsT3JDb21tYW5kICYmIGlzRW50ZXI7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBDdHJsICsgRW50ZXIgb3IgQ29tbWFuZCArIEVudGVyLCBmb2N1cyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudFxyXG4gICAgICAgIC8vIGFuZCBsb2NrIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzQ3RybEVudGVyICYmIHRhcmdldCA9PT0gY3VycmVudFRhcmdldCkge1xyXG4gICAgICAgICAgICBzZXRJc0luc2lkZVRyZWVJdGVtKHRydWUpO1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdCA9IGdldEludGVyYWN0aXZlRWxlbWVudHMoY3VycmVudFRhcmdldCwgaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gaW50ZXJhY3RpdmVFbGVtZW50c0xpc3RbMF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gRW5zdXJlIHZhbGlkIENTUyBzZWxlY3RvcnMgYnkgZXNjYXBpbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChlLmcuLCBwZXJpb2RzIGluIGl0ZW1JZClcclxuICAgICAgICBjb25zdCBzYWZlSXRlbUlkID0gQ1NTLmVzY2FwZShpdGVtSWQpO1xyXG4gICAgICAgIGNvbnN0IGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50ID0gdGFyZ2V0LmNsb3Nlc3QoYCMke3NhZmVJdGVtSWR9LWxhYmVsLCAjJHtzYWZlSXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgKTtcclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHdpdGhpbiB0aGUgbGFiZWwgb3IgYWRkaXRpb25hbCBjb250ZW50LCBoYW5kbGUga2V5IGV2ZW50cyBmb3IgdGhvc2UgYXJlYXNcclxuICAgICAgICBpZiAoaXNXaXRoaW5MYWJlbE9yQWRkaXRpb25hbENvbnRlbnQpIHtcclxuICAgICAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaXMgdGhlIHRyZWUgaXRlbSBpdHNlbGYsIGhhbmRsZSBrZXkgZG93biBmb3IgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgaGFuZGxlS2V5RG93bihldmVudCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9LCBbXHJcbiAgICAgICAgZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyxcclxuICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnRzLFxyXG4gICAgICAgIGl0ZW1JZCxcclxuICAgICAgICBoYW5kbGVMYWJlbEFuZEFkZGl0aW9uYWxDb250ZW50S2V5RG93bixcclxuICAgICAgICBoYW5kbGVLZXlEb3duLFxyXG4gICAgXSk7XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBjb250ZXh0VmFsdWUgfSxcclxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgc3R5bGU6IHRyZWVJdGVtU3R5bGVzIH0sXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkVHJlZUl0ZW0sIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgXCJhcmlhLWV4cGFuZGVkXCI6IGhhc093blRyZWVJdGVtcyA/IGV4cGFuZGVkIDogbnVsbCwgXCJhcmlhLXNlbGVjdGVkXCI6IHNlbGVjdGVkSXRlbSwgXCJhcmlhLWNoZWNrZWRcIjogc2hvdWxkU2hvd0NoZWNrYm94ID8gYXJpYUNoZWNrZWRWYWx1ZSA6IG51bGwsIFwiZGF0YS10ZXN0aWRcIjogdGVzdElkLCBkZXB0aDogaXRlbURlcHRoLCBoYXNPd25UcmVlSXRlbXM6IGhhc093blRyZWVJdGVtcywgaWQ6IGl0ZW1JZCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIGlzVmlydHVhbGl6ZWQ6IGhpZXJhcmNoeUNvbnRleHQuaXNWaXJ0dWFsaXplZCwgbm9kZVR5cGU6IG5vZGVUeXBlLCByb2xlOiBcInRyZWVpdGVtXCIsIHNlbGVjdGFibGVUeXBlOiBzZWxlY3RhYmxlLCBzZWxlY3RlZDogc2VsZWN0ZWRJdGVtLCB0aGVtZTogdGhlbWUsIHRhYkluZGV4OiB0YWJJbmRleCwgb25LZXlEb3duOiBvbktleURvd25IYW5kbGVyLCByZWY6IHRyZWVJdGVtUmVmLCBob3ZlckNvbG9yOiBob3ZlckNvbG9yIH0pLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRJdGVtV3JhcHBlciwgeyBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCA/PyBpdGVtSWR9LWl0ZW13cmFwcGVyYCwgZGVwdGg6IGl0ZW1EZXB0aCwgaGFzQWRkaXRpb25hbENvbnRlbnQ6ICEhYWRkaXRpb25hbENvbnRlbnQsIGhhc0N1c3RvbUljb25TaXplOiAhIWV4cGFuZEljb25TdHlsZXM/LnNpemUsIGlkOiBgJHtpdGVtSWR9LWl0ZW13cmFwcGVyYCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG5vZGVUeXBlOiBub2RlVHlwZSwgc2VsZWN0YWJsZTogc2VsZWN0YWJsZSwgc3R5bGU6IHN0eWxlLCB0aGVtZTogdGhlbWUsIHJlZjogbWVyZ2VSZWZzKHJlZiwgZm9jdXNUcmFwRWxlbWVudCksIG9uQ2xpY2s6IGhhbmRsZU9uQ2xpY2sgfSxcclxuICAgICAgICAgICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkRXhwYW5kV3JhcHBlciwgeyBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplLCBjb2xvcjogZXhwYW5kSWNvblN0eWxlcz8uY29sb3IsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tZXhwYW5kYCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG9uQ2xpY2s6IGhhbmRsZUV4cGFuZENsaWNrLCB0aGVtZTogdGhlbWUgfSwgZXhwYW5kZWQgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChFeHBhbmRNb3JlSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIHNpemU6IGV4cGFuZEljb25TdHlsZXM/LnNpemUgfSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hldnJvblJpZ2h0SWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIHNpemU6IGV4cGFuZEljb25TdHlsZXM/LnNpemUgfSkpKSksXHJcbiAgICAgICAgICAgICAgICAgICAgc2hvdWxkU2hvd0NoZWNrYm94ID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkQ2hlY2tib3hXcmFwcGVyLCB7IGhhc0FkZGl0aW9uYWxDb250ZW50OiAhIWFkZGl0aW9uYWxDb250ZW50LCB0aGVtZTogdGhlbWUgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzT3duVHJlZUl0ZW1zID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW5kZXRlcm1pbmF0ZUNoZWNrYm94LCBPYmplY3QuYXNzaWduKHt9LCBjaGVja2JveFByb3BzLCB7IHN0YXR1czogY2hlY2tlZFN0YXR1cyB9KSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hlY2tib3gsIE9iamVjdC5hc3NpZ24oe30sIGNoZWNrYm94UHJvcHMsIHsgY2hlY2tlZDogY2hlY2tlZFN0YXR1c1RvQm9vbGVhbihjaGVja2VkU3RhdHVzKSB9KSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlSXRlbUFkZGl0aW9uYWxDb250ZW50KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxUZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlSXRlbUFkZGl0aW9uYWxDb250ZW50KSkpLFxyXG4gICAgICAgICAgICAgICAgaGFzR3VpZGVMaW5lcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIChoaWVyYXJjaHlDb250ZXh0LmlzVmlydHVhbGl6ZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBpdGVtRGVwdGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5mcm9tKHsgbGVuZ3RoOiBpdGVtRGVwdGggfSwgKF8sIGQpID0+IChSZWFjdC5jcmVhdGVFbGVtZW50KFZpcnR1YWxpemVkR3VpZGVMaW5lLCB7IGtleTogYGd1aWRlbGluZS0ke2R9YCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS12aXJ0dWFsaXplZC1ndWlkZWxpbmUtJHtkfWAsIHRoZW1lOiB0aGVtZSwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2V0SW5saW5lU3RhcnQ6IGBjYWxjKCR7Y2FsY3VsYXRlT2Zmc2V0KFRyZWVOb2RlVHlwZS5icmFuY2gsIGQsIGZhbHNlLCBmYWxzZSwgdHJ1ZSl9ICsgJHtleHBhbmRJY29uU3R5bGVzPy5zaXplICE9PSB1bmRlZmluZWQgPyBgJHtleHBhbmRJY29uU3R5bGVzLnNpemV9cHhgIDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDZ9IC8gMiAtIDAuNXB4KWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB9KSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaGFzT3duVHJlZUl0ZW1zICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRlZCAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChHdWlkZUxpbmUsIHsgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1ndWlkZWxpbmVgLCB0aGVtZTogdGhlbWUsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBndWlkZUxpbmVMZWZ0OiBgY2FsYygke2NhbGN1bGF0ZU9mZnNldChUcmVlTm9kZVR5cGUuYnJhbmNoLCBpdGVtRGVwdGgsIGZhbHNlLCBmYWxzZSwgZmFsc2UpfSArICR7ZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7ZXhwYW5kSWNvblN0eWxlcy5zaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fSAvIDIgLSAwLjVweCkgYCB9KSkpLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuQ2hpbGRyZW4ubWFwKGNoaWxkcmVuLCAoY2hpbGQsIGNoaWxkSW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQ/LnR5cGUgIT09IFRyZWVJdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVXNlIHRoZSBzdGFibGUsIHByZS1tZW1vaXNlZCB2YWx1ZSAoc2VlIGNoaWxkSGllcmFyY2hpZXMgYWJvdmUpLlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5lc3RlZEhpZXJhcmNoeVZhbHVlID0gY2hpbGRIaWVyYXJjaGllc1tjaGlsZEluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJhbnNpdGlvbiwgeyBpc09wZW46IGV4cGFuZGVkLCB1bm1vdW50T25FeGl0OiB0cnVlIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ1bFwiLCB7IHJvbGU6IFwiZ3JvdXBcIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUcmVlSXRlbUhpZXJhcmNoeUNvbnRleHQuUHJvdmlkZXIsIHsga2V5OiBjaGlsZC5wcm9wcy5pdGVtSWQsIHZhbHVlOiBuZXN0ZWRIaWVyYXJjaHlWYWx1ZSB9LCBjaGlsZCkpKSk7XHJcbiAgICAgICAgICAgICAgICB9KSksXHJcbiAgICAgICAgICAgIGlzTWFjT1MgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVmlzdWFsbHlIaWRkZW4sIG51bGwsXHJcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEFubm91bmNlLCBudWxsLCBleHBhbmRlZFxyXG4gICAgICAgICAgICAgICAgICAgID8gaTE4bi5leHBhbnNpb25TdGF0ZS5leHBhbmRlZFxyXG4gICAgICAgICAgICAgICAgICAgIDogaTE4bi5leHBhbnNpb25TdGF0ZS5jb2xsYXBzZWQpKSkpKSk7XHJcbn0pO1xyXG4vKipcclxuICogQ3VzdG9tIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIFJlYWN0Lm1lbW9cclxuICogT25seSByZS1yZW5kZXIgVHJlZUl0ZW0gd2hlbiByZWxldmFudCBwcm9wcyBjaGFuZ2VcclxuICovXHJcbmZ1bmN0aW9uIGFyZVByb3BzRXF1YWwocHJldlByb3BzLCBuZXh0UHJvcHMpIHtcclxuICAgIC8vIENoZWNrIGlmIGl0ZW1JZCBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLml0ZW1JZCAhPT0gbmV4dFByb3BzLml0ZW1JZCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGxhYmVsIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMubGFiZWwgIT09IG5leHRQcm9wcy5sYWJlbCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGRpc2FibGVkIHN0YXRlIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaXNEaXNhYmxlZCAhPT0gbmV4dFByb3BzLmlzRGlzYWJsZWQpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBpY29uIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaWNvbiAhPT0gbmV4dFByb3BzLmljb24pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBhZGRpdGlvbmFsIGNvbnRlbnQgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5hZGRpdGlvbmFsQ29udGVudCAhPT0gbmV4dFByb3BzLmFkZGl0aW9uYWxDb250ZW50KSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgaG92ZXIgY29sb3IgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5ob3ZlckNvbG9yICE9PSBuZXh0UHJvcHMuaG92ZXJDb2xvcikge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGNoaWxkcmVuIGNoYW5nZWQgKGZvciBuZXN0ZWQgdHJlZSBpdGVtcylcclxuICAgIC8vIFVzaW5nIHR5cGUgYXNzZXJ0aW9uIHNpbmNlIGNoaWxkcmVuIGNvbWVzIGZyb20gUmVhY3QuSFRNTEF0dHJpYnV0ZXNcclxuICAgIGlmIChwcmV2UHJvcHMuY2hpbGRyZW4gIT09IG5leHRQcm9wcy5jaGlsZHJlbikge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIHN0eWxlcyBjaGFuZ2VkXHJcbiAgICAvLyBVc2luZyB0eXBlIGFzc2VydGlvbiBzaW5jZSBzdHlsZSBjb21lcyBmcm9tIFJlYWN0LkhUTUxBdHRyaWJ1dGVzXHJcbiAgICBpZiAocHJldlByb3BzLnN0eWxlICE9PSBuZXh0UHJvcHMuc3R5bGUpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAocHJldlByb3BzLmxhYmVsU3R5bGUgIT09IG5leHRQcm9wcy5sYWJlbFN0eWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZQcm9wcy50cmVlSXRlbVN0eWxlcyAhPT0gbmV4dFByb3BzLnRyZWVJdGVtU3R5bGVzKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQWxsIHJlbGV2YW50IHByb3BzIGFyZSBlcXVhbCwgc2tpcCByZS1yZW5kZXJcclxuICAgIHJldHVybiB0cnVlO1xyXG59XHJcbi8qKlxyXG4gKiBNZW1vaXplZCBUcmVlSXRlbSBjb21wb25lbnRcclxuICogT25seSByZS1yZW5kZXJzIHdoZW4gcmVsZXZhbnQgcHJvcHMgY2hhbmdlLCBpbXByb3ZpbmcgcGVyZm9ybWFuY2UgZm9yIGxhcmdlIHRyZWVzXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW0gPSBSZWFjdC5tZW1vKFRyZWVJdGVtQ29tcG9uZW50LCBhcmVQcm9wc0VxdWFsKTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VHJlZUl0ZW0uanMubWFwIl19 */"));
|
|
29447
29449
|
/*#__PURE__*/createStyled("div", {
|
|
29448
29450
|
target: "e1xiryew1",
|
|
29449
29451
|
label: "StyledItemWrapper"
|
|
@@ -29453,13 +29455,13 @@
|
|
|
29453
29455
|
return props.hasCustomIconSize ? 'center' : 'flex-start';
|
|
29454
29456
|
}, ";cursor:", function (props) {
|
|
29455
29457
|
return getTreeItemWrapperCursor(props.isDisabled, props.selectable, props.nodeType);
|
|
29456
|
-
}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4SnFDIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dCB9IGZyb20gJy4vVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdDb25maWdDb250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld0NvbmZpZ0NvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0V4cGFuc2lvbkNvbnRleHQgfSBmcm9tICcuL1RyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyBjYWxjdWxhdGVPZmZzZXQsIGdldFRyZWVJdGVtTGFiZWxDb2xvciwgZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yLCBUcmVlTm9kZVR5cGUsIH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IEkxOG5Db250ZXh0IH0gZnJvbSAnLi4vLi4nO1xyXG5pbXBvcnQgdXNlRGV2aWNlRGV0ZWN0IGZyb20gJy4uLy4uL2hvb2tzL3VzZURldmljZURldGVjdCc7XHJcbmltcG9ydCB7IHVzZUZvY3VzTG9jayB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZUZvY3VzTG9jayc7XHJcbmltcG9ydCB7IHVzZUlzSW52ZXJzZSB9IGZyb20gJy4uLy4uL2ludmVyc2UnO1xyXG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgfSBmcm9tICcuLi8uLi90aGVtZS9UaGVtZUNvbnRleHQnO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmltcG9ydCB7IEFubm91bmNlIH0gZnJvbSAnLi4vQW5ub3VuY2UnO1xyXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gJy4uL0NoZWNrYm94JztcclxuaW1wb3J0IHsgSW5kZXRlcm1pbmF0ZUNoZWNrYm94LCBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMsIH0gZnJvbSAnLi4vSW5kZXRlcm1pbmF0ZUNoZWNrYm94JztcclxuaW1wb3J0IHsgVHJhbnNpdGlvbiB9IGZyb20gJy4uL1RyYW5zaXRpb24nO1xyXG5pbXBvcnQgeyBWaXN1YWxseUhpZGRlbiB9IGZyb20gJy4uL1Zpc3VhbGx5SGlkZGVuJztcclxuY29uc3QgU3R5bGVkVHJlZUl0ZW0gPSBzdHlsZWQubGkgYFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDBcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWw3MDB9O1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIGN1cnNvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbVdyYXBwZXJDdXJzb3IocHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMuc2VsZWN0YWJsZVR5cGUsIHByb3BzLm5vZGVUeXBlKX07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcblxuICBwYWRkaW5nLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCBmYWxzZSwgZmFsc2UsIHByb3BzLmlzVmlydHVhbGl6ZWQpfTtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuXG4gICAgJiA+ICo6Zmlyc3QtY2hpbGQge1xuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkXG4gICAgICAgICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLmZvY3VzSW52ZXJzZVxyXG4gICAgOiBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXN9O1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIGZhbHNlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgbWFyZ2luLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCB0cnVlLCB0cnVlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgcGFkZGluZy1ibG9jay1lbmQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctYmxvY2stc3RhcnQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJlxyXG4gICAgY3NzIGBcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzLmlzSW52ZXJzZVxyXG4gICAgICAgID8gcHJvcHMudGhlbWUuY29sb3JzLnRlcnRpYXJ5NTAwXHJcbiAgICAgICAgOiBwcm9wcy50aGVtZS5jb2xvcnMucHJpbWFyeTUwMH07XG4gICAgICAgICAgYmxvY2stc2l6ZTogMTAwJTtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICBpbmxpbmUtc2l6ZTogJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ6IDA7XG4gICAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAwO1xuICAgICAgICB9XG4gICAgICBgfVxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBnZXRIb3ZlckJhY2tncm91bmQoe1xyXG4gICAgaXNEaXNhYmxlZDogcHJvcHMuaXNEaXNhYmxlZCxcclxuICAgIGhvdmVyQ29sb3I6IHByb3BzLmhvdmVyQ29sb3IsXHJcbiAgICBpc0ludmVyc2U6IHByb3BzLmlzSW52ZXJzZSxcclxuICAgIHRoZW1lOiBwcm9wcy50aGVtZSxcclxufSl9O1xuICAgIH1cbiAgfVxuYDtcclxuZnVuY3Rpb24gZ2V0SG92ZXJCYWNrZ3JvdW5kKHsgaXNEaXNhYmxlZCwgaG92ZXJDb2xvciwgaXNJbnZlcnNlLCB0aGVtZSB9KSB7XHJcbiAgICBpZiAoaXNEaXNhYmxlZClcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgaWYgKGhvdmVyQ29sb3IpXHJcbiAgICAgICAgcmV0dXJuIGhvdmVyQ29sb3I7XHJcbiAgICBjb25zdCB0cmFuc3BhcmVuY3kgPSBpc0ludmVyc2UgPyAwLjggOiAwLjk1O1xyXG4gICAgcmV0dXJuIHRyYW5zcGFyZW50aXplKHRyYW5zcGFyZW5jeSwgdGhlbWUuY29sb3JzLm5ldXRyYWw5MDApO1xyXG59XHJcbmNvbnN0IEljb25XcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBtYXJnaW4tbGVmdDogMDtcblxuICBzdmcge1xuICAgIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pY29uU2l6ZXMubWVkaXVtfXB4O1xuICAgIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgfVxuYDtcclxuY29uc3QgU3R5bGVkTGFiZWxXcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgd2lkdGg6IDEwMCU7XG5gO1xyXG5jb25zdCBTdHlsZWRFeHBhbmRXcmFwcGVyID0gc3R5bGVkLmRpdiBgXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgbWFyZ2luLXJpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuY29sb3IgfHxcclxuICAgIGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIHdpZHRoOiAkeyh7IHNpemUsIHRoZW1lIH0pID0+IHNpemUgIT09IHVuZGVmaW5lZCA/IGAke3NpemV9cHhgIDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDZ9O1xuICBoZWlnaHQ6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG5gO1xyXG5jb25zdCBHdWlkZUxpbmUgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDh9O1xuICBib3R0b206IDA7XG4gIGluc2V0LWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy5ndWlkZUxpbmVMZWZ0fTtcbiAgd2lkdGg6IDA7XG4gIGJvcmRlci1pbmxpbmUtc3RhcnQ6IDFweCBzb2xpZFxuICAgICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHRyYW5zcGFyZW50aXplKDAuNywgcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDApXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMzAwfTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHotaW5kZXg6IDE7XG5gO1xyXG5jb25zdCBWaXJ0dWFsaXplZEd1aWRlTGluZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogMDtcbiAgYm9yZGVyLWlubGluZS1zdGFydDogMXB4IHNvbGlkXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDEwMClcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwzMDB9O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW1Db21wb25lbnQgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XHJcbiAgICBjb25zdCB7IGFkZGl0aW9uYWxDb250ZW50LCBjaGlsZHJlbiwgaG92ZXJDb2xvciwgaWNvbiwgaW5kZXg6IGluZGV4UHJvcCwgbGFiZWwsIGxhYmVsU3R5bGUsIHN0eWxlLCB0ZXN0SWQsIHRvcExldmVsOiB0b3BMZXZlbFByb3AsIHRyZWVJdGVtU3R5bGVzLCAuLi5yZXN0IH0gPSBwcm9wcztcclxuICAgIGNvbnN0IHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xyXG4gICAgY29uc3QgaXNJbnZlcnNlID0gdXNlSXNJbnZlcnNlKCk7XHJcbiAgICAvLyBSZWFkIGhpZXJhcmNoeSBpbmZvcm1hdGlvbiBmcm9tIGNvbnRleHQgKHJlZHVjZXMgY2xvbmVFbGVtZW50IG92ZXJoZWFkKVxyXG4gICAgY29uc3QgaGllcmFyY2h5Q29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0KTtcclxuICAgIC8vIFVzZSBjb250ZXh0IHZhbHVlcyBpZiBwcm9wcyBhcmUgbm90IHByb3ZpZGVkIChmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSlcclxuICAgIGNvbnN0IGluZGV4ID0gaW5kZXhQcm9wICE9PSB1bmRlZmluZWQgPyBpbmRleFByb3AgOiBoaWVyYXJjaHlDb250ZXh0LmluZGV4O1xyXG4gICAgY29uc3QgdG9wTGV2ZWwgPSB0b3BMZXZlbFByb3AgIT09IHVuZGVmaW5lZCA/IHRvcExldmVsUHJvcCA6IGhpZXJhcmNoeUNvbnRleHQuaXNUb3BMZXZlbDtcclxuICAgIC8vIENvbnN1bWUgc3BsaXQgY29udGV4dHMgZm9yIHJlZHVjZWQgcmUtcmVuZGVyIHNjb3BlXHJcbiAgICBjb25zdCB7IGl0ZW1Ub0ZvY3VzIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGhhbmRsZUV4cGFuZGVkQ2hhbmdlIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGV4cGFuZEljb25TdHlsZXMsIGhhc0d1aWRlTGluZXMsIGhhc0ljb25zLCBpc1RvcExldmVsU2VsZWN0YWJsZSwgc2VsZWN0YWJsZSwgc2VsZWN0UGFyZW50cyA9IHRydWUsIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29uZmlnQ29udGV4dCk7XHJcbiAgICAvLyBQYXNzIHRoZSByZXNvbHZlZCB2YWx1ZXMgdG8gdXNlVHJlZUl0ZW1cclxuICAgIGNvbnN0IHByb3BzV2l0aEhpZXJhcmNoeSA9IHtcclxuICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICBpbmRleCxcclxuICAgICAgICB0b3BMZXZlbCxcclxuICAgICAgICBpdGVtRGVwdGg6IGhpZXJhcmNoeUNvbnRleHQuZGVwdGgsXHJcbiAgICAgICAgcGFyZW50RGVwdGg6IGhpZXJhcmNoeUNvbnRleHQucGFyZW50RGVwdGgsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyBjb250ZXh0VmFsdWUsIGhhbmRsZUNsaWNrLCBoYW5kbGVLZXlEb3duIH0gPSB1c2VUcmVlSXRlbShwcm9wc1dpdGhIaWVyYXJjaHksIGZvcndhcmRlZFJlZik7XHJcbiAgICBjb25zdCB7IGlzRGlzYWJsZWQgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IHsgaXNNYWNPUyB9ID0gdXNlRGV2aWNlRGV0ZWN0KCk7XHJcbiAgICBjb25zdCBpMThuID0gUmVhY3QudXNlQ29udGV4dChJMThuQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGNoZWNrYm94Q2hhbmdlSGFuZGxlciwgY2hlY2tlZFN0YXR1cywgZXhwYW5kZWQsIGhhc093blRyZWVJdGVtcywgaXRlbURlcHRoLCBpdGVtSWQsIHJlZiwgc2VsZWN0ZWRJdGVtcywgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IG5vZGVUeXBlID0gaGFzT3duVHJlZUl0ZW1zID8gVHJlZU5vZGVUeXBlLmJyYW5jaCA6IFRyZWVOb2RlVHlwZS5sZWFmO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZVxyXG4gICAgICAgID8gc2VsZWN0ZWRJdGVtcz8uWzBdPy5pdGVtSWQgPT09IGl0ZW1JZFxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IGFyaWFDaGVja2VkVmFsdWUgPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUubXVsdGlcclxuICAgICAgICA/IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5pbmRldGVybWluYXRlXHJcbiAgICAgICAgICAgID8gJ21peGVkJ1xyXG4gICAgICAgICAgICA6IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5jaGVja2VkXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgW2lzSW5zaWRlVHJlZUl0ZW0sIHNldElzSW5zaWRlVHJlZUl0ZW1dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgdHJlZUl0ZW1SZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XHJcbiAgICBjb25zdCBmb2N1c1RyYXBFbGVtZW50ID0gdXNlRm9jdXNMb2NrKGlzSW5zaWRlVHJlZUl0ZW0pO1xyXG4gICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50cyA9ICdidXR0b24sIFtyb2xlPVwiYnV0dG9uXCJdLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgYVtocmVmXSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJztcclxuICAgIGNvbnN0IGdldEludGVyYWN0aXZlRWxlbWVudHMgPSBSZWFjdC51c2VDYWxsYmFjaygoY29udGFpbmVyLCBzZWxlY3RvcikgPT4ge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSkuZmlsdGVyKGVsID0+ICFlbC5oYXNBdHRyaWJ1dGUoJ3RhYmluZGV4JykgfHxcclxuICAgICAgICAgICAgKGVsLnRhYkluZGV4ICE9PSB1bmRlZmluZWQgJiYgZWwudGFiSW5kZXggPj0gMCkpO1xyXG4gICAgfSwgW10pO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGFsbG93cyBmb3Iga2V5Ym9hcmQgbmF2aWdhdGlvbiB3aXRoaW4gdGhlIGxhYmVsIGFuZCBhZGRpdGlvbmFsIGNvbnRlbnQgb2YgYSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogWW91IGNhbiBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIHVzaW5nIHRoZSBgVGFiYCBrZXksIGFjdGl2YXRlIHRoZW0gd2l0aCBgRW50ZXJgIG9yIGBTcGFjZWAsXHJcbiAgICAgKiBhbmQgZXhpdCBvdXRzaWRlIGFuZCBmb2N1cyB0aGUgd2hvbGUgdHJlZSBpdGVtIHdpdGggYEVzY2FwZWAuXHJcbiAgICAgKiAqKi9cclxuICAgIGNvbnN0IGhhbmRsZUxhYmVsQW5kQWRkaXRpb25hbENvbnRlbnRLZXlEb3duID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBrZXksIHRhcmdldCwgY3VycmVudFRhcmdldCwgc2hpZnRLZXkgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gdGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNTcGFjZSA9IGtleSA9PT0gJyAnO1xyXG4gICAgICAgIGNvbnN0IGlzRXNjYXBlID0ga2V5ID09PSAnRXNjYXBlJztcclxuICAgICAgICBjb25zdCBpc1RhYiA9IGtleSA9PT0gJ1RhYic7XHJcbiAgICAgICAgY29uc3QgaXNBY3RpdmF0aW9uS2V5ID0gaXNFbnRlciB8fCBpc1NwYWNlO1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBgVGFiYCwgd2UgbmF2aWdhdGUgdGhyb3VnaCBpbnRlcmFjdGl2ZSBlbGVtZW50cyBpbnNpZGUgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmIChpc1RhYiAmJiBpc0luc2lkZVRyZWVJdGVtKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudHNMaXN0ID0gZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyhjdXJyZW50VGFyZ2V0LCBpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAgICAgLy8gRmlsdGVyIGxpc3Qgb2YgaW50ZXJhY3RpdmUgZWxlbWVudHMgd2hpY2ggYXJlIG9ubHkgaW5jbHVkZWQgZm9yIGN1cnJlbnQgdHJlZSBpdGVtXHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMgPSBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdC5maWx0ZXIoZWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2xvc2VzdFRyZWVJdGVtID0gZWwuY2xvc2VzdCgnW3JvbGU9XCJ0cmVlaXRlbVwiXScpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsb3Nlc3RUcmVlSXRlbSA9PT0gdHJlZUl0ZW1SZWYuY3VycmVudDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMuaW5kZXhPZihjdXJyZW50RWxlbWVudCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHNoaWZ0S2V5ID8gLTEgOiAxO1xyXG4gICAgICAgICAgICBjb25zdCB0b3RhbCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMubGVuZ3RoO1xyXG4gICAgICAgICAgICBjb25zdCBuZXh0SW5kZXggPSAoY3VycmVudEluZGV4ICsgZGlyZWN0aW9uICsgdG90YWwpICUgdG90YWw7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50c1tuZXh0SW5kZXhdO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudFRvRm9jdXMpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZWxlbWVudFRvRm9jdXMuZm9jdXMoKSwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBQcmVzc2luZyBgRW50ZXJgIG9yIGBTcGFjZWAgb24gYW4gaW50ZXJhY3RpdmUgZWxlbWVudCB3aWxsIHRyaWdnZXIgaXRzIGNsaWNrIGV2ZW50XHJcbiAgICAgICAgaWYgKGlzQWN0aXZhdGlvbktleSAmJiBpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgaW50ZXJhY3RpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE1vdmVzIGZvY3VzIG91dHNpZGUgdGhlIHRyZWUgaXRlbSBhbmQgZm9jdXNlcyB0aGUgdHJlZSBpdGVtIGl0c2VsZiB3aGVuIGBFc2NhcGVgIGlzIHByZXNzZWRcclxuICAgICAgICBpZiAoaXNFc2NhcGUpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHNldElzSW5zaWRlVHJlZUl0ZW0oZmFsc2UpO1xyXG4gICAgICAgICAgICBjb25zdCB0cmVlSXRlbU5vZGUgPSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICBpZiAodHJlZUl0ZW1Ob2RlKSB7XHJcbiAgICAgICAgICAgICAgICB0cmVlSXRlbU5vZGUuZm9jdXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzSW5zaWRlVHJlZUl0ZW1dKTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gUmVhY3QudXNlTWVtbygoKSA9PiBub2RlVHlwZSA9PT0gVHJlZU5vZGVUeXBlLmJyYW5jaCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEZvbGRlckljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KEFydGljbGVJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSksIFtub2RlVHlwZV0pO1xyXG4gICAgLy8gTWVtb2lzZSB0aGUgbGFiZWwgSlNYIHNvIHRoZSBgY2hlY2tib3hQcm9wc2AgbWVtbyBiZWxvdyBhY3R1YWxseSBoYXNcclxuICAgIC8vIGEgc3RhYmxlIGBsYWJlbFRleHRgIHJlZmVyZW5jZSBiZXR3ZWVuIHJlbmRlcnMuIFByZXZpb3VzbHkgdGhpc1xyXG4gICAgLy8gZWxlbWVudCB3YXMgcmUtY3JlYXRlZCBvbiBldmVyeSByZW5kZXIsIHdoaWNoIGZvcmNlZFxyXG4gICAgLy8gYGNoZWNrYm94UHJvcHNgIHRvIGFsc28gYmUgcmUtY3JlYXRlZCBhbmQgYW55IGZ1dHVyZSBSZWFjdC5tZW1vIG9uXHJcbiAgICAvLyBDaGVja2JveC9JbmRldGVybWluYXRlQ2hlY2tib3ggd291bGQgYWx3YXlzIGJhaWwgb3V0LlxyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gUmVhY3QudXNlTWVtbygoKSA9PiAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRMYWJlbFdyYXBwZXIsIHsgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgc3R5bGU6IGxhYmVsU3R5bGUsIGlkOiBgJHtpdGVtSWR9LWxhYmVsYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1sYWJlbGAgfSxcclxuICAgICAgICBoYXNJY29ucyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChJY29uV3JhcHBlciwgeyBpc0ludmVyc2U6IGlzSW52ZXJzZSwgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWljb25gIH0sIGljb24gfHwgZGVmYXVsdEljb24pKSxcclxuICAgICAgICBsYWJlbCkpLCBbXHJcbiAgICAgICAgdGhlbWUsXHJcbiAgICAgICAgaXNEaXNhYmxlZCxcclxuICAgICAgICBpc0ludmVyc2UsXHJcbiAgICAgICAgbGFiZWxTdHlsZSxcclxuICAgICAgICBpdGVtSWQsXHJcbiAgICAgICAgdGVzdElkLFxyXG4gICAgICAgIGhhc0ljb25zLFxyXG4gICAgICAgIGljb24sXHJcbiAgICAgICAgZGVmYXVsdEljb24sXHJcbiAgICAgICAgbGFiZWwsXHJcbiAgICBdKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBSZWFjdC51c2VNZW1vKCgpID0+IGFkZGl0aW9uYWxDb250ZW50ID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQWRkaXRpb25hbENvbnRlbnRXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaWQ6IGAke2l0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgIH0sIGFkZGl0aW9uYWxDb250ZW50KSkgOiBudWxsLCBbYWRkaXRpb25hbENvbnRlbnQsIHRoZW1lLCBpdGVtSWQsIHRlc3RJZF0pO1xyXG4gICAgLy8gU3RhYmxlIHBlci1jaGlsZCBoaWVyYXJjaHkgdmFsdWVzLiBUaGUgcmVmZXJlbmNlIG11c3Qgbm90IGNoYW5nZSBvblxyXG4gICAgLy8gcmUtcmVuZGVycyB0cmlnZ2VyZWQgYnkgVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0LCBvdGhlcndpc2UgZXZlcnlcclxuICAgIC8vIG5lc3RlZCBUcmVlSXRlbSByZS1yZW5kZXJzIHRocm91Z2ggdGhlIGNvbnRleHQgYW5kIFJlYWN0Lm1lbW8gaXNcclxuICAgIC8vIGRlZmVhdGVkLlxyXG4gICAgY29uc3QgY2hpbGRIaWVyYXJjaGllcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvdW50ID0gUmVhY3QuQ2hpbGRyZW4uY291bnQoY2hpbGRyZW4pO1xyXG4gICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShjb3VudCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGFycltpXSA9IHtcclxuICAgICAgICAgICAgICAgIGRlcHRoOiBpdGVtRGVwdGggKyAxLFxyXG4gICAgICAgICAgICAgICAgcGFyZW50RGVwdGg6IGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgIGlzVG9wTGV2ZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhcnI7XHJcbiAgICB9LCBbY2hpbGRyZW4sIGl0ZW1EZXB0aF0pO1xyXG4gICAgLy8gTWVtb2l6ZSBpbmxpbmUgc3R5bGUgb2JqZWN0cyB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IHJlLXJlbmRlcnNcclxuICAgIGNvbnN0IGNoZWNrYm94SW5wdXRTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHsgbWFyZ2luUmlnaHQ6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzIH0pLCBbdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDNdKTtcclxuICAgIGNvbnN0IGNoZWNrYm94TGFiZWxTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcclxuICAgICAgICBwYWRkaW5nOiAwLFxyXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICB9KSwgW10pO1xyXG4gICAgLy8gUHJvcHMgc2hhcmVkIGJ5IENoZWNrYm94IGFuZCBJbmRldGVybWluYXRlQ2hlY2tib3hcclxuICAgIGNvbnN0IGNoZWNrYm94UHJvcHMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XHJcbiAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaGlkZUZvY3VzOiB0cnVlLFxyXG4gICAgICAgIGlkOiBgJHtpdGVtSWR9LWNoZWNrYm94YCxcclxuICAgICAgICBpbnB1dFN0eWxlOiBjaGVja2JveElucHV0U3R5bGUsXHJcbiAgICAgICAgbGFiZWxTdHlsZTogY2hlY2tib3hMYWJlbFN0eWxlLFxyXG4gICAgICAgIGxhYmVsVGV4dDogbGFiZWxUZXh0LFxyXG4gICAgICAgIG9uQ2hhbmdlOiBjaGVja2JveENoYW5nZUhhbmRsZXIsXHJcbiAgICAgICAgdGFiSW5kZXg6IC0xLFxyXG4gICAgICAgIHRlc3RJZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICB9KSwgW1xyXG4gICAgICAgIGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaXRlbUlkLFxyXG4gICAgICAgIGNoZWNrYm94SW5wdXRTdHlsZSxcclxuICAgICAgICBjaGVja2JveExhYmVsU3R5bGUsXHJcbiAgICAgICAgbGFiZWxUZXh0LFxyXG4gICAgICAgIGNoZWNrYm94Q2hhbmdlSGFuZGxlcixcclxuICAgIF0pO1xyXG4gICAgY29uc3Qgb25FeHBhbmRlZENsaWNrZWQgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGhhbmRsZUV4cGFuZGVkQ2hhbmdlKGV2ZW50LCBpdGVtSWQpO1xyXG4gICAgfSwgW2hhbmRsZUV4cGFuZGVkQ2hhbmdlLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IGhhbmRsZUV4cGFuZENsaWNrID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKCFpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICBvbkV4cGFuZGVkQ2xpY2tlZChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIG9uRXhwYW5kZWRDbGlja2VkXSk7XHJcbiAgICBjb25zdCBoYW5kbGVPbkNsaWNrID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSBldmVudC50YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdCgnYnV0dG9uLCBbcm9sZT1cImJ1dHRvblwiXSwgYVtocmVmXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIFtyb2xlPVwibWVudWl0ZW1cIl0nKTtcclxuICAgICAgICAvLyBQcmV2ZW50aW5nIHNlbGVjdGluZyB0aGUgaXRlbSB3aGVuIGNsaWNraW5nIG9uIGludGVyYWN0aXZlIGVsZW1lbnRzIHdoZW4gYHNlbGVjdGFibGVgIGlzIGBzaW5nbGVgXHJcbiAgICAgICAgaWYgKGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBJZiBzZWxlY3RQYXJlbnRzIGlzIGZhbHNlIGFuZCB0aGlzIGlzIGEgcGFyZW50IGl0ZW0sIGhhbmRsZSBleHBhbmQvY29sbGFwc2UgaW5zdGVhZCBvZiBzZWxlY3Rpb25cclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZSAmJlxyXG4gICAgICAgICAgICAhc2VsZWN0UGFyZW50cyAmJlxyXG4gICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIG9uRXhwYW5kZWRDbGlja2VkKGV2ZW50KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZSkge1xyXG4gICAgICAgICAgICBoYW5kbGVDbGljayhldmVudCwgaXRlbUlkKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgdGFiSW5kZXggPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcclxuICAgICAgICBpZiAoaXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaXRlbVRvRm9jdXMgPT09IGl0ZW1JZCA/IDAgOiAtMTtcclxuICAgIH0sIFtpc0Rpc2FibGVkLCBpdGVtVG9Gb2N1cywgaXRlbUlkXSk7XHJcbiAgICBjb25zdCBzaG91bGRTaG93Q2hlY2tib3ggPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUubXVsdGkgJiZcclxuICAgICAgICAoaXNUb3BMZXZlbFNlbGVjdGFibGUgIT09IGZhbHNlIHx8ICF0b3BMZXZlbCk7XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIHdpdGhpbiB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIFByZXNzaW5nIGBDdHJsICsgRW50ZXJgIG9yIGBDb21tYW5kICsgRW50ZXJgIGZvY3VzZXMgdGhlIGZpcnN0IGludGVyYWN0aXZlIGVsZW1lbnQgd2l0aGluIHRoZSB0cmVlIGl0ZW1cclxuICAgICAqIGFuZCBsb2NrcyBmb2N1cyBpbnNpZGUgdGhlIHRyZWUgaXRlbS5cclxuICAgICAqXHJcbiAgICAgKiBJZiB0aGUgZm9jdXMgaXMgd2l0aGluIHRoZSBsYWJlbCBvciBhZGRpdGlvbmFsIGNvbnRlbnQsIGl0IGhhbmRsZXMga2V5IGV2ZW50cyBmb3IgaW50ZXJhY3Rpb24gZWxlbWVudHMuXHJcbiAgICAgKlxyXG4gICAgICogSXQgYWxzbyBoYW5kbGVzIHRoZSBvdGhlciBrZXlzIHRvIHRyaWdnZXIgdGhlIGNsaWNrIGV2ZW50IG9uIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKiAqKi9cclxuICAgIGNvbnN0IG9uS2V5RG93bkhhbmRsZXIgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBjb25zdCB7IGtleSwgdGFyZ2V0LCBjdXJyZW50VGFyZ2V0IH0gPSBldmVudDtcclxuICAgICAgICBjb25zdCBpc0VudGVyID0ga2V5ID09PSAnRW50ZXInO1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybE9yQ29tbWFuZCA9IGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleTtcclxuICAgICAgICBjb25zdCBpc0N0cmxFbnRlciA9IGlzQ3RybE9yQ29tbWFuZCAmJiBpc0VudGVyO1xyXG4gICAgICAgIC8vIElmIHRoZSBrZXkgaXMgQ3RybCArIEVudGVyIG9yIENvbW1hbmQgKyBFbnRlciwgZm9jdXMgdGhlIGZpcnN0IGludGVyYWN0aXZlIGVsZW1lbnRcclxuICAgICAgICAvLyBhbmQgbG9jayBmb2N1cyBpbnNpZGUgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmIChpc0N0cmxFbnRlciAmJiB0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgc2V0SXNJbnNpZGVUcmVlSXRlbSh0cnVlKTtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50c0xpc3QgPSBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzKGN1cnJlbnRUYXJnZXQsIGludGVyYWN0aXZlRWxlbWVudHMpO1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50VG9Gb2N1cyA9IGludGVyYWN0aXZlRWxlbWVudHNMaXN0WzBdO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudFRvRm9jdXMpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRUb0ZvY3VzLmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICB9LCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEVuc3VyZSB2YWxpZCBDU1Mgc2VsZWN0b3JzIGJ5IGVzY2FwaW5nIHNwZWNpYWwgY2hhcmFjdGVycyAoZS5nLiwgcGVyaW9kcyBpbiBpdGVtSWQpXHJcbiAgICAgICAgY29uc3Qgc2FmZUl0ZW1JZCA9IENTUy5lc2NhcGUoaXRlbUlkKTtcclxuICAgICAgICBjb25zdCBpc1dpdGhpbkxhYmVsT3JBZGRpdGlvbmFsQ29udGVudCA9IHRhcmdldC5jbG9zZXN0KGAjJHtzYWZlSXRlbUlkfS1sYWJlbCwgIyR7c2FmZUl0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCk7XHJcbiAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaGFuZGxlIGtleSBldmVudHMgZm9yIHRob3NlIGFyZWFzXHJcbiAgICAgICAgaWYgKGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50KSB7XHJcbiAgICAgICAgICAgIGhhbmRsZUxhYmVsQW5kQWRkaXRpb25hbENvbnRlbnRLZXlEb3duKGV2ZW50KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHRoZSB0cmVlIGl0ZW0gaXRzZWxmLCBoYW5kbGUga2V5IGRvd24gZm9yIHRoZSB0cmVlIGl0ZW1cclxuICAgICAgICBpZiAodGFyZ2V0ID09PSBjdXJyZW50VGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIGhhbmRsZUtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW1xyXG4gICAgICAgIGdldEludGVyYWN0aXZlRWxlbWVudHMsXHJcbiAgICAgICAgaW50ZXJhY3RpdmVFbGVtZW50cyxcclxuICAgICAgICBpdGVtSWQsXHJcbiAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24sXHJcbiAgICAgICAgaGFuZGxlS2V5RG93bixcclxuICAgIF0pO1xyXG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyZWVJdGVtQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogY29udGV4dFZhbHVlIH0sXHJcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IHN0eWxlOiB0cmVlSXRlbVN0eWxlcyB9LFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZFRyZWVJdGVtLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IFwiYXJpYS1leHBhbmRlZFwiOiBoYXNPd25UcmVlSXRlbXMgPyBleHBhbmRlZCA6IG51bGwsIFwiYXJpYS1zZWxlY3RlZFwiOiBzZWxlY3RlZEl0ZW0sIFwiYXJpYS1jaGVja2VkXCI6IHNob3VsZFNob3dDaGVja2JveCA/IGFyaWFDaGVja2VkVmFsdWUgOiBudWxsLCBcImRhdGEtdGVzdGlkXCI6IHRlc3RJZCwgZGVwdGg6IGl0ZW1EZXB0aCwgaGFzT3duVHJlZUl0ZW1zOiBoYXNPd25UcmVlSXRlbXMsIGlkOiBpdGVtSWQsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBpc1ZpcnR1YWxpemVkOiBoaWVyYXJjaHlDb250ZXh0LmlzVmlydHVhbGl6ZWQsIG5vZGVUeXBlOiBub2RlVHlwZSwgcm9sZTogXCJ0cmVlaXRlbVwiLCBzZWxlY3RhYmxlVHlwZTogc2VsZWN0YWJsZSwgc2VsZWN0ZWQ6IHNlbGVjdGVkSXRlbSwgdGhlbWU6IHRoZW1lLCB0YWJJbmRleDogdGFiSW5kZXgsIG9uS2V5RG93bjogb25LZXlEb3duSGFuZGxlciwgcmVmOiB0cmVlSXRlbVJlZiwgaG92ZXJDb2xvcjogaG92ZXJDb2xvciB9KSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkSXRlbVdyYXBwZXIsIHsgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1pdGVtd3JhcHBlcmAsIGRlcHRoOiBpdGVtRGVwdGgsIGhhc0FkZGl0aW9uYWxDb250ZW50OiAhIWFkZGl0aW9uYWxDb250ZW50LCBoYXNDdXN0b21JY29uU2l6ZTogISFleHBhbmRJY29uU3R5bGVzPy5zaXplLCBpZDogYCR7aXRlbUlkfS1pdGVtd3JhcHBlcmAsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBub2RlVHlwZTogbm9kZVR5cGUsIHNlbGVjdGFibGU6IHNlbGVjdGFibGUsIHN0eWxlOiBzdHlsZSwgdGhlbWU6IHRoZW1lLCByZWY6IG1lcmdlUmVmcyhyZWYsIGZvY3VzVHJhcEVsZW1lbnQpLCBvbkNsaWNrOiBoYW5kbGVPbkNsaWNrIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgaGFzT3duVHJlZUl0ZW1zICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZEV4cGFuZFdyYXBwZXIsIHsgc2l6ZTogZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSwgY29sb3I6IGV4cGFuZEljb25TdHlsZXM/LmNvbG9yLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWV4cGFuZGAsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBvbkNsaWNrOiBoYW5kbGVFeHBhbmRDbGljaywgdGhlbWU6IHRoZW1lIH0sIGV4cGFuZGVkID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRXhwYW5kTW9yZUljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZXZyb25SaWdodEljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSkpLFxyXG4gICAgICAgICAgICAgICAgICAgIHNob3VsZFNob3dDaGVja2JveCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZENoZWNrYm94V3JhcHBlciwgeyBoYXNBZGRpdGlvbmFsQ29udGVudDogISFhZGRpdGlvbmFsQ29udGVudCwgdGhlbWU6IHRoZW1lIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc093blRyZWVJdGVtcyA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEluZGV0ZXJtaW5hdGVDaGVja2JveCwgT2JqZWN0LmFzc2lnbih7fSwgY2hlY2tib3hQcm9wcywgeyBzdGF0dXM6IGNoZWNrZWRTdGF0dXMgfSkpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZWNrYm94LCBPYmplY3QuYXNzaWduKHt9LCBjaGVja2JveFByb3BzLCB7IGNoZWNrZWQ6IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4oY2hlY2tlZFN0YXR1cykgfSkpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsVGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpKSxcclxuICAgICAgICAgICAgICAgIGhhc0d1aWRlTGluZXMgJiZcclxuICAgICAgICAgICAgICAgICAgICAoaGllcmFyY2h5Q29udGV4dC5pc1ZpcnR1YWxpemVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbURlcHRoID4gMCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkuZnJvbSh7IGxlbmd0aDogaXRlbURlcHRoIH0sIChfLCBkKSA9PiAoUmVhY3QuY3JlYXRlRWxlbWVudChWaXJ0dWFsaXplZEd1aWRlTGluZSwgeyBrZXk6IGBndWlkZWxpbmUtJHtkfWAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tdmlydHVhbGl6ZWQtZ3VpZGVsaW5lLSR7ZH1gLCB0aGVtZTogdGhlbWUsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBzdHlsZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNldElubGluZVN0YXJ0OiBgY2FsYygke2NhbGN1bGF0ZU9mZnNldChUcmVlTm9kZVR5cGUuYnJhbmNoLCBkLCBmYWxzZSwgZmFsc2UsIHRydWUpfSArICR7ZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7ZXhwYW5kSWNvblN0eWxlcy5zaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fSAvIDIgLSAwLjVweClgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfSkpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGhhc093blRyZWVJdGVtcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWQgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoR3VpZGVMaW5lLCB7IFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tZ3VpZGVsaW5lYCwgdGhlbWU6IHRoZW1lLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgZ3VpZGVMaW5lTGVmdDogYGNhbGMoJHtjYWxjdWxhdGVPZmZzZXQoVHJlZU5vZGVUeXBlLmJyYW5jaCwgaXRlbURlcHRoLCBmYWxzZSwgZmFsc2UsIGZhbHNlKX0gKyAke2V4cGFuZEljb25TdHlsZXM/LnNpemUgIT09IHVuZGVmaW5lZCA/IGAke2V4cGFuZEljb25TdHlsZXMuc2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn0gLyAyIC0gMC41cHgpIGAgfSkpKSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LkNoaWxkcmVuLm1hcChjaGlsZHJlbiwgKGNoaWxkLCBjaGlsZEluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkPy50eXBlICE9PSBUcmVlSXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFVzZSB0aGUgc3RhYmxlLCBwcmUtbWVtb2lzZWQgdmFsdWUgKHNlZSBjaGlsZEhpZXJhcmNoaWVzIGFib3ZlKS5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXN0ZWRIaWVyYXJjaHlWYWx1ZSA9IGNoaWxkSGllcmFyY2hpZXNbY2hpbGRJbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyYW5zaXRpb24sIHsgaXNPcGVuOiBleHBhbmRlZCwgdW5tb3VudE9uRXhpdDogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwidWxcIiwgeyByb2xlOiBcImdyb3VwXCIgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0LlByb3ZpZGVyLCB7IGtleTogY2hpbGQucHJvcHMuaXRlbUlkLCB2YWx1ZTogbmVzdGVkSGllcmFyY2h5VmFsdWUgfSwgY2hpbGQpKSkpO1xyXG4gICAgICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICBpc01hY09TICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFZpc3VhbGx5SGlkZGVuLCBudWxsLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChBbm5vdW5jZSwgbnVsbCwgZXhwYW5kZWRcclxuICAgICAgICAgICAgICAgICAgICA/IGkxOG4uZXhwYW5zaW9uU3RhdGUuZXhwYW5kZWRcclxuICAgICAgICAgICAgICAgICAgICA6IGkxOG4uZXhwYW5zaW9uU3RhdGUuY29sbGFwc2VkKSkpKSkpO1xyXG59KTtcclxuLyoqXHJcbiAqIEN1c3RvbSBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciBSZWFjdC5tZW1vXHJcbiAqIE9ubHkgcmUtcmVuZGVyIFRyZWVJdGVtIHdoZW4gcmVsZXZhbnQgcHJvcHMgY2hhbmdlXHJcbiAqL1xyXG5mdW5jdGlvbiBhcmVQcm9wc0VxdWFsKHByZXZQcm9wcywgbmV4dFByb3BzKSB7XHJcbiAgICAvLyBDaGVjayBpZiBpdGVtSWQgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5pdGVtSWQgIT09IG5leHRQcm9wcy5pdGVtSWQpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBsYWJlbCBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmxhYmVsICE9PSBuZXh0UHJvcHMubGFiZWwpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBkaXNhYmxlZCBzdGF0ZSBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmlzRGlzYWJsZWQgIT09IG5leHRQcm9wcy5pc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgaWNvbiBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmljb24gIT09IG5leHRQcm9wcy5pY29uKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgYWRkaXRpb25hbCBjb250ZW50IGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuYWRkaXRpb25hbENvbnRlbnQgIT09IG5leHRQcm9wcy5hZGRpdGlvbmFsQ29udGVudCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGhvdmVyIGNvbG9yIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaG92ZXJDb2xvciAhPT0gbmV4dFByb3BzLmhvdmVyQ29sb3IpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBjaGlsZHJlbiBjaGFuZ2VkIChmb3IgbmVzdGVkIHRyZWUgaXRlbXMpXHJcbiAgICAvLyBVc2luZyB0eXBlIGFzc2VydGlvbiBzaW5jZSBjaGlsZHJlbiBjb21lcyBmcm9tIFJlYWN0LkhUTUxBdHRyaWJ1dGVzXHJcbiAgICBpZiAocHJldlByb3BzLmNoaWxkcmVuICE9PSBuZXh0UHJvcHMuY2hpbGRyZW4pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBzdHlsZXMgY2hhbmdlZFxyXG4gICAgLy8gVXNpbmcgdHlwZSBhc3NlcnRpb24gc2luY2Ugc3R5bGUgY29tZXMgZnJvbSBSZWFjdC5IVE1MQXR0cmlidXRlc1xyXG4gICAgaWYgKHByZXZQcm9wcy5zdHlsZSAhPT0gbmV4dFByb3BzLnN0eWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZQcm9wcy5sYWJlbFN0eWxlICE9PSBuZXh0UHJvcHMubGFiZWxTdHlsZSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChwcmV2UHJvcHMudHJlZUl0ZW1TdHlsZXMgIT09IG5leHRQcm9wcy50cmVlSXRlbVN0eWxlcykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIEFsbCByZWxldmFudCBwcm9wcyBhcmUgZXF1YWwsIHNraXAgcmUtcmVuZGVyXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxyXG4vKipcclxuICogTWVtb2l6ZWQgVHJlZUl0ZW0gY29tcG9uZW50XHJcbiAqIE9ubHkgcmUtcmVuZGVycyB3aGVuIHJlbGV2YW50IHByb3BzIGNoYW5nZSwgaW1wcm92aW5nIHBlcmZvcm1hbmNlIGZvciBsYXJnZSB0cmVlc1xyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFRyZWVJdGVtID0gUmVhY3QubWVtbyhUcmVlSXRlbUNvbXBvbmVudCwgYXJlUHJvcHNFcXVhbCk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRyZWVJdGVtLmpzLm1hcCJdfQ== */"));
|
|
29458
|
+
}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4SnFDIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dCB9IGZyb20gJy4vVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdDb25maWdDb250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld0NvbmZpZ0NvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0V4cGFuc2lvbkNvbnRleHQgfSBmcm9tICcuL1RyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyBjYWxjdWxhdGVPZmZzZXQsIGdldFRyZWVJdGVtTGFiZWxDb2xvciwgZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yLCBUcmVlTm9kZVR5cGUsIH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IEkxOG5Db250ZXh0IH0gZnJvbSAnLi4vLi4nO1xyXG5pbXBvcnQgdXNlRGV2aWNlRGV0ZWN0IGZyb20gJy4uLy4uL2hvb2tzL3VzZURldmljZURldGVjdCc7XHJcbmltcG9ydCB7IHVzZUZvY3VzTG9jayB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZUZvY3VzTG9jayc7XHJcbmltcG9ydCB7IHVzZUlzSW52ZXJzZSB9IGZyb20gJy4uLy4uL2ludmVyc2UnO1xyXG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgfSBmcm9tICcuLi8uLi90aGVtZS9UaGVtZUNvbnRleHQnO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmltcG9ydCB7IEFubm91bmNlIH0gZnJvbSAnLi4vQW5ub3VuY2UnO1xyXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gJy4uL0NoZWNrYm94JztcclxuaW1wb3J0IHsgSW5kZXRlcm1pbmF0ZUNoZWNrYm94LCBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMsIH0gZnJvbSAnLi4vSW5kZXRlcm1pbmF0ZUNoZWNrYm94JztcclxuaW1wb3J0IHsgVHJhbnNpdGlvbiB9IGZyb20gJy4uL1RyYW5zaXRpb24nO1xyXG5pbXBvcnQgeyBWaXN1YWxseUhpZGRlbiB9IGZyb20gJy4uL1Zpc3VhbGx5SGlkZGVuJztcclxuY29uc3QgU3R5bGVkVHJlZUl0ZW0gPSBzdHlsZWQubGkgYFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDBcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWw3MDB9O1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIGN1cnNvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbVdyYXBwZXJDdXJzb3IocHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMuc2VsZWN0YWJsZVR5cGUsIHByb3BzLm5vZGVUeXBlKX07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcblxuICBwYWRkaW5nLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCBmYWxzZSwgZmFsc2UsIHByb3BzLmlzVmlydHVhbGl6ZWQpfTtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuXG4gICAgJiA+ICo6Zmlyc3QtY2hpbGQge1xuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkXG4gICAgICAgICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLmZvY3VzSW52ZXJzZVxyXG4gICAgOiBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXN9O1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIGZhbHNlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgbWFyZ2luLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCB0cnVlLCB0cnVlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgcGFkZGluZy1ibG9jay1lbmQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctYmxvY2stc3RhcnQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJlxyXG4gICAgY3NzIGBcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzLmlzSW52ZXJzZVxyXG4gICAgICAgID8gcHJvcHMudGhlbWUuY29sb3JzLnRlcnRpYXJ5NTAwXHJcbiAgICAgICAgOiBwcm9wcy50aGVtZS5jb2xvcnMucHJpbWFyeTUwMH07XG4gICAgICAgICAgYmxvY2stc2l6ZTogMTAwJTtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICBpbmxpbmUtc2l6ZTogJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ6IDA7XG4gICAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAwO1xuICAgICAgICB9XG4gICAgICBgfVxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBnZXRIb3ZlckJhY2tncm91bmQoe1xyXG4gICAgaXNEaXNhYmxlZDogcHJvcHMuaXNEaXNhYmxlZCxcclxuICAgIGhvdmVyQ29sb3I6IHByb3BzLmhvdmVyQ29sb3IsXHJcbiAgICBpc0ludmVyc2U6IHByb3BzLmlzSW52ZXJzZSxcclxuICAgIHRoZW1lOiBwcm9wcy50aGVtZSxcclxufSl9O1xuICAgIH1cbiAgfVxuYDtcclxuZnVuY3Rpb24gZ2V0SG92ZXJCYWNrZ3JvdW5kKHsgaXNEaXNhYmxlZCwgaG92ZXJDb2xvciwgaXNJbnZlcnNlLCB0aGVtZSB9KSB7XHJcbiAgICBpZiAoaXNEaXNhYmxlZClcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgaWYgKGhvdmVyQ29sb3IpXHJcbiAgICAgICAgcmV0dXJuIGhvdmVyQ29sb3I7XHJcbiAgICBjb25zdCB0cmFuc3BhcmVuY3kgPSBpc0ludmVyc2UgPyAwLjggOiAwLjk1O1xyXG4gICAgcmV0dXJuIHRyYW5zcGFyZW50aXplKHRyYW5zcGFyZW5jeSwgdGhlbWUuY29sb3JzLm5ldXRyYWw5MDApO1xyXG59XHJcbmNvbnN0IEljb25XcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBtYXJnaW4tbGVmdDogMDtcblxuICBzdmcge1xuICAgIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pY29uU2l6ZXMubWVkaXVtfXB4O1xuICAgIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgfVxuYDtcclxuY29uc3QgU3R5bGVkTGFiZWxXcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgd2lkdGg6IDEwMCU7XG5gO1xyXG5jb25zdCBTdHlsZWRFeHBhbmRXcmFwcGVyID0gc3R5bGVkLmRpdiBgXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgbWFyZ2luLXJpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuY29sb3IgfHxcclxuICAgIGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIHdpZHRoOiAkeyh7IHNpemUsIHRoZW1lIH0pID0+IHNpemUgIT09IHVuZGVmaW5lZCA/IGAke3NpemV9cHhgIDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDZ9O1xuICBoZWlnaHQ6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG5gO1xyXG5jb25zdCBHdWlkZUxpbmUgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDh9O1xuICBib3R0b206IDA7XG4gIGluc2V0LWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy5ndWlkZUxpbmVMZWZ0fTtcbiAgd2lkdGg6IDA7XG4gIGJvcmRlci1pbmxpbmUtc3RhcnQ6IDFweCBzb2xpZFxuICAgICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHRyYW5zcGFyZW50aXplKDAuNywgcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDApXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMzAwfTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHotaW5kZXg6IDE7XG5gO1xyXG5jb25zdCBWaXJ0dWFsaXplZEd1aWRlTGluZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogMDtcbiAgYm9yZGVyLWlubGluZS1zdGFydDogMXB4IHNvbGlkXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDEwMClcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwzMDB9O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW1Db21wb25lbnQgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XHJcbiAgICBjb25zdCB7IGFkZGl0aW9uYWxDb250ZW50LCBjaGlsZHJlbiwgaG92ZXJDb2xvciwgaWNvbiwgaW5kZXg6IGluZGV4UHJvcCwgbGFiZWwsIGxhYmVsU3R5bGUsIHN0eWxlLCB0ZXN0SWQsIHRvcExldmVsOiB0b3BMZXZlbFByb3AsIHRyZWVJdGVtU3R5bGVzLCAuLi5yZXN0IH0gPSBwcm9wcztcclxuICAgIGNvbnN0IHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xyXG4gICAgY29uc3QgaXNJbnZlcnNlID0gdXNlSXNJbnZlcnNlKCk7XHJcbiAgICAvLyBSZWFkIGhpZXJhcmNoeSBpbmZvcm1hdGlvbiBmcm9tIGNvbnRleHQgKHJlZHVjZXMgY2xvbmVFbGVtZW50IG92ZXJoZWFkKVxyXG4gICAgY29uc3QgaGllcmFyY2h5Q29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0KTtcclxuICAgIC8vIFVzZSBjb250ZXh0IHZhbHVlcyBpZiBwcm9wcyBhcmUgbm90IHByb3ZpZGVkIChmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSlcclxuICAgIGNvbnN0IGluZGV4ID0gaW5kZXhQcm9wICE9PSB1bmRlZmluZWQgPyBpbmRleFByb3AgOiBoaWVyYXJjaHlDb250ZXh0LmluZGV4O1xyXG4gICAgY29uc3QgdG9wTGV2ZWwgPSB0b3BMZXZlbFByb3AgIT09IHVuZGVmaW5lZCA/IHRvcExldmVsUHJvcCA6IGhpZXJhcmNoeUNvbnRleHQuaXNUb3BMZXZlbDtcclxuICAgIC8vIENvbnN1bWUgc3BsaXQgY29udGV4dHMgZm9yIHJlZHVjZWQgcmUtcmVuZGVyIHNjb3BlXHJcbiAgICBjb25zdCB7IGl0ZW1Ub0ZvY3VzIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGhhbmRsZUV4cGFuZGVkQ2hhbmdlIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGV4cGFuZEljb25TdHlsZXMsIGhhc0d1aWRlTGluZXMsIGhhc0ljb25zLCBpc1RvcExldmVsU2VsZWN0YWJsZSwgc2VsZWN0YWJsZSwgc2VsZWN0UGFyZW50cyA9IHRydWUsIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29uZmlnQ29udGV4dCk7XHJcbiAgICAvLyBQYXNzIHRoZSByZXNvbHZlZCB2YWx1ZXMgdG8gdXNlVHJlZUl0ZW1cclxuICAgIGNvbnN0IHByb3BzV2l0aEhpZXJhcmNoeSA9IHtcclxuICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICBpbmRleCxcclxuICAgICAgICB0b3BMZXZlbCxcclxuICAgICAgICBpdGVtRGVwdGg6IGhpZXJhcmNoeUNvbnRleHQuZGVwdGgsXHJcbiAgICAgICAgcGFyZW50RGVwdGg6IGhpZXJhcmNoeUNvbnRleHQucGFyZW50RGVwdGgsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyBjb250ZXh0VmFsdWUsIGhhbmRsZUNsaWNrLCBoYW5kbGVLZXlEb3duIH0gPSB1c2VUcmVlSXRlbShwcm9wc1dpdGhIaWVyYXJjaHksIGZvcndhcmRlZFJlZik7XHJcbiAgICBjb25zdCB7IGlzRGlzYWJsZWQgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IHsgaXNNYWNPUyB9ID0gdXNlRGV2aWNlRGV0ZWN0KCk7XHJcbiAgICBjb25zdCBpMThuID0gUmVhY3QudXNlQ29udGV4dChJMThuQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGNoZWNrYm94Q2hhbmdlSGFuZGxlciwgY2hlY2tlZFN0YXR1cywgZXhwYW5kZWQsIGhhc093blRyZWVJdGVtcywgaXRlbURlcHRoLCBpdGVtSWQsIHJlZiwgc2VsZWN0ZWRJdGVtcywgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IG5vZGVUeXBlID0gaGFzT3duVHJlZUl0ZW1zID8gVHJlZU5vZGVUeXBlLmJyYW5jaCA6IFRyZWVOb2RlVHlwZS5sZWFmO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZVxyXG4gICAgICAgID8gc2VsZWN0ZWRJdGVtcz8uWzBdPy5pdGVtSWQgPT09IGl0ZW1JZFxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IGFyaWFDaGVja2VkVmFsdWUgPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUubXVsdGlcclxuICAgICAgICA/IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5pbmRldGVybWluYXRlXHJcbiAgICAgICAgICAgID8gJ21peGVkJ1xyXG4gICAgICAgICAgICA6IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5jaGVja2VkXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgW2lzSW5zaWRlVHJlZUl0ZW0sIHNldElzSW5zaWRlVHJlZUl0ZW1dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgdHJlZUl0ZW1SZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XHJcbiAgICBjb25zdCBmb2N1c1RyYXBFbGVtZW50ID0gdXNlRm9jdXNMb2NrKGlzSW5zaWRlVHJlZUl0ZW0pO1xyXG4gICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50cyA9ICdidXR0b24sIFtyb2xlPVwiYnV0dG9uXCJdLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgYVtocmVmXSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJztcclxuICAgIGNvbnN0IGdldEludGVyYWN0aXZlRWxlbWVudHMgPSBSZWFjdC51c2VDYWxsYmFjaygoY29udGFpbmVyLCBzZWxlY3RvcikgPT4ge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSkuZmlsdGVyKGVsID0+ICFlbC5oYXNBdHRyaWJ1dGUoJ3RhYmluZGV4JykgfHxcclxuICAgICAgICAgICAgKGVsLnRhYkluZGV4ICE9PSB1bmRlZmluZWQgJiYgZWwudGFiSW5kZXggPj0gMCkpO1xyXG4gICAgfSwgW10pO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGFsbG93cyBmb3Iga2V5Ym9hcmQgbmF2aWdhdGlvbiB3aXRoaW4gdGhlIGxhYmVsIGFuZCBhZGRpdGlvbmFsIGNvbnRlbnQgb2YgYSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogWW91IGNhbiBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIHVzaW5nIHRoZSBgVGFiYCBrZXksIGFjdGl2YXRlIHRoZW0gd2l0aCBgRW50ZXJgIG9yIGBTcGFjZWAsXHJcbiAgICAgKiBhbmQgZXhpdCBvdXRzaWRlIGFuZCBmb2N1cyB0aGUgd2hvbGUgdHJlZSBpdGVtIHdpdGggYEVzY2FwZWAuXHJcbiAgICAgKiAqKi9cclxuICAgIGNvbnN0IGhhbmRsZUxhYmVsQW5kQWRkaXRpb25hbENvbnRlbnRLZXlEb3duID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBrZXksIHRhcmdldCwgY3VycmVudFRhcmdldCwgc2hpZnRLZXkgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gdGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNTcGFjZSA9IGtleSA9PT0gJyAnO1xyXG4gICAgICAgIGNvbnN0IGlzRXNjYXBlID0ga2V5ID09PSAnRXNjYXBlJztcclxuICAgICAgICBjb25zdCBpc1RhYiA9IGtleSA9PT0gJ1RhYic7XHJcbiAgICAgICAgY29uc3QgaXNBY3RpdmF0aW9uS2V5ID0gaXNFbnRlciB8fCBpc1NwYWNlO1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBgVGFiYCwgd2UgbmF2aWdhdGUgdGhyb3VnaCBpbnRlcmFjdGl2ZSBlbGVtZW50cyBpbnNpZGUgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmIChpc1RhYiAmJiBpc0luc2lkZVRyZWVJdGVtKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudHNMaXN0ID0gZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyhjdXJyZW50VGFyZ2V0LCBpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAgICAgLy8gRmlsdGVyIGxpc3Qgb2YgaW50ZXJhY3RpdmUgZWxlbWVudHMgd2hpY2ggYXJlIG9ubHkgaW5jbHVkZWQgZm9yIGN1cnJlbnQgdHJlZSBpdGVtXHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMgPSBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdC5maWx0ZXIoZWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2xvc2VzdFRyZWVJdGVtID0gZWwuY2xvc2VzdCgnW3JvbGU9XCJ0cmVlaXRlbVwiXScpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsb3Nlc3RUcmVlSXRlbSA9PT0gdHJlZUl0ZW1SZWYuY3VycmVudDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMuaW5kZXhPZihjdXJyZW50RWxlbWVudCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHNoaWZ0S2V5ID8gLTEgOiAxO1xyXG4gICAgICAgICAgICBjb25zdCB0b3RhbCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMubGVuZ3RoO1xyXG4gICAgICAgICAgICBjb25zdCBuZXh0SW5kZXggPSAoY3VycmVudEluZGV4ICsgZGlyZWN0aW9uICsgdG90YWwpICUgdG90YWw7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50c1tuZXh0SW5kZXhdO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudFRvRm9jdXMpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZWxlbWVudFRvRm9jdXMuZm9jdXMoKSwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBQcmVzc2luZyBgRW50ZXJgIG9yIGBTcGFjZWAgb24gYW4gaW50ZXJhY3RpdmUgZWxlbWVudCB3aWxsIHRyaWdnZXIgaXRzIGNsaWNrIGV2ZW50XHJcbiAgICAgICAgaWYgKGlzQWN0aXZhdGlvbktleSAmJiBpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgaW50ZXJhY3RpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE1vdmVzIGZvY3VzIG91dHNpZGUgdGhlIHRyZWUgaXRlbSBhbmQgZm9jdXNlcyB0aGUgdHJlZSBpdGVtIGl0c2VsZiB3aGVuIGBFc2NhcGVgIGlzIHByZXNzZWRcclxuICAgICAgICBpZiAoaXNFc2NhcGUpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHNldElzSW5zaWRlVHJlZUl0ZW0oZmFsc2UpO1xyXG4gICAgICAgICAgICBjb25zdCB0cmVlSXRlbU5vZGUgPSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICBpZiAodHJlZUl0ZW1Ob2RlKSB7XHJcbiAgICAgICAgICAgICAgICB0cmVlSXRlbU5vZGUuZm9jdXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzSW5zaWRlVHJlZUl0ZW1dKTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gUmVhY3QudXNlTWVtbygoKSA9PiBub2RlVHlwZSA9PT0gVHJlZU5vZGVUeXBlLmJyYW5jaCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEZvbGRlckljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KEFydGljbGVJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSksIFtub2RlVHlwZV0pO1xyXG4gICAgLy8gTWVtb2lzZSB0aGUgbGFiZWwgSlNYIHNvIHRoZSBgY2hlY2tib3hQcm9wc2AgbWVtbyBiZWxvdyBhY3R1YWxseSBoYXNcclxuICAgIC8vIGEgc3RhYmxlIGBsYWJlbFRleHRgIHJlZmVyZW5jZSBiZXR3ZWVuIHJlbmRlcnMuIFByZXZpb3VzbHkgdGhpc1xyXG4gICAgLy8gZWxlbWVudCB3YXMgcmUtY3JlYXRlZCBvbiBldmVyeSByZW5kZXIsIHdoaWNoIGZvcmNlZFxyXG4gICAgLy8gYGNoZWNrYm94UHJvcHNgIHRvIGFsc28gYmUgcmUtY3JlYXRlZCBhbmQgYW55IGZ1dHVyZSBSZWFjdC5tZW1vIG9uXHJcbiAgICAvLyBDaGVja2JveC9JbmRldGVybWluYXRlQ2hlY2tib3ggd291bGQgYWx3YXlzIGJhaWwgb3V0LlxyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gUmVhY3QudXNlTWVtbygoKSA9PiAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRMYWJlbFdyYXBwZXIsIHsgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgc3R5bGU6IGxhYmVsU3R5bGUsIGlkOiBgJHtpdGVtSWR9LWxhYmVsYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1sYWJlbGAgfSxcclxuICAgICAgICBoYXNJY29ucyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChJY29uV3JhcHBlciwgeyBpc0ludmVyc2U6IGlzSW52ZXJzZSwgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWljb25gIH0sIGljb24gfHwgZGVmYXVsdEljb24pKSxcclxuICAgICAgICBsYWJlbCkpLCBbXHJcbiAgICAgICAgdGhlbWUsXHJcbiAgICAgICAgaXNEaXNhYmxlZCxcclxuICAgICAgICBpc0ludmVyc2UsXHJcbiAgICAgICAgbGFiZWxTdHlsZSxcclxuICAgICAgICBpdGVtSWQsXHJcbiAgICAgICAgdGVzdElkLFxyXG4gICAgICAgIGhhc0ljb25zLFxyXG4gICAgICAgIGljb24sXHJcbiAgICAgICAgZGVmYXVsdEljb24sXHJcbiAgICAgICAgbGFiZWwsXHJcbiAgICBdKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBSZWFjdC51c2VNZW1vKCgpID0+IGFkZGl0aW9uYWxDb250ZW50ID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQWRkaXRpb25hbENvbnRlbnRXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaWQ6IGAke2l0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgIH0sIGFkZGl0aW9uYWxDb250ZW50KSkgOiBudWxsLCBbYWRkaXRpb25hbENvbnRlbnQsIHRoZW1lLCBpdGVtSWQsIHRlc3RJZF0pO1xyXG4gICAgLy8gU3RhYmxlIHBlci1jaGlsZCBoaWVyYXJjaHkgdmFsdWVzLiBUaGUgcmVmZXJlbmNlIG11c3Qgbm90IGNoYW5nZSBvblxyXG4gICAgLy8gcmUtcmVuZGVycyB0cmlnZ2VyZWQgYnkgVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0LCBvdGhlcndpc2UgZXZlcnlcclxuICAgIC8vIG5lc3RlZCBUcmVlSXRlbSByZS1yZW5kZXJzIHRocm91Z2ggdGhlIGNvbnRleHQgYW5kIFJlYWN0Lm1lbW8gaXNcclxuICAgIC8vIGRlZmVhdGVkLlxyXG4gICAgY29uc3QgY2hpbGRIaWVyYXJjaGllcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvdW50ID0gUmVhY3QuQ2hpbGRyZW4uY291bnQoY2hpbGRyZW4pO1xyXG4gICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShjb3VudCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGFycltpXSA9IHtcclxuICAgICAgICAgICAgICAgIGRlcHRoOiBpdGVtRGVwdGggKyAxLFxyXG4gICAgICAgICAgICAgICAgcGFyZW50RGVwdGg6IGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgIGlzVG9wTGV2ZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhcnI7XHJcbiAgICB9LCBbY2hpbGRyZW4sIGl0ZW1EZXB0aF0pO1xyXG4gICAgLy8gTWVtb2l6ZSBpbmxpbmUgc3R5bGUgb2JqZWN0cyB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IHJlLXJlbmRlcnNcclxuICAgIGNvbnN0IGNoZWNrYm94SW5wdXRTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHsgbWFyZ2luUmlnaHQ6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzIH0pLCBbdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDNdKTtcclxuICAgIGNvbnN0IGNoZWNrYm94TGFiZWxTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcclxuICAgICAgICBwYWRkaW5nOiAwLFxyXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICB9KSwgW10pO1xyXG4gICAgLy8gUHJvcHMgc2hhcmVkIGJ5IENoZWNrYm94IGFuZCBJbmRldGVybWluYXRlQ2hlY2tib3hcclxuICAgIGNvbnN0IGNoZWNrYm94UHJvcHMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XHJcbiAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaGlkZUZvY3VzOiB0cnVlLFxyXG4gICAgICAgIGlkOiBgJHtpdGVtSWR9LWNoZWNrYm94YCxcclxuICAgICAgICBpbnB1dFN0eWxlOiBjaGVja2JveElucHV0U3R5bGUsXHJcbiAgICAgICAgbGFiZWxTdHlsZTogY2hlY2tib3hMYWJlbFN0eWxlLFxyXG4gICAgICAgIGxhYmVsVGV4dDogbGFiZWxUZXh0LFxyXG4gICAgICAgIG9uQ2hhbmdlOiBjaGVja2JveENoYW5nZUhhbmRsZXIsXHJcbiAgICAgICAgdGFiSW5kZXg6IC0xLFxyXG4gICAgICAgIHRlc3RJZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICB9KSwgW1xyXG4gICAgICAgIGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaXRlbUlkLFxyXG4gICAgICAgIGNoZWNrYm94SW5wdXRTdHlsZSxcclxuICAgICAgICBjaGVja2JveExhYmVsU3R5bGUsXHJcbiAgICAgICAgbGFiZWxUZXh0LFxyXG4gICAgICAgIGNoZWNrYm94Q2hhbmdlSGFuZGxlcixcclxuICAgIF0pO1xyXG4gICAgY29uc3Qgb25FeHBhbmRlZENsaWNrZWQgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGhhbmRsZUV4cGFuZGVkQ2hhbmdlKGV2ZW50LCBpdGVtSWQpO1xyXG4gICAgfSwgW2hhbmRsZUV4cGFuZGVkQ2hhbmdlLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IGhhbmRsZUV4cGFuZENsaWNrID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKCFpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICBvbkV4cGFuZGVkQ2xpY2tlZChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIG9uRXhwYW5kZWRDbGlja2VkXSk7XHJcbiAgICBjb25zdCBoYW5kbGVPbkNsaWNrID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSBldmVudC50YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdCgnYnV0dG9uLCBbcm9sZT1cImJ1dHRvblwiXSwgYVtocmVmXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIFtyb2xlPVwibWVudWl0ZW1cIl0nKTtcclxuICAgICAgICAvLyBQcmV2ZW50aW5nIHNlbGVjdGluZyB0aGUgaXRlbSB3aGVuIGNsaWNraW5nIG9uIGludGVyYWN0aXZlIGVsZW1lbnRzIHdoZW4gYHNlbGVjdGFibGVgIGlzIGBzaW5nbGVgXHJcbiAgICAgICAgaWYgKGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBJZiBzZWxlY3RQYXJlbnRzIGlzIGZhbHNlIGFuZCB0aGlzIGlzIGEgcGFyZW50IGl0ZW0sIGhhbmRsZSBleHBhbmQvY29sbGFwc2UgaW5zdGVhZCBvZiBzZWxlY3Rpb25cclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZSAmJlxyXG4gICAgICAgICAgICAhc2VsZWN0UGFyZW50cyAmJlxyXG4gICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMpIHtcclxuICAgICAgICAgICAgb25FeHBhbmRlZENsaWNrZWQoZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEluIHNlbGVjdGFibGU9b2ZmIG1vZGUsIGNsaWNraW5nIGFueXdoZXJlIG9uIGEgcGFyZW50IGl0ZW0gdG9nZ2xlcyBleHBhbmQvY29sbGFwc2VcclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLm9mZiAmJiBoYXNPd25UcmVlSXRlbXMpIHtcclxuICAgICAgICAgICAgb25FeHBhbmRlZENsaWNrZWQoZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUuc2luZ2xlKSB7XHJcbiAgICAgICAgICAgIGhhbmRsZUNsaWNrKGV2ZW50LCBpdGVtSWQpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCB0YWJJbmRleCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpdGVtVG9Gb2N1cyA9PT0gaXRlbUlkID8gMCA6IC0xO1xyXG4gICAgfSwgW2lzRGlzYWJsZWQsIGl0ZW1Ub0ZvY3VzLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IHNob3VsZFNob3dDaGVja2JveCA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aSAmJlxyXG4gICAgICAgIChpc1RvcExldmVsU2VsZWN0YWJsZSAhPT0gZmFsc2UgfHwgIXRvcExldmVsKTtcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gd2l0aGluIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogUHJlc3NpbmcgYEN0cmwgKyBFbnRlcmAgb3IgYENvbW1hbmQgKyBFbnRlcmAgZm9jdXNlcyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudCB3aXRoaW4gdGhlIHRyZWUgaXRlbVxyXG4gICAgICogYW5kIGxvY2tzIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIElmIHRoZSBmb2N1cyBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaXQgaGFuZGxlcyBrZXkgZXZlbnRzIGZvciBpbnRlcmFjdGlvbiBlbGVtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBJdCBhbHNvIGhhbmRsZXMgdGhlIG90aGVyIGtleXMgdG8gdHJpZ2dlciB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIHRyZWUgaXRlbS5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3Qgb25LZXlEb3duSGFuZGxlciA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsga2V5LCB0YXJnZXQsIGN1cnJlbnRUYXJnZXQgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNDdHJsT3JDb21tYW5kID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5O1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybEVudGVyID0gaXNDdHJsT3JDb21tYW5kICYmIGlzRW50ZXI7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBDdHJsICsgRW50ZXIgb3IgQ29tbWFuZCArIEVudGVyLCBmb2N1cyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudFxyXG4gICAgICAgIC8vIGFuZCBsb2NrIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzQ3RybEVudGVyICYmIHRhcmdldCA9PT0gY3VycmVudFRhcmdldCkge1xyXG4gICAgICAgICAgICBzZXRJc0luc2lkZVRyZWVJdGVtKHRydWUpO1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdCA9IGdldEludGVyYWN0aXZlRWxlbWVudHMoY3VycmVudFRhcmdldCwgaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gaW50ZXJhY3RpdmVFbGVtZW50c0xpc3RbMF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gRW5zdXJlIHZhbGlkIENTUyBzZWxlY3RvcnMgYnkgZXNjYXBpbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChlLmcuLCBwZXJpb2RzIGluIGl0ZW1JZClcclxuICAgICAgICBjb25zdCBzYWZlSXRlbUlkID0gQ1NTLmVzY2FwZShpdGVtSWQpO1xyXG4gICAgICAgIGNvbnN0IGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50ID0gdGFyZ2V0LmNsb3Nlc3QoYCMke3NhZmVJdGVtSWR9LWxhYmVsLCAjJHtzYWZlSXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgKTtcclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHdpdGhpbiB0aGUgbGFiZWwgb3IgYWRkaXRpb25hbCBjb250ZW50LCBoYW5kbGUga2V5IGV2ZW50cyBmb3IgdGhvc2UgYXJlYXNcclxuICAgICAgICBpZiAoaXNXaXRoaW5MYWJlbE9yQWRkaXRpb25hbENvbnRlbnQpIHtcclxuICAgICAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaXMgdGhlIHRyZWUgaXRlbSBpdHNlbGYsIGhhbmRsZSBrZXkgZG93biBmb3IgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgaGFuZGxlS2V5RG93bihldmVudCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9LCBbXHJcbiAgICAgICAgZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyxcclxuICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnRzLFxyXG4gICAgICAgIGl0ZW1JZCxcclxuICAgICAgICBoYW5kbGVMYWJlbEFuZEFkZGl0aW9uYWxDb250ZW50S2V5RG93bixcclxuICAgICAgICBoYW5kbGVLZXlEb3duLFxyXG4gICAgXSk7XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBjb250ZXh0VmFsdWUgfSxcclxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgc3R5bGU6IHRyZWVJdGVtU3R5bGVzIH0sXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkVHJlZUl0ZW0sIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgXCJhcmlhLWV4cGFuZGVkXCI6IGhhc093blRyZWVJdGVtcyA/IGV4cGFuZGVkIDogbnVsbCwgXCJhcmlhLXNlbGVjdGVkXCI6IHNlbGVjdGVkSXRlbSwgXCJhcmlhLWNoZWNrZWRcIjogc2hvdWxkU2hvd0NoZWNrYm94ID8gYXJpYUNoZWNrZWRWYWx1ZSA6IG51bGwsIFwiZGF0YS10ZXN0aWRcIjogdGVzdElkLCBkZXB0aDogaXRlbURlcHRoLCBoYXNPd25UcmVlSXRlbXM6IGhhc093blRyZWVJdGVtcywgaWQ6IGl0ZW1JZCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIGlzVmlydHVhbGl6ZWQ6IGhpZXJhcmNoeUNvbnRleHQuaXNWaXJ0dWFsaXplZCwgbm9kZVR5cGU6IG5vZGVUeXBlLCByb2xlOiBcInRyZWVpdGVtXCIsIHNlbGVjdGFibGVUeXBlOiBzZWxlY3RhYmxlLCBzZWxlY3RlZDogc2VsZWN0ZWRJdGVtLCB0aGVtZTogdGhlbWUsIHRhYkluZGV4OiB0YWJJbmRleCwgb25LZXlEb3duOiBvbktleURvd25IYW5kbGVyLCByZWY6IHRyZWVJdGVtUmVmLCBob3ZlckNvbG9yOiBob3ZlckNvbG9yIH0pLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRJdGVtV3JhcHBlciwgeyBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCA/PyBpdGVtSWR9LWl0ZW13cmFwcGVyYCwgZGVwdGg6IGl0ZW1EZXB0aCwgaGFzQWRkaXRpb25hbENvbnRlbnQ6ICEhYWRkaXRpb25hbENvbnRlbnQsIGhhc0N1c3RvbUljb25TaXplOiAhIWV4cGFuZEljb25TdHlsZXM/LnNpemUsIGlkOiBgJHtpdGVtSWR9LWl0ZW13cmFwcGVyYCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG5vZGVUeXBlOiBub2RlVHlwZSwgc2VsZWN0YWJsZTogc2VsZWN0YWJsZSwgc3R5bGU6IHN0eWxlLCB0aGVtZTogdGhlbWUsIHJlZjogbWVyZ2VSZWZzKHJlZiwgZm9jdXNUcmFwRWxlbWVudCksIG9uQ2xpY2s6IGhhbmRsZU9uQ2xpY2sgfSxcclxuICAgICAgICAgICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkRXhwYW5kV3JhcHBlciwgeyBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplLCBjb2xvcjogZXhwYW5kSWNvblN0eWxlcz8uY29sb3IsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tZXhwYW5kYCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG9uQ2xpY2s6IGhhbmRsZUV4cGFuZENsaWNrLCB0aGVtZTogdGhlbWUgfSwgZXhwYW5kZWQgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChFeHBhbmRNb3JlSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIHNpemU6IGV4cGFuZEljb25TdHlsZXM/LnNpemUgfSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hldnJvblJpZ2h0SWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIHNpemU6IGV4cGFuZEljb25TdHlsZXM/LnNpemUgfSkpKSksXHJcbiAgICAgICAgICAgICAgICAgICAgc2hvdWxkU2hvd0NoZWNrYm94ID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkQ2hlY2tib3hXcmFwcGVyLCB7IGhhc0FkZGl0aW9uYWxDb250ZW50OiAhIWFkZGl0aW9uYWxDb250ZW50LCB0aGVtZTogdGhlbWUgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzT3duVHJlZUl0ZW1zID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW5kZXRlcm1pbmF0ZUNoZWNrYm94LCBPYmplY3QuYXNzaWduKHt9LCBjaGVja2JveFByb3BzLCB7IHN0YXR1czogY2hlY2tlZFN0YXR1cyB9KSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hlY2tib3gsIE9iamVjdC5hc3NpZ24oe30sIGNoZWNrYm94UHJvcHMsIHsgY2hlY2tlZDogY2hlY2tlZFN0YXR1c1RvQm9vbGVhbihjaGVja2VkU3RhdHVzKSB9KSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlSXRlbUFkZGl0aW9uYWxDb250ZW50KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxUZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlSXRlbUFkZGl0aW9uYWxDb250ZW50KSkpLFxyXG4gICAgICAgICAgICAgICAgaGFzR3VpZGVMaW5lcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIChoaWVyYXJjaHlDb250ZXh0LmlzVmlydHVhbGl6ZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBpdGVtRGVwdGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5mcm9tKHsgbGVuZ3RoOiBpdGVtRGVwdGggfSwgKF8sIGQpID0+IChSZWFjdC5jcmVhdGVFbGVtZW50KFZpcnR1YWxpemVkR3VpZGVMaW5lLCB7IGtleTogYGd1aWRlbGluZS0ke2R9YCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS12aXJ0dWFsaXplZC1ndWlkZWxpbmUtJHtkfWAsIHRoZW1lOiB0aGVtZSwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2V0SW5saW5lU3RhcnQ6IGBjYWxjKCR7Y2FsY3VsYXRlT2Zmc2V0KFRyZWVOb2RlVHlwZS5icmFuY2gsIGQsIGZhbHNlLCBmYWxzZSwgdHJ1ZSl9ICsgJHtleHBhbmRJY29uU3R5bGVzPy5zaXplICE9PSB1bmRlZmluZWQgPyBgJHtleHBhbmRJY29uU3R5bGVzLnNpemV9cHhgIDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDZ9IC8gMiAtIDAuNXB4KWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB9KSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaGFzT3duVHJlZUl0ZW1zICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRlZCAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChHdWlkZUxpbmUsIHsgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1ndWlkZWxpbmVgLCB0aGVtZTogdGhlbWUsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBndWlkZUxpbmVMZWZ0OiBgY2FsYygke2NhbGN1bGF0ZU9mZnNldChUcmVlTm9kZVR5cGUuYnJhbmNoLCBpdGVtRGVwdGgsIGZhbHNlLCBmYWxzZSwgZmFsc2UpfSArICR7ZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7ZXhwYW5kSWNvblN0eWxlcy5zaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fSAvIDIgLSAwLjVweCkgYCB9KSkpLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuQ2hpbGRyZW4ubWFwKGNoaWxkcmVuLCAoY2hpbGQsIGNoaWxkSW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQ/LnR5cGUgIT09IFRyZWVJdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVXNlIHRoZSBzdGFibGUsIHByZS1tZW1vaXNlZCB2YWx1ZSAoc2VlIGNoaWxkSGllcmFyY2hpZXMgYWJvdmUpLlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5lc3RlZEhpZXJhcmNoeVZhbHVlID0gY2hpbGRIaWVyYXJjaGllc1tjaGlsZEluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJhbnNpdGlvbiwgeyBpc09wZW46IGV4cGFuZGVkLCB1bm1vdW50T25FeGl0OiB0cnVlIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ1bFwiLCB7IHJvbGU6IFwiZ3JvdXBcIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUcmVlSXRlbUhpZXJhcmNoeUNvbnRleHQuUHJvdmlkZXIsIHsga2V5OiBjaGlsZC5wcm9wcy5pdGVtSWQsIHZhbHVlOiBuZXN0ZWRIaWVyYXJjaHlWYWx1ZSB9LCBjaGlsZCkpKSk7XHJcbiAgICAgICAgICAgICAgICB9KSksXHJcbiAgICAgICAgICAgIGlzTWFjT1MgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVmlzdWFsbHlIaWRkZW4sIG51bGwsXHJcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEFubm91bmNlLCBudWxsLCBleHBhbmRlZFxyXG4gICAgICAgICAgICAgICAgICAgID8gaTE4bi5leHBhbnNpb25TdGF0ZS5leHBhbmRlZFxyXG4gICAgICAgICAgICAgICAgICAgIDogaTE4bi5leHBhbnNpb25TdGF0ZS5jb2xsYXBzZWQpKSkpKSk7XHJcbn0pO1xyXG4vKipcclxuICogQ3VzdG9tIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIFJlYWN0Lm1lbW9cclxuICogT25seSByZS1yZW5kZXIgVHJlZUl0ZW0gd2hlbiByZWxldmFudCBwcm9wcyBjaGFuZ2VcclxuICovXHJcbmZ1bmN0aW9uIGFyZVByb3BzRXF1YWwocHJldlByb3BzLCBuZXh0UHJvcHMpIHtcclxuICAgIC8vIENoZWNrIGlmIGl0ZW1JZCBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLml0ZW1JZCAhPT0gbmV4dFByb3BzLml0ZW1JZCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGxhYmVsIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMubGFiZWwgIT09IG5leHRQcm9wcy5sYWJlbCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGRpc2FibGVkIHN0YXRlIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaXNEaXNhYmxlZCAhPT0gbmV4dFByb3BzLmlzRGlzYWJsZWQpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBpY29uIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaWNvbiAhPT0gbmV4dFByb3BzLmljb24pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBhZGRpdGlvbmFsIGNvbnRlbnQgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5hZGRpdGlvbmFsQ29udGVudCAhPT0gbmV4dFByb3BzLmFkZGl0aW9uYWxDb250ZW50KSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgaG92ZXIgY29sb3IgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5ob3ZlckNvbG9yICE9PSBuZXh0UHJvcHMuaG92ZXJDb2xvcikge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGNoaWxkcmVuIGNoYW5nZWQgKGZvciBuZXN0ZWQgdHJlZSBpdGVtcylcclxuICAgIC8vIFVzaW5nIHR5cGUgYXNzZXJ0aW9uIHNpbmNlIGNoaWxkcmVuIGNvbWVzIGZyb20gUmVhY3QuSFRNTEF0dHJpYnV0ZXNcclxuICAgIGlmIChwcmV2UHJvcHMuY2hpbGRyZW4gIT09IG5leHRQcm9wcy5jaGlsZHJlbikge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIHN0eWxlcyBjaGFuZ2VkXHJcbiAgICAvLyBVc2luZyB0eXBlIGFzc2VydGlvbiBzaW5jZSBzdHlsZSBjb21lcyBmcm9tIFJlYWN0LkhUTUxBdHRyaWJ1dGVzXHJcbiAgICBpZiAocHJldlByb3BzLnN0eWxlICE9PSBuZXh0UHJvcHMuc3R5bGUpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAocHJldlByb3BzLmxhYmVsU3R5bGUgIT09IG5leHRQcm9wcy5sYWJlbFN0eWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZQcm9wcy50cmVlSXRlbVN0eWxlcyAhPT0gbmV4dFByb3BzLnRyZWVJdGVtU3R5bGVzKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQWxsIHJlbGV2YW50IHByb3BzIGFyZSBlcXVhbCwgc2tpcCByZS1yZW5kZXJcclxuICAgIHJldHVybiB0cnVlO1xyXG59XHJcbi8qKlxyXG4gKiBNZW1vaXplZCBUcmVlSXRlbSBjb21wb25lbnRcclxuICogT25seSByZS1yZW5kZXJzIHdoZW4gcmVsZXZhbnQgcHJvcHMgY2hhbmdlLCBpbXByb3ZpbmcgcGVyZm9ybWFuY2UgZm9yIGxhcmdlIHRyZWVzXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW0gPSBSZWFjdC5tZW1vKFRyZWVJdGVtQ29tcG9uZW50LCBhcmVQcm9wc0VxdWFsKTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VHJlZUl0ZW0uanMubWFwIl19 */"));
|
|
29457
29459
|
/*#__PURE__*/createStyled("div", {
|
|
29458
29460
|
target: "e1xiryew0",
|
|
29459
29461
|
label: "AdditionalContentWrapper"
|
|
29460
29462
|
})("margin-bottom:", function (props) {
|
|
29461
29463
|
return props.theme.spaceScale.spacing05;
|
|
29462
|
-
}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvSzRDIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dCB9IGZyb20gJy4vVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdDb25maWdDb250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld0NvbmZpZ0NvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0V4cGFuc2lvbkNvbnRleHQgfSBmcm9tICcuL1RyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyBjYWxjdWxhdGVPZmZzZXQsIGdldFRyZWVJdGVtTGFiZWxDb2xvciwgZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yLCBUcmVlTm9kZVR5cGUsIH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IEkxOG5Db250ZXh0IH0gZnJvbSAnLi4vLi4nO1xyXG5pbXBvcnQgdXNlRGV2aWNlRGV0ZWN0IGZyb20gJy4uLy4uL2hvb2tzL3VzZURldmljZURldGVjdCc7XHJcbmltcG9ydCB7IHVzZUZvY3VzTG9jayB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZUZvY3VzTG9jayc7XHJcbmltcG9ydCB7IHVzZUlzSW52ZXJzZSB9IGZyb20gJy4uLy4uL2ludmVyc2UnO1xyXG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgfSBmcm9tICcuLi8uLi90aGVtZS9UaGVtZUNvbnRleHQnO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmltcG9ydCB7IEFubm91bmNlIH0gZnJvbSAnLi4vQW5ub3VuY2UnO1xyXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gJy4uL0NoZWNrYm94JztcclxuaW1wb3J0IHsgSW5kZXRlcm1pbmF0ZUNoZWNrYm94LCBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMsIH0gZnJvbSAnLi4vSW5kZXRlcm1pbmF0ZUNoZWNrYm94JztcclxuaW1wb3J0IHsgVHJhbnNpdGlvbiB9IGZyb20gJy4uL1RyYW5zaXRpb24nO1xyXG5pbXBvcnQgeyBWaXN1YWxseUhpZGRlbiB9IGZyb20gJy4uL1Zpc3VhbGx5SGlkZGVuJztcclxuY29uc3QgU3R5bGVkVHJlZUl0ZW0gPSBzdHlsZWQubGkgYFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDBcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWw3MDB9O1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIGN1cnNvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbVdyYXBwZXJDdXJzb3IocHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMuc2VsZWN0YWJsZVR5cGUsIHByb3BzLm5vZGVUeXBlKX07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcblxuICBwYWRkaW5nLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCBmYWxzZSwgZmFsc2UsIHByb3BzLmlzVmlydHVhbGl6ZWQpfTtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuXG4gICAgJiA+ICo6Zmlyc3QtY2hpbGQge1xuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkXG4gICAgICAgICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLmZvY3VzSW52ZXJzZVxyXG4gICAgOiBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXN9O1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIGZhbHNlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgbWFyZ2luLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCB0cnVlLCB0cnVlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgcGFkZGluZy1ibG9jay1lbmQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctYmxvY2stc3RhcnQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJlxyXG4gICAgY3NzIGBcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzLmlzSW52ZXJzZVxyXG4gICAgICAgID8gcHJvcHMudGhlbWUuY29sb3JzLnRlcnRpYXJ5NTAwXHJcbiAgICAgICAgOiBwcm9wcy50aGVtZS5jb2xvcnMucHJpbWFyeTUwMH07XG4gICAgICAgICAgYmxvY2stc2l6ZTogMTAwJTtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICBpbmxpbmUtc2l6ZTogJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ6IDA7XG4gICAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAwO1xuICAgICAgICB9XG4gICAgICBgfVxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBnZXRIb3ZlckJhY2tncm91bmQoe1xyXG4gICAgaXNEaXNhYmxlZDogcHJvcHMuaXNEaXNhYmxlZCxcclxuICAgIGhvdmVyQ29sb3I6IHByb3BzLmhvdmVyQ29sb3IsXHJcbiAgICBpc0ludmVyc2U6IHByb3BzLmlzSW52ZXJzZSxcclxuICAgIHRoZW1lOiBwcm9wcy50aGVtZSxcclxufSl9O1xuICAgIH1cbiAgfVxuYDtcclxuZnVuY3Rpb24gZ2V0SG92ZXJCYWNrZ3JvdW5kKHsgaXNEaXNhYmxlZCwgaG92ZXJDb2xvciwgaXNJbnZlcnNlLCB0aGVtZSB9KSB7XHJcbiAgICBpZiAoaXNEaXNhYmxlZClcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgaWYgKGhvdmVyQ29sb3IpXHJcbiAgICAgICAgcmV0dXJuIGhvdmVyQ29sb3I7XHJcbiAgICBjb25zdCB0cmFuc3BhcmVuY3kgPSBpc0ludmVyc2UgPyAwLjggOiAwLjk1O1xyXG4gICAgcmV0dXJuIHRyYW5zcGFyZW50aXplKHRyYW5zcGFyZW5jeSwgdGhlbWUuY29sb3JzLm5ldXRyYWw5MDApO1xyXG59XHJcbmNvbnN0IEljb25XcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBtYXJnaW4tbGVmdDogMDtcblxuICBzdmcge1xuICAgIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pY29uU2l6ZXMubWVkaXVtfXB4O1xuICAgIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgfVxuYDtcclxuY29uc3QgU3R5bGVkTGFiZWxXcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgd2lkdGg6IDEwMCU7XG5gO1xyXG5jb25zdCBTdHlsZWRFeHBhbmRXcmFwcGVyID0gc3R5bGVkLmRpdiBgXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgbWFyZ2luLXJpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuY29sb3IgfHxcclxuICAgIGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIHdpZHRoOiAkeyh7IHNpemUsIHRoZW1lIH0pID0+IHNpemUgIT09IHVuZGVmaW5lZCA/IGAke3NpemV9cHhgIDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDZ9O1xuICBoZWlnaHQ6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG5gO1xyXG5jb25zdCBHdWlkZUxpbmUgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDh9O1xuICBib3R0b206IDA7XG4gIGluc2V0LWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy5ndWlkZUxpbmVMZWZ0fTtcbiAgd2lkdGg6IDA7XG4gIGJvcmRlci1pbmxpbmUtc3RhcnQ6IDFweCBzb2xpZFxuICAgICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHRyYW5zcGFyZW50aXplKDAuNywgcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDApXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMzAwfTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHotaW5kZXg6IDE7XG5gO1xyXG5jb25zdCBWaXJ0dWFsaXplZEd1aWRlTGluZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogMDtcbiAgYm9yZGVyLWlubGluZS1zdGFydDogMXB4IHNvbGlkXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDEwMClcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwzMDB9O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW1Db21wb25lbnQgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XHJcbiAgICBjb25zdCB7IGFkZGl0aW9uYWxDb250ZW50LCBjaGlsZHJlbiwgaG92ZXJDb2xvciwgaWNvbiwgaW5kZXg6IGluZGV4UHJvcCwgbGFiZWwsIGxhYmVsU3R5bGUsIHN0eWxlLCB0ZXN0SWQsIHRvcExldmVsOiB0b3BMZXZlbFByb3AsIHRyZWVJdGVtU3R5bGVzLCAuLi5yZXN0IH0gPSBwcm9wcztcclxuICAgIGNvbnN0IHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xyXG4gICAgY29uc3QgaXNJbnZlcnNlID0gdXNlSXNJbnZlcnNlKCk7XHJcbiAgICAvLyBSZWFkIGhpZXJhcmNoeSBpbmZvcm1hdGlvbiBmcm9tIGNvbnRleHQgKHJlZHVjZXMgY2xvbmVFbGVtZW50IG92ZXJoZWFkKVxyXG4gICAgY29uc3QgaGllcmFyY2h5Q29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0KTtcclxuICAgIC8vIFVzZSBjb250ZXh0IHZhbHVlcyBpZiBwcm9wcyBhcmUgbm90IHByb3ZpZGVkIChmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSlcclxuICAgIGNvbnN0IGluZGV4ID0gaW5kZXhQcm9wICE9PSB1bmRlZmluZWQgPyBpbmRleFByb3AgOiBoaWVyYXJjaHlDb250ZXh0LmluZGV4O1xyXG4gICAgY29uc3QgdG9wTGV2ZWwgPSB0b3BMZXZlbFByb3AgIT09IHVuZGVmaW5lZCA/IHRvcExldmVsUHJvcCA6IGhpZXJhcmNoeUNvbnRleHQuaXNUb3BMZXZlbDtcclxuICAgIC8vIENvbnN1bWUgc3BsaXQgY29udGV4dHMgZm9yIHJlZHVjZWQgcmUtcmVuZGVyIHNjb3BlXHJcbiAgICBjb25zdCB7IGl0ZW1Ub0ZvY3VzIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGhhbmRsZUV4cGFuZGVkQ2hhbmdlIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGV4cGFuZEljb25TdHlsZXMsIGhhc0d1aWRlTGluZXMsIGhhc0ljb25zLCBpc1RvcExldmVsU2VsZWN0YWJsZSwgc2VsZWN0YWJsZSwgc2VsZWN0UGFyZW50cyA9IHRydWUsIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29uZmlnQ29udGV4dCk7XHJcbiAgICAvLyBQYXNzIHRoZSByZXNvbHZlZCB2YWx1ZXMgdG8gdXNlVHJlZUl0ZW1cclxuICAgIGNvbnN0IHByb3BzV2l0aEhpZXJhcmNoeSA9IHtcclxuICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICBpbmRleCxcclxuICAgICAgICB0b3BMZXZlbCxcclxuICAgICAgICBpdGVtRGVwdGg6IGhpZXJhcmNoeUNvbnRleHQuZGVwdGgsXHJcbiAgICAgICAgcGFyZW50RGVwdGg6IGhpZXJhcmNoeUNvbnRleHQucGFyZW50RGVwdGgsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyBjb250ZXh0VmFsdWUsIGhhbmRsZUNsaWNrLCBoYW5kbGVLZXlEb3duIH0gPSB1c2VUcmVlSXRlbShwcm9wc1dpdGhIaWVyYXJjaHksIGZvcndhcmRlZFJlZik7XHJcbiAgICBjb25zdCB7IGlzRGlzYWJsZWQgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IHsgaXNNYWNPUyB9ID0gdXNlRGV2aWNlRGV0ZWN0KCk7XHJcbiAgICBjb25zdCBpMThuID0gUmVhY3QudXNlQ29udGV4dChJMThuQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGNoZWNrYm94Q2hhbmdlSGFuZGxlciwgY2hlY2tlZFN0YXR1cywgZXhwYW5kZWQsIGhhc093blRyZWVJdGVtcywgaXRlbURlcHRoLCBpdGVtSWQsIHJlZiwgc2VsZWN0ZWRJdGVtcywgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IG5vZGVUeXBlID0gaGFzT3duVHJlZUl0ZW1zID8gVHJlZU5vZGVUeXBlLmJyYW5jaCA6IFRyZWVOb2RlVHlwZS5sZWFmO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZVxyXG4gICAgICAgID8gc2VsZWN0ZWRJdGVtcz8uWzBdPy5pdGVtSWQgPT09IGl0ZW1JZFxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IGFyaWFDaGVja2VkVmFsdWUgPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUubXVsdGlcclxuICAgICAgICA/IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5pbmRldGVybWluYXRlXHJcbiAgICAgICAgICAgID8gJ21peGVkJ1xyXG4gICAgICAgICAgICA6IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5jaGVja2VkXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgW2lzSW5zaWRlVHJlZUl0ZW0sIHNldElzSW5zaWRlVHJlZUl0ZW1dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgdHJlZUl0ZW1SZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XHJcbiAgICBjb25zdCBmb2N1c1RyYXBFbGVtZW50ID0gdXNlRm9jdXNMb2NrKGlzSW5zaWRlVHJlZUl0ZW0pO1xyXG4gICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50cyA9ICdidXR0b24sIFtyb2xlPVwiYnV0dG9uXCJdLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgYVtocmVmXSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJztcclxuICAgIGNvbnN0IGdldEludGVyYWN0aXZlRWxlbWVudHMgPSBSZWFjdC51c2VDYWxsYmFjaygoY29udGFpbmVyLCBzZWxlY3RvcikgPT4ge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSkuZmlsdGVyKGVsID0+ICFlbC5oYXNBdHRyaWJ1dGUoJ3RhYmluZGV4JykgfHxcclxuICAgICAgICAgICAgKGVsLnRhYkluZGV4ICE9PSB1bmRlZmluZWQgJiYgZWwudGFiSW5kZXggPj0gMCkpO1xyXG4gICAgfSwgW10pO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGFsbG93cyBmb3Iga2V5Ym9hcmQgbmF2aWdhdGlvbiB3aXRoaW4gdGhlIGxhYmVsIGFuZCBhZGRpdGlvbmFsIGNvbnRlbnQgb2YgYSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogWW91IGNhbiBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIHVzaW5nIHRoZSBgVGFiYCBrZXksIGFjdGl2YXRlIHRoZW0gd2l0aCBgRW50ZXJgIG9yIGBTcGFjZWAsXHJcbiAgICAgKiBhbmQgZXhpdCBvdXRzaWRlIGFuZCBmb2N1cyB0aGUgd2hvbGUgdHJlZSBpdGVtIHdpdGggYEVzY2FwZWAuXHJcbiAgICAgKiAqKi9cclxuICAgIGNvbnN0IGhhbmRsZUxhYmVsQW5kQWRkaXRpb25hbENvbnRlbnRLZXlEb3duID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBrZXksIHRhcmdldCwgY3VycmVudFRhcmdldCwgc2hpZnRLZXkgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gdGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNTcGFjZSA9IGtleSA9PT0gJyAnO1xyXG4gICAgICAgIGNvbnN0IGlzRXNjYXBlID0ga2V5ID09PSAnRXNjYXBlJztcclxuICAgICAgICBjb25zdCBpc1RhYiA9IGtleSA9PT0gJ1RhYic7XHJcbiAgICAgICAgY29uc3QgaXNBY3RpdmF0aW9uS2V5ID0gaXNFbnRlciB8fCBpc1NwYWNlO1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBgVGFiYCwgd2UgbmF2aWdhdGUgdGhyb3VnaCBpbnRlcmFjdGl2ZSBlbGVtZW50cyBpbnNpZGUgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmIChpc1RhYiAmJiBpc0luc2lkZVRyZWVJdGVtKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudHNMaXN0ID0gZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyhjdXJyZW50VGFyZ2V0LCBpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAgICAgLy8gRmlsdGVyIGxpc3Qgb2YgaW50ZXJhY3RpdmUgZWxlbWVudHMgd2hpY2ggYXJlIG9ubHkgaW5jbHVkZWQgZm9yIGN1cnJlbnQgdHJlZSBpdGVtXHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMgPSBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdC5maWx0ZXIoZWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2xvc2VzdFRyZWVJdGVtID0gZWwuY2xvc2VzdCgnW3JvbGU9XCJ0cmVlaXRlbVwiXScpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsb3Nlc3RUcmVlSXRlbSA9PT0gdHJlZUl0ZW1SZWYuY3VycmVudDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMuaW5kZXhPZihjdXJyZW50RWxlbWVudCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHNoaWZ0S2V5ID8gLTEgOiAxO1xyXG4gICAgICAgICAgICBjb25zdCB0b3RhbCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMubGVuZ3RoO1xyXG4gICAgICAgICAgICBjb25zdCBuZXh0SW5kZXggPSAoY3VycmVudEluZGV4ICsgZGlyZWN0aW9uICsgdG90YWwpICUgdG90YWw7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50c1tuZXh0SW5kZXhdO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudFRvRm9jdXMpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZWxlbWVudFRvRm9jdXMuZm9jdXMoKSwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBQcmVzc2luZyBgRW50ZXJgIG9yIGBTcGFjZWAgb24gYW4gaW50ZXJhY3RpdmUgZWxlbWVudCB3aWxsIHRyaWdnZXIgaXRzIGNsaWNrIGV2ZW50XHJcbiAgICAgICAgaWYgKGlzQWN0aXZhdGlvbktleSAmJiBpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgaW50ZXJhY3RpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE1vdmVzIGZvY3VzIG91dHNpZGUgdGhlIHRyZWUgaXRlbSBhbmQgZm9jdXNlcyB0aGUgdHJlZSBpdGVtIGl0c2VsZiB3aGVuIGBFc2NhcGVgIGlzIHByZXNzZWRcclxuICAgICAgICBpZiAoaXNFc2NhcGUpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHNldElzSW5zaWRlVHJlZUl0ZW0oZmFsc2UpO1xyXG4gICAgICAgICAgICBjb25zdCB0cmVlSXRlbU5vZGUgPSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICBpZiAodHJlZUl0ZW1Ob2RlKSB7XHJcbiAgICAgICAgICAgICAgICB0cmVlSXRlbU5vZGUuZm9jdXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzSW5zaWRlVHJlZUl0ZW1dKTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gUmVhY3QudXNlTWVtbygoKSA9PiBub2RlVHlwZSA9PT0gVHJlZU5vZGVUeXBlLmJyYW5jaCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEZvbGRlckljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KEFydGljbGVJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSksIFtub2RlVHlwZV0pO1xyXG4gICAgLy8gTWVtb2lzZSB0aGUgbGFiZWwgSlNYIHNvIHRoZSBgY2hlY2tib3hQcm9wc2AgbWVtbyBiZWxvdyBhY3R1YWxseSBoYXNcclxuICAgIC8vIGEgc3RhYmxlIGBsYWJlbFRleHRgIHJlZmVyZW5jZSBiZXR3ZWVuIHJlbmRlcnMuIFByZXZpb3VzbHkgdGhpc1xyXG4gICAgLy8gZWxlbWVudCB3YXMgcmUtY3JlYXRlZCBvbiBldmVyeSByZW5kZXIsIHdoaWNoIGZvcmNlZFxyXG4gICAgLy8gYGNoZWNrYm94UHJvcHNgIHRvIGFsc28gYmUgcmUtY3JlYXRlZCBhbmQgYW55IGZ1dHVyZSBSZWFjdC5tZW1vIG9uXHJcbiAgICAvLyBDaGVja2JveC9JbmRldGVybWluYXRlQ2hlY2tib3ggd291bGQgYWx3YXlzIGJhaWwgb3V0LlxyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gUmVhY3QudXNlTWVtbygoKSA9PiAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRMYWJlbFdyYXBwZXIsIHsgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgc3R5bGU6IGxhYmVsU3R5bGUsIGlkOiBgJHtpdGVtSWR9LWxhYmVsYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1sYWJlbGAgfSxcclxuICAgICAgICBoYXNJY29ucyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChJY29uV3JhcHBlciwgeyBpc0ludmVyc2U6IGlzSW52ZXJzZSwgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWljb25gIH0sIGljb24gfHwgZGVmYXVsdEljb24pKSxcclxuICAgICAgICBsYWJlbCkpLCBbXHJcbiAgICAgICAgdGhlbWUsXHJcbiAgICAgICAgaXNEaXNhYmxlZCxcclxuICAgICAgICBpc0ludmVyc2UsXHJcbiAgICAgICAgbGFiZWxTdHlsZSxcclxuICAgICAgICBpdGVtSWQsXHJcbiAgICAgICAgdGVzdElkLFxyXG4gICAgICAgIGhhc0ljb25zLFxyXG4gICAgICAgIGljb24sXHJcbiAgICAgICAgZGVmYXVsdEljb24sXHJcbiAgICAgICAgbGFiZWwsXHJcbiAgICBdKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBSZWFjdC51c2VNZW1vKCgpID0+IGFkZGl0aW9uYWxDb250ZW50ID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQWRkaXRpb25hbENvbnRlbnRXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaWQ6IGAke2l0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgIH0sIGFkZGl0aW9uYWxDb250ZW50KSkgOiBudWxsLCBbYWRkaXRpb25hbENvbnRlbnQsIHRoZW1lLCBpdGVtSWQsIHRlc3RJZF0pO1xyXG4gICAgLy8gU3RhYmxlIHBlci1jaGlsZCBoaWVyYXJjaHkgdmFsdWVzLiBUaGUgcmVmZXJlbmNlIG11c3Qgbm90IGNoYW5nZSBvblxyXG4gICAgLy8gcmUtcmVuZGVycyB0cmlnZ2VyZWQgYnkgVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0LCBvdGhlcndpc2UgZXZlcnlcclxuICAgIC8vIG5lc3RlZCBUcmVlSXRlbSByZS1yZW5kZXJzIHRocm91Z2ggdGhlIGNvbnRleHQgYW5kIFJlYWN0Lm1lbW8gaXNcclxuICAgIC8vIGRlZmVhdGVkLlxyXG4gICAgY29uc3QgY2hpbGRIaWVyYXJjaGllcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvdW50ID0gUmVhY3QuQ2hpbGRyZW4uY291bnQoY2hpbGRyZW4pO1xyXG4gICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShjb3VudCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGFycltpXSA9IHtcclxuICAgICAgICAgICAgICAgIGRlcHRoOiBpdGVtRGVwdGggKyAxLFxyXG4gICAgICAgICAgICAgICAgcGFyZW50RGVwdGg6IGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgIGlzVG9wTGV2ZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhcnI7XHJcbiAgICB9LCBbY2hpbGRyZW4sIGl0ZW1EZXB0aF0pO1xyXG4gICAgLy8gTWVtb2l6ZSBpbmxpbmUgc3R5bGUgb2JqZWN0cyB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IHJlLXJlbmRlcnNcclxuICAgIGNvbnN0IGNoZWNrYm94SW5wdXRTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHsgbWFyZ2luUmlnaHQ6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzIH0pLCBbdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDNdKTtcclxuICAgIGNvbnN0IGNoZWNrYm94TGFiZWxTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcclxuICAgICAgICBwYWRkaW5nOiAwLFxyXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICB9KSwgW10pO1xyXG4gICAgLy8gUHJvcHMgc2hhcmVkIGJ5IENoZWNrYm94IGFuZCBJbmRldGVybWluYXRlQ2hlY2tib3hcclxuICAgIGNvbnN0IGNoZWNrYm94UHJvcHMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XHJcbiAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaGlkZUZvY3VzOiB0cnVlLFxyXG4gICAgICAgIGlkOiBgJHtpdGVtSWR9LWNoZWNrYm94YCxcclxuICAgICAgICBpbnB1dFN0eWxlOiBjaGVja2JveElucHV0U3R5bGUsXHJcbiAgICAgICAgbGFiZWxTdHlsZTogY2hlY2tib3hMYWJlbFN0eWxlLFxyXG4gICAgICAgIGxhYmVsVGV4dDogbGFiZWxUZXh0LFxyXG4gICAgICAgIG9uQ2hhbmdlOiBjaGVja2JveENoYW5nZUhhbmRsZXIsXHJcbiAgICAgICAgdGFiSW5kZXg6IC0xLFxyXG4gICAgICAgIHRlc3RJZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICB9KSwgW1xyXG4gICAgICAgIGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaXRlbUlkLFxyXG4gICAgICAgIGNoZWNrYm94SW5wdXRTdHlsZSxcclxuICAgICAgICBjaGVja2JveExhYmVsU3R5bGUsXHJcbiAgICAgICAgbGFiZWxUZXh0LFxyXG4gICAgICAgIGNoZWNrYm94Q2hhbmdlSGFuZGxlcixcclxuICAgIF0pO1xyXG4gICAgY29uc3Qgb25FeHBhbmRlZENsaWNrZWQgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGhhbmRsZUV4cGFuZGVkQ2hhbmdlKGV2ZW50LCBpdGVtSWQpO1xyXG4gICAgfSwgW2hhbmRsZUV4cGFuZGVkQ2hhbmdlLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IGhhbmRsZUV4cGFuZENsaWNrID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKCFpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICBvbkV4cGFuZGVkQ2xpY2tlZChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIG9uRXhwYW5kZWRDbGlja2VkXSk7XHJcbiAgICBjb25zdCBoYW5kbGVPbkNsaWNrID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSBldmVudC50YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdCgnYnV0dG9uLCBbcm9sZT1cImJ1dHRvblwiXSwgYVtocmVmXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIFtyb2xlPVwibWVudWl0ZW1cIl0nKTtcclxuICAgICAgICAvLyBQcmV2ZW50aW5nIHNlbGVjdGluZyB0aGUgaXRlbSB3aGVuIGNsaWNraW5nIG9uIGludGVyYWN0aXZlIGVsZW1lbnRzIHdoZW4gYHNlbGVjdGFibGVgIGlzIGBzaW5nbGVgXHJcbiAgICAgICAgaWYgKGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBJZiBzZWxlY3RQYXJlbnRzIGlzIGZhbHNlIGFuZCB0aGlzIGlzIGEgcGFyZW50IGl0ZW0sIGhhbmRsZSBleHBhbmQvY29sbGFwc2UgaW5zdGVhZCBvZiBzZWxlY3Rpb25cclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZSAmJlxyXG4gICAgICAgICAgICAhc2VsZWN0UGFyZW50cyAmJlxyXG4gICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIG9uRXhwYW5kZWRDbGlja2VkKGV2ZW50KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZSkge1xyXG4gICAgICAgICAgICBoYW5kbGVDbGljayhldmVudCwgaXRlbUlkKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgdGFiSW5kZXggPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcclxuICAgICAgICBpZiAoaXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaXRlbVRvRm9jdXMgPT09IGl0ZW1JZCA/IDAgOiAtMTtcclxuICAgIH0sIFtpc0Rpc2FibGVkLCBpdGVtVG9Gb2N1cywgaXRlbUlkXSk7XHJcbiAgICBjb25zdCBzaG91bGRTaG93Q2hlY2tib3ggPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUubXVsdGkgJiZcclxuICAgICAgICAoaXNUb3BMZXZlbFNlbGVjdGFibGUgIT09IGZhbHNlIHx8ICF0b3BMZXZlbCk7XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIHdpdGhpbiB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIFByZXNzaW5nIGBDdHJsICsgRW50ZXJgIG9yIGBDb21tYW5kICsgRW50ZXJgIGZvY3VzZXMgdGhlIGZpcnN0IGludGVyYWN0aXZlIGVsZW1lbnQgd2l0aGluIHRoZSB0cmVlIGl0ZW1cclxuICAgICAqIGFuZCBsb2NrcyBmb2N1cyBpbnNpZGUgdGhlIHRyZWUgaXRlbS5cclxuICAgICAqXHJcbiAgICAgKiBJZiB0aGUgZm9jdXMgaXMgd2l0aGluIHRoZSBsYWJlbCBvciBhZGRpdGlvbmFsIGNvbnRlbnQsIGl0IGhhbmRsZXMga2V5IGV2ZW50cyBmb3IgaW50ZXJhY3Rpb24gZWxlbWVudHMuXHJcbiAgICAgKlxyXG4gICAgICogSXQgYWxzbyBoYW5kbGVzIHRoZSBvdGhlciBrZXlzIHRvIHRyaWdnZXIgdGhlIGNsaWNrIGV2ZW50IG9uIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKiAqKi9cclxuICAgIGNvbnN0IG9uS2V5RG93bkhhbmRsZXIgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBjb25zdCB7IGtleSwgdGFyZ2V0LCBjdXJyZW50VGFyZ2V0IH0gPSBldmVudDtcclxuICAgICAgICBjb25zdCBpc0VudGVyID0ga2V5ID09PSAnRW50ZXInO1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybE9yQ29tbWFuZCA9IGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleTtcclxuICAgICAgICBjb25zdCBpc0N0cmxFbnRlciA9IGlzQ3RybE9yQ29tbWFuZCAmJiBpc0VudGVyO1xyXG4gICAgICAgIC8vIElmIHRoZSBrZXkgaXMgQ3RybCArIEVudGVyIG9yIENvbW1hbmQgKyBFbnRlciwgZm9jdXMgdGhlIGZpcnN0IGludGVyYWN0aXZlIGVsZW1lbnRcclxuICAgICAgICAvLyBhbmQgbG9jayBmb2N1cyBpbnNpZGUgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmIChpc0N0cmxFbnRlciAmJiB0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgc2V0SXNJbnNpZGVUcmVlSXRlbSh0cnVlKTtcclxuICAgICAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50c0xpc3QgPSBnZXRJbnRlcmFjdGl2ZUVsZW1lbnRzKGN1cnJlbnRUYXJnZXQsIGludGVyYWN0aXZlRWxlbWVudHMpO1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50VG9Gb2N1cyA9IGludGVyYWN0aXZlRWxlbWVudHNMaXN0WzBdO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudFRvRm9jdXMpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRUb0ZvY3VzLmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICB9LCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEVuc3VyZSB2YWxpZCBDU1Mgc2VsZWN0b3JzIGJ5IGVzY2FwaW5nIHNwZWNpYWwgY2hhcmFjdGVycyAoZS5nLiwgcGVyaW9kcyBpbiBpdGVtSWQpXHJcbiAgICAgICAgY29uc3Qgc2FmZUl0ZW1JZCA9IENTUy5lc2NhcGUoaXRlbUlkKTtcclxuICAgICAgICBjb25zdCBpc1dpdGhpbkxhYmVsT3JBZGRpdGlvbmFsQ29udGVudCA9IHRhcmdldC5jbG9zZXN0KGAjJHtzYWZlSXRlbUlkfS1sYWJlbCwgIyR7c2FmZUl0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCk7XHJcbiAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaGFuZGxlIGtleSBldmVudHMgZm9yIHRob3NlIGFyZWFzXHJcbiAgICAgICAgaWYgKGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50KSB7XHJcbiAgICAgICAgICAgIGhhbmRsZUxhYmVsQW5kQWRkaXRpb25hbENvbnRlbnRLZXlEb3duKGV2ZW50KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHRoZSB0cmVlIGl0ZW0gaXRzZWxmLCBoYW5kbGUga2V5IGRvd24gZm9yIHRoZSB0cmVlIGl0ZW1cclxuICAgICAgICBpZiAodGFyZ2V0ID09PSBjdXJyZW50VGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIGhhbmRsZUtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW1xyXG4gICAgICAgIGdldEludGVyYWN0aXZlRWxlbWVudHMsXHJcbiAgICAgICAgaW50ZXJhY3RpdmVFbGVtZW50cyxcclxuICAgICAgICBpdGVtSWQsXHJcbiAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24sXHJcbiAgICAgICAgaGFuZGxlS2V5RG93bixcclxuICAgIF0pO1xyXG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyZWVJdGVtQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogY29udGV4dFZhbHVlIH0sXHJcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IHN0eWxlOiB0cmVlSXRlbVN0eWxlcyB9LFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZFRyZWVJdGVtLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IFwiYXJpYS1leHBhbmRlZFwiOiBoYXNPd25UcmVlSXRlbXMgPyBleHBhbmRlZCA6IG51bGwsIFwiYXJpYS1zZWxlY3RlZFwiOiBzZWxlY3RlZEl0ZW0sIFwiYXJpYS1jaGVja2VkXCI6IHNob3VsZFNob3dDaGVja2JveCA/IGFyaWFDaGVja2VkVmFsdWUgOiBudWxsLCBcImRhdGEtdGVzdGlkXCI6IHRlc3RJZCwgZGVwdGg6IGl0ZW1EZXB0aCwgaGFzT3duVHJlZUl0ZW1zOiBoYXNPd25UcmVlSXRlbXMsIGlkOiBpdGVtSWQsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBpc1ZpcnR1YWxpemVkOiBoaWVyYXJjaHlDb250ZXh0LmlzVmlydHVhbGl6ZWQsIG5vZGVUeXBlOiBub2RlVHlwZSwgcm9sZTogXCJ0cmVlaXRlbVwiLCBzZWxlY3RhYmxlVHlwZTogc2VsZWN0YWJsZSwgc2VsZWN0ZWQ6IHNlbGVjdGVkSXRlbSwgdGhlbWU6IHRoZW1lLCB0YWJJbmRleDogdGFiSW5kZXgsIG9uS2V5RG93bjogb25LZXlEb3duSGFuZGxlciwgcmVmOiB0cmVlSXRlbVJlZiwgaG92ZXJDb2xvcjogaG92ZXJDb2xvciB9KSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkSXRlbVdyYXBwZXIsIHsgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1pdGVtd3JhcHBlcmAsIGRlcHRoOiBpdGVtRGVwdGgsIGhhc0FkZGl0aW9uYWxDb250ZW50OiAhIWFkZGl0aW9uYWxDb250ZW50LCBoYXNDdXN0b21JY29uU2l6ZTogISFleHBhbmRJY29uU3R5bGVzPy5zaXplLCBpZDogYCR7aXRlbUlkfS1pdGVtd3JhcHBlcmAsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBub2RlVHlwZTogbm9kZVR5cGUsIHNlbGVjdGFibGU6IHNlbGVjdGFibGUsIHN0eWxlOiBzdHlsZSwgdGhlbWU6IHRoZW1lLCByZWY6IG1lcmdlUmVmcyhyZWYsIGZvY3VzVHJhcEVsZW1lbnQpLCBvbkNsaWNrOiBoYW5kbGVPbkNsaWNrIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgaGFzT3duVHJlZUl0ZW1zICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZEV4cGFuZFdyYXBwZXIsIHsgc2l6ZTogZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSwgY29sb3I6IGV4cGFuZEljb25TdHlsZXM/LmNvbG9yLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWV4cGFuZGAsIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBvbkNsaWNrOiBoYW5kbGVFeHBhbmRDbGljaywgdGhlbWU6IHRoZW1lIH0sIGV4cGFuZGVkID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRXhwYW5kTW9yZUljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZXZyb25SaWdodEljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplIH0pKSkpLFxyXG4gICAgICAgICAgICAgICAgICAgIHNob3VsZFNob3dDaGVja2JveCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlZENoZWNrYm94V3JhcHBlciwgeyBoYXNBZGRpdGlvbmFsQ29udGVudDogISFhZGRpdGlvbmFsQ29udGVudCwgdGhlbWU6IHRoZW1lIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc093blRyZWVJdGVtcyA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEluZGV0ZXJtaW5hdGVDaGVja2JveCwgT2JqZWN0LmFzc2lnbih7fSwgY2hlY2tib3hQcm9wcywgeyBzdGF0dXM6IGNoZWNrZWRTdGF0dXMgfSkpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZWNrYm94LCBPYmplY3QuYXNzaWduKHt9LCBjaGVja2JveFByb3BzLCB7IGNoZWNrZWQ6IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4oY2hlY2tlZFN0YXR1cykgfSkpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsVGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUl0ZW1BZGRpdGlvbmFsQ29udGVudCkpKSxcclxuICAgICAgICAgICAgICAgIGhhc0d1aWRlTGluZXMgJiZcclxuICAgICAgICAgICAgICAgICAgICAoaGllcmFyY2h5Q29udGV4dC5pc1ZpcnR1YWxpemVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbURlcHRoID4gMCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkuZnJvbSh7IGxlbmd0aDogaXRlbURlcHRoIH0sIChfLCBkKSA9PiAoUmVhY3QuY3JlYXRlRWxlbWVudChWaXJ0dWFsaXplZEd1aWRlTGluZSwgeyBrZXk6IGBndWlkZWxpbmUtJHtkfWAsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tdmlydHVhbGl6ZWQtZ3VpZGVsaW5lLSR7ZH1gLCB0aGVtZTogdGhlbWUsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBzdHlsZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNldElubGluZVN0YXJ0OiBgY2FsYygke2NhbGN1bGF0ZU9mZnNldChUcmVlTm9kZVR5cGUuYnJhbmNoLCBkLCBmYWxzZSwgZmFsc2UsIHRydWUpfSArICR7ZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7ZXhwYW5kSWNvblN0eWxlcy5zaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fSAvIDIgLSAwLjVweClgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfSkpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGhhc093blRyZWVJdGVtcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWQgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoR3VpZGVMaW5lLCB7IFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tZ3VpZGVsaW5lYCwgdGhlbWU6IHRoZW1lLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgZ3VpZGVMaW5lTGVmdDogYGNhbGMoJHtjYWxjdWxhdGVPZmZzZXQoVHJlZU5vZGVUeXBlLmJyYW5jaCwgaXRlbURlcHRoLCBmYWxzZSwgZmFsc2UsIGZhbHNlKX0gKyAke2V4cGFuZEljb25TdHlsZXM/LnNpemUgIT09IHVuZGVmaW5lZCA/IGAke2V4cGFuZEljb25TdHlsZXMuc2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn0gLyAyIC0gMC41cHgpIGAgfSkpKSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LkNoaWxkcmVuLm1hcChjaGlsZHJlbiwgKGNoaWxkLCBjaGlsZEluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkPy50eXBlICE9PSBUcmVlSXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFVzZSB0aGUgc3RhYmxlLCBwcmUtbWVtb2lzZWQgdmFsdWUgKHNlZSBjaGlsZEhpZXJhcmNoaWVzIGFib3ZlKS5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXN0ZWRIaWVyYXJjaHlWYWx1ZSA9IGNoaWxkSGllcmFyY2hpZXNbY2hpbGRJbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRyYW5zaXRpb24sIHsgaXNPcGVuOiBleHBhbmRlZCwgdW5tb3VudE9uRXhpdDogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwidWxcIiwgeyByb2xlOiBcImdyb3VwXCIgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0LlByb3ZpZGVyLCB7IGtleTogY2hpbGQucHJvcHMuaXRlbUlkLCB2YWx1ZTogbmVzdGVkSGllcmFyY2h5VmFsdWUgfSwgY2hpbGQpKSkpO1xyXG4gICAgICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICBpc01hY09TICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFZpc3VhbGx5SGlkZGVuLCBudWxsLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChBbm5vdW5jZSwgbnVsbCwgZXhwYW5kZWRcclxuICAgICAgICAgICAgICAgICAgICA/IGkxOG4uZXhwYW5zaW9uU3RhdGUuZXhwYW5kZWRcclxuICAgICAgICAgICAgICAgICAgICA6IGkxOG4uZXhwYW5zaW9uU3RhdGUuY29sbGFwc2VkKSkpKSkpO1xyXG59KTtcclxuLyoqXHJcbiAqIEN1c3RvbSBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciBSZWFjdC5tZW1vXHJcbiAqIE9ubHkgcmUtcmVuZGVyIFRyZWVJdGVtIHdoZW4gcmVsZXZhbnQgcHJvcHMgY2hhbmdlXHJcbiAqL1xyXG5mdW5jdGlvbiBhcmVQcm9wc0VxdWFsKHByZXZQcm9wcywgbmV4dFByb3BzKSB7XHJcbiAgICAvLyBDaGVjayBpZiBpdGVtSWQgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5pdGVtSWQgIT09IG5leHRQcm9wcy5pdGVtSWQpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBsYWJlbCBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmxhYmVsICE9PSBuZXh0UHJvcHMubGFiZWwpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBkaXNhYmxlZCBzdGF0ZSBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmlzRGlzYWJsZWQgIT09IG5leHRQcm9wcy5pc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgaWNvbiBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLmljb24gIT09IG5leHRQcm9wcy5pY29uKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgYWRkaXRpb25hbCBjb250ZW50IGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuYWRkaXRpb25hbENvbnRlbnQgIT09IG5leHRQcm9wcy5hZGRpdGlvbmFsQ29udGVudCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGhvdmVyIGNvbG9yIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaG92ZXJDb2xvciAhPT0gbmV4dFByb3BzLmhvdmVyQ29sb3IpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBjaGlsZHJlbiBjaGFuZ2VkIChmb3IgbmVzdGVkIHRyZWUgaXRlbXMpXHJcbiAgICAvLyBVc2luZyB0eXBlIGFzc2VydGlvbiBzaW5jZSBjaGlsZHJlbiBjb21lcyBmcm9tIFJlYWN0LkhUTUxBdHRyaWJ1dGVzXHJcbiAgICBpZiAocHJldlByb3BzLmNoaWxkcmVuICE9PSBuZXh0UHJvcHMuY2hpbGRyZW4pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBzdHlsZXMgY2hhbmdlZFxyXG4gICAgLy8gVXNpbmcgdHlwZSBhc3NlcnRpb24gc2luY2Ugc3R5bGUgY29tZXMgZnJvbSBSZWFjdC5IVE1MQXR0cmlidXRlc1xyXG4gICAgaWYgKHByZXZQcm9wcy5zdHlsZSAhPT0gbmV4dFByb3BzLnN0eWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZQcm9wcy5sYWJlbFN0eWxlICE9PSBuZXh0UHJvcHMubGFiZWxTdHlsZSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChwcmV2UHJvcHMudHJlZUl0ZW1TdHlsZXMgIT09IG5leHRQcm9wcy50cmVlSXRlbVN0eWxlcykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIEFsbCByZWxldmFudCBwcm9wcyBhcmUgZXF1YWwsIHNraXAgcmUtcmVuZGVyXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxyXG4vKipcclxuICogTWVtb2l6ZWQgVHJlZUl0ZW0gY29tcG9uZW50XHJcbiAqIE9ubHkgcmUtcmVuZGVycyB3aGVuIHJlbGV2YW50IHByb3BzIGNoYW5nZSwgaW1wcm92aW5nIHBlcmZvcm1hbmNlIGZvciBsYXJnZSB0cmVlc1xyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFRyZWVJdGVtID0gUmVhY3QubWVtbyhUcmVlSXRlbUNvbXBvbmVudCwgYXJlUHJvcHNFcXVhbCk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRyZWVJdGVtLmpzLm1hcCJdfQ== */"));
|
|
29464
|
+
}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRyZWVJdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvSzRDIiwiZmlsZSI6IlRyZWVJdGVtLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCB7IHRyYW5zcGFyZW50aXplIH0gZnJvbSAncG9saXNoZWQnO1xyXG5pbXBvcnQgeyBBcnRpY2xlSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgRXhwYW5kTW9yZUljb24sIEZvbGRlckljb24sIH0gZnJvbSAncmVhY3QtbWFnbWEtaWNvbnMnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbnRleHQgfSBmcm9tICcuL1RyZWVJdGVtQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVJdGVtSGllcmFyY2h5Q29udGV4dCB9IGZyb20gJy4vVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdDb25maWdDb250ZXh0IH0gZnJvbSAnLi9UcmVlVmlld0NvbmZpZ0NvbnRleHQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0V4cGFuc2lvbkNvbnRleHQgfSBmcm9tICcuL1RyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCc7XHJcbmltcG9ydCB7IFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCB9IGZyb20gJy4vVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0JztcclxuaW1wb3J0IHsgVHJlZVZpZXdTZWxlY3RhYmxlIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGNoZWNrZWRTdGF0dXNUb0Jvb2xlYW4sIHVzZVRyZWVJdGVtLCB9IGZyb20gJy4vdXNlVHJlZUl0ZW0nO1xyXG5pbXBvcnQgeyBjYWxjdWxhdGVPZmZzZXQsIGdldFRyZWVJdGVtTGFiZWxDb2xvciwgZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yLCBUcmVlTm9kZVR5cGUsIH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IEkxOG5Db250ZXh0IH0gZnJvbSAnLi4vLi4nO1xyXG5pbXBvcnQgdXNlRGV2aWNlRGV0ZWN0IGZyb20gJy4uLy4uL2hvb2tzL3VzZURldmljZURldGVjdCc7XHJcbmltcG9ydCB7IHVzZUZvY3VzTG9jayB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZUZvY3VzTG9jayc7XHJcbmltcG9ydCB7IHVzZUlzSW52ZXJzZSB9IGZyb20gJy4uLy4uL2ludmVyc2UnO1xyXG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgfSBmcm9tICcuLi8uLi90aGVtZS9UaGVtZUNvbnRleHQnO1xyXG5pbXBvcnQgeyBtZXJnZVJlZnMgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcbmltcG9ydCB7IEFubm91bmNlIH0gZnJvbSAnLi4vQW5ub3VuY2UnO1xyXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gJy4uL0NoZWNrYm94JztcclxuaW1wb3J0IHsgSW5kZXRlcm1pbmF0ZUNoZWNrYm94LCBJbmRldGVybWluYXRlQ2hlY2tib3hTdGF0dXMsIH0gZnJvbSAnLi4vSW5kZXRlcm1pbmF0ZUNoZWNrYm94JztcclxuaW1wb3J0IHsgVHJhbnNpdGlvbiB9IGZyb20gJy4uL1RyYW5zaXRpb24nO1xyXG5pbXBvcnQgeyBWaXN1YWxseUhpZGRlbiB9IGZyb20gJy4uL1Zpc3VhbGx5SGlkZGVuJztcclxuY29uc3QgU3R5bGVkVHJlZUl0ZW0gPSBzdHlsZWQubGkgYFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDBcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWw3MDB9O1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIGN1cnNvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbVdyYXBwZXJDdXJzb3IocHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMuc2VsZWN0YWJsZVR5cGUsIHByb3BzLm5vZGVUeXBlKX07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcblxuICBwYWRkaW5nLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCBmYWxzZSwgZmFsc2UsIHByb3BzLmlzVmlydHVhbGl6ZWQpfTtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuXG4gICAgJiA+ICo6Zmlyc3QtY2hpbGQge1xuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkXG4gICAgICAgICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gcHJvcHMudGhlbWUuY29sb3JzLmZvY3VzSW52ZXJzZVxyXG4gICAgOiBwcm9wcy50aGVtZS5jb2xvcnMuZm9jdXN9O1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgPiBkaXY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMClcclxuICAgIDogcHJvcHMuc2VsZWN0ZWQgJiZcclxuICAgICAgICB0cmFuc3BhcmVudGl6ZSgwLjkyLCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDkwMCl9O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAke3Byb3BzID0+IGNhbGN1bGF0ZU9mZnNldChwcm9wcy5ub2RlVHlwZSwgcHJvcHMuZGVwdGgsIHRydWUsIGZhbHNlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgbWFyZ2luLWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBjYWxjdWxhdGVPZmZzZXQocHJvcHMubm9kZVR5cGUsIHByb3BzLmRlcHRoLCB0cnVlLCB0cnVlLCBwcm9wcy5pc1ZpcnR1YWxpemVkKX07XG4gICAgcGFkZGluZy1ibG9jay1lbmQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctYmxvY2stc3RhcnQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuICAgIHBhZGRpbmctcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDJ9O1xuXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5zZWxlY3RlZCAmJlxyXG4gICAgY3NzIGBcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzLmlzSW52ZXJzZVxyXG4gICAgICAgID8gcHJvcHMudGhlbWUuY29sb3JzLnRlcnRpYXJ5NTAwXHJcbiAgICAgICAgOiBwcm9wcy50aGVtZS5jb2xvcnMucHJpbWFyeTUwMH07XG4gICAgICAgICAgYmxvY2stc2l6ZTogMTAwJTtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICBpbmxpbmUtc2l6ZTogJHtwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwMn07XG4gICAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ6IDA7XG4gICAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAwO1xuICAgICAgICB9XG4gICAgICBgfVxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBnZXRIb3ZlckJhY2tncm91bmQoe1xyXG4gICAgaXNEaXNhYmxlZDogcHJvcHMuaXNEaXNhYmxlZCxcclxuICAgIGhvdmVyQ29sb3I6IHByb3BzLmhvdmVyQ29sb3IsXHJcbiAgICBpc0ludmVyc2U6IHByb3BzLmlzSW52ZXJzZSxcclxuICAgIHRoZW1lOiBwcm9wcy50aGVtZSxcclxufSl9O1xuICAgIH1cbiAgfVxuYDtcclxuZnVuY3Rpb24gZ2V0SG92ZXJCYWNrZ3JvdW5kKHsgaXNEaXNhYmxlZCwgaG92ZXJDb2xvciwgaXNJbnZlcnNlLCB0aGVtZSB9KSB7XHJcbiAgICBpZiAoaXNEaXNhYmxlZClcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgaWYgKGhvdmVyQ29sb3IpXHJcbiAgICAgICAgcmV0dXJuIGhvdmVyQ29sb3I7XHJcbiAgICBjb25zdCB0cmFuc3BhcmVuY3kgPSBpc0ludmVyc2UgPyAwLjggOiAwLjk1O1xyXG4gICAgcmV0dXJuIHRyYW5zcGFyZW50aXplKHRyYW5zcGFyZW5jeSwgdGhlbWUuY29sb3JzLm5ldXRyYWw5MDApO1xyXG59XHJcbmNvbnN0IEljb25XcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBjb2xvcjogJHtwcm9wcyA9PiBnZXRUcmVlSXRlbUxhYmVsQ29sb3IocHJvcHMuaXNJbnZlcnNlLCBwcm9wcy5pc0Rpc2FibGVkLCBwcm9wcy50aGVtZSl9O1xuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICBtYXJnaW4tbGVmdDogMDtcblxuICBzdmcge1xuICAgIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pY29uU2l6ZXMubWVkaXVtfXB4O1xuICAgIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmljb25TaXplcy5tZWRpdW19cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgfVxuYDtcclxuY29uc3QgU3R5bGVkTGFiZWxXcmFwcGVyID0gc3R5bGVkLnNwYW4gYFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1MYWJlbENvbG9yKHByb3BzLmlzSW52ZXJzZSwgcHJvcHMuaXNEaXNhYmxlZCwgcHJvcHMudGhlbWUpfTtcbiAgd2lkdGg6IDEwMCU7XG5gO1xyXG5jb25zdCBTdHlsZWRFeHBhbmRXcmFwcGVyID0gc3R5bGVkLmRpdiBgXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgbWFyZ2luLXJpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuY29sb3IgfHxcclxuICAgIGdldFRyZWVJdGVtTGFiZWxDb2xvcihwcm9wcy5pc0ludmVyc2UsIHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnRoZW1lKX07XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIHdpZHRoOiAkeyh7IHNpemUsIHRoZW1lIH0pID0+IHNpemUgIT09IHVuZGVmaW5lZCA/IGAke3NpemV9cHhgIDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDZ9O1xuICBoZWlnaHQ6ICR7KHsgc2l6ZSwgdGhlbWUgfSkgPT4gc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7c2l6ZX1weGAgOiB0aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNn07XG5gO1xyXG5jb25zdCBHdWlkZUxpbmUgPSBzdHlsZWQuZGl2IGBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDh9O1xuICBib3R0b206IDA7XG4gIGluc2V0LWlubGluZS1zdGFydDogJHtwcm9wcyA9PiBwcm9wcy5ndWlkZUxpbmVMZWZ0fTtcbiAgd2lkdGg6IDA7XG4gIGJvcmRlci1pbmxpbmUtc3RhcnQ6IDFweCBzb2xpZFxuICAgICR7cHJvcHMgPT4gcHJvcHMuaXNJbnZlcnNlXHJcbiAgICA/IHRyYW5zcGFyZW50aXplKDAuNywgcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwxMDApXHJcbiAgICA6IHByb3BzLnRoZW1lLmNvbG9ycy5uZXV0cmFsMzAwfTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHotaW5kZXg6IDE7XG5gO1xyXG5jb25zdCBWaXJ0dWFsaXplZEd1aWRlTGluZSA9IHN0eWxlZC5kaXYgYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogMDtcbiAgYm9yZGVyLWlubGluZS1zdGFydDogMXB4IHNvbGlkXG4gICAgJHtwcm9wcyA9PiBwcm9wcy5pc0ludmVyc2VcclxuICAgID8gdHJhbnNwYXJlbnRpemUoMC43LCBwcm9wcy50aGVtZS5jb2xvcnMubmV1dHJhbDEwMClcclxuICAgIDogcHJvcHMudGhlbWUuY29sb3JzLm5ldXRyYWwzMDB9O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMTtcbmA7XHJcbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYgYFxuICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiAke3Byb3BzID0+IChwcm9wcy5oYXNBZGRpdGlvbmFsQ29udGVudCA/ICdmbGV4JyA6ICdpbmxpbmUtZmxleCcpfTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gYGNhbGMoMTAwJSAtICR7cHJvcHMudGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDN9KWB9O1xuYDtcclxuY29uc3QgU3R5bGVkSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246ICR7cHJvcHMgPT4gKHByb3BzLmhhc0FkZGl0aW9uYWxDb250ZW50ID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAocHJvcHMuaGFzQ3VzdG9tSWNvblNpemUgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0Jyl9O1xuICBjdXJzb3I6ICR7cHJvcHMgPT4gZ2V0VHJlZUl0ZW1XcmFwcGVyQ3Vyc29yKHByb3BzLmlzRGlzYWJsZWQsIHByb3BzLnNlbGVjdGFibGUsIHByb3BzLm5vZGVUeXBlKX07XG5gO1xyXG5jb25zdCBBZGRpdGlvbmFsQ29udGVudFdyYXBwZXIgPSBzdHlsZWQuZGl2IGBcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zcGFjZVNjYWxlLnNwYWNpbmcwNX07XG5gO1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW1Db21wb25lbnQgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XHJcbiAgICBjb25zdCB7IGFkZGl0aW9uYWxDb250ZW50LCBjaGlsZHJlbiwgaG92ZXJDb2xvciwgaWNvbiwgaW5kZXg6IGluZGV4UHJvcCwgbGFiZWwsIGxhYmVsU3R5bGUsIHN0eWxlLCB0ZXN0SWQsIHRvcExldmVsOiB0b3BMZXZlbFByb3AsIHRyZWVJdGVtU3R5bGVzLCAuLi5yZXN0IH0gPSBwcm9wcztcclxuICAgIGNvbnN0IHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xyXG4gICAgY29uc3QgaXNJbnZlcnNlID0gdXNlSXNJbnZlcnNlKCk7XHJcbiAgICAvLyBSZWFkIGhpZXJhcmNoeSBpbmZvcm1hdGlvbiBmcm9tIGNvbnRleHQgKHJlZHVjZXMgY2xvbmVFbGVtZW50IG92ZXJoZWFkKVxyXG4gICAgY29uc3QgaGllcmFyY2h5Q29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoVHJlZUl0ZW1IaWVyYXJjaHlDb250ZXh0KTtcclxuICAgIC8vIFVzZSBjb250ZXh0IHZhbHVlcyBpZiBwcm9wcyBhcmUgbm90IHByb3ZpZGVkIChmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSlcclxuICAgIGNvbnN0IGluZGV4ID0gaW5kZXhQcm9wICE9PSB1bmRlZmluZWQgPyBpbmRleFByb3AgOiBoaWVyYXJjaHlDb250ZXh0LmluZGV4O1xyXG4gICAgY29uc3QgdG9wTGV2ZWwgPSB0b3BMZXZlbFByb3AgIT09IHVuZGVmaW5lZCA/IHRvcExldmVsUHJvcCA6IGhpZXJhcmNoeUNvbnRleHQuaXNUb3BMZXZlbDtcclxuICAgIC8vIENvbnN1bWUgc3BsaXQgY29udGV4dHMgZm9yIHJlZHVjZWQgcmUtcmVuZGVyIHNjb3BlXHJcbiAgICBjb25zdCB7IGl0ZW1Ub0ZvY3VzIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3U2VsZWN0aW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGhhbmRsZUV4cGFuZGVkQ2hhbmdlIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3RXhwYW5zaW9uQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGV4cGFuZEljb25TdHlsZXMsIGhhc0d1aWRlTGluZXMsIGhhc0ljb25zLCBpc1RvcExldmVsU2VsZWN0YWJsZSwgc2VsZWN0YWJsZSwgc2VsZWN0UGFyZW50cyA9IHRydWUsIH0gPSBSZWFjdC51c2VDb250ZXh0KFRyZWVWaWV3Q29uZmlnQ29udGV4dCk7XHJcbiAgICAvLyBQYXNzIHRoZSByZXNvbHZlZCB2YWx1ZXMgdG8gdXNlVHJlZUl0ZW1cclxuICAgIGNvbnN0IHByb3BzV2l0aEhpZXJhcmNoeSA9IHtcclxuICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICBpbmRleCxcclxuICAgICAgICB0b3BMZXZlbCxcclxuICAgICAgICBpdGVtRGVwdGg6IGhpZXJhcmNoeUNvbnRleHQuZGVwdGgsXHJcbiAgICAgICAgcGFyZW50RGVwdGg6IGhpZXJhcmNoeUNvbnRleHQucGFyZW50RGVwdGgsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyBjb250ZXh0VmFsdWUsIGhhbmRsZUNsaWNrLCBoYW5kbGVLZXlEb3duIH0gPSB1c2VUcmVlSXRlbShwcm9wc1dpdGhIaWVyYXJjaHksIGZvcndhcmRlZFJlZik7XHJcbiAgICBjb25zdCB7IGlzRGlzYWJsZWQgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IHsgaXNNYWNPUyB9ID0gdXNlRGV2aWNlRGV0ZWN0KCk7XHJcbiAgICBjb25zdCBpMThuID0gUmVhY3QudXNlQ29udGV4dChJMThuQ29udGV4dCk7XHJcbiAgICBjb25zdCB7IGNoZWNrYm94Q2hhbmdlSGFuZGxlciwgY2hlY2tlZFN0YXR1cywgZXhwYW5kZWQsIGhhc093blRyZWVJdGVtcywgaXRlbURlcHRoLCBpdGVtSWQsIHJlZiwgc2VsZWN0ZWRJdGVtcywgfSA9IGNvbnRleHRWYWx1ZTtcclxuICAgIGNvbnN0IG5vZGVUeXBlID0gaGFzT3duVHJlZUl0ZW1zID8gVHJlZU5vZGVUeXBlLmJyYW5jaCA6IFRyZWVOb2RlVHlwZS5sZWFmO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZVxyXG4gICAgICAgID8gc2VsZWN0ZWRJdGVtcz8uWzBdPy5pdGVtSWQgPT09IGl0ZW1JZFxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IGFyaWFDaGVja2VkVmFsdWUgPSBzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUubXVsdGlcclxuICAgICAgICA/IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5pbmRldGVybWluYXRlXHJcbiAgICAgICAgICAgID8gJ21peGVkJ1xyXG4gICAgICAgICAgICA6IGNoZWNrZWRTdGF0dXMgPT09IEluZGV0ZXJtaW5hdGVDaGVja2JveFN0YXR1cy5jaGVja2VkXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgW2lzSW5zaWRlVHJlZUl0ZW0sIHNldElzSW5zaWRlVHJlZUl0ZW1dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgdHJlZUl0ZW1SZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XHJcbiAgICBjb25zdCBmb2N1c1RyYXBFbGVtZW50ID0gdXNlRm9jdXNMb2NrKGlzSW5zaWRlVHJlZUl0ZW0pO1xyXG4gICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50cyA9ICdidXR0b24sIFtyb2xlPVwiYnV0dG9uXCJdLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgYVtocmVmXSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJztcclxuICAgIGNvbnN0IGdldEludGVyYWN0aXZlRWxlbWVudHMgPSBSZWFjdC51c2VDYWxsYmFjaygoY29udGFpbmVyLCBzZWxlY3RvcikgPT4ge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSkuZmlsdGVyKGVsID0+ICFlbC5oYXNBdHRyaWJ1dGUoJ3RhYmluZGV4JykgfHxcclxuICAgICAgICAgICAgKGVsLnRhYkluZGV4ICE9PSB1bmRlZmluZWQgJiYgZWwudGFiSW5kZXggPj0gMCkpO1xyXG4gICAgfSwgW10pO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGFsbG93cyBmb3Iga2V5Ym9hcmQgbmF2aWdhdGlvbiB3aXRoaW4gdGhlIGxhYmVsIGFuZCBhZGRpdGlvbmFsIGNvbnRlbnQgb2YgYSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogWW91IGNhbiBuYXZpZ2F0ZSB0aHJvdWdoIGludGVyYWN0aXZlIGVsZW1lbnRzIHVzaW5nIHRoZSBgVGFiYCBrZXksIGFjdGl2YXRlIHRoZW0gd2l0aCBgRW50ZXJgIG9yIGBTcGFjZWAsXHJcbiAgICAgKiBhbmQgZXhpdCBvdXRzaWRlIGFuZCBmb2N1cyB0aGUgd2hvbGUgdHJlZSBpdGVtIHdpdGggYEVzY2FwZWAuXHJcbiAgICAgKiAqKi9cclxuICAgIGNvbnN0IGhhbmRsZUxhYmVsQW5kQWRkaXRpb25hbENvbnRlbnRLZXlEb3duID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBrZXksIHRhcmdldCwgY3VycmVudFRhcmdldCwgc2hpZnRLZXkgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gdGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNTcGFjZSA9IGtleSA9PT0gJyAnO1xyXG4gICAgICAgIGNvbnN0IGlzRXNjYXBlID0ga2V5ID09PSAnRXNjYXBlJztcclxuICAgICAgICBjb25zdCBpc1RhYiA9IGtleSA9PT0gJ1RhYic7XHJcbiAgICAgICAgY29uc3QgaXNBY3RpdmF0aW9uS2V5ID0gaXNFbnRlciB8fCBpc1NwYWNlO1xyXG4gICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBgVGFiYCwgd2UgbmF2aWdhdGUgdGhyb3VnaCBpbnRlcmFjdGl2ZSBlbGVtZW50cyBpbnNpZGUgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmIChpc1RhYiAmJiBpc0luc2lkZVRyZWVJdGVtKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGludGVyYWN0aXZlRWxlbWVudHNMaXN0ID0gZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyhjdXJyZW50VGFyZ2V0LCBpbnRlcmFjdGl2ZUVsZW1lbnRzKTtcclxuICAgICAgICAgICAgLy8gRmlsdGVyIGxpc3Qgb2YgaW50ZXJhY3RpdmUgZWxlbWVudHMgd2hpY2ggYXJlIG9ubHkgaW5jbHVkZWQgZm9yIGN1cnJlbnQgdHJlZSBpdGVtXHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMgPSBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdC5maWx0ZXIoZWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2xvc2VzdFRyZWVJdGVtID0gZWwuY2xvc2VzdCgnW3JvbGU9XCJ0cmVlaXRlbVwiXScpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsb3Nlc3RUcmVlSXRlbSA9PT0gdHJlZUl0ZW1SZWYuY3VycmVudDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMuaW5kZXhPZihjdXJyZW50RWxlbWVudCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHNoaWZ0S2V5ID8gLTEgOiAxO1xyXG4gICAgICAgICAgICBjb25zdCB0b3RhbCA9IGN1cnJlbnRUcmVlSXRlbUludGVyYWN0aXZlRWxlbWVudHMubGVuZ3RoO1xyXG4gICAgICAgICAgICBjb25zdCBuZXh0SW5kZXggPSAoY3VycmVudEluZGV4ICsgZGlyZWN0aW9uICsgdG90YWwpICUgdG90YWw7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gY3VycmVudFRyZWVJdGVtSW50ZXJhY3RpdmVFbGVtZW50c1tuZXh0SW5kZXhdO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudFRvRm9jdXMpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZWxlbWVudFRvRm9jdXMuZm9jdXMoKSwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBQcmVzc2luZyBgRW50ZXJgIG9yIGBTcGFjZWAgb24gYW4gaW50ZXJhY3RpdmUgZWxlbWVudCB3aWxsIHRyaWdnZXIgaXRzIGNsaWNrIGV2ZW50XHJcbiAgICAgICAgaWYgKGlzQWN0aXZhdGlvbktleSAmJiBpbnRlcmFjdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgaW50ZXJhY3RpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE1vdmVzIGZvY3VzIG91dHNpZGUgdGhlIHRyZWUgaXRlbSBhbmQgZm9jdXNlcyB0aGUgdHJlZSBpdGVtIGl0c2VsZiB3aGVuIGBFc2NhcGVgIGlzIHByZXNzZWRcclxuICAgICAgICBpZiAoaXNFc2NhcGUpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHNldElzSW5zaWRlVHJlZUl0ZW0oZmFsc2UpO1xyXG4gICAgICAgICAgICBjb25zdCB0cmVlSXRlbU5vZGUgPSB0cmVlSXRlbVJlZi5jdXJyZW50O1xyXG4gICAgICAgICAgICBpZiAodHJlZUl0ZW1Ob2RlKSB7XHJcbiAgICAgICAgICAgICAgICB0cmVlSXRlbU5vZGUuZm9jdXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzSW5zaWRlVHJlZUl0ZW1dKTtcclxuICAgIGNvbnN0IGRlZmF1bHRJY29uID0gUmVhY3QudXNlTWVtbygoKSA9PiBub2RlVHlwZSA9PT0gVHJlZU5vZGVUeXBlLmJyYW5jaCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEZvbGRlckljb24sIHsgXCJhcmlhLWhpZGRlblwiOiB0cnVlIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KEFydGljbGVJY29uLCB7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSB9KSksIFtub2RlVHlwZV0pO1xyXG4gICAgLy8gTWVtb2lzZSB0aGUgbGFiZWwgSlNYIHNvIHRoZSBgY2hlY2tib3hQcm9wc2AgbWVtbyBiZWxvdyBhY3R1YWxseSBoYXNcclxuICAgIC8vIGEgc3RhYmxlIGBsYWJlbFRleHRgIHJlZmVyZW5jZSBiZXR3ZWVuIHJlbmRlcnMuIFByZXZpb3VzbHkgdGhpc1xyXG4gICAgLy8gZWxlbWVudCB3YXMgcmUtY3JlYXRlZCBvbiBldmVyeSByZW5kZXIsIHdoaWNoIGZvcmNlZFxyXG4gICAgLy8gYGNoZWNrYm94UHJvcHNgIHRvIGFsc28gYmUgcmUtY3JlYXRlZCBhbmQgYW55IGZ1dHVyZSBSZWFjdC5tZW1vIG9uXHJcbiAgICAvLyBDaGVja2JveC9JbmRldGVybWluYXRlQ2hlY2tib3ggd291bGQgYWx3YXlzIGJhaWwgb3V0LlxyXG4gICAgY29uc3QgbGFiZWxUZXh0ID0gUmVhY3QudXNlTWVtbygoKSA9PiAoUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRMYWJlbFdyYXBwZXIsIHsgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBpc0ludmVyc2U6IGlzSW52ZXJzZSwgc3R5bGU6IGxhYmVsU3R5bGUsIGlkOiBgJHtpdGVtSWR9LWxhYmVsYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1sYWJlbGAgfSxcclxuICAgICAgICBoYXNJY29ucyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChJY29uV3JhcHBlciwgeyBpc0ludmVyc2U6IGlzSW52ZXJzZSwgdGhlbWU6IHRoZW1lLCBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLCBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCB8fCBpdGVtSWR9LWljb25gIH0sIGljb24gfHwgZGVmYXVsdEljb24pKSxcclxuICAgICAgICBsYWJlbCkpLCBbXHJcbiAgICAgICAgdGhlbWUsXHJcbiAgICAgICAgaXNEaXNhYmxlZCxcclxuICAgICAgICBpc0ludmVyc2UsXHJcbiAgICAgICAgbGFiZWxTdHlsZSxcclxuICAgICAgICBpdGVtSWQsXHJcbiAgICAgICAgdGVzdElkLFxyXG4gICAgICAgIGhhc0ljb25zLFxyXG4gICAgICAgIGljb24sXHJcbiAgICAgICAgZGVmYXVsdEljb24sXHJcbiAgICAgICAgbGFiZWwsXHJcbiAgICBdKTtcclxuICAgIGNvbnN0IHRyZWVJdGVtQWRkaXRpb25hbENvbnRlbnQgPSBSZWFjdC51c2VNZW1vKCgpID0+IGFkZGl0aW9uYWxDb250ZW50ID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQWRkaXRpb25hbENvbnRlbnRXcmFwcGVyLCB7IHRoZW1lOiB0aGVtZSwgaWQ6IGAke2l0ZW1JZH0tYWRkaXRpb25hbGNvbnRlbnR3cmFwcGVyYCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgPz8gaXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgIH0sIGFkZGl0aW9uYWxDb250ZW50KSkgOiBudWxsLCBbYWRkaXRpb25hbENvbnRlbnQsIHRoZW1lLCBpdGVtSWQsIHRlc3RJZF0pO1xyXG4gICAgLy8gU3RhYmxlIHBlci1jaGlsZCBoaWVyYXJjaHkgdmFsdWVzLiBUaGUgcmVmZXJlbmNlIG11c3Qgbm90IGNoYW5nZSBvblxyXG4gICAgLy8gcmUtcmVuZGVycyB0cmlnZ2VyZWQgYnkgVHJlZVZpZXdTZWxlY3Rpb25Db250ZXh0LCBvdGhlcndpc2UgZXZlcnlcclxuICAgIC8vIG5lc3RlZCBUcmVlSXRlbSByZS1yZW5kZXJzIHRocm91Z2ggdGhlIGNvbnRleHQgYW5kIFJlYWN0Lm1lbW8gaXNcclxuICAgIC8vIGRlZmVhdGVkLlxyXG4gICAgY29uc3QgY2hpbGRIaWVyYXJjaGllcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvdW50ID0gUmVhY3QuQ2hpbGRyZW4uY291bnQoY2hpbGRyZW4pO1xyXG4gICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShjb3VudCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGFycltpXSA9IHtcclxuICAgICAgICAgICAgICAgIGRlcHRoOiBpdGVtRGVwdGggKyAxLFxyXG4gICAgICAgICAgICAgICAgcGFyZW50RGVwdGg6IGl0ZW1EZXB0aCxcclxuICAgICAgICAgICAgICAgIGlzVG9wTGV2ZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhcnI7XHJcbiAgICB9LCBbY2hpbGRyZW4sIGl0ZW1EZXB0aF0pO1xyXG4gICAgLy8gTWVtb2l6ZSBpbmxpbmUgc3R5bGUgb2JqZWN0cyB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IHJlLXJlbmRlcnNcclxuICAgIGNvbnN0IGNoZWNrYm94SW5wdXRTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHsgbWFyZ2luUmlnaHQ6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzAzIH0pLCBbdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDNdKTtcclxuICAgIGNvbnN0IGNoZWNrYm94TGFiZWxTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcclxuICAgICAgICBwYWRkaW5nOiAwLFxyXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICB9KSwgW10pO1xyXG4gICAgLy8gUHJvcHMgc2hhcmVkIGJ5IENoZWNrYm94IGFuZCBJbmRldGVybWluYXRlQ2hlY2tib3hcclxuICAgIGNvbnN0IGNoZWNrYm94UHJvcHMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XHJcbiAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaGlkZUZvY3VzOiB0cnVlLFxyXG4gICAgICAgIGlkOiBgJHtpdGVtSWR9LWNoZWNrYm94YCxcclxuICAgICAgICBpbnB1dFN0eWxlOiBjaGVja2JveElucHV0U3R5bGUsXHJcbiAgICAgICAgbGFiZWxTdHlsZTogY2hlY2tib3hMYWJlbFN0eWxlLFxyXG4gICAgICAgIGxhYmVsVGV4dDogbGFiZWxUZXh0LFxyXG4gICAgICAgIG9uQ2hhbmdlOiBjaGVja2JveENoYW5nZUhhbmRsZXIsXHJcbiAgICAgICAgdGFiSW5kZXg6IC0xLFxyXG4gICAgICAgIHRlc3RJZDogYCR7aXRlbUlkfS1jaGVja2JveGAsXHJcbiAgICB9KSwgW1xyXG4gICAgICAgIGlzRGlzYWJsZWQsXHJcbiAgICAgICAgaXRlbUlkLFxyXG4gICAgICAgIGNoZWNrYm94SW5wdXRTdHlsZSxcclxuICAgICAgICBjaGVja2JveExhYmVsU3R5bGUsXHJcbiAgICAgICAgbGFiZWxUZXh0LFxyXG4gICAgICAgIGNoZWNrYm94Q2hhbmdlSGFuZGxlcixcclxuICAgIF0pO1xyXG4gICAgY29uc3Qgb25FeHBhbmRlZENsaWNrZWQgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGhhbmRsZUV4cGFuZGVkQ2hhbmdlKGV2ZW50LCBpdGVtSWQpO1xyXG4gICAgfSwgW2hhbmRsZUV4cGFuZGVkQ2hhbmdlLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IGhhbmRsZUV4cGFuZENsaWNrID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKCFpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICBvbkV4cGFuZGVkQ2xpY2tlZChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzRGlzYWJsZWQsIG9uRXhwYW5kZWRDbGlja2VkXSk7XHJcbiAgICBjb25zdCBoYW5kbGVPbkNsaWNrID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSBldmVudC50YXJnZXQ7XHJcbiAgICAgICAgY29uc3QgaW50ZXJhY3RpdmVFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdCgnYnV0dG9uLCBbcm9sZT1cImJ1dHRvblwiXSwgYVtocmVmXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIFtyb2xlPVwibWVudWl0ZW1cIl0nKTtcclxuICAgICAgICAvLyBQcmV2ZW50aW5nIHNlbGVjdGluZyB0aGUgaXRlbSB3aGVuIGNsaWNraW5nIG9uIGludGVyYWN0aXZlIGVsZW1lbnRzIHdoZW4gYHNlbGVjdGFibGVgIGlzIGBzaW5nbGVgXHJcbiAgICAgICAgaWYgKGludGVyYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBJZiBzZWxlY3RQYXJlbnRzIGlzIGZhbHNlIGFuZCB0aGlzIGlzIGEgcGFyZW50IGl0ZW0sIGhhbmRsZSBleHBhbmQvY29sbGFwc2UgaW5zdGVhZCBvZiBzZWxlY3Rpb25cclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLnNpbmdsZSAmJlxyXG4gICAgICAgICAgICAhc2VsZWN0UGFyZW50cyAmJlxyXG4gICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMpIHtcclxuICAgICAgICAgICAgb25FeHBhbmRlZENsaWNrZWQoZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEluIHNlbGVjdGFibGU9b2ZmIG1vZGUsIGNsaWNraW5nIGFueXdoZXJlIG9uIGEgcGFyZW50IGl0ZW0gdG9nZ2xlcyBleHBhbmQvY29sbGFwc2VcclxuICAgICAgICBpZiAoc2VsZWN0YWJsZSA9PT0gVHJlZVZpZXdTZWxlY3RhYmxlLm9mZiAmJiBoYXNPd25UcmVlSXRlbXMpIHtcclxuICAgICAgICAgICAgb25FeHBhbmRlZENsaWNrZWQoZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzZWxlY3RhYmxlID09PSBUcmVlVmlld1NlbGVjdGFibGUuc2luZ2xlKSB7XHJcbiAgICAgICAgICAgIGhhbmRsZUNsaWNrKGV2ZW50LCBpdGVtSWQpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCB0YWJJbmRleCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpdGVtVG9Gb2N1cyA9PT0gaXRlbUlkID8gMCA6IC0xO1xyXG4gICAgfSwgW2lzRGlzYWJsZWQsIGl0ZW1Ub0ZvY3VzLCBpdGVtSWRdKTtcclxuICAgIGNvbnN0IHNob3VsZFNob3dDaGVja2JveCA9IHNlbGVjdGFibGUgPT09IFRyZWVWaWV3U2VsZWN0YWJsZS5tdWx0aSAmJlxyXG4gICAgICAgIChpc1RvcExldmVsU2VsZWN0YWJsZSAhPT0gZmFsc2UgfHwgIXRvcExldmVsKTtcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gd2l0aGluIHRoZSB0cmVlIGl0ZW0uXHJcbiAgICAgKlxyXG4gICAgICogUHJlc3NpbmcgYEN0cmwgKyBFbnRlcmAgb3IgYENvbW1hbmQgKyBFbnRlcmAgZm9jdXNlcyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudCB3aXRoaW4gdGhlIHRyZWUgaXRlbVxyXG4gICAgICogYW5kIGxvY2tzIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtLlxyXG4gICAgICpcclxuICAgICAqIElmIHRoZSBmb2N1cyBpcyB3aXRoaW4gdGhlIGxhYmVsIG9yIGFkZGl0aW9uYWwgY29udGVudCwgaXQgaGFuZGxlcyBrZXkgZXZlbnRzIGZvciBpbnRlcmFjdGlvbiBlbGVtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBJdCBhbHNvIGhhbmRsZXMgdGhlIG90aGVyIGtleXMgdG8gdHJpZ2dlciB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIHRyZWUgaXRlbS5cclxuICAgICAqICoqL1xyXG4gICAgY29uc3Qgb25LZXlEb3duSGFuZGxlciA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsga2V5LCB0YXJnZXQsIGN1cnJlbnRUYXJnZXQgfSA9IGV2ZW50O1xyXG4gICAgICAgIGNvbnN0IGlzRW50ZXIgPSBrZXkgPT09ICdFbnRlcic7XHJcbiAgICAgICAgY29uc3QgaXNDdHJsT3JDb21tYW5kID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5O1xyXG4gICAgICAgIGNvbnN0IGlzQ3RybEVudGVyID0gaXNDdHJsT3JDb21tYW5kICYmIGlzRW50ZXI7XHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBDdHJsICsgRW50ZXIgb3IgQ29tbWFuZCArIEVudGVyLCBmb2N1cyB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgZWxlbWVudFxyXG4gICAgICAgIC8vIGFuZCBsb2NrIGZvY3VzIGluc2lkZSB0aGUgdHJlZSBpdGVtXHJcbiAgICAgICAgaWYgKGlzQ3RybEVudGVyICYmIHRhcmdldCA9PT0gY3VycmVudFRhcmdldCkge1xyXG4gICAgICAgICAgICBzZXRJc0luc2lkZVRyZWVJdGVtKHRydWUpO1xyXG4gICAgICAgICAgICBjb25zdCBpbnRlcmFjdGl2ZUVsZW1lbnRzTGlzdCA9IGdldEludGVyYWN0aXZlRWxlbWVudHMoY3VycmVudFRhcmdldCwgaW50ZXJhY3RpdmVFbGVtZW50cyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzID0gaW50ZXJhY3RpdmVFbGVtZW50c0xpc3RbMF07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cykge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gRW5zdXJlIHZhbGlkIENTUyBzZWxlY3RvcnMgYnkgZXNjYXBpbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChlLmcuLCBwZXJpb2RzIGluIGl0ZW1JZClcclxuICAgICAgICBjb25zdCBzYWZlSXRlbUlkID0gQ1NTLmVzY2FwZShpdGVtSWQpO1xyXG4gICAgICAgIGNvbnN0IGlzV2l0aGluTGFiZWxPckFkZGl0aW9uYWxDb250ZW50ID0gdGFyZ2V0LmNsb3Nlc3QoYCMke3NhZmVJdGVtSWR9LWxhYmVsLCAjJHtzYWZlSXRlbUlkfS1hZGRpdGlvbmFsY29udGVudHdyYXBwZXJgKTtcclxuICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlzIHdpdGhpbiB0aGUgbGFiZWwgb3IgYWRkaXRpb25hbCBjb250ZW50LCBoYW5kbGUga2V5IGV2ZW50cyBmb3IgdGhvc2UgYXJlYXNcclxuICAgICAgICBpZiAoaXNXaXRoaW5MYWJlbE9yQWRkaXRpb25hbENvbnRlbnQpIHtcclxuICAgICAgICAgICAgaGFuZGxlTGFiZWxBbmRBZGRpdGlvbmFsQ29udGVudEtleURvd24oZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaXMgdGhlIHRyZWUgaXRlbSBpdHNlbGYsIGhhbmRsZSBrZXkgZG93biBmb3IgdGhlIHRyZWUgaXRlbVxyXG4gICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgICAgICAgaGFuZGxlS2V5RG93bihldmVudCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9LCBbXHJcbiAgICAgICAgZ2V0SW50ZXJhY3RpdmVFbGVtZW50cyxcclxuICAgICAgICBpbnRlcmFjdGl2ZUVsZW1lbnRzLFxyXG4gICAgICAgIGl0ZW1JZCxcclxuICAgICAgICBoYW5kbGVMYWJlbEFuZEFkZGl0aW9uYWxDb250ZW50S2V5RG93bixcclxuICAgICAgICBoYW5kbGVLZXlEb3duLFxyXG4gICAgXSk7XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJlZUl0ZW1Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBjb250ZXh0VmFsdWUgfSxcclxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgc3R5bGU6IHRyZWVJdGVtU3R5bGVzIH0sXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkVHJlZUl0ZW0sIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgXCJhcmlhLWV4cGFuZGVkXCI6IGhhc093blRyZWVJdGVtcyA/IGV4cGFuZGVkIDogbnVsbCwgXCJhcmlhLXNlbGVjdGVkXCI6IHNlbGVjdGVkSXRlbSwgXCJhcmlhLWNoZWNrZWRcIjogc2hvdWxkU2hvd0NoZWNrYm94ID8gYXJpYUNoZWNrZWRWYWx1ZSA6IG51bGwsIFwiZGF0YS10ZXN0aWRcIjogdGVzdElkLCBkZXB0aDogaXRlbURlcHRoLCBoYXNPd25UcmVlSXRlbXM6IGhhc093blRyZWVJdGVtcywgaWQ6IGl0ZW1JZCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIGlzVmlydHVhbGl6ZWQ6IGhpZXJhcmNoeUNvbnRleHQuaXNWaXJ0dWFsaXplZCwgbm9kZVR5cGU6IG5vZGVUeXBlLCByb2xlOiBcInRyZWVpdGVtXCIsIHNlbGVjdGFibGVUeXBlOiBzZWxlY3RhYmxlLCBzZWxlY3RlZDogc2VsZWN0ZWRJdGVtLCB0aGVtZTogdGhlbWUsIHRhYkluZGV4OiB0YWJJbmRleCwgb25LZXlEb3duOiBvbktleURvd25IYW5kbGVyLCByZWY6IHRyZWVJdGVtUmVmLCBob3ZlckNvbG9yOiBob3ZlckNvbG9yIH0pLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZWRJdGVtV3JhcHBlciwgeyBcImRhdGEtdGVzdGlkXCI6IGAke3Rlc3RJZCA/PyBpdGVtSWR9LWl0ZW13cmFwcGVyYCwgZGVwdGg6IGl0ZW1EZXB0aCwgaGFzQWRkaXRpb25hbENvbnRlbnQ6ICEhYWRkaXRpb25hbENvbnRlbnQsIGhhc0N1c3RvbUljb25TaXplOiAhIWV4cGFuZEljb25TdHlsZXM/LnNpemUsIGlkOiBgJHtpdGVtSWR9LWl0ZW13cmFwcGVyYCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG5vZGVUeXBlOiBub2RlVHlwZSwgc2VsZWN0YWJsZTogc2VsZWN0YWJsZSwgc3R5bGU6IHN0eWxlLCB0aGVtZTogdGhlbWUsIHJlZjogbWVyZ2VSZWZzKHJlZiwgZm9jdXNUcmFwRWxlbWVudCksIG9uQ2xpY2s6IGhhbmRsZU9uQ2xpY2sgfSxcclxuICAgICAgICAgICAgICAgICAgICBoYXNPd25UcmVlSXRlbXMgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkRXhwYW5kV3JhcHBlciwgeyBzaXplOiBleHBhbmRJY29uU3R5bGVzPy5zaXplLCBjb2xvcjogZXhwYW5kSWNvblN0eWxlcz8uY29sb3IsIFwiZGF0YS10ZXN0aWRcIjogYCR7dGVzdElkIHx8IGl0ZW1JZH0tZXhwYW5kYCwgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIG9uQ2xpY2s6IGhhbmRsZUV4cGFuZENsaWNrLCB0aGVtZTogdGhlbWUgfSwgZXhwYW5kZWQgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChFeHBhbmRNb3JlSWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIHNpemU6IGV4cGFuZEljb25TdHlsZXM/LnNpemUgfSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hldnJvblJpZ2h0SWNvbiwgeyBcImFyaWEtaGlkZGVuXCI6IHRydWUsIHNpemU6IGV4cGFuZEljb25TdHlsZXM/LnNpemUgfSkpKSksXHJcbiAgICAgICAgICAgICAgICAgICAgc2hvdWxkU2hvd0NoZWNrYm94ID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVkQ2hlY2tib3hXcmFwcGVyLCB7IGhhc0FkZGl0aW9uYWxDb250ZW50OiAhIWFkZGl0aW9uYWxDb250ZW50LCB0aGVtZTogdGhlbWUgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzT3duVHJlZUl0ZW1zID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW5kZXRlcm1pbmF0ZUNoZWNrYm94LCBPYmplY3QuYXNzaWduKHt9LCBjaGVja2JveFByb3BzLCB7IHN0YXR1czogY2hlY2tlZFN0YXR1cyB9KSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hlY2tib3gsIE9iamVjdC5hc3NpZ24oe30sIGNoZWNrYm94UHJvcHMsIHsgY2hlY2tlZDogY2hlY2tlZFN0YXR1c1RvQm9vbGVhbihjaGVja2VkU3RhdHVzKSB9KSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlSXRlbUFkZGl0aW9uYWxDb250ZW50KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxUZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlSXRlbUFkZGl0aW9uYWxDb250ZW50KSkpLFxyXG4gICAgICAgICAgICAgICAgaGFzR3VpZGVMaW5lcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIChoaWVyYXJjaHlDb250ZXh0LmlzVmlydHVhbGl6ZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBpdGVtRGVwdGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5mcm9tKHsgbGVuZ3RoOiBpdGVtRGVwdGggfSwgKF8sIGQpID0+IChSZWFjdC5jcmVhdGVFbGVtZW50KFZpcnR1YWxpemVkR3VpZGVMaW5lLCB7IGtleTogYGd1aWRlbGluZS0ke2R9YCwgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS12aXJ0dWFsaXplZC1ndWlkZWxpbmUtJHtkfWAsIHRoZW1lOiB0aGVtZSwgaXNJbnZlcnNlOiBpc0ludmVyc2UsIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2V0SW5saW5lU3RhcnQ6IGBjYWxjKCR7Y2FsY3VsYXRlT2Zmc2V0KFRyZWVOb2RlVHlwZS5icmFuY2gsIGQsIGZhbHNlLCBmYWxzZSwgdHJ1ZSl9ICsgJHtleHBhbmRJY29uU3R5bGVzPy5zaXplICE9PSB1bmRlZmluZWQgPyBgJHtleHBhbmRJY29uU3R5bGVzLnNpemV9cHhgIDogdGhlbWUuc3BhY2VTY2FsZS5zcGFjaW5nMDZ9IC8gMiAtIDAuNXB4KWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB9KSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaGFzT3duVHJlZUl0ZW1zICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRlZCAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChHdWlkZUxpbmUsIHsgXCJkYXRhLXRlc3RpZFwiOiBgJHt0ZXN0SWQgfHwgaXRlbUlkfS1ndWlkZWxpbmVgLCB0aGVtZTogdGhlbWUsIGlzSW52ZXJzZTogaXNJbnZlcnNlLCBndWlkZUxpbmVMZWZ0OiBgY2FsYygke2NhbGN1bGF0ZU9mZnNldChUcmVlTm9kZVR5cGUuYnJhbmNoLCBpdGVtRGVwdGgsIGZhbHNlLCBmYWxzZSwgZmFsc2UpfSArICR7ZXhwYW5kSWNvblN0eWxlcz8uc2l6ZSAhPT0gdW5kZWZpbmVkID8gYCR7ZXhwYW5kSWNvblN0eWxlcy5zaXplfXB4YCA6IHRoZW1lLnNwYWNlU2NhbGUuc3BhY2luZzA2fSAvIDIgLSAwLjVweCkgYCB9KSkpLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuQ2hpbGRyZW4ubWFwKGNoaWxkcmVuLCAoY2hpbGQsIGNoaWxkSW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQ/LnR5cGUgIT09IFRyZWVJdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVXNlIHRoZSBzdGFibGUsIHByZS1tZW1vaXNlZCB2YWx1ZSAoc2VlIGNoaWxkSGllcmFyY2hpZXMgYWJvdmUpLlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5lc3RlZEhpZXJhcmNoeVZhbHVlID0gY2hpbGRIaWVyYXJjaGllc1tjaGlsZEluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJhbnNpdGlvbiwgeyBpc09wZW46IGV4cGFuZGVkLCB1bm1vdW50T25FeGl0OiB0cnVlIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ1bFwiLCB7IHJvbGU6IFwiZ3JvdXBcIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUcmVlSXRlbUhpZXJhcmNoeUNvbnRleHQuUHJvdmlkZXIsIHsga2V5OiBjaGlsZC5wcm9wcy5pdGVtSWQsIHZhbHVlOiBuZXN0ZWRIaWVyYXJjaHlWYWx1ZSB9LCBjaGlsZCkpKSk7XHJcbiAgICAgICAgICAgICAgICB9KSksXHJcbiAgICAgICAgICAgIGlzTWFjT1MgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVmlzdWFsbHlIaWRkZW4sIG51bGwsXHJcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEFubm91bmNlLCBudWxsLCBleHBhbmRlZFxyXG4gICAgICAgICAgICAgICAgICAgID8gaTE4bi5leHBhbnNpb25TdGF0ZS5leHBhbmRlZFxyXG4gICAgICAgICAgICAgICAgICAgIDogaTE4bi5leHBhbnNpb25TdGF0ZS5jb2xsYXBzZWQpKSkpKSk7XHJcbn0pO1xyXG4vKipcclxuICogQ3VzdG9tIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIFJlYWN0Lm1lbW9cclxuICogT25seSByZS1yZW5kZXIgVHJlZUl0ZW0gd2hlbiByZWxldmFudCBwcm9wcyBjaGFuZ2VcclxuICovXHJcbmZ1bmN0aW9uIGFyZVByb3BzRXF1YWwocHJldlByb3BzLCBuZXh0UHJvcHMpIHtcclxuICAgIC8vIENoZWNrIGlmIGl0ZW1JZCBjaGFuZ2VkXHJcbiAgICBpZiAocHJldlByb3BzLml0ZW1JZCAhPT0gbmV4dFByb3BzLml0ZW1JZCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGxhYmVsIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMubGFiZWwgIT09IG5leHRQcm9wcy5sYWJlbCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGRpc2FibGVkIHN0YXRlIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaXNEaXNhYmxlZCAhPT0gbmV4dFByb3BzLmlzRGlzYWJsZWQpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBpY29uIGNoYW5nZWRcclxuICAgIGlmIChwcmV2UHJvcHMuaWNvbiAhPT0gbmV4dFByb3BzLmljb24pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBhZGRpdGlvbmFsIGNvbnRlbnQgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5hZGRpdGlvbmFsQ29udGVudCAhPT0gbmV4dFByb3BzLmFkZGl0aW9uYWxDb250ZW50KSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQ2hlY2sgaWYgaG92ZXIgY29sb3IgY2hhbmdlZFxyXG4gICAgaWYgKHByZXZQcm9wcy5ob3ZlckNvbG9yICE9PSBuZXh0UHJvcHMuaG92ZXJDb2xvcikge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIGNoaWxkcmVuIGNoYW5nZWQgKGZvciBuZXN0ZWQgdHJlZSBpdGVtcylcclxuICAgIC8vIFVzaW5nIHR5cGUgYXNzZXJ0aW9uIHNpbmNlIGNoaWxkcmVuIGNvbWVzIGZyb20gUmVhY3QuSFRNTEF0dHJpYnV0ZXNcclxuICAgIGlmIChwcmV2UHJvcHMuY2hpbGRyZW4gIT09IG5leHRQcm9wcy5jaGlsZHJlbikge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENoZWNrIGlmIHN0eWxlcyBjaGFuZ2VkXHJcbiAgICAvLyBVc2luZyB0eXBlIGFzc2VydGlvbiBzaW5jZSBzdHlsZSBjb21lcyBmcm9tIFJlYWN0LkhUTUxBdHRyaWJ1dGVzXHJcbiAgICBpZiAocHJldlByb3BzLnN0eWxlICE9PSBuZXh0UHJvcHMuc3R5bGUpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAocHJldlByb3BzLmxhYmVsU3R5bGUgIT09IG5leHRQcm9wcy5sYWJlbFN0eWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZQcm9wcy50cmVlSXRlbVN0eWxlcyAhPT0gbmV4dFByb3BzLnRyZWVJdGVtU3R5bGVzKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gQWxsIHJlbGV2YW50IHByb3BzIGFyZSBlcXVhbCwgc2tpcCByZS1yZW5kZXJcclxuICAgIHJldHVybiB0cnVlO1xyXG59XHJcbi8qKlxyXG4gKiBNZW1vaXplZCBUcmVlSXRlbSBjb21wb25lbnRcclxuICogT25seSByZS1yZW5kZXJzIHdoZW4gcmVsZXZhbnQgcHJvcHMgY2hhbmdlLCBpbXByb3ZpbmcgcGVyZm9ybWFuY2UgZm9yIGxhcmdlIHRyZWVzXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgVHJlZUl0ZW0gPSBSZWFjdC5tZW1vKFRyZWVJdGVtQ29tcG9uZW50LCBhcmVQcm9wc0VxdWFsKTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VHJlZUl0ZW0uanMubWFwIl19 */"));
|
|
29463
29465
|
/*#__PURE__*/createStyled("ul", {
|
|
29464
29466
|
target: "e1tyeayj2",
|
|
29465
29467
|
label: "StyledTreeView"
|
|
@@ -30369,18 +30371,10 @@
|
|
|
30369
30371
|
type: 'none',
|
|
30370
30372
|
} }) }), (chartToolbar ? { toolbar: { enabled: false } } : {}));
|
|
30371
30373
|
var ChartType = allCharts[type];
|
|
30372
|
-
// Adding aria-label to main SVG container
|
|
30373
|
-
React__default__namespace.useEffect(function () {
|
|
30374
|
-
if (ariaLabel) {
|
|
30375
|
-
document.querySelectorAll('.graph-frame ').forEach(function (div) {
|
|
30376
|
-
div.setAttribute('aria-label', ariaLabel);
|
|
30377
|
-
});
|
|
30378
|
-
}
|
|
30379
|
-
});
|
|
30380
30374
|
var groupsLength = Object.keys(buildColors()).length;
|
|
30381
30375
|
var showTable = (chartToolbar === null || chartToolbar === void 0 ? void 0 : chartToolbar.showAsTable) !== false;
|
|
30382
30376
|
return (React__default__namespace.createElement(FullscreenRoot, { ref: mergedRef, isInverse: isInverse, theme: theme },
|
|
30383
|
-
React__default__namespace.createElement(CarbonChartWrapper, __assign({ "data-testid": testId, isInverse: isInverse, theme: theme, className: "carbon-chart-wrapper".concat(chartToolbar ? ' has-magma-toolbar' : ''), groupsLength: groupsLength < 6 ? groupsLength : 14 }, rest),
|
|
30377
|
+
React__default__namespace.createElement(CarbonChartWrapper, __assign({ "data-testid": testId, isInverse: isInverse, theme: theme, className: "carbon-chart-wrapper".concat(chartToolbar ? ' has-magma-toolbar' : ''), groupsLength: groupsLength < 6 ? groupsLength : 14, role: "region", "aria-label": ariaLabel || chartTitle, "aria-roledescription": "chart" }, rest),
|
|
30384
30378
|
React__default__namespace.createElement(ChartContentWrapper, null,
|
|
30385
30379
|
chartToolbar && (React__default__namespace.createElement(CarbonChartToolbar, { config: chartToolbar, dataSet: dataSet, isInverse: isInverse, isTableOpen: isTableOpen, isFullscreen: isFullscreen, onOpenTable: openTableModal, onToggleFullscreen: toggleFullscreen, theme: theme, title: chartTitle, wrapperRef: internalRef })),
|
|
30386
30380
|
React__default__namespace.createElement(ChartType, { data: dataSet, options: newOptions }))),
|