nsc-react-component 4.3.3 → 4.3.5
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/lib/base/modal/Confirm.js +10 -2
- package/lib/base/modal/Confirm.js.map +1 -1
- package/lib/base/modal/index.d.ts +1 -0
- package/lib/base/modal/index.js +9 -2
- package/lib/base/modal/index.js.map +1 -1
- package/lib/base/table/index.js +4 -3
- package/lib/base/table/index.js.map +1 -1
- package/lib/page/BasePage/utils.js +14 -13
- package/lib/page/BasePage/utils.js.map +1 -1
- package/lib/page/FormPage/index.js +4 -3
- package/lib/page/FormPage/index.js.map +1 -1
- package/lib/page/SettingForm/index.js +2 -2
- package/lib/page/SettingForm/index.js.map +1 -1
- package/lib/page/SettingForm/index.less +12 -12
- package/lib/page/SettingTab/index.js +2 -2
- package/lib/page/SettingTab/index.js.map +1 -1
- package/lib/page/SettingTab/index.less +1 -1
- package/lib/page/SettingUtil/utils.js +4 -3
- package/lib/page/SettingUtil/utils.js.map +1 -1
- package/package.json +1 -1
package/lib/base/table/index.js
CHANGED
|
@@ -629,7 +629,7 @@ class NSCTable extends React.Component {
|
|
|
629
629
|
let tools = ["refresh", "size", "sort", "column"];
|
|
630
630
|
let toolsClick = {};
|
|
631
631
|
if (toolbar == true) {
|
|
632
|
-
tools =
|
|
632
|
+
tools = ["refresh", "size", "sort", "column"];
|
|
633
633
|
} else {
|
|
634
634
|
tools = toolbar.tools ? toolbar.tools : tableTool.tools ? tableTool.tools : tools;
|
|
635
635
|
toolsClick = toolbar.onToolClick ? toolbar.onToolClick : {};
|
|
@@ -1049,8 +1049,9 @@ _defineProperty(NSCTable, "defaultProps", {
|
|
|
1049
1049
|
resizeColumn: true,
|
|
1050
1050
|
toolbar: {
|
|
1051
1051
|
show: true,
|
|
1052
|
-
onToolClick: {}
|
|
1052
|
+
onToolClick: {},
|
|
1053
|
+
tools: []
|
|
1053
1054
|
}
|
|
1054
1055
|
});
|
|
1055
1056
|
export default withZhLocale(NSCTable);
|
|
1056
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBcHBzdG9yZU91dGxpbmVkIiwiQ2hlY2tPdXRsaW5lZCIsIkNvbHVtbkhlaWdodE91dGxpbmVkIiwiU2VhcmNoT3V0bGluZWQiLCJTb3J0QXNjZW5kaW5nT3V0bGluZWQiLCJTb3J0RGVzY2VuZGluZ091dGxpbmVkIiwiUmVkb091dGxpbmVkIiwiaXNFbXB0eU9iaiIsIlN0b3JlIiwiUGFnZVN0b3JlIiwidXRpbHMiLCJSZWFjdCIsIkRuZFByb3ZpZGVyIiwiQm9keVJvdyIsIkRuZENvbnRleHRUeXBlIiwiSUJvZHlSb3dQcm9wcyIsInRyZWVVdGlscyIsIkJvZHlSb3dDb21wb25lbnQiLCJIVE1MNUJhY2tlbmQiLCJ3aXRoWmhMb2NhbGUiLCJSZXNpemFibGUiLCJnZXRMZXNzIiwiZ2V0Tm9kZSIsIk5vRGF0YSIsImdldFN0b3JhZ2UiLCJjb25maWciLCJjbHMiLCJzdHlsZXMiLCJSZXNpemVhYmxlVGl0bGUiLCJwcm9wcyIsIm9uUmVzaXplIiwid2lkdGgiLCJyZXN0UHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJjcmVhdGVFbGVtZW50IiwiaGVpZ2h0IiwiZHJhZ2dhYmxlT3B0cyIsImVuYWJsZVVzZXJTZWxlY3RIYWNrIiwiTlNDVGFibGUiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsIl9hdXRvVHlwZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsIm9uQmVmb3JlTG9hZCIsImxvYWQiLCJoZWFkZXIiLCJjZWxsIiwiaW5kZXgiLCJlIiwiX3JlZiIsInNpemUiLCJjb2xzIiwic3RhdGUiLCJuZXh0Q29sdW1ucyIsIl9vYmplY3RTcHJlYWQiLCJzZXRTdGF0ZSIsImdldENvbHVtbnMiLCJldiIsImRhdGEiLCJKU09OIiwicGFyc2UiLCJfdGhpcyIsImV2ZW50VHlwZSIsInBheWxvYWQiLCJ0YWJsZVNpemUiLCJkcmFnSW5kZXgiLCJob3ZlckluZGV4IiwiZHJhZyIsInRhcmdldCIsImRyYWdOb2RlIiwicmVjb3JkIiwidGFyZ2V0Tm9kZSIsIm1vdmVBcnJheSIsImlkcyIsInBhcmVudE5vZGUiLCJnZXRDaGlsZE5vZGVJZHMiLCJwYXJhbXMiLCJpZCIsInBhcmVudElkIiwiYXR0cmlidXRlIiwibW92ZVJvdyIsInN0b3JlIiwicmVsb2FkIiwibW9kYWwiLCJ0eXBlIiwic3RvcmVQcmVmaXgiLCJhdXRvVHlwZSIsImNvbnRlbnQiLCJkYXRhU291cmNlIiwiY29sdW1ucyIsImxvYWRpbmciLCJwYWdpbmF0aW9uIiwiYWN0aXZlSW5kZXgiLCJzZWFyY2hUZXh0IiwiZmllbGRPcHRpb24iLCJzZWFyY2hDb2xvciIsInNvcnRzIiwiZmlsdGVyUGFyYW1zIiwic29ydFR5cGUiLCJzb3J0ZXIiLCJzb3J0SW5mbyIsImRlZmF1bHRTb3J0IiwiY2hlY2tDb2x1bW4iLCJkZWZhdWx0Q2hlY2siLCJzZWxlY3RlZFJvd0tleXMiLCJzZWxlY3RlZFJvd0RhdGFzIiwiZmlsdGVyIiwiZXh0cmEiLCJfcmVmMiIsImxpc3RlbmVycyIsImxpc3RlbmVyc1Byb3BzIiwicmVzdFN0b3JlIiwiX2V4Y2x1ZGVkMiIsInN0b3JlUHJvcHMiLCJtb2RlbCIsImNvbXBvbmVudCIsIm9wdGlvbnMiLCJjYWxsYmFjayIsImRhdGFDaGFuZ2VkIiwibW9kZWxEYXRhIiwicGFnaW5nIiwiZ2V0UGFnaW5hdGlvbiIsIm9uRXJyb3JMb2FkIiwiZXJyIiwicmVzcG9uc2UiLCJhdXRvTG9hZCIsIk9iamVjdCIsImFzc2lnbiIsImN1cnJlbnQiLCJjb21wb25lbnREaWRNb3VudCIsInJlc2l6ZUNvbHVtbiIsInNldERhdGEiLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwibGlzdGVuTWVzc2FnZSIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImNvbXBvbmVudERpZFVwZGF0ZSIsInByZXZQcm9wcyIsInByZVN0YXRlIiwicmVzZXRDb2x1bW4iLCJuZXdDb2xzIiwiY29sc3MiLCJtYXAiLCJjb2wiLCJ0ZW1wIiwib25IZWFkZXJDZWxsIiwiY29sdW1uIiwiaGFuZGxlUmVzaXplIiwicHVzaCIsImNsZWFyU2VsZWN0Q29sb3IiLCJnZXRQYWdpbmF0aW9uQnlTdG9yZSIsIm9uQ2hhbmdlIiwiZmlsdGVycyIsImF1dG9PbkNoYW5nZSIsImF1dG9Tb3J0IiwiYXV0b1BhZ2luYXRpb24iLCJpc011bHRpcGxlIiwiQXJyYXkiLCJpc0FycmF5IiwiaGFuZGxlUGFnaW5hdGlvbiIsInAiLCJjdXJyZW50S2V5IiwicGFnZVNpemVLZXkiLCJwYWdlU2l6ZSIsImFzY1BhcmFtcyIsImdldFNvcnRQYXJhbSIsIm9uQ2hhbmdlRm4iLCJnZXRTdG9yZSIsImdldE1vZGVsIiwiaGFuZGxlU2VhcmNoIiwidmFsIiwiZmlsdGVyQ29sdW1uIiwiY2hlY2tlZFZhbHVlIiwibGVuZ3RoIiwiX21lc3NhZ2UiLCJ3YXJuaW5nIiwiZmlsdGVyQ29sdW1ucyIsIm5ld0NvbCIsImluY2x1ZGVzIiwiZGF0YUluZGV4IiwiaW5pdFNob3ciLCJzb3J0U3RhdGUiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJzb3J0U2VhcmNoIiwib3JkZXJJdGVtcyIsImZpZWxkIiwiYXNjIiwib3JkZXIiLCJmb3JFYWNoIiwidiIsInN0cmluZ2lmeSIsImlzQmV5b25kIiwiZXZlbnQiLCJ0ZXh0UmFuZ2UiLCJlbCIsInRleHRDb250ZW50IiwidGFyZ2V0VyIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInJhbmdlIiwiZG9jdW1lbnQiLCJjcmVhdGVSYW5nZSIsInNldFN0YXJ0Iiwic2V0RW5kIiwiY2hpbGROb2RlcyIsInJhbmdlV2lkdGgiLCJzZXRTZWxlY3RlZFJvd0tleXMiLCJzZXRTZWxlY3RlZFJvd0RhdGFzIiwic29ydEZpZWxkcyIsImRlZmF1bHRTaG93Q29scyIsImVsbGlwc2lzIiwicmVuZGVyIiwic2hvd1RpdGxlIiwidGV4dCIsIl90aGlzJHN0YXRlJGNvbHMiLCJjdXJyZW50Q29sIiwiZmluZCIsImMiLCJhY3R1YWxXaWR0aCIsImNvbFdpZHRoIiwiY29sV2lkdGhPYmoiLCJzbWFsbCIsIm1pZGRsZSIsImRlZmF1bHQiLCJsYXJnZSIsInBhZGRpbmdXaWR0aCIsInN0eWxlIiwiZGlzcGxheSIsInJlZiIsInJlbW92ZUF0dHJpYnV0ZSIsInNjcm9sbFdpZHRoIiwiY2xpZW50V2lkdGgiLCJzZXRBdHRyaWJ1dGUiLCJjbGFzc05hbWUiLCJvdmVyZmxvdyIsInRleHRPdmVyZmxvdyIsIndoaXRlU3BhY2UiLCJpbmRleE9mIiwic29ydE9yZGVyIiwibXVsdGlwbGUiLCJpdGVtIiwiZmlsdGVyUHJvcHMiLCJvYmoiLCJzZWFyY2hLZXkiLCJEaXYiLCJ0aXRsZSIsInBsYWNlaG9sZGVyIiwiY29uY2F0IiwidGFibGVTZWFyY2hSZWYiLCJmaWx0ZXJEcm9wZG93biIsIl9yZWYzIiwic2V0U2VsZWN0ZWRLZXlzIiwic2VsZWN0ZWRLZXlzIiwiY29uZmlybSIsImNsZWFyRmlsdGVycyIsIl9TcGFjZSIsIl9CdXR0b24iLCJvbkNsaWNrIiwiX3RoaXMkdGFibGVTZWFyY2hSZWYkIiwibmV3RmlsdGVyUGFyYW1zIiwia2V5IiwiZ2V0VmFsdWUiLCJzb3J0UGFyYW0iLCJmaWx0ZXJJY29uIiwicmVuZGVyVG9vbEJhciIsImNvbExpc3RzIiwidG9vbGJhciIsInRhYmxlVG9vbCIsInN0b3JlUmVxdWVzdENvbmZpZyIsInRvb2xzIiwidG9vbHNDbGljayIsIm9uVG9vbENsaWNrIiwic2l6ZUl0ZW0iLCJzb3J0SXRlbSIsInNvcnRDb250ZW50IiwiRnJhZ21lbnQiLCJjdXJzb3IiLCJjb2xvciIsInNpemVDb250ZW50IiwiX0NoZWNrYm94IiwiR3JvdXAiLCJiaW5kIiwibGFiZWwiLCJ2YWx1ZSIsImRpc2FibGVkIiwiZm9udFNpemUiLCJfUG9wb3ZlciIsInBsYWNlbWVudCIsInRyaWdnZXIiLCJvdmVybGF5U3R5bGUiLCJtaW5XaWR0aCIsIm1heFdpZHRoIiwibWFyZ2luUmlnaHQiLCJvblJlZnJlc2giLCJnZXRTZWxlY3RlZFJvd0tleXMiLCJnZXRTZWxlY3RlZFJvd0RhdGFzIiwicmVzZXRTZWxlY3RlZFJvd0tleXMiLCJyb3dTZWxlY3Rpb25PblNlbGVjdCIsInNlbGVjdGVkIiwicm93S2V5IiwibmV3U2VsZWN0ZWRSb3dLZXlzIiwibmV3U2VsZWN0ZWRSb3dEYXRhcyIsInNwbGljZSIsInJvd1NlbGVjdGlvbk9uU2VsZWN0QWxsIiwic2VsZWN0ZWRSb3dzIiwiY2hhbmdlUm93cyIsIm5ld2lkcyIsIm5ld2RhdGFzIiwiY2hhbmdlSWRzIiwiX3RoaXMkcHJvcHMkdG9vbGJhciIsIm9taXQiLCJjbGlja0NoYW5nZUNvbG9yIiwicG9zaXRpb24iLCJzaG93U2l6ZUNoYW5nZXIiLCJzaG93UXVpY2tKdW1wZXIiLCJzaG93VG90YWwiLCJ0b3RhbCIsIl9yZWY0IiwiZnJvbSIsInRvIiwib25Sb3dGbiIsIm9uUm93IiwiY3VzdG9tIiwib25DbGlja0ZuIiwicm93Q2xhc3NOYW1lIiwibmV3RGF0YVNvdXJjZSIsImdldFNlYXJjaE1lbnVEYXRhcyIsInRyZWVEYXRhcyIsImV4cGFuZGVkUm93S2V5cyIsIm9wZW5LZXlzIiwiZHJhZ2FibGUiLCJkcmFnYWJsZVByb3BzIiwiY29tcG9uZW50cyIsInJlc2l6ZVByb3BzIiwidG9vbEZsYWciLCJ0b29scHJvcHMiLCJzaG93Iiwic2hvd1Jvd1NlbGVjdGlvbiIsInJvd1NlbGVjdGlvbiIsIm9uU2VsZWN0Iiwib25TZWxlY3RBbGwiLCJjb2x1bW5XaWR0aCIsInRhYmxlUHJvcHMiLCJjb25maWdUYWJsZVByb3BzIiwiRGVmYXVsdFRhYmxlIiwiX1RhYmxlIiwiX2V4dGVuZHMiLCJjaGlsZHJlbkNvbHVtbk5hbWUiLCJzaGVpdGVtIiwibG9jYWxlIiwiZW1wdHlUZXh0Iiwic2Nyb2xsIiwieCIsIl9QYWdpbmF0aW9uIiwicGFnZSIsImFjdGlvbiIsIl9yZWY1IiwiYmFja2VuZCIsImRyYWdVcmwiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9iYXNlL3RhYmxlL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBARGVzY3JpcHR0aW9uOlxyXG4gKiBAdmVyc2lvbjpcclxuICogQEF1dGhvcjogcnh6aHVcclxuICogQERhdGU6IDIwMjEtMDMtMjMgMDg6NDY6MjBcclxuICogQExhc3RFZGl0b3JzOiByeHpodVxyXG4gKiBATGFzdEVkaXRUaW1lOiAyMDIxLTAzLTIzIDEwOjMwOjQyXHJcbiAqL1xyXG5pbXBvcnQge1xyXG4gIEFwcHN0b3JlT3V0bGluZWQsXHJcbiAgQ2hlY2tPdXRsaW5lZCxcclxuICBDb2x1bW5IZWlnaHRPdXRsaW5lZCxcclxuICBTZWFyY2hPdXRsaW5lZCxcclxuICBTb3J0QXNjZW5kaW5nT3V0bGluZWQsXHJcbiAgU29ydERlc2NlbmRpbmdPdXRsaW5lZCxcclxuICBSZWRvT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCB7IGlzRW1wdHlPYmogfSBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFBhZ2VTdG9yZSwgU3RvcmVQcm9wcyB9IGZyb20gXCJAYmotbnNjL21zblwiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IHtcclxuICBCdXR0b24sXHJcbiAgQ2hlY2tib3gsXHJcbiAgQ2hlY2tib3hPcHRpb25UeXBlLFxyXG4gIE1lbnUsXHJcbiAgbWVzc2FnZSxcclxuICBQYWdpbmF0aW9uLFxyXG4gIFBvcG92ZXIsXHJcbiAgU3BhY2UsXHJcbiAgVGFibGUsXHJcbiAgVGFibGVQcm9wcyxcclxuICBUb29sdGlwLFxyXG59IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCB7IENvbHVtblR5cGUsIFRhYmxlUGFnaW5hdGlvbkNvbmZpZyB9IGZyb20gXCJhbnRkL2xpYi90YWJsZVwiO1xyXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgRG5kUHJvdmlkZXIgfSBmcm9tIFwicmVhY3QtZG5kXCI7XHJcbmltcG9ydCBCb2R5Um93LCB7IERuZENvbnRleHRUeXBlLCBJQm9keVJvd1Byb3BzIH0gZnJvbSBcIi4uL2NvbW1vbi9Cb2R5Um93XCI7XHJcbmltcG9ydCB0cmVlVXRpbHMgZnJvbSBcIi4uLy4uL3RyZWVVdGlsc1wiO1xyXG5pbXBvcnQgXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmNvbnN0IHsgQm9keVJvd0NvbXBvbmVudCwgSFRNTDVCYWNrZW5kIH0gPSBCb2R5Um93O1xyXG5pbXBvcnQgd2l0aFpoTG9jYWxlIGZyb20gXCIuLi9jb21tb24vd2l0aFpoTG9jYWxlXCI7XHJcbmltcG9ydCB7IFJlc2l6YWJsZSB9IGZyb20gXCJyZWFjdC1yZXNpemFibGVcIjtcclxuaW1wb3J0IFwiLi9yZXNpemUubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IHsgZ2V0TGVzcywgZ2V0Tm9kZSwgc2ltcGxpZnlDb2x1bW5zIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCBOb0RhdGEgZnJvbSBcIi4uLy4uL2Jhc2UvY29tbW9uL05vRGF0YVwiO1xyXG5pbXBvcnQgeyBnZXRTdG9yYWdlIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCBjb25maWcgZnJvbSBcIi4uLy4uL2NvbmZpZ1wiO1xyXG5pbXBvcnQgRWxsaXBzZUNlbGwgZnJvbSBcIi4uL2NvbW1vbi9FbGxpcHNlQ2VsbFwiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCBpc0VxdWFsIGZyb20gXCJsb2Rhc2gvaXNFcXVhbFwiO1xyXG5jb25zdCBzdHlsZXMgPSBudWxsO1xyXG5pbnRlcmZhY2UgSURyYWdQYXJhbXMge1xyXG4gIGlkOiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgaWRzOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+O1xyXG4gIHBhcmVudElkOiBzdHJpbmcgfCBudW1iZXI7XHJcbn1cclxuLy8gaW50ZXJmYWNlIFN0b3JlUHJvcHMge31cclxuXHJcbmV4cG9ydCB0eXBlIFN0b3JlVHlwZSA9IFwiUGFnZVN0b3JlXCIgfCBcIlRyZWVTdG9yZVwiIHwgXCJCYXNlU3RvcmVcIjtcclxuXHJcbmludGVyZmFjZSBOU0NUYWJsZVBhZ2luYXRpb24gZXh0ZW5kcyBUYWJsZVBhZ2luYXRpb25Db25maWcge1xyXG4gIHRvdGFsS2V5Pzogc3RyaW5nO1xyXG4gIHBhZ2VTaXplS2V5Pzogc3RyaW5nO1xyXG4gIGN1cnJlbnRLZXk/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBUb29sQmFyUHJvcHMge1xyXG4gIHNob3c6IGJvb2xlYW47XHJcbiAgdG9vbHM/OiBBcnJheTxzdHJpbmc+O1xyXG4gIG9uVG9vbENsaWNrPzogeyBvblJlZnJlc2g/OiBhbnk7IG9uU29ydD86IGFueSB9O1xyXG59XHJcbmludGVyZmFjZSBOU0NUYWJsZVByb3BzIGV4dGVuZHMgVGFibGVQcm9wczxhbnk+IHtcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgc2hvd1RvdGFsPzogYm9vbGVhbjsgLy8g5piv5ZCm5pi+56S65oC75p2h5pWw5L+h5oGv77yM6buY6K6kdHJ1ZVxyXG4gIGRyYWdhYmxlPzogYm9vbGVhbjsgLy8g5piv5ZCm5Y+v5ouW5YqoLCDpu5jorqRmYWxzZVxyXG4gIGZpbHRlckNvbHVtbj86IGJvb2xlYW47IC8vIOaYr+WQpuaUr+aMgei/h+a7pOaYvuekuuihqOagvOWIlywg6buY6K6kdHJ1ZVxyXG4gIG1vdmVSb3c/OiAocGFyYW1zOiBJRHJhZ1BhcmFtcykgPT4gdm9pZDsgLy8g5ouW5ou95a6M5oiQ5ZCO55qE5Zue6LCDXHJcbiAgZHJhZ1VybD86IHN0cmluZzsgLy8g5L+d5a2Y5ouW5ou95o6S5bqP55qE5o6l5Y+jXHJcbiAgcGFnaW5hdGlvbj86IGZhbHNlIHwgTlNDVGFibGVQYWdpbmF0aW9uO1xyXG4gIGF1dG9QYWdpbmF0aW9uPzogYm9vbGVhbjsgLy8g57uE5Lu25piv5ZCm6Ieq5Yqo5aSE55CG5YiG6aG1XHJcbiAgYXV0b1NvcnQ/OiBib29sZWFuOyAvL+e7hOS7tuaYr+WQpuiHquWKqOWkhOeQhuaOkuW6j1xyXG4gIGF1dG9PbkNoYW5nZT86IGJvb2xlYW47IC8vIOe7hOS7tuaYr+WQpuiHquWKqG9uQ2hhbmdlLCBmYWxzZeWImeS4jeWBmuS7u+S9leWkhOeQhuWFqOmDqOS6pOe7meiwg+eUqOaWuVxyXG4gIHJlc2l6ZUNvbHVtbj86IGJvb2xlYW47XHJcbiAgc29ydEZpZWxkcz86IEFycmF5PHN0cmluZz47IC8v6ZyA6KaB5o6S5bqP55qE5a2X5q61SW5kZXhcclxuICB0b29sYmFyPzogVG9vbEJhclByb3BzIHwgYm9vbGVhbjtcclxuICBhdXRvU2l6ZT86IGJvb2xlYW47XHJcbiAgc29ydFNlYXJjaD86IGJvb2xlYW47IC8v5piv5ZCm5re75Yqg5o6S5bqP5p+l6K+iLOm7mOiupHRydWVcclxuICBzaG93Um93U2VsZWN0aW9uPzogYm9vbGVhbjtcclxuICByb3dLZXk/OiBzdHJpbmc7XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBJTlNDVGFibGVQcm9wcyA9IHR5cGVvZiBOU0NUYWJsZS5kZWZhdWx0UHJvcHMgJiBOU0NUYWJsZVByb3BzO1xyXG5leHBvcnQgeyBEbmRDb250ZXh0VHlwZSwgSUJvZHlSb3dQcm9wcyB9O1xyXG5cclxuY29uc3QgUmVzaXplYWJsZVRpdGxlID0gKHByb3BzOiBhbnkpID0+IHtcclxuICBjb25zdCB7IG9uUmVzaXplLCB3aWR0aCwgLi4ucmVzdFByb3BzIH0gPSBwcm9wcztcclxuICByZXR1cm4gKFxyXG4gICAgPFJlc2l6YWJsZVxyXG4gICAgICB3aWR0aD17d2lkdGggfHwgMTUwfVxyXG4gICAgICBoZWlnaHQ9ezB9XHJcbiAgICAgIG9uUmVzaXplPXtvblJlc2l6ZX1cclxuICAgICAgZHJhZ2dhYmxlT3B0cz17eyBlbmFibGVVc2VyU2VsZWN0SGFjazogZmFsc2UgfX1cclxuICAgID5cclxuICAgICAgPHRoIHsuLi5yZXN0UHJvcHN9IC8+XHJcbiAgICA8L1Jlc2l6YWJsZT5cclxuICApO1xyXG59O1xyXG5jbGFzcyBOU0NUYWJsZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxJTlNDVGFibGVQcm9wcywgYW55PiB7XHJcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcclxuICAgIGRyYWdhYmxlOiBmYWxzZSxcclxuICAgIHNob3dUb3RhbDogdHJ1ZSxcclxuICAgIGZpbHRlckNvbHVtbjogdHJ1ZSxcclxuICAgIGRyYWdVcmw6IFwiXCIsXHJcbiAgICBhdXRvUGFnaW5hdGlvbjogdHJ1ZSxcclxuICAgIGF1dG9Tb3J0OiB0cnVlLFxyXG4gICAgYXV0b09uQ2hhbmdlOiB0cnVlLFxyXG4gICAgcmVzaXplQ29sdW1uOiB0cnVlLFxyXG4gICAgdG9vbGJhcjoge1xyXG4gICAgICBzaG93OiB0cnVlLFxyXG4gICAgICBvblRvb2xDbGljazoge30gYXMgYW55LFxyXG4gICAgfSBhcyBhbnksXHJcbiAgfTtcclxuXHJcbiAgc3RvcmUgPSB7fSBhcyBTdG9yZVByb3BzO1xyXG4gIHRoSWNvblJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxIVE1MRGl2RWxlbWVudD4oKTtcclxuICB0YWJsZVNlYXJjaFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcblxyXG4gIGxpc3RlbmVycyA9IHtcclxuICAgIG9uQmVmb3JlTG9hZDogbnVsbCxcclxuICAgIGxvYWQ6IG51bGwsXHJcbiAgfTtcclxuXHJcbiAgY29tcG9uZW50cyA9IHtcclxuICAgIGhlYWRlcjoge1xyXG4gICAgICBjZWxsOiBSZXNpemVhYmxlVGl0bGUsXHJcbiAgICB9LFxyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBsZXQgbW9kYWwgPSBwcm9wcy50eXBlIHx8IFwiYXV0b1wiO1xyXG4gICAgbGV0IHN0b3JlUHJlZml4ID0gZ2V0U3RvcmFnZShcInN0b3JlLXByZS1rZXlcIik7XHJcbiAgICBsZXQgYXV0b1R5cGUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCJ0YWJsZVNpemVcIiA6IFwidGFibGVTaXplXCJcclxuICAgICk7XHJcbiAgICBhdXRvVHlwZSA9IGF1dG9UeXBlPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgZGF0YVNvdXJjZTogW10sXHJcbiAgICAgIGNvbHVtbnM6IFtdLFxyXG4gICAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgICAgcGFnaW5hdGlvbjoge30sXHJcbiAgICAgIGFjdGl2ZUluZGV4OiAtMSxcclxuICAgICAgLy/mkJzntKLmlofmnKxcclxuICAgICAgc2VhcmNoVGV4dDogbnVsbCxcclxuICAgICAgZmllbGRPcHRpb246IG51bGwsXHJcbiAgICAgIHNlYXJjaENvbG9yOiBudWxsLFxyXG4gICAgICBjb2xzOiBbXSxcclxuICAgICAgc29ydHM6IFtdLFxyXG4gICAgICBmaWx0ZXJQYXJhbXM6IHt9LFxyXG4gICAgICB0YWJsZVNpemU6IHRoaXMucHJvcHMuc2l6ZSB8fCBhdXRvVHlwZSB8fCBcImRlZmF1bHRcIixcclxuICAgICAgc29ydFR5cGU6IFwic2luZ2xlXCIsXHJcbiAgICAgIHNvcnRlcjogW10sIC8v6K6w5b2V5b2T5YmN5o6S5bqP5a2X5q61XHJcbiAgICAgIHNvcnRJbmZvOiB7fSxcclxuICAgICAgZGVmYXVsdFNvcnQ6IHRydWUsXHJcbiAgICAgIGNoZWNrQ29sdW1uOiBbXSxcclxuICAgICAgZGVmYXVsdENoZWNrOiB0cnVlLFxyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IFtdLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBbXSxcclxuICAgICAgZmlsdGVyOiBbXSxcclxuICAgICAgZXh0cmE6IHt9LFxyXG4gICAgfTtcclxuICAgIGlmIChwcm9wcy5zdG9yZSBpbnN0YW5jZW9mIFN0b3JlKSB7XHJcbiAgICAgIHRoaXMuc3RvcmUgPSBwcm9wcy5zdG9yZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHsgbGlzdGVuZXJzOiBsaXN0ZW5lcnNQcm9wcyA9IHt9LCAuLi5yZXN0U3RvcmUgfSA9XHJcbiAgICAgICAgcHJvcHMuc3RvcmUgfHwge307XHJcbiAgICAgIGNvbnN0IHN0b3JlUHJvcHMgPSB7XHJcbiAgICAgICAgbW9kZWw6IFwibW9kZWxcIixcclxuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgbGlzdGVuZXJzOiB7XHJcbiAgICAgICAgICBvbkJlZm9yZUxvYWQ6IChzdG9yZSwgb3B0aW9ucykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMub25CZWZvcmVMb2FkLCB0aGlzLCBbc3RvcmUsIG9wdGlvbnNdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBkYXRhQ2hhbmdlZDogKGRhdGEsIG1vZGVsRGF0YSwgc3RvcmUpID0+IHtcclxuICAgICAgICAgICAgbGV0IHBhZ2luZyA9ICEodGhpcy5wcm9wcy5wYWdpbmF0aW9uID09PSBmYWxzZSk7XHJcbiAgICAgICAgICAgIGlmIChwYWdpbmcgJiYgIXRoaXMucHJvcHMuZGF0YVNvdXJjZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZTogbW9kZWxEYXRhLFxyXG4gICAgICAgICAgICAgICAgcGFnaW5hdGlvbjogc3RvcmUuZ2V0UGFnaW5hdGlvbigpLFxyXG4gICAgICAgICAgICAgICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBhY3RpdmVJbmRleDogLTEsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGRhdGFTb3VyY2U6IG1vZGVsRGF0YSwgbG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1Byb3BzLmRhdGFDaGFuZ2VkLCB0aGlzLCBbXHJcbiAgICAgICAgICAgICAgZGF0YSxcclxuICAgICAgICAgICAgICBtb2RlbERhdGEsXHJcbiAgICAgICAgICAgICAgc3RvcmUsXHJcbiAgICAgICAgICAgICAgcGFnaW5nLFxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBsb2FkOiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkgPT4ge1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQcm9wcy5sb2FkLCB0aGlzLCBbZGF0YSwgbW9kZWxEYXRhLCBzdG9yZV0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIG9uRXJyb3JMb2FkOiAoZXJyLCByZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1Byb3BzLm9uRXJyb3JMb2FkLCB0aGlzLCBbZXJyLCByZXNwb25zZV0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGRhdGE6IHJlc3RTdG9yZS5kYXRhXHJcbiAgICAgICAgICA/IHJlc3RTdG9yZS5kYXRhXHJcbiAgICAgICAgICA6IHByb3BzLmRhdGFTb3VyY2VcclxuICAgICAgICAgID8gcHJvcHMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgOiBudWxsLFxyXG4gICAgICAgIC4uLnJlc3RTdG9yZSxcclxuICAgICAgICBhdXRvTG9hZDogcmVzdFN0b3JlLmF1dG9Mb2FkID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZSxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5zdG9yZSA9IG5ldyBQYWdlU3RvcmUoXHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbih7fSwgc3RvcmVQcm9wcywge1xyXG4gICAgICAgICAgcGFnaW5hdGlvbjogeyBjdXJyZW50OiAxLCAuLi50aGlzLnByb3BzLnBhZ2luYXRpb24gfSxcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlUmVzaXplID1cclxuICAgIChpbmRleDogYW55KSA9PlxyXG4gICAgKGU6IGFueSwgeyBzaXplIH06IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNvbHMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgIGNvbnN0IG5leHRDb2x1bW5zID0gWy4uLmNvbHNdO1xyXG4gICAgICBuZXh0Q29sdW1uc1tpbmRleF0gPSB7XHJcbiAgICAgICAgLi4ubmV4dENvbHVtbnNbaW5kZXhdLFxyXG4gICAgICAgIHdpZHRoOiBzaXplLndpZHRoLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLnNldFN0YXRlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGNvbHM6IG5leHRDb2x1bW5zLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgLy8g5Zyo54q25oCB5pu05paw5ZCO6YeN5paw6I635Y+W5YiX6YWN572uXHJcbiAgICAgICAgICB0aGlzLmdldENvbHVtbnMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9O1xyXG5cclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGNvbnN0IHsgcmVzaXplQ29sdW1uIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKCFyZXNpemVDb2x1bW4pIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbHVtbnM6IFsuLi50aGlzLnByb3BzLmNvbHVtbnNdIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbHM6IFsuLi50aGlzLnByb3BzLmNvbHVtbnNdIH0pO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc3RvcmUgPSB0aGlzLnByb3BzLnN0b3JlO1xyXG4gICAgaWYgKHN0b3JlICYmIHN0b3JlLmRhdGEpIHtcclxuICAgICAgdGhpcy5zdG9yZS5zZXREYXRhKHN0b3JlLmRhdGEpO1xyXG4gICAgfVxyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIHRoaXMubGlzdGVuTWVzc2FnZSk7XHJcbiAgfVxyXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xyXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIHRoaXMubGlzdGVuTWVzc2FnZSk7XHJcbiAgfVxyXG4gIGxpc3Rlbk1lc3NhZ2UgPSAoZXYpID0+IHtcclxuICAgIGNvbnN0IGRhdGEgPSB0eXBlb2YgZXYuZGF0YSA9PT0gXCJzdHJpbmdcIiA/IEpTT04ucGFyc2UoZXYuZGF0YSkgOiBldi5kYXRhO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGlmIChkYXRhLmV2ZW50VHlwZSA9PSBcImNoYW5nZVRhYmxlU2l6ZVwiKSB7XHJcbiAgICAgIGNvbnN0IHsgcGF5bG9hZCB9ID0gZGF0YTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHBheWxvYWQuc2l6ZSA9PSBcImRlZmF1bHRcIiB8fFxyXG4gICAgICAgIHBheWxvYWQuc2l6ZSA9PSBcInNtYWxsXCIgfHxcclxuICAgICAgICBwYXlsb2FkLnNpemUgPT0gXCJtaWRkbGVcIlxyXG4gICAgICApIHtcclxuICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7IHRhYmxlU2l6ZTogcGF5bG9hZC5zaXplIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcywgcHJlU3RhdGUpIHtcclxuICAgIGNvbnN0IHsgcmVzaXplQ29sdW1uIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKCFyZXNpemVDb2x1bW4pIHtcclxuICAgICAgaWYgKHRoaXMucHJvcHMuY29sdW1ucyAhPT0gcHJldlByb3BzLmNvbHVtbnMpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgY29sdW1uczogdGhpcy5wcm9wcy5jb2x1bW5zIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAocHJlU3RhdGUuY29scyAhPT0gdGhpcy5zdGF0ZS5jb2xzKSB7XHJcbiAgICAgICAgdGhpcy5yZXNldENvbHVtbigpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnByb3BzLmNvbHVtbnMgIT09IHByZXZQcm9wcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICBjb2xzOiB0aGlzLnByb3BzLmNvbHVtbnMsXHJcbiAgICAgICAgICBjb2x1bW5zOiB0aGlzLnByb3BzLmNvbHVtbnMsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHByZXZQcm9wcy5zaXplICE9PSB0aGlzLnByb3BzLnNpemUpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgdGFibGVTaXplOiB0aGlzLnByb3BzLnNpemUgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcmVzZXRDb2x1bW4oKSB7XHJcbiAgICBjb25zdCB7IGNvbHMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBuZXdDb2xzOiBhbnkgPSBbXTtcclxuICAgIGxldCBjb2xzcyA9IGNvbHMgfHwgW107XHJcbiAgICBjb2xzcy5tYXAoKGNvbDogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGxldCB0ZW1wID0ge1xyXG4gICAgICAgIC4uLmNvbCxcclxuICAgICAgICBvbkhlYWRlckNlbGw6IChjb2x1bW46IHsgd2lkdGg6IGFueSB9KSA9PiAoe1xyXG4gICAgICAgICAgd2lkdGg6IGNvbHVtbi53aWR0aCxcclxuICAgICAgICAgIG9uUmVzaXplOiB0aGlzLmhhbmRsZVJlc2l6ZShpbmRleCksXHJcbiAgICAgICAgfSksXHJcbiAgICAgIH07XHJcbiAgICAgIG5ld0NvbHMucHVzaCh0ZW1wKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGNvbHVtbnM6IG5ld0NvbHMsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOa4hemZpOmAieS4reminOiJslxyXG4gICAqL1xyXG4gIGNsZWFyU2VsZWN0Q29sb3IoKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgYWN0aXZlSW5kZXg6IC0xIH0pO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBnZXRQYWdpbmF0aW9uQnlTdG9yZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlLmdldFBhZ2luYXRpb24oKTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlKHBhZ2luYXRpb24sIGZpbHRlcnMsIHNvcnRlciwgZXh0cmEpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgYXV0b09uQ2hhbmdlID0gdHJ1ZSxcclxuICAgICAgYXV0b1NvcnQsXHJcbiAgICAgIGF1dG9QYWdpbmF0aW9uLFxyXG4gICAgICBvbkNoYW5nZSxcclxuICAgICAgc3RvcmUsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgZmlsdGVyUGFyYW1zIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgaXNNdWx0aXBsZSA9IEFycmF5LmlzQXJyYXkoc29ydGVyKTtcclxuICAgIGlmIChhdXRvT25DaGFuZ2UgPT09IGZhbHNlIHx8ICFzdG9yZSkge1xyXG4gICAgICBvbkNoYW5nZSAmJiBvbkNoYW5nZShwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaGFuZGxlUGFnaW5hdGlvbiA9ICgpID0+IHtcclxuICAgICAgbGV0IHBhcmFtcyA9IHt9IGFzIHtcclxuICAgICAgICBzaXplPzogc3RyaW5nO1xyXG4gICAgICAgIHBhZ2VTaXplPzogc3RyaW5nO1xyXG4gICAgICAgIGFzY3M/OiBzdHJpbmc7XHJcbiAgICAgICAgZGVzY3M/OiBzdHJpbmc7XHJcbiAgICAgICAgW3Byb3BOYW1lOiBzdHJpbmddOiBzdHJpbmc7XHJcbiAgICAgIH07XHJcbiAgICAgIGNvbnN0IHBhZ2luZyA9IHRoaXMuZ2V0UGFnaW5hdGlvbkJ5U3RvcmUoKSB8fCB7fTtcclxuICAgICAgaWYgKCFpc0VtcHR5T2JqKHBhZ2luYXRpb24pKSB7XHJcbiAgICAgICAgY29uc3QgcCA9IHtcclxuICAgICAgICAgIFtwYWdpbmcuY3VycmVudEtleSB8fCBcImN1cnJlbnRcIl06IHBhZ2luYXRpb24uY3VycmVudCxcclxuICAgICAgICAgIFtwYWdpbmcucGFnZVNpemVLZXkgfHwgXCJzaXplXCJdOiBwYWdpbmF0aW9uLnBhZ2VTaXplLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbihwYXJhbXMsIHApO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBhc2NQYXJhbXMgPSB0aGlzLmdldFNvcnRQYXJhbShzb3J0ZXIsIHRydWUpO1xyXG4gICAgICBpZiAoaXNNdWx0aXBsZSkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzb3J0ZXIgfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoIWlzTXVsdGlwbGUgJiYgIWlzRW1wdHlPYmooc29ydGVyKSkge1xyXG4gICAgICAgIHNvcnRlci5jb2x1bW4gJiZcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzb3J0ZXI6IFtzb3J0ZXJdLCBkZWZhdWx0U29ydDogZmFsc2UgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNvcnRlcjogW10gfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgZmlsdGVycyxcclxuICAgICAgICBleHRyYSxcclxuICAgICAgfSk7XHJcbiAgICAgIHBhcmFtcyA9IHsgLi4uZmlsdGVyUGFyYW1zLCAuLi5wYXJhbXMsIC4uLmFzY1BhcmFtcyB9O1xyXG4gICAgICBhdXRvU29ydCAmJiB0aGlzLnN0b3JlLnJlbG9hZCh7IHBhcmFtcyB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgb25DaGFuZ2VGbiA9IHRoaXMucHJvcHMub25DaGFuZ2U7XHJcblxyXG4gICAgYXV0b1BhZ2luYXRpb24gJiYgaGFuZGxlUGFnaW5hdGlvbigpO1xyXG4gICAgLy8g55So5oi35Lyg5LqGb25DaGFuZ2Xkv53nlZnnlKjmiLfoh6rkuLvlpITnkIbooajmoLzlj5jljJbnmoTmnYPliptcclxuICAgIGlmIChvbkNoYW5nZUZuKSB7XHJcbiAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2hhbmdlRm4sIHRoaXMsIFtwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I635Y+W5pWw5o2u5qih5Z6L5a+56LGhXHJcbiAgICovXHJcbiAgZ2V0TW9kZWwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXRNb2RlbCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I+c5Y2V5pCc57Si6L+H5ruk5pi+56S6XHJcbiAgICogQHBhcmFtIHtTdHJpbmd9IHZhbFxyXG4gICAqL1xyXG4gIGhhbmRsZVNlYXJjaCh2YWwsIGZpZWxkT3B0aW9uLCBzZWFyY2hDb2xvcikge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlYXJjaFRleHQ6IHZhbCxcclxuICAgICAgZmllbGRPcHRpb246IGZpZWxkT3B0aW9uLFxyXG4gICAgICBzZWFyY2hDb2xvcjogc2VhcmNoQ29sb3IsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaooeWdl+WIl+ihqOenu+WKqOaOkuW6j1xyXG4gICAqL1xyXG4gIG1vdmVSb3cgPSAoZHJhZ0luZGV4LCBob3ZlckluZGV4LCBkcmFnLCB0YXJnZXQpID0+IHtcclxuICAgIGNvbnN0IF90aGlzID0gdGhpcztcclxuICAgIGxldCBkcmFnTm9kZSA9IGRyYWcucmVjb3JkO1xyXG4gICAgbGV0IHRhcmdldE5vZGUgPSB0YXJnZXQucmVjb3JkO1xyXG4gICAgZHJhZ05vZGUubW92ZUFycmF5KGRyYWdOb2RlLCB0YXJnZXROb2RlKTtcclxuICAgIGxldCBpZHMgPSBkcmFnTm9kZS5wYXJlbnROb2RlLmdldENoaWxkTm9kZUlkcygpO1xyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgaWQ6IGRyYWdOb2RlLmlkLFxyXG4gICAgICBwYXJlbnRJZDogZHJhZ05vZGUuYXR0cmlidXRlLnBhcmVudElkLFxyXG4gICAgICBpZHM6IGlkcyxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMucHJvcHMubW92ZVJvdykge1xyXG4gICAgICB0aGlzLnByb3BzLm1vdmVSb3cocGFyYW1zKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc3RvcmUucmVsb2FkKCk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgZmlsdGVyQ29sdW1uKGNoZWNrZWRWYWx1ZSkge1xyXG4gICAgaWYgKGNoZWNrZWRWYWx1ZS5sZW5ndGggPT0gMCkge1xyXG4gICAgICBtZXNzYWdlLndhcm5pbmcoXCLoh7PlsJHmmL7npLrkuIDliJfvvIFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZpbHRlckNvbHVtbnMgPSB0aGlzLnByb3BzLmNvbHVtbnMubWFwKChjb2w6IENvbHVtblR5cGU8e30+KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld0NvbCA9IHsgLi4uY29sIH0gYXMgQ29sdW1uVHlwZTx7fT4gJiB7IGluaXRTaG93OiBib29sZWFuIH07XHJcbiAgICAgIGlmIChjaGVja2VkVmFsdWUuaW5jbHVkZXMoY29sLmRhdGFJbmRleCkpIHtcclxuICAgICAgICBuZXdDb2wuaW5pdFNob3cgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld0NvbC5pbml0U2hvdyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBuZXdDb2w7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHsgcmVzaXplQ29sdW1uIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKCFyZXNpemVDb2x1bW4pIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgY29sdW1uczogZmlsdGVyQ29sdW1ucyxcclxuICAgICAgICBjaGVja0NvbHVtbjogY2hlY2tlZFZhbHVlLFxyXG4gICAgICAgIGRlZmF1bHRDaGVjazogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgY29sczogZmlsdGVyQ29sdW1ucyxcclxuICAgICAgICBjaGVja0NvbHVtbjogY2hlY2tlZFZhbHVlLFxyXG4gICAgICAgIGRlZmF1bHRDaGVjazogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRTb3J0UGFyYW0oc29ydGVyLCBzb3J0U3RhdGUgPSBmYWxzZSkge1xyXG4gICAgY29uc3QgaXNNdWx0aXBsZSA9IEFycmF5LmlzQXJyYXkoc29ydGVyKTtcclxuICAgIGNvbnN0IHsgc29ydFNlYXJjaCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXNvcnRTZWFyY2gpIHtcclxuICAgICAgcmV0dXJuIHt9O1xyXG4gICAgfVxyXG4gICAgbGV0IHNvcnRJbmZvID0ge307XHJcbiAgICBsZXQgb3JkZXJJdGVtcyA9IFtdO1xyXG4gICAgaWYgKCFpc0VtcHR5T2JqKHNvcnRlcikgJiYgIWlzTXVsdGlwbGUgJiYgc29ydGVyLmNvbHVtbikge1xyXG4gICAgICBvcmRlckl0ZW1zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGNvbHVtbjogc29ydGVyLmNvbHVtbi5maWVsZCB8fCBzb3J0ZXIuY29sdW1uLmRhdGFJbmRleCxcclxuICAgICAgICAgIGFzYzogc29ydGVyLm9yZGVyID09IFwiYXNjZW5kXCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgXTtcclxuICAgICAgaWYgKHNvcnRlci5jb2x1bW4pIHNvcnRJbmZvW3NvcnRlci5jb2x1bW4uZGF0YUluZGV4XSA9IHNvcnRlci5vcmRlcjtcclxuICAgIH0gZWxzZSBpZiAoaXNNdWx0aXBsZSkge1xyXG4gICAgICBzb3J0ZXIuZm9yRWFjaCgodikgPT4ge1xyXG4gICAgICAgIHNvcnRJbmZvW3YuY29sdW1uLmRhdGFJbmRleF0gPSB2Lm9yZGVyO1xyXG4gICAgICAgIGxldCBmaWVsZCA9IHYuY29sdW1uLmZpZWxkIHx8IHYuY29sdW1uLmRhdGFJbmRleDtcclxuICAgICAgICBvcmRlckl0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgY29sdW1uOiBmaWVsZCxcclxuICAgICAgICAgIGFzYzogdi5vcmRlciA9PSBcImFzY2VuZFwiLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChzb3J0U3RhdGUpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgc29ydEluZm86IHNvcnRJbmZvLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB7IG9yZGVySXRlbXM6IEpTT04uc3RyaW5naWZ5KG9yZGVySXRlbXMpIH07XHJcbiAgfVxyXG4gIGlzQmV5b25kKGUpIHtcclxuICAgIGNvbnN0IGV2ID0gd2luZG93LmV2ZW50IHx8IGU7IC8vIOa1j+iniOWZqOWFvOWuue+8jOacgOWlveWGmeS4gOS4i1xyXG4gICAgY29uc3QgdGV4dFJhbmdlID0gKGVsKSA9PiB7XHJcbiAgICAgIGNvbnN0IHRleHRDb250ZW50ID0gZWw7XHJcbiAgICAgIGNvbnN0IHRhcmdldFcgPSB0ZXh0Q29udGVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcclxuICAgICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xyXG4gICAgICByYW5nZS5zZXRTdGFydCh0ZXh0Q29udGVudCwgMCk7XHJcbiAgICAgIHJhbmdlLnNldEVuZCh0ZXh0Q29udGVudCwgdGV4dENvbnRlbnQuY2hpbGROb2Rlcy5sZW5ndGgpO1xyXG4gICAgICBjb25zdCByYW5nZVdpZHRoID0gcmFuZ2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XHJcbiAgICAgIHJldHVybiByYW5nZVdpZHRoID4gdGFyZ2V0VztcclxuICAgIH07XHJcbiAgICByZXR1cm4gIXRleHRSYW5nZShldi50YXJnZXQpOyAvLyB0YXJnZXTlj6/ku6Xkv53or4HlvZPliY3liJLov4fnmoRkb23oioLngrnkuIDnm7Tkv53mjIHmmK86ZWwtdG9vbHRpcF9fdHJpZ2dlclxyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0tleXMoZGF0YTogQXJyYXk8U3RyaW5nIHwgTnVtYmVyPikge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogZGF0YSxcclxuICAgIH0pO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0RhdGFzKGRhdGE6IEFycmF5PE9iamVjdD4pIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBkYXRhLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldENvbHVtbnMoKSB7XHJcbiAgICBjb25zdCB7IGNvbHVtbnMsIHNvcnRUeXBlLCBzb3J0SW5mbyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgc29ydEZpZWxkcyA9IFtdLCBzaXplID0gXCJsYXJnZVwiIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZGVmYXVsdFNob3dDb2xzID0gY29sdW1ucy5maWx0ZXIoKGNvbHMpID0+IGNvbHMuaW5pdFNob3cgIT09IGZhbHNlKTtcclxuICAgIGNvbnN0IGNvbHMgPSBkZWZhdWx0U2hvd0NvbHMubWFwKChjb2wsIGluZGV4KSA9PiB7XHJcbiAgICAgIC8vIOabv+aNoiBnZXRDb2x1bW5zIOaWueazleS4reWOn+adpeeahCBlbGxpcHNpcyDlpITnkIbpg6jliIZcclxuICAgICAgaWYgKGNvbC5lbGxpcHNpcyAmJiAhY29sLnJlbmRlcikge1xyXG4gICAgICAgIGNvbC5lbGxpcHNpcyA9IHtcclxuICAgICAgICAgIHNob3dUaXRsZTogZmFsc2UsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb2wucmVuZGVyID0gKHRleHQsIHJlY29yZCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIC8vIOiOt+WPluW9k+WJjeWIl+eahOWunuaXtuWuveW6plxyXG4gICAgICAgICAgY29uc3QgY3VycmVudENvbCA9IHRoaXMuc3RhdGUuY29scz8uZmluZCgoYykgPT4ge1xyXG4gICAgICAgICAgICAvLyDlpITnkIYgZGF0YUluZGV4IOWPr+iDveaYr+Wtl+espuS4suaIluaVsOe7hOeahOaDheWGtVxyXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjLmRhdGFJbmRleCkgJiYgQXJyYXkuaXNBcnJheShjb2wuZGF0YUluZGV4KSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShjLmRhdGFJbmRleCkgPT09IEpTT04uc3RyaW5naWZ5KGNvbC5kYXRhSW5kZXgpXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gYy5kYXRhSW5kZXggPT09IGNvbC5kYXRhSW5kZXg7XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICBjb25zdCBhY3R1YWxXaWR0aCA9IGN1cnJlbnRDb2w/LndpZHRoIHx8IGNvbC53aWR0aDtcclxuICAgICAgICAgIGxldCBjb2xXaWR0aDogYW55ID0gXCIxMDAlXCI7XHJcblxyXG4gICAgICAgICAgaWYgKGFjdHVhbFdpZHRoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLnN0YXRlLnRhYmxlU2l6ZSB8fCB0aGlzLnByb3BzLnNpemUgfHwgXCJkZWZhdWx0XCI7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbFdpZHRoT2JqID0ge1xyXG4gICAgICAgICAgICAgIHNtYWxsOiAxNixcclxuICAgICAgICAgICAgICBtaWRkbGU6IDE2LFxyXG4gICAgICAgICAgICAgIGRlZmF1bHQ6IDE2LFxyXG4gICAgICAgICAgICAgIGxhcmdlOiAzMixcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgY29uc3QgcGFkZGluZ1dpZHRoID0gY29sV2lkdGhPYmpbc2l6ZV0gfHwgMTY7XHJcblxyXG4gICAgICAgICAgICBpZiAoYWN0dWFsV2lkdGggPiBwYWRkaW5nV2lkdGgpIHtcclxuICAgICAgICAgICAgICBjb2xXaWR0aCA9IGFjdHVhbFdpZHRoIC0gcGFkZGluZ1dpZHRoO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNvbFdpZHRoID0gYWN0dWFsV2lkdGg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6IFwiaW5saW5lLXRhYmxlXCIsIHdpZHRoOiBcIjEwMCVcIiB9fT5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICByZWY9eyhlbCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoZWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyDmuIXpmaTkuYvliY3nmoR0aXRsZVxyXG4gICAgICAgICAgICAgICAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZShcInRpdGxlXCIpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyDmo4Dmn6XmlofmnKzmmK/lkKbmuqLlh7pcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZWwuc2Nyb2xsV2lkdGggPiBlbC5jbGllbnRXaWR0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKFwidGl0bGVcIiwgdGV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtdGV4dFwiKX1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiBjb2xXaWR0aCxcclxuICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IFwiaGlkZGVuXCIsXHJcbiAgICAgICAgICAgICAgICAgIHRleHRPdmVyZmxvdzogXCJlbGxpcHNpc1wiLFxyXG4gICAgICAgICAgICAgICAgICB3aGl0ZVNwYWNlOiBcIm5vd3JhcFwiLFxyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7dGV4dH1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHNvcnRGaWVsZHMuaW5kZXhPZihjb2wuZGF0YUluZGV4KSA+IC0xKSB7XHJcbiAgICAgICAgaWYgKHNvcnRUeXBlID09IFwic2luZ2xlXCIpIHtcclxuICAgICAgICAgIGNvbC5zb3J0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgY29sLnNvcnRPcmRlciA9IHNvcnRJbmZvW2NvbC5kYXRhSW5kZXhdXHJcbiAgICAgICAgICAgID8gc29ydEluZm9bY29sLmRhdGFJbmRleF1cclxuICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoc29ydFR5cGUgPT0gXCJtdWx0aXBsZVwiKSB7XHJcbiAgICAgICAgICBjb2wuc29ydGVyID0geyBtdWx0aXBsZTogaW5kZXggfTtcclxuICAgICAgICAgIGNvbC5zb3J0T3JkZXIgPSBzb3J0SW5mb1tjb2wuZGF0YUluZGV4XVxyXG4gICAgICAgICAgICA/IHNvcnRJbmZvW2NvbC5kYXRhSW5kZXhdXHJcbiAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGNvbDtcclxuICAgIH0pO1xyXG4gICAgY29scy5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmICghaXNFbXB0eU9iaihpdGVtLmZpbHRlclByb3BzKSkge1xyXG4gICAgICAgIGxldCBvYmogPSB7IC4uLml0ZW0gfTtcclxuICAgICAgICBjb25zdCB7IHR5cGUsIHByb3BzLCBzZWFyY2hLZXkgfSA9IGl0ZW0uZmlsdGVyUHJvcHM7XHJcbiAgICAgICAgbGV0IERpdiA9IG51bGw7XHJcbiAgICAgICAgbGV0IHRleHQgPSBpdGVtLnRpdGxlO1xyXG4gICAgICAgIERpdiA9IGdldE5vZGUodHlwZSwge1xyXG4gICAgICAgICAgcGxhY2Vob2xkZXI6IGDmkJzntKIke3RleHR9YCxcclxuICAgICAgICAgIC4uLnByb3BzLFxyXG4gICAgICAgICAgcmVmOiB0aGlzLnRhYmxlU2VhcmNoUmVmLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG9iaiA9IHtcclxuICAgICAgICAgIGZpbHRlckRyb3Bkb3duOiAoe1xyXG4gICAgICAgICAgICBzZXRTZWxlY3RlZEtleXMsXHJcbiAgICAgICAgICAgIHNlbGVjdGVkS2V5cyxcclxuICAgICAgICAgICAgY29uZmlybSxcclxuICAgICAgICAgICAgY2xlYXJGaWx0ZXJzLFxyXG4gICAgICAgICAgfSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtc2VhcmNoXCIpfT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtc2VhcmNoLXNwYWNlXCIpfT5cclxuICAgICAgICAgICAgICAgICAge0Rpdn1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPFNwYWNlPlxyXG4gICAgICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm0oKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZmlsdGVyUGFyYW1zIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld0ZpbHRlclBhcmFtcyA9IHsgLi4uZmlsdGVyUGFyYW1zIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQga2V5ID0gaXRlbS5maWVsZCB8fCBpdGVtLmRhdGFJbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgIG5ld0ZpbHRlclBhcmFtc1trZXldID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZVNlYXJjaFJlZi5jdXJyZW50Py5nZXRWYWx1ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtczogeyAuLi5uZXdGaWx0ZXJQYXJhbXMgfSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc29ydFBhcmFtID0gdGhpcy5nZXRTb3J0UGFyYW0odGhpcy5zdGF0ZS5zb3J0ZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5sb2FkKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IC4uLm5ld0ZpbHRlclBhcmFtcywgLi4uc29ydFBhcmFtIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtc2VhcmNoLWJ1dHRvblwiKX1cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIOafpeivolxyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvU3BhY2U+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZmlsdGVySWNvbjogKCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gPFNlYXJjaE91dGxpbmVkIC8+O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLm9iaixcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbHNbaW5kZXhdID0gb2JqO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBjb2xzO1xyXG4gIH1cclxuICByZW5kZXJUb29sQmFyKCkge1xyXG4gICAgbGV0IHsgdGFibGVTaXplLCBjb2x1bW5zLCBzb3J0VHlwZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCB7IGZpbHRlckNvbHVtbiwgY29sdW1uczogY29sTGlzdHMsIHRvb2xiYXIgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHRhYmxlVG9vbCwgc3RvcmVSZXF1ZXN0Q29uZmlnID0ge30gfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHRvb2xzID0gW1wicmVmcmVzaFwiLCBcInNpemVcIiwgXCJzb3J0XCIsIFwiY29sdW1uXCJdO1xyXG4gICAgbGV0IHRvb2xzQ2xpY2sgPSB7fSBhcyBhbnk7XHJcbiAgICBpZiAodG9vbGJhciA9PSB0cnVlKSB7XHJcbiAgICAgIHRvb2xzID0gdG9vbGJhci5vblRvb2xDbGlja1xyXG4gICAgICAgID8gdG9vbGJhci5vblRvb2xDbGlja1xyXG4gICAgICAgIDogW1wicmVmcmVzaFwiLCBcInNpemVcIiwgXCJzb3J0XCIsIFwiY29sdW1uXCJdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdG9vbHMgPSB0b29sYmFyLnRvb2xzXHJcbiAgICAgICAgPyB0b29sYmFyLnRvb2xzXHJcbiAgICAgICAgOiB0YWJsZVRvb2wudG9vbHNcclxuICAgICAgICA/IHRhYmxlVG9vbC50b29sc1xyXG4gICAgICAgIDogdG9vbHM7XHJcbiAgICAgIHRvb2xzQ2xpY2sgPSB0b29sYmFyLm9uVG9vbENsaWNrID8gdG9vbGJhci5vblRvb2xDbGljayA6IHt9O1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc2l6ZUl0ZW0gPSBbXHJcbiAgICAgIHsgdGl0bGU6IFwi5a695p2+XCIsIGtleTogXCJkZWZhdWx0XCIgfSxcclxuICAgICAgeyB0aXRsZTogXCLkuK3nrYlcIiwga2V5OiBcIm1pZGRsZVwiIH0sXHJcbiAgICAgIHsgdGl0bGU6IFwi57Sn5YeRXCIsIGtleTogXCJzbWFsbFwiIH0sXHJcbiAgICBdO1xyXG4gICAgY29uc3Qgc29ydEl0ZW0gPSBbXHJcbiAgICAgIHsgdGl0bGU6IFwi5Y2V5a2X5q615o6S5bqPXCIsIGtleTogXCJzaW5nbGVcIiB9LFxyXG4gICAgICB7IHRpdGxlOiBcIuWkmuWtl+auteaOkuW6j1wiLCBrZXk6IFwibXVsdGlwbGVcIiB9LFxyXG4gICAgXTtcclxuICAgIGNvbnN0IHNvcnRDb250ZW50ID0gKFxyXG4gICAgICA8PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLWNvdGVudC10aXRsZVwiKX1cclxuICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgIGN1cnNvcjogdGhpcy5zdGF0ZS5kZWZhdWx0U29ydCA/IFwibm90LWFsbG93ZWRcIiA6IFwicG9pbnRlclwiLFxyXG4gICAgICAgICAgICBjb2xvcjogdGhpcy5zdGF0ZS5kZWZhdWx0U29ydCAmJiBcInJnYmEoMCwwLDAsLjQ1KVwiLFxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc3RhdGUuZGVmYXVsdFNvcnQpIHtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNvcnRlcjogW10sIHNvcnRJbmZvOiB7fSwgZGVmYXVsdFNvcnQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgLi4udGhpcy5zdGF0ZS5maWx0ZXJQYXJhbXMgfTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5yZWxvYWQoeyBwYXJhbXMgfSk7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIOaBouWkjem7mOiupOaOkuW6j1xyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIHtzb3J0SXRlbS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAga2V5PXtpdGVtLmtleX1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgc29ydGVyOiBbXSxcclxuICAgICAgICAgICAgICAgICAgc29ydEluZm86IHt9LFxyXG4gICAgICAgICAgICAgICAgICBzb3J0VHlwZTogaXRlbS5rZXksXHJcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHRTb3J0OiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0geyAuLi50aGlzLnN0YXRlLmZpbHRlclBhcmFtcyB9O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5yZWxvYWQoeyBwYXJhbXMgfSk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHtzb3J0VHlwZSA9PSBpdGVtLmtleSA/IChcclxuICAgICAgICAgICAgICAgIDxhPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLWNvbnRlbnQtdGllbVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7c29ydFR5cGUgPT0gaXRlbS5rZXkgJiYgPENoZWNrT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLWNvbnRlbnQtdGllbVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IDIwIH19PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PiB7aXRlbS50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9KX1cclxuICAgICAgICB7dGhpcy5zdGF0ZS5zb3J0ZXIubGVuZ3RoID4gMCAmJiAoXHJcbiAgICAgICAgICA8PlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtY290ZW50LXRpdGxlXCIpfVxyXG4gICAgICAgICAgICAgIHN0eWxlPXt7IGNvbG9yOiBcInJnYmEoMCwwLDAsLjQ1KVwiIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICDlvZPliY3mjpLluo9cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIHt0aGlzLnN0YXRlLnNvcnRlci5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtY29udGVudC10aWVtXCIpfVxyXG4gICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT5cclxuICAgICAgICAgICAgICAgICAgICB7aXRlbS5vcmRlciA9PSBcImFzY2VuZFwiID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgPFNvcnRBc2NlbmRpbmdPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICA8U29ydERlc2NlbmRpbmdPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PiB7aXRlbS5jb2x1bW4udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgIDwvPlxyXG4gICAgICAgICl9XHJcbiAgICAgIDwvPlxyXG4gICAgKTtcclxuICAgIGNvbnN0IHNpemVDb250ZW50ID0gKFxyXG4gICAgICA8PlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtY290ZW50LXRpdGxlXCIpfT5cclxuICAgICAgICAgIOihqOagvOWvhuW6plxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIHtzaXplSXRlbS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAga2V5PXtpdGVtLmtleX1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgdGFibGVTaXplOiBpdGVtLmtleSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7dGFibGVTaXplID09IGl0ZW0ua2V5ID8gKFxyXG4gICAgICAgICAgICAgICAgPGE+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtY29udGVudC10aWVtXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT5cclxuICAgICAgICAgICAgICAgICAgICAgIHt0YWJsZVNpemUgPT0gaXRlbS5rZXkgJiYgPENoZWNrT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLWNvbnRlbnQtdGllbVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IDIwIH19PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PiB7aXRlbS50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9KX1cclxuICAgICAgPC8+XHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IGRlZmF1bHRTaG93Q29scyA9IGNvbHVtbnMuZmlsdGVyKChjb2xzKSA9PiBjb2xzLmluaXRTaG93ICE9PSBmYWxzZSk7XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IChcclxuICAgICAgPENoZWNrYm94Lkdyb3VwXHJcbiAgICAgICAgb25DaGFuZ2U9e3RoaXMuZmlsdGVyQ29sdW1uLmJpbmQodGhpcyl9XHJcbiAgICAgICAgb3B0aW9ucz17Y29sTGlzdHMubWFwKFxyXG4gICAgICAgICAgKGNvbDogQ29sdW1uVHlwZTx7fT4gJiB7IGZpbHRlckNvbHVtbjogYm9vbGVhbjsgZGF0YUluZGV4OiBhbnkgfSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWNvbC5kYXRhSW5kZXgpIHtcclxuICAgICAgICAgICAgICBjb2wuZGF0YUluZGV4ID0gY29sLnRpdGxlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgbGFiZWw6IGNvbC50aXRsZSxcclxuICAgICAgICAgICAgICB2YWx1ZTogY29sLmRhdGFJbmRleCxcclxuICAgICAgICAgICAgICBkaXNhYmxlZDogY29sLmZpbHRlckNvbHVtbiA9PT0gZmFsc2UsXHJcbiAgICAgICAgICAgIH0gYXMgQ2hlY2tib3hPcHRpb25UeXBlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICl9XHJcbiAgICAgICAgLy8gZGVmYXVsdFZhbHVlPXtkZWZhdWx0U2hvd0NvbHMubWFwKChjb2wpID0+IGNvbC5kYXRhSW5kZXgpfVxyXG4gICAgICAgIHZhbHVlPXtcclxuICAgICAgICAgIHRoaXMuc3RhdGUuZGVmYXVsdENoZWNrXHJcbiAgICAgICAgICAgID8gZGVmYXVsdFNob3dDb2xzLm1hcCgoY29sKSA9PiBjb2wuZGF0YUluZGV4KVxyXG4gICAgICAgICAgICA6IHRoaXMuc3RhdGUuY2hlY2tDb2x1bW5cclxuICAgICAgICB9XHJcbiAgICAgID48L0NoZWNrYm94Lkdyb3VwPlxyXG4gICAgKTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtdG9vbC1iYXJcIil9PlxyXG4gICAgICAgIHt0b29scy5pbmRleE9mKFwiY29sdW1uXCIpID4gLTEgJiYgKFxyXG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBmb250U2l6ZTogMTQgfX0+XHJcbiAgICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgICAgdGl0bGU9XCLpgInmi6nmmL7npLrnmoTliJdcIlxyXG4gICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tUmlnaHRcIlxyXG4gICAgICAgICAgICAgIHRyaWdnZXI9XCJjbGlja1wiXHJcbiAgICAgICAgICAgICAgb3ZlcmxheVN0eWxlPXt7IG1pbldpZHRoOiA0MTAsIG1heFdpZHRoOiA0NTAgfX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxBcHBzdG9yZU91dGxpbmVkXHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS10aC1hcHAtc3RvcmUtaWNvblwiKX1cclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIHt0b29scy5pbmRleE9mKFwic29ydFwiKSA+IC0xICYmIChcclxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgbWFyZ2luUmlnaHQ6IDgsIGZvbnRTaXplOiAxNCB9fT5cclxuICAgICAgICAgICAgPFBvcG92ZXIgcGxhY2VtZW50PVwiYm90dG9tXCIgY29udGVudD17c29ydENvbnRlbnR9IHRyaWdnZXI9XCJjbGlja1wiPlxyXG4gICAgICAgICAgICAgIDxTb3J0QXNjZW5kaW5nT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICB7dG9vbHMuaW5kZXhPZihcInNpemVcIikgPiAtMSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IHN0eWxlPXt7IG1hcmdpblJpZ2h0OiA4LCBmb250U2l6ZTogMTQgfX0+XHJcbiAgICAgICAgICAgIDxQb3BvdmVyIHBsYWNlbWVudD1cImJvdHRvbVwiIGNvbnRlbnQ9e3NpemVDb250ZW50fSB0cmlnZ2VyPVwiY2xpY2tcIj5cclxuICAgICAgICAgICAgICA8Q29sdW1uSGVpZ2h0T3V0bGluZWQgLz5cclxuICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICB7dG9vbHMuaW5kZXhPZihcInJlZnJlc2hcIikgPiAtMSAmJiAoXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIHN0eWxlPXt7IG1hcmdpblJpZ2h0OiA4LCBmb250U2l6ZTogMTQsIGN1cnNvcjogXCJwb2ludGVyXCIgfX1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgLi4udGhpcy5zdGF0ZS5maWx0ZXJQYXJhbXMgfTtcclxuICAgICAgICAgICAgICBpZiAodG9vbHNDbGljay5vblJlZnJlc2gpIHtcclxuICAgICAgICAgICAgICAgIHRvb2xzQ2xpY2sub25SZWZyZXNoKCk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUubG9hZCh7IHBhcmFtcyB9KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxSZWRvT3V0bGluZWQgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuc2VsZWN0ZWRSb3dLZXlzO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0RhdGFzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuc2VsZWN0ZWRSb3dEYXRhcztcclxuICB9XHJcbiAgcmVzZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgcm93U2VsZWN0aW9uT25TZWxlY3QocmVjb3JkOiBhbnksIHNlbGVjdGVkOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgc2VsZWN0ZWRSb3dLZXlzLCBzZWxlY3RlZFJvd0RhdGFzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IHsgcm93S2V5ID0gXCJpZFwiIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IG5ld1NlbGVjdGVkUm93S2V5cyA9IFsuLi5zZWxlY3RlZFJvd0tleXNdO1xyXG4gICAgbGV0IG5ld1NlbGVjdGVkUm93RGF0YXMgPSBbLi4uc2VsZWN0ZWRSb3dEYXRhc107XHJcbiAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAgbmV3U2VsZWN0ZWRSb3dLZXlzID0gWy4uLm5ld1NlbGVjdGVkUm93S2V5cywgcmVjb3JkW3Jvd0tleV1dO1xyXG4gICAgICBuZXdTZWxlY3RlZFJvd0RhdGFzID0gWy4uLm5ld1NlbGVjdGVkUm93RGF0YXMsIHJlY29yZF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoaXRlbSA9PT0gcmVjb3JkW3Jvd0tleV0pIHtcclxuICAgICAgICAgIG5ld1NlbGVjdGVkUm93S2V5cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoaXRlbVtyb3dLZXldID09PSByZWNvcmRbcm93S2V5XSkge1xyXG4gICAgICAgICAgbmV3U2VsZWN0ZWRSb3dEYXRhcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBuZXdTZWxlY3RlZFJvd0tleXMsXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IG5ld1NlbGVjdGVkUm93RGF0YXMsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgcm93U2VsZWN0aW9uT25TZWxlY3RBbGwoc2VsZWN0ZWQ6IGFueSwgc2VsZWN0ZWRSb3dzOiBhbnksIGNoYW5nZVJvd3M6IGFueSkge1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZFJvd0tleXMsIHNlbGVjdGVkUm93RGF0YXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBuZXdpZHM6IGFueSA9IFtdO1xyXG4gICAgbGV0IG5ld2RhdGFzOiBhbnkgPSBbXTtcclxuICAgIGlmIChjaGFuZ2VSb3dzLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGNoYW5nZUlkcyA9IGNoYW5nZVJvd3MubWFwKChpdGVtOiBhbnkpID0+IGl0ZW1bcm93S2V5XSk7XHJcbiAgICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICAgIG5ld2lkcyA9IFsuLi5zZWxlY3RlZFJvd0tleXMsIC4uLmNoYW5nZUlkc107XHJcbiAgICAgICAgbmV3ZGF0YXMgPSBbLi4uc2VsZWN0ZWRSb3dEYXRhcywgLi4uY2hhbmdlUm93c107XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc2VsZWN0ZWRSb3dLZXlzLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoY2hhbmdlSWRzLmluZGV4T2YoaXRlbSkgPT0gLTEpIHtcclxuICAgICAgICAgICAgbmV3aWRzLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgc2VsZWN0ZWRSb3dEYXRhcy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNoYW5nZUlkcy5pbmRleE9mKGl0ZW1bcm93S2V5XSkgPT0gLTEpIHtcclxuICAgICAgICAgICAgbmV3ZGF0YXMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV3aWRzID0gWy4uLnNlbGVjdGVkUm93S2V5c107XHJcbiAgICAgIG5ld2RhdGFzID0gWy4uLnNlbGVjdGVkUm93RGF0YXNdO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogWy4uLm5ld2lkc10sXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IFsuLi5uZXdkYXRhc10sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcyxcclxuICAgICAge1xyXG4gICAgICAgIGxvYWRpbmcsXHJcbiAgICAgICAgZGF0YVNvdXJjZSxcclxuICAgICAgICBwYWdpbmF0aW9uID0ge30sXHJcbiAgICAgICAgc2VhcmNoVGV4dCxcclxuICAgICAgICBmaWVsZE9wdGlvbixcclxuICAgICAgICBzZWFyY2hDb2xvcixcclxuICAgICAgICB0YWJsZVNpemUsXHJcbiAgICAgIH0gPSB0aGlzLnN0YXRlLFxyXG4gICAgICBwcm9wcyA9IHV0aWxzLm9taXQoXHJcbiAgICAgICAgdGhpcy5wcm9wcyxcclxuICAgICAgICBbXHJcbiAgICAgICAgICBcInN0b3JlXCIsXHJcbiAgICAgICAgICBcIm9uQ2hhbmdlXCIsXHJcbiAgICAgICAgICBcImNvbHVtbnNcIixcclxuICAgICAgICAgIFwicmVzZXRDb2x1bW5cIixcclxuICAgICAgICAgIFwidG9vbGJhclwiLFxyXG4gICAgICAgICAgXCJzb3J0RmllbGRzXCIsXHJcbiAgICAgICAgICBcImZpbHRlckNvbHVtblwiLFxyXG4gICAgICAgICAgXCJzb3J0U2VhcmNoXCIsXHJcbiAgICAgICAgICBcInNob3dSb3dTZWxlY3Rpb25cIixcclxuICAgICAgICAgIFwicGFnZVR5cGVcIixcclxuICAgICAgICBdLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHJvd0tleTogXCJpZFwiLFxyXG4gICAgICAgICAgY2xpY2tDaGFuZ2VDb2xvcjogZmFsc2UsXHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgaWYgKHByb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlKSB7XHJcbiAgICAgIHByb3BzLnBhZ2luYXRpb24gPSB7XHJcbiAgICAgICAgcG9zaXRpb246IFtcImJvdHRvbVJpZ2h0XCJdLFxyXG4gICAgICAgIHNob3dTaXplQ2hhbmdlcjogdHJ1ZSxcclxuICAgICAgICBzaG93UXVpY2tKdW1wZXI6IHRydWUsXHJcbiAgICAgICAgLi4ucGFnaW5hdGlvbixcclxuICAgICAgICAuLi5wcm9wcy5wYWdpbmF0aW9uLFxyXG4gICAgICB9O1xyXG4gICAgICBpZiAocHJvcHMuc2hvd1RvdGFsID09IHRydWUpIHtcclxuICAgICAgICBwcm9wcy5wYWdpbmF0aW9uLnNob3dUb3RhbCA9IGZ1bmN0aW9uICh0b3RhbCwgW2Zyb20sIHRvXSkge1xyXG4gICAgICAgICAgLy8gcmV0dXJuIFwi5pi+56S6IFwiICsgZnJvbSArIFwiIC0gXCIgKyB0byArIFwi5p2h77yM5YWxIFwiICsgdG90YWwgKyBcIiDmnaFcIjtcclxuICAgICAgICAgIHJldHVybiBcIuWFsSBcIiArIHRvdGFsICsgXCIg5p2hXCI7XHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJvcHMub25DaGFuZ2UgPSBmdW5jdGlvbiAocGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSkge1xyXG4gICAgICBfdGhpcy5vbkNoYW5nZShfdGhpcy5zdGF0ZS5wYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKTtcclxuICAgIH07XHJcbiAgICBpZiAocHJvcHMuY2xpY2tDaGFuZ2VDb2xvcikge1xyXG4gICAgICBjb25zdCBvblJvd0ZuID0gcHJvcHMub25Sb3c7XHJcbiAgICAgIHByb3BzLm9uUm93ID0gZnVuY3Rpb24gKHJlY29yZCwgaW5kZXgpIHtcclxuICAgICAgICB2YXIgY3VzdG9tID0gb25Sb3dGbiA/IG9uUm93Rm4ocmVjb3JkLCBpbmRleCkgOiB7fTtcclxuICAgICAgICBjb25zdCBvbkNsaWNrRm4gPSBjdXN0b20ub25DbGljaztcclxuICAgICAgICBjdXN0b20ub25DbGljayA9IChldmVudCkgPT4ge1xyXG4gICAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICBhY3RpdmVJbmRleDogaW5kZXgsIC8v6I635Y+W54K55Ye76KGM55qE57Si5byVXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2xpY2tGbiwgX3RoaXMsIFtldmVudF0pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIGN1c3RvbTtcclxuICAgICAgfTtcclxuICAgICAgcHJvcHMucm93Q2xhc3NOYW1lID0gZnVuY3Rpb24gKHJlY29yZCwgaW5kZXgpIHtcclxuICAgICAgICByZXR1cm4gaW5kZXggPT09IF90aGlzLnN0YXRlLmFjdGl2ZUluZGV4XHJcbiAgICAgICAgICA/IFwibnNjLXRhYmxlLWNsaWNrUm93U3R5bGVcIlxyXG4gICAgICAgICAgOiBcIlwiO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgbGV0IG5ld0RhdGFTb3VyY2UgPSBbXTtcclxuICAgIGlmIChzZWFyY2hUZXh0KSB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSB0cmVlVXRpbHMuZ2V0U2VhcmNoTWVudURhdGFzKFxyXG4gICAgICAgIHRoaXMsXHJcbiAgICAgICAgc2VhcmNoVGV4dCxcclxuICAgICAgICBmaWVsZE9wdGlvbixcclxuICAgICAgICBzZWFyY2hDb2xvclxyXG4gICAgICApO1xyXG4gICAgICBuZXdEYXRhU291cmNlID0gZGF0YS50cmVlRGF0YXM7XHJcbiAgICAgIHByb3BzLmV4cGFuZGVkUm93S2V5cyA9IGRhdGEub3BlbktleXM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBuZXdEYXRhU291cmNlID0gZGF0YVNvdXJjZTtcclxuICAgIH1cclxuICAgIHByb3BzLnN0b3JlID0gcHJvcHMuc3RvcmUgfHwge307XHJcbiAgICBwcm9wcy5zdG9yZS5hdXRvTG9hZCA9IHByb3BzLnN0b3JlLmF1dG9Mb2FkID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZTtcclxuICAgIGNvbnN0IHsgZHJhZ2FibGUgfSA9IF90aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZHJhZ2FibGVQcm9wcyA9XHJcbiAgICAgIGRyYWdhYmxlID09PSB0cnVlXHJcbiAgICAgICAgPyB7XHJcbiAgICAgICAgICAgIGNvbXBvbmVudHM6IEJvZHlSb3dDb21wb25lbnQsXHJcbiAgICAgICAgICAgIG9uUm93OiAocmVjb3JkLCBpbmRleCkgPT4gKHtcclxuICAgICAgICAgICAgICBpbmRleCxcclxuICAgICAgICAgICAgICByZWNvcmQsXHJcbiAgICAgICAgICAgICAgbW92ZVJvdzogdGhpcy5tb3ZlUm93LFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgIH1cclxuICAgICAgICA6IHt9O1xyXG4gICAgbGV0IHsgcmVzaXplQ29sdW1uIH0gPSB0aGlzLnByb3BzO1xyXG5cclxuICAgIGNvbnN0IHJlc2l6ZVByb3BzID1cclxuICAgICAgcmVzaXplQ29sdW1uID09PSB0cnVlID8geyBjb21wb25lbnRzOiB0aGlzLmNvbXBvbmVudHMgfSA6IG51bGw7XHJcbiAgICBjb25zdCB7IHRhYmxlVG9vbCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdG9vbEZsYWcgPSB0cnVlO1xyXG4gICAgbGV0IHRvb2xwcm9wcyA9XHJcbiAgICAgIHRoaXMucHJvcHMudG9vbGJhciA9PT0gZmFsc2UgfHwgdGhpcy5wcm9wcy50b29sYmFyPy5zaG93ID09PSBmYWxzZVxyXG4gICAgICAgID8gZmFsc2VcclxuICAgICAgICA6IHRydWU7XHJcbiAgICBpZiAoIXRvb2xwcm9wcykge1xyXG4gICAgICB0b29sRmxhZyA9IHRvb2xwcm9wcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRvb2xGbGFnID0gdGFibGVUb29sLnNob3cgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucHJvcHMuc2hvd1Jvd1NlbGVjdGlvbikge1xyXG4gICAgICBjb25zdCB7IHJvd1NlbGVjdGlvbiA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICBwcm9wcyA9IHtcclxuICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICByb3dTZWxlY3Rpb246IHtcclxuICAgICAgICAgIHNlbGVjdGVkUm93S2V5czogdGhpcy5zdGF0ZS5zZWxlY3RlZFJvd0tleXMsXHJcbiAgICAgICAgICBvblNlbGVjdDogdGhpcy5yb3dTZWxlY3Rpb25PblNlbGVjdC5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgb25TZWxlY3RBbGw6IHRoaXMucm93U2VsZWN0aW9uT25TZWxlY3RBbGwuYmluZCh0aGlzKSxcclxuICAgICAgICAgIGNvbHVtbldpZHRoOiA0MCxcclxuICAgICAgICAgIC4uLnJvd1NlbGVjdGlvbixcclxuICAgICAgICB9LFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyB0YWJsZVByb3BzOiBjb25maWdUYWJsZVByb3BzIH0gPSBjb25maWcoKTtcclxuICAgIGNvbnN0IERlZmF1bHRUYWJsZSA9IChcclxuICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZVwiKX0+XHJcbiAgICAgICAge3Rvb2xGbGFnICYmIHRoaXMucmVuZGVyVG9vbEJhcigpfVxyXG4gICAgICAgIDxUYWJsZVxyXG4gICAgICAgICAgY2hpbGRyZW5Db2x1bW5OYW1lPVwiY2hpbGROb2Rlc1wiXHJcbiAgICAgICAgICBzaGVpdGVtXHJcbiAgICAgICAgICBkYXRhU291cmNlPXtuZXdEYXRhU291cmNlfVxyXG4gICAgICAgICAgY29sdW1ucz17dGhpcy5nZXRDb2x1bW5zKCl9XHJcbiAgICAgICAgICBsb2FkaW5nPXtsb2FkaW5nfVxyXG4gICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLWNvbnRlbnRcIiksIHByb3BzLmNsYXNzTmFtZSl9XHJcbiAgICAgICAgICBsb2NhbGU9e3tcclxuICAgICAgICAgICAgZW1wdHlUZXh0OiAoXHJcbiAgICAgICAgICAgICAgPE5vRGF0YSBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1ub2RhdGFcIil9IC8+XHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgc2Nyb2xsPXt7IHg6IFwibWF4LWNvbnRlbnRcIiB9fVxyXG4gICAgICAgICAgey4uLmNvbmZpZ1RhYmxlUHJvcHN9XHJcbiAgICAgICAgICB7Li4ucmVzaXplUHJvcHN9XHJcbiAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgICB7Li4uZHJhZ2FibGVQcm9wc31cclxuICAgICAgICAgIHNpemU9e3RhYmxlU2l6ZX1cclxuICAgICAgICAgIHBhZ2luYXRpb249e2ZhbHNlfVxyXG4gICAgICAgICAgLy8gc3R5bGU9e3sgaGVpZ2h0OiA2MDAgfX1cclxuICAgICAgICAvPlxyXG4gICAgICAgIHtwcm9wcy5wYWdpbmF0aW9uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLXBhZ2luYXRpb25cIil9PlxyXG4gICAgICAgICAgICA8UGFnaW5hdGlvblxyXG4gICAgICAgICAgICAgIHsuLi5wcm9wcy5wYWdpbmF0aW9ufVxyXG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsocGFnZSwgcGFnZVNpemUpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGV4dHJhID0gdGhpcy5zdGF0ZS5leHRyYTtcclxuICAgICAgICAgICAgICAgIGV4dHJhLmFjdGlvbiA9IFwicGFnaW5hdGVcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoKHsgcGFnaW5hdGlvbiA9IHt9IH0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiB7IC4uLnBhZ2luYXRpb24sIGN1cnJlbnQ6IHBhZ2UsIHBhZ2VTaXplIH0sXHJcbiAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2UoXHJcbiAgICAgICAgICAgICAgICAgIHsgY3VycmVudDogcGFnZSwgcGFnZVNpemUgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5maWx0ZXIsXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuc29ydGVyLFxyXG4gICAgICAgICAgICAgICAgICBleHRyYVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiBkcmFnYWJsZSA9PT0gdHJ1ZSA/IChcclxuICAgICAgPERuZFByb3ZpZGVyIGJhY2tlbmQ9e0hUTUw1QmFja2VuZH0+e0RlZmF1bHRUYWJsZX08L0RuZFByb3ZpZGVyPlxyXG4gICAgKSA6IChcclxuICAgICAgRGVmYXVsdFRhYmxlXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgd2l0aFpoTG9jYWxlKE5TQ1RhYmxlKTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUNFQSxnQkFBZ0IsRUFDaEJDLGFBQWEsRUFDYkMsb0JBQW9CLEVBQ3BCQyxjQUFjLEVBQ2RDLHFCQUFxQixFQUNyQkMsc0JBQXNCLEVBQ3RCQyxZQUFZLFFBQ1AsbUJBQW1CO0FBQzFCLFNBQVNDLFVBQVUsUUFBUSxtQkFBbUI7QUFDOUMsT0FBT0MsS0FBSyxJQUFJQyxTQUFTLFFBQW9CLGFBQWE7QUFDMUQsU0FBU0MsS0FBSyxRQUFRLHVCQUF1QjtBQWU3QyxPQUFPLEtBQUtDLEtBQUssTUFBTSxPQUFPO0FBQzlCLFNBQVNDLFdBQVcsUUFBUSxXQUFXO0FBQ3ZDLE9BQU9DLE9BQU8sSUFBSUMsY0FBYyxFQUFFQyxhQUFhLFFBQVEsbUJBQW1CO0FBQzFFLE9BQU9DLFNBQVMsTUFBTSxpQkFBaUI7QUFDdkMsT0FBTyxxQkFBcUI7QUFDNUIsTUFBTTtFQUFFQyxnQkFBZ0I7RUFBRUM7QUFBYSxDQUFDLEdBQUdMLE9BQU87QUFDbEQsT0FBT00sWUFBWSxNQUFNLHdCQUF3QjtBQUNqRCxTQUFTQyxTQUFTLFFBQVEsaUJBQWlCO0FBQzNDLE9BQU8sc0JBQXNCO0FBQzdCLFNBQVNDLE9BQU8sRUFBRUMsT0FBTyxRQUF5QixhQUFhO0FBQy9E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
|
|
1057
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBcHBzdG9yZU91dGxpbmVkIiwiQ2hlY2tPdXRsaW5lZCIsIkNvbHVtbkhlaWdodE91dGxpbmVkIiwiU2VhcmNoT3V0bGluZWQiLCJTb3J0QXNjZW5kaW5nT3V0bGluZWQiLCJTb3J0RGVzY2VuZGluZ091dGxpbmVkIiwiUmVkb091dGxpbmVkIiwiaXNFbXB0eU9iaiIsIlN0b3JlIiwiUGFnZVN0b3JlIiwidXRpbHMiLCJSZWFjdCIsIkRuZFByb3ZpZGVyIiwiQm9keVJvdyIsIkRuZENvbnRleHRUeXBlIiwiSUJvZHlSb3dQcm9wcyIsInRyZWVVdGlscyIsIkJvZHlSb3dDb21wb25lbnQiLCJIVE1MNUJhY2tlbmQiLCJ3aXRoWmhMb2NhbGUiLCJSZXNpemFibGUiLCJnZXRMZXNzIiwiZ2V0Tm9kZSIsIk5vRGF0YSIsImdldFN0b3JhZ2UiLCJjb25maWciLCJjbHMiLCJzdHlsZXMiLCJSZXNpemVhYmxlVGl0bGUiLCJwcm9wcyIsIm9uUmVzaXplIiwid2lkdGgiLCJyZXN0UHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJjcmVhdGVFbGVtZW50IiwiaGVpZ2h0IiwiZHJhZ2dhYmxlT3B0cyIsImVuYWJsZVVzZXJTZWxlY3RIYWNrIiwiTlNDVGFibGUiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsIl9hdXRvVHlwZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsIm9uQmVmb3JlTG9hZCIsImxvYWQiLCJoZWFkZXIiLCJjZWxsIiwiaW5kZXgiLCJlIiwiX3JlZiIsInNpemUiLCJjb2xzIiwic3RhdGUiLCJuZXh0Q29sdW1ucyIsIl9vYmplY3RTcHJlYWQiLCJzZXRTdGF0ZSIsImdldENvbHVtbnMiLCJldiIsImRhdGEiLCJKU09OIiwicGFyc2UiLCJfdGhpcyIsImV2ZW50VHlwZSIsInBheWxvYWQiLCJ0YWJsZVNpemUiLCJkcmFnSW5kZXgiLCJob3ZlckluZGV4IiwiZHJhZyIsInRhcmdldCIsImRyYWdOb2RlIiwicmVjb3JkIiwidGFyZ2V0Tm9kZSIsIm1vdmVBcnJheSIsImlkcyIsInBhcmVudE5vZGUiLCJnZXRDaGlsZE5vZGVJZHMiLCJwYXJhbXMiLCJpZCIsInBhcmVudElkIiwiYXR0cmlidXRlIiwibW92ZVJvdyIsInN0b3JlIiwicmVsb2FkIiwibW9kYWwiLCJ0eXBlIiwic3RvcmVQcmVmaXgiLCJhdXRvVHlwZSIsImNvbnRlbnQiLCJkYXRhU291cmNlIiwiY29sdW1ucyIsImxvYWRpbmciLCJwYWdpbmF0aW9uIiwiYWN0aXZlSW5kZXgiLCJzZWFyY2hUZXh0IiwiZmllbGRPcHRpb24iLCJzZWFyY2hDb2xvciIsInNvcnRzIiwiZmlsdGVyUGFyYW1zIiwic29ydFR5cGUiLCJzb3J0ZXIiLCJzb3J0SW5mbyIsImRlZmF1bHRTb3J0IiwiY2hlY2tDb2x1bW4iLCJkZWZhdWx0Q2hlY2siLCJzZWxlY3RlZFJvd0tleXMiLCJzZWxlY3RlZFJvd0RhdGFzIiwiZmlsdGVyIiwiZXh0cmEiLCJfcmVmMiIsImxpc3RlbmVycyIsImxpc3RlbmVyc1Byb3BzIiwicmVzdFN0b3JlIiwiX2V4Y2x1ZGVkMiIsInN0b3JlUHJvcHMiLCJtb2RlbCIsImNvbXBvbmVudCIsIm9wdGlvbnMiLCJjYWxsYmFjayIsImRhdGFDaGFuZ2VkIiwibW9kZWxEYXRhIiwicGFnaW5nIiwiZ2V0UGFnaW5hdGlvbiIsIm9uRXJyb3JMb2FkIiwiZXJyIiwicmVzcG9uc2UiLCJhdXRvTG9hZCIsIk9iamVjdCIsImFzc2lnbiIsImN1cnJlbnQiLCJjb21wb25lbnREaWRNb3VudCIsInJlc2l6ZUNvbHVtbiIsInNldERhdGEiLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwibGlzdGVuTWVzc2FnZSIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImNvbXBvbmVudERpZFVwZGF0ZSIsInByZXZQcm9wcyIsInByZVN0YXRlIiwicmVzZXRDb2x1bW4iLCJuZXdDb2xzIiwiY29sc3MiLCJtYXAiLCJjb2wiLCJ0ZW1wIiwib25IZWFkZXJDZWxsIiwiY29sdW1uIiwiaGFuZGxlUmVzaXplIiwicHVzaCIsImNsZWFyU2VsZWN0Q29sb3IiLCJnZXRQYWdpbmF0aW9uQnlTdG9yZSIsIm9uQ2hhbmdlIiwiZmlsdGVycyIsImF1dG9PbkNoYW5nZSIsImF1dG9Tb3J0IiwiYXV0b1BhZ2luYXRpb24iLCJpc011bHRpcGxlIiwiQXJyYXkiLCJpc0FycmF5IiwiaGFuZGxlUGFnaW5hdGlvbiIsInAiLCJjdXJyZW50S2V5IiwicGFnZVNpemVLZXkiLCJwYWdlU2l6ZSIsImFzY1BhcmFtcyIsImdldFNvcnRQYXJhbSIsIm9uQ2hhbmdlRm4iLCJnZXRTdG9yZSIsImdldE1vZGVsIiwiaGFuZGxlU2VhcmNoIiwidmFsIiwiZmlsdGVyQ29sdW1uIiwiY2hlY2tlZFZhbHVlIiwibGVuZ3RoIiwiX21lc3NhZ2UiLCJ3YXJuaW5nIiwiZmlsdGVyQ29sdW1ucyIsIm5ld0NvbCIsImluY2x1ZGVzIiwiZGF0YUluZGV4IiwiaW5pdFNob3ciLCJzb3J0U3RhdGUiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJzb3J0U2VhcmNoIiwib3JkZXJJdGVtcyIsImZpZWxkIiwiYXNjIiwib3JkZXIiLCJmb3JFYWNoIiwidiIsInN0cmluZ2lmeSIsImlzQmV5b25kIiwiZXZlbnQiLCJ0ZXh0UmFuZ2UiLCJlbCIsInRleHRDb250ZW50IiwidGFyZ2V0VyIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInJhbmdlIiwiZG9jdW1lbnQiLCJjcmVhdGVSYW5nZSIsInNldFN0YXJ0Iiwic2V0RW5kIiwiY2hpbGROb2RlcyIsInJhbmdlV2lkdGgiLCJzZXRTZWxlY3RlZFJvd0tleXMiLCJzZXRTZWxlY3RlZFJvd0RhdGFzIiwic29ydEZpZWxkcyIsImRlZmF1bHRTaG93Q29scyIsImVsbGlwc2lzIiwicmVuZGVyIiwic2hvd1RpdGxlIiwidGV4dCIsIl90aGlzJHN0YXRlJGNvbHMiLCJjdXJyZW50Q29sIiwiZmluZCIsImMiLCJhY3R1YWxXaWR0aCIsImNvbFdpZHRoIiwiY29sV2lkdGhPYmoiLCJzbWFsbCIsIm1pZGRsZSIsImRlZmF1bHQiLCJsYXJnZSIsInBhZGRpbmdXaWR0aCIsInN0eWxlIiwiZGlzcGxheSIsInJlZiIsInJlbW92ZUF0dHJpYnV0ZSIsInNjcm9sbFdpZHRoIiwiY2xpZW50V2lkdGgiLCJzZXRBdHRyaWJ1dGUiLCJjbGFzc05hbWUiLCJvdmVyZmxvdyIsInRleHRPdmVyZmxvdyIsIndoaXRlU3BhY2UiLCJpbmRleE9mIiwic29ydE9yZGVyIiwibXVsdGlwbGUiLCJpdGVtIiwiZmlsdGVyUHJvcHMiLCJvYmoiLCJzZWFyY2hLZXkiLCJEaXYiLCJ0aXRsZSIsInBsYWNlaG9sZGVyIiwiY29uY2F0IiwidGFibGVTZWFyY2hSZWYiLCJmaWx0ZXJEcm9wZG93biIsIl9yZWYzIiwic2V0U2VsZWN0ZWRLZXlzIiwic2VsZWN0ZWRLZXlzIiwiY29uZmlybSIsImNsZWFyRmlsdGVycyIsIl9TcGFjZSIsIl9CdXR0b24iLCJvbkNsaWNrIiwiX3RoaXMkdGFibGVTZWFyY2hSZWYkIiwibmV3RmlsdGVyUGFyYW1zIiwia2V5IiwiZ2V0VmFsdWUiLCJzb3J0UGFyYW0iLCJmaWx0ZXJJY29uIiwicmVuZGVyVG9vbEJhciIsImNvbExpc3RzIiwidG9vbGJhciIsInRhYmxlVG9vbCIsInN0b3JlUmVxdWVzdENvbmZpZyIsInRvb2xzIiwidG9vbHNDbGljayIsIm9uVG9vbENsaWNrIiwic2l6ZUl0ZW0iLCJzb3J0SXRlbSIsInNvcnRDb250ZW50IiwiRnJhZ21lbnQiLCJjdXJzb3IiLCJjb2xvciIsInNpemVDb250ZW50IiwiX0NoZWNrYm94IiwiR3JvdXAiLCJiaW5kIiwibGFiZWwiLCJ2YWx1ZSIsImRpc2FibGVkIiwiZm9udFNpemUiLCJfUG9wb3ZlciIsInBsYWNlbWVudCIsInRyaWdnZXIiLCJvdmVybGF5U3R5bGUiLCJtaW5XaWR0aCIsIm1heFdpZHRoIiwibWFyZ2luUmlnaHQiLCJvblJlZnJlc2giLCJnZXRTZWxlY3RlZFJvd0tleXMiLCJnZXRTZWxlY3RlZFJvd0RhdGFzIiwicmVzZXRTZWxlY3RlZFJvd0tleXMiLCJyb3dTZWxlY3Rpb25PblNlbGVjdCIsInNlbGVjdGVkIiwicm93S2V5IiwibmV3U2VsZWN0ZWRSb3dLZXlzIiwibmV3U2VsZWN0ZWRSb3dEYXRhcyIsInNwbGljZSIsInJvd1NlbGVjdGlvbk9uU2VsZWN0QWxsIiwic2VsZWN0ZWRSb3dzIiwiY2hhbmdlUm93cyIsIm5ld2lkcyIsIm5ld2RhdGFzIiwiY2hhbmdlSWRzIiwiX3RoaXMkcHJvcHMkdG9vbGJhciIsIm9taXQiLCJjbGlja0NoYW5nZUNvbG9yIiwicG9zaXRpb24iLCJzaG93U2l6ZUNoYW5nZXIiLCJzaG93UXVpY2tKdW1wZXIiLCJzaG93VG90YWwiLCJ0b3RhbCIsIl9yZWY0IiwiZnJvbSIsInRvIiwib25Sb3dGbiIsIm9uUm93IiwiY3VzdG9tIiwib25DbGlja0ZuIiwicm93Q2xhc3NOYW1lIiwibmV3RGF0YVNvdXJjZSIsImdldFNlYXJjaE1lbnVEYXRhcyIsInRyZWVEYXRhcyIsImV4cGFuZGVkUm93S2V5cyIsIm9wZW5LZXlzIiwiZHJhZ2FibGUiLCJkcmFnYWJsZVByb3BzIiwiY29tcG9uZW50cyIsInJlc2l6ZVByb3BzIiwidG9vbEZsYWciLCJ0b29scHJvcHMiLCJzaG93Iiwic2hvd1Jvd1NlbGVjdGlvbiIsInJvd1NlbGVjdGlvbiIsIm9uU2VsZWN0Iiwib25TZWxlY3RBbGwiLCJjb2x1bW5XaWR0aCIsInRhYmxlUHJvcHMiLCJjb25maWdUYWJsZVByb3BzIiwiRGVmYXVsdFRhYmxlIiwiX1RhYmxlIiwiX2V4dGVuZHMiLCJjaGlsZHJlbkNvbHVtbk5hbWUiLCJzaGVpdGVtIiwibG9jYWxlIiwiZW1wdHlUZXh0Iiwic2Nyb2xsIiwieCIsIl9QYWdpbmF0aW9uIiwicGFnZSIsImFjdGlvbiIsIl9yZWY1IiwiYmFja2VuZCIsImRyYWdVcmwiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9iYXNlL3RhYmxlL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBARGVzY3JpcHR0aW9uOlxyXG4gKiBAdmVyc2lvbjpcclxuICogQEF1dGhvcjogcnh6aHVcclxuICogQERhdGU6IDIwMjEtMDMtMjMgMDg6NDY6MjBcclxuICogQExhc3RFZGl0b3JzOiByeHpodVxyXG4gKiBATGFzdEVkaXRUaW1lOiAyMDIxLTAzLTIzIDEwOjMwOjQyXHJcbiAqL1xyXG5pbXBvcnQge1xyXG4gIEFwcHN0b3JlT3V0bGluZWQsXHJcbiAgQ2hlY2tPdXRsaW5lZCxcclxuICBDb2x1bW5IZWlnaHRPdXRsaW5lZCxcclxuICBTZWFyY2hPdXRsaW5lZCxcclxuICBTb3J0QXNjZW5kaW5nT3V0bGluZWQsXHJcbiAgU29ydERlc2NlbmRpbmdPdXRsaW5lZCxcclxuICBSZWRvT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCB7IGlzRW1wdHlPYmogfSBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFBhZ2VTdG9yZSwgU3RvcmVQcm9wcyB9IGZyb20gXCJAYmotbnNjL21zblwiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IHtcclxuICBCdXR0b24sXHJcbiAgQ2hlY2tib3gsXHJcbiAgQ2hlY2tib3hPcHRpb25UeXBlLFxyXG4gIE1lbnUsXHJcbiAgbWVzc2FnZSxcclxuICBQYWdpbmF0aW9uLFxyXG4gIFBvcG92ZXIsXHJcbiAgU3BhY2UsXHJcbiAgVGFibGUsXHJcbiAgVGFibGVQcm9wcyxcclxuICBUb29sdGlwLFxyXG59IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCB7IENvbHVtblR5cGUsIFRhYmxlUGFnaW5hdGlvbkNvbmZpZyB9IGZyb20gXCJhbnRkL2xpYi90YWJsZVwiO1xyXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgRG5kUHJvdmlkZXIgfSBmcm9tIFwicmVhY3QtZG5kXCI7XHJcbmltcG9ydCBCb2R5Um93LCB7IERuZENvbnRleHRUeXBlLCBJQm9keVJvd1Byb3BzIH0gZnJvbSBcIi4uL2NvbW1vbi9Cb2R5Um93XCI7XHJcbmltcG9ydCB0cmVlVXRpbHMgZnJvbSBcIi4uLy4uL3RyZWVVdGlsc1wiO1xyXG5pbXBvcnQgXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmNvbnN0IHsgQm9keVJvd0NvbXBvbmVudCwgSFRNTDVCYWNrZW5kIH0gPSBCb2R5Um93O1xyXG5pbXBvcnQgd2l0aFpoTG9jYWxlIGZyb20gXCIuLi9jb21tb24vd2l0aFpoTG9jYWxlXCI7XHJcbmltcG9ydCB7IFJlc2l6YWJsZSB9IGZyb20gXCJyZWFjdC1yZXNpemFibGVcIjtcclxuaW1wb3J0IFwiLi9yZXNpemUubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IHsgZ2V0TGVzcywgZ2V0Tm9kZSwgc2ltcGxpZnlDb2x1bW5zIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCBOb0RhdGEgZnJvbSBcIi4uLy4uL2Jhc2UvY29tbW9uL05vRGF0YVwiO1xyXG5pbXBvcnQgeyBnZXRTdG9yYWdlIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCBjb25maWcgZnJvbSBcIi4uLy4uL2NvbmZpZ1wiO1xyXG5pbXBvcnQgRWxsaXBzZUNlbGwgZnJvbSBcIi4uL2NvbW1vbi9FbGxpcHNlQ2VsbFwiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCBpc0VxdWFsIGZyb20gXCJsb2Rhc2gvaXNFcXVhbFwiO1xyXG5jb25zdCBzdHlsZXMgPSBudWxsO1xyXG5pbnRlcmZhY2UgSURyYWdQYXJhbXMge1xyXG4gIGlkOiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgaWRzOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+O1xyXG4gIHBhcmVudElkOiBzdHJpbmcgfCBudW1iZXI7XHJcbn1cclxuLy8gaW50ZXJmYWNlIFN0b3JlUHJvcHMge31cclxuXHJcbmV4cG9ydCB0eXBlIFN0b3JlVHlwZSA9IFwiUGFnZVN0b3JlXCIgfCBcIlRyZWVTdG9yZVwiIHwgXCJCYXNlU3RvcmVcIjtcclxuXHJcbmludGVyZmFjZSBOU0NUYWJsZVBhZ2luYXRpb24gZXh0ZW5kcyBUYWJsZVBhZ2luYXRpb25Db25maWcge1xyXG4gIHRvdGFsS2V5Pzogc3RyaW5nO1xyXG4gIHBhZ2VTaXplS2V5Pzogc3RyaW5nO1xyXG4gIGN1cnJlbnRLZXk/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBUb29sQmFyUHJvcHMge1xyXG4gIHNob3c6IGJvb2xlYW47XHJcbiAgdG9vbHM/OiBBcnJheTxzdHJpbmc+O1xyXG4gIG9uVG9vbENsaWNrPzogeyBvblJlZnJlc2g/OiBhbnk7IG9uU29ydD86IGFueSB9O1xyXG59XHJcbmludGVyZmFjZSBOU0NUYWJsZVByb3BzIGV4dGVuZHMgVGFibGVQcm9wczxhbnk+IHtcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgc2hvd1RvdGFsPzogYm9vbGVhbjsgLy8g5piv5ZCm5pi+56S65oC75p2h5pWw5L+h5oGv77yM6buY6K6kdHJ1ZVxyXG4gIGRyYWdhYmxlPzogYm9vbGVhbjsgLy8g5piv5ZCm5Y+v5ouW5YqoLCDpu5jorqRmYWxzZVxyXG4gIGZpbHRlckNvbHVtbj86IGJvb2xlYW47IC8vIOaYr+WQpuaUr+aMgei/h+a7pOaYvuekuuihqOagvOWIlywg6buY6K6kdHJ1ZVxyXG4gIG1vdmVSb3c/OiAocGFyYW1zOiBJRHJhZ1BhcmFtcykgPT4gdm9pZDsgLy8g5ouW5ou95a6M5oiQ5ZCO55qE5Zue6LCDXHJcbiAgZHJhZ1VybD86IHN0cmluZzsgLy8g5L+d5a2Y5ouW5ou95o6S5bqP55qE5o6l5Y+jXHJcbiAgcGFnaW5hdGlvbj86IGZhbHNlIHwgTlNDVGFibGVQYWdpbmF0aW9uO1xyXG4gIGF1dG9QYWdpbmF0aW9uPzogYm9vbGVhbjsgLy8g57uE5Lu25piv5ZCm6Ieq5Yqo5aSE55CG5YiG6aG1XHJcbiAgYXV0b1NvcnQ/OiBib29sZWFuOyAvL+e7hOS7tuaYr+WQpuiHquWKqOWkhOeQhuaOkuW6j1xyXG4gIGF1dG9PbkNoYW5nZT86IGJvb2xlYW47IC8vIOe7hOS7tuaYr+WQpuiHquWKqG9uQ2hhbmdlLCBmYWxzZeWImeS4jeWBmuS7u+S9leWkhOeQhuWFqOmDqOS6pOe7meiwg+eUqOaWuVxyXG4gIHJlc2l6ZUNvbHVtbj86IGJvb2xlYW47XHJcbiAgc29ydEZpZWxkcz86IEFycmF5PHN0cmluZz47IC8v6ZyA6KaB5o6S5bqP55qE5a2X5q61SW5kZXhcclxuICB0b29sYmFyPzogVG9vbEJhclByb3BzIHwgYm9vbGVhbjtcclxuICBhdXRvU2l6ZT86IGJvb2xlYW47XHJcbiAgc29ydFNlYXJjaD86IGJvb2xlYW47IC8v5piv5ZCm5re75Yqg5o6S5bqP5p+l6K+iLOm7mOiupHRydWVcclxuICBzaG93Um93U2VsZWN0aW9uPzogYm9vbGVhbjtcclxuICByb3dLZXk/OiBzdHJpbmc7XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBJTlNDVGFibGVQcm9wcyA9IHR5cGVvZiBOU0NUYWJsZS5kZWZhdWx0UHJvcHMgJiBOU0NUYWJsZVByb3BzO1xyXG5leHBvcnQgeyBEbmRDb250ZXh0VHlwZSwgSUJvZHlSb3dQcm9wcyB9O1xyXG5cclxuY29uc3QgUmVzaXplYWJsZVRpdGxlID0gKHByb3BzOiBhbnkpID0+IHtcclxuICBjb25zdCB7IG9uUmVzaXplLCB3aWR0aCwgLi4ucmVzdFByb3BzIH0gPSBwcm9wcztcclxuICByZXR1cm4gKFxyXG4gICAgPFJlc2l6YWJsZVxyXG4gICAgICB3aWR0aD17d2lkdGggfHwgMTUwfVxyXG4gICAgICBoZWlnaHQ9ezB9XHJcbiAgICAgIG9uUmVzaXplPXtvblJlc2l6ZX1cclxuICAgICAgZHJhZ2dhYmxlT3B0cz17eyBlbmFibGVVc2VyU2VsZWN0SGFjazogZmFsc2UgfX1cclxuICAgID5cclxuICAgICAgPHRoIHsuLi5yZXN0UHJvcHN9IC8+XHJcbiAgICA8L1Jlc2l6YWJsZT5cclxuICApO1xyXG59O1xyXG5jbGFzcyBOU0NUYWJsZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxJTlNDVGFibGVQcm9wcywgYW55PiB7XHJcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcclxuICAgIGRyYWdhYmxlOiBmYWxzZSxcclxuICAgIHNob3dUb3RhbDogdHJ1ZSxcclxuICAgIGZpbHRlckNvbHVtbjogdHJ1ZSxcclxuICAgIGRyYWdVcmw6IFwiXCIsXHJcbiAgICBhdXRvUGFnaW5hdGlvbjogdHJ1ZSxcclxuICAgIGF1dG9Tb3J0OiB0cnVlLFxyXG4gICAgYXV0b09uQ2hhbmdlOiB0cnVlLFxyXG4gICAgcmVzaXplQ29sdW1uOiB0cnVlLFxyXG4gICAgdG9vbGJhcjoge1xyXG4gICAgICBzaG93OiB0cnVlLFxyXG4gICAgICBvblRvb2xDbGljazoge30gYXMgYW55LFxyXG4gICAgICB0b29sczpbXSBhcyBhbnlcclxuICAgIH0gYXMgYW55LFxyXG4gIH07XHJcblxyXG4gIHN0b3JlID0ge30gYXMgU3RvcmVQcm9wcztcclxuICB0aEljb25SZWYgPSBSZWFjdC5jcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XHJcbiAgdGFibGVTZWFyY2hSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG5cclxuICBsaXN0ZW5lcnMgPSB7XHJcbiAgICBvbkJlZm9yZUxvYWQ6IG51bGwsXHJcbiAgICBsb2FkOiBudWxsLFxyXG4gIH07XHJcblxyXG4gIGNvbXBvbmVudHMgPSB7XHJcbiAgICBoZWFkZXI6IHtcclxuICAgICAgY2VsbDogUmVzaXplYWJsZVRpdGxlLFxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgbGV0IG1vZGFsID0gcHJvcHMudHlwZSB8fCBcImF1dG9cIjtcclxuICAgIGxldCBzdG9yZVByZWZpeCA9IGdldFN0b3JhZ2UoXCJzdG9yZS1wcmUta2V5XCIpO1xyXG4gICAgbGV0IGF1dG9UeXBlID0gZ2V0U3RvcmFnZShcclxuICAgICAgc3RvcmVQcmVmaXggPyBzdG9yZVByZWZpeCArIFwidGFibGVTaXplXCIgOiBcInRhYmxlU2l6ZVwiXHJcbiAgICApO1xyXG4gICAgYXV0b1R5cGUgPSBhdXRvVHlwZT8uY29udGVudDtcclxuICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgIGRhdGFTb3VyY2U6IFtdLFxyXG4gICAgICBjb2x1bW5zOiBbXSxcclxuICAgICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICAgIHBhZ2luYXRpb246IHt9LFxyXG4gICAgICBhY3RpdmVJbmRleDogLTEsXHJcbiAgICAgIC8v5pCc57Si5paH5pysXHJcbiAgICAgIHNlYXJjaFRleHQ6IG51bGwsXHJcbiAgICAgIGZpZWxkT3B0aW9uOiBudWxsLFxyXG4gICAgICBzZWFyY2hDb2xvcjogbnVsbCxcclxuICAgICAgY29sczogW10sXHJcbiAgICAgIHNvcnRzOiBbXSxcclxuICAgICAgZmlsdGVyUGFyYW1zOiB7fSxcclxuICAgICAgdGFibGVTaXplOiB0aGlzLnByb3BzLnNpemUgfHwgYXV0b1R5cGUgfHwgXCJkZWZhdWx0XCIsXHJcbiAgICAgIHNvcnRUeXBlOiBcInNpbmdsZVwiLFxyXG4gICAgICBzb3J0ZXI6IFtdLCAvL+iusOW9leW9k+WJjeaOkuW6j+Wtl+autVxyXG4gICAgICBzb3J0SW5mbzoge30sXHJcbiAgICAgIGRlZmF1bHRTb3J0OiB0cnVlLFxyXG4gICAgICBjaGVja0NvbHVtbjogW10sXHJcbiAgICAgIGRlZmF1bHRDaGVjazogdHJ1ZSxcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICAgIGZpbHRlcjogW10sXHJcbiAgICAgIGV4dHJhOiB7fSxcclxuICAgIH07XHJcbiAgICBpZiAocHJvcHMuc3RvcmUgaW5zdGFuY2VvZiBTdG9yZSkge1xyXG4gICAgICB0aGlzLnN0b3JlID0gcHJvcHMuc3RvcmU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCB7IGxpc3RlbmVyczogbGlzdGVuZXJzUHJvcHMgPSB7fSwgLi4ucmVzdFN0b3JlIH0gPVxyXG4gICAgICAgIHByb3BzLnN0b3JlIHx8IHt9O1xyXG4gICAgICBjb25zdCBzdG9yZVByb3BzID0ge1xyXG4gICAgICAgIG1vZGVsOiBcIm1vZGVsXCIsXHJcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgIGxpc3RlbmVyczoge1xyXG4gICAgICAgICAgb25CZWZvcmVMb2FkOiAoc3RvcmUsIG9wdGlvbnMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IHRydWUgfSk7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1Byb3BzLm9uQmVmb3JlTG9hZCwgdGhpcywgW3N0b3JlLCBvcHRpb25zXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZGF0YUNoYW5nZWQ6IChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBwYWdpbmcgPSAhKHRoaXMucHJvcHMucGFnaW5hdGlvbiA9PT0gZmFsc2UpO1xyXG4gICAgICAgICAgICBpZiAocGFnaW5nICYmICF0aGlzLnByb3BzLmRhdGFTb3VyY2UpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U6IG1vZGVsRGF0YSxcclxuICAgICAgICAgICAgICAgIHBhZ2luYXRpb246IHN0b3JlLmdldFBhZ2luYXRpb24oKSxcclxuICAgICAgICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgYWN0aXZlSW5kZXg6IC0xLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBkYXRhU291cmNlOiBtb2RlbERhdGEsIGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQcm9wcy5kYXRhQ2hhbmdlZCwgdGhpcywgW1xyXG4gICAgICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICAgICAgbW9kZWxEYXRhLFxyXG4gICAgICAgICAgICAgIHN0b3JlLFxyXG4gICAgICAgICAgICAgIHBhZ2luZyxcclxuICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgbG9hZDogKGRhdGEsIG1vZGVsRGF0YSwgc3RvcmUpID0+IHtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMubG9hZCwgdGhpcywgW2RhdGEsIG1vZGVsRGF0YSwgc3RvcmVdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBvbkVycm9yTG9hZDogKGVyciwgcmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQcm9wcy5vbkVycm9yTG9hZCwgdGhpcywgW2VyciwgcmVzcG9uc2VdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICBkYXRhOiByZXN0U3RvcmUuZGF0YVxyXG4gICAgICAgICAgPyByZXN0U3RvcmUuZGF0YVxyXG4gICAgICAgICAgOiBwcm9wcy5kYXRhU291cmNlXHJcbiAgICAgICAgICA/IHByb3BzLmRhdGFTb3VyY2VcclxuICAgICAgICAgIDogbnVsbCxcclxuICAgICAgICAuLi5yZXN0U3RvcmUsXHJcbiAgICAgICAgYXV0b0xvYWQ6IHJlc3RTdG9yZS5hdXRvTG9hZCA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWUsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuc3RvcmUgPSBuZXcgUGFnZVN0b3JlKFxyXG4gICAgICAgIE9iamVjdC5hc3NpZ24oe30sIHN0b3JlUHJvcHMsIHtcclxuICAgICAgICAgIHBhZ2luYXRpb246IHsgY3VycmVudDogMSwgLi4udGhpcy5wcm9wcy5wYWdpbmF0aW9uIH0sXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZVJlc2l6ZSA9XHJcbiAgICAoaW5kZXg6IGFueSkgPT5cclxuICAgIChlOiBhbnksIHsgc2l6ZSB9OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjb2xzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICBjb25zdCBuZXh0Q29sdW1ucyA9IFsuLi5jb2xzXTtcclxuICAgICAgbmV4dENvbHVtbnNbaW5kZXhdID0ge1xyXG4gICAgICAgIC4uLm5leHRDb2x1bW5zW2luZGV4XSxcclxuICAgICAgICB3aWR0aDogc2l6ZS53aWR0aCxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5zZXRTdGF0ZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjb2xzOiBuZXh0Q29sdW1ucyxcclxuICAgICAgICB9LFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIC8vIOWcqOeKtuaAgeabtOaWsOWQjumHjeaWsOiOt+WPluWIl+mFjee9rlxyXG4gICAgICAgICAgdGhpcy5nZXRDb2x1bW5zKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfTtcclxuXHJcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghcmVzaXplQ29sdW1uKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBjb2x1bW5zOiBbLi4udGhpcy5wcm9wcy5jb2x1bW5zXSB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBjb2xzOiBbLi4udGhpcy5wcm9wcy5jb2x1bW5zXSB9KTtcclxuICAgIH1cclxuICAgIGNvbnN0IHN0b3JlID0gdGhpcy5wcm9wcy5zdG9yZTtcclxuICAgIGlmIChzdG9yZSAmJiBzdG9yZS5kYXRhKSB7XHJcbiAgICAgIHRoaXMuc3RvcmUuc2V0RGF0YShzdG9yZS5kYXRhKTtcclxuICAgIH1cclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCB0aGlzLmxpc3Rlbk1lc3NhZ2UpO1xyXG4gIH1cclxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcclxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCB0aGlzLmxpc3Rlbk1lc3NhZ2UpO1xyXG4gIH1cclxuICBsaXN0ZW5NZXNzYWdlID0gKGV2KSA9PiB7XHJcbiAgICBjb25zdCBkYXRhID0gdHlwZW9mIGV2LmRhdGEgPT09IFwic3RyaW5nXCIgPyBKU09OLnBhcnNlKGV2LmRhdGEpIDogZXYuZGF0YTtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBpZiAoZGF0YS5ldmVudFR5cGUgPT0gXCJjaGFuZ2VUYWJsZVNpemVcIikge1xyXG4gICAgICBjb25zdCB7IHBheWxvYWQgfSA9IGRhdGE7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBwYXlsb2FkLnNpemUgPT0gXCJkZWZhdWx0XCIgfHxcclxuICAgICAgICBwYXlsb2FkLnNpemUgPT0gXCJzbWFsbFwiIHx8XHJcbiAgICAgICAgcGF5bG9hZC5zaXplID09IFwibWlkZGxlXCJcclxuICAgICAgKSB7XHJcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyB0YWJsZVNpemU6IHBheWxvYWQuc2l6ZSB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMsIHByZVN0YXRlKSB7XHJcbiAgICBjb25zdCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghcmVzaXplQ29sdW1uKSB7XHJcbiAgICAgIGlmICh0aGlzLnByb3BzLmNvbHVtbnMgIT09IHByZXZQcm9wcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbHVtbnM6IHRoaXMucHJvcHMuY29sdW1ucyB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHByZVN0YXRlLmNvbHMgIT09IHRoaXMuc3RhdGUuY29scykge1xyXG4gICAgICAgIHRoaXMucmVzZXRDb2x1bW4oKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5wcm9wcy5jb2x1bW5zICE9PSBwcmV2UHJvcHMuY29sdW1ucykge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgY29sczogdGhpcy5wcm9wcy5jb2x1bW5zLFxyXG4gICAgICAgICAgY29sdW1uczogdGhpcy5wcm9wcy5jb2x1bW5zLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwcmV2UHJvcHMuc2l6ZSAhPT0gdGhpcy5wcm9wcy5zaXplKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHRhYmxlU2l6ZTogdGhpcy5wcm9wcy5zaXplIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJlc2V0Q29sdW1uKCkge1xyXG4gICAgY29uc3QgeyBjb2xzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgbmV3Q29sczogYW55ID0gW107XHJcbiAgICBsZXQgY29sc3MgPSBjb2xzIHx8IFtdO1xyXG4gICAgY29sc3MubWFwKChjb2w6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBsZXQgdGVtcCA9IHtcclxuICAgICAgICAuLi5jb2wsXHJcbiAgICAgICAgb25IZWFkZXJDZWxsOiAoY29sdW1uOiB7IHdpZHRoOiBhbnkgfSkgPT4gKHtcclxuICAgICAgICAgIHdpZHRoOiBjb2x1bW4ud2lkdGgsXHJcbiAgICAgICAgICBvblJlc2l6ZTogdGhpcy5oYW5kbGVSZXNpemUoaW5kZXgpLFxyXG4gICAgICAgIH0pLFxyXG4gICAgICB9O1xyXG4gICAgICBuZXdDb2xzLnB1c2godGVtcCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBjb2x1bW5zOiBuZXdDb2xzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmuIXpmaTpgInkuK3popzoibJcclxuICAgKi9cclxuICBjbGVhclNlbGVjdENvbG9yKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGFjdGl2ZUluZGV4OiAtMSB9KTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGFnaW5hdGlvbkJ5U3RvcmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXRQYWdpbmF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGF1dG9PbkNoYW5nZSA9IHRydWUsXHJcbiAgICAgIGF1dG9Tb3J0LFxyXG4gICAgICBhdXRvUGFnaW5hdGlvbixcclxuICAgICAgb25DaGFuZ2UsXHJcbiAgICAgIHN0b3JlLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGZpbHRlclBhcmFtcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IGlzTXVsdGlwbGUgPSBBcnJheS5pc0FycmF5KHNvcnRlcik7XHJcbiAgICBpZiAoYXV0b09uQ2hhbmdlID09PSBmYWxzZSB8fCAhc3RvcmUpIHtcclxuICAgICAgb25DaGFuZ2UgJiYgb25DaGFuZ2UocGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGhhbmRsZVBhZ2luYXRpb24gPSAoKSA9PiB7XHJcbiAgICAgIGxldCBwYXJhbXMgPSB7fSBhcyB7XHJcbiAgICAgICAgc2l6ZT86IHN0cmluZztcclxuICAgICAgICBwYWdlU2l6ZT86IHN0cmluZztcclxuICAgICAgICBhc2NzPzogc3RyaW5nO1xyXG4gICAgICAgIGRlc2NzPzogc3RyaW5nO1xyXG4gICAgICAgIFtwcm9wTmFtZTogc3RyaW5nXTogc3RyaW5nO1xyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBwYWdpbmcgPSB0aGlzLmdldFBhZ2luYXRpb25CeVN0b3JlKCkgfHwge307XHJcbiAgICAgIGlmICghaXNFbXB0eU9iaihwYWdpbmF0aW9uKSkge1xyXG4gICAgICAgIGNvbnN0IHAgPSB7XHJcbiAgICAgICAgICBbcGFnaW5nLmN1cnJlbnRLZXkgfHwgXCJjdXJyZW50XCJdOiBwYWdpbmF0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICBbcGFnaW5nLnBhZ2VTaXplS2V5IHx8IFwic2l6ZVwiXTogcGFnaW5hdGlvbi5wYWdlU2l6ZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGFyYW1zLCBwKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgYXNjUGFyYW1zID0gdGhpcy5nZXRTb3J0UGFyYW0oc29ydGVyLCB0cnVlKTtcclxuICAgICAgaWYgKGlzTXVsdGlwbGUpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpc011bHRpcGxlICYmICFpc0VtcHR5T2JqKHNvcnRlcikpIHtcclxuICAgICAgICBzb3J0ZXIuY29sdW1uICYmXHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyOiBbc29ydGVyXSwgZGVmYXVsdFNvcnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzb3J0ZXI6IFtdIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGZpbHRlcnMsXHJcbiAgICAgICAgZXh0cmEsXHJcbiAgICAgIH0pO1xyXG4gICAgICBwYXJhbXMgPSB7IC4uLmZpbHRlclBhcmFtcywgLi4ucGFyYW1zLCAuLi5hc2NQYXJhbXMgfTtcclxuICAgICAgYXV0b1NvcnQgJiYgdGhpcy5zdG9yZS5yZWxvYWQoeyBwYXJhbXMgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IG9uQ2hhbmdlRm4gPSB0aGlzLnByb3BzLm9uQ2hhbmdlO1xyXG5cclxuICAgIGF1dG9QYWdpbmF0aW9uICYmIGhhbmRsZVBhZ2luYXRpb24oKTtcclxuICAgIC8vIOeUqOaIt+S8oOS6hm9uQ2hhbmdl5L+d55WZ55So5oi36Ieq5Li75aSE55CG6KGo5qC85Y+Y5YyW55qE5p2D5YqbXHJcbiAgICBpZiAob25DaGFuZ2VGbikge1xyXG4gICAgICB1dGlscy5jYWxsYmFjayhvbkNoYW5nZUZuLCB0aGlzLCBbcGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYV0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiOt+WPluaVsOaNruaooeWei+WvueixoVxyXG4gICAqL1xyXG4gIGdldE1vZGVsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuZ2V0TW9kZWwoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiPnOWNleaQnOe0oui/h+a7pOaYvuekulxyXG4gICAqIEBwYXJhbSB7U3RyaW5nfSB2YWxcclxuICAgKi9cclxuICBoYW5kbGVTZWFyY2godmFsLCBmaWVsZE9wdGlvbiwgc2VhcmNoQ29sb3IpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWFyY2hUZXh0OiB2YWwsXHJcbiAgICAgIGZpZWxkT3B0aW9uOiBmaWVsZE9wdGlvbixcclxuICAgICAgc2VhcmNoQ29sb3I6IHNlYXJjaENvbG9yLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmqKHlnZfliJfooajnp7vliqjmjpLluo9cclxuICAgKi9cclxuICBtb3ZlUm93ID0gKGRyYWdJbmRleCwgaG92ZXJJbmRleCwgZHJhZywgdGFyZ2V0KSA9PiB7XHJcbiAgICBjb25zdCBfdGhpcyA9IHRoaXM7XHJcbiAgICBsZXQgZHJhZ05vZGUgPSBkcmFnLnJlY29yZDtcclxuICAgIGxldCB0YXJnZXROb2RlID0gdGFyZ2V0LnJlY29yZDtcclxuICAgIGRyYWdOb2RlLm1vdmVBcnJheShkcmFnTm9kZSwgdGFyZ2V0Tm9kZSk7XHJcbiAgICBsZXQgaWRzID0gZHJhZ05vZGUucGFyZW50Tm9kZS5nZXRDaGlsZE5vZGVJZHMoKTtcclxuICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgIGlkOiBkcmFnTm9kZS5pZCxcclxuICAgICAgcGFyZW50SWQ6IGRyYWdOb2RlLmF0dHJpYnV0ZS5wYXJlbnRJZCxcclxuICAgICAgaWRzOiBpZHMsXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLnByb3BzLm1vdmVSb3cpIHtcclxuICAgICAgdGhpcy5wcm9wcy5tb3ZlUm93KHBhcmFtcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnN0b3JlLnJlbG9hZCgpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGZpbHRlckNvbHVtbihjaGVja2VkVmFsdWUpIHtcclxuICAgIGlmIChjaGVja2VkVmFsdWUubGVuZ3RoID09IDApIHtcclxuICAgICAgbWVzc2FnZS53YXJuaW5nKFwi6Iez5bCR5pi+56S65LiA5YiX77yBXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBmaWx0ZXJDb2x1bW5zID0gdGhpcy5wcm9wcy5jb2x1bW5zLm1hcCgoY29sOiBDb2x1bW5UeXBlPHt9PikgPT4ge1xyXG4gICAgICBjb25zdCBuZXdDb2wgPSB7IC4uLmNvbCB9IGFzIENvbHVtblR5cGU8e30+ICYgeyBpbml0U2hvdzogYm9vbGVhbiB9O1xyXG4gICAgICBpZiAoY2hlY2tlZFZhbHVlLmluY2x1ZGVzKGNvbC5kYXRhSW5kZXgpKSB7XHJcbiAgICAgICAgbmV3Q29sLmluaXRTaG93ID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBuZXdDb2wuaW5pdFNob3cgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbmV3Q29sO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghcmVzaXplQ29sdW1uKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGNvbHVtbnM6IGZpbHRlckNvbHVtbnMsXHJcbiAgICAgICAgY2hlY2tDb2x1bW46IGNoZWNrZWRWYWx1ZSxcclxuICAgICAgICBkZWZhdWx0Q2hlY2s6IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGNvbHM6IGZpbHRlckNvbHVtbnMsXHJcbiAgICAgICAgY2hlY2tDb2x1bW46IGNoZWNrZWRWYWx1ZSxcclxuICAgICAgICBkZWZhdWx0Q2hlY2s6IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0U29ydFBhcmFtKHNvcnRlciwgc29ydFN0YXRlID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IGlzTXVsdGlwbGUgPSBBcnJheS5pc0FycmF5KHNvcnRlcik7XHJcbiAgICBjb25zdCB7IHNvcnRTZWFyY2ggPSB0cnVlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKCFzb3J0U2VhcmNoKSB7XHJcbiAgICAgIHJldHVybiB7fTtcclxuICAgIH1cclxuICAgIGxldCBzb3J0SW5mbyA9IHt9O1xyXG4gICAgbGV0IG9yZGVySXRlbXMgPSBbXTtcclxuICAgIGlmICghaXNFbXB0eU9iaihzb3J0ZXIpICYmICFpc011bHRpcGxlICYmIHNvcnRlci5jb2x1bW4pIHtcclxuICAgICAgb3JkZXJJdGVtcyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjb2x1bW46IHNvcnRlci5jb2x1bW4uZmllbGQgfHwgc29ydGVyLmNvbHVtbi5kYXRhSW5kZXgsXHJcbiAgICAgICAgICBhc2M6IHNvcnRlci5vcmRlciA9PSBcImFzY2VuZFwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF07XHJcbiAgICAgIGlmIChzb3J0ZXIuY29sdW1uKSBzb3J0SW5mb1tzb3J0ZXIuY29sdW1uLmRhdGFJbmRleF0gPSBzb3J0ZXIub3JkZXI7XHJcbiAgICB9IGVsc2UgaWYgKGlzTXVsdGlwbGUpIHtcclxuICAgICAgc29ydGVyLmZvckVhY2goKHYpID0+IHtcclxuICAgICAgICBzb3J0SW5mb1t2LmNvbHVtbi5kYXRhSW5kZXhdID0gdi5vcmRlcjtcclxuICAgICAgICBsZXQgZmllbGQgPSB2LmNvbHVtbi5maWVsZCB8fCB2LmNvbHVtbi5kYXRhSW5kZXg7XHJcbiAgICAgICAgb3JkZXJJdGVtcy5wdXNoKHtcclxuICAgICAgICAgIGNvbHVtbjogZmllbGQsXHJcbiAgICAgICAgICBhc2M6IHYub3JkZXIgPT0gXCJhc2NlbmRcIixcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoc29ydFN0YXRlKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHNvcnRJbmZvOiBzb3J0SW5mbyxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyBvcmRlckl0ZW1zOiBKU09OLnN0cmluZ2lmeShvcmRlckl0ZW1zKSB9O1xyXG4gIH1cclxuICBpc0JleW9uZChlKSB7XHJcbiAgICBjb25zdCBldiA9IHdpbmRvdy5ldmVudCB8fCBlOyAvLyDmtY/op4jlmajlhbzlrrnvvIzmnIDlpb3lhpnkuIDkuItcclxuICAgIGNvbnN0IHRleHRSYW5nZSA9IChlbCkgPT4ge1xyXG4gICAgICBjb25zdCB0ZXh0Q29udGVudCA9IGVsO1xyXG4gICAgICBjb25zdCB0YXJnZXRXID0gdGV4dENvbnRlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XHJcbiAgICAgIGNvbnN0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcclxuICAgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dENvbnRlbnQsIDApO1xyXG4gICAgICByYW5nZS5zZXRFbmQodGV4dENvbnRlbnQsIHRleHRDb250ZW50LmNoaWxkTm9kZXMubGVuZ3RoKTtcclxuICAgICAgY29uc3QgcmFuZ2VXaWR0aCA9IHJhbmdlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xyXG4gICAgICByZXR1cm4gcmFuZ2VXaWR0aCA+IHRhcmdldFc7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuICF0ZXh0UmFuZ2UoZXYudGFyZ2V0KTsgLy8gdGFyZ2V05Y+v5Lul5L+d6K+B5b2T5YmN5YiS6L+H55qEZG9t6IqC54K55LiA55u05L+d5oyB5pivOmVsLXRvb2x0aXBfX3RyaWdnZXJcclxuICB9XHJcbiAgc2V0U2VsZWN0ZWRSb3dLZXlzKGRhdGE6IEFycmF5PFN0cmluZyB8IE51bWJlcj4pIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IGRhdGEsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgc2V0U2VsZWN0ZWRSb3dEYXRhcyhkYXRhOiBBcnJheTxPYmplY3Q+KSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogZGF0YSxcclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRDb2x1bW5zKCkge1xyXG4gICAgY29uc3QgeyBjb2x1bW5zLCBzb3J0VHlwZSwgc29ydEluZm8gfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IHNvcnRGaWVsZHMgPSBbXSwgc2l6ZSA9IFwibGFyZ2VcIiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGRlZmF1bHRTaG93Q29scyA9IGNvbHVtbnMuZmlsdGVyKChjb2xzKSA9PiBjb2xzLmluaXRTaG93ICE9PSBmYWxzZSk7XHJcbiAgICBjb25zdCBjb2xzID0gZGVmYXVsdFNob3dDb2xzLm1hcCgoY29sLCBpbmRleCkgPT4ge1xyXG4gICAgICAvLyDmm7/mjaIgZ2V0Q29sdW1ucyDmlrnms5XkuK3ljp/mnaXnmoQgZWxsaXBzaXMg5aSE55CG6YOo5YiGXHJcbiAgICAgIGlmIChjb2wuZWxsaXBzaXMgJiYgIWNvbC5yZW5kZXIpIHtcclxuICAgICAgICBjb2wuZWxsaXBzaXMgPSB7XHJcbiAgICAgICAgICBzaG93VGl0bGU6IGZhbHNlLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29sLnJlbmRlciA9ICh0ZXh0LCByZWNvcmQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAvLyDojrflj5blvZPliY3liJfnmoTlrp7ml7blrr3luqZcclxuICAgICAgICAgIGNvbnN0IGN1cnJlbnRDb2wgPSB0aGlzLnN0YXRlLmNvbHM/LmZpbmQoKGMpID0+IHtcclxuICAgICAgICAgICAgLy8g5aSE55CGIGRhdGFJbmRleCDlj6/og73mmK/lrZfnrKbkuLLmiJbmlbDnu4TnmoTmg4XlhrVcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYy5kYXRhSW5kZXgpICYmIEFycmF5LmlzQXJyYXkoY29sLmRhdGFJbmRleCkpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoYy5kYXRhSW5kZXgpID09PSBKU09OLnN0cmluZ2lmeShjb2wuZGF0YUluZGV4KVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGMuZGF0YUluZGV4ID09PSBjb2wuZGF0YUluZGV4O1xyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgY29uc3QgYWN0dWFsV2lkdGggPSBjdXJyZW50Q29sPy53aWR0aCB8fCBjb2wud2lkdGg7XHJcbiAgICAgICAgICBsZXQgY29sV2lkdGg6IGFueSA9IFwiMTAwJVwiO1xyXG5cclxuICAgICAgICAgIGlmIChhY3R1YWxXaWR0aCkge1xyXG4gICAgICAgICAgICBjb25zdCBzaXplID0gdGhpcy5zdGF0ZS50YWJsZVNpemUgfHwgdGhpcy5wcm9wcy5zaXplIHx8IFwiZGVmYXVsdFwiO1xyXG4gICAgICAgICAgICBjb25zdCBjb2xXaWR0aE9iaiA9IHtcclxuICAgICAgICAgICAgICBzbWFsbDogMTYsXHJcbiAgICAgICAgICAgICAgbWlkZGxlOiAxNixcclxuICAgICAgICAgICAgICBkZWZhdWx0OiAxNixcclxuICAgICAgICAgICAgICBsYXJnZTogMzIsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGNvbnN0IHBhZGRpbmdXaWR0aCA9IGNvbFdpZHRoT2JqW3NpemVdIHx8IDE2O1xyXG5cclxuICAgICAgICAgICAgaWYgKGFjdHVhbFdpZHRoID4gcGFkZGluZ1dpZHRoKSB7XHJcbiAgICAgICAgICAgICAgY29sV2lkdGggPSBhY3R1YWxXaWR0aCAtIHBhZGRpbmdXaWR0aDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBjb2xXaWR0aCA9IGFjdHVhbFdpZHRoO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiBcImlubGluZS10YWJsZVwiLCB3aWR0aDogXCIxMDAlXCIgfX0+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgcmVmPXsoZWwpID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKGVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5riF6Zmk5LmL5YmN55qEdGl0bGVcclxuICAgICAgICAgICAgICAgICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoXCJ0aXRsZVwiKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5qOA5p+l5paH5pys5piv5ZCm5rqi5Ye6XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsLnNjcm9sbFdpZHRoID4gZWwuY2xpZW50V2lkdGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShcInRpdGxlXCIsIHRleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLXRleHRcIil9XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICB3aWR0aDogY29sV2lkdGgsXHJcbiAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBcImhpZGRlblwiLFxyXG4gICAgICAgICAgICAgICAgICB0ZXh0T3ZlcmZsb3c6IFwiZWxsaXBzaXNcIixcclxuICAgICAgICAgICAgICAgICAgd2hpdGVTcGFjZTogXCJub3dyYXBcIixcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3RleHR9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChzb3J0RmllbGRzLmluZGV4T2YoY29sLmRhdGFJbmRleCkgPiAtMSkge1xyXG4gICAgICAgIGlmIChzb3J0VHlwZSA9PSBcInNpbmdsZVwiKSB7XHJcbiAgICAgICAgICBjb2wuc29ydGVyID0gdHJ1ZTtcclxuICAgICAgICAgIGNvbC5zb3J0T3JkZXIgPSBzb3J0SW5mb1tjb2wuZGF0YUluZGV4XVxyXG4gICAgICAgICAgICA/IHNvcnRJbmZvW2NvbC5kYXRhSW5kZXhdXHJcbiAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgICB9IGVsc2UgaWYgKHNvcnRUeXBlID09IFwibXVsdGlwbGVcIikge1xyXG4gICAgICAgICAgY29sLnNvcnRlciA9IHsgbXVsdGlwbGU6IGluZGV4IH07XHJcbiAgICAgICAgICBjb2wuc29ydE9yZGVyID0gc29ydEluZm9bY29sLmRhdGFJbmRleF1cclxuICAgICAgICAgICAgPyBzb3J0SW5mb1tjb2wuZGF0YUluZGV4XVxyXG4gICAgICAgICAgICA6IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBjb2w7XHJcbiAgICB9KTtcclxuICAgIGNvbHMubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICBpZiAoIWlzRW1wdHlPYmooaXRlbS5maWx0ZXJQcm9wcykpIHtcclxuICAgICAgICBsZXQgb2JqID0geyAuLi5pdGVtIH07XHJcbiAgICAgICAgY29uc3QgeyB0eXBlLCBwcm9wcywgc2VhcmNoS2V5IH0gPSBpdGVtLmZpbHRlclByb3BzO1xyXG4gICAgICAgIGxldCBEaXYgPSBudWxsO1xyXG4gICAgICAgIGxldCB0ZXh0ID0gaXRlbS50aXRsZTtcclxuICAgICAgICBEaXYgPSBnZXROb2RlKHR5cGUsIHtcclxuICAgICAgICAgIHBsYWNlaG9sZGVyOiBg5pCc57SiJHt0ZXh0fWAsXHJcbiAgICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICAgIHJlZjogdGhpcy50YWJsZVNlYXJjaFJlZixcclxuICAgICAgICB9KTtcclxuICAgICAgICBvYmogPSB7XHJcbiAgICAgICAgICBmaWx0ZXJEcm9wZG93bjogKHtcclxuICAgICAgICAgICAgc2V0U2VsZWN0ZWRLZXlzLFxyXG4gICAgICAgICAgICBzZWxlY3RlZEtleXMsXHJcbiAgICAgICAgICAgIGNvbmZpcm0sXHJcbiAgICAgICAgICAgIGNsZWFyRmlsdGVycyxcclxuICAgICAgICAgIH0pID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLXNlYXJjaFwiKX0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLXNlYXJjaC1zcGFjZVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIHtEaXZ9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxTcGFjZT5cclxuICAgICAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25maXJtKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGZpbHRlclBhcmFtcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdGaWx0ZXJQYXJhbXMgPSB7IC4uLmZpbHRlclBhcmFtcyB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGtleSA9IGl0ZW0uZmllbGQgfHwgaXRlbS5kYXRhSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICBuZXdGaWx0ZXJQYXJhbXNba2V5XSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVTZWFyY2hSZWYuY3VycmVudD8uZ2V0VmFsdWUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbXM6IHsgLi4ubmV3RmlsdGVyUGFyYW1zIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNvcnRQYXJhbSA9IHRoaXMuZ2V0U29ydFBhcmFtKHRoaXMuc3RhdGUuc29ydGVyKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUubG9hZCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogeyAuLi5uZXdGaWx0ZXJQYXJhbXMsIC4uLnNvcnRQYXJhbSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLXNlYXJjaC1idXR0b25cIil9XHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICDmn6Xor6JcclxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L1NwYWNlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGZpbHRlckljb246ICgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIDxTZWFyY2hPdXRsaW5lZCAvPjtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAuLi5vYmosXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb2xzW2luZGV4XSA9IG9iajtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gY29scztcclxuICB9XHJcbiAgcmVuZGVyVG9vbEJhcigpIHtcclxuICAgIGxldCB7IHRhYmxlU2l6ZSwgY29sdW1ucywgc29ydFR5cGUgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgeyBmaWx0ZXJDb2x1bW4sIGNvbHVtbnM6IGNvbExpc3RzLCB0b29sYmFyIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyB0YWJsZVRvb2wsIHN0b3JlUmVxdWVzdENvbmZpZyA9IHt9IH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0b29scyA9IFtcInJlZnJlc2hcIiwgXCJzaXplXCIsIFwic29ydFwiLCBcImNvbHVtblwiXTtcclxuICAgIGxldCB0b29sc0NsaWNrID0ge30gYXMgYW55O1xyXG4gICAgaWYgKHRvb2xiYXIgPT0gdHJ1ZSkge1xyXG4gICAgICB0b29scyA9IFtcInJlZnJlc2hcIiwgXCJzaXplXCIsIFwic29ydFwiLCBcImNvbHVtblwiXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRvb2xzID0gdG9vbGJhci50b29sc1xyXG4gICAgICAgID8gdG9vbGJhci50b29sc1xyXG4gICAgICAgIDogdGFibGVUb29sLnRvb2xzXHJcbiAgICAgICAgPyB0YWJsZVRvb2wudG9vbHNcclxuICAgICAgICA6IHRvb2xzO1xyXG4gICAgICB0b29sc0NsaWNrID0gdG9vbGJhci5vblRvb2xDbGljayA/IHRvb2xiYXIub25Ub29sQ2xpY2sgOiB7fTtcclxuICAgIH1cclxuICAgIGNvbnN0IHNpemVJdGVtID0gW1xyXG4gICAgICB7IHRpdGxlOiBcIuWuveadvlwiLCBrZXk6IFwiZGVmYXVsdFwiIH0sXHJcbiAgICAgIHsgdGl0bGU6IFwi5Lit562JXCIsIGtleTogXCJtaWRkbGVcIiB9LFxyXG4gICAgICB7IHRpdGxlOiBcIue0p+WHkVwiLCBrZXk6IFwic21hbGxcIiB9LFxyXG4gICAgXTtcclxuICAgIGNvbnN0IHNvcnRJdGVtID0gW1xyXG4gICAgICB7IHRpdGxlOiBcIuWNleWtl+auteaOkuW6j1wiLCBrZXk6IFwic2luZ2xlXCIgfSxcclxuICAgICAgeyB0aXRsZTogXCLlpJrlrZfmrrXmjpLluo9cIiwga2V5OiBcIm11bHRpcGxlXCIgfSxcclxuICAgIF07XHJcbiAgICBjb25zdCBzb3J0Q29udGVudCA9IChcclxuICAgICAgPD5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1jb3RlbnQtdGl0bGVcIil9XHJcbiAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICBjdXJzb3I6IHRoaXMuc3RhdGUuZGVmYXVsdFNvcnQgPyBcIm5vdC1hbGxvd2VkXCIgOiBcInBvaW50ZXJcIixcclxuICAgICAgICAgICAgY29sb3I6IHRoaXMuc3RhdGUuZGVmYXVsdFNvcnQgJiYgXCJyZ2JhKDAsMCwwLC40NSlcIixcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlLmRlZmF1bHRTb3J0KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzb3J0ZXI6IFtdLCBzb3J0SW5mbzoge30sIGRlZmF1bHRTb3J0OiB0cnVlIH0pO1xyXG4gICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7IC4uLnRoaXMuc3RhdGUuZmlsdGVyUGFyYW1zIH07XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUucmVsb2FkKHsgcGFyYW1zIH0pO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICDmgaLlpI3pu5jorqTmjpLluo9cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB7c29ydEl0ZW0ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGtleT17aXRlbS5rZXl9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgIHNvcnRlcjogW10sXHJcbiAgICAgICAgICAgICAgICAgIHNvcnRJbmZvOiB7fSxcclxuICAgICAgICAgICAgICAgICAgc29ydFR5cGU6IGl0ZW0ua2V5LFxyXG4gICAgICAgICAgICAgICAgICBkZWZhdWx0U29ydDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgLi4udGhpcy5zdGF0ZS5maWx0ZXJQYXJhbXMgfTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUucmVsb2FkKHsgcGFyYW1zIH0pO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7c29ydFR5cGUgPT0gaXRlbS5rZXkgPyAoXHJcbiAgICAgICAgICAgICAgICA8YT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1jb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IDIwIH19PlxyXG4gICAgICAgICAgICAgICAgICAgICAge3NvcnRUeXBlID09IGl0ZW0ua2V5ICYmIDxDaGVja091dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+IHtpdGVtLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1jb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSl9XHJcbiAgICAgICAge3RoaXMuc3RhdGUuc29ydGVyLmxlbmd0aCA+IDAgJiYgKFxyXG4gICAgICAgICAgPD5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLWNvdGVudC10aXRsZVwiKX1cclxuICAgICAgICAgICAgICBzdHlsZT17eyBjb2xvcjogXCJyZ2JhKDAsMCwwLC40NSlcIiB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAg5b2T5YmN5o6S5bqPXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB7dGhpcy5zdGF0ZS5zb3J0ZXIubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLWNvbnRlbnQtdGllbVwiKX1cclxuICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+XHJcbiAgICAgICAgICAgICAgICAgICAge2l0ZW0ub3JkZXIgPT0gXCJhc2NlbmRcIiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgIDxTb3J0QXNjZW5kaW5nT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgPFNvcnREZXNjZW5kaW5nT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0uY29sdW1uLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICA8Lz5cclxuICAgICAgICApfVxyXG4gICAgICA8Lz5cclxuICAgICk7XHJcbiAgICBjb25zdCBzaXplQ29udGVudCA9IChcclxuICAgICAgPD5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLWNvdGVudC10aXRsZVwiKX0+XHJcbiAgICAgICAgICDooajmoLzlr4bluqZcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB7c2l6ZUl0ZW0ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGtleT17aXRlbS5rZXl9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgIHRhYmxlU2l6ZTogaXRlbS5rZXksXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3RhYmxlU2l6ZSA9PSBpdGVtLmtleSA/IChcclxuICAgICAgICAgICAgICAgIDxhPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLWNvbnRlbnQtdGllbVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7dGFibGVTaXplID09IGl0ZW0ua2V5ICYmIDxDaGVja091dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+IHtpdGVtLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1jb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSl9XHJcbiAgICAgIDwvPlxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBkZWZhdWx0U2hvd0NvbHMgPSBjb2x1bW5zLmZpbHRlcigoY29scykgPT4gY29scy5pbml0U2hvdyAhPT0gZmFsc2UpO1xyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSAoXHJcbiAgICAgIDxDaGVja2JveC5Hcm91cFxyXG4gICAgICAgIG9uQ2hhbmdlPXt0aGlzLmZpbHRlckNvbHVtbi5iaW5kKHRoaXMpfVxyXG4gICAgICAgIG9wdGlvbnM9e2NvbExpc3RzLm1hcChcclxuICAgICAgICAgIChjb2w6IENvbHVtblR5cGU8e30+ICYgeyBmaWx0ZXJDb2x1bW46IGJvb2xlYW47IGRhdGFJbmRleDogYW55IH0pID0+IHtcclxuICAgICAgICAgICAgaWYgKCFjb2wuZGF0YUluZGV4KSB7XHJcbiAgICAgICAgICAgICAgY29sLmRhdGFJbmRleCA9IGNvbC50aXRsZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIGxhYmVsOiBjb2wudGl0bGUsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IGNvbC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IGNvbC5maWx0ZXJDb2x1bW4gPT09IGZhbHNlLFxyXG4gICAgICAgICAgICB9IGFzIENoZWNrYm94T3B0aW9uVHlwZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApfVxyXG4gICAgICAgIC8vIGRlZmF1bHRWYWx1ZT17ZGVmYXVsdFNob3dDb2xzLm1hcCgoY29sKSA9PiBjb2wuZGF0YUluZGV4KX1cclxuICAgICAgICB2YWx1ZT17XHJcbiAgICAgICAgICB0aGlzLnN0YXRlLmRlZmF1bHRDaGVja1xyXG4gICAgICAgICAgICA/IGRlZmF1bHRTaG93Q29scy5tYXAoKGNvbCkgPT4gY29sLmRhdGFJbmRleClcclxuICAgICAgICAgICAgOiB0aGlzLnN0YXRlLmNoZWNrQ29sdW1uXHJcbiAgICAgICAgfVxyXG4gICAgICA+PC9DaGVja2JveC5Hcm91cD5cclxuICAgICk7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLXRvb2wtYmFyXCIpfT5cclxuICAgICAgICB7dG9vbHMuaW5kZXhPZihcImNvbHVtblwiKSA+IC0xICYmIChcclxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZm9udFNpemU6IDE0IH19PlxyXG4gICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgIHRpdGxlPVwi6YCJ5oup5pi+56S655qE5YiXXCJcclxuICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVJpZ2h0XCJcclxuICAgICAgICAgICAgICB0cmlnZ2VyPVwiY2xpY2tcIlxyXG4gICAgICAgICAgICAgIG92ZXJsYXlTdHlsZT17eyBtaW5XaWR0aDogNDEwLCBtYXhXaWR0aDogNDUwIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8QXBwc3RvcmVPdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtdGgtYXBwLXN0b3JlLWljb25cIil9XHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICB7dG9vbHMuaW5kZXhPZihcInNvcnRcIikgPiAtMSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IHN0eWxlPXt7IG1hcmdpblJpZ2h0OiA4LCBmb250U2l6ZTogMTQgfX0+XHJcbiAgICAgICAgICAgIDxQb3BvdmVyIHBsYWNlbWVudD1cImJvdHRvbVwiIGNvbnRlbnQ9e3NvcnRDb250ZW50fSB0cmlnZ2VyPVwiY2xpY2tcIj5cclxuICAgICAgICAgICAgICA8U29ydEFzY2VuZGluZ091dGxpbmVkIC8+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAge3Rvb2xzLmluZGV4T2YoXCJzaXplXCIpID4gLTEgJiYgKFxyXG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBtYXJnaW5SaWdodDogOCwgZm9udFNpemU6IDE0IH19PlxyXG4gICAgICAgICAgICA8UG9wb3ZlciBwbGFjZW1lbnQ9XCJib3R0b21cIiBjb250ZW50PXtzaXplQ29udGVudH0gdHJpZ2dlcj1cImNsaWNrXCI+XHJcbiAgICAgICAgICAgICAgPENvbHVtbkhlaWdodE91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAge3Rvb2xzLmluZGV4T2YoXCJyZWZyZXNoXCIpID4gLTEgJiYgKFxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBzdHlsZT17eyBtYXJnaW5SaWdodDogOCwgZm9udFNpemU6IDE0LCBjdXJzb3I6IFwicG9pbnRlclwiIH19XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7IC4uLnRoaXMuc3RhdGUuZmlsdGVyUGFyYW1zIH07XHJcbiAgICAgICAgICAgICAgaWYgKHRvb2xzQ2xpY2sub25SZWZyZXNoKSB7XHJcbiAgICAgICAgICAgICAgICB0b29sc0NsaWNrLm9uUmVmcmVzaCgpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLmxvYWQoeyBwYXJhbXMgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8UmVkb091dGxpbmVkIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlLnNlbGVjdGVkUm93S2V5cztcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dEYXRhcygpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlLnNlbGVjdGVkUm93RGF0YXM7XHJcbiAgfVxyXG4gIHJlc2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogW10sXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IFtdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJvd1NlbGVjdGlvbk9uU2VsZWN0KHJlY29yZDogYW55LCBzZWxlY3RlZDogYW55KSB7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkUm93S2V5cywgc2VsZWN0ZWRSb3dEYXRhcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBuZXdTZWxlY3RlZFJvd0tleXMgPSBbLi4uc2VsZWN0ZWRSb3dLZXlzXTtcclxuICAgIGxldCBuZXdTZWxlY3RlZFJvd0RhdGFzID0gWy4uLnNlbGVjdGVkUm93RGF0YXNdO1xyXG4gICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgIG5ld1NlbGVjdGVkUm93S2V5cyA9IFsuLi5uZXdTZWxlY3RlZFJvd0tleXMsIHJlY29yZFtyb3dLZXldXTtcclxuICAgICAgbmV3U2VsZWN0ZWRSb3dEYXRhcyA9IFsuLi5uZXdTZWxlY3RlZFJvd0RhdGFzLCByZWNvcmRdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0gPT09IHJlY29yZFtyb3dLZXldKSB7XHJcbiAgICAgICAgICBuZXdTZWxlY3RlZFJvd0tleXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW1bcm93S2V5XSA9PT0gcmVjb3JkW3Jvd0tleV0pIHtcclxuICAgICAgICAgIG5ld1NlbGVjdGVkUm93RGF0YXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogbmV3U2VsZWN0ZWRSb3dLZXlzLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBuZXdTZWxlY3RlZFJvd0RhdGFzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJvd1NlbGVjdGlvbk9uU2VsZWN0QWxsKHNlbGVjdGVkOiBhbnksIHNlbGVjdGVkUm93czogYW55LCBjaGFuZ2VSb3dzOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgc2VsZWN0ZWRSb3dLZXlzLCBzZWxlY3RlZFJvd0RhdGFzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgbmV3aWRzOiBhbnkgPSBbXTtcclxuICAgIGxldCBuZXdkYXRhczogYW55ID0gW107XHJcbiAgICBpZiAoY2hhbmdlUm93cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBjaGFuZ2VJZHMgPSBjaGFuZ2VSb3dzLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtW3Jvd0tleV0pO1xyXG4gICAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAgICBuZXdpZHMgPSBbLi4uc2VsZWN0ZWRSb3dLZXlzLCAuLi5jaGFuZ2VJZHNdO1xyXG4gICAgICAgIG5ld2RhdGFzID0gWy4uLnNlbGVjdGVkUm93RGF0YXMsIC4uLmNoYW5nZVJvd3NdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNlbGVjdGVkUm93S2V5cy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNoYW5nZUlkcy5pbmRleE9mKGl0ZW0pID09IC0xKSB7XHJcbiAgICAgICAgICAgIG5ld2lkcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHNlbGVjdGVkUm93RGF0YXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChjaGFuZ2VJZHMuaW5kZXhPZihpdGVtW3Jvd0tleV0pID09IC0xKSB7XHJcbiAgICAgICAgICAgIG5ld2RhdGFzLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG5ld2lkcyA9IFsuLi5zZWxlY3RlZFJvd0tleXNdO1xyXG4gICAgICBuZXdkYXRhcyA9IFsuLi5zZWxlY3RlZFJvd0RhdGFzXTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IFsuLi5uZXdpZHNdLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBbLi4ubmV3ZGF0YXNdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJlbmRlcigpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXMsXHJcbiAgICAgIHtcclxuICAgICAgICBsb2FkaW5nLFxyXG4gICAgICAgIGRhdGFTb3VyY2UsXHJcbiAgICAgICAgcGFnaW5hdGlvbiA9IHt9LFxyXG4gICAgICAgIHNlYXJjaFRleHQsXHJcbiAgICAgICAgZmllbGRPcHRpb24sXHJcbiAgICAgICAgc2VhcmNoQ29sb3IsXHJcbiAgICAgICAgdGFibGVTaXplLFxyXG4gICAgICB9ID0gdGhpcy5zdGF0ZSxcclxuICAgICAgcHJvcHMgPSB1dGlscy5vbWl0KFxyXG4gICAgICAgIHRoaXMucHJvcHMsXHJcbiAgICAgICAgW1xyXG4gICAgICAgICAgXCJzdG9yZVwiLFxyXG4gICAgICAgICAgXCJvbkNoYW5nZVwiLFxyXG4gICAgICAgICAgXCJjb2x1bW5zXCIsXHJcbiAgICAgICAgICBcInJlc2V0Q29sdW1uXCIsXHJcbiAgICAgICAgICBcInRvb2xiYXJcIixcclxuICAgICAgICAgIFwic29ydEZpZWxkc1wiLFxyXG4gICAgICAgICAgXCJmaWx0ZXJDb2x1bW5cIixcclxuICAgICAgICAgIFwic29ydFNlYXJjaFwiLFxyXG4gICAgICAgICAgXCJzaG93Um93U2VsZWN0aW9uXCIsXHJcbiAgICAgICAgICBcInBhZ2VUeXBlXCIsXHJcbiAgICAgICAgXSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICByb3dLZXk6IFwiaWRcIixcclxuICAgICAgICAgIGNsaWNrQ2hhbmdlQ29sb3I6IGZhbHNlLFxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIGlmIChwcm9wcy5wYWdpbmF0aW9uICE9PSBmYWxzZSkge1xyXG4gICAgICBwcm9wcy5wYWdpbmF0aW9uID0ge1xyXG4gICAgICAgIHBvc2l0aW9uOiBbXCJib3R0b21SaWdodFwiXSxcclxuICAgICAgICBzaG93U2l6ZUNoYW5nZXI6IHRydWUsXHJcbiAgICAgICAgc2hvd1F1aWNrSnVtcGVyOiB0cnVlLFxyXG4gICAgICAgIC4uLnBhZ2luYXRpb24sXHJcbiAgICAgICAgLi4ucHJvcHMucGFnaW5hdGlvbixcclxuICAgICAgfTtcclxuICAgICAgaWYgKHByb3BzLnNob3dUb3RhbCA9PSB0cnVlKSB7XHJcbiAgICAgICAgcHJvcHMucGFnaW5hdGlvbi5zaG93VG90YWwgPSBmdW5jdGlvbiAodG90YWwsIFtmcm9tLCB0b10pIHtcclxuICAgICAgICAgIC8vIHJldHVybiBcIuaYvuekuiBcIiArIGZyb20gKyBcIiAtIFwiICsgdG8gKyBcIuadoe+8jOWFsSBcIiArIHRvdGFsICsgXCIg5p2hXCI7XHJcbiAgICAgICAgICByZXR1cm4gXCLlhbEgXCIgKyB0b3RhbCArIFwiIOadoVwiO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHByb3BzLm9uQ2hhbmdlID0gZnVuY3Rpb24gKHBhZ2luYXRpb24sIGZpbHRlcnMsIHNvcnRlciwgZXh0cmEpIHtcclxuICAgICAgX3RoaXMub25DaGFuZ2UoX3RoaXMuc3RhdGUucGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSk7XHJcbiAgICB9O1xyXG4gICAgaWYgKHByb3BzLmNsaWNrQ2hhbmdlQ29sb3IpIHtcclxuICAgICAgY29uc3Qgb25Sb3dGbiA9IHByb3BzLm9uUm93O1xyXG4gICAgICBwcm9wcy5vblJvdyA9IGZ1bmN0aW9uIChyZWNvcmQsIGluZGV4KSB7XHJcbiAgICAgICAgdmFyIGN1c3RvbSA9IG9uUm93Rm4gPyBvblJvd0ZuKHJlY29yZCwgaW5kZXgpIDoge307XHJcbiAgICAgICAgY29uc3Qgb25DbGlja0ZuID0gY3VzdG9tLm9uQ2xpY2s7XHJcbiAgICAgICAgY3VzdG9tLm9uQ2xpY2sgPSAoZXZlbnQpID0+IHtcclxuICAgICAgICAgIF90aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgYWN0aXZlSW5kZXg6IGluZGV4LCAvL+iOt+WPlueCueWHu+ihjOeahOe0ouW8lVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB1dGlscy5jYWxsYmFjayhvbkNsaWNrRm4sIF90aGlzLCBbZXZlbnRdKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBjdXN0b207XHJcbiAgICAgIH07XHJcbiAgICAgIHByb3BzLnJvd0NsYXNzTmFtZSA9IGZ1bmN0aW9uIChyZWNvcmQsIGluZGV4KSB7XHJcbiAgICAgICAgcmV0dXJuIGluZGV4ID09PSBfdGhpcy5zdGF0ZS5hY3RpdmVJbmRleFxyXG4gICAgICAgICAgPyBcIm5zYy10YWJsZS1jbGlja1Jvd1N0eWxlXCJcclxuICAgICAgICAgIDogXCJcIjtcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGxldCBuZXdEYXRhU291cmNlID0gW107XHJcbiAgICBpZiAoc2VhcmNoVGV4dCkge1xyXG4gICAgICBjb25zdCBkYXRhID0gdHJlZVV0aWxzLmdldFNlYXJjaE1lbnVEYXRhcyhcclxuICAgICAgICB0aGlzLFxyXG4gICAgICAgIHNlYXJjaFRleHQsXHJcbiAgICAgICAgZmllbGRPcHRpb24sXHJcbiAgICAgICAgc2VhcmNoQ29sb3JcclxuICAgICAgKTtcclxuICAgICAgbmV3RGF0YVNvdXJjZSA9IGRhdGEudHJlZURhdGFzO1xyXG4gICAgICBwcm9wcy5leHBhbmRlZFJvd0tleXMgPSBkYXRhLm9wZW5LZXlzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV3RGF0YVNvdXJjZSA9IGRhdGFTb3VyY2U7XHJcbiAgICB9XHJcbiAgICBwcm9wcy5zdG9yZSA9IHByb3BzLnN0b3JlIHx8IHt9O1xyXG4gICAgcHJvcHMuc3RvcmUuYXV0b0xvYWQgPSBwcm9wcy5zdG9yZS5hdXRvTG9hZCA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWU7XHJcbiAgICBjb25zdCB7IGRyYWdhYmxlIH0gPSBfdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGRyYWdhYmxlUHJvcHMgPVxyXG4gICAgICBkcmFnYWJsZSA9PT0gdHJ1ZVxyXG4gICAgICAgID8ge1xyXG4gICAgICAgICAgICBjb21wb25lbnRzOiBCb2R5Um93Q29tcG9uZW50LFxyXG4gICAgICAgICAgICBvblJvdzogKHJlY29yZCwgaW5kZXgpID0+ICh7XHJcbiAgICAgICAgICAgICAgaW5kZXgsXHJcbiAgICAgICAgICAgICAgcmVjb3JkLFxyXG4gICAgICAgICAgICAgIG1vdmVSb3c6IHRoaXMubW92ZVJvdyxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgOiB7fTtcclxuICAgIGxldCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuXHJcbiAgICBjb25zdCByZXNpemVQcm9wcyA9XHJcbiAgICAgIHJlc2l6ZUNvbHVtbiA9PT0gdHJ1ZSA/IHsgY29tcG9uZW50czogdGhpcy5jb21wb25lbnRzIH0gOiBudWxsO1xyXG4gICAgY29uc3QgeyB0YWJsZVRvb2wgfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHRvb2xGbGFnID0gdHJ1ZTtcclxuICAgIGxldCB0b29scHJvcHMgPVxyXG4gICAgICB0aGlzLnByb3BzLnRvb2xiYXIgPT09IGZhbHNlIHx8IHRoaXMucHJvcHMudG9vbGJhcj8uc2hvdyA9PT0gZmFsc2VcclxuICAgICAgICA/IGZhbHNlXHJcbiAgICAgICAgOiB0cnVlO1xyXG4gICAgaWYgKCF0b29scHJvcHMpIHtcclxuICAgICAgdG9vbEZsYWcgPSB0b29scHJvcHM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0b29sRmxhZyA9IHRhYmxlVG9vbC5zaG93ID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnByb3BzLnNob3dSb3dTZWxlY3Rpb24pIHtcclxuICAgICAgY29uc3QgeyByb3dTZWxlY3Rpb24gPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgcHJvcHMgPSB7XHJcbiAgICAgICAgLi4ucHJvcHMsXHJcbiAgICAgICAgcm93U2VsZWN0aW9uOiB7XHJcbiAgICAgICAgICBzZWxlY3RlZFJvd0tleXM6IHRoaXMuc3RhdGUuc2VsZWN0ZWRSb3dLZXlzLFxyXG4gICAgICAgICAgb25TZWxlY3Q6IHRoaXMucm93U2VsZWN0aW9uT25TZWxlY3QuYmluZCh0aGlzKSxcclxuICAgICAgICAgIG9uU2VsZWN0QWxsOiB0aGlzLnJvd1NlbGVjdGlvbk9uU2VsZWN0QWxsLmJpbmQodGhpcyksXHJcbiAgICAgICAgICBjb2x1bW5XaWR0aDogNDAsXHJcbiAgICAgICAgICAuLi5yb3dTZWxlY3Rpb24sXHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgdGFibGVQcm9wczogY29uZmlnVGFibGVQcm9wcyB9ID0gY29uZmlnKCk7XHJcbiAgICBjb25zdCBEZWZhdWx0VGFibGUgPSAoXHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGVcIil9PlxyXG4gICAgICAgIHt0b29sRmxhZyAmJiB0aGlzLnJlbmRlclRvb2xCYXIoKX1cclxuICAgICAgICA8VGFibGVcclxuICAgICAgICAgIGNoaWxkcmVuQ29sdW1uTmFtZT1cImNoaWxkTm9kZXNcIlxyXG4gICAgICAgICAgc2hlaXRlbVxyXG4gICAgICAgICAgZGF0YVNvdXJjZT17bmV3RGF0YVNvdXJjZX1cclxuICAgICAgICAgIGNvbHVtbnM9e3RoaXMuZ2V0Q29sdW1ucygpfVxyXG4gICAgICAgICAgbG9hZGluZz17bG9hZGluZ31cclxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1jb250ZW50XCIpLCBwcm9wcy5jbGFzc05hbWUpfVxyXG4gICAgICAgICAgbG9jYWxlPXt7XHJcbiAgICAgICAgICAgIGVtcHR5VGV4dDogKFxyXG4gICAgICAgICAgICAgIDxOb0RhdGEgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtbm9kYXRhXCIpfSAvPlxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIHNjcm9sbD17eyB4OiBcIm1heC1jb250ZW50XCIgfX1cclxuICAgICAgICAgIHsuLi5jb25maWdUYWJsZVByb3BzfVxyXG4gICAgICAgICAgey4uLnJlc2l6ZVByb3BzfVxyXG4gICAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICAgICAgey4uLmRyYWdhYmxlUHJvcHN9XHJcbiAgICAgICAgICBzaXplPXt0YWJsZVNpemV9XHJcbiAgICAgICAgICBwYWdpbmF0aW9uPXtmYWxzZX1cclxuICAgICAgICAgIC8vIHN0eWxlPXt7IGhlaWdodDogNjAwIH19XHJcbiAgICAgICAgLz5cclxuICAgICAgICB7cHJvcHMucGFnaW5hdGlvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1wYWdpbmF0aW9uXCIpfT5cclxuICAgICAgICAgICAgPFBhZ2luYXRpb25cclxuICAgICAgICAgICAgICB7Li4ucHJvcHMucGFnaW5hdGlvbn1cclxuICAgICAgICAgICAgICBvbkNoYW5nZT17KHBhZ2UsIHBhZ2VTaXplKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBleHRyYSA9IHRoaXMuc3RhdGUuZXh0cmE7XHJcbiAgICAgICAgICAgICAgICBleHRyYS5hY3Rpb24gPSBcInBhZ2luYXRlXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKCh7IHBhZ2luYXRpb24gPSB7fSB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFnaW5hdGlvbjogeyAuLi5wYWdpbmF0aW9uLCBjdXJyZW50OiBwYWdlLCBwYWdlU2l6ZSB9LFxyXG4gICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKFxyXG4gICAgICAgICAgICAgICAgICB7IGN1cnJlbnQ6IHBhZ2UsIHBhZ2VTaXplIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuZmlsdGVyLFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnNvcnRlcixcclxuICAgICAgICAgICAgICAgICAgZXh0cmFcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gZHJhZ2FibGUgPT09IHRydWUgPyAoXHJcbiAgICAgIDxEbmRQcm92aWRlciBiYWNrZW5kPXtIVE1MNUJhY2tlbmR9PntEZWZhdWx0VGFibGV9PC9EbmRQcm92aWRlcj5cclxuICAgICkgOiAoXHJcbiAgICAgIERlZmF1bHRUYWJsZVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHdpdGhaaExvY2FsZShOU0NUYWJsZSk7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FDRUEsZ0JBQWdCLEVBQ2hCQyxhQUFhLEVBQ2JDLG9CQUFvQixFQUNwQkMsY0FBYyxFQUNkQyxxQkFBcUIsRUFDckJDLHNCQUFzQixFQUN0QkMsWUFBWSxRQUNQLG1CQUFtQjtBQUMxQixTQUFTQyxVQUFVLFFBQVEsbUJBQW1CO0FBQzlDLE9BQU9DLEtBQUssSUFBSUMsU0FBUyxRQUFvQixhQUFhO0FBQzFELFNBQVNDLEtBQUssUUFBUSx1QkFBdUI7QUFlN0MsT0FBTyxLQUFLQyxLQUFLLE1BQU0sT0FBTztBQUM5QixTQUFTQyxXQUFXLFFBQVEsV0FBVztBQUN2QyxPQUFPQyxPQUFPLElBQUlDLGNBQWMsRUFBRUMsYUFBYSxRQUFRLG1CQUFtQjtBQUMxRSxPQUFPQyxTQUFTLE1BQU0saUJBQWlCO0FBQ3ZDLE9BQU8scUJBQXFCO0FBQzVCLE1BQU07RUFBRUMsZ0JBQWdCO0VBQUVDO0FBQWEsQ0FBQyxHQUFHTCxPQUFPO0FBQ2xELE9BQU9NLFlBQVksTUFBTSx3QkFBd0I7QUFDakQsU0FBU0MsU0FBUyxRQUFRLGlCQUFpQjtBQUMzQyxPQUFPLHNCQUFzQjtBQUM3QixTQUFTQyxPQUFPLEVBQUVDLE9BQU8sUUFBeUIsYUFBYTtBQUMvRCxPQUFPQyxNQUFNLE1BQU0sMEJBQTBCO0FBQzdDLFNBQVNDLFVBQVUs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
|