Merge "Let enabling FLAG_2004_INSTANTIATION_TEMPLATES_POPUP"
authorIttay Stern <ittay.stern@att.com>
Wed, 25 Dec 2019 09:04:36 +0000 (09:04 +0000)
committerGerrit Code Review <gerrit@onap.org>
Wed, 25 Dec 2019 09:04:36 +0000 (09:04 +0000)
vid-app-common/src/main/webapp/app/vid/scripts/services/msoService.js
vid-automation/pom.xml
vid-automation/src/main/java/org/onap/sdc/ci/tests/datatypes/Configuration.java
vid-automation/src/main/java/org/onap/sdc/ci/tests/execute/setup/ExtentManager.java
vid-webpack-master/cypress/integration/iFrames/commitDialog.e2e.ts [new file with mode: 0644]

index ac6eeea..04a20f2 100755 (executable)
-/*-\r
- * ============LICENSE_START=======================================================\r
- * VID\r
- * ================================================================================\r
- * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.\r
- * ================================================================================\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- * \r
- *      http://www.apache.org/licenses/LICENSE-2.0\r
- * \r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- * ============LICENSE_END=========================================================\r
- */\r
-\r
-"use strict";\r
-\r
-var MsoService = function($http, $log, $q, PropertyService, AaiService, UtilityService, COMPONENT, FIELD, moment) {\r
-\r
-    var _this = this;\r
-\r
-       /*\r
-        * Common function to handle both create and delete instance requests\r
-        */\r
-    var requestInstanceUpdate = function(request, successCallbackFunction) {\r
-        $log.debug("MsoService:requestInstanceUpdate: request:");\r
-        $log.debug(request);\r
-        $http.post( "mso/" + request.url, {\r
-            requestDetails : request.requestDetails\r
-        }, {\r
-            timeout : PropertyService.getServerResponseTimeoutMsec()\r
-        }).then(successCallbackFunction)["catch"]\r
-        (UtilityService.runHttpErrorHandler);\r
-    };\r
-\r
-    var checkValidStatus = function(response) {\r
-        if (response.data.status < 200 || response.data.status > 202) {\r
-            throw {\r
-                type : FIELD.ID.MSO_FAILURE\r
-            };\r
-        }\r
-    };\r
-\r
-    var addListEntry = function(name, value) {\r
-        var entry = '"' + name + '": ';\r
-        if (value === undefined) {\r
-            return entry + "undefined";\r
-        } else {\r
-            return entry + '"' + value + '"';\r
-        }\r
-    };\r
-\r
-    var buildPayloadForServiceActivateDeactivate = function (model, userId) {\r
-        var requestDetails = {\r
-                "modelInfo": {\r
-                    "modelType": "service",\r
-                    "modelInvariantId": model.service.invariantUuid,\r
-                    "modelVersionId": model.service.uuid,\r
-                    "modelName": model.service.name,\r
-                    "modelVersion": model.service.version\r
-                },\r
-                "requestInfo": {\r
-                    "source": "VID",\r
-                    "requestorId": userId\r
-                },\r
-                "requestParameters": {\r
-                    // aicZone was sent from here\r
-                    "userParams": []\r
-                }\r
-        };\r
-\r
-        $log.debug("Service Activate/Deactivate payload", requestDetails);\r
-\r
-        return requestDetails;\r
-\r
-    };\r
-\r
-    var buildPayloadForActivateFabricConfiguration = function (model, userId) {\r
-        var requestDetails = {\r
-            "modelInfo": {\r
-                "modelType": "service",\r
-                "modelInvariantId": model.service.invariantUuid,\r
-                "modelVersionId": model.service.uuid,\r
-                "modelName": model.service.name,\r
-                "modelVersion": model.service.version\r
-            },\r
-            "requestInfo": {\r
-                "source": "VID",\r
-                "requestorId": userId\r
-            },\r
-            "requestParameters": {\r
-                "aLaCarte": false\r
-            }\r
-        };\r
-\r
-        $log.debug("Service Activate Fabric Configuration payload", requestDetails);\r
-\r
-        return requestDetails;\r
-\r
-    };\r
-\r
-    var activateInstance = function(requestParams) {\r
-        var requestDetails = buildPayloadForServiceActivateDeactivate(requestParams.model, requestParams.userId);\r
-\r
-        return sendPostRequest(COMPONENT.MSO_ACTIVATE_INSTANCE.replace('@serviceInstanceId', requestParams.instance.serviceInstanceId),\r
-            requestDetails);\r
-    };\r
-\r
-    var deactivateInstance = function(requestParams) {\r
-        var requestDetails = buildPayloadForServiceActivateDeactivate(requestParams.model, requestParams.userId);\r
-\r
-        return sendPostRequest(COMPONENT.MSO_DEACTIVATE_INSTANCE.replace('@serviceInstanceId', requestParams.instance.serviceInstanceId),\r
-            requestDetails);\r
-    };\r
-\r
-    var sendPostRequestWithBody = function(url, requestBody) {\r
-        var deferred = $q.defer();\r
-        if (url) {\r
-            $http.post(url, requestBody, {\r
-                timeout: PropertyService.getServerResponseTimeoutMsec()\r
-            }).success(function (response) {\r
-                deferred.resolve({data: response});\r
-            }).error(function (data, status) {\r
-                deferred.reject({message: data, status: status});\r
-            });\r
-        }\r
-\r
-        return deferred.promise;\r
-    };\r
-\r
-    var sendPostRequest = function(url, requestDetails) {\r
-        return sendPostRequestWithBody(url, {requestDetails: requestDetails});\r
-    };\r
-\r
-    return {\r
-        createInstance : requestInstanceUpdate,\r
-        deleteInstance : requestInstanceUpdate,\r
-        createAndDeleteInstance: function(requestParams)  {\r
-            return sendPostRequest("mso/" + requestParams.url, requestParams.requestDetails);\r
-        },\r
-        getOrchestrationRequest : function(requestId, successCallbackFunction) {\r
-            $log.debug("MsoService:getOrchestrationRequest: requestId: "\r
-                + requestId);\r
-            $http.get(\r
-                "mso/mso_get_orch_req/"\r
-                + requestId + "?r=" + Math.random(),\r
-                {\r
-                    timeout : PropertyService\r
-                        .getServerResponseTimeoutMsec()\r
-                }).then(successCallbackFunction)["catch"]\r
-            (UtilityService.runHttpErrorHandler);\r
-        },\r
-        getOrchestrationRequests : function(filterString,\r
-                                            successCallbackFunction) {\r
-            $log.debug("MsoService:getOrchestrationRequests: filterString: "\r
-                + filterString);\r
-            $http.get(\r
-                "mso/mso_get_orch_reqs/"\r
-                + encodeURIComponent(filterString) + "?r="\r
-                + Math.random(),\r
-                {\r
-                    timeout : PropertyService\r
-                        .getServerResponseTimeoutMsec()\r
-                }).then(successCallbackFunction)["catch"]\r
-            (UtilityService.runHttpErrorHandler);\r
-        },\r
-        getFormattedCommonResponse : function(response) {\r
-            return UtilityService.getCurrentTime() + " HTTP Status: "\r
-                + UtilityService.getHttpStatusText(response.data.status)\r
-                + "\n" + angular.toJson(response.data.entity, true);\r
-\r
-        },\r
-        checkValidStatus : checkValidStatus,\r
-        getFormattedGetOrchestrationRequestsResponse : function(response) {\r
-            UtilityService.checkUndefined(COMPONENT.ENTITY, response.data.entity);\r
-            UtilityService.checkUndefined(COMPONENT.STATUS, response.data.status);\r
-            checkValidStatus(response);\r
-\r
-            var list = response.data.entity.requestList;\r
-            UtilityService.checkUndefined(FIELD.ID.REQUEST_LIST, list);\r
-\r
-            var message = "";\r
-\r
-            for (var i = 0; i < list.length; i++) {\r
-                var request = list[i].request;\r
-                message += addListEntry(FIELD.ID.REQUEST_ID, request.requestId) + ",\n";\r
-                message += addListEntry(FIELD.ID.REQUEST_TYPE, request.requestType)\r
-                    + ",\n";\r
-                var status = request.requestStatus;\r
-                if (status === undefined) {\r
-                    message += addListEntry(FIELD.ID.REQUEST_STATUS, undefined) + "\n";\r
-                } else {\r
-                    if(status.finishTime) {\r
-                        message += addListEntry(FIELD.ID.TIMESTAMP, moment(new Date(status.finishTime)).format("ddd, DD MMM YYYY HH:mm:ss"))\r
-                            + ",\n";\r
-                    }\r
-                    message += addListEntry(FIELD.ID.REQUEST_STATE, status.requestState)\r
-                        + ",\n";\r
-                    message += addListEntry(FIELD.ID.REQUEST_STATUS,\r
-                            status.statusMessage)\r
-                        + ",\n";\r
-                    message += addListEntry(FIELD.ID.PERCENT_PROGRESS,\r
-                            status.percentProgress)\r
-                        + "\n";\r
-                }\r
-                if (i < (list.length - 1)) {\r
-                    message += "\n";\r
-                }\r
-            }\r
-            return message;\r
-        },\r
-        getFormattedSingleGetOrchestrationRequestResponse : function (response) {\r
-            UtilityService.checkUndefined(COMPONENT.ENTITY, response.data.entity);\r
-            UtilityService.checkUndefined(COMPONENT.STATUS, response.data.status);\r
-            //checkValidStatus(response);\r
-\r
-            var message = "";\r
-            if (! (response && response.data && response.data.entity)) {\r
-                return message;\r
-            }\r
-            if ( UtilityService.hasContents (response.data.entity.request) ) {\r
-                var request = response.data.entity.request;\r
-                message += addListEntry(FIELD.ID.REQUEST_ID, request.requestId) + ",\n";\r
-                message += addListEntry(FIELD.ID.REQUEST_TYPE, request.requestType)\r
-                    + ",\n";\r
-                var status = request.requestStatus;\r
-                if (status === undefined) {\r
-                    message += addListEntry(FIELD.ID.REQUEST_STATUS, undefined) + "\n";\r
-                } else {\r
-                    message += addListEntry(FIELD.ID.TIMESTAMP, moment(new Date()).format("ddd, DD MMM YYYY HH:mm:ss"))\r
-                        + ",\n";\r
-                    message += addListEntry(FIELD.ID.REQUEST_STATE, status.requestState)\r
-                        + ",\n";\r
-                    message += addListEntry(FIELD.ID.REQUEST_STATUS,\r
-                            status.statusMessage)\r
-                        + ",\n";\r
-                    message += addListEntry(FIELD.ID.PERCENT_PROGRESS,\r
-                            status.percentProgress)\r
-                        + "\n\n";\r
-                }\r
-            }\r
-            else {\r
-                if (UtilityService.hasContents(response.data.status) && UtilityService.hasContents(response.data.entity)) {\r
-                    message = this.getFormattedCommonResponse(response) + "\n";\r
-                }\r
-            }\r
-            return message;\r
-        },\r
-        getManualTasks : function(requestId) {\r
-            $log.debug("MsoService:getManualTasks: requestId: "\r
-                + requestId);\r
-            return $http.get(\r
-                "mso/mso_get_man_task/" + requestId,\r
-                {\r
-                    timeout: PropertyService\r
-                        .getServerResponseTimeoutMsec()\r
-                })\r
-                .catch(UtilityService.runHttpErrorHandler);\r
-        },\r
-        completeTask: function(taskId, taskToComplete) {\r
-            var promise = new Promise(function (resolve, reject) {\r
-                $log.debug("MsoService:completeTask: taskId: "\r
-                    + taskId);\r
-                AaiService.getLoggedInUserID(function (response) {\r
-                    var attuid = response.data;\r
-                    var source = "VID";\r
-                    var data = {\r
-                        requestDetails: {\r
-                            requestInfo: {\r
-                                source: source,\r
-                                responseValue: taskToComplete,\r
-                                requestorId: attuid\r
-                            }\r
-                        }\r
-                    };\r
-\r
-                    return $http.post(\r
-                        "mso/mso_post_man_task/" + taskId, data,\r
-                        {\r
-                            timeout: PropertyService\r
-                                .getServerResponseTimeoutMsec()\r
-                        }).then(function (response) {\r
-                            resolve(response);\r
-                    })\r
-                        .catch(UtilityService.runHttpErrorHandler);\r
-                }, function () {\r
-                    reject();\r
-                });\r
-            });\r
-\r
-            return promise;\r
-        },\r
-        showResponseContentError : function(error, showFunction) {\r
-            switch (error.type) {\r
-                case "undefinedObject":\r
-                    showFunction(FIELD.ERROR.SYSTEM_FAILURE, error.message);\r
-                    break;\r
-                case "msoFailure":\r
-                    showFunction(FIELD.ERROR.MSO, "");\r
-                    break;\r
-                default:\r
-                    showFunction(FIELD.ERROR.SYSTEM_FAILURE);\r
-            }\r
-        },\r
-        activateInstance: activateInstance,\r
-        deactivateInstance: deactivateInstance,\r
-\r
-\r
-        createConfigurationInstance: function(requestParams) {\r
-\r
-            const modelInfoOf = function (instance) {\r
-                const modelInfo = {\r
-                    "modelType": "vnf",\r
-                    "modelInvariantId": instance.properties['model-invariant-id'],\r
-                    "modelVersionId": instance.properties['model-version-id'],\r
-                    "modelName": instance.properties['model-name'],\r
-                    "modelVersion": instance.properties['model-version'],\r
-                    "modelCustomizationId": instance.properties['model-customization-id']\r
-                };\r
-\r
-                $log.debug("model info from instance", instance);\r
-                $log.debug("model info to model", modelInfo);\r
-\r
-                return modelInfo;\r
-            };\r
-\r
-            var payload = {\r
-                "requestDetails": {\r
-                    "modelInfo": {\r
-                        "modelType": "configuration",\r
-                        "modelInvariantId": requestParams.configurationModelInfo.modelInvariantId,\r
-                        "modelVersionId": requestParams.configurationModelInfo.modelNameVersionId,\r
-                        "modelName": requestParams.configurationModelInfo.modelName, // "Port Mirroring Configuration"\r
-                        "modelVersion": requestParams.configurationModelInfo.modelVersion,\r
-                        "modelCustomizationId": requestParams.configurationModelInfo.customizationUuid,\r
-                        "modelCustomizationName": requestParams.configurationModelInfo.modelCustomizationName\r
-                    },\r
-                    "cloudConfiguration": {\r
-                        "lcpCloudRegionId": requestParams.portMirroringConfigFields.cloudRegionId,\r
-                        "cloudOwner" : requestParams.portMirroringConfigFields.cloudOwner\r
-                    },\r
-                    "requestInfo": {\r
-                        "instanceName": requestParams.portMirroringConfigFields.instanceName.value,\r
-                        "source": "VID",\r
-                        "requestorId": requestParams.attuuid\r
-                    },\r
-                    "relatedInstanceList": [\r
-                        {\r
-                            "relatedInstance": {\r
-                                "instanceId": requestParams.topServiceInstanceId,\r
-                                "modelInfo": {\r
-                                    "modelType": "service", // relatedTopModelsInfo.modelType\r
-                                    "modelInvariantId": requestParams.relatedTopModelsInfo.modelInvariantId,\r
-                                    "modelVersionId": requestParams.relatedTopModelsInfo.modelNameVersionId,\r
-                                    "modelName": requestParams.relatedTopModelsInfo.modelName,\r
-                                    "modelVersion": requestParams.relatedTopModelsInfo.modelVersion\r
-                                }\r
-                            }\r
-                        },\r
-                        {\r
-                            "relatedInstance": {\r
-                                "instanceId": requestParams.portMirroringConfigFields.sourceInstance.properties['vnf-id'],\r
-                                "instanceDirection": "source",\r
-                                "modelInfo": modelInfoOf(requestParams.portMirroringConfigFields.sourceInstance)\r
-                            }\r
-                        },\r
-                        {\r
-                            "relatedInstance": requestParams.configurationByPolicy ? {\r
-                                "instanceName": requestParams.portMirroringConfigFields.destinationInstance.properties['pnfName'],\r
-                                "instanceDirection": "destination",\r
-                                "modelInfo": {\r
-                                    "modelType": "pnf"\r
-                                }\r
-                            } : {\r
-                                "instanceId": requestParams.portMirroringConfigFields.destinationInstance.properties['vnf-id'],\r
-                                "instanceDirection": "destination",\r
-                                "modelInfo": modelInfoOf(requestParams.portMirroringConfigFields.destinationInstance)\r
-                            }\r
-                        }\r
-                    ],\r
-                    "requestParameters": {\r
-                        "userParams": []\r
-                    }\r
-                }\r
-            };\r
-\r
-            $log.debug("payload", payload);\r
-\r
-            var deferred = $q.defer();\r
-            $http.post([\r
-                'mso','mso_create_configuration_instance',\r
-                requestParams.topServiceInstanceId,\r
-                'configurations',''\r
-            ].join(COMPONENT.FORWARD_SLASH),\r
-                payload)\r
-                .success(function (response) {\r
-                    deferred.resolve({data : response});\r
-                }).error(function (data, status) {\r
-                deferred.reject({message: data, status: status});\r
-            });\r
-            return deferred.promise;\r
-        },\r
-        deleteConfiguration: function(requestParams, configuration) {\r
-\r
-            var requestDetails = {\r
-                "modelInfo": requestParams.configurationModel,\r
-                "cloudConfiguration": {\r
-                    "lcpCloudRegionId": configuration.configData.cloudRegionId\r
-                },\r
-                "requestInfo": {\r
-                    "source": "VID",\r
-                    "requestorId": requestParams.userId\r
-                },\r
-                "requestParameters": {\r
-                    "userParams": []\r
-                }\r
-            };\r
-\r
-            var url = "mso/mso_delete_configuration/" + requestParams.serviceInstanceId + "/configurations/" + requestParams.configurationId;\r
-            return sendPostRequest(url, requestDetails);\r
-        },\r
-        toggleConfigurationStatus: function(requestParams, configuration) {\r
-\r
-            var requestDetails = {\r
-                "modelInfo": requestParams.configurationModel,\r
-                "cloudConfiguration": {\r
-                    "lcpCloudRegionId": configuration && configuration.configData ? configuration.configData.cloudRegionId : null\r
-                },\r
-                "requestInfo": {\r
-                    "source": "VID",\r
-                    "requestorId": requestParams.userId\r
-                },\r
-                "relatedInstanceList": [{\r
-                    "relatedInstance": {\r
-                        "instanceId": requestParams.serviceInstanceId,\r
-                        "modelInfo": requestParams.serviceModel\r
-                    }\r
-                }],\r
-                "requestParameters": {\r
-                    "userParams": []\r
-                }\r
-            };\r
-\r
-            var url;\r
-            switch (requestParams.configStatus) {\r
-                case FIELD.STATUS.AAI_CREATED:\r
-                case FIELD.STATUS.AAI_INACTIVE:\r
-                    url = "mso/mso_activate_configuration/"+requestParams.serviceInstanceId+"/configurations/"+requestParams.configurationId;\r
-                    break;\r
-                case FIELD.STATUS.AAI_ACTIVE:\r
-                    url = "mso/mso_deactivate_configuration/"+requestParams.serviceInstanceId+"/configurations/"+requestParams.configurationId;\r
-                    break;\r
-            }\r
-\r
-            return sendPostRequest(url, requestDetails);\r
-        },\r
-\r
-        togglePortStatus: function(requestParams, configuration, defaultParams) {\r
-\r
-            var requestDetails = {\r
-                "modelInfo": requestParams.configurationModel,\r
-                "cloudConfiguration": {\r
-                    "lcpCloudRegionId": configuration && configuration.configData ? configuration.configData.cloudRegionId : null\r
-                },\r
-                "requestInfo": {\r
-                    "source": "VID",\r
-                    "requestorId": requestParams.userId\r
-                },\r
-                "relatedInstanceList": [\r
-                    {\r
-                        "relatedInstance": {\r
-                            "instanceId": requestParams.serviceInstanceId,\r
-                            "modelInfo": requestParams.serviceModel\r
-                        }\r
-                    },\r
-                    {\r
-                        "relatedInstance": {\r
-                            "instanceId": requestParams.portId,\r
-                            "instanceDirection": "source",\r
-                            "modelInfo": {\r
-                                "modelType": "connectionPoint"\r
-                            }\r
-                        }\r
-                    }\r
-                ]\r
-            };\r
-\r
-            var url;\r
-            switch (requestParams.portStatus) {\r
-                case FIELD.STATUS.AAI_ENABLED:\r
-                    url = "mso/mso_disable_port_configuration/"+requestParams.serviceInstanceId+"/configurations/"+requestParams.configurationId;\r
-                    break;\r
-                case FIELD.STATUS.AAI_DISABLED:\r
-                    url = "mso/mso_enable_port_configuration/"+requestParams.serviceInstanceId+"/configurations/"+requestParams.configurationId;\r
-                    break;\r
-            }\r
-\r
-            return sendPostRequest(url, requestDetails);\r
-        },\r
-\r
-        buildPayloadForAssociateDissociate: function(serviceModelInfo, attuuid, instanceId, pnf) {\r
-            var payload = {\r
-                    "modelInfo": {\r
-                        "modelType": "service",\r
-                        "modelInvariantId": serviceModelInfo.invariantUuid,\r
-                        "modelVersionId": serviceModelInfo.uuid,\r
-                        "modelName": serviceModelInfo.name,\r
-                        "modelVersion": serviceModelInfo.version\r
-                    },\r
-                    "requestInfo": {\r
-                        "source": "VID",\r
-                        "requestorId": attuuid\r
-                    },\r
-                    "relatedInstanceList": [\r
-                        {\r
-                            "relatedInstance": {\r
-                                "instanceName": pnf,\r
-                                "modelInfo": {\r
-                                    "modelType": "pnf"\r
-                                }\r
-                            }\r
-                        }],\r
-                    "requestParameters": {\r
-                        "aLaCarte": true\r
-                    }\r
-            };\r
-\r
-            $log.debug("payload", payload);\r
-\r
-            return payload;\r
-        },\r
-        associatePnf: function(requestParams) {\r
-\r
-            var payload = this.buildPayloadForAssociateDissociate(requestParams.serviceModelInfo, requestParams.attuuid, requestParams.instanceId, requestParams.pnf);\r
-            return sendPostRequest([\r
-                    COMPONENT.MSO, COMPONENT.MSO_CREATE_REALATIONSHIP,\r
-                    requestParams.instanceId,\r
-                    ''\r
-                ].join(COMPONENT.FORWARD_SLASH), payload);\r
-        },\r
-        dissociatePnf: function(requestParams) {\r
-\r
-            var payload = this.buildPayloadForAssociateDissociate(requestParams.serviceModelInfo, requestParams.attuuid, requestParams.serviceInstanceId, requestParams.pnf);\r
-\r
-            return sendPostRequest([\r
-                COMPONENT.MSO, COMPONENT.MSO_REMOVE_RELATIONSHIP,\r
-                requestParams.serviceInstanceId,\r
-                ''\r
-            ].join(COMPONENT.FORWARD_SLASH), payload);\r
-        },\r
-        activateFabricConfiguration: function(requestParams) {\r
-            var payload = buildPayloadForActivateFabricConfiguration(requestParams.model, requestParams.userId);\r
-\r
-            var url = COMPONENT.MSO_ACTIVATE_FABRIC_CONFIGURATION_INSTANCE.replace('@serviceInstanceId', requestParams.serviceInstanceId);\r
-            return sendPostRequest(url, payload);\r
-        },\r
-        deactivateAndCloudDelete : function (requestParams)  {\r
-            var payload = {\r
-                tenantId: requestParams.tenantId,\r
-                lcpCloudRegionId: requestParams.lcpCloudRegionId,\r
-                userId: requestParams.userId\r
-            };\r
-\r
-            var url = COMPONENT.MSO_DEACTIVATE_AND_CLOUD_DELETE_INSTANCE.replace('@serviceInstanceId', requestParams.serviceInstanceId)\r
-                        .replace('@vnfInstanceId', requestParams.vnfInstanceId)\r
-                        .replace('@vfModuleInstanceId', requestParams.vfModuleInstanceId);\r
-\r
-            return sendPostRequestWithBody(url, payload);\r
-        }\r
-    };\r
-};\r
-\r
-appDS2.factory("MsoService", MsoService );\r
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+"use strict";
+
+var MsoService = function($http, $log, $q, PropertyService, AaiService, UtilityService, COMPONENT, FIELD, moment) {
+
+    var _this = this;
+
+       /*
+        * Common function to handle both create and delete instance requests
+        */
+    var requestInstanceUpdate = function(request, successCallbackFunction) {
+        $log.debug("MsoService:requestInstanceUpdate: request:");
+        $log.debug(request);
+        $http.post( "mso/" + request.url, {
+            requestDetails : request.requestDetails
+        }, {
+            timeout : PropertyService.getServerResponseTimeoutMsec()
+        }).then(successCallbackFunction)["catch"]
+        (UtilityService.runHttpErrorHandler);
+    };
+
+    var checkValidStatus = function(response) {
+        if (response.data.status < 200 || response.data.status > 202) {
+            throw {
+                type : FIELD.ID.MSO_FAILURE
+            };
+        }
+    };
+
+    var addListEntry = function(name, value) {
+        var entry = '"' + name + '": ';
+        if (value === undefined) {
+            return entry + "undefined";
+        } else {
+            return entry + '"' + value + '"';
+        }
+    };
+
+    var buildPayloadForServiceActivateDeactivate = function (model, userId) {
+        var requestDetails = {
+                "modelInfo": {
+                    "modelType": "service",
+                    "modelInvariantId": model.service.invariantUuid,
+                    "modelVersionId": model.service.uuid,
+                    "modelName": model.service.name,
+                    "modelVersion": model.service.version
+                },
+                "requestInfo": {
+                    "source": "VID",
+                    "requestorId": userId
+                },
+                "requestParameters": {
+                    // aicZone was sent from here
+                    "userParams": []
+                }
+        };
+
+        $log.debug("Service Activate/Deactivate payload", requestDetails);
+
+        return requestDetails;
+
+    };
+
+    var buildPayloadForActivateFabricConfiguration = function (model, userId) {
+        var requestDetails = {
+            "modelInfo": {
+                "modelType": "service",
+                "modelInvariantId": model.service.invariantUuid,
+                "modelVersionId": model.service.uuid,
+                "modelName": model.service.name,
+                "modelVersion": model.service.version
+            },
+            "requestInfo": {
+                "source": "VID",
+                "requestorId": userId
+            },
+            "requestParameters": {
+                "aLaCarte": false
+            }
+        };
+
+        $log.debug("Service Activate Fabric Configuration payload", requestDetails);
+
+        return requestDetails;
+
+    };
+
+    var activateInstance = function(requestParams) {
+        var requestDetails = buildPayloadForServiceActivateDeactivate(requestParams.model, requestParams.userId);
+
+        return sendPostRequest(COMPONENT.MSO_ACTIVATE_INSTANCE.replace('@serviceInstanceId', requestParams.instance.serviceInstanceId),
+            requestDetails);
+    };
+
+    var deactivateInstance = function(requestParams) {
+        var requestDetails = buildPayloadForServiceActivateDeactivate(requestParams.model, requestParams.userId);
+
+        return sendPostRequest(COMPONENT.MSO_DEACTIVATE_INSTANCE.replace('@serviceInstanceId', requestParams.instance.serviceInstanceId),
+            requestDetails);
+    };
+
+    var sendPostRequestWithBody = function(url, requestBody) {
+        var deferred = $q.defer();
+        if (url) {
+            $http.post(url, requestBody, {
+                timeout: PropertyService.getServerResponseTimeoutMsec()
+            }).success(function (response) {
+                deferred.resolve({data: response});
+            }).error(function (data, status) {
+                deferred.reject({message: data, status: status});
+            });
+        }
+
+        return deferred.promise;
+    };
+
+    var sendPostRequest = function(url, requestDetails) {
+        return sendPostRequestWithBody(url, {requestDetails: requestDetails});
+    };
+
+    return {
+        createInstance : requestInstanceUpdate,
+        deleteInstance : requestInstanceUpdate,
+        createAndDeleteInstance: function(requestParams)  {
+            return sendPostRequest("mso/" + requestParams.url, requestParams.requestDetails);
+        },
+        getOrchestrationRequest : function(requestId, successCallbackFunction) {
+            $log.debug("MsoService:getOrchestrationRequest: requestId: "
+                + requestId);
+            $http.get(
+                "mso/mso_get_orch_req/"
+                + requestId + "?r=" + Math.random(),
+                {
+                    timeout : PropertyService
+                        .getServerResponseTimeoutMsec()
+                }).then(successCallbackFunction)["catch"]
+            (UtilityService.runHttpErrorHandler);
+        },
+        getOrchestrationRequests : function(filterString,
+                                            successCallbackFunction) {
+            $log.debug("MsoService:getOrchestrationRequests: filterString: "
+                + filterString);
+            $http.get(
+                "mso/mso_get_orch_reqs/"
+                + encodeURIComponent(filterString) + "?r="
+                + Math.random(),
+                {
+                    timeout : PropertyService
+                        .getServerResponseTimeoutMsec()
+                }).then(successCallbackFunction)["catch"]
+            (UtilityService.runHttpErrorHandler);
+        },
+        getFormattedCommonResponse : function(response) {
+             if (response && response.data && response.data.status) {
+                return UtilityService.getCurrentTime() + " HTTP Status: "
+                    + UtilityService.getHttpStatusText(response.data.status)
+                    + "\n" + angular.toJson(response.data.entity, true);
+             }
+             else {
+                 return UtilityService.getCurrentTime() + " HTTP Status: "
+                    + "N/A\nVID has timed out waiting for an MSO response.\nPlease close this popup or refresh page.";
+            }
+
+        },
+        checkValidStatus : checkValidStatus,
+        getFormattedGetOrchestrationRequestsResponse : function(response) {
+            UtilityService.checkUndefined(COMPONENT.ENTITY, response.data.entity);
+            UtilityService.checkUndefined(COMPONENT.STATUS, response.data.status);
+            checkValidStatus(response);
+
+            var list = response.data.entity.requestList;
+            UtilityService.checkUndefined(FIELD.ID.REQUEST_LIST, list);
+
+            var message = "";
+
+            for (var i = 0; i < list.length; i++) {
+                var request = list[i].request;
+                message += addListEntry(FIELD.ID.REQUEST_ID, request.requestId) + ",\n";
+                message += addListEntry(FIELD.ID.REQUEST_TYPE, request.requestType)
+                    + ",\n";
+                var status = request.requestStatus;
+                if (status === undefined) {
+                    message += addListEntry(FIELD.ID.REQUEST_STATUS, undefined) + "\n";
+                } else {
+                    if(status.finishTime) {
+                        message += addListEntry(FIELD.ID.TIMESTAMP, moment(new Date(status.finishTime)).format("ddd, DD MMM YYYY HH:mm:ss"))
+                            + ",\n";
+                    }
+                    message += addListEntry(FIELD.ID.REQUEST_STATE, status.requestState)
+                        + ",\n";
+                    message += addListEntry(FIELD.ID.REQUEST_STATUS,
+                            status.statusMessage)
+                        + ",\n";
+                    message += addListEntry(FIELD.ID.PERCENT_PROGRESS,
+                            status.percentProgress)
+                        + "\n";
+                }
+                if (i < (list.length - 1)) {
+                    message += "\n";
+                }
+            }
+            return message;
+        },
+        getFormattedSingleGetOrchestrationRequestResponse : function (response) {
+            UtilityService.checkUndefined(COMPONENT.ENTITY, response.data.entity);
+            UtilityService.checkUndefined(COMPONENT.STATUS, response.data.status);
+            //checkValidStatus(response);
+
+            var message = "";
+            if (! (response && response.data && response.data.entity)) {
+                return message;
+            }
+            if ( UtilityService.hasContents (response.data.entity.request) ) {
+                var request = response.data.entity.request;
+                message += addListEntry(FIELD.ID.REQUEST_ID, request.requestId) + ",\n";
+                message += addListEntry(FIELD.ID.REQUEST_TYPE, request.requestType)
+                    + ",\n";
+                var status = request.requestStatus;
+                if (status === undefined) {
+                    message += addListEntry(FIELD.ID.REQUEST_STATUS, undefined) + "\n";
+                } else {
+                    message += addListEntry(FIELD.ID.TIMESTAMP, moment(new Date()).format("ddd, DD MMM YYYY HH:mm:ss"))
+                        + ",\n";
+                    message += addListEntry(FIELD.ID.REQUEST_STATE, status.requestState)
+                        + ",\n";
+                    message += addListEntry(FIELD.ID.REQUEST_STATUS,
+                            status.statusMessage)
+                        + ",\n";
+                    message += addListEntry(FIELD.ID.PERCENT_PROGRESS,
+                            status.percentProgress)
+                        + "\n\n";
+                }
+            }
+            else {
+                if (UtilityService.hasContents(response.data.status) && UtilityService.hasContents(response.data.entity)) {
+                    message = this.getFormattedCommonResponse(response) + "\n";
+                }
+            }
+            return message;
+        },
+        getManualTasks : function(requestId) {
+            $log.debug("MsoService:getManualTasks: requestId: "
+                + requestId);
+            return $http.get(
+                "mso/mso_get_man_task/" + requestId,
+                {
+                    timeout: PropertyService
+                        .getServerResponseTimeoutMsec()
+                })
+                .catch(UtilityService.runHttpErrorHandler);
+        },
+        completeTask: function(taskId, taskToComplete) {
+            var promise = new Promise(function (resolve, reject) {
+                $log.debug("MsoService:completeTask: taskId: "
+                    + taskId);
+                AaiService.getLoggedInUserID(function (response) {
+                    var attuid = response.data;
+                    var source = "VID";
+                    var data = {
+                        requestDetails: {
+                            requestInfo: {
+                                source: source,
+                                responseValue: taskToComplete,
+                                requestorId: attuid
+                            }
+                        }
+                    };
+
+                    return $http.post(
+                        "mso/mso_post_man_task/" + taskId, data,
+                        {
+                            timeout: PropertyService
+                                .getServerResponseTimeoutMsec()
+                        }).then(function (response) {
+                            resolve(response);
+                    })
+                        .catch(UtilityService.runHttpErrorHandler);
+                }, function () {
+                    reject();
+                });
+            });
+
+            return promise;
+        },
+        showResponseContentError : function(error, showFunction) {
+            switch (error.type) {
+                case "undefinedObject":
+                    showFunction(FIELD.ERROR.SYSTEM_FAILURE, error.message);
+                    break;
+                case "msoFailure":
+                    showFunction(FIELD.ERROR.MSO, "");
+                    break;
+                default:
+                    showFunction(FIELD.ERROR.SYSTEM_FAILURE);
+            }
+        },
+        activateInstance: activateInstance,
+        deactivateInstance: deactivateInstance,
+
+
+        createConfigurationInstance: function(requestParams) {
+
+            const modelInfoOf = function (instance) {
+                const modelInfo = {
+                    "modelType": "vnf",
+                    "modelInvariantId": instance.properties['model-invariant-id'],
+                    "modelVersionId": instance.properties['model-version-id'],
+                    "modelName": instance.properties['model-name'],
+                    "modelVersion": instance.properties['model-version'],
+                    "modelCustomizationId": instance.properties['model-customization-id']
+                };
+
+                $log.debug("model info from instance", instance);
+                $log.debug("model info to model", modelInfo);
+
+                return modelInfo;
+            };
+
+            var payload = {
+                "requestDetails": {
+                    "modelInfo": {
+                        "modelType": "configuration",
+                        "modelInvariantId": requestParams.configurationModelInfo.modelInvariantId,
+                        "modelVersionId": requestParams.configurationModelInfo.modelNameVersionId,
+                        "modelName": requestParams.configurationModelInfo.modelName, // "Port Mirroring Configuration"
+                        "modelVersion": requestParams.configurationModelInfo.modelVersion,
+                        "modelCustomizationId": requestParams.configurationModelInfo.customizationUuid,
+                        "modelCustomizationName": requestParams.configurationModelInfo.modelCustomizationName
+                    },
+                    "cloudConfiguration": {
+                        "lcpCloudRegionId": requestParams.portMirroringConfigFields.cloudRegionId,
+                        "cloudOwner" : requestParams.portMirroringConfigFields.cloudOwner
+                    },
+                    "requestInfo": {
+                        "instanceName": requestParams.portMirroringConfigFields.instanceName.value,
+                        "source": "VID",
+                        "requestorId": requestParams.attuuid
+                    },
+                    "relatedInstanceList": [
+                        {
+                            "relatedInstance": {
+                                "instanceId": requestParams.topServiceInstanceId,
+                                "modelInfo": {
+                                    "modelType": "service", // relatedTopModelsInfo.modelType
+                                    "modelInvariantId": requestParams.relatedTopModelsInfo.modelInvariantId,
+                                    "modelVersionId": requestParams.relatedTopModelsInfo.modelNameVersionId,
+                                    "modelName": requestParams.relatedTopModelsInfo.modelName,
+                                    "modelVersion": requestParams.relatedTopModelsInfo.modelVersion
+                                }
+                            }
+                        },
+                        {
+                            "relatedInstance": {
+                                "instanceId": requestParams.portMirroringConfigFields.sourceInstance.properties['vnf-id'],
+                                "instanceDirection": "source",
+                                "modelInfo": modelInfoOf(requestParams.portMirroringConfigFields.sourceInstance)
+                            }
+                        },
+                        {
+                            "relatedInstance": requestParams.configurationByPolicy ? {
+                                "instanceName": requestParams.portMirroringConfigFields.destinationInstance.properties['pnfName'],
+                                "instanceDirection": "destination",
+                                "modelInfo": {
+                                    "modelType": "pnf"
+                                }
+                            } : {
+                                "instanceId": requestParams.portMirroringConfigFields.destinationInstance.properties['vnf-id'],
+                                "instanceDirection": "destination",
+                                "modelInfo": modelInfoOf(requestParams.portMirroringConfigFields.destinationInstance)
+                            }
+                        }
+                    ],
+                    "requestParameters": {
+                        "userParams": []
+                    }
+                }
+            };
+
+            $log.debug("payload", payload);
+
+            var deferred = $q.defer();
+            $http.post([
+                'mso','mso_create_configuration_instance',
+                requestParams.topServiceInstanceId,
+                'configurations',''
+            ].join(COMPONENT.FORWARD_SLASH),
+                payload)
+                .success(function (response) {
+                    deferred.resolve({data : response});
+                }).error(function (data, status) {
+                deferred.reject({message: data, status: status});
+            });
+            return deferred.promise;
+        },
+        deleteConfiguration: function(requestParams, configuration) {
+
+            var requestDetails = {
+                "modelInfo": requestParams.configurationModel,
+                "cloudConfiguration": {
+                    "lcpCloudRegionId": configuration.configData.cloudRegionId
+                },
+                "requestInfo": {
+                    "source": "VID",
+                    "requestorId": requestParams.userId
+                },
+                "requestParameters": {
+                    "userParams": []
+                }
+            };
+
+            var url = "mso/mso_delete_configuration/" + requestParams.serviceInstanceId + "/configurations/" + requestParams.configurationId;
+            return sendPostRequest(url, requestDetails);
+        },
+        toggleConfigurationStatus: function(requestParams, configuration) {
+
+            var requestDetails = {
+                "modelInfo": requestParams.configurationModel,
+                "cloudConfiguration": {
+                    "lcpCloudRegionId": configuration && configuration.configData ? configuration.configData.cloudRegionId : null
+                },
+                "requestInfo": {
+                    "source": "VID",
+                    "requestorId": requestParams.userId
+                },
+                "relatedInstanceList": [{
+                    "relatedInstance": {
+                        "instanceId": requestParams.serviceInstanceId,
+                        "modelInfo": requestParams.serviceModel
+                    }
+                }],
+                "requestParameters": {
+                    "userParams": []
+                }
+            };
+
+            var url;
+            switch (requestParams.configStatus) {
+                case FIELD.STATUS.AAI_CREATED:
+                case FIELD.STATUS.AAI_INACTIVE:
+                    url = "mso/mso_activate_configuration/"+requestParams.serviceInstanceId+"/configurations/"+requestParams.configurationId;
+                    break;
+                case FIELD.STATUS.AAI_ACTIVE:
+                    url = "mso/mso_deactivate_configuration/"+requestParams.serviceInstanceId+"/configurations/"+requestParams.configurationId;
+                    break;
+            }
+
+            return sendPostRequest(url, requestDetails);
+        },
+
+        togglePortStatus: function(requestParams, configuration, defaultParams) {
+
+            var requestDetails = {
+                "modelInfo": requestParams.configurationModel,
+                "cloudConfiguration": {
+                    "lcpCloudRegionId": configuration && configuration.configData ? configuration.configData.cloudRegionId : null
+                },
+                "requestInfo": {
+                    "source": "VID",
+                    "requestorId": requestParams.userId
+                },
+                "relatedInstanceList": [
+                    {
+                        "relatedInstance": {
+                            "instanceId": requestParams.serviceInstanceId,
+                            "modelInfo": requestParams.serviceModel
+                        }
+                    },
+                    {
+                        "relatedInstance": {
+                            "instanceId": requestParams.portId,
+                            "instanceDirection": "source",
+                            "modelInfo": {
+                                "modelType": "connectionPoint"
+                            }
+                        }
+                    }
+                ]
+            };
+
+            var url;
+            switch (requestParams.portStatus) {
+                case FIELD.STATUS.AAI_ENABLED:
+                    url = "mso/mso_disable_port_configuration/"+requestParams.serviceInstanceId+"/configurations/"+requestParams.configurationId;
+                    break;
+                case FIELD.STATUS.AAI_DISABLED:
+                    url = "mso/mso_enable_port_configuration/"+requestParams.serviceInstanceId+"/configurations/"+requestParams.configurationId;
+                    break;
+            }
+
+            return sendPostRequest(url, requestDetails);
+        },
+
+        buildPayloadForAssociateDissociate: function(serviceModelInfo, attuuid, instanceId, pnf) {
+            var payload = {
+                    "modelInfo": {
+                        "modelType": "service",
+                        "modelInvariantId": serviceModelInfo.invariantUuid,
+                        "modelVersionId": serviceModelInfo.uuid,
+                        "modelName": serviceModelInfo.name,
+                        "modelVersion": serviceModelInfo.version
+                    },
+                    "requestInfo": {
+                        "source": "VID",
+                        "requestorId": attuuid
+                    },
+                    "relatedInstanceList": [
+                        {
+                            "relatedInstance": {
+                                "instanceName": pnf,
+                                "modelInfo": {
+                                    "modelType": "pnf"
+                                }
+                            }
+                        }],
+                    "requestParameters": {
+                        "aLaCarte": true
+                    }
+            };
+
+            $log.debug("payload", payload);
+
+            return payload;
+        },
+        associatePnf: function(requestParams) {
+
+            var payload = this.buildPayloadForAssociateDissociate(requestParams.serviceModelInfo, requestParams.attuuid, requestParams.instanceId, requestParams.pnf);
+            return sendPostRequest([
+                    COMPONENT.MSO, COMPONENT.MSO_CREATE_REALATIONSHIP,
+                    requestParams.instanceId,
+                    ''
+                ].join(COMPONENT.FORWARD_SLASH), payload);
+        },
+        dissociatePnf: function(requestParams) {
+
+            var payload = this.buildPayloadForAssociateDissociate(requestParams.serviceModelInfo, requestParams.attuuid, requestParams.serviceInstanceId, requestParams.pnf);
+
+            return sendPostRequest([
+                COMPONENT.MSO, COMPONENT.MSO_REMOVE_RELATIONSHIP,
+                requestParams.serviceInstanceId,
+                ''
+            ].join(COMPONENT.FORWARD_SLASH), payload);
+        },
+        activateFabricConfiguration: function(requestParams) {
+            var payload = buildPayloadForActivateFabricConfiguration(requestParams.model, requestParams.userId);
+
+            var url = COMPONENT.MSO_ACTIVATE_FABRIC_CONFIGURATION_INSTANCE.replace('@serviceInstanceId', requestParams.serviceInstanceId);
+            return sendPostRequest(url, payload);
+        },
+        deactivateAndCloudDelete : function (requestParams)  {
+            var payload = {
+                tenantId: requestParams.tenantId,
+                lcpCloudRegionId: requestParams.lcpCloudRegionId,
+                userId: requestParams.userId
+            };
+
+            var url = COMPONENT.MSO_DEACTIVATE_AND_CLOUD_DELETE_INSTANCE.replace('@serviceInstanceId', requestParams.serviceInstanceId)
+                        .replace('@vnfInstanceId', requestParams.vnfInstanceId)
+                        .replace('@vfModuleInstanceId', requestParams.vfModuleInstanceId);
+
+            return sendPostRequestWithBody(url, payload);
+        }
+    };
+};
+
+appDS2.factory("MsoService", MsoService );
index 34abd22..697e1a9 100644 (file)
@@ -47,7 +47,7 @@
         <dependency>
             <groupId>com.aventstack</groupId>
             <artifactId>extentreports</artifactId>
-            <version>3.0.7</version>
+            <version>4.0.9</version>
         </dependency>
 
         <dependency>
index d6a6c1f..08a44c6 100644 (file)
@@ -5,7 +5,6 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.nio.file.Files;
 import java.nio.file.Paths;
-
 import org.yaml.snakeyaml.Yaml;
 
 public class Configuration {
@@ -20,8 +19,6 @@ public class Configuration {
        private boolean remoteTesting;
        private String browser;
        private String systemUnderDebug;
-       private String reportDBhost;
-       private int reportDBport;
        private boolean captureTraffic;
        private boolean useBrowserMobProxy;
        private String stopOnClassFailure;
@@ -164,26 +161,6 @@ public class Configuration {
        }
 
 
-       public String getReportDBhost() {
-               return reportDBhost;
-       }
-
-
-       public void setReportDBhost(String reportDBhost) {
-               this.reportDBhost = reportDBhost;
-       }
-
-
-       public int getReportDBport() {
-               return reportDBport;
-       }
-
-
-       public void setReportDBport(int reportDBport) {
-               this.reportDBport = reportDBport;
-       }
-
-
        public boolean isCaptureTraffic() {
                return captureTraffic;
        }
index c835648..e3efb08 100644 (file)
 
 package org.onap.sdc.ci.tests.execute.setup;
 
+import com.aventstack.extentreports.ExtentReports;
+import com.aventstack.extentreports.reporter.ExtentHtmlReporter;
+import com.aventstack.extentreports.reporter.configuration.Protocol;
+import com.aventstack.extentreports.reporter.configuration.Theme;
 import java.io.File;
-import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-
 import org.onap.sdc.ci.tests.datatypes.Configuration;
 import org.onap.sdc.ci.tests.utilities.FileHandling;
 import org.testng.ITestContext;
 
-import com.aventstack.extentreports.ExtentReports;
-import com.aventstack.extentreports.reporter.ExtentHtmlReporter;
-import com.aventstack.extentreports.reporter.ExtentXReporter;
-import com.aventstack.extentreports.reporter.configuration.Protocol;
-import com.aventstack.extentreports.reporter.configuration.Theme;
-
 public class ExtentManager {
        
        private static final String VERSIONS_INFO_FILE_NAME = "versions.info";
        private static ExtentReports extent;
-       private static ExtentHtmlReporter htmlReporter;
-       private static ExtentXReporter extentxReporter;
        private static final String icon = "$(document).ready(function() {" +"\n"+
                     "$('.brand-logo').html('').prepend(\"<span><img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQ4AAAB7CAYAAACFKW5jAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAABaAAAAWgBwI7h9AAAAB3RJTUUH3wwXFAQf1clFIAAANNxJREFUeNrtnXeYXVXV/z+n3To101ImvZFGQiCANKUoSBEFebEj1hcb2MWC+lpAbGD5CaKoiL2ggIgoRUIgQAohJCG9TTLJ9Dszt52y9++PfSeZTO6duXfmTkk4n+eZJ5Nbztn7zNnrrL32Wt8NPj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+PgOjjXYDhpX7WgkZMD2qY2qQFtDlSkSvjlsaGJpGUIeQAS1pyb60hMurRrv1Pj5jFnO0G1As9PvbmBiEDkeS8CSmpuEhCOi6FTW0sAYhiTRNTTM8JBoaGmDpSEODoK65EQM7YpLCCCVC97ciAUODuSU6UpO88Jpxo91NH58xwTHtcSx6vJ2DKUlTSlBVVqKVesnqlrSosaWcFTa0eXFX1nmSmrChjTc1qoCIKwlJ1W8NkDoITUPokAQ6U0I2uYL9FZZ+UNfYnvDkhoWlRnNdhIMP7HWcsqDOonKDsK7znzPLRvsS+PiMCsec4VjwWDvNaUFTh8eS8VbFvpSc4Qh5esJjKbBASDnDlZTqGmEpQQ7yPLoGSGxdIx4xtEZbyhdrA/pGIVk+ParveEt9qOH69d3i1AqTcbg8eE71aF8aH58RY8wbjresjbGiCTzpsb/JYUF9oKwpJZekhLzQkfJMIVnkCMoBY7BGIl90DQyNeEjXdhsaz4UN7V9TwvozK88p31Pzzza5uNykOqDzh2Wlo33ZfHyGlTFrOC58opMGT9DuCG6YGdG/ty0xxxby4pTgEkfKpa6gYrgNRX9ogKHhBHVta4WlPR4xtPtmRPXn/7U73XlGfYCoAf8+o2K0L6OPz7AwJg3H/Mc6aEoLFpUawe0J79RuV76525WXuYLpYrQblwUNCOh0Rk3tuQpL/119WHv4yS3O/lNnBji53OQnS6Kj3UQfn6IypgzHOcvb2ZWQnFRpWavbnDM6XfmelJCXOIKq0fQuCsHScKOmtqbE1H41K2r89Yl9qQPvmh3hnqX+9MXn+GHMGI4TH+vgX2eEtLOXJ09sscUHEx5XOUJWHysGoy+mhltmas9OCOl3/E998O9rO9yub82PMLf0uFkB93kFM+qG44HGNF/dnCSoU7s9Lt4bc+UHUp6cdqwajL6EdS01OaI/eOY469t3nxR9PuFJGTX10W6Wj8+QGFXDIaUE0M5d0XnW+k73pg5HnutJjNG+KMVG12Ba2NjzwWnB2z89O/xLDdoANG3U7baPz6AYlUeflLLHaES++nLius1d3m/bbHnB8Wg0AISEnXFvyv0H7Fu2x727gaU918HH51hkxA1Hr8EyrdkW31vZ7n67MSXqj/chJDXY3O1Zrba8HPgN8DYg2MuI+vgcM4yo4eg1QM4B7m1Kyw++2OlFRvsijEznoTaoMyGkA5wA/AT4IlDR59r4+Ix5Rsxw/L4hBWAAbwF+AZz5SprhmzpcPSnIpNChS14GfBa4HZjSYgu+uTkx2s308cmLETEc5yzvoMrSw2khrwN+AMwAmBrROXPc8b88qQNXTQxy3bQgxpHW0gLeCdxZFdAXfn5jguWtzmg318dnQIbdcLz26U7Chla+KuZ+xRbcAtT0vBc1NL4wJ8yp48zBV6ONZSSUmxrXzwzx/UURaoJZL7cGXPTPg/Yvrq4PvursPzT50xafMc+wGo4LVnRQH9LKG5LiyxNC+g0lpnZU7vXicpO7TyrhqkkBwoZ2fBgQCRFD47xai7uXlnDz/Ah1wf4v9ZOt7ikr2pw73v+qstO1n+z3jYfPmGbYwgyvf6aTqREt+uAB58uTw/rH/rSsNNhrfn8Una7kvkabn+5KsabDJeUNdwuLTGacjwtonFppcs3kIBfWBai0Bu5AhyO58rkuHm92mFFirHltrfXedTH3hWfOqRjtXvn4ZGVYhuWtWxK80CmsZ9rsT+9JiC9+bGYo/J2F0bzcm4NpwWPNDvc12qxsd9mXEoieyraxZER6OQSllsacEoPzqi0uGW+xtNyk1MyvsRL4xZ40H30xTsKT6BrMiBj/vaQu8J7tCXfHg6eXj3ZPfXyOouhD8SMvdHLj3BL99c90XrM17t2edGXpdxZG+OSscEHHSQvJ1m7Bs+0uT7Q4rIm57E4IEp7kCC9+JIxJn/OFdI1JYZ1ZUZ1lFSbnVFssLjOoCeoFN+fxFof3v9DN9m5xqC+mBnNLjL9cNSn4walhvfXaqaER6KSPT/4UdUlDSon221bWd3WdtyfpfS3pSVUSOojBHdQ1FpYZLCwzuGZKkH0pwY64x/pOj7Uxl21xwYGUoDktSAiJK6CYYQFNU0uoYV2jOqgxKaQzM2qwoFT9zIoa1Id1FZcZJI81O1y/Pn6E0QBwJWxPiDf+p9nZ8+mZoS883+4ml1Ue/6tPPscORX1ev3ZFDFfI2eu7vN+12PJkACR8dk6Ym+dHinYyiYoLtNmCVluyJynYkxQcTAmaMq/FHElaSBwJXsagmErBK/OvRkCHgK5haRDQIWRolJka5abGuIDG1IjBlLBOVUCjOqBTbmlF6UNaSP683+amTUl2xL2cf4VKS+u+bHzg479aWvJzQPq1LT5jhaLdiQ812fx2T7r0v63OHftT4m09gxUJ59da/PXUUsrynPcPlZQnSQpwhcRD1YqAKjbTAV3T0FEehaH1/CgDMtzsSgh+uCPJz3eniTmy37+ABiwsM3Z+aW7kf66aGFjlGw6fsULR/N/X11jaFzcm3tmUFld6fWICz7e7PN7icPn4wIh0KmRohIzMyccIHY7k/gM2P9ihVo1kHs2TwM6EmL4z7n0RuFZK2e4bD5+xQFHyOKSUfH5jYv7BlPh4WhDs+36nI7llS5It3d5gDn9ME3PUtOStq7r433VxVre7BaWqdDuS3UlxkSO4llGqZvbx6UuxbsRQxNA+1u7IWVnf1WBlu8snNyTYmxyLqqHF50Ba8Ku9af5nVRfXrOnm4YMOSU8OygnalxLBtJAfBZb4iWE+Y4EhT1UyN/IFC8uM/xnolv7HAZuPAN9eEGFOyfEnvZEW8HKXy0NNDvftt1nX6WJ7HN7+aZBICbrGNOB64DopZcKfsviMJkMyHBmjUQVcf3qlWbGk3OCZVjfnIJHA/QdsmtKCr5wQ4fwaixGKlw4bnoQ9ScEzbQ4PHHBY3uqwLyVUZ4doMHqYEtYJ6RrAG4G/PN5s3z/a/fZ5ZTOk2zpjON4P/BAIPnDA5n0vxGlKif6PLKEmpPOeKUHeOzXI7Oix5X2khVoCXtPh8Z9mm+WtLjsSHk6Pd1FEgrrGL5eW8JZJKrAsJI90OOLqXzekO26Y+cqQMvEZewz6Ns8YjQnAfcBpoJ6+9+xNc+PGBAcHMh4ZTigxuHpSgCsmBplXYmCNwfCfI6HdFmzu9lgT81je6rA25tGQ9NRUZEhXsh8kLKs0+ftppT0CQOxLitSdu1Mf+sbWxC/EG2qGeAIfn8ExVMPxQZS+xqF1Vk/CAwdsvrgpwYZOb+AzZFz6yWGdc6stLqixOL3SHHJW5mAREuKepM2WbI17bOzyeCHmsibmsjchaHN6bUg7zM0L6Ro/PjHKtVODh061Nuby4RfjK84cZ17+7QXRVj/W4TMaDCrGkTEa1cDb6WU0QCVTvXFCgFlRg1u2Jrmv0Sbh9rOakHl9b0Jwz540v9+XZmJI56Ryk6UVJovKDE4oMai0NEpMjUiRjIktIOFJ4p6kOS3ZnfTYHvfY1i3YFvfYnvBoSUs63SyGYgTGqga8tT7AVZMCR5zuYFqytds7pdLSzr9xY+KPw98SnwLp+XMd18tfgxoCpz3Zwcqzy98M3APkrF7rdiV/O2Dz4x0pVnW4uCLPM/a65BFTo9zSmBDUmRLRmRDUqQ3q1AY1qgIapaZOqan0L/Q+9R62kKQ96HKVAYi5klZb0pxWaelNaUFDStBqC5KeMiSMdAFdDi6tC/DjxVGmhI+cu31ra5IvbExwQqnxt1sXRt92SV0gOXqt9EEJUy0CFgNTgCjqzkkCDcALmZ+m0W5oMSnY45BS8udGO5ry5NUhQ+u35LXE1HhHfZDzqi3+2mhz7940L8Rc0gMFEXu9l/AkCU/SmBSs6Tj8uqEfrjnpSSXv7bXLjA0QEjzAkxJPcrhEP8f5RjXZVIKlw5snBbl5XuQoo9HpSh5rcfAkHEzLs//YkF4spFypj73pylnANeTOE4qjAupbBzjOFcAlo9D+DuA2YG8/n5kEvBV4MzAfKCH73dMNbAR+B/yW/AxIFfAZlFc/0vwX5RD0S8GG4/vbkzzR6i4bH9Bee1aVldd3JoZ0PjI9xJsnBHik2eEP+2yebXdoTWce7/nc930+4x0qXivQIxxzYyyDhPEhnQ/PCPGh6SHGZSmc+W+Lw8o2tdzd4YhxOxPiMg1WjnbT+2AC1wLvGeBzu4DvDfCZU/M4znDQDPya7IZDQ6n0fw04k4GTKEsy/VgKXAx8HliVx3feBtSPQt8FeRiOgtcw6sO6tqXLu+jZdrdghZnxIZ13TQ7yh1NK+PtpZXx+bpjTxvUSvTmuZ4U5kFBmalw1KcDvl5Vw4+xwVqPRlBb8YEeKTkddJE+i7Ut5F/xkZ2qsLa1MQw2sgbgYGGgn7tGqUXDIfTe+Dvg5cDaFjR8TeC1wF5kNuQbAHaW+53XNC/Y4VnV445psce7L3R5CZTQWTImpceY4kzPHmdwwQ/Bip8cTLQ6rOlw2dnkcSIvDy5wwdr2EwZJZSaoL6rym2uTt9UHOrbYoyZENlxZw+44UT7Q4h66FBNpsuWBlu7tESvnvMbS68mpgah6fOwkVF3hqtBtcADOAbwIzh3CMJShv5RqgZbQ7NFgKMhxSSi5d2XWiLZi3ocuj3ZFUBYZ2w9YEdc6v0Tm/xiLuSfYkBC/EXFbHPF7qVII9TWml/OX1jU+MmbEy0IU7/GvU1JhbYvC6WovLJwRYUm70ZIVmxZFw1+4UP9qRwu3zDOz2ZKTZFucD/x7tLmaIoDyJfOaw44CLgBUcG76mAbwbNfD7w830p79rcAFwGWp/oWOSgj2Odke8KunJ0p78hvNr8otz5EPU0JhXajCv1OCt9Wo1pNVWS6Uvd3lsjwt2Jz12JQSNKUG3K0l6kBIy96030salTztChlr9mVdqsKzC5Owqi5MqDMYHB/Zy0wLu3JXiKy8n1BSlT19cgbY/KZa91OWVA7ER7mk25gJnFPD516HygMbaikO2u6YOuJzc05O9wN+A9aipzhzgysy/fQmgAr9/AHLtwjVaj8W8zluQ4eh2ZUBDe5WUELMlv99nc1aVRR5jYFCUmhqlpsa0iM6rM4HYlJDEXYi5ksaUoCEp2J8SHEyrn6a04GBaJXAlPUlSqFUZZ5hny4aupmAlhkZtUGdmVGdeqcGiMpOFpQaTwnpBQkZtjuS27Ulu256iK4fgj1QrRgufb3enoG7Y0URDGYLaAr6zABU4fDDH+w65B1Y2LLI/6QWQJj/Ppmcpta9/Ox8Vv8lGM/BR4IE+3/s3Ksg6Kct3FqKCn1uyvCcz/U7m2WYdCJJ90DuZn3zQADufDxZkODQYb2rMEJn//L0xzVsmBYrqdQxESNcIBaAqoDEjcqTFcgTYUmILiLuSFlvSYgtabEGbncnhyEgLdjoqt6PLzUgMCnCkxJXZtUsNDayMzGDE0KiwlCcxIaQzMaQf+ndSSOWZRA3lbQyG9Z0e/7c5wd8bbZyeYrkcpDwqyi1toZRy/SjHOcpRU49sj5Fu1I3d90aJoJZb/0n2oNwfgLV5nl+ilkffkuW9PcD/AW15HiuV+U5vJpM7mPtQ5qevsfkvagn201m+U0luw9GCqoTOtxipFvgy2Q3Ub1CeUD5owM58PliQ4Qga2vSpEX0KLeoUzWnJzVuTzC81DtVSjCaWDhYaUQMqLY36MKip6WGEVMlhQspMfgekPUlKQNKTpAXILEY+oGvKaBlKwNjSD8sNDiZAnI1OV4n+fHdbko35pOsDZaYWmBU1lgC/Z3RjBUtRAc++eMAvUUHTRVnePxeVOJXtht2U+cmXE3O83okyTgeG0L8w2f8iHvAI2Z/qAvgPyhvpK1UfILdhSFBY3Koe+DjZDccG4O9D6HdW8jYcmTTzBadVmtF796bp8TqeaHb45pYkN8+P5FwVGEvoGqh4bq+2jnK7XQkr2xxu25HioQOFCf5MDutMi+jzUDdhfJS6oKO8jWxL9C3Ar1BP8WyGYwZqaTOvJ90Q2jdU7Zl0jtcFcLCf7+WaJLvkOS3Is3+5GBZ5/ELdhPkX1lra3FLj0LPNA362O8XXtyTpco+F4PjYQUhY3eHy0RfjXPV8N3/ZZ5MU+RsNTYMl5QZlpjYDKBvFrtShchSysQp4CfXEzxbAtVDTlWJsHpPrBtQZerAxRvaBbgCz+vnePDhaThM1fWsuQp9BGa/++l50CjloGJg5I2rw3inBI8rfU0JllH755YSqHvXpF1eqKtcbNyZ403Nd3LEzxYF0fjIEvSm3tJ74Uh2FBSWLzRmoFZW+COBfKG9jTeYnG2cCs4vQjly6lMWQVNpDdsOno+IqdVneOxGV+Zrt3Ps4Oo4yWCRj2HBUAHUa8O4pIS6sDRzRVFvAj3akuO6F7lekKHE+JDzJ8laHD63r5rKVXdy6LcneROEGAwAJZ42zWFJugjLqkwZxlGLQ4zFkq1tqRAUIQQ26B8nuuo9H5TYMlVyGoxgex2ZUvCAbZwEf43CluI6K3fyM7HEfULGPjiL0GTJlWf30vegUctByMkU3VQGNr84Ls7DMOMJ4OBL+uN/mHau7efCAjfPK0CUekIak4J69ad62ups3PdfFXbvS7OsRbR7k7Rw2Nd45OUipqZEWMrSy3c0nW3M4mIYKfGbjOQ6vGkhUEHF/ls8ZqBjJUKdbw+lxdAJ/JHsQ1AQ+hMrbqEMVqN0DLMtxrPWoZdpiPWFHfKpSSOCkDLWEBMDScpPvLYpy3bo427uPXAF4vt3l3Wu6efvkIB+eHjouhYkHIuZIVnW4/KvJ4ZEmh03dxREuBkDC62stLqpTq5vb48K4ZWuyLiEkkWIt8eTPa1CrIn3xgIdR05QetgJPonRc+nIKKni6YghtGU6PQ6LU7q4mu6GsAG5GTUFOJffY2g18FlUxWyxGfKpSiOGooM86/GtrLH6wKMr16+Ns6208NGh1JD/YkeLRZof3TA1x9aQAk8bAku1wEvckW7o9Hm12+GeTw+oOl5jdqwK4GGNawpSIzqdmhQ8llD3V6vBsmzsupDaoG0k/LwxcSvb7qAFY3ue1NCpJ6kqODoZWoryOpxn8snJ/+cPFuPoHgFuAE8ge05hK/3U661FG4+EitKVvv8es4ajM1oiL6ywiRpRPvpRgTcfRCucbOj0+syHO7xrSvL0+yOUTLKZHjh8PpMuVbO72+G+Ly2MtNms6PA6mhUoiK9bt2ouoqfG52WFOy2xCnfQkDx100DRqV7d7AY58wg83C8jozWZhJbA9y+tPoeIFi/u83pN5+gMGv9ownB5HD0+jvIW6Ar7johLEvgS8WKR29O33mDUc0VyNeE21xT0nl/ClTQkeOGAfWYylqSSrVe1Kt/Onuw3eNCHApXUBFpUZx0TuR2+UiI5gQ5fHilaHFW0uL3Z6NPc2FjAslQaWBh+eEeLdU4KHks7WxjxWtLlEDMpXxdyR3tL+tWRfzXFRy6/Zli8bUSstJ2a5SvNRbv4/Btme4Yxx9PAqVLp4vhwEfgz8P6C1SG3oy9j1OJrSIloTzK01taDU4K4lJdyxK8WPd6Ro7Ktyrqm8hU2dHpu6kvx0V4qlFSavrw1w5jiTuaXGiG1KXQieVBmd2+IeL8Y8VrSpKciOhCqyY5iNRQ+WBh+YFuLG2eFDIs4pIbl7T4qWtGBaVA82pcVIzgUrUZWw2Xq9m9yxCoFaXXk/vWJmGUqA16MMy2D0KIbT4wijYjM3ouQC82U5SrCov+S8bHUmWqY/NgNP3cau4bi3IV37jvqgXttPRVtVQLnRZ44zuX1HikeanKOFijO/t9iSRw6qwGFtUOeEEoNXjTM5rdJkYZnBhKB+lI7ocONJNRjbbMmOuMembo+1MY91MZedCXHYq+jVj2GvYZQQNuBDM0J8cU6Eil4iP/886PCX/XZPM4wRaE1vlpI7xXsFynjkYh3wPGpq0pfzUEvL/X2/n6uVlaF6HJUog/EhlOddCK8D3gXcSXbDthRVZ1KSpc0vomIiafpnIMOhUeRyhLwNx0MHHX121OCyAXacNzQ1dVlaYfLgAZuf7U7zTJtLKlsadeb/TWlBU0rwZItDyNAYH9KYHjFYVGYwt8RgWkRnWsSgKqDqRYIGBLTBGZWeQri0p4KZB9OCPQnBrqRge9xjc7fHnoQqjGvPthXCSA5NCXUhnU/NCnHd9BDRXkVz2+IeX9+SpMOWPdNBGfdGLPlOR+VuZFs+TaOCf/1VZHaigqQXcPQTsScFfTCGo2eu3/evNBSPoxK1WvJeBpe+XYaKbexGxTl6EwA+ALwhx3e3kp/nJRjhPI68L8TBtLAfOODw+rpAXqUdZabG2+qDXFgb4OEmJVT8dJt7SPoulxFJCcmuuGRXXPB4s1K8KsmU15ebGnUhnbqgRpWlUxXQKLNUKXuJqR3RLg9whTpetyuJe9DhqCrZNlsZjGZbEHeh25Mk+6bLj4ah6CGjrPaqKpMvzInwulqL3oW2bbbkpk1J1vYKRnsS1xUjVuQ2ETg/x3s7UQHEgfgPKnNyWp/Xgyij9CcGftL2JZfhGKzHEUZ5Gv0ZjRZUwPfUzHXJxgTUakwjR1b7LiC30WhGCRznk+sxdqcqpkb838223NAV1BaX5W94qwIab68Pctn4AM+0udzXaPNYi8OuuHc4QSyHEemh25V0O5JG4OWuo6+jnlE813p9USJ79CoQ/V3W0TQQfcm0cWpU592Tg7xvWoj6PkvYcU/yrW1J/rw/fUSXBHRPCGkjpVOZK8Uc4AnyS6XeDDxGdjHiM1H1HxvyOE5vih3jeBNwHbnHyUvAF1BG8ApULCNX/GMR8K1Mfxsyr12Eyprti4fSNc3HAMNYNhwBXduzJ+m59+61rYXzTQqVmigzNS6stTi/xmJvUvB4i8M/Dtisjrk0JMVhWcABNm7KhpBgD6R4PhYMQy4yzR4f0nnDhAD/Oy3I4jLzqKlYypN8d1uKH25P0bckKOnJfcsqzZFYig2gcjeyFW45KKOxkPz28NuMcsX73oeTULGOQg1HrgE0GI9jMvAJjo499LAWZVSezfz/d6j4x80cHfTt4Xzgq6gS+HJUPku2dq1AbR+Rb/Xs2F2OnR4x9u+IC/c3DWnryokBTq8c3MqfqcH0iM70KUHeXh9kR1ztxfpYi8MLMY/dCXGkFOBYHvBDJeNUT4noXFwX4JopQU4uN7Pun9vlSm7ZmuT27SlVQdsLS4fqgN68LuaORPLXdFQMIhsmKt36E3key6SvYIqiJ4byC1QVab7kGkCD8Tgu5+hckx52ATdw2GiA8hLuRhmPr5Ld4OjAO1Bp92Vk1y9NAneQPTU/F2M3OPrxmaFYY0p0PdnihL+7LcnPTyoZ8vJpUOeQxui1U0M0JAWbulye7/BY1eGyucujISWUPsXxYkgyxqLM1FhcbnJxncWldQHmlRo5vbiDacHXNif52e4U6SymIaRr4txqs/VjM8JcP/w9OI/c+31oqAzjYnAyyr1/poDvFCuPowS11JxtfLiovIzlWd5zUPkapcDnyC4VEOCwIlg2o7kJeLzAazV2pyqnVZqxyycEmp9td2ofPODw891pPjYjVPCUJRdWjycSCXBxnRLqbUh6bI0L1sVcNnR57Ih77E4q6b+UJ4+W+BuLRiXTRkOHSktnQanB2VUm59VYLC4zGTeASvyGLo8vbkrwQKOdPUomoT6kpy4dH9g1AtKB/Q2oYlMNXEjhhiOXx1EItSgdjWw0oVZHcg3UFPAdlOdxPX32Vs4QzPHdNCq2Uah489idqgAdb54YaL6/0ea/zQ63bk0yp0TnkrpAAYfIn6AOM6MGM6MGF9VaCAntjtIM3ZUQbOry2JXwaEwJ9qWUYHGrrfRD7VyXcTjHVZ/zBQyosHRmZ0SLT64wWVZhMiOqNtAeCEfAPw7afOXlBOtiuWUEdQ1eV2slLqix9g540KEzn9wp5sPBhcCPyH//kWLlcZSTO07RRP+KX6CSvb6BUmX7IPmPs3+gYiWFTjlHvKy+EMPRNSWs7/7YzBBrYy4HUoLPbEgwztJ51bjhfwDpmlqhqQqo3esvqlX1drZQmZ2drlI835sUHEgppfOmzJJrU1qJFic9JUjsCCWm4wglTlzw7C+zV62pKy3SoK4EjCeGdKZFdGZGDeaXGiwoNZkc1hkX0Aq6a3cmPH68M8Uvdqdps/tRBJMwOapz9aRgU8TQBrqZh4qGGsgjuZ/pIlTVbL5FYcWKcVj0e9XzIsbhxK53MvAAPgB8F2gf5LUaiTqdQxQy4iWw+ZI6i/dPC/H9jKDuR9fHuWNxlFMqRrpMQhHQoTqgUR0wmNGneM6VaiUiJSQpT+VrxDLq5j0q5zFHbZ9gS4ntKU0RL4vMuaFphA2lsh42lGhxmalRFdAZZ2lUB3XKTY0SE4KDTHeNOUqs+Ec7k6yLeeoO7edQmgZXTwxySoW5A5VUNZz0bKCUrUVp8pfgz9oV1NO577GjqCDpI+T3FO7P1yzkj5Ikd/5EBdlFi7LRisr8DKFWUPobJLsYeBPugfqejdH1ODRNQ0r5UlDX7E/NDAU2dXk8dMBmdbvL/66Lc9vCKGdVjY7xyNm5TPJYyZgMfhwm7kmebHH4ya40/25ysmfZ9kXCnFKDa5WM4yYK239kMJxC9uIuG7Ut4vMM/skWROVDnJzlvXNRwdh8ckP6C44WMoC6Uepc2aYrFaiktYY8j3UQ+CkqqNxfjcti4COo5dzBLKuPTcORYSvQOD6kT/32gggxR7Ci1WV1u8t71nbztXkRrpyYX2apj0pse7zF4Zd70jza4ijtjjyfjRFT45OzQswtNWzgBYZ3awQDVXyWLcV8F0rFfDAp4r05EVW30bf3s1HSfL/N4xjFyuNoz/Rnepb3ylGJYc+RX57FKcBXgKoBPhdGLWN3A7dRuAc3ZqUDQVnZ7QDzSw1uXxTl5Ew+x9Zujw+t6+abW5JqXu6Tk/0pwa8zUoLvXN3NX/fbxJw8vIwMGvCW+gBvqw8CtKcFw70Z00Rya4I+g1K9GipPkn26FUBNV4J5HKNYqwud5N4ISkeloL+H/h+8Zqbdd5P/zvYlwOdRe9QWIlozpjVHQVnDQ8tjJ1eY3LWkhFdXW6CpGoqvb05wzdpunm5zEb79OETCkzzX7vLVlxNc9mwX73uhmwcabWJu/gYDAKmKCL80J0JY13iyxdl/w/p4sWT2c3EW2Xdod1Dp1sVIdV8PvFzg+fvSXxykkHtdoAKyXTneL0dNzz6BynLtPciDqCnXt1EJbIsojArg68BVFHZnjNngaA9PoebTEYCTyg3uOinKjRszWxYKeLDR5oWYy3unBHn3lBDTIsNi9MY8CU+yMyF4qtXhHwcdnm13aVJbxQ0uCVrCSRUm310YYVpEZ1WHy81bk+v+tTmV73LlYOh54mdLZtrDkdmTQ6EN5XVkW+7tSUEfSKezv+BooTfhSlQtzeU53q8EvobKBH0eZfQqUbKCp5G74I1MG7ei0tqzBVprgVtRD+oHyY+xG+PIBEjXoZSrl/S8PjtqcOfiEuaVJPnRzhQdtqQhobId/9po8+4pQa6aGGRy+Pg3IDFHif482ery72aHlzpd9qcytThDKaiTsLDc4EcnRjmp3KQ5Lbh5S9Le0OU9EqwLuIWWkRbATNQTPxvPoWIcxUCgMiav4+h07Z4Yy6/I7QX0HCMXhd58ncD3UTGKXFtPBFAeRaFexUvA+1Cxkk+QPUlscub8CZQBy+f6FaPfeTEYj+Mgaq+MJb1frApo3DQ3wsIyg1u3plgTU1OV9TGPz25IcO9emysnBrhsfIB5JUbWeoxjkbgn2Z8UrImpNPnn2l1e7vaOFv0ZirMo4eRKk9sWRjljnIkj4Ac7UjzR6uycV2o83XB2xXB2MVeKuYfa33Qoy7B9WQtsI3sNx6moMvSV/V+pomZQLkd5FbdQvFT6nagVpOdQRX4VKDW0bDGNWcDtqJjKcwP0e8wbjp7dud5LnyeDpcPVk4KcXGFy2/YUv21I026rJKu1HS5rYy4/3ZXi3BqLi2pVoVx9WD+mVmE6XaXlsbHTY3XMZW2Hx0tdLo0pSbq3kE6RVC414Nwai+8sjHBSuYmQ8Mu9aX60M0W5pT16UXVw71D2ExiAKKoSNttNvZfC0sHzoRk1FV6S5b1xKDWtZ8ltHIo5Vek53t2ZY97E0Da9kqjB/3kO16LEUCI/JcDbcrRxIapS9n2oOFB/bc3G2DAcmenKs6inQ9YqyVlRg+8ujHJxXYAf7kjyeItDOpNOsych+NXuNL9vsJkW0TljnKrbOKXCZEpYyQWOFWwBLbbKSN3QpSQEN3UrlbCmdB/xn2IrmksIGWrTpS/ODTMlrKuNPRptbtqUICXoPiGk/21n0hvOitglwOk53lsN7Cjy+TyUW/4Bjnbfeypmf0JuFXRJdiNnUNgqRW8c4C7U9PwzqH1k8k0A62E/aoOmn3L05totqIK4EuCNOb5/Kqqw7v0oL6UQ+suCHTSDzdhq73bl/WFDO9PQslu0oK62Tji90uS+Rpu796RY1XF4U6K0kGzu8tjc5XFvQ5rxQZ0Ty0xOrTQ5vdJkdonB+KB2SJh3OJFApyNpslW6+ta4qoXZFvfYmRDsSXh0uZIjitaHYeuD3g2aEVV7p7xzcpASU0MCf2+0+eRLcQ6kBOND+qolZdbzdywpVAKzIKaSe6XjTxRvt/XePIcKCGYLLnZlXs9lONpQXlCkz+tphpZZK1ECRS+i0u6vQsU+xtNnr6FeJFCKX4+jCteeJ3c26j7gk6iM1Z7ckd5ygE6mDZeg8kv6JohJVFVttmncywxDjs+gbn0pJbdsSS4+s8p86Kwqa2I+BzmYFjx00OHXe9M81+4S73la9/5yZrUhYmhMDuvMiOrMLzWYX2oyI6JTG9SpDmiUWxpmRnN0oHMLUEpgUq1yxBxJW0ZCsCEl2BH32BEX7EkKGlKCgymlB+L1NRIjgVSJXZeNt/jkrDDLMmn8noQ/7U/z6ZcSNCQFloE3t8T4yEuNyTt4+8QhnrRfguQeGP2lZQ8FDbWCk8tDSJF7+dfIfLfvX0xmvles9oZQ8Yc5KI3U8ahSeoHyIPagPIvdqOBxvnGg3tfbI/v0I5fqeYjcMgBFF3ga9JCI3t8SvGJS8Ccfnxm69qTy/B2XNlvydJvDn/crCcF9SaHyPbL9qXsaqamNiKosjXEBncqARnVAoyagU2YqvdHenokjJEkhibtk6lFU5WwsU6PS4ajfU57kKOGwUdIYNXU4rdLkuukhLh8fOLTfTMKT3Lkrzc1bEjSnVc5HpaWtP63SvOT2RaV755YeJ1HmY5+eO+cVkb00+GFy135OnxM5a0bU+MvXTgjXzogWNoV0BGzu9ni0xeGxZofnO1TF7VHbD/RmIN3QfD47tF4XF6nK70+uMHlHfZArJwao67X9xL6U4Ftbk/xsd1rFUzSwdLy5UeNzvz+57DsLK46fHfF8ji2GNITu3Jm07tmb/t7EkP6R7y6MDjpPI+FJNnV5PN7i8Eyby+qYy/6kyC1mfCyTMWhllsaZ40yumhTk4jrrCIMhJDze4vDVzUlWtDpH+KuTQvraC2oCb6gL6g23LowUdm4fnyIxpCF5yTMxrpgYXHTXrtR99WF95m0Lo0waYpJX0pPsTgqebXd5ts1lVYfL9oSn6l+OVfnATLutjDjR+TUWl45XO9iV9lmLbkwJ7t6T5ic7U+xLHrkbXoWlpS+osT72p2WlPx0BtS8fn5wM+e6TUmq/3pv+1Pe2p745Oayb318YYWaB05ZcCAltjlp9WRVzWdXusr7TY19K0GqLI6UDx9I46tWusKkCvadVmpxfbXF2tcnU8NH6oklP8kizw/e2pVjR5hyZaYrSAXldrfXgh6eH3vly3O24fobvbfiMHkMebq6QGBoT/rjP/sPnNyXOnhTSuW2RSlYqNraAmCPYFld5FS9ktEj3JQVNtlAVpiNtTPqcL2JoTMgogZ1WqeQCl5SbTAzpBLI4Y46AZ9odfrorzT8O2od2ZuuNDlwxMdD8iZnht57x345HuaKQrUt9fIpPUYbWj3cm+dC00KV/3Gff8/GX4pXVAY1b5ke4sDYwrHu/isxer01pya6E2utV5V8I9ic9mjK7ttkiy+rJEK+anjES1QGNuqCSC1xYarC43GRuic6EUP/JbLaAtTGXe/am+ct+m4N9N+nOoANvmhjwbpwdvvXkCvPLgONPU3xGm6LcgVLNGQKe5Na/N9ofveGluJ7y4OMzQ7xvapCa4MgtGUrUU7zNOaw9ui8l2J3w2JPRI+12JUkBtpBZS/91DSxdI9Dzb0ZTtNzUqA4qQzElrDMprFMbUEai1NTyUnzvdiXPdbjcuzfNPw86HMhhMHr+OFdODPCNeZGn55QYb5GwV/eNhs8YoGh3YcZ4TJbwm4ebnLM/+VKcLV0e59ZYfGJmmPNrrKyu+kjSY1SSGR1SR2TPsOkRIrY0DUtXWzcE9PwSzrIhJOxNCh5tcfjrfptn2pz+RYhRm3e/tT7IN+ZFmqaE9WuE5GFjON03H58CKOqdmDEe5wG/Xt3hTvzcxgT/aXKoDGhcOTHA+6eGWFphHlNFbUOh2Zas7nB5+KDNv5sdtnZn9svtr/+Z7NEPTAvyhTlhpzqgfwP4hqaN2L6wPj4DMhyGQ0cVKX27ISlKbt2W5O7daeKOZGJE500TAry1PsjJFQah4+wJKiQ02YJ1MY8nWx0ebXbY2OXR5WRJr896AWFCSOezc8J8YGqQsKH9Fvgo0ObHNXzGEkW/GzPGI4ySP7s+5Unjj/ttvrMtyfqYKhWoCemcX23x5okBzqoyj0h+OtbodlUMZU2Hy1NtLk+3uWyPF2AsenFqpcn/nRDhtTUWmsYzmtqPY7tvNHzGGsNyR2aMRxVKhORtgLa52+OHO1L8fl+a1rQaVGFTY1GpwWtrLc6ttlhUZlA7xo1IzJEcSAu2dHs835HJLelSwj090gGFaoiWWRrvmBzkU7PCTIvo7E6IXZ2ueNeJZeZy32j4jEWG7a7MGI+pqJ23LwQ0W8CTrQ4/3ZXikSZH5V1kWlFqapxQYnBKhcmrxqnch0lhnUqrsF3QikmXq3aD259SZfYvdqrl3q1xj+bM/rWDzmaVavVmWaXJJ2aGuXyChY7GYy1O2+Mtzg3fumnXvfLP86VvOHzGIsNtOECVH98BnN/zQtyTPNXq8puGNI80OSqHoRemDjVBnRkRnRNKDRaXmcwtMRgf0qkNaoyzdEx96NJGErXbW7crabMFzbakISnYHle5IDsSHnsSgsa0IOX1KrUf6lWTMDWic+3UEO+ZorRYW23Jr/amuh466Hzu0fWpO9+9IOj9cnglAX18Bs2wPs56GY95KPmz83u/nxbwQszlj/tUTsO2hIfT293vcUgyy6FVmWSr2qDap7U6oFNhqbL6qKERMVS+RTCHupArJUlP5Xg0ppSR2J8StNhKn6PZFnS5Eq+vcmWxrpKE2pDOFRMCfGBa8FB27eoOl9t3pGKrO9ybtnaJn9RHDGfn6yqG80/j4zMkht0P7uN53A5cfNRngN0JwdNtDvc12qxoU9sIZH3C903Y0o78VdNU/kXfBRuJ2hPW65270c+xincBVJsmhnQuHR/gXZODLKswsXQVL/ndvjS/2JNubk6LL0wKa7+IpTV3/QUVw/K38PEpFiM2gc4YkCmo1Za3kkO2MOlJtsUFK1od/tXs8Hy7y8G0OCzbdyxM+TMGKWhozCs1eNOEAG8Yb7GgVBkMV8LTbQ7f357iuXZ32+SwfuMPFkf/+vEXu8XT51QO7dw+PiPAiA7DjPEYB3xWwHW6klvLSc+GRk+3uSxvdVjV4bI3oVLGR6cH/XVO/WPoMCmkc8Y4i8vGW7y62mJS6PDEaVOXx527Uvxxv40j5PMLy8xPPn5m2fIbXopz+6KSQZ7cx2dkGfFhJ6Uk4cnQupj3fk9y04Iyo7rSGrgZjlC6pes6XVa2uazucNkSFzSnBZ3u6FbFllqqIvbkCpNXV5mcXWUxI6ofSnCTqL11/7DP5t69afYkPbcupP9lbtS46ZGNiS3fObeCT80qVDjbx2f0GJXntSMk1p2N5gUnRi+dXWJ86dVV5tLzqq2CiuHinqTVlmzp9lgbUzodW7o9DqQELY5UYsi5dtjojwEqaDWl+UlNUGdOZvn41EqThaUGNUGd3l1IC8mLnR5/2mfzt0ab7XGPkKG1zIzqt79hQuD/PdbktN04O8QbJobw8TmWGDVH/9KVncyMaDzc5M60dD5bH9LfcnFdoPSiOouZEaPgcnxHqKlNY1qwOyHYm1QVsbuT6vd2R9Ltqp90piq2x0bomlraNTRVCRvQVVVsMFMVW2oqj2JmRJXPT4voTIsY1AS1o9LmJdCQFDzT5nL/ASXI3JgU6BqyOqivnB7Rv/G3ZSX//MLmpLj7pNLCOunjM0YY1QjBOU910pj0uKDGDD3a4l7W5crPVFraKa+psrh4vMXJFSodfSiN9KQqn+92JR0ZlfOUUEuzPQs+hga6pmFqaj+YoK6WdMO6UlcP6sqo5CrO8yQcSAtejHk83KSMxdZuoXZ206DE1JprgvrP5kb1Hz+8Pbnvo4tL+OGJfjzD59hl1EOLUkres6abX+xIcuXU0ORn2933tdry3YbGlDlRg7OqTM6qsjixzGBKWB+RDZoGQkg1VdqVEKyNufy3Ram0b48LEr32iwkbWrzS0v45Oaz/6OdLS5766Lq4d2qFxbd8kWGfY5zRH4UZ3vp8FwlP8rfTSrXTnoydtDsh3t9qiytcSa2lQ31IZ26JwbJKkxPLTKZHdCaHlYBOQM9PRGcwOEKpjLU5kt0Jj5e7PdbFPF6MuezOJJD1zjfRgJChpSstbfnUiH7XKZXmQw802t03zApz/fQQfgq5z/HAmLuLr9/QzQP7Hc6uMq2Vbe7p7Y54R6fDJSkhJ/UEJQIGjLN0qgIaUyMG0yNK43NCSCly1QQ1yjIGxeonNV2gJPxSQpL2VIxEbeCkpjX7kmqnt+0Jj8aUSkvvcGRWkWQdCBlavNzSnpoS1n89r9T4x1/22x1XTArwKz+W4XOcMeYMRw9nLu9gS7fHOyYHzYcOOItabXlFSshL00LOcwTBbKsflg5hQ+3qFtBV7MLsJzbhSBXr8DJbRLpCrYTYmbiI6CsPluU4GVnBhgpLe3xqxPjz7Kj+xIMHnM4zq0z+cmrZaF9GH59hYcwajh5e/VQH2+OChguf4pQnzpnQ5ohXdzjy9SmPM1wpp9oiy96mgxUlzvNqBFQA9WCJqa2psLR/zY7qj15dH9zy9c1Je3ZU5++nlflTEp/jmmPm7j5neSfNtkeXC5fWBaw1Mbu+xZanJ1zOTgq51BZM9aSsdYSamRRR0BxDBTq7TJ09tQF9o6nxxLSI8Vx9SN9457Z44uzxQWZGDX651J+S+LwyOGYMRw/jH9jH1LIoaaG2PvjdyaXGDRsSEUtjzr6kNytsaEsTnlzQbMvagMYENCpTHkFbSKOnv7n2t5YgLA0R0LUEcCBssH9CSN8LPDcxpG8aH9I3XjUx2HrpEx326yar2dIZ5QG+utDP+vR5ZXHMGY7enL68i1Jd0JiWVFoaqztc4peO47MbEta6Lq+kxNDqW21RtS3uhbtdWV1uaVODulZqaRi9Ku/TmqZ1t9ui5UBatpQYxKdFjXh9SG8I6TT+YVmpo922z3v96aWMD+lIqXFulck1U/1sT59XLse04ejLHTuSbOwSrIo5TI4YmEBTWvByt8fedhfWxeHmBmAb8CJQAcZ58I4aOKMcakyqQio7dGZER5OSoKlzTrXFtVN8Q+Hj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+PzSuP/AzE1e5ONHe7vAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE1LTEyLTIzVDIwOjA0OjMxKzAwOjAwHarZDQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNS0xMi0yM1QyMDowNDozMSswMDowMGz3YbEAAABNdEVYdHNvZnR3YXJlAEltYWdlTWFnaWNrIDYuOS4yLTcgUTE2IHg4Nl82NCAyMDE1LTEyLTAyIGh0dHA6Ly93d3cuaW1hZ2VtYWdpY2sub3Jnbo4WPwAAAEp0RVh0c3ZnOmJhc2UtdXJpAGZpbGU6Ly8vdG1wL3ZpZ25ldHRlL2MxZDQ0ZGY2LWM1ZDYtNDkwMC04ZDBhLWQ0OWVmMzBiZGE3MS5zdmd90CehAAAAGHRFWHRUaHVtYjo6RG9jdW1lbnQ6OlBhZ2VzADGn/7svAAAAGHRFWHRUaHVtYjo6SW1hZ2U6OkhlaWdodAAyNjLFg9PDAAAAF3RFWHRUaHVtYjo6SW1hZ2U6OldpZHRoADU3Mz0hlMwAAAAZdEVYdFRodW1iOjpNaW1ldHlwZQBpbWFnZS9zdme/73BOAAAAF3RFWHRUaHVtYjo6TVRpbWUAMTQ1MDkwMTA3McPsyX0AAAAPdEVYdFRodW1iOjpTaXplADBCQpSiPuwAAABIdEVYdFRodW1iOjpVUkkAZmlsZTovLy90bXAvdmlnbmV0dGUvYzFkNDRkZjYtYzVkNi00OTAwLThkMGEtZDQ5ZWYzMGJkYTcxLnN2Z4N+SbEAAAAASUVORK5CYII=' style='display: block; margin-left: auto; margin-right: auto; margin-top: 7px; width: 89px;'/></span>\").width(\"120px\").css(\"float\",\"left\").css(\"padding-left\",\"0\");$('.report-name').css(\"font-weight\",\"bold\");"+"\n"+
                                        "})";
@@ -63,33 +55,16 @@ public class ExtentManager {
                
        }
     
-    public synchronized static ExtentReports setReporter(String filePath, String htmlFile, Boolean isAppend) throws Exception {
-       String dbIp = DriverFactory.getConfiguration().getReportDBhost();
-       int dbPort = DriverFactory.getConfiguration().getReportDBport();
-
+    public synchronized static void setReporter(String filePath, String htmlFile) {
        if (extent == null) {
-               extentxReporter = new ExtentXReporter(dbIp, dbPort);
                extent = new ExtentReports();
-               initAndSetExtentHtmlReporter(filePath, htmlFile, isAppend);
-                       
-               if(extentxReporter.config().getReportObjectId() != null){
-                               setExtentXReporter(isAppend);
-                       }else{
-                               extentxReporter.stop();
-                       }
+               initAndSetExtentHtmlReporter(filePath, htmlFile);
         }
-        return extent;
-    }
-    
-    public synchronized static void setExtentXReporter(Boolean isAppend){
-       extentxReporter.setAppendExisting(isAppend);
-               extent.attachReporter(extentxReporter);
-    }
+       }
     
-    public synchronized static void initAndSetExtentHtmlReporter(String filePath, String htmlFile, Boolean isAppend) throws Exception{
-       htmlReporter = new ExtentHtmlReporter(filePath + htmlFile);
+    public synchronized static void initAndSetExtentHtmlReporter(String filePath, String htmlFile{
+               ExtentHtmlReporter htmlReporter = new ExtentHtmlReporter(filePath + htmlFile);
        setConfiguration(htmlReporter);
-               htmlReporter.setAppendExisting(isAppend);
                extent.attachReporter(htmlReporter);
     }
 
@@ -105,21 +80,21 @@ public class ExtentManager {
                
                if(suiteName.equals(suiteNameXml.TESTNG_FAILED_XML_NAME.getValue())){
                        if (config.isUseBrowserMobProxy()){
-                           setTrafficCaptue(config);
+                           setTrafficCapture(config);
                        }
                        
-                       setReporter(filepath, htmlFile, true);
+                       setReporter(filepath, htmlFile);
                        suiteName = FileHandling.getKeyByValueFromPropertyFormatFile(filepath + VERSIONS_INFO_FILE_NAME, "suiteName");
                }else{
                        FileHandling.deleteDirectory(SetupCDTest.getReportFolder());
                        FileHandling.createDirectory(filepath);
-                       setReporter(filepath, htmlFile, false);
+                       setReporter(filepath, htmlFile);
                        createVersionsInfoFile(filepath , VERSIONS_INFO_FILE_NAME, envData, suiteName);
                }
                reporterDataDefinition(envData, suiteName);
        }
        
-       private static void createVersionsInfoFile(String path, String file, String envData, String suiteName) throws FileNotFoundException, IOException {
+       private static void createVersionsInfoFile(String path, String file, String envData, String suiteName) throws IOException {
                File myFoo = new File(path + file);
                FileOutputStream fooStream = new FileOutputStream(myFoo, false); // true to append
                String versions =  ("env=\""+ envData + "\"\n" + "suiteName=\""+ suiteName+ "\"\n");
@@ -128,21 +103,12 @@ public class ExtentManager {
                fooStream.close();
        }
 
-       private static void reporterDataDefinition(String envData, String suiteNameFromVersionInfoFile) throws Exception {
+       private static void reporterDataDefinition(String envData, String suiteNameFromVersionInfoFile) {
                extent.setSystemInfo("Host Name Address", FileHandling.getExecutionHostAddress());
                extent.setSystemInfo("ExecutedOn", envData);
                extent.setSystemInfo("SuiteName", suiteNameFromVersionInfoFile);
        }
        
-       public static void reporterDataDefinition(HashMap<String, String> addedSystemInfo){
-               Iterator<String> iterator = addedSystemInfo.keySet().iterator();
-               while(iterator.hasNext()){
-                       String key = iterator.next();
-                       String value = addedSystemInfo.get(key);
-                       extent.setSystemInfo(key, value);
-               }
-       }
-
        public static  String getSuiteName(ITestContext context) {
                String suitePath = context.getSuite().getXmlSuite().getFileName();
                if(suitePath != null){
@@ -153,15 +119,12 @@ public class ExtentManager {
                return null;
        }
        
-       public synchronized static ExtentHtmlReporter setConfiguration(ExtentHtmlReporter htmlReporter) throws Exception {
-               
+       public synchronized static ExtentHtmlReporter setConfiguration(ExtentHtmlReporter htmlReporter) {
        htmlReporter.config().setTheme(Theme.STANDARD);
        htmlReporter.config().setEncoding("UTF-8");
        htmlReporter.config().setProtocol(Protocol.HTTPS);
        htmlReporter.config().setDocumentTitle("Automation Report");
-       htmlReporter.config().setChartVisibilityOnOpen(true);
        htmlReporter.config().setReportName("Automation Report");
-       htmlReporter.config().setChartVisibilityOnOpen(false);
        htmlReporter.config().setJS(icon);
        return htmlReporter;
     }
@@ -170,7 +133,7 @@ public class ExtentManager {
                extent.flush();
        }
        
-       public static void setTrafficCaptue(Configuration config) {
+       public static void setTrafficCapture(Configuration config) {
                        config.setCaptureTraffic(true);
        }       
 }
diff --git a/vid-webpack-master/cypress/integration/iFrames/commitDialog.e2e.ts b/vid-webpack-master/cypress/integration/iFrames/commitDialog.e2e.ts
new file mode 100644 (file)
index 0000000..22f201a
--- /dev/null
@@ -0,0 +1,89 @@
+///<reference path="../../../node_modules/cypress/types/index.d.ts"/>
+import {JsonBuilder} from '../../support/jsonBuilders/jsonBuilder';
+import {ServiceModel} from '../../support/jsonBuilders/models/service.model';
+import {AaiServiceInstancesModel} from '../../support/jsonBuilders/models/serviceInstances.model';
+import {AAISubDetailsModel} from '../../support/jsonBuilders/models/aaiSubDetails.model';
+import {AAISubViewEditModel} from '../../support/jsonBuilders/models/aaiSubViewEdit.model';
+
+describe('MSO Commit dialog', function () {
+
+
+    let jsonBuilderAAIService: JsonBuilder<ServiceModel> = new JsonBuilder<ServiceModel>();
+    let jsonBuilderAAISubViewEditModel: JsonBuilder<AAISubViewEditModel> = new JsonBuilder<AAISubViewEditModel>();
+    let jsonBuilderAAISubDetailsModel: JsonBuilder<AAISubDetailsModel> = new JsonBuilder<AAISubDetailsModel>();
+    let jsonBuilderAaiServiceInstances: JsonBuilder<AaiServiceInstancesModel> = new JsonBuilder<AaiServiceInstancesModel>();
+    beforeEach(() => {
+      cy.readFile('cypress/support/jsonBuilders/mocks/jsons/defect710619/serviceE2E.json').then((res) => {
+        jsonBuilderAAIService.basicJson(
+          res,
+          Cypress.config('baseUrl') + "/rest/models/services/**",
+          200, 0,
+          "service-complexService")
+      });
+
+
+      cy.readFile('cypress/support/jsonBuilders/mocks/jsons/defect710619/aaiSubViewEditForServiceWithSomeVFModuleE2E.json').then((res) => {
+        jsonBuilderAAISubViewEditModel.basicJson(
+          res,
+          Cypress.config('baseUrl') + "/aai_sub_viewedit/**",
+          200,
+          0,
+          "aai-sub-view-edit")
+      });
+
+      cy.readFile('cypress/support/jsonBuilders/mocks/jsons/defect710619/aaiSubDetailsE2E.json').then((res) => {
+        jsonBuilderAAISubDetailsModel.basicJson(
+          res,
+          Cypress.config('baseUrl') + "/aai_sub_details/**",
+          200,
+          0,
+          "aai-sub-details")
+      });
+
+      cy.readFile('cypress/support/jsonBuilders/mocks/jsons/defect710619/aaiServiceInstancesE2E.json').then((res) => {
+        jsonBuilderAaiServiceInstances.basicJson(
+          res,
+          Cypress.config('baseUrl') + "/search_service_instances**",
+          200,
+          0,
+          "aai-get-service-instances")
+      });
+
+      cy.server().route({
+        url: Cypress.config('baseUrl') + '/mso/mso_create_vfmodule_instance/dedd680f-f3bd-46d8-97c7-b6fc28db9317/vnfs/1d45e992-e282-4ba5-b17a-9ca6562169e3',
+        method: 'POST',
+        status: 200,
+        response: [],
+      }).as("actualResumeCall");
+
+      cy.initVidMock();
+
+      cy.initTenants();
+
+      cy.login();
+    });
+
+    afterEach(() => {
+      cy.screenshot();
+    });
+
+    it(`When showing the commit dialog and unexpected response - we don't have an http status therefor we display a proper message`, function () {
+      cy.visit('/serviceModels.htm#/instantiate?subscriberId=e433710f-9217-458d-a79d-1c7aff376d89&subscriberName=SILVIA ROBBINS&serviceType=TYLER%20SILVIA&serviceInstanceId=dedd680f-f3bd-46d8-97c7-b6fc28db9317&aaiModelVersionId=4b60252a-bf6c-40df-9db5-98b4c363fdf4&isPermitted=true').then(()=>{
+        cy.wait('@service-complexService');
+        checkResumeAndPopup("dpa2bccfx5992v_base_module","vfModuleTreeNode-assigned");
+      });
+     });
+
+    function checkResumeAndPopup(vfModuleName:string, vfModuleClassName:string)  {
+      cy.get('div').find('.' + vfModuleClassName)
+        .getElementByDataTestsId('resumeVFModuleButton-' + vfModuleName).click().then(()=> {
+        cy.getElementByDataTestsId('lcpRegion').should('be.visible').select("option-irma-aic-hvf6")
+          .getElementByDataTestsId('tenant').should('be.visible').select("bae71557c5bb4d5aac6743a4e5f1d054");
+        cy.getElementByDataTestsId('confirmResumeDeleteButton').not('.button--inactive').click().then(()=> {
+            cy.getElementByDataTestsId('msoCommitLog').contains('VID has timed out waiting for an MSO response');
+        });
+      });
+    }
+
+});
+