@sapui5/sap.fe.core 1.141.2 → 1.143.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/core/.library +4 -1
- package/src/sap/fe/core/ActionRuntime.js +78 -23
- package/src/sap/fe/core/ActionRuntime.ts +91 -35
- package/src/sap/fe/core/AppComponent.js +76 -6
- package/src/sap/fe/core/AppComponent.ts +91 -8
- package/src/sap/fe/core/AppStateHandler.js +7 -7
- package/src/sap/fe/core/AppStateHandler.ts +9 -8
- package/src/sap/fe/core/BaseController.js +8 -5
- package/src/sap/fe/core/BaseController.ts +6 -1
- package/src/sap/fe/core/CommonUtils.js +4 -123
- package/src/sap/fe/core/CommonUtils.ts +3 -172
- package/src/sap/fe/core/ExtensionAPI.js +3 -11
- package/src/sap/fe/core/ExtensionAPI.ts +3 -16
- package/src/sap/fe/core/PageController.js +64 -43
- package/src/sap/fe/core/PageController.ts +62 -47
- package/src/sap/fe/core/TemplateComponent.js +12 -1
- package/src/sap/fe/core/TemplateComponent.ts +16 -2
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +37 -24
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +47 -31
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.js +1 -1
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.ts +4 -0
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +4 -1
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +3 -0
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.js +5 -3
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.ts +5 -2
- package/src/sap/fe/core/controllerextensions/BaseControllerExtension.js +7 -5
- package/src/sap/fe/core/controllerextensions/BaseControllerExtension.ts +22 -2
- package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +82 -44
- package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +92 -59
- package/src/sap/fe/core/controllerextensions/EditFlow.js +74 -48
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +87 -50
- package/src/sap/fe/core/controllerextensions/InlineEditFlow.js +9 -7
- package/src/sap/fe/core/controllerextensions/InlineEditFlow.ts +17 -5
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +37 -18
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +49 -17
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +30 -15
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +32 -14
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +9 -10
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +10 -9
- package/src/sap/fe/core/controllerextensions/Paginator.js +2 -2
- package/src/sap/fe/core/controllerextensions/Paginator.ts +1 -1
- package/src/sap/fe/core/controllerextensions/Placeholder.js +10 -2
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +5 -1
- package/src/sap/fe/core/controllerextensions/Recommendations.js +3 -3
- package/src/sap/fe/core/controllerextensions/Recommendations.ts +2 -2
- package/src/sap/fe/core/controllerextensions/Routing.js +4 -4
- package/src/sap/fe/core/controllerextensions/Routing.ts +3 -6
- package/src/sap/fe/core/controllerextensions/Share.js +5 -5
- package/src/sap/fe/core/controllerextensions/Share.ts +4 -4
- package/src/sap/fe/core/controllerextensions/SideEffects.js +1 -1
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +17 -2
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +2 -2
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +3 -3
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.tsx +3 -2
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +49 -21
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +64 -24
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +37 -3
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +41 -8
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +10 -4
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +6 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.js +6 -7
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.ts +5 -5
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.js +2 -2
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.ts +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationMessage.js +2 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationMessage.ts +1 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.js +2 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.ts +1 -0
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +21 -15
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +18 -15
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +7 -6
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +8 -5
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.js +9 -4
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.tsx +10 -4
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.js +3 -2
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.tsx +2 -1
- package/src/sap/fe/core/converters/ManifestSettings.js +7 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +37 -0
- package/src/sap/fe/core/converters/ManifestWrapper.js +29 -9
- package/src/sap/fe/core/converters/ManifestWrapper.ts +29 -11
- package/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
- package/src/sap/fe/core/converters/MetaModelConverter.ts +1 -1
- package/src/sap/fe/core/converters/annotations/DataField.js +46 -19
- package/src/sap/fe/core/converters/annotations/DataField.ts +93 -19
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +118 -39
- package/src/sap/fe/core/converters/controls/Common/Action.js +58 -21
- package/src/sap/fe/core/converters/controls/Common/Action.ts +72 -22
- package/src/sap/fe/core/converters/controls/Common/Chart.js +13 -3
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +20 -4
- package/src/sap/fe/core/converters/controls/Common/Form.js +18 -3
- package/src/sap/fe/core/converters/controls/Common/Form.ts +23 -1
- package/src/sap/fe/core/converters/controls/Common/Table.js +87 -22
- package/src/sap/fe/core/converters/controls/Common/Table.ts +112 -21
- package/src/sap/fe/core/converters/controls/Common/filter/FilterRestrictions.js +243 -0
- package/src/sap/fe/core/converters/controls/Common/filter/FilterRestrictions.ts +309 -0
- package/src/sap/fe/core/converters/controls/Common/table/Columns.js +142 -58
- package/src/sap/fe/core/converters/controls/Common/table/Columns.ts +174 -79
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +7 -16
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +6 -17
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +16 -5
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +16 -5
- package/src/sap/fe/core/converters/helpers/Aggregation.js +12 -2
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +11 -1
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +27 -3
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +28 -1
- package/src/sap/fe/core/converters/helpers/ID.js +3 -1
- package/src/sap/fe/core/converters/helpers/ID.ts +1 -0
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +10 -5
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +13 -1
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +11 -3
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +12 -4
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +19 -8
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +18 -7
- package/src/sap/fe/core/designtime/AnnotationBasedChanges.js +8 -3
- package/src/sap/fe/core/designtime/AnnotationBasedChanges.ts +7 -2
- package/src/sap/fe/core/flexibility/AppComponent.flexibility.js +55 -0
- package/src/sap/fe/core/flexibility/AppComponent.flexibility.ts +65 -0
- package/src/sap/fe/core/flexibility/XMLTools.js +71 -0
- package/src/sap/fe/core/flexibility/XMLTools.ts +61 -0
- package/src/sap/fe/core/fpm/manifest.json +2 -2
- package/src/sap/fe/core/helpers/AppStartupHelper.js +79 -25
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +92 -32
- package/src/sap/fe/core/helpers/DeleteHelper.js +13 -13
- package/src/sap/fe/core/helpers/DeleteHelper.ts +17 -15
- package/src/sap/fe/core/helpers/ManifestHelper.js +6 -3
- package/src/sap/fe/core/helpers/ManifestHelper.ts +3 -0
- package/src/sap/fe/core/helpers/MetaModelFunction.js +12 -3
- package/src/sap/fe/core/helpers/MetaModelFunction.ts +11 -3
- package/src/sap/fe/core/helpers/ModelHelper.js +47 -11
- package/src/sap/fe/core/helpers/ModelHelper.ts +62 -15
- package/src/sap/fe/core/helpers/PasteHelper.js +6 -2
- package/src/sap/fe/core/helpers/PasteHelper.ts +5 -7
- package/src/sap/fe/core/helpers/TypeGuards.js +12 -2
- package/src/sap/fe/core/helpers/TypeGuards.ts +10 -1
- package/src/sap/fe/core/helpers/WebSocket.js +6 -7
- package/src/sap/fe/core/helpers/WebSocket.ts +10 -6
- package/src/sap/fe/core/library.js +33 -3
- package/src/sap/fe/core/library.ts +31 -1
- package/src/sap/fe/core/messagebundle.properties +8 -1
- package/src/sap/fe/core/messagebundle_ar.properties +8 -1
- package/src/sap/fe/core/messagebundle_bg.properties +10 -3
- package/src/sap/fe/core/messagebundle_ca.properties +7 -0
- package/src/sap/fe/core/messagebundle_cnr.properties +7 -0
- package/src/sap/fe/core/messagebundle_cs.properties +7 -0
- package/src/sap/fe/core/messagebundle_cy.properties +8 -1
- package/src/sap/fe/core/messagebundle_da.properties +7 -0
- package/src/sap/fe/core/messagebundle_de.properties +7 -0
- package/src/sap/fe/core/messagebundle_el.properties +7 -0
- package/src/sap/fe/core/messagebundle_en.properties +8 -1
- package/src/sap/fe/core/messagebundle_en_GB.properties +7 -0
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +8 -1
- package/src/sap/fe/core/messagebundle_es.properties +8 -1
- package/src/sap/fe/core/messagebundle_es_MX.properties +7 -0
- package/src/sap/fe/core/messagebundle_et.properties +7 -0
- package/src/sap/fe/core/messagebundle_fi.properties +7 -0
- package/src/sap/fe/core/messagebundle_fr.properties +16 -9
- package/src/sap/fe/core/messagebundle_fr_CA.properties +7 -0
- package/src/sap/fe/core/messagebundle_hi.properties +8 -1
- package/src/sap/fe/core/messagebundle_hr.properties +7 -0
- package/src/sap/fe/core/messagebundle_hu.properties +7 -0
- package/src/sap/fe/core/messagebundle_id.properties +7 -0
- package/src/sap/fe/core/messagebundle_it.properties +7 -0
- package/src/sap/fe/core/messagebundle_iw.properties +7 -0
- package/src/sap/fe/core/messagebundle_ja.properties +8 -1
- package/src/sap/fe/core/messagebundle_kk.properties +7 -0
- package/src/sap/fe/core/messagebundle_ko.properties +7 -0
- package/src/sap/fe/core/messagebundle_lt.properties +7 -0
- package/src/sap/fe/core/messagebundle_lv.properties +7 -0
- package/src/sap/fe/core/messagebundle_mk.properties +7 -0
- package/src/sap/fe/core/messagebundle_ms.properties +7 -0
- package/src/sap/fe/core/messagebundle_nl.properties +7 -0
- package/src/sap/fe/core/messagebundle_no.properties +9 -2
- package/src/sap/fe/core/messagebundle_pl.properties +7 -0
- package/src/sap/fe/core/messagebundle_pt.properties +7 -0
- package/src/sap/fe/core/messagebundle_pt_PT.properties +7 -0
- package/src/sap/fe/core/messagebundle_ro.properties +7 -0
- package/src/sap/fe/core/messagebundle_ru.properties +7 -0
- package/src/sap/fe/core/messagebundle_sh.properties +7 -0
- package/src/sap/fe/core/messagebundle_sk.properties +7 -0
- package/src/sap/fe/core/messagebundle_sl.properties +7 -0
- package/src/sap/fe/core/messagebundle_sr.properties +7 -0
- package/src/sap/fe/core/messagebundle_sv.properties +7 -0
- package/src/sap/fe/core/messagebundle_th.properties +7 -0
- package/src/sap/fe/core/messagebundle_tr.properties +7 -0
- package/src/sap/fe/core/messagebundle_uk.properties +7 -0
- package/src/sap/fe/core/messagebundle_vi.properties +7 -0
- package/src/sap/fe/core/messagebundle_zh_CN.properties +8 -1
- package/src/sap/fe/core/messagebundle_zh_TW.properties +7 -0
- package/src/sap/fe/core/rootView/Fcl.controller.js +21 -7
- package/src/sap/fe/core/rootView/Fcl.controller.ts +22 -5
- package/src/sap/fe/core/rootView/NavContainer.controller.js +1 -1
- package/src/sap/fe/core/rootView/NavContainer.controller.ts +2 -1
- package/src/sap/fe/core/rootView/RootViewBaseController.js +96 -88
- package/src/sap/fe/core/rootView/RootViewBaseController.ts +106 -96
- package/src/sap/fe/core/services/CollaborativeToolsServiceFactory.js +1 -1
- package/src/sap/fe/core/services/CollaborativeToolsServiceFactory.ts +9 -9
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +14 -10
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +15 -10
- package/src/sap/fe/core/services/RoutingServiceFactory.js +9 -4
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +13 -6
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +9 -7
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +13 -8
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +57 -5
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +69 -10
- package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +33 -15
- package/src/sap/fe/core/services/collaborativeDraftServiceFactory.ts +31 -11
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +4 -5
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +4 -6
- package/src/sap/fe/core/templating/UIFormatters.js +17 -2
- package/src/sap/fe/core/templating/UIFormatters.ts +25 -1
- package/src/sap/fe/core/types/sap.fe.core-auto-ext.d.js +10 -0
- package/src/sap/fe/core/types/sap.fe.core-auto-ext.d.ts +369 -0
- package/src/sap/fe/core/types/sap.fe.core-manual-ext.d.js +9 -0
- package/src/sap/fe/core/types/sap.fe.core-manual-ext.d.ts +49 -0
- package/ui5.yaml +2 -0
|
@@ -127,6 +127,7 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/core/CommonUtils", "sap/fe/co
|
|
|
127
127
|
};
|
|
128
128
|
_proto.init = function init() {
|
|
129
129
|
this.oAppComponent = CommonUtils.getAppComponent(this);
|
|
130
|
+
this.oComponentData ??= {};
|
|
130
131
|
_UIComponent.prototype.init.call(this);
|
|
131
132
|
}
|
|
132
133
|
|
|
@@ -183,6 +184,16 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/core/CommonUtils", "sap/fe/co
|
|
|
183
184
|
} else {
|
|
184
185
|
return Promise.resolve({});
|
|
185
186
|
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Get browser title information for component.
|
|
191
|
+
* @param pageTitleInformation Present page title information
|
|
192
|
+
* @returns Title information to be used by shell services for browser title
|
|
193
|
+
*/;
|
|
194
|
+
_proto._getBrowserTitle = async function _getBrowserTitle(pageTitleInformation) {
|
|
195
|
+
const rootControl = this.getRootControl();
|
|
196
|
+
return rootControl.getController()?._getBrowserTitle(pageTitleInformation);
|
|
186
197
|
};
|
|
187
198
|
_proto.getExtensionAPI = function getExtensionAPI() {
|
|
188
199
|
return this.getRootControl().getController().getExtensionAPI();
|
|
@@ -347,4 +358,4 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/core/CommonUtils", "sap/fe/co
|
|
|
347
358
|
}), _class2)) || _class);
|
|
348
359
|
return TemplateComponent;
|
|
349
360
|
}, false);
|
|
350
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUZW1wbGF0ZUNvbXBvbmVudCIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwiaW1wbGVtZW50SW50ZXJmYWNlIiwiX2RlYzMiLCJfZGVjNCIsInByb3BlcnR5IiwidHlwZSIsImRlZmF1bHRWYWx1ZSIsIl9kZWM1IiwiX2RlYzYiLCJfZGVjNyIsIl9kZWM4IiwiX2RlYzkiLCJfZGVjMTAiLCJfZGVjMTEiLCJfZGVjMTIiLCJfZGVjMTMiLCJfZGVjMTQiLCJfZGVjMTUiLCJfZGVjMTYiLCJfZGVjMTciLCJfZGVjMTgiLCJfZGVjMTkiLCJldmVudCIsIl9kZWMyMCIsIl9kZWMyMSIsIl9kZWMyMiIsIk92ZXJmbG93VG9vbGJhclByaW9yaXR5IiwiSGlnaCIsIl9jbGFzcyIsIl9jbGFzczIiLCJfVUlDb21wb25lbnQiLCJfdGhpcyIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJfZGVzY3JpcHRvcjciLCJfZGVzY3JpcHRvcjgiLCJfZGVzY3JpcHRvcjkiLCJfZGVzY3JpcHRvcjEwIiwiX2Rlc2NyaXB0b3IxMSIsIl9kZXNjcmlwdG9yMTIiLCJfZGVzY3JpcHRvcjEzIiwiX2Rlc2NyaXB0b3IxNCIsIl9kZXNjcmlwdG9yMTUiLCJfZGVzY3JpcHRvcjE2IiwiX2Rlc2NyaXB0b3IxNyIsIl9kZXNjcmlwdG9yMTgiLCJfZGVzY3JpcHRvcjE5IiwiX2Rlc2NyaXB0b3IyMCIsIl9kZXNjcmlwdG9yMjEiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsInNldENvbnRhaW5lciIsIm9Db250YWluZXIiLCJmaXJlRXZlbnQiLCJjb250YWluZXIiLCJpbml0Iiwib0FwcENvbXBvbmVudCIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50IiwiZ2V0RXh0ZW5zaW9uQ29tcG9uZW50Iiwic2V0Um9vdENvbnRyb2xsZXIiLCJjb250cm9sbGVyIiwiX3Jvb3RDb250cm9sbGVyIiwiZ2V0Um9vdENvbnRyb2xsZXIiLCJyb290Q29udHJvbCIsImdldFJvb3RDb250cm9sIiwicm9vdENvbnRyb2xsZXIiLCJnZXRDb250cm9sbGVyIiwib25QYWdlUmVhZHkiLCJtUGFyYW1ldGVycyIsImdldE5hdmlnYXRpb25Db25maWd1cmF0aW9uIiwic1RhcmdldFBhdGgiLCJtTmF2aWdhdGlvbiIsIm5hdmlnYXRpb24iLCJnZXRWaWV3RGF0YSIsIm1Qcm9wZXJ0aWVzIiwiZ2V0TWV0YWRhdGEiLCJnZXRBbGxQcm9wZXJ0aWVzIiwib1ZpZXdEYXRhIiwiT2JqZWN0Iiwia2V5cyIsInJlZHVjZSIsIm1WaWV3RGF0YSIsInNQcm9wZXJ0eU5hbWUiLCJnZXQiLCJwcmVwcm9jZXNzb3JDb250ZXh0IiwiZmNsRW5hYmxlZCIsIl9pc0ZjbEVuYWJsZWQiLCJyb3V0aW5nVGFyZ2V0TmFtZSIsImdldFJvdXRpbmdTZXJ2aWNlIiwiZ2V0VGFyZ2V0TmFtZSIsImlzSW5saW5lRWRpdEVuYWJsZWQiLCJnZXRJbmxpbmVFZGl0U2VydmljZSIsImRvZXNQYWdlSGF2ZUlubGluZUVkaXQiLCJfZ2V0UGFnZVRpdGxlSW5mb3JtYXRpb24iLCJQcm9taXNlIiwicmVzb2x2ZSIsImdldEV4dGVuc2lvbkFQSSIsImdldE1ldGFNb2RlbCIsIm1ldGFNb2RlbFJlZmVyZW5jZSIsIm1vZGVscyIsIm1ldGFNb2RlbCIsInN0YXJ0c1dpdGgiLCJnZXRNZXRhTW9kZWxCeUlkIiwiZ2V0TW9kZWwiLCJnZXRGdWxsQ29udGV4dFBhdGgiLCJmdWxsQ29udGV4dFBhdGgiLCJnZXRNYW5pZmVzdFdyYXBwZXIiLCJNYW5pZmVzdFdyYXBwZXIiLCJfZ2V0Q29udHJvbGxlck5hbWUiLCJ1bmRlZmluZWQiLCJVSUNvbXBvbmVudCIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVGVtcGxhdGVDb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb252ZXJ0ZWRNZXRhZGF0YSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIGV2ZW50LCBpbXBsZW1lbnRJbnRlcmZhY2UsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIEV4dGVuc2lvbkFQSSBmcm9tIFwic2FwL2ZlL2NvcmUvRXh0ZW5zaW9uQVBJXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIHsgSUJ1aWxkaW5nQmxvY2tPd25lckNvbXBvbmVudCB9IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9JQnVpbGRpbmdCbG9ja093bmVyQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgTmF2aWdhdGlvblRhcmdldENvbmZpZ3VyYXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyB0eXBlIEJhc2VNYW5pZmVzdFNldHRpbmdzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IE1hbmlmZXN0V3JhcHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFdyYXBwZXJcIjtcbmltcG9ydCB7IGdldE1ldGFNb2RlbEJ5SWQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB0eXBlIHsgRGVmaW5pdGlvbkNvbnRleHQsIERlZmluaXRpb25QYWdlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2RlZmluaXRpb24vRkVEZWZpbml0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IFRpdGxlSW5mb3JtYXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvcm9vdFZpZXcvUm9vdFZpZXdCYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IHsgdHlwZSBIaWVyYWNoeU1vZGUgYXMgQnJlYWRjcnVtYnNIaWVyYWNoeU1vZGUgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9CcmVhZGNydW1ic1wiO1xuaW1wb3J0IHsgT3ZlcmZsb3dUb29sYmFyUHJpb3JpdHkgfSBmcm9tIFwic2FwL20vbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgQ29tcG9uZW50Q29udGFpbmVyIGZyb20gXCJzYXAvdWkvY29yZS9Db21wb25lbnRDb250YWluZXJcIjtcbmltcG9ydCBVSUNvbXBvbmVudCBmcm9tIFwic2FwL3VpL2NvcmUvVUlDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgSUFzeW5jQ29udGVudENyZWF0aW9uIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgdHlwZSBCYXNlQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvTW9kZWxcIjtcbmltcG9ydCB0eXBlIEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFMaXN0QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTGlzdEJpbmRpbmdcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5cbmV4cG9ydCB0eXBlIE5hdmlnYXRpb25Db25maWd1cmF0aW9uID0ge1xuXHRkZXRhaWw6IHtcblx0XHRyb3V0ZTogc3RyaW5nO1xuXHRcdGF2YWlsYWJpbGl0eT86IHN0cmluZztcblx0XHRwYXJhbWV0ZXJzOiB1bmtub3duO1xuXHRcdG91dGJvdW5kPzogc3RyaW5nO1xuXHRcdG91dGJvdW5kRGV0YWlsPzogTmF2aWdhdGlvblRhcmdldENvbmZpZ3VyYXRpb25bXCJvdXRib3VuZERldGFpbFwiXTtcblx0fTtcblx0Y3JlYXRlOiB7XG5cdFx0cm91dGU6IHN0cmluZztcblx0XHRwYXJhbWV0ZXJzOiB1bmtub3duO1xuXHRcdG91dGJvdW5kPzogc3RyaW5nO1xuXHRcdG91dGJvdW5kRGV0YWlsPzogTmF2aWdhdGlvblRhcmdldENvbmZpZ3VyYXRpb25bXCJvdXRib3VuZERldGFpbFwiXTtcblx0fTtcbn07XG5cbmV4cG9ydCB0eXBlIFhNTFByZXByb2Nlc3NvckNvbnRleHQgPSB7XG5cdGJpbmRpbmdDb250ZXh0czogUmVjb3JkPHN0cmluZywgQmFzZUNvbnRleHQgfCBudWxsPjtcblx0bW9kZWxzOiBSZWNvcmQ8c3RyaW5nLCBNb2RlbD47XG5cdGZ1bGxDb250ZXh0UGF0aDogc3RyaW5nO1xuXHRnZXRDb252ZXJ0ZWRNZXRhZGF0YTogKCkgPT4gQ29udmVydGVkTWV0YWRhdGE7XG5cdGdldERlZmluaXRpb25Db250ZXh0OiAoKSA9PiBEZWZpbml0aW9uQ29udGV4dDtcblx0Z2V0RGVmaW5pdGlvbkZvclBhZ2U6ICgpID0+IERlZmluaXRpb25QYWdlO1xuXHRhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudDtcblx0dmlld0lkOiBzdHJpbmc7XG59O1xuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5UZW1wbGF0ZUNvbXBvbmVudFwiKVxuY2xhc3MgVGVtcGxhdGVDb21wb25lbnQgZXh0ZW5kcyBVSUNvbXBvbmVudCBpbXBsZW1lbnRzIElBc3luY0NvbnRlbnRDcmVhdGlvbiwgSUJ1aWxkaW5nQmxvY2tPd25lckNvbXBvbmVudCB7XG5cdEBpbXBsZW1lbnRJbnRlcmZhY2UoXCJzYXAudWkuY29yZS5JQXN5bmNDb250ZW50Q3JlYXRpb25cIilcblx0X19pbXBsZW1lbnRzX19zYXBfdWlfY29yZV9JQXN5bmNDb250ZW50Q3JlYXRpb24gPSB0cnVlO1xuXG5cdEBpbXBsZW1lbnRJbnRlcmZhY2UoXCJzYXAuZmUuY29yZS5idWlsZGluZ0Jsb2Nrcy5JQnVpbGRpbmdCbG9ja093bmVyQ29tcG9uZW50XCIpXG5cdF9faW1wbGVtZW50c19fc2FwX2ZlX2NvcmVfYnVpbGRpbmdCbG9ja3NfSUJ1aWxkaW5nQmxvY2tPd25lckNvbXBvbmVudCA9IHRydWU7XG5cblx0LyoqXG5cdCAqIE5hbWUgb2YgdGhlIE9EYXRhIGVudGl0eSBzZXRcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGRlZmF1bHRWYWx1ZTogbnVsbCB9KVxuXHRlbnRpdHlTZXQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG5cdC8qKlxuXHQgKiBDb250ZXh0IFBhdGggZm9yIHJlbmRlcmluZyB0aGUgdGVtcGxhdGVcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGRlZmF1bHRWYWx1ZTogbnVsbCB9KVxuXHRjb250ZXh0UGF0aDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RcIiB9KVxuXHRwcmVwcm9jZXNzb3JDb250ZXh0PzogWE1MUHJlcHJvY2Vzc29yQ29udGV4dDtcblxuXHQvKipcblx0ICogVGhlIHBhdHRlcm4gZm9yIHRoZSBiaW5kaW5nIGNvbnRleHQgdG8gYmUgY3JlYXRlIGJhc2VkIG9uIHRoZSBwYXJhbWV0ZXJzIGZyb20gdGhlIG5hdmlnYXRpb25cblx0ICogSWYgbm90IHByb3ZpZGVkIHdlJ2xsIGRlZmF1bHQgdG8gd2hhdCB3YXMgcGFzc2VkIGluIHRoZSBVUkxcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0YmluZGluZ0NvbnRleHRQYXR0ZXJuITogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBNYXAgb2YgdXNlZCBPRGF0YSBuYXZpZ2F0aW9ucyBhbmQgaXRzIHJvdXRpbmcgdGFyZ2V0c1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RcIiB9KVxuXHRuYXZpZ2F0aW9uITogUmVjb3JkPHN0cmluZywgTmF2aWdhdGlvbkNvbmZpZ3VyYXRpb24+O1xuXG5cdC8qKlxuXHQgKiBFbmhhbmNlIHRoZSBpMThuIGJ1bmRsZSB1c2VkIGZvciB0aGlzIHBhZ2Ugd2l0aCBvbmUgb3IgbW9yZSBhcHAgc3BlY2lmaWMgaTE4biByZXNvdXJjZSBidW5kbGVzIG9yIHJlc291cmNlIG1vZGVsc1xuXHQgKiBvciBhIGNvbWJpbmF0aW9uIG9mIGJvdGguIFRoZSBsYXN0IHJlc291cmNlIGJ1bmRsZS9tb2RlbCBpcyBnaXZlbiBoaWdoZXN0IHByaW9yaXR5XG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1tdXCIgfSlcblx0ZW5oYW5jZUkxOG4hOiBzdHJpbmdbXTtcblxuXHQvKipcblx0ICogRGVmaW5lIGNvbnRyb2wgcmVsYXRlZCBjb25maWd1cmF0aW9uIHNldHRpbmdzXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcIm9iamVjdFwiIH0pXG5cdGNvbnRyb2xDb25maWd1cmF0aW9uPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RcIiB9KVxuXHRpbmxpbmVFZGl0PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cblx0LyoqXG5cdCAqIEFkanVzdHMgdGhlIHRlbXBsYXRlIGNvbnRlbnRcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwib2JqZWN0XCIgfSlcblx0Y29udGVudD86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5cdC8qKlxuXHQgKiBXaGV0aGVyIG9yIG5vdCB5b3UgY2FuIHJlYWNoIHRoaXMgcGFnZSBkaXJlY3RseSB0aHJvdWdoIHNlbWFudGljIGJvb2ttYXJrc1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0YWxsb3dEZWVwTGlua2luZyE6IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIGNvbnRleHQgcGF0aCBvbiB0aGUgY29tcG9uZW50IHRoYXQgaXMgcmVmcmVzaGVkIHdoZW4gdGhlIGFwcCBpcyByZXN0b3JlZCB1c2luZyBrZWVwIGFsaXZlIG1vZGVcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwib2JqZWN0XCIgfSlcblx0cmVmcmVzaFN0cmF0ZWd5T25BcHBSZXN0b3JlOiB1bmtub3duO1xuXG5cdC8qKlxuXHQgKiBIaWVyYXJjaHkgbW9kZSBmb3IgYnJlYWRjcnVtYnNcblx0ICogTk9URTogQnJlYWRjcnVtYnMgc2hhbGwgbm90IGJlIHNob3duIGlmIHRoaXMgcHJvcGVydHkgaXMgbm90IHNldC5cblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHRicmVhZGNydW1ic0hpZXJhcmNoeU1vZGU/OiBCcmVhZGNydW1ic0hpZXJhY2h5TW9kZTtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHZpZXdUeXBlID0gXCJYTUxcIjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHZpZXdOYW1lPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0X2pzeFZpZXdOYW1lID0gXCJcIjtcblxuXHRAZXZlbnQoKVxuXHRjb250YWluZXJEZWZpbmVkITogRnVuY3Rpb247XG5cblx0QGV2ZW50KClcblx0aGVyb2VzQmF0Y2hSZWNlaXZlZCE6IEZ1bmN0aW9uO1xuXG5cdEBldmVudCgpXG5cdHdvcmtlcnNCYXRjaFJlY2VpdmVkITogRnVuY3Rpb247XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiwgZGVmYXVsdFZhbHVlOiBPdmVyZmxvd1Rvb2xiYXJQcmlvcml0eS5IaWdoIH0pXG5cdHNoYXJlT3ZlcmZsb3dQcmlvcml0eT86IE92ZXJmbG93VG9vbGJhclByaW9yaXR5O1xuXG5cdHByb3RlY3RlZCBvQXBwQ29tcG9uZW50ITogQXBwQ29tcG9uZW50O1xuXG5cdHByaXZhdGUgX3Jvb3RDb250cm9sbGVyPzogUGFnZUNvbnRyb2xsZXI7XG5cblx0Ly8gVGhlIGlkIG9mIGEgZnJhZ21lbnQgYmVpbmcgcHJvY2Vzc2VkLCBpdCB3aWxsIHRha2UgcHJpb3JpdHkgaW4gdGhlIElEIGdlbmVyYXRpb25cblx0cHJpdmF0ZSBfdGVtcG9yYXJ5RnJhZ21lbnRJZD86IHN0cmluZztcblxuXHRzZXRDb250YWluZXIob0NvbnRhaW5lcjogQ29tcG9uZW50Q29udGFpbmVyKTogdGhpcyB7XG5cdFx0c3VwZXIuc2V0Q29udGFpbmVyKG9Db250YWluZXIpO1xuXHRcdHRoaXMuZmlyZUV2ZW50KFwiY29udGFpbmVyRGVmaW5lZFwiLCB7IGNvbnRhaW5lcjogb0NvbnRhaW5lciB9KTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdGluaXQoKTogdm9pZCB7XG5cdFx0dGhpcy5vQXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHRoaXMpO1xuXHRcdHN1cGVyLmluaXQoKTtcblx0fVxuXG5cdC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSBVSTUgY29yZSB0byBhY2Nlc3MgdG8gdGhlIGNvbXBvbmVudCBjb250YWluaW5nIHRoZSBjdXN0b21pemluZyBjb25maWd1cmF0aW9uLlxuXHQvLyBhcyBjb250cm9sbGVyIGV4dGVuc2lvbnMgYXJlIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0IGZvciB0aGUgYXBwIGNvbXBvbmVudCBhbmQgbm90IGZvciB0aGVcblx0Ly8gdGVtcGxhdGUgY29tcG9uZW50IHdlIHJldHVybiB0aGUgYXBwIGNvbXBvbmVudC5cblx0Z2V0RXh0ZW5zaW9uQ29tcG9uZW50KCk6IEFwcENvbXBvbmVudCB7XG5cdFx0cmV0dXJuIHRoaXMub0FwcENvbXBvbmVudDtcblx0fVxuXG5cdGdldEFwcENvbXBvbmVudCgpOiBBcHBDb21wb25lbnQge1xuXHRcdHJldHVybiB0aGlzLm9BcHBDb21wb25lbnQ7XG5cdH1cblxuXHRzZXRSb290Q29udHJvbGxlcihjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlcik6IHZvaWQge1xuXHRcdHRoaXMuX3Jvb3RDb250cm9sbGVyID0gY29udHJvbGxlcjtcblx0fVxuXG5cdGdldFJvb3RDb250cm9sbGVyKCk6IFBhZ2VDb250cm9sbGVyIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCByb290Q29udHJvbDogVmlldyA9IHRoaXMuZ2V0Um9vdENvbnRyb2woKTtcblx0XHRsZXQgcm9vdENvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyIHwgdW5kZWZpbmVkO1xuXHRcdGlmIChyb290Q29udHJvbCAmJiByb290Q29udHJvbC5nZXRDb250cm9sbGVyKSB7XG5cdFx0XHRyb290Q29udHJvbGxlciA9IHJvb3RDb250cm9sLmdldENvbnRyb2xsZXIoKSBhcyBQYWdlQ29udHJvbGxlcjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cm9vdENvbnRyb2xsZXIgPSB0aGlzLl9yb290Q29udHJvbGxlcjtcblx0XHR9XG5cdFx0cmV0dXJuIHJvb3RDb250cm9sbGVyO1xuXHR9XG5cblx0b25QYWdlUmVhZHkobVBhcmFtZXRlcnM6IHVua25vd24pOiB2b2lkIHtcblx0XHRjb25zdCByb290Q29udHJvbGxlciA9IHRoaXMuZ2V0Um9vdENvbnRyb2xsZXIoKTtcblx0XHRpZiAocm9vdENvbnRyb2xsZXIgJiYgcm9vdENvbnRyb2xsZXIub25QYWdlUmVhZHkpIHtcblx0XHRcdHJvb3RDb250cm9sbGVyLm9uUGFnZVJlYWR5KG1QYXJhbWV0ZXJzKTtcblx0XHR9XG5cdH1cblxuXHRnZXROYXZpZ2F0aW9uQ29uZmlndXJhdGlvbihzVGFyZ2V0UGF0aDogc3RyaW5nKTogTmF2aWdhdGlvbkNvbmZpZ3VyYXRpb24ge1xuXHRcdGNvbnN0IG1OYXZpZ2F0aW9uID0gdGhpcy5uYXZpZ2F0aW9uO1xuXHRcdHJldHVybiBtTmF2aWdhdGlvbltzVGFyZ2V0UGF0aF07XG5cdH1cblxuXHRnZXRWaWV3RGF0YSgpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG5cdFx0Y29uc3QgbVByb3BlcnRpZXMgPSB0aGlzLmdldE1ldGFkYXRhKCkuZ2V0QWxsUHJvcGVydGllcygpO1xuXHRcdGNvbnN0IG9WaWV3RGF0YSA9IE9iamVjdC5rZXlzKG1Qcm9wZXJ0aWVzKS5yZWR1Y2UoKG1WaWV3RGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHNQcm9wZXJ0eU5hbWU6IHN0cmluZykgPT4ge1xuXHRcdFx0bVZpZXdEYXRhW3NQcm9wZXJ0eU5hbWVdID0gbVByb3BlcnRpZXNbc1Byb3BlcnR5TmFtZV0uZ2V0ISh0aGlzKTtcblx0XHRcdHJldHVybiBtVmlld0RhdGE7XG5cdFx0fSwge30pO1xuXHRcdGRlbGV0ZSBvVmlld0RhdGEucHJlcHJvY2Vzc29yQ29udGV4dDtcblx0XHQvLyBBY2Nlc3MgdGhlIGludGVybmFsIF9pc0ZjbEVuYWJsZWQgd2hpY2ggd2lsbCBiZSB0aGVyZVxuXHRcdG9WaWV3RGF0YS5mY2xFbmFibGVkID0gdGhpcy5vQXBwQ29tcG9uZW50Ll9pc0ZjbEVuYWJsZWQoKTtcblx0XHRjb25zdCByb3V0aW5nVGFyZ2V0TmFtZSA9IHRoaXMub0FwcENvbXBvbmVudC5nZXRSb3V0aW5nU2VydmljZSgpLmdldFRhcmdldE5hbWUodGhpcyk7XG5cdFx0b1ZpZXdEYXRhLmlzSW5saW5lRWRpdEVuYWJsZWQgPSByb3V0aW5nVGFyZ2V0TmFtZVxuXHRcdFx0PyB0aGlzLm9BcHBDb21wb25lbnQuZ2V0SW5saW5lRWRpdFNlcnZpY2UoKS5kb2VzUGFnZUhhdmVJbmxpbmVFZGl0KHJvdXRpbmdUYXJnZXROYW1lKVxuXHRcdFx0OiBmYWxzZTtcblxuXHRcdHJldHVybiBvVmlld0RhdGE7XG5cdH1cblxuXHRhc3luYyBfZ2V0UGFnZVRpdGxlSW5mb3JtYXRpb24oKTogUHJvbWlzZTxUaXRsZUluZm9ybWF0aW9uPiB7XG5cdFx0Y29uc3Qgcm9vdENvbnRyb2wgPSB0aGlzLmdldFJvb3RDb250cm9sKCk7XG5cdFx0aWYgKHJvb3RDb250cm9sICYmIHJvb3RDb250cm9sLmdldENvbnRyb2xsZXIoKSAmJiByb290Q29udHJvbC5nZXRDb250cm9sbGVyKCkuX2dldFBhZ2VUaXRsZUluZm9ybWF0aW9uKSB7XG5cdFx0XHRyZXR1cm4gcm9vdENvbnRyb2wuZ2V0Q29udHJvbGxlcigpLl9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbigpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9IGFzIFRpdGxlSW5mb3JtYXRpb24pO1xuXHRcdH1cblx0fVxuXG5cdGdldEV4dGVuc2lvbkFQSSgpOiBFeHRlbnNpb25BUEkge1xuXHRcdHJldHVybiB0aGlzLmdldFJvb3RDb250cm9sKCkuZ2V0Q29udHJvbGxlcigpLmdldEV4dGVuc2lvbkFQSSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgbWV0YW1vZGVsIGZvciB0aGUgZ2l2ZW4gbWV0YW1vZGVsIHJlZmVyZW5jZSAoSUQgLyBuYW1lIG9yIHVuZGVmaW5lZCBmb3IgdGhlIGRlZmF1bHQgb25lKS5cblx0ICogQHBhcmFtIG1ldGFNb2RlbFJlZmVyZW5jZSBUaGUgbWV0YW1vZGVsIHJlZmVyZW5jZVxuXHQgKiBAcmV0dXJucyBUaGUgY29ycmVjdCBtZXRhbW9kZWwgaWYgaXQgZXhpdHNcblx0ICovXG5cdGdldE1ldGFNb2RlbChtZXRhTW9kZWxSZWZlcmVuY2U/OiBzdHJpbmcpOiBPRGF0YU1ldGFNb2RlbCB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKCFtZXRhTW9kZWxSZWZlcmVuY2UpIHtcblx0XHRcdHJldHVybiB0aGlzLnByZXByb2Nlc3NvckNvbnRleHQ/Lm1vZGVscy5tZXRhTW9kZWwgYXMgT0RhdGFNZXRhTW9kZWwgfCB1bmRlZmluZWQ7XG5cdFx0fSBlbHNlIGlmIChtZXRhTW9kZWxSZWZlcmVuY2Uuc3RhcnRzV2l0aChcImlkLVwiKSkge1xuXHRcdFx0cmV0dXJuIGdldE1ldGFNb2RlbEJ5SWQobWV0YU1vZGVsUmVmZXJlbmNlKTtcblx0XHR9IGVsc2UgaWYgKCF0aGlzLmdldE1vZGVsKG1ldGFNb2RlbFJlZmVyZW5jZSkpIHtcblx0XHRcdHJldHVybiB0aGlzLmdldEFwcENvbXBvbmVudCgpLmdldE1vZGVsKG1ldGFNb2RlbFJlZmVyZW5jZSk/LmdldE1ldGFNb2RlbCgpIGFzIE9EYXRhTWV0YU1vZGVsIHwgdW5kZWZpbmVkO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRNb2RlbChtZXRhTW9kZWxSZWZlcmVuY2UpPy5nZXRNZXRhTW9kZWwoKSBhcyBPRGF0YU1ldGFNb2RlbCB8IHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBmdWxsIGNvbnRleHQgcGF0aCBmb3IgdGhlIGdpdmVuIG1ldGFtb2RlbCByZWZlcmVuY2UgKElEIC8gbmFtZSBvciB1bmRlZmluZWQgZm9yIHRoZSBkZWZhdWx0IG9uZSkuXG5cdCAqIEBwYXJhbSBtZXRhTW9kZWxSZWZlcmVuY2UgVGhlIG1ldGFtb2RlbCByZWZlcmVuY2Vcblx0ICogQHJldHVybnMgVGhlIGNvcnJlY3QgZnVsbCBjb250ZXh0IHBhdGhcblx0ICovXG5cdGdldEZ1bGxDb250ZXh0UGF0aChtZXRhTW9kZWxSZWZlcmVuY2U/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdGlmICghbWV0YU1vZGVsUmVmZXJlbmNlKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5wcmVwcm9jZXNzb3JDb250ZXh0Py5mdWxsQ29udGV4dFBhdGg7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgTWFuaWZlc3RXcmFwcGVyIGZvciB0aGUgY3VycmVudCB2aWV3LlxuXHQgKiBAcmV0dXJucyBUaGUgTWFuaWZlc3RXcmFwcGVyXG5cdCAqL1xuXHRnZXRNYW5pZmVzdFdyYXBwZXIoKTogTWFuaWZlc3RXcmFwcGVyIHtcblx0XHRyZXR1cm4gbmV3IE1hbmlmZXN0V3JhcHBlcih0aGlzLmdldFZpZXdEYXRhKCkgYXMgQmFzZU1hbmlmZXN0U2V0dGluZ3MpO1xuXHR9XG5cblx0X2dldENvbnRyb2xsZXJOYW1lKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxufVxuaW50ZXJmYWNlIFRlbXBsYXRlQ29tcG9uZW50IHtcblx0Ly8gVE9ETzogdGhpcyBzaG91bGQgYmUgaWRlYWxseSBiZSBoYW5kbGVkIGJ5IHRoZSBlZGl0Zmxvdy9yb3V0aW5nIHdpdGhvdXQgdGhlIG5lZWQgdG8gaGF2ZSB0aGlzIG1ldGhvZCBpbiB0aGUgb2JqZWN0IHBhZ2UgLSBmb3Igbm93IGtlZXAgaXQgaGVyZVxuXHRjcmVhdGVEZWZlcnJlZENvbnRleHQ/KFxuXHRcdHNQYXRoOiBzdHJpbmcsXG5cdFx0b0xpc3RCaW5kaW5nOiBPRGF0YUxpc3RCaW5kaW5nIHwgdW5kZWZpbmVkLFxuXHRcdHBhcmVudENvbnRleHQ6IENvbnRleHQgfCB1bmRlZmluZWQsXG5cdFx0ZGF0YTogb2JqZWN0IHwgdW5kZWZpbmVkLFxuXHRcdGJBY3Rpb25DcmVhdGU6IGJvb2xlYW5cblx0KTogdm9pZDtcblx0aXNPcGVuSW5FZGl0TW9kZSgpOiBib29sZWFuO1xuXHRnZXRSb290Q29udHJvbCgpOiB7IGdldENvbnRyb2xsZXIoKTogUGFnZUNvbnRyb2xsZXIgfSAmIFZpZXc7XG5cdGV4dGVuZFBhZ2VEZWZpbml0aW9uPyhwYWdlRGVmaW5pdGlvbjoge30sIGNvbnZlcnRlckNvbnRleHQ/OiBDb252ZXJ0ZXJDb250ZXh0KToge307XG5cdGdldE1vZGVsKCk6IE9EYXRhTW9kZWw7XG5cdGdldE1vZGVsKG1vZGVsTmFtZTogXCJfcGFnZU1vZGVsXCIpOiBKU09OTW9kZWw7XG5cdGdldE1vZGVsKG1vZGVsTmFtZTogc3RyaW5nKTogTW9kZWwgfCB1bmRlZmluZWQ7XG59XG5leHBvcnQgZGVmYXVsdCBUZW1wbGF0ZUNvbXBvbmVudDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQXdETUEsaUJBQWlCLElBQUFDLElBQUEsR0FEdEJDLGNBQWMsQ0FBQywrQkFBK0IsQ0FBQyxFQUFBQyxLQUFBLEdBRTlDQyxrQkFBa0IsQ0FBQyxtQ0FBbUMsQ0FBQyxFQUFBQyxLQUFBLEdBR3ZERCxrQkFBa0IsQ0FBQyx5REFBeUQsQ0FBQyxFQUFBRSxLQUFBLEdBTTdFQyxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFLFFBQVE7SUFBRUMsWUFBWSxFQUFFO0VBQUssQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FNaERILFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUUsUUFBUTtJQUFFQyxZQUFZLEVBQUU7RUFBSyxDQUFDLENBQUMsRUFBQUUsS0FBQSxHQUdoREosUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxFQUFBSSxLQUFBLEdBTzVCTCxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVMsQ0FBQyxDQUFDLEVBQUFLLEtBQUEsR0FNNUJOLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVB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
|
|
361
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUZW1wbGF0ZUNvbXBvbmVudCIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwiaW1wbGVtZW50SW50ZXJmYWNlIiwiX2RlYzMiLCJfZGVjNCIsInByb3BlcnR5IiwidHlwZSIsImRlZmF1bHRWYWx1ZSIsIl9kZWM1IiwiX2RlYzYiLCJfZGVjNyIsIl9kZWM4IiwiX2RlYzkiLCJfZGVjMTAiLCJfZGVjMTEiLCJfZGVjMTIiLCJfZGVjMTMiLCJfZGVjMTQiLCJfZGVjMTUiLCJfZGVjMTYiLCJfZGVjMTciLCJfZGVjMTgiLCJfZGVjMTkiLCJldmVudCIsIl9kZWMyMCIsIl9kZWMyMSIsIl9kZWMyMiIsIk92ZXJmbG93VG9vbGJhclByaW9yaXR5IiwiSGlnaCIsIl9jbGFzcyIsIl9jbGFzczIiLCJfVUlDb21wb25lbnQiLCJfdGhpcyIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJfZGVzY3JpcHRvcjciLCJfZGVzY3JpcHRvcjgiLCJfZGVzY3JpcHRvcjkiLCJfZGVzY3JpcHRvcjEwIiwiX2Rlc2NyaXB0b3IxMSIsIl9kZXNjcmlwdG9yMTIiLCJfZGVzY3JpcHRvcjEzIiwiX2Rlc2NyaXB0b3IxNCIsIl9kZXNjcmlwdG9yMTUiLCJfZGVzY3JpcHRvcjE2IiwiX2Rlc2NyaXB0b3IxNyIsIl9kZXNjcmlwdG9yMTgiLCJfZGVzY3JpcHRvcjE5IiwiX2Rlc2NyaXB0b3IyMCIsIl9kZXNjcmlwdG9yMjEiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsInNldENvbnRhaW5lciIsIm9Db250YWluZXIiLCJmaXJlRXZlbnQiLCJjb250YWluZXIiLCJpbml0Iiwib0FwcENvbXBvbmVudCIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50Iiwib0NvbXBvbmVudERhdGEiLCJnZXRFeHRlbnNpb25Db21wb25lbnQiLCJzZXRSb290Q29udHJvbGxlciIsImNvbnRyb2xsZXIiLCJfcm9vdENvbnRyb2xsZXIiLCJnZXRSb290Q29udHJvbGxlciIsInJvb3RDb250cm9sIiwiZ2V0Um9vdENvbnRyb2wiLCJyb290Q29udHJvbGxlciIsImdldENvbnRyb2xsZXIiLCJvblBhZ2VSZWFkeSIsIm1QYXJhbWV0ZXJzIiwiZ2V0TmF2aWdhdGlvbkNvbmZpZ3VyYXRpb24iLCJzVGFyZ2V0UGF0aCIsIm1OYXZpZ2F0aW9uIiwibmF2aWdhdGlvbiIsImdldFZpZXdEYXRhIiwibVByb3BlcnRpZXMiLCJnZXRNZXRhZGF0YSIsImdldEFsbFByb3BlcnRpZXMiLCJvVmlld0RhdGEiLCJPYmplY3QiLCJrZXlzIiwicmVkdWNlIiwibVZpZXdEYXRhIiwic1Byb3BlcnR5TmFtZSIsImdldCIsInByZXByb2Nlc3NvckNvbnRleHQiLCJmY2xFbmFibGVkIiwiX2lzRmNsRW5hYmxlZCIsInJvdXRpbmdUYXJnZXROYW1lIiwiZ2V0Um91dGluZ1NlcnZpY2UiLCJnZXRUYXJnZXROYW1lIiwiaXNJbmxpbmVFZGl0RW5hYmxlZCIsImdldElubGluZUVkaXRTZXJ2aWNlIiwiZG9lc1BhZ2VIYXZlSW5saW5lRWRpdCIsIl9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbiIsIlByb21pc2UiLCJyZXNvbHZlIiwiX2dldEJyb3dzZXJUaXRsZSIsInBhZ2VUaXRsZUluZm9ybWF0aW9uIiwiZ2V0RXh0ZW5zaW9uQVBJIiwiZ2V0TWV0YU1vZGVsIiwibWV0YU1vZGVsUmVmZXJlbmNlIiwibW9kZWxzIiwibWV0YU1vZGVsIiwic3RhcnRzV2l0aCIsImdldE1ldGFNb2RlbEJ5SWQiLCJnZXRNb2RlbCIsImdldEZ1bGxDb250ZXh0UGF0aCIsImZ1bGxDb250ZXh0UGF0aCIsImdldE1hbmlmZXN0V3JhcHBlciIsIk1hbmlmZXN0V3JhcHBlciIsIl9nZXRDb250cm9sbGVyTmFtZSIsInVuZGVmaW5lZCIsIlVJQ29tcG9uZW50IiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJUZW1wbGF0ZUNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbnZlcnRlZE1ldGFkYXRhIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgZXZlbnQsIGltcGxlbWVudEludGVyZmFjZSwgcHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgRXh0ZW5zaW9uQVBJIGZyb20gXCJzYXAvZmUvY29yZS9FeHRlbnNpb25BUElcIjtcbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgeyBJQnVpbGRpbmdCbG9ja093bmVyQ29tcG9uZW50IH0gZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL0lCdWlsZGluZ0Jsb2NrT3duZXJDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIENvbnZlcnRlckNvbnRleHQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvQ29udmVydGVyQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBOYXZpZ2F0aW9uVGFyZ2V0Q29uZmlndXJhdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IHR5cGUgQmFzZU1hbmlmZXN0U2V0dGluZ3MgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgTWFuaWZlc3RXcmFwcGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0V3JhcHBlclwiO1xuaW1wb3J0IHsgZ2V0TWV0YU1vZGVsQnlJZCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHR5cGUgeyBEZWZpbml0aW9uQ29udGV4dCwgRGVmaW5pdGlvblBhZ2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvZGVmaW5pdGlvbi9GRURlZmluaXRpb25cIjtcbmltcG9ydCB0eXBlIHsgVGl0bGVJbmZvcm1hdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9yb290Vmlldy9Sb290Vmlld0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgeyB0eXBlIEhpZXJhY2h5TW9kZSBhcyBCcmVhZGNydW1ic0hpZXJhY2h5TW9kZSB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL0JyZWFkY3J1bWJzXCI7XG5pbXBvcnQgeyBPdmVyZmxvd1Rvb2xiYXJQcmlvcml0eSB9IGZyb20gXCJzYXAvbS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSBDb21wb25lbnRDb250YWluZXIgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudENvbnRhaW5lclwiO1xuaW1wb3J0IFVJQ29tcG9uZW50IGZyb20gXCJzYXAvdWkvY29yZS9VSUNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBJQXN5bmNDb250ZW50Q3JlYXRpb24gfSBmcm9tIFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCB0eXBlIEJhc2VDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YUxpc3RCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFMaXN0QmluZGluZ1wiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgVGl0bGVBZGRpdGlvbmFsSW5mbyB9IGZyb20gXCJzYXAvdXNoZWxsL3VpNXNlcnZpY2UvU2hlbGxVSVNlcnZpY2VcIjtcblxuZXhwb3J0IHR5cGUgTmF2aWdhdGlvbkNvbmZpZ3VyYXRpb24gPSB7XG5cdGRldGFpbDoge1xuXHRcdHJvdXRlOiBzdHJpbmc7XG5cdFx0YXZhaWxhYmlsaXR5Pzogc3RyaW5nO1xuXHRcdHBhcmFtZXRlcnM6IHVua25vd247XG5cdFx0b3V0Ym91bmQ/OiBzdHJpbmc7XG5cdFx0b3V0Ym91bmREZXRhaWw/OiBOYXZpZ2F0aW9uVGFyZ2V0Q29uZmlndXJhdGlvbltcIm91dGJvdW5kRGV0YWlsXCJdO1xuXHR9O1xuXHRjcmVhdGU6IHtcblx0XHRyb3V0ZTogc3RyaW5nO1xuXHRcdHBhcmFtZXRlcnM6IHVua25vd247XG5cdFx0b3V0Ym91bmQ/OiBzdHJpbmc7XG5cdFx0b3V0Ym91bmREZXRhaWw/OiBOYXZpZ2F0aW9uVGFyZ2V0Q29uZmlndXJhdGlvbltcIm91dGJvdW5kRGV0YWlsXCJdO1xuXHR9O1xufTtcblxuZXhwb3J0IHR5cGUgWE1MUHJlcHJvY2Vzc29yQ29udGV4dCA9IHtcblx0YmluZGluZ0NvbnRleHRzOiBSZWNvcmQ8c3RyaW5nLCBCYXNlQ29udGV4dCB8IG51bGw+O1xuXHRtb2RlbHM6IFJlY29yZDxzdHJpbmcsIE1vZGVsPjtcblx0ZnVsbENvbnRleHRQYXRoOiBzdHJpbmc7XG5cdGdldENvbnZlcnRlZE1ldGFkYXRhOiAoKSA9PiBDb252ZXJ0ZWRNZXRhZGF0YTtcblx0Z2V0RGVmaW5pdGlvbkNvbnRleHQ6ICgpID0+IERlZmluaXRpb25Db250ZXh0O1xuXHRnZXREZWZpbml0aW9uRm9yUGFnZTogKCkgPT4gRGVmaW5pdGlvblBhZ2U7XG5cdGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50O1xuXHR2aWV3SWQ6IHN0cmluZztcbn07XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLlRlbXBsYXRlQ29tcG9uZW50XCIpXG5jbGFzcyBUZW1wbGF0ZUNvbXBvbmVudCBleHRlbmRzIFVJQ29tcG9uZW50IGltcGxlbWVudHMgSUFzeW5jQ29udGVudENyZWF0aW9uLCBJQnVpbGRpbmdCbG9ja093bmVyQ29tcG9uZW50IHtcblx0QGltcGxlbWVudEludGVyZmFjZShcInNhcC51aS5jb3JlLklBc3luY0NvbnRlbnRDcmVhdGlvblwiKVxuXHRfX2ltcGxlbWVudHNfX3NhcF91aV9jb3JlX0lBc3luY0NvbnRlbnRDcmVhdGlvbiA9IHRydWU7XG5cblx0QGltcGxlbWVudEludGVyZmFjZShcInNhcC5mZS5jb3JlLmJ1aWxkaW5nQmxvY2tzLklCdWlsZGluZ0Jsb2NrT3duZXJDb21wb25lbnRcIilcblx0X19pbXBsZW1lbnRzX19zYXBfZmVfY29yZV9idWlsZGluZ0Jsb2Nrc19JQnVpbGRpbmdCbG9ja093bmVyQ29tcG9uZW50ID0gdHJ1ZTtcblxuXHQvKipcblx0ICogTmFtZSBvZiB0aGUgT0RhdGEgZW50aXR5IHNldFxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiwgZGVmYXVsdFZhbHVlOiBudWxsIH0pXG5cdGVudGl0eVNldDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cblx0LyoqXG5cdCAqIENvbnRleHQgUGF0aCBmb3IgcmVuZGVyaW5nIHRoZSB0ZW1wbGF0ZVxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiwgZGVmYXVsdFZhbHVlOiBudWxsIH0pXG5cdGNvbnRleHRQYXRoOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcIm9iamVjdFwiIH0pXG5cdHByZXByb2Nlc3NvckNvbnRleHQ/OiBYTUxQcmVwcm9jZXNzb3JDb250ZXh0O1xuXG5cdC8qKlxuXHQgKiBUaGUgcGF0dGVybiBmb3IgdGhlIGJpbmRpbmcgY29udGV4dCB0byBiZSBjcmVhdGUgYmFzZWQgb24gdGhlIHBhcmFtZXRlcnMgZnJvbSB0aGUgbmF2aWdhdGlvblxuXHQgKiBJZiBub3QgcHJvdmlkZWQgd2UnbGwgZGVmYXVsdCB0byB3aGF0IHdhcyBwYXNzZWQgaW4gdGhlIFVSTFxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRiaW5kaW5nQ29udGV4dFBhdHRlcm4hOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIE1hcCBvZiB1c2VkIE9EYXRhIG5hdmlnYXRpb25zIGFuZCBpdHMgcm91dGluZyB0YXJnZXRzXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcIm9iamVjdFwiIH0pXG5cdG5hdmlnYXRpb24hOiBSZWNvcmQ8c3RyaW5nLCBOYXZpZ2F0aW9uQ29uZmlndXJhdGlvbj47XG5cblx0LyoqXG5cdCAqIEVuaGFuY2UgdGhlIGkxOG4gYnVuZGxlIHVzZWQgZm9yIHRoaXMgcGFnZSB3aXRoIG9uZSBvciBtb3JlIGFwcCBzcGVjaWZpYyBpMThuIHJlc291cmNlIGJ1bmRsZXMgb3IgcmVzb3VyY2UgbW9kZWxzXG5cdCAqIG9yIGEgY29tYmluYXRpb24gb2YgYm90aC4gVGhlIGxhc3QgcmVzb3VyY2UgYnVuZGxlL21vZGVsIGlzIGdpdmVuIGhpZ2hlc3QgcHJpb3JpdHlcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nW11cIiB9KVxuXHRlbmhhbmNlSTE4biE6IHN0cmluZ1tdO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmUgY29udHJvbCByZWxhdGVkIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3Ncblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwib2JqZWN0XCIgfSlcblx0Y29udHJvbENvbmZpZ3VyYXRpb24/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcIm9iamVjdFwiIH0pXG5cdGlubGluZUVkaXQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuXHQvKipcblx0ICogQWRqdXN0cyB0aGUgdGVtcGxhdGUgY29udGVudFxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RcIiB9KVxuXHRjb250ZW50PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cblx0LyoqXG5cdCAqIFdoZXRoZXIgb3Igbm90IHlvdSBjYW4gcmVhY2ggdGhpcyBwYWdlIGRpcmVjdGx5IHRocm91Z2ggc2VtYW50aWMgYm9va21hcmtzXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRhbGxvd0RlZXBMaW5raW5nITogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgY29udGV4dCBwYXRoIG9uIHRoZSBjb21wb25lbnQgdGhhdCBpcyByZWZyZXNoZWQgd2hlbiB0aGUgYXBwIGlzIHJlc3RvcmVkIHVzaW5nIGtlZXAgYWxpdmUgbW9kZVxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RcIiB9KVxuXHRyZWZyZXNoU3RyYXRlZ3lPbkFwcFJlc3RvcmU6IHVua25vd247XG5cblx0LyoqXG5cdCAqIEhpZXJhcmNoeSBtb2RlIGZvciBicmVhZGNydW1ic1xuXHQgKiBOT1RFOiBCcmVhZGNydW1icyBzaGFsbCBub3QgYmUgc2hvd24gaWYgdGhpcyBwcm9wZXJ0eSBpcyBub3Qgc2V0LlxuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdGJyZWFkY3J1bWJzSGllcmFyY2h5TW9kZT86IEJyZWFkY3J1bWJzSGllcmFjaHlNb2RlO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0dmlld1R5cGUgPSBcIlhNTFwiO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0dmlld05hbWU/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRfanN4Vmlld05hbWUgPSBcIlwiO1xuXG5cdEBldmVudCgpXG5cdGNvbnRhaW5lckRlZmluZWQhOiBGdW5jdGlvbjtcblxuXHRAZXZlbnQoKVxuXHRoZXJvZXNCYXRjaFJlY2VpdmVkITogRnVuY3Rpb247XG5cblx0QGV2ZW50KClcblx0d29ya2Vyc0JhdGNoUmVjZWl2ZWQhOiBGdW5jdGlvbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiLCBkZWZhdWx0VmFsdWU6IE92ZXJmbG93VG9vbGJhclByaW9yaXR5LkhpZ2ggfSlcblx0c2hhcmVPdmVyZmxvd1ByaW9yaXR5PzogT3ZlcmZsb3dUb29sYmFyUHJpb3JpdHk7XG5cblx0cHJvdGVjdGVkIG9BcHBDb21wb25lbnQhOiBBcHBDb21wb25lbnQ7XG5cblx0cHJvdGVjdGVkIG9Db21wb25lbnREYXRhPzogb2JqZWN0O1xuXG5cdHByaXZhdGUgX3Jvb3RDb250cm9sbGVyPzogUGFnZUNvbnRyb2xsZXI7XG5cblx0Ly8gVGhlIGlkIG9mIGEgZnJhZ21lbnQgYmVpbmcgcHJvY2Vzc2VkLCBpdCB3aWxsIHRha2UgcHJpb3JpdHkgaW4gdGhlIElEIGdlbmVyYXRpb25cblx0cHJpdmF0ZSBfdGVtcG9yYXJ5RnJhZ21lbnRJZD86IHN0cmluZztcblxuXHRzZXRDb250YWluZXIob0NvbnRhaW5lcjogQ29tcG9uZW50Q29udGFpbmVyKTogdGhpcyB7XG5cdFx0c3VwZXIuc2V0Q29udGFpbmVyKG9Db250YWluZXIpO1xuXHRcdHRoaXMuZmlyZUV2ZW50KFwiY29udGFpbmVyRGVmaW5lZFwiLCB7IGNvbnRhaW5lcjogb0NvbnRhaW5lciB9KTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdGluaXQoKTogdm9pZCB7XG5cdFx0dGhpcy5vQXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHRoaXMpO1xuXHRcdHRoaXMub0NvbXBvbmVudERhdGEgPz89IHt9O1xuXHRcdHN1cGVyLmluaXQoKTtcblx0fVxuXG5cdC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSBVSTUgY29yZSB0byBhY2Nlc3MgdG8gdGhlIGNvbXBvbmVudCBjb250YWluaW5nIHRoZSBjdXN0b21pemluZyBjb25maWd1cmF0aW9uLlxuXHQvLyBhcyBjb250cm9sbGVyIGV4dGVuc2lvbnMgYXJlIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0IGZvciB0aGUgYXBwIGNvbXBvbmVudCBhbmQgbm90IGZvciB0aGVcblx0Ly8gdGVtcGxhdGUgY29tcG9uZW50IHdlIHJldHVybiB0aGUgYXBwIGNvbXBvbmVudC5cblx0Z2V0RXh0ZW5zaW9uQ29tcG9uZW50KCk6IEFwcENvbXBvbmVudCB7XG5cdFx0cmV0dXJuIHRoaXMub0FwcENvbXBvbmVudDtcblx0fVxuXG5cdGdldEFwcENvbXBvbmVudCgpOiBBcHBDb21wb25lbnQge1xuXHRcdHJldHVybiB0aGlzLm9BcHBDb21wb25lbnQ7XG5cdH1cblxuXHRzZXRSb290Q29udHJvbGxlcihjb250cm9sbGVyPzogUGFnZUNvbnRyb2xsZXIpOiB2b2lkIHtcblx0XHR0aGlzLl9yb290Q29udHJvbGxlciA9IGNvbnRyb2xsZXI7XG5cdH1cblxuXHRnZXRSb290Q29udHJvbGxlcigpOiBQYWdlQ29udHJvbGxlciB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3Qgcm9vdENvbnRyb2w6IFZpZXcgPSB0aGlzLmdldFJvb3RDb250cm9sKCk7XG5cdFx0bGV0IHJvb3RDb250cm9sbGVyOiBQYWdlQ29udHJvbGxlciB8IHVuZGVmaW5lZDtcblx0XHRpZiAocm9vdENvbnRyb2wgJiYgcm9vdENvbnRyb2wuZ2V0Q29udHJvbGxlcikge1xuXHRcdFx0cm9vdENvbnRyb2xsZXIgPSByb290Q29udHJvbC5nZXRDb250cm9sbGVyKCkgYXMgUGFnZUNvbnRyb2xsZXI7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJvb3RDb250cm9sbGVyID0gdGhpcy5fcm9vdENvbnRyb2xsZXI7XG5cdFx0fVxuXHRcdHJldHVybiByb290Q29udHJvbGxlcjtcblx0fVxuXG5cdG9uUGFnZVJlYWR5KG1QYXJhbWV0ZXJzOiB1bmtub3duKTogdm9pZCB7XG5cdFx0Y29uc3Qgcm9vdENvbnRyb2xsZXIgPSB0aGlzLmdldFJvb3RDb250cm9sbGVyKCk7XG5cdFx0aWYgKHJvb3RDb250cm9sbGVyICYmIHJvb3RDb250cm9sbGVyLm9uUGFnZVJlYWR5KSB7XG5cdFx0XHRyb290Q29udHJvbGxlci5vblBhZ2VSZWFkeShtUGFyYW1ldGVycyk7XG5cdFx0fVxuXHR9XG5cblx0Z2V0TmF2aWdhdGlvbkNvbmZpZ3VyYXRpb24oc1RhcmdldFBhdGg6IHN0cmluZyk6IE5hdmlnYXRpb25Db25maWd1cmF0aW9uIHtcblx0XHRjb25zdCBtTmF2aWdhdGlvbiA9IHRoaXMubmF2aWdhdGlvbjtcblx0XHRyZXR1cm4gbU5hdmlnYXRpb25bc1RhcmdldFBhdGhdO1xuXHR9XG5cblx0Z2V0Vmlld0RhdGEoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuXHRcdGNvbnN0IG1Qcm9wZXJ0aWVzID0gdGhpcy5nZXRNZXRhZGF0YSgpLmdldEFsbFByb3BlcnRpZXMoKTtcblx0XHRjb25zdCBvVmlld0RhdGEgPSBPYmplY3Qua2V5cyhtUHJvcGVydGllcykucmVkdWNlKChtVmlld0RhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBzUHJvcGVydHlOYW1lOiBzdHJpbmcpID0+IHtcblx0XHRcdG1WaWV3RGF0YVtzUHJvcGVydHlOYW1lXSA9IG1Qcm9wZXJ0aWVzW3NQcm9wZXJ0eU5hbWVdLmdldCEodGhpcyk7XG5cdFx0XHRyZXR1cm4gbVZpZXdEYXRhO1xuXHRcdH0sIHt9KTtcblx0XHRkZWxldGUgb1ZpZXdEYXRhLnByZXByb2Nlc3NvckNvbnRleHQ7XG5cdFx0Ly8gQWNjZXNzIHRoZSBpbnRlcm5hbCBfaXNGY2xFbmFibGVkIHdoaWNoIHdpbGwgYmUgdGhlcmVcblx0XHRvVmlld0RhdGEuZmNsRW5hYmxlZCA9IHRoaXMub0FwcENvbXBvbmVudC5faXNGY2xFbmFibGVkKCk7XG5cdFx0Y29uc3Qgcm91dGluZ1RhcmdldE5hbWUgPSB0aGlzLm9BcHBDb21wb25lbnQuZ2V0Um91dGluZ1NlcnZpY2UoKS5nZXRUYXJnZXROYW1lKHRoaXMpO1xuXHRcdG9WaWV3RGF0YS5pc0lubGluZUVkaXRFbmFibGVkID0gcm91dGluZ1RhcmdldE5hbWVcblx0XHRcdD8gdGhpcy5vQXBwQ29tcG9uZW50LmdldElubGluZUVkaXRTZXJ2aWNlKCkuZG9lc1BhZ2VIYXZlSW5saW5lRWRpdChyb3V0aW5nVGFyZ2V0TmFtZSlcblx0XHRcdDogZmFsc2U7XG5cblx0XHRyZXR1cm4gb1ZpZXdEYXRhO1xuXHR9XG5cblx0YXN5bmMgX2dldFBhZ2VUaXRsZUluZm9ybWF0aW9uKCk6IFByb21pc2U8VGl0bGVJbmZvcm1hdGlvbj4ge1xuXHRcdGNvbnN0IHJvb3RDb250cm9sID0gdGhpcy5nZXRSb290Q29udHJvbCgpO1xuXHRcdGlmIChyb290Q29udHJvbCAmJiByb290Q29udHJvbC5nZXRDb250cm9sbGVyKCkgJiYgcm9vdENvbnRyb2wuZ2V0Q29udHJvbGxlcigpLl9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbikge1xuXHRcdFx0cmV0dXJuIHJvb3RDb250cm9sLmdldENvbnRyb2xsZXIoKS5fZ2V0UGFnZVRpdGxlSW5mb3JtYXRpb24oKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSh7fSBhcyBUaXRsZUluZm9ybWF0aW9uKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGJyb3dzZXIgdGl0bGUgaW5mb3JtYXRpb24gZm9yIGNvbXBvbmVudC5cblx0ICogQHBhcmFtIHBhZ2VUaXRsZUluZm9ybWF0aW9uIFByZXNlbnQgcGFnZSB0aXRsZSBpbmZvcm1hdGlvblxuXHQgKiBAcmV0dXJucyBUaXRsZSBpbmZvcm1hdGlvbiB0byBiZSB1c2VkIGJ5IHNoZWxsIHNlcnZpY2VzIGZvciBicm93c2VyIHRpdGxlXG5cdCAqL1xuXHRhc3luYyBfZ2V0QnJvd3NlclRpdGxlKHBhZ2VUaXRsZUluZm9ybWF0aW9uOiBUaXRsZUluZm9ybWF0aW9uKTogUHJvbWlzZTxUaXRsZUFkZGl0aW9uYWxJbmZvIHwgdW5kZWZpbmVkPiB7XG5cdFx0Y29uc3Qgcm9vdENvbnRyb2wgPSB0aGlzLmdldFJvb3RDb250cm9sKCk7XG5cdFx0cmV0dXJuIHJvb3RDb250cm9sLmdldENvbnRyb2xsZXIoKT8uX2dldEJyb3dzZXJUaXRsZShwYWdlVGl0bGVJbmZvcm1hdGlvbik7XG5cdH1cblxuXHRnZXRFeHRlbnNpb25BUEkoKTogRXh0ZW5zaW9uQVBJIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRSb290Q29udHJvbCgpLmdldENvbnRyb2xsZXIoKS5nZXRFeHRlbnNpb25BUEkoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIG1ldGFtb2RlbCBmb3IgdGhlIGdpdmVuIG1ldGFtb2RlbCByZWZlcmVuY2UgKElEIC8gbmFtZSBvciB1bmRlZmluZWQgZm9yIHRoZSBkZWZhdWx0IG9uZSkuXG5cdCAqIEBwYXJhbSBtZXRhTW9kZWxSZWZlcmVuY2UgVGhlIG1ldGFtb2RlbCByZWZlcmVuY2Vcblx0ICogQHJldHVybnMgVGhlIGNvcnJlY3QgbWV0YW1vZGVsIGlmIGl0IGV4aXRzXG5cdCAqL1xuXHRnZXRNZXRhTW9kZWwobWV0YU1vZGVsUmVmZXJlbmNlPzogc3RyaW5nKTogT0RhdGFNZXRhTW9kZWwgfCB1bmRlZmluZWQge1xuXHRcdGlmICghbWV0YU1vZGVsUmVmZXJlbmNlKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5wcmVwcm9jZXNzb3JDb250ZXh0Py5tb2RlbHMubWV0YU1vZGVsIGFzIE9EYXRhTWV0YU1vZGVsIHwgdW5kZWZpbmVkO1xuXHRcdH0gZWxzZSBpZiAobWV0YU1vZGVsUmVmZXJlbmNlLnN0YXJ0c1dpdGgoXCJpZC1cIikpIHtcblx0XHRcdHJldHVybiBnZXRNZXRhTW9kZWxCeUlkKG1ldGFNb2RlbFJlZmVyZW5jZSk7XG5cdFx0fSBlbHNlIGlmICghdGhpcy5nZXRNb2RlbChtZXRhTW9kZWxSZWZlcmVuY2UpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRBcHBDb21wb25lbnQoKS5nZXRNb2RlbChtZXRhTW9kZWxSZWZlcmVuY2UpPy5nZXRNZXRhTW9kZWwoKSBhcyBPRGF0YU1ldGFNb2RlbCB8IHVuZGVmaW5lZDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRoaXMuZ2V0TW9kZWwobWV0YU1vZGVsUmVmZXJlbmNlKT8uZ2V0TWV0YU1vZGVsKCkgYXMgT0RhdGFNZXRhTW9kZWwgfCB1bmRlZmluZWQ7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgZnVsbCBjb250ZXh0IHBhdGggZm9yIHRoZSBnaXZlbiBtZXRhbW9kZWwgcmVmZXJlbmNlIChJRCAvIG5hbWUgb3IgdW5kZWZpbmVkIGZvciB0aGUgZGVmYXVsdCBvbmUpLlxuXHQgKiBAcGFyYW0gbWV0YU1vZGVsUmVmZXJlbmNlIFRoZSBtZXRhbW9kZWwgcmVmZXJlbmNlXG5cdCAqIEByZXR1cm5zIFRoZSBjb3JyZWN0IGZ1bGwgY29udGV4dCBwYXRoXG5cdCAqL1xuXHRnZXRGdWxsQ29udGV4dFBhdGgobWV0YU1vZGVsUmVmZXJlbmNlPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAoIW1ldGFNb2RlbFJlZmVyZW5jZSkge1xuXHRcdFx0cmV0dXJuIHRoaXMucHJlcHJvY2Vzc29yQ29udGV4dD8uZnVsbENvbnRleHRQYXRoO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIE1hbmlmZXN0V3JhcHBlciBmb3IgdGhlIGN1cnJlbnQgdmlldy5cblx0ICogQHJldHVybnMgVGhlIE1hbmlmZXN0V3JhcHBlclxuXHQgKi9cblx0Z2V0TWFuaWZlc3RXcmFwcGVyKCk6IE1hbmlmZXN0V3JhcHBlciB7XG5cdFx0cmV0dXJuIG5ldyBNYW5pZmVzdFdyYXBwZXIodGhpcy5nZXRWaWV3RGF0YSgpIGFzIEJhc2VNYW5pZmVzdFNldHRpbmdzKTtcblx0fVxuXG5cdF9nZXRDb250cm9sbGVyTmFtZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cbn1cbmludGVyZmFjZSBUZW1wbGF0ZUNvbXBvbmVudCB7XG5cdC8vIFRPRE86IHRoaXMgc2hvdWxkIGJlIGlkZWFsbHkgYmUgaGFuZGxlZCBieSB0aGUgZWRpdGZsb3cvcm91dGluZyB3aXRob3V0IHRoZSBuZWVkIHRvIGhhdmUgdGhpcyBtZXRob2QgaW4gdGhlIG9iamVjdCBwYWdlIC0gZm9yIG5vdyBrZWVwIGl0IGhlcmVcblx0Y3JlYXRlRGVmZXJyZWRDb250ZXh0Pyhcblx0XHRzUGF0aDogc3RyaW5nLFxuXHRcdG9MaXN0QmluZGluZzogT0RhdGFMaXN0QmluZGluZyB8IHVuZGVmaW5lZCxcblx0XHRwYXJlbnRDb250ZXh0OiBDb250ZXh0IHwgdW5kZWZpbmVkLFxuXHRcdGRhdGE6IG9iamVjdCB8IHVuZGVmaW5lZCxcblx0XHRiQWN0aW9uQ3JlYXRlOiBib29sZWFuXG5cdCk6IHZvaWQ7XG5cdGlzT3BlbkluRWRpdE1vZGUoKTogYm9vbGVhbjtcblx0Z2V0Um9vdENvbnRyb2woKTogeyBnZXRDb250cm9sbGVyKCk6IFBhZ2VDb250cm9sbGVyIH0gJiBWaWV3O1xuXHRleHRlbmRQYWdlRGVmaW5pdGlvbj8ocGFnZURlZmluaXRpb246IHt9LCBjb252ZXJ0ZXJDb250ZXh0PzogQ29udmVydGVyQ29udGV4dCk6IHt9O1xuXHRnZXRNb2RlbCgpOiBPRGF0YU1vZGVsO1xuXHRnZXRNb2RlbChtb2RlbE5hbWU6IFwiX3BhZ2VNb2RlbFwiKTogSlNPTk1vZGVsO1xuXHRnZXRNb2RlbChtb2RlbE5hbWU/OiBzdHJpbmcpOiBNb2RlbCB8IHVuZGVmaW5lZDtcbn1cbmV4cG9ydCBkZWZhdWx0IFRlbXBsYXRlQ29tcG9uZW50O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BeURNQSxpQkFBaUIsSUFBQUMsSUFBQSxHQUR0QkMsY0FBYyxDQUFDLCtCQUErQixDQUFDLEVBQUFDLEtBQUEsR0FFOUNDLGtCQUFrQixDQUFDLG1DQUFtQyxDQUFDLEVBQUFDLEtBQUEsR0FHdkRELGtCQUFrQixDQUFDLHlEQUF5RCxDQUFDLEVBQUFFLEtBQUEsR0FNN0VDLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUUsUUFBUTtJQUFFQyxZQUFZLEVBQUU7RUFBSyxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQU1oREgsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRSxRQUFRO0lBQUVDLFlBQVksRUFBRTtFQUFLLENBQUMsQ0FBQyxFQUFBRSxLQUFBLEdBR2hESixRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVMsQ0FBQyxDQUFDLEVBQUFJLEtBQUEsR0FPNUJMLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBUyxDQUFDLENBQUMsRUFBQUssS0FBQSxHQU01Qk4sUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxFQUFBTSxLQUFBLEdBTzVCUCxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVcsQ0FBQyxDQUFDLEVBQUFPLE1BQUEsR0FNOUJSLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBUyxDQUFDLENBQUMsRUFBQVEsTUFBQSxHQUc1QlQsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxFQUFBUyxNQUFBLEdBTTVCVixRQUFRLENBQUM7SUFB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
|
|
@@ -25,6 +25,7 @@ import type Context from "sap/ui/model/odata/v4/Context";
|
|
|
25
25
|
import type ODataListBinding from "sap/ui/model/odata/v4/ODataListBinding";
|
|
26
26
|
import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
|
|
27
27
|
import type ODataModel from "sap/ui/model/odata/v4/ODataModel";
|
|
28
|
+
import type { TitleAdditionalInfo } from "sap/ushell/ui5service/ShellUIService";
|
|
28
29
|
|
|
29
30
|
export type NavigationConfiguration = {
|
|
30
31
|
detail: {
|
|
@@ -155,6 +156,8 @@ class TemplateComponent extends UIComponent implements IAsyncContentCreation, IB
|
|
|
155
156
|
|
|
156
157
|
protected oAppComponent!: AppComponent;
|
|
157
158
|
|
|
159
|
+
protected oComponentData?: object;
|
|
160
|
+
|
|
158
161
|
private _rootController?: PageController;
|
|
159
162
|
|
|
160
163
|
// The id of a fragment being processed, it will take priority in the ID generation
|
|
@@ -168,6 +171,7 @@ class TemplateComponent extends UIComponent implements IAsyncContentCreation, IB
|
|
|
168
171
|
|
|
169
172
|
init(): void {
|
|
170
173
|
this.oAppComponent = CommonUtils.getAppComponent(this);
|
|
174
|
+
this.oComponentData ??= {};
|
|
171
175
|
super.init();
|
|
172
176
|
}
|
|
173
177
|
|
|
@@ -182,7 +186,7 @@ class TemplateComponent extends UIComponent implements IAsyncContentCreation, IB
|
|
|
182
186
|
return this.oAppComponent;
|
|
183
187
|
}
|
|
184
188
|
|
|
185
|
-
setRootController(controller
|
|
189
|
+
setRootController(controller?: PageController): void {
|
|
186
190
|
this._rootController = controller;
|
|
187
191
|
}
|
|
188
192
|
|
|
@@ -235,6 +239,16 @@ class TemplateComponent extends UIComponent implements IAsyncContentCreation, IB
|
|
|
235
239
|
}
|
|
236
240
|
}
|
|
237
241
|
|
|
242
|
+
/**
|
|
243
|
+
* Get browser title information for component.
|
|
244
|
+
* @param pageTitleInformation Present page title information
|
|
245
|
+
* @returns Title information to be used by shell services for browser title
|
|
246
|
+
*/
|
|
247
|
+
async _getBrowserTitle(pageTitleInformation: TitleInformation): Promise<TitleAdditionalInfo | undefined> {
|
|
248
|
+
const rootControl = this.getRootControl();
|
|
249
|
+
return rootControl.getController()?._getBrowserTitle(pageTitleInformation);
|
|
250
|
+
}
|
|
251
|
+
|
|
238
252
|
getExtensionAPI(): ExtensionAPI {
|
|
239
253
|
return this.getRootControl().getController().getExtensionAPI();
|
|
240
254
|
}
|
|
@@ -293,6 +307,6 @@ interface TemplateComponent {
|
|
|
293
307
|
extendPageDefinition?(pageDefinition: {}, converterContext?: ConverterContext): {};
|
|
294
308
|
getModel(): ODataModel;
|
|
295
309
|
getModel(modelName: "_pageModel"): JSONModel;
|
|
296
|
-
getModel(modelName
|
|
310
|
+
getModel(modelName?: string): Model | undefined;
|
|
297
311
|
}
|
|
298
312
|
export default TemplateComponent;
|
|
@@ -28,6 +28,11 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BuildingBlockBase", "sap/fe/base/Cla
|
|
|
28
28
|
let BuildingBlock = (_dec = defineUI5Class("sap.fe.core.buildingBlocks.BuildingBlock"), _dec2 = property({
|
|
29
29
|
type: "string"
|
|
30
30
|
}), _dec(_class = (_class2 = (_BuildingBlock = /*#__PURE__*/function (_BuildingBlockBase) {
|
|
31
|
+
/**
|
|
32
|
+
* Flag to indicate if the metadata check should be delayed until the modelContextChange event is fired.
|
|
33
|
+
* This is useful to avoid creating too much performance overhead when the building block is created
|
|
34
|
+
*/
|
|
35
|
+
|
|
31
36
|
function BuildingBlock(settings, others) {
|
|
32
37
|
var _this;
|
|
33
38
|
_this = _BuildingBlockBase.call(this, settings, others) || this;
|
|
@@ -35,7 +40,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BuildingBlockBase", "sap/fe/base/Cla
|
|
|
35
40
|
* The metamodel name or id to be used for this building block
|
|
36
41
|
*/
|
|
37
42
|
_initializerDefineProperty(_this, "metaModel", _descriptor, _this);
|
|
38
|
-
_this.
|
|
43
|
+
_this._visibilityCheck = false;
|
|
44
|
+
_this._registeredHooks = false;
|
|
39
45
|
_this.notifyBBObservers();
|
|
40
46
|
return _this;
|
|
41
47
|
}
|
|
@@ -45,7 +51,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BuildingBlockBase", "sap/fe/base/Cla
|
|
|
45
51
|
this._applyingSettings = true;
|
|
46
52
|
_BuildingBlockBase.prototype.applySettings.call(this, mSettings, oScope);
|
|
47
53
|
this._applyingSettings = false;
|
|
48
|
-
this._checkIfMetadataReady(
|
|
54
|
+
this._checkIfMetadataReady();
|
|
49
55
|
return this;
|
|
50
56
|
};
|
|
51
57
|
_proto.notifyBBObservers = function notifyBBObservers() {
|
|
@@ -98,6 +104,10 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BuildingBlockBase", "sap/fe/base/Cla
|
|
|
98
104
|
* for example becuase of lazy loading, then it is recommended not to await on the promise and instead use Promise.then().
|
|
99
105
|
*/;
|
|
100
106
|
_proto._getOwner = function _getOwner() {
|
|
107
|
+
let failOnNullContext = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
108
|
+
if (this._visibilityCheck && !this.getVisible()) {
|
|
109
|
+
return undefined;
|
|
110
|
+
}
|
|
101
111
|
//eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
102
112
|
let control = this;
|
|
103
113
|
let owner = Component.getOwnerComponentFor(control);
|
|
@@ -108,9 +118,15 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BuildingBlockBase", "sap/fe/base/Cla
|
|
|
108
118
|
}
|
|
109
119
|
}
|
|
110
120
|
if (owner?.isA("sap.fe.core.TemplateComponent")) {
|
|
121
|
+
if (failOnNullContext && owner.getAppComponent().delayMetadataCheck && !this.getBindingContext()) {
|
|
122
|
+
return undefined;
|
|
123
|
+
}
|
|
111
124
|
return owner;
|
|
112
125
|
}
|
|
113
126
|
if (owner?.isA("sap.fe.core.buildingBlocks.IBuildingBlockOwnerComponent")) {
|
|
127
|
+
if (failOnNullContext && owner.getAppComponent().delayMetadataCheck && !this.getBindingContext()) {
|
|
128
|
+
return undefined;
|
|
129
|
+
}
|
|
114
130
|
return owner;
|
|
115
131
|
}
|
|
116
132
|
}
|
|
@@ -121,11 +137,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BuildingBlockBase", "sap/fe/base/Cla
|
|
|
121
137
|
* @returns The page controller instance
|
|
122
138
|
*/;
|
|
123
139
|
_proto.getPageController = function getPageController() {
|
|
124
|
-
let logError = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
125
140
|
const pageController = this._getOwner()?.getRootController?.();
|
|
126
|
-
if (!pageController && logError) {
|
|
127
|
-
Log.error("No sap.fe.core.PageController found");
|
|
128
|
-
}
|
|
129
141
|
return pageController;
|
|
130
142
|
};
|
|
131
143
|
_proto.getMetaModel = function getMetaModel() {
|
|
@@ -143,34 +155,32 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BuildingBlockBase", "sap/fe/base/Cla
|
|
|
143
155
|
};
|
|
144
156
|
_proto.destroy = function destroy(suppressInvalidate) {
|
|
145
157
|
if (this.isA("sap.fe.core.controllerextensions.viewState.IViewStateContributor")) {
|
|
146
|
-
this.getPageController(
|
|
158
|
+
this.getPageController()?.viewState?.deregisterStateContributor(this);
|
|
147
159
|
}
|
|
148
|
-
if (this.getPageController(
|
|
160
|
+
if (this.getPageController()) {
|
|
149
161
|
removeControllerExtensionHookHandlers(this, this.getPageController());
|
|
150
162
|
}
|
|
151
163
|
this.notifyBBObservers(true);
|
|
152
164
|
_BuildingBlockBase.prototype.destroy.call(this, suppressInvalidate);
|
|
153
165
|
};
|
|
154
166
|
_proto._checkIfMetadataReady = function _checkIfMetadataReady() {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
if (owner) {
|
|
158
|
-
try {
|
|
159
|
-
this.onMetadataAvailable(owner);
|
|
160
|
-
} catch (err) {
|
|
161
|
-
Log.error(`Error creating content for building block ${this.getMetadata().getName()} with ID: ${this.getId()}`, err);
|
|
162
|
-
}
|
|
167
|
+
const owner = this._getOwner(this._doNotCreateOnNullContext);
|
|
168
|
+
if (!this._registeredHooks && this.getPageController() !== undefined) {
|
|
163
169
|
if (this.isA("sap.fe.core.controllerextensions.viewState.IViewStateContributor")) {
|
|
164
170
|
this.getPageController()?.viewState.registerStateContributor(this);
|
|
165
171
|
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
172
|
+
initControllerExtensionHookHandlers(this, this.getPageController());
|
|
173
|
+
this._registeredHooks = true;
|
|
174
|
+
}
|
|
175
|
+
if (owner) {
|
|
176
|
+
owner.runAsOwner(() => {
|
|
177
|
+
try {
|
|
178
|
+
this.onMetadataAvailable(owner);
|
|
179
|
+
} catch (err) {
|
|
180
|
+
Log.error(`Error creating content for building block ${this.getMetadata().getName()} with ID: ${this.getId()}`, err);
|
|
181
|
+
}
|
|
182
|
+
});
|
|
169
183
|
} else {
|
|
170
|
-
if (!fromApplySettings && !this.content) {
|
|
171
|
-
// In case couldn't create the content during the applySettings, try again
|
|
172
|
-
Log.warning("The building block was not created within an ExtensionAPI.runWithFPMContext call, for performance reason it's recommended to do so.", this);
|
|
173
|
-
}
|
|
174
184
|
this.attachEventOnce("modelContextChange", function () {
|
|
175
185
|
this._checkIfMetadataReady();
|
|
176
186
|
});
|
|
@@ -279,6 +289,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BuildingBlockBase", "sap/fe/base/Cla
|
|
|
279
289
|
_proto.getOwnerPageDefinition = function getOwnerPageDefinition() {
|
|
280
290
|
return this._getOwner()?.preprocessorContext?.getDefinitionForPage();
|
|
281
291
|
};
|
|
292
|
+
_proto.getInternalModel = function getInternalModel() {
|
|
293
|
+
return this.getModel("internal") ?? this._getOwner()?.getModel("internal");
|
|
294
|
+
};
|
|
282
295
|
return BuildingBlock;
|
|
283
296
|
}(BuildingBlockBase), _BuildingBlock._bbobserverMap = new Map(), _BuildingBlock), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "metaModel", [_dec2], {
|
|
284
297
|
configurable: true,
|
|
@@ -288,4 +301,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BuildingBlockBase", "sap/fe/base/Cla
|
|
|
288
301
|
}), _class2)) || _class);
|
|
289
302
|
return BuildingBlock;
|
|
290
303
|
}, false);
|
|
291
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdWlsZGluZ0Jsb2NrIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJwcm9wZXJ0eSIsInR5cGUiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2siLCJfQnVpbGRpbmdCbG9ja0Jhc2UiLCJzZXR0aW5ncyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfYXBwbHlpbmdTZXR0aW5ncyIsIm5vdGlmeUJCT2JzZXJ2ZXJzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJhcHBseVNldHRpbmdzIiwibVNldHRpbmdzIiwib1Njb3BlIiwiX2NoZWNrSWZNZXRhZGF0YVJlYWR5IiwiZGVzdHJveSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImJib2JzZXJ2ZXJNYXAiLCJfYmJvYnNlcnZlck1hcCIsImdldCIsImdldElkIiwib2JzZXJ2ZUJCIiwib25EZXN0cm95Iiwib25BdmFpbGFibGUiLCJvYnNlcnZlQnVpbGRpbmdCbG9jayIsImlkIiwicGFyYW1ldGVycyIsImVsZW1lbnQiLCJFbGVtZW50UmVnaXN0cnkiLCJwdXNoIiwic2V0IiwiX2dldE93bmVyIiwiY29udHJvbCIsIm93bmVyIiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJpc0EiLCJnZXRQYXJlbnQiLCJnZXRQYWdlQ29udHJvbGxlciIsImxvZ0Vycm9yIiwicGFnZUNvbnRyb2xsZXIiLCJnZXRSb290Q29udHJvbGxlciIsIkxvZyIsImVycm9yIiwiZ2V0TWV0YU1vZGVsIiwibWV0YU1vZGVsIiwic3RhcnRzV2l0aCIsImdldE1ldGFNb2RlbEJ5SWQiLCJzdXBwcmVzc0ludmFsaWRhdGUiLCJ2aWV3U3RhdGUiLCJkZXJlZ2lzdGVyU3RhdGVDb250cmlidXRvciIsInJlbW92ZUNvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnMiLCJmcm9tQXBwbHlTZXR0aW5ncyIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJlcnIiLCJnZXRNZXRhZGF0YSIsImdldE5hbWUiLCJyZWdpc3RlclN0YXRlQ29udHJpYnV0b3IiLCJpbml0Q29udHJvbGxlckV4dGVuc2lvbkhvb2tIYW5kbGVycyIsImNvbnRlbnQiLCJ3YXJuaW5nIiwiYXR0YWNoRXZlbnRPbmNlIiwiY2xvbmUiLCJzSWRTdWZmaXgiLCJhTG9jYWxJZHMiLCJydW5Bc093bmVyIiwiX293bmVyQ29tcG9uZW50IiwiZ2V0QXBwQ29tcG9uZW50IiwiZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCIsInRhcmdldFBhdGgiLCJ0YXJnZXRQYXRoVG9Vc2UiLCJnZXRPd25lckNvbnRleHRQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzRm9yVGFyZ2V0UGF0aCIsImdldEZ1bGxDb250ZXh0UGF0aCIsImdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoIiwibWV0YXBhdGgiLCJjb250ZXh0UGF0aCIsImNvbnRleHRQYXRoVG9Vc2UiLCJnZXRDb21wdXRlZENvbnRleHRQYXRoIiwicmVzb2x2ZWRDb250ZXh0UGF0aCIsImVuZHNXaXRoIiwiY2hhckF0IiwiRXJyb3IiLCJtZXRhQ29udGV4dCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwibWV0YVBhdGhDb250ZXh0IiwiTWV0YU1vZGVsQ29udmVydGVyIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiZ2V0TWV0YVBhdGhPYmplY3QiLCJtZXRhUGF0aCIsIk1ldGFQYXRoIiwiY29udmVydFR5cGVzIiwiZSIsImNyZWF0ZUlkIiwiX2xlbiIsInN0cmluZ1BhcnRzIiwiQXJyYXkiLCJfa2V5IiwiZ2VuZXJhdGUiLCJnZXRUcmFuc2xhdGVkVGV4dCIsInRleHRJRCIsImdldE1vZGVsIiwiZ2V0VGV4dCIsImdldE1hbmlmZXN0V3JhcHBlciIsImdldE93bmVyUGFnZURlZmluaXRpb24iLCJwcmVwcm9jZXNzb3JDb250ZXh0IiwiZ2V0RGVmaW5pdGlvbkZvclBhZ2UiLCJCdWlsZGluZ0Jsb2NrQmFzZSIsIk1hcCIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQnVpbGRpbmdCbG9jay50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrQmFzZSBmcm9tIFwic2FwL2ZlL2Jhc2UvQnVpbGRpbmdCbG9ja0Jhc2VcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgaW5pdENvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnMsIHJlbW92ZUNvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnMgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvSG9va1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgRkVWaWV3IH0gZnJvbSBcInNhcC9mZS9jb3JlL0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIFJlc291cmNlTW9kZWwgZnJvbSBcInNhcC9mZS9jb3JlL1Jlc291cmNlTW9kZWxcIjtcbmltcG9ydCB0eXBlIFRlbXBsYXRlQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9UZW1wbGF0ZUNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy92aWV3U3RhdGUvSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yXCI7XG5pbXBvcnQgdHlwZSBNYW5pZmVzdFdyYXBwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RXcmFwcGVyXCI7XG5pbXBvcnQgKiBhcyBNZXRhTW9kZWxDb252ZXJ0ZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgeyBjb252ZXJ0VHlwZXMsIGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0c0ZvclRhcmdldFBhdGgsIGdldE1ldGFNb2RlbEJ5SWQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB0eXBlIHsgRGVmaW5pdGlvblBhZ2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvZGVmaW5pdGlvbi9GRURlZmluaXRpb25cIjtcbmltcG9ydCBNZXRhUGF0aCBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9NZXRhUGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBBdXRob3JpemVkSWRBbm5vdGF0aW9uc1R5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgeyAkTWFuYWdlZE9iamVjdFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCBDb21wb25lbnQgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IEVsZW1lbnRSZWdpc3RyeSBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFJlZ2lzdHJ5XCI7XG5cbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwiLi4vQXBwQ29tcG9uZW50XCI7XG5cbmV4cG9ydCB0eXBlIE9ic2VydmVCdWlsZGluZ0Jsb2NrID0ge1xuXHRvbkF2YWlsYWJsZT86IChiYjogVUk1RWxlbWVudCkgPT4gdm9pZDtcblx0b25EZXN0cm95PzogKGJiOiBVSTVFbGVtZW50KSA9PiB2b2lkO1xufTtcbi8qKlxuICogRGVmaW5lcyBhIGNvbnRyb2wgdGhhdCB3aWxsIG5vdCBleGlzdCBpbiB0aGUgRE9NLlxuICogSW5zdGVhZCwgb25seSBpdHMgY2hpbGQgd2lsbCBiZSB0aGVyZSBhbmQgdGhpcyBjb250cm9sIHdpbGwgZm9yd2FyZCBhbGwgRE9NIHJlbGF0ZWQgaW5zdHJ1Y3Rpb24gdG8gaXQuXG4gKiBAc2luY2UgMS4xMjEuMFxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5idWlsZGluZ0Jsb2Nrcy5CdWlsZGluZ0Jsb2NrXCIpXG5jbGFzcyBCdWlsZGluZ0Jsb2NrPFQgZXh0ZW5kcyBVSTVFbGVtZW50ID0gQ29udHJvbCwgSyBleHRlbmRzIG9iamVjdCA9IHt9PiBleHRlbmRzIEJ1aWxkaW5nQmxvY2tCYXNlPFQsIEs+IHtcblx0LyoqXG5cdCAqIFRoZSBtZXRhbW9kZWwgbmFtZSBvciBpZCB0byBiZSB1c2VkIGZvciB0aGlzIGJ1aWxkaW5nIGJsb2NrXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdG1ldGFNb2RlbD86IHN0cmluZztcblxuXHRwcm90ZWN0ZWQgX2FwcGx5aW5nU2V0dGluZ3MgPSBmYWxzZTtcblxuXHRwcml2YXRlIHN0YXRpYyBfYmJvYnNlcnZlck1hcDogTWFwPHN0cmluZywgT2JzZXJ2ZUJ1aWxkaW5nQmxvY2tbXT4gPSBuZXcgTWFwKCk7XG5cblx0Y29uc3RydWN0b3Ioc2V0dGluZ3M/OiBzdHJpbmcgfCBQcm9wZXJ0aWVzT2Y8QnVpbGRpbmdCbG9ja0Jhc2U8VD4+LCBvdGhlcnM/OiBQcm9wZXJ0aWVzT2Y8QnVpbGRpbmdCbG9ja0Jhc2U8VD4+KSB7XG5cdFx0c3VwZXIoc2V0dGluZ3MsIG90aGVycyk7XG5cdFx0dGhpcy5ub3RpZnlCQk9ic2VydmVycygpO1xuXHR9XG5cblx0b3ZlcnJpZGUgYXBwbHlTZXR0aW5ncyhtU2V0dGluZ3M6ICRNYW5hZ2VkT2JqZWN0U2V0dGluZ3MsIG9TY29wZT86IG9iamVjdCk6IHRoaXMge1xuXHRcdHRoaXMuX2FwcGx5aW5nU2V0dGluZ3MgPSB0cnVlO1xuXG5cdFx0c3VwZXIuYXBwbHlTZXR0aW5ncyhtU2V0dGluZ3MsIG9TY29wZSk7XG5cdFx0dGhpcy5fYXBwbHlpbmdTZXR0aW5ncyA9IGZhbHNlO1xuXHRcdHRoaXMuX2NoZWNrSWZNZXRhZGF0YVJlYWR5KHRydWUpO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRub3RpZnlCQk9ic2VydmVycyhkZXN0cm95ID0gZmFsc2UpOiB2b2lkIHtcblx0XHRjb25zdCBiYm9ic2VydmVyTWFwID0gQnVpbGRpbmdCbG9jay5fYmJvYnNlcnZlck1hcC5nZXQodGhpcy5nZXRJZCgpKTtcblx0XHRpZiAoYmJvYnNlcnZlck1hcCAmJiBiYm9ic2VydmVyTWFwLmxlbmd0aCA+IDApIHtcblx0XHRcdGZvciAoY29uc3Qgb2JzZXJ2ZUJCIG9mIGJib2JzZXJ2ZXJNYXApIHtcblx0XHRcdFx0aWYgKGRlc3Ryb3kpIHtcblx0XHRcdFx0XHRpZiAob2JzZXJ2ZUJCLm9uRGVzdHJveSkge1xuXHRcdFx0XHRcdFx0b2JzZXJ2ZUJCLm9uRGVzdHJveSh0aGlzKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSBpZiAob2JzZXJ2ZUJCLm9uQXZhaWxhYmxlKSB7XG5cdFx0XHRcdFx0b2JzZXJ2ZUJCLm9uQXZhaWxhYmxlKHRoaXMpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFsbG93cyB0byBvYnNlcnZlIGJ1aWxkaW5nIGJsb2NrIG9uY2UgaXQgaXMgY3JlYXRlZC5cblx0ICogQHBhcmFtIGlkIFRoZSBpZCBvZiB0aGUgYnVpbGRpbmcgYmxvY2sgd2hpY2ggd2lsbCBiZSBvYnNlcnZlZFxuXHQgKiBAcGFyYW0gcGFyYW1ldGVycyBUaGUgaWQgb2YgdGhlIGJ1aWxkaW5nIGJsb2NrIHdoaWNoIGlzIGJlaW5nIHJlcXVzdGVkXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzLm9uQXZhaWxhYmxlIENhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCB3aXRoIHRoZSBpbnN0YW5jZSBvZiB0aGUgQkIgd2hlbiBpdCBpcyBhdmFpbGFibGVcblx0ICogQHBhcmFtIHBhcmFtZXRlcnMub25EZXN0cm95IENhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCB3aXRoIHRoZSBpbnN0YW5jZSBvZiB0aGUgQkIgd2hlbiBpdCBpcyBkZXN0cm95ZWRcblx0ICovXG5cdHN0YXRpYyBvYnNlcnZlQnVpbGRpbmdCbG9jayhpZDogc3RyaW5nLCBwYXJhbWV0ZXJzOiBPYnNlcnZlQnVpbGRpbmdCbG9jayk6IHZvaWQge1xuXHRcdC8vaWYgKHBhcmFtZXRlcnMpXG5cdFx0Y29uc3QgZWxlbWVudCA9IEVsZW1lbnRSZWdpc3RyeS5nZXQoaWQpO1xuXHRcdC8vIGlmIHRoZSBlbGVtZW50IGlzIGFscmVhZHkgcmVnaXN0ZXJlZFxuXHRcdGlmIChlbGVtZW50KSB7XG5cdFx0XHRpZiAocGFyYW1ldGVycy5vbkF2YWlsYWJsZSkge1xuXHRcdFx0XHRwYXJhbWV0ZXJzLm9uQXZhaWxhYmxlKGVsZW1lbnQpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBiYm9ic2VydmVyTWFwID0gQnVpbGRpbmdCbG9jay5fYmJvYnNlcnZlck1hcC5nZXQoaWQpO1xuXHRcdFx0aWYgKGJib2JzZXJ2ZXJNYXApIHtcblx0XHRcdFx0YmJvYnNlcnZlck1hcC5wdXNoKHBhcmFtZXRlcnMpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0QnVpbGRpbmdCbG9jay5fYmJvYnNlcnZlck1hcC5zZXQoaWQsIFtwYXJhbWV0ZXJzXSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgaW5zdGFuY2Ugb2YgYSBidWlsZGluZyBibG9jayBiYXNlZCBvbmNlIGl0IGlzIHJlZ2lzdGVyZWQuXG5cdCAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIGJ1aWxkaW5nIGJsb2NrIHdoaWNoIGlzIGJlaW5nIHJlcXVzdGVkXG5cdCAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2ZWQgd2l0aCBhbiBpbnN0YW5jZSBvZiB0aGUgYnVpbGRpbmcgYmxvY2sgb25jZSBpdCBpcyByZWdpc3RlcmVkL2luc3RhbnRpZWQuXG5cdCAqIFx0IFRoZSBwcm9taXNlIGlzIHJlc29sdmVkIHdoZW4gdGhlIGJ1aWxkaW5nIGJsb2NrIGlzIGludGFudGllZCBoZW5jZSBpdCByZWNvbW1lbmRlZCB0byBvbmx5IGF3YWl0IG9uIHRoZSBwcm9taXNlXG5cdCAqIFx0IHdoZW4gaXQgaXMga25vd24gdGhhdCB0aGUgYnVpbGRpbmcgYmxvY2sgd2lsbCBiZSBhdmFpbGFibGUuIEluIGNhc2VzIGhlcmUgdGhlIGJ1aWxkaW5nIGJsb2NrIG1pZ2h0IG5vdCBiZSBhdmFpbGFibGUsXG5cdCAqIFx0IGZvciBleGFtcGxlIGJlY3Vhc2Ugb2YgbGF6eSBsb2FkaW5nLCB0aGVuIGl0IGlzIHJlY29tbWVuZGVkIG5vdCB0byBhd2FpdCBvbiB0aGUgcHJvbWlzZSBhbmQgaW5zdGVhZCB1c2UgUHJvbWlzZS50aGVuKCkuXG5cdCAqL1xuXG5cdF9nZXRPd25lcigpOiBUZW1wbGF0ZUNvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG5cdFx0Ly9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXNcblx0XHRsZXQgY29udHJvbDogQ29udHJvbCB8IHVuZGVmaW5lZCA9IHRoaXM7XG5cdFx0bGV0IG93bmVyID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKGNvbnRyb2wpO1xuXHRcdHdoaWxlICghb3duZXIgJiYgY29udHJvbCAmJiAhY29udHJvbC5pc0E8RkVWaWV3PihcInNhcC51aS5jb3JlLm12Yy5WaWV3XCIpKSB7XG5cdFx0XHRjb250cm9sID0gY29udHJvbC5nZXRQYXJlbnQoKSBhcyBDb250cm9sIHwgdW5kZWZpbmVkO1xuXHRcdFx0aWYgKGNvbnRyb2wpIHtcblx0XHRcdFx0b3duZXIgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IoY29udHJvbCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChvd25lcj8uaXNBPFRlbXBsYXRlQ29tcG9uZW50PihcInNhcC5mZS5jb3JlLlRlbXBsYXRlQ29tcG9uZW50XCIpKSB7XG5cdFx0XHRyZXR1cm4gb3duZXI7XG5cdFx0fVxuXHRcdGlmIChvd25lcj8uaXNBPFRlbXBsYXRlQ29tcG9uZW50PihcInNhcC5mZS5jb3JlLmJ1aWxkaW5nQmxvY2tzLklCdWlsZGluZ0Jsb2NrT3duZXJDb21wb25lbnRcIikpIHtcblx0XHRcdHJldHVybiBvd25lcjtcblx0XHR9XG5cdH1cblxuXHQvKlxuXHQgKiBHZXQgdGhlIHBhZ2UgY29udHJvbGxlciBpbnN0YW5jZVxuXHQgKiBAcGFyYW0gbG9nRXJyb3IgV2hldGhlciB0byBsb2cgYW4gZXJyb3IgaWYgdGhlIHBhZ2UgY29udHJvbGxlciBpcyBub3QgZm91bmRcblx0ICogQHJldHVybnMgVGhlIHBhZ2UgY29udHJvbGxlciBpbnN0YW5jZVxuXHQgKi9cblx0Z2V0UGFnZUNvbnRyb2xsZXIobG9nRXJyb3IgPSB0cnVlKTogUGFnZUNvbnRyb2xsZXIge1xuXHRcdGNvbnN0IHBhZ2VDb250cm9sbGVyID0gdGhpcy5fZ2V0T3duZXIoKT8uZ2V0Um9vdENvbnRyb2xsZXI/LigpO1xuXHRcdGlmICghcGFnZUNvbnRyb2xsZXIgJiYgbG9nRXJyb3IpIHtcblx0XHRcdExvZy5lcnJvcihcIk5vIHNhcC5mZS5jb3JlLlBhZ2VDb250cm9sbGVyIGZvdW5kXCIpO1xuXHRcdH1cblx0XHRyZXR1cm4gcGFnZUNvbnRyb2xsZXIhO1xuXHR9XG5cblx0Z2V0TWV0YU1vZGVsKCk6IE9EYXRhTWV0YU1vZGVsIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCk7XG5cdFx0aWYgKG93bmVyPy5pc0E8VGVtcGxhdGVDb21wb25lbnQ+KFwic2FwLmZlLmNvcmUuYnVpbGRpbmdCbG9ja3MuSUJ1aWxkaW5nQmxvY2tPd25lckNvbXBvbmVudFwiKSkge1xuXHRcdFx0bGV0IG1ldGFNb2RlbCA9IG93bmVyPy5nZXRNZXRhTW9kZWwodGhpcy5tZXRhTW9kZWwpO1xuXHRcdFx0Ly8gRmFsbGJhY2sgaW4gY2FzZSB0aGV5IGRvbid0IGFwcGx5IHRoZSBsb2dpYyBmb3IgdGhlIG1ldGFtb2RlbCBjb252ZXJ0ZXJcblx0XHRcdGlmICghbWV0YU1vZGVsICYmIHRoaXMubWV0YU1vZGVsPy5zdGFydHNXaXRoKFwiaWQtXCIpKSB7XG5cdFx0XHRcdG1ldGFNb2RlbCA9IGdldE1ldGFNb2RlbEJ5SWQodGhpcy5tZXRhTW9kZWwpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1ldGFNb2RlbDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIG93bmVyPy5nZXRNZXRhTW9kZWwodGhpcy5tZXRhTW9kZWwpO1xuXHRcdH1cblx0fVxuXG5cdG92ZXJyaWRlIGRlc3Ryb3koc3VwcHJlc3NJbnZhbGlkYXRlPzogYm9vbGVhbik6IHZvaWQge1xuXHRcdGlmICh0aGlzLmlzQTxJVmlld1N0YXRlQ29udHJpYnV0b3I8dW5rbm93bj4gJiBNYW5hZ2VkT2JqZWN0PihcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLnZpZXdTdGF0ZS5JVmlld1N0YXRlQ29udHJpYnV0b3JcIikpIHtcblx0XHRcdHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoZmFsc2UpPy52aWV3U3RhdGU/LmRlcmVnaXN0ZXJTdGF0ZUNvbnRyaWJ1dG9yKHRoaXMpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5nZXRQYWdlQ29udHJvbGxlcihmYWxzZSkpIHtcblx0XHRcdHJlbW92ZUNvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnModGhpcywgdGhpcy5nZXRQYWdlQ29udHJvbGxlcigpISk7XG5cdFx0fVxuXHRcdHRoaXMubm90aWZ5QkJPYnNlcnZlcnModHJ1ZSk7XG5cdFx0c3VwZXIuZGVzdHJveShzdXBwcmVzc0ludmFsaWRhdGUpO1xuXHR9XG5cblx0X2NoZWNrSWZNZXRhZGF0YVJlYWR5KGZyb21BcHBseVNldHRpbmdzID0gZmFsc2UpOiB2b2lkIHtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCk7XG5cdFx0aWYgKG93bmVyKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHR0aGlzLm9uTWV0YWRhdGFBdmFpbGFibGUob3duZXIpO1xuXHRcdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRcdExvZy5lcnJvcihcblx0XHRcdFx0XHRgRXJyb3IgY3JlYXRpbmcgY29udGVudCBmb3IgYnVpbGRpbmcgYmxvY2sgJHt0aGlzLmdldE1ldGFkYXRhKCkuZ2V0TmFtZSgpfSB3aXRoIElEOiAke3RoaXMuZ2V0SWQoKX1gLFxuXHRcdFx0XHRcdGVyciBhcyBFcnJvclxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKFxuXHRcdFx0XHR0aGlzLmlzQTxJVmlld1N0YXRlQ29udHJpYnV0b3I8dW5rbm93bj4gJiBNYW5hZ2VkT2JqZWN0PihcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLnZpZXdTdGF0ZS5JVmlld1N0YXRlQ29udHJpYnV0b3JcIilcblx0XHRcdCkge1xuXHRcdFx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk/LnZpZXdTdGF0ZS5yZWdpc3RlclN0YXRlQ29udHJpYnV0b3IodGhpcyk7XG5cdFx0XHR9XG5cdFx0XHRpZiAodGhpcy5nZXRQYWdlQ29udHJvbGxlcigpKSB7XG5cdFx0XHRcdGluaXRDb250cm9sbGVyRXh0ZW5zaW9uSG9va0hhbmRsZXJzKHRoaXMsIHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSEpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAoIWZyb21BcHBseVNldHRpbmdzICYmICF0aGlzLmNvbnRlbnQpIHtcblx0XHRcdFx0Ly8gSW4gY2FzZSBjb3VsZG4ndCBjcmVhdGUgdGhlIGNvbnRlbnQgZHVyaW5nIHRoZSBhcHBseVNldHRpbmdzLCB0cnkgYWdhaW5cblx0XHRcdFx0TG9nLndhcm5pbmcoXG5cdFx0XHRcdFx0XCJUaGUgYnVpbGRpbmcgYmxvY2sgd2FzIG5vdCBjcmVhdGVkIHdpdGhpbiBhbiBFeHRlbnNpb25BUEkucnVuV2l0aEZQTUNvbnRleHQgY2FsbCwgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbiBpdCdzIHJlY29tbWVuZGVkIHRvIGRvIHNvLlwiLFxuXHRcdFx0XHRcdHRoaXMgYXMgdW5rbm93biBhcyBzdHJpbmdcblx0XHRcdFx0KTtcblx0XHRcdH1cblxuXHRcdFx0dGhpcy5hdHRhY2hFdmVudE9uY2UoXCJtb2RlbENvbnRleHRDaGFuZ2VcIiwgZnVuY3Rpb24gKHRoaXM6IEJ1aWxkaW5nQmxvY2spOiB2b2lkIHtcblx0XHRcdFx0dGhpcy5fY2hlY2tJZk1ldGFkYXRhUmVhZHkoKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdGNsb25lKHNJZFN1ZmZpeD86IHN0cmluZywgYUxvY2FsSWRzPzogc3RyaW5nW10pOiB0aGlzIHtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCk7XG5cdFx0aWYgKG93bmVyKSB7XG5cdFx0XHRyZXR1cm4gb3duZXIucnVuQXNPd25lcigoKSA9PiB7XG5cdFx0XHRcdHJldHVybiBzdXBlci5jbG9uZShzSWRTdWZmaXgsIGFMb2NhbElkcyk7XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHN1cGVyLmNsb25lKHNJZFN1ZmZpeCwgYUxvY2FsSWRzKTtcblx0XHR9XG5cdH1cblxuXHRvbk1ldGFkYXRhQXZhaWxhYmxlKF9vd25lckNvbXBvbmVudDogVGVtcGxhdGVDb21wb25lbnQpOiB2b2lkIHtcblx0XHQvLyBUbyBiZSBvdmVycmlkZW4gYnkgdGhlIGNoaWxkIGNsYXNzXG5cdH1cblxuXHRnZXRBcHBDb21wb25lbnQoKTogQXBwQ29tcG9uZW50IHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCk7XG5cdFx0cmV0dXJuIG93bmVyPy5nZXRBcHBDb21wb25lbnQoKTtcblx0fVxuXG5cdGdldERhdGFNb2RlbE9iamVjdFBhdGg8Tj4odGFyZ2V0UGF0aD86IHN0cmluZyk6IERhdGFNb2RlbE9iamVjdFBhdGg8Tj4gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IHRoaXMuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Y29uc3QgdGFyZ2V0UGF0aFRvVXNlID0gdGFyZ2V0UGF0aCA/PyB0aGlzLmdldE93bmVyQ29udGV4dFBhdGgoKTtcblx0XHRyZXR1cm4gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzRm9yVGFyZ2V0UGF0aCh0YXJnZXRQYXRoVG9Vc2UhLCBtZXRhTW9kZWwpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgY29udGV4dCBwYXRoIGZyb20gdGhlIG93bmVyIGNvbXBvbmVudC5cblx0ICogQHJldHVybnMgVGhlIGNvbnRleHQgcGF0aFxuXHQgKi9cblx0Z2V0T3duZXJDb250ZXh0UGF0aCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG93bmVyID0gdGhpcy5fZ2V0T3duZXIoKSE7XG5cdFx0cmV0dXJuIG93bmVyLmdldEZ1bGxDb250ZXh0UGF0aCh0aGlzLm1ldGFNb2RlbCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBkYXRhIG1vZGVsIG9iamVjdCBmb3IgdGhlIGdpdmVuIG1ldGFwYXRoIGFuZCBvcHRpb25hbCBjb250ZXh0UGF0aC5cblx0ICogQHBhcmFtIG1ldGFwYXRoXG5cdCAqIEBwYXJhbSBjb250ZXh0UGF0aFxuXHQgKiBAcmV0dXJucyBUaGUgZGF0YSBtb2RlbCBvYmplY3QgcGF0aFxuXHQgKi9cblx0Z2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGg8RXhwZWN0ZWREYXRhTW9kZWxUeXBlPihcblx0XHRtZXRhcGF0aDogc3RyaW5nLFxuXHRcdGNvbnRleHRQYXRoPzogc3RyaW5nXG5cdCk6IERhdGFNb2RlbE9iamVjdFBhdGg8RXhwZWN0ZWREYXRhTW9kZWxUeXBlPiB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gdGhpcy5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBjb250ZXh0UGF0aFRvVXNlID0gdGhpcy5nZXRDb21wdXRlZENvbnRleHRQYXRoKGNvbnRleHRQYXRoKTtcblxuXHRcdGxldCByZXNvbHZlZENvbnRleHRQYXRoO1xuXHRcdGlmIChjb250ZXh0UGF0aFRvVXNlKSB7XG5cdFx0XHRyZXNvbHZlZENvbnRleHRQYXRoID0gY29udGV4dFBhdGhUb1VzZS5lbmRzV2l0aChcIi9cIikgPyBjb250ZXh0UGF0aFRvVXNlIDogY29udGV4dFBhdGhUb1VzZSArIFwiL1wiO1xuXHRcdH1cblx0XHRpZiAoIW1ldGFNb2RlbCB8fCAhKHJlc29sdmVkQ29udGV4dFBhdGggfHwgbWV0YXBhdGguY2hhckF0KDApID09PSBcIi9cIikpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIk5vIG1ldGFtb2RlbCBvciBtZXRhcGF0aCBpcyBub3QgcmVhY2hhYmxlIHdpdGggY29udGV4dFBhdGhcIik7XG5cdFx0fVxuXHRcdGxldCBtZXRhQ29udGV4dCA9IHJlc29sdmVkQ29udGV4dFBhdGggPyBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQocmVzb2x2ZWRDb250ZXh0UGF0aCkgOiB1bmRlZmluZWQ7XG5cdFx0bWV0YUNvbnRleHQgPSBtZXRhQ29udGV4dCA/IG1ldGFDb250ZXh0IDogdW5kZWZpbmVkO1xuXHRcdGNvbnN0IG1ldGFQYXRoQ29udGV4dCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChtZXRhcGF0aCwgbWV0YUNvbnRleHQpO1xuXHRcdHJldHVybiBtZXRhUGF0aENvbnRleHRcblx0XHRcdD8gTWV0YU1vZGVsQ29udmVydGVyLmdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxFeHBlY3RlZERhdGFNb2RlbFR5cGU+KG1ldGFQYXRoQ29udGV4dCwgbWV0YUNvbnRleHQpXG5cdFx0XHQ6IHVuZGVmaW5lZDtcblx0fVxuXG5cdGdldENvbXB1dGVkQ29udGV4dFBhdGgoY29udGV4dFBhdGg/OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdGxldCBjb250ZXh0UGF0aFRvVXNlID0gY29udGV4dFBhdGggPz8gdGhpcy5nZXRPd25lckNvbnRleHRQYXRoKCkhO1xuXHRcdGlmIChjb250ZXh0UGF0aFRvVXNlICYmICFjb250ZXh0UGF0aFRvVXNlLnN0YXJ0c1dpdGgoXCIvXCIpKSB7XG5cdFx0XHRjb250ZXh0UGF0aFRvVXNlID0gdGhpcy5nZXRPd25lckNvbnRleHRQYXRoKCkgKyBjb250ZXh0UGF0aFRvVXNlO1xuXHRcdH1cblx0XHRyZXR1cm4gY29udGV4dFBhdGhUb1VzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIE1ldGFQYXRoIG9iamVjdCBmb3IgdGhlIGdpdmVuIG1ldGFQYXRoIGFuZCBvcHRpb25hbCBjb250ZXh0UGF0aC5cblx0ICogQHBhcmFtIG1ldGFQYXRoXG5cdCAqIEBwYXJhbSBjb250ZXh0UGF0aFxuXHQgKiBAcmV0dXJucyBBIE1ldGFQYXRoIHBvaW50aW5nIHRvIHRoZSB0YXJnZXQge21ldGFQYXRoLCBjb250ZXh0UGF0aH1cblx0ICovXG5cdGdldE1ldGFQYXRoT2JqZWN0PEV4cGVjdGVkRGF0YU1vZGVsVHlwZT4obWV0YVBhdGg6IHN0cmluZywgY29udGV4dFBhdGg/OiBzdHJpbmcpOiBNZXRhUGF0aDxFeHBlY3RlZERhdGFNb2RlbFR5cGU+IHwgbnVsbCB7XG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gdGhpcy5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBjb250ZXh0UGF0aFRvVXNlID0gdGhpcy5nZXRDb21wdXRlZENvbnRleHRQYXRoKGNvbnRleHRQYXRoKTtcblx0XHRpZiAoIW1ldGFNb2RlbCB8fCAhKGNvbnRleHRQYXRoVG9Vc2UgfHwgbWV0YVBhdGguY2hhckF0KDApID09PSBcIi9cIikpIHtcblx0XHRcdExvZy53YXJuaW5nKGBObyBtZXRhbW9kZWwgb3IgbWV0YVBhdGggaXMgbm90IHJlYWNoYWJsZSB3aXRoICR7Y29udGV4dFBhdGh9OiR7bWV0YVBhdGh9YCk7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cdFx0dHJ5IHtcblx0XHRcdHJldHVybiBuZXcgTWV0YVBhdGgoY29udmVydFR5cGVzKG1ldGFNb2RlbCksIG1ldGFQYXRoLCBjb250ZXh0UGF0aFRvVXNlKTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRpZiAoIWNvbnRleHRQYXRoVG9Vc2UuZW5kc1dpdGgoXCIvXCIpKSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLmdldE1ldGFQYXRoT2JqZWN0PEV4cGVjdGVkRGF0YU1vZGVsVHlwZT4obWV0YVBhdGgsIGNvbnRleHRQYXRoVG9Vc2UgKyBcIi9cIik7XG5cdFx0XHR9XG5cdFx0XHRMb2cud2FybmluZyhgTm8gbWV0YW1vZGVsIG9yIG1ldGFQYXRoIGlzIG5vdCByZWFjaGFibGUgd2l0aCAke2NvbnRleHRQYXRofToke21ldGFQYXRofWApO1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXHR9XG5cblx0cHJvdGVjdGVkIGNyZWF0ZUlkKC4uLnN0cmluZ1BhcnRzOiAoc3RyaW5nIHwgdW5kZWZpbmVkIHwgRGF0YU1vZGVsT2JqZWN0UGF0aDxBdXRob3JpemVkSWRBbm5vdGF0aW9uc1R5cGU+KVtdKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHQvLyBJZiB0aGUgY2hpbGQgaW5zdGFuY2UgaGFzIGFuIElEIHByb3BlcnR5IHVzZSBpdCBvdGhlcndpc2UgcmV0dXJuIHVuZGVmaW5lZFxuXHRcdGlmICh0aGlzLmdldElkKCkpIHtcblx0XHRcdHJldHVybiBnZW5lcmF0ZShbdGhpcy5nZXRJZCgpLCAuLi5zdHJpbmdQYXJ0c10pO1xuXHRcdH1cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0Z2V0VHJhbnNsYXRlZFRleHQodGV4dElEOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiB1bmtub3duW10sIG1ldGFQYXRoPzogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0KCh0aGlzLmdldE1vZGVsKFwic2FwLmZlLmkxOG5cIikgPz8gdGhpcy5fZ2V0T3duZXIoKT8uZ2V0TW9kZWwoXCJzYXAuZmUuaTE4blwiKSkgYXMgUmVzb3VyY2VNb2RlbCk/LmdldFRleHQoXG5cdFx0XHRcdHRleHRJRCxcblx0XHRcdFx0cGFyYW1ldGVycyxcblx0XHRcdFx0bWV0YVBhdGhcblx0XHRcdCkgfHwgdGV4dElEXG5cdFx0KTtcblx0fVxuXG5cdGdldE1hbmlmZXN0V3JhcHBlcigpOiBNYW5pZmVzdFdyYXBwZXIgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLl9nZXRPd25lcigpPy5nZXRNYW5pZmVzdFdyYXBwZXIoKTtcblx0fVxuXG5cdGdldE93bmVyUGFnZURlZmluaXRpb24oKTogRGVmaW5pdGlvblBhZ2UgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLl9nZXRPd25lcigpPy5wcmVwcm9jZXNzb3JDb250ZXh0Py5nZXREZWZpbml0aW9uRm9yUGFnZSgpO1xuXHR9XG59XG5cbmludGVyZmFjZSBCdWlsZGluZ0Jsb2NrPFQgZXh0ZW5kcyBVSTVFbGVtZW50PiB7XG5cdGdldENvbnRlbnQoKTogVCB8IHVuZGVmaW5lZDtcblx0Z2V0QXJpYUxhYmVsbGVkQnkoKTogc3RyaW5nW107XG59XG5cbmV4cG9ydCBkZWZhdWx0IEJ1aWxkaW5nQmxvY2s7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWdDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFMQSxJQU9NQSxhQUFhLElBQUFDLElBQUEsR0FEbEJDLGNBQWMsQ0FBQywwQ0FBMEMsQ0FBQyxFQUFBQyxLQUFBLEdBS3pEQyxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVMsQ0FBQyxDQUFDLEVBQUFKLElBQUEsQ0FBQUssTUFBQSxJQUFBQyxPQUFBLElBQUFDLGNBQUEsMEJBQUFDLGtCQUFBO0lBTzdCLFNBQUFULGNBQVlVLFFBQXNELEVBQUVDLE1BQTJDLEVBQUU7TUFBQSxJQUFBQyxLQUFBO01BQ2hIQSxLQUFBLEdBQUFILGtCQUFBLENBQUFJLElBQUEsT0FBTUgsUUFBUSxFQUFFQyxNQUFNLENBQUM7TUFYeEI7QUFDRDtBQUNBO01BRkNHLDBCQUFBLENBQUFGLEtBQUEsZUFBQUcsV0FBQSxFQUFBSCxLQUFBO01BQUFBLEtBQUEsQ0FNVUksaUJBQWlCLEdBQUcsS0FBSztNQU1sQ0osS0FBQSxDQUFLSyxpQkFBaUIsQ0FBQyxDQUFDO01BQUMsT0FBQUwsS0FBQTtJQUMxQjtJQUFDTSxjQUFBLENBQUFsQixhQUFBLEVBQUFTLGtCQUFBO0lBQUEsSUFBQVUsTUFBQSxHQUFBbkIsYUFBQSxDQUFBb0IsU0FBQTtJQUFBRCxNQUFBLENBRVFFLGFBQWEsR0FBdEIsU0FBU0EsYUFBYUEsQ0FBQ0MsU0FBaUMsRUFBRUMsTUFBZSxFQUFRO01BQ2hGLElBQUksQ0FBQ1AsaUJBQWlCLEdBQUcsSUFBSTtNQUU3QlAsa0JBQUEsQ0FBQVcsU0FBQSxDQUFNQyxhQUFhLENBQUFSLElBQUEsT0FBQ1MsU0FBUyxFQUFFQyxNQUFNO01BQ3JDLElBQUksQ0FBQ1As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
|
|
304
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdWlsZGluZ0Jsb2NrIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJwcm9wZXJ0eSIsInR5cGUiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2siLCJfQnVpbGRpbmdCbG9ja0Jhc2UiLCJzZXR0aW5ncyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfdmlzaWJpbGl0eUNoZWNrIiwiX3JlZ2lzdGVyZWRIb29rcyIsIm5vdGlmeUJCT2JzZXJ2ZXJzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJhcHBseVNldHRpbmdzIiwibVNldHRpbmdzIiwib1Njb3BlIiwiX2FwcGx5aW5nU2V0dGluZ3MiLCJfY2hlY2tJZk1ldGFkYXRhUmVhZHkiLCJkZXN0cm95IiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiYmJvYnNlcnZlck1hcCIsIl9iYm9ic2VydmVyTWFwIiwiZ2V0IiwiZ2V0SWQiLCJvYnNlcnZlQkIiLCJvbkRlc3Ryb3kiLCJvbkF2YWlsYWJsZSIsIm9ic2VydmVCdWlsZGluZ0Jsb2NrIiwiaWQiLCJwYXJhbWV0ZXJzIiwiZWxlbWVudCIsIkVsZW1lbnRSZWdpc3RyeSIsInB1c2giLCJzZXQiLCJfZ2V0T3duZXIiLCJmYWlsT25OdWxsQ29udGV4dCIsImdldFZpc2libGUiLCJjb250cm9sIiwib3duZXIiLCJDb21wb25lbnQiLCJnZXRPd25lckNvbXBvbmVudEZvciIsImlzQSIsImdldFBhcmVudCIsImdldEFwcENvbXBvbmVudCIsImRlbGF5TWV0YWRhdGFDaGVjayIsImdldEJpbmRpbmdDb250ZXh0IiwiZ2V0UGFnZUNvbnRyb2xsZXIiLCJwYWdlQ29udHJvbGxlciIsImdldFJvb3RDb250cm9sbGVyIiwiZ2V0TWV0YU1vZGVsIiwibWV0YU1vZGVsIiwic3RhcnRzV2l0aCIsImdldE1ldGFNb2RlbEJ5SWQiLCJzdXBwcmVzc0ludmFsaWRhdGUiLCJ2aWV3U3RhdGUiLCJkZXJlZ2lzdGVyU3RhdGVDb250cmlidXRvciIsInJlbW92ZUNvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnMiLCJfZG9Ob3RDcmVhdGVPbk51bGxDb250ZXh0IiwicmVnaXN0ZXJTdGF0ZUNvbnRyaWJ1dG9yIiwiaW5pdENvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnMiLCJydW5Bc093bmVyIiwib25NZXRhZGF0YUF2YWlsYWJsZSIsImVyciIsIkxvZyIsImVycm9yIiwiZ2V0TWV0YWRhdGEiLCJnZXROYW1lIiwiYXR0YWNoRXZlbnRPbmNlIiwiY2xvbmUiLCJzSWRTdWZmaXgiLCJhTG9jYWxJZHMiLCJfb3duZXJDb21wb25lbnQiLCJnZXREYXRhTW9kZWxPYmplY3RQYXRoIiwidGFyZ2V0UGF0aCIsInRhcmdldFBhdGhUb1VzZSIsImdldE93bmVyQ29udGV4dFBhdGgiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHNGb3JUYXJnZXRQYXRoIiwiZ2V0RnVsbENvbnRleHRQYXRoIiwiZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgiLCJtZXRhcGF0aCIsImNvbnRleHRQYXRoIiwiY29udGV4dFBhdGhUb1VzZSIsImdldENvbXB1dGVkQ29udGV4dFBhdGgiLCJyZXNvbHZlZENvbnRleHRQYXRoIiwiZW5kc1dpdGgiLCJjaGFyQXQiLCJFcnJvciIsIm1ldGFDb250ZXh0IiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJtZXRhUGF0aENvbnRleHQiLCJNZXRhTW9kZWxDb252ZXJ0ZXIiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJnZXRNZXRhUGF0aE9iamVjdCIsIm1ldGFQYXRoIiwid2FybmluZyIsIk1ldGFQYXRoIiwiY29udmVydFR5cGVzIiwiZSIsImNyZWF0ZUlkIiwiX2xlbiIsInN0cmluZ1BhcnRzIiwiQXJyYXkiLCJfa2V5IiwiZ2VuZXJhdGUiLCJnZXRUcmFuc2xhdGVkVGV4dCIsInRleHRJRCIsImdldE1vZGVsIiwiZ2V0VGV4dCIsImdldE1hbmlmZXN0V3JhcHBlciIsImdldE93bmVyUGFnZURlZmluaXRpb24iLCJwcmVwcm9jZXNzb3JDb250ZXh0IiwiZ2V0RGVmaW5pdGlvbkZvclBhZ2UiLCJnZXRJbnRlcm5hbE1vZGVsIiwiQnVpbGRpbmdCbG9ja0Jhc2UiLCJNYXAiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkJ1aWxkaW5nQmxvY2sudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9ja0Jhc2UgZnJvbSBcInNhcC9mZS9iYXNlL0J1aWxkaW5nQmxvY2tCYXNlXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBwcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGluaXRDb250cm9sbGVyRXh0ZW5zaW9uSG9va0hhbmRsZXJzLCByZW1vdmVDb250cm9sbGVyRXh0ZW5zaW9uSG9va0hhbmRsZXJzIH0gZnJvbSBcInNhcC9mZS9iYXNlL0hvb2tTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IEZFVmlldyB9IGZyb20gXCJzYXAvZmUvY29yZS9CYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBSZXNvdXJjZU1vZGVsIGZyb20gXCJzYXAvZmUvY29yZS9SZXNvdXJjZU1vZGVsXCI7XG5pbXBvcnQgdHlwZSBUZW1wbGF0ZUNvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvVGVtcGxhdGVDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIElWaWV3U3RhdGVDb250cmlidXRvciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvdmlld1N0YXRlL0lWaWV3U3RhdGVDb250cmlidXRvclwiO1xuaW1wb3J0IHR5cGUgTWFuaWZlc3RXcmFwcGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0V3JhcHBlclwiO1xuaW1wb3J0ICogYXMgTWV0YU1vZGVsQ29udmVydGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHsgY29udmVydFR5cGVzLCBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHNGb3JUYXJnZXRQYXRoLCBnZXRNZXRhTW9kZWxCeUlkIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgdHlwZSB7IERlZmluaXRpb25QYWdlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2RlZmluaXRpb24vRkVEZWZpbml0aW9uXCI7XG5pbXBvcnQgTWV0YVBhdGggZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTWV0YVBhdGhcIjtcbmltcG9ydCB0eXBlIHsgQXV0aG9yaXplZElkQW5ub3RhdGlvbnNUeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB0eXBlIE1hbmFnZWRPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIHsgJE1hbmFnZWRPYmplY3RTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgQ29tcG9uZW50IGZyb20gXCJzYXAvdWkvY29yZS9Db21wb25lbnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCBFbGVtZW50UmVnaXN0cnkgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRSZWdpc3RyeVwiO1xuXG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCIuLi9BcHBDb21wb25lbnRcIjtcblxuZXhwb3J0IHR5cGUgT2JzZXJ2ZUJ1aWxkaW5nQmxvY2sgPSB7XG5cdG9uQXZhaWxhYmxlPzogKGJiOiBVSTVFbGVtZW50KSA9PiB2b2lkO1xuXHRvbkRlc3Ryb3k/OiAoYmI6IFVJNUVsZW1lbnQpID0+IHZvaWQ7XG59O1xuLyoqXG4gKiBEZWZpbmVzIGEgY29udHJvbCB0aGF0IHdpbGwgbm90IGV4aXN0IGluIHRoZSBET00uXG4gKiBJbnN0ZWFkLCBvbmx5IGl0cyBjaGlsZCB3aWxsIGJlIHRoZXJlIGFuZCB0aGlzIGNvbnRyb2wgd2lsbCBmb3J3YXJkIGFsbCBET00gcmVsYXRlZCBpbnN0cnVjdGlvbiB0byBpdC5cbiAqIEBzaW5jZSAxLjEyMS4wXG4gKiBAcHVibGljXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmJ1aWxkaW5nQmxvY2tzLkJ1aWxkaW5nQmxvY2tcIilcbmNsYXNzIEJ1aWxkaW5nQmxvY2s8VCBleHRlbmRzIFVJNUVsZW1lbnQgPSBDb250cm9sLCBLIGV4dGVuZHMgb2JqZWN0ID0ge30+IGV4dGVuZHMgQnVpbGRpbmdCbG9ja0Jhc2U8VCwgSz4ge1xuXHQvKipcblx0ICogVGhlIG1ldGFtb2RlbCBuYW1lIG9yIGlkIHRvIGJlIHVzZWQgZm9yIHRoaXMgYnVpbGRpbmcgYmxvY2tcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0bWV0YU1vZGVsPzogc3RyaW5nO1xuXG5cdHByb3RlY3RlZCBfYXBwbHlpbmdTZXR0aW5ncz86IGJvb2xlYW47XG5cblx0cHJvdGVjdGVkIF92aXNpYmlsaXR5Q2hlY2sgPSBmYWxzZTtcblxuXHRwcml2YXRlIHN0YXRpYyBfYmJvYnNlcnZlck1hcDogTWFwPHN0cmluZywgT2JzZXJ2ZUJ1aWxkaW5nQmxvY2tbXT4gPSBuZXcgTWFwKCk7XG5cblx0cHJpdmF0ZSBfcmVnaXN0ZXJlZEhvb2tzID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIEZsYWcgdG8gaW5kaWNhdGUgaWYgdGhlIG1ldGFkYXRhIGNoZWNrIHNob3VsZCBiZSBkZWxheWVkIHVudGlsIHRoZSBtb2RlbENvbnRleHRDaGFuZ2UgZXZlbnQgaXMgZmlyZWQuXG5cdCAqIFRoaXMgaXMgdXNlZnVsIHRvIGF2b2lkIGNyZWF0aW5nIHRvbyBtdWNoIHBlcmZvcm1hbmNlIG92ZXJoZWFkIHdoZW4gdGhlIGJ1aWxkaW5nIGJsb2NrIGlzIGNyZWF0ZWRcblx0ICovXG5cdHByb3RlY3RlZCBfZG9Ob3RDcmVhdGVPbk51bGxDb250ZXh0PzogYm9vbGVhbjtcblxuXHRjb25zdHJ1Y3RvcihzZXR0aW5ncz86IHN0cmluZyB8IFByb3BlcnRpZXNPZjxCdWlsZGluZ0Jsb2NrQmFzZTxUPj4sIG90aGVycz86IFByb3BlcnRpZXNPZjxCdWlsZGluZ0Jsb2NrQmFzZTxUPj4pIHtcblx0XHRzdXBlcihzZXR0aW5ncywgb3RoZXJzKTtcblx0XHR0aGlzLm5vdGlmeUJCT2JzZXJ2ZXJzKCk7XG5cdH1cblxuXHRvdmVycmlkZSBhcHBseVNldHRpbmdzKG1TZXR0aW5nczogJE1hbmFnZWRPYmplY3RTZXR0aW5ncywgb1Njb3BlPzogb2JqZWN0KTogdGhpcyB7XG5cdFx0dGhpcy5fYXBwbHlpbmdTZXR0aW5ncyA9IHRydWU7XG5cblx0XHRzdXBlci5hcHBseVNldHRpbmdzKG1TZXR0aW5ncywgb1Njb3BlKTtcblx0XHR0aGlzLl9hcHBseWluZ1NldHRpbmdzID0gZmFsc2U7XG5cdFx0dGhpcy5fY2hlY2tJZk1ldGFkYXRhUmVhZHkoKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0bm90aWZ5QkJPYnNlcnZlcnMoZGVzdHJveSA9IGZhbHNlKTogdm9pZCB7XG5cdFx0Y29uc3QgYmJvYnNlcnZlck1hcCA9IEJ1aWxkaW5nQmxvY2suX2Jib2JzZXJ2ZXJNYXAuZ2V0KHRoaXMuZ2V0SWQoKSk7XG5cdFx0aWYgKGJib2JzZXJ2ZXJNYXAgJiYgYmJvYnNlcnZlck1hcC5sZW5ndGggPiAwKSB7XG5cdFx0XHRmb3IgKGNvbnN0IG9ic2VydmVCQiBvZiBiYm9ic2VydmVyTWFwKSB7XG5cdFx0XHRcdGlmIChkZXN0cm95KSB7XG5cdFx0XHRcdFx0aWYgKG9ic2VydmVCQi5vbkRlc3Ryb3kpIHtcblx0XHRcdFx0XHRcdG9ic2VydmVCQi5vbkRlc3Ryb3kodGhpcyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKG9ic2VydmVCQi5vbkF2YWlsYWJsZSkge1xuXHRcdFx0XHRcdG9ic2VydmVCQi5vbkF2YWlsYWJsZSh0aGlzKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBbGxvd3MgdG8gb2JzZXJ2ZSBidWlsZGluZyBibG9jayBvbmNlIGl0IGlzIGNyZWF0ZWQuXG5cdCAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIGJ1aWxkaW5nIGJsb2NrIHdoaWNoIHdpbGwgYmUgb2JzZXJ2ZWRcblx0ICogQHBhcmFtIHBhcmFtZXRlcnMgVGhlIGlkIG9mIHRoZSBidWlsZGluZyBibG9jayB3aGljaCBpcyBiZWluZyByZXF1c3RlZFxuXHQgKiBAcGFyYW0gcGFyYW1ldGVycy5vbkF2YWlsYWJsZSBDYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2l0aCB0aGUgaW5zdGFuY2Ugb2YgdGhlIEJCIHdoZW4gaXQgaXMgYXZhaWxhYmxlXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzLm9uRGVzdHJveSBDYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2l0aCB0aGUgaW5zdGFuY2Ugb2YgdGhlIEJCIHdoZW4gaXQgaXMgZGVzdHJveWVkXG5cdCAqL1xuXHRzdGF0aWMgb2JzZXJ2ZUJ1aWxkaW5nQmxvY2soaWQ6IHN0cmluZywgcGFyYW1ldGVyczogT2JzZXJ2ZUJ1aWxkaW5nQmxvY2spOiB2b2lkIHtcblx0XHQvL2lmIChwYXJhbWV0ZXJzKVxuXHRcdGNvbnN0IGVsZW1lbnQgPSBFbGVtZW50UmVnaXN0cnkuZ2V0KGlkKTtcblx0XHQvLyBpZiB0aGUgZWxlbWVudCBpcyBhbHJlYWR5IHJlZ2lzdGVyZWRcblx0XHRpZiAoZWxlbWVudCkge1xuXHRcdFx0aWYgKHBhcmFtZXRlcnMub25BdmFpbGFibGUpIHtcblx0XHRcdFx0cGFyYW1ldGVycy5vbkF2YWlsYWJsZShlbGVtZW50KTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgYmJvYnNlcnZlck1hcCA9IEJ1aWxkaW5nQmxvY2suX2Jib2JzZXJ2ZXJNYXAuZ2V0KGlkKTtcblx0XHRcdGlmIChiYm9ic2VydmVyTWFwKSB7XG5cdFx0XHRcdGJib2JzZXJ2ZXJNYXAucHVzaChwYXJhbWV0ZXJzKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdEJ1aWxkaW5nQmxvY2suX2Jib2JzZXJ2ZXJNYXAuc2V0KGlkLCBbcGFyYW1ldGVyc10pO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGluc3RhbmNlIG9mIGEgYnVpbGRpbmcgYmxvY2sgYmFzZWQgb25jZSBpdCBpcyByZWdpc3RlcmVkLlxuXHQgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBidWlsZGluZyBibG9jayB3aGljaCBpcyBiZWluZyByZXF1c3RlZFxuXHQgKiBAcmV0dXJucyBQcm9taXNlIHJlc29sdmVkIHdpdGggYW4gaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkaW5nIGJsb2NrIG9uY2UgaXQgaXMgcmVnaXN0ZXJlZC9pbnN0YW50aWVkLlxuXHQgKiBcdCBUaGUgcHJvbWlzZSBpcyByZXNvbHZlZCB3aGVuIHRoZSBidWlsZGluZyBibG9jayBpcyBpbnRhbnRpZWQgaGVuY2UgaXQgcmVjb21tZW5kZWQgdG8gb25seSBhd2FpdCBvbiB0aGUgcHJvbWlzZVxuXHQgKiBcdCB3aGVuIGl0IGlzIGtub3duIHRoYXQgdGhlIGJ1aWxkaW5nIGJsb2NrIHdpbGwgYmUgYXZhaWxhYmxlLiBJbiBjYXNlcyBoZXJlIHRoZSBidWlsZGluZyBibG9jayBtaWdodCBub3QgYmUgYXZhaWxhYmxlLFxuXHQgKiBcdCBmb3IgZXhhbXBsZSBiZWN1YXNlIG9mIGxhenkgbG9hZGluZywgdGhlbiBpdCBpcyByZWNvbW1lbmRlZCBub3QgdG8gYXdhaXQgb24gdGhlIHByb21pc2UgYW5kIGluc3RlYWQgdXNlIFByb21pc2UudGhlbigpLlxuXHQgKi9cblxuXHRfZ2V0T3duZXIoZmFpbE9uTnVsbENvbnRleHQgPSBmYWxzZSk6IFRlbXBsYXRlQ29tcG9uZW50IHwgdW5kZWZpbmVkIHtcblx0XHRpZiAodGhpcy5fdmlzaWJpbGl0eUNoZWNrICYmICF0aGlzLmdldFZpc2libGUoKSkge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0Ly9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXNcblx0XHRsZXQgY29udHJvbDogQ29udHJvbCB8IHVuZGVmaW5lZCA9IHRoaXM7XG5cdFx0bGV0IG93bmVyID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKGNvbnRyb2wpO1xuXHRcdHdoaWxlICghb3duZXIgJiYgY29udHJvbCAmJiAhY29udHJvbC5pc0E8RkVWaWV3PihcInNhcC51aS5jb3JlLm12Yy5WaWV3XCIpKSB7XG5cdFx0XHRjb250cm9sID0gY29udHJvbC5nZXRQYXJlbnQoKSBhcyBDb250cm9sIHwgdW5kZWZpbmVkO1xuXHRcdFx0aWYgKGNvbnRyb2wpIHtcblx0XHRcdFx0b3duZXIgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IoY29udHJvbCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChvd25lcj8uaXNBPFRlbXBsYXRlQ29tcG9uZW50PihcInNhcC5mZS5jb3JlLlRlbXBsYXRlQ29tcG9uZW50XCIpKSB7XG5cdFx0XHRpZiAoZmFpbE9uTnVsbENvbnRleHQgJiYgb3duZXIuZ2V0QXBwQ29tcG9uZW50KCkuZGVsYXlNZXRhZGF0YUNoZWNrICYmICF0aGlzLmdldEJpbmRpbmdDb250ZXh0KCkpIHtcblx0XHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHRcdH1cblx0XHRcdHJldHVybiBvd25lcjtcblx0XHR9XG5cdFx0aWYgKG93bmVyPy5pc0E8VGVtcGxhdGVDb21wb25lbnQ+KFwic2FwLmZlLmNvcmUuYnVpbGRpbmdCbG9ja3MuSUJ1aWxkaW5nQmxvY2tPd25lckNvbXBvbmVudFwiKSkge1xuXHRcdFx0aWYgKGZhaWxPbk51bGxDb250ZXh0ICYmIG93bmVyLmdldEFwcENvbXBvbmVudCgpLmRlbGF5TWV0YWRhdGFDaGVjayAmJiAhdGhpcy5nZXRCaW5kaW5nQ29udGV4dCgpKSB7XG5cdFx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gb3duZXI7XG5cdFx0fVxuXHR9XG5cblx0Lypcblx0ICogR2V0IHRoZSBwYWdlIGNvbnRyb2xsZXIgaW5zdGFuY2Vcblx0ICogQHBhcmFtIGxvZ0Vycm9yIFdoZXRoZXIgdG8gbG9nIGFuIGVycm9yIGlmIHRoZSBwYWdlIGNvbnRyb2xsZXIgaXMgbm90IGZvdW5kXG5cdCAqIEByZXR1cm5zIFRoZSBwYWdlIGNvbnRyb2xsZXIgaW5zdGFuY2Vcblx0ICovXG5cdGdldFBhZ2VDb250cm9sbGVyKCk6IFBhZ2VDb250cm9sbGVyIHtcblx0XHRjb25zdCBwYWdlQ29udHJvbGxlciA9IHRoaXMuX2dldE93bmVyKCk/LmdldFJvb3RDb250cm9sbGVyPy4oKTtcblx0XHRyZXR1cm4gcGFnZUNvbnRyb2xsZXIhO1xuXHR9XG5cblx0Z2V0TWV0YU1vZGVsKCk6IE9EYXRhTWV0YU1vZGVsIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCk7XG5cdFx0aWYgKG93bmVyPy5pc0E8VGVtcGxhdGVDb21wb25lbnQ+KFwic2FwLmZlLmNvcmUuYnVpbGRpbmdCbG9ja3MuSUJ1aWxkaW5nQmxvY2tPd25lckNvbXBvbmVudFwiKSkge1xuXHRcdFx0bGV0IG1ldGFNb2RlbCA9IG93bmVyPy5nZXRNZXRhTW9kZWwodGhpcy5tZXRhTW9kZWwpO1xuXHRcdFx0Ly8gRmFsbGJhY2sgaW4gY2FzZSB0aGV5IGRvbid0IGFwcGx5IHRoZSBsb2dpYyBmb3IgdGhlIG1ldGFtb2RlbCBjb252ZXJ0ZXJcblx0XHRcdGlmICghbWV0YU1vZGVsICYmIHRoaXMubWV0YU1vZGVsPy5zdGFydHNXaXRoKFwiaWQtXCIpKSB7XG5cdFx0XHRcdG1ldGFNb2RlbCA9IGdldE1ldGFNb2RlbEJ5SWQodGhpcy5tZXRhTW9kZWwpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1ldGFNb2RlbDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIG93bmVyPy5nZXRNZXRhTW9kZWwodGhpcy5tZXRhTW9kZWwpO1xuXHRcdH1cblx0fVxuXG5cdG92ZXJyaWRlIGRlc3Ryb3koc3VwcHJlc3NJbnZhbGlkYXRlPzogYm9vbGVhbik6IHZvaWQge1xuXHRcdGlmICh0aGlzLmlzQTxJVmlld1N0YXRlQ29udHJpYnV0b3I8dW5rbm93bj4gJiBNYW5hZ2VkT2JqZWN0PihcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLnZpZXdTdGF0ZS5JVmlld1N0YXRlQ29udHJpYnV0b3JcIikpIHtcblx0XHRcdHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKT8udmlld1N0YXRlPy5kZXJlZ2lzdGVyU3RhdGVDb250cmlidXRvcih0aGlzKTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSkge1xuXHRcdFx0cmVtb3ZlQ29udHJvbGxlckV4dGVuc2lvbkhvb2tIYW5kbGVycyh0aGlzLCB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkhKTtcblx0XHR9XG5cdFx0dGhpcy5ub3RpZnlCQk9ic2VydmVycyh0cnVlKTtcblx0XHRzdXBlci5kZXN0cm95KHN1cHByZXNzSW52YWxpZGF0ZSk7XG5cdH1cblxuXHRfY2hlY2tJZk1ldGFkYXRhUmVhZHkoKTogdm9pZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcih0aGlzLl9kb05vdENyZWF0ZU9uTnVsbENvbnRleHQpO1xuXHRcdGlmICghdGhpcy5fcmVnaXN0ZXJlZEhvb2tzICYmIHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdHRoaXMuaXNBPElWaWV3U3RhdGVDb250cmlidXRvcjx1bmtub3duPiAmIE1hbmFnZWRPYmplY3Q+KFwic2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMudmlld1N0YXRlLklWaWV3U3RhdGVDb250cmlidXRvclwiKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKT8udmlld1N0YXRlLnJlZ2lzdGVyU3RhdGVDb250cmlidXRvcih0aGlzKTtcblx0XHRcdH1cblx0XHRcdGluaXRDb250cm9sbGVyRXh0ZW5zaW9uSG9va0hhbmRsZXJzKHRoaXMsIHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSk7XG5cdFx0XHR0aGlzLl9yZWdpc3RlcmVkSG9va3MgPSB0cnVlO1xuXHRcdH1cblx0XHRpZiAob3duZXIpIHtcblx0XHRcdG93bmVyLnJ1bkFzT3duZXIoKCkgPT4ge1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdHRoaXMub25NZXRhZGF0YUF2YWlsYWJsZShvd25lcik7XG5cdFx0XHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0XHRcdExvZy5lcnJvcihcblx0XHRcdFx0XHRcdGBFcnJvciBjcmVhdGluZyBjb250ZW50IGZvciBidWlsZGluZyBibG9jayAke3RoaXMuZ2V0TWV0YWRhdGEoKS5nZXROYW1lKCl9IHdpdGggSUQ6ICR7dGhpcy5nZXRJZCgpfWAsXG5cdFx0XHRcdFx0XHRlcnIgYXMgRXJyb3Jcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5hdHRhY2hFdmVudE9uY2UoXCJtb2RlbENvbnRleHRDaGFuZ2VcIiwgZnVuY3Rpb24gKHRoaXM6IEJ1aWxkaW5nQmxvY2spOiB2b2lkIHtcblx0XHRcdFx0dGhpcy5fY2hlY2tJZk1ldGFkYXRhUmVhZHkoKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdGNsb25lKHNJZFN1ZmZpeD86IHN0cmluZywgYUxvY2FsSWRzPzogc3RyaW5nW10pOiB0aGlzIHtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCk7XG5cdFx0aWYgKG93bmVyKSB7XG5cdFx0XHRyZXR1cm4gb3duZXIucnVuQXNPd25lcigoKSA9PiB7XG5cdFx0XHRcdHJldHVybiBzdXBlci5jbG9uZShzSWRTdWZmaXgsIGFMb2NhbElkcyk7XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHN1cGVyLmNsb25lKHNJZFN1ZmZpeCwgYUxvY2FsSWRzKTtcblx0XHR9XG5cdH1cblxuXHRvbk1ldGFkYXRhQXZhaWxhYmxlKF9vd25lckNvbXBvbmVudDogVGVtcGxhdGVDb21wb25lbnQpOiB2b2lkIHtcblx0XHQvLyBUbyBiZSBvdmVycmlkZW4gYnkgdGhlIGNoaWxkIGNsYXNzXG5cdH1cblxuXHRnZXRBcHBDb21wb25lbnQoKTogQXBwQ29tcG9uZW50IHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCk7XG5cdFx0cmV0dXJuIG93bmVyPy5nZXRBcHBDb21wb25lbnQoKTtcblx0fVxuXG5cdGdldERhdGFNb2RlbE9iamVjdFBhdGg8Tj4odGFyZ2V0UGF0aD86IHN0cmluZyk6IERhdGFNb2RlbE9iamVjdFBhdGg8Tj4gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IHRoaXMuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Y29uc3QgdGFyZ2V0UGF0aFRvVXNlID0gdGFyZ2V0UGF0aCA/PyB0aGlzLmdldE93bmVyQ29udGV4dFBhdGgoKTtcblx0XHRyZXR1cm4gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzRm9yVGFyZ2V0UGF0aCh0YXJnZXRQYXRoVG9Vc2UhLCBtZXRhTW9kZWwpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgY29udGV4dCBwYXRoIGZyb20gdGhlIG93bmVyIGNvbXBvbmVudC5cblx0ICogQHJldHVybnMgVGhlIGNvbnRleHQgcGF0aFxuXHQgKi9cblx0Z2V0T3duZXJDb250ZXh0UGF0aCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG93bmVyID0gdGhpcy5fZ2V0T3duZXIoKSE7XG5cdFx0cmV0dXJuIG93bmVyLmdldEZ1bGxDb250ZXh0UGF0aCh0aGlzLm1ldGFNb2RlbCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBkYXRhIG1vZGVsIG9iamVjdCBmb3IgdGhlIGdpdmVuIG1ldGFwYXRoIGFuZCBvcHRpb25hbCBjb250ZXh0UGF0aC5cblx0ICogQHBhcmFtIG1ldGFwYXRoXG5cdCAqIEBwYXJhbSBjb250ZXh0UGF0aFxuXHQgKiBAcmV0dXJucyBUaGUgZGF0YSBtb2RlbCBvYmplY3QgcGF0aFxuXHQgKi9cblx0Z2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGg8RXhwZWN0ZWREYXRhTW9kZWxUeXBlPihcblx0XHRtZXRhcGF0aDogc3RyaW5nLFxuXHRcdGNvbnRleHRQYXRoPzogc3RyaW5nXG5cdCk6IERhdGFNb2RlbE9iamVjdFBhdGg8RXhwZWN0ZWREYXRhTW9kZWxUeXBlPiB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gdGhpcy5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBjb250ZXh0UGF0aFRvVXNlID0gdGhpcy5nZXRDb21wdXRlZENvbnRleHRQYXRoKGNvbnRleHRQYXRoKTtcblxuXHRcdGxldCByZXNvbHZlZENvbnRleHRQYXRoO1xuXHRcdGlmIChjb250ZXh0UGF0aFRvVXNlKSB7XG5cdFx0XHRyZXNvbHZlZENvbnRleHRQYXRoID0gY29udGV4dFBhdGhUb1VzZS5lbmRzV2l0aChcIi9cIikgPyBjb250ZXh0UGF0aFRvVXNlIDogY29udGV4dFBhdGhUb1VzZSArIFwiL1wiO1xuXHRcdH1cblx0XHRpZiAoIW1ldGFNb2RlbCB8fCAhKHJlc29sdmVkQ29udGV4dFBhdGggfHwgbWV0YXBhdGguY2hhckF0KDApID09PSBcIi9cIikpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIk5vIG1ldGFtb2RlbCBvciBtZXRhcGF0aCBpcyBub3QgcmVhY2hhYmxlIHdpdGggY29udGV4dFBhdGhcIik7XG5cdFx0fVxuXHRcdGxldCBtZXRhQ29udGV4dCA9IHJlc29sdmVkQ29udGV4dFBhdGggPyBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQocmVzb2x2ZWRDb250ZXh0UGF0aCkgOiB1bmRlZmluZWQ7XG5cdFx0bWV0YUNvbnRleHQgPSBtZXRhQ29udGV4dCA/IG1ldGFDb250ZXh0IDogdW5kZWZpbmVkO1xuXHRcdGNvbnN0IG1ldGFQYXRoQ29udGV4dCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChtZXRhcGF0aCwgbWV0YUNvbnRleHQpO1xuXHRcdHJldHVybiBtZXRhUGF0aENvbnRleHRcblx0XHRcdD8gTWV0YU1vZGVsQ29udmVydGVyLmdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxFeHBlY3RlZERhdGFNb2RlbFR5cGU+KG1ldGFQYXRoQ29udGV4dCwgbWV0YUNvbnRleHQpXG5cdFx0XHQ6IHVuZGVmaW5lZDtcblx0fVxuXG5cdGdldENvbXB1dGVkQ29udGV4dFBhdGgoY29udGV4dFBhdGg/OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdGxldCBjb250ZXh0UGF0aFRvVXNlID0gY29udGV4dFBhdGggPz8gdGhpcy5nZXRPd25lckNvbnRleHRQYXRoKCkhO1xuXHRcdGlmIChjb250ZXh0UGF0aFRvVXNlICYmICFjb250ZXh0UGF0aFRvVXNlLnN0YXJ0c1dpdGgoXCIvXCIpKSB7XG5cdFx0XHRjb250ZXh0UGF0aFRvVXNlID0gdGhpcy5nZXRPd25lckNvbnRleHRQYXRoKCkgKyBjb250ZXh0UGF0aFRvVXNlO1xuXHRcdH1cblx0XHRyZXR1cm4gY29udGV4dFBhdGhUb1VzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIE1ldGFQYXRoIG9iamVjdCBmb3IgdGhlIGdpdmVuIG1ldGFQYXRoIGFuZCBvcHRpb25hbCBjb250ZXh0UGF0aC5cblx0ICogQHBhcmFtIG1ldGFQYXRoXG5cdCAqIEBwYXJhbSBjb250ZXh0UGF0aFxuXHQgKiBAcmV0dXJucyBBIE1ldGFQYXRoIHBvaW50aW5nIHRvIHRoZSB0YXJnZXQge21ldGFQYXRoLCBjb250ZXh0UGF0aH1cblx0ICovXG5cdGdldE1ldGFQYXRoT2JqZWN0PEV4cGVjdGVkRGF0YU1vZGVsVHlwZT4obWV0YVBhdGg6IHN0cmluZywgY29udGV4dFBhdGg/OiBzdHJpbmcpOiBNZXRhUGF0aDxFeHBlY3RlZERhdGFNb2RlbFR5cGU+IHwgbnVsbCB7XG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gdGhpcy5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBjb250ZXh0UGF0aFRvVXNlID0gdGhpcy5nZXRDb21wdXRlZENvbnRleHRQYXRoKGNvbnRleHRQYXRoKTtcblx0XHRpZiAoIW1ldGFNb2RlbCB8fCAhKGNvbnRleHRQYXRoVG9Vc2UgfHwgbWV0YVBhdGguY2hhckF0KDApID09PSBcIi9cIikpIHtcblx0XHRcdExvZy53YXJuaW5nKGBObyBtZXRhbW9kZWwgb3IgbWV0YVBhdGggaXMgbm90IHJlYWNoYWJsZSB3aXRoICR7Y29udGV4dFBhdGh9OiR7bWV0YVBhdGh9YCk7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cdFx0dHJ5IHtcblx0XHRcdHJldHVybiBuZXcgTWV0YVBhdGgoY29udmVydFR5cGVzKG1ldGFNb2RlbCksIG1ldGFQYXRoLCBjb250ZXh0UGF0aFRvVXNlKTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRpZiAoIWNvbnRleHRQYXRoVG9Vc2UuZW5kc1dpdGgoXCIvXCIpKSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLmdldE1ldGFQYXRoT2JqZWN0PEV4cGVjdGVkRGF0YU1vZGVsVHlwZT4obWV0YVBhdGgsIGNvbnRleHRQYXRoVG9Vc2UgKyBcIi9cIik7XG5cdFx0XHR9XG5cdFx0XHRMb2cud2FybmluZyhgTm8gbWV0YW1vZGVsIG9yIG1ldGFQYXRoIGlzIG5vdCByZWFjaGFibGUgd2l0aCAke2NvbnRleHRQYXRofToke21ldGFQYXRofWApO1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXHR9XG5cblx0cHJvdGVjdGVkIGNyZWF0ZUlkKC4uLnN0cmluZ1BhcnRzOiAoc3RyaW5nIHwgdW5kZWZpbmVkIHwgRGF0YU1vZGVsT2JqZWN0UGF0aDxBdXRob3JpemVkSWRBbm5vdGF0aW9uc1R5cGU+KVtdKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHQvLyBJZiB0aGUgY2hpbGQgaW5zdGFuY2UgaGFzIGFuIElEIHByb3BlcnR5IHVzZSBpdCBvdGhlcndpc2UgcmV0dXJuIHVuZGVmaW5lZFxuXHRcdGlmICh0aGlzLmdldElkKCkpIHtcblx0XHRcdHJldHVybiBnZW5lcmF0ZShbdGhpcy5nZXRJZCgpLCAuLi5zdHJpbmdQYXJ0c10pO1xuXHRcdH1cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0Z2V0VHJhbnNsYXRlZFRleHQodGV4dElEOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiB1bmtub3duW10sIG1ldGFQYXRoPzogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0KCh0aGlzLmdldE1vZGVsKFwic2FwLmZlLmkxOG5cIikgPz8gdGhpcy5fZ2V0T3duZXIoKT8uZ2V0TW9kZWwoXCJzYXAuZmUuaTE4blwiKSkgYXMgUmVzb3VyY2VNb2RlbCk/LmdldFRleHQoXG5cdFx0XHRcdHRleHRJRCxcblx0XHRcdFx0cGFyYW1ldGVycyxcblx0XHRcdFx0bWV0YVBhdGhcblx0XHRcdCkgfHwgdGV4dElEXG5cdFx0KTtcblx0fVxuXG5cdGdldE1hbmlmZXN0V3JhcHBlcigpOiBNYW5pZmVzdFdyYXBwZXIgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLl9nZXRPd25lcigpPy5nZXRNYW5pZmVzdFdyYXBwZXIoKTtcblx0fVxuXG5cdGdldE93bmVyUGFnZURlZmluaXRpb24oKTogRGVmaW5pdGlvblBhZ2UgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLl9nZXRPd25lcigpPy5wcmVwcm9jZXNzb3JDb250ZXh0Py5nZXREZWZpbml0aW9uRm9yUGFnZSgpO1xuXHR9XG5cblx0Z2V0SW50ZXJuYWxNb2RlbCgpOiBKU09OTW9kZWwgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiAodGhpcy5nZXRNb2RlbChcImludGVybmFsXCIpID8/IHRoaXMuX2dldE93bmVyKCk/LmdldE1vZGVsKFwiaW50ZXJuYWxcIikpIGFzIEpTT05Nb2RlbCB8IHVuZGVmaW5lZDtcblx0fVxufVxuXG5pbnRlcmZhY2UgQnVpbGRpbmdCbG9jazxUIGV4dGVuZHMgVUk1RWxlbWVudD4ge1xuXHRnZXRDb250ZW50KCk6IFQgfCB1bmRlZmluZWQ7XG5cdGdldEFyaWFMYWJlbGxlZEJ5KCk6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBCdWlsZGluZ0Jsb2NrO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|