@sapui5/sap.fe.core 1.130.0 → 1.130.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AppComponent.js +11 -4
  4. package/src/sap/fe/core/AppComponent.ts +12 -3
  5. package/src/sap/fe/core/CommonUtils.js +26 -2
  6. package/src/sap/fe/core/CommonUtils.ts +25 -1
  7. package/src/sap/fe/core/controllerextensions/EditFlow.js +6 -2
  8. package/src/sap/fe/core/controllerextensions/EditFlow.ts +5 -1
  9. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +4 -2
  10. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +3 -1
  11. package/src/sap/fe/core/controllerextensions/InternalRouting.js +2 -2
  12. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +1 -1
  13. package/src/sap/fe/core/controllerextensions/SideEffects.js +50 -7
  14. package/src/sap/fe/core/controllerextensions/SideEffects.ts +53 -2
  15. package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +9 -4
  16. package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.tsx +17 -5
  17. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +4 -3
  18. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +3 -2
  19. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +4 -5
  20. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +4 -4
  21. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +2 -2
  22. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +1 -1
  23. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +3 -3
  24. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +2 -2
  25. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +2 -3
  26. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +1 -2
  27. package/src/sap/fe/core/converters/controls/Common/Table.js +27 -32
  28. package/src/sap/fe/core/converters/controls/Common/Table.ts +26 -36
  29. package/src/sap/fe/core/definition/FEDefinition.js +104 -44
  30. package/src/sap/fe/core/formatters/StandardFormatter.js +4 -1
  31. package/src/sap/fe/core/formatters/StandardFormatter.ts +4 -1
  32. package/src/sap/fe/core/fpm/manifest.json +1 -1
  33. package/src/sap/fe/core/helpers/AppStartupHelper.js +31 -2
  34. package/src/sap/fe/core/helpers/AppStartupHelper.ts +32 -1
  35. package/src/sap/fe/core/helpers/MetaPath.js +2 -1
  36. package/src/sap/fe/core/helpers/MetaPath.ts +8 -5
  37. package/src/sap/fe/core/library.js +1 -1
  38. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +8 -17
  39. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +14 -16
  40. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +3 -4
  41. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.ts +2 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.fe.core",
3
- "version": "1.130.0",
3
+ "version": "1.130.3",
4
4
  "description": "SAPUI5 Library sap.fe.core",
5
5
  "keywords": [
6
6
  "sapui5",
@@ -6,7 +6,7 @@
6
6
  SAP UI development toolkit for HTML5 (SAPUI5)
7
7
  (c) Copyright 2009-2021 SAP SE. All rights reserved
8
8
  </copyright>
9
- <version>1.130.0</version>
9
+ <version>1.130.3</version>
10
10
 
11
11
  <documentation>UI5 library: sap.fe.core</documentation>
12
12
 
@@ -8,7 +8,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/AppState
8
8
  var _dec, _dec2, _class, _class2, _descriptor, _class3;
9
9
  var getResourceModel = ResourceModelHelper.getResourceModel;
10
10
  var deleteModelCacheData = MetaModelConverter.deleteModelCacheData;
11
- var cleanPageConfigurationChanges = ChangePageConfiguration.cleanPageConfigurationChanges;
12
11
  var changeConfiguration = ChangePageConfiguration.changeConfiguration;
13
12
  var implementInterface = ClassSupport.implementInterface;
14
13
  var defineUI5Class = ClassSupport.defineUI5Class;
@@ -147,6 +146,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/AppState
147
146
  _this._startedServices = [];
148
147
  _this.isAdaptationEnabled = false;
149
148
  _this.isExiting = false;
149
+ _this.pageConfigurationChanges = {};
150
150
  return _this;
151
151
  }
152
152
  /**
@@ -189,12 +189,19 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/AppState
189
189
  */;
190
190
  _proto.changePageConfiguration = function changePageConfiguration(pageId, path, value) {
191
191
  var _manifest$sapFe, _manifest$sapFe$app;
192
- const manifest = changeConfiguration(this.getManifest(), pageId, path, value, true);
192
+ const manifest = changeConfiguration(this.getManifest(), pageId, path, value, true, this);
193
193
  if (path === "app/disableInputAssistance" && (manifest === null || manifest === void 0 ? void 0 : (_manifest$sapFe = manifest["sap.fe"]) === null || _manifest$sapFe === void 0 ? void 0 : (_manifest$sapFe$app = _manifest$sapFe["app"]) === null || _manifest$sapFe$app === void 0 ? void 0 : _manifest$sapFe$app["disableInputAssistance"]) === value) {
194
194
  this.getEnvironmentCapabilities().setCapability("DisableInputAssistance", value);
195
195
  }
196
196
  }
197
197
 
198
+ /**
199
+ * Clears all registered page configuration changes.
200
+ */;
201
+ _proto.cleanPageConfigurationChanges = function cleanPageConfigurationChanges() {
202
+ this.pageConfigurationChanges = {};
203
+ }
204
+
198
205
  /**
199
206
  * Get a reference to the RouterProxy.
200
207
  * @returns A Reference to the RouterProxy
@@ -394,7 +401,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/AppState
394
401
  delete this._oRouterProxy;
395
402
  deleteModelCacheData(this.getMetaModel());
396
403
  this.getModel("ui").destroy();
397
- cleanPageConfigurationChanges();
404
+ this.cleanPageConfigurationChanges();
398
405
  };
399
406
  _proto.getMetaModel = function getMetaModel() {
400
407
  return this.getModel().getMetaModel();
@@ -537,4 +544,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/AppState
537
544
  })), _class2)) || _class);
538
545
  return AppComponent;
539
546
  }, false);
540
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTdGFydHVwTW9kZSIsImxpYnJhcnkiLCJOQVZDT05GIiwiRkNMIiwiVklFV05BTUUiLCJWSUVXTkFNRV9DT01QQVRJQklMSVRZIiwiUk9VVEVSQ0xBU1MiLCJOQVZDT05UQUlORVIiLCJfbVJvdXRlciIsIlJvdXRlciIsIkFwcENvbXBvbmVudCIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsImNvbmZpZyIsImZ1bGxXaWR0aCIsIm1hbmlmZXN0Iiwic2VydmljZXMiLCJyZXNvdXJjZU1vZGVsIiwiZmFjdG9yeU5hbWUiLCJzdGFydHVwIiwic2V0dGluZ3MiLCJidW5kbGVzIiwibW9kZWxOYW1lIiwicm91dGluZ1NlcnZpY2UiLCJzaGVsbFNlcnZpY2VzIiwiU2hlbGxVSVNlcnZpY2UiLCJuYXZpZ2F0aW9uU2VydmljZSIsImVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwic2lkZUVmZmVjdHNTZXJ2aWNlIiwiYXN5bmNDb21wb25lbnRTZXJ2aWNlIiwiY29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlIiwiY29sbGFib3JhdGl2ZVRvb2xzU2VydmljZSIsInRlbGVtZXRyeVNlcnZpY2UiLCJ2YWx1ZUhlbHBIaXN0b3J5U2VydmljZSIsIkNvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2UiLCJDb250ZXh0U2hhcmluZ1NlcnZpY2UiLCJyb290VmlldyIsInZpZXdOYW1lIiwidHlwZSIsImFzeW5jIiwiaWQiLCJyb3V0aW5nIiwiY29udHJvbElkIiwicm91dGVyQ2xhc3MiLCJ2aWV3VHlwZSIsImNvbnRyb2xBZ2dyZWdhdGlvbiIsImNvbnRhaW5lck9wdGlvbnMiLCJwcm9wYWdhdGVNb2RlbCIsImRlc2lnbnRpbWUiLCJfZGVjMiIsImltcGxlbWVudEludGVyZmFjZSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfY2xhc3MzIiwiX1VJQ29tcG9uZW50IiwiX2luaGVyaXRzTG9vc2UiLCJfdGhpcyIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwic3RhcnR1cE1vZGUiLCJOb3JtYWwiLCJfc3RhcnRlZFNlcnZpY2VzIiwiaXNBZGFwdGF0aW9uRW5hYmxlZCIsImlzRXhpdGluZyIsIl9wcm90byIsInByb3RvdHlwZSIsIl9pc0ZjbEVuYWJsZWQiLCJfb01hbmlmZXN0VUk1JHJvdXRpbmciLCJfb01hbmlmZXN0VUk1JHJvdXRpbmcyIiwib01hbmlmZXN0VUk1IiwiZ2V0TWFuaWZlc3RFbnRyeSIsInNldEFkYXB0YXRpb25Nb2RlIiwiaXNBZGFwdGF0aW9uTW9kZSIsImluaXRpYWxpemVGZWF0dXJlVG9nZ2xlcyIsIlByb21pc2UiLCJyZXNvbHZlIiwiY2hhbmdlUGFnZUNvbmZpZ3VyYXRpb24iLCJwYWdlSWQiLCJwYXRoIiwidmFsdWUiLCJfbWFuaWZlc3Qkc2FwRmUiLCJfbWFuaWZlc3Qkc2FwRmUkYXBwIiwiY2hhbmdlQ29uZmlndXJhdGlvbiIsImdldE1hbmlmZXN0IiwiZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMiLCJzZXRDYXBhYmlsaXR5IiwiZ2V0Um91dGVyUHJveHkiLCJfb1JvdXRlclByb3h5IiwiZ2V0QXBwU3RhdGVIYW5kbGVyIiwiX29BcHBTdGF0ZUhhbmRsZXIiLCJnZXRSb290Vmlld0NvbnRyb2xsZXIiLCJnZXRSb290Q29udHJvbCIsImdldENvbnRyb2xsZXIiLCJnZXRSb290Q29udGFpbmVyIiwiZ2V0Q29udGVudCIsImdldFN0YXJ0dXBNb2RlIiwic2V0U3RhcnR1cE1vZGVDcmVhdGUiLCJDcmVhdGUiLCJzZXRTdGFydHVwTW9kZUF1dG9DcmVhdGUiLCJBdXRvQ3JlYXRlIiwic2V0U3RhcnR1cE1vZGVEZWVwbGluayIsIkRlZXBsaW5rIiwiaW5pdCIsIl9vTW9kZWwkaXNBIiwiX3RoaXMkZ2V0TWFuaWZlc3RFbnRyIiwiX3RoaXMkZ2V0TWFuaWZlc3RFbnRyMiIsIl9pbml0aWFsaXplZEtlZXBlciIsIlByb21pc2VLZWVwZXIiLCJpbml0aWFsaXplZCIsInByb21pc2UiLCJ1aU1vZGVsIiwiSlNPTk1vZGVsIiwiZWRpdE1vZGUiLCJFZGl0TW9kZSIsIkRpc3BsYXkiLCJpc0VkaXRhYmxlIiwiZHJhZnRTdGF0dXMiLCJEcmFmdFN0YXR1cyIsIkNsZWFyIiwiYnVzeSIsImJ1c3lMb2NhbCIsInBhZ2VzIiwib0ludGVybmFsTW9kZWwiLCJzZXREZWZhdWx0QmluZGluZ01vZGUiLCJNb2RlbEhlbHBlciIsImVuaGFuY2VVaUpTT05Nb2RlbCIsImVuaGFuY2VJbnRlcm5hbEpTT05Nb2RlbCIsInNldE1vZGVsIiwiYkluaXRpYWxpemVSb3V0aW5nIiwidW5kZWZpbmVkIiwiUm91dGVyUHJveHkiLCJBcHBTdGF0ZUhhbmRsZXIiLCJfb0RpYWdub3N0aWNzIiwiRGlhZ25vc3RpY3MiLCJvTW9kZWwiLCJnZXRNb2RlbCIsImlzQSIsImVuaGFuY2VPRGF0YU1vZGVsIiwic2V0UmV0cnlBZnRlckhhbmRsZXIiLCJodHRwNTAzUmV0cnlIYW5kbGVyIiwiYmluZCIsImVudGl0eUNvbnRhaW5lciIsImdldE1ldGFNb2RlbCIsInJlcXVlc3RPYmplY3QiLCJhcHAiLCJkaXNhYmxlQ29sbGFib3JhdGlvbkRyYWZ0IiwiY2hlY2tSb3V0aW5nQ29uZmlndXJhdGlvbiIsImluc3RhbmNlTWFwIiwiZ2V0SWQiLCJlcnJvciIsIkhUVFA1MDNIYW5kbGVyIiwiaGFuZGxlNTAzRGVsYXkiLCJnZXRSZXNvdXJjZU1vZGVsIiwiX29NYW5pZmVzdFVJNSRyb290VmllIiwiX29NYW5pZmVzdFVJNSRyb3V0aW5nMyIsIl9vTWFuaWZlc3RVSTUkcm91dGluZzQiLCJfb01hbmlmZXN0VUk1JHJvdXRpbmc1IiwiX29NYW5pZmVzdFVJNSRyb3V0aW5nNiIsIl9vTWFuaWZlc3RVSTUkcm9vdFZpZTIiLCJfb01hbmlmZXN0VUk1JHJvb3RWaWUzIiwiTG9nIiwiaW5mbyIsImluY2x1ZGVzIiwiX29NYW5pZmVzdFVJNSRyb3V0aW5nNyIsIl9vTWFuaWZlc3RVSTUkcm91dGluZzgiLCJFcnJvciIsIm9uU2VydmljZXNTdGFydGVkIiwiYWxsU2VydmljZXMiLCJhbGxTZXR0bGVkIiwiaW5zdGFuY2VEZXBlbmRlbnRQcm9jZXNzZXMiLCJtYXAiLCJmblByb2Nlc3MiLCJmaW5hbGl6ZWRSb3V0aW5nSW5pdGlhbGl6YXRpb24iLCJ0aGVuIiwiYXR0YWNoUm91dGVNYXRjaGVycyIsImdldFJvdXRlciIsImluaXRpYWxpemUiLCJnZXRWYWx1ZUhlbHBIaXN0b3J5U2VydmljZSIsInJlZ2lzdGVyU2hlbGxIb29rIiwiY2F0Y2giLCJvUmVzb3VyY2VCdW5kbGUiLCJMaWJyYXJ5IiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJkaXNwbGF5RXJyb3JQYWdlIiwiZ2V0VGV4dCIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJtZXNzYWdlIiwiZ2V0Um91dGluZ1NlcnZpY2UiLCJpbml0aWFsaXplUm91dGluZyIsImF0dGFjaEFmdGVySW5pdCIsImVyciIsInRvU3RyaW5nIiwiZXhpdCIsImRlc3Ryb3kiLCJkZWxldGVNb2RlbENhY2hlRGF0YSIsImNsZWFuUGFnZUNvbmZpZ3VyYXRpb25DaGFuZ2VzIiwiZ2V0RGlhZ25vc3RpY3MiLCJiU3VwcHJlc3NJbnZhbGlkYXRlIiwiX3RoaXMkZ2V0Um91dGluZ1NlcnZpIiwiX3RoaXMkZ2V0Um91dGluZ1NlcnZpMiIsIndpbmRvdyIsIl9yb3V0aW5nIiwiZSIsIm9NYWluTW9kZWwiLCJvTW9kZWxzIiwib0hlYWRlcnMiLCJvUmVxdWVzdG9yIiwiT2JqZWN0IiwiYXNzaWduIiwibUhlYWRlcnMiLCJiZWZvcmVFeGl0IiwiZ2V0U2hlbGxTZXJ2aWNlcyIsImdldE5hdmlnYXRpb25TZXJ2aWNlIiwiZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlIiwiZ2V0Q29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlIiwiZ2V0Q29sbGFib3JhdGl2ZVRvb2xzU2VydmljZSIsImdldENvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2UiLCJnZXRDb250ZXh0U2hhcmluZ1NlcnZpY2UiLCJnZXRUZWxlbWV0cnlTZXJ2aWNlIiwiZ2V0U3RhcnR1cFBhcmFtZXRlcnMiLCJvQ29tcG9uZW50RGF0YSIsImdldENvbXBvbmVudERhdGEiLCJzdGFydHVwUGFyYW1ldGVycyIsInJlc3RvcmUiLCJzdGFydGVkU2VydmljZSIsIl9zdGFydGVkU2VydmljZSRvblJlcyIsIm9uUmVzdG9yZSIsInZpZXdTdGF0ZSIsInN1c3BlbmQiLCJfc3RhcnRlZFNlcnZpY2Ukb25TdXMiLCJvblN1c3BlbmQiLCJuYXZpZ2F0ZUJhc2VkT25TdGFydHVwUGFyYW1ldGVyIiwiQnVzeUxvY2tlciIsImlzTG9ja2VkIiwiX21hbmFnZURlZXBMaW5rU3RhcnR1cCIsImV4Y2VwdGlvbiIsInVubG9jayIsImlzQ29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlRW5hYmxlZCIsInJlZ2lzdGVySW5zdGFuY2VEZXBlbmRlbnRQcm9jZXNzRm9yU3RhcnRVcCIsInB1c2giLCJVSUNvbXBvbmVudCIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQXBwQ29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgRmxleGlibGVDb2x1bW5MYXlvdXQgZnJvbSBcInNhcC9mL0ZsZXhpYmxlQ29sdW1uTGF5b3V0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgaW1wbGVtZW50SW50ZXJmYWNlIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IEFwcFN0YXRlSGFuZGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwU3RhdGVIYW5kbGVyXCI7XG5pbXBvcnQgUm91dGVyUHJveHkgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL3JvdXRpbmcvUm91dGVyUHJveHlcIjtcbmltcG9ydCBIVFRQNTAzSGFuZGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9IVFRQNTAzSGFuZGxlclwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgUHJvbWlzZUtlZXBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Qcm9taXNlS2VlcGVyXCI7XG5pbXBvcnQgbGlicmFyeSBmcm9tIFwic2FwL2ZlL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHsgY2hhbmdlQ29uZmlndXJhdGlvbiwgY2xlYW5QYWdlQ29uZmlndXJhdGlvbkNoYW5nZXMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvbWFuaWZlc3RNZXJnZXIvQ2hhbmdlUGFnZUNvbmZpZ3VyYXRpb25cIjtcbmltcG9ydCB0eXBlIFJvb3RWaWV3QmFzZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL3Jvb3RWaWV3L1Jvb3RWaWV3QmFzZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIHsgQ29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL0NvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgQ29sbGFib3JhdGl2ZVRvb2xzU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9Db2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgeyBDb250ZXh0U2hhcmluZ1NlcnZpY2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvQ29udGV4dFNoYXJpbmdTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgeyBFbnZpcm9ubWVudENhcGFiaWxpdGllc1NlcnZpY2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvRW52aXJvbm1lbnRTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9OYXZpZ2F0aW9uU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgUm91dGluZ1NlcnZpY2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvUm91dGluZ1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IElTaGVsbFNlcnZpY2VzIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1NoZWxsU2VydmljZXNGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IFNpZGVFZmZlY3RzU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9TaWRlRWZmZWN0c1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IFRlbGVtZXRyeVNlcnZpY2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvVGVsZW1ldHJ5U2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgQ29sbGFib3JhdGl2ZURyYWZ0U2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9jb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IERpYWdub3N0aWNzIGZyb20gXCJzYXAvZmUvY29yZS9zdXBwb3J0L0RpYWdub3N0aWNzXCI7XG5pbXBvcnQgdHlwZSBOYXZDb250YWluZXIgZnJvbSBcInNhcC9tL05hdkNvbnRhaW5lclwiO1xuaW1wb3J0IFJvdXRlciBmcm9tIFwic2FwL20vcm91dGluZy9Sb3V0ZXJcIjtcbmltcG9ydCBMaWJyYXJ5IGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIHsgTWFuaWZlc3RDb250ZW50IH0gZnJvbSBcInNhcC91aS9jb3JlL01hbmlmZXN0XCI7XG5pbXBvcnQgVUlDb21wb25lbnQgZnJvbSBcInNhcC91aS9jb3JlL1VJQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IElBc3luY0NvbnRlbnRDcmVhdGlvbiB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IHR5cGUgU2VydmljZSBmcm9tIFwic2FwL3VpL2NvcmUvc2VydmljZS9TZXJ2aWNlXCI7XG5pbXBvcnQgdHlwZSBNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL01vZGVsXCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5pbXBvcnQgQnVzeUxvY2tlciBmcm9tIFwiLi9jb250cm9sbGVyZXh0ZW5zaW9ucy9CdXN5TG9ja2VyXCI7XG5pbXBvcnQgeyBkZWxldGVNb2RlbENhY2hlRGF0YSB9IGZyb20gXCIuL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgeyBnZXRSZXNvdXJjZU1vZGVsIH0gZnJvbSBcIi4vaGVscGVycy9SZXNvdXJjZU1vZGVsSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IFZhbHVlSGVscEhpc3RvcnlTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvVmFsdWVIZWxwSGlzdG9yeVNlcnZpY2VGYWN0b3J5XCI7XG5cbmNvbnN0IFN0YXJ0dXBNb2RlID0gbGlicmFyeS5TdGFydHVwTW9kZTtcbmNvbnN0IE5BVkNPTkYgPSB7XG5cdEZDTDoge1xuXHRcdFZJRVdOQU1FOiBcInNhcC5mZS5jb3JlLnJvb3RWaWV3LkZjbFwiLFxuXHRcdFZJRVdOQU1FX0NPTVBBVElCSUxJVFk6IFwic2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLnZpZXcuRmNsXCIsXG5cdFx0Uk9VVEVSQ0xBU1M6IFwic2FwLmYucm91dGluZy5Sb3V0ZXJcIlxuXHR9LFxuXHROQVZDT05UQUlORVI6IHtcblx0XHRWSUVXTkFNRTogXCJzYXAuZmUuY29yZS5yb290Vmlldy5OYXZDb250YWluZXJcIixcblx0XHRWSUVXTkFNRV9DT01QQVRJQklMSVRZOiBcInNhcC5mZS50ZW1wbGF0ZXMuUm9vdENvbnRhaW5lci52aWV3Lk5hdkNvbnRhaW5lclwiLFxuXHRcdFJPVVRFUkNMQVNTOiBcInNhcC5tLnJvdXRpbmcuUm91dGVyXCJcblx0fVxufTtcblxuZXhwb3J0IHR5cGUgQ29tcG9uZW50RGF0YSA9IHtcblx0c3RhcnR1cFBhcmFtZXRlcnM/OiBTdGFydHVwUGFyYW1ldGVycztcblx0Ly9mZUVudmlyb25tZW50IGlzIG9iamVjdCB3aGljaCBpcyByZWNlaXZlZCBhcyBhIHBhcnQgb2YgdGhlIGNvbXBvbmVudCBkYXRhIGZvciBNeSBJbmJveCBhcHBsaWNhdGlvbnMuXG5cdGZlRW52aXJvbm1lbnQ/OiB7XG5cdFx0Ly9XaXRoaW4gdGhpcyBvYmplY3QgdGhleSBwYXNzIGEgZnVuY3Rpb24gY2FsbGVkIGdldEludGVudCgpIHdoaWNoIHJldHVybnMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHNlbWFudGljT2JqZWN0IGFuZCBhY3Rpb24gYXMgc2VwYXJhdGUgcHJvcGVydHktdmFsdWUgZW50cmllcyB0aGF0IGFyZSB0aGVuIHVzZWQgdG8gdXBkYXRlIHRoZSByZWxhdGVkIGFwcHMgYnV0dG9uLlxuXHRcdGdldEludGVudDogRnVuY3Rpb247XG5cdFx0Ly9XaXRoaW4gdGhpcyBvYmplY3QgdGhleSBwYXNzIGEgZnVuY3Rpb24gY2FsbGVkIGdldFNoYXJlQ29udHJvbFZpc2liaWxpdHkoKSB0aGF0IHJldHVybnMgYm9vbGVhbiB2YWx1ZXModHJ1ZSBvciBmYWxzZSkgd2hpY2ggZGV0ZXJtaW5lcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgc2hhcmUgYnV0dG9uLlxuXHRcdGdldFNoYXJlQ29udHJvbFZpc2liaWxpdHk6IEZ1bmN0aW9uO1xuXHR9O1xufTtcbi8vIEtlZXAgYSByZWZlcmVuY2Ugc28gYXMgdG8ga2VlcCB0aGUgaW1wb3J0IGRlc3BpdGUgaXQgbm90IGJlaW5nIGRpcmVjdGx5IHVzZWRcbmNvbnN0IF9tUm91dGVyID0gUm91dGVyO1xuXG5leHBvcnQgdHlwZSBTdGFydHVwUGFyYW1ldGVycyA9IHtcblx0cHJlZmVycmVkTW9kZT86IHN0cmluZ1tdO1xufSAmIFJlY29yZDxzdHJpbmcsIHVua25vd25bXT47XG4vKipcbiAqIE1haW4gY2xhc3MgZm9yIGNvbXBvbmVudHMgdXNlZCBmb3IgYW4gYXBwbGljYXRpb24gaW4gU0FQIEZpb3JpIGVsZW1lbnRzLlxuICpcbiAqIEFwcGxpY2F0aW9uIGRldmVsb3BlcnMgdXNpbmcgdGhlIHRlbXBsYXRlcyBhbmQgYnVpbGRpbmcgYmxvY2tzIHByb3ZpZGVkIGJ5IFNBUCBGaW9yaSBlbGVtZW50cyBzaG91bGQgY3JlYXRlIHRoZWlyIGFwcHMgYnkgZXh0ZW5kaW5nIHRoaXMgY29tcG9uZW50LlxuICogVGhpcyBlbnN1cmVzIHRoYXQgYWxsIHRoZSBuZWNlc3Nhcnkgc2VydmljZXMgdGhhdCB5b3UgbmVlZCBmb3IgdGhlIGJ1aWxkaW5nIGJsb2NrcyBhbmQgdGVtcGxhdGVzIHRvIHdvcmsgcHJvcGVybHkgYXJlIHN0YXJ0ZWQuXG4gKlxuICogV2hlbiB5b3UgdXNlIHNhcC5mZS5jb3JlLkFwcENvbXBvbmVudCBhcyB0aGUgYmFzZSBjb21wb25lbnQsIHlvdSBhbHNvIG5lZWQgdG8gdXNlIGEgcm9vdFZpZXcuIFNBUCBGaW9yaSBlbGVtZW50cyBwcm92aWRlcyB0d28gb3B0aW9uczogPGJyLz5cbiAqIC0gc2FwLmZlLmNvcmUucm9vdFZpZXcuTmF2Q29udGFpbmVyIHdoZW4gdXNpbmcgc2FwLm0ucm91dGluZy5Sb3V0ZXIgPGJyLz5cbiAqIC0gc2FwLmZlLmNvcmUucm9vdFZpZXcuRmNsIHdoZW4gdXNpbmcgc2FwLmYucm91dGluZy5Sb3V0ZXIgKEZDTCB1c2UgY2FzZSkgPGJyLz5cbiAqIEBoaWRlY29uc3RydWN0b3JcbiAqIEBwdWJsaWNcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50XCIsIHtcblx0Y29uZmlnOiB7XG5cdFx0ZnVsbFdpZHRoOiB0cnVlXG5cdH0sXG5cdG1hbmlmZXN0OiB7XG5cdFx0XCJzYXAudWk1XCI6IHtcblx0XHRcdHNlcnZpY2VzOiB7XG5cdFx0XHRcdHJlc291cmNlTW9kZWw6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5SZXNvdXJjZU1vZGVsU2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiLFxuXHRcdFx0XHRcdHNldHRpbmdzOiB7XG5cdFx0XHRcdFx0XHRidW5kbGVzOiBbXCJzYXAuZmUuY29yZS5tZXNzYWdlYnVuZGxlXCJdLFxuXHRcdFx0XHRcdFx0bW9kZWxOYW1lOiBcInNhcC5mZS5pMThuXCJcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHJvdXRpbmdTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuUm91dGluZ1NlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRzaGVsbFNlcnZpY2VzOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuU2hlbGxTZXJ2aWNlc1wiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdFNoZWxsVUlTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLnVzaGVsbC51aTVzZXJ2aWNlLlNoZWxsVUlTZXJ2aWNlXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0bmF2aWdhdGlvblNlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5OYXZpZ2F0aW9uU2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGVudmlyb25tZW50Q2FwYWJpbGl0aWVzOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuRW52aXJvbm1lbnRTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0c2lkZUVmZmVjdHNTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuU2lkZUVmZmVjdHNTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0YXN5bmNDb21wb25lbnRTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuQXN5bmNDb21wb25lbnRTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0Y29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuQ29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0Y29sbGFib3JhdGl2ZVRvb2xzU2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkNvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHR0ZWxlbWV0cnlTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuVGVsZW1ldHJ5U2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHZhbHVlSGVscEhpc3RvcnlTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuVmFsdWVIZWxwSGlzdG9yeVNlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRDb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuQ29sbGFib3JhdGl2ZURyYWZ0U2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdENvbnRleHRTaGFyaW5nU2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkNvbnRleHRTaGFyaW5nU2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRyb290Vmlldzoge1xuXHRcdFx0XHR2aWV3TmFtZTogTkFWQ09ORi5OQVZDT05UQUlORVIuVklFV05BTUUsXG5cdFx0XHRcdHR5cGU6IFwiWE1MXCIsXG5cdFx0XHRcdGFzeW5jOiB0cnVlLFxuXHRcdFx0XHRpZDogXCJhcHBSb290Vmlld1wiXG5cdFx0XHR9LFxuXHRcdFx0cm91dGluZzoge1xuXHRcdFx0XHRjb25maWc6IHtcblx0XHRcdFx0XHRjb250cm9sSWQ6IFwiYXBwQ29udGVudFwiLFxuXHRcdFx0XHRcdHJvdXRlckNsYXNzOiBOQVZDT05GLk5BVkNPTlRBSU5FUi5ST1VURVJDTEFTUyxcblx0XHRcdFx0XHR2aWV3VHlwZTogXCJYTUxcIixcblx0XHRcdFx0XHRjb250cm9sQWdncmVnYXRpb246IFwicGFnZXNcIixcblx0XHRcdFx0XHRhc3luYzogdHJ1ZSxcblx0XHRcdFx0XHRjb250YWluZXJPcHRpb25zOiB7XG5cdFx0XHRcdFx0XHRwcm9wYWdhdGVNb2RlbDogdHJ1ZVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0ZGVzaWdudGltZTogXCJzYXAvZmUvY29yZS9kZXNpZ250aW1lL0FwcENvbXBvbmVudC5kZXNpZ250aW1lXCIsXG5cblx0bGlicmFyeTogXCJzYXAuZmUuY29yZVwiXG59KVxuY2xhc3MgQXBwQ29tcG9uZW50IGV4dGVuZHMgVUlDb21wb25lbnQgaW1wbGVtZW50cyBJQXN5bmNDb250ZW50Q3JlYXRpb24ge1xuXHRAaW1wbGVtZW50SW50ZXJmYWNlKFwic2FwLnVpLmNvcmUuSUFzeW5jQ29udGVudENyZWF0aW9uXCIpXG5cdF9faW1wbGVtZW50c19fc2FwX3VpX2NvcmVfSUFzeW5jQ29udGVudENyZWF0aW9uID0gdHJ1ZTtcblxuXHRzdGF0aWMgaW5zdGFuY2VNYXA6IFJlY29yZDxzdHJpbmcsIEFwcENvbXBvbmVudD4gPSB7fTtcblxuXHRwcml2YXRlIF9vUm91dGVyUHJveHkhOiBSb3V0ZXJQcm94eTtcblxuXHRwcml2YXRlIF9vQXBwU3RhdGVIYW5kbGVyITogQXBwU3RhdGVIYW5kbGVyO1xuXG5cdHByaXZhdGUgYkluaXRpYWxpemVSb3V0aW5nPzogYm9vbGVhbjtcblxuXHRwcml2YXRlIF9vRGlhZ25vc3RpY3MhOiBEaWFnbm9zdGljcztcblxuXHRwcml2YXRlIGVudGl0eUNvbnRhaW5lciE6IFByb21pc2U8dm9pZD47XG5cblx0cHJpdmF0ZSBzdGFydHVwTW9kZTogc3RyaW5nID0gU3RhcnR1cE1vZGUuTm9ybWFsO1xuXG5cdHByaXZhdGUgX3N0YXJ0ZWRTZXJ2aWNlczogU2VydmljZTx1bmtub3duPltdID0gW107XG5cblx0cHVibGljIGluaXRpYWxpemVkITogUHJvbWlzZTx2b2lkPjtcblxuXHRwcml2YXRlIF9pbml0aWFsaXplZEtlZXBlciE6IFByb21pc2VLZWVwZXI8dm9pZD47XG5cblx0cHJpdmF0ZSBpc0FkYXB0YXRpb25FbmFibGVkID0gZmFsc2U7XG5cblx0cHVibGljIGlzRXhpdGluZyA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBTaW5nbGV0b24gdG8gaG9sZCBwcm9jZXNzZXMgZnJvbSBsaWJyYXJpZXMgdGhhdCBuZWVkIHRvIGJlIHJ1biBmb3IgZXZlcnkgaW5zdGFuY2UgcHJpb3IgdG8gc3RhcnR1cC5cblx0ICovXG5cdHByaXZhdGUgc3RhdGljIGluc3RhbmNlRGVwZW5kZW50UHJvY2Vzc2VzOiAoKGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50KSA9PiBQcm9taXNlPHZvaWQ+KVtdID0gW107XG5cblx0X2lzRmNsRW5hYmxlZCgpOiBib29sZWFuIHtcblx0XHRjb25zdCBvTWFuaWZlc3RVSTUgPSB0aGlzLmdldE1hbmlmZXN0RW50cnkoXCJzYXAudWk1XCIpO1xuXHRcdHJldHVybiBvTWFuaWZlc3RVSTU/LnJvdXRpbmc/LmNvbmZpZz8ucm91dGVyQ2xhc3MgPT09IE5BVkNPTkYuRkNMLlJPVVRFUkNMQVNTO1xuXHR9XG5cblx0c2V0QWRhcHRhdGlvbk1vZGUoaXNBZGFwdGF0aW9uRW5hYmxlZDogYm9vbGVhbik6IHZvaWQge1xuXHRcdHRoaXMuaXNBZGFwdGF0aW9uRW5hYmxlZCA9IGlzQWRhcHRhdGlvbkVuYWJsZWQ7XG5cdH1cblxuXHRpc0FkYXB0YXRpb25Nb2RlKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmlzQWRhcHRhdGlvbkVuYWJsZWQ7XG5cdH1cblxuXHQvKipcblx0ICogUHJvdmlkZXMgYSBob29rIHRvIGluaXRpYWxpemUgZmVhdHVyZSB0b2dnbGVzLlxuXHQgKlxuXHQgKiBUaGlzIGhvb2sgaXMgYmVpbmcgY2FsbGVkIGJ5IHRoZSBTQVAgRmlvcmkgZWxlbWVudHMgQXBwQ29tcG9uZW50IGF0IHRoZSB0aW1lIGZlYXR1cmUgdG9nZ2xlcyBjYW4gYmUgaW5pdGlhbGl6ZWQuXG5cdCAqIFRvIGNoYW5nZSBwYWdlIGNvbmZpZ3VyYXRpb24sIHVzZSB0aGUge0BsaW5rIHNhcC5mZS5jb3JlLkFwcENvbXBvbmVudCNjaGFuZ2VQYWdlQ29uZmlndXJhdGlvbn0gbWV0aG9kLlxuXHQgKiBAcHVibGljXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB3aXRob3V0IGFueSB2YWx1ZSB0byBhbGxvdyBhc3luY2hyb25vdXMgcHJvY2Vzc2VzXG5cdCAqL1xuXHRhc3luYyBpbml0aWFsaXplRmVhdHVyZVRvZ2dsZXMoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Ly8gdGhpcyBtZXRob2QgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYXBwbGljYXRpb25zXG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoYW5nZXMgdGhlIHBhZ2UgY29uZmlndXJhdGlvbiBvZiBTQVAgRmlvcmkgZWxlbWVudHMuXG5cdCAqXG5cdCAqIFRoaXMgbWV0aG9kIGVuYWJsZXMgeW91IHRvIGNoYW5nZSB0aGUgcGFnZSBjb25maWd1cmF0aW9uIG9mIFNBUCBGaW9yaSBlbGVtZW50cy5cblx0ICogQHBhcmFtIHBhZ2VJZCBUaGUgSUQgb2YgdGhlIHBhZ2UgZm9yIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGlzIHRvIGJlIGNoYW5nZWQuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIGluIHRoZSBwYWdlIHNldHRpbmdzIGZvciB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpcyB0byBiZSBjaGFuZ2VkLlxuXHQgKiBAcGFyYW0gdmFsdWUgVGhlIG5ldyB2YWx1ZSBvZiB0aGUgY29uZmlndXJhdGlvbi4gVGhpcyBjb3VsZCBiZSBhIHBsYWluIHZhbHVlIGxpa2UgYSBzdHJpbmcsIG9yIGEgQm9vbGVhbiwgb3IgYSBzdHJ1Y3R1cmVkIG9iamVjdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0Y2hhbmdlUGFnZUNvbmZpZ3VyYXRpb24ocGFnZUlkOiBzdHJpbmcsIHBhdGg6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkIHtcblx0XHRjb25zdCBtYW5pZmVzdCA9IGNoYW5nZUNvbmZpZ3VyYXRpb24odGhpcy5nZXRNYW5pZmVzdCgpLCBwYWdlSWQsIHBhdGgsIHZhbHVlLCB0cnVlKSBhcyBNYW5pZmVzdENvbnRlbnQ7XG5cdFx0aWYgKFxuXHRcdFx0cGF0aCA9PT0gXCJhcHAvZGlzYWJsZUlucHV0QXNzaXN0YW5jZVwiICYmXG5cdFx0XHQobWFuaWZlc3Q/LltcInNhcC5mZVwiXSBhcyBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4pPy5bXCJhcHBcIl0/LltcImRpc2FibGVJbnB1dEFzc2lzdGFuY2VcIl0gPT09IHZhbHVlXG5cdFx0KSB7XG5cdFx0XHR0aGlzLmdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKCkuc2V0Q2FwYWJpbGl0eShcIkRpc2FibGVJbnB1dEFzc2lzdGFuY2VcIiwgdmFsdWUpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIFJvdXRlclByb3h5LlxuXHQgKiBAcmV0dXJucyBBIFJlZmVyZW5jZSB0byB0aGUgUm91dGVyUHJveHlcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRnZXRSb3V0ZXJQcm94eSgpOiBSb3V0ZXJQcm94eSB7XG5cdFx0cmV0dXJuIHRoaXMuX29Sb3V0ZXJQcm94eTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIEFwcFN0YXRlSGFuZGxlci5cblx0ICogQHJldHVybnMgQSByZWZlcmVuY2UgdG8gdGhlIEFwcFN0YXRlSGFuZGxlclxuXHQgKiBAZmluYWxcblx0ICovXG5cdGdldEFwcFN0YXRlSGFuZGxlcigpOiBBcHBTdGF0ZUhhbmRsZXIge1xuXHRcdHJldHVybiB0aGlzLl9vQXBwU3RhdGVIYW5kbGVyO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgbmF2L0ZDTCBDb250cm9sbGVyLlxuXHQgKiBAcmV0dXJucyAgQSByZWZlcmVuY2UgdG8gdGhlIEZDTCBDb250cm9sbGVyXG5cdCAqIEBmaW5hbFxuXHQgKi9cblx0Z2V0Um9vdFZpZXdDb250cm9sbGVyKCk6IFJvb3RWaWV3QmFzZUNvbnRyb2xsZXIge1xuXHRcdHJldHVybiB0aGlzLmdldFJvb3RDb250cm9sKCkuZ2V0Q29udHJvbGxlcigpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgTmF2Q29udGFpbmVyIGNvbnRyb2wgb3IgdGhlIEZDTCBjb250cm9sLlxuXHQgKiBAcmV0dXJucyAgQSByZWZlcmVuY2UgdG8gTmF2Q29udGFpbmVyIGNvbnRyb2wgb3IgdGhlIEZDTCBjb250cm9sXG5cdCAqIEBmaW5hbFxuXHQgKi9cblx0Z2V0Um9vdENvbnRhaW5lcigpOiBOYXZDb250YWluZXIgfCBGbGV4aWJsZUNvbHVtbkxheW91dCB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0Um9vdENvbnRyb2woKS5nZXRDb250ZW50KClbMF0gYXMgTmF2Q29udGFpbmVyIHwgRmxleGlibGVDb2x1bW5MYXlvdXQ7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBzdGFydHVwIG1vZGUgb2YgdGhlIGFwcC5cblx0ICogQHJldHVybnMgVGhlIHN0YXJ0dXAgbW9kZVxuXHQgKi9cblx0Z2V0U3RhcnR1cE1vZGUoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5zdGFydHVwTW9kZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXQgdGhlIHN0YXJ0dXAgbW9kZSBmb3IgdGhlIGFwcCB0byAnQ3JlYXRlJy5cblx0ICpcblx0ICovXG5cdHNldFN0YXJ0dXBNb2RlQ3JlYXRlKCk6IHZvaWQge1xuXHRcdHRoaXMuc3RhcnR1cE1vZGUgPSBTdGFydHVwTW9kZS5DcmVhdGU7XG5cdH1cblxuXHQvKipcblx0ICogU2V0IHRoZSBzdGFydHVwIG1vZGUgZm9yIHRoZSBhcHAgdG8gJ0F1dG9DcmVhdGUnLlxuXHQgKlxuXHQgKi9cblx0c2V0U3RhcnR1cE1vZGVBdXRvQ3JlYXRlKCk6IHZvaWQge1xuXHRcdHRoaXMuc3RhcnR1cE1vZGUgPSBTdGFydHVwTW9kZS5BdXRvQ3JlYXRlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldCB0aGUgc3RhcnR1cCBtb2RlIGZvciB0aGUgYXBwIHRvICdEZWVwbGluaycuXG5cdCAqXG5cdCAqL1xuXHRzZXRTdGFydHVwTW9kZURlZXBsaW5rKCk6IHZvaWQge1xuXHRcdHRoaXMuc3RhcnR1cE1vZGUgPSBTdGFydHVwTW9kZS5EZWVwbGluaztcblx0fVxuXG5cdGluaXQoKTogdm9pZCB7XG5cdFx0dGhpcy5faW5pdGlhbGl6ZWRLZWVwZXIgPSBuZXcgUHJvbWlzZUtlZXBlcjx2b2lkPigpO1xuXHRcdHRoaXMuaW5pdGlhbGl6ZWQgPSB0aGlzLl9pbml0aWFsaXplZEtlZXBlci5wcm9taXNlO1xuXHRcdGNvbnN0IHVpTW9kZWwgPSBuZXcgSlNPTk1vZGVsKHtcblx0XHRcdGVkaXRNb2RlOiBsaWJyYXJ5LkVkaXRNb2RlLkRpc3BsYXksXG5cdFx0XHRpc0VkaXRhYmxlOiBmYWxzZSxcblx0XHRcdGRyYWZ0U3RhdHVzOiBsaWJyYXJ5LkRyYWZ0U3RhdHVzLkNsZWFyLFxuXHRcdFx0YnVzeTogZmFsc2UsXG5cdFx0XHRidXN5TG9jYWw6IHt9LFxuXHRcdFx0cGFnZXM6IHt9XG5cdFx0fSk7XG5cdFx0Y29uc3Qgb0ludGVybmFsTW9kZWwgPSBuZXcgSlNPTk1vZGVsKHtcblx0XHRcdHBhZ2VzOiB7fVxuXHRcdH0pO1xuXHRcdC8vIHNldCB0aGUgYmluZGluZyBPbmVXYXkgZm9yIHVpTW9kZWwgdG8gcHJldmVudCBjaGFuZ2VzIGlmIGNvbnRyb2xsZXIgZXh0ZW5zaW9ucyBtb2RpZnkgYSBib3VuZCBwcm9wZXJ0eSBvZiBhIGNvbnRyb2xcblx0XHR1aU1vZGVsLnNldERlZmF1bHRCaW5kaW5nTW9kZShcIk9uZVdheVwiKTtcblx0XHQvLyBmb3IgaW50ZXJuYWwgbW9kZWwgYmluZGluZyBuZWVkcyB0byBiZSB0d28gd2F5XG5cdFx0TW9kZWxIZWxwZXIuZW5oYW5jZVVpSlNPTk1vZGVsKHVpTW9kZWwsIGxpYnJhcnkpO1xuXHRcdE1vZGVsSGVscGVyLmVuaGFuY2VJbnRlcm5hbEpTT05Nb2RlbChvSW50ZXJuYWxNb2RlbCk7XG5cblx0XHR0aGlzLnNldE1vZGVsKHVpTW9kZWwsIFwidWlcIik7XG5cdFx0dGhpcy5zZXRNb2RlbChvSW50ZXJuYWxNb2RlbCwgXCJpbnRlcm5hbFwiKTtcblxuXHRcdHRoaXMuYkluaXRpYWxpemVSb3V0aW5nID0gdGhpcy5iSW5pdGlhbGl6ZVJvdXRpbmcgIT09IHVuZGVmaW5lZCA/IHRoaXMuYkluaXRpYWxpemVSb3V0aW5nIDogdHJ1ZTtcblx0XHR0aGlzLl9vUm91dGVyUHJveHkgPSBuZXcgUm91dGVyUHJveHkoKTtcblx0XHR0aGlzLl9vQXBwU3RhdGVIYW5kbGVyID0gbmV3IEFwcFN0YXRlSGFuZGxlcih0aGlzKTtcblx0XHR0aGlzLl9vRGlhZ25vc3RpY3MgPSBuZXcgRGlhZ25vc3RpY3MoKTtcblxuXHRcdGNvbnN0IG9Nb2RlbCA9IHRoaXMuZ2V0TW9kZWwoKTtcblx0XHRpZiAob01vZGVsPy5pc0E/LjxPRGF0YU1vZGVsPihcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YU1vZGVsXCIpKSB7XG5cdFx0XHRNb2RlbEhlbHBlci5lbmhhbmNlT0RhdGFNb2RlbChvTW9kZWwsIHRoaXMpO1xuXHRcdFx0b01vZGVsLnNldFJldHJ5QWZ0ZXJIYW5kbGVyKHRoaXMuaHR0cDUwM1JldHJ5SGFuZGxlci5iaW5kKHRoaXMpKTtcblx0XHRcdHRoaXMuZW50aXR5Q29udGFpbmVyID0gb01vZGVsLmdldE1ldGFNb2RlbCgpLnJlcXVlc3RPYmplY3QoXCIvJEVudGl0eUNvbnRhaW5lci9cIik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIG5vdCBhbiBPRGF0YSB2NCBzZXJ2aWNlXG5cdFx0XHR0aGlzLmVudGl0eUNvbnRhaW5lciA9IFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmdldE1hbmlmZXN0RW50cnkoXCJzYXAuZmVcIik/LmFwcD8uZGlzYWJsZUNvbGxhYm9yYXRpb25EcmFmdCkge1xuXHRcdFx0Ly8gZGlzYWJsZSB0aGUgY29sbGFib3JhdGlvbiBkcmFmdCBnbG9iYWxseSBpbiBjYXNlIHByaXZhdGUgbWFuaWZlc3QgZmxhZyBpcyBzZXRcblx0XHRcdC8vIHRoaXMgYWxsb3dzIGN1c3RvbWVycyB0byBkaXNhYmxlIHRoZSBjb2xsYWJvcmF0aW9uIGRyYWZ0IGluIGNhc2Ugd2UgcnVuIGludG8gaXNzdWVzIHdpdGggdGhlIGZpcnN0IGRlbGl2ZXJ5XG5cdFx0XHQvLyB0aGlzIHdpbGwgYmUgcmVtb3ZlZCB3aXRoIHRoZSBuZXh0IFMvNCByZWxlYXNlXG5cdFx0XHRNb2RlbEhlbHBlci5kaXNhYmxlQ29sbGFib3JhdGlvbkRyYWZ0ID0gdHJ1ZTtcblx0XHR9XG5cblx0XHRjb25zdCBvTWFuaWZlc3RVSTUgPSB0aGlzLmdldE1hbmlmZXN0KClbXCJzYXAudWk1XCJdO1xuXHRcdHRoaXMuY2hlY2tSb3V0aW5nQ29uZmlndXJhdGlvbihvTWFuaWZlc3RVSTUpO1xuXG5cdFx0Ly8gdGhlIGluaXQgZnVuY3Rpb24gY29uZmlndXJlcyB0aGUgcm91dGluZyBhY2NvcmRpbmcgdG8gdGhlIHNldHRpbmdzIGFib3ZlXG5cdFx0Ly8gaXQgd2lsbCBjYWxsIHRoZSBjcmVhdGVDb250ZW50IGZ1bmN0aW9uIHRvIGluc3RhbnRpYXRlIHRoZSBSb290VmlldyBhbmQgYWRkIGl0IHRvIHRoZSBVSUNvbXBvbmVudCBhZ2dyZWdhdGlvbnNcblxuXHRcdHN1cGVyLmluaXQoKTtcblx0XHRBcHBDb21wb25lbnQuaW5zdGFuY2VNYXBbdGhpcy5nZXRJZCgpXSA9IHRoaXM7XG5cdH1cblxuXHRwcml2YXRlIGFzeW5jIGh0dHA1MDNSZXRyeUhhbmRsZXIoZXJyb3I6IEVycm9yICYgeyByZXRyeUFmdGVyPzogRGF0ZSB9KTogUHJvbWlzZTx1bmRlZmluZWQ+IHtcblx0XHRyZXR1cm4gSFRUUDUwM0hhbmRsZXIuaGFuZGxlNTAzRGVsYXkoZXJyb3IsIHRoaXMuZ2V0Um9vdENvbnRyb2woKSwgZ2V0UmVzb3VyY2VNb2RlbCh0aGlzKSk7XG5cdH1cblxuXHRwcml2YXRlIGNoZWNrUm91dGluZ0NvbmZpZ3VyYXRpb24ob01hbmlmZXN0VUk1OiBNYW5pZmVzdENvbnRlbnRbXCJzYXAudWk1XCJdKTogdm9pZCB7XG5cdFx0aWYgKG9NYW5pZmVzdFVJNT8ucm9vdFZpZXc/LnZpZXdOYW1lKSB7XG5cdFx0XHQvLyBUaGUgYXBwbGljYXRpb24gc3BlY2lmaWVkIGFuIG93biByb290IHZpZXcgaW4gdGhlIG1hbmlmZXN0XG5cblx0XHRcdC8vIFJvb3QgVmlldyB3YXMgbW92ZWQgZnJvbSBzYXAuZmUudGVtcGxhdGVzIHRvIHNhcC5mZS5jb3JlIC0ga2VlcCBpdCBjb21wYXRpYmxlXG5cdFx0XHRpZiAob01hbmlmZXN0VUk1LnJvb3RWaWV3LnZpZXdOYW1lID09PSBOQVZDT05GLkZDTC5WSUVXTkFNRV9DT01QQVRJQklMSVRZKSB7XG5cdFx0XHRcdG9NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZSA9IE5BVkNPTkYuRkNMLlZJRVdOQU1FO1xuXHRcdFx0fSBlbHNlIGlmIChvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWUgPT09IE5BVkNPTkYuTkFWQ09OVEFJTkVSLlZJRVdOQU1FX0NPTVBBVElCSUxJVFkpIHtcblx0XHRcdFx0b01hbmlmZXN0VUk1LnJvb3RWaWV3LnZpZXdOYW1lID0gTkFWQ09ORi5OQVZDT05UQUlORVIuVklFV05BTUU7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChcblx0XHRcdFx0b01hbmlmZXN0VUk1LnJvb3RWaWV3LnZpZXdOYW1lID09PSBOQVZDT05GLkZDTC5WSUVXTkFNRSAmJlxuXHRcdFx0XHRvTWFuaWZlc3RVSTUucm91dGluZz8uY29uZmlnPy5yb3V0ZXJDbGFzcyA9PT0gTkFWQ09ORi5GQ0wuUk9VVEVSQ0xBU1Ncblx0XHRcdCkge1xuXHRcdFx0XHRMb2cuaW5mbyhgUm9vdGNvbnRhaW5lcjogXCIke05BVkNPTkYuRkNMLlZJRVdOQU1FfVwiIC0gUm91dGVyY2xhc3M6IFwiJHtOQVZDT05GLkZDTC5ST1VURVJDTEFTU31cImApO1xuXHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0b01hbmlmZXN0VUk1LnJvb3RWaWV3LnZpZXdOYW1lID09PSBOQVZDT05GLk5BVkNPTlRBSU5FUi5WSUVXTkFNRSAmJlxuXHRcdFx0XHRvTWFuaWZlc3RVSTUucm91dGluZz8uY29uZmlnPy5yb3V0ZXJDbGFzcyA9PT0gTkFWQ09ORi5OQVZDT05UQUlORVIuUk9VVEVSQ0xBU1Ncblx0XHRcdCkge1xuXHRcdFx0XHRMb2cuaW5mbyhgUm9vdGNvbnRhaW5lcjogXCIke05BVkNPTkYuTkFWQ09OVEFJTkVSLlZJRVdOQU1FfVwiIC0gUm91dGVyY2xhc3M6IFwiJHtOQVZDT05GLk5BVkNPTlRBSU5FUi5ST1VURVJDTEFTU31cImApO1xuXHRcdFx0fSBlbHNlIGlmIChvTWFuaWZlc3RVSTUucm9vdFZpZXc/LnZpZXdOYW1lPy5pbmNsdWRlcyhcInNhcC5mZS5jb3JlLnJvb3RWaWV3XCIpKSB7XG5cdFx0XHRcdHRocm93IEVycm9yKFxuXHRcdFx0XHRcdGBcXG5Xcm9uZyBjb25maWd1cmF0aW9uIGZvciB0aGUgY291cGxlIChyb290Vmlldy9yb3V0ZXJDbGFzcykgaW4gbWFuaWZlc3QgZmlsZS5cXG5gICtcblx0XHRcdFx0XHRcdGBDdXJyZW50IHZhbHVlcyBhcmUgOigke29NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZX0vJHtcblx0XHRcdFx0XHRcdFx0b01hbmlmZXN0VUk1LnJvdXRpbmc/LmNvbmZpZz8ucm91dGVyQ2xhc3MgfHwgXCI8bWlzc2luZyByb3V0ZXIgY2xhc3M+XCJcblx0XHRcdFx0XHRcdH0pXFxuYCArXG5cdFx0XHRcdFx0XHRgRXhwZWN0ZWQgdmFsdWVzIGFyZSBcXG5gICtcblx0XHRcdFx0XHRcdGBcXHQgLSAoJHtOQVZDT05GLk5BVkNPTlRBSU5FUi5WSUVXTkFNRX0vJHtOQVZDT05GLk5BVkNPTlRBSU5FUi5ST1VURVJDTEFTU30pXFxuYCArXG5cdFx0XHRcdFx0XHRgXFx0IC0gKCR7TkFWQ09ORi5GQ0wuVklFV05BTUV9LyR7TkFWQ09ORi5GQ0wuUk9VVEVSQ0xBU1N9KWBcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdExvZy5pbmZvKGBSb290Y29udGFpbmVyOiBcIiR7b01hbmlmZXN0VUk1LnJvb3RWaWV3LnZpZXdOYW1lfVwiIC0gUm91dGVyY2xhc3M6IFwiJHtOQVZDT05GLk5BVkNPTlRBSU5FUi5ST1VURVJDTEFTU31cImApO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGFzeW5jIG9uU2VydmljZXNTdGFydGVkKGFsbFNlcnZpY2VzOiBTZXJ2aWNlPHVua25vd24+W10pOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0aGlzLl9zdGFydGVkU2VydmljZXMgPSBhbGxTZXJ2aWNlcztcblx0XHRhd2FpdCB0aGlzLmluaXRpYWxpemVGZWF0dXJlVG9nZ2xlcygpO1xuXHRcdGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcblx0XHRcdEFwcENvbXBvbmVudC5pbnN0YW5jZURlcGVuZGVudFByb2Nlc3Nlcy5tYXAoYXN5bmMgKGZuUHJvY2VzcykgPT4ge1xuXHRcdFx0XHRyZXR1cm4gZm5Qcm9jZXNzLmNhbGwobnVsbCwgdGhpcyk7XG5cdFx0XHR9KVxuXHRcdCk7XG5cblx0XHQvL3JvdXRlciBtdXN0IGJlIHN0YXJ0ZWQgb25jZSB0aGUgcm9vdGNvbnRhaW5lciBpcyBpbml0aWFsaXplZFxuXHRcdC8vc3RhcnRpbmcgb2YgdGhlIHJvdXRlclxuXHRcdGNvbnN0IGZpbmFsaXplZFJvdXRpbmdJbml0aWFsaXphdGlvbiA9ICgpOiB2b2lkID0+IHtcblx0XHRcdHRoaXMuZW50aXR5Q29udGFpbmVyXG5cdFx0XHRcdC50aGVuKGFzeW5jICgpID0+IHtcblx0XHRcdFx0XHRpZiAodGhpcy5nZXRSb290Vmlld0NvbnRyb2xsZXIoKS5hdHRhY2hSb3V0ZU1hdGNoZXJzKSB7XG5cdFx0XHRcdFx0XHR0aGlzLmdldFJvb3RWaWV3Q29udHJvbGxlcigpLmF0dGFjaFJvdXRlTWF0Y2hlcnMoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy5nZXRSb3V0ZXIoKS5pbml0aWFsaXplKCk7XG5cdFx0XHRcdFx0dGhpcy5nZXRSb3V0ZXJQcm94eSgpLmluaXQodGhpcywgdGhpcy5faXNGY2xFbmFibGVkKCkpO1xuXG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0VmFsdWVIZWxwSGlzdG9yeVNlcnZpY2UoKS5yZWdpc3RlclNoZWxsSG9vaygpO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IG9SZXNvdXJjZUJ1bmRsZSA9IExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29yZVwiKSE7XG5cblx0XHRcdFx0XHR0aGlzLmdldFJvb3RWaWV3Q29udHJvbGxlcigpLmRpc3BsYXlFcnJvclBhZ2UoXG5cdFx0XHRcdFx0XHRvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfQVBQX0NPTVBPTkVOVF9TQVBGRV9BUFBTVEFSVF9URUNITklDQUxfSVNTVUVTXCIpLFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0aXRsZTogb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0NPTU1PTl9TQVBGRV9FUlJPUlwiKSxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IGVycm9yLm1lc3NhZ2Vcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9KTtcblx0XHR9O1xuXG5cdFx0aWYgKHRoaXMuYkluaXRpYWxpemVSb3V0aW5nKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRSb3V0aW5nU2VydmljZSgpXG5cdFx0XHRcdC5pbml0aWFsaXplUm91dGluZygpXG5cdFx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0XHRpZiAodGhpcy5nZXRSb290Vmlld0NvbnRyb2xsZXIoKSkge1xuXHRcdFx0XHRcdFx0ZmluYWxpemVkUm91dGluZ0luaXRpYWxpemF0aW9uKCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHRoaXMuZ2V0Um9vdENvbnRyb2woKS5hdHRhY2hBZnRlckluaXQoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRmaW5hbGl6ZWRSb3V0aW5nSW5pdGlhbGl6YXRpb24oKTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLl9pbml0aWFsaXplZEtlZXBlci5yZXNvbHZlKCk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKGVycjogRXJyb3IpIHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoYGNhbm5vdCBjYW5ub3QgaW5pdGlhbGl6ZSByb3V0aW5nOiAke2Vyci50b1N0cmluZygpfWApO1xuXHRcdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5faW5pdGlhbGl6ZWRLZWVwZXIucmVzb2x2ZSgpO1xuXHRcdH1cblx0fVxuXG5cdGV4aXQoKTogdm9pZCB7XG5cdFx0dGhpcy5fc3RhcnRlZFNlcnZpY2VzID0gW107XG5cdFx0dGhpcy5fb0FwcFN0YXRlSGFuZGxlci5kZXN0cm95KCk7XG5cdFx0dGhpcy5fb1JvdXRlclByb3h5LmRlc3Ryb3koKTtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdGRlbGV0ZSB0aGlzLl9vQXBwU3RhdGVIYW5kbGVyO1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0ZGVsZXRlIHRoaXMuX29Sb3V0ZXJQcm94eTtcblx0XHRkZWxldGVNb2RlbENhY2hlRGF0YSh0aGlzLmdldE1ldGFNb2RlbCgpKTtcblx0XHR0aGlzLmdldE1vZGVsKFwidWlcIikuZGVzdHJveSgpO1xuXHRcdGNsZWFuUGFnZUNvbmZpZ3VyYXRpb25DaGFuZ2VzKCk7XG5cdH1cblxuXHRnZXRNZXRhTW9kZWwoKTogT0RhdGFNZXRhTW9kZWwge1xuXHRcdHJldHVybiB0aGlzLmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCk7XG5cdH1cblxuXHRnZXREaWFnbm9zdGljcygpOiBEaWFnbm9zdGljcyB7XG5cdFx0cmV0dXJuIHRoaXMuX29EaWFnbm9zdGljcztcblx0fVxuXG5cdGRlc3Ryb3koYlN1cHByZXNzSW52YWxpZGF0ZT86IGJvb2xlYW4pOiB2b2lkIHtcblx0XHR0aGlzLmlzRXhpdGluZyA9IHRydWU7XG5cblx0XHQvLyBMRUFLUywgd2l0aCB3b3JrYXJvdW5kIGZvciBzb21lIEZsZXggLyBNREMgaXNzdWVcblx0XHR0cnkge1xuXHRcdFx0ZGVsZXRlIEFwcENvbXBvbmVudC5pbnN0YW5jZU1hcFt0aGlzLmdldElkKCldO1xuXG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG5cdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHRkZWxldGUgKHdpbmRvdyBhcyB1bmtub3duKS5fcm91dGluZztcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRMb2cuaW5mbyhlIGFzIHN0cmluZyk7XG5cdFx0fVxuXG5cdFx0Ly9XT1JLQVJPVU5EIGZvciBzdGlja3kgZGlzY2FyZCByZXF1ZXN0IDogZHVlIHRvIGFzeW5jIGNhbGxiYWNrLCByZXF1ZXN0IHRyaWdnZXJlZCBieSB0aGUgZXhpdEFwcGxpY2F0aW9uIHdpbGwgYmUgc2VuZCBhZnRlciB0aGUgVUlDb21wb25lbnQucHJvdG90eXBlLmRlc3Ryb3lcblx0XHQvL3NvIHdlIG5lZWQgdG8gY29weSB0aGUgUmVxdWVzdG9yIGhlYWRlcnMgYXMgaXQgd2lsbCBiZSBkZXN0cm95XG5cblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdGNvbnN0IG9NYWluTW9kZWwgPSB0aGlzLm9Nb2RlbHNbdW5kZWZpbmVkXTtcblx0XHRsZXQgb0hlYWRlcnM7XG5cdFx0aWYgKG9NYWluTW9kZWw/Lm9SZXF1ZXN0b3IpIHtcblx0XHRcdG9IZWFkZXJzID0gT2JqZWN0LmFzc2lnbih7fSwgb01haW5Nb2RlbC5vUmVxdWVzdG9yLm1IZWFkZXJzKTtcblx0XHR9XG5cblx0XHQvLyBBcyB3ZSBuZWVkIHRvIGNsZWFudXAgdGhlIGFwcGxpY2F0aW9uIC8gaGFuZGxlIHRoZSBkaXJ0eSBvYmplY3Qgd2UgbmVlZCB0byBjYWxsIG91ciBjbGVhbnVwIGJlZm9yZSB0aGUgbW9kZWxzIGFyZSBkZXN0cm95ZWRcblx0XHR0aGlzLmdldFJvdXRpbmdTZXJ2aWNlKCk/LmJlZm9yZUV4aXQ/LigpO1xuXHRcdHN1cGVyLmRlc3Ryb3koYlN1cHByZXNzSW52YWxpZGF0ZSk7XG5cdFx0aWYgKG9IZWFkZXJzICYmIG9NYWluTW9kZWwub1JlcXVlc3Rvcikge1xuXHRcdFx0b01haW5Nb2RlbC5vUmVxdWVzdG9yLm1IZWFkZXJzID0gb0hlYWRlcnM7XG5cdFx0fVxuXHR9XG5cblx0Z2V0Um91dGluZ1NlcnZpY2UoKTogUm91dGluZ1NlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBSb3V0aW5nU2VydmljZTsgLy8gb3ZlcnJpZGVuIGF0IHJ1bnRpbWVcblx0fVxuXG5cdGdldFNoZWxsU2VydmljZXMoKTogSVNoZWxsU2VydmljZXMge1xuXHRcdHJldHVybiB7fSBhcyBJU2hlbGxTZXJ2aWNlczsgLy8gb3ZlcnJpZGVuIGF0IHJ1bnRpbWVcblx0fVxuXG5cdGdldE5hdmlnYXRpb25TZXJ2aWNlKCk6IE5hdmlnYXRpb25TZXJ2aWNlIHtcblx0XHRyZXR1cm4ge30gYXMgTmF2aWdhdGlvblNlcnZpY2U7IC8vIG92ZXJyaWRlbiBhdCBydW50aW1lXG5cdH1cblxuXHRnZXRTaWRlRWZmZWN0c1NlcnZpY2UoKTogU2lkZUVmZmVjdHNTZXJ2aWNlIHtcblx0XHRyZXR1cm4ge30gYXMgU2lkZUVmZmVjdHNTZXJ2aWNlO1xuXHR9XG5cblx0Z2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKTogRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNTZXJ2aWNlIHtcblx0XHRyZXR1cm4ge30gYXMgRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNTZXJ2aWNlO1xuXHR9XG5cblx0Z2V0Q29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlKCk6IENvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIENvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZTtcblx0fVxuXG5cdGdldENvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2UoKTogQ29sbGFib3JhdGl2ZVRvb2xzU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIENvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2U7XG5cdH1cblxuXHRnZXRDb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlKCk6IENvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBDb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlO1xuXHR9XG5cblx0Z2V0Q29udGV4dFNoYXJpbmdTZXJ2aWNlKCk6IENvbnRleHRTaGFyaW5nU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIENvbnRleHRTaGFyaW5nU2VydmljZTtcblx0fVxuXG5cdGdldFRlbGVtZXRyeVNlcnZpY2UoKTogVGVsZW1ldHJ5U2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIFRlbGVtZXRyeVNlcnZpY2U7XG5cdH1cblxuXHRnZXRWYWx1ZUhlbHBIaXN0b3J5U2VydmljZSgpOiBWYWx1ZUhlbHBIaXN0b3J5U2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIFZhbHVlSGVscEhpc3RvcnlTZXJ2aWNlO1xuXHR9XG5cblx0YXN5bmMgZ2V0U3RhcnR1cFBhcmFtZXRlcnMoKTogUHJvbWlzZTxTdGFydHVwUGFyYW1ldGVycz4ge1xuXHRcdGNvbnN0IG9Db21wb25lbnREYXRhID0gdGhpcy5nZXRDb21wb25lbnREYXRhKCk7XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgob0NvbXBvbmVudERhdGEgJiYgb0NvbXBvbmVudERhdGEuc3RhcnR1cFBhcmFtZXRlcnMpIHx8IHt9KTtcblx0fVxuXG5cdHJlc3RvcmUoKTogdm9pZCB7XG5cdFx0Ly8gY2FsbGVkIGJ5IEZMUCB3aGVuIGFwcCBzYXAta2VlcC1hbGl2ZSBpcyBlbmFibGVkIGFuZCBhcHAgaXMgcmVzdG9yZWRcblx0XHRmb3IgKGNvbnN0IHN0YXJ0ZWRTZXJ2aWNlIG9mIHRoaXMuX3N0YXJ0ZWRTZXJ2aWNlcykge1xuXHRcdFx0c3RhcnRlZFNlcnZpY2Uub25SZXN0b3JlPy4oKTtcblx0XHR9XG5cdFx0dGhpcy5nZXRSb290Vmlld0NvbnRyb2xsZXIoKS52aWV3U3RhdGUub25SZXN0b3JlKCk7XG5cdH1cblxuXHRzdXNwZW5kKCk6IHZvaWQge1xuXHRcdC8vIGNhbGxlZCBieSBGTFAgd2hlbiBhcHAgc2FwLWtlZXAtYWxpdmUgaXMgZW5hYmxlZCBhbmQgYXBwIGlzIHN1c3BlbmRlZFxuXHRcdGZvciAoY29uc3Qgc3RhcnRlZFNlcnZpY2Ugb2YgdGhpcy5fc3RhcnRlZFNlcnZpY2VzKSB7XG5cdFx0XHRzdGFydGVkU2VydmljZS5vblN1c3BlbmQ/LigpO1xuXHRcdH1cblx0XHR0aGlzLmdldFJvb3RWaWV3Q29udHJvbGxlcigpLnZpZXdTdGF0ZS5vblN1c3BlbmQoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBuYXZpZ2F0ZUJhc2VkT25TdGFydHVwUGFyYW1ldGVyIGZ1bmN0aW9uIGlzIGEgcHVibGljIGFwaSB0aGF0IGFjdHMgYXMgYSB3cmFwcGVyIHRvIF9tYW5hZ2VEZWVwTGlua1N0YXJ0dXAgZnVuY3Rpb24uIEl0IHBhc3NlcyB0aGUgc3RhcnR1cCBwYXJhbWV0ZXJzIGZ1cnRoZXIgdG8gX21hbmFnZURlZXBMaW5rU3RhcnR1cCBmdW5jdGlvblxuXHQgKiBAcGFyYW0gc3RhcnR1cFBhcmFtZXRlcnMgRGVmaW5lcyB0aGUgc3RhcnR1cCBwYXJhbWV0ZXJzIHdoaWNoIGlzIGZ1cnRoZXIgcGFzc2VkIHRvIF9tYW5hZ2VEZWVwTGlua1N0YXJ0dXAgZnVuY3Rpb24uXG5cdCAqL1xuXG5cdGFzeW5jIG5hdmlnYXRlQmFzZWRPblN0YXJ0dXBQYXJhbWV0ZXIoc3RhcnR1cFBhcmFtZXRlcnM6IFN0YXJ0dXBQYXJhbWV0ZXJzIHwgbnVsbCB8IHVuZGVmaW5lZCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRpZiAoIUJ1c3lMb2NrZXIuaXNMb2NrZWQodGhpcy5nZXRNb2RlbChcInVpXCIpKSkge1xuXHRcdFx0XHRpZiAoIXN0YXJ0dXBQYXJhbWV0ZXJzKSB7XG5cdFx0XHRcdFx0c3RhcnR1cFBhcmFtZXRlcnMgPSBudWxsO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IHJvdXRpbmdTZXJ2aWNlID0gdGhpcy5nZXRSb3V0aW5nU2VydmljZSgpO1xuXHRcdFx0XHRhd2FpdCByb3V0aW5nU2VydmljZS5fbWFuYWdlRGVlcExpbmtTdGFydHVwKHN0YXJ0dXBQYXJhbWV0ZXJzKTtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChleGNlcHRpb246IHVua25vd24pIHtcblx0XHRcdExvZy5lcnJvcihleGNlcHRpb24gYXMgc3RyaW5nKTtcblx0XHRcdEJ1c3lMb2NrZXIudW5sb2NrKHRoaXMuZ2V0TW9kZWwoXCJ1aVwiKSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFVzZWQgdG8gYWxsb3cgZGlzYWJsaW5nIHRoZSBDb2xsYWJvcmF0aW9uIE1hbmFnZXIgaW50ZWdyYXRpb24gZm9yIHRoZSBPVlAgdXNlIGNhc2UuXG5cdCAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGNvbGxhYm9yYXRpb24gbWFuYWdlciBzZXJ2aWNlIGlzIGFjdGl2ZS5cblx0ICovXG5cdGlzQ29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlRW5hYmxlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RlciBwcm9jZXNzZXMgdGhhdCBuZWVkIHRvIGJlIHJ1biBmb3IgZXZlcnkgaW5zdGFuY2UgcHJpb3IgdG8gc3RhcnR1cC5cblx0ICogQHBhcmFtIGZuUHJvY2VzcyBGdW5jdGlvbiB0aGF0IGhvbGQgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBwcm9jZXNzLlxuXHQgKlxuXHQgKiBUaGUgcmVnaXN0ZXJlZCBwcm9jZXNzIGNhbiBiZSBhbiBhc3luY2hyb25vdXMgcHJvY2Vzcy5cblx0ICogSXQgc2hhbGwgYmUgY2FsbGVkIHdpdGggdGhlIEFwcENvbXBvbmVudCBpbnN0YW5jZSBhcyBhIHBhcmFtZXRlciBiZWZvcmUgc3RhcnR1cC5cblx0ICovXG5cdHN0YXRpYyByZWdpc3Rlckluc3RhbmNlRGVwZW5kZW50UHJvY2Vzc0ZvclN0YXJ0VXAoZm5Qcm9jZXNzOiAoYXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQpID0+IFByb21pc2U8dm9pZD4pOiB2b2lkIHtcblx0XHR0aGlzLmluc3RhbmNlRGVwZW5kZW50UHJvY2Vzc2VzLnB1c2goZm5Qcm9jZXNzKTtcblx0fVxufVxuXG5pbnRlcmZhY2UgQXBwQ29tcG9uZW50IGV4dGVuZHMgVUlDb21wb25lbnQge1xuXHRpc0FkYXB0YXRpb25Nb2RlKCk6IGJvb2xlYW47XG5cdGdldE1hbmlmZXN0KCk6IE1hbmlmZXN0Q29udGVudDtcblx0Z2V0TWFuaWZlc3RFbnRyeShlbnRyeTogXCJzYXAuYXBwXCIpOiBNYW5pZmVzdENvbnRlbnRbXCJzYXAuYXBwXCJdO1xuXHRnZXRNYW5pZmVzdEVudHJ5KGVudHJ5OiBcInNhcC51aTVcIik6IE1hbmlmZXN0Q29udGVudFtcInNhcC51aTVcIl07XG5cdF9nZXRNYW5pZmVzdEVudHJ5KGVudHJ5OiBcInNhcC51aTVcIiwgbWVyZ2VkOiBib29sZWFuKTogTWFuaWZlc3RDb250ZW50W1wic2FwLnVpNVwiXTtcblx0Z2V0TWFuaWZlc3RFbnRyeShlbnRyeTogXCJzYXAudWlcIik6IE1hbmlmZXN0Q29udGVudFtcInNhcC51aVwiXTtcblx0Z2V0TWFuaWZlc3RFbnRyeShlbnRyeTogXCJzYXAuZmVcIik6IE1hbmlmZXN0Q29udGVudFtcInNhcC5mZVwiXSB8IHVuZGVmaW5lZDtcblx0Z2V0TWFuaWZlc3RFbnRyeShlbnRyeTogXCJzYXAuZmlvcmlcIik6IE1hbmlmZXN0Q29udGVudFtcInNhcC5maW9yaVwiXTtcblx0Z2V0Q29tcG9uZW50RGF0YSgpOiBDb21wb25lbnREYXRhO1xuXHRnZXRSb290Q29udHJvbCgpOiB7XG5cdFx0Z2V0Q29udHJvbGxlcigpOiBSb290Vmlld0Jhc2VDb250cm9sbGVyO1xuXHR9ICYgVmlldztcblx0Z2V0TW9kZWwoKTogT0RhdGFNb2RlbDtcblx0Z2V0TW9kZWwobmFtZTogXCJ1aVwiKTogSlNPTk1vZGVsO1xuXHRnZXRNb2RlbChuYW1lOiBzdHJpbmcpOiBNb2RlbCB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQXBwQ29tcG9uZW50O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXVDQSxNQUFNQSxXQUFXLEdBQUdDLE9BQU8sQ0FBQ0QsV0FBVztFQUN2QyxNQUFNRSxPQUFPLEdBQUc7SUFDZkMsR0FBRyxFQUFFO01BQ0pDLFFBQVEsRUFBRSwwQkFBMEI7TUFDcENDLHNCQUFzQixFQUFFLHlDQUF5QztNQUNqRUMsV0FBVyxFQUFFO0lBQ2QsQ0FBQztJQUNEQyxZQUFZLEVBQUU7TUFDYkgsUUFBUSxFQUFFLG1DQUFtQztNQUM3Q0Msc0JBQXNCLEVBQUUsa0RBQWtEO01BQzFFQyxXQUFXLEVBQUU7SUFDZDtFQUNELENBQUM7RUFZRDtFQUNBLE1BQU1FLFFBQVEsR0FBR0MsTUFBTTtFQUt2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFYQSxJQXVHTUMsWUFBWSxJQUFBQyxJQUFBLEdBM0ZqQkMsY0FB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
547
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTdGFydHVwTW9kZSIsImxpYnJhcnkiLCJOQVZDT05GIiwiRkNMIiwiVklFV05BTUUiLCJWSUVXTkFNRV9DT01QQVRJQklMSVRZIiwiUk9VVEVSQ0xBU1MiLCJOQVZDT05UQUlORVIiLCJfbVJvdXRlciIsIlJvdXRlciIsIkFwcENvbXBvbmVudCIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsImNvbmZpZyIsImZ1bGxXaWR0aCIsIm1hbmlmZXN0Iiwic2VydmljZXMiLCJyZXNvdXJjZU1vZGVsIiwiZmFjdG9yeU5hbWUiLCJzdGFydHVwIiwic2V0dGluZ3MiLCJidW5kbGVzIiwibW9kZWxOYW1lIiwicm91dGluZ1NlcnZpY2UiLCJzaGVsbFNlcnZpY2VzIiwiU2hlbGxVSVNlcnZpY2UiLCJuYXZpZ2F0aW9uU2VydmljZSIsImVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwic2lkZUVmZmVjdHNTZXJ2aWNlIiwiYXN5bmNDb21wb25lbnRTZXJ2aWNlIiwiY29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlIiwiY29sbGFib3JhdGl2ZVRvb2xzU2VydmljZSIsInRlbGVtZXRyeVNlcnZpY2UiLCJ2YWx1ZUhlbHBIaXN0b3J5U2VydmljZSIsIkNvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2UiLCJDb250ZXh0U2hhcmluZ1NlcnZpY2UiLCJyb290VmlldyIsInZpZXdOYW1lIiwidHlwZSIsImFzeW5jIiwiaWQiLCJyb3V0aW5nIiwiY29udHJvbElkIiwicm91dGVyQ2xhc3MiLCJ2aWV3VHlwZSIsImNvbnRyb2xBZ2dyZWdhdGlvbiIsImNvbnRhaW5lck9wdGlvbnMiLCJwcm9wYWdhdGVNb2RlbCIsImRlc2lnbnRpbWUiLCJfZGVjMiIsImltcGxlbWVudEludGVyZmFjZSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfY2xhc3MzIiwiX1VJQ29tcG9uZW50IiwiX2luaGVyaXRzTG9vc2UiLCJfdGhpcyIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwic3RhcnR1cE1vZGUiLCJOb3JtYWwiLCJfc3RhcnRlZFNlcnZpY2VzIiwiaXNBZGFwdGF0aW9uRW5hYmxlZCIsImlzRXhpdGluZyIsInBhZ2VDb25maWd1cmF0aW9uQ2hhbmdlcyIsIl9wcm90byIsInByb3RvdHlwZSIsIl9pc0ZjbEVuYWJsZWQiLCJfb01hbmlmZXN0VUk1JHJvdXRpbmciLCJfb01hbmlmZXN0VUk1JHJvdXRpbmcyIiwib01hbmlmZXN0VUk1IiwiZ2V0TWFuaWZlc3RFbnRyeSIsInNldEFkYXB0YXRpb25Nb2RlIiwiaXNBZGFwdGF0aW9uTW9kZSIsImluaXRpYWxpemVGZWF0dXJlVG9nZ2xlcyIsIlByb21pc2UiLCJyZXNvbHZlIiwiY2hhbmdlUGFnZUNvbmZpZ3VyYXRpb24iLCJwYWdlSWQiLCJwYXRoIiwidmFsdWUiLCJfbWFuaWZlc3Qkc2FwRmUiLCJfbWFuaWZlc3Qkc2FwRmUkYXBwIiwiY2hhbmdlQ29uZmlndXJhdGlvbiIsImdldE1hbmlmZXN0IiwiZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMiLCJzZXRDYXBhYmlsaXR5IiwiY2xlYW5QYWdlQ29uZmlndXJhdGlvbkNoYW5nZXMiLCJnZXRSb3V0ZXJQcm94eSIsIl9vUm91dGVyUHJveHkiLCJnZXRBcHBTdGF0ZUhhbmRsZXIiLCJfb0FwcFN0YXRlSGFuZGxlciIsImdldFJvb3RWaWV3Q29udHJvbGxlciIsImdldFJvb3RDb250cm9sIiwiZ2V0Q29udHJvbGxlciIsImdldFJvb3RDb250YWluZXIiLCJnZXRDb250ZW50IiwiZ2V0U3RhcnR1cE1vZGUiLCJzZXRTdGFydHVwTW9kZUNyZWF0ZSIsIkNyZWF0ZSIsInNldFN0YXJ0dXBNb2RlQXV0b0NyZWF0ZSIsIkF1dG9DcmVhdGUiLCJzZXRTdGFydHVwTW9kZURlZXBsaW5rIiwiRGVlcGxpbmsiLCJpbml0IiwiX29Nb2RlbCRpc0EiLCJfdGhpcyRnZXRNYW5pZmVzdEVudHIiLCJfdGhpcyRnZXRNYW5pZmVzdEVudHIyIiwiX2luaXRpYWxpemVkS2VlcGVyIiwiUHJvbWlzZUtlZXBlciIsImluaXRpYWxpemVkIiwicHJvbWlzZSIsInVpTW9kZWwiLCJKU09OTW9kZWwiLCJlZGl0TW9kZSIsIkVkaXRNb2RlIiwiRGlzcGxheSIsImlzRWRpdGFibGUiLCJkcmFmdFN0YXR1cyIsIkRyYWZ0U3RhdHVzIiwiQ2xlYXIiLCJidXN5IiwiYnVzeUxvY2FsIiwicGFnZXMiLCJvSW50ZXJuYWxNb2RlbCIsInNldERlZmF1bHRCaW5kaW5nTW9kZSIsIk1vZGVsSGVscGVyIiwiZW5oYW5jZVVpSlNPTk1vZGVsIiwiZW5oYW5jZUludGVybmFsSlNPTk1vZGVsIiwic2V0TW9kZWwiLCJiSW5pdGlhbGl6ZVJvdXRpbmciLCJ1bmRlZmluZWQiLCJSb3V0ZXJQcm94eSIsIkFwcFN0YXRlSGFuZGxlciIsIl9vRGlhZ25vc3RpY3MiLCJEaWFnbm9zdGljcyIsIm9Nb2RlbCIsImdldE1vZGVsIiwiaXNBIiwiZW5oYW5jZU9EYXRhTW9kZWwiLCJzZXRSZXRyeUFmdGVySGFuZGxlciIsImh0dHA1MDNSZXRyeUhhbmRsZXIiLCJiaW5kIiwiZW50aXR5Q29udGFpbmVyIiwiZ2V0TWV0YU1vZGVsIiwicmVxdWVzdE9iamVjdCIsImFwcCIsImRpc2FibGVDb2xsYWJvcmF0aW9uRHJhZnQiLCJjaGVja1JvdXRpbmdDb25maWd1cmF0aW9uIiwiaW5zdGFuY2VNYXAiLCJnZXRJZCIsImVycm9yIiwiSFRUUDUwM0hhbmRsZXIiLCJoYW5kbGU1MDNEZWxheSIsImdldFJlc291cmNlTW9kZWwiLCJfb01hbmlmZXN0VUk1JHJvb3RWaWUiLCJfb01hbmlmZXN0VUk1JHJvdXRpbmczIiwiX29NYW5pZmVzdFVJNSRyb3V0aW5nNCIsIl9vTWFuaWZlc3RVSTUkcm91dGluZzUiLCJfb01hbmlmZXN0VUk1JHJvdXRpbmc2IiwiX29NYW5pZmVzdFVJNSRyb290VmllMiIsIl9vTWFuaWZlc3RVSTUkcm9vdFZpZTMiLCJMb2ciLCJpbmZvIiwiaW5jbHVkZXMiLCJfb01hbmlmZXN0VUk1JHJvdXRpbmc3IiwiX29NYW5pZmVzdFVJNSRyb3V0aW5nOCIsIkVycm9yIiwib25TZXJ2aWNlc1N0YXJ0ZWQiLCJhbGxTZXJ2aWNlcyIsImFsbFNldHRsZWQiLCJpbnN0YW5jZURlcGVuZGVudFByb2Nlc3NlcyIsIm1hcCIsImZuUHJvY2VzcyIsImZpbmFsaXplZFJvdXRpbmdJbml0aWFsaXphdGlvbiIsInRoZW4iLCJhdHRhY2hSb3V0ZU1hdGNoZXJzIiwiZ2V0Um91dGVyIiwiaW5pdGlhbGl6ZSIsImdldFZhbHVlSGVscEhpc3RvcnlTZXJ2aWNlIiwicmVnaXN0ZXJTaGVsbEhvb2siLCJjYXRjaCIsIm9SZXNvdXJjZUJ1bmRsZSIsIkxpYnJhcnkiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsImRpc3BsYXlFcnJvclBhZ2UiLCJnZXRUZXh0IiwidGl0bGUiLCJkZXNjcmlwdGlvbiIsIm1lc3NhZ2UiLCJnZXRSb3V0aW5nU2VydmljZSIsImluaXRpYWxpemVSb3V0aW5nIiwiYXR0YWNoQWZ0ZXJJbml0IiwiZXJyIiwidG9TdHJpbmciLCJleGl0IiwiZGVzdHJveSIsImRlbGV0ZU1vZGVsQ2FjaGVEYXRhIiwiZ2V0RGlhZ25vc3RpY3MiLCJiU3VwcHJlc3NJbnZhbGlkYXRlIiwiX3RoaXMkZ2V0Um91dGluZ1NlcnZpIiwiX3RoaXMkZ2V0Um91dGluZ1NlcnZpMiIsIndpbmRvdyIsIl9yb3V0aW5nIiwiZSIsIm9NYWluTW9kZWwiLCJvTW9kZWxzIiwib0hlYWRlcnMiLCJvUmVxdWVzdG9yIiwiT2JqZWN0IiwiYXNzaWduIiwibUhlYWRlcnMiLCJiZWZvcmVFeGl0IiwiZ2V0U2hlbGxTZXJ2aWNlcyIsImdldE5hdmlnYXRpb25TZXJ2aWNlIiwiZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlIiwiZ2V0Q29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlIiwiZ2V0Q29sbGFib3JhdGl2ZVRvb2xzU2VydmljZSIsImdldENvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2UiLCJnZXRDb250ZXh0U2hhcmluZ1NlcnZpY2UiLCJnZXRUZWxlbWV0cnlTZXJ2aWNlIiwiZ2V0U3RhcnR1cFBhcmFtZXRlcnMiLCJvQ29tcG9uZW50RGF0YSIsImdldENvbXBvbmVudERhdGEiLCJzdGFydHVwUGFyYW1ldGVycyIsInJlc3RvcmUiLCJzdGFydGVkU2VydmljZSIsIl9zdGFydGVkU2VydmljZSRvblJlcyIsIm9uUmVzdG9yZSIsInZpZXdTdGF0ZSIsInN1c3BlbmQiLCJfc3RhcnRlZFNlcnZpY2Ukb25TdXMiLCJvblN1c3BlbmQiLCJuYXZpZ2F0ZUJhc2VkT25TdGFydHVwUGFyYW1ldGVyIiwiQnVzeUxvY2tlciIsImlzTG9ja2VkIiwiX21hbmFnZURlZXBMaW5rU3RhcnR1cCIsImV4Y2VwdGlvbiIsInVubG9jayIsImlzQ29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlRW5hYmxlZCIsInJlZ2lzdGVySW5zdGFuY2VEZXBlbmRlbnRQcm9jZXNzRm9yU3RhcnRVcCIsInB1c2giLCJVSUNvbXBvbmVudCIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQXBwQ29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgRmxleGlibGVDb2x1bW5MYXlvdXQgZnJvbSBcInNhcC9mL0ZsZXhpYmxlQ29sdW1uTGF5b3V0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgaW1wbGVtZW50SW50ZXJmYWNlIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IEFwcFN0YXRlSGFuZGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwU3RhdGVIYW5kbGVyXCI7XG5pbXBvcnQgUm91dGVyUHJveHkgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL3JvdXRpbmcvUm91dGVyUHJveHlcIjtcbmltcG9ydCBIVFRQNTAzSGFuZGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9IVFRQNTAzSGFuZGxlclwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgUHJvbWlzZUtlZXBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Qcm9taXNlS2VlcGVyXCI7XG5pbXBvcnQgbGlicmFyeSBmcm9tIFwic2FwL2ZlL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHsgY2hhbmdlQ29uZmlndXJhdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9tYW5pZmVzdE1lcmdlci9DaGFuZ2VQYWdlQ29uZmlndXJhdGlvblwiO1xuaW1wb3J0IHR5cGUgUm9vdFZpZXdCYXNlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvcm9vdFZpZXcvUm9vdFZpZXdCYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgeyBDb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvQ29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgeyBDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL0NvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IENvbnRleHRTaGFyaW5nU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9Db250ZXh0U2hhcmluZ1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IEVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9FbnZpcm9ubWVudFNlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL05hdmlnYXRpb25TZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgeyBSb3V0aW5nU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9Sb3V0aW5nU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgSVNoZWxsU2VydmljZXMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvU2hlbGxTZXJ2aWNlc0ZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgU2lkZUVmZmVjdHNTZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1NpZGVFZmZlY3RzU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgVGVsZW1ldHJ5U2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9UZWxlbWV0cnlTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgeyBDb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL2NvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgRGlhZ25vc3RpY3MgZnJvbSBcInNhcC9mZS9jb3JlL3N1cHBvcnQvRGlhZ25vc3RpY3NcIjtcbmltcG9ydCB0eXBlIE5hdkNvbnRhaW5lciBmcm9tIFwic2FwL20vTmF2Q29udGFpbmVyXCI7XG5pbXBvcnQgUm91dGVyIGZyb20gXCJzYXAvbS9yb3V0aW5nL1JvdXRlclwiO1xuaW1wb3J0IExpYnJhcnkgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHR5cGUgeyBNYW5pZmVzdENvbnRlbnQgfSBmcm9tIFwic2FwL3VpL2NvcmUvTWFuaWZlc3RcIjtcbmltcG9ydCBVSUNvbXBvbmVudCBmcm9tIFwic2FwL3VpL2NvcmUvVUlDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgSUFzeW5jQ29udGVudENyZWF0aW9uIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgdHlwZSBTZXJ2aWNlIGZyb20gXCJzYXAvdWkvY29yZS9zZXJ2aWNlL1NlcnZpY2VcIjtcbmltcG9ydCB0eXBlIE1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvTW9kZWxcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTW9kZWxcIjtcbmltcG9ydCBCdXN5TG9ja2VyIGZyb20gXCIuL2NvbnRyb2xsZXJleHRlbnNpb25zL0J1c3lMb2NrZXJcIjtcbmltcG9ydCB7IGRlbGV0ZU1vZGVsQ2FjaGVEYXRhIH0gZnJvbSBcIi4vY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IGdldFJlc291cmNlTW9kZWwgfSBmcm9tIFwiLi9oZWxwZXJzL1Jlc291cmNlTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgVmFsdWVIZWxwSGlzdG9yeVNlcnZpY2UgfSBmcm9tIFwiLi9zZXJ2aWNlcy9WYWx1ZUhlbHBIaXN0b3J5U2VydmljZUZhY3RvcnlcIjtcblxuY29uc3QgU3RhcnR1cE1vZGUgPSBsaWJyYXJ5LlN0YXJ0dXBNb2RlO1xuY29uc3QgTkFWQ09ORiA9IHtcblx0RkNMOiB7XG5cdFx0VklFV05BTUU6IFwic2FwLmZlLmNvcmUucm9vdFZpZXcuRmNsXCIsXG5cdFx0VklFV05BTUVfQ09NUEFUSUJJTElUWTogXCJzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIudmlldy5GY2xcIixcblx0XHRST1VURVJDTEFTUzogXCJzYXAuZi5yb3V0aW5nLlJvdXRlclwiXG5cdH0sXG5cdE5BVkNPTlRBSU5FUjoge1xuXHRcdFZJRVdOQU1FOiBcInNhcC5mZS5jb3JlLnJvb3RWaWV3Lk5hdkNvbnRhaW5lclwiLFxuXHRcdFZJRVdOQU1FX0NPTVBBVElCSUxJVFk6IFwic2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLnZpZXcuTmF2Q29udGFpbmVyXCIsXG5cdFx0Uk9VVEVSQ0xBU1M6IFwic2FwLm0ucm91dGluZy5Sb3V0ZXJcIlxuXHR9XG59O1xuXG5leHBvcnQgdHlwZSBDb21wb25lbnREYXRhID0ge1xuXHRzdGFydHVwUGFyYW1ldGVycz86IFN0YXJ0dXBQYXJhbWV0ZXJzO1xuXHQvL2ZlRW52aXJvbm1lbnQgaXMgb2JqZWN0IHdoaWNoIGlzIHJlY2VpdmVkIGFzIGEgcGFydCBvZiB0aGUgY29tcG9uZW50IGRhdGEgZm9yIE15IEluYm94IGFwcGxpY2F0aW9ucy5cblx0ZmVFbnZpcm9ubWVudD86IHtcblx0XHQvL1dpdGhpbiB0aGlzIG9iamVjdCB0aGV5IHBhc3MgYSBmdW5jdGlvbiBjYWxsZWQgZ2V0SW50ZW50KCkgd2hpY2ggcmV0dXJucyBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgc2VtYW50aWNPYmplY3QgYW5kIGFjdGlvbiBhcyBzZXBhcmF0ZSBwcm9wZXJ0eS12YWx1ZSBlbnRyaWVzIHRoYXQgYXJlIHRoZW4gdXNlZCB0byB1cGRhdGUgdGhlIHJlbGF0ZWQgYXBwcyBidXR0b24uXG5cdFx0Z2V0SW50ZW50OiBGdW5jdGlvbjtcblx0XHQvL1dpdGhpbiB0aGlzIG9iamVjdCB0aGV5IHBhc3MgYSBmdW5jdGlvbiBjYWxsZWQgZ2V0U2hhcmVDb250cm9sVmlzaWJpbGl0eSgpIHRoYXQgcmV0dXJucyBib29sZWFuIHZhbHVlcyh0cnVlIG9yIGZhbHNlKSB3aGljaCBkZXRlcm1pbmVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBzaGFyZSBidXR0b24uXG5cdFx0Z2V0U2hhcmVDb250cm9sVmlzaWJpbGl0eTogRnVuY3Rpb247XG5cdH07XG59O1xuLy8gS2VlcCBhIHJlZmVyZW5jZSBzbyBhcyB0byBrZWVwIHRoZSBpbXBvcnQgZGVzcGl0ZSBpdCBub3QgYmVpbmcgZGlyZWN0bHkgdXNlZFxuY29uc3QgX21Sb3V0ZXIgPSBSb3V0ZXI7XG5cbmV4cG9ydCB0eXBlIFN0YXJ0dXBQYXJhbWV0ZXJzID0ge1xuXHRwcmVmZXJyZWRNb2RlPzogc3RyaW5nW107XG59ICYgUmVjb3JkPHN0cmluZywgdW5rbm93bltdPjtcbi8qKlxuICogTWFpbiBjbGFzcyBmb3IgY29tcG9uZW50cyB1c2VkIGZvciBhbiBhcHBsaWNhdGlvbiBpbiBTQVAgRmlvcmkgZWxlbWVudHMuXG4gKlxuICogQXBwbGljYXRpb24gZGV2ZWxvcGVycyB1c2luZyB0aGUgdGVtcGxhdGVzIGFuZCBidWlsZGluZyBibG9ja3MgcHJvdmlkZWQgYnkgU0FQIEZpb3JpIGVsZW1lbnRzIHNob3VsZCBjcmVhdGUgdGhlaXIgYXBwcyBieSBleHRlbmRpbmcgdGhpcyBjb21wb25lbnQuXG4gKiBUaGlzIGVuc3VyZXMgdGhhdCBhbGwgdGhlIG5lY2Vzc2FyeSBzZXJ2aWNlcyB0aGF0IHlvdSBuZWVkIGZvciB0aGUgYnVpbGRpbmcgYmxvY2tzIGFuZCB0ZW1wbGF0ZXMgdG8gd29yayBwcm9wZXJseSBhcmUgc3RhcnRlZC5cbiAqXG4gKiBXaGVuIHlvdSB1c2Ugc2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50IGFzIHRoZSBiYXNlIGNvbXBvbmVudCwgeW91IGFsc28gbmVlZCB0byB1c2UgYSByb290Vmlldy4gU0FQIEZpb3JpIGVsZW1lbnRzIHByb3ZpZGVzIHR3byBvcHRpb25zOiA8YnIvPlxuICogLSBzYXAuZmUuY29yZS5yb290Vmlldy5OYXZDb250YWluZXIgd2hlbiB1c2luZyBzYXAubS5yb3V0aW5nLlJvdXRlciA8YnIvPlxuICogLSBzYXAuZmUuY29yZS5yb290Vmlldy5GY2wgd2hlbiB1c2luZyBzYXAuZi5yb3V0aW5nLlJvdXRlciAoRkNMIHVzZSBjYXNlKSA8YnIvPlxuICogQGhpZGVjb25zdHJ1Y3RvclxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5BcHBDb21wb25lbnRcIiwge1xuXHRjb25maWc6IHtcblx0XHRmdWxsV2lkdGg6IHRydWVcblx0fSxcblx0bWFuaWZlc3Q6IHtcblx0XHRcInNhcC51aTVcIjoge1xuXHRcdFx0c2VydmljZXM6IHtcblx0XHRcdFx0cmVzb3VyY2VNb2RlbDoge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLlJlc291cmNlTW9kZWxTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCIsXG5cdFx0XHRcdFx0c2V0dGluZ3M6IHtcblx0XHRcdFx0XHRcdGJ1bmRsZXM6IFtcInNhcC5mZS5jb3JlLm1lc3NhZ2VidW5kbGVcIl0sXG5cdFx0XHRcdFx0XHRtb2RlbE5hbWU6IFwic2FwLmZlLmkxOG5cIlxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0cm91dGluZ1NlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5Sb3V0aW5nU2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNoZWxsU2VydmljZXM6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5TaGVsbFNlcnZpY2VzXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0U2hlbGxVSVNlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAudXNoZWxsLnVpNXNlcnZpY2UuU2hlbGxVSVNlcnZpY2VcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRuYXZpZ2F0aW9uU2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLk5hdmlnYXRpb25TZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0ZW52aXJvbm1lbnRDYXBhYmlsaXRpZXM6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5FbnZpcm9ubWVudFNlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRzaWRlRWZmZWN0c1NlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5TaWRlRWZmZWN0c1NlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRhc3luY0NvbXBvbmVudFNlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5Bc3luY0NvbXBvbmVudFNlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRjb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5Db2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRjb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuQ29sbGFib3JhdGl2ZVRvb2xzU2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHRlbGVtZXRyeVNlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5UZWxlbWV0cnlTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0dmFsdWVIZWxwSGlzdG9yeVNlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5WYWx1ZUhlbHBIaXN0b3J5U2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdENvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5Db2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0Q29udGV4dFNoYXJpbmdTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuQ29udGV4dFNoYXJpbmdTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHJvb3RWaWV3OiB7XG5cdFx0XHRcdHZpZXdOYW1lOiBOQVZDT05GLk5BVkNPTlRBSU5FUi5WSUVXTkFNRSxcblx0XHRcdFx0dHlwZTogXCJYTUxcIixcblx0XHRcdFx0YXN5bmM6IHRydWUsXG5cdFx0XHRcdGlkOiBcImFwcFJvb3RWaWV3XCJcblx0XHRcdH0sXG5cdFx0XHRyb3V0aW5nOiB7XG5cdFx0XHRcdGNvbmZpZzoge1xuXHRcdFx0XHRcdGNvbnRyb2xJZDogXCJhcHBDb250ZW50XCIsXG5cdFx0XHRcdFx0cm91dGVyQ2xhc3M6IE5BVkNPTkYuTkFWQ09OVEFJTkVSLlJPVVRFUkNMQVNTLFxuXHRcdFx0XHRcdHZpZXdUeXBlOiBcIlhNTFwiLFxuXHRcdFx0XHRcdGNvbnRyb2xBZ2dyZWdhdGlvbjogXCJwYWdlc1wiLFxuXHRcdFx0XHRcdGFzeW5jOiB0cnVlLFxuXHRcdFx0XHRcdGNvbnRhaW5lck9wdGlvbnM6IHtcblx0XHRcdFx0XHRcdHByb3BhZ2F0ZU1vZGVsOiB0cnVlXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRkZXNpZ250aW1lOiBcInNhcC9mZS9jb3JlL2Rlc2lnbnRpbWUvQXBwQ29tcG9uZW50LmRlc2lnbnRpbWVcIixcblxuXHRsaWJyYXJ5OiBcInNhcC5mZS5jb3JlXCJcbn0pXG5jbGFzcyBBcHBDb21wb25lbnQgZXh0ZW5kcyBVSUNvbXBvbmVudCBpbXBsZW1lbnRzIElBc3luY0NvbnRlbnRDcmVhdGlvbiB7XG5cdEBpbXBsZW1lbnRJbnRlcmZhY2UoXCJzYXAudWkuY29yZS5JQXN5bmNDb250ZW50Q3JlYXRpb25cIilcblx0X19pbXBsZW1lbnRzX19zYXBfdWlfY29yZV9JQXN5bmNDb250ZW50Q3JlYXRpb24gPSB0cnVlO1xuXG5cdHN0YXRpYyBpbnN0YW5jZU1hcDogUmVjb3JkPHN0cmluZywgQXBwQ29tcG9uZW50PiA9IHt9O1xuXG5cdHByaXZhdGUgX29Sb3V0ZXJQcm94eSE6IFJvdXRlclByb3h5O1xuXG5cdHByaXZhdGUgX29BcHBTdGF0ZUhhbmRsZXIhOiBBcHBTdGF0ZUhhbmRsZXI7XG5cblx0cHJpdmF0ZSBiSW5pdGlhbGl6ZVJvdXRpbmc/OiBib29sZWFuO1xuXG5cdHByaXZhdGUgX29EaWFnbm9zdGljcyE6IERpYWdub3N0aWNzO1xuXG5cdHByaXZhdGUgZW50aXR5Q29udGFpbmVyITogUHJvbWlzZTx2b2lkPjtcblxuXHRwcml2YXRlIHN0YXJ0dXBNb2RlOiBzdHJpbmcgPSBTdGFydHVwTW9kZS5Ob3JtYWw7XG5cblx0cHJpdmF0ZSBfc3RhcnRlZFNlcnZpY2VzOiBTZXJ2aWNlPHVua25vd24+W10gPSBbXTtcblxuXHRwdWJsaWMgaW5pdGlhbGl6ZWQhOiBQcm9taXNlPHZvaWQ+O1xuXG5cdHByaXZhdGUgX2luaXRpYWxpemVkS2VlcGVyITogUHJvbWlzZUtlZXBlcjx2b2lkPjtcblxuXHRwcml2YXRlIGlzQWRhcHRhdGlvbkVuYWJsZWQgPSBmYWxzZTtcblxuXHRwdWJsaWMgaXNFeGl0aW5nID0gZmFsc2U7XG5cblx0cHVibGljIHBhZ2VDb25maWd1cmF0aW9uQ2hhbmdlczogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge307XG5cblx0LyoqXG5cdCAqIFNpbmdsZXRvbiB0byBob2xkIHByb2Nlc3NlcyBmcm9tIGxpYnJhcmllcyB0aGF0IG5lZWQgdG8gYmUgcnVuIGZvciBldmVyeSBpbnN0YW5jZSBwcmlvciB0byBzdGFydHVwLlxuXHQgKi9cblx0cHJpdmF0ZSBzdGF0aWMgaW5zdGFuY2VEZXBlbmRlbnRQcm9jZXNzZXM6ICgoYXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQpID0+IFByb21pc2U8dm9pZD4pW10gPSBbXTtcblxuXHRfaXNGY2xFbmFibGVkKCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IG9NYW5pZmVzdFVJNSA9IHRoaXMuZ2V0TWFuaWZlc3RFbnRyeShcInNhcC51aTVcIik7XG5cdFx0cmV0dXJuIG9NYW5pZmVzdFVJNT8ucm91dGluZz8uY29uZmlnPy5yb3V0ZXJDbGFzcyA9PT0gTkFWQ09ORi5GQ0wuUk9VVEVSQ0xBU1M7XG5cdH1cblxuXHRzZXRBZGFwdGF0aW9uTW9kZShpc0FkYXB0YXRpb25FbmFibGVkOiBib29sZWFuKTogdm9pZCB7XG5cdFx0dGhpcy5pc0FkYXB0YXRpb25FbmFibGVkID0gaXNBZGFwdGF0aW9uRW5hYmxlZDtcblx0fVxuXG5cdGlzQWRhcHRhdGlvbk1vZGUoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuaXNBZGFwdGF0aW9uRW5hYmxlZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBQcm92aWRlcyBhIGhvb2sgdG8gaW5pdGlhbGl6ZSBmZWF0dXJlIHRvZ2dsZXMuXG5cdCAqXG5cdCAqIFRoaXMgaG9vayBpcyBiZWluZyBjYWxsZWQgYnkgdGhlIFNBUCBGaW9yaSBlbGVtZW50cyBBcHBDb21wb25lbnQgYXQgdGhlIHRpbWUgZmVhdHVyZSB0b2dnbGVzIGNhbiBiZSBpbml0aWFsaXplZC5cblx0ICogVG8gY2hhbmdlIHBhZ2UgY29uZmlndXJhdGlvbiwgdXNlIHRoZSB7QGxpbmsgc2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50I2NoYW5nZVBhZ2VDb25maWd1cmF0aW9ufSBtZXRob2QuXG5cdCAqIEBwdWJsaWNcblx0ICogQHJldHVybnMgQSBwcm9taXNlIHdpdGhvdXQgYW55IHZhbHVlIHRvIGFsbG93IGFzeW5jaHJvbm91cyBwcm9jZXNzZXNcblx0ICovXG5cdGFzeW5jIGluaXRpYWxpemVGZWF0dXJlVG9nZ2xlcygpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHQvLyB0aGlzIG1ldGhvZCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBhcHBsaWNhdGlvbnNcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdH1cblxuXHQvKipcblx0ICogQ2hhbmdlcyB0aGUgcGFnZSBjb25maWd1cmF0aW9uIG9mIFNBUCBGaW9yaSBlbGVtZW50cy5cblx0ICpcblx0ICogVGhpcyBtZXRob2QgZW5hYmxlcyB5b3UgdG8gY2hhbmdlIHRoZSBwYWdlIGNvbmZpZ3VyYXRpb24gb2YgU0FQIEZpb3JpIGVsZW1lbnRzLlxuXHQgKiBAcGFyYW0gcGFnZUlkIFRoZSBJRCBvZiB0aGUgcGFnZSBmb3Igd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXMgdG8gYmUgY2hhbmdlZC5cblx0ICogQHBhcmFtIHBhdGggVGhlIHBhdGggaW4gdGhlIHBhZ2Ugc2V0dGluZ3MgZm9yIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGlzIHRvIGJlIGNoYW5nZWQuXG5cdCAqIEBwYXJhbSB2YWx1ZSBUaGUgbmV3IHZhbHVlIG9mIHRoZSBjb25maWd1cmF0aW9uLiBUaGlzIGNvdWxkIGJlIGEgcGxhaW4gdmFsdWUgbGlrZSBhIHN0cmluZywgb3IgYSBCb29sZWFuLCBvciBhIHN0cnVjdHVyZWQgb2JqZWN0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRjaGFuZ2VQYWdlQ29uZmlndXJhdGlvbihwYWdlSWQ6IHN0cmluZywgcGF0aDogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHZvaWQge1xuXHRcdGNvbnN0IG1hbmlmZXN0ID0gY2hhbmdlQ29uZmlndXJhdGlvbih0aGlzLmdldE1hbmlmZXN0KCksIHBhZ2VJZCwgcGF0aCwgdmFsdWUsIHRydWUsIHRoaXMpIGFzIE1hbmlmZXN0Q29udGVudDtcblx0XHRpZiAoXG5cdFx0XHRwYXRoID09PSBcImFwcC9kaXNhYmxlSW5wdXRBc3Npc3RhbmNlXCIgJiZcblx0XHRcdChtYW5pZmVzdD8uW1wic2FwLmZlXCJdIGFzIFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+Pik/LltcImFwcFwiXT8uW1wiZGlzYWJsZUlucHV0QXNzaXN0YW5jZVwiXSA9PT0gdmFsdWVcblx0XHQpIHtcblx0XHRcdHRoaXMuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5zZXRDYXBhYmlsaXR5KFwiRGlzYWJsZUlucHV0QXNzaXN0YW5jZVwiLCB2YWx1ZSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIENsZWFycyBhbGwgcmVnaXN0ZXJlZCBwYWdlIGNvbmZpZ3VyYXRpb24gY2hhbmdlcy5cblx0ICovXG5cdGNsZWFuUGFnZUNvbmZpZ3VyYXRpb25DaGFuZ2VzKCk6IHZvaWQge1xuXHRcdHRoaXMucGFnZUNvbmZpZ3VyYXRpb25DaGFuZ2VzID0ge307XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBSb3V0ZXJQcm94eS5cblx0ICogQHJldHVybnMgQSBSZWZlcmVuY2UgdG8gdGhlIFJvdXRlclByb3h5XG5cdCAqIEBmaW5hbFxuXHQgKi9cblx0Z2V0Um91dGVyUHJveHkoKTogUm91dGVyUHJveHkge1xuXHRcdHJldHVybiB0aGlzLl9vUm91dGVyUHJveHk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBBcHBTdGF0ZUhhbmRsZXIuXG5cdCAqIEByZXR1cm5zIEEgcmVmZXJlbmNlIHRvIHRoZSBBcHBTdGF0ZUhhbmRsZXJcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRnZXRBcHBTdGF0ZUhhbmRsZXIoKTogQXBwU3RhdGVIYW5kbGVyIHtcblx0XHRyZXR1cm4gdGhpcy5fb0FwcFN0YXRlSGFuZGxlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIG5hdi9GQ0wgQ29udHJvbGxlci5cblx0ICogQHJldHVybnMgIEEgcmVmZXJlbmNlIHRvIHRoZSBGQ0wgQ29udHJvbGxlclxuXHQgKiBAZmluYWxcblx0ICovXG5cdGdldFJvb3RWaWV3Q29udHJvbGxlcigpOiBSb290Vmlld0Jhc2VDb250cm9sbGVyIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRSb290Q29udHJvbCgpLmdldENvbnRyb2xsZXIoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIE5hdkNvbnRhaW5lciBjb250cm9sIG9yIHRoZSBGQ0wgY29udHJvbC5cblx0ICogQHJldHVybnMgIEEgcmVmZXJlbmNlIHRvIE5hdkNvbnRhaW5lciBjb250cm9sIG9yIHRoZSBGQ0wgY29udHJvbFxuXHQgKiBAZmluYWxcblx0ICovXG5cdGdldFJvb3RDb250YWluZXIoKTogTmF2Q29udGFpbmVyIHwgRmxleGlibGVDb2x1bW5MYXlvdXQge1xuXHRcdHJldHVybiB0aGlzLmdldFJvb3RDb250cm9sKCkuZ2V0Q29udGVudCgpWzBdIGFzIE5hdkNvbnRhaW5lciB8IEZsZXhpYmxlQ29sdW1uTGF5b3V0O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgc3RhcnR1cCBtb2RlIG9mIHRoZSBhcHAuXG5cdCAqIEByZXR1cm5zIFRoZSBzdGFydHVwIG1vZGVcblx0ICovXG5cdGdldFN0YXJ0dXBNb2RlKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMuc3RhcnR1cE1vZGU7XG5cdH1cblxuXHQvKipcblx0ICogU2V0IHRoZSBzdGFydHVwIG1vZGUgZm9yIHRoZSBhcHAgdG8gJ0NyZWF0ZScuXG5cdCAqXG5cdCAqL1xuXHRzZXRTdGFydHVwTW9kZUNyZWF0ZSgpOiB2b2lkIHtcblx0XHR0aGlzLnN0YXJ0dXBNb2RlID0gU3RhcnR1cE1vZGUuQ3JlYXRlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldCB0aGUgc3RhcnR1cCBtb2RlIGZvciB0aGUgYXBwIHRvICdBdXRvQ3JlYXRlJy5cblx0ICpcblx0ICovXG5cdHNldFN0YXJ0dXBNb2RlQXV0b0NyZWF0ZSgpOiB2b2lkIHtcblx0XHR0aGlzLnN0YXJ0dXBNb2RlID0gU3RhcnR1cE1vZGUuQXV0b0NyZWF0ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXQgdGhlIHN0YXJ0dXAgbW9kZSBmb3IgdGhlIGFwcCB0byAnRGVlcGxpbmsnLlxuXHQgKlxuXHQgKi9cblx0c2V0U3RhcnR1cE1vZGVEZWVwbGluaygpOiB2b2lkIHtcblx0XHR0aGlzLnN0YXJ0dXBNb2RlID0gU3RhcnR1cE1vZGUuRGVlcGxpbms7XG5cdH1cblxuXHRpbml0KCk6IHZvaWQge1xuXHRcdHRoaXMuX2luaXRpYWxpemVkS2VlcGVyID0gbmV3IFByb21pc2VLZWVwZXI8dm9pZD4oKTtcblx0XHR0aGlzLmluaXRpYWxpemVkID0gdGhpcy5faW5pdGlhbGl6ZWRLZWVwZXIucHJvbWlzZTtcblx0XHRjb25zdCB1aU1vZGVsID0gbmV3IEpTT05Nb2RlbCh7XG5cdFx0XHRlZGl0TW9kZTogbGlicmFyeS5FZGl0TW9kZS5EaXNwbGF5LFxuXHRcdFx0aXNFZGl0YWJsZTogZmFsc2UsXG5cdFx0XHRkcmFmdFN0YXR1czogbGlicmFyeS5EcmFmdFN0YXR1cy5DbGVhcixcblx0XHRcdGJ1c3k6IGZhbHNlLFxuXHRcdFx0YnVzeUxvY2FsOiB7fSxcblx0XHRcdHBhZ2VzOiB7fVxuXHRcdH0pO1xuXHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsID0gbmV3IEpTT05Nb2RlbCh7XG5cdFx0XHRwYWdlczoge31cblx0XHR9KTtcblx0XHQvLyBzZXQgdGhlIGJpbmRpbmcgT25lV2F5IGZvciB1aU1vZGVsIHRvIHByZXZlbnQgY2hhbmdlcyBpZiBjb250cm9sbGVyIGV4dGVuc2lvbnMgbW9kaWZ5IGEgYm91bmQgcHJvcGVydHkgb2YgYSBjb250cm9sXG5cdFx0dWlNb2RlbC5zZXREZWZhdWx0QmluZGluZ01vZGUoXCJPbmVXYXlcIik7XG5cdFx0Ly8gZm9yIGludGVybmFsIG1vZGVsIGJpbmRpbmcgbmVlZHMgdG8gYmUgdHdvIHdheVxuXHRcdE1vZGVsSGVscGVyLmVuaGFuY2VVaUpTT05Nb2RlbCh1aU1vZGVsLCBsaWJyYXJ5KTtcblx0XHRNb2RlbEhlbHBlci5lbmhhbmNlSW50ZXJuYWxKU09OTW9kZWwob0ludGVybmFsTW9kZWwpO1xuXG5cdFx0dGhpcy5zZXRNb2RlbCh1aU1vZGVsLCBcInVpXCIpO1xuXHRcdHRoaXMuc2V0TW9kZWwob0ludGVybmFsTW9kZWwsIFwiaW50ZXJuYWxcIik7XG5cblx0XHR0aGlzLmJJbml0aWFsaXplUm91dGluZyA9IHRoaXMuYkluaXRpYWxpemVSb3V0aW5nICE9PSB1bmRlZmluZWQgPyB0aGlzLmJJbml0aWFsaXplUm91dGluZyA6IHRydWU7XG5cdFx0dGhpcy5fb1JvdXRlclByb3h5ID0gbmV3IFJvdXRlclByb3h5KCk7XG5cdFx0dGhpcy5fb0FwcFN0YXRlSGFuZGxlciA9IG5ldyBBcHBTdGF0ZUhhbmRsZXIodGhpcyk7XG5cdFx0dGhpcy5fb0RpYWdub3N0aWNzID0gbmV3IERpYWdub3N0aWNzKCk7XG5cblx0XHRjb25zdCBvTW9kZWwgPSB0aGlzLmdldE1vZGVsKCk7XG5cdFx0aWYgKG9Nb2RlbD8uaXNBPy48T0RhdGFNb2RlbD4oXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFNb2RlbFwiKSkge1xuXHRcdFx0TW9kZWxIZWxwZXIuZW5oYW5jZU9EYXRhTW9kZWwob01vZGVsLCB0aGlzKTtcblx0XHRcdG9Nb2RlbC5zZXRSZXRyeUFmdGVySGFuZGxlcih0aGlzLmh0dHA1MDNSZXRyeUhhbmRsZXIuYmluZCh0aGlzKSk7XG5cdFx0XHR0aGlzLmVudGl0eUNvbnRhaW5lciA9IG9Nb2RlbC5nZXRNZXRhTW9kZWwoKS5yZXF1ZXN0T2JqZWN0KFwiLyRFbnRpdHlDb250YWluZXIvXCIpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBub3QgYW4gT0RhdGEgdjQgc2VydmljZVxuXHRcdFx0dGhpcy5lbnRpdHlDb250YWluZXIgPSBQcm9taXNlLnJlc29sdmUoKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5nZXRNYW5pZmVzdEVudHJ5KFwic2FwLmZlXCIpPy5hcHA/LmRpc2FibGVDb2xsYWJvcmF0aW9uRHJhZnQpIHtcblx0XHRcdC8vIGRpc2FibGUgdGhlIGNvbGxhYm9yYXRpb24gZHJhZnQgZ2xvYmFsbHkgaW4gY2FzZSBwcml2YXRlIG1hbmlmZXN0IGZsYWcgaXMgc2V0XG5cdFx0XHQvLyB0aGlzIGFsbG93cyBjdXN0b21lcnMgdG8gZGlzYWJsZSB0aGUgY29sbGFib3JhdGlvbiBkcmFmdCBpbiBjYXNlIHdlIHJ1biBpbnRvIGlzc3VlcyB3aXRoIHRoZSBmaXJzdCBkZWxpdmVyeVxuXHRcdFx0Ly8gdGhpcyB3aWxsIGJlIHJlbW92ZWQgd2l0aCB0aGUgbmV4dCBTLzQgcmVsZWFzZVxuXHRcdFx0TW9kZWxIZWxwZXIuZGlzYWJsZUNvbGxhYm9yYXRpb25EcmFmdCA9IHRydWU7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgb01hbmlmZXN0VUk1ID0gdGhpcy5nZXRNYW5pZmVzdCgpW1wic2FwLnVpNVwiXTtcblx0XHR0aGlzLmNoZWNrUm91dGluZ0NvbmZpZ3VyYXRpb24ob01hbmlmZXN0VUk1KTtcblxuXHRcdC8vIHRoZSBpbml0IGZ1bmN0aW9uIGNvbmZpZ3VyZXMgdGhlIHJvdXRpbmcgYWNjb3JkaW5nIHRvIHRoZSBzZXR0aW5ncyBhYm92ZVxuXHRcdC8vIGl0IHdpbGwgY2FsbCB0aGUgY3JlYXRlQ29udGVudCBmdW5jdGlvbiB0byBpbnN0YW50aWF0ZSB0aGUgUm9vdFZpZXcgYW5kIGFkZCBpdCB0byB0aGUgVUlDb21wb25lbnQgYWdncmVnYXRpb25zXG5cblx0XHRzdXBlci5pbml0KCk7XG5cdFx0QXBwQ29tcG9uZW50Lmluc3RhbmNlTWFwW3RoaXMuZ2V0SWQoKV0gPSB0aGlzO1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyBodHRwNTAzUmV0cnlIYW5kbGVyKGVycm9yOiBFcnJvciAmIHsgcmV0cnlBZnRlcj86IERhdGUgfSk6IFByb21pc2U8dW5kZWZpbmVkPiB7XG5cdFx0cmV0dXJuIEhUVFA1MDNIYW5kbGVyLmhhbmRsZTUwM0RlbGF5KGVycm9yLCB0aGlzLmdldFJvb3RDb250cm9sKCksIGdldFJlc291cmNlTW9kZWwodGhpcykpO1xuXHR9XG5cblx0cHJpdmF0ZSBjaGVja1JvdXRpbmdDb25maWd1cmF0aW9uKG9NYW5pZmVzdFVJNTogTWFuaWZlc3RDb250ZW50W1wic2FwLnVpNVwiXSk6IHZvaWQge1xuXHRcdGlmIChvTWFuaWZlc3RVSTU/LnJvb3RWaWV3Py52aWV3TmFtZSkge1xuXHRcdFx0Ly8gVGhlIGFwcGxpY2F0aW9uIHNwZWNpZmllZCBhbiBvd24gcm9vdCB2aWV3IGluIHRoZSBtYW5pZmVzdFxuXG5cdFx0XHQvLyBSb290IFZpZXcgd2FzIG1vdmVkIGZyb20gc2FwLmZlLnRlbXBsYXRlcyB0byBzYXAuZmUuY29yZSAtIGtlZXAgaXQgY29tcGF0aWJsZVxuXHRcdFx0aWYgKG9NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZSA9PT0gTkFWQ09ORi5GQ0wuVklFV05BTUVfQ09NUEFUSUJJTElUWSkge1xuXHRcdFx0XHRvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWUgPSBOQVZDT05GLkZDTC5WSUVXTkFNRTtcblx0XHRcdH0gZWxzZSBpZiAob01hbmlmZXN0VUk1LnJvb3RWaWV3LnZpZXdOYW1lID09PSBOQVZDT05GLk5BVkNPTlRBSU5FUi5WSUVXTkFNRV9DT01QQVRJQklMSVRZKSB7XG5cdFx0XHRcdG9NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZSA9IE5BVkNPTkYuTkFWQ09OVEFJTkVSLlZJRVdOQU1FO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoXG5cdFx0XHRcdG9NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZSA9PT0gTkFWQ09ORi5GQ0wuVklFV05BTUUgJiZcblx0XHRcdFx0b01hbmlmZXN0VUk1LnJvdXRpbmc/LmNvbmZpZz8ucm91dGVyQ2xhc3MgPT09IE5BVkNPTkYuRkNMLlJPVVRFUkNMQVNTXG5cdFx0XHQpIHtcblx0XHRcdFx0TG9nLmluZm8oYFJvb3Rjb250YWluZXI6IFwiJHtOQVZDT05GLkZDTC5WSUVXTkFNRX1cIiAtIFJvdXRlcmNsYXNzOiBcIiR7TkFWQ09ORi5GQ0wuUk9VVEVSQ0xBU1N9XCJgKTtcblx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdG9NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZSA9PT0gTkFWQ09ORi5OQVZDT05UQUlORVIuVklFV05BTUUgJiZcblx0XHRcdFx0b01hbmlmZXN0VUk1LnJvdXRpbmc/LmNvbmZpZz8ucm91dGVyQ2xhc3MgPT09IE5BVkNPTkYuTkFWQ09OVEFJTkVSLlJPVVRFUkNMQVNTXG5cdFx0XHQpIHtcblx0XHRcdFx0TG9nLmluZm8oYFJvb3Rjb250YWluZXI6IFwiJHtOQVZDT05GLk5BVkNPTlRBSU5FUi5WSUVXTkFNRX1cIiAtIFJvdXRlcmNsYXNzOiBcIiR7TkFWQ09ORi5OQVZDT05UQUlORVIuUk9VVEVSQ0xBU1N9XCJgKTtcblx0XHRcdH0gZWxzZSBpZiAob01hbmlmZXN0VUk1LnJvb3RWaWV3Py52aWV3TmFtZT8uaW5jbHVkZXMoXCJzYXAuZmUuY29yZS5yb290Vmlld1wiKSkge1xuXHRcdFx0XHR0aHJvdyBFcnJvcihcblx0XHRcdFx0XHRgXFxuV3JvbmcgY29uZmlndXJhdGlvbiBmb3IgdGhlIGNvdXBsZSAocm9vdFZpZXcvcm91dGVyQ2xhc3MpIGluIG1hbmlmZXN0IGZpbGUuXFxuYCArXG5cdFx0XHRcdFx0XHRgQ3VycmVudCB2YWx1ZXMgYXJlIDooJHtvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWV9LyR7XG5cdFx0XHRcdFx0XHRcdG9NYW5pZmVzdFVJNS5yb3V0aW5nPy5jb25maWc/LnJvdXRlckNsYXNzIHx8IFwiPG1pc3Npbmcgcm91dGVyIGNsYXNzPlwiXG5cdFx0XHRcdFx0XHR9KVxcbmAgK1xuXHRcdFx0XHRcdFx0YEV4cGVjdGVkIHZhbHVlcyBhcmUgXFxuYCArXG5cdFx0XHRcdFx0XHRgXFx0IC0gKCR7TkFWQ09ORi5OQVZDT05UQUlORVIuVklFV05BTUV9LyR7TkFWQ09ORi5OQVZDT05UQUlORVIuUk9VVEVSQ0xBU1N9KVxcbmAgK1xuXHRcdFx0XHRcdFx0YFxcdCAtICgke05BVkNPTkYuRkNMLlZJRVdOQU1FfS8ke05BVkNPTkYuRkNMLlJPVVRFUkNMQVNTfSlgXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRMb2cuaW5mbyhgUm9vdGNvbnRhaW5lcjogXCIke29NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZX1cIiAtIFJvdXRlcmNsYXNzOiBcIiR7TkFWQ09ORi5OQVZDT05UQUlORVIuUk9VVEVSQ0xBU1N9XCJgKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRhc3luYyBvblNlcnZpY2VzU3RhcnRlZChhbGxTZXJ2aWNlczogU2VydmljZTx1bmtub3duPltdKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dGhpcy5fc3RhcnRlZFNlcnZpY2VzID0gYWxsU2VydmljZXM7XG5cdFx0YXdhaXQgdGhpcy5pbml0aWFsaXplRmVhdHVyZVRvZ2dsZXMoKTtcblx0XHRhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoXG5cdFx0XHRBcHBDb21wb25lbnQuaW5zdGFuY2VEZXBlbmRlbnRQcm9jZXNzZXMubWFwKGFzeW5jIChmblByb2Nlc3MpID0+IHtcblx0XHRcdFx0cmV0dXJuIGZuUHJvY2Vzcy5jYWxsKG51bGwsIHRoaXMpO1xuXHRcdFx0fSlcblx0XHQpO1xuXG5cdFx0Ly9yb3V0ZXIgbXVzdCBiZSBzdGFydGVkIG9uY2UgdGhlIHJvb3Rjb250YWluZXIgaXMgaW5pdGlhbGl6ZWRcblx0XHQvL3N0YXJ0aW5nIG9mIHRoZSByb3V0ZXJcblx0XHRjb25zdCBmaW5hbGl6ZWRSb3V0aW5nSW5pdGlhbGl6YXRpb24gPSAoKTogdm9pZCA9PiB7XG5cdFx0XHR0aGlzLmVudGl0eUNvbnRhaW5lclxuXHRcdFx0XHQudGhlbihhc3luYyAoKSA9PiB7XG5cdFx0XHRcdFx0aWYgKHRoaXMuZ2V0Um9vdFZpZXdDb250cm9sbGVyKCkuYXR0YWNoUm91dGVNYXRjaGVycykge1xuXHRcdFx0XHRcdFx0dGhpcy5nZXRSb290Vmlld0NvbnRyb2xsZXIoKS5hdHRhY2hSb3V0ZU1hdGNoZXJzKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMuZ2V0Um91dGVyKCkuaW5pdGlhbGl6ZSgpO1xuXHRcdFx0XHRcdHRoaXMuZ2V0Um91dGVyUHJveHkoKS5pbml0KHRoaXMsIHRoaXMuX2lzRmNsRW5hYmxlZCgpKTtcblxuXHRcdFx0XHRcdHJldHVybiB0aGlzLmdldFZhbHVlSGVscEhpc3RvcnlTZXJ2aWNlKCkucmVnaXN0ZXJTaGVsbEhvb2soKTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcblx0XHRcdFx0XHRjb25zdCBvUmVzb3VyY2VCdW5kbGUgPSBMaWJyYXJ5LmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLmNvcmVcIikhO1xuXG5cdFx0XHRcdFx0dGhpcy5nZXRSb290Vmlld0NvbnRyb2xsZXIoKS5kaXNwbGF5RXJyb3JQYWdlKFxuXHRcdFx0XHRcdFx0b1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0FQUF9DT01QT05FTlRfU0FQRkVfQVBQU1RBUlRfVEVDSE5JQ0FMX0lTU1VFU1wiKSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGl0bGU6IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19DT01NT05fU0FQRkVfRVJST1JcIiksXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiBlcnJvci5tZXNzYWdlXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSk7XG5cdFx0fTtcblxuXHRcdGlmICh0aGlzLmJJbml0aWFsaXplUm91dGluZykge1xuXHRcdFx0cmV0dXJuIHRoaXMuZ2V0Um91dGluZ1NlcnZpY2UoKVxuXHRcdFx0XHQuaW5pdGlhbGl6ZVJvdXRpbmcoKVxuXHRcdFx0XHQudGhlbigoKSA9PiB7XG5cdFx0XHRcdFx0aWYgKHRoaXMuZ2V0Um9vdFZpZXdDb250cm9sbGVyKCkpIHtcblx0XHRcdFx0XHRcdGZpbmFsaXplZFJvdXRpbmdJbml0aWFsaXphdGlvbigpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0aGlzLmdldFJvb3RDb250cm9sKCkuYXR0YWNoQWZ0ZXJJbml0KGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0ZmluYWxpemVkUm91dGluZ0luaXRpYWxpemF0aW9uKCk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy5faW5pdGlhbGl6ZWRLZWVwZXIucmVzb2x2ZSgpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChlcnI6IEVycm9yKSB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKGBjYW5ub3QgY2Fubm90IGluaXRpYWxpemUgcm91dGluZzogJHtlcnIudG9TdHJpbmcoKX1gKTtcblx0XHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuX2luaXRpYWxpemVkS2VlcGVyLnJlc29sdmUoKTtcblx0XHR9XG5cdH1cblxuXHRleGl0KCk6IHZvaWQge1xuXHRcdHRoaXMuX3N0YXJ0ZWRTZXJ2aWNlcyA9IFtdO1xuXHRcdHRoaXMuX29BcHBTdGF0ZUhhbmRsZXIuZGVzdHJveSgpO1xuXHRcdHRoaXMuX29Sb3V0ZXJQcm94eS5kZXN0cm95KCk7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRkZWxldGUgdGhpcy5fb0FwcFN0YXRlSGFuZGxlcjtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdGRlbGV0ZSB0aGlzLl9vUm91dGVyUHJveHk7XG5cdFx0ZGVsZXRlTW9kZWxDYWNoZURhdGEodGhpcy5nZXRNZXRhTW9kZWwoKSk7XG5cdFx0dGhpcy5nZXRNb2RlbChcInVpXCIpLmRlc3Ryb3koKTtcblx0XHR0aGlzLmNsZWFuUGFnZUNvbmZpZ3VyYXRpb25DaGFuZ2VzKCk7XG5cdH1cblxuXHRnZXRNZXRhTW9kZWwoKTogT0RhdGFNZXRhTW9kZWwge1xuXHRcdHJldHVybiB0aGlzLmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCk7XG5cdH1cblxuXHRnZXREaWFnbm9zdGljcygpOiBEaWFnbm9zdGljcyB7XG5cdFx0cmV0dXJuIHRoaXMuX29EaWFnbm9zdGljcztcblx0fVxuXG5cdGRlc3Ryb3koYlN1cHByZXNzSW52YWxpZGF0ZT86IGJvb2xlYW4pOiB2b2lkIHtcblx0XHR0aGlzLmlzRXhpdGluZyA9IHRydWU7XG5cblx0XHQvLyBMRUFLUywgd2l0aCB3b3JrYXJvdW5kIGZvciBzb21lIEZsZXggLyBNREMgaXNzdWVcblx0XHR0cnkge1xuXHRcdFx0ZGVsZXRlIEFwcENvbXBvbmVudC5pbnN0YW5jZU1hcFt0aGlzLmdldElkKCldO1xuXG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG5cdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHRkZWxldGUgKHdpbmRvdyBhcyB1bmtub3duKS5fcm91dGluZztcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRMb2cuaW5mbyhlIGFzIHN0cmluZyk7XG5cdFx0fVxuXG5cdFx0Ly9XT1JLQVJPVU5EIGZvciBzdGlja3kgZGlzY2FyZCByZXF1ZXN0IDogZHVlIHRvIGFzeW5jIGNhbGxiYWNrLCByZXF1ZXN0IHRyaWdnZXJlZCBieSB0aGUgZXhpdEFwcGxpY2F0aW9uIHdpbGwgYmUgc2VuZCBhZnRlciB0aGUgVUlDb21wb25lbnQucHJvdG90eXBlLmRlc3Ryb3lcblx0XHQvL3NvIHdlIG5lZWQgdG8gY29weSB0aGUgUmVxdWVzdG9yIGhlYWRlcnMgYXMgaXQgd2lsbCBiZSBkZXN0cm95XG5cblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdGNvbnN0IG9NYWluTW9kZWwgPSB0aGlzLm9Nb2RlbHNbdW5kZWZpbmVkXTtcblx0XHRsZXQgb0hlYWRlcnM7XG5cdFx0aWYgKG9NYWluTW9kZWw/Lm9SZXF1ZXN0b3IpIHtcblx0XHRcdG9IZWFkZXJzID0gT2JqZWN0LmFzc2lnbih7fSwgb01haW5Nb2RlbC5vUmVxdWVzdG9yLm1IZWFkZXJzKTtcblx0XHR9XG5cblx0XHQvLyBBcyB3ZSBuZWVkIHRvIGNsZWFudXAgdGhlIGFwcGxpY2F0aW9uIC8gaGFuZGxlIHRoZSBkaXJ0eSBvYmplY3Qgd2UgbmVlZCB0byBjYWxsIG91ciBjbGVhbnVwIGJlZm9yZSB0aGUgbW9kZWxzIGFyZSBkZXN0cm95ZWRcblx0XHR0aGlzLmdldFJvdXRpbmdTZXJ2aWNlKCk/LmJlZm9yZUV4aXQ/LigpO1xuXHRcdHN1cGVyLmRlc3Ryb3koYlN1cHByZXNzSW52YWxpZGF0ZSk7XG5cdFx0aWYgKG9IZWFkZXJzICYmIG9NYWluTW9kZWwub1JlcXVlc3Rvcikge1xuXHRcdFx0b01haW5Nb2RlbC5vUmVxdWVzdG9yLm1IZWFkZXJzID0gb0hlYWRlcnM7XG5cdFx0fVxuXHR9XG5cblx0Z2V0Um91dGluZ1NlcnZpY2UoKTogUm91dGluZ1NlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBSb3V0aW5nU2VydmljZTsgLy8gb3ZlcnJpZGVuIGF0IHJ1bnRpbWVcblx0fVxuXG5cdGdldFNoZWxsU2VydmljZXMoKTogSVNoZWxsU2VydmljZXMge1xuXHRcdHJldHVybiB7fSBhcyBJU2hlbGxTZXJ2aWNlczsgLy8gb3ZlcnJpZGVuIGF0IHJ1bnRpbWVcblx0fVxuXG5cdGdldE5hdmlnYXRpb25TZXJ2aWNlKCk6IE5hdmlnYXRpb25TZXJ2aWNlIHtcblx0XHRyZXR1cm4ge30gYXMgTmF2aWdhdGlvblNlcnZpY2U7IC8vIG92ZXJyaWRlbiBhdCBydW50aW1lXG5cdH1cblxuXHRnZXRTaWRlRWZmZWN0c1NlcnZpY2UoKTogU2lkZUVmZmVjdHNTZXJ2aWNlIHtcblx0XHRyZXR1cm4ge30gYXMgU2lkZUVmZmVjdHNTZXJ2aWNlO1xuXHR9XG5cblx0Z2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKTogRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNTZXJ2aWNlIHtcblx0XHRyZXR1cm4ge30gYXMgRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNTZXJ2aWNlO1xuXHR9XG5cblx0Z2V0Q29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlKCk6IENvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIENvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZTtcblx0fVxuXG5cdGdldENvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2UoKTogQ29sbGFib3JhdGl2ZVRvb2xzU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIENvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2U7XG5cdH1cblxuXHRnZXRDb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlKCk6IENvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBDb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlO1xuXHR9XG5cblx0Z2V0Q29udGV4dFNoYXJpbmdTZXJ2aWNlKCk6IENvbnRleHRTaGFyaW5nU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIENvbnRleHRTaGFyaW5nU2VydmljZTtcblx0fVxuXG5cdGdldFRlbGVtZXRyeVNlcnZpY2UoKTogVGVsZW1ldHJ5U2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIFRlbGVtZXRyeVNlcnZpY2U7XG5cdH1cblxuXHRnZXRWYWx1ZUhlbHBIaXN0b3J5U2VydmljZSgpOiBWYWx1ZUhlbHBIaXN0b3J5U2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIFZhbHVlSGVscEhpc3RvcnlTZXJ2aWNlO1xuXHR9XG5cblx0YXN5bmMgZ2V0U3RhcnR1cFBhcmFtZXRlcnMoKTogUHJvbWlzZTxTdGFydHVwUGFyYW1ldGVycz4ge1xuXHRcdGNvbnN0IG9Db21wb25lbnREYXRhID0gdGhpcy5nZXRDb21wb25lbnREYXRhKCk7XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgob0NvbXBvbmVudERhdGEgJiYgb0NvbXBvbmVudERhdGEuc3RhcnR1cFBhcmFtZXRlcnMpIHx8IHt9KTtcblx0fVxuXG5cdHJlc3RvcmUoKTogdm9pZCB7XG5cdFx0Ly8gY2FsbGVkIGJ5IEZMUCB3aGVuIGFwcCBzYXAta2VlcC1hbGl2ZSBpcyBlbmFibGVkIGFuZCBhcHAgaXMgcmVzdG9yZWRcblx0XHRmb3IgKGNvbnN0IHN0YXJ0ZWRTZXJ2aWNlIG9mIHRoaXMuX3N0YXJ0ZWRTZXJ2aWNlcykge1xuXHRcdFx0c3RhcnRlZFNlcnZpY2Uub25SZXN0b3JlPy4oKTtcblx0XHR9XG5cdFx0dGhpcy5nZXRSb290Vmlld0NvbnRyb2xsZXIoKS52aWV3U3RhdGUub25SZXN0b3JlKCk7XG5cdH1cblxuXHRzdXNwZW5kKCk6IHZvaWQge1xuXHRcdC8vIGNhbGxlZCBieSBGTFAgd2hlbiBhcHAgc2FwLWtlZXAtYWxpdmUgaXMgZW5hYmxlZCBhbmQgYXBwIGlzIHN1c3BlbmRlZFxuXHRcdGZvciAoY29uc3Qgc3RhcnRlZFNlcnZpY2Ugb2YgdGhpcy5fc3RhcnRlZFNlcnZpY2VzKSB7XG5cdFx0XHRzdGFydGVkU2VydmljZS5vblN1c3BlbmQ/LigpO1xuXHRcdH1cblx0XHR0aGlzLmdldFJvb3RWaWV3Q29udHJvbGxlcigpLnZpZXdTdGF0ZS5vblN1c3BlbmQoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBuYXZpZ2F0ZUJhc2VkT25TdGFydHVwUGFyYW1ldGVyIGZ1bmN0aW9uIGlzIGEgcHVibGljIGFwaSB0aGF0IGFjdHMgYXMgYSB3cmFwcGVyIHRvIF9tYW5hZ2VEZWVwTGlua1N0YXJ0dXAgZnVuY3Rpb24uIEl0IHBhc3NlcyB0aGUgc3RhcnR1cCBwYXJhbWV0ZXJzIGZ1cnRoZXIgdG8gX21hbmFnZURlZXBMaW5rU3RhcnR1cCBmdW5jdGlvblxuXHQgKiBAcGFyYW0gc3RhcnR1cFBhcmFtZXRlcnMgRGVmaW5lcyB0aGUgc3RhcnR1cCBwYXJhbWV0ZXJzIHdoaWNoIGlzIGZ1cnRoZXIgcGFzc2VkIHRvIF9tYW5hZ2VEZWVwTGlua1N0YXJ0dXAgZnVuY3Rpb24uXG5cdCAqL1xuXG5cdGFzeW5jIG5hdmlnYXRlQmFzZWRPblN0YXJ0dXBQYXJhbWV0ZXIoc3RhcnR1cFBhcmFtZXRlcnM6IFN0YXJ0dXBQYXJhbWV0ZXJzIHwgbnVsbCB8IHVuZGVmaW5lZCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRpZiAoIUJ1c3lMb2NrZXIuaXNMb2NrZWQodGhpcy5nZXRNb2RlbChcInVpXCIpKSkge1xuXHRcdFx0XHRpZiAoIXN0YXJ0dXBQYXJhbWV0ZXJzKSB7XG5cdFx0XHRcdFx0c3RhcnR1cFBhcmFtZXRlcnMgPSBudWxsO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IHJvdXRpbmdTZXJ2aWNlID0gdGhpcy5nZXRSb3V0aW5nU2VydmljZSgpO1xuXHRcdFx0XHRhd2FpdCByb3V0aW5nU2VydmljZS5fbWFuYWdlRGVlcExpbmtTdGFydHVwKHN0YXJ0dXBQYXJhbWV0ZXJzKTtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChleGNlcHRpb246IHVua25vd24pIHtcblx0XHRcdExvZy5lcnJvcihleGNlcHRpb24gYXMgc3RyaW5nKTtcblx0XHRcdEJ1c3lMb2NrZXIudW5sb2NrKHRoaXMuZ2V0TW9kZWwoXCJ1aVwiKSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFVzZWQgdG8gYWxsb3cgZGlzYWJsaW5nIHRoZSBDb2xsYWJvcmF0aW9uIE1hbmFnZXIgaW50ZWdyYXRpb24gZm9yIHRoZSBPVlAgdXNlIGNhc2UuXG5cdCAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGNvbGxhYm9yYXRpb24gbWFuYWdlciBzZXJ2aWNlIGlzIGFjdGl2ZS5cblx0ICovXG5cdGlzQ29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlRW5hYmxlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RlciBwcm9jZXNzZXMgdGhhdCBuZWVkIHRvIGJlIHJ1biBmb3IgZXZlcnkgaW5zdGFuY2UgcHJpb3IgdG8gc3RhcnR1cC5cblx0ICogQHBhcmFtIGZuUHJvY2VzcyBGdW5jdGlvbiB0aGF0IGhvbGQgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBwcm9jZXNzLlxuXHQgKlxuXHQgKiBUaGUgcmVnaXN0ZXJlZCBwcm9jZXNzIGNhbiBiZSBhbiBhc3luY2hyb25vdXMgcHJvY2Vzcy5cblx0ICogSXQgc2hhbGwgYmUgY2FsbGVkIHdpdGggdGhlIEFwcENvbXBvbmVudCBpbnN0YW5jZSBhcyBhIHBhcmFtZXRlciBiZWZvcmUgc3RhcnR1cC5cblx0ICovXG5cdHN0YXRpYyByZWdpc3Rlckluc3RhbmNlRGVwZW5kZW50UHJvY2Vzc0ZvclN0YXJ0VXAoZm5Qcm9jZXNzOiAoYXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQpID0+IFByb21pc2U8dm9pZD4pOiB2b2lkIHtcblx0XHR0aGlzLmluc3RhbmNlRGVwZW5kZW50UHJvY2Vzc2VzLnB1c2goZm5Qcm9jZXNzKTtcblx0fVxufVxuXG5pbnRlcmZhY2UgQXBwQ29tcG9uZW50IGV4dGVuZHMgVUlDb21wb25lbnQge1xuXHRpc0FkYXB0YXRpb25Nb2RlKCk6IGJvb2xlYW47XG5cdGdldE1hbmlmZXN0KCk6IE1hbmlmZXN0Q29udGVudDtcblx0Z2V0TWFuaWZlc3RFbnRyeShlbnRyeTogXCJzYXAuYXBwXCIpOiBNYW5pZmVzdENvbnRlbnRbXCJzYXAuYXBwXCJdO1xuXHRnZXRNYW5pZmVzdEVudHJ5KGVudHJ5OiBcInNhcC51aTVcIik6IE1hbmlmZXN0Q29udGVudFtcInNhcC51aTVcIl07XG5cdF9nZXRNYW5pZmVzdEVudHJ5KGVudHJ5OiBcInNhcC51aTVcIiwgbWVyZ2VkOiBib29sZWFuKTogTWFuaWZlc3RDb250ZW50W1wic2FwLnVpNVwiXTtcblx0Z2V0TWFuaWZlc3RFbnRyeShlbnRyeTogXCJzYXAudWlcIik6IE1hbmlmZXN0Q29udGVudFtcInNhcC51aVwiXTtcblx0Z2V0TWFuaWZlc3RFbnRyeShlbnRyeTogXCJzYXAuZmVcIik6IE1hbmlmZXN0Q29udGVudFtcInNhcC5mZVwiXSB8IHVuZGVmaW5lZDtcblx0Z2V0TWFuaWZlc3RFbnRyeShlbnRyeTogXCJzYXAuZmlvcmlcIik6IE1hbmlmZXN0Q29udGVudFtcInNhcC5maW9yaVwiXTtcblx0Z2V0Q29tcG9uZW50RGF0YSgpOiBDb21wb25lbnREYXRhO1xuXHRnZXRSb290Q29udHJvbCgpOiB7XG5cdFx0Z2V0Q29udHJvbGxlcigpOiBSb290Vmlld0Jhc2VDb250cm9sbGVyO1xuXHR9ICYgVmlldztcblx0Z2V0TW9kZWwoKTogT0RhdGFNb2RlbDtcblx0Z2V0TW9kZWwobmFtZTogXCJ1aVwiKTogSlNPTk1vZGVsO1xuXHRnZXRNb2RlbChuYW1lOiBzdHJpbmcpOiBNb2RlbCB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQXBwQ29tcG9uZW50O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBdUNBLE1BQU1BLFdBQVcsR0FBR0MsT0FBTyxDQUFDRCxXQUFXO0VBQ3ZDLE1BQU1FLE9BQU8sR0FBRztJQUNmQyxHQUFHLEVBQUU7TUFDSkMsUUFBUSxFQUFFLDBCQUEwQjtNQUNwQ0Msc0JBQXNCLEVBQUUseUNBQXlDO01BQ2pFQyxXQUFXLEVBQUU7SUFDZCxDQUFDO0lBQ0RDLFlBQVksRUFBRTtNQUNiSCxRQUFRLEVBQUUsbUNBQW1DO01BQzdDQyxzQkFBc0IsRUFBRSxrREFBa0Q7TUFDMUVDLFdBQVcsRUFBRTtJQUNkO0VBQ0QsQ0FBQztFQVlEO0VBQ0EsTUFBTUUsUUFBUSxHQUFHQyxNQUFNO0VBS3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVhBLElBdUdNQyxZQUFZLElBQUFDLElBQUEsR0EzRmpCQyxjQUFjLENBQUMsMEJBQTBCLEVBQUU7SUFDM0NDLE1BQU0sRUFBRTtNQUNQQyxTQUFTLEVBQUU7SUFDWixDQUFDO0lBQ0RDLFFBQVEsRUFBRTtNQUNULFNBQVMsRUFBRTtRQUNWQyxRQUFRLEVBQUU7VUFDVEMsYUFBYSxFQUFFO1lBQ2RDLFdBQVcsRUFBRSwyQ0FBMkM7WUFDeERDLE9BQU8sRUFBRSxTQUFTO1lBQ2xCQyxRQUFRLEVBQUU7Y0FDVEMsT0FBTyxFQUFFLENBQUMsMkJBQTJCLENBQUM7Y0FDdENDLFNBQVMsRUFBRTtZQUNaO1VBQ0QsQ0FBQztVQUNEQyxjQUFjLEVBQUU7WUFDZkwsV0FBVyxFQUFFLHFDQUFxQztZQUNsREMsT0FBTyxFQUFFO1VBQ1YsQ0FBQztVQUNESyxhQUFhLEVBQUU7WUFDZE4sV0FBVyxFQUFFLG9DQUFvQztZQUNqREMsT0FBTyxFQUFFO1VBQ1YsQ0FBQztVQUNETSxjQUFjLEVBQUU7WUFDZlAsV0FBVyxFQUFFO1VBQ2QsQ0FBQztVQUNEUSxpQkFBaUIsRUFBRTtZQUNsQlIsV0FBVyxFQUFFLHdDQUF3QztZQUNyREMsT0FBTyxFQUFFO1VBQ1YsQ0FBQztVQUNEUSx1QkFBdUIsRUFBRTtZQUN4QlQsV0FBVyxFQUFFLHlDQUF5QztZQUN0REMsT0FBTyxFQUFFO1VBQ1YsQ0FBQztVQUNEUyxrQkFBa0IsRUFBRTtZQUNuQlYsV0FBVyxFQUFFLHlDQUF5QztZQUN0REMsT0FBTyxFQUFFO1VBQ1YsQ0FBQztVQUNEVSxxQkFBcUIsRUFBRTtZQUN0QlgsV0FBVyxFQUFFLDRDQUE0QztZQUN6REMsT0FBTyxFQUFFO1VBQ1YsQ0FBQztVQUNEVywyQkFBMkIsRUFBRTtZQUM1QlosV0FBVyxFQUFFLGtEQUFrRDtZQUMvREMsT0FBTyxFQUFFO1VBQ1YsQ0FBQztVQUNEWSx5QkFBeUIsRUFBRTtZQUMxQmIsV0FBVyxFQUFFLGdEQUFnRDtZQUM3REMsT0FBTyxFQUFFO1VBQ1YsQ0FBQztVQUNEYSxnQkFBZ0IsRUFBRTtZQUNqQmQsV0FBVyxFQUFFLHVDQUF1QztZQUNwREMsT0FBTyxFQUFFO1VBQ1YsQ0FBQztVQUNEYyx1QkFBdUIsRUFBRTtZQUN4QmYsV0FBVyxFQUFFLDhDQUE4QztZQUMzREMsT0FBTyxFQUFFO1VBQ1YsQ0FBQztVQUNEZSx5QkFBeUIsRUFBRTtZQUMxQmhCLFdBQVcsRUFBRSxnREFBZ0Q7WUFDN0RDLE9BQU8sRUFBRTtVQUNWLENBQUM7VUFDRGdCLHFCQUFxQixFQUFFO1lBQ3RCakIsV0FBVyxFQUFFLDRDQUE0QztZQUN6REMsT0FBTyxFQUFFO1VBQ1Y7UUFDRCxDQUFDO1FBQ0RpQixRQUFRLEVBQUU7VUFDVEMsUUFBUSxFQUFFbkMsT0FBTyxDQUFDSyxZQUFZLENBQUNILFFBQVE7VUFDdkNrQyxJQUFJLEVBQUUsS0FBSztVQUNYQyxLQUFLLEVBQUUsSUFBSTtVQUNYQyxFQUFFLEVBQUU7UUFDTCxDQUFDO1FBQ0RDLE9BQU8sRUFBRTtVQUNSNUIsTUFBTSxFQUFFO1lBQ1A2QixTQUFTLEVBQUUsWUFBWTtZQUN2QkMsV0FBVyxFQUFFekMsT0FBTyxDQUFDSyxZQUFZLENBQUNELFdBQVc7WUFDN0NzQyxRQUFRLEVBQUUsS0FBSztZQUNmQyxrQkFBa0IsRUFBRSxPQUFPO1lBQzNCTixLQUFLLEVBQUUsSUFBSTtZQUNYTyxnQkFBZ0IsRUFBRTtjQUNqQkMsY0FBYyxFQUFFO1lBQ2pCO1VBQ0Q7UUFDRDtNQUNEO0lBQ0QsQ0FBQztJQUNEQyxVQUFVLEVBQUUsZ0RBQWdEO0lBRTVEL0MsT0FBTyxFQUFFO0VBQ1YsQ0FBQyxDQUFDLEVBQUFnRCxLQUFBLEdBRUFDLGtCQUFrQixDQUFDLG1DQUFtQyxDQUFDLEVBQUF2QyxJQUFBLENBQUF3QyxNQUFBLElBQUFDLE9BQUEsSUFBQUMsT0FBQSwwQkFBQUMsWUFBQTtJQUFBQyxjQUFBLENBQUE3QyxZQUFBLEVBQUE0QyxZQUFBO0lBQUEsU0FBQTVDLGFBQUE7TUFBQSxJQUFBOEMsS0FBQTtNQUFBLFNBQUFDLElBQUEsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLEVBQUFDLElBQUEsT0FBQUMsS0FBQSxDQUFBSixJQUFBLEdBQUFLLElBQUEsTUFBQUEsSUFBQSxHQUFBTCxJQUFBLEVBQUFLLElBQUE7UUFBQUYsSUFBQSxDQUFBRSxJQUFBLElBQUFKLFNBQUEsQ0FBQUksSUFBQTtNQUFBO01BQUFOLEtBQUEsR0FBQUYsWUFBQSxDQUFBUyxJQUFBLFVBQUFILElBQUE7TUFBQUksMEJBQUEsQ0FBQVIsS0FBQSxxREFBQVMsV0FBQSxFQUFBQyxzQkFBQSxDQUFBVixLQUFBO01BQUFBLEtBQUEsQ0FlaERXLFdBQVcsR0FBV25FLFdBQVcsQ0FBQ29FLE1BQU07TUFBQVosS0FBQSxDQUV4Q2EsZ0JBQWdCLEdBQXVCLEVBQUU7TUFBQWIsS0FBQSxDQU16Q2MsbUJBQW1CLEdBQUcsS0FBSztNQUFBZCxLQUFBLENBRTVCZSxTQUFTLEdBQUcsS0FBSztNQUFBZixLQUFBLENBRWpCZ0Isd0JBQXdCLEdBQTZCLENBQUMsQ0FBQztNQUFBLE9BQUFoQixLQUFBO0lBQUE7SUFFOUQ7QUFDRDtBQUNBO0lBRkMsSUFBQWlCLE1BQUEsR0FBQS9ELFlBQUEsQ0FBQWdFLFNBQUE7SUFBQUQsTUFBQSxDQUtBRSxhQUFhLEdBQWIsU0FBQUEsY0FBQSxFQUF5QjtNQUFBLElBQUFDLHFCQUFBLEVBQUFDLHNCQUFBO01BQ3hCLE1BQU1DLFlBQVksR0FBRyxJQUFJLENBQUNDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQztNQUNyRCxPQUFPLENBQUFELFlBQVksYUFBWkEsWUFBWSx3QkFBQUYscUJBQUEsR0FBWkUsWUFBWSxDQUFFckMsT0FBTyxjQUFBbUMscUJBQUEsd0JBQUFDLHNCQUFBLEdBQXJCRCxxQkFBQSxDQUF1Qi9ELE1BQU0sY0FBQWdFLHNCQUFBLHVCQUE3QkEsc0JBQUEsQ0FBK0JsQyxXQUFXLE1BQUt6QyxPQUFPLENBQUNDLEdBQUcsQ0FBQ0csV0FBVztJQUM5RSxDQUFDO0lBQUFtRSxNQUFBLENBRURPLGlCQUFpQixHQUFqQixTQUFBQSxrQkFBa0JWLG1CQUE0QixFQUFRO01BQ3JELElBQUksQ0FBQ0EsbUJBQW1CLEdBQUdBLG1CQUFtQjtJQUMvQyxDQUFDO0lBQUFHLE1BQUEsQ0FFRFEsZ0JBQWdCLEdBQWhCLFNBQUFBLGlCQUFBLEVBQTRCO01BQzNCLE9BQU8sSUFBSSxDQUFDWCxtQkFBbUI7SUFDaEM7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQVBDO0lBQUFHLE1BQUEsQ0FRTVMsd0JBQXdCLEdBQTlCLGVBQUFBLHlCQUFBLEVBQWdEO01BQy9DO01BQ0EsT0FBT0MsT0FBTyxDQUFDQyxPQUFPLENBQUMsQ0FBQztJQUN6Qjs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FSQztJQUFBWCxNQUFBLENBU0FZLHVCQUF1QixHQUF2QixTQUFBQSx3QkFBd0JDLE1BQWMsRUFBRUMsSUFBWSxFQUFFQyxLQUFjLEVBQVE7TUFBQSxJQUFBQyxlQUFBLEVBQUFDLG1CQUFBO01BQzNFLE1BQU0zRSxRQUFRLEdBQUc0RSxtQkFBbUIsQ0FBQyxJQUFJLENBQUNDLFdBQVcsQ0FBQyxDQUFDLEVBQUVOLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBb0I7TUFDNUcsSUFDQ0QsSUFBSSxLQUFLLDRCQUE0QixJQUNyQyxDQUFDeEUsUUFBUSxhQUFSQSxRQUFRLHdCQUFBMEUsZUFBQSxHQUFSMUUsUUFBUSxDQUFHLFFBQVEsQ0FBQyxjQUFBMEUsZUFBQSx3QkFBQUMsbUJBQUEsR0FBckJELGVBQUEsQ0FBb0UsS0FBSyxDQUFDLGNBQUFDLG1CQUFBLHVCQUExRUEsbUJBQUEsQ0FBNkUsd0JBQXdCLENBQUMsTUFBS0YsS0FBSyxFQUMvRztRQUNELElBQUksQ0FBQ0ssMEJBQTBCLENBQUMsQ0FBQyxDQUFDQyxhQUFhLENBQUMsd0JBQXdCLEVBQUVOLEtBQUssQ0FBQztNQUNqRjtJQUNEOztJQUVBO0FBQ0Q7QUFDQSxPQUZDO0lBQUFmLE1BQUEsQ0FHQXNCLDZCQUE2QixHQUE3QixTQUFBQSw4QkFBQSxFQUFzQztNQUNyQyxJQUFJLENBQUN2Qix3QkFBd0IsR0FBRyxDQUFDLENBQUM7SUFDbkM7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQSxPQUpDO0lBQUFDLE1BQUEsQ0FLQXVCLGNBQWMsR0FBZCxTQUFBQSxlQUFBLEVBQThCO01BQzdCLE9BQU8sSUFBSSxDQUFDQyxhQUFhO0lBQzFCOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsT0FKQztJQUFBeEIsTUFBQSxDQUtBeUIsa0JBQWtCLEdBQWxCLFNBQUFBLG1CQUFBLEVBQXNDO01BQ3JDLE9BQU8sSUFBSSxDQUFDQyxpQkFBaUI7SUFDOUI7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQSxPQUpDO0lBQUExQixNQUFBLENBS0EyQixxQkFBcUIsR0FBckIsU0FBQUEsc0JBQUEsRUFBZ0Q7TUFDL0MsT0FBTyxJQUFJLENBQUNDLGNBQWMsQ0FBQyxDQUFDLENBQUNDLGFBQWEsQ0FBQyxDQUFDO0lBQzdDOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsT0FKQztJQUFBN0IsTUFBQSxDQUtBOEIsZ0JBQWdCLEdBQWhCLFNBQUFBLGlCQUFBLEVBQXdEO01BQ3ZELE9BQU8sSUFBSSxDQUFDRixjQUFjLENBQUMsQ0FBQyxDQUFDRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3Qzs7SUFFQTtBQUNEO0FBQ0E7QUFDQSxPQUhDO0lBQUEvQixNQUFBLENBSUFnQyxjQUFjLEdBQWQsU0FBQUEsZUFBQSxFQUF5QjtNQUN4QixPQUFPLElBQUksQ0FBQ3RDLFdBQVc7SUFDeEI7O0lBRUE7QUFDRDtBQUNBO0FBQ0EsT0FIQztJQUFBTSxNQUFBLENBSUFpQyxvQkFBb0IsR0FBcEIsU0FBQUEscUJBQUEsRUFBNkI7TUFDNUIsSUFBSSxDQUFDdkMsV0FBVyxHQUFHbkUsV0FBVyxDQUFDMkcsTUFBTTtJQUN0Qzs7SUFFQTtBQUNEO0FBQ0E7QUFDQSxPQUhDO0lBQUFsQyxNQUFBLENBSUFtQyx3QkFBd0IsR0FBeEIsU0FBQUEseUJBQUEsRUFBaUM7TUFDaEMsSUFBSSxDQUFDekMsV0FBVyxHQUFHbkUsV0FBVyxDQUFDNkcsVUFBVTtJQUMxQzs7SUFFQTtBQUNEO0FBQ0E7QUFDQSxPQUhDO0lBQUFwQyxNQUFBLENBSUFxQyxzQkFBc0IsR0FBdEIsU0FBQUEsdUJBQUEsRUFBK0I7TUFDOUIsSUFBSSxDQUFDM0MsV0FBVyxHQUFHbkUsV0FBVyxDQUFDK0csUUFBUTtJQUN4QyxDQUFDO0lBQUF0QyxNQUFBLENBRUR1QyxJQUFJLEdBQUosU0FBQUEsS0FBQSxFQUFhO01BQUEsSUFBQUMsV0FBQSxFQUFBQyxxQkFBQSxFQUFBQyxzQkFBQTtNQUNaLElBQUksQ0FBQ0Msa0JBQWtCLEdBQUcsSUFBSUMsYUFBYSxDQUFPLENBQUM7TUFDbkQsSUFBSSxDQUFDQyxXQUFXLEdBQUcsSUFBSSxDQUFDRixrQkFBa0IsQ0FBQ0csT0FBTztNQUNsRCxNQUFNQyxPQUFPLEdBQUcsSUFBSUMsU0FBUyxDQUFDO1FBQzdCQyxRQUFRLEVBQUV6SCxPQUFPLENBQUMwSCxRQUFRLENBQUNDLE9BQU87UUFDbENDLFVBQVUsRUFBRSxLQUFLO1FBQ2pCQyxXQUFXLEVBQUU3SCxPQUFPLENBQUM4SCxXQUFXLENBQUNDLEtBQUs7UUFDdENDLElBQUksRUFBRSxLQUFLO1FBQ1hDLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDYkMsS0FBSyxFQUFFLENBQUM7TUFDVCxDQUFDLENBQUM7TUFDRixNQUFNQyxjQUFjLEdBQUcsSUFBSVgsU0FBUyxDQUFDO1FBQ3BDVSxLQUFLLEVBQUUsQ0FBQztNQUNULENBQUMsQ0FBQztNQUNGO01BQ0FYLE9BQU8sQ0FBQ2EscUJBQXFCLENBQUMsUUFBUSxDQUFDO01BQ3ZDO01BQ0FDLFdBQVcsQ0FBQ0Msa0JBQWtCLENBQUNmLE9BQU8sRUFBRXZILE9BQU8sQ0FBQztNQUNoRHFJLFdBQVcsQ0FBQ0Usd0JBQXdCLENBQUNKLGNBQWMsQ0FBQztNQUVwRCxJQUFJLENBQUNLLFFBQVEsQ0FBQ2pCLE9BQU8sRUFBRSxJQUFJLENBQUM7TUFDNUIsSUFBSSxDQUFDaUIsUUFBUSxDQUFDTCxjQUFjLEVBQUUsVUFBVSxDQUFDO01BRXpDLElBQUksQ0FBQ00sa0JBQWtCLEdBQUcsSUFBSSxDQUFDQSxrQkFBa0IsS0FBS0MsU0FBUyxHQUFHLElBQUksQ0FBQ0Qsa0JBQWtCLEdBQUcsSUFBSTtNQUNoRyxJQUFJLENBQUN6QyxhQUFhLEdBQUcsSUFBSTJDLFdBQVcsQ0FBQyxDQUFDO01BQ3RDLElBQUksQ0FBQ3pDLGlCQUFpQixHQUFHLElBQUkwQyxlQUFlLENBQUMsSUFBSSxDQUFDO01BQ2xELElBQUksQ0FBQ0MsYUFBYSxHQUFHLElBQUlDLFdBQVcsQ0FBQyxDQUFDO01BRXRDLE1BQU1DLE1BQU0sR0FBRyxJQUFJLENBQUNDLFFBQVEsQ0FBQyxDQUFDO01BQzlCLElBQUlELE1BQU0sYUFBTkEsTUFBTSxnQkFBQS9CLFdBQUEsR0FBTitCLE1BQU0sQ0FBRUUsR0FBRyxjQUFBakMsV0FBQSxlQUFYQSxXQUFBLENBQUFsRCxJQUFBLENBQUFpRixNQUFNLEVBQW9CLGtDQUFrQyxDQUFDLEVBQUU7UUFDbEVWLFdBQVcsQ0FBQ2EsaUJBQWlCLENBQUNILE1BQU0sRUFBRSxJQUFJLENBQUM7UUFDM0NBLE1BQU0sQ0FBQ0ksb0JBQW9CLENBQUMsSUFBSSxDQUFDQyxtQkFBbUIsQ0FBQ0MsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQ0MsZUFBZSxHQUFHUCxNQUFNLENBQUNRLFlBQVksQ0FBQyxDQUFDLENBQUNDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQztNQUNqRixDQUFDLE1BQU07UUFDTjtRQUNBLElBQUksQ0FBQ0YsZUFBZSxHQUFHcEUsT0FBTyxDQUFDQyxPQUFPLENBQUMsQ0FBQztNQUN6QztNQUVBLEtBQUE4QixxQkFBQSxHQUFJLElBQUksQ0FBQ25DLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxjQUFBbUMscUJBQUEsZ0JBQUFDLHNCQUFBLEdBQS9CRCxxQkFBQSxDQUFpQ3dDLEdBQUcsY0FBQXZDLHNCQUFBLGVBQXBDQSxzQkFBQSxDQUFzQ3dDLHlCQUF5QixFQUFFO1FBQ3BFO1FBQ0E7UUFDQTtRQUNBckIsV0FBVyxDQUFDcUIseUJBQXlCLEdBQUcsSUFBSTtNQUM3QztNQUVBLE1BQU03RSxZQUFZLEdBQUcsSUFBSSxDQUFDYyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztNQUNsRCxJQUFJLENBQUNnRSx5QkFBeUIsQ0FBQzlFLFlBQVksQ0FBQzs7TUFFNUM7TUFDQTs7TUFFQXhCLFlBQUEsQ0FBQW9CLFNBQUEsQ0FBTXNDLElBQUksQ0FBQWpELElBQUE7TUFDVnJELFlBQVksQ0FBQ21KLFdBQVcsQ0FBQyxJQUFJLENBQUNDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJO0lBQzlDLENBQUM7SUFBQXJGLE1BQUEsQ0FFYTRFLG1CQUFtQixHQUFqQyxlQUFBQSxvQkFBa0NVLEtBQW9DLEVBQXNCO01BQzNGLE9BQU9DLGNBQWMsQ0FBQ0MsY0FBYyxDQUFDRixLQUFLLEVBQUUsSUFBSSxDQUFDMUQsY0FBYyxDQUFDLENBQUMsRUFBRTZELGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFBQXpGLE1BQUEsQ0FFT21GLHlCQUF5QixHQUFqQyxTQUFBQSwwQkFBa0M5RSxZQUF3QyxFQUFRO01BQUEsSUFBQXFGLHFCQUFBO01BQ2pGLElBQUlyRixZQUFZLGFBQVpBLFlBQVksZ0JBQUFxRixxQkFBQSxHQUFackYsWUFBWSxDQUFFMUMsUUFBUSxjQUFBK0gscUJBQUEsZUFBdEJBLHFCQUFBLENBQXdCOUgsUUFBUSxFQUFFO1FBQUEsSUFBQStILHNCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBO1FBQ3JDOztRQUVBO1FBQ0EsSUFBSTNGLFlBQVksQ0FBQzFDLFFBQVEsQ0FBQ0MsUUFBUSxLQUFLbkMsT0FBTyxDQUFDQyxHQUFHLENBQUNFLHNCQUFzQixFQUFFO1VBQzFFeUUsWUFBWSxDQUFDMUMsUUFBUSxDQUFDQyxRQUFRLEdBQUduQyxPQUFPLENBQUNDLEdBQUcsQ0FBQ0MsUUFBUTtRQUN0RCxDQUFDLE1BQU0sSUFBSTBFLFlBQVksQ0FBQzFDLFFBQVEsQ0FBQ0MsUUFBUSxLQUFLbkMsT0FBTyxDQUFDSyxZQUFZLENBQUNGLHNCQUFzQixFQUFFO1VBQzFGeUUsWUFBWSxDQUFDMUMsUUFBUSxDQUFDQyxRQUFRLEdBQUduQyxPQUFPLENBQUNLLFlBQVksQ0FBQ0gsUUFBUTtRQUMvRDtRQUVBLElBQ0MwRSxZQUFZLENBQUMxQyxRQUFRLENBQUNDLFFBQVEsS0FBS25DLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDQyxRQUFRLElBQ3ZELEVBQUFnSyxzQkFBQSxHQUFBdEYsWUFBWSxDQUFDckMsT0FBTyxjQUFBMkgsc0JBQUEsd0JBQUFDLHNCQUFBLEdBQXBCRCxzQkFBQSxDQUFzQnZKLE1BQU0sY0FBQXdKLHNCQUFBLHVCQUE1QkEsc0JBQUEsQ0FBOEIxSCxXQUFXLE1BQUt6QyxPQUFPLENBQUNDLEdBQUcsQ0FBQ0csV0FBVyxFQUNwRTtVQUNEb0ssR0FBRyxDQUFDQyxJQUFJLENBQUMsbUJBQW1CekssT0FBTyxDQUFDQyxHQUFHLENBQUNDLFFBQVEscUJBQXFCRixPQUFPLENBQUNDLEdBQUcsQ0FBQ0csV0FBVyxHQUFHLENBQUM7UUFDakcsQ0FBQyxNQUFNLElBQ053RSxZQUFZLENBQUMxQyxRQUFRLENBQUNDLFFBQVEsS0FBS25DLE9BQU8sQ0FBQ0ssWUFBWSxDQUFDSCxRQUFRLElBQ2hFLEVBQUFrSyxzQkFBQSxHQUFBeEYsWUFBWSxDQUFDckMsT0FBTyxjQUFBNkgsc0JBQUEsd0JBQUFDLHNCQUFBLEdBQXBCRCxzQkFBQSxDQUFzQnpKLE1BQU0sY0FBQTBKLHNCQUFBLHVCQUE1QkEsc0JBQUEsQ0FBOEI1SCxXQUFXLE1BQUt6QyxPQUFPLENBQUNLLFlBQVksQ0FBQ0QsV0FBVyxFQUM3RTtVQUNEb0ssR0FBRyxDQUFDQyxJQUFJLENBQUMsbUJBQW1CekssT0FBTyxDQUFDSyxZQUFZLENBQUNILFFBQVEscUJBQXFCRixPQUFPLENBQUNLLFlBQVksQ0FBQ0QsV0FBVyxHQUFHLENBQUM7UUFDbkgsQ0FBQyxNQUFNLEtBQUFrSyxzQkFBQSxHQUFJMUYsWUFBWSxDQUFDMUMsUUFBUSxjQUFBb0ksc0JBQUEsZ0JBQUFDLHNCQUFBLEdBQXJCRCxzQkFBQSxDQUF1Qm5JLFFBQVEsY0FBQW9JLHNCQUFBLGVBQS9CQSxzQkFBQSxDQUFpQ0csUUFBUSxDQUFDLHNCQUFzQixDQUFDLEVBQUU7VUFBQSxJQUFBQyxzQkFBQSxFQUFBQyxzQkFBQTtVQUM3RSxNQUFNQyxLQUFLLENBQ1YsaUZBQWlGLEdBQ2hGLHdCQUF3QmpHLFlBQVksQ0FBQzFDLFFBQVEsQ0FBQ0MsUUFBUSxJQUNyRCxFQUFBd0ksc0JBQUEsR0FBQS9GLFlBQVksQ0FBQ3JDLE9BQU8sY0FBQW9JLHNCQUFBLHdCQUFBQyxzQkFBQSxHQUFwQkQsc0JBQUEsQ0FBc0JoSyxNQUFNLGNBQUFpSyxzQkFBQSx1QkFBNUJBLHNCQUFBLENBQThCbkksV0FBVyxLQUFJLHdCQUF3QixLQUNqRSxHQUNMLHdCQUF3QixHQUN4QixTQUFTekMsT0FBTyxDQUFDSyxZQUFZLENBQUNILFFBQVEsSUFBSUYsT0FBTyxDQUFDSyxZQUFZLENBQUNELFdBQVcsS0FBSyxHQUMvRSxTQUFTSixPQUFPLENBQUNDLEdBQUcsQ0FBQ0MsUUFBUSxJQUFJRixPQUFPLENBQUNDLEdBQUcsQ0FBQ0csV0FBVyxHQUMxRCxDQUFDO1FBQ0YsQ0FBQyxNQUFNO1VBQ05vSyxHQUFHLENBQUNDLElBQUksQ0FBQyxtQkFBbUI3RixZQUFZLENBQUMxQyxRQUFRLENBQUNDLFFBQVEscUJBQXFCbkMsT0FBTyxDQUFDSyxZQUFZLENBQUNELFdBQVcsR0FBRyxDQUFDO1FBQ3BIO01BQ0Q7SUFDRCxDQUFDO0lBQUFtRSxNQUFBLENBRUt1RyxpQkFBaUIsR0FBdkIsZUFBQUEsa0JBQXdCQyxXQUErQixFQUFpQjtNQUN2RSxJQUFJLENBQUM1RyxnQkFBZ0IsR0FBRzRHLFdBQVc7TUFDbkMsTUFBTSxJQUFJLENBQUMvRix3QkFBd0IsQ0FBQyxDQUFDO01BQ3JDLE1BQU1DLE9BQU8sQ0FBQytGLFVBQVUsQ0FDdkJ4SyxZQUFZLENBQUN5SywwQkFBMEIsQ0FBQ0MsR0FBRyxDQUFDLE1BQU9DLFNBQVMsSUFBSztRQUNoRSxPQUFPQSxTQUFTLENBQUN0SCxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztNQUNsQyxDQUFDLENBQ0YsQ0FBQzs7TUFFRDtNQUNBO01BQ0EsTUFBTXVILDhCQUE4QixHQUFHQSxDQUFBLEtBQVk7UUFDbEQsSUFBSSxDQUFDL0IsZUFBZSxDQUNsQmdDLElBQUksQ0FBQyxZQUFZO1VBQ2pCLElBQUksSUFBSSxDQUFDbkYscUJBQXFCLENBQUMsQ0FBQyxDQUFDb0YsbUJBQW1CLEVBQUU7WUFDckQsSUFBSSxDQUFDcEYscUJBQXFCLENBQUMsQ0FBQyxDQUFDb0YsbUJBQW1CLENBQUMsQ0FBQztVQUNuRDtVQUNBLElBQUksQ0FBQ0MsU0FBUyxDQUFDLENBQUMsQ0FBQ0MsVUFBVSxDQUFDLENBQUM7VUFDN0IsSUFBSSxDQUFDMUYsY0FBYyxDQUFDLENBQUMsQ0FBQ2dCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDckMsYUFBYSxDQUFDLENBQUMsQ0FBQztVQUV0RCxPQUFPLElBQUksQ0FBQ2dILDBCQUEwQixDQUFDLENBQUMsQ0FBQ0MsaUJBQWlCLENBQUMsQ0FBQztRQUM3RCxDQUFDLENBQUMsQ0FDREMsS0FBSyxDQUFFOUIsS0FBWSxJQUFLO1VBQ3hCLE1BQU0rQixlQUFlLEdBQUdDLE9BQU8sQ0FBQ0Msb0JBQW9CLENBQUMsYUFBYSxDQUFFO1VBRXBFLElBQUksQ0FBQzVGLHFCQUFxQixDQUFDLENBQUMsQ0FBQzZGLGdCQUFnQixDQUM1Q0gsZUFBZSxDQUFDSSxPQUFPLENBQUMsaURBQWlELENBQUMsRUFDMUU7WUFDQ0MsS0FBSyxFQUFFTCxlQUFlLENBQUNJLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQztZQUN0REUsV0FBVyxFQUFFckMsS0FBSyxDQUFDc0M7VUFDcEIsQ0FDRCxDQUFDO1FBQ0YsQ0FBQyxDQUFDO01BQ0osQ0FBQztNQUVELElBQUksSUFBSSxDQUFDM0Qsa0JBQWtCLEVBQUU7UUFDNUIsT0FBTyxJQUFJLENBQUM0RCxpQkFBaUIsQ0FBQyxDQUFDLENBQzdCQyxpQkFBaUIsQ0FBQyxDQUFDLENBQ25CaEIsSUFBSSxDQUFDLE1BQU07VUFDWCxJQUFJLElBQUksQ0FBQ25GLHFCQUFxQixDQUFDLENBQUMsRUFBRTtZQUNqQ2tGLDhCQUE4QixDQUFDLENBQUM7VUFDakMsQ0FBQyxNQUFNO1lBQ04sSUFBSSxDQUFDakYsY0FBYyxDQUFDLENBQUMsQ0FBQ21HLGVBQWUsQ0FBQyxZQUFZO2NBQ2pEbEIsOEJBQThCLENBQUMsQ0FBQztZQUNqQyxDQUFDLENBQUM7VUFDSDtVQUNBLElBQUksQ0FBQ2xFLGtCQUFrQixDQUFDaEMsT0FBTyxDQUFDLENBQUM7VUFDakM7UUFDRCxDQUFDLENBQUMsQ0FDRHlHLEtBQUssQ0FBQyxVQUFVWSxHQUFVLEVBQUU7VUFDNUIvQixHQUFHLENBQUNYLEtBQUssQ0FBQyxxQ0FBcUMwQyxHQUFHLENBQUNDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNqRSxDQUFDLENBQUM7TUFDSixDQUFDLE1BQU07UUFDTixJQUFJLENBQUN0RixrQkFBa0IsQ0FBQ2hDLE9BQU8sQ0FBQyxDQUFDO01BQ2xDO0lBQ0QsQ0FBQztJQUFBWCxNQUFBLENBRURrSSxJQUFJLEdBQUosU0FBQUEsS0FBQSxFQUFhO01BQ1osSUFBSSxDQUFDdEksZ0JBQWdCLEdBQUcsRUFBRTtNQUMxQixJQUFJLENBQUM4QixpQkFBaUIsQ0FBQ3lHLE9BQU8sQ0FBQyxDQUFDO01BQ2hDLElBQUksQ0FBQzNHLGFBQWEsQ0FBQzJHLE9BQU8sQ0FBQyxDQUFDO01BQzVCO01BQ0E7TUFDQSxPQUFPLElBQUksQ0FBQ3pHLGlCQUFpQjtNQUM3QjtNQUNBO01BQ0EsT0FBTyxJQUFJLENBQUNGLGFBQWE7TUFDekI0RyxvQkFBb0IsQ0FBQyxJQUFJLENBQUNyRCxZQUFZLENBQUMsQ0FBQyxDQUFDO01BQ3pDLElBQUksQ0FBQ1AsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDMkQsT0FBTyxDQUFDLENBQUM7TUFDN0IsSUFBSSxDQUFDN0csNkJBQTZCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBQUF0QixNQUFBLENBRUQrRSxZQUFZLEdBQVosU0FBQUEsYUFBQSxFQUErQjtNQUM5QixPQUFPLElBQUksQ0FBQ1AsUUFBUSxDQUFDLENBQUMsQ0FBQ08sWUFBWSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUFBL0UsTUFBQSxDQUVEcUksY0FBYyxHQUFkLFNBQUFBLGVBQUEsRUFBOEI7TUFDN0IsT0FBTyxJQUFJLENBQUNoRSxhQUFhO0lBQzFCLENBQUM7SUFBQXJFLE1BQUEsQ0FFRG1JLE9BQU8sR0FBUCxTQUFBQSxRQUFRRyxtQkFBNkIsRUFBUTtNQUFBLElBQUFDLHFCQUFBLEVBQUFDLHNCQUFBO01BQzVDLElBQUksQ0FBQzFJLFNBQVMsR0FBRyxJQUFJOztNQUVyQjtNQUNBLElBQUk7UUFDSCxPQUFPN0QsWUFBWSxDQUFDbUosV0FBVyxDQUFDLElBQUksQ0FBQ0MsS0FBSyxDQUFDLENBQUMsQ0FBQzs7UUFFN0M7UUFDQTtRQUNBLE9BQVFvRCxNQUFNLENBQWFDLFFBQVE7TUFDcEMsQ0FBQyxDQUFDLE9BQU9DLENBQUMsRUFBRTtRQUNYMUMsR0FBRyxDQUFDQyxJQUFJLENBQUN5QyxDQUFXLENBQUM7TUFDdEI7O01BRUE7TUFDQTs7TUFFQTtNQUNBO01BQ0EsTUFBTUMsVUFBVSxHQUFHLElBQUksQ0FBQ0MsT0FBTyxDQUFDM0UsU0FBUyxDQUFDO01BQzFDLElBQUk0RSxRQUFRO01BQ1osSUFBSUYsVUFBVSxhQUFWQSxVQUFVLGVBQVZBLFVBQVUsQ0FBRUcsVUFBVSxFQUFFO1FBQzNCRCxRQUFRLEdBQUdFLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFTCxVQUFVLENBQUNHLFVBQVUsQ0FBQ0csUUFBUSxDQUFDO01BQzdEOztNQUVBO01BQ0EsQ0FBQVgscUJBQUEsT0FBSSxDQUFDVixpQkFBaUIsQ0FBQyxDQUFDLGNBQUFVLHFCQUFBLHdCQUFBQyxzQkFBQSxHQUF4QkQscUJBQUEsQ0FBMEJZLFVBQVUsY0FBQVgsc0JBQUEsdUJBQXBDQSxzQkFBQSxDQUFBbEosSUFBQSxDQUFBaUoscUJBQXVDLENBQUM7TUFDeEMxSixZQUFBLENBQUFvQixTQUFBLENBQU1rSSxPQUFPLENBQUE3SSxJQUFBLE9BQUNnSixtQkFBbUI7TUFDakMsSUFBSVEsUUFBUSxJQUFJRixVQUFVLENBQUNHLFVBQVUsRUFBRTtRQUN0Q0gsVUFBVSxDQUFDRyxVQUFVLENBQUNHLFFBQVEsR0FBR0osUUFBUTtNQUMxQztJQUNELENBQUM7SUFBQTlJLE1BQUEsQ0FFRDZILGlCQUFpQixHQUFqQixTQUFBQSxrQkFBQSxFQUFvQztNQUNuQyxPQUFPLENBQUMsQ0FBQyxDQUFtQixDQUFDO0lBQzlCLENBQUM7SUFBQTdILE1BQUEsQ0FFRG9KLGdCQUFnQixHQUFoQixTQUFBQSxpQkFBQSxFQUFtQztNQUNsQyxPQUFPLENBQUMsQ0FBQyxDQUFtQixDQUFDO0lBQzlCLENBQUM7SUFBQXBKLE1BQUEsQ0FFRHFKLG9CQUFvQixHQUFwQixTQUFBQSxxQkFBQSxFQUEwQztNQUN6QyxPQUFPLENBQUMsQ0FBQyxDQUFzQixDQUFDO0lBQ2pDLENBQUM7SUFBQXJKLE1BQUEsQ0FFRHNKLHFCQUFxQixHQUFyQixTQUFBQSxzQkFBQSxFQUE0QztNQUMzQyxPQUFPLENBQUMsQ0FBQztJQUNWLENBQUM7SUFBQXRKLE1BQUEsQ0FFRG9CLDBCQUEwQixHQUExQixTQUFBQSwyQkFBQSxFQUE2RDtNQUM1RCxPQUFPLENBQUMsQ0FBQztJQUNWLENBQUM7SUFBQXBCLE1BQUEsQ0FFRHVKLDhCQUE4QixHQUE5QixTQUFBQSwrQkFBQSxFQUE4RDtNQUM3RCxPQUFPLENBQUMsQ0FBQztJQUNWLENBQUM7SUFBQXZKLE1BQUEsQ0FFRHdKLDRCQUE0QixHQUE1QixTQUFBQSw2QkFBQSxFQUEwRDtNQUN6RCxPQUFPLENBQUMsQ0FBQztJQUNWLENBQUM7SUFBQXhKLE1BQUEsQ0FFRHlKLDRCQUE0QixHQUE1QixTQUFBQSw2QkFBQSxFQUEwRDtNQUN6RCxPQUFPLENBQUMsQ0FBQztJQUNWLENBQUM7SUFBQXpKLE1BQUEsQ0FFRDBKLHdCQUF3QixHQUF4QixTQUFBQSx5QkFBQSxFQUFrRDtNQUNqRCxPQUFPLENBQUMsQ0FBQztJQUNWLENBQUM7SUFBQTFKLE1BQUEsQ0FFRDJKLG1CQUFtQixHQUFuQixTQUFBQSxvQkFBQSxFQUF3QztNQUN2QyxPQUFPLENBQUMsQ0FBQztJQUNWLENBQUM7SUFBQTNKLE1BQUEsQ0FFRGtILDBCQUEwQixHQUExQixTQUFBQSwyQkFBQSxFQUFzRDtNQUNyRCxPQUFPLENBQUMsQ0FBQztJQUNWLENBQUM7SUFBQWxILE1BQUEsQ0FFSzRKLG9CQUFvQixHQUExQixlQUFBQSxxQkFBQSxFQUF5RDtNQUN4RCxNQUFNQyxjQUFjLEdBQUcsSUFBSSxDQUFDQyxnQkFBZ0IsQ0FBQyxDQUFDO01BQzlDLE9BQU9wSixPQUFPLENBQUNDLE9BQU8sQ0FBRWtKLGNBQWMsSUFBSUEsY0FBYyxDQUFDRSxpQkFBaUIsSUFBSyxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBQUEvSixNQUFBLENBRURnSyxPQUFPLEdBQVAsU0FBQUEsUUFBQSxFQUFnQjtNQUNmO01BQ0EsS0FBSyxNQUFNQyxjQUFjLElBQUksSUFBSSxDQUFDckssZ0JBQWdCLEVBQUU7UUFBQSxJQUFBc0sscUJBQUE7UUFDbkQsQ0FBQUEscUJBQUEsR0FBQUQsY0FBYyxDQUFDRSxTQUFTLGNBQUFELHFCQUFBLHVCQUF4QkEscUJBQUEsQ0FBQTVLLElBQUEsQ0FBQTJLLGNBQTJCLENBQUM7TUFDN0I7TUFDQSxJQUFJLENBQUN0SSxxQkFBcUIsQ0FBQyxDQUFDLENBQUN5SSxTQUFTLENBQUNELFNBQVMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFBQW5LLE1BQUEsQ0FFRHFLLE9BQU8sR0FBUCxTQUFBQSxRQUFBLEVBQWdCO01BQ2Y7TUFDQSxLQUFLLE1BQU1KLGNBQWMsSUFBSSxJQUFJLENBQUNySyxnQkFBZ0IsRUFBRTtRQUFBLElBQUEwSyxxQkFBQTtRQUNuRCxDQUFBQSxxQkFBQSxHQUFBTCxjQUFjLENBQUNNLFNBQVMsY0FBQUQscUJBQUEsdUJBQXhCQSxxQkFBQSxDQUFBaEwsSUFBQSxDQUFBMkssY0FBMkIsQ0FBQztNQUM3QjtNQUNBLElBQUksQ0FBQ3RJLHFCQUFxQixDQUFDLENBQUMsQ0FBQ3lJLFNBQVMsQ0FBQ0csU0FBUyxDQUFDLENBQUM7SUFDbkQ7O0lBRUE7QUFDRDtBQUNBO0FBQ0EsT0FIQztJQUFBdkssTUFBQSxDQUtNd0ssK0JBQStCLEdBQXJDLGVBQUFBLGdDQUFzQ1QsaUJBQXVELEVBQWlCO01BQzdHLElBQUk7UUFDSCxJQUFJLENBQUNVLFVBQVUsQ0FBQ0MsUUFBUSxDQUFDLElBQUksQ0FBQ2xHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1VBQzlDLElBQUksQ0FBQ3VGLGlCQUFpQixFQUFFO1lBQ3ZCQSxpQkFBaUIsR0FBRyxJQUFJO1VBQ3pCO1VBQ0EsTUFBTWpOLGNBQWMsR0FBRyxJQUFJLENBQUMrSyxpQkFBaUIsQ0FBQyxDQUFDO1VBQy9DLE1BQU0vSyxjQUFjLENBQUM2TixzQkFBc0IsQ0FBQ1osaUJBQWlCLENBQUM7UUFDL0Q7TUFDRCxDQUFDLENBQUMsT0FBT2EsU0FBa0IsRUFBRTtRQUM1QjNFLEdBQUcsQ0FBQ1gsS0FBSyxDQUFDc0YsU0FBbUIsQ0FBQztRQUM5QkgsVUFBVSxDQUFDSSxNQUFNLENBQUMsSUFBSSxDQUFDckcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO01BQ3ZDO0lBQ0Q7O0lBRUE7QUFDRDtBQUNBO0FBQ0EsT0FIQztJQUFBeEUsTUFBQSxDQUlBOEssb0NBQW9DLEdBQXBDLFNBQUFBLHFDQUFBLEVBQWdEO01BQy9DLE9BQU8sSUFBSTtJQUNaOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BTkM7SUFBQTdPLFlBQUEsQ0FPTzhPLDBDQUEwQyxHQUFqRCxTQUFBQSwyQ0FBa0RuRSxTQUF3RCxFQUFRO01BQ2pILElBQUksQ0FBQ0YsMEJBQTBCLENBQUNzRSxJQUFJLENBQUNwRSxTQUFTLENBQUM7SUFDaEQsQ0FBQztJQUFBLE9BQUEzSyxZQUFBO0VBQUEsRUFsZHlCZ1AsV0FBVyxHQUFBck0sT0FBQSxDQUk5QndHLFdBQVcsR0FBaUMsQ0FBQyxDQUFDLEVBQUF4RyxPQUFBLENBNkJ0QzhILDBCQUEwQixHQUFzRCxFQUFFLEVBQUE5SCxPQUFBLElBQUFZLFdBQUEsR0FBQTBMLHlCQUFBLENBQUF2TSxPQUFBLENBQUFzQixTQUFBLHNEQUFBekIsS0FBQTtJQUFBMk0sWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQSxXQUFBQSxDQUFBO01BQUEsT0EvQi9DLElBQUk7SUFBQTtFQUFBLEtBQUEzTSxPQUFBLE1BQUFELE1BQUE7RUFBQSxPQXFleEN6QyxZQUFZO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -7,7 +7,7 @@ import HTTP503Handler from "sap/fe/core/helpers/HTTP503Handler";
7
7
  import ModelHelper from "sap/fe/core/helpers/ModelHelper";
8
8
  import PromiseKeeper from "sap/fe/core/helpers/PromiseKeeper";
9
9
  import library from "sap/fe/core/library";
10
- import { changeConfiguration, cleanPageConfigurationChanges } from "sap/fe/core/manifestMerger/ChangePageConfiguration";
10
+ import { changeConfiguration } from "sap/fe/core/manifestMerger/ChangePageConfiguration";
11
11
  import type RootViewBaseController from "sap/fe/core/rootView/RootViewBaseController";
12
12
  import type { CollaborationManagerService } from "sap/fe/core/services/CollaborationManagerServiceFactory";
13
13
  import type { CollaborativeToolsService } from "sap/fe/core/services/CollaborativeToolsServiceFactory";
@@ -198,6 +198,8 @@ class AppComponent extends UIComponent implements IAsyncContentCreation {
198
198
 
199
199
  public isExiting = false;
200
200
 
201
+ public pageConfigurationChanges: Record<string, string[]> = {};
202
+
201
203
  /**
202
204
  * Singleton to hold processes from libraries that need to be run for every instance prior to startup.
203
205
  */
@@ -239,7 +241,7 @@ class AppComponent extends UIComponent implements IAsyncContentCreation {
239
241
  * @public
240
242
  */
241
243
  changePageConfiguration(pageId: string, path: string, value: unknown): void {
242
- const manifest = changeConfiguration(this.getManifest(), pageId, path, value, true) as ManifestContent;
244
+ const manifest = changeConfiguration(this.getManifest(), pageId, path, value, true, this) as ManifestContent;
243
245
  if (
244
246
  path === "app/disableInputAssistance" &&
245
247
  (manifest?.["sap.fe"] as Record<string, Record<string, boolean>>)?.["app"]?.["disableInputAssistance"] === value
@@ -248,6 +250,13 @@ class AppComponent extends UIComponent implements IAsyncContentCreation {
248
250
  }
249
251
  }
250
252
 
253
+ /**
254
+ * Clears all registered page configuration changes.
255
+ */
256
+ cleanPageConfigurationChanges(): void {
257
+ this.pageConfigurationChanges = {};
258
+ }
259
+
251
260
  /**
252
261
  * Get a reference to the RouterProxy.
253
262
  * @returns A Reference to the RouterProxy
@@ -481,7 +490,7 @@ class AppComponent extends UIComponent implements IAsyncContentCreation {
481
490
  delete this._oRouterProxy;
482
491
  deleteModelCacheData(this.getMetaModel());
483
492
  this.getModel("ui").destroy();
484
- cleanPageConfigurationChanges();
493
+ this.cleanPageConfigurationChanges();
485
494
  }
486
495
 
487
496
  getMetaModel(): ODataMetaModel {