@sapui5/sap.fe.macros 1.139.1 → 1.139.4
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 +1 -1
- package/src/sap/fe/macros/.library +1 -1
- package/src/sap/fe/macros/coreUI/CreateDialog.js +2 -2
- package/src/sap/fe/macros/coreUI/CreateDialog.tsx +1 -1
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +8 -8
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +7 -7
- package/src/sap/fe/macros/filterBar/FilterBarAPI.js +5 -3
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +13 -3
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +4 -3
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +3 -2
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +6 -2
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +5 -1
- package/src/sap/fe/macros/library.js +1 -1
- package/src/sap/fe/macros/mdc/adapter/StateHelper.js +11 -1
- package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +16 -1
- package/src/sap/fe/macros/visualfilters/VisualFilter.js +20 -2
- package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +28 -6
|
@@ -124,11 +124,12 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/viewState/IView
|
|
|
124
124
|
if (!filterBar || !sv) {
|
|
125
125
|
resolve();
|
|
126
126
|
}
|
|
127
|
-
await this._applySelectionVariant(view, navigationParameter, filterVariantApplied);
|
|
127
|
+
const appliedCondition = await this._applySelectionVariant(view, navigationParameter, filterVariantApplied);
|
|
128
|
+
const selectionVariantWasApplied = Array.isArray(appliedCondition) && appliedCondition.length > 0;
|
|
128
129
|
let bPreventInitialSearch = false;
|
|
129
130
|
const variantManagement = this._getFilterBarVM(view);
|
|
130
131
|
if (filterBar) {
|
|
131
|
-
if (navigationParameter.navigationType !== NavType.initial && reqStdVariant || !variantManagement && view.getViewData().initialLoad === InitialLoadMode.Enabled || controller._shouldAutoTriggerSearch(variantManagement)) {
|
|
132
|
+
if (navigationParameter.navigationType !== NavType.initial && reqStdVariant && selectionVariantWasApplied || !variantManagement && view.getViewData().initialLoad === InitialLoadMode.Enabled || controller._shouldAutoTriggerSearch(variantManagement)) {
|
|
132
133
|
const filterBarAPI = filterBar.getParent();
|
|
133
134
|
filterBarAPI.triggerSearch();
|
|
134
135
|
} else {
|
|
@@ -156,4 +157,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/viewState/IView
|
|
|
156
157
|
_exports = FilterBarAPIStateHandler;
|
|
157
158
|
return _exports;
|
|
158
159
|
}, false);
|
|
159
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaWx0ZXJCYXJBUElTdGF0ZUhhbmRsZXIiLCJfSVZpZXdTdGF0ZUNvbnRyaWJ1dG8iLCJhcHBseSIsImFyZ3VtZW50cyIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJhcHBseUxlZ2FjeVN0YXRlIiwiZ2V0Q29udHJvbFN0YXRlIiwiX25hdlBhcmFtZXRlcnMiLCJzaG91bGRBcHBseURpZmZTdGF0ZSIsInNraXBNZXJnZSIsImZpbHRlckJhciIsImNvbnRlbnQiLCJmaWx0ZXJCYXJTdGF0ZSIsImNvbnRyb2xTdGF0ZSIsImlubmVyU3RhdGUiLCJmdWxsU3RhdGUiLCJpbml0aWFsU3RhdGUiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiYXBwbHlTdGF0ZSIsIm5hdlBhcmFtZXRlciIsIm5hdmlnYXRpb25UeXBlIiwiTmF2VHlwZSIsImh5YnJpZCIsInVuZGVmaW5lZCIsInhBcHBTdGF0ZUZpbHRlcnMiLCJjb252ZXJ0U2VsZWN0aW9uVmFyaWFudFRvU3RhdGVGaWx0ZXJzIiwic2VsZWN0aW9uVmFyaWFudCIsIm1lcmdlZEZ1bGxTdGF0ZSIsImZpbHRlciIsIl9jbGVhckZpbHRlclZhbHVlc1dpdGhPcHRpb25zIiwiY2xlYXJFZGl0RmlsdGVyIiwiU3RhdGVVdGlsIiwiYXBwbHlFeHRlcm5hbFN0YXRlIiwiZGlmZlN0YXRlIiwiZXJyb3IiLCJMb2ciLCJfaW5pdGlhbFN0YXRlUHJvbWlzZSIsInJlc29sdmUiLCJyZXRyaWV2ZVN0YXRlIiwicmV0cmlldmVFeHRlcm5hbFN0YXRlIiwicHJvcGVydGllc0luZm8iLCJnZXRQcm9wZXJ0eUluZm9TZXQiLCJwcm9wZXJ0eUluZm8iLCJwYXRoIiwicmVtb3ZlRnJvbUFwcFN0YXRlIiwiZm9yRWFjaCIsIlByb3BlcnR5SW5mbyIsInNldEluaXRpYWxTdGF0ZSIsImluaXRpYWxDb250cm9sU3RhdGUiLCJlIiwiYXBwbHlOYXZpZ2F0aW9uUGFyYW1ldGVycyIsIm5hdmlnYXRpb25QYXJhbWV0ZXIiLCJQcm9taXNlIiwidmlldyIsImdldFBhZ2VDb250cm9sbGVyIiwiZ2V0VmlldyIsImNvbnRyb2xsZXIiLCJhcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJjb21wb25lbnREYXRhIiwiZ2V0Q29tcG9uZW50RGF0YSIsInN0YXJ0dXBQYXJhbWV0ZXJzIiwidmFyaWFudFN0YXR1cyIsImhhbmRsZVZhcmlhbnRJZFBhc3NlZFZpYVVSTFBhcmFtcyIsImZpbHRlclZhcmlhbnRBcHBsaWVkIiwiZ2V0Q29udGVudCIsInN2IiwicmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQiLCJyZXFTdGRWYXJpYW50IiwiX2FwcGx5U2VsZWN0aW9uVmFyaWFudCIsImJQcmV2ZW50SW5pdGlhbFNlYXJjaCIsInZhcmlhbnRNYW5hZ2VtZW50IiwiX2dldEZpbHRlckJhclZNIiwiaW5pdGlhbCIsImdldFZpZXdEYXRhIiwiaW5pdGlhbExvYWQiLCJJbml0aWFsTG9hZE1vZGUiLCJFbmFibGVkIiwiX3Nob3VsZEF1dG9UcmlnZ2VyU2VhcmNoIiwiZmlsdGVyQmFyQVBJIiwiZ2V0UGFyZW50IiwidHJpZ2dlclNlYXJjaCIsIl9wcmV2ZW50SW5pdGlhbFNlYXJjaCIsIkRldmljZSIsInN5c3RlbSIsImRlc2t0b3AiLCJpbnRlcm5hbE1vZGVsQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0Iiwic2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZCIsImlzU2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZCIsInNldFByb3BlcnR5IiwiX2VuYWJsZUZpbHRlckJhciIsIndhcm5pbmciLCJJVmlld1N0YXRlQ29udHJpYnV0b3JNaXhpbiJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRmlsdGVyQmFyQVBJU3RhdGVIYW5kbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBDb250cm9sU3RhdGUsIExlZ2FjeUZpbHRlckJhclN0YXRlLCBOYXZpZ2F0aW9uUGFyYW1ldGVyIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1ZpZXdTdGF0ZVwiO1xuaW1wb3J0IElWaWV3U3RhdGVDb250cmlidXRvck1peGluIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy92aWV3U3RhdGUvSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yTWl4aW5cIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgSW5pdGlhbExvYWRNb2RlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9GaWx0ZXJCYXJcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlJbmZvIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvaW50ZXJuYWwvUHJvcGVydHlJbmZvXCI7XG5pbXBvcnQgdHlwZSBTZWxlY3Rpb25WYXJpYW50IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9TZWxlY3Rpb25WYXJpYW50XCI7XG5pbXBvcnQgeyBOYXZUeXBlIH0gZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIExpc3RSZXBvcnRDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvdGVtcGxhdGVzL0xpc3RSZXBvcnQvTGlzdFJlcG9ydENvbnRyb2xsZXIuY29udHJvbGxlclwiO1xuaW1wb3J0IERldmljZSBmcm9tIFwic2FwL3VpL0RldmljZVwiO1xuaW1wb3J0IHR5cGUgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgVmFyaWFudE1hbmFnZW1lbnQgZnJvbSBcInNhcC91aS9mbC92YXJpYW50cy9WYXJpYW50TWFuYWdlbWVudFwiO1xuaW1wb3J0IFN0YXRlVXRpbCBmcm9tIFwic2FwL3VpL21kYy9wMTNuL1N0YXRlVXRpbFwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyQVBJIGZyb20gXCIuLi9GaWx0ZXJCYXJBUElcIjtcbmltcG9ydCB0eXBlIHsgRmlsdGVyQmFyU3RhdGUgfSBmcm9tIFwiLi4vRmlsdGVyQmFyQVBJXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZpbHRlckJhckFQSVN0YXRlSGFuZGxlciBleHRlbmRzIElWaWV3U3RhdGVDb250cmlidXRvck1peGluPEZpbHRlckJhclN0YXRlPiB7XG5cdGFzeW5jIGFwcGx5TGVnYWN5U3RhdGUoXG5cdFx0dGhpczogRmlsdGVyQmFyQVBJLFxuXHRcdGdldENvbnRyb2xTdGF0ZTogKGNvbnRyb2w6IE1hbmFnZWRPYmplY3QpID0+IENvbnRyb2xTdGF0ZSxcblx0XHRfbmF2UGFyYW1ldGVycz86IE5hdmlnYXRpb25QYXJhbWV0ZXIsXG5cdFx0c2hvdWxkQXBwbHlEaWZmU3RhdGU/OiBib29sZWFuLFxuXHRcdHNraXBNZXJnZT86IGJvb2xlYW5cblx0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgZmlsdGVyQmFyID0gdGhpcy5jb250ZW50O1xuXHRcdGNvbnN0IGZpbHRlckJhclN0YXRlID0gZ2V0Q29udHJvbFN0YXRlKGZpbHRlckJhcikgYXMgeyBpbml0aWFsU3RhdGU/OiBMZWdhY3lGaWx0ZXJCYXJTdGF0ZTsgZnVsbFN0YXRlPzogTGVnYWN5RmlsdGVyQmFyU3RhdGUgfTtcblx0XHRjb25zdCBjb250cm9sU3RhdGU6IEZpbHRlckJhclN0YXRlID0ge307XG5cblx0XHRpZiAoZmlsdGVyQmFyU3RhdGUpIHtcblx0XHRcdGNvbnRyb2xTdGF0ZS5pbm5lclN0YXRlID0ge1xuXHRcdFx0XHQuLi5maWx0ZXJCYXJTdGF0ZSxcblx0XHRcdFx0ZnVsbFN0YXRlOiB7XG5cdFx0XHRcdFx0Li4uY29udHJvbFN0YXRlLmlubmVyU3RhdGU/LmZ1bGxTdGF0ZSxcblx0XHRcdFx0XHQuLi5maWx0ZXJCYXJTdGF0ZS5mdWxsU3RhdGVcblx0XHRcdFx0fSxcblx0XHRcdFx0aW5pdGlhbFN0YXRlOiB7XG5cdFx0XHRcdFx0Li4uY29udHJvbFN0YXRlLmlubmVyU3RhdGU/LmluaXRpYWxTdGF0ZSxcblx0XHRcdFx0XHQuLi5maWx0ZXJCYXJTdGF0ZS5pbml0aWFsU3RhdGVcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHR9XG5cdFx0aWYgKGNvbnRyb2xTdGF0ZSAmJiBPYmplY3Qua2V5cyhjb250cm9sU3RhdGUpLmxlbmd0aCA+IDApIHtcblx0XHRcdGF3YWl0IHRoaXMuYXBwbHlTdGF0ZShjb250cm9sU3RhdGUgYXMgb2JqZWN0LCBfbmF2UGFyYW1ldGVycywgc2hvdWxkQXBwbHlEaWZmU3RhdGUsIHNraXBNZXJnZSk7XG5cdFx0fVxuXHR9XG5cblx0YXN5bmMgYXBwbHlTdGF0ZShcblx0XHR0aGlzOiBGaWx0ZXJCYXJBUEksXG5cdFx0Y29udHJvbFN0YXRlOiBGaWx0ZXJCYXJTdGF0ZSxcblx0XHRuYXZQYXJhbWV0ZXI/OiBOYXZpZ2F0aW9uUGFyYW1ldGVyLFxuXHRcdHNob3VsZEFwcGx5RGlmZlN0YXRlPzogYm9vbGVhbixcblx0XHRza2lwTWVyZ2U/OiBib29sZWFuXG5cdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRpZiAoY29udHJvbFN0YXRlICYmIG5hdlBhcmFtZXRlcikge1xuXHRcdFx0XHRjb25zdCBuYXZpZ2F0aW9uVHlwZSA9IG5hdlBhcmFtZXRlci5uYXZpZ2F0aW9uVHlwZTtcblx0XHRcdFx0Ly9XaGVuIG5hdmlnYXRpb24gdHlwZSBpcyBoeWJyaWQsIHdlIG92ZXJyaWRlIHRoZSBmaWx0ZXIgY29uZGl0aW9ucyBpbiBJQXBwU3RhdGUgd2l0aCBTViByZWNlaXZlZCBmcm9tIFhhcHBTdGF0ZVxuXHRcdFx0XHRpZiAobmF2aWdhdGlvblR5cGUgPT09IE5hdlR5cGUuaHlicmlkICYmIGNvbnRyb2xTdGF0ZS5pbm5lclN0YXRlPy5mdWxsU3RhdGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdGNvbnN0IHhBcHBTdGF0ZUZpbHRlcnMgPSBhd2FpdCB0aGlzLmNvbnZlcnRTZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMoXG5cdFx0XHRcdFx0XHRuYXZQYXJhbWV0ZXIuc2VsZWN0aW9uVmFyaWFudCBhcyBTZWxlY3Rpb25WYXJpYW50LFxuXHRcdFx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRjb25zdCBtZXJnZWRGdWxsU3RhdGUgPSB7XG5cdFx0XHRcdFx0XHQuLi5jb250cm9sU3RhdGUuaW5uZXJTdGF0ZT8uZnVsbFN0YXRlLFxuXHRcdFx0XHRcdFx0ZmlsdGVyOiB7XG5cdFx0XHRcdFx0XHRcdC4uLmNvbnRyb2xTdGF0ZS5pbm5lclN0YXRlPy5mdWxsU3RhdGUuZmlsdGVyLFxuXHRcdFx0XHRcdFx0XHQuLi54QXBwU3RhdGVGaWx0ZXJzXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHQvL3doZW4gbmF2aWdhdGluZyBmcm9tIGNhcmQsIHJlbW92ZSBhbGwgZXhpc3RpbmcgZmlsdGVycyB2YWx1ZXMgKGRlZmF1bHQgb3Igb3RoZXJ3aXNlKSBhbmQgdGhlbiBhcHBseSB0aGUgc3RhdGVcblx0XHRcdFx0XHRhd2FpdCB0aGlzLl9jbGVhckZpbHRlclZhbHVlc1dpdGhPcHRpb25zKHRoaXMuY29udGVudCwgeyBjbGVhckVkaXRGaWx0ZXI6IHRydWUgfSk7XG5cdFx0XHRcdFx0cmV0dXJuIGF3YWl0IFN0YXRlVXRpbC5hcHBseUV4dGVybmFsU3RhdGUodGhpcy5jb250ZW50LCBtZXJnZWRGdWxsU3RhdGUpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHNob3VsZEFwcGx5RGlmZlN0YXRlKSB7XG5cdFx0XHRcdFx0Y29uc3QgZGlmZlN0YXRlOiBvYmplY3QgPSBhd2FpdCBTdGF0ZVV0aWwuZGlmZlN0YXRlKFxuXHRcdFx0XHRcdFx0dGhpcy5jb250ZW50LFxuXHRcdFx0XHRcdFx0Y29udHJvbFN0YXRlLmlubmVyU3RhdGU/LmluaXRpYWxTdGF0ZSBhcyBvYmplY3QsXG5cdFx0XHRcdFx0XHRjb250cm9sU3RhdGUuaW5uZXJTdGF0ZT8uZnVsbFN0YXRlIGFzIG9iamVjdFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0cmV0dXJuIGF3YWl0IFN0YXRlVXRpbC5hcHBseUV4dGVybmFsU3RhdGUodGhpcy5jb250ZW50LCBkaWZmU3RhdGUpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHNraXBNZXJnZSkge1xuXHRcdFx0XHRcdC8vc2tpcE1lcmdlIGlzIHRydWUgd2hlbiBjb21pbmcgZnJvbSB0aGUgZHluYW1pYyB0aWxlLCBpbiB0aGlzIGNhc2UsIHJlbW92ZSBhbGwgZXhpc3RpbmcgZmlsdGVycyB2YWx1ZXMgKGRlZmF1bHQgb3Igb3RoZXJ3aXNlKVxuXHRcdFx0XHRcdGF3YWl0IHRoaXMuX2NsZWFyRmlsdGVyVmFsdWVzV2l0aE9wdGlvbnModGhpcy5jb250ZW50LCB7IGNsZWFyRWRpdEZpbHRlcjogdHJ1ZSB9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gYXdhaXQgU3RhdGVVdGlsLmFwcGx5RXh0ZXJuYWxTdGF0ZSh0aGlzLmNvbnRlbnQsIGNvbnRyb2xTdGF0ZT8uaW5uZXJTdGF0ZT8uZnVsbFN0YXRlID8/IGNvbnRyb2xTdGF0ZSk7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcblx0XHRcdExvZy5lcnJvcihlcnJvciBhcyBzdHJpbmcpO1xuXHRcdH0gZmluYWxseSB7XG5cdFx0XHR0aGlzLl9pbml0aWFsU3RhdGVQcm9taXNlLnJlc29sdmUoKTtcblx0XHR9XG5cdH1cblxuXHRhc3luYyByZXRyaWV2ZVN0YXRlKHRoaXM6IEZpbHRlckJhckFQSSk6IFByb21pc2U8RmlsdGVyQmFyU3RhdGUgfCBudWxsPiB7XG5cdFx0Y29uc3QgZmlsdGVyQmFyU3RhdGU6IEZpbHRlckJhclN0YXRlID0ge307XG5cdFx0ZmlsdGVyQmFyU3RhdGUuaW5uZXJTdGF0ZSA9IHRoaXMuZ2V0Q29udHJvbFN0YXRlKGF3YWl0IFN0YXRlVXRpbC5yZXRyaWV2ZUV4dGVybmFsU3RhdGUodGhpcy5jb250ZW50KSkgYXMge1xuXHRcdFx0aW5pdGlhbFN0YXRlPzogTGVnYWN5RmlsdGVyQmFyU3RhdGU7XG5cdFx0XHRmdWxsU3RhdGU/OiBMZWdhY3lGaWx0ZXJCYXJTdGF0ZTtcblx0XHR9O1xuXHRcdC8vIHJlbW92ZSBzZW5zaXRpdmUgb3IgdmlldyBzdGF0ZSBpcnJlbGV2YW50IGZpZWxkc1xuXHRcdGNvbnN0IHByb3BlcnRpZXNJbmZvID0gdGhpcy5jb250ZW50LmdldFByb3BlcnR5SW5mb1NldCgpO1xuXHRcdGNvbnN0IGZpbHRlciA9IGZpbHRlckJhclN0YXRlLmlubmVyU3RhdGU/LmZpbHRlciB8fCB7fTtcblx0XHRwcm9wZXJ0aWVzSW5mb1xuXHRcdFx0LmZpbHRlcihmdW5jdGlvbiAocHJvcGVydHlJbmZvOiBQcm9wZXJ0eUluZm8gJiB7IHJlbW92ZUZyb21BcHBTdGF0ZT86IGJvb2xlYW4gfSkge1xuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdE9iamVjdC5rZXlzKGZpbHRlcikubGVuZ3RoID4gMCAmJlxuXHRcdFx0XHRcdHByb3BlcnR5SW5mby5wYXRoICYmXG5cdFx0XHRcdFx0ZmlsdGVyW3Byb3BlcnR5SW5mby5wYXRoXSAmJlxuXHRcdFx0XHRcdChwcm9wZXJ0eUluZm8ucmVtb3ZlRnJvbUFwcFN0YXRlIHx8IGZpbHRlcltwcm9wZXJ0eUluZm8ucGF0aF0ubGVuZ3RoID09PSAwKVxuXHRcdFx0XHQpO1xuXHRcdFx0fSlcblx0XHRcdC5mb3JFYWNoKGZ1bmN0aW9uIChQcm9wZXJ0eUluZm86IFByb3BlcnR5SW5mbykge1xuXHRcdFx0XHRpZiAoUHJvcGVydHlJbmZvLnBhdGgpIHtcblx0XHRcdFx0XHRkZWxldGUgZmlsdGVyW1Byb3BlcnR5SW5mby5wYXRoXTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0cmV0dXJuIGZpbHRlckJhclN0YXRlO1xuXHR9XG5cblx0YXN5bmMgc2V0SW5pdGlhbFN0YXRlKHRoaXM6IEZpbHRlckJhckFQSSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBpbml0aWFsQ29udHJvbFN0YXRlID0gYXdhaXQgU3RhdGVVdGlsLnJldHJpZXZlRXh0ZXJuYWxTdGF0ZSh0aGlzLmNvbnRlbnQpO1xuXHRcdFx0dGhpcy5pbml0aWFsQ29udHJvbFN0YXRlID0gaW5pdGlhbENvbnRyb2xTdGF0ZTtcblx0XHR9IGNhdGNoIChlOiB1bmtub3duKSB7XG5cdFx0XHRMb2cuZXJyb3IoZSBhcyBzdHJpbmcpO1xuXHRcdH1cblx0fVxuXG5cdGFzeW5jIGFwcGx5TmF2aWdhdGlvblBhcmFtZXRlcnModGhpczogRmlsdGVyQmFyQVBJLCBuYXZpZ2F0aW9uUGFyYW1ldGVyOiBOYXZpZ2F0aW9uUGFyYW1ldGVyKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KGFzeW5jIChyZXNvbHZlKSA9PiB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCB2aWV3ID0gdGhpcy5nZXRQYWdlQ29udHJvbGxlcigpPy5nZXRWaWV3KCk7XG5cdFx0XHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk7XG5cdFx0XHRcdGNvbnN0IGFwcENvbXBvbmVudCA9IGNvbnRyb2xsZXIuZ2V0QXBwQ29tcG9uZW50KCk7XG5cdFx0XHRcdGNvbnN0IGNvbXBvbmVudERhdGEgPSBhcHBDb21wb25lbnQuZ2V0Q29tcG9uZW50RGF0YSgpO1xuXHRcdFx0XHRjb25zdCBzdGFydHVwUGFyYW1ldGVycyA9IChjb21wb25lbnREYXRhICYmIGNvbXBvbmVudERhdGEuc3RhcnR1cFBhcmFtZXRlcnMpIHx8IHt9O1xuXHRcdFx0XHRjb25zdCB2YXJpYW50U3RhdHVzID0gYXdhaXQgdGhpcy5oYW5kbGVWYXJpYW50SWRQYXNzZWRWaWFVUkxQYXJhbXMoc3RhcnR1cFBhcmFtZXRlcnMgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTtcblx0XHRcdFx0bGV0IGZpbHRlclZhcmlhbnRBcHBsaWVkID0gZmFsc2U7XG5cdFx0XHRcdGlmICh2YXJpYW50U3RhdHVzICYmICh2YXJpYW50U3RhdHVzIGFzIFtdKT8ubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdC8vIGNoZWNrIGlmIGZpbHRlciBiYXIgdmFyaWFudCBpcyBhcHBsaWVkIG9yIG5vdC5cblx0XHRcdFx0XHRpZiAoKHZhcmlhbnRTdGF0dXMgYXMgYm9vbGVhbltdKVswXSA9PT0gdHJ1ZSB8fCAodmFyaWFudFN0YXR1cyBhcyBib29sZWFuW10pWzFdID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0XHRmaWx0ZXJWYXJpYW50QXBwbGllZCA9IHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gaWYgdmFyaWFudCBmcm9tIFVSTCBkb2VzIG5vdCBleGlzdCBvciBkaWQgbm90IGFwcGx5IHByb3Blcmx5IHRoZW4gYXBwbHkgdG8gTFIgZWl0aGVyIGRlZmF1bHQgdmFyaWFudCBvciBzdGFuZGFyZCB2YXJpYW50IHJlcXVpcmVkLlxuXHRcdFx0XHRjb25zdCBmaWx0ZXJCYXIgPSB0aGlzLmdldENvbnRlbnQoKTtcblx0XHRcdFx0Y29uc3QgeyBzZWxlY3Rpb25WYXJpYW50OiBzdiwgcmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQ6IHJlcVN0ZFZhcmlhbnQgPSBmYWxzZSB9ID0gbmF2aWdhdGlvblBhcmFtZXRlcjtcblxuXHRcdFx0XHRpZiAoIWZpbHRlckJhciB8fCAhc3YpIHtcblx0XHRcdFx0XHRyZXNvbHZlKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YXdhaXQgdGhpcy5fYXBwbHlTZWxlY3Rpb25WYXJpYW50KHZpZXcsIG5hdmlnYXRpb25QYXJhbWV0ZXIsIGZpbHRlclZhcmlhbnRBcHBsaWVkKTtcblx0XHRcdFx0bGV0IGJQcmV2ZW50SW5pdGlhbFNlYXJjaCA9IGZhbHNlO1xuXHRcdFx0XHRjb25zdCB2YXJpYW50TWFuYWdlbWVudCA9IHRoaXMuX2dldEZpbHRlckJhclZNKHZpZXcpIGFzIFZhcmlhbnRNYW5hZ2VtZW50O1xuXHRcdFx0XHRpZiAoZmlsdGVyQmFyKSB7XG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0KG5hdmlnYXRpb25QYXJhbWV0ZXIubmF2aWdhdGlvblR5cGUgIT09IE5hdlR5cGUuaW5pdGlhbCAmJiByZXFTdGRWYXJpYW50KSB8fFxuXHRcdFx0XHRcdFx0KCF2YXJpYW50TWFuYWdlbWVudCAmJiB2aWV3LmdldFZpZXdEYXRhKCkuaW5pdGlhbExvYWQgPT09IEluaXRpYWxMb2FkTW9kZS5FbmFibGVkKSB8fFxuXHRcdFx0XHRcdFx0KGNvbnRyb2xsZXIgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXIpLl9zaG91bGRBdXRvVHJpZ2dlclNlYXJjaCh2YXJpYW50TWFuYWdlbWVudClcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdGNvbnN0IGZpbHRlckJhckFQSSA9IGZpbHRlckJhci5nZXRQYXJlbnQoKSBhcyBGaWx0ZXJCYXJBUEk7XG5cdFx0XHRcdFx0XHRmaWx0ZXJCYXJBUEkudHJpZ2dlclNlYXJjaCgpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRiUHJldmVudEluaXRpYWxTZWFyY2ggPSB0aGlzLl9wcmV2ZW50SW5pdGlhbFNlYXJjaCh2YXJpYW50TWFuYWdlbWVudCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vY29sbGFwc2Ugb3IgZXhwYW5kIHNoYWxsIGJlIGF2YWlsYWJsZSBvbmx5IGZvciBub24tZGVza3RvcCBzeXN0ZW1zXG5cdFx0XHRcdFx0aWYgKCFEZXZpY2Uuc3lzdGVtLmRlc2t0b3ApIHtcblx0XHRcdFx0XHRcdGNvbnN0IGludGVybmFsTW9kZWxDb250ZXh0ID0gdmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdFx0XHRcdFx0Y29uc3Qgc2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZCA9IHRoaXMuaXNTZWFyY2hUcmlnZ2VyZWRCeUluaXRpYWxMb2FkKG5hdmlnYXRpb25QYXJhbWV0ZXIubmF2aWdhdGlvblR5cGUpO1xuXHRcdFx0XHRcdFx0aW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJzZWFyY2hUcmlnZ2VyZWRCeUluaXRpYWxMb2FkXCIsIHNlYXJjaFRyaWdnZXJlZEJ5SW5pdGlhbExvYWQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLl9lbmFibGVGaWx0ZXJCYXIoZmlsdGVyQmFyIGFzIEZpbHRlckJhciwgYlByZXZlbnRJbml0aWFsU2VhcmNoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRMb2cud2FybmluZyhcIkRpZCBub3QgZmluaXNoIGFwcGx5aW5nIG5hdmlnYXRpb24gcGFyYW1ldGVycyAtIEZpbHRlciBiYXIgbm90IGZvdW5kLlwiKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXNvbHZlKCk7XG5cdFx0XHR9IGNhdGNoIHtcblx0XHRcdFx0cmVzb2x2ZSgpO1xuXHRcdFx0XHRMb2cud2FybmluZyhcIkNvdWxkIG5vdCBhcHBseSBuYXZpZ2F0aW9uIHBhcmFtZXRlcnMuXCIpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztNQWlCcUJBLHdCQUF3QiwwQkFBQUMscUJBQUE7SUFBQSxTQUFBRCx5QkFBQTtNQUFBLE9BQUFDLHFCQUFBLENBQUFDLEtBQUEsT0FBQUMsU0FBQTtJQUFBO0lBQUFDLFFBQUEsR0FBQUosd0JBQUE7SUFBQUssY0FBQSxDQUFBTCx3QkFBQSxFQUFBQyxxQkFBQTtJQUFBLElBQUFLLE1BQUEsR0FBQU4sd0JBQUEsQ0FBQU8sU0FBQTtJQUFBRCxNQUFBLENBQ3RDRSxnQkFBZ0IsR0FBdEIsZUFBTUEsZ0JBQWdCQSxDQUVyQkMsZUFBeUQsRUFDekRDLGNBQW9DLEVBQ3BDQyxvQkFBOEIsRUFDOUJDLFNBQW1CLEVBQ0g7TUFDaEIsTUFBTUMsU0FBUyxHQUFHLElB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
|
|
160
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaWx0ZXJCYXJBUElTdGF0ZUhhbmRsZXIiLCJfSVZpZXdTdGF0ZUNvbnRyaWJ1dG8iLCJhcHBseSIsImFyZ3VtZW50cyIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJhcHBseUxlZ2FjeVN0YXRlIiwiZ2V0Q29udHJvbFN0YXRlIiwiX25hdlBhcmFtZXRlcnMiLCJzaG91bGRBcHBseURpZmZTdGF0ZSIsInNraXBNZXJnZSIsImZpbHRlckJhciIsImNvbnRlbnQiLCJmaWx0ZXJCYXJTdGF0ZSIsImNvbnRyb2xTdGF0ZSIsImlubmVyU3RhdGUiLCJmdWxsU3RhdGUiLCJpbml0aWFsU3RhdGUiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiYXBwbHlTdGF0ZSIsIm5hdlBhcmFtZXRlciIsIm5hdmlnYXRpb25UeXBlIiwiTmF2VHlwZSIsImh5YnJpZCIsInVuZGVmaW5lZCIsInhBcHBTdGF0ZUZpbHRlcnMiLCJjb252ZXJ0U2VsZWN0aW9uVmFyaWFudFRvU3RhdGVGaWx0ZXJzIiwic2VsZWN0aW9uVmFyaWFudCIsIm1lcmdlZEZ1bGxTdGF0ZSIsImZpbHRlciIsIl9jbGVhckZpbHRlclZhbHVlc1dpdGhPcHRpb25zIiwiY2xlYXJFZGl0RmlsdGVyIiwiU3RhdGVVdGlsIiwiYXBwbHlFeHRlcm5hbFN0YXRlIiwiZGlmZlN0YXRlIiwiZXJyb3IiLCJMb2ciLCJfaW5pdGlhbFN0YXRlUHJvbWlzZSIsInJlc29sdmUiLCJyZXRyaWV2ZVN0YXRlIiwicmV0cmlldmVFeHRlcm5hbFN0YXRlIiwicHJvcGVydGllc0luZm8iLCJnZXRQcm9wZXJ0eUluZm9TZXQiLCJwcm9wZXJ0eUluZm8iLCJwYXRoIiwicmVtb3ZlRnJvbUFwcFN0YXRlIiwiZm9yRWFjaCIsIlByb3BlcnR5SW5mbyIsInNldEluaXRpYWxTdGF0ZSIsImluaXRpYWxDb250cm9sU3RhdGUiLCJlIiwiYXBwbHlOYXZpZ2F0aW9uUGFyYW1ldGVycyIsIm5hdmlnYXRpb25QYXJhbWV0ZXIiLCJQcm9taXNlIiwidmlldyIsImdldFBhZ2VDb250cm9sbGVyIiwiZ2V0VmlldyIsImNvbnRyb2xsZXIiLCJhcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJjb21wb25lbnREYXRhIiwiZ2V0Q29tcG9uZW50RGF0YSIsInN0YXJ0dXBQYXJhbWV0ZXJzIiwidmFyaWFudFN0YXR1cyIsImhhbmRsZVZhcmlhbnRJZFBhc3NlZFZpYVVSTFBhcmFtcyIsImZpbHRlclZhcmlhbnRBcHBsaWVkIiwiZ2V0Q29udGVudCIsInN2IiwicmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQiLCJyZXFTdGRWYXJpYW50IiwiYXBwbGllZENvbmRpdGlvbiIsIl9hcHBseVNlbGVjdGlvblZhcmlhbnQiLCJzZWxlY3Rpb25WYXJpYW50V2FzQXBwbGllZCIsIkFycmF5IiwiaXNBcnJheSIsImJQcmV2ZW50SW5pdGlhbFNlYXJjaCIsInZhcmlhbnRNYW5hZ2VtZW50IiwiX2dldEZpbHRlckJhclZNIiwiaW5pdGlhbCIsImdldFZpZXdEYXRhIiwiaW5pdGlhbExvYWQiLCJJbml0aWFsTG9hZE1vZGUiLCJFbmFibGVkIiwiX3Nob3VsZEF1dG9UcmlnZ2VyU2VhcmNoIiwiZmlsdGVyQmFyQVBJIiwiZ2V0UGFyZW50IiwidHJpZ2dlclNlYXJjaCIsIl9wcmV2ZW50SW5pdGlhbFNlYXJjaCIsIkRldmljZSIsInN5c3RlbSIsImRlc2t0b3AiLCJpbnRlcm5hbE1vZGVsQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0Iiwic2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZCIsImlzU2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZCIsInNldFByb3BlcnR5IiwiX2VuYWJsZUZpbHRlckJhciIsIndhcm5pbmciLCJJVmlld1N0YXRlQ29udHJpYnV0b3JNaXhpbiJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRmlsdGVyQmFyQVBJU3RhdGVIYW5kbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBDb250cm9sU3RhdGUsIExlZ2FjeUZpbHRlckJhclN0YXRlLCBOYXZpZ2F0aW9uUGFyYW1ldGVyIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1ZpZXdTdGF0ZVwiO1xuaW1wb3J0IElWaWV3U3RhdGVDb250cmlidXRvck1peGluIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy92aWV3U3RhdGUvSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yTWl4aW5cIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgSW5pdGlhbExvYWRNb2RlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9GaWx0ZXJCYXJcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlJbmZvIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvaW50ZXJuYWwvUHJvcGVydHlJbmZvXCI7XG5pbXBvcnQgdHlwZSBTZWxlY3Rpb25WYXJpYW50IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9TZWxlY3Rpb25WYXJpYW50XCI7XG5pbXBvcnQgeyBOYXZUeXBlIH0gZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIExpc3RSZXBvcnRDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvdGVtcGxhdGVzL0xpc3RSZXBvcnQvTGlzdFJlcG9ydENvbnRyb2xsZXIuY29udHJvbGxlclwiO1xuaW1wb3J0IERldmljZSBmcm9tIFwic2FwL3VpL0RldmljZVwiO1xuaW1wb3J0IHR5cGUgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgVmFyaWFudE1hbmFnZW1lbnQgZnJvbSBcInNhcC91aS9mbC92YXJpYW50cy9WYXJpYW50TWFuYWdlbWVudFwiO1xuaW1wb3J0IFN0YXRlVXRpbCBmcm9tIFwic2FwL3VpL21kYy9wMTNuL1N0YXRlVXRpbFwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyQVBJIGZyb20gXCIuLi9GaWx0ZXJCYXJBUElcIjtcbmltcG9ydCB0eXBlIHsgRmlsdGVyQmFyU3RhdGUgfSBmcm9tIFwiLi4vRmlsdGVyQmFyQVBJXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZpbHRlckJhckFQSVN0YXRlSGFuZGxlciBleHRlbmRzIElWaWV3U3RhdGVDb250cmlidXRvck1peGluPEZpbHRlckJhclN0YXRlPiB7XG5cdGFzeW5jIGFwcGx5TGVnYWN5U3RhdGUoXG5cdFx0dGhpczogRmlsdGVyQmFyQVBJLFxuXHRcdGdldENvbnRyb2xTdGF0ZTogKGNvbnRyb2w6IE1hbmFnZWRPYmplY3QpID0+IENvbnRyb2xTdGF0ZSxcblx0XHRfbmF2UGFyYW1ldGVycz86IE5hdmlnYXRpb25QYXJhbWV0ZXIsXG5cdFx0c2hvdWxkQXBwbHlEaWZmU3RhdGU/OiBib29sZWFuLFxuXHRcdHNraXBNZXJnZT86IGJvb2xlYW5cblx0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgZmlsdGVyQmFyID0gdGhpcy5jb250ZW50O1xuXHRcdGNvbnN0IGZpbHRlckJhclN0YXRlID0gZ2V0Q29udHJvbFN0YXRlKGZpbHRlckJhcikgYXMgeyBpbml0aWFsU3RhdGU/OiBMZWdhY3lGaWx0ZXJCYXJTdGF0ZTsgZnVsbFN0YXRlPzogTGVnYWN5RmlsdGVyQmFyU3RhdGUgfTtcblx0XHRjb25zdCBjb250cm9sU3RhdGU6IEZpbHRlckJhclN0YXRlID0ge307XG5cblx0XHRpZiAoZmlsdGVyQmFyU3RhdGUpIHtcblx0XHRcdGNvbnRyb2xTdGF0ZS5pbm5lclN0YXRlID0ge1xuXHRcdFx0XHQuLi5maWx0ZXJCYXJTdGF0ZSxcblx0XHRcdFx0ZnVsbFN0YXRlOiB7XG5cdFx0XHRcdFx0Li4uY29udHJvbFN0YXRlLmlubmVyU3RhdGU/LmZ1bGxTdGF0ZSxcblx0XHRcdFx0XHQuLi5maWx0ZXJCYXJTdGF0ZS5mdWxsU3RhdGVcblx0XHRcdFx0fSxcblx0XHRcdFx0aW5pdGlhbFN0YXRlOiB7XG5cdFx0XHRcdFx0Li4uY29udHJvbFN0YXRlLmlubmVyU3RhdGU/LmluaXRpYWxTdGF0ZSxcblx0XHRcdFx0XHQuLi5maWx0ZXJCYXJTdGF0ZS5pbml0aWFsU3RhdGVcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHR9XG5cdFx0aWYgKGNvbnRyb2xTdGF0ZSAmJiBPYmplY3Qua2V5cyhjb250cm9sU3RhdGUpLmxlbmd0aCA+IDApIHtcblx0XHRcdGF3YWl0IHRoaXMuYXBwbHlTdGF0ZShjb250cm9sU3RhdGUgYXMgb2JqZWN0LCBfbmF2UGFyYW1ldGVycywgc2hvdWxkQXBwbHlEaWZmU3RhdGUsIHNraXBNZXJnZSk7XG5cdFx0fVxuXHR9XG5cblx0YXN5bmMgYXBwbHlTdGF0ZShcblx0XHR0aGlzOiBGaWx0ZXJCYXJBUEksXG5cdFx0Y29udHJvbFN0YXRlOiBGaWx0ZXJCYXJTdGF0ZSxcblx0XHRuYXZQYXJhbWV0ZXI/OiBOYXZpZ2F0aW9uUGFyYW1ldGVyLFxuXHRcdHNob3VsZEFwcGx5RGlmZlN0YXRlPzogYm9vbGVhbixcblx0XHRza2lwTWVyZ2U/OiBib29sZWFuXG5cdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRpZiAoY29udHJvbFN0YXRlICYmIG5hdlBhcmFtZXRlcikge1xuXHRcdFx0XHRjb25zdCBuYXZpZ2F0aW9uVHlwZSA9IG5hdlBhcmFtZXRlci5uYXZpZ2F0aW9uVHlwZTtcblx0XHRcdFx0Ly9XaGVuIG5hdmlnYXRpb24gdHlwZSBpcyBoeWJyaWQsIHdlIG92ZXJyaWRlIHRoZSBmaWx0ZXIgY29uZGl0aW9ucyBpbiBJQXBwU3RhdGUgd2l0aCBTViByZWNlaXZlZCBmcm9tIFhhcHBTdGF0ZVxuXHRcdFx0XHRpZiAobmF2aWdhdGlvblR5cGUgPT09IE5hdlR5cGUuaHlicmlkICYmIGNvbnRyb2xTdGF0ZS5pbm5lclN0YXRlPy5mdWxsU3RhdGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdGNvbnN0IHhBcHBTdGF0ZUZpbHRlcnMgPSBhd2FpdCB0aGlzLmNvbnZlcnRTZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMoXG5cdFx0XHRcdFx0XHRuYXZQYXJhbWV0ZXIuc2VsZWN0aW9uVmFyaWFudCBhcyBTZWxlY3Rpb25WYXJpYW50LFxuXHRcdFx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRjb25zdCBtZXJnZWRGdWxsU3RhdGUgPSB7XG5cdFx0XHRcdFx0XHQuLi5jb250cm9sU3RhdGUuaW5uZXJTdGF0ZT8uZnVsbFN0YXRlLFxuXHRcdFx0XHRcdFx0ZmlsdGVyOiB7XG5cdFx0XHRcdFx0XHRcdC4uLmNvbnRyb2xTdGF0ZS5pbm5lclN0YXRlPy5mdWxsU3RhdGUuZmlsdGVyLFxuXHRcdFx0XHRcdFx0XHQuLi54QXBwU3RhdGVGaWx0ZXJzXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHQvL3doZW4gbmF2aWdhdGluZyBmcm9tIGNhcmQsIHJlbW92ZSBhbGwgZXhpc3RpbmcgZmlsdGVycyB2YWx1ZXMgKGRlZmF1bHQgb3Igb3RoZXJ3aXNlKSBhbmQgdGhlbiBhcHBseSB0aGUgc3RhdGVcblx0XHRcdFx0XHRhd2FpdCB0aGlzLl9jbGVhckZpbHRlclZhbHVlc1dpdGhPcHRpb25zKHRoaXMuY29udGVudCwgeyBjbGVhckVkaXRGaWx0ZXI6IHRydWUgfSk7XG5cdFx0XHRcdFx0cmV0dXJuIGF3YWl0IFN0YXRlVXRpbC5hcHBseUV4dGVybmFsU3RhdGUodGhpcy5jb250ZW50LCBtZXJnZWRGdWxsU3RhdGUpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHNob3VsZEFwcGx5RGlmZlN0YXRlKSB7XG5cdFx0XHRcdFx0Y29uc3QgZGlmZlN0YXRlOiBvYmplY3QgPSBhd2FpdCBTdGF0ZVV0aWwuZGlmZlN0YXRlKFxuXHRcdFx0XHRcdFx0dGhpcy5jb250ZW50LFxuXHRcdFx0XHRcdFx0Y29udHJvbFN0YXRlLmlubmVyU3RhdGU/LmluaXRpYWxTdGF0ZSBhcyBvYmplY3QsXG5cdFx0XHRcdFx0XHRjb250cm9sU3RhdGUuaW5uZXJTdGF0ZT8uZnVsbFN0YXRlIGFzIG9iamVjdFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0cmV0dXJuIGF3YWl0IFN0YXRlVXRpbC5hcHBseUV4dGVybmFsU3RhdGUodGhpcy5jb250ZW50LCBkaWZmU3RhdGUpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHNraXBNZXJnZSkge1xuXHRcdFx0XHRcdC8vc2tpcE1lcmdlIGlzIHRydWUgd2hlbiBjb21pbmcgZnJvbSB0aGUgZHluYW1pYyB0aWxlLCBpbiB0aGlzIGNhc2UsIHJlbW92ZSBhbGwgZXhpc3RpbmcgZmlsdGVycyB2YWx1ZXMgKGRlZmF1bHQgb3Igb3RoZXJ3aXNlKVxuXHRcdFx0XHRcdGF3YWl0IHRoaXMuX2NsZWFyRmlsdGVyVmFsdWVzV2l0aE9wdGlvbnModGhpcy5jb250ZW50LCB7IGNsZWFyRWRpdEZpbHRlcjogdHJ1ZSB9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gYXdhaXQgU3RhdGVVdGlsLmFwcGx5RXh0ZXJuYWxTdGF0ZSh0aGlzLmNvbnRlbnQsIGNvbnRyb2xTdGF0ZT8uaW5uZXJTdGF0ZT8uZnVsbFN0YXRlID8/IGNvbnRyb2xTdGF0ZSk7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcblx0XHRcdExvZy5lcnJvcihlcnJvciBhcyBzdHJpbmcpO1xuXHRcdH0gZmluYWxseSB7XG5cdFx0XHR0aGlzLl9pbml0aWFsU3RhdGVQcm9taXNlLnJlc29sdmUoKTtcblx0XHR9XG5cdH1cblxuXHRhc3luYyByZXRyaWV2ZVN0YXRlKHRoaXM6IEZpbHRlckJhckFQSSk6IFByb21pc2U8RmlsdGVyQmFyU3RhdGUgfCBudWxsPiB7XG5cdFx0Y29uc3QgZmlsdGVyQmFyU3RhdGU6IEZpbHRlckJhclN0YXRlID0ge307XG5cdFx0ZmlsdGVyQmFyU3RhdGUuaW5uZXJTdGF0ZSA9IHRoaXMuZ2V0Q29udHJvbFN0YXRlKGF3YWl0IFN0YXRlVXRpbC5yZXRyaWV2ZUV4dGVybmFsU3RhdGUodGhpcy5jb250ZW50KSkgYXMge1xuXHRcdFx0aW5pdGlhbFN0YXRlPzogTGVnYWN5RmlsdGVyQmFyU3RhdGU7XG5cdFx0XHRmdWxsU3RhdGU/OiBMZWdhY3lGaWx0ZXJCYXJTdGF0ZTtcblx0XHR9O1xuXHRcdC8vIHJlbW92ZSBzZW5zaXRpdmUgb3IgdmlldyBzdGF0ZSBpcnJlbGV2YW50IGZpZWxkc1xuXHRcdGNvbnN0IHByb3BlcnRpZXNJbmZvID0gdGhpcy5jb250ZW50LmdldFByb3BlcnR5SW5mb1NldCgpO1xuXHRcdGNvbnN0IGZpbHRlciA9IGZpbHRlckJhclN0YXRlLmlubmVyU3RhdGU/LmZpbHRlciB8fCB7fTtcblx0XHRwcm9wZXJ0aWVzSW5mb1xuXHRcdFx0LmZpbHRlcihmdW5jdGlvbiAocHJvcGVydHlJbmZvOiBQcm9wZXJ0eUluZm8gJiB7IHJlbW92ZUZyb21BcHBTdGF0ZT86IGJvb2xlYW4gfSkge1xuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdE9iamVjdC5rZXlzKGZpbHRlcikubGVuZ3RoID4gMCAmJlxuXHRcdFx0XHRcdHByb3BlcnR5SW5mby5wYXRoICYmXG5cdFx0XHRcdFx0ZmlsdGVyW3Byb3BlcnR5SW5mby5wYXRoXSAmJlxuXHRcdFx0XHRcdChwcm9wZXJ0eUluZm8ucmVtb3ZlRnJvbUFwcFN0YXRlIHx8IGZpbHRlcltwcm9wZXJ0eUluZm8ucGF0aF0ubGVuZ3RoID09PSAwKVxuXHRcdFx0XHQpO1xuXHRcdFx0fSlcblx0XHRcdC5mb3JFYWNoKGZ1bmN0aW9uIChQcm9wZXJ0eUluZm86IFByb3BlcnR5SW5mbykge1xuXHRcdFx0XHRpZiAoUHJvcGVydHlJbmZvLnBhdGgpIHtcblx0XHRcdFx0XHRkZWxldGUgZmlsdGVyW1Byb3BlcnR5SW5mby5wYXRoXTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0cmV0dXJuIGZpbHRlckJhclN0YXRlO1xuXHR9XG5cblx0YXN5bmMgc2V0SW5pdGlhbFN0YXRlKHRoaXM6IEZpbHRlckJhckFQSSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBpbml0aWFsQ29udHJvbFN0YXRlID0gYXdhaXQgU3RhdGVVdGlsLnJldHJpZXZlRXh0ZXJuYWxTdGF0ZSh0aGlzLmNvbnRlbnQpO1xuXHRcdFx0dGhpcy5pbml0aWFsQ29udHJvbFN0YXRlID0gaW5pdGlhbENvbnRyb2xTdGF0ZTtcblx0XHR9IGNhdGNoIChlOiB1bmtub3duKSB7XG5cdFx0XHRMb2cuZXJyb3IoZSBhcyBzdHJpbmcpO1xuXHRcdH1cblx0fVxuXG5cdGFzeW5jIGFwcGx5TmF2aWdhdGlvblBhcmFtZXRlcnModGhpczogRmlsdGVyQmFyQVBJLCBuYXZpZ2F0aW9uUGFyYW1ldGVyOiBOYXZpZ2F0aW9uUGFyYW1ldGVyKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KGFzeW5jIChyZXNvbHZlKSA9PiB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCB2aWV3ID0gdGhpcy5nZXRQYWdlQ29udHJvbGxlcigpPy5nZXRWaWV3KCk7XG5cdFx0XHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk7XG5cdFx0XHRcdGNvbnN0IGFwcENvbXBvbmVudCA9IGNvbnRyb2xsZXIuZ2V0QXBwQ29tcG9uZW50KCk7XG5cdFx0XHRcdGNvbnN0IGNvbXBvbmVudERhdGEgPSBhcHBDb21wb25lbnQuZ2V0Q29tcG9uZW50RGF0YSgpO1xuXHRcdFx0XHRjb25zdCBzdGFydHVwUGFyYW1ldGVycyA9IChjb21wb25lbnREYXRhICYmIGNvbXBvbmVudERhdGEuc3RhcnR1cFBhcmFtZXRlcnMpIHx8IHt9O1xuXHRcdFx0XHRjb25zdCB2YXJpYW50U3RhdHVzID0gYXdhaXQgdGhpcy5oYW5kbGVWYXJpYW50SWRQYXNzZWRWaWFVUkxQYXJhbXMoc3RhcnR1cFBhcmFtZXRlcnMgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTtcblx0XHRcdFx0bGV0IGZpbHRlclZhcmlhbnRBcHBsaWVkID0gZmFsc2U7XG5cdFx0XHRcdGlmICh2YXJpYW50U3RhdHVzICYmICh2YXJpYW50U3RhdHVzIGFzIFtdKT8ubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdC8vIGNoZWNrIGlmIGZpbHRlciBiYXIgdmFyaWFudCBpcyBhcHBsaWVkIG9yIG5vdC5cblx0XHRcdFx0XHRpZiAoKHZhcmlhbnRTdGF0dXMgYXMgYm9vbGVhbltdKVswXSA9PT0gdHJ1ZSB8fCAodmFyaWFudFN0YXR1cyBhcyBib29sZWFuW10pWzFdID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0XHRmaWx0ZXJWYXJpYW50QXBwbGllZCA9IHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gaWYgdmFyaWFudCBmcm9tIFVSTCBkb2VzIG5vdCBleGlzdCBvciBkaWQgbm90IGFwcGx5IHByb3Blcmx5IHRoZW4gYXBwbHkgdG8gTFIgZWl0aGVyIGRlZmF1bHQgdmFyaWFudCBvciBzdGFuZGFyZCB2YXJpYW50IHJlcXVpcmVkLlxuXHRcdFx0XHRjb25zdCBmaWx0ZXJCYXIgPSB0aGlzLmdldENvbnRlbnQoKTtcblx0XHRcdFx0Y29uc3QgeyBzZWxlY3Rpb25WYXJpYW50OiBzdiwgcmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQ6IHJlcVN0ZFZhcmlhbnQgPSBmYWxzZSB9ID0gbmF2aWdhdGlvblBhcmFtZXRlcjtcblxuXHRcdFx0XHRpZiAoIWZpbHRlckJhciB8fCAhc3YpIHtcblx0XHRcdFx0XHRyZXNvbHZlKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgYXBwbGllZENvbmRpdGlvbiA9IGF3YWl0IHRoaXMuX2FwcGx5U2VsZWN0aW9uVmFyaWFudCh2aWV3LCBuYXZpZ2F0aW9uUGFyYW1ldGVyLCBmaWx0ZXJWYXJpYW50QXBwbGllZCk7XG5cdFx0XHRcdGNvbnN0IHNlbGVjdGlvblZhcmlhbnRXYXNBcHBsaWVkID0gQXJyYXkuaXNBcnJheShhcHBsaWVkQ29uZGl0aW9uKSAmJiBhcHBsaWVkQ29uZGl0aW9uLmxlbmd0aCA+IDA7XG5cdFx0XHRcdGxldCBiUHJldmVudEluaXRpYWxTZWFyY2ggPSBmYWxzZTtcblx0XHRcdFx0Y29uc3QgdmFyaWFudE1hbmFnZW1lbnQgPSB0aGlzLl9nZXRGaWx0ZXJCYXJWTSh2aWV3KSBhcyBWYXJpYW50TWFuYWdlbWVudDtcblx0XHRcdFx0aWYgKGZpbHRlckJhcikge1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdChuYXZpZ2F0aW9uUGFyYW1ldGVyLm5hdmlnYXRpb25UeXBlICE9PSBOYXZUeXBlLmluaXRpYWwgJiYgcmVxU3RkVmFyaWFudCAmJiBzZWxlY3Rpb25WYXJpYW50V2FzQXBwbGllZCkgfHxcblx0XHRcdFx0XHRcdCghdmFyaWFudE1hbmFnZW1lbnQgJiYgdmlldy5nZXRWaWV3RGF0YSgpLmluaXRpYWxMb2FkID09PSBJbml0aWFsTG9hZE1vZGUuRW5hYmxlZCkgfHxcblx0XHRcdFx0XHRcdChjb250cm9sbGVyIGFzIExpc3RSZXBvcnRDb250cm9sbGVyKS5fc2hvdWxkQXV0b1RyaWdnZXJTZWFyY2godmFyaWFudE1hbmFnZW1lbnQpXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRjb25zdCBmaWx0ZXJCYXJBUEkgPSBmaWx0ZXJCYXIuZ2V0UGFyZW50KCkgYXMgRmlsdGVyQmFyQVBJO1xuXHRcdFx0XHRcdFx0ZmlsdGVyQmFyQVBJLnRyaWdnZXJTZWFyY2goKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0YlByZXZlbnRJbml0aWFsU2VhcmNoID0gdGhpcy5fcHJldmVudEluaXRpYWxTZWFyY2godmFyaWFudE1hbmFnZW1lbnQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvL2NvbGxhcHNlIG9yIGV4cGFuZCBzaGFsbCBiZSBhdmFpbGFibGUgb25seSBmb3Igbm9uLWRlc2t0b3Agc3lzdGVtc1xuXHRcdFx0XHRcdGlmICghRGV2aWNlLnN5c3RlbS5kZXNrdG9wKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBpbnRlcm5hbE1vZGVsQ29udGV4dCA9IHZpZXcuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRcdFx0XHRcdGNvbnN0IHNlYXJjaFRyaWdnZXJlZEJ5SW5pdGlhbExvYWQgPSB0aGlzLmlzU2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZChuYXZpZ2F0aW9uUGFyYW1ldGVyLm5hdmlnYXRpb25UeXBlKTtcblx0XHRcdFx0XHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwic2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZFwiLCBzZWFyY2hUcmlnZ2VyZWRCeUluaXRpYWxMb2FkKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy5fZW5hYmxlRmlsdGVyQmFyKGZpbHRlckJhciBhcyBGaWx0ZXJCYXIsIGJQcmV2ZW50SW5pdGlhbFNlYXJjaCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0TG9nLndhcm5pbmcoXCJEaWQgbm90IGZpbmlzaCBhcHBseWluZyBuYXZpZ2F0aW9uIHBhcmFtZXRlcnMgLSBGaWx0ZXIgYmFyIG5vdCBmb3VuZC5cIik7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmVzb2x2ZSgpO1xuXHRcdFx0fSBjYXRjaCB7XG5cdFx0XHRcdHJlc29sdmUoKTtcblx0XHRcdFx0TG9nLndhcm5pbmcoXCJDb3VsZCBub3QgYXBwbHkgbmF2aWdhdGlvbiBwYXJhbWV0ZXJzLlwiKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7TUFpQnFCQSx3QkFBd0IsMEJBQUFDLHFCQUFBO0lBQUEsU0FBQUQseUJBQUE7TUFBQSxPQUFBQyxxQkFBQSxDQUFBQyxLQUFBLE9BQUFDLFNBQUE7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
|
|
@@ -153,12 +153,13 @@ export default class FilterBarAPIStateHandler extends IViewStateContributorMixin
|
|
|
153
153
|
if (!filterBar || !sv) {
|
|
154
154
|
resolve();
|
|
155
155
|
}
|
|
156
|
-
await this._applySelectionVariant(view, navigationParameter, filterVariantApplied);
|
|
156
|
+
const appliedCondition = await this._applySelectionVariant(view, navigationParameter, filterVariantApplied);
|
|
157
|
+
const selectionVariantWasApplied = Array.isArray(appliedCondition) && appliedCondition.length > 0;
|
|
157
158
|
let bPreventInitialSearch = false;
|
|
158
159
|
const variantManagement = this._getFilterBarVM(view) as VariantManagement;
|
|
159
160
|
if (filterBar) {
|
|
160
161
|
if (
|
|
161
|
-
(navigationParameter.navigationType !== NavType.initial && reqStdVariant) ||
|
|
162
|
+
(navigationParameter.navigationType !== NavType.initial && reqStdVariant && selectionVariantWasApplied) ||
|
|
162
163
|
(!variantManagement && view.getViewData().initialLoad === InitialLoadMode.Enabled) ||
|
|
163
164
|
(controller as ListReportController)._shouldAutoTriggerSearch(variantManagement)
|
|
164
165
|
) {
|
|
@@ -131,8 +131,12 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/core/formatters/ValueFormat
|
|
|
131
131
|
}
|
|
132
132
|
outExpression.formatOptions = Object.assign(outExpression.formatOptions, {
|
|
133
133
|
preserveDecimals: false,
|
|
134
|
-
maxFractionDigits: numberOfFractionalDigits
|
|
134
|
+
maxFractionDigits: numberOfFractionalDigits,
|
|
135
|
+
minFractionDigits: numberOfFractionalDigits
|
|
135
136
|
});
|
|
137
|
+
//we need to ignore the constraints otherwise the scale mess up the formatting by adding trailing zeros
|
|
138
|
+
// 1.234 with maxFractionDigits 2 and scale 4 will become 1.2300
|
|
139
|
+
outExpression.constraints = {};
|
|
136
140
|
}
|
|
137
141
|
return outExpression;
|
|
138
142
|
};
|
|
@@ -226,4 +230,4 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/core/formatters/ValueFormat
|
|
|
226
230
|
_exports.buildExpressionForProgressIndicatorPercentValue = buildExpressionForProgressIndicatorPercentValue;
|
|
227
231
|
return _exports;
|
|
228
232
|
}, false);
|
|
229
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ0eXBlc1N1cHBvcnRpbmdOdW1iZXJPZkZyYWN0aW9uYWxEaWdpdHMiLCJnZXREYXRhUG9pbnRUYXJnZXRFeHByZXNzaW9uIiwib0RhdGFNb2RlbFBhdGgiLCJyZWxhdGl2ZUxvY2F0aW9uIiwiVGFyZ2V0VmFsdWUiLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJ1bnJlc29sdmFibGVFeHByZXNzaW9uIiwib1Jlc291cmNlTW9kZWwiLCJMaWJyYXJ5IiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJidWlsZEV4cHJlc3Npb25Gb3JQcm9ncmVzc0luZGljYXRvckRpc3BsYXlWYWx1ZSIsIm9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgiLCJmaWVsZFZhbHVlIiwidGFyZ2V0T2JqZWN0IiwiVmFsdWUiLCJnZXRSZWxhdGl2ZVBhdGhzIiwiZmllbGRWYWx1ZUV4cHJlc3Npb24iLCJ0YXJnZXRFeHByZXNzaW9uIiwiaXNQcm9wZXJ0eSIsIiR0YXJnZXQiLCJ1bml0IiwiYW5ub3RhdGlvbnMiLCJNZWFzdXJlcyIsIlVuaXQiLCJJU09DdXJyZW5jeSIsImdldFRleHQiLCJjb21waWxlRXhwcmVzc2lvbiIsImhhc1N0YXRpY1BlcmNlbnRVbml0IiwidW5pdEJpbmRpbmdFeHByZXNzaW9uIiwiZm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvbiIsImlzQ3VycmVuY3kiLCJyZXF1ZXN0Q3VzdG9tVW5pdHMiLCJwYXRoSW5Nb2RlbCIsInRhcmdldFR5cGUiLCJtb2RlIiwiZm9ybWF0UmVzdWx0IiwidmFsdWVGb3JtYXR0ZXJzIiwiZm9ybWF0UHJvZ3Jlc3NJbmRpY2F0b3JUZXh0IiwidW5kZWZpbmVkIiwiX2V4cG9ydHMiLCJidWlsZFJhdGluZ0luZGljYXRvclN1YnRpdGxlRXhwcmVzc2lvbiIsIm9Db250ZXh0IiwibVNhbXBsZVNpemUiLCJmb3JtYXRSYXRpbmdJbmRpY2F0b3JTdWJUaXRsZSIsIkFubm90YXRpb25IZWxwZXIiLCJ2YWx1ZSIsImNvbnRleHQiLCJpU2FtcGxlU2l6ZVZhbHVlIiwic1N1YlRpdGxlTGFiZWwiLCJTdHJpbmciLCJnZXRIZWFkZXJSYXRpbmdJbmRpY2F0b3JUZXh0Iiwib0RhdGFQb2ludCIsInJlc3VsdCIsIlNhbXBsZVNpemUiLCJEZXNjcmlwdGlvbiIsInNNb2RlbFZhbHVlIiwicmVxdWlyZXNJQ29udGV4dCIsImJ1aWxkRXhwcmVzc2lvbkZvckRlc2NyaXB0aW9uIiwiQ29tbW9uIiwiVGV4dCIsIm9UZXh0RXhwcmVzc2lvbiIsImlzUGF0aEluTW9kZWxFeHByZXNzaW9uIiwicGFyYW1ldGVycyIsIiQkbm9QYXRjaCIsImdldEZsb2F0Rm9ybWF0Iiwib3V0RXhwcmVzc2lvbiIsIm51bWJlck9mRnJhY3Rpb25hbERpZ2l0cyIsImZvcm1hdE9wdGlvbnMiLCJPYmplY3QiLCJhc3NpZ24iLCJwcmVzZXJ2ZURlY2ltYWxzIiwibWF4RnJhY3Rpb25EaWdpdHMiLCJnZXRWYWx1ZUZvcm1hdHRlZCIsIm9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgiLCJzUHJvcGVydHlUeXBlIiwic051bWJlck9mRnJhY3Rpb25hbERpZ2l0cyIsInBhdGgiLCJpbmNsdWRlcyIsIm9Qcm9wZXJ0eURlZmluaXRpb24iLCJ0eXBlIiwiRURNX1RZUEVfTUFQUElORyIsImJ1aWxkRmllbGRCaW5kaW5nRXhwcmVzc2lvbiIsImRhdGFQb2ludEZvcm1hdE9wdGlvbnMiLCJiSGlkZU1lYXN1cmUiLCJvRGF0YVBvaW50VmFsdWUiLCJwcm9wZXJ0eVR5cGUiLCJWYWx1ZUZvcm1hdCIsIk51bWJlck9mRnJhY3Rpb25hbERpZ2l0cyIsImVuaGFuY2VEYXRhTW9kZWxQYXRoIiwib0Rlc2NyaXB0aW9uIiwib0Zvcm1hdHRlZFZhbHVlIiwic0Rpc3BsYXlNb2RlIiwiZGlzcGxheU1vZGUiLCJnZXREaXNwbGF5TW9kZSIsIm9CaW5kaW5nRXhwcmVzc2lvbiIsImZvcm1hdFdpdGhCcmFja2V0cyIsIlRpbWV6b25lIiwiZ2V0QmluZGluZ1dpdGhUaW1lem9uZSIsIklzVGltZXpvbmUiLCJnZXRCaW5kaW5nRm9yVGltZXpvbmUiLCJVSSIsIkRhdGVUaW1lU3R5bGUiLCJkYXRlVGltZVBhdHRlcm4iLCJnZXRCaW5kaW5nRm9yRGF0ZUZvcm1hdCIsIl9jb21wdXRlQmluZGluZ1dpdGhVbml0T3JDdXJyZW5jeSIsIm1lYXN1cmVEaXNwbGF5TW9kZSIsInNob3dPbmx5VW5pdERlY2ltYWxzIiwicHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoIiwiZm9ybWF0dGVkVmFsdWUiLCJoaWRlTWVhc3VyZSIsImdldEJpbmRpbmdXaXRoVW5pdE9yQ3VycmVuY3kiLCJzaG93TWVhc3VyZSIsImJ1aWxkRXhwcmVzc2lvbkZvclByb2dyZXNzSW5kaWNhdG9yUGVyY2VudFZhbHVlIiwiY29tcHV0ZVBlcmNlbnRhZ2UiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkRhdGFQb2ludFRlbXBsYXRpbmcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24sIFByaW1pdGl2ZVR5cGUsIFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFQb2ludFR5cGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgdHlwZSB7IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24sIFBhdGhJbk1vZGVsRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHtcblx0RURNX1RZUEVfTUFQUElORyxcblx0Y29tcGlsZUV4cHJlc3Npb24sXG5cdGZvcm1hdFJlc3VsdCxcblx0Zm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvbixcblx0Z2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uLFxuXHRpc1BhdGhJbk1vZGVsRXhwcmVzc2lvbixcblx0cGF0aEluTW9kZWwsXG5cdHVucmVzb2x2YWJsZUV4cHJlc3Npb25cbn0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdmFsdWVGb3JtYXR0ZXJzIGZyb20gXCJzYXAvZmUvY29yZS9mb3JtYXR0ZXJzL1ZhbHVlRm9ybWF0dGVyXCI7XG5pbXBvcnQgeyBpc1Byb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvVHlwZUd1YXJkc1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHsgZW5oYW5jZURhdGFNb2RlbFBhdGgsIGdldFJlbGF0aXZlUGF0aHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgeyBoYXNTdGF0aWNQZXJjZW50VW5pdCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1Byb3BlcnR5SGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IERhdGVUaW1lU3R5bGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCB7XG5cdGdldEJpbmRpbmdGb3JEYXRlRm9ybWF0LFxuXHRnZXRCaW5kaW5nRm9yVGltZXpvbmUsXG5cdGdldEJpbmRpbmdXaXRoVGltZXpvbmUsXG5cdGdldEJpbmRpbmdXaXRoVW5pdE9yQ3VycmVuY3ksXG5cdGdldERpc3BsYXlNb2RlXG59IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0IExpYnJhcnkgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCBBbm5vdGF0aW9uSGVscGVyIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQW5ub3RhdGlvbkhlbHBlclwiO1xuXG5jb25zdCB0eXBlc1N1cHBvcnRpbmdOdW1iZXJPZkZyYWN0aW9uYWxEaWdpdHMgPSBbXCJFZG0uU2luZ2xlXCIsIFwiRWRtLkRvdWJsZVwiLCBcIkVkbS5EZWNpbWFsXCJdO1xuXG5leHBvcnQgdHlwZSBEYXRhUG9pbnRGb3JtYXRPcHRpb25zID0gUGFydGlhbDx7XG5cdG1lYXN1cmVEaXNwbGF5TW9kZTogc3RyaW5nO1xuXHRkaXNwbGF5TW9kZTogc3RyaW5nO1xuXHRkYXRlVGltZVN0eWxlOiBEYXRlVGltZVN0eWxlO1xuXHRkYXRlVGltZVBhdHRlcm46IHN0cmluZztcblx0c2hvd09ubHlVbml0RGVjaW1hbHM6IGJvb2xlYW47XG59PjtcblxuLyoqXG4gKiBHZXRzIHRoZSB0YXJnZXQgdmFsdWUgb2YgYSBwcm9ncmVzcyBpbmRpY2F0b3IuXG4gKiBBIHByb2dyZXNzIGluZGljYXRvciBjYW4gaGF2ZSBhIHN0YXRpYyB0YXJnZXQsIGEgcGVyY2VudGFnZSwgb3IgYW5vdGhlciBwcm9wZXJ0eS5cbiAqIEBwYXJhbSBvRGF0YU1vZGVsUGF0aCBUaGUgRGF0YU1vZGVsT2JqZWN0UGF0aFxuICogQHBhcmFtIHJlbGF0aXZlTG9jYXRpb24gVGhlIHJlbGF0aXZlIGxvY2F0aW9uLCB0byB0YWtlIGludG8gYWNjb3VudCB0aGUgbmF2aWdhdGlvbiBwcm9wZXJ0aWVzXG4gKiBAcmV0dXJucyBUaGUgZXhwcmVzc2lvbiBiaW5kaW5nIG9mIHRoZSB0YXJnZXQgdmFsdWVcbiAqL1xuY29uc3QgZ2V0RGF0YVBvaW50VGFyZ2V0RXhwcmVzc2lvbiA9IChcblx0b0RhdGFNb2RlbFBhdGg6IERhdGFQb2ludFR5cGUgfCB1bmRlZmluZWQsXG5cdHJlbGF0aXZlTG9jYXRpb246IHN0cmluZ1tdXG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiA9PiB7XG5cdHJldHVybiBvRGF0YU1vZGVsUGF0aD8uVGFyZ2V0VmFsdWUgPyBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24ob0RhdGFNb2RlbFBhdGguVGFyZ2V0VmFsdWUsIHJlbGF0aXZlTG9jYXRpb24pIDogdW5yZXNvbHZhYmxlRXhwcmVzc2lvbjtcbn07XG5cbmNvbnN0IG9SZXNvdXJjZU1vZGVsID0gTGlicmFyeS5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5tYWNyb3NcIikhO1xuXG4vKipcbiAqIFRoaXMgZ2V0cyB0aGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgdmFsdWUgb2YgdGhlIHByb2dyZXNzIGluZGljYXRvci5cbiAqIEBwYXJhbSBvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoIFRoZSBEYXRhTW9kZWxPYmplY3RQYXRoXG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgcHJvZ3Jlc3MgaW5kaWNhdG9yIHZhbHVlLlxuICovXG5leHBvcnQgY29uc3QgYnVpbGRFeHByZXNzaW9uRm9yUHJvZ3Jlc3NJbmRpY2F0b3JEaXNwbGF5VmFsdWUgPSAoXG5cdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8RGF0YVBvaW50VHlwZT5cbik6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uID0+IHtcblx0Y29uc3QgZmllbGRWYWx1ZSA9IG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGg/LnRhcmdldE9iamVjdD8uVmFsdWUgfHwgXCJcIjtcblx0Y29uc3QgcmVsYXRpdmVMb2NhdGlvbiA9IGdldFJlbGF0aXZlUGF0aHMob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCk7XG5cdGNvbnN0IGZpZWxkVmFsdWVFeHByZXNzaW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248UHJpbWl0aXZlVHlwZT4gPSBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oZmllbGRWYWx1ZSwgcmVsYXRpdmVMb2NhdGlvbik7XG5cdGNvbnN0IHRhcmdldEV4cHJlc3Npb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+ID0gZ2V0RGF0YVBvaW50VGFyZ2V0RXhwcmVzc2lvbihcblx0XHRvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCxcblx0XHRyZWxhdGl2ZUxvY2F0aW9uXG5cdCk7XG5cblx0aWYgKGZpZWxkVmFsdWVFeHByZXNzaW9uICYmIHRhcmdldEV4cHJlc3Npb24pIHtcblx0XHRsZXQgdGFyZ2V0T2JqZWN0ID0gb1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3Q/LlZhbHVlO1xuXHRcdGlmICghaXNQcm9wZXJ0eSh0YXJnZXRPYmplY3QpKSB7XG5cdFx0XHR0YXJnZXRPYmplY3QgPSB0YXJnZXRPYmplY3QuJHRhcmdldDtcblx0XHR9XG5cdFx0Y29uc3QgdW5pdCA9IHRhcmdldE9iamVjdC5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LlVuaXQgfHwgdGFyZ2V0T2JqZWN0LmFubm90YXRpb25zPy5NZWFzdXJlcz8uSVNPQ3VycmVuY3k7XG5cblx0XHRpZiAoIXVuaXQpIHtcblx0XHRcdHJldHVybiBvUmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiVF9DT01NT05fUFJPR1JFU1NfSU5ESUNBVE9SX0RJU1BMQVlfVkFMVUVfTk9fVU9NXCIsIFtcblx0XHRcdFx0Y29tcGlsZUV4cHJlc3Npb24oZmllbGRWYWx1ZUV4cHJlc3Npb24pLFxuXHRcdFx0XHRjb21waWxlRXhwcmVzc2lvbih0YXJnZXRFeHByZXNzaW9uKVxuXHRcdFx0XSk7XG5cdFx0fVxuXHRcdC8vIElmIHRoZSB1bml0IGlzbid0IGEgcGF0aCwgd2UgY2hlY2sgZm9yIGEgJSBzaWduIGFzIGl0IGlzIGEgc3BlY2lhbCBjYXNlLlxuXHRcdGlmIChoYXNTdGF0aWNQZXJjZW50VW5pdChmaWVsZFZhbHVlPy4kdGFyZ2V0KSkge1xuXHRcdFx0cmV0dXJuIGAke2NvbXBpbGVFeHByZXNzaW9uKGZpZWxkVmFsdWVFeHByZXNzaW9uKX0gJWA7XG5cdFx0fVxuXG5cdFx0Y29uc3QgdW5pdEJpbmRpbmdFeHByZXNzaW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiA9IHVuaXQuJHRhcmdldFxuXHRcdFx0PyBmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uKHVuaXQuJHRhcmdldCwgZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKHVuaXQsIHJlbGF0aXZlTG9jYXRpb24pKVxuXHRcdFx0OiBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24odW5pdCwgcmVsYXRpdmVMb2NhdGlvbik7XG5cblx0XHRjb25zdCBpc0N1cnJlbmN5ID0gdGFyZ2V0T2JqZWN0LmFubm90YXRpb25zPy5NZWFzdXJlcz8uSVNPQ3VycmVuY3kgPyB0cnVlIDogZmFsc2U7XG5cdFx0bGV0IHJlcXVlc3RDdXN0b21Vbml0cztcblx0XHRpZiAoaXNDdXJyZW5jeSkge1xuXHRcdFx0cmVxdWVzdEN1c3RvbVVuaXRzID0gcGF0aEluTW9kZWwoXCIvIyNAQHJlcXVlc3RDdXJyZW5jeUNvZGVzXCIpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXF1ZXN0Q3VzdG9tVW5pdHMgPSBwYXRoSW5Nb2RlbChcIi8jI0BAcmVxdWVzdFVuaXRzT2ZNZWFzdXJlXCIpO1xuXHRcdH1cblx0XHRyZXF1ZXN0Q3VzdG9tVW5pdHMudGFyZ2V0VHlwZSA9IFwiYW55XCI7XG5cdFx0cmVxdWVzdEN1c3RvbVVuaXRzLm1vZGUgPSBcIk9uZVRpbWVcIjtcblxuXHRcdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdGZvcm1hdFJlc3VsdChcblx0XHRcdFx0W2ZpZWxkVmFsdWVFeHByZXNzaW9uLCB0YXJnZXRFeHByZXNzaW9uLCB1bml0QmluZGluZ0V4cHJlc3Npb24sIGlzQ3VycmVuY3ksIHJlcXVlc3RDdXN0b21Vbml0c10sXG5cdFx0XHRcdHZhbHVlRm9ybWF0dGVycy5mb3JtYXRQcm9ncmVzc0luZGljYXRvclRleHRcblx0XHRcdClcblx0XHQpO1xuXHR9XG5cdHJldHVybiB1bmRlZmluZWQ7XG59O1xuXG5jb25zdCBidWlsZFJhdGluZ0luZGljYXRvclN1YnRpdGxlRXhwcmVzc2lvbiA9IChvQ29udGV4dDogQ29udGV4dCwgbVNhbXBsZVNpemU6IHVua25vd24pOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuXHRpZiAobVNhbXBsZVNpemUpIHtcblx0XHRyZXR1cm4gZm9ybWF0UmF0aW5nSW5kaWNhdG9yU3ViVGl0bGUoQW5ub3RhdGlvbkhlbHBlci52YWx1ZShtU2FtcGxlU2l6ZSwgeyBjb250ZXh0OiBvQ29udGV4dCB9KSBhcyB1bmtub3duIGFzIG51bWJlcik7XG5cdH1cbn07XG4vLyByZXR1cm5zIHRoZSB0ZXh0IGZvciB0aGUgUmF0aW5nIEluZGljYXRvciBTdWJ0aXRsZSAoZS5nLiAnNyByZXZpZXdzJylcbmNvbnN0IGZvcm1hdFJhdGluZ0luZGljYXRvclN1YlRpdGxlID0gKGlTYW1wbGVTaXplVmFsdWU6IG51bWJlcik6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG5cdGlmIChpU2FtcGxlU2l6ZVZhbHVlKSB7XG5cdFx0Y29uc3Qgc1N1YlRpdGxlTGFiZWwgPVxuXHRcdFx0aVNhbXBsZVNpemVWYWx1ZSA+IDFcblx0XHRcdFx0PyBvUmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiVF9BTk5PVEFUSU9OX0hFTFBFUl9SQVRJTkdfSU5ESUNBVE9SX1NVQlRJVExFX0xBQkVMX1BMVVJBTFwiKVxuXHRcdFx0XHQ6IG9SZXNvdXJjZU1vZGVsLmdldFRleHQoXCJUX0FOTk9UQVRJT05fSEVMUEVSX1JBVElOR19JTkRJQ0FUT1JfU1VCVElUTEVfTEFCRUxcIik7XG5cdFx0cmV0dXJuIG9SZXNvdXJjZU1vZGVsLmdldFRleHQoXCJUX0FOTk9UQVRJT05fSEVMUEVSX1JBVElOR19JTkRJQ0FUT1JfU1VCVElUTEVcIiwgW1N0cmluZyhpU2FtcGxlU2l6ZVZhbHVlKSwgc1N1YlRpdGxlTGFiZWxdKTtcblx0fVxufTtcblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZ2V0IHRoZSBoZWFkZXIgdGV4dCBvZiByYXRpbmcgaW5kaWNhdG9yLlxuICogQHBhcmFtIG9Db250ZXh0IENvbnRleHQgb2YgaW50ZXJmYWNlXG4gKiBAcGFyYW0gb0RhdGFQb2ludCBEYXRhIHBvaW50IG9iamVjdFxuICogQHJldHVybnMgRXhwcmVzc2lvbiBiaW5kaW5nIGZvciByYXRpbmcgaW5kaWNhdG9yIHRleHRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEhlYWRlclJhdGluZ0luZGljYXRvclRleHQgPSAob0NvbnRleHQ6IENvbnRleHQsIG9EYXRhUG9pbnQ6IERhdGFQb2ludFR5cGUgfCB1bmRlZmluZWQpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuXHRsZXQgcmVzdWx0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdGlmIChvRGF0YVBvaW50ICYmIG9EYXRhUG9pbnQuU2FtcGxlU2l6ZSkge1xuXHRcdHJlc3VsdCA9IGJ1aWxkUmF0aW5nSW5kaWNhdG9yU3VidGl0bGVFeHByZXNzaW9uKG9Db250ZXh0LCBvRGF0YVBvaW50LlNhbXBsZVNpemUpO1xuXHR9IGVsc2UgaWYgKG9EYXRhUG9pbnQgJiYgb0RhdGFQb2ludC5EZXNjcmlwdGlvbikge1xuXHRcdGNvbnN0IHNNb2RlbFZhbHVlID0gQW5ub3RhdGlvbkhlbHBlci52YWx1ZShvRGF0YVBvaW50LkRlc2NyaXB0aW9uLCB7IGNvbnRleHQ6IG9Db250ZXh0IH0pO1xuXHRcdHJlc3VsdCA9IFwiJHtwYXRoOlwiICsgc01vZGVsVmFsdWUgKyBcIn1cIjtcblx0fVxuXHRyZXR1cm4gcmVzdWx0O1xufTtcbmdldEhlYWRlclJhdGluZ0luZGljYXRvclRleHQucmVxdWlyZXNJQ29udGV4dCA9IHRydWU7XG5cbmNvbnN0IGJ1aWxkRXhwcmVzc2lvbkZvckRlc2NyaXB0aW9uID0gKGZpZWxkVmFsdWU6IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+KTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4gfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCByZWxhdGl2ZUxvY2F0aW9uID0gZ2V0UmVsYXRpdmVQYXRocyhmaWVsZFZhbHVlKTtcblx0aWYgKGZpZWxkVmFsdWU/LnRhcmdldE9iamVjdD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGV4dCkge1xuXHRcdGNvbnN0IG9UZXh0RXhwcmVzc2lvbiA9IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihmaWVsZFZhbHVlPy50YXJnZXRPYmplY3QuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGV4dCwgcmVsYXRpdmVMb2NhdGlvbik7XG5cdFx0aWYgKGlzUGF0aEluTW9kZWxFeHByZXNzaW9uKG9UZXh0RXhwcmVzc2lvbikpIHtcblx0XHRcdG9UZXh0RXhwcmVzc2lvbi5wYXJhbWV0ZXJzID0geyAkJG5vUGF0Y2g6IHRydWUgfTtcblx0XHR9XG5cdFx0cmV0dXJuIG9UZXh0RXhwcmVzc2lvbjtcblx0fVxuXHRyZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuY29uc3QgZ2V0RmxvYXRGb3JtYXQgPSAoXG5cdG91dEV4cHJlc3Npb246IFBhdGhJbk1vZGVsRXhwcmVzc2lvbjxzdHJpbmc+LFxuXHRudW1iZXJPZkZyYWN0aW9uYWxEaWdpdHM6IE51bWJlciB8IHVuZGVmaW5lZFxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4gPT4ge1xuXHQvLyBudW1iZXJPZkZyYWN0aW9uYWxEaWdpdHMgaXMgb25seSBkZWZpbmVkIGluIGdldFZhbHVlRm9ybWF0dGVkIHdoZW4gTnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzIGlzIGRlZmluZWQuXG5cdC8vIEluIHRoYXQgY2FzZSwgd2UgbmVlZCB0byBpbnN0YW5jZSB0aGUgcHJlc2VydmVEZWNpbWFscyBwYXJhbWV0ZXIgYmVjYXVzZSBvZiBhIGNoYW5nZSBNREMgc2lkZVxuXHRpZiAobnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzKSB7XG5cdFx0aWYgKCFvdXRFeHByZXNzaW9uLmZvcm1hdE9wdGlvbnMpIHtcblx0XHRcdG91dEV4cHJlc3Npb24uZm9ybWF0T3B0aW9ucyA9IHt9O1xuXHRcdH1cblx0XHRvdXRFeHByZXNzaW9uLmZvcm1hdE9wdGlvbnMgPSBPYmplY3QuYXNzaWduKG91dEV4cHJlc3Npb24uZm9ybWF0T3B0aW9ucywge1xuXHRcdFx0cHJlc2VydmVEZWNpbWFsczogZmFsc2UsXG5cdFx0XHRtYXhGcmFjdGlvbkRpZ2l0czogbnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzXG5cdFx0fSk7XG5cdH1cblx0cmV0dXJuIG91dEV4cHJlc3Npb247XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VmFsdWVGb3JtYXR0ZWQgPSAoXG5cdG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+IHwgdW5kZWZpbmVkLFxuXHRmaWVsZFZhbHVlOiBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb248c3RyaW5nPiB8IHVuZGVmaW5lZCxcblx0c1Byb3BlcnR5VHlwZTogc3RyaW5nLFxuXHRzTnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzOiBOdW1iZXIgfCB1bmRlZmluZWRcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+ID0+IHtcblx0bGV0IG91dEV4cHJlc3Npb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+O1xuXHRjb25zdCByZWxhdGl2ZUxvY2F0aW9uID0gIWZpZWxkVmFsdWU/LnBhdGg/LmluY2x1ZGVzKFwiL1wiKSA/IGdldFJlbGF0aXZlUGF0aHMob1Byb3BlcnR5RGF0YU1vZGVsUGF0aCkgOiBbXTtcblx0b3V0RXhwcmVzc2lvbiA9IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihmaWVsZFZhbHVlLCByZWxhdGl2ZUxvY2F0aW9uKTtcblx0Y29uc3Qgb1Byb3BlcnR5RGVmaW5pdGlvbiA9IG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGg/LnRhcmdldE9iamVjdDtcblx0aWYgKG9Qcm9wZXJ0eURlZmluaXRpb24gJiYgc1Byb3BlcnR5VHlwZSAmJiBpc1BhdGhJbk1vZGVsRXhwcmVzc2lvbihvdXRFeHByZXNzaW9uKSkge1xuXHRcdGZvcm1hdFdpdGhUeXBlSW5mb3JtYXRpb24ob1Byb3BlcnR5RGVmaW5pdGlvbiwgb3V0RXhwcmVzc2lvbik7XG5cdFx0b3V0RXhwcmVzc2lvbi50eXBlID0gRURNX1RZUEVfTUFQUElOR1tzUHJvcGVydHlUeXBlXT8udHlwZTtcblx0XHRpZiAodHlwZXNTdXBwb3J0aW5nTnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzLmluY2x1ZGVzKHNQcm9wZXJ0eVR5cGUpKSB7XG5cdFx0XHQvLyBmb3IgdGhlIGxpc3RSZXBvcnQsIHRoZSBkZWNpbWFsL3NpbmdsZS9kb3VibGUgZmllbGRzIGFyZSBmb3JtYXR0ZWQgYnkgcmV0dXJuaW5nIGEgc3RyaW5nXG5cdFx0XHQvLyBmb3IgdGhlIGZhY2V0cyBvZiB0aGUgT1AsIHRoZSBkZWNpbWFsL3NpbmdsZS9kb3VibGUgZmllbGRzIGFyZSBmb3JtYXR0ZWQgYnkgcmV0dXJuaW5nIGEgcHJvbWlzZSwgc28gd2UgbWFuYWdlIGFsbCB0aGUgY2FzZXNcblx0XHRcdG91dEV4cHJlc3Npb24gPSBnZXRGbG9hdEZvcm1hdChvdXRFeHByZXNzaW9uLCBzTnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gb3V0RXhwcmVzc2lvbjtcbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZEZpZWxkQmluZGluZ0V4cHJlc3Npb24gPSAoXG5cdG9EYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFQb2ludFR5cGU+LFxuXHRkYXRhUG9pbnRGb3JtYXRPcHRpb25zOiBEYXRhUG9pbnRGb3JtYXRPcHRpb25zLFxuXHRiSGlkZU1lYXN1cmU6IGJvb2xlYW5cbik6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uID0+IHtcblx0Y29uc3Qgb0RhdGFQb2ludCA9IG9EYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdDtcblx0Y29uc3Qgb0RhdGFQb2ludFZhbHVlID0gb0RhdGFQb2ludD8uVmFsdWUgfHwgXCJcIjtcblx0Y29uc3QgcHJvcGVydHlUeXBlID0gb0RhdGFQb2ludFZhbHVlPy4kdGFyZ2V0Py50eXBlO1xuXHRsZXQgbnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzO1xuXG5cdGlmICh0eXBlc1N1cHBvcnRpbmdOdW1iZXJPZkZyYWN0aW9uYWxEaWdpdHMuaW5jbHVkZXMocHJvcGVydHlUeXBlKSAmJiBvRGF0YVBvaW50Py5WYWx1ZUZvcm1hdCkge1xuXHRcdGlmIChvRGF0YVBvaW50LlZhbHVlRm9ybWF0Lk51bWJlck9mRnJhY3Rpb25hbERpZ2l0cykge1xuXHRcdFx0bnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzID0gb0RhdGFQb2ludC5WYWx1ZUZvcm1hdC5OdW1iZXJPZkZyYWN0aW9uYWxEaWdpdHM7XG5cdFx0fVxuXHR9XG5cdGNvbnN0IG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGggPSBlbmhhbmNlRGF0YU1vZGVsUGF0aDxQcm9wZXJ0eT4ob0RhdGFNb2RlbFBhdGgsIG9EYXRhUG9pbnRWYWx1ZS5wYXRoKTtcblx0Y29uc3Qgb0Rlc2NyaXB0aW9uID0gb1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCA/IGJ1aWxkRXhwcmVzc2lvbkZvckRlc2NyaXB0aW9uKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgpIDogdW5kZWZpbmVkO1xuXHRjb25zdCBvRm9ybWF0dGVkVmFsdWUgPSBnZXRWYWx1ZUZvcm1hdHRlZChvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLCBvRGF0YVBvaW50VmFsdWUsIHByb3BlcnR5VHlwZSwgbnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzKTtcblx0Y29uc3Qgc0Rpc3BsYXlNb2RlID0gb0Rlc2NyaXB0aW9uID8gZGF0YVBvaW50Rm9ybWF0T3B0aW9ucz8uZGlzcGxheU1vZGUgfHwgZ2V0RGlzcGxheU1vZGUob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCkgOiBcIlZhbHVlXCI7XG5cdGxldCBvQmluZGluZ0V4cHJlc3Npb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHwgdW5kZWZpbmVkO1xuXHRzd2l0Y2ggKHNEaXNwbGF5TW9kZSkge1xuXHRcdGNhc2UgXCJEZXNjcmlwdGlvblwiOlxuXHRcdFx0b0JpbmRpbmdFeHByZXNzaW9uID0gb0Rlc2NyaXB0aW9uO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcIlZhbHVlRGVzY3JpcHRpb25cIjpcblx0XHRcdG9CaW5kaW5nRXhwcmVzc2lvbiA9IGZvcm1hdFJlc3VsdChbb0Zvcm1hdHRlZFZhbHVlLCBvRGVzY3JpcHRpb25dLCB2YWx1ZUZvcm1hdHRlcnMuZm9ybWF0V2l0aEJyYWNrZXRzKTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJEZXNjcmlwdGlvblZhbHVlXCI6XG5cdFx0XHRvQmluZGluZ0V4cHJlc3Npb24gPSBmb3JtYXRSZXN1bHQoW29EZXNjcmlwdGlvbiwgb0Zvcm1hdHRlZFZhbHVlXSwgdmFsdWVGb3JtYXR0ZXJzLmZvcm1hdFdpdGhCcmFja2V0cyk7XG5cdFx0XHRicmVhaztcblx0XHRkZWZhdWx0OlxuXHRcdFx0aWYgKFxuXHRcdFx0XHRvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGltZXpvbmUgJiZcblx0XHRcdFx0b1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QudHlwZSA9PT0gXCJFZG0uRGF0ZVRpbWVPZmZzZXRcIlxuXHRcdFx0KSB7XG5cdFx0XHRcdG9CaW5kaW5nRXhwcmVzc2lvbiA9IGdldEJpbmRpbmdXaXRoVGltZXpvbmUob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCwgb0Zvcm1hdHRlZFZhbHVlKTtcblx0XHRcdH0gZWxzZSBpZiAob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3Q/LmFubm90YXRpb25zPy5Db21tb24/LklzVGltZXpvbmUpIHtcblx0XHRcdFx0b0JpbmRpbmdFeHByZXNzaW9uID0gZ2V0QmluZGluZ0ZvclRpbWV6b25lKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgsIG9Gb3JtYXR0ZWRWYWx1ZSk7XG5cdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdD8uYW5ub3RhdGlvbnM/LlVJPy5EYXRlVGltZVN0eWxlIHx8XG5cdFx0XHRcdGRhdGFQb2ludEZvcm1hdE9wdGlvbnM/LmRhdGVUaW1lUGF0dGVyblxuXHRcdFx0KSB7XG5cdFx0XHRcdG9CaW5kaW5nRXhwcmVzc2lvbiA9IGdldEJpbmRpbmdGb3JEYXRlRm9ybWF0KG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgsIG9Gb3JtYXR0ZWRWYWx1ZSwgZGF0YVBvaW50Rm9ybWF0T3B0aW9ucyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRvQmluZGluZ0V4cHJlc3Npb24gPSBfY29tcHV0ZUJpbmRpbmdXaXRoVW5pdE9yQ3VycmVuY3koXG5cdFx0XHRcdFx0b1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0XHRcdFx0XHRvRm9ybWF0dGVkVmFsdWUsXG5cdFx0XHRcdFx0YkhpZGVNZWFzdXJlIHx8IGRhdGFQb2ludEZvcm1hdE9wdGlvbnM/Lm1lYXN1cmVEaXNwbGF5TW9kZSA9PT0gXCJIaWRkZW5cIixcblx0XHRcdFx0XHQhIWRhdGFQb2ludEZvcm1hdE9wdGlvbnM/LnNob3dPbmx5VW5pdERlY2ltYWxzXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKG9CaW5kaW5nRXhwcmVzc2lvbik7XG59O1xuXG5leHBvcnQgY29uc3QgX2NvbXB1dGVCaW5kaW5nV2l0aFVuaXRPckN1cnJlbmN5ID0gKFxuXHRwcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+LFxuXHRmb3JtYXR0ZWRWYWx1ZTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4sXG5cdGhpZGVNZWFzdXJlOiBib29sZWFuLFxuXHRzaG93T25seVVuaXREZWNpbWFsczogYm9vbGVhblxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4gPT4ge1xuXHRpZiAoXG5cdFx0cHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdD8uYW5ub3RhdGlvbnM/Lk1lYXN1cmVzPy5Vbml0IHx8XG5cdFx0cHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdD8uYW5ub3RhdGlvbnM/Lk1lYXN1cmVzPy5JU09DdXJyZW5jeVxuXHQpIHtcblx0XHRpZiAoaGlkZU1lYXN1cmUgJiYgaGFzU3RhdGljUGVyY2VudFVuaXQocHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCkpIHtcblx0XHRcdHJldHVybiBmb3JtYXR0ZWRWYWx1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIGdldEJpbmRpbmdXaXRoVW5pdE9yQ3VycmVuY3koXG5cdFx0XHRwcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0XHRmb3JtYXR0ZWRWYWx1ZSxcblx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdGhpZGVNZWFzdXJlID8geyBzaG93TWVhc3VyZTogZmFsc2UgfSA6IHVuZGVmaW5lZCxcblx0XHRcdHRydWUsXG5cdFx0XHRzaG93T25seVVuaXREZWNpbWFsc1xuXHRcdCk7XG5cdH1cblx0cmV0dXJuIGZvcm1hdHRlZFZhbHVlO1xufTtcblxuLyoqXG4gKiBNZXRob2QgdG8gY2FsY3VsYXRlIHRoZSBwZXJjZW50YWdlIHZhbHVlIG9mIFByb2dyZXNzIEluZGljYXRvci4gQmFzaWMgZm9ybXVsYSBpcyBWYWx1ZS9UYXJnZXQgKiAxMDAuXG4gKiBAcGFyYW0gb1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aFxuICogQHJldHVybnMgVGhlIGV4cHJlc3Npb24gYmluZGluZyB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgcGVyY2VudGFnZSB2YWx1ZSwgd2hpY2ggaXMgc2hvd24gaW4gdGhlIHByb2dyZXNzIGluZGljYXRvciBiYXNlZCBvbiB0aGUgZm9ybXVsYSBnaXZlbiBhYm92ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkRXhwcmVzc2lvbkZvclByb2dyZXNzSW5kaWNhdG9yUGVyY2VudFZhbHVlID0gKFxuXHRvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFQb2ludFR5cGU+XG4pOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCBmaWVsZFZhbHVlID0gKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGg/LnRhcmdldE9iamVjdD8uVmFsdWUgYXMgUGF0aEFubm90YXRpb25FeHByZXNzaW9uPFByaW1pdGl2ZVR5cGU+KSB8fCBcIlwiO1xuXHRjb25zdCByZWxhdGl2ZUxvY2F0aW9uID0gZ2V0UmVsYXRpdmVQYXRocyhvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoKTtcblx0Y29uc3QgZmllbGRWYWx1ZUV4cHJlc3Npb24gPSBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oZmllbGRWYWx1ZSwgcmVsYXRpdmVMb2NhdGlvbik7XG5cdGNvbnN0IHRhcmdldEV4cHJlc3Npb24gPSBnZXREYXRhUG9pbnRUYXJnZXRFeHByZXNzaW9uKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LCByZWxhdGl2ZUxvY2F0aW9uKTtcblxuXHRjb25zdCBvUHJvcGVydHlEZWZpbml0aW9uID0gZmllbGRWYWx1ZS4kdGFyZ2V0IGFzIFByb3BlcnR5O1xuXHRjb25zdCB1bml0ID0gb1Byb3BlcnR5RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LlVuaXQgfHwgb1Byb3BlcnR5RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LklTT0N1cnJlbmN5O1xuXHRpZiAodW5pdCkge1xuXHRcdGNvbnN0IHVuaXRCaW5kaW5nRXhwcmVzc2lvbiA9IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbih1bml0LCByZWxhdGl2ZUxvY2F0aW9uKTtcblxuXHRcdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdGZvcm1hdFJlc3VsdChbZmllbGRWYWx1ZUV4cHJlc3Npb24sIHRhcmdldEV4cHJlc3Npb24sIHVuaXRCaW5kaW5nRXhwcmVzc2lvbl0sIHZhbHVlRm9ybWF0dGVycy5jb21wdXRlUGVyY2VudGFnZSlcblx0XHQpO1xuXHR9XG5cblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKGZvcm1hdFJlc3VsdChbZmllbGRWYWx1ZUV4cHJlc3Npb24sIHRhcmdldEV4cHJlc3Npb24sIFwiXCJdLCB2YWx1ZUZvcm1hdHRlcnMuY29tcHV0ZVBlcmNlbnRhZ2UpKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE4QkEsTUFBTUEsdUNBQXVDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLGFBQWEsQ0FBQztFQVUzRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBLE1BQU1DLDRCQUE0QixHQUFHQSxDQUNwQ0MsY0FBeUMsRUFDekNDLGdCQUEwQixLQUNZO0lBQ3RDLE9BQU9ELGNBQWMsRUFBRUUsV0FBVyxHQUFHQywyQkFBMkIsQ0FBQ0gsY0FBYyxDQUFDRSxXQUFXLEVBQUVELGdCQUFnQixDQUFDLEdBQUdHLHNCQUFzQjtFQUN4SSxDQUFDO0VBRUQsTUFBTUMsY0FBYyxHQUFHQyxPQUFPLENBQUNDLG9CQUFvQixDQUFDLGVBQWUsQ0FBRTs7RUFFckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNPLE1BQU1DLCtDQUErQyxHQUMzREMsNEJBQWdFLElBQzFCO0lBQ3RDLE1BQU1DLFVBQVUsR0FBR0QsNEJBQTRCLEVBQUVFLFlBQVksRUFBRUMsS0FBSyxJQUFJLEVBQUU7SUFDMUUsTUFBTVgsZ0JBQWdCLEdBQUdZLGdCQUFnQixDQUFDSiw0QkFBNEIsQ0FBQztJQUN2RSxNQUFNSyxvQkFBNkQsR0FBR1gsMkJBQTJCLENBQUNPLFVBQVUsRUFBRVQsZ0JBQWdCLENBQUM7SUFDL0gs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
|
|
233
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ0eXBlc1N1cHBvcnRpbmdOdW1iZXJPZkZyYWN0aW9uYWxEaWdpdHMiLCJnZXREYXRhUG9pbnRUYXJnZXRFeHByZXNzaW9uIiwib0RhdGFNb2RlbFBhdGgiLCJyZWxhdGl2ZUxvY2F0aW9uIiwiVGFyZ2V0VmFsdWUiLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJ1bnJlc29sdmFibGVFeHByZXNzaW9uIiwib1Jlc291cmNlTW9kZWwiLCJMaWJyYXJ5IiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJidWlsZEV4cHJlc3Npb25Gb3JQcm9ncmVzc0luZGljYXRvckRpc3BsYXlWYWx1ZSIsIm9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgiLCJmaWVsZFZhbHVlIiwidGFyZ2V0T2JqZWN0IiwiVmFsdWUiLCJnZXRSZWxhdGl2ZVBhdGhzIiwiZmllbGRWYWx1ZUV4cHJlc3Npb24iLCJ0YXJnZXRFeHByZXNzaW9uIiwiaXNQcm9wZXJ0eSIsIiR0YXJnZXQiLCJ1bml0IiwiYW5ub3RhdGlvbnMiLCJNZWFzdXJlcyIsIlVuaXQiLCJJU09DdXJyZW5jeSIsImdldFRleHQiLCJjb21waWxlRXhwcmVzc2lvbiIsImhhc1N0YXRpY1BlcmNlbnRVbml0IiwidW5pdEJpbmRpbmdFeHByZXNzaW9uIiwiZm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvbiIsImlzQ3VycmVuY3kiLCJyZXF1ZXN0Q3VzdG9tVW5pdHMiLCJwYXRoSW5Nb2RlbCIsInRhcmdldFR5cGUiLCJtb2RlIiwiZm9ybWF0UmVzdWx0IiwidmFsdWVGb3JtYXR0ZXJzIiwiZm9ybWF0UHJvZ3Jlc3NJbmRpY2F0b3JUZXh0IiwidW5kZWZpbmVkIiwiX2V4cG9ydHMiLCJidWlsZFJhdGluZ0luZGljYXRvclN1YnRpdGxlRXhwcmVzc2lvbiIsIm9Db250ZXh0IiwibVNhbXBsZVNpemUiLCJmb3JtYXRSYXRpbmdJbmRpY2F0b3JTdWJUaXRsZSIsIkFubm90YXRpb25IZWxwZXIiLCJ2YWx1ZSIsImNvbnRleHQiLCJpU2FtcGxlU2l6ZVZhbHVlIiwic1N1YlRpdGxlTGFiZWwiLCJTdHJpbmciLCJnZXRIZWFkZXJSYXRpbmdJbmRpY2F0b3JUZXh0Iiwib0RhdGFQb2ludCIsInJlc3VsdCIsIlNhbXBsZVNpemUiLCJEZXNjcmlwdGlvbiIsInNNb2RlbFZhbHVlIiwicmVxdWlyZXNJQ29udGV4dCIsImJ1aWxkRXhwcmVzc2lvbkZvckRlc2NyaXB0aW9uIiwiQ29tbW9uIiwiVGV4dCIsIm9UZXh0RXhwcmVzc2lvbiIsImlzUGF0aEluTW9kZWxFeHByZXNzaW9uIiwicGFyYW1ldGVycyIsIiQkbm9QYXRjaCIsImdldEZsb2F0Rm9ybWF0Iiwib3V0RXhwcmVzc2lvbiIsIm51bWJlck9mRnJhY3Rpb25hbERpZ2l0cyIsImZvcm1hdE9wdGlvbnMiLCJPYmplY3QiLCJhc3NpZ24iLCJwcmVzZXJ2ZURlY2ltYWxzIiwibWF4RnJhY3Rpb25EaWdpdHMiLCJtaW5GcmFjdGlvbkRpZ2l0cyIsImNvbnN0cmFpbnRzIiwiZ2V0VmFsdWVGb3JtYXR0ZWQiLCJvUHJvcGVydHlEYXRhTW9kZWxQYXRoIiwic1Byb3BlcnR5VHlwZSIsInNOdW1iZXJPZkZyYWN0aW9uYWxEaWdpdHMiLCJwYXRoIiwiaW5jbHVkZXMiLCJvUHJvcGVydHlEZWZpbml0aW9uIiwidHlwZSIsIkVETV9UWVBFX01BUFBJTkciLCJidWlsZEZpZWxkQmluZGluZ0V4cHJlc3Npb24iLCJkYXRhUG9pbnRGb3JtYXRPcHRpb25zIiwiYkhpZGVNZWFzdXJlIiwib0RhdGFQb2ludFZhbHVlIiwicHJvcGVydHlUeXBlIiwiVmFsdWVGb3JtYXQiLCJOdW1iZXJPZkZyYWN0aW9uYWxEaWdpdHMiLCJlbmhhbmNlRGF0YU1vZGVsUGF0aCIsIm9EZXNjcmlwdGlvbiIsIm9Gb3JtYXR0ZWRWYWx1ZSIsInNEaXNwbGF5TW9kZSIsImRpc3BsYXlNb2RlIiwiZ2V0RGlzcGxheU1vZGUiLCJvQmluZGluZ0V4cHJlc3Npb24iLCJmb3JtYXRXaXRoQnJhY2tldHMiLCJUaW1lem9uZSIsImdldEJpbmRpbmdXaXRoVGltZXpvbmUiLCJJc1RpbWV6b25lIiwiZ2V0QmluZGluZ0ZvclRpbWV6b25lIiwiVUkiLCJEYXRlVGltZVN0eWxlIiwiZGF0ZVRpbWVQYXR0ZXJuIiwiZ2V0QmluZGluZ0ZvckRhdGVGb3JtYXQiLCJfY29tcHV0ZUJpbmRpbmdXaXRoVW5pdE9yQ3VycmVuY3kiLCJtZWFzdXJlRGlzcGxheU1vZGUiLCJzaG93T25seVVuaXREZWNpbWFscyIsInByb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCIsImZvcm1hdHRlZFZhbHVlIiwiaGlkZU1lYXN1cmUiLCJnZXRCaW5kaW5nV2l0aFVuaXRPckN1cnJlbmN5Iiwic2hvd01lYXN1cmUiLCJidWlsZEV4cHJlc3Npb25Gb3JQcm9ncmVzc0luZGljYXRvclBlcmNlbnRWYWx1ZSIsImNvbXB1dGVQZXJjZW50YWdlIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJEYXRhUG9pbnRUZW1wbGF0aW5nLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGF0aEFubm90YXRpb25FeHByZXNzaW9uLCBQcmltaXRpdmVUeXBlLCBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhUG9pbnRUeXBlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24sIENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLCBQYXRoSW5Nb2RlbEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7XG5cdEVETV9UWVBFX01BUFBJTkcsXG5cdGNvbXBpbGVFeHByZXNzaW9uLFxuXHRmb3JtYXRSZXN1bHQsXG5cdGZvcm1hdFdpdGhUeXBlSW5mb3JtYXRpb24sXG5cdGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbixcblx0aXNQYXRoSW5Nb2RlbEV4cHJlc3Npb24sXG5cdHBhdGhJbk1vZGVsLFxuXHR1bnJlc29sdmFibGVFeHByZXNzaW9uXG59IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHZhbHVlRm9ybWF0dGVycyBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9WYWx1ZUZvcm1hdHRlclwiO1xuaW1wb3J0IHsgaXNQcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGVuaGFuY2VEYXRhTW9kZWxQYXRoLCBnZXRSZWxhdGl2ZVBhdGhzIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHsgaGFzU3RhdGljUGVyY2VudFVuaXQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBEYXRlVGltZVN0eWxlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvVUlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQge1xuXHRnZXRCaW5kaW5nRm9yRGF0ZUZvcm1hdCxcblx0Z2V0QmluZGluZ0ZvclRpbWV6b25lLFxuXHRnZXRCaW5kaW5nV2l0aFRpbWV6b25lLFxuXHRnZXRCaW5kaW5nV2l0aFVuaXRPckN1cnJlbmN5LFxuXHRnZXREaXNwbGF5TW9kZVxufSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCBMaWJyYXJ5IGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgQW5ub3RhdGlvbkhlbHBlciBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0Fubm90YXRpb25IZWxwZXJcIjtcblxuY29uc3QgdHlwZXNTdXBwb3J0aW5nTnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzID0gW1wiRWRtLlNpbmdsZVwiLCBcIkVkbS5Eb3VibGVcIiwgXCJFZG0uRGVjaW1hbFwiXTtcblxuZXhwb3J0IHR5cGUgRGF0YVBvaW50Rm9ybWF0T3B0aW9ucyA9IFBhcnRpYWw8e1xuXHRtZWFzdXJlRGlzcGxheU1vZGU6IHN0cmluZztcblx0ZGlzcGxheU1vZGU6IHN0cmluZztcblx0ZGF0ZVRpbWVTdHlsZTogRGF0ZVRpbWVTdHlsZTtcblx0ZGF0ZVRpbWVQYXR0ZXJuOiBzdHJpbmc7XG5cdHNob3dPbmx5VW5pdERlY2ltYWxzOiBib29sZWFuO1xufT47XG5cbi8qKlxuICogR2V0cyB0aGUgdGFyZ2V0IHZhbHVlIG9mIGEgcHJvZ3Jlc3MgaW5kaWNhdG9yLlxuICogQSBwcm9ncmVzcyBpbmRpY2F0b3IgY2FuIGhhdmUgYSBzdGF0aWMgdGFyZ2V0LCBhIHBlcmNlbnRhZ2UsIG9yIGFub3RoZXIgcHJvcGVydHkuXG4gKiBAcGFyYW0gb0RhdGFNb2RlbFBhdGggVGhlIERhdGFNb2RlbE9iamVjdFBhdGhcbiAqIEBwYXJhbSByZWxhdGl2ZUxvY2F0aW9uIFRoZSByZWxhdGl2ZSBsb2NhdGlvbiwgdG8gdGFrZSBpbnRvIGFjY291bnQgdGhlIG5hdmlnYXRpb24gcHJvcGVydGllc1xuICogQHJldHVybnMgVGhlIGV4cHJlc3Npb24gYmluZGluZyBvZiB0aGUgdGFyZ2V0IHZhbHVlXG4gKi9cbmNvbnN0IGdldERhdGFQb2ludFRhcmdldEV4cHJlc3Npb24gPSAoXG5cdG9EYXRhTW9kZWxQYXRoOiBEYXRhUG9pbnRUeXBlIHwgdW5kZWZpbmVkLFxuXHRyZWxhdGl2ZUxvY2F0aW9uOiBzdHJpbmdbXVxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4gPT4ge1xuXHRyZXR1cm4gb0RhdGFNb2RlbFBhdGg/LlRhcmdldFZhbHVlID8gZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKG9EYXRhTW9kZWxQYXRoLlRhcmdldFZhbHVlLCByZWxhdGl2ZUxvY2F0aW9uKSA6IHVucmVzb2x2YWJsZUV4cHJlc3Npb247XG59O1xuXG5jb25zdCBvUmVzb3VyY2VNb2RlbCA9IExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpITtcblxuLyoqXG4gKiBUaGlzIGdldHMgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgdGhlIHZhbHVlIG9mIHRoZSBwcm9ncmVzcyBpbmRpY2F0b3IuXG4gKiBAcGFyYW0gb1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCBUaGUgRGF0YU1vZGVsT2JqZWN0UGF0aFxuICogQHJldHVybnMgVGhlIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgdGhlIHByb2dyZXNzIGluZGljYXRvciB2YWx1ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkRXhwcmVzc2lvbkZvclByb2dyZXNzSW5kaWNhdG9yRGlzcGxheVZhbHVlID0gKFxuXHRvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFQb2ludFR5cGU+XG4pOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiA9PiB7XG5cdGNvbnN0IGZpZWxkVmFsdWUgPSBvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoPy50YXJnZXRPYmplY3Q/LlZhbHVlIHx8IFwiXCI7XG5cdGNvbnN0IHJlbGF0aXZlTG9jYXRpb24gPSBnZXRSZWxhdGl2ZVBhdGhzKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgpO1xuXHRjb25zdCBmaWVsZFZhbHVlRXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPFByaW1pdGl2ZVR5cGU+ID0gZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGZpZWxkVmFsdWUsIHJlbGF0aXZlTG9jYXRpb24pO1xuXHRjb25zdCB0YXJnZXRFeHByZXNzaW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiA9IGdldERhdGFQb2ludFRhcmdldEV4cHJlc3Npb24oXG5cdFx0b1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QsXG5cdFx0cmVsYXRpdmVMb2NhdGlvblxuXHQpO1xuXG5cdGlmIChmaWVsZFZhbHVlRXhwcmVzc2lvbiAmJiB0YXJnZXRFeHByZXNzaW9uKSB7XG5cdFx0bGV0IHRhcmdldE9iamVjdCA9IG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Py5WYWx1ZTtcblx0XHRpZiAoIWlzUHJvcGVydHkodGFyZ2V0T2JqZWN0KSkge1xuXHRcdFx0dGFyZ2V0T2JqZWN0ID0gdGFyZ2V0T2JqZWN0LiR0YXJnZXQ7XG5cdFx0fVxuXHRcdGNvbnN0IHVuaXQgPSB0YXJnZXRPYmplY3QuYW5ub3RhdGlvbnM/Lk1lYXN1cmVzPy5Vbml0IHx8IHRhcmdldE9iamVjdC5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LklTT0N1cnJlbmN5O1xuXG5cdFx0aWYgKCF1bml0KSB7XG5cdFx0XHRyZXR1cm4gb1Jlc291cmNlTW9kZWwuZ2V0VGV4dChcIlRfQ09NTU9OX1BST0dSRVNTX0lORElDQVRPUl9ESVNQTEFZX1ZBTFVFX05PX1VPTVwiLCBbXG5cdFx0XHRcdGNvbXBpbGVFeHByZXNzaW9uKGZpZWxkVmFsdWVFeHByZXNzaW9uKSxcblx0XHRcdFx0Y29tcGlsZUV4cHJlc3Npb24odGFyZ2V0RXhwcmVzc2lvbilcblx0XHRcdF0pO1xuXHRcdH1cblx0XHQvLyBJZiB0aGUgdW5pdCBpc24ndCBhIHBhdGgsIHdlIGNoZWNrIGZvciBhICUgc2lnbiBhcyBpdCBpcyBhIHNwZWNpYWwgY2FzZS5cblx0XHRpZiAoaGFzU3RhdGljUGVyY2VudFVuaXQoZmllbGRWYWx1ZT8uJHRhcmdldCkpIHtcblx0XHRcdHJldHVybiBgJHtjb21waWxlRXhwcmVzc2lvbihmaWVsZFZhbHVlRXhwcmVzc2lvbil9ICVgO1xuXHRcdH1cblxuXHRcdGNvbnN0IHVuaXRCaW5kaW5nRXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4gPSB1bml0LiR0YXJnZXRcblx0XHRcdD8gZm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvbih1bml0LiR0YXJnZXQsIGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbih1bml0LCByZWxhdGl2ZUxvY2F0aW9uKSlcblx0XHRcdDogZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKHVuaXQsIHJlbGF0aXZlTG9jYXRpb24pO1xuXG5cdFx0Y29uc3QgaXNDdXJyZW5jeSA9IHRhcmdldE9iamVjdC5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LklTT0N1cnJlbmN5ID8gdHJ1ZSA6IGZhbHNlO1xuXHRcdGxldCByZXF1ZXN0Q3VzdG9tVW5pdHM7XG5cdFx0aWYgKGlzQ3VycmVuY3kpIHtcblx0XHRcdHJlcXVlc3RDdXN0b21Vbml0cyA9IHBhdGhJbk1vZGVsKFwiLyMjQEByZXF1ZXN0Q3VycmVuY3lDb2Rlc1wiKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmVxdWVzdEN1c3RvbVVuaXRzID0gcGF0aEluTW9kZWwoXCIvIyNAQHJlcXVlc3RVbml0c09mTWVhc3VyZVwiKTtcblx0XHR9XG5cdFx0cmVxdWVzdEN1c3RvbVVuaXRzLnRhcmdldFR5cGUgPSBcImFueVwiO1xuXHRcdHJlcXVlc3RDdXN0b21Vbml0cy5tb2RlID0gXCJPbmVUaW1lXCI7XG5cblx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRmb3JtYXRSZXN1bHQoXG5cdFx0XHRcdFtmaWVsZFZhbHVlRXhwcmVzc2lvbiwgdGFyZ2V0RXhwcmVzc2lvbiwgdW5pdEJpbmRpbmdFeHByZXNzaW9uLCBpc0N1cnJlbmN5LCByZXF1ZXN0Q3VzdG9tVW5pdHNdLFxuXHRcdFx0XHR2YWx1ZUZvcm1hdHRlcnMuZm9ybWF0UHJvZ3Jlc3NJbmRpY2F0b3JUZXh0XG5cdFx0XHQpXG5cdFx0KTtcblx0fVxuXHRyZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuY29uc3QgYnVpbGRSYXRpbmdJbmRpY2F0b3JTdWJ0aXRsZUV4cHJlc3Npb24gPSAob0NvbnRleHQ6IENvbnRleHQsIG1TYW1wbGVTaXplOiB1bmtub3duKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcblx0aWYgKG1TYW1wbGVTaXplKSB7XG5cdFx0cmV0dXJuIGZvcm1hdFJhdGluZ0luZGljYXRvclN1YlRpdGxlKEFubm90YXRpb25IZWxwZXIudmFsdWUobVNhbXBsZVNpemUsIHsgY29udGV4dDogb0NvbnRleHQgfSkgYXMgdW5rbm93biBhcyBudW1iZXIpO1xuXHR9XG59O1xuLy8gcmV0dXJucyB0aGUgdGV4dCBmb3IgdGhlIFJhdGluZyBJbmRpY2F0b3IgU3VidGl0bGUgKGUuZy4gJzcgcmV2aWV3cycpXG5jb25zdCBmb3JtYXRSYXRpbmdJbmRpY2F0b3JTdWJUaXRsZSA9IChpU2FtcGxlU2l6ZVZhbHVlOiBudW1iZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuXHRpZiAoaVNhbXBsZVNpemVWYWx1ZSkge1xuXHRcdGNvbnN0IHNTdWJUaXRsZUxhYmVsID1cblx0XHRcdGlTYW1wbGVTaXplVmFsdWUgPiAxXG5cdFx0XHRcdD8gb1Jlc291cmNlTW9kZWwuZ2V0VGV4dChcIlRfQU5OT1RBVElPTl9IRUxQRVJfUkFUSU5HX0lORElDQVRPUl9TVUJUSVRMRV9MQUJFTF9QTFVSQUxcIilcblx0XHRcdFx0OiBvUmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiVF9BTk5PVEFUSU9OX0hFTFBFUl9SQVRJTkdfSU5ESUNBVE9SX1NVQlRJVExFX0xBQkVMXCIpO1xuXHRcdHJldHVybiBvUmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiVF9BTk5PVEFUSU9OX0hFTFBFUl9SQVRJTkdfSU5ESUNBVE9SX1NVQlRJVExFXCIsIFtTdHJpbmcoaVNhbXBsZVNpemVWYWx1ZSksIHNTdWJUaXRsZUxhYmVsXSk7XG5cdH1cbn07XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGdldCB0aGUgaGVhZGVyIHRleHQgb2YgcmF0aW5nIGluZGljYXRvci5cbiAqIEBwYXJhbSBvQ29udGV4dCBDb250ZXh0IG9mIGludGVyZmFjZVxuICogQHBhcmFtIG9EYXRhUG9pbnQgRGF0YSBwb2ludCBvYmplY3RcbiAqIEByZXR1cm5zIEV4cHJlc3Npb24gYmluZGluZyBmb3IgcmF0aW5nIGluZGljYXRvciB0ZXh0XG4gKi9cbmV4cG9ydCBjb25zdCBnZXRIZWFkZXJSYXRpbmdJbmRpY2F0b3JUZXh0ID0gKG9Db250ZXh0OiBDb250ZXh0LCBvRGF0YVBvaW50OiBEYXRhUG9pbnRUeXBlIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcblx0bGV0IHJlc3VsdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRpZiAob0RhdGFQb2ludCAmJiBvRGF0YVBvaW50LlNhbXBsZVNpemUpIHtcblx0XHRyZXN1bHQgPSBidWlsZFJhdGluZ0luZGljYXRvclN1YnRpdGxlRXhwcmVzc2lvbihvQ29udGV4dCwgb0RhdGFQb2ludC5TYW1wbGVTaXplKTtcblx0fSBlbHNlIGlmIChvRGF0YVBvaW50ICYmIG9EYXRhUG9pbnQuRGVzY3JpcHRpb24pIHtcblx0XHRjb25zdCBzTW9kZWxWYWx1ZSA9IEFubm90YXRpb25IZWxwZXIudmFsdWUob0RhdGFQb2ludC5EZXNjcmlwdGlvbiwgeyBjb250ZXh0OiBvQ29udGV4dCB9KTtcblx0XHRyZXN1bHQgPSBcIiR7cGF0aDpcIiArIHNNb2RlbFZhbHVlICsgXCJ9XCI7XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn07XG5nZXRIZWFkZXJSYXRpbmdJbmRpY2F0b3JUZXh0LnJlcXVpcmVzSUNvbnRleHQgPSB0cnVlO1xuXG5jb25zdCBidWlsZEV4cHJlc3Npb25Gb3JEZXNjcmlwdGlvbiA9IChmaWVsZFZhbHVlOiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5Pik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHwgdW5kZWZpbmVkID0+IHtcblx0Y29uc3QgcmVsYXRpdmVMb2NhdGlvbiA9IGdldFJlbGF0aXZlUGF0aHMoZmllbGRWYWx1ZSk7XG5cdGlmIChmaWVsZFZhbHVlPy50YXJnZXRPYmplY3Q/LmFubm90YXRpb25zPy5Db21tb24/LlRleHQpIHtcblx0XHRjb25zdCBvVGV4dEV4cHJlc3Npb24gPSBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oZmllbGRWYWx1ZT8udGFyZ2V0T2JqZWN0LmFubm90YXRpb25zPy5Db21tb24/LlRleHQsIHJlbGF0aXZlTG9jYXRpb24pO1xuXHRcdGlmIChpc1BhdGhJbk1vZGVsRXhwcmVzc2lvbihvVGV4dEV4cHJlc3Npb24pKSB7XG5cdFx0XHRvVGV4dEV4cHJlc3Npb24ucGFyYW1ldGVycyA9IHsgJCRub1BhdGNoOiB0cnVlIH07XG5cdFx0fVxuXHRcdHJldHVybiBvVGV4dEV4cHJlc3Npb247XG5cdH1cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IGdldEZsb2F0Rm9ybWF0ID0gKFxuXHRvdXRFeHByZXNzaW9uOiBQYXRoSW5Nb2RlbEV4cHJlc3Npb248c3RyaW5nPixcblx0bnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzOiBOdW1iZXIgfCB1bmRlZmluZWRcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+ID0+IHtcblx0Ly8gbnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzIGlzIG9ubHkgZGVmaW5lZCBpbiBnZXRWYWx1ZUZvcm1hdHRlZCB3aGVuIE51bWJlck9mRnJhY3Rpb25hbERpZ2l0cyBpcyBkZWZpbmVkLlxuXHQvLyBJbiB0aGF0IGNhc2UsIHdlIG5lZWQgdG8gaW5zdGFuY2UgdGhlIHByZXNlcnZlRGVjaW1hbHMgcGFyYW1ldGVyIGJlY2F1c2Ugb2YgYSBjaGFuZ2UgTURDIHNpZGVcblx0aWYgKG51bWJlck9mRnJhY3Rpb25hbERpZ2l0cykge1xuXHRcdGlmICghb3V0RXhwcmVzc2lvbi5mb3JtYXRPcHRpb25zKSB7XG5cdFx0XHRvdXRFeHByZXNzaW9uLmZvcm1hdE9wdGlvbnMgPSB7fTtcblx0XHR9XG5cdFx0b3V0RXhwcmVzc2lvbi5mb3JtYXRPcHRpb25zID0gT2JqZWN0LmFzc2lnbihvdXRFeHByZXNzaW9uLmZvcm1hdE9wdGlvbnMsIHtcblx0XHRcdHByZXNlcnZlRGVjaW1hbHM6IGZhbHNlLFxuXHRcdFx0bWF4RnJhY3Rpb25EaWdpdHM6IG51bWJlck9mRnJhY3Rpb25hbERpZ2l0cyxcblx0XHRcdG1pbkZyYWN0aW9uRGlnaXRzOiBudW1iZXJPZkZyYWN0aW9uYWxEaWdpdHNcblx0XHR9KTtcblx0XHQvL3dlIG5lZWQgdG8gaWdub3JlIHRoZSBjb25zdHJhaW50cyBvdGhlcndpc2UgdGhlIHNjYWxlIG1lc3MgdXAgdGhlIGZvcm1hdHRpbmcgYnkgYWRkaW5nIHRyYWlsaW5nIHplcm9zXG5cdFx0Ly8gMS4yMzQgd2l0aCBtYXhGcmFjdGlvbkRpZ2l0cyAyIGFuZCBzY2FsZSA0IHdpbGwgYmVjb21lIDEuMjMwMFxuXHRcdG91dEV4cHJlc3Npb24uY29uc3RyYWludHMgPSB7fTtcblx0fVxuXHRyZXR1cm4gb3V0RXhwcmVzc2lvbjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRWYWx1ZUZvcm1hdHRlZCA9IChcblx0b1Byb3BlcnR5RGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eT4gfCB1bmRlZmluZWQsXG5cdGZpZWxkVmFsdWU6IFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxzdHJpbmc+IHwgdW5kZWZpbmVkLFxuXHRzUHJvcGVydHlUeXBlOiBzdHJpbmcsXG5cdHNOdW1iZXJPZkZyYWN0aW9uYWxEaWdpdHM6IE51bWJlciB8IHVuZGVmaW5lZFxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4gPT4ge1xuXHRsZXQgb3V0RXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz47XG5cdGNvbnN0IHJlbGF0aXZlTG9jYXRpb24gPSAhZmllbGRWYWx1ZT8ucGF0aD8uaW5jbHVkZXMoXCIvXCIpID8gZ2V0UmVsYXRpdmVQYXRocyhvUHJvcGVydHlEYXRhTW9kZWxQYXRoKSA6IFtdO1xuXHRvdXRFeHByZXNzaW9uID0gZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGZpZWxkVmFsdWUsIHJlbGF0aXZlTG9jYXRpb24pO1xuXHRjb25zdCBvUHJvcGVydHlEZWZpbml0aW9uID0gb1Byb3BlcnR5RGF0YU1vZGVsUGF0aD8udGFyZ2V0T2JqZWN0O1xuXHRpZiAob1Byb3BlcnR5RGVmaW5pdGlvbiAmJiBzUHJvcGVydHlUeXBlICYmIGlzUGF0aEluTW9kZWxFeHByZXNzaW9uKG91dEV4cHJlc3Npb24pKSB7XG5cdFx0Zm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvbihvUHJvcGVydHlEZWZpbml0aW9uLCBvdXRFeHByZXNzaW9uKTtcblx0XHRvdXRFeHByZXNzaW9uLnR5cGUgPSBFRE1fVFlQRV9NQVBQSU5HW3NQcm9wZXJ0eVR5cGVdPy50eXBlO1xuXHRcdGlmICh0eXBlc1N1cHBvcnRpbmdOdW1iZXJPZkZyYWN0aW9uYWxEaWdpdHMuaW5jbHVkZXMoc1Byb3BlcnR5VHlwZSkpIHtcblx0XHRcdC8vIGZvciB0aGUgbGlzdFJlcG9ydCwgdGhlIGRlY2ltYWwvc2luZ2xlL2RvdWJsZSBmaWVsZHMgYXJlIGZvcm1hdHRlZCBieSByZXR1cm5pbmcgYSBzdHJpbmdcblx0XHRcdC8vIGZvciB0aGUgZmFjZXRzIG9mIHRoZSBPUCwgdGhlIGRlY2ltYWwvc2luZ2xlL2RvdWJsZSBmaWVsZHMgYXJlIGZvcm1hdHRlZCBieSByZXR1cm5pbmcgYSBwcm9taXNlLCBzbyB3ZSBtYW5hZ2UgYWxsIHRoZSBjYXNlc1xuXHRcdFx0b3V0RXhwcmVzc2lvbiA9IGdldEZsb2F0Rm9ybWF0KG91dEV4cHJlc3Npb24sIHNOdW1iZXJPZkZyYWN0aW9uYWxEaWdpdHMpO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBvdXRFeHByZXNzaW9uO1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkRmllbGRCaW5kaW5nRXhwcmVzc2lvbiA9IChcblx0b0RhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8RGF0YVBvaW50VHlwZT4sXG5cdGRhdGFQb2ludEZvcm1hdE9wdGlvbnM6IERhdGFQb2ludEZvcm1hdE9wdGlvbnMsXG5cdGJIaWRlTWVhc3VyZTogYm9vbGVhblxuKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gPT4ge1xuXHRjb25zdCBvRGF0YVBvaW50ID0gb0RhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0O1xuXHRjb25zdCBvRGF0YVBvaW50VmFsdWUgPSBvRGF0YVBvaW50Py5WYWx1ZSB8fCBcIlwiO1xuXHRjb25zdCBwcm9wZXJ0eVR5cGUgPSBvRGF0YVBvaW50VmFsdWU/LiR0YXJnZXQ/LnR5cGU7XG5cdGxldCBudW1iZXJPZkZyYWN0aW9uYWxEaWdpdHM7XG5cblx0aWYgKHR5cGVzU3VwcG9ydGluZ051bWJlck9mRnJhY3Rpb25hbERpZ2l0cy5pbmNsdWRlcyhwcm9wZXJ0eVR5cGUpICYmIG9EYXRhUG9pbnQ/LlZhbHVlRm9ybWF0KSB7XG5cdFx0aWYgKG9EYXRhUG9pbnQuVmFsdWVGb3JtYXQuTnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzKSB7XG5cdFx0XHRudW1iZXJPZkZyYWN0aW9uYWxEaWdpdHMgPSBvRGF0YVBvaW50LlZhbHVlRm9ybWF0Lk51bWJlck9mRnJhY3Rpb25hbERpZ2l0cztcblx0XHR9XG5cdH1cblx0Y29uc3Qgb1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoPFByb3BlcnR5PihvRGF0YU1vZGVsUGF0aCwgb0RhdGFQb2ludFZhbHVlLnBhdGgpO1xuXHRjb25zdCBvRGVzY3JpcHRpb24gPSBvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoID8gYnVpbGRFeHByZXNzaW9uRm9yRGVzY3JpcHRpb24ob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCkgOiB1bmRlZmluZWQ7XG5cdGNvbnN0IG9Gb3JtYXR0ZWRWYWx1ZSA9IGdldFZhbHVlRm9ybWF0dGVkKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgsIG9EYXRhUG9pbnRWYWx1ZSwgcHJvcGVydHlUeXBlLCBudW1iZXJPZkZyYWN0aW9uYWxEaWdpdHMpO1xuXHRjb25zdCBzRGlzcGxheU1vZGUgPSBvRGVzY3JpcHRpb24gPyBkYXRhUG9pbnRGb3JtYXRPcHRpb25zPy5kaXNwbGF5TW9kZSB8fCBnZXREaXNwbGF5TW9kZShvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoKSA6IFwiVmFsdWVcIjtcblx0bGV0IG9CaW5kaW5nRXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4gfCB1bmRlZmluZWQ7XG5cdHN3aXRjaCAoc0Rpc3BsYXlNb2RlKSB7XG5cdFx0Y2FzZSBcIkRlc2NyaXB0aW9uXCI6XG5cdFx0XHRvQmluZGluZ0V4cHJlc3Npb24gPSBvRGVzY3JpcHRpb247XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiVmFsdWVEZXNjcmlwdGlvblwiOlxuXHRcdFx0b0JpbmRpbmdFeHByZXNzaW9uID0gZm9ybWF0UmVzdWx0KFtvRm9ybWF0dGVkVmFsdWUsIG9EZXNjcmlwdGlvbl0sIHZhbHVlRm9ybWF0dGVycy5mb3JtYXRXaXRoQnJhY2tldHMpO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcIkRlc2NyaXB0aW9uVmFsdWVcIjpcblx0XHRcdG9CaW5kaW5nRXhwcmVzc2lvbiA9IGZvcm1hdFJlc3VsdChbb0Rlc2NyaXB0aW9uLCBvRm9ybWF0dGVkVmFsdWVdLCB2YWx1ZUZvcm1hdHRlcnMuZm9ybWF0V2l0aEJyYWNrZXRzKTtcblx0XHRcdGJyZWFrO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRpZiAoXG5cdFx0XHRcdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UaW1lem9uZSAmJlxuXHRcdFx0XHRvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC50eXBlID09PSBcIkVkbS5EYXRlVGltZU9mZnNldFwiXG5cdFx0XHQpIHtcblx0XHRcdFx0b0JpbmRpbmdFeHByZXNzaW9uID0gZ2V0QmluZGluZ1dpdGhUaW1lem9uZShvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLCBvRm9ybWF0dGVkVmFsdWUpO1xuXHRcdFx0fSBlbHNlIGlmIChvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uSXNUaW1lem9uZSkge1xuXHRcdFx0XHRvQmluZGluZ0V4cHJlc3Npb24gPSBnZXRCaW5kaW5nRm9yVGltZXpvbmUob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCwgb0Zvcm1hdHRlZFZhbHVlKTtcblx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Py5hbm5vdGF0aW9ucz8uVUk/LkRhdGVUaW1lU3R5bGUgfHxcblx0XHRcdFx0ZGF0YVBvaW50Rm9ybWF0T3B0aW9ucz8uZGF0ZVRpbWVQYXR0ZXJuXG5cdFx0XHQpIHtcblx0XHRcdFx0b0JpbmRpbmdFeHByZXNzaW9uID0gZ2V0QmluZGluZ0ZvckRhdGVGb3JtYXQob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCwgb0Zvcm1hdHRlZFZhbHVlLCBkYXRhUG9pbnRGb3JtYXRPcHRpb25zKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG9CaW5kaW5nRXhwcmVzc2lvbiA9IF9jb21wdXRlQmluZGluZ1dpdGhVbml0T3JDdXJyZW5jeShcblx0XHRcdFx0XHRvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdFx0XHRcdG9Gb3JtYXR0ZWRWYWx1ZSxcblx0XHRcdFx0XHRiSGlkZU1lYXN1cmUgfHwgZGF0YVBvaW50Rm9ybWF0T3B0aW9ucz8ubWVhc3VyZURpc3BsYXlNb2RlID09PSBcIkhpZGRlblwiLFxuXHRcdFx0XHRcdCEhZGF0YVBvaW50Rm9ybWF0T3B0aW9ucz8uc2hvd09ubHlVbml0RGVjaW1hbHNcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0fVxuXHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24ob0JpbmRpbmdFeHByZXNzaW9uKTtcbn07XG5cbmV4cG9ydCBjb25zdCBfY29tcHV0ZUJpbmRpbmdXaXRoVW5pdE9yQ3VycmVuY3kgPSAoXG5cdHByb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eT4sXG5cdGZvcm1hdHRlZFZhbHVlOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPixcblx0aGlkZU1lYXN1cmU6IGJvb2xlYW4sXG5cdHNob3dPbmx5VW5pdERlY2ltYWxzOiBib29sZWFuXG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiA9PiB7XG5cdGlmIChcblx0XHRwcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Py5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LlVuaXQgfHxcblx0XHRwcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Py5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LklTT0N1cnJlbmN5XG5cdCkge1xuXHRcdGlmIChoaWRlTWVhc3VyZSAmJiBoYXNTdGF0aWNQZXJjZW50VW5pdChwcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0KSkge1xuXHRcdFx0cmV0dXJuIGZvcm1hdHRlZFZhbHVlO1xuXHRcdH1cblx0XHRyZXR1cm4gZ2V0QmluZGluZ1dpdGhVbml0T3JDdXJyZW5jeShcblx0XHRcdHByb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0XHRcdGZvcm1hdHRlZFZhbHVlLFxuXHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0aGlkZU1lYXN1cmUgPyB7IHNob3dNZWFzdXJlOiBmYWxzZSB9IDogdW5kZWZpbmVkLFxuXHRcdFx0dHJ1ZSxcblx0XHRcdHNob3dPbmx5VW5pdERlY2ltYWxzXG5cdFx0KTtcblx0fVxuXHRyZXR1cm4gZm9ybWF0dGVkVmFsdWU7XG59O1xuXG4vKipcbiAqIE1ldGhvZCB0byBjYWxjdWxhdGUgdGhlIHBlcmNlbnRhZ2UgdmFsdWUgb2YgUHJvZ3Jlc3MgSW5kaWNhdG9yLiBCYXNpYyBmb3JtdWxhIGlzIFZhbHVlL1RhcmdldCAqIDEwMC5cbiAqIEBwYXJhbSBvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoXG4gKiBAcmV0dXJucyBUaGUgZXhwcmVzc2lvbiBiaW5kaW5nIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBwZXJjZW50YWdlIHZhbHVlLCB3aGljaCBpcyBzaG93biBpbiB0aGUgcHJvZ3Jlc3MgaW5kaWNhdG9yIGJhc2VkIG9uIHRoZSBmb3JtdWxhIGdpdmVuIGFib3ZlLlxuICovXG5leHBvcnQgY29uc3QgYnVpbGRFeHByZXNzaW9uRm9yUHJvZ3Jlc3NJbmRpY2F0b3JQZXJjZW50VmFsdWUgPSAoXG5cdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8RGF0YVBvaW50VHlwZT5cbik6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG5cdGNvbnN0IGZpZWxkVmFsdWUgPSAob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aD8udGFyZ2V0T2JqZWN0Py5WYWx1ZSBhcyBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb248UHJpbWl0aXZlVHlwZT4pIHx8IFwiXCI7XG5cdGNvbnN0IHJlbGF0aXZlTG9jYXRpb24gPSBnZXRSZWxhdGl2ZVBhdGhzKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgpO1xuXHRjb25zdCBmaWVsZFZhbHVlRXhwcmVzc2lvbiA9IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihmaWVsZFZhbHVlLCByZWxhdGl2ZUxvY2F0aW9uKTtcblx0Y29uc3QgdGFyZ2V0RXhwcmVzc2lvbiA9IGdldERhdGFQb2ludFRhcmdldEV4cHJlc3Npb24ob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QsIHJlbGF0aXZlTG9jYXRpb24pO1xuXG5cdGNvbnN0IG9Qcm9wZXJ0eURlZmluaXRpb24gPSBmaWVsZFZhbHVlLiR0YXJnZXQgYXMgUHJvcGVydHk7XG5cdGNvbnN0IHVuaXQgPSBvUHJvcGVydHlEZWZpbml0aW9uLmFubm90YXRpb25zPy5NZWFzdXJlcz8uVW5pdCB8fCBvUHJvcGVydHlEZWZpbml0aW9uLmFubm90YXRpb25zPy5NZWFzdXJlcz8uSVNPQ3VycmVuY3k7XG5cdGlmICh1bml0KSB7XG5cdFx0Y29uc3QgdW5pdEJpbmRpbmdFeHByZXNzaW9uID0gZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKHVuaXQsIHJlbGF0aXZlTG9jYXRpb24pO1xuXG5cdFx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0Zm9ybWF0UmVzdWx0KFtmaWVsZFZhbHVlRXhwcmVzc2lvbiwgdGFyZ2V0RXhwcmVzc2lvbiwgdW5pdEJpbmRpbmdFeHByZXNzaW9uXSwgdmFsdWVGb3JtYXR0ZXJzLmNvbXB1dGVQZXJjZW50YWdlKVxuXHRcdCk7XG5cdH1cblxuXHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oZm9ybWF0UmVzdWx0KFtmaWVsZFZhbHVlRXhwcmVzc2lvbiwgdGFyZ2V0RXhwcmVzc2lvbiwgXCJcIl0sIHZhbHVlRm9ybWF0dGVycy5jb21wdXRlUGVyY2VudGFnZSkpO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQThCQSxNQUFNQSx1Q0FBdUMsR0FBRyxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsYUFBYSxDQUFDO0VBVTNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsTUFBTUMsNEJBQTRCLEdBQUdBLENBQ3BDQyxjQUF5QyxFQUN6Q0MsZ0JBQTBCLEtBQ1k7SUFDdEMsT0FBT0QsY0FBYyxFQUFFRSxXQUFXLEdBQUdDLDJCQUEyQixDQUFDSCxjQUFjLENBQUNFLFdBQVcsRUFBRUQsZ0JBQWdCLENBQUMsR0FBR0csc0JBQXNCO0VBQ3hJLENB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
|
|
@@ -170,8 +170,12 @@ const getFloatFormat = (
|
|
|
170
170
|
}
|
|
171
171
|
outExpression.formatOptions = Object.assign(outExpression.formatOptions, {
|
|
172
172
|
preserveDecimals: false,
|
|
173
|
-
maxFractionDigits: numberOfFractionalDigits
|
|
173
|
+
maxFractionDigits: numberOfFractionalDigits,
|
|
174
|
+
minFractionDigits: numberOfFractionalDigits
|
|
174
175
|
});
|
|
176
|
+
//we need to ignore the constraints otherwise the scale mess up the formatting by adding trailing zeros
|
|
177
|
+
// 1.234 with maxFractionDigits 2 and scale 4 will become 1.2300
|
|
178
|
+
outExpression.constraints = {};
|
|
175
179
|
}
|
|
176
180
|
return outExpression;
|
|
177
181
|
};
|
|
@@ -24,7 +24,7 @@ sap.ui.define(["sap/base/Log", "sap/f/library", "sap/fe/controls/library", "sap/
|
|
|
24
24
|
controls: [],
|
|
25
25
|
elements: [],
|
|
26
26
|
// eslint-disable-next-line no-template-curly-in-string
|
|
27
|
-
version: "1.139.
|
|
27
|
+
version: "1.139.4",
|
|
28
28
|
noLibraryCSS: true,
|
|
29
29
|
extensions: {
|
|
30
30
|
flChangeHandlers: {
|
|
@@ -203,11 +203,13 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/core/templatin
|
|
|
203
203
|
* @param controlInstance This could be a table, chart, or filter bar
|
|
204
204
|
* @param selectionVariant The selection variant to apply to the respective mdc controls
|
|
205
205
|
* @param prefillDescriptions Optional. If true, we will use the associated text property values (if they're available in the selectionVariant) to display the filter value descriptions, instead of loading them from the backend
|
|
206
|
+
* @param fromNavigationParameters Optional. If true, the selection variant is assumed to come from navigation parameters. In this case, if the selection variant contains select options for properties that are not present in the filter bar, these select options will be ignored and will not lead to clearing the filter bar.
|
|
206
207
|
* @returns A promise for asynchronous handling
|
|
207
208
|
* @public
|
|
208
209
|
*/
|
|
209
210
|
async setSelectionVariantToMdcControl(controlInstance, selectionVariant) {
|
|
210
211
|
let prefillDescriptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
212
|
+
let fromNavigationParameters = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
211
213
|
try {
|
|
212
214
|
const state = await StateUtil.retrieveExternalState(controlInstance);
|
|
213
215
|
if (!state.filter) {
|
|
@@ -215,6 +217,14 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/core/templatin
|
|
|
215
217
|
return;
|
|
216
218
|
}
|
|
217
219
|
const conditions = await this.convertSelectionVariantToStateFilters(controlInstance, selectionVariant, prefillDescriptions, controlInstance?.getModel());
|
|
220
|
+
if (fromNavigationParameters && selectionVariant.getSelectOptionsPropertyNames().length > 0 && Object.keys(conditions).length === 0) {
|
|
221
|
+
// If the selection variant has select options but no conditions could be mapped to the filter bar, we return an empty array
|
|
222
|
+
// This is to avoid clearing the filter bar in this case
|
|
223
|
+
// This can happen if the selection variant has only parameters or select options for properties not present in the filter bar
|
|
224
|
+
// In this case, we assume that the selection variant is not meant to clear the filter bar
|
|
225
|
+
// and we do not apply it
|
|
226
|
+
return undefined;
|
|
227
|
+
}
|
|
218
228
|
|
|
219
229
|
// Clear filter of table before applying selection variant
|
|
220
230
|
await this.clearFilterValues(controlInstance?.getParent());
|
|
@@ -257,4 +267,4 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/core/templatin
|
|
|
257
267
|
};
|
|
258
268
|
return StateHelper;
|
|
259
269
|
}, false);
|
|
260
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTdGF0ZUhlbHBlciIsImdldFNlbGVjdGlvblZhcmlhbnQiLCJjb250cm9sIiwiY29udHJvbFN0YXRlIiwiU3RhdGVVdGlsIiwicmV0cmlldmVFeHRlcm5hbFN0YXRlIiwiY29udHJvbE9iamVjdCIsImZpbHRlciIsInBhcmFtZXRlcnMiLCJnZXRQYXJlbnQiLCJpc0EiLCJnZXRQYXJhbWV0ZXJzIiwidW5kZWZpbmVkIiwic2VsZWN0aW9uVmFyaWFudCIsIlN0YXRlRmlsdGVyc1RvU2VsZWN0aW9uVmFyaWFudCIsImdldFNlbGVjdGlvblZhcmlhbnRGcm9tQ29uZGl0aW9ucyIsImdldFByb3BlcnR5SGVscGVyIiwiZXh0ZXJuYWxTViIsIlNlbGVjdGlvblZhcmlhbnQiLCJzZWxlY3RPcHRpb25zIiwiX2dldFNlbGVjdE9wdGlvbnMiLCJwcm9wZXJ0eSIsIm1hc3NBZGRTZWxlY3RPcHRpb24iLCJzcGxpdCIsImVycm9yIiwiaWQiLCJnZXRJZCIsIm1lc3NhZ2UiLCJFcnJvciIsIlN0cmluZyIsIkxvZyIsImNvbnZlcnRTZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMiLCJwcmVmaWxsRGVzY3JpcHRpb25zIiwibW9kZWwiLCJwcm9wZXJ0eUluZm9zIiwiX2dldFN1cHBvcnRlZEZpbHRlckZpZWxkcyIsImxlbmd0aCIsImZpbHRlckJhckluZm9Gb3JDb252ZXJzaW9uIiwiX2dldENvbnRyb2xJbmZvRm9yQ29udmVyc2lvbiIsIm1ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsImNvcHlvZlByb3BlcnR5SW5mb3MiLCJKU09OIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJ1cGRhdGVkUHJvcGVydHlJbmZvcyIsIl91cGRhdGVQcm9wZXJ0eUluZm9Ub1N1cHBvcnRTViIsImNvbmRpdGlvbnMiLCJzdlRvU3RhdGVGaWx0ZXJzIiwiZ2V0U3RhdGVGaWx0ZXJzRnJvbVNWIiwiZ2V0TW9kZWwiLCJjb250ZXh0UGF0aCIsImRhdGEiLCJ1c2VTZW1hbnRpY0RhdGVSYW5nZSIsInZpZXdEYXRhSW5zdGFuY2UiLCJ2aWV3RGF0YSIsImdldERhdGEiLCJjb25maWciLCJjb250cm9sQ29uZmlndXJhdGlvbiIsInNlbGVjdGlvbkZpZWxkc0NvbmZpZ3MiLCJmaWx0ZXJGaWVsZHNDb25maWciLCJmaWx0ZXJGaWVsZHMiLCJnZXRFbmhhbmNlZEZldGNoZWRQcm9wZXJ0eUluZm9zIiwid2FpdEZvckluaXRpYWxpemF0aW9uIiwiZ2V0Q29udHJvbERlbGVnYXRlIiwiZmV0Y2hGaWx0ZXJQcm9wZXJ0aWVzIiwiYXdhaXRDb250cm9sRGVsZWdhdGUiLCJmZXRjaFByb3BlcnRpZXMiLCJjbGVhckZpbHRlclZhbHVlcyIsImNvbnRyb2xJbnN0YW5jZSIsIl9jbGVhckZpbHRlclZhbHVlc1dpdGhPcHRpb25zIiwiY29udGVudCIsImZpcmVFdmVudCIsIm9wdGlvbnMiLCJzdGF0ZSIsImVkaXRTdGF0ZVBhdGgiLCJjdXJyZW50RWRpdFN0YXRlQ29uZGl0aW9uIiwiZWRpdFN0YXRlRGVmYXVsdFZhbHVlIiwiY3VycmVudEVkaXRTdGF0ZUlzRGVmYXVsdCIsInNob3VsZENsZWFyRWRpdEZpbHRlciIsIkRyYWZ0RWRpdFN0YXRlIiwiQUxMIiwiZGVlcENsb25lIiwidmFsdWVzIiwiT2JqZWN0Iiwia2V5cyIsImNsZWFyRWRpdEZpbHRlciIsImNvbmRpdGlvblBhdGgiLCJjb25kaXRpb24iLCJmaWx0ZXJlZCIsImFwcGx5RXh0ZXJuYWxTdGF0ZSIsImNsZWFuVXBBbGxGaWx0ZXJGaWVsZHNJbkVycm9yU3RhdGUiLCJmb3JFYWNoIiwicHJvcGVydHlJbmZvIiwibmFtZSIsIlByb3BlcnR5SGVscGVyIiwiaGFzVmFsdWVIZWxwIiwiZ2V0UHJvcGVydHkiLCJwYXRoIiwiZ2V0UHJvcGVydHlEYXRhTW9kZWwiLCJ0YXJnZXRPYmplY3QiLCJ0eXBlQ29uZmlnIiwiY2xhc3NOYW1lIiwiZGF0YVR5cGUiLCJzZXRTZWxlY3Rpb25WYXJpYW50VG9NZGNDb250cm9sIiwiYXJndW1lbnRzIiwic3RhdGVUb0FwcGx5IiwiZ2V0U3RhdGVUb0FwcGx5IiwiY29udmVydENvbmRpdGlvbnNGb3JDaGFydCIsImRpZmZTdGF0ZSIsImFwcGx5U3RhdGVSZXN1bHQiLCJlcnIiLCJhc3NpZ24iLCJpdGVtcyIsInByb3BlcnR5T2JqIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJTdGF0ZUhlbHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBkZWVwQ2xvbmUgZnJvbSBcInNhcC9iYXNlL3V0aWwvZGVlcENsb25lXCI7XG5pbXBvcnQgdHlwZSB7IFZpZXdEYXRhIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1RlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0ICogYXMgUHJvcGVydHlIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlIZWxwZXJcIjtcbmltcG9ydCB0eXBlIFRhYmxlQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL1RhYmxlXCI7XG5pbXBvcnQgRHJhZnRFZGl0U3RhdGUgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0RyYWZ0RWRpdFN0YXRlXCI7XG5pbXBvcnQgdHlwZSBGaWx0ZXJCYXJBUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0ZpbHRlckJhckFQSVwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eUluZm8gfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC9Qcm9wZXJ0eUluZm9cIjtcbmltcG9ydCB0eXBlIHsgQ29udmVyc2lvbkluZm8gfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9tZGMvYWRhcHRlci9TZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnNcIjtcbmltcG9ydCBzdlRvU3RhdGVGaWx0ZXJzIGZyb20gXCJzYXAvZmUvbWFjcm9zL21kYy9hZGFwdGVyL1NlbGVjdGlvblZhcmlhbnRUb1N0YXRlRmlsdGVyc1wiO1xuaW1wb3J0IFN0YXRlRmlsdGVyc1RvU2VsZWN0aW9uVmFyaWFudCBmcm9tIFwic2FwL2ZlL21hY3Jvcy9tZGMvYWRhcHRlci9TdGF0ZUZpbHRlclRvU2VsZWN0aW9uVmFyaWFudFwiO1xuaW1wb3J0IHR5cGUgeyBFeHRlcm5hbFN0YXRlVHlwZSB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL3ZhbHVlaGVscC9WYWx1ZUhlbHBEZWxlZ2F0ZVwiO1xuaW1wb3J0IFNlbGVjdGlvblZhcmlhbnQgZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL1NlbGVjdGlvblZhcmlhbnRcIjtcbmltcG9ydCB0eXBlIENvcmVDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBDaGFydCBmcm9tIFwic2FwL3VpL21kYy9DaGFydFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL21kYy9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBGaWx0ZXJCYXIgZnJvbSBcInNhcC91aS9tZGMvRmlsdGVyQmFyXCI7XG5pbXBvcnQgdHlwZSBUYWJsZSBmcm9tIFwic2FwL3VpL21kYy9UYWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBTdGF0ZVRvQXBwbHksIEZpbHRlciBhcyBTdGF0ZVV0aWxGaWx0ZXIgfSBmcm9tIFwic2FwL3VpL21kYy9wMTNuL1N0YXRlVXRpbFwiO1xuaW1wb3J0IFN0YXRlVXRpbCBmcm9tIFwic2FwL3VpL21kYy9wMTNuL1N0YXRlVXRpbFwiO1xuaW1wb3J0IHR5cGUgTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIENoYXJ0VHlwZSBmcm9tIFwiLi4vLi4vQ2hhcnRcIjtcbmltcG9ydCB0eXBlIE1hY3JvQVBJIGZyb20gXCIuLi8uLi9NYWNyb0FQSVwiO1xuXG4vKipcbiAqIFRoaXMgaXMgdG8gZXh0ZW5kIE1EQyBjb250cm9sIEFQSXMgZm9yIGZpbHRlciwgdGFibGUsIGNoYXJ0IGJ1aWxkaW5nIGJsb2Nrcy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5jb25zdCBTdGF0ZUhlbHBlciA9IHtcblx0LyoqXG5cdCAqIEdldHMgc2VsZWN0aW9uIHZhcmlhbnQgZnJvbSB0aGUgbWRjIGNvbnRyb2wuXG5cdCAqIEBwYXJhbSBjb250cm9sIFRoZSBjb250cm9sIGZvciB3aGljaCBTZWxlY3Rpb24gVmFyaWFudCBpcyB0byBiZSBmZXRjaGVkXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB3aGljaCByZXNvbHZlcyB3aXRoIGEge0BsaW5rIHNhcC5mZS5uYXZpZ2F0aW9uLlNlbGVjdGlvblZhcmlhbnR9XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFzeW5jIGdldFNlbGVjdGlvblZhcmlhbnQoY29udHJvbDogQ29yZUNvbnRyb2wgfCB1bmRlZmluZWQpOiBQcm9taXNlPFNlbGVjdGlvblZhcmlhbnQ+IHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgY29udHJvbFN0YXRlID0gYXdhaXQgU3RhdGVVdGlsLnJldHJpZXZlRXh0ZXJuYWxTdGF0ZShjb250cm9sIGFzIENvbnRyb2wpO1xuXHRcdFx0Y29uc3QgY29udHJvbE9iamVjdCA9IGNvbnRyb2xTdGF0ZS5maWx0ZXIgYXMgU3RhdGVVdGlsRmlsdGVyO1xuXHRcdFx0bGV0IHBhcmFtZXRlcnM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkID0gW107XG5cdFx0XHRpZiAoXG5cdFx0XHRcdGNvbnRyb2w/LmdldFBhcmVudCgpPy5pc0EoXCJzYXAuZmUubWFjcm9zLmZpbHRlckJhci5GaWx0ZXJCYXJBUElcIikgJiZcblx0XHRcdFx0KGNvbnRyb2wuZ2V0UGFyZW50KCkgYXMgRmlsdGVyQmFyQVBJKS5nZXRQYXJhbWV0ZXJzICE9PSB1bmRlZmluZWRcblx0XHRcdCkge1xuXHRcdFx0XHRwYXJhbWV0ZXJzID0gKGNvbnRyb2wuZ2V0UGFyZW50KCkgYXMgRmlsdGVyQmFyQVBJKS5nZXRQYXJhbWV0ZXJzKCk7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBzZWxlY3Rpb25WYXJpYW50ID0gU3RhdGVGaWx0ZXJzVG9TZWxlY3Rpb25WYXJpYW50LmdldFNlbGVjdGlvblZhcmlhbnRGcm9tQ29uZGl0aW9ucyhcblx0XHRcdFx0Y29udHJvbE9iamVjdCxcblx0XHRcdFx0KGNvbnRyb2wgYXMgQ29udHJvbCkuZ2V0UHJvcGVydHlIZWxwZXIoKSxcblx0XHRcdFx0cGFyYW1ldGVyc1xuXHRcdFx0KTtcblx0XHRcdGlmIChjb250cm9sPy5pc0EoXCJzYXAudWkubWRjLkNoYXJ0XCIpKSB7XG5cdFx0XHRcdGNvbnN0IGV4dGVybmFsU1YgPSBuZXcgU2VsZWN0aW9uVmFyaWFudCgpO1xuXHRcdFx0XHRjb25zdCBzZWxlY3RPcHRpb25zID0gc2VsZWN0aW9uVmFyaWFudC5fZ2V0U2VsZWN0T3B0aW9ucygpO1xuXHRcdFx0XHRmb3IgKGNvbnN0IHByb3BlcnR5IGluIHNlbGVjdE9wdGlvbnMpIHtcblx0XHRcdFx0XHRleHRlcm5hbFNWLm1hc3NBZGRTZWxlY3RPcHRpb24ocHJvcGVydHkuc3BsaXQoXCJfZmVfZ3JvdXBhYmxlX1wiKVsxXSwgc2VsZWN0T3B0aW9uc1twcm9wZXJ0eV0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBleHRlcm5hbFNWO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIHNlbGVjdGlvblZhcmlhbnQ7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcblx0XHRcdGNvbnN0IGlkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBjb250cm9sPy5nZXRJZCgpO1xuXHRcdFx0Y29uc3QgbWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKTtcblx0XHRcdExvZy5lcnJvcihgQnVpbGRpbmcgQmxvY2sgKCR7aWR9KSAtIGdldCBzZWxlY3Rpb24gdmFyaWFudCBmYWlsZWQgOiAke21lc3NhZ2V9YCk7XG5cdFx0XHR0aHJvdyBFcnJvcihtZXNzYWdlKTtcblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIENvbnZlcnQgc2VsZWN0aW9uIHZhcmlhbnQgdG8gY29uZGl0aW9ucy5cblx0ICogQHBhcmFtIGNvbnRyb2wgQ29udHJvbCBjYW4gYmUgYSB0YWJsZSwgY2hhcnQgb3IgZmlsdGVyIGJhclxuXHQgKiBAcGFyYW0gc2VsZWN0aW9uVmFyaWFudCBUaGUgc2VsZWN0aW9uIHZhcmlhbnQgdG8gYXBwbHkgdG8gdGhlIHRhYmxlIG9yIGNoYXJ0IG9yIGZpbHRlciBiYXIuXG5cdCAqIEBwYXJhbSBwcmVmaWxsRGVzY3JpcHRpb25zIElmIHRydWUsIHdlIHRyeSB0byBmaW5kIHRoZSBhc3NvY2lhdGVkIFRleHQgdmFsdWUgZm9yIGVhY2ggcHJvcGVydHkgaW4gdGhlIHNlbGVjdGlvblZhcmlhbnQgKHRvIGF2b2lkIGZldGNoaW5nIGl0IGZyb20gdGhlIHNlcnZlcilcblx0ICogQHBhcmFtIG1vZGVsIFRoZSBjb250cm9sIG1vZGVsXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSByZXNvbHZpbmcgdG8gY29uZGl0aW9uc1xuXHQgKi9cblx0YXN5bmMgY29udmVydFNlbGVjdGlvblZhcmlhbnRUb1N0YXRlRmlsdGVycyhcblx0XHRjb250cm9sOiBDb250cm9sLFxuXHRcdHNlbGVjdGlvblZhcmlhbnQ6IFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0cHJlZmlsbERlc2NyaXB0aW9uczogYm9vbGVhbixcblx0XHRtb2RlbD86IE1vZGVsXG5cdCk6IFByb21pc2U8U3RhdGVVdGlsRmlsdGVyPiB7XG5cdFx0Ly8gTm90ZTogVGhpcyBtZXRob2QgaXMgcHJpdmF0ZSBhbmQgcmVzdHJpY3RlZCB0byB1c2FnZSBieSBzYXAuZmUoVmlld1N0YXRlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uKSBmb3IgZmlsdGVyIGJhci8gY2hhcnQgLyB0YWJsZSBzdGF0ZSBzY2VuYXJpb3MuXG5cdFx0Y29uc3QgcHJvcGVydHlJbmZvcyA9IGF3YWl0IHRoaXMuX2dldFN1cHBvcnRlZEZpbHRlckZpZWxkcyhjb250cm9sKTtcblxuXHRcdGlmICghcHJvcGVydHlJbmZvcy5sZW5ndGgpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIk5vIHZhbGlkIG1ldGFkYXRhIHByb3BlcnRpZXMgcHJlc2VudCBmb3IgZmlsdGVyIGJhclwiKTtcblx0XHR9XG5cblx0XHRjb25zdCBmaWx0ZXJCYXJJbmZvRm9yQ29udmVyc2lvbiA9IHRoaXMuX2dldENvbnRyb2xJbmZvRm9yQ29udmVyc2lvbihjb250cm9sKTtcblx0XHRjb25zdCBtZXRhTW9kZWwgPSBtb2RlbD8uZ2V0TWV0YU1vZGVsKCkgYXMgT0RhdGFNZXRhTW9kZWw7XG5cdFx0Y29uc3QgY29weW9mUHJvcGVydHlJbmZvcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocHJvcGVydHlJbmZvcykpO1xuXHRcdGNvbnN0IHVwZGF0ZWRQcm9wZXJ0eUluZm9zID0gdGhpcy5fdXBkYXRlUHJvcGVydHlJbmZvVG9TdXBwb3J0U1YoY29udHJvbCwgY29weW9mUHJvcGVydHlJbmZvcyk7XG5cdFx0Y29uc3QgY29uZGl0aW9uczogU3RhdGVVdGlsRmlsdGVyID0gc3ZUb1N0YXRlRmlsdGVycy5nZXRTdGF0ZUZpbHRlcnNGcm9tU1YoXG5cdFx0XHRzZWxlY3Rpb25WYXJpYW50LFxuXHRcdFx0ZmlsdGVyQmFySW5mb0ZvckNvbnZlcnNpb24sXG5cdFx0XHR1cGRhdGVkUHJvcGVydHlJbmZvcyA/PyBjb3B5b2ZQcm9wZXJ0eUluZm9zLFxuXHRcdFx0cHJlZmlsbERlc2NyaXB0aW9ucyxcblx0XHRcdG1ldGFNb2RlbFxuXHRcdCk7XG5cblx0XHRyZXR1cm4gY29uZGl0aW9ucztcblx0fSxcblxuXHQvKipcblx0ICogR2V0IHRoZSBmaWx0ZXIgaW5mb3JtYXRpb24gbmVlZGVkIGZvciB0aGUgY29udmVyc2lvbiBvZiBzZWxlY3Rpb24gdmFyaWFudCB0byBjb25kaXRpb25zLlxuXHQgKiBAcGFyYW0gY29udHJvbCBUaGlzIGNhbiBiZSBhIHRhYmxlLCBjaGFydCwgb3IgZmlsdGVyYmFyXG5cdCAqIEByZXR1cm5zIFRoZSBjb250cm9sIGluZm9ybWF0aW9uIChtZXRhTW9kZWwsIGNvbnRleHRQYXRoLCB1c2Ugb2Ygc2VtYW50aWMgZGF0ZSByYW5nZSwgYWxsIGZpbHRlciBmaWVsZHMgY29uZmlnKVxuXHQgKi9cblx0X2dldENvbnRyb2xJbmZvRm9yQ29udmVyc2lvbihjb250cm9sOiBDb250cm9sKTogQ29udmVyc2lvbkluZm8ge1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IGNvbnRyb2wuZ2V0TW9kZWwoKT8uZ2V0TWV0YU1vZGVsKCkgYXMgT0RhdGFNZXRhTW9kZWwsXG5cdFx0XHRjb250ZXh0UGF0aCA9IGNvbnRyb2wuZGF0YShcImVudGl0eVR5cGVcIikgYXMgc3RyaW5nO1xuXHRcdGlmIChjb250cm9sLmlzQShcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuRmlsdGVyQmFyXCIpKSB7XG5cdFx0XHRjb25zdCB1c2VTZW1hbnRpY0RhdGVSYW5nZTogYm9vbGVhbiA9XG5cdFx0XHRcdFx0Y29udHJvbC5kYXRhKFwidXNlU2VtYW50aWNEYXRlUmFuZ2VcIikgPT09IFwidHJ1ZVwiIHx8IGNvbnRyb2wuZGF0YShcInVzZVNlbWFudGljRGF0ZVJhbmdlXCIpID09PSB0cnVlLFxuXHRcdFx0XHR2aWV3RGF0YUluc3RhbmNlID0gY29udHJvbC5nZXRNb2RlbChcInZpZXdEYXRhXCIpIGFzIEpTT05Nb2RlbCxcblx0XHRcdFx0dmlld0RhdGEgPSB2aWV3RGF0YUluc3RhbmNlLmdldERhdGEoKSBhcyBWaWV3RGF0YSxcblx0XHRcdFx0Y29uZmlnID0gdmlld0RhdGE/LmNvbnRyb2xDb25maWd1cmF0aW9uLFxuXHRcdFx0XHRzZWxlY3Rpb25GaWVsZHNDb25maWdzID0gY29uZmlnPy5bXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuU2VsZWN0aW9uRmllbGRzXCJdLFxuXHRcdFx0XHRmaWx0ZXJGaWVsZHNDb25maWcgPSBzZWxlY3Rpb25GaWVsZHNDb25maWdzPy5maWx0ZXJGaWVsZHM7XG5cdFx0XHRyZXR1cm4geyBtZXRhTW9kZWwsIGNvbnRleHRQYXRoLCB1c2VTZW1hbnRpY0RhdGVSYW5nZSwgZmlsdGVyRmllbGRzQ29uZmlnLCBzZWxlY3Rpb25GaWVsZHNDb25maWdzIH07XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB7IG1ldGFNb2RlbCwgY29udGV4dFBhdGggfTtcblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdldCBzdXBwb3J0ZWQgZmlsdGVyIGZpZWxkIHByb3BlcnRpZXMgZnJvbSB0aGUgdGFibGUsIGNoYXJ0LCBvciBmaWx0ZXIgYmFyLlxuXHQgKiBAcGFyYW0gY29udHJvbCBDb250cm9sIGNhbiBiZSBhIHRhYmxlLCBjaGFydCwgb3IgZmlsdGVyIGJhclxuXHQgKiBAcmV0dXJucyBTdXBwb3J0ZWQgZmlsdGVyIGZpZWxkcy5cblx0ICovXG5cdGFzeW5jIF9nZXRTdXBwb3J0ZWRGaWx0ZXJGaWVsZHMoY29udHJvbDogQ29udHJvbCk6IFByb21pc2U8Q29udHJvbFByb3BlcnR5SW5mb1tdPiB7XG5cdFx0aWYgKChjb250cm9sIGFzIFRhYmxlKS5pc0EoXCJzYXAudWkubWRjLlRhYmxlXCIpKSB7XG5cdFx0XHRyZXR1cm4gKChjb250cm9sIGFzIFRhYmxlKS5nZXRQYXJlbnQoKSBhcyBUYWJsZUFQSSkuZ2V0RW5oYW5jZWRGZXRjaGVkUHJvcGVydHlJbmZvcygpIGFzIHVua25vd24gYXMgQ29udHJvbFByb3BlcnR5SW5mb1tdO1xuXHRcdH0gZWxzZSBpZiAoY29udHJvbC5pc0EoXCJzYXAudWkubWRjLkZpbHRlcmJhclwiKSkge1xuXHRcdFx0YXdhaXQgKGNvbnRyb2wgYXMgRmlsdGVyQmFyKS53YWl0Rm9ySW5pdGlhbGl6YXRpb24oKTtcblx0XHRcdHJldHVybiAoY29udHJvbCBhcyBGaWx0ZXJCYXIpLmdldENvbnRyb2xEZWxlZ2F0ZSgpLmZldGNoRmlsdGVyUHJvcGVydGllcyhjb250cm9sKTtcblx0XHR9IGVsc2UgaWYgKChjb250cm9sIGFzIEZpbHRlckJhcikuaXNBKFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5GaWx0ZXJCYXJcIikpIHtcblx0XHRcdHJldHVybiAoY29udHJvbCBhcyBGaWx0ZXJCYXIpLmdldENvbnRyb2xEZWxlZ2F0ZSgpLmZldGNoRmlsdGVyUHJvcGVydGllcyhjb250cm9sKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0YXdhaXQgKGNvbnRyb2wgYXMgVGFibGUgfCBDaGFydCkuYXdhaXRDb250cm9sRGVsZWdhdGUoKTtcblx0XHR9XG5cdFx0cmV0dXJuIChjb250cm9sIGFzIFRhYmxlIHwgQ2hhcnQgfCBGaWx0ZXJCYXIpLmdldENvbnRyb2xEZWxlZ2F0ZSgpLmZldGNoUHJvcGVydGllcyhjb250cm9sKTtcblx0fSxcblxuXHQvKipcblx0ICogQ2xlYXJzIGFsbCBpbnB1dCB2YWx1ZXMgb2YgdmlzaWJsZSBmaWx0ZXIgZmllbGRzIGluIHRoZSB0YWJsZSwgY2hhcnQsIG9yIGZpbHRlciBiYXIuXG5cdCAqIEBwYXJhbSBjb250cm9sSW5zdGFuY2UgVGhpcyBjYW4gYmUgYSBmaWx0ZXIgYmFyLCBjaGFydCwgb3IgdGFibGUuXG5cdCAqL1xuXHRhc3luYyBjbGVhckZpbHRlclZhbHVlcyhjb250cm9sSW5zdGFuY2U6IE1hY3JvQVBJKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0YXdhaXQgdGhpcy5fY2xlYXJGaWx0ZXJWYWx1ZXNXaXRoT3B0aW9ucyhjb250cm9sSW5zdGFuY2UuY29udGVudCBhcyBDb250cm9sKTtcblx0XHQvLyBBbGxvdyBhcHAgZGV2ZWxvcGVycyB0byB1cGRhdGUgZmlsdGVycyBhZnRlciBjbGVhcmluZ1xuXHRcdGNvbnRyb2xJbnN0YW5jZS5maXJlRXZlbnQoXCJhZnRlckNsZWFyXCIpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBDbGVhcnMgYWxsIGlucHV0IHZhbHVlcyBvZiB2aXNpYmxlIGZpbHRlciBmaWVsZHMgaW4gdGhlIHRhYmxlLCBjaGFydCwgb3IgZmlsdGVyIGJhci5cblx0ICogQHBhcmFtIGNvbnRyb2wgVGhpcyBjYW4gYmUgYSB0YWJsZSwgY2hhcnQsIG9yIGZpbHRlciBiYXJcblx0ICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgZmlsdGVyaW5nIHRoZSBmaWx0ZXIgYmFyXG5cdCAqIEBwYXJhbSBvcHRpb25zLmNsZWFyRWRpdEZpbHRlciBXaGV0aGVyIHRvIGNsZWFyIHRoZSBlZGl0IGZpbHRlciBvciByZXRhaW4gdGhlIGRlZmF1bHQgdmFsdWUgJ0FsbCdcblx0ICovXG5cdGFzeW5jIF9jbGVhckZpbHRlclZhbHVlc1dpdGhPcHRpb25zKGNvbnRyb2w6IENvbnRyb2wsIG9wdGlvbnM/OiB7IGNsZWFyRWRpdEZpbHRlcjogYm9vbGVhbiB9KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKCFjb250cm9sKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IHN0YXRlOiBFeHRlcm5hbFN0YXRlVHlwZSA9IGF3YWl0IFN0YXRlVXRpbC5yZXRyaWV2ZUV4dGVybmFsU3RhdGUoY29udHJvbCk7XG5cdFx0bGV0IGVkaXRTdGF0ZVBhdGggPSBcIlwiLFxuXHRcdFx0Y3VycmVudEVkaXRTdGF0ZUNvbmRpdGlvbixcblx0XHRcdGVkaXRTdGF0ZURlZmF1bHRWYWx1ZSxcblx0XHRcdGN1cnJlbnRFZGl0U3RhdGVJc0RlZmF1bHQ6IGJvb2xlYW4gfCB1bmRlZmluZWQsXG5cdFx0XHRzaG91bGRDbGVhckVkaXRGaWx0ZXI6IHVuZGVmaW5lZCB8IGJvb2xlYW47XG5cdFx0aWYgKGNvbnRyb2wuaXNBPEZpbHRlckJhcj4oXCJzYXAudWkubWRjLkZpbHRlckJhclwiKSkge1xuXHRcdFx0ZWRpdFN0YXRlUGF0aCA9IFwiJGVkaXRTdGF0ZVwiO1xuXHRcdFx0ZWRpdFN0YXRlRGVmYXVsdFZhbHVlID0gRHJhZnRFZGl0U3RhdGUuQUxMLmlkO1xuXHRcdFx0Y3VycmVudEVkaXRTdGF0ZUNvbmRpdGlvbiA9IGRlZXBDbG9uZShzdGF0ZS5maWx0ZXJbZWRpdFN0YXRlUGF0aF0/LlswXSk7XG5cdFx0XHRjdXJyZW50RWRpdFN0YXRlSXNEZWZhdWx0ID0gY3VycmVudEVkaXRTdGF0ZUNvbmRpdGlvbj8udmFsdWVzWzBdID09PSBlZGl0U3RhdGVEZWZhdWx0VmFsdWU7XG5cdFx0XHRzaG91bGRDbGVhckVkaXRGaWx0ZXIgPSBvcHRpb25zICYmIE9iamVjdC5rZXlzKG9wdGlvbnMpLmxlbmd0aCA+IDAgJiYgb3B0aW9ucy5jbGVhckVkaXRGaWx0ZXI7XG5cdFx0fVxuXG5cdFx0Ly8gQ2xlYXIgYWxsIGNvbmRpdGlvbnNcblx0XHRmb3IgKGNvbnN0IGNvbmRpdGlvblBhdGggb2YgT2JqZWN0LmtleXMoc3RhdGUuZmlsdGVyKSkge1xuXHRcdFx0aWYgKCFzaG91bGRDbGVhckVkaXRGaWx0ZXIgJiYgY29uZGl0aW9uUGF0aCA9PT0gZWRpdFN0YXRlUGF0aCAmJiBjdXJyZW50RWRpdFN0YXRlSXNEZWZhdWx0KSB7XG5cdFx0XHRcdC8vIERvIG5vdCBjbGVhciBlZGl0IHN0YXRlIGNvbmRpdGlvbiBpZiBpdCBpcyBhbHJlYWR5IFwiQUxMXCJcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRmb3IgKGNvbnN0IGNvbmRpdGlvbiBvZiBzdGF0ZS5maWx0ZXJbY29uZGl0aW9uUGF0aF0pIHtcblx0XHRcdFx0Y29uZGl0aW9uLmZpbHRlcmVkID0gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGF3YWl0IFN0YXRlVXRpbC5hcHBseUV4dGVybmFsU3RhdGUoY29udHJvbCwgeyBmaWx0ZXI6IHN0YXRlLmZpbHRlciB9KTtcblxuXHRcdGlmIChjb250cm9sLmlzQTxGaWx0ZXJCYXI+KFwic2FwLnVpLm1kYy5GaWx0ZXJCYXJcIikpIHtcblx0XHRcdC8vIFNldCBlZGl0IHN0YXRlIHRvICdBTEwnIGlmIGl0IHdhc24ndCBiZWZvcmVcblx0XHRcdGlmICghc2hvdWxkQ2xlYXJFZGl0RmlsdGVyICYmIGN1cnJlbnRFZGl0U3RhdGVDb25kaXRpb24gJiYgIWN1cnJlbnRFZGl0U3RhdGVJc0RlZmF1bHQpIHtcblx0XHRcdFx0Y3VycmVudEVkaXRTdGF0ZUNvbmRpdGlvbi52YWx1ZXMgPSBbZWRpdFN0YXRlRGVmYXVsdFZhbHVlXTtcblx0XHRcdFx0YXdhaXQgU3RhdGVVdGlsLmFwcGx5RXh0ZXJuYWxTdGF0ZShjb250cm9sLCB7IGZpbHRlcjogeyBbZWRpdFN0YXRlUGF0aF06IFtjdXJyZW50RWRpdFN0YXRlQ29uZGl0aW9uXSB9IH0pO1xuXHRcdFx0fVxuXG5cdFx0XHQvL2NsZWFyIGZpbHRlciBmaWVsZHMgaW4gZXJyb3Igc3RhdGVcblx0XHRcdGNvbnRyb2wuY2xlYW5VcEFsbEZpbHRlckZpZWxkc0luRXJyb3JTdGF0ZSgpO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogTWV0aG9kIHJldHVybnMgdGhlIGNvcHkgb2YgcHJvcGVydHlJbmZvIGJ5IGFkZGluZyBuZWNlc3NhcnkgZmllbGRzIHNvIHRoYXQgc2VsZWN0aW9uIHZhcmlhbnQgY2FuIGJlIHNldCB0byBhIGNvbnRyb2wgbGlrZSB0YWJsZSBhbmQgY2hhcnQuXG5cdCAqIEBwYXJhbSBjb250cm9sIFRoaXMgY291bGQgYmUgYSB0YWJsZSwgY2hhcnQsIG9yIGZpbHRlciBiYXJcblx0ICogQHBhcmFtIHByb3BlcnR5SW5mb3MgQXJyYXkgb2YgUHJvcGVydHlJbmZvIG9mIHRoZSBjb250cm9sXG5cdCAqIEByZXR1cm5zIFRoZSBkZWVwIGNsb25lIG9mIHByb3BlcnR5SW5mb3Mgd2l0aCBzb21lIGFkZGl0aW9uYWwgZmllbGRzXG5cdCAqL1xuXHRfdXBkYXRlUHJvcGVydHlJbmZvVG9TdXBwb3J0U1YoY29udHJvbDogQ29udHJvbCwgcHJvcGVydHlJbmZvczogQ29udHJvbFByb3BlcnR5SW5mb1tdKTogQ29udHJvbFByb3BlcnR5SW5mb1tdIHtcblx0XHRpZiAoY29udHJvbC5pc0EoXCJzYXAudWkubWRjLkZpbHRlckJhclwiKSkge1xuXHRcdFx0cmV0dXJuIHByb3BlcnR5SW5mb3M7XG5cdFx0fVxuXHRcdHByb3BlcnR5SW5mb3MuZm9yRWFjaCgocHJvcGVydHlJbmZvOiBDb250cm9sUHJvcGVydHlJbmZvKSA9PiB7XG5cdFx0XHRpZiAoKGNvbnRyb2wgYXMgQ29udHJvbCkuaXNBKFwic2FwLnVpLm1kYy5UYWJsZVwiKSkge1xuXHRcdFx0XHRwcm9wZXJ0eUluZm9bXCJjb25kaXRpb25QYXRoXCJdID0gcHJvcGVydHlJbmZvLm5hbWU7XG5cdFx0XHRcdHByb3BlcnR5SW5mb1tcImhhc1ZhbHVlSGVscFwiXSA9IFByb3BlcnR5SGVscGVyLmhhc1ZhbHVlSGVscChcblx0XHRcdFx0XHQoY29udHJvbCBhcyBUYWJsZSkuZ2V0UHJvcGVydHlIZWxwZXIoKS5nZXRQcm9wZXJ0eShwcm9wZXJ0eUluZm8ubmFtZSlcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSBpZiAoKGNvbnRyb2wgYXMgQ29udHJvbCkuaXNBKFwic2FwLnVpLm1kYy5DaGFydFwiKSkge1xuXHRcdFx0XHRpZiAocHJvcGVydHlJbmZvLnBhdGgpIHtcblx0XHRcdFx0XHRwcm9wZXJ0eUluZm9bXCJuYW1lXCJdID0gcHJvcGVydHlJbmZvLnBhdGg7XG5cdFx0XHRcdFx0cHJvcGVydHlJbmZvW1wiY29uZGl0aW9uUGF0aFwiXSA9IHByb3BlcnR5SW5mby5wYXRoO1xuXHRcdFx0XHRcdGNvbnN0IHByb3BlcnR5ID0gKChjb250cm9sIGFzIENoYXJ0KS5nZXRQYXJlbnQoKSBhcyBDaGFydFR5cGUpPy5nZXRQcm9wZXJ0eURhdGFNb2RlbChwcm9wZXJ0eUluZm8ucGF0aCk/LnRhcmdldE9iamVjdDtcblx0XHRcdFx0XHRwcm9wZXJ0eUluZm9bXCJoYXNWYWx1ZUhlbHBcIl0gPSBwcm9wZXJ0eSA/IFByb3BlcnR5SGVscGVyLmhhc1ZhbHVlSGVscChwcm9wZXJ0eSkgOiBmYWxzZTtcblx0XHRcdFx0XHRwcm9wZXJ0eUluZm9bXCJkYXRhVHlwZVwiXSA9IChwcm9wZXJ0eUluZm8/LnR5cGVDb25maWc/LmNsYXNzTmFtZSBhcyBzdHJpbmcpIHx8IHByb3BlcnR5SW5mby5kYXRhVHlwZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHJldHVybiBwcm9wZXJ0eUluZm9zO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBTZXRzIHNlbGVjdGlvbiB2YXJpYW50IHRvIHRoZSB0YWJsZS4gTm90ZTogc2V0U2VsZWN0aW9uVmFyaWFudCB3aWxsIGNsZWFyIHRoZSBleGlzdGluZyBmaWx0ZXJzIGFuZCB0aGVuIGFwcGx5IHRoZSBTZWxlY3Rpb25WYXJpYW50IHZhbHVlcy5cblx0ICogQHBhcmFtIGNvbnRyb2xJbnN0YW5jZSBUaGlzIGNvdWxkIGJlIGEgdGFibGUsIGNoYXJ0LCBvciBmaWx0ZXIgYmFyXG5cdCAqIEBwYXJhbSBzZWxlY3Rpb25WYXJpYW50IFRoZSBzZWxlY3Rpb24gdmFyaWFudCB0byBhcHBseSB0byB0aGUgcmVzcGVjdGl2ZSBtZGMgY29udHJvbHNcblx0ICogQHBhcmFtIHByZWZpbGxEZXNjcmlwdGlvbnMgT3B0aW9uYWwuIElmIHRydWUsIHdlIHdpbGwgdXNlIHRoZSBhc3NvY2lhdGVkIHRleHQgcHJvcGVydHkgdmFsdWVzIChpZiB0aGV5J3JlIGF2YWlsYWJsZSBpbiB0aGUgc2VsZWN0aW9uVmFyaWFudCkgdG8gZGlzcGxheSB0aGUgZmlsdGVyIHZhbHVlIGRlc2NyaXB0aW9ucywgaW5zdGVhZCBvZiBsb2FkaW5nIHRoZW0gZnJvbSB0aGUgYmFja2VuZFxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgZm9yIGFzeW5jaHJvbm91cyBoYW5kbGluZ1xuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhc3luYyBzZXRTZWxlY3Rpb25WYXJpYW50VG9NZGNDb250cm9sKFxuXHRcdGNvbnRyb2xJbnN0YW5jZTogQ29yZUNvbnRyb2wgfCB1bmRlZmluZWQsXG5cdFx0c2VsZWN0aW9uVmFyaWFudDogU2VsZWN0aW9uVmFyaWFudCxcblx0XHRwcmVmaWxsRGVzY3JpcHRpb25zID0gZmFsc2Vcblx0KTogUHJvbWlzZTx7IGRpZmZTdGF0ZTogRXh0ZXJuYWxTdGF0ZVR5cGU7IGFwcGx5U3RhdGVSZXN1bHQ6IHVua25vd24gfSB8IHVuZGVmaW5lZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBzdGF0ZTogRXh0ZXJuYWxTdGF0ZVR5cGUgPSBhd2FpdCBTdGF0ZVV0aWwucmV0cmlldmVFeHRlcm5hbFN0YXRlKGNvbnRyb2xJbnN0YW5jZSBhcyBDb250cm9sKTtcblx0XHRcdGlmICghc3RhdGUuZmlsdGVyKSB7XG5cdFx0XHRcdExvZy5lcnJvcihgRkUgOiBzZXRTZWxlY3Rpb25WYXJpYW50IEFQSSBjYW5ub3QgYmUgYXBwbGllZCBvbiA6ICR7Y29udHJvbEluc3RhbmNlPy5nZXRJZCgpfWApO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBjb25kaXRpb25zOiBTdGF0ZVV0aWxGaWx0ZXIgPSBhd2FpdCB0aGlzLmNvbnZlcnRTZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMoXG5cdFx0XHRcdGNvbnRyb2xJbnN0YW5jZSBhcyBDb250cm9sLFxuXHRcdFx0XHRzZWxlY3Rpb25WYXJpYW50LFxuXHRcdFx0XHRwcmVmaWxsRGVzY3JpcHRpb25zLFxuXHRcdFx0XHRjb250cm9sSW5zdGFuY2U/LmdldE1vZGVsKClcblx0XHRcdCk7XG5cblx0XHRcdC8vIENsZWFyIGZpbHRlciBvZiB0YWJsZSBiZWZvcmUgYXBwbHlpbmcgc2VsZWN0aW9uIHZhcmlhbnRcblx0XHRcdGF3YWl0IHRoaXMuY2xlYXJGaWx0ZXJWYWx1ZXMoY29udHJvbEluc3RhbmNlPy5nZXRQYXJlbnQoKSBhcyBNYWNyb0FQSSk7XG5cblx0XHRcdC8vIFN0YXRlIHRvIGFwcGx5XG5cdFx0XHRjb25zdCBwcm9wZXJ0eUluZm9zID0gYXdhaXQgdGhpcy5fZ2V0U3VwcG9ydGVkRmlsdGVyRmllbGRzKGNvbnRyb2xJbnN0YW5jZSBhcyBDb250cm9sKTtcblx0XHRcdGNvbnN0IHN0YXRlVG9BcHBseSA9IHN2VG9TdGF0ZUZpbHRlcnMuZ2V0U3RhdGVUb0FwcGx5KHByb3BlcnR5SW5mb3MsIGNvbmRpdGlvbnMpO1xuXHRcdFx0aWYgKGNvbnRyb2xJbnN0YW5jZT8uaXNBKFwic2FwLnVpLm1kYy5DaGFydFwiKSkge1xuXHRcdFx0XHR0aGlzLmNvbnZlcnRDb25kaXRpb25zRm9yQ2hhcnQoc3RhdGVUb0FwcGx5KTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGRpZmZTdGF0ZTogRXh0ZXJuYWxTdGF0ZVR5cGUgPSBhd2FpdCBTdGF0ZVV0aWwuZGlmZlN0YXRlKGNvbnRyb2xJbnN0YW5jZSBhcyBDb250cm9sLCBzdGF0ZSwgc3RhdGVUb0FwcGx5KTtcblx0XHRcdGNvbnN0IGFwcGx5U3RhdGVSZXN1bHQgPSBhd2FpdCBTdGF0ZVV0aWwuYXBwbHlFeHRlcm5hbFN0YXRlKGNvbnRyb2xJbnN0YW5jZSBhcyBDb250cm9sLCBzdGF0ZVRvQXBwbHkpO1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0ZGlmZlN0YXRlLFxuXHRcdFx0XHRhcHBseVN0YXRlUmVzdWx0XG5cdFx0XHR9O1xuXHRcdH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuXHRcdFx0Y29uc3QgaWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGNvbnRyb2xJbnN0YW5jZT8uZ2V0SWQoKTtcblx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVycik7XG5cdFx0XHRMb2cuZXJyb3IoYEZFIDogQnVpbGRpbmdCbG9jayAoJHtpZH0pIC0gc2V0IHNlbGVjdGlvbiB2YXJpYW50IGZhaWxlZCAgOiAke21lc3NhZ2V9YCk7XG5cdFx0XHR0aHJvdyBFcnJvcihtZXNzYWdlKTtcblx0XHR9XG5cdH0sXG5cdC8qKlxuXHQgKiBDb252ZXJ0IHRoZSBjaGFydCBwcm9wZXJ0aWVzIHRvIGludGVybmFsIHByb3BlcnRpZXMgYmVmb3JlIGFwcGx5aW5nIHRoZSBjb25kaXRpb25zLlxuXHQgKiBAcGFyYW0gc3RhdGVUb0FwcGx5IFRoaXMgY29udGFpbnMgdGhlIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBmaWx0ZXIgYW5kIGNvbmRpdGlvbnNcblx0ICovXG5cdGNvbnZlcnRDb25kaXRpb25zRm9yQ2hhcnQoc3RhdGVUb0FwcGx5OiBTdGF0ZVRvQXBwbHkpOiB2b2lkIHtcblx0XHQvLyByZXBsYWNlIGtleXMgb2YgZmlsdGVyIG9iamVjdCBmcm9tIFwiU2FsZXNPZGVyXCIgdG8gaW50ZXJuYWwgZm9ybWF0IFwiX2ZlX2dyb3VwYWJsZV9TYWxlc09yZGVyXCJcblx0XHRmb3IgKGNvbnN0IHByb3BlcnR5IGluIHN0YXRlVG9BcHBseS5maWx0ZXIpIHtcblx0XHRcdGRlbGV0ZSBPYmplY3QuYXNzaWduKHN0YXRlVG9BcHBseS5maWx0ZXIsIHsgW1wiX2ZlX2dyb3VwYWJsZV9cIiArIHByb3BlcnR5XTogc3RhdGVUb0FwcGx5LmZpbHRlcltwcm9wZXJ0eV0gfSlbcHJvcGVydHldO1xuXHRcdH1cblx0XHQvLyByZXBsYWNlIGtleXMgb2YgaXRlbXMgYXJyYXkgZnJvbSBcIlNhbGVzT2RlclwiIHRvIGludGVybmFsIGZvcm1hdCBcIl9mZV9ncm91cGFibGVfU2FsZXNPcmRlclwiXG5cdFx0c3RhdGVUb0FwcGx5Lml0ZW1zLmZvckVhY2goKHByb3BlcnR5T2JqOiB7IG5hbWU6IHN0cmluZyB9KSA9PiB7XG5cdFx0XHRwcm9wZXJ0eU9iai5uYW1lID0gXCJfZmVfZ3JvdXBhYmxlX1wiICsgcHJvcGVydHlPYmoubmFtZTtcblx0XHR9KTtcblx0fVxufTtcblxuZXhwb3J0IHR5cGUgQ29udHJvbFByb3BlcnR5SW5mbyA9IFByb3BlcnR5SW5mbyAmIHtcblx0Y29uZGl0aW9uUGF0aDogc3RyaW5nO1xuXHRkYXRhVHlwZTogc3RyaW5nO1xuXHRhbm5vdGF0aW9uUGF0aD86IHN0cmluZztcblx0bWV0YWRhdGFQYXRoPzogc3RyaW5nO1xuXHRpc1BhcmFtZXRlcj86IGJvb2xlYW47XG5cdGhpZGRlbkZpbHRlcj86IGJvb2xlYW47XG5cdGhhc1ZhbHVlSGVscD86IGJvb2xlYW47XG5cdHJlcXVpcmVkPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFN0YXRlSGVscGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0VBMEJBO0FBQ0E7QUFDQTtBQUNBOztFQUVBLE1BQU1BLFdBQVcsR0FBRztJQUNuQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQyxNQUFNQyxtQkFBbUJBLENBQUNDLE9BQWdDLEVBQTZCO01BQ3RGLElBQUk7UUFDSCxNQUFNQyxZQUFZLEdBQUcsTUFBTUMsU0FBUyxDQUFDQyxxQkFBcUIsQ0FBQ0gsT0FBa0IsQ0FBQztRQUM5RSxNQUFNSSxhQUFhLEdBQUdILFlBQVksQ0FBQ0ksTUFBeUI7UUFDNUQsSUFBSUMsVUFBZ0MsR0FBRyxFQUFFO1FBQ3pDLElBQ0NOLE9BQU8sRUFBRU8sU0FBUyxDQUFDLENBQUMsRUFBRUMsR0FBRyxDQUFDLHNDQUFzQyxDQUFDLElBQ2hFUixPQUFPLENBQUNPLFNBQVMsQ0FBQyxDQUFDLENBQWtCRSxhQUFhLEtBQUtDLFNBQVMsRUFDaEU7VUFDREosVUFBVSxHQUFJTixPQUFPLENBQUNPLFNBQVMsQ0FBQyxDQUFDLENBQWtCRSxhQUFhLENBQUMsQ0FBQztRQUNuRTtRQUNBLE1BQU1FLGdCQUFnQixHQUFHQyw4QkFBOEIsQ0FBQ0MsaUNBQWlDLENBQ3hGVCxhQUFhLEVBQ1pKLE9BQU8sQ0FBYWMsaUJBQWlCLENBQUMsQ0FBQyxFQUN4Q1IsVUFDRCxDQUFDO1FBQ0QsSUFBSU4sT0FBTyxFQUFFUSxHQUFHLENBQUMsa0JBQWtCLENBQUMsRUFBRTtVQUNyQyxNQUFNTyxVQUFVLEdBQUcsSUFBSUMsZ0JBQWdCLENBQUMsQ0FBQztVQUN6QyxNQUFNQyxhQUFhLEdBQUdOLGdCQUFnQixDQUFDTyxpQkFBaUIsQ0FBQyxDQUFDO1VBQzFELEtBQUssTUFBTUMsUUFBUSxJQUFJRixhQUFhLEVBQUU7WUFDckNGLFVBQVUsQ0FBQ0ssbUJBQW1CLENBQUNELFFB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
|
|
270
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTdGF0ZUhlbHBlciIsImdldFNlbGVjdGlvblZhcmlhbnQiLCJjb250cm9sIiwiY29udHJvbFN0YXRlIiwiU3RhdGVVdGlsIiwicmV0cmlldmVFeHRlcm5hbFN0YXRlIiwiY29udHJvbE9iamVjdCIsImZpbHRlciIsInBhcmFtZXRlcnMiLCJnZXRQYXJlbnQiLCJpc0EiLCJnZXRQYXJhbWV0ZXJzIiwidW5kZWZpbmVkIiwic2VsZWN0aW9uVmFyaWFudCIsIlN0YXRlRmlsdGVyc1RvU2VsZWN0aW9uVmFyaWFudCIsImdldFNlbGVjdGlvblZhcmlhbnRGcm9tQ29uZGl0aW9ucyIsImdldFByb3BlcnR5SGVscGVyIiwiZXh0ZXJuYWxTViIsIlNlbGVjdGlvblZhcmlhbnQiLCJzZWxlY3RPcHRpb25zIiwiX2dldFNlbGVjdE9wdGlvbnMiLCJwcm9wZXJ0eSIsIm1hc3NBZGRTZWxlY3RPcHRpb24iLCJzcGxpdCIsImVycm9yIiwiaWQiLCJnZXRJZCIsIm1lc3NhZ2UiLCJFcnJvciIsIlN0cmluZyIsIkxvZyIsImNvbnZlcnRTZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMiLCJwcmVmaWxsRGVzY3JpcHRpb25zIiwibW9kZWwiLCJwcm9wZXJ0eUluZm9zIiwiX2dldFN1cHBvcnRlZEZpbHRlckZpZWxkcyIsImxlbmd0aCIsImZpbHRlckJhckluZm9Gb3JDb252ZXJzaW9uIiwiX2dldENvbnRyb2xJbmZvRm9yQ29udmVyc2lvbiIsIm1ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsImNvcHlvZlByb3BlcnR5SW5mb3MiLCJKU09OIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJ1cGRhdGVkUHJvcGVydHlJbmZvcyIsIl91cGRhdGVQcm9wZXJ0eUluZm9Ub1N1cHBvcnRTViIsImNvbmRpdGlvbnMiLCJzdlRvU3RhdGVGaWx0ZXJzIiwiZ2V0U3RhdGVGaWx0ZXJzRnJvbVNWIiwiZ2V0TW9kZWwiLCJjb250ZXh0UGF0aCIsImRhdGEiLCJ1c2VTZW1hbnRpY0RhdGVSYW5nZSIsInZpZXdEYXRhSW5zdGFuY2UiLCJ2aWV3RGF0YSIsImdldERhdGEiLCJjb25maWciLCJjb250cm9sQ29uZmlndXJhdGlvbiIsInNlbGVjdGlvbkZpZWxkc0NvbmZpZ3MiLCJmaWx0ZXJGaWVsZHNDb25maWciLCJmaWx0ZXJGaWVsZHMiLCJnZXRFbmhhbmNlZEZldGNoZWRQcm9wZXJ0eUluZm9zIiwid2FpdEZvckluaXRpYWxpemF0aW9uIiwiZ2V0Q29udHJvbERlbGVnYXRlIiwiZmV0Y2hGaWx0ZXJQcm9wZXJ0aWVzIiwiYXdhaXRDb250cm9sRGVsZWdhdGUiLCJmZXRjaFByb3BlcnRpZXMiLCJjbGVhckZpbHRlclZhbHVlcyIsImNvbnRyb2xJbnN0YW5jZSIsIl9jbGVhckZpbHRlclZhbHVlc1dpdGhPcHRpb25zIiwiY29udGVudCIsImZpcmVFdmVudCIsIm9wdGlvbnMiLCJzdGF0ZSIsImVkaXRTdGF0ZVBhdGgiLCJjdXJyZW50RWRpdFN0YXRlQ29uZGl0aW9uIiwiZWRpdFN0YXRlRGVmYXVsdFZhbHVlIiwiY3VycmVudEVkaXRTdGF0ZUlzRGVmYXVsdCIsInNob3VsZENsZWFyRWRpdEZpbHRlciIsIkRyYWZ0RWRpdFN0YXRlIiwiQUxMIiwiZGVlcENsb25lIiwidmFsdWVzIiwiT2JqZWN0Iiwia2V5cyIsImNsZWFyRWRpdEZpbHRlciIsImNvbmRpdGlvblBhdGgiLCJjb25kaXRpb24iLCJmaWx0ZXJlZCIsImFwcGx5RXh0ZXJuYWxTdGF0ZSIsImNsZWFuVXBBbGxGaWx0ZXJGaWVsZHNJbkVycm9yU3RhdGUiLCJmb3JFYWNoIiwicHJvcGVydHlJbmZvIiwibmFtZSIsIlByb3BlcnR5SGVscGVyIiwiaGFzVmFsdWVIZWxwIiwiZ2V0UHJvcGVydHkiLCJwYXRoIiwiZ2V0UHJvcGVydHlEYXRhTW9kZWwiLCJ0YXJnZXRPYmplY3QiLCJ0eXBlQ29uZmlnIiwiY2xhc3NOYW1lIiwiZGF0YVR5cGUiLCJzZXRTZWxlY3Rpb25WYXJpYW50VG9NZGNDb250cm9sIiwiYXJndW1lbnRzIiwiZnJvbU5hdmlnYXRpb25QYXJhbWV0ZXJzIiwiZ2V0U2VsZWN0T3B0aW9uc1Byb3BlcnR5TmFtZXMiLCJzdGF0ZVRvQXBwbHkiLCJnZXRTdGF0ZVRvQXBwbHkiLCJjb252ZXJ0Q29uZGl0aW9uc0ZvckNoYXJ0IiwiZGlmZlN0YXRlIiwiYXBwbHlTdGF0ZVJlc3VsdCIsImVyciIsImFzc2lnbiIsIml0ZW1zIiwicHJvcGVydHlPYmoiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlN0YXRlSGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IGRlZXBDbG9uZSBmcm9tIFwic2FwL2Jhc2UvdXRpbC9kZWVwQ2xvbmVcIjtcbmltcG9ydCB0eXBlIHsgVmlld0RhdGEgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgKiBhcyBQcm9wZXJ0eUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUhlbHBlclwiO1xuaW1wb3J0IHR5cGUgVGFibGVBUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvVGFibGVcIjtcbmltcG9ydCBEcmFmdEVkaXRTdGF0ZSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRHJhZnRFZGl0U3RhdGVcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhckFQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRmlsdGVyQmFyQVBJXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnR5SW5mbyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ludGVybmFsL1Byb3BlcnR5SW5mb1wiO1xuaW1wb3J0IHR5cGUgeyBDb252ZXJzaW9uSW5mbyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL21kYy9hZGFwdGVyL1NlbGVjdGlvblZhcmlhbnRUb1N0YXRlRmlsdGVyc1wiO1xuaW1wb3J0IHN2VG9TdGF0ZUZpbHRlcnMgZnJvbSBcInNhcC9mZS9tYWNyb3MvbWRjL2FkYXB0ZXIvU2VsZWN0aW9uVmFyaWFudFRvU3RhdGVGaWx0ZXJzXCI7XG5pbXBvcnQgU3RhdGVGaWx0ZXJzVG9TZWxlY3Rpb25WYXJpYW50IGZyb20gXCJzYXAvZmUvbWFjcm9zL21kYy9hZGFwdGVyL1N0YXRlRmlsdGVyVG9TZWxlY3Rpb25WYXJpYW50XCI7XG5pbXBvcnQgdHlwZSB7IEV4dGVybmFsU3RhdGVUeXBlIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvdmFsdWVoZWxwL1ZhbHVlSGVscERlbGVnYXRlXCI7XG5pbXBvcnQgU2VsZWN0aW9uVmFyaWFudCBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vU2VsZWN0aW9uVmFyaWFudFwiO1xuaW1wb3J0IHR5cGUgQ29yZUNvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIENoYXJ0IGZyb20gXCJzYXAvdWkvbWRjL0NoYXJ0XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvbWRjL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhciBmcm9tIFwic2FwL3VpL21kYy9GaWx0ZXJCYXJcIjtcbmltcG9ydCB0eXBlIFRhYmxlIGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IFN0YXRlVG9BcHBseSwgRmlsdGVyIGFzIFN0YXRlVXRpbEZpbHRlciB9IGZyb20gXCJzYXAvdWkvbWRjL3AxM24vU3RhdGVVdGlsXCI7XG5pbXBvcnQgU3RhdGVVdGlsIGZyb20gXCJzYXAvdWkvbWRjL3AxM24vU3RhdGVVdGlsXCI7XG5pbXBvcnQgdHlwZSBNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL01vZGVsXCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgQ2hhcnRUeXBlIGZyb20gXCIuLi8uLi9DaGFydFwiO1xuaW1wb3J0IHR5cGUgTWFjcm9BUEkgZnJvbSBcIi4uLy4uL01hY3JvQVBJXCI7XG5cbi8qKlxuICogVGhpcyBpcyB0byBleHRlbmQgTURDIGNvbnRyb2wgQVBJcyBmb3IgZmlsdGVyLCB0YWJsZSwgY2hhcnQgYnVpbGRpbmcgYmxvY2tzLlxuICogQHB1YmxpY1xuICovXG5cbmNvbnN0IFN0YXRlSGVscGVyID0ge1xuXHQvKipcblx0ICogR2V0cyBzZWxlY3Rpb24gdmFyaWFudCBmcm9tIHRoZSBtZGMgY29udHJvbC5cblx0ICogQHBhcmFtIGNvbnRyb2wgVGhlIGNvbnRyb2wgZm9yIHdoaWNoIFNlbGVjdGlvbiBWYXJpYW50IGlzIHRvIGJlIGZldGNoZWRcblx0ICogQHJldHVybnMgQSBwcm9taXNlIHdoaWNoIHJlc29sdmVzIHdpdGggYSB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uU2VsZWN0aW9uVmFyaWFudH1cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgZ2V0U2VsZWN0aW9uVmFyaWFudChjb250cm9sOiBDb3JlQ29udHJvbCB8IHVuZGVmaW5lZCk6IFByb21pc2U8U2VsZWN0aW9uVmFyaWFudD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBjb250cm9sU3RhdGUgPSBhd2FpdCBTdGF0ZVV0aWwucmV0cmlldmVFeHRlcm5hbFN0YXRlKGNvbnRyb2wgYXMgQ29udHJvbCk7XG5cdFx0XHRjb25zdCBjb250cm9sT2JqZWN0ID0gY29udHJvbFN0YXRlLmZpbHRlciBhcyBTdGF0ZVV0aWxGaWx0ZXI7XG5cdFx0XHRsZXQgcGFyYW1ldGVyczogc3RyaW5nW10gfCB1bmRlZmluZWQgPSBbXTtcblx0XHRcdGlmIChcblx0XHRcdFx0Y29udHJvbD8uZ2V0UGFyZW50KCk/LmlzQShcInNhcC5mZS5tYWNyb3MuZmlsdGVyQmFyLkZpbHRlckJhckFQSVwiKSAmJlxuXHRcdFx0XHQoY29udHJvbC5nZXRQYXJlbnQoKSBhcyBGaWx0ZXJCYXJBUEkpLmdldFBhcmFtZXRlcnMgIT09IHVuZGVmaW5lZFxuXHRcdFx0KSB7XG5cdFx0XHRcdHBhcmFtZXRlcnMgPSAoY29udHJvbC5nZXRQYXJlbnQoKSBhcyBGaWx0ZXJCYXJBUEkpLmdldFBhcmFtZXRlcnMoKTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHNlbGVjdGlvblZhcmlhbnQgPSBTdGF0ZUZpbHRlcnNUb1NlbGVjdGlvblZhcmlhbnQuZ2V0U2VsZWN0aW9uVmFyaWFudEZyb21Db25kaXRpb25zKFxuXHRcdFx0XHRjb250cm9sT2JqZWN0LFxuXHRcdFx0XHQoY29udHJvbCBhcyBDb250cm9sKS5nZXRQcm9wZXJ0eUhlbHBlcigpLFxuXHRcdFx0XHRwYXJhbWV0ZXJzXG5cdFx0XHQpO1xuXHRcdFx0aWYgKGNvbnRyb2w/LmlzQShcInNhcC51aS5tZGMuQ2hhcnRcIikpIHtcblx0XHRcdFx0Y29uc3QgZXh0ZXJuYWxTViA9IG5ldyBTZWxlY3Rpb25WYXJpYW50KCk7XG5cdFx0XHRcdGNvbnN0IHNlbGVjdE9wdGlvbnMgPSBzZWxlY3Rpb25WYXJpYW50Ll9nZXRTZWxlY3RPcHRpb25zKCk7XG5cdFx0XHRcdGZvciAoY29uc3QgcHJvcGVydHkgaW4gc2VsZWN0T3B0aW9ucykge1xuXHRcdFx0XHRcdGV4dGVybmFsU1YubWFzc0FkZFNlbGVjdE9wdGlvbihwcm9wZXJ0eS5zcGxpdChcIl9mZV9ncm91cGFibGVfXCIpWzFdLCBzZWxlY3RPcHRpb25zW3Byb3BlcnR5XSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGV4dGVybmFsU1Y7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gc2VsZWN0aW9uVmFyaWFudDtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuXHRcdFx0Y29uc3QgaWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGNvbnRyb2w/LmdldElkKCk7XG5cdFx0XHRjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpO1xuXHRcdFx0TG9nLmVycm9yKGBCdWlsZGluZyBCbG9jayAoJHtpZH0pIC0gZ2V0IHNlbGVjdGlvbiB2YXJpYW50IGZhaWxlZCA6ICR7bWVzc2FnZX1gKTtcblx0XHRcdHRocm93IEVycm9yKG1lc3NhZ2UpO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogQ29udmVydCBzZWxlY3Rpb24gdmFyaWFudCB0byBjb25kaXRpb25zLlxuXHQgKiBAcGFyYW0gY29udHJvbCBDb250cm9sIGNhbiBiZSBhIHRhYmxlLCBjaGFydCBvciBmaWx0ZXIgYmFyXG5cdCAqIEBwYXJhbSBzZWxlY3Rpb25WYXJpYW50IFRoZSBzZWxlY3Rpb24gdmFyaWFudCB0byBhcHBseSB0byB0aGUgdGFibGUgb3IgY2hhcnQgb3IgZmlsdGVyIGJhci5cblx0ICogQHBhcmFtIHByZWZpbGxEZXNjcmlwdGlvbnMgSWYgdHJ1ZSwgd2UgdHJ5IHRvIGZpbmQgdGhlIGFzc29jaWF0ZWQgVGV4dCB2YWx1ZSBmb3IgZWFjaCBwcm9wZXJ0eSBpbiB0aGUgc2VsZWN0aW9uVmFyaWFudCAodG8gYXZvaWQgZmV0Y2hpbmcgaXQgZnJvbSB0aGUgc2VydmVyKVxuXHQgKiBAcGFyYW0gbW9kZWwgVGhlIGNvbnRyb2wgbW9kZWxcblx0ICogQHJldHVybnMgQSBwcm9taXNlIHJlc29sdmluZyB0byBjb25kaXRpb25zXG5cdCAqL1xuXHRhc3luYyBjb252ZXJ0U2VsZWN0aW9uVmFyaWFudFRvU3RhdGVGaWx0ZXJzKFxuXHRcdGNvbnRyb2w6IENvbnRyb2wsXG5cdFx0c2VsZWN0aW9uVmFyaWFudDogU2VsZWN0aW9uVmFyaWFudCxcblx0XHRwcmVmaWxsRGVzY3JpcHRpb25zOiBib29sZWFuLFxuXHRcdG1vZGVsPzogTW9kZWxcblx0KTogUHJvbWlzZTxTdGF0ZVV0aWxGaWx0ZXI+IHtcblx0XHQvLyBOb3RlOiBUaGlzIG1ldGhvZCBpcyBwcml2YXRlIGFuZCByZXN0cmljdGVkIHRvIHVzYWdlIGJ5IHNhcC5mZShWaWV3U3RhdGUgY29udHJvbGxlciBleHRlbnNpb24pIGZvciBmaWx0ZXIgYmFyLyBjaGFydCAvIHRhYmxlIHN0YXRlIHNjZW5hcmlvcy5cblx0XHRjb25zdCBwcm9wZXJ0eUluZm9zID0gYXdhaXQgdGhpcy5fZ2V0U3VwcG9ydGVkRmlsdGVyRmllbGRzKGNvbnRyb2wpO1xuXG5cdFx0aWYgKCFwcm9wZXJ0eUluZm9zLmxlbmd0aCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiTm8gdmFsaWQgbWV0YWRhdGEgcHJvcGVydGllcyBwcmVzZW50IGZvciBmaWx0ZXIgYmFyXCIpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGZpbHRlckJhckluZm9Gb3JDb252ZXJzaW9uID0gdGhpcy5fZ2V0Q29udHJvbEluZm9Gb3JDb252ZXJzaW9uKGNvbnRyb2wpO1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IG1vZGVsPy5nZXRNZXRhTW9kZWwoKSBhcyBPRGF0YU1ldGFNb2RlbDtcblx0XHRjb25zdCBjb3B5b2ZQcm9wZXJ0eUluZm9zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwcm9wZXJ0eUluZm9zKSk7XG5cdFx0Y29uc3QgdXBkYXRlZFByb3BlcnR5SW5mb3MgPSB0aGlzLl91cGRhdGVQcm9wZXJ0eUluZm9Ub1N1cHBvcnRTVihjb250cm9sLCBjb3B5b2ZQcm9wZXJ0eUluZm9zKTtcblx0XHRjb25zdCBjb25kaXRpb25zOiBTdGF0ZVV0aWxGaWx0ZXIgPSBzdlRvU3RhdGVGaWx0ZXJzLmdldFN0YXRlRmlsdGVyc0Zyb21TVihcblx0XHRcdHNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRmaWx0ZXJCYXJJbmZvRm9yQ29udmVyc2lvbixcblx0XHRcdHVwZGF0ZWRQcm9wZXJ0eUluZm9zID8/IGNvcHlvZlByb3BlcnR5SW5mb3MsXG5cdFx0XHRwcmVmaWxsRGVzY3JpcHRpb25zLFxuXHRcdFx0bWV0YU1vZGVsXG5cdFx0KTtcblxuXHRcdHJldHVybiBjb25kaXRpb25zO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGZpbHRlciBpbmZvcm1hdGlvbiBuZWVkZWQgZm9yIHRoZSBjb252ZXJzaW9uIG9mIHNlbGVjdGlvbiB2YXJpYW50IHRvIGNvbmRpdGlvbnMuXG5cdCAqIEBwYXJhbSBjb250cm9sIFRoaXMgY2FuIGJlIGEgdGFibGUsIGNoYXJ0LCBvciBmaWx0ZXJiYXJcblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgaW5mb3JtYXRpb24gKG1ldGFNb2RlbCwgY29udGV4dFBhdGgsIHVzZSBvZiBzZW1hbnRpYyBkYXRlIHJhbmdlLCBhbGwgZmlsdGVyIGZpZWxkcyBjb25maWcpXG5cdCAqL1xuXHRfZ2V0Q29udHJvbEluZm9Gb3JDb252ZXJzaW9uKGNvbnRyb2w6IENvbnRyb2wpOiBDb252ZXJzaW9uSW5mbyB7XG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gY29udHJvbC5nZXRNb2RlbCgpPy5nZXRNZXRhTW9kZWwoKSBhcyBPRGF0YU1ldGFNb2RlbCxcblx0XHRcdGNvbnRleHRQYXRoID0gY29udHJvbC5kYXRhKFwiZW50aXR5VHlwZVwiKSBhcyBzdHJpbmc7XG5cdFx0aWYgKGNvbnRyb2wuaXNBKFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5GaWx0ZXJCYXJcIikpIHtcblx0XHRcdGNvbnN0IHVzZVNlbWFudGljRGF0ZVJhbmdlOiBib29sZWFuID1cblx0XHRcdFx0XHRjb250cm9sLmRhdGEoXCJ1c2VTZW1hbnRpY0RhdGVSYW5nZVwiKSA9PT0gXCJ0cnVlXCIgfHwgY29udHJvbC5kYXRhKFwidXNlU2VtYW50aWNEYXRlUmFuZ2VcIikgPT09IHRydWUsXG5cdFx0XHRcdHZpZXdEYXRhSW5zdGFuY2UgPSBjb250cm9sLmdldE1vZGVsKFwidmlld0RhdGFcIikgYXMgSlNPTk1vZGVsLFxuXHRcdFx0XHR2aWV3RGF0YSA9IHZpZXdEYXRhSW5zdGFuY2UuZ2V0RGF0YSgpIGFzIFZpZXdEYXRhLFxuXHRcdFx0XHRjb25maWcgPSB2aWV3RGF0YT8uY29udHJvbENvbmZpZ3VyYXRpb24sXG5cdFx0XHRcdHNlbGVjdGlvbkZpZWxkc0NvbmZpZ3MgPSBjb25maWc/LltcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TZWxlY3Rpb25GaWVsZHNcIl0sXG5cdFx0XHRcdGZpbHRlckZpZWxkc0NvbmZpZyA9IHNlbGVjdGlvbkZpZWxkc0NvbmZpZ3M/LmZpbHRlckZpZWxkcztcblx0XHRcdHJldHVybiB7IG1ldGFNb2RlbCwgY29udGV4dFBhdGgsIHVzZVNlbWFudGljRGF0ZVJhbmdlLCBmaWx0ZXJGaWVsZHNDb25maWcsIHNlbGVjdGlvbkZpZWxkc0NvbmZpZ3MgfTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHsgbWV0YU1vZGVsLCBjb250ZXh0UGF0aCB9O1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogR2V0IHN1cHBvcnRlZCBmaWx0ZXIgZmllbGQgcHJvcGVydGllcyBmcm9tIHRoZSB0YWJsZSwgY2hhcnQsIG9yIGZpbHRlciBiYXIuXG5cdCAqIEBwYXJhbSBjb250cm9sIENvbnRyb2wgY2FuIGJlIGEgdGFibGUsIGNoYXJ0LCBvciBmaWx0ZXIgYmFyXG5cdCAqIEByZXR1cm5zIFN1cHBvcnRlZCBmaWx0ZXIgZmllbGRzLlxuXHQgKi9cblx0YXN5bmMgX2dldFN1cHBvcnRlZEZpbHRlckZpZWxkcyhjb250cm9sOiBDb250cm9sKTogUHJvbWlzZTxDb250cm9sUHJvcGVydHlJbmZvW10+IHtcblx0XHRpZiAoKGNvbnRyb2wgYXMgVGFibGUpLmlzQShcInNhcC51aS5tZGMuVGFibGVcIikpIHtcblx0XHRcdHJldHVybiAoKGNvbnRyb2wgYXMgVGFibGUpLmdldFBhcmVudCgpIGFzIFRhYmxlQVBJKS5nZXRFbmhhbmNlZEZldGNoZWRQcm9wZXJ0eUluZm9zKCkgYXMgdW5rbm93biBhcyBDb250cm9sUHJvcGVydHlJbmZvW107XG5cdFx0fSBlbHNlIGlmIChjb250cm9sLmlzQShcInNhcC51aS5tZGMuRmlsdGVyYmFyXCIpKSB7XG5cdFx0XHRhd2FpdCAoY29udHJvbCBhcyBGaWx0ZXJCYXIpLndhaXRGb3JJbml0aWFsaXphdGlvbigpO1xuXHRcdFx0cmV0dXJuIChjb250cm9sIGFzIEZpbHRlckJhcikuZ2V0Q29udHJvbERlbGVnYXRlKCkuZmV0Y2hGaWx0ZXJQcm9wZXJ0aWVzKGNvbnRyb2wpO1xuXHRcdH0gZWxzZSBpZiAoKGNvbnRyb2wgYXMgRmlsdGVyQmFyKS5pc0EoXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLkZpbHRlckJhclwiKSkge1xuXHRcdFx0cmV0dXJuIChjb250cm9sIGFzIEZpbHRlckJhcikuZ2V0Q29udHJvbERlbGVnYXRlKCkuZmV0Y2hGaWx0ZXJQcm9wZXJ0aWVzKGNvbnRyb2wpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhd2FpdCAoY29udHJvbCBhcyBUYWJsZSB8IENoYXJ0KS5hd2FpdENvbnRyb2xEZWxlZ2F0ZSgpO1xuXHRcdH1cblx0XHRyZXR1cm4gKGNvbnRyb2wgYXMgVGFibGUgfCBDaGFydCB8IEZpbHRlckJhcikuZ2V0Q29udHJvbERlbGVnYXRlKCkuZmV0Y2hQcm9wZXJ0aWVzKGNvbnRyb2wpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBDbGVhcnMgYWxsIGlucHV0IHZhbHVlcyBvZiB2aXNpYmxlIGZpbHRlciBmaWVsZHMgaW4gdGhlIHRhYmxlLCBjaGFydCwgb3IgZmlsdGVyIGJhci5cblx0ICogQHBhcmFtIGNvbnRyb2xJbnN0YW5jZSBUaGlzIGNhbiBiZSBhIGZpbHRlciBiYXIsIGNoYXJ0LCBvciB0YWJsZS5cblx0ICovXG5cdGFzeW5jIGNsZWFyRmlsdGVyVmFsdWVzKGNvbnRyb2xJbnN0YW5jZTogTWFjcm9BUEkpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRhd2FpdCB0aGlzLl9jbGVhckZpbHRlclZhbHVlc1dpdGhPcHRpb25zKGNvbnRyb2xJbnN0YW5jZS5jb250ZW50IGFzIENvbnRyb2wpO1xuXHRcdC8vIEFsbG93IGFwcCBkZXZlbG9wZXJzIHRvIHVwZGF0ZSBmaWx0ZXJzIGFmdGVyIGNsZWFyaW5nXG5cdFx0Y29udHJvbEluc3RhbmNlLmZpcmVFdmVudChcImFmdGVyQ2xlYXJcIik7XG5cdH0sXG5cblx0LyoqXG5cdCAqIENsZWFycyBhbGwgaW5wdXQgdmFsdWVzIG9mIHZpc2libGUgZmlsdGVyIGZpZWxkcyBpbiB0aGUgdGFibGUsIGNoYXJ0LCBvciBmaWx0ZXIgYmFyLlxuXHQgKiBAcGFyYW0gY29udHJvbCBUaGlzIGNhbiBiZSBhIHRhYmxlLCBjaGFydCwgb3IgZmlsdGVyIGJhclxuXHQgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBmaWx0ZXJpbmcgdGhlIGZpbHRlciBiYXJcblx0ICogQHBhcmFtIG9wdGlvbnMuY2xlYXJFZGl0RmlsdGVyIFdoZXRoZXIgdG8gY2xlYXIgdGhlIGVkaXQgZmlsdGVyIG9yIHJldGFpbiB0aGUgZGVmYXVsdCB2YWx1ZSAnQWxsJ1xuXHQgKi9cblx0YXN5bmMgX2NsZWFyRmlsdGVyVmFsdWVzV2l0aE9wdGlvbnMoY29udHJvbDogQ29udHJvbCwgb3B0aW9ucz86IHsgY2xlYXJFZGl0RmlsdGVyOiBib29sZWFuIH0pOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRpZiAoIWNvbnRyb2wpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3Qgc3RhdGU6IEV4dGVybmFsU3RhdGVUeXBlID0gYXdhaXQgU3RhdGVVdGlsLnJldHJpZXZlRXh0ZXJuYWxTdGF0ZShjb250cm9sKTtcblx0XHRsZXQgZWRpdFN0YXRlUGF0aCA9IFwiXCIsXG5cdFx0XHRjdXJyZW50RWRpdFN0YXRlQ29uZGl0aW9uLFxuXHRcdFx0ZWRpdFN0YXRlRGVmYXVsdFZhbHVlLFxuXHRcdFx0Y3VycmVudEVkaXRTdGF0ZUlzRGVmYXVsdDogYm9vbGVhbiB8IHVuZGVmaW5lZCxcblx0XHRcdHNob3VsZENsZWFyRWRpdEZpbHRlcjogdW5kZWZpbmVkIHwgYm9vbGVhbjtcblx0XHRpZiAoY29udHJvbC5pc0E8RmlsdGVyQmFyPihcInNhcC51aS5tZGMuRmlsdGVyQmFyXCIpKSB7XG5cdFx0XHRlZGl0U3RhdGVQYXRoID0gXCIkZWRpdFN0YXRlXCI7XG5cdFx0XHRlZGl0U3RhdGVEZWZhdWx0VmFsdWUgPSBEcmFmdEVkaXRTdGF0ZS5BTEwuaWQ7XG5cdFx0XHRjdXJyZW50RWRpdFN0YXRlQ29uZGl0aW9uID0gZGVlcENsb25lKHN0YXRlLmZpbHRlcltlZGl0U3RhdGVQYXRoXT8uWzBdKTtcblx0XHRcdGN1cnJlbnRFZGl0U3RhdGVJc0RlZmF1bHQgPSBjdXJyZW50RWRpdFN0YXRlQ29uZGl0aW9uPy52YWx1ZXNbMF0gPT09IGVkaXRTdGF0ZURlZmF1bHRWYWx1ZTtcblx0XHRcdHNob3VsZENsZWFyRWRpdEZpbHRlciA9IG9wdGlvbnMgJiYgT2JqZWN0LmtleXMob3B0aW9ucykubGVuZ3RoID4gMCAmJiBvcHRpb25zLmNsZWFyRWRpdEZpbHRlcjtcblx0XHR9XG5cblx0XHQvLyBDbGVhciBhbGwgY29uZGl0aW9uc1xuXHRcdGZvciAoY29uc3QgY29uZGl0aW9uUGF0aCBvZiBPYmplY3Qua2V5cyhzdGF0ZS5maWx0ZXIpKSB7XG5cdFx0XHRpZiAoIXNob3VsZENsZWFyRWRpdEZpbHRlciAmJiBjb25kaXRpb25QYXRoID09PSBlZGl0U3RhdGVQYXRoICYmIGN1cnJlbnRFZGl0U3RhdGVJc0RlZmF1bHQpIHtcblx0XHRcdFx0Ly8gRG8gbm90IGNsZWFyIGVkaXQgc3RhdGUgY29uZGl0aW9uIGlmIGl0IGlzIGFscmVhZHkgXCJBTExcIlxuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblx0XHRcdGZvciAoY29uc3QgY29uZGl0aW9uIG9mIHN0YXRlLmZpbHRlcltjb25kaXRpb25QYXRoXSkge1xuXHRcdFx0XHRjb25kaXRpb24uZmlsdGVyZWQgPSBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0YXdhaXQgU3RhdGVVdGlsLmFwcGx5RXh0ZXJuYWxTdGF0ZShjb250cm9sLCB7IGZpbHRlcjogc3RhdGUuZmlsdGVyIH0pO1xuXG5cdFx0aWYgKGNvbnRyb2wuaXNBPEZpbHRlckJhcj4oXCJzYXAudWkubWRjLkZpbHRlckJhclwiKSkge1xuXHRcdFx0Ly8gU2V0IGVkaXQgc3RhdGUgdG8gJ0FMTCcgaWYgaXQgd2Fzbid0IGJlZm9yZVxuXHRcdFx0aWYgKCFzaG91bGRDbGVhckVkaXRGaWx0ZXIgJiYgY3VycmVudEVkaXRTdGF0ZUNvbmRpdGlvbiAmJiAhY3VycmVudEVkaXRTdGF0ZUlzRGVmYXVsdCkge1xuXHRcdFx0XHRjdXJyZW50RWRpdFN0YXRlQ29uZGl0aW9uLnZhbHVlcyA9IFtlZGl0U3RhdGVEZWZhdWx0VmFsdWVdO1xuXHRcdFx0XHRhd2FpdCBTdGF0ZVV0aWwuYXBwbHlFeHRlcm5hbFN0YXRlKGNvbnRyb2wsIHsgZmlsdGVyOiB7IFtlZGl0U3RhdGVQYXRoXTogW2N1cnJlbnRFZGl0U3RhdGVDb25kaXRpb25dIH0gfSk7XG5cdFx0XHR9XG5cblx0XHRcdC8vY2xlYXIgZmlsdGVyIGZpZWxkcyBpbiBlcnJvciBzdGF0ZVxuXHRcdFx0Y29udHJvbC5jbGVhblVwQWxsRmlsdGVyRmllbGRzSW5FcnJvclN0YXRlKCk7XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBNZXRob2QgcmV0dXJucyB0aGUgY29weSBvZiBwcm9wZXJ0eUluZm8gYnkgYWRkaW5nIG5lY2Vzc2FyeSBmaWVsZHMgc28gdGhhdCBzZWxlY3Rpb24gdmFyaWFudCBjYW4gYmUgc2V0IHRvIGEgY29udHJvbCBsaWtlIHRhYmxlIGFuZCBjaGFydC5cblx0ICogQHBhcmFtIGNvbnRyb2wgVGhpcyBjb3VsZCBiZSBhIHRhYmxlLCBjaGFydCwgb3IgZmlsdGVyIGJhclxuXHQgKiBAcGFyYW0gcHJvcGVydHlJbmZvcyBBcnJheSBvZiBQcm9wZXJ0eUluZm8gb2YgdGhlIGNvbnRyb2xcblx0ICogQHJldHVybnMgVGhlIGRlZXAgY2xvbmUgb2YgcHJvcGVydHlJbmZvcyB3aXRoIHNvbWUgYWRkaXRpb25hbCBmaWVsZHNcblx0ICovXG5cdF91cGRhdGVQcm9wZXJ0eUluZm9Ub1N1cHBvcnRTVihjb250cm9sOiBDb250cm9sLCBwcm9wZXJ0eUluZm9zOiBDb250cm9sUHJvcGVydHlJbmZvW10pOiBDb250cm9sUHJvcGVydHlJbmZvW10ge1xuXHRcdGlmIChjb250cm9sLmlzQShcInNhcC51aS5tZGMuRmlsdGVyQmFyXCIpKSB7XG5cdFx0XHRyZXR1cm4gcHJvcGVydHlJbmZvcztcblx0XHR9XG5cdFx0cHJvcGVydHlJbmZvcy5mb3JFYWNoKChwcm9wZXJ0eUluZm86IENvbnRyb2xQcm9wZXJ0eUluZm8pID0+IHtcblx0XHRcdGlmICgoY29udHJvbCBhcyBDb250cm9sKS5pc0EoXCJzYXAudWkubWRjLlRhYmxlXCIpKSB7XG5cdFx0XHRcdHByb3BlcnR5SW5mb1tcImNvbmRpdGlvblBhdGhcIl0gPSBwcm9wZXJ0eUluZm8ubmFtZTtcblx0XHRcdFx0cHJvcGVydHlJbmZvW1wiaGFzVmFsdWVIZWxwXCJdID0gUHJvcGVydHlIZWxwZXIuaGFzVmFsdWVIZWxwKFxuXHRcdFx0XHRcdChjb250cm9sIGFzIFRhYmxlKS5nZXRQcm9wZXJ0eUhlbHBlcigpLmdldFByb3BlcnR5KHByb3BlcnR5SW5mby5uYW1lKVxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIGlmICgoY29udHJvbCBhcyBDb250cm9sKS5pc0EoXCJzYXAudWkubWRjLkNoYXJ0XCIpKSB7XG5cdFx0XHRcdGlmIChwcm9wZXJ0eUluZm8ucGF0aCkge1xuXHRcdFx0XHRcdHByb3BlcnR5SW5mb1tcIm5hbWVcIl0gPSBwcm9wZXJ0eUluZm8ucGF0aDtcblx0XHRcdFx0XHRwcm9wZXJ0eUluZm9bXCJjb25kaXRpb25QYXRoXCJdID0gcHJvcGVydHlJbmZvLnBhdGg7XG5cdFx0XHRcdFx0Y29uc3QgcHJvcGVydHkgPSAoKGNvbnRyb2wgYXMgQ2hhcnQpLmdldFBhcmVudCgpIGFzIENoYXJ0VHlwZSk/LmdldFByb3BlcnR5RGF0YU1vZGVsKHByb3BlcnR5SW5mby5wYXRoKT8udGFyZ2V0T2JqZWN0O1xuXHRcdFx0XHRcdHByb3BlcnR5SW5mb1tcImhhc1ZhbHVlSGVscFwiXSA9IHByb3BlcnR5ID8gUHJvcGVydHlIZWxwZXIuaGFzVmFsdWVIZWxwKHByb3BlcnR5KSA6IGZhbHNlO1xuXHRcdFx0XHRcdHByb3BlcnR5SW5mb1tcImRhdGFUeXBlXCJdID0gKHByb3BlcnR5SW5mbz8udHlwZUNvbmZpZz8uY2xhc3NOYW1lIGFzIHN0cmluZykgfHwgcHJvcGVydHlJbmZvLmRhdGFUeXBlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHByb3BlcnR5SW5mb3M7XG5cdH0sXG5cblx0LyoqXG5cdCAqIFNldHMgc2VsZWN0aW9uIHZhcmlhbnQgdG8gdGhlIHRhYmxlLiBOb3RlOiBzZXRTZWxlY3Rpb25WYXJpYW50IHdpbGwgY2xlYXIgdGhlIGV4aXN0aW5nIGZpbHRlcnMgYW5kIHRoZW4gYXBwbHkgdGhlIFNlbGVjdGlvblZhcmlhbnQgdmFsdWVzLlxuXHQgKiBAcGFyYW0gY29udHJvbEluc3RhbmNlIFRoaXMgY291bGQgYmUgYSB0YWJsZSwgY2hhcnQsIG9yIGZpbHRlciBiYXJcblx0ICogQHBhcmFtIHNlbGVjdGlvblZhcmlhbnQgVGhlIHNlbGVjdGlvbiB2YXJpYW50IHRvIGFwcGx5IHRvIHRoZSByZXNwZWN0aXZlIG1kYyBjb250cm9sc1xuXHQgKiBAcGFyYW0gcHJlZmlsbERlc2NyaXB0aW9ucyBPcHRpb25hbC4gSWYgdHJ1ZSwgd2Ugd2lsbCB1c2UgdGhlIGFzc29jaWF0ZWQgdGV4dCBwcm9wZXJ0eSB2YWx1ZXMgKGlmIHRoZXkncmUgYXZhaWxhYmxlIGluIHRoZSBzZWxlY3Rpb25WYXJpYW50KSB0byBkaXNwbGF5IHRoZSBmaWx0ZXIgdmFsdWUgZGVzY3JpcHRpb25zLCBpbnN0ZWFkIG9mIGxvYWRpbmcgdGhlbSBmcm9tIHRoZSBiYWNrZW5kXG5cdCAqIEBwYXJhbSBmcm9tTmF2aWdhdGlvblBhcmFtZXRlcnMgT3B0aW9uYWwuIElmIHRydWUsIHRoZSBzZWxlY3Rpb24gdmFyaWFudCBpcyBhc3N1bWVkIHRvIGNvbWUgZnJvbSBuYXZpZ2F0aW9uIHBhcmFtZXRlcnMuIEluIHRoaXMgY2FzZSwgaWYgdGhlIHNlbGVjdGlvbiB2YXJpYW50IGNvbnRhaW5zIHNlbGVjdCBvcHRpb25zIGZvciBwcm9wZXJ0aWVzIHRoYXQgYXJlIG5vdCBwcmVzZW50IGluIHRoZSBmaWx0ZXIgYmFyLCB0aGVzZSBzZWxlY3Qgb3B0aW9ucyB3aWxsIGJlIGlnbm9yZWQgYW5kIHdpbGwgbm90IGxlYWQgdG8gY2xlYXJpbmcgdGhlIGZpbHRlciBiYXIuXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSBmb3IgYXN5bmNocm9ub3VzIGhhbmRsaW5nXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFzeW5jIHNldFNlbGVjdGlvblZhcmlhbnRUb01kY0NvbnRyb2woXG5cdFx0Y29udHJvbEluc3RhbmNlOiBDb3JlQ29udHJvbCB8IHVuZGVmaW5lZCxcblx0XHRzZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50LFxuXHRcdHByZWZpbGxEZXNjcmlwdGlvbnMgPSBmYWxzZSxcblx0XHRmcm9tTmF2aWdhdGlvblBhcmFtZXRlcnMgPSBmYWxzZVxuXHQpOiBQcm9taXNlPHsgZGlmZlN0YXRlOiBFeHRlcm5hbFN0YXRlVHlwZTsgYXBwbHlTdGF0ZVJlc3VsdDogdW5rbm93biB9IHwgdW5kZWZpbmVkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHN0YXRlOiBFeHRlcm5hbFN0YXRlVHlwZSA9IGF3YWl0IFN0YXRlVXRpbC5yZXRyaWV2ZUV4dGVybmFsU3RhdGUoY29udHJvbEluc3RhbmNlIGFzIENvbnRyb2wpO1xuXHRcdFx0aWYgKCFzdGF0ZS5maWx0ZXIpIHtcblx0XHRcdFx0TG9nLmVycm9yKGBGRSA6IHNldFNlbGVjdGlvblZhcmlhbnQgQVBJIGNhbm5vdCBiZSBhcHBsaWVkIG9uIDogJHtjb250cm9sSW5zdGFuY2U/LmdldElkKCl9YCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGNvbmRpdGlvbnM6IFN0YXRlVXRpbEZpbHRlciA9IGF3YWl0IHRoaXMuY29udmVydFNlbGVjdGlvblZhcmlhbnRUb1N0YXRlRmlsdGVycyhcblx0XHRcdFx0Y29udHJvbEluc3RhbmNlIGFzIENvbnRyb2wsXG5cdFx0XHRcdHNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRcdHByZWZpbGxEZXNjcmlwdGlvbnMsXG5cdFx0XHRcdGNvbnRyb2xJbnN0YW5jZT8uZ2V0TW9kZWwoKVxuXHRcdFx0KTtcblxuXHRcdFx0aWYgKFxuXHRcdFx0XHRmcm9tTmF2aWdhdGlvblBhcmFtZXRlcnMgJiZcblx0XHRcdFx0c2VsZWN0aW9uVmFyaWFudC5nZXRTZWxlY3RPcHRpb25zUHJvcGVydHlOYW1lcygpLmxlbmd0aCA+IDAgJiZcblx0XHRcdFx0T2JqZWN0LmtleXMoY29uZGl0aW9ucykubGVuZ3RoID09PSAwXG5cdFx0XHQpIHtcblx0XHRcdFx0Ly8gSWYgdGhlIHNlbGVjdGlvbiB2YXJpYW50IGhhcyBzZWxlY3Qgb3B0aW9ucyBidXQgbm8gY29uZGl0aW9ucyBjb3VsZCBiZSBtYXBwZWQgdG8gdGhlIGZpbHRlciBiYXIsIHdlIHJldHVybiBhbiBlbXB0eSBhcnJheVxuXHRcdFx0XHQvLyBUaGlzIGlzIHRvIGF2b2lkIGNsZWFyaW5nIHRoZSBmaWx0ZXIgYmFyIGluIHRoaXMgY2FzZVxuXHRcdFx0XHQvLyBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIHNlbGVjdGlvbiB2YXJpYW50IGhhcyBvbmx5IHBhcmFtZXRlcnMgb3Igc2VsZWN0IG9wdGlvbnMgZm9yIHByb3BlcnRpZXMgbm90IHByZXNlbnQgaW4gdGhlIGZpbHRlciBiYXJcblx0XHRcdFx0Ly8gSW4gdGhpcyBjYXNlLCB3ZSBhc3N1bWUgdGhhdCB0aGUgc2VsZWN0aW9uIHZhcmlhbnQgaXMgbm90IG1lYW50IHRvIGNsZWFyIHRoZSBmaWx0ZXIgYmFyXG5cdFx0XHRcdC8vIGFuZCB3ZSBkbyBub3QgYXBwbHkgaXRcblx0XHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ2xlYXIgZmlsdGVyIG9mIHRhYmxlIGJlZm9yZSBhcHBseWluZyBzZWxlY3Rpb24gdmFyaWFudFxuXHRcdFx0YXdhaXQgdGhpcy5jbGVhckZpbHRlclZhbHVlcyhjb250cm9sSW5zdGFuY2U/LmdldFBhcmVudCgpIGFzIE1hY3JvQVBJKTtcblxuXHRcdFx0Ly8gU3RhdGUgdG8gYXBwbHlcblx0XHRcdGNvbnN0IHByb3BlcnR5SW5mb3MgPSBhd2FpdCB0aGlzLl9nZXRTdXBwb3J0ZWRGaWx0ZXJGaWVsZHMoY29udHJvbEluc3RhbmNlIGFzIENvbnRyb2wpO1xuXHRcdFx0Y29uc3Qgc3RhdGVUb0FwcGx5ID0gc3ZUb1N0YXRlRmlsdGVycy5nZXRTdGF0ZVRvQXBwbHkocHJvcGVydHlJbmZvcywgY29uZGl0aW9ucyk7XG5cdFx0XHRpZiAoY29udHJvbEluc3RhbmNlPy5pc0EoXCJzYXAudWkubWRjLkNoYXJ0XCIpKSB7XG5cdFx0XHRcdHRoaXMuY29udmVydENvbmRpdGlvbnNGb3JDaGFydChzdGF0ZVRvQXBwbHkpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgZGlmZlN0YXRlOiBFeHRlcm5hbFN0YXRlVHlwZSA9IGF3YWl0IFN0YXRlVXRpbC5kaWZmU3RhdGUoY29udHJvbEluc3RhbmNlIGFzIENvbnRyb2wsIHN0YXRlLCBzdGF0ZVRvQXBwbHkpO1xuXHRcdFx0Y29uc3QgYXBwbHlTdGF0ZVJlc3VsdCA9IGF3YWl0IFN0YXRlVXRpbC5hcHBseUV4dGVybmFsU3RhdGUoY29udHJvbEluc3RhbmNlIGFzIENvbnRyb2wsIHN0YXRlVG9BcHBseSk7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRkaWZmU3RhdGUsXG5cdFx0XHRcdGFwcGx5U3RhdGVSZXN1bHRcblx0XHRcdH07XG5cdFx0fSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG5cdFx0XHRjb25zdCBpZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gY29udHJvbEluc3RhbmNlPy5nZXRJZCgpO1xuXHRcdFx0Y29uc3QgbWVzc2FnZSA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKTtcblx0XHRcdExvZy5lcnJvcihgRkUgOiBCdWlsZGluZ0Jsb2NrICgke2lkfSkgLSBzZXQgc2VsZWN0aW9uIHZhcmlhbnQgZmFpbGVkICA6ICR7bWVzc2FnZX1gKTtcblx0XHRcdHRocm93IEVycm9yKG1lc3NhZ2UpO1xuXHRcdH1cblx0fSxcblx0LyoqXG5cdCAqIENvbnZlcnQgdGhlIGNoYXJ0IHByb3BlcnRpZXMgdG8gaW50ZXJuYWwgcHJvcGVydGllcyBiZWZvcmUgYXBwbHlpbmcgdGhlIGNvbmRpdGlvbnMuXG5cdCAqIEBwYXJhbSBzdGF0ZVRvQXBwbHkgVGhpcyBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGZpbHRlciBhbmQgY29uZGl0aW9uc1xuXHQgKi9cblx0Y29udmVydENvbmRpdGlvbnNGb3JDaGFydChzdGF0ZVRvQXBwbHk6IFN0YXRlVG9BcHBseSk6IHZvaWQge1xuXHRcdC8vIHJlcGxhY2Uga2V5cyBvZiBmaWx0ZXIgb2JqZWN0IGZyb20gXCJTYWxlc09kZXJcIiB0byBpbnRlcm5hbCBmb3JtYXQgXCJfZmVfZ3JvdXBhYmxlX1NhbGVzT3JkZXJcIlxuXHRcdGZvciAoY29uc3QgcHJvcGVydHkgaW4gc3RhdGVUb0FwcGx5LmZpbHRlcikge1xuXHRcdFx0ZGVsZXRlIE9iamVjdC5hc3NpZ24oc3RhdGVUb0FwcGx5LmZpbHRlciwgeyBbXCJfZmVfZ3JvdXBhYmxlX1wiICsgcHJvcGVydHldOiBzdGF0ZVRvQXBwbHkuZmlsdGVyW3Byb3BlcnR5XSB9KVtwcm9wZXJ0eV07XG5cdFx0fVxuXHRcdC8vIHJlcGxhY2Uga2V5cyBvZiBpdGVtcyBhcnJheSBmcm9tIFwiU2FsZXNPZGVyXCIgdG8gaW50ZXJuYWwgZm9ybWF0IFwiX2ZlX2dyb3VwYWJsZV9TYWxlc09yZGVyXCJcblx0XHRzdGF0ZVRvQXBwbHkuaXRlbXMuZm9yRWFjaCgocHJvcGVydHlPYmo6IHsgbmFtZTogc3RyaW5nIH0pID0+IHtcblx0XHRcdHByb3BlcnR5T2JqLm5hbWUgPSBcIl9mZV9ncm91cGFibGVfXCIgKyBwcm9wZXJ0eU9iai5uYW1lO1xuXHRcdH0pO1xuXHR9XG59O1xuXG5leHBvcnQgdHlwZSBDb250cm9sUHJvcGVydHlJbmZvID0gUHJvcGVydHlJbmZvICYge1xuXHRjb25kaXRpb25QYXRoOiBzdHJpbmc7XG5cdGRhdGFUeXBlOiBzdHJpbmc7XG5cdGFubm90YXRpb25QYXRoPzogc3RyaW5nO1xuXHRtZXRhZGF0YVBhdGg/OiBzdHJpbmc7XG5cdGlzUGFyYW1ldGVyPzogYm9vbGVhbjtcblx0aGlkZGVuRmlsdGVyPzogYm9vbGVhbjtcblx0aGFzVmFsdWVIZWxwPzogYm9vbGVhbjtcblx0cmVxdWlyZWQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU3RhdGVIZWxwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7RUEwQkE7QUFDQTtBQUNBO0FBQ0E7O0VBRUEsTUFBTUEsV0FBVyxHQUFHO0lBQ25CO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNDLE1BQU1DLG1CQUFtQkEsQ0FBQ0MsT0FBZ0MsRUFBNkI7TUFDdEYsSUFBSTtRQUNILE1BQU1DLFlBQVksR0FBRyxNQUFNQyxTQUFTLENBQUNDLHFCQUFxQixDQUFDSCxPQUFrQixDQUFDO1FBQzlFLE1BQU1JLGFBQWEsR0FBR0gsWUFBWSxDQUFDSSxNQUF5QjtRQUM1RCxJQUFJQyxVQUFnQyxHQUFHLEVBQUU7UUFDekMsSUFDQ04sT0FBTyxFQUFFTyxTQUFTLENBQUMsQ0FBQyxFQUFFQyxHQUFHLENBQUMsc0NBQXNDLENBQUMsSUFDaEVSLE9BQU8sQ0FBQ08sU0FBUyxDQUFDLENBQUMsQ0FBa0JFLGFBQWEsS0FBS0MsU0FBUyxFQUNoRTtVQUNESixVQUFVLEdBQUlOLE9BQU8sQ0FBQ08sU0FBUyxDQUFDLENBQUMsQ0FBa0JFLGFBQWEsQ0FBQyxDQUFDO1FBQ25FO1FBQ0EsTUFBTUUsZ0JBQWdCLEdBQUdDLDhCQUE4QixDQUFDQyxpQ0FBaUMsQ0FDeEZULGFBQWEsRUFDWkosT0FBTyxDQUFhYyxpQkFBaUIsQ0FBQyxDQUFDLEVBQ3hDUixVQUNELENBQUM7UUFDRCxJ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
|
|
@@ -239,13 +239,15 @@ const StateHelper = {
|
|
|
239
239
|
* @param controlInstance This could be a table, chart, or filter bar
|
|
240
240
|
* @param selectionVariant The selection variant to apply to the respective mdc controls
|
|
241
241
|
* @param prefillDescriptions Optional. If true, we will use the associated text property values (if they're available in the selectionVariant) to display the filter value descriptions, instead of loading them from the backend
|
|
242
|
+
* @param fromNavigationParameters Optional. If true, the selection variant is assumed to come from navigation parameters. In this case, if the selection variant contains select options for properties that are not present in the filter bar, these select options will be ignored and will not lead to clearing the filter bar.
|
|
242
243
|
* @returns A promise for asynchronous handling
|
|
243
244
|
* @public
|
|
244
245
|
*/
|
|
245
246
|
async setSelectionVariantToMdcControl(
|
|
246
247
|
controlInstance: CoreControl | undefined,
|
|
247
248
|
selectionVariant: SelectionVariant,
|
|
248
|
-
prefillDescriptions = false
|
|
249
|
+
prefillDescriptions = false,
|
|
250
|
+
fromNavigationParameters = false
|
|
249
251
|
): Promise<{ diffState: ExternalStateType; applyStateResult: unknown } | undefined> {
|
|
250
252
|
try {
|
|
251
253
|
const state: ExternalStateType = await StateUtil.retrieveExternalState(controlInstance as Control);
|
|
@@ -260,6 +262,19 @@ const StateHelper = {
|
|
|
260
262
|
controlInstance?.getModel()
|
|
261
263
|
);
|
|
262
264
|
|
|
265
|
+
if (
|
|
266
|
+
fromNavigationParameters &&
|
|
267
|
+
selectionVariant.getSelectOptionsPropertyNames().length > 0 &&
|
|
268
|
+
Object.keys(conditions).length === 0
|
|
269
|
+
) {
|
|
270
|
+
// If the selection variant has select options but no conditions could be mapped to the filter bar, we return an empty array
|
|
271
|
+
// This is to avoid clearing the filter bar in this case
|
|
272
|
+
// This can happen if the selection variant has only parameters or select options for properties not present in the filter bar
|
|
273
|
+
// In this case, we assume that the selection variant is not meant to clear the filter bar
|
|
274
|
+
// and we do not apply it
|
|
275
|
+
return undefined;
|
|
276
|
+
}
|
|
277
|
+
|
|
263
278
|
// Clear filter of table before applying selection variant
|
|
264
279
|
await this.clearFilterValues(controlInstance?.getParent() as MacroAPI);
|
|
265
280
|
|