tc-checking-tool-rcl 0.9.96 → 0.9.97
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.
|
@@ -1098,7 +1098,7 @@ var Checker = function Checker(_ref) {
|
|
|
1098
1098
|
}
|
|
1099
1099
|
var currentChapterData = targetBible === null || targetBible === void 0 ? void 0 : targetBible[chapter];
|
|
1100
1100
|
var currentVerseData = currentChapterData === null || currentChapterData === void 0 ? void 0 : currentChapterData[verse];
|
|
1101
|
-
var _AlignmentHelpers$upd = AlignmentHelpers.updateAlignmentsToTargetVerse(currentVerseData, _newVerseText),
|
|
1101
|
+
var _AlignmentHelpers$upd = _wordAlignerLib.AlignmentHelpers.updateAlignmentsToTargetVerse(currentVerseData, _newVerseText),
|
|
1102
1102
|
targetVerseObjects = _AlignmentHelpers$upd.targetVerseObjects;
|
|
1103
1103
|
targetChapter[verse] = {
|
|
1104
1104
|
verseObjects: targetVerseObjects
|
|
@@ -1367,4 +1367,4 @@ Checker.propTypes = {
|
|
|
1367
1367
|
translate: _propTypes["default"].func.isRequired
|
|
1368
1368
|
};
|
|
1369
1369
|
var _default = exports["default"] = Checker;
|
|
1370
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcHJvcFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9sb2Rhc2giLCJfR3JvdXBNZW51Q29tcG9uZW50IiwiX3dvcmRBbGlnbmVyTGliIiwiX2RlZXBFcXVhbCIsIl90d0FydGljbGVIZWxwZXJzIiwiX0NoZWNrSW5mb0NhcmQiLCJfdG5BcnRpY2xlSGVscGVycyIsIl9TY3JpcHR1cmVQYW5lIiwiX1BvcG92ZXJDb250YWluZXIiLCJfQm9va3NPZlRoZUJpYmxlIiwiX2NvbXBsZXhTY3JpcHRGb250cyIsIl9UcmFuc2xhdGlvbkhlbHBzIiwidEhlbHBzSGVscGVycyIsIl9WZXJzZUNoZWNrIiwiX2NoZWNrSW5mb0NhcmRIZWxwZXJzIiwiZSIsIl9fZXNNb2R1bGUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiX3R5cGVvZiIsImhhcyIsImdldCIsInNldCIsIl90IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiX24iLCJGIiwicyIsImRvbmUiLCJ2YWx1ZSIsIlR5cGVFcnJvciIsImEiLCJ1IiwibmV4dCIsIl90b0NvbnN1bWFibGVBcnJheSIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJmcm9tIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiU3RyaW5nIiwiTnVtYmVyIiwiX3NsaWNlZFRvQXJyYXkiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfbm9uSXRlcmFibGVSZXN0IiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsInRlc3QiLCJsIiwibG9jYWxTdHlsZXMiLCJjb250YWluZXJEaXYiLCJkaXNwbGF5IiwiZmxleERpcmVjdGlvbiIsIndpZHRoIiwiaGVpZ2h0IiwiY2VudGVyRGl2Iiwib3ZlcmZsb3dYIiwibWFyZ2luTGVmdCIsInNjcmlwdHVyZVBhbmVEaXYiLCJmbGV4U2hyaW5rIiwicGFkZGluZ0JvdHRvbSIsInRyYW5zbGF0aW9uV29yZHMiLCJleHBvcnRzIiwidHJhbnNsYXRpb25Ob3RlcyIsIm1heGltdW1TZWxlY3Rpb25zIiwiY29uc29sZSIsImxvZyIsIkNoZWNrZXIiLCJfcmVmIiwiX3RhcmdldExhbmd1YWdlRGV0YWlsIiwiX3RhcmdldExhbmd1YWdlRGV0YWlsMiIsIl90YXJnZXRfbGFuZ3VhZ2UkYm9vayIsImFsaWduZWRHbEJpYmxlIiwiYmlibGVzXyIsImJpYmxlcyIsImNoYW5nZWRDdXJyZW50Q2hlY2siLCJjaGFuZ2VUYXJnZXRWZXJzZSIsImNoZWNraW5nRGF0YSIsImNoZWNrVHlwZSIsImNvbnRleHRJZCIsImdldExleGljb25EYXRhIiwiZ2xXb3Jkc0RhdGEiLCJpbml0aWFsU2V0dGluZ3MiLCJzYXZlQ2hlY2tpbmdEYXRhIiwic2F2ZVNldHRpbmdzIiwic2hvd0RvY3VtZW50Iiwic3R5bGVzIiwidGFyZ2V0QmlibGVfIiwidGFyZ2V0QmlibGUiLCJ0YXJnZXRMYW5ndWFnZURldGFpbHMiLCJ0cmFuc2xhdGUiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsInBhbmVTZXR0aW5ncyIsInBhbmVLZXlTZXR0aW5ncyIsInRvb2xzU2V0dGluZ3MiLCJtYW5pZmVzdCIsIl91c2VTdGF0ZTIiLCJzZXR0aW5ncyIsIl9zZXRTZXR0aW5ncyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0Iiwic2V0QmlibGVzIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJzZXRUYXJnZXRCaWJsZSIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwidGVtcENoZWNraW5nRGF0YSIsInNldFRlbXBDaGVja2luZ0RhdGEiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsImxvY2FsQ2hlY2tpbmdEYXRhIiwic2V0TG9jYWxDaGVja2luZ0RhdGEiLCJfdXNlU3RhdGUxIiwiYWxpZ25lZEdMVGV4dCIsImFydGljbGUiLCJjdXJyZW50Q2hlY2siLCJjdXJyZW50Q2hlY2tpbmdEYXRhIiwiZ3JvdXBUaXRsZSIsImdyb3VwUGhyYXNlIiwiZ3JvdXBzRGF0YSIsImdyb3Vwc0luZGV4IiwiaXNDb21tZW50Q2hhbmdlZCIsImlzVmVyc2VDaGFuZ2VkIiwibW9kZSIsIm5ld1ZlcnNlVGV4dCIsInBvcG92ZXJQcm9wcyIsInBvcG92ZXJWaXNpYmlsaXR5Iiwic2hvd0hlbHBzTW9kYWwiLCJzaG93SGVscHMiLCJuZXdUYWdzIiwidmVyc2VUZXh0IiwiX3VzZVN0YXRlMTAiLCJzdGF0ZSIsIl9zZXRTdGF0ZSIsInNldFN0YXRlIiwibmV3U3RhdGUiLCJwcmV2U3RhdGUiLCJnZXRDdXJyZW50VmFsdWVGb3IiLCJrZXkiLCJnZXRUZW1wVmFsdWVGb3IiLCJjdXJyZW50U2VsZWN0aW9ucyIsInRlbXBTZWxlY3Rpb25zIiwidGVtcE5vdGhpbmdUb1NlbGVjdCIsImN1cnJlbnROb3RoaW5nVG9TZWxlY3QiLCJncm91cHNEYXRhTG9hZGVkIiwidXBkYXRlTW9kZUZvclNlbGVjdGlvbnMiLCJuZXdTZWxlY3Rpb25zIiwibm90aGluZ1RvU2VsZWN0Iiwibm9TZWxlY3Rpb25zIiwibmV3TW9kZSIsInVzZUVmZmVjdCIsImhhdmVEYXRhIiwiZ3JvdXBzRGF0YUluaXRpYWxpemVkIiwiZmxhdHRlbmVkR3JvdXBEYXRhIiwiZ3JvdXBEYXRhSGVscGVycyIsImZsYXR0ZW5Hcm91cERhdGEiLCJwYXJzZVRuVG9JbmRleCIsInBhcnNlVHdUb0luZGV4IiwiY2hlY2siLCJmaW5kQ2hlY2siLCJtb2RpZmllZCIsInNlbGVjdGlvbnNIZWxwZXJzIiwidmFsaWRhdGVTZWxlY3Rpb25zRm9yQWxsQ2hlY2tzIiwiaW52YWxpZGF0ZWQiLCJjb25jYXQiLCJfc2F2ZUNoZWNraW5nRGF0YSIsInVwZGF0ZUNvbnRleHQiLCJzZWxlY3Rpb25zIiwibmV3Q2hlY2siLCJncm91cHNJbmRleF8iLCJ1bmRlZmluZWQiLCJyZWZlcmVuY2UiLCJ2ZXJzZUhlbHBlcnMiLCJnZXRWZXJzZVRleHRGcm9tQmlibGUiLCJnZXRBbGlnbmVkR0xUZXh0IiwiZ2V0VGl0bGVGcm9tSW5kZXgiLCJncm91cElkIiwib2NjdXJyZW5jZU5vdGUiLCJnZXRQaHJhc2VGcm9tVHciLCJncm91cERhdGEiLCJhcnRpY2xlcyIsIl9hcnRpY2xlIiwiYXJ0aWNsZUlkIiwiZ3JvdXBzSWRzIiwiX2kiLCJfZ3JvdXBzSWRzIiwiX2dyb3VwSWQiLCJncm91cCIsImN1cnJlbnRBcnRpY2xlTWFya2Rvd24iLCJjb252ZXJ0TWFya2Rvd25MaW5rcyIsImdhdGV3YXlMYW5ndWFnZUlkIiwiY29tbWVudFRleHQiLCJib29rSWQiLCJib29rIiwiaWQiLCJib29rTmFtZSIsImJvb2tEZXRhaWxzIiwidGFyZ2V0TGFuZ3VhZ2VGb250IiwicHJvamVjdEZvbnQiLCJjdXJyZW50Q29udGV4dElkIiwic2V0VG9vbFNldHRpbmdzIiwiTkFNRVNQQUNFIiwiZmllbGROYW1lIiwiZmllbGRWYWx1ZSIsIl90b29sc1NldHRpbmdzIiwiY29tcG9uZW50U2V0dGluZ3MiLCJzZXRTZXR0aW5ncyIsIl9zYXZlU2V0dGluZ3MiLCJfc2V0dGluZ3MiLCJuZXdTZXR0aW5ncyIsIl9wYW5lU2V0dGluZ3MiLCJfcGFuZVNldHRpbmciLCJfcGFuZUtleVNldHRpbmdzIiwiX2kyIiwiX2tleXMiLCJkb1NhdmUiLCJzZXRUb29sU2V0dGluZ3NTY3JpcHR1cmUiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImxhbmd1YWdlSWQiLCJiaWJsZUlkIiwib3duZXIiLCJlcnIiLCJhZGRPYmplY3RQcm9wZXJ0eVRvTWFuaWZlc3QiLCJfbWFuaWZlc3QiLCJhcHBTZXR0aW5ncyIsIl9hcHBTZXR0aW5ncyIsIm9wZW5BbGVydERpYWxvZyIsImNoZWNrSWZWZXJzZUNoYW5nZWQiLCJfbmV3VmVyc2VUZXh0IiwidGFyZ2V0IiwiX2lzVmVyc2VDaGFuZ2VkIiwiaGFuZGxlRWRpdFZlcnNlIiwiY2FuY2VsRWRpdFZlcnNlIiwic2F2ZUVkaXRWZXJzZSIsIl9jdXJyZW50Q29udGV4dElkJHJlZiIsImNoYXB0ZXIiLCJ2ZXJzZSIsInZlcnNlUmVmIiwidmVyc2VTcGFuIiwiYmVmb3JlIiwiZWRpdFRhcmdldFZlcnNlIiwiaGFuZGxlR29Ub05leHQiLCJuZXh0Q2hlY2siLCJmaW5kTmV4dENoZWNrIiwiY2hhbmdlQ3VycmVudENoZWNrXyIsImhhbmRsZUdvVG9QcmV2aW91cyIsInByZXZpb3VzQ2hlY2siLCJmaW5kUHJldmlvdXNDaGVjayIsImhhbmRsZVRhZ3NDaGVja2JveCIsInRhZyIsImN1cnJlbnRUYWdzIiwidGFnSW5kZXgiLCJpbmRleE9mIiwiX25ld1RhZ3MiLCJjb3B5Iiwic3BsaWNlIiwidmFsaWRhdGVTZWxlY3Rpb25zIiwidmVyc2VUZXh0XyIsInNlbGVjdGlvbnNfIiwidmFsaWRhdGVWZXJzZVNlbGVjdGlvbnMiLCJ1bmZpbHRlcmVkVmVyc2VUZXh0IiwidXNlTWVtbyIsInVuZmlsdGVyZWRWZXJzZVRleHRfIiwiX3RhcmdldEJpYmxlJGNoYXB0ZXIiLCJ2ZXJzZURhdGEiLCJVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIiwiZ2V0VXNmbUZvclZlcnNlQ29udGVudCIsInNldFRlbXBDaGVja2luZ0l0ZW0iLCJuZXdDaGVja2luZ0RhdGEiLCJjaGFuZ2VTZWxlY3Rpb25zSW5Mb2NhbFN0YXRlIiwidG9nZ2xlTm90aGluZ1RvU2VsZWN0Iiwic2VsZWN0IiwibmV3Q29udGV4dCIsIm5vQ2hlY2siLCJuZXdDb250ZXh0SWQiLCJzZWxlY3Rpb25zVW5jaGFuZ2VkIiwiaXNFcXVhbCIsImRpcmVjdGlvbiIsImJvb2ttYXJrRW5hYmxlZCIsImlzVmVyc2VFZGl0ZWQiLCJpc1ZlcnNlSW52YWxpZGF0ZWQiLCJfc2F2ZVNlbGVjdGlvbiIsIl9jbG9uZURhdGFGb3JTYXZpbmciLCJjbG9uZURhdGFGb3JTYXZpbmciLCJjaGVja0luR3JvdXBzRGF0YSIsIl9jdXJyZW50Q2hlY2siLCJfbmV3Q2hlY2tpbmdEYXRhIiwiZGVsZXRlVGVtcENoZWNraW5nRGF0YSIsInVwZGF0ZVZhbHVlc0luQ2hlY2tEYXRhIiwiX2dyb3Vwc0RhdGEiLCJfIiwiY2xvbmVEZWVwIiwiY2F0ZWdvcnkiLCJuZXdDaGVja0RhdGEiLCJfaTMiLCJfT2JqZWN0JGtleXMiLCJuZXdDaGVja2luZ1ZhbHVlIiwiX3NhdmVEYXRhIiwibmV3RGF0YSIsIl9jbG9uZURhdGFGb3JTYXZpbmcyIiwiX2k0IiwiX09iamVjdCRrZXlzMiIsImNoYW5nZWREYXRhIiwiX2k1IiwiX09iamVjdCRrZXlzMyIsIl90ZW1wQ2hlY2tpbmdEYXRhIiwiY2FuY2VsU2VsZWN0aW9uIiwiY2xlYXJTZWxlY3Rpb24iLCJ0b2dnbGVCb29rbWFyayIsInJlbWluZGVycyIsImNoYW5nZU1vZGUiLCJjaGVja0lmQ29tbWVudENoYW5nZWQiLCJuZXdjb21tZW50Iiwib2xkY29tbWVudCIsImNhbmNlbENvbW1lbnQiLCJzYXZlQ29tbWVudCIsIm5ld0NvbW1lbnQiLCJjb21tZW50cyIsImhhbmRsZUNvbW1lbnQiLCJwcmV2ZW50RGVmYXVsdCIsInJlYWR5VG9EaXNwbGF5Q2hlY2tlciIsImdldExleGljb25EYXRhXyIsImxleGljb25JZCIsImVudHJ5SWQiLCJsZXhpY29uRGF0YSIsIm9uQ2xvc2VQb3BvdmVyIiwic2hvd1BvcG92ZXIiLCJ0aXRsZSIsImJvZHlUZXh0IiwicG9zaXRpb25Db29yZCIsInRvZ2dsZUhlbHBzTW9kYWwiLCJfc2hvd0hlbHBzTW9kYWwiLCJ0b2dnbGVIZWxwcyIsIl9zaG93SGVscHMiLCJzYXZlQmlibGVUb0tleSIsImtleUdyb3VwIiwib2xkVmVyc2VUZXh0IiwiX2JpYmxlcyIsIl90YXJnZXRCaWJsZSIsInRhcmdldEJvb2siLCJ0YXJnZXRDaGFwdGVyIiwiY29udmVydFZlcnNlRGF0YVRvVVNGTSIsImN1cnJlbnRDaGFwdGVyRGF0YSIsImN1cnJlbnRWZXJzZURhdGEiLCJfQWxpZ25tZW50SGVscGVycyR1cGQiLCJBbGlnbm1lbnRIZWxwZXJzIiwidXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UiLCJ0YXJnZXRWZXJzZU9iamVjdHMiLCJ2ZXJzZU9iamVjdHMiLCJ1cGRhdGVTZXR0aW5ncyIsInJlbW92ZVVzZm1NYXJrZXJzIiwidmVyc2VFZGl0cyIsInZhbGlkYXRlQWxsU2VsZWN0aW9uc0ZvclZlcnNlIiwiX2N1cnJlbnRDaGVjayRjb250ZXh0IiwiX2NoZWNrJGNvbnRleHRJZCIsImN1cnJlbnRDaGVja0lkIiwiY2hlY2tJZCIsIm5ld0JpYmxlcyIsIl90YXJnZXRCaWJsZSRtYW5pZmVzdCIsIl90YXJnZXRCaWJsZSRtYW5pZmVzdDIiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiYmlibGUiLCJOVF9PUklHX0xBTkciLCJPVF9PUklHX0xBTkciLCJpbml0aWFsUGFuZVNldHRpbmdzIiwibGFuZ0tleSIsInBhbmUiLCJsYW5ndWFnZV9uYW1lIiwiZHVibGluX2NvcmUiLCJsYW5ndWFnZSIsIl9nZXRTY3JpcHR1cmVGcm9tUmVmZXJlbmNlIiwibGFuZyIsImdldFNjcmlwdHVyZUZyb21SZWZlcmVuY2UiLCJ0YXJnZXRfbGFuZ3VhZ2UiLCJwcm9qZWN0IiwiZXhwYW5kZWRTY3JpcHR1cmVQYW5lVGl0bGUiLCJzdHlsZVByb3BzIiwiX2NoZWNrZXJTdHlsZXMiLCJjcmVhdGVFbGVtZW50Iiwic3R5bGUiLCJjaGFuZ2VDdXJyZW50Q29udGV4dElkIiwiY29tcGxleFNjcmlwdEZvbnRzIiwiY3VycmVudFBhbmVTZXR0aW5ncyIsImVkaXRWZXJzZVJlZiIsImdldEF2YWlsYWJsZVNjcmlwdHVyZVBhbmVTZWxlY3Rpb25zIiwibWFrZVN1cmVCaWJsZXNMb2FkZWRGb3JUb29sIiwicHJvamVjdERldGFpbHNSZWR1Y2VyIiwib25FeHBhbmRlZFNjcmlwdHVyZVBhbmVTaG93Iiwib25MaW5rQ2xpY2siLCJvblNlZU1vcmVDbGljayIsInBocmFzZSIsInNlZU1vcmVMYWJlbCIsInNob3dTZWVNb3JlQnV0dG9uIiwiZGlhbG9nTW9kYWxWaXNpYmlsaXR5IiwiaGFuZGxlT3BlbkRpYWxvZyIsImhhbmRsZUNsb3NlRGlhbG9nIiwiaGFuZGxlU2tpcCIsImxvY2FsTm90aGluZ1RvU2VsZWN0Iiwic2F2ZVNlbGVjdGlvbiIsInRhZ3MiLCJtb2RhbEFydGljbGUiLCJleHBhbmRlZEhlbHBzQnV0dG9uSG92ZXJUZXh0IiwibW9kYWxUaXRsZSIsImlzU2hvd0hlbHBzRXhwYW5kZWQiLCJvcGVuRXhwYW5kZWRIZWxwc01vZGFsIiwic2lkZWJhclRvZ2dsZSIsImlzU2hvd0hlbHBzU2lkZWJhciIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsIm9iamVjdCIsImFycmF5IiwiZnVuYyIsImlzUmVxdWlyZWQiLCJzdHJpbmciLCJib29sIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9DaGVja2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlxuLyoqXG4gKiBAZmlsZSBDaGVja2VyLmpzXG4gKlxuICogQHN5bm9wc2lzXG4gKiBUaGlzIGlzIHRoZSBtYWluIGNoZWNraW5nIGNvbXBvbmVudCB0aGF0IHByb3ZpZGVzIGFuIGludGVncmF0ZWQgaW50ZXJmYWNlIGZvciBCaWJsZSB0cmFuc2xhdGlvbiBjaGVja2luZy5cbiAqIEl0IHN1cHBvcnRzIGJvdGggVHJhbnNsYXRpb24gTm90ZXMgKFROKSBhbmQgVHJhbnNsYXRpb24gV29yZHMgKFRXKSBjaGVja2luZyB3b3JrZmxvd3MuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBUaGUgQ2hlY2tlciBjb21wb25lbnQgaXMgYSBjb21wcmVoZW5zaXZlIHRvb2wgZm9yIG1hbmFnaW5nIGFuZCBwcmVzZW50aW5nIEJpYmxlIGNoZWNraW5nIGRhdGEgYW5kIHRyYW5zbGF0aW9ucy5cbiAqIEl0IGhhbmRsZXM6XG4gKiAtIExvYWRpbmcgYW5kIGRpc3BsYXlpbmcgY2hlY2tpbmcgZGF0YSAodHJhbnNsYXRpb24gbm90ZXMgb3IgdHJhbnNsYXRpb24gd29yZHMpXG4gKiAtIE1hbmFnaW5nIHVzZXIgc2VsZWN0aW9ucyBhbmQgYW5ub3RhdGlvbnMgaW4gdmVyc2VzXG4gKiAtIFByb3ZpZGluZyBtdWx0aS1wYW5lIFNjcmlwdHVyZSB2aWV3aW5nIHdpdGggdmFyaW91cyBCaWJsZSByZXNvdXJjZXNcbiAqIC0gSGFuZGxpbmcgdmVyc2UgZWRpdGluZyBhbmQgdmFsaWRhdGlvblxuICogLSBNYW5hZ2luZyBjb21tZW50cywgYm9va21hcmtzLCBhbmQgdGFncyBmb3IgY2hlY2tzXG4gKiAtIE5hdmlnYXRpbmcgYmV0d2VlbiBjaGVja3MgKG5leHQvcHJldmlvdXMpXG4gKiAtIERpc3BsYXlpbmcgdHJhbnNsYXRpb24gaGVscHMgaW4gYW4gaW50ZWdyYXRlZCBzaWRlYmFyXG4gKiAtIFBlcnNpc3RpbmcgdXNlciBzZXR0aW5ncyBhbmQgY2hlY2tpbmcgcHJvZ3Jlc3NcbiAqXG4gKiBUaGUgY29tcG9uZW50IG1haW50YWlucyBjb21wbGV4IHN0YXRlIGluY2x1ZGluZzpcbiAqIC0gQ3VycmVudCBjaGVjayBkYXRhIGFuZCBjb250ZXh0XG4gKiAtIFVzZXIgc2VsZWN0aW9ucyBhbmQgdGVtcG9yYXJ5IGNoYW5nZXNcbiAqIC0gUGFuZSBzZXR0aW5ncyBmb3IgU2NyaXB0dXJlIGRpc3BsYXlcbiAqIC0gVG9vbC1zcGVjaWZpYyBzZXR0aW5nc1xuICogLSBVSSBzdGF0ZSAobW9kZXMsIG1vZGFscywgcG9wb3ZlcnMpXG4gKlxuICogQHJlcXVpcmVtZW50c1xuICogLSBSZWFjdCAxOC4zLjErXG4gKiAtIHdvcmQtYWxpZ25lci1saWIgZm9yIHZlcnNlIGFuZCBhbGlnbm1lbnQgaGVscGVyc1xuICogLSBkZWVwLWVxdWFsIGZvciBvYmplY3QgY29tcGFyaXNvblxuICogLSBsb2Rhc2ggZm9yIGRlZXAgY2xvbmluZ1xuICogLSBNYXRlcmlhbC1VSSBjb21wb25lbnRzIGZvciBVSSBlbGVtZW50c1xuICpcbiAqIEBkZXBlbmRlbmNpZXNcbiAqIC0gR3JvdXBNZW51Q29tcG9uZW50OiBOYXZpZ2F0aW9uIG1lbnUgZm9yIGNoZWNrc1xuICogLSBDaGVja0luZm9DYXJkOiBEaXNwbGF5cyBjaGVjayB0aXRsZSBhbmQgcGhyYXNlXG4gKiAtIFNjcmlwdHVyZVBhbmU6IE11bHRpLXBhbmUgU2NyaXB0dXJlIHZpZXdlclxuICogLSBUcmFuc2xhdGlvbkhlbHBzOiBTaWRlYmFyIGZvciB0cmFuc2xhdGlvbiBoZWxwIGFydGljbGVzXG4gKiAtIFZlcnNlQ2hlY2s6IE1haW4gY2hlY2tpbmcgaW50ZXJmYWNlIGZvciB2ZXJzZXNcbiAqIC0gUG9wb3ZlckNvbnRhaW5lcjogRGlzcGxheXMgY29udGV4dHVhbCBpbmZvcm1hdGlvblxuICovXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJ1xuaW1wb3J0IEdyb3VwTWVudUNvbXBvbmVudCBmcm9tICcuL0dyb3VwTWVudUNvbXBvbmVudCdcbmltcG9ydCB7XG4gIGdyb3VwRGF0YUhlbHBlcnMsXG4gIHNlbGVjdGlvbnNIZWxwZXJzLFxuICBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLFxuICB2ZXJzZUhlbHBlcnNcbn0gZnJvbSAnd29yZC1hbGlnbmVyLWxpYidcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2RlZXAtZXF1YWwnXG5pbXBvcnQge1xuICBmaW5kQ2hlY2ssXG4gIGZpbmROZXh0Q2hlY2ssXG4gIGZpbmRQcmV2aW91c0NoZWNrLFxuICBnZXRBbGlnbmVkR0xUZXh0LFxuICBnZXRQaHJhc2VGcm9tVHcsXG4gIGdldFRpdGxlRnJvbUluZGV4LFxuICBwYXJzZVR3VG9JbmRleFxufSBmcm9tICcuLi9oZWxwZXJzL3RyYW5zbGF0aW9uSGVscHMvdHdBcnRpY2xlSGVscGVycydcbmltcG9ydCBDaGVja0luZm9DYXJkIGZyb20gJy4uL3RjX3VpX3Rvb2xraXQvQ2hlY2tJbmZvQ2FyZCdcbmltcG9ydCB7IHBhcnNlVG5Ub0luZGV4IH0gZnJvbSAnLi4vaGVscGVycy90cmFuc2xhdGlvbkhlbHBzL3RuQXJ0aWNsZUhlbHBlcnMnXG5pbXBvcnQgU2NyaXB0dXJlUGFuZSBmcm9tICcuLi90Y191aV90b29sa2l0L1NjcmlwdHVyZVBhbmUnXG5pbXBvcnQgUG9wb3ZlckNvbnRhaW5lciBmcm9tICcuLi9jb250YWluZXJzL1BvcG92ZXJDb250YWluZXInXG5pbXBvcnQgeyBOVF9PUklHX0xBTkcsIE9UX09SSUdfTEFORyB9IGZyb20gJy4uL2NvbW1vbi9Cb29rc09mVGhlQmlibGUnXG5pbXBvcnQgY29tcGxleFNjcmlwdEZvbnRzIGZyb20gJy4uL2NvbW1vbi9jb21wbGV4U2NyaXB0Rm9udHMnXG5pbXBvcnQgVHJhbnNsYXRpb25IZWxwcyBmcm9tICcuLi90Y191aV90b29sa2l0L1RyYW5zbGF0aW9uSGVscHMnXG5pbXBvcnQgKiBhcyB0SGVscHNIZWxwZXJzIGZyb20gJy4uL2hlbHBlcnMvdEhlbHBzSGVscGVycydcbmltcG9ydCBWZXJzZUNoZWNrIGZyb20gJy4uL3RjX3VpX3Rvb2xraXQvVmVyc2VDaGVjaydcbmltcG9ydCB7IGdldFNjcmlwdHVyZUZyb21SZWZlcmVuY2UgfSBmcm9tICcuLi9oZWxwZXJzL2NoZWNrSW5mb0NhcmRIZWxwZXJzJ1xuXG5jb25zdCBsb2NhbFN0eWxlcyA9IHtcbiAgY29udGFpbmVyRGl2OntcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ3JvdycsXG4gICAgd2lkdGg6ICc5N3Z3JyxcbiAgICBoZWlnaHQ6ICc2NXZ3JyxcbiAgfSxcbiAgY2VudGVyRGl2OiB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIHdpZHRoOiAnODUlJyxcbiAgICBvdmVyZmxvd1g6ICdhdXRvJyxcbiAgICBtYXJnaW5MZWZ0OiAnMTBweCcsXG4gIH0sXG4gIHNjcmlwdHVyZVBhbmVEaXY6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleFNocmluazogJzAnLFxuICAgIGhlaWdodDogJzI1MHB4JyxcbiAgICBwYWRkaW5nQm90dG9tOiAnMjBweCcsXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNsYXRpb25Xb3JkcyA9ICd0cmFuc2xhdGlvbldvcmRzJ1xuZXhwb3J0IGNvbnN0IHRyYW5zbGF0aW9uTm90ZXMgPSAndHJhbnNsYXRpb25Ob3RlcydcbmNvbnN0IG1heGltdW1TZWxlY3Rpb25zID0gMTBcblxuY29uc29sZS5sb2coJ0NoZWNrZXIuanMgLSBzdGFydHVwJylcbmNvbnN0IG5hbWUgPSAnQ2hlY2tlcidcblxuLyoqXG4gKiBAbmFtZXNwYWNlIENoZWNrZXJcbiAqIFRoZSBDaGVja2VyIGNvbXBvbmVudCBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgYW5kIHByZXNlbnRpbmcgQmlibGUgY2hlY2tpbmcgZGF0YSBhbmQgdHJhbnNsYXRpb25zLlxuICogSXQgaGFuZGxlcyBzdGF0ZSB1cGRhdGVzLCBzZXR0aW5ncyBtYW5hZ2VtZW50LCBhbmQgZW5zdXJlcyB0aGUgbmVjZXNzYXJ5IGRhdGEgaXMgbG9hZGVkIGFuZCBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmFtZXRlcnMgLSBBbiBvYmplY3Qgd2l0aCBpbml0aWFsaXphdGlvbiBwYXJhbWV0ZXJzIGZvciB0aGUgQ2hlY2tlciBjb21wb25lbnQuXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1ldGVycy5hbGlnbmVkR2xCaWJsZSAtIFRoZSBhbGlnbmVkIEdhdGV3YXkgTGFuZ3VhZ2UgQmlibGUgZGF0YSB1c2VkIGZvciB0cmFuc2xhdGlvbnMuXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1ldGVycy5iaWJsZXMgLSBCaWJsZSBkYXRhIGZvciB2YXJpb3VzIGxhbmd1YWdlcy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHBhcmFtZXRlcnMuY2hhbmdlZEN1cnJlbnRDaGVjayAtIGNhbGxiYWNrIHRvIG5vdGlmeSBvZiBjaGFuZ2VzIGluIGNvbnRleHQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwYXJhbWV0ZXJzLmNoYW5nZVRhcmdldFZlcnNlIC0gQSBmdW5jdGlvbiB0byB1cGRhdGUgdGhlIGN1cnJlbnQgdmVyc2UgYmVpbmcgY2hlY2tlZC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbWV0ZXJzLmNoZWNraW5nRGF0YSAtIERhdGEgcmVsYXRlZCB0byBjaGVja3MgKGUuZy4sIHRyYW5zbGF0aW9uIG5vdGVzIG9yIHRyYW5zbGF0aW9uIHdvcmRzKS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXJhbWV0ZXJzLmNoZWNrVHlwZSAtIFRoZSB0eXBlIG9mIGNoZWNrIGJlaW5nIHBlcmZvcm1lZCAoZS5nLiwgdHJhbnNsYXRpb24gbm90ZXMsIHRyYW5zbGF0aW9uIHdvcmRzKS5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbWV0ZXJzLmNvbnRleHRJZCAtIE9iamVjdCBjb250YWluaW5nIG1ldGFkYXRhIGFib3V0IHRoZSBjdXJyZW50IGdyb3VwL3ZlcnNlIGJlaW5nIHdvcmtlZCBvbi5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHBhcmFtZXRlcnMuZ2V0TGV4aWNvbkRhdGEgLSBGdW5jdGlvbiB0byByZXRyaWV2ZSBsZXhpY29uIGRhdGEuXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1ldGVycy5nbFdvcmRzRGF0YSAtIERhdGEgcmVsYXRlZCB0byBHYXRld2F5IExhbmd1YWdlIHdvcmRzIGFuZCBhbGlnbm1lbnQgaW5mb3JtYXRpb24uXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1ldGVycy5pbml0aWFsU2V0dGluZ3MgLSBUaGUgaW5pdGlhbCBjb25maWd1cmF0aW9uIHZhbHVlcyBmb3IgdGhlIENoZWNrZXIgY29tcG9uZW50LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcGFyYW1ldGVycy5zYXZlQ2hlY2tpbmdEYXRhIC0gRnVuY3Rpb24gdG8gc2F2ZSB0aGUgbW9kaWZpZWQgY2hlY2tpbmcgZGF0YS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHBhcmFtZXRlcnMuc2F2ZVNldHRpbmdzIC0gRnVuY3Rpb24gdG8gcGVyc2lzdCB1c2VyJ3MgY29tcG9uZW50IHNldHRpbmdzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcGFyYW1ldGVycy5zaG93RG9jdW1lbnQgLSBGdW5jdGlvbiB0byBkaXNwbGF5IGEgZG9jdW1lbnQgaW4gdGhlIGludGVyZmFjZS5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbWV0ZXJzLnN0eWxlcyAtIFN0eWxpbmcgaW5mb3JtYXRpb24gdG8gY3VzdG9taXplIHRoZSBjb21wb25lbnQncyBhcHBlYXJhbmNlLlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmFtZXRlcnMudGFyZ2V0QmlibGUgLSBUaGUgdGFyZ2V0IEJpYmxlIGRhdGEgZm9yIHRoZSB3b3JraW5nIGxhbmd1YWdlLlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmFtZXRlcnMudGFyZ2V0TGFuZ3VhZ2VEZXRhaWxzIC0gTWV0YWRhdGEgYWJvdXQgdGhlIHRhcmdldCBsYW5ndWFnZSwgaW5jbHVkaW5nIGJvb2sgYW5kIGxhbmd1YWdlLXNwZWNpZmljIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwYXJhbWV0ZXJzLnRyYW5zbGF0ZSAtIEEgZnVuY3Rpb24gdXNlZCBmb3Igc3RyaW5nIHRyYW5zbGF0aW9ucyBpbiB0aGUgVUkuXG4gKi9cbmNvbnN0IENoZWNrZXIgPSAoe1xuICBhbGlnbmVkR2xCaWJsZSxcbiAgYmlibGVzOiBiaWJsZXNfLFxuICBjaGFuZ2VkQ3VycmVudENoZWNrLFxuICBjaGFuZ2VUYXJnZXRWZXJzZSxcbiAgY2hlY2tpbmdEYXRhLFxuICBjaGVja1R5cGUsXG4gIGNvbnRleHRJZCxcbiAgZ2V0TGV4aWNvbkRhdGEsXG4gIGdsV29yZHNEYXRhLFxuICBpbml0aWFsU2V0dGluZ3MsXG4gIHNhdmVDaGVja2luZ0RhdGEsXG4gIHNhdmVTZXR0aW5ncyxcbiAgc2hvd0RvY3VtZW50LFxuICBzdHlsZXMsXG4gIHRhcmdldEJpYmxlOiB0YXJnZXRCaWJsZV8sXG4gIHRhcmdldExhbmd1YWdlRGV0YWlscyxcbiAgdHJhbnNsYXRlLFxufSkgPT4ge1xuICAvLyBNYWluIHNldHRpbmdzIHN0YXRlIC0gaW5jbHVkZXMgcGFuZSBjb25maWd1cmF0aW9uLCB0b29sIHNldHRpbmdzLCBhbmQgbWFuaWZlc3QgZGF0YVxuICBjb25zdCBbc2V0dGluZ3MsIF9zZXRTZXR0aW5nc10gPSB1c2VTdGF0ZSh7XG4gICAgcGFuZVNldHRpbmdzOiBbXSxcbiAgICBwYW5lS2V5U2V0dGluZ3M6IHt9LFxuICAgIHRvb2xzU2V0dGluZ3M6IHt9LFxuICAgIG1hbmlmZXN0OiB7fVxuICB9KVxuICBjb25zdCB7XG4gICAgcGFuZVNldHRpbmdzLFxuICAgIHBhbmVLZXlTZXR0aW5ncyxcbiAgICB0b29sc1NldHRpbmdzLFxuICAgIG1hbmlmZXN0XG4gIH0gPSBzZXR0aW5nc1xuXG4gIC8vIEJpYmxlIGRhdGEgb3JnYW5pemVkIGJ5IGxhbmd1YWdlIGFuZCBJRFxuICBjb25zdCBbYmlibGVzLCBzZXRCaWJsZXNdID0gdXNlU3RhdGUoeyB9KVxuXG4gIC8vIEN1cnJlbnQgdGFyZ2V0IEJpYmxlIGJlaW5nIGNoZWNrZWRcbiAgY29uc3QgW3RhcmdldEJpYmxlLCBzZXRUYXJnZXRCaWJsZV0gPSB1c2VTdGF0ZSh0YXJnZXRCaWJsZV8pXG5cbiAgLy8gVGVtcG9yYXJ5IGNoZWNraW5nIGRhdGEgZm9yIHVuc2F2ZWQgY2hhbmdlc1xuICBjb25zdCBbdGVtcENoZWNraW5nRGF0YSwgc2V0VGVtcENoZWNraW5nRGF0YV0gPSB1c2VTdGF0ZShudWxsKVxuXG4gIC8vIExvY2FsIGNoZWNraW5nIGRhdGEgZm9yIGN1cnJlbnQgc2Vzc2lvblxuICBjb25zdCBbbG9jYWxDaGVja2luZ0RhdGEsIHNldExvY2FsQ2hlY2tpbmdEYXRhXSA9IHVzZVN0YXRlKG51bGwpXG5cbiAgLy8gTWFpbiBjb21wb25lbnQgc3RhdGVcbiAgY29uc3QgW3N0YXRlLCBfc2V0U3RhdGVdID0gdXNlU3RhdGUoe1xuICAgIGFsaWduZWRHTFRleHQ6ICcnLCAvLyBHYXRld2F5IExhbmd1YWdlIHRleHQgYWxpZ25lZCB0byBvcmlnaW5hbFxuICAgIGFydGljbGU6IG51bGwsIC8vIEN1cnJlbnQgdHJhbnNsYXRpb24gaGVscCBhcnRpY2xlXG4gICAgY3VycmVudENoZWNrOiBudWxsLCAvLyBDdXJyZW50IGNoZWNrIGJlaW5nIHdvcmtlZCBvblxuICAgIGN1cnJlbnRDaGVja2luZ0RhdGE6IG51bGwsIC8vIEFsbCBjaGVja2luZyBkYXRhIGZvciBjdXJyZW50IGJvb2tcbiAgICBncm91cFRpdGxlOiAnJywgLy8gVGl0bGUgb2YgY3VycmVudCBjaGVjayBncm91cFxuICAgIGdyb3VwUGhyYXNlOiAnJywgLy8gUGhyYXNlIG9yIG9jY3VycmVuY2Ugbm90ZSBmb3IgY3VycmVudCBjaGVja1xuICAgIGdyb3Vwc0RhdGE6IG51bGwsIC8vIEZsYXR0ZW5lZCBncm91cCBkYXRhIGZvciBhbGwgY2hlY2tzXG4gICAgZ3JvdXBzSW5kZXg6IG51bGwsIC8vIEluZGV4IG9mIGFsbCBjaGVjayBncm91cHNcbiAgICBpc0NvbW1lbnRDaGFuZ2VkOiBmYWxzZSwgLy8gV2hldGhlciBjb21tZW50IGhhcyB1bnNhdmVkIGNoYW5nZXNcbiAgICBpc1ZlcnNlQ2hhbmdlZDogZmFsc2UsIC8vIFdoZXRoZXIgdmVyc2UgaGFzIHVuc2F2ZWQgY2hhbmdlc1xuICAgIG1vZGU6ICdkZWZhdWx0JywgLy8gQ3VycmVudCBVSSBtb2RlIChkZWZhdWx0LCBzZWxlY3QsIGVkaXQsIGNvbW1lbnQpXG4gICAgbmV3VmVyc2VUZXh0OiBudWxsLCAvLyBOZXcgdmVyc2UgdGV4dCBkdXJpbmcgZWRpdGluZ1xuICAgIHBvcG92ZXJQcm9wczoge1xuICAgICAgcG9wb3ZlclZpc2liaWxpdHk6IGZhbHNlXG4gICAgfSxcbiAgICBzaG93SGVscHNNb2RhbDogZmFsc2UsIC8vIFdoZXRoZXIgaGVscHMgbW9kYWwgaXMgc2hvd25cbiAgICBzaG93SGVscHM6IHRydWUsIC8vIFdoZXRoZXIgaGVscHMgc2lkZWJhciBpcyBzaG93blxuICAgIG5ld1RhZ3M6IG51bGwsIC8vIE5ldyB0YWdzIGJlaW5nIGFkZGVkXG4gICAgdmVyc2VUZXh0OiAnJywgLy8gQ3VycmVudCB2ZXJzZSB0ZXh0XG4gIH0pXG5cbiAgY29uc3Qge1xuICAgIGFsaWduZWRHTFRleHQsXG4gICAgYXJ0aWNsZSxcbiAgICBjdXJyZW50Q2hlY2ssXG4gICAgY3VycmVudENoZWNraW5nRGF0YSxcbiAgICBncm91cFRpdGxlLFxuICAgIGdyb3VwUGhyYXNlLFxuICAgIGdyb3Vwc0RhdGEsXG4gICAgZ3JvdXBzSW5kZXgsXG4gICAgaXNDb21tZW50Q2hhbmdlZCxcbiAgICBpc1ZlcnNlQ2hhbmdlZCxcbiAgICBtb2RlLFxuICAgIG5ld1ZlcnNlVGV4dCxcbiAgICBwb3BvdmVyUHJvcHMsXG4gICAgc2hvd0hlbHBzTW9kYWwsXG4gICAgc2hvd0hlbHBzLFxuICAgIG5ld1RhZ3MsXG4gICAgdmVyc2VUZXh0LFxuICB9ID0gc3RhdGVcblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgc3RhdGUgb2JqZWN0IHdpdGggbmV3IHZhbHVlc1xuICAgKiBAcGFyYW0ge29iamVjdH0gbmV3U3RhdGUgLSBPYmplY3QgY29udGFpbmluZyBzdGF0ZSBwcm9wZXJ0aWVzIHRvIHVwZGF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gc2V0U3RhdGUobmV3U3RhdGUpIHtcbiAgICBfc2V0U3RhdGUocHJldlN0YXRlID0+ICh7IC4uLnByZXZTdGF0ZSwgLi4ubmV3U3RhdGUgfSkpXG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY3VycmVudCBzYXZlZCB2YWx1ZSBmb3IgYSBjaGVjayBwcm9wZXJ0eVxuICAgKiBGYWxscyBiYWNrIHRvIGxvY2FsIGNoZWNraW5nIGRhdGEgaWYgYXZhaWxhYmxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBQcm9wZXJ0eSBuYW1lXG4gICAqIEByZXR1cm5zIHsqfSBDdXJyZW50IHZhbHVlXG4gICAqL1xuICBmdW5jdGlvbiBnZXRDdXJyZW50VmFsdWVGb3Ioa2V5KSB7XG4gICAgaWYgKGxvY2FsQ2hlY2tpbmdEYXRhPy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICByZXR1cm4gbG9jYWxDaGVja2luZ0RhdGFba2V5XVxuICAgIH1cbiAgICByZXR1cm4gY3VycmVudENoZWNrPy5ba2V5XVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHRlbXBvcmFyeSAodW5zYXZlZCkgdmFsdWUgZm9yIGEgY2hlY2sgcHJvcGVydHlcbiAgICogRmFsbHMgYmFjayB0aHJvdWdoIGxvY2FsIGNoZWNraW5nIGRhdGEgdG8gY3VycmVudCBjaGVja1xuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gUHJvcGVydHkgbmFtZVxuICAgKiBAcmV0dXJucyB7Kn0gVGVtcG9yYXJ5IHZhbHVlXG4gICAqL1xuICBmdW5jdGlvbiBnZXRUZW1wVmFsdWVGb3Ioa2V5KSB7XG4gICAgaWYgKHRlbXBDaGVja2luZ0RhdGE/Lmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIHJldHVybiB0ZW1wQ2hlY2tpbmdEYXRhW2tleV1cbiAgICB9XG4gICAgcmV0dXJuIGdldEN1cnJlbnRWYWx1ZUZvcihrZXkpXG4gIH1cblxuICBjb25zdCBjdXJyZW50U2VsZWN0aW9ucyA9IGdldEN1cnJlbnRWYWx1ZUZvcignc2VsZWN0aW9ucycpIHx8IFtdXG4gIGNvbnN0IHRlbXBTZWxlY3Rpb25zID0gZ2V0VGVtcFZhbHVlRm9yKCdzZWxlY3Rpb25zJykgfHwgW11cbiAgY29uc3QgdGVtcE5vdGhpbmdUb1NlbGVjdCA9IGdldFRlbXBWYWx1ZUZvcignbm90aGluZ1RvU2VsZWN0JylcbiAgY29uc3QgY3VycmVudE5vdGhpbmdUb1NlbGVjdCA9IGdldEN1cnJlbnRWYWx1ZUZvcignbm90aGluZ1RvU2VsZWN0JylcbiAgY29uc3QgZ3JvdXBzRGF0YUxvYWRlZCA9ICEhZ3JvdXBzRGF0YVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBVSSBtb2RlIGJhc2VkIG9uIHNlbGVjdGlvbnMgc3RhdGVcbiAgICogU3dpdGNoZXMgdG8gJ3NlbGVjdCcgbW9kZSBpZiBubyBzZWxlY3Rpb25zIGFuZCBub3RoaW5nIGlzIG1hcmtlZCBhcyB1bnNlbGVjdGFibGVcbiAgICogQHBhcmFtIHtBcnJheX0gbmV3U2VsZWN0aW9ucyAtIEN1cnJlbnQgc2VsZWN0aW9ucyBhcnJheVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG5vdGhpbmdUb1NlbGVjdCAtIFdoZXRoZXIgdmVyc2UgaXMgbWFya2VkIGFzIGhhdmluZyBub3RoaW5nIHRvIHNlbGVjdFxuICAgKi9cbiAgZnVuY3Rpb24gdXBkYXRlTW9kZUZvclNlbGVjdGlvbnMobmV3U2VsZWN0aW9ucywgbm90aGluZ1RvU2VsZWN0KSB7XG4gICAgY29uc3Qgbm9TZWxlY3Rpb25zID0gKCFuZXdTZWxlY3Rpb25zPy5sZW5ndGgpXG4gICAgY29uc3QgbmV3TW9kZSA9IG5vU2VsZWN0aW9ucyAmJiAhbm90aGluZ1RvU2VsZWN0ID8gJ3NlbGVjdCcgOiAnZGVmYXVsdCdcbiAgICBzZXRTdGF0ZSh7XG4gICAgICBtb2RlOiBuZXdNb2RlXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBFZmZlY3QgaG9vayB0byBpbml0aWFsaXplIGNoZWNraW5nIGRhdGEgd2hlbiBjaGVja2luZ0RhdGEgb3IgZ2xXb3Jkc0RhdGEgY2hhbmdlc1xuICAgKiBGbGF0dGVucyBncm91cCBkYXRhLCBjcmVhdGVzIGluZGV4LCBmaW5kcyBpbml0aWFsIGNoZWNrLCBhbmQgdmFsaWRhdGVzIGFsbCBjaGVja3NcbiAgICovXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGF2ZURhdGEgPSBjaGVja2luZ0RhdGEgJiYgT2JqZWN0LmtleXMoY2hlY2tpbmdEYXRhKS5sZW5ndGggJiYgZ2xXb3Jkc0RhdGEgJiYgT2JqZWN0LmtleXMoZ2xXb3Jkc0RhdGEpLmxlbmd0aFxuICAgIGNvbnN0IGdyb3Vwc0RhdGFJbml0aWFsaXplZCA9IGdyb3Vwc0RhdGEgJiYgT2JqZWN0LmtleXMoZ3JvdXBzRGF0YSkubGVuZ3RoXG4gICAgaWYgKGhhdmVEYXRhICYmICFncm91cHNEYXRhSW5pdGlhbGl6ZWQpIHtcbiAgICAgIGxldCBmbGF0dGVuZWRHcm91cERhdGEgPSBudWxsXG4gICAgICBsZXQgZ3JvdXBzSW5kZXggPSBudWxsXG4gICAgICBpZiAoY2hlY2tpbmdEYXRhKSB7XG4gICAgICAgIGZsYXR0ZW5lZEdyb3VwRGF0YSA9IGdyb3VwRGF0YUhlbHBlcnMuZmxhdHRlbkdyb3VwRGF0YShjaGVja2luZ0RhdGEpXG4gICAgICB9XG5cbiAgICAgIGlmIChnbFdvcmRzRGF0YSkge1xuICAgICAgICBpZiAoY2hlY2tUeXBlID09PSB0cmFuc2xhdGlvbk5vdGVzKSB7XG4gICAgICAgICAgZ3JvdXBzSW5kZXggPSBwYXJzZVRuVG9JbmRleChnbFdvcmRzRGF0YSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBncm91cHNJbmRleCA9IHBhcnNlVHdUb0luZGV4KGdsV29yZHNEYXRhKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNoZWNrID0gZmluZENoZWNrKGZsYXR0ZW5lZEdyb3VwRGF0YSwgY29udGV4dElkLCB0cnVlKVxuICAgICAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgICAgIGdyb3Vwc0RhdGE6IGZsYXR0ZW5lZEdyb3VwRGF0YSxcbiAgICAgICAgZ3JvdXBzSW5kZXgsXG4gICAgICAgIGN1cnJlbnRDaGVja2luZ0RhdGE6IGNoZWNraW5nRGF0YSxcbiAgICAgICAgY3VycmVudENoZWNrOiBjaGVjayxcbiAgICAgICAgbW9kaWZpZWQ6IGZhbHNlLFxuICAgICAgICBpc0NvbW1lbnRDaGFuZ2VkOiBmYWxzZSxcbiAgICAgIH1cblxuICAgICAgLy8gdmFsaWRhdGUgYWxsIGNoZWNrc1xuICAgICAgc2VsZWN0aW9uc0hlbHBlcnMudmFsaWRhdGVTZWxlY3Rpb25zRm9yQWxsQ2hlY2tzKHRhcmdldEJpYmxlLCBmbGF0dGVuZWRHcm91cERhdGEsIChjaGVjaywgaW52YWxpZGF0ZWQpID0+IHtcbiAgICAgICAgaWYgKGNoZWNrKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCR7bmFtZX0tc2F2ZUVkaXRWZXJzZSAtIGNoZWNrIHZhbGlkYXRpb24gY2hhbmdlZGAsIGNoZWNrKVxuICAgICAgICAgIF9zYXZlQ2hlY2tpbmdEYXRhKGNoZWNrLCB7IGludmFsaWRhdGVkIH0pXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIHNldFN0YXRlKG5ld1N0YXRlKVxuXG4gICAgICBpZiAoZmxhdHRlbmVkR3JvdXBEYXRhICYmIGNoZWNrPy5jb250ZXh0SWQpIHtcbiAgICAgICAgdXBkYXRlQ29udGV4dChjaGVjaywgZ3JvdXBzSW5kZXgpXG4gICAgICAgIHVwZGF0ZU1vZGVGb3JTZWxlY3Rpb25zKGNoZWNrPy5zZWxlY3Rpb25zLCBjaGVjaz8ubm90aGluZ1RvU2VsZWN0KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2NvbnRleHRJZCwgY2hlY2tpbmdEYXRhLCBnbFdvcmRzRGF0YV0pO1xuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBjb250ZXh0IGFuZCByZWxhdGVkIGRhdGEgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNoZWNrIGFuZCBncm91cCBpbmRleC5cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IG5ld0NoZWNrIC0gVGhlIG5ldyBjaGVjayBvYmplY3QgY29udGFpbmluZyBjb250ZXh0IGluZm9ybWF0aW9uLlxuICAgKiBAcGFyYW0ge09iamVjdH0gW2dyb3Vwc0luZGV4Xz1ncm91cHNJbmRleF0gLSBBbiBvcHRpb25hbCBncm91cCBpbmRleCBvYmplY3QsIGRlZmF1bHRzIHRvIHRoZSBnbG9iYWwgdmFyaWFibGUgYGdyb3Vwc0luZGV4YC5cbiAgICogQHJldHVybiB7dm9pZH0gRG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuIFVwZGF0ZXMgdGhlIHN0YXRlIG9mIHRoZSBhcHBsaWNhdGlvbiB3aXRoIG5ldyBjb250ZXh0IGRhdGEuXG4gICAqL1xuICBmdW5jdGlvbiB1cGRhdGVDb250ZXh0KG5ld0NoZWNrLCBncm91cHNJbmRleF8gPSBncm91cHNJbmRleCkge1xuICAgIGNvbnN0IGNvbnRleHRJZCA9IG5ld0NoZWNrPy5jb250ZXh0SWRcbiAgICBjb25zdCByZWZlcmVuY2UgPSBjb250ZXh0SWQ/LnJlZmVyZW5jZVxuICAgIGNvbnN0IHZlcnNlVGV4dCA9IHZlcnNlSGVscGVycy5nZXRWZXJzZVRleHRGcm9tQmlibGUodGFyZ2V0QmlibGUsIHJlZmVyZW5jZSlcbiAgICBjb25zdCBhbGlnbmVkR0xUZXh0ID0gZ2V0QWxpZ25lZEdMVGV4dChhbGlnbmVkR2xCaWJsZSwgY29udGV4dElkKTtcbiAgICBjb25zdCBncm91cFRpdGxlID0gZ2V0VGl0bGVGcm9tSW5kZXgoZ3JvdXBzSW5kZXhfLCBjb250ZXh0SWQ/Lmdyb3VwSWQpXG4gICAgY29uc3QgZ3JvdXBQaHJhc2UgPVxuICAgICAgY2hlY2tUeXBlID09PSB0cmFuc2xhdGlvbk5vdGVzXG4gICAgICAgID8gY29udGV4dElkPy5vY2N1cnJlbmNlTm90ZVxuICAgICAgICA6IGdldFBocmFzZUZyb21UdyhnbFdvcmRzRGF0YSwgY29udGV4dElkPy5ncm91cElkKVxuXG4gICAgbGV0IGdyb3VwRGF0YVxuICAgIGlmIChnbFdvcmRzRGF0YSkge1xuICAgICAgaWYgKGNoZWNrVHlwZSA9PT0gdHJhbnNsYXRpb25Ob3Rlcykge1xuICAgICAgICBncm91cERhdGEgPSB7XG4gICAgICAgICAgdHJhbnNsYXRlOiB7XG4gICAgICAgICAgICBhcnRpY2xlczogZ2xXb3Jkc0RhdGE/LnRyYW5zbGF0ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ3JvdXBEYXRhID0ge1xuICAgICAgICAgIC4uLmdsV29yZHNEYXRhLFxuICAgICAgICAgIG1hbmlmZXN0OiB7fVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IF9hcnRpY2xlXG4gICAgY29uc3QgYXJ0aWNsZUlkID0gY29udGV4dElkPy5ncm91cElkXG4gICAgY29uc3QgZ3JvdXBzSWRzID0gT2JqZWN0LmtleXMoZ3JvdXBEYXRhKVxuICAgIGZvciAoY29uc3QgX2dyb3VwSWQgb2YgZ3JvdXBzSWRzKSB7XG4gICAgICBjb25zdCBncm91cCA9IGdyb3VwRGF0YVtfZ3JvdXBJZF1cbiAgICAgIGNvbnN0IGFydGljbGVzID0gZ3JvdXA/LmFydGljbGVzIHx8IHt9XG4gICAgICBfYXJ0aWNsZSA9IGFydGljbGVzPy5bYXJ0aWNsZUlkXSB8fCBudWxsXG4gICAgICBpZiAoX2FydGljbGUpIHtcbiAgICAgICAgY29uc3QgY3VycmVudEFydGljbGVNYXJrZG93biA9IHRIZWxwc0hlbHBlcnMuY29udmVydE1hcmtkb3duTGlua3MoX2FydGljbGUsIGdhdGV3YXlMYW5ndWFnZUlkKTtcbiAgICAgICAgX2FydGljbGUgPSBjdXJyZW50QXJ0aWNsZU1hcmtkb3duXG4gICAgICAgIC8vIGNvbnN0IHRIZWxwc01vZGFsTWFya2Rvd24gPSB0SGVscHNIZWxwZXJzLmNvbnZlcnRNYXJrZG93bkxpbmtzKG1vZGFsQXJ0aWNsZSwgZ2F0ZXdheUxhbmd1YWdlQ29kZSwgYXJ0aWNsZUNhdGVnb3J5KTtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRTdGF0ZSh7XG4gICAgICBhbGlnbmVkR0xUZXh0LFxuICAgICAgY3VycmVudENoZWNrOiBuZXdDaGVjayxcbiAgICAgIHZlcnNlVGV4dCxcbiAgICAgIGdyb3VwVGl0bGUsXG4gICAgICBncm91cFBocmFzZSxcbiAgICAgIGFydGljbGU6IF9hcnRpY2xlXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGNvbW1lbnRUZXh0ID0gZ2V0Q3VycmVudFZhbHVlRm9yKCdjb21tZW50cycpIHx8ICcnXG4gIGNvbnN0IGJvb2tJZCA9IHRhcmdldExhbmd1YWdlRGV0YWlscz8uYm9vaz8uaWRcbiAgY29uc3QgYm9va05hbWUgPSB0YXJnZXRMYW5ndWFnZURldGFpbHM/LmJvb2s/Lm5hbWVcbiAgY29uc3QgYm9va0RldGFpbHMgPSB7XG4gICAgaWQ6IGJvb2tJZCxcbiAgICBuYW1lOiBib29rTmFtZVxuICB9O1xuICBjb25zdCBnYXRld2F5TGFuZ3VhZ2VJZCA9IHRhcmdldExhbmd1YWdlRGV0YWlscz8uZ2F0ZXdheUxhbmd1YWdlSWRcbiAgY29uc3QgdGFyZ2V0TGFuZ3VhZ2VGb250ID0gbWFuaWZlc3Q/LnByb2plY3RGb250IHx8ICcnXG4gIGNvbnN0IGN1cnJlbnRDb250ZXh0SWQgPSBjdXJyZW50Q2hlY2s/LmNvbnRleHRJZFxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRvb2wtc3BlY2lmaWMgc2V0dGluZ3MgYW5kIHBlcnNpc3RzIHRoZW1cbiAgICogQHBhcmFtIHtzdHJpbmd9IE5BTUVTUEFDRSAtIFRvb2wgbmFtZXNwYWNlIChlLmcuLCAnU2NyaXB0dXJlUGFuZScpXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWVsZE5hbWUgLSBTZXR0aW5nIGZpZWxkIG5hbWVcbiAgICogQHBhcmFtIHsqfSBmaWVsZFZhbHVlIC0gU2V0dGluZyB2YWx1ZVxuICAgKi9cbiAgY29uc3Qgc2V0VG9vbFNldHRpbmdzID0gKE5BTUVTUEFDRSwgZmllbGROYW1lLCBmaWVsZFZhbHVlKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tc2V0VG9vbFNldHRpbmdzICR7ZmllbGROYW1lfT0ke2ZpZWxkVmFsdWV9YClcbiAgICBpZiAodG9vbHNTZXR0aW5ncykge1xuICAgICAgLy8gRGVlcCBjbG9uaW5nIG9iamVjdCB0byBhdm9pZCBtb2RpZnlpbmcgb3JpZ2luYWwgb2JqZWN0XG4gICAgICBjb25zdCBfdG9vbHNTZXR0aW5ncyA9IHsgLi4udG9vbHNTZXR0aW5ncyB9O1xuICAgICAgbGV0IGNvbXBvbmVudFNldHRpbmdzID0gX3Rvb2xzU2V0dGluZ3M/LltOQU1FU1BBQ0VdXG4gICAgICBpZiAoIWNvbXBvbmVudFNldHRpbmdzKSB7XG4gICAgICAgIGNvbXBvbmVudFNldHRpbmdzID0geyB9XG4gICAgICAgIF90b29sc1NldHRpbmdzW05BTUVTUEFDRV0gPSBjb21wb25lbnRTZXR0aW5nc1xuICAgICAgfVxuICAgICAgY29tcG9uZW50U2V0dGluZ3NbZmllbGROYW1lXSA9IGZpZWxkVmFsdWVcbiAgICAgIHNldFNldHRpbmdzKHsgdG9vbHNTZXR0aW5nczogX3Rvb2xzU2V0dGluZ3MgfSwgdHJ1ZSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUGVyc2lzdHMgc2V0dGluZ3MgdG8gc3RvcmFnZSBhZnRlciByZW1vdmluZyBCaWJsZSBkYXRhIHRvIHJlZHVjZSBzaXplXG4gICAqIENyZWF0ZXMgc2hhbGxvdyBjb3BpZXMgdG8gYXZvaWQgbW9kaWZ5aW5nIG9yaWdpbmFsIG9iamVjdHNcbiAgICogQHBhcmFtIHtvYmplY3R9IF9zZXR0aW5ncyAtIFNldHRpbmdzIG9iamVjdCB0byBzYXZlXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiBfc2F2ZVNldHRpbmdzKF9zZXR0aW5ncykge1xuICAgIGlmIChzYXZlU2V0dGluZ3MgJiYgX3NldHRpbmdzKSB7XG4gICAgICBjb25zdCBuZXdTZXR0aW5ncyA9IHsgLi4uX3NldHRpbmdzIH1cbiAgICAgIGRlbGV0ZSBuZXdTZXR0aW5ncy5tYW5pZmVzdFxuICAgICAgY29uc3QgX3BhbmVTZXR0aW5ncyA9IFsgLi4ubmV3U2V0dGluZ3MucGFuZVNldHRpbmdzIF1cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgX3BhbmVTZXR0aW5ncy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBfcGFuZVNldHRpbmcgPSB7Li4uX3BhbmVTZXR0aW5nc1tpXX0gLy8gc2hhbGxvdyBjb3B5XG4gICAgICAgIGlmIChfcGFuZVNldHRpbmc/LmJvb2spIHtcbiAgICAgICAgICBkZWxldGUgX3BhbmVTZXR0aW5nLmJvb2sgLy8gcmVtb3ZlIGFsbCB0aGUgYm9vayBkYXRhIGJlZm9yZSBzYXZpbmdcbiAgICAgICAgfVxuICAgICAgICBfcGFuZVNldHRpbmdzW2ldID0gX3BhbmVTZXR0aW5nXG4gICAgICB9XG4gICAgICBuZXdTZXR0aW5ncy5wYW5lU2V0dGluZ3MgPSBfcGFuZVNldHRpbmdzXG5cbiAgICAgIGNvbnN0IF9wYW5lS2V5U2V0dGluZ3MgPSB7IC4uLm5ld1NldHRpbmdzLnBhbmVLZXlTZXR0aW5ncyB9XG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoX3BhbmVLZXlTZXR0aW5ncylcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgY29uc3QgX3BhbmVTZXR0aW5nID0gey4uLl9wYW5lS2V5U2V0dGluZ3Nba2V5XX0gLy8gc2hhbGxvdyBjb3B5XG4gICAgICAgIGlmIChfcGFuZVNldHRpbmc/LmJvb2spIHtcbiAgICAgICAgICBkZWxldGUgX3BhbmVTZXR0aW5nLmJvb2sgLy8gcmVtb3ZlIGFsbCB0aGUgYm9vayBkYXRhIGJlZm9yZSBzYXZpbmdcbiAgICAgICAgfVxuICAgICAgICBfcGFuZUtleVNldHRpbmdzW2tleV0gPSBfcGFuZVNldHRpbmdcbiAgICAgIH1cbiAgICAgIG5ld1NldHRpbmdzLnBhbmVLZXlTZXR0aW5ncyA9IF9wYW5lS2V5U2V0dGluZ3NcblxuICAgICAgc2F2ZVNldHRpbmdzKG5ld1NldHRpbmdzKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHNldHRpbmdzIHN0YXRlIGFuZCBvcHRpb25hbGx5IHBlcnNpc3RzIHRoZW1cbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld1NldHRpbmdzIC0gTmV3IHNldHRpbmdzIHRvIG1lcmdlXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZG9TYXZlIC0gV2hldGhlciB0byBwZXJzaXN0IHNldHRpbmdzXG4gICAqL1xuICBmdW5jdGlvbiBzZXRTZXR0aW5ncyhuZXdTZXR0aW5ncywgZG9TYXZlID0gZmFsc2UpIHtcbiAgICBjb25zdCBfc2V0dGluZ3MgPSB7XG4gICAgICAuLi5zZXR0aW5ncyxcbiAgICAgIC4uLm5ld1NldHRpbmdzXG4gICAgfVxuXG4gICAgX3NldFNldHRpbmdzKF9zZXR0aW5ncylcbiAgICBkb1NhdmUgJiYgX3NhdmVTZXR0aW5ncyhfc2V0dGluZ3MpXG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyBTY3JpcHR1cmUgcGFuZSBzZXR0aW5ncyB3aXRoIG5ldyBwYW5lIGNvbmZpZ3VyYXRpb25zXG4gICAqIE1haW50YWlucyBhIGtleS1iYXNlZCBsb29rdXAgZm9yIHBhbmUgc2V0dGluZ3MgYnkgbGFuZ3VhZ2UvYmlibGUvb3duZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IE5BTUVTUEFDRSAtIFRvb2wgbmFtZXNwYWNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWVsZE5hbWUgLSBTZXR0aW5nIGZpZWxkIG5hbWVcbiAgICogQHBhcmFtIHtBcnJheX0gX3BhbmVTZXR0aW5ncyAtIEFycmF5IG9mIHBhbmUgc2V0dGluZyBvYmplY3RzXG4gICAqL1xuICBjb25zdCBzZXRUb29sU2V0dGluZ3NTY3JpcHR1cmUgPSAoTkFNRVNQQUNFLCBmaWVsZE5hbWUsIF9wYW5lU2V0dGluZ3MpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1zZXRUb29sU2V0dGluZ3NTY3JpcHR1cmUgJHtmaWVsZE5hbWV9YCwgX3BhbmVTZXR0aW5ncylcbiAgICBjb25zdCBfcGFuZUtleVNldHRpbmdzID0gey4uLnBhbmVLZXlTZXR0aW5nc31cblxuICAgIGZvciAoY29uc3QgcGFuZVNldHRpbmdzIG9mIF9wYW5lU2V0dGluZ3MpIHtcbiAgICAgIGNvbnN0IGxhbmd1YWdlSWQgPSBwYW5lU2V0dGluZ3M/Lmxhbmd1YWdlSWRcbiAgICAgIGNvbnN0IGtleSA9IGAke2xhbmd1YWdlSWR9LyR7cGFuZVNldHRpbmdzPy5iaWJsZUlkfS8ke3BhbmVTZXR0aW5ncz8ub3duZXJ9YFxuICAgICAgX3BhbmVLZXlTZXR0aW5nc1trZXldID0gcGFuZVNldHRpbmdzXG4gICAgfVxuXG4gICAgY29uc3QgX3NldHRpbmdzID0ge1xuICAgICAgcGFuZVNldHRpbmdzOiBfcGFuZVNldHRpbmdzLFxuICAgICAgcGFuZUtleVNldHRpbmdzOiBfcGFuZUtleVNldHRpbmdzLFxuICAgIH1cblxuICAgIHNldFNldHRpbmdzKF9zZXR0aW5ncywgdHJ1ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgcHJvcGVydHkgdG8gdGhlIG1hbmlmZXN0IGFuZCBhcHAgc2V0dGluZ3NcbiAgICogVXNlZCBmb3IgcGVyc2lzdGluZyB1c2VyIHByZWZlcmVuY2VzIGxpa2UgZm9udHNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpZWxkTmFtZSAtIFByb3BlcnR5IG5hbWVcbiAgICogQHBhcmFtIHsqfSBmaWVsZFZhbHVlIC0gUHJvcGVydHkgdmFsdWVcbiAgICovXG4gIGNvbnN0IGFkZE9iamVjdFByb3BlcnR5VG9NYW5pZmVzdCA9IChmaWVsZE5hbWUsIGZpZWxkVmFsdWUpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1hZGRPYmplY3RQcm9wZXJ0eVRvTWFuaWZlc3QgJHtmaWVsZE5hbWV9PSR7ZmllbGRWYWx1ZX1gKVxuICAgIGlmIChtYW5pZmVzdCkge1xuICAgICAgY29uc3QgX21hbmlmZXN0ID0ge1xuICAgICAgICAuLi5tYW5pZmVzdCxcbiAgICAgICAgW2ZpZWxkTmFtZV06IGZpZWxkVmFsdWVcbiAgICAgIH1cblxuICAgICAgLy8gYWxzbyBzYXZlIHRoaXMgaW4gYXBwU2V0dGluZ3NcbiAgICAgIGNvbnN0IGFwcFNldHRpbmdzID0gc2V0dGluZ3MuYXBwU2V0dGluZ3MgfHwge31cbiAgICAgIGNvbnN0IF9hcHBTZXR0aW5ncyA9IHtcbiAgICAgICAgLi4uYXBwU2V0dGluZ3MsXG4gICAgICAgIFtmaWVsZE5hbWVdOiBmaWVsZFZhbHVlXG4gICAgICB9XG5cbiAgICAgIHNldFNldHRpbmdzKHtcbiAgICAgICAgbWFuaWZlc3Q6IF9tYW5pZmVzdCxcbiAgICAgICAgYXBwU2V0dGluZ3M6IF9hcHBTZXR0aW5nc1xuICAgICAgfSwgdHJ1ZSlcbiAgICB9XG4gIH1cblxuICAvLyBFdmVudCBoYW5kbGVycyBmb3IgdmFyaW91cyB1c2VyIGFjdGlvbnNcblxuICAvKipcbiAgICogT3BlbnMgYW4gYWxlcnQgZGlhbG9nIChwbGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbilcbiAgICovXG4gIGNvbnN0IG9wZW5BbGVydERpYWxvZyA9ICgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1vcGVuQWxlcnREaWFsb2dgKSAvLyBUT0RPIC0gZmxlc2ggb3V0XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHZlcnNlIGNvbnRlbnQgaGFzIGNoYW5nZWQgZnJvbSBvcmlnaW5hbFxuICAgKiBAcGFyYW0ge0V2ZW50fSBlIC0gSW5wdXQgZXZlbnRcbiAgICovXG4gIGNvbnN0IGNoZWNrSWZWZXJzZUNoYW5nZWQgPSAoZSkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWNoZWNrSWZWZXJzZUNoYW5nZWRgKVxuICAgIGNvbnN0IF9uZXdWZXJzZVRleHQgPSBlLnRhcmdldC52YWx1ZVxuICAgIGNvbnN0IF9pc1ZlcnNlQ2hhbmdlZCA9IF9uZXdWZXJzZVRleHQgIT09IHZlcnNlVGV4dFxuICAgIHNldFN0YXRlKHsgaXNWZXJzZUNoYW5nZWQ6IF9pc1ZlcnNlQ2hhbmdlZCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHZlcnNlIHRleHQgZWRpdGluZ1xuICAgKiBAcGFyYW0ge0V2ZW50fSBlIC0gSW5wdXQgZXZlbnQgd2l0aCBuZXcgdmVyc2UgdGV4dFxuICAgKi9cbiAgY29uc3QgaGFuZGxlRWRpdFZlcnNlID0gKGUpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1oYW5kbGVFZGl0VmVyc2VgKVxuICAgIGNvbnN0IF9uZXdWZXJzZVRleHQgPSBlLnRhcmdldC52YWx1ZVxuICAgIHNldFN0YXRlKHsgbmV3VmVyc2VUZXh0OiBfbmV3VmVyc2VUZXh0IH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbmNlbHMgdmVyc2UgZWRpdGluZyBhbmQgcmVzZXRzIHN0YXRlXG4gICAqL1xuICBjb25zdCBjYW5jZWxFZGl0VmVyc2UgPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tY2FuY2VsRWRpdFZlcnNlYClcbiAgICBzZXRTdGF0ZSh7IG5ld1ZlcnNlVGV4dDogbnVsbCwgbmV3VGFnczogW10sIG1vZGU6IFwiZGVmYXVsdFwiIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmVzIGVkaXRlZCB2ZXJzZSB0ZXh0IGFuZCB1cGRhdGVzIGFsaWdubWVudHNcbiAgICogTWFya3MgY2hlY2sgYXMgaGF2aW5nIHZlcnNlIGVkaXRzXG4gICAqL1xuICBjb25zdCBzYXZlRWRpdFZlcnNlID0gKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LXNhdmVFZGl0VmVyc2VgKVxuICAgIGNvbnN0IHsgY2hhcHRlciwgdmVyc2UgfSA9IGN1cnJlbnRDb250ZXh0SWQucmVmZXJlbmNlO1xuICAgIGNvbnN0IHZlcnNlUmVmID0gY3VycmVudENvbnRleHRJZC52ZXJzZVNwYW4gfHwgdmVyc2U7IC8vIGlmIGluIHZlcnNlIHNwYW4sIHVzZSBpdFxuICAgIGNvbnN0IGJlZm9yZSA9IHRhcmdldEJpYmxlW2NoYXB0ZXJdW3ZlcnNlUmVmXTtcblxuICAgIHNldFN0YXRlKHtcbiAgICAgIG5ld1ZlcnNlVGV4dDogbnVsbCxcbiAgICAgIG5ld1RhZ3M6IFtdLFxuICAgICAgbW9kZTogXCJkZWZhdWx0XCIsXG4gICAgICBpc1ZlcnNlQ2hhbmdlZDogZmFsc2UsXG4gICAgfSk7XG4gICAgZWRpdFRhcmdldFZlcnNlKGNoYXB0ZXIsIHZlcnNlUmVmLCBiZWZvcmUsIG5ld1ZlcnNlVGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGVzIHRvIHRoZSBuZXh0IGNoZWNrIGluIHRoZSBzZXF1ZW5jZVxuICAgKi9cbiAgZnVuY3Rpb24gaGFuZGxlR29Ub05leHQoKSB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0taGFuZGxlR29Ub05leHRgKVxuICAgIGNvbnN0IG5leHRDaGVjayA9IGZpbmROZXh0Q2hlY2soZ3JvdXBzRGF0YSwgY3VycmVudENvbnRleHRJZCwgZmFsc2UpXG4gICAgY2hhbmdlQ3VycmVudENoZWNrXyhuZXh0Q2hlY2ssIHRydWUpXG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGVzIHRvIHRoZSBwcmV2aW91cyBjaGVjayBpbiB0aGUgc2VxdWVuY2VcbiAgICovXG4gIGZ1bmN0aW9uIGhhbmRsZUdvVG9QcmV2aW91cygpIHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1oYW5kbGVHb1RvUHJldmlvdXNgKVxuICAgIGNvbnN0IHByZXZpb3VzQ2hlY2sgPSBmaW5kUHJldmlvdXNDaGVjayhncm91cHNEYXRhLCBjdXJyZW50Q29udGV4dElkLCBmYWxzZSlcbiAgICBjaGFuZ2VDdXJyZW50Q2hlY2tfKHByZXZpb3VzQ2hlY2ssIHRydWUpXG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBjaGVja2JveCBjaGFuZ2VzIGZvciB0YWdzXG4gICAqIEFkZHMgb3IgcmVtb3ZlcyB0YWdzIGZyb20gdGhlIGN1cnJlbnQgbGlzdFxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFnIC0gVGFnIGlkZW50aWZpZXJcbiAgICovXG4gIGNvbnN0IGhhbmRsZVRhZ3NDaGVja2JveCA9ICh0YWcpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1oYW5kbGVUYWdzQ2hlY2tib3hgLCB0YWcpXG4gICAgY29uc3QgY3VycmVudFRhZ3MgPSBuZXdUYWdzIHx8IFtdXG4gICAgY29uc3QgdGFnSW5kZXggPSBjdXJyZW50VGFncy5pbmRleE9mKHRhZyk7XG4gICAgbGV0IF9uZXdUYWdzO1xuXG4gICAgaWYgKHRhZ0luZGV4ID4gLTEpIHtcbiAgICAgIGNvbnN0IGNvcHkgPSBjdXJyZW50VGFncy5zbGljZSgwKTtcbiAgICAgIGNvcHkuc3BsaWNlKHRhZ0luZGV4LCAxKTtcbiAgICAgIF9uZXdUYWdzID0gY29weTtcbiAgICB9IGVsc2Uge1xuICAgICAgX25ld1RhZ3MgPSBbLi4uY3VycmVudFRhZ3MsIHRhZ107XG4gICAgfVxuXG4gICAgc2V0U3RhdGUoeyBuZXdUYWdzOiBfbmV3VGFncyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgc2VsZWN0aW9ucyBhZ2FpbnN0IHZlcnNlIHRleHRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZlcnNlVGV4dF8gLSBWZXJzZSB0ZXh0IHRvIHZhbGlkYXRlIGFnYWluc3RcbiAgICogQHBhcmFtIHtBcnJheX0gc2VsZWN0aW9uc18gLSBTZWxlY3Rpb25zIHRvIHZhbGlkYXRlXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIHNlbGVjdGlvbnMgYXJlIHZhbGlkXG4gICAqL1xuICBjb25zdCB2YWxpZGF0ZVNlbGVjdGlvbnMgPSAodmVyc2VUZXh0Xywgc2VsZWN0aW9uc18pID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS12YWxpZGF0ZVNlbGVjdGlvbnNgLCBzZWxlY3Rpb25zXylcbiAgICByZXR1cm4gc2VsZWN0aW9uc0hlbHBlcnMudmFsaWRhdGVWZXJzZVNlbGVjdGlvbnModmVyc2VUZXh0Xywgc2VsZWN0aW9uc18pXG4gIH1cblxuICAvKipcbiAgICogTWVtb2l6ZWQgY29tcHV0YXRpb24gb2YgdW5maWx0ZXJlZCB2ZXJzZSB0ZXh0IGluY2x1ZGluZyBVU0ZNIG1hcmtlcnNcbiAgICogVXNlZCBmb3IgZGlzcGxheWluZyBhbmQgZWRpdGluZyBjb21wbGV0ZSB2ZXJzZSBkYXRhXG4gICAqL1xuICBjb25zdCB1bmZpbHRlcmVkVmVyc2VUZXh0ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgbGV0IHVuZmlsdGVyZWRWZXJzZVRleHRfID0gJydcbiAgICBjb25zdCByZWZlcmVuY2UgPSBjdXJyZW50Q29udGV4dElkPy5yZWZlcmVuY2VcbiAgICBjb25zdCBjaGFwdGVyID0gcmVmZXJlbmNlPy5jaGFwdGVyXG4gICAgY29uc3QgdmVyc2UgPSByZWZlcmVuY2U/LnZlcnNlXG4gICAgaWYgKGNoYXB0ZXIgJiYgdmVyc2UpIHtcbiAgICAgIGNvbnN0IHZlcnNlRGF0YSA9IHRhcmdldEJpYmxlPy5bY2hhcHRlcl0/Llt2ZXJzZV1cbiAgICAgIGlmICh2ZXJzZURhdGEpIHtcbiAgICAgICAgdW5maWx0ZXJlZFZlcnNlVGV4dF8gPSB2ZXJzZURhdGFcbiAgICAgICAgaWYgKHR5cGVvZiB2ZXJzZURhdGEgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdW5maWx0ZXJlZFZlcnNlVGV4dF8gPSBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmdldFVzZm1Gb3JWZXJzZUNvbnRlbnQodmVyc2VEYXRhKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZmlsdGVyZWRWZXJzZVRleHRfXG4gIH0sIFt0YXJnZXRCaWJsZSwgY3VycmVudENvbnRleHRJZF0pXG5cbiAgLyoqXG4gICAqIFNldHMgYSB0ZW1wb3JhcnkgdmFsdWUgZm9yIGEgY2hlY2tpbmcgZGF0YSBwcm9wZXJ0eVxuICAgKiBVc2VkIGZvciB0cmFja2luZyB1bnNhdmVkIGNoYW5nZXNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFByb3BlcnR5IG5hbWVcbiAgICogQHBhcmFtIHsqfSB2YWx1ZSAtIFByb3BlcnR5IHZhbHVlXG4gICAqL1xuICBjb25zdCBzZXRUZW1wQ2hlY2tpbmdJdGVtID0gKGtleSwgdmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdDaGVja2luZ0RhdGEgPSB0ZW1wQ2hlY2tpbmdEYXRhID8gey4uLnRlbXBDaGVja2luZ0RhdGF9IDoge31cbiAgICBuZXdDaGVja2luZ0RhdGFba2V5XSA9IHZhbHVlXG4gICAgc2V0VGVtcENoZWNraW5nRGF0YShuZXdDaGVja2luZ0RhdGEpXG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyBzZWxlY3Rpb25zIGluIHRlbXBvcmFyeSBzdGF0ZSB3aXRob3V0IHNhdmluZ1xuICAgKiBAcGFyYW0ge0FycmF5fSBzZWxlY3Rpb25zIC0gTmV3IHNlbGVjdGlvbnMgYXJyYXlcbiAgICovXG4gIGNvbnN0IGNoYW5nZVNlbGVjdGlvbnNJbkxvY2FsU3RhdGUgPSAoc2VsZWN0aW9ucykgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWNoYW5nZVNlbGVjdGlvbnNJbkxvY2FsU3RhdGVgLCBzZWxlY3Rpb25zKVxuICAgIHNldFRlbXBDaGVja2luZ0l0ZW0oJ3NlbGVjdGlvbnMnLCBzZWxlY3Rpb25zKVxuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIFwibm90aGluZyB0byBzZWxlY3RcIiBmbGFnIGZvciBjdXJyZW50IGNoZWNrXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2VsZWN0IC0gTmV3IHN0YXRlIHZhbHVlXG4gICAqL1xuICBjb25zdCB0b2dnbGVOb3RoaW5nVG9TZWxlY3QgPSAoc2VsZWN0KSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tdG9nZ2xlTm90aGluZ1RvU2VsZWN0YCwgc2VsZWN0KVxuICAgIHNldFRlbXBDaGVja2luZ0l0ZW0oJ25vdGhpbmdUb1NlbGVjdCcsIHNlbGVjdClcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGFuZ2VzIHRoZSBjdXJyZW50IGNoZWNrIGJlaW5nIHdvcmtlZCBvblxuICAgKiBWYWxpZGF0ZXMgZm9yIHVuc2F2ZWQgY2hhbmdlcyBiZWZvcmUgc3dpdGNoaW5nXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdDb250ZXh0IC0gTmV3IGNoZWNrIGNvbnRleHRcbiAgICogQHBhcmFtIHtib29sZWFufSBub0NoZWNrIC0gU2tpcCB2YWxpZGF0aW9uIGlmIHRydWVcbiAgICovXG4gIGNvbnN0IGNoYW5nZUN1cnJlbnRDaGVja18gPSAobmV3Q29udGV4dCwgbm9DaGVjayA9IGZhbHNlKSA9PiB7XG4gICAgY29uc3QgbmV3Q29udGV4dElkID0gbmV3Q29udGV4dD8uY29udGV4dElkXG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tY2hhbmdlQ3VycmVudENvbnRleHRJZGAsIG5ld0NvbnRleHRJZClcblxuICAgIGNvbnN0IHNlbGVjdGlvbnNVbmNoYW5nZWQgPSBpc0VxdWFsKGN1cnJlbnRTZWxlY3Rpb25zLCB0ZW1wU2VsZWN0aW9ucylcbiAgICBpZiAobm9DaGVjayB8fCBzZWxlY3Rpb25zVW5jaGFuZ2VkKSB7XG4gICAgICBpZiAobmV3Q29udGV4dElkKSB7XG4gICAgICAgIGxldCBjaGVjayA9IGZpbmRDaGVjayhncm91cHNEYXRhLCBuZXdDb250ZXh0SWQsIGZhbHNlKVxuICAgICAgICB1cGRhdGVDb250ZXh0KG5ld0NvbnRleHQpXG4gICAgICAgIGlmIChjaGVjaykge1xuICAgICAgICAgIHNldExvY2FsQ2hlY2tpbmdEYXRhKG51bGwpXG4gICAgICAgICAgc2V0VGVtcENoZWNraW5nRGF0YShudWxsKVxuICAgICAgICAgIHVwZGF0ZU1vZGVGb3JTZWxlY3Rpb25zKGNoZWNrLnNlbGVjdGlvbnMsIGNoZWNrLm5vdGhpbmdUb1NlbGVjdClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZygnQ2hlY2tlci5jaGFuZ2VDdXJyZW50Q29udGV4dElkIC0gdW5zYXZlZCBjaGFuZ2VzJylcbiAgICB9XG4gICAgY2hhbmdlZEN1cnJlbnRDaGVjayAmJiBjaGFuZ2VkQ3VycmVudENoZWNrKG5ld0NvbnRleHQpXG4gIH1cblxuICBjb25zdCBkaXJlY3Rpb24gPSAnbHRyJ1xuICBjb25zdCBib29rbWFya0VuYWJsZWQgPSBnZXRDdXJyZW50VmFsdWVGb3IoJ3JlbWluZGVycycpXG4gIGNvbnN0IGlzVmVyc2VFZGl0ZWQgPSAhIWdldEN1cnJlbnRWYWx1ZUZvcigndmVyc2VFZGl0cycpXG4gIGNvbnN0IGlzVmVyc2VJbnZhbGlkYXRlZCA9ICEhZ2V0Q3VycmVudFZhbHVlRm9yKCdpbnZhbGlkYXRlZCcpXG5cbiAgLyoqXG4gICAqIENoYW5nZXMgdGhlIGN1cnJlbnQgY2hlY2sgYmVpbmcgd29ya2VkIG9uXG4gICAqIFZhbGlkYXRlcyBmb3IgdW5zYXZlZCBjaGFuZ2VzIGJlZm9yZSBzd2l0Y2hpbmdcbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld0NvbnRleHQgLSBOZXcgY2hlY2sgY29udGV4dFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG5vQ2hlY2sgLSBTa2lwIHZhbGlkYXRpb24gaWYgdHJ1ZVxuICAgKi9cbiAgY29uc3QgX3NhdmVTZWxlY3Rpb24gPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tX3NhdmVTZWxlY3Rpb24gcGVyc2lzdCB0byBmaWxlYClcbiAgICBjb25zdCB7IGNoZWNrSW5Hcm91cHNEYXRhLCBfY3VycmVudENoZWNrLCBuZXdTdGF0ZSwgX25ld0NoZWNraW5nRGF0YSB9ID0gY2xvbmVEYXRhRm9yU2F2aW5nKClcblxuICAgIGlmIChfY3VycmVudENoZWNrICYmIG5ld1N0YXRlKSB7XG4gICAgICBpZiAodGVtcE5vdGhpbmdUb1NlbGVjdCkge1xuICAgICAgICBfbmV3Q2hlY2tpbmdEYXRhLm5vdGhpbmdUb1NlbGVjdCA9IHRlbXBOb3RoaW5nVG9TZWxlY3RcbiAgICAgICAgX25ld0NoZWNraW5nRGF0YS5zZWxlY3Rpb25zID0gZmFsc2VcbiAgICAgICAgX25ld0NoZWNraW5nRGF0YS5pbnZhbGlkYXRlZCA9IGZhbHNlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfbmV3Q2hlY2tpbmdEYXRhLm5vdGhpbmdUb1NlbGVjdCA9IGZhbHNlXG4gICAgICAgIF9uZXdDaGVja2luZ0RhdGEuc2VsZWN0aW9ucyA9IHRlbXBTZWxlY3Rpb25zXG4gICAgICAgIF9uZXdDaGVja2luZ0RhdGEuaW52YWxpZGF0ZWQgPSBmYWxzZVxuICAgICAgfVxuXG4gICAgICBzZXRMb2NhbENoZWNraW5nRGF0YShfbmV3Q2hlY2tpbmdEYXRhKVxuICAgICAgZGVsZXRlVGVtcENoZWNraW5nRGF0YSgnbm90aGluZ1RvU2VsZWN0JylcbiAgICAgIGRlbGV0ZVRlbXBDaGVja2luZ0RhdGEoJ3NlbGVjdGlvbnMnKVxuICAgICAgZGVsZXRlVGVtcENoZWNraW5nRGF0YSgnaW52YWxpZGF0ZWQnKVxuXG4gICAgICB1cGRhdGVWYWx1ZXNJbkNoZWNrRGF0YShfY3VycmVudENoZWNrLCBjaGVja0luR3JvdXBzRGF0YSwgX25ld0NoZWNraW5nRGF0YSlcblxuICAgICAgc2V0U3RhdGUobmV3U3RhdGUpO1xuICAgICAgc2F2ZUNoZWNraW5nRGF0YSAmJiBzYXZlQ2hlY2tpbmdEYXRhKG5ld1N0YXRlKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9uZXMgY3VycmVudCBkYXRhIHN0cnVjdHVyZXMgZm9yIHNhdmluZyBtb2RpZmljYXRpb25zXG4gICAqIENyZWF0ZXMgZGVlcCBjb3BpZXMgdG8gYXZvaWQgbXV0YXRpbmcgb3JpZ2luYWwgc3RhdGVcbiAgICogQHJldHVybnMge29iamVjdH0gT2JqZWN0IGNvbnRhaW5pbmcgY2xvbmVkIGRhdGEgc3RydWN0dXJlc1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gY2xvbmVEYXRhRm9yU2F2aW5nKCkge1xuICAgIGNvbnN0IF9ncm91cHNEYXRhID0gXy5jbG9uZURlZXAoZ3JvdXBzRGF0YSlcbiAgICBjb25zdCBjaGVja0luR3JvdXBzRGF0YSA9IGZpbmRDaGVjayhfZ3JvdXBzRGF0YSwgY3VycmVudENvbnRleHRJZClcbiAgICBsZXQgX2N1cnJlbnRDaGVja1xuICAgIGxldCBuZXdTdGF0ZVxuICAgIGxldCBfbmV3Q2hlY2tpbmdEYXRhXG4gICAgaWYgKGNoZWNrSW5Hcm91cHNEYXRhKSB7XG4gICAgICAvLyBzYXZlIHRoZSBzZWxlY3Rpb24gY2hhbmdlc1xuICAgICAgY29uc3QgY2F0ZWdvcnkgPSBjaGVja0luR3JvdXBzRGF0YS5jYXRlZ29yeVxuICAgICAgY29uc3QgbmV3Q2hlY2tEYXRhID0gXy5jbG9uZURlZXAoY3VycmVudENoZWNraW5nRGF0YSlcbiAgICAgIF9jdXJyZW50Q2hlY2sgPSBmaW5kQ2hlY2sobmV3Q2hlY2tEYXRhW2NhdGVnb3J5XSwgY3VycmVudENvbnRleHRJZCwgZmFsc2UpXG4gICAgICBuZXdTdGF0ZSA9IHtcbiAgICAgICAgY3VycmVudENoZWNraW5nRGF0YTogbmV3Q2hlY2tEYXRhLFxuICAgICAgICBjdXJyZW50Q2hlY2s6IF9jdXJyZW50Q2hlY2ssXG4gICAgICAgIGdyb3Vwc0RhdGE6IF9ncm91cHNEYXRhLFxuICAgICAgICBtb2RlOiAnZGVmYXVsdCcsXG4gICAgICAgIG1vZGlmaWVkOiB0cnVlXG4gICAgICB9XG4gICAgICBfbmV3Q2hlY2tpbmdEYXRhID0gbG9jYWxDaGVja2luZ0RhdGEgPyB7Li4ubG9jYWxDaGVja2luZ0RhdGF9IDoge31cbiAgICB9XG4gICAgcmV0dXJuIHsgY2hlY2tJbkdyb3Vwc0RhdGEsIF9jdXJyZW50Q2hlY2ssIG5ld1N0YXRlLCBfbmV3Q2hlY2tpbmdEYXRhIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIG11bHRpcGxlIHByb3BlcnRpZXMgaW4gY2hlY2sgZGF0YSBvYmplY3RzXG4gICAqIE1vZGlmaWVzIGJvdGggdGhlIGN1cnJlbnQgY2hlY2sgYW5kIGdyb3VwcyBkYXRhXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBfY3VycmVudENoZWNrIC0gQ3VycmVudCBjaGVjayBvYmplY3RcbiAgICogQHBhcmFtIHtvYmplY3R9IGNoZWNrSW5Hcm91cHNEYXRhIC0gQ2hlY2sgaW4gZ3JvdXBzIGRhdGEgc3RydWN0dXJlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBfbmV3Q2hlY2tpbmdEYXRhIC0gTmV3IGRhdGEgdG8gYXBwbHlcbiAgICovXG4gIGZ1bmN0aW9uIHVwZGF0ZVZhbHVlc0luQ2hlY2tEYXRhKF9jdXJyZW50Q2hlY2ssIGNoZWNrSW5Hcm91cHNEYXRhLCBfbmV3Q2hlY2tpbmdEYXRhKSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoX25ld0NoZWNraW5nRGF0YSkpIHtcbiAgICAgIGNvbnN0IG5ld0NoZWNraW5nVmFsdWUgPSBfbmV3Q2hlY2tpbmdEYXRhW2tleV1cbiAgICAgIF9jdXJyZW50Q2hlY2tba2V5XSA9IG5ld0NoZWNraW5nVmFsdWVcbiAgICAgIGNoZWNrSW5Hcm91cHNEYXRhW2tleV0gPSBuZXdDaGVja2luZ1ZhbHVlXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBlcnNpc3RzIG11bHRpcGxlIGNoZWNrIHByb3BlcnR5IGNoYW5nZXMgdG8gZmlsZVxuICAgKiBDbG9uZXMgZGF0YSwgYXBwbGllcyBjaGFuZ2VzLCB1cGRhdGVzIHN0YXRlLCBhbmQgc2F2ZXNcbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld0RhdGEgLSBPYmplY3Qgd2l0aCBwcm9wZXJ0eSBuYW1lcyBhbmQgdmFsdWVzIHRvIHVwZGF0ZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY29uc3QgX3NhdmVEYXRhID0gKG5ld0RhdGEpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1fc2F2ZURhdGEgcGVyc2lzdCB0byBmaWxlYClcbiAgICBjb25zdCB7IGNoZWNrSW5Hcm91cHNEYXRhLCBfY3VycmVudENoZWNrLCBuZXdTdGF0ZSwgX25ld0NoZWNraW5nRGF0YSB9ID0gY2xvbmVEYXRhRm9yU2F2aW5nKClcblxuICAgIGlmIChfY3VycmVudENoZWNrICYmIG5ld1N0YXRlKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhuZXdEYXRhKSkge1xuICAgICAgICBfbmV3Q2hlY2tpbmdEYXRhW2tleV0gPSBuZXdEYXRhW2tleV1cbiAgICAgICAgZGVsZXRlVGVtcENoZWNraW5nRGF0YShrZXkpXG4gICAgICB9XG4gICAgICBzZXRMb2NhbENoZWNraW5nRGF0YShfbmV3Q2hlY2tpbmdEYXRhKVxuXG4gICAgICB1cGRhdGVWYWx1ZXNJbkNoZWNrRGF0YShfY3VycmVudENoZWNrLCBjaGVja0luR3JvdXBzRGF0YSwgX25ld0NoZWNraW5nRGF0YSlcblxuICAgICAgc2V0U3RhdGUobmV3U3RhdGUpO1xuICAgICAgc2F2ZUNoZWNraW5nRGF0YSAmJiBzYXZlQ2hlY2tpbmdEYXRhKG5ld1N0YXRlKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlcyBjaGFuZ2VzIHRvIGEgc3BlY2lmaWMgY2hlY2sgKG1heSBub3QgYmUgY3VycmVudCBjaGVjaylcbiAgICogT25seSBzYXZlcyBpZiBkYXRhIGFjdHVhbGx5IGNoYW5nZWRcbiAgICogQHBhcmFtIHtvYmplY3R9IGNoZWNrIC0gQ2hlY2sgb2JqZWN0IHRvIHVwZGF0ZVxuICAgKiBAcGFyYW0ge29iamVjdH0gbmV3RGF0YSAtIE5ldyBkYXRhIHRvIGFwcGx5XG4gICAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIGRhdGEgd2FzIGNoYW5nZWRcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNvbnN0IF9zYXZlQ2hlY2tpbmdEYXRhID0gKGNoZWNrLCBuZXdEYXRhKSA9PiB7XG4gICAgbGV0IGNoYW5nZWREYXRhID0gZmFsc2VcbiAgICBpZiAoY2hlY2spIHtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG5ld0RhdGEpKSB7XG4gICAgICAgIGlmIChjaGVja1trZXldICE9PSBuZXdEYXRhW2tleV0pIHtcbiAgICAgICAgICBjaGVja1trZXldID0gbmV3RGF0YVtrZXldXG4gICAgICAgICAgY2hhbmdlZERhdGEgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGNoYW5nZWREYXRhKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGAke25hbWV9LV9zYXZlQ2hlY2tpbmdEYXRhIHBlcnNpc3QgY2hhbmdlcyB0byBmaWxlYCwgY2hlY2spXG4gICAgICAgIGNvbnN0IG5ld0NoZWNraW5nRGF0YSA9IHtcbiAgICAgICAgICBjdXJyZW50Q2hlY2s6IGNoZWNrLFxuICAgICAgICB9XG4gICAgICAgIHNhdmVDaGVja2luZ0RhdGEgJiYgc2F2ZUNoZWNraW5nRGF0YShuZXdDaGVja2luZ0RhdGEpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjaGFuZ2VkRGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSBwcm9wZXJ0eSBmcm9tIHRlbXBvcmFyeSBjaGVja2luZyBkYXRhXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBQcm9wZXJ0eSBuYW1lIHRvIHJlbW92ZVxuICAgKi9cbiAgZnVuY3Rpb24gZGVsZXRlVGVtcENoZWNraW5nRGF0YShrZXkpIHtcbiAgICBpZiAodGVtcENoZWNraW5nRGF0YT8uaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgY29uc3QgX3RlbXBDaGVja2luZ0RhdGEgPSB7Li4udGVtcENoZWNraW5nRGF0YX1cbiAgICAgIGRlbGV0ZSBfdGVtcENoZWNraW5nRGF0YVtrZXldXG4gICAgICBzZXRUZW1wQ2hlY2tpbmdEYXRhKF90ZW1wQ2hlY2tpbmdEYXRhKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5jZWxzIHNlbGVjdGlvbiBtb2RlIHdpdGhvdXQgc2F2aW5nIGNoYW5nZXNcbiAgICovXG4gIGNvbnN0IGNhbmNlbFNlbGVjdGlvbiA9ICgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1jYW5jZWxTZWxlY3Rpb25gKVxuICAgIGRlbGV0ZVRlbXBDaGVja2luZ0RhdGEoJ3NlbGVjdGlvbnMnKVxuICAgIHNldFN0YXRlKHtcbiAgICAgIG1vZGU6ICdkZWZhdWx0J1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBhbGwgY3VycmVudCBzZWxlY3Rpb25zXG4gICAqL1xuICBjb25zdCBjbGVhclNlbGVjdGlvbiA9ICgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1jbGVhclNlbGVjdGlvbmApXG4gICAgc2V0VGVtcENoZWNraW5nSXRlbSgnc2VsZWN0aW9ucycsIFtdKVxuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgYm9va21hcmsvcmVtaW5kZXIgZmxhZyBmb3IgY3VycmVudCBjaGVja1xuICAgKi9cbiAgY29uc3QgdG9nZ2xlQm9va21hcmsgPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tdG9nZ2xlQm9va21hcmtgKVxuICAgIF9zYXZlRGF0YSh7XG4gICAgICByZW1pbmRlcnM6ICFnZXRUZW1wVmFsdWVGb3IoJ3JlbWluZGVycycpXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGFuZ2VzIHRoZSBVSSBtb2RlIChkZWZhdWx0LCBzZWxlY3QsIGVkaXQsIGNvbW1lbnQpXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtb2RlIC0gTmV3IG1vZGUgaWRlbnRpZmllclxuICAgKi9cbiAgY29uc3QgY2hhbmdlTW9kZSA9IChtb2RlKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tY2hhbmdlTW9kZWAsIG1vZGUpXG4gICAgc2V0U3RhdGUoeyBtb2RlIH0pXG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGNvbW1lbnQgdGV4dCBoYXMgY2hhbmdlZCBmcm9tIHNhdmVkIHZhbHVlXG4gICAqIEBwYXJhbSB7RXZlbnR9IGUgLSBJbnB1dCBldmVudFxuICAgKi9cbiAgZnVuY3Rpb24gY2hlY2tJZkNvbW1lbnRDaGFuZ2VkKGUpIHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1jaGVja0lmQ29tbWVudENoYW5nZWRgKVxuICAgIGNvbnN0IG5ld2NvbW1lbnQgPSBlLnRhcmdldC52YWx1ZSB8fCAnJztcbiAgICBjb25zdCBvbGRjb21tZW50ID0gY29tbWVudFRleHQgfHwgJyc7XG4gICAgY29uc3QgaXNDb21tZW50Q2hhbmdlZCA9IG5ld2NvbW1lbnQgIT09IG9sZGNvbW1lbnRcblxuICAgIHNldFN0YXRlKHtcbiAgICAgIGlzQ29tbWVudENoYW5nZWRcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5jZWxzIGNvbW1lbnQgZWRpdGluZyB3aXRob3V0IHNhdmluZ1xuICAgKi9cbiAgY29uc3QgY2FuY2VsQ29tbWVudCA9ICgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1jYW5jZWxDb21tZW50YClcbiAgICBkZWxldGVUZW1wQ2hlY2tpbmdEYXRhKCdjb21tZW50cycpXG4gICAgc2V0U3RhdGUoe1xuICAgICAgbW9kZTogJ2RlZmF1bHQnLFxuICAgICAgaXNDb21tZW50Q2hhbmdlZDogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZXMgY29tbWVudCBjaGFuZ2VzIHRvIHBlcnNpc3RlbnQgc3RvcmFnZVxuICAgKi9cbiAgY29uc3Qgc2F2ZUNvbW1lbnQgPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tc2F2ZUNvbW1lbnRgKVxuICAgIGNvbnN0IG5ld0NvbW1lbnQgPSBnZXRUZW1wVmFsdWVGb3IoJ2NvbW1lbnRzJylcbiAgICBfc2F2ZURhdGEoeyBjb21tZW50czogbmV3Q29tbWVudCB9KVxuICAgIHNldFN0YXRlKHtcbiAgICAgIG1vZGU6ICdkZWZhdWx0JyxcbiAgICAgIGlzQ29tbWVudENoYW5nZWQ6IGZhbHNlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgY29tbWVudCB0ZXh0IGNoYW5nZXNcbiAgICogQHBhcmFtIHtFdmVudH0gZSAtIElucHV0IGV2ZW50IHdpdGggbmV3IGNvbW1lbnRcbiAgICovXG4gIGNvbnN0IGhhbmRsZUNvbW1lbnQgPSAoZSkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1oYW5kbGVDb21tZW50YClcbiAgICBjb25zdCBuZXdDb21tZW50ID0gZS50YXJnZXQudmFsdWVcbiAgICBzZXRUZW1wQ2hlY2tpbmdJdGVtKCdjb21tZW50cycsIG5ld0NvbW1lbnQpXG4gICAgc2V0U3RhdGUoe1xuICAgICAgaXNDb21tZW50Q2hhbmdlZDogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IHJlYWR5VG9EaXNwbGF5Q2hlY2tlciA9IGdyb3Vwc0RhdGEgJiYgZ3JvdXBzSW5kZXggJiYgY3VycmVudENvbnRleHRJZCAmJiB2ZXJzZVRleHRcblxuICAvKipcbiAgICogV3JhcHBlciBmb3IgZ2V0TGV4aWNvbkRhdGEgY2FsbGJhY2sgd2l0aCBsb2dnaW5nXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsZXhpY29uSWQgLSBMZXhpY29uIGlkZW50aWZpZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGVudHJ5SWQgLSBFbnRyeSBpZGVudGlmaWVyXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IExleGljb24gZGF0YVxuICAgKi9cbiAgY29uc3QgZ2V0TGV4aWNvbkRhdGFfID0gKGxleGljb25JZCwgZW50cnlJZCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWdldExleGljb25EYXRhX2AsIHtsZXhpY29uSWQsIGVudHJ5SWR9KVxuICAgIGNvbnN0IGxleGljb25EYXRhID0gZ2V0TGV4aWNvbkRhdGEgJiYgZ2V0TGV4aWNvbkRhdGEobGV4aWNvbklkLCBlbnRyeUlkKVxuICAgIHJldHVybiBsZXhpY29uRGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgcG9wb3ZlciBkaXNwbGF5XG4gICAqL1xuICBjb25zdCBvbkNsb3NlUG9wb3ZlciA9ICgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1vbkNsb3NlUG9wb3ZlcmApXG4gICAgc2V0U3RhdGUoe1xuICAgICAgcG9wb3ZlclByb3BzOiB7XG4gICAgICAgIHBvcG92ZXJWaXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIERpc3BsYXlzIGEgcG9wb3ZlciB3aXRoIHRpdGxlIGFuZCBjb250ZW50IGF0IHNwZWNpZmllZCBwb3NpdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgLSBQb3BvdmVyIHRpdGxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBib2R5VGV4dCAtIFBvcG92ZXIgY29udGVudFxuICAgKiBAcGFyYW0ge29iamVjdH0gcG9zaXRpb25Db29yZCAtIFBvc2l0aW9uIGNvb3JkaW5hdGVzXG4gICAqL1xuICBjb25zdCBzaG93UG9wb3ZlciA9ICh0aXRsZSwgYm9keVRleHQsIHBvc2l0aW9uQ29vcmQpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1zaG93UG9wb3ZlcmAsIHRpdGxlKVxuICAgIHNldFN0YXRlKHtcbiAgICAgIHBvcG92ZXJQcm9wczoge1xuICAgICAgICBwb3BvdmVyVmlzaWJpbGl0eTogdHJ1ZSxcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIGJvZHlUZXh0LFxuICAgICAgICBwb3NpdGlvbkNvb3JkLFxuICAgICAgICBvbkNsb3NlUG9wb3ZlcjogKCkgPT4gb25DbG9zZVBvcG92ZXIoKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgZXhwYW5kZWQgdHJhbnNsYXRpb24gaGVscHMgbW9kYWxcbiAgICovXG4gIGNvbnN0IHRvZ2dsZUhlbHBzTW9kYWwgPSAoKSA9PiB7XG4gICAgY29uc3QgX3Nob3dIZWxwc01vZGFsID0gIXNob3dIZWxwc01vZGFsXG4gICAgc2V0U3RhdGUoe1xuICAgICAgc2hvd0hlbHBzTW9kYWw6IF9zaG93SGVscHNNb2RhbFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgdHJhbnNsYXRpb24gaGVscHMgc2lkZWJhciB2aXNpYmlsaXR5XG4gICAqL1xuICBjb25zdCB0b2dnbGVIZWxwcyA9ICgpID0+IHtcbiAgICBjb25zdCBfc2hvd0hlbHBzID0gIXNob3dIZWxwc1xuICAgIHNldFN0YXRlKHtcbiAgICAgIHNob3dIZWxwczogX3Nob3dIZWxwc1xuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIEJpYmxlIGJvb2sgdG8gdGhlIGJpYmxlcyBkYXRhIHN0cnVjdHVyZVxuICAgKiBDcmVhdGVzIGxhbmd1YWdlIGdyb3VwIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICogQHBhcmFtIHtvYmplY3R9IGJpYmxlcyAtIEJpYmxlcyBkYXRhIHN0cnVjdHVyZVxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gTGFuZ3VhZ2Uga2V5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBiaWJsZUlkIC0gQmlibGUgaWRlbnRpZmllclxuICAgKiBAcGFyYW0ge29iamVjdH0gYm9vayAtIEJvb2sgZGF0YVxuICAgKi9cbiAgZnVuY3Rpb24gc2F2ZUJpYmxlVG9LZXkoYmlibGVzLCBrZXksIGJpYmxlSWQsIGJvb2spIHtcbiAgICBsZXQga2V5R3JvdXAgPSBiaWJsZXNba2V5XVxuICAgIGlmICgha2V5R3JvdXApIHsgLy8gaWYgZ3JvdXAgZG9lcyBub3QgZXhpc3QsIGNyZWF0ZSBuZXdcbiAgICAgIGtleUdyb3VwID0ge31cbiAgICAgIGJpYmxlc1trZXldID0ga2V5R3JvdXBcbiAgICB9XG4gICAga2V5R3JvdXBbYmlibGVJZF0gPSBib29rXG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB2ZXJzZSBjb250ZW50IGluIHRhcmdldCBCaWJsZVxuICAgKiBIYW5kbGVzIFVTRk0gY29udmVyc2lvbiwgYWxpZ25tZW50IHVwZGF0ZXMsIGFuZCB2YWxpZGF0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFwdGVyIC0gQ2hhcHRlciBudW1iZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZlcnNlIC0gVmVyc2UgbnVtYmVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvbGRWZXJzZVRleHQgLSBPcmlnaW5hbCB2ZXJzZSB0ZXh0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuZXdWZXJzZVRleHQgLSBOZXcgdmVyc2UgdGV4dFxuICAgKi9cbiAgZnVuY3Rpb24gZWRpdFRhcmdldFZlcnNlKGNoYXB0ZXIsIHZlcnNlLCBvbGRWZXJzZVRleHQsIG5ld1ZlcnNlVGV4dCkge1xuICAgIGNvbnNvbGUubG9nKGBlZGl0VGFyZ2V0VmVyc2UgJHtjaGFwdGVyfToke3ZlcnNlfSAtIGNoYW5nZWQgdG8gJHtuZXdWZXJzZVRleHR9YClcblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBmaXJzdCB1cGRhdGUgY29tcG9uZW50IHN0YXRlXG5cbiAgICBjb25zdCBfYmlibGVzID0gWyAuLi5iaWJsZXNfXVxuICAgIGNvbnN0IF90YXJnZXRCaWJsZSA9IHsuLi5fYmlibGVzWzBdfVxuICAgIF9iaWJsZXNbMF0gPSBfdGFyZ2V0QmlibGVcbiAgICBjb25zdCB0YXJnZXRCb29rID0gey4uLl90YXJnZXRCaWJsZT8uYm9va31cbiAgICBfdGFyZ2V0QmlibGUuYm9vayA9IHRhcmdldEJvb2tcbiAgICBjb25zdCB0YXJnZXRDaGFwdGVyID0gey4uLnRhcmdldEJvb2tbY2hhcHRlcl19XG4gICAgdGFyZ2V0Qm9va1tjaGFwdGVyXSA9IHRhcmdldENoYXB0ZXJcbiAgICB0YXJnZXRDaGFwdGVyW3ZlcnNlXSA9IG5ld1ZlcnNlVGV4dFxuXG5cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gbm93IGFwcGx5IG5ldyB2ZXJzZSB0ZXh0IHRvIHNlbGVjdGVkIGFsaWduZWQgdmVyc2UgYW5kIGNhbGwgYmFjayB0byBleHRlbnNpb24gdG8gc2F2ZVxuXG4gICAgbGV0IF9uZXdWZXJzZVRleHQgPSBuZXdWZXJzZVRleHRcbiAgICBpZiAodHlwZW9mIF9uZXdWZXJzZVRleHQgIT09ICdzdHJpbmcnKSB7XG4gICAgICBfbmV3VmVyc2VUZXh0ID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKF9uZXdWZXJzZVRleHQpXG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudENoYXB0ZXJEYXRhID0gdGFyZ2V0QmlibGU/LltjaGFwdGVyXVxuICAgIGNvbnN0IGN1cnJlbnRWZXJzZURhdGEgPSBjdXJyZW50Q2hhcHRlckRhdGE/Llt2ZXJzZV1cbiAgICBjb25zdCB7IHRhcmdldFZlcnNlT2JqZWN0cyB9ID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZShjdXJyZW50VmVyc2VEYXRhLCBfbmV3VmVyc2VUZXh0KVxuICAgIHRhcmdldENoYXB0ZXJbdmVyc2VdID0geyB2ZXJzZU9iamVjdHM6IHRhcmdldFZlcnNlT2JqZWN0cyB9OyAvLyBzYXZlXG5cbiAgICB1cGRhdGVTZXR0aW5ncyhfYmlibGVzLCB0YXJnZXRCb29rKVxuXG4gICAgY29uc3QgdmVyc2VUZXh0ID0gcmVtb3ZlVXNmbU1hcmtlcnMoX25ld1ZlcnNlVGV4dClcbiAgICBzZXRTdGF0ZSh7XG4gICAgICB2ZXJzZVRleHRcbiAgICB9KVxuXG4gICAgY2hhbmdlVGFyZ2V0VmVyc2UgJiYgY2hhbmdlVGFyZ2V0VmVyc2UoY2hhcHRlciwgdmVyc2UsIG5ld1ZlcnNlVGV4dCwgdGFyZ2V0VmVyc2VPYmplY3RzKVxuICAgIF9zYXZlRGF0YSh7IHZlcnNlRWRpdHM6IHRydWUgfSlcblxuICAgIGNvbnN0IF9ncm91cHNEYXRhID0gXy5jbG9uZURlZXAoZ3JvdXBzRGF0YSlcbiAgICBsZXQgY2hhbmdlZERhdGEgPSBmYWxzZVxuICAgIHNlbGVjdGlvbnNIZWxwZXJzLnZhbGlkYXRlQWxsU2VsZWN0aW9uc0ZvclZlcnNlKG5ld1ZlcnNlVGV4dCwgYm9va0lkLCBjaGFwdGVyLCB2ZXJzZSwgX2dyb3Vwc0RhdGEsIChjaGVjaywgaW52YWxpZGF0ZWQpID0+IHtcbiAgICAgIGlmIChjaGVjaykge1xuICAgICAgICBjb25zdCBjdXJyZW50Q2hlY2tJZCA9IGN1cnJlbnRDaGVjaz8uY29udGV4dElkPy5jaGVja0lkXG4gICAgICAgIGNvbnN0IGNoZWNrSWQgPSBjaGVjaz8uY29udGV4dElkPy5jaGVja0lkXG5cbiAgICAgICAgaWYgKGNoZWNrSWQgPT09IGN1cnJlbnRDaGVja0lkKSB7XG4gICAgICAgICAgLy8gbmVlZCB0byB1cGRhdGUgY3VycmVudCBjaGVja1xuICAgICAgICAgIF9zYXZlRGF0YSh7XG4gICAgICAgICAgICBpbnZhbGlkYXRlZCxcbiAgICAgICAgICAgIHZlcnNlRWRpdHM6IHRydWUsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWVkaXRUYXJnZXRWZXJzZSAtIGNoZWNrIHZhbGlkYXRlZCwgc3RhdGUgY2hhbmdlZDogaW52YWxpZDogJHtpbnZhbGlkYXRlZH1gLCBjaGVjaylcbiAgICAgICAgY2hhbmdlZERhdGEgPSBjaGFuZ2VkRGF0YSB8fCBfc2F2ZUNoZWNraW5nRGF0YShjaGVjaywgeyBpbnZhbGlkYXRlZCwgdmVyc2VFZGl0czogdHJ1ZSB9KVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBpZiAoY2hhbmdlZERhdGEpIHtcbiAgICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWVkaXRUYXJnZXRWZXJzZSAtIGNoYW5nZXMgZGV0ZWN0ZWQgdXBkYXRpbmcgZ3JvdXBzRGF0YWApXG4gICAgICBzZXRTdGF0ZSh7XG4gICAgICAgIGdyb3Vwc0RhdGE6IF9ncm91cHNEYXRhXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHNldHRpbmdzIHdpdGggbmV3IEJpYmxlIGRhdGEgYW5kIHBhbmUgY29uZmlndXJhdGlvbnNcbiAgICogT3JnYW5pemVzIEJpYmxlcyBieSBsYW5ndWFnZSBhbmQgaW5pdGlhbGl6ZXMgcGFuZSBzZXR0aW5nc1xuICAgKiBAcGFyYW0ge0FycmF5fSBuZXdCaWJsZXMgLSBBcnJheSBvZiBCaWJsZSBvYmplY3RzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSB0YXJnZXRCaWJsZSAtIFRhcmdldCBCaWJsZSBkYXRhXG4gICAqL1xuICBmdW5jdGlvbiB1cGRhdGVTZXR0aW5ncyhuZXdCaWJsZXMsIHRhcmdldEJpYmxlKSB7XG4gICAgY29uc3QgX2JpYmxlcyA9IHt9XG4gICAgbGV0IF9wYW5lU2V0dGluZ3MgPSBbXVxuICAgIGNvbnN0IF9wYW5lS2V5U2V0dGluZ3MgPSBpbml0aWFsU2V0dGluZ3M/LnBhbmVLZXlTZXR0aW5ncyB8fCB7fVxuICAgIGlmIChuZXdCaWJsZXM/Lmxlbmd0aCkge1xuICAgICAgZm9yIChjb25zdCBiaWJsZSBvZiBuZXdCaWJsZXMpIHtcbiAgICAgICAgbGV0IGxhbmd1YWdlSWQgPSBiaWJsZT8ubGFuZ3VhZ2VJZFxuICAgICAgICBjb25zdCBvd25lciA9IGJpYmxlPy5vd25lclxuICAgICAgICBjb25zdCBib29rID0gYmlibGU/LmJvb2tcbiAgICAgICAgY29uc3QgYmlibGVJZCA9IGJpYmxlPy5iaWJsZUlkXG4gICAgICAgIGlmIChsYW5ndWFnZUlkID09PSBOVF9PUklHX0xBTkcgfHwgbGFuZ3VhZ2VJZCA9PT0gT1RfT1JJR19MQU5HKSB7XG4gICAgICAgICAgbGFuZ3VhZ2VJZCA9ICdvcmlnaW5hbExhbmd1YWdlJ1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGtleSA9IGAke2xhbmd1YWdlSWR9LyR7YmlibGVJZH0vJHtvd25lcn1gXG4gICAgICAgIGNvbnN0IGluaXRpYWxQYW5lU2V0dGluZ3MgPSBfcGFuZUtleVNldHRpbmdzPy5ba2V5XVxuICAgICAgICBjb25zdCBsYW5nS2V5ID0gYCR7bGFuZ3VhZ2VJZH1fJHtvd25lcn1gXG4gICAgICAgIHNhdmVCaWJsZVRvS2V5KF9iaWJsZXMsIGxhbmdLZXksIGJpYmxlSWQsIGJvb2spXG4gICAgICAgIHNhdmVCaWJsZVRvS2V5KF9iaWJsZXMsIGxhbmd1YWdlSWQsIGJpYmxlSWQsIGJvb2spIC8vIGFsc28gc2F2ZSBhcyBkZWZhdWx0IGZvciBsYW5ndWFnZSB3aXRob3V0IG93bmVyXG4gICAgICAgIGNvbnN0IHBhbmUgPSBpbml0aWFsUGFuZVNldHRpbmdzIHx8IHtcbiAgICAgICAgICAuLi5iaWJsZSxcbiAgICAgICAgICBsYW5ndWFnZUlkXG4gICAgICAgIH1cbiAgICAgICAgX3BhbmVTZXR0aW5ncy5wdXNoKHBhbmUpXG4gICAgICAgIGlmICghaW5pdGlhbFBhbmVTZXR0aW5ncykge1xuICAgICAgICAgIF9wYW5lS2V5U2V0dGluZ3Nba2V5XSA9IHBhbmVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBfcGFuZVNldHRpbmdzID0gW11cbiAgICB9XG5cbiAgICBjb25zdCBfdG9vbHNTZXR0aW5ncyA9IGluaXRpYWxTZXR0aW5ncz8udG9vbHNTZXR0aW5ncyB8fFxuICAgIHtcbiAgICAgICdDaGVja0FyZWEnOiB7XG4gICAgICAgICdmb250U2l6ZSc6IDEwMFxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBfbWFuaWZlc3QgPSBpbml0aWFsU2V0dGluZ3M/Lm1hbmlmZXN0IHx8XG4gICAge1xuICAgICAgbGFuZ3VhZ2VfbmFtZTogdGFyZ2V0QmlibGU/Lm1hbmlmZXN0Py5kdWJsaW5fY29yZT8ubGFuZ3VhZ2U/LnRpdGxlIHx8ICdDdXJyZW50JyxcbiAgICAgIHByb2plY3RGb250OiB0YXJnZXRCaWJsZT8ubWFuaWZlc3Q/LnByb2plY3RGb250IHx8ICcnXG4gICAgfVxuXG4gICAgY29uc3QgYXBwU2V0dGluZ3MgPSBpbml0aWFsU2V0dGluZ3M/LmFwcFNldHRpbmdzIHx8IHt9XG4gICAgX21hbmlmZXN0ID0ge1xuICAgICAgLi4uX21hbmlmZXN0LFxuICAgICAgLi4uYXBwU2V0dGluZ3MgLy8gb2xkZXIgY29kZSBpcyBsb29raW5nIGZvciBhcHBTZXR0aW5ncyBpbiBtYW5pZmVzdFxuICAgIH1cblxuICAgIHNldEJpYmxlcyhfYmlibGVzKVxuICAgIHNldFRhcmdldEJpYmxlKHRhcmdldEJpYmxlKVxuICAgIHNldFNldHRpbmdzKHtcbiAgICAgIHBhbmVTZXR0aW5nczogX3BhbmVTZXR0aW5ncyxcbiAgICAgIHBhbmVLZXlTZXR0aW5nczogX3BhbmVLZXlTZXR0aW5ncyxcbiAgICAgIHRvb2xzU2V0dGluZ3M6IF90b29sc1NldHRpbmdzLFxuICAgICAgbWFuaWZlc3Q6IF9tYW5pZmVzdCxcbiAgICAgIG5ld0NvbW1lbnQ6ICcnLFxuICAgICAgYXBwU2V0dGluZ3MsXG4gICAgfSwgZmFsc2UpXG4gIH1cblxuICAvKipcbiAgICogV3JhcHBlciBmb3IgZ2V0U2NyaXB0dXJlRnJvbVJlZmVyZW5jZSB3aXRoIGN1cnJlbnQgQmlibGVzIGRhdGFcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxhbmcgLSBMYW5ndWFnZSBJRFxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgLSBCaWJsZSBJRFxuICAgKiBAcGFyYW0ge3N0cmluZ30gYm9vayAtIEJvb2sgSURcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoYXB0ZXIgLSBDaGFwdGVyIG51bWJlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmVyc2UgLSBWZXJzZSBudW1iZXJcbiAgICogQHJldHVybnMge3N0cmluZ30gU2NyaXB0dXJlIHRleHRcbiAgICovXG4gIGZ1bmN0aW9uIF9nZXRTY3JpcHR1cmVGcm9tUmVmZXJlbmNlKGxhbmcsIGlkLCBib29rLCBjaGFwdGVyLCB2ZXJzZSkge1xuICAgIHJldHVybiBnZXRTY3JpcHR1cmVGcm9tUmVmZXJlbmNlKGJpYmxlcywgbGFuZywgaWQsIGJvb2ssIGNoYXB0ZXIsIHZlcnNlKVxuICB9XG5cbiAgLyoqXG4gICAqIEVmZmVjdCBob29rIHRvIHVwZGF0ZSBzZXR0aW5ncyB3aGVuIEJpYmxlcyBvciB0YXJnZXQgQmlibGUgY2hhbmdlc1xuICAgKi9cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICB1cGRhdGVTZXR0aW5ncyhiaWJsZXNfLCB0YXJnZXRCaWJsZV8pXG4gIH0sIFtiaWJsZXNfLCB0YXJnZXRCaWJsZV9dKVxuXG4gIC8vIGJ1aWxkIHRoZSB0aXRsZVxuICBjb25zdCB7IHRhcmdldF9sYW5ndWFnZSwgcHJvamVjdCB9ID0gbWFuaWZlc3Q7XG4gIGxldCBleHBhbmRlZFNjcmlwdHVyZVBhbmVUaXRsZSA9IHByb2plY3Q/LnRpdGxlIHx8ICcnO1xuXG4gIGlmICh0YXJnZXRfbGFuZ3VhZ2U/LmJvb2s/Lm5hbWUpIHtcbiAgICBleHBhbmRlZFNjcmlwdHVyZVBhbmVUaXRsZSA9IHRhcmdldF9sYW5ndWFnZS5ib29rLm5hbWU7XG4gIH1cblxuXG4gIGNvbnN0IHN0eWxlUHJvcHMgPSBzdHlsZXMgfHwge31cbiAgY29uc3QgX2NoZWNrZXJTdHlsZXMgPSB7XG4gICAgLi4ubG9jYWxTdHlsZXMuY29udGFpbmVyRGl2LFxuICAgIC4uLnN0eWxlUHJvcHMsXG4gIH1cblxuICByZXR1cm4gKFxuICAgIHJlYWR5VG9EaXNwbGF5Q2hlY2tlciA/XG4gICAgICA8ZGl2IGlkPSdjaGVja2VyJyBzdHlsZT17X2NoZWNrZXJTdHlsZXN9PlxuICAgICAgICA8R3JvdXBNZW51Q29tcG9uZW50XG4gICAgICAgICAgYm9va05hbWU9e2Jvb2tOYW1lfVxuICAgICAgICAgIGNoYW5nZUN1cnJlbnRDb250ZXh0SWQ9e2NoYW5nZUN1cnJlbnRDaGVja199XG4gICAgICAgICAgY29udGV4dElkPXtjdXJyZW50Q29udGV4dElkfVxuICAgICAgICAgIGRpcmVjdGlvbj17ZGlyZWN0aW9ufVxuICAgICAgICAgIGdyb3Vwc0RhdGE9e2dyb3Vwc0RhdGF9XG4gICAgICAgICAgZ3JvdXBzSW5kZXg9e2dyb3Vwc0luZGV4fVxuICAgICAgICAgIHRhcmdldExhbmd1YWdlRm9udD17dGFyZ2V0TGFuZ3VhZ2VGb250fVxuICAgICAgICAgIHRyYW5zbGF0ZT17dHJhbnNsYXRlfVxuICAgICAgICAvPlxuICAgICAgICA8ZGl2IHN0eWxlPXtsb2NhbFN0eWxlcy5jZW50ZXJEaXZ9PlxuICAgICAgICAgIHsgYmlibGVzICYmIE9iamVjdC5rZXlzKGJpYmxlcykubGVuZ3RoICYmXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXtsb2NhbFN0eWxlcy5zY3JpcHR1cmVQYW5lRGl2fT5cbiAgICAgICAgICAgICAgPFNjcmlwdHVyZVBhbmVcbiAgICAgICAgICAgICAgICBhZGRPYmplY3RQcm9wZXJ0eVRvTWFuaWZlc3Q9e2FkZE9iamVjdFByb3BlcnR5VG9NYW5pZmVzdH1cbiAgICAgICAgICAgICAgICBiaWJsZXM9e2JpYmxlc31cbiAgICAgICAgICAgICAgICBjb21wbGV4U2NyaXB0Rm9udHM9e2NvbXBsZXhTY3JpcHRGb250c31cbiAgICAgICAgICAgICAgICBjb250ZXh0SWQ9e2N1cnJlbnRDb250ZXh0SWR9XG4gICAgICAgICAgICAgICAgY3VycmVudFBhbmVTZXR0aW5ncz17cGFuZVNldHRpbmdzfVxuICAgICAgICAgICAgICAgIGVkaXRWZXJzZVJlZj17bnVsbH1cbiAgICAgICAgICAgICAgICBlZGl0VGFyZ2V0VmVyc2U9e2VkaXRUYXJnZXRWZXJzZX1cbiAgICAgICAgICAgICAgICBleHBhbmRlZFNjcmlwdHVyZVBhbmVUaXRsZT17ZXhwYW5kZWRTY3JpcHR1cmVQYW5lVGl0bGV9XG4gICAgICAgICAgICAgICAgZ2V0QXZhaWxhYmxlU2NyaXB0dXJlUGFuZVNlbGVjdGlvbnM9e251bGx9XG4gICAgICAgICAgICAgICAgZ2V0TGV4aWNvbkRhdGE9e2dldExleGljb25EYXRhX31cbiAgICAgICAgICAgICAgICBtYWtlU3VyZUJpYmxlc0xvYWRlZEZvclRvb2w9e251bGx9XG4gICAgICAgICAgICAgICAgcHJvamVjdERldGFpbHNSZWR1Y2VyPXt7IG1hbmlmZXN0IH19XG4gICAgICAgICAgICAgICAgc2VsZWN0aW9ucz17Y3VycmVudFNlbGVjdGlvbnN9XG4gICAgICAgICAgICAgICAgc2V0VG9vbFNldHRpbmdzPXtzZXRUb29sU2V0dGluZ3NTY3JpcHR1cmV9XG4gICAgICAgICAgICAgICAgc2hvd1BvcG92ZXI9e3Nob3dQb3BvdmVyfVxuICAgICAgICAgICAgICAgIG9uRXhwYW5kZWRTY3JpcHR1cmVQYW5lU2hvdz17bnVsbH1cbiAgICAgICAgICAgICAgICB0cmFuc2xhdGU9e3RyYW5zbGF0ZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPENoZWNrSW5mb0NhcmRcbiAgICAgICAgICAgICAgZ2V0U2NyaXB0dXJlRnJvbVJlZmVyZW5jZT17X2dldFNjcmlwdHVyZUZyb21SZWZlcmVuY2V9XG4gICAgICAgICAgICAgIG9uTGlua0NsaWNrPXsoKSA9PiBmYWxzZX1cbiAgICAgICAgICAgICAgb25TZWVNb3JlQ2xpY2s9eygpID0+IGZhbHNlfVxuICAgICAgICAgICAgICBwaHJhc2U9e2dyb3VwUGhyYXNlfVxuICAgICAgICAgICAgICBzZWVNb3JlTGFiZWw9e3RyYW5zbGF0ZSgnc2VlX21vcmUnKX1cbiAgICAgICAgICAgICAgc2hvd1NlZU1vcmVCdXR0b249e2ZhbHNlfVxuICAgICAgICAgICAgICB0aXRsZT17Z3JvdXBUaXRsZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VmVyc2VDaGVja1xuICAgICAgICAgICAgICBhbGlnbmVkR0xUZXh0PXthbGlnbmVkR0xUZXh0fVxuICAgICAgICAgICAgICBib29rRGV0YWlscz17Ym9va0RldGFpbHN9XG4gICAgICAgICAgICAgIGJvb2ttYXJrRW5hYmxlZD17Ym9va21hcmtFbmFibGVkfVxuICAgICAgICAgICAgICBjYW5jZWxFZGl0VmVyc2U9e2NhbmNlbEVkaXRWZXJzZX1cbiAgICAgICAgICAgICAgY2FuY2VsQ29tbWVudD17Y2FuY2VsQ29tbWVudH1cbiAgICAgICAgICAgICAgY2FuY2VsU2VsZWN0aW9uPXtjYW5jZWxTZWxlY3Rpb259XG4gICAgICAgICAgICAgIGNoYW5nZU1vZGU9e2NoYW5nZU1vZGV9XG4gICAgICAgICAgICAgIGNoYW5nZVNlbGVjdGlvbnNJbkxvY2FsU3RhdGU9e2NoYW5nZVNlbGVjdGlvbnNJbkxvY2FsU3RhdGV9XG4gICAgICAgICAgICAgIGNoZWNrSWZDb21tZW50Q2hhbmdlZD17Y2hlY2tJZkNvbW1lbnRDaGFuZ2VkfVxuICAgICAgICAgICAgICBjaGVja0lmVmVyc2VDaGFuZ2VkPXtjaGVja0lmVmVyc2VDaGFuZ2VkfVxuICAgICAgICAgICAgICBjbGVhclNlbGVjdGlvbj17Y2xlYXJTZWxlY3Rpb259XG4gICAgICAgICAgICAgIGNvbW1lbnRUZXh0PXtjb21tZW50VGV4dH1cbiAgICAgICAgICAgICAgY29udGV4dElkPXtjdXJyZW50Q29udGV4dElkfVxuICAgICAgICAgICAgICBkaWFsb2dNb2RhbFZpc2liaWxpdHkgPSB7ZmFsc2V9XG4gICAgICAgICAgICAgIGlzQ29tbWVudENoYW5nZWQ9e2lzQ29tbWVudENoYW5nZWR9XG4gICAgICAgICAgICAgIGlzVmVyc2VDaGFuZ2VkPXtpc1ZlcnNlQ2hhbmdlZH1cbiAgICAgICAgICAgICAgaXNWZXJzZUVkaXRlZD17aXNWZXJzZUVkaXRlZH1cbiAgICAgICAgICAgICAgaGFuZGxlRWRpdFZlcnNlPXtoYW5kbGVFZGl0VmVyc2V9XG4gICAgICAgICAgICAgIGhhbmRsZUdvVG9OZXh0PXtoYW5kbGVHb1RvTmV4dH1cbiAgICAgICAgICAgICAgaGFuZGxlR29Ub1ByZXZpb3VzPXtoYW5kbGVHb1RvUHJldmlvdXN9XG4gICAgICAgICAgICAgIGhhbmRsZU9wZW5EaWFsb2c9e251bGx9XG4gICAgICAgICAgICAgIGlzVmVyc2VJbnZhbGlkYXRlZD17aXNWZXJzZUludmFsaWRhdGVkfVxuICAgICAgICAgICAgICBoYW5kbGVDbG9zZURpYWxvZz17bnVsbH1cbiAgICAgICAgICAgICAgaGFuZGxlQ29tbWVudD17aGFuZGxlQ29tbWVudH1cbiAgICAgICAgICAgICAgaGFuZGxlU2tpcD17bnVsbH1cbiAgICAgICAgICAgICAgaGFuZGxlVGFnc0NoZWNrYm94PXtoYW5kbGVUYWdzQ2hlY2tib3h9XG4gICAgICAgICAgICAgIGxvY2FsTm90aGluZ1RvU2VsZWN0PXt0ZW1wTm90aGluZ1RvU2VsZWN0fVxuICAgICAgICAgICAgICBtYW5pZmVzdD17bWFuaWZlc3R9XG4gICAgICAgICAgICAgIG1heGltdW1TZWxlY3Rpb25zPXttYXhpbXVtU2VsZWN0aW9uc31cbiAgICAgICAgICAgICAgbW9kZT17bW9kZX1cbiAgICAgICAgICAgICAgbmV3U2VsZWN0aW9ucz17dGVtcFNlbGVjdGlvbnN9XG4gICAgICAgICAgICAgIG5vdGhpbmdUb1NlbGVjdD17Y3VycmVudE5vdGhpbmdUb1NlbGVjdH1cbiAgICAgICAgICAgICAgb3BlbkFsZXJ0RGlhbG9nPXtvcGVuQWxlcnREaWFsb2d9XG4gICAgICAgICAgICAgIHNhdmVDb21tZW50PXtzYXZlQ29tbWVudH1cbiAgICAgICAgICAgICAgc2F2ZUVkaXRWZXJzZT17c2F2ZUVkaXRWZXJzZX1cbiAgICAgICAgICAgICAgc2F2ZVNlbGVjdGlvbj17X3NhdmVTZWxlY3Rpb259XG4gICAgICAgICAgICAgIHNlbGVjdGlvbnM9e2N1cnJlbnRTZWxlY3Rpb25zfVxuICAgICAgICAgICAgICBzZXRUb29sU2V0dGluZ3M9e3NldFRvb2xTZXR0aW5nc31cbiAgICAgICAgICAgICAgdGFncz17bmV3VGFncyB8fCBbXX1cbiAgICAgICAgICAgICAgdGFyZ2V0QmlibGU9e3RhcmdldEJpYmxlfVxuICAgICAgICAgICAgICB0YXJnZXRMYW5ndWFnZURldGFpbHM9e3RhcmdldExhbmd1YWdlRGV0YWlsc31cbiAgICAgICAgICAgICAgdG9nZ2xlQm9va21hcms9e3RvZ2dsZUJvb2ttYXJrfVxuICAgICAgICAgICAgICB0b2dnbGVOb3RoaW5nVG9TZWxlY3Q9e3RvZ2dsZU5vdGhpbmdUb1NlbGVjdH1cbiAgICAgICAgICAgICAgdG9vbHNTZXR0aW5ncz17dG9vbHNTZXR0aW5nc31cbiAgICAgICAgICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgICAgICAgICAgIHVuZmlsdGVyZWRWZXJzZVRleHQ9e3VuZmlsdGVyZWRWZXJzZVRleHR9XG4gICAgICAgICAgICAgIHZhbGlkYXRlU2VsZWN0aW9ucz17dmFsaWRhdGVTZWxlY3Rpb25zfVxuICAgICAgICAgICAgICB2ZXJzZVRleHQ9e3ZlcnNlVGV4dH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7c2hvd0RvY3VtZW50ICYmIDxUcmFuc2xhdGlvbkhlbHBzXG4gICAgICAgICAgbW9kYWxBcnRpY2xlPXthcnRpY2xlfVxuICAgICAgICAgIGFydGljbGU9e2FydGljbGV9XG4gICAgICAgICAgZXhwYW5kZWRIZWxwc0J1dHRvbkhvdmVyVGV4dD17J0NsaWNrIHRvIHNob3cgZXhwYW5kZWQgaGVscCBwYW5lJ31cbiAgICAgICAgICBtb2RhbFRpdGxlPXsndHJhbnNsYXRpb25IZWxwcyd9XG4gICAgICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgICAgICAgaXNTaG93SGVscHNFeHBhbmRlZD17c2hvd0hlbHBzTW9kYWx9XG4gICAgICAgICAgb3BlbkV4cGFuZGVkSGVscHNNb2RhbD17dG9nZ2xlSGVscHNNb2RhbH1cbiAgICAgICAgICBzaWRlYmFyVG9nZ2xlPXt0b2dnbGVIZWxwc31cbiAgICAgICAgICBpc1Nob3dIZWxwc1NpZGViYXI9e3Nob3dIZWxwc31cbiAgICAgICAgLz59XG4gICAgICAgIHtwb3BvdmVyUHJvcHM/LnBvcG92ZXJWaXNpYmlsaXR5ICYmXG4gICAgICAgICAgPFBvcG92ZXJDb250YWluZXIgey4uLnBvcG92ZXJQcm9wc30gLz5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICA6XG4gICAgICAnV2FpdGluZyBmb3IgRGF0YSdcbiAgKTtcbn07XG5cbkNoZWNrZXIucHJvcFR5cGVzID0ge1xuICBzdHlsZXM6UHJvcFR5cGVzLm9iamVjdCxcbiAgYWxpZ25lZEdsQmlibGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIGJpYmxlczogUHJvcFR5cGVzLmFycmF5LFxuICBjaGFuZ2VUYXJnZXRWZXJzZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGNoZWNraW5nRGF0YTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBjaGVja1R5cGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNvbnRleHRJZDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBnbFdvcmRzRGF0YTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBnZXRMZXhpY29uRGF0YTogUHJvcFR5cGVzLmZ1bmMsXG4gIGluaXRpYWxTZXR0aW5nczogUHJvcFR5cGVzLm9iamVjdCxcbiAgc2F2ZUNoZWNraW5nRGF0YTogUHJvcFR5cGVzLmZ1bmMsXG4gIHNhdmVTZXR0aW5nczogUHJvcFR5cGVzLmZ1bmMsXG4gIHNob3dEb2N1bWVudDogUHJvcFR5cGVzLmJvb2wsXG4gIHRhcmdldEJpYmxlOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHRhcmdldExhbmd1YWdlRGV0YWlsczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB0cmFuc2xhdGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG59O1xuZXhwb3J0IGRlZmF1bHQgQ2hlY2tlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQTBDQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxVQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxPQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSSxtQkFBQSxHQUFBRixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUssZUFBQSxHQUFBTCxPQUFBO0FBTUEsSUFBQU0sVUFBQSxHQUFBSixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQU8saUJBQUEsR0FBQVAsT0FBQTtBQVNBLElBQUFRLGNBQUEsR0FBQU4sc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFTLGlCQUFB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
|
|
1370
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcHJvcFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9sb2Rhc2giLCJfR3JvdXBNZW51Q29tcG9uZW50IiwiX3dvcmRBbGlnbmVyTGliIiwiX2RlZXBFcXVhbCIsIl90d0FydGljbGVIZWxwZXJzIiwiX0NoZWNrSW5mb0NhcmQiLCJfdG5BcnRpY2xlSGVscGVycyIsIl9TY3JpcHR1cmVQYW5lIiwiX1BvcG92ZXJDb250YWluZXIiLCJfQm9va3NPZlRoZUJpYmxlIiwiX2NvbXBsZXhTY3JpcHRGb250cyIsIl9UcmFuc2xhdGlvbkhlbHBzIiwidEhlbHBzSGVscGVycyIsIl9WZXJzZUNoZWNrIiwiX2NoZWNrSW5mb0NhcmRIZWxwZXJzIiwiZSIsIl9fZXNNb2R1bGUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiX3R5cGVvZiIsImhhcyIsImdldCIsInNldCIsIl90IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiX24iLCJGIiwicyIsImRvbmUiLCJ2YWx1ZSIsIlR5cGVFcnJvciIsImEiLCJ1IiwibmV4dCIsIl90b0NvbnN1bWFibGVBcnJheSIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJmcm9tIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiU3RyaW5nIiwiTnVtYmVyIiwiX3NsaWNlZFRvQXJyYXkiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfbm9uSXRlcmFibGVSZXN0IiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsInRlc3QiLCJsIiwibG9jYWxTdHlsZXMiLCJjb250YWluZXJEaXYiLCJkaXNwbGF5IiwiZmxleERpcmVjdGlvbiIsIndpZHRoIiwiaGVpZ2h0IiwiY2VudGVyRGl2Iiwib3ZlcmZsb3dYIiwibWFyZ2luTGVmdCIsInNjcmlwdHVyZVBhbmVEaXYiLCJmbGV4U2hyaW5rIiwicGFkZGluZ0JvdHRvbSIsInRyYW5zbGF0aW9uV29yZHMiLCJleHBvcnRzIiwidHJhbnNsYXRpb25Ob3RlcyIsIm1heGltdW1TZWxlY3Rpb25zIiwiY29uc29sZSIsImxvZyIsIkNoZWNrZXIiLCJfcmVmIiwiX3RhcmdldExhbmd1YWdlRGV0YWlsIiwiX3RhcmdldExhbmd1YWdlRGV0YWlsMiIsIl90YXJnZXRfbGFuZ3VhZ2UkYm9vayIsImFsaWduZWRHbEJpYmxlIiwiYmlibGVzXyIsImJpYmxlcyIsImNoYW5nZWRDdXJyZW50Q2hlY2siLCJjaGFuZ2VUYXJnZXRWZXJzZSIsImNoZWNraW5nRGF0YSIsImNoZWNrVHlwZSIsImNvbnRleHRJZCIsImdldExleGljb25EYXRhIiwiZ2xXb3Jkc0RhdGEiLCJpbml0aWFsU2V0dGluZ3MiLCJzYXZlQ2hlY2tpbmdEYXRhIiwic2F2ZVNldHRpbmdzIiwic2hvd0RvY3VtZW50Iiwic3R5bGVzIiwidGFyZ2V0QmlibGVfIiwidGFyZ2V0QmlibGUiLCJ0YXJnZXRMYW5ndWFnZURldGFpbHMiLCJ0cmFuc2xhdGUiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsInBhbmVTZXR0aW5ncyIsInBhbmVLZXlTZXR0aW5ncyIsInRvb2xzU2V0dGluZ3MiLCJtYW5pZmVzdCIsIl91c2VTdGF0ZTIiLCJzZXR0aW5ncyIsIl9zZXRTZXR0aW5ncyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0Iiwic2V0QmlibGVzIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJzZXRUYXJnZXRCaWJsZSIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwidGVtcENoZWNraW5nRGF0YSIsInNldFRlbXBDaGVja2luZ0RhdGEiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsImxvY2FsQ2hlY2tpbmdEYXRhIiwic2V0TG9jYWxDaGVja2luZ0RhdGEiLCJfdXNlU3RhdGUxIiwiYWxpZ25lZEdMVGV4dCIsImFydGljbGUiLCJjdXJyZW50Q2hlY2siLCJjdXJyZW50Q2hlY2tpbmdEYXRhIiwiZ3JvdXBUaXRsZSIsImdyb3VwUGhyYXNlIiwiZ3JvdXBzRGF0YSIsImdyb3Vwc0luZGV4IiwiaXNDb21tZW50Q2hhbmdlZCIsImlzVmVyc2VDaGFuZ2VkIiwibW9kZSIsIm5ld1ZlcnNlVGV4dCIsInBvcG92ZXJQcm9wcyIsInBvcG92ZXJWaXNpYmlsaXR5Iiwic2hvd0hlbHBzTW9kYWwiLCJzaG93SGVscHMiLCJuZXdUYWdzIiwidmVyc2VUZXh0IiwiX3VzZVN0YXRlMTAiLCJzdGF0ZSIsIl9zZXRTdGF0ZSIsInNldFN0YXRlIiwibmV3U3RhdGUiLCJwcmV2U3RhdGUiLCJnZXRDdXJyZW50VmFsdWVGb3IiLCJrZXkiLCJnZXRUZW1wVmFsdWVGb3IiLCJjdXJyZW50U2VsZWN0aW9ucyIsInRlbXBTZWxlY3Rpb25zIiwidGVtcE5vdGhpbmdUb1NlbGVjdCIsImN1cnJlbnROb3RoaW5nVG9TZWxlY3QiLCJncm91cHNEYXRhTG9hZGVkIiwidXBkYXRlTW9kZUZvclNlbGVjdGlvbnMiLCJuZXdTZWxlY3Rpb25zIiwibm90aGluZ1RvU2VsZWN0Iiwibm9TZWxlY3Rpb25zIiwibmV3TW9kZSIsInVzZUVmZmVjdCIsImhhdmVEYXRhIiwiZ3JvdXBzRGF0YUluaXRpYWxpemVkIiwiZmxhdHRlbmVkR3JvdXBEYXRhIiwiZ3JvdXBEYXRhSGVscGVycyIsImZsYXR0ZW5Hcm91cERhdGEiLCJwYXJzZVRuVG9JbmRleCIsInBhcnNlVHdUb0luZGV4IiwiY2hlY2siLCJmaW5kQ2hlY2siLCJtb2RpZmllZCIsInNlbGVjdGlvbnNIZWxwZXJzIiwidmFsaWRhdGVTZWxlY3Rpb25zRm9yQWxsQ2hlY2tzIiwiaW52YWxpZGF0ZWQiLCJjb25jYXQiLCJfc2F2ZUNoZWNraW5nRGF0YSIsInVwZGF0ZUNvbnRleHQiLCJzZWxlY3Rpb25zIiwibmV3Q2hlY2siLCJncm91cHNJbmRleF8iLCJ1bmRlZmluZWQiLCJyZWZlcmVuY2UiLCJ2ZXJzZUhlbHBlcnMiLCJnZXRWZXJzZVRleHRGcm9tQmlibGUiLCJnZXRBbGlnbmVkR0xUZXh0IiwiZ2V0VGl0bGVGcm9tSW5kZXgiLCJncm91cElkIiwib2NjdXJyZW5jZU5vdGUiLCJnZXRQaHJhc2VGcm9tVHciLCJncm91cERhdGEiLCJhcnRpY2xlcyIsIl9hcnRpY2xlIiwiYXJ0aWNsZUlkIiwiZ3JvdXBzSWRzIiwiX2kiLCJfZ3JvdXBzSWRzIiwiX2dyb3VwSWQiLCJncm91cCIsImN1cnJlbnRBcnRpY2xlTWFya2Rvd24iLCJjb252ZXJ0TWFya2Rvd25MaW5rcyIsImdhdGV3YXlMYW5ndWFnZUlkIiwiY29tbWVudFRleHQiLCJib29rSWQiLCJib29rIiwiaWQiLCJib29rTmFtZSIsImJvb2tEZXRhaWxzIiwidGFyZ2V0TGFuZ3VhZ2VGb250IiwicHJvamVjdEZvbnQiLCJjdXJyZW50Q29udGV4dElkIiwic2V0VG9vbFNldHRpbmdzIiwiTkFNRVNQQUNFIiwiZmllbGROYW1lIiwiZmllbGRWYWx1ZSIsIl90b29sc1NldHRpbmdzIiwiY29tcG9uZW50U2V0dGluZ3MiLCJzZXRTZXR0aW5ncyIsIl9zYXZlU2V0dGluZ3MiLCJfc2V0dGluZ3MiLCJuZXdTZXR0aW5ncyIsIl9wYW5lU2V0dGluZ3MiLCJfcGFuZVNldHRpbmciLCJfcGFuZUtleVNldHRpbmdzIiwiX2kyIiwiX2tleXMiLCJkb1NhdmUiLCJzZXRUb29sU2V0dGluZ3NTY3JpcHR1cmUiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImxhbmd1YWdlSWQiLCJiaWJsZUlkIiwib3duZXIiLCJlcnIiLCJhZGRPYmplY3RQcm9wZXJ0eVRvTWFuaWZlc3QiLCJfbWFuaWZlc3QiLCJhcHBTZXR0aW5ncyIsIl9hcHBTZXR0aW5ncyIsIm9wZW5BbGVydERpYWxvZyIsImNoZWNrSWZWZXJzZUNoYW5nZWQiLCJfbmV3VmVyc2VUZXh0IiwidGFyZ2V0IiwiX2lzVmVyc2VDaGFuZ2VkIiwiaGFuZGxlRWRpdFZlcnNlIiwiY2FuY2VsRWRpdFZlcnNlIiwic2F2ZUVkaXRWZXJzZSIsIl9jdXJyZW50Q29udGV4dElkJHJlZiIsImNoYXB0ZXIiLCJ2ZXJzZSIsInZlcnNlUmVmIiwidmVyc2VTcGFuIiwiYmVmb3JlIiwiZWRpdFRhcmdldFZlcnNlIiwiaGFuZGxlR29Ub05leHQiLCJuZXh0Q2hlY2siLCJmaW5kTmV4dENoZWNrIiwiY2hhbmdlQ3VycmVudENoZWNrXyIsImhhbmRsZUdvVG9QcmV2aW91cyIsInByZXZpb3VzQ2hlY2siLCJmaW5kUHJldmlvdXNDaGVjayIsImhhbmRsZVRhZ3NDaGVja2JveCIsInRhZyIsImN1cnJlbnRUYWdzIiwidGFnSW5kZXgiLCJpbmRleE9mIiwiX25ld1RhZ3MiLCJjb3B5Iiwic3BsaWNlIiwidmFsaWRhdGVTZWxlY3Rpb25zIiwidmVyc2VUZXh0XyIsInNlbGVjdGlvbnNfIiwidmFsaWRhdGVWZXJzZVNlbGVjdGlvbnMiLCJ1bmZpbHRlcmVkVmVyc2VUZXh0IiwidXNlTWVtbyIsInVuZmlsdGVyZWRWZXJzZVRleHRfIiwiX3RhcmdldEJpYmxlJGNoYXB0ZXIiLCJ2ZXJzZURhdGEiLCJVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIiwiZ2V0VXNmbUZvclZlcnNlQ29udGVudCIsInNldFRlbXBDaGVja2luZ0l0ZW0iLCJuZXdDaGVja2luZ0RhdGEiLCJjaGFuZ2VTZWxlY3Rpb25zSW5Mb2NhbFN0YXRlIiwidG9nZ2xlTm90aGluZ1RvU2VsZWN0Iiwic2VsZWN0IiwibmV3Q29udGV4dCIsIm5vQ2hlY2siLCJuZXdDb250ZXh0SWQiLCJzZWxlY3Rpb25zVW5jaGFuZ2VkIiwiaXNFcXVhbCIsImRpcmVjdGlvbiIsImJvb2ttYXJrRW5hYmxlZCIsImlzVmVyc2VFZGl0ZWQiLCJpc1ZlcnNlSW52YWxpZGF0ZWQiLCJfc2F2ZVNlbGVjdGlvbiIsIl9jbG9uZURhdGFGb3JTYXZpbmciLCJjbG9uZURhdGFGb3JTYXZpbmciLCJjaGVja0luR3JvdXBzRGF0YSIsIl9jdXJyZW50Q2hlY2siLCJfbmV3Q2hlY2tpbmdEYXRhIiwiZGVsZXRlVGVtcENoZWNraW5nRGF0YSIsInVwZGF0ZVZhbHVlc0luQ2hlY2tEYXRhIiwiX2dyb3Vwc0RhdGEiLCJfIiwiY2xvbmVEZWVwIiwiY2F0ZWdvcnkiLCJuZXdDaGVja0RhdGEiLCJfaTMiLCJfT2JqZWN0JGtleXMiLCJuZXdDaGVja2luZ1ZhbHVlIiwiX3NhdmVEYXRhIiwibmV3RGF0YSIsIl9jbG9uZURhdGFGb3JTYXZpbmcyIiwiX2k0IiwiX09iamVjdCRrZXlzMiIsImNoYW5nZWREYXRhIiwiX2k1IiwiX09iamVjdCRrZXlzMyIsIl90ZW1wQ2hlY2tpbmdEYXRhIiwiY2FuY2VsU2VsZWN0aW9uIiwiY2xlYXJTZWxlY3Rpb24iLCJ0b2dnbGVCb29rbWFyayIsInJlbWluZGVycyIsImNoYW5nZU1vZGUiLCJjaGVja0lmQ29tbWVudENoYW5nZWQiLCJuZXdjb21tZW50Iiwib2xkY29tbWVudCIsImNhbmNlbENvbW1lbnQiLCJzYXZlQ29tbWVudCIsIm5ld0NvbW1lbnQiLCJjb21tZW50cyIsImhhbmRsZUNvbW1lbnQiLCJwcmV2ZW50RGVmYXVsdCIsInJlYWR5VG9EaXNwbGF5Q2hlY2tlciIsImdldExleGljb25EYXRhXyIsImxleGljb25JZCIsImVudHJ5SWQiLCJsZXhpY29uRGF0YSIsIm9uQ2xvc2VQb3BvdmVyIiwic2hvd1BvcG92ZXIiLCJ0aXRsZSIsImJvZHlUZXh0IiwicG9zaXRpb25Db29yZCIsInRvZ2dsZUhlbHBzTW9kYWwiLCJfc2hvd0hlbHBzTW9kYWwiLCJ0b2dnbGVIZWxwcyIsIl9zaG93SGVscHMiLCJzYXZlQmlibGVUb0tleSIsImtleUdyb3VwIiwib2xkVmVyc2VUZXh0IiwiX2JpYmxlcyIsIl90YXJnZXRCaWJsZSIsInRhcmdldEJvb2siLCJ0YXJnZXRDaGFwdGVyIiwiY29udmVydFZlcnNlRGF0YVRvVVNGTSIsImN1cnJlbnRDaGFwdGVyRGF0YSIsImN1cnJlbnRWZXJzZURhdGEiLCJfQWxpZ25tZW50SGVscGVycyR1cGQiLCJBbGlnbm1lbnRIZWxwZXJzIiwidXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UiLCJ0YXJnZXRWZXJzZU9iamVjdHMiLCJ2ZXJzZU9iamVjdHMiLCJ1cGRhdGVTZXR0aW5ncyIsInJlbW92ZVVzZm1NYXJrZXJzIiwidmVyc2VFZGl0cyIsInZhbGlkYXRlQWxsU2VsZWN0aW9uc0ZvclZlcnNlIiwiX2N1cnJlbnRDaGVjayRjb250ZXh0IiwiX2NoZWNrJGNvbnRleHRJZCIsImN1cnJlbnRDaGVja0lkIiwiY2hlY2tJZCIsIm5ld0JpYmxlcyIsIl90YXJnZXRCaWJsZSRtYW5pZmVzdCIsIl90YXJnZXRCaWJsZSRtYW5pZmVzdDIiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiYmlibGUiLCJOVF9PUklHX0xBTkciLCJPVF9PUklHX0xBTkciLCJpbml0aWFsUGFuZVNldHRpbmdzIiwibGFuZ0tleSIsInBhbmUiLCJsYW5ndWFnZV9uYW1lIiwiZHVibGluX2NvcmUiLCJsYW5ndWFnZSIsIl9nZXRTY3JpcHR1cmVGcm9tUmVmZXJlbmNlIiwibGFuZyIsImdldFNjcmlwdHVyZUZyb21SZWZlcmVuY2UiLCJ0YXJnZXRfbGFuZ3VhZ2UiLCJwcm9qZWN0IiwiZXhwYW5kZWRTY3JpcHR1cmVQYW5lVGl0bGUiLCJzdHlsZVByb3BzIiwiX2NoZWNrZXJTdHlsZXMiLCJjcmVhdGVFbGVtZW50Iiwic3R5bGUiLCJjaGFuZ2VDdXJyZW50Q29udGV4dElkIiwiY29tcGxleFNjcmlwdEZvbnRzIiwiY3VycmVudFBhbmVTZXR0aW5ncyIsImVkaXRWZXJzZVJlZiIsImdldEF2YWlsYWJsZVNjcmlwdHVyZVBhbmVTZWxlY3Rpb25zIiwibWFrZVN1cmVCaWJsZXNMb2FkZWRGb3JUb29sIiwicHJvamVjdERldGFpbHNSZWR1Y2VyIiwib25FeHBhbmRlZFNjcmlwdHVyZVBhbmVTaG93Iiwib25MaW5rQ2xpY2siLCJvblNlZU1vcmVDbGljayIsInBocmFzZSIsInNlZU1vcmVMYWJlbCIsInNob3dTZWVNb3JlQnV0dG9uIiwiZGlhbG9nTW9kYWxWaXNpYmlsaXR5IiwiaGFuZGxlT3BlbkRpYWxvZyIsImhhbmRsZUNsb3NlRGlhbG9nIiwiaGFuZGxlU2tpcCIsImxvY2FsTm90aGluZ1RvU2VsZWN0Iiwic2F2ZVNlbGVjdGlvbiIsInRhZ3MiLCJtb2RhbEFydGljbGUiLCJleHBhbmRlZEhlbHBzQnV0dG9uSG92ZXJUZXh0IiwibW9kYWxUaXRsZSIsImlzU2hvd0hlbHBzRXhwYW5kZWQiLCJvcGVuRXhwYW5kZWRIZWxwc01vZGFsIiwic2lkZWJhclRvZ2dsZSIsImlzU2hvd0hlbHBzU2lkZWJhciIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsIm9iamVjdCIsImFycmF5IiwiZnVuYyIsImlzUmVxdWlyZWQiLCJzdHJpbmciLCJib29sIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9DaGVja2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlxuLyoqXG4gKiBAZmlsZSBDaGVja2VyLmpzXG4gKlxuICogQHN5bm9wc2lzXG4gKiBUaGlzIGlzIHRoZSBtYWluIGNoZWNraW5nIGNvbXBvbmVudCB0aGF0IHByb3ZpZGVzIGFuIGludGVncmF0ZWQgaW50ZXJmYWNlIGZvciBCaWJsZSB0cmFuc2xhdGlvbiBjaGVja2luZy5cbiAqIEl0IHN1cHBvcnRzIGJvdGggVHJhbnNsYXRpb24gTm90ZXMgKFROKSBhbmQgVHJhbnNsYXRpb24gV29yZHMgKFRXKSBjaGVja2luZyB3b3JrZmxvd3MuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBUaGUgQ2hlY2tlciBjb21wb25lbnQgaXMgYSBjb21wcmVoZW5zaXZlIHRvb2wgZm9yIG1hbmFnaW5nIGFuZCBwcmVzZW50aW5nIEJpYmxlIGNoZWNraW5nIGRhdGEgYW5kIHRyYW5zbGF0aW9ucy5cbiAqIEl0IGhhbmRsZXM6XG4gKiAtIExvYWRpbmcgYW5kIGRpc3BsYXlpbmcgY2hlY2tpbmcgZGF0YSAodHJhbnNsYXRpb24gbm90ZXMgb3IgdHJhbnNsYXRpb24gd29yZHMpXG4gKiAtIE1hbmFnaW5nIHVzZXIgc2VsZWN0aW9ucyBhbmQgYW5ub3RhdGlvbnMgaW4gdmVyc2VzXG4gKiAtIFByb3ZpZGluZyBtdWx0aS1wYW5lIFNjcmlwdHVyZSB2aWV3aW5nIHdpdGggdmFyaW91cyBCaWJsZSByZXNvdXJjZXNcbiAqIC0gSGFuZGxpbmcgdmVyc2UgZWRpdGluZyBhbmQgdmFsaWRhdGlvblxuICogLSBNYW5hZ2luZyBjb21tZW50cywgYm9va21hcmtzLCBhbmQgdGFncyBmb3IgY2hlY2tzXG4gKiAtIE5hdmlnYXRpbmcgYmV0d2VlbiBjaGVja3MgKG5leHQvcHJldmlvdXMpXG4gKiAtIERpc3BsYXlpbmcgdHJhbnNsYXRpb24gaGVscHMgaW4gYW4gaW50ZWdyYXRlZCBzaWRlYmFyXG4gKiAtIFBlcnNpc3RpbmcgdXNlciBzZXR0aW5ncyBhbmQgY2hlY2tpbmcgcHJvZ3Jlc3NcbiAqXG4gKiBUaGUgY29tcG9uZW50IG1haW50YWlucyBjb21wbGV4IHN0YXRlIGluY2x1ZGluZzpcbiAqIC0gQ3VycmVudCBjaGVjayBkYXRhIGFuZCBjb250ZXh0XG4gKiAtIFVzZXIgc2VsZWN0aW9ucyBhbmQgdGVtcG9yYXJ5IGNoYW5nZXNcbiAqIC0gUGFuZSBzZXR0aW5ncyBmb3IgU2NyaXB0dXJlIGRpc3BsYXlcbiAqIC0gVG9vbC1zcGVjaWZpYyBzZXR0aW5nc1xuICogLSBVSSBzdGF0ZSAobW9kZXMsIG1vZGFscywgcG9wb3ZlcnMpXG4gKlxuICogQHJlcXVpcmVtZW50c1xuICogLSBSZWFjdCAxOC4zLjErXG4gKiAtIHdvcmQtYWxpZ25lci1saWIgZm9yIHZlcnNlIGFuZCBhbGlnbm1lbnQgaGVscGVyc1xuICogLSBkZWVwLWVxdWFsIGZvciBvYmplY3QgY29tcGFyaXNvblxuICogLSBsb2Rhc2ggZm9yIGRlZXAgY2xvbmluZ1xuICogLSBNYXRlcmlhbC1VSSBjb21wb25lbnRzIGZvciBVSSBlbGVtZW50c1xuICpcbiAqIEBkZXBlbmRlbmNpZXNcbiAqIC0gR3JvdXBNZW51Q29tcG9uZW50OiBOYXZpZ2F0aW9uIG1lbnUgZm9yIGNoZWNrc1xuICogLSBDaGVja0luZm9DYXJkOiBEaXNwbGF5cyBjaGVjayB0aXRsZSBhbmQgcGhyYXNlXG4gKiAtIFNjcmlwdHVyZVBhbmU6IE11bHRpLXBhbmUgU2NyaXB0dXJlIHZpZXdlclxuICogLSBUcmFuc2xhdGlvbkhlbHBzOiBTaWRlYmFyIGZvciB0cmFuc2xhdGlvbiBoZWxwIGFydGljbGVzXG4gKiAtIFZlcnNlQ2hlY2s6IE1haW4gY2hlY2tpbmcgaW50ZXJmYWNlIGZvciB2ZXJzZXNcbiAqIC0gUG9wb3ZlckNvbnRhaW5lcjogRGlzcGxheXMgY29udGV4dHVhbCBpbmZvcm1hdGlvblxuICovXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJ1xuaW1wb3J0IEdyb3VwTWVudUNvbXBvbmVudCBmcm9tICcuL0dyb3VwTWVudUNvbXBvbmVudCdcbmltcG9ydCB7XG4gIGdyb3VwRGF0YUhlbHBlcnMsXG4gIHNlbGVjdGlvbnNIZWxwZXJzLFxuICBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLFxuICB2ZXJzZUhlbHBlcnMsXG4gIEFsaWdubWVudEhlbHBlcnNcbn0gZnJvbSAnd29yZC1hbGlnbmVyLWxpYidcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2RlZXAtZXF1YWwnXG5pbXBvcnQge1xuICBmaW5kQ2hlY2ssXG4gIGZpbmROZXh0Q2hlY2ssXG4gIGZpbmRQcmV2aW91c0NoZWNrLFxuICBnZXRBbGlnbmVkR0xUZXh0LFxuICBnZXRQaHJhc2VGcm9tVHcsXG4gIGdldFRpdGxlRnJvbUluZGV4LFxuICBwYXJzZVR3VG9JbmRleFxufSBmcm9tICcuLi9oZWxwZXJzL3RyYW5zbGF0aW9uSGVscHMvdHdBcnRpY2xlSGVscGVycydcbmltcG9ydCBDaGVja0luZm9DYXJkIGZyb20gJy4uL3RjX3VpX3Rvb2xraXQvQ2hlY2tJbmZvQ2FyZCdcbmltcG9ydCB7IHBhcnNlVG5Ub0luZGV4IH0gZnJvbSAnLi4vaGVscGVycy90cmFuc2xhdGlvbkhlbHBzL3RuQXJ0aWNsZUhlbHBlcnMnXG5pbXBvcnQgU2NyaXB0dXJlUGFuZSBmcm9tICcuLi90Y191aV90b29sa2l0L1NjcmlwdHVyZVBhbmUnXG5pbXBvcnQgUG9wb3ZlckNvbnRhaW5lciBmcm9tICcuLi9jb250YWluZXJzL1BvcG92ZXJDb250YWluZXInXG5pbXBvcnQgeyBOVF9PUklHX0xBTkcsIE9UX09SSUdfTEFORyB9IGZyb20gJy4uL2NvbW1vbi9Cb29rc09mVGhlQmlibGUnXG5pbXBvcnQgY29tcGxleFNjcmlwdEZvbnRzIGZyb20gJy4uL2NvbW1vbi9jb21wbGV4U2NyaXB0Rm9udHMnXG5pbXBvcnQgVHJhbnNsYXRpb25IZWxwcyBmcm9tICcuLi90Y191aV90b29sa2l0L1RyYW5zbGF0aW9uSGVscHMnXG5pbXBvcnQgKiBhcyB0SGVscHNIZWxwZXJzIGZyb20gJy4uL2hlbHBlcnMvdEhlbHBzSGVscGVycydcbmltcG9ydCBWZXJzZUNoZWNrIGZyb20gJy4uL3RjX3VpX3Rvb2xraXQvVmVyc2VDaGVjaydcbmltcG9ydCB7IGdldFNjcmlwdHVyZUZyb21SZWZlcmVuY2UgfSBmcm9tICcuLi9oZWxwZXJzL2NoZWNrSW5mb0NhcmRIZWxwZXJzJ1xuXG5jb25zdCBsb2NhbFN0eWxlcyA9IHtcbiAgY29udGFpbmVyRGl2OntcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ3JvdycsXG4gICAgd2lkdGg6ICc5N3Z3JyxcbiAgICBoZWlnaHQ6ICc2NXZ3JyxcbiAgfSxcbiAgY2VudGVyRGl2OiB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIHdpZHRoOiAnODUlJyxcbiAgICBvdmVyZmxvd1g6ICdhdXRvJyxcbiAgICBtYXJnaW5MZWZ0OiAnMTBweCcsXG4gIH0sXG4gIHNjcmlwdHVyZVBhbmVEaXY6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleFNocmluazogJzAnLFxuICAgIGhlaWdodDogJzI1MHB4JyxcbiAgICBwYWRkaW5nQm90dG9tOiAnMjBweCcsXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNsYXRpb25Xb3JkcyA9ICd0cmFuc2xhdGlvbldvcmRzJ1xuZXhwb3J0IGNvbnN0IHRyYW5zbGF0aW9uTm90ZXMgPSAndHJhbnNsYXRpb25Ob3RlcydcbmNvbnN0IG1heGltdW1TZWxlY3Rpb25zID0gMTBcblxuY29uc29sZS5sb2coJ0NoZWNrZXIuanMgLSBzdGFydHVwJylcbmNvbnN0IG5hbWUgPSAnQ2hlY2tlcidcblxuLyoqXG4gKiBAbmFtZXNwYWNlIENoZWNrZXJcbiAqIFRoZSBDaGVja2VyIGNvbXBvbmVudCBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgYW5kIHByZXNlbnRpbmcgQmlibGUgY2hlY2tpbmcgZGF0YSBhbmQgdHJhbnNsYXRpb25zLlxuICogSXQgaGFuZGxlcyBzdGF0ZSB1cGRhdGVzLCBzZXR0aW5ncyBtYW5hZ2VtZW50LCBhbmQgZW5zdXJlcyB0aGUgbmVjZXNzYXJ5IGRhdGEgaXMgbG9hZGVkIGFuZCBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmFtZXRlcnMgLSBBbiBvYmplY3Qgd2l0aCBpbml0aWFsaXphdGlvbiBwYXJhbWV0ZXJzIGZvciB0aGUgQ2hlY2tlciBjb21wb25lbnQuXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1ldGVycy5hbGlnbmVkR2xCaWJsZSAtIFRoZSBhbGlnbmVkIEdhdGV3YXkgTGFuZ3VhZ2UgQmlibGUgZGF0YSB1c2VkIGZvciB0cmFuc2xhdGlvbnMuXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1ldGVycy5iaWJsZXMgLSBCaWJsZSBkYXRhIGZvciB2YXJpb3VzIGxhbmd1YWdlcy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHBhcmFtZXRlcnMuY2hhbmdlZEN1cnJlbnRDaGVjayAtIGNhbGxiYWNrIHRvIG5vdGlmeSBvZiBjaGFuZ2VzIGluIGNvbnRleHQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwYXJhbWV0ZXJzLmNoYW5nZVRhcmdldFZlcnNlIC0gQSBmdW5jdGlvbiB0byB1cGRhdGUgdGhlIGN1cnJlbnQgdmVyc2UgYmVpbmcgY2hlY2tlZC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbWV0ZXJzLmNoZWNraW5nRGF0YSAtIERhdGEgcmVsYXRlZCB0byBjaGVja3MgKGUuZy4sIHRyYW5zbGF0aW9uIG5vdGVzIG9yIHRyYW5zbGF0aW9uIHdvcmRzKS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXJhbWV0ZXJzLmNoZWNrVHlwZSAtIFRoZSB0eXBlIG9mIGNoZWNrIGJlaW5nIHBlcmZvcm1lZCAoZS5nLiwgdHJhbnNsYXRpb24gbm90ZXMsIHRyYW5zbGF0aW9uIHdvcmRzKS5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbWV0ZXJzLmNvbnRleHRJZCAtIE9iamVjdCBjb250YWluaW5nIG1ldGFkYXRhIGFib3V0IHRoZSBjdXJyZW50IGdyb3VwL3ZlcnNlIGJlaW5nIHdvcmtlZCBvbi5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHBhcmFtZXRlcnMuZ2V0TGV4aWNvbkRhdGEgLSBGdW5jdGlvbiB0byByZXRyaWV2ZSBsZXhpY29uIGRhdGEuXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1ldGVycy5nbFdvcmRzRGF0YSAtIERhdGEgcmVsYXRlZCB0byBHYXRld2F5IExhbmd1YWdlIHdvcmRzIGFuZCBhbGlnbm1lbnQgaW5mb3JtYXRpb24uXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1ldGVycy5pbml0aWFsU2V0dGluZ3MgLSBUaGUgaW5pdGlhbCBjb25maWd1cmF0aW9uIHZhbHVlcyBmb3IgdGhlIENoZWNrZXIgY29tcG9uZW50LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcGFyYW1ldGVycy5zYXZlQ2hlY2tpbmdEYXRhIC0gRnVuY3Rpb24gdG8gc2F2ZSB0aGUgbW9kaWZpZWQgY2hlY2tpbmcgZGF0YS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHBhcmFtZXRlcnMuc2F2ZVNldHRpbmdzIC0gRnVuY3Rpb24gdG8gcGVyc2lzdCB1c2VyJ3MgY29tcG9uZW50IHNldHRpbmdzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcGFyYW1ldGVycy5zaG93RG9jdW1lbnQgLSBGdW5jdGlvbiB0byBkaXNwbGF5IGEgZG9jdW1lbnQgaW4gdGhlIGludGVyZmFjZS5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbWV0ZXJzLnN0eWxlcyAtIFN0eWxpbmcgaW5mb3JtYXRpb24gdG8gY3VzdG9taXplIHRoZSBjb21wb25lbnQncyBhcHBlYXJhbmNlLlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmFtZXRlcnMudGFyZ2V0QmlibGUgLSBUaGUgdGFyZ2V0IEJpYmxlIGRhdGEgZm9yIHRoZSB3b3JraW5nIGxhbmd1YWdlLlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmFtZXRlcnMudGFyZ2V0TGFuZ3VhZ2VEZXRhaWxzIC0gTWV0YWRhdGEgYWJvdXQgdGhlIHRhcmdldCBsYW5ndWFnZSwgaW5jbHVkaW5nIGJvb2sgYW5kIGxhbmd1YWdlLXNwZWNpZmljIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwYXJhbWV0ZXJzLnRyYW5zbGF0ZSAtIEEgZnVuY3Rpb24gdXNlZCBmb3Igc3RyaW5nIHRyYW5zbGF0aW9ucyBpbiB0aGUgVUkuXG4gKi9cbmNvbnN0IENoZWNrZXIgPSAoe1xuICBhbGlnbmVkR2xCaWJsZSxcbiAgYmlibGVzOiBiaWJsZXNfLFxuICBjaGFuZ2VkQ3VycmVudENoZWNrLFxuICBjaGFuZ2VUYXJnZXRWZXJzZSxcbiAgY2hlY2tpbmdEYXRhLFxuICBjaGVja1R5cGUsXG4gIGNvbnRleHRJZCxcbiAgZ2V0TGV4aWNvbkRhdGEsXG4gIGdsV29yZHNEYXRhLFxuICBpbml0aWFsU2V0dGluZ3MsXG4gIHNhdmVDaGVja2luZ0RhdGEsXG4gIHNhdmVTZXR0aW5ncyxcbiAgc2hvd0RvY3VtZW50LFxuICBzdHlsZXMsXG4gIHRhcmdldEJpYmxlOiB0YXJnZXRCaWJsZV8sXG4gIHRhcmdldExhbmd1YWdlRGV0YWlscyxcbiAgdHJhbnNsYXRlLFxufSkgPT4ge1xuICAvLyBNYWluIHNldHRpbmdzIHN0YXRlIC0gaW5jbHVkZXMgcGFuZSBjb25maWd1cmF0aW9uLCB0b29sIHNldHRpbmdzLCBhbmQgbWFuaWZlc3QgZGF0YVxuICBjb25zdCBbc2V0dGluZ3MsIF9zZXRTZXR0aW5nc10gPSB1c2VTdGF0ZSh7XG4gICAgcGFuZVNldHRpbmdzOiBbXSxcbiAgICBwYW5lS2V5U2V0dGluZ3M6IHt9LFxuICAgIHRvb2xzU2V0dGluZ3M6IHt9LFxuICAgIG1hbmlmZXN0OiB7fVxuICB9KVxuICBjb25zdCB7XG4gICAgcGFuZVNldHRpbmdzLFxuICAgIHBhbmVLZXlTZXR0aW5ncyxcbiAgICB0b29sc1NldHRpbmdzLFxuICAgIG1hbmlmZXN0XG4gIH0gPSBzZXR0aW5nc1xuXG4gIC8vIEJpYmxlIGRhdGEgb3JnYW5pemVkIGJ5IGxhbmd1YWdlIGFuZCBJRFxuICBjb25zdCBbYmlibGVzLCBzZXRCaWJsZXNdID0gdXNlU3RhdGUoeyB9KVxuXG4gIC8vIEN1cnJlbnQgdGFyZ2V0IEJpYmxlIGJlaW5nIGNoZWNrZWRcbiAgY29uc3QgW3RhcmdldEJpYmxlLCBzZXRUYXJnZXRCaWJsZV0gPSB1c2VTdGF0ZSh0YXJnZXRCaWJsZV8pXG5cbiAgLy8gVGVtcG9yYXJ5IGNoZWNraW5nIGRhdGEgZm9yIHVuc2F2ZWQgY2hhbmdlc1xuICBjb25zdCBbdGVtcENoZWNraW5nRGF0YSwgc2V0VGVtcENoZWNraW5nRGF0YV0gPSB1c2VTdGF0ZShudWxsKVxuXG4gIC8vIExvY2FsIGNoZWNraW5nIGRhdGEgZm9yIGN1cnJlbnQgc2Vzc2lvblxuICBjb25zdCBbbG9jYWxDaGVja2luZ0RhdGEsIHNldExvY2FsQ2hlY2tpbmdEYXRhXSA9IHVzZVN0YXRlKG51bGwpXG5cbiAgLy8gTWFpbiBjb21wb25lbnQgc3RhdGVcbiAgY29uc3QgW3N0YXRlLCBfc2V0U3RhdGVdID0gdXNlU3RhdGUoe1xuICAgIGFsaWduZWRHTFRleHQ6ICcnLCAvLyBHYXRld2F5IExhbmd1YWdlIHRleHQgYWxpZ25lZCB0byBvcmlnaW5hbFxuICAgIGFydGljbGU6IG51bGwsIC8vIEN1cnJlbnQgdHJhbnNsYXRpb24gaGVscCBhcnRpY2xlXG4gICAgY3VycmVudENoZWNrOiBudWxsLCAvLyBDdXJyZW50IGNoZWNrIGJlaW5nIHdvcmtlZCBvblxuICAgIGN1cnJlbnRDaGVja2luZ0RhdGE6IG51bGwsIC8vIEFsbCBjaGVja2luZyBkYXRhIGZvciBjdXJyZW50IGJvb2tcbiAgICBncm91cFRpdGxlOiAnJywgLy8gVGl0bGUgb2YgY3VycmVudCBjaGVjayBncm91cFxuICAgIGdyb3VwUGhyYXNlOiAnJywgLy8gUGhyYXNlIG9yIG9jY3VycmVuY2Ugbm90ZSBmb3IgY3VycmVudCBjaGVja1xuICAgIGdyb3Vwc0RhdGE6IG51bGwsIC8vIEZsYXR0ZW5lZCBncm91cCBkYXRhIGZvciBhbGwgY2hlY2tzXG4gICAgZ3JvdXBzSW5kZXg6IG51bGwsIC8vIEluZGV4IG9mIGFsbCBjaGVjayBncm91cHNcbiAgICBpc0NvbW1lbnRDaGFuZ2VkOiBmYWxzZSwgLy8gV2hldGhlciBjb21tZW50IGhhcyB1bnNhdmVkIGNoYW5nZXNcbiAgICBpc1ZlcnNlQ2hhbmdlZDogZmFsc2UsIC8vIFdoZXRoZXIgdmVyc2UgaGFzIHVuc2F2ZWQgY2hhbmdlc1xuICAgIG1vZGU6ICdkZWZhdWx0JywgLy8gQ3VycmVudCBVSSBtb2RlIChkZWZhdWx0LCBzZWxlY3QsIGVkaXQsIGNvbW1lbnQpXG4gICAgbmV3VmVyc2VUZXh0OiBudWxsLCAvLyBOZXcgdmVyc2UgdGV4dCBkdXJpbmcgZWRpdGluZ1xuICAgIHBvcG92ZXJQcm9wczoge1xuICAgICAgcG9wb3ZlclZpc2liaWxpdHk6IGZhbHNlXG4gICAgfSxcbiAgICBzaG93SGVscHNNb2RhbDogZmFsc2UsIC8vIFdoZXRoZXIgaGVscHMgbW9kYWwgaXMgc2hvd25cbiAgICBzaG93SGVscHM6IHRydWUsIC8vIFdoZXRoZXIgaGVscHMgc2lkZWJhciBpcyBzaG93blxuICAgIG5ld1RhZ3M6IG51bGwsIC8vIE5ldyB0YWdzIGJlaW5nIGFkZGVkXG4gICAgdmVyc2VUZXh0OiAnJywgLy8gQ3VycmVudCB2ZXJzZSB0ZXh0XG4gIH0pXG5cbiAgY29uc3Qge1xuICAgIGFsaWduZWRHTFRleHQsXG4gICAgYXJ0aWNsZSxcbiAgICBjdXJyZW50Q2hlY2ssXG4gICAgY3VycmVudENoZWNraW5nRGF0YSxcbiAgICBncm91cFRpdGxlLFxuICAgIGdyb3VwUGhyYXNlLFxuICAgIGdyb3Vwc0RhdGEsXG4gICAgZ3JvdXBzSW5kZXgsXG4gICAgaXNDb21tZW50Q2hhbmdlZCxcbiAgICBpc1ZlcnNlQ2hhbmdlZCxcbiAgICBtb2RlLFxuICAgIG5ld1ZlcnNlVGV4dCxcbiAgICBwb3BvdmVyUHJvcHMsXG4gICAgc2hvd0hlbHBzTW9kYWwsXG4gICAgc2hvd0hlbHBzLFxuICAgIG5ld1RhZ3MsXG4gICAgdmVyc2VUZXh0LFxuICB9ID0gc3RhdGVcblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgc3RhdGUgb2JqZWN0IHdpdGggbmV3IHZhbHVlc1xuICAgKiBAcGFyYW0ge29iamVjdH0gbmV3U3RhdGUgLSBPYmplY3QgY29udGFpbmluZyBzdGF0ZSBwcm9wZXJ0aWVzIHRvIHVwZGF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gc2V0U3RhdGUobmV3U3RhdGUpIHtcbiAgICBfc2V0U3RhdGUocHJldlN0YXRlID0+ICh7IC4uLnByZXZTdGF0ZSwgLi4ubmV3U3RhdGUgfSkpXG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY3VycmVudCBzYXZlZCB2YWx1ZSBmb3IgYSBjaGVjayBwcm9wZXJ0eVxuICAgKiBGYWxscyBiYWNrIHRvIGxvY2FsIGNoZWNraW5nIGRhdGEgaWYgYXZhaWxhYmxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBQcm9wZXJ0eSBuYW1lXG4gICAqIEByZXR1cm5zIHsqfSBDdXJyZW50IHZhbHVlXG4gICAqL1xuICBmdW5jdGlvbiBnZXRDdXJyZW50VmFsdWVGb3Ioa2V5KSB7XG4gICAgaWYgKGxvY2FsQ2hlY2tpbmdEYXRhPy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICByZXR1cm4gbG9jYWxDaGVja2luZ0RhdGFba2V5XVxuICAgIH1cbiAgICByZXR1cm4gY3VycmVudENoZWNrPy5ba2V5XVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHRlbXBvcmFyeSAodW5zYXZlZCkgdmFsdWUgZm9yIGEgY2hlY2sgcHJvcGVydHlcbiAgICogRmFsbHMgYmFjayB0aHJvdWdoIGxvY2FsIGNoZWNraW5nIGRhdGEgdG8gY3VycmVudCBjaGVja1xuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gUHJvcGVydHkgbmFtZVxuICAgKiBAcmV0dXJucyB7Kn0gVGVtcG9yYXJ5IHZhbHVlXG4gICAqL1xuICBmdW5jdGlvbiBnZXRUZW1wVmFsdWVGb3Ioa2V5KSB7XG4gICAgaWYgKHRlbXBDaGVja2luZ0RhdGE/Lmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIHJldHVybiB0ZW1wQ2hlY2tpbmdEYXRhW2tleV1cbiAgICB9XG4gICAgcmV0dXJuIGdldEN1cnJlbnRWYWx1ZUZvcihrZXkpXG4gIH1cblxuICBjb25zdCBjdXJyZW50U2VsZWN0aW9ucyA9IGdldEN1cnJlbnRWYWx1ZUZvcignc2VsZWN0aW9ucycpIHx8IFtdXG4gIGNvbnN0IHRlbXBTZWxlY3Rpb25zID0gZ2V0VGVtcFZhbHVlRm9yKCdzZWxlY3Rpb25zJykgfHwgW11cbiAgY29uc3QgdGVtcE5vdGhpbmdUb1NlbGVjdCA9IGdldFRlbXBWYWx1ZUZvcignbm90aGluZ1RvU2VsZWN0JylcbiAgY29uc3QgY3VycmVudE5vdGhpbmdUb1NlbGVjdCA9IGdldEN1cnJlbnRWYWx1ZUZvcignbm90aGluZ1RvU2VsZWN0JylcbiAgY29uc3QgZ3JvdXBzRGF0YUxvYWRlZCA9ICEhZ3JvdXBzRGF0YVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBVSSBtb2RlIGJhc2VkIG9uIHNlbGVjdGlvbnMgc3RhdGVcbiAgICogU3dpdGNoZXMgdG8gJ3NlbGVjdCcgbW9kZSBpZiBubyBzZWxlY3Rpb25zIGFuZCBub3RoaW5nIGlzIG1hcmtlZCBhcyB1bnNlbGVjdGFibGVcbiAgICogQHBhcmFtIHtBcnJheX0gbmV3U2VsZWN0aW9ucyAtIEN1cnJlbnQgc2VsZWN0aW9ucyBhcnJheVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG5vdGhpbmdUb1NlbGVjdCAtIFdoZXRoZXIgdmVyc2UgaXMgbWFya2VkIGFzIGhhdmluZyBub3RoaW5nIHRvIHNlbGVjdFxuICAgKi9cbiAgZnVuY3Rpb24gdXBkYXRlTW9kZUZvclNlbGVjdGlvbnMobmV3U2VsZWN0aW9ucywgbm90aGluZ1RvU2VsZWN0KSB7XG4gICAgY29uc3Qgbm9TZWxlY3Rpb25zID0gKCFuZXdTZWxlY3Rpb25zPy5sZW5ndGgpXG4gICAgY29uc3QgbmV3TW9kZSA9IG5vU2VsZWN0aW9ucyAmJiAhbm90aGluZ1RvU2VsZWN0ID8gJ3NlbGVjdCcgOiAnZGVmYXVsdCdcbiAgICBzZXRTdGF0ZSh7XG4gICAgICBtb2RlOiBuZXdNb2RlXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBFZmZlY3QgaG9vayB0byBpbml0aWFsaXplIGNoZWNraW5nIGRhdGEgd2hlbiBjaGVja2luZ0RhdGEgb3IgZ2xXb3Jkc0RhdGEgY2hhbmdlc1xuICAgKiBGbGF0dGVucyBncm91cCBkYXRhLCBjcmVhdGVzIGluZGV4LCBmaW5kcyBpbml0aWFsIGNoZWNrLCBhbmQgdmFsaWRhdGVzIGFsbCBjaGVja3NcbiAgICovXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGF2ZURhdGEgPSBjaGVja2luZ0RhdGEgJiYgT2JqZWN0LmtleXMoY2hlY2tpbmdEYXRhKS5sZW5ndGggJiYgZ2xXb3Jkc0RhdGEgJiYgT2JqZWN0LmtleXMoZ2xXb3Jkc0RhdGEpLmxlbmd0aFxuICAgIGNvbnN0IGdyb3Vwc0RhdGFJbml0aWFsaXplZCA9IGdyb3Vwc0RhdGEgJiYgT2JqZWN0LmtleXMoZ3JvdXBzRGF0YSkubGVuZ3RoXG4gICAgaWYgKGhhdmVEYXRhICYmICFncm91cHNEYXRhSW5pdGlhbGl6ZWQpIHtcbiAgICAgIGxldCBmbGF0dGVuZWRHcm91cERhdGEgPSBudWxsXG4gICAgICBsZXQgZ3JvdXBzSW5kZXggPSBudWxsXG4gICAgICBpZiAoY2hlY2tpbmdEYXRhKSB7XG4gICAgICAgIGZsYXR0ZW5lZEdyb3VwRGF0YSA9IGdyb3VwRGF0YUhlbHBlcnMuZmxhdHRlbkdyb3VwRGF0YShjaGVja2luZ0RhdGEpXG4gICAgICB9XG5cbiAgICAgIGlmIChnbFdvcmRzRGF0YSkge1xuICAgICAgICBpZiAoY2hlY2tUeXBlID09PSB0cmFuc2xhdGlvbk5vdGVzKSB7XG4gICAgICAgICAgZ3JvdXBzSW5kZXggPSBwYXJzZVRuVG9JbmRleChnbFdvcmRzRGF0YSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBncm91cHNJbmRleCA9IHBhcnNlVHdUb0luZGV4KGdsV29yZHNEYXRhKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNoZWNrID0gZmluZENoZWNrKGZsYXR0ZW5lZEdyb3VwRGF0YSwgY29udGV4dElkLCB0cnVlKVxuICAgICAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgICAgIGdyb3Vwc0RhdGE6IGZsYXR0ZW5lZEdyb3VwRGF0YSxcbiAgICAgICAgZ3JvdXBzSW5kZXgsXG4gICAgICAgIGN1cnJlbnRDaGVja2luZ0RhdGE6IGNoZWNraW5nRGF0YSxcbiAgICAgICAgY3VycmVudENoZWNrOiBjaGVjayxcbiAgICAgICAgbW9kaWZpZWQ6IGZhbHNlLFxuICAgICAgICBpc0NvbW1lbnRDaGFuZ2VkOiBmYWxzZSxcbiAgICAgIH1cblxuICAgICAgLy8gdmFsaWRhdGUgYWxsIGNoZWNrc1xuICAgICAgc2VsZWN0aW9uc0hlbHBlcnMudmFsaWRhdGVTZWxlY3Rpb25zRm9yQWxsQ2hlY2tzKHRhcmdldEJpYmxlLCBmbGF0dGVuZWRHcm91cERhdGEsIChjaGVjaywgaW52YWxpZGF0ZWQpID0+IHtcbiAgICAgICAgaWYgKGNoZWNrKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCR7bmFtZX0tc2F2ZUVkaXRWZXJzZSAtIGNoZWNrIHZhbGlkYXRpb24gY2hhbmdlZGAsIGNoZWNrKVxuICAgICAgICAgIF9zYXZlQ2hlY2tpbmdEYXRhKGNoZWNrLCB7IGludmFsaWRhdGVkIH0pXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIHNldFN0YXRlKG5ld1N0YXRlKVxuXG4gICAgICBpZiAoZmxhdHRlbmVkR3JvdXBEYXRhICYmIGNoZWNrPy5jb250ZXh0SWQpIHtcbiAgICAgICAgdXBkYXRlQ29udGV4dChjaGVjaywgZ3JvdXBzSW5kZXgpXG4gICAgICAgIHVwZGF0ZU1vZGVGb3JTZWxlY3Rpb25zKGNoZWNrPy5zZWxlY3Rpb25zLCBjaGVjaz8ubm90aGluZ1RvU2VsZWN0KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2NvbnRleHRJZCwgY2hlY2tpbmdEYXRhLCBnbFdvcmRzRGF0YV0pO1xuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBjb250ZXh0IGFuZCByZWxhdGVkIGRhdGEgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNoZWNrIGFuZCBncm91cCBpbmRleC5cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IG5ld0NoZWNrIC0gVGhlIG5ldyBjaGVjayBvYmplY3QgY29udGFpbmluZyBjb250ZXh0IGluZm9ybWF0aW9uLlxuICAgKiBAcGFyYW0ge09iamVjdH0gW2dyb3Vwc0luZGV4Xz1ncm91cHNJbmRleF0gLSBBbiBvcHRpb25hbCBncm91cCBpbmRleCBvYmplY3QsIGRlZmF1bHRzIHRvIHRoZSBnbG9iYWwgdmFyaWFibGUgYGdyb3Vwc0luZGV4YC5cbiAgICogQHJldHVybiB7dm9pZH0gRG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuIFVwZGF0ZXMgdGhlIHN0YXRlIG9mIHRoZSBhcHBsaWNhdGlvbiB3aXRoIG5ldyBjb250ZXh0IGRhdGEuXG4gICAqL1xuICBmdW5jdGlvbiB1cGRhdGVDb250ZXh0KG5ld0NoZWNrLCBncm91cHNJbmRleF8gPSBncm91cHNJbmRleCkge1xuICAgIGNvbnN0IGNvbnRleHRJZCA9IG5ld0NoZWNrPy5jb250ZXh0SWRcbiAgICBjb25zdCByZWZlcmVuY2UgPSBjb250ZXh0SWQ/LnJlZmVyZW5jZVxuICAgIGNvbnN0IHZlcnNlVGV4dCA9IHZlcnNlSGVscGVycy5nZXRWZXJzZVRleHRGcm9tQmlibGUodGFyZ2V0QmlibGUsIHJlZmVyZW5jZSlcbiAgICBjb25zdCBhbGlnbmVkR0xUZXh0ID0gZ2V0QWxpZ25lZEdMVGV4dChhbGlnbmVkR2xCaWJsZSwgY29udGV4dElkKTtcbiAgICBjb25zdCBncm91cFRpdGxlID0gZ2V0VGl0bGVGcm9tSW5kZXgoZ3JvdXBzSW5kZXhfLCBjb250ZXh0SWQ/Lmdyb3VwSWQpXG4gICAgY29uc3QgZ3JvdXBQaHJhc2UgPVxuICAgICAgY2hlY2tUeXBlID09PSB0cmFuc2xhdGlvbk5vdGVzXG4gICAgICAgID8gY29udGV4dElkPy5vY2N1cnJlbmNlTm90ZVxuICAgICAgICA6IGdldFBocmFzZUZyb21UdyhnbFdvcmRzRGF0YSwgY29udGV4dElkPy5ncm91cElkKVxuXG4gICAgbGV0IGdyb3VwRGF0YVxuICAgIGlmIChnbFdvcmRzRGF0YSkge1xuICAgICAgaWYgKGNoZWNrVHlwZSA9PT0gdHJhbnNsYXRpb25Ob3Rlcykge1xuICAgICAgICBncm91cERhdGEgPSB7XG4gICAgICAgICAgdHJhbnNsYXRlOiB7XG4gICAgICAgICAgICBhcnRpY2xlczogZ2xXb3Jkc0RhdGE/LnRyYW5zbGF0ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ3JvdXBEYXRhID0ge1xuICAgICAgICAgIC4uLmdsV29yZHNEYXRhLFxuICAgICAgICAgIG1hbmlmZXN0OiB7fVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IF9hcnRpY2xlXG4gICAgY29uc3QgYXJ0aWNsZUlkID0gY29udGV4dElkPy5ncm91cElkXG4gICAgY29uc3QgZ3JvdXBzSWRzID0gT2JqZWN0LmtleXMoZ3JvdXBEYXRhKVxuICAgIGZvciAoY29uc3QgX2dyb3VwSWQgb2YgZ3JvdXBzSWRzKSB7XG4gICAgICBjb25zdCBncm91cCA9IGdyb3VwRGF0YVtfZ3JvdXBJZF1cbiAgICAgIGNvbnN0IGFydGljbGVzID0gZ3JvdXA/LmFydGljbGVzIHx8IHt9XG4gICAgICBfYXJ0aWNsZSA9IGFydGljbGVzPy5bYXJ0aWNsZUlkXSB8fCBudWxsXG4gICAgICBpZiAoX2FydGljbGUpIHtcbiAgICAgICAgY29uc3QgY3VycmVudEFydGljbGVNYXJrZG93biA9IHRIZWxwc0hlbHBlcnMuY29udmVydE1hcmtkb3duTGlua3MoX2FydGljbGUsIGdhdGV3YXlMYW5ndWFnZUlkKTtcbiAgICAgICAgX2FydGljbGUgPSBjdXJyZW50QXJ0aWNsZU1hcmtkb3duXG4gICAgICAgIC8vIGNvbnN0IHRIZWxwc01vZGFsTWFya2Rvd24gPSB0SGVscHNIZWxwZXJzLmNvbnZlcnRNYXJrZG93bkxpbmtzKG1vZGFsQXJ0aWNsZSwgZ2F0ZXdheUxhbmd1YWdlQ29kZSwgYXJ0aWNsZUNhdGVnb3J5KTtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRTdGF0ZSh7XG4gICAgICBhbGlnbmVkR0xUZXh0LFxuICAgICAgY3VycmVudENoZWNrOiBuZXdDaGVjayxcbiAgICAgIHZlcnNlVGV4dCxcbiAgICAgIGdyb3VwVGl0bGUsXG4gICAgICBncm91cFBocmFzZSxcbiAgICAgIGFydGljbGU6IF9hcnRpY2xlXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGNvbW1lbnRUZXh0ID0gZ2V0Q3VycmVudFZhbHVlRm9yKCdjb21tZW50cycpIHx8ICcnXG4gIGNvbnN0IGJvb2tJZCA9IHRhcmdldExhbmd1YWdlRGV0YWlscz8uYm9vaz8uaWRcbiAgY29uc3QgYm9va05hbWUgPSB0YXJnZXRMYW5ndWFnZURldGFpbHM/LmJvb2s/Lm5hbWVcbiAgY29uc3QgYm9va0RldGFpbHMgPSB7XG4gICAgaWQ6IGJvb2tJZCxcbiAgICBuYW1lOiBib29rTmFtZVxuICB9O1xuICBjb25zdCBnYXRld2F5TGFuZ3VhZ2VJZCA9IHRhcmdldExhbmd1YWdlRGV0YWlscz8uZ2F0ZXdheUxhbmd1YWdlSWRcbiAgY29uc3QgdGFyZ2V0TGFuZ3VhZ2VGb250ID0gbWFuaWZlc3Q/LnByb2plY3RGb250IHx8ICcnXG4gIGNvbnN0IGN1cnJlbnRDb250ZXh0SWQgPSBjdXJyZW50Q2hlY2s/LmNvbnRleHRJZFxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRvb2wtc3BlY2lmaWMgc2V0dGluZ3MgYW5kIHBlcnNpc3RzIHRoZW1cbiAgICogQHBhcmFtIHtzdHJpbmd9IE5BTUVTUEFDRSAtIFRvb2wgbmFtZXNwYWNlIChlLmcuLCAnU2NyaXB0dXJlUGFuZScpXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWVsZE5hbWUgLSBTZXR0aW5nIGZpZWxkIG5hbWVcbiAgICogQHBhcmFtIHsqfSBmaWVsZFZhbHVlIC0gU2V0dGluZyB2YWx1ZVxuICAgKi9cbiAgY29uc3Qgc2V0VG9vbFNldHRpbmdzID0gKE5BTUVTUEFDRSwgZmllbGROYW1lLCBmaWVsZFZhbHVlKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tc2V0VG9vbFNldHRpbmdzICR7ZmllbGROYW1lfT0ke2ZpZWxkVmFsdWV9YClcbiAgICBpZiAodG9vbHNTZXR0aW5ncykge1xuICAgICAgLy8gRGVlcCBjbG9uaW5nIG9iamVjdCB0byBhdm9pZCBtb2RpZnlpbmcgb3JpZ2luYWwgb2JqZWN0XG4gICAgICBjb25zdCBfdG9vbHNTZXR0aW5ncyA9IHsgLi4udG9vbHNTZXR0aW5ncyB9O1xuICAgICAgbGV0IGNvbXBvbmVudFNldHRpbmdzID0gX3Rvb2xzU2V0dGluZ3M/LltOQU1FU1BBQ0VdXG4gICAgICBpZiAoIWNvbXBvbmVudFNldHRpbmdzKSB7XG4gICAgICAgIGNvbXBvbmVudFNldHRpbmdzID0geyB9XG4gICAgICAgIF90b29sc1NldHRpbmdzW05BTUVTUEFDRV0gPSBjb21wb25lbnRTZXR0aW5nc1xuICAgICAgfVxuICAgICAgY29tcG9uZW50U2V0dGluZ3NbZmllbGROYW1lXSA9IGZpZWxkVmFsdWVcbiAgICAgIHNldFNldHRpbmdzKHsgdG9vbHNTZXR0aW5nczogX3Rvb2xzU2V0dGluZ3MgfSwgdHJ1ZSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUGVyc2lzdHMgc2V0dGluZ3MgdG8gc3RvcmFnZSBhZnRlciByZW1vdmluZyBCaWJsZSBkYXRhIHRvIHJlZHVjZSBzaXplXG4gICAqIENyZWF0ZXMgc2hhbGxvdyBjb3BpZXMgdG8gYXZvaWQgbW9kaWZ5aW5nIG9yaWdpbmFsIG9iamVjdHNcbiAgICogQHBhcmFtIHtvYmplY3R9IF9zZXR0aW5ncyAtIFNldHRpbmdzIG9iamVjdCB0byBzYXZlXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiBfc2F2ZVNldHRpbmdzKF9zZXR0aW5ncykge1xuICAgIGlmIChzYXZlU2V0dGluZ3MgJiYgX3NldHRpbmdzKSB7XG4gICAgICBjb25zdCBuZXdTZXR0aW5ncyA9IHsgLi4uX3NldHRpbmdzIH1cbiAgICAgIGRlbGV0ZSBuZXdTZXR0aW5ncy5tYW5pZmVzdFxuICAgICAgY29uc3QgX3BhbmVTZXR0aW5ncyA9IFsgLi4ubmV3U2V0dGluZ3MucGFuZVNldHRpbmdzIF1cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgX3BhbmVTZXR0aW5ncy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBfcGFuZVNldHRpbmcgPSB7Li4uX3BhbmVTZXR0aW5nc1tpXX0gLy8gc2hhbGxvdyBjb3B5XG4gICAgICAgIGlmIChfcGFuZVNldHRpbmc/LmJvb2spIHtcbiAgICAgICAgICBkZWxldGUgX3BhbmVTZXR0aW5nLmJvb2sgLy8gcmVtb3ZlIGFsbCB0aGUgYm9vayBkYXRhIGJlZm9yZSBzYXZpbmdcbiAgICAgICAgfVxuICAgICAgICBfcGFuZVNldHRpbmdzW2ldID0gX3BhbmVTZXR0aW5nXG4gICAgICB9XG4gICAgICBuZXdTZXR0aW5ncy5wYW5lU2V0dGluZ3MgPSBfcGFuZVNldHRpbmdzXG5cbiAgICAgIGNvbnN0IF9wYW5lS2V5U2V0dGluZ3MgPSB7IC4uLm5ld1NldHRpbmdzLnBhbmVLZXlTZXR0aW5ncyB9XG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoX3BhbmVLZXlTZXR0aW5ncylcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgY29uc3QgX3BhbmVTZXR0aW5nID0gey4uLl9wYW5lS2V5U2V0dGluZ3Nba2V5XX0gLy8gc2hhbGxvdyBjb3B5XG4gICAgICAgIGlmIChfcGFuZVNldHRpbmc/LmJvb2spIHtcbiAgICAgICAgICBkZWxldGUgX3BhbmVTZXR0aW5nLmJvb2sgLy8gcmVtb3ZlIGFsbCB0aGUgYm9vayBkYXRhIGJlZm9yZSBzYXZpbmdcbiAgICAgICAgfVxuICAgICAgICBfcGFuZUtleVNldHRpbmdzW2tleV0gPSBfcGFuZVNldHRpbmdcbiAgICAgIH1cbiAgICAgIG5ld1NldHRpbmdzLnBhbmVLZXlTZXR0aW5ncyA9IF9wYW5lS2V5U2V0dGluZ3NcblxuICAgICAgc2F2ZVNldHRpbmdzKG5ld1NldHRpbmdzKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHNldHRpbmdzIHN0YXRlIGFuZCBvcHRpb25hbGx5IHBlcnNpc3RzIHRoZW1cbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld1NldHRpbmdzIC0gTmV3IHNldHRpbmdzIHRvIG1lcmdlXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZG9TYXZlIC0gV2hldGhlciB0byBwZXJzaXN0IHNldHRpbmdzXG4gICAqL1xuICBmdW5jdGlvbiBzZXRTZXR0aW5ncyhuZXdTZXR0aW5ncywgZG9TYXZlID0gZmFsc2UpIHtcbiAgICBjb25zdCBfc2V0dGluZ3MgPSB7XG4gICAgICAuLi5zZXR0aW5ncyxcbiAgICAgIC4uLm5ld1NldHRpbmdzXG4gICAgfVxuXG4gICAgX3NldFNldHRpbmdzKF9zZXR0aW5ncylcbiAgICBkb1NhdmUgJiYgX3NhdmVTZXR0aW5ncyhfc2V0dGluZ3MpXG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyBTY3JpcHR1cmUgcGFuZSBzZXR0aW5ncyB3aXRoIG5ldyBwYW5lIGNvbmZpZ3VyYXRpb25zXG4gICAqIE1haW50YWlucyBhIGtleS1iYXNlZCBsb29rdXAgZm9yIHBhbmUgc2V0dGluZ3MgYnkgbGFuZ3VhZ2UvYmlibGUvb3duZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IE5BTUVTUEFDRSAtIFRvb2wgbmFtZXNwYWNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWVsZE5hbWUgLSBTZXR0aW5nIGZpZWxkIG5hbWVcbiAgICogQHBhcmFtIHtBcnJheX0gX3BhbmVTZXR0aW5ncyAtIEFycmF5IG9mIHBhbmUgc2V0dGluZyBvYmplY3RzXG4gICAqL1xuICBjb25zdCBzZXRUb29sU2V0dGluZ3NTY3JpcHR1cmUgPSAoTkFNRVNQQUNFLCBmaWVsZE5hbWUsIF9wYW5lU2V0dGluZ3MpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1zZXRUb29sU2V0dGluZ3NTY3JpcHR1cmUgJHtmaWVsZE5hbWV9YCwgX3BhbmVTZXR0aW5ncylcbiAgICBjb25zdCBfcGFuZUtleVNldHRpbmdzID0gey4uLnBhbmVLZXlTZXR0aW5nc31cblxuICAgIGZvciAoY29uc3QgcGFuZVNldHRpbmdzIG9mIF9wYW5lU2V0dGluZ3MpIHtcbiAgICAgIGNvbnN0IGxhbmd1YWdlSWQgPSBwYW5lU2V0dGluZ3M/Lmxhbmd1YWdlSWRcbiAgICAgIGNvbnN0IGtleSA9IGAke2xhbmd1YWdlSWR9LyR7cGFuZVNldHRpbmdzPy5iaWJsZUlkfS8ke3BhbmVTZXR0aW5ncz8ub3duZXJ9YFxuICAgICAgX3BhbmVLZXlTZXR0aW5nc1trZXldID0gcGFuZVNldHRpbmdzXG4gICAgfVxuXG4gICAgY29uc3QgX3NldHRpbmdzID0ge1xuICAgICAgcGFuZVNldHRpbmdzOiBfcGFuZVNldHRpbmdzLFxuICAgICAgcGFuZUtleVNldHRpbmdzOiBfcGFuZUtleVNldHRpbmdzLFxuICAgIH1cblxuICAgIHNldFNldHRpbmdzKF9zZXR0aW5ncywgdHJ1ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgcHJvcGVydHkgdG8gdGhlIG1hbmlmZXN0IGFuZCBhcHAgc2V0dGluZ3NcbiAgICogVXNlZCBmb3IgcGVyc2lzdGluZyB1c2VyIHByZWZlcmVuY2VzIGxpa2UgZm9udHNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpZWxkTmFtZSAtIFByb3BlcnR5IG5hbWVcbiAgICogQHBhcmFtIHsqfSBmaWVsZFZhbHVlIC0gUHJvcGVydHkgdmFsdWVcbiAgICovXG4gIGNvbnN0IGFkZE9iamVjdFByb3BlcnR5VG9NYW5pZmVzdCA9IChmaWVsZE5hbWUsIGZpZWxkVmFsdWUpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1hZGRPYmplY3RQcm9wZXJ0eVRvTWFuaWZlc3QgJHtmaWVsZE5hbWV9PSR7ZmllbGRWYWx1ZX1gKVxuICAgIGlmIChtYW5pZmVzdCkge1xuICAgICAgY29uc3QgX21hbmlmZXN0ID0ge1xuICAgICAgICAuLi5tYW5pZmVzdCxcbiAgICAgICAgW2ZpZWxkTmFtZV06IGZpZWxkVmFsdWVcbiAgICAgIH1cblxuICAgICAgLy8gYWxzbyBzYXZlIHRoaXMgaW4gYXBwU2V0dGluZ3NcbiAgICAgIGNvbnN0IGFwcFNldHRpbmdzID0gc2V0dGluZ3MuYXBwU2V0dGluZ3MgfHwge31cbiAgICAgIGNvbnN0IF9hcHBTZXR0aW5ncyA9IHtcbiAgICAgICAgLi4uYXBwU2V0dGluZ3MsXG4gICAgICAgIFtmaWVsZE5hbWVdOiBmaWVsZFZhbHVlXG4gICAgICB9XG5cbiAgICAgIHNldFNldHRpbmdzKHtcbiAgICAgICAgbWFuaWZlc3Q6IF9tYW5pZmVzdCxcbiAgICAgICAgYXBwU2V0dGluZ3M6IF9hcHBTZXR0aW5nc1xuICAgICAgfSwgdHJ1ZSlcbiAgICB9XG4gIH1cblxuICAvLyBFdmVudCBoYW5kbGVycyBmb3IgdmFyaW91cyB1c2VyIGFjdGlvbnNcblxuICAvKipcbiAgICogT3BlbnMgYW4gYWxlcnQgZGlhbG9nIChwbGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbilcbiAgICovXG4gIGNvbnN0IG9wZW5BbGVydERpYWxvZyA9ICgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1vcGVuQWxlcnREaWFsb2dgKSAvLyBUT0RPIC0gZmxlc2ggb3V0XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHZlcnNlIGNvbnRlbnQgaGFzIGNoYW5nZWQgZnJvbSBvcmlnaW5hbFxuICAgKiBAcGFyYW0ge0V2ZW50fSBlIC0gSW5wdXQgZXZlbnRcbiAgICovXG4gIGNvbnN0IGNoZWNrSWZWZXJzZUNoYW5nZWQgPSAoZSkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWNoZWNrSWZWZXJzZUNoYW5nZWRgKVxuICAgIGNvbnN0IF9uZXdWZXJzZVRleHQgPSBlLnRhcmdldC52YWx1ZVxuICAgIGNvbnN0IF9pc1ZlcnNlQ2hhbmdlZCA9IF9uZXdWZXJzZVRleHQgIT09IHZlcnNlVGV4dFxuICAgIHNldFN0YXRlKHsgaXNWZXJzZUNoYW5nZWQ6IF9pc1ZlcnNlQ2hhbmdlZCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHZlcnNlIHRleHQgZWRpdGluZ1xuICAgKiBAcGFyYW0ge0V2ZW50fSBlIC0gSW5wdXQgZXZlbnQgd2l0aCBuZXcgdmVyc2UgdGV4dFxuICAgKi9cbiAgY29uc3QgaGFuZGxlRWRpdFZlcnNlID0gKGUpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1oYW5kbGVFZGl0VmVyc2VgKVxuICAgIGNvbnN0IF9uZXdWZXJzZVRleHQgPSBlLnRhcmdldC52YWx1ZVxuICAgIHNldFN0YXRlKHsgbmV3VmVyc2VUZXh0OiBfbmV3VmVyc2VUZXh0IH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbmNlbHMgdmVyc2UgZWRpdGluZyBhbmQgcmVzZXRzIHN0YXRlXG4gICAqL1xuICBjb25zdCBjYW5jZWxFZGl0VmVyc2UgPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tY2FuY2VsRWRpdFZlcnNlYClcbiAgICBzZXRTdGF0ZSh7IG5ld1ZlcnNlVGV4dDogbnVsbCwgbmV3VGFnczogW10sIG1vZGU6IFwiZGVmYXVsdFwiIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmVzIGVkaXRlZCB2ZXJzZSB0ZXh0IGFuZCB1cGRhdGVzIGFsaWdubWVudHNcbiAgICogTWFya3MgY2hlY2sgYXMgaGF2aW5nIHZlcnNlIGVkaXRzXG4gICAqL1xuICBjb25zdCBzYXZlRWRpdFZlcnNlID0gKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LXNhdmVFZGl0VmVyc2VgKVxuICAgIGNvbnN0IHsgY2hhcHRlciwgdmVyc2UgfSA9IGN1cnJlbnRDb250ZXh0SWQucmVmZXJlbmNlO1xuICAgIGNvbnN0IHZlcnNlUmVmID0gY3VycmVudENvbnRleHRJZC52ZXJzZVNwYW4gfHwgdmVyc2U7IC8vIGlmIGluIHZlcnNlIHNwYW4sIHVzZSBpdFxuICAgIGNvbnN0IGJlZm9yZSA9IHRhcmdldEJpYmxlW2NoYXB0ZXJdW3ZlcnNlUmVmXTtcblxuICAgIHNldFN0YXRlKHtcbiAgICAgIG5ld1ZlcnNlVGV4dDogbnVsbCxcbiAgICAgIG5ld1RhZ3M6IFtdLFxuICAgICAgbW9kZTogXCJkZWZhdWx0XCIsXG4gICAgICBpc1ZlcnNlQ2hhbmdlZDogZmFsc2UsXG4gICAgfSk7XG4gICAgZWRpdFRhcmdldFZlcnNlKGNoYXB0ZXIsIHZlcnNlUmVmLCBiZWZvcmUsIG5ld1ZlcnNlVGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGVzIHRvIHRoZSBuZXh0IGNoZWNrIGluIHRoZSBzZXF1ZW5jZVxuICAgKi9cbiAgZnVuY3Rpb24gaGFuZGxlR29Ub05leHQoKSB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0taGFuZGxlR29Ub05leHRgKVxuICAgIGNvbnN0IG5leHRDaGVjayA9IGZpbmROZXh0Q2hlY2soZ3JvdXBzRGF0YSwgY3VycmVudENvbnRleHRJZCwgZmFsc2UpXG4gICAgY2hhbmdlQ3VycmVudENoZWNrXyhuZXh0Q2hlY2ssIHRydWUpXG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGVzIHRvIHRoZSBwcmV2aW91cyBjaGVjayBpbiB0aGUgc2VxdWVuY2VcbiAgICovXG4gIGZ1bmN0aW9uIGhhbmRsZUdvVG9QcmV2aW91cygpIHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1oYW5kbGVHb1RvUHJldmlvdXNgKVxuICAgIGNvbnN0IHByZXZpb3VzQ2hlY2sgPSBmaW5kUHJldmlvdXNDaGVjayhncm91cHNEYXRhLCBjdXJyZW50Q29udGV4dElkLCBmYWxzZSlcbiAgICBjaGFuZ2VDdXJyZW50Q2hlY2tfKHByZXZpb3VzQ2hlY2ssIHRydWUpXG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBjaGVja2JveCBjaGFuZ2VzIGZvciB0YWdzXG4gICAqIEFkZHMgb3IgcmVtb3ZlcyB0YWdzIGZyb20gdGhlIGN1cnJlbnQgbGlzdFxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFnIC0gVGFnIGlkZW50aWZpZXJcbiAgICovXG4gIGNvbnN0IGhhbmRsZVRhZ3NDaGVja2JveCA9ICh0YWcpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1oYW5kbGVUYWdzQ2hlY2tib3hgLCB0YWcpXG4gICAgY29uc3QgY3VycmVudFRhZ3MgPSBuZXdUYWdzIHx8IFtdXG4gICAgY29uc3QgdGFnSW5kZXggPSBjdXJyZW50VGFncy5pbmRleE9mKHRhZyk7XG4gICAgbGV0IF9uZXdUYWdzO1xuXG4gICAgaWYgKHRhZ0luZGV4ID4gLTEpIHtcbiAgICAgIGNvbnN0IGNvcHkgPSBjdXJyZW50VGFncy5zbGljZSgwKTtcbiAgICAgIGNvcHkuc3BsaWNlKHRhZ0luZGV4LCAxKTtcbiAgICAgIF9uZXdUYWdzID0gY29weTtcbiAgICB9IGVsc2Uge1xuICAgICAgX25ld1RhZ3MgPSBbLi4uY3VycmVudFRhZ3MsIHRhZ107XG4gICAgfVxuXG4gICAgc2V0U3RhdGUoeyBuZXdUYWdzOiBfbmV3VGFncyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgc2VsZWN0aW9ucyBhZ2FpbnN0IHZlcnNlIHRleHRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZlcnNlVGV4dF8gLSBWZXJzZSB0ZXh0IHRvIHZhbGlkYXRlIGFnYWluc3RcbiAgICogQHBhcmFtIHtBcnJheX0gc2VsZWN0aW9uc18gLSBTZWxlY3Rpb25zIHRvIHZhbGlkYXRlXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIHNlbGVjdGlvbnMgYXJlIHZhbGlkXG4gICAqL1xuICBjb25zdCB2YWxpZGF0ZVNlbGVjdGlvbnMgPSAodmVyc2VUZXh0Xywgc2VsZWN0aW9uc18pID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS12YWxpZGF0ZVNlbGVjdGlvbnNgLCBzZWxlY3Rpb25zXylcbiAgICByZXR1cm4gc2VsZWN0aW9uc0hlbHBlcnMudmFsaWRhdGVWZXJzZVNlbGVjdGlvbnModmVyc2VUZXh0Xywgc2VsZWN0aW9uc18pXG4gIH1cblxuICAvKipcbiAgICogTWVtb2l6ZWQgY29tcHV0YXRpb24gb2YgdW5maWx0ZXJlZCB2ZXJzZSB0ZXh0IGluY2x1ZGluZyBVU0ZNIG1hcmtlcnNcbiAgICogVXNlZCBmb3IgZGlzcGxheWluZyBhbmQgZWRpdGluZyBjb21wbGV0ZSB2ZXJzZSBkYXRhXG4gICAqL1xuICBjb25zdCB1bmZpbHRlcmVkVmVyc2VUZXh0ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgbGV0IHVuZmlsdGVyZWRWZXJzZVRleHRfID0gJydcbiAgICBjb25zdCByZWZlcmVuY2UgPSBjdXJyZW50Q29udGV4dElkPy5yZWZlcmVuY2VcbiAgICBjb25zdCBjaGFwdGVyID0gcmVmZXJlbmNlPy5jaGFwdGVyXG4gICAgY29uc3QgdmVyc2UgPSByZWZlcmVuY2U/LnZlcnNlXG4gICAgaWYgKGNoYXB0ZXIgJiYgdmVyc2UpIHtcbiAgICAgIGNvbnN0IHZlcnNlRGF0YSA9IHRhcmdldEJpYmxlPy5bY2hhcHRlcl0/Llt2ZXJzZV1cbiAgICAgIGlmICh2ZXJzZURhdGEpIHtcbiAgICAgICAgdW5maWx0ZXJlZFZlcnNlVGV4dF8gPSB2ZXJzZURhdGFcbiAgICAgICAgaWYgKHR5cGVvZiB2ZXJzZURhdGEgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdW5maWx0ZXJlZFZlcnNlVGV4dF8gPSBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmdldFVzZm1Gb3JWZXJzZUNvbnRlbnQodmVyc2VEYXRhKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZmlsdGVyZWRWZXJzZVRleHRfXG4gIH0sIFt0YXJnZXRCaWJsZSwgY3VycmVudENvbnRleHRJZF0pXG5cbiAgLyoqXG4gICAqIFNldHMgYSB0ZW1wb3JhcnkgdmFsdWUgZm9yIGEgY2hlY2tpbmcgZGF0YSBwcm9wZXJ0eVxuICAgKiBVc2VkIGZvciB0cmFja2luZyB1bnNhdmVkIGNoYW5nZXNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFByb3BlcnR5IG5hbWVcbiAgICogQHBhcmFtIHsqfSB2YWx1ZSAtIFByb3BlcnR5IHZhbHVlXG4gICAqL1xuICBjb25zdCBzZXRUZW1wQ2hlY2tpbmdJdGVtID0gKGtleSwgdmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdDaGVja2luZ0RhdGEgPSB0ZW1wQ2hlY2tpbmdEYXRhID8gey4uLnRlbXBDaGVja2luZ0RhdGF9IDoge31cbiAgICBuZXdDaGVja2luZ0RhdGFba2V5XSA9IHZhbHVlXG4gICAgc2V0VGVtcENoZWNraW5nRGF0YShuZXdDaGVja2luZ0RhdGEpXG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyBzZWxlY3Rpb25zIGluIHRlbXBvcmFyeSBzdGF0ZSB3aXRob3V0IHNhdmluZ1xuICAgKiBAcGFyYW0ge0FycmF5fSBzZWxlY3Rpb25zIC0gTmV3IHNlbGVjdGlvbnMgYXJyYXlcbiAgICovXG4gIGNvbnN0IGNoYW5nZVNlbGVjdGlvbnNJbkxvY2FsU3RhdGUgPSAoc2VsZWN0aW9ucykgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWNoYW5nZVNlbGVjdGlvbnNJbkxvY2FsU3RhdGVgLCBzZWxlY3Rpb25zKVxuICAgIHNldFRlbXBDaGVja2luZ0l0ZW0oJ3NlbGVjdGlvbnMnLCBzZWxlY3Rpb25zKVxuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIFwibm90aGluZyB0byBzZWxlY3RcIiBmbGFnIGZvciBjdXJyZW50IGNoZWNrXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2VsZWN0IC0gTmV3IHN0YXRlIHZhbHVlXG4gICAqL1xuICBjb25zdCB0b2dnbGVOb3RoaW5nVG9TZWxlY3QgPSAoc2VsZWN0KSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tdG9nZ2xlTm90aGluZ1RvU2VsZWN0YCwgc2VsZWN0KVxuICAgIHNldFRlbXBDaGVja2luZ0l0ZW0oJ25vdGhpbmdUb1NlbGVjdCcsIHNlbGVjdClcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGFuZ2VzIHRoZSBjdXJyZW50IGNoZWNrIGJlaW5nIHdvcmtlZCBvblxuICAgKiBWYWxpZGF0ZXMgZm9yIHVuc2F2ZWQgY2hhbmdlcyBiZWZvcmUgc3dpdGNoaW5nXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdDb250ZXh0IC0gTmV3IGNoZWNrIGNvbnRleHRcbiAgICogQHBhcmFtIHtib29sZWFufSBub0NoZWNrIC0gU2tpcCB2YWxpZGF0aW9uIGlmIHRydWVcbiAgICovXG4gIGNvbnN0IGNoYW5nZUN1cnJlbnRDaGVja18gPSAobmV3Q29udGV4dCwgbm9DaGVjayA9IGZhbHNlKSA9PiB7XG4gICAgY29uc3QgbmV3Q29udGV4dElkID0gbmV3Q29udGV4dD8uY29udGV4dElkXG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tY2hhbmdlQ3VycmVudENvbnRleHRJZGAsIG5ld0NvbnRleHRJZClcblxuICAgIGNvbnN0IHNlbGVjdGlvbnNVbmNoYW5nZWQgPSBpc0VxdWFsKGN1cnJlbnRTZWxlY3Rpb25zLCB0ZW1wU2VsZWN0aW9ucylcbiAgICBpZiAobm9DaGVjayB8fCBzZWxlY3Rpb25zVW5jaGFuZ2VkKSB7XG4gICAgICBpZiAobmV3Q29udGV4dElkKSB7XG4gICAgICAgIGxldCBjaGVjayA9IGZpbmRDaGVjayhncm91cHNEYXRhLCBuZXdDb250ZXh0SWQsIGZhbHNlKVxuICAgICAgICB1cGRhdGVDb250ZXh0KG5ld0NvbnRleHQpXG4gICAgICAgIGlmIChjaGVjaykge1xuICAgICAgICAgIHNldExvY2FsQ2hlY2tpbmdEYXRhKG51bGwpXG4gICAgICAgICAgc2V0VGVtcENoZWNraW5nRGF0YShudWxsKVxuICAgICAgICAgIHVwZGF0ZU1vZGVGb3JTZWxlY3Rpb25zKGNoZWNrLnNlbGVjdGlvbnMsIGNoZWNrLm5vdGhpbmdUb1NlbGVjdClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZygnQ2hlY2tlci5jaGFuZ2VDdXJyZW50Q29udGV4dElkIC0gdW5zYXZlZCBjaGFuZ2VzJylcbiAgICB9XG4gICAgY2hhbmdlZEN1cnJlbnRDaGVjayAmJiBjaGFuZ2VkQ3VycmVudENoZWNrKG5ld0NvbnRleHQpXG4gIH1cblxuICBjb25zdCBkaXJlY3Rpb24gPSAnbHRyJ1xuICBjb25zdCBib29rbWFya0VuYWJsZWQgPSBnZXRDdXJyZW50VmFsdWVGb3IoJ3JlbWluZGVycycpXG4gIGNvbnN0IGlzVmVyc2VFZGl0ZWQgPSAhIWdldEN1cnJlbnRWYWx1ZUZvcigndmVyc2VFZGl0cycpXG4gIGNvbnN0IGlzVmVyc2VJbnZhbGlkYXRlZCA9ICEhZ2V0Q3VycmVudFZhbHVlRm9yKCdpbnZhbGlkYXRlZCcpXG5cbiAgLyoqXG4gICAqIENoYW5nZXMgdGhlIGN1cnJlbnQgY2hlY2sgYmVpbmcgd29ya2VkIG9uXG4gICAqIFZhbGlkYXRlcyBmb3IgdW5zYXZlZCBjaGFuZ2VzIGJlZm9yZSBzd2l0Y2hpbmdcbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld0NvbnRleHQgLSBOZXcgY2hlY2sgY29udGV4dFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG5vQ2hlY2sgLSBTa2lwIHZhbGlkYXRpb24gaWYgdHJ1ZVxuICAgKi9cbiAgY29uc3QgX3NhdmVTZWxlY3Rpb24gPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tX3NhdmVTZWxlY3Rpb24gcGVyc2lzdCB0byBmaWxlYClcbiAgICBjb25zdCB7IGNoZWNrSW5Hcm91cHNEYXRhLCBfY3VycmVudENoZWNrLCBuZXdTdGF0ZSwgX25ld0NoZWNraW5nRGF0YSB9ID0gY2xvbmVEYXRhRm9yU2F2aW5nKClcblxuICAgIGlmIChfY3VycmVudENoZWNrICYmIG5ld1N0YXRlKSB7XG4gICAgICBpZiAodGVtcE5vdGhpbmdUb1NlbGVjdCkge1xuICAgICAgICBfbmV3Q2hlY2tpbmdEYXRhLm5vdGhpbmdUb1NlbGVjdCA9IHRlbXBOb3RoaW5nVG9TZWxlY3RcbiAgICAgICAgX25ld0NoZWNraW5nRGF0YS5zZWxlY3Rpb25zID0gZmFsc2VcbiAgICAgICAgX25ld0NoZWNraW5nRGF0YS5pbnZhbGlkYXRlZCA9IGZhbHNlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfbmV3Q2hlY2tpbmdEYXRhLm5vdGhpbmdUb1NlbGVjdCA9IGZhbHNlXG4gICAgICAgIF9uZXdDaGVja2luZ0RhdGEuc2VsZWN0aW9ucyA9IHRlbXBTZWxlY3Rpb25zXG4gICAgICAgIF9uZXdDaGVja2luZ0RhdGEuaW52YWxpZGF0ZWQgPSBmYWxzZVxuICAgICAgfVxuXG4gICAgICBzZXRMb2NhbENoZWNraW5nRGF0YShfbmV3Q2hlY2tpbmdEYXRhKVxuICAgICAgZGVsZXRlVGVtcENoZWNraW5nRGF0YSgnbm90aGluZ1RvU2VsZWN0JylcbiAgICAgIGRlbGV0ZVRlbXBDaGVja2luZ0RhdGEoJ3NlbGVjdGlvbnMnKVxuICAgICAgZGVsZXRlVGVtcENoZWNraW5nRGF0YSgnaW52YWxpZGF0ZWQnKVxuXG4gICAgICB1cGRhdGVWYWx1ZXNJbkNoZWNrRGF0YShfY3VycmVudENoZWNrLCBjaGVja0luR3JvdXBzRGF0YSwgX25ld0NoZWNraW5nRGF0YSlcblxuICAgICAgc2V0U3RhdGUobmV3U3RhdGUpO1xuICAgICAgc2F2ZUNoZWNraW5nRGF0YSAmJiBzYXZlQ2hlY2tpbmdEYXRhKG5ld1N0YXRlKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9uZXMgY3VycmVudCBkYXRhIHN0cnVjdHVyZXMgZm9yIHNhdmluZyBtb2RpZmljYXRpb25zXG4gICAqIENyZWF0ZXMgZGVlcCBjb3BpZXMgdG8gYXZvaWQgbXV0YXRpbmcgb3JpZ2luYWwgc3RhdGVcbiAgICogQHJldHVybnMge29iamVjdH0gT2JqZWN0IGNvbnRhaW5pbmcgY2xvbmVkIGRhdGEgc3RydWN0dXJlc1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gY2xvbmVEYXRhRm9yU2F2aW5nKCkge1xuICAgIGNvbnN0IF9ncm91cHNEYXRhID0gXy5jbG9uZURlZXAoZ3JvdXBzRGF0YSlcbiAgICBjb25zdCBjaGVja0luR3JvdXBzRGF0YSA9IGZpbmRDaGVjayhfZ3JvdXBzRGF0YSwgY3VycmVudENvbnRleHRJZClcbiAgICBsZXQgX2N1cnJlbnRDaGVja1xuICAgIGxldCBuZXdTdGF0ZVxuICAgIGxldCBfbmV3Q2hlY2tpbmdEYXRhXG4gICAgaWYgKGNoZWNrSW5Hcm91cHNEYXRhKSB7XG4gICAgICAvLyBzYXZlIHRoZSBzZWxlY3Rpb24gY2hhbmdlc1xuICAgICAgY29uc3QgY2F0ZWdvcnkgPSBjaGVja0luR3JvdXBzRGF0YS5jYXRlZ29yeVxuICAgICAgY29uc3QgbmV3Q2hlY2tEYXRhID0gXy5jbG9uZURlZXAoY3VycmVudENoZWNraW5nRGF0YSlcbiAgICAgIF9jdXJyZW50Q2hlY2sgPSBmaW5kQ2hlY2sobmV3Q2hlY2tEYXRhW2NhdGVnb3J5XSwgY3VycmVudENvbnRleHRJZCwgZmFsc2UpXG4gICAgICBuZXdTdGF0ZSA9IHtcbiAgICAgICAgY3VycmVudENoZWNraW5nRGF0YTogbmV3Q2hlY2tEYXRhLFxuICAgICAgICBjdXJyZW50Q2hlY2s6IF9jdXJyZW50Q2hlY2ssXG4gICAgICAgIGdyb3Vwc0RhdGE6IF9ncm91cHNEYXRhLFxuICAgICAgICBtb2RlOiAnZGVmYXVsdCcsXG4gICAgICAgIG1vZGlmaWVkOiB0cnVlXG4gICAgICB9XG4gICAgICBfbmV3Q2hlY2tpbmdEYXRhID0gbG9jYWxDaGVja2luZ0RhdGEgPyB7Li4ubG9jYWxDaGVja2luZ0RhdGF9IDoge31cbiAgICB9XG4gICAgcmV0dXJuIHsgY2hlY2tJbkdyb3Vwc0RhdGEsIF9jdXJyZW50Q2hlY2ssIG5ld1N0YXRlLCBfbmV3Q2hlY2tpbmdEYXRhIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIG11bHRpcGxlIHByb3BlcnRpZXMgaW4gY2hlY2sgZGF0YSBvYmplY3RzXG4gICAqIE1vZGlmaWVzIGJvdGggdGhlIGN1cnJlbnQgY2hlY2sgYW5kIGdyb3VwcyBkYXRhXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBfY3VycmVudENoZWNrIC0gQ3VycmVudCBjaGVjayBvYmplY3RcbiAgICogQHBhcmFtIHtvYmplY3R9IGNoZWNrSW5Hcm91cHNEYXRhIC0gQ2hlY2sgaW4gZ3JvdXBzIGRhdGEgc3RydWN0dXJlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBfbmV3Q2hlY2tpbmdEYXRhIC0gTmV3IGRhdGEgdG8gYXBwbHlcbiAgICovXG4gIGZ1bmN0aW9uIHVwZGF0ZVZhbHVlc0luQ2hlY2tEYXRhKF9jdXJyZW50Q2hlY2ssIGNoZWNrSW5Hcm91cHNEYXRhLCBfbmV3Q2hlY2tpbmdEYXRhKSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoX25ld0NoZWNraW5nRGF0YSkpIHtcbiAgICAgIGNvbnN0IG5ld0NoZWNraW5nVmFsdWUgPSBfbmV3Q2hlY2tpbmdEYXRhW2tleV1cbiAgICAgIF9jdXJyZW50Q2hlY2tba2V5XSA9IG5ld0NoZWNraW5nVmFsdWVcbiAgICAgIGNoZWNrSW5Hcm91cHNEYXRhW2tleV0gPSBuZXdDaGVja2luZ1ZhbHVlXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBlcnNpc3RzIG11bHRpcGxlIGNoZWNrIHByb3BlcnR5IGNoYW5nZXMgdG8gZmlsZVxuICAgKiBDbG9uZXMgZGF0YSwgYXBwbGllcyBjaGFuZ2VzLCB1cGRhdGVzIHN0YXRlLCBhbmQgc2F2ZXNcbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld0RhdGEgLSBPYmplY3Qgd2l0aCBwcm9wZXJ0eSBuYW1lcyBhbmQgdmFsdWVzIHRvIHVwZGF0ZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY29uc3QgX3NhdmVEYXRhID0gKG5ld0RhdGEpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1fc2F2ZURhdGEgcGVyc2lzdCB0byBmaWxlYClcbiAgICBjb25zdCB7IGNoZWNrSW5Hcm91cHNEYXRhLCBfY3VycmVudENoZWNrLCBuZXdTdGF0ZSwgX25ld0NoZWNraW5nRGF0YSB9ID0gY2xvbmVEYXRhRm9yU2F2aW5nKClcblxuICAgIGlmIChfY3VycmVudENoZWNrICYmIG5ld1N0YXRlKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhuZXdEYXRhKSkge1xuICAgICAgICBfbmV3Q2hlY2tpbmdEYXRhW2tleV0gPSBuZXdEYXRhW2tleV1cbiAgICAgICAgZGVsZXRlVGVtcENoZWNraW5nRGF0YShrZXkpXG4gICAgICB9XG4gICAgICBzZXRMb2NhbENoZWNraW5nRGF0YShfbmV3Q2hlY2tpbmdEYXRhKVxuXG4gICAgICB1cGRhdGVWYWx1ZXNJbkNoZWNrRGF0YShfY3VycmVudENoZWNrLCBjaGVja0luR3JvdXBzRGF0YSwgX25ld0NoZWNraW5nRGF0YSlcblxuICAgICAgc2V0U3RhdGUobmV3U3RhdGUpO1xuICAgICAgc2F2ZUNoZWNraW5nRGF0YSAmJiBzYXZlQ2hlY2tpbmdEYXRhKG5ld1N0YXRlKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlcyBjaGFuZ2VzIHRvIGEgc3BlY2lmaWMgY2hlY2sgKG1heSBub3QgYmUgY3VycmVudCBjaGVjaylcbiAgICogT25seSBzYXZlcyBpZiBkYXRhIGFjdHVhbGx5IGNoYW5nZWRcbiAgICogQHBhcmFtIHtvYmplY3R9IGNoZWNrIC0gQ2hlY2sgb2JqZWN0IHRvIHVwZGF0ZVxuICAgKiBAcGFyYW0ge29iamVjdH0gbmV3RGF0YSAtIE5ldyBkYXRhIHRvIGFwcGx5XG4gICAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIGRhdGEgd2FzIGNoYW5nZWRcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNvbnN0IF9zYXZlQ2hlY2tpbmdEYXRhID0gKGNoZWNrLCBuZXdEYXRhKSA9PiB7XG4gICAgbGV0IGNoYW5nZWREYXRhID0gZmFsc2VcbiAgICBpZiAoY2hlY2spIHtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG5ld0RhdGEpKSB7XG4gICAgICAgIGlmIChjaGVja1trZXldICE9PSBuZXdEYXRhW2tleV0pIHtcbiAgICAgICAgICBjaGVja1trZXldID0gbmV3RGF0YVtrZXldXG4gICAgICAgICAgY2hhbmdlZERhdGEgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGNoYW5nZWREYXRhKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGAke25hbWV9LV9zYXZlQ2hlY2tpbmdEYXRhIHBlcnNpc3QgY2hhbmdlcyB0byBmaWxlYCwgY2hlY2spXG4gICAgICAgIGNvbnN0IG5ld0NoZWNraW5nRGF0YSA9IHtcbiAgICAgICAgICBjdXJyZW50Q2hlY2s6IGNoZWNrLFxuICAgICAgICB9XG4gICAgICAgIHNhdmVDaGVja2luZ0RhdGEgJiYgc2F2ZUNoZWNraW5nRGF0YShuZXdDaGVja2luZ0RhdGEpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjaGFuZ2VkRGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSBwcm9wZXJ0eSBmcm9tIHRlbXBvcmFyeSBjaGVja2luZyBkYXRhXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBQcm9wZXJ0eSBuYW1lIHRvIHJlbW92ZVxuICAgKi9cbiAgZnVuY3Rpb24gZGVsZXRlVGVtcENoZWNraW5nRGF0YShrZXkpIHtcbiAgICBpZiAodGVtcENoZWNraW5nRGF0YT8uaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgY29uc3QgX3RlbXBDaGVja2luZ0RhdGEgPSB7Li4udGVtcENoZWNraW5nRGF0YX1cbiAgICAgIGRlbGV0ZSBfdGVtcENoZWNraW5nRGF0YVtrZXldXG4gICAgICBzZXRUZW1wQ2hlY2tpbmdEYXRhKF90ZW1wQ2hlY2tpbmdEYXRhKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5jZWxzIHNlbGVjdGlvbiBtb2RlIHdpdGhvdXQgc2F2aW5nIGNoYW5nZXNcbiAgICovXG4gIGNvbnN0IGNhbmNlbFNlbGVjdGlvbiA9ICgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1jYW5jZWxTZWxlY3Rpb25gKVxuICAgIGRlbGV0ZVRlbXBDaGVja2luZ0RhdGEoJ3NlbGVjdGlvbnMnKVxuICAgIHNldFN0YXRlKHtcbiAgICAgIG1vZGU6ICdkZWZhdWx0J1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBhbGwgY3VycmVudCBzZWxlY3Rpb25zXG4gICAqL1xuICBjb25zdCBjbGVhclNlbGVjdGlvbiA9ICgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1jbGVhclNlbGVjdGlvbmApXG4gICAgc2V0VGVtcENoZWNraW5nSXRlbSgnc2VsZWN0aW9ucycsIFtdKVxuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgYm9va21hcmsvcmVtaW5kZXIgZmxhZyBmb3IgY3VycmVudCBjaGVja1xuICAgKi9cbiAgY29uc3QgdG9nZ2xlQm9va21hcmsgPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tdG9nZ2xlQm9va21hcmtgKVxuICAgIF9zYXZlRGF0YSh7XG4gICAgICByZW1pbmRlcnM6ICFnZXRUZW1wVmFsdWVGb3IoJ3JlbWluZGVycycpXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGFuZ2VzIHRoZSBVSSBtb2RlIChkZWZhdWx0LCBzZWxlY3QsIGVkaXQsIGNvbW1lbnQpXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtb2RlIC0gTmV3IG1vZGUgaWRlbnRpZmllclxuICAgKi9cbiAgY29uc3QgY2hhbmdlTW9kZSA9IChtb2RlKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tY2hhbmdlTW9kZWAsIG1vZGUpXG4gICAgc2V0U3RhdGUoeyBtb2RlIH0pXG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGNvbW1lbnQgdGV4dCBoYXMgY2hhbmdlZCBmcm9tIHNhdmVkIHZhbHVlXG4gICAqIEBwYXJhbSB7RXZlbnR9IGUgLSBJbnB1dCBldmVudFxuICAgKi9cbiAgZnVuY3Rpb24gY2hlY2tJZkNvbW1lbnRDaGFuZ2VkKGUpIHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1jaGVja0lmQ29tbWVudENoYW5nZWRgKVxuICAgIGNvbnN0IG5ld2NvbW1lbnQgPSBlLnRhcmdldC52YWx1ZSB8fCAnJztcbiAgICBjb25zdCBvbGRjb21tZW50ID0gY29tbWVudFRleHQgfHwgJyc7XG4gICAgY29uc3QgaXNDb21tZW50Q2hhbmdlZCA9IG5ld2NvbW1lbnQgIT09IG9sZGNvbW1lbnRcblxuICAgIHNldFN0YXRlKHtcbiAgICAgIGlzQ29tbWVudENoYW5nZWRcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5jZWxzIGNvbW1lbnQgZWRpdGluZyB3aXRob3V0IHNhdmluZ1xuICAgKi9cbiAgY29uc3QgY2FuY2VsQ29tbWVudCA9ICgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1jYW5jZWxDb21tZW50YClcbiAgICBkZWxldGVUZW1wQ2hlY2tpbmdEYXRhKCdjb21tZW50cycpXG4gICAgc2V0U3RhdGUoe1xuICAgICAgbW9kZTogJ2RlZmF1bHQnLFxuICAgICAgaXNDb21tZW50Q2hhbmdlZDogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZXMgY29tbWVudCBjaGFuZ2VzIHRvIHBlcnNpc3RlbnQgc3RvcmFnZVxuICAgKi9cbiAgY29uc3Qgc2F2ZUNvbW1lbnQgPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tc2F2ZUNvbW1lbnRgKVxuICAgIGNvbnN0IG5ld0NvbW1lbnQgPSBnZXRUZW1wVmFsdWVGb3IoJ2NvbW1lbnRzJylcbiAgICBfc2F2ZURhdGEoeyBjb21tZW50czogbmV3Q29tbWVudCB9KVxuICAgIHNldFN0YXRlKHtcbiAgICAgIG1vZGU6ICdkZWZhdWx0JyxcbiAgICAgIGlzQ29tbWVudENoYW5nZWQ6IGZhbHNlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgY29tbWVudCB0ZXh0IGNoYW5nZXNcbiAgICogQHBhcmFtIHtFdmVudH0gZSAtIElucHV0IGV2ZW50IHdpdGggbmV3IGNvbW1lbnRcbiAgICovXG4gIGNvbnN0IGhhbmRsZUNvbW1lbnQgPSAoZSkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1oYW5kbGVDb21tZW50YClcbiAgICBjb25zdCBuZXdDb21tZW50ID0gZS50YXJnZXQudmFsdWVcbiAgICBzZXRUZW1wQ2hlY2tpbmdJdGVtKCdjb21tZW50cycsIG5ld0NvbW1lbnQpXG4gICAgc2V0U3RhdGUoe1xuICAgICAgaXNDb21tZW50Q2hhbmdlZDogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IHJlYWR5VG9EaXNwbGF5Q2hlY2tlciA9IGdyb3Vwc0RhdGEgJiYgZ3JvdXBzSW5kZXggJiYgY3VycmVudENvbnRleHRJZCAmJiB2ZXJzZVRleHRcblxuICAvKipcbiAgICogV3JhcHBlciBmb3IgZ2V0TGV4aWNvbkRhdGEgY2FsbGJhY2sgd2l0aCBsb2dnaW5nXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsZXhpY29uSWQgLSBMZXhpY29uIGlkZW50aWZpZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGVudHJ5SWQgLSBFbnRyeSBpZGVudGlmaWVyXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IExleGljb24gZGF0YVxuICAgKi9cbiAgY29uc3QgZ2V0TGV4aWNvbkRhdGFfID0gKGxleGljb25JZCwgZW50cnlJZCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWdldExleGljb25EYXRhX2AsIHtsZXhpY29uSWQsIGVudHJ5SWR9KVxuICAgIGNvbnN0IGxleGljb25EYXRhID0gZ2V0TGV4aWNvbkRhdGEgJiYgZ2V0TGV4aWNvbkRhdGEobGV4aWNvbklkLCBlbnRyeUlkKVxuICAgIHJldHVybiBsZXhpY29uRGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgcG9wb3ZlciBkaXNwbGF5XG4gICAqL1xuICBjb25zdCBvbkNsb3NlUG9wb3ZlciA9ICgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1vbkNsb3NlUG9wb3ZlcmApXG4gICAgc2V0U3RhdGUoe1xuICAgICAgcG9wb3ZlclByb3BzOiB7XG4gICAgICAgIHBvcG92ZXJWaXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIERpc3BsYXlzIGEgcG9wb3ZlciB3aXRoIHRpdGxlIGFuZCBjb250ZW50IGF0IHNwZWNpZmllZCBwb3NpdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgLSBQb3BvdmVyIHRpdGxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBib2R5VGV4dCAtIFBvcG92ZXIgY29udGVudFxuICAgKiBAcGFyYW0ge29iamVjdH0gcG9zaXRpb25Db29yZCAtIFBvc2l0aW9uIGNvb3JkaW5hdGVzXG4gICAqL1xuICBjb25zdCBzaG93UG9wb3ZlciA9ICh0aXRsZSwgYm9keVRleHQsIHBvc2l0aW9uQ29vcmQpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1zaG93UG9wb3ZlcmAsIHRpdGxlKVxuICAgIHNldFN0YXRlKHtcbiAgICAgIHBvcG92ZXJQcm9wczoge1xuICAgICAgICBwb3BvdmVyVmlzaWJpbGl0eTogdHJ1ZSxcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIGJvZHlUZXh0LFxuICAgICAgICBwb3NpdGlvbkNvb3JkLFxuICAgICAgICBvbkNsb3NlUG9wb3ZlcjogKCkgPT4gb25DbG9zZVBvcG92ZXIoKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgZXhwYW5kZWQgdHJhbnNsYXRpb24gaGVscHMgbW9kYWxcbiAgICovXG4gIGNvbnN0IHRvZ2dsZUhlbHBzTW9kYWwgPSAoKSA9PiB7XG4gICAgY29uc3QgX3Nob3dIZWxwc01vZGFsID0gIXNob3dIZWxwc01vZGFsXG4gICAgc2V0U3RhdGUoe1xuICAgICAgc2hvd0hlbHBzTW9kYWw6IF9zaG93SGVscHNNb2RhbFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgdHJhbnNsYXRpb24gaGVscHMgc2lkZWJhciB2aXNpYmlsaXR5XG4gICAqL1xuICBjb25zdCB0b2dnbGVIZWxwcyA9ICgpID0+IHtcbiAgICBjb25zdCBfc2hvd0hlbHBzID0gIXNob3dIZWxwc1xuICAgIHNldFN0YXRlKHtcbiAgICAgIHNob3dIZWxwczogX3Nob3dIZWxwc1xuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIEJpYmxlIGJvb2sgdG8gdGhlIGJpYmxlcyBkYXRhIHN0cnVjdHVyZVxuICAgKiBDcmVhdGVzIGxhbmd1YWdlIGdyb3VwIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICogQHBhcmFtIHtvYmplY3R9IGJpYmxlcyAtIEJpYmxlcyBkYXRhIHN0cnVjdHVyZVxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gTGFuZ3VhZ2Uga2V5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBiaWJsZUlkIC0gQmlibGUgaWRlbnRpZmllclxuICAgKiBAcGFyYW0ge29iamVjdH0gYm9vayAtIEJvb2sgZGF0YVxuICAgKi9cbiAgZnVuY3Rpb24gc2F2ZUJpYmxlVG9LZXkoYmlibGVzLCBrZXksIGJpYmxlSWQsIGJvb2spIHtcbiAgICBsZXQga2V5R3JvdXAgPSBiaWJsZXNba2V5XVxuICAgIGlmICgha2V5R3JvdXApIHsgLy8gaWYgZ3JvdXAgZG9lcyBub3QgZXhpc3QsIGNyZWF0ZSBuZXdcbiAgICAgIGtleUdyb3VwID0ge31cbiAgICAgIGJpYmxlc1trZXldID0ga2V5R3JvdXBcbiAgICB9XG4gICAga2V5R3JvdXBbYmlibGVJZF0gPSBib29rXG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB2ZXJzZSBjb250ZW50IGluIHRhcmdldCBCaWJsZVxuICAgKiBIYW5kbGVzIFVTRk0gY29udmVyc2lvbiwgYWxpZ25tZW50IHVwZGF0ZXMsIGFuZCB2YWxpZGF0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFwdGVyIC0gQ2hhcHRlciBudW1iZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZlcnNlIC0gVmVyc2UgbnVtYmVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvbGRWZXJzZVRleHQgLSBPcmlnaW5hbCB2ZXJzZSB0ZXh0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuZXdWZXJzZVRleHQgLSBOZXcgdmVyc2UgdGV4dFxuICAgKi9cbiAgZnVuY3Rpb24gZWRpdFRhcmdldFZlcnNlKGNoYXB0ZXIsIHZlcnNlLCBvbGRWZXJzZVRleHQsIG5ld1ZlcnNlVGV4dCkge1xuICAgIGNvbnNvbGUubG9nKGBlZGl0VGFyZ2V0VmVyc2UgJHtjaGFwdGVyfToke3ZlcnNlfSAtIGNoYW5nZWQgdG8gJHtuZXdWZXJzZVRleHR9YClcblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBmaXJzdCB1cGRhdGUgY29tcG9uZW50IHN0YXRlXG5cbiAgICBjb25zdCBfYmlibGVzID0gWyAuLi5iaWJsZXNfXVxuICAgIGNvbnN0IF90YXJnZXRCaWJsZSA9IHsuLi5fYmlibGVzWzBdfVxuICAgIF9iaWJsZXNbMF0gPSBfdGFyZ2V0QmlibGVcbiAgICBjb25zdCB0YXJnZXRCb29rID0gey4uLl90YXJnZXRCaWJsZT8uYm9va31cbiAgICBfdGFyZ2V0QmlibGUuYm9vayA9IHRhcmdldEJvb2tcbiAgICBjb25zdCB0YXJnZXRDaGFwdGVyID0gey4uLnRhcmdldEJvb2tbY2hhcHRlcl19XG4gICAgdGFyZ2V0Qm9va1tjaGFwdGVyXSA9IHRhcmdldENoYXB0ZXJcbiAgICB0YXJnZXRDaGFwdGVyW3ZlcnNlXSA9IG5ld1ZlcnNlVGV4dFxuXG5cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gbm93IGFwcGx5IG5ldyB2ZXJzZSB0ZXh0IHRvIHNlbGVjdGVkIGFsaWduZWQgdmVyc2UgYW5kIGNhbGwgYmFjayB0byBleHRlbnNpb24gdG8gc2F2ZVxuXG4gICAgbGV0IF9uZXdWZXJzZVRleHQgPSBuZXdWZXJzZVRleHRcbiAgICBpZiAodHlwZW9mIF9uZXdWZXJzZVRleHQgIT09ICdzdHJpbmcnKSB7XG4gICAgICBfbmV3VmVyc2VUZXh0ID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKF9uZXdWZXJzZVRleHQpXG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudENoYXB0ZXJEYXRhID0gdGFyZ2V0QmlibGU/LltjaGFwdGVyXVxuICAgIGNvbnN0IGN1cnJlbnRWZXJzZURhdGEgPSBjdXJyZW50Q2hhcHRlckRhdGE/Llt2ZXJzZV1cbiAgICBjb25zdCB7IHRhcmdldFZlcnNlT2JqZWN0cyB9ID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZShjdXJyZW50VmVyc2VEYXRhLCBfbmV3VmVyc2VUZXh0KVxuICAgIHRhcmdldENoYXB0ZXJbdmVyc2VdID0geyB2ZXJzZU9iamVjdHM6IHRhcmdldFZlcnNlT2JqZWN0cyB9OyAvLyBzYXZlXG5cbiAgICB1cGRhdGVTZXR0aW5ncyhfYmlibGVzLCB0YXJnZXRCb29rKVxuXG4gICAgY29uc3QgdmVyc2VUZXh0ID0gcmVtb3ZlVXNmbU1hcmtlcnMoX25ld1ZlcnNlVGV4dClcbiAgICBzZXRTdGF0ZSh7XG4gICAgICB2ZXJzZVRleHRcbiAgICB9KVxuXG4gICAgY2hhbmdlVGFyZ2V0VmVyc2UgJiYgY2hhbmdlVGFyZ2V0VmVyc2UoY2hhcHRlciwgdmVyc2UsIG5ld1ZlcnNlVGV4dCwgdGFyZ2V0VmVyc2VPYmplY3RzKVxuICAgIF9zYXZlRGF0YSh7IHZlcnNlRWRpdHM6IHRydWUgfSlcblxuICAgIGNvbnN0IF9ncm91cHNEYXRhID0gXy5jbG9uZURlZXAoZ3JvdXBzRGF0YSlcbiAgICBsZXQgY2hhbmdlZERhdGEgPSBmYWxzZVxuICAgIHNlbGVjdGlvbnNIZWxwZXJzLnZhbGlkYXRlQWxsU2VsZWN0aW9uc0ZvclZlcnNlKG5ld1ZlcnNlVGV4dCwgYm9va0lkLCBjaGFwdGVyLCB2ZXJzZSwgX2dyb3Vwc0RhdGEsIChjaGVjaywgaW52YWxpZGF0ZWQpID0+IHtcbiAgICAgIGlmIChjaGVjaykge1xuICAgICAgICBjb25zdCBjdXJyZW50Q2hlY2tJZCA9IGN1cnJlbnRDaGVjaz8uY29udGV4dElkPy5jaGVja0lkXG4gICAgICAgIGNvbnN0IGNoZWNrSWQgPSBjaGVjaz8uY29udGV4dElkPy5jaGVja0lkXG5cbiAgICAgICAgaWYgKGNoZWNrSWQgPT09IGN1cnJlbnRDaGVja0lkKSB7XG4gICAgICAgICAgLy8gbmVlZCB0byB1cGRhdGUgY3VycmVudCBjaGVja1xuICAgICAgICAgIF9zYXZlRGF0YSh7XG4gICAgICAgICAgICBpbnZhbGlkYXRlZCxcbiAgICAgICAgICAgIHZlcnNlRWRpdHM6IHRydWUsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWVkaXRUYXJnZXRWZXJzZSAtIGNoZWNrIHZhbGlkYXRlZCwgc3RhdGUgY2hhbmdlZDogaW52YWxpZDogJHtpbnZhbGlkYXRlZH1gLCBjaGVjaylcbiAgICAgICAgY2hhbmdlZERhdGEgPSBjaGFuZ2VkRGF0YSB8fCBfc2F2ZUNoZWNraW5nRGF0YShjaGVjaywgeyBpbnZhbGlkYXRlZCwgdmVyc2VFZGl0czogdHJ1ZSB9KVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBpZiAoY2hhbmdlZERhdGEpIHtcbiAgICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWVkaXRUYXJnZXRWZXJzZSAtIGNoYW5nZXMgZGV0ZWN0ZWQgdXBkYXRpbmcgZ3JvdXBzRGF0YWApXG4gICAgICBzZXRTdGF0ZSh7XG4gICAgICAgIGdyb3Vwc0RhdGE6IF9ncm91cHNEYXRhXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHNldHRpbmdzIHdpdGggbmV3IEJpYmxlIGRhdGEgYW5kIHBhbmUgY29uZmlndXJhdGlvbnNcbiAgICogT3JnYW5pemVzIEJpYmxlcyBieSBsYW5ndWFnZSBhbmQgaW5pdGlhbGl6ZXMgcGFuZSBzZXR0aW5nc1xuICAgKiBAcGFyYW0ge0FycmF5fSBuZXdCaWJsZXMgLSBBcnJheSBvZiBCaWJsZSBvYmplY3RzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSB0YXJnZXRCaWJsZSAtIFRhcmdldCBCaWJsZSBkYXRhXG4gICAqL1xuICBmdW5jdGlvbiB1cGRhdGVTZXR0aW5ncyhuZXdCaWJsZXMsIHRhcmdldEJpYmxlKSB7XG4gICAgY29uc3QgX2JpYmxlcyA9IHt9XG4gICAgbGV0IF9wYW5lU2V0dGluZ3MgPSBbXVxuICAgIGNvbnN0IF9wYW5lS2V5U2V0dGluZ3MgPSBpbml0aWFsU2V0dGluZ3M/LnBhbmVLZXlTZXR0aW5ncyB8fCB7fVxuICAgIGlmIChuZXdCaWJsZXM/Lmxlbmd0aCkge1xuICAgICAgZm9yIChjb25zdCBiaWJsZSBvZiBuZXdCaWJsZXMpIHtcbiAgICAgICAgbGV0IGxhbmd1YWdlSWQgPSBiaWJsZT8ubGFuZ3VhZ2VJZFxuICAgICAgICBjb25zdCBvd25lciA9IGJpYmxlPy5vd25lclxuICAgICAgICBjb25zdCBib29rID0gYmlibGU/LmJvb2tcbiAgICAgICAgY29uc3QgYmlibGVJZCA9IGJpYmxlPy5iaWJsZUlkXG4gICAgICAgIGlmIChsYW5ndWFnZUlkID09PSBOVF9PUklHX0xBTkcgfHwgbGFuZ3VhZ2VJZCA9PT0gT1RfT1JJR19MQU5HKSB7XG4gICAgICAgICAgbGFuZ3VhZ2VJZCA9ICdvcmlnaW5hbExhbmd1YWdlJ1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGtleSA9IGAke2xhbmd1YWdlSWR9LyR7YmlibGVJZH0vJHtvd25lcn1gXG4gICAgICAgIGNvbnN0IGluaXRpYWxQYW5lU2V0dGluZ3MgPSBfcGFuZUtleVNldHRpbmdzPy5ba2V5XVxuICAgICAgICBjb25zdCBsYW5nS2V5ID0gYCR7bGFuZ3VhZ2VJZH1fJHtvd25lcn1gXG4gICAgICAgIHNhdmVCaWJsZVRvS2V5KF9iaWJsZXMsIGxhbmdLZXksIGJpYmxlSWQsIGJvb2spXG4gICAgICAgIHNhdmVCaWJsZVRvS2V5KF9iaWJsZXMsIGxhbmd1YWdlSWQsIGJpYmxlSWQsIGJvb2spIC8vIGFsc28gc2F2ZSBhcyBkZWZhdWx0IGZvciBsYW5ndWFnZSB3aXRob3V0IG93bmVyXG4gICAgICAgIGNvbnN0IHBhbmUgPSBpbml0aWFsUGFuZVNldHRpbmdzIHx8IHtcbiAgICAgICAgICAuLi5iaWJsZSxcbiAgICAgICAgICBsYW5ndWFnZUlkXG4gICAgICAgIH1cbiAgICAgICAgX3BhbmVTZXR0aW5ncy5wdXNoKHBhbmUpXG4gICAgICAgIGlmICghaW5pdGlhbFBhbmVTZXR0aW5ncykge1xuICAgICAgICAgIF9wYW5lS2V5U2V0dGluZ3Nba2V5XSA9IHBhbmVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBfcGFuZVNldHRpbmdzID0gW11cbiAgICB9XG5cbiAgICBjb25zdCBfdG9vbHNTZXR0aW5ncyA9IGluaXRpYWxTZXR0aW5ncz8udG9vbHNTZXR0aW5ncyB8fFxuICAgIHtcbiAgICAgICdDaGVja0FyZWEnOiB7XG4gICAgICAgICdmb250U2l6ZSc6IDEwMFxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBfbWFuaWZlc3QgPSBpbml0aWFsU2V0dGluZ3M/Lm1hbmlmZXN0IHx8XG4gICAge1xuICAgICAgbGFuZ3VhZ2VfbmFtZTogdGFyZ2V0QmlibGU/Lm1hbmlmZXN0Py5kdWJsaW5fY29yZT8ubGFuZ3VhZ2U/LnRpdGxlIHx8ICdDdXJyZW50JyxcbiAgICAgIHByb2plY3RGb250OiB0YXJnZXRCaWJsZT8ubWFuaWZlc3Q/LnByb2plY3RGb250IHx8ICcnXG4gICAgfVxuXG4gICAgY29uc3QgYXBwU2V0dGluZ3MgPSBpbml0aWFsU2V0dGluZ3M/LmFwcFNldHRpbmdzIHx8IHt9XG4gICAgX21hbmlmZXN0ID0ge1xuICAgICAgLi4uX21hbmlmZXN0LFxuICAgICAgLi4uYXBwU2V0dGluZ3MgLy8gb2xkZXIgY29kZSBpcyBsb29raW5nIGZvciBhcHBTZXR0aW5ncyBpbiBtYW5pZmVzdFxuICAgIH1cblxuICAgIHNldEJpYmxlcyhfYmlibGVzKVxuICAgIHNldFRhcmdldEJpYmxlKHRhcmdldEJpYmxlKVxuICAgIHNldFNldHRpbmdzKHtcbiAgICAgIHBhbmVTZXR0aW5nczogX3BhbmVTZXR0aW5ncyxcbiAgICAgIHBhbmVLZXlTZXR0aW5nczogX3BhbmVLZXlTZXR0aW5ncyxcbiAgICAgIHRvb2xzU2V0dGluZ3M6IF90b29sc1NldHRpbmdzLFxuICAgICAgbWFuaWZlc3Q6IF9tYW5pZmVzdCxcbiAgICAgIG5ld0NvbW1lbnQ6ICcnLFxuICAgICAgYXBwU2V0dGluZ3MsXG4gICAgfSwgZmFsc2UpXG4gIH1cblxuICAvKipcbiAgICogV3JhcHBlciBmb3IgZ2V0U2NyaXB0dXJlRnJvbVJlZmVyZW5jZSB3aXRoIGN1cnJlbnQgQmlibGVzIGRhdGFcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxhbmcgLSBMYW5ndWFnZSBJRFxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgLSBCaWJsZSBJRFxuICAgKiBAcGFyYW0ge3N0cmluZ30gYm9vayAtIEJvb2sgSURcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoYXB0ZXIgLSBDaGFwdGVyIG51bWJlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmVyc2UgLSBWZXJzZSBudW1iZXJcbiAgICogQHJldHVybnMge3N0cmluZ30gU2NyaXB0dXJlIHRleHRcbiAgICovXG4gIGZ1bmN0aW9uIF9nZXRTY3JpcHR1cmVGcm9tUmVmZXJlbmNlKGxhbmcsIGlkLCBib29rLCBjaGFwdGVyLCB2ZXJzZSkge1xuICAgIHJldHVybiBnZXRTY3JpcHR1cmVGcm9tUmVmZXJlbmNlKGJpYmxlcywgbGFuZywgaWQsIGJvb2ssIGNoYXB0ZXIsIHZlcnNlKVxuICB9XG5cbiAgLyoqXG4gICAqIEVmZmVjdCBob29rIHRvIHVwZGF0ZSBzZXR0aW5ncyB3aGVuIEJpYmxlcyBvciB0YXJnZXQgQmlibGUgY2hhbmdlc1xuICAgKi9cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICB1cGRhdGVTZXR0aW5ncyhiaWJsZXNfLCB0YXJnZXRCaWJsZV8pXG4gIH0sIFtiaWJsZXNfLCB0YXJnZXRCaWJsZV9dKVxuXG4gIC8vIGJ1aWxkIHRoZSB0aXRsZVxuICBjb25zdCB7IHRhcmdldF9sYW5ndWFnZSwgcHJvamVjdCB9ID0gbWFuaWZlc3Q7XG4gIGxldCBleHBhbmRlZFNjcmlwdHVyZVBhbmVUaXRsZSA9IHByb2plY3Q/LnRpdGxlIHx8ICcnO1xuXG4gIGlmICh0YXJnZXRfbGFuZ3VhZ2U/LmJvb2s/Lm5hbWUpIHtcbiAgICBleHBhbmRlZFNjcmlwdHVyZVBhbmVUaXRsZSA9IHRhcmdldF9sYW5ndWFnZS5ib29rLm5hbWU7XG4gIH1cblxuXG4gIGNvbnN0IHN0eWxlUHJvcHMgPSBzdHlsZXMgfHwge31cbiAgY29uc3QgX2NoZWNrZXJTdHlsZXMgPSB7XG4gICAgLi4ubG9jYWxTdHlsZXMuY29udGFpbmVyRGl2LFxuICAgIC4uLnN0eWxlUHJvcHMsXG4gIH1cblxuICByZXR1cm4gKFxuICAgIHJlYWR5VG9EaXNwbGF5Q2hlY2tlciA/XG4gICAgICA8ZGl2IGlkPSdjaGVja2VyJyBzdHlsZT17X2NoZWNrZXJTdHlsZXN9PlxuICAgICAgICA8R3JvdXBNZW51Q29tcG9uZW50XG4gICAgICAgICAgYm9va05hbWU9e2Jvb2tOYW1lfVxuICAgICAgICAgIGNoYW5nZUN1cnJlbnRDb250ZXh0SWQ9e2NoYW5nZUN1cnJlbnRDaGVja199XG4gICAgICAgICAgY29udGV4dElkPXtjdXJyZW50Q29udGV4dElkfVxuICAgICAgICAgIGRpcmVjdGlvbj17ZGlyZWN0aW9ufVxuICAgICAgICAgIGdyb3Vwc0RhdGE9e2dyb3Vwc0RhdGF9XG4gICAgICAgICAgZ3JvdXBzSW5kZXg9e2dyb3Vwc0luZGV4fVxuICAgICAgICAgIHRhcmdldExhbmd1YWdlRm9udD17dGFyZ2V0TGFuZ3VhZ2VGb250fVxuICAgICAgICAgIHRyYW5zbGF0ZT17dHJhbnNsYXRlfVxuICAgICAgICAvPlxuICAgICAgICA8ZGl2IHN0eWxlPXtsb2NhbFN0eWxlcy5jZW50ZXJEaXZ9PlxuICAgICAgICAgIHsgYmlibGVzICYmIE9iamVjdC5rZXlzKGJpYmxlcykubGVuZ3RoICYmXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXtsb2NhbFN0eWxlcy5zY3JpcHR1cmVQYW5lRGl2fT5cbiAgICAgICAgICAgICAgPFNjcmlwdHVyZVBhbmVcbiAgICAgICAgICAgICAgICBhZGRPYmplY3RQcm9wZXJ0eVRvTWFuaWZlc3Q9e2FkZE9iamVjdFByb3BlcnR5VG9NYW5pZmVzdH1cbiAgICAgICAgICAgICAgICBiaWJsZXM9e2JpYmxlc31cbiAgICAgICAgICAgICAgICBjb21wbGV4U2NyaXB0Rm9udHM9e2NvbXBsZXhTY3JpcHRGb250c31cbiAgICAgICAgICAgICAgICBjb250ZXh0SWQ9e2N1cnJlbnRDb250ZXh0SWR9XG4gICAgICAgICAgICAgICAgY3VycmVudFBhbmVTZXR0aW5ncz17cGFuZVNldHRpbmdzfVxuICAgICAgICAgICAgICAgIGVkaXRWZXJzZVJlZj17bnVsbH1cbiAgICAgICAgICAgICAgICBlZGl0VGFyZ2V0VmVyc2U9e2VkaXRUYXJnZXRWZXJzZX1cbiAgICAgICAgICAgICAgICBleHBhbmRlZFNjcmlwdHVyZVBhbmVUaXRsZT17ZXhwYW5kZWRTY3JpcHR1cmVQYW5lVGl0bGV9XG4gICAgICAgICAgICAgICAgZ2V0QXZhaWxhYmxlU2NyaXB0dXJlUGFuZVNlbGVjdGlvbnM9e251bGx9XG4gICAgICAgICAgICAgICAgZ2V0TGV4aWNvbkRhdGE9e2dldExleGljb25EYXRhX31cbiAgICAgICAgICAgICAgICBtYWtlU3VyZUJpYmxlc0xvYWRlZEZvclRvb2w9e251bGx9XG4gICAgICAgICAgICAgICAgcHJvamVjdERldGFpbHNSZWR1Y2VyPXt7IG1hbmlmZXN0IH19XG4gICAgICAgICAgICAgICAgc2VsZWN0aW9ucz17Y3VycmVudFNlbGVjdGlvbnN9XG4gICAgICAgICAgICAgICAgc2V0VG9vbFNldHRpbmdzPXtzZXRUb29sU2V0dGluZ3NTY3JpcHR1cmV9XG4gICAgICAgICAgICAgICAgc2hvd1BvcG92ZXI9e3Nob3dQb3BvdmVyfVxuICAgICAgICAgICAgICAgIG9uRXhwYW5kZWRTY3JpcHR1cmVQYW5lU2hvdz17bnVsbH1cbiAgICAgICAgICAgICAgICB0cmFuc2xhdGU9e3RyYW5zbGF0ZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPENoZWNrSW5mb0NhcmRcbiAgICAgICAgICAgICAgZ2V0U2NyaXB0dXJlRnJvbVJlZmVyZW5jZT17X2dldFNjcmlwdHVyZUZyb21SZWZlcmVuY2V9XG4gICAgICAgICAgICAgIG9uTGlua0NsaWNrPXsoKSA9PiBmYWxzZX1cbiAgICAgICAgICAgICAgb25TZWVNb3JlQ2xpY2s9eygpID0+IGZhbHNlfVxuICAgICAgICAgICAgICBwaHJhc2U9e2dyb3VwUGhyYXNlfVxuICAgICAgICAgICAgICBzZWVNb3JlTGFiZWw9e3RyYW5zbGF0ZSgnc2VlX21vcmUnKX1cbiAgICAgICAgICAgICAgc2hvd1NlZU1vcmVCdXR0b249e2ZhbHNlfVxuICAgICAgICAgICAgICB0aXRsZT17Z3JvdXBUaXRsZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VmVyc2VDaGVja1xuICAgICAgICAgICAgICBhbGlnbmVkR0xUZXh0PXthbGlnbmVkR0xUZXh0fVxuICAgICAgICAgICAgICBib29rRGV0YWlscz17Ym9va0RldGFpbHN9XG4gICAgICAgICAgICAgIGJvb2ttYXJrRW5hYmxlZD17Ym9va21hcmtFbmFibGVkfVxuICAgICAgICAgICAgICBjYW5jZWxFZGl0VmVyc2U9e2NhbmNlbEVkaXRWZXJzZX1cbiAgICAgICAgICAgICAgY2FuY2VsQ29tbWVudD17Y2FuY2VsQ29tbWVudH1cbiAgICAgICAgICAgICAgY2FuY2VsU2VsZWN0aW9uPXtjYW5jZWxTZWxlY3Rpb259XG4gICAgICAgICAgICAgIGNoYW5nZU1vZGU9e2NoYW5nZU1vZGV9XG4gICAgICAgICAgICAgIGNoYW5nZVNlbGVjdGlvbnNJbkxvY2FsU3RhdGU9e2NoYW5nZVNlbGVjdGlvbnNJbkxvY2FsU3RhdGV9XG4gICAgICAgICAgICAgIGNoZWNrSWZDb21tZW50Q2hhbmdlZD17Y2hlY2tJZkNvbW1lbnRDaGFuZ2VkfVxuICAgICAgICAgICAgICBjaGVja0lmVmVyc2VDaGFuZ2VkPXtjaGVja0lmVmVyc2VDaGFuZ2VkfVxuICAgICAgICAgICAgICBjbGVhclNlbGVjdGlvbj17Y2xlYXJTZWxlY3Rpb259XG4gICAgICAgICAgICAgIGNvbW1lbnRUZXh0PXtjb21tZW50VGV4dH1cbiAgICAgICAgICAgICAgY29udGV4dElkPXtjdXJyZW50Q29udGV4dElkfVxuICAgICAgICAgICAgICBkaWFsb2dNb2RhbFZpc2liaWxpdHkgPSB7ZmFsc2V9XG4gICAgICAgICAgICAgIGlzQ29tbWVudENoYW5nZWQ9e2lzQ29tbWVudENoYW5nZWR9XG4gICAgICAgICAgICAgIGlzVmVyc2VDaGFuZ2VkPXtpc1ZlcnNlQ2hhbmdlZH1cbiAgICAgICAgICAgICAgaXNWZXJzZUVkaXRlZD17aXNWZXJzZUVkaXRlZH1cbiAgICAgICAgICAgICAgaGFuZGxlRWRpdFZlcnNlPXtoYW5kbGVFZGl0VmVyc2V9XG4gICAgICAgICAgICAgIGhhbmRsZUdvVG9OZXh0PXtoYW5kbGVHb1RvTmV4dH1cbiAgICAgICAgICAgICAgaGFuZGxlR29Ub1ByZXZpb3VzPXtoYW5kbGVHb1RvUHJldmlvdXN9XG4gICAgICAgICAgICAgIGhhbmRsZU9wZW5EaWFsb2c9e251bGx9XG4gICAgICAgICAgICAgIGlzVmVyc2VJbnZhbGlkYXRlZD17aXNWZXJzZUludmFsaWRhdGVkfVxuICAgICAgICAgICAgICBoYW5kbGVDbG9zZURpYWxvZz17bnVsbH1cbiAgICAgICAgICAgICAgaGFuZGxlQ29tbWVudD17aGFuZGxlQ29tbWVudH1cbiAgICAgICAgICAgICAgaGFuZGxlU2tpcD17bnVsbH1cbiAgICAgICAgICAgICAgaGFuZGxlVGFnc0NoZWNrYm94PXtoYW5kbGVUYWdzQ2hlY2tib3h9XG4gICAgICAgICAgICAgIGxvY2FsTm90aGluZ1RvU2VsZWN0PXt0ZW1wTm90aGluZ1RvU2VsZWN0fVxuICAgICAgICAgICAgICBtYW5pZmVzdD17bWFuaWZlc3R9XG4gICAgICAgICAgICAgIG1heGltdW1TZWxlY3Rpb25zPXttYXhpbXVtU2VsZWN0aW9uc31cbiAgICAgICAgICAgICAgbW9kZT17bW9kZX1cbiAgICAgICAgICAgICAgbmV3U2VsZWN0aW9ucz17dGVtcFNlbGVjdGlvbnN9XG4gICAgICAgICAgICAgIG5vdGhpbmdUb1NlbGVjdD17Y3VycmVudE5vdGhpbmdUb1NlbGVjdH1cbiAgICAgICAgICAgICAgb3BlbkFsZXJ0RGlhbG9nPXtvcGVuQWxlcnREaWFsb2d9XG4gICAgICAgICAgICAgIHNhdmVDb21tZW50PXtzYXZlQ29tbWVudH1cbiAgICAgICAgICAgICAgc2F2ZUVkaXRWZXJzZT17c2F2ZUVkaXRWZXJzZX1cbiAgICAgICAgICAgICAgc2F2ZVNlbGVjdGlvbj17X3NhdmVTZWxlY3Rpb259XG4gICAgICAgICAgICAgIHNlbGVjdGlvbnM9e2N1cnJlbnRTZWxlY3Rpb25zfVxuICAgICAgICAgICAgICBzZXRUb29sU2V0dGluZ3M9e3NldFRvb2xTZXR0aW5nc31cbiAgICAgICAgICAgICAgdGFncz17bmV3VGFncyB8fCBbXX1cbiAgICAgICAgICAgICAgdGFyZ2V0QmlibGU9e3RhcmdldEJpYmxlfVxuICAgICAgICAgICAgICB0YXJnZXRMYW5ndWFnZURldGFpbHM9e3RhcmdldExhbmd1YWdlRGV0YWlsc31cbiAgICAgICAgICAgICAgdG9nZ2xlQm9va21hcms9e3RvZ2dsZUJvb2ttYXJrfVxuICAgICAgICAgICAgICB0b2dnbGVOb3RoaW5nVG9TZWxlY3Q9e3RvZ2dsZU5vdGhpbmdUb1NlbGVjdH1cbiAgICAgICAgICAgICAgdG9vbHNTZXR0aW5ncz17dG9vbHNTZXR0aW5nc31cbiAgICAgICAgICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgICAgICAgICAgIHVuZmlsdGVyZWRWZXJzZVRleHQ9e3VuZmlsdGVyZWRWZXJzZVRleHR9XG4gICAgICAgICAgICAgIHZhbGlkYXRlU2VsZWN0aW9ucz17dmFsaWRhdGVTZWxlY3Rpb25zfVxuICAgICAgICAgICAgICB2ZXJzZVRleHQ9e3ZlcnNlVGV4dH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7c2hvd0RvY3VtZW50ICYmIDxUcmFuc2xhdGlvbkhlbHBzXG4gICAgICAgICAgbW9kYWxBcnRpY2xlPXthcnRpY2xlfVxuICAgICAgICAgIGFydGljbGU9e2FydGljbGV9XG4gICAgICAgICAgZXhwYW5kZWRIZWxwc0J1dHRvbkhvdmVyVGV4dD17J0NsaWNrIHRvIHNob3cgZXhwYW5kZWQgaGVscCBwYW5lJ31cbiAgICAgICAgICBtb2RhbFRpdGxlPXsndHJhbnNsYXRpb25IZWxwcyd9XG4gICAgICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgICAgICAgaXNTaG93SGVscHNFeHBhbmRlZD17c2hvd0hlbHBzTW9kYWx9XG4gICAgICAgICAgb3BlbkV4cGFuZGVkSGVscHNNb2RhbD17dG9nZ2xlSGVscHNNb2RhbH1cbiAgICAgICAgICBzaWRlYmFyVG9nZ2xlPXt0b2dnbGVIZWxwc31cbiAgICAgICAgICBpc1Nob3dIZWxwc1NpZGViYXI9e3Nob3dIZWxwc31cbiAgICAgICAgLz59XG4gICAgICAgIHtwb3BvdmVyUHJvcHM/LnBvcG92ZXJWaXNpYmlsaXR5ICYmXG4gICAgICAgICAgPFBvcG92ZXJDb250YWluZXIgey4uLnBvcG92ZXJQcm9wc30gLz5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICA6XG4gICAgICAnV2FpdGluZyBmb3IgRGF0YSdcbiAgKTtcbn07XG5cbkNoZWNrZXIucHJvcFR5cGVzID0ge1xuICBzdHlsZXM6UHJvcFR5cGVzLm9iamVjdCxcbiAgYWxpZ25lZEdsQmlibGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIGJpYmxlczogUHJvcFR5cGVzLmFycmF5LFxuICBjaGFuZ2VUYXJnZXRWZXJzZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGNoZWNraW5nRGF0YTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBjaGVja1R5cGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNvbnRleHRJZDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBnbFdvcmRzRGF0YTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBnZXRMZXhpY29uRGF0YTogUHJvcFR5cGVzLmZ1bmMsXG4gIGluaXRpYWxTZXR0aW5nczogUHJvcFR5cGVzLm9iamVjdCxcbiAgc2F2ZUNoZWNraW5nRGF0YTogUHJvcFR5cGVzLmZ1bmMsXG4gIHNhdmVTZXR0aW5nczogUHJvcFR5cGVzLmZ1bmMsXG4gIHNob3dEb2N1bWVudDogUHJvcFR5cGVzLmJvb2wsXG4gIHRhcmdldEJpYmxlOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHRhcmdldExhbmd1YWdlRGV0YWlsczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB0cmFuc2xhdGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG59O1xuZXhwb3J0IGRlZmF1bHQgQ2hlY2tlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQTBDQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxVQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxPQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSSxtQkFBQSxHQUFBRixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUssZUFBQSxHQUFBTCxPQUFBO0FBT0EsSUFBQU0sVUFBQSxHQUFBSixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQU8saUJBQUEsR0FBQVAsT0FBQTtBQVNBLElBQUFRLGNBQUEsR0FBQU4sc0JBQUEsQ0FBQUYs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LFVBQVUsRUFBRSxrQkFBbUI7SUFDL0I1VCxTQUFTLEVBQUVBLFNBQVU7SUFDckI2VCxtQkFBbUIsRUFBRXRSLGNBQWU7SUFDcEN1UixzQkFBc0IsRUFBRTNFLGdCQUFpQjtJQUN6QzRFLGFBQWEsRUFBRTFFLFdBQVk7SUFDM0IyRSxrQkFBa0IsRUFBRXhSO0VBQVUsQ0FDL0IsQ0FBQyxFQUNELENBQUFILFlBQVksYUFBWkEsWUFBWSx1QkFBWkEsWUFBWSxDQUFFQyxpQkFBaUIsa0JBQzlCM0ssTUFBQSxZQUFBeWEsYUFBQSxDQUFDNVosaUJBQUEsV0FBZ0IsRUFBSzZKLFlBQWUsQ0FFcEMsQ0FBQyxHQUVOLGtCQUFrQjtBQUV4QixDQUFDO0FBRUQ1RCxPQUFPLENBQUN3VixTQUFTLEdBQUc7RUFDbEJyVSxNQUFNLEVBQUNzVSxxQkFBUyxDQUFDQyxNQUFNO0VBQ3ZCclYsY0FBYyxFQUFFb1YscUJBQVMsQ0FBQ0MsTUFBTTtFQUNoQ25WLE1BQU0sRUFBRWtWLHFCQUFTLENBQUNFLEtBQUs7RUFDdkJsVixpQkFBaUIsRUFBRWdWLHFCQUFTLENBQUNHLElBQUk7RUFDakNsVixZQUFZLEVBQUUrVSxxQkFBUyxDQUFDQyxNQUFNLENBQUNHLFVBQVU7RUFDekNsVixTQUFTLEVBQUU4VSxxQkFBUyxDQUFDSyxNQUFNO0VBQzNCbFYsU0FBUyxFQUFFNlUscUJBQVMsQ0FBQ0MsTUFBTSxDQUFDRyxVQUFVO0VBQ3RDL1UsV0FBVyxFQUFFMlUscUJBQVMsQ0FBQ0MsTUFBTSxDQUFDRyxVQUFVO0VBQ3hDaFYsY0FBYyxFQUFFNFUscUJBQVMsQ0FBQ0csSUFBSTtFQUM5QjdVLGVBQWUsRUFBRTBVLHFCQUFTLENBQUNDLE1BQU07RUFDakMxVSxnQkFBZ0IsRUFBRXlVLHFCQUFTLENBQUNHLElBQUk7RUFDaEMzVSxZQUFZLEVBQUV3VSxxQkFBUyxDQUFDRyxJQUFJO0VBQzVCMVUsWUFBWSxFQUFFdVUscUJBQVMsQ0FBQ00sSUFBSTtFQUM1QjFVLFdBQVcsRUFBRW9VLHFCQUFTLENBQUNDLE1BQU0sQ0FBQ0csVUFBVTtFQUN4Q3ZVLHFCQUFxQixFQUFFbVUscUJBQVMsQ0FBQ0MsTUFBTSxDQUFDRyxVQUFVO0VBQ2xEdFUsU0FBUyxFQUFFa1UscUJBQVMsQ0FBQ0csSUFBSSxDQUFDQztBQUM1QixDQUFDO0FBQUMsSUFBQUcsUUFBQSxHQUFBclcsT0FBQSxjQUNhSyxPQUFPIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports["default"] = void 0;
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
10
|
-
var
|
|
10
|
+
var _material = require("@mui/material");
|
|
11
11
|
var _InstructionsAreaTextSelection = _interopRequireWildcard(require("../InstructionsAreaTextSelection"));
|
|
12
12
|
require("./InstructionsArea.styles.css");
|
|
13
13
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
@@ -18,20 +18,37 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default":
|
|
|
18
18
|
|
|
19
19
|
function getSelectionString(invalidated, translate) {
|
|
20
20
|
if (invalidated) {
|
|
21
|
-
return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("span", null, translate('selection_invalidated'), /*#__PURE__*/_react["default"].createElement(
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
21
|
+
return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("span", null, translate('selection_invalidated'), /*#__PURE__*/_react["default"].createElement(_material.Tooltip, {
|
|
22
|
+
title: translate('invalidated_tooltip'),
|
|
23
|
+
placement: "top",
|
|
24
|
+
arrow: true,
|
|
25
|
+
slotProps: {
|
|
26
|
+
tooltip: {
|
|
27
|
+
sx: {
|
|
28
|
+
backgroundColor: '#333',
|
|
29
|
+
// dark background
|
|
30
|
+
color: '#fff',
|
|
31
|
+
// white text
|
|
32
|
+
fontSize: '0.8em',
|
|
33
|
+
borderRadius: '8px',
|
|
34
|
+
p: 1,
|
|
35
|
+
boxShadow: 3
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
arrow: {
|
|
39
|
+
sx: {
|
|
40
|
+
color: '#333'
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}, /*#__PURE__*/_react["default"].createElement("strong", {
|
|
28
45
|
style: {
|
|
29
46
|
verticalAlign: 'super',
|
|
30
|
-
fontSize: '0.8em'
|
|
47
|
+
fontSize: '0.8em',
|
|
48
|
+
marginLeft: 4,
|
|
49
|
+
cursor: 'help'
|
|
31
50
|
}
|
|
32
|
-
}, "1"))
|
|
33
|
-
id: "selections-instructions-area-tooltip"
|
|
34
|
-
}));
|
|
51
|
+
}, "1"))));
|
|
35
52
|
}
|
|
36
53
|
}
|
|
37
54
|
var InstructionsArea = function InstructionsArea(_ref) {
|
|
@@ -107,4 +124,4 @@ InstructionsArea.defaultProps = {
|
|
|
107
124
|
targetLanguageDirection: 'ltr'
|
|
108
125
|
};
|
|
109
126
|
var _default = exports["default"] = InstructionsArea;
|
|
110
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9wcm9wVHlwZXMiLCJfcmVhY3RUb29sdGlwIiwiX0luc3RydWN0aW9uc0FyZWFUZXh0U2VsZWN0aW9uIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJfdHlwZW9mIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX3QiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImdldFNlbGVjdGlvblN0cmluZyIsImludmFsaWRhdGVkIiwidHJhbnNsYXRlIiwiY3JlYXRlRWxlbWVudCIsInN0eWxlIiwidmVydGljYWxBbGlnbiIsImZvbnRTaXplIiwiVG9vbHRpcCIsImlkIiwiSW5zdHJ1Y3Rpb25zQXJlYSIsIl9yZWYiLCJtb2RlIiwidmVyc2VUZXh0Iiwic2VsZWN0aW9ucyIsImFsaWduZWRHTFRleHQiLCJub3RoaW5nVG9TZWxlY3QiLCJ0YXJnZXRMYW5ndWFnZUZvbnQiLCJkb250U2hvd1RyYW5zbGF0aW9uIiwidGFyZ2V0TGFuZ3VhZ2VEaXJlY3Rpb24iLCJjbGFzc05hbWUiLCJTZWxlY3RlZFRleHQiLCJsZW5ndGgiLCJjb2xvciIsImNvbmNhdCIsImxpbmVIZWlnaHQiLCJsYW5ndWFnZURpcmVjdGlvbiIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsImZ1bmMiLCJpc1JlcXVpcmVkIiwic3RyaW5nIiwiYXJyYXkiLCJib29sIiwiZGVmYXVsdFByb3BzIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RjX3VpX3Rvb2xraXQvVmVyc2VDaGVjay9JbnN0cnVjdGlvbnNBcmVhL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHtUb29sdGlwIGFzIFJlYWN0VG9vbHRpcH0gZnJvbSAncmVhY3QtdG9vbHRpcCc7XG4vLyBjb21wb25lbnRzXG5pbXBvcnQgSW5zdHJ1Y3Rpb25zQXJlYVRleHRTZWxlY3Rpb24sIHsgU2VsZWN0ZWRUZXh0IH0gZnJvbSAnLi4vSW5zdHJ1Y3Rpb25zQXJlYVRleHRTZWxlY3Rpb24nO1xuLy8gY3NzXG5pbXBvcnQgJy4vSW5zdHJ1Y3Rpb25zQXJlYS5zdHlsZXMuY3NzJztcblxuZnVuY3Rpb24gZ2V0U2VsZWN0aW9uU3RyaW5nKGludmFsaWRhdGVkLCB0cmFuc2xhdGUpIHtcbiAgaWYgKGludmFsaWRhdGVkKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXY+XG4gICAgICAgIDxzcGFuPnt0cmFuc2xhdGUoJ3NlbGVjdGlvbl9pbnZhbGlkYXRlZCcpfVxuICAgICAgICAgIDxzdHJvbmdcbiAgICAgICAgICAgIGRhdGEtdGlwPXt0cmFuc2xhdGUoJ2ludmFsaWRhdGVkX3Rvb2x0aXAnKX1cbiAgICAgICAgICAgIGRhdGEtcGxhY2U9XCJ0b3BcIlxuICAgICAgICAgICAgZGF0YS1lZmZlY3Q9XCJmbG9hdFwiXG4gICAgICAgICAgICBkYXRhLXR5cGU9XCJkYXJrXCJcbiAgICAgICAgICAgIGRhdGEtY2xhc3M9XCJzZWxlY3Rpb24tdG9vbHRpcFwiXG4gICAgICAgICAgICBkYXRhLWRlbGF5LWhpZGU9XCIxMDBcIlxuICAgICAgICAgICAgc3R5bGU9e3sgdmVydGljYWxBbGlnbjogJ3N1cGVyJywgZm9udFNpemU6ICcwLjhlbScgfX0+XG4gICAgICAgICAgICAxXG4gICAgICAgICAgPC9zdHJvbmc+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPFJlYWN0VG9vbHRpcCBpZD1cInNlbGVjdGlvbnMtaW5zdHJ1Y3Rpb25zLWFyZWEtdG9vbHRpcFwiLz5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cblxuY29uc3QgSW5zdHJ1Y3Rpb25zQXJlYSA9ICh7XG4gIG1vZGUsXG4gIHZlcnNlVGV4dCxcbiAgdHJhbnNsYXRlLFxuICBzZWxlY3Rpb25zLFxuICBpbnZhbGlkYXRlZCxcbiAgYWxpZ25lZEdMVGV4dCxcbiAgbm90aGluZ1RvU2VsZWN0LFxuICB0YXJnZXRMYW5ndWFnZUZvbnQsXG4gIGRvbnRTaG93VHJhbnNsYXRpb24sXG4gIHRhcmdldExhbmd1YWdlRGlyZWN0aW9uLFxufSkgPT4ge1xuICBpZiAoIXZlcnNlVGV4dCkge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT0naW5zdHJ1Y3Rpb25zLWFyZWEnPlxuICAgICAgICA8c3Bhbj57dHJhbnNsYXRlKCdlbXB0eV92ZXJzZScpfTwvc3Bhbj48YnIgLz5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICBpZiAobm90aGluZ1RvU2VsZWN0KSB7IC8vIGlmIG5vdGhpbmdUb1NlbGVjdCBpcyB0cnVlXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPSdpbnN0cnVjdGlvbnMtYXJlYSc+XG4gICAgICAgIDxzcGFuPnt0cmFuc2xhdGUoJ25vX3NlbGVjdGlvbl9uZWVkZWRfZGVzY3JpcHRpb24nKX08L3NwYW4+PGJyIC8+XG4gICAgICAgIDxTZWxlY3RlZFRleHQ+XG4gICAgICAgICAgPHN0cm9uZyBjbGFzc05hbWU9XCJuby1zZWxlY3Rpb24tbmVlZGVkXCI+XG4gICAgICAgICAgICB7dHJhbnNsYXRlKCdub19zZWxlY3Rpb25fbmVlZGVkJyl9XG4gICAgICAgICAgPC9zdHJvbmc+XG4gICAgICAgIDwvU2VsZWN0ZWRUZXh0PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIGlmIChzZWxlY3Rpb25zLmxlbmd0aCA9PT0gMCAmJiBkb250U2hvd1RyYW5zbGF0aW9uICYmICFpbnZhbGlkYXRlZCkgeyAvLyBpZiBpbnZhbGlkYXRlZCB3ZSBoYWQgcHJldmlvdXMgc2VsZWN0aW9uXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPSdpbnN0cnVjdGlvbnMtYXJlYSc+XG4gICAgICAgIDxzcGFuPnt0cmFuc2xhdGUoJ25vX3NlbGVjdGlvbicpfTwvc3Bhbj48YnIgLz5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICBpZiAobW9kZSA9PT0gJ3NlbGVjdCcgfHwgaW52YWxpZGF0ZWQpIHsgLy8gaWYgaW52YWxpZGF0ZWQgd2UgaGFkIHByZXZpb3VzIHNlbGVjdGlvblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT0naW5zdHJ1Y3Rpb25zLWFyZWEnPlxuICAgICAgICB7Z2V0U2VsZWN0aW9uU3RyaW5nKGludmFsaWRhdGVkLCB0cmFuc2xhdGUpfVxuICAgICAgICA8c3Bhbj57dHJhbnNsYXRlKCdwbGVhc2Vfc2VsZWN0Jyl9PC9zcGFuPjxiciAvPlxuICAgICAgICA8c3Bhbj5cbiAgICAgICAgICA8c3Ryb25nIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tYWNjZW50LWNvbG9yKScgfX0+XG4gICAgICAgICAgICB7YCR7YWxpZ25lZEdMVGV4dH1gfVxuICAgICAgICAgIDwvc3Ryb25nPlxuICAgICAgICA8L3NwYW4+PGJyIC8+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT0naW5zdHJ1Y3Rpb25zLWFyZWEnPlxuICAgICAgPHNwYW4+XG4gICAgICAgIDxzdHJvbmcgc3R5bGU9e3sgY29sb3I6ICd2YXIoLS1hY2NlbnQtY29sb3IpJyB9fT5cbiAgICAgICAgICB7YCR7YWxpZ25lZEdMVGV4dH1gfVxuICAgICAgICA8L3N0cm9uZz5cbiAgICAgIDwvc3Bhbj48YnIgLz5cbiAgICAgIDxzcGFuIHN0eWxlPXt7IGxpbmVIZWlnaHQ6IDIgfX0+e3RyYW5zbGF0ZSgndHJhbnNsYXRlZF9hcycpfTwvc3Bhbj48YnIgLz5cbiAgICAgIDxzcGFuPlxuICAgICAgICA8SW5zdHJ1Y3Rpb25zQXJlYVRleHRTZWxlY3Rpb25cbiAgICAgICAgICBzZWxlY3Rpb25zPXtzZWxlY3Rpb25zfVxuICAgICAgICAgIHZlcnNlVGV4dD17dmVyc2VUZXh0fVxuICAgICAgICAgIHRhcmdldExhbmd1YWdlRm9udD17dGFyZ2V0TGFuZ3VhZ2VGb250fVxuICAgICAgICAgIGxhbmd1YWdlRGlyZWN0aW9uPXt0YXJnZXRMYW5ndWFnZURpcmVjdGlvbn1cbiAgICAgICAgLz5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkluc3RydWN0aW9uc0FyZWEucHJvcFR5cGVzID0ge1xuICB0cmFuc2xhdGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGFsaWduZWRHTFRleHQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgc2VsZWN0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIGRvbnRTaG93VHJhbnNsYXRpb246IFByb3BUeXBlcy5ib29sLFxuICB2ZXJzZVRleHQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgbW9kZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaW52YWxpZGF0ZWQ6IFByb3BUeXBlcy5ib29sLFxuICBub3RoaW5nVG9TZWxlY3Q6IFByb3BUeXBlcy5ib29sLFxuICB0YXJnZXRMYW5ndWFnZUZvbnQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHRhcmdldExhbmd1YWdlRGlyZWN0aW9uOiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcblxuSW5zdHJ1Y3Rpb25zQXJlYS5kZWZhdWx0UHJvcHMgPSB7IHRhcmdldExhbmd1YWdlRGlyZWN0aW9uOiAnbHRyJyB9O1xuXG5leHBvcnQgZGVmYXVsdCBJbnN0cnVjdGlvbnNBcmVhO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsYUFBQSxHQUFBRixPQUFBO0FBRUEsSUFBQUcsOEJBQUEsR0FBQUMsdUJBQUEsQ0FBQUosT0FBQTtBQUVBQSxPQUFBO0FBQXVDLFNBQUFJLHdCQUFBQyxDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBSCx1QkFBQSxZQUFBQSx3QkFBQUMsQ0FBQSxFQUFBQyxDQUFBLFNBQUFBLENBQUEsSUFBQUQsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVBQUEsU0FBQUwsQ0FBQSxNQUFBTSxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxLQUFBQyxTQUFBLG1CQUFBVCxDQUFBLGlCQUFBQSxDQUFBLGdCQUFBVSxPQUFBLENBQUFWLENBQUEsMEJBQUFBLENBQUEsU0FBQVEsQ0FBQSxNQUFBRixDQUFBLEdBQUFMLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLFFBQUFHLENBQUEsQ0FBQUssR0FBQSxDQUFBWCxDQUFBLFVBQUFNLENBQUEsQ0FBQU0sR0FBQSxDQUFBWixDQUFBLEdBQUFNLENBQUEsQ0FBQU8sR0FBQSxDQUFBYixDQUFBLEVBQUFRLENBQUEsY0FBQU0sRUFBQSxJQUFBZCxDQUFBLGdCQUFBYyxFQUFBLE9BQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBaEIsQ0FBQSxFQUFBYyxFQUFBLE9BQUFQLENBQUEsSUFBQUQsQ0FBQSxHQUFBVyxNQUFBLENBQUFDLGNBQUEsS0FBQUQsTUFBQSxDQUFBRSx3QkFBQSxDQUFBbkIsQ0FBQSxFQUFBYyxFQUFBLE9BQUFQLENBQUEsQ0FBQUssR0FBQSxJQUFBTCxDQUFBLENBQUFNLEdBQUEsSUFBQVAsQ0FBQSxDQUFBRSxDQUFBLEVBQUFNLEVBQUEsRUFBQVAsQ0FBQSxJQUFBQyxDQUFBLENBQUFNLEVBQUEsSUFBQWQsQ0FBQSxDQUFBYyxFQUFBLFdBQUFOLENBQUEsS0FBQVIsQ0FBQSxFQUFBQyxDQUFBO0FBQUEsU0FBQVAsdUJBQUFNLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVBQUEsR0FBQUwsQ0FBQSxnQkFBQUEsQ0FBQTtBQUh2Qzs7QUFFQTs7QUFHQSxTQUFTb0Isa0JBQWtCQSxDQUFDQyxXQUFXLEVBQUVDLFNBQVMsRUFBRTtFQUNsRCxJQUFJRCxXQUFXLEVBQUU7SUFDZixvQkFDRTVCLE1BQUEsWUFBQThCLGFBQUEsMkJBQ0U5QixNQUFBLFlBQUE4QixhQUFBLGVBQU9ELFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxlQUN2QzdCLE1BQUEsWUFBQThCLGFBQUE7TUFDRSxZQUFVRCxTQUFTLENBQUMscUJBQXFCLENBQUU7TUFDM0MsY0FBVyxLQUFLO01BQ2hCLGVBQVksT0FBTztNQUNuQixhQUFVLE1BQU07TUFDaEIsY0FBVyxtQkFBbUI7TUFDOUIsbUJBQWdCLEtBQUs7TUFDckJFLEtBQUssRUFBRTtRQUFFQyxhQUFhLEVBQUUsT0FBTztRQUFFQyxRQUFRLEVBQUU7TUFBUTtJQUFFLEdBQUMsR0FFaEQsQ0FDSixDQUFDLGVBQ1BqQyxNQUFBLFlBQUE4QixhQUFBLENBQUMxQixhQUFBLENBQUE4QixPQUFZO01BQUNDLEVBQUUsRUFBQztJQUFzQyxDQUFDLENBQ3JELENBQUM7RUFFVjtBQUNGO0FBRUEsSUFBTUMsZ0JBQWdCLEdBQUcsU0FBbkJBLGdCQUFnQkEsQ0FBQUMsSUFBQSxFQVdoQjtFQUFBLElBVkpDLElBQUksR0FBQUQsSUFBQSxDQUFKQyxJQUFJO0lBQ0pDLFNBQVMsR0FBQUYsSUFBQSxDQUFURSxTQUFTO0lBQ1RWLFNBQVMsR0FBQVEsSUFBQSxDQUFUUixTQUFTO0lBQ1RXLFVBQVUsR0FBQUgsSUFBQSxDQUFWRyxVQUFVO0lBQ1ZaLFdBQVcsR0FBQVMsSUFBQSxDQUFYVCxXQUFXO0lBQ1hhLGFBQWEsR0FBQUosSUFBQSxDQUFiSSxhQUFhO0lBQ2JDLGVBQWUsR0FBQUwsSUFBQSxDQUFmSyxlQUFlO0lBQ2ZDLGtCQUFrQixHQUFBTixJQUFBLENBQWxCTSxrQkFBa0I7SUFDbEJDLG1CQUFtQixHQUFBUCxJQUFBLENBQW5CTyxtQkFBbUI7SUFDbkJDLHVCQUF1QixHQUFBUixJQUFBLENBQXZCUSx1QkFBdUI7RUFFdkIsSUFBSSxDQUFDTixTQUFTLEVBQUU7SUFDZCxvQkFDRXZDLE1BQUEsWUFBQThCLGFBQUE7TUFBS2dCLFNBQVMsRUFBQztJQUFtQixnQkFDaEM5QyxNQUFBLFlBQUE4QixhQUFBLGVBQU9ELFNBQVMsQ0FBQyxhQUFhLENBQVEsQ0FBQyxlQUFBN0IsTUFBQSxZQUFBOEIsYUFBQSxXQUFLLENBQ3pDLENBQUM7RUFFVjtFQUVBLElBQUlZLGVBQWUsRUFBRTtJQUFFO0lBQ3JCLG9CQUNFMUMsTUFBQSxZQUFBOEIsYUFBQTtNQUFLZ0IsU0FBUyxFQUFDO0lBQW1CLGdCQUNoQzlDLE1BQUEsWUFBQThCLGFBQUEsZUFBT0QsU0FBUyxDQUFDLGlDQUFpQyxDQUFRLENBQUMsZUFBQTdCLE1BQUEsWUFBQThCLGFBQUEsV0FBSyxDQUFDLGVBQ2pFOUIsTUFBQSxZQUFBOEIsYUFBQSxDQUFDekIsOEJBQUEsQ0FBQTBDLFlBQVkscUJBQ1gvQyxNQUFBLFlBQUE4QixhQUFBO01BQVFnQixTQUFTLEVBQUM7SUFBcUIsR0FDcENqQixTQUFTLENBQUMscUJBQXFCLENBQzFCLENBQ0ksQ0FDWCxDQUFDO0VBRVY7RUFFQSxJQUFJVyxVQUFVLENBQUNRLE1BQU0sS0FBSyxDQUFDLElBQUlKLG1CQUFtQixJQUFJLENBQUNoQixXQUFXLEVBQUU7SUFBRTtJQUNwRSxvQkFDRTVCLE1BQUEsWUFBQThCLGFBQUE7TUFBS2dCLFNBQVMsRUFBQztJQUFtQixnQkFDaEM5QyxNQUFBLFlBQUE4QixhQUFBLGVBQU9ELFNBQVMsQ0FBQyxjQUFjLENBQVEsQ0FBQyxlQUFBN0IsTUFBQSxZQUFBOEIsYUFBQSxXQUFLLENBQzFDLENBQUM7RUFFVjtFQUVBLElBQUlRLElBQUksS0FBSyxRQUFRLElBQUlWLFdBQVcsRUFBRTtJQUFFO0lBQ3RDLG9CQUNFNUIsTUFBQSxZQUFBOEIsYUFBQTtNQUFLZ0IsU0FBUyxFQUFDO0lBQW1CLEdBQy9CbkIsa0JBQWtCLENBQUNDLFdBQVcsRUFBRUMsU0FBUyxDQUFDLGVBQzNDN0IsTUFBQSxZQUFBOEIsYUFBQSxlQUFPRCxTQUFTLENBQUMsZUFBZSxDQUFRLENBQUMsZUFBQTdCLE1BQUEsWUFBQThCLGFBQUEsV0FBSyxDQUFDLGVBQy9DOUIsTUFBQSxZQUFBOEIsYUFBQSw0QkFDRTlCLE1BQUEsWUFBQThCLGFBQUE7TUFBUUMsS0FBSyxFQUFFO1FBQUVrQixLQUFLLEVBQUU7TUFBc0I7SUFBRSxNQUFBQyxNQUFBLENBQzFDVCxhQUFhLENBQ1gsQ0FDSixDQUFDLGVBQUF6QyxNQUFBLFlBQUE4QixhQUFBLFdBQUssQ0FDVCxDQUFDO0VBRVY7RUFFQSxvQkFDRTlCLE1BQUEsWUFBQThCLGFBQUE7SUFBS2dCLFNBQVMsRUFBQztFQUFtQixnQkFDaEM5QyxNQUFBLFlBQUE4QixhQUFBLDRCQUNFOUIsTUFBQSxZQUFBOEIsYUFBQTtJQUFRQyxLQUFLLEVBQUU7TUFBRWtCLEtBQUssRUFBRTtJQUFzQjtFQUFFLE1BQUFDLE1BQUEsQ0FDMUNULGFBQWEsQ0FDWCxDQUNKLENBQUMsZUFBQXpDLE1BQUEsWUFBQThCLGFBQUEsV0FBSyxDQUFDLGVBQ2I5QixNQUFBLFlBQUE4QixhQUFBO0lBQU1DLEtBQUssRUFBRTtNQUFFb0IsVUFBVSxFQUFFO0lBQUU7RUFBRSxHQUFFdEIsU0FBUyxDQUFDLGVBQWUsQ0FBUSxDQUFDLGVBQUE3QixNQUFBLFlBQUE4QixhQUFBLFdBQUssQ0FBQyxlQUN6RTlCLE1BQUEsWUFBQThCLGFBQUEsNEJBQ0U5QixNQUFBLFlBQUE4QixhQUFBLENBQUN6Qiw4QkFBQSxXQUE2QjtJQUM1Qm1DLFVBQVUsRUFBRUEsVUFBVztJQUN2QkQsU0FBUyxFQUFFQSxTQUFVO0lBQ3JCSSxrQkFBa0IsRUFBRUEsa0JBQW1CO0lBQ3ZDUyxpQkFBaUIsRUFBRVA7RUFBd0IsQ0FDNUMsQ0FDRyxDQUNILENBQUM7QUFFVixDQUFDO0FBRURULGdCQUFnQixDQUFDaUIsU0FBUyxHQUFHO0VBQzNCeEIsU0FBUyxFQUFFeUIscUJBQVMsQ0FBQ0MsSUFBSSxDQUFDQyxVQUFVO0VBQ3BDZixhQUFhLEVBQUVhLHFCQUFTLENBQUNHLE1BQU0sQ0FBQ0QsVUFBVTtFQUMxQ2hCLFVBQVUsRUFBRWMscUJBQVMsQ0FBQ0ksS0FBSyxDQUFDRixVQUFVO0VBQ3RDWixtQkFBbUIsRUFBRVUscUJBQVMsQ0FBQ0ssSUFBSTtFQUNuQ3BCLFNBQVMsRUFBRWUscUJBQVMsQ0FBQ0csTUFBTSxDQUFDRCxVQUFVO0VBQ3RDbEIsSUFBSSxFQUFFZ0IscUJBQVMsQ0FBQ0csTUFBTTtFQUN0QjdCLFdBQVcsRUFBRTBCLHFCQUFTLENBQUNLLElBQUk7RUFDM0JqQixlQUFlLEVBQUVZLHFCQUFTLENBQUNLLElBQUk7RUFDL0JoQixrQkFBa0IsRUFBRVcscUJBQVMsQ0FBQ0csTUFBTTtFQUNwQ1osdUJBQXVCLEVBQUVTLHFCQUFTLENBQUNHO0FBQ3JDLENBQUM7QUFFRHJCLGdCQUFnQixDQUFDd0IsWUFBWSxHQUFHO0VBQUVmLHVCQUF1QixFQUFFO0FBQU0sQ0FBQztBQUFDLElBQUFnQixRQUFBLEdBQUFDLE9BQUEsY0FFcEQxQixnQkFBZ0IiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
127
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9wcm9wVHlwZXMiLCJfbWF0ZXJpYWwiLCJfSW5zdHJ1Y3Rpb25zQXJlYVRleHRTZWxlY3Rpb24iLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZ2V0U2VsZWN0aW9uU3RyaW5nIiwiaW52YWxpZGF0ZWQiLCJ0cmFuc2xhdGUiLCJjcmVhdGVFbGVtZW50IiwiVG9vbHRpcCIsInRpdGxlIiwicGxhY2VtZW50IiwiYXJyb3ciLCJzbG90UHJvcHMiLCJ0b29sdGlwIiwic3giLCJiYWNrZ3JvdW5kQ29sb3IiLCJjb2xvciIsImZvbnRTaXplIiwiYm9yZGVyUmFkaXVzIiwicCIsImJveFNoYWRvdyIsInN0eWxlIiwidmVydGljYWxBbGlnbiIsIm1hcmdpbkxlZnQiLCJjdXJzb3IiLCJJbnN0cnVjdGlvbnNBcmVhIiwiX3JlZiIsIm1vZGUiLCJ2ZXJzZVRleHQiLCJzZWxlY3Rpb25zIiwiYWxpZ25lZEdMVGV4dCIsIm5vdGhpbmdUb1NlbGVjdCIsInRhcmdldExhbmd1YWdlRm9udCIsImRvbnRTaG93VHJhbnNsYXRpb24iLCJ0YXJnZXRMYW5ndWFnZURpcmVjdGlvbiIsImNsYXNzTmFtZSIsIlNlbGVjdGVkVGV4dCIsImxlbmd0aCIsImNvbmNhdCIsImxpbmVIZWlnaHQiLCJsYW5ndWFnZURpcmVjdGlvbiIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsImZ1bmMiLCJpc1JlcXVpcmVkIiwic3RyaW5nIiwiYXJyYXkiLCJib29sIiwiZGVmYXVsdFByb3BzIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RjX3VpX3Rvb2xraXQvVmVyc2VDaGVjay9JbnN0cnVjdGlvbnNBcmVhL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwnO1xuXG4vLyBjb21wb25lbnRzXG5pbXBvcnQgSW5zdHJ1Y3Rpb25zQXJlYVRleHRTZWxlY3Rpb24sIHsgU2VsZWN0ZWRUZXh0IH0gZnJvbSAnLi4vSW5zdHJ1Y3Rpb25zQXJlYVRleHRTZWxlY3Rpb24nO1xuLy8gY3NzXG5pbXBvcnQgJy4vSW5zdHJ1Y3Rpb25zQXJlYS5zdHlsZXMuY3NzJztcblxuZnVuY3Rpb24gZ2V0U2VsZWN0aW9uU3RyaW5nKGludmFsaWRhdGVkLCB0cmFuc2xhdGUpIHtcbiAgaWYgKGludmFsaWRhdGVkKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXY+XG4gICAgICAgIDxzcGFuPlxuICAgICAgICAgIHt0cmFuc2xhdGUoJ3NlbGVjdGlvbl9pbnZhbGlkYXRlZCcpfVxuICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICB0aXRsZT17dHJhbnNsYXRlKCdpbnZhbGlkYXRlZF90b29sdGlwJyl9XG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJ0b3BcIlxuICAgICAgICAgICAgYXJyb3dcbiAgICAgICAgICAgIHNsb3RQcm9wcz17e1xuICAgICAgICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgICAgICAgc3g6IHtcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyMzMzMnLCAgICAgLy8gZGFyayBiYWNrZ3JvdW5kXG4gICAgICAgICAgICAgICAgICBjb2xvcjogJyNmZmYnLCAgICAgICAgICAgICAgICAvLyB3aGl0ZSB0ZXh0XG4gICAgICAgICAgICAgICAgICBmb250U2l6ZTogJzAuOGVtJyxcbiAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzhweCcsXG4gICAgICAgICAgICAgICAgICBwOiAxLFxuICAgICAgICAgICAgICAgICAgYm94U2hhZG93OiAzLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGFycm93OiB7XG4gICAgICAgICAgICAgICAgc3g6IHsgY29sb3I6ICcjMzMzJyB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3Ryb25nXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdmVydGljYWxBbGlnbjogJ3N1cGVyJyxcbiAgICAgICAgICAgICAgICBmb250U2l6ZTogJzAuOGVtJyxcbiAgICAgICAgICAgICAgICBtYXJnaW5MZWZ0OiA0LFxuICAgICAgICAgICAgICAgIGN1cnNvcjogJ2hlbHAnLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAxXG4gICAgICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cblxuY29uc3QgSW5zdHJ1Y3Rpb25zQXJlYSA9ICh7XG4gIG1vZGUsXG4gIHZlcnNlVGV4dCxcbiAgdHJhbnNsYXRlLFxuICBzZWxlY3Rpb25zLFxuICBpbnZhbGlkYXRlZCxcbiAgYWxpZ25lZEdMVGV4dCxcbiAgbm90aGluZ1RvU2VsZWN0LFxuICB0YXJnZXRMYW5ndWFnZUZvbnQsXG4gIGRvbnRTaG93VHJhbnNsYXRpb24sXG4gIHRhcmdldExhbmd1YWdlRGlyZWN0aW9uLFxufSkgPT4ge1xuICBpZiAoIXZlcnNlVGV4dCkge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT0naW5zdHJ1Y3Rpb25zLWFyZWEnPlxuICAgICAgICA8c3Bhbj57dHJhbnNsYXRlKCdlbXB0eV92ZXJzZScpfTwvc3Bhbj48YnIgLz5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICBpZiAobm90aGluZ1RvU2VsZWN0KSB7IC8vIGlmIG5vdGhpbmdUb1NlbGVjdCBpcyB0cnVlXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPSdpbnN0cnVjdGlvbnMtYXJlYSc+XG4gICAgICAgIDxzcGFuPnt0cmFuc2xhdGUoJ25vX3NlbGVjdGlvbl9uZWVkZWRfZGVzY3JpcHRpb24nKX08L3NwYW4+PGJyIC8+XG4gICAgICAgIDxTZWxlY3RlZFRleHQ+XG4gICAgICAgICAgPHN0cm9uZyBjbGFzc05hbWU9XCJuby1zZWxlY3Rpb24tbmVlZGVkXCI+XG4gICAgICAgICAgICB7dHJhbnNsYXRlKCdub19zZWxlY3Rpb25fbmVlZGVkJyl9XG4gICAgICAgICAgPC9zdHJvbmc+XG4gICAgICAgIDwvU2VsZWN0ZWRUZXh0PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIGlmIChzZWxlY3Rpb25zLmxlbmd0aCA9PT0gMCAmJiBkb250U2hvd1RyYW5zbGF0aW9uICYmICFpbnZhbGlkYXRlZCkgeyAvLyBpZiBpbnZhbGlkYXRlZCB3ZSBoYWQgcHJldmlvdXMgc2VsZWN0aW9uXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPSdpbnN0cnVjdGlvbnMtYXJlYSc+XG4gICAgICAgIDxzcGFuPnt0cmFuc2xhdGUoJ25vX3NlbGVjdGlvbicpfTwvc3Bhbj48YnIgLz5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICBpZiAobW9kZSA9PT0gJ3NlbGVjdCcgfHwgaW52YWxpZGF0ZWQpIHsgLy8gaWYgaW52YWxpZGF0ZWQgd2UgaGFkIHByZXZpb3VzIHNlbGVjdGlvblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT0naW5zdHJ1Y3Rpb25zLWFyZWEnPlxuICAgICAgICB7Z2V0U2VsZWN0aW9uU3RyaW5nKGludmFsaWRhdGVkLCB0cmFuc2xhdGUpfVxuICAgICAgICA8c3Bhbj57dHJhbnNsYXRlKCdwbGVhc2Vfc2VsZWN0Jyl9PC9zcGFuPjxiciAvPlxuICAgICAgICA8c3Bhbj5cbiAgICAgICAgICA8c3Ryb25nIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tYWNjZW50LWNvbG9yKScgfX0+XG4gICAgICAgICAgICB7YCR7YWxpZ25lZEdMVGV4dH1gfVxuICAgICAgICAgIDwvc3Ryb25nPlxuICAgICAgICA8L3NwYW4+PGJyIC8+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT0naW5zdHJ1Y3Rpb25zLWFyZWEnPlxuICAgICAgPHNwYW4+XG4gICAgICAgIDxzdHJvbmcgc3R5bGU9e3sgY29sb3I6ICd2YXIoLS1hY2NlbnQtY29sb3IpJyB9fT5cbiAgICAgICAgICB7YCR7YWxpZ25lZEdMVGV4dH1gfVxuICAgICAgICA8L3N0cm9uZz5cbiAgICAgIDwvc3Bhbj48YnIgLz5cbiAgICAgIDxzcGFuIHN0eWxlPXt7IGxpbmVIZWlnaHQ6IDIgfX0+e3RyYW5zbGF0ZSgndHJhbnNsYXRlZF9hcycpfTwvc3Bhbj48YnIgLz5cbiAgICAgIDxzcGFuPlxuICAgICAgICA8SW5zdHJ1Y3Rpb25zQXJlYVRleHRTZWxlY3Rpb25cbiAgICAgICAgICBzZWxlY3Rpb25zPXtzZWxlY3Rpb25zfVxuICAgICAgICAgIHZlcnNlVGV4dD17dmVyc2VUZXh0fVxuICAgICAgICAgIHRhcmdldExhbmd1YWdlRm9udD17dGFyZ2V0TGFuZ3VhZ2VGb250fVxuICAgICAgICAgIGxhbmd1YWdlRGlyZWN0aW9uPXt0YXJnZXRMYW5ndWFnZURpcmVjdGlvbn1cbiAgICAgICAgLz5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkluc3RydWN0aW9uc0FyZWEucHJvcFR5cGVzID0ge1xuICB0cmFuc2xhdGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGFsaWduZWRHTFRleHQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgc2VsZWN0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIGRvbnRTaG93VHJhbnNsYXRpb246IFByb3BUeXBlcy5ib29sLFxuICB2ZXJzZVRleHQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgbW9kZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaW52YWxpZGF0ZWQ6IFByb3BUeXBlcy5ib29sLFxuICBub3RoaW5nVG9TZWxlY3Q6IFByb3BUeXBlcy5ib29sLFxuICB0YXJnZXRMYW5ndWFnZUZvbnQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHRhcmdldExhbmd1YWdlRGlyZWN0aW9uOiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcblxuSW5zdHJ1Y3Rpb25zQXJlYS5kZWZhdWx0UHJvcHMgPSB7IHRhcmdldExhbmd1YWdlRGlyZWN0aW9uOiAnbHRyJyB9O1xuXG5leHBvcnQgZGVmYXVsdCBJbnN0cnVjdGlvbnNBcmVhO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsU0FBQSxHQUFBRixPQUFBO0FBR0EsSUFBQUcsOEJBQUEsR0FBQUMsdUJBQUEsQ0FBQUosT0FBQTtBQUVBQSxPQUFBO0FBQXVDLFNBQUFJLHdCQUFBQyxDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBSCx1QkFBQSxZQUFBQSx3QkFBQUMsQ0FBQSxFQUFBQyxDQUFBLFNBQUFBLENBQUEsSUFBQUQsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVBQUEsU0FBQUwsQ0FBQSxNQUFBTSxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxLQUFBQyxTQUFBLG1CQUFBVCxDQUFBLGlCQUFBQSxDQUFBLGdCQUFBVSxP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
|