nsc-react-component 4.3.0 → 4.3.2
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/importData/index.js +7 -6
- package/lib/base/importData/index.js.map +1 -1
- package/lib/base/modal/index.js +1 -1
- package/lib/base/modal/index.js.map +1 -1
- package/lib/base/tree/index.d.ts +4 -0
- package/lib/base/tree/index.js +11 -4
- package/lib/base/tree/index.js.map +1 -1
- package/lib/page/BasePage/index.js +7 -3
- package/lib/page/BasePage/index.js.map +1 -1
- package/lib/page/FormPage/index.d.ts +3 -1
- package/lib/page/FormPage/index.js +14 -10
- package/lib/page/FormPage/index.js.map +1 -1
- package/lib/page/SettingForm/index.d.ts +3 -3
- package/lib/page/SettingForm/index.js +6 -9
- package/lib/page/SettingForm/index.js.map +1 -1
- package/lib/page/SettingTable/index.d.ts +1 -0
- package/lib/page/SettingTable/index.js +14 -121
- package/lib/page/SettingTable/index.js.map +1 -1
- package/lib/page/SettingUtil/utils.d.ts +17 -1
- package/lib/page/SettingUtil/utils.js +68 -35
- package/lib/page/SettingUtil/utils.js.map +1 -1
- package/package.json +1 -1
- package/lib/page/SettingForm/com.d.ts +0 -81
- package/lib/page/SettingForm/com.js +0 -81
- package/lib/page/SettingForm/com.js.map +0 -1
- package/lib/page/SettingTable/com.d.ts +0 -81
- package/lib/page/SettingTable/com.js +0 -81
- package/lib/page/SettingTable/com.js.map +0 -1
|
@@ -766,7 +766,10 @@ class BasePage extends PureComponent {
|
|
|
766
766
|
requestParams = {}
|
|
767
767
|
} = this.props;
|
|
768
768
|
let queryParams = requestParams.queryParams;
|
|
769
|
-
return convertStringToObj(queryParams, this.props.Utils || {}
|
|
769
|
+
return convertStringToObj(queryParams, this.props.Utils || {}, {
|
|
770
|
+
funcs: this.props.funcs,
|
|
771
|
+
pageRef: this.props.pageRef
|
|
772
|
+
});
|
|
770
773
|
// if (queryParams && typeof queryParams == "string") {
|
|
771
774
|
// const Utils = this.props.Utils || {};
|
|
772
775
|
// let func = new Function("Utils", queryParams);
|
|
@@ -1233,10 +1236,11 @@ class BasePage extends PureComponent {
|
|
|
1233
1236
|
addParams: requestParams.addParams,
|
|
1234
1237
|
editorParams: requestParams.editorParams
|
|
1235
1238
|
},
|
|
1236
|
-
funcs: this.props.funcs
|
|
1239
|
+
funcs: this.props.funcs,
|
|
1240
|
+
pageRef: this.props.pageRef
|
|
1237
1241
|
}, formPageProps), formButton)));
|
|
1238
1242
|
}
|
|
1239
1243
|
}
|
|
1240
1244
|
_defineProperty(BasePage, "convertColumns", convertColumns);
|
|
1241
1245
|
export default BasePage;
|
|
1242
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsIkRvd25PdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwiRWRpdE91dGxpbmVkIiwiUmlnaHRPdXRsaW5lZCIsIlBsdXNPdXRsaW5lZCIsIkVsbGlwc2lzT3V0bGluZWQiLCJEZWxldGVPdXRsaW5lZCIsImNvbnZlckZ1bmN0aW9uIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiZ2V0QnV0dG9uUGVybWlzc29ucyIsIkhlYWRlclNlYXJjaCIsImNvbnZlcnRDb2x1bW5zIiwiZ2V0TmV3Q29sdW1ucyIsInRocm90dGxlIiwiY29udmVydFN0cmluZ1RvT2JqIiwic3R5bGVzIiwiQmFzZVBhZ2UiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX3R5cGUiLCJfc2l6ZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsImNoZWNrZWRUcmVlS2V5cyIsIm5hbWUiLCJ1c2VyVHlwZSIsImFjY291bnQiLCJzdGF0ZSIsInZhbHVlIiwiZGVwdElkIiwib25TZWFyY2giLCJzZWxlY3RlZCIsInJlcyIsImtleSIsImtleXMiLCJsZW5ndGgiLCJ0YWJsZVdyYXBwZXJSZWYiLCJjdXJyZW50IiwidGFibGVIZWFkZXIiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwiaGVhZGVySGVpZ2h0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiaGVpZ2h0IiwidGFibGVIZWFkZXJIZWlnaHQiLCJzZXRTdGF0ZSIsImNhbGN1bGF0ZVRhYmxlSGVhZGVySGVpZ2h0Iiwic3RvcmVQcmVmaXgiLCJ0eXBlIiwiY29udGVudCIsInNpemUiLCJzZWxlY3RlZFJvd0tleXMiLCJzZWxlY3RlZFJvd0RhdGFzIiwidHJlZVNlbGVjdGVkS2V5IiwiZXhwYW5kIiwiZm9ybVR5cGUiLCJ0YWJsZVNpemUiLCJ0cmVlU2VhcmNoUHJhbXMiLCJwb3BvcGVucyIsIm1vcmVPcGVuIiwiZWxlbWVudEhlaWdodCIsInBlcm1pc3Npb25CdXR0b25zIiwicXVlcnlQYXJhbXMiLCJidXR0b25zTG9hZGluZyIsInRyZWVXaWR0aCIsInNob3dMZWZ0IiwiY29tcG9uZW50RGlkTW91bnQiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQiLCJpbml0RGF0YSIsInBlcm1pc3NvbiIsInBhZ2VSZWYiLCJjbGllbnRIZWlnaHQiLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwidGhyb3R0bGVDYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCIsInNldFRpbWVvdXQiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQyIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwic2V0U2VhcmNoUGFyYW1zIiwicGFyYW1zIiwiY2FsbEJhY2siLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUiLCJzZWFyY2hSZWYiLCJkb1N1Ym1pdCIsImRhdGEiLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUiLCJsYWJlbCIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsImVkaXRvclJlZiIsInNob3dGb3JtIiwiX3RoaXMkcHJvcHMkZm9ybVBhZ2VQIiwiZWRpdG9yZmxhZyIsImZvcm1QYWdlUHJvcHMiLCJfdGhpcyRwcm9wcyRmb3JtUGFnZVAyIiwiZnVuY3MiLCJwYXRobmFtZSIsImNvbmNhdCIsInRhYmxlQ29kZSIsImlkIiwiaGlzdG9yeSIsInNlcnZpY2VOYW1lIiwic2VydmljZVBhdGgiLCJEYXRlIiwiZ2V0VGltZSIsInRpdGxlIiwiX3RoaXMkZWRpdG9yUmVmIiwibmV3VmFsdWUiLCJfb2JqZWN0U3ByZWFkIiwic2hvdyIsImhpZGVGb3JtIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlMiIsInNldExvYWRpbmciLCJsb2FkaW5nIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlMyIsInNldEVkaXRGb3JtVmFsdWVzIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlNCIsInNldEZvcm1WYWx1ZSIsImdldEVkaXRGb3JtVmFsdWVzIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlNSIsImdldEZvcm1WYWx1ZSIsIm9uRGVsZXRlIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMiIsImRlbGV0ZVBvc2l0aW9uIiwiZGVsZXRlVXJsIiwiZGVsZXRlUGFyYW1zIiwiYnV0dG9uQ2xpY2siLCJyZXF1ZXN0UGFyYW1zIiwicmVxdWVzdFVybHMiLCJyZXF1ZXN0Q29uZmlnIiwiX3RoaXMiLCJ0YWJsZVJlZiIsImdldFNlbGVjdGVkUm93S2V5cyIsImdldFNlbGVjdGVkUm93RGF0YXMiLCJ1cmwiLCJ3YXJuaW5nIiwiY29uZmlybSIsIm9uT2siLCJyZWNvcmQiLCJpZHMiLCJVdGlscyIsIkVycm9yIiwiZGF0YVBhcmFtcyIsIm90aGVyUGFyYW1zIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwiZGVmYXVsdFBhcmFtcyIsIm1ldGhvZCIsImF1dG9QcmVmaXgiLCJqb2luIiwiZmluYWxQYXJhbXMiLCJ0aGVuIiwiY29kZSIsIl90aGlzJHNlYXJjaFJlZiIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYyIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzIiLCJzdWNjZXNzIiwiZ2V0U2VhcmNoVmFsdWVzIiwib25DYWxsQmFja3MiLCJvbkRlbGV0ZUNhbGxCYWNrIiwidGFibGVMb2FkIiwiZXJyb3IiLCJjYXRjaCIsImNvbnNvbGUiLCJsb2ciLCJfdGFibGVTdG9yZSRyZXF1ZXN0Q28iLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4zIiwiZGVmYXVsdFJlcXVlc3RDb25maWciLCJ0YWJsZVByb3BzIiwic3RvcmUiLCJ0YWJsZVN0b3JlIiwiY29udmVydFF1ZXJ5UGFyYW1zIiwicmVxdWVzdENvbmlnIiwic3RvcmVDb25maWciLCJzdG9yZVBhcmFtcyIsIm90aGVyU3RvcmVDb25maWciLCJfZXhjbHVkZWQyIiwibG9hZCIsIl90YWJsZVN0b3JlJHJlcXVlc3RDbzIiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMzIiwib25RdWVyeUNhbGxCYWNrIiwidGFibGVSZWxvYWQiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW40IiwiYXV0b0xvYWQiLCJyZWxvYWQiLCJjYWxsYmFjayIsIl9yZXMkZGF0YSIsInJlY29yZHMiLCJjdXJyZW50UGFnZSIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjUiLCJ0cmVlTG9hZCIsIl90aGlzJHRyZWVSZWYkY3VycmVudCIsInRyZWVSZWYiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW42IiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNyIsInNldFNlbGVjdGVkUm93S2V5cyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjgiLCJzZXRTZWxlY3RlZFJvd0RhdGFzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuOSIsInJlc2V0U2VsZWN0ZWRSb3dLZXlzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMTAiLCJfdGhpcyRzZWFyY2hSZWYyIiwiZnJvbVZhbHVlIiwiZ2V0Q2hpbGRyZW5EYXRhIiwicm93S2V5IiwicmVzS2V5IiwiY2hpbGROb2RlcyIsImNoaWxkcmVuIiwibWFwIiwiaXRlbSIsImluZGV4IiwicmVuZGVyVG9vbEJ1dHRvbnMiLCJ0b29sYnV0dG9ucyIsInRvb2xiYXJGbGFnIiwiZmxhZyIsInNob3dTZWFyY2giLCJfaXRlbSRwcm9wcyIsInBhZ2VUeXBlIiwib25DbGljayIsImljb24iLCJfZXhjbHVkZWQzIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsIl9leHRlbmRzIiwic3R5bGUiLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJwbGFjZW1lbnQiLCJvcGVuIiwib25PcGVuQ2hhbmdlIiwicmVuZGVyQ2xvdW1uQnV0dG9uIiwiY29sdW1uQnV0dG9ucyIsInJvd1JlY29yZCIsImFjdGlvblByb3BzIiwiYmFzZUFjdGlvbkNvbHVtbiIsIm5ld0J1dHRvbnMiLCJzaG93SWNvbiIsIl9pdGVtJHByb3BzMiIsInJlY29yZFNob3ciLCJfZXhjbHVkZWQ0IiwiZXZlbnRPcHRpb24iLCJVaXRscyIsImZ1bmMiLCJGdW5jdGlvbiIsInB1c2giLCJlIiwiZXZhbCIsIm51bWJlciIsImJ1dHRvbk51bWJlciIsIl9pdGVtJHByb3BzMyIsIl9leGNsdWRlZDUiLCJOdW1iZXIiLCJfaXRlbSRwcm9wczQiLCJfZXhjbHVkZWQ2IiwidHJpZ2dlciIsInRyZWVTZWxlY3QiLCJzZWxlY3RlZEtleXMiLCJvYmoiLCJfdGhpcyRzZWFyY2hSZWYzIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzUiLCJrZXl3b3JkIiwic2VhcmNoS2V5Iiwic2VhcmNoRmllbGQiLCJwYXJhbnRTZWxlY3QiLCJ0cmVlUHJvcHMiLCJzZWxlY3RlZE5vZGVzIiwiZGF0YXJlZiIsImF0dHJpYnV0ZSIsImlzTGVhZiIsIm9uVHJlZVNlbGVjdCIsInRyZWVTZWxlY3RDYWxsQmFjayIsInJlc2V0U2VhcmNoIiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlMiIsInJlc2V0RmllbGRzIiwiZ2V0VGV4dCIsInRleHQiLCJfcHJvcHMkZGF0YSIsIm5ld1RleHQiLCJpIiwic2V0VGFibGVEYXRhIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMTEiLCJzZXREYXRhIiwic2V0VHJlZURhdGEiLCJfdGhpcyR0cmVlUmVmJGN1cnJlbnQyIiwiaGFuZGxlTW91c2VEb3duIiwicHJldmVudERlZmF1bHQiLCJtYXNrIiwiZG9jdW1lbnQiLCJjc3NUZXh0IiwiYm9keSIsImFwcGVuZENoaWxkIiwiaGFuZGxlTW91c2VNb3ZlIiwibmV3V2lkdGgiLCJzY3JlZW5YIiwidGhyb3R0bGVkTW91c2VNb3ZlIiwiaGFuZGxlTW91c2VVcCIsImdldEVsZW1lbnRCeUlkIiwicmVtb3ZlQ2hpbGQiLCJyZW5kZXIiLCJfdGhpczIiLCJfdGFibGVQcm9wcyR0b29sYmFyIiwiX3RhYmxlUHJvcHMkdG9vbGJhcjIiLCJfdGhpcyRwcm9wcyRmb3JtUGFnZVAzIiwiY29sdW1ucyIsInN1Ym1pdFVybCIsInN1Ym1pdFBhcmFtcyIsInNob3dUb29sQnV0dG9uIiwiYnV0dG9ucyIsImVkaXRvckZvcm0iLCJvblNob3dGb3JtIiwiZm9ybUNoYW5nZVZhbGlkIiwidG9vbEJ1dHRvblBvc2l0aW9uIiwicGVybWlzc2lvbiIsImhhcyIsImZpbHRlckNvbHVtbiIsImFjdGlvbkNvbHVtbiIsInNob3dSb3dTZWxlY3Rpb24iLCJjb2x1bW5PcmRlciIsImV4cGFuZGFibGUiLCJ0YWJsZVRpdGxlIiwib3RoZXJ0YWJsZVBhcmFtcyIsIl9leGNsdWRlZDciLCJuZXdUYWJsZVN0b3JlIiwiX25ld1RhYmxlU3RvcmUkcmVxdWVzIiwidHJlZVN0b3JlIiwidHJlZVNlYXJjaCIsInRpdGxlQWxpYXMiLCJ0cmVlVGl0bGUiLCJvdGhlcnRyZWVQYXJhbXMiLCJfZXhjbHVkZWQ4IiwidGFibGVQYXJhbXMiLCJsaXN0ZW5lcnMiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM2IiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNyIsInRhYmxlTG9hZENhbGxCYWNrIiwiZGVmYXVsdFZhbHVlIiwibWVudUNvZGUiLCJwZXJtaXNzb25zIiwidGFibGVDb2x1bW4iLCJzZWFyY2hGb3JtcyIsImVkaXRvckZvcm1zIiwidG9vbEJ1dHRvbnMiLCJmb3JtQnV0dG9uIiwiYnV0dG9uTWFwIiwiZWRpdG9yIiwiZGVsZXRlIiwic2VhcmNoIiwicmV0dXJuQnV0dG9uIiwiX2J1dHRvbk1hcCRjb2RlIiwiZGVmYXVsdFByb3BzIiwib25FZGl0b3IiLCJfdGhpczIkcHJvcHMkb25DYWxsQmEiLCJfdGhpczIkcHJvcHMkb25DYWxsQmEyIiwib25FZGl0b3JDYWxsQmFjayIsIm9uU2VhcmNoQ2FsbEJhY2siLCJjaGVja1BlcnNzaW9uIiwiaW5kZXhPZiIsIm9uQWRkIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjOCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzkiLCJvbkFkZENhbGxCYWNrIiwiYmluZCIsImRhbmdlciIsIkFycmF5IiwiaXNBcnJheSIsImNoaWxkIiwiX2NoaWxkJHByb3BzIiwiX2NoaWxkJHByb3BzMiIsIl9jaGlsZCRwcm9wczMiLCJfY2hpbGQkcHJvcHM0IiwiX2NoaWxkJHByb3BzNSIsIl9jaGlsZCRwcm9wczYiLCJfY2hpbGQkcHJvcHM3IiwiX2l0ZW0kcHJvcHM1IiwiX2l0ZW0kcHJvcHM2IiwiX2l0ZW0kcHJvcHM3IiwiX2l0ZW0kcHJvcHM4IiwiX2l0ZW0kcHJvcHM5IiwiZGF0YUluZGV4IiwiYWxpZ24iLCJ0ZXh0QWxpZ24iLCJ3aWR0aCIsImZpeGVkIiwicmVhY29yZCIsIkZyYWdtZW50Iiwic2VhcmNoRmxhZyIsInRhYmxlVG9vbCIsInRvb2xGbGFnIiwidG9vbGJhciIsInRvb2xzIiwidG9vbEhlaWdodCIsInBhZGRpbmdIZWlnaHQiLCJ0YWJsZUNvbnRlbnRIZWlnaHQiLCJQYWdpbmF0aW9uSGVpZ2h0IiwicGFnaW5hdGlvbiIsInRhYmxlSGVpZ2h0IiwidGFibGVTcm9sbEhlaWdodCIsInNjcm9sbCIsIngiLCJ5IiwicmVmIiwicGFnZVRpdGxlIiwiZGlzcGxheSIsIm9uTW91c2VEb3duIiwiY2hlY2thYmxlIiwic2VhcmNoYWJsZSIsIm9uU2VsZWN0Iiwib25SZXNldCIsIl90aGlzJHNlYXJjaFJlZiRjdXJyZTMiLCJzZWFyY2hGb3JtUHJvcHMiLCJwYWdlQ29udGVudFJlZiIsImV4cGFuZEljb24iLCJfcmVmIiwiX3JlY29yZCRjaGlsZE5vZGVzIiwiX3JlY29yZCRjaGlsZE5vZGVzMiIsImV4cGFuZGVkIiwib25FeHBhbmQiLCJvbkNoYW5nZSIsIm9uVG9vbENsaWNrIiwib25SZWZyZXNoIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMTAiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMxMSIsIm9uU3VtYml0Q2FsbEJhY2siLCJmb3JtcyIsIm9uU3VibWl0Iiwib25IaWRlRm9ybSIsIm9uRm9ybUNoYW5nZSIsImNoYW5nZVZhbGlkIiwicmVxdWVzdE9iamVjdCIsImFkZFVybCIsImVkaXRvclVybCIsImFkZFBhcmFtcyIsImVkaXRvclBhcmFtcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2UvQmFzZVBhZ2UvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50LCBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IFRhYmxlIGZyb20gXCIuLi8uLi9iYXNlL3RhYmxlXCI7XHJcbmltcG9ydCBUcmVlIGZyb20gXCIuLi8uLi9iYXNlL3RyZWVcIjtcclxuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vLi4vYmFzZS9idXR0b25cIjtcclxuaW1wb3J0IE1vZGFsIGZyb20gXCIuLi8uLi9iYXNlL21vZGFsXCI7XHJcbmltcG9ydCBQb3BvdmVyIGZyb20gXCIuLi8uLi9iYXNlL3BvcG92ZXJcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgRWRpdG9yRm9ybSwgeyBGb3JtUGFnZVByb3BzIH0gZnJvbSBcIi4uL0Zvcm1QYWdlL2luZGV4XCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IFwiLi9pbmRleC5tb2R1bGUubGVzc1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgUGFnZVN0b3JlLCBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIERvd25PdXRsaW5lZCxcclxuICBFeWVPdXRsaW5lZCxcclxuICBFZGl0T3V0bGluZWQsXHJcbiAgUmlnaHRPdXRsaW5lZCxcclxuICBQbHVzT3V0bGluZWQsXHJcbiAgRWxsaXBzaXNPdXRsaW5lZCxcclxuICBEZWxldGVPdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IHsgY29udmVyRnVuY3Rpb24sIGdldExlc3MsIGdldE5vZGUsIHNpbXBsaWZ5Q29sdW1ucyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgcmVxdWVzdCBmcm9tIFwibnNjLXJlcXVlc3RcIjtcclxuaW1wb3J0IGNvbmZpZyBmcm9tIFwiLi4vLi4vY29uZmlnXCI7XHJcbmltcG9ydCB7IGdldFN0b3JhZ2UsIHB4MnZ3LCBnZXRCdXR0b25QZXJtaXNzb25zIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCBIZWFkZXJTZWFyY2ggZnJvbSBcIi4uL0hlYWRlclNlYXJjaFwiO1xyXG5pbXBvcnQgeyBQYWdpbmF0aW9uUHJvcHMgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgbnNjZmlsZSBmcm9tIFwibnNjLWZpbGVcIjtcclxuaW1wb3J0IHsgY29udmVydENvbHVtbnMsIGdldE5ld0NvbHVtbnMgfSBmcm9tIFwiLi91dGlsc1wiO1xyXG5pbXBvcnQgaXNFcXVhbCBmcm9tIFwibG9kYXNoL2lzRXF1YWxcIjtcclxuaW1wb3J0IHRocm90dGxlIGZyb20gXCJsb2Rhc2gvdGhyb3R0bGVcIjtcclxuaW1wb3J0IENvbXBvdW5kZWRTcGFjZSBmcm9tIFwiYW50ZC9lcy9zcGFjZVwiO1xyXG5pbXBvcnQgeyBjb252ZXJ0U3RyaW5nVG9PYmogfSBmcm9tIFwiLi4vU2V0dGluZ1V0aWwvdXRpbHNcIjtcclxudHlwZSBCdXR0b25JdGVtID1cclxuICB8IHN0cmluZ1xyXG4gIHwge1xyXG4gICAgICBjb2RlOiBzdHJpbmc7XHJcbiAgICAgIHJlY29yZFNob3c/OiBzdHJpbmcgfCBGdW5jdGlvbjtcclxuICAgICAgcHJvcHM/OiBhbnk7XHJcbiAgICB9O1xyXG5cclxuaW50ZXJmYWNlIFRhYmxlUHJvcHMge1xyXG4gIGFjdGlvbkNvbHVtbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65pON5L2c5YiXXHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIGZpbHRlckNvbHVtbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S66L+H5ruk5oyJ6ZKuXHJcbiAgc2hvd1Jvd1NlbGVjdGlvbj86IGJvb2xlYW47IC8v5piv5ZCm6KGo5qC85Yu+6YCJ5YiXXHJcbiAgcGFnaW5hdGlvbj86IGJvb2xlYW4gfCBQYWdpbmF0aW9uUHJvcHM7IC8v5piv5ZCm5pi+56S65YiG6aG1XHJcbiAgY29sdW1uT3JkZXI/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuihqOagvOW6j+WIl1xyXG4gIFtwcm9wc05hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5jb25zdCBzdHlsZXMgPSBudWxsO1xyXG5pbnRlcmZhY2UgVHJlZVByb3BzIHtcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgc2hvd1NlYXJjaD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65pCc57Si5qGGXHJcbiAgc2VhcmNoS2V5Pzogc3RyaW5nOyAvL+aQnOe0onZhbHVl5a+55bqU55qEa2V5XHJcbiAgc2VhcmNoRmllbGQ/OiBzdHJpbmc7IC8v5p+l6K+i5a+55bqU55qEa2V5XHJcbiAgdGl0bGVBbGlhcz86IHN0cmluZzsgLy/moJF0aXRsZeWvueW6lOeahGtleSzpu5jorqR0aXRsZVxyXG4gIG5vZGVQb3Jwcz86IG9iamVjdDtcclxuICBwYXJhbnRTZWxlY3Q/OiBib29sZWFuO1xyXG4gIFtwcm9wc05hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5pbnRlcmZhY2UgRm9ybVByb3BzIGV4dGVuZHMgRm9ybVBhZ2VQcm9wcyB7fVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBOU0NCYXNlQmFnZVByb3BzIHtcclxuICBzaG93U2VhcmNoPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrlpLTpg6jmkJzntKLmoI9cclxuICB0YWJsZVByb3BzPzogVGFibGVQcm9wczsgLy/ooajmoLzlj4LmlbBcclxuICB0cmVlUHJvcHM/OiBUcmVlUHJvcHM7IC8v5bem5L6n5qCR5Y+C5pWwXHJcbiAgc3VibWl0UGFyYW1zPzogT2JqZWN0OyAvL+a3u+WKoOWPguaVsO+8jOm7mOiupG1vdGhvZDpwb3N077yMIOWPguaVsOmAmui/h2RhdGHkvKDpgJJcclxuICBzdWJtaXRVcmw/OiBzdHJpbmc7XHJcbiAgb25TdWJtaXQ/OiAodmFsdWU/OiBhbnksIGxhYmVsPzogYW55KSA9PiB2b2lkO1xyXG4gIGNvbHVtbnM/OiBBcnJheTxPYmplY3Q+O1xyXG4gIHNob3dMZWZ0PzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrlt6bkvqfnm67lvZXmoJFcclxuICBzaG93VG9vbEJ1dHRvbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65oyJ6ZKu5qCPXHJcbiAgZWRpdG9yRm9ybT86IGJvb2xlYW47IC8v5piv5ZCm6ZyA6KaB6KGo5Y2V5Yqf6IO9ICwg5Li6ZmFsc2Ug57yW6L6R77yM5p+l55yL77yM5paw5aKe5Yqf6IO95Z2H5LiN5Y+v55SoXHJcbiAgZGVsZXRlVXJsPzogc3RyaW5nOyAvL+WIoOmZpHVybFxyXG4gIG9uRGVsZXRlPzogKHNlbGVjdGVkS2V5cz86IEFycmF5PHN0cmluZz4pID0+IHZvaWQ7IC8v5Yig6Zmk5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HaWRz5ou85o6l5Lyg6YCS57uZ5ZCO5Y+wXHJcbiAgZGVsZXRlUGFyYW1zPzogT2JqZWN0O1xyXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xyXG4gIG9uU2VhcmNoPzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gIG9uUmVzZXQ/OiAoKSA9PiB2b2lkO1xyXG4gIGluaXREYXRhPzogYW55OyAvL+WIneWni+WMluWbnuiwg+WHveaVsO+8jOWcqGNvbXBvbmVudERpZE1vdW505Lit6LCD55SoXHJcbiAgYnV0dG9ucz86IEJ1dHRvbkl0ZW1bXTsgLy/mjInpkq7pm4blkIggIFsnYWRkJywnZGVsZXRlJywnc2VhcmNoJywnZWRpdG9yJywnZGVsZXRlX2JhdGNoJ11cclxuICBvblNob3dGb3JtPzogKHZhbHVlPzogYW55LCBlZGl0b3JGbGFnPzogc3RyaW5nKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uSGlkZUZvcm0/OiAoKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uRm9ybUNoYW5nZT86IChjaGFuZ2VkVmFsdWVzPzogYW55LCBhbGxWYWx1ZXM/OiBhbnkpID0+IHZvaWQ7IC8v6KGo5Y2Vb25DaGFuZ2Xlm57osINcclxuICBmb3JtVHlwZT86IFwibW9kYWxcIiB8IFwiZHJhd2VyXCIgfCBcInBhZ2VcIjtcclxuICBmb3JtQ2hhbmdlVmFsaWQ/OiBib29sZWFuOyAvL+ihqOWNleagoemqjFxyXG4gIGNsYXNzTmFtZT86IGFueTtcclxuICB0b29sQnV0dG9uUG9zaXRpb24/OiBcInJpZ2h0XCIgfCBcImJ1dHRvbVwiO1xyXG4gIHBhZ2VUaXRsZT86IHN0cmluZyB8IFJlYWN0Tm9kZTtcclxuICBhY3Rpb25Qcm9wcz86IHtcclxuICAgIHRleHRBbGlnbj86IHN0cmluZztcclxuICAgIHNob3dJY29uPzogYm9vbGVhbjtcclxuICAgIHdpZHRoPzogbnVtYmVyO1xyXG4gICAgYnV0dG9uTnVtYmVyPzogbnVtYmVyIHwgXCJhbGxcIjtcclxuICB9O1xyXG4gIHNlYXJjaEZvcm1Qcm9wcz86IHsgd3JhcHBlckNvbD86IGFueTsgbGFiZWxDb2w/OiBhbnkgfTtcclxuICBvblRyZWVTZWxlY3Q/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25DYWxsQmFja3M/OiB7XHJcbiAgICB0cmVlU2VsZWN0Q2FsbEJhY2s/OiBhbnk7IC8v5qCR54K55Ye75p+l6K+i5ZCO5Zue6LCDXHJcbiAgICBvblF1ZXJ5Q2FsbEJhY2s/OiBhbnk7IC8v5p+l6K+i5Zue6LCD77yM5p+l6K+i5pWw5o2u5ZCO5Zue6LCDXHJcbiAgICBvblN1bWJpdENhbGxCYWNrPzogYW55OyAvL+S/neWtmOWbnuiwg++8jOS/neWtmOaVsOaNruaIkOWKn+WQjuWbnuiwg1xyXG4gICAgb25EZWxldGVDYWxsQmFjaz86IGFueTsgLy/liKDpmaTmjInpkq7lm57osIPvvIzliKDpmaTmlbDmja7lkI7miafooYxcclxuICAgIG9uRWRpdG9yQ2FsbEJhY2s/OiBhbnk7IC8v57yW6L6R5oyJ6ZKu5Zue6LCD77yM5omT5byA5by55qGG5ZCO5omn6KGMXHJcbiAgICBvbkFkZENhbGxCYWNrPzogYW55OyAvL+a3u+WKoOaMiemSruWbnuiwg++8jOaJk+W8gOW8ueahhuWQjuaJp+ihjFxyXG4gICAgb25TZWFyY2hDYWxsQmFjaz86IGFueTsgLy/liJfooajmn6Xor6LmjInpkq7lm57osIPvvIzmiZPlvIDlvLnmoYblkI7miafooYxcclxuICAgIHRhYmxlTG9hZENhbGxCYWNrPzogYW55OyAvL+WIl+ihqOafpeivouWbnuiwgy0tbG9hZFxyXG4gIH07XHJcbiAgcGFnZVR5cGU/OiBcIm5vcm1hbFwiIHwgXCJ0YWJzcGFnZVwiO1xyXG4gIGZvcm1QYWdlUHJvcHM/OiBGb3JtUGFnZVByb3BzO1xyXG4gIGJ1dHRvbkNsaWNrPzoge1xyXG4gICAgb25BZGQ/OiAoKSA9PiB2b2lkO1xyXG4gICAgb25FZGl0b3I/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgICBvblNlYXJjaD86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICAgIG9uRGVsZXRlPzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gIH07XHJcbiAgcGVybWlzc2lvbj86IHtcclxuICAgIGhhcz86IGJvb2xlYW47XHJcbiAgICBtZW51Q29kZT86IHN0cmluZztcclxuICB9O1xyXG4gIHJlcXVlc3RQYXJhbXM/OiB7XHJcbiAgICAvL+mcgOimgemineWkluS8oOeahOWbuuWumuivt+axguWPguaVsFxyXG4gICAgYWRkUGFyYW1zPzogT2JqZWN0OyAvL+aWsOWinuWbuuWumuWPguaVsFxyXG4gICAgZWRpdG9yUGFyYW1zPzogT2JqZWN0OyAvL+e8lui+keWbuuWumuWPguaVsFxyXG4gICAgcXVlcnlQYXJhbXM/OiBPYmplY3Q7IC8v5p+l6K+i5Zu65a6a5Y+C5pWwXHJcbiAgICBkZWxldGVQYXJhbXM/OiBPYmplY3Q7IC8v5Yig6Zmk5Zu65a6a5Y+C5pWwXHJcbiAgfTtcclxuICByZXF1ZXN0VXJscz86IHtcclxuICAgIGFkZFVybD86IHN0cmluZzsgLy/mlrDlop51cmxcclxuICAgIGVkaXRvclVybD86IHN0cmluZzsgLy/nvJbovpF1cmxcclxuICAgIGRlbGV0ZVVybD86IHN0cmluZzsgLy/liKDpmaR1cmxcclxuICB9O1xyXG4gIGZ1bmNzPzogYW55O1xyXG4gIHJlcXVlc3RDb25maWc/OiBhbnk7XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5jbGFzcyBCYXNlUGFnZSBleHRlbmRzIFB1cmVDb21wb25lbnQ8TlNDQmFzZUJhZ2VQcm9wcywgYW55PiB7XHJcbiAgdGFibGVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHRyZWVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHNlYXJjaFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZWRpdG9yUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBwYWdlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBwYWdlQ29udGVudFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZGF0ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICB0YWJsZVdyYXBwZXJSZWYgPSBSZWFjdC5jcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XHJcbiAgc3RhdGljIGNvbnZlcnRDb2x1bW5zID0gY29udmVydENvbHVtbnM7XHJcbiAgY29uc3RydWN0b3IocHJvcHM6IGFueSkge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgbGV0IHsgc3RvcmVQcmVmaXggfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHR5cGUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCItXCIgKyBcImZvcm1UeXBlXCIgOiBcImZvcm1UeXBlXCJcclxuICAgICk7XHJcbiAgICB0eXBlID0gdHlwZT8uY29udGVudDtcclxuICAgIGxldCBzaXplID0gZ2V0U3RvcmFnZShcclxuICAgICAgc3RvcmVQcmVmaXggPyBzdG9yZVByZWZpeCArIFwiLVwiICsgXCJ0YWJsZVNpemVcIiA6IFwidGFibGVTaXplXCJcclxuICAgICk7XHJcbiAgICBzaXplID0gc2l6ZT8uY29udGVudDtcclxuICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgIHR5cGU6IFwiYWRkXCIsXHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogW10sXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IFtdLFxyXG4gICAgICB0cmVlU2VsZWN0ZWRLZXk6IFwiXCIsXHJcbiAgICAgIGV4cGFuZDogZmFsc2UsXHJcbiAgICAgIGZvcm1UeXBlOiB0eXBlIHx8IFwibW9kYWxcIixcclxuICAgICAgdGFibGVTaXplOiBzaXplIHx8IFwiZGVmYXVsdFwiLFxyXG4gICAgICB0cmVlU2VhcmNoUHJhbXM6IHt9LFxyXG4gICAgICBwb3BvcGVuczoge30sXHJcbiAgICAgIG1vcmVPcGVuOiBmYWxzZSxcclxuICAgICAgZWxlbWVudEhlaWdodDogMCxcclxuICAgICAgcGVybWlzc2lvbkJ1dHRvbnM6IFtdLFxyXG4gICAgICBxdWVyeVBhcmFtczoge30sXHJcbiAgICAgIHRhYmxlSGVhZGVySGVpZ2h0OiAwLCAvLyDmt7vliqDooajlpLTpq5jluqbliLBzdGF0ZVxyXG4gICAgICBidXR0b25zTG9hZGluZzoge30sXHJcbiAgICAgIHRyZWVXaWR0aDogdGhpcy5wcm9wcy5zaG93TGVmdCA/IDI2MCA6IDAsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IGluaXREYXRhLCBwZXJtaXNzb24gPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGVsZW1lbnRIZWlnaHQgPSB0aGlzLnBhZ2VSZWYuY3VycmVudD8uY2xpZW50SGVpZ2h0O1xyXG5cclxuICAgIC8vIOa3u+WKoOeql+WPo3Jlc2l6ZeebkeWQrFxyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgdGhpcy50aHJvdHRsZUNhbGN1bGF0ZVRhYmxlSGVhZGVySGVpZ2h0KTtcclxuXHJcbiAgICAvLyDliJ3lp4vorqHnrpfooajlpLTpq5jluqZcclxuICAgIHNldFRpbWVvdXQodGhpcy5jYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCwgMCk7XHJcblxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGVsZW1lbnRIZWlnaHQsXHJcbiAgICB9KTtcclxuICAgIGluaXREYXRhICYmIGluaXREYXRhKCk7XHJcbiAgfVxyXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMpIHtcclxuICAgIGNvbnN0IGVsZW1lbnRIZWlnaHQgPSB0aGlzLnBhZ2VSZWYuY3VycmVudD8uY2xpZW50SGVpZ2h0O1xyXG4gICAgaWYgKGVsZW1lbnRIZWlnaHQgPiB0aGlzLnN0YXRlLmVsZW1lbnRIZWlnaHQpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgZWxlbWVudEhlaWdodCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAocHJldlByb3BzLnNob3dMZWZ0ICE9PSB0aGlzLnByb3BzLnNob3dMZWZ0KSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHRyZWVXaWR0aDogdGhpcy5wcm9wcy5zaG93TGVmdCA/IDI2MCA6IDAsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcclxuICAgIC8vIOenu+mZpHJlc2l6ZeebkeWQrFxyXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXHJcbiAgICAgIFwicmVzaXplXCIsXHJcbiAgICAgIHRoaXMudGhyb3R0bGVDYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodFxyXG4gICAgKTtcclxuICB9XHJcbiAgc2V0U2VhcmNoUGFyYW1zKHBhcmFtcywgY2FsbEJhY2spIHtcclxuICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnNldFNlYXJjaFBhcmFtcyhwYXJhbXMpO1xyXG4gICAgY2FsbEJhY2sgJiYgY2FsbEJhY2socGFyYW1zKTtcclxuICB9XHJcbiAgZG9TdWJtaXQoZGF0YSwgbGFiZWwgPSBcIue8lui+kVwiKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5kb1N1Ym1pdChkYXRhLCBsYWJlbCk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdCA9IChjaGVja2VkVHJlZUtleXM6IGFueSkgPT4ge1xyXG4gICAgY29uc3QgeyBuYW1lLCB1c2VyVHlwZSwgYWNjb3VudCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHZhbHVlID0geyBuYW1lLCB1c2VyVHlwZSwgYWNjb3VudCwgZGVwdElkOiBjaGVja2VkVHJlZUtleXNbMF0gfTtcclxuICAgIGlmICh0aGlzLnByb3BzLm9uU2VhcmNoKSB7XHJcbiAgICAgIHRoaXMucHJvcHMub25TZWFyY2godmFsdWUpO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy50YWJsZUxvYWQodmFsdWUpO1xyXG4gIH07XHJcblxyXG4gIC8v5pi+56S66KGo5Y2VXHJcbiAgc2hvd0Zvcm0odmFsdWU/OiBhbnksIGVkaXRvcmZsYWcgPSBcImFkZFwiLCBjYWxsQmFjaz86IGFueSkge1xyXG4gICAgaWYgKHRoaXMucHJvcHMuZm9ybVBhZ2VQcm9wcz8uZm9ybVR5cGUgPT0gXCJwYWdlXCIpIHtcclxuICAgICAgY29uc3QgeyBmdW5jcyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICBsZXQgcGF0aG5hbWUgPSBgL2Zvcm1wYWdlLyR7ZWRpdG9yZmxhZyA/IGVkaXRvcmZsYWcgOiBcImFkZFwifS90YWJsZS8ke1xyXG4gICAgICAgIHRoaXMucHJvcHMudGFibGVDb2RlXHJcbiAgICAgIH1gO1xyXG4gICAgICBpZiAoZWRpdG9yZmxhZyA9PSBcImVkaXRvclwiIHx8IGVkaXRvcmZsYWcgPT0gXCJzZWFyY2hcIikge1xyXG4gICAgICAgIHBhdGhuYW1lID0gcGF0aG5hbWUgKyBcIj9pZD1cIiArIHZhbHVlLmlkO1xyXG4gICAgICB9XHJcbiAgICAgIGZ1bmNzPy5oaXN0b3J5KFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHBhdGhuYW1lOiBwYXRobmFtZSxcclxuICAgICAgICAgIHNlcnZpY2VOYW1lOiBcInNldHRpbmctd2ViXCIsXHJcbiAgICAgICAgICBzZXJ2aWNlUGF0aDogXCIvc2V0dGluZ1wiLFxyXG4gICAgICAgICAgaWQ6XHJcbiAgICAgICAgICAgIG5ldyBEYXRlKCkuZ2V0VGltZSgpICtcclxuICAgICAgICAgICAgKHZhbHVlPy5pZCB8fCBcIl9cIikgK1xyXG4gICAgICAgICAgICBlZGl0b3JmbGFnICtcclxuICAgICAgICAgICAgXCLigJRcIiArXHJcbiAgICAgICAgICAgIHRoaXMucHJvcHMudGFibGVDb2RlICtcclxuICAgICAgICAgICAgKHZhbHVlPy5pZCA/IFwiX1wiICsgdmFsdWUuaWQgOiBcIlwiKSxcclxuICAgICAgICAgIHRpdGxlOlxyXG4gICAgICAgICAgICBg44CQJHtcclxuICAgICAgICAgICAgICBlZGl0b3JmbGFnID09IFwiYWRkXCJcclxuICAgICAgICAgICAgICAgID8gXCLmlrDlop5cIlxyXG4gICAgICAgICAgICAgICAgOiBlZGl0b3JmbGFnID09IFwiZWRpdG9yXCJcclxuICAgICAgICAgICAgICAgID8gXCLnvJbovpFcIlxyXG4gICAgICAgICAgICAgICAgOiBcIuafpeeci1wiXHJcbiAgICAgICAgICAgIH3jgJFgICsgdGhpcy5wcm9wcy5mb3JtUGFnZVByb3BzPy50aXRsZSB8fCBcIlwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJhZGRUYWJcIlxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IG5ld1ZhbHVlID0gdmFsdWUgPyB7IC4uLnZhbHVlIH0gOiBudWxsO1xyXG4gICAgICB0aGlzLmVkaXRvclJlZj8uY3VycmVudD8uc2hvdyhuZXdWYWx1ZSwgZWRpdG9yZmxhZywgY2FsbEJhY2spO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy/lhbPpl63ooajljZVcclxuICBoaWRlRm9ybSgpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBzZXRMb2FkaW5nKGxvYWRpbmc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNldExvYWRpbmcobG9hZGluZyk7XHJcbiAgfVxyXG5cclxuICBzZXRFZGl0Rm9ybVZhbHVlcyh2YWx1ZSwgdHlwZSA9IFwi57yW6L6RXCIpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNldEZvcm1WYWx1ZSh2YWx1ZSwgdHlwZSk7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0Rm9ybVZhbHVlcygpIHtcclxuICAgIHJldHVybiB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5nZXRGb3JtVmFsdWUoKTtcclxuICB9XHJcblxyXG4gIC8v5om56YeP5Yig6ZmkXHJcbiAgb25EZWxldGUoZGF0YT86IGFueSwgZGVsZXRlUG9zaXRpb24gPSBcInJvd1wiKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGRlbGV0ZVVybCxcclxuICAgICAgb25EZWxldGUsXHJcbiAgICAgIGRlbGV0ZVBhcmFtcyA9IHt9LFxyXG4gICAgICBidXR0b25DbGljayA9IHt9LFxyXG4gICAgICByZXF1ZXN0UGFyYW1zID0ge30sXHJcbiAgICAgIHJlcXVlc3RVcmxzID0ge30sXHJcbiAgICAgIHJlcXVlc3RDb25maWcgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGNvbnN0IHNlbGVjdGVkUm93S2V5cyA9IHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgICBjb25zdCBzZWxlY3RlZFJvd0RhdGFzID0gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0RhdGFzKCk7XHJcbiAgICBsZXQgdXJsID0gcmVxdWVzdFVybHMuZGVsZXRlVXJsID8gcmVxdWVzdFVybHMuZGVsZXRlVXJsIDogZGVsZXRlVXJsO1xyXG4gICAgbGV0IHBhcmFtczogYW55ID0gcmVxdWVzdFBhcmFtcy5kZWxldGVQYXJhbXNcclxuICAgICAgPyByZXF1ZXN0UGFyYW1zLmRlbGV0ZVBhcmFtc1xyXG4gICAgICA6IGRlbGV0ZVBhcmFtcztcclxuICAgIGlmIChkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIikge1xyXG4gICAgICBpZiAoc2VsZWN0ZWRSb3dLZXlzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgbWVzc2FnZS53YXJuaW5nKFwi6K+36YCJ5oup6KaB5Yig6Zmk55qE5pWw5o2u77yBXCIpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgTW9kYWwuY29uZmlybSh7XHJcbiAgICAgIGNvbnRlbnQ6IFwi5piv5ZCm56Gu6K6k5Yig6Zmk5omA6YCJ6aG577yfXCIsXHJcbiAgICAgIC8vIGNlbnRlcmVkOnRydWUsXHJcbiAgICAgIG9uT2s6ICgpID0+IHtcclxuICAgICAgICBpZiAoYnV0dG9uQ2xpY2sub25EZWxldGUpIHtcclxuICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICBidXR0b25DbGljay5vbkRlbGV0ZSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICByZWNvcmQ6IGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dEYXRhcyA6IGRhdGEsXHJcbiAgICAgICAgICAgICAgaWRzOiBkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cyA6IGRhdGE/LmlkLFxyXG4gICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob25EZWxldGUpIHtcclxuICAgICAgICAgIG9uRGVsZXRlICYmXHJcbiAgICAgICAgICAgIG9uRGVsZXRlKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dLZXlzIDogZGF0YSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdXJsKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1cmzkuI3og73kuLrnqbrvvIFcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHsgZGF0YTogZGF0YVBhcmFtcyA9IHt9LCAuLi5vdGhlclBhcmFtcyB9ID0gcGFyYW1zO1xyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRQYXJhbXMgPSB7XHJcbiAgICAgICAgICBtZXRob2Q6IFwicG9zdFwiLFxyXG4gICAgICAgICAgYXV0b1ByZWZpeDogdHJ1ZSxcclxuICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICBpZHM6IGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dLZXlzLmpvaW4oKSA6IGRhdGEuaWQsXHJcbiAgICAgICAgICAgIC4uLmRhdGFQYXJhbXMsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGxldCBmaW5hbFBhcmFtcyA9IHt9IGFzIGFueTtcclxuICAgICAgICBmaW5hbFBhcmFtcyA9IHsgLi4uZGVmYXVsdFBhcmFtcywgLi4ub3RoZXJQYXJhbXMgfTtcclxuICAgICAgICByZXF1ZXN0KHVybCwge1xyXG4gICAgICAgICAgLi4uZmluYWxQYXJhbXMsXHJcbiAgICAgICAgfSlcclxuICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXM6IGFueSkge1xyXG4gICAgICAgICAgICBjb25zdCB7IGNvZGUgfSA9IHJlcztcclxuICAgICAgICAgICAgaWYgKGNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgIG1lc3NhZ2Uuc3VjY2VzcyhcIuWIoOmZpOaIkOWKn++8gVwiKTtcclxuICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBfdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkRlbGV0ZUNhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRGVsZXRlQ2FsbEJhY2ssXHJcbiAgICAgICAgICAgICAgICAgIHsgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgX3RoaXMudGFibGVMb2FkKHZhbHVlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLmVycm9yKFwi5Yig6Zmk5aSx6LSl77yBXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZXJyb3IpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgdGFibGVMb2FkKHBhcmFtczogYW55LCByZXF1ZXN0Q29uZmlnID0ge30pIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgcmVxdWVzdENvbmZpZzogZGVmYXVsdFJlcXVlc3RDb25maWcgPSB7fSxcclxuICAgICAgcmVxdWVzdFBhcmFtcyA9IHt9LFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgc3RvcmU6IHRhYmxlU3RvcmUgPSB7fSB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCBxdWVyeVBhcmFtczogYW55ID0gdGhpcy5jb252ZXJ0UXVlcnlQYXJhbXMoKTtcclxuICAgIGxldCBkYXRhID0gcXVlcnlQYXJhbXMuZGF0YSB8fCBxdWVyeVBhcmFtcy5wYXJhbXMgfHwge307XHJcblxyXG4gICAgbGV0IGZpbmFsUGFyYW1zID0ge1xyXG4gICAgICAuLi5kYXRhLFxyXG4gICAgICAuLi50YWJsZVN0b3JlLnJlcXVlc3RDb25maWc/LnBhcmFtcyxcclxuICAgICAgLi4ucGFyYW1zLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHsgcmVxdWVzdENvbmlnOiBzdG9yZUNvbmZpZyA9IHt9IH0gPSB0YWJsZVN0b3JlO1xyXG4gICAgY29uc3QgeyBwYXJhbXM6IHN0b3JlUGFyYW1zID0ge30sIC4uLm90aGVyU3RvcmVDb25maWcgfSA9IHN0b3JlQ29uZmlnO1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZS5sb2FkKHtcclxuICAgICAgLi4uZGVmYXVsdFJlcXVlc3RDb25maWcsXHJcbiAgICAgIC4uLm90aGVyU3RvcmVDb25maWcsXHJcbiAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgIHBhcmFtczogeyAuLi5zdG9yZVBhcmFtcywgLi4uZmluYWxQYXJhbXMgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICAvL+afpeivolxyXG4gIG9uU2VhcmNoKHBhcmFtcykge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBvblNlYXJjaCxcclxuICAgICAgb25DYWxsQmFja3MsXHJcbiAgICAgIHJlcXVlc3RQYXJhbXMgPSB7fSxcclxuICAgICAgdGFibGVQcm9wcyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHN0b3JlOiB0YWJsZVN0b3JlID0ge30gfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHRoaXMuY29udmVydFF1ZXJ5UGFyYW1zKCk7XHJcbiAgICBsZXQgZGF0YSA9IHF1ZXJ5UGFyYW1zLmRhdGEgfHwgcXVlcnlQYXJhbXMucGFyYW1zIHx8IHt9O1xyXG4gICAgbGV0IGZpbmFsUGFyYW1zID0ge1xyXG4gICAgICAuLi5kYXRhLFxyXG4gICAgICAuLi50YWJsZVN0b3JlLnJlcXVlc3RDb25maWc/LnBhcmFtcyxcclxuICAgICAgLi4ucGFyYW1zLFxyXG4gICAgfTtcclxuICAgIGlmIChvblNlYXJjaCkge1xyXG4gICAgICBvblNlYXJjaCh7IC4uLmZpbmFsUGFyYW1zLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy50YWJsZUxvYWQoeyAuLi5maW5hbFBhcmFtcywgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfSk7XHJcbiAgICBvbkNhbGxCYWNrcz8ub25RdWVyeUNhbGxCYWNrICYmXHJcbiAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uUXVlcnlDYWxsQmFjayxcclxuICAgICAgICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiwgcGFyYW1zOiBwYXJhbXMgfSxcclxuICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIC8v6KGo5qC86YeN5paw5Yqg6L29XHJcbiAgdGFibGVSZWxvYWQocGFyYW1zID0ge30sIGF1dG9Mb2FkID0gdHJ1ZSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8ucmVsb2FkKHtcclxuICAgICAgY2FsbGJhY2s6IChyZXMpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBhdXRvTG9hZCAmJlxyXG4gICAgICAgICAgcmVzPy5kYXRhPy5yZWNvcmRzPy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgdGhpcy5zdGF0ZS5jdXJyZW50UGFnZSAhPT0gMVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8ucmVsb2FkKHtcclxuICAgICAgICAgICAgcGFyYW1zOiB7IGN1cnJlbnQ6IDEsIC4uLnBhcmFtcyB9LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHRyZWVMb2FkKHBhcmFtczogYW55LCByZXF1ZXN0Q29uZmlnID0ge30pIHtcclxuICAgIGNvbnN0IHsgcmVxdWVzdENvbmZpZzogZGVmYXVsdFJlcXVlc3RDb25maWcgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIHRoaXMudHJlZVJlZi5jdXJyZW50Py5zdG9yZS5sb2FkKHtcclxuICAgICAgLi4uZGVmYXVsdFJlcXVlc3RDb25maWcsXHJcbiAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgIHBhcmFtczogcGFyYW1zLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0RhdGFzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dEYXRhcygpO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0tleXMoZGF0YTogQXJyYXk8U3RyaW5nIHwgTnVtYmVyPikge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uc2V0U2VsZWN0ZWRSb3dLZXlzKGRhdGEpO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0RhdGFzKGRhdGE6IEFycmF5PE9iamVjdD4pIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnNldFNlbGVjdGVkUm93RGF0YXMoZGF0YSk7XHJcbiAgfVxyXG4gIHJlc2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8ucmVzZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICB9XHJcblxyXG4gIGdldFNlYXJjaFZhbHVlcygpIHtcclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgIHJldHVybiB7IC4uLmZyb21WYWx1ZSwgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfTtcclxuICB9XHJcblxyXG4gIGdldENoaWxkcmVuRGF0YShkYXRhLCBrZXlzID0gW10pIHtcclxuICAgIGNvbnN0IHsgdGFibGVQcm9wcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgcm93S2V5ID0gXCJpZFwiIH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IHJlc0tleSA9IFtdO1xyXG4gICAgbGV0IGtleSA9IFwiXCI7XHJcbiAgICBpZiAoZGF0YS5jaGlsZE5vZGVzKSB7XHJcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gZGF0YS5jaGlsZE5vZGVzO1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiByb3dLZXkgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICBrZXkgPSByb3dLZXkoaXRlbSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGtleSA9IGl0ZW1bcm93S2V5XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW0uY2hpbGROb2Rlcykge1xyXG4gICAgICAgICAgdGhpcy5nZXRDaGlsZHJlbkRhdGEoaXRlbS5jaGlsZE5vZGVzLCBrZXlzKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVzS2V5ID0gWy4uLmtleXMsIGtleV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJlc0tleSA9IFsuLi5rZXlzLCBrZXldO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc0tleTtcclxuICB9XHJcblxyXG4gIHJlbmRlclRvb2xCdXR0b25zKHRvb2xidXR0b25zOiBhbnksIHRvb2xiYXJGbGFnKSB7XHJcbiAgICBjb25zdCBmbGFnID0gdG9vbGJ1dHRvbnMubGVuZ3RoID4gNTtcclxuICAgIGNvbnN0IHsgc2hvd1NlYXJjaCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBjb250ZW50ID0gdG9vbGJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIGljb24sIHNob3csIC4uLnBhcmFtcyB9ID0gaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGluZGV4ID4gMykge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnQtaXRlbVwiKVxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgbW9yZU9wZW46IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2soKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgICAgdHlwZT17XCJsaW5rXCJ9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10b29sLWJ1dHRvbnNcIikpfVxyXG4gICAgICAgIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IDAgfX1cclxuICAgICAgPlxyXG4gICAgICAgIHt0b29sYnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICAgICAgaWYgKGluZGV4IDwgNCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6IDEyLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7aXRlbX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gNCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgICAgb3Blbj17dGhpcy5zdGF0ZS5tb3JlT3Blbn1cclxuICAgICAgICAgICAgICAgICAgb25PcGVuQ2hhbmdlPXsob3BlbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcGVuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW9yZU9wZW46IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVPcGVuOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgLy8gb3Blbj17dHJ1ZX1cclxuICAgICAgICAgICAgICAgICAgLy8gb3ZlcmxheUNsYXNzTmFtZT17c3R5bGVzWydwb3AtYm94J119XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdHlwZT1cInByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICDmm7TlpJogPERvd25PdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogaW5kZXggPT0gdG9vbGJ1dHRvbnMubGVuZ3RoIC0gMSA/IDAgOiAxMixcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge2l0ZW19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSl9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbiAgcmVuZGVyQ2xvdW1uQnV0dG9uKGNvbHVtbkJ1dHRvbnM6IGFueSwgcm93UmVjb3JkOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgYWN0aW9uUHJvcHMsIHRhYmxlUHJvcHMgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgYmFzZUFjdGlvbkNvbHVtbiB9ID0gY29uZmlnKCk7XHJcbiAgICBjb25zdCBuZXdCdXR0b25zID0gW107XHJcbiAgICBjb25zdCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCBrZXkgPSBcIlwiO1xyXG4gICAgaWYgKHR5cGVvZiByb3dLZXkgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgIGtleSA9IHJvd0tleShyb3dSZWNvcmQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAga2V5ID0gcm93UmVjb3JkW3Jvd0tleV07XHJcbiAgICB9XHJcbiAgICBsZXQgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGlmIChhY3Rpb25Qcm9wcz8uc2hvd0ljb24gPT09IHRydWUgfHwgYmFzZUFjdGlvbkNvbHVtbi5zaG93SWNvbiA9PT0gdHJ1ZSlcclxuICAgICAgc2hvd0ljb24gPSB0cnVlO1xyXG4gICAgY29sdW1uQnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgaWNvbiwgcmVjb3JkU2hvdywgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChyZWNvcmRTaG93KSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiByZWNvcmRTaG93ID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50T3B0aW9uID0ge1xyXG4gICAgICAgICAgICAgIHJlY29yZDogcm93UmVjb3JkLFxyXG4gICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgY29uc3QgVXRpbHMgPSB7IC4uLnRoaXMucHJvcHMuVWl0bHMgfTtcclxuICAgICAgICAgICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJldmVudE9wdGlvbixVdGlsc1wiLCByZWNvcmRTaG93KTtcclxuICAgICAgICAgICAgY29uc3Qgc2hvdyA9IGZ1bmMoZXZlbnRPcHRpb24sIFV0aWxzKTtcclxuICAgICAgICAgICAgc2hvdyAmJiBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGxldCByZWNvcmQgPSByb3dSZWNvcmQ7XHJcbiAgICAgICAgICAgIGlmIChldmFsKHJlY29yZFNob3cpKSB7XHJcbiAgICAgICAgICAgICAgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmVjb3JkU2hvdyA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgIGNvbnN0IHNob3cgPSByZWNvcmRTaG93KHJvd1JlY29yZCk7XHJcbiAgICAgICAgICBzaG93ICYmIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGxldCBudW1iZXIgPSBhY3Rpb25Qcm9wcz8uYnV0dG9uTnVtYmVyXHJcbiAgICAgID8gYWN0aW9uUHJvcHM/LmJ1dHRvbk51bWJlclxyXG4gICAgICA6IGJhc2VBY3Rpb25Db2x1bW4/LmJ1dHRvbk51bWJlclxyXG4gICAgICA/IGJhc2VBY3Rpb25Db2x1bW4/LmJ1dHRvbk51bWJlclxyXG4gICAgICA6IDM7XHJcbiAgICBsZXQgZmxhZyA9IGZhbHNlO1xyXG4gICAgaWYgKG51bWJlciA9PSBcImFsbFwiKSB7XHJcbiAgICAgIGZsYWcgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZsYWcgPSBuZXdCdXR0b25zLmxlbmd0aCA+IG51bWJlcjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gbmV3QnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgcmVjb3JkU2hvdywgaWNvbiwgc2hvdywgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChpbmRleCA+IE51bWJlcihudW1iZXIpIC0gMSkge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnQtaXRlbVwiKVxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7IC4uLnRoaXMuc3RhdGUucG9wb3BlbnMgfTtcclxuICAgICAgICAgICAgICBkYXRhW3Jvd1JlY29yZC5pZF0gPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgIHBvcG9wZW5zOiBkYXRhLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyb3dSZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICB0eXBlPXtcImxpbmtcIn1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbmV3QnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgcmVjb3JkU2hvdywgaWNvbiwgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgaWYgKGluZGV4IDwgbnVtYmVyKSB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSwge1xyXG4gICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3ItZmlyc3RcIildOiBpbmRleCA9PT0gMCxcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyb3dSZWNvcmQpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgaWNvbj17aWNvbn1cclxuICAgICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09IG51bWJlcikge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgIHRpdGxlPXtudWxsfVxyXG4gICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgdHJpZ2dlcj17W1wiY2xpY2tcIl19XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvcGVuPXt0aGlzLnN0YXRlLnBvcG9wZW5zW2tleV0gfHwgZmFsc2V9XHJcbiAgICAgICAgICAgICAgb25PcGVuQ2hhbmdlPXsob3BlbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKG9wZW4pIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7IC4uLnRoaXMuc3RhdGUucG9wb3BlbnMgfTtcclxuICAgICAgICAgICAgICAgICAgZGF0YVtrZXldID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3BlbnM6IGRhdGEsXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3BlbnM6IHt9LFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIC8vIG92ZXJsYXlDbGFzc05hbWU9e3N0eWxlc1sncG9wJ119XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8YSBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIil9PlxyXG4gICAgICAgICAgICAgICAgPEVsbGlwc2lzT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLCB7XHJcbiAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3ItZmlyc3RcIildOiBpbmRleCA9PT0gMCxcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socm93UmVjb3JkKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgdHlwZT1cImxpbmtcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIC8vIH1cclxuICB9XHJcbiAgLy/moJHngrnlh7vkuovku7ZcclxuICB0cmVlU2VsZWN0KHNlbGVjdGVkS2V5czogYW55LCBvYmo6IGFueSkge1xyXG4gICAgbGV0IGtleXdvcmQgPSBcIlwiO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzZWFyY2hLZXkgPSBcImtleVwiLFxyXG4gICAgICBzZWFyY2hGaWVsZCA9IFwiXCIsXHJcbiAgICAgIHBhcmFudFNlbGVjdCA9IHRydWUsXHJcbiAgICB9ID0gdGhpcy5wcm9wcy50cmVlUHJvcHM7XHJcbiAgICBjb25zdCB7IHRyZWVTZWxlY3RlZEtleSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgc2VsZWN0ZWQsIHNlbGVjdGVkTm9kZXMgfSA9IG9iajtcclxuXHJcbiAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAga2V5d29yZCA9IHNlbGVjdGVkTm9kZXNbMF0uZGF0YXJlZi5hdHRyaWJ1dGVbc2VhcmNoS2V5XTtcclxuICAgICAgaWYgKHBhcmFudFNlbGVjdCkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBzZWxlY3RlZEtleXNbMF0sXHJcbiAgICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHsgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChzZWxlY3RlZE5vZGVzWzBdLmlzTGVhZiB8fCAhc2VsZWN0ZWROb2Rlc1swXS5jaGlsZHJlbikge1xyXG4gICAgICAgICAgaWYgKHNlbGVjdGVkS2V5c1swXSAhPT0gdHJlZVNlbGVjdGVkS2V5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgIHRyZWVTZWxlY3RlZEtleTogc2VsZWN0ZWRLZXlzWzBdLFxyXG4gICAgICAgICAgICAgIHRyZWVTZWFyY2hQcmFtczogeyBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBrZXl3b3JkLFxyXG4gICAgICAgIHRyZWVTZWFyY2hQcmFtczoge30sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucHJvcHMub25UcmVlU2VsZWN0KSB7XHJcbiAgICAgIHRoaXMucHJvcHMub25UcmVlU2VsZWN0KHNlbGVjdGVkS2V5cywgb2JqKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpIHx8IHt9O1xyXG4gICAgc2VhcmNoRmllbGQgJiYgdGhpcy50YWJsZUxvYWQoeyAuLi5mcm9tVmFsdWUsIFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSk7XHJcbiAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50cmVlU2VsZWN0Q2FsbEJhY2sgJiZcclxuICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrLFxyXG4gICAgICAgIHsgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLCBzZWxlY3RlZEtleXM6IHNlbGVjdGVkS2V5cywgb2JqOiBvYmogfSxcclxuICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICk7XHJcbiAgICAvLyB1dGlscy5jYWxsYmFjayh0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50cmVlU2VsZWN0Q2FsbEJhY2ssIHRoaXMsIFtcclxuICAgIC8vICAgc2VsZWN0ZWRLZXlzLFxyXG4gICAgLy8gICBvYmosXHJcbiAgICAvLyBdKTtcclxuICB9XHJcbiAgcmVzZXRTZWFyY2goKSB7XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gIH1cclxuICBnZXRUZXh0KHByb3BzLCB0ZXh0KSB7XHJcbiAgICBsZXQgbmV3VGV4dCA9IHRleHQ7XHJcbiAgICBpZiAocHJvcHM/LmRhdGEgJiYgcHJvcHM/LmRhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGRhdGEgPSBwcm9wcy5kYXRhO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGE/Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGRhdGFbaV0udmFsdWUgPT0gdGV4dCkge1xyXG4gICAgICAgICAgbmV3VGV4dCA9IGRhdGFbaV0ubGFiZWw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3VGV4dDtcclxuICB9XHJcbiAgc2V0VGFibGVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnNldERhdGEoZGF0YSk7XHJcbiAgfVxyXG4gIHNldFRyZWVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudHJlZVJlZi5jdXJyZW50Py5zdG9yZT8uc2V0RGF0YShkYXRhKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRLZXkgPSAoc2VsZWN0ZWQpID0+IHtcclxuICAgIGxldCByZXMgPSBbXTtcclxuICAgIGZvciAobGV0IGtleSBpbiBzZWxlY3RlZCkge1xyXG4gICAgICBjb25zdCBrZXlzID0gc2VsZWN0ZWRba2V5XTtcclxuICAgICAgaWYgKGtleXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHJlcyA9IFsuLi5yZXMsIC4uLmtleXNdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH07XHJcblxyXG4gIGNvbnZlcnRRdWVyeVBhcmFtcygpIHtcclxuICAgIGNvbnN0IHsgcmVxdWVzdFBhcmFtcyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IHF1ZXJ5UGFyYW1zOiBhbnkgPSByZXF1ZXN0UGFyYW1zLnF1ZXJ5UGFyYW1zO1xyXG4gICAgcmV0dXJuIGNvbnZlcnRTdHJpbmdUb09iaihxdWVyeVBhcmFtcywgdGhpcy5wcm9wcy5VdGlscyB8fCB7fSk7XHJcbiAgICAvLyBpZiAocXVlcnlQYXJhbXMgJiYgdHlwZW9mIHF1ZXJ5UGFyYW1zID09IFwic3RyaW5nXCIpIHtcclxuICAgIC8vICAgY29uc3QgVXRpbHMgPSB0aGlzLnByb3BzLlV0aWxzIHx8IHt9O1xyXG4gICAgLy8gICBsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbihcIlV0aWxzXCIsIHF1ZXJ5UGFyYW1zKTtcclxuICAgIC8vICAgbGV0IGNvbnZlclBhcmFtcyA9IGZ1bmMoVXRpbHMpO1xyXG4gICAgLy8gICBxdWVyeVBhcmFtcyA9IGNvbnZlclBhcmFtcztcclxuICAgIC8vIH0gZWxzZSB7XHJcbiAgICAvLyAgIHF1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXMgfHwge307XHJcbiAgICAvLyB9XHJcbiAgICAvLyByZXR1cm4gcXVlcnlQYXJhbXM7XHJcbiAgfVxyXG5cclxuICAvLyDorqHnrpfooajlpLTpq5jluqbnmoTmlrnms5VcclxuICBjYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCA9ICgpID0+IHtcclxuICAgIGlmICh0aGlzLnRhYmxlV3JhcHBlclJlZi5jdXJyZW50KSB7XHJcbiAgICAgIGNvbnN0IHRhYmxlSGVhZGVyID1cclxuICAgICAgICB0aGlzLnRhYmxlV3JhcHBlclJlZi5jdXJyZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICAgICBcImFudC10YWJsZS10aGVhZFwiXHJcbiAgICAgICAgKVswXTtcclxuICAgICAgaWYgKHRhYmxlSGVhZGVyKSB7XHJcbiAgICAgICAgY29uc3QgaGVhZGVySGVpZ2h0ID0gdGFibGVIZWFkZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xyXG4gICAgICAgIGlmIChoZWFkZXJIZWlnaHQgIT09IHRoaXMuc3RhdGUudGFibGVIZWFkZXJIZWlnaHQpIHtcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICB0YWJsZUhlYWRlckhlaWdodDogaGVhZGVySGVpZ2h0LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuICB0aHJvdHRsZUNhbGN1bGF0ZVRhYmxlSGVhZGVySGVpZ2h0ID0gdGhyb3R0bGUoXHJcbiAgICB0aGlzLmNhbGN1bGF0ZVRhYmxlSGVhZGVySGVpZ2h0LFxyXG4gICAgNTAwXHJcbiAgKTtcclxuXHJcbiAgLy8g5LyY5YyW5ouW5ou955u45YWz5pa55rOVXHJcbiAgaGFuZGxlTW91c2VEb3duKGU6IFJlYWN0Lk1vdXNlRXZlbnQpIHtcclxuICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICAvLyDliJvlu7rpga7nvanlsYLku6XlpITnkIZpZnJhbWXlnLrmma9cclxuICAgIGNvbnN0IG1hc2sgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gICAgbWFzay5zdHlsZS5jc3NUZXh0ID0gYFxyXG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICAgIHRvcDogMDtcclxuICAgICAgbGVmdDogMDtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICAgIHotaW5kZXg6IDk5OTk7XHJcbiAgICAgIGN1cnNvcjogY29sLXJlc2l6ZTtcclxuICAgIGA7XHJcbiAgICBtYXNrLmlkID0gXCJkcmFnLW1hc2tcIjtcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobWFzayk7XHJcblxyXG4gICAgY29uc3QgaGFuZGxlTW91c2VNb3ZlID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcclxuICAgICAgY29uc3QgbmV3V2lkdGggPSBlLnNjcmVlblg7XHJcbiAgICAgIC8vIOmZkOWItuacgOWwjzEwMHB477yM5pyA5aSnNTAwcHhcclxuICAgICAgaWYgKG5ld1dpZHRoID49IDUwICYmIG5ld1dpZHRoIDw9IDgwMCkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyB0cmVlV2lkdGg6IG5ld1dpZHRoIH0pO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHRocm90dGxlZE1vdXNlTW92ZSA9IHRocm90dGxlKGhhbmRsZU1vdXNlTW92ZSwgMTYpO1xyXG5cclxuICAgIGNvbnN0IGhhbmRsZU1vdXNlVXAgPSAoKSA9PiB7XHJcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhyb3R0bGVkTW91c2VNb3ZlKTtcclxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiwgaGFuZGxlTW91c2VVcCk7XHJcbiAgICAgIC8vIOenu+mZpOmBrue9qeWxglxyXG4gICAgICBjb25zdCBtYXNrID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJkcmFnLW1hc2tcIik7XHJcbiAgICAgIGlmIChtYXNrKSB7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChtYXNrKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRocm90dGxlZE1vdXNlTW92ZSk7XHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCBoYW5kbGVNb3VzZVVwKTtcclxuICB9XHJcblxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgY29sdW1ucyA9IFtdLFxyXG4gICAgICBzaG93U2VhcmNoID0gdHJ1ZSxcclxuICAgICAgY2hpbGRyZW4sXHJcbiAgICAgIHN1Ym1pdFVybCA9IFwiXCIsXHJcbiAgICAgIHRhYmxlUHJvcHMgPSB7fSxcclxuICAgICAgdHJlZVByb3BzID0ge30sXHJcbiAgICAgIGZvcm1QYWdlUHJvcHMgPSB7fSxcclxuICAgICAgc2hvd0xlZnQgPSBmYWxzZSxcclxuICAgICAgc3VibWl0UGFyYW1zID0ge30sXHJcbiAgICAgIHNob3dUb29sQnV0dG9uID0gdHJ1ZSxcclxuICAgICAgYnV0dG9ucyA9IFtdLFxyXG4gICAgICBlZGl0b3JGb3JtID0gdHJ1ZSxcclxuICAgICAgb25TaG93Rm9ybSxcclxuICAgICAgZm9ybUNoYW5nZVZhbGlkID0gdHJ1ZSxcclxuICAgICAgY2xhc3NOYW1lLFxyXG4gICAgICB0b29sQnV0dG9uUG9zaXRpb24gPSBcImJ1dHRvbVwiLFxyXG4gICAgICBhY3Rpb25Qcm9wcyxcclxuICAgICAgZGVsZXRlUG9zaXRpb24gPSBcInRvb2xiYXJcIixcclxuICAgICAgYnV0dG9uQ2xpY2sgPSB7fSxcclxuICAgICAgcGVybWlzc2lvbiA9IHsgaGFzOiBmYWxzZSB9LFxyXG4gICAgICByZXF1ZXN0UGFyYW1zID0ge30sXHJcbiAgICAgIHJlcXVlc3RVcmxzID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHtcclxuICAgICAgc3RvcmU6IHRhYmxlU3RvcmUgPSB7fSxcclxuICAgICAgZmlsdGVyQ29sdW1uID0gdHJ1ZSxcclxuICAgICAgYWN0aW9uQ29sdW1uID0gdHJ1ZSxcclxuICAgICAgc2hvd1Jvd1NlbGVjdGlvbiA9IHRydWUsXHJcbiAgICAgIGNvbHVtbk9yZGVyID0gdHJ1ZSxcclxuICAgICAgZXhwYW5kYWJsZSA9IHt9LFxyXG4gICAgICBwYXJhbnRTZWxlY3QgPSB0cnVlLFxyXG4gICAgICB0aXRsZTogdGFibGVUaXRsZSxcclxuICAgICAgLi4ub3RoZXJ0YWJsZVBhcmFtc1xyXG4gICAgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgbmV3VGFibGVTdG9yZSA9IHsgLi4udGFibGVTdG9yZSB9O1xyXG4gICAgaWYgKHJlcXVlc3RQYXJhbXMucXVlcnlQYXJhbXMpIHtcclxuICAgICAgbGV0IHF1ZXJ5UGFyYW1zOiBhbnkgPSB0aGlzLmNvbnZlcnRRdWVyeVBhcmFtcygpO1xyXG4gICAgICBsZXQgZGF0YSA9IHF1ZXJ5UGFyYW1zPy5kYXRhIHx8IHF1ZXJ5UGFyYW1zPy5wYXJhbXMgfHwge307XHJcbiAgICAgIG5ld1RhYmxlU3RvcmUucmVxdWVzdENvbmZpZyA9IHtcclxuICAgICAgICBwYXJhbXM6IHsgLi4uZGF0YSwgLi4ubmV3VGFibGVTdG9yZS5yZXF1ZXN0Q29uZmlnPy5wYXJhbXMgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGNvbnN0IHtcclxuICAgICAgc3RvcmU6IHRyZWVTdG9yZSA9IHt9LFxyXG4gICAgICBzaG93U2VhcmNoOiB0cmVlU2VhcmNoID0gdHJ1ZSxcclxuICAgICAgdGl0bGVBbGlhcyA9IFwidGl0bGVcIixcclxuICAgICAgdGl0bGU6IHRyZWVUaXRsZSxcclxuICAgICAgLi4ub3RoZXJ0cmVlUGFyYW1zXHJcbiAgICB9ID0gdHJlZVByb3BzO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGxldCB0YWJsZVBhcmFtcyA9IHtcclxuICAgICAgZmlsdGVyQ29sdW1uLFxyXG4gICAgICBzdG9yZToge1xyXG4gICAgICAgIGxpc3RlbmVyczoge1xyXG4gICAgICAgICAgbG9hZDogKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgX3RoaXMucHJvcHMub25DYWxsQmFja3M/LnRhYmxlTG9hZENhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25DYWxsQmFja3M/LnRhYmxlTG9hZENhbGxCYWNrKGRhdGEpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLm5ld1RhYmxlU3RvcmUsXHJcbiAgICAgIH0sXHJcbiAgICAgIC4uLm90aGVydGFibGVQYXJhbXMsXHJcbiAgICB9IGFzIGFueTtcclxuICAgIGNvbnN0IGRlZmF1bHRWYWx1ZTogYW55ID0ge307XHJcbiAgICBjb25zdCBjb2x1bW5CdXR0b25zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IHsgZWxlbWVudEhlaWdodCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCBwZXJtaXNzaW9uQnV0dG9ucyA9IFtdO1xyXG4gICAgaWYgKHBlcm1pc3Npb24uaGFzICYmIHBlcm1pc3Npb24ubWVudUNvZGUpIHtcclxuICAgICAgcGVybWlzc2lvbkJ1dHRvbnMgPVxyXG4gICAgICAgIGdldEJ1dHRvblBlcm1pc3NvbnMocGVybWlzc2lvbi5tZW51Q29kZSkucGVybWlzc29ucyB8fCBbXTtcclxuICAgIH1cclxuICAgIGNvbnN0IG9iaiA9IGNvbnZlcnRDb2x1bW5zKGNvbHVtbnMsIHt9KTtcclxuICAgIGxldCB0YWJsZUNvbHVtbjogYW55W10gPSBnZXROZXdDb2x1bW5zKGNvbHVtbnMsIHRoaXMucHJvcHMpO1xyXG4gICAgY29uc3Qgc2VhcmNoRm9ybXMgPSBvYmouc2VhcmNoRm9ybXMgfHwgW107XHJcbiAgICBjb25zdCBlZGl0b3JGb3JtcyA9IG9iai5lZGl0b3JGb3JtcyB8fCBbXTtcclxuICAgIGNvbnN0IHRvb2xCdXR0b25zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IGZvcm1CdXR0b246IGFueSA9IFtdO1xyXG4gICAgY29uc3QgeyBiYXNlQWN0aW9uQ29sdW1uIH0gPSBjb25maWcoKTtcclxuICAgIGxldCBzaG93SWNvbiA9IHRydWU7XHJcbiAgICBpZiAoYWN0aW9uUHJvcHM/LnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGVsc2UgaWYgKGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgY29uc3QgYnV0dG9uTWFwID0ge1xyXG4gICAgICBlZGl0b3I6IHsgbmFtZTogXCLnvJbovpFcIiwgY29kZTogXCJlZGl0b3JcIiwgaWNvbjogPEVkaXRPdXRsaW5lZCAvPiB9LFxyXG4gICAgICBkZWxldGU6IHsgbmFtZTogXCLliKDpmaRcIiwgY29kZTogXCJkZWxldGVcIiwgaWNvbjogPERlbGV0ZU91dGxpbmVkIC8+IH0sXHJcbiAgICAgIHNlYXJjaDogeyBuYW1lOiBcIuafpeeci1wiLCBjb2RlOiBcInNlYXJjaFwiLCBpY29uOiA8RXllT3V0bGluZWQgLz4gfSxcclxuICAgIH07XHJcbiAgICBjb25zdCByZXR1cm5CdXR0b24gPSAoY29kZSwgc2hvdyA9IFwiXCIsIGRlZmF1bHRQcm9wcyA9IHt9KSA9PiB7XHJcbiAgICAgIGxldCBwcm9wcyA9IHtcclxuICAgICAgICBpY29uOiBzaG93SWNvbiA/IGJ1dHRvbk1hcFtjb2RlXS5pY29uIDogbnVsbCxcclxuICAgICAgICB0eXBlOiBcImxpbmtcIixcclxuICAgICAgICAuLi5kZWZhdWx0UHJvcHMsXHJcbiAgICAgIH0gYXMgYW55O1xyXG5cclxuICAgICAgaWYgKHNob3cpIHtcclxuICAgICAgICBwcm9wcyA9IHsgLi4ucHJvcHMsIHJlY29yZFNob3c6IHNob3cgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDxCdXR0b25cclxuICAgICAgICAgIG9uQ2xpY2s9eyhyZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY29kZSA9PSBcImRlbGV0ZVwiKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vbkRlbGV0ZShyZWNvcmQpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmIChjb2RlID09IFwiZWRpdG9yXCIgJiYgYnV0dG9uQ2xpY2sub25FZGl0b3IpIHtcclxuICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICBidXR0b25DbGljay5vbkVkaXRvcixcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQ6IHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLFxyXG4gICAgICAgICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PSBcInNlYXJjaFwiICYmIGJ1dHRvbkNsaWNrLm9uU2VhcmNoKSB7XHJcbiAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgYnV0dG9uQ2xpY2sub25TZWFyY2gsXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkOiByZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCxcclxuICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICAgIG9uU2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIGNvZGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgY29kZSwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IGNhbGxCYWNrID1cclxuICAgICAgICAgICAgICAgICAgY29kZSA9PSBcImVkaXRvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkVkaXRvckNhbGxCYWNrXHJcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblNlYXJjaENhbGxCYWNrO1xyXG4gICAgICAgICAgICAgICAgY2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbEJhY2ssXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgICAgcmVjb3JkOiByZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCxcclxuICAgICAgICAgICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHtidXR0b25NYXBbY29kZV0/Lm5hbWV9XHJcbiAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgY2hlY2tQZXJzc2lvbiA9IChjb2RlKSA9PiB7XHJcbiAgICAgIGlmICghcGVybWlzc2lvbi5oYXMpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gcGVybWlzc2lvbkJ1dHRvbnMuaW5kZXhPZihjb2RlKSA+IC0xO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgYnV0dG9ucy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoKGl0ZW0gPT0gXCJhZGRcIiB8fCBpdGVtLmNvZGUgPT0gXCJhZGRcIikgJiYgY2hlY2tQZXJzc2lvbihcImFkZFwiKSkge1xyXG4gICAgICAgIHRvb2xCdXR0b25zLnB1c2goXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgeyBvblNob3dGb3JtLCBidXR0b25DbGljayA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgICAgICAgIGlmIChidXR0b25DbGljaz8ub25BZGQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICBidXR0b25DbGljay5vbkFkZCxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICAgIG9uU2hvd0Zvcm0obnVsbCwgXCJhZGRcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0obnVsbCwgbnVsbCwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25BZGRDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkFkZENhbGxCYWNrLFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICBpY29uPXs8UGx1c091dGxpbmVkIC8+fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDmt7vliqBcclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgKGl0ZW0gPT0gXCJkZWxldGVfYmF0Y2hcIiB8fCBpdGVtLmNvZGUgPT0gXCJkZWxldGVfYmF0Y2hcIikgJiZcclxuICAgICAgICBjaGVja1BlcnNzaW9uKFwiZGVsZXRlX2JhdGNoXCIpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRvb2xCdXR0b25zLnB1c2goXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICBvbkNsaWNrPXt0aGlzLm9uRGVsZXRlLmJpbmQodGhpcywgbnVsbCwgXCJ0b29sYmFyXCIpfVxyXG4gICAgICAgICAgICBpY29uPXs8RGVsZXRlT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgIGRhbmdlclxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDmibnph4/liKDpmaRcclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGNoZWNrUGVyc3Npb24oaXRlbS5jb2RlID8gaXRlbS5jb2RlIDogaXRlbSkpIHtcclxuICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChcclxuICAgICAgICAgICAgcmV0dXJuQnV0dG9uKFxyXG4gICAgICAgICAgICAgIGl0ZW0uY29kZSA/IGl0ZW0uY29kZSA6IGl0ZW0sXHJcbiAgICAgICAgICAgICAgaXRlbS5yZWNvcmRTaG93LFxyXG4gICAgICAgICAgICAgIGl0ZW0ucHJvcHMgfHwge31cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XHJcbiAgICAgICAgICBpdGVtLm1hcCgoY2hpbGQpID0+IHtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIgJiZcclxuICAgICAgICAgICAgICBjaGVja1BlcnNzaW9uKGNoaWxkPy5wcm9wcz8uY29kZSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgdG9vbEJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcImZvcm1CdXR0b25cIiAmJlxyXG4gICAgICAgICAgICAgIGNoZWNrUGVyc3Npb24oY2hpbGQ/LnByb3BzPy5jb2RlKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICBmb3JtQnV0dG9uLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgIChjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY29sdW1uQnV0dG9uXCIgfHxcclxuICAgICAgICAgICAgICAgIGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIikgJiZcclxuICAgICAgICAgICAgICBjaGVja1BlcnNzaW9uKGNoaWxkPy5wcm9wcz8uY29kZSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiICYmXHJcbiAgICAgICAgICAgIGNoZWNrUGVyc3Npb24oaXRlbT8ucHJvcHM/LmNvZGUpXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdG9vbEJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgIChpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIiB8fFxyXG4gICAgICAgICAgICAgIGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSAmJlxyXG4gICAgICAgICAgICBjaGVja1BlcnNzaW9uKGl0ZW0/LnByb3BzPy5jb2RlKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICBjb25zdCB7IHByb3BzIH06IGFueSA9IGNoaWxkcmVuO1xyXG4gICAgICBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiICYmIGNoZWNrUGVyc3Npb24ocHJvcHM/LmNvZGUpKSB7XHJcbiAgICAgICAgdG9vbEJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgKHByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiIHx8XHJcbiAgICAgICAgICBwcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIikgJiZcclxuICAgICAgICBjaGVja1BlcnNzaW9uKHByb3BzPy5jb2RlKVxyXG4gICAgICApIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBhY3Rpb25Db2x1bW4gJiZcclxuICAgICAgdGFibGVDb2x1bW4ucHVzaCh7XHJcbiAgICAgICAgdGl0bGU6IFwi5pON5L2cXCIsXHJcbiAgICAgICAgZGF0YUluZGV4OiBcImFjdGlvblwiLFxyXG4gICAgICAgIGFsaWduOiBhY3Rpb25Qcm9wcz8udGV4dEFsaWduXHJcbiAgICAgICAgICA/IGFjdGlvblByb3BzPy50ZXh0QWxpZ25cclxuICAgICAgICAgIDogYmFzZUFjdGlvbkNvbHVtbi50ZXh0QWxpZ25cclxuICAgICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbi50ZXh0QWxpZ25cclxuICAgICAgICAgIDogXCJsZWZ0XCIsXHJcbiAgICAgICAgd2lkdGg6IGFjdGlvblByb3BzPy53aWR0aFxyXG4gICAgICAgICAgPyBhY3Rpb25Qcm9wcz8ud2lkdGhcclxuICAgICAgICAgIDogYmFzZUFjdGlvbkNvbHVtbi53aWR0aFxyXG4gICAgICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uLndpZHRoXHJcbiAgICAgICAgICA6IDIwMCxcclxuICAgICAgICBmaXhlZDogXCJyaWdodFwiLFxyXG4gICAgICAgIHJlbmRlcjogKHRleHQ6IGFueSwgcmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtYWN0aW9uXCIpfT5cclxuICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJDbG91bW5CdXR0b24oY29sdW1uQnV0dG9ucywgcmVjb3JkKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG5cclxuICAgIGlmIChjb2x1bW5PcmRlcilcclxuICAgICAgdGFibGVDb2x1bW4gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGl0bGU6IFwi5bqP5Y+3XCIsXHJcbiAgICAgICAgICB3aWR0aDogODAsXHJcbiAgICAgICAgICBhbGlnbjogXCJjZW50ZXJcIixcclxuICAgICAgICAgIHJlbmRlcjogKHRleHQsIHJlYWNvcmQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiA8PntpbmRleCArIDF9PC8+O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnRhYmxlQ29sdW1uLFxyXG4gICAgICBdO1xyXG4gICAgbGV0IHNlYXJjaEZsYWcgPSBzaG93U2VhcmNoICYmIHNlYXJjaEZvcm1zLmxlbmd0aCA+IDA7XHJcbiAgICBsZXQgeyB0YWJsZVRvb2wgfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHRvb2xGbGFnID1cclxuICAgICAgc2hvd1Rvb2xCdXR0b24gJiZcclxuICAgICAgdG9vbEJ1dHRvbnMubGVuZ3RoID4gMCAmJlxyXG4gICAgICB0b29sQnV0dG9uUG9zaXRpb24gPT0gXCJidXR0b21cIjtcclxuICAgIGxldCB0b29sYmFyRmxhZyA9ICEoXHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhciA9PSBmYWxzZSB8fFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXI/LnNob3cgPT0gZmFsc2UgfHxcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyPy50b29scz8ubGVuZ3RoID09IDAgfHxcclxuICAgICAgdGFibGVUb29sPy5zaG93ID09IGZhbHNlXHJcbiAgICApO1xyXG4gICAgbGV0IGhlYWRlckhlaWdodCA9IHNob3dTZWFyY2ggJiYgc2VhcmNoRm9ybXMubGVuZ3RoID4gMCA/IDEwNCA6IDA7IC8v5aS06YOo5pCc57Si5qCP6auY5bqmXHJcbiAgICBsZXQgdG9vbEhlaWdodCA9IHRhYmxlVGl0bGUgfHwgdG9vbEZsYWcgPyA1MCA6IDA7XHJcbiAgICBsZXQgcGFkZGluZ0hlaWdodCA9IDIwICogMjsgLy/kuIrkuIvpl7Tot51cclxuICAgIGxldCB0YWJsZUNvbnRlbnRIZWlnaHQgPVxyXG4gICAgICBlbGVtZW50SGVpZ2h0IC0gdG9vbEhlaWdodCAtIHBhZGRpbmdIZWlnaHQgLSBoZWFkZXJIZWlnaHQ7XHJcbiAgICBsZXQgUGFnaW5hdGlvbkhlaWdodCA9IHRhYmxlUHJvcHMucGFnaW5hdGlvbiAhPT0gZmFsc2UgPyAzMiArIDE2IDogMDsgLy8zMiDkuLrliIbpobXlmajpq5jluqYsMTbkuLptYXJnaW7pl7Tot51cclxuICAgIGxldCB0YWJsZUhlaWdodCA9IHRhYmxlQ29udGVudEhlaWdodCAtIFBhZ2luYXRpb25IZWlnaHQ7XHJcbiAgICBsZXQgdGFibGVTcm9sbEhlaWdodCA9XHJcbiAgICAgIHRhYmxlQ29udGVudEhlaWdodCAtXHJcbiAgICAgICh0aGlzLnN0YXRlLnRhYmxlSGVhZGVySGVpZ2h0ID4gMCA/IHRoaXMuc3RhdGUudGFibGVIZWFkZXJIZWlnaHQgOiA1NSkgLVxyXG4gICAgICBQYWdpbmF0aW9uSGVpZ2h0O1xyXG4gICAgLy8gaWYgKHRhYmxlUHJvcHMucGFnaW5hdGlvbiAhPT0gZmFsc2UpIHtcclxuICAgIGNvbnN0IHNjcm9sbCA9IHRhYmxlUGFyYW1zLnNjcm9sbDtcclxuICAgIHRhYmxlUGFyYW1zID0ge1xyXG4gICAgICAuLi50YWJsZVBhcmFtcyxcclxuICAgICAgc2Nyb2xsOiB7IHg6IFwibWF4LWNvbnRlbnRcIiwgeTogdGFibGVTcm9sbEhlaWdodCwgLi4uc2Nyb2xsIH0sXHJcbiAgICB9O1xyXG4gICAgLy8gfVxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZVwiKSwgY2xhc3NOYW1lKX1cclxuICAgICAgICByZWY9e3RoaXMucGFnZVJlZn1cclxuICAgICAgPlxyXG4gICAgICAgIHt0aGlzLnByb3BzLnBhZ2VUaXRsZSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10aXRsZVwiKSl9PlxyXG4gICAgICAgICAgICB7dGhpcy5wcm9wcy5wYWdlVGl0bGV9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1wYW5lXCIpKX1cclxuICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6IFwiZmxleFwiIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3Nob3dMZWZ0ICYmIChcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWxlZnRcIil9XHJcbiAgICAgICAgICAgICAgc3R5bGU9e3sgd2lkdGg6IHRoaXMuc3RhdGUudHJlZVdpZHRoIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7dHJlZVRpdGxlICYmIChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJ0cmVlLXRpdGxlXCIpfT57dHJlZVRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwidHJlZS1jb250ZW50XCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJ0cmVlLWNvbnRlbnQtbm90aXRsZVwiKV06ICF0cmVlVGl0bGUsXHJcbiAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRyZWUtZHJhZ1wiXHJcbiAgICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXt0aGlzLmhhbmRsZU1vdXNlRG93bi5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPFRyZWVcclxuICAgICAgICAgICAgICAgICAgc3RvcmU9e3sgLi4udHJlZVN0b3JlIH19XHJcbiAgICAgICAgICAgICAgICAgIHNob3dJY29uPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgY2hlY2thYmxlPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgc2VhcmNoYWJsZT17dHJlZVNlYXJjaH1cclxuICAgICAgICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMudHJlZVNlbGVjdC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZEtleXM9e1t0aGlzLnN0YXRlLnRyZWVTZWxlY3RlZEtleV19XHJcbiAgICAgICAgICAgICAgICAgIHRpdGxlQWxpYXM9e3RpdGxlQWxpYXN9XHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy50cmVlUmVmfVxyXG4gICAgICAgICAgICAgICAgICB7Li4ub3RoZXJ0cmVlUGFyYW1zfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtcmlnaHRcIiksIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLW5vLWxlZnQtcmlnaHRcIildOiAhc2hvd0xlZnQsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgIHdpZHRoOiBgY2FsYygxMDAlIC0gJHt0aGlzLnN0YXRlLnRyZWVXaWR0aH1weCAtICR7XHJcbiAgICAgICAgICAgICAgICBzaG93TGVmdCA/IDE1IDogMFxyXG4gICAgICAgICAgICAgIH1weClgLFxyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwICYmIChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWhlYWRlcnNlYXJjaFwiKX0+XHJcbiAgICAgICAgICAgICAgICA8SGVhZGVyU2VhcmNoXHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1zPXtzZWFyY2hGb3Jtc31cclxuICAgICAgICAgICAgICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uPXt0b29sQnV0dG9uUG9zaXRpb259XHJcbiAgICAgICAgICAgICAgICAgIG9uU2VhcmNoPXt0aGlzLm9uU2VhcmNoLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICAgIG9uUmVzZXQ9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblJlc2V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uUmVzZXQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlTG9hZCh7fSk7XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy5zZWFyY2hSZWZ9XHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1Qcm9wcz17dGhpcy5wcm9wcy5zZWFyY2hGb3JtUHJvcHN9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnRcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudC1nYXBcIildOiAhc2VhcmNoRmxhZyxcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICByZWY9e3RoaXMucGFnZUNvbnRlbnRSZWZ9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7KHRhYmxlVGl0bGUgfHwgdG9vbEZsYWcpICYmIChcclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRpdGxlXCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10aXRsZS13aWR0aFwiKV06ICF0b29sYmFyRmxhZyxcclxuICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+e3RhYmxlVGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIHt0b29sRmxhZyAmJiB0aGlzLnJlbmRlclRvb2xCdXR0b25zKHRvb2xCdXR0b25zLCB0b29sYmFyRmxhZyl9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlXCIpLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZS10b3BcIildOiAhdG9vbGJhckZsYWcsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRvcDJcIildOlxyXG4gICAgICAgICAgICAgICAgICAgICAgdG9vbGJhckZsYWcgJiYgIXRvb2xGbGFnLFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgcmVmPXt0aGlzLnRhYmxlV3JhcHBlclJlZn1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IGhlaWdodDogdGFibGVDb250ZW50SGVpZ2h0IH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPFRhYmxlXHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy50YWJsZVJlZn1cclxuICAgICAgICAgICAgICAgICAgY29sdW1ucz17dGFibGVDb2x1bW59XHJcbiAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU9e3tcclxuICAgICAgICAgICAgICAgICAgICBleHBhbmRJY29uOiAoeyBleHBhbmRlZCwgb25FeHBhbmQsIHJlY29yZCB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtleHBhbmRlZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXM/Lmxlbmd0aCA+IDAgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RG93bk91dGxpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBvbkV4cGFuZChyZWNvcmQsIGUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImV4cGFuZC1pY29uXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApIDogcmVjb3JkLmNoaWxkTm9kZXMgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzPy5sZW5ndGggPiAwID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpZ2h0T3V0bGluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IG9uRXhwYW5kKHJlY29yZCwgZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZXhwYW5kLWljb25cIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAuLi5leHBhbmRhYmxlLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICBjb2x1bW5PcmRlcj17dHJ1ZX1cclxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhwYWdpbmF0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBjdXJyZW50UGFnZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFBhZ2UgIT09IHBhZ2luYXRpb24uY3VycmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlOiBwYWdpbmF0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHRvb2xiYXI9e3tcclxuICAgICAgICAgICAgICAgICAgICBvblRvb2xDbGljazoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb25SZWZyZXNoOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVMb2FkKHBhcmFtcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgLi4udGFibGVQcm9wcy50b29sYmFyLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICBzaG93Um93U2VsZWN0aW9uPXtzaG93Um93U2VsZWN0aW9ufVxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IHRhYmxlSGVpZ2h0IH19XHJcbiAgICAgICAgICAgICAgICAgIHsuLi50YWJsZVBhcmFtc31cclxuICAgICAgICAgICAgICAgICAgLy8gcGFnaW5hdGlvbj17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgey8qIDxkaXY+PC9kaXY+ICovfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAge2VkaXRvckZvcm0gJiYgdGhpcy5wcm9wcy5mb3JtUGFnZVByb3BzPy5mb3JtVHlwZSAhPT0gXCJwYWdlXCIgJiYgKFxyXG4gICAgICAgICAgICA8RWRpdG9yRm9ybVxyXG4gICAgICAgICAgICAgIHJlZj17dGhpcy5lZGl0b3JSZWZ9XHJcbiAgICAgICAgICAgICAgY2FsbEJhY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uU3VtYml0Q2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TdW1iaXRDYWxsQmFjayxcclxuICAgICAgICAgICAgICAgICAgICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMudGFibGVSZWxvYWQoKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGZvcm1zPXtlZGl0b3JGb3Jtc31cclxuICAgICAgICAgICAgICBzdWJtaXRVcmw9e3N1Ym1pdFVybH1cclxuICAgICAgICAgICAgICBzdWJtaXRQYXJhbXM9e3N1Ym1pdFBhcmFtc31cclxuICAgICAgICAgICAgICBvblN1Ym1pdD17dGhpcy5wcm9wcy5vblN1Ym1pdH1cclxuICAgICAgICAgICAgICBvbkhpZGVGb3JtPXt0aGlzLnByb3BzLm9uSGlkZUZvcm19XHJcbiAgICAgICAgICAgICAgb25Gb3JtQ2hhbmdlPXt0aGlzLnByb3BzLm9uRm9ybUNoYW5nZX1cclxuICAgICAgICAgICAgICBmb3JtVHlwZT17dGhpcy5wcm9wcy5mb3JtVHlwZSB8fCBcImF1dG9cIn1cclxuICAgICAgICAgICAgICBjaGFuZ2VWYWxpZD17Zm9ybUNoYW5nZVZhbGlkfVxyXG4gICAgICAgICAgICAgIFV0aWxzPXt0aGlzLnByb3BzLlV0aWxzfVxyXG4gICAgICAgICAgICAgIHJlcXVlc3RPYmplY3Q9e3tcclxuICAgICAgICAgICAgICAgIGFkZFVybDogcmVxdWVzdFVybHMuYWRkVXJsLFxyXG4gICAgICAgICAgICAgICAgZWRpdG9yVXJsOiByZXF1ZXN0VXJscy5lZGl0b3JVcmwsXHJcbiAgICAgICAgICAgICAgICBhZGRQYXJhbXM6IHJlcXVlc3RQYXJhbXMuYWRkUGFyYW1zLFxyXG4gICAgICAgICAgICAgICAgZWRpdG9yUGFyYW1zOiByZXF1ZXN0UGFyYW1zLmVkaXRvclBhcmFtcyxcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGZ1bmNzPXt0aGlzLnByb3BzLmZ1bmNzfVxyXG4gICAgICAgICAgICAgIHsuLi5mb3JtUGFnZVByb3BzfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge2Zvcm1CdXR0b259XHJcbiAgICAgICAgICAgIDwvRWRpdG9yRm9ybT5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgQmFzZVBhZ2U7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU9BLEtBQUssSUFBSUMsYUFBYSxRQUFtQixPQUFPO0FBQ3ZELE9BQU9DLEtBQUssTUFBTSxrQkFBa0I7QUFDcEMsT0FBT0MsSUFBSSxNQUFNLGlCQUFpQjtBQUNsQyxPQUFPQyxNQUFNLE1BQU0sbUJBQW1CO0FBQ3RDLE9BQU9DLEtBQUssTUFBTSxrQkFBa0I7QUFDcEMsT0FBT0MsT0FBTyxNQUFNLG9CQUFvQjtBQUN4QyxPQUFPQyxPQUFPLE1BQU0sb0JBQW9CO0FBQ3hDLE9BQU9DLFVBQVUsTUFBeUIsbUJBQW1CO0FBQzdELE9BQU9DLEdBQUcsTUFBTSxZQUFZO0FBQzVCLE9BQU8scUJBQXFCO0FBRzVCLFNBQ0VDLFlBQVksRUFDWkMsV0FBVyxFQUNYQyxZQUFZLEVBQ1pDLGFBQWEsRUFDYkMsWUFBWSxFQUNaQyxnQkFBZ0IsRUFDaEJDLGNBQWMsUUFDVCxtQkFBbUI7QUFDMUIsU0FBU0MsY0FBYyxFQUFFQyxPQUFPLFFBQWtDLGFBQWE7QUFDL0UsT0FBT0MsT0FBTyxNQUFNLGFBQWE7QUFDakMsT0FBT0MsTUFBTSxNQUFNLGNBQWM7QUFDakMsU0FBU0MsVUFBVSxFQUFTQyxtQkFBbUIsUUFBUSxtQkFBbUI7QUFDMUUsT0FBT0MsWUFBWSxNQUFNLGlCQUFpQjtBQUcx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
|
|
1246
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsIkRvd25PdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwiRWRpdE91dGxpbmVkIiwiUmlnaHRPdXRsaW5lZCIsIlBsdXNPdXRsaW5lZCIsIkVsbGlwc2lzT3V0bGluZWQiLCJEZWxldGVPdXRsaW5lZCIsImNvbnZlckZ1bmN0aW9uIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiZ2V0QnV0dG9uUGVybWlzc29ucyIsIkhlYWRlclNlYXJjaCIsImNvbnZlcnRDb2x1bW5zIiwiZ2V0TmV3Q29sdW1ucyIsInRocm90dGxlIiwiY29udmVydFN0cmluZ1RvT2JqIiwic3R5bGVzIiwiQmFzZVBhZ2UiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX3R5cGUiLCJfc2l6ZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsImNoZWNrZWRUcmVlS2V5cyIsIm5hbWUiLCJ1c2VyVHlwZSIsImFjY291bnQiLCJzdGF0ZSIsInZhbHVlIiwiZGVwdElkIiwib25TZWFyY2giLCJzZWxlY3RlZCIsInJlcyIsImtleSIsImtleXMiLCJsZW5ndGgiLCJ0YWJsZVdyYXBwZXJSZWYiLCJjdXJyZW50IiwidGFibGVIZWFkZXIiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwiaGVhZGVySGVpZ2h0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiaGVpZ2h0IiwidGFibGVIZWFkZXJIZWlnaHQiLCJzZXRTdGF0ZSIsImNhbGN1bGF0ZVRhYmxlSGVhZGVySGVpZ2h0Iiwic3RvcmVQcmVmaXgiLCJ0eXBlIiwiY29udGVudCIsInNpemUiLCJzZWxlY3RlZFJvd0tleXMiLCJzZWxlY3RlZFJvd0RhdGFzIiwidHJlZVNlbGVjdGVkS2V5IiwiZXhwYW5kIiwiZm9ybVR5cGUiLCJ0YWJsZVNpemUiLCJ0cmVlU2VhcmNoUHJhbXMiLCJwb3BvcGVucyIsIm1vcmVPcGVuIiwiZWxlbWVudEhlaWdodCIsInBlcm1pc3Npb25CdXR0b25zIiwicXVlcnlQYXJhbXMiLCJidXR0b25zTG9hZGluZyIsInRyZWVXaWR0aCIsInNob3dMZWZ0IiwiY29tcG9uZW50RGlkTW91bnQiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQiLCJpbml0RGF0YSIsInBlcm1pc3NvbiIsInBhZ2VSZWYiLCJjbGllbnRIZWlnaHQiLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwidGhyb3R0bGVDYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCIsInNldFRpbWVvdXQiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQyIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwic2V0U2VhcmNoUGFyYW1zIiwicGFyYW1zIiwiY2FsbEJhY2siLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUiLCJzZWFyY2hSZWYiLCJkb1N1Ym1pdCIsImRhdGEiLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUiLCJsYWJlbCIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsImVkaXRvclJlZiIsInNob3dGb3JtIiwiX3RoaXMkcHJvcHMkZm9ybVBhZ2VQIiwiZWRpdG9yZmxhZyIsImZvcm1QYWdlUHJvcHMiLCJfdGhpcyRwcm9wcyRmb3JtUGFnZVAyIiwiZnVuY3MiLCJwYXRobmFtZSIsImNvbmNhdCIsInRhYmxlQ29kZSIsImlkIiwiaGlzdG9yeSIsInNlcnZpY2VOYW1lIiwic2VydmljZVBhdGgiLCJEYXRlIiwiZ2V0VGltZSIsInRpdGxlIiwiX3RoaXMkZWRpdG9yUmVmIiwibmV3VmFsdWUiLCJfb2JqZWN0U3ByZWFkIiwic2hvdyIsImhpZGVGb3JtIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlMiIsInNldExvYWRpbmciLCJsb2FkaW5nIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlMyIsInNldEVkaXRGb3JtVmFsdWVzIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlNCIsInNldEZvcm1WYWx1ZSIsImdldEVkaXRGb3JtVmFsdWVzIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlNSIsImdldEZvcm1WYWx1ZSIsIm9uRGVsZXRlIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMiIsImRlbGV0ZVBvc2l0aW9uIiwiZGVsZXRlVXJsIiwiZGVsZXRlUGFyYW1zIiwiYnV0dG9uQ2xpY2siLCJyZXF1ZXN0UGFyYW1zIiwicmVxdWVzdFVybHMiLCJyZXF1ZXN0Q29uZmlnIiwiX3RoaXMiLCJ0YWJsZVJlZiIsImdldFNlbGVjdGVkUm93S2V5cyIsImdldFNlbGVjdGVkUm93RGF0YXMiLCJ1cmwiLCJ3YXJuaW5nIiwiY29uZmlybSIsIm9uT2siLCJyZWNvcmQiLCJpZHMiLCJVdGlscyIsIkVycm9yIiwiZGF0YVBhcmFtcyIsIm90aGVyUGFyYW1zIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwiZGVmYXVsdFBhcmFtcyIsIm1ldGhvZCIsImF1dG9QcmVmaXgiLCJqb2luIiwiZmluYWxQYXJhbXMiLCJ0aGVuIiwiY29kZSIsIl90aGlzJHNlYXJjaFJlZiIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYyIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzIiLCJzdWNjZXNzIiwiZ2V0U2VhcmNoVmFsdWVzIiwib25DYWxsQmFja3MiLCJvbkRlbGV0ZUNhbGxCYWNrIiwidGFibGVMb2FkIiwiZXJyb3IiLCJjYXRjaCIsImNvbnNvbGUiLCJsb2ciLCJfdGFibGVTdG9yZSRyZXF1ZXN0Q28iLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4zIiwiZGVmYXVsdFJlcXVlc3RDb25maWciLCJ0YWJsZVByb3BzIiwic3RvcmUiLCJ0YWJsZVN0b3JlIiwiY29udmVydFF1ZXJ5UGFyYW1zIiwicmVxdWVzdENvbmlnIiwic3RvcmVDb25maWciLCJzdG9yZVBhcmFtcyIsIm90aGVyU3RvcmVDb25maWciLCJfZXhjbHVkZWQyIiwibG9hZCIsIl90YWJsZVN0b3JlJHJlcXVlc3RDbzIiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMzIiwib25RdWVyeUNhbGxCYWNrIiwidGFibGVSZWxvYWQiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW40IiwiYXV0b0xvYWQiLCJyZWxvYWQiLCJjYWxsYmFjayIsIl9yZXMkZGF0YSIsInJlY29yZHMiLCJjdXJyZW50UGFnZSIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjUiLCJ0cmVlTG9hZCIsIl90aGlzJHRyZWVSZWYkY3VycmVudCIsInRyZWVSZWYiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW42IiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNyIsInNldFNlbGVjdGVkUm93S2V5cyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjgiLCJzZXRTZWxlY3RlZFJvd0RhdGFzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuOSIsInJlc2V0U2VsZWN0ZWRSb3dLZXlzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMTAiLCJfdGhpcyRzZWFyY2hSZWYyIiwiZnJvbVZhbHVlIiwiZ2V0Q2hpbGRyZW5EYXRhIiwicm93S2V5IiwicmVzS2V5IiwiY2hpbGROb2RlcyIsImNoaWxkcmVuIiwibWFwIiwiaXRlbSIsImluZGV4IiwicmVuZGVyVG9vbEJ1dHRvbnMiLCJ0b29sYnV0dG9ucyIsInRvb2xiYXJGbGFnIiwiZmxhZyIsInNob3dTZWFyY2giLCJfaXRlbSRwcm9wcyIsInBhZ2VUeXBlIiwib25DbGljayIsImljb24iLCJfZXhjbHVkZWQzIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsIl9leHRlbmRzIiwic3R5bGUiLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJwbGFjZW1lbnQiLCJvcGVuIiwib25PcGVuQ2hhbmdlIiwicmVuZGVyQ2xvdW1uQnV0dG9uIiwiY29sdW1uQnV0dG9ucyIsInJvd1JlY29yZCIsImFjdGlvblByb3BzIiwiYmFzZUFjdGlvbkNvbHVtbiIsIm5ld0J1dHRvbnMiLCJzaG93SWNvbiIsIl9pdGVtJHByb3BzMiIsInJlY29yZFNob3ciLCJfZXhjbHVkZWQ0IiwiZXZlbnRPcHRpb24iLCJVaXRscyIsImZ1bmMiLCJGdW5jdGlvbiIsInB1c2giLCJlIiwiZXZhbCIsIm51bWJlciIsImJ1dHRvbk51bWJlciIsIl9pdGVtJHByb3BzMyIsIl9leGNsdWRlZDUiLCJOdW1iZXIiLCJfaXRlbSRwcm9wczQiLCJfZXhjbHVkZWQ2IiwidHJpZ2dlciIsInRyZWVTZWxlY3QiLCJzZWxlY3RlZEtleXMiLCJvYmoiLCJfdGhpcyRzZWFyY2hSZWYzIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzUiLCJrZXl3b3JkIiwic2VhcmNoS2V5Iiwic2VhcmNoRmllbGQiLCJwYXJhbnRTZWxlY3QiLCJ0cmVlUHJvcHMiLCJzZWxlY3RlZE5vZGVzIiwiZGF0YXJlZiIsImF0dHJpYnV0ZSIsImlzTGVhZiIsIm9uVHJlZVNlbGVjdCIsInRyZWVTZWxlY3RDYWxsQmFjayIsInJlc2V0U2VhcmNoIiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlMiIsInJlc2V0RmllbGRzIiwiZ2V0VGV4dCIsInRleHQiLCJfcHJvcHMkZGF0YSIsIm5ld1RleHQiLCJpIiwic2V0VGFibGVEYXRhIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMTEiLCJzZXREYXRhIiwic2V0VHJlZURhdGEiLCJfdGhpcyR0cmVlUmVmJGN1cnJlbnQyIiwiaGFuZGxlTW91c2VEb3duIiwicHJldmVudERlZmF1bHQiLCJtYXNrIiwiZG9jdW1lbnQiLCJjc3NUZXh0IiwiYm9keSIsImFwcGVuZENoaWxkIiwiaGFuZGxlTW91c2VNb3ZlIiwibmV3V2lkdGgiLCJzY3JlZW5YIiwidGhyb3R0bGVkTW91c2VNb3ZlIiwiaGFuZGxlTW91c2VVcCIsImdldEVsZW1lbnRCeUlkIiwicmVtb3ZlQ2hpbGQiLCJyZW5kZXIiLCJfdGhpczIiLCJfdGFibGVQcm9wcyR0b29sYmFyIiwiX3RhYmxlUHJvcHMkdG9vbGJhcjIiLCJfdGhpcyRwcm9wcyRmb3JtUGFnZVAzIiwiY29sdW1ucyIsInN1Ym1pdFVybCIsInN1Ym1pdFBhcmFtcyIsInNob3dUb29sQnV0dG9uIiwiYnV0dG9ucyIsImVkaXRvckZvcm0iLCJvblNob3dGb3JtIiwiZm9ybUNoYW5nZVZhbGlkIiwidG9vbEJ1dHRvblBvc2l0aW9uIiwicGVybWlzc2lvbiIsImhhcyIsImZpbHRlckNvbHVtbiIsImFjdGlvbkNvbHVtbiIsInNob3dSb3dTZWxlY3Rpb24iLCJjb2x1bW5PcmRlciIsImV4cGFuZGFibGUiLCJ0YWJsZVRpdGxlIiwib3RoZXJ0YWJsZVBhcmFtcyIsIl9leGNsdWRlZDciLCJuZXdUYWJsZVN0b3JlIiwiX25ld1RhYmxlU3RvcmUkcmVxdWVzIiwidHJlZVN0b3JlIiwidHJlZVNlYXJjaCIsInRpdGxlQWxpYXMiLCJ0cmVlVGl0bGUiLCJvdGhlcnRyZWVQYXJhbXMiLCJfZXhjbHVkZWQ4IiwidGFibGVQYXJhbXMiLCJsaXN0ZW5lcnMiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM2IiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNyIsInRhYmxlTG9hZENhbGxCYWNrIiwiZGVmYXVsdFZhbHVlIiwibWVudUNvZGUiLCJwZXJtaXNzb25zIiwidGFibGVDb2x1bW4iLCJzZWFyY2hGb3JtcyIsImVkaXRvckZvcm1zIiwidG9vbEJ1dHRvbnMiLCJmb3JtQnV0dG9uIiwiYnV0dG9uTWFwIiwiZWRpdG9yIiwiZGVsZXRlIiwic2VhcmNoIiwicmV0dXJuQnV0dG9uIiwiX2J1dHRvbk1hcCRjb2RlIiwiZGVmYXVsdFByb3BzIiwib25FZGl0b3IiLCJfdGhpczIkcHJvcHMkb25DYWxsQmEiLCJfdGhpczIkcHJvcHMkb25DYWxsQmEyIiwib25FZGl0b3JDYWxsQmFjayIsIm9uU2VhcmNoQ2FsbEJhY2siLCJjaGVja1BlcnNzaW9uIiwiaW5kZXhPZiIsIm9uQWRkIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjOCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzkiLCJvbkFkZENhbGxCYWNrIiwiYmluZCIsImRhbmdlciIsIkFycmF5IiwiaXNBcnJheSIsImNoaWxkIiwiX2NoaWxkJHByb3BzIiwiX2NoaWxkJHByb3BzMiIsIl9jaGlsZCRwcm9wczMiLCJfY2hpbGQkcHJvcHM0IiwiX2NoaWxkJHByb3BzNSIsIl9jaGlsZCRwcm9wczYiLCJfY2hpbGQkcHJvcHM3IiwiX2l0ZW0kcHJvcHM1IiwiX2l0ZW0kcHJvcHM2IiwiX2l0ZW0kcHJvcHM3IiwiX2l0ZW0kcHJvcHM4IiwiX2l0ZW0kcHJvcHM5IiwiZGF0YUluZGV4IiwiYWxpZ24iLCJ0ZXh0QWxpZ24iLCJ3aWR0aCIsImZpeGVkIiwicmVhY29yZCIsIkZyYWdtZW50Iiwic2VhcmNoRmxhZyIsInRhYmxlVG9vbCIsInRvb2xGbGFnIiwidG9vbGJhciIsInRvb2xzIiwidG9vbEhlaWdodCIsInBhZGRpbmdIZWlnaHQiLCJ0YWJsZUNvbnRlbnRIZWlnaHQiLCJQYWdpbmF0aW9uSGVpZ2h0IiwicGFnaW5hdGlvbiIsInRhYmxlSGVpZ2h0IiwidGFibGVTcm9sbEhlaWdodCIsInNjcm9sbCIsIngiLCJ5IiwicmVmIiwicGFnZVRpdGxlIiwiZGlzcGxheSIsIm9uTW91c2VEb3duIiwiY2hlY2thYmxlIiwic2VhcmNoYWJsZSIsIm9uU2VsZWN0Iiwib25SZXNldCIsIl90aGlzJHNlYXJjaFJlZiRjdXJyZTMiLCJzZWFyY2hGb3JtUHJvcHMiLCJwYWdlQ29udGVudFJlZiIsImV4cGFuZEljb24iLCJfcmVmIiwiX3JlY29yZCRjaGlsZE5vZGVzIiwiX3JlY29yZCRjaGlsZE5vZGVzMiIsImV4cGFuZGVkIiwib25FeHBhbmQiLCJvbkNoYW5nZSIsIm9uVG9vbENsaWNrIiwib25SZWZyZXNoIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMTAiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMxMSIsIm9uU3VtYml0Q2FsbEJhY2siLCJmb3JtcyIsIm9uU3VibWl0Iiwib25IaWRlRm9ybSIsIm9uRm9ybUNoYW5nZSIsImNoYW5nZVZhbGlkIiwicmVxdWVzdE9iamVjdCIsImFkZFVybCIsImVkaXRvclVybCIsImFkZFBhcmFtcyIsImVkaXRvclBhcmFtcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2UvQmFzZVBhZ2UvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50LCBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IFRhYmxlIGZyb20gXCIuLi8uLi9iYXNlL3RhYmxlXCI7XHJcbmltcG9ydCBUcmVlIGZyb20gXCIuLi8uLi9iYXNlL3RyZWVcIjtcclxuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vLi4vYmFzZS9idXR0b25cIjtcclxuaW1wb3J0IE1vZGFsIGZyb20gXCIuLi8uLi9iYXNlL21vZGFsXCI7XHJcbmltcG9ydCBQb3BvdmVyIGZyb20gXCIuLi8uLi9iYXNlL3BvcG92ZXJcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgRWRpdG9yRm9ybSwgeyBGb3JtUGFnZVByb3BzIH0gZnJvbSBcIi4uL0Zvcm1QYWdlL2luZGV4XCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IFwiLi9pbmRleC5tb2R1bGUubGVzc1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgUGFnZVN0b3JlLCBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIERvd25PdXRsaW5lZCxcclxuICBFeWVPdXRsaW5lZCxcclxuICBFZGl0T3V0bGluZWQsXHJcbiAgUmlnaHRPdXRsaW5lZCxcclxuICBQbHVzT3V0bGluZWQsXHJcbiAgRWxsaXBzaXNPdXRsaW5lZCxcclxuICBEZWxldGVPdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IHsgY29udmVyRnVuY3Rpb24sIGdldExlc3MsIGdldE5vZGUsIHNpbXBsaWZ5Q29sdW1ucyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgcmVxdWVzdCBmcm9tIFwibnNjLXJlcXVlc3RcIjtcclxuaW1wb3J0IGNvbmZpZyBmcm9tIFwiLi4vLi4vY29uZmlnXCI7XHJcbmltcG9ydCB7IGdldFN0b3JhZ2UsIHB4MnZ3LCBnZXRCdXR0b25QZXJtaXNzb25zIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCBIZWFkZXJTZWFyY2ggZnJvbSBcIi4uL0hlYWRlclNlYXJjaFwiO1xyXG5pbXBvcnQgeyBQYWdpbmF0aW9uUHJvcHMgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgbnNjZmlsZSBmcm9tIFwibnNjLWZpbGVcIjtcclxuaW1wb3J0IHsgY29udmVydENvbHVtbnMsIGdldE5ld0NvbHVtbnMgfSBmcm9tIFwiLi91dGlsc1wiO1xyXG5pbXBvcnQgaXNFcXVhbCBmcm9tIFwibG9kYXNoL2lzRXF1YWxcIjtcclxuaW1wb3J0IHRocm90dGxlIGZyb20gXCJsb2Rhc2gvdGhyb3R0bGVcIjtcclxuaW1wb3J0IENvbXBvdW5kZWRTcGFjZSBmcm9tIFwiYW50ZC9lcy9zcGFjZVwiO1xyXG5pbXBvcnQgeyBjb252ZXJ0U3RyaW5nVG9PYmogfSBmcm9tIFwiLi4vU2V0dGluZ1V0aWwvdXRpbHNcIjtcclxudHlwZSBCdXR0b25JdGVtID1cclxuICB8IHN0cmluZ1xyXG4gIHwge1xyXG4gICAgICBjb2RlOiBzdHJpbmc7XHJcbiAgICAgIHJlY29yZFNob3c/OiBzdHJpbmcgfCBGdW5jdGlvbjtcclxuICAgICAgcHJvcHM/OiBhbnk7XHJcbiAgICB9O1xyXG5cclxuaW50ZXJmYWNlIFRhYmxlUHJvcHMge1xyXG4gIGFjdGlvbkNvbHVtbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65pON5L2c5YiXXHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIGZpbHRlckNvbHVtbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S66L+H5ruk5oyJ6ZKuXHJcbiAgc2hvd1Jvd1NlbGVjdGlvbj86IGJvb2xlYW47IC8v5piv5ZCm6KGo5qC85Yu+6YCJ5YiXXHJcbiAgcGFnaW5hdGlvbj86IGJvb2xlYW4gfCBQYWdpbmF0aW9uUHJvcHM7IC8v5piv5ZCm5pi+56S65YiG6aG1XHJcbiAgY29sdW1uT3JkZXI/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuihqOagvOW6j+WIl1xyXG4gIFtwcm9wc05hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5jb25zdCBzdHlsZXMgPSBudWxsO1xyXG5pbnRlcmZhY2UgVHJlZVByb3BzIHtcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgc2hvd1NlYXJjaD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65pCc57Si5qGGXHJcbiAgc2VhcmNoS2V5Pzogc3RyaW5nOyAvL+aQnOe0onZhbHVl5a+55bqU55qEa2V5XHJcbiAgc2VhcmNoRmllbGQ/OiBzdHJpbmc7IC8v5p+l6K+i5a+55bqU55qEa2V5XHJcbiAgdGl0bGVBbGlhcz86IHN0cmluZzsgLy/moJF0aXRsZeWvueW6lOeahGtleSzpu5jorqR0aXRsZVxyXG4gIG5vZGVQb3Jwcz86IG9iamVjdDtcclxuICBwYXJhbnRTZWxlY3Q/OiBib29sZWFuO1xyXG4gIFtwcm9wc05hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5pbnRlcmZhY2UgRm9ybVByb3BzIGV4dGVuZHMgRm9ybVBhZ2VQcm9wcyB7fVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBOU0NCYXNlQmFnZVByb3BzIHtcclxuICBzaG93U2VhcmNoPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrlpLTpg6jmkJzntKLmoI9cclxuICB0YWJsZVByb3BzPzogVGFibGVQcm9wczsgLy/ooajmoLzlj4LmlbBcclxuICB0cmVlUHJvcHM/OiBUcmVlUHJvcHM7IC8v5bem5L6n5qCR5Y+C5pWwXHJcbiAgc3VibWl0UGFyYW1zPzogT2JqZWN0OyAvL+a3u+WKoOWPguaVsO+8jOm7mOiupG1vdGhvZDpwb3N077yMIOWPguaVsOmAmui/h2RhdGHkvKDpgJJcclxuICBzdWJtaXRVcmw/OiBzdHJpbmc7XHJcbiAgb25TdWJtaXQ/OiAodmFsdWU/OiBhbnksIGxhYmVsPzogYW55KSA9PiB2b2lkO1xyXG4gIGNvbHVtbnM/OiBBcnJheTxPYmplY3Q+O1xyXG4gIHNob3dMZWZ0PzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrlt6bkvqfnm67lvZXmoJFcclxuICBzaG93VG9vbEJ1dHRvbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65oyJ6ZKu5qCPXHJcbiAgZWRpdG9yRm9ybT86IGJvb2xlYW47IC8v5piv5ZCm6ZyA6KaB6KGo5Y2V5Yqf6IO9ICwg5Li6ZmFsc2Ug57yW6L6R77yM5p+l55yL77yM5paw5aKe5Yqf6IO95Z2H5LiN5Y+v55SoXHJcbiAgZGVsZXRlVXJsPzogc3RyaW5nOyAvL+WIoOmZpHVybFxyXG4gIG9uRGVsZXRlPzogKHNlbGVjdGVkS2V5cz86IEFycmF5PHN0cmluZz4pID0+IHZvaWQ7IC8v5Yig6Zmk5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HaWRz5ou85o6l5Lyg6YCS57uZ5ZCO5Y+wXHJcbiAgZGVsZXRlUGFyYW1zPzogT2JqZWN0O1xyXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xyXG4gIG9uU2VhcmNoPzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gIG9uUmVzZXQ/OiAoKSA9PiB2b2lkO1xyXG4gIGluaXREYXRhPzogYW55OyAvL+WIneWni+WMluWbnuiwg+WHveaVsO+8jOWcqGNvbXBvbmVudERpZE1vdW505Lit6LCD55SoXHJcbiAgYnV0dG9ucz86IEJ1dHRvbkl0ZW1bXTsgLy/mjInpkq7pm4blkIggIFsnYWRkJywnZGVsZXRlJywnc2VhcmNoJywnZWRpdG9yJywnZGVsZXRlX2JhdGNoJ11cclxuICBvblNob3dGb3JtPzogKHZhbHVlPzogYW55LCBlZGl0b3JGbGFnPzogc3RyaW5nKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uSGlkZUZvcm0/OiAoKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uRm9ybUNoYW5nZT86IChjaGFuZ2VkVmFsdWVzPzogYW55LCBhbGxWYWx1ZXM/OiBhbnkpID0+IHZvaWQ7IC8v6KGo5Y2Vb25DaGFuZ2Xlm57osINcclxuICBmb3JtVHlwZT86IFwibW9kYWxcIiB8IFwiZHJhd2VyXCIgfCBcInBhZ2VcIjtcclxuICBmb3JtQ2hhbmdlVmFsaWQ/OiBib29sZWFuOyAvL+ihqOWNleagoemqjFxyXG4gIGNsYXNzTmFtZT86IGFueTtcclxuICB0b29sQnV0dG9uUG9zaXRpb24/OiBcInJpZ2h0XCIgfCBcImJ1dHRvbVwiO1xyXG4gIHBhZ2VUaXRsZT86IHN0cmluZyB8IFJlYWN0Tm9kZTtcclxuICBhY3Rpb25Qcm9wcz86IHtcclxuICAgIHRleHRBbGlnbj86IHN0cmluZztcclxuICAgIHNob3dJY29uPzogYm9vbGVhbjtcclxuICAgIHdpZHRoPzogbnVtYmVyO1xyXG4gICAgYnV0dG9uTnVtYmVyPzogbnVtYmVyIHwgXCJhbGxcIjtcclxuICB9O1xyXG4gIHNlYXJjaEZvcm1Qcm9wcz86IHsgd3JhcHBlckNvbD86IGFueTsgbGFiZWxDb2w/OiBhbnkgfTtcclxuICBvblRyZWVTZWxlY3Q/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25DYWxsQmFja3M/OiB7XHJcbiAgICB0cmVlU2VsZWN0Q2FsbEJhY2s/OiBhbnk7IC8v5qCR54K55Ye75p+l6K+i5ZCO5Zue6LCDXHJcbiAgICBvblF1ZXJ5Q2FsbEJhY2s/OiBhbnk7IC8v5p+l6K+i5Zue6LCD77yM5p+l6K+i5pWw5o2u5ZCO5Zue6LCDXHJcbiAgICBvblN1bWJpdENhbGxCYWNrPzogYW55OyAvL+S/neWtmOWbnuiwg++8jOS/neWtmOaVsOaNruaIkOWKn+WQjuWbnuiwg1xyXG4gICAgb25EZWxldGVDYWxsQmFjaz86IGFueTsgLy/liKDpmaTmjInpkq7lm57osIPvvIzliKDpmaTmlbDmja7lkI7miafooYxcclxuICAgIG9uRWRpdG9yQ2FsbEJhY2s/OiBhbnk7IC8v57yW6L6R5oyJ6ZKu5Zue6LCD77yM5omT5byA5by55qGG5ZCO5omn6KGMXHJcbiAgICBvbkFkZENhbGxCYWNrPzogYW55OyAvL+a3u+WKoOaMiemSruWbnuiwg++8jOaJk+W8gOW8ueahhuWQjuaJp+ihjFxyXG4gICAgb25TZWFyY2hDYWxsQmFjaz86IGFueTsgLy/liJfooajmn6Xor6LmjInpkq7lm57osIPvvIzmiZPlvIDlvLnmoYblkI7miafooYxcclxuICAgIHRhYmxlTG9hZENhbGxCYWNrPzogYW55OyAvL+WIl+ihqOafpeivouWbnuiwgy0tbG9hZFxyXG4gIH07XHJcbiAgcGFnZVR5cGU/OiBcIm5vcm1hbFwiIHwgXCJ0YWJzcGFnZVwiO1xyXG4gIGZvcm1QYWdlUHJvcHM/OiBGb3JtUGFnZVByb3BzO1xyXG4gIGJ1dHRvbkNsaWNrPzoge1xyXG4gICAgb25BZGQ/OiAoKSA9PiB2b2lkO1xyXG4gICAgb25FZGl0b3I/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgICBvblNlYXJjaD86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICAgIG9uRGVsZXRlPzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gIH07XHJcbiAgcGVybWlzc2lvbj86IHtcclxuICAgIGhhcz86IGJvb2xlYW47XHJcbiAgICBtZW51Q29kZT86IHN0cmluZztcclxuICB9O1xyXG4gIHJlcXVlc3RQYXJhbXM/OiB7XHJcbiAgICAvL+mcgOimgemineWkluS8oOeahOWbuuWumuivt+axguWPguaVsFxyXG4gICAgYWRkUGFyYW1zPzogT2JqZWN0OyAvL+aWsOWinuWbuuWumuWPguaVsFxyXG4gICAgZWRpdG9yUGFyYW1zPzogT2JqZWN0OyAvL+e8lui+keWbuuWumuWPguaVsFxyXG4gICAgcXVlcnlQYXJhbXM/OiBPYmplY3Q7IC8v5p+l6K+i5Zu65a6a5Y+C5pWwXHJcbiAgICBkZWxldGVQYXJhbXM/OiBPYmplY3Q7IC8v5Yig6Zmk5Zu65a6a5Y+C5pWwXHJcbiAgfTtcclxuICByZXF1ZXN0VXJscz86IHtcclxuICAgIGFkZFVybD86IHN0cmluZzsgLy/mlrDlop51cmxcclxuICAgIGVkaXRvclVybD86IHN0cmluZzsgLy/nvJbovpF1cmxcclxuICAgIGRlbGV0ZVVybD86IHN0cmluZzsgLy/liKDpmaR1cmxcclxuICB9O1xyXG4gIGZ1bmNzPzogYW55O1xyXG4gIHJlcXVlc3RDb25maWc/OiBhbnk7XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5jbGFzcyBCYXNlUGFnZSBleHRlbmRzIFB1cmVDb21wb25lbnQ8TlNDQmFzZUJhZ2VQcm9wcywgYW55PiB7XHJcbiAgdGFibGVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHRyZWVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHNlYXJjaFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZWRpdG9yUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBwYWdlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBwYWdlQ29udGVudFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZGF0ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICB0YWJsZVdyYXBwZXJSZWYgPSBSZWFjdC5jcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XHJcbiAgc3RhdGljIGNvbnZlcnRDb2x1bW5zID0gY29udmVydENvbHVtbnM7XHJcbiAgY29uc3RydWN0b3IocHJvcHM6IGFueSkge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgbGV0IHsgc3RvcmVQcmVmaXggfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHR5cGUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCItXCIgKyBcImZvcm1UeXBlXCIgOiBcImZvcm1UeXBlXCJcclxuICAgICk7XHJcbiAgICB0eXBlID0gdHlwZT8uY29udGVudDtcclxuICAgIGxldCBzaXplID0gZ2V0U3RvcmFnZShcclxuICAgICAgc3RvcmVQcmVmaXggPyBzdG9yZVByZWZpeCArIFwiLVwiICsgXCJ0YWJsZVNpemVcIiA6IFwidGFibGVTaXplXCJcclxuICAgICk7XHJcbiAgICBzaXplID0gc2l6ZT8uY29udGVudDtcclxuICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgIHR5cGU6IFwiYWRkXCIsXHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogW10sXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IFtdLFxyXG4gICAgICB0cmVlU2VsZWN0ZWRLZXk6IFwiXCIsXHJcbiAgICAgIGV4cGFuZDogZmFsc2UsXHJcbiAgICAgIGZvcm1UeXBlOiB0eXBlIHx8IFwibW9kYWxcIixcclxuICAgICAgdGFibGVTaXplOiBzaXplIHx8IFwiZGVmYXVsdFwiLFxyXG4gICAgICB0cmVlU2VhcmNoUHJhbXM6IHt9LFxyXG4gICAgICBwb3BvcGVuczoge30sXHJcbiAgICAgIG1vcmVPcGVuOiBmYWxzZSxcclxuICAgICAgZWxlbWVudEhlaWdodDogMCxcclxuICAgICAgcGVybWlzc2lvbkJ1dHRvbnM6IFtdLFxyXG4gICAgICBxdWVyeVBhcmFtczoge30sXHJcbiAgICAgIHRhYmxlSGVhZGVySGVpZ2h0OiAwLCAvLyDmt7vliqDooajlpLTpq5jluqbliLBzdGF0ZVxyXG4gICAgICBidXR0b25zTG9hZGluZzoge30sXHJcbiAgICAgIHRyZWVXaWR0aDogdGhpcy5wcm9wcy5zaG93TGVmdCA/IDI2MCA6IDAsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IGluaXREYXRhLCBwZXJtaXNzb24gPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGVsZW1lbnRIZWlnaHQgPSB0aGlzLnBhZ2VSZWYuY3VycmVudD8uY2xpZW50SGVpZ2h0O1xyXG5cclxuICAgIC8vIOa3u+WKoOeql+WPo3Jlc2l6ZeebkeWQrFxyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgdGhpcy50aHJvdHRsZUNhbGN1bGF0ZVRhYmxlSGVhZGVySGVpZ2h0KTtcclxuXHJcbiAgICAvLyDliJ3lp4vorqHnrpfooajlpLTpq5jluqZcclxuICAgIHNldFRpbWVvdXQodGhpcy5jYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCwgMCk7XHJcblxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGVsZW1lbnRIZWlnaHQsXHJcbiAgICB9KTtcclxuICAgIGluaXREYXRhICYmIGluaXREYXRhKCk7XHJcbiAgfVxyXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMpIHtcclxuICAgIGNvbnN0IGVsZW1lbnRIZWlnaHQgPSB0aGlzLnBhZ2VSZWYuY3VycmVudD8uY2xpZW50SGVpZ2h0O1xyXG4gICAgaWYgKGVsZW1lbnRIZWlnaHQgPiB0aGlzLnN0YXRlLmVsZW1lbnRIZWlnaHQpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgZWxlbWVudEhlaWdodCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAocHJldlByb3BzLnNob3dMZWZ0ICE9PSB0aGlzLnByb3BzLnNob3dMZWZ0KSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHRyZWVXaWR0aDogdGhpcy5wcm9wcy5zaG93TGVmdCA/IDI2MCA6IDAsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcclxuICAgIC8vIOenu+mZpHJlc2l6ZeebkeWQrFxyXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXHJcbiAgICAgIFwicmVzaXplXCIsXHJcbiAgICAgIHRoaXMudGhyb3R0bGVDYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodFxyXG4gICAgKTtcclxuICB9XHJcbiAgc2V0U2VhcmNoUGFyYW1zKHBhcmFtcywgY2FsbEJhY2spIHtcclxuICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnNldFNlYXJjaFBhcmFtcyhwYXJhbXMpO1xyXG4gICAgY2FsbEJhY2sgJiYgY2FsbEJhY2socGFyYW1zKTtcclxuICB9XHJcbiAgZG9TdWJtaXQoZGF0YSwgbGFiZWwgPSBcIue8lui+kVwiKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5kb1N1Ym1pdChkYXRhLCBsYWJlbCk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdCA9IChjaGVja2VkVHJlZUtleXM6IGFueSkgPT4ge1xyXG4gICAgY29uc3QgeyBuYW1lLCB1c2VyVHlwZSwgYWNjb3VudCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHZhbHVlID0geyBuYW1lLCB1c2VyVHlwZSwgYWNjb3VudCwgZGVwdElkOiBjaGVja2VkVHJlZUtleXNbMF0gfTtcclxuICAgIGlmICh0aGlzLnByb3BzLm9uU2VhcmNoKSB7XHJcbiAgICAgIHRoaXMucHJvcHMub25TZWFyY2godmFsdWUpO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy50YWJsZUxvYWQodmFsdWUpO1xyXG4gIH07XHJcblxyXG4gIC8v5pi+56S66KGo5Y2VXHJcbiAgc2hvd0Zvcm0odmFsdWU/OiBhbnksIGVkaXRvcmZsYWcgPSBcImFkZFwiLCBjYWxsQmFjaz86IGFueSkge1xyXG4gICAgaWYgKHRoaXMucHJvcHMuZm9ybVBhZ2VQcm9wcz8uZm9ybVR5cGUgPT0gXCJwYWdlXCIpIHtcclxuICAgICAgY29uc3QgeyBmdW5jcyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICBsZXQgcGF0aG5hbWUgPSBgL2Zvcm1wYWdlLyR7ZWRpdG9yZmxhZyA/IGVkaXRvcmZsYWcgOiBcImFkZFwifS90YWJsZS8ke1xyXG4gICAgICAgIHRoaXMucHJvcHMudGFibGVDb2RlXHJcbiAgICAgIH1gO1xyXG4gICAgICBpZiAoZWRpdG9yZmxhZyA9PSBcImVkaXRvclwiIHx8IGVkaXRvcmZsYWcgPT0gXCJzZWFyY2hcIikge1xyXG4gICAgICAgIHBhdGhuYW1lID0gcGF0aG5hbWUgKyBcIj9pZD1cIiArIHZhbHVlLmlkO1xyXG4gICAgICB9XHJcbiAgICAgIGZ1bmNzPy5oaXN0b3J5KFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHBhdGhuYW1lOiBwYXRobmFtZSxcclxuICAgICAgICAgIHNlcnZpY2VOYW1lOiBcInNldHRpbmctd2ViXCIsXHJcbiAgICAgICAgICBzZXJ2aWNlUGF0aDogXCIvc2V0dGluZ1wiLFxyXG4gICAgICAgICAgaWQ6XHJcbiAgICAgICAgICAgIG5ldyBEYXRlKCkuZ2V0VGltZSgpICtcclxuICAgICAgICAgICAgKHZhbHVlPy5pZCB8fCBcIl9cIikgK1xyXG4gICAgICAgICAgICBlZGl0b3JmbGFnICtcclxuICAgICAgICAgICAgXCLigJRcIiArXHJcbiAgICAgICAgICAgIHRoaXMucHJvcHMudGFibGVDb2RlICtcclxuICAgICAgICAgICAgKHZhbHVlPy5pZCA/IFwiX1wiICsgdmFsdWUuaWQgOiBcIlwiKSxcclxuICAgICAgICAgIHRpdGxlOlxyXG4gICAgICAgICAgICBg44CQJHtcclxuICAgICAgICAgICAgICBlZGl0b3JmbGFnID09IFwiYWRkXCJcclxuICAgICAgICAgICAgICAgID8gXCLmlrDlop5cIlxyXG4gICAgICAgICAgICAgICAgOiBlZGl0b3JmbGFnID09IFwiZWRpdG9yXCJcclxuICAgICAgICAgICAgICAgID8gXCLnvJbovpFcIlxyXG4gICAgICAgICAgICAgICAgOiBcIuafpeeci1wiXHJcbiAgICAgICAgICAgIH3jgJFgICsgdGhpcy5wcm9wcy5mb3JtUGFnZVByb3BzPy50aXRsZSB8fCBcIlwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJhZGRUYWJcIlxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IG5ld1ZhbHVlID0gdmFsdWUgPyB7IC4uLnZhbHVlIH0gOiBudWxsO1xyXG4gICAgICB0aGlzLmVkaXRvclJlZj8uY3VycmVudD8uc2hvdyhuZXdWYWx1ZSwgZWRpdG9yZmxhZywgY2FsbEJhY2spO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy/lhbPpl63ooajljZVcclxuICBoaWRlRm9ybSgpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBzZXRMb2FkaW5nKGxvYWRpbmc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNldExvYWRpbmcobG9hZGluZyk7XHJcbiAgfVxyXG5cclxuICBzZXRFZGl0Rm9ybVZhbHVlcyh2YWx1ZSwgdHlwZSA9IFwi57yW6L6RXCIpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNldEZvcm1WYWx1ZSh2YWx1ZSwgdHlwZSk7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0Rm9ybVZhbHVlcygpIHtcclxuICAgIHJldHVybiB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5nZXRGb3JtVmFsdWUoKTtcclxuICB9XHJcblxyXG4gIC8v5om56YeP5Yig6ZmkXHJcbiAgb25EZWxldGUoZGF0YT86IGFueSwgZGVsZXRlUG9zaXRpb24gPSBcInJvd1wiKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGRlbGV0ZVVybCxcclxuICAgICAgb25EZWxldGUsXHJcbiAgICAgIGRlbGV0ZVBhcmFtcyA9IHt9LFxyXG4gICAgICBidXR0b25DbGljayA9IHt9LFxyXG4gICAgICByZXF1ZXN0UGFyYW1zID0ge30sXHJcbiAgICAgIHJlcXVlc3RVcmxzID0ge30sXHJcbiAgICAgIHJlcXVlc3RDb25maWcgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGNvbnN0IHNlbGVjdGVkUm93S2V5cyA9IHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgICBjb25zdCBzZWxlY3RlZFJvd0RhdGFzID0gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0RhdGFzKCk7XHJcbiAgICBsZXQgdXJsID0gcmVxdWVzdFVybHMuZGVsZXRlVXJsID8gcmVxdWVzdFVybHMuZGVsZXRlVXJsIDogZGVsZXRlVXJsO1xyXG4gICAgbGV0IHBhcmFtczogYW55ID0gcmVxdWVzdFBhcmFtcy5kZWxldGVQYXJhbXNcclxuICAgICAgPyByZXF1ZXN0UGFyYW1zLmRlbGV0ZVBhcmFtc1xyXG4gICAgICA6IGRlbGV0ZVBhcmFtcztcclxuICAgIGlmIChkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIikge1xyXG4gICAgICBpZiAoc2VsZWN0ZWRSb3dLZXlzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgbWVzc2FnZS53YXJuaW5nKFwi6K+36YCJ5oup6KaB5Yig6Zmk55qE5pWw5o2u77yBXCIpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgTW9kYWwuY29uZmlybSh7XHJcbiAgICAgIGNvbnRlbnQ6IFwi5piv5ZCm56Gu6K6k5Yig6Zmk5omA6YCJ6aG577yfXCIsXHJcbiAgICAgIC8vIGNlbnRlcmVkOnRydWUsXHJcbiAgICAgIG9uT2s6ICgpID0+IHtcclxuICAgICAgICBpZiAoYnV0dG9uQ2xpY2sub25EZWxldGUpIHtcclxuICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICBidXR0b25DbGljay5vbkRlbGV0ZSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICByZWNvcmQ6IGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dEYXRhcyA6IGRhdGEsXHJcbiAgICAgICAgICAgICAgaWRzOiBkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cyA6IGRhdGE/LmlkLFxyXG4gICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob25EZWxldGUpIHtcclxuICAgICAgICAgIG9uRGVsZXRlICYmXHJcbiAgICAgICAgICAgIG9uRGVsZXRlKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dLZXlzIDogZGF0YSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdXJsKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1cmzkuI3og73kuLrnqbrvvIFcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHsgZGF0YTogZGF0YVBhcmFtcyA9IHt9LCAuLi5vdGhlclBhcmFtcyB9ID0gcGFyYW1zO1xyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRQYXJhbXMgPSB7XHJcbiAgICAgICAgICBtZXRob2Q6IFwicG9zdFwiLFxyXG4gICAgICAgICAgYXV0b1ByZWZpeDogdHJ1ZSxcclxuICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICBpZHM6IGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dLZXlzLmpvaW4oKSA6IGRhdGEuaWQsXHJcbiAgICAgICAgICAgIC4uLmRhdGFQYXJhbXMsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGxldCBmaW5hbFBhcmFtcyA9IHt9IGFzIGFueTtcclxuICAgICAgICBmaW5hbFBhcmFtcyA9IHsgLi4uZGVmYXVsdFBhcmFtcywgLi4ub3RoZXJQYXJhbXMgfTtcclxuICAgICAgICByZXF1ZXN0KHVybCwge1xyXG4gICAgICAgICAgLi4uZmluYWxQYXJhbXMsXHJcbiAgICAgICAgfSlcclxuICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXM6IGFueSkge1xyXG4gICAgICAgICAgICBjb25zdCB7IGNvZGUgfSA9IHJlcztcclxuICAgICAgICAgICAgaWYgKGNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgIG1lc3NhZ2Uuc3VjY2VzcyhcIuWIoOmZpOaIkOWKn++8gVwiKTtcclxuICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBfdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkRlbGV0ZUNhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRGVsZXRlQ2FsbEJhY2ssXHJcbiAgICAgICAgICAgICAgICAgIHsgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgX3RoaXMudGFibGVMb2FkKHZhbHVlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLmVycm9yKFwi5Yig6Zmk5aSx6LSl77yBXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZXJyb3IpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgdGFibGVMb2FkKHBhcmFtczogYW55LCByZXF1ZXN0Q29uZmlnID0ge30pIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgcmVxdWVzdENvbmZpZzogZGVmYXVsdFJlcXVlc3RDb25maWcgPSB7fSxcclxuICAgICAgcmVxdWVzdFBhcmFtcyA9IHt9LFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgc3RvcmU6IHRhYmxlU3RvcmUgPSB7fSB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCBxdWVyeVBhcmFtczogYW55ID0gdGhpcy5jb252ZXJ0UXVlcnlQYXJhbXMoKTtcclxuICAgIGxldCBkYXRhID0gcXVlcnlQYXJhbXMuZGF0YSB8fCBxdWVyeVBhcmFtcy5wYXJhbXMgfHwge307XHJcblxyXG4gICAgbGV0IGZpbmFsUGFyYW1zID0ge1xyXG4gICAgICAuLi5kYXRhLFxyXG4gICAgICAuLi50YWJsZVN0b3JlLnJlcXVlc3RDb25maWc/LnBhcmFtcyxcclxuICAgICAgLi4ucGFyYW1zLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHsgcmVxdWVzdENvbmlnOiBzdG9yZUNvbmZpZyA9IHt9IH0gPSB0YWJsZVN0b3JlO1xyXG4gICAgY29uc3QgeyBwYXJhbXM6IHN0b3JlUGFyYW1zID0ge30sIC4uLm90aGVyU3RvcmVDb25maWcgfSA9IHN0b3JlQ29uZmlnO1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZS5sb2FkKHtcclxuICAgICAgLi4uZGVmYXVsdFJlcXVlc3RDb25maWcsXHJcbiAgICAgIC4uLm90aGVyU3RvcmVDb25maWcsXHJcbiAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgIHBhcmFtczogeyAuLi5zdG9yZVBhcmFtcywgLi4uZmluYWxQYXJhbXMgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICAvL+afpeivolxyXG4gIG9uU2VhcmNoKHBhcmFtcykge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBvblNlYXJjaCxcclxuICAgICAgb25DYWxsQmFja3MsXHJcbiAgICAgIHJlcXVlc3RQYXJhbXMgPSB7fSxcclxuICAgICAgdGFibGVQcm9wcyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHN0b3JlOiB0YWJsZVN0b3JlID0ge30gfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHRoaXMuY29udmVydFF1ZXJ5UGFyYW1zKCk7XHJcbiAgICBsZXQgZGF0YSA9IHF1ZXJ5UGFyYW1zLmRhdGEgfHwgcXVlcnlQYXJhbXMucGFyYW1zIHx8IHt9O1xyXG4gICAgbGV0IGZpbmFsUGFyYW1zID0ge1xyXG4gICAgICAuLi5kYXRhLFxyXG4gICAgICAuLi50YWJsZVN0b3JlLnJlcXVlc3RDb25maWc/LnBhcmFtcyxcclxuICAgICAgLi4ucGFyYW1zLFxyXG4gICAgfTtcclxuICAgIGlmIChvblNlYXJjaCkge1xyXG4gICAgICBvblNlYXJjaCh7IC4uLmZpbmFsUGFyYW1zLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy50YWJsZUxvYWQoeyAuLi5maW5hbFBhcmFtcywgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfSk7XHJcbiAgICBvbkNhbGxCYWNrcz8ub25RdWVyeUNhbGxCYWNrICYmXHJcbiAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uUXVlcnlDYWxsQmFjayxcclxuICAgICAgICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiwgcGFyYW1zOiBwYXJhbXMgfSxcclxuICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIC8v6KGo5qC86YeN5paw5Yqg6L29XHJcbiAgdGFibGVSZWxvYWQocGFyYW1zID0ge30sIGF1dG9Mb2FkID0gdHJ1ZSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8ucmVsb2FkKHtcclxuICAgICAgY2FsbGJhY2s6IChyZXMpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBhdXRvTG9hZCAmJlxyXG4gICAgICAgICAgcmVzPy5kYXRhPy5yZWNvcmRzPy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgdGhpcy5zdGF0ZS5jdXJyZW50UGFnZSAhPT0gMVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8ucmVsb2FkKHtcclxuICAgICAgICAgICAgcGFyYW1zOiB7IGN1cnJlbnQ6IDEsIC4uLnBhcmFtcyB9LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHRyZWVMb2FkKHBhcmFtczogYW55LCByZXF1ZXN0Q29uZmlnID0ge30pIHtcclxuICAgIGNvbnN0IHsgcmVxdWVzdENvbmZpZzogZGVmYXVsdFJlcXVlc3RDb25maWcgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIHRoaXMudHJlZVJlZi5jdXJyZW50Py5zdG9yZS5sb2FkKHtcclxuICAgICAgLi4uZGVmYXVsdFJlcXVlc3RDb25maWcsXHJcbiAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgIHBhcmFtczogcGFyYW1zLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0RhdGFzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dEYXRhcygpO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0tleXMoZGF0YTogQXJyYXk8U3RyaW5nIHwgTnVtYmVyPikge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uc2V0U2VsZWN0ZWRSb3dLZXlzKGRhdGEpO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0RhdGFzKGRhdGE6IEFycmF5PE9iamVjdD4pIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnNldFNlbGVjdGVkUm93RGF0YXMoZGF0YSk7XHJcbiAgfVxyXG4gIHJlc2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8ucmVzZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICB9XHJcblxyXG4gIGdldFNlYXJjaFZhbHVlcygpIHtcclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgIHJldHVybiB7IC4uLmZyb21WYWx1ZSwgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfTtcclxuICB9XHJcblxyXG4gIGdldENoaWxkcmVuRGF0YShkYXRhLCBrZXlzID0gW10pIHtcclxuICAgIGNvbnN0IHsgdGFibGVQcm9wcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgcm93S2V5ID0gXCJpZFwiIH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IHJlc0tleSA9IFtdO1xyXG4gICAgbGV0IGtleSA9IFwiXCI7XHJcbiAgICBpZiAoZGF0YS5jaGlsZE5vZGVzKSB7XHJcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gZGF0YS5jaGlsZE5vZGVzO1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiByb3dLZXkgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICBrZXkgPSByb3dLZXkoaXRlbSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGtleSA9IGl0ZW1bcm93S2V5XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW0uY2hpbGROb2Rlcykge1xyXG4gICAgICAgICAgdGhpcy5nZXRDaGlsZHJlbkRhdGEoaXRlbS5jaGlsZE5vZGVzLCBrZXlzKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVzS2V5ID0gWy4uLmtleXMsIGtleV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJlc0tleSA9IFsuLi5rZXlzLCBrZXldO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc0tleTtcclxuICB9XHJcblxyXG4gIHJlbmRlclRvb2xCdXR0b25zKHRvb2xidXR0b25zOiBhbnksIHRvb2xiYXJGbGFnKSB7XHJcbiAgICBjb25zdCBmbGFnID0gdG9vbGJ1dHRvbnMubGVuZ3RoID4gNTtcclxuICAgIGNvbnN0IHsgc2hvd1NlYXJjaCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBjb250ZW50ID0gdG9vbGJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIGljb24sIHNob3csIC4uLnBhcmFtcyB9ID0gaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGluZGV4ID4gMykge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnQtaXRlbVwiKVxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgbW9yZU9wZW46IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2soKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgICAgdHlwZT17XCJsaW5rXCJ9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10b29sLWJ1dHRvbnNcIikpfVxyXG4gICAgICAgIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IDAgfX1cclxuICAgICAgPlxyXG4gICAgICAgIHt0b29sYnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICAgICAgaWYgKGluZGV4IDwgNCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6IDEyLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7aXRlbX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gNCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgICAgb3Blbj17dGhpcy5zdGF0ZS5tb3JlT3Blbn1cclxuICAgICAgICAgICAgICAgICAgb25PcGVuQ2hhbmdlPXsob3BlbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcGVuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW9yZU9wZW46IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVPcGVuOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgLy8gb3Blbj17dHJ1ZX1cclxuICAgICAgICAgICAgICAgICAgLy8gb3ZlcmxheUNsYXNzTmFtZT17c3R5bGVzWydwb3AtYm94J119XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdHlwZT1cInByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICDmm7TlpJogPERvd25PdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogaW5kZXggPT0gdG9vbGJ1dHRvbnMubGVuZ3RoIC0gMSA/IDAgOiAxMixcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge2l0ZW19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSl9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbiAgcmVuZGVyQ2xvdW1uQnV0dG9uKGNvbHVtbkJ1dHRvbnM6IGFueSwgcm93UmVjb3JkOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgYWN0aW9uUHJvcHMsIHRhYmxlUHJvcHMgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgYmFzZUFjdGlvbkNvbHVtbiB9ID0gY29uZmlnKCk7XHJcbiAgICBjb25zdCBuZXdCdXR0b25zID0gW107XHJcbiAgICBjb25zdCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCBrZXkgPSBcIlwiO1xyXG4gICAgaWYgKHR5cGVvZiByb3dLZXkgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgIGtleSA9IHJvd0tleShyb3dSZWNvcmQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAga2V5ID0gcm93UmVjb3JkW3Jvd0tleV07XHJcbiAgICB9XHJcbiAgICBsZXQgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGlmIChhY3Rpb25Qcm9wcz8uc2hvd0ljb24gPT09IHRydWUgfHwgYmFzZUFjdGlvbkNvbHVtbi5zaG93SWNvbiA9PT0gdHJ1ZSlcclxuICAgICAgc2hvd0ljb24gPSB0cnVlO1xyXG4gICAgY29sdW1uQnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgaWNvbiwgcmVjb3JkU2hvdywgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChyZWNvcmRTaG93KSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiByZWNvcmRTaG93ID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50T3B0aW9uID0ge1xyXG4gICAgICAgICAgICAgIHJlY29yZDogcm93UmVjb3JkLFxyXG4gICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgY29uc3QgVXRpbHMgPSB7IC4uLnRoaXMucHJvcHMuVWl0bHMgfTtcclxuICAgICAgICAgICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJldmVudE9wdGlvbixVdGlsc1wiLCByZWNvcmRTaG93KTtcclxuICAgICAgICAgICAgY29uc3Qgc2hvdyA9IGZ1bmMoZXZlbnRPcHRpb24sIFV0aWxzKTtcclxuICAgICAgICAgICAgc2hvdyAmJiBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGxldCByZWNvcmQgPSByb3dSZWNvcmQ7XHJcbiAgICAgICAgICAgIGlmIChldmFsKHJlY29yZFNob3cpKSB7XHJcbiAgICAgICAgICAgICAgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmVjb3JkU2hvdyA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgIGNvbnN0IHNob3cgPSByZWNvcmRTaG93KHJvd1JlY29yZCk7XHJcbiAgICAgICAgICBzaG93ICYmIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGxldCBudW1iZXIgPSBhY3Rpb25Qcm9wcz8uYnV0dG9uTnVtYmVyXHJcbiAgICAgID8gYWN0aW9uUHJvcHM/LmJ1dHRvbk51bWJlclxyXG4gICAgICA6IGJhc2VBY3Rpb25Db2x1bW4/LmJ1dHRvbk51bWJlclxyXG4gICAgICA/IGJhc2VBY3Rpb25Db2x1bW4/LmJ1dHRvbk51bWJlclxyXG4gICAgICA6IDM7XHJcbiAgICBsZXQgZmxhZyA9IGZhbHNlO1xyXG4gICAgaWYgKG51bWJlciA9PSBcImFsbFwiKSB7XHJcbiAgICAgIGZsYWcgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZsYWcgPSBuZXdCdXR0b25zLmxlbmd0aCA+IG51bWJlcjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gbmV3QnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgcmVjb3JkU2hvdywgaWNvbiwgc2hvdywgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChpbmRleCA+IE51bWJlcihudW1iZXIpIC0gMSkge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnQtaXRlbVwiKVxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7IC4uLnRoaXMuc3RhdGUucG9wb3BlbnMgfTtcclxuICAgICAgICAgICAgICBkYXRhW3Jvd1JlY29yZC5pZF0gPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgIHBvcG9wZW5zOiBkYXRhLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyb3dSZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICB0eXBlPXtcImxpbmtcIn1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbmV3QnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgcmVjb3JkU2hvdywgaWNvbiwgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgaWYgKGluZGV4IDwgbnVtYmVyKSB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSwge1xyXG4gICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3ItZmlyc3RcIildOiBpbmRleCA9PT0gMCxcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyb3dSZWNvcmQpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgaWNvbj17aWNvbn1cclxuICAgICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09IG51bWJlcikge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgIHRpdGxlPXtudWxsfVxyXG4gICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgdHJpZ2dlcj17W1wiY2xpY2tcIl19XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvcGVuPXt0aGlzLnN0YXRlLnBvcG9wZW5zW2tleV0gfHwgZmFsc2V9XHJcbiAgICAgICAgICAgICAgb25PcGVuQ2hhbmdlPXsob3BlbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKG9wZW4pIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7IC4uLnRoaXMuc3RhdGUucG9wb3BlbnMgfTtcclxuICAgICAgICAgICAgICAgICAgZGF0YVtrZXldID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3BlbnM6IGRhdGEsXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3BlbnM6IHt9LFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIC8vIG92ZXJsYXlDbGFzc05hbWU9e3N0eWxlc1sncG9wJ119XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8YSBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIil9PlxyXG4gICAgICAgICAgICAgICAgPEVsbGlwc2lzT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLCB7XHJcbiAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3ItZmlyc3RcIildOiBpbmRleCA9PT0gMCxcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socm93UmVjb3JkKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgdHlwZT1cImxpbmtcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIC8vIH1cclxuICB9XHJcbiAgLy/moJHngrnlh7vkuovku7ZcclxuICB0cmVlU2VsZWN0KHNlbGVjdGVkS2V5czogYW55LCBvYmo6IGFueSkge1xyXG4gICAgbGV0IGtleXdvcmQgPSBcIlwiO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzZWFyY2hLZXkgPSBcImtleVwiLFxyXG4gICAgICBzZWFyY2hGaWVsZCA9IFwiXCIsXHJcbiAgICAgIHBhcmFudFNlbGVjdCA9IHRydWUsXHJcbiAgICB9ID0gdGhpcy5wcm9wcy50cmVlUHJvcHM7XHJcbiAgICBjb25zdCB7IHRyZWVTZWxlY3RlZEtleSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgc2VsZWN0ZWQsIHNlbGVjdGVkTm9kZXMgfSA9IG9iajtcclxuXHJcbiAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAga2V5d29yZCA9IHNlbGVjdGVkTm9kZXNbMF0uZGF0YXJlZi5hdHRyaWJ1dGVbc2VhcmNoS2V5XTtcclxuICAgICAgaWYgKHBhcmFudFNlbGVjdCkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBzZWxlY3RlZEtleXNbMF0sXHJcbiAgICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHsgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChzZWxlY3RlZE5vZGVzWzBdLmlzTGVhZiB8fCAhc2VsZWN0ZWROb2Rlc1swXS5jaGlsZHJlbikge1xyXG4gICAgICAgICAgaWYgKHNlbGVjdGVkS2V5c1swXSAhPT0gdHJlZVNlbGVjdGVkS2V5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgIHRyZWVTZWxlY3RlZEtleTogc2VsZWN0ZWRLZXlzWzBdLFxyXG4gICAgICAgICAgICAgIHRyZWVTZWFyY2hQcmFtczogeyBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBrZXl3b3JkLFxyXG4gICAgICAgIHRyZWVTZWFyY2hQcmFtczoge30sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucHJvcHMub25UcmVlU2VsZWN0KSB7XHJcbiAgICAgIHRoaXMucHJvcHMub25UcmVlU2VsZWN0KHNlbGVjdGVkS2V5cywgb2JqKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpIHx8IHt9O1xyXG4gICAgc2VhcmNoRmllbGQgJiYgdGhpcy50YWJsZUxvYWQoeyAuLi5mcm9tVmFsdWUsIFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSk7XHJcbiAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50cmVlU2VsZWN0Q2FsbEJhY2sgJiZcclxuICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrLFxyXG4gICAgICAgIHsgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLCBzZWxlY3RlZEtleXM6IHNlbGVjdGVkS2V5cywgb2JqOiBvYmogfSxcclxuICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICk7XHJcbiAgICAvLyB1dGlscy5jYWxsYmFjayh0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50cmVlU2VsZWN0Q2FsbEJhY2ssIHRoaXMsIFtcclxuICAgIC8vICAgc2VsZWN0ZWRLZXlzLFxyXG4gICAgLy8gICBvYmosXHJcbiAgICAvLyBdKTtcclxuICB9XHJcbiAgcmVzZXRTZWFyY2goKSB7XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gIH1cclxuICBnZXRUZXh0KHByb3BzLCB0ZXh0KSB7XHJcbiAgICBsZXQgbmV3VGV4dCA9IHRleHQ7XHJcbiAgICBpZiAocHJvcHM/LmRhdGEgJiYgcHJvcHM/LmRhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGRhdGEgPSBwcm9wcy5kYXRhO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGE/Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGRhdGFbaV0udmFsdWUgPT0gdGV4dCkge1xyXG4gICAgICAgICAgbmV3VGV4dCA9IGRhdGFbaV0ubGFiZWw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3VGV4dDtcclxuICB9XHJcbiAgc2V0VGFibGVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnNldERhdGEoZGF0YSk7XHJcbiAgfVxyXG4gIHNldFRyZWVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudHJlZVJlZi5jdXJyZW50Py5zdG9yZT8uc2V0RGF0YShkYXRhKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRLZXkgPSAoc2VsZWN0ZWQpID0+IHtcclxuICAgIGxldCByZXMgPSBbXTtcclxuICAgIGZvciAobGV0IGtleSBpbiBzZWxlY3RlZCkge1xyXG4gICAgICBjb25zdCBrZXlzID0gc2VsZWN0ZWRba2V5XTtcclxuICAgICAgaWYgKGtleXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHJlcyA9IFsuLi5yZXMsIC4uLmtleXNdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH07XHJcblxyXG4gIGNvbnZlcnRRdWVyeVBhcmFtcygpIHtcclxuICAgIGNvbnN0IHsgcmVxdWVzdFBhcmFtcyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IHF1ZXJ5UGFyYW1zOiBhbnkgPSByZXF1ZXN0UGFyYW1zLnF1ZXJ5UGFyYW1zO1xyXG4gICAgcmV0dXJuIGNvbnZlcnRTdHJpbmdUb09iaihxdWVyeVBhcmFtcywgdGhpcy5wcm9wcy5VdGlscyB8fCB7fSx7ZnVuY3M6dGhpcy5wcm9wcy5mdW5jcyxwYWdlUmVmOnRoaXMucHJvcHMucGFnZVJlZn0pO1xyXG4gICAgLy8gaWYgKHF1ZXJ5UGFyYW1zICYmIHR5cGVvZiBxdWVyeVBhcmFtcyA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAvLyAgIGNvbnN0IFV0aWxzID0gdGhpcy5wcm9wcy5VdGlscyB8fCB7fTtcclxuICAgIC8vICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJVdGlsc1wiLCBxdWVyeVBhcmFtcyk7XHJcbiAgICAvLyAgIGxldCBjb252ZXJQYXJhbXMgPSBmdW5jKFV0aWxzKTtcclxuICAgIC8vICAgcXVlcnlQYXJhbXMgPSBjb252ZXJQYXJhbXM7XHJcbiAgICAvLyB9IGVsc2Uge1xyXG4gICAgLy8gICBxdWVyeVBhcmFtcyA9IHF1ZXJ5UGFyYW1zIHx8IHt9O1xyXG4gICAgLy8gfVxyXG4gICAgLy8gcmV0dXJuIHF1ZXJ5UGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgLy8g6K6h566X6KGo5aS06auY5bqm55qE5pa55rOVXHJcbiAgY2FsY3VsYXRlVGFibGVIZWFkZXJIZWlnaHQgPSAoKSA9PiB7XHJcbiAgICBpZiAodGhpcy50YWJsZVdyYXBwZXJSZWYuY3VycmVudCkge1xyXG4gICAgICBjb25zdCB0YWJsZUhlYWRlciA9XHJcbiAgICAgICAgdGhpcy50YWJsZVdyYXBwZXJSZWYuY3VycmVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICAgXCJhbnQtdGFibGUtdGhlYWRcIlxyXG4gICAgICAgIClbMF07XHJcbiAgICAgIGlmICh0YWJsZUhlYWRlcikge1xyXG4gICAgICAgIGNvbnN0IGhlYWRlckhlaWdodCA9IHRhYmxlSGVhZGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcclxuICAgICAgICBpZiAoaGVhZGVySGVpZ2h0ICE9PSB0aGlzLnN0YXRlLnRhYmxlSGVhZGVySGVpZ2h0KSB7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgdGFibGVIZWFkZXJIZWlnaHQ6IGhlYWRlckhlaWdodCxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcbiAgdGhyb3R0bGVDYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCA9IHRocm90dGxlKFxyXG4gICAgdGhpcy5jYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCxcclxuICAgIDUwMFxyXG4gICk7XHJcblxyXG4gIC8vIOS8mOWMluaLluaLveebuOWFs+aWueazlVxyXG4gIGhhbmRsZU1vdXNlRG93bihlOiBSZWFjdC5Nb3VzZUV2ZW50KSB7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgLy8g5Yib5bu66YGu572p5bGC5Lul5aSE55CGaWZyYW1l5Zy65pmvXHJcbiAgICBjb25zdCBtYXNrID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgIG1hc2suc3R5bGUuY3NzVGV4dCA9IGBcclxuICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgICB0b3A6IDA7XHJcbiAgICAgIGxlZnQ6IDA7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgICB6LWluZGV4OiA5OTk5O1xyXG4gICAgICBjdXJzb3I6IGNvbC1yZXNpemU7XHJcbiAgICBgO1xyXG4gICAgbWFzay5pZCA9IFwiZHJhZy1tYXNrXCI7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG1hc2spO1xyXG5cclxuICAgIGNvbnN0IGhhbmRsZU1vdXNlTW92ZSA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld1dpZHRoID0gZS5zY3JlZW5YO1xyXG4gICAgICAvLyDpmZDliLbmnIDlsI8xMDBweO+8jOacgOWkpzUwMHB4XHJcbiAgICAgIGlmIChuZXdXaWR0aCA+PSA1MCAmJiBuZXdXaWR0aCA8PSA4MDApIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgdHJlZVdpZHRoOiBuZXdXaWR0aCB9KTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCB0aHJvdHRsZWRNb3VzZU1vdmUgPSB0aHJvdHRsZShoYW5kbGVNb3VzZU1vdmUsIDE2KTtcclxuXHJcbiAgICBjb25zdCBoYW5kbGVNb3VzZVVwID0gKCkgPT4ge1xyXG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRocm90dGxlZE1vdXNlTW92ZSk7XHJcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIGhhbmRsZU1vdXNlVXApO1xyXG4gICAgICAvLyDnp7vpmaTpga7nvanlsYJcclxuICAgICAgY29uc3QgbWFzayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZHJhZy1tYXNrXCIpO1xyXG4gICAgICBpZiAobWFzaykge1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobWFzayk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aHJvdHRsZWRNb3VzZU1vdmUpO1xyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiwgaGFuZGxlTW91c2VVcCk7XHJcbiAgfVxyXG5cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGNvbHVtbnMgPSBbXSxcclxuICAgICAgc2hvd1NlYXJjaCA9IHRydWUsXHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBzdWJtaXRVcmwgPSBcIlwiLFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICAgIHRyZWVQcm9wcyA9IHt9LFxyXG4gICAgICBmb3JtUGFnZVByb3BzID0ge30sXHJcbiAgICAgIHNob3dMZWZ0ID0gZmFsc2UsXHJcbiAgICAgIHN1Ym1pdFBhcmFtcyA9IHt9LFxyXG4gICAgICBzaG93VG9vbEJ1dHRvbiA9IHRydWUsXHJcbiAgICAgIGJ1dHRvbnMgPSBbXSxcclxuICAgICAgZWRpdG9yRm9ybSA9IHRydWUsXHJcbiAgICAgIG9uU2hvd0Zvcm0sXHJcbiAgICAgIGZvcm1DaGFuZ2VWYWxpZCA9IHRydWUsXHJcbiAgICAgIGNsYXNzTmFtZSxcclxuICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uID0gXCJidXR0b21cIixcclxuICAgICAgYWN0aW9uUHJvcHMsXHJcbiAgICAgIGRlbGV0ZVBvc2l0aW9uID0gXCJ0b29sYmFyXCIsXHJcbiAgICAgIGJ1dHRvbkNsaWNrID0ge30sXHJcbiAgICAgIHBlcm1pc3Npb24gPSB7IGhhczogZmFsc2UgfSxcclxuICAgICAgcmVxdWVzdFBhcmFtcyA9IHt9LFxyXG4gICAgICByZXF1ZXN0VXJscyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlOiB0YWJsZVN0b3JlID0ge30sXHJcbiAgICAgIGZpbHRlckNvbHVtbiA9IHRydWUsXHJcbiAgICAgIGFjdGlvbkNvbHVtbiA9IHRydWUsXHJcbiAgICAgIHNob3dSb3dTZWxlY3Rpb24gPSB0cnVlLFxyXG4gICAgICBjb2x1bW5PcmRlciA9IHRydWUsXHJcbiAgICAgIGV4cGFuZGFibGUgPSB7fSxcclxuICAgICAgcGFyYW50U2VsZWN0ID0gdHJ1ZSxcclxuICAgICAgdGl0bGU6IHRhYmxlVGl0bGUsXHJcbiAgICAgIC4uLm90aGVydGFibGVQYXJhbXNcclxuICAgIH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IG5ld1RhYmxlU3RvcmUgPSB7IC4uLnRhYmxlU3RvcmUgfTtcclxuICAgIGlmIChyZXF1ZXN0UGFyYW1zLnF1ZXJ5UGFyYW1zKSB7XHJcbiAgICAgIGxldCBxdWVyeVBhcmFtczogYW55ID0gdGhpcy5jb252ZXJ0UXVlcnlQYXJhbXMoKTtcclxuICAgICAgbGV0IGRhdGEgPSBxdWVyeVBhcmFtcz8uZGF0YSB8fCBxdWVyeVBhcmFtcz8ucGFyYW1zIHx8IHt9O1xyXG4gICAgICBuZXdUYWJsZVN0b3JlLnJlcXVlc3RDb25maWcgPSB7XHJcbiAgICAgICAgcGFyYW1zOiB7IC4uLmRhdGEsIC4uLm5ld1RhYmxlU3RvcmUucmVxdWVzdENvbmZpZz8ucGFyYW1zIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlOiB0cmVlU3RvcmUgPSB7fSxcclxuICAgICAgc2hvd1NlYXJjaDogdHJlZVNlYXJjaCA9IHRydWUsXHJcbiAgICAgIHRpdGxlQWxpYXMgPSBcInRpdGxlXCIsXHJcbiAgICAgIHRpdGxlOiB0cmVlVGl0bGUsXHJcbiAgICAgIC4uLm90aGVydHJlZVBhcmFtc1xyXG4gICAgfSA9IHRyZWVQcm9wcztcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBsZXQgdGFibGVQYXJhbXMgPSB7XHJcbiAgICAgIGZpbHRlckNvbHVtbixcclxuICAgICAgc3RvcmU6IHtcclxuICAgICAgICBsaXN0ZW5lcnM6IHtcclxuICAgICAgICAgIGxvYWQ6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50YWJsZUxvYWRDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50YWJsZUxvYWRDYWxsQmFjayhkYXRhKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi5uZXdUYWJsZVN0b3JlLFxyXG4gICAgICB9LFxyXG4gICAgICAuLi5vdGhlcnRhYmxlUGFyYW1zLFxyXG4gICAgfSBhcyBhbnk7XHJcbiAgICBjb25zdCBkZWZhdWx0VmFsdWU6IGFueSA9IHt9O1xyXG4gICAgY29uc3QgY29sdW1uQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb25zdCB7IGVsZW1lbnRIZWlnaHQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgcGVybWlzc2lvbkJ1dHRvbnMgPSBbXTtcclxuICAgIGlmIChwZXJtaXNzaW9uLmhhcyAmJiBwZXJtaXNzaW9uLm1lbnVDb2RlKSB7XHJcbiAgICAgIHBlcm1pc3Npb25CdXR0b25zID1cclxuICAgICAgICBnZXRCdXR0b25QZXJtaXNzb25zKHBlcm1pc3Npb24ubWVudUNvZGUpLnBlcm1pc3NvbnMgfHwgW107XHJcbiAgICB9XHJcbiAgICBjb25zdCBvYmogPSBjb252ZXJ0Q29sdW1ucyhjb2x1bW5zLCB7fSk7XHJcbiAgICBsZXQgdGFibGVDb2x1bW46IGFueVtdID0gZ2V0TmV3Q29sdW1ucyhjb2x1bW5zLCB0aGlzLnByb3BzKTtcclxuICAgIGNvbnN0IHNlYXJjaEZvcm1zID0gb2JqLnNlYXJjaEZvcm1zIHx8IFtdO1xyXG4gICAgY29uc3QgZWRpdG9yRm9ybXMgPSBvYmouZWRpdG9yRm9ybXMgfHwgW107XHJcbiAgICBjb25zdCB0b29sQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb25zdCBmb3JtQnV0dG9uOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IHsgYmFzZUFjdGlvbkNvbHVtbiB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgc2hvd0ljb24gPSB0cnVlO1xyXG4gICAgaWYgKGFjdGlvblByb3BzPy5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBlbHNlIGlmIChiYXNlQWN0aW9uQ29sdW1uLnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGNvbnN0IGJ1dHRvbk1hcCA9IHtcclxuICAgICAgZWRpdG9yOiB7IG5hbWU6IFwi57yW6L6RXCIsIGNvZGU6IFwiZWRpdG9yXCIsIGljb246IDxFZGl0T3V0bGluZWQgLz4gfSxcclxuICAgICAgZGVsZXRlOiB7IG5hbWU6IFwi5Yig6ZmkXCIsIGNvZGU6IFwiZGVsZXRlXCIsIGljb246IDxEZWxldGVPdXRsaW5lZCAvPiB9LFxyXG4gICAgICBzZWFyY2g6IHsgbmFtZTogXCLmn6XnnItcIiwgY29kZTogXCJzZWFyY2hcIiwgaWNvbjogPEV5ZU91dGxpbmVkIC8+IH0sXHJcbiAgICB9O1xyXG4gICAgY29uc3QgcmV0dXJuQnV0dG9uID0gKGNvZGUsIHNob3cgPSBcIlwiLCBkZWZhdWx0UHJvcHMgPSB7fSkgPT4ge1xyXG4gICAgICBsZXQgcHJvcHMgPSB7XHJcbiAgICAgICAgaWNvbjogc2hvd0ljb24gPyBidXR0b25NYXBbY29kZV0uaWNvbiA6IG51bGwsXHJcbiAgICAgICAgdHlwZTogXCJsaW5rXCIsXHJcbiAgICAgICAgLi4uZGVmYXVsdFByb3BzLFxyXG4gICAgICB9IGFzIGFueTtcclxuXHJcbiAgICAgIGlmIChzaG93KSB7XHJcbiAgICAgICAgcHJvcHMgPSB7IC4uLnByb3BzLCByZWNvcmRTaG93OiBzaG93IH07XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvZGUgPT0gXCJkZWxldGVcIikge1xyXG4gICAgICAgICAgICAgIHRoaXMub25EZWxldGUocmVjb3JkKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoY29kZSA9PSBcImVkaXRvclwiICYmIGJ1dHRvbkNsaWNrLm9uRWRpdG9yKSB7XHJcbiAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgYnV0dG9uQ2xpY2sub25FZGl0b3IsXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkOiByZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCxcclxuICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT0gXCJzZWFyY2hcIiAmJiBidXR0b25DbGljay5vblNlYXJjaCkge1xyXG4gICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIGJ1dHRvbkNsaWNrLm9uU2VhcmNoLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZDogcmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgICBvblNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBjb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIGNvZGUsICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBjYWxsQmFjayA9XHJcbiAgICAgICAgICAgICAgICAgIGNvZGUgPT0gXCJlZGl0b3JcIlxyXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25FZGl0b3JDYWxsQmFja1xyXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TZWFyY2hDYWxsQmFjaztcclxuICAgICAgICAgICAgICAgIGNhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxCYWNrLFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICAgIHJlY29yZDogcmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7YnV0dG9uTWFwW2NvZGVdPy5uYW1lfVxyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICApO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGNoZWNrUGVyc3Npb24gPSAoY29kZSkgPT4ge1xyXG4gICAgICBpZiAoIXBlcm1pc3Npb24uaGFzKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHBlcm1pc3Npb25CdXR0b25zLmluZGV4T2YoY29kZSkgPiAtMTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGJ1dHRvbnMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgaWYgKChpdGVtID09IFwiYWRkXCIgfHwgaXRlbS5jb2RlID09IFwiYWRkXCIpICYmIGNoZWNrUGVyc3Npb24oXCJhZGRcIikpIHtcclxuICAgICAgICB0b29sQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHsgb25TaG93Rm9ybSwgYnV0dG9uQ2xpY2sgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICAgICAgICBpZiAoYnV0dG9uQ2xpY2s/Lm9uQWRkKSB7XHJcbiAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgYnV0dG9uQ2xpY2sub25BZGQsXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgICBvblNob3dGb3JtKG51bGwsIFwiYWRkXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnNob3dGb3JtKG51bGwsIG51bGwsICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uQWRkQ2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25BZGRDYWxsQmFjayxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgaWNvbj17PFBsdXNPdXRsaW5lZCAvPn1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5re75YqgXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIChpdGVtID09IFwiZGVsZXRlX2JhdGNoXCIgfHwgaXRlbS5jb2RlID09IFwiZGVsZXRlX2JhdGNoXCIpICYmXHJcbiAgICAgICAgY2hlY2tQZXJzc2lvbihcImRlbGV0ZV9iYXRjaFwiKVxyXG4gICAgICApIHtcclxuICAgICAgICB0b29sQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgb25DbGljaz17dGhpcy5vbkRlbGV0ZS5iaW5kKHRoaXMsIG51bGwsIFwidG9vbGJhclwiKX1cclxuICAgICAgICAgICAgaWNvbj17PERlbGV0ZU91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICBkYW5nZXJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5om56YeP5Yig6ZmkXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChjaGVja1BlcnNzaW9uKGl0ZW0uY29kZSA/IGl0ZW0uY29kZSA6IGl0ZW0pKSB7XHJcbiAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgICAgIHJldHVybkJ1dHRvbihcclxuICAgICAgICAgICAgICBpdGVtLmNvZGUgPyBpdGVtLmNvZGUgOiBpdGVtLFxyXG4gICAgICAgICAgICAgIGl0ZW0ucmVjb3JkU2hvdyxcclxuICAgICAgICAgICAgICBpdGVtLnByb3BzIHx8IHt9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkge1xyXG4gICAgICAgICAgaXRlbS5tYXAoKGNoaWxkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICBjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiICYmXHJcbiAgICAgICAgICAgICAgY2hlY2tQZXJzc2lvbihjaGlsZD8ucHJvcHM/LmNvZGUpXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIHRvb2xCdXR0b25zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgIGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJmb3JtQnV0dG9uXCIgJiZcclxuICAgICAgICAgICAgICBjaGVja1BlcnNzaW9uKGNoaWxkPy5wcm9wcz8uY29kZSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgZm9ybUJ1dHRvbi5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICAgICAoY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiIHx8XHJcbiAgICAgICAgICAgICAgICBjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpICYmXHJcbiAgICAgICAgICAgICAgY2hlY2tQZXJzc2lvbihjaGlsZD8ucHJvcHM/LmNvZGUpXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIiAmJlxyXG4gICAgICAgICAgICBjaGVja1BlcnNzaW9uKGl0ZW0/LnByb3BzPy5jb2RlKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRvb2xCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAoaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY29sdW1uQnV0dG9uXCIgfHxcclxuICAgICAgICAgICAgICBpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIikgJiZcclxuICAgICAgICAgICAgY2hlY2tQZXJzc2lvbihpdGVtPy5wcm9wcz8uY29kZSlcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgY29uc3QgeyBwcm9wcyB9OiBhbnkgPSBjaGlsZHJlbjtcclxuICAgICAgaWYgKHByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIiAmJiBjaGVja1BlcnNzaW9uKHByb3BzPy5jb2RlKSkge1xyXG4gICAgICAgIHRvb2xCdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIChwcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIiB8fFxyXG4gICAgICAgICAgcHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpICYmXHJcbiAgICAgICAgY2hlY2tQZXJzc2lvbihwcm9wcz8uY29kZSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgYWN0aW9uQ29sdW1uICYmXHJcbiAgICAgIHRhYmxlQ29sdW1uLnB1c2goe1xyXG4gICAgICAgIHRpdGxlOiBcIuaTjeS9nFwiLFxyXG4gICAgICAgIGRhdGFJbmRleDogXCJhY3Rpb25cIixcclxuICAgICAgICBhbGlnbjogYWN0aW9uUHJvcHM/LnRleHRBbGlnblxyXG4gICAgICAgICAgPyBhY3Rpb25Qcm9wcz8udGV4dEFsaWduXHJcbiAgICAgICAgICA6IGJhc2VBY3Rpb25Db2x1bW4udGV4dEFsaWduXHJcbiAgICAgICAgICA/IGJhc2VBY3Rpb25Db2x1bW4udGV4dEFsaWduXHJcbiAgICAgICAgICA6IFwibGVmdFwiLFxyXG4gICAgICAgIHdpZHRoOiBhY3Rpb25Qcm9wcz8ud2lkdGhcclxuICAgICAgICAgID8gYWN0aW9uUHJvcHM/LndpZHRoXHJcbiAgICAgICAgICA6IGJhc2VBY3Rpb25Db2x1bW4ud2lkdGhcclxuICAgICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbi53aWR0aFxyXG4gICAgICAgICAgOiAyMDAsXHJcbiAgICAgICAgZml4ZWQ6IFwicmlnaHRcIixcclxuICAgICAgICByZW5kZXI6ICh0ZXh0OiBhbnksIHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWFjdGlvblwiKX0+XHJcbiAgICAgICAgICAgICAge3RoaXMucmVuZGVyQ2xvdW1uQnV0dG9uKGNvbHVtbkJ1dHRvbnMsIHJlY29yZCl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuXHJcbiAgICBpZiAoY29sdW1uT3JkZXIpXHJcbiAgICAgIHRhYmxlQ29sdW1uID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRpdGxlOiBcIuW6j+WPt1wiLFxyXG4gICAgICAgICAgd2lkdGg6IDgwLFxyXG4gICAgICAgICAgYWxpZ246IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICByZW5kZXI6ICh0ZXh0LCByZWFjb3JkLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gPD57aW5kZXggKyAxfTwvPjtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50YWJsZUNvbHVtbixcclxuICAgICAgXTtcclxuICAgIGxldCBzZWFyY2hGbGFnID0gc2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwO1xyXG4gICAgbGV0IHsgdGFibGVUb29sIH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0b29sRmxhZyA9XHJcbiAgICAgIHNob3dUb29sQnV0dG9uICYmXHJcbiAgICAgIHRvb2xCdXR0b25zLmxlbmd0aCA+IDAgJiZcclxuICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uID09IFwiYnV0dG9tXCI7XHJcbiAgICBsZXQgdG9vbGJhckZsYWcgPSAhKFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXIgPT0gZmFsc2UgfHxcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyPy5zaG93ID09IGZhbHNlIHx8XHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhcj8udG9vbHM/Lmxlbmd0aCA9PSAwIHx8XHJcbiAgICAgIHRhYmxlVG9vbD8uc2hvdyA9PSBmYWxzZVxyXG4gICAgKTtcclxuICAgIGxldCBoZWFkZXJIZWlnaHQgPSBzaG93U2VhcmNoICYmIHNlYXJjaEZvcm1zLmxlbmd0aCA+IDAgPyAxMDQgOiAwOyAvL+WktOmDqOaQnOe0ouagj+mrmOW6plxyXG4gICAgbGV0IHRvb2xIZWlnaHQgPSB0YWJsZVRpdGxlIHx8IHRvb2xGbGFnID8gNTAgOiAwO1xyXG4gICAgbGV0IHBhZGRpbmdIZWlnaHQgPSAyMCAqIDI7IC8v5LiK5LiL6Ze06LedXHJcbiAgICBsZXQgdGFibGVDb250ZW50SGVpZ2h0ID1cclxuICAgICAgZWxlbWVudEhlaWdodCAtIHRvb2xIZWlnaHQgLSBwYWRkaW5nSGVpZ2h0IC0gaGVhZGVySGVpZ2h0O1xyXG4gICAgbGV0IFBhZ2luYXRpb25IZWlnaHQgPSB0YWJsZVByb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlID8gMzIgKyAxNiA6IDA7IC8vMzIg5Li65YiG6aG15Zmo6auY5bqmLDE25Li6bWFyZ2lu6Ze06LedXHJcbiAgICBsZXQgdGFibGVIZWlnaHQgPSB0YWJsZUNvbnRlbnRIZWlnaHQgLSBQYWdpbmF0aW9uSGVpZ2h0O1xyXG4gICAgbGV0IHRhYmxlU3JvbGxIZWlnaHQgPVxyXG4gICAgICB0YWJsZUNvbnRlbnRIZWlnaHQgLVxyXG4gICAgICAodGhpcy5zdGF0ZS50YWJsZUhlYWRlckhlaWdodCA+IDAgPyB0aGlzLnN0YXRlLnRhYmxlSGVhZGVySGVpZ2h0IDogNTUpIC1cclxuICAgICAgUGFnaW5hdGlvbkhlaWdodDtcclxuICAgIC8vIGlmICh0YWJsZVByb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlKSB7XHJcbiAgICBjb25zdCBzY3JvbGwgPSB0YWJsZVBhcmFtcy5zY3JvbGw7XHJcbiAgICB0YWJsZVBhcmFtcyA9IHtcclxuICAgICAgLi4udGFibGVQYXJhbXMsXHJcbiAgICAgIHNjcm9sbDogeyB4OiBcIm1heC1jb250ZW50XCIsIHk6IHRhYmxlU3JvbGxIZWlnaHQsIC4uLnNjcm9sbCB9LFxyXG4gICAgfTtcclxuICAgIC8vIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2VcIiksIGNsYXNzTmFtZSl9XHJcbiAgICAgICAgcmVmPXt0aGlzLnBhZ2VSZWZ9XHJcbiAgICAgID5cclxuICAgICAgICB7dGhpcy5wcm9wcy5wYWdlVGl0bGUgJiYgKFxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGl0bGVcIikpfT5cclxuICAgICAgICAgICAge3RoaXMucHJvcHMucGFnZVRpdGxlfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtcGFuZVwiKSl9XHJcbiAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiBcImZsZXhcIiB9fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHtzaG93TGVmdCAmJiAoXHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1sZWZ0XCIpfVxyXG4gICAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiB0aGlzLnN0YXRlLnRyZWVXaWR0aCB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3RyZWVUaXRsZSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidHJlZS10aXRsZVwiKX0+e3RyZWVUaXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInRyZWUtY29udGVudFwiKSwge1xyXG4gICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwidHJlZS1jb250ZW50LW5vdGl0bGVcIildOiAhdHJlZVRpdGxlLFxyXG4gICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0cmVlLWRyYWdcIlxyXG4gICAgICAgICAgICAgICAgICBvbk1vdXNlRG93bj17dGhpcy5oYW5kbGVNb3VzZURvd24uYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxUcmVlXHJcbiAgICAgICAgICAgICAgICAgIHN0b3JlPXt7IC4uLnRyZWVTdG9yZSB9fVxyXG4gICAgICAgICAgICAgICAgICBzaG93SWNvbj17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgIGNoZWNrYWJsZT17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGU9e3RyZWVTZWFyY2h9XHJcbiAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXt0aGlzLnRyZWVTZWxlY3QuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRLZXlzPXtbdGhpcy5zdGF0ZS50cmVlU2VsZWN0ZWRLZXldfVxyXG4gICAgICAgICAgICAgICAgICB0aXRsZUFsaWFzPXt0aXRsZUFsaWFzfVxyXG4gICAgICAgICAgICAgICAgICByZWY9e3RoaXMudHJlZVJlZn1cclxuICAgICAgICAgICAgICAgICAgey4uLm90aGVydHJlZVBhcmFtc31cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXJpZ2h0XCIpLCB7XHJcbiAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1uby1sZWZ0LXJpZ2h0XCIpXTogIXNob3dMZWZ0LFxyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICB3aWR0aDogYGNhbGMoMTAwJSAtICR7dGhpcy5zdGF0ZS50cmVlV2lkdGh9cHggLSAke1xyXG4gICAgICAgICAgICAgICAgc2hvd0xlZnQgPyAxNSA6IDBcclxuICAgICAgICAgICAgICB9cHgpYCxcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dTZWFyY2ggJiYgc2VhcmNoRm9ybXMubGVuZ3RoID4gMCAmJiAoXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1oZWFkZXJzZWFyY2hcIil9PlxyXG4gICAgICAgICAgICAgICAgPEhlYWRlclNlYXJjaFxyXG4gICAgICAgICAgICAgICAgICBzZWFyY2hGb3Jtcz17c2VhcmNoRm9ybXN9XHJcbiAgICAgICAgICAgICAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbj17dG9vbEJ1dHRvblBvc2l0aW9ufVxyXG4gICAgICAgICAgICAgICAgICBvblNlYXJjaD17dGhpcy5vblNlYXJjaC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgICBvblJlc2V0PXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25SZXNldCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vblJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnJlc2V0RmllbGRzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUxvYWQoe30pO1xyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICByZWY9e3RoaXMuc2VhcmNoUmVmfVxyXG4gICAgICAgICAgICAgICAgICBzZWFyY2hGb3JtUHJvcHM9e3RoaXMucHJvcHMuc2VhcmNoRm9ybVByb3BzfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50XCIpLCB7XHJcbiAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnQtZ2FwXCIpXTogIXNlYXJjaEZsYWcsXHJcbiAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLnBhZ2VDb250ZW50UmVmfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgeyh0YWJsZVRpdGxlIHx8IHRvb2xGbGFnKSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZS10aXRsZVwiKSwge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGl0bGUtd2lkdGhcIildOiAhdG9vbGJhckZsYWcsXHJcbiAgICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2Pnt0YWJsZVRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICB7dG9vbEZsYWcgJiYgdGhpcy5yZW5kZXJUb29sQnV0dG9ucyh0b29sQnV0dG9ucywgdG9vbGJhckZsYWcpfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuXHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZVwiKSxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGUtdG9wXCIpXTogIXRvb2xiYXJGbGFnLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZS10b3AyXCIpXTpcclxuICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXJGbGFnICYmICF0b29sRmxhZyxcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgIHJlZj17dGhpcy50YWJsZVdyYXBwZXJSZWZ9XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IHRhYmxlQ29udGVudEhlaWdodCB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxUYWJsZVxyXG4gICAgICAgICAgICAgICAgICByZWY9e3RoaXMudGFibGVSZWZ9XHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbnM9e3RhYmxlQ29sdW1ufVxyXG4gICAgICAgICAgICAgICAgICBleHBhbmRhYmxlPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kSWNvbjogKHsgZXhwYW5kZWQsIG9uRXhwYW5kLCByZWNvcmQgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7ZXhwYW5kZWQgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2hpbGROb2RlcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzPy5sZW5ndGggPiAwID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPERvd25PdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gb25FeHBhbmQocmVjb3JkLCBlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJleHBhbmQtaWNvblwiKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHJlY29yZC5jaGlsZE5vZGVzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2hpbGROb2Rlcz8ubGVuZ3RoID4gMCA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWdodE91dGxpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBvbkV4cGFuZChyZWNvcmQsIGUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImV4cGFuZC1pY29uXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgLi4uZXhwYW5kYWJsZSxcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgY29sdW1uT3JkZXI9e3RydWV9XHJcbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsocGFnaW5hdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgY3VycmVudFBhZ2UgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRQYWdlICE9PSBwYWdpbmF0aW9uLmN1cnJlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UGFnZTogcGFnaW5hdGlvbi5jdXJyZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICB0b29sYmFyPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgb25Ub29sQ2xpY2s6IHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9uUmVmcmVzaDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlTG9hZChwYXJhbXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLnRhYmxlUHJvcHMudG9vbGJhcixcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgc2hvd1Jvd1NlbGVjdGlvbj17c2hvd1Jvd1NlbGVjdGlvbn1cclxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgaGVpZ2h0OiB0YWJsZUhlaWdodCB9fVxyXG4gICAgICAgICAgICAgICAgICB7Li4udGFibGVQYXJhbXN9XHJcbiAgICAgICAgICAgICAgICAgIC8vIHBhZ2luYXRpb249e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIHsvKiA8ZGl2PjwvZGl2PiAqL31cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIHtlZGl0b3JGb3JtICYmIHRoaXMucHJvcHMuZm9ybVBhZ2VQcm9wcz8uZm9ybVR5cGUgIT09IFwicGFnZVwiICYmIChcclxuICAgICAgICAgICAgPEVkaXRvckZvcm1cclxuICAgICAgICAgICAgICByZWY9e3RoaXMuZWRpdG9yUmVmfVxyXG4gICAgICAgICAgICAgIGNhbGxCYWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblN1bWJpdENhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uU3VtYml0Q2FsbEJhY2ssXHJcbiAgICAgICAgICAgICAgICAgICAgeyBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYgfSxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlUmVsb2FkKCk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICBmb3Jtcz17ZWRpdG9yRm9ybXN9XHJcbiAgICAgICAgICAgICAgc3VibWl0VXJsPXtzdWJtaXRVcmx9XHJcbiAgICAgICAgICAgICAgc3VibWl0UGFyYW1zPXtzdWJtaXRQYXJhbXN9XHJcbiAgICAgICAgICAgICAgb25TdWJtaXQ9e3RoaXMucHJvcHMub25TdWJtaXR9XHJcbiAgICAgICAgICAgICAgb25IaWRlRm9ybT17dGhpcy5wcm9wcy5vbkhpZGVGb3JtfVxyXG4gICAgICAgICAgICAgIG9uRm9ybUNoYW5nZT17dGhpcy5wcm9wcy5vbkZvcm1DaGFuZ2V9XHJcbiAgICAgICAgICAgICAgZm9ybVR5cGU9e3RoaXMucHJvcHMuZm9ybVR5cGUgfHwgXCJhdXRvXCJ9XHJcbiAgICAgICAgICAgICAgY2hhbmdlVmFsaWQ9e2Zvcm1DaGFuZ2VWYWxpZH1cclxuICAgICAgICAgICAgICBVdGlscz17dGhpcy5wcm9wcy5VdGlsc31cclxuICAgICAgICAgICAgICByZXF1ZXN0T2JqZWN0PXt7XHJcbiAgICAgICAgICAgICAgICBhZGRVcmw6IHJlcXVlc3RVcmxzLmFkZFVybCxcclxuICAgICAgICAgICAgICAgIGVkaXRvclVybDogcmVxdWVzdFVybHMuZWRpdG9yVXJsLFxyXG4gICAgICAgICAgICAgICAgYWRkUGFyYW1zOiByZXF1ZXN0UGFyYW1zLmFkZFBhcmFtcyxcclxuICAgICAgICAgICAgICAgIGVkaXRvclBhcmFtczogcmVxdWVzdFBhcmFtcy5lZGl0b3JQYXJhbXMsXHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICBmdW5jcz17dGhpcy5wcm9wcy5mdW5jc31cclxuICAgICAgICAgICAgICBwYWdlUmVmPXt0aGlzLnByb3BzLnBhZ2VSZWZ9XHJcbiAgICAgICAgICAgICAgey4uLmZvcm1QYWdlUHJvcHN9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7Zm9ybUJ1dHRvbn1cclxuICAgICAgICAgICAgPC9FZGl0b3JGb3JtPlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBCYXNlUGFnZTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBT0EsS0FBSyxJQUFJQyxhQUFhLFFBQW1CLE9BQU87QUFDdkQsT0FBT0MsS0FBSyxNQUFNLGtCQUFrQjtBQUNwQyxPQUFPQyxJQUFJLE1BQU0saUJBQWlCO0FBQ2xDLE9BQU9DLE1BQU0sTUFBTSxtQkFBbUI7QUFDdEMsT0FBT0MsS0FBSyxNQUFNLGtCQUFrQjtBQUNwQyxPQUFPQyxPQUFPLE1BQU0sb0JBQW9CO0FBQ3hDLE9BQU9DLE9BQU8sTUFBTSxvQkFBb0I7QUFDeEMsT0FBT0MsVUFBVSxNQUF5QixtQkFBbUI7QUFDN0QsT0FBT0MsR0FBRyxNQUFNLFlBQVk7QUFDNUIsT0FBTyxxQkFBcUI7QUFHNUIsU0FDRUMsWUFBWSxFQUNaQyxXQUFXLEVBQ1hDLFlBQVksRUFDWkMsYUFBYSxFQUNiQyxZQUFZLEVBQ1pDLGdCQUFnQixFQUNoQkMsY0FBYyxRQUNULG1CQUFtQjtBQUMxQixTQUFTQyxjQUFjLEVBQUVDLE9BQU8sUUFBa0MsYUFBYTtBQUMvRSxPQUFPQyxPQUFPLE1BQU0sYUFBYTtBQUNq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
|