@sapui5/sap.fe.core 1.130.6 → 1.130.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
package/src/sap/fe/core/.library
CHANGED
|
@@ -12,6 +12,7 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/core/formatters/ValueFormat
|
|
|
12
12
|
var enhanceDataModelPath = DataModelPathHelper.enhanceDataModelPath;
|
|
13
13
|
var getLabelForConnectedFields = DataFieldFormatters.getLabelForConnectedFields;
|
|
14
14
|
var isPropertyPathExpression = TypeGuards.isPropertyPathExpression;
|
|
15
|
+
var isProperty = TypeGuards.isProperty;
|
|
15
16
|
var isPathAnnotationExpression = TypeGuards.isPathAnnotationExpression;
|
|
16
17
|
var UI = BindingHelper.UI;
|
|
17
18
|
var Draft = BindingHelper.Draft;
|
|
@@ -257,16 +258,16 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/core/formatters/ValueFormat
|
|
|
257
258
|
let params;
|
|
258
259
|
if (titleValueExpression) {
|
|
259
260
|
params = Array.isArray(titleValueExpression) ? titleValueExpression : [titleValueExpression];
|
|
260
|
-
} else {
|
|
261
|
+
} else if (path.targetObject && isProperty(path.targetObject)) {
|
|
261
262
|
params = getTitleBindingWithTextArrangement(path, propertyBindingExpression, formatOptions);
|
|
262
263
|
}
|
|
263
|
-
const isTitleEmpty = isTitleEmptyBooleanExpression(params[0]);
|
|
264
|
+
const isTitleEmpty = params === undefined || isTitleEmptyBooleanExpression(params[0]);
|
|
264
265
|
const forceEmptyString = shouldForceEmptyString(path);
|
|
265
|
-
const formattedExpression = formatResult(params, formatter);
|
|
266
|
+
const formattedExpression = params != undefined && formatResult(params, formatter);
|
|
266
267
|
titleValueExpression = ifElse(isTitleEmpty, ifElse(or(isHeaderInfoTitleEmpty && isOrHasActiveEntity(path), forceEmptyString), "", ifElse(isUndefinedExpression(constant(customFormatter)), ifElse(or(UI.IsCreateMode, not(isOrHasActiveEntity(path))), createModeTitle, pathInModel("T_ANNOTATION_HELPER_DEFAULT_HEADER_TITLE_NO_HEADER_INFO", "sap.fe.i18n")), ifElse(not(isOrHasActiveEntity(path)), viewData === null || viewData === void 0 ? void 0 : viewData.resourceModel.getText("T_NEW_OBJECT"), viewData === null || viewData === void 0 ? void 0 : viewData.resourceModel.getText("T_ANNOTATION_HELPER_DEFAULT_HEADER_TITLE_NO_HEADER_INFO")))), formattedExpression);
|
|
267
268
|
return compileExpression(titleValueExpression);
|
|
268
269
|
};
|
|
269
270
|
_exports.getTitleBindingExpression = getTitleBindingExpression;
|
|
270
271
|
return _exports;
|
|
271
272
|
}, false);
|
|
272
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmb3JtYXRWYWx1ZVJlY3Vyc2l2ZWx5IiwiYmluZGluZ0V4cHJlc3Npb25Ub0VuaGFuY2UiLCJmdWxsQ29udGV4dFBhdGgiLCJ0cmFuc2Zvcm1SZWN1cnNpdmVseSIsImV4cHJlc3Npb24iLCJvdXRFeHByZXNzaW9uIiwibW9kZWxOYW1lIiwidW5kZWZpbmVkIiwib1Byb3BlcnR5RGF0YU1vZGVsUGF0aCIsImVuaGFuY2VEYXRhTW9kZWxQYXRoIiwicGF0aCIsImZvcm1hdFdpdGhUeXBlSW5mb3JtYXRpb24iLCJ0YXJnZXRPYmplY3QiLCJfZXhwb3J0cyIsImdldFByb3BlcnR5RGVmaW5pdGlvbiIsInByb3BlcnR5RGF0YU1vZGVsT2JqZWN0IiwicHJvcGVydHlQYXRoT3JQcm9wZXJ0eSIsImlzUHJvcGVydHlQYXRoRXhwcmVzc2lvbiIsIiR0YXJnZXQiLCJpc09ySGFzQWN0aXZlRW50aXR5IiwiX2Z1bGxDb250ZXh0UGF0aCR0YXJnIiwiX2Z1bGxDb250ZXh0UGF0aCR0YXJnMiIsIl9mdWxsQ29udGV4dFBhdGgkdGFyZzMiLCJfZnVsbENvbnRleHRQYXRoJHRhcmc0IiwiX2Z1bGxDb250ZXh0UGF0aCR0YXJnNSIsIl9mdWxsQ29udGV4dFBhdGgkdGFyZzYiLCJkcmFmdFJvb3QiLCJ0YXJnZXRFbnRpdHlTZXQiLCJhbm5vdGF0aW9ucyIsIkNvbW1vbiIsIkRyYWZ0Um9vdCIsImRyYWZ0Tm9kZSIsIkRyYWZ0Tm9kZSIsIm5vdCIsIkRyYWZ0IiwiSXNOZXdPYmplY3QiLCJpc1RpdGxlRW1wdHlCb29sZWFuRXhwcmVzc2lvbiIsInRpdGxlVmFsdWVFeHByZXNzaW9uIiwiX3R5cGUiLCJjb25zdGFudCIsInZhbHVlIiwiaXNFbXB0eSIsImdldFRpdGxlQmluZGluZ1dpdGhUZXh0QXJyYW5nZW1lbnQiLCJwcm9wZXJ0eURhdGFNb2RlbFBhdGgiLCJwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uIiwiZm9ybWF0T3B0aW9ucyIsIl9wcm9wZXJ0eURlZmluaXRpb24kYSIsIl9wcm9wZXJ0eURlZmluaXRpb24kYTIiLCJfY29tbW9uVGV4dCRhbm5vdGF0aW8iLCJfY29tbW9uVGV4dCRhbm5vdGF0aW8yIiwidGFyZ2V0RGlzcGxheU1vZGVPdmVycmlkZSIsImRpc3BsYXlNb2RlIiwicHJvcGVydHlEZWZpbml0aW9uIiwidGFyZ2V0RGlzcGxheU1vZGUiLCJVSUZvcm1hdHRlcnMiLCJnZXREaXNwbGF5TW9kZSIsImNvbW1vblRleHQiLCJUZXh0IiwicmVsYXRpdmVMb2NhdGlvbiIsImdldFJlbGF0aXZlUGF0aHMiLCJwYXJhbXMiLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJ0YXJnZXRFeHByZXNzaW9uIiwic3BsaXRUaXRsZU9uVHdvTGluZXMiLCJpZkVsc2UiLCJVSSIsIlRleHRBcnJhbmdlbWVudCIsImFkZFRleHRBcnJhbmdlbWVudFRvVGl0bGVCaW5kaW5nRXhwcmVzc2lvbiIsImdldENyZWF0ZU1vZGVUaXRsZSIsInZpZXdEYXRhIiwiX3JlZiIsIlR5cGVOYW1lIiwidHlwZU5hbWUiLCJ0aXRsZU5vSGVhZGVySW5mbyIsInBhdGhJbk1vZGVsIiwiY3JlYXRlTW9kZVRpdGxlIiwicmVzb3VyY2VNb2RlbCIsImdldFRleHQiLCJlbnRpdHlTZXQiLCJ0aXRsZVdpdGhIZWFkZXJJbmZvIiwiY29uY2F0IiwicmVzb2x2ZUJpbmRpbmdTdHJpbmciLCJ0b1N0cmluZyIsImZvcm1hdFJlc3VsdCIsInZhbHVlRm9ybWF0dGVycyIsImZvcm1hdFRpdGxlIiwic2hvdWxkRm9yY2VFbXB0eVN0cmluZyIsIl9wcm9wZXJ0eURlZmluaXRpb24kYTMiLCJfcHJvcGVydHlEZWZpbml0aW9uJGE0IiwiQ29yZSIsIkNvbXB1dGVkIiwiSXNJbmFjdGl2ZSIsImdldFRpdGxlVmFsdWVFeHByZXNzaW9uRnJvbUhlYWRlckluZm8iLCJoZWFkZXJJbmZvVGl0bGUiLCJnZXRUZXh0QmluZGluZ0V4cHJlc3Npb24iLCJfaGVhZGVySW5mb1RpdGxlJFRhcmciLCIkVHlwZSIsIl9WYWx1ZSIsIl9WYWx1ZSQkdGFyZ2V0IiwiX1ZhbHVlJCR0YXJnZXQkYW5ub3RhIiwiX1ZhbHVlJCR0YXJnZXQkYW5ub3RhMiIsIl9WYWx1ZSQkdGFyZ2V0JGFubm90YTMiLCJfVmFsdWUkJHRhcmdldCRhbm5vdGE0IiwiVmFsdWUiLCJUYXJnZXQiLCJjb25uZWN0ZWRGaWVsZHNQYXRoIiwiZ2V0TGFiZWxGb3JDb25uZWN0ZWRGaWVsZHMiLCJnZXRUaXRsZUJpbmRpbmdFeHByZXNzaW9uIiwiaGVhZGVySW5mbyIsImN1c3RvbUZvcm1hdHRlciIsIl9oZWFkZXJJbmZvJFRpdGxlJFZhbCIsIl9oZWFkZXJJbmZvJFRpdGxlJFZhbDIiLCJfaGVhZGVySW5mbyRUaXRsZSRWYWwzIiwiX2hlYWRlckluZm8kVGl0bGUkVmFsNCIsIl9oZWFkZXJJbmZvJFRpdGxlIiwiZm9ybWF0dGVyIiwiaXNIZWFkZXJJbmZvVGl0bGVFbXB0eSIsImV4dElkSGVhZGVySW5mb1RpdGxlIiwiaXNEYXRhRmllbGQiLCJUaXRsZSIsIkV4dGVybmFsSUQiLCJfaGVhZGVySW5mbyRUaXRsZSRWYWw1IiwiX2hlYWRlckluZm8kVGl0bGUkVmFsNiIsIl9oZWFkZXJJbmZvJFRpdGxlJFZhbDciLCJfaGVhZGVySW5mbyRUaXRsZSRWYWw4IiwiX2hlYWRlckluZm8kVGl0bGUkVmFsOSIsIl9oZWFkZXJJbmZvJFRpdGxlJFZhbDEwIiwiaXNDb25zdGFudCIsImNvbXBpbGVFeHByZXNzaW9uIiwiaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24iLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwiQXJyYXkiLCJpc0FycmF5IiwiaXNUaXRsZUVtcHR5IiwiZm9yY2VFbXB0eVN0cmluZyIsImZvcm1hdHRlZEV4cHJlc3Npb24iLCJvciIsImlzVW5kZWZpbmVkRXhwcmVzc2lvbiIsIklzQ3JlYXRlTW9kZSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVGl0bGVIZWxwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFbnRpdHlTZXQsIFByb3BlcnR5LCBQcm9wZXJ0eUFubm90YXRpb25WYWx1ZSwgUHJvcGVydHlQYXRoIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IENvbm5lY3RlZEZpZWxkcywgRGF0YUZpZWxkQWJzdHJhY3RUeXBlcywgRGF0YUZpZWxkVHlwZXMsIEhlYWRlckluZm9UeXBlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgdHlwZSB7IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiwgUGF0aEluTW9kZWxFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQge1xuXHRjb21waWxlRXhwcmVzc2lvbixcblx0Y29uY2F0LFxuXHRjb25zdGFudCxcblx0Zm9ybWF0UmVzdWx0LFxuXHRmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uLFxuXHRnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24sXG5cdGlmRWxzZSxcblx0aXNDb25zdGFudCxcblx0aXNFbXB0eSxcblx0aXNVbmRlZmluZWRFeHByZXNzaW9uLFxuXHRub3QsXG5cdG9yLFxuXHRwYXRoSW5Nb2RlbCxcblx0cmVzb2x2ZUJpbmRpbmdTdHJpbmcsXG5cdHRyYW5zZm9ybVJlY3Vyc2l2ZWx5XG59IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHZhbHVlRm9ybWF0dGVycyBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9WYWx1ZUZvcm1hdHRlclwiO1xuaW1wb3J0IHsgRHJhZnQsIFVJIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ0hlbHBlclwiO1xuaW1wb3J0IHsgaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24sIGlzUHJvcGVydHlQYXRoRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCB0eXBlIHsgVmlld0RhdGEgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgeyBnZXRMYWJlbEZvckNvbm5lY3RlZEZpZWxkcyB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFGaWVsZEZvcm1hdHRlcnNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGVuaGFuY2VEYXRhTW9kZWxQYXRoLCBnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoLCBnZXRSZWxhdGl2ZVBhdGhzIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBEaXNwbGF5TW9kZSB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0ICogYXMgVUlGb3JtYXR0ZXJzIGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0IHsgaXNEYXRhRmllbGQgfSBmcm9tIFwiLi4vY29udmVydGVycy9hbm5vdGF0aW9ucy9EYXRhRmllbGRcIjtcblxudHlwZSBCaW5kaW5nRXhwcmVzc2lvblR1cGxlID0gW0JpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+LCBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPl0gfCBbQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz5dO1xuXG5leHBvcnQgY29uc3QgZm9ybWF0VmFsdWVSZWN1cnNpdmVseSA9IGZ1bmN0aW9uIChcblx0YmluZGluZ0V4cHJlc3Npb25Ub0VuaGFuY2U6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+LFxuXHRmdWxsQ29udGV4dFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHkgfCBQcm9wZXJ0eVBhdGg+XG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiB7XG5cdHJldHVybiB0cmFuc2Zvcm1SZWN1cnNpdmVseShiaW5kaW5nRXhwcmVzc2lvblRvRW5oYW5jZSwgXCJQYXRoSW5Nb2RlbFwiLCAoZXhwcmVzc2lvbikgPT4ge1xuXHRcdGxldCBvdXRFeHByZXNzaW9uID0gZXhwcmVzc2lvbjtcblx0XHRpZiAoZXhwcmVzc2lvbi5tb2RlbE5hbWUgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Ly8gSW4gY2FzZSBvZiBkZWZhdWx0IG1vZGVsIHdlIHRoZW4gbmVlZCB0byByZXNvbHZlIHRoZSB0ZXh0IGFycmFuZ2VtZW50IHByb3BlcnR5XG5cdFx0XHRjb25zdCBvUHJvcGVydHlEYXRhTW9kZWxQYXRoID0gZW5oYW5jZURhdGFNb2RlbFBhdGg8UHJvcGVydHk+KGZ1bGxDb250ZXh0UGF0aCwgZXhwcmVzc2lvbi5wYXRoKTtcblx0XHRcdG91dEV4cHJlc3Npb24gPSBmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uKG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0ISwgZXhwcmVzc2lvbik7XG5cdFx0fVxuXHRcdHJldHVybiBvdXRFeHByZXNzaW9uO1xuXHR9KTtcbn07XG5cbi8qKlxuICogR2V0IHByb3BlcnR5IGRlZmluaXRpb24gZnJvbSBkYXRhIG1vZGVsIG9iamVjdCBwYXRoLlxuICogQHBhcmFtIHByb3BlcnR5RGF0YU1vZGVsT2JqZWN0IFRoZSBwcm9wZXJ0eSBkYXRhIG1vZGVsIG9iamVjdFxuICogQHJldHVybnMgVGhlIHByb3BlcnR5XG4gKi9cbmNvbnN0IGdldFByb3BlcnR5RGVmaW5pdGlvbiA9IChwcm9wZXJ0eURhdGFNb2RlbE9iamVjdDogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eSB8IFByb3BlcnR5UGF0aD4pOiBQcm9wZXJ0eSB8IHVuZGVmaW5lZCA9PiB7XG5cdGNvbnN0IHByb3BlcnR5UGF0aE9yUHJvcGVydHkgPSBwcm9wZXJ0eURhdGFNb2RlbE9iamVjdC50YXJnZXRPYmplY3Q7XG5cdHJldHVybiBpc1Byb3BlcnR5UGF0aEV4cHJlc3Npb24ocHJvcGVydHlQYXRoT3JQcm9wZXJ0eSkgPyBwcm9wZXJ0eVBhdGhPclByb3BlcnR5LiR0YXJnZXQgOiBwcm9wZXJ0eVBhdGhPclByb3BlcnR5O1xufTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhbiBhc3NvY2lhdGVkIGFjdGl2ZSBlbnRpdHkgZXhpc3RzLlxuICogQHBhcmFtIGZ1bGxDb250ZXh0UGF0aCBUaGUgZnVsbCBwYXRoIHRvIHRoZSBjb250ZXh0XG4gKiBAcmV0dXJucyBUaGUgZXhwcmVzc2lvbi1iaW5kaW5nIHN0cmluZ1xuICovXG5jb25zdCBpc09ySGFzQWN0aXZlRW50aXR5ID0gKGZ1bGxDb250ZXh0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDx1bmtub3duPik6IGJvb2xlYW4gfCBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4gPT4ge1xuXHRjb25zdCBkcmFmdFJvb3QgPSAoZnVsbENvbnRleHRQYXRoLnRhcmdldEVudGl0eVNldCBhcyBFbnRpdHlTZXQgfCB1bmRlZmluZWQpPy5hbm5vdGF0aW9ucz8uQ29tbW9uPy5EcmFmdFJvb3Q7XG5cdGNvbnN0IGRyYWZ0Tm9kZSA9IChmdWxsQ29udGV4dFBhdGgudGFyZ2V0RW50aXR5U2V0IGFzIEVudGl0eVNldCB8IHVuZGVmaW5lZCk/LmFubm90YXRpb25zPy5Db21tb24/LkRyYWZ0Tm9kZTtcblx0aWYgKCEhZHJhZnRSb290IHx8ICEhZHJhZnROb2RlKSB7XG5cdFx0cmV0dXJuIG5vdChEcmFmdC5Jc05ld09iamVjdCk7XG5cdH1cblx0cmV0dXJuIGZhbHNlO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGl0bGUgdmFsdWUgZXhwcmVzc2lvbiBpcyBlbXB0eS5cbiAqIEBwYXJhbSB0aXRsZVZhbHVlRXhwcmVzc2lvbiBUaGUgdGl0bGUgdmFsdWUgZXhwcmVzc2lvblxuICogQHJldHVybnMgVGhlIGV4cHJlc3Npb24tYmluZGluZyBzdHJpbmdcbiAqL1xuY29uc3QgaXNUaXRsZUVtcHR5Qm9vbGVhbkV4cHJlc3Npb24gPSAodGl0bGVWYWx1ZUV4cHJlc3Npb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+KTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+ID0+XG5cdHRpdGxlVmFsdWVFeHByZXNzaW9uLl90eXBlID09PSBcIkNvbnN0YW50XCIgPyBjb25zdGFudCghdGl0bGVWYWx1ZUV4cHJlc3Npb24udmFsdWUpIDogaXNFbXB0eSh0aXRsZVZhbHVlRXhwcmVzc2lvbik7XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSB0aXRsZSBleHByZXNzaW9uIGJpbmRpbmcuXG4gKiBAcGFyYW0gcHJvcGVydHlEYXRhTW9kZWxQYXRoIFRoZSBmdWxsIHBhdGggdG8gdGhlIHByb3BlcnR5IGNvbnRleHRcbiAqIEBwYXJhbSBwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uIFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gb2YgdGhlIHByb3BlcnR5IGFib3ZlXG4gKiBAcGFyYW0gW2Zvcm1hdE9wdGlvbnNdIFRoZSBmb3JtYXQgb3B0aW9ucyBvZiB0aGUgZmllbGRcbiAqIEBwYXJhbSBmb3JtYXRPcHRpb25zLmRpc3BsYXlNb2RlXG4gKiBAcmV0dXJucyBUaGUgZXhwcmVzc2lvbi1iaW5kaW5nIHBhcmFtZXRlcnNcbiAqL1xuY29uc3QgZ2V0VGl0bGVCaW5kaW5nV2l0aFRleHRBcnJhbmdlbWVudCA9IGZ1bmN0aW9uIChcblx0cHJvcGVydHlEYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5Pixcblx0cHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4sXG5cdGZvcm1hdE9wdGlvbnM/OiBQYXJ0aWFsPHsgZGlzcGxheU1vZGU/OiBEaXNwbGF5TW9kZTsgc3BsaXRUaXRsZU9uVHdvTGluZXM/OiBib29sZWFuIH0+XG4pOiBCaW5kaW5nRXhwcmVzc2lvblR1cGxlIHtcblx0Y29uc3QgdGFyZ2V0RGlzcGxheU1vZGVPdmVycmlkZSA9IGZvcm1hdE9wdGlvbnM/LmRpc3BsYXlNb2RlO1xuXHRjb25zdCBwcm9wZXJ0eURlZmluaXRpb24gPSBnZXRQcm9wZXJ0eURlZmluaXRpb24ocHJvcGVydHlEYXRhTW9kZWxQYXRoKTtcblx0Y29uc3QgdGFyZ2V0RGlzcGxheU1vZGUgPSB0YXJnZXREaXNwbGF5TW9kZU92ZXJyaWRlIHx8IFVJRm9ybWF0dGVycy5nZXREaXNwbGF5TW9kZShwcm9wZXJ0eURhdGFNb2RlbFBhdGgpO1xuXHRjb25zdCBjb21tb25UZXh0ID0gcHJvcGVydHlEZWZpbml0aW9uPy5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UZXh0O1xuXHRjb25zdCByZWxhdGl2ZUxvY2F0aW9uID0gZ2V0UmVsYXRpdmVQYXRocyhwcm9wZXJ0eURhdGFNb2RlbFBhdGgpO1xuXG5cdGlmIChwcm9wZXJ0eURlZmluaXRpb24pIHtcblx0XHRwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uID0gZm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvbihwcm9wZXJ0eURlZmluaXRpb24sIHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24pO1xuXHR9XG5cblx0bGV0IHBhcmFtczogQmluZGluZ0V4cHJlc3Npb25UdXBsZSA9IFtwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uXTtcblx0aWYgKHRhcmdldERpc3BsYXlNb2RlICE9PSBcIlZhbHVlXCIgJiYgY29tbW9uVGV4dCkge1xuXHRcdHN3aXRjaCAodGFyZ2V0RGlzcGxheU1vZGUpIHtcblx0XHRcdGNhc2UgXCJEZXNjcmlwdGlvblwiOlxuXHRcdFx0XHRwYXJhbXMgPSBbZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGNvbW1vblRleHQsIHJlbGF0aXZlTG9jYXRpb24pXTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiRGVzY3JpcHRpb25WYWx1ZVwiOlxuXHRcdFx0XHRjb25zdCB0YXJnZXRFeHByZXNzaW9uID1cblx0XHRcdFx0XHRmb3JtYXRPcHRpb25zPy5zcGxpdFRpdGxlT25Ud29MaW5lcyA9PT0gdW5kZWZpbmVkXG5cdFx0XHRcdFx0XHQ/IGlmRWxzZSghIWNvbW1vblRleHQuYW5ub3RhdGlvbnM/LlVJPy5UZXh0QXJyYW5nZW1lbnQsIHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24sIGNvbnN0YW50KFwiXCIpKVxuXHRcdFx0XHRcdFx0OiBpZkVsc2UoISFmb3JtYXRPcHRpb25zPy5zcGxpdFRpdGxlT25Ud29MaW5lcywgY29uc3RhbnQoXCJcIiksIHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24pO1xuXHRcdFx0XHRwYXJhbXMgPSBbZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGNvbW1vblRleHQsIHJlbGF0aXZlTG9jYXRpb24pLCB0YXJnZXRFeHByZXNzaW9uXTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiVmFsdWVEZXNjcmlwdGlvblwiOlxuXHRcdFx0XHRwYXJhbXMgPSBbXG5cdFx0XHRcdFx0cHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbixcblx0XHRcdFx0XHRpZkVsc2UoISFmb3JtYXRPcHRpb25zPy5zcGxpdFRpdGxlT25Ud29MaW5lcywgY29uc3RhbnQoXCJcIiksIGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihjb21tb25UZXh0LCByZWxhdGl2ZUxvY2F0aW9uKSlcblx0XHRcdFx0XTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBwYXJhbXM7XG59O1xuXG4vKipcbiAqIFJlY3Vyc2l2ZWx5IGFkZCB0aGUgdGV4dCBhcnJhbmdlbWVudCB0byBhIHRpdGxlIGJpbmRpbmcgZXhwcmVzc2lvbi5cbiAqIEBwYXJhbSBiaW5kaW5nRXhwcmVzc2lvblRvRW5oYW5jZSBUaGUgYmluZGluZyBleHByZXNzaW9uIHRvIGJlIGVuaGFuY2VkXG4gKiBAcGFyYW0gcGF0aCBUaGUgZGF0YSBmaWVsZCBkYXRhIG1vZGVsIG9iamVjdCBwYXRoXG4gKiBAcmV0dXJucyBBbiB1cGRhdGVkIGV4cHJlc3Npb24gY29udGFpbmluZyB0aGUgdGV4dCBhcnJhbmdlbWVudCBiaW5kaW5nIHBhcmFtZXRlcnNcbiAqL1xuY29uc3QgYWRkVGV4dEFycmFuZ2VtZW50VG9UaXRsZUJpbmRpbmdFeHByZXNzaW9uID0gZnVuY3Rpb24gKFxuXHRiaW5kaW5nRXhwcmVzc2lvblRvRW5oYW5jZTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4sXG5cdHBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+XG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiB7XG5cdHJldHVybiB0cmFuc2Zvcm1SZWN1cnNpdmVseShiaW5kaW5nRXhwcmVzc2lvblRvRW5oYW5jZSwgXCJQYXRoSW5Nb2RlbFwiLCAoZXhwcmVzc2lvbjogUGF0aEluTW9kZWxFeHByZXNzaW9uPHVua25vd24+KSA9PiB7XG5cdFx0aWYgKGV4cHJlc3Npb24ubW9kZWxOYW1lICE9PSB1bmRlZmluZWQpIHJldHVybiBleHByZXNzaW9uO1xuXHRcdC8vIEluIGNhc2Ugb2YgZGVmYXVsdCBtb2RlbCB3ZSB0aGVuIG5lZWQgdG8gcmVzb2x2ZSB0aGUgdGV4dCBhcnJhbmdlbWVudCBwcm9wZXJ0eVxuXHRcdGNvbnN0IHByb3BlcnR5RGF0YU1vZGVsUGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoPFByb3BlcnR5PihwYXRoLCBleHByZXNzaW9uLnBhdGgpO1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5cdFx0cmV0dXJuIGdldFRpdGxlQmluZGluZ1dpdGhUZXh0QXJyYW5nZW1lbnQocHJvcGVydHlEYXRhTW9kZWxQYXRoLCBleHByZXNzaW9uKSBhcyB1bmtub3duIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxhbnk+O1xuXHR9KTtcbn07XG5cbi8qKlxuICogR2V0cyBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIGNyZWF0ZSBtb2RlIHRpdGxlLlxuICogQHBhcmFtIHZpZXdEYXRhIFRoZSBhc3NvY2lhdGVkIHZpZXcgZGF0YVxuICogQHBhcmFtIFt0eXBlTmFtZV0gVGhlIHR5cGUgbmFtZSBmcm9tIHRoZSBvYmplY3QgcGFnZSBoZWFkZXIgaW5mb1xuICogQHBhcmFtIHR5cGVOYW1lLlR5cGVOYW1lXG4gKiBAcmV0dXJucyBUaGUgZXhwcmVzc2lvbi1iaW5kaW5nIHN0cmluZ1xuICovXG5jb25zdCBnZXRDcmVhdGVNb2RlVGl0bGUgPSBmdW5jdGlvbiAodmlld0RhdGE6IFZpZXdEYXRhLCB7IFR5cGVOYW1lOiB0eXBlTmFtZSB9OiBIZWFkZXJJbmZvVHlwZSk6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHtcblx0Y29uc3QgdGl0bGVOb0hlYWRlckluZm8gPSBwYXRoSW5Nb2RlbChcIlRfTkVXX09CSkVDVFwiLCBcInNhcC5mZS5pMThuXCIpO1xuXHRsZXQgY3JlYXRlTW9kZVRpdGxlOiBzdHJpbmcgfCBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiA9IHRpdGxlTm9IZWFkZXJJbmZvO1xuXHRpZiAoXG5cdFx0dmlld0RhdGEucmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiVF9ORVdfT0JKRUNUXCIsIHVuZGVmaW5lZCwgdmlld0RhdGEuZW50aXR5U2V0KSA9PT1cblx0XHR2aWV3RGF0YS5yZXNvdXJjZU1vZGVsLmdldFRleHQoXCJUX05FV19PQkpFQ1RfREVGQVVMVFwiLCB1bmRlZmluZWQsIHZpZXdEYXRhLmVudGl0eVNldClcblx0KSB7XG5cdFx0Ly9UX05FV19PQkpFQ1QgaGFzIG5vdCBiZWVuIGN1c3RvbWl6ZWRcblx0XHRjb25zdCB0aXRsZVdpdGhIZWFkZXJJbmZvID0gdmlld0RhdGEucmVzb3VyY2VNb2RlbC5nZXRUZXh0KFxuXHRcdFx0XCJUX0FOTk9UQVRJT05fSEVMUEVSX0RFRkFVTFRfT0JKRUNUX1BBR0VfSEVBREVSX1RJVExFXCIsXG5cdFx0XHR1bmRlZmluZWQsXG5cdFx0XHR2aWV3RGF0YS5lbnRpdHlTZXRcblx0XHQpO1xuXHRcdGNyZWF0ZU1vZGVUaXRsZSA9ICh0eXBlTmFtZSBhcyBzdHJpbmcgfCBQcm9wZXJ0eUFubm90YXRpb25WYWx1ZTxzdHJpbmc+KVxuXHRcdFx0PyBjb25jYXQodGl0bGVXaXRoSGVhZGVySW5mbywgXCI6IFwiLCByZXNvbHZlQmluZGluZ1N0cmluZyh0eXBlTmFtZS50b1N0cmluZygpKSlcblx0XHRcdDogdGl0bGVOb0hlYWRlckluZm87XG5cdH1cblx0cmV0dXJuIGZvcm1hdFJlc3VsdChbY3JlYXRlTW9kZVRpdGxlXSwgdmFsdWVGb3JtYXR0ZXJzLmZvcm1hdFRpdGxlKTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYW4gZW1wdHkgc3RyaW5nIHNob3VsZCBiZSB1c2VkLlxuICogQHBhcmFtIHBhdGggVGhlIG1ldGEgcGF0aCBwb2ludGluZyB0byB0aGUgcHJvcGVydHkgdXNlZCBmb3IgdGhlIHRpdGxlXG4gKiBAcmV0dXJucyBUaGUgZXhwcmVzc2lvbi1iaW5kaW5nIHN0cmluZ1xuICovXG5jb25zdCBzaG91bGRGb3JjZUVtcHR5U3RyaW5nID0gKHBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHkgfCBQcm9wZXJ0eVBhdGg+KTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+ID0+IHtcblx0Y29uc3QgcHJvcGVydHlEZWZpbml0aW9uID0gZ2V0UHJvcGVydHlEZWZpbml0aW9uKHBhdGgpO1xuXHRpZiAocHJvcGVydHlEZWZpbml0aW9uICYmIHByb3BlcnR5RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uQ29yZT8uQ29tcHV0ZWQpIHtcblx0XHRyZXR1cm4gVUkuSXNJbmFjdGl2ZTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gY29uc3RhbnQoZmFsc2UpO1xuXHR9XG59O1xuXG4vKipcbiAqIEdldHMgdGl0bGUgdmFsdWUgZXhwcmVzc2lvbiBmcm9tIG9iamVjdCBwYWdlIGhlYWRlciBpbmZvLlxuICogQHBhcmFtIGZ1bGxDb250ZXh0UGF0aCBUaGUgZnVsbCBwYXRoIHRvIHRoZSBjb250ZXh0XG4gKiBAcGFyYW0gaGVhZGVySW5mb1RpdGxlIFRoZSB0aXRsZSB2YWx1ZSBmcm9tIHRoZSBvYmplY3QgcGFnZSBoZWFkZXIgaW5mb1xuICogQHBhcmFtIGdldFRleHRCaW5kaW5nRXhwcmVzc2lvbiBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSB0ZXh0IGJpbmRpbmcgZXhwcmVzc2lvblxuICogQHJldHVybnMgVGhlIGV4cHJlc3Npb24tYmluZGluZyBzdHJpbmdcbiAqL1xuY29uc3QgZ2V0VGl0bGVWYWx1ZUV4cHJlc3Npb25Gcm9tSGVhZGVySW5mbyA9IGZ1bmN0aW9uIChcblx0ZnVsbENvbnRleHRQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5Pixcblx0aGVhZGVySW5mb1RpdGxlOiBEYXRhRmllbGRBYnN0cmFjdFR5cGVzLFxuXHRnZXRUZXh0QmluZGluZ0V4cHJlc3Npb246IEZ1bmN0aW9uXG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiB8IHVuZGVmaW5lZCB7XG5cdGxldCB0aXRsZVZhbHVlRXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4gfCB1bmRlZmluZWQ7XG5cdGlmIChoZWFkZXJJbmZvVGl0bGUuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZCkge1xuXHRcdHRpdGxlVmFsdWVFeHByZXNzaW9uID0gZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGhlYWRlckluZm9UaXRsZS5WYWx1ZSk7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2Vzc1xuXHRcdGlmICgoaGVhZGVySW5mb1RpdGxlIGFzIERhdGFGaWVsZFR5cGVzKS5WYWx1ZT8uJHRhcmdldD8uYW5ub3RhdGlvbnMuQ29tbW9uPy5UZXh0Py5hbm5vdGF0aW9ucz8uVUk/LlRleHRBcnJhbmdlbWVudCkge1xuXHRcdFx0Ly8gSW4gY2FzZSBhbiBleHBsaWNpdCB0ZXh0IGFycmFuZ2VtZW50IHdhcyBzZXQgd2UgbWFrZSB1c2Ugb2YgaXQgaW4gdGhlIGRlc2NyaXB0aW9uIGFzIHdlbGxcblx0XHRcdHRpdGxlVmFsdWVFeHByZXNzaW9uID0gYWRkVGV4dEFycmFuZ2VtZW50VG9UaXRsZUJpbmRpbmdFeHByZXNzaW9uKHRpdGxlVmFsdWVFeHByZXNzaW9uLCBmdWxsQ29udGV4dFBhdGgpO1xuXHRcdH1cblx0XHR0aXRsZVZhbHVlRXhwcmVzc2lvbiA9IGZvcm1hdFZhbHVlUmVjdXJzaXZlbHkodGl0bGVWYWx1ZUV4cHJlc3Npb24sIGZ1bGxDb250ZXh0UGF0aCk7XG5cdH1cblx0aWYgKFxuXHRcdGhlYWRlckluZm9UaXRsZS4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9yQW5ub3RhdGlvbiAmJlxuXHRcdGhlYWRlckluZm9UaXRsZS5UYXJnZXQuJHRhcmdldD8uJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkNvbm5lY3RlZEZpZWxkc1R5cGVcblx0KSB7XG5cdFx0Y29uc3QgY29ubmVjdGVkRmllbGRzUGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoPENvbm5lY3RlZEZpZWxkcz4oXG5cdFx0XHRmdWxsQ29udGV4dFBhdGgsXG5cdFx0XHRcIiRUeXBlL0BVSS5IZWFkZXJJbmZvL1RpdGxlL1RhcmdldC8kQW5ub3RhdGlvblBhdGhcIlxuXHRcdCk7XG5cdFx0dGl0bGVWYWx1ZUV4cHJlc3Npb24gPSBnZXRMYWJlbEZvckNvbm5lY3RlZEZpZWxkcyhcblx0XHRcdGNvbm5lY3RlZEZpZWxkc1BhdGgsXG5cdFx0XHRnZXRUZXh0QmluZGluZ0V4cHJlc3Npb24sXG5cdFx0XHRmYWxzZVxuXHRcdCkgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz47XG5cdH1cblx0cmV0dXJuIHRpdGxlVmFsdWVFeHByZXNzaW9uO1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgT2JqZWN0IFBhZ2UsIFF1aWNrIFZpZXcsIGFuZCBvdGhlciB0aXRsZXMuXG4gKiBAcGFyYW0gcGF0aCBUaGUgZGF0YSBtb2RlbCBvYmplY3QgcGF0aFxuICogQHBhcmFtIGdldFRleHRCaW5kaW5nRXhwcmVzc2lvbiBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSB0ZXh0IGJpbmRpbmcgZXhwcmVzc2lvblxuICogQHBhcmFtIFtmb3JtYXRPcHRpb25zXSBUaGUgZm9ybWF0IG9wdGlvbnMgb2YgdGhlIGZpZWxkXG4gKiBAcGFyYW0gZm9ybWF0T3B0aW9ucy5kaXNwbGF5TW9kZVxuICogQHBhcmFtIFtoZWFkZXJJbmZvXSBUaGUgb2JqZWN0IHBhZ2UgaGVhZGVyIGluZm9cbiAqIEBwYXJhbSBbdmlld0RhdGFdIFRoZSBhc3NvY2lhdGVkIHZpZXcgZGF0YVxuICogQHBhcmFtIGN1c3RvbUZvcm1hdHRlclxuICogQHJldHVybnMgVGhlIGNvbXBpbGVkIGV4cHJlc3Npb24tYmluZGluZyBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFRpdGxlQmluZGluZ0V4cHJlc3Npb24gPSBmdW5jdGlvbiAoXG5cdHBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+LFxuXHRnZXRUZXh0QmluZGluZ0V4cHJlc3Npb246IEZ1bmN0aW9uLFxuXHRmb3JtYXRPcHRpb25zPzogUGFydGlhbDx7IGRpc3BsYXlNb2RlPzogRGlzcGxheU1vZGU7IHNwbGl0VGl0bGVPblR3b0xpbmVzPzogYm9vbGVhbiB9Pixcblx0aGVhZGVySW5mbz86IEhlYWRlckluZm9UeXBlLFxuXHR2aWV3RGF0YT86IFZpZXdEYXRhLFxuXHRjdXN0b21Gb3JtYXR0ZXI/OiBzdHJpbmdcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGNvbnN0IGZvcm1hdHRlciA9IGN1c3RvbUZvcm1hdHRlciB8fCB2YWx1ZUZvcm1hdHRlcnMuZm9ybWF0VGl0bGU7XG5cdGxldCBjcmVhdGVNb2RlVGl0bGU6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHwgc3RyaW5nID0gcGF0aEluTW9kZWwoXCJUX05FV19PQkpFQ1RcIiwgXCJzYXAuZmUuaTE4blwiKTtcblx0bGV0IHRpdGxlVmFsdWVFeHByZXNzaW9uO1xuXHRsZXQgaXNIZWFkZXJJbmZvVGl0bGVFbXB0eSA9IGZhbHNlO1xuXG5cdC8vSWYgdGhlIHRpdGxlIGNvbnRhaW5zIGEgZ3VpZCB3aXRoIGFuIGV4dGVybmFsIElEIHdlIHdhbnQgdG8gYmVoYXZlIGFzIGlmIHRoZSB0aXRsZSBhbm5vdGF0aW9uIHdvdWxkIHBvaW50IHRvIHRoZSB0YXJnZXRcblx0Ly9vZiB0aGUgZXh0ZXJuYWxJRCBhbm5vdGF0aW9uXG5cdGxldCBleHRJZEhlYWRlckluZm9UaXRsZTtcblx0aWYgKGlzRGF0YUZpZWxkKGhlYWRlckluZm8/LlRpdGxlKSAmJiBoZWFkZXJJbmZvPy5UaXRsZS5WYWx1ZT8uJHRhcmdldD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uRXh0ZXJuYWxJRCkge1xuXHRcdGV4dElkSGVhZGVySW5mb1RpdGxlID0ge1xuXHRcdFx0Li4uaGVhZGVySW5mby5UaXRsZSxcblx0XHRcdFZhbHVlOiB7IC4uLmhlYWRlckluZm8uVGl0bGUuVmFsdWUsICR0YXJnZXQ6IHsgLi4uaGVhZGVySW5mby5UaXRsZS5WYWx1ZS4kdGFyZ2V0IH0gfVxuXHRcdH07XG5cdFx0ZXh0SWRIZWFkZXJJbmZvVGl0bGUuVmFsdWUucGF0aCA9IGhlYWRlckluZm8uVGl0bGUuVmFsdWUuJHRhcmdldD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uRXh0ZXJuYWxJRC5wYXRoO1xuXHRcdGV4dElkSGVhZGVySW5mb1RpdGxlLlZhbHVlLiR0YXJnZXQgPSBoZWFkZXJJbmZvLlRpdGxlLlZhbHVlLiR0YXJnZXQ/LmFubm90YXRpb25zPy5Db21tb24/LkV4dGVybmFsSUQuJHRhcmdldDtcblx0fVxuXG5cdC8vIElmIHdlIGhhdmUgYSBoZWFkZXJJbmZvIGJ1dCBubyB0aXRsZSwgb3IgZW1wdHkgdGl0bGUgd2UgbmVlZCB0byBkaXNwbGF5IGFuIGVtcHR5IHN0cmluZyB3aGVuIHdlIGFyZSBvbiBhbiBhY3RpdmUgb2JqZWN0XG5cdC8vIHJlY2VpdmVkIGhlYWRlciBpbmZvIGZvciBvYmplY3QgcGFnZVxuXHRpZiAoaGVhZGVySW5mbz8uVGl0bGU/LiRUeXBlICYmIHZpZXdEYXRhKSB7XG5cdFx0aWYgKGV4dElkSGVhZGVySW5mb1RpdGxlID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHRpdGxlVmFsdWVFeHByZXNzaW9uID0gZ2V0VGl0bGVWYWx1ZUV4cHJlc3Npb25Gcm9tSGVhZGVySW5mbyhwYXRoLCBoZWFkZXJJbmZvLlRpdGxlLCBnZXRUZXh0QmluZGluZ0V4cHJlc3Npb24pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aXRsZVZhbHVlRXhwcmVzc2lvbiA9IGdldFRpdGxlVmFsdWVFeHByZXNzaW9uRnJvbUhlYWRlckluZm8ocGF0aCwgZXh0SWRIZWFkZXJJbmZvVGl0bGUsIGdldFRleHRCaW5kaW5nRXhwcmVzc2lvbik7XG5cdFx0fVxuXHRcdGNyZWF0ZU1vZGVUaXRsZSA9IGdldENyZWF0ZU1vZGVUaXRsZSh2aWV3RGF0YSwgaGVhZGVySW5mbyk7XG5cdFx0aWYgKGlzQ29uc3RhbnQodGl0bGVWYWx1ZUV4cHJlc3Npb24pICYmIHRpdGxlVmFsdWVFeHByZXNzaW9uLnZhbHVlID09PSBcIlwiKSB7XG5cdFx0XHRpc0hlYWRlckluZm9UaXRsZUVtcHR5ID0gdHJ1ZTtcblx0XHR9XG5cdH0gZWxzZSBpZiAoaGVhZGVySW5mbyAmJiAoaGVhZGVySW5mby5UaXRsZSA9PT0gdW5kZWZpbmVkIHx8IGhlYWRlckluZm8uVGl0bGUudG9TdHJpbmcoKSA9PT0gXCJcIikpIHtcblx0XHRpc0hlYWRlckluZm9UaXRsZUVtcHR5ID0gdHJ1ZTtcblx0XHQvLyByZWNlaXZlZCBoZWFkZXIgaW5mbyBmb3Igb2JqZWN0UGFnZVxuXHRcdGlmICghdmlld0RhdGEpIHtcblx0XHRcdHRpdGxlVmFsdWVFeHByZXNzaW9uID0gY29uc3RhbnQoXCJcIik7XG5cdFx0fVxuXHR9XG5cdGlmICh0aXRsZVZhbHVlRXhwcmVzc2lvbiAmJiBpc0NvbnN0YW50KHRpdGxlVmFsdWVFeHByZXNzaW9uKSkge1xuXHRcdHJldHVybiBjb21waWxlRXhwcmVzc2lvbih0aXRsZVZhbHVlRXhwcmVzc2lvbik7XG5cdH1cblxuXHQvLyBuZWVkZWQgZm9yIHF1aWNrdmlld1xuXHRpZiAoaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24ocGF0aC50YXJnZXRPYmplY3QpKSB7XG5cdFx0cGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoKHBhdGgsIHBhdGgudGFyZ2V0T2JqZWN0LnBhdGgpO1xuXHR9XG5cblx0Y29uc3QgcHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHVua25vd24+ID0gcGF0aEluTW9kZWwoZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aChwYXRoKSk7XG5cdGxldCBwYXJhbXM6IEJpbmRpbmdFeHByZXNzaW9uVHVwbGU7XG5cdGlmICh0aXRsZVZhbHVlRXhwcmVzc2lvbikge1xuXHRcdHBhcmFtcyA9IEFycmF5LmlzQXJyYXkodGl0bGVWYWx1ZUV4cHJlc3Npb24pID8gKHRpdGxlVmFsdWVFeHByZXNzaW9uIGFzIHVua25vd24gYXMgQmluZGluZ0V4cHJlc3Npb25UdXBsZSkgOiBbdGl0bGVWYWx1ZUV4cHJlc3Npb25dO1xuXHR9IGVsc2Uge1xuXHRcdHBhcmFtcyA9IGdldFRpdGxlQmluZGluZ1dpdGhUZXh0QXJyYW5nZW1lbnQocGF0aCwgcHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbiwgZm9ybWF0T3B0aW9ucyk7XG5cdH1cblx0Y29uc3QgaXNUaXRsZUVtcHR5ID0gaXNUaXRsZUVtcHR5Qm9vbGVhbkV4cHJlc3Npb24ocGFyYW1zWzBdKTtcblx0Y29uc3QgZm9yY2VFbXB0eVN0cmluZyA9IHNob3VsZEZvcmNlRW1wdHlTdHJpbmcocGF0aCk7XG5cdGNvbnN0IGZvcm1hdHRlZEV4cHJlc3Npb24gPSBmb3JtYXRSZXN1bHQocGFyYW1zLCBmb3JtYXR0ZXIpO1xuXHR0aXRsZVZhbHVlRXhwcmVzc2lvbiA9IGlmRWxzZShcblx0XHRpc1RpdGxlRW1wdHksXG5cdFx0aWZFbHNlKFxuXHRcdFx0b3IoaXNIZWFkZXJJbmZvVGl0bGVFbXB0eSAmJiBpc09ySGFzQWN0aXZlRW50aXR5KHBhdGgpLCBmb3JjZUVtcHR5U3RyaW5nKSxcblx0XHRcdFwiXCIsXG5cdFx0XHRpZkVsc2UoXG5cdFx0XHRcdGlzVW5kZWZpbmVkRXhwcmVzc2lvbihjb25zdGFudChjdXN0b21Gb3JtYXR0ZXIpKSxcblx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdG9yKFVJLklzQ3JlYXRlTW9kZSwgbm90KGlzT3JIYXNBY3RpdmVFbnRpdHkocGF0aCkpKSxcblx0XHRcdFx0XHRjcmVhdGVNb2RlVGl0bGUsXG5cdFx0XHRcdFx0cGF0aEluTW9kZWwoXCJUX0FOTk9UQVRJT05fSEVMUEVSX0RFRkFVTFRfSEVBREVSX1RJVExFX05PX0hFQURFUl9JTkZPXCIsIFwic2FwLmZlLmkxOG5cIilcblx0XHRcdFx0KSxcblx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdG5vdChpc09ySGFzQWN0aXZlRW50aXR5KHBhdGgpKSxcblx0XHRcdFx0XHR2aWV3RGF0YT8ucmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiVF9ORVdfT0JKRUNUXCIpLFxuXHRcdFx0XHRcdHZpZXdEYXRhPy5yZXNvdXJjZU1vZGVsLmdldFRleHQoXCJUX0FOTk9UQVRJT05fSEVMUEVSX0RFRkFVTFRfSEVBREVSX1RJVExFX05PX0hFQURFUl9JTkZPXCIpXG5cdFx0XHRcdClcblx0XHRcdClcblx0XHQpLFxuXHRcdGZvcm1hdHRlZEV4cHJlc3Npb25cblx0KTtcblxuXHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24odGl0bGVWYWx1ZUV4cHJlc3Npb24pO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFrQ08sTUFBTUEsc0JBQXNCLEdBQUcsU0FBQUEsQ0FDckNDLDBCQUE0RCxFQUM1REMsZUFBNkQsRUFDMUI7SUFDbkMsT0FBT0Msb0JBQW9CLENBQUNGLDBCQUEwQixFQUFFLGFBQWEsRUFBR0csVUFBVSxJQUFLO01BQ3RGLElBQUlDLGFBQWEsR0FBR0QsVUFBVTtNQUM5QixJQUFJQSxVQUFVLENBQUNFLFNBQVMsS0FBS0MsU0FBUyxFQUFFO1FBQ3ZDO1FBQ0EsTUFBTUMsc0JBQXNCLEdBQUdDLG9CQUFvQixDQUFXUCxlQUFlLEVBQUVFLFVBQVUsQ0FBQ00sSUFBSSxDQUFDO1FBQy9GTCxhQUFhLEdBQUdNLHlCQUF5QixDQUFDSCxzQkFBc0IsQ0FBQ0ksWUFBWSxFQUFHUixVQUFVLENBQUM7TUFDNUY7TUFDQSxPQUFPQyxhQUFhO0lBQ3JCLENBQUMsQ0FBQztFQUNILENBQUM7O0VBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUpBUSxRQUFBLENBQUFiLHNCQUFBLEdBQUFBLHNCQUFBO0VBS0EsTUFBTWMscUJBQXFCLEdBQUlDLHVCQUFxRSxJQUEyQjtJQUM5SCxNQUFNQyxzQkFBc0IsR0FBR0QsdUJBQXVCLENBQUNILFlBQVk7SUFDbkUsT0FBT0ssd0JBQXdCLENBQUNELHNCQUFzQixDQUFDLEdBQUdBLHNCQUFzQixDQUFDRSxPQUFPLEdBQUdGLHNCQUFzQjtFQUNsSCxDQUFDOztFQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQSxNQUFNRyxtQkFBbUIsR0FBSWpCLGVBQTZDLElBQWtEO0lBQUEsSUFBQWtCLHFCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBO0lBQzNILE1B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
|
|
273
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmb3JtYXRWYWx1ZVJlY3Vyc2l2ZWx5IiwiYmluZGluZ0V4cHJlc3Npb25Ub0VuaGFuY2UiLCJmdWxsQ29udGV4dFBhdGgiLCJ0cmFuc2Zvcm1SZWN1cnNpdmVseSIsImV4cHJlc3Npb24iLCJvdXRFeHByZXNzaW9uIiwibW9kZWxOYW1lIiwidW5kZWZpbmVkIiwib1Byb3BlcnR5RGF0YU1vZGVsUGF0aCIsImVuaGFuY2VEYXRhTW9kZWxQYXRoIiwicGF0aCIsImZvcm1hdFdpdGhUeXBlSW5mb3JtYXRpb24iLCJ0YXJnZXRPYmplY3QiLCJfZXhwb3J0cyIsImdldFByb3BlcnR5RGVmaW5pdGlvbiIsInByb3BlcnR5RGF0YU1vZGVsT2JqZWN0IiwicHJvcGVydHlQYXRoT3JQcm9wZXJ0eSIsImlzUHJvcGVydHlQYXRoRXhwcmVzc2lvbiIsIiR0YXJnZXQiLCJpc09ySGFzQWN0aXZlRW50aXR5IiwiX2Z1bGxDb250ZXh0UGF0aCR0YXJnIiwiX2Z1bGxDb250ZXh0UGF0aCR0YXJnMiIsIl9mdWxsQ29udGV4dFBhdGgkdGFyZzMiLCJfZnVsbENvbnRleHRQYXRoJHRhcmc0IiwiX2Z1bGxDb250ZXh0UGF0aCR0YXJnNSIsIl9mdWxsQ29udGV4dFBhdGgkdGFyZzYiLCJkcmFmdFJvb3QiLCJ0YXJnZXRFbnRpdHlTZXQiLCJhbm5vdGF0aW9ucyIsIkNvbW1vbiIsIkRyYWZ0Um9vdCIsImRyYWZ0Tm9kZSIsIkRyYWZ0Tm9kZSIsIm5vdCIsIkRyYWZ0IiwiSXNOZXdPYmplY3QiLCJpc1RpdGxlRW1wdHlCb29sZWFuRXhwcmVzc2lvbiIsInRpdGxlVmFsdWVFeHByZXNzaW9uIiwiX3R5cGUiLCJjb25zdGFudCIsInZhbHVlIiwiaXNFbXB0eSIsImdldFRpdGxlQmluZGluZ1dpdGhUZXh0QXJyYW5nZW1lbnQiLCJwcm9wZXJ0eURhdGFNb2RlbFBhdGgiLCJwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uIiwiZm9ybWF0T3B0aW9ucyIsIl9wcm9wZXJ0eURlZmluaXRpb24kYSIsIl9wcm9wZXJ0eURlZmluaXRpb24kYTIiLCJfY29tbW9uVGV4dCRhbm5vdGF0aW8iLCJfY29tbW9uVGV4dCRhbm5vdGF0aW8yIiwidGFyZ2V0RGlzcGxheU1vZGVPdmVycmlkZSIsImRpc3BsYXlNb2RlIiwicHJvcGVydHlEZWZpbml0aW9uIiwidGFyZ2V0RGlzcGxheU1vZGUiLCJVSUZvcm1hdHRlcnMiLCJnZXREaXNwbGF5TW9kZSIsImNvbW1vblRleHQiLCJUZXh0IiwicmVsYXRpdmVMb2NhdGlvbiIsImdldFJlbGF0aXZlUGF0aHMiLCJwYXJhbXMiLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJ0YXJnZXRFeHByZXNzaW9uIiwic3BsaXRUaXRsZU9uVHdvTGluZXMiLCJpZkVsc2UiLCJVSSIsIlRleHRBcnJhbmdlbWVudCIsImFkZFRleHRBcnJhbmdlbWVudFRvVGl0bGVCaW5kaW5nRXhwcmVzc2lvbiIsImdldENyZWF0ZU1vZGVUaXRsZSIsInZpZXdEYXRhIiwiX3JlZiIsIlR5cGVOYW1lIiwidHlwZU5hbWUiLCJ0aXRsZU5vSGVhZGVySW5mbyIsInBhdGhJbk1vZGVsIiwiY3JlYXRlTW9kZVRpdGxlIiwicmVzb3VyY2VNb2RlbCIsImdldFRleHQiLCJlbnRpdHlTZXQiLCJ0aXRsZVdpdGhIZWFkZXJJbmZvIiwiY29uY2F0IiwicmVzb2x2ZUJpbmRpbmdTdHJpbmciLCJ0b1N0cmluZyIsImZvcm1hdFJlc3VsdCIsInZhbHVlRm9ybWF0dGVycyIsImZvcm1hdFRpdGxlIiwic2hvdWxkRm9yY2VFbXB0eVN0cmluZyIsIl9wcm9wZXJ0eURlZmluaXRpb24kYTMiLCJfcHJvcGVydHlEZWZpbml0aW9uJGE0IiwiQ29yZSIsIkNvbXB1dGVkIiwiSXNJbmFjdGl2ZSIsImdldFRpdGxlVmFsdWVFeHByZXNzaW9uRnJvbUhlYWRlckluZm8iLCJoZWFkZXJJbmZvVGl0bGUiLCJnZXRUZXh0QmluZGluZ0V4cHJlc3Npb24iLCJfaGVhZGVySW5mb1RpdGxlJFRhcmciLCIkVHlwZSIsIl9WYWx1ZSIsIl9WYWx1ZSQkdGFyZ2V0IiwiX1ZhbHVlJCR0YXJnZXQkYW5ub3RhIiwiX1ZhbHVlJCR0YXJnZXQkYW5ub3RhMiIsIl9WYWx1ZSQkdGFyZ2V0JGFubm90YTMiLCJfVmFsdWUkJHRhcmdldCRhbm5vdGE0IiwiVmFsdWUiLCJUYXJnZXQiLCJjb25uZWN0ZWRGaWVsZHNQYXRoIiwiZ2V0TGFiZWxGb3JDb25uZWN0ZWRGaWVsZHMiLCJnZXRUaXRsZUJpbmRpbmdFeHByZXNzaW9uIiwiaGVhZGVySW5mbyIsImN1c3RvbUZvcm1hdHRlciIsIl9oZWFkZXJJbmZvJFRpdGxlJFZhbCIsIl9oZWFkZXJJbmZvJFRpdGxlJFZhbDIiLCJfaGVhZGVySW5mbyRUaXRsZSRWYWwzIiwiX2hlYWRlckluZm8kVGl0bGUkVmFsNCIsIl9oZWFkZXJJbmZvJFRpdGxlIiwiZm9ybWF0dGVyIiwiaXNIZWFkZXJJbmZvVGl0bGVFbXB0eSIsImV4dElkSGVhZGVySW5mb1RpdGxlIiwiaXNEYXRhRmllbGQiLCJUaXRsZSIsIkV4dGVybmFsSUQiLCJfaGVhZGVySW5mbyRUaXRsZSRWYWw1IiwiX2hlYWRlckluZm8kVGl0bGUkVmFsNiIsIl9oZWFkZXJJbmZvJFRpdGxlJFZhbDciLCJfaGVhZGVySW5mbyRUaXRsZSRWYWw4IiwiX2hlYWRlckluZm8kVGl0bGUkVmFsOSIsIl9oZWFkZXJJbmZvJFRpdGxlJFZhbDEwIiwiaXNDb25zdGFudCIsImNvbXBpbGVFeHByZXNzaW9uIiwiaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24iLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwiQXJyYXkiLCJpc0FycmF5IiwiaXNQcm9wZXJ0eSIsImlzVGl0bGVFbXB0eSIsImZvcmNlRW1wdHlTdHJpbmciLCJmb3JtYXR0ZWRFeHByZXNzaW9uIiwib3IiLCJpc1VuZGVmaW5lZEV4cHJlc3Npb24iLCJJc0NyZWF0ZU1vZGUiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlRpdGxlSGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW50aXR5U2V0LCBQcm9wZXJ0eSwgUHJvcGVydHlBbm5vdGF0aW9uVmFsdWUsIFByb3BlcnR5UGF0aCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBDb25uZWN0ZWRGaWVsZHMsIERhdGFGaWVsZEFic3RyYWN0VHlwZXMsIERhdGFGaWVsZFR5cGVzLCBIZWFkZXJJbmZvVHlwZSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IFVJQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24sIFBhdGhJbk1vZGVsRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHtcblx0Y29tcGlsZUV4cHJlc3Npb24sXG5cdGNvbmNhdCxcblx0Y29uc3RhbnQsXG5cdGZvcm1hdFJlc3VsdCxcblx0Zm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvbixcblx0Z2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uLFxuXHRpZkVsc2UsXG5cdGlzQ29uc3RhbnQsXG5cdGlzRW1wdHksXG5cdGlzVW5kZWZpbmVkRXhwcmVzc2lvbixcblx0bm90LFxuXHRvcixcblx0cGF0aEluTW9kZWwsXG5cdHJlc29sdmVCaW5kaW5nU3RyaW5nLFxuXHR0cmFuc2Zvcm1SZWN1cnNpdmVseVxufSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB2YWx1ZUZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvVmFsdWVGb3JtYXR0ZXJcIjtcbmltcG9ydCB7IERyYWZ0LCBVSSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdIZWxwZXJcIjtcbmltcG9ydCB7IGlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uLCBpc1Byb3BlcnR5LCBpc1Byb3BlcnR5UGF0aEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9UeXBlR3VhcmRzXCI7XG5pbXBvcnQgdHlwZSB7IFZpZXdEYXRhIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1RlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHsgZ2V0TGFiZWxGb3JDb25uZWN0ZWRGaWVsZHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhRmllbGRGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgeyBlbmhhbmNlRGF0YU1vZGVsUGF0aCwgZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCwgZ2V0UmVsYXRpdmVQYXRocyB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgRGlzcGxheU1vZGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCAqIGFzIFVJRm9ybWF0dGVycyBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCB7IGlzRGF0YUZpZWxkIH0gZnJvbSBcIi4uL2NvbnZlcnRlcnMvYW5ub3RhdGlvbnMvRGF0YUZpZWxkXCI7XG5cbnR5cGUgQmluZGluZ0V4cHJlc3Npb25UdXBsZSA9IFtCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiwgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz5dIHwgW0JpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+XTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdFZhbHVlUmVjdXJzaXZlbHkgPSBmdW5jdGlvbiAoXG5cdGJpbmRpbmdFeHByZXNzaW9uVG9FbmhhbmNlOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPixcblx0ZnVsbENvbnRleHRQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5IHwgUHJvcGVydHlQYXRoPlxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4ge1xuXHRyZXR1cm4gdHJhbnNmb3JtUmVjdXJzaXZlbHkoYmluZGluZ0V4cHJlc3Npb25Ub0VuaGFuY2UsIFwiUGF0aEluTW9kZWxcIiwgKGV4cHJlc3Npb24pID0+IHtcblx0XHRsZXQgb3V0RXhwcmVzc2lvbiA9IGV4cHJlc3Npb247XG5cdFx0aWYgKGV4cHJlc3Npb24ubW9kZWxOYW1lID09PSB1bmRlZmluZWQpIHtcblx0XHRcdC8vIEluIGNhc2Ugb2YgZGVmYXVsdCBtb2RlbCB3ZSB0aGVuIG5lZWQgdG8gcmVzb2x2ZSB0aGUgdGV4dCBhcnJhbmdlbWVudCBwcm9wZXJ0eVxuXHRcdFx0Y29uc3Qgb1Byb3BlcnR5RGF0YU1vZGVsUGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoPFByb3BlcnR5PihmdWxsQ29udGV4dFBhdGgsIGV4cHJlc3Npb24ucGF0aCk7XG5cdFx0XHRvdXRFeHByZXNzaW9uID0gZm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvbihvUHJvcGVydHlEYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdCEsIGV4cHJlc3Npb24pO1xuXHRcdH1cblx0XHRyZXR1cm4gb3V0RXhwcmVzc2lvbjtcblx0fSk7XG59O1xuXG4vKipcbiAqIEdldCBwcm9wZXJ0eSBkZWZpbml0aW9uIGZyb20gZGF0YSBtb2RlbCBvYmplY3QgcGF0aC5cbiAqIEBwYXJhbSBwcm9wZXJ0eURhdGFNb2RlbE9iamVjdCBUaGUgcHJvcGVydHkgZGF0YSBtb2RlbCBvYmplY3RcbiAqIEByZXR1cm5zIFRoZSBwcm9wZXJ0eVxuICovXG5jb25zdCBnZXRQcm9wZXJ0eURlZmluaXRpb24gPSAocHJvcGVydHlEYXRhTW9kZWxPYmplY3Q6IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHkgfCBQcm9wZXJ0eVBhdGg+KTogUHJvcGVydHkgfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCBwcm9wZXJ0eVBhdGhPclByb3BlcnR5ID0gcHJvcGVydHlEYXRhTW9kZWxPYmplY3QudGFyZ2V0T2JqZWN0O1xuXHRyZXR1cm4gaXNQcm9wZXJ0eVBhdGhFeHByZXNzaW9uKHByb3BlcnR5UGF0aE9yUHJvcGVydHkpID8gcHJvcGVydHlQYXRoT3JQcm9wZXJ0eS4kdGFyZ2V0IDogcHJvcGVydHlQYXRoT3JQcm9wZXJ0eTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYW4gYXNzb2NpYXRlZCBhY3RpdmUgZW50aXR5IGV4aXN0cy5cbiAqIEBwYXJhbSBmdWxsQ29udGV4dFBhdGggVGhlIGZ1bGwgcGF0aCB0byB0aGUgY29udGV4dFxuICogQHJldHVybnMgVGhlIGV4cHJlc3Npb24tYmluZGluZyBzdHJpbmdcbiAqL1xuY29uc3QgaXNPckhhc0FjdGl2ZUVudGl0eSA9IChmdWxsQ29udGV4dFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8dW5rbm93bj4pOiBib29sZWFuIHwgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+ID0+IHtcblx0Y29uc3QgZHJhZnRSb290ID0gKGZ1bGxDb250ZXh0UGF0aC50YXJnZXRFbnRpdHlTZXQgYXMgRW50aXR5U2V0IHwgdW5kZWZpbmVkKT8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uRHJhZnRSb290O1xuXHRjb25zdCBkcmFmdE5vZGUgPSAoZnVsbENvbnRleHRQYXRoLnRhcmdldEVudGl0eVNldCBhcyBFbnRpdHlTZXQgfCB1bmRlZmluZWQpPy5hbm5vdGF0aW9ucz8uQ29tbW9uPy5EcmFmdE5vZGU7XG5cdGlmICghIWRyYWZ0Um9vdCB8fCAhIWRyYWZ0Tm9kZSkge1xuXHRcdHJldHVybiBub3QoRHJhZnQuSXNOZXdPYmplY3QpO1xuXHR9XG5cdHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRpdGxlIHZhbHVlIGV4cHJlc3Npb24gaXMgZW1wdHkuXG4gKiBAcGFyYW0gdGl0bGVWYWx1ZUV4cHJlc3Npb24gVGhlIHRpdGxlIHZhbHVlIGV4cHJlc3Npb25cbiAqIEByZXR1cm5zIFRoZSBleHByZXNzaW9uLWJpbmRpbmcgc3RyaW5nXG4gKi9cbmNvbnN0IGlzVGl0bGVFbXB0eUJvb2xlYW5FeHByZXNzaW9uID0gKHRpdGxlVmFsdWVFeHByZXNzaW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiA9PlxuXHR0aXRsZVZhbHVlRXhwcmVzc2lvbi5fdHlwZSA9PT0gXCJDb25zdGFudFwiID8gY29uc3RhbnQoIXRpdGxlVmFsdWVFeHByZXNzaW9uLnZhbHVlKSA6IGlzRW1wdHkodGl0bGVWYWx1ZUV4cHJlc3Npb24pO1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgdGl0bGUgZXhwcmVzc2lvbiBiaW5kaW5nLlxuICogQHBhcmFtIHByb3BlcnR5RGF0YU1vZGVsUGF0aCBUaGUgZnVsbCBwYXRoIHRvIHRoZSBwcm9wZXJ0eSBjb250ZXh0XG4gKiBAcGFyYW0gcHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbiBUaGUgYmluZGluZyBleHByZXNzaW9uIG9mIHRoZSBwcm9wZXJ0eSBhYm92ZVxuICogQHBhcmFtIFtmb3JtYXRPcHRpb25zXSBUaGUgZm9ybWF0IG9wdGlvbnMgb2YgdGhlIGZpZWxkXG4gKiBAcGFyYW0gZm9ybWF0T3B0aW9ucy5kaXNwbGF5TW9kZVxuICogQHJldHVybnMgVGhlIGV4cHJlc3Npb24tYmluZGluZyBwYXJhbWV0ZXJzXG4gKi9cbmNvbnN0IGdldFRpdGxlQmluZGluZ1dpdGhUZXh0QXJyYW5nZW1lbnQgPSBmdW5jdGlvbiAoXG5cdHByb3BlcnR5RGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eT4sXG5cdHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+LFxuXHRmb3JtYXRPcHRpb25zPzogUGFydGlhbDx7IGRpc3BsYXlNb2RlPzogRGlzcGxheU1vZGU7IHNwbGl0VGl0bGVPblR3b0xpbmVzPzogYm9vbGVhbiB9PlxuKTogQmluZGluZ0V4cHJlc3Npb25UdXBsZSB7XG5cdGNvbnN0IHRhcmdldERpc3BsYXlNb2RlT3ZlcnJpZGUgPSBmb3JtYXRPcHRpb25zPy5kaXNwbGF5TW9kZTtcblx0Y29uc3QgcHJvcGVydHlEZWZpbml0aW9uID0gZ2V0UHJvcGVydHlEZWZpbml0aW9uKHByb3BlcnR5RGF0YU1vZGVsUGF0aCk7XG5cdGNvbnN0IHRhcmdldERpc3BsYXlNb2RlID0gdGFyZ2V0RGlzcGxheU1vZGVPdmVycmlkZSB8fCBVSUZvcm1hdHRlcnMuZ2V0RGlzcGxheU1vZGUocHJvcGVydHlEYXRhTW9kZWxQYXRoKTtcblx0Y29uc3QgY29tbW9uVGV4dCA9IHByb3BlcnR5RGVmaW5pdGlvbj8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGV4dDtcblx0Y29uc3QgcmVsYXRpdmVMb2NhdGlvbiA9IGdldFJlbGF0aXZlUGF0aHMocHJvcGVydHlEYXRhTW9kZWxQYXRoKTtcblxuXHRpZiAocHJvcGVydHlEZWZpbml0aW9uKSB7XG5cdFx0cHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbiA9IGZvcm1hdFdpdGhUeXBlSW5mb3JtYXRpb24ocHJvcGVydHlEZWZpbml0aW9uLCBwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uKTtcblx0fVxuXG5cdGxldCBwYXJhbXM6IEJpbmRpbmdFeHByZXNzaW9uVHVwbGUgPSBbcHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbl07XG5cdGlmICh0YXJnZXREaXNwbGF5TW9kZSAhPT0gXCJWYWx1ZVwiICYmIGNvbW1vblRleHQpIHtcblx0XHRzd2l0Y2ggKHRhcmdldERpc3BsYXlNb2RlKSB7XG5cdFx0XHRjYXNlIFwiRGVzY3JpcHRpb25cIjpcblx0XHRcdFx0cGFyYW1zID0gW2dldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihjb21tb25UZXh0LCByZWxhdGl2ZUxvY2F0aW9uKV07XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIkRlc2NyaXB0aW9uVmFsdWVcIjpcblx0XHRcdFx0Y29uc3QgdGFyZ2V0RXhwcmVzc2lvbiA9XG5cdFx0XHRcdFx0Zm9ybWF0T3B0aW9ucz8uc3BsaXRUaXRsZU9uVHdvTGluZXMgPT09IHVuZGVmaW5lZFxuXHRcdFx0XHRcdFx0PyBpZkVsc2UoISFjb21tb25UZXh0LmFubm90YXRpb25zPy5VST8uVGV4dEFycmFuZ2VtZW50LCBwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uLCBjb25zdGFudChcIlwiKSlcblx0XHRcdFx0XHRcdDogaWZFbHNlKCEhZm9ybWF0T3B0aW9ucz8uc3BsaXRUaXRsZU9uVHdvTGluZXMsIGNvbnN0YW50KFwiXCIpLCBwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uKTtcblx0XHRcdFx0cGFyYW1zID0gW2dldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihjb21tb25UZXh0LCByZWxhdGl2ZUxvY2F0aW9uKSwgdGFyZ2V0RXhwcmVzc2lvbl07XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIlZhbHVlRGVzY3JpcHRpb25cIjpcblx0XHRcdFx0cGFyYW1zID0gW1xuXHRcdFx0XHRcdHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24sXG5cdFx0XHRcdFx0aWZFbHNlKCEhZm9ybWF0T3B0aW9ucz8uc3BsaXRUaXRsZU9uVHdvTGluZXMsIGNvbnN0YW50KFwiXCIpLCBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oY29tbW9uVGV4dCwgcmVsYXRpdmVMb2NhdGlvbikpXG5cdFx0XHRcdF07XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gcGFyYW1zO1xufTtcblxuLyoqXG4gKiBSZWN1cnNpdmVseSBhZGQgdGhlIHRleHQgYXJyYW5nZW1lbnQgdG8gYSB0aXRsZSBiaW5kaW5nIGV4cHJlc3Npb24uXG4gKiBAcGFyYW0gYmluZGluZ0V4cHJlc3Npb25Ub0VuaGFuY2UgVGhlIGJpbmRpbmcgZXhwcmVzc2lvbiB0byBiZSBlbmhhbmNlZFxuICogQHBhcmFtIHBhdGggVGhlIGRhdGEgZmllbGQgZGF0YSBtb2RlbCBvYmplY3QgcGF0aFxuICogQHJldHVybnMgQW4gdXBkYXRlZCBleHByZXNzaW9uIGNvbnRhaW5pbmcgdGhlIHRleHQgYXJyYW5nZW1lbnQgYmluZGluZyBwYXJhbWV0ZXJzXG4gKi9cbmNvbnN0IGFkZFRleHRBcnJhbmdlbWVudFRvVGl0bGVCaW5kaW5nRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIChcblx0YmluZGluZ0V4cHJlc3Npb25Ub0VuaGFuY2U6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+LFxuXHRwYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5PlxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4ge1xuXHRyZXR1cm4gdHJhbnNmb3JtUmVjdXJzaXZlbHkoYmluZGluZ0V4cHJlc3Npb25Ub0VuaGFuY2UsIFwiUGF0aEluTW9kZWxcIiwgKGV4cHJlc3Npb246IFBhdGhJbk1vZGVsRXhwcmVzc2lvbjx1bmtub3duPikgPT4ge1xuXHRcdGlmIChleHByZXNzaW9uLm1vZGVsTmFtZSAhPT0gdW5kZWZpbmVkKSByZXR1cm4gZXhwcmVzc2lvbjtcblx0XHQvLyBJbiBjYXNlIG9mIGRlZmF1bHQgbW9kZWwgd2UgdGhlbiBuZWVkIHRvIHJlc29sdmUgdGhlIHRleHQgYXJyYW5nZW1lbnQgcHJvcGVydHlcblx0XHRjb25zdCBwcm9wZXJ0eURhdGFNb2RlbFBhdGggPSBlbmhhbmNlRGF0YU1vZGVsUGF0aDxQcm9wZXJ0eT4ocGF0aCwgZXhwcmVzc2lvbi5wYXRoKTtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuXHRcdHJldHVybiBnZXRUaXRsZUJpbmRpbmdXaXRoVGV4dEFycmFuZ2VtZW50KHByb3BlcnR5RGF0YU1vZGVsUGF0aCwgZXhwcmVzc2lvbikgYXMgdW5rbm93biBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248YW55Pjtcblx0fSk7XG59O1xuXG4vKipcbiAqIEdldHMgYmluZGluZyBleHByZXNzaW9uIGZvciBjcmVhdGUgbW9kZSB0aXRsZS5cbiAqIEBwYXJhbSB2aWV3RGF0YSBUaGUgYXNzb2NpYXRlZCB2aWV3IGRhdGFcbiAqIEBwYXJhbSBbdHlwZU5hbWVdIFRoZSB0eXBlIG5hbWUgZnJvbSB0aGUgb2JqZWN0IHBhZ2UgaGVhZGVyIGluZm9cbiAqIEBwYXJhbSB0eXBlTmFtZS5UeXBlTmFtZVxuICogQHJldHVybnMgVGhlIGV4cHJlc3Npb24tYmluZGluZyBzdHJpbmdcbiAqL1xuY29uc3QgZ2V0Q3JlYXRlTW9kZVRpdGxlID0gZnVuY3Rpb24gKHZpZXdEYXRhOiBWaWV3RGF0YSwgeyBUeXBlTmFtZTogdHlwZU5hbWUgfTogSGVhZGVySW5mb1R5cGUpOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiB7XG5cdGNvbnN0IHRpdGxlTm9IZWFkZXJJbmZvID0gcGF0aEluTW9kZWwoXCJUX05FV19PQkpFQ1RcIiwgXCJzYXAuZmUuaTE4blwiKTtcblx0bGV0IGNyZWF0ZU1vZGVUaXRsZTogc3RyaW5nIHwgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4gPSB0aXRsZU5vSGVhZGVySW5mbztcblx0aWYgKFxuXHRcdHZpZXdEYXRhLnJlc291cmNlTW9kZWwuZ2V0VGV4dChcIlRfTkVXX09CSkVDVFwiLCB1bmRlZmluZWQsIHZpZXdEYXRhLmVudGl0eVNldCkgPT09XG5cdFx0dmlld0RhdGEucmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiVF9ORVdfT0JKRUNUX0RFRkFVTFRcIiwgdW5kZWZpbmVkLCB2aWV3RGF0YS5lbnRpdHlTZXQpXG5cdCkge1xuXHRcdC8vVF9ORVdfT0JKRUNUIGhhcyBub3QgYmVlbiBjdXN0b21pemVkXG5cdFx0Y29uc3QgdGl0bGVXaXRoSGVhZGVySW5mbyA9IHZpZXdEYXRhLnJlc291cmNlTW9kZWwuZ2V0VGV4dChcblx0XHRcdFwiVF9BTk5PVEFUSU9OX0hFTFBFUl9ERUZBVUxUX09CSkVDVF9QQUdFX0hFQURFUl9USVRMRVwiLFxuXHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0dmlld0RhdGEuZW50aXR5U2V0XG5cdFx0KTtcblx0XHRjcmVhdGVNb2RlVGl0bGUgPSAodHlwZU5hbWUgYXMgc3RyaW5nIHwgUHJvcGVydHlBbm5vdGF0aW9uVmFsdWU8c3RyaW5nPilcblx0XHRcdD8gY29uY2F0KHRpdGxlV2l0aEhlYWRlckluZm8sIFwiOiBcIiwgcmVzb2x2ZUJpbmRpbmdTdHJpbmcodHlwZU5hbWUudG9TdHJpbmcoKSkpXG5cdFx0XHQ6IHRpdGxlTm9IZWFkZXJJbmZvO1xuXHR9XG5cdHJldHVybiBmb3JtYXRSZXN1bHQoW2NyZWF0ZU1vZGVUaXRsZV0sIHZhbHVlRm9ybWF0dGVycy5mb3JtYXRUaXRsZSk7XG59O1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGFuIGVtcHR5IHN0cmluZyBzaG91bGQgYmUgdXNlZC5cbiAqIEBwYXJhbSBwYXRoIFRoZSBtZXRhIHBhdGggcG9pbnRpbmcgdG8gdGhlIHByb3BlcnR5IHVzZWQgZm9yIHRoZSB0aXRsZVxuICogQHJldHVybnMgVGhlIGV4cHJlc3Npb24tYmluZGluZyBzdHJpbmdcbiAqL1xuY29uc3Qgc2hvdWxkRm9yY2VFbXB0eVN0cmluZyA9IChwYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5IHwgUHJvcGVydHlQYXRoPik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiA9PiB7XG5cdGNvbnN0IHByb3BlcnR5RGVmaW5pdGlvbiA9IGdldFByb3BlcnR5RGVmaW5pdGlvbihwYXRoKTtcblx0aWYgKHByb3BlcnR5RGVmaW5pdGlvbiAmJiBwcm9wZXJ0eURlZmluaXRpb24uYW5ub3RhdGlvbnM/LkNvcmU/LkNvbXB1dGVkKSB7XG5cdFx0cmV0dXJuIFVJLklzSW5hY3RpdmU7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIGNvbnN0YW50KGZhbHNlKTtcblx0fVxufTtcblxuLyoqXG4gKiBHZXRzIHRpdGxlIHZhbHVlIGV4cHJlc3Npb24gZnJvbSBvYmplY3QgcGFnZSBoZWFkZXIgaW5mby5cbiAqIEBwYXJhbSBmdWxsQ29udGV4dFBhdGggVGhlIGZ1bGwgcGF0aCB0byB0aGUgY29udGV4dFxuICogQHBhcmFtIGhlYWRlckluZm9UaXRsZSBUaGUgdGl0bGUgdmFsdWUgZnJvbSB0aGUgb2JqZWN0IHBhZ2UgaGVhZGVyIGluZm9cbiAqIEBwYXJhbSBnZXRUZXh0QmluZGluZ0V4cHJlc3Npb24gVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUgdGV4dCBiaW5kaW5nIGV4cHJlc3Npb25cbiAqIEByZXR1cm5zIFRoZSBleHByZXNzaW9uLWJpbmRpbmcgc3RyaW5nXG4gKi9cbmNvbnN0IGdldFRpdGxlVmFsdWVFeHByZXNzaW9uRnJvbUhlYWRlckluZm8gPSBmdW5jdGlvbiAoXG5cdGZ1bGxDb250ZXh0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eT4sXG5cdGhlYWRlckluZm9UaXRsZTogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcyxcblx0Z2V0VGV4dEJpbmRpbmdFeHByZXNzaW9uOiBGdW5jdGlvblxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4gfCB1bmRlZmluZWQge1xuXHRsZXQgdGl0bGVWYWx1ZUV4cHJlc3Npb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHwgdW5kZWZpbmVkO1xuXHRpZiAoaGVhZGVySW5mb1RpdGxlLiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGQpIHtcblx0XHR0aXRsZVZhbHVlRXhwcmVzc2lvbiA9IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihoZWFkZXJJbmZvVGl0bGUuVmFsdWUpO1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLW1lbWJlci1hY2Nlc3Ncblx0XHRpZiAoKGhlYWRlckluZm9UaXRsZSBhcyBEYXRhRmllbGRUeXBlcykuVmFsdWU/LiR0YXJnZXQ/LmFubm90YXRpb25zLkNvbW1vbj8uVGV4dD8uYW5ub3RhdGlvbnM/LlVJPy5UZXh0QXJyYW5nZW1lbnQpIHtcblx0XHRcdC8vIEluIGNhc2UgYW4gZXhwbGljaXQgdGV4dCBhcnJhbmdlbWVudCB3YXMgc2V0IHdlIG1ha2UgdXNlIG9mIGl0IGluIHRoZSBkZXNjcmlwdGlvbiBhcyB3ZWxsXG5cdFx0XHR0aXRsZVZhbHVlRXhwcmVzc2lvbiA9IGFkZFRleHRBcnJhbmdlbWVudFRvVGl0bGVCaW5kaW5nRXhwcmVzc2lvbih0aXRsZVZhbHVlRXhwcmVzc2lvbiwgZnVsbENvbnRleHRQYXRoKTtcblx0XHR9XG5cdFx0dGl0bGVWYWx1ZUV4cHJlc3Npb24gPSBmb3JtYXRWYWx1ZVJlY3Vyc2l2ZWx5KHRpdGxlVmFsdWVFeHByZXNzaW9uLCBmdWxsQ29udGV4dFBhdGgpO1xuXHR9XG5cdGlmIChcblx0XHRoZWFkZXJJbmZvVGl0bGUuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckFubm90YXRpb24gJiZcblx0XHRoZWFkZXJJbmZvVGl0bGUuVGFyZ2V0LiR0YXJnZXQ/LiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5Db25uZWN0ZWRGaWVsZHNUeXBlXG5cdCkge1xuXHRcdGNvbnN0IGNvbm5lY3RlZEZpZWxkc1BhdGggPSBlbmhhbmNlRGF0YU1vZGVsUGF0aDxDb25uZWN0ZWRGaWVsZHM+KFxuXHRcdFx0ZnVsbENvbnRleHRQYXRoLFxuXHRcdFx0XCIkVHlwZS9AVUkuSGVhZGVySW5mby9UaXRsZS9UYXJnZXQvJEFubm90YXRpb25QYXRoXCJcblx0XHQpO1xuXHRcdHRpdGxlVmFsdWVFeHByZXNzaW9uID0gZ2V0TGFiZWxGb3JDb25uZWN0ZWRGaWVsZHMoXG5cdFx0XHRjb25uZWN0ZWRGaWVsZHNQYXRoLFxuXHRcdFx0Z2V0VGV4dEJpbmRpbmdFeHByZXNzaW9uLFxuXHRcdFx0ZmFsc2Vcblx0XHQpIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+O1xuXHR9XG5cdHJldHVybiB0aXRsZVZhbHVlRXhwcmVzc2lvbjtcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIE9iamVjdCBQYWdlLCBRdWljayBWaWV3LCBhbmQgb3RoZXIgdGl0bGVzLlxuICogQHBhcmFtIHBhdGggVGhlIGRhdGEgbW9kZWwgb2JqZWN0IHBhdGhcbiAqIEBwYXJhbSBnZXRUZXh0QmluZGluZ0V4cHJlc3Npb24gVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUgdGV4dCBiaW5kaW5nIGV4cHJlc3Npb25cbiAqIEBwYXJhbSBbZm9ybWF0T3B0aW9uc10gVGhlIGZvcm1hdCBvcHRpb25zIG9mIHRoZSBmaWVsZFxuICogQHBhcmFtIGZvcm1hdE9wdGlvbnMuZGlzcGxheU1vZGVcbiAqIEBwYXJhbSBbaGVhZGVySW5mb10gVGhlIG9iamVjdCBwYWdlIGhlYWRlciBpbmZvXG4gKiBAcGFyYW0gW3ZpZXdEYXRhXSBUaGUgYXNzb2NpYXRlZCB2aWV3IGRhdGFcbiAqIEBwYXJhbSBjdXN0b21Gb3JtYXR0ZXJcbiAqIEByZXR1cm5zIFRoZSBjb21waWxlZCBleHByZXNzaW9uLWJpbmRpbmcgc3RyaW5nXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRUaXRsZUJpbmRpbmdFeHByZXNzaW9uID0gZnVuY3Rpb24gKFxuXHRwYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5Pixcblx0Z2V0VGV4dEJpbmRpbmdFeHByZXNzaW9uOiBGdW5jdGlvbixcblx0Zm9ybWF0T3B0aW9ucz86IFBhcnRpYWw8eyBkaXNwbGF5TW9kZT86IERpc3BsYXlNb2RlOyBzcGxpdFRpdGxlT25Ud29MaW5lcz86IGJvb2xlYW4gfT4sXG5cdGhlYWRlckluZm8/OiBIZWFkZXJJbmZvVHlwZSxcblx0dmlld0RhdGE/OiBWaWV3RGF0YSxcblx0Y3VzdG9tRm9ybWF0dGVyPzogc3RyaW5nXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRjb25zdCBmb3JtYXR0ZXIgPSBjdXN0b21Gb3JtYXR0ZXIgfHwgdmFsdWVGb3JtYXR0ZXJzLmZvcm1hdFRpdGxlO1xuXHRsZXQgY3JlYXRlTW9kZVRpdGxlOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiB8IHN0cmluZyA9IHBhdGhJbk1vZGVsKFwiVF9ORVdfT0JKRUNUXCIsIFwic2FwLmZlLmkxOG5cIik7XG5cdGxldCB0aXRsZVZhbHVlRXhwcmVzc2lvbjtcblx0bGV0IGlzSGVhZGVySW5mb1RpdGxlRW1wdHkgPSBmYWxzZTtcblxuXHQvL0lmIHRoZSB0aXRsZSBjb250YWlucyBhIGd1aWQgd2l0aCBhbiBleHRlcm5hbCBJRCB3ZSB3YW50IHRvIGJlaGF2ZSBhcyBpZiB0aGUgdGl0bGUgYW5ub3RhdGlvbiB3b3VsZCBwb2ludCB0byB0aGUgdGFyZ2V0XG5cdC8vb2YgdGhlIGV4dGVybmFsSUQgYW5ub3RhdGlvblxuXHRsZXQgZXh0SWRIZWFkZXJJbmZvVGl0bGU7XG5cdGlmIChpc0RhdGFGaWVsZChoZWFkZXJJbmZvPy5UaXRsZSkgJiYgaGVhZGVySW5mbz8uVGl0bGUuVmFsdWU/LiR0YXJnZXQ/LmFubm90YXRpb25zPy5Db21tb24/LkV4dGVybmFsSUQpIHtcblx0XHRleHRJZEhlYWRlckluZm9UaXRsZSA9IHtcblx0XHRcdC4uLmhlYWRlckluZm8uVGl0bGUsXG5cdFx0XHRWYWx1ZTogeyAuLi5oZWFkZXJJbmZvLlRpdGxlLlZhbHVlLCAkdGFyZ2V0OiB7IC4uLmhlYWRlckluZm8uVGl0bGUuVmFsdWUuJHRhcmdldCB9IH1cblx0XHR9O1xuXHRcdGV4dElkSGVhZGVySW5mb1RpdGxlLlZhbHVlLnBhdGggPSBoZWFkZXJJbmZvLlRpdGxlLlZhbHVlLiR0YXJnZXQ/LmFubm90YXRpb25zPy5Db21tb24/LkV4dGVybmFsSUQucGF0aDtcblx0XHRleHRJZEhlYWRlckluZm9UaXRsZS5WYWx1ZS4kdGFyZ2V0ID0gaGVhZGVySW5mby5UaXRsZS5WYWx1ZS4kdGFyZ2V0Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5FeHRlcm5hbElELiR0YXJnZXQ7XG5cdH1cblxuXHQvLyBJZiB3ZSBoYXZlIGEgaGVhZGVySW5mbyBidXQgbm8gdGl0bGUsIG9yIGVtcHR5IHRpdGxlIHdlIG5lZWQgdG8gZGlzcGxheSBhbiBlbXB0eSBzdHJpbmcgd2hlbiB3ZSBhcmUgb24gYW4gYWN0aXZlIG9iamVjdFxuXHQvLyByZWNlaXZlZCBoZWFkZXIgaW5mbyBmb3Igb2JqZWN0IHBhZ2Vcblx0aWYgKGhlYWRlckluZm8/LlRpdGxlPy4kVHlwZSAmJiB2aWV3RGF0YSkge1xuXHRcdGlmIChleHRJZEhlYWRlckluZm9UaXRsZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aXRsZVZhbHVlRXhwcmVzc2lvbiA9IGdldFRpdGxlVmFsdWVFeHByZXNzaW9uRnJvbUhlYWRlckluZm8ocGF0aCwgaGVhZGVySW5mby5UaXRsZSwgZ2V0VGV4dEJpbmRpbmdFeHByZXNzaW9uKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGl0bGVWYWx1ZUV4cHJlc3Npb24gPSBnZXRUaXRsZVZhbHVlRXhwcmVzc2lvbkZyb21IZWFkZXJJbmZvKHBhdGgsIGV4dElkSGVhZGVySW5mb1RpdGxlLCBnZXRUZXh0QmluZGluZ0V4cHJlc3Npb24pO1xuXHRcdH1cblx0XHRjcmVhdGVNb2RlVGl0bGUgPSBnZXRDcmVhdGVNb2RlVGl0bGUodmlld0RhdGEsIGhlYWRlckluZm8pO1xuXHRcdGlmIChpc0NvbnN0YW50KHRpdGxlVmFsdWVFeHByZXNzaW9uKSAmJiB0aXRsZVZhbHVlRXhwcmVzc2lvbi52YWx1ZSA9PT0gXCJcIikge1xuXHRcdFx0aXNIZWFkZXJJbmZvVGl0bGVFbXB0eSA9IHRydWU7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKGhlYWRlckluZm8gJiYgKGhlYWRlckluZm8uVGl0bGUgPT09IHVuZGVmaW5lZCB8fCBoZWFkZXJJbmZvLlRpdGxlLnRvU3RyaW5nKCkgPT09IFwiXCIpKSB7XG5cdFx0aXNIZWFkZXJJbmZvVGl0bGVFbXB0eSA9IHRydWU7XG5cdFx0Ly8gcmVjZWl2ZWQgaGVhZGVyIGluZm8gZm9yIG9iamVjdFBhZ2Vcblx0XHRpZiAoIXZpZXdEYXRhKSB7XG5cdFx0XHR0aXRsZVZhbHVlRXhwcmVzc2lvbiA9IGNvbnN0YW50KFwiXCIpO1xuXHRcdH1cblx0fVxuXHRpZiAodGl0bGVWYWx1ZUV4cHJlc3Npb24gJiYgaXNDb25zdGFudCh0aXRsZVZhbHVlRXhwcmVzc2lvbikpIHtcblx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24odGl0bGVWYWx1ZUV4cHJlc3Npb24pO1xuXHR9XG5cblx0Ly8gbmVlZGVkIGZvciBxdWlja3ZpZXdcblx0aWYgKGlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uKHBhdGgudGFyZ2V0T2JqZWN0KSkge1xuXHRcdHBhdGggPSBlbmhhbmNlRGF0YU1vZGVsUGF0aChwYXRoLCBwYXRoLnRhcmdldE9iamVjdC5wYXRoKTtcblx0fVxuXG5cdGNvbnN0IHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjx1bmtub3duPiA9IHBhdGhJbk1vZGVsKGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgocGF0aCkpO1xuXHRsZXQgcGFyYW1zOiBCaW5kaW5nRXhwcmVzc2lvblR1cGxlIHwgdW5kZWZpbmVkO1xuXHRpZiAodGl0bGVWYWx1ZUV4cHJlc3Npb24pIHtcblx0XHRwYXJhbXMgPSBBcnJheS5pc0FycmF5KHRpdGxlVmFsdWVFeHByZXNzaW9uKSA/ICh0aXRsZVZhbHVlRXhwcmVzc2lvbiBhcyB1bmtub3duIGFzIEJpbmRpbmdFeHByZXNzaW9uVHVwbGUpIDogW3RpdGxlVmFsdWVFeHByZXNzaW9uXTtcblx0fSBlbHNlIGlmIChwYXRoLnRhcmdldE9iamVjdCAmJiBpc1Byb3BlcnR5KHBhdGgudGFyZ2V0T2JqZWN0KSkge1xuXHRcdHBhcmFtcyA9IGdldFRpdGxlQmluZGluZ1dpdGhUZXh0QXJyYW5nZW1lbnQocGF0aCwgcHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbiwgZm9ybWF0T3B0aW9ucyk7XG5cdH1cblx0Y29uc3QgaXNUaXRsZUVtcHR5ID0gcGFyYW1zID09PSB1bmRlZmluZWQgfHwgaXNUaXRsZUVtcHR5Qm9vbGVhbkV4cHJlc3Npb24ocGFyYW1zWzBdKTtcblx0Y29uc3QgZm9yY2VFbXB0eVN0cmluZyA9IHNob3VsZEZvcmNlRW1wdHlTdHJpbmcocGF0aCk7XG5cdGNvbnN0IGZvcm1hdHRlZEV4cHJlc3Npb24gPSBwYXJhbXMgIT0gdW5kZWZpbmVkICYmIGZvcm1hdFJlc3VsdChwYXJhbXMsIGZvcm1hdHRlcik7XG5cdHRpdGxlVmFsdWVFeHByZXNzaW9uID0gaWZFbHNlKFxuXHRcdGlzVGl0bGVFbXB0eSxcblx0XHRpZkVsc2UoXG5cdFx0XHRvcihpc0hlYWRlckluZm9UaXRsZUVtcHR5ICYmIGlzT3JIYXNBY3RpdmVFbnRpdHkocGF0aCksIGZvcmNlRW1wdHlTdHJpbmcpLFxuXHRcdFx0XCJcIixcblx0XHRcdGlmRWxzZShcblx0XHRcdFx0aXNVbmRlZmluZWRFeHByZXNzaW9uKGNvbnN0YW50KGN1c3RvbUZvcm1hdHRlcikpLFxuXHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0b3IoVUkuSXNDcmVhdGVNb2RlLCBub3QoaXNPckhhc0FjdGl2ZUVudGl0eShwYXRoKSkpLFxuXHRcdFx0XHRcdGNyZWF0ZU1vZGVUaXRsZSxcblx0XHRcdFx0XHRwYXRoSW5Nb2RlbChcIlRfQU5OT1RBVElPTl9IRUxQRVJfREVGQVVMVF9IRUFERVJfVElUTEVfTk9fSEVBREVSX0lORk9cIiwgXCJzYXAuZmUuaTE4blwiKVxuXHRcdFx0XHQpLFxuXHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0bm90KGlzT3JIYXNBY3RpdmVFbnRpdHkocGF0aCkpLFxuXHRcdFx0XHRcdHZpZXdEYXRhPy5yZXNvdXJjZU1vZGVsLmdldFRleHQoXCJUX05FV19PQkpFQ1RcIiksXG5cdFx0XHRcdFx0dmlld0RhdGE/LnJlc291cmNlTW9kZWwuZ2V0VGV4dChcIlRfQU5OT1RBVElPTl9IRUxQRVJfREVGQVVMVF9IRUFERVJfVElUTEVfTk9fSEVBREVSX0lORk9cIilcblx0XHRcdFx0KVxuXHRcdFx0KVxuXHRcdCksXG5cdFx0Zm9ybWF0dGVkRXhwcmVzc2lvblxuXHQpO1xuXG5cdHJldHVybiBjb21waWxlRXhwcmVzc2lvbih0aXRsZVZhbHVlRXhwcmVzc2lvbik7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFrQ08sTUFBTUEsc0JBQXNCLEdBQUcsU0FBQUEsQ0FDckNDLDBCQUE0RCxFQUM1REMsZUFBNkQsRUFDMUI7SUFDbkMsT0FBT0Msb0JBQW9CLENBQUNGLDBCQUEwQixFQUFFLGFBQWEsRUFBR0csVUFBVSxJQUFLO01BQ3RGLElBQUlDLGFBQWEsR0FBR0QsVUFBVTtNQUM5QixJQUFJQSxVQUFVLENBQUNFLFNBQVMsS0FBS0MsU0FBUyxFQUFFO1FBQ3ZDO1FBQ0EsTUFBTUMsc0JBQXNCLEdBQUdDLG9CQUFvQixDQUFXUCxlQUFlLEVBQUVFLFVBQVUsQ0FBQ00sSUFBSSxDQUFDO1FBQy9GTCxhQUFhLEdBQUdNLHlCQUF5QixDQUFDSCxzQkFBc0IsQ0FBQ0ksWUFBWSxFQUFHUixVQUFVLENBQUM7TUFDNUY7TUFDQSxPQUFPQyxhQUFhO0lBQ3JCLENBQUMsQ0FBQztFQUNILENBQUM7O0VBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUpBUSxRQUFBLENBQUFiLHNCQUFBLEdBQUFBLHNCQUFBO0VBS0EsTUFBTWMscUJBQXFCLEdBQUlDLHVCQUFxRSxJQUEyQjtJQUM5SCxNQUFNQyxzQkFBc0IsR0FBR0QsdUJBQXVCLENBQUNILFlBQVk7SUFDbkUsT0FBT0ssd0JBQXdCLENBQUNELHNCQUFzQixDQUFDLEdBQUdBLHNCQUFzQixDQUFDRSxPQUFPLEdBQUdGLHNCQUFzQjtFQUNsSCxDQUFDOztFQUVEO0FB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
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
} from "sap/fe/base/BindingToolkit";
|
|
22
22
|
import valueFormatters from "sap/fe/core/formatters/ValueFormatter";
|
|
23
23
|
import { Draft, UI } from "sap/fe/core/helpers/BindingHelper";
|
|
24
|
-
import { isPathAnnotationExpression, isPropertyPathExpression } from "sap/fe/core/helpers/TypeGuards";
|
|
24
|
+
import { isPathAnnotationExpression, isProperty, isPropertyPathExpression } from "sap/fe/core/helpers/TypeGuards";
|
|
25
25
|
import type { ViewData } from "sap/fe/core/services/TemplatedViewServiceFactory";
|
|
26
26
|
import { getLabelForConnectedFields } from "sap/fe/core/templating/DataFieldFormatters";
|
|
27
27
|
import type { DataModelObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
|
|
@@ -290,15 +290,15 @@ export const getTitleBindingExpression = function (
|
|
|
290
290
|
}
|
|
291
291
|
|
|
292
292
|
const propertyBindingExpression: BindingToolkitExpression<unknown> = pathInModel(getContextRelativeTargetObjectPath(path));
|
|
293
|
-
let params: BindingExpressionTuple;
|
|
293
|
+
let params: BindingExpressionTuple | undefined;
|
|
294
294
|
if (titleValueExpression) {
|
|
295
295
|
params = Array.isArray(titleValueExpression) ? (titleValueExpression as unknown as BindingExpressionTuple) : [titleValueExpression];
|
|
296
|
-
} else {
|
|
296
|
+
} else if (path.targetObject && isProperty(path.targetObject)) {
|
|
297
297
|
params = getTitleBindingWithTextArrangement(path, propertyBindingExpression, formatOptions);
|
|
298
298
|
}
|
|
299
|
-
const isTitleEmpty = isTitleEmptyBooleanExpression(params[0]);
|
|
299
|
+
const isTitleEmpty = params === undefined || isTitleEmptyBooleanExpression(params[0]);
|
|
300
300
|
const forceEmptyString = shouldForceEmptyString(path);
|
|
301
|
-
const formattedExpression = formatResult(params, formatter);
|
|
301
|
+
const formattedExpression = params != undefined && formatResult(params, formatter);
|
|
302
302
|
titleValueExpression = ifElse(
|
|
303
303
|
isTitleEmpty,
|
|
304
304
|
ifElse(
|
|
@@ -44,7 +44,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/formatters/CriticalityFormatter", "s
|
|
|
44
44
|
controls: [],
|
|
45
45
|
elements: [],
|
|
46
46
|
// eslint-disable-next-line no-template-curly-in-string
|
|
47
|
-
version: "1.130.
|
|
47
|
+
version: "1.130.8",
|
|
48
48
|
noLibraryCSS: true,
|
|
49
49
|
extensions: {
|
|
50
50
|
//Configuration used for rule loading of Support Assistant
|