@sapui5/sap.fe.templates 1.120.30 → 1.120.32
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/templates/.library +1 -1
- package/src/sap/fe/templates/AnalyticalListPage/manifest.json +1 -1
- package/src/sap/fe/templates/ListReport/manifest.json +1 -1
- package/src/sap/fe/templates/ListReport/overrides/ViewState.js +9 -7
- package/src/sap/fe/templates/ListReport/overrides/ViewState.ts +9 -7
- package/src/sap/fe/templates/ObjectPage/manifest.json +1 -1
- package/src/sap/fe/templates/library.js +1 -1
- package/src/sap/fe/templates/messagebundle_ar.properties +1 -1
- package/src/sap/fe/templates/messagebundle_cy.properties +1 -1
- package/src/sap/fe/templates/messagebundle_de.properties +2 -2
- package/src/sap/fe/templates/messagebundle_pt.properties +1 -1
- package/src/sap/fe/templates/messagebundle_sl.properties +3 -3
package/package.json
CHANGED
|
@@ -189,12 +189,13 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/MetaModelConverter", "sap
|
|
|
189
189
|
}
|
|
190
190
|
}
|
|
191
191
|
return this._applySelectionVariant(oView, oNavigationParameter, bFilterVariantApplied);
|
|
192
|
-
}).then(
|
|
192
|
+
}).then(appliedCondition => {
|
|
193
|
+
const selectionVariantWasApplied = Array.isArray(appliedCondition) && appliedCondition.length > 0;
|
|
193
194
|
let bPreventInitialSearch = false;
|
|
194
195
|
const oFilterBarVM = this._getFilterBarVM(oView);
|
|
195
196
|
const oFilterBarControl = oController._getFilterBarControl();
|
|
196
197
|
if (oFilterBarControl) {
|
|
197
|
-
if (oNavigationParameter.navigationType !== NavType.initial && oNavigationParameter.requiresStandardVariant || !oFilterBarVM && oView.getViewData().initialLoad === InitialLoadMode.Enabled || oController._shouldAutoTriggerSearch(oFilterBarVM)) {
|
|
198
|
+
if (oNavigationParameter.navigationType !== NavType.initial && oNavigationParameter.requiresStandardVariant && selectionVariantWasApplied || !oFilterBarVM && oView.getViewData().initialLoad === InitialLoadMode.Enabled || oController._shouldAutoTriggerSearch(oFilterBarVM)) {
|
|
198
199
|
const filterBarAPI = oFilterBarControl.getParent();
|
|
199
200
|
filterBarAPI.triggerSearch();
|
|
200
201
|
} else {
|
|
@@ -467,7 +468,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/MetaModelConverter", "sap
|
|
|
467
468
|
*
|
|
468
469
|
* @param view View of the LR filter bar
|
|
469
470
|
* @param navigationParameter Selection Variant to apply from appState
|
|
470
|
-
* @param filterVariantApplied Is a filter variant
|
|
471
|
+
* @param filterVariantApplied Is a filter variant already applied
|
|
471
472
|
* @returns Promise for asynchronous handling
|
|
472
473
|
*/
|
|
473
474
|
_applySelectionVariant: async function (view, navigationParameter, filterVariantApplied) {
|
|
@@ -479,7 +480,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/MetaModelConverter", "sap
|
|
|
479
480
|
bNavSelVarHasDefaultsOnly: svDefaultsOnly = false
|
|
480
481
|
} = navigationParameter;
|
|
481
482
|
if (!filterBar || !sv) {
|
|
482
|
-
return
|
|
483
|
+
return [];
|
|
483
484
|
}
|
|
484
485
|
const variantManagement = this._getFilterBarVM(view);
|
|
485
486
|
const clearFiltersAndReplaceWithAppState = await this._activeVariantAndGetAppStateOverride(variantManagement, reqStdVariant, filterVariantApplied);
|
|
@@ -495,15 +496,16 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/MetaModelConverter", "sap
|
|
|
495
496
|
if (filterVariantApplied || useFLPDefaultValues) {
|
|
496
497
|
svToSet = await this._getAdjustedSV(filterBarAPI, sv, useFLPDefaultValues);
|
|
497
498
|
}
|
|
498
|
-
return filterBarAPI.setSelectionVariant(svToSet);
|
|
499
|
+
return filterBarAPI.setSelectionVariant(svToSet, true);
|
|
499
500
|
}
|
|
501
|
+
return [];
|
|
500
502
|
},
|
|
501
503
|
/**
|
|
502
504
|
* Activate variant from variant management and return if appState needs to be applied.
|
|
503
505
|
*
|
|
504
506
|
* @param variantManagement VariantManagement used by filter bar
|
|
505
507
|
* @param reqStdVariant If standard variant is required to be used
|
|
506
|
-
* @param filterVariantApplied Is a filter variant
|
|
508
|
+
* @param filterVariantApplied Is a filter variant already applied
|
|
507
509
|
* @returns Promise for asynchronous handling
|
|
508
510
|
*/
|
|
509
511
|
_activeVariantAndGetAppStateOverride: async function (variantManagement, reqStdVariant, filterVariantApplied) {
|
|
@@ -555,4 +557,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/MetaModelConverter", "sap
|
|
|
555
557
|
};
|
|
556
558
|
return ViewStateOverride;
|
|
557
559
|
}, false);
|
|
558
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOYXZUeXBlIiwiTmF2TGlicmFyeSIsIlZhcmlhbnRNYW5hZ2VtZW50VHlwZSIsIkNvcmVMaWJyYXJ5IiwiVmFyaWFudE1hbmFnZW1lbnQiLCJUZW1wbGF0ZUNvbnRlbnRWaWV3IiwiSW5pdGlhbExvYWRNb2RlIiwiRElTUExBWV9DVVJSRU5DWV9QUk9QRVJUWV9OQU1FIiwiVmlld1N0YXRlT3ZlcnJpZGUiLCJfYlNlYXJjaFRyaWdnZXJlZCIsImFwcGx5SW5pdGlhbFN0YXRlT25seSIsIm9uQmVmb3JlU3RhdGVBcHBsaWVkIiwiYVByb21pc2VzIiwibmF2aWdhdGlvblR5cGUiLCJvVmlldyIsImdldFZpZXciLCJvQ29udHJvbGxlciIsImdldENvbnRyb2xsZXIiLCJvRmlsdGVyQmFyIiwiX2dldEZpbHRlckJhckNvbnRyb2wiLCJhVGFibGVzIiwiX2dldENvbnRyb2xzIiwic2V0U3VzcGVuZFNlbGVjdGlvbiIsInB1c2giLCJ3YWl0Rm9ySW5pdGlhbGl6YXRpb24iLCJoeWJyaWQiLCJfY2xlYXJGaWx0ZXJDb25kaXRpb25zIiwiZm9yRWFjaCIsIm9UYWJsZSIsImluaXRpYWxpemVkIiwiYWRhcHRCaW5kaW5nUmVmcmVzaENvbnRyb2xzIiwiYUNvbnRyb2xzIiwiYmFzZSIsImFWaWV3Q29udHJvbHMiLCJhQ29udHJvbHNUb1JlZnJlc2giLCJLZWVwQWxpdmVIZWxwZXIiLCJnZXRDb250cm9sc0ZvclJlZnJlc2giLCJBcnJheSIsInByb3RvdHlwZSIsImFwcGx5IiwiYWRhcHRTdGF0ZUNvbnRyb2xzIiwiYVN0YXRlQ29udHJvbHMiLCJvVmlld0RhdGEiLCJnZXRWaWV3RGF0YSIsImJDb250cm9sVk0iLCJ2YXJpYW50TWFuYWdlbWVudCIsIkNvbnRyb2wiLCJvRmlsdGVyQmFyVk0iLCJfZ2V0RmlsdGVyQmFyVk0iLCJfaXNNdWx0aU1vZGUiLCJfZ2V0TXVsdGlNb2RlQ29udHJvbCIsIm9RdWlja0ZpbHRlciIsImdldFF1aWNrRmlsdGVyIiwiZ2V0VmFyaWFudCIsIm9DaGFydCIsIl9nZXRDb250cm9sRnJvbVBhZ2VNb2RlbFByb3BlcnR5IiwiX2hhc011bHRpVmlzdWFsaXphdGlvbnMiLCJfZ2V0U2VnbWVudGVkQnV0dG9uIiwiQ2hhcnQiLCJUYWJsZSIsImJ5SWQiLCJyZXRyaWV2ZUFkZGl0aW9uYWxTdGF0ZXMiLCJtQWRkaXRpb25hbFN0YXRlcyIsImJQZW5kaW5nRmlsdGVyIiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRQcm9wZXJ0eSIsImRhdGFMb2FkZWQiLCJzQWxwQ29udGVudFZpZXciLCJhbHBDb250ZW50VmlldyIsImFwcGx5QWRkaXRpb25hbFN0YXRlcyIsIm9BZGRpdGlvbmFsU3RhdGVzIiwiZmlsdGVyQmFyQVBJIiwiZ2V0UGFyZW50IiwidHJpZ2dlclNlYXJjaCIsIm9JbnRlcm5hbE1vZGVsQ29udGV4dCIsIkRldmljZSIsInN5c3RlbSIsImRlc2t0b3AiLCJIeWJyaWQiLCJnZXRNb2RlbCIsInNldFByb3BlcnR5IiwiZ2V0UGF0aCIsImlzU2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZCIsInZpZXciLCJjb250cm9sbGVyIiwidmlld0RhdGEiLCJfZ2V0RmlsdGVyQmFyVmFyaWFudENvbnRyb2wiLCJjdXJyZW50VmFyaWFudEtleSIsImdldEN1cnJlbnRWYXJpYW50S2V5IiwieEFwcFN0YXRlIiwiaW5pdGlhbExvYWQiLCJFbmFibGVkIiwiX3Nob3VsZEF1dG9UcmlnZ2VyU2VhcmNoIiwiX2dldEFwcGx5QXV0b21hdGljYWxseU9uVmFyaWFudCIsIl9lbmFibGVGaWx0ZXJCYXIiLCJmaWx0ZXJCYXJDb250cm9sIiwicHJldmVudEluaXRpYWxTZWFyY2giLCJmbk9uU2VhcmNoIiwiZ2V0U3VzcGVuZFNlbGVjdGlvbiIsImF0dGFjaEV2ZW50T25jZSIsIl9hcHBseU5hdmlnYXRpb25QYXJhbWV0ZXJzVG9GaWx0ZXJiYXIiLCJvTmF2aWdhdGlvblBhcmFtZXRlciIsImFSZXN1bHRzIiwib0FwcENvbXBvbmVudCIsImdldEFwcENvbXBvbmVudCIsIm9Db21wb25lbnREYXRhIiwiZ2V0Q29tcG9uZW50RGF0YSIsIm9TdGFydHVwUGFyYW1ldGVycyIsInN0YXJ0dXBQYXJhbWV0ZXJzIiwib1ZhcmlhbnRQcm9taXNlIiwiaGFuZGxlVmFyaWFudElkUGFzc2VkVmlhVVJMUGFyYW1zIiwiYkZpbHRlclZhcmlhbnRBcHBsaWVkIiwidGhlbiIsImFWYXJpYW50cyIsImxlbmd0aCIsIl9hcHBseVNlbGVjdGlvblZhcmlhbnQiLCJiUHJldmVudEluaXRpYWxTZWFyY2giLCJvRmlsdGVyQmFyQ29udHJvbCIsImluaXRpYWwiLCJyZXF1aXJlc1N0YW5kYXJkVmFyaWFudCIsIl9wcmV2ZW50SW5pdGlhbFNlYXJjaCIsImludGVybmFsTW9kZWxDb250ZXh0Iiwic2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZCIsImNhdGNoIiwiTG9nIiwiZXJyb3IiLCJvVXJsUGFyYW1zIiwiYVBhZ2VWYXJpYW50SWQiLCJhRmlsdGVyQmFyVmFyaWFudElkIiwiYVRhYmxlVmFyaWFudElkIiwiYUNoYXJ0VmFyaWFudElkIiwib1ZhcmlhbnRJRHMiLCJzUGFnZVZhcmlhbnRJZCIsInNGaWx0ZXJCYXJWYXJpYW50SWQiLCJzVGFibGVWYXJpYW50SWQiLCJzQ2hhcnRWYXJpYW50SWQiLCJfaGFuZGxlQ29udHJvbFZhcmlhbnRJZCIsIm9WTSIsInNWYXJpYW50TWFuYWdlbWVudCIsIl9oYW5kbGVQYWdlVmFyaWFudElkIiwiX2hhbmRsZUZpbHRlckJhclZhcmlhbnRDb250cm9sSWQiLCJfaGFuZGxlVGFibGVDb250cm9sVmFyaWFudElkIiwiX2hhbmRsZUNoYXJ0Q29udHJvbFZhcmlhbnRJZCIsIlByb21pc2UiLCJhbGwiLCJnZXRWYXJpYW50cyIsIm9WYXJpYW50IiwiX2ZpbmRBbmRQdXNoVmFyaWFudFRvUHJvbWlzZSIsIm9UYWJsZVZhcmlhbnQiLCJhQ2hhcnRzIiwib0NoYXJ0VmFyaWFudCIsInNWYXJpYW50SWQiLCJnZXRLZXkiLCJfYXBwbHlDb250cm9sVmFyaWFudCIsInNWYXJpYW50SUQiLCJzVmFyaWFudFJlZmVyZW5jZSIsIl9jaGVja0lmVmFyaWFudElkSXNBdmFpbGFibGUiLCJnZXRTdGFuZGFyZFZhcmlhbnRLZXkiLCJDb250cm9sVmFyaWFudEFwcGx5QVBJIiwiYWN0aXZhdGVWYXJpYW50IiwiZWxlbWVudCIsInZhcmlhbnRSZWZlcmVuY2UiLCJQYWdlIiwiTm9uZSIsIm9WYXJpYW50TWFuYWdlbWVudCIsIm9DdXJyZW50VmFyaWFudCIsImZpbmQiLCJvSXRlbSIsImV4ZWN1dGVPblNlbGVjdCIsIl9jaGVja0lmRGlzcGxheUN1cnJlbmN5SXNSZXF1aXJlZCIsIm1ldGFNb2RlbCIsImNvbnRleHRQYXRoIiwibWV0YUNvbnRleHQiLCJnZXRNZXRhQ29udGV4dCIsImRhdGFNb2RlbE9iamVjdFBhdGgiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJlbnRpdHlTZXQiLCJzdGFydGluZ0VudGl0eVNldCIsIl90eXBlIiwidW5kZWZpbmVkIiwicmVxdWlyZWRQcm9wZXJ0aWVzIiwiYW5ub3RhdGlvbnMiLCJDYXBhYmlsaXRpZXMiLCJGaWx0ZXJSZXN0cmljdGlvbnMiLCJSZXF1aXJlZFByb3BlcnRpZXMiLCJkaXNwbGF5Q3VycmVuY3lJc01hbmRhdG9yeSIsInNvbWUiLCJyZXF1aXJlZFByb3BlcnR5IiwidmFsdWUiLCJfYWRkRGVmYXVsdERpc3BsYXlDdXJyZW5jeVRvU1YiLCJzdiIsInN2RGVmYXVsdHMiLCJpc0VtcHR5IiwiZ2V0TWV0YU1vZGVsIiwic3ZPcHRpb25zIiwiZ2V0U2VsZWN0T3B0aW9uIiwiZGVmYXVsdFNWT3B0aW9ucyIsImRpc3BsYXlDdXJyZW5jeURlZmF1bHRFeGlzdHMiLCJub1NWRGlzcGxheUN1cnJlbmN5RXhpc3RzIiwiZGlzcGxheUN1cnJlbmN5U2VsZWN0T3B0aW9uIiwic2lnbiIsIm9wdGlvbiIsImxvdyIsImhpZ2giLCJhZGRTZWxlY3RPcHRpb24iLCJfZ2V0QWRqdXN0ZWRTViIsImFwcFN0YXRlU1YiLCJ1c2VGTFBEZWZhdWx0VmFsdWVzIiwiYWRqdXN0ZWRTViIsIlNlbGVjdGlvblZhcmlhbnQiLCJ0b0pTT05PYmplY3QiLCJhbHJlYWR5QXBwbGllZFNWIiwiZ2V0U2VsZWN0aW9uVmFyaWFudCIsImFwcGxpZWRTZWxPcHROYW1lcyIsImdldFNlbGVjdE9wdGlvbnNQcm9wZXJ0eU5hbWVzIiwicmVkdWNlIiwic3ZDb3B5Iiwic2VsT3B0aW9uTmFtZSIsInN2U2VsT3B0cyIsInNlbGVjdE9wdGlvbnMiLCJtYXNzQWRkU2VsZWN0T3B0aW9uIiwibmF2aWdhdGlvblBhcmFtZXRlciIsImZpbHRlclZhcmlhbnRBcHBsaWVkIiwiZmlsdGVyQmFyIiwic2VsZWN0aW9uVmFyaWFudCIsInNlbGVjdGlvblZhcmlhbnREZWZhdWx0cyIsInJlcVN0ZFZhcmlhbnQiLCJiTmF2U2VsVmFySGFzRGVmYXVsdHNPbmx5Iiwic3ZEZWZhdWx0c09ubHkiLCJyZXNvbHZlIiwiY2xlYXJGaWx0ZXJzQW5kUmVwbGFjZVdpdGhBcHBTdGF0ZSIsIl9hY3RpdmVWYXJpYW50QW5kR2V0QXBwU3RhdGVPdmVycmlkZSIsInN2RGVmYXVsdHNBcmVQcmVzZW50Iiwic3RkVmFyaWFudElzRGVmYXVsdFZhcmlhbnQiLCJnZXREZWZhdWx0VmFyaWFudEtleSIsInN2VG9TZXQiLCJzZXRTZWxlY3Rpb25WYXJpYW50IiwidmFyaWFudEtleSIsImdldElkIiwiX2ZuQ2xlYXJTdGF0ZUJlZm9yZXhBcHBOYXYiLCJTdGF0ZVV0aWwiLCJyZXRyaWV2ZUV4dGVybmFsU3RhdGUiLCJvRXh0ZXJuYWxTdGF0ZSIsIm9Db25kaXRpb24iLCJmaWx0ZXIiLCJmaWVsZCIsImNvbmRpdGlvbiIsIm9FcnJvciIsImFJdGVtcyIsIm9DbGVhckNvbmRpdGlvbnMiLCJhcHBseUV4dGVybmFsU3RhdGUiLCJpdGVtcyJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVmlld1N0YXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgVmlld1N0YXRlIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9WaWV3U3RhdGVcIjtcbmltcG9ydCB0eXBlIHsgTmF2aWdhdGlvblBhcmFtZXRlciB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9WaWV3U3RhdGVcIjtcbmltcG9ydCB7IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IEtlZXBBbGl2ZUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9LZWVwQWxpdmVIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IENvcmVMaWJyYXJ5IGZyb20gXCJzYXAvZmUvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnR5SW5mbyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL0RlbGVnYXRlVXRpbFwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlckJhci9GaWx0ZXJCYXJBUElcIjtcbmltcG9ydCBOYXZMaWJyYXJ5IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9saWJyYXJ5XCI7XG5pbXBvcnQgU2VsZWN0aW9uVmFyaWFudCBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vU2VsZWN0aW9uVmFyaWFudFwiO1xuaW1wb3J0IHR5cGUgTGlzdFJlcG9ydENvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvTGlzdFJlcG9ydC9MaXN0UmVwb3J0Q29udHJvbGxlci5jb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IERldmljZSBmcm9tIFwic2FwL3VpL0RldmljZVwiO1xuaW1wb3J0IENvbnRyb2xWYXJpYW50QXBwbHlBUEkgZnJvbSBcInNhcC91aS9mbC9hcHBseS9hcGkvQ29udHJvbFZhcmlhbnRBcHBseUFQSVwiO1xuaW1wb3J0IHR5cGUgVmFyaWFudE1hbmFnZW1lbnQgZnJvbSBcInNhcC91aS9mbC92YXJpYW50cy9WYXJpYW50TWFuYWdlbWVudFwiO1xuaW1wb3J0IHR5cGUgQ2hhcnQgZnJvbSBcInNhcC91aS9tZGMvQ2hhcnRcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhciBmcm9tIFwic2FwL3VpL21kYy9GaWx0ZXJCYXJcIjtcbmltcG9ydCBTdGF0ZVV0aWwgZnJvbSBcInNhcC91aS9tZGMvcDEzbi9TdGF0ZVV0aWxcIjtcbmltcG9ydCB0eXBlIFRhYmxlIGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5cbnR5cGUgVmFyaWFudE9iamVjdCA9IHtcblx0YXV0aG9yOiBzdHJpbmc7XG5cdGNoYW5nZTogYm9vbGVhbjtcblx0Y29udGV4dHM6IG9iamVjdDtcblx0ZXhlY3V0ZU9uU2VsZWN0OiBib29sZWFuO1xuXHRmYXZvcml0ZTogYm9vbGVhbjtcblx0a2V5OiBzdHJpbmc7XG5cdG9yaWdpbmFsQ29udGV4dHM6IG9iamVjdDtcblx0b3JpZ2luYWxFeGVjdXRlT25TZWxlY3Q6IGJvb2xlYW47XG5cdG9yaWdpbmFsRmF2b3JpdGU6IGJvb2xlYW47XG5cdG9yaWdpbmFsVGl0bGU6IHN0cmluZztcblx0b3JpZ2luYWxWaXNpYmxlOiBib29sZWFuO1xuXHRyZW1vdmU6IGJvb2xlYW47XG5cdHJlbmFtZTogYm9vbGVhbjtcblx0c2hhcmluZzogc3RyaW5nO1xuXHR0aXRsZTogc3RyaW5nO1xuXHR2aXNpYmxlOiBib29sZWFuO1xuXHRnZXRLZXk6ICgpID0+IHN0cmluZztcbn07XG5cbnR5cGUgTmF2SGFuZGxlck5hdlBhcmFtcyA9IE5hdmlnYXRpb25QYXJhbWV0ZXIgJiB7XG5cdGJOYXZTZWxWYXJIYXNEZWZhdWx0c09ubHk/OiBib29sZWFuO1xufTtcblxudHlwZSBMUlZpZXdEYXRhID0ge1xuXHRjb250cm9sQ29uZmlndXJhdGlvbj86IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+Pjtcblx0ZW50aXR5U2V0Pzogc3RyaW5nO1xuXHRjb250ZXh0UGF0aD86IHN0cmluZztcblx0dmFyaWFudE1hbmFnZW1lbnQ/OiBib29sZWFuO1xufTtcblxudHlwZSBWYXJpYW50SURzID0ge1xuXHRzUGFnZVZhcmlhbnRJZDogc3RyaW5nO1xuXHRzRmlsdGVyQmFyVmFyaWFudElkOiBzdHJpbmc7XG5cdHNUYWJsZVZhcmlhbnRJZDogc3RyaW5nO1xuXHRzQ2hhcnRWYXJpYW50SWQ6IHN0cmluZztcbn07XG5cbmNvbnN0IE5hdlR5cGUgPSBOYXZMaWJyYXJ5Lk5hdlR5cGUsXG5cdFZhcmlhbnRNYW5hZ2VtZW50VHlwZSA9IENvcmVMaWJyYXJ5LlZhcmlhbnRNYW5hZ2VtZW50LFxuXHRUZW1wbGF0ZUNvbnRlbnRWaWV3ID0gQ29yZUxpYnJhcnkuVGVtcGxhdGVDb250ZW50Vmlldyxcblx0SW5pdGlhbExvYWRNb2RlID0gQ29yZUxpYnJhcnkuSW5pdGlhbExvYWRNb2RlLFxuXHRESVNQTEFZX0NVUlJFTkNZX1BST1BFUlRZX05BTUUgPSBcIkRpc3BsYXlDdXJyZW5jeVwiO1xuXG5jb25zdCBWaWV3U3RhdGVPdmVycmlkZTogYW55ID0ge1xuXHRfYlNlYXJjaFRyaWdnZXJlZDogZmFsc2UsXG5cdGFwcGx5SW5pdGlhbFN0YXRlT25seTogZnVuY3Rpb24gKCkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9LFxuXHRvbkJlZm9yZVN0YXRlQXBwbGllZDogZnVuY3Rpb24gKHRoaXM6IFZpZXdTdGF0ZSAmIHR5cGVvZiBWaWV3U3RhdGVPdmVycmlkZSwgYVByb21pc2VzOiBhbnksIG5hdmlnYXRpb25UeXBlPzogc3RyaW5nKSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0b0ZpbHRlckJhciA9IG9Db250cm9sbGVyLl9nZXRGaWx0ZXJCYXJDb250cm9sKCksXG5cdFx0XHRhVGFibGVzID0gb0NvbnRyb2xsZXIuX2dldENvbnRyb2xzKFwidGFibGVcIik7XG5cdFx0aWYgKG9GaWx0ZXJCYXIpIHtcblx0XHRcdG9GaWx0ZXJCYXIuc2V0U3VzcGVuZFNlbGVjdGlvbih0cnVlKTtcblx0XHRcdGFQcm9taXNlcy5wdXNoKChvRmlsdGVyQmFyIGFzIGFueSkud2FpdEZvckluaXRpYWxpemF0aW9uKCkpO1xuXHRcdFx0Ly9UaGlzIGlzIHJlcXVpcmVkIHRvIHJlbW92ZSBhbnkgZXhpc3Rpbmcgb3IgZGVmYXVsdCBmaWx0ZXIgY29uZGl0aW9ucyBiZWZvcmUgcmVzdG9yaW5nIHRoZSBmaWx0ZXIgYmFyIHN0YXRlIGluIGh5YnJpZCBuYXZpZ2F0aW9uIG1vZGUuXG5cdFx0XHRpZiAobmF2aWdhdGlvblR5cGUgPT09IE5hdlR5cGUuaHlicmlkKSB7XG5cdFx0XHRcdHRoaXMuX2NsZWFyRmlsdGVyQ29uZGl0aW9ucyhvRmlsdGVyQmFyKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0YVRhYmxlcy5mb3JFYWNoKGZ1bmN0aW9uIChvVGFibGU6IGFueSkge1xuXHRcdFx0YVByb21pc2VzLnB1c2gob1RhYmxlLmluaXRpYWxpemVkKCkpO1xuXHRcdH0pO1xuXG5cdFx0ZGVsZXRlIHRoaXMuX2JTZWFyY2hUcmlnZ2VyZWQ7XG5cdH0sXG5cdGFkYXB0QmluZGluZ1JlZnJlc2hDb250cm9sczogZnVuY3Rpb24gKHRoaXM6IFZpZXdTdGF0ZSwgYUNvbnRyb2xzOiBhbnkpIHtcblx0XHRjb25zdCBvVmlldyA9IHRoaXMuYmFzZS5nZXRWaWV3KCksXG5cdFx0XHRvQ29udHJvbGxlciA9IG9WaWV3LmdldENvbnRyb2xsZXIoKSBhcyBMaXN0UmVwb3J0Q29udHJvbGxlcixcblx0XHRcdGFWaWV3Q29udHJvbHMgPSBvQ29udHJvbGxlci5fZ2V0Q29udHJvbHMoKSxcblx0XHRcdGFDb250cm9sc1RvUmVmcmVzaCA9IEtlZXBBbGl2ZUhlbHBlci5nZXRDb250cm9sc0ZvclJlZnJlc2gob1ZpZXcsIGFWaWV3Q29udHJvbHMpO1xuXG5cdFx0QXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoYUNvbnRyb2xzLCBhQ29udHJvbHNUb1JlZnJlc2gpO1xuXHR9LFxuXHRhZGFwdFN0YXRlQ29udHJvbHM6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsIGFTdGF0ZUNvbnRyb2xzOiBhbnkpIHtcblx0XHRjb25zdCBvVmlldyA9IHRoaXMuZ2V0VmlldygpLFxuXHRcdFx0b0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCkgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXIsXG5cdFx0XHRvVmlld0RhdGEgPSBvVmlldy5nZXRWaWV3RGF0YSgpLFxuXHRcdFx0YkNvbnRyb2xWTSA9IG9WaWV3RGF0YS52YXJpYW50TWFuYWdlbWVudCA9PT0gVmFyaWFudE1hbmFnZW1lbnRUeXBlLkNvbnRyb2w7XG5cblx0XHRjb25zdCBvRmlsdGVyQmFyVk0gPSB0aGlzLl9nZXRGaWx0ZXJCYXJWTShvVmlldyk7XG5cdFx0aWYgKG9GaWx0ZXJCYXJWTSkge1xuXHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvRmlsdGVyQmFyVk0pO1xuXHRcdH1cblx0XHRpZiAob0NvbnRyb2xsZXIuX2lzTXVsdGlNb2RlKCkpIHtcblx0XHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob0NvbnRyb2xsZXIuX2dldE11bHRpTW9kZUNvbnRyb2woKSk7XG5cdFx0fVxuXHRcdG9Db250cm9sbGVyLl9nZXRDb250cm9scyhcInRhYmxlXCIpLmZvckVhY2goZnVuY3Rpb24gKG9UYWJsZTogYW55KSB7XG5cdFx0XHRjb25zdCBvUXVpY2tGaWx0ZXIgPSBvVGFibGUuZ2V0UXVpY2tGaWx0ZXIoKTtcblx0XHRcdGlmIChvUXVpY2tGaWx0ZXIpIHtcblx0XHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvUXVpY2tGaWx0ZXIpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGJDb250cm9sVk0pIHtcblx0XHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvVGFibGUuZ2V0VmFyaWFudCgpKTtcblx0XHRcdH1cblx0XHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob1RhYmxlKTtcblx0XHR9KTtcblx0XHRpZiAob0NvbnRyb2xsZXIuX2dldENvbnRyb2xzKFwiQ2hhcnRcIikpIHtcblx0XHRcdG9Db250cm9sbGVyLl9nZXRDb250cm9scyhcIkNoYXJ0XCIpLmZvckVhY2goZnVuY3Rpb24gKG9DaGFydDogYW55KSB7XG5cdFx0XHRcdGlmIChiQ29udHJvbFZNKSB7XG5cdFx0XHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvQ2hhcnQuZ2V0VmFyaWFudCgpKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9DaGFydCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0aWYgKG9Db250cm9sbGVyLl9nZXRDb250cm9sRnJvbVBhZ2VNb2RlbFByb3BlcnR5KFwiL211bHRpRGltZW5zaW9uYWxHcmlkSWRzL3ZhcmlhbnRNYW5hZ2VtZW50SWRcIikpIHtcblx0XHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob0NvbnRyb2xsZXIuX2dldENvbnRyb2xGcm9tUGFnZU1vZGVsUHJvcGVydHkoXCIvbXVsdGlEaW1lbnNpb25hbEdyaWRJZHMvdmFyaWFudE1hbmFnZW1lbnRJZFwiKSk7XG5cdFx0fVxuXHRcdGlmIChvQ29udHJvbGxlci5faGFzTXVsdGlWaXN1YWxpemF0aW9ucygpKSB7XG5cdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9Db250cm9sbGVyLl9nZXRTZWdtZW50ZWRCdXR0b24oVGVtcGxhdGVDb250ZW50Vmlldy5DaGFydCkpO1xuXHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvQ29udHJvbGxlci5fZ2V0U2VnbWVudGVkQnV0dG9uKFRlbXBsYXRlQ29udGVudFZpZXcuVGFibGUpKTtcblx0XHR9XG5cdFx0Y29uc3Qgb0ZpbHRlckJhciA9IG9Db250cm9sbGVyLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0aWYgKG9GaWx0ZXJCYXIpIHtcblx0XHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob0ZpbHRlckJhcik7XG5cdFx0fVxuXHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob1ZpZXcuYnlJZChcImZlOjpMaXN0UmVwb3J0XCIpKTtcblx0fSxcblx0cmV0cmlldmVBZGRpdGlvbmFsU3RhdGVzOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLCBtQWRkaXRpb25hbFN0YXRlczogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0YlBlbmRpbmdGaWx0ZXIgPSAob1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCkuZ2V0UHJvcGVydHkoXCJoYXNQZW5kaW5nRmlsdGVyc1wiKTtcblxuXHRcdG1BZGRpdGlvbmFsU3RhdGVzLmRhdGFMb2FkZWQgPSAhYlBlbmRpbmdGaWx0ZXIgfHwgISF0aGlzLl9iU2VhcmNoVHJpZ2dlcmVkO1xuXHRcdGlmIChvQ29udHJvbGxlci5faGFzTXVsdGlWaXN1YWxpemF0aW9ucygpKSB7XG5cdFx0XHRjb25zdCBzQWxwQ29udGVudFZpZXcgPSBvVmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpLmdldFByb3BlcnR5KFwiYWxwQ29udGVudFZpZXdcIik7XG5cdFx0XHRtQWRkaXRpb25hbFN0YXRlcy5hbHBDb250ZW50VmlldyA9IHNBbHBDb250ZW50Vmlldztcblx0XHR9XG5cblx0XHRkZWxldGUgdGhpcy5fYlNlYXJjaFRyaWdnZXJlZDtcblx0fSxcblx0YXBwbHlBZGRpdGlvbmFsU3RhdGVzOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLCBvQWRkaXRpb25hbFN0YXRlczogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0b0ZpbHRlckJhciA9IG9Db250cm9sbGVyLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cblx0XHRpZiAob0FkZGl0aW9uYWxTdGF0ZXMpIHtcblx0XHRcdC8vIGV4cGxpY2l0IGNoZWNrIGZvciBib29sZWFuIHZhbHVlcyAtICd1bmRlZmluZWQnIHNob3VsZCBub3QgYWx0ZXIgdGhlIHRyaWdnZXJlZCBzZWFyY2ggcHJvcGVydHlcblx0XHRcdGlmIChvQWRkaXRpb25hbFN0YXRlcy5kYXRhTG9hZGVkID09PSBmYWxzZSAmJiBvRmlsdGVyQmFyKSB7XG5cdFx0XHRcdC8vIHdpdGhvdXQgdGhpcywgdGhlIGRhdGEgaXMgbG9hZGVkIG9uIG5hdmlnYXRpbmcgYmFja1xuXHRcdFx0XHQob0ZpbHRlckJhciBhcyBhbnkpLl9iU2VhcmNoVHJpZ2dlcmVkID0gZmFsc2U7XG5cdFx0XHR9IGVsc2UgaWYgKG9BZGRpdGlvbmFsU3RhdGVzLmRhdGFMb2FkZWQgPT09IHRydWUpIHtcblx0XHRcdFx0aWYgKG9GaWx0ZXJCYXIpIHtcblx0XHRcdFx0XHRjb25zdCBmaWx0ZXJCYXJBUEkgPSBvRmlsdGVyQmFyLmdldFBhcmVudCgpIGFzIEZpbHRlckJhckFQSTtcblx0XHRcdFx0XHRmaWx0ZXJCYXJBUEkudHJpZ2dlclNlYXJjaCgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuX2JTZWFyY2hUcmlnZ2VyZWQgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0aWYgKG9Db250cm9sbGVyLl9oYXNNdWx0aVZpc3VhbGl6YXRpb25zKCkpIHtcblx0XHRcdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0ID0gb1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRcdFx0aWYgKCFEZXZpY2Uuc3lzdGVtLmRlc2t0b3AgJiYgb0FkZGl0aW9uYWxTdGF0ZXMuYWxwQ29udGVudFZpZXcgPT0gVGVtcGxhdGVDb250ZW50Vmlldy5IeWJyaWQpIHtcblx0XHRcdFx0XHRvQWRkaXRpb25hbFN0YXRlcy5hbHBDb250ZW50VmlldyA9IFRlbXBsYXRlQ29udGVudFZpZXcuQ2hhcnQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0XG5cdFx0XHRcdFx0LmdldE1vZGVsKClcblx0XHRcdFx0XHQuc2V0UHJvcGVydHkoYCR7b0ludGVybmFsTW9kZWxDb250ZXh0LmdldFBhdGgoKX0vYWxwQ29udGVudFZpZXdgLCBvQWRkaXRpb25hbFN0YXRlcy5hbHBDb250ZW50Vmlldyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgU2VhcmNoIGNhbiBiZSB0cmlnZ2VyZWQgYXQgaW5pdGlhbCBsb2FkIG9mIHRoZSBhcHBsaWNhdGlvbiBvciBub3QuXG5cdCAqXG5cdCAqIEBwYXJhbSBuYXZpZ2F0aW9uVHlwZSBOYXZpZ2F0aW9uIFR5cGUgZHVyaW5nIHRoZSBsb2FkIG9mIHRoZSBhcHBsaWNhdGlvblxuXHQgKiBAcmV0dXJucyBBIEJvb2xlYW4gZGV0ZXJtaW5pbmcgd2hldGhlciBTZWFyY2ggY2FuIGJlIHRyaWdnZXJlZCBvciBub3Rcblx0ICovXG5cdGlzU2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZChuYXZpZ2F0aW9uVHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgdmlldyA9IHRoaXMuZ2V0VmlldygpLFxuXHRcdFx0Y29udHJvbGxlciA9IHZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0dmlld0RhdGEgPSB2aWV3LmdldFZpZXdEYXRhKCk7XG5cdFx0bGV0IGlzU2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZCA9IGZhbHNlLFxuXHRcdFx0dmFyaWFudE1hbmFnZW1lbnQ7XG5cdFx0Ly8gRGV0ZXJtaW5pbmcgd2hldGhlciBpdCdzIENvbnRyb2wgdmFyaWFudE1hbmFnZW1lbnQgb3IgUGFnZSB2YXJpYW50TWFuYWdlbWVudFxuXHRcdGlmICh2aWV3RGF0YS52YXJpYW50TWFuYWdlbWVudCA9PT0gQ29yZUxpYnJhcnkuVmFyaWFudE1hbmFnZW1lbnQuQ29udHJvbCkge1xuXHRcdFx0dmFyaWFudE1hbmFnZW1lbnQgPSBjb250cm9sbGVyLl9nZXRGaWx0ZXJCYXJWYXJpYW50Q29udHJvbCgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR2YXJpYW50TWFuYWdlbWVudCA9IHZpZXcuYnlJZChcImZlOjpQYWdlVmFyaWFudE1hbmFnZW1lbnRcIik7XG5cdFx0fVxuXHRcdGNvbnN0IGN1cnJlbnRWYXJpYW50S2V5ID0gdmFyaWFudE1hbmFnZW1lbnQ/LmdldEN1cnJlbnRWYXJpYW50S2V5KCk7XG5cdFx0Ly9UaGUgY2hlY2sgc2hhbGwgaGFwcGVuIGZvciAnaW50aWFsIGxvYWQnIGFuZCAnQXBwbHkgQXV0b21hdGljYWxseScgZm9yIGNvbGxhcHNpbmcgdGhlIGhlYWRlciBvclxuXHRcdC8vIGFsd2F5cyBiZSBjb2xsYXBzZWQgaWYgbmF2VHlwZSBpcyB4QXBwU3RhdGVcblx0XHQvLyBpbml0aWFsTG9hZCBBdXRvIG9yIERpc2FibGVkXG5cdFx0aWYgKG5hdmlnYXRpb25UeXBlID09PSBOYXZUeXBlLnhBcHBTdGF0ZSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSBlbHNlIGlmICh2YXJpYW50TWFuYWdlbWVudCAmJiB2aWV3RGF0YS5pbml0aWFsTG9hZCAhPT0gSW5pdGlhbExvYWRNb2RlLkVuYWJsZWQpIHtcblx0XHRcdC8vIEhlYWRlciBpcyBjb2xsYXBzZWQgaWYgcHJlc2V0IGZpbHRlcnMgYXJlIHNldCBmb3IgaW5pdGlhbCBsb2FkIEF1dG8sIEhlYWRlciBzaGFsbCByZW1haW4gZXhwYW5kZWQgaWYgaW5pdGlhbCBsb2FkIGlzIEF1dG8gd2l0aG91dCBwcmVzZXQgZmlsdGVycyBvciBpbnRpYWwgbG9hZCBpcyBkaXNhYmxlZFxuXHRcdFx0aWYgKGNvbnRyb2xsZXIuX3Nob3VsZEF1dG9UcmlnZ2VyU2VhcmNoKHRoaXMuX2dldEZpbHRlckJhclZNKHZpZXcpKSkge1xuXHRcdFx0XHRpc1NlYXJjaFRyaWdnZXJlZEJ5SW5pdGlhbExvYWQgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQvLyBpbml0aWFsTG9hZCBFbmFibGVkXG5cdFx0ZWxzZSBpZiAoXG5cdFx0XHR2YXJpYW50TWFuYWdlbWVudCAmJlxuXHRcdFx0dmlld0RhdGEuaW5pdGlhbExvYWQgPT09IEluaXRpYWxMb2FkTW9kZS5FbmFibGVkICYmXG5cdFx0XHRjb250cm9sbGVyLl9nZXRBcHBseUF1dG9tYXRpY2FsbHlPblZhcmlhbnQodmFyaWFudE1hbmFnZW1lbnQsIGN1cnJlbnRWYXJpYW50S2V5KVxuXHRcdCkge1xuXHRcdFx0aXNTZWFyY2hUcmlnZ2VyZWRCeUluaXRpYWxMb2FkID0gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIGlzU2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZDtcblx0fSxcblxuXHRfZW5hYmxlRmlsdGVyQmFyOiBmdW5jdGlvbiAoZmlsdGVyQmFyQ29udHJvbDogRmlsdGVyQmFyLCBwcmV2ZW50SW5pdGlhbFNlYXJjaDogYm9vbGVhbikge1xuXHRcdGNvbnN0IGZpbHRlckJhckFQSSA9IGZpbHRlckJhckNvbnRyb2wuZ2V0UGFyZW50KCkgYXMgRmlsdGVyQmFyQVBJO1xuXHRcdGNvbnN0IGZuT25TZWFyY2ggPSAoKTogdm9pZCA9PiB7XG5cdFx0XHR0aGlzLl9iU2VhcmNoVHJpZ2dlcmVkID0gIXByZXZlbnRJbml0aWFsU2VhcmNoO1xuXHRcdH07XG5cblx0XHQvLyByZXNldCB0aGUgc3VzcGVuZCBzZWxlY3Rpb24gb24gZmlsdGVyIGJhciB0byBhbGxvdyBsb2FkaW5nIG9mIGRhdGEgd2hlbiBuZWVkZWQgKHdhcyBzZXQgb24gTFIgSW5pdClcblx0XHRpZiAoZmlsdGVyQmFyQ29udHJvbC5nZXRTdXNwZW5kU2VsZWN0aW9uKCkpIHtcblx0XHRcdC8vIE9ubHkgaWYgc2VhcmNoIGlzIGZpcmVkIHdlIHNldCBfYlNlYXJjaFRyaWdnZXJlZC5cblx0XHRcdC8vIElmIHRoZXJlIHdhcyBhbiBlcnJvciBkdWUgdG8gcmVxdWlyZWQgZmlsdGVyZmllbGRzIGVtcHR5IG9yIG90aGVyIGlzc3VlcyB3ZSBza2lwIHNldHRpbmcgX2JTZWFyY2hUcmlnZ2VyZWQuXG5cdFx0XHRmaWx0ZXJCYXJBUEkuYXR0YWNoRXZlbnRPbmNlKFwic2VhcmNoXCIsIGZuT25TZWFyY2gpO1xuXHRcdFx0ZmlsdGVyQmFyQ29udHJvbC5zZXRTdXNwZW5kU2VsZWN0aW9uKGZhbHNlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gc2VhcmNoIG1pZ2h0IGFscmVhZHkgYmUgdHJpZ2dlcmVkLlxuXHRcdFx0Zm5PblNlYXJjaCgpO1xuXHRcdH1cblx0fSxcblxuXHRfYXBwbHlOYXZpZ2F0aW9uUGFyYW1ldGVyc1RvRmlsdGVyYmFyOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLCBvTmF2aWdhdGlvblBhcmFtZXRlcjogYW55LCBhUmVzdWx0czogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKTtcblx0XHRjb25zdCBvQ29udHJvbGxlciA9IG9WaWV3LmdldENvbnRyb2xsZXIoKSBhcyBMaXN0UmVwb3J0Q29udHJvbGxlcjtcblx0XHRjb25zdCBvQXBwQ29tcG9uZW50ID0gb0NvbnRyb2xsZXIuZ2V0QXBwQ29tcG9uZW50KCk7XG5cdFx0Y29uc3Qgb0NvbXBvbmVudERhdGEgPSBvQXBwQ29tcG9uZW50LmdldENvbXBvbmVudERhdGEoKTtcblx0XHRjb25zdCBvU3RhcnR1cFBhcmFtZXRlcnMgPSAob0NvbXBvbmVudERhdGEgJiYgb0NvbXBvbmVudERhdGEuc3RhcnR1cFBhcmFtZXRlcnMpIHx8IHt9O1xuXHRcdGNvbnN0IG9WYXJpYW50UHJvbWlzZSA9IHRoaXMuaGFuZGxlVmFyaWFudElkUGFzc2VkVmlhVVJMUGFyYW1zKG9TdGFydHVwUGFyYW1ldGVycyk7XG5cdFx0bGV0IGJGaWx0ZXJWYXJpYW50QXBwbGllZDogYm9vbGVhbjtcblx0XHRhUmVzdWx0cy5wdXNoKFxuXHRcdFx0b1ZhcmlhbnRQcm9taXNlXG5cdFx0XHRcdC50aGVuKChhVmFyaWFudHM6IGFueVtdKSA9PiB7XG5cdFx0XHRcdFx0aWYgKGFWYXJpYW50cyAmJiBhVmFyaWFudHMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0aWYgKGFWYXJpYW50c1swXSA9PT0gdHJ1ZSB8fCBhVmFyaWFudHNbMV0gPT09IHRydWUpIHtcblx0XHRcdFx0XHRcdFx0YkZpbHRlclZhcmlhbnRBcHBsaWVkID0gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMuX2FwcGx5U2VsZWN0aW9uVmFyaWFudChvVmlldywgb05hdmlnYXRpb25QYXJhbWV0ZXIsIGJGaWx0ZXJWYXJpYW50QXBwbGllZCk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0XHRsZXQgYlByZXZlbnRJbml0aWFsU2VhcmNoID0gZmFsc2U7XG5cdFx0XHRcdFx0Y29uc3Qgb0ZpbHRlckJhclZNID0gdGhpcy5fZ2V0RmlsdGVyQmFyVk0ob1ZpZXcpO1xuXHRcdFx0XHRcdGNvbnN0IG9GaWx0ZXJCYXJDb250cm9sID0gb0NvbnRyb2xsZXIuX2dldEZpbHRlckJhckNvbnRyb2woKTtcblx0XHRcdFx0XHRpZiAob0ZpbHRlckJhckNvbnRyb2wpIHtcblx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0KG9OYXZpZ2F0aW9uUGFyYW1ldGVyLm5hdmlnYXRpb25UeXBlICE9PSBOYXZUeXBlLmluaXRpYWwgJiYgb05hdmlnYXRpb25QYXJhbWV0ZXIucmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQpIHx8XG5cdFx0XHRcdFx0XHRcdCghb0ZpbHRlckJhclZNICYmIG9WaWV3LmdldFZpZXdEYXRhKCkuaW5pdGlhbExvYWQgPT09IEluaXRpYWxMb2FkTW9kZS5FbmFibGVkKSB8fFxuXHRcdFx0XHRcdFx0XHRvQ29udHJvbGxlci5fc2hvdWxkQXV0b1RyaWdnZXJTZWFyY2gob0ZpbHRlckJhclZNKVxuXHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGZpbHRlckJhckFQSSA9IG9GaWx0ZXJCYXJDb250cm9sLmdldFBhcmVudCgpIGFzIEZpbHRlckJhckFQSTtcblx0XHRcdFx0XHRcdFx0ZmlsdGVyQmFyQVBJLnRyaWdnZXJTZWFyY2goKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGJQcmV2ZW50SW5pdGlhbFNlYXJjaCA9IHRoaXMuX3ByZXZlbnRJbml0aWFsU2VhcmNoKG9GaWx0ZXJCYXJWTSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQvL2NvbGxhcHNlIG9yIGV4cGFuZCBzaGFsbCBiZSBhdmFpbGFibGUgb25seSBmb3Igbm9uLWRlc2t0b3Agc3lzdGVtc1xuXHRcdFx0XHRcdFx0aWYgKCFEZXZpY2Uuc3lzdGVtLmRlc2t0b3ApIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgaW50ZXJuYWxNb2RlbENvbnRleHQgPSBvVmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdFx0XHRcdFx0XHRjb25zdCBzZWFyY2hUcmlnZ2VyZWRCeUluaXRpYWxMb2FkID0gdGhpcy5pc1NlYXJjaFRyaWdnZXJlZEJ5SW5pdGlhbExvYWQob05hdmlnYXRpb25QYXJhbWV0ZXIubmF2aWdhdGlvblR5cGUpO1xuXHRcdFx0XHRcdFx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcInNlYXJjaFRyaWdnZXJlZEJ5SW5pdGlhbExvYWRcIiwgc2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR0aGlzLl9lbmFibGVGaWx0ZXJCYXIob0ZpbHRlckJhckNvbnRyb2wsIGJQcmV2ZW50SW5pdGlhbFNlYXJjaCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoXCJWYXJpYW50IElEIGNhbm5vdCBiZSBhcHBsaWVkXCIpO1xuXHRcdFx0XHR9KVxuXHRcdCk7XG5cdH0sXG5cblx0aGFuZGxlVmFyaWFudElkUGFzc2VkVmlhVVJMUGFyYW1zOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLCBvVXJsUGFyYW1zOiBhbnkpIHtcblx0XHRjb25zdCBhUGFnZVZhcmlhbnRJZCA9IG9VcmxQYXJhbXNbXCJzYXAtdWktZmUtdmFyaWFudC1pZFwiXSxcblx0XHRcdGFGaWx0ZXJCYXJWYXJpYW50SWQgPSBvVXJsUGFyYW1zW1wic2FwLXVpLWZlLWZpbHRlcmJhci12YXJpYW50LWlkXCJdLFxuXHRcdFx0YVRhYmxlVmFyaWFudElkID0gb1VybFBhcmFtc1tcInNhcC11aS1mZS10YWJsZS12YXJpYW50LWlkXCJdLFxuXHRcdFx0YUNoYXJ0VmFyaWFudElkID0gb1VybFBhcmFtc1tcInNhcC11aS1mZS1jaGFydC12YXJpYW50LWlkXCJdO1xuXHRcdGxldCBvVmFyaWFudElEcztcblx0XHRpZiAoYVBhZ2VWYXJpYW50SWQgfHwgYUZpbHRlckJhclZhcmlhbnRJZCB8fCBhVGFibGVWYXJpYW50SWQgfHwgYUNoYXJ0VmFyaWFudElkKSB7XG5cdFx0XHRvVmFyaWFudElEcyA9IHtcblx0XHRcdFx0c1BhZ2VWYXJpYW50SWQ6IGFQYWdlVmFyaWFudElkICYmIGFQYWdlVmFyaWFudElkWzBdLFxuXHRcdFx0XHRzRmlsdGVyQmFyVmFyaWFudElkOiBhRmlsdGVyQmFyVmFyaWFudElkICYmIGFGaWx0ZXJCYXJWYXJpYW50SWRbMF0sXG5cdFx0XHRcdHNUYWJsZVZhcmlhbnRJZDogYVRhYmxlVmFyaWFudElkICYmIGFUYWJsZVZhcmlhbnRJZFswXSxcblx0XHRcdFx0c0NoYXJ0VmFyaWFudElkOiBhQ2hhcnRWYXJpYW50SWQgJiYgYUNoYXJ0VmFyaWFudElkWzBdXG5cdFx0XHR9O1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5faGFuZGxlQ29udHJvbFZhcmlhbnRJZChvVmFyaWFudElEcyk7XG5cdH0sXG5cblx0X2hhbmRsZUNvbnRyb2xWYXJpYW50SWQ6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsIG9WYXJpYW50SURzOiBWYXJpYW50SURzKSB7XG5cdFx0bGV0IG9WTTogVmFyaWFudE1hbmFnZW1lbnQ7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdGFQcm9taXNlczogVmFyaWFudE1hbmFnZW1lbnRbXSA9IFtdO1xuXHRcdGNvbnN0IHNWYXJpYW50TWFuYWdlbWVudCA9IG9WaWV3LmdldFZpZXdEYXRhKCkudmFyaWFudE1hbmFnZW1lbnQ7XG5cdFx0aWYgKG9WYXJpYW50SURzICYmIG9WYXJpYW50SURzLnNQYWdlVmFyaWFudElkICYmIHNWYXJpYW50TWFuYWdlbWVudCA9PT0gXCJQYWdlXCIpIHtcblx0XHRcdG9WTSA9IG9WaWV3LmJ5SWQoXCJmZTo6UGFnZVZhcmlhbnRNYW5hZ2VtZW50XCIpO1xuXHRcdFx0dGhpcy5faGFuZGxlUGFnZVZhcmlhbnRJZChvVmFyaWFudElEcywgb1ZNLCBhUHJvbWlzZXMpO1xuXHRcdH0gZWxzZSBpZiAob1ZhcmlhbnRJRHMgJiYgc1ZhcmlhbnRNYW5hZ2VtZW50ID09PSBcIkNvbnRyb2xcIikge1xuXHRcdFx0aWYgKG9WYXJpYW50SURzLnNGaWx0ZXJCYXJWYXJpYW50SWQpIHtcblx0XHRcdFx0b1ZNID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpLl9nZXRGaWx0ZXJCYXJWYXJpYW50Q29udHJvbCgpO1xuXHRcdFx0XHR0aGlzLl9oYW5kbGVGaWx0ZXJCYXJWYXJpYW50Q29udHJvbElkKG9WYXJpYW50SURzLCBvVk0sIGFQcm9taXNlcyk7XG5cdFx0XHR9XG5cdFx0XHRpZiAob1ZhcmlhbnRJRHMuc1RhYmxlVmFyaWFudElkKSB7XG5cdFx0XHRcdGNvbnN0IG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyO1xuXHRcdFx0XHR0aGlzLl9oYW5kbGVUYWJsZUNvbnRyb2xWYXJpYW50SWQob1ZhcmlhbnRJRHMsIG9Db250cm9sbGVyLCBhUHJvbWlzZXMpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAob1ZhcmlhbnRJRHMuc0NoYXJ0VmFyaWFudElkKSB7XG5cdFx0XHRcdGNvbnN0IG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyO1xuXHRcdFx0XHR0aGlzLl9oYW5kbGVDaGFydENvbnRyb2xWYXJpYW50SWQob1ZhcmlhbnRJRHMsIG9Db250cm9sbGVyLCBhUHJvbWlzZXMpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoYVByb21pc2VzKTtcblx0fSxcblx0Lypcblx0ICogSGFuZGxlcyBwYWdlIGxldmVsIHZhcmlhbnQgYW5kIHBhc3NlcyB0aGUgdmFyaWFudCB0byB0aGUgZnVuY3Rpb24gdGhhdCBwdXNoZXMgdGhlIHByb21pc2UgdG8gdGhlIHByb21pc2UgYXJyYXlcblx0ICpcblx0ICogQHBhcmFtIG9WYXJpbmF0SURzIGNvbnRhaW5zIGFuIG9iamVjdCBvZiBhbGwgdmFyaWFudCBJRHNcblx0ICogQHBhcmFtIG9WTSBjb250YWlucyB0aGUgdmFpcmFudCBtYW5hZ2VtZW50IG9iamVjdCBmb3IgdGhlIHBhZ2UgdmFyaWFudFxuXHQgKiBAcGFyYW0gYVByb21pc2VzIGlzIGFuIGFycmF5IG9mIGFsbCBwcm9taXNlc1xuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0X2hhbmRsZVBhZ2VWYXJpYW50SWQ6IGZ1bmN0aW9uIChcblx0XHR0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsXG5cdFx0b1ZhcmlhbnRJRHM6IFZhcmlhbnRJRHMsXG5cdFx0b1ZNOiBWYXJpYW50TWFuYWdlbWVudCxcblx0XHRhUHJvbWlzZXM6IFZhcmlhbnRNYW5hZ2VtZW50W11cblx0KSB7XG5cdFx0b1ZNLmdldFZhcmlhbnRzKCk/LmZvckVhY2goKG9WYXJpYW50OiBWYXJpYW50T2JqZWN0KSA9PiB7XG5cdFx0XHR0aGlzLl9maW5kQW5kUHVzaFZhcmlhbnRUb1Byb21pc2Uob1ZhcmlhbnQsIG9WYXJpYW50SURzLnNQYWdlVmFyaWFudElkLCBvVk0sIGFQcm9taXNlcywgdHJ1ZSk7XG5cdFx0fSk7XG5cdH0sXG5cblx0Lypcblx0ICogSGFuZGxlcyBjb250cm9sIGxldmVsIHZhcmlhbnQgZm9yIGZpbHRlciBiYXIgYW5kIHBhc3NlcyB0aGUgdmFyaWFudCB0byB0aGUgZnVuY3Rpb24gdGhhdCBwdXNoZXMgdGhlIHByb21pc2UgdG8gdGhlIHByb21pc2UgYXJyYXlcblx0ICpcblx0ICogQHBhcmFtIG9WYXJpbmF0SURzIGNvbnRhaW5zIGFuIG9iamVjdCBvZiBhbGwgdmFyaWFudCBJRHNcblx0ICogQHBhcmFtIG9WTSBjb250YWlucyB0aGUgdmFpcmFudCBtYW5hZ2VtZW50IG9iamVjdCBmb3IgdGhlIGZpbHRlciBiYXJcblx0ICogQHBhcmFtIGFQcm9taXNlcyBpcyBhbiBhcnJheSBvZiBhbGwgcHJvbWlzZXNcblx0ICogQHByaXZhdGVcblx0ICovXG5cblx0X2hhbmRsZUZpbHRlckJhclZhcmlhbnRDb250cm9sSWQ6IGZ1bmN0aW9uIChcblx0XHR0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsXG5cdFx0b1ZhcmlhbnRJRHM6IFZhcmlhbnRJRHMsXG5cdFx0b1ZNOiBWYXJpYW50TWFuYWdlbWVudCxcblx0XHRhUHJvbWlzZXM6IFZhcmlhbnRNYW5hZ2VtZW50W11cblx0KSB7XG5cdFx0aWYgKG9WTSkge1xuXHRcdFx0b1ZNLmdldFZhcmlhbnRzKCkuZm9yRWFjaCgob1ZhcmlhbnQ6IFZhcmlhbnRPYmplY3QpID0+IHtcblx0XHRcdFx0dGhpcy5fZmluZEFuZFB1c2hWYXJpYW50VG9Qcm9taXNlKG9WYXJpYW50LCBvVmFyaWFudElEcy5zRmlsdGVyQmFyVmFyaWFudElkLCBvVk0sIGFQcm9taXNlcywgdHJ1ZSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH0sXG5cblx0Lypcblx0ICogSGFuZGxlcyBjb250cm9sIGxldmVsIHZhcmlhbnQgZm9yIHRhYmxlIGFuZCBwYXNzZXMgdGhlIHZhcmlhbnQgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgcHVzaGVzIHRoZSBwcm9taXNlIHRvIHRoZSBwcm9taXNlIGFycmF5XG5cdCAqXG5cdCAqIEBwYXJhbSBvVmFyaW5hdElEcyBjb250YWlucyBhbiBvYmplY3Qgb2YgYWxsIHZhcmlhbnQgSURzXG5cdCAqIEBwYXJhbSBvQ29udHJvbGxlciBoYXMgdGhlIGxpc3QgcmVwb3J0IGNvbnRyb2xsZXIgb2JqZWN0XG5cdCAqIEBwYXJhbSBhUHJvbWlzZXMgaXMgYW4gYXJyYXkgb2YgYWxsIHByb21pc2VzXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRfaGFuZGxlVGFibGVDb250cm9sVmFyaWFudElkOiBmdW5jdGlvbiAoXG5cdFx0dGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLFxuXHRcdG9WYXJpYW50SURzOiBWYXJpYW50SURzLFxuXHRcdG9Db250cm9sbGVyOiBMaXN0UmVwb3J0Q29udHJvbGxlcixcblx0XHRhUHJvbWlzZXM6IFZhcmlhbnRNYW5hZ2VtZW50W11cblx0KSB7XG5cdFx0Y29uc3QgYVRhYmxlcyA9IG9Db250cm9sbGVyLl9nZXRDb250cm9scyhcInRhYmxlXCIpO1xuXHRcdGFUYWJsZXMuZm9yRWFjaCgob1RhYmxlOiBUYWJsZSkgPT4ge1xuXHRcdFx0Y29uc3Qgb1RhYmxlVmFyaWFudCA9IG9UYWJsZS5nZXRWYXJpYW50KCk7XG5cdFx0XHRpZiAob1RhYmxlICYmIG9UYWJsZVZhcmlhbnQpIHtcblx0XHRcdFx0b1RhYmxlVmFyaWFudC5nZXRWYXJpYW50cygpLmZvckVhY2goKG9WYXJpYW50OiBWYXJpYW50T2JqZWN0KSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5fZmluZEFuZFB1c2hWYXJpYW50VG9Qcm9taXNlKG9WYXJpYW50LCBvVmFyaWFudElEcy5zVGFibGVWYXJpYW50SWQsIG9UYWJsZVZhcmlhbnQsIGFQcm9taXNlcyk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9LFxuXG5cdC8qXG5cdCAqIEhhbmRsZXMgY29udHJvbCBsZXZlbCB2YXJpYW50IGZvciBjaGFydCBhbmQgcGFzc2VzIHRoZSB2YXJpYW50IHRvIHRoZSBmdW5jdGlvbiB0aGF0IHB1c2hlcyB0aGUgcHJvbWlzZSB0byB0aGUgcHJvbWlzZSBhcnJheVxuXHQgKlxuXHQgKiBAcGFyYW0gb1ZhcmluYXRJRHMgY29udGFpbnMgYW4gb2JqZWN0IG9mIGFsbCB2YXJpYW50IElEc1xuXHQgKiBAcGFyYW0gb0NvbnRyb2xsZXIgaGFzIHRoZSBsaXN0IHJlcG9ydCBjb250cm9sbGVyIG9iamVjdFxuXHQgKiBAcGFyYW0gYVByb21pc2VzIGlzIGFuIGFycmF5IG9mIGFsbCBwcm9taXNlc1xuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0X2hhbmRsZUNoYXJ0Q29udHJvbFZhcmlhbnRJZDogZnVuY3Rpb24gKFxuXHRcdHRoaXM6IFZpZXdTdGF0ZSAmIHR5cGVvZiBWaWV3U3RhdGVPdmVycmlkZSxcblx0XHRvVmFyaWFudElEczogVmFyaWFudElEcyxcblx0XHRvQ29udHJvbGxlcjogTGlzdFJlcG9ydENvbnRyb2xsZXIsXG5cdFx0YVByb21pc2VzOiBWYXJpYW50TWFuYWdlbWVudFtdXG5cdCkge1xuXHRcdGNvbnN0IGFDaGFydHMgPSBvQ29udHJvbGxlci5fZ2V0Q29udHJvbHMoXCJDaGFydFwiKTtcblx0XHRhQ2hhcnRzLmZvckVhY2goKG9DaGFydDogQ2hhcnQpID0+IHtcblx0XHRcdGNvbnN0IG9DaGFydFZhcmlhbnQgPSBvQ2hhcnQuZ2V0VmFyaWFudCgpO1xuXHRcdFx0Y29uc3QgYVZhcmlhbnRzID0gb0NoYXJ0VmFyaWFudC5nZXRWYXJpYW50cygpO1xuXHRcdFx0aWYgKGFWYXJpYW50cykge1xuXHRcdFx0XHRhVmFyaWFudHMuZm9yRWFjaCgob1ZhcmlhbnQ6IFZhcmlhbnRPYmplY3QpID0+IHtcblx0XHRcdFx0XHR0aGlzLl9maW5kQW5kUHVzaFZhcmlhbnRUb1Byb21pc2Uob1ZhcmlhbnQsIG9WYXJpYW50SURzLnNDaGFydFZhcmlhbnRJZCwgb0NoYXJ0VmFyaWFudCwgYVByb21pc2VzKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0sXG5cdC8qXG5cdCAqIE1hdGNoZXMgdGhlIHZhcmlhbnQgSUQgcHJvdmlkZWQgaW4gdGhlIHVybCB0byB0aGUgYXZhaWxhYmxlIHZhaXJhbnQgSURzIGFuZCBwdXNoZXMgdGhlIGFwcHJvcHJpYXRlIHByb21pc2UgdG8gdGhlIHByb21pc2UgYXJyYXlcblx0ICpcblx0ICogQHBhcmFtIG9WYXJpYW50IGlzIGFuIG9iamVjdCBmb3IgYSBzcGVjaWZpYyB2YXJpYW50XG5cdCAqIEBwYXJhbSBzVmFyaWFudElkIGlzIHRoZSB2YXJpYW50IElEIHByb3ZpZGVkIGluIHRoZSB1cmxcblx0ICogQHBhcmFtIG9WTSBpcyB0aGUgdmFyaWFudCBtYW5hZ2VtZW50IG9iamVjdCBmb3IgdGhlIHNwZWNmaWMgdmFyaWFudFxuXHQgKiBAcGFyYW0gYVByb21pc2VzIGlzIGFuIGFycmF5IG9mIHByb21pc2VzXG5cdCAqIEBwYXJhbSBiRmlsdGVyVmFyaWFudEFwcGxpZWQgaXMgYW4gb3B0aW9uYWwgcGFyYW1ldGVyIHdoaWNoIGlzIHNldCB0byB0dXJlIGluIGNhc2UgdGhlIGZpbHRlciB2YXJpYW50IGlzIGFwcGxpZWRcblx0ICogQHByaXZhdGVcblx0ICovXG5cdF9maW5kQW5kUHVzaFZhcmlhbnRUb1Byb21pc2U6IGZ1bmN0aW9uIChcblx0XHQvL1RoaXMgZnVuY3Rpb24gZmluZHMgdGhlIHN1aXRhYmxlIHZhcmlhbnQgZm9yIHRoZSB2YXJpYW50SUQgcHJvdmlkZWQgaW4gdGhlIHVybCBhbmQgcHVzaGVzIHRoZW0gdG8gdGhlIHByb21pc2UgYXJyYXlcblx0XHR0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsXG5cdFx0b1ZhcmlhbnQ6IFZhcmlhbnRPYmplY3QsXG5cdFx0c1ZhcmlhbnRJZDogU3RyaW5nLFxuXHRcdG9WTTogVmFyaWFudE1hbmFnZW1lbnQsXG5cdFx0YVByb21pc2VzOiBWYXJpYW50TWFuYWdlbWVudFtdLFxuXHRcdGJGaWx0ZXJWYXJpYW50QXBwbGllZD86IGJvb2xlYW5cblx0KSB7XG5cdFx0aWYgKG9WYXJpYW50LmdldEtleSgpID09PSBzVmFyaWFudElkKSB7XG5cdFx0XHRhUHJvbWlzZXMucHVzaCh0aGlzLl9hcHBseUNvbnRyb2xWYXJpYW50KG9WTSwgc1ZhcmlhbnRJZCwgYkZpbHRlclZhcmlhbnRBcHBsaWVkKSk7XG5cdFx0fVxuXHR9LFxuXG5cdF9hcHBseUNvbnRyb2xWYXJpYW50OiBmdW5jdGlvbiAob1ZhcmlhbnQ6IGFueSwgc1ZhcmlhbnRJRDogYW55LCBiRmlsdGVyVmFyaWFudEFwcGxpZWQ6IGFueSkge1xuXHRcdGNvbnN0IHNWYXJpYW50UmVmZXJlbmNlID0gdGhpcy5fY2hlY2tJZlZhcmlhbnRJZElzQXZhaWxhYmxlKG9WYXJpYW50LCBzVmFyaWFudElEKSA/IHNWYXJpYW50SUQgOiBvVmFyaWFudC5nZXRTdGFuZGFyZFZhcmlhbnRLZXkoKTtcblx0XHRjb25zdCBvVk0gPSBDb250cm9sVmFyaWFudEFwcGx5QVBJLmFjdGl2YXRlVmFyaWFudCh7XG5cdFx0XHRlbGVtZW50OiBvVmFyaWFudCxcblx0XHRcdHZhcmlhbnRSZWZlcmVuY2U6IHNWYXJpYW50UmVmZXJlbmNlXG5cdFx0fSk7XG5cdFx0cmV0dXJuIG9WTS50aGVuKGZ1bmN0aW9uICgpIHtcblx0XHRcdHJldHVybiBiRmlsdGVyVmFyaWFudEFwcGxpZWQ7XG5cdFx0fSk7XG5cdH0sXG5cdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIHByaXZhdGUgaGVscGVyICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cdC8qKlxuXHQgKiBWYXJpYW50IG1hbmFnZW1lbnQgdXNlZCBieSBmaWx0ZXIgYmFyLlxuXHQgKlxuXHQgKiBAcGFyYW0gdmlldyBWaWV3IG9mIHRoZSBMUiBmaWx0ZXIgYmFyXG5cdCAqIEByZXR1cm5zIFZhcmlhbnRNYW5hZ2VtZW50IGlmIHVzZWRcblx0ICovXG5cdF9nZXRGaWx0ZXJCYXJWTTogKHZpZXc6IFZpZXcpOiBWYXJpYW50TWFuYWdlbWVudCB8IHVuZGVmaW5lZCA9PiB7XG5cdFx0bGV0IHZhcmlhbnRNYW5hZ2VtZW50O1xuXHRcdGNvbnN0IHZpZXdEYXRhID0gdmlldy5nZXRWaWV3RGF0YSgpIGFzIExSVmlld0RhdGE7XG5cdFx0c3dpdGNoICh2aWV3RGF0YS52YXJpYW50TWFuYWdlbWVudCkge1xuXHRcdFx0Y2FzZSBWYXJpYW50TWFuYWdlbWVudFR5cGUuUGFnZTpcblx0XHRcdFx0dmFyaWFudE1hbmFnZW1lbnQgPSB2aWV3LmJ5SWQoXCJmZTo6UGFnZVZhcmlhbnRNYW5hZ2VtZW50XCIpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgVmFyaWFudE1hbmFnZW1lbnRUeXBlLkNvbnRyb2w6XG5cdFx0XHRcdHZhcmlhbnRNYW5hZ2VtZW50ID0gKHZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyKS5fZ2V0RmlsdGVyQmFyVmFyaWFudENvbnRyb2woKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFZhcmlhbnRNYW5hZ2VtZW50VHlwZS5Ob25lOlxuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdHJldHVybiB2YXJpYW50TWFuYWdlbWVudCBhcyBWYXJpYW50TWFuYWdlbWVudCB8IHVuZGVmaW5lZDtcblx0fSxcblxuXHRfcHJldmVudEluaXRpYWxTZWFyY2g6IGZ1bmN0aW9uIChvVmFyaWFudE1hbmFnZW1lbnQ6IGFueSkge1xuXHRcdGlmICghb1ZhcmlhbnRNYW5hZ2VtZW50KSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0Y29uc3QgYVZhcmlhbnRzID0gb1ZhcmlhbnRNYW5hZ2VtZW50LmdldFZhcmlhbnRzKCk7XG5cdFx0Y29uc3Qgb0N1cnJlbnRWYXJpYW50ID0gYVZhcmlhbnRzLmZpbmQoZnVuY3Rpb24gKG9JdGVtOiBhbnkpIHtcblx0XHRcdHJldHVybiBvSXRlbS5nZXRLZXkoKSA9PT0gb1ZhcmlhbnRNYW5hZ2VtZW50LmdldEN1cnJlbnRWYXJpYW50S2V5KCk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuICFvQ3VycmVudFZhcmlhbnQuZXhlY3V0ZU9uU2VsZWN0O1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgRGlzcGxheUN1cnJlbmN5IGlzIG1hbmRhdG9yeSBmb3IgZmlsdGVyaW5nLlxuXHQgKlxuXHQgKiBAcGFyYW0gbWV0YU1vZGVsIE9kYXRhVjQgTWV0YU1vZGVsXG5cdCAqIEBwYXJhbSBjb250ZXh0UGF0aCBMaXN0IFJlcG9ydCBjb250ZXh0IHBhdGguXG5cdCAqIEByZXR1cm5zIEJvb2xlYW5cblx0ICovXG5cdF9jaGVja0lmRGlzcGxheUN1cnJlbmN5SXNSZXF1aXJlZDogZnVuY3Rpb24gKG1ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwsIGNvbnRleHRQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRjb25zdCBtZXRhQ29udGV4dCA9IG1ldGFNb2RlbC5nZXRNZXRhQ29udGV4dChjb250ZXh0UGF0aCksXG5cdFx0XHRkYXRhTW9kZWxPYmplY3RQYXRoID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKG1ldGFDb250ZXh0KSxcblx0XHRcdGVudGl0eVNldCA9IGRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQuX3R5cGUgPT09IFwiRW50aXR5U2V0XCIgPyBkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0IDogdW5kZWZpbmVkLFxuXHRcdFx0cmVxdWlyZWRQcm9wZXJ0aWVzID0gZW50aXR5U2V0Py5hbm5vdGF0aW9ucy5DYXBhYmlsaXRpZXM/LkZpbHRlclJlc3RyaWN0aW9ucz8uUmVxdWlyZWRQcm9wZXJ0aWVzID8/IFtdLFxuXHRcdFx0ZGlzcGxheUN1cnJlbmN5SXNNYW5kYXRvcnkgPSByZXF1aXJlZFByb3BlcnRpZXMuc29tZShcblx0XHRcdFx0KHJlcXVpcmVkUHJvcGVydHkpID0+IHJlcXVpcmVkUHJvcGVydHkudmFsdWUgPT09IERJU1BMQVlfQ1VSUkVOQ1lfUFJPUEVSVFlfTkFNRVxuXHRcdFx0KTtcblxuXHRcdHJldHVybiBkaXNwbGF5Q3VycmVuY3lJc01hbmRhdG9yeTtcblx0fSxcblxuXHQvKipcblx0ICogQWRkIERpc3BsYXlDdXJyZW5jeSB0byBTViBpZiBpdCBpcyBtYW5kYXRvcnkgYW5kIGV4aXN0cyBpbiBTViBkZWZhdWx0cy5cblx0ICpcblx0ICogQHBhcmFtIHZpZXcgVmlldyBvZiB0aGUgTFIgZmlsdGVyIGJhclxuXHQgKiBAcGFyYW0gc3YgU2VsZWN0aW9uIFZhcmlhbnQgdG8gYXBwbHlcblx0ICogQHBhcmFtIHN2RGVmYXVsdHMgU2VsZWN0aW9uIFZhcmlhbnQgZGVmYXVsdHNcblx0ICovXG5cdF9hZGREZWZhdWx0RGlzcGxheUN1cnJlbmN5VG9TVjogZnVuY3Rpb24gKHZpZXc6IFZpZXcsIHN2OiBTZWxlY3Rpb25WYXJpYW50LCBzdkRlZmF1bHRzPzogU2VsZWN0aW9uVmFyaWFudCkge1xuXHRcdGlmICghc3ZEZWZhdWx0cyB8fCBzdkRlZmF1bHRzPy5pc0VtcHR5KCkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCB2aWV3RGF0YSA9IHZpZXcuZ2V0Vmlld0RhdGEoKSBhcyBMUlZpZXdEYXRhLFxuXHRcdFx0bWV0YU1vZGVsID0gdmlldy5nZXRNb2RlbCgpPy5nZXRNZXRhTW9kZWwoKSBhcyBPRGF0YU1ldGFNb2RlbCxcblx0XHRcdGNvbnRleHRQYXRoID0gdmlld0RhdGEuY29udGV4dFBhdGggfHwgYC8ke3ZpZXdEYXRhLmVudGl0eVNldH1gLFxuXHRcdFx0ZGlzcGxheUN1cnJlbmN5SXNNYW5kYXRvcnkgPSB0aGlzLl9jaGVja0lmRGlzcGxheUN1cnJlbmN5SXNSZXF1aXJlZChtZXRhTW9kZWwsIGNvbnRleHRQYXRoKSBhcyBib29sZWFuO1xuXG5cdFx0aWYgKCFkaXNwbGF5Q3VycmVuY3lJc01hbmRhdG9yeSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IHN2T3B0aW9ucyA9IHN2LmdldFNlbGVjdE9wdGlvbihESVNQTEFZX0NVUlJFTkNZX1BST1BFUlRZX05BTUUpLFxuXHRcdFx0ZGVmYXVsdFNWT3B0aW9ucyA9IHN2RGVmYXVsdHMuZ2V0U2VsZWN0T3B0aW9uKERJU1BMQVlfQ1VSUkVOQ1lfUFJPUEVSVFlfTkFNRSksXG5cdFx0XHRkaXNwbGF5Q3VycmVuY3lEZWZhdWx0RXhpc3RzID0gISFkZWZhdWx0U1ZPcHRpb25zICYmIGRlZmF1bHRTVk9wdGlvbnMubGVuZ3RoID4gMCxcblx0XHRcdG5vU1ZEaXNwbGF5Q3VycmVuY3lFeGlzdHMgPSAhc3ZPcHRpb25zIHx8ICFzdk9wdGlvbnMubGVuZ3RoO1xuXG5cdFx0aWYgKG5vU1ZEaXNwbGF5Q3VycmVuY3lFeGlzdHMgJiYgZGlzcGxheUN1cnJlbmN5RGVmYXVsdEV4aXN0cykge1xuXHRcdFx0Y29uc3QgZGlzcGxheUN1cnJlbmN5U2VsZWN0T3B0aW9uID0gZGVmYXVsdFNWT3B0aW9uc1swXSxcblx0XHRcdFx0c2lnbiA9IGRpc3BsYXlDdXJyZW5jeVNlbGVjdE9wdGlvbltcIlNpZ25cIl0sXG5cdFx0XHRcdG9wdGlvbiA9IGRpc3BsYXlDdXJyZW5jeVNlbGVjdE9wdGlvbltcIk9wdGlvblwiXSxcblx0XHRcdFx0bG93ID0gZGlzcGxheUN1cnJlbmN5U2VsZWN0T3B0aW9uW1wiTG93XCJdLFxuXHRcdFx0XHRoaWdoID0gZGlzcGxheUN1cnJlbmN5U2VsZWN0T3B0aW9uW1wiSGlnaFwiXTtcblxuXHRcdFx0c3YuYWRkU2VsZWN0T3B0aW9uKERJU1BMQVlfQ1VSUkVOQ1lfUFJPUEVSVFlfTkFNRSwgc2lnbiwgb3B0aW9uLCBsb3csIGhpZ2gpO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogR2V0IGFkanVzdGVkIFNlbGVjdGlvbiBWYXJpYW50IGJhc2VkIG9uICd1c2VGTFBEZWZhdWx0VmFsdWVzJyBhbmQgJ2FscmVhZHkgYXBwbGllZCBTVicuXG5cdCAqXG5cdCAqIElmIHVzZUZMUERlZmF1bHRWYWx1ZXMgaXMgOlxuXHQgKiAxLiBGQUxTRSwgY29tYmluZSAnYXBwU2F0ZSBTVicgYW5kICdhbHJlYWR5IGFwcGxpZWQgU1YnLlxuXHQgKiAyLiBUUlVFLCAnYXBwU2F0ZSBTVicgaXMgc2FtZSBhcyAnZGVmYXVsdCBTVicuIFNlbGVjdCBPcHRpb25zIG9mICdkZWZhdWx0IFNWJyB0YWtlcyBwcmlvcml0eSBvdmVyICdhbHJlYWR5IGFwcGxpZWQgU1YnLlxuXHQgKlxuXHQgKiBAcGFyYW0gZmlsdGVyQmFyQVBJIEZpbHRlckJhckFQSSB0byBmZXRjaCB0aGUgYXBwbGllZCBTVlxuXHQgKiBAcGFyYW0gYXBwU3RhdGVTViBTZWxlY3Rpb24gVmFyaWFudCB0byBhcHBseSBmcm9tIGFwcFN0YXRlXG5cdCAqIEBwYXJhbSB1c2VGTFBEZWZhdWx0VmFsdWVzIFNob3VsZCBGTFAgZGVmYXVsdHMgYmUgdXNlZFxuXHQgKiBAcmV0dXJucyBBZGp1c3RlZCBTVlxuXHQgKi9cblx0X2dldEFkanVzdGVkU1Y6IGFzeW5jIChmaWx0ZXJCYXJBUEk6IEZpbHRlckJhckFQSSwgYXBwU3RhdGVTVjogU2VsZWN0aW9uVmFyaWFudCwgdXNlRkxQRGVmYXVsdFZhbHVlczogYm9vbGVhbikgPT4ge1xuXHRcdGxldCBhZGp1c3RlZFNWID0gbmV3IFNlbGVjdGlvblZhcmlhbnQoYXBwU3RhdGVTVi50b0pTT05PYmplY3QoKSk7XG5cdFx0Y29uc3QgYWxyZWFkeUFwcGxpZWRTViA9IGF3YWl0IGZpbHRlckJhckFQSS5nZXRTZWxlY3Rpb25WYXJpYW50KCk7XG5cdFx0Y29uc3QgYXBwbGllZFNlbE9wdE5hbWVzID0gYWxyZWFkeUFwcGxpZWRTVj8uZ2V0U2VsZWN0T3B0aW9uc1Byb3BlcnR5TmFtZXMoKSB8fCBbXTtcblx0XHRpZiAoYXBwbGllZFNlbE9wdE5hbWVzLmxlbmd0aCA+IDApIHtcblx0XHRcdC8vIFdlIG1lcmdlICdhcHBsaWVkIFNWJyBhbmQgJ2FwcFN0YXRlIFNWJyBiYXNlZCBvbiAndXNlRkxQRGVmYXVsdFZhbHVlcycuXG5cdFx0XHRhZGp1c3RlZFNWID0gYXBwbGllZFNlbE9wdE5hbWVzLnJlZHVjZSgoc3ZDb3B5OiBTZWxlY3Rpb25WYXJpYW50LCBzZWxPcHRpb25OYW1lKSA9PiB7XG5cdFx0XHRcdC8vIChhcHBTdGF0ZVNWID0gYWRqdXN0ZWRTViA9IHN2Q29weSlcblx0XHRcdFx0Y29uc3Qgc3ZTZWxPcHRzID0gc3ZDb3B5LmdldFNlbGVjdE9wdGlvbihzZWxPcHRpb25OYW1lKTtcblx0XHRcdFx0Ly8gSWYgdXNlRkxQRGVmYXVsdFZhbHVlcyA9IHRydWUsIG1lYW5zIChhcHBTdGF0ZVNWID0gc3ZEZWZhdWx0cylcblx0XHRcdFx0aWYgKCh1c2VGTFBEZWZhdWx0VmFsdWVzICYmICFzdlNlbE9wdHM/Lmxlbmd0aCkgfHwgIXVzZUZMUERlZmF1bHRWYWx1ZXMpIHtcblx0XHRcdFx0XHQvLyBpZiBkZWZhdWx0IFNWIG5lZWRzIHRvIGJlIHVzZWQsIHRoZW4gc2VsZWN0IG9wdGlvbnMgZnJvbSBkZWZhdWx0IHNlbGVjdCBvcHRpb25zIHRha2UgcHJpb3JpdHkuXG5cdFx0XHRcdFx0Ly8gZWxzZSB3ZSBtZXJnZSBib3RoOiBhbHJlYWR5IGFwcGxpZWQgU1YgYW5kIFNWIGZyb20gbmF2UGFyYW1zLlxuXHRcdFx0XHRcdGNvbnN0IHNlbGVjdE9wdGlvbnMgPSBhbHJlYWR5QXBwbGllZFNWLmdldFNlbGVjdE9wdGlvbihzZWxPcHRpb25OYW1lKTtcblx0XHRcdFx0XHRzdkNvcHkubWFzc0FkZFNlbGVjdE9wdGlvbihzZWxPcHRpb25OYW1lLCBzZWxlY3RPcHRpb25zIHx8IFtdKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gc3ZDb3B5O1xuXHRcdFx0fSwgYWRqdXN0ZWRTVik7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGFkanVzdGVkU1Y7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEFwcGx5IFNlbGVjdGlvbiBWYXJpYW50IGZyb20gTmF2aWdhdGlvbiBQYXJhbWV0ZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSB2aWV3IFZpZXcgb2YgdGhlIExSIGZpbHRlciBiYXJcblx0ICogQHBhcmFtIG5hdmlnYXRpb25QYXJhbWV0ZXIgU2VsZWN0aW9uIFZhcmlhbnQgdG8gYXBwbHkgZnJvbSBhcHBTdGF0ZVxuXHQgKiBAcGFyYW0gZmlsdGVyVmFyaWFudEFwcGxpZWQgSXMgYSBmaWx0ZXIgdmFyaWFudCBhbGFyZWFkeSBhcHBsaWVkXG5cdCAqIEByZXR1cm5zIFByb21pc2UgZm9yIGFzeW5jaHJvbm91cyBoYW5kbGluZ1xuXHQgKi9cblx0X2FwcGx5U2VsZWN0aW9uVmFyaWFudDogYXN5bmMgZnVuY3Rpb24gKFxuXHRcdHZpZXc6IFZpZXcsXG5cdFx0bmF2aWdhdGlvblBhcmFtZXRlcjogTmF2SGFuZGxlck5hdlBhcmFtcyxcblx0XHRmaWx0ZXJWYXJpYW50QXBwbGllZDogYm9vbGVhblxuXHQpOiBQcm9taXNlPHVua25vd24+IHtcblx0XHRjb25zdCBmaWx0ZXJCYXIgPSAodmlldy5nZXRDb250cm9sbGVyKCkgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXIpLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0Y29uc3Qge1xuXHRcdFx0c2VsZWN0aW9uVmFyaWFudDogc3YsXG5cdFx0XHRzZWxlY3Rpb25WYXJpYW50RGVmYXVsdHM6IHN2RGVmYXVsdHMsXG5cdFx0XHRyZXF1aXJlc1N0YW5kYXJkVmFyaWFudDogcmVxU3RkVmFyaWFudCA9IGZhbHNlLFxuXHRcdFx0Yk5hdlNlbFZhckhhc0RlZmF1bHRzT25seTogc3ZEZWZhdWx0c09ubHkgPSBmYWxzZVxuXHRcdH0gPSBuYXZpZ2F0aW9uUGFyYW1ldGVyO1xuXG5cdFx0aWYgKCFmaWx0ZXJCYXIgfHwgIXN2KSB7XG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgdmFyaWFudE1hbmFnZW1lbnQgPSB0aGlzLl9nZXRGaWx0ZXJCYXJWTSh2aWV3KSBhcyBWYXJpYW50TWFuYWdlbWVudDtcblx0XHRjb25zdCBjbGVhckZpbHRlcnNBbmRSZXBsYWNlV2l0aEFwcFN0YXRlID0gYXdhaXQgdGhpcy5fYWN0aXZlVmFyaWFudEFuZEdldEFwcFN0YXRlT3ZlcnJpZGUoXG5cdFx0XHR2YXJpYW50TWFuYWdlbWVudCxcblx0XHRcdHJlcVN0ZFZhcmlhbnQsXG5cdFx0XHRmaWx0ZXJWYXJpYW50QXBwbGllZFxuXHRcdCk7XG5cblx0XHRpZiAoY2xlYXJGaWx0ZXJzQW5kUmVwbGFjZVdpdGhBcHBTdGF0ZSkge1xuXHRcdFx0dGhpcy5fYWRkRGVmYXVsdERpc3BsYXlDdXJyZW5jeVRvU1Yodmlldywgc3YsIHN2RGVmYXVsdHMpO1xuXG5cdFx0XHQvLyBjaGVjayBpZiBGTFAgZGVmYXVsdCB2YWx1ZXMgYXJlIHRoZXJlIGFuZCBpcyBpdCBzdGFuZGFyZCB2YXJpYW50XG5cdFx0XHRjb25zdCBzdkRlZmF1bHRzQXJlUHJlc2VudCA9IHN2RGVmYXVsdHMgPyBzdkRlZmF1bHRzLmdldFNlbGVjdE9wdGlvbnNQcm9wZXJ0eU5hbWVzKCkubGVuZ3RoID4gMCA6IGZhbHNlO1xuXHRcdFx0Y29uc3Qgc3RkVmFyaWFudElzRGVmYXVsdFZhcmlhbnQgPVxuXHRcdFx0XHR2YXJpYW50TWFuYWdlbWVudCAmJiB2YXJpYW50TWFuYWdlbWVudC5nZXREZWZhdWx0VmFyaWFudEtleSgpID09PSB2YXJpYW50TWFuYWdlbWVudC5nZXRTdGFuZGFyZFZhcmlhbnRLZXkoKTtcblx0XHRcdGNvbnN0IHVzZUZMUERlZmF1bHRWYWx1ZXM6IGJvb2xlYW4gPVxuXHRcdFx0XHRzdkRlZmF1bHRzQXJlUHJlc2VudCAmJiAoc3RkVmFyaWFudElzRGVmYXVsdFZhcmlhbnQgfHwgIXZhcmlhbnRNYW5hZ2VtZW50KSAmJiBzdkRlZmF1bHRzT25seTtcblxuXHRcdFx0Y29uc3QgZmlsdGVyQmFyQVBJID0gZmlsdGVyQmFyLmdldFBhcmVudCgpIGFzIEZpbHRlckJhckFQSTtcblx0XHRcdGxldCBzdlRvU2V0OiBTZWxlY3Rpb25WYXJpYW50ID0gc3Y7XG5cdFx0XHRpZiAoZmlsdGVyVmFyaWFudEFwcGxpZWQgfHwgdXNlRkxQRGVmYXVsdFZhbHVlcykge1xuXHRcdFx0XHRzdlRvU2V0ID0gYXdhaXQgdGhpcy5fZ2V0QWRqdXN0ZWRTVihmaWx0ZXJCYXJBUEksIHN2LCB1c2VGTFBEZWZhdWx0VmFsdWVzKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGZpbHRlckJhckFQSS5zZXRTZWxlY3Rpb25WYXJpYW50KHN2VG9TZXQpO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogQWN0aXZhdGUgdmFyaWFudCBmcm9tIHZhcmlhbnQgbWFuYWdlbWVudCBhbmQgcmV0dXJuIGlmIGFwcFN0YXRlIG5lZWRzIHRvIGJlIGFwcGxpZWQuXG5cdCAqXG5cdCAqIEBwYXJhbSB2YXJpYW50TWFuYWdlbWVudCBWYXJpYW50TWFuYWdlbWVudCB1c2VkIGJ5IGZpbHRlciBiYXJcblx0ICogQHBhcmFtIHJlcVN0ZFZhcmlhbnQgSWYgc3RhbmRhcmQgdmFyaWFudCBpcyByZXF1aXJlZCB0byBiZSB1c2VkXG5cdCAqIEBwYXJhbSBmaWx0ZXJWYXJpYW50QXBwbGllZCBJcyBhIGZpbHRlciB2YXJpYW50IGFsYXJlYWR5IGFwcGxpZWRcblx0ICogQHJldHVybnMgUHJvbWlzZSBmb3IgYXN5bmNocm9ub3VzIGhhbmRsaW5nXG5cdCAqL1xuXHRfYWN0aXZlVmFyaWFudEFuZEdldEFwcFN0YXRlT3ZlcnJpZGU6IGFzeW5jIGZ1bmN0aW9uIChcblx0XHR2YXJpYW50TWFuYWdlbWVudDogVmFyaWFudE1hbmFnZW1lbnQgfCB1bmRlZmluZWQsXG5cdFx0cmVxU3RkVmFyaWFudDogYm9vbGVhbixcblx0XHRmaWx0ZXJWYXJpYW50QXBwbGllZDogYm9vbGVhblxuXHQpIHtcblx0XHRpZiAodmFyaWFudE1hbmFnZW1lbnQgJiYgIWZpbHRlclZhcmlhbnRBcHBsaWVkKSB7XG5cdFx0XHRsZXQgdmFyaWFudEtleSA9IHJlcVN0ZFZhcmlhbnQgPyB2YXJpYW50TWFuYWdlbWVudC5nZXRTdGFuZGFyZFZhcmlhbnRLZXkoKSA6IHZhcmlhbnRNYW5hZ2VtZW50LmdldERlZmF1bHRWYXJpYW50S2V5KCk7XG5cdFx0XHRpZiAodmFyaWFudEtleSA9PT0gbnVsbCkge1xuXHRcdFx0XHR2YXJpYW50S2V5ID0gdmFyaWFudE1hbmFnZW1lbnQuZ2V0SWQoKTtcblx0XHRcdH1cblx0XHRcdGF3YWl0IENvbnRyb2xWYXJpYW50QXBwbHlBUEkuYWN0aXZhdGVWYXJpYW50KHtcblx0XHRcdFx0ZWxlbWVudDogdmFyaWFudE1hbmFnZW1lbnQsXG5cdFx0XHRcdHZhcmlhbnRSZWZlcmVuY2U6IHZhcmlhbnRLZXlcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIHJlcVN0ZFZhcmlhbnQgfHwgdmFyaWFudE1hbmFnZW1lbnQuZ2V0RGVmYXVsdFZhcmlhbnRLZXkoKSA9PT0gdmFyaWFudE1hbmFnZW1lbnQuZ2V0U3RhbmRhcmRWYXJpYW50S2V5KCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH0sXG5cblx0Lypcblx0ICogU2V0cyBmaWx0ZXJlZDogZmFsc2UgZmxhZyB0byBldmVyeSBmaWVsZCBzbyB0aGF0IGl0IGNhbiBiZSBjbGVhcmVkIG91dFxuXHQgKlxuXHQgKiBAcGFyYW0gb0ZpbHRlckJhciBmaWx0ZXJiYXIgY29udHJvbCBpcyB1c2VkIHRvIGRpc3BsYXkgZmlsdGVyIHByb3BlcnRpZXMgaW4gYSB1c2VyLWZyaWVuZGx5IG1hbm5lciB0byBwb3B1bGF0ZSB2YWx1ZXMgZm9yIGEgcXVlcnlcblx0ICogQHJldHVybnMgcHJvbWlzZSB3aGljaCB3aWxsIGJlIHJlc29sdmVkIHRvIG9iamVjdFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0X2ZuQ2xlYXJTdGF0ZUJlZm9yZXhBcHBOYXY6IGFzeW5jIGZ1bmN0aW9uIChvRmlsdGVyQmFyOiBGaWx0ZXJCYXIpIHtcblx0XHRyZXR1cm4gU3RhdGVVdGlsLnJldHJpZXZlRXh0ZXJuYWxTdGF0ZShvRmlsdGVyQmFyKVxuXHRcdFx0LnRoZW4oKG9FeHRlcm5hbFN0YXRlOiBhbnkpID0+IHtcblx0XHRcdFx0Y29uc3Qgb0NvbmRpdGlvbiA9IG9FeHRlcm5hbFN0YXRlLmZpbHRlcjtcblx0XHRcdFx0Zm9yIChjb25zdCBmaWVsZCBpbiBvQ29uZGl0aW9uKSB7XG5cdFx0XHRcdFx0aWYgKGZpZWxkICE9PSBcIiRlZGl0U3RhdGVcIiAmJiBmaWVsZCAhPT0gXCIkc2VhcmNoXCIgJiYgb0NvbmRpdGlvbltmaWVsZF0pIHtcblx0XHRcdFx0XHRcdG9Db25kaXRpb25bZmllbGRdLmZvckVhY2goKGNvbmRpdGlvbjogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4pID0+IHtcblx0XHRcdFx0XHRcdFx0Y29uZGl0aW9uW1wiZmlsdGVyZWRcIl0gPSBmYWxzZTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gb0NvbmRpdGlvbjtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKG9FcnJvcjogYW55KSB7XG5cdFx0XHRcdExvZy5lcnJvcihcIkVycm9yIHdoaWxlIHJldHJpZXZpbmcgdGhlIGV4dGVybmFsIHN0YXRlXCIsIG9FcnJvcik7XG5cdFx0XHR9KTtcblx0fSxcblxuXHRfY2xlYXJGaWx0ZXJDb25kaXRpb25zOiBhc3luYyBmdW5jdGlvbiAob0ZpbHRlckJhcjogRmlsdGVyQmFyKSB7XG5cdFx0Y29uc3QgYUl0ZW1zOiBQcm9wZXJ0eUluZm9bXSA9IFtdO1xuXHRcdHJldHVybiBvRmlsdGVyQmFyLndhaXRGb3JJbml0aWFsaXphdGlvbigpLnRoZW4oYXN5bmMgKCkgPT4ge1xuXHRcdFx0Y29uc3Qgb0NsZWFyQ29uZGl0aW9ucyA9IGF3YWl0IHRoaXMuX2ZuQ2xlYXJTdGF0ZUJlZm9yZXhBcHBOYXYob0ZpbHRlckJhcik7XG5cdFx0XHRyZXR1cm4gU3RhdGVVdGlsLmFwcGx5RXh0ZXJuYWxTdGF0ZShvRmlsdGVyQmFyLCB7XG5cdFx0XHRcdGZpbHRlcjogb0NsZWFyQ29uZGl0aW9ucyxcblx0XHRcdFx0aXRlbXM6IGFJdGVtc1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFZpZXdTdGF0ZU92ZXJyaWRlO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7OztFQTREQSxNQUFNQSxPQUFPLEdBQUdDLFVBQVUsQ0FBQ0QsT0FBTztJQUNqQ0UscUJBQXFCLEdBQUdDLFdBQVcsQ0FBQ0MsaUJBQWlCO0lBQ3JEQyxtQkFBbUIsR0FBR0YsV0FBVyxDQUFDRSxtQkFBbUI7SUFDckRDLGVBQWUsR0FBR0gsV0FBVyxDQUFDRyxlQUFlO0lBQzdDQyw4QkFBOEIsR0FBRyxpQkFBaUI7RUFFbkQsTUFBTUMsaUJBQXNCLEdBQUc7SUFDOUJDLGlCQUFpQixFQUFFLEtBQUs7SUFDeEJDLHFCQUFxQixFQUFFLFlBQVk7TUFDbEMsT0FBTyxJ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
|
|
560
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOYXZUeXBlIiwiTmF2TGlicmFyeSIsIlZhcmlhbnRNYW5hZ2VtZW50VHlwZSIsIkNvcmVMaWJyYXJ5IiwiVmFyaWFudE1hbmFnZW1lbnQiLCJUZW1wbGF0ZUNvbnRlbnRWaWV3IiwiSW5pdGlhbExvYWRNb2RlIiwiRElTUExBWV9DVVJSRU5DWV9QUk9QRVJUWV9OQU1FIiwiVmlld1N0YXRlT3ZlcnJpZGUiLCJfYlNlYXJjaFRyaWdnZXJlZCIsImFwcGx5SW5pdGlhbFN0YXRlT25seSIsIm9uQmVmb3JlU3RhdGVBcHBsaWVkIiwiYVByb21pc2VzIiwibmF2aWdhdGlvblR5cGUiLCJvVmlldyIsImdldFZpZXciLCJvQ29udHJvbGxlciIsImdldENvbnRyb2xsZXIiLCJvRmlsdGVyQmFyIiwiX2dldEZpbHRlckJhckNvbnRyb2wiLCJhVGFibGVzIiwiX2dldENvbnRyb2xzIiwic2V0U3VzcGVuZFNlbGVjdGlvbiIsInB1c2giLCJ3YWl0Rm9ySW5pdGlhbGl6YXRpb24iLCJoeWJyaWQiLCJfY2xlYXJGaWx0ZXJDb25kaXRpb25zIiwiZm9yRWFjaCIsIm9UYWJsZSIsImluaXRpYWxpemVkIiwiYWRhcHRCaW5kaW5nUmVmcmVzaENvbnRyb2xzIiwiYUNvbnRyb2xzIiwiYmFzZSIsImFWaWV3Q29udHJvbHMiLCJhQ29udHJvbHNUb1JlZnJlc2giLCJLZWVwQWxpdmVIZWxwZXIiLCJnZXRDb250cm9sc0ZvclJlZnJlc2giLCJBcnJheSIsInByb3RvdHlwZSIsImFwcGx5IiwiYWRhcHRTdGF0ZUNvbnRyb2xzIiwiYVN0YXRlQ29udHJvbHMiLCJvVmlld0RhdGEiLCJnZXRWaWV3RGF0YSIsImJDb250cm9sVk0iLCJ2YXJpYW50TWFuYWdlbWVudCIsIkNvbnRyb2wiLCJvRmlsdGVyQmFyVk0iLCJfZ2V0RmlsdGVyQmFyVk0iLCJfaXNNdWx0aU1vZGUiLCJfZ2V0TXVsdGlNb2RlQ29udHJvbCIsIm9RdWlja0ZpbHRlciIsImdldFF1aWNrRmlsdGVyIiwiZ2V0VmFyaWFudCIsIm9DaGFydCIsIl9nZXRDb250cm9sRnJvbVBhZ2VNb2RlbFByb3BlcnR5IiwiX2hhc011bHRpVmlzdWFsaXphdGlvbnMiLCJfZ2V0U2VnbWVudGVkQnV0dG9uIiwiQ2hhcnQiLCJUYWJsZSIsImJ5SWQiLCJyZXRyaWV2ZUFkZGl0aW9uYWxTdGF0ZXMiLCJtQWRkaXRpb25hbFN0YXRlcyIsImJQZW5kaW5nRmlsdGVyIiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRQcm9wZXJ0eSIsImRhdGFMb2FkZWQiLCJzQWxwQ29udGVudFZpZXciLCJhbHBDb250ZW50VmlldyIsImFwcGx5QWRkaXRpb25hbFN0YXRlcyIsIm9BZGRpdGlvbmFsU3RhdGVzIiwiZmlsdGVyQmFyQVBJIiwiZ2V0UGFyZW50IiwidHJpZ2dlclNlYXJjaCIsIm9JbnRlcm5hbE1vZGVsQ29udGV4dCIsIkRldmljZSIsInN5c3RlbSIsImRlc2t0b3AiLCJIeWJyaWQiLCJnZXRNb2RlbCIsInNldFByb3BlcnR5IiwiZ2V0UGF0aCIsImlzU2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZCIsInZpZXciLCJjb250cm9sbGVyIiwidmlld0RhdGEiLCJfZ2V0RmlsdGVyQmFyVmFyaWFudENvbnRyb2wiLCJjdXJyZW50VmFyaWFudEtleSIsImdldEN1cnJlbnRWYXJpYW50S2V5IiwieEFwcFN0YXRlIiwiaW5pdGlhbExvYWQiLCJFbmFibGVkIiwiX3Nob3VsZEF1dG9UcmlnZ2VyU2VhcmNoIiwiX2dldEFwcGx5QXV0b21hdGljYWxseU9uVmFyaWFudCIsIl9lbmFibGVGaWx0ZXJCYXIiLCJmaWx0ZXJCYXJDb250cm9sIiwicHJldmVudEluaXRpYWxTZWFyY2giLCJmbk9uU2VhcmNoIiwiZ2V0U3VzcGVuZFNlbGVjdGlvbiIsImF0dGFjaEV2ZW50T25jZSIsIl9hcHBseU5hdmlnYXRpb25QYXJhbWV0ZXJzVG9GaWx0ZXJiYXIiLCJvTmF2aWdhdGlvblBhcmFtZXRlciIsImFSZXN1bHRzIiwib0FwcENvbXBvbmVudCIsImdldEFwcENvbXBvbmVudCIsIm9Db21wb25lbnREYXRhIiwiZ2V0Q29tcG9uZW50RGF0YSIsIm9TdGFydHVwUGFyYW1ldGVycyIsInN0YXJ0dXBQYXJhbWV0ZXJzIiwib1ZhcmlhbnRQcm9taXNlIiwiaGFuZGxlVmFyaWFudElkUGFzc2VkVmlhVVJMUGFyYW1zIiwiYkZpbHRlclZhcmlhbnRBcHBsaWVkIiwidGhlbiIsImFWYXJpYW50cyIsImxlbmd0aCIsIl9hcHBseVNlbGVjdGlvblZhcmlhbnQiLCJhcHBsaWVkQ29uZGl0aW9uIiwic2VsZWN0aW9uVmFyaWFudFdhc0FwcGxpZWQiLCJpc0FycmF5IiwiYlByZXZlbnRJbml0aWFsU2VhcmNoIiwib0ZpbHRlckJhckNvbnRyb2wiLCJpbml0aWFsIiwicmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQiLCJfcHJldmVudEluaXRpYWxTZWFyY2giLCJpbnRlcm5hbE1vZGVsQ29udGV4dCIsInNlYXJjaFRyaWdnZXJlZEJ5SW5pdGlhbExvYWQiLCJjYXRjaCIsIkxvZyIsImVycm9yIiwib1VybFBhcmFtcyIsImFQYWdlVmFyaWFudElkIiwiYUZpbHRlckJhclZhcmlhbnRJZCIsImFUYWJsZVZhcmlhbnRJZCIsImFDaGFydFZhcmlhbnRJZCIsIm9WYXJpYW50SURzIiwic1BhZ2VWYXJpYW50SWQiLCJzRmlsdGVyQmFyVmFyaWFudElkIiwic1RhYmxlVmFyaWFudElkIiwic0NoYXJ0VmFyaWFudElkIiwiX2hhbmRsZUNvbnRyb2xWYXJpYW50SWQiLCJvVk0iLCJzVmFyaWFudE1hbmFnZW1lbnQiLCJfaGFuZGxlUGFnZVZhcmlhbnRJZCIsIl9oYW5kbGVGaWx0ZXJCYXJWYXJpYW50Q29udHJvbElkIiwiX2hhbmRsZVRhYmxlQ29udHJvbFZhcmlhbnRJZCIsIl9oYW5kbGVDaGFydENvbnRyb2xWYXJpYW50SWQiLCJQcm9taXNlIiwiYWxsIiwiZ2V0VmFyaWFudHMiLCJvVmFyaWFudCIsIl9maW5kQW5kUHVzaFZhcmlhbnRUb1Byb21pc2UiLCJvVGFibGVWYXJpYW50IiwiYUNoYXJ0cyIsIm9DaGFydFZhcmlhbnQiLCJzVmFyaWFudElkIiwiZ2V0S2V5IiwiX2FwcGx5Q29udHJvbFZhcmlhbnQiLCJzVmFyaWFudElEIiwic1ZhcmlhbnRSZWZlcmVuY2UiLCJfY2hlY2tJZlZhcmlhbnRJZElzQXZhaWxhYmxlIiwiZ2V0U3RhbmRhcmRWYXJpYW50S2V5IiwiQ29udHJvbFZhcmlhbnRBcHBseUFQSSIsImFjdGl2YXRlVmFyaWFudCIsImVsZW1lbnQiLCJ2YXJpYW50UmVmZXJlbmNlIiwiUGFnZSIsIk5vbmUiLCJvVmFyaWFudE1hbmFnZW1lbnQiLCJvQ3VycmVudFZhcmlhbnQiLCJmaW5kIiwib0l0ZW0iLCJleGVjdXRlT25TZWxlY3QiLCJfY2hlY2tJZkRpc3BsYXlDdXJyZW5jeUlzUmVxdWlyZWQiLCJtZXRhTW9kZWwiLCJjb250ZXh0UGF0aCIsIm1ldGFDb250ZXh0IiwiZ2V0TWV0YUNvbnRleHQiLCJkYXRhTW9kZWxPYmplY3RQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiZW50aXR5U2V0Iiwic3RhcnRpbmdFbnRpdHlTZXQiLCJfdHlwZSIsInVuZGVmaW5lZCIsInJlcXVpcmVkUHJvcGVydGllcyIsImFubm90YXRpb25zIiwiQ2FwYWJpbGl0aWVzIiwiRmlsdGVyUmVzdHJpY3Rpb25zIiwiUmVxdWlyZWRQcm9wZXJ0aWVzIiwiZGlzcGxheUN1cnJlbmN5SXNNYW5kYXRvcnkiLCJzb21lIiwicmVxdWlyZWRQcm9wZXJ0eSIsInZhbHVlIiwiX2FkZERlZmF1bHREaXNwbGF5Q3VycmVuY3lUb1NWIiwic3YiLCJzdkRlZmF1bHRzIiwiaXNFbXB0eSIsImdldE1ldGFNb2RlbCIsInN2T3B0aW9ucyIsImdldFNlbGVjdE9wdGlvbiIsImRlZmF1bHRTVk9wdGlvbnMiLCJkaXNwbGF5Q3VycmVuY3lEZWZhdWx0RXhpc3RzIiwibm9TVkRpc3BsYXlDdXJyZW5jeUV4aXN0cyIsImRpc3BsYXlDdXJyZW5jeVNlbGVjdE9wdGlvbiIsInNpZ24iLCJvcHRpb24iLCJsb3ciLCJoaWdoIiwiYWRkU2VsZWN0T3B0aW9uIiwiX2dldEFkanVzdGVkU1YiLCJhcHBTdGF0ZVNWIiwidXNlRkxQRGVmYXVsdFZhbHVlcyIsImFkanVzdGVkU1YiLCJTZWxlY3Rpb25WYXJpYW50IiwidG9KU09OT2JqZWN0IiwiYWxyZWFkeUFwcGxpZWRTViIsImdldFNlbGVjdGlvblZhcmlhbnQiLCJhcHBsaWVkU2VsT3B0TmFtZXMiLCJnZXRTZWxlY3RPcHRpb25zUHJvcGVydHlOYW1lcyIsInJlZHVjZSIsInN2Q29weSIsInNlbE9wdGlvbk5hbWUiLCJzdlNlbE9wdHMiLCJzZWxlY3RPcHRpb25zIiwibWFzc0FkZFNlbGVjdE9wdGlvbiIsIm5hdmlnYXRpb25QYXJhbWV0ZXIiLCJmaWx0ZXJWYXJpYW50QXBwbGllZCIsImZpbHRlckJhciIsInNlbGVjdGlvblZhcmlhbnQiLCJzZWxlY3Rpb25WYXJpYW50RGVmYXVsdHMiLCJyZXFTdGRWYXJpYW50IiwiYk5hdlNlbFZhckhhc0RlZmF1bHRzT25seSIsInN2RGVmYXVsdHNPbmx5IiwiY2xlYXJGaWx0ZXJzQW5kUmVwbGFjZVdpdGhBcHBTdGF0ZSIsIl9hY3RpdmVWYXJpYW50QW5kR2V0QXBwU3RhdGVPdmVycmlkZSIsInN2RGVmYXVsdHNBcmVQcmVzZW50Iiwic3RkVmFyaWFudElzRGVmYXVsdFZhcmlhbnQiLCJnZXREZWZhdWx0VmFyaWFudEtleSIsInN2VG9TZXQiLCJzZXRTZWxlY3Rpb25WYXJpYW50IiwidmFyaWFudEtleSIsImdldElkIiwiX2ZuQ2xlYXJTdGF0ZUJlZm9yZXhBcHBOYXYiLCJTdGF0ZVV0aWwiLCJyZXRyaWV2ZUV4dGVybmFsU3RhdGUiLCJvRXh0ZXJuYWxTdGF0ZSIsIm9Db25kaXRpb24iLCJmaWx0ZXIiLCJmaWVsZCIsImNvbmRpdGlvbiIsIm9FcnJvciIsImFJdGVtcyIsIm9DbGVhckNvbmRpdGlvbnMiLCJhcHBseUV4dGVybmFsU3RhdGUiLCJpdGVtcyJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVmlld1N0YXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgVmlld1N0YXRlIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9WaWV3U3RhdGVcIjtcbmltcG9ydCB0eXBlIHsgTmF2aWdhdGlvblBhcmFtZXRlciB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9WaWV3U3RhdGVcIjtcbmltcG9ydCB7IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IEtlZXBBbGl2ZUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9LZWVwQWxpdmVIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IENvcmVMaWJyYXJ5IGZyb20gXCJzYXAvZmUvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnR5SW5mbyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL0RlbGVnYXRlVXRpbFwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlckJhci9GaWx0ZXJCYXJBUElcIjtcbmltcG9ydCBOYXZMaWJyYXJ5IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9saWJyYXJ5XCI7XG5pbXBvcnQgU2VsZWN0aW9uVmFyaWFudCBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vU2VsZWN0aW9uVmFyaWFudFwiO1xuaW1wb3J0IHR5cGUgTGlzdFJlcG9ydENvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvTGlzdFJlcG9ydC9MaXN0UmVwb3J0Q29udHJvbGxlci5jb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IERldmljZSBmcm9tIFwic2FwL3VpL0RldmljZVwiO1xuaW1wb3J0IENvbnRyb2xWYXJpYW50QXBwbHlBUEkgZnJvbSBcInNhcC91aS9mbC9hcHBseS9hcGkvQ29udHJvbFZhcmlhbnRBcHBseUFQSVwiO1xuaW1wb3J0IHR5cGUgVmFyaWFudE1hbmFnZW1lbnQgZnJvbSBcInNhcC91aS9mbC92YXJpYW50cy9WYXJpYW50TWFuYWdlbWVudFwiO1xuaW1wb3J0IHR5cGUgQ2hhcnQgZnJvbSBcInNhcC91aS9tZGMvQ2hhcnRcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhciBmcm9tIFwic2FwL3VpL21kYy9GaWx0ZXJCYXJcIjtcbmltcG9ydCBTdGF0ZVV0aWwgZnJvbSBcInNhcC91aS9tZGMvcDEzbi9TdGF0ZVV0aWxcIjtcbmltcG9ydCB0eXBlIFRhYmxlIGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5cbnR5cGUgVmFyaWFudE9iamVjdCA9IHtcblx0YXV0aG9yOiBzdHJpbmc7XG5cdGNoYW5nZTogYm9vbGVhbjtcblx0Y29udGV4dHM6IG9iamVjdDtcblx0ZXhlY3V0ZU9uU2VsZWN0OiBib29sZWFuO1xuXHRmYXZvcml0ZTogYm9vbGVhbjtcblx0a2V5OiBzdHJpbmc7XG5cdG9yaWdpbmFsQ29udGV4dHM6IG9iamVjdDtcblx0b3JpZ2luYWxFeGVjdXRlT25TZWxlY3Q6IGJvb2xlYW47XG5cdG9yaWdpbmFsRmF2b3JpdGU6IGJvb2xlYW47XG5cdG9yaWdpbmFsVGl0bGU6IHN0cmluZztcblx0b3JpZ2luYWxWaXNpYmxlOiBib29sZWFuO1xuXHRyZW1vdmU6IGJvb2xlYW47XG5cdHJlbmFtZTogYm9vbGVhbjtcblx0c2hhcmluZzogc3RyaW5nO1xuXHR0aXRsZTogc3RyaW5nO1xuXHR2aXNpYmxlOiBib29sZWFuO1xuXHRnZXRLZXk6ICgpID0+IHN0cmluZztcbn07XG5cbnR5cGUgTmF2SGFuZGxlck5hdlBhcmFtcyA9IE5hdmlnYXRpb25QYXJhbWV0ZXIgJiB7XG5cdGJOYXZTZWxWYXJIYXNEZWZhdWx0c09ubHk/OiBib29sZWFuO1xufTtcblxudHlwZSBMUlZpZXdEYXRhID0ge1xuXHRjb250cm9sQ29uZmlndXJhdGlvbj86IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+Pjtcblx0ZW50aXR5U2V0Pzogc3RyaW5nO1xuXHRjb250ZXh0UGF0aD86IHN0cmluZztcblx0dmFyaWFudE1hbmFnZW1lbnQ/OiBib29sZWFuO1xufTtcblxudHlwZSBWYXJpYW50SURzID0ge1xuXHRzUGFnZVZhcmlhbnRJZDogc3RyaW5nO1xuXHRzRmlsdGVyQmFyVmFyaWFudElkOiBzdHJpbmc7XG5cdHNUYWJsZVZhcmlhbnRJZDogc3RyaW5nO1xuXHRzQ2hhcnRWYXJpYW50SWQ6IHN0cmluZztcbn07XG5cbmNvbnN0IE5hdlR5cGUgPSBOYXZMaWJyYXJ5Lk5hdlR5cGUsXG5cdFZhcmlhbnRNYW5hZ2VtZW50VHlwZSA9IENvcmVMaWJyYXJ5LlZhcmlhbnRNYW5hZ2VtZW50LFxuXHRUZW1wbGF0ZUNvbnRlbnRWaWV3ID0gQ29yZUxpYnJhcnkuVGVtcGxhdGVDb250ZW50Vmlldyxcblx0SW5pdGlhbExvYWRNb2RlID0gQ29yZUxpYnJhcnkuSW5pdGlhbExvYWRNb2RlLFxuXHRESVNQTEFZX0NVUlJFTkNZX1BST1BFUlRZX05BTUUgPSBcIkRpc3BsYXlDdXJyZW5jeVwiO1xuXG5jb25zdCBWaWV3U3RhdGVPdmVycmlkZTogYW55ID0ge1xuXHRfYlNlYXJjaFRyaWdnZXJlZDogZmFsc2UsXG5cdGFwcGx5SW5pdGlhbFN0YXRlT25seTogZnVuY3Rpb24gKCkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9LFxuXHRvbkJlZm9yZVN0YXRlQXBwbGllZDogZnVuY3Rpb24gKHRoaXM6IFZpZXdTdGF0ZSAmIHR5cGVvZiBWaWV3U3RhdGVPdmVycmlkZSwgYVByb21pc2VzOiBhbnksIG5hdmlnYXRpb25UeXBlPzogc3RyaW5nKSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0b0ZpbHRlckJhciA9IG9Db250cm9sbGVyLl9nZXRGaWx0ZXJCYXJDb250cm9sKCksXG5cdFx0XHRhVGFibGVzID0gb0NvbnRyb2xsZXIuX2dldENvbnRyb2xzKFwidGFibGVcIik7XG5cdFx0aWYgKG9GaWx0ZXJCYXIpIHtcblx0XHRcdG9GaWx0ZXJCYXIuc2V0U3VzcGVuZFNlbGVjdGlvbih0cnVlKTtcblx0XHRcdGFQcm9taXNlcy5wdXNoKChvRmlsdGVyQmFyIGFzIGFueSkud2FpdEZvckluaXRpYWxpemF0aW9uKCkpO1xuXHRcdFx0Ly9UaGlzIGlzIHJlcXVpcmVkIHRvIHJlbW92ZSBhbnkgZXhpc3Rpbmcgb3IgZGVmYXVsdCBmaWx0ZXIgY29uZGl0aW9ucyBiZWZvcmUgcmVzdG9yaW5nIHRoZSBmaWx0ZXIgYmFyIHN0YXRlIGluIGh5YnJpZCBuYXZpZ2F0aW9uIG1vZGUuXG5cdFx0XHRpZiAobmF2aWdhdGlvblR5cGUgPT09IE5hdlR5cGUuaHlicmlkKSB7XG5cdFx0XHRcdHRoaXMuX2NsZWFyRmlsdGVyQ29uZGl0aW9ucyhvRmlsdGVyQmFyKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0YVRhYmxlcy5mb3JFYWNoKGZ1bmN0aW9uIChvVGFibGU6IGFueSkge1xuXHRcdFx0YVByb21pc2VzLnB1c2gob1RhYmxlLmluaXRpYWxpemVkKCkpO1xuXHRcdH0pO1xuXG5cdFx0ZGVsZXRlIHRoaXMuX2JTZWFyY2hUcmlnZ2VyZWQ7XG5cdH0sXG5cdGFkYXB0QmluZGluZ1JlZnJlc2hDb250cm9sczogZnVuY3Rpb24gKHRoaXM6IFZpZXdTdGF0ZSwgYUNvbnRyb2xzOiBhbnkpIHtcblx0XHRjb25zdCBvVmlldyA9IHRoaXMuYmFzZS5nZXRWaWV3KCksXG5cdFx0XHRvQ29udHJvbGxlciA9IG9WaWV3LmdldENvbnRyb2xsZXIoKSBhcyBMaXN0UmVwb3J0Q29udHJvbGxlcixcblx0XHRcdGFWaWV3Q29udHJvbHMgPSBvQ29udHJvbGxlci5fZ2V0Q29udHJvbHMoKSxcblx0XHRcdGFDb250cm9sc1RvUmVmcmVzaCA9IEtlZXBBbGl2ZUhlbHBlci5nZXRDb250cm9sc0ZvclJlZnJlc2gob1ZpZXcsIGFWaWV3Q29udHJvbHMpO1xuXG5cdFx0QXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoYUNvbnRyb2xzLCBhQ29udHJvbHNUb1JlZnJlc2gpO1xuXHR9LFxuXHRhZGFwdFN0YXRlQ29udHJvbHM6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsIGFTdGF0ZUNvbnRyb2xzOiBhbnkpIHtcblx0XHRjb25zdCBvVmlldyA9IHRoaXMuZ2V0VmlldygpLFxuXHRcdFx0b0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCkgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXIsXG5cdFx0XHRvVmlld0RhdGEgPSBvVmlldy5nZXRWaWV3RGF0YSgpLFxuXHRcdFx0YkNvbnRyb2xWTSA9IG9WaWV3RGF0YS52YXJpYW50TWFuYWdlbWVudCA9PT0gVmFyaWFudE1hbmFnZW1lbnRUeXBlLkNvbnRyb2w7XG5cblx0XHRjb25zdCBvRmlsdGVyQmFyVk0gPSB0aGlzLl9nZXRGaWx0ZXJCYXJWTShvVmlldyk7XG5cdFx0aWYgKG9GaWx0ZXJCYXJWTSkge1xuXHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvRmlsdGVyQmFyVk0pO1xuXHRcdH1cblx0XHRpZiAob0NvbnRyb2xsZXIuX2lzTXVsdGlNb2RlKCkpIHtcblx0XHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob0NvbnRyb2xsZXIuX2dldE11bHRpTW9kZUNvbnRyb2woKSk7XG5cdFx0fVxuXHRcdG9Db250cm9sbGVyLl9nZXRDb250cm9scyhcInRhYmxlXCIpLmZvckVhY2goZnVuY3Rpb24gKG9UYWJsZTogYW55KSB7XG5cdFx0XHRjb25zdCBvUXVpY2tGaWx0ZXIgPSBvVGFibGUuZ2V0UXVpY2tGaWx0ZXIoKTtcblx0XHRcdGlmIChvUXVpY2tGaWx0ZXIpIHtcblx0XHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvUXVpY2tGaWx0ZXIpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGJDb250cm9sVk0pIHtcblx0XHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvVGFibGUuZ2V0VmFyaWFudCgpKTtcblx0XHRcdH1cblx0XHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob1RhYmxlKTtcblx0XHR9KTtcblx0XHRpZiAob0NvbnRyb2xsZXIuX2dldENvbnRyb2xzKFwiQ2hhcnRcIikpIHtcblx0XHRcdG9Db250cm9sbGVyLl9nZXRDb250cm9scyhcIkNoYXJ0XCIpLmZvckVhY2goZnVuY3Rpb24gKG9DaGFydDogYW55KSB7XG5cdFx0XHRcdGlmIChiQ29udHJvbFZNKSB7XG5cdFx0XHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvQ2hhcnQuZ2V0VmFyaWFudCgpKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9DaGFydCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0aWYgKG9Db250cm9sbGVyLl9nZXRDb250cm9sRnJvbVBhZ2VNb2RlbFByb3BlcnR5KFwiL211bHRpRGltZW5zaW9uYWxHcmlkSWRzL3ZhcmlhbnRNYW5hZ2VtZW50SWRcIikpIHtcblx0XHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob0NvbnRyb2xsZXIuX2dldENvbnRyb2xGcm9tUGFnZU1vZGVsUHJvcGVydHkoXCIvbXVsdGlEaW1lbnNpb25hbEdyaWRJZHMvdmFyaWFudE1hbmFnZW1lbnRJZFwiKSk7XG5cdFx0fVxuXHRcdGlmIChvQ29udHJvbGxlci5faGFzTXVsdGlWaXN1YWxpemF0aW9ucygpKSB7XG5cdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9Db250cm9sbGVyLl9nZXRTZWdtZW50ZWRCdXR0b24oVGVtcGxhdGVDb250ZW50Vmlldy5DaGFydCkpO1xuXHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvQ29udHJvbGxlci5fZ2V0U2VnbWVudGVkQnV0dG9uKFRlbXBsYXRlQ29udGVudFZpZXcuVGFibGUpKTtcblx0XHR9XG5cdFx0Y29uc3Qgb0ZpbHRlckJhciA9IG9Db250cm9sbGVyLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0aWYgKG9GaWx0ZXJCYXIpIHtcblx0XHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob0ZpbHRlckJhcik7XG5cdFx0fVxuXHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob1ZpZXcuYnlJZChcImZlOjpMaXN0UmVwb3J0XCIpKTtcblx0fSxcblx0cmV0cmlldmVBZGRpdGlvbmFsU3RhdGVzOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLCBtQWRkaXRpb25hbFN0YXRlczogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0YlBlbmRpbmdGaWx0ZXIgPSAob1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCkuZ2V0UHJvcGVydHkoXCJoYXNQZW5kaW5nRmlsdGVyc1wiKTtcblxuXHRcdG1BZGRpdGlvbmFsU3RhdGVzLmRhdGFMb2FkZWQgPSAhYlBlbmRpbmdGaWx0ZXIgfHwgISF0aGlzLl9iU2VhcmNoVHJpZ2dlcmVkO1xuXHRcdGlmIChvQ29udHJvbGxlci5faGFzTXVsdGlWaXN1YWxpemF0aW9ucygpKSB7XG5cdFx0XHRjb25zdCBzQWxwQ29udGVudFZpZXcgPSBvVmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpLmdldFByb3BlcnR5KFwiYWxwQ29udGVudFZpZXdcIik7XG5cdFx0XHRtQWRkaXRpb25hbFN0YXRlcy5hbHBDb250ZW50VmlldyA9IHNBbHBDb250ZW50Vmlldztcblx0XHR9XG5cblx0XHRkZWxldGUgdGhpcy5fYlNlYXJjaFRyaWdnZXJlZDtcblx0fSxcblx0YXBwbHlBZGRpdGlvbmFsU3RhdGVzOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLCBvQWRkaXRpb25hbFN0YXRlczogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0b0ZpbHRlckJhciA9IG9Db250cm9sbGVyLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cblx0XHRpZiAob0FkZGl0aW9uYWxTdGF0ZXMpIHtcblx0XHRcdC8vIGV4cGxpY2l0IGNoZWNrIGZvciBib29sZWFuIHZhbHVlcyAtICd1bmRlZmluZWQnIHNob3VsZCBub3QgYWx0ZXIgdGhlIHRyaWdnZXJlZCBzZWFyY2ggcHJvcGVydHlcblx0XHRcdGlmIChvQWRkaXRpb25hbFN0YXRlcy5kYXRhTG9hZGVkID09PSBmYWxzZSAmJiBvRmlsdGVyQmFyKSB7XG5cdFx0XHRcdC8vIHdpdGhvdXQgdGhpcywgdGhlIGRhdGEgaXMgbG9hZGVkIG9uIG5hdmlnYXRpbmcgYmFja1xuXHRcdFx0XHQob0ZpbHRlckJhciBhcyBhbnkpLl9iU2VhcmNoVHJpZ2dlcmVkID0gZmFsc2U7XG5cdFx0XHR9IGVsc2UgaWYgKG9BZGRpdGlvbmFsU3RhdGVzLmRhdGFMb2FkZWQgPT09IHRydWUpIHtcblx0XHRcdFx0aWYgKG9GaWx0ZXJCYXIpIHtcblx0XHRcdFx0XHRjb25zdCBmaWx0ZXJCYXJBUEkgPSBvRmlsdGVyQmFyLmdldFBhcmVudCgpIGFzIEZpbHRlckJhckFQSTtcblx0XHRcdFx0XHRmaWx0ZXJCYXJBUEkudHJpZ2dlclNlYXJjaCgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuX2JTZWFyY2hUcmlnZ2VyZWQgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0aWYgKG9Db250cm9sbGVyLl9oYXNNdWx0aVZpc3VhbGl6YXRpb25zKCkpIHtcblx0XHRcdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0ID0gb1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRcdFx0aWYgKCFEZXZpY2Uuc3lzdGVtLmRlc2t0b3AgJiYgb0FkZGl0aW9uYWxTdGF0ZXMuYWxwQ29udGVudFZpZXcgPT0gVGVtcGxhdGVDb250ZW50Vmlldy5IeWJyaWQpIHtcblx0XHRcdFx0XHRvQWRkaXRpb25hbFN0YXRlcy5hbHBDb250ZW50VmlldyA9IFRlbXBsYXRlQ29udGVudFZpZXcuQ2hhcnQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0XG5cdFx0XHRcdFx0LmdldE1vZGVsKClcblx0XHRcdFx0XHQuc2V0UHJvcGVydHkoYCR7b0ludGVybmFsTW9kZWxDb250ZXh0LmdldFBhdGgoKX0vYWxwQ29udGVudFZpZXdgLCBvQWRkaXRpb25hbFN0YXRlcy5hbHBDb250ZW50Vmlldyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgU2VhcmNoIGNhbiBiZSB0cmlnZ2VyZWQgYXQgaW5pdGlhbCBsb2FkIG9mIHRoZSBhcHBsaWNhdGlvbiBvciBub3QuXG5cdCAqXG5cdCAqIEBwYXJhbSBuYXZpZ2F0aW9uVHlwZSBOYXZpZ2F0aW9uIFR5cGUgZHVyaW5nIHRoZSBsb2FkIG9mIHRoZSBhcHBsaWNhdGlvblxuXHQgKiBAcmV0dXJucyBBIEJvb2xlYW4gZGV0ZXJtaW5pbmcgd2hldGhlciBTZWFyY2ggY2FuIGJlIHRyaWdnZXJlZCBvciBub3Rcblx0ICovXG5cdGlzU2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZChuYXZpZ2F0aW9uVHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgdmlldyA9IHRoaXMuZ2V0VmlldygpLFxuXHRcdFx0Y29udHJvbGxlciA9IHZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0dmlld0RhdGEgPSB2aWV3LmdldFZpZXdEYXRhKCk7XG5cdFx0bGV0IGlzU2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZCA9IGZhbHNlLFxuXHRcdFx0dmFyaWFudE1hbmFnZW1lbnQ7XG5cdFx0Ly8gRGV0ZXJtaW5pbmcgd2hldGhlciBpdCdzIENvbnRyb2wgdmFyaWFudE1hbmFnZW1lbnQgb3IgUGFnZSB2YXJpYW50TWFuYWdlbWVudFxuXHRcdGlmICh2aWV3RGF0YS52YXJpYW50TWFuYWdlbWVudCA9PT0gQ29yZUxpYnJhcnkuVmFyaWFudE1hbmFnZW1lbnQuQ29udHJvbCkge1xuXHRcdFx0dmFyaWFudE1hbmFnZW1lbnQgPSBjb250cm9sbGVyLl9nZXRGaWx0ZXJCYXJWYXJpYW50Q29udHJvbCgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR2YXJpYW50TWFuYWdlbWVudCA9IHZpZXcuYnlJZChcImZlOjpQYWdlVmFyaWFudE1hbmFnZW1lbnRcIik7XG5cdFx0fVxuXHRcdGNvbnN0IGN1cnJlbnRWYXJpYW50S2V5ID0gdmFyaWFudE1hbmFnZW1lbnQ/LmdldEN1cnJlbnRWYXJpYW50S2V5KCk7XG5cdFx0Ly9UaGUgY2hlY2sgc2hhbGwgaGFwcGVuIGZvciAnaW50aWFsIGxvYWQnIGFuZCAnQXBwbHkgQXV0b21hdGljYWxseScgZm9yIGNvbGxhcHNpbmcgdGhlIGhlYWRlciBvclxuXHRcdC8vIGFsd2F5cyBiZSBjb2xsYXBzZWQgaWYgbmF2VHlwZSBpcyB4QXBwU3RhdGVcblx0XHQvLyBpbml0aWFsTG9hZCBBdXRvIG9yIERpc2FibGVkXG5cdFx0aWYgKG5hdmlnYXRpb25UeXBlID09PSBOYXZUeXBlLnhBcHBTdGF0ZSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSBlbHNlIGlmICh2YXJpYW50TWFuYWdlbWVudCAmJiB2aWV3RGF0YS5pbml0aWFsTG9hZCAhPT0gSW5pdGlhbExvYWRNb2RlLkVuYWJsZWQpIHtcblx0XHRcdC8vIEhlYWRlciBpcyBjb2xsYXBzZWQgaWYgcHJlc2V0IGZpbHRlcnMgYXJlIHNldCBmb3IgaW5pdGlhbCBsb2FkIEF1dG8sIEhlYWRlciBzaGFsbCByZW1haW4gZXhwYW5kZWQgaWYgaW5pdGlhbCBsb2FkIGlzIEF1dG8gd2l0aG91dCBwcmVzZXQgZmlsdGVycyBvciBpbnRpYWwgbG9hZCBpcyBkaXNhYmxlZFxuXHRcdFx0aWYgKGNvbnRyb2xsZXIuX3Nob3VsZEF1dG9UcmlnZ2VyU2VhcmNoKHRoaXMuX2dldEZpbHRlckJhclZNKHZpZXcpKSkge1xuXHRcdFx0XHRpc1NlYXJjaFRyaWdnZXJlZEJ5SW5pdGlhbExvYWQgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQvLyBpbml0aWFsTG9hZCBFbmFibGVkXG5cdFx0ZWxzZSBpZiAoXG5cdFx0XHR2YXJpYW50TWFuYWdlbWVudCAmJlxuXHRcdFx0dmlld0RhdGEuaW5pdGlhbExvYWQgPT09IEluaXRpYWxMb2FkTW9kZS5FbmFibGVkICYmXG5cdFx0XHRjb250cm9sbGVyLl9nZXRBcHBseUF1dG9tYXRpY2FsbHlPblZhcmlhbnQodmFyaWFudE1hbmFnZW1lbnQsIGN1cnJlbnRWYXJpYW50S2V5KVxuXHRcdCkge1xuXHRcdFx0aXNTZWFyY2hUcmlnZ2VyZWRCeUluaXRpYWxMb2FkID0gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIGlzU2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZDtcblx0fSxcblxuXHRfZW5hYmxlRmlsdGVyQmFyOiBmdW5jdGlvbiAoZmlsdGVyQmFyQ29udHJvbDogRmlsdGVyQmFyLCBwcmV2ZW50SW5pdGlhbFNlYXJjaDogYm9vbGVhbikge1xuXHRcdGNvbnN0IGZpbHRlckJhckFQSSA9IGZpbHRlckJhckNvbnRyb2wuZ2V0UGFyZW50KCkgYXMgRmlsdGVyQmFyQVBJO1xuXHRcdGNvbnN0IGZuT25TZWFyY2ggPSAoKTogdm9pZCA9PiB7XG5cdFx0XHR0aGlzLl9iU2VhcmNoVHJpZ2dlcmVkID0gIXByZXZlbnRJbml0aWFsU2VhcmNoO1xuXHRcdH07XG5cblx0XHQvLyByZXNldCB0aGUgc3VzcGVuZCBzZWxlY3Rpb24gb24gZmlsdGVyIGJhciB0byBhbGxvdyBsb2FkaW5nIG9mIGRhdGEgd2hlbiBuZWVkZWQgKHdhcyBzZXQgb24gTFIgSW5pdClcblx0XHRpZiAoZmlsdGVyQmFyQ29udHJvbC5nZXRTdXNwZW5kU2VsZWN0aW9uKCkpIHtcblx0XHRcdC8vIE9ubHkgaWYgc2VhcmNoIGlzIGZpcmVkIHdlIHNldCBfYlNlYXJjaFRyaWdnZXJlZC5cblx0XHRcdC8vIElmIHRoZXJlIHdhcyBhbiBlcnJvciBkdWUgdG8gcmVxdWlyZWQgZmlsdGVyZmllbGRzIGVtcHR5IG9yIG90aGVyIGlzc3VlcyB3ZSBza2lwIHNldHRpbmcgX2JTZWFyY2hUcmlnZ2VyZWQuXG5cdFx0XHRmaWx0ZXJCYXJBUEkuYXR0YWNoRXZlbnRPbmNlKFwic2VhcmNoXCIsIGZuT25TZWFyY2gpO1xuXHRcdFx0ZmlsdGVyQmFyQ29udHJvbC5zZXRTdXNwZW5kU2VsZWN0aW9uKGZhbHNlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gc2VhcmNoIG1pZ2h0IGFscmVhZHkgYmUgdHJpZ2dlcmVkLlxuXHRcdFx0Zm5PblNlYXJjaCgpO1xuXHRcdH1cblx0fSxcblxuXHRfYXBwbHlOYXZpZ2F0aW9uUGFyYW1ldGVyc1RvRmlsdGVyYmFyOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLCBvTmF2aWdhdGlvblBhcmFtZXRlcjogYW55LCBhUmVzdWx0czogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKTtcblx0XHRjb25zdCBvQ29udHJvbGxlciA9IG9WaWV3LmdldENvbnRyb2xsZXIoKSBhcyBMaXN0UmVwb3J0Q29udHJvbGxlcjtcblx0XHRjb25zdCBvQXBwQ29tcG9uZW50ID0gb0NvbnRyb2xsZXIuZ2V0QXBwQ29tcG9uZW50KCk7XG5cdFx0Y29uc3Qgb0NvbXBvbmVudERhdGEgPSBvQXBwQ29tcG9uZW50LmdldENvbXBvbmVudERhdGEoKTtcblx0XHRjb25zdCBvU3RhcnR1cFBhcmFtZXRlcnMgPSAob0NvbXBvbmVudERhdGEgJiYgb0NvbXBvbmVudERhdGEuc3RhcnR1cFBhcmFtZXRlcnMpIHx8IHt9O1xuXHRcdGNvbnN0IG9WYXJpYW50UHJvbWlzZSA9IHRoaXMuaGFuZGxlVmFyaWFudElkUGFzc2VkVmlhVVJMUGFyYW1zKG9TdGFydHVwUGFyYW1ldGVycyk7XG5cdFx0bGV0IGJGaWx0ZXJWYXJpYW50QXBwbGllZDogYm9vbGVhbjtcblx0XHRhUmVzdWx0cy5wdXNoKFxuXHRcdFx0b1ZhcmlhbnRQcm9taXNlXG5cdFx0XHRcdC50aGVuKChhVmFyaWFudHM6IGFueVtdKSA9PiB7XG5cdFx0XHRcdFx0aWYgKGFWYXJpYW50cyAmJiBhVmFyaWFudHMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0aWYgKGFWYXJpYW50c1swXSA9PT0gdHJ1ZSB8fCBhVmFyaWFudHNbMV0gPT09IHRydWUpIHtcblx0XHRcdFx0XHRcdFx0YkZpbHRlclZhcmlhbnRBcHBsaWVkID0gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMuX2FwcGx5U2VsZWN0aW9uVmFyaWFudChvVmlldywgb05hdmlnYXRpb25QYXJhbWV0ZXIsIGJGaWx0ZXJWYXJpYW50QXBwbGllZCk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC50aGVuKChhcHBsaWVkQ29uZGl0aW9uOiB1bmtub3duW10pID0+IHtcblx0XHRcdFx0XHRjb25zdCBzZWxlY3Rpb25WYXJpYW50V2FzQXBwbGllZCA9IEFycmF5LmlzQXJyYXkoYXBwbGllZENvbmRpdGlvbikgJiYgYXBwbGllZENvbmRpdGlvbi5sZW5ndGggPiAwO1xuXHRcdFx0XHRcdGxldCBiUHJldmVudEluaXRpYWxTZWFyY2ggPSBmYWxzZTtcblx0XHRcdFx0XHRjb25zdCBvRmlsdGVyQmFyVk0gPSB0aGlzLl9nZXRGaWx0ZXJCYXJWTShvVmlldyk7XG5cdFx0XHRcdFx0Y29uc3Qgb0ZpbHRlckJhckNvbnRyb2wgPSBvQ29udHJvbGxlci5fZ2V0RmlsdGVyQmFyQ29udHJvbCgpO1xuXHRcdFx0XHRcdGlmIChvRmlsdGVyQmFyQ29udHJvbCkge1xuXHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHQob05hdmlnYXRpb25QYXJhbWV0ZXIubmF2aWdhdGlvblR5cGUgIT09IE5hdlR5cGUuaW5pdGlhbCAmJiBvTmF2aWdhdGlvblBhcmFtZXRlci5yZXF1aXJlc1N0YW5kYXJkVmFyaWFudCAmJiBzZWxlY3Rpb25WYXJpYW50V2FzQXBwbGllZCkgfHxcblx0XHRcdFx0XHRcdFx0KCFvRmlsdGVyQmFyVk0gJiYgb1ZpZXcuZ2V0Vmlld0RhdGEoKS5pbml0aWFsTG9hZCA9PT0gSW5pdGlhbExvYWRNb2RlLkVuYWJsZWQpIHx8XG5cdFx0XHRcdFx0XHRcdG9Db250cm9sbGVyLl9zaG91bGRBdXRvVHJpZ2dlclNlYXJjaChvRmlsdGVyQmFyVk0pXG5cdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgZmlsdGVyQmFyQVBJID0gb0ZpbHRlckJhckNvbnRyb2wuZ2V0UGFyZW50KCkgYXMgRmlsdGVyQmFyQVBJO1xuXHRcdFx0XHRcdFx0XHRmaWx0ZXJCYXJBUEkudHJpZ2dlclNlYXJjaCgpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0YlByZXZlbnRJbml0aWFsU2VhcmNoID0gdGhpcy5fcHJldmVudEluaXRpYWxTZWFyY2gob0ZpbHRlckJhclZNKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdC8vY29sbGFwc2Ugb3IgZXhwYW5kIHNoYWxsIGJlIGF2YWlsYWJsZSBvbmx5IGZvciBub24tZGVza3RvcCBzeXN0ZW1zXG5cdFx0XHRcdFx0XHRpZiAoIURldmljZS5zeXN0ZW0uZGVza3RvcCkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBpbnRlcm5hbE1vZGVsQ29udGV4dCA9IG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHNlYXJjaFRyaWdnZXJlZEJ5SW5pdGlhbExvYWQgPSB0aGlzLmlzU2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZChvTmF2aWdhdGlvblBhcmFtZXRlci5uYXZpZ2F0aW9uVHlwZSk7XG5cdFx0XHRcdFx0XHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwic2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZFwiLCBzZWFyY2hUcmlnZ2VyZWRCeUluaXRpYWxMb2FkKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRoaXMuX2VuYWJsZUZpbHRlckJhcihvRmlsdGVyQmFyQ29udHJvbCwgYlByZXZlbnRJbml0aWFsU2VhcmNoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdExvZy5lcnJvcihcIlZhcmlhbnQgSUQgY2Fubm90IGJlIGFwcGxpZWRcIik7XG5cdFx0XHRcdH0pXG5cdFx0KTtcblx0fSxcblxuXHRoYW5kbGVWYXJpYW50SWRQYXNzZWRWaWFVUkxQYXJhbXM6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsIG9VcmxQYXJhbXM6IGFueSkge1xuXHRcdGNvbnN0IGFQYWdlVmFyaWFudElkID0gb1VybFBhcmFtc1tcInNhcC11aS1mZS12YXJpYW50LWlkXCJdLFxuXHRcdFx0YUZpbHRlckJhclZhcmlhbnRJZCA9IG9VcmxQYXJhbXNbXCJzYXAtdWktZmUtZmlsdGVyYmFyLXZhcmlhbnQtaWRcIl0sXG5cdFx0XHRhVGFibGVWYXJpYW50SWQgPSBvVXJsUGFyYW1zW1wic2FwLXVpLWZlLXRhYmxlLXZhcmlhbnQtaWRcIl0sXG5cdFx0XHRhQ2hhcnRWYXJpYW50SWQgPSBvVXJsUGFyYW1zW1wic2FwLXVpLWZlLWNoYXJ0LXZhcmlhbnQtaWRcIl07XG5cdFx0bGV0IG9WYXJpYW50SURzO1xuXHRcdGlmIChhUGFnZVZhcmlhbnRJZCB8fCBhRmlsdGVyQmFyVmFyaWFudElkIHx8IGFUYWJsZVZhcmlhbnRJZCB8fCBhQ2hhcnRWYXJpYW50SWQpIHtcblx0XHRcdG9WYXJpYW50SURzID0ge1xuXHRcdFx0XHRzUGFnZVZhcmlhbnRJZDogYVBhZ2VWYXJpYW50SWQgJiYgYVBhZ2VWYXJpYW50SWRbMF0sXG5cdFx0XHRcdHNGaWx0ZXJCYXJWYXJpYW50SWQ6IGFGaWx0ZXJCYXJWYXJpYW50SWQgJiYgYUZpbHRlckJhclZhcmlhbnRJZFswXSxcblx0XHRcdFx0c1RhYmxlVmFyaWFudElkOiBhVGFibGVWYXJpYW50SWQgJiYgYVRhYmxlVmFyaWFudElkWzBdLFxuXHRcdFx0XHRzQ2hhcnRWYXJpYW50SWQ6IGFDaGFydFZhcmlhbnRJZCAmJiBhQ2hhcnRWYXJpYW50SWRbMF1cblx0XHRcdH07XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLl9oYW5kbGVDb250cm9sVmFyaWFudElkKG9WYXJpYW50SURzKTtcblx0fSxcblxuXHRfaGFuZGxlQ29udHJvbFZhcmlhbnRJZDogZnVuY3Rpb24gKHRoaXM6IFZpZXdTdGF0ZSAmIHR5cGVvZiBWaWV3U3RhdGVPdmVycmlkZSwgb1ZhcmlhbnRJRHM6IFZhcmlhbnRJRHMpIHtcblx0XHRsZXQgb1ZNOiBWYXJpYW50TWFuYWdlbWVudDtcblx0XHRjb25zdCBvVmlldyA9IHRoaXMuZ2V0VmlldygpLFxuXHRcdFx0YVByb21pc2VzOiBWYXJpYW50TWFuYWdlbWVudFtdID0gW107XG5cdFx0Y29uc3Qgc1ZhcmlhbnRNYW5hZ2VtZW50ID0gb1ZpZXcuZ2V0Vmlld0RhdGEoKS52YXJpYW50TWFuYWdlbWVudDtcblx0XHRpZiAob1ZhcmlhbnRJRHMgJiYgb1ZhcmlhbnRJRHMuc1BhZ2VWYXJpYW50SWQgJiYgc1ZhcmlhbnRNYW5hZ2VtZW50ID09PSBcIlBhZ2VcIikge1xuXHRcdFx0b1ZNID0gb1ZpZXcuYnlJZChcImZlOjpQYWdlVmFyaWFudE1hbmFnZW1lbnRcIik7XG5cdFx0XHR0aGlzLl9oYW5kbGVQYWdlVmFyaWFudElkKG9WYXJpYW50SURzLCBvVk0sIGFQcm9taXNlcyk7XG5cdFx0fSBlbHNlIGlmIChvVmFyaWFudElEcyAmJiBzVmFyaWFudE1hbmFnZW1lbnQgPT09IFwiQ29udHJvbFwiKSB7XG5cdFx0XHRpZiAob1ZhcmlhbnRJRHMuc0ZpbHRlckJhclZhcmlhbnRJZCkge1xuXHRcdFx0XHRvVk0gPSBvVmlldy5nZXRDb250cm9sbGVyKCkuX2dldEZpbHRlckJhclZhcmlhbnRDb250cm9sKCk7XG5cdFx0XHRcdHRoaXMuX2hhbmRsZUZpbHRlckJhclZhcmlhbnRDb250cm9sSWQob1ZhcmlhbnRJRHMsIG9WTSwgYVByb21pc2VzKTtcblx0XHRcdH1cblx0XHRcdGlmIChvVmFyaWFudElEcy5zVGFibGVWYXJpYW50SWQpIHtcblx0XHRcdFx0Y29uc3Qgb0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCkgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXI7XG5cdFx0XHRcdHRoaXMuX2hhbmRsZVRhYmxlQ29udHJvbFZhcmlhbnRJZChvVmFyaWFudElEcywgb0NvbnRyb2xsZXIsIGFQcm9taXNlcyk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChvVmFyaWFudElEcy5zQ2hhcnRWYXJpYW50SWQpIHtcblx0XHRcdFx0Y29uc3Qgb0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCkgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXI7XG5cdFx0XHRcdHRoaXMuX2hhbmRsZUNoYXJ0Q29udHJvbFZhcmlhbnRJZChvVmFyaWFudElEcywgb0NvbnRyb2xsZXIsIGFQcm9taXNlcyk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBQcm9taXNlLmFsbChhUHJvbWlzZXMpO1xuXHR9LFxuXHQvKlxuXHQgKiBIYW5kbGVzIHBhZ2UgbGV2ZWwgdmFyaWFudCBhbmQgcGFzc2VzIHRoZSB2YXJpYW50IHRvIHRoZSBmdW5jdGlvbiB0aGF0IHB1c2hlcyB0aGUgcHJvbWlzZSB0byB0aGUgcHJvbWlzZSBhcnJheVxuXHQgKlxuXHQgKiBAcGFyYW0gb1ZhcmluYXRJRHMgY29udGFpbnMgYW4gb2JqZWN0IG9mIGFsbCB2YXJpYW50IElEc1xuXHQgKiBAcGFyYW0gb1ZNIGNvbnRhaW5zIHRoZSB2YWlyYW50IG1hbmFnZW1lbnQgb2JqZWN0IGZvciB0aGUgcGFnZSB2YXJpYW50XG5cdCAqIEBwYXJhbSBhUHJvbWlzZXMgaXMgYW4gYXJyYXkgb2YgYWxsIHByb21pc2VzXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRfaGFuZGxlUGFnZVZhcmlhbnRJZDogZnVuY3Rpb24gKFxuXHRcdHRoaXM6IFZpZXdTdGF0ZSAmIHR5cGVvZiBWaWV3U3RhdGVPdmVycmlkZSxcblx0XHRvVmFyaWFudElEczogVmFyaWFudElEcyxcblx0XHRvVk06IFZhcmlhbnRNYW5hZ2VtZW50LFxuXHRcdGFQcm9taXNlczogVmFyaWFudE1hbmFnZW1lbnRbXVxuXHQpIHtcblx0XHRvVk0uZ2V0VmFyaWFudHMoKT8uZm9yRWFjaCgob1ZhcmlhbnQ6IFZhcmlhbnRPYmplY3QpID0+IHtcblx0XHRcdHRoaXMuX2ZpbmRBbmRQdXNoVmFyaWFudFRvUHJvbWlzZShvVmFyaWFudCwgb1ZhcmlhbnRJRHMuc1BhZ2VWYXJpYW50SWQsIG9WTSwgYVByb21pc2VzLCB0cnVlKTtcblx0XHR9KTtcblx0fSxcblxuXHQvKlxuXHQgKiBIYW5kbGVzIGNvbnRyb2wgbGV2ZWwgdmFyaWFudCBmb3IgZmlsdGVyIGJhciBhbmQgcGFzc2VzIHRoZSB2YXJpYW50IHRvIHRoZSBmdW5jdGlvbiB0aGF0IHB1c2hlcyB0aGUgcHJvbWlzZSB0byB0aGUgcHJvbWlzZSBhcnJheVxuXHQgKlxuXHQgKiBAcGFyYW0gb1ZhcmluYXRJRHMgY29udGFpbnMgYW4gb2JqZWN0IG9mIGFsbCB2YXJpYW50IElEc1xuXHQgKiBAcGFyYW0gb1ZNIGNvbnRhaW5zIHRoZSB2YWlyYW50IG1hbmFnZW1lbnQgb2JqZWN0IGZvciB0aGUgZmlsdGVyIGJhclxuXHQgKiBAcGFyYW0gYVByb21pc2VzIGlzIGFuIGFycmF5IG9mIGFsbCBwcm9taXNlc1xuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblxuXHRfaGFuZGxlRmlsdGVyQmFyVmFyaWFudENvbnRyb2xJZDogZnVuY3Rpb24gKFxuXHRcdHRoaXM6IFZpZXdTdGF0ZSAmIHR5cGVvZiBWaWV3U3RhdGVPdmVycmlkZSxcblx0XHRvVmFyaWFudElEczogVmFyaWFudElEcyxcblx0XHRvVk06IFZhcmlhbnRNYW5hZ2VtZW50LFxuXHRcdGFQcm9taXNlczogVmFyaWFudE1hbmFnZW1lbnRbXVxuXHQpIHtcblx0XHRpZiAob1ZNKSB7XG5cdFx0XHRvVk0uZ2V0VmFyaWFudHMoKS5mb3JFYWNoKChvVmFyaWFudDogVmFyaWFudE9iamVjdCkgPT4ge1xuXHRcdFx0XHR0aGlzLl9maW5kQW5kUHVzaFZhcmlhbnRUb1Byb21pc2Uob1ZhcmlhbnQsIG9WYXJpYW50SURzLnNGaWx0ZXJCYXJWYXJpYW50SWQsIG9WTSwgYVByb21pc2VzLCB0cnVlKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fSxcblxuXHQvKlxuXHQgKiBIYW5kbGVzIGNvbnRyb2wgbGV2ZWwgdmFyaWFudCBmb3IgdGFibGUgYW5kIHBhc3NlcyB0aGUgdmFyaWFudCB0byB0aGUgZnVuY3Rpb24gdGhhdCBwdXNoZXMgdGhlIHByb21pc2UgdG8gdGhlIHByb21pc2UgYXJyYXlcblx0ICpcblx0ICogQHBhcmFtIG9WYXJpbmF0SURzIGNvbnRhaW5zIGFuIG9iamVjdCBvZiBhbGwgdmFyaWFudCBJRHNcblx0ICogQHBhcmFtIG9Db250cm9sbGVyIGhhcyB0aGUgbGlzdCByZXBvcnQgY29udHJvbGxlciBvYmplY3Rcblx0ICogQHBhcmFtIGFQcm9taXNlcyBpcyBhbiBhcnJheSBvZiBhbGwgcHJvbWlzZXNcblx0ICogQHByaXZhdGVcblx0ICovXG5cdF9oYW5kbGVUYWJsZUNvbnRyb2xWYXJpYW50SWQ6IGZ1bmN0aW9uIChcblx0XHR0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsXG5cdFx0b1ZhcmlhbnRJRHM6IFZhcmlhbnRJRHMsXG5cdFx0b0NvbnRyb2xsZXI6IExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdGFQcm9taXNlczogVmFyaWFudE1hbmFnZW1lbnRbXVxuXHQpIHtcblx0XHRjb25zdCBhVGFibGVzID0gb0NvbnRyb2xsZXIuX2dldENvbnRyb2xzKFwidGFibGVcIik7XG5cdFx0YVRhYmxlcy5mb3JFYWNoKChvVGFibGU6IFRhYmxlKSA9PiB7XG5cdFx0XHRjb25zdCBvVGFibGVWYXJpYW50ID0gb1RhYmxlLmdldFZhcmlhbnQoKTtcblx0XHRcdGlmIChvVGFibGUgJiYgb1RhYmxlVmFyaWFudCkge1xuXHRcdFx0XHRvVGFibGVWYXJpYW50LmdldFZhcmlhbnRzKCkuZm9yRWFjaCgob1ZhcmlhbnQ6IFZhcmlhbnRPYmplY3QpID0+IHtcblx0XHRcdFx0XHR0aGlzLl9maW5kQW5kUHVzaFZhcmlhbnRUb1Byb21pc2Uob1ZhcmlhbnQsIG9WYXJpYW50SURzLnNUYWJsZVZhcmlhbnRJZCwgb1RhYmxlVmFyaWFudCwgYVByb21pc2VzKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0sXG5cblx0Lypcblx0ICogSGFuZGxlcyBjb250cm9sIGxldmVsIHZhcmlhbnQgZm9yIGNoYXJ0IGFuZCBwYXNzZXMgdGhlIHZhcmlhbnQgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgcHVzaGVzIHRoZSBwcm9taXNlIHRvIHRoZSBwcm9taXNlIGFycmF5XG5cdCAqXG5cdCAqIEBwYXJhbSBvVmFyaW5hdElEcyBjb250YWlucyBhbiBvYmplY3Qgb2YgYWxsIHZhcmlhbnQgSURzXG5cdCAqIEBwYXJhbSBvQ29udHJvbGxlciBoYXMgdGhlIGxpc3QgcmVwb3J0IGNvbnRyb2xsZXIgb2JqZWN0XG5cdCAqIEBwYXJhbSBhUHJvbWlzZXMgaXMgYW4gYXJyYXkgb2YgYWxsIHByb21pc2VzXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRfaGFuZGxlQ2hhcnRDb250cm9sVmFyaWFudElkOiBmdW5jdGlvbiAoXG5cdFx0dGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLFxuXHRcdG9WYXJpYW50SURzOiBWYXJpYW50SURzLFxuXHRcdG9Db250cm9sbGVyOiBMaXN0UmVwb3J0Q29udHJvbGxlcixcblx0XHRhUHJvbWlzZXM6IFZhcmlhbnRNYW5hZ2VtZW50W11cblx0KSB7XG5cdFx0Y29uc3QgYUNoYXJ0cyA9IG9Db250cm9sbGVyLl9nZXRDb250cm9scyhcIkNoYXJ0XCIpO1xuXHRcdGFDaGFydHMuZm9yRWFjaCgob0NoYXJ0OiBDaGFydCkgPT4ge1xuXHRcdFx0Y29uc3Qgb0NoYXJ0VmFyaWFudCA9IG9DaGFydC5nZXRWYXJpYW50KCk7XG5cdFx0XHRjb25zdCBhVmFyaWFudHMgPSBvQ2hhcnRWYXJpYW50LmdldFZhcmlhbnRzKCk7XG5cdFx0XHRpZiAoYVZhcmlhbnRzKSB7XG5cdFx0XHRcdGFWYXJpYW50cy5mb3JFYWNoKChvVmFyaWFudDogVmFyaWFudE9iamVjdCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuX2ZpbmRBbmRQdXNoVmFyaWFudFRvUHJvbWlzZShvVmFyaWFudCwgb1ZhcmlhbnRJRHMuc0NoYXJ0VmFyaWFudElkLCBvQ2hhcnRWYXJpYW50LCBhUHJvbWlzZXMpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fSxcblx0Lypcblx0ICogTWF0Y2hlcyB0aGUgdmFyaWFudCBJRCBwcm92aWRlZCBpbiB0aGUgdXJsIHRvIHRoZSBhdmFpbGFibGUgdmFpcmFudCBJRHMgYW5kIHB1c2hlcyB0aGUgYXBwcm9wcmlhdGUgcHJvbWlzZSB0byB0aGUgcHJvbWlzZSBhcnJheVxuXHQgKlxuXHQgKiBAcGFyYW0gb1ZhcmlhbnQgaXMgYW4gb2JqZWN0IGZvciBhIHNwZWNpZmljIHZhcmlhbnRcblx0ICogQHBhcmFtIHNWYXJpYW50SWQgaXMgdGhlIHZhcmlhbnQgSUQgcHJvdmlkZWQgaW4gdGhlIHVybFxuXHQgKiBAcGFyYW0gb1ZNIGlzIHRoZSB2YXJpYW50IG1hbmFnZW1lbnQgb2JqZWN0IGZvciB0aGUgc3BlY2ZpYyB2YXJpYW50XG5cdCAqIEBwYXJhbSBhUHJvbWlzZXMgaXMgYW4gYXJyYXkgb2YgcHJvbWlzZXNcblx0ICogQHBhcmFtIGJGaWx0ZXJWYXJpYW50QXBwbGllZCBpcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIgd2hpY2ggaXMgc2V0IHRvIHR1cmUgaW4gY2FzZSB0aGUgZmlsdGVyIHZhcmlhbnQgaXMgYXBwbGllZFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0X2ZpbmRBbmRQdXNoVmFyaWFudFRvUHJvbWlzZTogZnVuY3Rpb24gKFxuXHRcdC8vVGhpcyBmdW5jdGlvbiBmaW5kcyB0aGUgc3VpdGFibGUgdmFyaWFudCBmb3IgdGhlIHZhcmlhbnRJRCBwcm92aWRlZCBpbiB0aGUgdXJsIGFuZCBwdXNoZXMgdGhlbSB0byB0aGUgcHJvbWlzZSBhcnJheVxuXHRcdHRoaXM6IFZpZXdTdGF0ZSAmIHR5cGVvZiBWaWV3U3RhdGVPdmVycmlkZSxcblx0XHRvVmFyaWFudDogVmFyaWFudE9iamVjdCxcblx0XHRzVmFyaWFudElkOiBTdHJpbmcsXG5cdFx0b1ZNOiBWYXJpYW50TWFuYWdlbWVudCxcblx0XHRhUHJvbWlzZXM6IFZhcmlhbnRNYW5hZ2VtZW50W10sXG5cdFx0YkZpbHRlclZhcmlhbnRBcHBsaWVkPzogYm9vbGVhblxuXHQpIHtcblx0XHRpZiAob1ZhcmlhbnQuZ2V0S2V5KCkgPT09IHNWYXJpYW50SWQpIHtcblx0XHRcdGFQcm9taXNlcy5wdXNoKHRoaXMuX2FwcGx5Q29udHJvbFZhcmlhbnQob1ZNLCBzVmFyaWFudElkLCBiRmlsdGVyVmFyaWFudEFwcGxpZWQpKTtcblx0XHR9XG5cdH0sXG5cblx0X2FwcGx5Q29udHJvbFZhcmlhbnQ6IGZ1bmN0aW9uIChvVmFyaWFudDogYW55LCBzVmFyaWFudElEOiBhbnksIGJGaWx0ZXJWYXJpYW50QXBwbGllZDogYW55KSB7XG5cdFx0Y29uc3Qgc1ZhcmlhbnRSZWZlcmVuY2UgPSB0aGlzLl9jaGVja0lmVmFyaWFudElkSXNBdmFpbGFibGUob1ZhcmlhbnQsIHNWYXJpYW50SUQpID8gc1ZhcmlhbnRJRCA6IG9WYXJpYW50LmdldFN0YW5kYXJkVmFyaWFudEtleSgpO1xuXHRcdGNvbnN0IG9WTSA9IENvbnRyb2xWYXJpYW50QXBwbHlBUEkuYWN0aXZhdGVWYXJpYW50KHtcblx0XHRcdGVsZW1lbnQ6IG9WYXJpYW50LFxuXHRcdFx0dmFyaWFudFJlZmVyZW5jZTogc1ZhcmlhbnRSZWZlcmVuY2Vcblx0XHR9KTtcblx0XHRyZXR1cm4gb1ZNLnRoZW4oZnVuY3Rpb24gKCkge1xuXHRcdFx0cmV0dXJuIGJGaWx0ZXJWYXJpYW50QXBwbGllZDtcblx0XHR9KTtcblx0fSxcblx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogcHJpdmF0ZSBoZWxwZXIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cblx0LyoqXG5cdCAqIFZhcmlhbnQgbWFuYWdlbWVudCB1c2VkIGJ5IGZpbHRlciBiYXIuXG5cdCAqXG5cdCAqIEBwYXJhbSB2aWV3IFZpZXcgb2YgdGhlIExSIGZpbHRlciBiYXJcblx0ICogQHJldHVybnMgVmFyaWFudE1hbmFnZW1lbnQgaWYgdXNlZFxuXHQgKi9cblx0X2dldEZpbHRlckJhclZNOiAodmlldzogVmlldyk6IFZhcmlhbnRNYW5hZ2VtZW50IHwgdW5kZWZpbmVkID0+IHtcblx0XHRsZXQgdmFyaWFudE1hbmFnZW1lbnQ7XG5cdFx0Y29uc3Qgdmlld0RhdGEgPSB2aWV3LmdldFZpZXdEYXRhKCkgYXMgTFJWaWV3RGF0YTtcblx0XHRzd2l0Y2ggKHZpZXdEYXRhLnZhcmlhbnRNYW5hZ2VtZW50KSB7XG5cdFx0XHRjYXNlIFZhcmlhbnRNYW5hZ2VtZW50VHlwZS5QYWdlOlxuXHRcdFx0XHR2YXJpYW50TWFuYWdlbWVudCA9IHZpZXcuYnlJZChcImZlOjpQYWdlVmFyaWFudE1hbmFnZW1lbnRcIik7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBWYXJpYW50TWFuYWdlbWVudFR5cGUuQ29udHJvbDpcblx0XHRcdFx0dmFyaWFudE1hbmFnZW1lbnQgPSAodmlldy5nZXRDb250cm9sbGVyKCkgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXIpLl9nZXRGaWx0ZXJCYXJWYXJpYW50Q29udHJvbCgpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgVmFyaWFudE1hbmFnZW1lbnRUeXBlLk5vbmU6XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0cmV0dXJuIHZhcmlhbnRNYW5hZ2VtZW50IGFzIFZhcmlhbnRNYW5hZ2VtZW50IHwgdW5kZWZpbmVkO1xuXHR9LFxuXG5cdF9wcmV2ZW50SW5pdGlhbFNlYXJjaDogZnVuY3Rpb24gKG9WYXJpYW50TWFuYWdlbWVudDogYW55KSB7XG5cdFx0aWYgKCFvVmFyaWFudE1hbmFnZW1lbnQpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRjb25zdCBhVmFyaWFudHMgPSBvVmFyaWFudE1hbmFnZW1lbnQuZ2V0VmFyaWFudHMoKTtcblx0XHRjb25zdCBvQ3VycmVudFZhcmlhbnQgPSBhVmFyaWFudHMuZmluZChmdW5jdGlvbiAob0l0ZW06IGFueSkge1xuXHRcdFx0cmV0dXJuIG9JdGVtLmdldEtleSgpID09PSBvVmFyaWFudE1hbmFnZW1lbnQuZ2V0Q3VycmVudFZhcmlhbnRLZXkoKTtcblx0XHR9KTtcblx0XHRyZXR1cm4gIW9DdXJyZW50VmFyaWFudC5leGVjdXRlT25TZWxlY3Q7XG5cdH0sXG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiBEaXNwbGF5Q3VycmVuY3kgaXMgbWFuZGF0b3J5IGZvciBmaWx0ZXJpbmcuXG5cdCAqXG5cdCAqIEBwYXJhbSBtZXRhTW9kZWwgT2RhdGFWNCBNZXRhTW9kZWxcblx0ICogQHBhcmFtIGNvbnRleHRQYXRoIExpc3QgUmVwb3J0IGNvbnRleHQgcGF0aC5cblx0ICogQHJldHVybnMgQm9vbGVhblxuXHQgKi9cblx0X2NoZWNrSWZEaXNwbGF5Q3VycmVuY3lJc1JlcXVpcmVkOiBmdW5jdGlvbiAobWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbCwgY29udGV4dFBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IG1ldGFDb250ZXh0ID0gbWV0YU1vZGVsLmdldE1ldGFDb250ZXh0KGNvbnRleHRQYXRoKSxcblx0XHRcdGRhdGFNb2RlbE9iamVjdFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMobWV0YUNvbnRleHQpLFxuXHRcdFx0ZW50aXR5U2V0ID0gZGF0YU1vZGVsT2JqZWN0UGF0aC5zdGFydGluZ0VudGl0eVNldC5fdHlwZSA9PT0gXCJFbnRpdHlTZXRcIiA/IGRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQgOiB1bmRlZmluZWQsXG5cdFx0XHRyZXF1aXJlZFByb3BlcnRpZXMgPSBlbnRpdHlTZXQ/LmFubm90YXRpb25zLkNhcGFiaWxpdGllcz8uRmlsdGVyUmVzdHJpY3Rpb25zPy5SZXF1aXJlZFByb3BlcnRpZXMgPz8gW10sXG5cdFx0XHRkaXNwbGF5Q3VycmVuY3lJc01hbmRhdG9yeSA9IHJlcXVpcmVkUHJvcGVydGllcy5zb21lKFxuXHRcdFx0XHQocmVxdWlyZWRQcm9wZXJ0eSkgPT4gcmVxdWlyZWRQcm9wZXJ0eS52YWx1ZSA9PT0gRElTUExBWV9DVVJSRU5DWV9QUk9QRVJUWV9OQU1FXG5cdFx0XHQpO1xuXG5cdFx0cmV0dXJuIGRpc3BsYXlDdXJyZW5jeUlzTWFuZGF0b3J5O1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBBZGQgRGlzcGxheUN1cnJlbmN5IHRvIFNWIGlmIGl0IGlzIG1hbmRhdG9yeSBhbmQgZXhpc3RzIGluIFNWIGRlZmF1bHRzLlxuXHQgKlxuXHQgKiBAcGFyYW0gdmlldyBWaWV3IG9mIHRoZSBMUiBmaWx0ZXIgYmFyXG5cdCAqIEBwYXJhbSBzdiBTZWxlY3Rpb24gVmFyaWFudCB0byBhcHBseVxuXHQgKiBAcGFyYW0gc3ZEZWZhdWx0cyBTZWxlY3Rpb24gVmFyaWFudCBkZWZhdWx0c1xuXHQgKi9cblx0X2FkZERlZmF1bHREaXNwbGF5Q3VycmVuY3lUb1NWOiBmdW5jdGlvbiAodmlldzogVmlldywgc3Y6IFNlbGVjdGlvblZhcmlhbnQsIHN2RGVmYXVsdHM/OiBTZWxlY3Rpb25WYXJpYW50KSB7XG5cdFx0aWYgKCFzdkRlZmF1bHRzIHx8IHN2RGVmYXVsdHM/LmlzRW1wdHkoKSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IHZpZXdEYXRhID0gdmlldy5nZXRWaWV3RGF0YSgpIGFzIExSVmlld0RhdGEsXG5cdFx0XHRtZXRhTW9kZWwgPSB2aWV3LmdldE1vZGVsKCk/LmdldE1ldGFNb2RlbCgpIGFzIE9EYXRhTWV0YU1vZGVsLFxuXHRcdFx0Y29udGV4dFBhdGggPSB2aWV3RGF0YS5jb250ZXh0UGF0aCB8fCBgLyR7dmlld0RhdGEuZW50aXR5U2V0fWAsXG5cdFx0XHRkaXNwbGF5Q3VycmVuY3lJc01hbmRhdG9yeSA9IHRoaXMuX2NoZWNrSWZEaXNwbGF5Q3VycmVuY3lJc1JlcXVpcmVkKG1ldGFNb2RlbCwgY29udGV4dFBhdGgpIGFzIGJvb2xlYW47XG5cblx0XHRpZiAoIWRpc3BsYXlDdXJyZW5jeUlzTWFuZGF0b3J5KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3Qgc3ZPcHRpb25zID0gc3YuZ2V0U2VsZWN0T3B0aW9uKERJU1BMQVlfQ1VSUkVOQ1lfUFJPUEVSVFlfTkFNRSksXG5cdFx0XHRkZWZhdWx0U1ZPcHRpb25zID0gc3ZEZWZhdWx0cy5nZXRTZWxlY3RPcHRpb24oRElTUExBWV9DVVJSRU5DWV9QUk9QRVJUWV9OQU1FKSxcblx0XHRcdGRpc3BsYXlDdXJyZW5jeURlZmF1bHRFeGlzdHMgPSAhIWRlZmF1bHRTVk9wdGlvbnMgJiYgZGVmYXVsdFNWT3B0aW9ucy5sZW5ndGggPiAwLFxuXHRcdFx0bm9TVkRpc3BsYXlDdXJyZW5jeUV4aXN0cyA9ICFzdk9wdGlvbnMgfHwgIXN2T3B0aW9ucy5sZW5ndGg7XG5cblx0XHRpZiAobm9TVkRpc3BsYXlDdXJyZW5jeUV4aXN0cyAmJiBkaXNwbGF5Q3VycmVuY3lEZWZhdWx0RXhpc3RzKSB7XG5cdFx0XHRjb25zdCBkaXNwbGF5Q3VycmVuY3lTZWxlY3RPcHRpb24gPSBkZWZhdWx0U1ZPcHRpb25zWzBdLFxuXHRcdFx0XHRzaWduID0gZGlzcGxheUN1cnJlbmN5U2VsZWN0T3B0aW9uW1wiU2lnblwiXSxcblx0XHRcdFx0b3B0aW9uID0gZGlzcGxheUN1cnJlbmN5U2VsZWN0T3B0aW9uW1wiT3B0aW9uXCJdLFxuXHRcdFx0XHRsb3cgPSBkaXNwbGF5Q3VycmVuY3lTZWxlY3RPcHRpb25bXCJMb3dcIl0sXG5cdFx0XHRcdGhpZ2ggPSBkaXNwbGF5Q3VycmVuY3lTZWxlY3RPcHRpb25bXCJIaWdoXCJdO1xuXG5cdFx0XHRzdi5hZGRTZWxlY3RPcHRpb24oRElTUExBWV9DVVJSRU5DWV9QUk9QRVJUWV9OQU1FLCBzaWduLCBvcHRpb24sIGxvdywgaGlnaCk7XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZXQgYWRqdXN0ZWQgU2VsZWN0aW9uIFZhcmlhbnQgYmFzZWQgb24gJ3VzZUZMUERlZmF1bHRWYWx1ZXMnIGFuZCAnYWxyZWFkeSBhcHBsaWVkIFNWJy5cblx0ICpcblx0ICogSWYgdXNlRkxQRGVmYXVsdFZhbHVlcyBpcyA6XG5cdCAqIDEuIEZBTFNFLCBjb21iaW5lICdhcHBTYXRlIFNWJyBhbmQgJ2FscmVhZHkgYXBwbGllZCBTVicuXG5cdCAqIDIuIFRSVUUsICdhcHBTYXRlIFNWJyBpcyBzYW1lIGFzICdkZWZhdWx0IFNWJy4gU2VsZWN0IE9wdGlvbnMgb2YgJ2RlZmF1bHQgU1YnIHRha2VzIHByaW9yaXR5IG92ZXIgJ2FscmVhZHkgYXBwbGllZCBTVicuXG5cdCAqXG5cdCAqIEBwYXJhbSBmaWx0ZXJCYXJBUEkgRmlsdGVyQmFyQVBJIHRvIGZldGNoIHRoZSBhcHBsaWVkIFNWXG5cdCAqIEBwYXJhbSBhcHBTdGF0ZVNWIFNlbGVjdGlvbiBWYXJpYW50IHRvIGFwcGx5IGZyb20gYXBwU3RhdGVcblx0ICogQHBhcmFtIHVzZUZMUERlZmF1bHRWYWx1ZXMgU2hvdWxkIEZMUCBkZWZhdWx0cyBiZSB1c2VkXG5cdCAqIEByZXR1cm5zIEFkanVzdGVkIFNWXG5cdCAqL1xuXHRfZ2V0QWRqdXN0ZWRTVjogYXN5bmMgKGZpbHRlckJhckFQSTogRmlsdGVyQmFyQVBJLCBhcHBTdGF0ZVNWOiBTZWxlY3Rpb25WYXJpYW50LCB1c2VGTFBEZWZhdWx0VmFsdWVzOiBib29sZWFuKSA9PiB7XG5cdFx0bGV0IGFkanVzdGVkU1YgPSBuZXcgU2VsZWN0aW9uVmFyaWFudChhcHBTdGF0ZVNWLnRvSlNPTk9iamVjdCgpKTtcblx0XHRjb25zdCBhbHJlYWR5QXBwbGllZFNWID0gYXdhaXQgZmlsdGVyQmFyQVBJLmdldFNlbGVjdGlvblZhcmlhbnQoKTtcblx0XHRjb25zdCBhcHBsaWVkU2VsT3B0TmFtZXMgPSBhbHJlYWR5QXBwbGllZFNWPy5nZXRTZWxlY3RPcHRpb25zUHJvcGVydHlOYW1lcygpIHx8IFtdO1xuXHRcdGlmIChhcHBsaWVkU2VsT3B0TmFtZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0Ly8gV2UgbWVyZ2UgJ2FwcGxpZWQgU1YnIGFuZCAnYXBwU3RhdGUgU1YnIGJhc2VkIG9uICd1c2VGTFBEZWZhdWx0VmFsdWVzJy5cblx0XHRcdGFkanVzdGVkU1YgPSBhcHBsaWVkU2VsT3B0TmFtZXMucmVkdWNlKChzdkNvcHk6IFNlbGVjdGlvblZhcmlhbnQsIHNlbE9wdGlvbk5hbWUpID0+IHtcblx0XHRcdFx0Ly8gKGFwcFN0YXRlU1YgPSBhZGp1c3RlZFNWID0gc3ZDb3B5KVxuXHRcdFx0XHRjb25zdCBzdlNlbE9wdHMgPSBzdkNvcHkuZ2V0U2VsZWN0T3B0aW9uKHNlbE9wdGlvbk5hbWUpO1xuXHRcdFx0XHQvLyBJZiB1c2VGTFBEZWZhdWx0VmFsdWVzID0gdHJ1ZSwgbWVhbnMgKGFwcFN0YXRlU1YgPSBzdkRlZmF1bHRzKVxuXHRcdFx0XHRpZiAoKHVzZUZMUERlZmF1bHRWYWx1ZXMgJiYgIXN2U2VsT3B0cz8ubGVuZ3RoKSB8fCAhdXNlRkxQRGVmYXVsdFZhbHVlcykge1xuXHRcdFx0XHRcdC8vIGlmIGRlZmF1bHQgU1YgbmVlZHMgdG8gYmUgdXNlZCwgdGhlbiBzZWxlY3Qgb3B0aW9ucyBmcm9tIGRlZmF1bHQgc2VsZWN0IG9wdGlvbnMgdGFrZSBwcmlvcml0eS5cblx0XHRcdFx0XHQvLyBlbHNlIHdlIG1lcmdlIGJvdGg6IGFscmVhZHkgYXBwbGllZCBTViBhbmQgU1YgZnJvbSBuYXZQYXJhbXMuXG5cdFx0XHRcdFx0Y29uc3Qgc2VsZWN0T3B0aW9ucyA9IGFscmVhZHlBcHBsaWVkU1YuZ2V0U2VsZWN0T3B0aW9uKHNlbE9wdGlvbk5hbWUpO1xuXHRcdFx0XHRcdHN2Q29weS5tYXNzQWRkU2VsZWN0T3B0aW9uKHNlbE9wdGlvbk5hbWUsIHNlbGVjdE9wdGlvbnMgfHwgW10pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBzdkNvcHk7XG5cdFx0XHR9LCBhZGp1c3RlZFNWKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gYWRqdXN0ZWRTVjtcblx0fSxcblxuXHQvKipcblx0ICogQXBwbHkgU2VsZWN0aW9uIFZhcmlhbnQgZnJvbSBOYXZpZ2F0aW9uIFBhcmFtZXRlci5cblx0ICpcblx0ICogQHBhcmFtIHZpZXcgVmlldyBvZiB0aGUgTFIgZmlsdGVyIGJhclxuXHQgKiBAcGFyYW0gbmF2aWdhdGlvblBhcmFtZXRlciBTZWxlY3Rpb24gVmFyaWFudCB0byBhcHBseSBmcm9tIGFwcFN0YXRlXG5cdCAqIEBwYXJhbSBmaWx0ZXJWYXJpYW50QXBwbGllZCBJcyBhIGZpbHRlciB2YXJpYW50IGFscmVhZHkgYXBwbGllZFxuXHQgKiBAcmV0dXJucyBQcm9taXNlIGZvciBhc3luY2hyb25vdXMgaGFuZGxpbmdcblx0ICovXG5cdF9hcHBseVNlbGVjdGlvblZhcmlhbnQ6IGFzeW5jIGZ1bmN0aW9uIChcblx0XHR2aWV3OiBWaWV3LFxuXHRcdG5hdmlnYXRpb25QYXJhbWV0ZXI6IE5hdkhhbmRsZXJOYXZQYXJhbXMsXG5cdFx0ZmlsdGVyVmFyaWFudEFwcGxpZWQ6IGJvb2xlYW5cblx0KTogUHJvbWlzZTx1bmtub3duW10+IHtcblx0XHRjb25zdCBmaWx0ZXJCYXIgPSAodmlldy5nZXRDb250cm9sbGVyKCkgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXIpLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0Y29uc3Qge1xuXHRcdFx0c2VsZWN0aW9uVmFyaWFudDogc3YsXG5cdFx0XHRzZWxlY3Rpb25WYXJpYW50RGVmYXVsdHM6IHN2RGVmYXVsdHMsXG5cdFx0XHRyZXF1aXJlc1N0YW5kYXJkVmFyaWFudDogcmVxU3RkVmFyaWFudCA9IGZhbHNlLFxuXHRcdFx0Yk5hdlNlbFZhckhhc0RlZmF1bHRzT25seTogc3ZEZWZhdWx0c09ubHkgPSBmYWxzZVxuXHRcdH0gPSBuYXZpZ2F0aW9uUGFyYW1ldGVyO1xuXG5cdFx0aWYgKCFmaWx0ZXJCYXIgfHwgIXN2KSB7XG5cdFx0XHRyZXR1cm4gW107XG5cdFx0fVxuXG5cdFx0Y29uc3QgdmFyaWFudE1hbmFnZW1lbnQgPSB0aGlzLl9nZXRGaWx0ZXJCYXJWTSh2aWV3KSBhcyBWYXJpYW50TWFuYWdlbWVudDtcblx0XHRjb25zdCBjbGVhckZpbHRlcnNBbmRSZXBsYWNlV2l0aEFwcFN0YXRlID0gYXdhaXQgdGhpcy5fYWN0aXZlVmFyaWFudEFuZEdldEFwcFN0YXRlT3ZlcnJpZGUoXG5cdFx0XHR2YXJpYW50TWFuYWdlbWVudCxcblx0XHRcdHJlcVN0ZFZhcmlhbnQsXG5cdFx0XHRmaWx0ZXJWYXJpYW50QXBwbGllZFxuXHRcdCk7XG5cblx0XHRpZiAoY2xlYXJGaWx0ZXJzQW5kUmVwbGFjZVdpdGhBcHBTdGF0ZSkge1xuXHRcdFx0dGhpcy5fYWRkRGVmYXVsdERpc3BsYXlDdXJyZW5jeVRvU1Yodmlldywgc3YsIHN2RGVmYXVsdHMpO1xuXG5cdFx0XHQvLyBjaGVjayBpZiBGTFAgZGVmYXVsdCB2YWx1ZXMgYXJlIHRoZXJlIGFuZCBpcyBpdCBzdGFuZGFyZCB2YXJpYW50XG5cdFx0XHRjb25zdCBzdkRlZmF1bHRzQXJlUHJlc2VudCA9IHN2RGVmYXVsdHMgPyBzdkRlZmF1bHRzLmdldFNlbGVjdE9wdGlvbnNQcm9wZXJ0eU5hbWVzKCkubGVuZ3RoID4gMCA6IGZhbHNlO1xuXHRcdFx0Y29uc3Qgc3RkVmFyaWFudElzRGVmYXVsdFZhcmlhbnQgPVxuXHRcdFx0XHR2YXJpYW50TWFuYWdlbWVudCAmJiB2YXJpYW50TWFuYWdlbWVudC5nZXREZWZhdWx0VmFyaWFudEtleSgpID09PSB2YXJpYW50TWFuYWdlbWVudC5nZXRTdGFuZGFyZFZhcmlhbnRLZXkoKTtcblx0XHRcdGNvbnN0IHVzZUZMUERlZmF1bHRWYWx1ZXM6IGJvb2xlYW4gPVxuXHRcdFx0XHRzdkRlZmF1bHRzQXJlUHJlc2VudCAmJiAoc3RkVmFyaWFudElzRGVmYXVsdFZhcmlhbnQgfHwgIXZhcmlhbnRNYW5hZ2VtZW50KSAmJiBzdkRlZmF1bHRzT25seTtcblxuXHRcdFx0Y29uc3QgZmlsdGVyQmFyQVBJID0gZmlsdGVyQmFyLmdldFBhcmVudCgpIGFzIEZpbHRlckJhckFQSTtcblx0XHRcdGxldCBzdlRvU2V0OiBTZWxlY3Rpb25WYXJpYW50ID0gc3Y7XG5cdFx0XHRpZiAoZmlsdGVyVmFyaWFudEFwcGxpZWQgfHwgdXNlRkxQRGVmYXVsdFZhbHVlcykge1xuXHRcdFx0XHRzdlRvU2V0ID0gYXdhaXQgdGhpcy5fZ2V0QWRqdXN0ZWRTVihmaWx0ZXJCYXJBUEksIHN2LCB1c2VGTFBEZWZhdWx0VmFsdWVzKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGZpbHRlckJhckFQSS5zZXRTZWxlY3Rpb25WYXJpYW50KHN2VG9TZXQsIHRydWUpIGFzIFByb21pc2U8dW5rbm93bltdPjtcblx0XHR9XG5cdFx0cmV0dXJuIFtdO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBBY3RpdmF0ZSB2YXJpYW50IGZyb20gdmFyaWFudCBtYW5hZ2VtZW50IGFuZCByZXR1cm4gaWYgYXBwU3RhdGUgbmVlZHMgdG8gYmUgYXBwbGllZC5cblx0ICpcblx0ICogQHBhcmFtIHZhcmlhbnRNYW5hZ2VtZW50IFZhcmlhbnRNYW5hZ2VtZW50IHVzZWQgYnkgZmlsdGVyIGJhclxuXHQgKiBAcGFyYW0gcmVxU3RkVmFyaWFudCBJZiBzdGFuZGFyZCB2YXJpYW50IGlzIHJlcXVpcmVkIHRvIGJlIHVzZWRcblx0ICogQHBhcmFtIGZpbHRlclZhcmlhbnRBcHBsaWVkIElzIGEgZmlsdGVyIHZhcmlhbnQgYWxyZWFkeSBhcHBsaWVkXG5cdCAqIEByZXR1cm5zIFByb21pc2UgZm9yIGFzeW5jaHJvbm91cyBoYW5kbGluZ1xuXHQgKi9cblx0X2FjdGl2ZVZhcmlhbnRBbmRHZXRBcHBTdGF0ZU92ZXJyaWRlOiBhc3luYyBmdW5jdGlvbiAoXG5cdFx0dmFyaWFudE1hbmFnZW1lbnQ6IFZhcmlhbnRNYW5hZ2VtZW50IHwgdW5kZWZpbmVkLFxuXHRcdHJlcVN0ZFZhcmlhbnQ6IGJvb2xlYW4sXG5cdFx0ZmlsdGVyVmFyaWFudEFwcGxpZWQ6IGJvb2xlYW5cblx0KSB7XG5cdFx0aWYgKHZhcmlhbnRNYW5hZ2VtZW50ICYmICFmaWx0ZXJWYXJpYW50QXBwbGllZCkge1xuXHRcdFx0bGV0IHZhcmlhbnRLZXkgPSByZXFTdGRWYXJpYW50ID8gdmFyaWFudE1hbmFnZW1lbnQuZ2V0U3RhbmRhcmRWYXJpYW50S2V5KCkgOiB2YXJpYW50TWFuYWdlbWVudC5nZXREZWZhdWx0VmFyaWFudEtleSgpO1xuXHRcdFx0aWYgKHZhcmlhbnRLZXkgPT09IG51bGwpIHtcblx0XHRcdFx0dmFyaWFudEtleSA9IHZhcmlhbnRNYW5hZ2VtZW50LmdldElkKCk7XG5cdFx0XHR9XG5cdFx0XHRhd2FpdCBDb250cm9sVmFyaWFudEFwcGx5QVBJLmFjdGl2YXRlVmFyaWFudCh7XG5cdFx0XHRcdGVsZW1lbnQ6IHZhcmlhbnRNYW5hZ2VtZW50LFxuXHRcdFx0XHR2YXJpYW50UmVmZXJlbmNlOiB2YXJpYW50S2V5XG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiByZXFTdGRWYXJpYW50IHx8IHZhcmlhbnRNYW5hZ2VtZW50LmdldERlZmF1bHRWYXJpYW50S2V5KCkgPT09IHZhcmlhbnRNYW5hZ2VtZW50LmdldFN0YW5kYXJkVmFyaWFudEtleSgpO1xuXHRcdH1cblxuXHRcdHJldHVybiB0cnVlO1xuXHR9LFxuXG5cdC8qXG5cdCAqIFNldHMgZmlsdGVyZWQ6IGZhbHNlIGZsYWcgdG8gZXZlcnkgZmllbGQgc28gdGhhdCBpdCBjYW4gYmUgY2xlYXJlZCBvdXRcblx0ICpcblx0ICogQHBhcmFtIG9GaWx0ZXJCYXIgZmlsdGVyYmFyIGNvbnRyb2wgaXMgdXNlZCB0byBkaXNwbGF5IGZpbHRlciBwcm9wZXJ0aWVzIGluIGEgdXNlci1mcmllbmRseSBtYW5uZXIgdG8gcG9wdWxhdGUgdmFsdWVzIGZvciBhIHF1ZXJ5XG5cdCAqIEByZXR1cm5zIHByb21pc2Ugd2hpY2ggd2lsbCBiZSByZXNvbHZlZCB0byBvYmplY3Rcblx0ICogQHByaXZhdGVcblx0ICovXG5cdF9mbkNsZWFyU3RhdGVCZWZvcmV4QXBwTmF2OiBhc3luYyBmdW5jdGlvbiAob0ZpbHRlckJhcjogRmlsdGVyQmFyKSB7XG5cdFx0cmV0dXJuIFN0YXRlVXRpbC5yZXRyaWV2ZUV4dGVybmFsU3RhdGUob0ZpbHRlckJhcilcblx0XHRcdC50aGVuKChvRXh0ZXJuYWxTdGF0ZTogYW55KSA9PiB7XG5cdFx0XHRcdGNvbnN0IG9Db25kaXRpb24gPSBvRXh0ZXJuYWxTdGF0ZS5maWx0ZXI7XG5cdFx0XHRcdGZvciAoY29uc3QgZmllbGQgaW4gb0NvbmRpdGlvbikge1xuXHRcdFx0XHRcdGlmIChmaWVsZCAhPT0gXCIkZWRpdFN0YXRlXCIgJiYgZmllbGQgIT09IFwiJHNlYXJjaFwiICYmIG9Db25kaXRpb25bZmllbGRdKSB7XG5cdFx0XHRcdFx0XHRvQ29uZGl0aW9uW2ZpZWxkXS5mb3JFYWNoKChjb25kaXRpb246IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+KSA9PiB7XG5cdFx0XHRcdFx0XHRcdGNvbmRpdGlvbltcImZpbHRlcmVkXCJdID0gZmFsc2U7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIG9Db25kaXRpb247XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChvRXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuZXJyb3IoXCJFcnJvciB3aGlsZSByZXRyaWV2aW5nIHRoZSBleHRlcm5hbCBzdGF0ZVwiLCBvRXJyb3IpO1xuXHRcdFx0fSk7XG5cdH0sXG5cblx0X2NsZWFyRmlsdGVyQ29uZGl0aW9uczogYXN5bmMgZnVuY3Rpb24gKG9GaWx0ZXJCYXI6IEZpbHRlckJhcikge1xuXHRcdGNvbnN0IGFJdGVtczogUHJvcGVydHlJbmZvW10gPSBbXTtcblx0XHRyZXR1cm4gb0ZpbHRlckJhci53YWl0Rm9ySW5pdGlhbGl6YXRpb24oKS50aGVuKGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IG9DbGVhckNvbmRpdGlvbnMgPSBhd2FpdCB0aGlzLl9mbkNsZWFyU3RhdGVCZWZvcmV4QXBwTmF2KG9GaWx0ZXJCYXIpO1xuXHRcdFx0cmV0dXJuIFN0YXRlVXRpbC5hcHBseUV4dGVybmFsU3RhdGUob0ZpbHRlckJhciwge1xuXHRcdFx0XHRmaWx0ZXI6IG9DbGVhckNvbmRpdGlvbnMsXG5cdFx0XHRcdGl0ZW1zOiBhSXRlbXNcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBWaWV3U3RhdGVPdmVycmlkZTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7RUE0REEsTUFBTUEsT0FB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
|
|
@@ -259,13 +259,14 @@ const ViewStateOverride: any = {
|
|
|
259
259
|
}
|
|
260
260
|
return this._applySelectionVariant(oView, oNavigationParameter, bFilterVariantApplied);
|
|
261
261
|
})
|
|
262
|
-
.then(() => {
|
|
262
|
+
.then((appliedCondition: unknown[]) => {
|
|
263
|
+
const selectionVariantWasApplied = Array.isArray(appliedCondition) && appliedCondition.length > 0;
|
|
263
264
|
let bPreventInitialSearch = false;
|
|
264
265
|
const oFilterBarVM = this._getFilterBarVM(oView);
|
|
265
266
|
const oFilterBarControl = oController._getFilterBarControl();
|
|
266
267
|
if (oFilterBarControl) {
|
|
267
268
|
if (
|
|
268
|
-
(oNavigationParameter.navigationType !== NavType.initial && oNavigationParameter.requiresStandardVariant) ||
|
|
269
|
+
(oNavigationParameter.navigationType !== NavType.initial && oNavigationParameter.requiresStandardVariant && selectionVariantWasApplied) ||
|
|
269
270
|
(!oFilterBarVM && oView.getViewData().initialLoad === InitialLoadMode.Enabled) ||
|
|
270
271
|
oController._shouldAutoTriggerSearch(oFilterBarVM)
|
|
271
272
|
) {
|
|
@@ -589,14 +590,14 @@ const ViewStateOverride: any = {
|
|
|
589
590
|
*
|
|
590
591
|
* @param view View of the LR filter bar
|
|
591
592
|
* @param navigationParameter Selection Variant to apply from appState
|
|
592
|
-
* @param filterVariantApplied Is a filter variant
|
|
593
|
+
* @param filterVariantApplied Is a filter variant already applied
|
|
593
594
|
* @returns Promise for asynchronous handling
|
|
594
595
|
*/
|
|
595
596
|
_applySelectionVariant: async function (
|
|
596
597
|
view: View,
|
|
597
598
|
navigationParameter: NavHandlerNavParams,
|
|
598
599
|
filterVariantApplied: boolean
|
|
599
|
-
): Promise<unknown> {
|
|
600
|
+
): Promise<unknown[]> {
|
|
600
601
|
const filterBar = (view.getController() as ListReportController)._getFilterBarControl();
|
|
601
602
|
const {
|
|
602
603
|
selectionVariant: sv,
|
|
@@ -606,7 +607,7 @@ const ViewStateOverride: any = {
|
|
|
606
607
|
} = navigationParameter;
|
|
607
608
|
|
|
608
609
|
if (!filterBar || !sv) {
|
|
609
|
-
return
|
|
610
|
+
return [];
|
|
610
611
|
}
|
|
611
612
|
|
|
612
613
|
const variantManagement = this._getFilterBarVM(view) as VariantManagement;
|
|
@@ -632,8 +633,9 @@ const ViewStateOverride: any = {
|
|
|
632
633
|
svToSet = await this._getAdjustedSV(filterBarAPI, sv, useFLPDefaultValues);
|
|
633
634
|
}
|
|
634
635
|
|
|
635
|
-
return filterBarAPI.setSelectionVariant(svToSet)
|
|
636
|
+
return filterBarAPI.setSelectionVariant(svToSet, true) as Promise<unknown[]>;
|
|
636
637
|
}
|
|
638
|
+
return [];
|
|
637
639
|
},
|
|
638
640
|
|
|
639
641
|
/**
|
|
@@ -641,7 +643,7 @@ const ViewStateOverride: any = {
|
|
|
641
643
|
*
|
|
642
644
|
* @param variantManagement VariantManagement used by filter bar
|
|
643
645
|
* @param reqStdVariant If standard variant is required to be used
|
|
644
|
-
* @param filterVariantApplied Is a filter variant
|
|
646
|
+
* @param filterVariantApplied Is a filter variant already applied
|
|
645
647
|
* @returns Promise for asynchronous handling
|
|
646
648
|
*/
|
|
647
649
|
_activeVariantAndGetAppStateOverride: async function (
|
|
@@ -36,7 +36,7 @@ sap.ui.define(["sap/f/library", "sap/fe/core/library", "sap/fe/macros/library",
|
|
|
36
36
|
controls: [],
|
|
37
37
|
elements: [],
|
|
38
38
|
// eslint-disable-next-line no-template-curly-in-string
|
|
39
|
-
version: "1.120.
|
|
39
|
+
version: "1.120.32",
|
|
40
40
|
noLibraryCSS: true
|
|
41
41
|
});
|
|
42
42
|
if (!thisLib.ObjectPage) {
|
|
@@ -72,7 +72,7 @@ T_COMMON_RATING_INDICATOR_TITLE_LABEL=\u0627\u0644\u062A\u0635\u0646\u064A\u0641
|
|
|
72
72
|
|
|
73
73
|
T_PAGINATOR_CONTROL_PAGINATOR_TOOLTIP_UP=\u0627\u0644\u0635\u0646\u0641 \u0627\u0644\u0633\u0627\u0628\u0642
|
|
74
74
|
|
|
75
|
-
T_PAGINATOR_CONTROL_PAGINATOR_TOOLTIP_DOWN=\u0627\u0644\
|
|
75
|
+
T_PAGINATOR_CONTROL_PAGINATOR_TOOLTIP_DOWN=\u0627\u0644\u0639\u0646\u0635\u0631 \u0627\u0644\u062A\u0627\u0644\u064A
|
|
76
76
|
|
|
77
77
|
|
|
78
78
|
T_STASHABLE_HBOX_RTA_HEADERFACET_MENU_ADD=\u0648\u0627\u062C\u0647\u0629 \u0627\u0644\u0645\u0642\u062F\u0645\u0629
|
|
@@ -16,7 +16,7 @@ C_EDITFLOW_OBJECT_PAGE_SESSION_EXPIRED_DIALOG_TITLE=Sesiwn wedi dod i ben
|
|
|
16
16
|
|
|
17
17
|
C_EDITFLOW_OBJECT_PAGE_SESSION_EXPIRED_DIALOG_MESSAGE=Mae eich sesiwn wedi dod i ben. Mae unrhyw newidiadau sydd heb eu cadw wedi\u2019u colli. Dewiswch Iawn i fynd yn \u00F4l i\u2019r dudalen flaenorol.
|
|
18
18
|
|
|
19
|
-
T_OP_RELATED_APPS=Apiau
|
|
19
|
+
T_OP_RELATED_APPS=Apiau Cysyllt.
|
|
20
20
|
|
|
21
21
|
T_COMMON_OBJECT_PAGE_APPLY_DRAFT=Defnyddio
|
|
22
22
|
|
|
@@ -116,9 +116,9 @@ C_LR_MULTIVIZ_CHART_IGNORED_FILTER_DRAFT_DATA_AND_SEARCH=Entwurfsdaten und Suche
|
|
|
116
116
|
|
|
117
117
|
C_MULTIVIZ_CHART_IGNORED_FILTER_DRAFT_DATA=Entwurfsdaten werden in der Diagrammansicht nicht angezeigt.
|
|
118
118
|
|
|
119
|
-
T_KEYBOARD_SHORTCUT_SHARE_WIN=
|
|
119
|
+
T_KEYBOARD_SHORTCUT_SHARE_WIN=Umschalt +STRG+S
|
|
120
120
|
|
|
121
|
-
T_KEYBOARD_SHORTCUT_SHARE_MAC=
|
|
121
|
+
T_KEYBOARD_SHORTCUT_SHARE_MAC=Umschalt +CMD+S
|
|
122
122
|
|
|
123
123
|
T_KEYBOARD_SHORTCUT_EDIT_WIN=STRG+E
|
|
124
124
|
|
|
@@ -36,7 +36,7 @@ C_COMMON_OBJECT_PAGE_DISPLAY_DRAFT_MIT=Esbo\u00E7o
|
|
|
36
36
|
|
|
37
37
|
T_COMMON_OBJECT_PAGE_HEADER_SECTION=Cabe\u00E7alho
|
|
38
38
|
|
|
39
|
-
T_COMMON_OBJECT_PAGE_OBJECT_INFO=
|
|
39
|
+
T_COMMON_OBJECT_PAGE_OBJECT_INFO=Informa\u00E7\u00F5es do objeto
|
|
40
40
|
|
|
41
41
|
T_COMMON_OBJECT_PAGE_FOOTER=\u00C1rea de rodap\u00E9 do objeto
|
|
42
42
|
|
|
@@ -18,13 +18,13 @@ C_EDITFLOW_OBJECT_PAGE_SESSION_EXPIRED_DIALOG_MESSAGE=Va\u0161a seja urejanja je
|
|
|
18
18
|
|
|
19
19
|
T_OP_RELATED_APPS=Povezane apl.
|
|
20
20
|
|
|
21
|
-
T_COMMON_OBJECT_PAGE_APPLY_DRAFT=
|
|
21
|
+
T_COMMON_OBJECT_PAGE_APPLY_DRAFT=Uporabi
|
|
22
22
|
|
|
23
23
|
T_COMMON_OBJECT_PAGE_VALIDATE_DRAFT=Validacija
|
|
24
24
|
|
|
25
|
-
T_OP_OBJECT_PAGE_CREATE=
|
|
25
|
+
T_OP_OBJECT_PAGE_CREATE=Kreiraj
|
|
26
26
|
|
|
27
|
-
T_OP_OBJECT_PAGE_SAVE=
|
|
27
|
+
T_OP_OBJECT_PAGE_SAVE=Shrani
|
|
28
28
|
|
|
29
29
|
C_COMMON_OBJECT_PAGE_SAVED_VERSION_BUT=Shranjena verzija
|
|
30
30
|
|