@sapui5/sap.fe.core 1.105.0 → 1.105.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/CommonUtils.js +7 -1
  4. package/src/sap/fe/core/CommonUtils.ts +9 -0
  5. package/src/sap/fe/core/ExtensionAPI.js +34 -1
  6. package/src/sap/fe/core/ExtensionAPI.ts +30 -0
  7. package/src/sap/fe/core/PageController.js +9 -7
  8. package/src/sap/fe/core/PageController.ts +10 -1
  9. package/src/sap/fe/core/controllerextensions/EditFlow.js +1 -3
  10. package/src/sap/fe/core/controllerextensions/EditFlow.ts +0 -1
  11. package/src/sap/fe/core/controllerextensions/PageReady.js +80 -243
  12. package/src/sap/fe/core/controllerextensions/PageReady.ts +76 -222
  13. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +2 -3
  14. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +1 -4
  15. package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.js +405 -0
  16. package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.ts +273 -0
  17. package/src/sap/fe/core/converters/annotations/DataField.js +9 -7
  18. package/src/sap/fe/core/converters/annotations/DataField.ts +10 -7
  19. package/src/sap/fe/core/converters/controls/Common/Table.js +1 -2
  20. package/src/sap/fe/core/converters/controls/Common/Table.ts +0 -2
  21. package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +75 -29
  22. package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +62 -36
  23. package/src/sap/fe/core/library.js +1 -1
  24. package/src/sap/fe/core/templating/DataModelPathHelper.js +3 -3
  25. package/src/sap/fe/core/templating/DataModelPathHelper.ts +3 -0
@@ -174,7 +174,7 @@ sap.ui.define(["sap/fe/core/helpers/BindingToolkit", "sap/fe/core/templating/Pro
174
174
  }).join("/");
175
175
  }
176
176
 
177
- if (dataModelObjectPath.targetObject && dataModelObjectPath.targetObject.name && dataModelObjectPath.targetObject._type !== "NavigationProperty" && dataModelObjectPath.targetObject._type !== "EntityType" && dataModelObjectPath.targetObject !== dataModelObjectPath.startingEntitySet) {
177
+ if (dataModelObjectPath.targetObject && dataModelObjectPath.targetObject.name && dataModelObjectPath.targetObject._type !== "NavigationProperty" && dataModelObjectPath.targetObject._type !== "EntityType" && dataModelObjectPath.targetObject._type !== "EntitySet" && dataModelObjectPath.targetObject !== dataModelObjectPath.startingEntitySet) {
178
178
  if (!path.endsWith("/")) {
179
179
  path += "/";
180
180
  }
@@ -216,7 +216,7 @@ sap.ui.define(["sap/fe/core/helpers/BindingToolkit", "sap/fe/core/templating/Pro
216
216
  return np.name;
217
217
  }).join("/");
218
218
 
219
- if (dataModelObjectPath.targetObject && (dataModelObjectPath.targetObject.name || dataModelObjectPath.targetObject.type === "PropertyPath" && dataModelObjectPath.targetObject.value) && dataModelObjectPath.targetObject._type !== "NavigationProperty" && dataModelObjectPath.targetObject !== dataModelObjectPath.startingEntitySet) {
219
+ if (dataModelObjectPath.targetObject && (dataModelObjectPath.targetObject.name || dataModelObjectPath.targetObject.type === "PropertyPath" && dataModelObjectPath.targetObject.value) && dataModelObjectPath.targetObject._type !== "NavigationProperty" && dataModelObjectPath.targetObject._type !== "EntityType" && dataModelObjectPath.targetObject._type !== "EntitySet" && dataModelObjectPath.targetObject !== dataModelObjectPath.startingEntitySet) {
220
220
  if (path.length > 0 && !path.endsWith("/")) {
221
221
  path += "/";
222
222
  }
@@ -421,4 +421,4 @@ sap.ui.define(["sap/fe/core/helpers/BindingToolkit", "sap/fe/core/templating/Pro
421
421
 
422
422
  return _exports;
423
423
  }, false);
424
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRQYXRoUmVsYXRpdmVMb2NhdGlvbiIsImNvbnRleHRQYXRoIiwidmlzaXRlZE5hdlByb3BzIiwibGVuZ3RoIiwibmF2aWdhdGlvblByb3BlcnRpZXMiLCJyZW1haW5pbmdOYXZQcm9wcyIsImZvckVhY2giLCJuYXZQcm9wIiwibmF2SW5kZXgiLCJwdXNoIiwiY29uY2F0Iiwic2xpY2UiLCJjdXJyZW50SWR4IiwiY3VycmVudE5hdiIsIm5leHROYXZQcm9wIiwicGFydG5lciIsIm5hbWUiLCJzcGxpY2UiLCJleHRyYU5hdlByb3AiLCJtYXAiLCJ0YXJnZXRUeXBlIiwiZmluZCIsIm5wIiwiZW5oYW5jZURhdGFNb2RlbFBhdGgiLCJkYXRhTW9kZWxPYmplY3RQYXRoIiwicHJvcGVydHlQYXRoIiwic1Byb3BlcnR5UGF0aCIsImlzUGF0aEV4cHJlc3Npb24iLCJpc0Fubm90YXRpb25QYXRoRXhwcmVzc2lvbiIsInBhdGgiLCJvVGFyZ2V0IiwiJHRhcmdldCIsInRhcmdldEVudGl0eVR5cGUiLCJyZXNvbHZlUGF0aCIsInRhcmdldE9iamVjdCIsImFQYXRoU3BsaXQiLCJzcGxpdCIsImN1cnJlbnRFbnRpdHlTZXQiLCJ0YXJnZXRFbnRpdHlTZXQiLCJjdXJyZW50RW50aXR5VHlwZSIsInJlZHVjZWRFbnRpdHlUeXBlIiwicGF0aFBhcnQiLCJwb3RlbnRpYWxOYXZQcm9wIiwibmF2aWdhdGlvblByb3BlcnR5QmluZGluZyIsImhhc093blByb3BlcnR5IiwidW5kZWZpbmVkIiwic3RhcnRpbmdFbnRpdHlTZXQiLCJjb250ZXh0TG9jYXRpb24iLCJjb252ZXJ0ZWRUeXBlcyIsImdldFRhcmdldEVudGl0eVNldFBhdGgiLCJ0YXJnZXRFbnRpdHlTZXRQYXRoIiwibmF2aWdhdGVkUGF0aHMiLCJqb2luIiwiZ2V0VGFyZ2V0T2JqZWN0UGF0aCIsImJSZWxhdGl2ZSIsIl90eXBlIiwiZW5kc1dpdGgiLCJ0ZXJtIiwiZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCIsImZvckJpbmRpbmdFeHByZXNzaW9uIiwibmF2UHJvcGVydGllcyIsImlzQ29sbGVjdGlvbiIsInR5cGUiLCJ2YWx1ZSIsInF1YWxpZmllciIsImlzUGF0aFVwZGF0YWJsZSIsImV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoIiwiY2hlY2tPblBhdGgiLCJhbm5vdGF0aW9uT2JqZWN0IiwiVXBkYXRlUmVzdHJpY3Rpb25zIiwiVXBkYXRhYmxlIiwiaXNQYXRoU2VhcmNoYWJsZSIsIlNlYXJjaFJlc3RyaWN0aW9ucyIsIlNlYXJjaGFibGUiLCJpc1BhdGhEZWxldGFibGUiLCJEZWxldGVSZXN0cmljdGlvbnMiLCJEZWxldGFibGUiLCJpc1BhdGhJbnNlcnRhYmxlIiwiSW5zZXJ0UmVzdHJpY3Rpb25zIiwiSW5zZXJ0YWJsZSIsImNoZWNrRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucyIsImFsbG93ZWRFeHByZXNzaW9uIiwiZmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucyIsIkZpbHRlclJlc3RyaWN0aW9ucyIsIkZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMiLCJjdXJyZW50T2JqZWN0UmVzdHJpY3Rpb24iLCJyZXN0cmljdGlvbiIsIlByb3BlcnR5IiwiaW5kZXhPZiIsIkFsbG93ZWRFeHByZXNzaW9ucyIsInRvU3RyaW5nIiwiY2hlY2tGdW5jdGlvbiIsImNvbnN0YW50IiwicGFyZW50RW50aXR5U2V0IiwidmlzaXRlZE5hdmlnYXRpb25Qcm9wc05hbWUiLCJhbGxWaXNpdGVkTmF2aWdhdGlvblByb3BzIiwicmVzZXRWaXNpdGVkTmF2UHJvcHMiLCJuYXZpZ2F0aW9uUHJvcGVydHkiLCJjb250YWluc1RhcmdldCIsImZ1bGxOYXZpZ2F0aW9uUGF0aCIsInJlc3RyaWN0aW9ucyIsIl9wYXJlbnRFbnRpdHlTZXQiLCJhbm5vdGF0aW9ucyIsIkNhcGFiaWxpdGllcyIsIk5hdmlnYXRpb25SZXN0cmljdGlvbnMiLCJSZXN0cmljdGVkUHJvcGVydGllcyIsInJlc3RyaWN0ZWROYXZQcm9wIiwiTmF2aWdhdGlvblByb3BlcnR5IiwicmVzdHJpY3Rpb25EZWZpbml0aW9uIiwiX2FsbFZpc2l0ZWROYXZpZ2F0aW9uUHJvcHMiLCJwYXRoUmVsYXRpdmVMb2NhdGlvbiIsInBhdGhWaXNpdG9yRnVuY3Rpb24iLCJwYXRoVmlzaXRvciIsImdldFBhdGhWaXNpdG9yRm9yU2luZ2xldG9uIiwiZXF1YWwiLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJ0YXJnZXRSZXN0cmljdGlvbnMiLCJpZ25vcmVUYXJnZXRDb2xsZWN0aW9uIiwiYXV0aG9yaXplVW5yZXNvbHZhYmxlIiwidW5yZXNvbHZlYWJsZUV4cHJlc3Npb24iXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkRhdGFNb2RlbFBhdGhIZWxwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuXHRDb252ZXJ0ZWRNZXRhZGF0YSxcblx0RW50aXR5U2V0LFxuXHRFbnRpdHlUeXBlLFxuXHROYXZpZ2F0aW9uUHJvcGVydHksXG5cdFByb3BlcnR5LFxuXHRQcm9wZXJ0eVBhdGgsXG5cdFNpbmdsZXRvblxufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHtcblx0RmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9uVHlwZVR5cGVzLFxuXHROYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvbixcblx0TmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb25UeXBlc1xufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NhcGFiaWxpdGllc1wiO1xuaW1wb3J0IHR5cGUge1xuXHRFbnRpdHlTZXRBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXMsXG5cdEVudGl0eVR5cGVBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXNcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9DYXBhYmlsaXRpZXNfRWRtXCI7XG5pbXBvcnQgdHlwZSB7IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBjb25zdGFudCwgZXF1YWwsIGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiwgdW5yZXNvbHZlYWJsZUV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eU9yUGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0Rpc3BsYXlNb2RlRm9ybWF0dGVyXCI7XG5pbXBvcnQgeyBpc0Fubm90YXRpb25QYXRoRXhwcmVzc2lvbiwgaXNQYXRoRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1Byb3BlcnR5SGVscGVyXCI7XG5cbmV4cG9ydCB0eXBlIERhdGFNb2RlbE9iamVjdFBhdGggPSB7XG5cdHN0YXJ0aW5nRW50aXR5U2V0OiBTaW5nbGV0b24gfCBFbnRpdHlTZXQ7XG5cdGNvbnRleHRMb2NhdGlvbj86IERhdGFNb2RlbE9iamVjdFBhdGg7XG5cdG5hdmlnYXRpb25Qcm9wZXJ0aWVzOiBOYXZpZ2F0aW9uUHJvcGVydHlbXTtcblx0dGFyZ2V0RW50aXR5U2V0PzogU2luZ2xldG9uIHwgRW50aXR5U2V0O1xuXHR0YXJnZXRFbnRpdHlUeXBlOiBFbnRpdHlUeXBlO1xuXHR0YXJnZXRPYmplY3Q6IGFueTtcblx0Y29udmVydGVkVHlwZXM6IENvbnZlcnRlZE1ldGFkYXRhO1xufTtcblxudHlwZSBFeHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aCA9IHtcblx0cHJvcGVydHlQYXRoPzogUHJvcGVydHlPclBhdGg8UHJvcGVydHk+O1xuXHRwYXRoVmlzaXRvcj86IEZ1bmN0aW9uO1xuXHRpZ25vcmVUYXJnZXRDb2xsZWN0aW9uPzogYm9vbGVhbjtcblx0YXV0aG9yaXplVW5yZXNvbHZhYmxlPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRQYXRoUmVsYXRpdmVMb2NhdGlvbiA9IGZ1bmN0aW9uIChcblx0Y29udGV4dFBhdGg/OiBEYXRhTW9kZWxPYmplY3RQYXRoLFxuXHR2aXNpdGVkTmF2UHJvcHM6IE5hdmlnYXRpb25Qcm9wZXJ0eVtdID0gW11cbik6IE5hdmlnYXRpb25Qcm9wZXJ0eVtdIHtcblx0aWYgKCFjb250ZXh0UGF0aCkge1xuXHRcdHJldHVybiB2aXNpdGVkTmF2UHJvcHM7XG5cdH0gZWxzZSBpZiAodmlzaXRlZE5hdlByb3BzLmxlbmd0aCA+PSBjb250ZXh0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5sZW5ndGgpIHtcblx0XHRsZXQgcmVtYWluaW5nTmF2UHJvcHM6IE5hdmlnYXRpb25Qcm9wZXJ0eVtdID0gW107XG5cdFx0Y29udGV4dFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMuZm9yRWFjaCgobmF2UHJvcCwgbmF2SW5kZXgpID0+IHtcblx0XHRcdGlmICh2aXNpdGVkTmF2UHJvcHNbbmF2SW5kZXhdICE9PSBuYXZQcm9wKSB7XG5cdFx0XHRcdHJlbWFpbmluZ05hdlByb3BzLnB1c2godmlzaXRlZE5hdlByb3BzW25hdkluZGV4XSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmVtYWluaW5nTmF2UHJvcHMgPSByZW1haW5pbmdOYXZQcm9wcy5jb25jYXQodmlzaXRlZE5hdlByb3BzLnNsaWNlKGNvbnRleHRQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmxlbmd0aCkpO1xuXHRcdC8vIENsZWFuIHVwIE5hdlByb3AgLT4gT3duZXJcblx0XHRsZXQgY3VycmVudElkeCA9IDA7XG5cdFx0d2hpbGUgKHJlbWFpbmluZ05hdlByb3BzLmxlbmd0aCA+IDEgJiYgY3VycmVudElkeCAhPSByZW1haW5pbmdOYXZQcm9wcy5sZW5ndGggLSAxKSB7XG5cdFx0XHRjb25zdCBjdXJyZW50TmF2ID0gcmVtYWluaW5nTmF2UHJvcHNbY3VycmVudElkeF07XG5cdFx0XHRjb25zdCBuZXh0TmF2UHJvcCA9IHJlbWFpbmluZ05hdlByb3BzW2N1cnJlbnRJZHggKyAxXTtcblx0XHRcdGlmIChjdXJyZW50TmF2LnBhcnRuZXIgPT09IG5leHROYXZQcm9wLm5hbWUpIHtcblx0XHRcdFx0cmVtYWluaW5nTmF2UHJvcHMuc3BsaWNlKDAsIDIpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y3VycmVudElkeCsrO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gcmVtYWluaW5nTmF2UHJvcHM7XG5cdH0gZWxzZSB7XG5cdFx0bGV0IGV4dHJhTmF2UHJvcDogTmF2aWdhdGlvblByb3BlcnR5W10gPSBbXTtcblx0XHR2aXNpdGVkTmF2UHJvcHMuZm9yRWFjaCgobmF2UHJvcCwgbmF2SW5kZXgpID0+IHtcblx0XHRcdGlmIChjb250ZXh0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllc1tuYXZJbmRleF0gIT09IG5hdlByb3ApIHtcblx0XHRcdFx0ZXh0cmFOYXZQcm9wLnB1c2godmlzaXRlZE5hdlByb3BzW25hdkluZGV4XSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0ZXh0cmFOYXZQcm9wID0gZXh0cmFOYXZQcm9wLmNvbmNhdChjb250ZXh0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5zbGljZSh2aXNpdGVkTmF2UHJvcHMubGVuZ3RoKSk7XG5cdFx0Ly8gQ2xlYW4gdXAgTmF2UHJvcCAtPiBPd25lclxuXHRcdGxldCBjdXJyZW50SWR4ID0gMDtcblx0XHR3aGlsZSAoZXh0cmFOYXZQcm9wLmxlbmd0aCA+IDEgJiYgY3VycmVudElkeCAhPSBleHRyYU5hdlByb3AubGVuZ3RoIC0gMSkge1xuXHRcdFx0Y29uc3QgY3VycmVudE5hdiA9IGV4dHJhTmF2UHJvcFtjdXJyZW50SWR4XTtcblx0XHRcdGNvbnN0IG5leHROYXZQcm9wID0gZXh0cmFOYXZQcm9wW2N1cnJlbnRJZHggKyAxXTtcblx0XHRcdGlmIChjdXJyZW50TmF2LnBhcnRuZXIgPT09IG5leHROYXZQcm9wLm5hbWUpIHtcblx0XHRcdFx0ZXh0cmFOYXZQcm9wLnNwbGljZSgwLCAyKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGN1cnJlbnRJZHgrKztcblx0XHRcdH1cblx0XHR9XG5cdFx0ZXh0cmFOYXZQcm9wID0gZXh0cmFOYXZQcm9wLm1hcCgobmF2UHJvcCkgPT4ge1xuXHRcdFx0cmV0dXJuIG5hdlByb3AudGFyZ2V0VHlwZS5uYXZpZ2F0aW9uUHJvcGVydGllcy5maW5kKChucCkgPT4gbnAubmFtZSA9PT0gbmF2UHJvcC5wYXJ0bmVyKSBhcyBOYXZpZ2F0aW9uUHJvcGVydHk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIGV4dHJhTmF2UHJvcDtcblx0fVxufTtcblxuZXhwb3J0IGNvbnN0IGVuaGFuY2VEYXRhTW9kZWxQYXRoID0gZnVuY3Rpb24gKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRwcm9wZXJ0eVBhdGg/OiBQcm9wZXJ0eU9yUGF0aDxQcm9wZXJ0eT5cbik6IERhdGFNb2RlbE9iamVjdFBhdGgge1xuXHRsZXQgc1Byb3BlcnR5UGF0aDogc3RyaW5nID0gXCJcIjtcblx0aWYgKChpc1BhdGhFeHByZXNzaW9uKHByb3BlcnR5UGF0aCkgfHwgaXNBbm5vdGF0aW9uUGF0aEV4cHJlc3Npb24ocHJvcGVydHlQYXRoKSkgJiYgcHJvcGVydHlQYXRoLnBhdGgpIHtcblx0XHRzUHJvcGVydHlQYXRoID0gcHJvcGVydHlQYXRoLnBhdGg7XG5cdH0gZWxzZSBpZiAodHlwZW9mIHByb3BlcnR5UGF0aCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdHNQcm9wZXJ0eVBhdGggPSBwcm9wZXJ0eVBhdGg7XG5cdH1cblx0bGV0IG9UYXJnZXQ7XG5cdGlmIChpc1BhdGhFeHByZXNzaW9uKHByb3BlcnR5UGF0aCkgfHwgaXNBbm5vdGF0aW9uUGF0aEV4cHJlc3Npb24ocHJvcGVydHlQYXRoKSkge1xuXHRcdG9UYXJnZXQgPSBwcm9wZXJ0eVBhdGguJHRhcmdldDtcblx0fSBlbHNlIGlmIChkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldEVudGl0eVR5cGUpIHtcblx0XHRvVGFyZ2V0ID0gZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRFbnRpdHlUeXBlLnJlc29sdmVQYXRoKHNQcm9wZXJ0eVBhdGgpO1xuXHR9IGVsc2Uge1xuXHRcdG9UYXJnZXQgPSBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdDtcblx0fVxuXHRjb25zdCBhUGF0aFNwbGl0ID0gc1Byb3BlcnR5UGF0aC5zcGxpdChcIi9cIik7XG5cdGxldCBjdXJyZW50RW50aXR5U2V0ID0gZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRFbnRpdHlTZXQ7XG5cdGxldCBjdXJyZW50RW50aXR5VHlwZSA9IGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0RW50aXR5VHlwZTtcblx0Y29uc3QgbmF2aWdhdGlvblByb3BlcnRpZXMgPSBkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmNvbmNhdCgpO1xuXHQvLyBQcm9jZXNzIG9ubHkgaWYgd2UgaGF2ZSB0byBnbyB0aHJvdWdoIG5hdmlnYXRpb24gcHJvcGVydGllc1xuXG5cdGxldCByZWR1Y2VkRW50aXR5VHlwZTogRW50aXR5VHlwZSB8IHVuZGVmaW5lZCA9IGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0RW50aXR5VHlwZTtcblx0YVBhdGhTcGxpdC5mb3JFYWNoKChwYXRoUGFydDogc3RyaW5nKSA9PiB7XG5cdFx0aWYgKCFyZWR1Y2VkRW50aXR5VHlwZSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBwb3RlbnRpYWxOYXZQcm9wID0gcmVkdWNlZEVudGl0eVR5cGUubmF2aWdhdGlvblByb3BlcnRpZXMuZmluZCgobmF2UHJvcCkgPT4gbmF2UHJvcC5uYW1lID09PSBwYXRoUGFydCk7XG5cdFx0aWYgKHBvdGVudGlhbE5hdlByb3ApIHtcblx0XHRcdG5hdmlnYXRpb25Qcm9wZXJ0aWVzLnB1c2gocG90ZW50aWFsTmF2UHJvcCk7XG5cdFx0XHRjdXJyZW50RW50aXR5VHlwZSA9IHBvdGVudGlhbE5hdlByb3AudGFyZ2V0VHlwZTtcblx0XHRcdGlmIChjdXJyZW50RW50aXR5U2V0ICYmIGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZy5oYXNPd25Qcm9wZXJ0eShwYXRoUGFydCkpIHtcblx0XHRcdFx0Y3VycmVudEVudGl0eVNldCA9IGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1twYXRoUGFydF0gYXMgRW50aXR5U2V0O1xuXHRcdFx0fVxuXHRcdFx0cmVkdWNlZEVudGl0eVR5cGUgPSBjdXJyZW50RW50aXR5VHlwZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmVkdWNlZEVudGl0eVR5cGUgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHR9KTtcblxuXHRyZXR1cm4ge1xuXHRcdHN0YXJ0aW5nRW50aXR5U2V0OiBkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0LFxuXHRcdG5hdmlnYXRpb25Qcm9wZXJ0aWVzOiBuYXZpZ2F0aW9uUHJvcGVydGllcyxcblx0XHRjb250ZXh0TG9jYXRpb246IGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uLFxuXHRcdHRhcmdldEVudGl0eVNldDogY3VycmVudEVudGl0eVNldCxcblx0XHR0YXJnZXRFbnRpdHlUeXBlOiBjdXJyZW50RW50aXR5VHlwZSxcblx0XHR0YXJnZXRPYmplY3Q6IG9UYXJnZXQsXG5cdFx0Y29udmVydGVkVHlwZXM6IGRhdGFNb2RlbE9iamVjdFBhdGguY29udmVydGVkVHlwZXNcblx0fTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUYXJnZXRFbnRpdHlTZXRQYXRoID0gZnVuY3Rpb24gKGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgpOiBzdHJpbmcge1xuXHRsZXQgdGFyZ2V0RW50aXR5U2V0UGF0aDogc3RyaW5nID0gYC8ke2RhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQubmFtZX1gO1xuXHRsZXQgY3VycmVudEVudGl0eVNldCA9IGRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQ7XG5cdGxldCBuYXZpZ2F0ZWRQYXRoczogc3RyaW5nW10gPSBbXTtcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5mb3JFYWNoKChuYXZQcm9wKSA9PiB7XG5cdFx0bmF2aWdhdGVkUGF0aHMucHVzaChuYXZQcm9wLm5hbWUpO1xuXHRcdGlmIChjdXJyZW50RW50aXR5U2V0ICYmIGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZy5oYXNPd25Qcm9wZXJ0eShuYXZpZ2F0ZWRQYXRocy5qb2luKFwiL1wiKSkpIHtcblx0XHRcdHRhcmdldEVudGl0eVNldFBhdGggKz0gYC8kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZy8ke25hdmlnYXRlZFBhdGhzLmpvaW4oXCIvXCIpfS8kYDtcblx0XHRcdGN1cnJlbnRFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdbbmF2aWdhdGVkUGF0aHMuam9pbihcIi9cIildIGFzIEVudGl0eVNldDtcblx0XHRcdG5hdmlnYXRlZFBhdGhzID0gW107XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIHRhcmdldEVudGl0eVNldFBhdGg7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGFyZ2V0T2JqZWN0UGF0aCA9IGZ1bmN0aW9uIChkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoLCBiUmVsYXRpdmU6IGJvb2xlYW4gPSBmYWxzZSk6IHN0cmluZyB7XG5cdGxldCBwYXRoID0gXCJcIjtcblx0aWYgKCFkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0KSB7XG5cdFx0cmV0dXJuIFwiL1wiO1xuXHR9XG5cdGlmICghYlJlbGF0aXZlKSB7XG5cdFx0cGF0aCArPSBgLyR7ZGF0YU1vZGVsT2JqZWN0UGF0aC5zdGFydGluZ0VudGl0eVNldC5uYW1lfWA7XG5cdH1cblx0aWYgKGRhdGFNb2RlbE9iamVjdFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMubGVuZ3RoID4gMCkge1xuXHRcdGlmIChwYXRoLmxlbmd0aCA+IDApIHtcblx0XHRcdHBhdGggKz0gXCIvXCI7XG5cdFx0fVxuXHRcdHBhdGggKz0gZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5tYXAoKG5hdlByb3ApID0+IG5hdlByb3AubmFtZSkuam9pbihcIi9cIik7XG5cdH1cblxuXHRpZiAoXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgJiZcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5uYW1lICYmXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuX3R5cGUgIT09IFwiTmF2aWdhdGlvblByb3BlcnR5XCIgJiZcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5fdHlwZSAhPT0gXCJFbnRpdHlUeXBlXCIgJiZcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCAhPT0gZGF0YU1vZGVsT2JqZWN0UGF0aC5zdGFydGluZ0VudGl0eVNldFxuXHQpIHtcblx0XHRpZiAoIXBhdGguZW5kc1dpdGgoXCIvXCIpKSB7XG5cdFx0XHRwYXRoICs9IFwiL1wiO1xuXHRcdH1cblx0XHRwYXRoICs9IGAke2RhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Lm5hbWV9YDtcblx0fSBlbHNlIGlmIChkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCAmJiBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5oYXNPd25Qcm9wZXJ0eShcInRlcm1cIikpIHtcblx0XHRpZiAocGF0aC5sZW5ndGggPiAwICYmICFwYXRoLmVuZHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0cGF0aCArPSBcIi9cIjtcblx0XHR9XG5cdFx0cGF0aCArPSBgQCR7ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QudGVybX1gO1xuXHR9XG5cdHJldHVybiBwYXRoO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGggPSBmdW5jdGlvbiAoXG5cdGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdGZvckJpbmRpbmdFeHByZXNzaW9uOiBib29sZWFuID0gZmFsc2Vcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGlmIChkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbj8uc3RhcnRpbmdFbnRpdHlTZXQgIT09IGRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQpIHtcblx0XHRyZXR1cm4gZ2V0VGFyZ2V0T2JqZWN0UGF0aChkYXRhTW9kZWxPYmplY3RQYXRoKTtcblx0fVxuXHRjb25zdCBuYXZQcm9wZXJ0aWVzID0gZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24oZGF0YU1vZGVsT2JqZWN0UGF0aC5jb250ZXh0TG9jYXRpb24sIGRhdGFNb2RlbE9iamVjdFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMpO1xuXHRpZiAoZm9yQmluZGluZ0V4cHJlc3Npb24pIHtcblx0XHRpZiAobmF2UHJvcGVydGllcy5maW5kKChucCkgPT4gbnAuaXNDb2xsZWN0aW9uKSkge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblx0bGV0IHBhdGggPSBuYXZQcm9wZXJ0aWVzLm1hcCgobnApID0+IG5wLm5hbWUpLmpvaW4oXCIvXCIpO1xuXHRpZiAoXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgJiZcblx0XHQoZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QubmFtZSB8fFxuXHRcdFx0KGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LnR5cGUgPT09IFwiUHJvcGVydHlQYXRoXCIgJiYgZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QudmFsdWUpKSAmJlxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Ll90eXBlICE9PSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiICYmXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgIT09IGRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXRcblx0KSB7XG5cdFx0aWYgKHBhdGgubGVuZ3RoID4gMCAmJiAhcGF0aC5lbmRzV2l0aChcIi9cIikpIHtcblx0XHRcdHBhdGggKz0gXCIvXCI7XG5cdFx0fVxuXHRcdHBhdGggKz1cblx0XHRcdGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LnR5cGUgPT09IFwiUHJvcGVydHlQYXRoXCJcblx0XHRcdFx0PyBgJHtkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC52YWx1ZX1gXG5cdFx0XHRcdDogYCR7ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QubmFtZX1gO1xuXHR9IGVsc2UgaWYgKGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0ICYmIGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Lmhhc093blByb3BlcnR5KFwidGVybVwiKSkge1xuXHRcdGlmIChwYXRoLmxlbmd0aCA+IDAgJiYgIXBhdGguZW5kc1dpdGgoXCIvXCIpKSB7XG5cdFx0XHRwYXRoICs9IFwiL1wiO1xuXHRcdH1cblx0XHRwYXRoICs9IGBAJHtkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC50ZXJtfWA7XG5cdFx0aWYgKGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Lmhhc093blByb3BlcnR5KFwicXVhbGlmaWVyXCIpICYmICEhZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QucXVhbGlmaWVyKSB7XG5cdFx0XHRwYXRoICs9IGAjJHtkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5xdWFsaWZpZXJ9YDtcblx0XHR9XG5cdH0gZWxzZSBpZiAoIWRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0KSB7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXHRyZXR1cm4gcGF0aDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1BhdGhVcGRhdGFibGUgPSBmdW5jdGlvbiAoXG5cdGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGggfCB1bmRlZmluZWQsXG5cdGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoPzogRXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGhcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBjaGVja09uUGF0aChcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdChhbm5vdGF0aW9uT2JqZWN0OiBOYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvbiB8IEVudGl0eVNldEFubm90YXRpb25zX0NhcGFiaWxpdGllcykgPT4ge1xuXHRcdFx0cmV0dXJuIGFubm90YXRpb25PYmplY3Q/LlVwZGF0ZVJlc3RyaWN0aW9ucz8uVXBkYXRhYmxlO1xuXHRcdH0sXG5cdFx0ZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGhcblx0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1BhdGhTZWFyY2hhYmxlID0gZnVuY3Rpb24gKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoIHwgdW5kZWZpbmVkLFxuXHRleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aD86IEV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoXG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRyZXR1cm4gY2hlY2tPblBhdGgoXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0XHQoYW5ub3RhdGlvbk9iamVjdDogTmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb24gfCBFbnRpdHlTZXRBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXMpID0+IHtcblx0XHRcdHJldHVybiBhbm5vdGF0aW9uT2JqZWN0Py5TZWFyY2hSZXN0cmljdGlvbnM/LlNlYXJjaGFibGU7XG5cdFx0fSxcblx0XHRleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aFxuXHQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzUGF0aERlbGV0YWJsZSA9IGZ1bmN0aW9uIChcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCB8IHVuZGVmaW5lZCxcblx0ZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGg/OiBFeHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aFxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIGNoZWNrT25QYXRoKFxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0KGFubm90YXRpb25PYmplY3Q6IE5hdmlnYXRpb25Qcm9wZXJ0eVJlc3RyaWN0aW9uIHwgRW50aXR5U2V0QW5ub3RhdGlvbnNfQ2FwYWJpbGl0aWVzKSA9PiB7XG5cdFx0XHRyZXR1cm4gYW5ub3RhdGlvbk9iamVjdD8uRGVsZXRlUmVzdHJpY3Rpb25zPy5EZWxldGFibGU7XG5cdFx0fSxcblx0XHRleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aFxuXHQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzUGF0aEluc2VydGFibGUgPSBmdW5jdGlvbiAoXG5cdGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGggfCB1bmRlZmluZWQsXG5cdGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoPzogRXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGhcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBjaGVja09uUGF0aChcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdChhbm5vdGF0aW9uT2JqZWN0OiBOYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvbiB8IEVudGl0eVNldEFubm90YXRpb25zX0NhcGFiaWxpdGllcykgPT4ge1xuXHRcdFx0cmV0dXJuIGFubm90YXRpb25PYmplY3Q/Lkluc2VydFJlc3RyaWN0aW9ucz8uSW5zZXJ0YWJsZTtcblx0XHR9LFxuXHRcdGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoXG5cdCk7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zID0gZnVuY3Rpb24gKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRhbGxvd2VkRXhwcmVzc2lvbjogKHN0cmluZyB8IHVuZGVmaW5lZClbXVxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIGNoZWNrT25QYXRoKFxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0KGFubm90YXRpb25PYmplY3Q6IE5hdmlnYXRpb25Qcm9wZXJ0eVJlc3RyaWN0aW9uIHwgRW50aXR5U2V0QW5ub3RhdGlvbnNfQ2FwYWJpbGl0aWVzIHwgRW50aXR5VHlwZUFubm90YXRpb25zX0NhcGFiaWxpdGllcykgPT4ge1xuXHRcdFx0aWYgKGFubm90YXRpb25PYmplY3QgJiYgXCJGaWx0ZXJSZXN0cmljdGlvbnNcIiBpbiBhbm5vdGF0aW9uT2JqZWN0KSB7XG5cdFx0XHRcdGNvbnN0IGZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnM6IEZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvblR5cGVUeXBlc1tdID1cblx0XHRcdFx0XHQoYW5ub3RhdGlvbk9iamVjdD8uRmlsdGVyUmVzdHJpY3Rpb25zPy5GaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zIGFzIEZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvblR5cGVUeXBlc1tdKSB8fCBbXTtcblx0XHRcdFx0Y29uc3QgY3VycmVudE9iamVjdFJlc3RyaWN0aW9uID0gZmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucy5maW5kKChyZXN0cmljdGlvbikgPT4ge1xuXHRcdFx0XHRcdHJldHVybiAocmVzdHJpY3Rpb24uUHJvcGVydHkgYXMgUHJvcGVydHlQYXRoKS4kdGFyZ2V0ID09PSBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdDtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGlmIChjdXJyZW50T2JqZWN0UmVzdHJpY3Rpb24pIHtcblx0XHRcdFx0XHRyZXR1cm4gYWxsb3dlZEV4cHJlc3Npb24uaW5kZXhPZihjdXJyZW50T2JqZWN0UmVzdHJpY3Rpb24/LkFsbG93ZWRFeHByZXNzaW9ucz8udG9TdHJpbmcoKSkgIT09IC0xO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja09uUGF0aCA9IGZ1bmN0aW9uIChcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCB8IHVuZGVmaW5lZCxcblx0Y2hlY2tGdW5jdGlvbjogRnVuY3Rpb24sXG5cdGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoPzogRXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGhcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGlmICghZGF0YU1vZGVsT2JqZWN0UGF0aCB8fCAhZGF0YU1vZGVsT2JqZWN0UGF0aC5zdGFydGluZ0VudGl0eVNldCkge1xuXHRcdHJldHVybiBjb25zdGFudCh0cnVlKTtcblx0fVxuXG5cdGRhdGFNb2RlbE9iamVjdFBhdGggPSBlbmhhbmNlRGF0YU1vZGVsUGF0aChkYXRhTW9kZWxPYmplY3RQYXRoLCBleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aD8ucHJvcGVydHlQYXRoKTtcblxuXHRsZXQgY3VycmVudEVudGl0eVNldDogRW50aXR5U2V0IHwgU2luZ2xldG9uIHwgbnVsbCA9IGRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQ7XG5cdGxldCBwYXJlbnRFbnRpdHlTZXQ6IEVudGl0eVNldCB8IFNpbmdsZXRvbiB8IG51bGwgPSBudWxsO1xuXHRsZXQgdmlzaXRlZE5hdmlnYXRpb25Qcm9wc05hbWU6IHN0cmluZ1tdID0gW107XG5cdGNvbnN0IGFsbFZpc2l0ZWROYXZpZ2F0aW9uUHJvcHM6IE5hdmlnYXRpb25Qcm9wZXJ0eVtdID0gW107XG5cdGxldCB0YXJnZXRFbnRpdHlTZXQ6IEVudGl0eVNldCB8IFNpbmdsZXRvbiB8IG51bGwgPSBjdXJyZW50RW50aXR5U2V0O1xuXHRjb25zdCB0YXJnZXRFbnRpdHlUeXBlOiBFbnRpdHlUeXBlIHwgbnVsbCA9IGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0RW50aXR5VHlwZTtcblx0bGV0IHJlc2V0VmlzaXRlZE5hdlByb3BzID0gZmFsc2U7XG5cblx0ZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5mb3JFYWNoKChuYXZpZ2F0aW9uUHJvcGVydHk6IE5hdmlnYXRpb25Qcm9wZXJ0eSkgPT4ge1xuXHRcdGlmIChyZXNldFZpc2l0ZWROYXZQcm9wcykge1xuXHRcdFx0dmlzaXRlZE5hdmlnYXRpb25Qcm9wc05hbWUgPSBbXTtcblx0XHR9XG5cdFx0dmlzaXRlZE5hdmlnYXRpb25Qcm9wc05hbWUucHVzaChuYXZpZ2F0aW9uUHJvcGVydHkubmFtZSk7XG5cdFx0YWxsVmlzaXRlZE5hdmlnYXRpb25Qcm9wcy5wdXNoKG5hdmlnYXRpb25Qcm9wZXJ0eSk7XG5cdFx0aWYgKCFuYXZpZ2F0aW9uUHJvcGVydHkuY29udGFpbnNUYXJnZXQpIHtcblx0XHRcdC8vIFdlIHNob3VsZCBoYXZlIGEgbmF2aWdhdGlvblByb3BlcnR5QmluZGluZyBhc3NvY2lhdGVkIHdpdGggdGhlIHBhdGggc28gZmFyIHdoaWNoIGNhbiBjb25zaXN0IG9mIChbQ29udGFpbm1lbnROYXZQcm9wXS8pKltOYXZQcm9wXVxuXHRcdFx0Y29uc3QgZnVsbE5hdmlnYXRpb25QYXRoID0gdmlzaXRlZE5hdmlnYXRpb25Qcm9wc05hbWUuam9pbihcIi9cIik7XG5cdFx0XHRpZiAoY3VycmVudEVudGl0eVNldCAmJiBjdXJyZW50RW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcuaGFzT3duUHJvcGVydHkoZnVsbE5hdmlnYXRpb25QYXRoKSkge1xuXHRcdFx0XHRwYXJlbnRFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0O1xuXHRcdFx0XHRjdXJyZW50RW50aXR5U2V0ID0gY3VycmVudEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nW2Z1bGxOYXZpZ2F0aW9uUGF0aF07XG5cdFx0XHRcdHRhcmdldEVudGl0eVNldCA9IGN1cnJlbnRFbnRpdHlTZXQ7XG5cdFx0XHRcdC8vIElmIHdlIHJlYWNoZWQgYSBuYXZpZ2F0aW9uIHByb3BlcnR5IHdpdGggYSBuYXZpZ2F0aW9ucHJvcGVydHliaW5kaW5nLCB3ZSBuZWVkIHRvIHJlc2V0IHRoZSB2aXNpdGVkIHBhdGggb24gdGhlIG5leHQgaXRlcmF0aW9uIChpZiB0aGVyZSBpcyBvbmUpXG5cdFx0XHRcdHJlc2V0VmlzaXRlZE5hdlByb3BzID0gdHJ1ZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIFdlIHJlYWxseSBzaG91bGQgbm90IGVuZCB1cCBoZXJlIGJ1dCBhdCBsZWFzdCBsZXQncyB0cnkgdG8gYXZvaWQgaW5jb3JyZWN0IGJlaGF2aW9yXG5cdFx0XHRcdHBhcmVudEVudGl0eVNldCA9IGN1cnJlbnRFbnRpdHlTZXQ7XG5cdFx0XHRcdGN1cnJlbnRFbnRpdHlTZXQgPSBudWxsO1xuXHRcdFx0XHRyZXNldFZpc2l0ZWROYXZQcm9wcyA9IHRydWU7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHBhcmVudEVudGl0eVNldCA9IGN1cnJlbnRFbnRpdHlTZXQ7XG5cdFx0XHR0YXJnZXRFbnRpdHlTZXQgPSBudWxsO1xuXHRcdH1cblx0fSk7XG5cblx0Ly8gQXQgdGhpcyBwb2ludCB3ZSBoYXZlIG5hdmlnYXRlZCBkb3duIGFsbCB0aGUgbmF2IHByb3AgYW5kIHdlIHNob3VsZCBoYXZlXG5cdC8vIFRoZSB0YXJnZXQgZW50aXR5U2V0IHBvaW50aW5nIHRvIGVpdGhlciBudWxsIChpbiBjYXNlIG9mIGNvbnRhaW5tZW50IG5hdnByb3AgYSBsYXN0IHBhcnQpLCBvciB0aGUgYWN0dWFsIHRhcmdldCAobm9uIGNvbnRhaW5tZW50IGFzIHRhcmdldClcblx0Ly8gVGhlIHBhcmVudCBlbnRpdHlTZXQgcG9pbnRpbmcgdG8gdGhlIHByZXZpb3VzIGVudGl0eVNldCB1c2VkIGluIHRoZSBwYXRoXG5cdC8vIFZpc2l0ZWROYXZpZ2F0aW9uUGF0aCBzaG91bGQgY29udGFpbiB0aGUgcGF0aCB1cCB0byB0aGlzIHByb3BlcnR5XG5cblx0Ly8gUmVzdHJpY3Rpb25zIHNob3VsZCB0aGVuIGJlIGV2YWx1YXRlZCBhcyBQYXJlbnRFbnRpdHlTZXQuTmF2UmVzdHJpY3Rpb25zW05hdlByb3BlcnR5UGF0aF0gfHwgVGFyZ2V0RW50aXR5U2V0LlJlc3RyaWN0aW9uc1xuXHRjb25zdCBmdWxsTmF2aWdhdGlvblBhdGggPSB2aXNpdGVkTmF2aWdhdGlvblByb3BzTmFtZS5qb2luKFwiL1wiKTtcblx0bGV0IHJlc3RyaWN0aW9ucywgdmlzaXRlZE5hdlByb3BzO1xuXHRpZiAocGFyZW50RW50aXR5U2V0ICE9PSBudWxsKSB7XG5cdFx0Y29uc3QgX3BhcmVudEVudGl0eVNldDogRW50aXR5U2V0ID0gcGFyZW50RW50aXR5U2V0O1xuXHRcdF9wYXJlbnRFbnRpdHlTZXQuYW5ub3RhdGlvbnM/LkNhcGFiaWxpdGllcz8uTmF2aWdhdGlvblJlc3RyaWN0aW9ucz8uUmVzdHJpY3RlZFByb3BlcnRpZXMuZm9yRWFjaChcblx0XHRcdChyZXN0cmljdGVkTmF2UHJvcDogTmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb25UeXBlcykgPT4ge1xuXHRcdFx0XHRpZiAocmVzdHJpY3RlZE5hdlByb3AuTmF2aWdhdGlvblByb3BlcnR5Py50eXBlID09PSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIikge1xuXHRcdFx0XHRcdGNvbnN0IHJlc3RyaWN0aW9uRGVmaW5pdGlvbiA9IGNoZWNrRnVuY3Rpb24ocmVzdHJpY3RlZE5hdlByb3ApO1xuXHRcdFx0XHRcdGlmIChmdWxsTmF2aWdhdGlvblBhdGggPT09IHJlc3RyaWN0ZWROYXZQcm9wLk5hdmlnYXRpb25Qcm9wZXJ0eS52YWx1ZSAmJiByZXN0cmljdGlvbkRlZmluaXRpb24gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdFx0Y29uc3QgX2FsbFZpc2l0ZWROYXZpZ2F0aW9uUHJvcHMgPSBhbGxWaXNpdGVkTmF2aWdhdGlvblByb3BzLnNsaWNlKDAsIC0xKTtcblx0XHRcdFx0XHRcdHZpc2l0ZWROYXZQcm9wcyA9IF9hbGxWaXNpdGVkTmF2aWdhdGlvblByb3BzO1xuXHRcdFx0XHRcdFx0Y29uc3QgcGF0aFJlbGF0aXZlTG9jYXRpb24gPSBnZXRQYXRoUmVsYXRpdmVMb2NhdGlvbihkYXRhTW9kZWxPYmplY3RQYXRoPy5jb250ZXh0TG9jYXRpb24sIHZpc2l0ZWROYXZQcm9wcykubWFwKFxuXHRcdFx0XHRcdFx0XHQobnApID0+IG5wLm5hbWVcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRjb25zdCBwYXRoVmlzaXRvckZ1bmN0aW9uID0gZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGg/LnBhdGhWaXNpdG9yXG5cdFx0XHRcdFx0XHRcdD8gZ2V0UGF0aFZpc2l0b3JGb3JTaW5nbGV0b24oZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGgucGF0aFZpc2l0b3IsIHBhdGhSZWxhdGl2ZUxvY2F0aW9uKVxuXHRcdFx0XHRcdFx0XHQ6IHVuZGVmaW5lZDsgLy8gc2VuZCBwYXRoVmlzaXRvciBmdW5jdGlvbiBvbmx5IHdoZW4gaXQgaXMgZGVmaW5lZCBhbmQgb25seSBzZW5kIGZ1bmN0aW9uIG9yIGRlZmluZWQgYXMgYSBwYXJhbWV0ZXJcblx0XHRcdFx0XHRcdHJlc3RyaWN0aW9ucyA9IGVxdWFsKFxuXHRcdFx0XHRcdFx0XHRnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24ocmVzdHJpY3Rpb25EZWZpbml0aW9uLCBwYXRoUmVsYXRpdmVMb2NhdGlvbiwgdW5kZWZpbmVkLCBwYXRoVmlzaXRvckZ1bmN0aW9uKSxcblx0XHRcdFx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHQpO1xuXHR9XG5cdGxldCB0YXJnZXRSZXN0cmljdGlvbnM7XG5cdGlmICghZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGg/Lmlnbm9yZVRhcmdldENvbGxlY3Rpb24pIHtcblx0XHRsZXQgcmVzdHJpY3Rpb25EZWZpbml0aW9uID0gY2hlY2tGdW5jdGlvbih0YXJnZXRFbnRpdHlTZXQ/LmFubm90YXRpb25zPy5DYXBhYmlsaXRpZXMpO1xuXHRcdGlmICh0YXJnZXRFbnRpdHlTZXQgPT09IG51bGwgJiYgcmVzdHJpY3Rpb25EZWZpbml0aW9uID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHJlc3RyaWN0aW9uRGVmaW5pdGlvbiA9IGNoZWNrRnVuY3Rpb24odGFyZ2V0RW50aXR5VHlwZT8uYW5ub3RhdGlvbnM/LkNhcGFiaWxpdGllcyk7XG5cdFx0fVxuXHRcdGlmIChyZXN0cmljdGlvbkRlZmluaXRpb24gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Y29uc3QgcGF0aFJlbGF0aXZlTG9jYXRpb24gPSBnZXRQYXRoUmVsYXRpdmVMb2NhdGlvbihkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbiwgYWxsVmlzaXRlZE5hdmlnYXRpb25Qcm9wcykubWFwKFxuXHRcdFx0XHQobnApID0+IG5wLm5hbWVcblx0XHRcdCk7XG5cdFx0XHRjb25zdCBwYXRoVmlzaXRvckZ1bmN0aW9uID0gZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGg/LnBhdGhWaXNpdG9yXG5cdFx0XHRcdD8gZ2V0UGF0aFZpc2l0b3JGb3JTaW5nbGV0b24oZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGgucGF0aFZpc2l0b3IsIHBhdGhSZWxhdGl2ZUxvY2F0aW9uKVxuXHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdHRhcmdldFJlc3RyaWN0aW9ucyA9IGVxdWFsKFxuXHRcdFx0XHRnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24ocmVzdHJpY3Rpb25EZWZpbml0aW9uLCBwYXRoUmVsYXRpdmVMb2NhdGlvbiwgdW5kZWZpbmVkLCBwYXRoVmlzaXRvckZ1bmN0aW9uKSxcblx0XHRcdFx0dHJ1ZVxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gKFxuXHRcdHJlc3RyaWN0aW9ucyB8fCB0YXJnZXRSZXN0cmljdGlvbnMgfHwgKGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoPy5hdXRob3JpemVVbnJlc29sdmFibGUgPyB1bnJlc29sdmVhYmxlRXhwcmVzc2lvbiA6IGNvbnN0YW50KHRydWUpKVxuXHQpO1xufTtcbi8vIFRoaXMgaGVscGVyIG1ldGhvZCBpcyB1c2VkIHRvIGFkZCByZWxhdGl2ZSBwYXRoIGxvY2F0aW9uIGFyZ3VtZW50IHRvIHNpbmdsZXRvblBhdGhWaXNpdG9yRnVuY3Rpb24gaS5lLiBwYXRoVmlzaXRvclxuLy8gcGF0aFZpc2l0b3IgbWV0aG9kIGlzIHVzZWQgbGF0ZXIgdG8gZ2V0IHRoZSBjb3JyZWN0IGJpbmRpbmdzIGZvciBzaW5nbGV0b24gZW50aXR5XG4vLyBtZXRob2QgaXMgaW52b2tlZCBsYXRlciBpbiBwYXRoSW5Nb2RlbCgpIG1ldGhvZCB0byBnZXQgdGhlIGNvcnJlY3QgYmluZGluZy5cbmNvbnN0IGdldFBhdGhWaXNpdG9yRm9yU2luZ2xldG9uID0gZnVuY3Rpb24gKHBhdGhWaXNpdG9yOiBGdW5jdGlvbiwgcGF0aFJlbGF0aXZlTG9jYXRpb246IHN0cmluZ1tdKSB7XG5cdHJldHVybiBmdW5jdGlvbiAocGF0aDogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHBhdGhW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
424
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRQYXRoUmVsYXRpdmVMb2NhdGlvbiIsImNvbnRleHRQYXRoIiwidmlzaXRlZE5hdlByb3BzIiwibGVuZ3RoIiwibmF2aWdhdGlvblByb3BlcnRpZXMiLCJyZW1haW5pbmdOYXZQcm9wcyIsImZvckVhY2giLCJuYXZQcm9wIiwibmF2SW5kZXgiLCJwdXNoIiwiY29uY2F0Iiwic2xpY2UiLCJjdXJyZW50SWR4IiwiY3VycmVudE5hdiIsIm5leHROYXZQcm9wIiwicGFydG5lciIsIm5hbWUiLCJzcGxpY2UiLCJleHRyYU5hdlByb3AiLCJtYXAiLCJ0YXJnZXRUeXBlIiwiZmluZCIsIm5wIiwiZW5oYW5jZURhdGFNb2RlbFBhdGgiLCJkYXRhTW9kZWxPYmplY3RQYXRoIiwicHJvcGVydHlQYXRoIiwic1Byb3BlcnR5UGF0aCIsImlzUGF0aEV4cHJlc3Npb24iLCJpc0Fubm90YXRpb25QYXRoRXhwcmVzc2lvbiIsInBhdGgiLCJvVGFyZ2V0IiwiJHRhcmdldCIsInRhcmdldEVudGl0eVR5cGUiLCJyZXNvbHZlUGF0aCIsInRhcmdldE9iamVjdCIsImFQYXRoU3BsaXQiLCJzcGxpdCIsImN1cnJlbnRFbnRpdHlTZXQiLCJ0YXJnZXRFbnRpdHlTZXQiLCJjdXJyZW50RW50aXR5VHlwZSIsInJlZHVjZWRFbnRpdHlUeXBlIiwicGF0aFBhcnQiLCJwb3RlbnRpYWxOYXZQcm9wIiwibmF2aWdhdGlvblByb3BlcnR5QmluZGluZyIsImhhc093blByb3BlcnR5IiwidW5kZWZpbmVkIiwic3RhcnRpbmdFbnRpdHlTZXQiLCJjb250ZXh0TG9jYXRpb24iLCJjb252ZXJ0ZWRUeXBlcyIsImdldFRhcmdldEVudGl0eVNldFBhdGgiLCJ0YXJnZXRFbnRpdHlTZXRQYXRoIiwibmF2aWdhdGVkUGF0aHMiLCJqb2luIiwiZ2V0VGFyZ2V0T2JqZWN0UGF0aCIsImJSZWxhdGl2ZSIsIl90eXBlIiwiZW5kc1dpdGgiLCJ0ZXJtIiwiZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCIsImZvckJpbmRpbmdFeHByZXNzaW9uIiwibmF2UHJvcGVydGllcyIsImlzQ29sbGVjdGlvbiIsInR5cGUiLCJ2YWx1ZSIsInF1YWxpZmllciIsImlzUGF0aFVwZGF0YWJsZSIsImV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoIiwiY2hlY2tPblBhdGgiLCJhbm5vdGF0aW9uT2JqZWN0IiwiVXBkYXRlUmVzdHJpY3Rpb25zIiwiVXBkYXRhYmxlIiwiaXNQYXRoU2VhcmNoYWJsZSIsIlNlYXJjaFJlc3RyaWN0aW9ucyIsIlNlYXJjaGFibGUiLCJpc1BhdGhEZWxldGFibGUiLCJEZWxldGVSZXN0cmljdGlvbnMiLCJEZWxldGFibGUiLCJpc1BhdGhJbnNlcnRhYmxlIiwiSW5zZXJ0UmVzdHJpY3Rpb25zIiwiSW5zZXJ0YWJsZSIsImNoZWNrRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucyIsImFsbG93ZWRFeHByZXNzaW9uIiwiZmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucyIsIkZpbHRlclJlc3RyaWN0aW9ucyIsIkZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMiLCJjdXJyZW50T2JqZWN0UmVzdHJpY3Rpb24iLCJyZXN0cmljdGlvbiIsIlByb3BlcnR5IiwiaW5kZXhPZiIsIkFsbG93ZWRFeHByZXNzaW9ucyIsInRvU3RyaW5nIiwiY2hlY2tGdW5jdGlvbiIsImNvbnN0YW50IiwicGFyZW50RW50aXR5U2V0IiwidmlzaXRlZE5hdmlnYXRpb25Qcm9wc05hbWUiLCJhbGxWaXNpdGVkTmF2aWdhdGlvblByb3BzIiwicmVzZXRWaXNpdGVkTmF2UHJvcHMiLCJuYXZpZ2F0aW9uUHJvcGVydHkiLCJjb250YWluc1RhcmdldCIsImZ1bGxOYXZpZ2F0aW9uUGF0aCIsInJlc3RyaWN0aW9ucyIsIl9wYXJlbnRFbnRpdHlTZXQiLCJhbm5vdGF0aW9ucyIsIkNhcGFiaWxpdGllcyIsIk5hdmlnYXRpb25SZXN0cmljdGlvbnMiLCJSZXN0cmljdGVkUHJvcGVydGllcyIsInJlc3RyaWN0ZWROYXZQcm9wIiwiTmF2aWdhdGlvblByb3BlcnR5IiwicmVzdHJpY3Rpb25EZWZpbml0aW9uIiwiX2FsbFZpc2l0ZWROYXZpZ2F0aW9uUHJvcHMiLCJwYXRoUmVsYXRpdmVMb2NhdGlvbiIsInBhdGhWaXNpdG9yRnVuY3Rpb24iLCJwYXRoVmlzaXRvciIsImdldFBhdGhWaXNpdG9yRm9yU2luZ2xldG9uIiwiZXF1YWwiLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJ0YXJnZXRSZXN0cmljdGlvbnMiLCJpZ25vcmVUYXJnZXRDb2xsZWN0aW9uIiwiYXV0aG9yaXplVW5yZXNvbHZhYmxlIiwidW5yZXNvbHZlYWJsZUV4cHJlc3Npb24iXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkRhdGFNb2RlbFBhdGhIZWxwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuXHRDb252ZXJ0ZWRNZXRhZGF0YSxcblx0RW50aXR5U2V0LFxuXHRFbnRpdHlUeXBlLFxuXHROYXZpZ2F0aW9uUHJvcGVydHksXG5cdFByb3BlcnR5LFxuXHRQcm9wZXJ0eVBhdGgsXG5cdFNpbmdsZXRvblxufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHtcblx0RmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9uVHlwZVR5cGVzLFxuXHROYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvbixcblx0TmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb25UeXBlc1xufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NhcGFiaWxpdGllc1wiO1xuaW1wb3J0IHR5cGUge1xuXHRFbnRpdHlTZXRBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXMsXG5cdEVudGl0eVR5cGVBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXNcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9DYXBhYmlsaXRpZXNfRWRtXCI7XG5pbXBvcnQgdHlwZSB7IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBjb25zdGFudCwgZXF1YWwsIGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiwgdW5yZXNvbHZlYWJsZUV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eU9yUGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0Rpc3BsYXlNb2RlRm9ybWF0dGVyXCI7XG5pbXBvcnQgeyBpc0Fubm90YXRpb25QYXRoRXhwcmVzc2lvbiwgaXNQYXRoRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1Byb3BlcnR5SGVscGVyXCI7XG5cbmV4cG9ydCB0eXBlIERhdGFNb2RlbE9iamVjdFBhdGggPSB7XG5cdHN0YXJ0aW5nRW50aXR5U2V0OiBTaW5nbGV0b24gfCBFbnRpdHlTZXQ7XG5cdGNvbnRleHRMb2NhdGlvbj86IERhdGFNb2RlbE9iamVjdFBhdGg7XG5cdG5hdmlnYXRpb25Qcm9wZXJ0aWVzOiBOYXZpZ2F0aW9uUHJvcGVydHlbXTtcblx0dGFyZ2V0RW50aXR5U2V0PzogU2luZ2xldG9uIHwgRW50aXR5U2V0O1xuXHR0YXJnZXRFbnRpdHlUeXBlOiBFbnRpdHlUeXBlO1xuXHR0YXJnZXRPYmplY3Q6IGFueTtcblx0Y29udmVydGVkVHlwZXM6IENvbnZlcnRlZE1ldGFkYXRhO1xufTtcblxudHlwZSBFeHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aCA9IHtcblx0cHJvcGVydHlQYXRoPzogUHJvcGVydHlPclBhdGg8UHJvcGVydHk+O1xuXHRwYXRoVmlzaXRvcj86IEZ1bmN0aW9uO1xuXHRpZ25vcmVUYXJnZXRDb2xsZWN0aW9uPzogYm9vbGVhbjtcblx0YXV0aG9yaXplVW5yZXNvbHZhYmxlPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRQYXRoUmVsYXRpdmVMb2NhdGlvbiA9IGZ1bmN0aW9uIChcblx0Y29udGV4dFBhdGg/OiBEYXRhTW9kZWxPYmplY3RQYXRoLFxuXHR2aXNpdGVkTmF2UHJvcHM6IE5hdmlnYXRpb25Qcm9wZXJ0eVtdID0gW11cbik6IE5hdmlnYXRpb25Qcm9wZXJ0eVtdIHtcblx0aWYgKCFjb250ZXh0UGF0aCkge1xuXHRcdHJldHVybiB2aXNpdGVkTmF2UHJvcHM7XG5cdH0gZWxzZSBpZiAodmlzaXRlZE5hdlByb3BzLmxlbmd0aCA+PSBjb250ZXh0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5sZW5ndGgpIHtcblx0XHRsZXQgcmVtYWluaW5nTmF2UHJvcHM6IE5hdmlnYXRpb25Qcm9wZXJ0eVtdID0gW107XG5cdFx0Y29udGV4dFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMuZm9yRWFjaCgobmF2UHJvcCwgbmF2SW5kZXgpID0+IHtcblx0XHRcdGlmICh2aXNpdGVkTmF2UHJvcHNbbmF2SW5kZXhdICE9PSBuYXZQcm9wKSB7XG5cdFx0XHRcdHJlbWFpbmluZ05hdlByb3BzLnB1c2godmlzaXRlZE5hdlByb3BzW25hdkluZGV4XSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmVtYWluaW5nTmF2UHJvcHMgPSByZW1haW5pbmdOYXZQcm9wcy5jb25jYXQodmlzaXRlZE5hdlByb3BzLnNsaWNlKGNvbnRleHRQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmxlbmd0aCkpO1xuXHRcdC8vIENsZWFuIHVwIE5hdlByb3AgLT4gT3duZXJcblx0XHRsZXQgY3VycmVudElkeCA9IDA7XG5cdFx0d2hpbGUgKHJlbWFpbmluZ05hdlByb3BzLmxlbmd0aCA+IDEgJiYgY3VycmVudElkeCAhPSByZW1haW5pbmdOYXZQcm9wcy5sZW5ndGggLSAxKSB7XG5cdFx0XHRjb25zdCBjdXJyZW50TmF2ID0gcmVtYWluaW5nTmF2UHJvcHNbY3VycmVudElkeF07XG5cdFx0XHRjb25zdCBuZXh0TmF2UHJvcCA9IHJlbWFpbmluZ05hdlByb3BzW2N1cnJlbnRJZHggKyAxXTtcblx0XHRcdGlmIChjdXJyZW50TmF2LnBhcnRuZXIgPT09IG5leHROYXZQcm9wLm5hbWUpIHtcblx0XHRcdFx0cmVtYWluaW5nTmF2UHJvcHMuc3BsaWNlKDAsIDIpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y3VycmVudElkeCsrO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gcmVtYWluaW5nTmF2UHJvcHM7XG5cdH0gZWxzZSB7XG5cdFx0bGV0IGV4dHJhTmF2UHJvcDogTmF2aWdhdGlvblByb3BlcnR5W10gPSBbXTtcblx0XHR2aXNpdGVkTmF2UHJvcHMuZm9yRWFjaCgobmF2UHJvcCwgbmF2SW5kZXgpID0+IHtcblx0XHRcdGlmIChjb250ZXh0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllc1tuYXZJbmRleF0gIT09IG5hdlByb3ApIHtcblx0XHRcdFx0ZXh0cmFOYXZQcm9wLnB1c2godmlzaXRlZE5hdlByb3BzW25hdkluZGV4XSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0ZXh0cmFOYXZQcm9wID0gZXh0cmFOYXZQcm9wLmNvbmNhdChjb250ZXh0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5zbGljZSh2aXNpdGVkTmF2UHJvcHMubGVuZ3RoKSk7XG5cdFx0Ly8gQ2xlYW4gdXAgTmF2UHJvcCAtPiBPd25lclxuXHRcdGxldCBjdXJyZW50SWR4ID0gMDtcblx0XHR3aGlsZSAoZXh0cmFOYXZQcm9wLmxlbmd0aCA+IDEgJiYgY3VycmVudElkeCAhPSBleHRyYU5hdlByb3AubGVuZ3RoIC0gMSkge1xuXHRcdFx0Y29uc3QgY3VycmVudE5hdiA9IGV4dHJhTmF2UHJvcFtjdXJyZW50SWR4XTtcblx0XHRcdGNvbnN0IG5leHROYXZQcm9wID0gZXh0cmFOYXZQcm9wW2N1cnJlbnRJZHggKyAxXTtcblx0XHRcdGlmIChjdXJyZW50TmF2LnBhcnRuZXIgPT09IG5leHROYXZQcm9wLm5hbWUpIHtcblx0XHRcdFx0ZXh0cmFOYXZQcm9wLnNwbGljZSgwLCAyKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGN1cnJlbnRJZHgrKztcblx0XHRcdH1cblx0XHR9XG5cdFx0ZXh0cmFOYXZQcm9wID0gZXh0cmFOYXZQcm9wLm1hcCgobmF2UHJvcCkgPT4ge1xuXHRcdFx0cmV0dXJuIG5hdlByb3AudGFyZ2V0VHlwZS5uYXZpZ2F0aW9uUHJvcGVydGllcy5maW5kKChucCkgPT4gbnAubmFtZSA9PT0gbmF2UHJvcC5wYXJ0bmVyKSBhcyBOYXZpZ2F0aW9uUHJvcGVydHk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIGV4dHJhTmF2UHJvcDtcblx0fVxufTtcblxuZXhwb3J0IGNvbnN0IGVuaGFuY2VEYXRhTW9kZWxQYXRoID0gZnVuY3Rpb24gKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRwcm9wZXJ0eVBhdGg/OiBQcm9wZXJ0eU9yUGF0aDxQcm9wZXJ0eT5cbik6IERhdGFNb2RlbE9iamVjdFBhdGgge1xuXHRsZXQgc1Byb3BlcnR5UGF0aDogc3RyaW5nID0gXCJcIjtcblx0aWYgKChpc1BhdGhFeHByZXNzaW9uKHByb3BlcnR5UGF0aCkgfHwgaXNBbm5vdGF0aW9uUGF0aEV4cHJlc3Npb24ocHJvcGVydHlQYXRoKSkgJiYgcHJvcGVydHlQYXRoLnBhdGgpIHtcblx0XHRzUHJvcGVydHlQYXRoID0gcHJvcGVydHlQYXRoLnBhdGg7XG5cdH0gZWxzZSBpZiAodHlwZW9mIHByb3BlcnR5UGF0aCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdHNQcm9wZXJ0eVBhdGggPSBwcm9wZXJ0eVBhdGg7XG5cdH1cblx0bGV0IG9UYXJnZXQ7XG5cdGlmIChpc1BhdGhFeHByZXNzaW9uKHByb3BlcnR5UGF0aCkgfHwgaXNBbm5vdGF0aW9uUGF0aEV4cHJlc3Npb24ocHJvcGVydHlQYXRoKSkge1xuXHRcdG9UYXJnZXQgPSBwcm9wZXJ0eVBhdGguJHRhcmdldDtcblx0fSBlbHNlIGlmIChkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldEVudGl0eVR5cGUpIHtcblx0XHRvVGFyZ2V0ID0gZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRFbnRpdHlUeXBlLnJlc29sdmVQYXRoKHNQcm9wZXJ0eVBhdGgpO1xuXHR9IGVsc2Uge1xuXHRcdG9UYXJnZXQgPSBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdDtcblx0fVxuXHRjb25zdCBhUGF0aFNwbGl0ID0gc1Byb3BlcnR5UGF0aC5zcGxpdChcIi9cIik7XG5cdGxldCBjdXJyZW50RW50aXR5U2V0ID0gZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRFbnRpdHlTZXQ7XG5cdGxldCBjdXJyZW50RW50aXR5VHlwZSA9IGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0RW50aXR5VHlwZTtcblx0Y29uc3QgbmF2aWdhdGlvblByb3BlcnRpZXMgPSBkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmNvbmNhdCgpO1xuXHQvLyBQcm9jZXNzIG9ubHkgaWYgd2UgaGF2ZSB0byBnbyB0aHJvdWdoIG5hdmlnYXRpb24gcHJvcGVydGllc1xuXG5cdGxldCByZWR1Y2VkRW50aXR5VHlwZTogRW50aXR5VHlwZSB8IHVuZGVmaW5lZCA9IGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0RW50aXR5VHlwZTtcblx0YVBhdGhTcGxpdC5mb3JFYWNoKChwYXRoUGFydDogc3RyaW5nKSA9PiB7XG5cdFx0aWYgKCFyZWR1Y2VkRW50aXR5VHlwZSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBwb3RlbnRpYWxOYXZQcm9wID0gcmVkdWNlZEVudGl0eVR5cGUubmF2aWdhdGlvblByb3BlcnRpZXMuZmluZCgobmF2UHJvcCkgPT4gbmF2UHJvcC5uYW1lID09PSBwYXRoUGFydCk7XG5cdFx0aWYgKHBvdGVudGlhbE5hdlByb3ApIHtcblx0XHRcdG5hdmlnYXRpb25Qcm9wZXJ0aWVzLnB1c2gocG90ZW50aWFsTmF2UHJvcCk7XG5cdFx0XHRjdXJyZW50RW50aXR5VHlwZSA9IHBvdGVudGlhbE5hdlByb3AudGFyZ2V0VHlwZTtcblx0XHRcdGlmIChjdXJyZW50RW50aXR5U2V0ICYmIGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZy5oYXNPd25Qcm9wZXJ0eShwYXRoUGFydCkpIHtcblx0XHRcdFx0Y3VycmVudEVudGl0eVNldCA9IGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1twYXRoUGFydF0gYXMgRW50aXR5U2V0O1xuXHRcdFx0fVxuXHRcdFx0cmVkdWNlZEVudGl0eVR5cGUgPSBjdXJyZW50RW50aXR5VHlwZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmVkdWNlZEVudGl0eVR5cGUgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHR9KTtcblxuXHRyZXR1cm4ge1xuXHRcdHN0YXJ0aW5nRW50aXR5U2V0OiBkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0LFxuXHRcdG5hdmlnYXRpb25Qcm9wZXJ0aWVzOiBuYXZpZ2F0aW9uUHJvcGVydGllcyxcblx0XHRjb250ZXh0TG9jYXRpb246IGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uLFxuXHRcdHRhcmdldEVudGl0eVNldDogY3VycmVudEVudGl0eVNldCxcblx0XHR0YXJnZXRFbnRpdHlUeXBlOiBjdXJyZW50RW50aXR5VHlwZSxcblx0XHR0YXJnZXRPYmplY3Q6IG9UYXJnZXQsXG5cdFx0Y29udmVydGVkVHlwZXM6IGRhdGFNb2RlbE9iamVjdFBhdGguY29udmVydGVkVHlwZXNcblx0fTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUYXJnZXRFbnRpdHlTZXRQYXRoID0gZnVuY3Rpb24gKGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgpOiBzdHJpbmcge1xuXHRsZXQgdGFyZ2V0RW50aXR5U2V0UGF0aDogc3RyaW5nID0gYC8ke2RhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQubmFtZX1gO1xuXHRsZXQgY3VycmVudEVudGl0eVNldCA9IGRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQ7XG5cdGxldCBuYXZpZ2F0ZWRQYXRoczogc3RyaW5nW10gPSBbXTtcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5mb3JFYWNoKChuYXZQcm9wKSA9PiB7XG5cdFx0bmF2aWdhdGVkUGF0aHMucHVzaChuYXZQcm9wLm5hbWUpO1xuXHRcdGlmIChjdXJyZW50RW50aXR5U2V0ICYmIGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZy5oYXNPd25Qcm9wZXJ0eShuYXZpZ2F0ZWRQYXRocy5qb2luKFwiL1wiKSkpIHtcblx0XHRcdHRhcmdldEVudGl0eVNldFBhdGggKz0gYC8kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZy8ke25hdmlnYXRlZFBhdGhzLmpvaW4oXCIvXCIpfS8kYDtcblx0XHRcdGN1cnJlbnRFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdbbmF2aWdhdGVkUGF0aHMuam9pbihcIi9cIildIGFzIEVudGl0eVNldDtcblx0XHRcdG5hdmlnYXRlZFBhdGhzID0gW107XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIHRhcmdldEVudGl0eVNldFBhdGg7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGFyZ2V0T2JqZWN0UGF0aCA9IGZ1bmN0aW9uIChkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoLCBiUmVsYXRpdmU6IGJvb2xlYW4gPSBmYWxzZSk6IHN0cmluZyB7XG5cdGxldCBwYXRoID0gXCJcIjtcblx0aWYgKCFkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0KSB7XG5cdFx0cmV0dXJuIFwiL1wiO1xuXHR9XG5cdGlmICghYlJlbGF0aXZlKSB7XG5cdFx0cGF0aCArPSBgLyR7ZGF0YU1vZGVsT2JqZWN0UGF0aC5zdGFydGluZ0VudGl0eVNldC5uYW1lfWA7XG5cdH1cblx0aWYgKGRhdGFNb2RlbE9iamVjdFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMubGVuZ3RoID4gMCkge1xuXHRcdGlmIChwYXRoLmxlbmd0aCA+IDApIHtcblx0XHRcdHBhdGggKz0gXCIvXCI7XG5cdFx0fVxuXHRcdHBhdGggKz0gZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5tYXAoKG5hdlByb3ApID0+IG5hdlByb3AubmFtZSkuam9pbihcIi9cIik7XG5cdH1cblxuXHRpZiAoXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgJiZcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5uYW1lICYmXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuX3R5cGUgIT09IFwiTmF2aWdhdGlvblByb3BlcnR5XCIgJiZcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5fdHlwZSAhPT0gXCJFbnRpdHlUeXBlXCIgJiZcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5fdHlwZSAhPT0gXCJFbnRpdHlTZXRcIiAmJlxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0ICE9PSBkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0XG5cdCkge1xuXHRcdGlmICghcGF0aC5lbmRzV2l0aChcIi9cIikpIHtcblx0XHRcdHBhdGggKz0gXCIvXCI7XG5cdFx0fVxuXHRcdHBhdGggKz0gYCR7ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QubmFtZX1gO1xuXHR9IGVsc2UgaWYgKGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0ICYmIGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Lmhhc093blByb3BlcnR5KFwidGVybVwiKSkge1xuXHRcdGlmIChwYXRoLmxlbmd0aCA+IDAgJiYgIXBhdGguZW5kc1dpdGgoXCIvXCIpKSB7XG5cdFx0XHRwYXRoICs9IFwiL1wiO1xuXHRcdH1cblx0XHRwYXRoICs9IGBAJHtkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC50ZXJtfWA7XG5cdH1cblx0cmV0dXJuIHBhdGg7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCA9IGZ1bmN0aW9uIChcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0Zm9yQmluZGluZ0V4cHJlc3Npb246IGJvb2xlYW4gPSBmYWxzZVxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0aWYgKGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uPy5zdGFydGluZ0VudGl0eVNldCAhPT0gZGF0YU1vZGVsT2JqZWN0UGF0aC5zdGFydGluZ0VudGl0eVNldCkge1xuXHRcdHJldHVybiBnZXRUYXJnZXRPYmplY3RQYXRoKGRhdGFNb2RlbE9iamVjdFBhdGgpO1xuXHR9XG5cdGNvbnN0IG5hdlByb3BlcnRpZXMgPSBnZXRQYXRoUmVsYXRpdmVMb2NhdGlvbihkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbiwgZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcyk7XG5cdGlmIChmb3JCaW5kaW5nRXhwcmVzc2lvbikge1xuXHRcdGlmIChuYXZQcm9wZXJ0aWVzLmZpbmQoKG5wKSA9PiBucC5pc0NvbGxlY3Rpb24pKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXHRsZXQgcGF0aCA9IG5hdlByb3BlcnRpZXMubWFwKChucCkgPT4gbnAubmFtZSkuam9pbihcIi9cIik7XG5cdGlmIChcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCAmJlxuXHRcdChkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5uYW1lIHx8XG5cdFx0XHQoZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QudHlwZSA9PT0gXCJQcm9wZXJ0eVBhdGhcIiAmJiBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC52YWx1ZSkpICYmXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuX3R5cGUgIT09IFwiTmF2aWdhdGlvblByb3BlcnR5XCIgJiZcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5fdHlwZSAhPT0gXCJFbnRpdHlUeXBlXCIgJiZcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5fdHlwZSAhPT0gXCJFbnRpdHlTZXRcIiAmJlxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0ICE9PSBkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0XG5cdCkge1xuXHRcdGlmIChwYXRoLmxlbmd0aCA+IDAgJiYgIXBhdGguZW5kc1dpdGgoXCIvXCIpKSB7XG5cdFx0XHRwYXRoICs9IFwiL1wiO1xuXHRcdH1cblx0XHRwYXRoICs9XG5cdFx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC50eXBlID09PSBcIlByb3BlcnR5UGF0aFwiXG5cdFx0XHRcdD8gYCR7ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QudmFsdWV9YFxuXHRcdFx0XHQ6IGAke2RhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Lm5hbWV9YDtcblx0fSBlbHNlIGlmIChkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCAmJiBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5oYXNPd25Qcm9wZXJ0eShcInRlcm1cIikpIHtcblx0XHRpZiAocGF0aC5sZW5ndGggPiAwICYmICFwYXRoLmVuZHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0cGF0aCArPSBcIi9cIjtcblx0XHR9XG5cdFx0cGF0aCArPSBgQCR7ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QudGVybX1gO1xuXHRcdGlmIChkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5oYXNPd25Qcm9wZXJ0eShcInF1YWxpZmllclwiKSAmJiAhIWRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LnF1YWxpZmllcikge1xuXHRcdFx0cGF0aCArPSBgIyR7ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QucXVhbGlmaWVyfWA7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKCFkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCkge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0cmV0dXJuIHBhdGg7XG59O1xuXG5leHBvcnQgY29uc3QgaXNQYXRoVXBkYXRhYmxlID0gZnVuY3Rpb24gKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoIHwgdW5kZWZpbmVkLFxuXHRleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aD86IEV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoXG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRyZXR1cm4gY2hlY2tPblBhdGgoXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0XHQoYW5ub3RhdGlvbk9iamVjdDogTmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb24gfCBFbnRpdHlTZXRBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXMpID0+IHtcblx0XHRcdHJldHVybiBhbm5vdGF0aW9uT2JqZWN0Py5VcGRhdGVSZXN0cmljdGlvbnM/LlVwZGF0YWJsZTtcblx0XHR9LFxuXHRcdGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoXG5cdCk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNQYXRoU2VhcmNoYWJsZSA9IGZ1bmN0aW9uIChcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCB8IHVuZGVmaW5lZCxcblx0ZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGg/OiBFeHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aFxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIGNoZWNrT25QYXRoKFxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0KGFubm90YXRpb25PYmplY3Q6IE5hdmlnYXRpb25Qcm9wZXJ0eVJlc3RyaWN0aW9uIHwgRW50aXR5U2V0QW5ub3RhdGlvbnNfQ2FwYWJpbGl0aWVzKSA9PiB7XG5cdFx0XHRyZXR1cm4gYW5ub3RhdGlvbk9iamVjdD8uU2VhcmNoUmVzdHJpY3Rpb25zPy5TZWFyY2hhYmxlO1xuXHRcdH0sXG5cdFx0ZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGhcblx0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1BhdGhEZWxldGFibGUgPSBmdW5jdGlvbiAoXG5cdGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGggfCB1bmRlZmluZWQsXG5cdGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoPzogRXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGhcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBjaGVja09uUGF0aChcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdChhbm5vdGF0aW9uT2JqZWN0OiBOYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvbiB8IEVudGl0eVNldEFubm90YXRpb25zX0NhcGFiaWxpdGllcykgPT4ge1xuXHRcdFx0cmV0dXJuIGFubm90YXRpb25PYmplY3Q/LkRlbGV0ZVJlc3RyaWN0aW9ucz8uRGVsZXRhYmxlO1xuXHRcdH0sXG5cdFx0ZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGhcblx0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1BhdGhJbnNlcnRhYmxlID0gZnVuY3Rpb24gKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoIHwgdW5kZWZpbmVkLFxuXHRleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aD86IEV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoXG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRyZXR1cm4gY2hlY2tPblBhdGgoXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0XHQoYW5ub3RhdGlvbk9iamVjdDogTmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb24gfCBFbnRpdHlTZXRBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXMpID0+IHtcblx0XHRcdHJldHVybiBhbm5vdGF0aW9uT2JqZWN0Py5JbnNlcnRSZXN0cmljdGlvbnM/Lkluc2VydGFibGU7XG5cdFx0fSxcblx0XHRleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aFxuXHQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucyA9IGZ1bmN0aW9uIChcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0YWxsb3dlZEV4cHJlc3Npb246IChzdHJpbmcgfCB1bmRlZmluZWQpW11cbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBjaGVja09uUGF0aChcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdChhbm5vdGF0aW9uT2JqZWN0OiBOYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvbiB8IEVudGl0eVNldEFubm90YXRpb25zX0NhcGFiaWxpdGllcyB8IEVudGl0eVR5cGVBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXMpID0+IHtcblx0XHRcdGlmIChhbm5vdGF0aW9uT2JqZWN0ICYmIFwiRmlsdGVyUmVzdHJpY3Rpb25zXCIgaW4gYW5ub3RhdGlvbk9iamVjdCkge1xuXHRcdFx0XHRjb25zdCBmaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zOiBGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25UeXBlVHlwZXNbXSA9XG5cdFx0XHRcdFx0KGFubm90YXRpb25PYmplY3Q/LkZpbHRlclJlc3RyaWN0aW9ucz8uRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucyBhcyBGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25UeXBlVHlwZXNbXSkgfHwgW107XG5cdFx0XHRcdGNvbnN0IGN1cnJlbnRPYmplY3RSZXN0cmljdGlvbiA9IGZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMuZmluZCgocmVzdHJpY3Rpb24pID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gKHJlc3RyaWN0aW9uLlByb3BlcnR5IGFzIFByb3BlcnR5UGF0aCkuJHRhcmdldCA9PT0gZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3Q7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAoY3VycmVudE9iamVjdFJlc3RyaWN0aW9uKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGFsbG93ZWRFeHByZXNzaW9uLmluZGV4T2YoY3VycmVudE9iamVjdFJlc3RyaWN0aW9uPy5BbGxvd2VkRXhwcmVzc2lvbnM/LnRvU3RyaW5nKCkpICE9PSAtMTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cdCk7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tPblBhdGggPSBmdW5jdGlvbiAoXG5cdGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGggfCB1bmRlZmluZWQsXG5cdGNoZWNrRnVuY3Rpb246IEZ1bmN0aW9uLFxuXHRleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aD86IEV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoXG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRpZiAoIWRhdGFNb2RlbE9iamVjdFBhdGggfHwgIWRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQpIHtcblx0XHRyZXR1cm4gY29uc3RhbnQodHJ1ZSk7XG5cdH1cblxuXHRkYXRhTW9kZWxPYmplY3RQYXRoID0gZW5oYW5jZURhdGFNb2RlbFBhdGgoZGF0YU1vZGVsT2JqZWN0UGF0aCwgZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGg/LnByb3BlcnR5UGF0aCk7XG5cblx0bGV0IGN1cnJlbnRFbnRpdHlTZXQ6IEVudGl0eVNldCB8IFNpbmdsZXRvbiB8IG51bGwgPSBkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0O1xuXHRsZXQgcGFyZW50RW50aXR5U2V0OiBFbnRpdHlTZXQgfCBTaW5nbGV0b24gfCBudWxsID0gbnVsbDtcblx0bGV0IHZpc2l0ZWROYXZpZ2F0aW9uUHJvcHNOYW1lOiBzdHJpbmdbXSA9IFtdO1xuXHRjb25zdCBhbGxWaXNpdGVkTmF2aWdhdGlvblByb3BzOiBOYXZpZ2F0aW9uUHJvcGVydHlbXSA9IFtdO1xuXHRsZXQgdGFyZ2V0RW50aXR5U2V0OiBFbnRpdHlTZXQgfCBTaW5nbGV0b24gfCBudWxsID0gY3VycmVudEVudGl0eVNldDtcblx0Y29uc3QgdGFyZ2V0RW50aXR5VHlwZTogRW50aXR5VHlwZSB8IG51bGwgPSBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldEVudGl0eVR5cGU7XG5cdGxldCByZXNldFZpc2l0ZWROYXZQcm9wcyA9IGZhbHNlO1xuXG5cdGRhdGFNb2RlbE9iamVjdFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMuZm9yRWFjaCgobmF2aWdhdGlvblByb3BlcnR5OiBOYXZpZ2F0aW9uUHJvcGVydHkpID0+IHtcblx0XHRpZiAocmVzZXRWaXNpdGVkTmF2UHJvcHMpIHtcblx0XHRcdHZpc2l0ZWROYXZpZ2F0aW9uUHJvcHNOYW1lID0gW107XG5cdFx0fVxuXHRcdHZpc2l0ZWROYXZpZ2F0aW9uUHJvcHNOYW1lLnB1c2gobmF2aWdhdGlvblByb3BlcnR5Lm5hbWUpO1xuXHRcdGFsbFZpc2l0ZWROYXZpZ2F0aW9uUHJvcHMucHVzaChuYXZpZ2F0aW9uUHJvcGVydHkpO1xuXHRcdGlmICghbmF2aWdhdGlvblByb3BlcnR5LmNvbnRhaW5zVGFyZ2V0KSB7XG5cdFx0XHQvLyBXZSBzaG91bGQgaGF2ZSBhIG5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcgYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXRoIHNvIGZhciB3aGljaCBjYW4gY29uc2lzdCBvZiAoW0NvbnRhaW5tZW50TmF2UHJvcF0vKSpbTmF2UHJvcF1cblx0XHRcdGNvbnN0IGZ1bGxOYXZpZ2F0aW9uUGF0aCA9IHZpc2l0ZWROYXZpZ2F0aW9uUHJvcHNOYW1lLmpvaW4oXCIvXCIpO1xuXHRcdFx0aWYgKGN1cnJlbnRFbnRpdHlTZXQgJiYgY3VycmVudEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nLmhhc093blByb3BlcnR5KGZ1bGxOYXZpZ2F0aW9uUGF0aCkpIHtcblx0XHRcdFx0cGFyZW50RW50aXR5U2V0ID0gY3VycmVudEVudGl0eVNldDtcblx0XHRcdFx0Y3VycmVudEVudGl0eVNldCA9IGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1tmdWxsTmF2aWdhdGlvblBhdGhdO1xuXHRcdFx0XHR0YXJnZXRFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0O1xuXHRcdFx0XHQvLyBJZiB3ZSByZWFjaGVkIGEgbmF2aWdhdGlvbiBwcm9wZXJ0eSB3aXRoIGEgbmF2aWdhdGlvbnByb3BlcnR5YmluZGluZywgd2UgbmVlZCB0byByZXNldCB0aGUgdmlzaXRlZCBwYXRoIG9uIHRoZSBuZXh0IGl0ZXJhdGlvbiAoaWYgdGhlcmUgaXMgb25lKVxuXHRcdFx0XHRyZXNldFZpc2l0ZWROYXZQcm9wcyA9IHRydWU7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBXZSByZWFsbHkgc2hvdWxkIG5vdCBlbmQgdXAgaGVyZSBidXQgYXQgbGVhc3QgbGV0J3MgdHJ5IHRvIGF2b2lkIGluY29ycmVjdCBiZWhhdmlvclxuXHRcdFx0XHRwYXJlbnRFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0O1xuXHRcdFx0XHRjdXJyZW50RW50aXR5U2V0ID0gbnVsbDtcblx0XHRcdFx0cmVzZXRWaXNpdGVkTmF2UHJvcHMgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRwYXJlbnRFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0O1xuXHRcdFx0dGFyZ2V0RW50aXR5U2V0ID0gbnVsbDtcblx0XHR9XG5cdH0pO1xuXG5cdC8vIEF0IHRoaXMgcG9pbnQgd2UgaGF2ZSBuYXZpZ2F0ZWQgZG93biBhbGwgdGhlIG5hdiBwcm9wIGFuZCB3ZSBzaG91bGQgaGF2ZVxuXHQvLyBUaGUgdGFyZ2V0IGVudGl0eVNldCBwb2ludGluZyB0byBlaXRoZXIgbnVsbCAoaW4gY2FzZSBvZiBjb250YWlubWVudCBuYXZwcm9wIGEgbGFzdCBwYXJ0KSwgb3IgdGhlIGFjdHVhbCB0YXJnZXQgKG5vbiBjb250YWlubWVudCBhcyB0YXJnZXQpXG5cdC8vIFRoZSBwYXJlbnQgZW50aXR5U2V0IHBvaW50aW5nIHRvIHRoZSBwcmV2aW91cyBlbnRpdHlTZXQgdXNlZCBpbiB0aGUgcGF0aFxuXHQvLyBWaXNpdGVkTmF2aWdhdGlvblBhdGggc2hvdWxkIGNvbnRhaW4gdGhlIHBhdGggdXAgdG8gdGhpcyBwcm9wZXJ0eVxuXG5cdC8vIFJlc3RyaWN0aW9ucyBzaG91bGQgdGhlbiBiZSBldmFsdWF0ZWQgYXMgUGFyZW50RW50aXR5U2V0Lk5hdlJlc3RyaWN0aW9uc1tOYXZQcm9wZXJ0eVBhdGhdIHx8IFRhcmdldEVudGl0eVNldC5SZXN0cmljdGlvbnNcblx0Y29uc3QgZnVsbE5hdmlnYXRpb25QYXRoID0gdmlzaXRlZE5hdmlnYXRpb25Qcm9wc05hbWUuam9pbihcIi9cIik7XG5cdGxldCByZXN0cmljdGlvbnMsIHZpc2l0ZWROYXZQcm9wcztcblx0aWYgKHBhcmVudEVudGl0eVNldCAhPT0gbnVsbCkge1xuXHRcdGNvbnN0IF9wYXJlbnRFbnRpdHlTZXQ6IEVudGl0eVNldCA9IHBhcmVudEVudGl0eVNldDtcblx0XHRfcGFyZW50RW50aXR5U2V0LmFubm90YXRpb25zPy5DYXBhYmlsaXRpZXM/Lk5hdmlnYXRpb25SZXN0cmljdGlvbnM/LlJlc3RyaWN0ZWRQcm9wZXJ0aWVzLmZvckVhY2goXG5cdFx0XHQocmVzdHJpY3RlZE5hdlByb3A6IE5hdmlnYXRpb25Qcm9wZXJ0eVJlc3RyaWN0aW9uVHlwZXMpID0+IHtcblx0XHRcdFx0aWYgKHJlc3RyaWN0ZWROYXZQcm9wLk5hdmlnYXRpb25Qcm9wZXJ0eT8udHlwZSA9PT0gXCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCIpIHtcblx0XHRcdFx0XHRjb25zdCByZXN0cmljdGlvbkRlZmluaXRpb24gPSBjaGVja0Z1bmN0aW9uKHJlc3RyaWN0ZWROYXZQcm9wKTtcblx0XHRcdFx0XHRpZiAoZnVsbE5hdmlnYXRpb25QYXRoID09PSByZXN0cmljdGVkTmF2UHJvcC5OYXZpZ2F0aW9uUHJvcGVydHkudmFsdWUgJiYgcmVzdHJpY3Rpb25EZWZpbml0aW9uICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRcdGNvbnN0IF9hbGxWaXNpdGVkTmF2aWdhdGlvblByb3BzID0gYWxsVmlzaXRlZE5hdmlnYXRpb25Qcm9wcy5zbGljZSgwLCAtMSk7XG5cdFx0XHRcdFx0XHR2aXNpdGVkTmF2UHJvcHMgPSBfYWxsVmlzaXRlZE5hdmlnYXRpb25Qcm9wcztcblx0XHRcdFx0XHRcdGNvbnN0IHBhdGhSZWxhdGl2ZUxvY2F0aW9uID0gZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24oZGF0YU1vZGVsT2JqZWN0UGF0aD8uY29udGV4dExvY2F0aW9uLCB2aXNpdGVkTmF2UHJvcHMpLm1hcChcblx0XHRcdFx0XHRcdFx0KG5wKSA9PiBucC5uYW1lXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0Y29uc3QgcGF0aFZpc2l0b3JGdW5jdGlvbiA9IGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoPy5wYXRoVmlzaXRvclxuXHRcdFx0XHRcdFx0XHQ/IGdldFBhdGhWaXNpdG9yRm9yU2luZ2xldG9uKGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoLnBhdGhWaXNpdG9yLCBwYXRoUmVsYXRpdmVMb2NhdGlvbilcblx0XHRcdFx0XHRcdFx0OiB1bmRlZmluZWQ7IC8vIHNlbmQgcGF0aFZpc2l0b3IgZnVuY3Rpb24gb25seSB3aGVuIGl0IGlzIGRlZmluZWQgYW5kIG9ubHkgc2VuZCBmdW5jdGlvbiBvciBkZWZpbmVkIGFzIGEgcGFyYW1ldGVyXG5cdFx0XHRcdFx0XHRyZXN0cmljdGlvbnMgPSBlcXVhbChcblx0XHRcdFx0XHRcdFx0Z2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKHJlc3RyaWN0aW9uRGVmaW5pdGlvbiwgcGF0aFJlbGF0aXZlTG9jYXRpb24sIHVuZGVmaW5lZCwgcGF0aFZpc2l0b3JGdW5jdGlvbiksXG5cdFx0XHRcdFx0XHRcdHRydWVcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0KTtcblx0fVxuXHRsZXQgdGFyZ2V0UmVzdHJpY3Rpb25zO1xuXHRpZiAoIWV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoPy5pZ25vcmVUYXJnZXRDb2xsZWN0aW9uKSB7XG5cdFx0bGV0IHJlc3RyaWN0aW9uRGVmaW5pdGlvbiA9IGNoZWNrRnVuY3Rpb24odGFyZ2V0RW50aXR5U2V0Py5hbm5vdGF0aW9ucz8uQ2FwYWJpbGl0aWVzKTtcblx0XHRpZiAodGFyZ2V0RW50aXR5U2V0ID09PSBudWxsICYmIHJlc3RyaWN0aW9uRGVmaW5pdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZXN0cmljdGlvbkRlZmluaXRpb24gPSBjaGVja0Z1bmN0aW9uKHRhcmdldEVudGl0eVR5cGU/LmFubm90YXRpb25zPy5DYXBhYmlsaXRpZXMpO1xuXHRcdH1cblx0XHRpZiAocmVzdHJpY3Rpb25EZWZpbml0aW9uICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGNvbnN0IHBhdGhSZWxhdGl2ZUxvY2F0aW9uID0gZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24oZGF0YU1vZGVsT2JqZWN0UGF0aC5jb250ZXh0TG9jYXRpb24sIGFsbFZpc2l0ZWROYXZpZ2F0aW9uUHJvcHMpLm1hcChcblx0XHRcdFx0KG5wKSA9PiBucC5uYW1lXG5cdFx0XHQpO1xuXHRcdFx0Y29uc3QgcGF0aFZpc2l0b3JGdW5jdGlvbiA9IGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoPy5wYXRoVmlzaXRvclxuXHRcdFx0XHQ/IGdldFBhdGhWaXNpdG9yRm9yU2luZ2xldG9uKGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoLnBhdGhWaXNpdG9yLCBwYXRoUmVsYXRpdmVMb2NhdGlvbilcblx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0XHR0YXJnZXRSZXN0cmljdGlvbnMgPSBlcXVhbChcblx0XHRcdFx0Z2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKHJlc3RyaWN0aW9uRGVmaW5pdGlvbiwgcGF0aFJlbGF0aXZlTG9jYXRpb24sIHVuZGVmaW5lZCwgcGF0aFZpc2l0b3JGdW5jdGlvbiksXG5cdFx0XHRcdHRydWVcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIChcblx0XHRyZXN0cmljdGlvbnMgfHwgdGFyZ2V0UmVzdHJpY3Rpb25zIHx8IChleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aD8uYXV0aG9yaXplVW5yZXNvbHZhYmxlID8gdW5yZXNvbHZlYWJsZUV4cHJlc3Npb24gOiBjb25zdGFudCh0cnVlKSlcblx0KTtcbn07XG4vLyBUaGlzIGhlbHBlciBtZXRob2QgaXMgdXNlZCB0byBhZGQgcmVsYXRpdmUgcGF0aCBsb2NhdGlvbiBhcmd1bWVudCB0byBzaW5nbGV0b25QYXRoVmlzaXRvckZ1bmN0aW9uIGkuZS4gcGF0aFZpc2l0b3Jcbi8vIHBhdGhWaXNpdG9yIG1ldGhvZCBpcyB1c2VkIGxhdGVyIHRvIGdldCB0aGUgY29ycmVjdCBiaW5kaW5ncyBmb3Igc2luZ2xldG9uIGVudGl0eVxuLy8gbWV0aG9kIGlzIGludm9rZWQgbGF0ZXIgaW4gcGF0aEluTW9kZWwoKSBtZXRob2QgdG8gZ2V0IHRoZSBjb3JyZWN0IGJpbmRpbmcuXG5jb25zdCBnZXRQYXRoVmlzaXRvckZvclNpbmdsZXRvbiA9IGZ1bmN0aW9uIChwYXRoVmlzaXRvcjogRnVuY3Rpb24sIHBhdGhSZWxhdGl2ZUxvY2F0aW9uOiBzdHJpbmdbXSkge1xuXHRyZXR1cm4gZnVuY3Rpb24gKHBhdGg6IHN0cmluZykge1xuXHRcdHJldHVybiBwYXRoVmlzaXRvcihwYXRoLCBwYXRoUmVsYXRpdmVMb2NhdGlvbik7XG5cdH07XG59O1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7RUF3Q08sSUFBTUEsdUJBQXVCLEdBQUcsVUFDdENDLFdBRHNDLEVBR2Y7SUFBQSxJQUR2QkMsZUFDdUIsdUVBRGlCLEVBQ2pCOztJQUN2QixJQUFJLENBQUNELFdBQUwsRUFBa0I7TUFDakIsT0FBT0MsZUFBUDtJQUNBLENBRkQsTUFFTyxJQUFJQSxlQUFlLENBQUNDLE1BQWhCLElBQTBCRixXQUFXLENBQUNHLG9CQUFaLENBQWlDRCxNQUEvRCxFQUF1RTtNQUM3RSxJQUFJRSxpQkFBdUMsR0FBRyxFQUE5QztNQUNBSixXQUFXLENBQUNHLG9CQUFaLENBQWlDRSxPQUFqQyxDQUF5QyxVQUFDQyxPQUFELEVBQVVDLFFBQVYsRUFBdUI7UUFDL0QsSUFBSU4sZUFBZSxDQUFDTSxRQUFELENBQWYsS0FBOEJELE9BQWxDLEVBQTJDO1VBQzFDRixpQkFBaUIsQ0FBQ0ksSUFBbEIsQ0FBdUJQLGVBQWUsQ0FBQ00sUUFBRCxDQUF0QztRQUNBO01BQ0QsQ0FKRDtNQUtBSCxpQkFBaUIsR0FBR0EsaUJBQWlCLENBQUNLLE1BQWxCLENBQXlCUixlQUFlLENBQUNTLEtBQWhCLENBQXNCVixXQUFXLENBQUNHLG9CQUFaLENBQWlDRCxNQUF2RCxDQUF6QixDQUFwQixDQVA2RSxDQVE3RTs7TUFDQSxJQUFJUyxVQUFVLEdBQUcsQ0FBakI7O01BQ0EsT0FBT1AsaUJBQWlCLENBQUNGLE1BQWxCLEdBQTJCLENBQTNC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
@@ -178,6 +178,7 @@ export const getTargetObjectPath = function (dataModelObjectPath: DataModelObjec
178
178
  dataModelObjectPath.targetObject.name &&
179
179
  dataModelObjectPath.targetObject._type !== "NavigationProperty" &&
180
180
  dataModelObjectPath.targetObject._type !== "EntityType" &&
181
+ dataModelObjectPath.targetObject._type !== "EntitySet" &&
181
182
  dataModelObjectPath.targetObject !== dataModelObjectPath.startingEntitySet
182
183
  ) {
183
184
  if (!path.endsWith("/")) {
@@ -212,6 +213,8 @@ export const getContextRelativeTargetObjectPath = function (
212
213
  (dataModelObjectPath.targetObject.name ||
213
214
  (dataModelObjectPath.targetObject.type === "PropertyPath" && dataModelObjectPath.targetObject.value)) &&
214
215
  dataModelObjectPath.targetObject._type !== "NavigationProperty" &&
216
+ dataModelObjectPath.targetObject._type !== "EntityType" &&
217
+ dataModelObjectPath.targetObject._type !== "EntitySet" &&
215
218
  dataModelObjectPath.targetObject !== dataModelObjectPath.startingEntitySet
216
219
  ) {
217
220
  if (path.length > 0 && !path.endsWith("/")) {