From 5e9feb2a8e360b82dc2b6e4145e0fd847d2924ce Mon Sep 17 00:00:00 2001 From: ChrisC Date: Wed, 21 Jun 2017 02:38:57 -0700 Subject: [CLAMP-1] Initial ONAP CLAMP seed code commit Change-Id: I2e8070a590618a06070f393d7b2c011029af5e8a Signed-off-by: ChrisC --- .../resources/clds/clds-policy-config.properties | 37 +++++++ src/test/resources/clds/clds-reference.properties | 113 +++++++++++++++++++++ 2 files changed, 150 insertions(+) create mode 100644 src/test/resources/clds/clds-policy-config.properties create mode 100644 src/test/resources/clds/clds-reference.properties (limited to 'src/test/resources/clds') diff --git a/src/test/resources/clds/clds-policy-config.properties b/src/test/resources/clds/clds-policy-config.properties new file mode 100644 index 000000000..892cdda07 --- /dev/null +++ b/src/test/resources/clds/clds-policy-config.properties @@ -0,0 +1,37 @@ +### +# ============LICENSE_START======================================================= +# ONAP CLAMP +# ================================================================================ +# Copyright (C) 2017 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============================================ +# =================================================================== +# ECOMP is a trademark and service mark of AT&T Intellectual Property. +### + +# Configuration Settings for Policy Engine Components +PDP_URL1=https://localhost:8081/pdp/ , testpdp, alpha123 +PDP_URL2=https://localhost:8081/pdp/ , testpdp, alpha456 +PAP_URL=https://localhost:8081/pap/ , testpap, alpha123 +NOTIFICATION_TYPE=websocket +NOTIFICATION_UEB_SERVERS=localhost + +CLIENT_ID=myclientid +# base64 encoding +CLIENT_KEY=ChlakDuk +#DEVL for development +#TEST for Test environments +#PROD for prod environments +ENVIRONMENT=DEVL diff --git a/src/test/resources/clds/clds-reference.properties b/src/test/resources/clds/clds-reference.properties new file mode 100644 index 000000000..64879895a --- /dev/null +++ b/src/test/resources/clds/clds-reference.properties @@ -0,0 +1,113 @@ +### +# ============LICENSE_START======================================================= +# ONAP CLAMP +# ================================================================================ +# Copyright (C) 2017 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============================================ +# =================================================================== +# ECOMP is a trademark and service mark of AT&T Intellectual Property. +### + +# +# Poperties for CLDS +# +# +# +# TCA MicroService Policy request build properties +# +tca.template={"service":"MThresholdCrossingConfiguration","location":"Edge","uuid":"TestUUID","policyName":"???","description":"from clds","configName":"MThresholdCrossingConfiguration","templateVersion":"5.2.0.1","priority":"4","version":"5.2.0.1","policyScope":"resource=F5,service=vSCP,type=configuration,closedLoopControlName=vSCP_F5_Firewall_d925ed73-8231-4d02-9545-db4e101f88f8","content":{"$class": "com.att.ecomp.dcae.clamp.common.MThresholdCrossingConfiguration","domain":"measurementsForVfScaling","policyScope":"pnf=eNodeB;type=configuration","policyName":"policy.dcae.configuration","policyVersion":"1.0.0","subscriberContentType": "application/json","subscriberConsumerId": "c13","subscriberConsumerGroup": "OpenDCAE-c13","subscriberTimeoutMS": "-1","subscriberMessageLimit": "-1","subscriberPollingInterval": "20000","publisherContentType": "application/json","publisherMaxBatchSize": "10","publisherMaxRecoveryQueueSize": "100000","publisherPollingInterval": "20000","publisherAlertWindowingTime": "86400","signatures":[]}} +tca.signature.template={"nfNamingCode":"ENBE","target":"common_id","targetType":"eNodeB","useCaseName":"???","signatureName":"???","signatureUuid":"???","closedLoopControlName":"???","severity":"???","version":"1.0.2","maxInterval":1200,"minMessageViolations":4,"thresholds":[]} + +# +# DCAE request build properties +# +dcae.template={"properties":{"service_name":"","service_ids":[],"vnf_ids":[],"location_ids":[]},"template":{"string_matching":{"dcae":{"inputTopic":"","outputTopic":"","closedLoopControlName":"","closedLoopEventClient":"configuration.dcae.microservice.stringmatcher.xml","policyName":"","policyScope":"service=vSCP;resource=F5;type=configuration","policyVersion":"v0.0.1","serviceConfigurations":{}}}}} +dcae.decode.service_ids={"vUSP":["vUSP - vCTS"],"Trinity":["ASBGv TLS VNF","ASBGv No TLS","ASBGv (NO TLS) VNF","ASBGv TLS","NSBGv VNF","NSBGv"],"vSCP":["AKRON_vSCP_F5_FW-SVC/vSCP_F5_FW 1","ALLEN_vSCP_F5_FW-SVC/vSCP_F5_FW 1"],"vProbes":["vProbes - FW"]} +# +# ASDC request blueprint properties +# +asdc.template={} +asdc.decode.service_ids={} +# +# +# General Policy request properties +# +policy.ecomp.name=DCAE +policy.pdp.group=default +policy.ms.type=MicroService +policy.ms.policyNamePrefix=Config_MS_ +policy.op.type=BRMS_Param +policy.op.policyNamePrefix=Config_BRMS_Param_ + +# by service: xxx +# +# +# String Match MicroService Policy request build properties +# +# default +sm.template={"service":"StringMatchingConfiguration","location":"Edge","uuid":"TestUUID","policyName":"???","description":"from clds","configName":"com.att.d2.policy.StringMatchingConfiguration","templateVersion":"1604","priority":"4","version":"1610","policyScope":"resource=F5,service=vSCP,type=configuration,closedLoopControlName=vSCP_F5_Firewall_d925ed73-8231-4d02-9545-db4e101f88f8","content":{"serviceConfigurations":{}}} +# by service: vSCP +sm.template.vSCP={"service":"StringMatchingConfiguration","location":"Edge","uuid":"TestUUID","policyName":"???","description":"from clds","configName":"com.att.d2.policy.StringMatchingConfiguration","templateVersion":"1604","priority":"4","version":"0.1.0-SNAPSHOT","policyScope":"resource=F5,service=vSCP,type=configuration,closedLoopControlName=vSCP_F5_Firewall_d925ed73-8231-4d02-9545-db4e101f88f8","content":{"serviceConfigurations":{}}} +sm.sc.template={} +# +# default +sm.rulegroup=true +# by service: vSCP +sm.rulegroup.vSCP=false +# +# +# Operational Policy request build properties +# +op.policyDescription=from clds +# default +op.templateName=ClosedLoopvUSP +op.operationTopic=APPC-CL +op.notificationTopic=POLICY-CL-MGT +op.controller=1610-vUSP +# by service: vSCP +op.templateName.vSCP=ClosedLoopTemplate +op.controller.vSCP=1607-f5fw +# +# Asdc service properties +asdc.catalog.url=http://127.0.0.1:8080/sdc/v1/catalog/ +asdc.hostUrl=http://127.0.0.1:8080 +asdc.serviceUrl=http://127.0.0.1:8080/sdc/v1/catalog/services +asdc.serviceUsername=test +asdc.servicePassword=123456 +asdc.artifactLabel=blueprintclampcockpit +asdc.asdcX-ECOMP-InstanceID=CLAMP +asdc.artifactType=DCAE_INVENTORY_BLUEPRINT +asdc.locationArtifactLabel=LocationClampCockpit +asdc.locationArtifactType=DCAE_INVENTORY_JSON +# +# +# +ui.location.default={"SNDGCA64":"San Diego SAN3","ALPRGAED":"Alpharetta PDK1","LSLEILAA":"Lisle DPA3","MDTWNJC1":"FTL_C_location1","MDTWNJC2":"FTL_C_location2","MDTWNJ21":"FTL_L_location1","MDTWNJ22":"FTL_L_location2","RDM2WAGPLCP":"ISTFTL_location"} +ui.alarm.default={"Reports a transient alarm condition when an incoming CDR cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming CDR cannot be decoded successfully","Reports a transient alarm condition when an incoming ACR message cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming ACR message cannot be decoded successfully","Reports a transient alarm condition when a CDR validation fails":"vCCF: Reports a transient alarm condition when a CDR validation fails","Reports a transient alarm condition when an incoming GTP' message cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming GTP' message cannot be decoded successfully","Reports a transient alarm condition when an incoming CDR file cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming CDR file cannot be decoded successfully","Reports a transient alarm condition when an incoming Sh/Dh file cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming Sh/Dh file cannot be decoded successfully","Reports a transient alarm condition when an incoming ACR message is in conflict with former ACR in one diameter session":"vCCF: Reports a transient alarm condition when an incoming ACR message is in conflict with former ACR in one diameter session","Reports a transient alarm condition when an outgoing Ro message send fails":"vCCF: Reports a transient alarm condition when an outgoing Ro message send fails","Reports a transient alarm condition when an outgoing GTP' message send fails":"vCCF: Reports a transient alarm condition when an outgoing GTP' message send fails","Reports a transient alarm condition when an outgoing Sh/Dh message send fails":"vCCF: Reports a transient alarm condition when an outgoing Sh/Dh message send fails","Reports an alarm when build or send Rf message fail":"vCCF: Reports an alarm when build or send Rf message fail","Reports a transient alarm condition when an abnormal incoming CCA message":"vCCF: Reports a transient alarm condition when an abnormal incoming CCA message","Reports a transient alarm condition when there is an abnormal incoming Sh/Dh message":"vCCF: Reports a transient alarm condition when there is an abnormal incoming Sh/Dh message","For Rf interface, if IeCCF receives a message with incorrect value for session id.":"vCCF: For Rf interface, if IeCCF receives a message with incorrect value for session id.","Reports an alarm when CPU usage exceeds the major threshold, the local database exceeds the critical threshold, or the ACR partition exceeds the major threshold":"vCCF: Reports an alarm when CPU usage exceeds the major threshold, the local database exceeds the critical threshold, or the ACR partition exceeds the major threshold","Reports an alarm when CPU usage exceeds the minor threshold, the local database exceeds the major threshold, or the ACR partition exceeds the minor threshold":"vCCF: Reports an alarm when CPU usage exceeds the minor threshold, the local database exceeds the major threshold, or the ACR partition exceeds the minor threshold","Reports an alarm when CPU usage exceeds the critical threshold, the local database exceeds the major threshold, or the CDR partition exceeds the critical threshold":"vCCF: Reports an alarm when CPU usage exceeds the critical threshold, the local database exceeds the major threshold, or the CDR partition exceeds the critical threshold","Reports an alarm when CPU usage exceeds the major threshold or CDR partition exceeds the major threshold":"vCCF: Reports an alarm when CPU usage exceeds the major threshold or CDR partition exceeds the major threshold","Reports an alarm when external DB usage exceeds the major threshold":"vCCF: Reports an alarm when external DB usage exceeds the major threshold","If IeCCF comes to the status \\"Stop processing ACR records in ACRDB\\".":"vCCF: If IeCCF comes to the status \\"Stop processing ACR records in ACRDB\\".","If IeCCF comes to the status \\"Flush ACR is invoked\\".":"vCCF: If IeCCF comes to the status \\"Flush ACR is invoked\\".","Reports a transient alarm condition when the workflow definition table is provisioned wrongly":"vCCF: Reports a transient alarm condition when the workflow definition table is provisioned wrongly","Reports a transient alarm condition when the Action Definition table is provisioned wrongly":"vCCF: Reports a transient alarm condition when the Action Definition table is provisioned wrongly","Reports a transient alarm condition when the Ro Host Configuration is provisioned wrongly":"vCCF: Reports a transient alarm condition when the Ro Host Configuration is provisioned wrongly","Reports a transient alarm condition when the Sh Host Configuration is provisioned wrongly":"vCCF: Reports a transient alarm condition when the Sh Host Configuration is provisioned wrongly","Reports a transient alarm condition when a specific dictionary or rule does not exist":"vCCF: Reports a transient alarm condition when a specific dictionary or rule does not exist","Reports a transient alarm condition when failure occurs when mapping Rf message to XDR":"vCCF: Reports a transient alarm condition when failure occurs when mapping Rf message to XDR","Reports a transient alarm condition when failure occurs in aggregating process":"vCCF: Reports a transient alarm condition when failure occurs in aggregating process","Reports a transient alarm condition when failure happens in correlating process":"vCCF: Reports a transient alarm condition when failure happens in correlating process","Reports a transient alarm condition when failure occurs in generating CDR":"vCCF: Reports a transient alarm condition when failure occurs in generating CDR","Reports a transient alarm condition when failure occurs in constructing CCR message from XDR":"vCCF: Reports a transient alarm condition when failure occurs in constructing CCR message from XDR","Reports a transient alarm condition when an ACR/XER/BER/INC record write to bad file":"vCCF: Reports a transient alarm condition when an ACR/XER/BER/INC record write to bad file","Reports an alarm condition when aggregation or correlation central database connection is lost":"vCCF: Reports an alarm condition when aggregation or correlation central database connection is lost","Reports an alarm condition when a specific failure happens in database operations":"vCCF: Reports an alarm condition when a specific failure happens in database operations","Reports an alarm condition when DB capacity has been consumed to critical threshold":"vCCF: Reports an alarm condition when DB capacity has been consumed to critical threshold","Reports an alarm condition when DB capacity has been consumed to major threshold":"vCCF: Reports an alarm condition when DB capacity has been consumed to major threshold","Reports an alarm condition when DB capacity has been consumed to minor threshold.":"vCCF: Reports an alarm condition when DB capacity has been consumed to minor threshold.","Reports an alarm condition when application cannot deliver CDR to CDRSCH subsystem":"vCCF: Reports an alarm condition when application cannot deliver CDR to CDRSCH subsystem","Reports an alarm condition when some fields of ACR file header have error value and this ACR file cannot be processed further":"vCCF: Reports an alarm condition when some fields of ACR file header have error value and this ACR file cannot be processed further","Reports an alarm condition when some fields of ACR file header have invalid value and this ACR file can be processed further":"vCCF: Reports an alarm condition when some fields of ACR file header have invalid value and this ACR file can be processed further","Reports an alarm condition when the ACR file loses some ACR records":"vCCF: Reports an alarm condition when the ACR file loses some ACR records","Reports an alarm condition when some fields of ACR record header have error value and this ACR record and the following ACR records cannot be processed further":"vCCF: Reports an alarm condition when some fields of ACR record header have error value and this ACR record and the following ACR records cannot be processed further","Reports an alarm condition when error occurs in processing CDR/ACR files":"vCCF: Reports an alarm condition when error occurs in processing CDR/ACR files","Reports an alarm condition when CDR partition has been consumed to critical threshold":"vCCF: Reports an alarm condition when CDR partition has been consumed to critical threshold","Reports an alarm condition when CDR partition has been consumed to major threshold.":"vCCF: Reports an alarm condition when CDR partition has been consumed to major threshold.","Reports an alarm condition when CDR partition has been consumed to minor threshold":"vCCF: Reports an alarm condition when CDR partition has been consumed to minor threshold","Reports an alarm condition when ACR partition has been consumed to critical threshold":"vCCF: Reports an alarm condition when ACR partition has been consumed to critical threshold","Reports an alarm condition when ACR partition has been consumed to major threshold":"vCCF: Reports an alarm condition when ACR partition has been consumed to major threshold","Reports an alarm condition when ACR partition has been consumed to minor threshold":"vCCF: Reports an alarm condition when ACR partition has been consumed to minor threshold","Reports an alarm condition when CPU consumption reaches critical threshold":"vCCF: Reports an alarm condition when CPU consumption reaches critical threshold","Reports an alarm condition when CPU consumption reaches major threshold":"vCCF: Reports an alarm condition when CPU consumption reaches major threshold","Reports an alarm condition when CPU consumption reaches minor threshold":"vCCF: Reports an alarm condition when CPU consumption reaches minor threshold","Service shall monitor * number of partial CDR * number of incompleted CDR * number of unacceptable CDR If any one exceeds a configurable threshold in a configrable interval.":"vCCF: Service shall monitor * number of partial CDR * number of incompleted CDR * number of unacceptable CDR If any one exceeds a configurable threshold in a configrable interval.","CDR size exceed the platform capacity.":"vCCF: CDR size exceed the platform capacity.","Service shall monitor number of ACR without AII AVP, If it exceeds a configurable threshold in a configurable interval.":"vCCF: Service shall monitor number of ACR without AII AVP, If it exceeds a configurable threshold in a configurable interval.","Service shall monitor CDR cut due to ECCF_ACRNUMBER_IN_DB, If it exceeds a configurable threshold in a configurable interval.":"vCCF: Service shall monitor CDR cut due to ECCF_ACRNUMBER_IN_DB, If it exceeds a configurable threshold in a configurable interval.","External Node of this Cluster is overload":"vCCF: External Node of this Cluster is overload","bdb_high_latency":"vCCF-vDB: bdb_high_latency","bdb_high_throughput":"vCCF-vDB: bdb_high_throughput","bdb_size":"vCCF-vDB: bdb_size","cluster_inconsistent_rl_sw":"vCCF-vDB: cluster_inconsistent_rl_sw","cluster_node_remove_abort_failed":"vCCF-vDB: cluster_node_remove_abort_failed","cluster_node_remove_failed":"vCCF-vDB: cluster_node_remove_failed","cluster_ram_overcommit":"vCCF-vDB: cluster_ram_overcommit","cluster_rebalance_failed":"vCCF-vDB: cluster_rebalance_failed","cluster_too_few_nodes_for_replication":"vCCF-vDB: cluster_too_few_nodes_for_replication","node_cpu_utilization":"vCCF-vDB: node_cpu_utilization","node_ephemeral_storage":"vCCF-vDB: node_ephemeral_storage","node_failed":"vCCF-vDB: node_failed","node_memory":"vCCF-vDB: node_memory","node_net_throughput":"vCCF-vDB: node_net_throughput","node_offline_failed":"vCCF-vDB: node_offline_failed","node_offline_abort_failed":"vCCF-vDB: node_offline_abort_failed","node_online_failed":"vCCF-vDB: node_online_failed","OAM NODE- IS NOT ACTIVE ":"vCCF-vDB: OAM NODE- IS NOT ACTIVE ","LSS_asdaCommunicationFailure":"vCTS: LSS_asdaCommunicationFailure","LSS_ccdbCommunicationFailure":"vCTS: LSS_ccdbCommunicationFailure","LSS_cpiCTS3xxFailRate":"vCTS: LSS_cpiCTS3xxFailRate","LSS_cpiCTS4xxFailRate":"vCTS: LSS_cpiCTS4xxFailRate","LSS_cpiCTS5xxFailRate":"vCTS: LSS_cpiCTS5xxFailRate","LSS_cpiCTS6xxFailRate":"vCTS: LSS_cpiCTS6xxFailRate","LSS_cpiCTSSIPRetransmitInvite":"vCTS: LSS_cpiCTSSIPRetransmitInvite","LSS_cpiCTSSIPRetransmitNonInvite":"vCTS: LSS_cpiCTSSIPRetransmitNonInvite","LSS_glsInvalidCellId":"vCTS: LSS_glsInvalidCellId","LSS_glsServerUnavailable":"vCTS: LSS_glsServerUnavailable","LSS_hlrSyncConnection":"vCTS: LSS_hlrSyncConnection","LSS_hlrSyncQueue":"vCTS: LSS_hlrSyncQueue","LSS_lispBufferFullExternalLIG":"vCTS: LSS_lispBufferFullExternalLIG","LSS_prdbConnectWithAlternateFailure":"vCTS: LSS_prdbConnectWithAlternateFailure","LSS_prdbSyncDataToAlternateFailure":"vCTS: LSS_prdbSyncDataToAlternateFailure","LSS_preAllocatedResourceOverload":"vCTS: LSS_preAllocatedResourceOverload","LSS_prifSocketError":"vCTS: LSS_prifSocketError","LSS_prsCallInstanceExceeded":"vCTS: LSS_prsCallInstanceExceeded","LSS_prsCpuOverload":"vCTS: LSS_prsCpuOverload","LSS_prsDatabaseMigrationFailure":"vCTS: LSS_prsDatabaseMigrationFailure","LSS_prsFailureToConnectWithPRDB":"vCTS: LSS_prsFailureToConnectWithPRDB","LSS_prsQueueExceeded":"vCTS: LSS_prsQueueExceeded","LSS_smdiSocketError":"vCTS: LSS_smdiSocketError","LSS_socketError":"vCTS: LSS_socketError","LSS_softwareComponentDown":"vCTS: LSS_softwareComponentDown","LSS_tlsInitError":"vCTS: LSS_tlsInitError","LSS_usageOfSyncTable":"vCTS: LSS_usageOfSyncTable","LSS_utHttpProxyConnectionDown ":"vCTS: LSS_utHttpProxyConnectionDown ","LSS_wpifSocketError":"vCTS: LSS_wpifSocketError","LSS_acrTemporaryBufferOverload":"vCTS: LSS_acrTemporaryBufferOverload","LSS_adnsExtendedTTLcaching":"vCTS: LSS_adnsExtendedTTLcaching","LSS_adnsQueryFailureCaching":"vCTS: LSS_adnsQueryFailureCaching","LSS_adnsQueueCongestion":"vCTS: LSS_adnsQueueCongestion","LSS_asdaRequestQueue":"vCTS: LSS_asdaRequestQueue","LSS_capacityLicenseKeyExpiration":"vCTS: LSS_capacityLicenseKeyExpiration","LSS_capacityLicenseKeyNearExpiration":"vCTS: LSS_capacityLicenseKeyNearExpiration","LSS_capacityLicenseKeyValidationError":"vCTS: LSS_capacityLicenseKeyValidationError","LSS_cardConnectionLost":"vCTS: LSS_cardConnectionLost","LSS_cpiAlrmCritical":"vCTS: LSS_cpiAlrmCritical","LSS_cpiAlrmMajor":"vCTS: LSS_cpiAlrmMajor","LSS_cpiAlrmMinor":"vCTS: LSS_cpiAlrmMinor","LSS_cpiAlrmWarning":"vCTS: LSS_cpiAlrmWarning","LSS_cpiAsrtEsc":"vCTS: LSS_cpiAsrtEsc","LSS_cpiAsrtNonEsc":"vCTS: LSS_cpiAsrtNonEsc","LSS_cpiAsrtNonEscCritical":"vCTS: LSS_cpiAsrtNonEscCritical","LSS_cpiAsrtNonEscMajor":"vCTS: LSS_cpiAsrtNonEscMajor","LSS_cpiAsrtNonEscMinor":"vCTS: LSS_cpiAsrtNonEscMinor","LSS_cpiAudErrCount":"vCTS: LSS_cpiAudErrCount","LSS_cpiAudManAct":"vCTS: LSS_cpiAudManAct","LSS_cpiAudNewEvent":"vCTS: LSS_cpiAudNewEvent","LSS_cpiCompleteRateAlarm":"vCTS: LSS_cpiCompleteRateAlarm","LSS_cpiDropMGAllocConnReq":"vCTS: LSS_cpiDropMGAllocConnReq","LSS_cpiDropRateAlarm":"vCTS: LSS_cpiDropRateAlarm","LSS_cpiExceptionService":"vCTS: LSS_cpiExceptionService","LSS_cpiFailRateAlarm":"vCTS: LSS_cpiFailRateAlarm","LSS_cpiFailSCTPFastRetransIncr":"vCTS: LSS_cpiFailSCTPFastRetransIncr","LSS_cpiFailSCTPFastRetransRate":"vCTS: LSS_cpiFailSCTPFastRetransRate","LSS_cpiFailSCTPSRTT1Incr":"vCTS: LSS_cpiFailSCTPSRTT1Incr","LSS_cpiFailSCTPSRTT2Incr":"vCTS: LSS_cpiFailSCTPSRTT2Incr","LSS_cpiFailSCTPT3RetransIncr":"vCTS: LSS_cpiFailSCTPT3RetransIncr","LSS_cpiFailSCTPT3RetransRate":"vCTS: LSS_cpiFailSCTPT3RetransRate","LSS_cpiFileSysUsage":"vCTS: LSS_cpiFileSysUsage","LSS_cpiMemAllocFail":"vCTS: LSS_cpiMemAllocFail","LSS_cpiNumOfLICDRDel":"vCTS: LSS_cpiNumOfLICDRDel","LSS_cpiReinitServiceSelf":"vCTS: LSS_cpiReinitServiceSelf","LSS_cpiSIPRetransmitInvite":"vCTS: LSS_cpiSIPRetransmitInvite","LSS_cpiSIPRetransmitNonInvite":"vCTS: LSS_cpiSIPRetransmitNonInvite","LSS_cpiSS7DropSCTPPktsRcvd":"vCTS: LSS_cpiSS7DropSCTPPktsRcvd","LSS_cpiSS7FailSCTPFastRetransRate":"vCTS: LSS_cpiSS7FailSCTPFastRetransRate","LSS_cpiStabilityAlarm":"vCTS: LSS_cpiStabilityAlarm","LSS_cpuOverload":"vCTS: LSS_cpuOverload","LSS_databaseConnectionLost":"vCTS: LSS_databaseConnectionLost","LSS_databaseReplicationLinkDown":"vCTS: LSS_databaseReplicationLinkDown","LSS_databaseSizeExhausted":"vCTS: LSS_databaseSizeExhausted","LSS_dbHighCpuUtilization":"vCTS: LSS_dbHighCpuUtilization","LSS_dbOffline":"vCTS: LSS_dbOffline","LSS_dbStatusUnexpected":"vCTS: LSS_dbStatusUnexpected","LSS_degradedResource":"vCTS: LSS_degradedResource","LSS_degrow":"vCTS: LSS_degrow","LSS_deviceServerCxnLost":"vCTS: LSS_deviceServerCxnLost","LSS_diamLinkDown":"vCTS: LSS_diamLinkDown","LSS_diamMaxClientsExceeded":"vCTS: LSS_diamMaxClientsExceeded","LSS_dnsThreshold":"vCTS: LSS_dnsThreshold","LSS_ethernetError":"vCTS: LSS_ethernetError","LSS_ethernetLinkDown":"vCTS: LSS_ethernetLinkDown","LSS_externalConnectivity":"vCTS: LSS_externalConnectivity","LSS_featureLicenseExpiration":"vCTS: LSS_featureLicenseExpiration","LSS_featureLicenseKeyNearExpiration":"vCTS: LSS_featureLicenseKeyNearExpiration","LSS_featureLockValidationError":"vCTS: LSS_featureLockValidationError","LSS_fqdnError":"vCTS: LSS_fqdnError","LSS_fru":"vCTS: LSS_fru","LSS_gatewayCongestion":"vCTS: LSS_gatewayCongestion","LSS_gatewayForcedOOS":"vCTS: LSS_gatewayForcedOOS","LSS_gatewayProvisioningError":"vCTS: LSS_gatewayProvisioningError","LSS_gatewayUnreachable":"vCTS: LSS_gatewayUnreachable","LSS_gatewayUnregistered":"vCTS: LSS_gatewayUnregistered","LSS_globalParameterNotFound":"vCTS: LSS_globalParameterNotFound","LSS_grow":"vCTS: LSS_grow","LSS_h248MessageBufferDepletion":"vCTS: LSS_h248MessageBufferDepletion","LSS_hostDown":"vCTS: LSS_hostDown","LSS_hostReset":"vCTS: LSS_hostReset","LSS_invalidGateway":"vCTS: LSS_invalidGateway","LSS_iriLinkDown":"vCTS: LSS_iriLinkDown","LSS_ldapServerConnectionLost":"vCTS: LSS_ldapServerConnectionLost","LSS_llcDown":"vCTS: LSS_llcDown","LSS_logicalLinkDown":"vCTS: LSS_logicalLinkDown","LSS_logicalLinkNotFound":"vCTS: LSS_logicalLinkNotFound","LSS_logRotateThreshold":"vCTS: LSS_logRotateThreshold","LSS_memoryOverload":"vCTS: LSS_memoryOverload","LSS_nodeConfigFailure":"vCTS: LSS_nodeConfigFailure","LSS_nodeGroupOOS":"vCTS: LSS_nodeGroupOOS","LSS_nodeOOS":"vCTS: LSS_nodeOOS","LSS_nonCompliantFaultGroupMemberState":"vCTS: LSS_nonCompliantFaultGroupMemberState","LSS_nonCsAddrChannelDepletion":"vCTS: LSS_nonCsAddrChannelDepletion","LSS_numberOfTuplesInUse":"vCTS: LSS_numberOfTuplesInUse","LSS_osSecInfoModificationDetected":"vCTS: LSS_osSecInfoModificationDetected","LSS_osSecInformationMissing":"vCTS: LSS_osSecInformationMissing","LSS_osSecUnexpectedInformation":"vCTS: LSS_osSecUnexpectedInformation","LSS_pdnsMySqlReplication":"vCTS: LSS_pdnsMySqlReplication","LSS_pktCorruptionDetectedViaRCCLANCheck":"vCTS: LSS_pktCorruptionDetectedViaRCCLANCheck","LSS_platformCommandFailure":"vCTS: LSS_platformCommandFailure","LSS_pmDataNotCollected":"vCTS: LSS_pmDataNotCollected","LSS_processDown":"vCTS: LSS_processDown","LSS_processNotStarted":"vCTS: LSS_processNotStarted","LSS_provisioningInhibitedMode":"vCTS: LSS_provisioningInhibitedMode","LSS_rccInhibitedMode":"vCTS: LSS_rccInhibitedMode","LSS_remotedbLinkDown":"vCTS: LSS_remotedbLinkDown","LSS_remoteQueryServerFailure":"vCTS: LSS_remoteQueryServerFailure","LSS_restore":"vCTS: LSS_restore","LSS_serviceCFGDataTimestampError":"vCTS: LSS_serviceCFGDataTimestampError","LSS_serviceCommCxnLost":"vCTS: LSS_serviceCommCxnLost","LSS_serviceOnewayCommunication":"vCTS: LSS_serviceOnewayCommunication","LSS_sheddingOverload":"vCTS: LSS_sheddingOverload","LSS_simxml":"vCTS: LSS_simxml","LSS_sipLinkSetMaxQuarantineList":"vCTS: LSS_sipLinkSetMaxQuarantineList","LSS_sipLinkSetUnavailable":"vCTS: LSS_sipLinkSetUnavailable","LSS_sipLinkUnavailable":"vCTS: LSS_sipLinkUnavailable","LSS_softwareAllocatedResourceOverload":"vCTS: LSS_softwareAllocatedResourceOverload","LSS_softwareComponentStandbyNotReady":"vCTS: LSS_softwareComponentStandbyNotReady","LSS_softwareLicense":"vCTS: LSS_softwareLicense","LSS_svcdegrow":"vCTS: LSS_svcdegrow","LSS_svcgrow":"vCTS: LSS_svcgrow","LSS_swVersionMismatch":"vCTS: LSS_swVersionMismatch","LSS_tftpDownloadCorrupt":"vCTS: LSS_tftpDownloadCorrupt","LSS_timeStampValueOutOfSystemRange":"vCTS: LSS_timeStampValueOutOfSystemRange","LSS_transactionHandlerBlockDepletion":"vCTS: LSS_transactionHandlerBlockDepletion","LSS_upgrade":"vCTS: LSS_upgrade","SYS_BackupFailure":"vCTS: SYS_BackupFailure","SYS_Configuration":"vCTS: SYS_Configuration","SYS_COTRecordTransferFailure":"vCTS: SYS_COTRecordTransferFailure","SYS_CPM_USERDATA_INCONSITENCY":"vCTS: SYS_CPM_USERDATA_INCONSITENCY","SYS_CPM_USERDATA_RESTORED":"vCTS: SYS_CPM_USERDATA_RESTORED","SYS_EventQueueCapacity":"vCTS: SYS_EventQueueCapacity","SYS_ICMPFailure":"vCTS: SYS_ICMPFailure","SYS_IPsecConfig":"vCTS: SYS_IPsecConfig","SYS_LinkDown":"vCTS: SYS_LinkDown","SYS_NotifyDisabled":"vCTS: SYS_NotifyDisabled","SYS_NotifyLocked":"vCTS: SYS_NotifyLocked","SYS_NumTL1MeasThresh":"vCTS: SYS_NumTL1MeasThresh","SYS_RADIUS_TO_LDAP_FAILURE":"vCTS: SYS_RADIUS_TO_LDAP_FAILURE","SYS_ROOT_ACCESS_DENIED":"vCTS: SYS_ROOT_ACCESS_DENIED","SYS_ROOT_FTP_VIOLATION":"vCTS: SYS_ROOT_FTP_VIOLATION","SYS_ROOT_LOGIN_VIOLATION":"vCTS: SYS_ROOT_LOGIN_VIOLATION","SYS_ROOT_SSH_LOGIN_VIOLATION":"vCTS: SYS_ROOT_SSH_LOGIN_VIOLATION","SYS_SetupAAAFailure":"vCTS: SYS_SetupAAAFailure","SYS_SNETrapOverload":"vCTS: SYS_SNETrapOverload","SYS_SNMPAuthenticationFailure":"vCTS: SYS_SNMPAuthenticationFailure","SYS_SNMPFailure":"vCTS: SYS_SNMPFailure","SYS_SU_TO_ROOT_FAILURE":"vCTS: SYS_SU_TO_ROOT_FAILURE","SYS_SYSTEMTrapOverload":"vCTS: SYS_SYSTEMTrapOverload","SYS_ThresholdCrossed":"vCTS: SYS_ThresholdCrossed","SYS_UndiscoveredObject":"vCTS: SYS_UndiscoveredObject","SYS_WriteAAAFailure":"vCTS: SYS_WriteAAAFailure","jnxSpaceDiskUsageRising":"vDBE-EMS-Juniper: jnxSpaceDiskUsageRising","jnxSpaceDiskUsageRisingCleared":"vDBE-EMS-Juniper: jnxSpaceDiskUsageRisingCleared","jnxSpaceSwapUsageRising":"vDBE-EMS-Juniper: jnxSpaceSwapUsageRising","jnxSpaceSwapUsageRisingCleared":"vDBE-EMS-Juniper: jnxSpaceSwapUsageRisingCleared","jnxSpaceCPULARising":"vDBE-EMS-Juniper: jnxSpaceCPULARising","jnxSpaceCPULARisingCleared":"vDBE-EMS-Juniper: jnxSpaceCPULARisingCleared","jnxSpaceWebpProxyProcessDown":"vDBE-EMS-Juniper: jnxSpaceWebpProxyProcessDown","jnxSpaceWebpProxyProcessUp":"vDBE-EMS-Juniper: jnxSpaceWebpProxyProcessUp","jnxSpaceNMAProcessDown":"vDBE-EMS-Juniper: jnxSpaceNMAProcessDown","jnxSpaceNMAProcessUp":"vDBE-EMS-Juniper: jnxSpaceNMAProcessUp","jnxSpaceJbossProcessDown":"vDBE-EMS-Juniper: jnxSpaceJbossProcessDown","jnxSpaceJbossProcessUp":"vDBE-EMS-Juniper: jnxSpaceJbossProcessUp","jnxSpaceMysqlProcessDown":"vDBE-EMS-Juniper: jnxSpaceMysqlProcessDown","jnxSpaceMysqlProcessUp":"vDBE-EMS-Juniper: jnxSpaceMysqlProcessUp","jnxSpacePostgresqlProcessDown":"vDBE-EMS-Juniper: jnxSpacePostgresqlProcessDown","jnxSpacePostgresqlProcessUp":"vDBE-EMS-Juniper: jnxSpacePostgresqlProcessUp","jnxSpaceWatchdogStopped":"vDBE-EMS-Juniper: jnxSpaceWatchdogStopped","jnxSpaceWatchdogStarted":"vDBE-EMS-Juniper: jnxSpaceWatchdogStarted","jnxSpaceSNAProcessDown":"vDBE-EMS-Juniper: jnxSpaceSNAProcessDown","jnxSpaceSNAProcessUp":"vDBE-EMS-Juniper: jnxSpaceSNAProcessUp","jnxSpaceNodeDown":"vDBE-EMS-Juniper: jnxSpaceNodeDown","jnxSpaceNodeUp":"vDBE-EMS-Juniper: jnxSpaceNodeUp"," jnxSpaceNodeRemoval":"vDBE-EMS-Juniper: jnxSpaceNodeRemoval","jnxCmCfgChange":"vDBE-Juniper: jnxCmCfgChange","jnxCmRescueChange":"vDBE-Juniper: jnxCmRescueChange","jnxEventTrap":"vDBE-Juniper: jnxEventTrap","jnxJsFwAuthFailure":"vDBE-Juniper: jnxJsFwAuthFailure","jnxJsFwAuthServiceUp":"vDBE-Juniper: jnxJsFwAuthServiceUp","jnxJsFwAuthServiceDown":"vDBE-Juniper: jnxJsFwAuthServiceDown","jnxJsFwAuthCapacityExceeded":"vDBE-Juniper: jnxJsFwAuthCapacityExceeded","jnxJsIdpSignatureUpdate":"vDBE-Juniper: jnxJsIdpSignatureUpdate","jnxJsIdpAttackLog":"vDBE-Juniper: jnxJsIdpAttackLog","jnxJsSrcNatPoolThresholdStatus":"vDBE-Juniper: jnxJsSrcNatPoolThresholdStatus","jnxJsNatRuleThresholdStatus":"vDBE-Juniper: jnxJsNatRuleThresholdStatus","jnxJsScreenAttack":"vDBE-Juniper: jnxJsScreenAttack","jnxJsScreenCfgChange":"vDBE-Juniper: jnxJsScreenCfgChange","jnxJsAvPatternUpdateTrap":"vDBE-Juniper: jnxJsAvPatternUpdateTrap","jnxJsChassisClusterSwitchover":"vDBE-Juniper: jnxJsChassisClusterSwitchover","jnxJsChClusterIntfTrap":"vDBE-Juniper: jnxJsChClusterIntfTrap","jnxJsChClusterSpuMismatchTrap":"vDBE-Juniper: jnxJsChClusterSpuMismatchTrap","jnxJsChClusterWeightTrap":"vDBE-Juniper: jnxJsChClusterWeightTrap","jnxLicenseGraceExpired":"vDBE-Juniper: jnxLicenseGraceExpired","jnxLicenseGraceAboutToExpire":"vDBE-Juniper: jnxLicenseGraceAboutToExpire","jnxLicenseAboutToExpire":"vDBE-Juniper: jnxLicenseAboutToExpire","jnxLicenseInfringeCumulative":"vDBE-Juniper: jnxLicenseInfringeCumulative","jnxLicenseInfringeSingle":"vDBE-Juniper: jnxLicenseInfringeSingle","jnxNatAddrPoolThresholdStatus":"vDBE-Juniper: jnxNatAddrPoolThresholdStatus","jnxSyslogTrap":"vDBE-Juniper: jnxSyslogTrap","jnxAccessAuthServiceUp":"vDBE-Juniper: jnxAccessAuthServiceUp","jnxAccessAuthServiceDown":"vDBE-Juniper: jnxAccessAuthServiceDown","jnxAccessAuthServerDisabled":"vDBE-Juniper: jnxAccessAuthServerDisabled","jnxAccessAuthServerEnabled":"vDBE-Juniper: jnxAccessAuthServerEnabled","jnxAccessAuthAddressPoolHighThreshold":"vDBE-Juniper: jnxAccessAuthAddressPoolHighThreshold","jnxAccessAuthAddressPoolAbateThreshold":"vDBE-Juniper: jnxAccessAuthAddressPoolAbateThreshold","jnxAccessAuthAddressPoolOutOfAddresses":"vDBE-Juniper: jnxAccessAuthAddressPoolOutOfAddresses","jnxAccessAuthAddressPoolOutOfMemory":"vDBE-Juniper: jnxAccessAuthAddressPoolOutOfMemory","LEVEL_WARNING_CPU":"vMRF: LEVEL_WARNING_CPU","LEVEL_MAJOR_CPU":"vMRF: LEVEL_MAJOR_CPU","LEVEL_CRITICAL_CPU":"vMRF: LEVEL_CRITICAL_CPU","LEVEL_WARNING_MEM":"vMRF: LEVEL_WARNING_MEM","LEVEL_MAJOR_MEM":"vMRF: LEVEL_MAJOR_MEM","LEVEL_CRITICAL_MEM":"vMRF: LEVEL_CRITICAL_MEM","LEVEL_WARNING_DISK":"vMRF: LEVEL_WARNING_DISK","LEVEL_MAJOR_DISK":"vMRF: LEVEL_MAJOR_DISK","LEVEL_CRITICAL_DISK":"vMRF: LEVEL_CRITICAL_DISK","LEVEL_WARNING_RTPBANDWIDTH":"vMRF: LEVEL_WARNING_RTPBANDWIDTH","LEVEL_MAJOR_RTPBANDWIDTH":"vMRF: LEVEL_MAJOR_RTPBANDWIDTH","LEVEL_CRITICAL_RTPBANDWIDTH":"vMRF: LEVEL_CRITICAL_RTPBANDWIDTH","LEVEL_WARNING_RTPINPACKETLOSS":"vMRF: LEVEL_WARNING_RTPINPACKETLOSS","LEVEL_MAJOR_RTPINPACKETLOSS":"vMRF: LEVEL_MAJOR_RTPINPACKETLOSS","LEVEL_CRITICAL_RTPINPACKETLOSS":"vMRF: LEVEL_CRITICAL_RTPINPACKETLOSS","LEVEL_WARNING_RTPOUTPACKETLOSS":"vMRF: LEVEL_WARNING_RTPOUTPACKETLOSS","LEVEL_MAJOR_RTPOUTPACKETLOSS":"vMRF: LEVEL_MAJOR_RTPOUTPACKETLOSS","LEVEL_CRITICAL_RTPOUTPACKETLOSS":"vMRF: LEVEL_CRITICAL_RTPOUTPACKETLOSS","LEVEL_WARNING_TCPLOSTRETRANSMITRATE":"vMRF: LEVEL_WARNING_TCPLOSTRETRANSMITRATE","LEVEL_MAJOR_TCPLOSTRETRANSMITRATE":"vMRF: LEVEL_MAJOR_TCPLOSTRETRANSMITRATE","LEVEL_CRITICAL_TCPLOSTRETRANSMITRATE":"vMRF: LEVEL_CRITICAL_TCPLOSTRETRANSMITRATE","LEVEL_WARNING_TCPLOSSFAILURERATE":"vMRF: LEVEL_WARNING_TCPLOSSFAILURERATE","LEVEL_MAJOR_TCPLOSSFAILURERATE":"vMRF: LEVEL_MAJOR_TCPLOSSFAILURERATE","LEVEL_CRITICAL_TCPLOSSFAILURERATE":"vMRF: LEVEL_CRITICAL_TCPLOSSFAILURERATE","LEVEL_CRITICAL_RTPLINKDOWN":"vMRF: LEVEL_CRITICAL_RTPLINKDOWN","TARGET_REACHABLE":"vMRF: TARGET_REACHABLE","PUBLICATION_ERROR":"vMRF: PUBLICATION_ERROR","REMOTE_SERVER_SYNCHRONIZATION_ERROR":"vMRF: REMOTE_SERVER_SYNCHRONIZATION_ERROR","TRANSCODER_TOOL_EXEC_ERROR":"vMRF: TRANSCODER_TOOL_EXEC_ERROR","CLIENT_SYNCHRONIZATION_ERROR":"vMRF: CLIENT_SYNCHRONIZATION_ERROR","CLUSTER_UNREACHABLE":"vMRF: CLUSTER_UNREACHABLE","REMOTE_NODE_OFFLINE":"vMRF: REMOTE_NODE_OFFLINE","IPADDR_STOPPED":"vMRF: IPADDR_STOPPED","MRFC_STOPPED":"vMRF: MRFC_STOPPED","MNGT_STOPPED":"vMRF: MNGT_STOPPED","IPADDR_STARTED":"vMRF: IPADDR_STARTED","MRFC_STARTED":"vMRF: MRFC_STARTED","MNGT_STARTED":"vMRF: MNGT_STARTED","VOLATTACH_FAILED":"vMRF: VOLATTACH_FAILED","VOLDETACH_FAILED":"vMRF: VOLDETACH_FAILED","VOLDEL":"vMRF: VOLDEL","VOLCORRUPT":"vMRF: VOLCORRUPT","VOLFOREIGN":"vMRF: VOLFOREIGN","ACTIVE_ALARM_TABLE_PURGE":"vMRF: ACTIVE_ALARM_TABLE_PURGE","GENERIC_FORMER_STATELESS":"vMRF: GENERIC_FORMER_STATELESS","GENERIC_FORMER_STATEFUL":"vMRF: GENERIC_FORMER_STATEFUL","NO_MORE_ALARM_DESCRIPTION":"vMRF: NO_MORE_ALARM_DESCRIPTION","SERVICE_PROCESS_ENDS":"vMRF: SERVICE_PROCESS_ENDS","DEFENSE_STOPPED":"vMRF: DEFENSE_STOPPED","USER_ACCOUNT_LOCKED":"vMRF: USER_ACCOUNT_LOCKED","CONNECTION_SQL_NOT_ESTABLISHED":"vMRF: CONNECTION_SQL_NOT_ESTABLISHED","FALSE_ALARM":"vMRF: FALSE_ALARM","RADIUS SERVER HS":"vMRF: RADIUS SERVER HS","DRM_PACKAGER_IS_NOT_AVAILABLE":"vMRF: DRM_PACKAGER_IS_NOT_AVAILABLE","DRM_LICENSE_BUILDER_IS_NOT_AVAILABLE":"vMRF: DRM_LICENSE_BUILDER_IS_NOT_AVAILABLE","ERROR_WHILE_CREATING_PLAYLIST_MANAGER_FILE":"vMRF: ERROR_WHILE_CREATING_PLAYLIST_MANAGER_FILE","ERROR_WHILE_BUILDING_PLAYLIST_XML_REPRESENTATION":"vMRF: ERROR_WHILE_BUILDING_PLAYLIST_XML_REPRESENTATION","PLAYLIST_FILE_TO_PUBLISH_NOT_FOUND":"vMRF: PLAYLIST_FILE_TO_PUBLISH_NOT_FOUND","COULD_NOT_CONNECT_TO_PVNS_SERVER":"vMRF: COULD_NOT_CONNECT_TO_PVNS_SERVER","HTTP_OR_HTTPCLIENT_EXCEPTION_HAS_OCCURRED":"vMRF: HTTP_OR_HTTPCLIENT_EXCEPTION_HAS_OCCURRED","I/O_ERROR_WHILE_PUBLISHING_PLAYLIST_FILE":"vMRF: I/O_ERROR_WHILE_PUBLISHING_PLAYLIST_FILE","ERROR_WHILE_REQUESTING_SDP_FILE":"vMRF: ERROR_WHILE_REQUESTING_SDP_FILE","ERROR_WHILE_REQUESTING_SDP_FILE:_REMOTE_EXCEPTION":"vMRF: ERROR_WHILE_REQUESTING_SDP_FILE:_REMOTE_EXCEPTION","NO_STREAMING_RESOURCES":"vMRF: NO_STREAMING_RESOURCES","NO_STREAMING_MODULES_REGISTERED":"vMRF: NO_STREAMING_MODULES_REGISTERED","SM_FAILURE":"vMRF: SM_FAILURE","MISSING_FILE_OR_ENCODER":"vMRF: MISSING_FILE_OR_ENCODER","INVALID_RANGE":"vMRF: INVALID_RANGE","THRESHOLD_VALUE_EXCEEDED":"vMRF: THRESHOLD_VALUE_EXCEEDED","TICKET_QUEUE_FULL":"vMRF: TICKET_QUEUE_FULL","PARSING_INITIALIZATION_EXCEPTION":"vMRF: PARSING_INITIALIZATION_EXCEPTION","CUSTOMERCARE_INTERNAL_EXCEPTION":"vMRF: CUSTOMERCARE_INTERNAL_EXCEPTION","PARSING_EXCEPTION":"vMRF: PARSING_EXCEPTION","I/O_PROBLEM":"vMRF: I/O_PROBLEM","INEXISTENT_FILE_OR_FOLDER":"vMRF: INEXISTENT_FILE_OR_FOLDER","FILE_NOT_IN_XML_FORMAT":"vMRF: FILE_NOT_IN_XML_FORMAT","SERVICE_STATE_CHANGE":"vMRF: SERVICE_STATE_CHANGE","MONITORED_FILE_UPDATE_ERROR":"vMRF: MONITORED_FILE_UPDATE_ERROR","MONITORED_RPM_DELETED_ERROR":"vMRF: MONITORED_RPM_DELETED_ERROR","MONITORED_RPM_ADDED_ERROR":"vMRF: MONITORED_RPM_ADDED_ERROR","MONITORED_CHMOD_ERROR":"vMRF: MONITORED_CHMOD_ERROR","MONITORED_CHOWN_ERROR":"vMRF: MONITORED_CHOWN_ERROR","PASSWD_ROOT_ERROR":"vMRF: PASSWD_ROOT_ERROR","PASSWD_ERROR":"vMRF: PASSWD_ERROR","ROOTKIT_ERROR":"vMRF: ROOTKIT_ERROR","STARTUP_ERR_UNDEFINED_PORT":"vMRF: STARTUP_ERR_UNDEFINED_PORT","STARTUP_ERR_FAIL_FIND_HOSTNAME":"vMRF: STARTUP_ERR_FAIL_FIND_HOSTNAME","STARTUP_ERR_CF_MISSING":"vMRF: STARTUP_ERR_CF_MISSING","STARTUP_ERR_FAILED_TO_OPEN_CF":"vMRF: STARTUP_ERR_FAILED_TO_OPEN_CF","STARTUP_ERR_FAILED_TO_BIND_PORT":"vMRF: STARTUP_ERR_FAILED_TO_BIND_PORT","STARTUP_ERR_CFG_UNIT_MISSING":"vMRF: STARTUP_ERR_CFG_UNIT_MISSING","MCTR_INVALID_CODEC_NAME":"vMRF: MCTR_INVALID_CODEC_NAME","RTSP_SERVER_FAILURE":"vMRF: RTSP_SERVER_FAILURE","RTSP_SERVER_QUARANTINE":"vMRF: RTSP_SERVER_QUARANTINE","TRANSCODING_FAILURE":"vMRF: TRANSCODING_FAILURE","FILE_CACHE_FAILURE":"vMRF: FILE_CACHE_FAILURE","STARTUP_ERROR_INITIALIZATION_FAILED":"vMRF: STARTUP_ERROR_INITIALIZATION_FAILED","CONFERENCE_FAILURE":"vMRF: CONFERENCE_FAILURE","PLC_DEGRADATION_LOW":"vMRF: PLC_DEGRADATION_LOW","PLC_DEGRADATION_MEDIUM":"vMRF: PLC_DEGRADATION_MEDIUM","PLC_DEGRADATION_HIGH":"vMRF: PLC_DEGRADATION_HIGH","AUDIO_RESYNCH_LOW":"vMRF: AUDIO_RESYNCH_LOW","AUDIO_RESYNCH_MEDIUM":"vMRF: AUDIO_RESYNCH_MEDIUM","AUDIO_RESYNCH_HIGH":"vMRF: AUDIO_RESYNCH_HIGH","VIDEO_RESYNCH_LOW":"vMRF: VIDEO_RESYNCH_LOW","VIDEO_RESYNCH_MEDIUM":"vMRF: VIDEO_RESYNCH_MEDIUM","VIDEO_RESYNCH_HIGH":"vMRF: VIDEO_RESYNCH_HIGH","PLAY_FAILURES_LOW":"vMRF: PLAY_FAILURES_LOW","PLAY_FAILURES_MEDIUM":"vMRF: PLAY_FAILURES_MEDIUM","PLAY_FAILURES_HIGH":"vMRF: PLAY_FAILURES_HIGH","NOT_ENOUGH_FREE_CONFEREE":"vMRF: NOT_ENOUGH_FREE_CONFEREE","NO_LONGER_FREE_CONFERENCE_ROOM":"vMRF: NO_LONGER_FREE_CONFERENCE_ROOM","STARTUP_ERROR_FAIL_TO_READ_CF":"vMRF: STARTUP_ERROR_FAIL_TO_READ_CF","STARTUP_ERROR_SIP_ADAPTER_INIT":"vMRF: STARTUP_ERROR_SIP_ADAPTER_INIT","STARTUP_ERROR_MONITORING_INIT":"vMRF: STARTUP_ERROR_MONITORING_INIT","REGISTER_ERROR_FAILURE":"vMRF: REGISTER_ERROR_FAILURE","DRI_ERROR_FAILURE":"vMRF: DRI_ERROR_FAILURE","STARTUP_ERROR_STACK_CONFIGURATION":"vMRF: STARTUP_ERROR_STACK_CONFIGURATION","STARTUP_ERROR_CONF":"vMRF: STARTUP_ERROR_CONF","STARTUP_ERROR_UNDEFINED_PORT":"vMRF: STARTUP_ERROR_UNDEFINED_PORT","HOST_REMOVED":"vMRF: HOST_REMOVED","INTERCEPT_THRESHOLD_NB_DIALOG_ALLOCATED":"vMRF: INTERCEPT_THRESHOLD_NB_DIALOG_ALLOCATED","STARTUP_ERROR_STACK_CONF":"vMRF: STARTUP_ERROR_STACK_CONF","STARTUP_ERROR_CONFIGURATION":"vMRF: STARTUP_ERROR_CONFIGURATION","STARTUP_ERROR_FAILED_TO_RETRIEVE_HOSTNAME":"vMRF: STARTUP_ERROR_FAILED_TO_RETRIEVE_HOSTNAME","LEVEL_WARNING_CALL":"vMRF: LEVEL_WARNING_CALL","LEVEL_ALARM_MINOR_CALL":"vMRF: LEVEL_ALARM_MINOR_CALL","LEVEL_ALARM_MAJOR_CALL":"vMRF: LEVEL_ALARM_MAJOR_CALL","LEVEL_ALARM_MRFPoutOfService":"vMRF: LEVEL_ALARM_MRFPoutOfService","MRFP_CALL_REJECTED_Threshold #1":"vMRF: MRFP_CALL_REJECTED_Threshold #1","MRFP_CALL_REJECTED_Threshold #2":"vMRF: MRFP_CALL_REJECTED_Threshold #2","MRFP_CALL_REJECTED_Threshold #3":"vMRF: MRFP_CALL_REJECTED_Threshold #3","MRFP_CALL_RETRIED_Threshold #1":"vMRF: MRFP_CALL_RETRIED_Threshold #1","MRFP_CALL_RETRIED_Threshold #2":"vMRF: MRFP_CALL_RETRIED_Threshold #2","MRFP_CALL_RETRIED_Threshold #3":"vMRF: MRFP_CALL_RETRIED_Threshold #3","STARTUP_PUB_FILE_NOT_PRESENT":"vMRF: STARTUP_PUB_FILE_NOT_PRESENT","STARTUP_INF_FILE_NOT_PRESENT":"vMRF: STARTUP_INF_FILE_NOT_PRESENT","STARTUP_LIC_FILE_NOT_PRESENT":"vMRF: STARTUP_LIC_FILE_NOT_PRESENT","GENERIC_HARDWARE_PROBLEM":"vMRF: GENERIC_HARDWARE_PROBLEM","HARD_DRIVE_PROBLEM":"vMRF: HARD_DRIVE_PROBLEM","NETWORK_LINK_PROBLEM":"vMRF: NETWORK_LINK_PROBLEM","POWER_SUPPLY_PROBLEM":"vMRF: POWER_SUPPLY_PROBLEM","SMART_HARD_DRIVE_PROBLEM":"vMRF: SMART_HARD_DRIVE_PROBLEM","STARTUP_ERROR":"vMRF: STARTUP_ERROR","RESOURCE_NOT_ACCESSIBLE":"vMRF: RESOURCE_NOT_ACCESSIBLE","RESOURCE_ACCESSIBLE":"vMRF: RESOURCE_ACCESSIBLE","RESOURCE_FULL":"vMRF: RESOURCE_FULL","DRI_ALARM":"vMRF: DRI_ALARM","REGISTER_ERROR_CCF":"vMRF: REGISTER_ERROR_CCF","REGISTER_ERROR_EXTERNAL":"vMRF: REGISTER_ERROR_EXTERNAL","TIMEOUT_ERROR":"vMRF: TIMEOUT_ERROR","VXML_ERROR":"vMRF: VXML_ERROR","A Network Element is no longer available due to a connection failure":"vMVM: A Network Element is no longer available due to a connection failure","A MetaSphere server is reporting a fault with the configuration of its connection to MetaView":"vMVM: A MetaSphere server is reporting a fault with the configuration of its connection to MetaView","Configured OBS IPs don't match available OBS nodes. Configured but unavailable nodes include: []. Real nodes not configured include: []":"vMVM: Configured OBS IPs don't match available OBS nodes. Configured but unavailable nodes include: []. Real nodes not configured include: []","Service Assurance Server cannot be contacted":"vMVM: Service Assurance Server cannot be contacted","The primary MetaView Director has lost contact with the backup MetaView Director":"vMVM: The primary MetaView Director has lost contact with the backup MetaView Director","The active server has lost connection to the standby":"vMVM: The active server has lost connection to the standby","CrashCounter":"vprobes-vBE-Processing: CrashCounter","IsAlive":"vprobes-vBE-Processing: IsAlive","SwRestart":"vprobes-vLB: SwRestart","Repeated exceptions have occurred.":"vSBC-Metaswitch: Repeated exceptions have occurred.","A licensing limit is close to capacity.":"vSBC-Metaswitch: A licensing limit is close to capacity.","One or more feature packs have been breached.":"vSBC-Metaswitch: One or more feature packs have been breached.","The grace period on this Perimeta system will expire in less than 48 hours, after which calls will not be processed.":"vSBC-Metaswitch: The grace period on this Perimeta system will expire in less than 48 hours, after which calls will not be processed.","The grace period on this Perimeta system will expire in less than 7 days, after which calls will not be processed.":"vSBC-Metaswitch: The grace period on this Perimeta system will expire in less than 7 days, after which calls will not be processed.","The license on this Perimeta system will expire in less than 4 weeks.":"vSBC-Metaswitch: The license on this Perimeta system will expire in less than 4 weeks.","A Perimeta blade has become unlicensed.":"vSBC-Metaswitch: A Perimeta blade has become unlicensed.","Perimeta is licensed with a bypass certificate, which is valid until the time displayed.":"vSBC-Metaswitch: Perimeta is licensed with a bypass certificate, which is valid until the time displayed.","The number of licensed instances exceeded a threshold of the licensed limit.":"vSBC-Metaswitch: The number of licensed instances exceeded a threshold of the licensed limit.","The software token on the primary Distributed Capacity Manager will expire on the displayed date.":"vSBC-Metaswitch: The software token on the primary Distributed Capacity Manager will expire on the displayed date.","A capacity limit on the license installed on this Perimeta system does not match the largest limit across all systems in the deployment.":"vSBC-Metaswitch: A capacity limit on the license installed on this Perimeta system does not match the largest limit across all systems in the deployment.","An adjacency has voice quality alerts.":"vSBC-Metaswitch: An adjacency has voice quality alerts.","The number of calls being audited is congested.":"vSBC-Metaswitch: The number of calls being audited is congested.","Session Controller is rejecting calls because there is no valid active call policy set configured.":"vSBC-Metaswitch: Session Controller is rejecting calls because there is no valid active call policy set configured.","A call policy set is inactive because it has been misconfigured.":"vSBC-Metaswitch: A call policy set is inactive because it has been misconfigured.","Session Controller is inactive and rejecting calls.":"vSBC-Metaswitch: Session Controller is inactive and rejecting calls.","Sources have breached minor or major blacklist thresholds.":"vSBC-Metaswitch: Sources have breached minor or major blacklist thresholds.","Sources are blacklisted.":"vSBC-Metaswitch: Sources are blacklisted.","The blacklisting configuration will change as a result of upgrade and some configured blacklists or alerts will no longer be applied.":"vSBC-Metaswitch: The blacklisting configuration will change as a result of upgrade and some configured blacklists or alerts will no longer be applied.","A large number of downgrades and bans have been created as a result of blacklisting.":"vSBC-Metaswitch: A large number of downgrades and bans have been created as a result of blacklisting.","Session Controller is unable to track further sources for blacklisting.":"vSBC-Metaswitch: Session Controller is unable to track further sources for blacklisting.","A software protection switch was triggered.":"vSBC-Metaswitch: A software protection switch was triggered.","A disk area on a processor blade is nearly full.":"vSBC-Metaswitch: A disk area on a processor blade is nearly full.","Memory use is very high.":"vSBC-Metaswitch: Memory use is very high.","The primary processor-blade has lost contact with the backup.":"vSBC-Metaswitch: The primary processor-blade has lost contact with the backup.","An efix or patch has been applied to this system containing diagnostic versions of some software libraries.":"vSBC-Metaswitch: An efix or patch has been applied to this system containing diagnostic versions of some software libraries.","A software protection switch (SPS) was triggered. Call and registration state was lost.":"vSBC-Metaswitch: A software protection switch (SPS) was triggered. Call and registration state was lost.","The Ethernet Heartbeat between primary and backup processors has failed.":"vSBC-Metaswitch: The Ethernet Heartbeat between primary and backup processors has failed.","The Backplane Heartbeat between primary and backup processors has failed.":"vSBC-Metaswitch: The Backplane Heartbeat between primary and backup processors has failed.","A disk area on a processor blade reported an error.":"vSBC-Metaswitch: A disk area on a processor blade reported an error.","The system is upgrading.":"vSBC-Metaswitch: The system is upgrading.","An error with NTP functionality has been detected.":"vSBC-Metaswitch: An error with NTP functionality has been detected.","One or more users are locked out of the system.":"vSBC-Metaswitch: One or more users are locked out of the system.","The Craft Terminal user FTP directory on a processor blade is nearly full.":"vSBC-Metaswitch: The Craft Terminal user FTP directory on a processor blade is nearly full.","A scheduled configuration snapshot has failed.":"vSBC-Metaswitch: A scheduled configuration snapshot has failed.","The Session Controller is stopping as a result of administrator action.":"vSBC-Metaswitch: The Session Controller is stopping as a result of administrator action.","A Session Controller processor blade is stopping as a result of administrator action.":"vSBC-Metaswitch: A Session Controller processor blade is stopping as a result of administrator action.","An object could not be activated because its service address does not exist or is not fully specified.":"vSBC-Metaswitch: An object could not be activated because its service address does not exist or is not fully specified.","The hardware on a processor does not meet minimum requirements.":"vSBC-Metaswitch: The hardware on a processor does not meet minimum requirements.","The hardware expectations of the two processors are not the same.":"vSBC-Metaswitch: The hardware expectations of the two processors are not the same.","The read speed of the main hard disk on a processor blade is too slow.":"vSBC-Metaswitch: The read speed of the main hard disk on a processor blade is too slow.","An error has occurred reading from the hard disk on a processor blade.":"vSBC-Metaswitch: An error has occurred reading from the hard disk on a processor blade.","Backup and primary processor-blades have an inconsistent system role.":"vSBC-Metaswitch: Backup and primary processor-blades have an inconsistent system role.","Event: The system encountered a critical error and had to restart.":"vSBC-Metaswitch: Event: The system encountered a critical error and had to restart.","Event: A RADIUS server failed to respond to an authentication request.":"vSBC-Metaswitch: Event: A RADIUS server failed to respond to an authentication request.","Event: All configured RADIUS servers failed to respond to authentication requests.":"vSBC-Metaswitch: Event: All configured RADIUS servers failed to respond to authentication requests.","Event: The number of CPUs has changed.":"vSBC-Metaswitch: Event: The number of CPUs has changed.","Event: A user has been automatically deleted":"vSBC-Metaswitch: Event: A user has been automatically deleted","The primary processor blade has lost management connectivity":"vSBC-Metaswitch: The primary processor blade has lost management connectivity","Event: A processor blade is running with DPDK mode disabled when DPDK mode is,expected.":"vSBC-Metaswitch: Event: A processor blade is running with DPDK mode disabled when DPDK mode is,expected.","Event: Processor blade %1 is running with DPDK mode disabled when DPDK mode may be possible.":"vSBC-Metaswitch: Event: Processor blade %1 is running with DPDK mode disabled when DPDK mode may be possible.","Perimeta is attempting to resend cached billing records.":"vSBC-Metaswitch: Perimeta is attempting to resend cached billing records.","The Rf billing cache is full.":"vSBC-Metaswitch: The Rf billing cache is full.","The inbound call queue is congested.":"vSBC-Metaswitch: The inbound call queue is congested.","A configured realm group contains realms that are not available to the SBC.":"vSBC-Metaswitch: A configured realm group contains realms that are not available to the SBC.","An allowed MSC configuration is not connected to any physical MSCs.":"vSBC-Metaswitch: An allowed MSC configuration is not connected to any physical MSCs.","A SIP Peer has stopped responding to SIP OPTIONS pings. MSW: 20160303: Alarm text is changed in v3.9 software to read: \\"An adjacency has lost connectivity, according to SIP OPTIONS pings\\"":"vSBC-Metaswitch: A SIP Peer has stopped responding to SIP OPTIONS pings. MSW: 20160303: Alarm text is changed in v3.9 software to read: \\"An adjacency has lost connectivity, according to SIP OPTIONS pings\\"","An adjacency has failed as the listen socket could not be created. Check for configuration mismatches with the associated service interface.":"vSBC-Metaswitch: An adjacency has failed as the listen socket could not be created. Check for configuration mismatches with the associated service interface.","No suitable DNS records were found for a peer group's DNS hostname.":"vSBC-Metaswitch: No suitable DNS records were found for a peer group's DNS hostname.","One or more SIP peers from a peer group have stopped responding to SIP OPTIONS pings":"vSBC-Metaswitch: One or more SIP peers from a peer group have stopped responding to SIP OPTIONS pings","An adjacency has failed as its service network does not match the service network on its associated peer group.":"vSBC-Metaswitch: An adjacency has failed as its service network does not match the service network on its associated peer group.","An adjacency has failed as its configured TLS certificate could not be found.":"vSBC-Metaswitch: An adjacency has failed as its configured TLS certificate could not be found.","The caching function has not been initialized properly.":"vSBC-Metaswitch: The caching function has not been initialized properly.","An adjacency has failed as the listen socket could not be created.":"vSBC-Metaswitch: An adjacency has failed as the listen socket could not be created.","An adjacency is congested and may be rejecting calls.":"vSBC-Metaswitch: An adjacency is congested and may be rejecting calls.","There is an issue with a Diameter peer.":"vSBC-Metaswitch: There is an issue with a Diameter peer.","A realm is no longer reachable via any configured peers.":"vSBC-Metaswitch: A realm is no longer reachable via any configured peers.","An FQDN for a configured Diameter peer has failed to resolve to a valid IP address.":"vSBC-Metaswitch: An FQDN for a configured Diameter peer has failed to resolve to a valid IP address.","One or more peers resolved from a DNS lookup of a configured peer's address cannot be contacted":"vSBC-Metaswitch: One or more peers resolved from a DNS lookup of a configured peer's address cannot be contacted","An interface ARP or NDP probe has failed.":"vSBC-Metaswitch: An interface ARP or NDP probe has failed.","One or more IP address conflicts have been detected on service interfaces with zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.":"vSBC-Metaswitch: One or more IP address conflicts have been detected on service interfaces with zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.","One or more IP address conflicts have been detected on service interfaces with non-zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.":"vSBC-Metaswitch: One or more IP address conflicts have been detected on service interfaces with non-zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.","An interface device is running below the expected speed. This alarm was originally triggered by a probe failure on a service interface.":"vSBC-Metaswitch: An interface device is running below the expected speed. This alarm was originally triggered by a probe failure on a service interface.","An interface device is running above the expected speed.":"vSBC-Metaswitch: An interface device is running above the expected speed.","An IP address conflict has been detected on a management interface.":"vSBC-Metaswitch: An IP address conflict has been detected on a management interface.","An interface ICMP probe has failed.":"vSBC-Metaswitch: An interface ICMP probe has failed.","A High-Availability link has detected a connectivity issue.":"vSBC-Metaswitch: A High-Availability link has detected a connectivity issue.","An HA-link device is being reported as underspeed.":"vSBC-Metaswitch: An HA-link device is being reported as underspeed.","An IP address conflict has been detected on a replication interface.":"vSBC-Metaswitch: An IP address conflict has been detected on a replication interface.","The Session Controller has started.":"vSBC-Metaswitch: The Session Controller has started.","A statistic exceeded its configured thresholds.":"vSBC-Metaswitch: A statistic exceeded its configured thresholds.","One or more statistic has not been retrieved at least 3 times in a row.":"vSBC-Metaswitch: One or more statistic has not been retrieved at least 3 times in a row.","A Refresh Alarms request was triggered. Alarms not re-raised will be cleared in 5 minutes.":"vSBC-Metaswitch: A Refresh Alarms request was triggered. Alarms not re-raised will be cleared in 5 minutes.","A statistic has exceeded its configured thresholds.":"vSBC-Metaswitch: A statistic has exceeded its configured thresholds.","A Fallback Operation will soon be started":"vSBG: A Fallback Operation will soon be started","BRM, Auto Export Backup Failed":"vSBG: BRM, Auto Export Backup Failed","BRM, Scheduled Backup Failed":"vSBG: BRM, Scheduled Backup Failed","COM SA, AMF Component Cleanup Failed":"vSBG: COM SA, AMF Component Cleanup Failed","COM SA, AMF Component Instantiation Failed":"vSBG: COM SA, AMF Component Instantiation Failed","COM SA, AMF SI Unassigned":"vSBG: COM SA, AMF SI Unassigned","COM SA, CLM Cluster Node Unavailable":"vSBG: COM SA, CLM Cluster Node Unavailable","COM SA, MDF Detected Model Error":"vSBG: COM SA, MDF Detected Model Error","COM SA, Proxy Status of a Component Changed to Unproxied":"vSBG: COM SA, Proxy Status of a Component Changed to Unproxied","File Management, Number of Files in FileGroup Exceeded":"vSBG: File Management, Number of Files in FileGroup Exceeded","File Management, Max Size in FileGroup Exceeded":"vSBG: File Management, Max Size in FileGroup Exceeded","LOTC Disk Replication Communication":"vSBG: LOTC Disk Replication Communication","LOTC Disk Replication Consistency":"vSBG: LOTC Disk Replication Consistency","LOTC Disk Usage":"vSBG: LOTC Disk Usage","LOTC memory Usage":"vSBG: LOTC memory Usage","LOTC Time Synchronization":"vSBG: LOTC Time Synchronization","SBG, BGF Control Link Down":"vSBG: SBG, BGF Control Link Down","SBG, BGF Control Link Disabled":"vSBG: SBG, BGF Control Link Disabled","SBG, BGF Control Link Enabled":"vSBG: SBG, BGF Control Link Enabled","SBG, BGF Control Link Remote Locked":"vSBG: SBG, BGF Control Link Remote Locked","SBG, Charging Data Storage Maximum Records Reached":"vSBG: SBG, Charging Data Storage Maximum Records Reached","SBG, Charging Server Rejects Charging Data":"vSBG: SBG, Charging Server Rejects Charging Data","SBG, Excessive Packet Rate Detected ":"vSBG: SBG, Excessive Packet Rate Detected ","SBG, High Amount of Malformed Packets Received":"vSBG: SBG, High Amount of Malformed Packets Received","SBG, High Amount of STUN Packets Detected":"vSBG: SBG, High Amount of STUN Packets Detected","SBG, High Amount of TCP SYN Packets Received":"vSBG: SBG, High Amount of TCP SYN Packets Received","SBG, High Amount of UDP Packets Received ":"vSBG: SBG, High Amount of UDP Packets Received ","SBG, IP Address Blocked Due to Excessive Packet Rate":"vSBG: SBG, IP Address Blocked Due to Excessive Packet Rate","SBG, Lost Connectivity to Diameter Server":"vSBG: SBG, Lost Connectivity to Diameter Server","SBG, Mated Pair out of Service":"vSBG: SBG, Mated Pair out of Service","SBG, Network Unavailable for Media Handling":"vSBG: SBG, Network Unavailable for Media Handling","SBG, Non-emergency Call Released to Free Resources for Emergency Call":"vSBG: SBG, Non-emergency Call Released to Free Resources for Emergency Call","SBG, Not Enough Disk Space for Storing Charging Data":"vSBG: SBG, Not Enough Disk Space for Storing Charging Data","SBG, Payload Mated Pair Failure":"vSBG: SBG, Payload Mated Pair Failure","SBG, Payload Processor Failure":"vSBG: SBG, Payload Processor Failure","SBG, Processor Overloaded":"vSBG: SBG, Processor Overloaded","SBG, Registered User Set in Quarantine":"vSBG: SBG, Registered User Set in Quarantine","SBG, Registration Contacts Exceed Configured Threshold":"vSBG: SBG, Registration Contacts Exceed Configured Threshold","SBG, Sequential Restart Initiated":"vSBG: SBG, Sequential Restart Initiated","SBG, SIP Abuse Detected":"vSBG: SBG, SIP Abuse Detected","SBG, SIP Network Locked":"vSBG: SBG, SIP Network Locked","SBG, SIP Next Hop Reachable":"vSBG: SBG, SIP Next Hop Reachable","SBG, SIP Next Hop Unreachable":"vSBG: SBG, SIP Next Hop Unreachable","SBG, SIP Request Rejected by Network Throttling":"vSBG: SBG, SIP Request Rejected by Network Throttling","SBG, TLS Certificate Imported":"vSBG: SBG, TLS Certificate Imported","SBG, Trace Recording Session Number Limit Reached":"vSBG: SBG, Trace Recording Session Number Limit Reached","SBG, Trace Session Deactivated":"vSBG: SBG, Trace Session Deactivated","SBG, Trace Session Times Out":"vSBG: SBG, Trace Session Times Out","SBG, Unknown Media Type or Payload Type":"vSBG: SBG, Unknown Media Type or Payload Type"} +# +# if action.test.override is true, then any action will be marked as test=true (even if incoming action request had test=false); otherwise, test flag will be unchanged on the action request +action.test.override=false +# if action.insert.test.event is true, then insert event even if the action is set to test +action.insert.test.event=false +CLDS_SERVICE_CACHE_MAX_SECONDS=14400 +# +globalProps={"collector": {"topicPublishes": {"DCAE-COLLECTOR-UCSNMP": "DCAE-COLLECTOR-UCSNMP", "GFP-IP-SNMP-TRAPS" : "GFP-IP-SNMP-TRAPS" } }, "string_match": { "topicPublishes": { "DCAE-CL-EVENT": "DCAE-CL-EVENT" }, "aaiMatchingFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "ProvStatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "aaiSendFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "Provstatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "eventSourceType": { "f5BigIP": "f5BigIP", "vSBG_Alarms": "vSBG_Alarms", "vCTS_Alarms": "vCTS_Alarms" }, "eventSeverity": { "NORMAL": "NORMAL", "not-NORMAL": "not-NORMAL", "WARNING": "WARNING", "MINOR": "MINOR", "MAJOR": "MAJOR", "CRITICAL": "CRITICAL" }, "timeWindow": 0, "ageLimit": 1600, "outputEventName": { "": "", "OnSet": "OnSet", "Abatement": "Abatement" }, "createClosedLoopEventId": { "Initial": "Initial", "Close": "Close" } }, "global": { "service": { "": "", "vUSP": "vUSP", "vSCP": "vSCP", "vProbes": "vProbes" } }, "policy": { "timeout": 5, "recipe": { "": "", "restart": "Restart", "rebuild": "Rebuild", "migrate": "Migrate" }, "maxRetries": "3", "retryTimeLimit": 180, "resource": { "vCTS": "vCTS", "v3CDB": "v3CDB", "vUDR": "vUDR", "vCOM": "vCOM", "vRAR": "vRAR", "vLCS": "vLCS", "vUDR-BE": "vUDR-BE", "vDBE": "vDBE" }, "parentPolicyConditions": { "Failure_Retries": "Failure: Max Retries Exceeded", "Failure_Timeout": "Failure: Time Limit Exceeded", "Failure_Exception": "Failure: Exception", "Failure": "Failure: Other", "Success": "Success" } }, "shared": { "byService": { "": { "vf": { }, "vfc": { }, "location": { }, "alarmCondition": { } }, "vSCP": { "vf": { "frwl_scp": "FW" }, "vfc": { "FW": "FW" }, "location": { "AKRNOHAH": "Akron", "ALLNTXSA": "Allen-2" }, "alarmCondition": { "authenticationFailure": "authenticationFailure", "bigipActive": "bigipActive", "bigipActiveActive": "bigipActiveActive", "bigipAgentRestart": "bigipAgentRestart", "bigipAgentShutdown": "bigipAgentShutdown", "bigipAgentStart": "bigipAgentStart", "bigipAggrReaperStateChange": "bigipAggrReaperStateChange", "bigipAomCpuTempTooHigh": "bigipAomCpuTempTooHigh", "bigipARPConflict": "bigipARPConflict", "bigipAsmBruteForceAttackDetected": "bigipAsmBruteForceAttackDetected", "bigipAsmDosAttackDetected": "bigipAsmDosAttackDetected", "bigipAsmFtpRequestBlocked": "bigipAsmFtpRequestBlocked", "bigipAsmFtpRequestViolation": "bigipAsmFtpRequestViolation", "bigipAsmRequestBlocked": "bigipAsmRequestBlocked", "bigipAsmRequestViolation": "bigipAsmRequestViolation", "bigipAsmSmtpRequestBlocked": "bigipAsmSmtpRequestBlocked", "bigipAsmSmtpRequestViolation": "bigipAsmSmtpRequestViolation", "bigipAuthFailed": "bigipAuthFailed", "bigipAvrAlertsMetricSmtp": "bigipAvrAlertsMetricSmtp", "bigipAvrAlertsMetricSnmp": "bigipAvrAlertsMetricSnmp", "bigipBladeNoPower": "bigipBladeNoPower", "bigipBladeOffline": "bigipBladeOffline", "bigipBladeTempHigh": "bigipBladeTempHigh", "bigipChassisFanBad": "bigipChassisFanBad", "bigipChassisPowerSupplyBad": "bigipChassisPowerSupplyBad", "bigipChassisTempHigh": "bigipChassisTempHigh", "bigipChmandAlertFanTrayBad": "bigipChmandAlertFanTrayBad", "bigipClusterdNoResponse": "bigipClusterdNoResponse", "bigipClusterPrimaryChanged": "bigipClusterPrimaryChanged", "bigipCompLimitExceeded": "bigipCompLimitExceeded", "bigipConfigLoaded": "bigipConfigLoaded", "bigipCpuFanSpeedBad": "bigipCpuFanSpeedBad", "bigipCpuFanSpeedLow": "bigipCpuFanSpeedLow", "bigipCpuTempHigh": "bigipCpuTempHigh", "bigipDiskPartitionGrowth": "bigipDiskPartitionGrowth", "bigipDiskPartitionWarn": "bigipDiskPartitionWarn", "bigipDnsRequestRateLimiterEngaged": "bigipDnsRequestRateLimiterEngaged", "bigipDosAttackStart": "bigipDosAttackStart", "bigipDosAttackStop": "bigipDosAttackStop", "bigipExternalLinkChange": "bigipExternalLinkChange", "bigipFeatureFailed": "bigipFeatureFailed", "bigipFeatureOnline": "bigipFeatureOnline", "bigipFipsDeviceError": "bigipFipsDeviceError", "bigipGtmAppAvail": "bigipGtmAppAvail", "bigipGtmAppNotAvail": "bigipGtmAppNotAvail", "bigipGtmAppObjAvail": "bigipGtmAppObjAvail", "bigipGtmAppObjNotAvail": "bigipGtmAppObjNotAvail", "bigipGtmBig3dSslCertExpired": "bigipGtmBig3dSslCertExpired", "bigipGtmBig3dSslCertWillExpire": "bigipGtmBig3dSslCertWillExpire", "bigipGtmBoxAvail": "bigipGtmBoxAvail", "bigipGtmBoxNotAvail": "bigipGtmBoxNotAvail", "bigipGtmDcAvail": "bigipGtmDcAvail", "bigipGtmDcDisabled": "bigipGtmDcDisabled", "bigipGtmDcEnabled": "bigipGtmDcEnabled", "bigipGtmDcNotAvail": "bigipGtmDcNotAvail", "bigipGtmJoinedGroup": "bigipGtmJoinedGroup", "bigipGtmKeyGenerationExpiration": "bigipGtmKeyGenerationExpiration", "bigipGtmKeyGenerationRollover": "bigipGtmKeyGenerationRollover", "bigipGtmLeftGroup": "bigipGtmLeftGroup", "bigipGtmLinkAvail": "bigipGtmLinkAvail", "bigipGtmLinkDisabled": "bigipGtmLinkDisabled", "bigipGtmLinkEnabled": "bigipGtmLinkEnabled", "bigipGtmLinkNotAvail": "bigipGtmLinkNotAvail", "bigipGtmPoolAvail": "bigipGtmPoolAvail", "bigipGtmPoolDisabled": "bigipGtmPoolDisabled", "bigipGtmPoolEnabled": "bigipGtmPoolEnabled", "bigipGtmPoolMbrAvail": "bigipGtmPoolMbrAvail", "bigipGtmPoolMbrDisabled": "bigipGtmPoolMbrDisabled", "bigipGtmPoolMbrEnabled": "bigipGtmPoolMbrEnabled", "bigipGtmPoolMbrNotAvail": "bigipGtmPoolMbrNotAvail", "bigipGtmPoolNotAvail": "bigipGtmPoolNotAvail", "bigipGtmProberPoolDisabled": "bigipGtmProberPoolDisabled", "bigipGtmProberPoolEnabled": "bigipGtmProberPoolEnabled", "bigipGtmProberPoolMbrDisabled": "bigipGtmProberPoolMbrDisabled", "bigipGtmProberPoolMbrEnabled": "bigipGtmProberPoolMbrEnabled", "bigipGtmProberPoolMbrStatusChange": "bigipGtmProberPoolMbrStatusChange", "bigipGtmProberPoolMbrStatusChangeReason": "bigipGtmProberPoolMbrStatusChangeReason", "bigipGtmProberPoolStatusChange": "bigipGtmProberPoolStatusChange", "bigipGtmProberPoolStatusChangeReason": "bigipGtmProberPoolStatusChangeReason", "bigipGtmRequestRateLimiterEngaged": "bigipGtmRequestRateLimiterEngaged", "bigipGtmServerAvail": "bigipGtmServerAvail", "bigipGtmServerDisabled": "bigipGtmServerDisabled", "bigipGtmServerEnabled": "bigipGtmServerEnabled", "bigipGtmServerNotAvail": "bigipGtmServerNotAvail", "bigipGtmSslCertExpired": "bigipGtmSslCertExpired", "bigipGtmSslCertWillExpire": "bigipGtmSslCertWillExpire", "bigipGtmVsAvail": "bigipGtmVsAvail", "bigipGtmVsDisabled": "bigipGtmVsDisabled", "bigipGtmVsEnabled": "bigipGtmVsEnabled", "bigipGtmVsNotAvail": "bigipGtmVsNotAvail", "bigipGtmWideIpAvail": "bigipGtmWideIpAvail", "bigipGtmWideIpDisabled": "bigipGtmWideIpDisabled", "bigipGtmWideIpEnabled": "bigipGtmWideIpEnabled", "bigipGtmWideIpNotAvail": "bigipGtmWideIpNotAvail", "bigipHardDiskFailure": "bigipHardDiskFailure", "bigipInetPortExhaustion": "bigipInetPortExhaustion", "bigipLibhalBladePoweredOff": "bigipLibhalBladePoweredOff", "bigipLibhalDiskBayRemoved": "bigipLibhalDiskBayRemoved", "bigipLibhalSensorAlarmCritical": "bigipLibhalSensorAlarmCritical", "bigipLibhalSsdLogicalDiskRemoved": "bigipLibhalSsdLogicalDiskRemoved", "bigipLibhalSsdPhysicalDiskRemoved": "bigipLibhalSsdPhysicalDiskRemoved", "bigipLicenseExpired": "bigipLicenseExpired", "bigipLicenseFailed": "bigipLicenseFailed", "bigipLogAlert": "bigipLogAlert", "bigipLogCrit": "bigipLogCrit", "bigipLogEmerg": "bigipLogEmerg", "bigipLogErr": "bigipLogErr", "bigipLogWarning": "bigipLogWarning", "bigipLtmVsAvail": "bigipLtmVsAvail", "bigipLtmVsDisabled": "bigipLtmVsDisabled", "bigipLtmVsEnabled": "bigipLtmVsEnabled", "bigipLtmVsUnavail": "bigipLtmVsUnavail", "bigipMemberRate": "bigipMemberRate", "bigipNetLinkDown": "bigipNetLinkDown", "bigipNodeDown": "bigipNodeDown", "bigipNodeRate": "bigipNodeRate", "bigipNodeUp": "bigipNodeUp", "bigipPacketRejected": "bigipPacketRejected", "bigipPsAbsent": "bigipPsAbsent", "bigipPsPowerOff": "bigipPsPowerOff", "bigipPsPowerOn": "bigipPsPowerOn", "bigipRaidDiskFailure": "bigipRaidDiskFailure", "bigipServiceDown": "bigipServiceDown", "bigipServiceUp": "bigipServiceUp", "bigipSsdMwiNearThreshold": "bigipSsdMwiNearThreshold", "bigipSsdMwiReachedThreshold": "bigipSsdMwiReachedThreshold", "bigipSslLimitExceeded": "bigipSslLimitExceeded", "bigipStandby": "bigipStandby", "bigipStandByFail": "bigipStandByFail", "bigipSystemCheckAlertCurrentHigh": "bigipSystemCheckAlertCurrentHigh", "bigipSystemCheckAlertCurrentLow": "bigipSystemCheckAlertCurrentLow", "bigipSystemCheckAlertFanSpeedLow": "bigipSystemCheckAlertFanSpeedLow", "bigipSystemCheckAlertMilliVoltageHigh": "bigipSystemCheckAlertMilliVoltageHigh", "bigipSystemCheckAlertMilliVoltageLow": "bigipSystemCheckAlertMilliVoltageLow", "bigipSystemCheckAlertPowerHigh": "bigipSystemCheckAlertPowerHigh", "bigipSystemCheckAlertPowerLow": "bigipSystemCheckAlertPowerLow", "bigipSystemCheckAlertTempHigh": "bigipSystemCheckAlertTempHigh", "bigipSystemCheckAlertVoltageHigh": "bigipSystemCheckAlertVoltageHigh", "bigipSystemCheckAlertVoltageLow": "bigipSystemCheckAlertVoltageLow", "bigipSystemShutdown": "bigipSystemShutdown", "bigipTamdAlert": "bigipTamdAlert", "bigipTrafficGroupActivate": "bigipTrafficGroupActivate", "bigipTrafficGroupActive": "bigipTrafficGroupActive", "bigipTrafficGroupDeactivate": "bigipTrafficGroupDeactivate", "bigipTrafficGroupForcedOffline": "bigipTrafficGroupForcedOffline", "bigipTrafficGroupOffline": "bigipTrafficGroupOffline", "bigipTrafficGroupStandby": "bigipTrafficGroupStandby", "bigipUnsolicitedRepliesExceededThreshold": "bigipUnsolicitedRepliesExceededThreshold", "bigipUpdateError": "bigipUpdateError", "bigipUpdatePriority": "bigipUpdatePriority", "bigipUpdateServer": "bigipUpdateServer", "bigipVcmpAlertsVcmpHBDetected": "bigipVcmpAlertsVcmpHBDetected", "bigipVcmpAlertsVcmpHBLost": "bigipVcmpAlertsVcmpHBLost", "bigipVcmpAlertsVcmpPowerOff": "bigipVcmpAlertsVcmpPowerOff", "bigipVcmpAlertsVcmpPowerOn": "bigipVcmpAlertsVcmpPowerOn", "bigipVirtualRate": "bigipVirtualRate", "coldStart": "coldStart", "emASMSigInstallComplete": "emASMSigInstallComplete", "emASMSigInstallFailed": "emASMSigInstallFailed", "emASMSigUpdateAvailable": "emASMSigUpdateAvailable", "emASMSigUpdateFailed": "emASMSigUpdateFailed", "emCertificateExpiration": "emCertificateExpiration", "emCpuUsage": "emCpuUsage", "emDeviceActiveMode": "emDeviceActiveMode", "emDeviceClockSkew": "emDeviceClockSkew", "emDeviceConfigSettingChanged": "emDeviceConfigSettingChanged", "emDeviceConfigSync": "emDeviceConfigSync", "emDeviceForcedOfflineMode": "emDeviceForcedOfflineMode", "emDeviceImpaired": "emDeviceImpaired", "emDeviceOfflineMode": "emDeviceOfflineMode", "emDeviceStandbyMode": "emDeviceStandbyMode", "emDeviceUnreachable": "emDeviceUnreachable", "emDiskUsage": "emDiskUsage", "emGatherServiceContractFailure": "emGatherServiceContractFailure", "emHaSyncFailed": "emHaSyncFailed", "emHotfixInstallComplete": "emHotfixInstallComplete", "emHotfixInstallFailed": "emHotfixInstallFailed", "emMemoryUsage": "emMemoryUsage", "emPerformanceStorageCap": "emPerformanceStorageCap", "emPerformanceStorageDays": "emPerformanceStorageDays", "emPerformanceThreshold": "emPerformanceThreshold", "emRaidDriveFailureDetected": "emRaidDriveFailureDetected", "emRaidDriveRebuildComplete": "emRaidDriveRebuildComplete", "emSchedBackupFailed": "emSchedBackupFailed", "emScheduledArchiveFailed": "emScheduledArchiveFailed", "emServiceContractExpiry": "emServiceContractExpiry", "emSoftwareInstallComplete": "emSoftwareInstallComplete", "emSoftwareInstallFailed": "emSoftwareInstallFailed", "emStatsCollectionRateCap": "emStatsCollectionRateCap", "emStatsDBConnectivityLost": "emStatsDBConnectivityLost", "emStatsDBConnectivityRestored": "emStatsDBConnectivityRestored", "fallingAlarm": "fallingAlarm", "ipv6IfStateChange": "ipv6IfStateChange", "linkDown": "linkDown", "linkUp": "linkUp", "mteEventSetFailure": "mteEventSetFailure", "mteTriggerFailure": "mteTriggerFailure", "mteTriggerFalling": "mteTriggerFalling", "mteTriggerFired": "mteTriggerFired", "mteTriggerRising": "mteTriggerRising", "netSnmpExampleHeartbeatNotification": "netSnmpExampleHeartbeatNotification", "newRoot": "newRoot", "nsNotifyRestart": "nsNotifyRestart", "nsNotifyShutdown": "nsNotifyShutdown", "nsNotifyStart": "nsNotifyStart", "risingAlarm": "risingAlarm", "schedActionFailure": "schedActionFailure", "smScriptAbort": "smScriptAbort", "smScriptException": "smScriptException", "smScriptResult": "smScriptResult", "topologyChange": "topologyChange", "ucdShutdown": "ucdShutdown", "ucdStart": "ucdStart", "warmStart": "warmStart" } }, "vUSP": { "vf": { "ctsf-xxx": "vCTS" }, "vfc": { "vCTS - CFED": "vCTS - CFED", "vCTS - Config": "vCTS - Config", "vCTS - DFED": "vCTS - DFED", "vCTS - TAFE-fsd": "vCTS - TAFE-fsd", "vCTS - GLS": "vCTS - GLS", "vCTS - XXX": "vCTS - XXX", "vCTS - Management Interface": "vCTS - Management Interface", "vCTS - SPFE-pfe": "vCTS - SPFE-pfe", "vCTS - DNS": "vCTS - DNS", "vCTS - SPFE-spd": "vCTS - SPFE-spd", "vCTS - SPFE-spt": "vCTS - SPFE-spt", "vCTS - TAFE-tas": "vCTS - TAFE-tas" }, "location": { "SNDGCA06": "San Diego(core site) A06", "SNDGCA64": "San Diego(core site) A64", "SNANTXCA": "San Antonio(core site)", "KSCYMO09": "Kansas City(core site)", "kings_mountain": "Kings Mountain(AMG)", "Secaucus": "Secaucus(AMG)", "lisle": "Lisle(AMG)", "concord": "Concord(AMG)", "houston": "Houston(AMG)", "akron": "Akron(AMG)" }, "alarmCondition": { "acrTemporaryBufferOverload": "acrTemporaryBufferOverload", "adnsExtendedTTLcaching": "adnsExtendedTTLcaching", "adnsQueryFailureCaching": "adnsQueryFailureCaching", "adnsQueueCongestion": "adnsQueueCongestion", "asdaCommunicationFailure": "asdaCommunicationFailure", "asdaRequestQueue": "asdaRequestQueue", "capacityLicenseKeyExpiration": "capacityLicenseKeyExpiration", "capacityLicenseKeyNearExpiration": "capacityLicenseKeyNearExpiration", "capacityLicenseKeyValidationError": "capacityLicenseKeyValidationError", "cardConnectionLost": "cardConnectionLost", "ccdbCommunicationFailure": "ccdbCommunicationFailure", "cpiAlrmCritical": "cpiAlrmCritical", "cpiAlrmMajor": "cpiAlrmMajor", "cpiAlrmMinor": "cpiAlrmMinor", "cpiAlrmWarning": "cpiAlrmWarning", "cpiAsrtEsc": "cpiAsrtEsc", "cpiAsrtNonEsc": "cpiAsrtNonEsc", "cpiAsrtNonEscCritical": "cpiAsrtNonEscCritical", "cpiAsrtNonEscMajor": "cpiAsrtNonEscMajor", "cpiAsrtNonEscMinor": "cpiAsrtNonEscMinor", "cpiAudErrCount": "cpiAudErrCount", "cpiAudManAct": "cpiAudManAct", "cpiAudNewEvent": "cpiAudNewEvent", "cpiCompleteRateAlarm": "cpiCompleteRateAlarm", "cpiCTS3xxFailRate": "cpiCTS3xxFailRate", "cpiCTS4xxFailRate": "cpiCTS4xxFailRate", "cpiCTS5xxFailRate": "cpiCTS5xxFailRate", "cpiCTS6xxFailRate": "cpiCTS6xxFailRate", "cpiCTSSIPRetransmitInvite": "cpiCTSSIPRetransmitInvite", "cpiCTSSIPRetransmitNonInvite": "cpiCTSSIPRetransmitNonInvite", "cpiDropMGAllocConnReq": "cpiDropMGAllocConnReq", "cpiDropRateAlarm": "cpiDropRateAlarm", "cpiExceptionService": "cpiExceptionService", "cpiFailRateAlarm": "cpiFailRateAlarm", "cpiFailSCTPFastRetransIncr": "cpiFailSCTPFastRetransIncr", "cpiFailSCTPFastRetransRate": "cpiFailSCTPFastRetransRate", "cpiFailSCTPSRTT1Incr": "cpiFailSCTPSRTT1Incr", "cpiFailSCTPSRTT2Incr": "cpiFailSCTPSRTT2Incr", "cpiFailSCTPT3RetransIncr": "cpiFailSCTPT3RetransIncr", "cpiFailSCTPT3RetransRate": "cpiFailSCTPT3RetransRate", "cpiFileSysUsage": "cpiFileSysUsage", "cpiMemAllocFail": "cpiMemAllocFail", "cpiNumOfLICDRDel": "cpiNumOfLICDRDel", "cpiReinitServiceSelf": "cpiReinitServiceSelf", "cpiSIPRetransmitInvite": "cpiSIPRetransmitInvite", "cpiSIPRetransmitNonInvite": "cpiSIPRetransmitNonInvite", "cpiSS7DropSCTPPktsRcvd": "cpiSS7DropSCTPPktsRcvd", "cpiSS7FailSCTPFastRetransRate": "cpiSS7FailSCTPFastRetransRate", "cpiStabilityAlarm": "cpiStabilityAlarm", "cpuOverload": "cpuOverload", "databaseConnectionLost": "databaseConnectionLost", "databaseReplicationLinkDown": "databaseReplicationLinkDown", "databaseSizeExhausted": "databaseSizeExhausted", "dbHighCpuUtilization": "dbHighCpuUtilization", "dbOffline": "dbOffline", "dbStatusUnexpected": "dbStatusUnexpected", "degradedResource": "degradedResource", "degrow": "degrow", "deviceServerCxnLost": "deviceServerCxnLost", "diamLinkDown": "diamLinkDown", "diamMaxClientsExceeded": "diamMaxClientsExceeded", "dnsThreshold": "dnsThreshold", "ethernetError": "ethernetError", "ethernetLinkDown": "ethernetLinkDown", "externalConnectivity": "externalConnectivity", "featureLicenseExpiration": "featureLicenseExpiration", "featureLicenseKeyNearExpiration": "featureLicenseKeyNearExpiration", "featureLockValidationError": "featureLockValidationError", "fqdnError": "fqdnError", "fru": "fru", "gatewayCongestion": "gatewayCongestion", "gatewayForcedOOS": "gatewayForcedOOS", "gatewayProvisioningError": "gatewayProvisioningError", "gatewayUnreachable": "gatewayUnreachable", "gatewayUnregistered": "gatewayUnregistered", "globalParameterNotFound": "globalParameterNotFound", "glsInvalidCellId": "glsInvalidCellId", "glsServerUnavailable": "glsServerUnavailable", "grow": "grow", "h248MessageBufferDepletion": "h248MessageBufferDepletion", "hlrSyncConnection": "hlrSyncConnection", "hlrSyncQueue": "hlrSyncQueue", "hostDown": "hostDown", "hostReset": "hostReset", "invalidGateway": "invalidGateway", "iriLinkDown": "iriLinkDown", "ldapServerConnectionLost": "ldapServerConnectionLost", "lispBufferFullExternalLIG": "lispBufferFullExternalLIG", "llcDown": "llcDown", "logicalLinkDown": "logicalLinkDown", "logicalLinkNotFound": "logicalLinkNotFound", "logRotateThreshold": "logRotateThreshold", "memoryOverload": "memoryOverload", "nodeConfigFailure": "nodeConfigFailure", "nodeGroupOOS": "nodeGroupOOS", "nodeOOS": "nodeOOS", "nonCompliantFaultGroupMemberState": "nonCompliantFaultGroupMemberState", "nonCsAddrChannelDepletion": "nonCsAddrChannelDepletion", "numberOfTuplesInUse": "numberOfTuplesInUse", "osSecInfoModificationDetected": "osSecInfoModificationDetected", "osSecInformationMissing": "osSecInformationMissing", "osSecUnexpectedInformation": "osSecUnexpectedInformation", "pdnsMySqlReplication": "pdnsMySqlReplication", "pktCorruptionDetectedViaRCCLANCheck": "pktCorruptionDetectedViaRCCLANCheck", "platformCommandFailure": "platformCommandFailure", "pmDataNotCollected": "pmDataNotCollected", "prdbConnectWithAlternateFailure": "prdbConnectWithAlternateFailure", "prdbSyncDataToAlternateFailure": "prdbSyncDataToAlternateFailure", "preAllocatedResourceOverload": "preAllocatedResourceOverload", "prifSocketError": "prifSocketError", "processDown": "processDown", "processNotStarted": "processNotStarted", "provisioningInhibitedMode": "provisioningInhibitedMode", "prsCallInstanceExceeded": "prsCallInstanceExceeded", "prsCpuOverload": "prsCpuOverload", "prsDatabaseMigrationFailure": "prsDatabaseMigrationFailure", "prsFailureToConnectWithPRDB": "prsFailureToConnectWithPRDB", "prsQueueExceeded": "prsQueueExceeded", "rccInhibitedMode": "rccInhibitedMode", "remotedbLinkDown": "remotedbLinkDown", "remoteQueryServerFailure": "remoteQueryServerFailure", "restore": "restore", "serviceCFGDataTimestampError": "serviceCFGDataTimestampError", "serviceCommCxnLost": "serviceCommCxnLost", "serviceOnewayCommunication": "serviceOnewayCommunication", "sheddingOverload": "sheddingOverload", "simxml": "simxml", "sipLinkSetMaxQuarantineList": "sipLinkSetMaxQuarantineList", "sipLinkSetUnavailable": "sipLinkSetUnavailable", "sipLinkUnavailable": "sipLinkUnavailable", "smdiSocketError": "smdiSocketError", "socketError": "socketError", "softwareAllocatedResourceOverload": "softwareAllocatedResourceOverload", "softwareComponentDown": "softwareComponentDown", "softwareComponentStandbyNotReady": "softwareComponentStandbyNotReady", "softwareLicense": "softwareLicense", "svcdegrow": "svcdegrow", "svcgrow": "svcgrow", "swVersionMismatch": "swVersionMismatch", "tftpDownloadCorrupt": "tftpDownloadCorrupt", "timeStampValueOutOfSystemRange": "timeStampValueOutOfSystemRange", "tlsInitError": "tlsInitError", "transactionHandlerBlockDepletion": "transactionHandlerBlockDepletion", "upgrade": "upgrade", "usageOfSyncTable": "usageOfSyncTable", "utHttpProxyConnectionDown": "utHttpProxyConnectionDown", "wpifSocketError": "wpifSocketError", "BackupFailure": "BackupFailure", "Configuration": "Configuration", "COTRecordTransferFailure": "COTRecordTransferFailure", "CPMUSERDATAINCONSITENCY": "CPMUSERDATAINCONSITENCY", "CPMUSERDATARESTORED": "CPMUSERDATARESTORED", "EventQueueCapacity": "EventQueueCapacity", "ICMPFailure": "ICMPFailure", "IPsecConfig": "IPsecConfig", "LinkDown": "LinkDown", "NotifyDisabled": "NotifyDisabled", "NotifyLocked": "NotifyLocked", "NumTL1MeasThresh": "NumTL1MeasThresh", "RADIUSTOLDAPFAILURE": "RADIUSTOLDAPFAILURE", "ROOTACCESSDENIED": "ROOTACCESSDENIED", "ROOTFTPVIOLATION": "ROOTFTPVIOLATION", "ROOTLOGINVIOLATION": "ROOTLOGINVIOLATION", "ROOTSSHLOGINVIOLATION": "ROOTSSHLOGINVIOLATION", "SetupAAAFailure": "SetupAAAFailure", "SNETrapOverload": "SNETrapOverload", "SNMPAuthenticationFailure": "SNMPAuthenticationFailure", "SNMPFailure": "SNMPFailure", "SUTOROOTFAILURE": "SUTOROOTFAILURE", "SYSTEMTrapOverload": "SYSTEMTrapOverload", "ThresholdCrossed": "ThresholdCrossed", "UndiscoveredObject": "UndiscoveredObject", "WriteAAAFailure": "WriteAAAFailure" } }, "Trinity": { "vf": { "aSBG": "aSBG", "nSBG": "nSBG", "tSBG": "tSBG" }, "vfc": { "pld": "PL - Payload Processor", "scr": "SC - System Controller" }, "location": { "SNDGCA64": "San Diego SAN3", "ALPRGAED": "Alpharetta PDK1", "LSLEILAA":"Lisle DPA3" }, "alarmCondition": { "A+Fallback+Operation+will+soon+be+started":"A Fallback Operation will soon be started", "BRM%2C+Auto+Export+Backup+Failed":"BRM, Auto Export Backup Failed", "BRM%2C+Scheduled+Backup+Failed":"BRM, Scheduled Backup Failed", "COM+SA%2C+AMF+Component+Cleanup+Failed":"COM SA, AMF Component Cleanup Failed", "COM+SA%2C+AMF+Component+Instantiation+Failed":"COM SA, AMF Component Instantiation Failed", "COM+SA%2C+AMF+SI+Unassigned":"COM SA, AMF SI Unassigned", "COM+SA%2C+CLM+Cluster+Node+Unavailable":"COM SA, CLM Cluster Node Unavailable", "COM+SA%2C+MDF+Detected+Model+Error":"COM SA, MDF Detected Model Error", "COM+SA%2C+Proxy+Status+of+a+Component+Changed+to+Unproxied":"COM SA, Proxy Status of a Component Changed to Unproxied", "File+Management%2C+Number+of+Files+in+FileGroup+Exceeded":"File Management, Number of Files in FileGroup Exceeded", "File+Management%2C+Max+Size+in+FileGroup+Exceeded":"File Management, Max Size in FileGroup Exceeded", "LOTC+Disk+Replication+Communication":"LOTC Disk Replication Communication", "LOTC+Disk+Replication+Consistency":"LOTC Disk Replication Consistency", "LOTC+Disk+Usage":"LOTC Disk Usage", "LOTC+memory+Usage":"LOTC memory Usage", "LOTC+Time+Synchronization":"LOTC Time Synchronization", "SBG%2C+BGF+Control+Link+Down":"SBG, BGF Control Link Down", "SBG%2C+BGF+Control+Link+Disabled":"SBG, BGF Control Link Disabled", "SBG%2C+BGF+Control+Link+Enabled":"SBG, BGF Control Link Enabled", "SBG%2C+BGF+Control+Link+Remote+Locked":"SBG, BGF Control Link Remote Locked", "SBG%2C+Charging+Data+Storage+Maximum+Records+Reached":"SBG, Charging Data Storage Maximum Records Reached", "SBG%2C+Charging+Server+Rejects+Charging+Data":"SBG, Charging Server Rejects Charging Data", "SBG%2C+Excessive+Packet+Rate+Detected+":"SBG, Excessive Packet Rate Detected ", "SBG%2C+High+Amount+of+Malformed+Packets+Received":"SBG, High Amount of Malformed Packets Received", "SBG%2C+High+Amount+of+STUN+Packets+Detected":"SBG, High Amount of STUN Packets Detected", "SBG%2C+High+Amount+of+TCP+SYN+Packets+Received":"SBG, High Amount of TCP SYN Packets Received", "SBG%2C+High+Amount+of+UDP+Packets+Received+":"SBG, High Amount of UDP Packets Received ", "SBG%2C+IP+Address+Blocked+Due+to+Excessive+Packet+Rate":"SBG, IP Address Blocked Due to Excessive Packet Rate", "SBG%2C+Lost+Connectivity+to+Diameter+Server":"SBG, Lost Connectivity to Diameter Server", "SBG%2C+Mated+Pair+out+of+Service":"SBG, Mated Pair out of Service", "SBG%2C+Network+Unavailable+for+Media+Handling":"SBG, Network Unavailable for Media Handling", "SBG%2C+Non-emergency+Call+Released+to+Free+Resources+for+Emergency+Call":"SBG, Non-emergency Call Released to Free Resources for Emergency Call", "SBG%2C+Not+Enough+Disk+Space+for+Storing+Charging+Data":"SBG, Not Enough Disk Space for Storing Charging Data", "SBG%2C+Payload+Mated+Pair+Failure":"SBG, Payload Mated Pair Failure", "SBG%2C+Payload+Processor+Failure":"SBG, Payload Processor Failure", "SBG%2C+Processor+Overloaded":"SBG, Processor Overloaded", "SBG%2C+Registered+User+Set+in+Quarantine":"SBG, Registered User Set in Quarantine", "SBG%2C+Registration+Contacts+Exceed+Configured+Threshold":"SBG, Registration Contacts Exceed Configured Threshold", "SBG%2C+Sequential+Restart+Initiated":"SBG, Sequential Restart Initiated", "SBG%2C+SIP+Abuse+Detected":"SBG, SIP Abuse Detected", "SBG%2C+SIP+Network+Locked":"SBG, SIP Network Locked", "SBG%2C+SIP+Next+Hop+Reachable":"SBG, SIP Next Hop Reachable", "SBG%2C+SIP+Next+Hop+Unreachable":"SBG, SIP Next Hop Unreachable", "SBG%2C+SIP+Request+Rejected+by+Network+Throttling":"SBG, SIP Request Rejected by Network Throttling", "SBG%2C+TLS+Certificate+Imported":"SBG, TLS Certificate Imported", "SBG%2C+Trace+Recording+Session+Number+Limit+Reached":"SBG, Trace Recording Session Number Limit Reached", "SBG%2C+Trace+Session+Deactivated":"SBG, Trace Session Deactivated", "SBG%2C+Trace+Session+Times+Out":"SBG, Trace Session Times Out", "SBG%2C+Unknown+Media+Type+or+Payload+Type":"SBG, Unknown Media Type or Payload Type" } }, "vProbes": { "vf": { }, "vfc": { }, "location": { }, "alarmCondition": { } } } } } +globalPropsPartial={"collector": {"topicPublishes": {"DCAE-COLLECTOR-UCSNMP": "DCAE-COLLECTOR-UCSNMP", "GFP-IP--SNMP-TRAPS" : "GFP-IP--SNMP-TRAPS" } }, "string_match": { "topicPublishes": { "DCAE-CL-EVENT": "DCAE-CL-EVENT" }, "aaiMatchingFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "ProvStatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "aaiSendFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "Provstatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "eventSourceType": { "f5BigIP": "f5BigIP", "vSBG_Alarms": "vSBG_Alarms", "vCTS_Alarms": "vCTS_Alarms" }, "eventSeverity": { "NORMAL": "NORMAL", "not-NORMAL": "not-NORMAL", "WARNING": "WARNING", "MINOR": "MINOR", "MAJOR": "MAJOR", "CRITICAL": "CRITICAL" }, "timeWindow": 0, "ageLimit": 1600, "outputEventName": { "": "", "OnSet": "OnSet", "Abatement": "Abatement" }, "createClosedLoopEventId": { "Initial": "Initial", "Close": "Close" } }, "global": { "service": { "": "", "vUSP": "vUSP", "vSCP": "vSCP", "vProbes": "vProbes" } }, "policy": { "timeout": 5, "recipe": { "": "", "restart": "Restart", "rebuild": "Rebuild", "migrate": "Migrate" }, "maxRetries": "3", "retryTimeLimit": 180, "resource": { "vCTS": "vCTS", "v3CDB": "v3CDB", "vUDR": "vUDR", "vCOM": "vCOM", "vRAR": "vRAR", "vLCS": "vLCS", "vUDR-BE": "vUDR-BE", "vDBE": "vDBE" }, "parentPolicyConditions": { "Failure_Retries": "Failure: Max Retries Exceeded", "Failure_Timeout": "Failure: Time Limit Exceeded", "Failure_Exception": "Failure: Exception", "Failure": "Failure: Other", "Success": "Success" } } } +globalPropsTest={"collector": {"topicPublishes": {"DCAE-COLLECTOR-UCSNMP": "DCAE-COLLECTOR-UCSNMP", "GFP-IP--SNMP-TRAPS" : "GFP-IP--SNMP-TRAPS" } }, "string_match": { "topicPublishes": { "DCAE-CL-EVENT": "DCAE-CL-EVENT" }, "aaiMatchingFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "ProvStatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "aaiSendFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "Provstatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "eventSourceType": { "f5BigIP": "f5BigIP", "vSBG_Alarms": "vSBG_Alarms", "vCTS_Alarms": "vCTS_Alarms" }, "eventSeverity": { "NORMAL": "NORMAL", "not-NORMAL": "not-NORMAL", "WARNING": "WARNING", "MINOR": "MINOR", "MAJOR": "MAJOR", "CRITICAL": "CRITICAL" }, "timeWindow": 0, "ageLimit": 1600, "outputEventName": { "": "", "OnSet": "OnSet", "Abatement": "Abatement" }, "createClosedLoopEventId": { "Initial": "Initial", "Close": "Close" } }, "global": { "service": { "": "", "vUSP": "vUSP", "vSCP": "vSCP", "vProbes": "vProbes" } }, "policy": { "timeout": 5, "recipe": { "": "", "restart": "Restart", "rebuild": "Rebuild", "migrate": "Migrate" }, "maxRetries": "3", "retryTimeLimit": 180, "resource": { "vCTS": "vCTS", "v3CDB": "v3CDB", "vUDR": "vUDR", "vCOM": "vCOM", "vRAR": "vRAR", "vLCS": "vLCS", "vUDR-BE": "vUDR-BE", "vDBE": "vDBE" }, "parentPolicyConditions": { "Failure_Retries": "Failure: Max Retries Exceeded", "Failure_Timeout": "Failure: Time Limit Exceeded", "Failure_Exception": "Failure: Exception", "Failure": "Failure: Other", "Success": "Success" } }, "shared": { "byService": { "": { "vf": { }, "vfc": { }, "location": { }, "alarmCondition": { } }, "vSCP": { "vf": { "frwl_scp": "FW" }, "vfc": { "FW": "FW" }, "location": { "AKRNOHAH": "Akron", "ALLNTXSA": "Allen-2" }, "alarmCondition": { "authenticationFailure": "authenticationFailure", "bigipActive": "bigipActive", "bigipActiveActive": "bigipActiveActive", "bigipAgentRestart": "bigipAgentRestart", "bigipAgentShutdown": "bigipAgentShutdown", "bigipAgentStart": "bigipAgentStart", "bigipAggrReaperStateChange": "bigipAggrReaperStateChange", "bigipAomCpuTempTooHigh": "bigipAomCpuTempTooHigh", "bigipARPConflict": "bigipARPConflict", "bigipAsmBruteForceAttackDetected": "bigipAsmBruteForceAttackDetected", "bigipAsmDosAttackDetected": "bigipAsmDosAttackDetected", "bigipAsmFtpRequestBlocked": "bigipAsmFtpRequestBlocked", "bigipAsmFtpRequestViolation": "bigipAsmFtpRequestViolation", "bigipAsmRequestBlocked": "bigipAsmRequestBlocked", "bigipAsmRequestViolation": "bigipAsmRequestViolation", "bigipAsmSmtpRequestBlocked": "bigipAsmSmtpRequestBlocked", "bigipAsmSmtpRequestViolation": "bigipAsmSmtpRequestViolation", "bigipAuthFailed": "bigipAuthFailed", "bigipAvrAlertsMetricSmtp": "bigipAvrAlertsMetricSmtp", "bigipAvrAlertsMetricSnmp": "bigipAvrAlertsMetricSnmp", "bigipBladeNoPower": "bigipBladeNoPower", "bigipBladeOffline": "bigipBladeOffline", "bigipBladeTempHigh": "bigipBladeTempHigh", "bigipChassisFanBad": "bigipChassisFanBad", "bigipChassisPowerSupplyBad": "bigipChassisPowerSupplyBad", "bigipChassisTempHigh": "bigipChassisTempHigh", "bigipChmandAlertFanTrayBad": "bigipChmandAlertFanTrayBad", "bigipClusterdNoResponse": "bigipClusterdNoResponse", "bigipClusterPrimaryChanged": "bigipClusterPrimaryChanged", "bigipCompLimitExceeded": "bigipCompLimitExceeded", "bigipConfigLoaded": "bigipConfigLoaded", "bigipCpuFanSpeedBad": "bigipCpuFanSpeedBad", "bigipCpuFanSpeedLow": "bigipCpuFanSpeedLow", "bigipCpuTempHigh": "bigipCpuTempHigh", "bigipDiskPartitionGrowth": "bigipDiskPartitionGrowth", "bigipDiskPartitionWarn": "bigipDiskPartitionWarn", "bigipDnsRequestRateLimiterEngaged": "bigipDnsRequestRateLimiterEngaged", "bigipDosAttackStart": "bigipDosAttackStart", "bigipDosAttackStop": "bigipDosAttackStop", "bigipExternalLinkChange": "bigipExternalLinkChange", "bigipFeatureFailed": "bigipFeatureFailed", "bigipFeatureOnline": "bigipFeatureOnline", "bigipFipsDeviceError": "bigipFipsDeviceError", "bigipGtmAppAvail": "bigipGtmAppAvail", "bigipGtmAppNotAvail": "bigipGtmAppNotAvail", "bigipGtmAppObjAvail": "bigipGtmAppObjAvail", "bigipGtmAppObjNotAvail": "bigipGtmAppObjNotAvail", "bigipGtmBig3dSslCertExpired": "bigipGtmBig3dSslCertExpired", "bigipGtmBig3dSslCertWillExpire": "bigipGtmBig3dSslCertWillExpire", "bigipGtmBoxAvail": "bigipGtmBoxAvail", "bigipGtmBoxNotAvail": "bigipGtmBoxNotAvail", "bigipGtmDcAvail": "bigipGtmDcAvail", "bigipGtmDcDisabled": "bigipGtmDcDisabled", "bigipGtmDcEnabled": "bigipGtmDcEnabled", "bigipGtmDcNotAvail": "bigipGtmDcNotAvail", "bigipGtmJoinedGroup": "bigipGtmJoinedGroup", "bigipGtmKeyGenerationExpiration": "bigipGtmKeyGenerationExpiration", "bigipGtmKeyGenerationRollover": "bigipGtmKeyGenerationRollover", "bigipGtmLeftGroup": "bigipGtmLeftGroup", "bigipGtmLinkAvail": "bigipGtmLinkAvail", "bigipGtmLinkDisabled": "bigipGtmLinkDisabled", "bigipGtmLinkEnabled": "bigipGtmLinkEnabled", "bigipGtmLinkNotAvail": "bigipGtmLinkNotAvail", "bigipGtmPoolAvail": "bigipGtmPoolAvail", "bigipGtmPoolDisabled": "bigipGtmPoolDisabled", "bigipGtmPoolEnabled": "bigipGtmPoolEnabled", "bigipGtmPoolMbrAvail": "bigipGtmPoolMbrAvail", "bigipGtmPoolMbrDisabled": "bigipGtmPoolMbrDisabled", "bigipGtmPoolMbrEnabled": "bigipGtmPoolMbrEnabled", "bigipGtmPoolMbrNotAvail": "bigipGtmPoolMbrNotAvail", "bigipGtmPoolNotAvail": "bigipGtmPoolNotAvail", "bigipGtmProberPoolDisabled": "bigipGtmProberPoolDisabled", "bigipGtmProberPoolEnabled": "bigipGtmProberPoolEnabled", "bigipGtmProberPoolMbrDisabled": "bigipGtmProberPoolMbrDisabled", "bigipGtmProberPoolMbrEnabled": "bigipGtmProberPoolMbrEnabled", "bigipGtmProberPoolMbrStatusChange": "bigipGtmProberPoolMbrStatusChange", "bigipGtmProberPoolMbrStatusChangeReason": "bigipGtmProberPoolMbrStatusChangeReason", "bigipGtmProberPoolStatusChange": "bigipGtmProberPoolStatusChange", "bigipGtmProberPoolStatusChangeReason": "bigipGtmProberPoolStatusChangeReason", "bigipGtmRequestRateLimiterEngaged": "bigipGtmRequestRateLimiterEngaged", "bigipGtmServerAvail": "bigipGtmServerAvail", "bigipGtmServerDisabled": "bigipGtmServerDisabled", "bigipGtmServerEnabled": "bigipGtmServerEnabled", "bigipGtmServerNotAvail": "bigipGtmServerNotAvail", "bigipGtmSslCertExpired": "bigipGtmSslCertExpired", "bigipGtmSslCertWillExpire": "bigipGtmSslCertWillExpire", "bigipGtmVsAvail": "bigipGtmVsAvail", "bigipGtmVsDisabled": "bigipGtmVsDisabled", "bigipGtmVsEnabled": "bigipGtmVsEnabled", "bigipGtmVsNotAvail": "bigipGtmVsNotAvail", "bigipGtmWideIpAvail": "bigipGtmWideIpAvail", "bigipGtmWideIpDisabled": "bigipGtmWideIpDisabled", "bigipGtmWideIpEnabled": "bigipGtmWideIpEnabled", "bigipGtmWideIpNotAvail": "bigipGtmWideIpNotAvail", "bigipHardDiskFailure": "bigipHardDiskFailure", "bigipInetPortExhaustion": "bigipInetPortExhaustion", "bigipLibhalBladePoweredOff": "bigipLibhalBladePoweredOff", "bigipLibhalDiskBayRemoved": "bigipLibhalDiskBayRemoved", "bigipLibhalSensorAlarmCritical": "bigipLibhalSensorAlarmCritical", "bigipLibhalSsdLogicalDiskRemoved": "bigipLibhalSsdLogicalDiskRemoved", "bigipLibhalSsdPhysicalDiskRemoved": "bigipLibhalSsdPhysicalDiskRemoved", "bigipLicenseExpired": "bigipLicenseExpired", "bigipLicenseFailed": "bigipLicenseFailed", "bigipLogAlert": "bigipLogAlert", "bigipLogCrit": "bigipLogCrit", "bigipLogEmerg": "bigipLogEmerg", "bigipLogErr": "bigipLogErr", "bigipLogWarning": "bigipLogWarning", "bigipLtmVsAvail": "bigipLtmVsAvail", "bigipLtmVsDisabled": "bigipLtmVsDisabled", "bigipLtmVsEnabled": "bigipLtmVsEnabled", "bigipLtmVsUnavail": "bigipLtmVsUnavail", "bigipMemberRate": "bigipMemberRate", "bigipNetLinkDown": "bigipNetLinkDown", "bigipNodeDown": "bigipNodeDown", "bigipNodeRate": "bigipNodeRate", "bigipNodeUp": "bigipNodeUp", "bigipPacketRejected": "bigipPacketRejected", "bigipPsAbsent": "bigipPsAbsent", "bigipPsPowerOff": "bigipPsPowerOff", "bigipPsPowerOn": "bigipPsPowerOn", "bigipRaidDiskFailure": "bigipRaidDiskFailure", "bigipServiceDown": "bigipServiceDown", "bigipServiceUp": "bigipServiceUp", "bigipSsdMwiNearThreshold": "bigipSsdMwiNearThreshold", "bigipSsdMwiReachedThreshold": "bigipSsdMwiReachedThreshold", "bigipSslLimitExceeded": "bigipSslLimitExceeded", "bigipStandby": "bigipStandby", "bigipStandByFail": "bigipStandByFail", "bigipSystemCheckAlertCurrentHigh": "bigipSystemCheckAlertCurrentHigh", "bigipSystemCheckAlertCurrentLow": "bigipSystemCheckAlertCurrentLow", "bigipSystemCheckAlertFanSpeedLow": "bigipSystemCheckAlertFanSpeedLow", "bigipSystemCheckAlertMilliVoltageHigh": "bigipSystemCheckAlertMilliVoltageHigh", "bigipSystemCheckAlertMilliVoltageLow": "bigipSystemCheckAlertMilliVoltageLow", "bigipSystemCheckAlertPowerHigh": "bigipSystemCheckAlertPowerHigh", "bigipSystemCheckAlertPowerLow": "bigipSystemCheckAlertPowerLow", "bigipSystemCheckAlertTempHigh": "bigipSystemCheckAlertTempHigh", "bigipSystemCheckAlertVoltageHigh": "bigipSystemCheckAlertVoltageHigh", "bigipSystemCheckAlertVoltageLow": "bigipSystemCheckAlertVoltageLow", "bigipSystemShutdown": "bigipSystemShutdown", "bigipTamdAlert": "bigipTamdAlert", "bigipTrafficGroupActivate": "bigipTrafficGroupActivate", "bigipTrafficGroupActive": "bigipTrafficGroupActive", "bigipTrafficGroupDeactivate": "bigipTrafficGroupDeactivate", "bigipTrafficGroupForcedOffline": "bigipTrafficGroupForcedOffline", "bigipTrafficGroupOffline": "bigipTrafficGroupOffline", "bigipTrafficGroupStandby": "bigipTrafficGroupStandby", "bigipUnsolicitedRepliesExceededThreshold": "bigipUnsolicitedRepliesExceededThreshold", "bigipUpdateError": "bigipUpdateError", "bigipUpdatePriority": "bigipUpdatePriority", "bigipUpdateServer": "bigipUpdateServer", "bigipVcmpAlertsVcmpHBDetected": "bigipVcmpAlertsVcmpHBDetected", "bigipVcmpAlertsVcmpHBLost": "bigipVcmpAlertsVcmpHBLost", "bigipVcmpAlertsVcmpPowerOff": "bigipVcmpAlertsVcmpPowerOff", "bigipVcmpAlertsVcmpPowerOn": "bigipVcmpAlertsVcmpPowerOn", "bigipVirtualRate": "bigipVirtualRate", "coldStart": "coldStart", "emASMSigInstallComplete": "emASMSigInstallComplete", "emASMSigInstallFailed": "emASMSigInstallFailed", "emASMSigUpdateAvailable": "emASMSigUpdateAvailable", "emASMSigUpdateFailed": "emASMSigUpdateFailed", "emCertificateExpiration": "emCertificateExpiration", "emCpuUsage": "emCpuUsage", "emDeviceActiveMode": "emDeviceActiveMode", "emDeviceClockSkew": "emDeviceClockSkew", "emDeviceConfigSettingChanged": "emDeviceConfigSettingChanged", "emDeviceConfigSync": "emDeviceConfigSync", "emDeviceForcedOfflineMode": "emDeviceForcedOfflineMode", "emDeviceImpaired": "emDeviceImpaired", "emDeviceOfflineMode": "emDeviceOfflineMode", "emDeviceStandbyMode": "emDeviceStandbyMode", "emDeviceUnreachable": "emDeviceUnreachable", "emDiskUsage": "emDiskUsage", "emGatherServiceContractFailure": "emGatherServiceContractFailure", "emHaSyncFailed": "emHaSyncFailed", "emHotfixInstallComplete": "emHotfixInstallComplete", "emHotfixInstallFailed": "emHotfixInstallFailed", "emMemoryUsage": "emMemoryUsage", "emPerformanceStorageCap": "emPerformanceStorageCap", "emPerformanceStorageDays": "emPerformanceStorageDays", "emPerformanceThreshold": "emPerformanceThreshold", "emRaidDriveFailureDetected": "emRaidDriveFailureDetected", "emRaidDriveRebuildComplete": "emRaidDriveRebuildComplete", "emSchedBackupFailed": "emSchedBackupFailed", "emScheduledArchiveFailed": "emScheduledArchiveFailed", "emServiceContractExpiry": "emServiceContractExpiry", "emSoftwareInstallComplete": "emSoftwareInstallComplete", "emSoftwareInstallFailed": "emSoftwareInstallFailed", "emStatsCollectionRateCap": "emStatsCollectionRateCap", "emStatsDBConnectivityLost": "emStatsDBConnectivityLost", "emStatsDBConnectivityRestored": "emStatsDBConnectivityRestored", "fallingAlarm": "fallingAlarm", "ipv6IfStateChange": "ipv6IfStateChange", "linkDown": "linkDown", "linkUp": "linkUp", "mteEventSetFailure": "mteEventSetFailure", "mteTriggerFailure": "mteTriggerFailure", "mteTriggerFalling": "mteTriggerFalling", "mteTriggerFired": "mteTriggerFired", "mteTriggerRising": "mteTriggerRising", "netSnmpExampleHeartbeatNotification": "netSnmpExampleHeartbeatNotification", "newRoot": "newRoot", "nsNotifyRestart": "nsNotifyRestart", "nsNotifyShutdown": "nsNotifyShutdown", "nsNotifyStart": "nsNotifyStart", "risingAlarm": "risingAlarm", "schedActionFailure": "schedActionFailure", "smScriptAbort": "smScriptAbort", "smScriptException": "smScriptException", "smScriptResult": "smScriptResult", "topologyChange": "topologyChange", "ucdShutdown": "ucdShutdown", "ucdStart": "ucdStart", "warmStart": "warmStart" } }, "vUSP": { "vf": { "ctsf-xxx": "vCTS" }, "vfc": { "vCTS - CFED": "vCTS - CFED", "vCTS - Config": "vCTS - Config", "vCTS - DFED": "vCTS - DFED", "vCTS - TAFE-fsd": "vCTS - TAFE-fsd", "vCTS - GLS": "vCTS - GLS", "vCTS - XXX": "vCTS - XXX", "vCTS - Management Interface": "vCTS - Management Interface", "vCTS - SPFE-pfe": "vCTS - SPFE-pfe", "vCTS - DNS": "vCTS - DNS", "vCTS - SPFE-spd": "vCTS - SPFE-spd", "vCTS - SPFE-spt": "vCTS - SPFE-spt", "vCTS - TAFE-tas": "vCTS - TAFE-tas" }, "location": { "SNDGCA06": "San Diego(core site) A06", "SNDGCA64": "San Diego(core site) A64", "SNANTXCA": "San Antonio(core site)", "KSCYMO09": "Kansas City(core site)", "kings_mountain": "Kings Mountain(AMG)", "Secaucus": "Secaucus(AMG)", "lisle": "Lisle(AMG)", "concord": "Concord(AMG)", "houston": "Houston(AMG)", "akron": "Akron(AMG)" }, "alarmCondition": { "acrTemporaryBufferOverload": "acrTemporaryBufferOverload", "adnsExtendedTTLcaching": "adnsExtendedTTLcaching", "adnsQueryFailureCaching": "adnsQueryFailureCaching", "adnsQueueCongestion": "adnsQueueCongestion", "asdaCommunicationFailure": "asdaCommunicationFailure", "asdaRequestQueue": "asdaRequestQueue", "capacityLicenseKeyExpiration": "capacityLicenseKeyExpiration", "capacityLicenseKeyNearExpiration": "capacityLicenseKeyNearExpiration", "capacityLicenseKeyValidationError": "capacityLicenseKeyValidationError", "cardConnectionLost": "cardConnectionLost", "ccdbCommunicationFailure": "ccdbCommunicationFailure", "cpiAlrmCritical": "cpiAlrmCritical", "cpiAlrmMajor": "cpiAlrmMajor", "cpiAlrmMinor": "cpiAlrmMinor", "cpiAlrmWarning": "cpiAlrmWarning", "cpiAsrtEsc": "cpiAsrtEsc", "cpiAsrtNonEsc": "cpiAsrtNonEsc", "cpiAsrtNonEscCritical": "cpiAsrtNonEscCritical", "cpiAsrtNonEscMajor": "cpiAsrtNonEscMajor", "cpiAsrtNonEscMinor": "cpiAsrtNonEscMinor", "cpiAudErrCount": "cpiAudErrCount", "cpiAudManAct": "cpiAudManAct", "cpiAudNewEvent": "cpiAudNewEvent", "cpiCompleteRateAlarm": "cpiCompleteRateAlarm", "cpiCTS3xxFailRate": "cpiCTS3xxFailRate", "cpiCTS4xxFailRate": "cpiCTS4xxFailRate", "cpiCTS5xxFailRate": "cpiCTS5xxFailRate", "cpiCTS6xxFailRate": "cpiCTS6xxFailRate", "cpiCTSSIPRetransmitInvite": "cpiCTSSIPRetransmitInvite", "cpiCTSSIPRetransmitNonInvite": "cpiCTSSIPRetransmitNonInvite", "cpiDropMGAllocConnReq": "cpiDropMGAllocConnReq", "cpiDropRateAlarm": "cpiDropRateAlarm", "cpiExceptionService": "cpiExceptionService", "cpiFailRateAlarm": "cpiFailRateAlarm", "cpiFailSCTPFastRetransIncr": "cpiFailSCTPFastRetransIncr", "cpiFailSCTPFastRetransRate": "cpiFailSCTPFastRetransRate", "cpiFailSCTPSRTT1Incr": "cpiFailSCTPSRTT1Incr", "cpiFailSCTPSRTT2Incr": "cpiFailSCTPSRTT2Incr", "cpiFailSCTPT3RetransIncr": "cpiFailSCTPT3RetransIncr", "cpiFailSCTPT3RetransRate": "cpiFailSCTPT3RetransRate", "cpiFileSysUsage": "cpiFileSysUsage", "cpiMemAllocFail": "cpiMemAllocFail", "cpiNumOfLICDRDel": "cpiNumOfLICDRDel", "cpiReinitServiceSelf": "cpiReinitServiceSelf", "cpiSIPRetransmitInvite": "cpiSIPRetransmitInvite", "cpiSIPRetransmitNonInvite": "cpiSIPRetransmitNonInvite", "cpiSS7DropSCTPPktsRcvd": "cpiSS7DropSCTPPktsRcvd", "cpiSS7FailSCTPFastRetransRate": "cpiSS7FailSCTPFastRetransRate", "cpiStabilityAlarm": "cpiStabilityAlarm", "cpuOverload": "cpuOverload", "databaseConnectionLost": "databaseConnectionLost", "databaseReplicationLinkDown": "databaseReplicationLinkDown", "databaseSizeExhausted": "databaseSizeExhausted", "dbHighCpuUtilization": "dbHighCpuUtilization", "dbOffline": "dbOffline", "dbStatusUnexpected": "dbStatusUnexpected", "degradedResource": "degradedResource", "degrow": "degrow", "deviceServerCxnLost": "deviceServerCxnLost", "diamLinkDown": "diamLinkDown", "diamMaxClientsExceeded": "diamMaxClientsExceeded", "dnsThreshold": "dnsThreshold", "ethernetError": "ethernetError", "ethernetLinkDown": "ethernetLinkDown", "externalConnectivity": "externalConnectivity", "featureLicenseExpiration": "featureLicenseExpiration", "featureLicenseKeyNearExpiration": "featureLicenseKeyNearExpiration", "featureLockValidationError": "featureLockValidationError", "fqdnError": "fqdnError", "fru": "fru", "gatewayCongestion": "gatewayCongestion", "gatewayForcedOOS": "gatewayForcedOOS", "gatewayProvisioningError": "gatewayProvisioningError", "gatewayUnreachable": "gatewayUnreachable", "gatewayUnregistered": "gatewayUnregistered", "globalParameterNotFound": "globalParameterNotFound", "glsInvalidCellId": "glsInvalidCellId", "glsServerUnavailable": "glsServerUnavailable", "grow": "grow", "h248MessageBufferDepletion": "h248MessageBufferDepletion", "hlrSyncConnection": "hlrSyncConnection", "hlrSyncQueue": "hlrSyncQueue", "hostDown": "hostDown", "hostReset": "hostReset", "invalidGateway": "invalidGateway", "iriLinkDown": "iriLinkDown", "ldapServerConnectionLost": "ldapServerConnectionLost", "lispBufferFullExternalLIG": "lispBufferFullExternalLIG", "llcDown": "llcDown", "logicalLinkDown": "logicalLinkDown", "logicalLinkNotFound": "logicalLinkNotFound", "logRotateThreshold": "logRotateThreshold", "memoryOverload": "memoryOverload", "nodeConfigFailure": "nodeConfigFailure", "nodeGroupOOS": "nodeGroupOOS", "nodeOOS": "nodeOOS", "nonCompliantFaultGroupMemberState": "nonCompliantFaultGroupMemberState", "nonCsAddrChannelDepletion": "nonCsAddrChannelDepletion", "numberOfTuplesInUse": "numberOfTuplesInUse", "osSecInfoModificationDetected": "osSecInfoModificationDetected", "osSecInformationMissing": "osSecInformationMissing", "osSecUnexpectedInformation": "osSecUnexpectedInformation", "pdnsMySqlReplication": "pdnsMySqlReplication", "pktCorruptionDetectedViaRCCLANCheck": "pktCorruptionDetectedViaRCCLANCheck", "platformCommandFailure": "platformCommandFailure", "pmDataNotCollected": "pmDataNotCollected", "prdbConnectWithAlternateFailure": "prdbConnectWithAlternateFailure", "prdbSyncDataToAlternateFailure": "prdbSyncDataToAlternateFailure", "preAllocatedResourceOverload": "preAllocatedResourceOverload", "prifSocketError": "prifSocketError", "processDown": "processDown", "processNotStarted": "processNotStarted", "provisioningInhibitedMode": "provisioningInhibitedMode", "prsCallInstanceExceeded": "prsCallInstanceExceeded", "prsCpuOverload": "prsCpuOverload", "prsDatabaseMigrationFailure": "prsDatabaseMigrationFailure", "prsFailureToConnectWithPRDB": "prsFailureToConnectWithPRDB", "prsQueueExceeded": "prsQueueExceeded", "rccInhibitedMode": "rccInhibitedMode", "remotedbLinkDown": "remotedbLinkDown", "remoteQueryServerFailure": "remoteQueryServerFailure", "restore": "restore", "serviceCFGDataTimestampError": "serviceCFGDataTimestampError", "serviceCommCxnLost": "serviceCommCxnLost", "serviceOnewayCommunication": "serviceOnewayCommunication", "sheddingOverload": "sheddingOverload", "simxml": "simxml", "sipLinkSetMaxQuarantineList": "sipLinkSetMaxQuarantineList", "sipLinkSetUnavailable": "sipLinkSetUnavailable", "sipLinkUnavailable": "sipLinkUnavailable", "smdiSocketError": "smdiSocketError", "socketError": "socketError", "softwareAllocatedResourceOverload": "softwareAllocatedResourceOverload", "softwareComponentDown": "softwareComponentDown", "softwareComponentStandbyNotReady": "softwareComponentStandbyNotReady", "softwareLicense": "softwareLicense", "svcdegrow": "svcdegrow", "svcgrow": "svcgrow", "swVersionMismatch": "swVersionMismatch", "tftpDownloadCorrupt": "tftpDownloadCorrupt", "timeStampValueOutOfSystemRange": "timeStampValueOutOfSystemRange", "tlsInitError": "tlsInitError", "transactionHandlerBlockDepletion": "transactionHandlerBlockDepletion", "upgrade": "upgrade", "usageOfSyncTable": "usageOfSyncTable", "utHttpProxyConnectionDown": "utHttpProxyConnectionDown", "wpifSocketError": "wpifSocketError", "BackupFailure": "BackupFailure", "Configuration": "Configuration", "COTRecordTransferFailure": "COTRecordTransferFailure", "CPMUSERDATAINCONSITENCY": "CPMUSERDATAINCONSITENCY", "CPMUSERDATARESTORED": "CPMUSERDATARESTORED", "EventQueueCapacity": "EventQueueCapacity", "ICMPFailure": "ICMPFailure", "IPsecConfig": "IPsecConfig", "LinkDown": "LinkDown", "NotifyDisabled": "NotifyDisabled", "NotifyLocked": "NotifyLocked", "NumTL1MeasThresh": "NumTL1MeasThresh", "RADIUSTOLDAPFAILURE": "RADIUSTOLDAPFAILURE", "ROOTACCESSDENIED": "ROOTACCESSDENIED", "ROOTFTPVIOLATION": "ROOTFTPVIOLATION", "ROOTLOGINVIOLATION": "ROOTLOGINVIOLATION", "ROOTSSHLOGINVIOLATION": "ROOTSSHLOGINVIOLATION", "SetupAAAFailure": "SetupAAAFailure", "SNETrapOverload": "SNETrapOverload", "SNMPAuthenticationFailure": "SNMPAuthenticationFailure", "SNMPFailure": "SNMPFailure", "SUTOROOTFAILURE": "SUTOROOTFAILURE", "SYSTEMTrapOverload": "SYSTEMTrapOverload", "ThresholdCrossed": "ThresholdCrossed", "UndiscoveredObject": "UndiscoveredObject", "WriteAAAFailure": "WriteAAAFailure" } }, "Trinity": { "vf": { "aSBG": "aSBG", "nSBG": "nSBG", "tSBG": "tSBG" }, "vfc": { "pld": "PL - Payload Processor", "scr": "SC - System Controller" }, "location": { "SNDGCA64": "San Diego SAN3", "ALPRGAED": "Alpharetta PDK1", "LSLEILAA":"Lisle DPA3" }, "alarmCondition": { "A+Fallback+Operation+will+soon+be+started":"A Fallback Operation will soon be started", "BRM%2C+Auto+Export+Backup+Failed":"BRM, Auto Export Backup Failed", "BRM%2C+Scheduled+Backup+Failed":"BRM, Scheduled Backup Failed", "COM+SA%2C+AMF+Component+Cleanup+Failed":"COM SA, AMF Component Cleanup Failed", "COM+SA%2C+AMF+Component+Instantiation+Failed":"COM SA, AMF Component Instantiation Failed", "COM+SA%2C+AMF+SI+Unassigned":"COM SA, AMF SI Unassigned", "COM+SA%2C+CLM+Cluster+Node+Unavailable":"COM SA, CLM Cluster Node Unavailable", "COM+SA%2C+MDF+Detected+Model+Error":"COM SA, MDF Detected Model Error", "COM+SA%2C+Proxy+Status+of+a+Component+Changed+to+Unproxied":"COM SA, Proxy Status of a Component Changed to Unproxied", "File+Management%2C+Number+of+Files+in+FileGroup+Exceeded":"File Management, Number of Files in FileGroup Exceeded", "File+Management%2C+Max+Size+in+FileGroup+Exceeded":"File Management, Max Size in FileGroup Exceeded", "LOTC+Disk+Replication+Communication":"LOTC Disk Replication Communication", "LOTC+Disk+Replication+Consistency":"LOTC Disk Replication Consistency", "LOTC+Disk+Usage":"LOTC Disk Usage", "LOTC+memory+Usage":"LOTC memory Usage", "LOTC+Time+Synchronization":"LOTC Time Synchronization", "SBG%2C+BGF+Control+Link+Down":"SBG, BGF Control Link Down", "SBG%2C+BGF+Control+Link+Disabled":"SBG, BGF Control Link Disabled", "SBG%2C+BGF+Control+Link+Enabled":"SBG, BGF Control Link Enabled", "SBG%2C+BGF+Control+Link+Remote+Locked":"SBG, BGF Control Link Remote Locked", "SBG%2C+Charging+Data+Storage+Maximum+Records+Reached":"SBG, Charging Data Storage Maximum Records Reached", "SBG%2C+Charging+Server+Rejects+Charging+Data":"SBG, Charging Server Rejects Charging Data", "SBG%2C+Excessive+Packet+Rate+Detected+":"SBG, Excessive Packet Rate Detected ", "SBG%2C+High+Amount+of+Malformed+Packets+Received":"SBG, High Amount of Malformed Packets Received", "SBG%2C+High+Amount+of+STUN+Packets+Detected":"SBG, High Amount of STUN Packets Detected", "SBG%2C+High+Amount+of+TCP+SYN+Packets+Received":"SBG, High Amount of TCP SYN Packets Received", "SBG%2C+High+Amount+of+UDP+Packets+Received+":"SBG, High Amount of UDP Packets Received ", "SBG%2C+IP+Address+Blocked+Due+to+Excessive+Packet+Rate":"SBG, IP Address Blocked Due to Excessive Packet Rate", "SBG%2C+Lost+Connectivity+to+Diameter+Server":"SBG, Lost Connectivity to Diameter Server", "SBG%2C+Mated+Pair+out+of+Service":"SBG, Mated Pair out of Service", "SBG%2C+Network+Unavailable+for+Media+Handling":"SBG, Network Unavailable for Media Handling", "SBG%2C+Non-emergency+Call+Released+to+Free+Resources+for+Emergency+Call":"SBG, Non-emergency Call Released to Free Resources for Emergency Call", "SBG%2C+Not+Enough+Disk+Space+for+Storing+Charging+Data":"SBG, Not Enough Disk Space for Storing Charging Data", "SBG%2C+Payload+Mated+Pair+Failure":"SBG, Payload Mated Pair Failure", "SBG%2C+Payload+Processor+Failure":"SBG, Payload Processor Failure", "SBG%2C+Processor+Overloaded":"SBG, Processor Overloaded", "SBG%2C+Registered+User+Set+in+Quarantine":"SBG, Registered User Set in Quarantine", "SBG%2C+Registration+Contacts+Exceed+Configured+Threshold":"SBG, Registration Contacts Exceed Configured Threshold", "SBG%2C+Sequential+Restart+Initiated":"SBG, Sequential Restart Initiated", "SBG%2C+SIP+Abuse+Detected":"SBG, SIP Abuse Detected", "SBG%2C+SIP+Network+Locked":"SBG, SIP Network Locked", "SBG%2C+SIP+Next+Hop+Reachable":"SBG, SIP Next Hop Reachable", "SBG%2C+SIP+Next+Hop+Unreachable":"SBG, SIP Next Hop Unreachable", "SBG%2C+SIP+Request+Rejected+by+Network+Throttling":"SBG, SIP Request Rejected by Network Throttling", "SBG%2C+TLS+Certificate+Imported":"SBG, TLS Certificate Imported", "SBG%2C+Trace+Recording+Session+Number+Limit+Reached":"SBG, Trace Recording Session Number Limit Reached", "SBG%2C+Trace+Session+Deactivated":"SBG, Trace Session Deactivated", "SBG%2C+Trace+Session+Times+Out":"SBG, Trace Session Times Out", "SBG%2C+Unknown+Media+Type+or+Payload+Type":"SBG, Unknown Media Type or Payload Type" } }, "vProbes": { "vf": { }, "vfc": { }, "location": { }, "alarmCondition": { } } } } } +globalPropsPartialTest={"collector": {"topicPublishes": {"DCAE-COLLECTOR-UCSNMP": "DCAE-COLLECTOR-UCSNMP", "GFP-IP--SNMP-TRAPS" : "GFP-IP--SNMP-TRAPS" } }, "string_match": { "topicPublishes": { "DCAE-CL-EVENT": "DCAE-CL-EVENT" }, "aaiMatchingFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "ProvStatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "aaiSendFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "Provstatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "eventSourceType": { "f5BigIP": "f5BigIP", "vSBG_Alarms": "vSBG_Alarms", "vCTS_Alarms": "vCTS_Alarms" }, "eventSeverity": { "NORMAL": "NORMAL", "not-NORMAL": "not-NORMAL", "WARNING": "WARNING", "MINOR": "MINOR", "MAJOR": "MAJOR", "CRITICAL": "CRITICAL" }, "timeWindow": 0, "ageLimit": 1600, "outputEventName": { "": "", "OnSet": "OnSet", "Abatement": "Abatement" }, "createClosedLoopEventId": { "Initial": "Initial", "Close": "Close" } }, "global": { "service": { "": "", "vUSP": "vUSP", "vSCP": "vSCP", "vProbes": "vProbes" } }, "policy": { "timeout": 5, "recipe": { "": "", "restart": "Restart", "rebuild": "Rebuild", "migrate": "Migrate" }, "maxRetries": "3", "retryTimeLimit": 180, "resource": { "vCTS": "vCTS", "v3CDB": "v3CDB", "vUDR": "vUDR", "vCOM": "vCOM", "vRAR": "vRAR", "vLCS": "vLCS", "vUDR-BE": "vUDR-BE", "vDBE": "vDBE" }, "parentPolicyConditions": { "Failure_Retries": "Failure: Max Retries Exceeded", "Failure_Timeout": "Failure: Time Limit Exceeded", "Failure_Exception": "Failure: Exception", "Failure": "Failure: Other", "Success": "Success" } }} +ui.location.default={"location":{"SNDGCA64":"San Diego SAN3","ALPRGAED":"Alpharetta PDK1","LSLEILAA":"Lisle DPA3"}} +ui.alarm.default={"alarmCondition":{"A+Fallback+Operation+will+soon+be+started":"A Fallback Operation will soon be started","BRM%2C+Auto+Export+Backup+Failed":"BRM, Auto Export Backup Failed","BRM%2C+Scheduled+Backup+Failed":"BRM, Scheduled Backup Failed","COM+SA%2C+AMF+Component+Cleanup+Failed":"COM SA, AMF Component Cleanup Failed","COM+SA%2C+AMF+Component+Instantiation+Failed":"COM SA, AMF Component Instantiation Failed","COM+SA%2C+AMF+SI+Unassigned":"COM SA, AMF SI Unassigned","COM+SA%2C+CLM+Cluster+Node+Unavailable":"COM SA, CLM Cluster Node Unavailable","COM+SA%2C+MDF+Detected+Model+Error":"COM SA, MDF Detected Model Error","COM+SA%2C+Proxy+Status+of+a+Component+Changed+to+Unproxied":"COM SA, Proxy Status of a Component Changed to Unproxied","File+Management%2C+Number+of+Files+in+FileGroup+Exceeded":"File Management, Number of Files in FileGroup Exceeded","File+Management%2C+Max+Size+in+FileGroup+Exceeded":"File Management, Max Size in FileGroup Exceeded","LOTC+Disk+Replication+Communication":"LOTC Disk Replication Communication","LOTC+Disk+Replication+Consistency":"LOTC Disk Replication Consistency","LOTC+Disk+Usage":"LOTC Disk Usage","LOTC+memory+Usage":"LOTC memory Usage","LOTC+Time+Synchronization":"LOTC Time Synchronization","SBG%2C+BGF+Control+Link+Down":"SBG, BGF Control Link Down","SBG%2C+BGF+Control+Link+Disabled":"SBG, BGF Control Link Disabled","SBG%2C+BGF+Control+Link+Enabled":"SBG, BGF Control Link Enabled","SBG%2C+BGF+Control+Link+Remote+Locked":"SBG, BGF Control Link Remote Locked","SBG%2C+Charging+Data+Storage+Maximum+Records+Reached":"SBG, Charging Data Storage Maximum Records Reached","SBG%2C+Charging+Server+Rejects+Charging+Data":"SBG, Charging Server Rejects Charging Data","SBG%2C+Excessive+Packet+Rate+Detected+":"SBG, Excessive Packet Rate Detected ","SBG%2C+High+Amount+of+Malformed+Packets+Received":"SBG, High Amount of Malformed Packets Received","SBG%2C+High+Amount+of+STUN+Packets+Detected":"SBG, High Amount of STUN Packets Detected","SBG%2C+High+Amount+of+TCP+SYN+Packets+Received":"SBG, High Amount of TCP SYN Packets Received","SBG%2C+High+Amount+of+UDP+Packets+Received+":"SBG, High Amount of UDP Packets Received ","SBG%2C+IP+Address+Blocked+Due+to+Excessive+Packet+Rate":"SBG, IP Address Blocked Due to Excessive Packet Rate","SBG%2C+Lost+Connectivity+to+Diameter+Server":"SBG, Lost Connectivity to Diameter Server","SBG%2C+Mated+Pair+out+of+Service":"SBG, Mated Pair out of Service","SBG%2C+Network+Unavailable+for+Media+Handling":"SBG, Network Unavailable for Media Handling","SBG%2C+Non-emergency+Call+Released+to+Free+Resources+for+Emergency+Call":"SBG, Non-emergency Call Released to Free Resources for Emergency Call","SBG%2C+Not+Enough+Disk+Space+for+Storing+Charging+Data":"SBG, Not Enough Disk Space for Storing Charging Data","SBG%2C+Payload+Mated+Pair+Failure":"SBG, Payload Mated Pair Failure","SBG%2C+Payload+Processor+Failure":"SBG, Payload Processor Failure","SBG%2C+Processor+Overloaded":"SBG, Processor Overloaded","SBG%2C+Registered+User+Set+in+Quarantine":"SBG, Registered User Set in Quarantine","SBG%2C+Registration+Contacts+Exceed+Configured+Threshold":"SBG, Registration Contacts Exceed Configured Threshold","SBG%2C+Sequential+Restart+Initiated":"SBG, Sequential Restart Initiated","SBG%2C+SIP+Abuse+Detected":"SBG, SIP Abuse Detected","SBG%2C+SIP+Network+Locked":"SBG, SIP Network Locked","SBG%2C+SIP+Next+Hop+Reachable":"SBG, SIP Next Hop Reachable","SBG%2C+SIP+Next+Hop+Unreachable":"SBG, SIP Next Hop Unreachable","SBG%2C+SIP+Request+Rejected+by+Network+Throttling":"SBG, SIP Request Rejected by Network Throttling","SBG%2C+TLS+Certificate+Imported":"SBG, TLS Certificate Imported","SBG%2C+Trace+Recording+Session+Number+Limit+Reached":"SBG, Trace Recording Session Number Limit Reached","SBG%2C+Trace+Session+Deactivated":"SBG, Trace Session Deactivated","SBG%2C+Trace+Session+Times+Out":"SBG, Trace Session Times Out","SBG%2C+Unknown+Media+Type+or+Payload+Type":"SBG, Unknown Media Type or Payload Type"}} + -- cgit 1.2.3-korg From b436cd173daa367e15951f0c1f84f8b842a1e347 Mon Sep 17 00:00:00 2001 From: "Determe, Sebastien (sd378r)" Date: Tue, 8 Aug 2017 03:04:02 -0700 Subject: Rework the authentication Add more granularity in the default authentication mechanism + Add some unit tests with Json to validate the json decoder Change-Id: I89d0ef94e99fc8aa0c1e8c6432b5aa30a0a5ac88 Issue-Id: CLAMP-1 Signed-off-by: Determe, Sebastien (sd378r) --- .../onap/clamp/clds/config/CldsConfiguration.java | 64 ++++++-- .../onap/clamp/clds/config/CldsSecurityConfig.java | 99 +++++------- .../clamp/clds/config/CldsUserJsonDecoder.java | 46 ++++++ .../java/org/onap/clamp/clds/service/CldsUser.java | 84 +++++++++++ .../clamp/clds/service/DefaultUserNameHandler.java | 47 ++++++ .../onap/clamp/clds/service/LogServiceImpl.java | 166 ++++++++++++--------- .../onap/clamp/clds/service/UserNameHandler.java | 31 ++++ .../org/onap/clamp/clds/service/UserService.java | 54 +++++++ .../onap/clamp/clds/service/UserServiceImpl.java | 46 ++++++ src/main/resources/clds/clds-users.json | 15 ++ src/main/resources/clds/clds-users.properties | 7 - .../clamp/clds/config/CldsUserJsonDecoderTest.java | 85 +++++++++++ .../clds/clds-users-incomplete-permissions.json | 14 ++ .../resources/clds/clds-users-no-permission.json | 9 ++ src/test/resources/clds/clds-users-two-users.json | 28 ++++ 15 files changed, 635 insertions(+), 160 deletions(-) create mode 100644 src/main/java/org/onap/clamp/clds/config/CldsUserJsonDecoder.java create mode 100644 src/main/java/org/onap/clamp/clds/service/CldsUser.java create mode 100644 src/main/java/org/onap/clamp/clds/service/DefaultUserNameHandler.java create mode 100644 src/main/java/org/onap/clamp/clds/service/UserNameHandler.java create mode 100644 src/main/java/org/onap/clamp/clds/service/UserService.java create mode 100644 src/main/java/org/onap/clamp/clds/service/UserServiceImpl.java create mode 100644 src/main/resources/clds/clds-users.json delete mode 100644 src/main/resources/clds/clds-users.properties create mode 100644 src/test/java/org/onap/clamp/clds/config/CldsUserJsonDecoderTest.java create mode 100644 src/test/resources/clds/clds-users-incomplete-permissions.json create mode 100644 src/test/resources/clds/clds-users-no-permission.json create mode 100644 src/test/resources/clds/clds-users-two-users.json (limited to 'src/test/resources/clds') diff --git a/src/main/java/org/onap/clamp/clds/config/CldsConfiguration.java b/src/main/java/org/onap/clamp/clds/config/CldsConfiguration.java index 814d2c6ad..19c916435 100644 --- a/src/main/java/org/onap/clamp/clds/config/CldsConfiguration.java +++ b/src/main/java/org/onap/clamp/clds/config/CldsConfiguration.java @@ -23,9 +23,27 @@ package org.onap.clamp.clds.config; -import com.att.ajsc.common.AjscProvider; -import com.att.ajsc.common.AjscService; -import org.onap.clamp.clds.client.*; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import javax.sql.DataSource; +import javax.xml.transform.TransformerConfigurationException; + +import org.onap.clamp.clds.client.CldsEventDelegate; +import org.onap.clamp.clds.client.DcaeDispatcherServices; +import org.onap.clamp.clds.client.DcaeInventoryServices; +import org.onap.clamp.clds.client.DcaeReqDelegate; +import org.onap.clamp.clds.client.DcaeReqDeleteDelegate; +import org.onap.clamp.clds.client.OperationalPolicyDelegate; +import org.onap.clamp.clds.client.OperationalPolicyDeleteDelegate; +import org.onap.clamp.clds.client.PolicyClient; +import org.onap.clamp.clds.client.SdcCatalogServices; +import org.onap.clamp.clds.client.SdcSendReqDelegate; +import org.onap.clamp.clds.client.StringMatchPolicyDelegate; +import org.onap.clamp.clds.client.StringMatchPolicyDeleteDelegate; +import org.onap.clamp.clds.client.TcaPolicyDelegate; +import org.onap.clamp.clds.client.TcaPolicyDeleteDelegate; import org.onap.clamp.clds.dao.CldsDao; import org.onap.clamp.clds.model.refprop.RefProp; import org.onap.clamp.clds.transform.XslTransformer; @@ -37,11 +55,8 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; -import javax.sql.DataSource; -import javax.xml.transform.TransformerConfigurationException; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; +import com.att.ajsc.common.AjscProvider; +import com.att.ajsc.common.AjscService; @Configuration @Profile("clamp-default") @@ -54,20 +69,18 @@ public class CldsConfiguration { * Clds Identity databse DataSource configuration */ @Bean(name = "cldsDataSource") - @ConfigurationProperties(prefix = "spring.cldsdatasource") + @ConfigurationProperties(prefix = "spring.datasource.cldsdb") public DataSource cldsDataSource() { - return DataSourceBuilder - .create() - .build(); + return DataSourceBuilder.create().build(); } @Bean(name = "jaxrsProviders") - public List jaxrsProviders() { + public List jaxrsProviders() { return new ArrayList(context.getBeansWithAnnotation(AjscProvider.class).values()); } @Bean(name = "jaxrsServices") - public List jaxrsServices() { + public List jaxrsServices() { return new ArrayList(context.getBeansWithAnnotation(AjscService.class).values()); } @@ -136,7 +149,28 @@ public class CldsConfiguration { } @Bean(name = "sdcCatalogServices") - public SdcCatalogServices getAsdcCatalogServices() { + public SdcCatalogServices getSdcCatalogServices() { return new SdcCatalogServices(); } + + @Bean(name = "dcaeDispatcherServices") + public DcaeDispatcherServices getDcaeDispatcherServices() { + return new DcaeDispatcherServices(); + } + + @Bean(name = "dcaeInventoryServices") + public DcaeInventoryServices getDcaeInventoryServices() { + return new DcaeInventoryServices(); + } + + @Bean(name = "tcaPolicyDelegate") + public TcaPolicyDelegate getTcaPolicyDelegate() { + return new TcaPolicyDelegate(); + } + + @Bean(name = "tcaPolicyDeleteDelegate") + public TcaPolicyDeleteDelegate getTcaPolicyDeleteDelegate() { + return new TcaPolicyDeleteDelegate(); + } + } \ No newline at end of file diff --git a/src/main/java/org/onap/clamp/clds/config/CldsSecurityConfig.java b/src/main/java/org/onap/clamp/clds/config/CldsSecurityConfig.java index 571ad4b40..7e6021c2b 100644 --- a/src/main/java/org/onap/clamp/clds/config/CldsSecurityConfig.java +++ b/src/main/java/org/onap/clamp/clds/config/CldsSecurityConfig.java @@ -5,16 +5,16 @@ * Copyright (C) 2017 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. + * 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 + * + * 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============================================ * =================================================================== @@ -23,95 +23,64 @@ package org.onap.clamp.clds.config; +import org.onap.clamp.clds.service.CldsUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Configuration; -import org.springframework.core.io.Resource; +import org.springframework.context.annotation.Profile; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.util.LinkedList; -import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; @Configuration @EnableWebSecurity +@Profile("clamp-spring-authentication") public class CldsSecurityConfig extends WebSecurityConfigurerAdapter { - private static final Logger logger = Logger.getLogger(CldsSecurityConfig.class.getName()); + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsSecurityConfig.class); + protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); @Autowired - private ApplicationContext appContext; + private ApplicationContext appContext; - @Value("${org.onap.clamp.config.files.cldsUsers:'classpath:etc/config/clds/clds-users.properties'}") - private String cldsUsers; + @Value("${org.onap.clamp.config.files.cldsUsers:'classpath:etc/config/clds/clds-users.json'}") + private String cldsUsersFile; - private final static String ROLEPREFIX = "null|null|"; + @Value("${CLDS_PERMISSION_TYPE_CL:permission-type-cl}") + private String cldsPersmissionTypeCl; + + @Value("${CLDS_PERMISSION_INSTANCE:dev}") + private String cldsPermissionInstance; @Override protected void configure(HttpSecurity http) throws Exception { - http - .csrf().disable() - .authorizeRequests() - .anyRequest().authenticated() - .and() - .formLogin() - .loginPage("/login.html") - .permitAll() - .and() - .logout() - .permitAll(); + http.csrf().disable().httpBasic().and().authorizeRequests().antMatchers("/restservices/clds/v1/user/**") + .authenticated().anyRequest().permitAll().and().logout(); } @Autowired public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { - List userList = loadUsers(); + CldsUser[] usersList = loadUsers(); // no users defined - if (null == userList || userList.isEmpty()) { - logger.log(Level.SEVERE, "No users defined. Users should be defined under clds/clds-users.properties."); + if (null == usersList) { + logger.warn("No users defined. Users should be defined under " + cldsUsersFile); return; } - for (String user : userList) { - String[] userInfo = user.split("[|]"); - if (userInfo.length != 3) { - logger.log(Level.SEVERE, "Defined User(" + user + ") is not in good format. User format should be:||. Role should be eiother 'read' or 'all'."); - continue; - } - - auth - .inMemoryAuthentication() - .withUser(userInfo[0]).password(userInfo[1]).roles(ROLEPREFIX + ("all".equalsIgnoreCase(userInfo[2]) ? "*" : userInfo[2])); - + for (CldsUser user : usersList) { + auth.inMemoryAuthentication().withUser(user.getUser()).password(user.getPassword()) + .roles(user.getPermissionsString()); } } - private boolean validUser(String[] userInfo) { - return ((userInfo != null) && (userInfo.length == 3) && (("all".equals(userInfo[2])) || ("read".equals(userInfo[2])))); - } - - private List loadUsers() throws Exception { + private CldsUser[] loadUsers() throws Exception { logger.info("Load from clds-users.properties"); - - Resource resource = appContext.getResource(cldsUsers); - BufferedReader input = new BufferedReader(new InputStreamReader(resource.getInputStream())); - - List userList = new LinkedList<>(); - - String line; - while ((line = input.readLine()) != null) { - if (!line.contains("#")) { - userList.add(line); - } - logger.info("line read:" + line); - } - return userList; + return CldsUserJsonDecoder.decodeJson(appContext.getResource(cldsUsersFile).getInputStream()); } -} \ No newline at end of file +} diff --git a/src/main/java/org/onap/clamp/clds/config/CldsUserJsonDecoder.java b/src/main/java/org/onap/clamp/clds/config/CldsUserJsonDecoder.java new file mode 100644 index 000000000..997a20f09 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/config/CldsUserJsonDecoder.java @@ -0,0 +1,46 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2017 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.config; + +import java.io.IOException; +import java.io.InputStream; + +import org.onap.clamp.clds.service.CldsUser; + +import com.fasterxml.jackson.databind.ObjectMapper; + +public class CldsUserJsonDecoder { + + /** + * This method decodes the JSON file provided to a CldsUser Array. The + * stream is closed after this call, this is not possible to reuse it. + * + * @return CldsUser[] Array containing a list of the user defined in the + * JSON file + */ + public static CldsUser[] decodeJson(InputStream cldsUsersFile) throws IOException { + // the ObjectMapper readValue method closes the stream no need to do it + return new ObjectMapper().readValue(cldsUsersFile, CldsUser[].class); + } +} diff --git a/src/main/java/org/onap/clamp/clds/service/CldsUser.java b/src/main/java/org/onap/clamp/clds/service/CldsUser.java new file mode 100644 index 000000000..9db1e6078 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/service/CldsUser.java @@ -0,0 +1,84 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2017 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.service; + +import java.util.Arrays; + +public class CldsUser { + + private String user; + + private String password; + + private SecureServicePermission[] permissions; + + /** + * @return the user + */ + public String getUser() { + return user; + } + + /** + * @param user + * the user to set + */ + public void setUser(String user) { + this.user = user; + } + + /** + * @return the password + */ + public String getPassword() { + return password; + } + + /** + * @param password + * the password to set + */ + public void setPassword(String password) { + this.password = password; + } + + /** + * @return the permissions + */ + public SecureServicePermission[] getPermissions() { + return permissions; + } + + public String[] getPermissionsString() { + return Arrays.stream(getPermissions()).map(perm -> perm.getKey()).toArray(String[]::new); + } + + /** + * @param permissions + * the permissions to set + */ + public void setPermissions(SecureServicePermission[] permissions) { + this.permissions = permissions; + } +} diff --git a/src/main/java/org/onap/clamp/clds/service/DefaultUserNameHandler.java b/src/main/java/org/onap/clamp/clds/service/DefaultUserNameHandler.java new file mode 100644 index 000000000..511cafe1e --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/service/DefaultUserNameHandler.java @@ -0,0 +1,47 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2017 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.service; + +import java.security.Principal; + +import javax.ws.rs.core.SecurityContext; + +public class DefaultUserNameHandler implements UserNameHandler { + + public DefaultUserNameHandler() { + } + + /* + * (non-Javadoc) + * + * @see + * org.onap.clamp.clds.service.PrincipalNameHandler#handleName(javax.ws.rs. + * core.SecurityContext) + */ + @Override + public String retrieveUserName(SecurityContext securityContext) { + Principal p = securityContext.getUserPrincipal(); + return (p == null ? "Not found" : p.getName()); + } +} diff --git a/src/main/java/org/onap/clamp/clds/service/LogServiceImpl.java b/src/main/java/org/onap/clamp/clds/service/LogServiceImpl.java index e7ee93a40..f38e129be 100644 --- a/src/main/java/org/onap/clamp/clds/service/LogServiceImpl.java +++ b/src/main/java/org/onap/clamp/clds/service/LogServiceImpl.java @@ -5,16 +5,16 @@ * Copyright (C) 2017 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. + * 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 + * + * 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============================================ * =================================================================== @@ -23,12 +23,19 @@ package org.onap.clamp.clds.service; -import com.att.ajsc.camunda.core.AttCamundaHistoryEvent; -import com.att.ajsc.camunda.core.AttCamundaService; -import com.att.ajsc.logging.AjscEelfManager; -import com.att.eelf.configuration.EELFLogger; -import com.google.gson.Gson; -import org.onap.clamp.clds.common.LogMessages; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Properties; + +import javax.mail.Message; +import javax.mail.MessagingException; +import javax.mail.Session; +import javax.mail.Transport; +import javax.mail.internet.InternetAddress; +import javax.mail.internet.MimeMessage; +import javax.ws.rs.core.Context; + import org.apache.commons.mail.Email; import org.apache.commons.mail.SimpleEmail; import org.apache.cxf.jaxrs.ext.MessageContext; @@ -37,33 +44,32 @@ import org.camunda.bpm.engine.RuntimeService; import org.camunda.bpm.engine.history.HistoricActivityInstance; import org.camunda.bpm.engine.impl.history.event.HistoricActivityInstanceEventEntity; import org.camunda.bpm.engine.runtime.ProcessInstance; +import org.onap.clamp.clds.common.LogMessages; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.MailException; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.stereotype.Service; -import javax.mail.Message; -import javax.mail.MessagingException; -import javax.mail.Session; -import javax.mail.Transport; -import javax.mail.internet.InternetAddress; -import javax.mail.internet.MimeMessage; -import javax.ws.rs.core.Context; -import java.util.*; +import com.att.ajsc.camunda.core.AttCamundaHistoryEvent; +import com.att.ajsc.camunda.core.AttCamundaService; +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; +import com.google.gson.Gson; @Service public class LogServiceImpl implements LogService { - private static final EELFLogger logger = AjscEelfManager.getInstance().getLogger(LogServiceImpl.class); + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(LogServiceImpl.class); + protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger(); @Autowired - private RuntimeService runtimeService; + private RuntimeService runtimeService; @Autowired - private HistoryService historyService; + private HistoryService historyService; @Context - private MessageContext context; + private MessageContext context; public void setRuntimeService(RuntimeService runtimeService) { this.runtimeService = runtimeService; @@ -93,7 +99,9 @@ public class LogServiceImpl implements LogService { } // BEGIN - added for send mail testing - // also added the following to the method signature: , @QueryParam("javamail") String javamail, @QueryParam("springmail") String springmail, @QueryParam("commonsmail") String commonsmail + // also added the following to the method signature: , + // @QueryParam("javamail") String javamail, @QueryParam("springmail") + // String springmail, @QueryParam("commonsmail") String commonsmail // if javamail parameter provided, assume it contains an email address. // use Java Mail to send an email from that address, to that address if (javamail != null && javamail.length() > 0) { @@ -104,11 +112,11 @@ public class LogServiceImpl implements LogService { Session session = Session.getInstance(props); MimeMessage msg = new MimeMessage(session); - msg.setFrom(new InternetAddress(javamail)); //eMail.setFrom + msg.setFrom(new InternetAddress(javamail)); // eMail.setFrom - InternetAddress[] fromAddresses = {new InternetAddress(javamail)}; - msg.setReplyTo(fromAddresses); //eMail.addReplyTo - msg.setSubject("test message using javax.mail"); //eMail.setSubject + InternetAddress[] fromAddresses = { new InternetAddress(javamail) }; + msg.setReplyTo(fromAddresses); // eMail.addReplyTo + msg.setSubject("test message using javax.mail"); // eMail.setSubject msg.setText(logMessageText); // eMail.setMsg msg.addRecipient(Message.RecipientType.TO, new InternetAddress(javamail)); // eMail.addTo @@ -118,7 +126,8 @@ public class LogServiceImpl implements LogService { } } - // if springmail parameter provided, assume it contains an email address. + // if springmail parameter provided, assume it contains an email + // address. // use Spring Mail to send an email from that address, to that address if (springmail != null && springmail.length() > 0) { variables.put("springmail", springmail); @@ -127,9 +136,9 @@ public class LogServiceImpl implements LogService { try { sender.setHost("smtp.sbc.com"); // eMail.setHostName - smsg.setFrom(springmail); //eMail.setFrom - smsg.setReplyTo(springmail); //eMail.addReplyTo - smsg.setSubject("test message using spring mail"); //eMail.setSubject + smsg.setFrom(springmail); // eMail.setFrom + smsg.setReplyTo(springmail); // eMail.addReplyTo + smsg.setSubject("test message using spring mail"); // eMail.setSubject smsg.setText(logMessageText); // eMail.setMsg smsg.setTo(springmail); // eMail.addTo sender.send(smsg); @@ -138,18 +147,20 @@ public class LogServiceImpl implements LogService { } } - // if commonsmail parameter provided, assume it contains an email address. - // use Apache Commons Mail to send an email from that address, to that address + // if commonsmail parameter provided, assume it contains an email + // address. + // use Apache Commons Mail to send an email from that address, to that + // address if (commonsmail != null && commonsmail.length() > 0) { variables.put("commonsmail", commonsmail); - Email eMail = new SimpleEmail(); + Email email = new SimpleEmail(); try { - eMail.setHostName("smtp.sbc.com"); - eMail.setFrom(commonsmail); - eMail.addReplyTo(commonsmail); - eMail.setSubject("test message using commons mail"); - eMail.setMsg(logMessageText); - eMail.addTo(commonsmail); + email.setHostName("smtp.sbc.com"); + email.setFrom(commonsmail); + email.addReplyTo(commonsmail); + email.setSubject("test message using commons mail"); + email.setMsg(logMessageText); + email.addTo(commonsmail); java.net.URL classUrl = this.getClass().getResource("com.sun.mail.util.TraceInputStream"); if (classUrl != null) { logger.info(LogMessages.LOGSERVICE_EMAIL_CLASS, classUrl.getFile()); @@ -157,7 +168,7 @@ public class LogServiceImpl implements LogService { logger.info(LogMessages.LOGSERVICE_EMAIL_CLASS, classUrl.getFile()); logger.info(LogMessages.LOGSERVICE_EMAIL_CLASS_NULL); } - eMail.send(); + email.send(); } catch (Exception e) { logger.error(LogMessages.LOGSERVICE_EMAIL_ERROR, e); } @@ -168,7 +179,8 @@ public class LogServiceImpl implements LogService { ProcessInstance pi = runtimeService.startProcessInstanceByKey("log-message-wf", variables); AttCamundaService.setHttpRequest(null); // return text message of what was done - return "Started processDefinitionId=" + pi.getProcessDefinitionId() + ", processInstanceId=" + pi.getProcessInstanceId() + ", to log message: " + logMessageText; + return "Started processDefinitionId=" + pi.getProcessDefinitionId() + ", processInstanceId=" + + pi.getProcessInstanceId() + ", to log message: " + logMessageText; } @Override @@ -179,13 +191,17 @@ public class LogServiceImpl implements LogService { AttCamundaHistoryEvent attCamundaHistoryEvent = gson.fromJson(histEventList, AttCamundaHistoryEvent.class); if (attCamundaHistoryEvent != null && attCamundaHistoryEvent.getProcInstId() != null) { logger.info(LogMessages.PROCESS_INSTANCE_ID, attCamundaHistoryEvent.getProcInstId()); - if (context != null && context.getHttpServletRequest() != null && context.getHttpServletRequest().getAttribute("PERFORMANCE_TRACKER_BEAN") != null) { + if (context != null && context.getHttpServletRequest() != null + && context.getHttpServletRequest().getAttribute("PERFORMANCE_TRACKER_BEAN") != null) { context.getHttpServletRequest().setAttribute("CALL_TYPE", "Testing"); - List histActInstList = historyService.createHistoricActivityInstanceQuery().processInstanceId(attCamundaHistoryEvent.getProcInstId()).list(); + List histActInstList = historyService.createHistoricActivityInstanceQuery() + .processInstanceId(attCamundaHistoryEvent.getProcInstId()).list(); if (histActInstList != null && histActInstList.size() > 0) { for (HistoricActivityInstance currHistoricActivityInstance : histActInstList) { - if (currHistoricActivityInstance != null && currHistoricActivityInstance.getActivityName() != null && currHistoricActivityInstance.getStartTime() != null + if (currHistoricActivityInstance != null + && currHistoricActivityInstance.getActivityName() != null + && currHistoricActivityInstance.getStartTime() != null && currHistoricActivityInstance.getEndTime() != null) { logger.info("value of serviceTrack:" + currHistoricActivityInstance); message = "Log Entry Created"; @@ -193,10 +209,13 @@ public class LogServiceImpl implements LogService { } } } - if (attCamundaHistoryEvent.getHistoryEventList() != null && attCamundaHistoryEvent.getHistoryEventList().size() > 0) { - List historyEventList = attCamundaHistoryEvent.getHistoryEventList(); + if (attCamundaHistoryEvent.getHistoryEventList() != null + && attCamundaHistoryEvent.getHistoryEventList().size() > 0) { + List historyEventList = attCamundaHistoryEvent + .getHistoryEventList(); for (HistoricActivityInstanceEventEntity actiEvent : historyEventList) { - // resolve null pointer exception if actiEvent.getActivityName() + // resolve null pointer exception if + // actiEvent.getActivityName() message = "Log Entry Created"; } } @@ -209,12 +228,17 @@ public class LogServiceImpl implements LogService { public String createLogMessage(String startTime, String endTime, String serviceName) { String message = "no logs Created"; - if (context != null && context.getHttpServletRequest() != null && context.getHttpServletRequest().getAttribute("PERFORMANCE_TRACKER_BEAN") != null) { + if (context != null && context.getHttpServletRequest() != null + && context.getHttpServletRequest().getAttribute("PERFORMANCE_TRACKER_BEAN") != null) { context.getHttpServletRequest().setAttribute("X-CSI-ClientApp", "AJSC-CSI~sdsds"); - /*PerformanceTrackingBean trackingBean =(PerformanceTrackingBean) context.getHttpServletRequest().getAttribute("PERFORMANCE_TRACKER_BEAN"); - PerformanceTracking.addInvokeServiceTrack(trackingBean, - serviceName, Long.valueOf(startTime), Long.valueOf(endTime), "Completed", - 500, 1000) ;*/ + /* + * PerformanceTrackingBean trackingBean =(PerformanceTrackingBean) + * context.getHttpServletRequest().getAttribute( + * "PERFORMANCE_TRACKER_BEAN"); + * PerformanceTracking.addInvokeServiceTrack(trackingBean, + * serviceName, Long.valueOf(startTime), Long.valueOf(endTime), + * "Completed", 500, 1000) ; + */ message = "Log Entry Created"; } // return text message of what was done @@ -226,13 +250,16 @@ public class LogServiceImpl implements LogService { String message = "no logs Created"; logger.info("value of history events:" + histEventList); logger.info("value of events:" + histEventList + ":" + histEventList); - if (context != null && context.getHttpServletRequest() != null && context.getHttpServletRequest().getAttribute("PERFORMANCE_TRACKER_BEAN") != null) { + if (context != null && context.getHttpServletRequest() != null + && context.getHttpServletRequest().getAttribute("PERFORMANCE_TRACKER_BEAN") != null) { context.getHttpServletRequest().setAttribute("CALL_TYPE", "Testing"); - List histActInstList = historyService.createHistoricActivityInstanceQuery().processInstanceId(procInstId).list(); + List histActInstList = historyService.createHistoricActivityInstanceQuery() + .processInstanceId(procInstId).list(); if (histActInstList != null && histActInstList.size() > 0) { for (HistoricActivityInstance currHistoricActivityInstance : histActInstList) { - if (currHistoricActivityInstance != null && currHistoricActivityInstance.getActivityName() != null && currHistoricActivityInstance.getStartTime() != null + if (currHistoricActivityInstance != null && currHistoricActivityInstance.getActivityName() != null + && currHistoricActivityInstance.getStartTime() != null && currHistoricActivityInstance.getEndTime() != null) { logger.info("value of serviceTrack:" + currHistoricActivityInstance); message = "Log Entry Created"; @@ -247,12 +274,15 @@ public class LogServiceImpl implements LogService { @Override public String CreateHistLog(String procInstId) { String message = "no logs Created"; - if (context != null && context.getHttpServletRequest() != null && context.getHttpServletRequest().getAttribute("PERFORMANCE_TRACKER_BEAN") != null) { - List histActInstList = historyService.createHistoricActivityInstanceQuery().processInstanceId(procInstId).list(); + if (context != null && context.getHttpServletRequest() != null + && context.getHttpServletRequest().getAttribute("PERFORMANCE_TRACKER_BEAN") != null) { + List histActInstList = historyService.createHistoricActivityInstanceQuery() + .processInstanceId(procInstId).list(); if (histActInstList != null && histActInstList.size() > 0) { for (HistoricActivityInstance currHistoricActivityInstance : histActInstList) { - if (currHistoricActivityInstance != null && currHistoricActivityInstance.getActivityName() != null && currHistoricActivityInstance.getStartTime() != null + if (currHistoricActivityInstance != null && currHistoricActivityInstance.getActivityName() != null + && currHistoricActivityInstance.getStartTime() != null && currHistoricActivityInstance.getEndTime() != null) { logger.info("value of serviceTrack:" + currHistoricActivityInstance); context.getHttpServletRequest().setAttribute("X-CSI-ClientApp", "AJSC-CSI~sdsds"); @@ -263,14 +293,4 @@ public class LogServiceImpl implements LogService { } return message; } - - private String getActivityInstanceState(int activityInstanceState) { - String activityState = "Default"; - if (activityInstanceState == 1) { - activityState = "Complete"; - } else if (activityInstanceState == 2) { - activityState = "Cancelled"; - } - return activityState; - } } diff --git a/src/main/java/org/onap/clamp/clds/service/UserNameHandler.java b/src/main/java/org/onap/clamp/clds/service/UserNameHandler.java new file mode 100644 index 000000000..cadf334ea --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/service/UserNameHandler.java @@ -0,0 +1,31 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2017 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.service; + +import javax.ws.rs.core.SecurityContext; + +public interface UserNameHandler { + + public String retrieveUserName(SecurityContext securityContext); +} diff --git a/src/main/java/org/onap/clamp/clds/service/UserService.java b/src/main/java/org/onap/clamp/clds/service/UserService.java new file mode 100644 index 000000000..6f3e480ad --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/service/UserService.java @@ -0,0 +1,54 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2017 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.service; + +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; + +import io.swagger.annotations.Api; + +/** + * User service used for authorization verification at the login page. Do not + * remove this class. + */ +@Api(value = "/user") +@Path("/user") +@Produces({ MediaType.TEXT_PLAIN }) +public interface UserService { + + /** + * REST service that returns the username. + * + * @param userName + * @return the user name + */ + @GET + @Path("/{userName}") + @Produces(MediaType.TEXT_PLAIN) + String getUser(@PathParam("userName") String userName); + +} \ No newline at end of file diff --git a/src/main/java/org/onap/clamp/clds/service/UserServiceImpl.java b/src/main/java/org/onap/clamp/clds/service/UserServiceImpl.java new file mode 100644 index 000000000..7d0fda0a1 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/service/UserServiceImpl.java @@ -0,0 +1,46 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2017 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.service; + +import com.att.ajsc.common.AjscService; + +/** + * User service used for authorization verification at the login page. Do not + * remove this class. + */ +@AjscService +public class UserServiceImpl implements UserService { + + /** + * REST service that returns the username. + * + * @param userName + * @return the user name + */ + @Override + public String getUser(String userName) { + return userName; + } + +} \ No newline at end of file diff --git a/src/main/resources/clds/clds-users.json b/src/main/resources/clds/clds-users.json new file mode 100644 index 000000000..b569f9d3d --- /dev/null +++ b/src/main/resources/clds/clds-users.json @@ -0,0 +1,15 @@ + [{ + "user":"admin", + "password":"5f4dcc3b5aa765d61d8327deb882cf99", + "permissions": + [ + "permission-type-cl|dev|read", + "permission-type-cl|dev|update", + "permission-type-cl-manage|dev|*", + "permission-type-filter-vf|dev|*", + "permission-type-template|dev|read", + "permission-type-template|dev|update" + ] + } + +] \ No newline at end of file diff --git a/src/main/resources/clds/clds-users.properties b/src/main/resources/clds/clds-users.properties deleted file mode 100644 index f4b11e820..000000000 --- a/src/main/resources/clds/clds-users.properties +++ /dev/null @@ -1,7 +0,0 @@ -# Please define the CLDS users here -# The format is || -# Two types of roles are used:read, all -# - read: can only read template and closed loop design -# - all: can read and update template and closed loop related design -# -user|password|all \ No newline at end of file diff --git a/src/test/java/org/onap/clamp/clds/config/CldsUserJsonDecoderTest.java b/src/test/java/org/onap/clamp/clds/config/CldsUserJsonDecoderTest.java new file mode 100644 index 000000000..fa8adc761 --- /dev/null +++ b/src/test/java/org/onap/clamp/clds/config/CldsUserJsonDecoderTest.java @@ -0,0 +1,85 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2017 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.config; + +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.onap.clamp.clds.service.CldsUser; + +public class CldsUserJsonDecoderTest { + + private String user1 = "admin1"; + private String user2 = "admin2"; + + private String password = "5f4dcc3b5aa765d61d8327deb882cf99"; + private String[] normalPermissionsArray = { "permission-type-cl|dev|read", "permission-type-cl|dev|update", + "permission-type-cl-manage|dev|*", "permission-type-filter-vf|dev|*", "permission-type-template|dev|read", + "permission-type-template|dev|update" }; + + private String[] incompletePermissionsArray = { "permission-type-cl|dev|*", "permission-type-cl|dev|*", + "permission-type-cl-manage|dev|*", "permission-type-filter-vf|dev|*", "permission-type-template|dev|read", + "permission-type-template|dev|update" }; + + @Test + public void testDecodingDoubleUsers() throws Exception { + CldsUser[] usersArray = CldsUserJsonDecoder + .decodeJson(CldsUserJsonDecoderTest.class.getResourceAsStream("/clds/clds-users-two-users.json")); + + assertEquals(usersArray.length, 2); + + assertEquals(usersArray[0].getUser(), user1); + assertEquals(usersArray[1].getUser(), user2); + + assertEquals(usersArray[0].getPassword(), password); + assertEquals(usersArray[1].getPassword(), password); + + assertArrayEquals(usersArray[0].getPermissionsString(), normalPermissionsArray); + assertArrayEquals(usersArray[1].getPermissionsString(), normalPermissionsArray); + } + + @Test + public void testDecodingNoPermission() throws Exception { + CldsUser[] usersArray = CldsUserJsonDecoder + .decodeJson(this.getClass().getResourceAsStream("/clds/clds-users-no-permission.json")); + + assertEquals(usersArray.length, 1); + assertEquals(usersArray[0].getUser(), user1); + assertEquals(usersArray[0].getPassword(), null); + assertArrayEquals(usersArray[0].getPermissionsString(), new String[0]); + } + + @Test + public void testDecodingIncompletePermissions() throws Exception { + CldsUser[] usersArray = CldsUserJsonDecoder + .decodeJson(this.getClass().getResourceAsStream("/clds/clds-users-incomplete-permissions.json")); + + assertEquals(usersArray.length, 1); + assertEquals(usersArray[0].getUser(), user1); + assertEquals(usersArray[0].getPassword(), password); + assertArrayEquals(usersArray[0].getPermissionsString(), incompletePermissionsArray); + } + +} diff --git a/src/test/resources/clds/clds-users-incomplete-permissions.json b/src/test/resources/clds/clds-users-incomplete-permissions.json new file mode 100644 index 000000000..a642511cd --- /dev/null +++ b/src/test/resources/clds/clds-users-incomplete-permissions.json @@ -0,0 +1,14 @@ + [{ + "user":"admin1", + "password":"5f4dcc3b5aa765d61d8327deb882cf99", + "permissions": + [ + "permission-type-cl|dev|", + "permission-type-cl|dev", + "permission-type-cl-manage|dev|*", + "permission-type-filter-vf|dev|*", + "permission-type-template|dev|read", + "permission-type-template|dev|update" + ] + } +] \ No newline at end of file diff --git a/src/test/resources/clds/clds-users-no-permission.json b/src/test/resources/clds/clds-users-no-permission.json new file mode 100644 index 000000000..77f16c38c --- /dev/null +++ b/src/test/resources/clds/clds-users-no-permission.json @@ -0,0 +1,9 @@ + [{ + "user":"admin1", + "permissions": + [ + + ] + } + +] \ No newline at end of file diff --git a/src/test/resources/clds/clds-users-two-users.json b/src/test/resources/clds/clds-users-two-users.json new file mode 100644 index 000000000..8c8d7278a --- /dev/null +++ b/src/test/resources/clds/clds-users-two-users.json @@ -0,0 +1,28 @@ + [{ + "user":"admin1", + "password":"5f4dcc3b5aa765d61d8327deb882cf99", + "permissions": + [ + "permission-type-cl|dev|read", + "permission-type-cl|dev|update", + "permission-type-cl-manage|dev|*", + "permission-type-filter-vf|dev|*", + "permission-type-template|dev|read", + "permission-type-template|dev|update" + ] + } + , + {"user":"admin2", + "password":"5f4dcc3b5aa765d61d8327deb882cf99", + "permissions": + [ + "permission-type-cl|dev|read", + "permission-type-cl|dev|update", + "permission-type-cl-manage|dev|*", + "permission-type-filter-vf|dev|*", + "permission-type-template|dev|read", + "permission-type-template|dev|update" + ] + + } +] \ No newline at end of file -- cgit 1.2.3-korg From 249699f8fb908359213697055b66637c9baeda99 Mon Sep 17 00:00:00 2001 From: "Determe, Sebastien (sd378r)" Date: Tue, 8 Aug 2017 03:14:52 -0700 Subject: Rework of the unit tests (mainly IT) Rework of the unit tests (mainly IT) + new example files and test resource config Change-Id: I4970b3710c7decdc8a3265a86115097d4394ad80 Issue-Id: CLAMP-1 Signed-off-by: Determe, Sebastien (sd378r) --- src/test/java/org/onap/clamp/clds/AbstractIT.java | 28 +- src/test/java/org/onap/clamp/clds/it/AsdcIT.java | 56 - src/test/java/org/onap/clamp/clds/it/DcaeIT.java | 2 +- .../org/onap/clamp/clds/it/PolicyClientIT.java | 208 ++-- .../org/onap/clamp/clds/it/PropJsonBuilderIT.java | 226 ++-- .../clamp/clds/model/prop/CustomModelElement.java | 47 + .../clds/model/prop/CustomModelElementTest.java | 67 ++ .../clamp/clds/model/prop/ModelPropertiesTest.java | 69 +- src/test/resources/clds/clds-reference.properties | 41 +- src/test/resources/example/modelBpmnProp.json | 42 +- .../resources/example/modelBpmnPropForPolicy.json | 26 + src/test/resources/example/modelProp.json | 1114 ++++++++++++++------ src/test/resources/example/modelPropForPolicy.json | 404 +++++++ src/test/resources/example/templatePropForTca.json | 10 + src/test/resources/expected/stringmatch.json | 1 + src/test/resources/expected/tca.json | 93 ++ 16 files changed, 1746 insertions(+), 688 deletions(-) delete mode 100644 src/test/java/org/onap/clamp/clds/it/AsdcIT.java create mode 100644 src/test/java/org/onap/clamp/clds/model/prop/CustomModelElement.java create mode 100644 src/test/java/org/onap/clamp/clds/model/prop/CustomModelElementTest.java create mode 100644 src/test/resources/example/modelBpmnPropForPolicy.json create mode 100644 src/test/resources/example/modelPropForPolicy.json create mode 100644 src/test/resources/example/templatePropForTca.json create mode 100644 src/test/resources/expected/stringmatch.json create mode 100644 src/test/resources/expected/tca.json (limited to 'src/test/resources/clds') diff --git a/src/test/java/org/onap/clamp/clds/AbstractIT.java b/src/test/java/org/onap/clamp/clds/AbstractIT.java index 873c852ad..b705e38d1 100644 --- a/src/test/java/org/onap/clamp/clds/AbstractIT.java +++ b/src/test/java/org/onap/clamp/clds/AbstractIT.java @@ -1,3 +1,26 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2017 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + package org.onap.clamp.clds; import org.junit.BeforeClass; @@ -6,14 +29,11 @@ import org.onap.clamp.clds.model.refprop.RefProp; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ActiveProfiles; -/** - * Created by j on 6/16/17. - */ @ActiveProfiles("clamp-default") public abstract class AbstractIT { @Autowired - protected RefProp refProp; + protected RefProp refProp; @Autowired protected PolicyClient policyClient; diff --git a/src/test/java/org/onap/clamp/clds/it/AsdcIT.java b/src/test/java/org/onap/clamp/clds/it/AsdcIT.java deleted file mode 100644 index d616b7e2e..000000000 --- a/src/test/java/org/onap/clamp/clds/it/AsdcIT.java +++ /dev/null @@ -1,56 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2017 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============================================ - * =================================================================== - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - */ - -package org.onap.clamp.clds.it; - -import org.onap.clamp.clds.AbstractIT; -import org.onap.clamp.clds.client.req.SdcReq; -import org.onap.clamp.clds.model.CldsEvent; -import org.onap.clamp.clds.model.prop.ModelProperties; -import org.onap.clamp.clds.transform.TransformUtil; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -/** - * Test DCAE API in org.onap.clamp.ClampDesigner.client package - replicate DCAE Delegates in test. - */ -@RunWith(SpringRunner.class) -@SpringBootTest -public class AsdcIT extends AbstractIT { - - @Test - public void testBlueprint() throws Exception { - String modelProp = TransformUtil.getResourceAsString("example/modelProp.json"); - String modelBpmnProp = TransformUtil.getResourceAsString("example/modelBpmnProp.json"); - String modelName = "example-model06"; - String controlName = "ClosedLoop-FRWL-SIG04-1582f840-test-test-1234-005056a9d756"; - String docText = TransformUtil.getResourceAsString("example/templateProp.json"); - ModelProperties prop = new ModelProperties(modelName, controlName, CldsEvent.ACTION_SUBMIT, modelBpmnProp, modelProp); - String blueprint = SdcReq.formatBlueprint(refProp, prop, docText); - System.out.println("blueprint=" + blueprint); - } - -} diff --git a/src/test/java/org/onap/clamp/clds/it/DcaeIT.java b/src/test/java/org/onap/clamp/clds/it/DcaeIT.java index aef4c64f6..54b27974d 100644 --- a/src/test/java/org/onap/clamp/clds/it/DcaeIT.java +++ b/src/test/java/org/onap/clamp/clds/it/DcaeIT.java @@ -48,7 +48,7 @@ public class DcaeIT extends AbstractIT { String modelName = "example-model"; String controlName = "ClosedLoop-FRWL-SIG-1582f840-2881-11e6-b4ec-005056a9d756"; - ModelProperties prop = new ModelProperties(modelName, controlName, CldsEvent.ACTION_SUBMIT, modelBpmnProp, modelProp); + ModelProperties prop = new ModelProperties(modelName, controlName, CldsEvent.ACTION_SUBMIT, true, modelBpmnProp, modelProp); String dcaeReq = DcaeReq.format(refProp, prop); System.out.println("dcaeReq=" + dcaeReq); diff --git a/src/test/java/org/onap/clamp/clds/it/PolicyClientIT.java b/src/test/java/org/onap/clamp/clds/it/PolicyClientIT.java index d0fcf42e6..7960c6afb 100644 --- a/src/test/java/org/onap/clamp/clds/it/PolicyClientIT.java +++ b/src/test/java/org/onap/clamp/clds/it/PolicyClientIT.java @@ -5,16 +5,16 @@ * Copyright (C) 2017 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. + * 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 + * + * 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============================================ * =================================================================== @@ -34,18 +34,20 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.onap.clamp.clds.AbstractIT; +import org.onap.clamp.clds.client.req.TcaMPolicyReq; import org.onap.clamp.clds.model.CldsEvent; -import org.onap.clamp.clds.model.prop.ModelProperties; +import org.onap.clamp.clds.model.prop.*; import org.onap.policy.api.AttributeType; +import org.skyscreamer.jsonassert.JSONAssert; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.test.context.junit4.SpringRunner; import org.onap.clamp.clds.client.req.OperationalPolicyReq; import org.onap.clamp.clds.client.req.StringMatchPolicyReq; -import org.onap.clamp.clds.model.prop.Policy; -import org.onap.clamp.clds.model.prop.StringMatch; import org.onap.clamp.clds.transform.TransformUtil; +import static org.junit.Assert.assertEquals; + /** * Test Policy API in org.onap.clamp.ClampDesigner.client package - replicate * Policy Delegates in tests. @@ -67,105 +69,131 @@ public class PolicyClientIT extends AbstractIT { } private void createUpdateStringMatch(String actionCd) throws Exception { - ModelProperties prop = new ModelProperties(modelName, controlName, actionCd, modelBpmnProp, modelProp); - String stringMatchPolicyRequestUuid = UUID.randomUUID().toString(); - String policyJson = StringMatchPolicyReq.format(refProp, prop); - System.out.println("String Match policyJson=" + policyJson); - String responseMessage = policyClient.sendMicroService(policyJson, prop, stringMatchPolicyRequestUuid); - System.out.println(responseMessage); + ModelProperties prop = new ModelProperties(modelName, controlName, actionCd, false, modelBpmnProp, modelProp); + StringMatch stringMatch = prop.getType(StringMatch.class); + if (stringMatch.isFound()) { + String stringMatchPolicyRequestUuid = UUID.randomUUID().toString(); + + String policyJson = StringMatchPolicyReq.format(refProp, prop); + String correctValue = TransformUtil.getResourceAsString("expected/stringmatch.json"); + JSONAssert.assertEquals(policyJson, correctValue, true); + String responseMessage = ""; + try { + responseMessage = policyClient.sendMicroService(policyJson, prop, stringMatchPolicyRequestUuid); + } catch (Exception e) { + assertTrue(e.getMessage().contains("Policy send failed: PE500 ")); + } + System.out.println(responseMessage); + } } private void createUpdateOperationalPolicy(String actionCd) throws Exception { - ModelProperties prop = new ModelProperties(modelName, controlName, actionCd, modelBpmnProp, modelProp); - String operationalPolicyRequestUuid = UUID.randomUUID().toString(); - Map> attributes = OperationalPolicyReq.formatAttributes(refProp, prop); - String responseMessage = policyClient.sendBrms(attributes, prop, operationalPolicyRequestUuid); - System.out.println(responseMessage); + ModelProperties prop = new ModelProperties(modelName, controlName, actionCd, false, modelBpmnProp, modelProp); + Policy policy = prop.getType(Policy.class); + if (policy.isFound()) { + for (PolicyChain policyChain : policy.getPolicyChains()) { + String operationalPolicyRequestUuid = UUID.randomUUID().toString(); + + Map> attributes = OperationalPolicyReq.formatAttributes(refProp, + prop, policy.getId(), policyChain); + String responseMessage = policyClient.sendBrms(attributes, prop, operationalPolicyRequestUuid); + System.out.println(responseMessage); + } + } } - private void createUpdatePolicies(String actionCd) throws Exception { - createUpdateStringMatch(actionCd); - createUpdateOperationalPolicy(actionCd); + private void createUpdateTcaPolicy(String actionCd) throws Exception { + ModelProperties prop = new ModelProperties(modelName, controlName, actionCd, false, modelBpmnProp, modelProp); + Tca tca = prop.getTca(); + if (tca.isFound()) { + String tcaPolicyRequestUuid = UUID.randomUUID().toString(); + String policyJson = TcaMPolicyReq.formatTca(refProp, prop); + String correctValue = TransformUtil.getResourceAsString("expected/tca.json"); + JSONAssert.assertEquals(policyJson, correctValue, true); + String responseMessage = ""; + try { + responseMessage = policyClient.sendMicroService(policyJson, prop, tcaPolicyRequestUuid); + } catch (Exception e) { + assertTrue(e.getMessage().contains("Policy send failed: PE500 ")); + } + System.out.println(responseMessage); + } } private void deleteStringMatchPolicy(String actionCd) throws Exception { - ModelProperties prop = new ModelProperties(modelName, controlName, actionCd, modelBpmnProp, modelProp); - StringMatch stringMatch = prop.getStringMatch(); - prop.setCurrentModelElementId(stringMatch.getId()); - String responseMessage = policyClient.deleteMicrosService(prop); - System.out.println(responseMessage); + ModelProperties prop = new ModelProperties(modelName, controlName, actionCd, false, modelBpmnProp, modelProp); + + StringMatch stringMatch = prop.getType(StringMatch.class); + if (stringMatch.isFound()) { + prop.setCurrentModelElementId(stringMatch.getId()); + String responseMessage = ""; + try { + responseMessage = policyClient.deleteMicrosService(prop); + } catch (Exception e) { + assertTrue(e.getMessage().contains("Policy delete failed: PE500 ")); + } + System.out.println(responseMessage); + } } private void deleteOperationalPolicy(String actionCd) throws Exception { - ModelProperties prop = new ModelProperties(modelName, controlName, actionCd, modelBpmnProp, modelProp); - Policy policy = prop.getPolicy(); - prop.setCurrentModelElementId(policy.getId()); - String responseMessage = policyClient.deleteBrms(prop); - System.out.println(responseMessage); + ModelProperties prop = new ModelProperties(modelName, controlName, actionCd, false, modelBpmnProp, modelProp); + + Policy policy = prop.getType(Policy.class); + if (policy.isFound()) { + prop.setCurrentModelElementId(policy.getId()); + for (PolicyChain policyChain : policy.getPolicyChains()) { + prop.setPolicyUniqueId(policyChain.getPolicyId()); + String responseMessage = policyClient.deleteBrms(prop); + System.out.println(responseMessage); + } + } } - private void deletePolicies(String actionCd) throws Exception { - deleteStringMatchPolicy(actionCd); - deleteOperationalPolicy(actionCd); - } + private void deleteTcaPolicy(String actionCd) throws Exception { + ModelProperties prop = new ModelProperties(modelName, controlName, actionCd, false, modelBpmnProp, modelProp); - /** - * Delete policies so we can start with a clean state. But this is just a - * precaution - the policies might not already exists. So ignore errors in - * attempting to do this. - * - * @param actionCd - */ - private void cleanUpPolicies(String actionCd) { - try { - deleteStringMatchPolicy(actionCd); - } catch (Exception e) { - System.err.println( - "TestPolicyClient: The following error is ok - attempting delete in case the policy exists - the goal is to start with clean slate"); - } - try { - deleteOperationalPolicy(actionCd); - } catch (Exception e) { - System.err.println( - "TestPolicyClient: The following error is ok - attempting delete in case the policy exists - the goal is to start with clean slate"); + Tca tca = prop.getTca(); + if (tca.isFound()) { + prop.setCurrentModelElementId(tca.getId()); + String responseMessage = ""; + try { + responseMessage = policyClient.deleteMicrosService(prop); + } catch (Exception e) { + assertTrue(e.getMessage().contains("Policy delete failed: PE500 ")); + } + + System.out.println(responseMessage); } } - @Test - public void testCreateUpdateDeletePolicy() throws Exception { - - cleanUpPolicies(CldsEvent.ACTION_DELETE); - TimeUnit.SECONDS.sleep(5); - System.out.println("entered into update"); - String actionCd; - - try { - actionCd = CldsEvent.ACTION_SUBMIT; - createUpdatePolicies(actionCd); - } catch (Exception e) { - assertTrue(e.getMessage().contains("Policy send failed: PE500 ")); - } + // @Test + public void testCreateUpdateDeleteStringMatchPolicy() throws Exception { - try { - actionCd = CldsEvent.ACTION_RESUBMIT; - createUpdatePolicies(actionCd); - } catch (Exception e) { - assertTrue(e.getMessage().contains("Policy send failed: PE500 ")); - } + createUpdateStringMatch(CldsEvent.ACTION_SUBMIT); - try { - actionCd = CldsEvent.ACTION_RESUBMIT; - createUpdatePolicies(actionCd); - } catch (Exception e) { - assertTrue(e.getMessage().contains("Policy send failed: PE500 ")); - } + TimeUnit.SECONDS.sleep(20); - try { - TimeUnit.SECONDS.sleep(20); - deletePolicies(CldsEvent.ACTION_DELETE); - } catch (Exception e) { - assertTrue(e.getMessage().contains("Unable to get valid Response from PDP")); - } + deleteStringMatchPolicy(CldsEvent.ACTION_DELETE); + } + + // @Test + public void testCreateUpdateDeleteOperationalPolicy() throws Exception { + + createUpdateOperationalPolicy(CldsEvent.ACTION_SUBMIT); + + TimeUnit.SECONDS.sleep(20); + + deleteOperationalPolicy(CldsEvent.ACTION_DELETE); + } + + @Test + public void testCreateUpdateDeleteTcaPolicy() throws Exception { + + createUpdateTcaPolicy(CldsEvent.ACTION_SUBMIT); + + TimeUnit.SECONDS.sleep(20); + deleteTcaPolicy(CldsEvent.ACTION_DELETE); } } diff --git a/src/test/java/org/onap/clamp/clds/it/PropJsonBuilderIT.java b/src/test/java/org/onap/clamp/clds/it/PropJsonBuilderIT.java index 7eeb04eb8..ca849e170 100644 --- a/src/test/java/org/onap/clamp/clds/it/PropJsonBuilderIT.java +++ b/src/test/java/org/onap/clamp/clds/it/PropJsonBuilderIT.java @@ -5,16 +5,16 @@ * Copyright (C) 2017 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. + * 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 + * + * 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============================================ * =================================================================== @@ -23,58 +23,59 @@ package org.onap.clamp.clds.it; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; -import org.onap.clamp.clds.AbstractIT; -import org.onap.clamp.clds.client.req.SdcReq; -import org.onap.clamp.clds.model.CldsAsdcServiceDetail; +import java.io.IOException; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.onap.clamp.clds.AbstractIT; +import org.onap.clamp.clds.client.req.SdcReq; +import org.onap.clamp.clds.model.CldsSdcServiceDetail; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.test.context.junit4.SpringRunner; -import java.io.IOException; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.ObjectNode; /** - * Test ASDC API - stand alone (except for some config). - * Replicates getAsdcServices and getAsdcServicesByUUID in the CldsService - * Adds test of putting putting an artifact to VF. - * TODO Also needs update and perhaps delete tests. + * Test SDC API - stand alone (except for some config). Replicates + * getSdcServices and getSdcServicesByUUID in the CldsService Adds test of + * putting putting an artifact to VF. TODO Also needs update and perhaps delete + * tests. */ @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) public class PropJsonBuilderIT extends AbstractIT { - private String globalPropsPartial; + private String globalPropsPartial; private ObjectMapper mapper; @Before public void setUp() throws IOException { - String url = refProp.getStringValue("asdc.serviceUrl"); - String catalogUrl = refProp.getStringValue("asdc.catalog.url"); - String basicAuth = SdcReq.getAsdcBasicAuth(refProp); + String url = refProp.getStringValue("sdc.serviceUrl"); + String catalogUrl = refProp.getStringValue("sdc.catalog.url"); + String basicAuth = SdcReq.getSdcBasicAuth(refProp); System.out.println("value of string and basicAuth:" + url + basicAuth); - CldsAsdcServiceDetail cldsservicedetail = new CldsAsdcServiceDetail(); - // cldsservicedetail.set + CldsSdcServiceDetail cldsservicedetail = new CldsSdcServiceDetail(); + // cldsservicedetail.set String globalProps = refProp.getStringValue("globalPropsTest"); globalPropsPartial = refProp.getStringValue("globalPropsPartialTest"); mapper = new ObjectMapper(); } /** - * List services from ASDC. - * List meta data for a particular service from ASDC. - * Test uploading artifact to a VF in ASDC. + * List services from SDC. List meta data for a particular service from SDC. + * Test uploading artifact to a VF in SDC. */ @Test - public void testAsdc() throws Exception { -// String createEmptySharedObject = createEmptySharedObject(); -// System.out.println("value of emptySharedObject:" + createEmptySharedObject); + public void testSdc() throws Exception { + // String createEmptySharedObject = createEmptySharedObject(); + // System.out.println("value of emptySharedObject:" + + // createEmptySharedObject); sampleJsonObject(); System.out.println(createTestEmptySharedObject()); } @@ -83,8 +84,8 @@ public class PropJsonBuilderIT extends AbstractIT { ArrayNode arrayNode = mapper.createArrayNode(); /** - * Create three JSON Objects objectNode1, objectNode2, objectNode3 - * Add all these three objects in the array + * Create three JSON Objects objectNode1, objectNode2, objectNode3 Add + * all these three objects in the array */ ObjectNode objectNode1 = mapper.createObjectNode(); @@ -107,8 +108,8 @@ public class PropJsonBuilderIT extends AbstractIT { arrayNode.add(objectNode3); /** - * We can directly write the JSON in the console. - * But it wont be pretty JSON String + * We can directly write the JSON in the console. But it wont be pretty + * JSON String */ System.out.println(arrayNode.toString()); @@ -121,17 +122,8 @@ public class PropJsonBuilderIT extends AbstractIT { private String createEmptySharedObject() throws JsonProcessingException { /** - * "": { - "vf": { - "": "" - }, - "location": { - "": "" - }, - "alarmCondition": { - "": "" - } - } + * "": { "vf": { "": "" }, "location": { "": "" }, "alarmCondition": { + * "": "" } } */ ObjectNode emptyObjectNode = mapper.createObjectNode(); emptyObjectNode.put("", ""); @@ -149,10 +141,7 @@ public class PropJsonBuilderIT extends AbstractIT { emptyServiceObjectNode.putPOJO("", samArrayNode); /** - * "vf": { - * " ": " ", - * "DCAE_CLAMP_DEMO3 1": "DCAE_CLAMP_DEMO3" - * } + * "vf": { " ": " ", "DCAE_CLAMP_DEMO3 1": "DCAE_CLAMP_DEMO3" } * */ ObjectNode vfObjectNode2 = mapper.createObjectNode(); @@ -164,11 +153,8 @@ public class PropJsonBuilderIT extends AbstractIT { vfObjectNode2.putPOJO("vf", vfArrayNode); /** - * "location": { - "SNDGCA64": "San Diego SAN3", - "ALPRGAED": "Alpharetta PDK1", - "LSLEILAA": "Lisle DPA3" - }, + * "location": { "SNDGCA64": "San Diego SAN3", "ALPRGAED": + * "Alpharetta PDK1", "LSLEILAA": "Lisle DPA3" }, */ ObjectNode locationObjectNode2 = mapper.createObjectNode(); ObjectNode sandiegoLocationNode = mapper.createObjectNode(); @@ -182,9 +168,9 @@ public class PropJsonBuilderIT extends AbstractIT { locationObjectNode2.putPOJO("location", locationArrayNode); /** - * "alarmCondition": { - "A+Fallback+Operation+will+soon+be+started": "A Fallback Operation will soon be started", - "BRM%2C+Auto+Export+Backup+Failed": "BRM, Auto Export Backup Failed", + * "alarmCondition": { "A+Fallback+Operation+will+soon+be+started": + * "A Fallback Operation will soon be started", + * "BRM%2C+Auto+Export+Backup+Failed": "BRM, Auto Export Backup Failed", */ ObjectNode alarmConditionObjectNode2 = mapper.createObjectNode(); ObjectNode alamrCondition1 = mapper.createObjectNode(); @@ -214,18 +200,8 @@ public class PropJsonBuilderIT extends AbstractIT { byServiceBasicObjetNode.putPOJO("byService", byServiceBasicArrayNode); /** - * "byVf": { - "": { - "vfc": { - "": "" - }, - "03596c12-c7e3-44b7-8994-5cdfeda8afdd": { - "vfc": { - " ": " " - } - } - } - } + * "byVf": { "": { "vfc": { "": "" }, + * "03596c12-c7e3-44b7-8994-5cdfeda8afdd": { "vfc": { " ": " " } } } } */ ObjectNode byVfCBasicNode = mapper.createObjectNode(); @@ -262,17 +238,8 @@ public class PropJsonBuilderIT extends AbstractIT { ObjectNode locationJsonNode = (ObjectNode) mapper.readValue(locationStringValue, JsonNode.class); ObjectNode alarmStringJsonNode = (ObjectNode) mapper.readValue(alarmStringValue, JsonNode.class); /** - * "": { - "vf": { - "": "" - }, - "location": { - "": "" - }, - "alarmCondition": { - "": "" - } - } + * "": { "vf": { "": "" }, "location": { "": "" }, "alarmCondition": { + * "": "" } } */ ObjectNode emptyObjectNode = mapper.createObjectNode(); emptyObjectNode.put("", ""); @@ -284,10 +251,7 @@ public class PropJsonBuilderIT extends AbstractIT { emptyServiceObjectNode.putPOJO("", vfObjectNode); /** - * "vf": { - * " ": " ", - * "DCAE_CLAMP_DEMO3 1": "DCAE_CLAMP_DEMO3" - * } + * "vf": { " ": " ", "DCAE_CLAMP_DEMO3 1": "DCAE_CLAMP_DEMO3" } * */ ObjectNode vfObjectNode2 = mapper.createObjectNode(); @@ -297,43 +261,32 @@ public class PropJsonBuilderIT extends AbstractIT { vfObjectNode2.putPOJO("vf", dcaeClampDemo3Node); /** - * "location": { - "SNDGCA64": "San Diego SAN3", - "ALPRGAED": "Alpharetta PDK1", - "LSLEILAA": "Lisle DPA3" - }, + * "location": { "SNDGCA64": "San Diego SAN3", "ALPRGAED": + * "Alpharetta PDK1", "LSLEILAA": "Lisle DPA3" }, */ -// ObjectNode sandiegoLocationNode = mapper.createObjectNode(); -// sandiegoLocationNode.put("SNDGCA64","San Diego SAN3"); -// sandiegoLocationNode.put("ALPRGAED","Alpharetta PDK1"); + // ObjectNode sandiegoLocationNode = mapper.createObjectNode(); + // sandiegoLocationNode.put("SNDGCA64","San Diego SAN3"); + // sandiegoLocationNode.put("ALPRGAED","Alpharetta PDK1"); vfObjectNode2.putPOJO("location", locationJsonNode); /** - * "alarmCondition": { - "A+Fallback+Operation+will+soon+be+started": "A Fallback Operation will soon be started", - "BRM%2C+Auto+Export+Backup+Failed": "BRM, Auto Export Backup Failed", + * "alarmCondition": { "A+Fallback+Operation+will+soon+be+started": + * "A Fallback Operation will soon be started", + * "BRM%2C+Auto+Export+Backup+Failed": "BRM, Auto Export Backup Failed", */ -// ObjectNode alamrCondition1 = mapper.createObjectNode(); -// alamrCondition1.put("A+Fallback+Operation+will+soon+be+started","A Fallback Operation will soon be started"); -// alamrCondition1.put("BRM%2C+Scheduled+Backup+Failed","BRM, Scheduled Backup Failed"); + // ObjectNode alamrCondition1 = mapper.createObjectNode(); + // alamrCondition1.put("A+Fallback+Operation+will+soon+be+started","A + // Fallback Operation will soon be started"); + // alamrCondition1.put("BRM%2C+Scheduled+Backup+Failed","BRM, Scheduled + // Backup Failed"); vfObjectNode2.putPOJO("alarmCondition", alarmStringJsonNode); emptyServiceObjectNode.putPOJO("c989a551-69f7-4b30-b10a-2e85bb227c30", vfObjectNode2); ObjectNode byServiceBasicObjetNode = mapper.createObjectNode(); byServiceBasicObjetNode.putPOJO("byService", emptyServiceObjectNode); /** - * "byVf": { - "": { - "vfc": { - "": "" - }, - "03596c12-c7e3-44b7-8994-5cdfeda8afdd": { - "vfc": { - " ": " " - } - } - } - } + * "byVf": { "": { "vfc": { "": "" }, + * "03596c12-c7e3-44b7-8994-5cdfeda8afdd": { "vfc": { " ": " " } } } } */ ObjectNode emptyvfcobjectNode = mapper.createObjectNode(); @@ -352,19 +305,10 @@ public class PropJsonBuilderIT extends AbstractIT { return readTree.toString(); } - private String createCldsSharedObject(CldsAsdcServiceDetail cldsAsdcServiceDetail) throws IOException { + private String createCldsSharedObject(CldsSdcServiceDetail CldsSdcServiceDetail) throws IOException { /** - * "": { - "vf": { - "": "" - }, - "location": { - "": "" - }, - "alarmCondition": { - "": "" - } - } + * "": { "vf": { "": "" }, "location": { "": "" }, "alarmCondition": { + * "": "" } } */ ObjectNode emptyObjectNode = mapper.createObjectNode(); emptyObjectNode.put("", ""); @@ -376,10 +320,7 @@ public class PropJsonBuilderIT extends AbstractIT { emptyServiceObjectNode.putPOJO("", vfObjectNode); /** - * "vf": { - * " ": " ", - * "DCAE_CLAMP_DEMO3 1": "DCAE_CLAMP_DEMO3" - * } + * "vf": { " ": " ", "DCAE_CLAMP_DEMO3 1": "DCAE_CLAMP_DEMO3" } * */ ObjectNode vfObjectNode2 = mapper.createObjectNode(); @@ -389,11 +330,8 @@ public class PropJsonBuilderIT extends AbstractIT { vfObjectNode2.putPOJO("vf", dcaeClampDemo3Node); /** - * "location": { - "SNDGCA64": "San Diego SAN3", - "ALPRGAED": "Alpharetta PDK1", - "LSLEILAA": "Lisle DPA3" - }, + * "location": { "SNDGCA64": "San Diego SAN3", "ALPRGAED": + * "Alpharetta PDK1", "LSLEILAA": "Lisle DPA3" }, */ ObjectNode sandiegoLocationNode = mapper.createObjectNode(); sandiegoLocationNode.put("SNDGCA64", "San Diego SAN3"); @@ -401,9 +339,9 @@ public class PropJsonBuilderIT extends AbstractIT { vfObjectNode2.putPOJO("location", sandiegoLocationNode); /** - * "alarmCondition": { - "A+Fallback+Operation+will+soon+be+started": "A Fallback Operation will soon be started", - "BRM%2C+Auto+Export+Backup+Failed": "BRM, Auto Export Backup Failed", + * "alarmCondition": { "A+Fallback+Operation+will+soon+be+started": + * "A Fallback Operation will soon be started", + * "BRM%2C+Auto+Export+Backup+Failed": "BRM, Auto Export Backup Failed", */ ObjectNode alamrCondition1 = mapper.createObjectNode(); alamrCondition1.put("A+Fallback+Operation+will+soon+be+started", "A Fallback Operation will soon be started"); @@ -414,18 +352,8 @@ public class PropJsonBuilderIT extends AbstractIT { byServiceBasicObjetNode.putPOJO("byService", emptyServiceObjectNode); /** - * "byVf": { - "": { - "vfc": { - "": "" - }, - "03596c12-c7e3-44b7-8994-5cdfeda8afdd": { - "vfc": { - " ": " " - } - } - } - } + * "byVf": { "": { "vfc": { "": "" }, + * "03596c12-c7e3-44b7-8994-5cdfeda8afdd": { "vfc": { " ": " " } } } } */ ObjectNode emptyvfcobjectNode = mapper.createObjectNode(); diff --git a/src/test/java/org/onap/clamp/clds/model/prop/CustomModelElement.java b/src/test/java/org/onap/clamp/clds/model/prop/CustomModelElement.java new file mode 100644 index 000000000..d0ba7455e --- /dev/null +++ b/src/test/java/org/onap/clamp/clds/model/prop/CustomModelElement.java @@ -0,0 +1,47 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2017 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.model.prop; + +import com.fasterxml.jackson.databind.JsonNode; + +/** + * A CustomModelElement to test the capability to add new elements on the fly. + */ +public class CustomModelElement extends ModelElement { + + private static final String CUSTOM_TYPE = "customType"; + + /** + * + */ + public CustomModelElement(ModelProperties modelProp, ModelBpmn modelBpmn, JsonNode modelJson) { + super(CUSTOM_TYPE, modelProp, modelBpmn, modelJson); + topicPublishes = getValueByName("topicPublishes"); + } + + public static final String getType() { + return CUSTOM_TYPE; + } + +} diff --git a/src/test/java/org/onap/clamp/clds/model/prop/CustomModelElementTest.java b/src/test/java/org/onap/clamp/clds/model/prop/CustomModelElementTest.java new file mode 100644 index 000000000..9c9cb4a73 --- /dev/null +++ b/src/test/java/org/onap/clamp/clds/model/prop/CustomModelElementTest.java @@ -0,0 +1,67 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2017 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.model.prop; + +import java.io.IOException; + +import org.junit.Assert; +import org.junit.Test; +import org.onap.clamp.clds.transform.TransformUtil; + +public class CustomModelElementTest { + + public CustomModelElementTest() { + } + + @Test + public void testNewElement() { + + try { + String modelBpmnProp = TransformUtil.getResourceAsString("example/modelBpmnProp.json"); + String modelProp = TransformUtil.getResourceAsString("example/modelProp.json"); + String modName = "example-model-name"; + String controlName = "example-control-name"; + + CustomModelElement customModelElement = null; + + // Instantiate first, we should not have our CustomModelElement yet + ModelProperties prop = new ModelProperties(modName, controlName, null, true, modelBpmnProp, modelProp); + + Assert.assertNotNull(prop); + + customModelElement = prop.getType(CustomModelElement.class); + + Assert.assertNull(customModelElement); + + ModelProperties.registerModelElement(CustomModelElement.class, CustomModelElement.getType()); + + customModelElement = prop.getType(CustomModelElement.class); + + Assert.assertNotNull(customModelElement); + + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java b/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java index 54a7a4a72..1038e5de0 100644 --- a/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java +++ b/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java @@ -5,16 +5,16 @@ * Copyright (C) 2017 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. + * 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 + * + * 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============================================ * =================================================================== @@ -26,7 +26,7 @@ package org.onap.clamp.clds.model.prop; import org.onap.clamp.clds.transform.TransformUtil; import org.junit.Assert; import org.junit.Test; - +import static org.junit.Assert.assertEquals; import java.io.IOException; /** @@ -41,33 +41,54 @@ public class ModelPropertiesTest { String modName = "example-model-name"; String controlName = "example-control-name"; - ModelProperties prop = new ModelProperties(modName, controlName, null, modelBpmnProp, modelProp); + ModelProperties prop = new ModelProperties(modName, controlName, null, true, modelBpmnProp, modelProp); Assert.assertEquals(modName, prop.getModelName()); Assert.assertEquals(controlName, prop.getControlName()); Assert.assertEquals(null, prop.getActionCd()); Global g = prop.getGlobal(); - Assert.assertEquals("df6fcd2b-1932-429e-bb13-0cd0d32113cb", g.getService()); - Assert.assertEquals("[SNDGCA64, ALPRGAED]", g.getLocation().toString()); - Assert.assertEquals("[4b49acee-cf70-4b20-b956-a4fe0c1a8239]", g.getResourceVf().toString()); - - Collector c = prop.getCollector(); - Assert.assertEquals("Collector_", c.getId()); - Assert.assertEquals("DCAE-COLLECTOR-UCSNMP", c.getTopicPublishes()); + Assert.assertEquals("0f983e18-4603-4bb4-a98c-e29691fb16a1", g.getService()); + Assert.assertEquals("[SNDGCA64]", g.getLocation().toString()); + Assert.assertEquals("[6c7aaec2-59eb-41d9-8681-b7f976ab668d]", g.getResourceVf().toString()); - StringMatch sm = prop.getStringMatch(); + StringMatch sm = prop.getType(StringMatch.class); Assert.assertEquals("StringMatch_", sm.getId()); - Assert.assertEquals("DCAE-CL-EVENT", sm.getTopicPublishes()); - Policy p = prop.getPolicy(); + Policy p = prop.getType(Policy.class); Assert.assertEquals("Policy_", p.getId()); Assert.assertEquals(null, p.getTopicPublishes()); - Assert.assertEquals("DCAE-CL-EVENT", p.getTopicSubscribes()); - Assert.assertEquals(500, p.getTimeout().intValue()); - - Tca t = prop.getTca(); + Assert.assertEquals(null, p.getTopicSubscribes()); + + Tca t = prop.getType(Tca.class); Assert.assertEquals("Narra", t.getTcaItems().get(0).getTcaName()); Assert.assertEquals(Integer.valueOf(4), t.getTcaItems().get(0).getTcaThreshholds().get(0).getThreshhold()); } + @Test + public void testPolicy() throws IOException { + + String modelBpmnProp = TransformUtil.getResourceAsString("example/modelBpmnPropForPolicy.json"); + System.out.println(modelBpmnProp); + + String modelProp = TransformUtil.getResourceAsString("example/modelPropForPolicy.json"); + System.out.println(modelProp); + + ModelProperties prop = new ModelProperties("example-model-name", "example-control-name", null, true, modelBpmnProp, modelProp); + System.out.println("attempting prop.getGlobal()..."); + Global g = prop.getGlobal(); + System.out.println("attempting prop.getStringMatch()..."); + StringMatch stringMatch = prop.getType(StringMatch.class); + if(stringMatch.isFound()){ + System.out.println("stringMatch json object is present..."); + assertEquals("1", stringMatch.getResourceGroups().get(0).getPolicyId()); + } + System.out.println("attempting prop.getPolicy()..."); + Policy policy = prop.getType(Policy.class); + if(policy.isFound()){ + System.out.println("policy json object is present..."); + assertEquals("1", policy.getPolicyChains().get(0).getPolicyId()); + } + } + + } \ No newline at end of file diff --git a/src/test/resources/clds/clds-reference.properties b/src/test/resources/clds/clds-reference.properties index 64879895a..7cedc130f 100644 --- a/src/test/resources/clds/clds-reference.properties +++ b/src/test/resources/clds/clds-reference.properties @@ -37,10 +37,10 @@ tca.signature.template={"nfNamingCode":"ENBE","target":"common_id","targetType": dcae.template={"properties":{"service_name":"","service_ids":[],"vnf_ids":[],"location_ids":[]},"template":{"string_matching":{"dcae":{"inputTopic":"","outputTopic":"","closedLoopControlName":"","closedLoopEventClient":"configuration.dcae.microservice.stringmatcher.xml","policyName":"","policyScope":"service=vSCP;resource=F5;type=configuration","policyVersion":"v0.0.1","serviceConfigurations":{}}}}} dcae.decode.service_ids={"vUSP":["vUSP - vCTS"],"Trinity":["ASBGv TLS VNF","ASBGv No TLS","ASBGv (NO TLS) VNF","ASBGv TLS","NSBGv VNF","NSBGv"],"vSCP":["AKRON_vSCP_F5_FW-SVC/vSCP_F5_FW 1","ALLEN_vSCP_F5_FW-SVC/vSCP_F5_FW 1"],"vProbes":["vProbes - FW"]} # -# ASDC request blueprint properties +# SDC request blueprint properties # -asdc.template={} -asdc.decode.service_ids={} +sdc.template={} +sdc.decode.service_ids={} # # # General Policy request properties @@ -73,25 +73,34 @@ sm.rulegroup.vSCP=false # op.policyDescription=from clds # default -op.templateName=ClosedLoopvUSP +op.templateName=ClosedLoopGuardvUSP op.operationTopic=APPC-CL op.notificationTopic=POLICY-CL-MGT op.controller=1610-vUSP # by service: vSCP op.templateName.vSCP=ClosedLoopTemplate op.controller.vSCP=1607-f5fw -# -# Asdc service properties -asdc.catalog.url=http://127.0.0.1:8080/sdc/v1/catalog/ -asdc.hostUrl=http://127.0.0.1:8080 -asdc.serviceUrl=http://127.0.0.1:8080/sdc/v1/catalog/services -asdc.serviceUsername=test -asdc.servicePassword=123456 -asdc.artifactLabel=blueprintclampcockpit -asdc.asdcX-ECOMP-InstanceID=CLAMP -asdc.artifactType=DCAE_INVENTORY_BLUEPRINT -asdc.locationArtifactLabel=LocationClampCockpit -asdc.locationArtifactType=DCAE_INVENTORY_JSON +op.eNodeB.templateName=CLeNodeB +op.eNodeB.operationTopic=com.onap.sdnr.RanCLRequest-v00 +op.eNodeB.notificationTopic=com.onap-policy.IST-ENODEB-CL +op.eNodeB.controller=ClosedLoop-eNodeB +op.eNodeB.recipe={"eNodeBRecipes":[{"Actor":"AOTS","Recipe":"checkENodeBTicketHours","ParentPolicy":"","PPConditions":"","Retry":"0","TimeLimit":"120"},{"Actor":"AOTS","Recipe":"checkEquipmentStatus","ParentPolicy":"checkENodeBTicketHours","PPConditions":"Success","Retry":"0","TimeLimit":"120"},{"Actor":"AOTS","Recipe":"checkEimStatus","ParentPolicy":"checkEquipmentStatus","PPConditions":"Success","Retry":"0","TimeLimit":"120"},{"Actor":"AOTS","Recipe":"checkMaintenanceWindow","ParentPolicy":"checkEimStatus","PPConditions":"Success","Retry":"0","TimeLimit":"120"},{"Actor":"SDNR","Recipe":"Reset","ParentPolicy":"checkMaintenanceWindow","PPConditions":"Success","Retry":"","TimeLimit":""}]} +op.eNodeB.timeWindow=35 +op.eNodeB.limit=2 +op.eNodeB.period=10s +# +# sdc service properties +sdc.catalog.url=http://127.0.0.1:8080/sdc/v1/catalog/ +sdc.hostUrl=http://127.0.0.1:8080 +sdc.serviceUrl=http://127.0.0.1:8080/sdc/v1/catalog/services +sdc.serviceUsername=test +sdc.servicePassword=123456 +sdc.artifactLabel=blueprintclampcockpit +sdc.sdcX-InstanceID=CLAMP +sdc.artifactType=DCAE_INVENTORY_BLUEPRINT +sdc.locationArtifactLabel=LocationClampCockpit +sdc.locationArtifactType=DCAE_INVENTORY_JSON +sdc.InstanceID=X-ONAP-InstanceID # # # diff --git a/src/test/resources/example/modelBpmnProp.json b/src/test/resources/example/modelBpmnProp.json index 140a5679f..26fd884d8 100644 --- a/src/test/resources/example/modelBpmnProp.json +++ b/src/test/resources/example/modelBpmnProp.json @@ -1 +1,41 @@ -{"collector":[{"id":"Collector_", "from":"StartEvent_1"}],"stringMatch":[{"id":"StringMatch_", "from":"Collector_"}],"policy":[{"id":"Policy_", "from":"StringMatch_"}],"tca":[{"id":"TCA_", "from":""}]} \ No newline at end of file +{ + "collector": + [ + { + "id": "Collector_", + "from": "StartEvent_1" + } + ], + + "stringMatch": + [ + { + "id": "StringMatch_", + "from": "Collector_" + } + ], + + "policy": + [ + { + "id": "Policy_", + "from": "StringMatch_" + } + ], + + "tca": + [ + { + "id": "TCA_", + "from": "" + } + ], + + "customType": + [ + { + "id": "CustomType_", + "from": "" + } + ] +} \ No newline at end of file diff --git a/src/test/resources/example/modelBpmnPropForPolicy.json b/src/test/resources/example/modelBpmnPropForPolicy.json new file mode 100644 index 000000000..243f7e807 --- /dev/null +++ b/src/test/resources/example/modelBpmnPropForPolicy.json @@ -0,0 +1,26 @@ +{ + "collector": + [ + + ], + "stringMatch": + [ + + ], + + "policy": + [ + { + "id": "Policy_", + "from": "StartEvent_1" + } + ], + + "tca": + [ + { + "id": "TCA_", + "from": "" + } + ] +} \ No newline at end of file diff --git a/src/test/resources/example/modelProp.json b/src/test/resources/example/modelProp.json index 831bf2d72..8b8e984f7 100644 --- a/src/test/resources/example/modelProp.json +++ b/src/test/resources/example/modelProp.json @@ -1,369 +1,789 @@ { - "Collector_":[ - { - "name":"topicPublishes", - "value":"DCAE-COLLECTOR-UCSNMP" - } - ], - "global":[ - { - "name":"service", - "value":[ - "df6fcd2b-1932-429e-bb13-0cd0d32113cb" - ] - }, - { - "name":"vf", - "value":[ - "4b49acee-cf70-4b20-b956-a4fe0c1a8239" - ] - }, - { - "name":"location", - "value":[ - "SNDGCA64", - "ALPRGAED" - ] - } - ], - "StringMatch_":[ + "Collector_": [ - { - "name":"topicPublishes", - "value":"DCAE-CL-EVENT" - } + { + "name": "topicPublishes", + "value": "DCAE-COLLECTOR-UCSNMP" + } ], - { - "serviceConfigurations":[ - [ - { - "name":"aaiMatchingFields", - "value":[ - "Identiy" - ] - }, - { - "name":"aaiSendFields", - "value":[ - "VMID" - ] - }, - { - "name":"groupNumber", - "value":[ - "1" - ] - }, - { - "name":"timeWindow", - "value":[ - "1" + + "global": + [ + { + "name": "service", + "value": + [ + "0f983e18-4603-4bb4-a98c-e29691fb16a1" ] - }, - { - "name":"ageLimit", - "value":[ - "1600" + }, + + { + "name": "vf", + "value": + [ + "6c7aaec2-59eb-41d9-8681-b7f976ab668d" ] - }, - { - "name":"createClosedLoopEventId", - "value":[ - "Initial" + }, + + { + "name": "actionSet", + "value": + [ + "enbRecipe" ] - }, - { - "name":"outputEventName", - "value":[ - "OnSet" + }, + + { + "name": "location", + "value": + [ + "SNDGCA64" ] - }, - { - "stringSet":[ - { - "name":"alarmCondition", - "value":[ - "Reports a transient alarm condition when an outgoing Ro message send fails" - ] - }, - { - "name":"eventSeverity", - "value":[ - "WARNING" - ] - }, - { - "name":"eventSourceType", - "value":[ - "f5BigIP" + } + ], + + "HighlandPark_": + [ + [ + { + "name": "topicPublishes", + "value": "DCAE-HIGHLANDPARK-EVENT-OUTPUT-VOIP" + } + ], + + { + "serviceConfigurations": + [ + [ + { + "name": "alarmCondition", + "value": + [ + "Reports a transient alarm condition when an incoming ACR message is in conflict with former ACR in one diameter session" + ] + }, + + { + "name": "eventSourceType", + "value": + [ + "f5BigIP" + ] + }, + + { + "name": "eventSeverity", + "value": + [ + "NORMAL" + ] + } + ], + + [ + { + "name": "alarmCondition", + "value": + [ + "Reports a transient alarm condition when an incoming ACR message is in conflict with former ACR in one diameter session" + ] + }, + + { + "name": "eventSourceType", + "value": + [ + "f5BigIP" + ] + }, + + { + "name": "eventSeverity", + "value": + [ + "NORMAL" + ] + } ] - } ] - } + } + ], + + "StringMatch_": + { + "Group1": + [ + { + "name": "rgname", + "value": "1493749598520" + }, + + { + "name": "rgfriendlyname", + "value": "Group1" + }, + + { + "name": "policyName", + "value": "Policy1" + }, + + { + "name": "policyId", + "value": "1" + }, + + { + "serviceConfigurations": + [ + [ + { + "name": "aaiMatchingFields", + "value": + [ + "complex.city", + "vserver.vserver-name" + ] + }, + + { + "name": "aaiSendFields", + "value": + [ + "complex.city", + "vserver.vserver-name" + ] + }, + + { + "name": "timeWindow", + "value": + [ + "100" + ] + }, + + { + "name": "ageLimit", + "value": + [ + "100" + ] + }, + + { + "name": "createClosedLoopEventId", + "value": + [ + "Initial" + ] + }, + + { + "name": "outputEventName", + "value": + [ + "ONSET" + ] + }, + + { + "stringSet": + [ + { + "name": "alarmCondition", + "value": + [ + "Reports a transient alarm condition when an outgoing Ro message send fails" + ] + }, + + { + "name": "eventSeverity", + "value": + [ + "WARNING" + ] + }, + + { + "name": "eventSourceType", + "value": + [ + "f5BigIP" + ] + } + ] + } + ] + ] + } ], + + "Group2": [ - { - "name":"aaiMatchingFields", - "value":[ - "VMID" - ] - }, - { - "name":"aaiSendFields", - "value":[ - "Identiy" - ] - }, - { - "name":"groupNumber", - "value":[ - "1" - ] - }, - { - "name":"timeWindow", - "value":[ - "0" - ] - }, - { - "name":"ageLimit", - "value":[ - "1600" - ] - }, - { - "name":"createClosedLoopEventId", - "value":[ - "Close" - ] - }, - { - "name":"outputEventName", - "value":[ - "Abatement" - ] - }, - { - "stringSet":[ - { - "name":"alarmCondition", - "value":[ - "Reports a transient alarm condition when an outgoing GTP' message send fails" + { + "name": "rgname", + "value": "1493749665149" + }, + + { + "name": "rgfriendlyname", + "value": "Group2" + }, + + { + "name": "policyName", + "value": "Policy2" + }, + + { + "name": "policyId", + "value": "2" + }, + + { + "serviceConfigurations": + [ + [ + { + "name": "aaiMatchingFields", + "value": + [ + "cloud-region.identity-url", + "vserver.vserver-name" + ] + }, + + { + "name": "aaiSendFields", + "value": + [ + "cloud-region.identity-url", + "vserver.vserver-name" + ] + }, + + { + "name": "timeWindow", + "value": + [ + "1000" + ] + }, + + { + "name": "ageLimit", + "value": + [ + "1000" + ] + }, + + { + "name": "createClosedLoopEventId", + "value": + [ + "Initial" + ] + }, + + { + "name": "outputEventName", + "value": + [ + "ONSET" + ] + }, + + { + "stringSet": + [ + { + "name": "alarmCondition", + "value": + [ + "LSS_asdaCommunicationFailure" + ] + }, + + { + "name": "eventSeverity", + "value": + [ + "WARNING" + ] + }, + + { + "name": "eventSourceType", + "value": + [ + "f5BigIP" + ] + } + ] + } + ], + + [ + { + "name": "aaiMatchingFields", + "value": + [ + "generic-vnf.vnf-name", + "vserver.vserver-name" + ] + }, + + { + "name": "aaiSendFields", + "value": + [ + "generic-vnf.vnf-name", + "vserver.vserver-name" + ] + }, + + { + "name": "timeWindow", + "value": + [ + "3000" + ] + }, + + { + "name": "ageLimit", + "value": + [ + "3000" + ] + }, + + { + "name": "createClosedLoopEventId", + "value": + [ + "Initial" + ] + }, + + { + "name": "outputEventName", + "value": + [ + "ABATED" + ] + }, + + { + "stringSet": + [ + { + "name": "alarmCondition", + "value": + [ + "LSS_asdaCommunicationFailure" + ] + }, + + { + "name": "eventSeverity", + "value": + [ + "MAJOR" + ] + }, + + { + "name": "eventSourceType", + "value": + [ + "f5BigIP" + ] + } + ] + } + ] ] - }, - { - "name":"eventSeverity", - "value":[ - "NORMAL" + } + ] + }, + + "Policy_": + { + "Policy1": + [ + { + "name": "pname", + "value": "Policy1" + }, + + { + "name": "pid", + "value": "1" + }, + + { + "name": "timeout", + "value": "500" + }, + + { + "policyConfigurations": + [ + [ + { + "name": "recipe", + "value": + [ + "restart" + ] + }, + + { + "name": "maxRetries", + "value": + [ + "3" + ] + }, + + { + "name": "retryTimeLimit", + "value": + [ + "180" + ] + }, + + { + "name": "_id", + "value": + [ + "n9bQ4t6" + ] + }, + + { + "name": "parentPolicy", + "value": + [ + "" + ] + } + ], + + [ + { + "name": "recipe", + "value": + [ + "rebuild" + ] + }, + + { + "name": "maxRetries", + "value": + [ + "3" + ] + }, + + { + "name": "retryTimeLimit", + "value": + [ + "180" + ] + }, + + { + "name": "_id", + "value": + [ + "ItE5xKT" + ] + }, + + { + "name": "parentPolicy", + "value": + [ + "n9bQ4t6" + ] + }, + + { + "name": "parentPolicyConditions", + "value": + [ + "Failure_Retries", + "Failure_Timeout", + "Failure_Exception", + "Failure" + ] + } + ] ] - }, - { - "name":"eventSourceType", - "value":[ - "f5BigIP" + } + ], + + "Policy2": + [ + { + "name": "pname", + "value": "Policy2" + }, + + { + "name": "pid", + "value": "2" + }, + + { + "name": "timeout", + "value": "500" + }, + + { + "policyConfigurations": + [ + [ + { + "name": "recipe", + "value": + [ + "restart" + ] + }, + + { + "name": "maxRetries", + "value": + [ + "3" + ] + }, + + { + "name": "retryTimeLimit", + "value": + [ + "180" + ] + }, + + { + "name": "_id", + "value": + [ + "n9bQ4t6" + ] + }, + + { + "name": "parentPolicy", + "value": + [ + "" + ] + } + ], + + [ + { + "name": "recipe", + "value": + [ + "rebuild" + ] + }, + + { + "name": "maxRetries", + "value": + [ + "3" + ] + }, + + { + "name": "retryTimeLimit", + "value": + [ + "180" + ] + }, + + { + "name": "_id", + "value": + [ + "ItE5xKT" + ] + }, + + { + "name": "parentPolicy", + "value": + [ + "n9bQ4t6" + ] + }, + + { + "name": "parentPolicyConditions", + "value": + [ + "Failure_Retries", + "Failure_Timeout", + "Failure_Exception", + "Failure" + ] + } + ] ] - } - ] - } + } ] - ] - } - ], - "Policy_":[ - [ - { - "name":"timeout", - "value":"500" - } - ], + }, + + "TCA_": { - "policyConfigurations":[ + "Narra": [ - { - "name":"recipe", - "value":[ - "restart" - ] - }, - { - "name":"maxRetries", - "value":[ - "3" - ] - }, - { - "name":"retryTimeLimit", - "value":[ - "180" - ] - }, - { - "name":"_id", - "value":[ - "n9bQ4t6" - ] - }, - { - "name":"parentPolicy", - "value":[ - "" - ] - } + { + "name": "tname", + "value": "Narra" + }, + + { + "name": "tuuid", + "value": "886be8da-14fe-tca1-d04b-d13b55d58df9" + }, + + { + "name": "tnfc", + "value": "ENBE" + }, + + { + "name": "tcaEnab", + "value": "on" + }, + + { + "name": "tcaPol", + "value": "Policy1" + }, + + { + "name": "tcaPolId", + "value": "1" + }, + + { + "name": "tcaInt", + "value": "2" + }, + + { + "name": "tcaSev", + "value": "Warning" + }, + + { + "name": "tcaVio", + "value": "3" + }, + + { + "serviceConfigurations": + [ + [ + "PMRRCCONNESTABFAILCELLLATENCY", + "LESS", + "4", + "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABFAILCELLLATENCY')].Value" + ], + + [ + "PMRAATTCBRA", + "GREATER", + "30", + "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRAATTCBRA')].Value" + ] + ] + } ], + + "Srini": [ - { - "name":"recipe", - "value":[ - "rebuild" - ] - }, - { - "name":"maxRetries", - "value":[ - "3" - ] - }, - { - "name":"retryTimeLimit", - "value":[ - "180" - ] - }, - { - "name":"_id", - "value":[ - "ItE5xKT" - ] - }, - { - "name":"parentPolicy", - "value":[ - "n9bQ4t6" - ] - }, - { - "name":"parentPolicyConditions", - "value":[ - "Failure_Retries", - "Failure_Timeout", - "Failure_Exception", - "Failure" - ] - } + { + "name": "tname", + "value": "Srini" + }, + + { + "name": "tuuid", + "value": "8b5ba88d-f4b4-tf0e-50b1-78a5a7dd412d" + }, + + { + "name": "tnfc", + "value": "ENBE" + }, + + { + "name": "tcaEnab", + "value": "on" + }, + + { + "name": "tcaPol", + "value": "Policy2" + }, + + { + "name": "tcaPolId", + "value": "2" + }, + + { + "name": "tcaInt", + "value": "10" + }, + + { + "name": "tcaSev", + "value": "Critical" + }, + + { + "name": "tcaVio", + "value": "5" + }, + + { + "serviceConfigurations": + [ + [ + "PMRRCCONNESTABFAILCELLLATENCY", + "EQUAL", + "3", + "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABFAILCELLLATENCY')].Value" + ], + + [ + "PMRAATTCBRA", + "GREATER", + "30", + "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRAATTCBRA')].Value" + ] + ] + } ] - ] } - ], - - "TCA_":{ - "Narra":[ - { - "name": "tname", - "value": "Narra" - }, - { - "name": "tuuid", - "value": "886be8da-14fe-tca1-d04b-d13b55d58df9" - }, - { - "name": "tnfc", - "value": "ENBE" - }, - { - "name": "tcaEnab", - "value": "on" - }, - { - "name": "tcaPol", - "value": "Policy1" - }, - { - "name": "tcaPolId", - "value": "1" - }, - { - "name": "tcaInt", - "value": "2" - }, - { - "name": "tcaSev", - "value": "Warning" - }, - { - "name": "tcaVio", - "value": "3" - }, - { - "serviceConfigurations":[ - [ - "PMRRCCONNESTABFAILCELLLATENCY", - "LESS", - "4", - "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABFAILCELLLATENCY')].Value" - ], - [ - "PMRAATTCBRA", - "GREATER", - "30", - "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRAATTCBRA')].Value" - ] - ] - } - ], - "Srini":[ - { - "name": "tname", - "value": "Srini" - }, - { - "name": "tuuid", - "value": "8b5ba88d-f4b4-tf0e-50b1-78a5a7dd412d" - }, - { - "name": "tnfc", - "value": "ENBE" - }, - { - "name": "tcaEnab", - "value": "on" - }, - { - "name": "tcaPol", - "value": "Policy2" - }, - { - "name": "tcaPolId", - "value": "2" - }, - { - "name": "tcaInt", - "value": "10" - }, - { - "name": "tcaSev", - "value": "Critical" - }, - { - "name": "tcaVio", - "value": "5" - }, - { - "serviceConfigurations":[ - [ - "PMRRCCONNESTABFAILCELLLATENCY", - "EQUAL", - "3", - "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABFAILCELLLATENCY')].Value" - ], - [ - "PMRAATTCBRA", - "GREATER", - "30", - "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRAATTCBRA')].Value" - ] - ] - } - ] - } } \ No newline at end of file diff --git a/src/test/resources/example/modelPropForPolicy.json b/src/test/resources/example/modelPropForPolicy.json new file mode 100644 index 000000000..6923e1a67 --- /dev/null +++ b/src/test/resources/example/modelPropForPolicy.json @@ -0,0 +1,404 @@ +{ + "global": + [ + { + "name": "service", + "value": + [ + "0f983e18-4603-4bb4-a98c-e29691fb16a1" + ] + }, + + { + "name": "vf", + "value": + [ + "6c7aaec2-59eb-41d9-8681-b7f976ab668d" + ] + }, + + { + "name": "location", + "value": + [ + "SNDGCA64" + ] + } + ], + + "Policy_": + { + "Policy1": + [ + { + "name": "pname", + "value": "Policy1" + }, + + { + "name": "pid", + "value": "1" + }, + + { + "name": "timeout", + "value": "500" + }, + + { + "policyConfigurations": + [ + [ + { + "name": "recipe", + "value": + [ + "restart" + ] + }, + + { + "name": "maxRetries", + "value": + [ + "3" + ] + }, + + { + "name": "retryTimeLimit", + "value": + [ + "180" + ] + }, + + { + "name": "_id", + "value": + [ + "n9bQ4t6" + ] + }, + + { + "name": "parentPolicy", + "value": + [ + "" + ] + } + ], + + [ + { + "name": "recipe", + "value": + [ + "rebuild" + ] + }, + + { + "name": "maxRetries", + "value": + [ + "3" + ] + }, + + { + "name": "retryTimeLimit", + "value": + [ + "180" + ] + }, + + { + "name": "_id", + "value": + [ + "ItE5xKT" + ] + }, + + { + "name": "parentPolicy", + "value": + [ + "n9bQ4t6" + ] + }, + + { + "name": "parentPolicyConditions", + "value": + [ + "Failure_Retries", + "Failure_Timeout", + "Failure_Exception", + "Failure" + ] + } + ] + ] + } + ], + + "Policy2": + [ + { + "name": "pname", + "value": "Policy2" + }, + + { + "name": "pid", + "value": "2" + }, + + { + "name": "timeout", + "value": "500" + }, + + { + "policyConfigurations": + [ + [ + { + "name": "recipe", + "value": + [ + "restart" + ] + }, + + { + "name": "maxRetries", + "value": + [ + "3" + ] + }, + + { + "name": "retryTimeLimit", + "value": + [ + "180" + ] + }, + + { + "name": "_id", + "value": + [ + "n9bQ4t6" + ] + }, + + { + "name": "parentPolicy", + "value": + [ + "" + ] + } + ], + + [ + { + "name": "recipe", + "value": + [ + "rebuild" + ] + }, + + { + "name": "maxRetries", + "value": + [ + "3" + ] + }, + + { + "name": "retryTimeLimit", + "value": + [ + "180" + ] + }, + + { + "name": "_id", + "value": + [ + "ItE5xKT" + ] + }, + + { + "name": "parentPolicy", + "value": + [ + "n9bQ4t6" + ] + }, + + { + "name": "parentPolicyConditions", + "value": + [ + "Failure_Retries", + "Failure_Timeout", + "Failure_Exception", + "Failure" + ] + } + ] + ] + } + ] + }, + + "TCA_": + { + "Narra": + [ + { + "name": "tname", + "value": "Narra" + }, + + { + "name": "tuuid", + "value": "886be8da-14fe-tca1-d04b-d13b55d58df9" + }, + + { + "name": "tnfc", + "value": "ENBE" + }, + + { + "name": "tcaEnab", + "value": "on" + }, + + { + "name": "tcaPol", + "value": "Policy1" + }, + + { + "name": "tcaPolId", + "value": "1" + }, + + { + "name": "tcaInt", + "value": "2" + }, + + { + "name": "tcaSev", + "value": "Warning" + }, + + { + "name": "tcaVio", + "value": "3" + }, + + { + "serviceConfigurations": + [ + [ + "PMRRCCONNESTABFAILCELLLATENCY", + "LESS", + "4", + "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABFAILCELLLATENCY')].Value" + ], + + [ + "PMRAATTCBRA", + "GREATER", + "30", + "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRAATTCBRA')].Value" + ] + ] + } + ], + + "Srini": + [ + { + "name": "tname", + "value": "Srini" + }, + + { + "name": "tuuid", + "value": "8b5ba88d-f4b4-tf0e-50b1-78a5a7dd412d" + }, + + { + "name": "tnfc", + "value": "ENBE" + }, + + { + "name": "tcaEnab", + "value": "on" + }, + + { + "name": "tcaPol", + "value": "Policy2" + }, + + { + "name": "tcaPolId", + "value": "2" + }, + + { + "name": "tcaInt", + "value": "10" + }, + + { + "name": "tcaSev", + "value": "Critical" + }, + + { + "name": "tcaVio", + "value": "5" + }, + + { + "serviceConfigurations": + [ + [ + "PMRRCCONNESTABFAILCELLLATENCY", + "EQUAL", + "3", + "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABFAILCELLLATENCY')].Value" + ], + + [ + "PMRAATTCBRA", + "GREATER", + "30", + "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRAATTCBRA')].Value" + ] + ] + } + ] + } +} \ No newline at end of file diff --git a/src/test/resources/example/templatePropForTca.json b/src/test/resources/example/templatePropForTca.json new file mode 100644 index 000000000..9f1ce1dac --- /dev/null +++ b/src/test/resources/example/templatePropForTca.json @@ -0,0 +1,10 @@ +{ + "global": [ + { + "name": "service", + "value": [ + "tosca_definitions_version: cloudify_dsl_1_2\r\n\r\nimports:\r\n- http://www.getcloudify.org/spec/cloudify/3.3.1/types.yaml\r\n- http://135.207.127.211/1607_prod/type_files/cdap_app.yaml\r\n\r\nnode_templates:\r\n MTCA:\r\n type: dcae.nodes.cdap_app\r\n properties:\r\n service_name: \"cdap-mtca-central\"\r\n deployment_JSON: |-\r\n {\r\n \"clusterService\": {\"$ref\": \"/services/vm-cdap-cluster-central/instances/rdm2c\"},\r\n \"namespace\": \"MTCA\",\r\n \"appNames\": [ \"cdap-mtca\" ],\r\n \"flowNames\": [ \"cdap-mtca.TCAVESCollectorFlow\" ],\r\n \"workerNames\": [\"cdap-mtca.TCADMaaPMRSubscriberWorker\", \"cdap-mtca.TCADMaaPMRPublisherWorker\"],\r\n \"serviceNames\" : [],\r\n \"apps\": {\r\n \"cdap-mtca\": {\r\n \"jarFile\": \"/opt/app/cdap-apps/dcae-analytics-mtca-1.0.0.jar\",\r\n \"artifactName\": \"dcae-analytics-mtca\",\r\n \"version\": \"1.0.0\",\r\n \"appConfigFileContent\": \"{config:{ \\\"appName\\\":\\\"cdap-mtca\\\", \\\"appDescription\\\":\\\"DCAE Analytics Threshold Crossing Alert Application\\\", \\\"tcaSubscriberOutputStreamName\\\":\\\"TCASubscriberOutputStream\\\", \\\"thresholdCalculatorFlowletInstances\\\":2, \\\"tcaVESMessageStatusTableName\\\":\\\"TCAVESMessageStatusTable\\\", \\\"tcaVESMessageStatusTableTTLSeconds\\\":864000, \\\"tcaVESAlertsTableName\\\":\\\"TCAVESAlertsTable\\\", \\\"tcaVESAlertsTableTTLSeconds\\\":1728000 }}\"\r\n }\r\n },\r\n \r\n \"configuration\": {\r\n \"$class\": \"com.att.ecomp.dcae.clamp.common.MThresholdCrossingConfiguration\",\r\n \"subscriberContentType\": \"\",\r\n \"subscriberConsumerId\": \"c12\",\r\n \"subscriberConsumerGroup\": \"OpenDCAE-c12\",\r\n \"subscriberTimeoutMS\": \"-1\",\r\n \"subscriberMessageLimit\": \"-1\",\r\n \"subscriberPollingInterval\": \"20000\",\r\n \"publisherContentType\": \"application/json\",\r\n \"publisherMaxBatchSize\": \"10\",\r\n \"publisherMaxRecoveryQueueSize\": \"100000\",\r\n \"publisherPollingInterval\": \"20000\",\r\n \"publisherAlertWindowingTime\": \"86400\",\r\n \"policyName\": \"policy.dcae.configuration\",\r\n \"policyScope\": \"pnf=eNodeB;type=configuration\",\r\n \"policyVersion\": \"1.0.0\",\r\n \"domain\" : \"measurementsForVfScaling\",\r\n \r\n \"signatures\" : {\r\n \t }\r\n\r\n }\r\n }\r\n" + ] + } + ] +} \ No newline at end of file diff --git a/src/test/resources/expected/stringmatch.json b/src/test/resources/expected/stringmatch.json new file mode 100644 index 000000000..52e6d01a4 --- /dev/null +++ b/src/test/resources/expected/stringmatch.json @@ -0,0 +1 @@ +{"service":"StringMatchingConfiguration","location":"Edge","uuid":"TestUUID","policyName":"example_model06.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_StringMatch_","description":"from clds","configName":"com.att.d2.policy.StringMatchingConfiguration","templateVersion":"1604","priority":"4","version":"1610","policyScope":"resource=F5,service=vSCP,type=configuration,closedLoopControlName=vSCP_F5_Firewall_d925ed73-8231-4d02-9545-db4e101f88f8","content":{"serviceConfigurations":{"Item1":{"rulegroup":"1493749598520","closedLoopControlName":"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_1","aaiMatchingFields":["complex.city","vserver.vserver-name"],"aaiSendFields":["complex.city","vserver.vserver-name"],"stringSet":["eventSeverity","WARNING","alarmCondition","Reports a transient alarm condition when an outgoing Ro message send fails"],"timeWindow":"100","ageLimit":"100","createClosedLoopEventId":"Initial","outputEventName":"ONSET"},"Item2":{"rulegroup":"1493749665149","closedLoopControlName":"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_2","aaiMatchingFields":["cloud-region.identity-url","vserver.vserver-name"],"aaiSendFields":["cloud-region.identity-url","vserver.vserver-name"],"stringSet":["eventSeverity","WARNING","alarmCondition","Reports a transient alarm condition when an outgoing Ro message send fails"],"timeWindow":"1000","ageLimit":"1000","createClosedLoopEventId":"Initial","outputEventName":"ONSET"},"Item3":{"rulegroup":"1493749665149","closedLoopControlName":"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_2","aaiMatchingFields":["generic-vnf.vnf-name","vserver.vserver-name"],"aaiSendFields":["generic-vnf.vnf-name","vserver.vserver-name"],"stringSet":["eventSeverity","WARNING","alarmCondition","Reports a transient alarm condition when an outgoing Ro message send fails"],"timeWindow":"3000","ageLimit":"3000","createClosedLoopEventId":"Initial","outputEventName":"ABATED"}}}} \ No newline at end of file diff --git a/src/test/resources/expected/tca.json b/src/test/resources/expected/tca.json new file mode 100644 index 000000000..2fd16bde6 --- /dev/null +++ b/src/test/resources/expected/tca.json @@ -0,0 +1,93 @@ +{ + "service": "MThresholdCrossingConfiguration", + "location": "Edge", + "uuid": "TestUUID", + "policyName": "example_model06.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_", + "description": "from clds", + "configName": "MThresholdCrossingConfiguration", + "templateVersion": "5.2.0.1", + "priority": "4", + "version": "5.2.0.1", + "policyScope": "resource=F5,service=vSCP,type=configuration,closedLoopControlName=vSCP_F5_Firewall_d925ed73-8231-4d02-9545-db4e101f88f8", + "content": + { + "$class": "com.att.ecomp.dcae.clamp.common.MThresholdCrossingConfiguration", + "domain": "measurementsForVfScaling", + "policyScope": "pnf=eNodeB;type=configuration", + "policyName": "policy.dcae.configuration", + "policyVersion": "1.0.0", + "subscriberContentType": "application/json", + "subscriberConsumerId": "c13", + "subscriberConsumerGroup": "OpenDCAE-c13", + "subscriberTimeoutMS": "-1", + "subscriberMessageLimit": "-1", + "subscriberPollingInterval": "20000", + "publisherContentType": "application/json", + "publisherMaxBatchSize": "10", + "publisherMaxRecoveryQueueSize": "100000", + "publisherPollingInterval": "20000", + "publisherAlertWindowingTime": "86400", + "signatures": + [ + { + "nfNamingCode": "ENBE", + "target": "common_id", + "targetType": "eNodeB", + "useCaseName": "Narra", + "signatureName": "Narra_886be8da-14fe-tca1-d04b-d13b55d58df9", + "signatureUuid": "886be8da-14fe-tca1-d04b-d13b55d58df9", + "closedLoopControlName": "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_1", + "severity": "Warning", + "version": "1.0.2", + "maxInterval": 2, + "minMessageViolations": 3, + "thresholds": + [ + { + "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABFAILCELLLATENCY')].Value", + "thresholdName": "PMRRCCONNESTABFAILCELLLATENCY", + "thresholdValue": 4, + "direction": "LESS" + }, + + { + "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRAATTCBRA')].Value", + "thresholdName": "PMRAATTCBRA", + "thresholdValue": 30, + "direction": "GREATER" + } + ] + }, + + { + "nfNamingCode": "ENBE", + "target": "common_id", + "targetType": "eNodeB", + "useCaseName": "Srini", + "signatureName": "Srini_8b5ba88d-f4b4-tf0e-50b1-78a5a7dd412d", + "signatureUuid": "8b5ba88d-f4b4-tf0e-50b1-78a5a7dd412d", + "closedLoopControlName": "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_2", + "severity": "Critical", + "version": "1.0.2", + "maxInterval": 10, + "minMessageViolations": 5, + "thresholds": + [ + { + "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABFAILCELLLATENCY')].Value", + "thresholdName": "PMRRCCONNESTABFAILCELLLATENCY", + "thresholdValue": 3, + "direction": "EQUAL" + }, + + { + "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRAATTCBRA')].Value", + "thresholdName": "PMRAATTCBRA", + "thresholdValue": 30, + "direction": "GREATER" + } + ] + } + ] + } +} \ No newline at end of file -- cgit 1.2.3-korg From b06c0a5c606336492c6038741f5eca8049252517 Mon Sep 17 00:00:00 2001 From: "Determe, Sebastien (sd378r)" Date: Tue, 29 Aug 2017 04:18:38 -0700 Subject: Fix the clds-reference json FIx a mistake in the JSON provided in clds-reference.properties + Align the header of clds-version.properties Change-Id: I63905fa4a9fe3906c6ab9d4724928815dcb2cea1 Issue-Id: CLAMP-43 Signed-off-by: Determe, Sebastien (sd378r) --- src/main/resources/clds-version.properties | 1 + src/test/resources/clds/clds-reference.properties | 243 +++++++++++----------- 2 files changed, 122 insertions(+), 122 deletions(-) (limited to 'src/test/resources/clds') diff --git a/src/main/resources/clds-version.properties b/src/main/resources/clds-version.properties index 8576692b8..f23e97b67 100644 --- a/src/main/resources/clds-version.properties +++ b/src/main/resources/clds-version.properties @@ -20,4 +20,5 @@ # =================================================================== # ECOMP is a trademark and service mark of AT&T Intellectual Property. ### + clds.version=${project.version} \ No newline at end of file diff --git a/src/test/resources/clds/clds-reference.properties b/src/test/resources/clds/clds-reference.properties index 7cedc130f..fb91197d1 100644 --- a/src/test/resources/clds/clds-reference.properties +++ b/src/test/resources/clds/clds-reference.properties @@ -1,122 +1,121 @@ -### -# ============LICENSE_START======================================================= -# ONAP CLAMP -# ================================================================================ -# Copyright (C) 2017 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============================================ -# =================================================================== -# ECOMP is a trademark and service mark of AT&T Intellectual Property. -### - -# -# Poperties for CLDS -# -# -# -# TCA MicroService Policy request build properties -# -tca.template={"service":"MThresholdCrossingConfiguration","location":"Edge","uuid":"TestUUID","policyName":"???","description":"from clds","configName":"MThresholdCrossingConfiguration","templateVersion":"5.2.0.1","priority":"4","version":"5.2.0.1","policyScope":"resource=F5,service=vSCP,type=configuration,closedLoopControlName=vSCP_F5_Firewall_d925ed73-8231-4d02-9545-db4e101f88f8","content":{"$class": "com.att.ecomp.dcae.clamp.common.MThresholdCrossingConfiguration","domain":"measurementsForVfScaling","policyScope":"pnf=eNodeB;type=configuration","policyName":"policy.dcae.configuration","policyVersion":"1.0.0","subscriberContentType": "application/json","subscriberConsumerId": "c13","subscriberConsumerGroup": "OpenDCAE-c13","subscriberTimeoutMS": "-1","subscriberMessageLimit": "-1","subscriberPollingInterval": "20000","publisherContentType": "application/json","publisherMaxBatchSize": "10","publisherMaxRecoveryQueueSize": "100000","publisherPollingInterval": "20000","publisherAlertWindowingTime": "86400","signatures":[]}} -tca.signature.template={"nfNamingCode":"ENBE","target":"common_id","targetType":"eNodeB","useCaseName":"???","signatureName":"???","signatureUuid":"???","closedLoopControlName":"???","severity":"???","version":"1.0.2","maxInterval":1200,"minMessageViolations":4,"thresholds":[]} - -# -# DCAE request build properties -# -dcae.template={"properties":{"service_name":"","service_ids":[],"vnf_ids":[],"location_ids":[]},"template":{"string_matching":{"dcae":{"inputTopic":"","outputTopic":"","closedLoopControlName":"","closedLoopEventClient":"configuration.dcae.microservice.stringmatcher.xml","policyName":"","policyScope":"service=vSCP;resource=F5;type=configuration","policyVersion":"v0.0.1","serviceConfigurations":{}}}}} -dcae.decode.service_ids={"vUSP":["vUSP - vCTS"],"Trinity":["ASBGv TLS VNF","ASBGv No TLS","ASBGv (NO TLS) VNF","ASBGv TLS","NSBGv VNF","NSBGv"],"vSCP":["AKRON_vSCP_F5_FW-SVC/vSCP_F5_FW 1","ALLEN_vSCP_F5_FW-SVC/vSCP_F5_FW 1"],"vProbes":["vProbes - FW"]} -# -# SDC request blueprint properties -# -sdc.template={} -sdc.decode.service_ids={} -# -# -# General Policy request properties -# -policy.ecomp.name=DCAE -policy.pdp.group=default -policy.ms.type=MicroService -policy.ms.policyNamePrefix=Config_MS_ -policy.op.type=BRMS_Param -policy.op.policyNamePrefix=Config_BRMS_Param_ - -# by service: xxx -# -# -# String Match MicroService Policy request build properties -# -# default -sm.template={"service":"StringMatchingConfiguration","location":"Edge","uuid":"TestUUID","policyName":"???","description":"from clds","configName":"com.att.d2.policy.StringMatchingConfiguration","templateVersion":"1604","priority":"4","version":"1610","policyScope":"resource=F5,service=vSCP,type=configuration,closedLoopControlName=vSCP_F5_Firewall_d925ed73-8231-4d02-9545-db4e101f88f8","content":{"serviceConfigurations":{}}} -# by service: vSCP -sm.template.vSCP={"service":"StringMatchingConfiguration","location":"Edge","uuid":"TestUUID","policyName":"???","description":"from clds","configName":"com.att.d2.policy.StringMatchingConfiguration","templateVersion":"1604","priority":"4","version":"0.1.0-SNAPSHOT","policyScope":"resource=F5,service=vSCP,type=configuration,closedLoopControlName=vSCP_F5_Firewall_d925ed73-8231-4d02-9545-db4e101f88f8","content":{"serviceConfigurations":{}}} -sm.sc.template={} -# -# default -sm.rulegroup=true -# by service: vSCP -sm.rulegroup.vSCP=false -# -# -# Operational Policy request build properties -# -op.policyDescription=from clds -# default -op.templateName=ClosedLoopGuardvUSP -op.operationTopic=APPC-CL -op.notificationTopic=POLICY-CL-MGT -op.controller=1610-vUSP -# by service: vSCP -op.templateName.vSCP=ClosedLoopTemplate -op.controller.vSCP=1607-f5fw -op.eNodeB.templateName=CLeNodeB -op.eNodeB.operationTopic=com.onap.sdnr.RanCLRequest-v00 -op.eNodeB.notificationTopic=com.onap-policy.IST-ENODEB-CL -op.eNodeB.controller=ClosedLoop-eNodeB -op.eNodeB.recipe={"eNodeBRecipes":[{"Actor":"AOTS","Recipe":"checkENodeBTicketHours","ParentPolicy":"","PPConditions":"","Retry":"0","TimeLimit":"120"},{"Actor":"AOTS","Recipe":"checkEquipmentStatus","ParentPolicy":"checkENodeBTicketHours","PPConditions":"Success","Retry":"0","TimeLimit":"120"},{"Actor":"AOTS","Recipe":"checkEimStatus","ParentPolicy":"checkEquipmentStatus","PPConditions":"Success","Retry":"0","TimeLimit":"120"},{"Actor":"AOTS","Recipe":"checkMaintenanceWindow","ParentPolicy":"checkEimStatus","PPConditions":"Success","Retry":"0","TimeLimit":"120"},{"Actor":"SDNR","Recipe":"Reset","ParentPolicy":"checkMaintenanceWindow","PPConditions":"Success","Retry":"","TimeLimit":""}]} -op.eNodeB.timeWindow=35 -op.eNodeB.limit=2 -op.eNodeB.period=10s -# -# sdc service properties -sdc.catalog.url=http://127.0.0.1:8080/sdc/v1/catalog/ -sdc.hostUrl=http://127.0.0.1:8080 -sdc.serviceUrl=http://127.0.0.1:8080/sdc/v1/catalog/services -sdc.serviceUsername=test -sdc.servicePassword=123456 -sdc.artifactLabel=blueprintclampcockpit -sdc.sdcX-InstanceID=CLAMP -sdc.artifactType=DCAE_INVENTORY_BLUEPRINT -sdc.locationArtifactLabel=LocationClampCockpit -sdc.locationArtifactType=DCAE_INVENTORY_JSON -sdc.InstanceID=X-ONAP-InstanceID -# -# -# -ui.location.default={"SNDGCA64":"San Diego SAN3","ALPRGAED":"Alpharetta PDK1","LSLEILAA":"Lisle DPA3","MDTWNJC1":"FTL_C_location1","MDTWNJC2":"FTL_C_location2","MDTWNJ21":"FTL_L_location1","MDTWNJ22":"FTL_L_location2","RDM2WAGPLCP":"ISTFTL_location"} -ui.alarm.default={"Reports a transient alarm condition when an incoming CDR cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming CDR cannot be decoded successfully","Reports a transient alarm condition when an incoming ACR message cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming ACR message cannot be decoded successfully","Reports a transient alarm condition when a CDR validation fails":"vCCF: Reports a transient alarm condition when a CDR validation fails","Reports a transient alarm condition when an incoming GTP' message cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming GTP' message cannot be decoded successfully","Reports a transient alarm condition when an incoming CDR file cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming CDR file cannot be decoded successfully","Reports a transient alarm condition when an incoming Sh/Dh file cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming Sh/Dh file cannot be decoded successfully","Reports a transient alarm condition when an incoming ACR message is in conflict with former ACR in one diameter session":"vCCF: Reports a transient alarm condition when an incoming ACR message is in conflict with former ACR in one diameter session","Reports a transient alarm condition when an outgoing Ro message send fails":"vCCF: Reports a transient alarm condition when an outgoing Ro message send fails","Reports a transient alarm condition when an outgoing GTP' message send fails":"vCCF: Reports a transient alarm condition when an outgoing GTP' message send fails","Reports a transient alarm condition when an outgoing Sh/Dh message send fails":"vCCF: Reports a transient alarm condition when an outgoing Sh/Dh message send fails","Reports an alarm when build or send Rf message fail":"vCCF: Reports an alarm when build or send Rf message fail","Reports a transient alarm condition when an abnormal incoming CCA message":"vCCF: Reports a transient alarm condition when an abnormal incoming CCA message","Reports a transient alarm condition when there is an abnormal incoming Sh/Dh message":"vCCF: Reports a transient alarm condition when there is an abnormal incoming Sh/Dh message","For Rf interface, if IeCCF receives a message with incorrect value for session id.":"vCCF: For Rf interface, if IeCCF receives a message with incorrect value for session id.","Reports an alarm when CPU usage exceeds the major threshold, the local database exceeds the critical threshold, or the ACR partition exceeds the major threshold":"vCCF: Reports an alarm when CPU usage exceeds the major threshold, the local database exceeds the critical threshold, or the ACR partition exceeds the major threshold","Reports an alarm when CPU usage exceeds the minor threshold, the local database exceeds the major threshold, or the ACR partition exceeds the minor threshold":"vCCF: Reports an alarm when CPU usage exceeds the minor threshold, the local database exceeds the major threshold, or the ACR partition exceeds the minor threshold","Reports an alarm when CPU usage exceeds the critical threshold, the local database exceeds the major threshold, or the CDR partition exceeds the critical threshold":"vCCF: Reports an alarm when CPU usage exceeds the critical threshold, the local database exceeds the major threshold, or the CDR partition exceeds the critical threshold","Reports an alarm when CPU usage exceeds the major threshold or CDR partition exceeds the major threshold":"vCCF: Reports an alarm when CPU usage exceeds the major threshold or CDR partition exceeds the major threshold","Reports an alarm when external DB usage exceeds the major threshold":"vCCF: Reports an alarm when external DB usage exceeds the major threshold","If IeCCF comes to the status \\"Stop processing ACR records in ACRDB\\".":"vCCF: If IeCCF comes to the status \\"Stop processing ACR records in ACRDB\\".","If IeCCF comes to the status \\"Flush ACR is invoked\\".":"vCCF: If IeCCF comes to the status \\"Flush ACR is invoked\\".","Reports a transient alarm condition when the workflow definition table is provisioned wrongly":"vCCF: Reports a transient alarm condition when the workflow definition table is provisioned wrongly","Reports a transient alarm condition when the Action Definition table is provisioned wrongly":"vCCF: Reports a transient alarm condition when the Action Definition table is provisioned wrongly","Reports a transient alarm condition when the Ro Host Configuration is provisioned wrongly":"vCCF: Reports a transient alarm condition when the Ro Host Configuration is provisioned wrongly","Reports a transient alarm condition when the Sh Host Configuration is provisioned wrongly":"vCCF: Reports a transient alarm condition when the Sh Host Configuration is provisioned wrongly","Reports a transient alarm condition when a specific dictionary or rule does not exist":"vCCF: Reports a transient alarm condition when a specific dictionary or rule does not exist","Reports a transient alarm condition when failure occurs when mapping Rf message to XDR":"vCCF: Reports a transient alarm condition when failure occurs when mapping Rf message to XDR","Reports a transient alarm condition when failure occurs in aggregating process":"vCCF: Reports a transient alarm condition when failure occurs in aggregating process","Reports a transient alarm condition when failure happens in correlating process":"vCCF: Reports a transient alarm condition when failure happens in correlating process","Reports a transient alarm condition when failure occurs in generating CDR":"vCCF: Reports a transient alarm condition when failure occurs in generating CDR","Reports a transient alarm condition when failure occurs in constructing CCR message from XDR":"vCCF: Reports a transient alarm condition when failure occurs in constructing CCR message from XDR","Reports a transient alarm condition when an ACR/XER/BER/INC record write to bad file":"vCCF: Reports a transient alarm condition when an ACR/XER/BER/INC record write to bad file","Reports an alarm condition when aggregation or correlation central database connection is lost":"vCCF: Reports an alarm condition when aggregation or correlation central database connection is lost","Reports an alarm condition when a specific failure happens in database operations":"vCCF: Reports an alarm condition when a specific failure happens in database operations","Reports an alarm condition when DB capacity has been consumed to critical threshold":"vCCF: Reports an alarm condition when DB capacity has been consumed to critical threshold","Reports an alarm condition when DB capacity has been consumed to major threshold":"vCCF: Reports an alarm condition when DB capacity has been consumed to major threshold","Reports an alarm condition when DB capacity has been consumed to minor threshold.":"vCCF: Reports an alarm condition when DB capacity has been consumed to minor threshold.","Reports an alarm condition when application cannot deliver CDR to CDRSCH subsystem":"vCCF: Reports an alarm condition when application cannot deliver CDR to CDRSCH subsystem","Reports an alarm condition when some fields of ACR file header have error value and this ACR file cannot be processed further":"vCCF: Reports an alarm condition when some fields of ACR file header have error value and this ACR file cannot be processed further","Reports an alarm condition when some fields of ACR file header have invalid value and this ACR file can be processed further":"vCCF: Reports an alarm condition when some fields of ACR file header have invalid value and this ACR file can be processed further","Reports an alarm condition when the ACR file loses some ACR records":"vCCF: Reports an alarm condition when the ACR file loses some ACR records","Reports an alarm condition when some fields of ACR record header have error value and this ACR record and the following ACR records cannot be processed further":"vCCF: Reports an alarm condition when some fields of ACR record header have error value and this ACR record and the following ACR records cannot be processed further","Reports an alarm condition when error occurs in processing CDR/ACR files":"vCCF: Reports an alarm condition when error occurs in processing CDR/ACR files","Reports an alarm condition when CDR partition has been consumed to critical threshold":"vCCF: Reports an alarm condition when CDR partition has been consumed to critical threshold","Reports an alarm condition when CDR partition has been consumed to major threshold.":"vCCF: Reports an alarm condition when CDR partition has been consumed to major threshold.","Reports an alarm condition when CDR partition has been consumed to minor threshold":"vCCF: Reports an alarm condition when CDR partition has been consumed to minor threshold","Reports an alarm condition when ACR partition has been consumed to critical threshold":"vCCF: Reports an alarm condition when ACR partition has been consumed to critical threshold","Reports an alarm condition when ACR partition has been consumed to major threshold":"vCCF: Reports an alarm condition when ACR partition has been consumed to major threshold","Reports an alarm condition when ACR partition has been consumed to minor threshold":"vCCF: Reports an alarm condition when ACR partition has been consumed to minor threshold","Reports an alarm condition when CPU consumption reaches critical threshold":"vCCF: Reports an alarm condition when CPU consumption reaches critical threshold","Reports an alarm condition when CPU consumption reaches major threshold":"vCCF: Reports an alarm condition when CPU consumption reaches major threshold","Reports an alarm condition when CPU consumption reaches minor threshold":"vCCF: Reports an alarm condition when CPU consumption reaches minor threshold","Service shall monitor * number of partial CDR * number of incompleted CDR * number of unacceptable CDR If any one exceeds a configurable threshold in a configrable interval.":"vCCF: Service shall monitor * number of partial CDR * number of incompleted CDR * number of unacceptable CDR If any one exceeds a configurable threshold in a configrable interval.","CDR size exceed the platform capacity.":"vCCF: CDR size exceed the platform capacity.","Service shall monitor number of ACR without AII AVP, If it exceeds a configurable threshold in a configurable interval.":"vCCF: Service shall monitor number of ACR without AII AVP, If it exceeds a configurable threshold in a configurable interval.","Service shall monitor CDR cut due to ECCF_ACRNUMBER_IN_DB, If it exceeds a configurable threshold in a configurable interval.":"vCCF: Service shall monitor CDR cut due to ECCF_ACRNUMBER_IN_DB, If it exceeds a configurable threshold in a configurable interval.","External Node of this Cluster is overload":"vCCF: External Node of this Cluster is overload","bdb_high_latency":"vCCF-vDB: bdb_high_latency","bdb_high_throughput":"vCCF-vDB: bdb_high_throughput","bdb_size":"vCCF-vDB: bdb_size","cluster_inconsistent_rl_sw":"vCCF-vDB: cluster_inconsistent_rl_sw","cluster_node_remove_abort_failed":"vCCF-vDB: cluster_node_remove_abort_failed","cluster_node_remove_failed":"vCCF-vDB: cluster_node_remove_failed","cluster_ram_overcommit":"vCCF-vDB: cluster_ram_overcommit","cluster_rebalance_failed":"vCCF-vDB: cluster_rebalance_failed","cluster_too_few_nodes_for_replication":"vCCF-vDB: cluster_too_few_nodes_for_replication","node_cpu_utilization":"vCCF-vDB: node_cpu_utilization","node_ephemeral_storage":"vCCF-vDB: node_ephemeral_storage","node_failed":"vCCF-vDB: node_failed","node_memory":"vCCF-vDB: node_memory","node_net_throughput":"vCCF-vDB: node_net_throughput","node_offline_failed":"vCCF-vDB: node_offline_failed","node_offline_abort_failed":"vCCF-vDB: node_offline_abort_failed","node_online_failed":"vCCF-vDB: node_online_failed","OAM NODE- IS NOT ACTIVE ":"vCCF-vDB: OAM NODE- IS NOT ACTIVE ","LSS_asdaCommunicationFailure":"vCTS: LSS_asdaCommunicationFailure","LSS_ccdbCommunicationFailure":"vCTS: LSS_ccdbCommunicationFailure","LSS_cpiCTS3xxFailRate":"vCTS: LSS_cpiCTS3xxFailRate","LSS_cpiCTS4xxFailRate":"vCTS: LSS_cpiCTS4xxFailRate","LSS_cpiCTS5xxFailRate":"vCTS: LSS_cpiCTS5xxFailRate","LSS_cpiCTS6xxFailRate":"vCTS: LSS_cpiCTS6xxFailRate","LSS_cpiCTSSIPRetransmitInvite":"vCTS: LSS_cpiCTSSIPRetransmitInvite","LSS_cpiCTSSIPRetransmitNonInvite":"vCTS: LSS_cpiCTSSIPRetransmitNonInvite","LSS_glsInvalidCellId":"vCTS: LSS_glsInvalidCellId","LSS_glsServerUnavailable":"vCTS: LSS_glsServerUnavailable","LSS_hlrSyncConnection":"vCTS: LSS_hlrSyncConnection","LSS_hlrSyncQueue":"vCTS: LSS_hlrSyncQueue","LSS_lispBufferFullExternalLIG":"vCTS: LSS_lispBufferFullExternalLIG","LSS_prdbConnectWithAlternateFailure":"vCTS: LSS_prdbConnectWithAlternateFailure","LSS_prdbSyncDataToAlternateFailure":"vCTS: LSS_prdbSyncDataToAlternateFailure","LSS_preAllocatedResourceOverload":"vCTS: LSS_preAllocatedResourceOverload","LSS_prifSocketError":"vCTS: LSS_prifSocketError","LSS_prsCallInstanceExceeded":"vCTS: LSS_prsCallInstanceExceeded","LSS_prsCpuOverload":"vCTS: LSS_prsCpuOverload","LSS_prsDatabaseMigrationFailure":"vCTS: LSS_prsDatabaseMigrationFailure","LSS_prsFailureToConnectWithPRDB":"vCTS: LSS_prsFailureToConnectWithPRDB","LSS_prsQueueExceeded":"vCTS: LSS_prsQueueExceeded","LSS_smdiSocketError":"vCTS: LSS_smdiSocketError","LSS_socketError":"vCTS: LSS_socketError","LSS_softwareComponentDown":"vCTS: LSS_softwareComponentDown","LSS_tlsInitError":"vCTS: LSS_tlsInitError","LSS_usageOfSyncTable":"vCTS: LSS_usageOfSyncTable","LSS_utHttpProxyConnectionDown ":"vCTS: LSS_utHttpProxyConnectionDown ","LSS_wpifSocketError":"vCTS: LSS_wpifSocketError","LSS_acrTemporaryBufferOverload":"vCTS: LSS_acrTemporaryBufferOverload","LSS_adnsExtendedTTLcaching":"vCTS: LSS_adnsExtendedTTLcaching","LSS_adnsQueryFailureCaching":"vCTS: LSS_adnsQueryFailureCaching","LSS_adnsQueueCongestion":"vCTS: LSS_adnsQueueCongestion","LSS_asdaRequestQueue":"vCTS: LSS_asdaRequestQueue","LSS_capacityLicenseKeyExpiration":"vCTS: LSS_capacityLicenseKeyExpiration","LSS_capacityLicenseKeyNearExpiration":"vCTS: LSS_capacityLicenseKeyNearExpiration","LSS_capacityLicenseKeyValidationError":"vCTS: LSS_capacityLicenseKeyValidationError","LSS_cardConnectionLost":"vCTS: LSS_cardConnectionLost","LSS_cpiAlrmCritical":"vCTS: LSS_cpiAlrmCritical","LSS_cpiAlrmMajor":"vCTS: LSS_cpiAlrmMajor","LSS_cpiAlrmMinor":"vCTS: LSS_cpiAlrmMinor","LSS_cpiAlrmWarning":"vCTS: LSS_cpiAlrmWarning","LSS_cpiAsrtEsc":"vCTS: LSS_cpiAsrtEsc","LSS_cpiAsrtNonEsc":"vCTS: LSS_cpiAsrtNonEsc","LSS_cpiAsrtNonEscCritical":"vCTS: LSS_cpiAsrtNonEscCritical","LSS_cpiAsrtNonEscMajor":"vCTS: LSS_cpiAsrtNonEscMajor","LSS_cpiAsrtNonEscMinor":"vCTS: LSS_cpiAsrtNonEscMinor","LSS_cpiAudErrCount":"vCTS: LSS_cpiAudErrCount","LSS_cpiAudManAct":"vCTS: LSS_cpiAudManAct","LSS_cpiAudNewEvent":"vCTS: LSS_cpiAudNewEvent","LSS_cpiCompleteRateAlarm":"vCTS: LSS_cpiCompleteRateAlarm","LSS_cpiDropMGAllocConnReq":"vCTS: LSS_cpiDropMGAllocConnReq","LSS_cpiDropRateAlarm":"vCTS: LSS_cpiDropRateAlarm","LSS_cpiExceptionService":"vCTS: LSS_cpiExceptionService","LSS_cpiFailRateAlarm":"vCTS: LSS_cpiFailRateAlarm","LSS_cpiFailSCTPFastRetransIncr":"vCTS: LSS_cpiFailSCTPFastRetransIncr","LSS_cpiFailSCTPFastRetransRate":"vCTS: LSS_cpiFailSCTPFastRetransRate","LSS_cpiFailSCTPSRTT1Incr":"vCTS: LSS_cpiFailSCTPSRTT1Incr","LSS_cpiFailSCTPSRTT2Incr":"vCTS: LSS_cpiFailSCTPSRTT2Incr","LSS_cpiFailSCTPT3RetransIncr":"vCTS: LSS_cpiFailSCTPT3RetransIncr","LSS_cpiFailSCTPT3RetransRate":"vCTS: LSS_cpiFailSCTPT3RetransRate","LSS_cpiFileSysUsage":"vCTS: LSS_cpiFileSysUsage","LSS_cpiMemAllocFail":"vCTS: LSS_cpiMemAllocFail","LSS_cpiNumOfLICDRDel":"vCTS: LSS_cpiNumOfLICDRDel","LSS_cpiReinitServiceSelf":"vCTS: LSS_cpiReinitServiceSelf","LSS_cpiSIPRetransmitInvite":"vCTS: LSS_cpiSIPRetransmitInvite","LSS_cpiSIPRetransmitNonInvite":"vCTS: LSS_cpiSIPRetransmitNonInvite","LSS_cpiSS7DropSCTPPktsRcvd":"vCTS: LSS_cpiSS7DropSCTPPktsRcvd","LSS_cpiSS7FailSCTPFastRetransRate":"vCTS: LSS_cpiSS7FailSCTPFastRetransRate","LSS_cpiStabilityAlarm":"vCTS: LSS_cpiStabilityAlarm","LSS_cpuOverload":"vCTS: LSS_cpuOverload","LSS_databaseConnectionLost":"vCTS: LSS_databaseConnectionLost","LSS_databaseReplicationLinkDown":"vCTS: LSS_databaseReplicationLinkDown","LSS_databaseSizeExhausted":"vCTS: LSS_databaseSizeExhausted","LSS_dbHighCpuUtilization":"vCTS: LSS_dbHighCpuUtilization","LSS_dbOffline":"vCTS: LSS_dbOffline","LSS_dbStatusUnexpected":"vCTS: LSS_dbStatusUnexpected","LSS_degradedResource":"vCTS: LSS_degradedResource","LSS_degrow":"vCTS: LSS_degrow","LSS_deviceServerCxnLost":"vCTS: LSS_deviceServerCxnLost","LSS_diamLinkDown":"vCTS: LSS_diamLinkDown","LSS_diamMaxClientsExceeded":"vCTS: LSS_diamMaxClientsExceeded","LSS_dnsThreshold":"vCTS: LSS_dnsThreshold","LSS_ethernetError":"vCTS: LSS_ethernetError","LSS_ethernetLinkDown":"vCTS: LSS_ethernetLinkDown","LSS_externalConnectivity":"vCTS: LSS_externalConnectivity","LSS_featureLicenseExpiration":"vCTS: LSS_featureLicenseExpiration","LSS_featureLicenseKeyNearExpiration":"vCTS: LSS_featureLicenseKeyNearExpiration","LSS_featureLockValidationError":"vCTS: LSS_featureLockValidationError","LSS_fqdnError":"vCTS: LSS_fqdnError","LSS_fru":"vCTS: LSS_fru","LSS_gatewayCongestion":"vCTS: LSS_gatewayCongestion","LSS_gatewayForcedOOS":"vCTS: LSS_gatewayForcedOOS","LSS_gatewayProvisioningError":"vCTS: LSS_gatewayProvisioningError","LSS_gatewayUnreachable":"vCTS: LSS_gatewayUnreachable","LSS_gatewayUnregistered":"vCTS: LSS_gatewayUnregistered","LSS_globalParameterNotFound":"vCTS: LSS_globalParameterNotFound","LSS_grow":"vCTS: LSS_grow","LSS_h248MessageBufferDepletion":"vCTS: LSS_h248MessageBufferDepletion","LSS_hostDown":"vCTS: LSS_hostDown","LSS_hostReset":"vCTS: LSS_hostReset","LSS_invalidGateway":"vCTS: LSS_invalidGateway","LSS_iriLinkDown":"vCTS: LSS_iriLinkDown","LSS_ldapServerConnectionLost":"vCTS: LSS_ldapServerConnectionLost","LSS_llcDown":"vCTS: LSS_llcDown","LSS_logicalLinkDown":"vCTS: LSS_logicalLinkDown","LSS_logicalLinkNotFound":"vCTS: LSS_logicalLinkNotFound","LSS_logRotateThreshold":"vCTS: LSS_logRotateThreshold","LSS_memoryOverload":"vCTS: LSS_memoryOverload","LSS_nodeConfigFailure":"vCTS: LSS_nodeConfigFailure","LSS_nodeGroupOOS":"vCTS: LSS_nodeGroupOOS","LSS_nodeOOS":"vCTS: LSS_nodeOOS","LSS_nonCompliantFaultGroupMemberState":"vCTS: LSS_nonCompliantFaultGroupMemberState","LSS_nonCsAddrChannelDepletion":"vCTS: LSS_nonCsAddrChannelDepletion","LSS_numberOfTuplesInUse":"vCTS: LSS_numberOfTuplesInUse","LSS_osSecInfoModificationDetected":"vCTS: LSS_osSecInfoModificationDetected","LSS_osSecInformationMissing":"vCTS: LSS_osSecInformationMissing","LSS_osSecUnexpectedInformation":"vCTS: LSS_osSecUnexpectedInformation","LSS_pdnsMySqlReplication":"vCTS: LSS_pdnsMySqlReplication","LSS_pktCorruptionDetectedViaRCCLANCheck":"vCTS: LSS_pktCorruptionDetectedViaRCCLANCheck","LSS_platformCommandFailure":"vCTS: LSS_platformCommandFailure","LSS_pmDataNotCollected":"vCTS: LSS_pmDataNotCollected","LSS_processDown":"vCTS: LSS_processDown","LSS_processNotStarted":"vCTS: LSS_processNotStarted","LSS_provisioningInhibitedMode":"vCTS: LSS_provisioningInhibitedMode","LSS_rccInhibitedMode":"vCTS: LSS_rccInhibitedMode","LSS_remotedbLinkDown":"vCTS: LSS_remotedbLinkDown","LSS_remoteQueryServerFailure":"vCTS: LSS_remoteQueryServerFailure","LSS_restore":"vCTS: LSS_restore","LSS_serviceCFGDataTimestampError":"vCTS: LSS_serviceCFGDataTimestampError","LSS_serviceCommCxnLost":"vCTS: LSS_serviceCommCxnLost","LSS_serviceOnewayCommunication":"vCTS: LSS_serviceOnewayCommunication","LSS_sheddingOverload":"vCTS: LSS_sheddingOverload","LSS_simxml":"vCTS: LSS_simxml","LSS_sipLinkSetMaxQuarantineList":"vCTS: LSS_sipLinkSetMaxQuarantineList","LSS_sipLinkSetUnavailable":"vCTS: LSS_sipLinkSetUnavailable","LSS_sipLinkUnavailable":"vCTS: LSS_sipLinkUnavailable","LSS_softwareAllocatedResourceOverload":"vCTS: LSS_softwareAllocatedResourceOverload","LSS_softwareComponentStandbyNotReady":"vCTS: LSS_softwareComponentStandbyNotReady","LSS_softwareLicense":"vCTS: LSS_softwareLicense","LSS_svcdegrow":"vCTS: LSS_svcdegrow","LSS_svcgrow":"vCTS: LSS_svcgrow","LSS_swVersionMismatch":"vCTS: LSS_swVersionMismatch","LSS_tftpDownloadCorrupt":"vCTS: LSS_tftpDownloadCorrupt","LSS_timeStampValueOutOfSystemRange":"vCTS: LSS_timeStampValueOutOfSystemRange","LSS_transactionHandlerBlockDepletion":"vCTS: LSS_transactionHandlerBlockDepletion","LSS_upgrade":"vCTS: LSS_upgrade","SYS_BackupFailure":"vCTS: SYS_BackupFailure","SYS_Configuration":"vCTS: SYS_Configuration","SYS_COTRecordTransferFailure":"vCTS: SYS_COTRecordTransferFailure","SYS_CPM_USERDATA_INCONSITENCY":"vCTS: SYS_CPM_USERDATA_INCONSITENCY","SYS_CPM_USERDATA_RESTORED":"vCTS: SYS_CPM_USERDATA_RESTORED","SYS_EventQueueCapacity":"vCTS: SYS_EventQueueCapacity","SYS_ICMPFailure":"vCTS: SYS_ICMPFailure","SYS_IPsecConfig":"vCTS: SYS_IPsecConfig","SYS_LinkDown":"vCTS: SYS_LinkDown","SYS_NotifyDisabled":"vCTS: SYS_NotifyDisabled","SYS_NotifyLocked":"vCTS: SYS_NotifyLocked","SYS_NumTL1MeasThresh":"vCTS: SYS_NumTL1MeasThresh","SYS_RADIUS_TO_LDAP_FAILURE":"vCTS: SYS_RADIUS_TO_LDAP_FAILURE","SYS_ROOT_ACCESS_DENIED":"vCTS: SYS_ROOT_ACCESS_DENIED","SYS_ROOT_FTP_VIOLATION":"vCTS: SYS_ROOT_FTP_VIOLATION","SYS_ROOT_LOGIN_VIOLATION":"vCTS: SYS_ROOT_LOGIN_VIOLATION","SYS_ROOT_SSH_LOGIN_VIOLATION":"vCTS: SYS_ROOT_SSH_LOGIN_VIOLATION","SYS_SetupAAAFailure":"vCTS: SYS_SetupAAAFailure","SYS_SNETrapOverload":"vCTS: SYS_SNETrapOverload","SYS_SNMPAuthenticationFailure":"vCTS: SYS_SNMPAuthenticationFailure","SYS_SNMPFailure":"vCTS: SYS_SNMPFailure","SYS_SU_TO_ROOT_FAILURE":"vCTS: SYS_SU_TO_ROOT_FAILURE","SYS_SYSTEMTrapOverload":"vCTS: SYS_SYSTEMTrapOverload","SYS_ThresholdCrossed":"vCTS: SYS_ThresholdCrossed","SYS_UndiscoveredObject":"vCTS: SYS_UndiscoveredObject","SYS_WriteAAAFailure":"vCTS: SYS_WriteAAAFailure","jnxSpaceDiskUsageRising":"vDBE-EMS-Juniper: jnxSpaceDiskUsageRising","jnxSpaceDiskUsageRisingCleared":"vDBE-EMS-Juniper: jnxSpaceDiskUsageRisingCleared","jnxSpaceSwapUsageRising":"vDBE-EMS-Juniper: jnxSpaceSwapUsageRising","jnxSpaceSwapUsageRisingCleared":"vDBE-EMS-Juniper: jnxSpaceSwapUsageRisingCleared","jnxSpaceCPULARising":"vDBE-EMS-Juniper: jnxSpaceCPULARising","jnxSpaceCPULARisingCleared":"vDBE-EMS-Juniper: jnxSpaceCPULARisingCleared","jnxSpaceWebpProxyProcessDown":"vDBE-EMS-Juniper: jnxSpaceWebpProxyProcessDown","jnxSpaceWebpProxyProcessUp":"vDBE-EMS-Juniper: jnxSpaceWebpProxyProcessUp","jnxSpaceNMAProcessDown":"vDBE-EMS-Juniper: jnxSpaceNMAProcessDown","jnxSpaceNMAProcessUp":"vDBE-EMS-Juniper: jnxSpaceNMAProcessUp","jnxSpaceJbossProcessDown":"vDBE-EMS-Juniper: jnxSpaceJbossProcessDown","jnxSpaceJbossProcessUp":"vDBE-EMS-Juniper: jnxSpaceJbossProcessUp","jnxSpaceMysqlProcessDown":"vDBE-EMS-Juniper: jnxSpaceMysqlProcessDown","jnxSpaceMysqlProcessUp":"vDBE-EMS-Juniper: jnxSpaceMysqlProcessUp","jnxSpacePostgresqlProcessDown":"vDBE-EMS-Juniper: jnxSpacePostgresqlProcessDown","jnxSpacePostgresqlProcessUp":"vDBE-EMS-Juniper: jnxSpacePostgresqlProcessUp","jnxSpaceWatchdogStopped":"vDBE-EMS-Juniper: jnxSpaceWatchdogStopped","jnxSpaceWatchdogStarted":"vDBE-EMS-Juniper: jnxSpaceWatchdogStarted","jnxSpaceSNAProcessDown":"vDBE-EMS-Juniper: jnxSpaceSNAProcessDown","jnxSpaceSNAProcessUp":"vDBE-EMS-Juniper: jnxSpaceSNAProcessUp","jnxSpaceNodeDown":"vDBE-EMS-Juniper: jnxSpaceNodeDown","jnxSpaceNodeUp":"vDBE-EMS-Juniper: jnxSpaceNodeUp"," jnxSpaceNodeRemoval":"vDBE-EMS-Juniper: jnxSpaceNodeRemoval","jnxCmCfgChange":"vDBE-Juniper: jnxCmCfgChange","jnxCmRescueChange":"vDBE-Juniper: jnxCmRescueChange","jnxEventTrap":"vDBE-Juniper: jnxEventTrap","jnxJsFwAuthFailure":"vDBE-Juniper: jnxJsFwAuthFailure","jnxJsFwAuthServiceUp":"vDBE-Juniper: jnxJsFwAuthServiceUp","jnxJsFwAuthServiceDown":"vDBE-Juniper: jnxJsFwAuthServiceDown","jnxJsFwAuthCapacityExceeded":"vDBE-Juniper: jnxJsFwAuthCapacityExceeded","jnxJsIdpSignatureUpdate":"vDBE-Juniper: jnxJsIdpSignatureUpdate","jnxJsIdpAttackLog":"vDBE-Juniper: jnxJsIdpAttackLog","jnxJsSrcNatPoolThresholdStatus":"vDBE-Juniper: jnxJsSrcNatPoolThresholdStatus","jnxJsNatRuleThresholdStatus":"vDBE-Juniper: jnxJsNatRuleThresholdStatus","jnxJsScreenAttack":"vDBE-Juniper: jnxJsScreenAttack","jnxJsScreenCfgChange":"vDBE-Juniper: jnxJsScreenCfgChange","jnxJsAvPatternUpdateTrap":"vDBE-Juniper: jnxJsAvPatternUpdateTrap","jnxJsChassisClusterSwitchover":"vDBE-Juniper: jnxJsChassisClusterSwitchover","jnxJsChClusterIntfTrap":"vDBE-Juniper: jnxJsChClusterIntfTrap","jnxJsChClusterSpuMismatchTrap":"vDBE-Juniper: jnxJsChClusterSpuMismatchTrap","jnxJsChClusterWeightTrap":"vDBE-Juniper: jnxJsChClusterWeightTrap","jnxLicenseGraceExpired":"vDBE-Juniper: jnxLicenseGraceExpired","jnxLicenseGraceAboutToExpire":"vDBE-Juniper: jnxLicenseGraceAboutToExpire","jnxLicenseAboutToExpire":"vDBE-Juniper: jnxLicenseAboutToExpire","jnxLicenseInfringeCumulative":"vDBE-Juniper: jnxLicenseInfringeCumulative","jnxLicenseInfringeSingle":"vDBE-Juniper: jnxLicenseInfringeSingle","jnxNatAddrPoolThresholdStatus":"vDBE-Juniper: jnxNatAddrPoolThresholdStatus","jnxSyslogTrap":"vDBE-Juniper: jnxSyslogTrap","jnxAccessAuthServiceUp":"vDBE-Juniper: jnxAccessAuthServiceUp","jnxAccessAuthServiceDown":"vDBE-Juniper: jnxAccessAuthServiceDown","jnxAccessAuthServerDisabled":"vDBE-Juniper: jnxAccessAuthServerDisabled","jnxAccessAuthServerEnabled":"vDBE-Juniper: jnxAccessAuthServerEnabled","jnxAccessAuthAddressPoolHighThreshold":"vDBE-Juniper: jnxAccessAuthAddressPoolHighThreshold","jnxAccessAuthAddressPoolAbateThreshold":"vDBE-Juniper: jnxAccessAuthAddressPoolAbateThreshold","jnxAccessAuthAddressPoolOutOfAddresses":"vDBE-Juniper: jnxAccessAuthAddressPoolOutOfAddresses","jnxAccessAuthAddressPoolOutOfMemory":"vDBE-Juniper: jnxAccessAuthAddressPoolOutOfMemory","LEVEL_WARNING_CPU":"vMRF: LEVEL_WARNING_CPU","LEVEL_MAJOR_CPU":"vMRF: LEVEL_MAJOR_CPU","LEVEL_CRITICAL_CPU":"vMRF: LEVEL_CRITICAL_CPU","LEVEL_WARNING_MEM":"vMRF: LEVEL_WARNING_MEM","LEVEL_MAJOR_MEM":"vMRF: LEVEL_MAJOR_MEM","LEVEL_CRITICAL_MEM":"vMRF: LEVEL_CRITICAL_MEM","LEVEL_WARNING_DISK":"vMRF: LEVEL_WARNING_DISK","LEVEL_MAJOR_DISK":"vMRF: LEVEL_MAJOR_DISK","LEVEL_CRITICAL_DISK":"vMRF: LEVEL_CRITICAL_DISK","LEVEL_WARNING_RTPBANDWIDTH":"vMRF: LEVEL_WARNING_RTPBANDWIDTH","LEVEL_MAJOR_RTPBANDWIDTH":"vMRF: LEVEL_MAJOR_RTPBANDWIDTH","LEVEL_CRITICAL_RTPBANDWIDTH":"vMRF: LEVEL_CRITICAL_RTPBANDWIDTH","LEVEL_WARNING_RTPINPACKETLOSS":"vMRF: LEVEL_WARNING_RTPINPACKETLOSS","LEVEL_MAJOR_RTPINPACKETLOSS":"vMRF: LEVEL_MAJOR_RTPINPACKETLOSS","LEVEL_CRITICAL_RTPINPACKETLOSS":"vMRF: LEVEL_CRITICAL_RTPINPACKETLOSS","LEVEL_WARNING_RTPOUTPACKETLOSS":"vMRF: LEVEL_WARNING_RTPOUTPACKETLOSS","LEVEL_MAJOR_RTPOUTPACKETLOSS":"vMRF: LEVEL_MAJOR_RTPOUTPACKETLOSS","LEVEL_CRITICAL_RTPOUTPACKETLOSS":"vMRF: LEVEL_CRITICAL_RTPOUTPACKETLOSS","LEVEL_WARNING_TCPLOSTRETRANSMITRATE":"vMRF: LEVEL_WARNING_TCPLOSTRETRANSMITRATE","LEVEL_MAJOR_TCPLOSTRETRANSMITRATE":"vMRF: LEVEL_MAJOR_TCPLOSTRETRANSMITRATE","LEVEL_CRITICAL_TCPLOSTRETRANSMITRATE":"vMRF: LEVEL_CRITICAL_TCPLOSTRETRANSMITRATE","LEVEL_WARNING_TCPLOSSFAILURERATE":"vMRF: LEVEL_WARNING_TCPLOSSFAILURERATE","LEVEL_MAJOR_TCPLOSSFAILURERATE":"vMRF: LEVEL_MAJOR_TCPLOSSFAILURERATE","LEVEL_CRITICAL_TCPLOSSFAILURERATE":"vMRF: LEVEL_CRITICAL_TCPLOSSFAILURERATE","LEVEL_CRITICAL_RTPLINKDOWN":"vMRF: LEVEL_CRITICAL_RTPLINKDOWN","TARGET_REACHABLE":"vMRF: TARGET_REACHABLE","PUBLICATION_ERROR":"vMRF: PUBLICATION_ERROR","REMOTE_SERVER_SYNCHRONIZATION_ERROR":"vMRF: REMOTE_SERVER_SYNCHRONIZATION_ERROR","TRANSCODER_TOOL_EXEC_ERROR":"vMRF: TRANSCODER_TOOL_EXEC_ERROR","CLIENT_SYNCHRONIZATION_ERROR":"vMRF: CLIENT_SYNCHRONIZATION_ERROR","CLUSTER_UNREACHABLE":"vMRF: CLUSTER_UNREACHABLE","REMOTE_NODE_OFFLINE":"vMRF: REMOTE_NODE_OFFLINE","IPADDR_STOPPED":"vMRF: IPADDR_STOPPED","MRFC_STOPPED":"vMRF: MRFC_STOPPED","MNGT_STOPPED":"vMRF: MNGT_STOPPED","IPADDR_STARTED":"vMRF: IPADDR_STARTED","MRFC_STARTED":"vMRF: MRFC_STARTED","MNGT_STARTED":"vMRF: MNGT_STARTED","VOLATTACH_FAILED":"vMRF: VOLATTACH_FAILED","VOLDETACH_FAILED":"vMRF: VOLDETACH_FAILED","VOLDEL":"vMRF: VOLDEL","VOLCORRUPT":"vMRF: VOLCORRUPT","VOLFOREIGN":"vMRF: VOLFOREIGN","ACTIVE_ALARM_TABLE_PURGE":"vMRF: ACTIVE_ALARM_TABLE_PURGE","GENERIC_FORMER_STATELESS":"vMRF: GENERIC_FORMER_STATELESS","GENERIC_FORMER_STATEFUL":"vMRF: GENERIC_FORMER_STATEFUL","NO_MORE_ALARM_DESCRIPTION":"vMRF: NO_MORE_ALARM_DESCRIPTION","SERVICE_PROCESS_ENDS":"vMRF: SERVICE_PROCESS_ENDS","DEFENSE_STOPPED":"vMRF: DEFENSE_STOPPED","USER_ACCOUNT_LOCKED":"vMRF: USER_ACCOUNT_LOCKED","CONNECTION_SQL_NOT_ESTABLISHED":"vMRF: CONNECTION_SQL_NOT_ESTABLISHED","FALSE_ALARM":"vMRF: FALSE_ALARM","RADIUS SERVER HS":"vMRF: RADIUS SERVER HS","DRM_PACKAGER_IS_NOT_AVAILABLE":"vMRF: DRM_PACKAGER_IS_NOT_AVAILABLE","DRM_LICENSE_BUILDER_IS_NOT_AVAILABLE":"vMRF: DRM_LICENSE_BUILDER_IS_NOT_AVAILABLE","ERROR_WHILE_CREATING_PLAYLIST_MANAGER_FILE":"vMRF: ERROR_WHILE_CREATING_PLAYLIST_MANAGER_FILE","ERROR_WHILE_BUILDING_PLAYLIST_XML_REPRESENTATION":"vMRF: ERROR_WHILE_BUILDING_PLAYLIST_XML_REPRESENTATION","PLAYLIST_FILE_TO_PUBLISH_NOT_FOUND":"vMRF: PLAYLIST_FILE_TO_PUBLISH_NOT_FOUND","COULD_NOT_CONNECT_TO_PVNS_SERVER":"vMRF: COULD_NOT_CONNECT_TO_PVNS_SERVER","HTTP_OR_HTTPCLIENT_EXCEPTION_HAS_OCCURRED":"vMRF: HTTP_OR_HTTPCLIENT_EXCEPTION_HAS_OCCURRED","I/O_ERROR_WHILE_PUBLISHING_PLAYLIST_FILE":"vMRF: I/O_ERROR_WHILE_PUBLISHING_PLAYLIST_FILE","ERROR_WHILE_REQUESTING_SDP_FILE":"vMRF: ERROR_WHILE_REQUESTING_SDP_FILE","ERROR_WHILE_REQUESTING_SDP_FILE:_REMOTE_EXCEPTION":"vMRF: ERROR_WHILE_REQUESTING_SDP_FILE:_REMOTE_EXCEPTION","NO_STREAMING_RESOURCES":"vMRF: NO_STREAMING_RESOURCES","NO_STREAMING_MODULES_REGISTERED":"vMRF: NO_STREAMING_MODULES_REGISTERED","SM_FAILURE":"vMRF: SM_FAILURE","MISSING_FILE_OR_ENCODER":"vMRF: MISSING_FILE_OR_ENCODER","INVALID_RANGE":"vMRF: INVALID_RANGE","THRESHOLD_VALUE_EXCEEDED":"vMRF: THRESHOLD_VALUE_EXCEEDED","TICKET_QUEUE_FULL":"vMRF: TICKET_QUEUE_FULL","PARSING_INITIALIZATION_EXCEPTION":"vMRF: PARSING_INITIALIZATION_EXCEPTION","CUSTOMERCARE_INTERNAL_EXCEPTION":"vMRF: CUSTOMERCARE_INTERNAL_EXCEPTION","PARSING_EXCEPTION":"vMRF: PARSING_EXCEPTION","I/O_PROBLEM":"vMRF: I/O_PROBLEM","INEXISTENT_FILE_OR_FOLDER":"vMRF: INEXISTENT_FILE_OR_FOLDER","FILE_NOT_IN_XML_FORMAT":"vMRF: FILE_NOT_IN_XML_FORMAT","SERVICE_STATE_CHANGE":"vMRF: SERVICE_STATE_CHANGE","MONITORED_FILE_UPDATE_ERROR":"vMRF: MONITORED_FILE_UPDATE_ERROR","MONITORED_RPM_DELETED_ERROR":"vMRF: MONITORED_RPM_DELETED_ERROR","MONITORED_RPM_ADDED_ERROR":"vMRF: MONITORED_RPM_ADDED_ERROR","MONITORED_CHMOD_ERROR":"vMRF: MONITORED_CHMOD_ERROR","MONITORED_CHOWN_ERROR":"vMRF: MONITORED_CHOWN_ERROR","PASSWD_ROOT_ERROR":"vMRF: PASSWD_ROOT_ERROR","PASSWD_ERROR":"vMRF: PASSWD_ERROR","ROOTKIT_ERROR":"vMRF: ROOTKIT_ERROR","STARTUP_ERR_UNDEFINED_PORT":"vMRF: STARTUP_ERR_UNDEFINED_PORT","STARTUP_ERR_FAIL_FIND_HOSTNAME":"vMRF: STARTUP_ERR_FAIL_FIND_HOSTNAME","STARTUP_ERR_CF_MISSING":"vMRF: STARTUP_ERR_CF_MISSING","STARTUP_ERR_FAILED_TO_OPEN_CF":"vMRF: STARTUP_ERR_FAILED_TO_OPEN_CF","STARTUP_ERR_FAILED_TO_BIND_PORT":"vMRF: STARTUP_ERR_FAILED_TO_BIND_PORT","STARTUP_ERR_CFG_UNIT_MISSING":"vMRF: STARTUP_ERR_CFG_UNIT_MISSING","MCTR_INVALID_CODEC_NAME":"vMRF: MCTR_INVALID_CODEC_NAME","RTSP_SERVER_FAILURE":"vMRF: RTSP_SERVER_FAILURE","RTSP_SERVER_QUARANTINE":"vMRF: RTSP_SERVER_QUARANTINE","TRANSCODING_FAILURE":"vMRF: TRANSCODING_FAILURE","FILE_CACHE_FAILURE":"vMRF: FILE_CACHE_FAILURE","STARTUP_ERROR_INITIALIZATION_FAILED":"vMRF: STARTUP_ERROR_INITIALIZATION_FAILED","CONFERENCE_FAILURE":"vMRF: CONFERENCE_FAILURE","PLC_DEGRADATION_LOW":"vMRF: PLC_DEGRADATION_LOW","PLC_DEGRADATION_MEDIUM":"vMRF: PLC_DEGRADATION_MEDIUM","PLC_DEGRADATION_HIGH":"vMRF: PLC_DEGRADATION_HIGH","AUDIO_RESYNCH_LOW":"vMRF: AUDIO_RESYNCH_LOW","AUDIO_RESYNCH_MEDIUM":"vMRF: AUDIO_RESYNCH_MEDIUM","AUDIO_RESYNCH_HIGH":"vMRF: AUDIO_RESYNCH_HIGH","VIDEO_RESYNCH_LOW":"vMRF: VIDEO_RESYNCH_LOW","VIDEO_RESYNCH_MEDIUM":"vMRF: VIDEO_RESYNCH_MEDIUM","VIDEO_RESYNCH_HIGH":"vMRF: VIDEO_RESYNCH_HIGH","PLAY_FAILURES_LOW":"vMRF: PLAY_FAILURES_LOW","PLAY_FAILURES_MEDIUM":"vMRF: PLAY_FAILURES_MEDIUM","PLAY_FAILURES_HIGH":"vMRF: PLAY_FAILURES_HIGH","NOT_ENOUGH_FREE_CONFEREE":"vMRF: NOT_ENOUGH_FREE_CONFEREE","NO_LONGER_FREE_CONFERENCE_ROOM":"vMRF: NO_LONGER_FREE_CONFERENCE_ROOM","STARTUP_ERROR_FAIL_TO_READ_CF":"vMRF: STARTUP_ERROR_FAIL_TO_READ_CF","STARTUP_ERROR_SIP_ADAPTER_INIT":"vMRF: STARTUP_ERROR_SIP_ADAPTER_INIT","STARTUP_ERROR_MONITORING_INIT":"vMRF: STARTUP_ERROR_MONITORING_INIT","REGISTER_ERROR_FAILURE":"vMRF: REGISTER_ERROR_FAILURE","DRI_ERROR_FAILURE":"vMRF: DRI_ERROR_FAILURE","STARTUP_ERROR_STACK_CONFIGURATION":"vMRF: STARTUP_ERROR_STACK_CONFIGURATION","STARTUP_ERROR_CONF":"vMRF: STARTUP_ERROR_CONF","STARTUP_ERROR_UNDEFINED_PORT":"vMRF: STARTUP_ERROR_UNDEFINED_PORT","HOST_REMOVED":"vMRF: HOST_REMOVED","INTERCEPT_THRESHOLD_NB_DIALOG_ALLOCATED":"vMRF: INTERCEPT_THRESHOLD_NB_DIALOG_ALLOCATED","STARTUP_ERROR_STACK_CONF":"vMRF: STARTUP_ERROR_STACK_CONF","STARTUP_ERROR_CONFIGURATION":"vMRF: STARTUP_ERROR_CONFIGURATION","STARTUP_ERROR_FAILED_TO_RETRIEVE_HOSTNAME":"vMRF: STARTUP_ERROR_FAILED_TO_RETRIEVE_HOSTNAME","LEVEL_WARNING_CALL":"vMRF: LEVEL_WARNING_CALL","LEVEL_ALARM_MINOR_CALL":"vMRF: LEVEL_ALARM_MINOR_CALL","LEVEL_ALARM_MAJOR_CALL":"vMRF: LEVEL_ALARM_MAJOR_CALL","LEVEL_ALARM_MRFPoutOfService":"vMRF: LEVEL_ALARM_MRFPoutOfService","MRFP_CALL_REJECTED_Threshold #1":"vMRF: MRFP_CALL_REJECTED_Threshold #1","MRFP_CALL_REJECTED_Threshold #2":"vMRF: MRFP_CALL_REJECTED_Threshold #2","MRFP_CALL_REJECTED_Threshold #3":"vMRF: MRFP_CALL_REJECTED_Threshold #3","MRFP_CALL_RETRIED_Threshold #1":"vMRF: MRFP_CALL_RETRIED_Threshold #1","MRFP_CALL_RETRIED_Threshold #2":"vMRF: MRFP_CALL_RETRIED_Threshold #2","MRFP_CALL_RETRIED_Threshold #3":"vMRF: MRFP_CALL_RETRIED_Threshold #3","STARTUP_PUB_FILE_NOT_PRESENT":"vMRF: STARTUP_PUB_FILE_NOT_PRESENT","STARTUP_INF_FILE_NOT_PRESENT":"vMRF: STARTUP_INF_FILE_NOT_PRESENT","STARTUP_LIC_FILE_NOT_PRESENT":"vMRF: STARTUP_LIC_FILE_NOT_PRESENT","GENERIC_HARDWARE_PROBLEM":"vMRF: GENERIC_HARDWARE_PROBLEM","HARD_DRIVE_PROBLEM":"vMRF: HARD_DRIVE_PROBLEM","NETWORK_LINK_PROBLEM":"vMRF: NETWORK_LINK_PROBLEM","POWER_SUPPLY_PROBLEM":"vMRF: POWER_SUPPLY_PROBLEM","SMART_HARD_DRIVE_PROBLEM":"vMRF: SMART_HARD_DRIVE_PROBLEM","STARTUP_ERROR":"vMRF: STARTUP_ERROR","RESOURCE_NOT_ACCESSIBLE":"vMRF: RESOURCE_NOT_ACCESSIBLE","RESOURCE_ACCESSIBLE":"vMRF: RESOURCE_ACCESSIBLE","RESOURCE_FULL":"vMRF: RESOURCE_FULL","DRI_ALARM":"vMRF: DRI_ALARM","REGISTER_ERROR_CCF":"vMRF: REGISTER_ERROR_CCF","REGISTER_ERROR_EXTERNAL":"vMRF: REGISTER_ERROR_EXTERNAL","TIMEOUT_ERROR":"vMRF: TIMEOUT_ERROR","VXML_ERROR":"vMRF: VXML_ERROR","A Network Element is no longer available due to a connection failure":"vMVM: A Network Element is no longer available due to a connection failure","A MetaSphere server is reporting a fault with the configuration of its connection to MetaView":"vMVM: A MetaSphere server is reporting a fault with the configuration of its connection to MetaView","Configured OBS IPs don't match available OBS nodes. Configured but unavailable nodes include: []. Real nodes not configured include: []":"vMVM: Configured OBS IPs don't match available OBS nodes. Configured but unavailable nodes include: []. Real nodes not configured include: []","Service Assurance Server cannot be contacted":"vMVM: Service Assurance Server cannot be contacted","The primary MetaView Director has lost contact with the backup MetaView Director":"vMVM: The primary MetaView Director has lost contact with the backup MetaView Director","The active server has lost connection to the standby":"vMVM: The active server has lost connection to the standby","CrashCounter":"vprobes-vBE-Processing: CrashCounter","IsAlive":"vprobes-vBE-Processing: IsAlive","SwRestart":"vprobes-vLB: SwRestart","Repeated exceptions have occurred.":"vSBC-Metaswitch: Repeated exceptions have occurred.","A licensing limit is close to capacity.":"vSBC-Metaswitch: A licensing limit is close to capacity.","One or more feature packs have been breached.":"vSBC-Metaswitch: One or more feature packs have been breached.","The grace period on this Perimeta system will expire in less than 48 hours, after which calls will not be processed.":"vSBC-Metaswitch: The grace period on this Perimeta system will expire in less than 48 hours, after which calls will not be processed.","The grace period on this Perimeta system will expire in less than 7 days, after which calls will not be processed.":"vSBC-Metaswitch: The grace period on this Perimeta system will expire in less than 7 days, after which calls will not be processed.","The license on this Perimeta system will expire in less than 4 weeks.":"vSBC-Metaswitch: The license on this Perimeta system will expire in less than 4 weeks.","A Perimeta blade has become unlicensed.":"vSBC-Metaswitch: A Perimeta blade has become unlicensed.","Perimeta is licensed with a bypass certificate, which is valid until the time displayed.":"vSBC-Metaswitch: Perimeta is licensed with a bypass certificate, which is valid until the time displayed.","The number of licensed instances exceeded a threshold of the licensed limit.":"vSBC-Metaswitch: The number of licensed instances exceeded a threshold of the licensed limit.","The software token on the primary Distributed Capacity Manager will expire on the displayed date.":"vSBC-Metaswitch: The software token on the primary Distributed Capacity Manager will expire on the displayed date.","A capacity limit on the license installed on this Perimeta system does not match the largest limit across all systems in the deployment.":"vSBC-Metaswitch: A capacity limit on the license installed on this Perimeta system does not match the largest limit across all systems in the deployment.","An adjacency has voice quality alerts.":"vSBC-Metaswitch: An adjacency has voice quality alerts.","The number of calls being audited is congested.":"vSBC-Metaswitch: The number of calls being audited is congested.","Session Controller is rejecting calls because there is no valid active call policy set configured.":"vSBC-Metaswitch: Session Controller is rejecting calls because there is no valid active call policy set configured.","A call policy set is inactive because it has been misconfigured.":"vSBC-Metaswitch: A call policy set is inactive because it has been misconfigured.","Session Controller is inactive and rejecting calls.":"vSBC-Metaswitch: Session Controller is inactive and rejecting calls.","Sources have breached minor or major blacklist thresholds.":"vSBC-Metaswitch: Sources have breached minor or major blacklist thresholds.","Sources are blacklisted.":"vSBC-Metaswitch: Sources are blacklisted.","The blacklisting configuration will change as a result of upgrade and some configured blacklists or alerts will no longer be applied.":"vSBC-Metaswitch: The blacklisting configuration will change as a result of upgrade and some configured blacklists or alerts will no longer be applied.","A large number of downgrades and bans have been created as a result of blacklisting.":"vSBC-Metaswitch: A large number of downgrades and bans have been created as a result of blacklisting.","Session Controller is unable to track further sources for blacklisting.":"vSBC-Metaswitch: Session Controller is unable to track further sources for blacklisting.","A software protection switch was triggered.":"vSBC-Metaswitch: A software protection switch was triggered.","A disk area on a processor blade is nearly full.":"vSBC-Metaswitch: A disk area on a processor blade is nearly full.","Memory use is very high.":"vSBC-Metaswitch: Memory use is very high.","The primary processor-blade has lost contact with the backup.":"vSBC-Metaswitch: The primary processor-blade has lost contact with the backup.","An efix or patch has been applied to this system containing diagnostic versions of some software libraries.":"vSBC-Metaswitch: An efix or patch has been applied to this system containing diagnostic versions of some software libraries.","A software protection switch (SPS) was triggered. Call and registration state was lost.":"vSBC-Metaswitch: A software protection switch (SPS) was triggered. Call and registration state was lost.","The Ethernet Heartbeat between primary and backup processors has failed.":"vSBC-Metaswitch: The Ethernet Heartbeat between primary and backup processors has failed.","The Backplane Heartbeat between primary and backup processors has failed.":"vSBC-Metaswitch: The Backplane Heartbeat between primary and backup processors has failed.","A disk area on a processor blade reported an error.":"vSBC-Metaswitch: A disk area on a processor blade reported an error.","The system is upgrading.":"vSBC-Metaswitch: The system is upgrading.","An error with NTP functionality has been detected.":"vSBC-Metaswitch: An error with NTP functionality has been detected.","One or more users are locked out of the system.":"vSBC-Metaswitch: One or more users are locked out of the system.","The Craft Terminal user FTP directory on a processor blade is nearly full.":"vSBC-Metaswitch: The Craft Terminal user FTP directory on a processor blade is nearly full.","A scheduled configuration snapshot has failed.":"vSBC-Metaswitch: A scheduled configuration snapshot has failed.","The Session Controller is stopping as a result of administrator action.":"vSBC-Metaswitch: The Session Controller is stopping as a result of administrator action.","A Session Controller processor blade is stopping as a result of administrator action.":"vSBC-Metaswitch: A Session Controller processor blade is stopping as a result of administrator action.","An object could not be activated because its service address does not exist or is not fully specified.":"vSBC-Metaswitch: An object could not be activated because its service address does not exist or is not fully specified.","The hardware on a processor does not meet minimum requirements.":"vSBC-Metaswitch: The hardware on a processor does not meet minimum requirements.","The hardware expectations of the two processors are not the same.":"vSBC-Metaswitch: The hardware expectations of the two processors are not the same.","The read speed of the main hard disk on a processor blade is too slow.":"vSBC-Metaswitch: The read speed of the main hard disk on a processor blade is too slow.","An error has occurred reading from the hard disk on a processor blade.":"vSBC-Metaswitch: An error has occurred reading from the hard disk on a processor blade.","Backup and primary processor-blades have an inconsistent system role.":"vSBC-Metaswitch: Backup and primary processor-blades have an inconsistent system role.","Event: The system encountered a critical error and had to restart.":"vSBC-Metaswitch: Event: The system encountered a critical error and had to restart.","Event: A RADIUS server failed to respond to an authentication request.":"vSBC-Metaswitch: Event: A RADIUS server failed to respond to an authentication request.","Event: All configured RADIUS servers failed to respond to authentication requests.":"vSBC-Metaswitch: Event: All configured RADIUS servers failed to respond to authentication requests.","Event: The number of CPUs has changed.":"vSBC-Metaswitch: Event: The number of CPUs has changed.","Event: A user has been automatically deleted":"vSBC-Metaswitch: Event: A user has been automatically deleted","The primary processor blade has lost management connectivity":"vSBC-Metaswitch: The primary processor blade has lost management connectivity","Event: A processor blade is running with DPDK mode disabled when DPDK mode is,expected.":"vSBC-Metaswitch: Event: A processor blade is running with DPDK mode disabled when DPDK mode is,expected.","Event: Processor blade %1 is running with DPDK mode disabled when DPDK mode may be possible.":"vSBC-Metaswitch: Event: Processor blade %1 is running with DPDK mode disabled when DPDK mode may be possible.","Perimeta is attempting to resend cached billing records.":"vSBC-Metaswitch: Perimeta is attempting to resend cached billing records.","The Rf billing cache is full.":"vSBC-Metaswitch: The Rf billing cache is full.","The inbound call queue is congested.":"vSBC-Metaswitch: The inbound call queue is congested.","A configured realm group contains realms that are not available to the SBC.":"vSBC-Metaswitch: A configured realm group contains realms that are not available to the SBC.","An allowed MSC configuration is not connected to any physical MSCs.":"vSBC-Metaswitch: An allowed MSC configuration is not connected to any physical MSCs.","A SIP Peer has stopped responding to SIP OPTIONS pings. MSW: 20160303: Alarm text is changed in v3.9 software to read: \\"An adjacency has lost connectivity, according to SIP OPTIONS pings\\"":"vSBC-Metaswitch: A SIP Peer has stopped responding to SIP OPTIONS pings. MSW: 20160303: Alarm text is changed in v3.9 software to read: \\"An adjacency has lost connectivity, according to SIP OPTIONS pings\\"","An adjacency has failed as the listen socket could not be created. Check for configuration mismatches with the associated service interface.":"vSBC-Metaswitch: An adjacency has failed as the listen socket could not be created. Check for configuration mismatches with the associated service interface.","No suitable DNS records were found for a peer group's DNS hostname.":"vSBC-Metaswitch: No suitable DNS records were found for a peer group's DNS hostname.","One or more SIP peers from a peer group have stopped responding to SIP OPTIONS pings":"vSBC-Metaswitch: One or more SIP peers from a peer group have stopped responding to SIP OPTIONS pings","An adjacency has failed as its service network does not match the service network on its associated peer group.":"vSBC-Metaswitch: An adjacency has failed as its service network does not match the service network on its associated peer group.","An adjacency has failed as its configured TLS certificate could not be found.":"vSBC-Metaswitch: An adjacency has failed as its configured TLS certificate could not be found.","The caching function has not been initialized properly.":"vSBC-Metaswitch: The caching function has not been initialized properly.","An adjacency has failed as the listen socket could not be created.":"vSBC-Metaswitch: An adjacency has failed as the listen socket could not be created.","An adjacency is congested and may be rejecting calls.":"vSBC-Metaswitch: An adjacency is congested and may be rejecting calls.","There is an issue with a Diameter peer.":"vSBC-Metaswitch: There is an issue with a Diameter peer.","A realm is no longer reachable via any configured peers.":"vSBC-Metaswitch: A realm is no longer reachable via any configured peers.","An FQDN for a configured Diameter peer has failed to resolve to a valid IP address.":"vSBC-Metaswitch: An FQDN for a configured Diameter peer has failed to resolve to a valid IP address.","One or more peers resolved from a DNS lookup of a configured peer's address cannot be contacted":"vSBC-Metaswitch: One or more peers resolved from a DNS lookup of a configured peer's address cannot be contacted","An interface ARP or NDP probe has failed.":"vSBC-Metaswitch: An interface ARP or NDP probe has failed.","One or more IP address conflicts have been detected on service interfaces with zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.":"vSBC-Metaswitch: One or more IP address conflicts have been detected on service interfaces with zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.","One or more IP address conflicts have been detected on service interfaces with non-zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.":"vSBC-Metaswitch: One or more IP address conflicts have been detected on service interfaces with non-zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.","An interface device is running below the expected speed. This alarm was originally triggered by a probe failure on a service interface.":"vSBC-Metaswitch: An interface device is running below the expected speed. This alarm was originally triggered by a probe failure on a service interface.","An interface device is running above the expected speed.":"vSBC-Metaswitch: An interface device is running above the expected speed.","An IP address conflict has been detected on a management interface.":"vSBC-Metaswitch: An IP address conflict has been detected on a management interface.","An interface ICMP probe has failed.":"vSBC-Metaswitch: An interface ICMP probe has failed.","A High-Availability link has detected a connectivity issue.":"vSBC-Metaswitch: A High-Availability link has detected a connectivity issue.","An HA-link device is being reported as underspeed.":"vSBC-Metaswitch: An HA-link device is being reported as underspeed.","An IP address conflict has been detected on a replication interface.":"vSBC-Metaswitch: An IP address conflict has been detected on a replication interface.","The Session Controller has started.":"vSBC-Metaswitch: The Session Controller has started.","A statistic exceeded its configured thresholds.":"vSBC-Metaswitch: A statistic exceeded its configured thresholds.","One or more statistic has not been retrieved at least 3 times in a row.":"vSBC-Metaswitch: One or more statistic has not been retrieved at least 3 times in a row.","A Refresh Alarms request was triggered. Alarms not re-raised will be cleared in 5 minutes.":"vSBC-Metaswitch: A Refresh Alarms request was triggered. Alarms not re-raised will be cleared in 5 minutes.","A statistic has exceeded its configured thresholds.":"vSBC-Metaswitch: A statistic has exceeded its configured thresholds.","A Fallback Operation will soon be started":"vSBG: A Fallback Operation will soon be started","BRM, Auto Export Backup Failed":"vSBG: BRM, Auto Export Backup Failed","BRM, Scheduled Backup Failed":"vSBG: BRM, Scheduled Backup Failed","COM SA, AMF Component Cleanup Failed":"vSBG: COM SA, AMF Component Cleanup Failed","COM SA, AMF Component Instantiation Failed":"vSBG: COM SA, AMF Component Instantiation Failed","COM SA, AMF SI Unassigned":"vSBG: COM SA, AMF SI Unassigned","COM SA, CLM Cluster Node Unavailable":"vSBG: COM SA, CLM Cluster Node Unavailable","COM SA, MDF Detected Model Error":"vSBG: COM SA, MDF Detected Model Error","COM SA, Proxy Status of a Component Changed to Unproxied":"vSBG: COM SA, Proxy Status of a Component Changed to Unproxied","File Management, Number of Files in FileGroup Exceeded":"vSBG: File Management, Number of Files in FileGroup Exceeded","File Management, Max Size in FileGroup Exceeded":"vSBG: File Management, Max Size in FileGroup Exceeded","LOTC Disk Replication Communication":"vSBG: LOTC Disk Replication Communication","LOTC Disk Replication Consistency":"vSBG: LOTC Disk Replication Consistency","LOTC Disk Usage":"vSBG: LOTC Disk Usage","LOTC memory Usage":"vSBG: LOTC memory Usage","LOTC Time Synchronization":"vSBG: LOTC Time Synchronization","SBG, BGF Control Link Down":"vSBG: SBG, BGF Control Link Down","SBG, BGF Control Link Disabled":"vSBG: SBG, BGF Control Link Disabled","SBG, BGF Control Link Enabled":"vSBG: SBG, BGF Control Link Enabled","SBG, BGF Control Link Remote Locked":"vSBG: SBG, BGF Control Link Remote Locked","SBG, Charging Data Storage Maximum Records Reached":"vSBG: SBG, Charging Data Storage Maximum Records Reached","SBG, Charging Server Rejects Charging Data":"vSBG: SBG, Charging Server Rejects Charging Data","SBG, Excessive Packet Rate Detected ":"vSBG: SBG, Excessive Packet Rate Detected ","SBG, High Amount of Malformed Packets Received":"vSBG: SBG, High Amount of Malformed Packets Received","SBG, High Amount of STUN Packets Detected":"vSBG: SBG, High Amount of STUN Packets Detected","SBG, High Amount of TCP SYN Packets Received":"vSBG: SBG, High Amount of TCP SYN Packets Received","SBG, High Amount of UDP Packets Received ":"vSBG: SBG, High Amount of UDP Packets Received ","SBG, IP Address Blocked Due to Excessive Packet Rate":"vSBG: SBG, IP Address Blocked Due to Excessive Packet Rate","SBG, Lost Connectivity to Diameter Server":"vSBG: SBG, Lost Connectivity to Diameter Server","SBG, Mated Pair out of Service":"vSBG: SBG, Mated Pair out of Service","SBG, Network Unavailable for Media Handling":"vSBG: SBG, Network Unavailable for Media Handling","SBG, Non-emergency Call Released to Free Resources for Emergency Call":"vSBG: SBG, Non-emergency Call Released to Free Resources for Emergency Call","SBG, Not Enough Disk Space for Storing Charging Data":"vSBG: SBG, Not Enough Disk Space for Storing Charging Data","SBG, Payload Mated Pair Failure":"vSBG: SBG, Payload Mated Pair Failure","SBG, Payload Processor Failure":"vSBG: SBG, Payload Processor Failure","SBG, Processor Overloaded":"vSBG: SBG, Processor Overloaded","SBG, Registered User Set in Quarantine":"vSBG: SBG, Registered User Set in Quarantine","SBG, Registration Contacts Exceed Configured Threshold":"vSBG: SBG, Registration Contacts Exceed Configured Threshold","SBG, Sequential Restart Initiated":"vSBG: SBG, Sequential Restart Initiated","SBG, SIP Abuse Detected":"vSBG: SBG, SIP Abuse Detected","SBG, SIP Network Locked":"vSBG: SBG, SIP Network Locked","SBG, SIP Next Hop Reachable":"vSBG: SBG, SIP Next Hop Reachable","SBG, SIP Next Hop Unreachable":"vSBG: SBG, SIP Next Hop Unreachable","SBG, SIP Request Rejected by Network Throttling":"vSBG: SBG, SIP Request Rejected by Network Throttling","SBG, TLS Certificate Imported":"vSBG: SBG, TLS Certificate Imported","SBG, Trace Recording Session Number Limit Reached":"vSBG: SBG, Trace Recording Session Number Limit Reached","SBG, Trace Session Deactivated":"vSBG: SBG, Trace Session Deactivated","SBG, Trace Session Times Out":"vSBG: SBG, Trace Session Times Out","SBG, Unknown Media Type or Payload Type":"vSBG: SBG, Unknown Media Type or Payload Type"} -# -# if action.test.override is true, then any action will be marked as test=true (even if incoming action request had test=false); otherwise, test flag will be unchanged on the action request -action.test.override=false -# if action.insert.test.event is true, then insert event even if the action is set to test -action.insert.test.event=false -CLDS_SERVICE_CACHE_MAX_SECONDS=14400 -# -globalProps={"collector": {"topicPublishes": {"DCAE-COLLECTOR-UCSNMP": "DCAE-COLLECTOR-UCSNMP", "GFP-IP-SNMP-TRAPS" : "GFP-IP-SNMP-TRAPS" } }, "string_match": { "topicPublishes": { "DCAE-CL-EVENT": "DCAE-CL-EVENT" }, "aaiMatchingFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "ProvStatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "aaiSendFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "Provstatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "eventSourceType": { "f5BigIP": "f5BigIP", "vSBG_Alarms": "vSBG_Alarms", "vCTS_Alarms": "vCTS_Alarms" }, "eventSeverity": { "NORMAL": "NORMAL", "not-NORMAL": "not-NORMAL", "WARNING": "WARNING", "MINOR": "MINOR", "MAJOR": "MAJOR", "CRITICAL": "CRITICAL" }, "timeWindow": 0, "ageLimit": 1600, "outputEventName": { "": "", "OnSet": "OnSet", "Abatement": "Abatement" }, "createClosedLoopEventId": { "Initial": "Initial", "Close": "Close" } }, "global": { "service": { "": "", "vUSP": "vUSP", "vSCP": "vSCP", "vProbes": "vProbes" } }, "policy": { "timeout": 5, "recipe": { "": "", "restart": "Restart", "rebuild": "Rebuild", "migrate": "Migrate" }, "maxRetries": "3", "retryTimeLimit": 180, "resource": { "vCTS": "vCTS", "v3CDB": "v3CDB", "vUDR": "vUDR", "vCOM": "vCOM", "vRAR": "vRAR", "vLCS": "vLCS", "vUDR-BE": "vUDR-BE", "vDBE": "vDBE" }, "parentPolicyConditions": { "Failure_Retries": "Failure: Max Retries Exceeded", "Failure_Timeout": "Failure: Time Limit Exceeded", "Failure_Exception": "Failure: Exception", "Failure": "Failure: Other", "Success": "Success" } }, "shared": { "byService": { "": { "vf": { }, "vfc": { }, "location": { }, "alarmCondition": { } }, "vSCP": { "vf": { "frwl_scp": "FW" }, "vfc": { "FW": "FW" }, "location": { "AKRNOHAH": "Akron", "ALLNTXSA": "Allen-2" }, "alarmCondition": { "authenticationFailure": "authenticationFailure", "bigipActive": "bigipActive", "bigipActiveActive": "bigipActiveActive", "bigipAgentRestart": "bigipAgentRestart", "bigipAgentShutdown": "bigipAgentShutdown", "bigipAgentStart": "bigipAgentStart", "bigipAggrReaperStateChange": "bigipAggrReaperStateChange", "bigipAomCpuTempTooHigh": "bigipAomCpuTempTooHigh", "bigipARPConflict": "bigipARPConflict", "bigipAsmBruteForceAttackDetected": "bigipAsmBruteForceAttackDetected", "bigipAsmDosAttackDetected": "bigipAsmDosAttackDetected", "bigipAsmFtpRequestBlocked": "bigipAsmFtpRequestBlocked", "bigipAsmFtpRequestViolation": "bigipAsmFtpRequestViolation", "bigipAsmRequestBlocked": "bigipAsmRequestBlocked", "bigipAsmRequestViolation": "bigipAsmRequestViolation", "bigipAsmSmtpRequestBlocked": "bigipAsmSmtpRequestBlocked", "bigipAsmSmtpRequestViolation": "bigipAsmSmtpRequestViolation", "bigipAuthFailed": "bigipAuthFailed", "bigipAvrAlertsMetricSmtp": "bigipAvrAlertsMetricSmtp", "bigipAvrAlertsMetricSnmp": "bigipAvrAlertsMetricSnmp", "bigipBladeNoPower": "bigipBladeNoPower", "bigipBladeOffline": "bigipBladeOffline", "bigipBladeTempHigh": "bigipBladeTempHigh", "bigipChassisFanBad": "bigipChassisFanBad", "bigipChassisPowerSupplyBad": "bigipChassisPowerSupplyBad", "bigipChassisTempHigh": "bigipChassisTempHigh", "bigipChmandAlertFanTrayBad": "bigipChmandAlertFanTrayBad", "bigipClusterdNoResponse": "bigipClusterdNoResponse", "bigipClusterPrimaryChanged": "bigipClusterPrimaryChanged", "bigipCompLimitExceeded": "bigipCompLimitExceeded", "bigipConfigLoaded": "bigipConfigLoaded", "bigipCpuFanSpeedBad": "bigipCpuFanSpeedBad", "bigipCpuFanSpeedLow": "bigipCpuFanSpeedLow", "bigipCpuTempHigh": "bigipCpuTempHigh", "bigipDiskPartitionGrowth": "bigipDiskPartitionGrowth", "bigipDiskPartitionWarn": "bigipDiskPartitionWarn", "bigipDnsRequestRateLimiterEngaged": "bigipDnsRequestRateLimiterEngaged", "bigipDosAttackStart": "bigipDosAttackStart", "bigipDosAttackStop": "bigipDosAttackStop", "bigipExternalLinkChange": "bigipExternalLinkChange", "bigipFeatureFailed": "bigipFeatureFailed", "bigipFeatureOnline": "bigipFeatureOnline", "bigipFipsDeviceError": "bigipFipsDeviceError", "bigipGtmAppAvail": "bigipGtmAppAvail", "bigipGtmAppNotAvail": "bigipGtmAppNotAvail", "bigipGtmAppObjAvail": "bigipGtmAppObjAvail", "bigipGtmAppObjNotAvail": "bigipGtmAppObjNotAvail", "bigipGtmBig3dSslCertExpired": "bigipGtmBig3dSslCertExpired", "bigipGtmBig3dSslCertWillExpire": "bigipGtmBig3dSslCertWillExpire", "bigipGtmBoxAvail": "bigipGtmBoxAvail", "bigipGtmBoxNotAvail": "bigipGtmBoxNotAvail", "bigipGtmDcAvail": "bigipGtmDcAvail", "bigipGtmDcDisabled": "bigipGtmDcDisabled", "bigipGtmDcEnabled": "bigipGtmDcEnabled", "bigipGtmDcNotAvail": "bigipGtmDcNotAvail", "bigipGtmJoinedGroup": "bigipGtmJoinedGroup", "bigipGtmKeyGenerationExpiration": "bigipGtmKeyGenerationExpiration", "bigipGtmKeyGenerationRollover": "bigipGtmKeyGenerationRollover", "bigipGtmLeftGroup": "bigipGtmLeftGroup", "bigipGtmLinkAvail": "bigipGtmLinkAvail", "bigipGtmLinkDisabled": "bigipGtmLinkDisabled", "bigipGtmLinkEnabled": "bigipGtmLinkEnabled", "bigipGtmLinkNotAvail": "bigipGtmLinkNotAvail", "bigipGtmPoolAvail": "bigipGtmPoolAvail", "bigipGtmPoolDisabled": "bigipGtmPoolDisabled", "bigipGtmPoolEnabled": "bigipGtmPoolEnabled", "bigipGtmPoolMbrAvail": "bigipGtmPoolMbrAvail", "bigipGtmPoolMbrDisabled": "bigipGtmPoolMbrDisabled", "bigipGtmPoolMbrEnabled": "bigipGtmPoolMbrEnabled", "bigipGtmPoolMbrNotAvail": "bigipGtmPoolMbrNotAvail", "bigipGtmPoolNotAvail": "bigipGtmPoolNotAvail", "bigipGtmProberPoolDisabled": "bigipGtmProberPoolDisabled", "bigipGtmProberPoolEnabled": "bigipGtmProberPoolEnabled", "bigipGtmProberPoolMbrDisabled": "bigipGtmProberPoolMbrDisabled", "bigipGtmProberPoolMbrEnabled": "bigipGtmProberPoolMbrEnabled", "bigipGtmProberPoolMbrStatusChange": "bigipGtmProberPoolMbrStatusChange", "bigipGtmProberPoolMbrStatusChangeReason": "bigipGtmProberPoolMbrStatusChangeReason", "bigipGtmProberPoolStatusChange": "bigipGtmProberPoolStatusChange", "bigipGtmProberPoolStatusChangeReason": "bigipGtmProberPoolStatusChangeReason", "bigipGtmRequestRateLimiterEngaged": "bigipGtmRequestRateLimiterEngaged", "bigipGtmServerAvail": "bigipGtmServerAvail", "bigipGtmServerDisabled": "bigipGtmServerDisabled", "bigipGtmServerEnabled": "bigipGtmServerEnabled", "bigipGtmServerNotAvail": "bigipGtmServerNotAvail", "bigipGtmSslCertExpired": "bigipGtmSslCertExpired", "bigipGtmSslCertWillExpire": "bigipGtmSslCertWillExpire", "bigipGtmVsAvail": "bigipGtmVsAvail", "bigipGtmVsDisabled": "bigipGtmVsDisabled", "bigipGtmVsEnabled": "bigipGtmVsEnabled", "bigipGtmVsNotAvail": "bigipGtmVsNotAvail", "bigipGtmWideIpAvail": "bigipGtmWideIpAvail", "bigipGtmWideIpDisabled": "bigipGtmWideIpDisabled", "bigipGtmWideIpEnabled": "bigipGtmWideIpEnabled", "bigipGtmWideIpNotAvail": "bigipGtmWideIpNotAvail", "bigipHardDiskFailure": "bigipHardDiskFailure", "bigipInetPortExhaustion": "bigipInetPortExhaustion", "bigipLibhalBladePoweredOff": "bigipLibhalBladePoweredOff", "bigipLibhalDiskBayRemoved": "bigipLibhalDiskBayRemoved", "bigipLibhalSensorAlarmCritical": "bigipLibhalSensorAlarmCritical", "bigipLibhalSsdLogicalDiskRemoved": "bigipLibhalSsdLogicalDiskRemoved", "bigipLibhalSsdPhysicalDiskRemoved": "bigipLibhalSsdPhysicalDiskRemoved", "bigipLicenseExpired": "bigipLicenseExpired", "bigipLicenseFailed": "bigipLicenseFailed", "bigipLogAlert": "bigipLogAlert", "bigipLogCrit": "bigipLogCrit", "bigipLogEmerg": "bigipLogEmerg", "bigipLogErr": "bigipLogErr", "bigipLogWarning": "bigipLogWarning", "bigipLtmVsAvail": "bigipLtmVsAvail", "bigipLtmVsDisabled": "bigipLtmVsDisabled", "bigipLtmVsEnabled": "bigipLtmVsEnabled", "bigipLtmVsUnavail": "bigipLtmVsUnavail", "bigipMemberRate": "bigipMemberRate", "bigipNetLinkDown": "bigipNetLinkDown", "bigipNodeDown": "bigipNodeDown", "bigipNodeRate": "bigipNodeRate", "bigipNodeUp": "bigipNodeUp", "bigipPacketRejected": "bigipPacketRejected", "bigipPsAbsent": "bigipPsAbsent", "bigipPsPowerOff": "bigipPsPowerOff", "bigipPsPowerOn": "bigipPsPowerOn", "bigipRaidDiskFailure": "bigipRaidDiskFailure", "bigipServiceDown": "bigipServiceDown", "bigipServiceUp": "bigipServiceUp", "bigipSsdMwiNearThreshold": "bigipSsdMwiNearThreshold", "bigipSsdMwiReachedThreshold": "bigipSsdMwiReachedThreshold", "bigipSslLimitExceeded": "bigipSslLimitExceeded", "bigipStandby": "bigipStandby", "bigipStandByFail": "bigipStandByFail", "bigipSystemCheckAlertCurrentHigh": "bigipSystemCheckAlertCurrentHigh", "bigipSystemCheckAlertCurrentLow": "bigipSystemCheckAlertCurrentLow", "bigipSystemCheckAlertFanSpeedLow": "bigipSystemCheckAlertFanSpeedLow", "bigipSystemCheckAlertMilliVoltageHigh": "bigipSystemCheckAlertMilliVoltageHigh", "bigipSystemCheckAlertMilliVoltageLow": "bigipSystemCheckAlertMilliVoltageLow", "bigipSystemCheckAlertPowerHigh": "bigipSystemCheckAlertPowerHigh", "bigipSystemCheckAlertPowerLow": "bigipSystemCheckAlertPowerLow", "bigipSystemCheckAlertTempHigh": "bigipSystemCheckAlertTempHigh", "bigipSystemCheckAlertVoltageHigh": "bigipSystemCheckAlertVoltageHigh", "bigipSystemCheckAlertVoltageLow": "bigipSystemCheckAlertVoltageLow", "bigipSystemShutdown": "bigipSystemShutdown", "bigipTamdAlert": "bigipTamdAlert", "bigipTrafficGroupActivate": "bigipTrafficGroupActivate", "bigipTrafficGroupActive": "bigipTrafficGroupActive", "bigipTrafficGroupDeactivate": "bigipTrafficGroupDeactivate", "bigipTrafficGroupForcedOffline": "bigipTrafficGroupForcedOffline", "bigipTrafficGroupOffline": "bigipTrafficGroupOffline", "bigipTrafficGroupStandby": "bigipTrafficGroupStandby", "bigipUnsolicitedRepliesExceededThreshold": "bigipUnsolicitedRepliesExceededThreshold", "bigipUpdateError": "bigipUpdateError", "bigipUpdatePriority": "bigipUpdatePriority", "bigipUpdateServer": "bigipUpdateServer", "bigipVcmpAlertsVcmpHBDetected": "bigipVcmpAlertsVcmpHBDetected", "bigipVcmpAlertsVcmpHBLost": "bigipVcmpAlertsVcmpHBLost", "bigipVcmpAlertsVcmpPowerOff": "bigipVcmpAlertsVcmpPowerOff", "bigipVcmpAlertsVcmpPowerOn": "bigipVcmpAlertsVcmpPowerOn", "bigipVirtualRate": "bigipVirtualRate", "coldStart": "coldStart", "emASMSigInstallComplete": "emASMSigInstallComplete", "emASMSigInstallFailed": "emASMSigInstallFailed", "emASMSigUpdateAvailable": "emASMSigUpdateAvailable", "emASMSigUpdateFailed": "emASMSigUpdateFailed", "emCertificateExpiration": "emCertificateExpiration", "emCpuUsage": "emCpuUsage", "emDeviceActiveMode": "emDeviceActiveMode", "emDeviceClockSkew": "emDeviceClockSkew", "emDeviceConfigSettingChanged": "emDeviceConfigSettingChanged", "emDeviceConfigSync": "emDeviceConfigSync", "emDeviceForcedOfflineMode": "emDeviceForcedOfflineMode", "emDeviceImpaired": "emDeviceImpaired", "emDeviceOfflineMode": "emDeviceOfflineMode", "emDeviceStandbyMode": "emDeviceStandbyMode", "emDeviceUnreachable": "emDeviceUnreachable", "emDiskUsage": "emDiskUsage", "emGatherServiceContractFailure": "emGatherServiceContractFailure", "emHaSyncFailed": "emHaSyncFailed", "emHotfixInstallComplete": "emHotfixInstallComplete", "emHotfixInstallFailed": "emHotfixInstallFailed", "emMemoryUsage": "emMemoryUsage", "emPerformanceStorageCap": "emPerformanceStorageCap", "emPerformanceStorageDays": "emPerformanceStorageDays", "emPerformanceThreshold": "emPerformanceThreshold", "emRaidDriveFailureDetected": "emRaidDriveFailureDetected", "emRaidDriveRebuildComplete": "emRaidDriveRebuildComplete", "emSchedBackupFailed": "emSchedBackupFailed", "emScheduledArchiveFailed": "emScheduledArchiveFailed", "emServiceContractExpiry": "emServiceContractExpiry", "emSoftwareInstallComplete": "emSoftwareInstallComplete", "emSoftwareInstallFailed": "emSoftwareInstallFailed", "emStatsCollectionRateCap": "emStatsCollectionRateCap", "emStatsDBConnectivityLost": "emStatsDBConnectivityLost", "emStatsDBConnectivityRestored": "emStatsDBConnectivityRestored", "fallingAlarm": "fallingAlarm", "ipv6IfStateChange": "ipv6IfStateChange", "linkDown": "linkDown", "linkUp": "linkUp", "mteEventSetFailure": "mteEventSetFailure", "mteTriggerFailure": "mteTriggerFailure", "mteTriggerFalling": "mteTriggerFalling", "mteTriggerFired": "mteTriggerFired", "mteTriggerRising": "mteTriggerRising", "netSnmpExampleHeartbeatNotification": "netSnmpExampleHeartbeatNotification", "newRoot": "newRoot", "nsNotifyRestart": "nsNotifyRestart", "nsNotifyShutdown": "nsNotifyShutdown", "nsNotifyStart": "nsNotifyStart", "risingAlarm": "risingAlarm", "schedActionFailure": "schedActionFailure", "smScriptAbort": "smScriptAbort", "smScriptException": "smScriptException", "smScriptResult": "smScriptResult", "topologyChange": "topologyChange", "ucdShutdown": "ucdShutdown", "ucdStart": "ucdStart", "warmStart": "warmStart" } }, "vUSP": { "vf": { "ctsf-xxx": "vCTS" }, "vfc": { "vCTS - CFED": "vCTS - CFED", "vCTS - Config": "vCTS - Config", "vCTS - DFED": "vCTS - DFED", "vCTS - TAFE-fsd": "vCTS - TAFE-fsd", "vCTS - GLS": "vCTS - GLS", "vCTS - XXX": "vCTS - XXX", "vCTS - Management Interface": "vCTS - Management Interface", "vCTS - SPFE-pfe": "vCTS - SPFE-pfe", "vCTS - DNS": "vCTS - DNS", "vCTS - SPFE-spd": "vCTS - SPFE-spd", "vCTS - SPFE-spt": "vCTS - SPFE-spt", "vCTS - TAFE-tas": "vCTS - TAFE-tas" }, "location": { "SNDGCA06": "San Diego(core site) A06", "SNDGCA64": "San Diego(core site) A64", "SNANTXCA": "San Antonio(core site)", "KSCYMO09": "Kansas City(core site)", "kings_mountain": "Kings Mountain(AMG)", "Secaucus": "Secaucus(AMG)", "lisle": "Lisle(AMG)", "concord": "Concord(AMG)", "houston": "Houston(AMG)", "akron": "Akron(AMG)" }, "alarmCondition": { "acrTemporaryBufferOverload": "acrTemporaryBufferOverload", "adnsExtendedTTLcaching": "adnsExtendedTTLcaching", "adnsQueryFailureCaching": "adnsQueryFailureCaching", "adnsQueueCongestion": "adnsQueueCongestion", "asdaCommunicationFailure": "asdaCommunicationFailure", "asdaRequestQueue": "asdaRequestQueue", "capacityLicenseKeyExpiration": "capacityLicenseKeyExpiration", "capacityLicenseKeyNearExpiration": "capacityLicenseKeyNearExpiration", "capacityLicenseKeyValidationError": "capacityLicenseKeyValidationError", "cardConnectionLost": "cardConnectionLost", "ccdbCommunicationFailure": "ccdbCommunicationFailure", "cpiAlrmCritical": "cpiAlrmCritical", "cpiAlrmMajor": "cpiAlrmMajor", "cpiAlrmMinor": "cpiAlrmMinor", "cpiAlrmWarning": "cpiAlrmWarning", "cpiAsrtEsc": "cpiAsrtEsc", "cpiAsrtNonEsc": "cpiAsrtNonEsc", "cpiAsrtNonEscCritical": "cpiAsrtNonEscCritical", "cpiAsrtNonEscMajor": "cpiAsrtNonEscMajor", "cpiAsrtNonEscMinor": "cpiAsrtNonEscMinor", "cpiAudErrCount": "cpiAudErrCount", "cpiAudManAct": "cpiAudManAct", "cpiAudNewEvent": "cpiAudNewEvent", "cpiCompleteRateAlarm": "cpiCompleteRateAlarm", "cpiCTS3xxFailRate": "cpiCTS3xxFailRate", "cpiCTS4xxFailRate": "cpiCTS4xxFailRate", "cpiCTS5xxFailRate": "cpiCTS5xxFailRate", "cpiCTS6xxFailRate": "cpiCTS6xxFailRate", "cpiCTSSIPRetransmitInvite": "cpiCTSSIPRetransmitInvite", "cpiCTSSIPRetransmitNonInvite": "cpiCTSSIPRetransmitNonInvite", "cpiDropMGAllocConnReq": "cpiDropMGAllocConnReq", "cpiDropRateAlarm": "cpiDropRateAlarm", "cpiExceptionService": "cpiExceptionService", "cpiFailRateAlarm": "cpiFailRateAlarm", "cpiFailSCTPFastRetransIncr": "cpiFailSCTPFastRetransIncr", "cpiFailSCTPFastRetransRate": "cpiFailSCTPFastRetransRate", "cpiFailSCTPSRTT1Incr": "cpiFailSCTPSRTT1Incr", "cpiFailSCTPSRTT2Incr": "cpiFailSCTPSRTT2Incr", "cpiFailSCTPT3RetransIncr": "cpiFailSCTPT3RetransIncr", "cpiFailSCTPT3RetransRate": "cpiFailSCTPT3RetransRate", "cpiFileSysUsage": "cpiFileSysUsage", "cpiMemAllocFail": "cpiMemAllocFail", "cpiNumOfLICDRDel": "cpiNumOfLICDRDel", "cpiReinitServiceSelf": "cpiReinitServiceSelf", "cpiSIPRetransmitInvite": "cpiSIPRetransmitInvite", "cpiSIPRetransmitNonInvite": "cpiSIPRetransmitNonInvite", "cpiSS7DropSCTPPktsRcvd": "cpiSS7DropSCTPPktsRcvd", "cpiSS7FailSCTPFastRetransRate": "cpiSS7FailSCTPFastRetransRate", "cpiStabilityAlarm": "cpiStabilityAlarm", "cpuOverload": "cpuOverload", "databaseConnectionLost": "databaseConnectionLost", "databaseReplicationLinkDown": "databaseReplicationLinkDown", "databaseSizeExhausted": "databaseSizeExhausted", "dbHighCpuUtilization": "dbHighCpuUtilization", "dbOffline": "dbOffline", "dbStatusUnexpected": "dbStatusUnexpected", "degradedResource": "degradedResource", "degrow": "degrow", "deviceServerCxnLost": "deviceServerCxnLost", "diamLinkDown": "diamLinkDown", "diamMaxClientsExceeded": "diamMaxClientsExceeded", "dnsThreshold": "dnsThreshold", "ethernetError": "ethernetError", "ethernetLinkDown": "ethernetLinkDown", "externalConnectivity": "externalConnectivity", "featureLicenseExpiration": "featureLicenseExpiration", "featureLicenseKeyNearExpiration": "featureLicenseKeyNearExpiration", "featureLockValidationError": "featureLockValidationError", "fqdnError": "fqdnError", "fru": "fru", "gatewayCongestion": "gatewayCongestion", "gatewayForcedOOS": "gatewayForcedOOS", "gatewayProvisioningError": "gatewayProvisioningError", "gatewayUnreachable": "gatewayUnreachable", "gatewayUnregistered": "gatewayUnregistered", "globalParameterNotFound": "globalParameterNotFound", "glsInvalidCellId": "glsInvalidCellId", "glsServerUnavailable": "glsServerUnavailable", "grow": "grow", "h248MessageBufferDepletion": "h248MessageBufferDepletion", "hlrSyncConnection": "hlrSyncConnection", "hlrSyncQueue": "hlrSyncQueue", "hostDown": "hostDown", "hostReset": "hostReset", "invalidGateway": "invalidGateway", "iriLinkDown": "iriLinkDown", "ldapServerConnectionLost": "ldapServerConnectionLost", "lispBufferFullExternalLIG": "lispBufferFullExternalLIG", "llcDown": "llcDown", "logicalLinkDown": "logicalLinkDown", "logicalLinkNotFound": "logicalLinkNotFound", "logRotateThreshold": "logRotateThreshold", "memoryOverload": "memoryOverload", "nodeConfigFailure": "nodeConfigFailure", "nodeGroupOOS": "nodeGroupOOS", "nodeOOS": "nodeOOS", "nonCompliantFaultGroupMemberState": "nonCompliantFaultGroupMemberState", "nonCsAddrChannelDepletion": "nonCsAddrChannelDepletion", "numberOfTuplesInUse": "numberOfTuplesInUse", "osSecInfoModificationDetected": "osSecInfoModificationDetected", "osSecInformationMissing": "osSecInformationMissing", "osSecUnexpectedInformation": "osSecUnexpectedInformation", "pdnsMySqlReplication": "pdnsMySqlReplication", "pktCorruptionDetectedViaRCCLANCheck": "pktCorruptionDetectedViaRCCLANCheck", "platformCommandFailure": "platformCommandFailure", "pmDataNotCollected": "pmDataNotCollected", "prdbConnectWithAlternateFailure": "prdbConnectWithAlternateFailure", "prdbSyncDataToAlternateFailure": "prdbSyncDataToAlternateFailure", "preAllocatedResourceOverload": "preAllocatedResourceOverload", "prifSocketError": "prifSocketError", "processDown": "processDown", "processNotStarted": "processNotStarted", "provisioningInhibitedMode": "provisioningInhibitedMode", "prsCallInstanceExceeded": "prsCallInstanceExceeded", "prsCpuOverload": "prsCpuOverload", "prsDatabaseMigrationFailure": "prsDatabaseMigrationFailure", "prsFailureToConnectWithPRDB": "prsFailureToConnectWithPRDB", "prsQueueExceeded": "prsQueueExceeded", "rccInhibitedMode": "rccInhibitedMode", "remotedbLinkDown": "remotedbLinkDown", "remoteQueryServerFailure": "remoteQueryServerFailure", "restore": "restore", "serviceCFGDataTimestampError": "serviceCFGDataTimestampError", "serviceCommCxnLost": "serviceCommCxnLost", "serviceOnewayCommunication": "serviceOnewayCommunication", "sheddingOverload": "sheddingOverload", "simxml": "simxml", "sipLinkSetMaxQuarantineList": "sipLinkSetMaxQuarantineList", "sipLinkSetUnavailable": "sipLinkSetUnavailable", "sipLinkUnavailable": "sipLinkUnavailable", "smdiSocketError": "smdiSocketError", "socketError": "socketError", "softwareAllocatedResourceOverload": "softwareAllocatedResourceOverload", "softwareComponentDown": "softwareComponentDown", "softwareComponentStandbyNotReady": "softwareComponentStandbyNotReady", "softwareLicense": "softwareLicense", "svcdegrow": "svcdegrow", "svcgrow": "svcgrow", "swVersionMismatch": "swVersionMismatch", "tftpDownloadCorrupt": "tftpDownloadCorrupt", "timeStampValueOutOfSystemRange": "timeStampValueOutOfSystemRange", "tlsInitError": "tlsInitError", "transactionHandlerBlockDepletion": "transactionHandlerBlockDepletion", "upgrade": "upgrade", "usageOfSyncTable": "usageOfSyncTable", "utHttpProxyConnectionDown": "utHttpProxyConnectionDown", "wpifSocketError": "wpifSocketError", "BackupFailure": "BackupFailure", "Configuration": "Configuration", "COTRecordTransferFailure": "COTRecordTransferFailure", "CPMUSERDATAINCONSITENCY": "CPMUSERDATAINCONSITENCY", "CPMUSERDATARESTORED": "CPMUSERDATARESTORED", "EventQueueCapacity": "EventQueueCapacity", "ICMPFailure": "ICMPFailure", "IPsecConfig": "IPsecConfig", "LinkDown": "LinkDown", "NotifyDisabled": "NotifyDisabled", "NotifyLocked": "NotifyLocked", "NumTL1MeasThresh": "NumTL1MeasThresh", "RADIUSTOLDAPFAILURE": "RADIUSTOLDAPFAILURE", "ROOTACCESSDENIED": "ROOTACCESSDENIED", "ROOTFTPVIOLATION": "ROOTFTPVIOLATION", "ROOTLOGINVIOLATION": "ROOTLOGINVIOLATION", "ROOTSSHLOGINVIOLATION": "ROOTSSHLOGINVIOLATION", "SetupAAAFailure": "SetupAAAFailure", "SNETrapOverload": "SNETrapOverload", "SNMPAuthenticationFailure": "SNMPAuthenticationFailure", "SNMPFailure": "SNMPFailure", "SUTOROOTFAILURE": "SUTOROOTFAILURE", "SYSTEMTrapOverload": "SYSTEMTrapOverload", "ThresholdCrossed": "ThresholdCrossed", "UndiscoveredObject": "UndiscoveredObject", "WriteAAAFailure": "WriteAAAFailure" } }, "Trinity": { "vf": { "aSBG": "aSBG", "nSBG": "nSBG", "tSBG": "tSBG" }, "vfc": { "pld": "PL - Payload Processor", "scr": "SC - System Controller" }, "location": { "SNDGCA64": "San Diego SAN3", "ALPRGAED": "Alpharetta PDK1", "LSLEILAA":"Lisle DPA3" }, "alarmCondition": { "A+Fallback+Operation+will+soon+be+started":"A Fallback Operation will soon be started", "BRM%2C+Auto+Export+Backup+Failed":"BRM, Auto Export Backup Failed", "BRM%2C+Scheduled+Backup+Failed":"BRM, Scheduled Backup Failed", "COM+SA%2C+AMF+Component+Cleanup+Failed":"COM SA, AMF Component Cleanup Failed", "COM+SA%2C+AMF+Component+Instantiation+Failed":"COM SA, AMF Component Instantiation Failed", "COM+SA%2C+AMF+SI+Unassigned":"COM SA, AMF SI Unassigned", "COM+SA%2C+CLM+Cluster+Node+Unavailable":"COM SA, CLM Cluster Node Unavailable", "COM+SA%2C+MDF+Detected+Model+Error":"COM SA, MDF Detected Model Error", "COM+SA%2C+Proxy+Status+of+a+Component+Changed+to+Unproxied":"COM SA, Proxy Status of a Component Changed to Unproxied", "File+Management%2C+Number+of+Files+in+FileGroup+Exceeded":"File Management, Number of Files in FileGroup Exceeded", "File+Management%2C+Max+Size+in+FileGroup+Exceeded":"File Management, Max Size in FileGroup Exceeded", "LOTC+Disk+Replication+Communication":"LOTC Disk Replication Communication", "LOTC+Disk+Replication+Consistency":"LOTC Disk Replication Consistency", "LOTC+Disk+Usage":"LOTC Disk Usage", "LOTC+memory+Usage":"LOTC memory Usage", "LOTC+Time+Synchronization":"LOTC Time Synchronization", "SBG%2C+BGF+Control+Link+Down":"SBG, BGF Control Link Down", "SBG%2C+BGF+Control+Link+Disabled":"SBG, BGF Control Link Disabled", "SBG%2C+BGF+Control+Link+Enabled":"SBG, BGF Control Link Enabled", "SBG%2C+BGF+Control+Link+Remote+Locked":"SBG, BGF Control Link Remote Locked", "SBG%2C+Charging+Data+Storage+Maximum+Records+Reached":"SBG, Charging Data Storage Maximum Records Reached", "SBG%2C+Charging+Server+Rejects+Charging+Data":"SBG, Charging Server Rejects Charging Data", "SBG%2C+Excessive+Packet+Rate+Detected+":"SBG, Excessive Packet Rate Detected ", "SBG%2C+High+Amount+of+Malformed+Packets+Received":"SBG, High Amount of Malformed Packets Received", "SBG%2C+High+Amount+of+STUN+Packets+Detected":"SBG, High Amount of STUN Packets Detected", "SBG%2C+High+Amount+of+TCP+SYN+Packets+Received":"SBG, High Amount of TCP SYN Packets Received", "SBG%2C+High+Amount+of+UDP+Packets+Received+":"SBG, High Amount of UDP Packets Received ", "SBG%2C+IP+Address+Blocked+Due+to+Excessive+Packet+Rate":"SBG, IP Address Blocked Due to Excessive Packet Rate", "SBG%2C+Lost+Connectivity+to+Diameter+Server":"SBG, Lost Connectivity to Diameter Server", "SBG%2C+Mated+Pair+out+of+Service":"SBG, Mated Pair out of Service", "SBG%2C+Network+Unavailable+for+Media+Handling":"SBG, Network Unavailable for Media Handling", "SBG%2C+Non-emergency+Call+Released+to+Free+Resources+for+Emergency+Call":"SBG, Non-emergency Call Released to Free Resources for Emergency Call", "SBG%2C+Not+Enough+Disk+Space+for+Storing+Charging+Data":"SBG, Not Enough Disk Space for Storing Charging Data", "SBG%2C+Payload+Mated+Pair+Failure":"SBG, Payload Mated Pair Failure", "SBG%2C+Payload+Processor+Failure":"SBG, Payload Processor Failure", "SBG%2C+Processor+Overloaded":"SBG, Processor Overloaded", "SBG%2C+Registered+User+Set+in+Quarantine":"SBG, Registered User Set in Quarantine", "SBG%2C+Registration+Contacts+Exceed+Configured+Threshold":"SBG, Registration Contacts Exceed Configured Threshold", "SBG%2C+Sequential+Restart+Initiated":"SBG, Sequential Restart Initiated", "SBG%2C+SIP+Abuse+Detected":"SBG, SIP Abuse Detected", "SBG%2C+SIP+Network+Locked":"SBG, SIP Network Locked", "SBG%2C+SIP+Next+Hop+Reachable":"SBG, SIP Next Hop Reachable", "SBG%2C+SIP+Next+Hop+Unreachable":"SBG, SIP Next Hop Unreachable", "SBG%2C+SIP+Request+Rejected+by+Network+Throttling":"SBG, SIP Request Rejected by Network Throttling", "SBG%2C+TLS+Certificate+Imported":"SBG, TLS Certificate Imported", "SBG%2C+Trace+Recording+Session+Number+Limit+Reached":"SBG, Trace Recording Session Number Limit Reached", "SBG%2C+Trace+Session+Deactivated":"SBG, Trace Session Deactivated", "SBG%2C+Trace+Session+Times+Out":"SBG, Trace Session Times Out", "SBG%2C+Unknown+Media+Type+or+Payload+Type":"SBG, Unknown Media Type or Payload Type" } }, "vProbes": { "vf": { }, "vfc": { }, "location": { }, "alarmCondition": { } } } } } -globalPropsPartial={"collector": {"topicPublishes": {"DCAE-COLLECTOR-UCSNMP": "DCAE-COLLECTOR-UCSNMP", "GFP-IP--SNMP-TRAPS" : "GFP-IP--SNMP-TRAPS" } }, "string_match": { "topicPublishes": { "DCAE-CL-EVENT": "DCAE-CL-EVENT" }, "aaiMatchingFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "ProvStatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "aaiSendFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "Provstatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "eventSourceType": { "f5BigIP": "f5BigIP", "vSBG_Alarms": "vSBG_Alarms", "vCTS_Alarms": "vCTS_Alarms" }, "eventSeverity": { "NORMAL": "NORMAL", "not-NORMAL": "not-NORMAL", "WARNING": "WARNING", "MINOR": "MINOR", "MAJOR": "MAJOR", "CRITICAL": "CRITICAL" }, "timeWindow": 0, "ageLimit": 1600, "outputEventName": { "": "", "OnSet": "OnSet", "Abatement": "Abatement" }, "createClosedLoopEventId": { "Initial": "Initial", "Close": "Close" } }, "global": { "service": { "": "", "vUSP": "vUSP", "vSCP": "vSCP", "vProbes": "vProbes" } }, "policy": { "timeout": 5, "recipe": { "": "", "restart": "Restart", "rebuild": "Rebuild", "migrate": "Migrate" }, "maxRetries": "3", "retryTimeLimit": 180, "resource": { "vCTS": "vCTS", "v3CDB": "v3CDB", "vUDR": "vUDR", "vCOM": "vCOM", "vRAR": "vRAR", "vLCS": "vLCS", "vUDR-BE": "vUDR-BE", "vDBE": "vDBE" }, "parentPolicyConditions": { "Failure_Retries": "Failure: Max Retries Exceeded", "Failure_Timeout": "Failure: Time Limit Exceeded", "Failure_Exception": "Failure: Exception", "Failure": "Failure: Other", "Success": "Success" } } } -globalPropsTest={"collector": {"topicPublishes": {"DCAE-COLLECTOR-UCSNMP": "DCAE-COLLECTOR-UCSNMP", "GFP-IP--SNMP-TRAPS" : "GFP-IP--SNMP-TRAPS" } }, "string_match": { "topicPublishes": { "DCAE-CL-EVENT": "DCAE-CL-EVENT" }, "aaiMatchingFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "ProvStatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "aaiSendFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "Provstatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "eventSourceType": { "f5BigIP": "f5BigIP", "vSBG_Alarms": "vSBG_Alarms", "vCTS_Alarms": "vCTS_Alarms" }, "eventSeverity": { "NORMAL": "NORMAL", "not-NORMAL": "not-NORMAL", "WARNING": "WARNING", "MINOR": "MINOR", "MAJOR": "MAJOR", "CRITICAL": "CRITICAL" }, "timeWindow": 0, "ageLimit": 1600, "outputEventName": { "": "", "OnSet": "OnSet", "Abatement": "Abatement" }, "createClosedLoopEventId": { "Initial": "Initial", "Close": "Close" } }, "global": { "service": { "": "", "vUSP": "vUSP", "vSCP": "vSCP", "vProbes": "vProbes" } }, "policy": { "timeout": 5, "recipe": { "": "", "restart": "Restart", "rebuild": "Rebuild", "migrate": "Migrate" }, "maxRetries": "3", "retryTimeLimit": 180, "resource": { "vCTS": "vCTS", "v3CDB": "v3CDB", "vUDR": "vUDR", "vCOM": "vCOM", "vRAR": "vRAR", "vLCS": "vLCS", "vUDR-BE": "vUDR-BE", "vDBE": "vDBE" }, "parentPolicyConditions": { "Failure_Retries": "Failure: Max Retries Exceeded", "Failure_Timeout": "Failure: Time Limit Exceeded", "Failure_Exception": "Failure: Exception", "Failure": "Failure: Other", "Success": "Success" } }, "shared": { "byService": { "": { "vf": { }, "vfc": { }, "location": { }, "alarmCondition": { } }, "vSCP": { "vf": { "frwl_scp": "FW" }, "vfc": { "FW": "FW" }, "location": { "AKRNOHAH": "Akron", "ALLNTXSA": "Allen-2" }, "alarmCondition": { "authenticationFailure": "authenticationFailure", "bigipActive": "bigipActive", "bigipActiveActive": "bigipActiveActive", "bigipAgentRestart": "bigipAgentRestart", "bigipAgentShutdown": "bigipAgentShutdown", "bigipAgentStart": "bigipAgentStart", "bigipAggrReaperStateChange": "bigipAggrReaperStateChange", "bigipAomCpuTempTooHigh": "bigipAomCpuTempTooHigh", "bigipARPConflict": "bigipARPConflict", "bigipAsmBruteForceAttackDetected": "bigipAsmBruteForceAttackDetected", "bigipAsmDosAttackDetected": "bigipAsmDosAttackDetected", "bigipAsmFtpRequestBlocked": "bigipAsmFtpRequestBlocked", "bigipAsmFtpRequestViolation": "bigipAsmFtpRequestViolation", "bigipAsmRequestBlocked": "bigipAsmRequestBlocked", "bigipAsmRequestViolation": "bigipAsmRequestViolation", "bigipAsmSmtpRequestBlocked": "bigipAsmSmtpRequestBlocked", "bigipAsmSmtpRequestViolation": "bigipAsmSmtpRequestViolation", "bigipAuthFailed": "bigipAuthFailed", "bigipAvrAlertsMetricSmtp": "bigipAvrAlertsMetricSmtp", "bigipAvrAlertsMetricSnmp": "bigipAvrAlertsMetricSnmp", "bigipBladeNoPower": "bigipBladeNoPower", "bigipBladeOffline": "bigipBladeOffline", "bigipBladeTempHigh": "bigipBladeTempHigh", "bigipChassisFanBad": "bigipChassisFanBad", "bigipChassisPowerSupplyBad": "bigipChassisPowerSupplyBad", "bigipChassisTempHigh": "bigipChassisTempHigh", "bigipChmandAlertFanTrayBad": "bigipChmandAlertFanTrayBad", "bigipClusterdNoResponse": "bigipClusterdNoResponse", "bigipClusterPrimaryChanged": "bigipClusterPrimaryChanged", "bigipCompLimitExceeded": "bigipCompLimitExceeded", "bigipConfigLoaded": "bigipConfigLoaded", "bigipCpuFanSpeedBad": "bigipCpuFanSpeedBad", "bigipCpuFanSpeedLow": "bigipCpuFanSpeedLow", "bigipCpuTempHigh": "bigipCpuTempHigh", "bigipDiskPartitionGrowth": "bigipDiskPartitionGrowth", "bigipDiskPartitionWarn": "bigipDiskPartitionWarn", "bigipDnsRequestRateLimiterEngaged": "bigipDnsRequestRateLimiterEngaged", "bigipDosAttackStart": "bigipDosAttackStart", "bigipDosAttackStop": "bigipDosAttackStop", "bigipExternalLinkChange": "bigipExternalLinkChange", "bigipFeatureFailed": "bigipFeatureFailed", "bigipFeatureOnline": "bigipFeatureOnline", "bigipFipsDeviceError": "bigipFipsDeviceError", "bigipGtmAppAvail": "bigipGtmAppAvail", "bigipGtmAppNotAvail": "bigipGtmAppNotAvail", "bigipGtmAppObjAvail": "bigipGtmAppObjAvail", "bigipGtmAppObjNotAvail": "bigipGtmAppObjNotAvail", "bigipGtmBig3dSslCertExpired": "bigipGtmBig3dSslCertExpired", "bigipGtmBig3dSslCertWillExpire": "bigipGtmBig3dSslCertWillExpire", "bigipGtmBoxAvail": "bigipGtmBoxAvail", "bigipGtmBoxNotAvail": "bigipGtmBoxNotAvail", "bigipGtmDcAvail": "bigipGtmDcAvail", "bigipGtmDcDisabled": "bigipGtmDcDisabled", "bigipGtmDcEnabled": "bigipGtmDcEnabled", "bigipGtmDcNotAvail": "bigipGtmDcNotAvail", "bigipGtmJoinedGroup": "bigipGtmJoinedGroup", "bigipGtmKeyGenerationExpiration": "bigipGtmKeyGenerationExpiration", "bigipGtmKeyGenerationRollover": "bigipGtmKeyGenerationRollover", "bigipGtmLeftGroup": "bigipGtmLeftGroup", "bigipGtmLinkAvail": "bigipGtmLinkAvail", "bigipGtmLinkDisabled": "bigipGtmLinkDisabled", "bigipGtmLinkEnabled": "bigipGtmLinkEnabled", "bigipGtmLinkNotAvail": "bigipGtmLinkNotAvail", "bigipGtmPoolAvail": "bigipGtmPoolAvail", "bigipGtmPoolDisabled": "bigipGtmPoolDisabled", "bigipGtmPoolEnabled": "bigipGtmPoolEnabled", "bigipGtmPoolMbrAvail": "bigipGtmPoolMbrAvail", "bigipGtmPoolMbrDisabled": "bigipGtmPoolMbrDisabled", "bigipGtmPoolMbrEnabled": "bigipGtmPoolMbrEnabled", "bigipGtmPoolMbrNotAvail": "bigipGtmPoolMbrNotAvail", "bigipGtmPoolNotAvail": "bigipGtmPoolNotAvail", "bigipGtmProberPoolDisabled": "bigipGtmProberPoolDisabled", "bigipGtmProberPoolEnabled": "bigipGtmProberPoolEnabled", "bigipGtmProberPoolMbrDisabled": "bigipGtmProberPoolMbrDisabled", "bigipGtmProberPoolMbrEnabled": "bigipGtmProberPoolMbrEnabled", "bigipGtmProberPoolMbrStatusChange": "bigipGtmProberPoolMbrStatusChange", "bigipGtmProberPoolMbrStatusChangeReason": "bigipGtmProberPoolMbrStatusChangeReason", "bigipGtmProberPoolStatusChange": "bigipGtmProberPoolStatusChange", "bigipGtmProberPoolStatusChangeReason": "bigipGtmProberPoolStatusChangeReason", "bigipGtmRequestRateLimiterEngaged": "bigipGtmRequestRateLimiterEngaged", "bigipGtmServerAvail": "bigipGtmServerAvail", "bigipGtmServerDisabled": "bigipGtmServerDisabled", "bigipGtmServerEnabled": "bigipGtmServerEnabled", "bigipGtmServerNotAvail": "bigipGtmServerNotAvail", "bigipGtmSslCertExpired": "bigipGtmSslCertExpired", "bigipGtmSslCertWillExpire": "bigipGtmSslCertWillExpire", "bigipGtmVsAvail": "bigipGtmVsAvail", "bigipGtmVsDisabled": "bigipGtmVsDisabled", "bigipGtmVsEnabled": "bigipGtmVsEnabled", "bigipGtmVsNotAvail": "bigipGtmVsNotAvail", "bigipGtmWideIpAvail": "bigipGtmWideIpAvail", "bigipGtmWideIpDisabled": "bigipGtmWideIpDisabled", "bigipGtmWideIpEnabled": "bigipGtmWideIpEnabled", "bigipGtmWideIpNotAvail": "bigipGtmWideIpNotAvail", "bigipHardDiskFailure": "bigipHardDiskFailure", "bigipInetPortExhaustion": "bigipInetPortExhaustion", "bigipLibhalBladePoweredOff": "bigipLibhalBladePoweredOff", "bigipLibhalDiskBayRemoved": "bigipLibhalDiskBayRemoved", "bigipLibhalSensorAlarmCritical": "bigipLibhalSensorAlarmCritical", "bigipLibhalSsdLogicalDiskRemoved": "bigipLibhalSsdLogicalDiskRemoved", "bigipLibhalSsdPhysicalDiskRemoved": "bigipLibhalSsdPhysicalDiskRemoved", "bigipLicenseExpired": "bigipLicenseExpired", "bigipLicenseFailed": "bigipLicenseFailed", "bigipLogAlert": "bigipLogAlert", "bigipLogCrit": "bigipLogCrit", "bigipLogEmerg": "bigipLogEmerg", "bigipLogErr": "bigipLogErr", "bigipLogWarning": "bigipLogWarning", "bigipLtmVsAvail": "bigipLtmVsAvail", "bigipLtmVsDisabled": "bigipLtmVsDisabled", "bigipLtmVsEnabled": "bigipLtmVsEnabled", "bigipLtmVsUnavail": "bigipLtmVsUnavail", "bigipMemberRate": "bigipMemberRate", "bigipNetLinkDown": "bigipNetLinkDown", "bigipNodeDown": "bigipNodeDown", "bigipNodeRate": "bigipNodeRate", "bigipNodeUp": "bigipNodeUp", "bigipPacketRejected": "bigipPacketRejected", "bigipPsAbsent": "bigipPsAbsent", "bigipPsPowerOff": "bigipPsPowerOff", "bigipPsPowerOn": "bigipPsPowerOn", "bigipRaidDiskFailure": "bigipRaidDiskFailure", "bigipServiceDown": "bigipServiceDown", "bigipServiceUp": "bigipServiceUp", "bigipSsdMwiNearThreshold": "bigipSsdMwiNearThreshold", "bigipSsdMwiReachedThreshold": "bigipSsdMwiReachedThreshold", "bigipSslLimitExceeded": "bigipSslLimitExceeded", "bigipStandby": "bigipStandby", "bigipStandByFail": "bigipStandByFail", "bigipSystemCheckAlertCurrentHigh": "bigipSystemCheckAlertCurrentHigh", "bigipSystemCheckAlertCurrentLow": "bigipSystemCheckAlertCurrentLow", "bigipSystemCheckAlertFanSpeedLow": "bigipSystemCheckAlertFanSpeedLow", "bigipSystemCheckAlertMilliVoltageHigh": "bigipSystemCheckAlertMilliVoltageHigh", "bigipSystemCheckAlertMilliVoltageLow": "bigipSystemCheckAlertMilliVoltageLow", "bigipSystemCheckAlertPowerHigh": "bigipSystemCheckAlertPowerHigh", "bigipSystemCheckAlertPowerLow": "bigipSystemCheckAlertPowerLow", "bigipSystemCheckAlertTempHigh": "bigipSystemCheckAlertTempHigh", "bigipSystemCheckAlertVoltageHigh": "bigipSystemCheckAlertVoltageHigh", "bigipSystemCheckAlertVoltageLow": "bigipSystemCheckAlertVoltageLow", "bigipSystemShutdown": "bigipSystemShutdown", "bigipTamdAlert": "bigipTamdAlert", "bigipTrafficGroupActivate": "bigipTrafficGroupActivate", "bigipTrafficGroupActive": "bigipTrafficGroupActive", "bigipTrafficGroupDeactivate": "bigipTrafficGroupDeactivate", "bigipTrafficGroupForcedOffline": "bigipTrafficGroupForcedOffline", "bigipTrafficGroupOffline": "bigipTrafficGroupOffline", "bigipTrafficGroupStandby": "bigipTrafficGroupStandby", "bigipUnsolicitedRepliesExceededThreshold": "bigipUnsolicitedRepliesExceededThreshold", "bigipUpdateError": "bigipUpdateError", "bigipUpdatePriority": "bigipUpdatePriority", "bigipUpdateServer": "bigipUpdateServer", "bigipVcmpAlertsVcmpHBDetected": "bigipVcmpAlertsVcmpHBDetected", "bigipVcmpAlertsVcmpHBLost": "bigipVcmpAlertsVcmpHBLost", "bigipVcmpAlertsVcmpPowerOff": "bigipVcmpAlertsVcmpPowerOff", "bigipVcmpAlertsVcmpPowerOn": "bigipVcmpAlertsVcmpPowerOn", "bigipVirtualRate": "bigipVirtualRate", "coldStart": "coldStart", "emASMSigInstallComplete": "emASMSigInstallComplete", "emASMSigInstallFailed": "emASMSigInstallFailed", "emASMSigUpdateAvailable": "emASMSigUpdateAvailable", "emASMSigUpdateFailed": "emASMSigUpdateFailed", "emCertificateExpiration": "emCertificateExpiration", "emCpuUsage": "emCpuUsage", "emDeviceActiveMode": "emDeviceActiveMode", "emDeviceClockSkew": "emDeviceClockSkew", "emDeviceConfigSettingChanged": "emDeviceConfigSettingChanged", "emDeviceConfigSync": "emDeviceConfigSync", "emDeviceForcedOfflineMode": "emDeviceForcedOfflineMode", "emDeviceImpaired": "emDeviceImpaired", "emDeviceOfflineMode": "emDeviceOfflineMode", "emDeviceStandbyMode": "emDeviceStandbyMode", "emDeviceUnreachable": "emDeviceUnreachable", "emDiskUsage": "emDiskUsage", "emGatherServiceContractFailure": "emGatherServiceContractFailure", "emHaSyncFailed": "emHaSyncFailed", "emHotfixInstallComplete": "emHotfixInstallComplete", "emHotfixInstallFailed": "emHotfixInstallFailed", "emMemoryUsage": "emMemoryUsage", "emPerformanceStorageCap": "emPerformanceStorageCap", "emPerformanceStorageDays": "emPerformanceStorageDays", "emPerformanceThreshold": "emPerformanceThreshold", "emRaidDriveFailureDetected": "emRaidDriveFailureDetected", "emRaidDriveRebuildComplete": "emRaidDriveRebuildComplete", "emSchedBackupFailed": "emSchedBackupFailed", "emScheduledArchiveFailed": "emScheduledArchiveFailed", "emServiceContractExpiry": "emServiceContractExpiry", "emSoftwareInstallComplete": "emSoftwareInstallComplete", "emSoftwareInstallFailed": "emSoftwareInstallFailed", "emStatsCollectionRateCap": "emStatsCollectionRateCap", "emStatsDBConnectivityLost": "emStatsDBConnectivityLost", "emStatsDBConnectivityRestored": "emStatsDBConnectivityRestored", "fallingAlarm": "fallingAlarm", "ipv6IfStateChange": "ipv6IfStateChange", "linkDown": "linkDown", "linkUp": "linkUp", "mteEventSetFailure": "mteEventSetFailure", "mteTriggerFailure": "mteTriggerFailure", "mteTriggerFalling": "mteTriggerFalling", "mteTriggerFired": "mteTriggerFired", "mteTriggerRising": "mteTriggerRising", "netSnmpExampleHeartbeatNotification": "netSnmpExampleHeartbeatNotification", "newRoot": "newRoot", "nsNotifyRestart": "nsNotifyRestart", "nsNotifyShutdown": "nsNotifyShutdown", "nsNotifyStart": "nsNotifyStart", "risingAlarm": "risingAlarm", "schedActionFailure": "schedActionFailure", "smScriptAbort": "smScriptAbort", "smScriptException": "smScriptException", "smScriptResult": "smScriptResult", "topologyChange": "topologyChange", "ucdShutdown": "ucdShutdown", "ucdStart": "ucdStart", "warmStart": "warmStart" } }, "vUSP": { "vf": { "ctsf-xxx": "vCTS" }, "vfc": { "vCTS - CFED": "vCTS - CFED", "vCTS - Config": "vCTS - Config", "vCTS - DFED": "vCTS - DFED", "vCTS - TAFE-fsd": "vCTS - TAFE-fsd", "vCTS - GLS": "vCTS - GLS", "vCTS - XXX": "vCTS - XXX", "vCTS - Management Interface": "vCTS - Management Interface", "vCTS - SPFE-pfe": "vCTS - SPFE-pfe", "vCTS - DNS": "vCTS - DNS", "vCTS - SPFE-spd": "vCTS - SPFE-spd", "vCTS - SPFE-spt": "vCTS - SPFE-spt", "vCTS - TAFE-tas": "vCTS - TAFE-tas" }, "location": { "SNDGCA06": "San Diego(core site) A06", "SNDGCA64": "San Diego(core site) A64", "SNANTXCA": "San Antonio(core site)", "KSCYMO09": "Kansas City(core site)", "kings_mountain": "Kings Mountain(AMG)", "Secaucus": "Secaucus(AMG)", "lisle": "Lisle(AMG)", "concord": "Concord(AMG)", "houston": "Houston(AMG)", "akron": "Akron(AMG)" }, "alarmCondition": { "acrTemporaryBufferOverload": "acrTemporaryBufferOverload", "adnsExtendedTTLcaching": "adnsExtendedTTLcaching", "adnsQueryFailureCaching": "adnsQueryFailureCaching", "adnsQueueCongestion": "adnsQueueCongestion", "asdaCommunicationFailure": "asdaCommunicationFailure", "asdaRequestQueue": "asdaRequestQueue", "capacityLicenseKeyExpiration": "capacityLicenseKeyExpiration", "capacityLicenseKeyNearExpiration": "capacityLicenseKeyNearExpiration", "capacityLicenseKeyValidationError": "capacityLicenseKeyValidationError", "cardConnectionLost": "cardConnectionLost", "ccdbCommunicationFailure": "ccdbCommunicationFailure", "cpiAlrmCritical": "cpiAlrmCritical", "cpiAlrmMajor": "cpiAlrmMajor", "cpiAlrmMinor": "cpiAlrmMinor", "cpiAlrmWarning": "cpiAlrmWarning", "cpiAsrtEsc": "cpiAsrtEsc", "cpiAsrtNonEsc": "cpiAsrtNonEsc", "cpiAsrtNonEscCritical": "cpiAsrtNonEscCritical", "cpiAsrtNonEscMajor": "cpiAsrtNonEscMajor", "cpiAsrtNonEscMinor": "cpiAsrtNonEscMinor", "cpiAudErrCount": "cpiAudErrCount", "cpiAudManAct": "cpiAudManAct", "cpiAudNewEvent": "cpiAudNewEvent", "cpiCompleteRateAlarm": "cpiCompleteRateAlarm", "cpiCTS3xxFailRate": "cpiCTS3xxFailRate", "cpiCTS4xxFailRate": "cpiCTS4xxFailRate", "cpiCTS5xxFailRate": "cpiCTS5xxFailRate", "cpiCTS6xxFailRate": "cpiCTS6xxFailRate", "cpiCTSSIPRetransmitInvite": "cpiCTSSIPRetransmitInvite", "cpiCTSSIPRetransmitNonInvite": "cpiCTSSIPRetransmitNonInvite", "cpiDropMGAllocConnReq": "cpiDropMGAllocConnReq", "cpiDropRateAlarm": "cpiDropRateAlarm", "cpiExceptionService": "cpiExceptionService", "cpiFailRateAlarm": "cpiFailRateAlarm", "cpiFailSCTPFastRetransIncr": "cpiFailSCTPFastRetransIncr", "cpiFailSCTPFastRetransRate": "cpiFailSCTPFastRetransRate", "cpiFailSCTPSRTT1Incr": "cpiFailSCTPSRTT1Incr", "cpiFailSCTPSRTT2Incr": "cpiFailSCTPSRTT2Incr", "cpiFailSCTPT3RetransIncr": "cpiFailSCTPT3RetransIncr", "cpiFailSCTPT3RetransRate": "cpiFailSCTPT3RetransRate", "cpiFileSysUsage": "cpiFileSysUsage", "cpiMemAllocFail": "cpiMemAllocFail", "cpiNumOfLICDRDel": "cpiNumOfLICDRDel", "cpiReinitServiceSelf": "cpiReinitServiceSelf", "cpiSIPRetransmitInvite": "cpiSIPRetransmitInvite", "cpiSIPRetransmitNonInvite": "cpiSIPRetransmitNonInvite", "cpiSS7DropSCTPPktsRcvd": "cpiSS7DropSCTPPktsRcvd", "cpiSS7FailSCTPFastRetransRate": "cpiSS7FailSCTPFastRetransRate", "cpiStabilityAlarm": "cpiStabilityAlarm", "cpuOverload": "cpuOverload", "databaseConnectionLost": "databaseConnectionLost", "databaseReplicationLinkDown": "databaseReplicationLinkDown", "databaseSizeExhausted": "databaseSizeExhausted", "dbHighCpuUtilization": "dbHighCpuUtilization", "dbOffline": "dbOffline", "dbStatusUnexpected": "dbStatusUnexpected", "degradedResource": "degradedResource", "degrow": "degrow", "deviceServerCxnLost": "deviceServerCxnLost", "diamLinkDown": "diamLinkDown", "diamMaxClientsExceeded": "diamMaxClientsExceeded", "dnsThreshold": "dnsThreshold", "ethernetError": "ethernetError", "ethernetLinkDown": "ethernetLinkDown", "externalConnectivity": "externalConnectivity", "featureLicenseExpiration": "featureLicenseExpiration", "featureLicenseKeyNearExpiration": "featureLicenseKeyNearExpiration", "featureLockValidationError": "featureLockValidationError", "fqdnError": "fqdnError", "fru": "fru", "gatewayCongestion": "gatewayCongestion", "gatewayForcedOOS": "gatewayForcedOOS", "gatewayProvisioningError": "gatewayProvisioningError", "gatewayUnreachable": "gatewayUnreachable", "gatewayUnregistered": "gatewayUnregistered", "globalParameterNotFound": "globalParameterNotFound", "glsInvalidCellId": "glsInvalidCellId", "glsServerUnavailable": "glsServerUnavailable", "grow": "grow", "h248MessageBufferDepletion": "h248MessageBufferDepletion", "hlrSyncConnection": "hlrSyncConnection", "hlrSyncQueue": "hlrSyncQueue", "hostDown": "hostDown", "hostReset": "hostReset", "invalidGateway": "invalidGateway", "iriLinkDown": "iriLinkDown", "ldapServerConnectionLost": "ldapServerConnectionLost", "lispBufferFullExternalLIG": "lispBufferFullExternalLIG", "llcDown": "llcDown", "logicalLinkDown": "logicalLinkDown", "logicalLinkNotFound": "logicalLinkNotFound", "logRotateThreshold": "logRotateThreshold", "memoryOverload": "memoryOverload", "nodeConfigFailure": "nodeConfigFailure", "nodeGroupOOS": "nodeGroupOOS", "nodeOOS": "nodeOOS", "nonCompliantFaultGroupMemberState": "nonCompliantFaultGroupMemberState", "nonCsAddrChannelDepletion": "nonCsAddrChannelDepletion", "numberOfTuplesInUse": "numberOfTuplesInUse", "osSecInfoModificationDetected": "osSecInfoModificationDetected", "osSecInformationMissing": "osSecInformationMissing", "osSecUnexpectedInformation": "osSecUnexpectedInformation", "pdnsMySqlReplication": "pdnsMySqlReplication", "pktCorruptionDetectedViaRCCLANCheck": "pktCorruptionDetectedViaRCCLANCheck", "platformCommandFailure": "platformCommandFailure", "pmDataNotCollected": "pmDataNotCollected", "prdbConnectWithAlternateFailure": "prdbConnectWithAlternateFailure", "prdbSyncDataToAlternateFailure": "prdbSyncDataToAlternateFailure", "preAllocatedResourceOverload": "preAllocatedResourceOverload", "prifSocketError": "prifSocketError", "processDown": "processDown", "processNotStarted": "processNotStarted", "provisioningInhibitedMode": "provisioningInhibitedMode", "prsCallInstanceExceeded": "prsCallInstanceExceeded", "prsCpuOverload": "prsCpuOverload", "prsDatabaseMigrationFailure": "prsDatabaseMigrationFailure", "prsFailureToConnectWithPRDB": "prsFailureToConnectWithPRDB", "prsQueueExceeded": "prsQueueExceeded", "rccInhibitedMode": "rccInhibitedMode", "remotedbLinkDown": "remotedbLinkDown", "remoteQueryServerFailure": "remoteQueryServerFailure", "restore": "restore", "serviceCFGDataTimestampError": "serviceCFGDataTimestampError", "serviceCommCxnLost": "serviceCommCxnLost", "serviceOnewayCommunication": "serviceOnewayCommunication", "sheddingOverload": "sheddingOverload", "simxml": "simxml", "sipLinkSetMaxQuarantineList": "sipLinkSetMaxQuarantineList", "sipLinkSetUnavailable": "sipLinkSetUnavailable", "sipLinkUnavailable": "sipLinkUnavailable", "smdiSocketError": "smdiSocketError", "socketError": "socketError", "softwareAllocatedResourceOverload": "softwareAllocatedResourceOverload", "softwareComponentDown": "softwareComponentDown", "softwareComponentStandbyNotReady": "softwareComponentStandbyNotReady", "softwareLicense": "softwareLicense", "svcdegrow": "svcdegrow", "svcgrow": "svcgrow", "swVersionMismatch": "swVersionMismatch", "tftpDownloadCorrupt": "tftpDownloadCorrupt", "timeStampValueOutOfSystemRange": "timeStampValueOutOfSystemRange", "tlsInitError": "tlsInitError", "transactionHandlerBlockDepletion": "transactionHandlerBlockDepletion", "upgrade": "upgrade", "usageOfSyncTable": "usageOfSyncTable", "utHttpProxyConnectionDown": "utHttpProxyConnectionDown", "wpifSocketError": "wpifSocketError", "BackupFailure": "BackupFailure", "Configuration": "Configuration", "COTRecordTransferFailure": "COTRecordTransferFailure", "CPMUSERDATAINCONSITENCY": "CPMUSERDATAINCONSITENCY", "CPMUSERDATARESTORED": "CPMUSERDATARESTORED", "EventQueueCapacity": "EventQueueCapacity", "ICMPFailure": "ICMPFailure", "IPsecConfig": "IPsecConfig", "LinkDown": "LinkDown", "NotifyDisabled": "NotifyDisabled", "NotifyLocked": "NotifyLocked", "NumTL1MeasThresh": "NumTL1MeasThresh", "RADIUSTOLDAPFAILURE": "RADIUSTOLDAPFAILURE", "ROOTACCESSDENIED": "ROOTACCESSDENIED", "ROOTFTPVIOLATION": "ROOTFTPVIOLATION", "ROOTLOGINVIOLATION": "ROOTLOGINVIOLATION", "ROOTSSHLOGINVIOLATION": "ROOTSSHLOGINVIOLATION", "SetupAAAFailure": "SetupAAAFailure", "SNETrapOverload": "SNETrapOverload", "SNMPAuthenticationFailure": "SNMPAuthenticationFailure", "SNMPFailure": "SNMPFailure", "SUTOROOTFAILURE": "SUTOROOTFAILURE", "SYSTEMTrapOverload": "SYSTEMTrapOverload", "ThresholdCrossed": "ThresholdCrossed", "UndiscoveredObject": "UndiscoveredObject", "WriteAAAFailure": "WriteAAAFailure" } }, "Trinity": { "vf": { "aSBG": "aSBG", "nSBG": "nSBG", "tSBG": "tSBG" }, "vfc": { "pld": "PL - Payload Processor", "scr": "SC - System Controller" }, "location": { "SNDGCA64": "San Diego SAN3", "ALPRGAED": "Alpharetta PDK1", "LSLEILAA":"Lisle DPA3" }, "alarmCondition": { "A+Fallback+Operation+will+soon+be+started":"A Fallback Operation will soon be started", "BRM%2C+Auto+Export+Backup+Failed":"BRM, Auto Export Backup Failed", "BRM%2C+Scheduled+Backup+Failed":"BRM, Scheduled Backup Failed", "COM+SA%2C+AMF+Component+Cleanup+Failed":"COM SA, AMF Component Cleanup Failed", "COM+SA%2C+AMF+Component+Instantiation+Failed":"COM SA, AMF Component Instantiation Failed", "COM+SA%2C+AMF+SI+Unassigned":"COM SA, AMF SI Unassigned", "COM+SA%2C+CLM+Cluster+Node+Unavailable":"COM SA, CLM Cluster Node Unavailable", "COM+SA%2C+MDF+Detected+Model+Error":"COM SA, MDF Detected Model Error", "COM+SA%2C+Proxy+Status+of+a+Component+Changed+to+Unproxied":"COM SA, Proxy Status of a Component Changed to Unproxied", "File+Management%2C+Number+of+Files+in+FileGroup+Exceeded":"File Management, Number of Files in FileGroup Exceeded", "File+Management%2C+Max+Size+in+FileGroup+Exceeded":"File Management, Max Size in FileGroup Exceeded", "LOTC+Disk+Replication+Communication":"LOTC Disk Replication Communication", "LOTC+Disk+Replication+Consistency":"LOTC Disk Replication Consistency", "LOTC+Disk+Usage":"LOTC Disk Usage", "LOTC+memory+Usage":"LOTC memory Usage", "LOTC+Time+Synchronization":"LOTC Time Synchronization", "SBG%2C+BGF+Control+Link+Down":"SBG, BGF Control Link Down", "SBG%2C+BGF+Control+Link+Disabled":"SBG, BGF Control Link Disabled", "SBG%2C+BGF+Control+Link+Enabled":"SBG, BGF Control Link Enabled", "SBG%2C+BGF+Control+Link+Remote+Locked":"SBG, BGF Control Link Remote Locked", "SBG%2C+Charging+Data+Storage+Maximum+Records+Reached":"SBG, Charging Data Storage Maximum Records Reached", "SBG%2C+Charging+Server+Rejects+Charging+Data":"SBG, Charging Server Rejects Charging Data", "SBG%2C+Excessive+Packet+Rate+Detected+":"SBG, Excessive Packet Rate Detected ", "SBG%2C+High+Amount+of+Malformed+Packets+Received":"SBG, High Amount of Malformed Packets Received", "SBG%2C+High+Amount+of+STUN+Packets+Detected":"SBG, High Amount of STUN Packets Detected", "SBG%2C+High+Amount+of+TCP+SYN+Packets+Received":"SBG, High Amount of TCP SYN Packets Received", "SBG%2C+High+Amount+of+UDP+Packets+Received+":"SBG, High Amount of UDP Packets Received ", "SBG%2C+IP+Address+Blocked+Due+to+Excessive+Packet+Rate":"SBG, IP Address Blocked Due to Excessive Packet Rate", "SBG%2C+Lost+Connectivity+to+Diameter+Server":"SBG, Lost Connectivity to Diameter Server", "SBG%2C+Mated+Pair+out+of+Service":"SBG, Mated Pair out of Service", "SBG%2C+Network+Unavailable+for+Media+Handling":"SBG, Network Unavailable for Media Handling", "SBG%2C+Non-emergency+Call+Released+to+Free+Resources+for+Emergency+Call":"SBG, Non-emergency Call Released to Free Resources for Emergency Call", "SBG%2C+Not+Enough+Disk+Space+for+Storing+Charging+Data":"SBG, Not Enough Disk Space for Storing Charging Data", "SBG%2C+Payload+Mated+Pair+Failure":"SBG, Payload Mated Pair Failure", "SBG%2C+Payload+Processor+Failure":"SBG, Payload Processor Failure", "SBG%2C+Processor+Overloaded":"SBG, Processor Overloaded", "SBG%2C+Registered+User+Set+in+Quarantine":"SBG, Registered User Set in Quarantine", "SBG%2C+Registration+Contacts+Exceed+Configured+Threshold":"SBG, Registration Contacts Exceed Configured Threshold", "SBG%2C+Sequential+Restart+Initiated":"SBG, Sequential Restart Initiated", "SBG%2C+SIP+Abuse+Detected":"SBG, SIP Abuse Detected", "SBG%2C+SIP+Network+Locked":"SBG, SIP Network Locked", "SBG%2C+SIP+Next+Hop+Reachable":"SBG, SIP Next Hop Reachable", "SBG%2C+SIP+Next+Hop+Unreachable":"SBG, SIP Next Hop Unreachable", "SBG%2C+SIP+Request+Rejected+by+Network+Throttling":"SBG, SIP Request Rejected by Network Throttling", "SBG%2C+TLS+Certificate+Imported":"SBG, TLS Certificate Imported", "SBG%2C+Trace+Recording+Session+Number+Limit+Reached":"SBG, Trace Recording Session Number Limit Reached", "SBG%2C+Trace+Session+Deactivated":"SBG, Trace Session Deactivated", "SBG%2C+Trace+Session+Times+Out":"SBG, Trace Session Times Out", "SBG%2C+Unknown+Media+Type+or+Payload+Type":"SBG, Unknown Media Type or Payload Type" } }, "vProbes": { "vf": { }, "vfc": { }, "location": { }, "alarmCondition": { } } } } } -globalPropsPartialTest={"collector": {"topicPublishes": {"DCAE-COLLECTOR-UCSNMP": "DCAE-COLLECTOR-UCSNMP", "GFP-IP--SNMP-TRAPS" : "GFP-IP--SNMP-TRAPS" } }, "string_match": { "topicPublishes": { "DCAE-CL-EVENT": "DCAE-CL-EVENT" }, "aaiMatchingFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "ProvStatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "aaiSendFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "Provstatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "eventSourceType": { "f5BigIP": "f5BigIP", "vSBG_Alarms": "vSBG_Alarms", "vCTS_Alarms": "vCTS_Alarms" }, "eventSeverity": { "NORMAL": "NORMAL", "not-NORMAL": "not-NORMAL", "WARNING": "WARNING", "MINOR": "MINOR", "MAJOR": "MAJOR", "CRITICAL": "CRITICAL" }, "timeWindow": 0, "ageLimit": 1600, "outputEventName": { "": "", "OnSet": "OnSet", "Abatement": "Abatement" }, "createClosedLoopEventId": { "Initial": "Initial", "Close": "Close" } }, "global": { "service": { "": "", "vUSP": "vUSP", "vSCP": "vSCP", "vProbes": "vProbes" } }, "policy": { "timeout": 5, "recipe": { "": "", "restart": "Restart", "rebuild": "Rebuild", "migrate": "Migrate" }, "maxRetries": "3", "retryTimeLimit": 180, "resource": { "vCTS": "vCTS", "v3CDB": "v3CDB", "vUDR": "vUDR", "vCOM": "vCOM", "vRAR": "vRAR", "vLCS": "vLCS", "vUDR-BE": "vUDR-BE", "vDBE": "vDBE" }, "parentPolicyConditions": { "Failure_Retries": "Failure: Max Retries Exceeded", "Failure_Timeout": "Failure: Time Limit Exceeded", "Failure_Exception": "Failure: Exception", "Failure": "Failure: Other", "Success": "Success" } }} -ui.location.default={"location":{"SNDGCA64":"San Diego SAN3","ALPRGAED":"Alpharetta PDK1","LSLEILAA":"Lisle DPA3"}} -ui.alarm.default={"alarmCondition":{"A+Fallback+Operation+will+soon+be+started":"A Fallback Operation will soon be started","BRM%2C+Auto+Export+Backup+Failed":"BRM, Auto Export Backup Failed","BRM%2C+Scheduled+Backup+Failed":"BRM, Scheduled Backup Failed","COM+SA%2C+AMF+Component+Cleanup+Failed":"COM SA, AMF Component Cleanup Failed","COM+SA%2C+AMF+Component+Instantiation+Failed":"COM SA, AMF Component Instantiation Failed","COM+SA%2C+AMF+SI+Unassigned":"COM SA, AMF SI Unassigned","COM+SA%2C+CLM+Cluster+Node+Unavailable":"COM SA, CLM Cluster Node Unavailable","COM+SA%2C+MDF+Detected+Model+Error":"COM SA, MDF Detected Model Error","COM+SA%2C+Proxy+Status+of+a+Component+Changed+to+Unproxied":"COM SA, Proxy Status of a Component Changed to Unproxied","File+Management%2C+Number+of+Files+in+FileGroup+Exceeded":"File Management, Number of Files in FileGroup Exceeded","File+Management%2C+Max+Size+in+FileGroup+Exceeded":"File Management, Max Size in FileGroup Exceeded","LOTC+Disk+Replication+Communication":"LOTC Disk Replication Communication","LOTC+Disk+Replication+Consistency":"LOTC Disk Replication Consistency","LOTC+Disk+Usage":"LOTC Disk Usage","LOTC+memory+Usage":"LOTC memory Usage","LOTC+Time+Synchronization":"LOTC Time Synchronization","SBG%2C+BGF+Control+Link+Down":"SBG, BGF Control Link Down","SBG%2C+BGF+Control+Link+Disabled":"SBG, BGF Control Link Disabled","SBG%2C+BGF+Control+Link+Enabled":"SBG, BGF Control Link Enabled","SBG%2C+BGF+Control+Link+Remote+Locked":"SBG, BGF Control Link Remote Locked","SBG%2C+Charging+Data+Storage+Maximum+Records+Reached":"SBG, Charging Data Storage Maximum Records Reached","SBG%2C+Charging+Server+Rejects+Charging+Data":"SBG, Charging Server Rejects Charging Data","SBG%2C+Excessive+Packet+Rate+Detected+":"SBG, Excessive Packet Rate Detected ","SBG%2C+High+Amount+of+Malformed+Packets+Received":"SBG, High Amount of Malformed Packets Received","SBG%2C+High+Amount+of+STUN+Packets+Detected":"SBG, High Amount of STUN Packets Detected","SBG%2C+High+Amount+of+TCP+SYN+Packets+Received":"SBG, High Amount of TCP SYN Packets Received","SBG%2C+High+Amount+of+UDP+Packets+Received+":"SBG, High Amount of UDP Packets Received ","SBG%2C+IP+Address+Blocked+Due+to+Excessive+Packet+Rate":"SBG, IP Address Blocked Due to Excessive Packet Rate","SBG%2C+Lost+Connectivity+to+Diameter+Server":"SBG, Lost Connectivity to Diameter Server","SBG%2C+Mated+Pair+out+of+Service":"SBG, Mated Pair out of Service","SBG%2C+Network+Unavailable+for+Media+Handling":"SBG, Network Unavailable for Media Handling","SBG%2C+Non-emergency+Call+Released+to+Free+Resources+for+Emergency+Call":"SBG, Non-emergency Call Released to Free Resources for Emergency Call","SBG%2C+Not+Enough+Disk+Space+for+Storing+Charging+Data":"SBG, Not Enough Disk Space for Storing Charging Data","SBG%2C+Payload+Mated+Pair+Failure":"SBG, Payload Mated Pair Failure","SBG%2C+Payload+Processor+Failure":"SBG, Payload Processor Failure","SBG%2C+Processor+Overloaded":"SBG, Processor Overloaded","SBG%2C+Registered+User+Set+in+Quarantine":"SBG, Registered User Set in Quarantine","SBG%2C+Registration+Contacts+Exceed+Configured+Threshold":"SBG, Registration Contacts Exceed Configured Threshold","SBG%2C+Sequential+Restart+Initiated":"SBG, Sequential Restart Initiated","SBG%2C+SIP+Abuse+Detected":"SBG, SIP Abuse Detected","SBG%2C+SIP+Network+Locked":"SBG, SIP Network Locked","SBG%2C+SIP+Next+Hop+Reachable":"SBG, SIP Next Hop Reachable","SBG%2C+SIP+Next+Hop+Unreachable":"SBG, SIP Next Hop Unreachable","SBG%2C+SIP+Request+Rejected+by+Network+Throttling":"SBG, SIP Request Rejected by Network Throttling","SBG%2C+TLS+Certificate+Imported":"SBG, TLS Certificate Imported","SBG%2C+Trace+Recording+Session+Number+Limit+Reached":"SBG, Trace Recording Session Number Limit Reached","SBG%2C+Trace+Session+Deactivated":"SBG, Trace Session Deactivated","SBG%2C+Trace+Session+Times+Out":"SBG, Trace Session Times Out","SBG%2C+Unknown+Media+Type+or+Payload+Type":"SBG, Unknown Media Type or Payload Type"}} - +### +# ============LICENSE_START======================================================= +# ONAP CLAMP +# ================================================================================ +# Copyright (C) 2017 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============================================ +# =================================================================== +# ECOMP is a trademark and service mark of AT&T Intellectual Property. +### + +# +# Poperties for CLDS +# +# +# +# TCA MicroService Policy request build properties +# +tca.template={"service":"MThresholdCrossingConfiguration","location":"Edge","uuid":"TestUUID","policyName":"???","description":"from clds","configName":"MThresholdCrossingConfiguration","templateVersion":"5.2.0.1","priority":"4","version":"5.2.0.1","policyScope":"resource=F5,service=vSCP,type=configuration,closedLoopControlName=vSCP_F5_Firewall_d925ed73-8231-4d02-9545-db4e101f88f8","content":{"$class": "com.att.ecomp.dcae.clamp.common.MThresholdCrossingConfiguration","domain":"measurementsForVfScaling","policyScope":"pnf=eNodeB;type=configuration","policyName":"policy.dcae.configuration","policyVersion":"1.0.0","subscriberContentType": "application/json","subscriberConsumerId": "c13","subscriberConsumerGroup": "OpenDCAE-c13","subscriberTimeoutMS": "-1","subscriberMessageLimit": "-1","subscriberPollingInterval": "20000","publisherContentType": "application/json","publisherMaxBatchSize": "10","publisherMaxRecoveryQueueSize": "100000","publisherPollingInterval": "20000","publisherAlertWindowingTime": "86400","signatures":[]}} +tca.signature.template={"nfNamingCode":"ENBE","target":"common_id","targetType":"eNodeB","useCaseName":"???","signatureName":"???","signatureUuid":"???","closedLoopControlName":"???","severity":"???","version":"1.0.2","maxInterval":1200,"minMessageViolations":4,"thresholds":[]} + +# +# DCAE request build properties +# +dcae.template={"properties":{"service_name":"","service_ids":[],"vnf_ids":[],"location_ids":[]},"template":{"string_matching":{"dcae":{"inputTopic":"","outputTopic":"","closedLoopControlName":"","closedLoopEventClient":"configuration.dcae.microservice.stringmatcher.xml","policyName":"","policyScope":"service=vSCP;resource=F5;type=configuration","policyVersion":"v0.0.1","serviceConfigurations":{}}}}} +dcae.decode.service_ids={"vUSP":["vUSP - vCTS"],"Trinity":["ASBGv TLS VNF","ASBGv No TLS","ASBGv (NO TLS) VNF","ASBGv TLS","NSBGv VNF","NSBGv"],"vSCP":["AKRON_vSCP_F5_FW-SVC/vSCP_F5_FW 1","ALLEN_vSCP_F5_FW-SVC/vSCP_F5_FW 1"],"vProbes":["vProbes - FW"]} +# +# SDC request blueprint properties +# +sdc.template={} +sdc.decode.service_ids={} +# +# +# General Policy request properties +# +policy.ecomp.name=DCAE +policy.pdp.group=default +policy.ms.type=MicroService +policy.ms.policyNamePrefix=Config_MS_ +policy.op.type=BRMS_Param +policy.op.policyNamePrefix=Config_BRMS_Param_ + +# by service: xxx +# +# +# String Match MicroService Policy request build properties +# +# default +sm.template={"service":"StringMatchingConfiguration","location":"Edge","uuid":"TestUUID","policyName":"???","description":"from clds","configName":"com.att.d2.policy.StringMatchingConfiguration","templateVersion":"1604","priority":"4","version":"1610","policyScope":"resource=F5,service=vSCP,type=configuration,closedLoopControlName=vSCP_F5_Firewall_d925ed73-8231-4d02-9545-db4e101f88f8","content":{"serviceConfigurations":{}}} +# by service: vSCP +sm.template.vSCP={"service":"StringMatchingConfiguration","location":"Edge","uuid":"TestUUID","policyName":"???","description":"from clds","configName":"com.att.d2.policy.StringMatchingConfiguration","templateVersion":"1604","priority":"4","version":"0.1.0-SNAPSHOT","policyScope":"resource=F5,service=vSCP,type=configuration,closedLoopControlName=vSCP_F5_Firewall_d925ed73-8231-4d02-9545-db4e101f88f8","content":{"serviceConfigurations":{}}} +sm.sc.template={} +# +# default +sm.rulegroup=true +# by service: vSCP +sm.rulegroup.vSCP=false +# +# +# Operational Policy request build properties +# +op.policyDescription=from clds +# default +op.templateName=ClosedLoopGuardvUSP +op.operationTopic=APPC-CL +op.notificationTopic=POLICY-CL-MGT +op.controller=1610-vUSP +# by service: vSCP +op.templateName.vSCP=ClosedLoopTemplate +op.controller.vSCP=1607-f5fw +op.eNodeB.templateName=CLeNodeB +op.eNodeB.operationTopic=com.onap.sdnr.RanCLRequest-v00 +op.eNodeB.notificationTopic=com.onap-policy.IST-ENODEB-CL +op.eNodeB.controller=ClosedLoop-eNodeB +op.eNodeB.recipe={"eNodeBRecipes":[{"Actor":"AOTS","Recipe":"checkENodeBTicketHours","ParentPolicy":"","PPConditions":"","Retry":"0","TimeLimit":"120"},{"Actor":"AOTS","Recipe":"checkEquipmentStatus","ParentPolicy":"checkENodeBTicketHours","PPConditions":"Success","Retry":"0","TimeLimit":"120"},{"Actor":"AOTS","Recipe":"checkEimStatus","ParentPolicy":"checkEquipmentStatus","PPConditions":"Success","Retry":"0","TimeLimit":"120"},{"Actor":"AOTS","Recipe":"checkMaintenanceWindow","ParentPolicy":"checkEimStatus","PPConditions":"Success","Retry":"0","TimeLimit":"120"},{"Actor":"SDNR","Recipe":"Reset","ParentPolicy":"checkMaintenanceWindow","PPConditions":"Success","Retry":"","TimeLimit":""}]} +op.eNodeB.timeWindow=35 +op.eNodeB.limit=2 +op.eNodeB.period=10s +# +# sdc service properties +sdc.catalog.url=http://127.0.0.1:8080/sdc/v1/catalog/ +sdc.hostUrl=http://127.0.0.1:8080 +sdc.serviceUrl=http://127.0.0.1:8080/sdc/v1/catalog/services +sdc.serviceUsername=test +sdc.servicePassword=123456 +sdc.artifactLabel=blueprintclampcockpit +sdc.sdcX-InstanceID=CLAMP +sdc.artifactType=DCAE_INVENTORY_BLUEPRINT +sdc.locationArtifactLabel=LocationClampCockpit +sdc.locationArtifactType=DCAE_INVENTORY_JSON +sdc.InstanceID=X-ONAP-InstanceID +# +# +# +ui.location.default={"SNDGCA64":"San Diego SAN3","ALPRGAED":"Alpharetta PDK1","LSLEILAA":"Lisle DPA3","MDTWNJC1":"FTL_C_location1","MDTWNJC2":"FTL_C_location2","MDTWNJ21":"FTL_L_location1","MDTWNJ22":"FTL_L_location2","RDM2WAGPLCP":"ISTFTL_location"} +ui.alarm.default={"Reports a transient alarm condition when an incoming CDR cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming CDR cannot be decoded successfully","Reports a transient alarm condition when an incoming ACR message cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming ACR message cannot be decoded successfully","Reports a transient alarm condition when a CDR validation fails":"vCCF: Reports a transient alarm condition when a CDR validation fails","Reports a transient alarm condition when an incoming GTP' message cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming GTP' message cannot be decoded successfully","Reports a transient alarm condition when an incoming CDR file cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming CDR file cannot be decoded successfully","Reports a transient alarm condition when an incoming Sh/Dh file cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming Sh/Dh file cannot be decoded successfully","Reports a transient alarm condition when an incoming ACR message is in conflict with former ACR in one diameter session":"vCCF: Reports a transient alarm condition when an incoming ACR message is in conflict with former ACR in one diameter session","Reports a transient alarm condition when an outgoing Ro message send fails":"vCCF: Reports a transient alarm condition when an outgoing Ro message send fails","Reports a transient alarm condition when an outgoing GTP' message send fails":"vCCF: Reports a transient alarm condition when an outgoing GTP' message send fails","Reports a transient alarm condition when an outgoing Sh/Dh message send fails":"vCCF: Reports a transient alarm condition when an outgoing Sh/Dh message send fails","Reports an alarm when build or send Rf message fail":"vCCF: Reports an alarm when build or send Rf message fail","Reports a transient alarm condition when an abnormal incoming CCA message":"vCCF: Reports a transient alarm condition when an abnormal incoming CCA message","Reports a transient alarm condition when there is an abnormal incoming Sh/Dh message":"vCCF: Reports a transient alarm condition when there is an abnormal incoming Sh/Dh message","For Rf interface, if IeCCF receives a message with incorrect value for session id.":"vCCF: For Rf interface, if IeCCF receives a message with incorrect value for session id.","Reports an alarm when CPU usage exceeds the major threshold, the local database exceeds the critical threshold, or the ACR partition exceeds the major threshold":"vCCF: Reports an alarm when CPU usage exceeds the major threshold, the local database exceeds the critical threshold, or the ACR partition exceeds the major threshold","Reports an alarm when CPU usage exceeds the minor threshold, the local database exceeds the major threshold, or the ACR partition exceeds the minor threshold":"vCCF: Reports an alarm when CPU usage exceeds the minor threshold, the local database exceeds the major threshold, or the ACR partition exceeds the minor threshold","Reports an alarm when CPU usage exceeds the critical threshold, the local database exceeds the major threshold, or the CDR partition exceeds the critical threshold":"vCCF: Reports an alarm when CPU usage exceeds the critical threshold, the local database exceeds the major threshold, or the CDR partition exceeds the critical threshold","Reports an alarm when CPU usage exceeds the major threshold or CDR partition exceeds the major threshold":"vCCF: Reports an alarm when CPU usage exceeds the major threshold or CDR partition exceeds the major threshold","Reports an alarm when external DB usage exceeds the major threshold":"vCCF: Reports an alarm when external DB usage exceeds the major threshold","If IeCCF comes to the status \\"Stop processing ACR records in ACRDB\\".":"vCCF: If IeCCF comes to the status \\"Stop processing ACR records in ACRDB\\".","If IeCCF comes to the status \\"Flush ACR is invoked\\".":"vCCF: If IeCCF comes to the status \\"Flush ACR is invoked\\".","Reports a transient alarm condition when the workflow definition table is provisioned wrongly":"vCCF: Reports a transient alarm condition when the workflow definition table is provisioned wrongly","Reports a transient alarm condition when the Action Definition table is provisioned wrongly":"vCCF: Reports a transient alarm condition when the Action Definition table is provisioned wrongly","Reports a transient alarm condition when the Ro Host Configuration is provisioned wrongly":"vCCF: Reports a transient alarm condition when the Ro Host Configuration is provisioned wrongly","Reports a transient alarm condition when the Sh Host Configuration is provisioned wrongly":"vCCF: Reports a transient alarm condition when the Sh Host Configuration is provisioned wrongly","Reports a transient alarm condition when a specific dictionary or rule does not exist":"vCCF: Reports a transient alarm condition when a specific dictionary or rule does not exist","Reports a transient alarm condition when failure occurs when mapping Rf message to XDR":"vCCF: Reports a transient alarm condition when failure occurs when mapping Rf message to XDR","Reports a transient alarm condition when failure occurs in aggregating process":"vCCF: Reports a transient alarm condition when failure occurs in aggregating process","Reports a transient alarm condition when failure happens in correlating process":"vCCF: Reports a transient alarm condition when failure happens in correlating process","Reports a transient alarm condition when failure occurs in generating CDR":"vCCF: Reports a transient alarm condition when failure occurs in generating CDR","Reports a transient alarm condition when failure occurs in constructing CCR message from XDR":"vCCF: Reports a transient alarm condition when failure occurs in constructing CCR message from XDR","Reports a transient alarm condition when an ACR/XER/BER/INC record write to bad file":"vCCF: Reports a transient alarm condition when an ACR/XER/BER/INC record write to bad file","Reports an alarm condition when aggregation or correlation central database connection is lost":"vCCF: Reports an alarm condition when aggregation or correlation central database connection is lost","Reports an alarm condition when a specific failure happens in database operations":"vCCF: Reports an alarm condition when a specific failure happens in database operations","Reports an alarm condition when DB capacity has been consumed to critical threshold":"vCCF: Reports an alarm condition when DB capacity has been consumed to critical threshold","Reports an alarm condition when DB capacity has been consumed to major threshold":"vCCF: Reports an alarm condition when DB capacity has been consumed to major threshold","Reports an alarm condition when DB capacity has been consumed to minor threshold.":"vCCF: Reports an alarm condition when DB capacity has been consumed to minor threshold.","Reports an alarm condition when application cannot deliver CDR to CDRSCH subsystem":"vCCF: Reports an alarm condition when application cannot deliver CDR to CDRSCH subsystem","Reports an alarm condition when some fields of ACR file header have error value and this ACR file cannot be processed further":"vCCF: Reports an alarm condition when some fields of ACR file header have error value and this ACR file cannot be processed further","Reports an alarm condition when some fields of ACR file header have invalid value and this ACR file can be processed further":"vCCF: Reports an alarm condition when some fields of ACR file header have invalid value and this ACR file can be processed further","Reports an alarm condition when the ACR file loses some ACR records":"vCCF: Reports an alarm condition when the ACR file loses some ACR records","Reports an alarm condition when some fields of ACR record header have error value and this ACR record and the following ACR records cannot be processed further":"vCCF: Reports an alarm condition when some fields of ACR record header have error value and this ACR record and the following ACR records cannot be processed further","Reports an alarm condition when error occurs in processing CDR/ACR files":"vCCF: Reports an alarm condition when error occurs in processing CDR/ACR files","Reports an alarm condition when CDR partition has been consumed to critical threshold":"vCCF: Reports an alarm condition when CDR partition has been consumed to critical threshold","Reports an alarm condition when CDR partition has been consumed to major threshold.":"vCCF: Reports an alarm condition when CDR partition has been consumed to major threshold.","Reports an alarm condition when CDR partition has been consumed to minor threshold":"vCCF: Reports an alarm condition when CDR partition has been consumed to minor threshold","Reports an alarm condition when ACR partition has been consumed to critical threshold":"vCCF: Reports an alarm condition when ACR partition has been consumed to critical threshold","Reports an alarm condition when ACR partition has been consumed to major threshold":"vCCF: Reports an alarm condition when ACR partition has been consumed to major threshold","Reports an alarm condition when ACR partition has been consumed to minor threshold":"vCCF: Reports an alarm condition when ACR partition has been consumed to minor threshold","Reports an alarm condition when CPU consumption reaches critical threshold":"vCCF: Reports an alarm condition when CPU consumption reaches critical threshold","Reports an alarm condition when CPU consumption reaches major threshold":"vCCF: Reports an alarm condition when CPU consumption reaches major threshold","Reports an alarm condition when CPU consumption reaches minor threshold":"vCCF: Reports an alarm condition when CPU consumption reaches minor threshold","Service shall monitor * number of partial CDR * number of incompleted CDR * number of unacceptable CDR If any one exceeds a configurable threshold in a configrable interval.":"vCCF: Service shall monitor * number of partial CDR * number of incompleted CDR * number of unacceptable CDR If any one exceeds a configurable threshold in a configrable interval.","CDR size exceed the platform capacity.":"vCCF: CDR size exceed the platform capacity.","Service shall monitor number of ACR without AII AVP, If it exceeds a configurable threshold in a configurable interval.":"vCCF: Service shall monitor number of ACR without AII AVP, If it exceeds a configurable threshold in a configurable interval.","Service shall monitor CDR cut due to ECCF_ACRNUMBER_IN_DB, If it exceeds a configurable threshold in a configurable interval.":"vCCF: Service shall monitor CDR cut due to ECCF_ACRNUMBER_IN_DB, If it exceeds a configurable threshold in a configurable interval.","External Node of this Cluster is overload":"vCCF: External Node of this Cluster is overload","bdb_high_latency":"vCCF-vDB: bdb_high_latency","bdb_high_throughput":"vCCF-vDB: bdb_high_throughput","bdb_size":"vCCF-vDB: bdb_size","cluster_inconsistent_rl_sw":"vCCF-vDB: cluster_inconsistent_rl_sw","cluster_node_remove_abort_failed":"vCCF-vDB: cluster_node_remove_abort_failed","cluster_node_remove_failed":"vCCF-vDB: cluster_node_remove_failed","cluster_ram_overcommit":"vCCF-vDB: cluster_ram_overcommit","cluster_rebalance_failed":"vCCF-vDB: cluster_rebalance_failed","cluster_too_few_nodes_for_replication":"vCCF-vDB: cluster_too_few_nodes_for_replication","node_cpu_utilization":"vCCF-vDB: node_cpu_utilization","node_ephemeral_storage":"vCCF-vDB: node_ephemeral_storage","node_failed":"vCCF-vDB: node_failed","node_memory":"vCCF-vDB: node_memory","node_net_throughput":"vCCF-vDB: node_net_throughput","node_offline_failed":"vCCF-vDB: node_offline_failed","node_offline_abort_failed":"vCCF-vDB: node_offline_abort_failed","node_online_failed":"vCCF-vDB: node_online_failed","OAM NODE- IS NOT ACTIVE ":"vCCF-vDB: OAM NODE- IS NOT ACTIVE ","LSS_asdaCommunicationFailure":"vCTS: LSS_asdaCommunicationFailure","LSS_ccdbCommunicationFailure":"vCTS: LSS_ccdbCommunicationFailure","LSS_cpiCTS3xxFailRate":"vCTS: LSS_cpiCTS3xxFailRate","LSS_cpiCTS4xxFailRate":"vCTS: LSS_cpiCTS4xxFailRate","LSS_cpiCTS5xxFailRate":"vCTS: LSS_cpiCTS5xxFailRate","LSS_cpiCTS6xxFailRate":"vCTS: LSS_cpiCTS6xxFailRate","LSS_cpiCTSSIPRetransmitInvite":"vCTS: LSS_cpiCTSSIPRetransmitInvite","LSS_cpiCTSSIPRetransmitNonInvite":"vCTS: LSS_cpiCTSSIPRetransmitNonInvite","LSS_glsInvalidCellId":"vCTS: LSS_glsInvalidCellId","LSS_glsServerUnavailable":"vCTS: LSS_glsServerUnavailable","LSS_hlrSyncConnection":"vCTS: LSS_hlrSyncConnection","LSS_hlrSyncQueue":"vCTS: LSS_hlrSyncQueue","LSS_lispBufferFullExternalLIG":"vCTS: LSS_lispBufferFullExternalLIG","LSS_prdbConnectWithAlternateFailure":"vCTS: LSS_prdbConnectWithAlternateFailure","LSS_prdbSyncDataToAlternateFailure":"vCTS: LSS_prdbSyncDataToAlternateFailure","LSS_preAllocatedResourceOverload":"vCTS: LSS_preAllocatedResourceOverload","LSS_prifSocketError":"vCTS: LSS_prifSocketError","LSS_prsCallInstanceExceeded":"vCTS: LSS_prsCallInstanceExceeded","LSS_prsCpuOverload":"vCTS: LSS_prsCpuOverload","LSS_prsDatabaseMigrationFailure":"vCTS: LSS_prsDatabaseMigrationFailure","LSS_prsFailureToConnectWithPRDB":"vCTS: LSS_prsFailureToConnectWithPRDB","LSS_prsQueueExceeded":"vCTS: LSS_prsQueueExceeded","LSS_smdiSocketError":"vCTS: LSS_smdiSocketError","LSS_socketError":"vCTS: LSS_socketError","LSS_softwareComponentDown":"vCTS: LSS_softwareComponentDown","LSS_tlsInitError":"vCTS: LSS_tlsInitError","LSS_usageOfSyncTable":"vCTS: LSS_usageOfSyncTable","LSS_utHttpProxyConnectionDown ":"vCTS: LSS_utHttpProxyConnectionDown ","LSS_wpifSocketError":"vCTS: LSS_wpifSocketError","LSS_acrTemporaryBufferOverload":"vCTS: LSS_acrTemporaryBufferOverload","LSS_adnsExtendedTTLcaching":"vCTS: LSS_adnsExtendedTTLcaching","LSS_adnsQueryFailureCaching":"vCTS: LSS_adnsQueryFailureCaching","LSS_adnsQueueCongestion":"vCTS: LSS_adnsQueueCongestion","LSS_asdaRequestQueue":"vCTS: LSS_asdaRequestQueue","LSS_capacityLicenseKeyExpiration":"vCTS: LSS_capacityLicenseKeyExpiration","LSS_capacityLicenseKeyNearExpiration":"vCTS: LSS_capacityLicenseKeyNearExpiration","LSS_capacityLicenseKeyValidationError":"vCTS: LSS_capacityLicenseKeyValidationError","LSS_cardConnectionLost":"vCTS: LSS_cardConnectionLost","LSS_cpiAlrmCritical":"vCTS: LSS_cpiAlrmCritical","LSS_cpiAlrmMajor":"vCTS: LSS_cpiAlrmMajor","LSS_cpiAlrmMinor":"vCTS: LSS_cpiAlrmMinor","LSS_cpiAlrmWarning":"vCTS: LSS_cpiAlrmWarning","LSS_cpiAsrtEsc":"vCTS: LSS_cpiAsrtEsc","LSS_cpiAsrtNonEsc":"vCTS: LSS_cpiAsrtNonEsc","LSS_cpiAsrtNonEscCritical":"vCTS: LSS_cpiAsrtNonEscCritical","LSS_cpiAsrtNonEscMajor":"vCTS: LSS_cpiAsrtNonEscMajor","LSS_cpiAsrtNonEscMinor":"vCTS: LSS_cpiAsrtNonEscMinor","LSS_cpiAudErrCount":"vCTS: LSS_cpiAudErrCount","LSS_cpiAudManAct":"vCTS: LSS_cpiAudManAct","LSS_cpiAudNewEvent":"vCTS: LSS_cpiAudNewEvent","LSS_cpiCompleteRateAlarm":"vCTS: LSS_cpiCompleteRateAlarm","LSS_cpiDropMGAllocConnReq":"vCTS: LSS_cpiDropMGAllocConnReq","LSS_cpiDropRateAlarm":"vCTS: LSS_cpiDropRateAlarm","LSS_cpiExceptionService":"vCTS: LSS_cpiExceptionService","LSS_cpiFailRateAlarm":"vCTS: LSS_cpiFailRateAlarm","LSS_cpiFailSCTPFastRetransIncr":"vCTS: LSS_cpiFailSCTPFastRetransIncr","LSS_cpiFailSCTPFastRetransRate":"vCTS: LSS_cpiFailSCTPFastRetransRate","LSS_cpiFailSCTPSRTT1Incr":"vCTS: LSS_cpiFailSCTPSRTT1Incr","LSS_cpiFailSCTPSRTT2Incr":"vCTS: LSS_cpiFailSCTPSRTT2Incr","LSS_cpiFailSCTPT3RetransIncr":"vCTS: LSS_cpiFailSCTPT3RetransIncr","LSS_cpiFailSCTPT3RetransRate":"vCTS: LSS_cpiFailSCTPT3RetransRate","LSS_cpiFileSysUsage":"vCTS: LSS_cpiFileSysUsage","LSS_cpiMemAllocFail":"vCTS: LSS_cpiMemAllocFail","LSS_cpiNumOfLICDRDel":"vCTS: LSS_cpiNumOfLICDRDel","LSS_cpiReinitServiceSelf":"vCTS: LSS_cpiReinitServiceSelf","LSS_cpiSIPRetransmitInvite":"vCTS: LSS_cpiSIPRetransmitInvite","LSS_cpiSIPRetransmitNonInvite":"vCTS: LSS_cpiSIPRetransmitNonInvite","LSS_cpiSS7DropSCTPPktsRcvd":"vCTS: LSS_cpiSS7DropSCTPPktsRcvd","LSS_cpiSS7FailSCTPFastRetransRate":"vCTS: LSS_cpiSS7FailSCTPFastRetransRate","LSS_cpiStabilityAlarm":"vCTS: LSS_cpiStabilityAlarm","LSS_cpuOverload":"vCTS: LSS_cpuOverload","LSS_databaseConnectionLost":"vCTS: LSS_databaseConnectionLost","LSS_databaseReplicationLinkDown":"vCTS: LSS_databaseReplicationLinkDown","LSS_databaseSizeExhausted":"vCTS: LSS_databaseSizeExhausted","LSS_dbHighCpuUtilization":"vCTS: LSS_dbHighCpuUtilization","LSS_dbOffline":"vCTS: LSS_dbOffline","LSS_dbStatusUnexpected":"vCTS: LSS_dbStatusUnexpected","LSS_degradedResource":"vCTS: LSS_degradedResource","LSS_degrow":"vCTS: LSS_degrow","LSS_deviceServerCxnLost":"vCTS: LSS_deviceServerCxnLost","LSS_diamLinkDown":"vCTS: LSS_diamLinkDown","LSS_diamMaxClientsExceeded":"vCTS: LSS_diamMaxClientsExceeded","LSS_dnsThreshold":"vCTS: LSS_dnsThreshold","LSS_ethernetError":"vCTS: LSS_ethernetError","LSS_ethernetLinkDown":"vCTS: LSS_ethernetLinkDown","LSS_externalConnectivity":"vCTS: LSS_externalConnectivity","LSS_featureLicenseExpiration":"vCTS: LSS_featureLicenseExpiration","LSS_featureLicenseKeyNearExpiration":"vCTS: LSS_featureLicenseKeyNearExpiration","LSS_featureLockValidationError":"vCTS: LSS_featureLockValidationError","LSS_fqdnError":"vCTS: LSS_fqdnError","LSS_fru":"vCTS: LSS_fru","LSS_gatewayCongestion":"vCTS: LSS_gatewayCongestion","LSS_gatewayForcedOOS":"vCTS: LSS_gatewayForcedOOS","LSS_gatewayProvisioningError":"vCTS: LSS_gatewayProvisioningError","LSS_gatewayUnreachable":"vCTS: LSS_gatewayUnreachable","LSS_gatewayUnregistered":"vCTS: LSS_gatewayUnregistered","LSS_globalParameterNotFound":"vCTS: LSS_globalParameterNotFound","LSS_grow":"vCTS: LSS_grow","LSS_h248MessageBufferDepletion":"vCTS: LSS_h248MessageBufferDepletion","LSS_hostDown":"vCTS: LSS_hostDown","LSS_hostReset":"vCTS: LSS_hostReset","LSS_invalidGateway":"vCTS: LSS_invalidGateway","LSS_iriLinkDown":"vCTS: LSS_iriLinkDown","LSS_ldapServerConnectionLost":"vCTS: LSS_ldapServerConnectionLost","LSS_llcDown":"vCTS: LSS_llcDown","LSS_logicalLinkDown":"vCTS: LSS_logicalLinkDown","LSS_logicalLinkNotFound":"vCTS: LSS_logicalLinkNotFound","LSS_logRotateThreshold":"vCTS: LSS_logRotateThreshold","LSS_memoryOverload":"vCTS: LSS_memoryOverload","LSS_nodeConfigFailure":"vCTS: LSS_nodeConfigFailure","LSS_nodeGroupOOS":"vCTS: LSS_nodeGroupOOS","LSS_nodeOOS":"vCTS: LSS_nodeOOS","LSS_nonCompliantFaultGroupMemberState":"vCTS: LSS_nonCompliantFaultGroupMemberState","LSS_nonCsAddrChannelDepletion":"vCTS: LSS_nonCsAddrChannelDepletion","LSS_numberOfTuplesInUse":"vCTS: LSS_numberOfTuplesInUse","LSS_osSecInfoModificationDetected":"vCTS: LSS_osSecInfoModificationDetected","LSS_osSecInformationMissing":"vCTS: LSS_osSecInformationMissing","LSS_osSecUnexpectedInformation":"vCTS: LSS_osSecUnexpectedInformation","LSS_pdnsMySqlReplication":"vCTS: LSS_pdnsMySqlReplication","LSS_pktCorruptionDetectedViaRCCLANCheck":"vCTS: LSS_pktCorruptionDetectedViaRCCLANCheck","LSS_platformCommandFailure":"vCTS: LSS_platformCommandFailure","LSS_pmDataNotCollected":"vCTS: LSS_pmDataNotCollected","LSS_processDown":"vCTS: LSS_processDown","LSS_processNotStarted":"vCTS: LSS_processNotStarted","LSS_provisioningInhibitedMode":"vCTS: LSS_provisioningInhibitedMode","LSS_rccInhibitedMode":"vCTS: LSS_rccInhibitedMode","LSS_remotedbLinkDown":"vCTS: LSS_remotedbLinkDown","LSS_remoteQueryServerFailure":"vCTS: LSS_remoteQueryServerFailure","LSS_restore":"vCTS: LSS_restore","LSS_serviceCFGDataTimestampError":"vCTS: LSS_serviceCFGDataTimestampError","LSS_serviceCommCxnLost":"vCTS: LSS_serviceCommCxnLost","LSS_serviceOnewayCommunication":"vCTS: LSS_serviceOnewayCommunication","LSS_sheddingOverload":"vCTS: LSS_sheddingOverload","LSS_simxml":"vCTS: LSS_simxml","LSS_sipLinkSetMaxQuarantineList":"vCTS: LSS_sipLinkSetMaxQuarantineList","LSS_sipLinkSetUnavailable":"vCTS: LSS_sipLinkSetUnavailable","LSS_sipLinkUnavailable":"vCTS: LSS_sipLinkUnavailable","LSS_softwareAllocatedResourceOverload":"vCTS: LSS_softwareAllocatedResourceOverload","LSS_softwareComponentStandbyNotReady":"vCTS: LSS_softwareComponentStandbyNotReady","LSS_softwareLicense":"vCTS: LSS_softwareLicense","LSS_svcdegrow":"vCTS: LSS_svcdegrow","LSS_svcgrow":"vCTS: LSS_svcgrow","LSS_swVersionMismatch":"vCTS: LSS_swVersionMismatch","LSS_tftpDownloadCorrupt":"vCTS: LSS_tftpDownloadCorrupt","LSS_timeStampValueOutOfSystemRange":"vCTS: LSS_timeStampValueOutOfSystemRange","LSS_transactionHandlerBlockDepletion":"vCTS: LSS_transactionHandlerBlockDepletion","LSS_upgrade":"vCTS: LSS_upgrade","SYS_BackupFailure":"vCTS: SYS_BackupFailure","SYS_Configuration":"vCTS: SYS_Configuration","SYS_COTRecordTransferFailure":"vCTS: SYS_COTRecordTransferFailure","SYS_CPM_USERDATA_INCONSITENCY":"vCTS: SYS_CPM_USERDATA_INCONSITENCY","SYS_CPM_USERDATA_RESTORED":"vCTS: SYS_CPM_USERDATA_RESTORED","SYS_EventQueueCapacity":"vCTS: SYS_EventQueueCapacity","SYS_ICMPFailure":"vCTS: SYS_ICMPFailure","SYS_IPsecConfig":"vCTS: SYS_IPsecConfig","SYS_LinkDown":"vCTS: SYS_LinkDown","SYS_NotifyDisabled":"vCTS: SYS_NotifyDisabled","SYS_NotifyLocked":"vCTS: SYS_NotifyLocked","SYS_NumTL1MeasThresh":"vCTS: SYS_NumTL1MeasThresh","SYS_RADIUS_TO_LDAP_FAILURE":"vCTS: SYS_RADIUS_TO_LDAP_FAILURE","SYS_ROOT_ACCESS_DENIED":"vCTS: SYS_ROOT_ACCESS_DENIED","SYS_ROOT_FTP_VIOLATION":"vCTS: SYS_ROOT_FTP_VIOLATION","SYS_ROOT_LOGIN_VIOLATION":"vCTS: SYS_ROOT_LOGIN_VIOLATION","SYS_ROOT_SSH_LOGIN_VIOLATION":"vCTS: SYS_ROOT_SSH_LOGIN_VIOLATION","SYS_SetupAAAFailure":"vCTS: SYS_SetupAAAFailure","SYS_SNETrapOverload":"vCTS: SYS_SNETrapOverload","SYS_SNMPAuthenticationFailure":"vCTS: SYS_SNMPAuthenticationFailure","SYS_SNMPFailure":"vCTS: SYS_SNMPFailure","SYS_SU_TO_ROOT_FAILURE":"vCTS: SYS_SU_TO_ROOT_FAILURE","SYS_SYSTEMTrapOverload":"vCTS: SYS_SYSTEMTrapOverload","SYS_ThresholdCrossed":"vCTS: SYS_ThresholdCrossed","SYS_UndiscoveredObject":"vCTS: SYS_UndiscoveredObject","SYS_WriteAAAFailure":"vCTS: SYS_WriteAAAFailure","jnxSpaceDiskUsageRising":"vDBE-EMS-Juniper: jnxSpaceDiskUsageRising","jnxSpaceDiskUsageRisingCleared":"vDBE-EMS-Juniper: jnxSpaceDiskUsageRisingCleared","jnxSpaceSwapUsageRising":"vDBE-EMS-Juniper: jnxSpaceSwapUsageRising","jnxSpaceSwapUsageRisingCleared":"vDBE-EMS-Juniper: jnxSpaceSwapUsageRisingCleared","jnxSpaceCPULARising":"vDBE-EMS-Juniper: jnxSpaceCPULARising","jnxSpaceCPULARisingCleared":"vDBE-EMS-Juniper: jnxSpaceCPULARisingCleared","jnxSpaceWebpProxyProcessDown":"vDBE-EMS-Juniper: jnxSpaceWebpProxyProcessDown","jnxSpaceWebpProxyProcessUp":"vDBE-EMS-Juniper: jnxSpaceWebpProxyProcessUp","jnxSpaceNMAProcessDown":"vDBE-EMS-Juniper: jnxSpaceNMAProcessDown","jnxSpaceNMAProcessUp":"vDBE-EMS-Juniper: jnxSpaceNMAProcessUp","jnxSpaceJbossProcessDown":"vDBE-EMS-Juniper: jnxSpaceJbossProcessDown","jnxSpaceJbossProcessUp":"vDBE-EMS-Juniper: jnxSpaceJbossProcessUp","jnxSpaceMysqlProcessDown":"vDBE-EMS-Juniper: jnxSpaceMysqlProcessDown","jnxSpaceMysqlProcessUp":"vDBE-EMS-Juniper: jnxSpaceMysqlProcessUp","jnxSpacePostgresqlProcessDown":"vDBE-EMS-Juniper: jnxSpacePostgresqlProcessDown","jnxSpacePostgresqlProcessUp":"vDBE-EMS-Juniper: jnxSpacePostgresqlProcessUp","jnxSpaceWatchdogStopped":"vDBE-EMS-Juniper: jnxSpaceWatchdogStopped","jnxSpaceWatchdogStarted":"vDBE-EMS-Juniper: jnxSpaceWatchdogStarted","jnxSpaceSNAProcessDown":"vDBE-EMS-Juniper: jnxSpaceSNAProcessDown","jnxSpaceSNAProcessUp":"vDBE-EMS-Juniper: jnxSpaceSNAProcessUp","jnxSpaceNodeDown":"vDBE-EMS-Juniper: jnxSpaceNodeDown","jnxSpaceNodeUp":"vDBE-EMS-Juniper: jnxSpaceNodeUp"," jnxSpaceNodeRemoval":"vDBE-EMS-Juniper: jnxSpaceNodeRemoval","jnxCmCfgChange":"vDBE-Juniper: jnxCmCfgChange","jnxCmRescueChange":"vDBE-Juniper: jnxCmRescueChange","jnxEventTrap":"vDBE-Juniper: jnxEventTrap","jnxJsFwAuthFailure":"vDBE-Juniper: jnxJsFwAuthFailure","jnxJsFwAuthServiceUp":"vDBE-Juniper: jnxJsFwAuthServiceUp","jnxJsFwAuthServiceDown":"vDBE-Juniper: jnxJsFwAuthServiceDown","jnxJsFwAuthCapacityExceeded":"vDBE-Juniper: jnxJsFwAuthCapacityExceeded","jnxJsIdpSignatureUpdate":"vDBE-Juniper: jnxJsIdpSignatureUpdate","jnxJsIdpAttackLog":"vDBE-Juniper: jnxJsIdpAttackLog","jnxJsSrcNatPoolThresholdStatus":"vDBE-Juniper: jnxJsSrcNatPoolThresholdStatus","jnxJsNatRuleThresholdStatus":"vDBE-Juniper: jnxJsNatRuleThresholdStatus","jnxJsScreenAttack":"vDBE-Juniper: jnxJsScreenAttack","jnxJsScreenCfgChange":"vDBE-Juniper: jnxJsScreenCfgChange","jnxJsAvPatternUpdateTrap":"vDBE-Juniper: jnxJsAvPatternUpdateTrap","jnxJsChassisClusterSwitchover":"vDBE-Juniper: jnxJsChassisClusterSwitchover","jnxJsChClusterIntfTrap":"vDBE-Juniper: jnxJsChClusterIntfTrap","jnxJsChClusterSpuMismatchTrap":"vDBE-Juniper: jnxJsChClusterSpuMismatchTrap","jnxJsChClusterWeightTrap":"vDBE-Juniper: jnxJsChClusterWeightTrap","jnxLicenseGraceExpired":"vDBE-Juniper: jnxLicenseGraceExpired","jnxLicenseGraceAboutToExpire":"vDBE-Juniper: jnxLicenseGraceAboutToExpire","jnxLicenseAboutToExpire":"vDBE-Juniper: jnxLicenseAboutToExpire","jnxLicenseInfringeCumulative":"vDBE-Juniper: jnxLicenseInfringeCumulative","jnxLicenseInfringeSingle":"vDBE-Juniper: jnxLicenseInfringeSingle","jnxNatAddrPoolThresholdStatus":"vDBE-Juniper: jnxNatAddrPoolThresholdStatus","jnxSyslogTrap":"vDBE-Juniper: jnxSyslogTrap","jnxAccessAuthServiceUp":"vDBE-Juniper: jnxAccessAuthServiceUp","jnxAccessAuthServiceDown":"vDBE-Juniper: jnxAccessAuthServiceDown","jnxAccessAuthServerDisabled":"vDBE-Juniper: jnxAccessAuthServerDisabled","jnxAccessAuthServerEnabled":"vDBE-Juniper: jnxAccessAuthServerEnabled","jnxAccessAuthAddressPoolHighThreshold":"vDBE-Juniper: jnxAccessAuthAddressPoolHighThreshold","jnxAccessAuthAddressPoolAbateThreshold":"vDBE-Juniper: jnxAccessAuthAddressPoolAbateThreshold","jnxAccessAuthAddressPoolOutOfAddresses":"vDBE-Juniper: jnxAccessAuthAddressPoolOutOfAddresses","jnxAccessAuthAddressPoolOutOfMemory":"vDBE-Juniper: jnxAccessAuthAddressPoolOutOfMemory","LEVEL_WARNING_CPU":"vMRF: LEVEL_WARNING_CPU","LEVEL_MAJOR_CPU":"vMRF: LEVEL_MAJOR_CPU","LEVEL_CRITICAL_CPU":"vMRF: LEVEL_CRITICAL_CPU","LEVEL_WARNING_MEM":"vMRF: LEVEL_WARNING_MEM","LEVEL_MAJOR_MEM":"vMRF: LEVEL_MAJOR_MEM","LEVEL_CRITICAL_MEM":"vMRF: LEVEL_CRITICAL_MEM","LEVEL_WARNING_DISK":"vMRF: LEVEL_WARNING_DISK","LEVEL_MAJOR_DISK":"vMRF: LEVEL_MAJOR_DISK","LEVEL_CRITICAL_DISK":"vMRF: LEVEL_CRITICAL_DISK","LEVEL_WARNING_RTPBANDWIDTH":"vMRF: LEVEL_WARNING_RTPBANDWIDTH","LEVEL_MAJOR_RTPBANDWIDTH":"vMRF: LEVEL_MAJOR_RTPBANDWIDTH","LEVEL_CRITICAL_RTPBANDWIDTH":"vMRF: LEVEL_CRITICAL_RTPBANDWIDTH","LEVEL_WARNING_RTPINPACKETLOSS":"vMRF: LEVEL_WARNING_RTPINPACKETLOSS","LEVEL_MAJOR_RTPINPACKETLOSS":"vMRF: LEVEL_MAJOR_RTPINPACKETLOSS","LEVEL_CRITICAL_RTPINPACKETLOSS":"vMRF: LEVEL_CRITICAL_RTPINPACKETLOSS","LEVEL_WARNING_RTPOUTPACKETLOSS":"vMRF: LEVEL_WARNING_RTPOUTPACKETLOSS","LEVEL_MAJOR_RTPOUTPACKETLOSS":"vMRF: LEVEL_MAJOR_RTPOUTPACKETLOSS","LEVEL_CRITICAL_RTPOUTPACKETLOSS":"vMRF: LEVEL_CRITICAL_RTPOUTPACKETLOSS","LEVEL_WARNING_TCPLOSTRETRANSMITRATE":"vMRF: LEVEL_WARNING_TCPLOSTRETRANSMITRATE","LEVEL_MAJOR_TCPLOSTRETRANSMITRATE":"vMRF: LEVEL_MAJOR_TCPLOSTRETRANSMITRATE","LEVEL_CRITICAL_TCPLOSTRETRANSMITRATE":"vMRF: LEVEL_CRITICAL_TCPLOSTRETRANSMITRATE","LEVEL_WARNING_TCPLOSSFAILURERATE":"vMRF: LEVEL_WARNING_TCPLOSSFAILURERATE","LEVEL_MAJOR_TCPLOSSFAILURERATE":"vMRF: LEVEL_MAJOR_TCPLOSSFAILURERATE","LEVEL_CRITICAL_TCPLOSSFAILURERATE":"vMRF: LEVEL_CRITICAL_TCPLOSSFAILURERATE","LEVEL_CRITICAL_RTPLINKDOWN":"vMRF: LEVEL_CRITICAL_RTPLINKDOWN","TARGET_REACHABLE":"vMRF: TARGET_REACHABLE","PUBLICATION_ERROR":"vMRF: PUBLICATION_ERROR","REMOTE_SERVER_SYNCHRONIZATION_ERROR":"vMRF: REMOTE_SERVER_SYNCHRONIZATION_ERROR","TRANSCODER_TOOL_EXEC_ERROR":"vMRF: TRANSCODER_TOOL_EXEC_ERROR","CLIENT_SYNCHRONIZATION_ERROR":"vMRF: CLIENT_SYNCHRONIZATION_ERROR","CLUSTER_UNREACHABLE":"vMRF: CLUSTER_UNREACHABLE","REMOTE_NODE_OFFLINE":"vMRF: REMOTE_NODE_OFFLINE","IPADDR_STOPPED":"vMRF: IPADDR_STOPPED","MRFC_STOPPED":"vMRF: MRFC_STOPPED","MNGT_STOPPED":"vMRF: MNGT_STOPPED","IPADDR_STARTED":"vMRF: IPADDR_STARTED","MRFC_STARTED":"vMRF: MRFC_STARTED","MNGT_STARTED":"vMRF: MNGT_STARTED","VOLATTACH_FAILED":"vMRF: VOLATTACH_FAILED","VOLDETACH_FAILED":"vMRF: VOLDETACH_FAILED","VOLDEL":"vMRF: VOLDEL","VOLCORRUPT":"vMRF: VOLCORRUPT","VOLFOREIGN":"vMRF: VOLFOREIGN","ACTIVE_ALARM_TABLE_PURGE":"vMRF: ACTIVE_ALARM_TABLE_PURGE","GENERIC_FORMER_STATELESS":"vMRF: GENERIC_FORMER_STATELESS","GENERIC_FORMER_STATEFUL":"vMRF: GENERIC_FORMER_STATEFUL","NO_MORE_ALARM_DESCRIPTION":"vMRF: NO_MORE_ALARM_DESCRIPTION","SERVICE_PROCESS_ENDS":"vMRF: SERVICE_PROCESS_ENDS","DEFENSE_STOPPED":"vMRF: DEFENSE_STOPPED","USER_ACCOUNT_LOCKED":"vMRF: USER_ACCOUNT_LOCKED","CONNECTION_SQL_NOT_ESTABLISHED":"vMRF: CONNECTION_SQL_NOT_ESTABLISHED","FALSE_ALARM":"vMRF: FALSE_ALARM","RADIUS SERVER HS":"vMRF: RADIUS SERVER HS","DRM_PACKAGER_IS_NOT_AVAILABLE":"vMRF: DRM_PACKAGER_IS_NOT_AVAILABLE","DRM_LICENSE_BUILDER_IS_NOT_AVAILABLE":"vMRF: DRM_LICENSE_BUILDER_IS_NOT_AVAILABLE","ERROR_WHILE_CREATING_PLAYLIST_MANAGER_FILE":"vMRF: ERROR_WHILE_CREATING_PLAYLIST_MANAGER_FILE","ERROR_WHILE_BUILDING_PLAYLIST_XML_REPRESENTATION":"vMRF: ERROR_WHILE_BUILDING_PLAYLIST_XML_REPRESENTATION","PLAYLIST_FILE_TO_PUBLISH_NOT_FOUND":"vMRF: PLAYLIST_FILE_TO_PUBLISH_NOT_FOUND","COULD_NOT_CONNECT_TO_PVNS_SERVER":"vMRF: COULD_NOT_CONNECT_TO_PVNS_SERVER","HTTP_OR_HTTPCLIENT_EXCEPTION_HAS_OCCURRED":"vMRF: HTTP_OR_HTTPCLIENT_EXCEPTION_HAS_OCCURRED","I/O_ERROR_WHILE_PUBLISHING_PLAYLIST_FILE":"vMRF: I/O_ERROR_WHILE_PUBLISHING_PLAYLIST_FILE","ERROR_WHILE_REQUESTING_SDP_FILE":"vMRF: ERROR_WHILE_REQUESTING_SDP_FILE","ERROR_WHILE_REQUESTING_SDP_FILE:_REMOTE_EXCEPTION":"vMRF: ERROR_WHILE_REQUESTING_SDP_FILE:_REMOTE_EXCEPTION","NO_STREAMING_RESOURCES":"vMRF: NO_STREAMING_RESOURCES","NO_STREAMING_MODULES_REGISTERED":"vMRF: NO_STREAMING_MODULES_REGISTERED","SM_FAILURE":"vMRF: SM_FAILURE","MISSING_FILE_OR_ENCODER":"vMRF: MISSING_FILE_OR_ENCODER","INVALID_RANGE":"vMRF: INVALID_RANGE","THRESHOLD_VALUE_EXCEEDED":"vMRF: THRESHOLD_VALUE_EXCEEDED","TICKET_QUEUE_FULL":"vMRF: TICKET_QUEUE_FULL","PARSING_INITIALIZATION_EXCEPTION":"vMRF: PARSING_INITIALIZATION_EXCEPTION","CUSTOMERCARE_INTERNAL_EXCEPTION":"vMRF: CUSTOMERCARE_INTERNAL_EXCEPTION","PARSING_EXCEPTION":"vMRF: PARSING_EXCEPTION","I/O_PROBLEM":"vMRF: I/O_PROBLEM","INEXISTENT_FILE_OR_FOLDER":"vMRF: INEXISTENT_FILE_OR_FOLDER","FILE_NOT_IN_XML_FORMAT":"vMRF: FILE_NOT_IN_XML_FORMAT","SERVICE_STATE_CHANGE":"vMRF: SERVICE_STATE_CHANGE","MONITORED_FILE_UPDATE_ERROR":"vMRF: MONITORED_FILE_UPDATE_ERROR","MONITORED_RPM_DELETED_ERROR":"vMRF: MONITORED_RPM_DELETED_ERROR","MONITORED_RPM_ADDED_ERROR":"vMRF: MONITORED_RPM_ADDED_ERROR","MONITORED_CHMOD_ERROR":"vMRF: MONITORED_CHMOD_ERROR","MONITORED_CHOWN_ERROR":"vMRF: MONITORED_CHOWN_ERROR","PASSWD_ROOT_ERROR":"vMRF: PASSWD_ROOT_ERROR","PASSWD_ERROR":"vMRF: PASSWD_ERROR","ROOTKIT_ERROR":"vMRF: ROOTKIT_ERROR","STARTUP_ERR_UNDEFINED_PORT":"vMRF: STARTUP_ERR_UNDEFINED_PORT","STARTUP_ERR_FAIL_FIND_HOSTNAME":"vMRF: STARTUP_ERR_FAIL_FIND_HOSTNAME","STARTUP_ERR_CF_MISSING":"vMRF: STARTUP_ERR_CF_MISSING","STARTUP_ERR_FAILED_TO_OPEN_CF":"vMRF: STARTUP_ERR_FAILED_TO_OPEN_CF","STARTUP_ERR_FAILED_TO_BIND_PORT":"vMRF: STARTUP_ERR_FAILED_TO_BIND_PORT","STARTUP_ERR_CFG_UNIT_MISSING":"vMRF: STARTUP_ERR_CFG_UNIT_MISSING","MCTR_INVALID_CODEC_NAME":"vMRF: MCTR_INVALID_CODEC_NAME","RTSP_SERVER_FAILURE":"vMRF: RTSP_SERVER_FAILURE","RTSP_SERVER_QUARANTINE":"vMRF: RTSP_SERVER_QUARANTINE","TRANSCODING_FAILURE":"vMRF: TRANSCODING_FAILURE","FILE_CACHE_FAILURE":"vMRF: FILE_CACHE_FAILURE","STARTUP_ERROR_INITIALIZATION_FAILED":"vMRF: STARTUP_ERROR_INITIALIZATION_FAILED","CONFERENCE_FAILURE":"vMRF: CONFERENCE_FAILURE","PLC_DEGRADATION_LOW":"vMRF: PLC_DEGRADATION_LOW","PLC_DEGRADATION_MEDIUM":"vMRF: PLC_DEGRADATION_MEDIUM","PLC_DEGRADATION_HIGH":"vMRF: PLC_DEGRADATION_HIGH","AUDIO_RESYNCH_LOW":"vMRF: AUDIO_RESYNCH_LOW","AUDIO_RESYNCH_MEDIUM":"vMRF: AUDIO_RESYNCH_MEDIUM","AUDIO_RESYNCH_HIGH":"vMRF: AUDIO_RESYNCH_HIGH","VIDEO_RESYNCH_LOW":"vMRF: VIDEO_RESYNCH_LOW","VIDEO_RESYNCH_MEDIUM":"vMRF: VIDEO_RESYNCH_MEDIUM","VIDEO_RESYNCH_HIGH":"vMRF: VIDEO_RESYNCH_HIGH","PLAY_FAILURES_LOW":"vMRF: PLAY_FAILURES_LOW","PLAY_FAILURES_MEDIUM":"vMRF: PLAY_FAILURES_MEDIUM","PLAY_FAILURES_HIGH":"vMRF: PLAY_FAILURES_HIGH","NOT_ENOUGH_FREE_CONFEREE":"vMRF: NOT_ENOUGH_FREE_CONFEREE","NO_LONGER_FREE_CONFERENCE_ROOM":"vMRF: NO_LONGER_FREE_CONFERENCE_ROOM","STARTUP_ERROR_FAIL_TO_READ_CF":"vMRF: STARTUP_ERROR_FAIL_TO_READ_CF","STARTUP_ERROR_SIP_ADAPTER_INIT":"vMRF: STARTUP_ERROR_SIP_ADAPTER_INIT","STARTUP_ERROR_MONITORING_INIT":"vMRF: STARTUP_ERROR_MONITORING_INIT","REGISTER_ERROR_FAILURE":"vMRF: REGISTER_ERROR_FAILURE","DRI_ERROR_FAILURE":"vMRF: DRI_ERROR_FAILURE","STARTUP_ERROR_STACK_CONFIGURATION":"vMRF: STARTUP_ERROR_STACK_CONFIGURATION","STARTUP_ERROR_CONF":"vMRF: STARTUP_ERROR_CONF","STARTUP_ERROR_UNDEFINED_PORT":"vMRF: STARTUP_ERROR_UNDEFINED_PORT","HOST_REMOVED":"vMRF: HOST_REMOVED","INTERCEPT_THRESHOLD_NB_DIALOG_ALLOCATED":"vMRF: INTERCEPT_THRESHOLD_NB_DIALOG_ALLOCATED","STARTUP_ERROR_STACK_CONF":"vMRF: STARTUP_ERROR_STACK_CONF","STARTUP_ERROR_CONFIGURATION":"vMRF: STARTUP_ERROR_CONFIGURATION","STARTUP_ERROR_FAILED_TO_RETRIEVE_HOSTNAME":"vMRF: STARTUP_ERROR_FAILED_TO_RETRIEVE_HOSTNAME","LEVEL_WARNING_CALL":"vMRF: LEVEL_WARNING_CALL","LEVEL_ALARM_MINOR_CALL":"vMRF: LEVEL_ALARM_MINOR_CALL","LEVEL_ALARM_MAJOR_CALL":"vMRF: LEVEL_ALARM_MAJOR_CALL","LEVEL_ALARM_MRFPoutOfService":"vMRF: LEVEL_ALARM_MRFPoutOfService","MRFP_CALL_REJECTED_Threshold #1":"vMRF: MRFP_CALL_REJECTED_Threshold #1","MRFP_CALL_REJECTED_Threshold #2":"vMRF: MRFP_CALL_REJECTED_Threshold #2","MRFP_CALL_REJECTED_Threshold #3":"vMRF: MRFP_CALL_REJECTED_Threshold #3","MRFP_CALL_RETRIED_Threshold #1":"vMRF: MRFP_CALL_RETRIED_Threshold #1","MRFP_CALL_RETRIED_Threshold #2":"vMRF: MRFP_CALL_RETRIED_Threshold #2","MRFP_CALL_RETRIED_Threshold #3":"vMRF: MRFP_CALL_RETRIED_Threshold #3","STARTUP_PUB_FILE_NOT_PRESENT":"vMRF: STARTUP_PUB_FILE_NOT_PRESENT","STARTUP_INF_FILE_NOT_PRESENT":"vMRF: STARTUP_INF_FILE_NOT_PRESENT","STARTUP_LIC_FILE_NOT_PRESENT":"vMRF: STARTUP_LIC_FILE_NOT_PRESENT","GENERIC_HARDWARE_PROBLEM":"vMRF: GENERIC_HARDWARE_PROBLEM","HARD_DRIVE_PROBLEM":"vMRF: HARD_DRIVE_PROBLEM","NETWORK_LINK_PROBLEM":"vMRF: NETWORK_LINK_PROBLEM","POWER_SUPPLY_PROBLEM":"vMRF: POWER_SUPPLY_PROBLEM","SMART_HARD_DRIVE_PROBLEM":"vMRF: SMART_HARD_DRIVE_PROBLEM","STARTUP_ERROR":"vMRF: STARTUP_ERROR","RESOURCE_NOT_ACCESSIBLE":"vMRF: RESOURCE_NOT_ACCESSIBLE","RESOURCE_ACCESSIBLE":"vMRF: RESOURCE_ACCESSIBLE","RESOURCE_FULL":"vMRF: RESOURCE_FULL","DRI_ALARM":"vMRF: DRI_ALARM","REGISTER_ERROR_CCF":"vMRF: REGISTER_ERROR_CCF","REGISTER_ERROR_EXTERNAL":"vMRF: REGISTER_ERROR_EXTERNAL","TIMEOUT_ERROR":"vMRF: TIMEOUT_ERROR","VXML_ERROR":"vMRF: VXML_ERROR","A Network Element is no longer available due to a connection failure":"vMVM: A Network Element is no longer available due to a connection failure","A MetaSphere server is reporting a fault with the configuration of its connection to MetaView":"vMVM: A MetaSphere server is reporting a fault with the configuration of its connection to MetaView","Configured OBS IPs don't match available OBS nodes. Configured but unavailable nodes include: []. Real nodes not configured include: []":"vMVM: Configured OBS IPs don't match available OBS nodes. Configured but unavailable nodes include: []. Real nodes not configured include: []","Service Assurance Server cannot be contacted":"vMVM: Service Assurance Server cannot be contacted","The primary MetaView Director has lost contact with the backup MetaView Director":"vMVM: The primary MetaView Director has lost contact with the backup MetaView Director","The active server has lost connection to the standby":"vMVM: The active server has lost connection to the standby","CrashCounter":"vprobes-vBE-Processing: CrashCounter","IsAlive":"vprobes-vBE-Processing: IsAlive","SwRestart":"vprobes-vLB: SwRestart","Repeated exceptions have occurred.":"vSBC-Metaswitch: Repeated exceptions have occurred.","A licensing limit is close to capacity.":"vSBC-Metaswitch: A licensing limit is close to capacity.","One or more feature packs have been breached.":"vSBC-Metaswitch: One or more feature packs have been breached.","The grace period on this Perimeta system will expire in less than 48 hours, after which calls will not be processed.":"vSBC-Metaswitch: The grace period on this Perimeta system will expire in less than 48 hours, after which calls will not be processed.","The grace period on this Perimeta system will expire in less than 7 days, after which calls will not be processed.":"vSBC-Metaswitch: The grace period on this Perimeta system will expire in less than 7 days, after which calls will not be processed.","The license on this Perimeta system will expire in less than 4 weeks.":"vSBC-Metaswitch: The license on this Perimeta system will expire in less than 4 weeks.","A Perimeta blade has become unlicensed.":"vSBC-Metaswitch: A Perimeta blade has become unlicensed.","Perimeta is licensed with a bypass certificate, which is valid until the time displayed.":"vSBC-Metaswitch: Perimeta is licensed with a bypass certificate, which is valid until the time displayed.","The number of licensed instances exceeded a threshold of the licensed limit.":"vSBC-Metaswitch: The number of licensed instances exceeded a threshold of the licensed limit.","The software token on the primary Distributed Capacity Manager will expire on the displayed date.":"vSBC-Metaswitch: The software token on the primary Distributed Capacity Manager will expire on the displayed date.","A capacity limit on the license installed on this Perimeta system does not match the largest limit across all systems in the deployment.":"vSBC-Metaswitch: A capacity limit on the license installed on this Perimeta system does not match the largest limit across all systems in the deployment.","An adjacency has voice quality alerts.":"vSBC-Metaswitch: An adjacency has voice quality alerts.","The number of calls being audited is congested.":"vSBC-Metaswitch: The number of calls being audited is congested.","Session Controller is rejecting calls because there is no valid active call policy set configured.":"vSBC-Metaswitch: Session Controller is rejecting calls because there is no valid active call policy set configured.","A call policy set is inactive because it has been misconfigured.":"vSBC-Metaswitch: A call policy set is inactive because it has been misconfigured.","Session Controller is inactive and rejecting calls.":"vSBC-Metaswitch: Session Controller is inactive and rejecting calls.","Sources have breached minor or major blacklist thresholds.":"vSBC-Metaswitch: Sources have breached minor or major blacklist thresholds.","Sources are blacklisted.":"vSBC-Metaswitch: Sources are blacklisted.","The blacklisting configuration will change as a result of upgrade and some configured blacklists or alerts will no longer be applied.":"vSBC-Metaswitch: The blacklisting configuration will change as a result of upgrade and some configured blacklists or alerts will no longer be applied.","A large number of downgrades and bans have been created as a result of blacklisting.":"vSBC-Metaswitch: A large number of downgrades and bans have been created as a result of blacklisting.","Session Controller is unable to track further sources for blacklisting.":"vSBC-Metaswitch: Session Controller is unable to track further sources for blacklisting.","A software protection switch was triggered.":"vSBC-Metaswitch: A software protection switch was triggered.","A disk area on a processor blade is nearly full.":"vSBC-Metaswitch: A disk area on a processor blade is nearly full.","Memory use is very high.":"vSBC-Metaswitch: Memory use is very high.","The primary processor-blade has lost contact with the backup.":"vSBC-Metaswitch: The primary processor-blade has lost contact with the backup.","An efix or patch has been applied to this system containing diagnostic versions of some software libraries.":"vSBC-Metaswitch: An efix or patch has been applied to this system containing diagnostic versions of some software libraries.","A software protection switch (SPS) was triggered. Call and registration state was lost.":"vSBC-Metaswitch: A software protection switch (SPS) was triggered. Call and registration state was lost.","The Ethernet Heartbeat between primary and backup processors has failed.":"vSBC-Metaswitch: The Ethernet Heartbeat between primary and backup processors has failed.","The Backplane Heartbeat between primary and backup processors has failed.":"vSBC-Metaswitch: The Backplane Heartbeat between primary and backup processors has failed.","A disk area on a processor blade reported an error.":"vSBC-Metaswitch: A disk area on a processor blade reported an error.","The system is upgrading.":"vSBC-Metaswitch: The system is upgrading.","An error with NTP functionality has been detected.":"vSBC-Metaswitch: An error with NTP functionality has been detected.","One or more users are locked out of the system.":"vSBC-Metaswitch: One or more users are locked out of the system.","The Craft Terminal user FTP directory on a processor blade is nearly full.":"vSBC-Metaswitch: The Craft Terminal user FTP directory on a processor blade is nearly full.","A scheduled configuration snapshot has failed.":"vSBC-Metaswitch: A scheduled configuration snapshot has failed.","The Session Controller is stopping as a result of administrator action.":"vSBC-Metaswitch: The Session Controller is stopping as a result of administrator action.","A Session Controller processor blade is stopping as a result of administrator action.":"vSBC-Metaswitch: A Session Controller processor blade is stopping as a result of administrator action.","An object could not be activated because its service address does not exist or is not fully specified.":"vSBC-Metaswitch: An object could not be activated because its service address does not exist or is not fully specified.","The hardware on a processor does not meet minimum requirements.":"vSBC-Metaswitch: The hardware on a processor does not meet minimum requirements.","The hardware expectations of the two processors are not the same.":"vSBC-Metaswitch: The hardware expectations of the two processors are not the same.","The read speed of the main hard disk on a processor blade is too slow.":"vSBC-Metaswitch: The read speed of the main hard disk on a processor blade is too slow.","An error has occurred reading from the hard disk on a processor blade.":"vSBC-Metaswitch: An error has occurred reading from the hard disk on a processor blade.","Backup and primary processor-blades have an inconsistent system role.":"vSBC-Metaswitch: Backup and primary processor-blades have an inconsistent system role.","Event: The system encountered a critical error and had to restart.":"vSBC-Metaswitch: Event: The system encountered a critical error and had to restart.","Event: A RADIUS server failed to respond to an authentication request.":"vSBC-Metaswitch: Event: A RADIUS server failed to respond to an authentication request.","Event: All configured RADIUS servers failed to respond to authentication requests.":"vSBC-Metaswitch: Event: All configured RADIUS servers failed to respond to authentication requests.","Event: The number of CPUs has changed.":"vSBC-Metaswitch: Event: The number of CPUs has changed.","Event: A user has been automatically deleted":"vSBC-Metaswitch: Event: A user has been automatically deleted","The primary processor blade has lost management connectivity":"vSBC-Metaswitch: The primary processor blade has lost management connectivity","Event: A processor blade is running with DPDK mode disabled when DPDK mode is,expected.":"vSBC-Metaswitch: Event: A processor blade is running with DPDK mode disabled when DPDK mode is,expected.","Event: Processor blade %1 is running with DPDK mode disabled when DPDK mode may be possible.":"vSBC-Metaswitch: Event: Processor blade %1 is running with DPDK mode disabled when DPDK mode may be possible.","Perimeta is attempting to resend cached billing records.":"vSBC-Metaswitch: Perimeta is attempting to resend cached billing records.","The Rf billing cache is full.":"vSBC-Metaswitch: The Rf billing cache is full.","The inbound call queue is congested.":"vSBC-Metaswitch: The inbound call queue is congested.","A configured realm group contains realms that are not available to the SBC.":"vSBC-Metaswitch: A configured realm group contains realms that are not available to the SBC.","An allowed MSC configuration is not connected to any physical MSCs.":"vSBC-Metaswitch: An allowed MSC configuration is not connected to any physical MSCs.","A SIP Peer has stopped responding to SIP OPTIONS pings. MSW: 20160303: Alarm text is changed in v3.9 software to read: \\"An adjacency has lost connectivity, according to SIP OPTIONS pings\\"":"vSBC-Metaswitch: A SIP Peer has stopped responding to SIP OPTIONS pings. MSW: 20160303: Alarm text is changed in v3.9 software to read: \\"An adjacency has lost connectivity, according to SIP OPTIONS pings\\"","An adjacency has failed as the listen socket could not be created. Check for configuration mismatches with the associated service interface.":"vSBC-Metaswitch: An adjacency has failed as the listen socket could not be created. Check for configuration mismatches with the associated service interface.","No suitable DNS records were found for a peer group's DNS hostname.":"vSBC-Metaswitch: No suitable DNS records were found for a peer group's DNS hostname.","One or more SIP peers from a peer group have stopped responding to SIP OPTIONS pings":"vSBC-Metaswitch: One or more SIP peers from a peer group have stopped responding to SIP OPTIONS pings","An adjacency has failed as its service network does not match the service network on its associated peer group.":"vSBC-Metaswitch: An adjacency has failed as its service network does not match the service network on its associated peer group.","An adjacency has failed as its configured TLS certificate could not be found.":"vSBC-Metaswitch: An adjacency has failed as its configured TLS certificate could not be found.","The caching function has not been initialized properly.":"vSBC-Metaswitch: The caching function has not been initialized properly.","An adjacency has failed as the listen socket could not be created.":"vSBC-Metaswitch: An adjacency has failed as the listen socket could not be created.","An adjacency is congested and may be rejecting calls.":"vSBC-Metaswitch: An adjacency is congested and may be rejecting calls.","There is an issue with a Diameter peer.":"vSBC-Metaswitch: There is an issue with a Diameter peer.","A realm is no longer reachable via any configured peers.":"vSBC-Metaswitch: A realm is no longer reachable via any configured peers.","An FQDN for a configured Diameter peer has failed to resolve to a valid IP address.":"vSBC-Metaswitch: An FQDN for a configured Diameter peer has failed to resolve to a valid IP address.","One or more peers resolved from a DNS lookup of a configured peer's address cannot be contacted":"vSBC-Metaswitch: One or more peers resolved from a DNS lookup of a configured peer's address cannot be contacted","An interface ARP or NDP probe has failed.":"vSBC-Metaswitch: An interface ARP or NDP probe has failed.","One or more IP address conflicts have been detected on service interfaces with zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.":"vSBC-Metaswitch: One or more IP address conflicts have been detected on service interfaces with zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.","One or more IP address conflicts have been detected on service interfaces with non-zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.":"vSBC-Metaswitch: One or more IP address conflicts have been detected on service interfaces with non-zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.","An interface device is running below the expected speed. This alarm was originally triggered by a probe failure on a service interface.":"vSBC-Metaswitch: An interface device is running below the expected speed. This alarm was originally triggered by a probe failure on a service interface.","An interface device is running above the expected speed.":"vSBC-Metaswitch: An interface device is running above the expected speed.","An IP address conflict has been detected on a management interface.":"vSBC-Metaswitch: An IP address conflict has been detected on a management interface.","An interface ICMP probe has failed.":"vSBC-Metaswitch: An interface ICMP probe has failed.","A High-Availability link has detected a connectivity issue.":"vSBC-Metaswitch: A High-Availability link has detected a connectivity issue.","An HA-link device is being reported as underspeed.":"vSBC-Metaswitch: An HA-link device is being reported as underspeed.","An IP address conflict has been detected on a replication interface.":"vSBC-Metaswitch: An IP address conflict has been detected on a replication interface.","The Session Controller has started.":"vSBC-Metaswitch: The Session Controller has started.","A statistic exceeded its configured thresholds.":"vSBC-Metaswitch: A statistic exceeded its configured thresholds.","One or more statistic has not been retrieved at least 3 times in a row.":"vSBC-Metaswitch: One or more statistic has not been retrieved at least 3 times in a row.","A Refresh Alarms request was triggered. Alarms not re-raised will be cleared in 5 minutes.":"vSBC-Metaswitch: A Refresh Alarms request was triggered. Alarms not re-raised will be cleared in 5 minutes.","A statistic has exceeded its configured thresholds.":"vSBC-Metaswitch: A statistic has exceeded its configured thresholds.","A Fallback Operation will soon be started":"vSBG: A Fallback Operation will soon be started","BRM, Auto Export Backup Failed":"vSBG: BRM, Auto Export Backup Failed","BRM, Scheduled Backup Failed":"vSBG: BRM, Scheduled Backup Failed","COM SA, AMF Component Cleanup Failed":"vSBG: COM SA, AMF Component Cleanup Failed","COM SA, AMF Component Instantiation Failed":"vSBG: COM SA, AMF Component Instantiation Failed","COM SA, AMF SI Unassigned":"vSBG: COM SA, AMF SI Unassigned","COM SA, CLM Cluster Node Unavailable":"vSBG: COM SA, CLM Cluster Node Unavailable","COM SA, MDF Detected Model Error":"vSBG: COM SA, MDF Detected Model Error","COM SA, Proxy Status of a Component Changed to Unproxied":"vSBG: COM SA, Proxy Status of a Component Changed to Unproxied","File Management, Number of Files in FileGroup Exceeded":"vSBG: File Management, Number of Files in FileGroup Exceeded","File Management, Max Size in FileGroup Exceeded":"vSBG: File Management, Max Size in FileGroup Exceeded","LOTC Disk Replication Communication":"vSBG: LOTC Disk Replication Communication","LOTC Disk Replication Consistency":"vSBG: LOTC Disk Replication Consistency","LOTC Disk Usage":"vSBG: LOTC Disk Usage","LOTC memory Usage":"vSBG: LOTC memory Usage","LOTC Time Synchronization":"vSBG: LOTC Time Synchronization","SBG, BGF Control Link Down":"vSBG: SBG, BGF Control Link Down","SBG, BGF Control Link Disabled":"vSBG: SBG, BGF Control Link Disabled","SBG, BGF Control Link Enabled":"vSBG: SBG, BGF Control Link Enabled","SBG, BGF Control Link Remote Locked":"vSBG: SBG, BGF Control Link Remote Locked","SBG, Charging Data Storage Maximum Records Reached":"vSBG: SBG, Charging Data Storage Maximum Records Reached","SBG, Charging Server Rejects Charging Data":"vSBG: SBG, Charging Server Rejects Charging Data","SBG, Excessive Packet Rate Detected ":"vSBG: SBG, Excessive Packet Rate Detected ","SBG, High Amount of Malformed Packets Received":"vSBG: SBG, High Amount of Malformed Packets Received","SBG, High Amount of STUN Packets Detected":"vSBG: SBG, High Amount of STUN Packets Detected","SBG, High Amount of TCP SYN Packets Received":"vSBG: SBG, High Amount of TCP SYN Packets Received","SBG, High Amount of UDP Packets Received ":"vSBG: SBG, High Amount of UDP Packets Received ","SBG, IP Address Blocked Due to Excessive Packet Rate":"vSBG: SBG, IP Address Blocked Due to Excessive Packet Rate","SBG, Lost Connectivity to Diameter Server":"vSBG: SBG, Lost Connectivity to Diameter Server","SBG, Mated Pair out of Service":"vSBG: SBG, Mated Pair out of Service","SBG, Network Unavailable for Media Handling":"vSBG: SBG, Network Unavailable for Media Handling","SBG, Non-emergency Call Released to Free Resources for Emergency Call":"vSBG: SBG, Non-emergency Call Released to Free Resources for Emergency Call","SBG, Not Enough Disk Space for Storing Charging Data":"vSBG: SBG, Not Enough Disk Space for Storing Charging Data","SBG, Payload Mated Pair Failure":"vSBG: SBG, Payload Mated Pair Failure","SBG, Payload Processor Failure":"vSBG: SBG, Payload Processor Failure","SBG, Processor Overloaded":"vSBG: SBG, Processor Overloaded","SBG, Registered User Set in Quarantine":"vSBG: SBG, Registered User Set in Quarantine","SBG, Registration Contacts Exceed Configured Threshold":"vSBG: SBG, Registration Contacts Exceed Configured Threshold","SBG, Sequential Restart Initiated":"vSBG: SBG, Sequential Restart Initiated","SBG, SIP Abuse Detected":"vSBG: SBG, SIP Abuse Detected","SBG, SIP Network Locked":"vSBG: SBG, SIP Network Locked","SBG, SIP Next Hop Reachable":"vSBG: SBG, SIP Next Hop Reachable","SBG, SIP Next Hop Unreachable":"vSBG: SBG, SIP Next Hop Unreachable","SBG, SIP Request Rejected by Network Throttling":"vSBG: SBG, SIP Request Rejected by Network Throttling","SBG, TLS Certificate Imported":"vSBG: SBG, TLS Certificate Imported","SBG, Trace Recording Session Number Limit Reached":"vSBG: SBG, Trace Recording Session Number Limit Reached","SBG, Trace Session Deactivated":"vSBG: SBG, Trace Session Deactivated","SBG, Trace Session Times Out":"vSBG: SBG, Trace Session Times Out","SBG, Unknown Media Type or Payload Type":"vSBG: SBG, Unknown Media Type or Payload Type"} +# +# if action.test.override is true, then any action will be marked as test=true (even if incoming action request had test=false); otherwise, test flag will be unchanged on the action request +action.test.override=false +# if action.insert.test.event is true, then insert event even if the action is set to test +action.insert.test.event=false +CLDS_SERVICE_CACHE_MAX_SECONDS=14400 +# +globalProps={"collector": {"topicPublishes": {"DCAE-COLLECTOR-UCSNMP": "DCAE-COLLECTOR-UCSNMP", "GFP-IP-SNMP-TRAPS" : "GFP-IP-SNMP-TRAPS" } }, "string_match": { "topicPublishes": { "DCAE-CL-EVENT": "DCAE-CL-EVENT" }, "aaiMatchingFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "ProvStatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "aaiSendFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "Provstatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "eventSourceType": { "f5BigIP": "f5BigIP", "vSBG_Alarms": "vSBG_Alarms", "vCTS_Alarms": "vCTS_Alarms" }, "eventSeverity": { "NORMAL": "NORMAL", "not-NORMAL": "not-NORMAL", "WARNING": "WARNING", "MINOR": "MINOR", "MAJOR": "MAJOR", "CRITICAL": "CRITICAL" }, "timeWindow": 0, "ageLimit": 1600, "outputEventName": { "": "", "OnSet": "OnSet", "Abatement": "Abatement" }, "createClosedLoopEventId": { "Initial": "Initial", "Close": "Close" } }, "global": { "service": { "": "", "vUSP": "vUSP", "vSCP": "vSCP", "vProbes": "vProbes" } }, "policy": { "timeout": 5, "recipe": { "": "", "restart": "Restart", "rebuild": "Rebuild", "migrate": "Migrate" }, "maxRetries": "3", "retryTimeLimit": 180, "resource": { "vCTS": "vCTS", "v3CDB": "v3CDB", "vUDR": "vUDR", "vCOM": "vCOM", "vRAR": "vRAR", "vLCS": "vLCS", "vUDR-BE": "vUDR-BE", "vDBE": "vDBE" }, "parentPolicyConditions": { "Failure_Retries": "Failure: Max Retries Exceeded", "Failure_Timeout": "Failure: Time Limit Exceeded", "Failure_Exception": "Failure: Exception", "Failure": "Failure: Other", "Success": "Success" } }, "shared": { "byService": { "": { "vf": { }, "vfc": { }, "location": { }, "alarmCondition": { } }, "vSCP": { "vf": { "frwl_scp": "FW" }, "vfc": { "FW": "FW" }, "location": { "AKRNOHAH": "Akron", "ALLNTXSA": "Allen-2" }, "alarmCondition": { "authenticationFailure": "authenticationFailure", "bigipActive": "bigipActive", "bigipActiveActive": "bigipActiveActive", "bigipAgentRestart": "bigipAgentRestart", "bigipAgentShutdown": "bigipAgentShutdown", "bigipAgentStart": "bigipAgentStart", "bigipAggrReaperStateChange": "bigipAggrReaperStateChange", "bigipAomCpuTempTooHigh": "bigipAomCpuTempTooHigh", "bigipARPConflict": "bigipARPConflict", "bigipAsmBruteForceAttackDetected": "bigipAsmBruteForceAttackDetected", "bigipAsmDosAttackDetected": "bigipAsmDosAttackDetected", "bigipAsmFtpRequestBlocked": "bigipAsmFtpRequestBlocked", "bigipAsmFtpRequestViolation": "bigipAsmFtpRequestViolation", "bigipAsmRequestBlocked": "bigipAsmRequestBlocked", "bigipAsmRequestViolation": "bigipAsmRequestViolation", "bigipAsmSmtpRequestBlocked": "bigipAsmSmtpRequestBlocked", "bigipAsmSmtpRequestViolation": "bigipAsmSmtpRequestViolation", "bigipAuthFailed": "bigipAuthFailed", "bigipAvrAlertsMetricSmtp": "bigipAvrAlertsMetricSmtp", "bigipAvrAlertsMetricSnmp": "bigipAvrAlertsMetricSnmp", "bigipBladeNoPower": "bigipBladeNoPower", "bigipBladeOffline": "bigipBladeOffline", "bigipBladeTempHigh": "bigipBladeTempHigh", "bigipChassisFanBad": "bigipChassisFanBad", "bigipChassisPowerSupplyBad": "bigipChassisPowerSupplyBad", "bigipChassisTempHigh": "bigipChassisTempHigh", "bigipChmandAlertFanTrayBad": "bigipChmandAlertFanTrayBad", "bigipClusterdNoResponse": "bigipClusterdNoResponse", "bigipClusterPrimaryChanged": "bigipClusterPrimaryChanged", "bigipCompLimitExceeded": "bigipCompLimitExceeded", "bigipConfigLoaded": "bigipConfigLoaded", "bigipCpuFanSpeedBad": "bigipCpuFanSpeedBad", "bigipCpuFanSpeedLow": "bigipCpuFanSpeedLow", "bigipCpuTempHigh": "bigipCpuTempHigh", "bigipDiskPartitionGrowth": "bigipDiskPartitionGrowth", "bigipDiskPartitionWarn": "bigipDiskPartitionWarn", "bigipDnsRequestRateLimiterEngaged": "bigipDnsRequestRateLimiterEngaged", "bigipDosAttackStart": "bigipDosAttackStart", "bigipDosAttackStop": "bigipDosAttackStop", "bigipExternalLinkChange": "bigipExternalLinkChange", "bigipFeatureFailed": "bigipFeatureFailed", "bigipFeatureOnline": "bigipFeatureOnline", "bigipFipsDeviceError": "bigipFipsDeviceError", "bigipGtmAppAvail": "bigipGtmAppAvail", "bigipGtmAppNotAvail": "bigipGtmAppNotAvail", "bigipGtmAppObjAvail": "bigipGtmAppObjAvail", "bigipGtmAppObjNotAvail": "bigipGtmAppObjNotAvail", "bigipGtmBig3dSslCertExpired": "bigipGtmBig3dSslCertExpired", "bigipGtmBig3dSslCertWillExpire": "bigipGtmBig3dSslCertWillExpire", "bigipGtmBoxAvail": "bigipGtmBoxAvail", "bigipGtmBoxNotAvail": "bigipGtmBoxNotAvail", "bigipGtmDcAvail": "bigipGtmDcAvail", "bigipGtmDcDisabled": "bigipGtmDcDisabled", "bigipGtmDcEnabled": "bigipGtmDcEnabled", "bigipGtmDcNotAvail": "bigipGtmDcNotAvail", "bigipGtmJoinedGroup": "bigipGtmJoinedGroup", "bigipGtmKeyGenerationExpiration": "bigipGtmKeyGenerationExpiration", "bigipGtmKeyGenerationRollover": "bigipGtmKeyGenerationRollover", "bigipGtmLeftGroup": "bigipGtmLeftGroup", "bigipGtmLinkAvail": "bigipGtmLinkAvail", "bigipGtmLinkDisabled": "bigipGtmLinkDisabled", "bigipGtmLinkEnabled": "bigipGtmLinkEnabled", "bigipGtmLinkNotAvail": "bigipGtmLinkNotAvail", "bigipGtmPoolAvail": "bigipGtmPoolAvail", "bigipGtmPoolDisabled": "bigipGtmPoolDisabled", "bigipGtmPoolEnabled": "bigipGtmPoolEnabled", "bigipGtmPoolMbrAvail": "bigipGtmPoolMbrAvail", "bigipGtmPoolMbrDisabled": "bigipGtmPoolMbrDisabled", "bigipGtmPoolMbrEnabled": "bigipGtmPoolMbrEnabled", "bigipGtmPoolMbrNotAvail": "bigipGtmPoolMbrNotAvail", "bigipGtmPoolNotAvail": "bigipGtmPoolNotAvail", "bigipGtmProberPoolDisabled": "bigipGtmProberPoolDisabled", "bigipGtmProberPoolEnabled": "bigipGtmProberPoolEnabled", "bigipGtmProberPoolMbrDisabled": "bigipGtmProberPoolMbrDisabled", "bigipGtmProberPoolMbrEnabled": "bigipGtmProberPoolMbrEnabled", "bigipGtmProberPoolMbrStatusChange": "bigipGtmProberPoolMbrStatusChange", "bigipGtmProberPoolMbrStatusChangeReason": "bigipGtmProberPoolMbrStatusChangeReason", "bigipGtmProberPoolStatusChange": "bigipGtmProberPoolStatusChange", "bigipGtmProberPoolStatusChangeReason": "bigipGtmProberPoolStatusChangeReason", "bigipGtmRequestRateLimiterEngaged": "bigipGtmRequestRateLimiterEngaged", "bigipGtmServerAvail": "bigipGtmServerAvail", "bigipGtmServerDisabled": "bigipGtmServerDisabled", "bigipGtmServerEnabled": "bigipGtmServerEnabled", "bigipGtmServerNotAvail": "bigipGtmServerNotAvail", "bigipGtmSslCertExpired": "bigipGtmSslCertExpired", "bigipGtmSslCertWillExpire": "bigipGtmSslCertWillExpire", "bigipGtmVsAvail": "bigipGtmVsAvail", "bigipGtmVsDisabled": "bigipGtmVsDisabled", "bigipGtmVsEnabled": "bigipGtmVsEnabled", "bigipGtmVsNotAvail": "bigipGtmVsNotAvail", "bigipGtmWideIpAvail": "bigipGtmWideIpAvail", "bigipGtmWideIpDisabled": "bigipGtmWideIpDisabled", "bigipGtmWideIpEnabled": "bigipGtmWideIpEnabled", "bigipGtmWideIpNotAvail": "bigipGtmWideIpNotAvail", "bigipHardDiskFailure": "bigipHardDiskFailure", "bigipInetPortExhaustion": "bigipInetPortExhaustion", "bigipLibhalBladePoweredOff": "bigipLibhalBladePoweredOff", "bigipLibhalDiskBayRemoved": "bigipLibhalDiskBayRemoved", "bigipLibhalSensorAlarmCritical": "bigipLibhalSensorAlarmCritical", "bigipLibhalSsdLogicalDiskRemoved": "bigipLibhalSsdLogicalDiskRemoved", "bigipLibhalSsdPhysicalDiskRemoved": "bigipLibhalSsdPhysicalDiskRemoved", "bigipLicenseExpired": "bigipLicenseExpired", "bigipLicenseFailed": "bigipLicenseFailed", "bigipLogAlert": "bigipLogAlert", "bigipLogCrit": "bigipLogCrit", "bigipLogEmerg": "bigipLogEmerg", "bigipLogErr": "bigipLogErr", "bigipLogWarning": "bigipLogWarning", "bigipLtmVsAvail": "bigipLtmVsAvail", "bigipLtmVsDisabled": "bigipLtmVsDisabled", "bigipLtmVsEnabled": "bigipLtmVsEnabled", "bigipLtmVsUnavail": "bigipLtmVsUnavail", "bigipMemberRate": "bigipMemberRate", "bigipNetLinkDown": "bigipNetLinkDown", "bigipNodeDown": "bigipNodeDown", "bigipNodeRate": "bigipNodeRate", "bigipNodeUp": "bigipNodeUp", "bigipPacketRejected": "bigipPacketRejected", "bigipPsAbsent": "bigipPsAbsent", "bigipPsPowerOff": "bigipPsPowerOff", "bigipPsPowerOn": "bigipPsPowerOn", "bigipRaidDiskFailure": "bigipRaidDiskFailure", "bigipServiceDown": "bigipServiceDown", "bigipServiceUp": "bigipServiceUp", "bigipSsdMwiNearThreshold": "bigipSsdMwiNearThreshold", "bigipSsdMwiReachedThreshold": "bigipSsdMwiReachedThreshold", "bigipSslLimitExceeded": "bigipSslLimitExceeded", "bigipStandby": "bigipStandby", "bigipStandByFail": "bigipStandByFail", "bigipSystemCheckAlertCurrentHigh": "bigipSystemCheckAlertCurrentHigh", "bigipSystemCheckAlertCurrentLow": "bigipSystemCheckAlertCurrentLow", "bigipSystemCheckAlertFanSpeedLow": "bigipSystemCheckAlertFanSpeedLow", "bigipSystemCheckAlertMilliVoltageHigh": "bigipSystemCheckAlertMilliVoltageHigh", "bigipSystemCheckAlertMilliVoltageLow": "bigipSystemCheckAlertMilliVoltageLow", "bigipSystemCheckAlertPowerHigh": "bigipSystemCheckAlertPowerHigh", "bigipSystemCheckAlertPowerLow": "bigipSystemCheckAlertPowerLow", "bigipSystemCheckAlertTempHigh": "bigipSystemCheckAlertTempHigh", "bigipSystemCheckAlertVoltageHigh": "bigipSystemCheckAlertVoltageHigh", "bigipSystemCheckAlertVoltageLow": "bigipSystemCheckAlertVoltageLow", "bigipSystemShutdown": "bigipSystemShutdown", "bigipTamdAlert": "bigipTamdAlert", "bigipTrafficGroupActivate": "bigipTrafficGroupActivate", "bigipTrafficGroupActive": "bigipTrafficGroupActive", "bigipTrafficGroupDeactivate": "bigipTrafficGroupDeactivate", "bigipTrafficGroupForcedOffline": "bigipTrafficGroupForcedOffline", "bigipTrafficGroupOffline": "bigipTrafficGroupOffline", "bigipTrafficGroupStandby": "bigipTrafficGroupStandby", "bigipUnsolicitedRepliesExceededThreshold": "bigipUnsolicitedRepliesExceededThreshold", "bigipUpdateError": "bigipUpdateError", "bigipUpdatePriority": "bigipUpdatePriority", "bigipUpdateServer": "bigipUpdateServer", "bigipVcmpAlertsVcmpHBDetected": "bigipVcmpAlertsVcmpHBDetected", "bigipVcmpAlertsVcmpHBLost": "bigipVcmpAlertsVcmpHBLost", "bigipVcmpAlertsVcmpPowerOff": "bigipVcmpAlertsVcmpPowerOff", "bigipVcmpAlertsVcmpPowerOn": "bigipVcmpAlertsVcmpPowerOn", "bigipVirtualRate": "bigipVirtualRate", "coldStart": "coldStart", "emASMSigInstallComplete": "emASMSigInstallComplete", "emASMSigInstallFailed": "emASMSigInstallFailed", "emASMSigUpdateAvailable": "emASMSigUpdateAvailable", "emASMSigUpdateFailed": "emASMSigUpdateFailed", "emCertificateExpiration": "emCertificateExpiration", "emCpuUsage": "emCpuUsage", "emDeviceActiveMode": "emDeviceActiveMode", "emDeviceClockSkew": "emDeviceClockSkew", "emDeviceConfigSettingChanged": "emDeviceConfigSettingChanged", "emDeviceConfigSync": "emDeviceConfigSync", "emDeviceForcedOfflineMode": "emDeviceForcedOfflineMode", "emDeviceImpaired": "emDeviceImpaired", "emDeviceOfflineMode": "emDeviceOfflineMode", "emDeviceStandbyMode": "emDeviceStandbyMode", "emDeviceUnreachable": "emDeviceUnreachable", "emDiskUsage": "emDiskUsage", "emGatherServiceContractFailure": "emGatherServiceContractFailure", "emHaSyncFailed": "emHaSyncFailed", "emHotfixInstallComplete": "emHotfixInstallComplete", "emHotfixInstallFailed": "emHotfixInstallFailed", "emMemoryUsage": "emMemoryUsage", "emPerformanceStorageCap": "emPerformanceStorageCap", "emPerformanceStorageDays": "emPerformanceStorageDays", "emPerformanceThreshold": "emPerformanceThreshold", "emRaidDriveFailureDetected": "emRaidDriveFailureDetected", "emRaidDriveRebuildComplete": "emRaidDriveRebuildComplete", "emSchedBackupFailed": "emSchedBackupFailed", "emScheduledArchiveFailed": "emScheduledArchiveFailed", "emServiceContractExpiry": "emServiceContractExpiry", "emSoftwareInstallComplete": "emSoftwareInstallComplete", "emSoftwareInstallFailed": "emSoftwareInstallFailed", "emStatsCollectionRateCap": "emStatsCollectionRateCap", "emStatsDBConnectivityLost": "emStatsDBConnectivityLost", "emStatsDBConnectivityRestored": "emStatsDBConnectivityRestored", "fallingAlarm": "fallingAlarm", "ipv6IfStateChange": "ipv6IfStateChange", "linkDown": "linkDown", "linkUp": "linkUp", "mteEventSetFailure": "mteEventSetFailure", "mteTriggerFailure": "mteTriggerFailure", "mteTriggerFalling": "mteTriggerFalling", "mteTriggerFired": "mteTriggerFired", "mteTriggerRising": "mteTriggerRising", "netSnmpExampleHeartbeatNotification": "netSnmpExampleHeartbeatNotification", "newRoot": "newRoot", "nsNotifyRestart": "nsNotifyRestart", "nsNotifyShutdown": "nsNotifyShutdown", "nsNotifyStart": "nsNotifyStart", "risingAlarm": "risingAlarm", "schedActionFailure": "schedActionFailure", "smScriptAbort": "smScriptAbort", "smScriptException": "smScriptException", "smScriptResult": "smScriptResult", "topologyChange": "topologyChange", "ucdShutdown": "ucdShutdown", "ucdStart": "ucdStart", "warmStart": "warmStart" } }, "vUSP": { "vf": { "ctsf-xxx": "vCTS" }, "vfc": { "vCTS - CFED": "vCTS - CFED", "vCTS - Config": "vCTS - Config", "vCTS - DFED": "vCTS - DFED", "vCTS - TAFE-fsd": "vCTS - TAFE-fsd", "vCTS - GLS": "vCTS - GLS", "vCTS - XXX": "vCTS - XXX", "vCTS - Management Interface": "vCTS - Management Interface", "vCTS - SPFE-pfe": "vCTS - SPFE-pfe", "vCTS - DNS": "vCTS - DNS", "vCTS - SPFE-spd": "vCTS - SPFE-spd", "vCTS - SPFE-spt": "vCTS - SPFE-spt", "vCTS - TAFE-tas": "vCTS - TAFE-tas" }, "location": { "SNDGCA06": "San Diego(core site) A06", "SNDGCA64": "San Diego(core site) A64", "SNANTXCA": "San Antonio(core site)", "KSCYMO09": "Kansas City(core site)", "kings_mountain": "Kings Mountain(AMG)", "Secaucus": "Secaucus(AMG)", "lisle": "Lisle(AMG)", "concord": "Concord(AMG)", "houston": "Houston(AMG)", "akron": "Akron(AMG)" }, "alarmCondition": { "acrTemporaryBufferOverload": "acrTemporaryBufferOverload", "adnsExtendedTTLcaching": "adnsExtendedTTLcaching", "adnsQueryFailureCaching": "adnsQueryFailureCaching", "adnsQueueCongestion": "adnsQueueCongestion", "asdaCommunicationFailure": "asdaCommunicationFailure", "asdaRequestQueue": "asdaRequestQueue", "capacityLicenseKeyExpiration": "capacityLicenseKeyExpiration", "capacityLicenseKeyNearExpiration": "capacityLicenseKeyNearExpiration", "capacityLicenseKeyValidationError": "capacityLicenseKeyValidationError", "cardConnectionLost": "cardConnectionLost", "ccdbCommunicationFailure": "ccdbCommunicationFailure", "cpiAlrmCritical": "cpiAlrmCritical", "cpiAlrmMajor": "cpiAlrmMajor", "cpiAlrmMinor": "cpiAlrmMinor", "cpiAlrmWarning": "cpiAlrmWarning", "cpiAsrtEsc": "cpiAsrtEsc", "cpiAsrtNonEsc": "cpiAsrtNonEsc", "cpiAsrtNonEscCritical": "cpiAsrtNonEscCritical", "cpiAsrtNonEscMajor": "cpiAsrtNonEscMajor", "cpiAsrtNonEscMinor": "cpiAsrtNonEscMinor", "cpiAudErrCount": "cpiAudErrCount", "cpiAudManAct": "cpiAudManAct", "cpiAudNewEvent": "cpiAudNewEvent", "cpiCompleteRateAlarm": "cpiCompleteRateAlarm", "cpiCTS3xxFailRate": "cpiCTS3xxFailRate", "cpiCTS4xxFailRate": "cpiCTS4xxFailRate", "cpiCTS5xxFailRate": "cpiCTS5xxFailRate", "cpiCTS6xxFailRate": "cpiCTS6xxFailRate", "cpiCTSSIPRetransmitInvite": "cpiCTSSIPRetransmitInvite", "cpiCTSSIPRetransmitNonInvite": "cpiCTSSIPRetransmitNonInvite", "cpiDropMGAllocConnReq": "cpiDropMGAllocConnReq", "cpiDropRateAlarm": "cpiDropRateAlarm", "cpiExceptionService": "cpiExceptionService", "cpiFailRateAlarm": "cpiFailRateAlarm", "cpiFailSCTPFastRetransIncr": "cpiFailSCTPFastRetransIncr", "cpiFailSCTPFastRetransRate": "cpiFailSCTPFastRetransRate", "cpiFailSCTPSRTT1Incr": "cpiFailSCTPSRTT1Incr", "cpiFailSCTPSRTT2Incr": "cpiFailSCTPSRTT2Incr", "cpiFailSCTPT3RetransIncr": "cpiFailSCTPT3RetransIncr", "cpiFailSCTPT3RetransRate": "cpiFailSCTPT3RetransRate", "cpiFileSysUsage": "cpiFileSysUsage", "cpiMemAllocFail": "cpiMemAllocFail", "cpiNumOfLICDRDel": "cpiNumOfLICDRDel", "cpiReinitServiceSelf": "cpiReinitServiceSelf", "cpiSIPRetransmitInvite": "cpiSIPRetransmitInvite", "cpiSIPRetransmitNonInvite": "cpiSIPRetransmitNonInvite", "cpiSS7DropSCTPPktsRcvd": "cpiSS7DropSCTPPktsRcvd", "cpiSS7FailSCTPFastRetransRate": "cpiSS7FailSCTPFastRetransRate", "cpiStabilityAlarm": "cpiStabilityAlarm", "cpuOverload": "cpuOverload", "databaseConnectionLost": "databaseConnectionLost", "databaseReplicationLinkDown": "databaseReplicationLinkDown", "databaseSizeExhausted": "databaseSizeExhausted", "dbHighCpuUtilization": "dbHighCpuUtilization", "dbOffline": "dbOffline", "dbStatusUnexpected": "dbStatusUnexpected", "degradedResource": "degradedResource", "degrow": "degrow", "deviceServerCxnLost": "deviceServerCxnLost", "diamLinkDown": "diamLinkDown", "diamMaxClientsExceeded": "diamMaxClientsExceeded", "dnsThreshold": "dnsThreshold", "ethernetError": "ethernetError", "ethernetLinkDown": "ethernetLinkDown", "externalConnectivity": "externalConnectivity", "featureLicenseExpiration": "featureLicenseExpiration", "featureLicenseKeyNearExpiration": "featureLicenseKeyNearExpiration", "featureLockValidationError": "featureLockValidationError", "fqdnError": "fqdnError", "fru": "fru", "gatewayCongestion": "gatewayCongestion", "gatewayForcedOOS": "gatewayForcedOOS", "gatewayProvisioningError": "gatewayProvisioningError", "gatewayUnreachable": "gatewayUnreachable", "gatewayUnregistered": "gatewayUnregistered", "globalParameterNotFound": "globalParameterNotFound", "glsInvalidCellId": "glsInvalidCellId", "glsServerUnavailable": "glsServerUnavailable", "grow": "grow", "h248MessageBufferDepletion": "h248MessageBufferDepletion", "hlrSyncConnection": "hlrSyncConnection", "hlrSyncQueue": "hlrSyncQueue", "hostDown": "hostDown", "hostReset": "hostReset", "invalidGateway": "invalidGateway", "iriLinkDown": "iriLinkDown", "ldapServerConnectionLost": "ldapServerConnectionLost", "lispBufferFullExternalLIG": "lispBufferFullExternalLIG", "llcDown": "llcDown", "logicalLinkDown": "logicalLinkDown", "logicalLinkNotFound": "logicalLinkNotFound", "logRotateThreshold": "logRotateThreshold", "memoryOverload": "memoryOverload", "nodeConfigFailure": "nodeConfigFailure", "nodeGroupOOS": "nodeGroupOOS", "nodeOOS": "nodeOOS", "nonCompliantFaultGroupMemberState": "nonCompliantFaultGroupMemberState", "nonCsAddrChannelDepletion": "nonCsAddrChannelDepletion", "numberOfTuplesInUse": "numberOfTuplesInUse", "osSecInfoModificationDetected": "osSecInfoModificationDetected", "osSecInformationMissing": "osSecInformationMissing", "osSecUnexpectedInformation": "osSecUnexpectedInformation", "pdnsMySqlReplication": "pdnsMySqlReplication", "pktCorruptionDetectedViaRCCLANCheck": "pktCorruptionDetectedViaRCCLANCheck", "platformCommandFailure": "platformCommandFailure", "pmDataNotCollected": "pmDataNotCollected", "prdbConnectWithAlternateFailure": "prdbConnectWithAlternateFailure", "prdbSyncDataToAlternateFailure": "prdbSyncDataToAlternateFailure", "preAllocatedResourceOverload": "preAllocatedResourceOverload", "prifSocketError": "prifSocketError", "processDown": "processDown", "processNotStarted": "processNotStarted", "provisioningInhibitedMode": "provisioningInhibitedMode", "prsCallInstanceExceeded": "prsCallInstanceExceeded", "prsCpuOverload": "prsCpuOverload", "prsDatabaseMigrationFailure": "prsDatabaseMigrationFailure", "prsFailureToConnectWithPRDB": "prsFailureToConnectWithPRDB", "prsQueueExceeded": "prsQueueExceeded", "rccInhibitedMode": "rccInhibitedMode", "remotedbLinkDown": "remotedbLinkDown", "remoteQueryServerFailure": "remoteQueryServerFailure", "restore": "restore", "serviceCFGDataTimestampError": "serviceCFGDataTimestampError", "serviceCommCxnLost": "serviceCommCxnLost", "serviceOnewayCommunication": "serviceOnewayCommunication", "sheddingOverload": "sheddingOverload", "simxml": "simxml", "sipLinkSetMaxQuarantineList": "sipLinkSetMaxQuarantineList", "sipLinkSetUnavailable": "sipLinkSetUnavailable", "sipLinkUnavailable": "sipLinkUnavailable", "smdiSocketError": "smdiSocketError", "socketError": "socketError", "softwareAllocatedResourceOverload": "softwareAllocatedResourceOverload", "softwareComponentDown": "softwareComponentDown", "softwareComponentStandbyNotReady": "softwareComponentStandbyNotReady", "softwareLicense": "softwareLicense", "svcdegrow": "svcdegrow", "svcgrow": "svcgrow", "swVersionMismatch": "swVersionMismatch", "tftpDownloadCorrupt": "tftpDownloadCorrupt", "timeStampValueOutOfSystemRange": "timeStampValueOutOfSystemRange", "tlsInitError": "tlsInitError", "transactionHandlerBlockDepletion": "transactionHandlerBlockDepletion", "upgrade": "upgrade", "usageOfSyncTable": "usageOfSyncTable", "utHttpProxyConnectionDown": "utHttpProxyConnectionDown", "wpifSocketError": "wpifSocketError", "BackupFailure": "BackupFailure", "Configuration": "Configuration", "COTRecordTransferFailure": "COTRecordTransferFailure", "CPMUSERDATAINCONSITENCY": "CPMUSERDATAINCONSITENCY", "CPMUSERDATARESTORED": "CPMUSERDATARESTORED", "EventQueueCapacity": "EventQueueCapacity", "ICMPFailure": "ICMPFailure", "IPsecConfig": "IPsecConfig", "LinkDown": "LinkDown", "NotifyDisabled": "NotifyDisabled", "NotifyLocked": "NotifyLocked", "NumTL1MeasThresh": "NumTL1MeasThresh", "RADIUSTOLDAPFAILURE": "RADIUSTOLDAPFAILURE", "ROOTACCESSDENIED": "ROOTACCESSDENIED", "ROOTFTPVIOLATION": "ROOTFTPVIOLATION", "ROOTLOGINVIOLATION": "ROOTLOGINVIOLATION", "ROOTSSHLOGINVIOLATION": "ROOTSSHLOGINVIOLATION", "SetupAAAFailure": "SetupAAAFailure", "SNETrapOverload": "SNETrapOverload", "SNMPAuthenticationFailure": "SNMPAuthenticationFailure", "SNMPFailure": "SNMPFailure", "SUTOROOTFAILURE": "SUTOROOTFAILURE", "SYSTEMTrapOverload": "SYSTEMTrapOverload", "ThresholdCrossed": "ThresholdCrossed", "UndiscoveredObject": "UndiscoveredObject", "WriteAAAFailure": "WriteAAAFailure" } }, "Trinity": { "vf": { "aSBG": "aSBG", "nSBG": "nSBG", "tSBG": "tSBG" }, "vfc": { "pld": "PL - Payload Processor", "scr": "SC - System Controller" }, "location": { "SNDGCA64": "San Diego SAN3", "ALPRGAED": "Alpharetta PDK1", "LSLEILAA":"Lisle DPA3" }, "alarmCondition": { "A+Fallback+Operation+will+soon+be+started":"A Fallback Operation will soon be started", "BRM%2C+Auto+Export+Backup+Failed":"BRM, Auto Export Backup Failed", "BRM%2C+Scheduled+Backup+Failed":"BRM, Scheduled Backup Failed", "COM+SA%2C+AMF+Component+Cleanup+Failed":"COM SA, AMF Component Cleanup Failed", "COM+SA%2C+AMF+Component+Instantiation+Failed":"COM SA, AMF Component Instantiation Failed", "COM+SA%2C+AMF+SI+Unassigned":"COM SA, AMF SI Unassigned", "COM+SA%2C+CLM+Cluster+Node+Unavailable":"COM SA, CLM Cluster Node Unavailable", "COM+SA%2C+MDF+Detected+Model+Error":"COM SA, MDF Detected Model Error", "COM+SA%2C+Proxy+Status+of+a+Component+Changed+to+Unproxied":"COM SA, Proxy Status of a Component Changed to Unproxied", "File+Management%2C+Number+of+Files+in+FileGroup+Exceeded":"File Management, Number of Files in FileGroup Exceeded", "File+Management%2C+Max+Size+in+FileGroup+Exceeded":"File Management, Max Size in FileGroup Exceeded", "LOTC+Disk+Replication+Communication":"LOTC Disk Replication Communication", "LOTC+Disk+Replication+Consistency":"LOTC Disk Replication Consistency", "LOTC+Disk+Usage":"LOTC Disk Usage", "LOTC+memory+Usage":"LOTC memory Usage", "LOTC+Time+Synchronization":"LOTC Time Synchronization", "SBG%2C+BGF+Control+Link+Down":"SBG, BGF Control Link Down", "SBG%2C+BGF+Control+Link+Disabled":"SBG, BGF Control Link Disabled", "SBG%2C+BGF+Control+Link+Enabled":"SBG, BGF Control Link Enabled", "SBG%2C+BGF+Control+Link+Remote+Locked":"SBG, BGF Control Link Remote Locked", "SBG%2C+Charging+Data+Storage+Maximum+Records+Reached":"SBG, Charging Data Storage Maximum Records Reached", "SBG%2C+Charging+Server+Rejects+Charging+Data":"SBG, Charging Server Rejects Charging Data", "SBG%2C+Excessive+Packet+Rate+Detected+":"SBG, Excessive Packet Rate Detected ", "SBG%2C+High+Amount+of+Malformed+Packets+Received":"SBG, High Amount of Malformed Packets Received", "SBG%2C+High+Amount+of+STUN+Packets+Detected":"SBG, High Amount of STUN Packets Detected", "SBG%2C+High+Amount+of+TCP+SYN+Packets+Received":"SBG, High Amount of TCP SYN Packets Received", "SBG%2C+High+Amount+of+UDP+Packets+Received+":"SBG, High Amount of UDP Packets Received ", "SBG%2C+IP+Address+Blocked+Due+to+Excessive+Packet+Rate":"SBG, IP Address Blocked Due to Excessive Packet Rate", "SBG%2C+Lost+Connectivity+to+Diameter+Server":"SBG, Lost Connectivity to Diameter Server", "SBG%2C+Mated+Pair+out+of+Service":"SBG, Mated Pair out of Service", "SBG%2C+Network+Unavailable+for+Media+Handling":"SBG, Network Unavailable for Media Handling", "SBG%2C+Non-emergency+Call+Released+to+Free+Resources+for+Emergency+Call":"SBG, Non-emergency Call Released to Free Resources for Emergency Call", "SBG%2C+Not+Enough+Disk+Space+for+Storing+Charging+Data":"SBG, Not Enough Disk Space for Storing Charging Data", "SBG%2C+Payload+Mated+Pair+Failure":"SBG, Payload Mated Pair Failure", "SBG%2C+Payload+Processor+Failure":"SBG, Payload Processor Failure", "SBG%2C+Processor+Overloaded":"SBG, Processor Overloaded", "SBG%2C+Registered+User+Set+in+Quarantine":"SBG, Registered User Set in Quarantine", "SBG%2C+Registration+Contacts+Exceed+Configured+Threshold":"SBG, Registration Contacts Exceed Configured Threshold", "SBG%2C+Sequential+Restart+Initiated":"SBG, Sequential Restart Initiated", "SBG%2C+SIP+Abuse+Detected":"SBG, SIP Abuse Detected", "SBG%2C+SIP+Network+Locked":"SBG, SIP Network Locked", "SBG%2C+SIP+Next+Hop+Reachable":"SBG, SIP Next Hop Reachable", "SBG%2C+SIP+Next+Hop+Unreachable":"SBG, SIP Next Hop Unreachable", "SBG%2C+SIP+Request+Rejected+by+Network+Throttling":"SBG, SIP Request Rejected by Network Throttling", "SBG%2C+TLS+Certificate+Imported":"SBG, TLS Certificate Imported", "SBG%2C+Trace+Recording+Session+Number+Limit+Reached":"SBG, Trace Recording Session Number Limit Reached", "SBG%2C+Trace+Session+Deactivated":"SBG, Trace Session Deactivated", "SBG%2C+Trace+Session+Times+Out":"SBG, Trace Session Times Out", "SBG%2C+Unknown+Media+Type+or+Payload+Type":"SBG, Unknown Media Type or Payload Type" } }, "vProbes": { "vf": { }, "vfc": { }, "location": { }, "alarmCondition": { } } } } } +globalPropsPartial={"collector": {"topicPublishes": {"DCAE-COLLECTOR-UCSNMP": "DCAE-COLLECTOR-UCSNMP", "GFP-IP--SNMP-TRAPS" : "GFP-IP--SNMP-TRAPS" } }, "string_match": { "topicPublishes": { "DCAE-CL-EVENT": "DCAE-CL-EVENT" }, "aaiMatchingFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "ProvStatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "aaiSendFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "Provstatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "eventSourceType": { "f5BigIP": "f5BigIP", "vSBG_Alarms": "vSBG_Alarms", "vCTS_Alarms": "vCTS_Alarms" }, "eventSeverity": { "NORMAL": "NORMAL", "not-NORMAL": "not-NORMAL", "WARNING": "WARNING", "MINOR": "MINOR", "MAJOR": "MAJOR", "CRITICAL": "CRITICAL" }, "timeWindow": 0, "ageLimit": 1600, "outputEventName": { "": "", "OnSet": "OnSet", "Abatement": "Abatement" }, "createClosedLoopEventId": { "Initial": "Initial", "Close": "Close" } }, "global": { "service": { "": "", "vUSP": "vUSP", "vSCP": "vSCP", "vProbes": "vProbes" } }, "policy": { "timeout": 5, "recipe": { "": "", "restart": "Restart", "rebuild": "Rebuild", "migrate": "Migrate" }, "maxRetries": "3", "retryTimeLimit": 180, "resource": { "vCTS": "vCTS", "v3CDB": "v3CDB", "vUDR": "vUDR", "vCOM": "vCOM", "vRAR": "vRAR", "vLCS": "vLCS", "vUDR-BE": "vUDR-BE", "vDBE": "vDBE" }, "parentPolicyConditions": { "Failure_Retries": "Failure: Max Retries Exceeded", "Failure_Timeout": "Failure: Time Limit Exceeded", "Failure_Exception": "Failure: Exception", "Failure": "Failure: Other", "Success": "Success" } } } +globalPropsTest={"collector": {"topicPublishes": {"DCAE-COLLECTOR-UCSNMP": "DCAE-COLLECTOR-UCSNMP", "GFP-IP--SNMP-TRAPS" : "GFP-IP--SNMP-TRAPS" } }, "string_match": { "topicPublishes": { "DCAE-CL-EVENT": "DCAE-CL-EVENT" }, "aaiMatchingFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "ProvStatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "aaiSendFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "Provstatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "eventSourceType": { "f5BigIP": "f5BigIP", "vSBG_Alarms": "vSBG_Alarms", "vCTS_Alarms": "vCTS_Alarms" }, "eventSeverity": { "NORMAL": "NORMAL", "not-NORMAL": "not-NORMAL", "WARNING": "WARNING", "MINOR": "MINOR", "MAJOR": "MAJOR", "CRITICAL": "CRITICAL" }, "timeWindow": 0, "ageLimit": 1600, "outputEventName": { "": "", "OnSet": "OnSet", "Abatement": "Abatement" }, "createClosedLoopEventId": { "Initial": "Initial", "Close": "Close" } }, "global": { "service": { "": "", "vUSP": "vUSP", "vSCP": "vSCP", "vProbes": "vProbes" } }, "policy": { "timeout": 5, "recipe": { "": "", "restart": "Restart", "rebuild": "Rebuild", "migrate": "Migrate" }, "maxRetries": "3", "retryTimeLimit": 180, "resource": { "vCTS": "vCTS", "v3CDB": "v3CDB", "vUDR": "vUDR", "vCOM": "vCOM", "vRAR": "vRAR", "vLCS": "vLCS", "vUDR-BE": "vUDR-BE", "vDBE": "vDBE" }, "parentPolicyConditions": { "Failure_Retries": "Failure: Max Retries Exceeded", "Failure_Timeout": "Failure: Time Limit Exceeded", "Failure_Exception": "Failure: Exception", "Failure": "Failure: Other", "Success": "Success" } }, "shared": { "byService": { "": { "vf": { }, "vfc": { }, "location": { }, "alarmCondition": { } }, "vSCP": { "vf": { "frwl_scp": "FW" }, "vfc": { "FW": "FW" }, "location": { "AKRNOHAH": "Akron", "ALLNTXSA": "Allen-2" }, "alarmCondition": { "authenticationFailure": "authenticationFailure", "bigipActive": "bigipActive", "bigipActiveActive": "bigipActiveActive", "bigipAgentRestart": "bigipAgentRestart", "bigipAgentShutdown": "bigipAgentShutdown", "bigipAgentStart": "bigipAgentStart", "bigipAggrReaperStateChange": "bigipAggrReaperStateChange", "bigipAomCpuTempTooHigh": "bigipAomCpuTempTooHigh", "bigipARPConflict": "bigipARPConflict", "bigipAsmBruteForceAttackDetected": "bigipAsmBruteForceAttackDetected", "bigipAsmDosAttackDetected": "bigipAsmDosAttackDetected", "bigipAsmFtpRequestBlocked": "bigipAsmFtpRequestBlocked", "bigipAsmFtpRequestViolation": "bigipAsmFtpRequestViolation", "bigipAsmRequestBlocked": "bigipAsmRequestBlocked", "bigipAsmRequestViolation": "bigipAsmRequestViolation", "bigipAsmSmtpRequestBlocked": "bigipAsmSmtpRequestBlocked", "bigipAsmSmtpRequestViolation": "bigipAsmSmtpRequestViolation", "bigipAuthFailed": "bigipAuthFailed", "bigipAvrAlertsMetricSmtp": "bigipAvrAlertsMetricSmtp", "bigipAvrAlertsMetricSnmp": "bigipAvrAlertsMetricSnmp", "bigipBladeNoPower": "bigipBladeNoPower", "bigipBladeOffline": "bigipBladeOffline", "bigipBladeTempHigh": "bigipBladeTempHigh", "bigipChassisFanBad": "bigipChassisFanBad", "bigipChassisPowerSupplyBad": "bigipChassisPowerSupplyBad", "bigipChassisTempHigh": "bigipChassisTempHigh", "bigipChmandAlertFanTrayBad": "bigipChmandAlertFanTrayBad", "bigipClusterdNoResponse": "bigipClusterdNoResponse", "bigipClusterPrimaryChanged": "bigipClusterPrimaryChanged", "bigipCompLimitExceeded": "bigipCompLimitExceeded", "bigipConfigLoaded": "bigipConfigLoaded", "bigipCpuFanSpeedBad": "bigipCpuFanSpeedBad", "bigipCpuFanSpeedLow": "bigipCpuFanSpeedLow", "bigipCpuTempHigh": "bigipCpuTempHigh", "bigipDiskPartitionGrowth": "bigipDiskPartitionGrowth", "bigipDiskPartitionWarn": "bigipDiskPartitionWarn", "bigipDnsRequestRateLimiterEngaged": "bigipDnsRequestRateLimiterEngaged", "bigipDosAttackStart": "bigipDosAttackStart", "bigipDosAttackStop": "bigipDosAttackStop", "bigipExternalLinkChange": "bigipExternalLinkChange", "bigipFeatureFailed": "bigipFeatureFailed", "bigipFeatureOnline": "bigipFeatureOnline", "bigipFipsDeviceError": "bigipFipsDeviceError", "bigipGtmAppAvail": "bigipGtmAppAvail", "bigipGtmAppNotAvail": "bigipGtmAppNotAvail", "bigipGtmAppObjAvail": "bigipGtmAppObjAvail", "bigipGtmAppObjNotAvail": "bigipGtmAppObjNotAvail", "bigipGtmBig3dSslCertExpired": "bigipGtmBig3dSslCertExpired", "bigipGtmBig3dSslCertWillExpire": "bigipGtmBig3dSslCertWillExpire", "bigipGtmBoxAvail": "bigipGtmBoxAvail", "bigipGtmBoxNotAvail": "bigipGtmBoxNotAvail", "bigipGtmDcAvail": "bigipGtmDcAvail", "bigipGtmDcDisabled": "bigipGtmDcDisabled", "bigipGtmDcEnabled": "bigipGtmDcEnabled", "bigipGtmDcNotAvail": "bigipGtmDcNotAvail", "bigipGtmJoinedGroup": "bigipGtmJoinedGroup", "bigipGtmKeyGenerationExpiration": "bigipGtmKeyGenerationExpiration", "bigipGtmKeyGenerationRollover": "bigipGtmKeyGenerationRollover", "bigipGtmLeftGroup": "bigipGtmLeftGroup", "bigipGtmLinkAvail": "bigipGtmLinkAvail", "bigipGtmLinkDisabled": "bigipGtmLinkDisabled", "bigipGtmLinkEnabled": "bigipGtmLinkEnabled", "bigipGtmLinkNotAvail": "bigipGtmLinkNotAvail", "bigipGtmPoolAvail": "bigipGtmPoolAvail", "bigipGtmPoolDisabled": "bigipGtmPoolDisabled", "bigipGtmPoolEnabled": "bigipGtmPoolEnabled", "bigipGtmPoolMbrAvail": "bigipGtmPoolMbrAvail", "bigipGtmPoolMbrDisabled": "bigipGtmPoolMbrDisabled", "bigipGtmPoolMbrEnabled": "bigipGtmPoolMbrEnabled", "bigipGtmPoolMbrNotAvail": "bigipGtmPoolMbrNotAvail", "bigipGtmPoolNotAvail": "bigipGtmPoolNotAvail", "bigipGtmProberPoolDisabled": "bigipGtmProberPoolDisabled", "bigipGtmProberPoolEnabled": "bigipGtmProberPoolEnabled", "bigipGtmProberPoolMbrDisabled": "bigipGtmProberPoolMbrDisabled", "bigipGtmProberPoolMbrEnabled": "bigipGtmProberPoolMbrEnabled", "bigipGtmProberPoolMbrStatusChange": "bigipGtmProberPoolMbrStatusChange", "bigipGtmProberPoolMbrStatusChangeReason": "bigipGtmProberPoolMbrStatusChangeReason", "bigipGtmProberPoolStatusChange": "bigipGtmProberPoolStatusChange", "bigipGtmProberPoolStatusChangeReason": "bigipGtmProberPoolStatusChangeReason", "bigipGtmRequestRateLimiterEngaged": "bigipGtmRequestRateLimiterEngaged", "bigipGtmServerAvail": "bigipGtmServerAvail", "bigipGtmServerDisabled": "bigipGtmServerDisabled", "bigipGtmServerEnabled": "bigipGtmServerEnabled", "bigipGtmServerNotAvail": "bigipGtmServerNotAvail", "bigipGtmSslCertExpired": "bigipGtmSslCertExpired", "bigipGtmSslCertWillExpire": "bigipGtmSslCertWillExpire", "bigipGtmVsAvail": "bigipGtmVsAvail", "bigipGtmVsDisabled": "bigipGtmVsDisabled", "bigipGtmVsEnabled": "bigipGtmVsEnabled", "bigipGtmVsNotAvail": "bigipGtmVsNotAvail", "bigipGtmWideIpAvail": "bigipGtmWideIpAvail", "bigipGtmWideIpDisabled": "bigipGtmWideIpDisabled", "bigipGtmWideIpEnabled": "bigipGtmWideIpEnabled", "bigipGtmWideIpNotAvail": "bigipGtmWideIpNotAvail", "bigipHardDiskFailure": "bigipHardDiskFailure", "bigipInetPortExhaustion": "bigipInetPortExhaustion", "bigipLibhalBladePoweredOff": "bigipLibhalBladePoweredOff", "bigipLibhalDiskBayRemoved": "bigipLibhalDiskBayRemoved", "bigipLibhalSensorAlarmCritical": "bigipLibhalSensorAlarmCritical", "bigipLibhalSsdLogicalDiskRemoved": "bigipLibhalSsdLogicalDiskRemoved", "bigipLibhalSsdPhysicalDiskRemoved": "bigipLibhalSsdPhysicalDiskRemoved", "bigipLicenseExpired": "bigipLicenseExpired", "bigipLicenseFailed": "bigipLicenseFailed", "bigipLogAlert": "bigipLogAlert", "bigipLogCrit": "bigipLogCrit", "bigipLogEmerg": "bigipLogEmerg", "bigipLogErr": "bigipLogErr", "bigipLogWarning": "bigipLogWarning", "bigipLtmVsAvail": "bigipLtmVsAvail", "bigipLtmVsDisabled": "bigipLtmVsDisabled", "bigipLtmVsEnabled": "bigipLtmVsEnabled", "bigipLtmVsUnavail": "bigipLtmVsUnavail", "bigipMemberRate": "bigipMemberRate", "bigipNetLinkDown": "bigipNetLinkDown", "bigipNodeDown": "bigipNodeDown", "bigipNodeRate": "bigipNodeRate", "bigipNodeUp": "bigipNodeUp", "bigipPacketRejected": "bigipPacketRejected", "bigipPsAbsent": "bigipPsAbsent", "bigipPsPowerOff": "bigipPsPowerOff", "bigipPsPowerOn": "bigipPsPowerOn", "bigipRaidDiskFailure": "bigipRaidDiskFailure", "bigipServiceDown": "bigipServiceDown", "bigipServiceUp": "bigipServiceUp", "bigipSsdMwiNearThreshold": "bigipSsdMwiNearThreshold", "bigipSsdMwiReachedThreshold": "bigipSsdMwiReachedThreshold", "bigipSslLimitExceeded": "bigipSslLimitExceeded", "bigipStandby": "bigipStandby", "bigipStandByFail": "bigipStandByFail", "bigipSystemCheckAlertCurrentHigh": "bigipSystemCheckAlertCurrentHigh", "bigipSystemCheckAlertCurrentLow": "bigipSystemCheckAlertCurrentLow", "bigipSystemCheckAlertFanSpeedLow": "bigipSystemCheckAlertFanSpeedLow", "bigipSystemCheckAlertMilliVoltageHigh": "bigipSystemCheckAlertMilliVoltageHigh", "bigipSystemCheckAlertMilliVoltageLow": "bigipSystemCheckAlertMilliVoltageLow", "bigipSystemCheckAlertPowerHigh": "bigipSystemCheckAlertPowerHigh", "bigipSystemCheckAlertPowerLow": "bigipSystemCheckAlertPowerLow", "bigipSystemCheckAlertTempHigh": "bigipSystemCheckAlertTempHigh", "bigipSystemCheckAlertVoltageHigh": "bigipSystemCheckAlertVoltageHigh", "bigipSystemCheckAlertVoltageLow": "bigipSystemCheckAlertVoltageLow", "bigipSystemShutdown": "bigipSystemShutdown", "bigipTamdAlert": "bigipTamdAlert", "bigipTrafficGroupActivate": "bigipTrafficGroupActivate", "bigipTrafficGroupActive": "bigipTrafficGroupActive", "bigipTrafficGroupDeactivate": "bigipTrafficGroupDeactivate", "bigipTrafficGroupForcedOffline": "bigipTrafficGroupForcedOffline", "bigipTrafficGroupOffline": "bigipTrafficGroupOffline", "bigipTrafficGroupStandby": "bigipTrafficGroupStandby", "bigipUnsolicitedRepliesExceededThreshold": "bigipUnsolicitedRepliesExceededThreshold", "bigipUpdateError": "bigipUpdateError", "bigipUpdatePriority": "bigipUpdatePriority", "bigipUpdateServer": "bigipUpdateServer", "bigipVcmpAlertsVcmpHBDetected": "bigipVcmpAlertsVcmpHBDetected", "bigipVcmpAlertsVcmpHBLost": "bigipVcmpAlertsVcmpHBLost", "bigipVcmpAlertsVcmpPowerOff": "bigipVcmpAlertsVcmpPowerOff", "bigipVcmpAlertsVcmpPowerOn": "bigipVcmpAlertsVcmpPowerOn", "bigipVirtualRate": "bigipVirtualRate", "coldStart": "coldStart", "emASMSigInstallComplete": "emASMSigInstallComplete", "emASMSigInstallFailed": "emASMSigInstallFailed", "emASMSigUpdateAvailable": "emASMSigUpdateAvailable", "emASMSigUpdateFailed": "emASMSigUpdateFailed", "emCertificateExpiration": "emCertificateExpiration", "emCpuUsage": "emCpuUsage", "emDeviceActiveMode": "emDeviceActiveMode", "emDeviceClockSkew": "emDeviceClockSkew", "emDeviceConfigSettingChanged": "emDeviceConfigSettingChanged", "emDeviceConfigSync": "emDeviceConfigSync", "emDeviceForcedOfflineMode": "emDeviceForcedOfflineMode", "emDeviceImpaired": "emDeviceImpaired", "emDeviceOfflineMode": "emDeviceOfflineMode", "emDeviceStandbyMode": "emDeviceStandbyMode", "emDeviceUnreachable": "emDeviceUnreachable", "emDiskUsage": "emDiskUsage", "emGatherServiceContractFailure": "emGatherServiceContractFailure", "emHaSyncFailed": "emHaSyncFailed", "emHotfixInstallComplete": "emHotfixInstallComplete", "emHotfixInstallFailed": "emHotfixInstallFailed", "emMemoryUsage": "emMemoryUsage", "emPerformanceStorageCap": "emPerformanceStorageCap", "emPerformanceStorageDays": "emPerformanceStorageDays", "emPerformanceThreshold": "emPerformanceThreshold", "emRaidDriveFailureDetected": "emRaidDriveFailureDetected", "emRaidDriveRebuildComplete": "emRaidDriveRebuildComplete", "emSchedBackupFailed": "emSchedBackupFailed", "emScheduledArchiveFailed": "emScheduledArchiveFailed", "emServiceContractExpiry": "emServiceContractExpiry", "emSoftwareInstallComplete": "emSoftwareInstallComplete", "emSoftwareInstallFailed": "emSoftwareInstallFailed", "emStatsCollectionRateCap": "emStatsCollectionRateCap", "emStatsDBConnectivityLost": "emStatsDBConnectivityLost", "emStatsDBConnectivityRestored": "emStatsDBConnectivityRestored", "fallingAlarm": "fallingAlarm", "ipv6IfStateChange": "ipv6IfStateChange", "linkDown": "linkDown", "linkUp": "linkUp", "mteEventSetFailure": "mteEventSetFailure", "mteTriggerFailure": "mteTriggerFailure", "mteTriggerFalling": "mteTriggerFalling", "mteTriggerFired": "mteTriggerFired", "mteTriggerRising": "mteTriggerRising", "netSnmpExampleHeartbeatNotification": "netSnmpExampleHeartbeatNotification", "newRoot": "newRoot", "nsNotifyRestart": "nsNotifyRestart", "nsNotifyShutdown": "nsNotifyShutdown", "nsNotifyStart": "nsNotifyStart", "risingAlarm": "risingAlarm", "schedActionFailure": "schedActionFailure", "smScriptAbort": "smScriptAbort", "smScriptException": "smScriptException", "smScriptResult": "smScriptResult", "topologyChange": "topologyChange", "ucdShutdown": "ucdShutdown", "ucdStart": "ucdStart", "warmStart": "warmStart" } }, "vUSP": { "vf": { "ctsf-xxx": "vCTS" }, "vfc": { "vCTS - CFED": "vCTS - CFED", "vCTS - Config": "vCTS - Config", "vCTS - DFED": "vCTS - DFED", "vCTS - TAFE-fsd": "vCTS - TAFE-fsd", "vCTS - GLS": "vCTS - GLS", "vCTS - XXX": "vCTS - XXX", "vCTS - Management Interface": "vCTS - Management Interface", "vCTS - SPFE-pfe": "vCTS - SPFE-pfe", "vCTS - DNS": "vCTS - DNS", "vCTS - SPFE-spd": "vCTS - SPFE-spd", "vCTS - SPFE-spt": "vCTS - SPFE-spt", "vCTS - TAFE-tas": "vCTS - TAFE-tas" }, "location": { "SNDGCA06": "San Diego(core site) A06", "SNDGCA64": "San Diego(core site) A64", "SNANTXCA": "San Antonio(core site)", "KSCYMO09": "Kansas City(core site)", "kings_mountain": "Kings Mountain(AMG)", "Secaucus": "Secaucus(AMG)", "lisle": "Lisle(AMG)", "concord": "Concord(AMG)", "houston": "Houston(AMG)", "akron": "Akron(AMG)" }, "alarmCondition": { "acrTemporaryBufferOverload": "acrTemporaryBufferOverload", "adnsExtendedTTLcaching": "adnsExtendedTTLcaching", "adnsQueryFailureCaching": "adnsQueryFailureCaching", "adnsQueueCongestion": "adnsQueueCongestion", "asdaCommunicationFailure": "asdaCommunicationFailure", "asdaRequestQueue": "asdaRequestQueue", "capacityLicenseKeyExpiration": "capacityLicenseKeyExpiration", "capacityLicenseKeyNearExpiration": "capacityLicenseKeyNearExpiration", "capacityLicenseKeyValidationError": "capacityLicenseKeyValidationError", "cardConnectionLost": "cardConnectionLost", "ccdbCommunicationFailure": "ccdbCommunicationFailure", "cpiAlrmCritical": "cpiAlrmCritical", "cpiAlrmMajor": "cpiAlrmMajor", "cpiAlrmMinor": "cpiAlrmMinor", "cpiAlrmWarning": "cpiAlrmWarning", "cpiAsrtEsc": "cpiAsrtEsc", "cpiAsrtNonEsc": "cpiAsrtNonEsc", "cpiAsrtNonEscCritical": "cpiAsrtNonEscCritical", "cpiAsrtNonEscMajor": "cpiAsrtNonEscMajor", "cpiAsrtNonEscMinor": "cpiAsrtNonEscMinor", "cpiAudErrCount": "cpiAudErrCount", "cpiAudManAct": "cpiAudManAct", "cpiAudNewEvent": "cpiAudNewEvent", "cpiCompleteRateAlarm": "cpiCompleteRateAlarm", "cpiCTS3xxFailRate": "cpiCTS3xxFailRate", "cpiCTS4xxFailRate": "cpiCTS4xxFailRate", "cpiCTS5xxFailRate": "cpiCTS5xxFailRate", "cpiCTS6xxFailRate": "cpiCTS6xxFailRate", "cpiCTSSIPRetransmitInvite": "cpiCTSSIPRetransmitInvite", "cpiCTSSIPRetransmitNonInvite": "cpiCTSSIPRetransmitNonInvite", "cpiDropMGAllocConnReq": "cpiDropMGAllocConnReq", "cpiDropRateAlarm": "cpiDropRateAlarm", "cpiExceptionService": "cpiExceptionService", "cpiFailRateAlarm": "cpiFailRateAlarm", "cpiFailSCTPFastRetransIncr": "cpiFailSCTPFastRetransIncr", "cpiFailSCTPFastRetransRate": "cpiFailSCTPFastRetransRate", "cpiFailSCTPSRTT1Incr": "cpiFailSCTPSRTT1Incr", "cpiFailSCTPSRTT2Incr": "cpiFailSCTPSRTT2Incr", "cpiFailSCTPT3RetransIncr": "cpiFailSCTPT3RetransIncr", "cpiFailSCTPT3RetransRate": "cpiFailSCTPT3RetransRate", "cpiFileSysUsage": "cpiFileSysUsage", "cpiMemAllocFail": "cpiMemAllocFail", "cpiNumOfLICDRDel": "cpiNumOfLICDRDel", "cpiReinitServiceSelf": "cpiReinitServiceSelf", "cpiSIPRetransmitInvite": "cpiSIPRetransmitInvite", "cpiSIPRetransmitNonInvite": "cpiSIPRetransmitNonInvite", "cpiSS7DropSCTPPktsRcvd": "cpiSS7DropSCTPPktsRcvd", "cpiSS7FailSCTPFastRetransRate": "cpiSS7FailSCTPFastRetransRate", "cpiStabilityAlarm": "cpiStabilityAlarm", "cpuOverload": "cpuOverload", "databaseConnectionLost": "databaseConnectionLost", "databaseReplicationLinkDown": "databaseReplicationLinkDown", "databaseSizeExhausted": "databaseSizeExhausted", "dbHighCpuUtilization": "dbHighCpuUtilization", "dbOffline": "dbOffline", "dbStatusUnexpected": "dbStatusUnexpected", "degradedResource": "degradedResource", "degrow": "degrow", "deviceServerCxnLost": "deviceServerCxnLost", "diamLinkDown": "diamLinkDown", "diamMaxClientsExceeded": "diamMaxClientsExceeded", "dnsThreshold": "dnsThreshold", "ethernetError": "ethernetError", "ethernetLinkDown": "ethernetLinkDown", "externalConnectivity": "externalConnectivity", "featureLicenseExpiration": "featureLicenseExpiration", "featureLicenseKeyNearExpiration": "featureLicenseKeyNearExpiration", "featureLockValidationError": "featureLockValidationError", "fqdnError": "fqdnError", "fru": "fru", "gatewayCongestion": "gatewayCongestion", "gatewayForcedOOS": "gatewayForcedOOS", "gatewayProvisioningError": "gatewayProvisioningError", "gatewayUnreachable": "gatewayUnreachable", "gatewayUnregistered": "gatewayUnregistered", "globalParameterNotFound": "globalParameterNotFound", "glsInvalidCellId": "glsInvalidCellId", "glsServerUnavailable": "glsServerUnavailable", "grow": "grow", "h248MessageBufferDepletion": "h248MessageBufferDepletion", "hlrSyncConnection": "hlrSyncConnection", "hlrSyncQueue": "hlrSyncQueue", "hostDown": "hostDown", "hostReset": "hostReset", "invalidGateway": "invalidGateway", "iriLinkDown": "iriLinkDown", "ldapServerConnectionLost": "ldapServerConnectionLost", "lispBufferFullExternalLIG": "lispBufferFullExternalLIG", "llcDown": "llcDown", "logicalLinkDown": "logicalLinkDown", "logicalLinkNotFound": "logicalLinkNotFound", "logRotateThreshold": "logRotateThreshold", "memoryOverload": "memoryOverload", "nodeConfigFailure": "nodeConfigFailure", "nodeGroupOOS": "nodeGroupOOS", "nodeOOS": "nodeOOS", "nonCompliantFaultGroupMemberState": "nonCompliantFaultGroupMemberState", "nonCsAddrChannelDepletion": "nonCsAddrChannelDepletion", "numberOfTuplesInUse": "numberOfTuplesInUse", "osSecInfoModificationDetected": "osSecInfoModificationDetected", "osSecInformationMissing": "osSecInformationMissing", "osSecUnexpectedInformation": "osSecUnexpectedInformation", "pdnsMySqlReplication": "pdnsMySqlReplication", "pktCorruptionDetectedViaRCCLANCheck": "pktCorruptionDetectedViaRCCLANCheck", "platformCommandFailure": "platformCommandFailure", "pmDataNotCollected": "pmDataNotCollected", "prdbConnectWithAlternateFailure": "prdbConnectWithAlternateFailure", "prdbSyncDataToAlternateFailure": "prdbSyncDataToAlternateFailure", "preAllocatedResourceOverload": "preAllocatedResourceOverload", "prifSocketError": "prifSocketError", "processDown": "processDown", "processNotStarted": "processNotStarted", "provisioningInhibitedMode": "provisioningInhibitedMode", "prsCallInstanceExceeded": "prsCallInstanceExceeded", "prsCpuOverload": "prsCpuOverload", "prsDatabaseMigrationFailure": "prsDatabaseMigrationFailure", "prsFailureToConnectWithPRDB": "prsFailureToConnectWithPRDB", "prsQueueExceeded": "prsQueueExceeded", "rccInhibitedMode": "rccInhibitedMode", "remotedbLinkDown": "remotedbLinkDown", "remoteQueryServerFailure": "remoteQueryServerFailure", "restore": "restore", "serviceCFGDataTimestampError": "serviceCFGDataTimestampError", "serviceCommCxnLost": "serviceCommCxnLost", "serviceOnewayCommunication": "serviceOnewayCommunication", "sheddingOverload": "sheddingOverload", "simxml": "simxml", "sipLinkSetMaxQuarantineList": "sipLinkSetMaxQuarantineList", "sipLinkSetUnavailable": "sipLinkSetUnavailable", "sipLinkUnavailable": "sipLinkUnavailable", "smdiSocketError": "smdiSocketError", "socketError": "socketError", "softwareAllocatedResourceOverload": "softwareAllocatedResourceOverload", "softwareComponentDown": "softwareComponentDown", "softwareComponentStandbyNotReady": "softwareComponentStandbyNotReady", "softwareLicense": "softwareLicense", "svcdegrow": "svcdegrow", "svcgrow": "svcgrow", "swVersionMismatch": "swVersionMismatch", "tftpDownloadCorrupt": "tftpDownloadCorrupt", "timeStampValueOutOfSystemRange": "timeStampValueOutOfSystemRange", "tlsInitError": "tlsInitError", "transactionHandlerBlockDepletion": "transactionHandlerBlockDepletion", "upgrade": "upgrade", "usageOfSyncTable": "usageOfSyncTable", "utHttpProxyConnectionDown": "utHttpProxyConnectionDown", "wpifSocketError": "wpifSocketError", "BackupFailure": "BackupFailure", "Configuration": "Configuration", "COTRecordTransferFailure": "COTRecordTransferFailure", "CPMUSERDATAINCONSITENCY": "CPMUSERDATAINCONSITENCY", "CPMUSERDATARESTORED": "CPMUSERDATARESTORED", "EventQueueCapacity": "EventQueueCapacity", "ICMPFailure": "ICMPFailure", "IPsecConfig": "IPsecConfig", "LinkDown": "LinkDown", "NotifyDisabled": "NotifyDisabled", "NotifyLocked": "NotifyLocked", "NumTL1MeasThresh": "NumTL1MeasThresh", "RADIUSTOLDAPFAILURE": "RADIUSTOLDAPFAILURE", "ROOTACCESSDENIED": "ROOTACCESSDENIED", "ROOTFTPVIOLATION": "ROOTFTPVIOLATION", "ROOTLOGINVIOLATION": "ROOTLOGINVIOLATION", "ROOTSSHLOGINVIOLATION": "ROOTSSHLOGINVIOLATION", "SetupAAAFailure": "SetupAAAFailure", "SNETrapOverload": "SNETrapOverload", "SNMPAuthenticationFailure": "SNMPAuthenticationFailure", "SNMPFailure": "SNMPFailure", "SUTOROOTFAILURE": "SUTOROOTFAILURE", "SYSTEMTrapOverload": "SYSTEMTrapOverload", "ThresholdCrossed": "ThresholdCrossed", "UndiscoveredObject": "UndiscoveredObject", "WriteAAAFailure": "WriteAAAFailure" } }, "Trinity": { "vf": { "aSBG": "aSBG", "nSBG": "nSBG", "tSBG": "tSBG" }, "vfc": { "pld": "PL - Payload Processor", "scr": "SC - System Controller" }, "location": { "SNDGCA64": "San Diego SAN3", "ALPRGAED": "Alpharetta PDK1", "LSLEILAA":"Lisle DPA3" }, "alarmCondition": { "A+Fallback+Operation+will+soon+be+started":"A Fallback Operation will soon be started", "BRM%2C+Auto+Export+Backup+Failed":"BRM, Auto Export Backup Failed", "BRM%2C+Scheduled+Backup+Failed":"BRM, Scheduled Backup Failed", "COM+SA%2C+AMF+Component+Cleanup+Failed":"COM SA, AMF Component Cleanup Failed", "COM+SA%2C+AMF+Component+Instantiation+Failed":"COM SA, AMF Component Instantiation Failed", "COM+SA%2C+AMF+SI+Unassigned":"COM SA, AMF SI Unassigned", "COM+SA%2C+CLM+Cluster+Node+Unavailable":"COM SA, CLM Cluster Node Unavailable", "COM+SA%2C+MDF+Detected+Model+Error":"COM SA, MDF Detected Model Error", "COM+SA%2C+Proxy+Status+of+a+Component+Changed+to+Unproxied":"COM SA, Proxy Status of a Component Changed to Unproxied", "File+Management%2C+Number+of+Files+in+FileGroup+Exceeded":"File Management, Number of Files in FileGroup Exceeded", "File+Management%2C+Max+Size+in+FileGroup+Exceeded":"File Management, Max Size in FileGroup Exceeded", "LOTC+Disk+Replication+Communication":"LOTC Disk Replication Communication", "LOTC+Disk+Replication+Consistency":"LOTC Disk Replication Consistency", "LOTC+Disk+Usage":"LOTC Disk Usage", "LOTC+memory+Usage":"LOTC memory Usage", "LOTC+Time+Synchronization":"LOTC Time Synchronization", "SBG%2C+BGF+Control+Link+Down":"SBG, BGF Control Link Down", "SBG%2C+BGF+Control+Link+Disabled":"SBG, BGF Control Link Disabled", "SBG%2C+BGF+Control+Link+Enabled":"SBG, BGF Control Link Enabled", "SBG%2C+BGF+Control+Link+Remote+Locked":"SBG, BGF Control Link Remote Locked", "SBG%2C+Charging+Data+Storage+Maximum+Records+Reached":"SBG, Charging Data Storage Maximum Records Reached", "SBG%2C+Charging+Server+Rejects+Charging+Data":"SBG, Charging Server Rejects Charging Data", "SBG%2C+Excessive+Packet+Rate+Detected+":"SBG, Excessive Packet Rate Detected ", "SBG%2C+High+Amount+of+Malformed+Packets+Received":"SBG, High Amount of Malformed Packets Received", "SBG%2C+High+Amount+of+STUN+Packets+Detected":"SBG, High Amount of STUN Packets Detected", "SBG%2C+High+Amount+of+TCP+SYN+Packets+Received":"SBG, High Amount of TCP SYN Packets Received", "SBG%2C+High+Amount+of+UDP+Packets+Received+":"SBG, High Amount of UDP Packets Received ", "SBG%2C+IP+Address+Blocked+Due+to+Excessive+Packet+Rate":"SBG, IP Address Blocked Due to Excessive Packet Rate", "SBG%2C+Lost+Connectivity+to+Diameter+Server":"SBG, Lost Connectivity to Diameter Server", "SBG%2C+Mated+Pair+out+of+Service":"SBG, Mated Pair out of Service", "SBG%2C+Network+Unavailable+for+Media+Handling":"SBG, Network Unavailable for Media Handling", "SBG%2C+Non-emergency+Call+Released+to+Free+Resources+for+Emergency+Call":"SBG, Non-emergency Call Released to Free Resources for Emergency Call", "SBG%2C+Not+Enough+Disk+Space+for+Storing+Charging+Data":"SBG, Not Enough Disk Space for Storing Charging Data", "SBG%2C+Payload+Mated+Pair+Failure":"SBG, Payload Mated Pair Failure", "SBG%2C+Payload+Processor+Failure":"SBG, Payload Processor Failure", "SBG%2C+Processor+Overloaded":"SBG, Processor Overloaded", "SBG%2C+Registered+User+Set+in+Quarantine":"SBG, Registered User Set in Quarantine", "SBG%2C+Registration+Contacts+Exceed+Configured+Threshold":"SBG, Registration Contacts Exceed Configured Threshold", "SBG%2C+Sequential+Restart+Initiated":"SBG, Sequential Restart Initiated", "SBG%2C+SIP+Abuse+Detected":"SBG, SIP Abuse Detected", "SBG%2C+SIP+Network+Locked":"SBG, SIP Network Locked", "SBG%2C+SIP+Next+Hop+Reachable":"SBG, SIP Next Hop Reachable", "SBG%2C+SIP+Next+Hop+Unreachable":"SBG, SIP Next Hop Unreachable", "SBG%2C+SIP+Request+Rejected+by+Network+Throttling":"SBG, SIP Request Rejected by Network Throttling", "SBG%2C+TLS+Certificate+Imported":"SBG, TLS Certificate Imported", "SBG%2C+Trace+Recording+Session+Number+Limit+Reached":"SBG, Trace Recording Session Number Limit Reached", "SBG%2C+Trace+Session+Deactivated":"SBG, Trace Session Deactivated", "SBG%2C+Trace+Session+Times+Out":"SBG, Trace Session Times Out", "SBG%2C+Unknown+Media+Type+or+Payload+Type":"SBG, Unknown Media Type or Payload Type" } }, "vProbes": { "vf": { }, "vfc": { }, "location": { }, "alarmCondition": { } } } } } +globalPropsPartialTest={"collector": {"topicPublishes": {"DCAE-COLLECTOR-UCSNMP": "DCAE-COLLECTOR-UCSNMP", "GFP-IP--SNMP-TRAPS" : "GFP-IP--SNMP-TRAPS" } }, "string_match": { "topicPublishes": { "DCAE-CL-EVENT": "DCAE-CL-EVENT" }, "aaiMatchingFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "ProvStatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "aaiSendFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "Provstatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "eventSourceType": { "f5BigIP": "f5BigIP", "vSBG_Alarms": "vSBG_Alarms", "vCTS_Alarms": "vCTS_Alarms" }, "eventSeverity": { "NORMAL": "NORMAL", "not-NORMAL": "not-NORMAL", "WARNING": "WARNING", "MINOR": "MINOR", "MAJOR": "MAJOR", "CRITICAL": "CRITICAL" }, "timeWindow": 0, "ageLimit": 1600, "outputEventName": { "": "", "OnSet": "OnSet", "Abatement": "Abatement" }, "createClosedLoopEventId": { "Initial": "Initial", "Close": "Close" } }, "global": { "service": { "": "", "vUSP": "vUSP", "vSCP": "vSCP", "vProbes": "vProbes" } }, "policy": { "timeout": 5, "recipe": { "": "", "restart": "Restart", "rebuild": "Rebuild", "migrate": "Migrate" }, "maxRetries": "3", "retryTimeLimit": 180, "resource": { "vCTS": "vCTS", "v3CDB": "v3CDB", "vUDR": "vUDR", "vCOM": "vCOM", "vRAR": "vRAR", "vLCS": "vLCS", "vUDR-BE": "vUDR-BE", "vDBE": "vDBE" }, "parentPolicyConditions": { "Failure_Retries": "Failure: Max Retries Exceeded", "Failure_Timeout": "Failure: Time Limit Exceeded", "Failure_Exception": "Failure: Exception", "Failure": "Failure: Other", "Success": "Success" } }} +ui.location.default={"location":{"SNDGCA64":"San Diego SAN3","ALPRGAED":"Alpharetta PDK1","LSLEILAA":"Lisle DPA3"}} +ui.alarm.fault={"alarmCondition":{"A+Fallback+Operation+will+soon+be+started":"A Fallback Operation will soon be started","BRM%2C+Auto+Export+Backup+Failed":"BRM, Auto Export Backup Failed","BRM%2C+Scheduled+Backup+Failed":"BRM, Scheduled Backup Failed","COM+SA%2C+AMF+Component+Cleanup+Failed":"COM SA, AMF Component Cleanup Failed","COM+SA%2C+AMF+Component+Instantiation+Failed":"COM SA, AMF Component Instantiation Failed","COM+SA%2C+AMF+SI+Unassigned":"COM SA, AMF SI Unassigned","COM+SA%2C+CLM+Cluster+Node+Unavailable":"COM SA, CLM Cluster Node Unavailable","COM+SA%2C+MDF+Detected+Model+Error":"COM SA, MDF Detected Model Error","COM+SA%2C+Proxy+Status+of+a+Component+Changed+to+Unproxied":"COM SA, Proxy Status of a Component Changed to Unproxied","File+Management%2C+Number+of+Files+in+FileGroup+Exceeded":"File Management, Number of Files in FileGroup Exceeded","File+Management%2C+Max+Size+in+FileGroup+Exceeded":"File Management, Max Size in FileGroup Exceeded","LOTC+Disk+Replication+Communication":"LOTC Disk Replication Communication","LOTC+Disk+Replication+Consistency":"LOTC Disk Replication Consistency","LOTC+Disk+Usage":"LOTC Disk Usage","LOTC+memory+Usage":"LOTC memory Usage","LOTC+Time+Synchronization":"LOTC Time Synchronization","SBG%2C+BGF+Control+Link+Down":"SBG, BGF Control Link Down","SBG%2C+BGF+Control+Link+Disabled":"SBG, BGF Control Link Disabled","SBG%2C+BGF+Control+Link+Enabled":"SBG, BGF Control Link Enabled","SBG%2C+BGF+Control+Link+Remote+Locked":"SBG, BGF Control Link Remote Locked","SBG%2C+Charging+Data+Storage+Maximum+Records+Reached":"SBG, Charging Data Storage Maximum Records Reached","SBG%2C+Charging+Server+Rejects+Charging+Data":"SBG, Charging Server Rejects Charging Data","SBG%2C+Excessive+Packet+Rate+Detected+":"SBG, Excessive Packet Rate Detected ","SBG%2C+High+Amount+of+Malformed+Packets+Received":"SBG, High Amount of Malformed Packets Received","SBG%2C+High+Amount+of+STUN+Packets+Detected":"SBG, High Amount of STUN Packets Detected","SBG%2C+High+Amount+of+TCP+SYN+Packets+Received":"SBG, High Amount of TCP SYN Packets Received","SBG%2C+High+Amount+of+UDP+Packets+Received+":"SBG, High Amount of UDP Packets Received ","SBG%2C+IP+Address+Blocked+Due+to+Excessive+Packet+Rate":"SBG, IP Address Blocked Due to Excessive Packet Rate","SBG%2C+Lost+Connectivity+to+Diameter+Server":"SBG, Lost Connectivity to Diameter Server","SBG%2C+Mated+Pair+out+of+Service":"SBG, Mated Pair out of Service","SBG%2C+Network+Unavailable+for+Media+Handling":"SBG, Network Unavailable for Media Handling","SBG%2C+Non-emergency+Call+Released+to+Free+Resources+for+Emergency+Call":"SBG, Non-emergency Call Released to Free Resources for Emergency Call","SBG%2C+Not+Enough+Disk+Space+for+Storing+Charging+Data":"SBG, Not Enough Disk Space for Storing Charging Data","SBG%2C+Payload+Mated+Pair+Failure":"SBG, Payload Mated Pair Failure","SBG%2C+Payload+Processor+Failure":"SBG, Payload Processor Failure","SBG%2C+Processor+Overloaded":"SBG, Processor Overloaded","SBG%2C+Registered+User+Set+in+Quarantine":"SBG, Registered User Set in Quarantine","SBG%2C+Registration+Contacts+Exceed+Configured+Threshold":"SBG, Registration Contacts Exceed Configured Threshold","SBG%2C+Sequential+Restart+Initiated":"SBG, Sequential Restart Initiated","SBG%2C+SIP+Abuse+Detected":"SBG, SIP Abuse Detected","SBG%2C+SIP+Network+Locked":"SBG, SIP Network Locked","SBG%2C+SIP+Next+Hop+Reachable":"SBG, SIP Next Hop Reachable","SBG%2C+SIP+Next+Hop+Unreachable":"SBG, SIP Next Hop Unreachable","SBG%2C+SIP+Request+Rejected+by+Network+Throttling":"SBG, SIP Request Rejected by Network Throttling","SBG%2C+TLS+Certificate+Imported":"SBG, TLS Certificate Imported","SBG%2C+Trace+Recording+Session+Number+Limit+Reached":"SBG, Trace Recording Session Number Limit Reached","SBG%2C+Trace+Session+Deactivated":"SBG, Trace Session Deactivated","SBG%2C+Trace+Session+Times+Out":"SBG, Trace Session Times Out","SBG%2C+Unknown+Media+Type+or+Payload+Type":"SBG, Unknown Media Type or Payload Type"}} -- cgit 1.2.3-korg From bc25b72025a7b92c2b1bb7a3f0cfcd9ddedba001 Mon Sep 17 00:00:00 2001 From: xg353y Date: Wed, 27 Sep 2017 13:21:21 +0200 Subject: Code Improvement Change-Id: I703aabf234cb656b1faea3b5c0776d034d8ec807 Signed-off-by: xg353y Issue-ID: CLAMP-54 --- .../clds/client/StringMatchPolicyDelegate.java | 74 -- .../client/StringMatchPolicyDeleteDelegate.java | 62 -- .../org/onap/clamp/clds/client/req/SdcReq.java | 61 +- .../clds/client/req/StringMatchPolicyReq.java | 139 --- .../onap/clamp/clds/config/CldsConfiguration.java | 12 - .../clds/model/prop/AbstractModelElement.java | 4 +- .../org/onap/clamp/clds/model/prop/Collector.java | 54 -- .../org/onap/clamp/clds/model/prop/ModelBpmn.java | 13 +- .../onap/clamp/clds/model/prop/ModelBpmnEntry.java | 5 +- .../clamp/clds/model/prop/ModelProperties.java | 3 +- .../onap/clamp/clds/model/prop/ResourceGroup.java | 2 +- .../clds/model/prop/ServiceConfiguration.java | 4 +- .../onap/clamp/clds/model/prop/StringMatch.java | 98 -- .../clamp/clds/service/CldsTemplateService.java | 10 +- .../META-INF/resources/designer/css/app.css | 6 +- .../designer/images/clds-string-match-icon.png | Bin 276 -> 0 bytes .../resources/META-INF/resources/designer/index.js | 162 ---- .../partials/portfolios/Collector_properties.html | 122 --- .../portfolios/stringMatch_properties.html | 1019 -------------------- .../resources/designer/scripts/CldsModelService.js | 2 - .../META-INF/resources/designer/scripts/app.js | 114 --- src/main/resources/bpmn/clds-process-action.bpmn | 74 +- src/main/resources/clds/clds-reference.properties | 15 +- src/main/resources/clds/globalClds.properties | 2 +- src/main/resources/xsl/clds-bpmn-transformer.xsl | 16 +- .../org/onap/clamp/clds/it/PolicyClientIT.java | 48 - .../java/org/onap/clamp/clds/it/RefPropIT.java | 2 +- src/test/java/org/onap/clamp/clds/it/SdcIT.java | 15 - .../clamp/clds/model/prop/ModelPropertiesTest.java | 16 - src/test/resources/clds/clds-reference.properties | 26 +- src/test/resources/example/dao/bpmn-template.xml | 20 +- src/test/resources/example/dao/image-template.xml | 42 - .../example/model-properties/modelBpmn.json | 14 +- .../example/model-properties/modelBpmnProp.json | 86 -- .../model-properties/modelBpmnPropWithGlobal.json | 77 -- src/test/resources/example/modelBpmnProp.json | 24 +- .../resources/example/modelBpmnPropForPolicy.json | 13 +- src/test/resources/example/modelProp.json | 392 +------- src/test/resources/example/sdc/sdcVFResources.json | 2 +- src/test/resources/example/templateProp.json | 10 - .../resources/example/xsl-validation/modelBpmn.xml | 23 +- .../example/xsl-validation/modelBpmnForVerif.json | 14 +- src/test/resources/expected/stringmatch.json | 1 - 43 files changed, 96 insertions(+), 2802 deletions(-) delete mode 100644 src/main/java/org/onap/clamp/clds/client/StringMatchPolicyDelegate.java delete mode 100644 src/main/java/org/onap/clamp/clds/client/StringMatchPolicyDeleteDelegate.java delete mode 100644 src/main/java/org/onap/clamp/clds/client/req/StringMatchPolicyReq.java delete mode 100644 src/main/java/org/onap/clamp/clds/model/prop/Collector.java delete mode 100644 src/main/java/org/onap/clamp/clds/model/prop/StringMatch.java delete mode 100644 src/main/resources/META-INF/resources/designer/images/clds-string-match-icon.png delete mode 100644 src/main/resources/META-INF/resources/designer/partials/portfolios/Collector_properties.html delete mode 100644 src/main/resources/META-INF/resources/designer/partials/portfolios/stringMatch_properties.html delete mode 100644 src/test/resources/example/templateProp.json delete mode 100644 src/test/resources/expected/stringmatch.json (limited to 'src/test/resources/clds') diff --git a/src/main/java/org/onap/clamp/clds/client/StringMatchPolicyDelegate.java b/src/main/java/org/onap/clamp/clds/client/StringMatchPolicyDelegate.java deleted file mode 100644 index d149137b6..000000000 --- a/src/main/java/org/onap/clamp/clds/client/StringMatchPolicyDelegate.java +++ /dev/null @@ -1,74 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2017 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============================================ - * =================================================================== - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - */ - -package org.onap.clamp.clds.client; - -import java.util.UUID; - -import org.camunda.bpm.engine.delegate.DelegateExecution; -import org.camunda.bpm.engine.delegate.JavaDelegate; -import org.onap.clamp.clds.client.req.StringMatchPolicyReq; -import org.onap.clamp.clds.model.prop.ModelProperties; -import org.onap.clamp.clds.model.prop.StringMatch; -import org.onap.clamp.clds.model.refprop.RefProp; -import org.springframework.beans.factory.annotation.Autowired; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; - -/** - * Send String Match info to policy api. - */ -public class StringMatchPolicyDelegate implements JavaDelegate { - protected static final EELFLogger logger = EELFManager.getInstance() - .getLogger(StringMatchPolicyDelegate.class); - protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); - - @Autowired - private PolicyClient policyClient; - - @Autowired - private RefProp refProp; - - /** - * Perform activity. Send String Match info to policy api. - * - * @param execution - */ - @Override - public void execute(DelegateExecution execution) throws Exception { - String stringMatchPolicyRequestUuid = UUID.randomUUID().toString(); - execution.setVariable("stringMatchPolicyRequestUuid", stringMatchPolicyRequestUuid); - - ModelProperties prop = ModelProperties.create(execution); - StringMatch stringMatch = prop.getType(StringMatch.class); - if (stringMatch.isFound()) { - String policyJson = StringMatchPolicyReq.format(refProp, prop); - String responseMessage = policyClient.sendMicroServiceInJson(policyJson, prop, stringMatchPolicyRequestUuid); - if (responseMessage != null) { - execution.setVariable("stringMatchPolicyResponseMessage", responseMessage.getBytes()); - } - } - } - -} diff --git a/src/main/java/org/onap/clamp/clds/client/StringMatchPolicyDeleteDelegate.java b/src/main/java/org/onap/clamp/clds/client/StringMatchPolicyDeleteDelegate.java deleted file mode 100644 index 5bda8d361..000000000 --- a/src/main/java/org/onap/clamp/clds/client/StringMatchPolicyDeleteDelegate.java +++ /dev/null @@ -1,62 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2017 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============================================ - * =================================================================== - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - */ - -package org.onap.clamp.clds.client; - -import org.camunda.bpm.engine.delegate.DelegateExecution; -import org.camunda.bpm.engine.delegate.JavaDelegate; -import org.onap.clamp.clds.model.prop.ModelProperties; -import org.onap.clamp.clds.model.prop.StringMatch; -import org.springframework.beans.factory.annotation.Autowired; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; - -/** - * Delete String Match Policy via policy api. - */ -public class StringMatchPolicyDeleteDelegate implements JavaDelegate { - protected static final EELFLogger logger = EELFManager.getInstance() - .getLogger(StringMatchPolicyDeleteDelegate.class); - protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); - - @Autowired - private PolicyClient policyClient; - - /** - * Perform activity. Delete String Match Policy via policy api. - * - * @param execution - */ - @Override - public void execute(DelegateExecution execution) throws Exception { - ModelProperties prop = ModelProperties.create(execution); - StringMatch stringMatch = prop.getType(StringMatch.class); - if (stringMatch.isFound()) { - prop.setCurrentModelElementId(stringMatch.getId()); - - policyClient.deleteMicrosService(prop); - } - } - -} diff --git a/src/main/java/org/onap/clamp/clds/client/req/SdcReq.java b/src/main/java/org/onap/clamp/clds/client/req/SdcReq.java index f8351ca5d..c5e26f30a 100644 --- a/src/main/java/org/onap/clamp/clds/client/req/SdcReq.java +++ b/src/main/java/org/onap/clamp/clds/client/req/SdcReq.java @@ -50,7 +50,6 @@ import org.onap.clamp.clds.model.CldsSdcResource; import org.onap.clamp.clds.model.CldsSdcServiceDetail; import org.onap.clamp.clds.model.prop.Global; import org.onap.clamp.clds.model.prop.ModelProperties; -import org.onap.clamp.clds.model.prop.StringMatch; import org.onap.clamp.clds.model.prop.Tca; import org.onap.clamp.clds.model.refprop.RefProp; @@ -88,22 +87,8 @@ public class SdcReq { String yamlvalue = getYamlvalue(docText); String updatedBlueprint = ""; - StringMatch stringMatch = prop.getType(StringMatch.class); Tca tca = prop.getType(Tca.class); - if (stringMatch.isFound()) { - prop.setCurrentModelElementId(stringMatch.getId()); - ObjectMapper objectMapper = new ObjectMapper(); - ObjectNode serviceConfigurations = objectMapper.createObjectNode(); - - StringMatchPolicyReq.appendServiceConfigurations(refProp, service, serviceConfigurations, stringMatch, - prop); - logger.info("Value of serviceConfigurations:" + serviceConfigurations); - ObjectNode servConfNode = (ObjectNode) serviceConfigurations.get("serviceConfigurations"); - - // get updated blueprint by attaching service Conf from - // globalProperties - updatedBlueprint = getUpdatedBlueprintWithServiceConf(refProp, prop, yamlvalue, servConfNode); - } else if (tca.isFound()) { + if (tca.isFound()) { prop.setCurrentModelElementId(tca.getId()); ObjectNode rootNode = (ObjectNode) refProp.getJsonTemplate("tca.template", service); ObjectNode content = rootNode.with("content"); @@ -121,50 +106,6 @@ public class SdcReq { return updatedBlueprint; } - private static String getUpdatedBlueprintWithServiceConf(RefProp refProp, ModelProperties prop, String yamlValue, - ObjectNode serviceConf) throws IOException { - Yaml yaml = new Yaml(); - - // Serialiaze Yaml file - Map loadedYaml = (Map) yaml.load(yamlValue); - // Get node templates information from Yaml - Map nodeTemplates = loadedYaml.get("node_templates"); - logger.info("value of NodeTemplates:" + nodeTemplates); - - // Get StringMatch Object information from node templates of Yaml - Map smObject = nodeTemplates.get("SM"); - logger.info("value of StringMatch:" + smObject); - - // Get Properties Object information from stringmatch of Yaml - Map propsObject = smObject.get("properties"); - logger.info("value of PropsObject:" + propsObject); - - String deploymentJsonObject = propsObject.get("deployment_JSON"); - logger.info("value of deploymentJson:" + deploymentJsonObject); - - ObjectMapper mapper = new ObjectMapper(); - ObjectNode deployJsonNode = (ObjectNode) mapper.readTree(deploymentJsonObject); - ObjectNode configurationObjectNode = (ObjectNode) deployJsonNode.get("configuration"); - - // "policyName":"example_model06.ClosedLoop_FRWL_SIG_0538e6f2_8c1b_4656_9999_3501b3c59ad7_StringMatch_", - String policyNamePrefix = refProp.getStringValue("policy.ms.policyNamePrefix"); - String policyName = prop.getCurrentPolicyScopeAndFullPolicyName(policyNamePrefix); - configurationObjectNode.put("policyName", policyName); - - // "closedLoopControlName":"ClosedLoop-FRWL-SIG-0538e6f2-8c1b-4656-9999-3501b3c59ad7", - configurationObjectNode.put("closedLoopControlName", prop.getControlName()); - configurationObjectNode.put("messageReaderConsumerGroup", prop.getModelName()); - configurationObjectNode.set("serviceConfigurations", serviceConf); - propsObject.put("deployment_JSON", deployJsonNode.toString()); - String blueprint = yaml.dump(loadedYaml); - logger.info("value of updated Yaml File:" + blueprint); - - blueprint = yaml.dump(loadedYaml); - logger.info("value of updated Yaml File:" + blueprint); - - return blueprint; - } - private static String getUpdatedBlueprintWithConfiguration(RefProp refProp, ModelProperties prop, String yamlValue, ObjectNode serviceConf) throws JsonProcessingException, IOException { String blueprint = ""; diff --git a/src/main/java/org/onap/clamp/clds/client/req/StringMatchPolicyReq.java b/src/main/java/org/onap/clamp/clds/client/req/StringMatchPolicyReq.java deleted file mode 100644 index 5884c3dd2..000000000 --- a/src/main/java/org/onap/clamp/clds/client/req/StringMatchPolicyReq.java +++ /dev/null @@ -1,139 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2017 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============================================ - * =================================================================== - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - */ - -package org.onap.clamp.clds.client.req; - -import java.io.IOException; -import java.util.Iterator; -import java.util.Map.Entry; - -import org.onap.clamp.clds.model.prop.Global; -import org.onap.clamp.clds.model.prop.ModelProperties; -import org.onap.clamp.clds.model.prop.ResourceGroup; -import org.onap.clamp.clds.model.prop.ServiceConfiguration; -import org.onap.clamp.clds.model.prop.StringMatch; -import org.onap.clamp.clds.model.refprop.RefProp; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Construct a Policy for String Match Micro Service request given CLDS objects. - */ -public class StringMatchPolicyReq { - protected static final EELFLogger logger = EELFManager.getInstance().getLogger(StringMatchPolicyReq.class); - protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); - - /** - * Format Policy String Match request. - * - * @param refProp - * @param prop - * @return - * @throws IOException - */ - public static String format(RefProp refProp, ModelProperties prop) throws IOException { - Global global = prop.getGlobal(); - String service = global.getService(); - - StringMatch sm = prop.getType(StringMatch.class); - prop.setCurrentModelElementId(sm.getId()); - ObjectNode rootNode = (ObjectNode) refProp.getJsonTemplate("sm.template", service); - rootNode.put("policyName", prop.getCurrentPolicyScopeAndPolicyName()); - ObjectNode content = rootNode.with("content"); - appendServiceConfigurations(refProp, service, content, sm, prop); - - String stringMatchPolicyReq = rootNode.toString(); - logger.info("stringMatchPolicyReq=" + stringMatchPolicyReq); - return stringMatchPolicyReq; - } - - /** - * Add serviceConfigurations to json - * - * @param appendToNode - * @param sm - * @throws IOException - */ - public static void appendServiceConfigurations(RefProp refProp, String service, ObjectNode appendToNode, - StringMatch sm, ModelProperties prop) throws IOException { - // "serviceConfigurations":{ - ObjectNode scNodes = appendToNode.with("serviceConfigurations"); - - int index = 0; - if (sm != null && sm.getResourceGroups() != null) { - for (ResourceGroup resourceGroup : sm.getResourceGroups()) { - Iterator scItr = resourceGroup.getServiceConfigurations().iterator(); - - while (scItr.hasNext()) { - ServiceConfiguration sc = scItr.next(); - - // "ItemX":{ - index++; - String keyValue = "Item" + index; - ObjectNode scNode = (ObjectNode) refProp.getJsonTemplate("sm.sc.template", service); - scNodes.set(keyValue, scNode); - - // "rulegroup":"abc", - String rulegroupInd = refProp.getStringValue("sm.rulegroup", service); - String groupNumber = resourceGroup.getGroupNumber(); - if (rulegroupInd != null && rulegroupInd.equalsIgnoreCase("true") && groupNumber != null - && groupNumber.length() > 0) { - scNode.put("rulegroup", groupNumber); - } - - // "closedLoopControlName": - prop.setPolicyUniqueId(resourceGroup.getPolicyId()); - scNode.put("closedLoopControlName", prop.getControlNameAndPolicyUniqueId()); - - // "aaiMatchingFields" : ["VM_NAME"], - JsonUtil.addArrayField(scNode, "aaiMatchingFields", sc.getaaiMatchingFields()); - // "aaiSendFields" : ["VMID", "TenantID"], - JsonUtil.addArrayField(scNode, "aaiSendFields", sc.getaaiSendFields()); - - // "stringSet": [ - ArrayNode ssNode = scNode.putArray("stringSet"); - - for (Entry entry : sc.getStringSet().entrySet()) { - // exclude eventSourceType - if (!entry.getKey().equals("eventSourceType")) { - ssNode.add(entry.getKey()); - ssNode.add(entry.getValue()); - } - } - - // timeWindow": "0", - scNode.put("timeWindow", sc.getTimeWindow()); - // "ageLimit": "3600", - scNode.put("ageLimit", sc.getAgeLimit()); - // "createClosedLoopEventId" : "Initial", - scNode.put("createClosedLoopEventId", sc.getCreateClosedLoopEventId()); - // "outputEventName": "OnSet" - scNode.put("outputEventName", sc.getOutputEventName()); - } - } - } - } -} diff --git a/src/main/java/org/onap/clamp/clds/config/CldsConfiguration.java b/src/main/java/org/onap/clamp/clds/config/CldsConfiguration.java index a6baa969e..6b7d337ec 100644 --- a/src/main/java/org/onap/clamp/clds/config/CldsConfiguration.java +++ b/src/main/java/org/onap/clamp/clds/config/CldsConfiguration.java @@ -42,8 +42,6 @@ import org.onap.clamp.clds.client.OperationalPolicyDeleteDelegate; import org.onap.clamp.clds.client.PolicyClient; import org.onap.clamp.clds.client.SdcCatalogServices; import org.onap.clamp.clds.client.SdcSendReqDelegate; -import org.onap.clamp.clds.client.StringMatchPolicyDelegate; -import org.onap.clamp.clds.client.StringMatchPolicyDeleteDelegate; import org.onap.clamp.clds.client.TcaPolicyDelegate; import org.onap.clamp.clds.client.TcaPolicyDeleteDelegate; import org.onap.clamp.clds.dao.CldsDao; @@ -128,16 +126,6 @@ public class CldsConfiguration { return new OperationalPolicyDeleteDelegate(); } - @Bean(name = "stringMatchPolicyDelegate") - public StringMatchPolicyDelegate getStringMatchPolicyDelegate() { - return new StringMatchPolicyDelegate(); - } - - @Bean(name = "stringMatchPolicyDeleteDelegate") - public StringMatchPolicyDeleteDelegate getStringMatchPolicyDeleteDelegate() { - return new StringMatchPolicyDeleteDelegate(); - } - @Bean(name = "sdcCatalogServices") public SdcCatalogServices getSdcCatalogServices() { return new SdcCatalogServices(); diff --git a/src/main/java/org/onap/clamp/clds/model/prop/AbstractModelElement.java b/src/main/java/org/onap/clamp/clds/model/prop/AbstractModelElement.java index 7038dc6cf..9ced01998 100644 --- a/src/main/java/org/onap/clamp/clds/model/prop/AbstractModelElement.java +++ b/src/main/java/org/onap/clamp/clds/model/prop/AbstractModelElement.java @@ -33,7 +33,7 @@ import java.util.List; /** * Provide base ModelElement functionality. Perform base parsing of properties - * for a ModelElement (such as, Collector, StringMatch, Policy, Tca, Holmes, + * for a ModelElement (such as, VesCollector, Policy, Tca, Holmes, * ...) */ public abstract class AbstractModelElement { @@ -54,7 +54,7 @@ public abstract class AbstractModelElement { /** * Perform base parsing of properties for a ModelElement (such as, - * Collector, StringMatch, Policy and Tca) + * VesCollector, Policy and Tca) * * @param type * @param modelProp diff --git a/src/main/java/org/onap/clamp/clds/model/prop/Collector.java b/src/main/java/org/onap/clamp/clds/model/prop/Collector.java deleted file mode 100644 index be30f3ec2..000000000 --- a/src/main/java/org/onap/clamp/clds/model/prop/Collector.java +++ /dev/null @@ -1,54 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2017 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============================================ - * =================================================================== - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - */ - -package org.onap.clamp.clds.model.prop; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.fasterxml.jackson.databind.JsonNode; - -/** - * Parse Collector json properties. - */ -public class Collector extends AbstractModelElement { - protected static final EELFLogger logger = EELFManager.getInstance().getLogger(Collector.class); - protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger(); - - private static final String TYPE_COLLECTOR = "collector"; - - /** - * Parse Collector given json node. - * - * @param modelBpmn - * @param modelJson - */ - public Collector(ModelProperties modelProp, ModelBpmn modelBpmn, JsonNode modelJson) { - super(TYPE_COLLECTOR, modelProp, modelBpmn, modelJson); - topicPublishes = getValueByName("topicPublishes"); - } - - public static final String getType() { - return TYPE_COLLECTOR; - } - -} diff --git a/src/main/java/org/onap/clamp/clds/model/prop/ModelBpmn.java b/src/main/java/org/onap/clamp/clds/model/prop/ModelBpmn.java index ae7028dcd..f3d344a79 100644 --- a/src/main/java/org/onap/clamp/clds/model/prop/ModelBpmn.java +++ b/src/main/java/org/onap/clamp/clds/model/prop/ModelBpmn.java @@ -45,9 +45,8 @@ import org.onap.clamp.clds.service.CldsService; /** * Parse Model BPMN properties. *

- * Example json: {"collector":[{"id":"Collector_11r50j1", - * "from":"StartEvent_1"}],"stringMatch":[{"id":"StringMatch_0h6cbdv"}],"policy" - * :[{"id":"Policy_0oxeocn", "from":"StringMatch_0h6cbdv"}]} + * Example json: {"policy" + * :[{"id":"Policy_0oxeocn", "from":"StartEvent_1"}]} */ public class ModelBpmn { protected static final EELFLogger logger = EELFManager.getInstance() @@ -77,7 +76,7 @@ public class ModelBpmn { ObjectMapper objectMapper = new ObjectMapper(); ObjectNode root = objectMapper.readValue(modelBpmnPropText, ObjectNode.class); // iterate over each entry like: - // "collector":[{"id":"Collector_11r50j1","from":"StartEvent_1"}] + // "Policy":[{"id":"Policy","from":"StartEvent_1"}] Iterator> entryItr = root.fields(); List bpmnElementIdList = new ArrayList<>(); while (entryItr.hasNext()) { @@ -86,7 +85,7 @@ public class ModelBpmn { String type = entry.getKey(); ArrayNode arrayNode = (ArrayNode) entry.getValue(); // process each id/from object, like: - // {"id":"Collector_11r50j1","from":"StartEvent_1"} + // {"id":"Policy","from":"StartEvent_1"} for (JsonNode anArrayNode : arrayNode) { ObjectNode node = (ObjectNode) anArrayNode; String id = node.get("id").asText(); @@ -123,11 +122,11 @@ public class ModelBpmn { } /** - * This method verifies if the ModelElement Type (collector, holmes, tca, + * This method verifies if the ModelElement Type (holmes, tca, * ...) is in the list. * * @param type - * A model Element type (tca, collector, ...) + * A model Element type (tca, ...) * @return true if the element is found or false otherwise */ public boolean isModelElementTypeInList(String type) { diff --git a/src/main/java/org/onap/clamp/clds/model/prop/ModelBpmnEntry.java b/src/main/java/org/onap/clamp/clds/model/prop/ModelBpmnEntry.java index 210795be4..dc6682297 100644 --- a/src/main/java/org/onap/clamp/clds/model/prop/ModelBpmnEntry.java +++ b/src/main/java/org/onap/clamp/clds/model/prop/ModelBpmnEntry.java @@ -29,9 +29,8 @@ import com.att.eelf.configuration.EELFManager; /** * Model BPMN property entry *

- * Example json: {"collector":[{"id":"Collector_11r50j1", - * "from":"StartEvent_1"}],"stringMatch":[{"id":"StringMatch_0h6cbdv"],"policy": - * [{"id":"Policy_0oxeocn", "from":"StringMatch_0h6cbdv"}]} + * Example json: {"policy": + * [{"id":"Policy_0oxeocn", "from":"StartEvent_1"}]} */ public class ModelBpmnEntry { protected static final EELFLogger logger = EELFManager.getInstance().getLogger(ModelBpmnEntry.class); diff --git a/src/main/java/org/onap/clamp/clds/model/prop/ModelProperties.java b/src/main/java/org/onap/clamp/clds/model/prop/ModelProperties.java index dc0de326b..b9effc57a 100644 --- a/src/main/java/org/onap/clamp/clds/model/prop/ModelProperties.java +++ b/src/main/java/org/onap/clamp/clds/model/prop/ModelProperties.java @@ -72,10 +72,9 @@ public class ModelProperties { static { synchronized (lock) { - modelElementClasses.put(Collector.class, Collector.getType()); modelElementClasses.put(Policy.class, Policy.getType()); - modelElementClasses.put(StringMatch.class, StringMatch.getType()); modelElementClasses.put(Tca.class, Tca.getType()); + modelElementClasses.put(Holmes.class, Holmes.getType()); } } diff --git a/src/main/java/org/onap/clamp/clds/model/prop/ResourceGroup.java b/src/main/java/org/onap/clamp/clds/model/prop/ResourceGroup.java index 7395ced00..8b2dbeb83 100644 --- a/src/main/java/org/onap/clamp/clds/model/prop/ResourceGroup.java +++ b/src/main/java/org/onap/clamp/clds/model/prop/ResourceGroup.java @@ -35,7 +35,7 @@ import java.util.List; * Parse Resource Group json properties. * * Example json: - * {"StringMatch_0aji7go":{"Group1":[{"name":"rgname","value":"1493749598520"},{ + * {"TCA_0aji7go":{"Group1":[{"name":"rgname","value":"1493749598520"},{ * "name":"rgfriendlyname","value":"Group1"},{"name":"policyName","value": * "Policy1"},{"name":"policyId","value":"1"},{"serviceConfigurations":[[{"name" * :"aaiMatchingFields","value":["complex.city","vserver.vserver-name"]},{"name" diff --git a/src/main/java/org/onap/clamp/clds/model/prop/ServiceConfiguration.java b/src/main/java/org/onap/clamp/clds/model/prop/ServiceConfiguration.java index f15d70196..418afbb9f 100644 --- a/src/main/java/org/onap/clamp/clds/model/prop/ServiceConfiguration.java +++ b/src/main/java/org/onap/clamp/clds/model/prop/ServiceConfiguration.java @@ -33,10 +33,10 @@ import com.att.eelf.configuration.EELFManager; import com.fasterxml.jackson.databind.JsonNode; /** - * Parse serviceConfigurations from StringMatch json properties. + * Parse serviceConfigurations from Tca json properties. *

* Example json: - * {"StringMatch_0aji7go":{"Group1":[{"name":"rgname","value":"1493749598520"},{ + * {"Tca_0aji7go":{"Group1":[{"name":"rgname","value":"1493749598520"},{ * "name":"rgfriendlyname","value":"Group1"},{"name":"policyName","value": * "Policy1"},{"name":"policyId","value":"1"},{"serviceConfigurations":[[{"name" * :"aaiMatchingFields","value":["complex.city","vserver.vserver-name"]},{"name" diff --git a/src/main/java/org/onap/clamp/clds/model/prop/StringMatch.java b/src/main/java/org/onap/clamp/clds/model/prop/StringMatch.java deleted file mode 100644 index b74e7d134..000000000 --- a/src/main/java/org/onap/clamp/clds/model/prop/StringMatch.java +++ /dev/null @@ -1,98 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2017 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============================================ - * =================================================================== - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - */ - -package org.onap.clamp.clds.model.prop; - -import com.fasterxml.jackson.databind.JsonNode; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -/** - * Parse StringMatch json properties. - *

- * Example json: - * {"StringMatch_0aji7go":{"Group1":[{"name":"rgname","value":"1493749598520"},{ - * "name":"rgfriendlyname","value":"Group1"},{"name":"policyName","value": - * "Policy1"},{"name":"policyId","value":"1"},{"serviceConfigurations":[[{"name" - * :"aaiMatchingFields","value":["complex.city","vserver.vserver-name"]},{"name" - * :"aaiSendFields","value":["complex.city","vserver.vserver-name"]},{"name": - * "eventSeverity","value":["OK"]},{"name":"eventSourceType","value":[""]},{ - * "name":"timeWindow","value":["100"]},{"name":"ageLimit","value":["100"]},{ - * "name":"createClosedLoopEventId","value":["Initial"]},{"name": - * "outputEventName","value":["ONSET"]}]]}],"Group2":[{"name":"rgname","value": - * "1493749665149"},{"name":"rgfriendlyname","value":"Group2"},{"name": - * "policyName","value":"Policy2"},{"name":"policyId","value":"2"},{ - * "serviceConfigurations":[[{"name":"aaiMatchingFields","value":[ - * "cloud-region.identity-url","vserver.vserver-name"]},{"name":"aaiSendFields", - * "value":["cloud-region.identity-url","vserver.vserver-name"]},{"name": - * "eventSeverity","value":["NORMAL"]},{"name":"eventSourceType","value":[""]},{ - * "name":"timeWindow","value":["1000"]},{"name":"ageLimit","value":["1000"]},{ - * "name":"createClosedLoopEventId","value":["Initial"]},{"name": - * "outputEventName","value":["ONSET"]}],[{"name":"aaiMatchingFields","value":[ - * "generic-vnf.vnf-name","vserver.vserver-name"]},{"name":"aaiSendFields", - * "value":["generic-vnf.vnf-name","vserver.vserver-name"]},{"name": - * "eventSeverity","value":["CRITICAL"]},{"name":"eventSourceType","value":[""]} - * ,{"name":"timeWindow","value":["3000"]},{"name":"ageLimit","value":["3000"]}, - * {"name":"createClosedLoopEventId","value":["Initial"]},{"name": - * "outputEventName","value":["ABATED"]}]]}]}} - * - */ -public class StringMatch extends AbstractModelElement { - - private List resourceGroups; - - private static final String TYPE_STRING_MATCH = "stringMatch"; - - /** - * Parse StringMatch given json node. - * - * @param modelBpmn - * @param modelJson - */ - public StringMatch(ModelProperties modelProp, ModelBpmn modelBpmn, JsonNode modelJson) { - super(TYPE_STRING_MATCH, modelProp, modelBpmn, modelJson); - - // process Server_Configurations - if (modelElementJsonNode != null) { - Iterator itr = modelElementJsonNode.elements(); - resourceGroups = new ArrayList<>(); - while (itr.hasNext()) { - resourceGroups.add(new ResourceGroup(itr.next())); - } - } - } - - /** - * @return the resourceGroups - */ - public List getResourceGroups() { - return resourceGroups; - } - - public static final String getType() { - return TYPE_STRING_MATCH; - } - -} diff --git a/src/main/java/org/onap/clamp/clds/service/CldsTemplateService.java b/src/main/java/org/onap/clamp/clds/service/CldsTemplateService.java index e6e7325a9..e29b18879 100644 --- a/src/main/java/org/onap/clamp/clds/service/CldsTemplateService.java +++ b/src/main/java/org/onap/clamp/clds/service/CldsTemplateService.java @@ -65,8 +65,6 @@ import org.springframework.beans.factory.annotation.Value; @Path("/cldsTempate") public class CldsTemplateService extends SecureServiceBase { - private static final String COLLECTOR_KEY = "Collector"; - private static final String STRING_MATCH_KEY = "StringMatch"; private static final String POLICY_KEY = "Policy"; @Value("${CLDS_PERMISSION_TYPE_TEMPLATE:permission-type-template}") @@ -314,16 +312,12 @@ public class CldsTemplateService extends SecureServiceBase { if (keyPropName != null && keyPropName.equalsIgnoreCase(currElementId)) { ArrayNode arrayNode = (ArrayNode) entry.getValue(); // process each id/from object, like: - // {"id":"Collector_11r50j1", "from":"StartEvent_1"} + // {"id":"Policy_11r50j1", "from":"StartEvent_1"} for (JsonNode anArrayNode : arrayNode) { ObjectNode node = (ObjectNode) anArrayNode; String valueNode = node.get("value").asText(); logger.info("value of node:" + valueNode); - if (keyPropName.startsWith(COLLECTOR_KEY)) { - valueNode = COLLECTOR_KEY + "_" + valueNode; - } else if (keyPropName.startsWith(STRING_MATCH_KEY)) { - valueNode = STRING_MATCH_KEY + "_" + valueNode; - } else if (keyPropName.startsWith(POLICY_KEY)) { + if (keyPropName.startsWith(POLICY_KEY)) { valueNode = POLICY_KEY + "_" + valueNode; } bpmnIoIdsMap.put(keyPropName, valueNode); diff --git a/src/main/resources/META-INF/resources/designer/css/app.css b/src/main/resources/META-INF/resources/designer/css/app.css index 333c96669..e387dc030 100644 --- a/src/main/resources/META-INF/resources/designer/css/app.css +++ b/src/main/resources/META-INF/resources/designer/css/app.css @@ -170,20 +170,18 @@ svg:not(:root) { } /* '' */ .define-path:before{ - content: url('../images/DefinePath.png'); + content: url('../images/DefinePath.png'); position:relative; /*or absolute*/ z-index:100000; /*a number that's more than the modal box*/ } /* '' */ -.define-decision:before{ +.define-decision:before{ content: url('../images/DefineDecision.png'); position:relative; /*or absolute*/ z-index:100000; /*a number that's more than the modal box*/ } /* '' */ .icon-initial-node:before{ content: url('../images/InitialProcess.png'); } /* '' */ -.icon-collector-node:before{ content: url('../images/clds-collector-icon.png'); } /* '' */ .icon-holmes-node:before{ content: url('../images/clds-holmes-icon.png'); } /* '' */ .icon-ves-collector-node:before{ content: url('../images/clds-ves-collector-icon.png'); } /* '' */ -.icon-stringmatch-node:before{ content: url('../images/clds-string-match-icon.png'); } /* '' */ .icon-tca-node:before{ content: url('../images/clds-tca-icon.png'); } /* '' */ .icon-policy-node:before{ content: url('../images/clds-policy-icon.png'); } /* '' */ .icon-goc-node:before{ content: url('../images/GOC.png'); } /* '' */ diff --git a/src/main/resources/META-INF/resources/designer/images/clds-string-match-icon.png b/src/main/resources/META-INF/resources/designer/images/clds-string-match-icon.png deleted file mode 100644 index 6b00414fd..000000000 Binary files a/src/main/resources/META-INF/resources/designer/images/clds-string-match-icon.png and /dev/null differ diff --git a/src/main/resources/META-INF/resources/designer/index.js b/src/main/resources/META-INF/resources/designer/index.js index 89a688aca..33b84e6fc 100644 --- a/src/main/resources/META-INF/resources/designer/index.js +++ b/src/main/resources/META-INF/resources/designer/index.js @@ -1449,58 +1449,6 @@ function visibility_model() { return lane; - }, - 'bpmn:Collector': function(p, element) { - var lane = renderer('bpmn:Lane')(p, element, { - fill: 'White' - }); - - var expandedPool = DiUtil.isExpanded(element); - - if (expandedPool) { - drawLine(p, [{ - x: element.width, - y: 80 - }, { - x: element.width, - y: 20 - }]); - - drawLine(p, [{ - x: 20, - y: 0 - }, { - x: 20, - y: element.height - }]); - var text2 = getSemantic(element).name; - if (text2 == undefined) { - text2 = 'Collector'; - } - - renderLabel(p, text2, { - box: element, - align: 'center-middle' - }); - - } else { - // Collapsed pool draw text inline - var text2 = getSemantic(element).name; - renderLabel(p, text2, { - box: element, - align: 'center-middle' - }); - } - - var participantMultiplicity = !!(getSemantic(element).participantMultiplicity); - - if (participantMultiplicity) { - renderer('ParticipantMultiplicityMarker')(p, element); - } - - return lane; - - }, 'bpmn:VesCollector': function(p, element) { var lane = renderer('bpmn:Lane')(p, element, { @@ -1626,52 +1574,6 @@ function visibility_model() { return lane; }, - - 'bpmn:StringMatch': function(p, element) { - var lane = renderer('bpmn:Lane')(p, element, { - fill: 'White' - }); - - var expandedPool = DiUtil.isExpanded(element); - - if (expandedPool) { - - drawLine(p, [{ - x: 0, - y: 20 - }, { - x: element.width, - y: 20 - }]); - var text2 = getSemantic(element).name; - if (text2 == undefined) { - text2 = 'StringMatch'; - } - renderLabel(p, text2, { - box: element, - align: 'center-middle' - }); - - } else { - // Collapsed pool draw text inline - var text2 = getSemantic(element).name; - renderLabel(p, text2, { - box: element, - align: 'center-middle' - }); - } - - var participantMultiplicity = !!(getSemantic(element).participantMultiplicity); - - if (participantMultiplicity) { - renderer('ParticipantMultiplicityMarker')(p, element); - } - - return lane; - - - }, - 'bpmn:TCA': function(p, element) { var lane = renderer('bpmn:Lane')(p, element, { fill: 'White' @@ -3838,39 +3740,6 @@ function visibility_model() { if (bpmnElement.$instanceOf('bpmn:InitiateProcess')) {} if (bpmnElement.$instanceOf('bpmn:StartEvent')) {} - if (bpmnElement.$instanceOf('bpmn:Collector')) { - assign(actions, { - 'Properties': { - group: 'clds', - label: 'Edit Properties', - className: 'clds-edit-properties', - title: 'Properties', - action: { - click: function(event) { - lastElementSelected = bpmnElement.id - CollectorsWindow(bpmnElement); - } - } - } - }); - - } - if (bpmnElement.$instanceOf('bpmn:StringMatch')) { - assign(actions, { - 'Properties': { - group: 'clds', - label: 'Edit Properties', - className: 'clds-edit-properties', - title: 'Properties', - action: { - click: function(event) { - lastElementSelected = bpmnElement.id - StringMatchWindow(bpmnElement); - } - } - } - }); - } if (bpmnElement.$instanceOf('bpmn:Holmes')) { assign(actions, { 'Properties': { @@ -5007,19 +4876,6 @@ function visibility_model() { height: 80 }; } - if (semantic.$instanceOf('bpmn:Collector')) { - return { - width: 120, - height: 80 - }; - } - - if (semantic.$instanceOf('bpmn:StringMatch')) { - return { - width: 120, - height: 80 - }; - } if (semantic.$instanceOf('bpmn:VesCollector')) { return { width: 120, @@ -6541,12 +6397,6 @@ function visibility_model() { 'create.start-event': createAction( 'bpmn:StartEvent', 'event', 'icon-start-event-none', "Start" ), - 'create.collector': createAction( - 'bpmn:Collector', 'event', 'icon-collector-node', 'Collector' - ), - 'create.String-Match': createAction( - 'bpmn:StringMatch', 'event', 'icon-stringmatch-node', 'String Match' - ), 'create.ves-collector': createAction( 'bpmn:VesCollector', 'event', 'icon-ves-collector-node', 'Ves Collector' ), @@ -14381,18 +14231,6 @@ function visibility_model() { "Activity", "InteractionNode" ] - }, { - "name": "Collector", - "superClass": [ - "Activity", - "InteractionNode" - ] - }, { - "name": "StringMatch", - "superClass": [ - "Activity", - "InteractionNode" - ] }, { "name": "VesCollector", "superClass": [ diff --git a/src/main/resources/META-INF/resources/designer/partials/portfolios/Collector_properties.html b/src/main/resources/META-INF/resources/designer/partials/portfolios/Collector_properties.html deleted file mode 100644 index 7537f72aa..000000000 --- a/src/main/resources/META-INF/resources/designer/partials/portfolios/Collector_properties.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -

- - - - -
- - diff --git a/src/main/resources/META-INF/resources/designer/partials/portfolios/stringMatch_properties.html b/src/main/resources/META-INF/resources/designer/partials/portfolios/stringMatch_properties.html deleted file mode 100644 index 49ac07d73..000000000 --- a/src/main/resources/META-INF/resources/designer/partials/portfolios/stringMatch_properties.html +++ /dev/null @@ -1,1019 +0,0 @@ - - - - - - -
- - - - - - - - -
diff --git a/src/main/resources/META-INF/resources/designer/scripts/CldsModelService.js b/src/main/resources/META-INF/resources/designer/scripts/CldsModelService.js index b42b5bb56..195886c9f 100644 --- a/src/main/resources/META-INF/resources/designer/scripts/CldsModelService.js +++ b/src/main/resources/META-INF/resources/designer/scripts/CldsModelService.js @@ -30,10 +30,8 @@ app.service('cldsModelService', ['alertService', '$http', '$q', function(alertSe } mapping = { - 'stringmatch': StringMatchWindow, 'tca': TCAWindow, 'policy': PolicyWindow, - 'collector': CollectorsWindow, 'vescollector': VesCollectorWindow, 'holmes': HolmesWindow, }; diff --git a/src/main/resources/META-INF/resources/designer/scripts/app.js b/src/main/resources/META-INF/resources/designer/scripts/app.js index 555b31c55..f300bb092 100644 --- a/src/main/resources/META-INF/resources/designer/scripts/app.js +++ b/src/main/resources/META-INF/resources/designer/scripts/app.js @@ -1296,106 +1296,6 @@ var app = angular.module('clds-app', ['ngRoute', // $modalInstance.close("closed"); }); }; - $scope.CollectorsWindow = function(collectorsWin) { - - if (isTemplate) { - var dlg = dialogs - .create( - 'partials/portfolios/Template_model.html', - 'ImportSchemaCtrl', - collectorsWin, { - closable: true, - draggable: true - }, { - size: 'lg', - keyboard: true, - backdrop: 'static', - windowClass: 'my-class' - }); - dlg.result.then(function(name) { - - }, function() { - - // if(angular.equals($scope.name,'')) - // $scope.name = 'You did not enter in - // your name!'; - }); - } else { - var dlg = dialogs - .create( - 'partials/portfolios/Collector_properties.html', - 'ImportSchemaCtrl', { - closable: true, - draggable: true - }, { - size: 'lg', - keyboard: true, - backdrop: 'static', - windowClass: 'my-class' - }); - dlg.result.then(function(name) { - - }, function() { - - // if(angular.equals($scope.name,'')) - // $scope.name = 'You did not enter in - // your name!'; - }); - - } - - }; - $scope.StringMatchWindow = function(stringMatch) { - - if (isTemplate) { - var dlg = dialogs - .create( - 'partials/portfolios/Template_model.html', - 'ImportSchemaCtrl', - stringMatch, { - closable: true, - draggable: true - }, { - size: 'lg', - keyboard: true, - backdrop: 'static', - windowClass: 'my-class' - }); - dlg.result.then(function(name) { - - }, function() { - - // if(angular.equals($scope.name,'')) - // $scope.name = 'You did not enter in - // your name!'; - }); - } else { - - var dlg = dialogs - .create( - 'partials/portfolios/stringMatch_properties.html', - 'ImportSchemaCtrl', { - closable: true, - draggable: true - }, { - size: 'lg', - keyboard: true, - backdrop: 'static', - windowClass: 'my-class' - }); - - dlg.result.then(function(name) { - - // $scope.name = name; - }, function() { - - // if(angular.equals($scope.name,'')) - // $scope.name = 'You did not enter in - // your name!'; - }); - - } - }; $scope.VesCollectorWindow = function(vesCollector) { if (isTemplate) { @@ -1677,13 +1577,6 @@ function importshema() { } -function CollectorsWindow(collectorsWin) { - - angular.element(document.getElementById('navbar')).scope() - .CollectorsWindow(collectorsWin); - -} - function VesCollectorWindow(vesCollectorWin) { angular.element(document.getElementById('navbar')).scope() .VesCollectorWindow(vesCollectorWin); @@ -1700,13 +1593,6 @@ function F5Window() { } -function StringMatchWindow(stringMatch) { - - angular.element(document.getElementById('navbar')).scope() - .StringMatchWindow(stringMatch); - -} - function TCAWindow(tca) { angular.element(document.getElementById('navbar')).scope().TCAWindow(tca); diff --git a/src/main/resources/bpmn/clds-process-action.bpmn b/src/main/resources/bpmn/clds-process-action.bpmn index 780162403..11edc0714 100644 --- a/src/main/resources/bpmn/clds-process-action.bpmn +++ b/src/main/resources/bpmn/clds-process-action.bpmn @@ -1,5 +1,5 @@ - + @@ -14,18 +14,15 @@ StartEvent_1 ServiceTask_0x8ypxf sendTcaReqDistribute - sendStringMatchingReqDistribute sendHolmesReqDistribute - sendStringMatchingReqDelete sendTcaReqDelete sendOpPolicyReqDelete sendHolmesReqDelete sendOpPolicyReqUpdate - sendStringMatchingReqUpdate sendTcaReqUpdate sendHolmesReqUpdate @@ -79,7 +76,7 @@ SequenceFlow_0ejpmee SequenceFlow_28 - + @@ -103,16 +100,11 @@ SequenceFlow_2 - - SequenceFlow_15 - SequenceFlow_23 - - - + - + @@ -124,19 +116,14 @@ - SequenceFlow_23 + SequenceFlow_15 SequenceFlow_0tpegxf - SequenceFlow_14 - SequenceFlow_1rga27p - - SequenceFlow_0w39hon - SequenceFlow_14 + SequenceFlow_1rga27p - SequenceFlow_1rga27p @@ -151,15 +138,10 @@ SequenceFlow_1mtizad - - SequenceFlow_27 - SequenceFlow_26 - - SequenceFlow_26 + SequenceFlow_27 SequenceFlow_1kegg6u - SequenceFlow_1kegg6u SequenceFlow_0ejpmee @@ -180,19 +162,9 @@ - - - - - - - - - - @@ -249,39 +221,19 @@ - - - - - - - - - - - - - - - - - - - - - + - + @@ -341,10 +293,10 @@ - + - + @@ -354,9 +306,9 @@ - + - + diff --git a/src/main/resources/clds/clds-reference.properties b/src/main/resources/clds/clds-reference.properties index abc25b179..d404e4e37 100644 --- a/src/main/resources/clds/clds-reference.properties +++ b/src/main/resources/clds/clds-reference.properties @@ -27,7 +27,7 @@ # # DCAE request build properties # -dcae.template={"properties":{"service_name":"","service_ids":[],"vnf_ids":[],"location_ids":[]},"template":{"string_matching":{"dcae":{"inputTopic":"","outputTopic":"","closedLoopControlName":"","closedLoopEventClient":"configuration.dcae.microservice.stringmatcher.xml","policyName":"","policyScope":"service=vSCP;resource=F5;type=configuration","policyVersion":"v0.0.1","serviceConfigurations":{}}}}} +dcae.template={"properties":{"service_name":"","service_ids":[],"vnf_ids":[],"location_ids":[]},"template":{"tca":{"dcae":{"inputTopic":"","outputTopic":"","closedLoopControlName":"","closedLoopEventClient":"configuration.dcae.microservice.tca.xml","policyName":"","policyScope":"service=vSCP;resource=F5;type=configuration","policyVersion":"v0.0.1","serviceConfigurations":{}}}}} dcae.decode.service_ids={"vUSP":["vUSP - vCTS"],"Trinity":["ASBGv TLS VNF","ASBGv No TLS","ASBGv (NO TLS) VNF","ASBGv TLS","NSBGv VNF","NSBGv"],"vSCP":["AKRON_vSCP_F5_FW-SVC/vSCP_F5_FW 1","ALLEN_vSCP_F5_FW-SVC/vSCP_F5_FW 1"],"vProbes":["vProbes - FW"]} # # SDC request blueprint properties @@ -50,19 +50,6 @@ policy.op.policyNamePrefix=Config_BRMS_Param_ tca.template={"service":"MThresholdCrossingConfiguration","location":"Edge","uuid":"TestUUID","policyName":"???","description":"from clds","configName":"MThresholdCrossingConfiguration","templateVersion":"5.2.0.1","priority":"4","version":"5.2.0.1","policyScope":"resource=F5,service=vSCP,type=configuration,closedLoopControlName=vSCP_F5_Firewall_d925ed73-8231-4d02-9545-db4e101f88f8","content":{"$class": "com.att.ecomp.dcae.clamp.common.MThresholdCrossingConfiguration","domain":"measurementsForVfScaling","policyScope":"pnf=eNodeB;type=configuration","policyName":"policy.dcae.configuration","policyVersion":"1.0.0","subscriberContentType": "application/json","subscriberConsumerId": "c13","subscriberConsumerGroup": "OpenDCAE-c13","subscriberTimeoutMS": "-1","subscriberMessageLimit": "-1","subscriberPollingInterval": "20000","publisherContentType": "application/json","publisherMaxBatchSize": "10","publisherMaxRecoveryQueueSize": "100000","publisherPollingInterval": "20000","publisherAlertWindowingTime": "86400","signatures":[]}} tca.signature.template={"nfNamingCode":"ENBE","target":"common_id","targetType":"eNodeB","useCaseName":"???","signatureName":"???","signatureUuid":"???","closedLoopControlName":"???","severity":"???","version":"1.0.2","maxInterval":1200,"minMessageViolations":4,"thresholds":[]} # -# String Match MicroService Policy request build properties -# -# default -sm.template={"service":"StringMatchingConfiguration","location":"Edge","uuid":"TestUUID","policyName":"???","description":"from clds","configName":"com.att.d2.policy.StringMatchingConfiguration","templateVersion":"1604","priority":"4","version":"1610","policyScope":"resource=F5,service=vSCP,type=configuration,closedLoopControlName=vSCP_F5_Firewall_d925ed73-8231-4d02-9545-db4e101f88f8","content":{"serviceConfigurations":{}}} -# by service: vSCP -sm.template.vSCP={"service":"StringMatchingConfiguration","location":"Edge","uuid":"TestUUID","policyName":"???","description":"from clds","configName":"com.att.d2.policy.StringMatchingConfiguration","templateVersion":"1604","priority":"4","version":"0.1.0-SNAPSHOT","policyScope":"resource=F5,service=vSCP,type=configuration,closedLoopControlName=vSCP_F5_Firewall_d925ed73-8231-4d02-9545-db4e101f88f8","content":{"serviceConfigurations":{}}} -sm.sc.template={} -# -# default -sm.rulegroup=true -# by service: vSCP -sm.rulegroup.vSCP=false -# # # Operational Policy request build properties # diff --git a/src/main/resources/clds/globalClds.properties b/src/main/resources/clds/globalClds.properties index f6607cb35..ac4f0cf30 100644 --- a/src/main/resources/clds/globalClds.properties +++ b/src/main/resources/clds/globalClds.properties @@ -21,4 +21,4 @@ # ECOMP is a trademark and service mark of AT&T Intellectual Property. ### -globalCldsProps ={"collector":{"topicPublishes":{"DCAE-COLLECTOR-UCSNMP":"DCAE-COLLECTOR-UCSNMP"}},"string_match":{"topicPublishes":{"DCAE-CL-EVENT":"DCAE-CL-EVENT"},"aaiMatchingFields":{"cloud-region.identity-url":"cloud-region.identity-url","complex.city":"complex.city","complex.physical-location-id":"complex.physical-location-id","complex.state":"complex.state","generic-vnf.service-id":"generic-vnf.service-id","generic-vnf.vnf-name":"generic-vnf.vnf-name","generic-vnf.vnf-type":"generic-vnf.vnf-type","tenant.tenant-id":"tenant.tenant-id","vserver.in-maint":"vserver.in-maint","vserver.is-closed-loop-disabled":"vserver.is-closed-loop-disabled","vserver.l-interface.interface-name":"vserver.l-interface.interface-name","vserver.l-interface.l3-interface-ipv4-address-list.l3-inteface-ipv4-address":"vserver.l-interface.l3-interface-ipv4-address-list.l3-inteface-ipv4-address","vserver.l-interface.l3-interface-ipv6-address-list.l3-inteface-ipv6-address":"vserver.l-interface.l3-interface-ipv6-address-list.l3-inteface-ipv6-address","vserver.l-interface.network-name":"vserver.l-interface.network-name","vserver.prov-status":"vserver.prov-status","vserver.selflink":"vserver.selflink","vserver.vserver-id":"vserver.vserver-id","vserver.vserver-name":"vserver.vserver-name"},"aaiSendFields":{"cloud-region.identity-url":"cloud-region.identity-url","complex.city":"complex.city","complex.physical-location-id":"complex.physical-location-id","complex.state":"complex.state","generic-vnf.service-id":"generic-vnf.service-id","generic-vnf.vnf-name":"generic-vnf.vnf-name","generic-vnf.vnf-type":"generic-vnf.vnf-type","tenant.tenant-id":"tenant.tenant-id","vserver.in-maint":"vserver.in-maint","vserver.is-closed-loop-disabled":"vserver.is-closed-loop-disabled","vserver.l-interface.interface-name":"vserver.l-interface.interface-name","vserver.l-interface.l3-interface-ipv4-address-list.l3-inteface-ipv4-address":"vserver.l-interface.l3-interface-ipv4-address-list.l3-inteface-ipv4-address","vserver.l-interface.l3-interface-ipv6-address-list.l3-inteface-ipv6-address":"vserver.l-interface.l3-interface-ipv6-address-list.l3-inteface-ipv6-address","vserver.l-interface.network-name":"vserver.l-interface.network-name","vserver.prov-status":"vserver.prov-status","vserver.selflink":"vserver.selflink","vserver.vserver-id":"vserver.vserver-id","vserver.vserver-name":"vserver.vserver-name"},"eventSourceType":{"f5BigIP":"f5BigIP","vSBG_Alarms":"vSBG_Alarms","vCTS_Alarms":"vCTS_Alarms"},"eventSeverity":{"NORMAL":"NORMAL","not-NORMAL":"not-NORMAL","OK":"OK","WARNING":"WARNING","MINOR":"MINOR","MAJOR":"MAJOR","CRITICAL":"CRITICAL"},"timeWindow":0,"ageLimit":1600,"outputEventName":{"":"","ONSET":"ONSET","ABATED":"ABATED"},"createClosedLoopEventId":{"Initial":"Initial","Close":"Close"}},"tca":{"tname":"New_Set","tcaInt":"1","tcaVio":"1","tcaSev":{"NORMAL":"NORMAL","CRITICAL":"CRITICAL","MAJOR":"MAJOR","MINOR":"MINOR","WARNING":"WARNING"},"fieldPath":{"FIELDPATH_test_1":"FIELDPATH_test_1","FIELDPATH_test_2":"FIELDPATH_test_2"},"operator":{">":"GREATER","=":"EQUAL","<":"LESS"},"opsPolicy":{"POLICY_test_X":"POLICY_test_X","POLICY_test_Y":"POLICY_test_Y"}},"global":{"actionSet":{"vnfRecipe":"VNF", "enbRecipe":"eNodeB"},"location":{"SNDGCA64":"San Diego SAN3","ALPRGAED":"Alpharetta PDK1","LSLEILAA":"Lisle DPA3","MDTWNJC1":"FTL_C_location1","MDTWNJC2":"FTL_C_location2","MDTWNJ21":"FTL_L_location1","MDTWNJ22":"FTL_L_location2","RDM2WAGPLCP":"ISTFTL_location","RDM3":"RDM3WAGPLCP"}},"policy":{"pname":"0","timeout":345,"vnfRecipe":{"":"","restart":"Restart","rebuild":"Rebuild","migrate":"Migrate","healthCheck":"Health Check"},"enbRecipe":{"":"","reset":"Reset"},"maxRetries":"3","retryTimeLimit":180,"resource":{"vCTS":"vCTS","v3CDB":"v3CDB","vUDR":"vUDR","vCOM":"vCOM","vRAR":"vRAR","vLCS":"vLCS","vUDR-BE":"vUDR-BE","vDBE":"vDBE"},"parentPolicyConditions":{"Failure_Retries":"Failure: Max Retries Exceeded","Failure_Timeout":"Failure: Time Limit Exceeded","Failure_Guard":"Failure: Guard","Failure_Exception":"Failure: Exception","Failure":"Failure: Other","Success":"Success"}},"shared":{"byService":{"":{"vf":{"":""},"location":{"":""},"alarmCondition":{"":""}}},"byVf":{"":{"vfc":{"":""}}}}} \ No newline at end of file +globalCldsProps ={"tca":{"tname":"New_Set","tcaInt":"1","tcaVio":"1","tcaSev":{"NORMAL":"NORMAL","CRITICAL":"CRITICAL","MAJOR":"MAJOR","MINOR":"MINOR","WARNING":"WARNING"},"fieldPath":{"FIELDPATH_test_1":"FIELDPATH_test_1","FIELDPATH_test_2":"FIELDPATH_test_2"},"operator":{">":"GREATER","=":"EQUAL","<":"LESS"},"opsPolicy":{"POLICY_test_X":"POLICY_test_X","POLICY_test_Y":"POLICY_test_Y"}},"global":{"actionSet":{"vnfRecipe":"VNF", "enbRecipe":"eNodeB"},"location":{"SNDGCA64":"San Diego SAN3","ALPRGAED":"Alpharetta PDK1","LSLEILAA":"Lisle DPA3","MDTWNJC1":"FTL_C_location1","MDTWNJC2":"FTL_C_location2","MDTWNJ21":"FTL_L_location1","MDTWNJ22":"FTL_L_location2","RDM2WAGPLCP":"ISTFTL_location","RDM3":"RDM3WAGPLCP"}},"policy":{"pname":"0","timeout":345,"vnfRecipe":{"":"","restart":"Restart","rebuild":"Rebuild","migrate":"Migrate","healthCheck":"Health Check"},"enbRecipe":{"":"","reset":"Reset"},"maxRetries":"3","retryTimeLimit":180,"resource":{"vCTS":"vCTS","v3CDB":"v3CDB","vUDR":"vUDR","vCOM":"vCOM","vRAR":"vRAR","vLCS":"vLCS","vUDR-BE":"vUDR-BE","vDBE":"vDBE"},"parentPolicyConditions":{"Failure_Retries":"Failure: Max Retries Exceeded","Failure_Timeout":"Failure: Time Limit Exceeded","Failure_Guard":"Failure: Guard","Failure_Exception":"Failure: Exception","Failure":"Failure: Other","Success":"Success"}},"shared":{"byService":{"":{"vf":{"":""},"location":{"":""},"alarmCondition":{"":""}}},"byVf":{"":{"vfc":{"":""}}}}} \ No newline at end of file diff --git a/src/main/resources/xsl/clds-bpmn-transformer.xsl b/src/main/resources/xsl/clds-bpmn-transformer.xsl index 8a39be55a..3cd98e3af 100644 --- a/src/main/resources/xsl/clds-bpmn-transformer.xsl +++ b/src/main/resources/xsl/clds-bpmn-transformer.xsl @@ -34,19 +34,7 @@ - {"collector":[ - - - - ], - - "stringMatch":[ - - - - ], - - "policy":[ + {"policy":[ @@ -63,7 +51,7 @@ ], - + "vesCollector":[ diff --git a/src/test/java/org/onap/clamp/clds/it/PolicyClientIT.java b/src/test/java/org/onap/clamp/clds/it/PolicyClientIT.java index c57ddbfd6..22abb13d2 100644 --- a/src/test/java/org/onap/clamp/clds/it/PolicyClientIT.java +++ b/src/test/java/org/onap/clamp/clds/it/PolicyClientIT.java @@ -35,13 +35,11 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.onap.clamp.clds.AbstractIT; import org.onap.clamp.clds.client.req.OperationalPolicyReq; -import org.onap.clamp.clds.client.req.StringMatchPolicyReq; import org.onap.clamp.clds.client.req.TcaMPolicyReq; import org.onap.clamp.clds.model.CldsEvent; import org.onap.clamp.clds.model.prop.ModelProperties; import org.onap.clamp.clds.model.prop.Policy; import org.onap.clamp.clds.model.prop.PolicyChain; -import org.onap.clamp.clds.model.prop.StringMatch; import org.onap.clamp.clds.model.prop.Tca; import org.onap.clamp.clds.util.ResourceFileUtil; import org.onap.policy.api.AttributeType; @@ -74,24 +72,6 @@ public class PolicyClientIT extends AbstractIT { controlName = "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf"; } - private void createUpdateStringMatch(String actionCd) throws Exception { - ModelProperties prop = new ModelProperties(modelName, controlName, actionCd, false, modelBpmnProp, modelProp); - StringMatch stringMatch = prop.getType(StringMatch.class); - if (stringMatch.isFound()) { - String stringMatchPolicyRequestUuid = UUID.randomUUID().toString(); - - String policyJson = StringMatchPolicyReq.format(refProp, prop); - String correctValue = ResourceFileUtil.getResourceAsString("expected/stringmatch.json"); - JSONAssert.assertEquals(policyJson, correctValue, true); - String responseMessage = ""; - try { - responseMessage = policyClient.sendMicroServiceInJson(policyJson, prop, stringMatchPolicyRequestUuid); - } catch (Exception e) { - assertTrue(e.getMessage().contains("Policy send failed: PE500 ")); - } - } - } - private void createUpdateOperationalPolicy(String actionCd) throws Exception { ModelProperties prop = new ModelProperties(modelName, controlName, actionCd, false, modelBpmnProp, modelProp); Policy policy = prop.getType(Policy.class); @@ -123,21 +103,6 @@ public class PolicyClientIT extends AbstractIT { } } - private void deleteStringMatchPolicy(String actionCd) throws Exception { - ModelProperties prop = new ModelProperties(modelName, controlName, actionCd, false, modelBpmnProp, modelProp); - - StringMatch stringMatch = prop.getType(StringMatch.class); - if (stringMatch.isFound()) { - prop.setCurrentModelElementId(stringMatch.getId()); - String responseMessage = ""; - try { - responseMessage = policyClient.deleteMicrosService(prop); - } catch (Exception e) { - assertTrue(e.getMessage().contains("Policy delete failed: PE500 ")); - } - } - } - private void deleteOperationalPolicy(String actionCd) throws Exception { ModelProperties prop = new ModelProperties(modelName, controlName, actionCd, false, modelBpmnProp, modelProp); @@ -166,19 +131,6 @@ public class PolicyClientIT extends AbstractIT { } } - // @Test - /** - * Temporarily disabled Test. - */ - public void testCreateUpdateDeleteStringMatchPolicy() throws Exception { - - createUpdateStringMatch(CldsEvent.ACTION_SUBMIT); - - TimeUnit.SECONDS.sleep(20); - - deleteStringMatchPolicy(CldsEvent.ACTION_DELETE); - } - // @Test /** * Temporarily disabled Test. diff --git a/src/test/java/org/onap/clamp/clds/it/RefPropIT.java b/src/test/java/org/onap/clamp/clds/it/RefPropIT.java index 473ce4a27..4617f5b42 100644 --- a/src/test/java/org/onap/clamp/clds/it/RefPropIT.java +++ b/src/test/java/org/onap/clamp/clds/it/RefPropIT.java @@ -51,7 +51,7 @@ public class RefPropIT extends AbstractIT { */ @Test public void testJsonTemplate() throws IOException { - ObjectNode root = (ObjectNode) refProp.getJsonTemplate("sm.template"); + ObjectNode root = (ObjectNode) refProp.getJsonTemplate("tca.template"); root.put("closedLoopControlName", "ClosedLoop-FRWL-SIG-1582f840-2881-11e6-b4ec-005056a9d756"); ObjectMapper mapper = new ObjectMapper(); diff --git a/src/test/java/org/onap/clamp/clds/it/SdcIT.java b/src/test/java/org/onap/clamp/clds/it/SdcIT.java index 8883af254..46ac4089c 100644 --- a/src/test/java/org/onap/clamp/clds/it/SdcIT.java +++ b/src/test/java/org/onap/clamp/clds/it/SdcIT.java @@ -57,21 +57,6 @@ public class SdcIT extends AbstractIT { System.setProperty("AJSC_CONF_HOME", System.getProperty("user.dir") + "/src/test/resources/"); } - @Test - public void testBlueprint() throws Exception { - String modelProp = ResourceFileUtil.getResourceAsString("example/modelProp.json"); - String modelBpmnProp = ResourceFileUtil.getResourceAsString("example/modelBpmnProp.json"); - String modelName = "example-model06"; - String controlName = "ClosedLoop-FRWL-SIG04-1582f840-test-test-1234-005056a9d756"; - String docText = ResourceFileUtil.getResourceAsString("example/templateProp.json"); - ModelProperties prop = new ModelProperties(modelName, controlName, CldsEvent.ACTION_SUBMIT, - true, modelBpmnProp, modelProp); - String blueprint = SdcReq.formatBlueprint(refProp, prop, docText); - System.out.println("blueprint=" + blueprint); - //assertEquals(blueprint, ""); - } - - @Test public void testTcaBlueprint() throws Exception { String modelProp = ResourceFileUtil.getResourceAsString("example/modelPropForPolicy.json"); diff --git a/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java b/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java index f87bd37dd..60056d42f 100644 --- a/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java +++ b/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java @@ -54,22 +54,6 @@ public class ModelPropertiesTest { ModelProperties prop = new ModelProperties("example-model-name", "example-control-name", null, true, modelBpmn, modelBpmnProp); - StringMatch stringMatch = prop.getType(StringMatch.class); - assertTrue(stringMatch.isFound()); - assertEquals("1505133578560", stringMatch.getResourceGroups().get(0).getGroupNumber()); - assertEquals("0", stringMatch.getResourceGroups().get(0).getPolicyId()); - assertEquals(1, stringMatch.getResourceGroups().get(0).getServiceConfigurations().size()); - List aaiMathcingFields = new ArrayList(); - aaiMathcingFields.add("complex.city"); - assertEquals(aaiMathcingFields, - stringMatch.getResourceGroups().get(0).getServiceConfigurations().get(0).getaaiMatchingFields()); - assertEquals("1600", stringMatch.getResourceGroups().get(0).getServiceConfigurations().get(0).getAgeLimit()); - assertEquals(1, stringMatch.getResourceGroups().get(0).getServiceConfigurations().get(0).getStringSet().size()); - - Collector collector = prop.getType(Collector.class); - assertTrue(collector.isFound()); - assertEquals("DCAE-COLLECTOR-UCSNMP", collector.getTopicPublishes()); - Policy policy = prop.getType(Policy.class); assertTrue(policy.isFound()); assertEquals(1, policy.getPolicyChains().size()); diff --git a/src/test/resources/clds/clds-reference.properties b/src/test/resources/clds/clds-reference.properties index fb91197d1..f2ec43b76 100644 --- a/src/test/resources/clds/clds-reference.properties +++ b/src/test/resources/clds/clds-reference.properties @@ -34,7 +34,7 @@ tca.signature.template={"nfNamingCode":"ENBE","target":"common_id","targetType": # # DCAE request build properties # -dcae.template={"properties":{"service_name":"","service_ids":[],"vnf_ids":[],"location_ids":[]},"template":{"string_matching":{"dcae":{"inputTopic":"","outputTopic":"","closedLoopControlName":"","closedLoopEventClient":"configuration.dcae.microservice.stringmatcher.xml","policyName":"","policyScope":"service=vSCP;resource=F5;type=configuration","policyVersion":"v0.0.1","serviceConfigurations":{}}}}} +dcae.template={"properties":{"service_name":"","service_ids":[],"vnf_ids":[],"location_ids":[]},"template":{"tca":{"dcae":{"inputTopic":"","outputTopic":"","closedLoopControlName":"","closedLoopEventClient":"configuration.dcae.microservice.tca.xml","policyName":"","policyScope":"service=vSCP;resource=F5;type=configuration","policyVersion":"v0.0.1","serviceConfigurations":{}}}}} dcae.decode.service_ids={"vUSP":["vUSP - vCTS"],"Trinity":["ASBGv TLS VNF","ASBGv No TLS","ASBGv (NO TLS) VNF","ASBGv TLS","NSBGv VNF","NSBGv"],"vSCP":["AKRON_vSCP_F5_FW-SVC/vSCP_F5_FW 1","ALLEN_vSCP_F5_FW-SVC/vSCP_F5_FW 1"],"vProbes":["vProbes - FW"]} # # SDC request blueprint properties @@ -51,22 +51,6 @@ policy.ms.type=MicroService policy.ms.policyNamePrefix=Config_MS_ policy.op.type=BRMS_Param policy.op.policyNamePrefix=Config_BRMS_Param_ - -# by service: xxx -# -# -# String Match MicroService Policy request build properties -# -# default -sm.template={"service":"StringMatchingConfiguration","location":"Edge","uuid":"TestUUID","policyName":"???","description":"from clds","configName":"com.att.d2.policy.StringMatchingConfiguration","templateVersion":"1604","priority":"4","version":"1610","policyScope":"resource=F5,service=vSCP,type=configuration,closedLoopControlName=vSCP_F5_Firewall_d925ed73-8231-4d02-9545-db4e101f88f8","content":{"serviceConfigurations":{}}} -# by service: vSCP -sm.template.vSCP={"service":"StringMatchingConfiguration","location":"Edge","uuid":"TestUUID","policyName":"???","description":"from clds","configName":"com.att.d2.policy.StringMatchingConfiguration","templateVersion":"1604","priority":"4","version":"0.1.0-SNAPSHOT","policyScope":"resource=F5,service=vSCP,type=configuration,closedLoopControlName=vSCP_F5_Firewall_d925ed73-8231-4d02-9545-db4e101f88f8","content":{"serviceConfigurations":{}}} -sm.sc.template={} -# -# default -sm.rulegroup=true -# by service: vSCP -sm.rulegroup.vSCP=false # # # Operational Policy request build properties @@ -113,9 +97,9 @@ action.test.override=false action.insert.test.event=false CLDS_SERVICE_CACHE_MAX_SECONDS=14400 # -globalProps={"collector": {"topicPublishes": {"DCAE-COLLECTOR-UCSNMP": "DCAE-COLLECTOR-UCSNMP", "GFP-IP-SNMP-TRAPS" : "GFP-IP-SNMP-TRAPS" } }, "string_match": { "topicPublishes": { "DCAE-CL-EVENT": "DCAE-CL-EVENT" }, "aaiMatchingFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "ProvStatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "aaiSendFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "Provstatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "eventSourceType": { "f5BigIP": "f5BigIP", "vSBG_Alarms": "vSBG_Alarms", "vCTS_Alarms": "vCTS_Alarms" }, "eventSeverity": { "NORMAL": "NORMAL", "not-NORMAL": "not-NORMAL", "WARNING": "WARNING", "MINOR": "MINOR", "MAJOR": "MAJOR", "CRITICAL": "CRITICAL" }, "timeWindow": 0, "ageLimit": 1600, "outputEventName": { "": "", "OnSet": "OnSet", "Abatement": "Abatement" }, "createClosedLoopEventId": { "Initial": "Initial", "Close": "Close" } }, "global": { "service": { "": "", "vUSP": "vUSP", "vSCP": "vSCP", "vProbes": "vProbes" } }, "policy": { "timeout": 5, "recipe": { "": "", "restart": "Restart", "rebuild": "Rebuild", "migrate": "Migrate" }, "maxRetries": "3", "retryTimeLimit": 180, "resource": { "vCTS": "vCTS", "v3CDB": "v3CDB", "vUDR": "vUDR", "vCOM": "vCOM", "vRAR": "vRAR", "vLCS": "vLCS", "vUDR-BE": "vUDR-BE", "vDBE": "vDBE" }, "parentPolicyConditions": { "Failure_Retries": "Failure: Max Retries Exceeded", "Failure_Timeout": "Failure: Time Limit Exceeded", "Failure_Exception": "Failure: Exception", "Failure": "Failure: Other", "Success": "Success" } }, "shared": { "byService": { "": { "vf": { }, "vfc": { }, "location": { }, "alarmCondition": { } }, "vSCP": { "vf": { "frwl_scp": "FW" }, "vfc": { "FW": "FW" }, "location": { "AKRNOHAH": "Akron", "ALLNTXSA": "Allen-2" }, "alarmCondition": { "authenticationFailure": "authenticationFailure", "bigipActive": "bigipActive", "bigipActiveActive": "bigipActiveActive", "bigipAgentRestart": "bigipAgentRestart", "bigipAgentShutdown": "bigipAgentShutdown", "bigipAgentStart": "bigipAgentStart", "bigipAggrReaperStateChange": "bigipAggrReaperStateChange", "bigipAomCpuTempTooHigh": "bigipAomCpuTempTooHigh", "bigipARPConflict": "bigipARPConflict", "bigipAsmBruteForceAttackDetected": "bigipAsmBruteForceAttackDetected", "bigipAsmDosAttackDetected": "bigipAsmDosAttackDetected", "bigipAsmFtpRequestBlocked": "bigipAsmFtpRequestBlocked", "bigipAsmFtpRequestViolation": "bigipAsmFtpRequestViolation", "bigipAsmRequestBlocked": "bigipAsmRequestBlocked", "bigipAsmRequestViolation": "bigipAsmRequestViolation", "bigipAsmSmtpRequestBlocked": "bigipAsmSmtpRequestBlocked", "bigipAsmSmtpRequestViolation": "bigipAsmSmtpRequestViolation", "bigipAuthFailed": "bigipAuthFailed", "bigipAvrAlertsMetricSmtp": "bigipAvrAlertsMetricSmtp", "bigipAvrAlertsMetricSnmp": "bigipAvrAlertsMetricSnmp", "bigipBladeNoPower": "bigipBladeNoPower", "bigipBladeOffline": "bigipBladeOffline", "bigipBladeTempHigh": "bigipBladeTempHigh", "bigipChassisFanBad": "bigipChassisFanBad", "bigipChassisPowerSupplyBad": "bigipChassisPowerSupplyBad", "bigipChassisTempHigh": "bigipChassisTempHigh", "bigipChmandAlertFanTrayBad": "bigipChmandAlertFanTrayBad", "bigipClusterdNoResponse": "bigipClusterdNoResponse", "bigipClusterPrimaryChanged": "bigipClusterPrimaryChanged", "bigipCompLimitExceeded": "bigipCompLimitExceeded", "bigipConfigLoaded": "bigipConfigLoaded", "bigipCpuFanSpeedBad": "bigipCpuFanSpeedBad", "bigipCpuFanSpeedLow": "bigipCpuFanSpeedLow", "bigipCpuTempHigh": "bigipCpuTempHigh", "bigipDiskPartitionGrowth": "bigipDiskPartitionGrowth", "bigipDiskPartitionWarn": "bigipDiskPartitionWarn", "bigipDnsRequestRateLimiterEngaged": "bigipDnsRequestRateLimiterEngaged", "bigipDosAttackStart": "bigipDosAttackStart", "bigipDosAttackStop": "bigipDosAttackStop", "bigipExternalLinkChange": "bigipExternalLinkChange", "bigipFeatureFailed": "bigipFeatureFailed", "bigipFeatureOnline": "bigipFeatureOnline", "bigipFipsDeviceError": "bigipFipsDeviceError", "bigipGtmAppAvail": "bigipGtmAppAvail", "bigipGtmAppNotAvail": "bigipGtmAppNotAvail", "bigipGtmAppObjAvail": "bigipGtmAppObjAvail", "bigipGtmAppObjNotAvail": "bigipGtmAppObjNotAvail", "bigipGtmBig3dSslCertExpired": "bigipGtmBig3dSslCertExpired", "bigipGtmBig3dSslCertWillExpire": "bigipGtmBig3dSslCertWillExpire", "bigipGtmBoxAvail": "bigipGtmBoxAvail", "bigipGtmBoxNotAvail": "bigipGtmBoxNotAvail", "bigipGtmDcAvail": "bigipGtmDcAvail", "bigipGtmDcDisabled": "bigipGtmDcDisabled", "bigipGtmDcEnabled": "bigipGtmDcEnabled", "bigipGtmDcNotAvail": "bigipGtmDcNotAvail", "bigipGtmJoinedGroup": "bigipGtmJoinedGroup", "bigipGtmKeyGenerationExpiration": "bigipGtmKeyGenerationExpiration", "bigipGtmKeyGenerationRollover": "bigipGtmKeyGenerationRollover", "bigipGtmLeftGroup": "bigipGtmLeftGroup", "bigipGtmLinkAvail": "bigipGtmLinkAvail", "bigipGtmLinkDisabled": "bigipGtmLinkDisabled", "bigipGtmLinkEnabled": "bigipGtmLinkEnabled", "bigipGtmLinkNotAvail": "bigipGtmLinkNotAvail", "bigipGtmPoolAvail": "bigipGtmPoolAvail", "bigipGtmPoolDisabled": "bigipGtmPoolDisabled", "bigipGtmPoolEnabled": "bigipGtmPoolEnabled", "bigipGtmPoolMbrAvail": "bigipGtmPoolMbrAvail", "bigipGtmPoolMbrDisabled": "bigipGtmPoolMbrDisabled", "bigipGtmPoolMbrEnabled": "bigipGtmPoolMbrEnabled", "bigipGtmPoolMbrNotAvail": "bigipGtmPoolMbrNotAvail", "bigipGtmPoolNotAvail": "bigipGtmPoolNotAvail", "bigipGtmProberPoolDisabled": "bigipGtmProberPoolDisabled", "bigipGtmProberPoolEnabled": "bigipGtmProberPoolEnabled", "bigipGtmProberPoolMbrDisabled": "bigipGtmProberPoolMbrDisabled", "bigipGtmProberPoolMbrEnabled": "bigipGtmProberPoolMbrEnabled", "bigipGtmProberPoolMbrStatusChange": "bigipGtmProberPoolMbrStatusChange", "bigipGtmProberPoolMbrStatusChangeReason": "bigipGtmProberPoolMbrStatusChangeReason", "bigipGtmProberPoolStatusChange": "bigipGtmProberPoolStatusChange", "bigipGtmProberPoolStatusChangeReason": "bigipGtmProberPoolStatusChangeReason", "bigipGtmRequestRateLimiterEngaged": "bigipGtmRequestRateLimiterEngaged", "bigipGtmServerAvail": "bigipGtmServerAvail", "bigipGtmServerDisabled": "bigipGtmServerDisabled", "bigipGtmServerEnabled": "bigipGtmServerEnabled", "bigipGtmServerNotAvail": "bigipGtmServerNotAvail", "bigipGtmSslCertExpired": "bigipGtmSslCertExpired", "bigipGtmSslCertWillExpire": "bigipGtmSslCertWillExpire", "bigipGtmVsAvail": "bigipGtmVsAvail", "bigipGtmVsDisabled": "bigipGtmVsDisabled", "bigipGtmVsEnabled": "bigipGtmVsEnabled", "bigipGtmVsNotAvail": "bigipGtmVsNotAvail", "bigipGtmWideIpAvail": "bigipGtmWideIpAvail", "bigipGtmWideIpDisabled": "bigipGtmWideIpDisabled", "bigipGtmWideIpEnabled": "bigipGtmWideIpEnabled", "bigipGtmWideIpNotAvail": "bigipGtmWideIpNotAvail", "bigipHardDiskFailure": "bigipHardDiskFailure", "bigipInetPortExhaustion": "bigipInetPortExhaustion", "bigipLibhalBladePoweredOff": "bigipLibhalBladePoweredOff", "bigipLibhalDiskBayRemoved": "bigipLibhalDiskBayRemoved", "bigipLibhalSensorAlarmCritical": "bigipLibhalSensorAlarmCritical", "bigipLibhalSsdLogicalDiskRemoved": "bigipLibhalSsdLogicalDiskRemoved", "bigipLibhalSsdPhysicalDiskRemoved": "bigipLibhalSsdPhysicalDiskRemoved", "bigipLicenseExpired": "bigipLicenseExpired", "bigipLicenseFailed": "bigipLicenseFailed", "bigipLogAlert": "bigipLogAlert", "bigipLogCrit": "bigipLogCrit", "bigipLogEmerg": "bigipLogEmerg", "bigipLogErr": "bigipLogErr", "bigipLogWarning": "bigipLogWarning", "bigipLtmVsAvail": "bigipLtmVsAvail", "bigipLtmVsDisabled": "bigipLtmVsDisabled", "bigipLtmVsEnabled": "bigipLtmVsEnabled", "bigipLtmVsUnavail": "bigipLtmVsUnavail", "bigipMemberRate": "bigipMemberRate", "bigipNetLinkDown": "bigipNetLinkDown", "bigipNodeDown": "bigipNodeDown", "bigipNodeRate": "bigipNodeRate", "bigipNodeUp": "bigipNodeUp", "bigipPacketRejected": "bigipPacketRejected", "bigipPsAbsent": "bigipPsAbsent", "bigipPsPowerOff": "bigipPsPowerOff", "bigipPsPowerOn": "bigipPsPowerOn", "bigipRaidDiskFailure": "bigipRaidDiskFailure", "bigipServiceDown": "bigipServiceDown", "bigipServiceUp": "bigipServiceUp", "bigipSsdMwiNearThreshold": "bigipSsdMwiNearThreshold", "bigipSsdMwiReachedThreshold": "bigipSsdMwiReachedThreshold", "bigipSslLimitExceeded": "bigipSslLimitExceeded", "bigipStandby": "bigipStandby", "bigipStandByFail": "bigipStandByFail", "bigipSystemCheckAlertCurrentHigh": "bigipSystemCheckAlertCurrentHigh", "bigipSystemCheckAlertCurrentLow": "bigipSystemCheckAlertCurrentLow", "bigipSystemCheckAlertFanSpeedLow": "bigipSystemCheckAlertFanSpeedLow", "bigipSystemCheckAlertMilliVoltageHigh": "bigipSystemCheckAlertMilliVoltageHigh", "bigipSystemCheckAlertMilliVoltageLow": "bigipSystemCheckAlertMilliVoltageLow", "bigipSystemCheckAlertPowerHigh": "bigipSystemCheckAlertPowerHigh", "bigipSystemCheckAlertPowerLow": "bigipSystemCheckAlertPowerLow", "bigipSystemCheckAlertTempHigh": "bigipSystemCheckAlertTempHigh", "bigipSystemCheckAlertVoltageHigh": "bigipSystemCheckAlertVoltageHigh", "bigipSystemCheckAlertVoltageLow": "bigipSystemCheckAlertVoltageLow", "bigipSystemShutdown": "bigipSystemShutdown", "bigipTamdAlert": "bigipTamdAlert", "bigipTrafficGroupActivate": "bigipTrafficGroupActivate", "bigipTrafficGroupActive": "bigipTrafficGroupActive", "bigipTrafficGroupDeactivate": "bigipTrafficGroupDeactivate", "bigipTrafficGroupForcedOffline": "bigipTrafficGroupForcedOffline", "bigipTrafficGroupOffline": "bigipTrafficGroupOffline", "bigipTrafficGroupStandby": "bigipTrafficGroupStandby", "bigipUnsolicitedRepliesExceededThreshold": "bigipUnsolicitedRepliesExceededThreshold", "bigipUpdateError": "bigipUpdateError", "bigipUpdatePriority": "bigipUpdatePriority", "bigipUpdateServer": "bigipUpdateServer", "bigipVcmpAlertsVcmpHBDetected": "bigipVcmpAlertsVcmpHBDetected", "bigipVcmpAlertsVcmpHBLost": "bigipVcmpAlertsVcmpHBLost", "bigipVcmpAlertsVcmpPowerOff": "bigipVcmpAlertsVcmpPowerOff", "bigipVcmpAlertsVcmpPowerOn": "bigipVcmpAlertsVcmpPowerOn", "bigipVirtualRate": "bigipVirtualRate", "coldStart": "coldStart", "emASMSigInstallComplete": "emASMSigInstallComplete", "emASMSigInstallFailed": "emASMSigInstallFailed", "emASMSigUpdateAvailable": "emASMSigUpdateAvailable", "emASMSigUpdateFailed": "emASMSigUpdateFailed", "emCertificateExpiration": "emCertificateExpiration", "emCpuUsage": "emCpuUsage", "emDeviceActiveMode": "emDeviceActiveMode", "emDeviceClockSkew": "emDeviceClockSkew", "emDeviceConfigSettingChanged": "emDeviceConfigSettingChanged", "emDeviceConfigSync": "emDeviceConfigSync", "emDeviceForcedOfflineMode": "emDeviceForcedOfflineMode", "emDeviceImpaired": "emDeviceImpaired", "emDeviceOfflineMode": "emDeviceOfflineMode", "emDeviceStandbyMode": "emDeviceStandbyMode", "emDeviceUnreachable": "emDeviceUnreachable", "emDiskUsage": "emDiskUsage", "emGatherServiceContractFailure": "emGatherServiceContractFailure", "emHaSyncFailed": "emHaSyncFailed", "emHotfixInstallComplete": "emHotfixInstallComplete", "emHotfixInstallFailed": "emHotfixInstallFailed", "emMemoryUsage": "emMemoryUsage", "emPerformanceStorageCap": "emPerformanceStorageCap", "emPerformanceStorageDays": "emPerformanceStorageDays", "emPerformanceThreshold": "emPerformanceThreshold", "emRaidDriveFailureDetected": "emRaidDriveFailureDetected", "emRaidDriveRebuildComplete": "emRaidDriveRebuildComplete", "emSchedBackupFailed": "emSchedBackupFailed", "emScheduledArchiveFailed": "emScheduledArchiveFailed", "emServiceContractExpiry": "emServiceContractExpiry", "emSoftwareInstallComplete": "emSoftwareInstallComplete", "emSoftwareInstallFailed": "emSoftwareInstallFailed", "emStatsCollectionRateCap": "emStatsCollectionRateCap", "emStatsDBConnectivityLost": "emStatsDBConnectivityLost", "emStatsDBConnectivityRestored": "emStatsDBConnectivityRestored", "fallingAlarm": "fallingAlarm", "ipv6IfStateChange": "ipv6IfStateChange", "linkDown": "linkDown", "linkUp": "linkUp", "mteEventSetFailure": "mteEventSetFailure", "mteTriggerFailure": "mteTriggerFailure", "mteTriggerFalling": "mteTriggerFalling", "mteTriggerFired": "mteTriggerFired", "mteTriggerRising": "mteTriggerRising", "netSnmpExampleHeartbeatNotification": "netSnmpExampleHeartbeatNotification", "newRoot": "newRoot", "nsNotifyRestart": "nsNotifyRestart", "nsNotifyShutdown": "nsNotifyShutdown", "nsNotifyStart": "nsNotifyStart", "risingAlarm": "risingAlarm", "schedActionFailure": "schedActionFailure", "smScriptAbort": "smScriptAbort", "smScriptException": "smScriptException", "smScriptResult": "smScriptResult", "topologyChange": "topologyChange", "ucdShutdown": "ucdShutdown", "ucdStart": "ucdStart", "warmStart": "warmStart" } }, "vUSP": { "vf": { "ctsf-xxx": "vCTS" }, "vfc": { "vCTS - CFED": "vCTS - CFED", "vCTS - Config": "vCTS - Config", "vCTS - DFED": "vCTS - DFED", "vCTS - TAFE-fsd": "vCTS - TAFE-fsd", "vCTS - GLS": "vCTS - GLS", "vCTS - XXX": "vCTS - XXX", "vCTS - Management Interface": "vCTS - Management Interface", "vCTS - SPFE-pfe": "vCTS - SPFE-pfe", "vCTS - DNS": "vCTS - DNS", "vCTS - SPFE-spd": "vCTS - SPFE-spd", "vCTS - SPFE-spt": "vCTS - SPFE-spt", "vCTS - TAFE-tas": "vCTS - TAFE-tas" }, "location": { "SNDGCA06": "San Diego(core site) A06", "SNDGCA64": "San Diego(core site) A64", "SNANTXCA": "San Antonio(core site)", "KSCYMO09": "Kansas City(core site)", "kings_mountain": "Kings Mountain(AMG)", "Secaucus": "Secaucus(AMG)", "lisle": "Lisle(AMG)", "concord": "Concord(AMG)", "houston": "Houston(AMG)", "akron": "Akron(AMG)" }, "alarmCondition": { "acrTemporaryBufferOverload": "acrTemporaryBufferOverload", "adnsExtendedTTLcaching": "adnsExtendedTTLcaching", "adnsQueryFailureCaching": "adnsQueryFailureCaching", "adnsQueueCongestion": "adnsQueueCongestion", "asdaCommunicationFailure": "asdaCommunicationFailure", "asdaRequestQueue": "asdaRequestQueue", "capacityLicenseKeyExpiration": "capacityLicenseKeyExpiration", "capacityLicenseKeyNearExpiration": "capacityLicenseKeyNearExpiration", "capacityLicenseKeyValidationError": "capacityLicenseKeyValidationError", "cardConnectionLost": "cardConnectionLost", "ccdbCommunicationFailure": "ccdbCommunicationFailure", "cpiAlrmCritical": "cpiAlrmCritical", "cpiAlrmMajor": "cpiAlrmMajor", "cpiAlrmMinor": "cpiAlrmMinor", "cpiAlrmWarning": "cpiAlrmWarning", "cpiAsrtEsc": "cpiAsrtEsc", "cpiAsrtNonEsc": "cpiAsrtNonEsc", "cpiAsrtNonEscCritical": "cpiAsrtNonEscCritical", "cpiAsrtNonEscMajor": "cpiAsrtNonEscMajor", "cpiAsrtNonEscMinor": "cpiAsrtNonEscMinor", "cpiAudErrCount": "cpiAudErrCount", "cpiAudManAct": "cpiAudManAct", "cpiAudNewEvent": "cpiAudNewEvent", "cpiCompleteRateAlarm": "cpiCompleteRateAlarm", "cpiCTS3xxFailRate": "cpiCTS3xxFailRate", "cpiCTS4xxFailRate": "cpiCTS4xxFailRate", "cpiCTS5xxFailRate": "cpiCTS5xxFailRate", "cpiCTS6xxFailRate": "cpiCTS6xxFailRate", "cpiCTSSIPRetransmitInvite": "cpiCTSSIPRetransmitInvite", "cpiCTSSIPRetransmitNonInvite": "cpiCTSSIPRetransmitNonInvite", "cpiDropMGAllocConnReq": "cpiDropMGAllocConnReq", "cpiDropRateAlarm": "cpiDropRateAlarm", "cpiExceptionService": "cpiExceptionService", "cpiFailRateAlarm": "cpiFailRateAlarm", "cpiFailSCTPFastRetransIncr": "cpiFailSCTPFastRetransIncr", "cpiFailSCTPFastRetransRate": "cpiFailSCTPFastRetransRate", "cpiFailSCTPSRTT1Incr": "cpiFailSCTPSRTT1Incr", "cpiFailSCTPSRTT2Incr": "cpiFailSCTPSRTT2Incr", "cpiFailSCTPT3RetransIncr": "cpiFailSCTPT3RetransIncr", "cpiFailSCTPT3RetransRate": "cpiFailSCTPT3RetransRate", "cpiFileSysUsage": "cpiFileSysUsage", "cpiMemAllocFail": "cpiMemAllocFail", "cpiNumOfLICDRDel": "cpiNumOfLICDRDel", "cpiReinitServiceSelf": "cpiReinitServiceSelf", "cpiSIPRetransmitInvite": "cpiSIPRetransmitInvite", "cpiSIPRetransmitNonInvite": "cpiSIPRetransmitNonInvite", "cpiSS7DropSCTPPktsRcvd": "cpiSS7DropSCTPPktsRcvd", "cpiSS7FailSCTPFastRetransRate": "cpiSS7FailSCTPFastRetransRate", "cpiStabilityAlarm": "cpiStabilityAlarm", "cpuOverload": "cpuOverload", "databaseConnectionLost": "databaseConnectionLost", "databaseReplicationLinkDown": "databaseReplicationLinkDown", "databaseSizeExhausted": "databaseSizeExhausted", "dbHighCpuUtilization": "dbHighCpuUtilization", "dbOffline": "dbOffline", "dbStatusUnexpected": "dbStatusUnexpected", "degradedResource": "degradedResource", "degrow": "degrow", "deviceServerCxnLost": "deviceServerCxnLost", "diamLinkDown": "diamLinkDown", "diamMaxClientsExceeded": "diamMaxClientsExceeded", "dnsThreshold": "dnsThreshold", "ethernetError": "ethernetError", "ethernetLinkDown": "ethernetLinkDown", "externalConnectivity": "externalConnectivity", "featureLicenseExpiration": "featureLicenseExpiration", "featureLicenseKeyNearExpiration": "featureLicenseKeyNearExpiration", "featureLockValidationError": "featureLockValidationError", "fqdnError": "fqdnError", "fru": "fru", "gatewayCongestion": "gatewayCongestion", "gatewayForcedOOS": "gatewayForcedOOS", "gatewayProvisioningError": "gatewayProvisioningError", "gatewayUnreachable": "gatewayUnreachable", "gatewayUnregistered": "gatewayUnregistered", "globalParameterNotFound": "globalParameterNotFound", "glsInvalidCellId": "glsInvalidCellId", "glsServerUnavailable": "glsServerUnavailable", "grow": "grow", "h248MessageBufferDepletion": "h248MessageBufferDepletion", "hlrSyncConnection": "hlrSyncConnection", "hlrSyncQueue": "hlrSyncQueue", "hostDown": "hostDown", "hostReset": "hostReset", "invalidGateway": "invalidGateway", "iriLinkDown": "iriLinkDown", "ldapServerConnectionLost": "ldapServerConnectionLost", "lispBufferFullExternalLIG": "lispBufferFullExternalLIG", "llcDown": "llcDown", "logicalLinkDown": "logicalLinkDown", "logicalLinkNotFound": "logicalLinkNotFound", "logRotateThreshold": "logRotateThreshold", "memoryOverload": "memoryOverload", "nodeConfigFailure": "nodeConfigFailure", "nodeGroupOOS": "nodeGroupOOS", "nodeOOS": "nodeOOS", "nonCompliantFaultGroupMemberState": "nonCompliantFaultGroupMemberState", "nonCsAddrChannelDepletion": "nonCsAddrChannelDepletion", "numberOfTuplesInUse": "numberOfTuplesInUse", "osSecInfoModificationDetected": "osSecInfoModificationDetected", "osSecInformationMissing": "osSecInformationMissing", "osSecUnexpectedInformation": "osSecUnexpectedInformation", "pdnsMySqlReplication": "pdnsMySqlReplication", "pktCorruptionDetectedViaRCCLANCheck": "pktCorruptionDetectedViaRCCLANCheck", "platformCommandFailure": "platformCommandFailure", "pmDataNotCollected": "pmDataNotCollected", "prdbConnectWithAlternateFailure": "prdbConnectWithAlternateFailure", "prdbSyncDataToAlternateFailure": "prdbSyncDataToAlternateFailure", "preAllocatedResourceOverload": "preAllocatedResourceOverload", "prifSocketError": "prifSocketError", "processDown": "processDown", "processNotStarted": "processNotStarted", "provisioningInhibitedMode": "provisioningInhibitedMode", "prsCallInstanceExceeded": "prsCallInstanceExceeded", "prsCpuOverload": "prsCpuOverload", "prsDatabaseMigrationFailure": "prsDatabaseMigrationFailure", "prsFailureToConnectWithPRDB": "prsFailureToConnectWithPRDB", "prsQueueExceeded": "prsQueueExceeded", "rccInhibitedMode": "rccInhibitedMode", "remotedbLinkDown": "remotedbLinkDown", "remoteQueryServerFailure": "remoteQueryServerFailure", "restore": "restore", "serviceCFGDataTimestampError": "serviceCFGDataTimestampError", "serviceCommCxnLost": "serviceCommCxnLost", "serviceOnewayCommunication": "serviceOnewayCommunication", "sheddingOverload": "sheddingOverload", "simxml": "simxml", "sipLinkSetMaxQuarantineList": "sipLinkSetMaxQuarantineList", "sipLinkSetUnavailable": "sipLinkSetUnavailable", "sipLinkUnavailable": "sipLinkUnavailable", "smdiSocketError": "smdiSocketError", "socketError": "socketError", "softwareAllocatedResourceOverload": "softwareAllocatedResourceOverload", "softwareComponentDown": "softwareComponentDown", "softwareComponentStandbyNotReady": "softwareComponentStandbyNotReady", "softwareLicense": "softwareLicense", "svcdegrow": "svcdegrow", "svcgrow": "svcgrow", "swVersionMismatch": "swVersionMismatch", "tftpDownloadCorrupt": "tftpDownloadCorrupt", "timeStampValueOutOfSystemRange": "timeStampValueOutOfSystemRange", "tlsInitError": "tlsInitError", "transactionHandlerBlockDepletion": "transactionHandlerBlockDepletion", "upgrade": "upgrade", "usageOfSyncTable": "usageOfSyncTable", "utHttpProxyConnectionDown": "utHttpProxyConnectionDown", "wpifSocketError": "wpifSocketError", "BackupFailure": "BackupFailure", "Configuration": "Configuration", "COTRecordTransferFailure": "COTRecordTransferFailure", "CPMUSERDATAINCONSITENCY": "CPMUSERDATAINCONSITENCY", "CPMUSERDATARESTORED": "CPMUSERDATARESTORED", "EventQueueCapacity": "EventQueueCapacity", "ICMPFailure": "ICMPFailure", "IPsecConfig": "IPsecConfig", "LinkDown": "LinkDown", "NotifyDisabled": "NotifyDisabled", "NotifyLocked": "NotifyLocked", "NumTL1MeasThresh": "NumTL1MeasThresh", "RADIUSTOLDAPFAILURE": "RADIUSTOLDAPFAILURE", "ROOTACCESSDENIED": "ROOTACCESSDENIED", "ROOTFTPVIOLATION": "ROOTFTPVIOLATION", "ROOTLOGINVIOLATION": "ROOTLOGINVIOLATION", "ROOTSSHLOGINVIOLATION": "ROOTSSHLOGINVIOLATION", "SetupAAAFailure": "SetupAAAFailure", "SNETrapOverload": "SNETrapOverload", "SNMPAuthenticationFailure": "SNMPAuthenticationFailure", "SNMPFailure": "SNMPFailure", "SUTOROOTFAILURE": "SUTOROOTFAILURE", "SYSTEMTrapOverload": "SYSTEMTrapOverload", "ThresholdCrossed": "ThresholdCrossed", "UndiscoveredObject": "UndiscoveredObject", "WriteAAAFailure": "WriteAAAFailure" } }, "Trinity": { "vf": { "aSBG": "aSBG", "nSBG": "nSBG", "tSBG": "tSBG" }, "vfc": { "pld": "PL - Payload Processor", "scr": "SC - System Controller" }, "location": { "SNDGCA64": "San Diego SAN3", "ALPRGAED": "Alpharetta PDK1", "LSLEILAA":"Lisle DPA3" }, "alarmCondition": { "A+Fallback+Operation+will+soon+be+started":"A Fallback Operation will soon be started", "BRM%2C+Auto+Export+Backup+Failed":"BRM, Auto Export Backup Failed", "BRM%2C+Scheduled+Backup+Failed":"BRM, Scheduled Backup Failed", "COM+SA%2C+AMF+Component+Cleanup+Failed":"COM SA, AMF Component Cleanup Failed", "COM+SA%2C+AMF+Component+Instantiation+Failed":"COM SA, AMF Component Instantiation Failed", "COM+SA%2C+AMF+SI+Unassigned":"COM SA, AMF SI Unassigned", "COM+SA%2C+CLM+Cluster+Node+Unavailable":"COM SA, CLM Cluster Node Unavailable", "COM+SA%2C+MDF+Detected+Model+Error":"COM SA, MDF Detected Model Error", "COM+SA%2C+Proxy+Status+of+a+Component+Changed+to+Unproxied":"COM SA, Proxy Status of a Component Changed to Unproxied", "File+Management%2C+Number+of+Files+in+FileGroup+Exceeded":"File Management, Number of Files in FileGroup Exceeded", "File+Management%2C+Max+Size+in+FileGroup+Exceeded":"File Management, Max Size in FileGroup Exceeded", "LOTC+Disk+Replication+Communication":"LOTC Disk Replication Communication", "LOTC+Disk+Replication+Consistency":"LOTC Disk Replication Consistency", "LOTC+Disk+Usage":"LOTC Disk Usage", "LOTC+memory+Usage":"LOTC memory Usage", "LOTC+Time+Synchronization":"LOTC Time Synchronization", "SBG%2C+BGF+Control+Link+Down":"SBG, BGF Control Link Down", "SBG%2C+BGF+Control+Link+Disabled":"SBG, BGF Control Link Disabled", "SBG%2C+BGF+Control+Link+Enabled":"SBG, BGF Control Link Enabled", "SBG%2C+BGF+Control+Link+Remote+Locked":"SBG, BGF Control Link Remote Locked", "SBG%2C+Charging+Data+Storage+Maximum+Records+Reached":"SBG, Charging Data Storage Maximum Records Reached", "SBG%2C+Charging+Server+Rejects+Charging+Data":"SBG, Charging Server Rejects Charging Data", "SBG%2C+Excessive+Packet+Rate+Detected+":"SBG, Excessive Packet Rate Detected ", "SBG%2C+High+Amount+of+Malformed+Packets+Received":"SBG, High Amount of Malformed Packets Received", "SBG%2C+High+Amount+of+STUN+Packets+Detected":"SBG, High Amount of STUN Packets Detected", "SBG%2C+High+Amount+of+TCP+SYN+Packets+Received":"SBG, High Amount of TCP SYN Packets Received", "SBG%2C+High+Amount+of+UDP+Packets+Received+":"SBG, High Amount of UDP Packets Received ", "SBG%2C+IP+Address+Blocked+Due+to+Excessive+Packet+Rate":"SBG, IP Address Blocked Due to Excessive Packet Rate", "SBG%2C+Lost+Connectivity+to+Diameter+Server":"SBG, Lost Connectivity to Diameter Server", "SBG%2C+Mated+Pair+out+of+Service":"SBG, Mated Pair out of Service", "SBG%2C+Network+Unavailable+for+Media+Handling":"SBG, Network Unavailable for Media Handling", "SBG%2C+Non-emergency+Call+Released+to+Free+Resources+for+Emergency+Call":"SBG, Non-emergency Call Released to Free Resources for Emergency Call", "SBG%2C+Not+Enough+Disk+Space+for+Storing+Charging+Data":"SBG, Not Enough Disk Space for Storing Charging Data", "SBG%2C+Payload+Mated+Pair+Failure":"SBG, Payload Mated Pair Failure", "SBG%2C+Payload+Processor+Failure":"SBG, Payload Processor Failure", "SBG%2C+Processor+Overloaded":"SBG, Processor Overloaded", "SBG%2C+Registered+User+Set+in+Quarantine":"SBG, Registered User Set in Quarantine", "SBG%2C+Registration+Contacts+Exceed+Configured+Threshold":"SBG, Registration Contacts Exceed Configured Threshold", "SBG%2C+Sequential+Restart+Initiated":"SBG, Sequential Restart Initiated", "SBG%2C+SIP+Abuse+Detected":"SBG, SIP Abuse Detected", "SBG%2C+SIP+Network+Locked":"SBG, SIP Network Locked", "SBG%2C+SIP+Next+Hop+Reachable":"SBG, SIP Next Hop Reachable", "SBG%2C+SIP+Next+Hop+Unreachable":"SBG, SIP Next Hop Unreachable", "SBG%2C+SIP+Request+Rejected+by+Network+Throttling":"SBG, SIP Request Rejected by Network Throttling", "SBG%2C+TLS+Certificate+Imported":"SBG, TLS Certificate Imported", "SBG%2C+Trace+Recording+Session+Number+Limit+Reached":"SBG, Trace Recording Session Number Limit Reached", "SBG%2C+Trace+Session+Deactivated":"SBG, Trace Session Deactivated", "SBG%2C+Trace+Session+Times+Out":"SBG, Trace Session Times Out", "SBG%2C+Unknown+Media+Type+or+Payload+Type":"SBG, Unknown Media Type or Payload Type" } }, "vProbes": { "vf": { }, "vfc": { }, "location": { }, "alarmCondition": { } } } } } -globalPropsPartial={"collector": {"topicPublishes": {"DCAE-COLLECTOR-UCSNMP": "DCAE-COLLECTOR-UCSNMP", "GFP-IP--SNMP-TRAPS" : "GFP-IP--SNMP-TRAPS" } }, "string_match": { "topicPublishes": { "DCAE-CL-EVENT": "DCAE-CL-EVENT" }, "aaiMatchingFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "ProvStatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "aaiSendFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "Provstatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "eventSourceType": { "f5BigIP": "f5BigIP", "vSBG_Alarms": "vSBG_Alarms", "vCTS_Alarms": "vCTS_Alarms" }, "eventSeverity": { "NORMAL": "NORMAL", "not-NORMAL": "not-NORMAL", "WARNING": "WARNING", "MINOR": "MINOR", "MAJOR": "MAJOR", "CRITICAL": "CRITICAL" }, "timeWindow": 0, "ageLimit": 1600, "outputEventName": { "": "", "OnSet": "OnSet", "Abatement": "Abatement" }, "createClosedLoopEventId": { "Initial": "Initial", "Close": "Close" } }, "global": { "service": { "": "", "vUSP": "vUSP", "vSCP": "vSCP", "vProbes": "vProbes" } }, "policy": { "timeout": 5, "recipe": { "": "", "restart": "Restart", "rebuild": "Rebuild", "migrate": "Migrate" }, "maxRetries": "3", "retryTimeLimit": 180, "resource": { "vCTS": "vCTS", "v3CDB": "v3CDB", "vUDR": "vUDR", "vCOM": "vCOM", "vRAR": "vRAR", "vLCS": "vLCS", "vUDR-BE": "vUDR-BE", "vDBE": "vDBE" }, "parentPolicyConditions": { "Failure_Retries": "Failure: Max Retries Exceeded", "Failure_Timeout": "Failure: Time Limit Exceeded", "Failure_Exception": "Failure: Exception", "Failure": "Failure: Other", "Success": "Success" } } } -globalPropsTest={"collector": {"topicPublishes": {"DCAE-COLLECTOR-UCSNMP": "DCAE-COLLECTOR-UCSNMP", "GFP-IP--SNMP-TRAPS" : "GFP-IP--SNMP-TRAPS" } }, "string_match": { "topicPublishes": { "DCAE-CL-EVENT": "DCAE-CL-EVENT" }, "aaiMatchingFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "ProvStatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "aaiSendFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "Provstatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "eventSourceType": { "f5BigIP": "f5BigIP", "vSBG_Alarms": "vSBG_Alarms", "vCTS_Alarms": "vCTS_Alarms" }, "eventSeverity": { "NORMAL": "NORMAL", "not-NORMAL": "not-NORMAL", "WARNING": "WARNING", "MINOR": "MINOR", "MAJOR": "MAJOR", "CRITICAL": "CRITICAL" }, "timeWindow": 0, "ageLimit": 1600, "outputEventName": { "": "", "OnSet": "OnSet", "Abatement": "Abatement" }, "createClosedLoopEventId": { "Initial": "Initial", "Close": "Close" } }, "global": { "service": { "": "", "vUSP": "vUSP", "vSCP": "vSCP", "vProbes": "vProbes" } }, "policy": { "timeout": 5, "recipe": { "": "", "restart": "Restart", "rebuild": "Rebuild", "migrate": "Migrate" }, "maxRetries": "3", "retryTimeLimit": 180, "resource": { "vCTS": "vCTS", "v3CDB": "v3CDB", "vUDR": "vUDR", "vCOM": "vCOM", "vRAR": "vRAR", "vLCS": "vLCS", "vUDR-BE": "vUDR-BE", "vDBE": "vDBE" }, "parentPolicyConditions": { "Failure_Retries": "Failure: Max Retries Exceeded", "Failure_Timeout": "Failure: Time Limit Exceeded", "Failure_Exception": "Failure: Exception", "Failure": "Failure: Other", "Success": "Success" } }, "shared": { "byService": { "": { "vf": { }, "vfc": { }, "location": { }, "alarmCondition": { } }, "vSCP": { "vf": { "frwl_scp": "FW" }, "vfc": { "FW": "FW" }, "location": { "AKRNOHAH": "Akron", "ALLNTXSA": "Allen-2" }, "alarmCondition": { "authenticationFailure": "authenticationFailure", "bigipActive": "bigipActive", "bigipActiveActive": "bigipActiveActive", "bigipAgentRestart": "bigipAgentRestart", "bigipAgentShutdown": "bigipAgentShutdown", "bigipAgentStart": "bigipAgentStart", "bigipAggrReaperStateChange": "bigipAggrReaperStateChange", "bigipAomCpuTempTooHigh": "bigipAomCpuTempTooHigh", "bigipARPConflict": "bigipARPConflict", "bigipAsmBruteForceAttackDetected": "bigipAsmBruteForceAttackDetected", "bigipAsmDosAttackDetected": "bigipAsmDosAttackDetected", "bigipAsmFtpRequestBlocked": "bigipAsmFtpRequestBlocked", "bigipAsmFtpRequestViolation": "bigipAsmFtpRequestViolation", "bigipAsmRequestBlocked": "bigipAsmRequestBlocked", "bigipAsmRequestViolation": "bigipAsmRequestViolation", "bigipAsmSmtpRequestBlocked": "bigipAsmSmtpRequestBlocked", "bigipAsmSmtpRequestViolation": "bigipAsmSmtpRequestViolation", "bigipAuthFailed": "bigipAuthFailed", "bigipAvrAlertsMetricSmtp": "bigipAvrAlertsMetricSmtp", "bigipAvrAlertsMetricSnmp": "bigipAvrAlertsMetricSnmp", "bigipBladeNoPower": "bigipBladeNoPower", "bigipBladeOffline": "bigipBladeOffline", "bigipBladeTempHigh": "bigipBladeTempHigh", "bigipChassisFanBad": "bigipChassisFanBad", "bigipChassisPowerSupplyBad": "bigipChassisPowerSupplyBad", "bigipChassisTempHigh": "bigipChassisTempHigh", "bigipChmandAlertFanTrayBad": "bigipChmandAlertFanTrayBad", "bigipClusterdNoResponse": "bigipClusterdNoResponse", "bigipClusterPrimaryChanged": "bigipClusterPrimaryChanged", "bigipCompLimitExceeded": "bigipCompLimitExceeded", "bigipConfigLoaded": "bigipConfigLoaded", "bigipCpuFanSpeedBad": "bigipCpuFanSpeedBad", "bigipCpuFanSpeedLow": "bigipCpuFanSpeedLow", "bigipCpuTempHigh": "bigipCpuTempHigh", "bigipDiskPartitionGrowth": "bigipDiskPartitionGrowth", "bigipDiskPartitionWarn": "bigipDiskPartitionWarn", "bigipDnsRequestRateLimiterEngaged": "bigipDnsRequestRateLimiterEngaged", "bigipDosAttackStart": "bigipDosAttackStart", "bigipDosAttackStop": "bigipDosAttackStop", "bigipExternalLinkChange": "bigipExternalLinkChange", "bigipFeatureFailed": "bigipFeatureFailed", "bigipFeatureOnline": "bigipFeatureOnline", "bigipFipsDeviceError": "bigipFipsDeviceError", "bigipGtmAppAvail": "bigipGtmAppAvail", "bigipGtmAppNotAvail": "bigipGtmAppNotAvail", "bigipGtmAppObjAvail": "bigipGtmAppObjAvail", "bigipGtmAppObjNotAvail": "bigipGtmAppObjNotAvail", "bigipGtmBig3dSslCertExpired": "bigipGtmBig3dSslCertExpired", "bigipGtmBig3dSslCertWillExpire": "bigipGtmBig3dSslCertWillExpire", "bigipGtmBoxAvail": "bigipGtmBoxAvail", "bigipGtmBoxNotAvail": "bigipGtmBoxNotAvail", "bigipGtmDcAvail": "bigipGtmDcAvail", "bigipGtmDcDisabled": "bigipGtmDcDisabled", "bigipGtmDcEnabled": "bigipGtmDcEnabled", "bigipGtmDcNotAvail": "bigipGtmDcNotAvail", "bigipGtmJoinedGroup": "bigipGtmJoinedGroup", "bigipGtmKeyGenerationExpiration": "bigipGtmKeyGenerationExpiration", "bigipGtmKeyGenerationRollover": "bigipGtmKeyGenerationRollover", "bigipGtmLeftGroup": "bigipGtmLeftGroup", "bigipGtmLinkAvail": "bigipGtmLinkAvail", "bigipGtmLinkDisabled": "bigipGtmLinkDisabled", "bigipGtmLinkEnabled": "bigipGtmLinkEnabled", "bigipGtmLinkNotAvail": "bigipGtmLinkNotAvail", "bigipGtmPoolAvail": "bigipGtmPoolAvail", "bigipGtmPoolDisabled": "bigipGtmPoolDisabled", "bigipGtmPoolEnabled": "bigipGtmPoolEnabled", "bigipGtmPoolMbrAvail": "bigipGtmPoolMbrAvail", "bigipGtmPoolMbrDisabled": "bigipGtmPoolMbrDisabled", "bigipGtmPoolMbrEnabled": "bigipGtmPoolMbrEnabled", "bigipGtmPoolMbrNotAvail": "bigipGtmPoolMbrNotAvail", "bigipGtmPoolNotAvail": "bigipGtmPoolNotAvail", "bigipGtmProberPoolDisabled": "bigipGtmProberPoolDisabled", "bigipGtmProberPoolEnabled": "bigipGtmProberPoolEnabled", "bigipGtmProberPoolMbrDisabled": "bigipGtmProberPoolMbrDisabled", "bigipGtmProberPoolMbrEnabled": "bigipGtmProberPoolMbrEnabled", "bigipGtmProberPoolMbrStatusChange": "bigipGtmProberPoolMbrStatusChange", "bigipGtmProberPoolMbrStatusChangeReason": "bigipGtmProberPoolMbrStatusChangeReason", "bigipGtmProberPoolStatusChange": "bigipGtmProberPoolStatusChange", "bigipGtmProberPoolStatusChangeReason": "bigipGtmProberPoolStatusChangeReason", "bigipGtmRequestRateLimiterEngaged": "bigipGtmRequestRateLimiterEngaged", "bigipGtmServerAvail": "bigipGtmServerAvail", "bigipGtmServerDisabled": "bigipGtmServerDisabled", "bigipGtmServerEnabled": "bigipGtmServerEnabled", "bigipGtmServerNotAvail": "bigipGtmServerNotAvail", "bigipGtmSslCertExpired": "bigipGtmSslCertExpired", "bigipGtmSslCertWillExpire": "bigipGtmSslCertWillExpire", "bigipGtmVsAvail": "bigipGtmVsAvail", "bigipGtmVsDisabled": "bigipGtmVsDisabled", "bigipGtmVsEnabled": "bigipGtmVsEnabled", "bigipGtmVsNotAvail": "bigipGtmVsNotAvail", "bigipGtmWideIpAvail": "bigipGtmWideIpAvail", "bigipGtmWideIpDisabled": "bigipGtmWideIpDisabled", "bigipGtmWideIpEnabled": "bigipGtmWideIpEnabled", "bigipGtmWideIpNotAvail": "bigipGtmWideIpNotAvail", "bigipHardDiskFailure": "bigipHardDiskFailure", "bigipInetPortExhaustion": "bigipInetPortExhaustion", "bigipLibhalBladePoweredOff": "bigipLibhalBladePoweredOff", "bigipLibhalDiskBayRemoved": "bigipLibhalDiskBayRemoved", "bigipLibhalSensorAlarmCritical": "bigipLibhalSensorAlarmCritical", "bigipLibhalSsdLogicalDiskRemoved": "bigipLibhalSsdLogicalDiskRemoved", "bigipLibhalSsdPhysicalDiskRemoved": "bigipLibhalSsdPhysicalDiskRemoved", "bigipLicenseExpired": "bigipLicenseExpired", "bigipLicenseFailed": "bigipLicenseFailed", "bigipLogAlert": "bigipLogAlert", "bigipLogCrit": "bigipLogCrit", "bigipLogEmerg": "bigipLogEmerg", "bigipLogErr": "bigipLogErr", "bigipLogWarning": "bigipLogWarning", "bigipLtmVsAvail": "bigipLtmVsAvail", "bigipLtmVsDisabled": "bigipLtmVsDisabled", "bigipLtmVsEnabled": "bigipLtmVsEnabled", "bigipLtmVsUnavail": "bigipLtmVsUnavail", "bigipMemberRate": "bigipMemberRate", "bigipNetLinkDown": "bigipNetLinkDown", "bigipNodeDown": "bigipNodeDown", "bigipNodeRate": "bigipNodeRate", "bigipNodeUp": "bigipNodeUp", "bigipPacketRejected": "bigipPacketRejected", "bigipPsAbsent": "bigipPsAbsent", "bigipPsPowerOff": "bigipPsPowerOff", "bigipPsPowerOn": "bigipPsPowerOn", "bigipRaidDiskFailure": "bigipRaidDiskFailure", "bigipServiceDown": "bigipServiceDown", "bigipServiceUp": "bigipServiceUp", "bigipSsdMwiNearThreshold": "bigipSsdMwiNearThreshold", "bigipSsdMwiReachedThreshold": "bigipSsdMwiReachedThreshold", "bigipSslLimitExceeded": "bigipSslLimitExceeded", "bigipStandby": "bigipStandby", "bigipStandByFail": "bigipStandByFail", "bigipSystemCheckAlertCurrentHigh": "bigipSystemCheckAlertCurrentHigh", "bigipSystemCheckAlertCurrentLow": "bigipSystemCheckAlertCurrentLow", "bigipSystemCheckAlertFanSpeedLow": "bigipSystemCheckAlertFanSpeedLow", "bigipSystemCheckAlertMilliVoltageHigh": "bigipSystemCheckAlertMilliVoltageHigh", "bigipSystemCheckAlertMilliVoltageLow": "bigipSystemCheckAlertMilliVoltageLow", "bigipSystemCheckAlertPowerHigh": "bigipSystemCheckAlertPowerHigh", "bigipSystemCheckAlertPowerLow": "bigipSystemCheckAlertPowerLow", "bigipSystemCheckAlertTempHigh": "bigipSystemCheckAlertTempHigh", "bigipSystemCheckAlertVoltageHigh": "bigipSystemCheckAlertVoltageHigh", "bigipSystemCheckAlertVoltageLow": "bigipSystemCheckAlertVoltageLow", "bigipSystemShutdown": "bigipSystemShutdown", "bigipTamdAlert": "bigipTamdAlert", "bigipTrafficGroupActivate": "bigipTrafficGroupActivate", "bigipTrafficGroupActive": "bigipTrafficGroupActive", "bigipTrafficGroupDeactivate": "bigipTrafficGroupDeactivate", "bigipTrafficGroupForcedOffline": "bigipTrafficGroupForcedOffline", "bigipTrafficGroupOffline": "bigipTrafficGroupOffline", "bigipTrafficGroupStandby": "bigipTrafficGroupStandby", "bigipUnsolicitedRepliesExceededThreshold": "bigipUnsolicitedRepliesExceededThreshold", "bigipUpdateError": "bigipUpdateError", "bigipUpdatePriority": "bigipUpdatePriority", "bigipUpdateServer": "bigipUpdateServer", "bigipVcmpAlertsVcmpHBDetected": "bigipVcmpAlertsVcmpHBDetected", "bigipVcmpAlertsVcmpHBLost": "bigipVcmpAlertsVcmpHBLost", "bigipVcmpAlertsVcmpPowerOff": "bigipVcmpAlertsVcmpPowerOff", "bigipVcmpAlertsVcmpPowerOn": "bigipVcmpAlertsVcmpPowerOn", "bigipVirtualRate": "bigipVirtualRate", "coldStart": "coldStart", "emASMSigInstallComplete": "emASMSigInstallComplete", "emASMSigInstallFailed": "emASMSigInstallFailed", "emASMSigUpdateAvailable": "emASMSigUpdateAvailable", "emASMSigUpdateFailed": "emASMSigUpdateFailed", "emCertificateExpiration": "emCertificateExpiration", "emCpuUsage": "emCpuUsage", "emDeviceActiveMode": "emDeviceActiveMode", "emDeviceClockSkew": "emDeviceClockSkew", "emDeviceConfigSettingChanged": "emDeviceConfigSettingChanged", "emDeviceConfigSync": "emDeviceConfigSync", "emDeviceForcedOfflineMode": "emDeviceForcedOfflineMode", "emDeviceImpaired": "emDeviceImpaired", "emDeviceOfflineMode": "emDeviceOfflineMode", "emDeviceStandbyMode": "emDeviceStandbyMode", "emDeviceUnreachable": "emDeviceUnreachable", "emDiskUsage": "emDiskUsage", "emGatherServiceContractFailure": "emGatherServiceContractFailure", "emHaSyncFailed": "emHaSyncFailed", "emHotfixInstallComplete": "emHotfixInstallComplete", "emHotfixInstallFailed": "emHotfixInstallFailed", "emMemoryUsage": "emMemoryUsage", "emPerformanceStorageCap": "emPerformanceStorageCap", "emPerformanceStorageDays": "emPerformanceStorageDays", "emPerformanceThreshold": "emPerformanceThreshold", "emRaidDriveFailureDetected": "emRaidDriveFailureDetected", "emRaidDriveRebuildComplete": "emRaidDriveRebuildComplete", "emSchedBackupFailed": "emSchedBackupFailed", "emScheduledArchiveFailed": "emScheduledArchiveFailed", "emServiceContractExpiry": "emServiceContractExpiry", "emSoftwareInstallComplete": "emSoftwareInstallComplete", "emSoftwareInstallFailed": "emSoftwareInstallFailed", "emStatsCollectionRateCap": "emStatsCollectionRateCap", "emStatsDBConnectivityLost": "emStatsDBConnectivityLost", "emStatsDBConnectivityRestored": "emStatsDBConnectivityRestored", "fallingAlarm": "fallingAlarm", "ipv6IfStateChange": "ipv6IfStateChange", "linkDown": "linkDown", "linkUp": "linkUp", "mteEventSetFailure": "mteEventSetFailure", "mteTriggerFailure": "mteTriggerFailure", "mteTriggerFalling": "mteTriggerFalling", "mteTriggerFired": "mteTriggerFired", "mteTriggerRising": "mteTriggerRising", "netSnmpExampleHeartbeatNotification": "netSnmpExampleHeartbeatNotification", "newRoot": "newRoot", "nsNotifyRestart": "nsNotifyRestart", "nsNotifyShutdown": "nsNotifyShutdown", "nsNotifyStart": "nsNotifyStart", "risingAlarm": "risingAlarm", "schedActionFailure": "schedActionFailure", "smScriptAbort": "smScriptAbort", "smScriptException": "smScriptException", "smScriptResult": "smScriptResult", "topologyChange": "topologyChange", "ucdShutdown": "ucdShutdown", "ucdStart": "ucdStart", "warmStart": "warmStart" } }, "vUSP": { "vf": { "ctsf-xxx": "vCTS" }, "vfc": { "vCTS - CFED": "vCTS - CFED", "vCTS - Config": "vCTS - Config", "vCTS - DFED": "vCTS - DFED", "vCTS - TAFE-fsd": "vCTS - TAFE-fsd", "vCTS - GLS": "vCTS - GLS", "vCTS - XXX": "vCTS - XXX", "vCTS - Management Interface": "vCTS - Management Interface", "vCTS - SPFE-pfe": "vCTS - SPFE-pfe", "vCTS - DNS": "vCTS - DNS", "vCTS - SPFE-spd": "vCTS - SPFE-spd", "vCTS - SPFE-spt": "vCTS - SPFE-spt", "vCTS - TAFE-tas": "vCTS - TAFE-tas" }, "location": { "SNDGCA06": "San Diego(core site) A06", "SNDGCA64": "San Diego(core site) A64", "SNANTXCA": "San Antonio(core site)", "KSCYMO09": "Kansas City(core site)", "kings_mountain": "Kings Mountain(AMG)", "Secaucus": "Secaucus(AMG)", "lisle": "Lisle(AMG)", "concord": "Concord(AMG)", "houston": "Houston(AMG)", "akron": "Akron(AMG)" }, "alarmCondition": { "acrTemporaryBufferOverload": "acrTemporaryBufferOverload", "adnsExtendedTTLcaching": "adnsExtendedTTLcaching", "adnsQueryFailureCaching": "adnsQueryFailureCaching", "adnsQueueCongestion": "adnsQueueCongestion", "asdaCommunicationFailure": "asdaCommunicationFailure", "asdaRequestQueue": "asdaRequestQueue", "capacityLicenseKeyExpiration": "capacityLicenseKeyExpiration", "capacityLicenseKeyNearExpiration": "capacityLicenseKeyNearExpiration", "capacityLicenseKeyValidationError": "capacityLicenseKeyValidationError", "cardConnectionLost": "cardConnectionLost", "ccdbCommunicationFailure": "ccdbCommunicationFailure", "cpiAlrmCritical": "cpiAlrmCritical", "cpiAlrmMajor": "cpiAlrmMajor", "cpiAlrmMinor": "cpiAlrmMinor", "cpiAlrmWarning": "cpiAlrmWarning", "cpiAsrtEsc": "cpiAsrtEsc", "cpiAsrtNonEsc": "cpiAsrtNonEsc", "cpiAsrtNonEscCritical": "cpiAsrtNonEscCritical", "cpiAsrtNonEscMajor": "cpiAsrtNonEscMajor", "cpiAsrtNonEscMinor": "cpiAsrtNonEscMinor", "cpiAudErrCount": "cpiAudErrCount", "cpiAudManAct": "cpiAudManAct", "cpiAudNewEvent": "cpiAudNewEvent", "cpiCompleteRateAlarm": "cpiCompleteRateAlarm", "cpiCTS3xxFailRate": "cpiCTS3xxFailRate", "cpiCTS4xxFailRate": "cpiCTS4xxFailRate", "cpiCTS5xxFailRate": "cpiCTS5xxFailRate", "cpiCTS6xxFailRate": "cpiCTS6xxFailRate", "cpiCTSSIPRetransmitInvite": "cpiCTSSIPRetransmitInvite", "cpiCTSSIPRetransmitNonInvite": "cpiCTSSIPRetransmitNonInvite", "cpiDropMGAllocConnReq": "cpiDropMGAllocConnReq", "cpiDropRateAlarm": "cpiDropRateAlarm", "cpiExceptionService": "cpiExceptionService", "cpiFailRateAlarm": "cpiFailRateAlarm", "cpiFailSCTPFastRetransIncr": "cpiFailSCTPFastRetransIncr", "cpiFailSCTPFastRetransRate": "cpiFailSCTPFastRetransRate", "cpiFailSCTPSRTT1Incr": "cpiFailSCTPSRTT1Incr", "cpiFailSCTPSRTT2Incr": "cpiFailSCTPSRTT2Incr", "cpiFailSCTPT3RetransIncr": "cpiFailSCTPT3RetransIncr", "cpiFailSCTPT3RetransRate": "cpiFailSCTPT3RetransRate", "cpiFileSysUsage": "cpiFileSysUsage", "cpiMemAllocFail": "cpiMemAllocFail", "cpiNumOfLICDRDel": "cpiNumOfLICDRDel", "cpiReinitServiceSelf": "cpiReinitServiceSelf", "cpiSIPRetransmitInvite": "cpiSIPRetransmitInvite", "cpiSIPRetransmitNonInvite": "cpiSIPRetransmitNonInvite", "cpiSS7DropSCTPPktsRcvd": "cpiSS7DropSCTPPktsRcvd", "cpiSS7FailSCTPFastRetransRate": "cpiSS7FailSCTPFastRetransRate", "cpiStabilityAlarm": "cpiStabilityAlarm", "cpuOverload": "cpuOverload", "databaseConnectionLost": "databaseConnectionLost", "databaseReplicationLinkDown": "databaseReplicationLinkDown", "databaseSizeExhausted": "databaseSizeExhausted", "dbHighCpuUtilization": "dbHighCpuUtilization", "dbOffline": "dbOffline", "dbStatusUnexpected": "dbStatusUnexpected", "degradedResource": "degradedResource", "degrow": "degrow", "deviceServerCxnLost": "deviceServerCxnLost", "diamLinkDown": "diamLinkDown", "diamMaxClientsExceeded": "diamMaxClientsExceeded", "dnsThreshold": "dnsThreshold", "ethernetError": "ethernetError", "ethernetLinkDown": "ethernetLinkDown", "externalConnectivity": "externalConnectivity", "featureLicenseExpiration": "featureLicenseExpiration", "featureLicenseKeyNearExpiration": "featureLicenseKeyNearExpiration", "featureLockValidationError": "featureLockValidationError", "fqdnError": "fqdnError", "fru": "fru", "gatewayCongestion": "gatewayCongestion", "gatewayForcedOOS": "gatewayForcedOOS", "gatewayProvisioningError": "gatewayProvisioningError", "gatewayUnreachable": "gatewayUnreachable", "gatewayUnregistered": "gatewayUnregistered", "globalParameterNotFound": "globalParameterNotFound", "glsInvalidCellId": "glsInvalidCellId", "glsServerUnavailable": "glsServerUnavailable", "grow": "grow", "h248MessageBufferDepletion": "h248MessageBufferDepletion", "hlrSyncConnection": "hlrSyncConnection", "hlrSyncQueue": "hlrSyncQueue", "hostDown": "hostDown", "hostReset": "hostReset", "invalidGateway": "invalidGateway", "iriLinkDown": "iriLinkDown", "ldapServerConnectionLost": "ldapServerConnectionLost", "lispBufferFullExternalLIG": "lispBufferFullExternalLIG", "llcDown": "llcDown", "logicalLinkDown": "logicalLinkDown", "logicalLinkNotFound": "logicalLinkNotFound", "logRotateThreshold": "logRotateThreshold", "memoryOverload": "memoryOverload", "nodeConfigFailure": "nodeConfigFailure", "nodeGroupOOS": "nodeGroupOOS", "nodeOOS": "nodeOOS", "nonCompliantFaultGroupMemberState": "nonCompliantFaultGroupMemberState", "nonCsAddrChannelDepletion": "nonCsAddrChannelDepletion", "numberOfTuplesInUse": "numberOfTuplesInUse", "osSecInfoModificationDetected": "osSecInfoModificationDetected", "osSecInformationMissing": "osSecInformationMissing", "osSecUnexpectedInformation": "osSecUnexpectedInformation", "pdnsMySqlReplication": "pdnsMySqlReplication", "pktCorruptionDetectedViaRCCLANCheck": "pktCorruptionDetectedViaRCCLANCheck", "platformCommandFailure": "platformCommandFailure", "pmDataNotCollected": "pmDataNotCollected", "prdbConnectWithAlternateFailure": "prdbConnectWithAlternateFailure", "prdbSyncDataToAlternateFailure": "prdbSyncDataToAlternateFailure", "preAllocatedResourceOverload": "preAllocatedResourceOverload", "prifSocketError": "prifSocketError", "processDown": "processDown", "processNotStarted": "processNotStarted", "provisioningInhibitedMode": "provisioningInhibitedMode", "prsCallInstanceExceeded": "prsCallInstanceExceeded", "prsCpuOverload": "prsCpuOverload", "prsDatabaseMigrationFailure": "prsDatabaseMigrationFailure", "prsFailureToConnectWithPRDB": "prsFailureToConnectWithPRDB", "prsQueueExceeded": "prsQueueExceeded", "rccInhibitedMode": "rccInhibitedMode", "remotedbLinkDown": "remotedbLinkDown", "remoteQueryServerFailure": "remoteQueryServerFailure", "restore": "restore", "serviceCFGDataTimestampError": "serviceCFGDataTimestampError", "serviceCommCxnLost": "serviceCommCxnLost", "serviceOnewayCommunication": "serviceOnewayCommunication", "sheddingOverload": "sheddingOverload", "simxml": "simxml", "sipLinkSetMaxQuarantineList": "sipLinkSetMaxQuarantineList", "sipLinkSetUnavailable": "sipLinkSetUnavailable", "sipLinkUnavailable": "sipLinkUnavailable", "smdiSocketError": "smdiSocketError", "socketError": "socketError", "softwareAllocatedResourceOverload": "softwareAllocatedResourceOverload", "softwareComponentDown": "softwareComponentDown", "softwareComponentStandbyNotReady": "softwareComponentStandbyNotReady", "softwareLicense": "softwareLicense", "svcdegrow": "svcdegrow", "svcgrow": "svcgrow", "swVersionMismatch": "swVersionMismatch", "tftpDownloadCorrupt": "tftpDownloadCorrupt", "timeStampValueOutOfSystemRange": "timeStampValueOutOfSystemRange", "tlsInitError": "tlsInitError", "transactionHandlerBlockDepletion": "transactionHandlerBlockDepletion", "upgrade": "upgrade", "usageOfSyncTable": "usageOfSyncTable", "utHttpProxyConnectionDown": "utHttpProxyConnectionDown", "wpifSocketError": "wpifSocketError", "BackupFailure": "BackupFailure", "Configuration": "Configuration", "COTRecordTransferFailure": "COTRecordTransferFailure", "CPMUSERDATAINCONSITENCY": "CPMUSERDATAINCONSITENCY", "CPMUSERDATARESTORED": "CPMUSERDATARESTORED", "EventQueueCapacity": "EventQueueCapacity", "ICMPFailure": "ICMPFailure", "IPsecConfig": "IPsecConfig", "LinkDown": "LinkDown", "NotifyDisabled": "NotifyDisabled", "NotifyLocked": "NotifyLocked", "NumTL1MeasThresh": "NumTL1MeasThresh", "RADIUSTOLDAPFAILURE": "RADIUSTOLDAPFAILURE", "ROOTACCESSDENIED": "ROOTACCESSDENIED", "ROOTFTPVIOLATION": "ROOTFTPVIOLATION", "ROOTLOGINVIOLATION": "ROOTLOGINVIOLATION", "ROOTSSHLOGINVIOLATION": "ROOTSSHLOGINVIOLATION", "SetupAAAFailure": "SetupAAAFailure", "SNETrapOverload": "SNETrapOverload", "SNMPAuthenticationFailure": "SNMPAuthenticationFailure", "SNMPFailure": "SNMPFailure", "SUTOROOTFAILURE": "SUTOROOTFAILURE", "SYSTEMTrapOverload": "SYSTEMTrapOverload", "ThresholdCrossed": "ThresholdCrossed", "UndiscoveredObject": "UndiscoveredObject", "WriteAAAFailure": "WriteAAAFailure" } }, "Trinity": { "vf": { "aSBG": "aSBG", "nSBG": "nSBG", "tSBG": "tSBG" }, "vfc": { "pld": "PL - Payload Processor", "scr": "SC - System Controller" }, "location": { "SNDGCA64": "San Diego SAN3", "ALPRGAED": "Alpharetta PDK1", "LSLEILAA":"Lisle DPA3" }, "alarmCondition": { "A+Fallback+Operation+will+soon+be+started":"A Fallback Operation will soon be started", "BRM%2C+Auto+Export+Backup+Failed":"BRM, Auto Export Backup Failed", "BRM%2C+Scheduled+Backup+Failed":"BRM, Scheduled Backup Failed", "COM+SA%2C+AMF+Component+Cleanup+Failed":"COM SA, AMF Component Cleanup Failed", "COM+SA%2C+AMF+Component+Instantiation+Failed":"COM SA, AMF Component Instantiation Failed", "COM+SA%2C+AMF+SI+Unassigned":"COM SA, AMF SI Unassigned", "COM+SA%2C+CLM+Cluster+Node+Unavailable":"COM SA, CLM Cluster Node Unavailable", "COM+SA%2C+MDF+Detected+Model+Error":"COM SA, MDF Detected Model Error", "COM+SA%2C+Proxy+Status+of+a+Component+Changed+to+Unproxied":"COM SA, Proxy Status of a Component Changed to Unproxied", "File+Management%2C+Number+of+Files+in+FileGroup+Exceeded":"File Management, Number of Files in FileGroup Exceeded", "File+Management%2C+Max+Size+in+FileGroup+Exceeded":"File Management, Max Size in FileGroup Exceeded", "LOTC+Disk+Replication+Communication":"LOTC Disk Replication Communication", "LOTC+Disk+Replication+Consistency":"LOTC Disk Replication Consistency", "LOTC+Disk+Usage":"LOTC Disk Usage", "LOTC+memory+Usage":"LOTC memory Usage", "LOTC+Time+Synchronization":"LOTC Time Synchronization", "SBG%2C+BGF+Control+Link+Down":"SBG, BGF Control Link Down", "SBG%2C+BGF+Control+Link+Disabled":"SBG, BGF Control Link Disabled", "SBG%2C+BGF+Control+Link+Enabled":"SBG, BGF Control Link Enabled", "SBG%2C+BGF+Control+Link+Remote+Locked":"SBG, BGF Control Link Remote Locked", "SBG%2C+Charging+Data+Storage+Maximum+Records+Reached":"SBG, Charging Data Storage Maximum Records Reached", "SBG%2C+Charging+Server+Rejects+Charging+Data":"SBG, Charging Server Rejects Charging Data", "SBG%2C+Excessive+Packet+Rate+Detected+":"SBG, Excessive Packet Rate Detected ", "SBG%2C+High+Amount+of+Malformed+Packets+Received":"SBG, High Amount of Malformed Packets Received", "SBG%2C+High+Amount+of+STUN+Packets+Detected":"SBG, High Amount of STUN Packets Detected", "SBG%2C+High+Amount+of+TCP+SYN+Packets+Received":"SBG, High Amount of TCP SYN Packets Received", "SBG%2C+High+Amount+of+UDP+Packets+Received+":"SBG, High Amount of UDP Packets Received ", "SBG%2C+IP+Address+Blocked+Due+to+Excessive+Packet+Rate":"SBG, IP Address Blocked Due to Excessive Packet Rate", "SBG%2C+Lost+Connectivity+to+Diameter+Server":"SBG, Lost Connectivity to Diameter Server", "SBG%2C+Mated+Pair+out+of+Service":"SBG, Mated Pair out of Service", "SBG%2C+Network+Unavailable+for+Media+Handling":"SBG, Network Unavailable for Media Handling", "SBG%2C+Non-emergency+Call+Released+to+Free+Resources+for+Emergency+Call":"SBG, Non-emergency Call Released to Free Resources for Emergency Call", "SBG%2C+Not+Enough+Disk+Space+for+Storing+Charging+Data":"SBG, Not Enough Disk Space for Storing Charging Data", "SBG%2C+Payload+Mated+Pair+Failure":"SBG, Payload Mated Pair Failure", "SBG%2C+Payload+Processor+Failure":"SBG, Payload Processor Failure", "SBG%2C+Processor+Overloaded":"SBG, Processor Overloaded", "SBG%2C+Registered+User+Set+in+Quarantine":"SBG, Registered User Set in Quarantine", "SBG%2C+Registration+Contacts+Exceed+Configured+Threshold":"SBG, Registration Contacts Exceed Configured Threshold", "SBG%2C+Sequential+Restart+Initiated":"SBG, Sequential Restart Initiated", "SBG%2C+SIP+Abuse+Detected":"SBG, SIP Abuse Detected", "SBG%2C+SIP+Network+Locked":"SBG, SIP Network Locked", "SBG%2C+SIP+Next+Hop+Reachable":"SBG, SIP Next Hop Reachable", "SBG%2C+SIP+Next+Hop+Unreachable":"SBG, SIP Next Hop Unreachable", "SBG%2C+SIP+Request+Rejected+by+Network+Throttling":"SBG, SIP Request Rejected by Network Throttling", "SBG%2C+TLS+Certificate+Imported":"SBG, TLS Certificate Imported", "SBG%2C+Trace+Recording+Session+Number+Limit+Reached":"SBG, Trace Recording Session Number Limit Reached", "SBG%2C+Trace+Session+Deactivated":"SBG, Trace Session Deactivated", "SBG%2C+Trace+Session+Times+Out":"SBG, Trace Session Times Out", "SBG%2C+Unknown+Media+Type+or+Payload+Type":"SBG, Unknown Media Type or Payload Type" } }, "vProbes": { "vf": { }, "vfc": { }, "location": { }, "alarmCondition": { } } } } } -globalPropsPartialTest={"collector": {"topicPublishes": {"DCAE-COLLECTOR-UCSNMP": "DCAE-COLLECTOR-UCSNMP", "GFP-IP--SNMP-TRAPS" : "GFP-IP--SNMP-TRAPS" } }, "string_match": { "topicPublishes": { "DCAE-CL-EVENT": "DCAE-CL-EVENT" }, "aaiMatchingFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "ProvStatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "aaiSendFields": { "VMID": "VMID", "Identiy": "Identiy", "VNFNAME": "VNFNAME", "LOCID": "LOCID", "VServerSelfLink": "VServerSelfLink", "Provstatus": "Provstatus", "OAMIPV4": "OAMIPV4", "OAMIPV6": "OAMIPV6", "VMNAME": "VMNAME", "TenantID":"TenantID", "in_maint":"in_maint", "is_closed_loop_disabled":"is_closed_loop_disabled", "Location":"Location", "OAM_network_name":"OAM_network_name" }, "eventSourceType": { "f5BigIP": "f5BigIP", "vSBG_Alarms": "vSBG_Alarms", "vCTS_Alarms": "vCTS_Alarms" }, "eventSeverity": { "NORMAL": "NORMAL", "not-NORMAL": "not-NORMAL", "WARNING": "WARNING", "MINOR": "MINOR", "MAJOR": "MAJOR", "CRITICAL": "CRITICAL" }, "timeWindow": 0, "ageLimit": 1600, "outputEventName": { "": "", "OnSet": "OnSet", "Abatement": "Abatement" }, "createClosedLoopEventId": { "Initial": "Initial", "Close": "Close" } }, "global": { "service": { "": "", "vUSP": "vUSP", "vSCP": "vSCP", "vProbes": "vProbes" } }, "policy": { "timeout": 5, "recipe": { "": "", "restart": "Restart", "rebuild": "Rebuild", "migrate": "Migrate" }, "maxRetries": "3", "retryTimeLimit": 180, "resource": { "vCTS": "vCTS", "v3CDB": "v3CDB", "vUDR": "vUDR", "vCOM": "vCOM", "vRAR": "vRAR", "vLCS": "vLCS", "vUDR-BE": "vUDR-BE", "vDBE": "vDBE" }, "parentPolicyConditions": { "Failure_Retries": "Failure: Max Retries Exceeded", "Failure_Timeout": "Failure: Time Limit Exceeded", "Failure_Exception": "Failure: Exception", "Failure": "Failure: Other", "Success": "Success" } }} +globalProps={"global": { "service": { "": "", "vUSP": "vUSP", "vSCP": "vSCP", "vProbes": "vProbes" } }, "policy": { "timeout": 5, "recipe": { "": "", "restart": "Restart", "rebuild": "Rebuild", "migrate": "Migrate" }, "maxRetries": "3", "retryTimeLimit": 180, "resource": { "vCTS": "vCTS", "v3CDB": "v3CDB", "vUDR": "vUDR", "vCOM": "vCOM", "vRAR": "vRAR", "vLCS": "vLCS", "vUDR-BE": "vUDR-BE", "vDBE": "vDBE" }, "parentPolicyConditions": { "Failure_Retries": "Failure: Max Retries Exceeded", "Failure_Timeout": "Failure: Time Limit Exceeded", "Failure_Exception": "Failure: Exception", "Failure": "Failure: Other", "Success": "Success" } }, "shared": { "byService": { "": { "vf": { }, "vfc": { }, "location": { }, "alarmCondition": { } }, "vSCP": { "vf": { "frwl_scp": "FW" }, "vfc": { "FW": "FW" }, "location": { "AKRNOHAH": "Akron", "ALLNTXSA": "Allen-2" }, "alarmCondition": { "authenticationFailure": "authenticationFailure", "bigipActive": "bigipActive", "bigipActiveActive": "bigipActiveActive", "bigipAgentRestart": "bigipAgentRestart", "bigipAgentShutdown": "bigipAgentShutdown", "bigipAgentStart": "bigipAgentStart", "bigipAggrReaperStateChange": "bigipAggrReaperStateChange", "bigipAomCpuTempTooHigh": "bigipAomCpuTempTooHigh", "bigipARPConflict": "bigipARPConflict", "bigipAsmBruteForceAttackDetected": "bigipAsmBruteForceAttackDetected", "bigipAsmDosAttackDetected": "bigipAsmDosAttackDetected", "bigipAsmFtpRequestBlocked": "bigipAsmFtpRequestBlocked", "bigipAsmFtpRequestViolation": "bigipAsmFtpRequestViolation", "bigipAsmRequestBlocked": "bigipAsmRequestBlocked", "bigipAsmRequestViolation": "bigipAsmRequestViolation", "bigipAsmSmtpRequestBlocked": "bigipAsmSmtpRequestBlocked", "bigipAsmSmtpRequestViolation": "bigipAsmSmtpRequestViolation", "bigipAuthFailed": "bigipAuthFailed", "bigipAvrAlertsMetricSmtp": "bigipAvrAlertsMetricSmtp", "bigipAvrAlertsMetricSnmp": "bigipAvrAlertsMetricSnmp", "bigipBladeNoPower": "bigipBladeNoPower", "bigipBladeOffline": "bigipBladeOffline", "bigipBladeTempHigh": "bigipBladeTempHigh", "bigipChassisFanBad": "bigipChassisFanBad", "bigipChassisPowerSupplyBad": "bigipChassisPowerSupplyBad", "bigipChassisTempHigh": "bigipChassisTempHigh", "bigipChmandAlertFanTrayBad": "bigipChmandAlertFanTrayBad", "bigipClusterdNoResponse": "bigipClusterdNoResponse", "bigipClusterPrimaryChanged": "bigipClusterPrimaryChanged", "bigipCompLimitExceeded": "bigipCompLimitExceeded", "bigipConfigLoaded": "bigipConfigLoaded", "bigipCpuFanSpeedBad": "bigipCpuFanSpeedBad", "bigipCpuFanSpeedLow": "bigipCpuFanSpeedLow", "bigipCpuTempHigh": "bigipCpuTempHigh", "bigipDiskPartitionGrowth": "bigipDiskPartitionGrowth", "bigipDiskPartitionWarn": "bigipDiskPartitionWarn", "bigipDnsRequestRateLimiterEngaged": "bigipDnsRequestRateLimiterEngaged", "bigipDosAttackStart": "bigipDosAttackStart", "bigipDosAttackStop": "bigipDosAttackStop", "bigipExternalLinkChange": "bigipExternalLinkChange", "bigipFeatureFailed": "bigipFeatureFailed", "bigipFeatureOnline": "bigipFeatureOnline", "bigipFipsDeviceError": "bigipFipsDeviceError", "bigipGtmAppAvail": "bigipGtmAppAvail", "bigipGtmAppNotAvail": "bigipGtmAppNotAvail", "bigipGtmAppObjAvail": "bigipGtmAppObjAvail", "bigipGtmAppObjNotAvail": "bigipGtmAppObjNotAvail", "bigipGtmBig3dSslCertExpired": "bigipGtmBig3dSslCertExpired", "bigipGtmBig3dSslCertWillExpire": "bigipGtmBig3dSslCertWillExpire", "bigipGtmBoxAvail": "bigipGtmBoxAvail", "bigipGtmBoxNotAvail": "bigipGtmBoxNotAvail", "bigipGtmDcAvail": "bigipGtmDcAvail", "bigipGtmDcDisabled": "bigipGtmDcDisabled", "bigipGtmDcEnabled": "bigipGtmDcEnabled", "bigipGtmDcNotAvail": "bigipGtmDcNotAvail", "bigipGtmJoinedGroup": "bigipGtmJoinedGroup", "bigipGtmKeyGenerationExpiration": "bigipGtmKeyGenerationExpiration", "bigipGtmKeyGenerationRollover": "bigipGtmKeyGenerationRollover", "bigipGtmLeftGroup": "bigipGtmLeftGroup", "bigipGtmLinkAvail": "bigipGtmLinkAvail", "bigipGtmLinkDisabled": "bigipGtmLinkDisabled", "bigipGtmLinkEnabled": "bigipGtmLinkEnabled", "bigipGtmLinkNotAvail": "bigipGtmLinkNotAvail", "bigipGtmPoolAvail": "bigipGtmPoolAvail", "bigipGtmPoolDisabled": "bigipGtmPoolDisabled", "bigipGtmPoolEnabled": "bigipGtmPoolEnabled", "bigipGtmPoolMbrAvail": "bigipGtmPoolMbrAvail", "bigipGtmPoolMbrDisabled": "bigipGtmPoolMbrDisabled", "bigipGtmPoolMbrEnabled": "bigipGtmPoolMbrEnabled", "bigipGtmPoolMbrNotAvail": "bigipGtmPoolMbrNotAvail", "bigipGtmPoolNotAvail": "bigipGtmPoolNotAvail", "bigipGtmProberPoolDisabled": "bigipGtmProberPoolDisabled", "bigipGtmProberPoolEnabled": "bigipGtmProberPoolEnabled", "bigipGtmProberPoolMbrDisabled": "bigipGtmProberPoolMbrDisabled", "bigipGtmProberPoolMbrEnabled": "bigipGtmProberPoolMbrEnabled", "bigipGtmProberPoolMbrStatusChange": "bigipGtmProberPoolMbrStatusChange", "bigipGtmProberPoolMbrStatusChangeReason": "bigipGtmProberPoolMbrStatusChangeReason", "bigipGtmProberPoolStatusChange": "bigipGtmProberPoolStatusChange", "bigipGtmProberPoolStatusChangeReason": "bigipGtmProberPoolStatusChangeReason", "bigipGtmRequestRateLimiterEngaged": "bigipGtmRequestRateLimiterEngaged", "bigipGtmServerAvail": "bigipGtmServerAvail", "bigipGtmServerDisabled": "bigipGtmServerDisabled", "bigipGtmServerEnabled": "bigipGtmServerEnabled", "bigipGtmServerNotAvail": "bigipGtmServerNotAvail", "bigipGtmSslCertExpired": "bigipGtmSslCertExpired", "bigipGtmSslCertWillExpire": "bigipGtmSslCertWillExpire", "bigipGtmVsAvail": "bigipGtmVsAvail", "bigipGtmVsDisabled": "bigipGtmVsDisabled", "bigipGtmVsEnabled": "bigipGtmVsEnabled", "bigipGtmVsNotAvail": "bigipGtmVsNotAvail", "bigipGtmWideIpAvail": "bigipGtmWideIpAvail", "bigipGtmWideIpDisabled": "bigipGtmWideIpDisabled", "bigipGtmWideIpEnabled": "bigipGtmWideIpEnabled", "bigipGtmWideIpNotAvail": "bigipGtmWideIpNotAvail", "bigipHardDiskFailure": "bigipHardDiskFailure", "bigipInetPortExhaustion": "bigipInetPortExhaustion", "bigipLibhalBladePoweredOff": "bigipLibhalBladePoweredOff", "bigipLibhalDiskBayRemoved": "bigipLibhalDiskBayRemoved", "bigipLibhalSensorAlarmCritical": "bigipLibhalSensorAlarmCritical", "bigipLibhalSsdLogicalDiskRemoved": "bigipLibhalSsdLogicalDiskRemoved", "bigipLibhalSsdPhysicalDiskRemoved": "bigipLibhalSsdPhysicalDiskRemoved", "bigipLicenseExpired": "bigipLicenseExpired", "bigipLicenseFailed": "bigipLicenseFailed", "bigipLogAlert": "bigipLogAlert", "bigipLogCrit": "bigipLogCrit", "bigipLogEmerg": "bigipLogEmerg", "bigipLogErr": "bigipLogErr", "bigipLogWarning": "bigipLogWarning", "bigipLtmVsAvail": "bigipLtmVsAvail", "bigipLtmVsDisabled": "bigipLtmVsDisabled", "bigipLtmVsEnabled": "bigipLtmVsEnabled", "bigipLtmVsUnavail": "bigipLtmVsUnavail", "bigipMemberRate": "bigipMemberRate", "bigipNetLinkDown": "bigipNetLinkDown", "bigipNodeDown": "bigipNodeDown", "bigipNodeRate": "bigipNodeRate", "bigipNodeUp": "bigipNodeUp", "bigipPacketRejected": "bigipPacketRejected", "bigipPsAbsent": "bigipPsAbsent", "bigipPsPowerOff": "bigipPsPowerOff", "bigipPsPowerOn": "bigipPsPowerOn", "bigipRaidDiskFailure": "bigipRaidDiskFailure", "bigipServiceDown": "bigipServiceDown", "bigipServiceUp": "bigipServiceUp", "bigipSsdMwiNearThreshold": "bigipSsdMwiNearThreshold", "bigipSsdMwiReachedThreshold": "bigipSsdMwiReachedThreshold", "bigipSslLimitExceeded": "bigipSslLimitExceeded", "bigipStandby": "bigipStandby", "bigipStandByFail": "bigipStandByFail", "bigipSystemCheckAlertCurrentHigh": "bigipSystemCheckAlertCurrentHigh", "bigipSystemCheckAlertCurrentLow": "bigipSystemCheckAlertCurrentLow", "bigipSystemCheckAlertFanSpeedLow": "bigipSystemCheckAlertFanSpeedLow", "bigipSystemCheckAlertMilliVoltageHigh": "bigipSystemCheckAlertMilliVoltageHigh", "bigipSystemCheckAlertMilliVoltageLow": "bigipSystemCheckAlertMilliVoltageLow", "bigipSystemCheckAlertPowerHigh": "bigipSystemCheckAlertPowerHigh", "bigipSystemCheckAlertPowerLow": "bigipSystemCheckAlertPowerLow", "bigipSystemCheckAlertTempHigh": "bigipSystemCheckAlertTempHigh", "bigipSystemCheckAlertVoltageHigh": "bigipSystemCheckAlertVoltageHigh", "bigipSystemCheckAlertVoltageLow": "bigipSystemCheckAlertVoltageLow", "bigipSystemShutdown": "bigipSystemShutdown", "bigipTamdAlert": "bigipTamdAlert", "bigipTrafficGroupActivate": "bigipTrafficGroupActivate", "bigipTrafficGroupActive": "bigipTrafficGroupActive", "bigipTrafficGroupDeactivate": "bigipTrafficGroupDeactivate", "bigipTrafficGroupForcedOffline": "bigipTrafficGroupForcedOffline", "bigipTrafficGroupOffline": "bigipTrafficGroupOffline", "bigipTrafficGroupStandby": "bigipTrafficGroupStandby", "bigipUnsolicitedRepliesExceededThreshold": "bigipUnsolicitedRepliesExceededThreshold", "bigipUpdateError": "bigipUpdateError", "bigipUpdatePriority": "bigipUpdatePriority", "bigipUpdateServer": "bigipUpdateServer", "bigipVcmpAlertsVcmpHBDetected": "bigipVcmpAlertsVcmpHBDetected", "bigipVcmpAlertsVcmpHBLost": "bigipVcmpAlertsVcmpHBLost", "bigipVcmpAlertsVcmpPowerOff": "bigipVcmpAlertsVcmpPowerOff", "bigipVcmpAlertsVcmpPowerOn": "bigipVcmpAlertsVcmpPowerOn", "bigipVirtualRate": "bigipVirtualRate", "coldStart": "coldStart", "emASMSigInstallComplete": "emASMSigInstallComplete", "emASMSigInstallFailed": "emASMSigInstallFailed", "emASMSigUpdateAvailable": "emASMSigUpdateAvailable", "emASMSigUpdateFailed": "emASMSigUpdateFailed", "emCertificateExpiration": "emCertificateExpiration", "emCpuUsage": "emCpuUsage", "emDeviceActiveMode": "emDeviceActiveMode", "emDeviceClockSkew": "emDeviceClockSkew", "emDeviceConfigSettingChanged": "emDeviceConfigSettingChanged", "emDeviceConfigSync": "emDeviceConfigSync", "emDeviceForcedOfflineMode": "emDeviceForcedOfflineMode", "emDeviceImpaired": "emDeviceImpaired", "emDeviceOfflineMode": "emDeviceOfflineMode", "emDeviceStandbyMode": "emDeviceStandbyMode", "emDeviceUnreachable": "emDeviceUnreachable", "emDiskUsage": "emDiskUsage", "emGatherServiceContractFailure": "emGatherServiceContractFailure", "emHaSyncFailed": "emHaSyncFailed", "emHotfixInstallComplete": "emHotfixInstallComplete", "emHotfixInstallFailed": "emHotfixInstallFailed", "emMemoryUsage": "emMemoryUsage", "emPerformanceStorageCap": "emPerformanceStorageCap", "emPerformanceStorageDays": "emPerformanceStorageDays", "emPerformanceThreshold": "emPerformanceThreshold", "emRaidDriveFailureDetected": "emRaidDriveFailureDetected", "emRaidDriveRebuildComplete": "emRaidDriveRebuildComplete", "emSchedBackupFailed": "emSchedBackupFailed", "emScheduledArchiveFailed": "emScheduledArchiveFailed", "emServiceContractExpiry": "emServiceContractExpiry", "emSoftwareInstallComplete": "emSoftwareInstallComplete", "emSoftwareInstallFailed": "emSoftwareInstallFailed", "emStatsCollectionRateCap": "emStatsCollectionRateCap", "emStatsDBConnectivityLost": "emStatsDBConnectivityLost", "emStatsDBConnectivityRestored": "emStatsDBConnectivityRestored", "fallingAlarm": "fallingAlarm", "ipv6IfStateChange": "ipv6IfStateChange", "linkDown": "linkDown", "linkUp": "linkUp", "mteEventSetFailure": "mteEventSetFailure", "mteTriggerFailure": "mteTriggerFailure", "mteTriggerFalling": "mteTriggerFalling", "mteTriggerFired": "mteTriggerFired", "mteTriggerRising": "mteTriggerRising", "netSnmpExampleHeartbeatNotification": "netSnmpExampleHeartbeatNotification", "newRoot": "newRoot", "nsNotifyRestart": "nsNotifyRestart", "nsNotifyShutdown": "nsNotifyShutdown", "nsNotifyStart": "nsNotifyStart", "risingAlarm": "risingAlarm", "schedActionFailure": "schedActionFailure", "smScriptAbort": "smScriptAbort", "smScriptException": "smScriptException", "smScriptResult": "smScriptResult", "topologyChange": "topologyChange", "ucdShutdown": "ucdShutdown", "ucdStart": "ucdStart", "warmStart": "warmStart" } }, "vUSP": { "vf": { "ctsf-xxx": "vCTS" }, "vfc": { "vCTS - CFED": "vCTS - CFED", "vCTS - Config": "vCTS - Config", "vCTS - DFED": "vCTS - DFED", "vCTS - TAFE-fsd": "vCTS - TAFE-fsd", "vCTS - GLS": "vCTS - GLS", "vCTS - XXX": "vCTS - XXX", "vCTS - Management Interface": "vCTS - Management Interface", "vCTS - SPFE-pfe": "vCTS - SPFE-pfe", "vCTS - DNS": "vCTS - DNS", "vCTS - SPFE-spd": "vCTS - SPFE-spd", "vCTS - SPFE-spt": "vCTS - SPFE-spt", "vCTS - TAFE-tas": "vCTS - TAFE-tas" }, "location": { "SNDGCA06": "San Diego(core site) A06", "SNDGCA64": "San Diego(core site) A64", "SNANTXCA": "San Antonio(core site)", "KSCYMO09": "Kansas City(core site)", "kings_mountain": "Kings Mountain(AMG)", "Secaucus": "Secaucus(AMG)", "lisle": "Lisle(AMG)", "concord": "Concord(AMG)", "houston": "Houston(AMG)", "akron": "Akron(AMG)" }, "alarmCondition": { "acrTemporaryBufferOverload": "acrTemporaryBufferOverload", "adnsExtendedTTLcaching": "adnsExtendedTTLcaching", "adnsQueryFailureCaching": "adnsQueryFailureCaching", "adnsQueueCongestion": "adnsQueueCongestion", "asdaCommunicationFailure": "asdaCommunicationFailure", "asdaRequestQueue": "asdaRequestQueue", "capacityLicenseKeyExpiration": "capacityLicenseKeyExpiration", "capacityLicenseKeyNearExpiration": "capacityLicenseKeyNearExpiration", "capacityLicenseKeyValidationError": "capacityLicenseKeyValidationError", "cardConnectionLost": "cardConnectionLost", "ccdbCommunicationFailure": "ccdbCommunicationFailure", "cpiAlrmCritical": "cpiAlrmCritical", "cpiAlrmMajor": "cpiAlrmMajor", "cpiAlrmMinor": "cpiAlrmMinor", "cpiAlrmWarning": "cpiAlrmWarning", "cpiAsrtEsc": "cpiAsrtEsc", "cpiAsrtNonEsc": "cpiAsrtNonEsc", "cpiAsrtNonEscCritical": "cpiAsrtNonEscCritical", "cpiAsrtNonEscMajor": "cpiAsrtNonEscMajor", "cpiAsrtNonEscMinor": "cpiAsrtNonEscMinor", "cpiAudErrCount": "cpiAudErrCount", "cpiAudManAct": "cpiAudManAct", "cpiAudNewEvent": "cpiAudNewEvent", "cpiCompleteRateAlarm": "cpiCompleteRateAlarm", "cpiCTS3xxFailRate": "cpiCTS3xxFailRate", "cpiCTS4xxFailRate": "cpiCTS4xxFailRate", "cpiCTS5xxFailRate": "cpiCTS5xxFailRate", "cpiCTS6xxFailRate": "cpiCTS6xxFailRate", "cpiCTSSIPRetransmitInvite": "cpiCTSSIPRetransmitInvite", "cpiCTSSIPRetransmitNonInvite": "cpiCTSSIPRetransmitNonInvite", "cpiDropMGAllocConnReq": "cpiDropMGAllocConnReq", "cpiDropRateAlarm": "cpiDropRateAlarm", "cpiExceptionService": "cpiExceptionService", "cpiFailRateAlarm": "cpiFailRateAlarm", "cpiFailSCTPFastRetransIncr": "cpiFailSCTPFastRetransIncr", "cpiFailSCTPFastRetransRate": "cpiFailSCTPFastRetransRate", "cpiFailSCTPSRTT1Incr": "cpiFailSCTPSRTT1Incr", "cpiFailSCTPSRTT2Incr": "cpiFailSCTPSRTT2Incr", "cpiFailSCTPT3RetransIncr": "cpiFailSCTPT3RetransIncr", "cpiFailSCTPT3RetransRate": "cpiFailSCTPT3RetransRate", "cpiFileSysUsage": "cpiFileSysUsage", "cpiMemAllocFail": "cpiMemAllocFail", "cpiNumOfLICDRDel": "cpiNumOfLICDRDel", "cpiReinitServiceSelf": "cpiReinitServiceSelf", "cpiSIPRetransmitInvite": "cpiSIPRetransmitInvite", "cpiSIPRetransmitNonInvite": "cpiSIPRetransmitNonInvite", "cpiSS7DropSCTPPktsRcvd": "cpiSS7DropSCTPPktsRcvd", "cpiSS7FailSCTPFastRetransRate": "cpiSS7FailSCTPFastRetransRate", "cpiStabilityAlarm": "cpiStabilityAlarm", "cpuOverload": "cpuOverload", "databaseConnectionLost": "databaseConnectionLost", "databaseReplicationLinkDown": "databaseReplicationLinkDown", "databaseSizeExhausted": "databaseSizeExhausted", "dbHighCpuUtilization": "dbHighCpuUtilization", "dbOffline": "dbOffline", "dbStatusUnexpected": "dbStatusUnexpected", "degradedResource": "degradedResource", "degrow": "degrow", "deviceServerCxnLost": "deviceServerCxnLost", "diamLinkDown": "diamLinkDown", "diamMaxClientsExceeded": "diamMaxClientsExceeded", "dnsThreshold": "dnsThreshold", "ethernetError": "ethernetError", "ethernetLinkDown": "ethernetLinkDown", "externalConnectivity": "externalConnectivity", "featureLicenseExpiration": "featureLicenseExpiration", "featureLicenseKeyNearExpiration": "featureLicenseKeyNearExpiration", "featureLockValidationError": "featureLockValidationError", "fqdnError": "fqdnError", "fru": "fru", "gatewayCongestion": "gatewayCongestion", "gatewayForcedOOS": "gatewayForcedOOS", "gatewayProvisioningError": "gatewayProvisioningError", "gatewayUnreachable": "gatewayUnreachable", "gatewayUnregistered": "gatewayUnregistered", "globalParameterNotFound": "globalParameterNotFound", "glsInvalidCellId": "glsInvalidCellId", "glsServerUnavailable": "glsServerUnavailable", "grow": "grow", "h248MessageBufferDepletion": "h248MessageBufferDepletion", "hlrSyncConnection": "hlrSyncConnection", "hlrSyncQueue": "hlrSyncQueue", "hostDown": "hostDown", "hostReset": "hostReset", "invalidGateway": "invalidGateway", "iriLinkDown": "iriLinkDown", "ldapServerConnectionLost": "ldapServerConnectionLost", "lispBufferFullExternalLIG": "lispBufferFullExternalLIG", "llcDown": "llcDown", "logicalLinkDown": "logicalLinkDown", "logicalLinkNotFound": "logicalLinkNotFound", "logRotateThreshold": "logRotateThreshold", "memoryOverload": "memoryOverload", "nodeConfigFailure": "nodeConfigFailure", "nodeGroupOOS": "nodeGroupOOS", "nodeOOS": "nodeOOS", "nonCompliantFaultGroupMemberState": "nonCompliantFaultGroupMemberState", "nonCsAddrChannelDepletion": "nonCsAddrChannelDepletion", "numberOfTuplesInUse": "numberOfTuplesInUse", "osSecInfoModificationDetected": "osSecInfoModificationDetected", "osSecInformationMissing": "osSecInformationMissing", "osSecUnexpectedInformation": "osSecUnexpectedInformation", "pdnsMySqlReplication": "pdnsMySqlReplication", "pktCorruptionDetectedViaRCCLANCheck": "pktCorruptionDetectedViaRCCLANCheck", "platformCommandFailure": "platformCommandFailure", "pmDataNotCollected": "pmDataNotCollected", "prdbConnectWithAlternateFailure": "prdbConnectWithAlternateFailure", "prdbSyncDataToAlternateFailure": "prdbSyncDataToAlternateFailure", "preAllocatedResourceOverload": "preAllocatedResourceOverload", "prifSocketError": "prifSocketError", "processDown": "processDown", "processNotStarted": "processNotStarted", "provisioningInhibitedMode": "provisioningInhibitedMode", "prsCallInstanceExceeded": "prsCallInstanceExceeded", "prsCpuOverload": "prsCpuOverload", "prsDatabaseMigrationFailure": "prsDatabaseMigrationFailure", "prsFailureToConnectWithPRDB": "prsFailureToConnectWithPRDB", "prsQueueExceeded": "prsQueueExceeded", "rccInhibitedMode": "rccInhibitedMode", "remotedbLinkDown": "remotedbLinkDown", "remoteQueryServerFailure": "remoteQueryServerFailure", "restore": "restore", "serviceCFGDataTimestampError": "serviceCFGDataTimestampError", "serviceCommCxnLost": "serviceCommCxnLost", "serviceOnewayCommunication": "serviceOnewayCommunication", "sheddingOverload": "sheddingOverload", "simxml": "simxml", "sipLinkSetMaxQuarantineList": "sipLinkSetMaxQuarantineList", "sipLinkSetUnavailable": "sipLinkSetUnavailable", "sipLinkUnavailable": "sipLinkUnavailable", "smdiSocketError": "smdiSocketError", "socketError": "socketError", "softwareAllocatedResourceOverload": "softwareAllocatedResourceOverload", "softwareComponentDown": "softwareComponentDown", "softwareComponentStandbyNotReady": "softwareComponentStandbyNotReady", "softwareLicense": "softwareLicense", "svcdegrow": "svcdegrow", "svcgrow": "svcgrow", "swVersionMismatch": "swVersionMismatch", "tftpDownloadCorrupt": "tftpDownloadCorrupt", "timeStampValueOutOfSystemRange": "timeStampValueOutOfSystemRange", "tlsInitError": "tlsInitError", "transactionHandlerBlockDepletion": "transactionHandlerBlockDepletion", "upgrade": "upgrade", "usageOfSyncTable": "usageOfSyncTable", "utHttpProxyConnectionDown": "utHttpProxyConnectionDown", "wpifSocketError": "wpifSocketError", "BackupFailure": "BackupFailure", "Configuration": "Configuration", "COTRecordTransferFailure": "COTRecordTransferFailure", "CPMUSERDATAINCONSITENCY": "CPMUSERDATAINCONSITENCY", "CPMUSERDATARESTORED": "CPMUSERDATARESTORED", "EventQueueCapacity": "EventQueueCapacity", "ICMPFailure": "ICMPFailure", "IPsecConfig": "IPsecConfig", "LinkDown": "LinkDown", "NotifyDisabled": "NotifyDisabled", "NotifyLocked": "NotifyLocked", "NumTL1MeasThresh": "NumTL1MeasThresh", "RADIUSTOLDAPFAILURE": "RADIUSTOLDAPFAILURE", "ROOTACCESSDENIED": "ROOTACCESSDENIED", "ROOTFTPVIOLATION": "ROOTFTPVIOLATION", "ROOTLOGINVIOLATION": "ROOTLOGINVIOLATION", "ROOTSSHLOGINVIOLATION": "ROOTSSHLOGINVIOLATION", "SetupAAAFailure": "SetupAAAFailure", "SNETrapOverload": "SNETrapOverload", "SNMPAuthenticationFailure": "SNMPAuthenticationFailure", "SNMPFailure": "SNMPFailure", "SUTOROOTFAILURE": "SUTOROOTFAILURE", "SYSTEMTrapOverload": "SYSTEMTrapOverload", "ThresholdCrossed": "ThresholdCrossed", "UndiscoveredObject": "UndiscoveredObject", "WriteAAAFailure": "WriteAAAFailure" } }, "Trinity": { "vf": { "aSBG": "aSBG", "nSBG": "nSBG", "tSBG": "tSBG" }, "vfc": { "pld": "PL - Payload Processor", "scr": "SC - System Controller" }, "location": { "SNDGCA64": "San Diego SAN3", "ALPRGAED": "Alpharetta PDK1", "LSLEILAA":"Lisle DPA3" }, "alarmCondition": { "A+Fallback+Operation+will+soon+be+started":"A Fallback Operation will soon be started", "BRM%2C+Auto+Export+Backup+Failed":"BRM, Auto Export Backup Failed", "BRM%2C+Scheduled+Backup+Failed":"BRM, Scheduled Backup Failed", "COM+SA%2C+AMF+Component+Cleanup+Failed":"COM SA, AMF Component Cleanup Failed", "COM+SA%2C+AMF+Component+Instantiation+Failed":"COM SA, AMF Component Instantiation Failed", "COM+SA%2C+AMF+SI+Unassigned":"COM SA, AMF SI Unassigned", "COM+SA%2C+CLM+Cluster+Node+Unavailable":"COM SA, CLM Cluster Node Unavailable", "COM+SA%2C+MDF+Detected+Model+Error":"COM SA, MDF Detected Model Error", "COM+SA%2C+Proxy+Status+of+a+Component+Changed+to+Unproxied":"COM SA, Proxy Status of a Component Changed to Unproxied", "File+Management%2C+Number+of+Files+in+FileGroup+Exceeded":"File Management, Number of Files in FileGroup Exceeded", "File+Management%2C+Max+Size+in+FileGroup+Exceeded":"File Management, Max Size in FileGroup Exceeded", "LOTC+Disk+Replication+Communication":"LOTC Disk Replication Communication", "LOTC+Disk+Replication+Consistency":"LOTC Disk Replication Consistency", "LOTC+Disk+Usage":"LOTC Disk Usage", "LOTC+memory+Usage":"LOTC memory Usage", "LOTC+Time+Synchronization":"LOTC Time Synchronization", "SBG%2C+BGF+Control+Link+Down":"SBG, BGF Control Link Down", "SBG%2C+BGF+Control+Link+Disabled":"SBG, BGF Control Link Disabled", "SBG%2C+BGF+Control+Link+Enabled":"SBG, BGF Control Link Enabled", "SBG%2C+BGF+Control+Link+Remote+Locked":"SBG, BGF Control Link Remote Locked", "SBG%2C+Charging+Data+Storage+Maximum+Records+Reached":"SBG, Charging Data Storage Maximum Records Reached", "SBG%2C+Charging+Server+Rejects+Charging+Data":"SBG, Charging Server Rejects Charging Data", "SBG%2C+Excessive+Packet+Rate+Detected+":"SBG, Excessive Packet Rate Detected ", "SBG%2C+High+Amount+of+Malformed+Packets+Received":"SBG, High Amount of Malformed Packets Received", "SBG%2C+High+Amount+of+STUN+Packets+Detected":"SBG, High Amount of STUN Packets Detected", "SBG%2C+High+Amount+of+TCP+SYN+Packets+Received":"SBG, High Amount of TCP SYN Packets Received", "SBG%2C+High+Amount+of+UDP+Packets+Received+":"SBG, High Amount of UDP Packets Received ", "SBG%2C+IP+Address+Blocked+Due+to+Excessive+Packet+Rate":"SBG, IP Address Blocked Due to Excessive Packet Rate", "SBG%2C+Lost+Connectivity+to+Diameter+Server":"SBG, Lost Connectivity to Diameter Server", "SBG%2C+Mated+Pair+out+of+Service":"SBG, Mated Pair out of Service", "SBG%2C+Network+Unavailable+for+Media+Handling":"SBG, Network Unavailable for Media Handling", "SBG%2C+Non-emergency+Call+Released+to+Free+Resources+for+Emergency+Call":"SBG, Non-emergency Call Released to Free Resources for Emergency Call", "SBG%2C+Not+Enough+Disk+Space+for+Storing+Charging+Data":"SBG, Not Enough Disk Space for Storing Charging Data", "SBG%2C+Payload+Mated+Pair+Failure":"SBG, Payload Mated Pair Failure", "SBG%2C+Payload+Processor+Failure":"SBG, Payload Processor Failure", "SBG%2C+Processor+Overloaded":"SBG, Processor Overloaded", "SBG%2C+Registered+User+Set+in+Quarantine":"SBG, Registered User Set in Quarantine", "SBG%2C+Registration+Contacts+Exceed+Configured+Threshold":"SBG, Registration Contacts Exceed Configured Threshold", "SBG%2C+Sequential+Restart+Initiated":"SBG, Sequential Restart Initiated", "SBG%2C+SIP+Abuse+Detected":"SBG, SIP Abuse Detected", "SBG%2C+SIP+Network+Locked":"SBG, SIP Network Locked", "SBG%2C+SIP+Next+Hop+Reachable":"SBG, SIP Next Hop Reachable", "SBG%2C+SIP+Next+Hop+Unreachable":"SBG, SIP Next Hop Unreachable", "SBG%2C+SIP+Request+Rejected+by+Network+Throttling":"SBG, SIP Request Rejected by Network Throttling", "SBG%2C+TLS+Certificate+Imported":"SBG, TLS Certificate Imported", "SBG%2C+Trace+Recording+Session+Number+Limit+Reached":"SBG, Trace Recording Session Number Limit Reached", "SBG%2C+Trace+Session+Deactivated":"SBG, Trace Session Deactivated", "SBG%2C+Trace+Session+Times+Out":"SBG, Trace Session Times Out", "SBG%2C+Unknown+Media+Type+or+Payload+Type":"SBG, Unknown Media Type or Payload Type" } }, "vProbes": { "vf": { }, "vfc": { }, "location": { }, "alarmCondition": { } } } } } +globalPropsPartial={"global": { "service": { "": "", "vUSP": "vUSP", "vSCP": "vSCP", "vProbes": "vProbes" } }, "policy": { "timeout": 5, "recipe": { "": "", "restart": "Restart", "rebuild": "Rebuild", "migrate": "Migrate" }, "maxRetries": "3", "retryTimeLimit": 180, "resource": { "vCTS": "vCTS", "v3CDB": "v3CDB", "vUDR": "vUDR", "vCOM": "vCOM", "vRAR": "vRAR", "vLCS": "vLCS", "vUDR-BE": "vUDR-BE", "vDBE": "vDBE" }, "parentPolicyConditions": { "Failure_Retries": "Failure: Max Retries Exceeded", "Failure_Timeout": "Failure: Time Limit Exceeded", "Failure_Exception": "Failure: Exception", "Failure": "Failure: Other", "Success": "Success" } } } +globalPropsTest={"global": { "service": { "": "", "vUSP": "vUSP", "vSCP": "vSCP", "vProbes": "vProbes" } }, "policy": { "timeout": 5, "recipe": { "": "", "restart": "Restart", "rebuild": "Rebuild", "migrate": "Migrate" }, "maxRetries": "3", "retryTimeLimit": 180, "resource": { "vCTS": "vCTS", "v3CDB": "v3CDB", "vUDR": "vUDR", "vCOM": "vCOM", "vRAR": "vRAR", "vLCS": "vLCS", "vUDR-BE": "vUDR-BE", "vDBE": "vDBE" }, "parentPolicyConditions": { "Failure_Retries": "Failure: Max Retries Exceeded", "Failure_Timeout": "Failure: Time Limit Exceeded", "Failure_Exception": "Failure: Exception", "Failure": "Failure: Other", "Success": "Success" } }, "shared": { "byService": { "": { "vf": { }, "vfc": { }, "location": { }, "alarmCondition": { } }, "vSCP": { "vf": { "frwl_scp": "FW" }, "vfc": { "FW": "FW" }, "location": { "AKRNOHAH": "Akron", "ALLNTXSA": "Allen-2" }, "alarmCondition": { "authenticationFailure": "authenticationFailure", "bigipActive": "bigipActive", "bigipActiveActive": "bigipActiveActive", "bigipAgentRestart": "bigipAgentRestart", "bigipAgentShutdown": "bigipAgentShutdown", "bigipAgentStart": "bigipAgentStart", "bigipAggrReaperStateChange": "bigipAggrReaperStateChange", "bigipAomCpuTempTooHigh": "bigipAomCpuTempTooHigh", "bigipARPConflict": "bigipARPConflict", "bigipAsmBruteForceAttackDetected": "bigipAsmBruteForceAttackDetected", "bigipAsmDosAttackDetected": "bigipAsmDosAttackDetected", "bigipAsmFtpRequestBlocked": "bigipAsmFtpRequestBlocked", "bigipAsmFtpRequestViolation": "bigipAsmFtpRequestViolation", "bigipAsmRequestBlocked": "bigipAsmRequestBlocked", "bigipAsmRequestViolation": "bigipAsmRequestViolation", "bigipAsmSmtpRequestBlocked": "bigipAsmSmtpRequestBlocked", "bigipAsmSmtpRequestViolation": "bigipAsmSmtpRequestViolation", "bigipAuthFailed": "bigipAuthFailed", "bigipAvrAlertsMetricSmtp": "bigipAvrAlertsMetricSmtp", "bigipAvrAlertsMetricSnmp": "bigipAvrAlertsMetricSnmp", "bigipBladeNoPower": "bigipBladeNoPower", "bigipBladeOffline": "bigipBladeOffline", "bigipBladeTempHigh": "bigipBladeTempHigh", "bigipChassisFanBad": "bigipChassisFanBad", "bigipChassisPowerSupplyBad": "bigipChassisPowerSupplyBad", "bigipChassisTempHigh": "bigipChassisTempHigh", "bigipChmandAlertFanTrayBad": "bigipChmandAlertFanTrayBad", "bigipClusterdNoResponse": "bigipClusterdNoResponse", "bigipClusterPrimaryChanged": "bigipClusterPrimaryChanged", "bigipCompLimitExceeded": "bigipCompLimitExceeded", "bigipConfigLoaded": "bigipConfigLoaded", "bigipCpuFanSpeedBad": "bigipCpuFanSpeedBad", "bigipCpuFanSpeedLow": "bigipCpuFanSpeedLow", "bigipCpuTempHigh": "bigipCpuTempHigh", "bigipDiskPartitionGrowth": "bigipDiskPartitionGrowth", "bigipDiskPartitionWarn": "bigipDiskPartitionWarn", "bigipDnsRequestRateLimiterEngaged": "bigipDnsRequestRateLimiterEngaged", "bigipDosAttackStart": "bigipDosAttackStart", "bigipDosAttackStop": "bigipDosAttackStop", "bigipExternalLinkChange": "bigipExternalLinkChange", "bigipFeatureFailed": "bigipFeatureFailed", "bigipFeatureOnline": "bigipFeatureOnline", "bigipFipsDeviceError": "bigipFipsDeviceError", "bigipGtmAppAvail": "bigipGtmAppAvail", "bigipGtmAppNotAvail": "bigipGtmAppNotAvail", "bigipGtmAppObjAvail": "bigipGtmAppObjAvail", "bigipGtmAppObjNotAvail": "bigipGtmAppObjNotAvail", "bigipGtmBig3dSslCertExpired": "bigipGtmBig3dSslCertExpired", "bigipGtmBig3dSslCertWillExpire": "bigipGtmBig3dSslCertWillExpire", "bigipGtmBoxAvail": "bigipGtmBoxAvail", "bigipGtmBoxNotAvail": "bigipGtmBoxNotAvail", "bigipGtmDcAvail": "bigipGtmDcAvail", "bigipGtmDcDisabled": "bigipGtmDcDisabled", "bigipGtmDcEnabled": "bigipGtmDcEnabled", "bigipGtmDcNotAvail": "bigipGtmDcNotAvail", "bigipGtmJoinedGroup": "bigipGtmJoinedGroup", "bigipGtmKeyGenerationExpiration": "bigipGtmKeyGenerationExpiration", "bigipGtmKeyGenerationRollover": "bigipGtmKeyGenerationRollover", "bigipGtmLeftGroup": "bigipGtmLeftGroup", "bigipGtmLinkAvail": "bigipGtmLinkAvail", "bigipGtmLinkDisabled": "bigipGtmLinkDisabled", "bigipGtmLinkEnabled": "bigipGtmLinkEnabled", "bigipGtmLinkNotAvail": "bigipGtmLinkNotAvail", "bigipGtmPoolAvail": "bigipGtmPoolAvail", "bigipGtmPoolDisabled": "bigipGtmPoolDisabled", "bigipGtmPoolEnabled": "bigipGtmPoolEnabled", "bigipGtmPoolMbrAvail": "bigipGtmPoolMbrAvail", "bigipGtmPoolMbrDisabled": "bigipGtmPoolMbrDisabled", "bigipGtmPoolMbrEnabled": "bigipGtmPoolMbrEnabled", "bigipGtmPoolMbrNotAvail": "bigipGtmPoolMbrNotAvail", "bigipGtmPoolNotAvail": "bigipGtmPoolNotAvail", "bigipGtmProberPoolDisabled": "bigipGtmProberPoolDisabled", "bigipGtmProberPoolEnabled": "bigipGtmProberPoolEnabled", "bigipGtmProberPoolMbrDisabled": "bigipGtmProberPoolMbrDisabled", "bigipGtmProberPoolMbrEnabled": "bigipGtmProberPoolMbrEnabled", "bigipGtmProberPoolMbrStatusChange": "bigipGtmProberPoolMbrStatusChange", "bigipGtmProberPoolMbrStatusChangeReason": "bigipGtmProberPoolMbrStatusChangeReason", "bigipGtmProberPoolStatusChange": "bigipGtmProberPoolStatusChange", "bigipGtmProberPoolStatusChangeReason": "bigipGtmProberPoolStatusChangeReason", "bigipGtmRequestRateLimiterEngaged": "bigipGtmRequestRateLimiterEngaged", "bigipGtmServerAvail": "bigipGtmServerAvail", "bigipGtmServerDisabled": "bigipGtmServerDisabled", "bigipGtmServerEnabled": "bigipGtmServerEnabled", "bigipGtmServerNotAvail": "bigipGtmServerNotAvail", "bigipGtmSslCertExpired": "bigipGtmSslCertExpired", "bigipGtmSslCertWillExpire": "bigipGtmSslCertWillExpire", "bigipGtmVsAvail": "bigipGtmVsAvail", "bigipGtmVsDisabled": "bigipGtmVsDisabled", "bigipGtmVsEnabled": "bigipGtmVsEnabled", "bigipGtmVsNotAvail": "bigipGtmVsNotAvail", "bigipGtmWideIpAvail": "bigipGtmWideIpAvail", "bigipGtmWideIpDisabled": "bigipGtmWideIpDisabled", "bigipGtmWideIpEnabled": "bigipGtmWideIpEnabled", "bigipGtmWideIpNotAvail": "bigipGtmWideIpNotAvail", "bigipHardDiskFailure": "bigipHardDiskFailure", "bigipInetPortExhaustion": "bigipInetPortExhaustion", "bigipLibhalBladePoweredOff": "bigipLibhalBladePoweredOff", "bigipLibhalDiskBayRemoved": "bigipLibhalDiskBayRemoved", "bigipLibhalSensorAlarmCritical": "bigipLibhalSensorAlarmCritical", "bigipLibhalSsdLogicalDiskRemoved": "bigipLibhalSsdLogicalDiskRemoved", "bigipLibhalSsdPhysicalDiskRemoved": "bigipLibhalSsdPhysicalDiskRemoved", "bigipLicenseExpired": "bigipLicenseExpired", "bigipLicenseFailed": "bigipLicenseFailed", "bigipLogAlert": "bigipLogAlert", "bigipLogCrit": "bigipLogCrit", "bigipLogEmerg": "bigipLogEmerg", "bigipLogErr": "bigipLogErr", "bigipLogWarning": "bigipLogWarning", "bigipLtmVsAvail": "bigipLtmVsAvail", "bigipLtmVsDisabled": "bigipLtmVsDisabled", "bigipLtmVsEnabled": "bigipLtmVsEnabled", "bigipLtmVsUnavail": "bigipLtmVsUnavail", "bigipMemberRate": "bigipMemberRate", "bigipNetLinkDown": "bigipNetLinkDown", "bigipNodeDown": "bigipNodeDown", "bigipNodeRate": "bigipNodeRate", "bigipNodeUp": "bigipNodeUp", "bigipPacketRejected": "bigipPacketRejected", "bigipPsAbsent": "bigipPsAbsent", "bigipPsPowerOff": "bigipPsPowerOff", "bigipPsPowerOn": "bigipPsPowerOn", "bigipRaidDiskFailure": "bigipRaidDiskFailure", "bigipServiceDown": "bigipServiceDown", "bigipServiceUp": "bigipServiceUp", "bigipSsdMwiNearThreshold": "bigipSsdMwiNearThreshold", "bigipSsdMwiReachedThreshold": "bigipSsdMwiReachedThreshold", "bigipSslLimitExceeded": "bigipSslLimitExceeded", "bigipStandby": "bigipStandby", "bigipStandByFail": "bigipStandByFail", "bigipSystemCheckAlertCurrentHigh": "bigipSystemCheckAlertCurrentHigh", "bigipSystemCheckAlertCurrentLow": "bigipSystemCheckAlertCurrentLow", "bigipSystemCheckAlertFanSpeedLow": "bigipSystemCheckAlertFanSpeedLow", "bigipSystemCheckAlertMilliVoltageHigh": "bigipSystemCheckAlertMilliVoltageHigh", "bigipSystemCheckAlertMilliVoltageLow": "bigipSystemCheckAlertMilliVoltageLow", "bigipSystemCheckAlertPowerHigh": "bigipSystemCheckAlertPowerHigh", "bigipSystemCheckAlertPowerLow": "bigipSystemCheckAlertPowerLow", "bigipSystemCheckAlertTempHigh": "bigipSystemCheckAlertTempHigh", "bigipSystemCheckAlertVoltageHigh": "bigipSystemCheckAlertVoltageHigh", "bigipSystemCheckAlertVoltageLow": "bigipSystemCheckAlertVoltageLow", "bigipSystemShutdown": "bigipSystemShutdown", "bigipTamdAlert": "bigipTamdAlert", "bigipTrafficGroupActivate": "bigipTrafficGroupActivate", "bigipTrafficGroupActive": "bigipTrafficGroupActive", "bigipTrafficGroupDeactivate": "bigipTrafficGroupDeactivate", "bigipTrafficGroupForcedOffline": "bigipTrafficGroupForcedOffline", "bigipTrafficGroupOffline": "bigipTrafficGroupOffline", "bigipTrafficGroupStandby": "bigipTrafficGroupStandby", "bigipUnsolicitedRepliesExceededThreshold": "bigipUnsolicitedRepliesExceededThreshold", "bigipUpdateError": "bigipUpdateError", "bigipUpdatePriority": "bigipUpdatePriority", "bigipUpdateServer": "bigipUpdateServer", "bigipVcmpAlertsVcmpHBDetected": "bigipVcmpAlertsVcmpHBDetected", "bigipVcmpAlertsVcmpHBLost": "bigipVcmpAlertsVcmpHBLost", "bigipVcmpAlertsVcmpPowerOff": "bigipVcmpAlertsVcmpPowerOff", "bigipVcmpAlertsVcmpPowerOn": "bigipVcmpAlertsVcmpPowerOn", "bigipVirtualRate": "bigipVirtualRate", "coldStart": "coldStart", "emASMSigInstallComplete": "emASMSigInstallComplete", "emASMSigInstallFailed": "emASMSigInstallFailed", "emASMSigUpdateAvailable": "emASMSigUpdateAvailable", "emASMSigUpdateFailed": "emASMSigUpdateFailed", "emCertificateExpiration": "emCertificateExpiration", "emCpuUsage": "emCpuUsage", "emDeviceActiveMode": "emDeviceActiveMode", "emDeviceClockSkew": "emDeviceClockSkew", "emDeviceConfigSettingChanged": "emDeviceConfigSettingChanged", "emDeviceConfigSync": "emDeviceConfigSync", "emDeviceForcedOfflineMode": "emDeviceForcedOfflineMode", "emDeviceImpaired": "emDeviceImpaired", "emDeviceOfflineMode": "emDeviceOfflineMode", "emDeviceStandbyMode": "emDeviceStandbyMode", "emDeviceUnreachable": "emDeviceUnreachable", "emDiskUsage": "emDiskUsage", "emGatherServiceContractFailure": "emGatherServiceContractFailure", "emHaSyncFailed": "emHaSyncFailed", "emHotfixInstallComplete": "emHotfixInstallComplete", "emHotfixInstallFailed": "emHotfixInstallFailed", "emMemoryUsage": "emMemoryUsage", "emPerformanceStorageCap": "emPerformanceStorageCap", "emPerformanceStorageDays": "emPerformanceStorageDays", "emPerformanceThreshold": "emPerformanceThreshold", "emRaidDriveFailureDetected": "emRaidDriveFailureDetected", "emRaidDriveRebuildComplete": "emRaidDriveRebuildComplete", "emSchedBackupFailed": "emSchedBackupFailed", "emScheduledArchiveFailed": "emScheduledArchiveFailed", "emServiceContractExpiry": "emServiceContractExpiry", "emSoftwareInstallComplete": "emSoftwareInstallComplete", "emSoftwareInstallFailed": "emSoftwareInstallFailed", "emStatsCollectionRateCap": "emStatsCollectionRateCap", "emStatsDBConnectivityLost": "emStatsDBConnectivityLost", "emStatsDBConnectivityRestored": "emStatsDBConnectivityRestored", "fallingAlarm": "fallingAlarm", "ipv6IfStateChange": "ipv6IfStateChange", "linkDown": "linkDown", "linkUp": "linkUp", "mteEventSetFailure": "mteEventSetFailure", "mteTriggerFailure": "mteTriggerFailure", "mteTriggerFalling": "mteTriggerFalling", "mteTriggerFired": "mteTriggerFired", "mteTriggerRising": "mteTriggerRising", "netSnmpExampleHeartbeatNotification": "netSnmpExampleHeartbeatNotification", "newRoot": "newRoot", "nsNotifyRestart": "nsNotifyRestart", "nsNotifyShutdown": "nsNotifyShutdown", "nsNotifyStart": "nsNotifyStart", "risingAlarm": "risingAlarm", "schedActionFailure": "schedActionFailure", "smScriptAbort": "smScriptAbort", "smScriptException": "smScriptException", "smScriptResult": "smScriptResult", "topologyChange": "topologyChange", "ucdShutdown": "ucdShutdown", "ucdStart": "ucdStart", "warmStart": "warmStart" } }, "vUSP": { "vf": { "ctsf-xxx": "vCTS" }, "vfc": { "vCTS - CFED": "vCTS - CFED", "vCTS - Config": "vCTS - Config", "vCTS - DFED": "vCTS - DFED", "vCTS - TAFE-fsd": "vCTS - TAFE-fsd", "vCTS - GLS": "vCTS - GLS", "vCTS - XXX": "vCTS - XXX", "vCTS - Management Interface": "vCTS - Management Interface", "vCTS - SPFE-pfe": "vCTS - SPFE-pfe", "vCTS - DNS": "vCTS - DNS", "vCTS - SPFE-spd": "vCTS - SPFE-spd", "vCTS - SPFE-spt": "vCTS - SPFE-spt", "vCTS - TAFE-tas": "vCTS - TAFE-tas" }, "location": { "SNDGCA06": "San Diego(core site) A06", "SNDGCA64": "San Diego(core site) A64", "SNANTXCA": "San Antonio(core site)", "KSCYMO09": "Kansas City(core site)", "kings_mountain": "Kings Mountain(AMG)", "Secaucus": "Secaucus(AMG)", "lisle": "Lisle(AMG)", "concord": "Concord(AMG)", "houston": "Houston(AMG)", "akron": "Akron(AMG)" }, "alarmCondition": { "acrTemporaryBufferOverload": "acrTemporaryBufferOverload", "adnsExtendedTTLcaching": "adnsExtendedTTLcaching", "adnsQueryFailureCaching": "adnsQueryFailureCaching", "adnsQueueCongestion": "adnsQueueCongestion", "asdaCommunicationFailure": "asdaCommunicationFailure", "asdaRequestQueue": "asdaRequestQueue", "capacityLicenseKeyExpiration": "capacityLicenseKeyExpiration", "capacityLicenseKeyNearExpiration": "capacityLicenseKeyNearExpiration", "capacityLicenseKeyValidationError": "capacityLicenseKeyValidationError", "cardConnectionLost": "cardConnectionLost", "ccdbCommunicationFailure": "ccdbCommunicationFailure", "cpiAlrmCritical": "cpiAlrmCritical", "cpiAlrmMajor": "cpiAlrmMajor", "cpiAlrmMinor": "cpiAlrmMinor", "cpiAlrmWarning": "cpiAlrmWarning", "cpiAsrtEsc": "cpiAsrtEsc", "cpiAsrtNonEsc": "cpiAsrtNonEsc", "cpiAsrtNonEscCritical": "cpiAsrtNonEscCritical", "cpiAsrtNonEscMajor": "cpiAsrtNonEscMajor", "cpiAsrtNonEscMinor": "cpiAsrtNonEscMinor", "cpiAudErrCount": "cpiAudErrCount", "cpiAudManAct": "cpiAudManAct", "cpiAudNewEvent": "cpiAudNewEvent", "cpiCompleteRateAlarm": "cpiCompleteRateAlarm", "cpiCTS3xxFailRate": "cpiCTS3xxFailRate", "cpiCTS4xxFailRate": "cpiCTS4xxFailRate", "cpiCTS5xxFailRate": "cpiCTS5xxFailRate", "cpiCTS6xxFailRate": "cpiCTS6xxFailRate", "cpiCTSSIPRetransmitInvite": "cpiCTSSIPRetransmitInvite", "cpiCTSSIPRetransmitNonInvite": "cpiCTSSIPRetransmitNonInvite", "cpiDropMGAllocConnReq": "cpiDropMGAllocConnReq", "cpiDropRateAlarm": "cpiDropRateAlarm", "cpiExceptionService": "cpiExceptionService", "cpiFailRateAlarm": "cpiFailRateAlarm", "cpiFailSCTPFastRetransIncr": "cpiFailSCTPFastRetransIncr", "cpiFailSCTPFastRetransRate": "cpiFailSCTPFastRetransRate", "cpiFailSCTPSRTT1Incr": "cpiFailSCTPSRTT1Incr", "cpiFailSCTPSRTT2Incr": "cpiFailSCTPSRTT2Incr", "cpiFailSCTPT3RetransIncr": "cpiFailSCTPT3RetransIncr", "cpiFailSCTPT3RetransRate": "cpiFailSCTPT3RetransRate", "cpiFileSysUsage": "cpiFileSysUsage", "cpiMemAllocFail": "cpiMemAllocFail", "cpiNumOfLICDRDel": "cpiNumOfLICDRDel", "cpiReinitServiceSelf": "cpiReinitServiceSelf", "cpiSIPRetransmitInvite": "cpiSIPRetransmitInvite", "cpiSIPRetransmitNonInvite": "cpiSIPRetransmitNonInvite", "cpiSS7DropSCTPPktsRcvd": "cpiSS7DropSCTPPktsRcvd", "cpiSS7FailSCTPFastRetransRate": "cpiSS7FailSCTPFastRetransRate", "cpiStabilityAlarm": "cpiStabilityAlarm", "cpuOverload": "cpuOverload", "databaseConnectionLost": "databaseConnectionLost", "databaseReplicationLinkDown": "databaseReplicationLinkDown", "databaseSizeExhausted": "databaseSizeExhausted", "dbHighCpuUtilization": "dbHighCpuUtilization", "dbOffline": "dbOffline", "dbStatusUnexpected": "dbStatusUnexpected", "degradedResource": "degradedResource", "degrow": "degrow", "deviceServerCxnLost": "deviceServerCxnLost", "diamLinkDown": "diamLinkDown", "diamMaxClientsExceeded": "diamMaxClientsExceeded", "dnsThreshold": "dnsThreshold", "ethernetError": "ethernetError", "ethernetLinkDown": "ethernetLinkDown", "externalConnectivity": "externalConnectivity", "featureLicenseExpiration": "featureLicenseExpiration", "featureLicenseKeyNearExpiration": "featureLicenseKeyNearExpiration", "featureLockValidationError": "featureLockValidationError", "fqdnError": "fqdnError", "fru": "fru", "gatewayCongestion": "gatewayCongestion", "gatewayForcedOOS": "gatewayForcedOOS", "gatewayProvisioningError": "gatewayProvisioningError", "gatewayUnreachable": "gatewayUnreachable", "gatewayUnregistered": "gatewayUnregistered", "globalParameterNotFound": "globalParameterNotFound", "glsInvalidCellId": "glsInvalidCellId", "glsServerUnavailable": "glsServerUnavailable", "grow": "grow", "h248MessageBufferDepletion": "h248MessageBufferDepletion", "hlrSyncConnection": "hlrSyncConnection", "hlrSyncQueue": "hlrSyncQueue", "hostDown": "hostDown", "hostReset": "hostReset", "invalidGateway": "invalidGateway", "iriLinkDown": "iriLinkDown", "ldapServerConnectionLost": "ldapServerConnectionLost", "lispBufferFullExternalLIG": "lispBufferFullExternalLIG", "llcDown": "llcDown", "logicalLinkDown": "logicalLinkDown", "logicalLinkNotFound": "logicalLinkNotFound", "logRotateThreshold": "logRotateThreshold", "memoryOverload": "memoryOverload", "nodeConfigFailure": "nodeConfigFailure", "nodeGroupOOS": "nodeGroupOOS", "nodeOOS": "nodeOOS", "nonCompliantFaultGroupMemberState": "nonCompliantFaultGroupMemberState", "nonCsAddrChannelDepletion": "nonCsAddrChannelDepletion", "numberOfTuplesInUse": "numberOfTuplesInUse", "osSecInfoModificationDetected": "osSecInfoModificationDetected", "osSecInformationMissing": "osSecInformationMissing", "osSecUnexpectedInformation": "osSecUnexpectedInformation", "pdnsMySqlReplication": "pdnsMySqlReplication", "pktCorruptionDetectedViaRCCLANCheck": "pktCorruptionDetectedViaRCCLANCheck", "platformCommandFailure": "platformCommandFailure", "pmDataNotCollected": "pmDataNotCollected", "prdbConnectWithAlternateFailure": "prdbConnectWithAlternateFailure", "prdbSyncDataToAlternateFailure": "prdbSyncDataToAlternateFailure", "preAllocatedResourceOverload": "preAllocatedResourceOverload", "prifSocketError": "prifSocketError", "processDown": "processDown", "processNotStarted": "processNotStarted", "provisioningInhibitedMode": "provisioningInhibitedMode", "prsCallInstanceExceeded": "prsCallInstanceExceeded", "prsCpuOverload": "prsCpuOverload", "prsDatabaseMigrationFailure": "prsDatabaseMigrationFailure", "prsFailureToConnectWithPRDB": "prsFailureToConnectWithPRDB", "prsQueueExceeded": "prsQueueExceeded", "rccInhibitedMode": "rccInhibitedMode", "remotedbLinkDown": "remotedbLinkDown", "remoteQueryServerFailure": "remoteQueryServerFailure", "restore": "restore", "serviceCFGDataTimestampError": "serviceCFGDataTimestampError", "serviceCommCxnLost": "serviceCommCxnLost", "serviceOnewayCommunication": "serviceOnewayCommunication", "sheddingOverload": "sheddingOverload", "simxml": "simxml", "sipLinkSetMaxQuarantineList": "sipLinkSetMaxQuarantineList", "sipLinkSetUnavailable": "sipLinkSetUnavailable", "sipLinkUnavailable": "sipLinkUnavailable", "smdiSocketError": "smdiSocketError", "socketError": "socketError", "softwareAllocatedResourceOverload": "softwareAllocatedResourceOverload", "softwareComponentDown": "softwareComponentDown", "softwareComponentStandbyNotReady": "softwareComponentStandbyNotReady", "softwareLicense": "softwareLicense", "svcdegrow": "svcdegrow", "svcgrow": "svcgrow", "swVersionMismatch": "swVersionMismatch", "tftpDownloadCorrupt": "tftpDownloadCorrupt", "timeStampValueOutOfSystemRange": "timeStampValueOutOfSystemRange", "tlsInitError": "tlsInitError", "transactionHandlerBlockDepletion": "transactionHandlerBlockDepletion", "upgrade": "upgrade", "usageOfSyncTable": "usageOfSyncTable", "utHttpProxyConnectionDown": "utHttpProxyConnectionDown", "wpifSocketError": "wpifSocketError", "BackupFailure": "BackupFailure", "Configuration": "Configuration", "COTRecordTransferFailure": "COTRecordTransferFailure", "CPMUSERDATAINCONSITENCY": "CPMUSERDATAINCONSITENCY", "CPMUSERDATARESTORED": "CPMUSERDATARESTORED", "EventQueueCapacity": "EventQueueCapacity", "ICMPFailure": "ICMPFailure", "IPsecConfig": "IPsecConfig", "LinkDown": "LinkDown", "NotifyDisabled": "NotifyDisabled", "NotifyLocked": "NotifyLocked", "NumTL1MeasThresh": "NumTL1MeasThresh", "RADIUSTOLDAPFAILURE": "RADIUSTOLDAPFAILURE", "ROOTACCESSDENIED": "ROOTACCESSDENIED", "ROOTFTPVIOLATION": "ROOTFTPVIOLATION", "ROOTLOGINVIOLATION": "ROOTLOGINVIOLATION", "ROOTSSHLOGINVIOLATION": "ROOTSSHLOGINVIOLATION", "SetupAAAFailure": "SetupAAAFailure", "SNETrapOverload": "SNETrapOverload", "SNMPAuthenticationFailure": "SNMPAuthenticationFailure", "SNMPFailure": "SNMPFailure", "SUTOROOTFAILURE": "SUTOROOTFAILURE", "SYSTEMTrapOverload": "SYSTEMTrapOverload", "ThresholdCrossed": "ThresholdCrossed", "UndiscoveredObject": "UndiscoveredObject", "WriteAAAFailure": "WriteAAAFailure" } }, "Trinity": { "vf": { "aSBG": "aSBG", "nSBG": "nSBG", "tSBG": "tSBG" }, "vfc": { "pld": "PL - Payload Processor", "scr": "SC - System Controller" }, "location": { "SNDGCA64": "San Diego SAN3", "ALPRGAED": "Alpharetta PDK1", "LSLEILAA":"Lisle DPA3" }, "alarmCondition": { "A+Fallback+Operation+will+soon+be+started":"A Fallback Operation will soon be started", "BRM%2C+Auto+Export+Backup+Failed":"BRM, Auto Export Backup Failed", "BRM%2C+Scheduled+Backup+Failed":"BRM, Scheduled Backup Failed", "COM+SA%2C+AMF+Component+Cleanup+Failed":"COM SA, AMF Component Cleanup Failed", "COM+SA%2C+AMF+Component+Instantiation+Failed":"COM SA, AMF Component Instantiation Failed", "COM+SA%2C+AMF+SI+Unassigned":"COM SA, AMF SI Unassigned", "COM+SA%2C+CLM+Cluster+Node+Unavailable":"COM SA, CLM Cluster Node Unavailable", "COM+SA%2C+MDF+Detected+Model+Error":"COM SA, MDF Detected Model Error", "COM+SA%2C+Proxy+Status+of+a+Component+Changed+to+Unproxied":"COM SA, Proxy Status of a Component Changed to Unproxied", "File+Management%2C+Number+of+Files+in+FileGroup+Exceeded":"File Management, Number of Files in FileGroup Exceeded", "File+Management%2C+Max+Size+in+FileGroup+Exceeded":"File Management, Max Size in FileGroup Exceeded", "LOTC+Disk+Replication+Communication":"LOTC Disk Replication Communication", "LOTC+Disk+Replication+Consistency":"LOTC Disk Replication Consistency", "LOTC+Disk+Usage":"LOTC Disk Usage", "LOTC+memory+Usage":"LOTC memory Usage", "LOTC+Time+Synchronization":"LOTC Time Synchronization", "SBG%2C+BGF+Control+Link+Down":"SBG, BGF Control Link Down", "SBG%2C+BGF+Control+Link+Disabled":"SBG, BGF Control Link Disabled", "SBG%2C+BGF+Control+Link+Enabled":"SBG, BGF Control Link Enabled", "SBG%2C+BGF+Control+Link+Remote+Locked":"SBG, BGF Control Link Remote Locked", "SBG%2C+Charging+Data+Storage+Maximum+Records+Reached":"SBG, Charging Data Storage Maximum Records Reached", "SBG%2C+Charging+Server+Rejects+Charging+Data":"SBG, Charging Server Rejects Charging Data", "SBG%2C+Excessive+Packet+Rate+Detected+":"SBG, Excessive Packet Rate Detected ", "SBG%2C+High+Amount+of+Malformed+Packets+Received":"SBG, High Amount of Malformed Packets Received", "SBG%2C+High+Amount+of+STUN+Packets+Detected":"SBG, High Amount of STUN Packets Detected", "SBG%2C+High+Amount+of+TCP+SYN+Packets+Received":"SBG, High Amount of TCP SYN Packets Received", "SBG%2C+High+Amount+of+UDP+Packets+Received+":"SBG, High Amount of UDP Packets Received ", "SBG%2C+IP+Address+Blocked+Due+to+Excessive+Packet+Rate":"SBG, IP Address Blocked Due to Excessive Packet Rate", "SBG%2C+Lost+Connectivity+to+Diameter+Server":"SBG, Lost Connectivity to Diameter Server", "SBG%2C+Mated+Pair+out+of+Service":"SBG, Mated Pair out of Service", "SBG%2C+Network+Unavailable+for+Media+Handling":"SBG, Network Unavailable for Media Handling", "SBG%2C+Non-emergency+Call+Released+to+Free+Resources+for+Emergency+Call":"SBG, Non-emergency Call Released to Free Resources for Emergency Call", "SBG%2C+Not+Enough+Disk+Space+for+Storing+Charging+Data":"SBG, Not Enough Disk Space for Storing Charging Data", "SBG%2C+Payload+Mated+Pair+Failure":"SBG, Payload Mated Pair Failure", "SBG%2C+Payload+Processor+Failure":"SBG, Payload Processor Failure", "SBG%2C+Processor+Overloaded":"SBG, Processor Overloaded", "SBG%2C+Registered+User+Set+in+Quarantine":"SBG, Registered User Set in Quarantine", "SBG%2C+Registration+Contacts+Exceed+Configured+Threshold":"SBG, Registration Contacts Exceed Configured Threshold", "SBG%2C+Sequential+Restart+Initiated":"SBG, Sequential Restart Initiated", "SBG%2C+SIP+Abuse+Detected":"SBG, SIP Abuse Detected", "SBG%2C+SIP+Network+Locked":"SBG, SIP Network Locked", "SBG%2C+SIP+Next+Hop+Reachable":"SBG, SIP Next Hop Reachable", "SBG%2C+SIP+Next+Hop+Unreachable":"SBG, SIP Next Hop Unreachable", "SBG%2C+SIP+Request+Rejected+by+Network+Throttling":"SBG, SIP Request Rejected by Network Throttling", "SBG%2C+TLS+Certificate+Imported":"SBG, TLS Certificate Imported", "SBG%2C+Trace+Recording+Session+Number+Limit+Reached":"SBG, Trace Recording Session Number Limit Reached", "SBG%2C+Trace+Session+Deactivated":"SBG, Trace Session Deactivated", "SBG%2C+Trace+Session+Times+Out":"SBG, Trace Session Times Out", "SBG%2C+Unknown+Media+Type+or+Payload+Type":"SBG, Unknown Media Type or Payload Type" } }, "vProbes": { "vf": { }, "vfc": { }, "location": { }, "alarmCondition": { } } } } } +globalPropsPartialTest={"global": { "service": { "": "", "vUSP": "vUSP", "vSCP": "vSCP", "vProbes": "vProbes" } }, "policy": { "timeout": 5, "recipe": { "": "", "restart": "Restart", "rebuild": "Rebuild", "migrate": "Migrate" }, "maxRetries": "3", "retryTimeLimit": 180, "resource": { "vCTS": "vCTS", "v3CDB": "v3CDB", "vUDR": "vUDR", "vCOM": "vCOM", "vRAR": "vRAR", "vLCS": "vLCS", "vUDR-BE": "vUDR-BE", "vDBE": "vDBE" }, "parentPolicyConditions": { "Failure_Retries": "Failure: Max Retries Exceeded", "Failure_Timeout": "Failure: Time Limit Exceeded", "Failure_Exception": "Failure: Exception", "Failure": "Failure: Other", "Success": "Success" } }} ui.location.default={"location":{"SNDGCA64":"San Diego SAN3","ALPRGAED":"Alpharetta PDK1","LSLEILAA":"Lisle DPA3"}} ui.alarm.fault={"alarmCondition":{"A+Fallback+Operation+will+soon+be+started":"A Fallback Operation will soon be started","BRM%2C+Auto+Export+Backup+Failed":"BRM, Auto Export Backup Failed","BRM%2C+Scheduled+Backup+Failed":"BRM, Scheduled Backup Failed","COM+SA%2C+AMF+Component+Cleanup+Failed":"COM SA, AMF Component Cleanup Failed","COM+SA%2C+AMF+Component+Instantiation+Failed":"COM SA, AMF Component Instantiation Failed","COM+SA%2C+AMF+SI+Unassigned":"COM SA, AMF SI Unassigned","COM+SA%2C+CLM+Cluster+Node+Unavailable":"COM SA, CLM Cluster Node Unavailable","COM+SA%2C+MDF+Detected+Model+Error":"COM SA, MDF Detected Model Error","COM+SA%2C+Proxy+Status+of+a+Component+Changed+to+Unproxied":"COM SA, Proxy Status of a Component Changed to Unproxied","File+Management%2C+Number+of+Files+in+FileGroup+Exceeded":"File Management, Number of Files in FileGroup Exceeded","File+Management%2C+Max+Size+in+FileGroup+Exceeded":"File Management, Max Size in FileGroup Exceeded","LOTC+Disk+Replication+Communication":"LOTC Disk Replication Communication","LOTC+Disk+Replication+Consistency":"LOTC Disk Replication Consistency","LOTC+Disk+Usage":"LOTC Disk Usage","LOTC+memory+Usage":"LOTC memory Usage","LOTC+Time+Synchronization":"LOTC Time Synchronization","SBG%2C+BGF+Control+Link+Down":"SBG, BGF Control Link Down","SBG%2C+BGF+Control+Link+Disabled":"SBG, BGF Control Link Disabled","SBG%2C+BGF+Control+Link+Enabled":"SBG, BGF Control Link Enabled","SBG%2C+BGF+Control+Link+Remote+Locked":"SBG, BGF Control Link Remote Locked","SBG%2C+Charging+Data+Storage+Maximum+Records+Reached":"SBG, Charging Data Storage Maximum Records Reached","SBG%2C+Charging+Server+Rejects+Charging+Data":"SBG, Charging Server Rejects Charging Data","SBG%2C+Excessive+Packet+Rate+Detected+":"SBG, Excessive Packet Rate Detected ","SBG%2C+High+Amount+of+Malformed+Packets+Received":"SBG, High Amount of Malformed Packets Received","SBG%2C+High+Amount+of+STUN+Packets+Detected":"SBG, High Amount of STUN Packets Detected","SBG%2C+High+Amount+of+TCP+SYN+Packets+Received":"SBG, High Amount of TCP SYN Packets Received","SBG%2C+High+Amount+of+UDP+Packets+Received+":"SBG, High Amount of UDP Packets Received ","SBG%2C+IP+Address+Blocked+Due+to+Excessive+Packet+Rate":"SBG, IP Address Blocked Due to Excessive Packet Rate","SBG%2C+Lost+Connectivity+to+Diameter+Server":"SBG, Lost Connectivity to Diameter Server","SBG%2C+Mated+Pair+out+of+Service":"SBG, Mated Pair out of Service","SBG%2C+Network+Unavailable+for+Media+Handling":"SBG, Network Unavailable for Media Handling","SBG%2C+Non-emergency+Call+Released+to+Free+Resources+for+Emergency+Call":"SBG, Non-emergency Call Released to Free Resources for Emergency Call","SBG%2C+Not+Enough+Disk+Space+for+Storing+Charging+Data":"SBG, Not Enough Disk Space for Storing Charging Data","SBG%2C+Payload+Mated+Pair+Failure":"SBG, Payload Mated Pair Failure","SBG%2C+Payload+Processor+Failure":"SBG, Payload Processor Failure","SBG%2C+Processor+Overloaded":"SBG, Processor Overloaded","SBG%2C+Registered+User+Set+in+Quarantine":"SBG, Registered User Set in Quarantine","SBG%2C+Registration+Contacts+Exceed+Configured+Threshold":"SBG, Registration Contacts Exceed Configured Threshold","SBG%2C+Sequential+Restart+Initiated":"SBG, Sequential Restart Initiated","SBG%2C+SIP+Abuse+Detected":"SBG, SIP Abuse Detected","SBG%2C+SIP+Network+Locked":"SBG, SIP Network Locked","SBG%2C+SIP+Next+Hop+Reachable":"SBG, SIP Next Hop Reachable","SBG%2C+SIP+Next+Hop+Unreachable":"SBG, SIP Next Hop Unreachable","SBG%2C+SIP+Request+Rejected+by+Network+Throttling":"SBG, SIP Request Rejected by Network Throttling","SBG%2C+TLS+Certificate+Imported":"SBG, TLS Certificate Imported","SBG%2C+Trace+Recording+Session+Number+Limit+Reached":"SBG, Trace Recording Session Number Limit Reached","SBG%2C+Trace+Session+Deactivated":"SBG, Trace Session Deactivated","SBG%2C+Trace+Session+Times+Out":"SBG, Trace Session Times Out","SBG%2C+Unknown+Media+Type+or+Payload+Type":"SBG, Unknown Media Type or Payload Type"}} diff --git a/src/test/resources/example/dao/bpmn-template.xml b/src/test/resources/example/dao/bpmn-template.xml index 5aa133acf..12671ac92 100644 --- a/src/test/resources/example/dao/bpmn-template.xml +++ b/src/test/resources/example/dao/bpmn-template.xml @@ -4,16 +4,8 @@ SequenceFlow_0mshiwd - - SequenceFlow_0mshiwd - SequenceFlow_0z37chw - - - SequenceFlow_0z37chw - SequenceFlow_1io8zzg - - SequenceFlow_1io8zzg + SequenceFlow_0mshiwd SequenceFlow_0yenh9m @@ -31,9 +23,7 @@ SequenceFlow_1q2yngv - - - + @@ -44,12 +34,6 @@ - - - - - - diff --git a/src/test/resources/example/dao/image-template.xml b/src/test/resources/example/dao/image-template.xml index d7af2aa67..fe0af0671 100644 --- a/src/test/resources/example/dao/image-template.xml +++ b/src/test/resources/example/dao/image-template.xml @@ -69,48 +69,6 @@ class="djs-hit"> - - - - - - - - - Collector - - - - - - - - - - - - - StringMatch - - - - - diff --git a/src/test/resources/example/model-properties/modelBpmn.json b/src/test/resources/example/model-properties/modelBpmn.json index 823641c73..8f7b8e61a 100644 --- a/src/test/resources/example/model-properties/modelBpmn.json +++ b/src/test/resources/example/model-properties/modelBpmn.json @@ -1,16 +1,4 @@ { - "collector": [ - { - "id": "Collector_1c72ct5", - "from": "StartEvent_1" - } - ], - "stringMatch": [ - { - "id": "StringMatch_05arstl", - "from": "Collector_1c72ct5" - } - ], "policy": [ { "id": "Policy_0honxgv", @@ -32,7 +20,7 @@ "vesCollector": [ { "id": "VesCollector_0orydnh", - "from": "StringMatch_05arstl" + "from": "StartEvent_1" } ] } diff --git a/src/test/resources/example/model-properties/modelBpmnProp.json b/src/test/resources/example/model-properties/modelBpmnProp.json index 3b86ad79b..a521ba7d7 100644 --- a/src/test/resources/example/model-properties/modelBpmnProp.json +++ b/src/test/resources/example/model-properties/modelBpmnProp.json @@ -1,90 +1,4 @@ { - "Collector_1c72ct5": [ - { - "name": "topicPublishes", - "value": "DCAE-COLLECTOR-UCSNMP" - } - ], - "StringMatch_05arstl": { - "group1": [ - { - "name": "rgname", - "value": "1505133578560" - }, - { - "name": "rgfriendlyname", - "value": "group1" - }, - { - "name": "policyName", - "value": "policy1" - }, - { - "name": "policyId", - "value": "0" - }, - { - "serviceConfigurations": [ - [ - { - "name": "aaiMatchingFields", - "value": [ - "complex.city" - ] - }, - { - "name": "aaiSendFields", - "value": [ - "cloud-region.identity-url" - ] - }, - { - "name": "timeWindow", - "value": [ - "0" - ] - }, - { - "name": "ageLimit", - "value": [ - "1600" - ] - }, - { - "name": "createClosedLoopEventId", - "value": [ - "Initial" - ] - }, - { - "name": "outputEventName", - "value": [ - "" - ] - }, - { - "stringSet": [ - { - }, - { - "name": "eventSeverity", - "value": [ - "NORMAL" - ] - }, - { - "name": "eventSourceType", - "value": [ - "" - ] - } - ] - } - ] - ] - } - ] - }, "Policy_0honxgv": { "policy1": [ { diff --git a/src/test/resources/example/model-properties/modelBpmnPropWithGlobal.json b/src/test/resources/example/model-properties/modelBpmnPropWithGlobal.json index fba99c6f4..3030adfb3 100644 --- a/src/test/resources/example/model-properties/modelBpmnPropWithGlobal.json +++ b/src/test/resources/example/model-properties/modelBpmnPropWithGlobal.json @@ -1,81 +1,4 @@ { - "collector": { - "topicPublishes": { - "DCAE-COLLECTOR-UCSNMP": "DCAE-COLLECTOR-UCSNMP", - "GFP-IP-AIC-SNMP-TRAPS": "GFP-IP-AIC-SNMP-TRAPS", - "AIC-SNMP-TRAPS": "AIC-SNMP-TRAPS" - } - }, - "string_match": { - "topicPublishes": { - "DCAE-CL-EVENT": "DCAE-CL-EVENT" - }, - "aaiMatchingFields": { - "cloud-region.identity-url": "cloud-region.identity-url", - "complex.city": "complex.city", - "complex.physical-location-id": "complex.physical-location-id", - "complex.state": "complex.state", - "generic-vnf.service-id": "generic-vnf.service-id", - "generic-vnf.vnf-name": "generic-vnf.vnf-name", - "generic-vnf.vnf-type": "generic-vnf.vnf-type", - "tenant.tenant-id": "tenant.tenant-id", - "vserver.in-maint": "vserver.in-maint", - "vserver.is-closed-loop-disabled": "vserver.is-closed-loop-disabled", - "vserver.l-interface.interface-name": "vserver.l-interface.interface-name", - "vserver.l-interface.l3-interface-ipv4-address-list.l3-inteface-ipv4-address": "vserver.l-interface.l3-interface-ipv4-address-list.l3-inteface-ipv4-address", - "vserver.l-interface.l3-interface-ipv6-address-list.l3-inteface-ipv6-address": "vserver.l-interface.l3-interface-ipv6-address-list.l3-inteface-ipv6-address", - "vserver.l-interface.network-name": "vserver.l-interface.network-name", - "vserver.prov-status": "vserver.prov-status", - "vserver.selflink": "vserver.selflink", - "vserver.vserver-id": "vserver.vserver-id", - "vserver.vserver-name": "vserver.vserver-name" - }, - "aaiSendFields": { - "cloud-region.identity-url": "cloud-region.identity-url", - "complex.city": "complex.city", - "complex.physical-location-id": "complex.physical-location-id", - "complex.state": "complex.state", - "generic-vnf.service-id": "generic-vnf.service-id", - "generic-vnf.vnf-name": "generic-vnf.vnf-name", - "generic-vnf.vnf-type": "generic-vnf.vnf-type", - "tenant.tenant-id": "tenant.tenant-id", - "vserver.in-maint": "vserver.in-maint", - "vserver.is-closed-loop-disabled": "vserver.is-closed-loop-disabled", - "vserver.l-interface.interface-name": "vserver.l-interface.interface-name", - "vserver.l-interface.l3-interface-ipv4-address-list.l3-inteface-ipv4-address": "vserver.l-interface.l3-interface-ipv4-address-list.l3-inteface-ipv4-address", - "vserver.l-interface.l3-interface-ipv6-address-list.l3-inteface-ipv6-address": "vserver.l-interface.l3-interface-ipv6-address-list.l3-inteface-ipv6-address", - "vserver.l-interface.network-name": "vserver.l-interface.network-name", - "vserver.prov-status": "vserver.prov-status", - "vserver.selflink": "vserver.selflink", - "vserver.vserver-id": "vserver.vserver-id", - "vserver.vserver-name": "vserver.vserver-name" - }, - "eventSourceType": { - "f5BigIP": "f5BigIP", - "vSBG_Alarms": "vSBG_Alarms", - "vCTS_Alarms": "vCTS_Alarms" - }, - "eventSeverity": { - "NORMAL": "NORMAL", - "not-NORMAL": "not-NORMAL", - "OK": "OK", - "WARNING": "WARNING", - "MINOR": "MINOR", - "MAJOR": "MAJOR", - "CRITICAL": "CRITICAL" - }, - "timeWindow": 0, - "ageLimit": 1600, - "outputEventName": { - "": "", - "ONSET": "ONSET", - "ABATED": "ABATED" - }, - "createClosedLoopEventId": { - "Initial": "Initial", - "Close": "Close" - } - }, "tca": { "tname": "New_Set", "tcaInt": "1", diff --git a/src/test/resources/example/modelBpmnProp.json b/src/test/resources/example/modelBpmnProp.json index 26fd884d8..c8efff877 100644 --- a/src/test/resources/example/modelBpmnProp.json +++ b/src/test/resources/example/modelBpmnProp.json @@ -1,29 +1,13 @@ { - "collector": - [ - { - "id": "Collector_", - "from": "StartEvent_1" - } - ], - - "stringMatch": - [ - { - "id": "StringMatch_", - "from": "Collector_" - } - ], - - "policy": + "policy": [ { "id": "Policy_", - "from": "StringMatch_" + "from": "StartEvent_1" } ], - "tca": + "tca": [ { "id": "TCA_", @@ -31,7 +15,7 @@ } ], - "customType": + "customType": [ { "id": "CustomType_", diff --git a/src/test/resources/example/modelBpmnPropForPolicy.json b/src/test/resources/example/modelBpmnPropForPolicy.json index 243f7e807..de643a69a 100644 --- a/src/test/resources/example/modelBpmnPropForPolicy.json +++ b/src/test/resources/example/modelBpmnPropForPolicy.json @@ -1,14 +1,5 @@ { - "collector": - [ - - ], - "stringMatch": - [ - - ], - - "policy": + "policy": [ { "id": "Policy_", @@ -16,7 +7,7 @@ } ], - "tca": + "tca": [ { "id": "TCA_", diff --git a/src/test/resources/example/modelProp.json b/src/test/resources/example/modelProp.json index c2262f528..99f67b62e 100644 --- a/src/test/resources/example/modelProp.json +++ b/src/test/resources/example/modelProp.json @@ -1,17 +1,9 @@ { - "Collector_": - [ - { - "name": "topicPublishes", - "value": "DCAE-COLLECTOR-UCSNMP" - } - ], - - "global": + "global": [ { "name": "service", - "value": + "value": [ "0f983e18-4603-4bb4-a98c-e29691fb16a1" ] @@ -19,7 +11,7 @@ { "name": "vf", - "value": + "value": [ "6c7aaec2-59eb-41d9-8681-b7f976ab668d" ] @@ -27,7 +19,7 @@ { "name": "actionSet", - "value": + "value": [ "enbRecipe" ] @@ -35,318 +27,16 @@ { "name": "location", - "value": + "value": [ "SNDGCA64" ] } ], - "StringMatch_": - { - "Group1": - [ - { - "name": "rgname", - "value": "1493749598520" - }, - - { - "name": "rgfriendlyname", - "value": "Group1" - }, - - { - "name": "policyName", - "value": "Policy1" - }, - - { - "name": "policyId", - "value": "1" - }, - - { - "serviceConfigurations": - [ - [ - { - "name": "aaiMatchingFields", - "value": - [ - "complex.city", - "vserver.vserver-name" - ] - }, - - { - "name": "aaiSendFields", - "value": - [ - "complex.city", - "vserver.vserver-name" - ] - }, - - { - "name": "timeWindow", - "value": - [ - "100" - ] - }, - - { - "name": "ageLimit", - "value": - [ - "100" - ] - }, - - { - "name": "createClosedLoopEventId", - "value": - [ - "Initial" - ] - }, - - { - "name": "outputEventName", - "value": - [ - "ONSET" - ] - }, - - { - "stringSet": - [ - { - "name": "alarmCondition", - "value": - [ - "Reports a transient alarm condition when an outgoing Ro message send fails" - ] - }, - - { - "name": "eventSeverity", - "value": - [ - "WARNING" - ] - }, - - { - "name": "eventSourceType", - "value": - [ - "f5BigIP" - ] - } - ] - } - ] - ] - } - ], - - "Group2": - [ - { - "name": "rgname", - "value": "1493749665149" - }, - - { - "name": "rgfriendlyname", - "value": "Group2" - }, - - { - "name": "policyName", - "value": "Policy2" - }, - - { - "name": "policyId", - "value": "2" - }, - - { - "serviceConfigurations": - [ - [ - { - "name": "aaiMatchingFields", - "value": - [ - "cloud-region.identity-url", - "vserver.vserver-name" - ] - }, - - { - "name": "aaiSendFields", - "value": - [ - "cloud-region.identity-url", - "vserver.vserver-name" - ] - }, - - { - "name": "timeWindow", - "value": - [ - "1000" - ] - }, - - { - "name": "ageLimit", - "value": - [ - "1000" - ] - }, - - { - "name": "createClosedLoopEventId", - "value": - [ - "Initial" - ] - }, - - { - "name": "outputEventName", - "value": - [ - "ONSET" - ] - }, - - { - "stringSet": - [ - { - "name": "alarmCondition", - "value": - [ - "LSS_asdaCommunicationFailure" - ] - }, - - { - "name": "eventSeverity", - "value": - [ - "WARNING" - ] - }, - - { - "name": "eventSourceType", - "value": - [ - "f5BigIP" - ] - } - ] - } - ], - - [ - { - "name": "aaiMatchingFields", - "value": - [ - "generic-vnf.vnf-name", - "vserver.vserver-name" - ] - }, - - { - "name": "aaiSendFields", - "value": - [ - "generic-vnf.vnf-name", - "vserver.vserver-name" - ] - }, - - { - "name": "timeWindow", - "value": - [ - "3000" - ] - }, - - { - "name": "ageLimit", - "value": - [ - "3000" - ] - }, - - { - "name": "createClosedLoopEventId", - "value": - [ - "Initial" - ] - }, - - { - "name": "outputEventName", - "value": - [ - "ABATED" - ] - }, - - { - "stringSet": - [ - { - "name": "alarmCondition", - "value": - [ - "LSS_asdaCommunicationFailure" - ] - }, - - { - "name": "eventSeverity", - "value": - [ - "MAJOR" - ] - }, - - { - "name": "eventSourceType", - "value": - [ - "f5BigIP" - ] - } - ] - } - ] - ] - } - ] - }, - - "Policy_": + "Policy_": { - "Policy1": + "Policy1": [ { "name": "pname", @@ -364,12 +54,12 @@ }, { - "policyConfigurations": + "policyConfigurations": [ [ { "name": "recipe", - "value": + "value": [ "restart" ] @@ -377,7 +67,7 @@ { "name": "maxRetries", - "value": + "value": [ "3" ] @@ -385,7 +75,7 @@ { "name": "retryTimeLimit", - "value": + "value": [ "180" ] @@ -393,7 +83,7 @@ { "name": "_id", - "value": + "value": [ "n9bQ4t6" ] @@ -401,14 +91,14 @@ { "name": "parentPolicy", - "value": + "value": [ "" ] }, { "name": "targetResourceId", - "value": + "value": [ "resource-id" ] @@ -418,7 +108,7 @@ [ { "name": "recipe", - "value": + "value": [ "rebuild" ] @@ -426,7 +116,7 @@ { "name": "maxRetries", - "value": + "value": [ "3" ] @@ -434,7 +124,7 @@ { "name": "retryTimeLimit", - "value": + "value": [ "180" ] @@ -442,7 +132,7 @@ { "name": "_id", - "value": + "value": [ "ItE5xKT" ] @@ -450,7 +140,7 @@ { "name": "parentPolicy", - "value": + "value": [ "n9bQ4t6" ] @@ -458,7 +148,7 @@ { "name": "parentPolicyConditions", - "value": + "value": [ "Failure_Retries", "Failure_Timeout", @@ -468,7 +158,7 @@ }, { "name": "targetResourceId", - "value": + "value": [ "resource-id" ] @@ -478,7 +168,7 @@ } ], - "Policy2": + "Policy2": [ { "name": "pname", @@ -496,12 +186,12 @@ }, { - "policyConfigurations": + "policyConfigurations": [ [ { "name": "recipe", - "value": + "value": [ "restart" ] @@ -509,7 +199,7 @@ { "name": "maxRetries", - "value": + "value": [ "3" ] @@ -517,7 +207,7 @@ { "name": "retryTimeLimit", - "value": + "value": [ "180" ] @@ -525,7 +215,7 @@ { "name": "_id", - "value": + "value": [ "n9bQ4t6" ] @@ -533,14 +223,14 @@ { "name": "parentPolicy", - "value": + "value": [ "" ] }, { "name": "targetResourceId", - "value": + "value": [ "resource-id" ] @@ -550,7 +240,7 @@ [ { "name": "recipe", - "value": + "value": [ "rebuild" ] @@ -558,7 +248,7 @@ { "name": "maxRetries", - "value": + "value": [ "3" ] @@ -566,7 +256,7 @@ { "name": "retryTimeLimit", - "value": + "value": [ "180" ] @@ -574,7 +264,7 @@ { "name": "_id", - "value": + "value": [ "ItE5xKT" ] @@ -582,7 +272,7 @@ { "name": "parentPolicy", - "value": + "value": [ "n9bQ4t6" ] @@ -590,7 +280,7 @@ { "name": "parentPolicyConditions", - "value": + "value": [ "Failure_Retries", "Failure_Timeout", @@ -600,7 +290,7 @@ }, { "name": "targetResourceId", - "value": + "value": [ "resource-id" ] @@ -611,9 +301,9 @@ ] }, - "TCA_": + "TCA_": { - "Narra": + "Narra": [ { "name": "tname", @@ -661,7 +351,7 @@ }, { - "serviceConfigurations": + "serviceConfigurations": [ [ "PMRRCCONNESTABFAILCELLLATENCY", @@ -680,7 +370,7 @@ } ], - "Srini": + "Srini": [ { "name": "tname", @@ -728,7 +418,7 @@ }, { - "serviceConfigurations": + "serviceConfigurations": [ [ "PMRRCCONNESTABFAILCELLLATENCY", diff --git a/src/test/resources/example/sdc/sdcVFResources.json b/src/test/resources/example/sdc/sdcVFResources.json index a8f32195d..62c58bee6 100644 --- a/src/test/resources/example/sdc/sdcVFResources.json +++ b/src/test/resources/example/sdc/sdcVFResources.json @@ -197,7 +197,7 @@ { "uuid": "10b535db-b01b-4a4b-aeef-97423d2d2093", "invariantUUID": "761ed279-e5ff-43e2-8a05-b160224b7f54", - "name": "StringMatchingMS", + "name": "TcaMS", "version": "0.1", "toscaModelURL": "/sdc/v1/catalog/resources/10b535db-b01b-4a4b-aeef-97423d2d2093/toscaModel", "category": "DCAE Component", diff --git a/src/test/resources/example/templateProp.json b/src/test/resources/example/templateProp.json deleted file mode 100644 index bbbfca598..000000000 --- a/src/test/resources/example/templateProp.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "global":[ - { - "name":"service", - "value":[ - "tosca_definitions_version: cloudify_dsl_1_2\r\n\r\nimports:\r\n - http:\/\/www.getcloudify.org\/spec\/cloudify\/3.3.1\/types.yaml\r\n - http:\/\/127.0.0.1\/1607_prod\/type_files\/cdap_app.yaml\r\n\r\nnode_templates:\r\n SM:\r\n type: dcae.nodes.cdap_app\r\n properties:\r\n service_name: \"cdap-string-matching\"\r\n deployment_JSON: |-\r\n {\r\n \"clusterService\": {\"$ref\": \"\/services\/vm-cdap-cluster-central\/instances\/rdm2-central\"},\r\n \"$class\": \"com.att.ecomp.dcae.controller.service.cdap.CdapServiceInstance\",\r\n \"namespace\": \"<%= dcae_target_name %>\",\r\n \"appNames\": [ \"SM\" ],\r\n \"flowNames\": [ \"SM.SimpleFlow\" ],\r\n \"apps\": {\r\n \"SM\": {\r\n \"jarFile\": \"\/opt\/app\/dcae-analytics-closed-loop-stringmatching-jars\/lib\/CdapClosedLoopSnmpTrapStringMatcher-0.1.jar\",\r\n \"artifactName\": \"CdapClosedLoopSnmpTrapStringMatcher\",\r\n \"version\": \"0.1\"\r\n }\r\n },\r\n \r\n \"configuration\": {\r\n \"$class\": \"com.att.ecomp.dcae.clamp.common.StringMatchingConfiguration\",\r\n \"messageReaderConsumerID\":\"4699\",\r\n \"messageReaderConsumerGroup\": \"<%= dcae_target_name %>\",\r\n \"aaiURL\": \"http:\/\/REPLACE_THIS_WITH_IP_PORT_FROM_BOOTED_DOCKER\/tenant\/\",\r\n \"closedLoopEventClient\": \"configuration.dcae.microservice.stringmatcher.xml\",\r\n \"dcae_target_name\": \"<%= dcae_target_name %>\",\r\n \"dcae_target_type\": \"VM\",\r\n \r\n \"serviceConfigurations\": {}\r\n }\r\n }}}" - ] - } - ] -} diff --git a/src/test/resources/example/xsl-validation/modelBpmn.xml b/src/test/resources/example/xsl-validation/modelBpmn.xml index 3021902c7..d80c89e3e 100644 --- a/src/test/resources/example/xsl-validation/modelBpmn.xml +++ b/src/test/resources/example/xsl-validation/modelBpmn.xml @@ -7,18 +7,10 @@ SequenceFlow_1nvvr00 - - SequenceFlow_0qf2552 - SequenceFlow_1a2oxpd - SequenceFlow_0jeu0gv SequenceFlow_15gkgs5 - - SequenceFlow_1nvvr00 - SequenceFlow_0qf2552 - SequenceFlow_15gkgs5 SequenceFlow_0ev75ss @@ -31,15 +23,11 @@ SequenceFlow_103hvmr - SequenceFlow_1a2oxpd + SequenceFlow_1nvvr00 SequenceFlow_0jeu0gv - - + sourceRef="StartEvent_1" targetRef="Holmes_1fzdqp9" /> - - - - - - diff --git a/src/test/resources/example/xsl-validation/modelBpmnForVerif.json b/src/test/resources/example/xsl-validation/modelBpmnForVerif.json index 40afe179e..567a69db3 100644 --- a/src/test/resources/example/xsl-validation/modelBpmnForVerif.json +++ b/src/test/resources/example/xsl-validation/modelBpmnForVerif.json @@ -1,16 +1,4 @@ { - "collector": [ - { - "id": "Collector_", - "from": "StartEvent_1" - } - ], - "stringMatch": [ - { - "id": "StringMatch_0tw2y4f", - "from": "Collector_" - } - ], "policy": [ { "id": "Policy_", @@ -32,7 +20,7 @@ "holmes": [ { "id": "Holmes_1fzdqp9", - "from": "StringMatch_0tw2y4f" + "from": "StartEvent_1" } ] } diff --git a/src/test/resources/expected/stringmatch.json b/src/test/resources/expected/stringmatch.json deleted file mode 100644 index 52e6d01a4..000000000 --- a/src/test/resources/expected/stringmatch.json +++ /dev/null @@ -1 +0,0 @@ -{"service":"StringMatchingConfiguration","location":"Edge","uuid":"TestUUID","policyName":"example_model06.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_StringMatch_","description":"from clds","configName":"com.att.d2.policy.StringMatchingConfiguration","templateVersion":"1604","priority":"4","version":"1610","policyScope":"resource=F5,service=vSCP,type=configuration,closedLoopControlName=vSCP_F5_Firewall_d925ed73-8231-4d02-9545-db4e101f88f8","content":{"serviceConfigurations":{"Item1":{"rulegroup":"1493749598520","closedLoopControlName":"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_1","aaiMatchingFields":["complex.city","vserver.vserver-name"],"aaiSendFields":["complex.city","vserver.vserver-name"],"stringSet":["eventSeverity","WARNING","alarmCondition","Reports a transient alarm condition when an outgoing Ro message send fails"],"timeWindow":"100","ageLimit":"100","createClosedLoopEventId":"Initial","outputEventName":"ONSET"},"Item2":{"rulegroup":"1493749665149","closedLoopControlName":"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_2","aaiMatchingFields":["cloud-region.identity-url","vserver.vserver-name"],"aaiSendFields":["cloud-region.identity-url","vserver.vserver-name"],"stringSet":["eventSeverity","WARNING","alarmCondition","Reports a transient alarm condition when an outgoing Ro message send fails"],"timeWindow":"1000","ageLimit":"1000","createClosedLoopEventId":"Initial","outputEventName":"ONSET"},"Item3":{"rulegroup":"1493749665149","closedLoopControlName":"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_2","aaiMatchingFields":["generic-vnf.vnf-name","vserver.vserver-name"],"aaiSendFields":["generic-vnf.vnf-name","vserver.vserver-name"],"stringSet":["eventSeverity","WARNING","alarmCondition","Reports a transient alarm condition when an outgoing Ro message send fails"],"timeWindow":"3000","ageLimit":"3000","createClosedLoopEventId":"Initial","outputEventName":"ABATED"}}}} \ No newline at end of file -- cgit 1.2.3-korg From 14fa9a2ec6fdb037be3ac5216248c1f2117d1a31 Mon Sep 17 00:00:00 2001 From: "Determe, Sebastien (sd378r)" Date: Thu, 28 Sep 2017 15:40:15 +0200 Subject: Change the model to fix TCA Fix TCA model and JSON model for TCA + rework the JUNIT Change-Id: I35099633e89f9f95f1957afeffa915feda4045f3 Issue-ID: CLAMP-59 Signed-off-by: Determe, Sebastien (sd378r) --- .../onap/clamp/clds/client/TcaPolicyDelegate.java | 16 +- .../org/onap/clamp/clds/client/req/SdcReq.java | 18 +-- .../onap/clamp/clds/client/req/TcaMPolicyReq.java | 121 --------------- .../clamp/clds/client/req/TcaRequestFormatter.java | 166 +++++++++++++++++++++ .../java/org/onap/clamp/clds/model/prop/Tca.java | 31 +--- .../org/onap/clamp/clds/model/prop/TcaItem.java | 98 +++--------- .../onap/clamp/clds/model/prop/TcaThreshhold.java | 110 -------------- .../onap/clamp/clds/model/prop/TcaThreshold.java | 108 ++++++++++++++ src/main/resources/clds/clds-reference.properties | 28 +++- .../onap/clamp/clds/it/TcaRequestFormatterIT.java | 89 +++++++++++ .../clamp/clds/model/prop/ModelPropertiesTest.java | 57 ++++++- src/test/resources/clds/clds-reference.properties | 8 +- .../example/model-properties/holmes/modelBpmn.json | 20 +++ .../holmes/modelBpmnProperties.json | 116 ++++++++++++++ .../example/model-properties/tca/modelBpmn.json | 20 +++ .../model-properties/tca/modelBpmnProperties.json | 150 +++++++++++++++++++ src/test/resources/example/templatePropForTca.json | 10 -- src/test/resources/expected/tca.json | 93 ------------ 18 files changed, 778 insertions(+), 481 deletions(-) delete mode 100644 src/main/java/org/onap/clamp/clds/client/req/TcaMPolicyReq.java create mode 100644 src/main/java/org/onap/clamp/clds/client/req/TcaRequestFormatter.java delete mode 100644 src/main/java/org/onap/clamp/clds/model/prop/TcaThreshhold.java create mode 100644 src/main/java/org/onap/clamp/clds/model/prop/TcaThreshold.java create mode 100644 src/test/java/org/onap/clamp/clds/it/TcaRequestFormatterIT.java create mode 100644 src/test/resources/example/model-properties/holmes/modelBpmn.json create mode 100644 src/test/resources/example/model-properties/holmes/modelBpmnProperties.json create mode 100644 src/test/resources/example/model-properties/tca/modelBpmn.json create mode 100644 src/test/resources/example/model-properties/tca/modelBpmnProperties.json delete mode 100644 src/test/resources/example/templatePropForTca.json delete mode 100644 src/test/resources/expected/tca.json (limited to 'src/test/resources/clds') diff --git a/src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java b/src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java index 9debcc2a6..7de126831 100644 --- a/src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java +++ b/src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java @@ -23,19 +23,19 @@ package org.onap.clamp.clds.client; +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; + import java.util.UUID; import org.camunda.bpm.engine.delegate.DelegateExecution; import org.camunda.bpm.engine.delegate.JavaDelegate; -import org.onap.clamp.clds.client.req.TcaMPolicyReq; +import org.onap.clamp.clds.client.req.TcaRequestFormatter; import org.onap.clamp.clds.model.prop.ModelProperties; import org.onap.clamp.clds.model.prop.Tca; import org.onap.clamp.clds.model.refprop.RefProp; import org.springframework.beans.factory.annotation.Autowired; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; - /** * Send Tca info to policy api. * @@ -46,10 +46,10 @@ public class TcaPolicyDelegate implements JavaDelegate { protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); @Autowired - private RefProp refProp; + private RefProp refProp; @Autowired - PolicyClient policyClient; + PolicyClient policyClient; /** * Perform activity. Send Tca info to policy api. @@ -64,8 +64,8 @@ public class TcaPolicyDelegate implements JavaDelegate { ModelProperties prop = ModelProperties.create(execution); Tca tca = prop.getType(Tca.class); if (tca.isFound()) { - String policyJson = TcaMPolicyReq.formatTca(refProp, prop); - String responseMessage = policyClient.sendMicroServiceInJson(policyJson, prop, tcaPolicyRequestUuid); + String policyJson = TcaRequestFormatter.createPolicyJson(refProp, prop); + String responseMessage = policyClient.sendMicroServiceInOther(policyJson, prop, tcaPolicyRequestUuid); if (responseMessage != null) { execution.setVariable("tcaPolicyResponseMessage", responseMessage.getBytes()); } diff --git a/src/main/java/org/onap/clamp/clds/client/req/SdcReq.java b/src/main/java/org/onap/clamp/clds/client/req/SdcReq.java index c5e26f30a..32846ed01 100644 --- a/src/main/java/org/onap/clamp/clds/client/req/SdcReq.java +++ b/src/main/java/org/onap/clamp/clds/client/req/SdcReq.java @@ -26,7 +26,6 @@ package org.onap.clamp.clds.client.req; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; import com.fasterxml.jackson.core.JsonParseException; -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; @@ -89,25 +88,14 @@ public class SdcReq { String updatedBlueprint = ""; Tca tca = prop.getType(Tca.class); if (tca.isFound()) { - prop.setCurrentModelElementId(tca.getId()); - ObjectNode rootNode = (ObjectNode) refProp.getJsonTemplate("tca.template", service); - ObjectNode content = rootNode.with("content"); - TcaMPolicyReq.appendSignatures(refProp, service, content, tca, prop); - logger.info("Value of content:" + content); - // ObjectNode servConfNode = - // (ObjectNode)signatures.get("signatures"); - - // get updated blueprint by attaching service Conf from - // globalProperties - updatedBlueprint = getUpdatedBlueprintWithConfiguration(refProp, prop, yamlvalue, content); - } - + updatedBlueprint = TcaRequestFormatter.updatedBlueprintWithConfiguration(refProp, prop, yamlvalue); + } logger.info("value of blueprint:" + updatedBlueprint); return updatedBlueprint; } private static String getUpdatedBlueprintWithConfiguration(RefProp refProp, ModelProperties prop, String yamlValue, - ObjectNode serviceConf) throws JsonProcessingException, IOException { + ObjectNode serviceConf) throws IOException { String blueprint = ""; Yaml yaml = new Yaml(); // Serialiaze Yaml file diff --git a/src/main/java/org/onap/clamp/clds/client/req/TcaMPolicyReq.java b/src/main/java/org/onap/clamp/clds/client/req/TcaMPolicyReq.java deleted file mode 100644 index f31062893..000000000 --- a/src/main/java/org/onap/clamp/clds/client/req/TcaMPolicyReq.java +++ /dev/null @@ -1,121 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2017 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============================================ - * =================================================================== - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - */ - -package org.onap.clamp.clds.client.req; - -import java.io.IOException; -import java.util.Iterator; - -import org.onap.clamp.clds.model.prop.Global; -import org.onap.clamp.clds.model.prop.ModelProperties; -import org.onap.clamp.clds.model.prop.Tca; -import org.onap.clamp.clds.model.prop.TcaItem; -import org.onap.clamp.clds.model.prop.TcaThreshhold; -import org.onap.clamp.clds.model.refprop.RefProp; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.fasterxml.jackson.core.JsonParseException; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Construct a Policy for Tca/MTca Service request given CLDS objects. - * - * - */ -public class TcaMPolicyReq { - protected static final EELFLogger logger = EELFManager.getInstance().getLogger(TcaMPolicyReq.class); - protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); - - /** - * Format Tca Policy request - * - * @param refProp - * @param prop - * @return - * @throws JsonParseException - * @throws JsonMappingException - * @throws IOException - */ - public static String formatTca(RefProp refProp, ModelProperties prop) - throws JsonParseException, JsonMappingException, IOException { - Global global = prop.getGlobal(); - String service = global.getService(); - - Tca tca = prop.getType(Tca.class); - prop.setCurrentModelElementId(tca.getId()); - ObjectNode rootNode = (ObjectNode) refProp.getJsonTemplate("tca.template", service); - rootNode.put("policyName", prop.getCurrentPolicyScopeAndPolicyName()); - ObjectNode content = rootNode.with("content"); - appendSignatures(refProp, service, content, tca, prop); - - String tcaPolicyReq = rootNode.toString(); - logger.info("tcaPolicyReq=" + tcaPolicyReq); - return tcaPolicyReq; - } - - /** - * Add appendSignatures to json - * - * @param refProp - * @param service - * @param appendToNode - * @param tca - * @param prop - * @throws JsonParseException - * @throws JsonMappingException - * @throws IOException - */ - public static void appendSignatures(RefProp refProp, String service, ObjectNode appendToNode, Tca tca, - ModelProperties prop) throws JsonParseException, JsonMappingException, IOException { - // "signatures":{ - ArrayNode tcaNodes = appendToNode.withArray("signatures"); - for (TcaItem tcaItem : tca.getTcaItems()) { - ObjectNode tcaNode = (ObjectNode) refProp.getJsonTemplate("tca.signature.template", service); - tcaNode.put("useCaseName", tcaItem.getTcaName()); - tcaNode.put("signatureName", tcaItem.getTcaName() + "_" + tcaItem.getTcaUuId()); - tcaNode.put("signatureUuid", tcaItem.getTcaUuId()); - prop.setPolicyUniqueId(tcaItem.getPolicyId()); - tcaNode.put("closedLoopControlName", prop.getControlNameAndPolicyUniqueId()); - tcaNode.put("severity", tcaItem.getSeverity()); - tcaNode.put("maxInterval", tcaItem.getInterval()); - tcaNode.put("minMessageViolations", tcaItem.getViolations()); - - tcaNodes.add(tcaNode); - Iterator scItr = tcaItem.getTcaThreshholds().iterator(); - while (scItr.hasNext()) { - TcaThreshhold tcaThreshhold = scItr.next(); - // "thresholds": [ - ArrayNode thNodes = tcaNode.withArray("thresholds"); - ObjectNode thNode = thNodes.addObject(); - thNode.put("fieldPath", tcaThreshhold.getFieldPath()); - thNode.put("thresholdName", tcaThreshhold.getMetric()); - thNode.put("thresholdValue", tcaThreshhold.getThreshhold()); - thNode.put("direction", tcaThreshhold.getOperator()); - } - } - } - -} \ No newline at end of file diff --git a/src/main/java/org/onap/clamp/clds/client/req/TcaRequestFormatter.java b/src/main/java/org/onap/clamp/clds/client/req/TcaRequestFormatter.java new file mode 100644 index 000000000..3fbf87397 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/client/req/TcaRequestFormatter.java @@ -0,0 +1,166 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2017 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.client.req; + +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.fasterxml.jackson.dataformat.yaml.snakeyaml.Yaml; + +import java.util.Map; + +import org.onap.clamp.clds.exception.TcaRequestFormatterException; +import org.onap.clamp.clds.model.prop.ModelProperties; +import org.onap.clamp.clds.model.prop.Tca; +import org.onap.clamp.clds.model.prop.TcaItem; +import org.onap.clamp.clds.model.prop.TcaThreshold; +import org.onap.clamp.clds.model.refprop.RefProp; + +/** + * Construct the requests for TCA policy and SDC. + * + */ +public class TcaRequestFormatter { + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(TcaRequestFormatter.class); + protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); + + /** + * Hide the default constructor. + */ + private TcaRequestFormatter() { + + } + + /** + * Format Tca Policy JSON request. + * + * @param refProp + * The refProp generally created by Spring, it's an access on the + * clds-references.properties file + * @param modelProperties + * The Model Prop created from BPMN JSON and BPMN properties JSON + * @return The Json string containing that should be sent to policy + */ + public static String createPolicyJson(RefProp refProp, ModelProperties modelProperties) { + try { + String service = modelProperties.getGlobal().getService(); + + Tca tca = modelProperties.getType(Tca.class); + modelProperties.setCurrentModelElementId(tca.getId()); + ObjectNode rootNode = (ObjectNode) refProp.getJsonTemplate("tca.template", service); + ((ObjectNode) rootNode.get("cdap-tca-hi-lo_policy").get("metricsPerEventName").get(0)).put("policyName", + modelProperties.getCurrentPolicyScopeAndPolicyName()); + ((ObjectNode) rootNode.get("cdap-tca-hi-lo_policy").get("metricsPerEventName").get(0)).put("eventName", + tca.getTcaItem().getEventName()); + + ObjectNode thresholdsParent = ((ObjectNode) rootNode.get("cdap-tca-hi-lo_policy").get("metricsPerEventName") + .get(0)); + + addThresholds(refProp, service, thresholdsParent, tca.getTcaItem(), modelProperties); + + String tcaPolicyReq = rootNode.toString(); + logger.info("tcaPolicyReq=" + tcaPolicyReq); + return tcaPolicyReq; + } catch (Exception e) { + throw new TcaRequestFormatterException("Exception caught when attempting to create the policy JSON", e); + } + } + + /** + * Add threshold values to the existing policy JSON. + * + * @param refProp + * The refProp generally created by Spring, it's an access on the + * clds-references.properties file + * @param service + * The Service value extracted from Global section of the Bpmn + * Properties JSON + * @param appendToNode + * The JSON structure from where the thresholds section must be + * added + * @param tcaItem + * The TCA item contained in the Tca object + * @param modelProperties + * The Model Properties created from BPMN JSON and BPMN + * properties JSON + */ + private static void addThresholds(RefProp refProp, String service, ObjectNode appendToNode, TcaItem tcaItem, + ModelProperties modelProperties) { + try { + ArrayNode tcaNodes = appendToNode.withArray("thresholds"); + ObjectNode tcaNode = (ObjectNode) refProp.getJsonTemplate("tca.thresholds.template", service); + + for (TcaThreshold tcaThreshold : tcaItem.getTcaThresholds()) { + tcaNode.put("controlLoopSchema", tcaThreshold.getControlLoopSchema()); + tcaNode.put("closedLoopControlName", modelProperties.getControlNameAndPolicyUniqueId()); + tcaNode.put("fieldPath", tcaThreshold.getFieldPath()); + tcaNode.put("thresholdValue", tcaThreshold.getThreshold()); + tcaNode.put("direction", tcaThreshold.getOperator()); + tcaNode.put("closedLoopEventStatus", tcaThreshold.getClosedLoopEventStatus()); + tcaNodes.add(tcaNode); + } + } catch (Exception e) { + throw new TcaRequestFormatterException("Exception caught when attempting to create the thresholds JSON", e); + } + } + + /** + * This method updates the blueprint that is received in the UI with the TCA + * Json. + * + * @param refProp + * * The refProp generally created by Spring, it's an access on + * the clds-references.properties file + * @param modelProperties + * The Model Prop created from BPMN JSON and BPMN properties JSON + * @param yamlValue + * The yaml string received from the UI + * @return The updated YAML as a string + */ + public static String updatedBlueprintWithConfiguration(RefProp refProp, ModelProperties modelProperties, + String yamlValue) { + try { + String jsonPolicy = createPolicyJson(refProp, modelProperties); + + logger.info("Yaml that will be updated:" + yamlValue); + Yaml yaml = new Yaml(); + + Map loadedYaml = (Map) yaml.load(yamlValue); + + Map nodeTemplates = (Map) loadedYaml.get("node_templates"); + Map tcaObject = (Map) nodeTemplates.get("tca_tca"); + Map propsObject = (Map) tcaObject.get("properties"); + Map appPreferences = (Map) propsObject.get("app_preferences"); + appPreferences.put("tca_policy", jsonPolicy); + + String blueprint = yaml.dump(loadedYaml); + logger.info("Yaml updated:" + blueprint); + + return blueprint; + } catch (Exception e) { + throw new TcaRequestFormatterException("Exception caught when attempting to update the blueprint", e); + } + } +} \ No newline at end of file diff --git a/src/main/java/org/onap/clamp/clds/model/prop/Tca.java b/src/main/java/org/onap/clamp/clds/model/prop/Tca.java index f7bbac0de..4fd6b595d 100644 --- a/src/main/java/org/onap/clamp/clds/model/prop/Tca.java +++ b/src/main/java/org/onap/clamp/clds/model/prop/Tca.java @@ -27,25 +27,8 @@ import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; import com.fasterxml.jackson.databind.JsonNode; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - /** - * Parse Tca json properties. - * - * Example json: - * {"TCA_0lm6cix":{"Narra":[{"name":"tname","value":"Narra"},{"name":"tcaEnab", - * "value":"on"},{"name":"tcaPol","value":"Polcicy1"},{"name":"tcaPolId","value" - * :"1"},{"name":"tcaInt","value":"1"},{"name":"tcaSev","value":"Critical"},{ - * "name":"tcaVio","value":"1"},{"serviceConfigurations":[["FIELDPATH_test_1", - * ">","4"],["FIELDPATH_test_1","=","5"]]}],"Srini":[{"name":"tname","value": - * "Srini"},{"name":"tcaEnab","value":"on"},{"name":"tcaPol","value":"Policy1"}, - * {"name":"tcaPolId","value":"1"},{"name":"tcaInt","value":"1"},{"name": - * "tcaSev","value":"Major"},{"name":"tcaVio","value":"1"},{ - * "serviceConfigurations":[["FIELDPATH_test_2","=","3"],["FIELDPATH_test_1",">" - * ,"2"]]}]}} - * + * Parse ONAP Tca json properties. * */ public class Tca extends AbstractModelElement { @@ -53,7 +36,7 @@ public class Tca extends AbstractModelElement { protected static final EELFLogger logger = EELFManager.getInstance().getLogger(Tca.class); protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger(); - private List tcaItems; + private TcaItem tcaItem; private static final String TYPE_TCA = "tca"; @@ -69,16 +52,12 @@ public class Tca extends AbstractModelElement { // process Server_Configurations if (modelElementJsonNode != null) { - Iterator itr = modelElementJsonNode.elements(); - tcaItems = new ArrayList<>(); - while (itr.hasNext()) { - tcaItems.add(new TcaItem(itr.next())); - } + tcaItem = new TcaItem(modelElementJsonNode.elements().next()); } } - public List getTcaItems() { - return tcaItems; + public TcaItem getTcaItem() { + return tcaItem; } public static final String getType() { diff --git a/src/main/java/org/onap/clamp/clds/model/prop/TcaItem.java b/src/main/java/org/onap/clamp/clds/model/prop/TcaItem.java index f104b0917..79da2db06 100644 --- a/src/main/java/org/onap/clamp/clds/model/prop/TcaItem.java +++ b/src/main/java/org/onap/clamp/clds/model/prop/TcaItem.java @@ -23,45 +23,28 @@ package org.onap.clamp.clds.model.prop; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; import com.fasterxml.jackson.databind.JsonNode; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + /** - * Parse Tca Item json properties. - * - * Example json: - * {"TCA_0lm6cix":{"Narra":[{"name":"tname","value":"Narra"},{"name":"tcaEnab", - * "value":"on"},{"name":"tcaPol","value":"Polcicy1"},{"name":"tcaPolId","value" - * :"1"},{"name":"tcaInt","value":"1"},{"name":"tcaSev","value":"Critical"},{ - * "name":"tcaVio","value":"1"},{"serviceConfigurations":[["FIELDPATH_test_1", - * ">","4"],["FIELDPATH_test_1","=","5"]]}],"Srini":[{"name":"tname","value": - * "Srini"},{"name":"tcaEnab","value":"on"},{"name":"tcaPol","value":"Policy1"}, - * {"name":"tcaPolId","value":"1"},{"name":"tcaInt","value":"1"},{"name": - * "tcaSev","value":"Major"},{"name":"tcaVio","value":"1"},{ - * "serviceConfigurations":[["FIELDPATH_test_2","=","3"],["FIELDPATH_test_1",">" - * ,"2"]]}]}} - * + * Parse ONAP Tca Item json properties. * */ public class TcaItem { - protected static final EELFLogger logger = EELFManager.getInstance().getLogger(TcaItem.class); + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(TcaItem.class); protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger(); - private String tcaName; - private String tcaUuId; - private String nfNamingCode; - private String tcaEnable; - private String policyId; - private Integer interval; - private String severity; - private Integer violations; - private List tcaThreshholds; + private String tcaName; + private String tcaUuId; + private String policyId; + private String eventName; + private List tcaThresholds; /** * Parse Tca Item given json node @@ -72,23 +55,14 @@ public class TcaItem { tcaName = AbstractModelElement.getValueByName(node, "tname"); tcaUuId = AbstractModelElement.getValueByName(node, "tuuid"); - nfNamingCode = AbstractModelElement.getValueByName(node, "tnfc"); - tcaEnable = AbstractModelElement.getValueByName(node, "tcaEnab"); policyId = AbstractModelElement.getValueByName(node, "tcaPolId"); - if (AbstractModelElement.getValueByName(node, "tcaInt") != null) { - interval = Integer.valueOf(AbstractModelElement.getValueByName(node, "tcaInt")); - } - severity = AbstractModelElement.getValueByName(node, "tcaSev"); - if (AbstractModelElement.getValueByName(node, "tcaVio") != null) { - violations = Integer.valueOf(AbstractModelElement.getValueByName(node, "tcaVio")); - } - + eventName = AbstractModelElement.getValueByName(node, "eventName"); // process service Configurations JsonNode serviceConfigurationsNode = node.get(node.size() - 1).get("serviceConfigurations"); Iterator itr = serviceConfigurationsNode.elements(); - tcaThreshholds = new ArrayList(); + tcaThresholds = new ArrayList<>(); while (itr.hasNext()) { - tcaThreshholds.add(new TcaThreshhold(itr.next())); + tcaThresholds.add(new TcaThreshold(itr.next())); } } @@ -108,22 +82,6 @@ public class TcaItem { this.tcaUuId = tcaUuId; } - public String getNfNamingCode() { - return nfNamingCode; - } - - public void setNfNamingCode(String nfNamingCode) { - this.nfNamingCode = nfNamingCode; - } - - public String getTcaEnable() { - return tcaEnable; - } - - public void setTcaEnable(String tcaEnable) { - this.tcaEnable = tcaEnable; - } - public String getPolicyId() { return policyId; } @@ -132,32 +90,16 @@ public class TcaItem { this.policyId = policyId; } - public Integer getInterval() { - return interval; - } - - public void setInterval(Integer interval) { - this.interval = interval; - } - - public String getSeverity() { - return severity; - } - - public void setSeverity(String severity) { - this.severity = severity; - } - - public Integer getViolations() { - return violations; + public List getTcaThresholds() { + return tcaThresholds; } - public void setViolations(Integer violations) { - this.violations = violations; + public String getEventName() { + return eventName; } - public List getTcaThreshholds() { - return tcaThreshholds; + public void setEventName(String eventName) { + this.eventName = eventName; } } diff --git a/src/main/java/org/onap/clamp/clds/model/prop/TcaThreshhold.java b/src/main/java/org/onap/clamp/clds/model/prop/TcaThreshhold.java deleted file mode 100644 index 39369f171..000000000 --- a/src/main/java/org/onap/clamp/clds/model/prop/TcaThreshhold.java +++ /dev/null @@ -1,110 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2017 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============================================ - * =================================================================== - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - */ - -package org.onap.clamp.clds.model.prop; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.fasterxml.jackson.databind.JsonNode; - -/** - * Parse Tca Threshhold json properties. - * - * Example json: - * {"TCA_0lm6cix":{"Narra":[{"name":"tname","value":"Narra"},{"name":"tcaEnab", - * "value":"on"},{"name":"tcaPol","value":"Polcicy1"},{"name":"tcaPolId","value" - * :"1"},{"name":"tcaInt","value":"1"},{"name":"tcaSev","value":"Critical"},{ - * "name":"tcaVio","value":"1"},{"serviceConfigurations":[["FIELDPATH_test_1", - * ">","4"],["FIELDPATH_test_1","=","5"]]}],"Srini":[{"name":"tname","value": - * "Srini"},{"name":"tcaEnab","value":"on"},{"name":"tcaPol","value":"Policy1"}, - * {"name":"tcaPolId","value":"1"},{"name":"tcaInt","value":"1"},{"name": - * "tcaSev","value":"Major"},{"name":"tcaVio","value":"1"},{ - * "serviceConfigurations":[["FIELDPATH_test_2","=","3"],["FIELDPATH_test_1",">" - * ,"2"]]}]}} - * - * - */ -public class TcaThreshhold { - - protected static final EELFLogger logger = EELFManager.getInstance().getLogger(TcaThreshhold.class); - protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger(); - - private String metric; - private String fieldPath; - private String operator; - private Integer threshhold; - - /** - * Parse Tca Threshhold given json node - * - * @param node - */ - public TcaThreshhold(JsonNode node) { - - if (node.get(0) != null) { - metric = node.get(0).asText(); - } - if (node.get(1) != null) { - operator = node.get(1).asText(); - } - if (node.get(2) != null) { - threshhold = Integer.valueOf(node.get(2).asText()); - } - if (node.get(3) != null) { - fieldPath = node.get(3).asText(); - } - } - - public String getMetric() { - return metric; - } - - public void setMetric(String metric) { - this.metric = metric; - } - - public String getFieldPath() { - return fieldPath; - } - - public void setFieldPath(String fieldPath) { - this.fieldPath = fieldPath; - } - - public String getOperator() { - return operator; - } - - public void setOperator(String operator) { - this.operator = operator; - } - - public Integer getThreshhold() { - return threshhold; - } - - public void setThreshhold(Integer threshhold) { - this.threshhold = threshhold; - } - -} diff --git a/src/main/java/org/onap/clamp/clds/model/prop/TcaThreshold.java b/src/main/java/org/onap/clamp/clds/model/prop/TcaThreshold.java new file mode 100644 index 000000000..43bdb5c1b --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/model/prop/TcaThreshold.java @@ -0,0 +1,108 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2017 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.model.prop; + +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; +import com.fasterxml.jackson.databind.JsonNode; + +/** + * Parse ONAP Tca Threshold json properties. + * + */ +public class TcaThreshold { + + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(TcaThreshold.class); + protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger(); + + private String fieldPath; + private String operator; + private Integer threshold; + private String closedLoopEventStatus; + private String controlLoopSchema; + + /** + * Parse Tca Threshhold given json node + * + * @param node + */ + public TcaThreshold(JsonNode node) { + + if (node.get(0) != null) { + fieldPath = node.get(0).asText(); + } + if (node.get(1) != null) { + operator = node.get(1).asText(); + } + if (node.get(2) != null) { + threshold = Integer.valueOf(node.get(2).asText()); + } + if (node.get(3) != null) { + controlLoopSchema = node.get(3).asText(); + } + if (node.get(4) != null) { + closedLoopEventStatus = node.get(4).asText(); + } + } + + public String getFieldPath() { + return fieldPath; + } + + public void setFieldPath(String fieldPath) { + this.fieldPath = fieldPath; + } + + public String getOperator() { + return operator; + } + + public void setOperator(String operator) { + this.operator = operator; + } + + public Integer getThreshold() { + return threshold; + } + + public void setThreshold(Integer threshold) { + this.threshold = threshold; + } + + public String getClosedLoopEventStatus() { + return closedLoopEventStatus; + } + + public void setClosedLoopEventStatus(String closedLoopEventStatus) { + this.closedLoopEventStatus = closedLoopEventStatus; + } + + public String getControlLoopSchema() { + return controlLoopSchema; + } + + public void setControlLoopSchema(String controlLoopSchema) { + this.controlLoopSchema = controlLoopSchema; + } +} diff --git a/src/main/resources/clds/clds-reference.properties b/src/main/resources/clds/clds-reference.properties index d404e4e37..9a56295b4 100644 --- a/src/main/resources/clds/clds-reference.properties +++ b/src/main/resources/clds/clds-reference.properties @@ -38,17 +38,18 @@ sdc.decode.service_ids={} # # General Policy request properties # -policy.ecomp.name=DCAE +policy.onap.name=DCAE policy.pdp.group=default policy.ms.type=MicroService policy.ms.policyNamePrefix=Config_MS_ policy.op.type=BRMS_Param policy.op.policyNamePrefix=Config_BRMS_Param_ -# + # TCA MicroService Policy request build properties # -tca.template={"service":"MThresholdCrossingConfiguration","location":"Edge","uuid":"TestUUID","policyName":"???","description":"from clds","configName":"MThresholdCrossingConfiguration","templateVersion":"5.2.0.1","priority":"4","version":"5.2.0.1","policyScope":"resource=F5,service=vSCP,type=configuration,closedLoopControlName=vSCP_F5_Firewall_d925ed73-8231-4d02-9545-db4e101f88f8","content":{"$class": "com.att.ecomp.dcae.clamp.common.MThresholdCrossingConfiguration","domain":"measurementsForVfScaling","policyScope":"pnf=eNodeB;type=configuration","policyName":"policy.dcae.configuration","policyVersion":"1.0.0","subscriberContentType": "application/json","subscriberConsumerId": "c13","subscriberConsumerGroup": "OpenDCAE-c13","subscriberTimeoutMS": "-1","subscriberMessageLimit": "-1","subscriberPollingInterval": "20000","publisherContentType": "application/json","publisherMaxBatchSize": "10","publisherMaxRecoveryQueueSize": "100000","publisherPollingInterval": "20000","publisherAlertWindowingTime": "86400","signatures":[]}} -tca.signature.template={"nfNamingCode":"ENBE","target":"common_id","targetType":"eNodeB","useCaseName":"???","signatureName":"???","signatureUuid":"???","closedLoopControlName":"???","severity":"???","version":"1.0.2","maxInterval":1200,"minMessageViolations":4,"thresholds":[]} +tca.template={"cdap-tca-hi-lo_policy": {"domain": "measurementsForVfScaling","metricsPerEventName": [{"eventName": "???","policyScope": "DCAE","policyName": "???","policyVersion": "v0.0.1","thresholds": []}]}} +tca.thresholds.template={"closedLoopControlName": "???", "controlLoopSchema": "VM","version": "1.0.2","fieldPath": "?????", "thresholdValue": 0,"direction": "???","severity": "MAJOR", "closedLoopEventStatus": "???"} + # # # Operational Policy request build properties @@ -73,9 +74,9 @@ op.eNodeB.limit=2 op.eNodeB.period=10s # # Sdc service properties -sdc.catalog.url=http://sdc.api.simpledemo.openecomp.org:8080/sdc/v1/catalog/ -sdc.hostUrl=http://sdc.api.simpledemo.openecomp.org:8080 -sdc.serviceUrl=http://sdc.api.simpledemo.openecomp.org:8080/sdc/v1/catalog/services +sdc.catalog.url=http://sdcb-conexus.e73c65.rdm2.tci.att.com:8080/sdc/v1/catalog/ +sdc.hostUrl=http://sdcb-conexus.e73c65.rdm2.tci.att.com:8080 +sdc.serviceUrl=http://sdcb-conexus.e73c65.rdm2.tci.att.com:8080/sdc/v1/catalog/services sdc.serviceUsername=test sdc.servicePassword=123456 sdc.artifactLabel=blueprintclampcockpit @@ -84,6 +85,17 @@ sdc.artifactType=DCAE_INVENTORY_BLUEPRINT sdc.locationArtifactLabel=locationclampcockpit sdc.locationArtifactType=DCAE_INVENTORY_JSON sdc.InstanceID=X-ECOMP-InstanceID +#sdc.catalog.url=http://135.205.226.136:8080/sdc/v1/catalog/ +#sdc.hostUrl=http://135.205.226.136:8080 +#sdc.serviceUrl=http://135.205.226.136:8080/sdc/v1/catalog/services +#sdc.serviceUsername=clamp +#sdc.servicePassword=clampdown +##sdc.artifactLabel=blueprintclampcockpit +#sdc.sdcX-InstanceID=CLAMP +#sdc.artifactType=DCAE_INVENTORY_BLUEPRINT +#sdc.locationArtifactLabel=locationclampcockpit +#sdc.locationArtifactType=DCAE_INVENTORY_JSON +#sdc.InstanceID=X-ECOMP-InstanceID # # # @@ -94,7 +106,7 @@ ui.alarm.default={"Reports a transient alarm condition when an incoming CDR cann action.test.override=false # if action.insert.test.event is true, then insert event even if the action is set to test action.insert.test.event=false -CLDS_SERVICE_CACHE_MAX_SECONDS=5 +CLDS_SERVICE_CACHE_MAX_SECONDS=300 #DCAE Inventory Url Properties DCAE_INVENTORY_URL = https://dcae.api.simpledemo.openecomp.org:8080 diff --git a/src/test/java/org/onap/clamp/clds/it/TcaRequestFormatterIT.java b/src/test/java/org/onap/clamp/clds/it/TcaRequestFormatterIT.java new file mode 100644 index 000000000..89ff5792b --- /dev/null +++ b/src/test/java/org/onap/clamp/clds/it/TcaRequestFormatterIT.java @@ -0,0 +1,89 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2017 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.it; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import java.io.IOException; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.onap.clamp.clds.AbstractIT; +import org.onap.clamp.clds.client.req.TcaRequestFormatter; +import org.onap.clamp.clds.model.CldsEvent; +import org.onap.clamp.clds.model.prop.ModelProperties; +import org.onap.clamp.clds.util.ResourceFileUtil; +import org.skyscreamer.jsonassert.JSONAssert; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit4.SpringRunner; + +/** + * Test Onap TcaPolicyReq features + */ +@RunWith(SpringRunner.class) +@SpringBootTest +@TestPropertySource(locations = "classpath:application-no-camunda.properties") +public class TcaRequestFormatterIT extends AbstractIT { + + String modelProp; + String modelBpmn; + String modelName; + String controlName; + String yamlInput; + + /** + * Initialize Test. + */ + @Before + public void setUp() throws IOException { + modelProp = ResourceFileUtil.getResourceAsString("example/model-properties/tca/modelBpmnProperties.json"); + modelBpmn = ResourceFileUtil.getResourceAsString("example/model-properties/tca/modelBpmn.json"); + yamlInput = ResourceFileUtil.getResourceAsString("example/tca-policy-req/blueprint-input.yaml"); + modelName = "example-model01"; + controlName = "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf"; + } + + @Test + public void testCreatePolicyJson() throws IOException { + ModelProperties prop = new ModelProperties(modelName, controlName, CldsEvent.ACTION_SUBMIT, false, modelBpmn, + modelProp); + String result = TcaRequestFormatter.createPolicyJson(refProp, prop); + assertNotNull(result); + JSONAssert.assertEquals(ResourceFileUtil.getResourceAsString("example/tca-policy-req/tca-policy-expected.json"), + result, true); + } + + @Test + public void testUpdatedBlueprintWithConfiguration() throws IOException { + ModelProperties prop = new ModelProperties(modelName, controlName, CldsEvent.ACTION_SUBMIT, false, modelBpmn, + modelProp); + String result = TcaRequestFormatter.updatedBlueprintWithConfiguration(refProp, prop, yamlInput); + + assertNotNull(result); + assertEquals(ResourceFileUtil.getResourceAsString("example/tca-policy-req/blueprint-expected.yaml"), result); + } +} diff --git a/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java b/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java index 60056d42f..45f39a422 100644 --- a/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java +++ b/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java @@ -24,11 +24,10 @@ package org.onap.clamp.clds.model.prop; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.io.IOException; -import java.util.ArrayList; -import java.util.List; import org.junit.Before; import org.junit.Test; @@ -46,10 +45,11 @@ public class ModelPropertiesTest { } @Test - public void testHolmes() throws IOException { + public void testTcaModelDecoding() throws IOException { - String modelBpmnProp = ResourceFileUtil.getResourceAsString("example/model-properties/modelBpmnProp.json"); - String modelBpmn = ResourceFileUtil.getResourceAsString("example/model-properties/modelBpmn.json"); + String modelBpmnProp = ResourceFileUtil + .getResourceAsString("example/model-properties/tca/modelBpmnProperties.json"); + String modelBpmn = ResourceFileUtil.getResourceAsString("example/model-properties/tca/modelBpmn.json"); ModelProperties prop = new ModelProperties("example-model-name", "example-control-name", null, true, modelBpmn, modelBpmnProp); @@ -66,11 +66,52 @@ public class ModelPropertiesTest { assertEquals(null, policy.getPolicyChains().get(0).getPolicyItems().get(0).getParentPolicyConditions()); Tca tca = prop.getType(Tca.class); + assertNotNull(tca); assertTrue(tca.isFound()); - assertEquals(1, tca.getTcaItems().size()); - assertEquals(0, tca.getTcaItems().get(0).getTcaThreshholds().size()); + assertEquals("vFirewallBroadcastPackets", tca.getTcaItem().getEventName()); + assertEquals("policy1", tca.getTcaItem().getPolicyId()); + assertEquals("f734f031-10aa-t8fb-330f-04dde2886325", tca.getTcaItem().getTcaUuId()); + assertEquals(2, tca.getTcaItem().getTcaThresholds().size()); + + assertEquals("ABATED", tca.getTcaItem().getTcaThresholds().get(0).getClosedLoopEventStatus()); + assertEquals("VM", tca.getTcaItem().getTcaThresholds().get(0).getControlLoopSchema()); + assertEquals( + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated", + tca.getTcaItem().getTcaThresholds().get(0).getFieldPath()); + assertEquals("LESS_OR_EQUAL", tca.getTcaItem().getTcaThresholds().get(0).getOperator()); + assertEquals(Integer.valueOf(123), tca.getTcaItem().getTcaThresholds().get(0).getThreshold()); + + assertEquals("ONSET", tca.getTcaItem().getTcaThresholds().get(1).getClosedLoopEventStatus()); + assertEquals("VNF", tca.getTcaItem().getTcaThresholds().get(1).getControlLoopSchema()); + assertEquals("$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta", + tca.getTcaItem().getTcaThresholds().get(1).getFieldPath()); + assertEquals("GREATER_OR_EQUAL", tca.getTcaItem().getTcaThresholds().get(1).getOperator()); + assertEquals(Integer.valueOf(123), tca.getTcaItem().getTcaThresholds().get(1).getThreshold()); + } + + @Test + public void testHolmesModelDecoding() throws IOException { + + String modelBpmnProp = ResourceFileUtil + .getResourceAsString("example/model-properties/holmes/modelBpmnProperties.json"); + String modelBpmn = ResourceFileUtil.getResourceAsString("example/model-properties/holmes/modelBpmn.json"); + + ModelProperties prop = new ModelProperties("example-model-name", "example-control-name", null, true, modelBpmn, + modelBpmnProp); + + Policy policy = prop.getType(Policy.class); + assertTrue(policy.isFound()); + assertEquals(1, policy.getPolicyChains().size()); + assertEquals("0", policy.getPolicyChains().get(0).getPolicyId()); + assertEquals(1, policy.getPolicyChains().get(0).getPolicyItems().size()); + assertEquals("resourceid", policy.getPolicyChains().get(0).getPolicyItems().get(0).getTargetResourceId()); + assertEquals(180, policy.getPolicyChains().get(0).getPolicyItems().get(0).getRetryTimeLimit()); + assertEquals(3, policy.getPolicyChains().get(0).getPolicyItems().get(0).getMaxRetries()); + assertEquals("", policy.getPolicyChains().get(0).getPolicyItems().get(0).getParentPolicy()); + assertEquals(null, policy.getPolicyChains().get(0).getPolicyItems().get(0).getParentPolicyConditions()); Holmes holmes = prop.getType(Holmes.class); + assertNotNull(holmes); assertTrue(holmes.isFound()); assertEquals("policy1", holmes.getOperationalPolicy()); assertEquals("blabla", holmes.getCorrelationLogic()); @@ -80,7 +121,7 @@ public class ModelPropertiesTest { public void testGetVf() throws IOException { CldsModel cldsModel = new CldsModel(); cldsModel.setPropText( - ResourceFileUtil.getResourceAsString("example/model-properties/modelBpmnPropWithGlobal.json")); + ResourceFileUtil.getResourceAsString("example/model-properties/tca/modelBpmnProperties.json")); assertEquals("f5213e3a-9191-4362-93b5-b67f8d770e44", ModelProperties.getVf(cldsModel)); } } \ No newline at end of file diff --git a/src/test/resources/clds/clds-reference.properties b/src/test/resources/clds/clds-reference.properties index f2ec43b76..405b3ed6f 100644 --- a/src/test/resources/clds/clds-reference.properties +++ b/src/test/resources/clds/clds-reference.properties @@ -28,9 +28,9 @@ # # TCA MicroService Policy request build properties # -tca.template={"service":"MThresholdCrossingConfiguration","location":"Edge","uuid":"TestUUID","policyName":"???","description":"from clds","configName":"MThresholdCrossingConfiguration","templateVersion":"5.2.0.1","priority":"4","version":"5.2.0.1","policyScope":"resource=F5,service=vSCP,type=configuration,closedLoopControlName=vSCP_F5_Firewall_d925ed73-8231-4d02-9545-db4e101f88f8","content":{"$class": "com.att.ecomp.dcae.clamp.common.MThresholdCrossingConfiguration","domain":"measurementsForVfScaling","policyScope":"pnf=eNodeB;type=configuration","policyName":"policy.dcae.configuration","policyVersion":"1.0.0","subscriberContentType": "application/json","subscriberConsumerId": "c13","subscriberConsumerGroup": "OpenDCAE-c13","subscriberTimeoutMS": "-1","subscriberMessageLimit": "-1","subscriberPollingInterval": "20000","publisherContentType": "application/json","publisherMaxBatchSize": "10","publisherMaxRecoveryQueueSize": "100000","publisherPollingInterval": "20000","publisherAlertWindowingTime": "86400","signatures":[]}} -tca.signature.template={"nfNamingCode":"ENBE","target":"common_id","targetType":"eNodeB","useCaseName":"???","signatureName":"???","signatureUuid":"???","closedLoopControlName":"???","severity":"???","version":"1.0.2","maxInterval":1200,"minMessageViolations":4,"thresholds":[]} - +tca.template={"cdap-tca-hi-lo_policy": {"domain": "measurementsForVfScaling","metricsPerEventName": [{"eventName": "???","policyScope": "DCAE","policyName": "???","policyVersion": "v0.0.1","thresholds": []}]}} +tca.thresholds.template={"closedLoopControlName": "???", "controlLoopSchema": "VM","version": "1.0.2","fieldPath": "?????", "thresholdValue": 0,"direction": "???","severity": "MAJOR", "closedLoopEventStatus": "???"} +# # # DCAE request build properties # @@ -45,7 +45,7 @@ sdc.decode.service_ids={} # # General Policy request properties # -policy.ecomp.name=DCAE +policy.onap.name=DCAE policy.pdp.group=default policy.ms.type=MicroService policy.ms.policyNamePrefix=Config_MS_ diff --git a/src/test/resources/example/model-properties/holmes/modelBpmn.json b/src/test/resources/example/model-properties/holmes/modelBpmn.json new file mode 100644 index 000000000..db8e54dd3 --- /dev/null +++ b/src/test/resources/example/model-properties/holmes/modelBpmn.json @@ -0,0 +1,20 @@ +{ + "vesCollector": [ + { + "id": "VesCollector_0orydnh", + "from": "StartEvent_1" + } + ], + "holmes": [ + { + "id": "Holmes_0i4n2mm", + "from": "VesCollector_0orydnh" + } + ], + "policy": [ + { + "id": "Policy_0honxgv", + "from": "Holmes_0i4n2mm" + } + ] +} diff --git a/src/test/resources/example/model-properties/holmes/modelBpmnProperties.json b/src/test/resources/example/model-properties/holmes/modelBpmnProperties.json new file mode 100644 index 000000000..14b3a8c28 --- /dev/null +++ b/src/test/resources/example/model-properties/holmes/modelBpmnProperties.json @@ -0,0 +1,116 @@ +{ + "Holmes_0i4n2mm": [ + { + "name": "correlationalLogic", + "value": "blabla" + }, + { + "name": "operationalPolicy", + "value": "policy1" + } + ], + "Policy_0honxgv": { + "policy1": [ + { + "name": "pname", + "value": "policy1" + }, + { + "name": "pid", + "value": "0" + }, + { + "name": "timeout", + "value": "345" + }, + { + "policyConfigurations": [ + [ + { + "name": "maxRetries", + "value": [ + "3" + ] + }, + { + "name": "retryTimeLimit", + "value": [ + "180" + ] + }, + { + "name": "_id", + "value": [ + "dGLuNqg" + ] + }, + { + "name": "parentPolicy", + "value": [ + "" + ] + }, + { + "name": "targetResourceId", + "value": [ + "resourceid" + ] + } + ] + ] + } + ] + }, + "global": [ + { + "name": "actionSet", + "value": [ + "vnfRecipe" + ] + }, + { + "name": "location", + "value": [ + "SNDGCA64", + "ALPRGAED" + ] + }, + { + "name": "vf", + "value": [ + "f5213e3a-9191-4362-93b5-b67f8d770e44" + ] + }, + { + "name": "location", + "value": [ + "SNDGCA64", + "ALPRGAED", + "LSLEILAA", + "MDTWNJC1" + ] + } + ], + "shared": { + "byService": { + "": { + "vf": { + "": "" + }, + "location": { + "": "" + }, + "alarmCondition": { + "": "" + } + } + }, + "byVf": { + "": { + "vfc": { + "": "" + } + } + } + } +} diff --git a/src/test/resources/example/model-properties/tca/modelBpmn.json b/src/test/resources/example/model-properties/tca/modelBpmn.json new file mode 100644 index 000000000..7358f9ade --- /dev/null +++ b/src/test/resources/example/model-properties/tca/modelBpmn.json @@ -0,0 +1,20 @@ +{ + "vesCollector": [ + { + "id": "VesCollector_0orydnh", + "from": "StartEvent_1" + } + ], + "tca": [ + { + "id": "TCA_1jy9to4", + "from": "VesCollector_0orydnh" + } + ], + "policy": [ + { + "id": "Policy_0honxgv", + "from": "TCA_1jy9to4" + } + ] +} diff --git a/src/test/resources/example/model-properties/tca/modelBpmnProperties.json b/src/test/resources/example/model-properties/tca/modelBpmnProperties.json new file mode 100644 index 000000000..0bfa78ce1 --- /dev/null +++ b/src/test/resources/example/model-properties/tca/modelBpmnProperties.json @@ -0,0 +1,150 @@ +{ + "TCA_1jy9to4": { + "group1": [ + { + "name": "tname", + "value": "group1" + }, + { + "name": "tuuid", + "value": "f734f031-10aa-t8fb-330f-04dde2886325" + }, + { + "name": "tcaPolId", + "value": "policy1" + }, + { + "name": "eventName", + "value": "vFirewallBroadcastPackets" + }, + { + "serviceConfigurations": [ + [ + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated", + "LESS_OR_EQUAL", + "123", + "VM", + "ABATED" + ], + [ + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta", + "GREATER_OR_EQUAL", + "123", + "VNF", + "ONSET" + ] + ] + } + ] + }, + "Policy_0honxgv": { + "policy1": [ + { + "name": "pname", + "value": "policy1" + }, + { + "name": "pid", + "value": "0" + }, + { + "name": "timeout", + "value": "345" + }, + { + "policyConfigurations": [ + [ + { + "name": "maxRetries", + "value": [ + "3" + ] + }, + { + "name": "retryTimeLimit", + "value": [ + "180" + ] + }, + { + "name": "_id", + "value": [ + "dGLuNqg" + ] + }, + { + "name": "parentPolicy", + "value": [ + "" + ] + }, + { + "name": "targetResourceId", + "value": [ + "resourceid" + ] + } + ] + ] + } + ] + }, + "global": [ + { + "name": "actionSet", + "value": [ + "vnfRecipe" + ] + }, + { + "name": "service", + "value": [ + "serviceUUID" + ] + }, + { + "name": "location", + "value": [ + "SNDGCA64", + "ALPRGAED" + ] + }, + { + "name": "vf", + "value": [ + "f5213e3a-9191-4362-93b5-b67f8d770e44" + ] + }, + { + "name": "location", + "value": [ + "SNDGCA64", + "ALPRGAED", + "LSLEILAA", + "MDTWNJC1" + ] + } + ], + "shared": { + "byService": { + "": { + "vf": { + "": "" + }, + "location": { + "": "" + }, + "alarmCondition": { + "": "" + } + } + }, + "byVf": { + "": { + "vfc": { + "": "" + } + } + } + } +} diff --git a/src/test/resources/example/templatePropForTca.json b/src/test/resources/example/templatePropForTca.json deleted file mode 100644 index 9f1ce1dac..000000000 --- a/src/test/resources/example/templatePropForTca.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "global": [ - { - "name": "service", - "value": [ - "tosca_definitions_version: cloudify_dsl_1_2\r\n\r\nimports:\r\n- http://www.getcloudify.org/spec/cloudify/3.3.1/types.yaml\r\n- http://135.207.127.211/1607_prod/type_files/cdap_app.yaml\r\n\r\nnode_templates:\r\n MTCA:\r\n type: dcae.nodes.cdap_app\r\n properties:\r\n service_name: \"cdap-mtca-central\"\r\n deployment_JSON: |-\r\n {\r\n \"clusterService\": {\"$ref\": \"/services/vm-cdap-cluster-central/instances/rdm2c\"},\r\n \"namespace\": \"MTCA\",\r\n \"appNames\": [ \"cdap-mtca\" ],\r\n \"flowNames\": [ \"cdap-mtca.TCAVESCollectorFlow\" ],\r\n \"workerNames\": [\"cdap-mtca.TCADMaaPMRSubscriberWorker\", \"cdap-mtca.TCADMaaPMRPublisherWorker\"],\r\n \"serviceNames\" : [],\r\n \"apps\": {\r\n \"cdap-mtca\": {\r\n \"jarFile\": \"/opt/app/cdap-apps/dcae-analytics-mtca-1.0.0.jar\",\r\n \"artifactName\": \"dcae-analytics-mtca\",\r\n \"version\": \"1.0.0\",\r\n \"appConfigFileContent\": \"{config:{ \\\"appName\\\":\\\"cdap-mtca\\\", \\\"appDescription\\\":\\\"DCAE Analytics Threshold Crossing Alert Application\\\", \\\"tcaSubscriberOutputStreamName\\\":\\\"TCASubscriberOutputStream\\\", \\\"thresholdCalculatorFlowletInstances\\\":2, \\\"tcaVESMessageStatusTableName\\\":\\\"TCAVESMessageStatusTable\\\", \\\"tcaVESMessageStatusTableTTLSeconds\\\":864000, \\\"tcaVESAlertsTableName\\\":\\\"TCAVESAlertsTable\\\", \\\"tcaVESAlertsTableTTLSeconds\\\":1728000 }}\"\r\n }\r\n },\r\n \r\n \"configuration\": {\r\n \"$class\": \"com.att.ecomp.dcae.clamp.common.MThresholdCrossingConfiguration\",\r\n \"subscriberContentType\": \"\",\r\n \"subscriberConsumerId\": \"c12\",\r\n \"subscriberConsumerGroup\": \"OpenDCAE-c12\",\r\n \"subscriberTimeoutMS\": \"-1\",\r\n \"subscriberMessageLimit\": \"-1\",\r\n \"subscriberPollingInterval\": \"20000\",\r\n \"publisherContentType\": \"application/json\",\r\n \"publisherMaxBatchSize\": \"10\",\r\n \"publisherMaxRecoveryQueueSize\": \"100000\",\r\n \"publisherPollingInterval\": \"20000\",\r\n \"publisherAlertWindowingTime\": \"86400\",\r\n \"policyName\": \"policy.dcae.configuration\",\r\n \"policyScope\": \"pnf=eNodeB;type=configuration\",\r\n \"policyVersion\": \"1.0.0\",\r\n \"domain\" : \"measurementsForVfScaling\",\r\n \r\n \"signatures\" : {\r\n \t }\r\n\r\n }\r\n }\r\n" - ] - } - ] -} \ No newline at end of file diff --git a/src/test/resources/expected/tca.json b/src/test/resources/expected/tca.json deleted file mode 100644 index 2fd16bde6..000000000 --- a/src/test/resources/expected/tca.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "service": "MThresholdCrossingConfiguration", - "location": "Edge", - "uuid": "TestUUID", - "policyName": "example_model06.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_", - "description": "from clds", - "configName": "MThresholdCrossingConfiguration", - "templateVersion": "5.2.0.1", - "priority": "4", - "version": "5.2.0.1", - "policyScope": "resource=F5,service=vSCP,type=configuration,closedLoopControlName=vSCP_F5_Firewall_d925ed73-8231-4d02-9545-db4e101f88f8", - "content": - { - "$class": "com.att.ecomp.dcae.clamp.common.MThresholdCrossingConfiguration", - "domain": "measurementsForVfScaling", - "policyScope": "pnf=eNodeB;type=configuration", - "policyName": "policy.dcae.configuration", - "policyVersion": "1.0.0", - "subscriberContentType": "application/json", - "subscriberConsumerId": "c13", - "subscriberConsumerGroup": "OpenDCAE-c13", - "subscriberTimeoutMS": "-1", - "subscriberMessageLimit": "-1", - "subscriberPollingInterval": "20000", - "publisherContentType": "application/json", - "publisherMaxBatchSize": "10", - "publisherMaxRecoveryQueueSize": "100000", - "publisherPollingInterval": "20000", - "publisherAlertWindowingTime": "86400", - "signatures": - [ - { - "nfNamingCode": "ENBE", - "target": "common_id", - "targetType": "eNodeB", - "useCaseName": "Narra", - "signatureName": "Narra_886be8da-14fe-tca1-d04b-d13b55d58df9", - "signatureUuid": "886be8da-14fe-tca1-d04b-d13b55d58df9", - "closedLoopControlName": "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_1", - "severity": "Warning", - "version": "1.0.2", - "maxInterval": 2, - "minMessageViolations": 3, - "thresholds": - [ - { - "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABFAILCELLLATENCY')].Value", - "thresholdName": "PMRRCCONNESTABFAILCELLLATENCY", - "thresholdValue": 4, - "direction": "LESS" - }, - - { - "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRAATTCBRA')].Value", - "thresholdName": "PMRAATTCBRA", - "thresholdValue": 30, - "direction": "GREATER" - } - ] - }, - - { - "nfNamingCode": "ENBE", - "target": "common_id", - "targetType": "eNodeB", - "useCaseName": "Srini", - "signatureName": "Srini_8b5ba88d-f4b4-tf0e-50b1-78a5a7dd412d", - "signatureUuid": "8b5ba88d-f4b4-tf0e-50b1-78a5a7dd412d", - "closedLoopControlName": "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_2", - "severity": "Critical", - "version": "1.0.2", - "maxInterval": 10, - "minMessageViolations": 5, - "thresholds": - [ - { - "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABFAILCELLLATENCY')].Value", - "thresholdName": "PMRRCCONNESTABFAILCELLLATENCY", - "thresholdValue": 3, - "direction": "EQUAL" - }, - - { - "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRAATTCBRA')].Value", - "thresholdName": "PMRAATTCBRA", - "thresholdValue": 30, - "direction": "GREATER" - } - ] - } - ] - } -} \ No newline at end of file -- cgit 1.2.3-korg From 1de3466a56a245223752c34423b7858117b56b73 Mon Sep 17 00:00:00 2001 From: xg353y Date: Tue, 24 Oct 2017 11:49:46 +0200 Subject: Update TCA config json send to Policy Update the format of the TCA configuration send to Policy Issue-ID: CLAMP-62 Change-Id: I53cbfcb1f8f8772856b645e8aec0db2a8a94d15e Signed-off-by: xg353y --- pom.xml | 6 --- .../org/onap/clamp/clds/client/PolicyClient.java | 12 ++--- .../clamp/clds/client/req/TcaRequestFormatter.java | 56 +++++++++++++++++----- .../org/onap/clamp/clds/model/prop/TcaItem.java | 10 ++++ .../onap/clamp/clds/model/prop/TcaThreshold.java | 14 +----- .../partials/portfolios/tca_properties.html | 34 ++++++------- .../resources/clds/clds-policy-config.properties | 5 +- src/main/resources/clds/clds-reference.properties | 21 ++++---- src/main/resources/clds/clds-users.json | 20 ++++++-- src/main/resources/clds/globalClds.properties | 10 ++-- .../clamp/clds/model/prop/ModelPropertiesTest.java | 3 +- src/test/resources/clds/clds-reference.properties | 6 ++- .../model-properties/tca/modelBpmnProperties.json | 6 ++- .../example/tca-policy-req/blueprint-expected.yaml | 4 +- .../tca-policy-req/tca-policy-expected.json | 20 ++++++-- 15 files changed, 134 insertions(+), 93 deletions(-) (limited to 'src/test/resources/clds') diff --git a/pom.xml b/pom.xml index 623efec0a..85d3223c2 100644 --- a/pom.xml +++ b/pom.xml @@ -467,12 +467,6 @@ - - - com.fasterxml.jackson.core - jackson-databind - 2.6.3 - com.fasterxml.jackson.dataformat jackson-dataformat-yaml diff --git a/src/main/java/org/onap/clamp/clds/client/PolicyClient.java b/src/main/java/org/onap/clamp/clds/client/PolicyClient.java index cb86acbd3..54b3fbb48 100644 --- a/src/main/java/org/onap/clamp/clds/client/PolicyClient.java +++ b/src/main/java/org/onap/clamp/clds/client/PolicyClient.java @@ -37,6 +37,7 @@ import java.util.UUID; import javax.ws.rs.BadRequestException; +import org.onap.clamp.clds.client.req.TcaRequestFormatter; import org.onap.clamp.clds.exception.policy.PolicyClientException; import org.onap.clamp.clds.model.prop.ModelProperties; import org.onap.clamp.clds.model.refprop.RefProp; @@ -62,7 +63,6 @@ import org.springframework.context.ApplicationContext; * Policy utility methods - specifically, send the policy. */ public class PolicyClient { - protected static final String POLICY_PREFIX_BASE = "Config_"; protected static final String POLICY_PREFIX_BRMS_PARAM = "Config_BRMS_Param_"; protected static final String POLICY_PREFIX_MICROSERVICE = "Config_MS_"; @@ -110,8 +110,6 @@ public class PolicyClient { // Data Issue: No policyDescription given. policyParameters.setPolicyDescription(refProp.getStringValue("op.policyDescription")); - policyParameters.setAttributes(attributes); - // Set a random UUID(Mandatory) policyParameters.setRequestID(UUID.fromString(policyRequestUuid)); String policyNamePrefix = refProp.getStringValue("policy.op.policyNamePrefix"); @@ -213,16 +211,12 @@ public class PolicyClient { public String sendMicroServiceInOther(String configBody, ModelProperties prop, String policyRequestUuid) { PolicyParameters policyParameters = new PolicyParameters(); - - // Set Policy Type + // Set Policy Type policyParameters.setPolicyConfigType(PolicyConfigType.MicroService); + policyParameters.setOnapName("DCAE"); policyParameters.setEcompName(refProp.getStringValue("policy.onap.name")); policyParameters.setPolicyName(prop.getCurrentPolicyScopeAndPolicyName()); - policyParameters.setConfigBody(configBody); - policyParameters.setConfigBodyType(PolicyType.OTHER); - - policyParameters.setRequestID(UUID.fromString(policyRequestUuid)); String policyNamePrefix = refProp.getStringValue("policy.ms.policyNamePrefix"); // Adding this line to clear the policy id from policy name while diff --git a/src/main/java/org/onap/clamp/clds/client/req/TcaRequestFormatter.java b/src/main/java/org/onap/clamp/clds/client/req/TcaRequestFormatter.java index c2590d764..a71a5f375 100644 --- a/src/main/java/org/onap/clamp/clds/client/req/TcaRequestFormatter.java +++ b/src/main/java/org/onap/clamp/clds/client/req/TcaRequestFormatter.java @@ -27,6 +27,7 @@ import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; +import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.dataformat.yaml.snakeyaml.Yaml; import java.util.HashMap; @@ -70,16 +71,11 @@ public class TcaRequestFormatter { Tca tca = modelProperties.getType(Tca.class); modelProperties.setCurrentModelElementId(tca.getId()); - ObjectNode rootNode = (ObjectNode) refProp.getJsonTemplate("tca.template", service); - ((ObjectNode) rootNode.get("cdap-tca-hi-lo_policy").get("metricsPerEventName").get(0)).put("policyName", - modelProperties.getCurrentPolicyScopeAndPolicyName()); - ((ObjectNode) rootNode.get("cdap-tca-hi-lo_policy").get("metricsPerEventName").get(0)).put("eventName", - tca.getTcaItem().getEventName()); - - ObjectNode thresholdsParent = ((ObjectNode) rootNode.get("cdap-tca-hi-lo_policy").get("metricsPerEventName") - .get(0)); - - addThresholds(refProp, service, thresholdsParent, tca.getTcaItem(), modelProperties); + ObjectNode rootNode = (ObjectNode) refProp.getJsonTemplate("tca.policy.template", service); + String policyName = refProp.getStringValue("tca.policyid.prefix") + modelProperties.getCurrentPolicyScopeAndPolicyName(); + ((ObjectNode) rootNode).put("policyName", policyName); + ((ObjectNode) rootNode).put("description", "MicroService vCPE Policy"); + ((ObjectNode) rootNode).replace("content", createPolicyContent(refProp, modelProperties, service, policyName, tca)); String tcaPolicyReq = rootNode.toString(); logger.info("tcaPolicyReq=" + tcaPolicyReq); @@ -89,6 +85,43 @@ public class TcaRequestFormatter { } } + /** + * Format Tca Policy Content JSON + * + * @param refProp + * The refProp generally created by Spring, it's an access on the + * clds-references.properties file + * @param modelProperties + * The Model Prop created from BPMN JSON and BPMN properties JSON + * @return The Json string containing that should be sent to policy + */ + public static JsonNode createPolicyContent(RefProp refProp, ModelProperties modelProperties, String service, String policyName, Tca tca) { + try { + if (null == service) { + service = modelProperties.getGlobal().getService(); + } + if (null == tca){ + tca = modelProperties.getType(Tca.class); + modelProperties.setCurrentModelElementId(tca.getId()); + } + if (null == policyName) { + policyName = refProp.getStringValue("tca.policyid.prefix") + modelProperties.getCurrentPolicyScopeAndPolicyName(); + } + ObjectNode rootNode = (ObjectNode) refProp.getJsonTemplate("tca.template", service); + ((ObjectNode) rootNode.get("metricsPerEventName").get(0)).put("eventName", tca.getTcaItem().getEventName()); + ((ObjectNode) rootNode.get("metricsPerEventName").get(0)).put("policyName", policyName); + ((ObjectNode) rootNode.get("metricsPerEventName").get(0)).put("controlLoopSchemaType", tca.getTcaItem().getControlLoopSchemaType()); + ObjectNode thresholdsParent = ((ObjectNode) rootNode.get("metricsPerEventName").get(0)); + + addThresholds(refProp, service, thresholdsParent, tca.getTcaItem(), modelProperties); + + logger.info("tcaPolicyContent=" + rootNode.toString()); + return (JsonNode) rootNode; + } catch (Exception e) { + throw new TcaRequestFormatterException("Exception caught when attempting to create the policy content JSON", e); + } + } + /** * Add threshold values to the existing policy JSON. * @@ -114,7 +147,6 @@ public class TcaRequestFormatter { ObjectNode tcaNode = (ObjectNode) refProp.getJsonTemplate("tca.thresholds.template", service); for (TcaThreshold tcaThreshold : tcaItem.getTcaThresholds()) { - tcaNode.put("controlLoopSchema", tcaThreshold.getControlLoopSchema()); tcaNode.put("closedLoopControlName", modelProperties.getControlNameAndPolicyUniqueId()); tcaNode.put("fieldPath", tcaThreshold.getFieldPath()); tcaNode.put("thresholdValue", tcaThreshold.getThreshold()); @@ -143,7 +175,7 @@ public class TcaRequestFormatter { public static String updatedBlueprintWithConfiguration(RefProp refProp, ModelProperties modelProperties, String yamlValue) { try { - String jsonPolicy = createPolicyJson(refProp, modelProperties); + String jsonPolicy = ((ObjectNode) createPolicyContent(refProp, modelProperties, null, null, null)).toString(); logger.info("Yaml that will be updated:" + yamlValue); Yaml yaml = new Yaml(); diff --git a/src/main/java/org/onap/clamp/clds/model/prop/TcaItem.java b/src/main/java/org/onap/clamp/clds/model/prop/TcaItem.java index 79da2db06..13bff0024 100644 --- a/src/main/java/org/onap/clamp/clds/model/prop/TcaItem.java +++ b/src/main/java/org/onap/clamp/clds/model/prop/TcaItem.java @@ -44,6 +44,7 @@ public class TcaItem { private String tcaUuId; private String policyId; private String eventName; + private String controlLoopSchemaType; private List tcaThresholds; /** @@ -57,6 +58,7 @@ public class TcaItem { tcaUuId = AbstractModelElement.getValueByName(node, "tuuid"); policyId = AbstractModelElement.getValueByName(node, "tcaPolId"); eventName = AbstractModelElement.getValueByName(node, "eventName"); + controlLoopSchemaType = AbstractModelElement.getValueByName(node, "controlLoopSchemaType"); // process service Configurations JsonNode serviceConfigurationsNode = node.get(node.size() - 1).get("serviceConfigurations"); Iterator itr = serviceConfigurationsNode.elements(); @@ -66,6 +68,14 @@ public class TcaItem { } } + public String getControlLoopSchemaType() { + return controlLoopSchemaType; + } + + public void setControlLoopSchemaType(String controlLoopSchemaType) { + this.controlLoopSchemaType = controlLoopSchemaType; + } + public String getTcaName() { return tcaName; } diff --git a/src/main/java/org/onap/clamp/clds/model/prop/TcaThreshold.java b/src/main/java/org/onap/clamp/clds/model/prop/TcaThreshold.java index 43bdb5c1b..d278c254f 100644 --- a/src/main/java/org/onap/clamp/clds/model/prop/TcaThreshold.java +++ b/src/main/java/org/onap/clamp/clds/model/prop/TcaThreshold.java @@ -40,7 +40,6 @@ public class TcaThreshold { private String operator; private Integer threshold; private String closedLoopEventStatus; - private String controlLoopSchema; /** * Parse Tca Threshhold given json node @@ -59,10 +58,7 @@ public class TcaThreshold { threshold = Integer.valueOf(node.get(2).asText()); } if (node.get(3) != null) { - controlLoopSchema = node.get(3).asText(); - } - if (node.get(4) != null) { - closedLoopEventStatus = node.get(4).asText(); + closedLoopEventStatus = node.get(3).asText(); } } @@ -97,12 +93,4 @@ public class TcaThreshold { public void setClosedLoopEventStatus(String closedLoopEventStatus) { this.closedLoopEventStatus = closedLoopEventStatus; } - - public String getControlLoopSchema() { - return controlLoopSchema; - } - - public void setControlLoopSchema(String controlLoopSchema) { - this.controlLoopSchema = controlLoopSchema; - } } diff --git a/src/main/resources/META-INF/resources/designer/partials/portfolios/tca_properties.html b/src/main/resources/META-INF/resources/designer/partials/portfolios/tca_properties.html index 546909ab2..323891e67 100644 --- a/src/main/resources/META-INF/resources/designer/partials/portfolios/tca_properties.html +++ b/src/main/resources/META-INF/resources/designer/partials/portfolios/tca_properties.html @@ -191,8 +191,13 @@
- - + +
+ +
+ +
+
@@ -298,17 +297,16 @@ return $('#formId'+formIdNum+' #fieldPathM').find(':selected').text() + ' ' + $('#formId'+formIdNum+' #operator').val() + ' ' + $('#formId'+formIdNum+' #threshold').val() + ' ' + - $('#formId'+formIdNum+' #controlLoopSchema').val() + ' ' + $('#formId'+formIdNum+' #closedLoopEventStatus').val(); }; loadPropertyWindow("tca"); - + //load dropdown with policy options if (typeof allPolicies !== "undefined"){ $.each(Object.keys(allPolicies), function(val, text) { $('#tcaPol').append($('').val(text).html(text)); - }); + }); } else if (typeof elementMap !== "undefined"){ for (key in elementMap){ if (key.indexOf("Policy")>-1){ @@ -509,16 +507,15 @@ $('#formId'+count+' #fieldPathM').val(fieldPathMLabel2Value(str[0])).multiselect('refresh'); $('#formId'+count+' #operator').val(str[1]).multiselect('refresh'); $('#formId'+count+' #threshold').val(str[2]); - $('#formId'+count+' #controlLoopSchema').val(str[3]).multiselect('refresh'); - $('#formId'+count+' #closedLoopEventStatus').val(str[4]).multiselect('refresh'); + $('#formId'+count+' #closedLoopEventStatus').val(str[3]).multiselect('refresh'); } - + if ((!(readOnly||readMOnly)) && ($('#formId'+count + ' #deleteThresh').prop('disabled'))) { $('#formId'+count + ' #deleteThresh').prop('disabled', false); } } }); - + $('#formId'+count+' #deleteThresh').on('click', function(){ $('#formId'+num+' .tcaErr').hide(); $('#formId'+count+ ' #properties_tab').invisible(); @@ -544,7 +541,6 @@ $('#formId'+count+' #fieldPathM').prop("selectedIndex", 0).multiselect('refresh'); $('#formId'+count+' #operator').prop("selectedIndex", 0).multiselect('refresh'); $('#formId'+count+' #threshold').val(""); - $('#formId'+count+' #controlLoopSchema').prop("selectedIndex", 0).multiselect('refresh'); $('#formId'+count+' #closedLoopEventStatus').prop("selectedIndex", 0).multiselect('refresh'); if ($('#formId'+count + ' #deleteThresh').prop('disabled')) { @@ -552,7 +548,7 @@ } } }); - + $('#formId'+count+' #tname').on('change',function(){ $('#go_properties_tab'+count).text($('#formId'+count+' #tname').val()) }); diff --git a/src/main/resources/clds/clds-policy-config.properties b/src/main/resources/clds/clds-policy-config.properties index fa2634be2..a2bc1faf3 100644 --- a/src/main/resources/clds/clds-policy-config.properties +++ b/src/main/resources/clds/clds-policy-config.properties @@ -21,9 +21,8 @@ # ECOMP is a trademark and service mark of AT&T Intellectual Property. ### # Configuration Settings for Policy Engine Components -PDP_URL1=https://vm1.policy.simpledemo.openecomp.org:8081/pdp/ , testpdp, alpha123 -PDP_URL2=https://vm1.policy.simpledemo.openecomp.org:8081/pdp/ , testpdp, alpha456 -PAP_URL=https://vm1.policy.simpledemo.openecomp.org:8081/pap/ , testpap, alpha123 +PDP_URL1=https://vm1.policy.simpledemo.onap.org:8081/pdp/ , testpdp, alpha123 +PDP_URL2=https://vm1.policy.simpledemo.onap.org:8081/pdp/ , testpdp, alpha123 NOTIFICATION_TYPE=websocket NOTIFICATION_UEB_SERVERS=localhost NOTIFICATION_TOPIC= diff --git a/src/main/resources/clds/clds-reference.properties b/src/main/resources/clds/clds-reference.properties index fd7af5efb..94f6dd2c4 100644 --- a/src/main/resources/clds/clds-reference.properties +++ b/src/main/resources/clds/clds-reference.properties @@ -48,8 +48,9 @@ policy.op.policyNamePrefix=Config_BRMS_Param_ # TCA MicroService Policy request build properties # tca.policyid.prefix=DCAE.Config_ -tca.template={"cdap-tca-hi-lo_policy": {"domain": "measurementsForVfScaling","metricsPerEventName": [{"eventName": "???","policyScope": "DCAE","policyName": "???","policyVersion": "v0.0.1","thresholds": []}]}} -tca.thresholds.template={"closedLoopControlName": "???", "controlLoopSchema": "VM","version": "1.0.2","fieldPath": "?????", "thresholdValue": 0,"direction": "???","severity": "MAJOR", "closedLoopEventStatus": "???"} +tca.policy.template={"service": "policy_tosca_tca", "version": "1.0.0", "location": "SampleServiceLocation", "configName": "SampleConfigName", "uuid": "test", "policyScope": "resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", "templateVersion": "OpenSource.version.1", "policyName": "MicroServicevCPE", "description": "MicroService Policy", "priority": "1", "riskType": "SampleRiskType", "riskLevel": "1", "guard": "False","content":{}} +tca.template= {"domain": "measurementsForVfScaling", "metricsPerEventName": [{"eventName": "???", "controlLoopSchemaType":"VNF","policyScope": "DCAE","policyName": "???","policyVersion": "v0.0.1","thresholds": []}]} +tca.thresholds.template={"closedLoopControlName": "???", "version": "1.0.2","fieldPath": "?????", "thresholdValue": 0,"direction": "???","severity": "MAJOR", "closedLoopEventStatus": "???"} # # @@ -60,24 +61,24 @@ op.policyDescription=from clds op.templateName=ClosedLoopvUSP op.operationTopic=APPC-CL op.notificationTopic=POLICY-CL-MGT -op.controller=1610-vUSP +op.controller=amsterdam op.policy.appc=APPC # by service: vSCP op.templateName.vSCP=ClosedLoopTemplate op.controller.vSCP=1607-f5fw -op.eNodeB.templateName=CLeNodeB +op.eNodeB.templateName=ClosedLoopControlName op.eNodeB.operationTopic=com.onap.sdnr.RanCLRequest-v00 op.eNodeB.notificationTopic=com.onap-policy.IST-ENODEB-CL -op.eNodeB.controller=ClosedLoop-eNodeB +op.eNodeB.controller=amsterdam op.eNodeB.recipe={"eNodeBRecipes":[{"Actor":"AOTS","Recipe":"checkENodeBTicketHours","ParentPolicy":"","PPConditions":"","Retry":"0","TimeLimit":"120"},{"Actor":"AOTS","Recipe":"checkEquipmentStatus","ParentPolicy":"checkENodeBTicketHours","PPConditions":"Success","Retry":"0","TimeLimit":"120"},{"Actor":"AOTS","Recipe":"checkEimStatus","ParentPolicy":"checkEquipmentStatus","PPConditions":"Success","Retry":"0","TimeLimit":"120"},{"Actor":"AOTS","Recipe":"checkMaintenanceWindow","ParentPolicy":"checkEimStatus","PPConditions":"Success","Retry":"0","TimeLimit":"120"},{"Actor":"SDNR","Recipe":"Reset","ParentPolicy":"checkMaintenanceWindow","PPConditions":"Success","Retry":"","TimeLimit":""}]} op.eNodeB.timeWindow=35 op.eNodeB.limit=2 op.eNodeB.period=10s # # Sdc service properties -sdc.catalog.url=http://sdc.api.simpledemo.openecomp.org:8080/sdc/v1/catalog/ -sdc.hostUrl=http://sdc.api.simpledemo.openecomp.org:8080 -sdc.serviceUrl=http://sdc.api.simpledemo.openecomp.org:8080/sdc/v1/catalog/services +sdc.catalog.url=http://sdc.api.simpledemo.onap.org:8080/sdc/v1/catalog/ +sdc.hostUrl=http://sdc.api.simpledemo.onap.org:8080 +sdc.serviceUrl=http://sdc.api.simpledemo.onap.org:8080/sdc/v1/catalog/services sdc.serviceUsername=test sdc.servicePassword=123456 sdc.artifactLabel=blueprintclampcockpit @@ -99,8 +100,8 @@ action.insert.test.event=false CLDS_SERVICE_CACHE_MAX_SECONDS=30 #DCAE Inventory Url Properties -DCAE_INVENTORY_URL = https://dcae.api.simpledemo.openecomp.org:8080 +DCAE_INVENTORY_URL = https://dcae.api.simpledemo.onap.org:8080 #DCAE Dispatcher Url Properties -DCAE_DISPATCHER_URL = https://dcae.api.simpledemo.openecomp.org:8443 +DCAE_DISPATCHER_URL = https://dcae.api.simpledemo.onap.org:8443 diff --git a/src/main/resources/clds/clds-users.json b/src/main/resources/clds/clds-users.json index b569f9d3d..5909e8e78 100644 --- a/src/main/resources/clds/clds-users.json +++ b/src/main/resources/clds/clds-users.json @@ -1,7 +1,20 @@ [{ - "user":"admin", - "password":"5f4dcc3b5aa765d61d8327deb882cf99", - "permissions": + "user":"admin", + "password":"5f4dcc3b5aa765d61d8327deb882cf99", + "permissions": + [ + "permission-type-cl|dev|read", + "permission-type-cl|dev|update", + "permission-type-cl-manage|dev|*", + "permission-type-filter-vf|dev|*", + "permission-type-template|dev|read", + "permission-type-template|dev|update" + ] + }, + { + "user":"cs0008", + "password":"5f4dcc3b5aa765d61d8327deb882cf99", + "permissions": [ "permission-type-cl|dev|read", "permission-type-cl|dev|update", @@ -11,5 +24,4 @@ "permission-type-template|dev|update" ] } - ] \ No newline at end of file diff --git a/src/main/resources/clds/globalClds.properties b/src/main/resources/clds/globalClds.properties index d21afbcf7..c3d270659 100644 --- a/src/main/resources/clds/globalClds.properties +++ b/src/main/resources/clds/globalClds.properties @@ -11,14 +11,14 @@ # # 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 +# 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============================================ # =================================================================== # ECOMP is a trademark and service mark of AT&T Intellectual Property. ### -globalCldsProps ={"tca":{"tname":"New_Set","tcaInt":"1","tcaVio":"1","eventName":{"vCPEvGMUXPacketLoss":"vCPEvGMUXPacketLoss","vLoadBalancer":"vLoadBalancer","vFirewallBroadcastPackets":"vFirewallBroadcastPackets"},"fieldPathM":{"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated":"receivedBroadcastPacketsAccumulated","$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta":"receivedDiscardedPacketsDelta"},"operator":{">":"GREATER",">=":"GREATER_OR_EQUAL","=":"EQUAL","<=":"LESS_OR_EQUAL","<":"LESS"},"opsPolicy":{"POLICY_test_X":"POLICY_test_X","POLICY_test_Y":"POLICY_test_Y"},"controlLoopSchema":{"":"","VM":"VM","VNF":"VNF"},"closedLoopEventStatus":{"":"","ONSET":"ONSET","ABATED":"ABATED"}},"global":{"actionSet":{"vnfRecipe":"VNF", "enbRecipe":"eNodeB"},"location":{"SNDGCA64":"San Diego SAN3","ALPRGAED":"Alpharetta PDK1","LSLEILAA":"Lisle DPA3","MDTWNJC1":"FTL_C_location1","MDTWNJC2":"FTL_C_location2","MDTWNJ21":"FTL_L_location1","MDTWNJ22":"FTL_L_location2","RDM2WAGPLCP":"ISTFTL_location","RDM3":"RDM3WAGPLCP"}},"policy":{"pname":"0","timeout":345,"vnfRecipe":{"":"","restart":"Restart","rebuild":"Rebuild","migrate":"Migrate","healthCheck":"Health Check"},"enbRecipe":{"":"","reset":"Reset"},"maxRetries":"3","retryTimeLimit":180,"resource":{"vCTS":"vCTS","v3CDB":"v3CDB","vUDR":"vUDR","vCOM":"vCOM","vRAR":"vRAR","vLCS":"vLCS","vUDR-BE":"vUDR-BE","vDBE":"vDBE"},"parentPolicyConditions":{"Failure_Retries":"Failure: Max Retries Exceeded","Failure_Timeout":"Failure: Time Limit Exceeded","Failure_Guard":"Failure: Guard","Failure_Exception":"Failure: Exception","Failure":"Failure: Other","Success":"Success"}},"shared":{"byService":{"":{"vf":{"":""},"location":{"":""},"alarmCondition":{"":""}}},"byVf":{"":{"vfc":{"":""}}}}} +globalCldsProps ={"tca":{"tname":"New_Set","tcaInt":"1","tcaVio":"1","eventName":{"vCPEvGMUXPacketLoss":"vCPEvGMUXPacketLoss","vLoadBalancer":"vLoadBalancer","vFirewallBroadcastPackets":"vFirewallBroadcastPackets"},"fieldPathM":{"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated":"receivedBroadcastPacketsAccumulated","$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta":"receivedDiscardedPacketsDelta"},"operator":{">":"GREATER",">=":"GREATER_OR_EQUAL","=":"EQUAL","<=":"LESS_OR_EQUAL","<":"LESS"},"opsPolicy":{"POLICY_test_X":"POLICY_test_X","POLICY_test_Y":"POLICY_test_Y"},"controlLoopSchemaType":{"":"","VM":"VM","VNF":"VNF"},"closedLoopEventStatus":{"":"","ONSET":"ONSET","ABATED":"ABATED"}},"global":{"actionSet":{"vnfRecipe":"VNF", "enbRecipe":"eNodeB"},"location":{"SNDGCA64":"San Diego SAN3","ALPRGAED":"Alpharetta PDK1","LSLEILAA":"Lisle DPA3","MDTWNJC1":"FTL_C_location1","MDTWNJC2":"FTL_C_location2","MDTWNJ21":"FTL_L_location1","MDTWNJ22":"FTL_L_location2","RDM2WAGPLCP":"ISTFTL_location","RDM3":"RDM3WAGPLCP"}},"policy":{"pname":"0","timeout":345,"vnfRecipe":{"":"","restart":"Restart","rebuild":"Rebuild","migrate":"Migrate","healthCheck":"Health Check"},"enbRecipe":{"":"","reset":"Reset"},"maxRetries":"3","retryTimeLimit":180,"resource":{"vCTS":"vCTS","v3CDB":"v3CDB","vUDR":"vUDR","vCOM":"vCOM","vRAR":"vRAR","vLCS":"vLCS","vUDR-BE":"vUDR-BE","vDBE":"vDBE"},"parentPolicyConditions":{"Failure_Retries":"Failure: Max Retries Exceeded","Failure_Timeout":"Failure: Time Limit Exceeded","Failure_Guard":"Failure: Guard","Failure_Exception":"Failure: Exception","Failure":"Failure: Other","Success":"Success"}},"shared":{"byService":{"":{"vf":{"":""},"location":{"":""},"alarmCondition":{"":""}}},"byVf":{"":{"vfc":{"":""}}}}} diff --git a/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java b/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java index 9daa97c6e..eb0214127 100644 --- a/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java +++ b/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java @@ -69,12 +69,12 @@ public class ModelPropertiesTest { assertNotNull(tca); assertTrue(tca.isFound()); assertEquals("vFirewallBroadcastPackets", tca.getTcaItem().getEventName()); + assertEquals("VNF", tca.getTcaItem().getControlLoopSchemaType()); assertEquals("policy1", tca.getTcaItem().getPolicyId()); assertEquals("f734f031-10aa-t8fb-330f-04dde2886325", tca.getTcaItem().getTcaUuId()); assertEquals(2, tca.getTcaItem().getTcaThresholds().size()); assertEquals("ABATED", tca.getTcaItem().getTcaThresholds().get(0).getClosedLoopEventStatus()); - assertEquals("VM", tca.getTcaItem().getTcaThresholds().get(0).getControlLoopSchema()); assertEquals( "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated", tca.getTcaItem().getTcaThresholds().get(0).getFieldPath()); @@ -82,7 +82,6 @@ public class ModelPropertiesTest { assertEquals(Integer.valueOf(123), tca.getTcaItem().getTcaThresholds().get(0).getThreshold()); assertEquals("ONSET", tca.getTcaItem().getTcaThresholds().get(1).getClosedLoopEventStatus()); - assertEquals("VNF", tca.getTcaItem().getTcaThresholds().get(1).getControlLoopSchema()); assertEquals("$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta", tca.getTcaItem().getTcaThresholds().get(1).getFieldPath()); assertEquals("GREATER_OR_EQUAL", tca.getTcaItem().getTcaThresholds().get(1).getOperator()); diff --git a/src/test/resources/clds/clds-reference.properties b/src/test/resources/clds/clds-reference.properties index 405b3ed6f..a9670e131 100644 --- a/src/test/resources/clds/clds-reference.properties +++ b/src/test/resources/clds/clds-reference.properties @@ -28,8 +28,10 @@ # # TCA MicroService Policy request build properties # -tca.template={"cdap-tca-hi-lo_policy": {"domain": "measurementsForVfScaling","metricsPerEventName": [{"eventName": "???","policyScope": "DCAE","policyName": "???","policyVersion": "v0.0.1","thresholds": []}]}} -tca.thresholds.template={"closedLoopControlName": "???", "controlLoopSchema": "VM","version": "1.0.2","fieldPath": "?????", "thresholdValue": 0,"direction": "???","severity": "MAJOR", "closedLoopEventStatus": "???"} +tca.policyid.prefix=DCAE.Config_ +tca.policy.template={"service": "policy_tosca_tca", "version": "1.0.0", "location": "SampleServiceLocation", "configName": "SampleConfigName", "uuid": "test", "policyScope": "resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", "templateVersion": "OpenSource.version.1", "policyName": "MicroServicevCPE", "description": "MicroService Policy", "priority": "1", "riskType": "SampleRiskType", "riskLevel": "1", "guard": "False","content":{}} +tca.template= {"domain": "measurementsForVfScaling", "metricsPerEventName": [{"eventName": "???", "controlLoopSchemaType":"VNF","policyScope": "DCAE","policyName": "???","policyVersion": "v0.0.1","thresholds": []}]} +tca.thresholds.template={"closedLoopControlName": "???", "version": "1.0.2","fieldPath": "?????", "thresholdValue": 0,"direction": "???","severity": "MAJOR", "closedLoopEventStatus": "???"} # # # DCAE request build properties diff --git a/src/test/resources/example/model-properties/tca/modelBpmnProperties.json b/src/test/resources/example/model-properties/tca/modelBpmnProperties.json index 0bfa78ce1..7bb4fe0bb 100644 --- a/src/test/resources/example/model-properties/tca/modelBpmnProperties.json +++ b/src/test/resources/example/model-properties/tca/modelBpmnProperties.json @@ -17,20 +17,22 @@ "name": "eventName", "value": "vFirewallBroadcastPackets" }, + { + "name": "controlLoopSchemaType", + "value": "VNF" + }, { "serviceConfigurations": [ [ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated", "LESS_OR_EQUAL", "123", - "VM", "ABATED" ], [ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta", "GREATER_OR_EQUAL", "123", - "VNF", "ONSET" ] ] diff --git a/src/test/resources/example/tca-policy-req/blueprint-expected.yaml b/src/test/resources/example/tca-policy-req/blueprint-expected.yaml index 747d342c3..ffc50576f 100644 --- a/src/test/resources/example/tca-policy-req/blueprint-expected.yaml +++ b/src/test/resources/example/tca-policy-req/blueprint-expected.yaml @@ -30,7 +30,7 @@ node_templates: subscriberMessageLimit: '-1', subscriberPollingInterval: '20000', subscriberProtocol: https, subscriberTimeoutMS: '-1', subscriberTopicName: com.att.dcae.dmaap.mtnje2.DcaeTestVESSub, subscriberUserName: m00502@tca.af.dcae.att.com, subscriberUserPassword: Te5021abc, - tca_policy: '{"cdap-tca-hi-lo_policy":{"domain":"measurementsForVfScaling","metricsPerEventName":[{"eventName":"vFirewallBroadcastPackets","policyScope":"DCAE","policyName":"example_model01.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_1jy9to4","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null","controlLoopSchema":"VNF","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta","thresholdValue":123,"direction":"GREATER_OR_EQUAL","severity":"MAJOR","closedLoopEventStatus":"ONSET"},{"closedLoopControlName":"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null","controlLoopSchema":"VNF","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta","thresholdValue":123,"direction":"GREATER_OR_EQUAL","severity":"MAJOR","closedLoopEventStatus":"ONSET"}]}]}}'} + tca_policy: '{"domain":"measurementsForVfScaling","metricsPerEventName":[{"eventName":"vFirewallBroadcastPackets","controlLoopSchemaType":"VNF","policyScope":"DCAE","policyName":"DCAE.Config_example_model01.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_1jy9to4","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta","thresholdValue":123,"direction":"GREATER_OR_EQUAL","severity":"MAJOR","closedLoopEventStatus":"ONSET"},{"closedLoopControlName":"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta","thresholdValue":123,"direction":"GREATER_OR_EQUAL","severity":"MAJOR","closedLoopEventStatus":"ONSET"}]}]}'} artifact_name: dcae-analytics-tca artifact_version: 1.0.0 connections: @@ -50,4 +50,4 @@ node_templates: - {target: cdap_host_host, type: dcae.relationships.component_contained_in} policy_0: type: dcae.nodes.policy - properties: {policy_id: nullexample_model01.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_1jy9to4} + properties: {policy_id: DCAE.Config_example_model01.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_1jy9to4} diff --git a/src/test/resources/example/tca-policy-req/tca-policy-expected.json b/src/test/resources/example/tca-policy-req/tca-policy-expected.json index ce230918f..ad95c07b9 100644 --- a/src/test/resources/example/tca-policy-req/tca-policy-expected.json +++ b/src/test/resources/example/tca-policy-req/tca-policy-expected.json @@ -1,16 +1,29 @@ { - "cdap-tca-hi-lo_policy": { + "service": "policy_tosca_tca", + "version": "1.0.0", + "location": "SampleServiceLocation", + "configName": "SampleConfigName", + "uuid": "test", + "policyScope": "resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", + "templateVersion": "OpenSource.version.1", + "policyName": "DCAE.Config_example_model01.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_1jy9to4", + "description": "MicroService vCPE Policy", + "priority": "1", + "riskType": "SampleRiskType", + "riskLevel": "1", + "guard": "False", + "content": { "domain": "measurementsForVfScaling", "metricsPerEventName": [ { "eventName": "vFirewallBroadcastPackets", + "controlLoopSchemaType": "VNF", "policyScope": "DCAE", - "policyName": "example_model01.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_1jy9to4", + "policyName": "DCAE.Config_example_model01.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_1jy9to4", "policyVersion": "v0.0.1", "thresholds": [ { "closedLoopControlName": "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null", - "controlLoopSchema": "VNF", "version": "1.0.2", "fieldPath": "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta", "thresholdValue": 123, @@ -20,7 +33,6 @@ }, { "closedLoopControlName": "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null", - "controlLoopSchema": "VNF", "version": "1.0.2", "fieldPath": "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta", "thresholdValue": 123, -- cgit 1.2.3-korg From 46e7f8e7eebaeeab27b5024b13ea28a9fbf88543 Mon Sep 17 00:00:00 2001 From: xg353y Date: Fri, 3 Nov 2017 10:30:12 +0100 Subject: Update the content send to Policy Adding tca_policy tag under content section, while sending configBody to Policy. Change-Id: I184d366b0cda24ff6b95c4e8c29d0a90bde7ba06 Issue-ID: CLAMP-62 Signed-off-by: xg353y --- .../clamp/clds/client/req/TcaRequestFormatter.java | 2 +- src/main/resources/clds/clds-reference.properties | 2 +- src/test/resources/clds/clds-reference.properties | 2 +- .../tca-policy-req/tca-policy-expected.json | 64 +++++++++++----------- 4 files changed, 36 insertions(+), 34 deletions(-) (limited to 'src/test/resources/clds') diff --git a/src/main/java/org/onap/clamp/clds/client/req/TcaRequestFormatter.java b/src/main/java/org/onap/clamp/clds/client/req/TcaRequestFormatter.java index a71a5f375..9698a9958 100644 --- a/src/main/java/org/onap/clamp/clds/client/req/TcaRequestFormatter.java +++ b/src/main/java/org/onap/clamp/clds/client/req/TcaRequestFormatter.java @@ -75,7 +75,7 @@ public class TcaRequestFormatter { String policyName = refProp.getStringValue("tca.policyid.prefix") + modelProperties.getCurrentPolicyScopeAndPolicyName(); ((ObjectNode) rootNode).put("policyName", policyName); ((ObjectNode) rootNode).put("description", "MicroService vCPE Policy"); - ((ObjectNode) rootNode).replace("content", createPolicyContent(refProp, modelProperties, service, policyName, tca)); + ((ObjectNode) rootNode.get("content")).replace("tca_policy", createPolicyContent(refProp, modelProperties, service, policyName, tca)); String tcaPolicyReq = rootNode.toString(); logger.info("tcaPolicyReq=" + tcaPolicyReq); diff --git a/src/main/resources/clds/clds-reference.properties b/src/main/resources/clds/clds-reference.properties index 3bf018d3c..ab33d5ce6 100644 --- a/src/main/resources/clds/clds-reference.properties +++ b/src/main/resources/clds/clds-reference.properties @@ -48,7 +48,7 @@ policy.op.policyNamePrefix=Config_BRMS_Param_ # TCA MicroService Policy request build properties # tca.policyid.prefix=DCAE.Config_ -tca.policy.template={"service": "policy_tosca_tca", "version": "1.0.0", "location": "SampleServiceLocation", "configName": "SampleConfigName", "uuid": "test", "policyScope": "resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", "templateVersion": "OpenSource.version.1", "policyName": "MicroServicevCPE", "description": "MicroService Policy", "priority": "1", "riskType": "SampleRiskType", "riskLevel": "1", "guard": "False","content":{}} +tca.policy.template={"service": "tca_policy", "version": "1.0.0", "location": "SampleServiceLocation", "configName": "SampleConfigName", "uuid": "test", "policyScope": "resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", "templateVersion": "OpenSource.version.1", "policyName": "MicroServicevCPE", "description": "MicroService Policy", "priority": "1", "riskType": "SampleRiskType", "riskLevel": "1", "guard": "False","content":{"tca_policy": {}}} tca.template= {"domain": "measurementsForVfScaling", "metricsPerEventName": [{"eventName": "???", "controlLoopSchemaType":"VNF","policyScope": "DCAE","policyName": "???","policyVersion": "v0.0.1","thresholds": []}]} tca.thresholds.template={"closedLoopControlName": "???", "version": "1.0.2","fieldPath": "?????", "thresholdValue": 0,"direction": "???","severity": "MAJOR", "closedLoopEventStatus": "???"} diff --git a/src/test/resources/clds/clds-reference.properties b/src/test/resources/clds/clds-reference.properties index a9670e131..f45957e76 100644 --- a/src/test/resources/clds/clds-reference.properties +++ b/src/test/resources/clds/clds-reference.properties @@ -29,7 +29,7 @@ # TCA MicroService Policy request build properties # tca.policyid.prefix=DCAE.Config_ -tca.policy.template={"service": "policy_tosca_tca", "version": "1.0.0", "location": "SampleServiceLocation", "configName": "SampleConfigName", "uuid": "test", "policyScope": "resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", "templateVersion": "OpenSource.version.1", "policyName": "MicroServicevCPE", "description": "MicroService Policy", "priority": "1", "riskType": "SampleRiskType", "riskLevel": "1", "guard": "False","content":{}} +tca.policy.template={"service": "tca_policy", "version": "1.0.0", "location": "SampleServiceLocation", "configName": "SampleConfigName", "uuid": "test", "policyScope": "resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", "templateVersion": "OpenSource.version.1", "policyName": "MicroServicevCPE", "description": "MicroService Policy", "priority": "1", "riskType": "SampleRiskType", "riskLevel": "1", "guard": "False","content":{"tca_policy": {}}} tca.template= {"domain": "measurementsForVfScaling", "metricsPerEventName": [{"eventName": "???", "controlLoopSchemaType":"VNF","policyScope": "DCAE","policyName": "???","policyVersion": "v0.0.1","thresholds": []}]} tca.thresholds.template={"closedLoopControlName": "???", "version": "1.0.2","fieldPath": "?????", "thresholdValue": 0,"direction": "???","severity": "MAJOR", "closedLoopEventStatus": "???"} # diff --git a/src/test/resources/example/tca-policy-req/tca-policy-expected.json b/src/test/resources/example/tca-policy-req/tca-policy-expected.json index ad95c07b9..2ade75f1e 100644 --- a/src/test/resources/example/tca-policy-req/tca-policy-expected.json +++ b/src/test/resources/example/tca-policy-req/tca-policy-expected.json @@ -1,5 +1,5 @@ { - "service": "policy_tosca_tca", + "service": "tca_policy", "version": "1.0.0", "location": "SampleServiceLocation", "configName": "SampleConfigName", @@ -13,35 +13,37 @@ "riskLevel": "1", "guard": "False", "content": { - "domain": "measurementsForVfScaling", - "metricsPerEventName": [ - { - "eventName": "vFirewallBroadcastPackets", - "controlLoopSchemaType": "VNF", - "policyScope": "DCAE", - "policyName": "DCAE.Config_example_model01.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_1jy9to4", - "policyVersion": "v0.0.1", - "thresholds": [ - { - "closedLoopControlName": "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null", - "version": "1.0.2", - "fieldPath": "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta", - "thresholdValue": 123, - "direction": "GREATER_OR_EQUAL", - "severity": "MAJOR", - "closedLoopEventStatus": "ONSET" - }, - { - "closedLoopControlName": "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null", - "version": "1.0.2", - "fieldPath": "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta", - "thresholdValue": 123, - "direction": "GREATER_OR_EQUAL", - "severity": "MAJOR", - "closedLoopEventStatus": "ONSET" - } - ] - } - ] + "tca_policy": { + "domain": "measurementsForVfScaling", + "metricsPerEventName": [ + { + "eventName": "vFirewallBroadcastPackets", + "controlLoopSchemaType": "VNF", + "policyScope": "DCAE", + "policyName": "DCAE.Config_example_model01.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_1jy9to4", + "policyVersion": "v0.0.1", + "thresholds": [ + { + "closedLoopControlName": "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null", + "version": "1.0.2", + "fieldPath": "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta", + "thresholdValue": 123, + "direction": "GREATER_OR_EQUAL", + "severity": "MAJOR", + "closedLoopEventStatus": "ONSET" + }, + { + "closedLoopControlName": "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null", + "version": "1.0.2", + "fieldPath": "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta", + "thresholdValue": 123, + "direction": "GREATER_OR_EQUAL", + "severity": "MAJOR", + "closedLoopEventStatus": "ONSET" + } + ] + } + ] + } } } -- cgit 1.2.3-korg From da4caf492050e17c1aaa8915064659a16e060d8d Mon Sep 17 00:00:00 2001 From: xg353y Date: Fri, 3 Nov 2017 16:16:16 +0100 Subject: Update the policyName send to Policy Change-Id: Ib8ef7feb2404b15f215a1a7967d3af7d6ac89da0 Issue-Id: CLAMP-62 Signed-off-by: xg353y --- .../clamp/clds/client/DcaeDispatcherServices.java | 6 ++++- .../clamp/clds/client/DcaeInventoryServices.java | 5 ++-- .../clamp/clds/client/req/TcaRequestFormatter.java | 4 +-- .../java/org/onap/clamp/clds/util/CryptoUtils.java | 3 +++ .../META-INF/resources/designer/scripts/app.js | 29 ++++++++++++++++++++-- src/main/resources/clds/clds-reference.properties | 1 + src/test/resources/clds/clds-reference.properties | 1 + .../example/tca-policy-req/blueprint-expected.yaml | 2 +- .../tca-policy-req/tca-policy-expected.json | 4 +-- 9 files changed, 44 insertions(+), 11 deletions(-) (limited to 'src/test/resources/clds') diff --git a/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java b/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java index 718a2e997..f285dc27c 100644 --- a/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java +++ b/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java @@ -25,6 +25,7 @@ package org.onap.clamp.clds.client; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; +import com.fasterxml.jackson.databind.node.ObjectNode; import java.io.BufferedReader; import java.io.DataOutputStream; @@ -235,7 +236,10 @@ public class DcaeDispatcherServices { Date startTime = new Date(); LoggingUtils.setTargetContext("DCAE", "createNewDeployment"); try { - String apiBodyString = "{\"serviceTypeId\": \"" + serviceTypeId + "\"}"; + ObjectNode rootNode = (ObjectNode) refProp.getJsonTemplate("dcae.deployment.template"); + ((ObjectNode) rootNode).put("serviceTypeId", serviceTypeId); + String apiBodyString = rootNode.toString(); + logger.info("Dcae api Body String - " + apiBodyString); String url = refProp.getStringValue("DCAE_DISPATCHER_URL") + "/dcae-deployments/" + deploymentId; logger.info("Dcae Dispatcher Service url - " + url); diff --git a/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java b/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java index 71e57ded9..a53ea6475 100644 --- a/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java +++ b/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java @@ -105,13 +105,12 @@ public class DcaeInventoryServices { Global global = prop.getGlobal(); String invariantServiceUuid = global.getService(); List resourceUuidList = global.getResourceVf(); - String serviceUuid = sdcCatalogServices.getServiceUuidFromServiceInvariantId(invariantServiceUuid); String resourceUuid = ""; if (resourceUuidList != null && !resourceUuidList.isEmpty()) { resourceUuid = resourceUuidList.get(0); } /* Invemtory service url is called in this method */ - isDcaeInfoAvailable = getDcaeInformation(artifactName, serviceUuid, resourceUuid); + isDcaeInfoAvailable = getDcaeInformation(artifactName, invariantServiceUuid, resourceUuid); /* set dcae events */ dcaeEvent.setArtifactName(artifactName); dcaeEvent.setEvent(DcaeEvent.EVENT_DISTRIBUTION); @@ -170,7 +169,7 @@ public class DcaeInventoryServices { throws IOException, ParseException { Date startTime = new Date(); LoggingUtils.setTargetContext("DCAE", "getDcaeInformation"); - String queryString = "?sdcResourceId=" + resourceUuid + "&sdcServiceId=" + serviceUuid + "&typeName=" + String queryString = "?asdcResourceId=" + resourceUuid + "&asdcServiceId=" + serviceUuid + "&typeName=" + artifactName; String fullUrl = refProp.getStringValue("DCAE_INVENTORY_URL") + "/dcae-service-types" + queryString; logger.info("Dcae Inventory Service full url - " + fullUrl); diff --git a/src/main/java/org/onap/clamp/clds/client/req/TcaRequestFormatter.java b/src/main/java/org/onap/clamp/clds/client/req/TcaRequestFormatter.java index 9698a9958..8a6f7e8aa 100644 --- a/src/main/java/org/onap/clamp/clds/client/req/TcaRequestFormatter.java +++ b/src/main/java/org/onap/clamp/clds/client/req/TcaRequestFormatter.java @@ -72,7 +72,7 @@ public class TcaRequestFormatter { Tca tca = modelProperties.getType(Tca.class); modelProperties.setCurrentModelElementId(tca.getId()); ObjectNode rootNode = (ObjectNode) refProp.getJsonTemplate("tca.policy.template", service); - String policyName = refProp.getStringValue("tca.policyid.prefix") + modelProperties.getCurrentPolicyScopeAndPolicyName(); + String policyName = modelProperties.getCurrentPolicyScopeAndPolicyName(); ((ObjectNode) rootNode).put("policyName", policyName); ((ObjectNode) rootNode).put("description", "MicroService vCPE Policy"); ((ObjectNode) rootNode.get("content")).replace("tca_policy", createPolicyContent(refProp, modelProperties, service, policyName, tca)); @@ -105,7 +105,7 @@ public class TcaRequestFormatter { modelProperties.setCurrentModelElementId(tca.getId()); } if (null == policyName) { - policyName = refProp.getStringValue("tca.policyid.prefix") + modelProperties.getCurrentPolicyScopeAndPolicyName(); + policyName = modelProperties.getCurrentPolicyScopeAndPolicyName(); } ObjectNode rootNode = (ObjectNode) refProp.getJsonTemplate("tca.template", service); ((ObjectNode) rootNode.get("metricsPerEventName").get(0)).put("eventName", tca.getTcaItem().getEventName()); diff --git a/src/main/java/org/onap/clamp/clds/util/CryptoUtils.java b/src/main/java/org/onap/clamp/clds/util/CryptoUtils.java index fd4d1b15c..86f57dcee 100644 --- a/src/main/java/org/onap/clamp/clds/util/CryptoUtils.java +++ b/src/main/java/org/onap/clamp/clds/util/CryptoUtils.java @@ -31,6 +31,8 @@ import javax.crypto.spec.SecretKeySpec; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.Environment; +import org.springframework.core.annotation.Order; +import org.springframework.core.Ordered; import org.springframework.stereotype.Component; /** @@ -39,6 +41,7 @@ import org.springframework.stereotype.Component; * */ @Component("CryptoUtils") +@Order(Ordered.HIGHEST_PRECEDENCE) public final class CryptoUtils { public static final String AES = "AES"; public static final String KEY_PARAM = "org.onap.clamp.encryption.aes.key"; diff --git a/src/main/resources/META-INF/resources/designer/scripts/app.js b/src/main/resources/META-INF/resources/designer/scripts/app.js index f300bb092..3c723626e 100644 --- a/src/main/resources/META-INF/resources/designer/scripts/app.js +++ b/src/main/resources/META-INF/resources/designer/scripts/app.js @@ -393,7 +393,7 @@ var app = angular.module('clds-app', ['ngRoute', $scope .cldsConfirmPerformAction("RESTART"); } else if (name == "Refresh Status") { - $scope.cldsPerformAction("REFRESH"); + $scope.refreshStatus(); } else if (name == "Properties CL") { $scope.cldsOpenModelProperties(); } else if (name == "Deploy") { @@ -1175,7 +1175,32 @@ var app = angular.module('clds-app', ['ngRoute', // + data); }); }; - + $scope.refreshStatus = function() { + var modelName = selected_model; + var svgXml = ""; + console.log(abootDiagram.saveSVG({ + format: true + }, function(err, xml) { + if (err) + console.log("error") + else + console.log(xml) + svgXml = xml; + })); + console.log("refreStatus modelName=" + modelName); + cldsModelService + .getModel(modelName) + .then( + function(pars) { + console + .log("refreStatus: pars=" + + pars); + cldsModelService + .processRefresh(pars); + }, + function(data) { + }); + }; $scope.cldsConfirmPerformAction = function(uiAction) { var dlg = dialogs.confirm('Message', 'Do you want to ' + diff --git a/src/main/resources/clds/clds-reference.properties b/src/main/resources/clds/clds-reference.properties index ab33d5ce6..a17537603 100644 --- a/src/main/resources/clds/clds-reference.properties +++ b/src/main/resources/clds/clds-reference.properties @@ -29,6 +29,7 @@ # dcae.template={"properties":{"service_name":"","service_ids":[],"vnf_ids":[],"location_ids":[]},"template":{"tca":{"dcae":{"inputTopic":"","outputTopic":"","closedLoopControlName":"","closedLoopEventClient":"configuration.dcae.microservice.tca.xml","policyName":"","policyScope":"service=vSCP;resource=F5;type=configuration","policyVersion":"v0.0.1","serviceConfigurations":{}}}}} dcae.decode.service_ids={"vUSP":["vUSP - vCTS"],"Trinity":["ASBGv TLS VNF","ASBGv No TLS","ASBGv (NO TLS) VNF","ASBGv TLS","NSBGv VNF","NSBGv"],"vSCP":["AKRON_vSCP_F5_FW-SVC/vSCP_F5_FW 1","ALLEN_vSCP_F5_FW-SVC/vSCP_F5_FW 1"],"vProbes":["vProbes - FW"]} +dcae.deployment.template={"serviceTypeId": "???", "inputs": {"aaiEnrichmentHost": "10.0.1.1", "enableAAIEnrichment": "true", "subscriberHostName" : "10.0.11.1", "publisherHostName" : "10.0.11.1"}} # # SDC request blueprint properties # diff --git a/src/test/resources/clds/clds-reference.properties b/src/test/resources/clds/clds-reference.properties index f45957e76..0657fe7ba 100644 --- a/src/test/resources/clds/clds-reference.properties +++ b/src/test/resources/clds/clds-reference.properties @@ -38,6 +38,7 @@ tca.thresholds.template={"closedLoopControlName": "???", "version": "1.0.2","fie # dcae.template={"properties":{"service_name":"","service_ids":[],"vnf_ids":[],"location_ids":[]},"template":{"tca":{"dcae":{"inputTopic":"","outputTopic":"","closedLoopControlName":"","closedLoopEventClient":"configuration.dcae.microservice.tca.xml","policyName":"","policyScope":"service=vSCP;resource=F5;type=configuration","policyVersion":"v0.0.1","serviceConfigurations":{}}}}} dcae.decode.service_ids={"vUSP":["vUSP - vCTS"],"Trinity":["ASBGv TLS VNF","ASBGv No TLS","ASBGv (NO TLS) VNF","ASBGv TLS","NSBGv VNF","NSBGv"],"vSCP":["AKRON_vSCP_F5_FW-SVC/vSCP_F5_FW 1","ALLEN_vSCP_F5_FW-SVC/vSCP_F5_FW 1"],"vProbes":["vProbes - FW"]} +dcae.deployment.template={"serviceTypeId": "???", "inputs": {"aaiEnrichmentHost": "10.0.1.1", "enableAAIEnrichment": "true", "subscriberHostName" : "10.0.11.1", "publisherHostName" : "10.0.11.1"}} # # SDC request blueprint properties # diff --git a/src/test/resources/example/tca-policy-req/blueprint-expected.yaml b/src/test/resources/example/tca-policy-req/blueprint-expected.yaml index ffc50576f..7862e48f7 100644 --- a/src/test/resources/example/tca-policy-req/blueprint-expected.yaml +++ b/src/test/resources/example/tca-policy-req/blueprint-expected.yaml @@ -30,7 +30,7 @@ node_templates: subscriberMessageLimit: '-1', subscriberPollingInterval: '20000', subscriberProtocol: https, subscriberTimeoutMS: '-1', subscriberTopicName: com.att.dcae.dmaap.mtnje2.DcaeTestVESSub, subscriberUserName: m00502@tca.af.dcae.att.com, subscriberUserPassword: Te5021abc, - tca_policy: '{"domain":"measurementsForVfScaling","metricsPerEventName":[{"eventName":"vFirewallBroadcastPackets","controlLoopSchemaType":"VNF","policyScope":"DCAE","policyName":"DCAE.Config_example_model01.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_1jy9to4","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta","thresholdValue":123,"direction":"GREATER_OR_EQUAL","severity":"MAJOR","closedLoopEventStatus":"ONSET"},{"closedLoopControlName":"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta","thresholdValue":123,"direction":"GREATER_OR_EQUAL","severity":"MAJOR","closedLoopEventStatus":"ONSET"}]}]}'} + tca_policy: '{"domain":"measurementsForVfScaling","metricsPerEventName":[{"eventName":"vFirewallBroadcastPackets","controlLoopSchemaType":"VNF","policyScope":"DCAE","policyName":"example_model01.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_1jy9to4","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta","thresholdValue":123,"direction":"GREATER_OR_EQUAL","severity":"MAJOR","closedLoopEventStatus":"ONSET"},{"closedLoopControlName":"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta","thresholdValue":123,"direction":"GREATER_OR_EQUAL","severity":"MAJOR","closedLoopEventStatus":"ONSET"}]}]}'} artifact_name: dcae-analytics-tca artifact_version: 1.0.0 connections: diff --git a/src/test/resources/example/tca-policy-req/tca-policy-expected.json b/src/test/resources/example/tca-policy-req/tca-policy-expected.json index 2ade75f1e..b71328dd9 100644 --- a/src/test/resources/example/tca-policy-req/tca-policy-expected.json +++ b/src/test/resources/example/tca-policy-req/tca-policy-expected.json @@ -6,7 +6,7 @@ "uuid": "test", "policyScope": "resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", "templateVersion": "OpenSource.version.1", - "policyName": "DCAE.Config_example_model01.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_1jy9to4", + "policyName": "example_model01.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_1jy9to4", "description": "MicroService vCPE Policy", "priority": "1", "riskType": "SampleRiskType", @@ -20,7 +20,7 @@ "eventName": "vFirewallBroadcastPackets", "controlLoopSchemaType": "VNF", "policyScope": "DCAE", - "policyName": "DCAE.Config_example_model01.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_1jy9to4", + "policyName": "example_model01.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_1jy9to4", "policyVersion": "v0.0.1", "thresholds": [ { -- cgit 1.2.3-korg From 34400eeebc299cbf8e4335a7bee937753554bed5 Mon Sep 17 00:00:00 2001 From: "Determe, Sebastien (sd378r)" Date: Thu, 16 Nov 2017 13:22:49 +0100 Subject: Rework CryptoUtils CryptoUtils now takes the key from a file located in the resource not in spring file Change-Id: I002978d292550e6173efb4324cbb977f35d7e753 Issue-ID: CLAMP-74 Signed-off-by: Determe, Sebastien (sd378r) --- .../config/EncodedPasswordBasicDataSource.java | 11 +-- .../java/org/onap/clamp/clds/util/CryptoUtils.java | 102 ++++++++++++--------- src/main/resources/application.properties | 5 +- .../resources/clds/clds-policy-config.properties | 4 +- src/main/resources/clds/clds-reference.properties | 7 +- src/main/resources/clds/key.properties | 1 + .../org/onap/clamp/clds/it/CryptoUtilsItCase.java | 76 --------------- .../org/onap/clamp/clds/util/CryptoUtilsTest.java | 80 ++++++++++++++++ .../resources/application-no-camunda.properties | 6 +- src/test/resources/clds/clds-reference.properties | 3 +- src/test/resources/clds/key.properties | 1 + src/test/resources/https/https-test.properties | 5 +- 12 files changed, 161 insertions(+), 140 deletions(-) create mode 100644 src/main/resources/clds/key.properties delete mode 100644 src/test/java/org/onap/clamp/clds/it/CryptoUtilsItCase.java create mode 100644 src/test/java/org/onap/clamp/clds/util/CryptoUtilsTest.java create mode 100644 src/test/resources/clds/key.properties (limited to 'src/test/resources/clds') diff --git a/src/main/java/org/onap/clamp/clds/config/EncodedPasswordBasicDataSource.java b/src/main/java/org/onap/clamp/clds/config/EncodedPasswordBasicDataSource.java index 3862a5ace..453689bea 100644 --- a/src/main/java/org/onap/clamp/clds/config/EncodedPasswordBasicDataSource.java +++ b/src/main/java/org/onap/clamp/clds/config/EncodedPasswordBasicDataSource.java @@ -28,25 +28,20 @@ import com.att.eelf.configuration.EELFManager; import java.security.GeneralSecurityException; +import org.apache.commons.codec.DecoderException; import org.apache.commons.dbcp.BasicDataSource; import org.onap.clamp.clds.util.CryptoUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.DependsOn; -import org.springframework.stereotype.Component; /** * This class is an extension of the standard datasource, it will be used to * decode the encoded password defined in the application.properties. * */ -@Component("EncodedPasswordBasicDataSource") -@DependsOn(value = { "CryptoUtils" }) public class EncodedPasswordBasicDataSource extends BasicDataSource { protected static final EELFLogger logger = EELFManager.getInstance() .getLogger(EncodedPasswordBasicDataSource.class); protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); - @Autowired - private CryptoUtils cryptoUtils; + private CryptoUtils cryptoUtils = new CryptoUtils(); /** * The default constructor calling the parent one. @@ -64,6 +59,8 @@ public class EncodedPasswordBasicDataSource extends BasicDataSource { this.password = cryptoUtils.decrypt(encodedPassword); } catch (GeneralSecurityException e) { logger.error("Unable to decrypt the DB password", e); + } catch (DecoderException e) { + logger.error("Exception caught when decoding the HEX String Key for encryption", e); } } } \ No newline at end of file diff --git a/src/main/java/org/onap/clamp/clds/util/CryptoUtils.java b/src/main/java/org/onap/clamp/clds/util/CryptoUtils.java index 4b72c6fdd..8dbdc77d3 100644 --- a/src/main/java/org/onap/clamp/clds/util/CryptoUtils.java +++ b/src/main/java/org/onap/clamp/clds/util/CryptoUtils.java @@ -23,26 +23,54 @@ package org.onap.clamp.clds.util; +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; + +import java.io.IOException; +import java.io.UnsupportedEncodingException; import java.security.GeneralSecurityException; +import java.security.SecureRandom; +import java.util.Properties; import javax.crypto.Cipher; +import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; -import org.springframework.core.Ordered; -import org.springframework.core.annotation.Order; -import org.springframework.stereotype.Component; +import org.apache.commons.codec.DecoderException; +import org.apache.commons.codec.binary.Hex; +import org.apache.commons.lang3.ArrayUtils; /** * CryptoUtils for encrypting/decrypting string based on a Key defined in * application.properties (Spring config file). * */ -@Component("CryptoUtils") -@Order(Ordered.HIGHEST_PRECEDENCE) public final class CryptoUtils { - public static final String AES = "AES"; - public static final String KEY_PARAM = "org.onap.clamp.encryption.aes.key"; - private SecretKeySpec secretKeySpec = getSecretKeySpec("aa3871669d893c7fb8abbcda31b88b4f"); + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CryptoUtils.class); + // Openssl commands: + // Encrypt: echo -n "123456" | openssl aes-128-cbc -e -K + // -iv <16 Hex Bytes iv> | xxd -u -g100 + // Final result is to put in properties file is: IV + Outcome of openssl + // command + // ************************************************************ + // Decrypt: echo -n 'Encrypted string' | xxd -r -ps | openssl aes-128-cbc -d + // -K + // -iv <16 Bytes IV extracted from Encrypted String> + private static final String ALGORITHM = "AES"; + private static final String ALGORYTHM_DETAILS = ALGORITHM + "/CBC/PKCS5PADDING"; + private static final int BLOCK_SIZE = 128; + private static final String KEY_PARAM = "org.onap.clamp.encryption.aes.key"; + private static SecretKeySpec secretKeySpec = null; + private IvParameterSpec ivspec; + static { + Properties props = new Properties(); + try { + props.load(ResourceFileUtil.getResourceAsStream("clds/key.properties")); + secretKeySpec = getSecretKeySpec(props.getProperty(KEY_PARAM)); + } catch (IOException | DecoderException e) { + logger.error("Exception occurred during the key reading", e); + } + } /** * Encrypt a value based on the Clamp Encryption Key. @@ -51,16 +79,21 @@ public final class CryptoUtils { * @return The encrypted string * @throws GeneralSecurityException * In case of issue with the encryption + * @throws UnsupportedEncodingException + * In case of issue with the charset conversion */ - public String encrypt(String value) throws GeneralSecurityException { - Cipher cipher = Cipher.getInstance(CryptoUtils.AES); - cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, cipher.getParameters()); - byte[] encrypted = cipher.doFinal(value.getBytes()); - return byteArrayToHexString(encrypted); + public String encrypt(String value) throws GeneralSecurityException, UnsupportedEncodingException { + Cipher cipher = Cipher.getInstance(CryptoUtils.ALGORYTHM_DETAILS, "SunJCE"); + SecureRandom r = SecureRandom.getInstance("SHA1PRNG"); + byte[] iv = new byte[BLOCK_SIZE / 8]; + r.nextBytes(iv); + ivspec = new IvParameterSpec(iv); + cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivspec); + return Hex.encodeHexString(ArrayUtils.addAll(iv, cipher.doFinal(value.getBytes("UTF-8")))); } /** - * Decrypt a value. + * Decrypt a value based on the Clamp Encryption Key * * @param message * The encrypted string that must be decrypted using the Clamp @@ -68,38 +101,21 @@ public final class CryptoUtils { * @return The String decrypted * @throws GeneralSecurityException * In case of issue with the encryption + * @throws DecoderException + * In case of issue to decode the HexString */ - public String decrypt(String message) throws GeneralSecurityException { - Cipher cipher = Cipher.getInstance(CryptoUtils.AES); - cipher.init(Cipher.DECRYPT_MODE, secretKeySpec); - byte[] decrypted = cipher.doFinal(hexStringToByteArray(message)); + public String decrypt(String message) throws GeneralSecurityException, DecoderException { + byte[] encryptedMessage = Hex.decodeHex(message.toCharArray()); + Cipher cipher = Cipher.getInstance(CryptoUtils.ALGORYTHM_DETAILS, "SunJCE"); + ivspec = new IvParameterSpec(ArrayUtils.subarray(encryptedMessage, 0, BLOCK_SIZE / 8)); + byte[] realData = ArrayUtils.subarray(encryptedMessage, BLOCK_SIZE / 8, encryptedMessage.length); + cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, ivspec); + byte[] decrypted = cipher.doFinal(realData); return new String(decrypted); } - private SecretKeySpec getSecretKeySpec(String keyString) { - byte[] key = hexStringToByteArray(keyString); - return new SecretKeySpec(key, CryptoUtils.AES); - } - - private String byteArrayToHexString(byte[] b) { - StringBuilder sb = new StringBuilder(b.length * 2); - for (int i = 0; i < b.length; i++) { - int v = b[i] & 0xff; - if (v < 16) { - sb.append('0'); - } - sb.append(Integer.toHexString(v)); - } - return sb.toString().toUpperCase(); - } - - private byte[] hexStringToByteArray(String s) { - byte[] b = new byte[s.length() / 2]; - for (int i = 0; i < b.length; i++) { - int index = i * 2; - int v = Integer.parseInt(s.substring(index, index + 2), 16); - b[i] = (byte) v; - } - return b; + private static SecretKeySpec getSecretKeySpec(String keyString) throws DecoderException { + byte[] key = Hex.decodeHex(keyString.toCharArray()); + return new SecretKeySpec(key, CryptoUtils.ALGORITHM); } } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 8155cb2b2..321d88e17 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -96,7 +96,7 @@ kubernetes.namespace=com-att-ajsc spring.datasource.camunda.driverClassName=org.mariadb.jdbc.Driver spring.datasource.camunda.url=jdbc:mariadb:sequential://localhost:${docker.mariadb.port.host}/camundabpm?autoReconnect=true&retriesAllDown=2147483647&failoverLoopRetries=2147483647 spring.datasource.camunda.username=camunda -spring.datasource.camunda.password=D75B89195FD913848EA11416F755390E +spring.datasource.camunda.password=e1bb2a8381d1aa6c09879bd627db3bb560ad29e8a3343fe6aa7e6a7ba622da4e spring.datasource.camunda.validationQuery=SELECT 1 spring.datasource.camunda.validationQueryTimeout=20000 spring.datasource.camunda.validationInterval=30000 @@ -117,7 +117,7 @@ camunda.bpm.database.schema-update=false spring.datasource.cldsdb.driverClassName=org.mariadb.jdbc.Driver spring.datasource.cldsdb.url=jdbc:mariadb:sequential://localhost:${docker.mariadb.port.host}/cldsdb4?autoReconnect=true&retriesAllDown=2147483647&failoverLoopRetries=2147483647 spring.datasource.cldsdb.username=clds -spring.datasource.cldsdb.password=035F8819FEBB754F3C99ECCCC1259850 +spring.datasource.cldsdb.password=4c90a0b48204383f4283448d23e0b885a47237b2a23588e7c4651604f51c1067 spring.datasource.cldsdb.validationQuery=SELECT 1 spring.datasource.cldsdb.validationQueryTimeout=20000 spring.datasource.cldsdb.validationInterval=30000 @@ -144,7 +144,6 @@ org.onap.clamp.config.files.cldsReference=classpath:/clds/clds-reference.propert org.onap.clamp.config.files.cldsPolicyConfig=classpath:/clds/clds-policy-config.properties org.onap.clamp.config.files.cldsUsers=classpath:/clds/clds-users.json org.onap.clamp.config.files.globalClds=classpath:/clds/globalClds.properties -org.onap.clamp.encryption.aes.key=aa3871669d893c7fb8abbcda31b88b4f #Define user permission related parameters, the permission type can be changed but MUST be redefined in clds-users.properties in that case ! CLDS_PERMISSION_TYPE_CL=permission-type-cl diff --git a/src/main/resources/clds/clds-policy-config.properties b/src/main/resources/clds/clds-policy-config.properties index b812ffa70..54b927727 100644 --- a/src/main/resources/clds/clds-policy-config.properties +++ b/src/main/resources/clds/clds-policy-config.properties @@ -20,6 +20,7 @@ # =================================================================== # ECOMP is a trademark and service mark of AT&T Intellectual Property. ### + # Configuration Settings for Policy Engine Components PDP_URL1=http://vm1.policy.simpledemo.onap.org:8081/pdp/ , testpdp, alpha123 PDP_URL2=http://vm1.policy.simpledemo.onap.org:8081/pdp/ , testpdp, alpha123 @@ -28,7 +29,8 @@ NOTIFICATION_UEB_SERVERS=localhost NOTIFICATION_TOPIC= CLIENT_ID=myclientid # base64 encoding -CLIENT_KEY=ChlakDuk +#CLIENT_KEY=ChlakDuk +CLIENT_KEY=5CE79532B3A2CB4D132FC0C04BF916A7 #DEVL for development #TEST for Test environments #PROD for prod environments diff --git a/src/main/resources/clds/clds-reference.properties b/src/main/resources/clds/clds-reference.properties index 72308a94a..a8382cb0a 100644 --- a/src/main/resources/clds/clds-reference.properties +++ b/src/main/resources/clds/clds-reference.properties @@ -81,14 +81,14 @@ sdc.catalog.url=http://sdc.api.simpledemo.onap.org:8080/sdc/v1/catalog/ sdc.hostUrl=http://sdc.api.simpledemo.onap.org:8080 sdc.serviceUrl=http://sdc.api.simpledemo.onap.org:8080/sdc/v1/catalog/services sdc.serviceUsername=test -sdc.servicePassword=A7CADD84A22398C980847A54D23E24E9 +sdc.servicePassword=aa2871669d793c7fb7abbcda31b88b4c29bf2982755b25f08f8d0130539c11b0 sdc.artifactLabel=blueprintclampcockpit sdc.sdcX-InstanceID=CLAMP sdc.artifactType=DCAE_INVENTORY_BLUEPRINT sdc.locationArtifactLabel=locationclampcockpit sdc.locationArtifactType=DCAE_INVENTORY_JSON sdc.InstanceID=X-ECOMP-InstanceID -# +sdc.header.requestId = X-ECOMP-RequestID # # ui.location.default={"DC1":"Data Center 1","DC2":"Data Center 2","DC3":"Data Center 3"} @@ -104,5 +104,6 @@ CLDS_SERVICE_CACHE_MAX_SECONDS=30 DCAE_INVENTORY_URL = https://dcae.api.simpledemo.onap.org:8080 #DCAE Dispatcher Url Properties -DCAE_DISPATCHER_URL = https://dcae.api.simpledemo.onap.org:8443 +DCAE_DISPATCHER_URL = https://dcae.api.simpledemo.onap.org:8443 +dcae.header.requestId = "X-ECOMP-RequestID" diff --git a/src/main/resources/clds/key.properties b/src/main/resources/clds/key.properties new file mode 100644 index 000000000..dda811040 --- /dev/null +++ b/src/main/resources/clds/key.properties @@ -0,0 +1 @@ +org.onap.clamp.encryption.aes.key=aa3871669d893c7fb8abbcda31b88b4f \ No newline at end of file diff --git a/src/test/java/org/onap/clamp/clds/it/CryptoUtilsItCase.java b/src/test/java/org/onap/clamp/clds/it/CryptoUtilsItCase.java deleted file mode 100644 index f03fe83c7..000000000 --- a/src/test/java/org/onap/clamp/clds/it/CryptoUtilsItCase.java +++ /dev/null @@ -1,76 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2017 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============================================ - * =================================================================== - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - */ - -package org.onap.clamp.clds.it; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.security.GeneralSecurityException; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.onap.clamp.clds.util.CryptoUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.TestPropertySource; -import org.springframework.test.context.junit4.SpringRunner; - -/** - * Test Crypto Utils with Spring. - */ -@RunWith(SpringRunner.class) -@SpringBootTest -@TestPropertySource(locations = "classpath:application-no-camunda.properties") -public class CryptoUtilsItCase { - @Autowired - private CryptoUtils cryptoUtils; - - /** - * This method tests encryption. - * - * @throws GeneralSecurityException - */ - @Test - public final void testEncryption() throws GeneralSecurityException { - final String testData = "This is a test string"; - final String encodedStringExpected = "A5CB112C9F608A220B35AFED08024D98B9653333AF4C9527C2E934DE473F6145"; - String encodedString = cryptoUtils.encrypt(testData); - assertNotNull(encodedString); - assertEquals(encodedStringExpected, encodedString); - } - - /** - * This method tests decryption. - * - * @throws GeneralSecurityException - */ - @Test - public final void testDecryption() throws GeneralSecurityException { - final String decodedStringExpected = "This is a test string"; - final String encodedString = "A5CB112C9F608A220B35AFED08024D98B9653333AF4C9527C2E934DE473F6145"; - String decryptedString = cryptoUtils.decrypt(encodedString); - assertNotNull(decryptedString); - assertEquals(decodedStringExpected, decryptedString); - } -} \ No newline at end of file diff --git a/src/test/java/org/onap/clamp/clds/util/CryptoUtilsTest.java b/src/test/java/org/onap/clamp/clds/util/CryptoUtilsTest.java new file mode 100644 index 000000000..6fe447556 --- /dev/null +++ b/src/test/java/org/onap/clamp/clds/util/CryptoUtilsTest.java @@ -0,0 +1,80 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2017 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.util; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; +import static org.junit.Assert.assertNotNull; + +import java.io.UnsupportedEncodingException; +import java.security.GeneralSecurityException; + +import org.apache.commons.codec.DecoderException; +import org.apache.commons.codec.binary.Hex; +import org.apache.commons.lang3.ArrayUtils; +import org.junit.Test; + +/** + * Test Crypto Utils with Spring. + */ +public class CryptoUtilsTest { + private CryptoUtils cryptoUtils = new CryptoUtils(); + final String data = "This is a test string"; + + /** + * This method tests encryption. + * + * @throws GeneralSecurityException + * @throws DecoderException + * @throws UnsupportedEncodingException + */ + @Test + public final void testEncryption() throws GeneralSecurityException, DecoderException, UnsupportedEncodingException { + String encodedString = cryptoUtils.encrypt(data); + assertNotNull(encodedString); + assertEquals(data, cryptoUtils.decrypt(encodedString)); + } + + /** + * This method tests encryption. + * + * @throws GeneralSecurityException + * @throws DecoderException + * @throws UnsupportedEncodingException + */ + @Test + public final void testEncryptedStringIsDifferent() + throws GeneralSecurityException, DecoderException, UnsupportedEncodingException { + String encodedString1 = cryptoUtils.encrypt(data); + String encodedString2 = cryptoUtils.encrypt(data); + byte[] encryptedMessage1 = Hex.decodeHex(encodedString1.toCharArray()); + byte[] encryptedMessage2 = Hex.decodeHex(encodedString2.toCharArray()); + assertNotNull(encryptedMessage1); + assertNotNull(encryptedMessage2); + assertNotEquals(encryptedMessage1, encryptedMessage2); + byte[] subData1 = ArrayUtils.subarray(encryptedMessage1, 16, encryptedMessage1.length); + byte[] subData2 = ArrayUtils.subarray(encryptedMessage2, 16, encryptedMessage2.length); + assertNotEquals(subData1, subData2); + } +} \ No newline at end of file diff --git a/src/test/resources/application-no-camunda.properties b/src/test/resources/application-no-camunda.properties index f8727946d..ece42484e 100644 --- a/src/test/resources/application-no-camunda.properties +++ b/src/test/resources/application-no-camunda.properties @@ -97,7 +97,7 @@ kubernetes.namespace=com-att-ajsc spring.datasource.camunda.driverClassName=org.mariadb.jdbc.Driver spring.datasource.camunda.url=jdbc:mariadb:sequential://localhost:${docker.mariadb.port.host}/camundabpm?autoReconnect=true&retriesAllDown=2147483647&failoverLoopRetries=2147483647 spring.datasource.camunda.username=camunda -spring.datasource.camunda.password=D75B89195FD913848EA11416F755390E +spring.datasource.camunda.password=e1bb2a8381d1aa6c09879bd627db3bb560ad29e8a3343fe6aa7e6a7ba622da4e spring.datasource.camunda.validationQuery=SELECT 1 spring.datasource.camunda.validationQueryTimeout=20000 spring.datasource.camunda.validationInterval=30000 @@ -122,7 +122,7 @@ camunda.bpm.metrics.enabled=false spring.datasource.cldsdb.driverClassName=org.mariadb.jdbc.Driver spring.datasource.cldsdb.url=jdbc:mariadb:sequential://localhost:${docker.mariadb.port.host}/cldsdb4?autoReconnect=true&retriesAllDown=2147483647&failoverLoopRetries=2147483647 spring.datasource.cldsdb.username=clds -spring.datasource.cldsdb.password=035F8819FEBB754F3C99ECCCC1259850 +spring.datasource.cldsdb.password=4c90a0b48204383f4283448d23e0b885a47237b2a23588e7c4651604f51c1067 spring.datasource.cldsdb.validationQuery=SELECT 1 spring.datasource.cldsdb.validationQueryTimeout=20000 spring.datasource.cldsdb.validationInterval=30000 @@ -149,7 +149,7 @@ org.onap.clamp.config.files.cldsReference=classpath:/clds/clds-reference.propert org.onap.clamp.config.files.cldsPolicyConfig=classpath:/clds/clds-policy-config.properties org.onap.clamp.config.files.cldsUsers=classpath:/clds/clds-users.json org.onap.clamp.config.files.globalClds=classpath:/clds/globalClds.properties -org.onap.clamp.encryption.aes.key=aa3871669d893c7fb8abbcda31b88b4f + #Define user permission related parameters, the permission type can be changed but MUST be redefined in clds-users.properties in that case ! CLDS_PERMISSION_TYPE_CL=permission-type-cl diff --git a/src/test/resources/clds/clds-reference.properties b/src/test/resources/clds/clds-reference.properties index 0657fe7ba..83f7351a6 100644 --- a/src/test/resources/clds/clds-reference.properties +++ b/src/test/resources/clds/clds-reference.properties @@ -81,13 +81,14 @@ sdc.catalog.url=http://127.0.0.1:8080/sdc/v1/catalog/ sdc.hostUrl=http://127.0.0.1:8080 sdc.serviceUrl=http://127.0.0.1:8080/sdc/v1/catalog/services sdc.serviceUsername=test -sdc.servicePassword=123456 +sdc.servicePassword=aa2871669d793c7fb7abbcda31b88b4c29bf2982755b25f08f8d0130539c11b0 sdc.artifactLabel=blueprintclampcockpit sdc.sdcX-InstanceID=CLAMP sdc.artifactType=DCAE_INVENTORY_BLUEPRINT sdc.locationArtifactLabel=LocationClampCockpit sdc.locationArtifactType=DCAE_INVENTORY_JSON sdc.InstanceID=X-ONAP-InstanceID +sdc.header.requestId = X-ECOMP-RequestID # # # diff --git a/src/test/resources/clds/key.properties b/src/test/resources/clds/key.properties new file mode 100644 index 000000000..dda811040 --- /dev/null +++ b/src/test/resources/clds/key.properties @@ -0,0 +1 @@ +org.onap.clamp.encryption.aes.key=aa3871669d893c7fb8abbcda31b88b4f \ No newline at end of file diff --git a/src/test/resources/https/https-test.properties b/src/test/resources/https/https-test.properties index 58345d06a..bd84242ef 100644 --- a/src/test/resources/https/https-test.properties +++ b/src/test/resources/https/https-test.properties @@ -96,7 +96,7 @@ kubernetes.namespace=com-att-ajsc spring.datasource.camunda.driverClassName=org.mariadb.jdbc.Driver spring.datasource.camunda.url=jdbc:mariadb:sequential://localhost:${docker.mariadb.port.host}/camundabpm?autoReconnect=true&retriesAllDown=2147483647&failoverLoopRetries=2147483647 spring.datasource.camunda.username=camunda -spring.datasource.camunda.password=D75B89195FD913848EA11416F755390E +spring.datasource.camunda.password=e1bb2a8381d1aa6c09879bd627db3bb560ad29e8a3343fe6aa7e6a7ba622da4e spring.datasource.camunda.validationQuery=SELECT 1 spring.datasource.camunda.validationQueryTimeout=20000 spring.datasource.camunda.validationInterval=30000 @@ -122,7 +122,7 @@ camunda.bpm.metrics.enabled=false spring.datasource.cldsdb.driverClassName=org.mariadb.jdbc.Driver spring.datasource.cldsdb.url=jdbc:mariadb:sequential://localhost:${docker.mariadb.port.host}/cldsdb4?autoReconnect=true&retriesAllDown=2147483647&failoverLoopRetries=2147483647 spring.datasource.cldsdb.username=clds -spring.datasource.cldsdb.password=035F8819FEBB754F3C99ECCCC1259850 +spring.datasource.cldsdb.password=4c90a0b48204383f4283448d23e0b885a47237b2a23588e7c4651604f51c1067 spring.datasource.cldsdb.validationQuery=SELECT 1 spring.datasource.cldsdb.validationQueryTimeout=20000 spring.datasource.cldsdb.validationInterval=30000 @@ -149,7 +149,6 @@ org.onap.clamp.config.files.cldsReference=classpath:/clds/clds-reference.propert org.onap.clamp.config.files.cldsPolicyConfig=classpath:/clds/clds-policy-config.properties org.onap.clamp.config.files.cldsUsers=classpath:/clds/clds-users.json org.onap.clamp.config.files.globalClds=classpath:/clds/globalClds.properties -org.onap.clamp.encryption.aes.key=aa3871669d893c7fb8abbcda31b88b4f #Define user permission related parameters, the permission type can be changed but MUST be redefined in clds-users.properties in that case ! CLDS_PERMISSION_TYPE_CL=permission-type-cl -- cgit 1.2.3-korg From b315e03572a752c3f12cd4b97d2e05f2bdbc1ec5 Mon Sep 17 00:00:00 2001 From: "Determe, Sebastien (sd378r)" Date: Thu, 16 Nov 2017 13:31:39 +0100 Subject: Rework the cldsUser Reformat the JSON files and update the code in CldsUser Change-Id: If82e5e21695189532d7352912db4d4a7be504852 Issue-ID: CLAMP-74 Signed-off-by: Determe, Sebastien (sd378r) --- .../java/org/onap/clamp/clds/service/CldsUser.java | 9 ++-- .../clds/clds-users-incomplete-permissions.json | 26 +++++------ .../resources/clds/clds-users-no-permission.json | 14 +++--- src/test/resources/clds/clds-users-two-users.json | 52 +++++++++++----------- 4 files changed, 47 insertions(+), 54 deletions(-) (limited to 'src/test/resources/clds') diff --git a/src/main/java/org/onap/clamp/clds/service/CldsUser.java b/src/main/java/org/onap/clamp/clds/service/CldsUser.java index 34a3f8ea2..db8a24f31 100644 --- a/src/main/java/org/onap/clamp/clds/service/CldsUser.java +++ b/src/main/java/org/onap/clamp/clds/service/CldsUser.java @@ -26,11 +26,8 @@ package org.onap.clamp.clds.service; import java.util.Arrays; public class CldsUser { - private String user; - private String password; - private SecureServicePermission[] permissions; /** @@ -67,7 +64,7 @@ public class CldsUser { * @return the permissions */ public SecureServicePermission[] getPermissions() { - return permissions; + return Arrays.copyOf(permissions, permissions.length); } public String[] getPermissionsString() { @@ -78,7 +75,7 @@ public class CldsUser { * @param permissions * the permissions to set */ - public void setPermissions(SecureServicePermission[] permissions) { - this.permissions = permissions; + public void setPermissions(SecureServicePermission[] permissionsArray) { + this.permissions = Arrays.copyOf(permissionsArray, permissionsArray.length); } } diff --git a/src/test/resources/clds/clds-users-incomplete-permissions.json b/src/test/resources/clds/clds-users-incomplete-permissions.json index a642511cd..9e3534ff4 100644 --- a/src/test/resources/clds/clds-users-incomplete-permissions.json +++ b/src/test/resources/clds/clds-users-incomplete-permissions.json @@ -1,14 +1,14 @@ - [{ - "user":"admin1", - "password":"5f4dcc3b5aa765d61d8327deb882cf99", - "permissions": - [ - "permission-type-cl|dev|", - "permission-type-cl|dev", - "permission-type-cl-manage|dev|*", - "permission-type-filter-vf|dev|*", - "permission-type-template|dev|read", - "permission-type-template|dev|update" - ] +[ + { + "user": "admin1", + "password": "5f4dcc3b5aa765d61d8327deb882cf99", + "permissions": [ + "permission-type-cl|dev|", + "permission-type-cl|dev", + "permission-type-cl-manage|dev|*", + "permission-type-filter-vf|dev|*", + "permission-type-template|dev|read", + "permission-type-template|dev|update" + ] } -] \ No newline at end of file +] diff --git a/src/test/resources/clds/clds-users-no-permission.json b/src/test/resources/clds/clds-users-no-permission.json index 77f16c38c..ac91540f2 100644 --- a/src/test/resources/clds/clds-users-no-permission.json +++ b/src/test/resources/clds/clds-users-no-permission.json @@ -1,9 +1,7 @@ - [{ - "user":"admin1", - "permissions": - [ - - ] +[ + { + "user": "admin1", + "permissions": [ + ] } - -] \ No newline at end of file +] diff --git a/src/test/resources/clds/clds-users-two-users.json b/src/test/resources/clds/clds-users-two-users.json index 8c8d7278a..b3721946a 100644 --- a/src/test/resources/clds/clds-users-two-users.json +++ b/src/test/resources/clds/clds-users-two-users.json @@ -1,28 +1,26 @@ - [{ - "user":"admin1", - "password":"5f4dcc3b5aa765d61d8327deb882cf99", - "permissions": - [ - "permission-type-cl|dev|read", - "permission-type-cl|dev|update", - "permission-type-cl-manage|dev|*", - "permission-type-filter-vf|dev|*", - "permission-type-template|dev|read", - "permission-type-template|dev|update" - ] +[ + { + "user": "admin1", + "password": "5f4dcc3b5aa765d61d8327deb882cf99", + "permissions": [ + "permission-type-cl|dev|read", + "permission-type-cl|dev|update", + "permission-type-cl-manage|dev|*", + "permission-type-filter-vf|dev|*", + "permission-type-template|dev|read", + "permission-type-template|dev|update" + ] + }, + { + "user": "admin2", + "password": "5f4dcc3b5aa765d61d8327deb882cf99", + "permissions": [ + "permission-type-cl|dev|read", + "permission-type-cl|dev|update", + "permission-type-cl-manage|dev|*", + "permission-type-filter-vf|dev|*", + "permission-type-template|dev|read", + "permission-type-template|dev|update" + ] } - , - {"user":"admin2", - "password":"5f4dcc3b5aa765d61d8327deb882cf99", - "permissions": - [ - "permission-type-cl|dev|read", - "permission-type-cl|dev|update", - "permission-type-cl-manage|dev|*", - "permission-type-filter-vf|dev|*", - "permission-type-template|dev|read", - "permission-type-template|dev|update" - ] - - } -] \ No newline at end of file +] -- cgit 1.2.3-korg From f73e0b1ff4282aca2e7cb186be7acb12d3ed446b Mon Sep 17 00:00:00 2001 From: "Determe, Sebastien (sd378r)" Date: Fri, 17 Nov 2017 12:08:32 +0100 Subject: Fix for Checkstyle Fix the checkstyle issues reported by the tool Change-Id: Ia330dcf6eead508b0c250d85617ea599c3ce42aa Issue-ID: CLAMP-74 Signed-off-by: Determe, Sebastien (sd378r) --- .../java/org/onap/clamp/clds/util/CryptoUtils.java | 24 ++++--- .../clamp/clds/config/CldsUserJsonDecoderTest.java | 23 ++++--- .../java/org/onap/clamp/clds/it/CldsDaoItCase.java | 2 +- .../org/onap/clamp/clds/it/CldsServiceItCase.java | 18 ++--- .../clds/it/DcaeHttpConnectionManagerItCase.java | 28 ++++---- .../clamp/clds/it/HolmesPolicyDelegateItCase.java | 10 +-- src/test/resources/clds/clds-reference.properties | 76 +++++++++++----------- 7 files changed, 92 insertions(+), 89 deletions(-) (limited to 'src/test/resources/clds') diff --git a/src/main/java/org/onap/clamp/clds/util/CryptoUtils.java b/src/main/java/org/onap/clamp/clds/util/CryptoUtils.java index 8dbdc77d3..efd72515a 100644 --- a/src/main/java/org/onap/clamp/clds/util/CryptoUtils.java +++ b/src/main/java/org/onap/clamp/clds/util/CryptoUtils.java @@ -46,7 +46,8 @@ import org.apache.commons.lang3.ArrayUtils; * */ public final class CryptoUtils { - protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CryptoUtils.class); + + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CryptoUtils.class); // Openssl commands: // Encrypt: echo -n "123456" | openssl aes-128-cbc -e -K // -iv <16 Hex Bytes iv> | xxd -u -g100 @@ -56,12 +57,14 @@ public final class CryptoUtils { // Decrypt: echo -n 'Encrypted string' | xxd -r -ps | openssl aes-128-cbc -d // -K // -iv <16 Bytes IV extracted from Encrypted String> - private static final String ALGORITHM = "AES"; - private static final String ALGORYTHM_DETAILS = ALGORITHM + "/CBC/PKCS5PADDING"; - private static final int BLOCK_SIZE = 128; - private static final String KEY_PARAM = "org.onap.clamp.encryption.aes.key"; - private static SecretKeySpec secretKeySpec = null; - private IvParameterSpec ivspec; + private static final String ALGORITHM = "AES"; + private static final String ALGORYTHM_DETAILS = ALGORITHM + "/CBC/PKCS5PADDING"; + private static final int BLOCK_SIZE = 128; + private static final String KEY_PARAM = "org.onap.clamp.encryption.aes.key"; + private static SecretKeySpec secretKeySpec = null; + private IvParameterSpec ivspec; + + // Static init static { Properties props = new Properties(); try { @@ -76,6 +79,7 @@ public final class CryptoUtils { * Encrypt a value based on the Clamp Encryption Key. * * @param value + * The value to encrypt * @return The encrypted string * @throws GeneralSecurityException * In case of issue with the encryption @@ -84,16 +88,16 @@ public final class CryptoUtils { */ public String encrypt(String value) throws GeneralSecurityException, UnsupportedEncodingException { Cipher cipher = Cipher.getInstance(CryptoUtils.ALGORYTHM_DETAILS, "SunJCE"); - SecureRandom r = SecureRandom.getInstance("SHA1PRNG"); + SecureRandom randomNumber = SecureRandom.getInstance("SHA1PRNG"); byte[] iv = new byte[BLOCK_SIZE / 8]; - r.nextBytes(iv); + randomNumber.nextBytes(iv); ivspec = new IvParameterSpec(iv); cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivspec); return Hex.encodeHexString(ArrayUtils.addAll(iv, cipher.doFinal(value.getBytes("UTF-8")))); } /** - * Decrypt a value based on the Clamp Encryption Key + * Decrypt a value based on the Clamp Encryption Key. * * @param message * The encrypted string that must be decrypted using the Clamp diff --git a/src/test/java/org/onap/clamp/clds/config/CldsUserJsonDecoderTest.java b/src/test/java/org/onap/clamp/clds/config/CldsUserJsonDecoderTest.java index 5f73ac161..999822c26 100644 --- a/src/test/java/org/onap/clamp/clds/config/CldsUserJsonDecoderTest.java +++ b/src/test/java/org/onap/clamp/clds/config/CldsUserJsonDecoderTest.java @@ -30,15 +30,20 @@ import org.junit.Test; import org.onap.clamp.clds.service.CldsUser; public class CldsUserJsonDecoderTest { - private String user1 = "admin1"; - private String user2 = "admin2"; - private String password = "5f4dcc3b5aa765d61d8327deb882cf99"; - private String[] normalPermissionsArray = { "permission-type-cl|dev|read", "permission-type-cl|dev|update", - "permission-type-cl-manage|dev|*", "permission-type-filter-vf|dev|*", "permission-type-template|dev|read", - "permission-type-template|dev|update" }; - private String[] incompletePermissionsArray = { "permission-type-cl|dev|*", "permission-type-cl|dev|*", - "permission-type-cl-manage|dev|*", "permission-type-filter-vf|dev|*", "permission-type-template|dev|read", - "permission-type-template|dev|update" }; + + private String user1 = "admin1"; + private String user2 = "admin2"; + private String password = "5f4dcc3b5aa765d61d8327deb882cf99"; + private String[] normalPermissionsArray = { + "permission-type-cl|dev|read", "permission-type-cl|dev|update", "permission-type-cl-manage|dev|*", + "permission-type-filter-vf|dev|*", "permission-type-template|dev|read", + "permission-type-template|dev|update" + }; + private String[] incompletePermissionsArray = { + "permission-type-cl|dev|*", "permission-type-cl|dev|*", "permission-type-cl-manage|dev|*", + "permission-type-filter-vf|dev|*", "permission-type-template|dev|read", + "permission-type-template|dev|update" + }; @Test public void testDecodingDoubleUsers() { diff --git a/src/test/java/org/onap/clamp/clds/it/CldsDaoItCase.java b/src/test/java/org/onap/clamp/clds/it/CldsDaoItCase.java index 78b240134..6373e1531 100644 --- a/src/test/java/org/onap/clamp/clds/it/CldsDaoItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/CldsDaoItCase.java @@ -75,7 +75,6 @@ public class CldsDaoItCase extends AbstractItCase { @Test public void testModelSave() throws IOException { String randomNameTemplate = RandomStringUtils.randomAlphanumeric(5); - String randomNameModel = RandomStringUtils.randomAlphanumeric(5); // Add the template first CldsTemplate newTemplate = new CldsTemplate(); newTemplate.setName(randomNameTemplate); @@ -89,6 +88,7 @@ public class CldsDaoItCase extends AbstractItCase { assertEquals(imageText, newTemplateRead.getImageText()); // Save the model CldsModel newModel = new CldsModel(); + String randomNameModel = RandomStringUtils.randomAlphanumeric(5); newModel.setName(randomNameModel); newModel.setBpmnText(bpmnText); newModel.setImageText(imageText); diff --git a/src/test/java/org/onap/clamp/clds/it/CldsServiceItCase.java b/src/test/java/org/onap/clamp/clds/it/CldsServiceItCase.java index f6e9abddf..0193613a6 100644 --- a/src/test/java/org/onap/clamp/clds/it/CldsServiceItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/CldsServiceItCase.java @@ -63,7 +63,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @TestPropertySource(locations = "classpath:application-no-camunda.properties") public class CldsServiceItCase extends AbstractItCase { @Autowired - CldsService cldsService; + CldsService cldsService; private String bpmnText; private String imageText; private String bpmnPropText; @@ -100,9 +100,9 @@ public class CldsServiceItCase extends AbstractItCase { @Test public void testCldsInfoAuthorized() throws Exception { SecurityContext securityContext = Mockito.mock(SecurityContext.class); - Principal p = Mockito.mock(Principal.class); - Mockito.when(p.getName()).thenReturn("admin"); - Mockito.when(securityContext.getUserPrincipal()).thenReturn(p); + Principal principal = Mockito.mock(Principal.class); + Mockito.when(principal.getName()).thenReturn("admin"); + Mockito.when(securityContext.getUserPrincipal()).thenReturn(principal); Mockito.when(securityContext.isUserInRole("permission-type-cl|dev|read")).thenReturn(true); Mockito.when(securityContext.isUserInRole("permission-type-cl|dev|update")).thenReturn(true); Mockito.when(securityContext.isUserInRole("permission-type-template|dev|read")).thenReturn(true); @@ -132,12 +132,10 @@ public class CldsServiceItCase extends AbstractItCase { @Test public void testPutModel() throws Exception { - String randomNameTemplate = RandomStringUtils.randomAlphanumeric(5); - String randomNameModel = RandomStringUtils.randomAlphanumeric(5); SecurityContext securityContext = Mockito.mock(SecurityContext.class); - Principal p = Mockito.mock(Principal.class); - Mockito.when(p.getName()).thenReturn("admin"); - Mockito.when(securityContext.getUserPrincipal()).thenReturn(p); + Principal principal = Mockito.mock(Principal.class); + Mockito.when(principal.getName()).thenReturn("admin"); + Mockito.when(securityContext.getUserPrincipal()).thenReturn(principal); Mockito.when(securityContext.isUserInRole("permission-type-cl|dev|read")).thenReturn(true); Mockito.when(securityContext.isUserInRole("permission-type-cl|dev|update")).thenReturn(true); Mockito.when(securityContext.isUserInRole("permission-type-template|dev|read")).thenReturn(true); @@ -145,6 +143,7 @@ public class CldsServiceItCase extends AbstractItCase { cldsService.setSecurityContext(securityContext); // Add the template first CldsTemplate newTemplate = new CldsTemplate(); + String randomNameTemplate = RandomStringUtils.randomAlphanumeric(5); newTemplate.setName(randomNameTemplate); newTemplate.setBpmnText(bpmnText); newTemplate.setImageText(imageText); @@ -166,6 +165,7 @@ public class CldsServiceItCase extends AbstractItCase { newModel.setDocText(newTemplate.getPropText()); newModel.setDocId(newTemplate.getPropId()); // Test the PutModel method + String randomNameModel = RandomStringUtils.randomAlphanumeric(5); cldsService.putModel(randomNameModel, newModel); // Verify whether it has been added properly or not assertNotNull(cldsDao.getModel(randomNameModel)); diff --git a/src/test/java/org/onap/clamp/clds/it/DcaeHttpConnectionManagerItCase.java b/src/test/java/org/onap/clamp/clds/it/DcaeHttpConnectionManagerItCase.java index cf9fa4e29..56de81d46 100644 --- a/src/test/java/org/onap/clamp/clds/it/DcaeHttpConnectionManagerItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/DcaeHttpConnectionManagerItCase.java @@ -60,25 +60,23 @@ import org.springframework.test.context.junit4.SpringRunner; @TestPropertySource(locations = "classpath:https/https-test.properties") public class DcaeHttpConnectionManagerItCase extends AbstractItCase { @Value("${server.port}") - private String httpsPort; + private String httpsPort; @Value("${server.http-to-https-redirection.port}") - private String httpPort; + private String httpPort; private static TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { - @Override - public java.security.cert.X509Certificate[] getAcceptedIssuers() { - return null; - } + @Override + public java.security.cert.X509Certificate[] getAcceptedIssuers() { + return null; + } - @Override - public void checkClientTrusted(X509Certificate[] arg0, String arg1) - throws CertificateException { - } + @Override + public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException { + } - @Override - public void checkServerTrusted(X509Certificate[] arg0, String arg1) - throws CertificateException { - } - } }; + @Override + public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException { + } + } }; private void enableSslNoCheck() throws NoSuchAlgorithmException, KeyManagementException { SSLContext sc = SSLContext.getInstance("SSL"); diff --git a/src/test/java/org/onap/clamp/clds/it/HolmesPolicyDelegateItCase.java b/src/test/java/org/onap/clamp/clds/it/HolmesPolicyDelegateItCase.java index b45c29719..62e04ede3 100644 --- a/src/test/java/org/onap/clamp/clds/it/HolmesPolicyDelegateItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/HolmesPolicyDelegateItCase.java @@ -24,7 +24,6 @@ package org.onap.clamp.clds.it; import static org.junit.Assert.assertTrue; -import static org.junit.Assert.assertNotNull; import java.io.IOException; @@ -46,17 +45,14 @@ import org.springframework.test.context.junit4.SpringRunner; @SpringBootTest @TestPropertySource(locations = "classpath:application-no-camunda.properties") public class HolmesPolicyDelegateItCase extends AbstractItCase { - @Test public void testCreatePolicyJson() throws IOException { String modelBpmnProp = ResourceFileUtil .getResourceAsString("example/model-properties/holmes/modelBpmnProperties.json"); String modelBpmn = ResourceFileUtil.getResourceAsString("example/model-properties/holmes/modelBpmn.json"); - - ModelProperties prop = new ModelProperties("example-model-name", "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf", null, true, modelBpmn, - modelBpmnProp); - - Holmes holmes = prop.getType(Holmes.class); + ModelProperties prop = new ModelProperties("example-model-name", + "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf", null, true, modelBpmn, modelBpmnProp); + Holmes holmes = prop.getType(Holmes.class); String result = HolmesPolicyDelegate.formatHolmesConfigBody(prop, holmes); assertTrue("ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf$$$blabla".equals(result)); } diff --git a/src/test/resources/clds/clds-reference.properties b/src/test/resources/clds/clds-reference.properties index 83f7351a6..92639d3f5 100644 --- a/src/test/resources/clds/clds-reference.properties +++ b/src/test/resources/clds/clds-reference.properties @@ -5,35 +5,26 @@ # Copyright (C) 2017 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. +# 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 +# +# 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============================================ # =================================================================== -# ECOMP is a trademark and service mark of AT&T Intellectual Property. +# ECOMP is a trademark and service mark of AT&T Intellectual Property. ### # # Poperties for CLDS # # -# -# TCA MicroService Policy request build properties -# -tca.policyid.prefix=DCAE.Config_ -tca.policy.template={"service": "tca_policy", "version": "1.0.0", "location": "SampleServiceLocation", "configName": "SampleConfigName", "uuid": "test", "policyScope": "resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", "templateVersion": "OpenSource.version.1", "policyName": "MicroServicevCPE", "description": "MicroService Policy", "priority": "1", "riskType": "SampleRiskType", "riskLevel": "1", "guard": "False","content":{"tca_policy": {}}} -tca.template= {"domain": "measurementsForVfScaling", "metricsPerEventName": [{"eventName": "???", "controlLoopSchemaType":"VNF","policyScope": "DCAE","policyName": "???","policyVersion": "v0.0.1","thresholds": []}]} -tca.thresholds.template={"closedLoopControlName": "???", "version": "1.0.2","fieldPath": "?????", "thresholdValue": 0,"direction": "???","severity": "MAJOR", "closedLoopEventStatus": "???"} -# -# # DCAE request build properties # dcae.template={"properties":{"service_name":"","service_ids":[],"vnf_ids":[],"location_ids":[]},"template":{"tca":{"dcae":{"inputTopic":"","outputTopic":"","closedLoopControlName":"","closedLoopEventClient":"configuration.dcae.microservice.tca.xml","policyName":"","policyScope":"service=vSCP;resource=F5;type=configuration","policyVersion":"v0.0.1","serviceConfigurations":{}}}}} @@ -54,56 +45,65 @@ policy.ms.type=MicroService policy.ms.policyNamePrefix=Config_MS_ policy.op.type=BRMS_Param policy.op.policyNamePrefix=Config_BRMS_Param_ + +# TCA MicroService Policy request build properties +# +tca.policyid.prefix=DCAE.Config_ +tca.policy.template={"service": "tca_policy", "version": "1.0.0", "location": "SampleServiceLocation", "configName": "SampleConfigName", "uuid": "test", "policyScope": "resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", "templateVersion": "OpenSource.version.1", "policyName": "MicroServicevCPE", "description": "MicroService Policy", "priority": "1", "riskType": "SampleRiskType", "riskLevel": "1", "guard": "False","content":{"tca_policy": {}}} +tca.template= {"domain": "measurementsForVfScaling", "metricsPerEventName": [{"eventName": "???", "controlLoopSchemaType":"VNF","policyScope": "DCAE","policyName": "???","policyVersion": "v0.0.1","thresholds": []}]} +tca.thresholds.template={"closedLoopControlName": "???", "version": "1.0.2","fieldPath": "?????", "thresholdValue": 0,"direction": "???","severity": "MAJOR", "closedLoopEventStatus": "???"} + # # # Operational Policy request build properties # op.policyDescription=from clds # default -op.templateName=ClosedLoopGuardvUSP +op.templateName=ClosedLoopvUSP op.operationTopic=APPC-CL op.notificationTopic=POLICY-CL-MGT -op.controller=1610-vUSP +op.controller=amsterdam +op.policy.appc=APPC # by service: vSCP op.templateName.vSCP=ClosedLoopTemplate op.controller.vSCP=1607-f5fw -op.eNodeB.templateName=CLeNodeB +op.eNodeB.templateName=ClosedLoopControlName op.eNodeB.operationTopic=com.onap.sdnr.RanCLRequest-v00 op.eNodeB.notificationTopic=com.onap-policy.IST-ENODEB-CL -op.eNodeB.controller=ClosedLoop-eNodeB +op.eNodeB.controller=amsterdam op.eNodeB.recipe={"eNodeBRecipes":[{"Actor":"AOTS","Recipe":"checkENodeBTicketHours","ParentPolicy":"","PPConditions":"","Retry":"0","TimeLimit":"120"},{"Actor":"AOTS","Recipe":"checkEquipmentStatus","ParentPolicy":"checkENodeBTicketHours","PPConditions":"Success","Retry":"0","TimeLimit":"120"},{"Actor":"AOTS","Recipe":"checkEimStatus","ParentPolicy":"checkEquipmentStatus","PPConditions":"Success","Retry":"0","TimeLimit":"120"},{"Actor":"AOTS","Recipe":"checkMaintenanceWindow","ParentPolicy":"checkEimStatus","PPConditions":"Success","Retry":"0","TimeLimit":"120"},{"Actor":"SDNR","Recipe":"Reset","ParentPolicy":"checkMaintenanceWindow","PPConditions":"Success","Retry":"","TimeLimit":""}]} op.eNodeB.timeWindow=35 op.eNodeB.limit=2 op.eNodeB.period=10s # -# sdc service properties -sdc.catalog.url=http://127.0.0.1:8080/sdc/v1/catalog/ -sdc.hostUrl=http://127.0.0.1:8080 -sdc.serviceUrl=http://127.0.0.1:8080/sdc/v1/catalog/services +# Sdc service properties +sdc.catalog.url=http://sdc.api.simpledemo.onap.org:8080/sdc/v1/catalog/ +sdc.hostUrl=http://sdc.api.simpledemo.onap.org:8080 +sdc.serviceUrl=http://sdc.api.simpledemo.onap.org:8080/sdc/v1/catalog/services sdc.serviceUsername=test sdc.servicePassword=aa2871669d793c7fb7abbcda31b88b4c29bf2982755b25f08f8d0130539c11b0 sdc.artifactLabel=blueprintclampcockpit sdc.sdcX-InstanceID=CLAMP sdc.artifactType=DCAE_INVENTORY_BLUEPRINT -sdc.locationArtifactLabel=LocationClampCockpit +sdc.locationArtifactLabel=locationclampcockpit sdc.locationArtifactType=DCAE_INVENTORY_JSON -sdc.InstanceID=X-ONAP-InstanceID +sdc.InstanceID=X-ECOMP-InstanceID sdc.header.requestId = X-ECOMP-RequestID # # -# -ui.location.default={"SNDGCA64":"San Diego SAN3","ALPRGAED":"Alpharetta PDK1","LSLEILAA":"Lisle DPA3","MDTWNJC1":"FTL_C_location1","MDTWNJC2":"FTL_C_location2","MDTWNJ21":"FTL_L_location1","MDTWNJ22":"FTL_L_location2","RDM2WAGPLCP":"ISTFTL_location"} +ui.location.default={"DC1":"Data Center 1","DC2":"Data Center 2","DC3":"Data Center 3"} ui.alarm.default={"Reports a transient alarm condition when an incoming CDR cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming CDR cannot be decoded successfully","Reports a transient alarm condition when an incoming ACR message cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming ACR message cannot be decoded successfully","Reports a transient alarm condition when a CDR validation fails":"vCCF: Reports a transient alarm condition when a CDR validation fails","Reports a transient alarm condition when an incoming GTP' message cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming GTP' message cannot be decoded successfully","Reports a transient alarm condition when an incoming CDR file cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming CDR file cannot be decoded successfully","Reports a transient alarm condition when an incoming Sh/Dh file cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming Sh/Dh file cannot be decoded successfully","Reports a transient alarm condition when an incoming ACR message is in conflict with former ACR in one diameter session":"vCCF: Reports a transient alarm condition when an incoming ACR message is in conflict with former ACR in one diameter session","Reports a transient alarm condition when an outgoing Ro message send fails":"vCCF: Reports a transient alarm condition when an outgoing Ro message send fails","Reports a transient alarm condition when an outgoing GTP' message send fails":"vCCF: Reports a transient alarm condition when an outgoing GTP' message send fails","Reports a transient alarm condition when an outgoing Sh/Dh message send fails":"vCCF: Reports a transient alarm condition when an outgoing Sh/Dh message send fails","Reports an alarm when build or send Rf message fail":"vCCF: Reports an alarm when build or send Rf message fail","Reports a transient alarm condition when an abnormal incoming CCA message":"vCCF: Reports a transient alarm condition when an abnormal incoming CCA message","Reports a transient alarm condition when there is an abnormal incoming Sh/Dh message":"vCCF: Reports a transient alarm condition when there is an abnormal incoming Sh/Dh message","For Rf interface, if IeCCF receives a message with incorrect value for session id.":"vCCF: For Rf interface, if IeCCF receives a message with incorrect value for session id.","Reports an alarm when CPU usage exceeds the major threshold, the local database exceeds the critical threshold, or the ACR partition exceeds the major threshold":"vCCF: Reports an alarm when CPU usage exceeds the major threshold, the local database exceeds the critical threshold, or the ACR partition exceeds the major threshold","Reports an alarm when CPU usage exceeds the minor threshold, the local database exceeds the major threshold, or the ACR partition exceeds the minor threshold":"vCCF: Reports an alarm when CPU usage exceeds the minor threshold, the local database exceeds the major threshold, or the ACR partition exceeds the minor threshold","Reports an alarm when CPU usage exceeds the critical threshold, the local database exceeds the major threshold, or the CDR partition exceeds the critical threshold":"vCCF: Reports an alarm when CPU usage exceeds the critical threshold, the local database exceeds the major threshold, or the CDR partition exceeds the critical threshold","Reports an alarm when CPU usage exceeds the major threshold or CDR partition exceeds the major threshold":"vCCF: Reports an alarm when CPU usage exceeds the major threshold or CDR partition exceeds the major threshold","Reports an alarm when external DB usage exceeds the major threshold":"vCCF: Reports an alarm when external DB usage exceeds the major threshold","If IeCCF comes to the status \\"Stop processing ACR records in ACRDB\\".":"vCCF: If IeCCF comes to the status \\"Stop processing ACR records in ACRDB\\".","If IeCCF comes to the status \\"Flush ACR is invoked\\".":"vCCF: If IeCCF comes to the status \\"Flush ACR is invoked\\".","Reports a transient alarm condition when the workflow definition table is provisioned wrongly":"vCCF: Reports a transient alarm condition when the workflow definition table is provisioned wrongly","Reports a transient alarm condition when the Action Definition table is provisioned wrongly":"vCCF: Reports a transient alarm condition when the Action Definition table is provisioned wrongly","Reports a transient alarm condition when the Ro Host Configuration is provisioned wrongly":"vCCF: Reports a transient alarm condition when the Ro Host Configuration is provisioned wrongly","Reports a transient alarm condition when the Sh Host Configuration is provisioned wrongly":"vCCF: Reports a transient alarm condition when the Sh Host Configuration is provisioned wrongly","Reports a transient alarm condition when a specific dictionary or rule does not exist":"vCCF: Reports a transient alarm condition when a specific dictionary or rule does not exist","Reports a transient alarm condition when failure occurs when mapping Rf message to XDR":"vCCF: Reports a transient alarm condition when failure occurs when mapping Rf message to XDR","Reports a transient alarm condition when failure occurs in aggregating process":"vCCF: Reports a transient alarm condition when failure occurs in aggregating process","Reports a transient alarm condition when failure happens in correlating process":"vCCF: Reports a transient alarm condition when failure happens in correlating process","Reports a transient alarm condition when failure occurs in generating CDR":"vCCF: Reports a transient alarm condition when failure occurs in generating CDR","Reports a transient alarm condition when failure occurs in constructing CCR message from XDR":"vCCF: Reports a transient alarm condition when failure occurs in constructing CCR message from XDR","Reports a transient alarm condition when an ACR/XER/BER/INC record write to bad file":"vCCF: Reports a transient alarm condition when an ACR/XER/BER/INC record write to bad file","Reports an alarm condition when aggregation or correlation central database connection is lost":"vCCF: Reports an alarm condition when aggregation or correlation central database connection is lost","Reports an alarm condition when a specific failure happens in database operations":"vCCF: Reports an alarm condition when a specific failure happens in database operations","Reports an alarm condition when DB capacity has been consumed to critical threshold":"vCCF: Reports an alarm condition when DB capacity has been consumed to critical threshold","Reports an alarm condition when DB capacity has been consumed to major threshold":"vCCF: Reports an alarm condition when DB capacity has been consumed to major threshold","Reports an alarm condition when DB capacity has been consumed to minor threshold.":"vCCF: Reports an alarm condition when DB capacity has been consumed to minor threshold.","Reports an alarm condition when application cannot deliver CDR to CDRSCH subsystem":"vCCF: Reports an alarm condition when application cannot deliver CDR to CDRSCH subsystem","Reports an alarm condition when some fields of ACR file header have error value and this ACR file cannot be processed further":"vCCF: Reports an alarm condition when some fields of ACR file header have error value and this ACR file cannot be processed further","Reports an alarm condition when some fields of ACR file header have invalid value and this ACR file can be processed further":"vCCF: Reports an alarm condition when some fields of ACR file header have invalid value and this ACR file can be processed further","Reports an alarm condition when the ACR file loses some ACR records":"vCCF: Reports an alarm condition when the ACR file loses some ACR records","Reports an alarm condition when some fields of ACR record header have error value and this ACR record and the following ACR records cannot be processed further":"vCCF: Reports an alarm condition when some fields of ACR record header have error value and this ACR record and the following ACR records cannot be processed further","Reports an alarm condition when error occurs in processing CDR/ACR files":"vCCF: Reports an alarm condition when error occurs in processing CDR/ACR files","Reports an alarm condition when CDR partition has been consumed to critical threshold":"vCCF: Reports an alarm condition when CDR partition has been consumed to critical threshold","Reports an alarm condition when CDR partition has been consumed to major threshold.":"vCCF: Reports an alarm condition when CDR partition has been consumed to major threshold.","Reports an alarm condition when CDR partition has been consumed to minor threshold":"vCCF: Reports an alarm condition when CDR partition has been consumed to minor threshold","Reports an alarm condition when ACR partition has been consumed to critical threshold":"vCCF: Reports an alarm condition when ACR partition has been consumed to critical threshold","Reports an alarm condition when ACR partition has been consumed to major threshold":"vCCF: Reports an alarm condition when ACR partition has been consumed to major threshold","Reports an alarm condition when ACR partition has been consumed to minor threshold":"vCCF: Reports an alarm condition when ACR partition has been consumed to minor threshold","Reports an alarm condition when CPU consumption reaches critical threshold":"vCCF: Reports an alarm condition when CPU consumption reaches critical threshold","Reports an alarm condition when CPU consumption reaches major threshold":"vCCF: Reports an alarm condition when CPU consumption reaches major threshold","Reports an alarm condition when CPU consumption reaches minor threshold":"vCCF: Reports an alarm condition when CPU consumption reaches minor threshold","Service shall monitor * number of partial CDR * number of incompleted CDR * number of unacceptable CDR If any one exceeds a configurable threshold in a configrable interval.":"vCCF: Service shall monitor * number of partial CDR * number of incompleted CDR * number of unacceptable CDR If any one exceeds a configurable threshold in a configrable interval.","CDR size exceed the platform capacity.":"vCCF: CDR size exceed the platform capacity.","Service shall monitor number of ACR without AII AVP, If it exceeds a configurable threshold in a configurable interval.":"vCCF: Service shall monitor number of ACR without AII AVP, If it exceeds a configurable threshold in a configurable interval.","Service shall monitor CDR cut due to ECCF_ACRNUMBER_IN_DB, If it exceeds a configurable threshold in a configurable interval.":"vCCF: Service shall monitor CDR cut due to ECCF_ACRNUMBER_IN_DB, If it exceeds a configurable threshold in a configurable interval.","External Node of this Cluster is overload":"vCCF: External Node of this Cluster is overload","bdb_high_latency":"vCCF-vDB: bdb_high_latency","bdb_high_throughput":"vCCF-vDB: bdb_high_throughput","bdb_size":"vCCF-vDB: bdb_size","cluster_inconsistent_rl_sw":"vCCF-vDB: cluster_inconsistent_rl_sw","cluster_node_remove_abort_failed":"vCCF-vDB: cluster_node_remove_abort_failed","cluster_node_remove_failed":"vCCF-vDB: cluster_node_remove_failed","cluster_ram_overcommit":"vCCF-vDB: cluster_ram_overcommit","cluster_rebalance_failed":"vCCF-vDB: cluster_rebalance_failed","cluster_too_few_nodes_for_replication":"vCCF-vDB: cluster_too_few_nodes_for_replication","node_cpu_utilization":"vCCF-vDB: node_cpu_utilization","node_ephemeral_storage":"vCCF-vDB: node_ephemeral_storage","node_failed":"vCCF-vDB: node_failed","node_memory":"vCCF-vDB: node_memory","node_net_throughput":"vCCF-vDB: node_net_throughput","node_offline_failed":"vCCF-vDB: node_offline_failed","node_offline_abort_failed":"vCCF-vDB: node_offline_abort_failed","node_online_failed":"vCCF-vDB: node_online_failed","OAM NODE- IS NOT ACTIVE ":"vCCF-vDB: OAM NODE- IS NOT ACTIVE ","LSS_asdaCommunicationFailure":"vCTS: LSS_asdaCommunicationFailure","LSS_ccdbCommunicationFailure":"vCTS: LSS_ccdbCommunicationFailure","LSS_cpiCTS3xxFailRate":"vCTS: LSS_cpiCTS3xxFailRate","LSS_cpiCTS4xxFailRate":"vCTS: LSS_cpiCTS4xxFailRate","LSS_cpiCTS5xxFailRate":"vCTS: LSS_cpiCTS5xxFailRate","LSS_cpiCTS6xxFailRate":"vCTS: LSS_cpiCTS6xxFailRate","LSS_cpiCTSSIPRetransmitInvite":"vCTS: LSS_cpiCTSSIPRetransmitInvite","LSS_cpiCTSSIPRetransmitNonInvite":"vCTS: LSS_cpiCTSSIPRetransmitNonInvite","LSS_glsInvalidCellId":"vCTS: LSS_glsInvalidCellId","LSS_glsServerUnavailable":"vCTS: LSS_glsServerUnavailable","LSS_hlrSyncConnection":"vCTS: LSS_hlrSyncConnection","LSS_hlrSyncQueue":"vCTS: LSS_hlrSyncQueue","LSS_lispBufferFullExternalLIG":"vCTS: LSS_lispBufferFullExternalLIG","LSS_prdbConnectWithAlternateFailure":"vCTS: LSS_prdbConnectWithAlternateFailure","LSS_prdbSyncDataToAlternateFailure":"vCTS: LSS_prdbSyncDataToAlternateFailure","LSS_preAllocatedResourceOverload":"vCTS: LSS_preAllocatedResourceOverload","LSS_prifSocketError":"vCTS: LSS_prifSocketError","LSS_prsCallInstanceExceeded":"vCTS: LSS_prsCallInstanceExceeded","LSS_prsCpuOverload":"vCTS: LSS_prsCpuOverload","LSS_prsDatabaseMigrationFailure":"vCTS: LSS_prsDatabaseMigrationFailure","LSS_prsFailureToConnectWithPRDB":"vCTS: LSS_prsFailureToConnectWithPRDB","LSS_prsQueueExceeded":"vCTS: LSS_prsQueueExceeded","LSS_smdiSocketError":"vCTS: LSS_smdiSocketError","LSS_socketError":"vCTS: LSS_socketError","LSS_softwareComponentDown":"vCTS: LSS_softwareComponentDown","LSS_tlsInitError":"vCTS: LSS_tlsInitError","LSS_usageOfSyncTable":"vCTS: LSS_usageOfSyncTable","LSS_utHttpProxyConnectionDown ":"vCTS: LSS_utHttpProxyConnectionDown ","LSS_wpifSocketError":"vCTS: LSS_wpifSocketError","LSS_acrTemporaryBufferOverload":"vCTS: LSS_acrTemporaryBufferOverload","LSS_adnsExtendedTTLcaching":"vCTS: LSS_adnsExtendedTTLcaching","LSS_adnsQueryFailureCaching":"vCTS: LSS_adnsQueryFailureCaching","LSS_adnsQueueCongestion":"vCTS: LSS_adnsQueueCongestion","LSS_asdaRequestQueue":"vCTS: LSS_asdaRequestQueue","LSS_capacityLicenseKeyExpiration":"vCTS: LSS_capacityLicenseKeyExpiration","LSS_capacityLicenseKeyNearExpiration":"vCTS: LSS_capacityLicenseKeyNearExpiration","LSS_capacityLicenseKeyValidationError":"vCTS: LSS_capacityLicenseKeyValidationError","LSS_cardConnectionLost":"vCTS: LSS_cardConnectionLost","LSS_cpiAlrmCritical":"vCTS: LSS_cpiAlrmCritical","LSS_cpiAlrmMajor":"vCTS: LSS_cpiAlrmMajor","LSS_cpiAlrmMinor":"vCTS: LSS_cpiAlrmMinor","LSS_cpiAlrmWarning":"vCTS: LSS_cpiAlrmWarning","LSS_cpiAsrtEsc":"vCTS: LSS_cpiAsrtEsc","LSS_cpiAsrtNonEsc":"vCTS: LSS_cpiAsrtNonEsc","LSS_cpiAsrtNonEscCritical":"vCTS: LSS_cpiAsrtNonEscCritical","LSS_cpiAsrtNonEscMajor":"vCTS: LSS_cpiAsrtNonEscMajor","LSS_cpiAsrtNonEscMinor":"vCTS: LSS_cpiAsrtNonEscMinor","LSS_cpiAudErrCount":"vCTS: LSS_cpiAudErrCount","LSS_cpiAudManAct":"vCTS: LSS_cpiAudManAct","LSS_cpiAudNewEvent":"vCTS: LSS_cpiAudNewEvent","LSS_cpiCompleteRateAlarm":"vCTS: LSS_cpiCompleteRateAlarm","LSS_cpiDropMGAllocConnReq":"vCTS: LSS_cpiDropMGAllocConnReq","LSS_cpiDropRateAlarm":"vCTS: LSS_cpiDropRateAlarm","LSS_cpiExceptionService":"vCTS: LSS_cpiExceptionService","LSS_cpiFailRateAlarm":"vCTS: LSS_cpiFailRateAlarm","LSS_cpiFailSCTPFastRetransIncr":"vCTS: LSS_cpiFailSCTPFastRetransIncr","LSS_cpiFailSCTPFastRetransRate":"vCTS: LSS_cpiFailSCTPFastRetransRate","LSS_cpiFailSCTPSRTT1Incr":"vCTS: LSS_cpiFailSCTPSRTT1Incr","LSS_cpiFailSCTPSRTT2Incr":"vCTS: LSS_cpiFailSCTPSRTT2Incr","LSS_cpiFailSCTPT3RetransIncr":"vCTS: LSS_cpiFailSCTPT3RetransIncr","LSS_cpiFailSCTPT3RetransRate":"vCTS: LSS_cpiFailSCTPT3RetransRate","LSS_cpiFileSysUsage":"vCTS: LSS_cpiFileSysUsage","LSS_cpiMemAllocFail":"vCTS: LSS_cpiMemAllocFail","LSS_cpiNumOfLICDRDel":"vCTS: LSS_cpiNumOfLICDRDel","LSS_cpiReinitServiceSelf":"vCTS: LSS_cpiReinitServiceSelf","LSS_cpiSIPRetransmitInvite":"vCTS: LSS_cpiSIPRetransmitInvite","LSS_cpiSIPRetransmitNonInvite":"vCTS: LSS_cpiSIPRetransmitNonInvite","LSS_cpiSS7DropSCTPPktsRcvd":"vCTS: LSS_cpiSS7DropSCTPPktsRcvd","LSS_cpiSS7FailSCTPFastRetransRate":"vCTS: LSS_cpiSS7FailSCTPFastRetransRate","LSS_cpiStabilityAlarm":"vCTS: LSS_cpiStabilityAlarm","LSS_cpuOverload":"vCTS: LSS_cpuOverload","LSS_databaseConnectionLost":"vCTS: LSS_databaseConnectionLost","LSS_databaseReplicationLinkDown":"vCTS: LSS_databaseReplicationLinkDown","LSS_databaseSizeExhausted":"vCTS: LSS_databaseSizeExhausted","LSS_dbHighCpuUtilization":"vCTS: LSS_dbHighCpuUtilization","LSS_dbOffline":"vCTS: LSS_dbOffline","LSS_dbStatusUnexpected":"vCTS: LSS_dbStatusUnexpected","LSS_degradedResource":"vCTS: LSS_degradedResource","LSS_degrow":"vCTS: LSS_degrow","LSS_deviceServerCxnLost":"vCTS: LSS_deviceServerCxnLost","LSS_diamLinkDown":"vCTS: LSS_diamLinkDown","LSS_diamMaxClientsExceeded":"vCTS: LSS_diamMaxClientsExceeded","LSS_dnsThreshold":"vCTS: LSS_dnsThreshold","LSS_ethernetError":"vCTS: LSS_ethernetError","LSS_ethernetLinkDown":"vCTS: LSS_ethernetLinkDown","LSS_externalConnectivity":"vCTS: LSS_externalConnectivity","LSS_featureLicenseExpiration":"vCTS: LSS_featureLicenseExpiration","LSS_featureLicenseKeyNearExpiration":"vCTS: LSS_featureLicenseKeyNearExpiration","LSS_featureLockValidationError":"vCTS: LSS_featureLockValidationError","LSS_fqdnError":"vCTS: LSS_fqdnError","LSS_fru":"vCTS: LSS_fru","LSS_gatewayCongestion":"vCTS: LSS_gatewayCongestion","LSS_gatewayForcedOOS":"vCTS: LSS_gatewayForcedOOS","LSS_gatewayProvisioningError":"vCTS: LSS_gatewayProvisioningError","LSS_gatewayUnreachable":"vCTS: LSS_gatewayUnreachable","LSS_gatewayUnregistered":"vCTS: LSS_gatewayUnregistered","LSS_globalParameterNotFound":"vCTS: LSS_globalParameterNotFound","LSS_grow":"vCTS: LSS_grow","LSS_h248MessageBufferDepletion":"vCTS: LSS_h248MessageBufferDepletion","LSS_hostDown":"vCTS: LSS_hostDown","LSS_hostReset":"vCTS: LSS_hostReset","LSS_invalidGateway":"vCTS: LSS_invalidGateway","LSS_iriLinkDown":"vCTS: LSS_iriLinkDown","LSS_ldapServerConnectionLost":"vCTS: LSS_ldapServerConnectionLost","LSS_llcDown":"vCTS: LSS_llcDown","LSS_logicalLinkDown":"vCTS: LSS_logicalLinkDown","LSS_logicalLinkNotFound":"vCTS: LSS_logicalLinkNotFound","LSS_logRotateThreshold":"vCTS: LSS_logRotateThreshold","LSS_memoryOverload":"vCTS: LSS_memoryOverload","LSS_nodeConfigFailure":"vCTS: LSS_nodeConfigFailure","LSS_nodeGroupOOS":"vCTS: LSS_nodeGroupOOS","LSS_nodeOOS":"vCTS: LSS_nodeOOS","LSS_nonCompliantFaultGroupMemberState":"vCTS: LSS_nonCompliantFaultGroupMemberState","LSS_nonCsAddrChannelDepletion":"vCTS: LSS_nonCsAddrChannelDepletion","LSS_numberOfTuplesInUse":"vCTS: LSS_numberOfTuplesInUse","LSS_osSecInfoModificationDetected":"vCTS: LSS_osSecInfoModificationDetected","LSS_osSecInformationMissing":"vCTS: LSS_osSecInformationMissing","LSS_osSecUnexpectedInformation":"vCTS: LSS_osSecUnexpectedInformation","LSS_pdnsMySqlReplication":"vCTS: LSS_pdnsMySqlReplication","LSS_pktCorruptionDetectedViaRCCLANCheck":"vCTS: LSS_pktCorruptionDetectedViaRCCLANCheck","LSS_platformCommandFailure":"vCTS: LSS_platformCommandFailure","LSS_pmDataNotCollected":"vCTS: LSS_pmDataNotCollected","LSS_processDown":"vCTS: LSS_processDown","LSS_processNotStarted":"vCTS: LSS_processNotStarted","LSS_provisioningInhibitedMode":"vCTS: LSS_provisioningInhibitedMode","LSS_rccInhibitedMode":"vCTS: LSS_rccInhibitedMode","LSS_remotedbLinkDown":"vCTS: LSS_remotedbLinkDown","LSS_remoteQueryServerFailure":"vCTS: LSS_remoteQueryServerFailure","LSS_restore":"vCTS: LSS_restore","LSS_serviceCFGDataTimestampError":"vCTS: LSS_serviceCFGDataTimestampError","LSS_serviceCommCxnLost":"vCTS: LSS_serviceCommCxnLost","LSS_serviceOnewayCommunication":"vCTS: LSS_serviceOnewayCommunication","LSS_sheddingOverload":"vCTS: LSS_sheddingOverload","LSS_simxml":"vCTS: LSS_simxml","LSS_sipLinkSetMaxQuarantineList":"vCTS: LSS_sipLinkSetMaxQuarantineList","LSS_sipLinkSetUnavailable":"vCTS: LSS_sipLinkSetUnavailable","LSS_sipLinkUnavailable":"vCTS: LSS_sipLinkUnavailable","LSS_softwareAllocatedResourceOverload":"vCTS: LSS_softwareAllocatedResourceOverload","LSS_softwareComponentStandbyNotReady":"vCTS: LSS_softwareComponentStandbyNotReady","LSS_softwareLicense":"vCTS: LSS_softwareLicense","LSS_svcdegrow":"vCTS: LSS_svcdegrow","LSS_svcgrow":"vCTS: LSS_svcgrow","LSS_swVersionMismatch":"vCTS: LSS_swVersionMismatch","LSS_tftpDownloadCorrupt":"vCTS: LSS_tftpDownloadCorrupt","LSS_timeStampValueOutOfSystemRange":"vCTS: LSS_timeStampValueOutOfSystemRange","LSS_transactionHandlerBlockDepletion":"vCTS: LSS_transactionHandlerBlockDepletion","LSS_upgrade":"vCTS: LSS_upgrade","SYS_BackupFailure":"vCTS: SYS_BackupFailure","SYS_Configuration":"vCTS: SYS_Configuration","SYS_COTRecordTransferFailure":"vCTS: SYS_COTRecordTransferFailure","SYS_CPM_USERDATA_INCONSITENCY":"vCTS: SYS_CPM_USERDATA_INCONSITENCY","SYS_CPM_USERDATA_RESTORED":"vCTS: SYS_CPM_USERDATA_RESTORED","SYS_EventQueueCapacity":"vCTS: SYS_EventQueueCapacity","SYS_ICMPFailure":"vCTS: SYS_ICMPFailure","SYS_IPsecConfig":"vCTS: SYS_IPsecConfig","SYS_LinkDown":"vCTS: SYS_LinkDown","SYS_NotifyDisabled":"vCTS: SYS_NotifyDisabled","SYS_NotifyLocked":"vCTS: SYS_NotifyLocked","SYS_NumTL1MeasThresh":"vCTS: SYS_NumTL1MeasThresh","SYS_RADIUS_TO_LDAP_FAILURE":"vCTS: SYS_RADIUS_TO_LDAP_FAILURE","SYS_ROOT_ACCESS_DENIED":"vCTS: SYS_ROOT_ACCESS_DENIED","SYS_ROOT_FTP_VIOLATION":"vCTS: SYS_ROOT_FTP_VIOLATION","SYS_ROOT_LOGIN_VIOLATION":"vCTS: SYS_ROOT_LOGIN_VIOLATION","SYS_ROOT_SSH_LOGIN_VIOLATION":"vCTS: SYS_ROOT_SSH_LOGIN_VIOLATION","SYS_SetupAAAFailure":"vCTS: SYS_SetupAAAFailure","SYS_SNETrapOverload":"vCTS: SYS_SNETrapOverload","SYS_SNMPAuthenticationFailure":"vCTS: SYS_SNMPAuthenticationFailure","SYS_SNMPFailure":"vCTS: SYS_SNMPFailure","SYS_SU_TO_ROOT_FAILURE":"vCTS: SYS_SU_TO_ROOT_FAILURE","SYS_SYSTEMTrapOverload":"vCTS: SYS_SYSTEMTrapOverload","SYS_ThresholdCrossed":"vCTS: SYS_ThresholdCrossed","SYS_UndiscoveredObject":"vCTS: SYS_UndiscoveredObject","SYS_WriteAAAFailure":"vCTS: SYS_WriteAAAFailure","jnxSpaceDiskUsageRising":"vDBE-EMS-Juniper: jnxSpaceDiskUsageRising","jnxSpaceDiskUsageRisingCleared":"vDBE-EMS-Juniper: jnxSpaceDiskUsageRisingCleared","jnxSpaceSwapUsageRising":"vDBE-EMS-Juniper: jnxSpaceSwapUsageRising","jnxSpaceSwapUsageRisingCleared":"vDBE-EMS-Juniper: jnxSpaceSwapUsageRisingCleared","jnxSpaceCPULARising":"vDBE-EMS-Juniper: jnxSpaceCPULARising","jnxSpaceCPULARisingCleared":"vDBE-EMS-Juniper: jnxSpaceCPULARisingCleared","jnxSpaceWebpProxyProcessDown":"vDBE-EMS-Juniper: jnxSpaceWebpProxyProcessDown","jnxSpaceWebpProxyProcessUp":"vDBE-EMS-Juniper: jnxSpaceWebpProxyProcessUp","jnxSpaceNMAProcessDown":"vDBE-EMS-Juniper: jnxSpaceNMAProcessDown","jnxSpaceNMAProcessUp":"vDBE-EMS-Juniper: jnxSpaceNMAProcessUp","jnxSpaceJbossProcessDown":"vDBE-EMS-Juniper: jnxSpaceJbossProcessDown","jnxSpaceJbossProcessUp":"vDBE-EMS-Juniper: jnxSpaceJbossProcessUp","jnxSpaceMysqlProcessDown":"vDBE-EMS-Juniper: jnxSpaceMysqlProcessDown","jnxSpaceMysqlProcessUp":"vDBE-EMS-Juniper: jnxSpaceMysqlProcessUp","jnxSpacePostgresqlProcessDown":"vDBE-EMS-Juniper: jnxSpacePostgresqlProcessDown","jnxSpacePostgresqlProcessUp":"vDBE-EMS-Juniper: jnxSpacePostgresqlProcessUp","jnxSpaceWatchdogStopped":"vDBE-EMS-Juniper: jnxSpaceWatchdogStopped","jnxSpaceWatchdogStarted":"vDBE-EMS-Juniper: jnxSpaceWatchdogStarted","jnxSpaceSNAProcessDown":"vDBE-EMS-Juniper: jnxSpaceSNAProcessDown","jnxSpaceSNAProcessUp":"vDBE-EMS-Juniper: jnxSpaceSNAProcessUp","jnxSpaceNodeDown":"vDBE-EMS-Juniper: jnxSpaceNodeDown","jnxSpaceNodeUp":"vDBE-EMS-Juniper: jnxSpaceNodeUp"," jnxSpaceNodeRemoval":"vDBE-EMS-Juniper: jnxSpaceNodeRemoval","jnxCmCfgChange":"vDBE-Juniper: jnxCmCfgChange","jnxCmRescueChange":"vDBE-Juniper: jnxCmRescueChange","jnxEventTrap":"vDBE-Juniper: jnxEventTrap","jnxJsFwAuthFailure":"vDBE-Juniper: jnxJsFwAuthFailure","jnxJsFwAuthServiceUp":"vDBE-Juniper: jnxJsFwAuthServiceUp","jnxJsFwAuthServiceDown":"vDBE-Juniper: jnxJsFwAuthServiceDown","jnxJsFwAuthCapacityExceeded":"vDBE-Juniper: jnxJsFwAuthCapacityExceeded","jnxJsIdpSignatureUpdate":"vDBE-Juniper: jnxJsIdpSignatureUpdate","jnxJsIdpAttackLog":"vDBE-Juniper: jnxJsIdpAttackLog","jnxJsSrcNatPoolThresholdStatus":"vDBE-Juniper: jnxJsSrcNatPoolThresholdStatus","jnxJsNatRuleThresholdStatus":"vDBE-Juniper: jnxJsNatRuleThresholdStatus","jnxJsScreenAttack":"vDBE-Juniper: jnxJsScreenAttack","jnxJsScreenCfgChange":"vDBE-Juniper: jnxJsScreenCfgChange","jnxJsAvPatternUpdateTrap":"vDBE-Juniper: jnxJsAvPatternUpdateTrap","jnxJsChassisClusterSwitchover":"vDBE-Juniper: jnxJsChassisClusterSwitchover","jnxJsChClusterIntfTrap":"vDBE-Juniper: jnxJsChClusterIntfTrap","jnxJsChClusterSpuMismatchTrap":"vDBE-Juniper: jnxJsChClusterSpuMismatchTrap","jnxJsChClusterWeightTrap":"vDBE-Juniper: jnxJsChClusterWeightTrap","jnxLicenseGraceExpired":"vDBE-Juniper: jnxLicenseGraceExpired","jnxLicenseGraceAboutToExpire":"vDBE-Juniper: jnxLicenseGraceAboutToExpire","jnxLicenseAboutToExpire":"vDBE-Juniper: jnxLicenseAboutToExpire","jnxLicenseInfringeCumulative":"vDBE-Juniper: jnxLicenseInfringeCumulative","jnxLicenseInfringeSingle":"vDBE-Juniper: jnxLicenseInfringeSingle","jnxNatAddrPoolThresholdStatus":"vDBE-Juniper: jnxNatAddrPoolThresholdStatus","jnxSyslogTrap":"vDBE-Juniper: jnxSyslogTrap","jnxAccessAuthServiceUp":"vDBE-Juniper: jnxAccessAuthServiceUp","jnxAccessAuthServiceDown":"vDBE-Juniper: jnxAccessAuthServiceDown","jnxAccessAuthServerDisabled":"vDBE-Juniper: jnxAccessAuthServerDisabled","jnxAccessAuthServerEnabled":"vDBE-Juniper: jnxAccessAuthServerEnabled","jnxAccessAuthAddressPoolHighThreshold":"vDBE-Juniper: jnxAccessAuthAddressPoolHighThreshold","jnxAccessAuthAddressPoolAbateThreshold":"vDBE-Juniper: jnxAccessAuthAddressPoolAbateThreshold","jnxAccessAuthAddressPoolOutOfAddresses":"vDBE-Juniper: jnxAccessAuthAddressPoolOutOfAddresses","jnxAccessAuthAddressPoolOutOfMemory":"vDBE-Juniper: jnxAccessAuthAddressPoolOutOfMemory","LEVEL_WARNING_CPU":"vMRF: LEVEL_WARNING_CPU","LEVEL_MAJOR_CPU":"vMRF: LEVEL_MAJOR_CPU","LEVEL_CRITICAL_CPU":"vMRF: LEVEL_CRITICAL_CPU","LEVEL_WARNING_MEM":"vMRF: LEVEL_WARNING_MEM","LEVEL_MAJOR_MEM":"vMRF: LEVEL_MAJOR_MEM","LEVEL_CRITICAL_MEM":"vMRF: LEVEL_CRITICAL_MEM","LEVEL_WARNING_DISK":"vMRF: LEVEL_WARNING_DISK","LEVEL_MAJOR_DISK":"vMRF: LEVEL_MAJOR_DISK","LEVEL_CRITICAL_DISK":"vMRF: LEVEL_CRITICAL_DISK","LEVEL_WARNING_RTPBANDWIDTH":"vMRF: LEVEL_WARNING_RTPBANDWIDTH","LEVEL_MAJOR_RTPBANDWIDTH":"vMRF: LEVEL_MAJOR_RTPBANDWIDTH","LEVEL_CRITICAL_RTPBANDWIDTH":"vMRF: LEVEL_CRITICAL_RTPBANDWIDTH","LEVEL_WARNING_RTPINPACKETLOSS":"vMRF: LEVEL_WARNING_RTPINPACKETLOSS","LEVEL_MAJOR_RTPINPACKETLOSS":"vMRF: LEVEL_MAJOR_RTPINPACKETLOSS","LEVEL_CRITICAL_RTPINPACKETLOSS":"vMRF: LEVEL_CRITICAL_RTPINPACKETLOSS","LEVEL_WARNING_RTPOUTPACKETLOSS":"vMRF: LEVEL_WARNING_RTPOUTPACKETLOSS","LEVEL_MAJOR_RTPOUTPACKETLOSS":"vMRF: LEVEL_MAJOR_RTPOUTPACKETLOSS","LEVEL_CRITICAL_RTPOUTPACKETLOSS":"vMRF: LEVEL_CRITICAL_RTPOUTPACKETLOSS","LEVEL_WARNING_TCPLOSTRETRANSMITRATE":"vMRF: LEVEL_WARNING_TCPLOSTRETRANSMITRATE","LEVEL_MAJOR_TCPLOSTRETRANSMITRATE":"vMRF: LEVEL_MAJOR_TCPLOSTRETRANSMITRATE","LEVEL_CRITICAL_TCPLOSTRETRANSMITRATE":"vMRF: LEVEL_CRITICAL_TCPLOSTRETRANSMITRATE","LEVEL_WARNING_TCPLOSSFAILURERATE":"vMRF: LEVEL_WARNING_TCPLOSSFAILURERATE","LEVEL_MAJOR_TCPLOSSFAILURERATE":"vMRF: LEVEL_MAJOR_TCPLOSSFAILURERATE","LEVEL_CRITICAL_TCPLOSSFAILURERATE":"vMRF: LEVEL_CRITICAL_TCPLOSSFAILURERATE","LEVEL_CRITICAL_RTPLINKDOWN":"vMRF: LEVEL_CRITICAL_RTPLINKDOWN","TARGET_REACHABLE":"vMRF: TARGET_REACHABLE","PUBLICATION_ERROR":"vMRF: PUBLICATION_ERROR","REMOTE_SERVER_SYNCHRONIZATION_ERROR":"vMRF: REMOTE_SERVER_SYNCHRONIZATION_ERROR","TRANSCODER_TOOL_EXEC_ERROR":"vMRF: TRANSCODER_TOOL_EXEC_ERROR","CLIENT_SYNCHRONIZATION_ERROR":"vMRF: CLIENT_SYNCHRONIZATION_ERROR","CLUSTER_UNREACHABLE":"vMRF: CLUSTER_UNREACHABLE","REMOTE_NODE_OFFLINE":"vMRF: REMOTE_NODE_OFFLINE","IPADDR_STOPPED":"vMRF: IPADDR_STOPPED","MRFC_STOPPED":"vMRF: MRFC_STOPPED","MNGT_STOPPED":"vMRF: MNGT_STOPPED","IPADDR_STARTED":"vMRF: IPADDR_STARTED","MRFC_STARTED":"vMRF: MRFC_STARTED","MNGT_STARTED":"vMRF: MNGT_STARTED","VOLATTACH_FAILED":"vMRF: VOLATTACH_FAILED","VOLDETACH_FAILED":"vMRF: VOLDETACH_FAILED","VOLDEL":"vMRF: VOLDEL","VOLCORRUPT":"vMRF: VOLCORRUPT","VOLFOREIGN":"vMRF: VOLFOREIGN","ACTIVE_ALARM_TABLE_PURGE":"vMRF: ACTIVE_ALARM_TABLE_PURGE","GENERIC_FORMER_STATELESS":"vMRF: GENERIC_FORMER_STATELESS","GENERIC_FORMER_STATEFUL":"vMRF: GENERIC_FORMER_STATEFUL","NO_MORE_ALARM_DESCRIPTION":"vMRF: NO_MORE_ALARM_DESCRIPTION","SERVICE_PROCESS_ENDS":"vMRF: SERVICE_PROCESS_ENDS","DEFENSE_STOPPED":"vMRF: DEFENSE_STOPPED","USER_ACCOUNT_LOCKED":"vMRF: USER_ACCOUNT_LOCKED","CONNECTION_SQL_NOT_ESTABLISHED":"vMRF: CONNECTION_SQL_NOT_ESTABLISHED","FALSE_ALARM":"vMRF: FALSE_ALARM","RADIUS SERVER HS":"vMRF: RADIUS SERVER HS","DRM_PACKAGER_IS_NOT_AVAILABLE":"vMRF: DRM_PACKAGER_IS_NOT_AVAILABLE","DRM_LICENSE_BUILDER_IS_NOT_AVAILABLE":"vMRF: DRM_LICENSE_BUILDER_IS_NOT_AVAILABLE","ERROR_WHILE_CREATING_PLAYLIST_MANAGER_FILE":"vMRF: ERROR_WHILE_CREATING_PLAYLIST_MANAGER_FILE","ERROR_WHILE_BUILDING_PLAYLIST_XML_REPRESENTATION":"vMRF: ERROR_WHILE_BUILDING_PLAYLIST_XML_REPRESENTATION","PLAYLIST_FILE_TO_PUBLISH_NOT_FOUND":"vMRF: PLAYLIST_FILE_TO_PUBLISH_NOT_FOUND","COULD_NOT_CONNECT_TO_PVNS_SERVER":"vMRF: COULD_NOT_CONNECT_TO_PVNS_SERVER","HTTP_OR_HTTPCLIENT_EXCEPTION_HAS_OCCURRED":"vMRF: HTTP_OR_HTTPCLIENT_EXCEPTION_HAS_OCCURRED","I/O_ERROR_WHILE_PUBLISHING_PLAYLIST_FILE":"vMRF: I/O_ERROR_WHILE_PUBLISHING_PLAYLIST_FILE","ERROR_WHILE_REQUESTING_SDP_FILE":"vMRF: ERROR_WHILE_REQUESTING_SDP_FILE","ERROR_WHILE_REQUESTING_SDP_FILE:_REMOTE_EXCEPTION":"vMRF: ERROR_WHILE_REQUESTING_SDP_FILE:_REMOTE_EXCEPTION","NO_STREAMING_RESOURCES":"vMRF: NO_STREAMING_RESOURCES","NO_STREAMING_MODULES_REGISTERED":"vMRF: NO_STREAMING_MODULES_REGISTERED","SM_FAILURE":"vMRF: SM_FAILURE","MISSING_FILE_OR_ENCODER":"vMRF: MISSING_FILE_OR_ENCODER","INVALID_RANGE":"vMRF: INVALID_RANGE","THRESHOLD_VALUE_EXCEEDED":"vMRF: THRESHOLD_VALUE_EXCEEDED","TICKET_QUEUE_FULL":"vMRF: TICKET_QUEUE_FULL","PARSING_INITIALIZATION_EXCEPTION":"vMRF: PARSING_INITIALIZATION_EXCEPTION","CUSTOMERCARE_INTERNAL_EXCEPTION":"vMRF: CUSTOMERCARE_INTERNAL_EXCEPTION","PARSING_EXCEPTION":"vMRF: PARSING_EXCEPTION","I/O_PROBLEM":"vMRF: I/O_PROBLEM","INEXISTENT_FILE_OR_FOLDER":"vMRF: INEXISTENT_FILE_OR_FOLDER","FILE_NOT_IN_XML_FORMAT":"vMRF: FILE_NOT_IN_XML_FORMAT","SERVICE_STATE_CHANGE":"vMRF: SERVICE_STATE_CHANGE","MONITORED_FILE_UPDATE_ERROR":"vMRF: MONITORED_FILE_UPDATE_ERROR","MONITORED_RPM_DELETED_ERROR":"vMRF: MONITORED_RPM_DELETED_ERROR","MONITORED_RPM_ADDED_ERROR":"vMRF: MONITORED_RPM_ADDED_ERROR","MONITORED_CHMOD_ERROR":"vMRF: MONITORED_CHMOD_ERROR","MONITORED_CHOWN_ERROR":"vMRF: MONITORED_CHOWN_ERROR","PASSWD_ROOT_ERROR":"vMRF: PASSWD_ROOT_ERROR","PASSWD_ERROR":"vMRF: PASSWD_ERROR","ROOTKIT_ERROR":"vMRF: ROOTKIT_ERROR","STARTUP_ERR_UNDEFINED_PORT":"vMRF: STARTUP_ERR_UNDEFINED_PORT","STARTUP_ERR_FAIL_FIND_HOSTNAME":"vMRF: STARTUP_ERR_FAIL_FIND_HOSTNAME","STARTUP_ERR_CF_MISSING":"vMRF: STARTUP_ERR_CF_MISSING","STARTUP_ERR_FAILED_TO_OPEN_CF":"vMRF: STARTUP_ERR_FAILED_TO_OPEN_CF","STARTUP_ERR_FAILED_TO_BIND_PORT":"vMRF: STARTUP_ERR_FAILED_TO_BIND_PORT","STARTUP_ERR_CFG_UNIT_MISSING":"vMRF: STARTUP_ERR_CFG_UNIT_MISSING","MCTR_INVALID_CODEC_NAME":"vMRF: MCTR_INVALID_CODEC_NAME","RTSP_SERVER_FAILURE":"vMRF: RTSP_SERVER_FAILURE","RTSP_SERVER_QUARANTINE":"vMRF: RTSP_SERVER_QUARANTINE","TRANSCODING_FAILURE":"vMRF: TRANSCODING_FAILURE","FILE_CACHE_FAILURE":"vMRF: FILE_CACHE_FAILURE","STARTUP_ERROR_INITIALIZATION_FAILED":"vMRF: STARTUP_ERROR_INITIALIZATION_FAILED","CONFERENCE_FAILURE":"vMRF: CONFERENCE_FAILURE","PLC_DEGRADATION_LOW":"vMRF: PLC_DEGRADATION_LOW","PLC_DEGRADATION_MEDIUM":"vMRF: PLC_DEGRADATION_MEDIUM","PLC_DEGRADATION_HIGH":"vMRF: PLC_DEGRADATION_HIGH","AUDIO_RESYNCH_LOW":"vMRF: AUDIO_RESYNCH_LOW","AUDIO_RESYNCH_MEDIUM":"vMRF: AUDIO_RESYNCH_MEDIUM","AUDIO_RESYNCH_HIGH":"vMRF: AUDIO_RESYNCH_HIGH","VIDEO_RESYNCH_LOW":"vMRF: VIDEO_RESYNCH_LOW","VIDEO_RESYNCH_MEDIUM":"vMRF: VIDEO_RESYNCH_MEDIUM","VIDEO_RESYNCH_HIGH":"vMRF: VIDEO_RESYNCH_HIGH","PLAY_FAILURES_LOW":"vMRF: PLAY_FAILURES_LOW","PLAY_FAILURES_MEDIUM":"vMRF: PLAY_FAILURES_MEDIUM","PLAY_FAILURES_HIGH":"vMRF: PLAY_FAILURES_HIGH","NOT_ENOUGH_FREE_CONFEREE":"vMRF: NOT_ENOUGH_FREE_CONFEREE","NO_LONGER_FREE_CONFERENCE_ROOM":"vMRF: NO_LONGER_FREE_CONFERENCE_ROOM","STARTUP_ERROR_FAIL_TO_READ_CF":"vMRF: STARTUP_ERROR_FAIL_TO_READ_CF","STARTUP_ERROR_SIP_ADAPTER_INIT":"vMRF: STARTUP_ERROR_SIP_ADAPTER_INIT","STARTUP_ERROR_MONITORING_INIT":"vMRF: STARTUP_ERROR_MONITORING_INIT","REGISTER_ERROR_FAILURE":"vMRF: REGISTER_ERROR_FAILURE","DRI_ERROR_FAILURE":"vMRF: DRI_ERROR_FAILURE","STARTUP_ERROR_STACK_CONFIGURATION":"vMRF: STARTUP_ERROR_STACK_CONFIGURATION","STARTUP_ERROR_CONF":"vMRF: STARTUP_ERROR_CONF","STARTUP_ERROR_UNDEFINED_PORT":"vMRF: STARTUP_ERROR_UNDEFINED_PORT","HOST_REMOVED":"vMRF: HOST_REMOVED","INTERCEPT_THRESHOLD_NB_DIALOG_ALLOCATED":"vMRF: INTERCEPT_THRESHOLD_NB_DIALOG_ALLOCATED","STARTUP_ERROR_STACK_CONF":"vMRF: STARTUP_ERROR_STACK_CONF","STARTUP_ERROR_CONFIGURATION":"vMRF: STARTUP_ERROR_CONFIGURATION","STARTUP_ERROR_FAILED_TO_RETRIEVE_HOSTNAME":"vMRF: STARTUP_ERROR_FAILED_TO_RETRIEVE_HOSTNAME","LEVEL_WARNING_CALL":"vMRF: LEVEL_WARNING_CALL","LEVEL_ALARM_MINOR_CALL":"vMRF: LEVEL_ALARM_MINOR_CALL","LEVEL_ALARM_MAJOR_CALL":"vMRF: LEVEL_ALARM_MAJOR_CALL","LEVEL_ALARM_MRFPoutOfService":"vMRF: LEVEL_ALARM_MRFPoutOfService","MRFP_CALL_REJECTED_Threshold #1":"vMRF: MRFP_CALL_REJECTED_Threshold #1","MRFP_CALL_REJECTED_Threshold #2":"vMRF: MRFP_CALL_REJECTED_Threshold #2","MRFP_CALL_REJECTED_Threshold #3":"vMRF: MRFP_CALL_REJECTED_Threshold #3","MRFP_CALL_RETRIED_Threshold #1":"vMRF: MRFP_CALL_RETRIED_Threshold #1","MRFP_CALL_RETRIED_Threshold #2":"vMRF: MRFP_CALL_RETRIED_Threshold #2","MRFP_CALL_RETRIED_Threshold #3":"vMRF: MRFP_CALL_RETRIED_Threshold #3","STARTUP_PUB_FILE_NOT_PRESENT":"vMRF: STARTUP_PUB_FILE_NOT_PRESENT","STARTUP_INF_FILE_NOT_PRESENT":"vMRF: STARTUP_INF_FILE_NOT_PRESENT","STARTUP_LIC_FILE_NOT_PRESENT":"vMRF: STARTUP_LIC_FILE_NOT_PRESENT","GENERIC_HARDWARE_PROBLEM":"vMRF: GENERIC_HARDWARE_PROBLEM","HARD_DRIVE_PROBLEM":"vMRF: HARD_DRIVE_PROBLEM","NETWORK_LINK_PROBLEM":"vMRF: NETWORK_LINK_PROBLEM","POWER_SUPPLY_PROBLEM":"vMRF: POWER_SUPPLY_PROBLEM","SMART_HARD_DRIVE_PROBLEM":"vMRF: SMART_HARD_DRIVE_PROBLEM","STARTUP_ERROR":"vMRF: STARTUP_ERROR","RESOURCE_NOT_ACCESSIBLE":"vMRF: RESOURCE_NOT_ACCESSIBLE","RESOURCE_ACCESSIBLE":"vMRF: RESOURCE_ACCESSIBLE","RESOURCE_FULL":"vMRF: RESOURCE_FULL","DRI_ALARM":"vMRF: DRI_ALARM","REGISTER_ERROR_CCF":"vMRF: REGISTER_ERROR_CCF","REGISTER_ERROR_EXTERNAL":"vMRF: REGISTER_ERROR_EXTERNAL","TIMEOUT_ERROR":"vMRF: TIMEOUT_ERROR","VXML_ERROR":"vMRF: VXML_ERROR","A Network Element is no longer available due to a connection failure":"vMVM: A Network Element is no longer available due to a connection failure","A MetaSphere server is reporting a fault with the configuration of its connection to MetaView":"vMVM: A MetaSphere server is reporting a fault with the configuration of its connection to MetaView","Configured OBS IPs don't match available OBS nodes. Configured but unavailable nodes include: []. Real nodes not configured include: []":"vMVM: Configured OBS IPs don't match available OBS nodes. Configured but unavailable nodes include: []. Real nodes not configured include: []","Service Assurance Server cannot be contacted":"vMVM: Service Assurance Server cannot be contacted","The primary MetaView Director has lost contact with the backup MetaView Director":"vMVM: The primary MetaView Director has lost contact with the backup MetaView Director","The active server has lost connection to the standby":"vMVM: The active server has lost connection to the standby","CrashCounter":"vprobes-vBE-Processing: CrashCounter","IsAlive":"vprobes-vBE-Processing: IsAlive","SwRestart":"vprobes-vLB: SwRestart","Repeated exceptions have occurred.":"vSBC-Metaswitch: Repeated exceptions have occurred.","A licensing limit is close to capacity.":"vSBC-Metaswitch: A licensing limit is close to capacity.","One or more feature packs have been breached.":"vSBC-Metaswitch: One or more feature packs have been breached.","The grace period on this Perimeta system will expire in less than 48 hours, after which calls will not be processed.":"vSBC-Metaswitch: The grace period on this Perimeta system will expire in less than 48 hours, after which calls will not be processed.","The grace period on this Perimeta system will expire in less than 7 days, after which calls will not be processed.":"vSBC-Metaswitch: The grace period on this Perimeta system will expire in less than 7 days, after which calls will not be processed.","The license on this Perimeta system will expire in less than 4 weeks.":"vSBC-Metaswitch: The license on this Perimeta system will expire in less than 4 weeks.","A Perimeta blade has become unlicensed.":"vSBC-Metaswitch: A Perimeta blade has become unlicensed.","Perimeta is licensed with a bypass certificate, which is valid until the time displayed.":"vSBC-Metaswitch: Perimeta is licensed with a bypass certificate, which is valid until the time displayed.","The number of licensed instances exceeded a threshold of the licensed limit.":"vSBC-Metaswitch: The number of licensed instances exceeded a threshold of the licensed limit.","The software token on the primary Distributed Capacity Manager will expire on the displayed date.":"vSBC-Metaswitch: The software token on the primary Distributed Capacity Manager will expire on the displayed date.","A capacity limit on the license installed on this Perimeta system does not match the largest limit across all systems in the deployment.":"vSBC-Metaswitch: A capacity limit on the license installed on this Perimeta system does not match the largest limit across all systems in the deployment.","An adjacency has voice quality alerts.":"vSBC-Metaswitch: An adjacency has voice quality alerts.","The number of calls being audited is congested.":"vSBC-Metaswitch: The number of calls being audited is congested.","Session Controller is rejecting calls because there is no valid active call policy set configured.":"vSBC-Metaswitch: Session Controller is rejecting calls because there is no valid active call policy set configured.","A call policy set is inactive because it has been misconfigured.":"vSBC-Metaswitch: A call policy set is inactive because it has been misconfigured.","Session Controller is inactive and rejecting calls.":"vSBC-Metaswitch: Session Controller is inactive and rejecting calls.","Sources have breached minor or major blacklist thresholds.":"vSBC-Metaswitch: Sources have breached minor or major blacklist thresholds.","Sources are blacklisted.":"vSBC-Metaswitch: Sources are blacklisted.","The blacklisting configuration will change as a result of upgrade and some configured blacklists or alerts will no longer be applied.":"vSBC-Metaswitch: The blacklisting configuration will change as a result of upgrade and some configured blacklists or alerts will no longer be applied.","A large number of downgrades and bans have been created as a result of blacklisting.":"vSBC-Metaswitch: A large number of downgrades and bans have been created as a result of blacklisting.","Session Controller is unable to track further sources for blacklisting.":"vSBC-Metaswitch: Session Controller is unable to track further sources for blacklisting.","A software protection switch was triggered.":"vSBC-Metaswitch: A software protection switch was triggered.","A disk area on a processor blade is nearly full.":"vSBC-Metaswitch: A disk area on a processor blade is nearly full.","Memory use is very high.":"vSBC-Metaswitch: Memory use is very high.","The primary processor-blade has lost contact with the backup.":"vSBC-Metaswitch: The primary processor-blade has lost contact with the backup.","An efix or patch has been applied to this system containing diagnostic versions of some software libraries.":"vSBC-Metaswitch: An efix or patch has been applied to this system containing diagnostic versions of some software libraries.","A software protection switch (SPS) was triggered. Call and registration state was lost.":"vSBC-Metaswitch: A software protection switch (SPS) was triggered. Call and registration state was lost.","The Ethernet Heartbeat between primary and backup processors has failed.":"vSBC-Metaswitch: The Ethernet Heartbeat between primary and backup processors has failed.","The Backplane Heartbeat between primary and backup processors has failed.":"vSBC-Metaswitch: The Backplane Heartbeat between primary and backup processors has failed.","A disk area on a processor blade reported an error.":"vSBC-Metaswitch: A disk area on a processor blade reported an error.","The system is upgrading.":"vSBC-Metaswitch: The system is upgrading.","An error with NTP functionality has been detected.":"vSBC-Metaswitch: An error with NTP functionality has been detected.","One or more users are locked out of the system.":"vSBC-Metaswitch: One or more users are locked out of the system.","The Craft Terminal user FTP directory on a processor blade is nearly full.":"vSBC-Metaswitch: The Craft Terminal user FTP directory on a processor blade is nearly full.","A scheduled configuration snapshot has failed.":"vSBC-Metaswitch: A scheduled configuration snapshot has failed.","The Session Controller is stopping as a result of administrator action.":"vSBC-Metaswitch: The Session Controller is stopping as a result of administrator action.","A Session Controller processor blade is stopping as a result of administrator action.":"vSBC-Metaswitch: A Session Controller processor blade is stopping as a result of administrator action.","An object could not be activated because its service address does not exist or is not fully specified.":"vSBC-Metaswitch: An object could not be activated because its service address does not exist or is not fully specified.","The hardware on a processor does not meet minimum requirements.":"vSBC-Metaswitch: The hardware on a processor does not meet minimum requirements.","The hardware expectations of the two processors are not the same.":"vSBC-Metaswitch: The hardware expectations of the two processors are not the same.","The read speed of the main hard disk on a processor blade is too slow.":"vSBC-Metaswitch: The read speed of the main hard disk on a processor blade is too slow.","An error has occurred reading from the hard disk on a processor blade.":"vSBC-Metaswitch: An error has occurred reading from the hard disk on a processor blade.","Backup and primary processor-blades have an inconsistent system role.":"vSBC-Metaswitch: Backup and primary processor-blades have an inconsistent system role.","Event: The system encountered a critical error and had to restart.":"vSBC-Metaswitch: Event: The system encountered a critical error and had to restart.","Event: A RADIUS server failed to respond to an authentication request.":"vSBC-Metaswitch: Event: A RADIUS server failed to respond to an authentication request.","Event: All configured RADIUS servers failed to respond to authentication requests.":"vSBC-Metaswitch: Event: All configured RADIUS servers failed to respond to authentication requests.","Event: The number of CPUs has changed.":"vSBC-Metaswitch: Event: The number of CPUs has changed.","Event: A user has been automatically deleted":"vSBC-Metaswitch: Event: A user has been automatically deleted","The primary processor blade has lost management connectivity":"vSBC-Metaswitch: The primary processor blade has lost management connectivity","Event: A processor blade is running with DPDK mode disabled when DPDK mode is,expected.":"vSBC-Metaswitch: Event: A processor blade is running with DPDK mode disabled when DPDK mode is,expected.","Event: Processor blade %1 is running with DPDK mode disabled when DPDK mode may be possible.":"vSBC-Metaswitch: Event: Processor blade %1 is running with DPDK mode disabled when DPDK mode may be possible.","Perimeta is attempting to resend cached billing records.":"vSBC-Metaswitch: Perimeta is attempting to resend cached billing records.","The Rf billing cache is full.":"vSBC-Metaswitch: The Rf billing cache is full.","The inbound call queue is congested.":"vSBC-Metaswitch: The inbound call queue is congested.","A configured realm group contains realms that are not available to the SBC.":"vSBC-Metaswitch: A configured realm group contains realms that are not available to the SBC.","An allowed MSC configuration is not connected to any physical MSCs.":"vSBC-Metaswitch: An allowed MSC configuration is not connected to any physical MSCs.","A SIP Peer has stopped responding to SIP OPTIONS pings. MSW: 20160303: Alarm text is changed in v3.9 software to read: \\"An adjacency has lost connectivity, according to SIP OPTIONS pings\\"":"vSBC-Metaswitch: A SIP Peer has stopped responding to SIP OPTIONS pings. MSW: 20160303: Alarm text is changed in v3.9 software to read: \\"An adjacency has lost connectivity, according to SIP OPTIONS pings\\"","An adjacency has failed as the listen socket could not be created. Check for configuration mismatches with the associated service interface.":"vSBC-Metaswitch: An adjacency has failed as the listen socket could not be created. Check for configuration mismatches with the associated service interface.","No suitable DNS records were found for a peer group's DNS hostname.":"vSBC-Metaswitch: No suitable DNS records were found for a peer group's DNS hostname.","One or more SIP peers from a peer group have stopped responding to SIP OPTIONS pings":"vSBC-Metaswitch: One or more SIP peers from a peer group have stopped responding to SIP OPTIONS pings","An adjacency has failed as its service network does not match the service network on its associated peer group.":"vSBC-Metaswitch: An adjacency has failed as its service network does not match the service network on its associated peer group.","An adjacency has failed as its configured TLS certificate could not be found.":"vSBC-Metaswitch: An adjacency has failed as its configured TLS certificate could not be found.","The caching function has not been initialized properly.":"vSBC-Metaswitch: The caching function has not been initialized properly.","An adjacency has failed as the listen socket could not be created.":"vSBC-Metaswitch: An adjacency has failed as the listen socket could not be created.","An adjacency is congested and may be rejecting calls.":"vSBC-Metaswitch: An adjacency is congested and may be rejecting calls.","There is an issue with a Diameter peer.":"vSBC-Metaswitch: There is an issue with a Diameter peer.","A realm is no longer reachable via any configured peers.":"vSBC-Metaswitch: A realm is no longer reachable via any configured peers.","An FQDN for a configured Diameter peer has failed to resolve to a valid IP address.":"vSBC-Metaswitch: An FQDN for a configured Diameter peer has failed to resolve to a valid IP address.","One or more peers resolved from a DNS lookup of a configured peer's address cannot be contacted":"vSBC-Metaswitch: One or more peers resolved from a DNS lookup of a configured peer's address cannot be contacted","An interface ARP or NDP probe has failed.":"vSBC-Metaswitch: An interface ARP or NDP probe has failed.","One or more IP address conflicts have been detected on service interfaces with zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.":"vSBC-Metaswitch: One or more IP address conflicts have been detected on service interfaces with zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.","One or more IP address conflicts have been detected on service interfaces with non-zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.":"vSBC-Metaswitch: One or more IP address conflicts have been detected on service interfaces with non-zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.","An interface device is running below the expected speed. This alarm was originally triggered by a probe failure on a service interface.":"vSBC-Metaswitch: An interface device is running below the expected speed. This alarm was originally triggered by a probe failure on a service interface.","An interface device is running above the expected speed.":"vSBC-Metaswitch: An interface device is running above the expected speed.","An IP address conflict has been detected on a management interface.":"vSBC-Metaswitch: An IP address conflict has been detected on a management interface.","An interface ICMP probe has failed.":"vSBC-Metaswitch: An interface ICMP probe has failed.","A High-Availability link has detected a connectivity issue.":"vSBC-Metaswitch: A High-Availability link has detected a connectivity issue.","An HA-link device is being reported as underspeed.":"vSBC-Metaswitch: An HA-link device is being reported as underspeed.","An IP address conflict has been detected on a replication interface.":"vSBC-Metaswitch: An IP address conflict has been detected on a replication interface.","The Session Controller has started.":"vSBC-Metaswitch: The Session Controller has started.","A statistic exceeded its configured thresholds.":"vSBC-Metaswitch: A statistic exceeded its configured thresholds.","One or more statistic has not been retrieved at least 3 times in a row.":"vSBC-Metaswitch: One or more statistic has not been retrieved at least 3 times in a row.","A Refresh Alarms request was triggered. Alarms not re-raised will be cleared in 5 minutes.":"vSBC-Metaswitch: A Refresh Alarms request was triggered. Alarms not re-raised will be cleared in 5 minutes.","A statistic has exceeded its configured thresholds.":"vSBC-Metaswitch: A statistic has exceeded its configured thresholds.","A Fallback Operation will soon be started":"vSBG: A Fallback Operation will soon be started","BRM, Auto Export Backup Failed":"vSBG: BRM, Auto Export Backup Failed","BRM, Scheduled Backup Failed":"vSBG: BRM, Scheduled Backup Failed","COM SA, AMF Component Cleanup Failed":"vSBG: COM SA, AMF Component Cleanup Failed","COM SA, AMF Component Instantiation Failed":"vSBG: COM SA, AMF Component Instantiation Failed","COM SA, AMF SI Unassigned":"vSBG: COM SA, AMF SI Unassigned","COM SA, CLM Cluster Node Unavailable":"vSBG: COM SA, CLM Cluster Node Unavailable","COM SA, MDF Detected Model Error":"vSBG: COM SA, MDF Detected Model Error","COM SA, Proxy Status of a Component Changed to Unproxied":"vSBG: COM SA, Proxy Status of a Component Changed to Unproxied","File Management, Number of Files in FileGroup Exceeded":"vSBG: File Management, Number of Files in FileGroup Exceeded","File Management, Max Size in FileGroup Exceeded":"vSBG: File Management, Max Size in FileGroup Exceeded","LOTC Disk Replication Communication":"vSBG: LOTC Disk Replication Communication","LOTC Disk Replication Consistency":"vSBG: LOTC Disk Replication Consistency","LOTC Disk Usage":"vSBG: LOTC Disk Usage","LOTC memory Usage":"vSBG: LOTC memory Usage","LOTC Time Synchronization":"vSBG: LOTC Time Synchronization","SBG, BGF Control Link Down":"vSBG: SBG, BGF Control Link Down","SBG, BGF Control Link Disabled":"vSBG: SBG, BGF Control Link Disabled","SBG, BGF Control Link Enabled":"vSBG: SBG, BGF Control Link Enabled","SBG, BGF Control Link Remote Locked":"vSBG: SBG, BGF Control Link Remote Locked","SBG, Charging Data Storage Maximum Records Reached":"vSBG: SBG, Charging Data Storage Maximum Records Reached","SBG, Charging Server Rejects Charging Data":"vSBG: SBG, Charging Server Rejects Charging Data","SBG, Excessive Packet Rate Detected ":"vSBG: SBG, Excessive Packet Rate Detected ","SBG, High Amount of Malformed Packets Received":"vSBG: SBG, High Amount of Malformed Packets Received","SBG, High Amount of STUN Packets Detected":"vSBG: SBG, High Amount of STUN Packets Detected","SBG, High Amount of TCP SYN Packets Received":"vSBG: SBG, High Amount of TCP SYN Packets Received","SBG, High Amount of UDP Packets Received ":"vSBG: SBG, High Amount of UDP Packets Received ","SBG, IP Address Blocked Due to Excessive Packet Rate":"vSBG: SBG, IP Address Blocked Due to Excessive Packet Rate","SBG, Lost Connectivity to Diameter Server":"vSBG: SBG, Lost Connectivity to Diameter Server","SBG, Mated Pair out of Service":"vSBG: SBG, Mated Pair out of Service","SBG, Network Unavailable for Media Handling":"vSBG: SBG, Network Unavailable for Media Handling","SBG, Non-emergency Call Released to Free Resources for Emergency Call":"vSBG: SBG, Non-emergency Call Released to Free Resources for Emergency Call","SBG, Not Enough Disk Space for Storing Charging Data":"vSBG: SBG, Not Enough Disk Space for Storing Charging Data","SBG, Payload Mated Pair Failure":"vSBG: SBG, Payload Mated Pair Failure","SBG, Payload Processor Failure":"vSBG: SBG, Payload Processor Failure","SBG, Processor Overloaded":"vSBG: SBG, Processor Overloaded","SBG, Registered User Set in Quarantine":"vSBG: SBG, Registered User Set in Quarantine","SBG, Registration Contacts Exceed Configured Threshold":"vSBG: SBG, Registration Contacts Exceed Configured Threshold","SBG, Sequential Restart Initiated":"vSBG: SBG, Sequential Restart Initiated","SBG, SIP Abuse Detected":"vSBG: SBG, SIP Abuse Detected","SBG, SIP Network Locked":"vSBG: SBG, SIP Network Locked","SBG, SIP Next Hop Reachable":"vSBG: SBG, SIP Next Hop Reachable","SBG, SIP Next Hop Unreachable":"vSBG: SBG, SIP Next Hop Unreachable","SBG, SIP Request Rejected by Network Throttling":"vSBG: SBG, SIP Request Rejected by Network Throttling","SBG, TLS Certificate Imported":"vSBG: SBG, TLS Certificate Imported","SBG, Trace Recording Session Number Limit Reached":"vSBG: SBG, Trace Recording Session Number Limit Reached","SBG, Trace Session Deactivated":"vSBG: SBG, Trace Session Deactivated","SBG, Trace Session Times Out":"vSBG: SBG, Trace Session Times Out","SBG, Unknown Media Type or Payload Type":"vSBG: SBG, Unknown Media Type or Payload Type"} # # if action.test.override is true, then any action will be marked as test=true (even if incoming action request had test=false); otherwise, test flag will be unchanged on the action request action.test.override=false # if action.insert.test.event is true, then insert event even if the action is set to test action.insert.test.event=false -CLDS_SERVICE_CACHE_MAX_SECONDS=14400 -# -globalProps={"global": { "service": { "": "", "vUSP": "vUSP", "vSCP": "vSCP", "vProbes": "vProbes" } }, "policy": { "timeout": 5, "recipe": { "": "", "restart": "Restart", "rebuild": "Rebuild", "migrate": "Migrate" }, "maxRetries": "3", "retryTimeLimit": 180, "resource": { "vCTS": "vCTS", "v3CDB": "v3CDB", "vUDR": "vUDR", "vCOM": "vCOM", "vRAR": "vRAR", "vLCS": "vLCS", "vUDR-BE": "vUDR-BE", "vDBE": "vDBE" }, "parentPolicyConditions": { "Failure_Retries": "Failure: Max Retries Exceeded", "Failure_Timeout": "Failure: Time Limit Exceeded", "Failure_Exception": "Failure: Exception", "Failure": "Failure: Other", "Success": "Success" } }, "shared": { "byService": { "": { "vf": { }, "vfc": { }, "location": { }, "alarmCondition": { } }, "vSCP": { "vf": { "frwl_scp": "FW" }, "vfc": { "FW": "FW" }, "location": { "AKRNOHAH": "Akron", "ALLNTXSA": "Allen-2" }, "alarmCondition": { "authenticationFailure": "authenticationFailure", "bigipActive": "bigipActive", "bigipActiveActive": "bigipActiveActive", "bigipAgentRestart": "bigipAgentRestart", "bigipAgentShutdown": "bigipAgentShutdown", "bigipAgentStart": "bigipAgentStart", "bigipAggrReaperStateChange": "bigipAggrReaperStateChange", "bigipAomCpuTempTooHigh": "bigipAomCpuTempTooHigh", "bigipARPConflict": "bigipARPConflict", "bigipAsmBruteForceAttackDetected": "bigipAsmBruteForceAttackDetected", "bigipAsmDosAttackDetected": "bigipAsmDosAttackDetected", "bigipAsmFtpRequestBlocked": "bigipAsmFtpRequestBlocked", "bigipAsmFtpRequestViolation": "bigipAsmFtpRequestViolation", "bigipAsmRequestBlocked": "bigipAsmRequestBlocked", "bigipAsmRequestViolation": "bigipAsmRequestViolation", "bigipAsmSmtpRequestBlocked": "bigipAsmSmtpRequestBlocked", "bigipAsmSmtpRequestViolation": "bigipAsmSmtpRequestViolation", "bigipAuthFailed": "bigipAuthFailed", "bigipAvrAlertsMetricSmtp": "bigipAvrAlertsMetricSmtp", "bigipAvrAlertsMetricSnmp": "bigipAvrAlertsMetricSnmp", "bigipBladeNoPower": "bigipBladeNoPower", "bigipBladeOffline": "bigipBladeOffline", "bigipBladeTempHigh": "bigipBladeTempHigh", "bigipChassisFanBad": "bigipChassisFanBad", "bigipChassisPowerSupplyBad": "bigipChassisPowerSupplyBad", "bigipChassisTempHigh": "bigipChassisTempHigh", "bigipChmandAlertFanTrayBad": "bigipChmandAlertFanTrayBad", "bigipClusterdNoResponse": "bigipClusterdNoResponse", "bigipClusterPrimaryChanged": "bigipClusterPrimaryChanged", "bigipCompLimitExceeded": "bigipCompLimitExceeded", "bigipConfigLoaded": "bigipConfigLoaded", "bigipCpuFanSpeedBad": "bigipCpuFanSpeedBad", "bigipCpuFanSpeedLow": "bigipCpuFanSpeedLow", "bigipCpuTempHigh": "bigipCpuTempHigh", "bigipDiskPartitionGrowth": "bigipDiskPartitionGrowth", "bigipDiskPartitionWarn": "bigipDiskPartitionWarn", "bigipDnsRequestRateLimiterEngaged": "bigipDnsRequestRateLimiterEngaged", "bigipDosAttackStart": "bigipDosAttackStart", "bigipDosAttackStop": "bigipDosAttackStop", "bigipExternalLinkChange": "bigipExternalLinkChange", "bigipFeatureFailed": "bigipFeatureFailed", "bigipFeatureOnline": "bigipFeatureOnline", "bigipFipsDeviceError": "bigipFipsDeviceError", "bigipGtmAppAvail": "bigipGtmAppAvail", "bigipGtmAppNotAvail": "bigipGtmAppNotAvail", "bigipGtmAppObjAvail": "bigipGtmAppObjAvail", "bigipGtmAppObjNotAvail": "bigipGtmAppObjNotAvail", "bigipGtmBig3dSslCertExpired": "bigipGtmBig3dSslCertExpired", "bigipGtmBig3dSslCertWillExpire": "bigipGtmBig3dSslCertWillExpire", "bigipGtmBoxAvail": "bigipGtmBoxAvail", "bigipGtmBoxNotAvail": "bigipGtmBoxNotAvail", "bigipGtmDcAvail": "bigipGtmDcAvail", "bigipGtmDcDisabled": "bigipGtmDcDisabled", "bigipGtmDcEnabled": "bigipGtmDcEnabled", "bigipGtmDcNotAvail": "bigipGtmDcNotAvail", "bigipGtmJoinedGroup": "bigipGtmJoinedGroup", "bigipGtmKeyGenerationExpiration": "bigipGtmKeyGenerationExpiration", "bigipGtmKeyGenerationRollover": "bigipGtmKeyGenerationRollover", "bigipGtmLeftGroup": "bigipGtmLeftGroup", "bigipGtmLinkAvail": "bigipGtmLinkAvail", "bigipGtmLinkDisabled": "bigipGtmLinkDisabled", "bigipGtmLinkEnabled": "bigipGtmLinkEnabled", "bigipGtmLinkNotAvail": "bigipGtmLinkNotAvail", "bigipGtmPoolAvail": "bigipGtmPoolAvail", "bigipGtmPoolDisabled": "bigipGtmPoolDisabled", "bigipGtmPoolEnabled": "bigipGtmPoolEnabled", "bigipGtmPoolMbrAvail": "bigipGtmPoolMbrAvail", "bigipGtmPoolMbrDisabled": "bigipGtmPoolMbrDisabled", "bigipGtmPoolMbrEnabled": "bigipGtmPoolMbrEnabled", "bigipGtmPoolMbrNotAvail": "bigipGtmPoolMbrNotAvail", "bigipGtmPoolNotAvail": "bigipGtmPoolNotAvail", "bigipGtmProberPoolDisabled": "bigipGtmProberPoolDisabled", "bigipGtmProberPoolEnabled": "bigipGtmProberPoolEnabled", "bigipGtmProberPoolMbrDisabled": "bigipGtmProberPoolMbrDisabled", "bigipGtmProberPoolMbrEnabled": "bigipGtmProberPoolMbrEnabled", "bigipGtmProberPoolMbrStatusChange": "bigipGtmProberPoolMbrStatusChange", "bigipGtmProberPoolMbrStatusChangeReason": "bigipGtmProberPoolMbrStatusChangeReason", "bigipGtmProberPoolStatusChange": "bigipGtmProberPoolStatusChange", "bigipGtmProberPoolStatusChangeReason": "bigipGtmProberPoolStatusChangeReason", "bigipGtmRequestRateLimiterEngaged": "bigipGtmRequestRateLimiterEngaged", "bigipGtmServerAvail": "bigipGtmServerAvail", "bigipGtmServerDisabled": "bigipGtmServerDisabled", "bigipGtmServerEnabled": "bigipGtmServerEnabled", "bigipGtmServerNotAvail": "bigipGtmServerNotAvail", "bigipGtmSslCertExpired": "bigipGtmSslCertExpired", "bigipGtmSslCertWillExpire": "bigipGtmSslCertWillExpire", "bigipGtmVsAvail": "bigipGtmVsAvail", "bigipGtmVsDisabled": "bigipGtmVsDisabled", "bigipGtmVsEnabled": "bigipGtmVsEnabled", "bigipGtmVsNotAvail": "bigipGtmVsNotAvail", "bigipGtmWideIpAvail": "bigipGtmWideIpAvail", "bigipGtmWideIpDisabled": "bigipGtmWideIpDisabled", "bigipGtmWideIpEnabled": "bigipGtmWideIpEnabled", "bigipGtmWideIpNotAvail": "bigipGtmWideIpNotAvail", "bigipHardDiskFailure": "bigipHardDiskFailure", "bigipInetPortExhaustion": "bigipInetPortExhaustion", "bigipLibhalBladePoweredOff": "bigipLibhalBladePoweredOff", "bigipLibhalDiskBayRemoved": "bigipLibhalDiskBayRemoved", "bigipLibhalSensorAlarmCritical": "bigipLibhalSensorAlarmCritical", "bigipLibhalSsdLogicalDiskRemoved": "bigipLibhalSsdLogicalDiskRemoved", "bigipLibhalSsdPhysicalDiskRemoved": "bigipLibhalSsdPhysicalDiskRemoved", "bigipLicenseExpired": "bigipLicenseExpired", "bigipLicenseFailed": "bigipLicenseFailed", "bigipLogAlert": "bigipLogAlert", "bigipLogCrit": "bigipLogCrit", "bigipLogEmerg": "bigipLogEmerg", "bigipLogErr": "bigipLogErr", "bigipLogWarning": "bigipLogWarning", "bigipLtmVsAvail": "bigipLtmVsAvail", "bigipLtmVsDisabled": "bigipLtmVsDisabled", "bigipLtmVsEnabled": "bigipLtmVsEnabled", "bigipLtmVsUnavail": "bigipLtmVsUnavail", "bigipMemberRate": "bigipMemberRate", "bigipNetLinkDown": "bigipNetLinkDown", "bigipNodeDown": "bigipNodeDown", "bigipNodeRate": "bigipNodeRate", "bigipNodeUp": "bigipNodeUp", "bigipPacketRejected": "bigipPacketRejected", "bigipPsAbsent": "bigipPsAbsent", "bigipPsPowerOff": "bigipPsPowerOff", "bigipPsPowerOn": "bigipPsPowerOn", "bigipRaidDiskFailure": "bigipRaidDiskFailure", "bigipServiceDown": "bigipServiceDown", "bigipServiceUp": "bigipServiceUp", "bigipSsdMwiNearThreshold": "bigipSsdMwiNearThreshold", "bigipSsdMwiReachedThreshold": "bigipSsdMwiReachedThreshold", "bigipSslLimitExceeded": "bigipSslLimitExceeded", "bigipStandby": "bigipStandby", "bigipStandByFail": "bigipStandByFail", "bigipSystemCheckAlertCurrentHigh": "bigipSystemCheckAlertCurrentHigh", "bigipSystemCheckAlertCurrentLow": "bigipSystemCheckAlertCurrentLow", "bigipSystemCheckAlertFanSpeedLow": "bigipSystemCheckAlertFanSpeedLow", "bigipSystemCheckAlertMilliVoltageHigh": "bigipSystemCheckAlertMilliVoltageHigh", "bigipSystemCheckAlertMilliVoltageLow": "bigipSystemCheckAlertMilliVoltageLow", "bigipSystemCheckAlertPowerHigh": "bigipSystemCheckAlertPowerHigh", "bigipSystemCheckAlertPowerLow": "bigipSystemCheckAlertPowerLow", "bigipSystemCheckAlertTempHigh": "bigipSystemCheckAlertTempHigh", "bigipSystemCheckAlertVoltageHigh": "bigipSystemCheckAlertVoltageHigh", "bigipSystemCheckAlertVoltageLow": "bigipSystemCheckAlertVoltageLow", "bigipSystemShutdown": "bigipSystemShutdown", "bigipTamdAlert": "bigipTamdAlert", "bigipTrafficGroupActivate": "bigipTrafficGroupActivate", "bigipTrafficGroupActive": "bigipTrafficGroupActive", "bigipTrafficGroupDeactivate": "bigipTrafficGroupDeactivate", "bigipTrafficGroupForcedOffline": "bigipTrafficGroupForcedOffline", "bigipTrafficGroupOffline": "bigipTrafficGroupOffline", "bigipTrafficGroupStandby": "bigipTrafficGroupStandby", "bigipUnsolicitedRepliesExceededThreshold": "bigipUnsolicitedRepliesExceededThreshold", "bigipUpdateError": "bigipUpdateError", "bigipUpdatePriority": "bigipUpdatePriority", "bigipUpdateServer": "bigipUpdateServer", "bigipVcmpAlertsVcmpHBDetected": "bigipVcmpAlertsVcmpHBDetected", "bigipVcmpAlertsVcmpHBLost": "bigipVcmpAlertsVcmpHBLost", "bigipVcmpAlertsVcmpPowerOff": "bigipVcmpAlertsVcmpPowerOff", "bigipVcmpAlertsVcmpPowerOn": "bigipVcmpAlertsVcmpPowerOn", "bigipVirtualRate": "bigipVirtualRate", "coldStart": "coldStart", "emASMSigInstallComplete": "emASMSigInstallComplete", "emASMSigInstallFailed": "emASMSigInstallFailed", "emASMSigUpdateAvailable": "emASMSigUpdateAvailable", "emASMSigUpdateFailed": "emASMSigUpdateFailed", "emCertificateExpiration": "emCertificateExpiration", "emCpuUsage": "emCpuUsage", "emDeviceActiveMode": "emDeviceActiveMode", "emDeviceClockSkew": "emDeviceClockSkew", "emDeviceConfigSettingChanged": "emDeviceConfigSettingChanged", "emDeviceConfigSync": "emDeviceConfigSync", "emDeviceForcedOfflineMode": "emDeviceForcedOfflineMode", "emDeviceImpaired": "emDeviceImpaired", "emDeviceOfflineMode": "emDeviceOfflineMode", "emDeviceStandbyMode": "emDeviceStandbyMode", "emDeviceUnreachable": "emDeviceUnreachable", "emDiskUsage": "emDiskUsage", "emGatherServiceContractFailure": "emGatherServiceContractFailure", "emHaSyncFailed": "emHaSyncFailed", "emHotfixInstallComplete": "emHotfixInstallComplete", "emHotfixInstallFailed": "emHotfixInstallFailed", "emMemoryUsage": "emMemoryUsage", "emPerformanceStorageCap": "emPerformanceStorageCap", "emPerformanceStorageDays": "emPerformanceStorageDays", "emPerformanceThreshold": "emPerformanceThreshold", "emRaidDriveFailureDetected": "emRaidDriveFailureDetected", "emRaidDriveRebuildComplete": "emRaidDriveRebuildComplete", "emSchedBackupFailed": "emSchedBackupFailed", "emScheduledArchiveFailed": "emScheduledArchiveFailed", "emServiceContractExpiry": "emServiceContractExpiry", "emSoftwareInstallComplete": "emSoftwareInstallComplete", "emSoftwareInstallFailed": "emSoftwareInstallFailed", "emStatsCollectionRateCap": "emStatsCollectionRateCap", "emStatsDBConnectivityLost": "emStatsDBConnectivityLost", "emStatsDBConnectivityRestored": "emStatsDBConnectivityRestored", "fallingAlarm": "fallingAlarm", "ipv6IfStateChange": "ipv6IfStateChange", "linkDown": "linkDown", "linkUp": "linkUp", "mteEventSetFailure": "mteEventSetFailure", "mteTriggerFailure": "mteTriggerFailure", "mteTriggerFalling": "mteTriggerFalling", "mteTriggerFired": "mteTriggerFired", "mteTriggerRising": "mteTriggerRising", "netSnmpExampleHeartbeatNotification": "netSnmpExampleHeartbeatNotification", "newRoot": "newRoot", "nsNotifyRestart": "nsNotifyRestart", "nsNotifyShutdown": "nsNotifyShutdown", "nsNotifyStart": "nsNotifyStart", "risingAlarm": "risingAlarm", "schedActionFailure": "schedActionFailure", "smScriptAbort": "smScriptAbort", "smScriptException": "smScriptException", "smScriptResult": "smScriptResult", "topologyChange": "topologyChange", "ucdShutdown": "ucdShutdown", "ucdStart": "ucdStart", "warmStart": "warmStart" } }, "vUSP": { "vf": { "ctsf-xxx": "vCTS" }, "vfc": { "vCTS - CFED": "vCTS - CFED", "vCTS - Config": "vCTS - Config", "vCTS - DFED": "vCTS - DFED", "vCTS - TAFE-fsd": "vCTS - TAFE-fsd", "vCTS - GLS": "vCTS - GLS", "vCTS - XXX": "vCTS - XXX", "vCTS - Management Interface": "vCTS - Management Interface", "vCTS - SPFE-pfe": "vCTS - SPFE-pfe", "vCTS - DNS": "vCTS - DNS", "vCTS - SPFE-spd": "vCTS - SPFE-spd", "vCTS - SPFE-spt": "vCTS - SPFE-spt", "vCTS - TAFE-tas": "vCTS - TAFE-tas" }, "location": { "SNDGCA06": "San Diego(core site) A06", "SNDGCA64": "San Diego(core site) A64", "SNANTXCA": "San Antonio(core site)", "KSCYMO09": "Kansas City(core site)", "kings_mountain": "Kings Mountain(AMG)", "Secaucus": "Secaucus(AMG)", "lisle": "Lisle(AMG)", "concord": "Concord(AMG)", "houston": "Houston(AMG)", "akron": "Akron(AMG)" }, "alarmCondition": { "acrTemporaryBufferOverload": "acrTemporaryBufferOverload", "adnsExtendedTTLcaching": "adnsExtendedTTLcaching", "adnsQueryFailureCaching": "adnsQueryFailureCaching", "adnsQueueCongestion": "adnsQueueCongestion", "asdaCommunicationFailure": "asdaCommunicationFailure", "asdaRequestQueue": "asdaRequestQueue", "capacityLicenseKeyExpiration": "capacityLicenseKeyExpiration", "capacityLicenseKeyNearExpiration": "capacityLicenseKeyNearExpiration", "capacityLicenseKeyValidationError": "capacityLicenseKeyValidationError", "cardConnectionLost": "cardConnectionLost", "ccdbCommunicationFailure": "ccdbCommunicationFailure", "cpiAlrmCritical": "cpiAlrmCritical", "cpiAlrmMajor": "cpiAlrmMajor", "cpiAlrmMinor": "cpiAlrmMinor", "cpiAlrmWarning": "cpiAlrmWarning", "cpiAsrtEsc": "cpiAsrtEsc", "cpiAsrtNonEsc": "cpiAsrtNonEsc", "cpiAsrtNonEscCritical": "cpiAsrtNonEscCritical", "cpiAsrtNonEscMajor": "cpiAsrtNonEscMajor", "cpiAsrtNonEscMinor": "cpiAsrtNonEscMinor", "cpiAudErrCount": "cpiAudErrCount", "cpiAudManAct": "cpiAudManAct", "cpiAudNewEvent": "cpiAudNewEvent", "cpiCompleteRateAlarm": "cpiCompleteRateAlarm", "cpiCTS3xxFailRate": "cpiCTS3xxFailRate", "cpiCTS4xxFailRate": "cpiCTS4xxFailRate", "cpiCTS5xxFailRate": "cpiCTS5xxFailRate", "cpiCTS6xxFailRate": "cpiCTS6xxFailRate", "cpiCTSSIPRetransmitInvite": "cpiCTSSIPRetransmitInvite", "cpiCTSSIPRetransmitNonInvite": "cpiCTSSIPRetransmitNonInvite", "cpiDropMGAllocConnReq": "cpiDropMGAllocConnReq", "cpiDropRateAlarm": "cpiDropRateAlarm", "cpiExceptionService": "cpiExceptionService", "cpiFailRateAlarm": "cpiFailRateAlarm", "cpiFailSCTPFastRetransIncr": "cpiFailSCTPFastRetransIncr", "cpiFailSCTPFastRetransRate": "cpiFailSCTPFastRetransRate", "cpiFailSCTPSRTT1Incr": "cpiFailSCTPSRTT1Incr", "cpiFailSCTPSRTT2Incr": "cpiFailSCTPSRTT2Incr", "cpiFailSCTPT3RetransIncr": "cpiFailSCTPT3RetransIncr", "cpiFailSCTPT3RetransRate": "cpiFailSCTPT3RetransRate", "cpiFileSysUsage": "cpiFileSysUsage", "cpiMemAllocFail": "cpiMemAllocFail", "cpiNumOfLICDRDel": "cpiNumOfLICDRDel", "cpiReinitServiceSelf": "cpiReinitServiceSelf", "cpiSIPRetransmitInvite": "cpiSIPRetransmitInvite", "cpiSIPRetransmitNonInvite": "cpiSIPRetransmitNonInvite", "cpiSS7DropSCTPPktsRcvd": "cpiSS7DropSCTPPktsRcvd", "cpiSS7FailSCTPFastRetransRate": "cpiSS7FailSCTPFastRetransRate", "cpiStabilityAlarm": "cpiStabilityAlarm", "cpuOverload": "cpuOverload", "databaseConnectionLost": "databaseConnectionLost", "databaseReplicationLinkDown": "databaseReplicationLinkDown", "databaseSizeExhausted": "databaseSizeExhausted", "dbHighCpuUtilization": "dbHighCpuUtilization", "dbOffline": "dbOffline", "dbStatusUnexpected": "dbStatusUnexpected", "degradedResource": "degradedResource", "degrow": "degrow", "deviceServerCxnLost": "deviceServerCxnLost", "diamLinkDown": "diamLinkDown", "diamMaxClientsExceeded": "diamMaxClientsExceeded", "dnsThreshold": "dnsThreshold", "ethernetError": "ethernetError", "ethernetLinkDown": "ethernetLinkDown", "externalConnectivity": "externalConnectivity", "featureLicenseExpiration": "featureLicenseExpiration", "featureLicenseKeyNearExpiration": "featureLicenseKeyNearExpiration", "featureLockValidationError": "featureLockValidationError", "fqdnError": "fqdnError", "fru": "fru", "gatewayCongestion": "gatewayCongestion", "gatewayForcedOOS": "gatewayForcedOOS", "gatewayProvisioningError": "gatewayProvisioningError", "gatewayUnreachable": "gatewayUnreachable", "gatewayUnregistered": "gatewayUnregistered", "globalParameterNotFound": "globalParameterNotFound", "glsInvalidCellId": "glsInvalidCellId", "glsServerUnavailable": "glsServerUnavailable", "grow": "grow", "h248MessageBufferDepletion": "h248MessageBufferDepletion", "hlrSyncConnection": "hlrSyncConnection", "hlrSyncQueue": "hlrSyncQueue", "hostDown": "hostDown", "hostReset": "hostReset", "invalidGateway": "invalidGateway", "iriLinkDown": "iriLinkDown", "ldapServerConnectionLost": "ldapServerConnectionLost", "lispBufferFullExternalLIG": "lispBufferFullExternalLIG", "llcDown": "llcDown", "logicalLinkDown": "logicalLinkDown", "logicalLinkNotFound": "logicalLinkNotFound", "logRotateThreshold": "logRotateThreshold", "memoryOverload": "memoryOverload", "nodeConfigFailure": "nodeConfigFailure", "nodeGroupOOS": "nodeGroupOOS", "nodeOOS": "nodeOOS", "nonCompliantFaultGroupMemberState": "nonCompliantFaultGroupMemberState", "nonCsAddrChannelDepletion": "nonCsAddrChannelDepletion", "numberOfTuplesInUse": "numberOfTuplesInUse", "osSecInfoModificationDetected": "osSecInfoModificationDetected", "osSecInformationMissing": "osSecInformationMissing", "osSecUnexpectedInformation": "osSecUnexpectedInformation", "pdnsMySqlReplication": "pdnsMySqlReplication", "pktCorruptionDetectedViaRCCLANCheck": "pktCorruptionDetectedViaRCCLANCheck", "platformCommandFailure": "platformCommandFailure", "pmDataNotCollected": "pmDataNotCollected", "prdbConnectWithAlternateFailure": "prdbConnectWithAlternateFailure", "prdbSyncDataToAlternateFailure": "prdbSyncDataToAlternateFailure", "preAllocatedResourceOverload": "preAllocatedResourceOverload", "prifSocketError": "prifSocketError", "processDown": "processDown", "processNotStarted": "processNotStarted", "provisioningInhibitedMode": "provisioningInhibitedMode", "prsCallInstanceExceeded": "prsCallInstanceExceeded", "prsCpuOverload": "prsCpuOverload", "prsDatabaseMigrationFailure": "prsDatabaseMigrationFailure", "prsFailureToConnectWithPRDB": "prsFailureToConnectWithPRDB", "prsQueueExceeded": "prsQueueExceeded", "rccInhibitedMode": "rccInhibitedMode", "remotedbLinkDown": "remotedbLinkDown", "remoteQueryServerFailure": "remoteQueryServerFailure", "restore": "restore", "serviceCFGDataTimestampError": "serviceCFGDataTimestampError", "serviceCommCxnLost": "serviceCommCxnLost", "serviceOnewayCommunication": "serviceOnewayCommunication", "sheddingOverload": "sheddingOverload", "simxml": "simxml", "sipLinkSetMaxQuarantineList": "sipLinkSetMaxQuarantineList", "sipLinkSetUnavailable": "sipLinkSetUnavailable", "sipLinkUnavailable": "sipLinkUnavailable", "smdiSocketError": "smdiSocketError", "socketError": "socketError", "softwareAllocatedResourceOverload": "softwareAllocatedResourceOverload", "softwareComponentDown": "softwareComponentDown", "softwareComponentStandbyNotReady": "softwareComponentStandbyNotReady", "softwareLicense": "softwareLicense", "svcdegrow": "svcdegrow", "svcgrow": "svcgrow", "swVersionMismatch": "swVersionMismatch", "tftpDownloadCorrupt": "tftpDownloadCorrupt", "timeStampValueOutOfSystemRange": "timeStampValueOutOfSystemRange", "tlsInitError": "tlsInitError", "transactionHandlerBlockDepletion": "transactionHandlerBlockDepletion", "upgrade": "upgrade", "usageOfSyncTable": "usageOfSyncTable", "utHttpProxyConnectionDown": "utHttpProxyConnectionDown", "wpifSocketError": "wpifSocketError", "BackupFailure": "BackupFailure", "Configuration": "Configuration", "COTRecordTransferFailure": "COTRecordTransferFailure", "CPMUSERDATAINCONSITENCY": "CPMUSERDATAINCONSITENCY", "CPMUSERDATARESTORED": "CPMUSERDATARESTORED", "EventQueueCapacity": "EventQueueCapacity", "ICMPFailure": "ICMPFailure", "IPsecConfig": "IPsecConfig", "LinkDown": "LinkDown", "NotifyDisabled": "NotifyDisabled", "NotifyLocked": "NotifyLocked", "NumTL1MeasThresh": "NumTL1MeasThresh", "RADIUSTOLDAPFAILURE": "RADIUSTOLDAPFAILURE", "ROOTACCESSDENIED": "ROOTACCESSDENIED", "ROOTFTPVIOLATION": "ROOTFTPVIOLATION", "ROOTLOGINVIOLATION": "ROOTLOGINVIOLATION", "ROOTSSHLOGINVIOLATION": "ROOTSSHLOGINVIOLATION", "SetupAAAFailure": "SetupAAAFailure", "SNETrapOverload": "SNETrapOverload", "SNMPAuthenticationFailure": "SNMPAuthenticationFailure", "SNMPFailure": "SNMPFailure", "SUTOROOTFAILURE": "SUTOROOTFAILURE", "SYSTEMTrapOverload": "SYSTEMTrapOverload", "ThresholdCrossed": "ThresholdCrossed", "UndiscoveredObject": "UndiscoveredObject", "WriteAAAFailure": "WriteAAAFailure" } }, "Trinity": { "vf": { "aSBG": "aSBG", "nSBG": "nSBG", "tSBG": "tSBG" }, "vfc": { "pld": "PL - Payload Processor", "scr": "SC - System Controller" }, "location": { "SNDGCA64": "San Diego SAN3", "ALPRGAED": "Alpharetta PDK1", "LSLEILAA":"Lisle DPA3" }, "alarmCondition": { "A+Fallback+Operation+will+soon+be+started":"A Fallback Operation will soon be started", "BRM%2C+Auto+Export+Backup+Failed":"BRM, Auto Export Backup Failed", "BRM%2C+Scheduled+Backup+Failed":"BRM, Scheduled Backup Failed", "COM+SA%2C+AMF+Component+Cleanup+Failed":"COM SA, AMF Component Cleanup Failed", "COM+SA%2C+AMF+Component+Instantiation+Failed":"COM SA, AMF Component Instantiation Failed", "COM+SA%2C+AMF+SI+Unassigned":"COM SA, AMF SI Unassigned", "COM+SA%2C+CLM+Cluster+Node+Unavailable":"COM SA, CLM Cluster Node Unavailable", "COM+SA%2C+MDF+Detected+Model+Error":"COM SA, MDF Detected Model Error", "COM+SA%2C+Proxy+Status+of+a+Component+Changed+to+Unproxied":"COM SA, Proxy Status of a Component Changed to Unproxied", "File+Management%2C+Number+of+Files+in+FileGroup+Exceeded":"File Management, Number of Files in FileGroup Exceeded", "File+Management%2C+Max+Size+in+FileGroup+Exceeded":"File Management, Max Size in FileGroup Exceeded", "LOTC+Disk+Replication+Communication":"LOTC Disk Replication Communication", "LOTC+Disk+Replication+Consistency":"LOTC Disk Replication Consistency", "LOTC+Disk+Usage":"LOTC Disk Usage", "LOTC+memory+Usage":"LOTC memory Usage", "LOTC+Time+Synchronization":"LOTC Time Synchronization", "SBG%2C+BGF+Control+Link+Down":"SBG, BGF Control Link Down", "SBG%2C+BGF+Control+Link+Disabled":"SBG, BGF Control Link Disabled", "SBG%2C+BGF+Control+Link+Enabled":"SBG, BGF Control Link Enabled", "SBG%2C+BGF+Control+Link+Remote+Locked":"SBG, BGF Control Link Remote Locked", "SBG%2C+Charging+Data+Storage+Maximum+Records+Reached":"SBG, Charging Data Storage Maximum Records Reached", "SBG%2C+Charging+Server+Rejects+Charging+Data":"SBG, Charging Server Rejects Charging Data", "SBG%2C+Excessive+Packet+Rate+Detected+":"SBG, Excessive Packet Rate Detected ", "SBG%2C+High+Amount+of+Malformed+Packets+Received":"SBG, High Amount of Malformed Packets Received", "SBG%2C+High+Amount+of+STUN+Packets+Detected":"SBG, High Amount of STUN Packets Detected", "SBG%2C+High+Amount+of+TCP+SYN+Packets+Received":"SBG, High Amount of TCP SYN Packets Received", "SBG%2C+High+Amount+of+UDP+Packets+Received+":"SBG, High Amount of UDP Packets Received ", "SBG%2C+IP+Address+Blocked+Due+to+Excessive+Packet+Rate":"SBG, IP Address Blocked Due to Excessive Packet Rate", "SBG%2C+Lost+Connectivity+to+Diameter+Server":"SBG, Lost Connectivity to Diameter Server", "SBG%2C+Mated+Pair+out+of+Service":"SBG, Mated Pair out of Service", "SBG%2C+Network+Unavailable+for+Media+Handling":"SBG, Network Unavailable for Media Handling", "SBG%2C+Non-emergency+Call+Released+to+Free+Resources+for+Emergency+Call":"SBG, Non-emergency Call Released to Free Resources for Emergency Call", "SBG%2C+Not+Enough+Disk+Space+for+Storing+Charging+Data":"SBG, Not Enough Disk Space for Storing Charging Data", "SBG%2C+Payload+Mated+Pair+Failure":"SBG, Payload Mated Pair Failure", "SBG%2C+Payload+Processor+Failure":"SBG, Payload Processor Failure", "SBG%2C+Processor+Overloaded":"SBG, Processor Overloaded", "SBG%2C+Registered+User+Set+in+Quarantine":"SBG, Registered User Set in Quarantine", "SBG%2C+Registration+Contacts+Exceed+Configured+Threshold":"SBG, Registration Contacts Exceed Configured Threshold", "SBG%2C+Sequential+Restart+Initiated":"SBG, Sequential Restart Initiated", "SBG%2C+SIP+Abuse+Detected":"SBG, SIP Abuse Detected", "SBG%2C+SIP+Network+Locked":"SBG, SIP Network Locked", "SBG%2C+SIP+Next+Hop+Reachable":"SBG, SIP Next Hop Reachable", "SBG%2C+SIP+Next+Hop+Unreachable":"SBG, SIP Next Hop Unreachable", "SBG%2C+SIP+Request+Rejected+by+Network+Throttling":"SBG, SIP Request Rejected by Network Throttling", "SBG%2C+TLS+Certificate+Imported":"SBG, TLS Certificate Imported", "SBG%2C+Trace+Recording+Session+Number+Limit+Reached":"SBG, Trace Recording Session Number Limit Reached", "SBG%2C+Trace+Session+Deactivated":"SBG, Trace Session Deactivated", "SBG%2C+Trace+Session+Times+Out":"SBG, Trace Session Times Out", "SBG%2C+Unknown+Media+Type+or+Payload+Type":"SBG, Unknown Media Type or Payload Type" } }, "vProbes": { "vf": { }, "vfc": { }, "location": { }, "alarmCondition": { } } } } } -globalPropsPartial={"global": { "service": { "": "", "vUSP": "vUSP", "vSCP": "vSCP", "vProbes": "vProbes" } }, "policy": { "timeout": 5, "recipe": { "": "", "restart": "Restart", "rebuild": "Rebuild", "migrate": "Migrate" }, "maxRetries": "3", "retryTimeLimit": 180, "resource": { "vCTS": "vCTS", "v3CDB": "v3CDB", "vUDR": "vUDR", "vCOM": "vCOM", "vRAR": "vRAR", "vLCS": "vLCS", "vUDR-BE": "vUDR-BE", "vDBE": "vDBE" }, "parentPolicyConditions": { "Failure_Retries": "Failure: Max Retries Exceeded", "Failure_Timeout": "Failure: Time Limit Exceeded", "Failure_Exception": "Failure: Exception", "Failure": "Failure: Other", "Success": "Success" } } } -globalPropsTest={"global": { "service": { "": "", "vUSP": "vUSP", "vSCP": "vSCP", "vProbes": "vProbes" } }, "policy": { "timeout": 5, "recipe": { "": "", "restart": "Restart", "rebuild": "Rebuild", "migrate": "Migrate" }, "maxRetries": "3", "retryTimeLimit": 180, "resource": { "vCTS": "vCTS", "v3CDB": "v3CDB", "vUDR": "vUDR", "vCOM": "vCOM", "vRAR": "vRAR", "vLCS": "vLCS", "vUDR-BE": "vUDR-BE", "vDBE": "vDBE" }, "parentPolicyConditions": { "Failure_Retries": "Failure: Max Retries Exceeded", "Failure_Timeout": "Failure: Time Limit Exceeded", "Failure_Exception": "Failure: Exception", "Failure": "Failure: Other", "Success": "Success" } }, "shared": { "byService": { "": { "vf": { }, "vfc": { }, "location": { }, "alarmCondition": { } }, "vSCP": { "vf": { "frwl_scp": "FW" }, "vfc": { "FW": "FW" }, "location": { "AKRNOHAH": "Akron", "ALLNTXSA": "Allen-2" }, "alarmCondition": { "authenticationFailure": "authenticationFailure", "bigipActive": "bigipActive", "bigipActiveActive": "bigipActiveActive", "bigipAgentRestart": "bigipAgentRestart", "bigipAgentShutdown": "bigipAgentShutdown", "bigipAgentStart": "bigipAgentStart", "bigipAggrReaperStateChange": "bigipAggrReaperStateChange", "bigipAomCpuTempTooHigh": "bigipAomCpuTempTooHigh", "bigipARPConflict": "bigipARPConflict", "bigipAsmBruteForceAttackDetected": "bigipAsmBruteForceAttackDetected", "bigipAsmDosAttackDetected": "bigipAsmDosAttackDetected", "bigipAsmFtpRequestBlocked": "bigipAsmFtpRequestBlocked", "bigipAsmFtpRequestViolation": "bigipAsmFtpRequestViolation", "bigipAsmRequestBlocked": "bigipAsmRequestBlocked", "bigipAsmRequestViolation": "bigipAsmRequestViolation", "bigipAsmSmtpRequestBlocked": "bigipAsmSmtpRequestBlocked", "bigipAsmSmtpRequestViolation": "bigipAsmSmtpRequestViolation", "bigipAuthFailed": "bigipAuthFailed", "bigipAvrAlertsMetricSmtp": "bigipAvrAlertsMetricSmtp", "bigipAvrAlertsMetricSnmp": "bigipAvrAlertsMetricSnmp", "bigipBladeNoPower": "bigipBladeNoPower", "bigipBladeOffline": "bigipBladeOffline", "bigipBladeTempHigh": "bigipBladeTempHigh", "bigipChassisFanBad": "bigipChassisFanBad", "bigipChassisPowerSupplyBad": "bigipChassisPowerSupplyBad", "bigipChassisTempHigh": "bigipChassisTempHigh", "bigipChmandAlertFanTrayBad": "bigipChmandAlertFanTrayBad", "bigipClusterdNoResponse": "bigipClusterdNoResponse", "bigipClusterPrimaryChanged": "bigipClusterPrimaryChanged", "bigipCompLimitExceeded": "bigipCompLimitExceeded", "bigipConfigLoaded": "bigipConfigLoaded", "bigipCpuFanSpeedBad": "bigipCpuFanSpeedBad", "bigipCpuFanSpeedLow": "bigipCpuFanSpeedLow", "bigipCpuTempHigh": "bigipCpuTempHigh", "bigipDiskPartitionGrowth": "bigipDiskPartitionGrowth", "bigipDiskPartitionWarn": "bigipDiskPartitionWarn", "bigipDnsRequestRateLimiterEngaged": "bigipDnsRequestRateLimiterEngaged", "bigipDosAttackStart": "bigipDosAttackStart", "bigipDosAttackStop": "bigipDosAttackStop", "bigipExternalLinkChange": "bigipExternalLinkChange", "bigipFeatureFailed": "bigipFeatureFailed", "bigipFeatureOnline": "bigipFeatureOnline", "bigipFipsDeviceError": "bigipFipsDeviceError", "bigipGtmAppAvail": "bigipGtmAppAvail", "bigipGtmAppNotAvail": "bigipGtmAppNotAvail", "bigipGtmAppObjAvail": "bigipGtmAppObjAvail", "bigipGtmAppObjNotAvail": "bigipGtmAppObjNotAvail", "bigipGtmBig3dSslCertExpired": "bigipGtmBig3dSslCertExpired", "bigipGtmBig3dSslCertWillExpire": "bigipGtmBig3dSslCertWillExpire", "bigipGtmBoxAvail": "bigipGtmBoxAvail", "bigipGtmBoxNotAvail": "bigipGtmBoxNotAvail", "bigipGtmDcAvail": "bigipGtmDcAvail", "bigipGtmDcDisabled": "bigipGtmDcDisabled", "bigipGtmDcEnabled": "bigipGtmDcEnabled", "bigipGtmDcNotAvail": "bigipGtmDcNotAvail", "bigipGtmJoinedGroup": "bigipGtmJoinedGroup", "bigipGtmKeyGenerationExpiration": "bigipGtmKeyGenerationExpiration", "bigipGtmKeyGenerationRollover": "bigipGtmKeyGenerationRollover", "bigipGtmLeftGroup": "bigipGtmLeftGroup", "bigipGtmLinkAvail": "bigipGtmLinkAvail", "bigipGtmLinkDisabled": "bigipGtmLinkDisabled", "bigipGtmLinkEnabled": "bigipGtmLinkEnabled", "bigipGtmLinkNotAvail": "bigipGtmLinkNotAvail", "bigipGtmPoolAvail": "bigipGtmPoolAvail", "bigipGtmPoolDisabled": "bigipGtmPoolDisabled", "bigipGtmPoolEnabled": "bigipGtmPoolEnabled", "bigipGtmPoolMbrAvail": "bigipGtmPoolMbrAvail", "bigipGtmPoolMbrDisabled": "bigipGtmPoolMbrDisabled", "bigipGtmPoolMbrEnabled": "bigipGtmPoolMbrEnabled", "bigipGtmPoolMbrNotAvail": "bigipGtmPoolMbrNotAvail", "bigipGtmPoolNotAvail": "bigipGtmPoolNotAvail", "bigipGtmProberPoolDisabled": "bigipGtmProberPoolDisabled", "bigipGtmProberPoolEnabled": "bigipGtmProberPoolEnabled", "bigipGtmProberPoolMbrDisabled": "bigipGtmProberPoolMbrDisabled", "bigipGtmProberPoolMbrEnabled": "bigipGtmProberPoolMbrEnabled", "bigipGtmProberPoolMbrStatusChange": "bigipGtmProberPoolMbrStatusChange", "bigipGtmProberPoolMbrStatusChangeReason": "bigipGtmProberPoolMbrStatusChangeReason", "bigipGtmProberPoolStatusChange": "bigipGtmProberPoolStatusChange", "bigipGtmProberPoolStatusChangeReason": "bigipGtmProberPoolStatusChangeReason", "bigipGtmRequestRateLimiterEngaged": "bigipGtmRequestRateLimiterEngaged", "bigipGtmServerAvail": "bigipGtmServerAvail", "bigipGtmServerDisabled": "bigipGtmServerDisabled", "bigipGtmServerEnabled": "bigipGtmServerEnabled", "bigipGtmServerNotAvail": "bigipGtmServerNotAvail", "bigipGtmSslCertExpired": "bigipGtmSslCertExpired", "bigipGtmSslCertWillExpire": "bigipGtmSslCertWillExpire", "bigipGtmVsAvail": "bigipGtmVsAvail", "bigipGtmVsDisabled": "bigipGtmVsDisabled", "bigipGtmVsEnabled": "bigipGtmVsEnabled", "bigipGtmVsNotAvail": "bigipGtmVsNotAvail", "bigipGtmWideIpAvail": "bigipGtmWideIpAvail", "bigipGtmWideIpDisabled": "bigipGtmWideIpDisabled", "bigipGtmWideIpEnabled": "bigipGtmWideIpEnabled", "bigipGtmWideIpNotAvail": "bigipGtmWideIpNotAvail", "bigipHardDiskFailure": "bigipHardDiskFailure", "bigipInetPortExhaustion": "bigipInetPortExhaustion", "bigipLibhalBladePoweredOff": "bigipLibhalBladePoweredOff", "bigipLibhalDiskBayRemoved": "bigipLibhalDiskBayRemoved", "bigipLibhalSensorAlarmCritical": "bigipLibhalSensorAlarmCritical", "bigipLibhalSsdLogicalDiskRemoved": "bigipLibhalSsdLogicalDiskRemoved", "bigipLibhalSsdPhysicalDiskRemoved": "bigipLibhalSsdPhysicalDiskRemoved", "bigipLicenseExpired": "bigipLicenseExpired", "bigipLicenseFailed": "bigipLicenseFailed", "bigipLogAlert": "bigipLogAlert", "bigipLogCrit": "bigipLogCrit", "bigipLogEmerg": "bigipLogEmerg", "bigipLogErr": "bigipLogErr", "bigipLogWarning": "bigipLogWarning", "bigipLtmVsAvail": "bigipLtmVsAvail", "bigipLtmVsDisabled": "bigipLtmVsDisabled", "bigipLtmVsEnabled": "bigipLtmVsEnabled", "bigipLtmVsUnavail": "bigipLtmVsUnavail", "bigipMemberRate": "bigipMemberRate", "bigipNetLinkDown": "bigipNetLinkDown", "bigipNodeDown": "bigipNodeDown", "bigipNodeRate": "bigipNodeRate", "bigipNodeUp": "bigipNodeUp", "bigipPacketRejected": "bigipPacketRejected", "bigipPsAbsent": "bigipPsAbsent", "bigipPsPowerOff": "bigipPsPowerOff", "bigipPsPowerOn": "bigipPsPowerOn", "bigipRaidDiskFailure": "bigipRaidDiskFailure", "bigipServiceDown": "bigipServiceDown", "bigipServiceUp": "bigipServiceUp", "bigipSsdMwiNearThreshold": "bigipSsdMwiNearThreshold", "bigipSsdMwiReachedThreshold": "bigipSsdMwiReachedThreshold", "bigipSslLimitExceeded": "bigipSslLimitExceeded", "bigipStandby": "bigipStandby", "bigipStandByFail": "bigipStandByFail", "bigipSystemCheckAlertCurrentHigh": "bigipSystemCheckAlertCurrentHigh", "bigipSystemCheckAlertCurrentLow": "bigipSystemCheckAlertCurrentLow", "bigipSystemCheckAlertFanSpeedLow": "bigipSystemCheckAlertFanSpeedLow", "bigipSystemCheckAlertMilliVoltageHigh": "bigipSystemCheckAlertMilliVoltageHigh", "bigipSystemCheckAlertMilliVoltageLow": "bigipSystemCheckAlertMilliVoltageLow", "bigipSystemCheckAlertPowerHigh": "bigipSystemCheckAlertPowerHigh", "bigipSystemCheckAlertPowerLow": "bigipSystemCheckAlertPowerLow", "bigipSystemCheckAlertTempHigh": "bigipSystemCheckAlertTempHigh", "bigipSystemCheckAlertVoltageHigh": "bigipSystemCheckAlertVoltageHigh", "bigipSystemCheckAlertVoltageLow": "bigipSystemCheckAlertVoltageLow", "bigipSystemShutdown": "bigipSystemShutdown", "bigipTamdAlert": "bigipTamdAlert", "bigipTrafficGroupActivate": "bigipTrafficGroupActivate", "bigipTrafficGroupActive": "bigipTrafficGroupActive", "bigipTrafficGroupDeactivate": "bigipTrafficGroupDeactivate", "bigipTrafficGroupForcedOffline": "bigipTrafficGroupForcedOffline", "bigipTrafficGroupOffline": "bigipTrafficGroupOffline", "bigipTrafficGroupStandby": "bigipTrafficGroupStandby", "bigipUnsolicitedRepliesExceededThreshold": "bigipUnsolicitedRepliesExceededThreshold", "bigipUpdateError": "bigipUpdateError", "bigipUpdatePriority": "bigipUpdatePriority", "bigipUpdateServer": "bigipUpdateServer", "bigipVcmpAlertsVcmpHBDetected": "bigipVcmpAlertsVcmpHBDetected", "bigipVcmpAlertsVcmpHBLost": "bigipVcmpAlertsVcmpHBLost", "bigipVcmpAlertsVcmpPowerOff": "bigipVcmpAlertsVcmpPowerOff", "bigipVcmpAlertsVcmpPowerOn": "bigipVcmpAlertsVcmpPowerOn", "bigipVirtualRate": "bigipVirtualRate", "coldStart": "coldStart", "emASMSigInstallComplete": "emASMSigInstallComplete", "emASMSigInstallFailed": "emASMSigInstallFailed", "emASMSigUpdateAvailable": "emASMSigUpdateAvailable", "emASMSigUpdateFailed": "emASMSigUpdateFailed", "emCertificateExpiration": "emCertificateExpiration", "emCpuUsage": "emCpuUsage", "emDeviceActiveMode": "emDeviceActiveMode", "emDeviceClockSkew": "emDeviceClockSkew", "emDeviceConfigSettingChanged": "emDeviceConfigSettingChanged", "emDeviceConfigSync": "emDeviceConfigSync", "emDeviceForcedOfflineMode": "emDeviceForcedOfflineMode", "emDeviceImpaired": "emDeviceImpaired", "emDeviceOfflineMode": "emDeviceOfflineMode", "emDeviceStandbyMode": "emDeviceStandbyMode", "emDeviceUnreachable": "emDeviceUnreachable", "emDiskUsage": "emDiskUsage", "emGatherServiceContractFailure": "emGatherServiceContractFailure", "emHaSyncFailed": "emHaSyncFailed", "emHotfixInstallComplete": "emHotfixInstallComplete", "emHotfixInstallFailed": "emHotfixInstallFailed", "emMemoryUsage": "emMemoryUsage", "emPerformanceStorageCap": "emPerformanceStorageCap", "emPerformanceStorageDays": "emPerformanceStorageDays", "emPerformanceThreshold": "emPerformanceThreshold", "emRaidDriveFailureDetected": "emRaidDriveFailureDetected", "emRaidDriveRebuildComplete": "emRaidDriveRebuildComplete", "emSchedBackupFailed": "emSchedBackupFailed", "emScheduledArchiveFailed": "emScheduledArchiveFailed", "emServiceContractExpiry": "emServiceContractExpiry", "emSoftwareInstallComplete": "emSoftwareInstallComplete", "emSoftwareInstallFailed": "emSoftwareInstallFailed", "emStatsCollectionRateCap": "emStatsCollectionRateCap", "emStatsDBConnectivityLost": "emStatsDBConnectivityLost", "emStatsDBConnectivityRestored": "emStatsDBConnectivityRestored", "fallingAlarm": "fallingAlarm", "ipv6IfStateChange": "ipv6IfStateChange", "linkDown": "linkDown", "linkUp": "linkUp", "mteEventSetFailure": "mteEventSetFailure", "mteTriggerFailure": "mteTriggerFailure", "mteTriggerFalling": "mteTriggerFalling", "mteTriggerFired": "mteTriggerFired", "mteTriggerRising": "mteTriggerRising", "netSnmpExampleHeartbeatNotification": "netSnmpExampleHeartbeatNotification", "newRoot": "newRoot", "nsNotifyRestart": "nsNotifyRestart", "nsNotifyShutdown": "nsNotifyShutdown", "nsNotifyStart": "nsNotifyStart", "risingAlarm": "risingAlarm", "schedActionFailure": "schedActionFailure", "smScriptAbort": "smScriptAbort", "smScriptException": "smScriptException", "smScriptResult": "smScriptResult", "topologyChange": "topologyChange", "ucdShutdown": "ucdShutdown", "ucdStart": "ucdStart", "warmStart": "warmStart" } }, "vUSP": { "vf": { "ctsf-xxx": "vCTS" }, "vfc": { "vCTS - CFED": "vCTS - CFED", "vCTS - Config": "vCTS - Config", "vCTS - DFED": "vCTS - DFED", "vCTS - TAFE-fsd": "vCTS - TAFE-fsd", "vCTS - GLS": "vCTS - GLS", "vCTS - XXX": "vCTS - XXX", "vCTS - Management Interface": "vCTS - Management Interface", "vCTS - SPFE-pfe": "vCTS - SPFE-pfe", "vCTS - DNS": "vCTS - DNS", "vCTS - SPFE-spd": "vCTS - SPFE-spd", "vCTS - SPFE-spt": "vCTS - SPFE-spt", "vCTS - TAFE-tas": "vCTS - TAFE-tas" }, "location": { "SNDGCA06": "San Diego(core site) A06", "SNDGCA64": "San Diego(core site) A64", "SNANTXCA": "San Antonio(core site)", "KSCYMO09": "Kansas City(core site)", "kings_mountain": "Kings Mountain(AMG)", "Secaucus": "Secaucus(AMG)", "lisle": "Lisle(AMG)", "concord": "Concord(AMG)", "houston": "Houston(AMG)", "akron": "Akron(AMG)" }, "alarmCondition": { "acrTemporaryBufferOverload": "acrTemporaryBufferOverload", "adnsExtendedTTLcaching": "adnsExtendedTTLcaching", "adnsQueryFailureCaching": "adnsQueryFailureCaching", "adnsQueueCongestion": "adnsQueueCongestion", "asdaCommunicationFailure": "asdaCommunicationFailure", "asdaRequestQueue": "asdaRequestQueue", "capacityLicenseKeyExpiration": "capacityLicenseKeyExpiration", "capacityLicenseKeyNearExpiration": "capacityLicenseKeyNearExpiration", "capacityLicenseKeyValidationError": "capacityLicenseKeyValidationError", "cardConnectionLost": "cardConnectionLost", "ccdbCommunicationFailure": "ccdbCommunicationFailure", "cpiAlrmCritical": "cpiAlrmCritical", "cpiAlrmMajor": "cpiAlrmMajor", "cpiAlrmMinor": "cpiAlrmMinor", "cpiAlrmWarning": "cpiAlrmWarning", "cpiAsrtEsc": "cpiAsrtEsc", "cpiAsrtNonEsc": "cpiAsrtNonEsc", "cpiAsrtNonEscCritical": "cpiAsrtNonEscCritical", "cpiAsrtNonEscMajor": "cpiAsrtNonEscMajor", "cpiAsrtNonEscMinor": "cpiAsrtNonEscMinor", "cpiAudErrCount": "cpiAudErrCount", "cpiAudManAct": "cpiAudManAct", "cpiAudNewEvent": "cpiAudNewEvent", "cpiCompleteRateAlarm": "cpiCompleteRateAlarm", "cpiCTS3xxFailRate": "cpiCTS3xxFailRate", "cpiCTS4xxFailRate": "cpiCTS4xxFailRate", "cpiCTS5xxFailRate": "cpiCTS5xxFailRate", "cpiCTS6xxFailRate": "cpiCTS6xxFailRate", "cpiCTSSIPRetransmitInvite": "cpiCTSSIPRetransmitInvite", "cpiCTSSIPRetransmitNonInvite": "cpiCTSSIPRetransmitNonInvite", "cpiDropMGAllocConnReq": "cpiDropMGAllocConnReq", "cpiDropRateAlarm": "cpiDropRateAlarm", "cpiExceptionService": "cpiExceptionService", "cpiFailRateAlarm": "cpiFailRateAlarm", "cpiFailSCTPFastRetransIncr": "cpiFailSCTPFastRetransIncr", "cpiFailSCTPFastRetransRate": "cpiFailSCTPFastRetransRate", "cpiFailSCTPSRTT1Incr": "cpiFailSCTPSRTT1Incr", "cpiFailSCTPSRTT2Incr": "cpiFailSCTPSRTT2Incr", "cpiFailSCTPT3RetransIncr": "cpiFailSCTPT3RetransIncr", "cpiFailSCTPT3RetransRate": "cpiFailSCTPT3RetransRate", "cpiFileSysUsage": "cpiFileSysUsage", "cpiMemAllocFail": "cpiMemAllocFail", "cpiNumOfLICDRDel": "cpiNumOfLICDRDel", "cpiReinitServiceSelf": "cpiReinitServiceSelf", "cpiSIPRetransmitInvite": "cpiSIPRetransmitInvite", "cpiSIPRetransmitNonInvite": "cpiSIPRetransmitNonInvite", "cpiSS7DropSCTPPktsRcvd": "cpiSS7DropSCTPPktsRcvd", "cpiSS7FailSCTPFastRetransRate": "cpiSS7FailSCTPFastRetransRate", "cpiStabilityAlarm": "cpiStabilityAlarm", "cpuOverload": "cpuOverload", "databaseConnectionLost": "databaseConnectionLost", "databaseReplicationLinkDown": "databaseReplicationLinkDown", "databaseSizeExhausted": "databaseSizeExhausted", "dbHighCpuUtilization": "dbHighCpuUtilization", "dbOffline": "dbOffline", "dbStatusUnexpected": "dbStatusUnexpected", "degradedResource": "degradedResource", "degrow": "degrow", "deviceServerCxnLost": "deviceServerCxnLost", "diamLinkDown": "diamLinkDown", "diamMaxClientsExceeded": "diamMaxClientsExceeded", "dnsThreshold": "dnsThreshold", "ethernetError": "ethernetError", "ethernetLinkDown": "ethernetLinkDown", "externalConnectivity": "externalConnectivity", "featureLicenseExpiration": "featureLicenseExpiration", "featureLicenseKeyNearExpiration": "featureLicenseKeyNearExpiration", "featureLockValidationError": "featureLockValidationError", "fqdnError": "fqdnError", "fru": "fru", "gatewayCongestion": "gatewayCongestion", "gatewayForcedOOS": "gatewayForcedOOS", "gatewayProvisioningError": "gatewayProvisioningError", "gatewayUnreachable": "gatewayUnreachable", "gatewayUnregistered": "gatewayUnregistered", "globalParameterNotFound": "globalParameterNotFound", "glsInvalidCellId": "glsInvalidCellId", "glsServerUnavailable": "glsServerUnavailable", "grow": "grow", "h248MessageBufferDepletion": "h248MessageBufferDepletion", "hlrSyncConnection": "hlrSyncConnection", "hlrSyncQueue": "hlrSyncQueue", "hostDown": "hostDown", "hostReset": "hostReset", "invalidGateway": "invalidGateway", "iriLinkDown": "iriLinkDown", "ldapServerConnectionLost": "ldapServerConnectionLost", "lispBufferFullExternalLIG": "lispBufferFullExternalLIG", "llcDown": "llcDown", "logicalLinkDown": "logicalLinkDown", "logicalLinkNotFound": "logicalLinkNotFound", "logRotateThreshold": "logRotateThreshold", "memoryOverload": "memoryOverload", "nodeConfigFailure": "nodeConfigFailure", "nodeGroupOOS": "nodeGroupOOS", "nodeOOS": "nodeOOS", "nonCompliantFaultGroupMemberState": "nonCompliantFaultGroupMemberState", "nonCsAddrChannelDepletion": "nonCsAddrChannelDepletion", "numberOfTuplesInUse": "numberOfTuplesInUse", "osSecInfoModificationDetected": "osSecInfoModificationDetected", "osSecInformationMissing": "osSecInformationMissing", "osSecUnexpectedInformation": "osSecUnexpectedInformation", "pdnsMySqlReplication": "pdnsMySqlReplication", "pktCorruptionDetectedViaRCCLANCheck": "pktCorruptionDetectedViaRCCLANCheck", "platformCommandFailure": "platformCommandFailure", "pmDataNotCollected": "pmDataNotCollected", "prdbConnectWithAlternateFailure": "prdbConnectWithAlternateFailure", "prdbSyncDataToAlternateFailure": "prdbSyncDataToAlternateFailure", "preAllocatedResourceOverload": "preAllocatedResourceOverload", "prifSocketError": "prifSocketError", "processDown": "processDown", "processNotStarted": "processNotStarted", "provisioningInhibitedMode": "provisioningInhibitedMode", "prsCallInstanceExceeded": "prsCallInstanceExceeded", "prsCpuOverload": "prsCpuOverload", "prsDatabaseMigrationFailure": "prsDatabaseMigrationFailure", "prsFailureToConnectWithPRDB": "prsFailureToConnectWithPRDB", "prsQueueExceeded": "prsQueueExceeded", "rccInhibitedMode": "rccInhibitedMode", "remotedbLinkDown": "remotedbLinkDown", "remoteQueryServerFailure": "remoteQueryServerFailure", "restore": "restore", "serviceCFGDataTimestampError": "serviceCFGDataTimestampError", "serviceCommCxnLost": "serviceCommCxnLost", "serviceOnewayCommunication": "serviceOnewayCommunication", "sheddingOverload": "sheddingOverload", "simxml": "simxml", "sipLinkSetMaxQuarantineList": "sipLinkSetMaxQuarantineList", "sipLinkSetUnavailable": "sipLinkSetUnavailable", "sipLinkUnavailable": "sipLinkUnavailable", "smdiSocketError": "smdiSocketError", "socketError": "socketError", "softwareAllocatedResourceOverload": "softwareAllocatedResourceOverload", "softwareComponentDown": "softwareComponentDown", "softwareComponentStandbyNotReady": "softwareComponentStandbyNotReady", "softwareLicense": "softwareLicense", "svcdegrow": "svcdegrow", "svcgrow": "svcgrow", "swVersionMismatch": "swVersionMismatch", "tftpDownloadCorrupt": "tftpDownloadCorrupt", "timeStampValueOutOfSystemRange": "timeStampValueOutOfSystemRange", "tlsInitError": "tlsInitError", "transactionHandlerBlockDepletion": "transactionHandlerBlockDepletion", "upgrade": "upgrade", "usageOfSyncTable": "usageOfSyncTable", "utHttpProxyConnectionDown": "utHttpProxyConnectionDown", "wpifSocketError": "wpifSocketError", "BackupFailure": "BackupFailure", "Configuration": "Configuration", "COTRecordTransferFailure": "COTRecordTransferFailure", "CPMUSERDATAINCONSITENCY": "CPMUSERDATAINCONSITENCY", "CPMUSERDATARESTORED": "CPMUSERDATARESTORED", "EventQueueCapacity": "EventQueueCapacity", "ICMPFailure": "ICMPFailure", "IPsecConfig": "IPsecConfig", "LinkDown": "LinkDown", "NotifyDisabled": "NotifyDisabled", "NotifyLocked": "NotifyLocked", "NumTL1MeasThresh": "NumTL1MeasThresh", "RADIUSTOLDAPFAILURE": "RADIUSTOLDAPFAILURE", "ROOTACCESSDENIED": "ROOTACCESSDENIED", "ROOTFTPVIOLATION": "ROOTFTPVIOLATION", "ROOTLOGINVIOLATION": "ROOTLOGINVIOLATION", "ROOTSSHLOGINVIOLATION": "ROOTSSHLOGINVIOLATION", "SetupAAAFailure": "SetupAAAFailure", "SNETrapOverload": "SNETrapOverload", "SNMPAuthenticationFailure": "SNMPAuthenticationFailure", "SNMPFailure": "SNMPFailure", "SUTOROOTFAILURE": "SUTOROOTFAILURE", "SYSTEMTrapOverload": "SYSTEMTrapOverload", "ThresholdCrossed": "ThresholdCrossed", "UndiscoveredObject": "UndiscoveredObject", "WriteAAAFailure": "WriteAAAFailure" } }, "Trinity": { "vf": { "aSBG": "aSBG", "nSBG": "nSBG", "tSBG": "tSBG" }, "vfc": { "pld": "PL - Payload Processor", "scr": "SC - System Controller" }, "location": { "SNDGCA64": "San Diego SAN3", "ALPRGAED": "Alpharetta PDK1", "LSLEILAA":"Lisle DPA3" }, "alarmCondition": { "A+Fallback+Operation+will+soon+be+started":"A Fallback Operation will soon be started", "BRM%2C+Auto+Export+Backup+Failed":"BRM, Auto Export Backup Failed", "BRM%2C+Scheduled+Backup+Failed":"BRM, Scheduled Backup Failed", "COM+SA%2C+AMF+Component+Cleanup+Failed":"COM SA, AMF Component Cleanup Failed", "COM+SA%2C+AMF+Component+Instantiation+Failed":"COM SA, AMF Component Instantiation Failed", "COM+SA%2C+AMF+SI+Unassigned":"COM SA, AMF SI Unassigned", "COM+SA%2C+CLM+Cluster+Node+Unavailable":"COM SA, CLM Cluster Node Unavailable", "COM+SA%2C+MDF+Detected+Model+Error":"COM SA, MDF Detected Model Error", "COM+SA%2C+Proxy+Status+of+a+Component+Changed+to+Unproxied":"COM SA, Proxy Status of a Component Changed to Unproxied", "File+Management%2C+Number+of+Files+in+FileGroup+Exceeded":"File Management, Number of Files in FileGroup Exceeded", "File+Management%2C+Max+Size+in+FileGroup+Exceeded":"File Management, Max Size in FileGroup Exceeded", "LOTC+Disk+Replication+Communication":"LOTC Disk Replication Communication", "LOTC+Disk+Replication+Consistency":"LOTC Disk Replication Consistency", "LOTC+Disk+Usage":"LOTC Disk Usage", "LOTC+memory+Usage":"LOTC memory Usage", "LOTC+Time+Synchronization":"LOTC Time Synchronization", "SBG%2C+BGF+Control+Link+Down":"SBG, BGF Control Link Down", "SBG%2C+BGF+Control+Link+Disabled":"SBG, BGF Control Link Disabled", "SBG%2C+BGF+Control+Link+Enabled":"SBG, BGF Control Link Enabled", "SBG%2C+BGF+Control+Link+Remote+Locked":"SBG, BGF Control Link Remote Locked", "SBG%2C+Charging+Data+Storage+Maximum+Records+Reached":"SBG, Charging Data Storage Maximum Records Reached", "SBG%2C+Charging+Server+Rejects+Charging+Data":"SBG, Charging Server Rejects Charging Data", "SBG%2C+Excessive+Packet+Rate+Detected+":"SBG, Excessive Packet Rate Detected ", "SBG%2C+High+Amount+of+Malformed+Packets+Received":"SBG, High Amount of Malformed Packets Received", "SBG%2C+High+Amount+of+STUN+Packets+Detected":"SBG, High Amount of STUN Packets Detected", "SBG%2C+High+Amount+of+TCP+SYN+Packets+Received":"SBG, High Amount of TCP SYN Packets Received", "SBG%2C+High+Amount+of+UDP+Packets+Received+":"SBG, High Amount of UDP Packets Received ", "SBG%2C+IP+Address+Blocked+Due+to+Excessive+Packet+Rate":"SBG, IP Address Blocked Due to Excessive Packet Rate", "SBG%2C+Lost+Connectivity+to+Diameter+Server":"SBG, Lost Connectivity to Diameter Server", "SBG%2C+Mated+Pair+out+of+Service":"SBG, Mated Pair out of Service", "SBG%2C+Network+Unavailable+for+Media+Handling":"SBG, Network Unavailable for Media Handling", "SBG%2C+Non-emergency+Call+Released+to+Free+Resources+for+Emergency+Call":"SBG, Non-emergency Call Released to Free Resources for Emergency Call", "SBG%2C+Not+Enough+Disk+Space+for+Storing+Charging+Data":"SBG, Not Enough Disk Space for Storing Charging Data", "SBG%2C+Payload+Mated+Pair+Failure":"SBG, Payload Mated Pair Failure", "SBG%2C+Payload+Processor+Failure":"SBG, Payload Processor Failure", "SBG%2C+Processor+Overloaded":"SBG, Processor Overloaded", "SBG%2C+Registered+User+Set+in+Quarantine":"SBG, Registered User Set in Quarantine", "SBG%2C+Registration+Contacts+Exceed+Configured+Threshold":"SBG, Registration Contacts Exceed Configured Threshold", "SBG%2C+Sequential+Restart+Initiated":"SBG, Sequential Restart Initiated", "SBG%2C+SIP+Abuse+Detected":"SBG, SIP Abuse Detected", "SBG%2C+SIP+Network+Locked":"SBG, SIP Network Locked", "SBG%2C+SIP+Next+Hop+Reachable":"SBG, SIP Next Hop Reachable", "SBG%2C+SIP+Next+Hop+Unreachable":"SBG, SIP Next Hop Unreachable", "SBG%2C+SIP+Request+Rejected+by+Network+Throttling":"SBG, SIP Request Rejected by Network Throttling", "SBG%2C+TLS+Certificate+Imported":"SBG, TLS Certificate Imported", "SBG%2C+Trace+Recording+Session+Number+Limit+Reached":"SBG, Trace Recording Session Number Limit Reached", "SBG%2C+Trace+Session+Deactivated":"SBG, Trace Session Deactivated", "SBG%2C+Trace+Session+Times+Out":"SBG, Trace Session Times Out", "SBG%2C+Unknown+Media+Type+or+Payload+Type":"SBG, Unknown Media Type or Payload Type" } }, "vProbes": { "vf": { }, "vfc": { }, "location": { }, "alarmCondition": { } } } } } -globalPropsPartialTest={"global": { "service": { "": "", "vUSP": "vUSP", "vSCP": "vSCP", "vProbes": "vProbes" } }, "policy": { "timeout": 5, "recipe": { "": "", "restart": "Restart", "rebuild": "Rebuild", "migrate": "Migrate" }, "maxRetries": "3", "retryTimeLimit": 180, "resource": { "vCTS": "vCTS", "v3CDB": "v3CDB", "vUDR": "vUDR", "vCOM": "vCOM", "vRAR": "vRAR", "vLCS": "vLCS", "vUDR-BE": "vUDR-BE", "vDBE": "vDBE" }, "parentPolicyConditions": { "Failure_Retries": "Failure: Max Retries Exceeded", "Failure_Timeout": "Failure: Time Limit Exceeded", "Failure_Exception": "Failure: Exception", "Failure": "Failure: Other", "Success": "Success" } }} -ui.location.default={"location":{"SNDGCA64":"San Diego SAN3","ALPRGAED":"Alpharetta PDK1","LSLEILAA":"Lisle DPA3"}} -ui.alarm.fault={"alarmCondition":{"A+Fallback+Operation+will+soon+be+started":"A Fallback Operation will soon be started","BRM%2C+Auto+Export+Backup+Failed":"BRM, Auto Export Backup Failed","BRM%2C+Scheduled+Backup+Failed":"BRM, Scheduled Backup Failed","COM+SA%2C+AMF+Component+Cleanup+Failed":"COM SA, AMF Component Cleanup Failed","COM+SA%2C+AMF+Component+Instantiation+Failed":"COM SA, AMF Component Instantiation Failed","COM+SA%2C+AMF+SI+Unassigned":"COM SA, AMF SI Unassigned","COM+SA%2C+CLM+Cluster+Node+Unavailable":"COM SA, CLM Cluster Node Unavailable","COM+SA%2C+MDF+Detected+Model+Error":"COM SA, MDF Detected Model Error","COM+SA%2C+Proxy+Status+of+a+Component+Changed+to+Unproxied":"COM SA, Proxy Status of a Component Changed to Unproxied","File+Management%2C+Number+of+Files+in+FileGroup+Exceeded":"File Management, Number of Files in FileGroup Exceeded","File+Management%2C+Max+Size+in+FileGroup+Exceeded":"File Management, Max Size in FileGroup Exceeded","LOTC+Disk+Replication+Communication":"LOTC Disk Replication Communication","LOTC+Disk+Replication+Consistency":"LOTC Disk Replication Consistency","LOTC+Disk+Usage":"LOTC Disk Usage","LOTC+memory+Usage":"LOTC memory Usage","LOTC+Time+Synchronization":"LOTC Time Synchronization","SBG%2C+BGF+Control+Link+Down":"SBG, BGF Control Link Down","SBG%2C+BGF+Control+Link+Disabled":"SBG, BGF Control Link Disabled","SBG%2C+BGF+Control+Link+Enabled":"SBG, BGF Control Link Enabled","SBG%2C+BGF+Control+Link+Remote+Locked":"SBG, BGF Control Link Remote Locked","SBG%2C+Charging+Data+Storage+Maximum+Records+Reached":"SBG, Charging Data Storage Maximum Records Reached","SBG%2C+Charging+Server+Rejects+Charging+Data":"SBG, Charging Server Rejects Charging Data","SBG%2C+Excessive+Packet+Rate+Detected+":"SBG, Excessive Packet Rate Detected ","SBG%2C+High+Amount+of+Malformed+Packets+Received":"SBG, High Amount of Malformed Packets Received","SBG%2C+High+Amount+of+STUN+Packets+Detected":"SBG, High Amount of STUN Packets Detected","SBG%2C+High+Amount+of+TCP+SYN+Packets+Received":"SBG, High Amount of TCP SYN Packets Received","SBG%2C+High+Amount+of+UDP+Packets+Received+":"SBG, High Amount of UDP Packets Received ","SBG%2C+IP+Address+Blocked+Due+to+Excessive+Packet+Rate":"SBG, IP Address Blocked Due to Excessive Packet Rate","SBG%2C+Lost+Connectivity+to+Diameter+Server":"SBG, Lost Connectivity to Diameter Server","SBG%2C+Mated+Pair+out+of+Service":"SBG, Mated Pair out of Service","SBG%2C+Network+Unavailable+for+Media+Handling":"SBG, Network Unavailable for Media Handling","SBG%2C+Non-emergency+Call+Released+to+Free+Resources+for+Emergency+Call":"SBG, Non-emergency Call Released to Free Resources for Emergency Call","SBG%2C+Not+Enough+Disk+Space+for+Storing+Charging+Data":"SBG, Not Enough Disk Space for Storing Charging Data","SBG%2C+Payload+Mated+Pair+Failure":"SBG, Payload Mated Pair Failure","SBG%2C+Payload+Processor+Failure":"SBG, Payload Processor Failure","SBG%2C+Processor+Overloaded":"SBG, Processor Overloaded","SBG%2C+Registered+User+Set+in+Quarantine":"SBG, Registered User Set in Quarantine","SBG%2C+Registration+Contacts+Exceed+Configured+Threshold":"SBG, Registration Contacts Exceed Configured Threshold","SBG%2C+Sequential+Restart+Initiated":"SBG, Sequential Restart Initiated","SBG%2C+SIP+Abuse+Detected":"SBG, SIP Abuse Detected","SBG%2C+SIP+Network+Locked":"SBG, SIP Network Locked","SBG%2C+SIP+Next+Hop+Reachable":"SBG, SIP Next Hop Reachable","SBG%2C+SIP+Next+Hop+Unreachable":"SBG, SIP Next Hop Unreachable","SBG%2C+SIP+Request+Rejected+by+Network+Throttling":"SBG, SIP Request Rejected by Network Throttling","SBG%2C+TLS+Certificate+Imported":"SBG, TLS Certificate Imported","SBG%2C+Trace+Recording+Session+Number+Limit+Reached":"SBG, Trace Recording Session Number Limit Reached","SBG%2C+Trace+Session+Deactivated":"SBG, Trace Session Deactivated","SBG%2C+Trace+Session+Times+Out":"SBG, Trace Session Times Out","SBG%2C+Unknown+Media+Type+or+Payload+Type":"SBG, Unknown Media Type or Payload Type"}} +CLDS_SERVICE_CACHE_MAX_SECONDS=30 + +#DCAE Inventory Url Properties +DCAE_INVENTORY_URL = https://dcae.api.simpledemo.onap.org:8080 + +#DCAE Dispatcher Url Properties +DCAE_DISPATCHER_URL = https://dcae.api.simpledemo.onap.org:8443 +dcae.header.requestId = "X-ECOMP-RequestID" + -- cgit 1.2.3-korg From 60cb4ad2c2cdeacddf63fcd7b1fd73b9d6cb1c43 Mon Sep 17 00:00:00 2001 From: "Determe, Sebastien (sd378r)" Date: Fri, 17 Nov 2017 12:35:48 +0100 Subject: Change dcae addresses Change https to http as it's http on the labs Change-Id: I0f177b71e988c5e303df3be798a4ee4fa4c9bb39 Issue-ID: CLAMP-74 Signed-off-by: Determe, Sebastien (sd378r) --- src/main/resources/clds/clds-reference.properties | 4 ++-- src/test/resources/clds/clds-reference.properties | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'src/test/resources/clds') diff --git a/src/main/resources/clds/clds-reference.properties b/src/main/resources/clds/clds-reference.properties index a8382cb0a..3b2e0a1f1 100644 --- a/src/main/resources/clds/clds-reference.properties +++ b/src/main/resources/clds/clds-reference.properties @@ -101,9 +101,9 @@ action.insert.test.event=false CLDS_SERVICE_CACHE_MAX_SECONDS=30 #DCAE Inventory Url Properties -DCAE_INVENTORY_URL = https://dcae.api.simpledemo.onap.org:8080 +DCAE_INVENTORY_URL = http://dcae.api.simpledemo.onap.org:8080 #DCAE Dispatcher Url Properties -DCAE_DISPATCHER_URL = https://dcae.api.simpledemo.onap.org:8443 +DCAE_DISPATCHER_URL = http://dcae.api.simpledemo.onap.org:8080 dcae.header.requestId = "X-ECOMP-RequestID" diff --git a/src/test/resources/clds/clds-reference.properties b/src/test/resources/clds/clds-reference.properties index 92639d3f5..be289f8e1 100644 --- a/src/test/resources/clds/clds-reference.properties +++ b/src/test/resources/clds/clds-reference.properties @@ -101,9 +101,9 @@ action.insert.test.event=false CLDS_SERVICE_CACHE_MAX_SECONDS=30 #DCAE Inventory Url Properties -DCAE_INVENTORY_URL = https://dcae.api.simpledemo.onap.org:8080 +DCAE_INVENTORY_URL = http://dcae.api.simpledemo.onap.org:8080 #DCAE Dispatcher Url Properties -DCAE_DISPATCHER_URL = https://dcae.api.simpledemo.onap.org:8443 +DCAE_DISPATCHER_URL = http://dcae.api.simpledemo.onap.org:8080 dcae.header.requestId = "X-ECOMP-RequestID" -- cgit 1.2.3-korg From d2b81666ac28977fee72aedd20e7dcdb398f5ff5 Mon Sep 17 00:00:00 2001 From: "Determe, Sebastien (sd378r)" Date: Fri, 17 Nov 2017 12:37:51 +0100 Subject: Remove quotes Remove the quotes in the properties file Change-Id: Id0f2c78dee291ab251fee41166645a0ede5298ec Issue-ID: CLAMP-74 Signed-off-by: Determe, Sebastien (sd378r) --- src/main/resources/clds/clds-reference.properties | 4 ++-- src/test/resources/clds/clds-reference.properties | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'src/test/resources/clds') diff --git a/src/main/resources/clds/clds-reference.properties b/src/main/resources/clds/clds-reference.properties index 3b2e0a1f1..998bf7c72 100644 --- a/src/main/resources/clds/clds-reference.properties +++ b/src/main/resources/clds/clds-reference.properties @@ -88,7 +88,7 @@ sdc.artifactType=DCAE_INVENTORY_BLUEPRINT sdc.locationArtifactLabel=locationclampcockpit sdc.locationArtifactType=DCAE_INVENTORY_JSON sdc.InstanceID=X-ECOMP-InstanceID -sdc.header.requestId = X-ECOMP-RequestID +sdc.header.requestId=X-ECOMP-RequestID # # ui.location.default={"DC1":"Data Center 1","DC2":"Data Center 2","DC3":"Data Center 3"} @@ -105,5 +105,5 @@ DCAE_INVENTORY_URL = http://dcae.api.simpledemo.onap.org:8080 #DCAE Dispatcher Url Properties DCAE_DISPATCHER_URL = http://dcae.api.simpledemo.onap.org:8080 -dcae.header.requestId = "X-ECOMP-RequestID" +dcae.header.requestId = X-ECOMP-RequestID diff --git a/src/test/resources/clds/clds-reference.properties b/src/test/resources/clds/clds-reference.properties index be289f8e1..4627269a5 100644 --- a/src/test/resources/clds/clds-reference.properties +++ b/src/test/resources/clds/clds-reference.properties @@ -88,7 +88,7 @@ sdc.artifactType=DCAE_INVENTORY_BLUEPRINT sdc.locationArtifactLabel=locationclampcockpit sdc.locationArtifactType=DCAE_INVENTORY_JSON sdc.InstanceID=X-ECOMP-InstanceID -sdc.header.requestId = X-ECOMP-RequestID +sdc.header.requestId=X-ECOMP-RequestID # # ui.location.default={"DC1":"Data Center 1","DC2":"Data Center 2","DC3":"Data Center 3"} @@ -105,5 +105,5 @@ DCAE_INVENTORY_URL = http://dcae.api.simpledemo.onap.org:8080 #DCAE Dispatcher Url Properties DCAE_DISPATCHER_URL = http://dcae.api.simpledemo.onap.org:8080 -dcae.header.requestId = "X-ECOMP-RequestID" +dcae.header.requestId = X-ECOMP-RequestID -- cgit 1.2.3-korg From 7c083746477e46a662ce3eb2664a050a210d971f Mon Sep 17 00:00:00 2001 From: "Determe, Sebastien (sd378r)" Date: Wed, 14 Feb 2018 15:31:55 +0100 Subject: Remove Camunda and replace by Camel The camunda has been replaced by Camel so that DB could be removed. Also the unit tests has been reworked and maven dependencies have been changed Issue-ID: CLAMP-85 Change-Id: I781c3c83cecbdae3535c7e036e62ae83c6b6852f Signed-off-by: Determe, Sebastien (sd378r) --- extra/docker/clamp/clamp.env | 5 +- extra/sql/bulkload/clds-create-db-objects.sql | 7 - pom.xml | 85 ++-- src/main/java/org/onap/clamp/clds/Application.java | 15 + .../java/org/onap/clamp/clds/camel/CamelProxy.java | 67 ++++ .../onap/clamp/clds/client/CldsEventDelegate.java | 36 +- .../clamp/clds/client/DcaeDispatcherServices.java | 36 +- .../clamp/clds/client/DcaeInventoryServices.java | 30 +- .../clamp/clds/client/HolmesPolicyDelegate.java | 30 +- .../clds/client/HolmesPolicyDeleteDelegate.java | 28 +- .../clds/client/OperationalPolicyDelegate.java | 29 +- .../client/OperationalPolicyDeleteDelegate.java | 29 +- .../onap/clamp/clds/client/SdcSendReqDelegate.java | 92 +++-- .../onap/clamp/clds/client/TcaPolicyDelegate.java | 32 +- .../clamp/clds/client/TcaPolicyDeleteDelegate.java | 38 +- .../clamp/clds/client/req/policy/PolicyClient.java | 38 +- .../clds/client/req/sdc/SdcCatalogServices.java | 88 ++--- .../org/onap/clamp/clds/client/req/sdc/SdcReq.java | 97 +++-- .../clds/config/CamundaEngineConfiguration.java | 50 --- .../onap/clamp/clds/config/CldsConfiguration.java | 84 ---- .../clds/exception/CldsDelegateException.java | 59 +++ .../clamp/clds/model/prop/ModelProperties.java | 67 ++-- .../org/onap/clamp/clds/model/refprop/RefProp.java | 15 +- .../org/onap/clamp/clds/service/CldsService.java | 57 ++- .../java/org/onap/clamp/clds/service/CldsUser.java | 7 +- .../onap/clamp/clds/service/JaxrsApplication.java | 34 ++ .../org/onap/clamp/clds/service/JerseyConfig.java | 41 -- .../java/org/onap/clamp/clds/util/LogMessages.java | 35 ++ src/main/resources/META-INF/processes.xml | 37 -- src/main/resources/application.properties | 29 +- src/main/resources/bpmn/clds-process-action.bpmn | 384 ------------------ src/main/resources/clds/camel/flexible-flow.xml | 36 ++ src/main/resources/clds/clds-reference.properties | 6 +- src/main/resources/clds/clds-users.json | 3 +- .../clamp/clds/it/CldsTemplateServiceItCase.java | 2 - .../clds/it/DcaeHttpConnectionManagerItCase.java | 39 +- .../clamp/clds/it/HolmesPolicyDelegateItCase.java | 5 +- .../clamp/clds/it/OperationPolicyReqItCase.java | 26 +- .../org/onap/clamp/clds/it/PolicyClientItCase.java | 9 +- .../java/org/onap/clamp/clds/it/RefPropItCase.java | 5 +- .../clamp/clds/it/SdcCatalogServicesItCase.java | 60 +-- .../java/org/onap/clamp/clds/it/SdcReqItCase.java | 106 ++--- .../clamp/clds/it/TcaRequestFormatterItCase.java | 23 +- .../clamp/clds/model/prop/CustomModelElement.java | 11 +- .../clds/model/prop/CustomModelElementTest.java | 46 +-- .../clamp/clds/model/prop/ModelPropertiesTest.java | 14 +- .../resources/application-no-camunda.properties | 35 +- src/test/resources/clds/clds-reference.properties | 30 +- .../example/model-properties/custom/modelBpmn.json | 25 ++ .../custom/modelBpmnProperties.json | 248 ++++++++++++ .../holmes/modelBpmnProperties.json | 7 - .../example/model-properties/modelBpmn.json | 26 -- .../example/model-properties/modelBpmnProp.json | 108 ----- .../model-properties/modelBpmnPropWithGlobal.json | 116 ------ .../example/model-properties/policy/modelBpmn.json | 17 + .../policy/modelBpmnProperties.json | 440 +++++++++++++++++++++ .../model-properties/tca/modelBpmnProperties.json | 11 +- src/test/resources/example/modelBpmnProp.json | 25 -- .../resources/example/modelBpmnPropForPolicy.json | 17 - src/test/resources/example/modelProp.json | 440 --------------------- src/test/resources/example/modelPropForPolicy.json | 432 -------------------- .../sdc/expected-result/all-sdc-services.json | 6 + .../example/tca-policy-req/blueprint-expected.yaml | 20 +- .../example/tca-policy-req/blueprint-input.yaml | 33 +- .../example/tca-policy-req/prop-text.json | 1 + src/test/resources/https/https-test.properties | 35 +- 66 files changed, 1619 insertions(+), 2525 deletions(-) create mode 100644 src/main/java/org/onap/clamp/clds/camel/CamelProxy.java delete mode 100644 src/main/java/org/onap/clamp/clds/config/CamundaEngineConfiguration.java create mode 100644 src/main/java/org/onap/clamp/clds/exception/CldsDelegateException.java create mode 100644 src/main/java/org/onap/clamp/clds/service/JaxrsApplication.java delete mode 100644 src/main/java/org/onap/clamp/clds/service/JerseyConfig.java create mode 100644 src/main/java/org/onap/clamp/clds/util/LogMessages.java delete mode 100644 src/main/resources/META-INF/processes.xml delete mode 100644 src/main/resources/bpmn/clds-process-action.bpmn create mode 100644 src/main/resources/clds/camel/flexible-flow.xml create mode 100644 src/test/resources/example/model-properties/custom/modelBpmn.json create mode 100644 src/test/resources/example/model-properties/custom/modelBpmnProperties.json delete mode 100644 src/test/resources/example/model-properties/modelBpmn.json delete mode 100644 src/test/resources/example/model-properties/modelBpmnProp.json delete mode 100644 src/test/resources/example/model-properties/modelBpmnPropWithGlobal.json create mode 100644 src/test/resources/example/model-properties/policy/modelBpmn.json create mode 100644 src/test/resources/example/model-properties/policy/modelBpmnProperties.json delete mode 100644 src/test/resources/example/modelBpmnProp.json delete mode 100644 src/test/resources/example/modelBpmnPropForPolicy.json delete mode 100644 src/test/resources/example/modelProp.json delete mode 100644 src/test/resources/example/modelPropForPolicy.json create mode 100644 src/test/resources/example/sdc/expected-result/all-sdc-services.json create mode 100644 src/test/resources/example/tca-policy-req/prop-text.json (limited to 'src/test/resources/clds') diff --git a/extra/docker/clamp/clamp.env b/extra/docker/clamp/clamp.env index e5936e359..41585aba1 100644 --- a/extra/docker/clamp/clamp.env +++ b/extra/docker/clamp/clamp.env @@ -1 +1,4 @@ -SPRING_APPLICATION_JSON={"spring.datasource.camunda.url":"jdbc:mariadb:sequential://db:3306/camundabpm?verifyServerCertificate=false&useSSL=false&requireSSL=false&autoReconnect=true&retriesAllDown=2147483647&failoverLoopRetries=2147483647","spring.datasource.cldsdb.url":"jdbc:mariadb:sequential://db:3306/cldsdb4?verifyServerCertificate=false&useSSL=false&requireSSL=false&autoReconnect=true&retriesAllDown=2147483647&failoverLoopRetries=2147483647"} \ No newline at end of file +SPRING_APPLICATION_JSON={"spring.datasource.cldsdb.url":"jdbc:mariadb:sequential://db:3306/cldsdb4?verifyServerCertificate=false&useSSL=false&requireSSL=false&autoReconnect=true&retriesAllDown=2147483647&failoverLoopRetries=2147483647", +"org.onap.clamp.config.files.cldsPolicyConfig":"classpath:/clds/clds-policy-config.properties", +"org.onap.clamp.config.files.cldsReference":"classpath:/clds/clds-reference.properties" +} \ No newline at end of file diff --git a/extra/sql/bulkload/clds-create-db-objects.sql b/extra/sql/bulkload/clds-create-db-objects.sql index 3312daf56..78a1f7a6c 100644 --- a/extra/sql/bulkload/clds-create-db-objects.sql +++ b/extra/sql/bulkload/clds-create-db-objects.sql @@ -2,13 +2,6 @@ # Create CLDS database objects (tables, etc.) # # -CREATE DATABASE `camundabpm`; -USE `camundabpm`; -DROP USER 'camunda'; -CREATE USER 'camunda'; -GRANT ALL on camundabpm.* to 'camunda' identified by 'ndMSpw4CAM' with GRANT OPTION; -FLUSH PRIVILEGES; - CREATE DATABASE `cldsdb4`; USE `cldsdb4`; DROP USER 'clds'; diff --git a/pom.xml b/pom.xml index bb2534d3f..b0890a57f 100644 --- a/pom.xml +++ b/pom.xml @@ -66,12 +66,13 @@ UTF-8 3306 + 2080 git-server 1.8 1.0.0 2.20.1 - 1.5.9.RELEASE + 1.5.10.RELEASE java jacoco @@ -85,6 +86,8 @@ true true false + + @@ -153,14 +156,6 @@ pom import
- - - org.camunda.bpm - camunda-bom - 7.6.0 - import - pom - org.apache.camel @@ -182,7 +177,6 @@ org.apache.camel camel-spring-boot-starter - org.apache.camel @@ -190,7 +184,7 @@ org.apache.camel - camel-cxf-starter + camel-servlet-starter @@ -202,8 +196,9 @@ spring-boot-starter-tomcat - org.springframework.boot - spring-boot-starter-jersey + com.paypal.springboot + resteasy-spring-boot-starter + 2.3.4-RELEASE org.springframework @@ -221,18 +216,28 @@ org.springframework.boot spring-boot-starter-test test + + + com.vaadin.external.google + android-json + + + + + + ch.qos.logback + logback-core + 1.2.3 - - - org.camunda.bpm.extension.springboot - camunda-bpm-spring-boot-starter - 2.0.0 + ch.qos.logback + logback-classic + 1.2.3 - org.camunda.bpm.extension.springboot - camunda-bpm-spring-boot-starter-webapp - 2.0.0 + commons-dbcp + commons-dbcp + 1.4 commons-io @@ -265,11 +270,6 @@ junit junit - - org.mockito - mockito-all - 1.9.5 - com.fasterxml.jackson.core jackson-core @@ -770,13 +770,42 @@ + + python:2 + python + + python + + + ${project.basedir}/src/test/resources/http-cache/:/usr/src/http-cache-app + ${project.basedir}/src/test/resources/http-cache/sdc-example/:/usr/src/http-cache-app/data-cache + + + + + + 8080 + + direct + + + + + ${docker.http-cache.port.host}:8080 + + /usr/src/http-cache-app + + ./start_http_cache.sh ${http.proxy} + + + ${skipITs} - mariadb-start-for-it + docker-start-for-it pre-integration-test start @@ -786,7 +815,7 @@ - mariadb-stop-for-it + docker-stop-for-it post-integration-test stop diff --git a/src/main/java/org/onap/clamp/clds/Application.java b/src/main/java/org/onap/clamp/clds/Application.java index 2727535e4..281a87ca5 100644 --- a/src/main/java/org/onap/clamp/clds/Application.java +++ b/src/main/java/org/onap/clamp/clds/Application.java @@ -26,6 +26,7 @@ package org.onap.clamp.clds; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; +import org.apache.camel.component.servlet.CamelHttpTransportServlet; import org.apache.catalina.connector.Connector; import org.onap.clamp.clds.model.prop.Holmes; import org.onap.clamp.clds.model.prop.ModelProperties; @@ -41,6 +42,7 @@ import org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory; import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory; +import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.boot.web.support.SpringBootServletInitializer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; @@ -88,6 +90,19 @@ public class Application extends SpringBootServletInitializer { ModelProperties.registerModelElement(Holmes.class, Holmes.getType()); } + /** + * This method is used to declare the camel servlet. + * + * @return A servlet bean + */ + @Bean + public ServletRegistrationBean camelServletRegistrationBean() { + ServletRegistrationBean registration = new ServletRegistrationBean(new CamelHttpTransportServlet(), + "/restservices/clds/v2"); + registration.setName("CamelServlet"); + return registration; + } + /** * This method is used by Spring to create the servlet container factory. * diff --git a/src/main/java/org/onap/clamp/clds/camel/CamelProxy.java b/src/main/java/org/onap/clamp/clds/camel/CamelProxy.java new file mode 100644 index 000000000..66cd1f5a9 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/camel/CamelProxy.java @@ -0,0 +1,67 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2018 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.camel; + +import org.apache.camel.ExchangeProperty; + +/** + * This interface describes the CamelProxy parameters that must be passed to the + * Camel flow. + */ +public interface CamelProxy { + + /** + * This method is called when invoking a camel flow. + * + * @param actionCommand + * The action coming from the Clamp UI (like SUBMIT, UPDATE, + * DELETE, ...) + * @param modelProperties + * The Model properties created based on the BPMN Json and + * Properties Json + * @param modelBpmnProperties + * The Json with all the properties describing the flow + * @param modelName + * The model name + * @param controlName + * The control loop name + * @param docText + * The Global properties JSON containing YAML (coming from CLamp + * template) + * @param isTest + * Is a test or not (flag coming from the UI) + * @param userId + * The user ID coming from the UI + * @param isInsertTestEvent + * Is a test or not (flag coming from the UI) + * @return A string containing the result of the Camel flow execution + */ + String submit(@ExchangeProperty("actionCd") String actionCommand, + @ExchangeProperty("modelProp") String modelProperties, + @ExchangeProperty("modelBpmnProp") String modelBpmnProperties, + @ExchangeProperty("modelName") String modelName, @ExchangeProperty("controlName") String controlName, + @ExchangeProperty("docText") String docText, @ExchangeProperty("isTest") boolean isTest, + @ExchangeProperty("userid") String userId, + @ExchangeProperty("isInsertTestEvent") boolean isInsertTestEvent); +} diff --git a/src/main/java/org/onap/clamp/clds/client/CldsEventDelegate.java b/src/main/java/org/onap/clamp/clds/client/CldsEventDelegate.java index 4886b0de0..dcc318930 100644 --- a/src/main/java/org/onap/clamp/clds/client/CldsEventDelegate.java +++ b/src/main/java/org/onap/clamp/clds/client/CldsEventDelegate.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights + * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -26,40 +26,44 @@ package org.onap.clamp.clds.client; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; -import org.camunda.bpm.engine.delegate.DelegateExecution; -import org.camunda.bpm.engine.delegate.JavaDelegate; +import org.apache.camel.Exchange; +import org.apache.camel.Handler; import org.onap.clamp.clds.dao.CldsDao; import org.onap.clamp.clds.model.CldsEvent; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; /** * Create CLDS Event. */ -public class CldsEventDelegate implements JavaDelegate { - protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsEventDelegate.class); +@Component +public class CldsEventDelegate { + + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsEventDelegate.class); protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); @Autowired - private CldsDao cldsDao; + private CldsDao cldsDao; /** * Insert event using process variables. * - * @param execution + * @param camelExchange + * The Camel Exchange object containing the properties */ - @Override - public void execute(DelegateExecution execution) { - String controlName = (String) execution.getVariable("controlName"); - String actionCd = (String) execution.getVariable("actionCd"); - String actionStateCd = (String) execution.getVariable("actionStateCd"); + @Handler + public void execute(Exchange camelExchange) { + String controlName = (String) camelExchange.getProperty("controlName"); + String actionCd = (String) camelExchange.getProperty("actionCd"); + String actionStateCd = (String) camelExchange.getProperty("actionStateCd"); // Flag indicate whether it is triggered by Validation Test button from // UI - boolean isTest = (boolean) execution.getVariable("isTest"); - boolean isInsertTestEvent = (boolean) execution.getVariable("isInsertTestEvent"); - String userid = (String) execution.getVariable("userid"); + boolean isTest = (boolean) camelExchange.getProperty("isTest"); + boolean isInsertTestEvent = (boolean) camelExchange.getProperty("isInsertTestEvent"); + String userid = (String) camelExchange.getProperty("userid"); // do not insert events for test actions unless flag set to insert them if (!isTest || isInsertTestEvent) { // won't really have userid here... - CldsEvent.insEvent(cldsDao, controlName, userid, actionCd, actionStateCd, execution.getProcessInstanceId()); + CldsEvent.insEvent(cldsDao, controlName, userid, actionCd, actionStateCd, camelExchange.getExchangeId()); } } } diff --git a/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java b/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java index b8863e026..6053a0de9 100644 --- a/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java +++ b/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java @@ -35,24 +35,26 @@ import org.onap.clamp.clds.exception.DcaeDeploymentException; import org.onap.clamp.clds.model.refprop.RefProp; import org.onap.clamp.clds.util.LoggingUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; /** * This class implements the communication with DCAE for the service * deployments. - * */ +@Component public class DcaeDispatcherServices { - protected static final EELFLogger logger = EELFManager.getInstance() - .getLogger(DcaeDispatcherServices.class); - protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); + + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(DcaeDispatcherServices.class); + protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); @Autowired - private RefProp refProp; - private static final String STATUS_URL_LOG = "Status URL extracted: "; - private static final String DCAE_URL_PREFIX = "/dcae-deployments/"; - private static final String DCAE_URL_PROPERTY_NAME = "DCAE_DISPATCHER_URL"; - public static final String DCAE_REQUESTID_PROPERTY_NAME = "dcae.header.requestId"; - private static final String DCAE_LINK_FIELD = "links"; - private static final String DCAE_STATUS_FIELD = "status"; + private RefProp refProp; + private static final String STATUS_URL_LOG = "Status URL extracted: "; + private static final String DCAE_URL_PREFIX = "/dcae-deployments/"; + private static final String DCAE_URL_PROPERTY_NAME = "DCAE_DISPATCHER_URL"; + private static final String DCAE_REQUEST_FAILED_LOG = "RequestFailed - responseStr="; + public static final String DCAE_REQUESTID_PROPERTY_NAME = "dcae.header.requestId"; + private static final String DCAE_LINK_FIELD = "links"; + private static final String DCAE_STATUS_FIELD = "status"; /** * Delete the deployment on DCAE. @@ -76,7 +78,7 @@ public class DcaeDispatcherServices { LoggingUtils.setResponseContext("0", "Delete deployments success", this.getClass().getName()); return statusUrl; } catch (Exception e) { - //Log StatusCode during exception in metrics log + // Log StatusCode during exception in metrics log LoggingUtils.setResponseContext("900", "Delete deployments failed", this.getClass().getName()); LoggingUtils.setErrorContext("900", "Delete deployments error"); logger.error("Exception occurred during Delete Deployment Operation with DCAE", e); @@ -93,7 +95,6 @@ public class DcaeDispatcherServices { * @param statusUrl * The URL provided by a previous DCAE Query * @return The status - * */ public String getOperationStatus(String statusUrl) { // Assigning processing status to monitor operation status further @@ -111,7 +112,7 @@ public class DcaeDispatcherServices { LoggingUtils.setResponseContext("0", "Get operation status success", this.getClass().getName()); opStatus = status; } catch (Exception e) { - //Log StatusCode during exception in metrics log + // Log StatusCode during exception in metrics log LoggingUtils.setResponseContext("900", "Get operation status failed", this.getClass().getName()); LoggingUtils.setErrorContext("900", "Get operation status error"); logger.error("Exception occurred during getOperationStatus Operation with DCAE", e); @@ -124,7 +125,6 @@ public class DcaeDispatcherServices { /** * This method send a getDeployments operation to DCAE. - * */ public void getDeployments() { Date startTime = new Date(); @@ -134,7 +134,7 @@ public class DcaeDispatcherServices { DcaeHttpConnectionManager.doDcaeHttpQuery(url, "GET", null, null); LoggingUtils.setResponseContext("0", "Get deployments success", this.getClass().getName()); } catch (Exception e) { - //Log StatusCode during exception in metrics log + // Log StatusCode during exception in metrics log LoggingUtils.setResponseContext("900", "Get deployments failed", this.getClass().getName()); LoggingUtils.setErrorContext("900", "Get deployments error"); logger.error("Exception occurred during getDeployments Operation with DCAE", e); @@ -174,7 +174,7 @@ public class DcaeDispatcherServices { LoggingUtils.setResponseContext("0", "Create new deployment failed", this.getClass().getName()); return statusUrl; } catch (Exception e) { - //Log StatusCode during exception in metrics log + // Log StatusCode during exception in metrics log LoggingUtils.setResponseContext("900", "Create new deployment failed", this.getClass().getName()); LoggingUtils.setErrorContext("900", "Create new deployment error"); logger.error("Exception occurred during createNewDeployment Operation with DCAE", e); @@ -212,7 +212,7 @@ public class DcaeDispatcherServices { LoggingUtils.setResponseContext("0", "Delete existing deployment success", this.getClass().getName()); return statusUrl; } catch (Exception e) { - //Log StatusCode during exception in metrics log + // Log StatusCode during exception in metrics log LoggingUtils.setResponseContext("900", "Delete existing deployment failed", this.getClass().getName()); LoggingUtils.setErrorContext("900", "Delete existing deployment error"); logger.error("Exception occurred during deleteExistingDeployment Operation with DCAE", e); diff --git a/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java b/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java index 94ebacae5..4dfe089f9 100644 --- a/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java +++ b/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java @@ -50,10 +50,12 @@ import org.onap.clamp.clds.model.prop.ModelProperties; import org.onap.clamp.clds.model.refprop.RefProp; import org.onap.clamp.clds.util.LoggingUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; /** * This class implements the communication with DCAE for the service inventory. */ +@Component public class DcaeInventoryServices { protected static final EELFLogger logger = EELFManager.getInstance().getLogger(DcaeInventoryServices.class); @@ -107,12 +109,12 @@ public class DcaeInventoryServices { dcaeEvent.setEvent(DcaeEvent.EVENT_DISTRIBUTION); LoggingUtils.setResponseContext("0", "Set inventory success", this.getClass().getName()); } catch (JsonProcessingException e) { - LoggingUtils.setResponseContext("900", "Set inventory failed", this.getClass().getName()); - LoggingUtils.setErrorContext("900", "Set inventory error"); + LoggingUtils.setResponseContext("900", "Set inventory failed", this.getClass().getName()); + LoggingUtils.setErrorContext("900", "Set inventory error"); logger.error("Error during JSON decoding", e); } catch (IOException ex) { - LoggingUtils.setResponseContext("900", "Set inventory failed", this.getClass().getName()); - LoggingUtils.setErrorContext("900", "Set inventory error"); + LoggingUtils.setResponseContext("900", "Set inventory failed", this.getClass().getName()); + LoggingUtils.setErrorContext("900", "Set inventory error"); logger.error("Error during DCAE communication", ex); } finally { LoggingUtils.setTimeContext(startTime, new Date()); @@ -209,7 +211,7 @@ public class DcaeInventoryServices { * The vf UUID * @return The DCAE inventory type id */ - public String createUpdateDCAEServiceType(String blueprintTemplate, String owner, String typeName, int typeVersion, + public String createupdateDCAEServiceType(String blueprintTemplate, String owner, String typeName, int typeVersion, String asdcServiceId, String asdcResourceId) { Date startTime = new Date(); LoggingUtils.setTargetContext("DCAE", "createDCAEServiceType"); @@ -237,20 +239,22 @@ public class DcaeInventoryServices { Object obj0 = parser.parse(responseStr); JSONObject jsonObj = (JSONObject) obj0; typeId = (String) jsonObj.get("typeId"); // need to save this - // as - // service_type_id - // in model table + // as + // service_type_id + // in model table } catch (IOException | ParseException e) { logger.error("Exception occurred during createupdateDCAEServiceType Operation with DCAE", e); throw new BadRequestException("Exception occurred during createupdateDCAEServiceType Operation with DCAE", e); } finally { - if(typeId != null) { - LoggingUtils.setResponseContext("0", "Create update DCAE ServiceType success", this.getClass().getName()); - } else { - LoggingUtils.setResponseContext("900", "Create update DCAE ServiceType failed", this.getClass().getName()); + if (typeId != null) { + LoggingUtils.setResponseContext("0", "Create update DCAE ServiceType success", + this.getClass().getName()); + } else { + LoggingUtils.setResponseContext("900", "Create update DCAE ServiceType failed", + this.getClass().getName()); LoggingUtils.setErrorContext("900", "Create update DCAE ServiceType error"); - } + } LoggingUtils.setTimeContext(startTime, new Date()); metricsLogger.info("createupdateDCAEServiceType complete"); } diff --git a/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDelegate.java b/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDelegate.java index aaa4a2c06..34655986d 100644 --- a/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDelegate.java +++ b/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDelegate.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights + * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -28,41 +28,45 @@ import com.att.eelf.configuration.EELFManager; import java.util.UUID; -import org.camunda.bpm.engine.delegate.DelegateExecution; -import org.camunda.bpm.engine.delegate.JavaDelegate; +import org.apache.camel.Exchange; +import org.apache.camel.Handler; import org.onap.clamp.clds.client.req.policy.PolicyClient; import org.onap.clamp.clds.model.prop.Holmes; import org.onap.clamp.clds.model.prop.ModelProperties; import org.onap.clamp.clds.model.refprop.RefProp; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; /** * Send Holmes info to policy api. */ -public class HolmesPolicyDelegate implements JavaDelegate { - protected static final EELFLogger logger = EELFManager.getInstance().getLogger(HolmesPolicyDelegate.class); +@Component +public class HolmesPolicyDelegate { + + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(HolmesPolicyDelegate.class); protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); @Autowired - private PolicyClient policyClient; + private PolicyClient policyClient; @Autowired - private RefProp refProp; + private RefProp refProp; /** * Perform activity. Send Holmes info to policy api. * - * @param execution + * @param camelExchange + * The Camel Exchange object containing the properties */ - @Override - public void execute(DelegateExecution execution) { + @Handler + public void execute(Exchange camelExchange) { String holmesPolicyRequestUuid = UUID.randomUUID().toString(); - execution.setVariable("holmesPolicyRequestUuid", holmesPolicyRequestUuid); - ModelProperties prop = ModelProperties.create(execution); + camelExchange.setProperty("holmesPolicyRequestUuid", holmesPolicyRequestUuid); + ModelProperties prop = ModelProperties.create(camelExchange); Holmes holmes = prop.getType(Holmes.class); if (holmes.isFound()) { String responseMessage = policyClient.sendBasePolicyInOther(formatHolmesConfigBody(prop, holmes), holmes.getConfigPolicyName(), prop, holmesPolicyRequestUuid); if (responseMessage != null) { - execution.setVariable("holmesPolicyResponseMessage", responseMessage.getBytes()); + camelExchange.setProperty("holmesPolicyResponseMessage", responseMessage.getBytes()); } } } diff --git a/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDeleteDelegate.java b/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDeleteDelegate.java index 72db32852..28da14851 100644 --- a/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDeleteDelegate.java +++ b/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDeleteDelegate.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights + * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -26,34 +26,34 @@ package org.onap.clamp.clds.client; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; -import java.io.IOException; - -import org.camunda.bpm.engine.delegate.DelegateExecution; -import org.camunda.bpm.engine.delegate.JavaDelegate; +import org.apache.camel.Exchange; +import org.apache.camel.Handler; import org.onap.clamp.clds.client.req.policy.PolicyClient; import org.onap.clamp.clds.model.prop.Holmes; import org.onap.clamp.clds.model.prop.ModelProperties; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; /** * Delete Holmes Policy via policy api. */ -public class HolmesPolicyDeleteDelegate implements JavaDelegate { - protected static final EELFLogger logger = EELFManager.getInstance() - .getLogger(HolmesPolicyDeleteDelegate.class); +@Component +public class HolmesPolicyDeleteDelegate { + + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(HolmesPolicyDeleteDelegate.class); protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); @Autowired - private PolicyClient policyClient; + private PolicyClient policyClient; /** * Perform activity. Delete Holmes Policy via policy api. * - * @param execution - * @throws IOException + * @param camelExchange + * The Camel Exchange object containing the properties */ - @Override - public void execute(DelegateExecution execution) { - ModelProperties prop = ModelProperties.create(execution); + @Handler + public void execute(Exchange camelExchange) { + ModelProperties prop = ModelProperties.create(camelExchange); Holmes holmes = prop.getType(Holmes.class); if (holmes.isFound()) { prop.setCurrentModelElementId(holmes.getId()); diff --git a/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDelegate.java b/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDelegate.java index e2d16c56c..77d7680bb 100644 --- a/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDelegate.java +++ b/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDelegate.java @@ -29,8 +29,8 @@ import com.att.eelf.configuration.EELFManager; import java.io.UnsupportedEncodingException; import java.util.Map; -import org.camunda.bpm.engine.delegate.DelegateExecution; -import org.camunda.bpm.engine.delegate.JavaDelegate; +import org.apache.camel.Exchange; +import org.apache.camel.Handler; import org.onap.clamp.clds.client.req.policy.OperationalPolicyReq; import org.onap.clamp.clds.client.req.policy.PolicyClient; import org.onap.clamp.clds.model.prop.ModelProperties; @@ -41,41 +41,42 @@ import org.onap.clamp.clds.util.LoggingUtils; import org.onap.policy.api.AttributeType; import org.onap.policy.controlloop.policy.builder.BuilderException; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; /** * Send Operational Policy info to policy api. It uses the policy code to define * the model and communicate with it. See also the PolicyClient class. - * */ -public class OperationalPolicyDelegate implements JavaDelegate { - protected static final EELFLogger logger = EELFManager.getInstance() - .getLogger(OperationalPolicyDelegate.class); +@Component +public class OperationalPolicyDelegate { + + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(OperationalPolicyDelegate.class); protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); /** * Automatically injected by Spring, define in CldsConfiguration as a bean. */ @Autowired - private PolicyClient policyClient; + private PolicyClient policyClient; /** * Automatically injected by Spring, define in CldsConfiguration as a bean. */ @Autowired - private RefProp refProp; + private RefProp refProp; /** * Perform activity. Send Operational Policy info to policy api. * - * @param execution - * The DelegateExecution + * @param camelExchange + * The Camel Exchange object containing the properties * @throws BuilderException * In case of issues with OperationalPolicyReq * @throws UnsupportedEncodingException * In case of issues with the Charset encoding */ - @Override - public void execute(DelegateExecution execution) throws BuilderException, UnsupportedEncodingException { + @Handler + public void execute(Exchange camelExchange) throws BuilderException, UnsupportedEncodingException { String responseMessage = null; - ModelProperties prop = ModelProperties.create(execution); + ModelProperties prop = ModelProperties.create(camelExchange); Policy policy = prop.getType(Policy.class); if (policy.isFound()) { for (PolicyChain policyChain : prop.getType(Policy.class).getPolicyChains()) { @@ -84,7 +85,7 @@ public class OperationalPolicyDelegate implements JavaDelegate { responseMessage = policyClient.sendBrmsPolicy(attributes, prop, LoggingUtils.getRequestId()); } if (responseMessage != null) { - execution.setVariable("operationalPolicyResponseMessage", responseMessage.getBytes()); + camelExchange.setProperty("operationalPolicyResponseMessage", responseMessage.getBytes()); } } } diff --git a/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDeleteDelegate.java b/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDeleteDelegate.java index 2bca639e1..4dd204080 100644 --- a/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDeleteDelegate.java +++ b/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDeleteDelegate.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights + * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -26,35 +26,36 @@ package org.onap.clamp.clds.client; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; -import java.io.IOException; - -import org.camunda.bpm.engine.delegate.DelegateExecution; -import org.camunda.bpm.engine.delegate.JavaDelegate; +import org.apache.camel.Exchange; +import org.apache.camel.Handler; import org.onap.clamp.clds.client.req.policy.PolicyClient; import org.onap.clamp.clds.model.prop.ModelProperties; import org.onap.clamp.clds.model.prop.Policy; import org.onap.clamp.clds.model.prop.PolicyChain; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; /** * Delete Operational Policy via policy api. */ -public class OperationalPolicyDeleteDelegate implements JavaDelegate { - protected static final EELFLogger logger = EELFManager.getInstance() +@Component +public class OperationalPolicyDeleteDelegate { + + protected static final EELFLogger logger = EELFManager.getInstance() .getLogger(OperationalPolicyDeleteDelegate.class); protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); @Autowired - private PolicyClient policyClient; + private PolicyClient policyClient; /** * Perform activity. Delete Operational Policy via policy api. * - * @param execution - * @throws IOException + * @param camelExchange + * The Camel Exchange object containing the properties */ - @Override - public void execute(DelegateExecution execution) { - ModelProperties prop = ModelProperties.create(execution); + @Handler + public void execute(Exchange camelExchange) { + ModelProperties prop = ModelProperties.create(camelExchange); Policy policy = prop.getType(Policy.class); prop.setCurrentModelElementId(policy.getId()); String responseMessage = ""; @@ -64,7 +65,7 @@ public class OperationalPolicyDeleteDelegate implements JavaDelegate { responseMessage = policyClient.deleteBrms(prop); } if (responseMessage != null) { - execution.setVariable("operationalPolicyDeleteResponseMessage", responseMessage.getBytes()); + camelExchange.setProperty("operationalPolicyDeleteResponseMessage", responseMessage.getBytes()); } } } diff --git a/src/main/java/org/onap/clamp/clds/client/SdcSendReqDelegate.java b/src/main/java/org/onap/clamp/clds/client/SdcSendReqDelegate.java index b582349f6..e21bfce41 100644 --- a/src/main/java/org/onap/clamp/clds/client/SdcSendReqDelegate.java +++ b/src/main/java/org/onap/clamp/clds/client/SdcSendReqDelegate.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights + * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -26,82 +26,88 @@ package org.onap.clamp.clds.client; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; +import java.io.IOException; +import java.security.GeneralSecurityException; import java.util.List; -import org.camunda.bpm.engine.delegate.DelegateExecution; -import org.camunda.bpm.engine.delegate.JavaDelegate; +import org.apache.camel.Exchange; +import org.apache.camel.Handler; +import org.apache.commons.codec.DecoderException; import org.onap.clamp.clds.client.req.sdc.SdcCatalogServices; import org.onap.clamp.clds.client.req.sdc.SdcReq; import org.onap.clamp.clds.model.DcaeEvent; +import org.onap.clamp.clds.model.prop.Global; import org.onap.clamp.clds.model.prop.ModelProperties; import org.onap.clamp.clds.model.refprop.RefProp; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; /** * Send control loop model to dcae proxy. */ -public class SdcSendReqDelegate implements JavaDelegate { - protected static final EELFLogger logger = EELFManager.getInstance().getLogger(SdcSendReqDelegate.class); +@Component +public class SdcSendReqDelegate { + + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(SdcSendReqDelegate.class); protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); @Autowired - private SdcReq sdcReq; + private SdcCatalogServices sdcCatalogServices; @Autowired - private RefProp refProp; + private SdcReq sdcReq; @Autowired - private SdcCatalogServices sdcCatalogServices; - private String baseUrl; - private String artifactType; - private String locationArtifactType; - private String artifactLabel; - private String locationArtifactLabel; + private RefProp refProp; /** * Perform activity. Send to sdc proxy. * - * @param execution + * @param camelExchange + * The camel object that contains all fields + * @throws DecoderException + * In case of issues with password decryption + * @throws GeneralSecurityException + * In case of issues with password decryption + * @throws IOException + * In case of issues with file opening */ - @Override - public void execute(DelegateExecution execution) throws Exception { - String userid = (String) execution.getVariable("userid"); - logger.info("userid=" + userid); - String docText = new String((byte[]) execution.getVariable("docText")); - String artifactName = (String) execution.getVariable("controlName") + DcaeEvent.ARTIFACT_NAME_SUFFIX; - execution.setVariable("artifactName", artifactName); - getSdcAttributes((String) execution.getVariable("controlName")); - ModelProperties prop = ModelProperties.create(execution); - String bluprintPayload = sdcReq.formatBlueprint(prop, docText); + @Handler + public void execute(Exchange camelExchange) throws GeneralSecurityException, DecoderException, IOException { + String controlName = (String) camelExchange.getProperty("controlName"); + String baseUrl = refProp.getStringValue("sdc.serviceUrl"); + String artifactLabel = sdcReq + .normalizeResourceInstanceName(refProp.getStringValue("sdc.artifactLabel") + "-" + controlName); + String locationArtifactLabel = sdcReq + .normalizeResourceInstanceName(refProp.getStringValue("sdc.locationArtifactLabel") + "-" + controlName); + String artifactType = refProp.getStringValue("sdc.artifactType"); + String locationArtifactType = refProp.getStringValue("sdc.locationArtifactType"); + String userid = (String) camelExchange.getProperty("userid"); + String docText = (String) camelExchange.getProperty("docText"); + String artifactName = (String) camelExchange.getProperty("controlName") + DcaeEvent.ARTIFACT_NAME_SUFFIX; + camelExchange.setProperty("artifactName", artifactName); + ModelProperties prop = ModelProperties.create(camelExchange); + String bluprintPayload; + bluprintPayload = sdcReq.formatBlueprint(prop, docText); // no need to upload blueprint for Holmes, thus blueprintPayload for // Holmes is empty if (!bluprintPayload.isEmpty()) { String formattedSdcReq = sdcReq.formatSdcReq(bluprintPayload, artifactName, artifactLabel, artifactType); if (formattedSdcReq != null) { - execution.setVariable("formattedArtifactReq", formattedSdcReq.getBytes()); + camelExchange.setProperty("formattedArtifactReq", formattedSdcReq.getBytes()); } - List sdcReqUrlsList = sdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, execution); + Global globalProps = prop.getGlobal(); + if (globalProps != null && globalProps.getService() != null) { + String serviceInvariantUUID = globalProps.getService(); + camelExchange.setProperty("serviceInvariantUUID", serviceInvariantUUID); + } + List sdcReqUrlsList = sdcReq.getSdcReqUrlsList(prop, baseUrl); String sdcLocationsPayload = sdcReq.formatSdcLocationsReq(prop, artifactName); - String locationArtifactName = (String) execution.getVariable("controlName") + "-location.json"; + String locationArtifactName = (String) camelExchange.getProperty("controlName") + "-location.json"; String formattedSdcLocationReq = sdcReq.formatSdcReq(sdcLocationsPayload, locationArtifactName, locationArtifactLabel, locationArtifactType); if (formattedSdcLocationReq != null) { - execution.setVariable("formattedLocationReq", formattedSdcLocationReq.getBytes()); + camelExchange.setProperty("formattedLocationReq", formattedSdcLocationReq.getBytes()); } sdcCatalogServices.uploadToSdc(prop, userid, sdcReqUrlsList, formattedSdcReq, formattedSdcLocationReq, artifactName, locationArtifactName); } } - - /** - * Method to get sdc service values from properties file. - * - * @param controlName - */ - private void getSdcAttributes(String controlName) { - baseUrl = refProp.getStringValue("sdc.serviceUrl"); - artifactLabel = sdcReq - .normalizeResourceInstanceName(refProp.getStringValue("sdc.artifactLabel") + "-" + controlName); - locationArtifactLabel = sdcReq - .normalizeResourceInstanceName(refProp.getStringValue("sdc.locationArtifactLabel") + "-" + controlName); - artifactType = refProp.getStringValue("sdc.artifactType"); - locationArtifactType = refProp.getStringValue("sdc.locationArtifactType"); - } } diff --git a/src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java b/src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java index 035e64a61..2657a03f9 100644 --- a/src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java +++ b/src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights + * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -28,44 +28,46 @@ import com.att.eelf.configuration.EELFManager; import java.util.UUID; -import org.camunda.bpm.engine.delegate.DelegateExecution; -import org.camunda.bpm.engine.delegate.JavaDelegate; +import org.apache.camel.Exchange; +import org.apache.camel.Handler; import org.onap.clamp.clds.client.req.policy.PolicyClient; import org.onap.clamp.clds.client.req.tca.TcaRequestFormatter; import org.onap.clamp.clds.model.prop.ModelProperties; import org.onap.clamp.clds.model.prop.Tca; import org.onap.clamp.clds.model.refprop.RefProp; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; /** * Send Tca info to policy api. - * - * */ -public class TcaPolicyDelegate implements JavaDelegate { - protected static final EELFLogger logger = EELFManager.getInstance().getLogger(TcaPolicyDelegate.class); +@Component +public class TcaPolicyDelegate { + + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(TcaPolicyDelegate.class); protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); @Autowired - private RefProp refProp; + private RefProp refProp; @Autowired - private PolicyClient policyClient; + private PolicyClient policyClient; /** * Perform activity. Send Tca info to policy api. * - * @param execution + * @param camelExchange + * The Camel Exchange object containing the properties */ - @Override - public void execute(DelegateExecution execution) throws Exception { + @Handler + public void execute(Exchange camelExchange) { String tcaPolicyRequestUuid = UUID.randomUUID().toString(); - execution.setVariable("tcaPolicyRequestUuid", tcaPolicyRequestUuid); - ModelProperties prop = ModelProperties.create(execution); + camelExchange.setProperty("tcaPolicyRequestUuid", tcaPolicyRequestUuid); + ModelProperties prop = ModelProperties.create(camelExchange); Tca tca = prop.getType(Tca.class); if (tca.isFound()) { String policyJson = TcaRequestFormatter.createPolicyJson(refProp, prop); String responseMessage = policyClient.sendMicroServiceInOther(policyJson, prop); if (responseMessage != null) { - execution.setVariable("tcaPolicyResponseMessage", responseMessage.getBytes()); + camelExchange.setProperty("tcaPolicyResponseMessage", responseMessage.getBytes()); } } } diff --git a/src/main/java/org/onap/clamp/clds/client/TcaPolicyDeleteDelegate.java b/src/main/java/org/onap/clamp/clds/client/TcaPolicyDeleteDelegate.java index e88b720a7..c2aa303a5 100644 --- a/src/main/java/org/onap/clamp/clds/client/TcaPolicyDeleteDelegate.java +++ b/src/main/java/org/onap/clamp/clds/client/TcaPolicyDeleteDelegate.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights + * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -23,46 +23,44 @@ package org.onap.clamp.clds.client; -import org.camunda.bpm.engine.delegate.DelegateExecution; -import org.camunda.bpm.engine.delegate.JavaDelegate; +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; + +import org.apache.camel.Exchange; +import org.apache.camel.Handler; import org.onap.clamp.clds.client.req.policy.PolicyClient; import org.onap.clamp.clds.model.prop.ModelProperties; import org.onap.clamp.clds.model.prop.Tca; import org.springframework.beans.factory.annotation.Autowired; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; +import org.springframework.stereotype.Component; /** * Delete Tca Policy via policy api. - * - * */ -public class TcaPolicyDeleteDelegate implements JavaDelegate { - protected static final EELFLogger logger = EELFManager.getInstance().getLogger(TcaPolicyDeleteDelegate.class); - protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); +@Component +public class TcaPolicyDeleteDelegate { + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(TcaPolicyDeleteDelegate.class); + protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); @Autowired - private PolicyClient policyClient; + private PolicyClient policyClient; /** * Perform activity. Delete Tca Policy via policy api. * - * @param execution + * @param camelExchange + * The Camel Exchange object containing the properties */ - @Override - public void execute(DelegateExecution execution) throws Exception { - - ModelProperties prop = ModelProperties.create(execution); + @Handler + public void execute(Exchange camelExchange) { + ModelProperties prop = ModelProperties.create(camelExchange); Tca tca = prop.getType(Tca.class); if (tca.isFound()) { prop.setCurrentModelElementId(tca.getId()); - String responseMessage = policyClient.deleteMicrosService(prop); if (responseMessage != null) { - execution.setVariable("tcaPolicyDeleteResponseMessage", responseMessage.getBytes()); + camelExchange.setProperty("tcaPolicyDeleteResponseMessage", responseMessage.getBytes()); } } } - } diff --git a/src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java b/src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java index b4cad9496..046003309 100644 --- a/src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java +++ b/src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java @@ -57,23 +57,26 @@ import org.onap.policy.api.PushPolicyParameters; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.ApplicationContext; +import org.springframework.stereotype.Component; /** * Policy utility methods - specifically, send the policy. */ +@Component public class PolicyClient { - protected static final String POLICY_PREFIX_BASE = "Config_"; - protected static final String LOG_POLICY_PREFIX = "Response is "; + + protected static final String POLICY_PREFIX_BASE = "Config_"; + protected static final String LOG_POLICY_PREFIX = "Response is "; protected static final EELFLogger logger = EELFManager.getInstance().getLogger(PolicyClient.class); - protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); - protected static final String POLICY_MSTYPE_PROPERTY_NAME = "policy.ms.type"; - protected static final String POLICY_ONAPNAME_PROPERTY_NAME = "policy.onap.name"; + protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); + protected static final String POLICY_MSTYPE_PROPERTY_NAME = "policy.ms.type"; + protected static final String POLICY_ONAPNAME_PROPERTY_NAME = "policy.onap.name"; @Value("${org.onap.clamp.config.files.cldsPolicyConfig:'classpath:/clds/clds-policy-config.properties'}") - protected String cldsPolicyConfigFile; + protected String cldsPolicyConfigFile; @Autowired - protected ApplicationContext appContext; + protected ApplicationContext appContext; @Autowired - protected RefProp refProp; + protected RefProp refProp; /** * Perform BRMS policy type. @@ -229,19 +232,19 @@ public class PolicyClient { responseMessage = response.getResponseMessage(); } } catch (Exception e) { - LoggingUtils.setResponseContext("900", "Policy send failed", this.getClass().getName()); - LoggingUtils.setErrorContext("900", "Policy send error"); + LoggingUtils.setResponseContext("900", "Policy send failed", this.getClass().getName()); + LoggingUtils.setErrorContext("900", "Policy send error"); logger.error("Exception occurred during policy communication", e); throw new PolicyClientException("Exception while communicating with Policy", e); } logger.info(LOG_POLICY_PREFIX + responseMessage); LoggingUtils.setTimeContext(startTime, new Date()); if (response.getResponseCode() == 200) { - LoggingUtils.setResponseContext("0", "Policy send success", this.getClass().getName()); + LoggingUtils.setResponseContext("0", "Policy send success", this.getClass().getName()); logger.info("Policy send successful"); metricsLogger.info("Policy send success"); } else { - LoggingUtils.setResponseContext("900", "Policy send failed", this.getClass().getName()); + LoggingUtils.setResponseContext("900", "Policy send failed", this.getClass().getName()); logger.warn("Policy send failed: " + responseMessage); metricsLogger.info("Policy send failure"); throw new BadRequestException("Policy send failed: " + responseMessage); @@ -278,25 +281,25 @@ public class PolicyClient { PolicyChangeResponse response; String responseMessage = ""; try { - LoggingUtils.setTargetContext("Policy", "pushPolicy"); + LoggingUtils.setTargetContext("Policy", "pushPolicy"); logger.info("Attempting to push policy..."); response = getPolicyEngine().pushPolicy(pushPolicyParameters); if (response != null) { responseMessage = response.getResponseMessage(); } } catch (Exception e) { - LoggingUtils.setResponseContext("900", "Policy push failed", this.getClass().getName()); + LoggingUtils.setResponseContext("900", "Policy push failed", this.getClass().getName()); LoggingUtils.setErrorContext("900", "Policy push error"); logger.error("Exception occurred during policy communication", e); throw new PolicyClientException("Exception while communicating with Policy", e); } logger.info(LOG_POLICY_PREFIX + responseMessage); if (response != null && (response.getResponseCode() == 200 || response.getResponseCode() == 204)) { - LoggingUtils.setResponseContext("0", "Policy push success", this.getClass().getName()); + LoggingUtils.setResponseContext("0", "Policy push success", this.getClass().getName()); logger.info("Policy push successful"); metricsLogger.info("Policy push success"); } else { - LoggingUtils.setResponseContext("900", "Policy push failed", this.getClass().getName()); + LoggingUtils.setResponseContext("900", "Policy push failed", this.getClass().getName()); logger.warn("Policy push failed: " + responseMessage); metricsLogger.info("Policy push failure"); throw new BadRequestException("Policy push failed: " + responseMessage); @@ -350,7 +353,7 @@ public class PolicyClient { private PolicyEngine getPolicyEngine() { PolicyEngine policyEngine; try { - policyEngine = new PolicyEngine(appContext.getResource(cldsPolicyConfigFile).getFile().getAbsolutePath()); + policyEngine = new PolicyEngine(appContext.getResource(cldsPolicyConfigFile).getURL().getPath()); } catch (IOException e1) { throw new PolicyClientException("Exception when opening policy config file", e1); } catch (PolicyEngineException e) { @@ -399,7 +402,6 @@ public class PolicyClient { * * @param prop * The ModelProperties - * * @return The response message from policy */ protected String deletePolicy(ModelProperties prop, String policyType) { diff --git a/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcCatalogServices.java b/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcCatalogServices.java index 6684f1a1e..45dbf81fe 100644 --- a/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcCatalogServices.java +++ b/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcCatalogServices.java @@ -60,7 +60,6 @@ import org.apache.commons.lang3.StringUtils; import org.apache.http.HttpHeaders; import org.onap.clamp.clds.exception.SdcCommunicationException; import org.onap.clamp.clds.model.CldsAlarmCondition; -import org.onap.clamp.clds.model.CldsDBServiceCache; import org.onap.clamp.clds.model.CldsSdcArtifact; import org.onap.clamp.clds.model.CldsSdcResource; import org.onap.clamp.clds.model.CldsSdcResourceBasicInfo; @@ -76,23 +75,25 @@ import org.onap.clamp.clds.model.refprop.RefProp; import org.onap.clamp.clds.util.CryptoUtils; import org.onap.clamp.clds.util.LoggingUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +@Component public class SdcCatalogServices { private static final EELFLogger logger = EELFManager.getInstance().getLogger(SdcCatalogServices.class); private static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); - private static final String RESOURCE_VF_TYPE = "VF"; - private static final String RESOURCE_VFC_TYPE = "VFC"; - private static final String RESOURCE_CVFC_TYPE = "CVFC"; + private static final String RESOURCE_VF_TYPE = "VF"; + private static final String RESOURCE_VFC_TYPE = "VFC"; + private static final String RESOURCE_CVFC_TYPE = "CVFC"; private static final String SDC_REQUESTID_PROPERTY_NAME = "sdc.header.requestId"; - private static final String SDC_METADATA_URL_PREFIX = "/metadata"; - private static final String SDC_INSTANCE_ID_PROPERTY_NAME = "sdc.InstanceID"; - private static final String SDC_CATALOG_URL_PROPERTY_NAME = "sdc.catalog.url"; - private static final String SDC_SERVICE_URL_PROPERTY_NAME = "sdc.serviceUrl"; - private static final String SDC_INSTANCE_ID_CLAMP = "CLAMP-Tool"; - private static final String RESOURCE_URL_PREFIX = "resources"; + private static final String SDC_METADATA_URL_PREFIX = "/metadata"; + private static final String SDC_INSTANCE_ID_PROPERTY_NAME = "sdc.InstanceID"; + private static final String SDC_CATALOG_URL_PROPERTY_NAME = "sdc.catalog.url"; + private static final String SDC_SERVICE_URL_PROPERTY_NAME = "sdc.serviceUrl"; + private static final String SDC_INSTANCE_ID_CLAMP = "CLAMP-Tool"; + private static final String RESOURCE_URL_PREFIX = "resources"; @Autowired - private RefProp refProp; + private RefProp refProp; /** * Return SDC id and pw as a HTTP Basic Auth string (for example: Basic @@ -131,7 +132,7 @@ public class SdcCatalogServices { LoggingUtils.setTargetContext("SDC", "getSdcServicesInformation"); try { String url = baseUrl; - if (uuid != null) { + if (uuid != null && !uuid.isEmpty()) { url = baseUrl + "/" + uuid + SDC_METADATA_URL_PREFIX; } URL urlObj = new URL(url); @@ -142,7 +143,7 @@ public class SdcCatalogServices { conn.setRequestProperty(refProp.getStringValue(SDC_REQUESTID_PROPERTY_NAME), LoggingUtils.getRequestId()); conn.setRequestMethod("GET"); String resp = getResponse(conn); - logger.info(resp); + logger.debug("Services list received from SDC:" + resp); // metrics log LoggingUtils.setResponseContext("0", "Get sdc services success", this.getClass().getName()); return resp; @@ -333,7 +334,6 @@ public class SdcCatalogServices { } } - // upload artifact to sdc based on serviceUUID and resource name on url private String uploadArtifactToSdc(ModelProperties prop, String userid, String url, String formattedSdcReq) { // Verify whether it is triggered by Validation Test button from UI @@ -422,23 +422,11 @@ public class SdcCatalogServices { } } - public CldsDBServiceCache getCldsDbServiceCacheUsingCldsServiceData(CldsServiceData cldsServiceData) { - try { - CldsDBServiceCache cldsDbServiceCache = new CldsDBServiceCache(); - cldsDbServiceCache.setCldsDataInstream(cldsServiceData); - cldsDbServiceCache.setInvariantId(cldsServiceData.getServiceInvariantUUID()); - cldsDbServiceCache.setServiceId(cldsServiceData.getServiceUUID()); - return cldsDbServiceCache; - } catch (IOException e) { - logger.error("Exception when getting service in cache", e); - throw new SdcCommunicationException("Exception when getting service in cache", e); - } - } - /** * Check if the SDC Info in cache has expired. * * @param cldsServiceData + * The object representing the service data * @return boolean flag * @throws GeneralSecurityException * In case of issues with the decryting the encrypted password @@ -447,23 +435,25 @@ public class SdcCatalogServices { */ public boolean isCldsSdcCacheDataExpired(CldsServiceData cldsServiceData) throws GeneralSecurityException, DecoderException { - boolean expired = false; if (cldsServiceData != null && cldsServiceData.getServiceUUID() != null) { String cachedServiceUuid = cldsServiceData.getServiceUUID(); String latestServiceUuid = getServiceUuidFromServiceInvariantId(cldsServiceData.getServiceInvariantUUID()); - String defaultRecordAge = refProp.getStringValue("CLDS_SERVICE_CACHE_MAX_SECONDS"); - if ((!cachedServiceUuid.equalsIgnoreCase(latestServiceUuid)) || (cldsServiceData.getAgeOfRecord() != null - && cldsServiceData.getAgeOfRecord() > Long.parseLong(defaultRecordAge))) { - expired = true; + String configuredMaxAge = refProp.getStringValue("clds.service.cache.invalidate.after.seconds"); + if (configuredMaxAge == null) { + logger.warn( + "clds.service.cache.invalidate.after.seconds NOT set in clds-reference.properties file, taking 60s as default"); + configuredMaxAge = "60"; } + return (!cachedServiceUuid.equalsIgnoreCase(latestServiceUuid)) || (cldsServiceData.getAgeOfRecord() != null + && cldsServiceData.getAgeOfRecord() > Long.parseLong(configuredMaxAge)); } else { - expired = true; + return true; } - return expired; } /** - * Get the Service Data with Alarm Conditions for a given invariantServiceUuid. + * Get the Service Data with Alarm Conditions for a given + * invariantServiceUuid. * * @param invariantServiceUuid * @return The CldsServiceData @@ -510,8 +500,7 @@ public class SdcCatalogServices { cldsServiceData.setCldsVfs(cldsVfDataList); // For each vf in the list , add all vfc's getAllVfcForVfList(cldsVfDataList, catalogUrl); - logger.info("value of cldsServiceData:" + cldsServiceData); - logger.info("value of cldsServiceData:" + cldsServiceData.getServiceInvariantUUID()); + logger.info("Invariant Service ID of cldsServiceData:" + cldsServiceData.getServiceInvariantUUID()); } } } @@ -606,17 +595,17 @@ public class SdcCatalogServices { private void handleVFCtypeNode(ObjectNode currVfcNode, List cldsVfcDataList) { CldsVfcData currCldsVfcData = new CldsVfcData(); - TextNode vfcResourceName = (TextNode) currVfcNode.get("resourceInstanceName"); - TextNode vfcInvariantResourceUuid = (TextNode) currVfcNode.get("resourceInvariantUUID"); - currCldsVfcData.setVfcName(vfcResourceName.textValue()); - currCldsVfcData.setVfcInvariantResourceUUID(vfcInvariantResourceUuid.textValue()); - cldsVfcDataList.add(currCldsVfcData); + TextNode vfcResourceName = (TextNode) currVfcNode.get("resourceInstanceName"); + TextNode vfcInvariantResourceUuid = (TextNode) currVfcNode.get("resourceInvariantUUID"); + currCldsVfcData.setVfcName(vfcResourceName.textValue()); + currCldsVfcData.setVfcInvariantResourceUUID(vfcInvariantResourceUuid.textValue()); + cldsVfcDataList.add(currCldsVfcData); } private void handleCVFCtypeNode(ObjectNode currVfcNode, List cldsVfcDataList) { handleVFCtypeNode(currVfcNode, cldsVfcDataList); - cldsVfcDataList.addAll(getVFCfromCVFC(currVfcNode.get("resourceUUID").textValue())); - } + cldsVfcDataList.addAll(getVFCfromCVFC(currVfcNode.get("resourceUUID").textValue())); + } private List getVFCfromCVFC(String resourceUUID) { String catalogUrl = refProp.getStringValue(SDC_CATALOG_URL_PROPERTY_NAME); @@ -786,7 +775,6 @@ public class SdcCatalogServices { cldsAlarmConditionList.add(cldsAlarmCondition); } - // Get the responses for the current artifact from the artifacts URL. private String getResponsesFromArtifactUrl(String artifactsUrl) { String hostUrl = refProp.getStringValue("sdc.hostUrl"); @@ -802,9 +790,9 @@ public class SdcCatalogServices { * Service to services/resources/artifacts from sdc.Pass alarmConditions as * true to get alarm conditons from artifact url and else it is false * - * @param url The URL to trigger + * @param url + * The URL to trigger * @return The String containing the payload - * */ public String getCldsServicesOrResourcesBasedOnURL(String url) { Date startTime = new Date(); @@ -832,12 +820,12 @@ public class SdcCatalogServices { logger.error("Exception occurred during query to SDC", e); return ""; } catch (DecoderException e) { - LoggingUtils.setResponseContext("900", "Get sdc resources failed", this.getClass().getName()); + LoggingUtils.setResponseContext("900", "Get sdc resources failed", this.getClass().getName()); LoggingUtils.setErrorContext("900", "Get sdc resources error"); logger.error("Exception when attempting to decode the Hex string", e); throw new SdcCommunicationException("Exception when attempting to decode the Hex string", e); } catch (GeneralSecurityException e) { - LoggingUtils.setResponseContext("900", "Get sdc resources failed", this.getClass().getName()); + LoggingUtils.setResponseContext("900", "Get sdc resources failed", this.getClass().getName()); LoggingUtils.setErrorContext("900", "Get sdc resources error"); logger.error("Exception when attempting to decrypt the encrypted password", e); throw new SdcCommunicationException("Exception when attempting to decrypt the encrypted password", e); @@ -901,7 +889,7 @@ public class SdcCatalogServices { byIdObjectNode.putPOJO("byAlertDescription", alertDescObjectNodeByAlert); globalPropsJson = decodeGlobalProp(globalProps, mapper); globalPropsJson.putPOJO("shared", byIdObjectNode); - logger.info("value of objNode:" + globalPropsJson); + logger.info("Global properties JSON created with SDC info:" + globalPropsJson); } else { /** * to create json with total properties when no serviceUUID passed diff --git a/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcReq.java b/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcReq.java index d4b5b086d..3fb53a3b6 100644 --- a/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcReq.java +++ b/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcReq.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights + * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -25,8 +25,6 @@ package org.onap.clamp.clds.client.req.sdc; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; -import com.fasterxml.jackson.core.JsonParseException; -import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; @@ -42,7 +40,6 @@ import java.util.List; import java.util.Map.Entry; import org.apache.commons.codec.DecoderException; -import org.camunda.bpm.engine.delegate.DelegateExecution; import org.onap.clamp.clds.client.req.tca.TcaRequestFormatter; import org.onap.clamp.clds.model.CldsSdcResource; import org.onap.clamp.clds.model.CldsSdcServiceDetail; @@ -51,15 +48,20 @@ import org.onap.clamp.clds.model.prop.ModelProperties; import org.onap.clamp.clds.model.prop.Tca; import org.onap.clamp.clds.model.refprop.RefProp; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; /** * Construct a Sdc request given CLDS objects. */ +@Component public class SdcReq { - protected static final EELFLogger logger = EELFManager.getInstance().getLogger(SdcReq.class); + + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(SdcReq.class); protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); @Autowired - protected RefProp refProp; + private SdcCatalogServices sdcCatalogServices; + @Autowired + protected RefProp refProp; /** * Format the Blueprint from a Yaml @@ -68,17 +70,11 @@ public class SdcReq { * The ModelProperties describing the clds model * @param docText * The Yaml file that must be converted - * * @return A String containing the BluePrint - * @throws JsonParseException - * In case of issues - * @throws JsonMappingException - * In case of issues * @throws IOException * In case of issues */ - public String formatBlueprint(ModelProperties prop, String docText) - throws JsonParseException, JsonMappingException, IOException { + public String formatBlueprint(ModelProperties prop, String docText) throws IOException { String yamlvalue = getYamlvalue(docText); String updatedBlueprint = ""; Tca tca = prop.getType(Tca.class); @@ -96,7 +92,6 @@ public class SdcReq { * The ModelProperties describing the clds model * @param artifactName * The name of the artifact - * * @return SDC Locations request in the JSON Format */ public String formatSdcLocationsReq(ModelProperties prop, String artifactName) { @@ -127,11 +122,8 @@ public class SdcReq { * @param artifactType * The type of the artifact * @return formatted SDC Request - * @throws IOException - * In case of issues */ - public String formatSdcReq(String payloadData, String artifactName, String artifactLabel, String artifactType) - throws IOException { + public String formatSdcReq(String payloadData, String artifactName, String artifactLabel, String artifactType) { logger.info("artifact=" + payloadData); String base64Artifact = Base64.getEncoder().encodeToString(payloadData.getBytes(StandardCharsets.UTF_8)); return "{ \n" + "\"payloadData\" : \"" + base64Artifact + "\",\n" + "\"artifactLabel\" : \"" + artifactLabel @@ -144,46 +136,47 @@ public class SdcReq { * To get List of urls for all vfresources * * @param prop + * The model properties JSON describing the closed loop flow * @param baseUrl - * @param sdcCatalogServices - * @param execution - * @return + * The URL to trigger + * @return A list of Service URL * @throws GeneralSecurityException * In case of issues when decrypting the password * @throws DecoderException * In case of issues when decoding the Hex String */ - public List getSdcReqUrlsList(ModelProperties prop, String baseUrl, SdcCatalogServices sdcCatalogServices, - DelegateExecution execution) throws GeneralSecurityException, DecoderException { - // TODO : refact and regroup with very similar code + public List getSdcReqUrlsList(ModelProperties prop, String baseUrl) + throws GeneralSecurityException, DecoderException { List urlList = new ArrayList<>(); Global globalProps = prop.getGlobal(); - if (globalProps != null) { - if (globalProps.getService() != null) { - String serviceInvariantUUID = globalProps.getService(); - execution.setVariable("serviceInvariantUUID", serviceInvariantUUID); - List resourceVfList = globalProps.getResourceVf(); - String serviceUUID = sdcCatalogServices.getServiceUuidFromServiceInvariantId(serviceInvariantUUID); - String sdcServicesInformation = sdcCatalogServices.getSdcServicesInformation(serviceUUID); - CldsSdcServiceDetail cldsSdcServiceDetail = sdcCatalogServices - .getCldsSdcServiceDetailFromJson(sdcServicesInformation); - if (cldsSdcServiceDetail != null && resourceVfList != null) { - List cldsSdcResourcesList = cldsSdcServiceDetail.getResources(); - if (cldsSdcResourcesList != null && !cldsSdcResourcesList.isEmpty()) { - for (CldsSdcResource CldsSdcResource : cldsSdcResourcesList) { - if (CldsSdcResource != null && CldsSdcResource.getResoucreType() != null - && CldsSdcResource.getResoucreType().equalsIgnoreCase("VF") - && resourceVfList.contains(CldsSdcResource.getResourceInvariantUUID())) { - String normalizedResourceInstanceName = normalizeResourceInstanceName( - CldsSdcResource.getResourceInstanceName()); - String svcUrl = baseUrl + "/" + serviceUUID + "/resourceInstances/" - + normalizedResourceInstanceName + "/artifacts"; - urlList.add(svcUrl); - } + if (globalProps != null && globalProps.getService() != null) { + String serviceInvariantUUID = globalProps.getService(); + List resourceVfList = globalProps.getResourceVf(); + String serviceUUID = sdcCatalogServices.getServiceUuidFromServiceInvariantId(serviceInvariantUUID); + CldsSdcServiceDetail cldsSdcServiceDetail = sdcCatalogServices + .getCldsSdcServiceDetailFromJson(sdcCatalogServices.getSdcServicesInformation(serviceUUID)); + if (cldsSdcServiceDetail != null && resourceVfList != null) { + List cldsSdcResourcesList = cldsSdcServiceDetail.getResources(); + if (cldsSdcResourcesList != null && !cldsSdcResourcesList.isEmpty()) { + for (CldsSdcResource cldsSdcResource : cldsSdcResourcesList) { + if (cldsSdcResource != null && cldsSdcResource.getResoucreType() != null + && cldsSdcResource.getResoucreType().equalsIgnoreCase("VF") + && resourceVfList.contains(cldsSdcResource.getResourceInvariantUUID())) { + String normalizedResourceInstanceName = normalizeResourceInstanceName( + cldsSdcResource.getResourceInstanceName()); + String svcUrl = baseUrl + "/" + serviceUUID + "/resourceInstances/" + + normalizedResourceInstanceName + "/artifacts"; + urlList.add(svcUrl); + } else { + logger.warn("The VF Resource invariant UUID (" + cldsSdcResource.getResourceInvariantUUID() + + ") has not been found in the Service (Invariant ID:" + serviceInvariantUUID + + ")VF resource list"); } } } } + } else { + logger.warn("GlobalProperties json is empty, skipping getSdcReqUrlsList and returning empty list"); } return urlList; } @@ -201,16 +194,18 @@ public class SdcReq { } /** - * Method to get yaml/template properties value from json + * Method to get yaml/template properties value from json. * - * @param docText - * @return + * @param jsonGlobal + * The Json containing a Yaml file + * @return The yaml extracted from the JSON * @throws IOException + * In case of issues with the Json parser */ - public String getYamlvalue(String docText) throws IOException { + protected String getYamlvalue(String jsonGlobal) throws IOException { ObjectMapper objectMapper = new ObjectMapper(); String yamlFileValue = ""; - ObjectNode root = objectMapper.readValue(docText, ObjectNode.class); + ObjectNode root = objectMapper.readValue(jsonGlobal, ObjectNode.class); Iterator> entryItr = root.fields(); while (entryItr.hasNext()) { Entry entry = entryItr.next(); diff --git a/src/main/java/org/onap/clamp/clds/config/CamundaEngineConfiguration.java b/src/main/java/org/onap/clamp/clds/config/CamundaEngineConfiguration.java deleted file mode 100644 index 3790e235f..000000000 --- a/src/main/java/org/onap/clamp/clds/config/CamundaEngineConfiguration.java +++ /dev/null @@ -1,50 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2017 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============================================ - * =================================================================== - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - */ - -package org.onap.clamp.clds.config; - -import java.security.GeneralSecurityException; - -import javax.sql.DataSource; - -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Primary; - -@Configuration -public class CamundaEngineConfiguration { - /** - * Camunda Identity database DataSource configuration - * - * @return - * @throws GeneralSecurityException - * In case of issue during the decoding of the password - */ - @Primary - @Bean(name = "camundaBpmDataSource") - @ConfigurationProperties(prefix = "spring.datasource.camunda") - public DataSource dataSource() { - return new EncodedPasswordBasicDataSource(); - } -} diff --git a/src/main/java/org/onap/clamp/clds/config/CldsConfiguration.java b/src/main/java/org/onap/clamp/clds/config/CldsConfiguration.java index b99d3a96c..ae9704109 100644 --- a/src/main/java/org/onap/clamp/clds/config/CldsConfiguration.java +++ b/src/main/java/org/onap/clamp/clds/config/CldsConfiguration.java @@ -26,21 +26,7 @@ package org.onap.clamp.clds.config; import javax.sql.DataSource; import javax.xml.transform.TransformerConfigurationException; -import org.onap.clamp.clds.client.CldsEventDelegate; -import org.onap.clamp.clds.client.DcaeDispatcherServices; -import org.onap.clamp.clds.client.DcaeInventoryServices; -import org.onap.clamp.clds.client.HolmesPolicyDelegate; -import org.onap.clamp.clds.client.HolmesPolicyDeleteDelegate; -import org.onap.clamp.clds.client.OperationalPolicyDelegate; -import org.onap.clamp.clds.client.OperationalPolicyDeleteDelegate; -import org.onap.clamp.clds.client.SdcSendReqDelegate; -import org.onap.clamp.clds.client.TcaPolicyDelegate; -import org.onap.clamp.clds.client.TcaPolicyDeleteDelegate; -import org.onap.clamp.clds.client.req.policy.PolicyClient; -import org.onap.clamp.clds.client.req.sdc.SdcCatalogServices; -import org.onap.clamp.clds.client.req.sdc.SdcReq; import org.onap.clamp.clds.dao.CldsDao; -import org.onap.clamp.clds.model.refprop.RefProp; import org.onap.clamp.clds.transform.XslTransformer; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.config.PropertiesFactoryBean; @@ -85,74 +71,4 @@ public class CldsConfiguration { xslTransformer.setXslResourceName("xsl/clds-bpmn-transformer.xsl"); return xslTransformer; } - - @Bean - public RefProp getRefProp() { - return new RefProp(); - } - - @Bean - public SdcReq getSdcReq() { - return new SdcReq(); - } - - @Bean - public PolicyClient getPolicyClient() { - return new PolicyClient(); - } - - @Bean(name = "cldsEventDelegate") - public CldsEventDelegate getCldsEventDelegate() { - return new CldsEventDelegate(); - } - - @Bean(name = "sdcSendReqDelegate") - public SdcSendReqDelegate getSdcSendReqDelegate() { - return new SdcSendReqDelegate(); - } - - @Bean(name = "operationalPolicyDelegate") - public OperationalPolicyDelegate getOperationalPolicyDelegate() { - return new OperationalPolicyDelegate(); - } - - @Bean(name = "operationalPolicyDeleteDelegate") - public OperationalPolicyDeleteDelegate getOperationalPolicyDeleteDelegate() { - return new OperationalPolicyDeleteDelegate(); - } - - @Bean(name = "sdcCatalogServices") - public SdcCatalogServices getSdcCatalogServices() { - return new SdcCatalogServices(); - } - - @Bean(name = "dcaeDispatcherServices") - public DcaeDispatcherServices getDcaeDispatcherServices() { - return new DcaeDispatcherServices(); - } - - @Bean(name = "dcaeInventoryServices") - public DcaeInventoryServices getDcaeInventoryServices() { - return new DcaeInventoryServices(); - } - - @Bean(name = "tcaPolicyDelegate") - public TcaPolicyDelegate getTcaPolicyDelegate() { - return new TcaPolicyDelegate(); - } - - @Bean(name = "tcaPolicyDeleteDelegate") - public TcaPolicyDeleteDelegate getTcaPolicyDeleteDelegate() { - return new TcaPolicyDeleteDelegate(); - } - - @Bean(name = "holmesPolicyDelegate") - public HolmesPolicyDelegate getHolmesPolicyDelegate() { - return new HolmesPolicyDelegate(); - } - - @Bean(name = "holmesPolicyDeleteDelegate") - public HolmesPolicyDeleteDelegate getHolmesPolicyDeleteDelegate() { - return new HolmesPolicyDeleteDelegate(); - } } \ No newline at end of file diff --git a/src/main/java/org/onap/clamp/clds/exception/CldsDelegateException.java b/src/main/java/org/onap/clamp/clds/exception/CldsDelegateException.java new file mode 100644 index 000000000..3a6a81689 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/exception/CldsDelegateException.java @@ -0,0 +1,59 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2018 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.exception; + +/** + * New exception to CldsDelegate errors. + */ +public class CldsDelegateException extends RuntimeException { + + /** + * + */ + private static final long serialVersionUID = -2705212640916671093L; + + /** + * This constructor can be used to create a new CldsDelegateException. + * + * @param message + * A string message detailing the problem + * @param e + * The exception sent by the code + */ + public CldsDelegateException(String message, Throwable e) { + super(message, e); + } + + /** + * This constructor can be used to create a new CldsDelegateException. Use + * this constructor only if you are creating a new exception stack, not if + * an exception was already raised by another code. + * + * @param message + * A string message detailing the problem + */ + public CldsDelegateException(String message) { + super(message); + } +} diff --git a/src/main/java/org/onap/clamp/clds/model/prop/ModelProperties.java b/src/main/java/org/onap/clamp/clds/model/prop/ModelProperties.java index fae5e584c..dca93e46d 100644 --- a/src/main/java/org/onap/clamp/clds/model/prop/ModelProperties.java +++ b/src/main/java/org/onap/clamp/clds/model/prop/ModelProperties.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights + * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -25,7 +25,6 @@ package org.onap.clamp.clds.model.prop; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; @@ -37,7 +36,7 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; -import org.camunda.bpm.engine.delegate.DelegateExecution; +import org.apache.camel.Exchange; import org.onap.clamp.clds.exception.ModelBpmnException; import org.onap.clamp.clds.model.CldsEvent; import org.onap.clamp.clds.model.CldsModel; @@ -47,22 +46,21 @@ import org.onap.clamp.clds.service.CldsService; * Parse model properties. */ public class ModelProperties { - protected static final EELFLogger logger = EELFManager.getInstance() - .getLogger(CldsService.class); - protected static final EELFLogger auditLogger = EELFManager.getInstance() - .getAuditLogger(); - private ModelBpmn modelBpmn; - private JsonNode modelJson; - private final String modelName; - private final String controlName; - private final String actionCd; + + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsService.class); + protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger(); + private ModelBpmn modelBpmn; + private JsonNode modelJson; + private final String modelName; + private final String controlName; + private final String actionCd; // Flag indicate whether it is triggered by Validation Test button from UI - private final boolean testOnly; - private Global global; - private final Map modelElements = new ConcurrentHashMap<>(); - private String currentModelElementId; - private String policyUniqueId; - private static final Object lock = new Object(); + private final boolean testOnly; + private Global global; + private final Map modelElements = new ConcurrentHashMap<>(); + private String currentModelElementId; + private String policyUniqueId; + private static final Object lock = new Object(); private static Map, String> modelElementClasses = new ConcurrentHashMap<>(); static { synchronized (lock) { @@ -107,11 +105,9 @@ public class ModelProperties { /** * This method is meant to ensure that one ModelElement instance exists for - * each ModelElement class. - * - * As new ModelElement classes could have been registered after - * instantiation of this ModelProperties, we need to build the missing - * ModelElement instances. + * each ModelElement class. As new ModelElement classes could have been + * registered after instantiation of this ModelProperties, we need to build + * the missing ModelElement instances. */ private final void instantiateMissingModelElements() { if (modelElementClasses.size() != modelElements.size()) { @@ -160,20 +156,21 @@ public class ModelProperties { } /** - * Create ModelProperties for Camunda Delegate. + * Create ModelProperties extracted from a CamelExchange. * - * @param execution - * @return - * @throws JsonProcessingException - * @throws IOException + * @param camelExchange + * The camel Exchange object that contains all info provided to + * the flow + * @return A model Properties created from the parameters found in + * camelExchange object */ - public static ModelProperties create(DelegateExecution execution) { - String modelProp = new String((byte[]) execution.getVariable("modelProp")); - String modelBpmnProp = (String) execution.getVariable("modelBpmnProp"); - String modelName = (String) execution.getVariable("modelName"); - String controlName = (String) execution.getVariable("controlName"); - String actionCd = (String) execution.getVariable("actionCd"); - boolean isTest = (boolean) execution.getVariable("isTest"); + public static ModelProperties create(Exchange camelExchange) { + String modelProp = (String) camelExchange.getProperty("modelProp"); + String modelBpmnProp = (String) camelExchange.getProperty("modelBpmnProp"); + String modelName = (String) camelExchange.getProperty("modelName"); + String controlName = (String) camelExchange.getProperty("controlName"); + String actionCd = (String) camelExchange.getProperty("actionCd"); + boolean isTest = (boolean) camelExchange.getProperty("isTest"); return new ModelProperties(modelName, controlName, actionCd, isTest, modelBpmnProp, modelProp); } diff --git a/src/main/java/org/onap/clamp/clds/model/refprop/RefProp.java b/src/main/java/org/onap/clamp/clds/model/refprop/RefProp.java index 5965a417b..f0cf71c1e 100644 --- a/src/main/java/org/onap/clamp/clds/model/refprop/RefProp.java +++ b/src/main/java/org/onap/clamp/clds/model/refprop/RefProp.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights + * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -25,18 +25,22 @@ package org.onap.clamp.clds.model.refprop; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; + +import java.io.IOException; +import java.util.Properties; + +import javax.annotation.PostConstruct; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.ApplicationContext; import org.springframework.core.io.Resource; - -import javax.annotation.PostConstruct; -import java.io.IOException; -import java.util.Properties; +import org.springframework.stereotype.Component; /** * Holds reference properties. */ +@Component public class RefProp { @Autowired @@ -103,5 +107,4 @@ public class RefProp { ObjectMapper objectMapper = new ObjectMapper(); return objectMapper.readValue(getStringValue(key1, key2), JsonNode.class); } - } diff --git a/src/main/java/org/onap/clamp/clds/service/CldsService.java b/src/main/java/org/onap/clamp/clds/service/CldsService.java index 1238236fb..a139de115 100644 --- a/src/main/java/org/onap/clamp/clds/service/CldsService.java +++ b/src/main/java/org/onap/clamp/clds/service/CldsService.java @@ -56,11 +56,11 @@ import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import javax.xml.transform.TransformerException; +import org.apache.camel.Produce; import org.apache.commons.codec.DecoderException; import org.apache.commons.lang3.StringUtils; -import org.camunda.bpm.engine.RuntimeService; -import org.camunda.bpm.engine.runtime.ProcessInstance; import org.json.simple.parser.ParseException; +import org.onap.clamp.clds.camel.CamelProxy; import org.onap.clamp.clds.client.DcaeDispatcherServices; import org.onap.clamp.clds.client.DcaeInventoryServices; import org.onap.clamp.clds.client.req.sdc.SdcCatalogServices; @@ -101,6 +101,8 @@ import org.springframework.web.client.HttpClientErrorException; @Path("/clds") public class CldsService extends SecureServiceBase { + @Produce(uri = "direct:processSubmit") + private CamelProxy camelProxy; protected static final EELFLogger securityLogger = EELFManager.getInstance().getSecurityLogger(); @Autowired private ApplicationContext appContext; @@ -138,8 +140,6 @@ public class CldsService extends SecureServiceBase { @Autowired private CldsDao cldsDao; @Autowired - private RuntimeService runtimeService; - @Autowired private XslTransformer cldsBpmnTransformer; @Autowired private RefProp refProp; @@ -410,7 +410,7 @@ public class CldsService extends SecureServiceBase { cldsPermissionInstance, actionCd); isAuthorized(permisionManage); isAuthorizedForVf(model); - String userid = getUserId(); + String userId = getUserId(); String actionStateCd = CldsEvent.ACTION_STATE_INITIATED; String processDefinitionKey = "clds-process-action-wf"; logger.info("PUT actionCd={}", actionCd); @@ -420,7 +420,7 @@ public class CldsService extends SecureServiceBase { logger.info("PUT test={}", test); logger.info("PUT bpmnText={}", model.getBpmnText()); logger.info("PUT propText={}", model.getPropText()); - logger.info("PUT userid={}", userid); + logger.info("PUT userId={}", userId); logger.info("PUT getTypeId={}", model.getTypeId()); logger.info("PUT deploymentId={}", model.getDeploymentId()); if (model.getTemplateName() != null) { @@ -462,7 +462,7 @@ public class CldsService extends SecureServiceBase { logger.info("PUT isInsertTestEvent={}", isInsertTestEvent); // determine if requested action is permitted model.validateAction(actionCd); - // input variables to camunda process + // input variables for Camel process Map variables = new HashMap<>(); variables.put("actionCd", actionCd); variables.put("modelProp", prop.getBytes()); @@ -471,18 +471,18 @@ public class CldsService extends SecureServiceBase { variables.put("controlName", controlName); variables.put("docText", docText.getBytes()); variables.put("isTest", isTest); - variables.put("userid", userid); + variables.put("userid", userId); variables.put("isInsertTestEvent", isInsertTestEvent); logger.info("modelProp - " + prop); logger.info("docText - " + docText); + // ModelProperties modelProperties = new ModelProperties(modelName, + // controlName, actionCd, isTest, modelBpmnProp, modelProp); try { - // start camunda process - ProcessInstance pi = runtimeService.startProcessInstanceByKey(processDefinitionKey, variables); - // log process info - logger.info("Started processDefinitionId={}, processInstanceId={}", pi.getProcessDefinitionId(), - pi.getProcessInstanceId()); + String result = camelProxy.submit(actionCd, prop, bpmnJson, modelName, controlName, docText, isTest, userId, + isInsertTestEvent); + logger.info("Starting Camel flow on request, result is: ", result); } catch (SdcCommunicationException | PolicyClientException | BadRequestException e) { - logger.error("Exception occured during invoking bpmn process", e); + logger.error("Exception occured during invoking Camel process", e); throw new CldsConfigException(e.getMessage(), e); } // refresh model info from db (get fresh event info) @@ -605,39 +605,26 @@ public class CldsService extends SecureServiceBase { * In case of issues with the decryting the encrypted password * @throws DecoderException * In case of issues with the decoding of the Hex String + * @throws IOException + * In case of issue to convert CldsServiceCache to InputStream */ @GET @Path("/properties/{serviceInvariantUUID}") @Produces(MediaType.APPLICATION_JSON) public String getSdcPropertiesByServiceUUIDForRefresh( @PathParam("serviceInvariantUUID") String serviceInvariantUUID, - @DefaultValue("false") @QueryParam("refresh") String refresh) - throws GeneralSecurityException, DecoderException { + @DefaultValue("false") @QueryParam("refresh") boolean refresh) + throws GeneralSecurityException, DecoderException, IOException { Date startTime = new Date(); LoggingUtils.setRequestContext("CldsService: GET sdc properties by uuid", getPrincipalName()); CldsServiceData cldsServiceData = new CldsServiceData(); cldsServiceData.setServiceInvariantUUID(serviceInvariantUUID); - boolean isCldsSdcDataExpired = true; - // To getcldsService information from database cache using invariantUUID - // only when refresh = false - if (refresh != null && refresh.equalsIgnoreCase("false")) { - cldsServiceData = cldsServiceData.getCldsServiceCache(cldsDao, serviceInvariantUUID); - // If cldsService is available in database Cache , verify is data - // expired or not - if (cldsServiceData != null) { - isCldsSdcDataExpired = sdcCatalogServices.isCldsSdcCacheDataExpired(cldsServiceData); - } + if (!refresh) { + cldsServiceData = cldsDao.getCldsServiceCache(serviceInvariantUUID); } - // If user Requested for refresh or database cache expired , get all - // data from sdc api. - if ((refresh != null && refresh.equalsIgnoreCase("true")) || isCldsSdcDataExpired) { + if (sdcCatalogServices.isCldsSdcCacheDataExpired(cldsServiceData)) { cldsServiceData = sdcCatalogServices.getCldsServiceDataWithAlarmConditions(serviceInvariantUUID); - CldsDBServiceCache cldsDBServiceCache = sdcCatalogServices - .getCldsDbServiceCacheUsingCldsServiceData(cldsServiceData); - if (cldsDBServiceCache != null && cldsDBServiceCache.getInvariantId() != null - && cldsDBServiceCache.getServiceId() != null) { - cldsServiceData.setCldsServiceCache(cldsDao, cldsDBServiceCache); - } + cldsDao.setCldsServiceCache(new CldsDBServiceCache(cldsServiceData)); } // filter out VFs the user is not authorized for cldsServiceData.filterVfs(this); diff --git a/src/main/java/org/onap/clamp/clds/service/CldsUser.java b/src/main/java/org/onap/clamp/clds/service/CldsUser.java index 3dfeaebdd..fa7a738dd 100644 --- a/src/main/java/org/onap/clamp/clds/service/CldsUser.java +++ b/src/main/java/org/onap/clamp/clds/service/CldsUser.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights + * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -29,9 +29,8 @@ import java.util.Arrays; * The class represents the CldsUser that can be extracted from cldsusers.json. */ public class CldsUser { - - private String user; - private String password; + private String user; + private String password; private SecureServicePermission[] permissions; /** diff --git a/src/main/java/org/onap/clamp/clds/service/JaxrsApplication.java b/src/main/java/org/onap/clamp/clds/service/JaxrsApplication.java new file mode 100644 index 000000000..d6e74aef1 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/service/JaxrsApplication.java @@ -0,0 +1,34 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2018 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.service; + +import javax.ws.rs.ApplicationPath; +import javax.ws.rs.core.Application; + +import org.springframework.stereotype.Component; + +@Component +@ApplicationPath("/restservices/clds/v1") +public class JaxrsApplication extends Application { +} \ No newline at end of file diff --git a/src/main/java/org/onap/clamp/clds/service/JerseyConfig.java b/src/main/java/org/onap/clamp/clds/service/JerseyConfig.java deleted file mode 100644 index 0ffe41037..000000000 --- a/src/main/java/org/onap/clamp/clds/service/JerseyConfig.java +++ /dev/null @@ -1,41 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2018 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============================================ - * =================================================================== - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - */ - -package org.onap.clamp.clds.service; - -import org.glassfish.jersey.server.ResourceConfig; -import org.springframework.stereotype.Component; - -@Component -public class JerseyConfig extends ResourceConfig { - - public JerseyConfig() { - registerEndpoints(); - } - - private void registerEndpoints() { - register(CldsService.class); - register(UserService.class); - register(CldsTemplateService.class); - } -} \ No newline at end of file diff --git a/src/main/java/org/onap/clamp/clds/util/LogMessages.java b/src/main/java/org/onap/clamp/clds/util/LogMessages.java new file mode 100644 index 000000000..808878696 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/util/LogMessages.java @@ -0,0 +1,35 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2017-2018 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.util; + +import com.att.eelf.i18n.EELFResolvableErrorEnum; +import com.att.eelf.i18n.EELFResourceManager; + +public enum LogMessages implements EELFResolvableErrorEnum { + LOGSERVICE_HELLO_MESSAGE, LOGSERVICE_EMAIL_ERROR, LOGSERVICE_EMAIL_CLASS, LOGSERVICE_EMAIL_CLASS_NULL, PROCESS_INSTANCE_ID; + + static { + EELFResourceManager.loadMessageBundle("logmessages"); + } +} diff --git a/src/main/resources/META-INF/processes.xml b/src/main/resources/META-INF/processes.xml deleted file mode 100644 index 921a1029b..000000000 --- a/src/main/resources/META-INF/processes.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - default - bpmn/clds-process-action.bpmn - - true - false - - - - diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 1db0875a3..dd4ea6d36 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -62,8 +62,6 @@ server.port=8080 server.contextPath=/ #Modified engine-rest applicationpath -#camel.component.servlet.mapping.context-path=/restservices/clds/v1/* -spring.jersey.application-path=/restservices/clds/v1 spring.profiles.active=clamp-default,clamp-spring-authentication #The max number of active threads in this pool @@ -78,34 +76,15 @@ server.context_parameters.p-name=value #context parameter with p-name as key and camel.springboot.consumer-template-cache-size=1000 camel.springboot.producer-template-cache-size=1000 -camel.springboot.jmx-enabled=true +camel.springboot.jmx-enabled=false camel.defaultthreadpool.poolsize=10 camel.defaultthreadpool.maxpoolsize=20 camel.defaultthreadpool.maxqueuesize=1000 camel.defaultthreadpool.keepaliveTime=60 camel.defaultthreadpool.rejectpolicy=CallerRuns - -#server.port=0 -#Camunda Process Engine DataSource connection Details -spring.datasource.camunda.driverClassName=org.mariadb.jdbc.Driver -spring.datasource.camunda.url=jdbc:mariadb:sequential://localhost:${docker.mariadb.port.host}/camundabpm?autoReconnect=true&retriesAllDown=2147483647&failoverLoopRetries=2147483647 -spring.datasource.camunda.username=camunda -spring.datasource.camunda.password=e1bb2a8381d1aa6c09879bd627db3bb560ad29e8a3343fe6aa7e6a7ba622da4e -spring.datasource.camunda.validationQuery=SELECT 1 -spring.datasource.camunda.validationQueryTimeout=20000 -spring.datasource.camunda.validationInterval=30000 -spring.datasource.camunda.testWhileIdle = true -spring.datasource.camunda.minIdle = 0 -spring.datasource.camunda.initialSize=0 -# Automatically test whether a connection provided is good or not -spring.datasource.camunda.testOnBorrow=true -spring.datasource.camunda.ignoreExceptionOnPreLoad=true - -#Camunda application properties -#Camunda history level -camunda.bpm.history-level=auto -camunda.bpm.database.type=mariadb -camunda.bpm.database.schema-update=true +#camel.springboot.xmlRoutes = false +camel.springboot.xmlRoutes=classpath:/clds/camel/*.xml +#camel.springboot.typeConversion = false #clds datasource connection details spring.datasource.cldsdb.driverClassName=org.mariadb.jdbc.Driver diff --git a/src/main/resources/bpmn/clds-process-action.bpmn b/src/main/resources/bpmn/clds-process-action.bpmn deleted file mode 100644 index 11edc0714..000000000 --- a/src/main/resources/bpmn/clds-process-action.bpmn +++ /dev/null @@ -1,384 +0,0 @@ - - - - - - - - - ExclusiveGateway_2 - EndEvent_1 - insEvent - ExclusiveGateway_3 - sendOpPolicyReqDistribute - StartEvent_1 - ServiceTask_0x8ypxf - sendTcaReqDistribute - sendHolmesReqDistribute - - - sendTcaReqDelete - sendOpPolicyReqDelete - sendHolmesReqDelete - - - sendOpPolicyReqUpdate - sendTcaReqUpdate - sendHolmesReqUpdate - - - sendOpPolicyReqStop - - - sendOpPolicyReqRestart - - - - SequenceFlow_2 - SequenceFlow_4 - SequenceFlow_27 - SequenceFlow_29 - SequenceFlow_31 - SequenceFlow_15 - SequenceFlow_1xlfq66 - - - - - - SequenceFlow_16 - - - - - SENT - - - SequenceFlow_7 - SequenceFlow_16 - - - - SequenceFlow_10 - SequenceFlow_28 - SequenceFlow_30 - SequenceFlow_32 - SequenceFlow_6 - SequenceFlow_7 - - - - SequenceFlow_1tu9g11 - SequenceFlow_10 - - - - SequenceFlow_0ejpmee - SequenceFlow_28 - - - - - - - SequenceFlow_29 - SequenceFlow_30 - - - - - - - SequenceFlow_31 - SequenceFlow_32 - - - - - - - SequenceFlow_2 - - - - - - - - - - - - SequenceFlow_4 - SequenceFlow_1xlfq66 - SequenceFlow_0w39hon - - - - - SequenceFlow_15 - SequenceFlow_0tpegxf - - - - SequenceFlow_0w39hon - SequenceFlow_1rga27p - - - - SequenceFlow_1rga27p - SequenceFlow_1tu9g11 - - - SequenceFlow_1mtizad - SequenceFlow_6 - - - SequenceFlow_0tpegxf - SequenceFlow_1mtizad - - - - SequenceFlow_27 - SequenceFlow_1kegg6u - - - SequenceFlow_1kegg6u - SequenceFlow_0ejpmee - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/main/resources/clds/camel/flexible-flow.xml b/src/main/resources/clds/camel/flexible-flow.xml new file mode 100644 index 000000000..7a3ebdb0a --- /dev/null +++ b/src/main/resources/clds/camel/flexible-flow.xml @@ -0,0 +1,36 @@ + + + + + + ${exchangeProperty.actionCd} == 'SUBMIT' || ${exchangeProperty.actionCd} == 'RESUBMIT' + + + + + + + ${exchangeProperty.actionCd} == 'DELETE' + + + + + + ${exchangeProperty.actionCd} == 'UPDATE' + + + + + + ${exchangeProperty.actionCd} == 'STOP' + + + + ${exchangeProperty.actionCd} == 'RESTART' + + + + + + + \ No newline at end of file diff --git a/src/main/resources/clds/clds-reference.properties b/src/main/resources/clds/clds-reference.properties index 95ba919c8..09cb5c9ea 100644 --- a/src/main/resources/clds/clds-reference.properties +++ b/src/main/resources/clds/clds-reference.properties @@ -80,8 +80,8 @@ op.eNodeB.period=10s sdc.catalog.url=http://sdc.api.simpledemo.onap.org:8080/sdc/v1/catalog/ sdc.hostUrl=http://sdc.api.simpledemo.onap.org:8080 sdc.serviceUrl=http://sdc.api.simpledemo.onap.org:8080/sdc/v1/catalog/services -sdc.serviceUsername=test -sdc.servicePassword=aa2871669d793c7fb7abbcda31b88b4c29bf2982755b25f08f8d0130539c11b0 +sdc.serviceUsername=clamp +sdc.servicePassword=b7acccda32b98c5bb7acccda32b98c5b05D511BD6D93626E90D18E9D24D9B78CD34C7EE8012F0A189A28763E82271E50A5D4EC10C7D93E06E0A2D27CAE66B981 sdc.artifactLabel=blueprintclampcockpit sdc.sdcX-InstanceID=CLAMP sdc.artifactType=DCAE_INVENTORY_BLUEPRINT @@ -98,7 +98,7 @@ ui.alarm.default={"Reports a transient alarm condition when an incoming CDR cann action.test.override=false # if action.insert.test.event is true, then insert event even if the action is set to test action.insert.test.event=false -CLDS_SERVICE_CACHE_MAX_SECONDS=30 +clds.service.cache.invalidate.after.seconds=120 #DCAE Inventory Url Properties DCAE_INVENTORY_URL = http://dcae.api.simpledemo.onap.org:8080 diff --git a/src/main/resources/clds/clds-users.json b/src/main/resources/clds/clds-users.json index 5909e8e78..d2c06c808 100644 --- a/src/main/resources/clds/clds-users.json +++ b/src/main/resources/clds/clds-users.json @@ -7,8 +7,7 @@ "permission-type-cl|dev|update", "permission-type-cl-manage|dev|*", "permission-type-filter-vf|dev|*", - "permission-type-template|dev|read", - "permission-type-template|dev|update" + "permission-type-template|dev|read" ] }, { diff --git a/src/test/java/org/onap/clamp/clds/it/CldsTemplateServiceItCase.java b/src/test/java/org/onap/clamp/clds/it/CldsTemplateServiceItCase.java index b4415ed1a..626cf9576 100644 --- a/src/test/java/org/onap/clamp/clds/it/CldsTemplateServiceItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/CldsTemplateServiceItCase.java @@ -50,7 +50,6 @@ import org.onap.clamp.clds.util.ResourceFileUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; -import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; /** @@ -58,7 +57,6 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; */ @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) -@TestPropertySource(locations = "classpath:application-no-camunda.properties") public class CldsTemplateServiceItCase extends AbstractItCase { protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsTemplateServiceItCase.class); diff --git a/src/test/java/org/onap/clamp/clds/it/DcaeHttpConnectionManagerItCase.java b/src/test/java/org/onap/clamp/clds/it/DcaeHttpConnectionManagerItCase.java index 56de81d46..2bdef978a 100644 --- a/src/test/java/org/onap/clamp/clds/it/DcaeHttpConnectionManagerItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/DcaeHttpConnectionManagerItCase.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights + * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -59,30 +59,35 @@ import org.springframework.test.context.junit4.SpringRunner; @SpringBootTest(webEnvironment = WebEnvironment.DEFINED_PORT) @TestPropertySource(locations = "classpath:https/https-test.properties") public class DcaeHttpConnectionManagerItCase extends AbstractItCase { + @Value("${server.port}") private String httpsPort; @Value("${server.http-to-https-redirection.port}") private String httpPort; - private static TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { - @Override - public java.security.cert.X509Certificate[] getAcceptedIssuers() { - return null; - } + private static TrustManager[] trustAllCerts = new TrustManager[] { + new X509TrustManager() { + + @Override + public java.security.cert.X509Certificate[] getAcceptedIssuers() { + return null; + } - @Override - public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException { - } + @Override + public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException { + } - @Override - public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException { - } - } }; + @Override + public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException { + } + } + }; private void enableSslNoCheck() throws NoSuchAlgorithmException, KeyManagementException { SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); HostnameVerifier allHostsValid = new HostnameVerifier() { + @Override public boolean verify(String hostname, SSLSession session) { return true; @@ -119,20 +124,20 @@ public class DcaeHttpConnectionManagerItCase extends AbstractItCase { public void testHttpsGet404() throws IOException { DcaeHttpConnectionManager.doDcaeHttpQuery("https://localhost:" + this.httpsPort + "/designer/index1.html", "GET", null, null); - fail("Should have raised an BadRequestException exception"); + fail("Should have raised an BadRequestException"); } @Test(expected = BadRequestException.class) public void testHttpsPost404() throws IOException { DcaeHttpConnectionManager.doDcaeHttpQuery("https://localhost:" + this.httpsPort + "/designer/index1.html", "POST", "", "application/json"); - fail("Should have raised an BadRequestException exception"); + fail("Should have raised an BadRequestException"); } - @Test(expected = IOException.class) + @Test(expected = BadRequestException.class) public void testHttpException() throws IOException { DcaeHttpConnectionManager.doDcaeHttpQuery("http://localhost:" + this.httpsPort + "/designer/index.html", "GET", null, null); - fail("Should have raised an IOException exception"); + fail("Should have raised an BadRequestException"); } } diff --git a/src/test/java/org/onap/clamp/clds/it/HolmesPolicyDelegateItCase.java b/src/test/java/org/onap/clamp/clds/it/HolmesPolicyDelegateItCase.java index 62e04ede3..6f5c24d5e 100644 --- a/src/test/java/org/onap/clamp/clds/it/HolmesPolicyDelegateItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/HolmesPolicyDelegateItCase.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights + * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -35,7 +35,6 @@ import org.onap.clamp.clds.model.prop.Holmes; import org.onap.clamp.clds.model.prop.ModelProperties; import org.onap.clamp.clds.util.ResourceFileUtil; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringRunner; /** @@ -43,8 +42,8 @@ import org.springframework.test.context.junit4.SpringRunner; */ @RunWith(SpringRunner.class) @SpringBootTest -@TestPropertySource(locations = "classpath:application-no-camunda.properties") public class HolmesPolicyDelegateItCase extends AbstractItCase { + @Test public void testCreatePolicyJson() throws IOException { String modelBpmnProp = ResourceFileUtil diff --git a/src/test/java/org/onap/clamp/clds/it/OperationPolicyReqItCase.java b/src/test/java/org/onap/clamp/clds/it/OperationPolicyReqItCase.java index 300919957..9013e0c41 100644 --- a/src/test/java/org/onap/clamp/clds/it/OperationPolicyReqItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/OperationPolicyReqItCase.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights + * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -45,25 +45,24 @@ import org.onap.clamp.clds.util.ResourceFileUtil; import org.onap.policy.api.AttributeType; import org.onap.policy.controlloop.policy.builder.BuilderException; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @SpringBootTest -@TestPropertySource(locations = "classpath:application-no-camunda.properties") public class OperationPolicyReqItCase extends AbstractItCase { + @Test public void formatAttributesTest() throws IOException, BuilderException { - String modelProp = ResourceFileUtil.getResourceAsString("example/modelProp.json"); - String modelBpmnProp = ResourceFileUtil.getResourceAsString("example/modelBpmnProp.json"); - ModelProperties prop = new ModelProperties("testModel", "controlNameTest", CldsEvent.ACTION_SUBMIT, true, - modelBpmnProp, modelProp); + String modelBpmnProp = ResourceFileUtil + .getResourceAsString("example/model-properties/policy/modelBpmnProperties.json"); + String modelBpmn = ResourceFileUtil.getResourceAsString("example/model-properties/policy/modelBpmn.json"); + ModelProperties modelProperties = new ModelProperties("testModel", "controlNameTest", CldsEvent.ACTION_SUBMIT, + true, modelBpmn, modelBpmnProp); List>> attributes = new ArrayList<>(); - if (prop.getType(Policy.class).isFound()) { - for (PolicyChain policyChain : prop.getType(Policy.class).getPolicyChains()) { - - attributes.add(OperationalPolicyReq.formatAttributes(refProp, prop, prop.getType(Policy.class).getId(), - policyChain)); + if (modelProperties.getType(Policy.class).isFound()) { + for (PolicyChain policyChain : modelProperties.getType(Policy.class).getPolicyChains()) { + attributes.add(OperationalPolicyReq.formatAttributes(refProp, modelProperties, + modelProperties.getType(Policy.class).getId(), policyChain)); } } assertFalse(attributes.isEmpty()); @@ -77,9 +76,7 @@ public class OperationPolicyReqItCase extends AbstractItCase { // Remove this field as not always present (depends of policy api) yaml = yaml.replaceAll(" pnf: null" + System.lineSeparator(), ""); yaml = yaml.substring(yaml.indexOf("controlLoop:"), yaml.length()); - assertEquals(ResourceFileUtil.getResourceAsString("example/operational-policy/yaml-policy-chain-1.yaml"), yaml); - yaml = URLDecoder.decode(attributes.get(1).get(AttributeType.RULE).get("ControlLoopYaml"), "UTF-8"); yaml = yaml.replaceAll("trigger_policy: (.*)", "trigger_policy: "); yaml = yaml.replaceAll("id: (.*)", "id: "); @@ -87,7 +84,6 @@ public class OperationPolicyReqItCase extends AbstractItCase { // Remove this field as not always present (depends of policy api) yaml = yaml.replaceAll(" pnf: null" + System.lineSeparator(), ""); yaml = yaml.substring(yaml.indexOf("controlLoop:"), yaml.length()); - assertEquals(ResourceFileUtil.getResourceAsString("example/operational-policy/yaml-policy-chain-2.yaml"), yaml); } } diff --git a/src/test/java/org/onap/clamp/clds/it/PolicyClientItCase.java b/src/test/java/org/onap/clamp/clds/it/PolicyClientItCase.java index 275737761..71bd2d521 100644 --- a/src/test/java/org/onap/clamp/clds/it/PolicyClientItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/PolicyClientItCase.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights + * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -44,7 +44,6 @@ import org.onap.clamp.clds.model.prop.Tca; import org.onap.clamp.clds.util.ResourceFileUtil; import org.onap.policy.api.AttributeType; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringRunner; /** @@ -53,8 +52,8 @@ import org.springframework.test.context.junit4.SpringRunner; */ @RunWith(SpringRunner.class) @SpringBootTest -@TestPropertySource(locations = "classpath:application-no-camunda.properties") public class PolicyClientItCase extends AbstractItCase { + String modelProp; String modelBpmnProp; String modelName; @@ -65,8 +64,8 @@ public class PolicyClientItCase extends AbstractItCase { */ @Before public void setUp() throws IOException { - modelProp = ResourceFileUtil.getResourceAsString("example/modelProp.json"); - modelBpmnProp = ResourceFileUtil.getResourceAsString("example/modelBpmnProp.json"); + modelProp = ResourceFileUtil.getResourceAsString("example/model-properties/policy/modelBpmnProperties.json"); + modelBpmnProp = ResourceFileUtil.getResourceAsString("example/model-properties/policy/modelBpmn.json"); modelName = "example-model06"; controlName = "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf"; } diff --git a/src/test/java/org/onap/clamp/clds/it/RefPropItCase.java b/src/test/java/org/onap/clamp/clds/it/RefPropItCase.java index 7ccda5a85..8f76b1822 100644 --- a/src/test/java/org/onap/clamp/clds/it/RefPropItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/RefPropItCase.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights + * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -34,7 +34,6 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.onap.clamp.clds.AbstractItCase; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringRunner; /** @@ -42,8 +41,8 @@ import org.springframework.test.context.junit4.SpringRunner; */ @RunWith(SpringRunner.class) @SpringBootTest -@TestPropertySource(locations = "classpath:application-no-camunda.properties") public class RefPropItCase extends AbstractItCase { + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(RefPropItCase.class); /** diff --git a/src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesItCase.java b/src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesItCase.java index f2eadbe4b..548212ef8 100644 --- a/src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesItCase.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights + * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -41,7 +41,6 @@ import org.onap.clamp.clds.model.CldsSdcServiceInfo; import org.onap.clamp.clds.model.CldsServiceData; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringRunner; /** @@ -49,46 +48,38 @@ import org.springframework.test.context.junit4.SpringRunner; */ @RunWith(SpringRunner.class) @SpringBootTest -@TestPropertySource(locations = "classpath:application-no-camunda.properties") public class SdcCatalogServicesItCase extends AbstractItCase { + @Autowired private SdcCatalogServices sdcCatalogWired = new SdcCatalogServices(); @Test public void removeDuplicateServicesTest() { - CldsSdcServiceInfo service1a = new CldsSdcServiceInfo(); service1a.setName("service1"); service1a.setVersion("1.0"); service1a.setInvariantUUID("invariantUUID1.0"); - List rawCldsSdcServiceList = new LinkedList<>(); rawCldsSdcServiceList.add(service1a); rawCldsSdcServiceList.add(service1a); - CldsSdcServiceInfo service1b = new CldsSdcServiceInfo(); service1b.setName("service1"); service1b.setVersion("1.1"); service1b.setInvariantUUID("invariantUUID1.1"); rawCldsSdcServiceList.add(service1b); - CldsSdcServiceInfo service1c = new CldsSdcServiceInfo(); service1c.setName("service1"); service1c.setVersion("1.2"); service1c.setInvariantUUID("invariantUUID1.2"); rawCldsSdcServiceList.add(service1c); - CldsSdcServiceInfo service2 = new CldsSdcServiceInfo(); service2.setName("service2"); service2.setVersion("1.0"); service2.setInvariantUUID("invariantUUID2.0"); rawCldsSdcServiceList.add(service2); - SdcCatalogServices catalogServices = new SdcCatalogServices(); List resultList = catalogServices.removeDuplicateServices(rawCldsSdcServiceList); - assertTrue(resultList.size() == 2); - CldsSdcServiceInfo res1; CldsSdcServiceInfo res2; if ("service1".equals(resultList.get(0).getName())) { @@ -98,43 +89,33 @@ public class SdcCatalogServicesItCase extends AbstractItCase { res1 = resultList.get(1); res2 = resultList.get(0); } - assertTrue("service1".equals(res1.getName())); assertTrue("1.2".equals(res1.getVersion())); - assertTrue("service2".equals(res2.getName())); assertTrue("1.0".equals(res2.getVersion())); - } @Test public void removeDuplicateSdcResourceInstancesTest() { - List rawCldsSdcResourceList = new LinkedList<>(); - CldsSdcResource sdcResource1a = new CldsSdcResource(); sdcResource1a.setResourceInstanceName("resource1"); sdcResource1a.setResourceVersion("1.0"); rawCldsSdcResourceList.add(sdcResource1a); - CldsSdcResource sdcResource1b = new CldsSdcResource(); sdcResource1b.setResourceInstanceName("resource1"); sdcResource1b.setResourceVersion("1.1"); rawCldsSdcResourceList.add(sdcResource1b); - CldsSdcResource sdcResource1c = new CldsSdcResource(); sdcResource1c.setResourceInstanceName("resource1"); sdcResource1c.setResourceVersion("1.2"); rawCldsSdcResourceList.add(sdcResource1c); - CldsSdcResource sdcResource2 = new CldsSdcResource(); sdcResource2.setResourceInstanceName("resource2"); sdcResource2.setResourceVersion("1.0"); rawCldsSdcResourceList.add(sdcResource2); - SdcCatalogServices catalogServices = new SdcCatalogServices(); List resultList = catalogServices.removeDuplicateSdcResourceInstances(rawCldsSdcResourceList); - CldsSdcResource res1; CldsSdcResource res2; if ("resource1".equals(resultList.get(0).getResourceInstanceName())) { @@ -144,44 +125,34 @@ public class SdcCatalogServicesItCase extends AbstractItCase { res1 = resultList.get(1); res2 = resultList.get(0); } - assertTrue("resource1".equals(res1.getResourceInstanceName())); assertTrue("1.2".equals(res1.getResourceVersion())); - assertTrue("resource2".equals(res2.getResourceInstanceName())); assertTrue("1.0".equals(res2.getResourceVersion())); - } @Test public void removeDuplicateSdcResourceBasicInfoTest() { - List rawCldsSdcResourceList = new LinkedList<>(); - CldsSdcResourceBasicInfo sdcResource1a = new CldsSdcResourceBasicInfo(); sdcResource1a.setName("resource1"); sdcResource1a.setVersion("1.0"); rawCldsSdcResourceList.add(sdcResource1a); - CldsSdcResourceBasicInfo sdcResource1b = new CldsSdcResourceBasicInfo(); sdcResource1b.setName("resource1"); sdcResource1b.setVersion("1.1"); rawCldsSdcResourceList.add(sdcResource1b); - CldsSdcResourceBasicInfo sdcResource1c = new CldsSdcResourceBasicInfo(); sdcResource1c.setName("resource1"); sdcResource1c.setVersion("1.2"); rawCldsSdcResourceList.add(sdcResource1c); - CldsSdcResourceBasicInfo sdcResource2 = new CldsSdcResourceBasicInfo(); sdcResource2.setName("resource2"); sdcResource2.setVersion("1.0"); rawCldsSdcResourceList.add(sdcResource2); - SdcCatalogServices catalogServices = new SdcCatalogServices(); List resultList = catalogServices .removeDuplicateSdcResourceBasicInfo(rawCldsSdcResourceList); - CldsSdcResourceBasicInfo res1; CldsSdcResourceBasicInfo res2; if ("resource1".equals(resultList.get(0).getName())) { @@ -191,19 +162,15 @@ public class SdcCatalogServicesItCase extends AbstractItCase { res1 = resultList.get(1); res2 = resultList.get(0); } - assertTrue("resource1".equals(res1.getName())); assertTrue("1.2".equals(res1.getVersion())); - assertTrue("resource2".equals(res2.getName())); assertTrue("1.0".equals(res2.getVersion())); - } @Test public void getServiceUuidFromServiceInvariantIdTest() throws Exception { SdcCatalogServices spy = Mockito.spy(sdcCatalogWired); - Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcServicesListExample.json"), "UTF-8")).when(spy).getSdcServicesInformation(null); @@ -211,120 +178,97 @@ public class SdcCatalogServicesItCase extends AbstractItCase { // should not exist, returning empty string String resUuidVcts4Null = spy.getServiceUuidFromServiceInvariantId("a33ed748-3477-4434-b3f3-b5560f5e7d9b"); assertTrue("".equals(resUuidVcts4Null)); - // Try the vcts4 version 1.1, this one should be there as it replaces // the vcts4 v1.0 String resUuidVcts4Latest = spy.getServiceUuidFromServiceInvariantId("a33ed748-3477-4434-b3f3-b5560f5e7d9c"); assertTrue("29018914-966c-442d-9d08-251b9dc45b8f".equals(resUuidVcts4Latest)); - // Try the vcts5 version 1.0, this one should be there String resUuidVcts5 = spy.getServiceUuidFromServiceInvariantId("a33ed748-3477-4434-b3f3-b5560f5e7d8c"); assertTrue("29018914-966c-442d-9d08-251b9dc45b7f".equals(resUuidVcts5)); - // try one that does not exist at all String resUuidUnknown = spy.getServiceUuidFromServiceInvariantId("testuuid"); assertTrue("".equals(resUuidUnknown)); - } @Test public void getCldsServiceDataWithAlarmConditionsTest() throws Exception { SdcCatalogServices spy = Mockito.spy(sdcCatalogWired); - Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcServicesListExample.json"), "UTF-8")).when(spy).getSdcServicesInformation(null); - // This invariant uuid is the one from vcts4 v1.1 String serviceResourceDetailUrl = refProp.getStringValue("sdc.serviceUrl") + "/29018914-966c-442d-9d08-251b9dc45b8f/metadata"; Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcServiceDetailsExample.json"), "UTF-8")).when(spy).getCldsServicesOrResourcesBasedOnURL(serviceResourceDetailUrl); - String resourceDetailUrl = refProp.getStringValue("sdc.catalog.url") + "resources/585822c7-4027-4f84-ba50-e9248606f136/metadata"; Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcResourceDetailsExample.json"), "UTF-8")).when(spy).getCldsServicesOrResourcesBasedOnURL(resourceDetailUrl); - String securityRulesDetailUrl = refProp.getStringValue("sdc.catalog.url") + "resources/d57e57d2-e3c6-470d-8d16-e6ea05f536c5/metadata"; Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcSecurityRules.json"), "UTF-8")) .when(spy).getCldsServicesOrResourcesBasedOnURL(securityRulesDetailUrl); - String cinderVolumeDetailUrl = refProp.getStringValue("sdc.catalog.url") + "resources/b4288e07-597a-44a2-aa98-ad36e551a39d/metadata"; Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcCinderVolume.json"), "UTF-8")) .when(spy).getCldsServicesOrResourcesBasedOnURL(cinderVolumeDetailUrl); - String vfcGenericDetailUrl = refProp.getStringValue("sdc.catalog.url") + "resources/2c8f1219-8000-4001-aa13-496a0396d40f/metadata"; Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcVFCGenericWithAlarms.json"), "UTF-8")).when(spy).getCldsServicesOrResourcesBasedOnURL(vfcGenericDetailUrl); - String csvAlarmsDetailUrl = refProp.getStringValue("sdc.catalog.url") + "resources/2c8f1219-8000-4001-aa13-496a0396d40f/resourceInstances/virc_fe_be/artifacts/5138e316-0237-49aa-817a-b3d8eaf77392"; Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcAlarmsList.csv"), "UTF-8")) .when(spy).getCldsServicesOrResourcesBasedOnURL(csvAlarmsDetailUrl); - Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcAlarmsList.csv"), "UTF-8")) .when(spy).getCldsServicesOrResourcesBasedOnURL(csvAlarmsDetailUrl); - String csvAlarmsDetailUrl2 = refProp.getStringValue("sdc.catalog.url") + "resources/d7646638-2572-4a94-b497-c028ac15f9ca/artifacts/5138e316-0237-49aa-817a-b3d8eaf77392"; Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcAlarmsList.csv"), "UTF-8")) .when(spy).getCldsServicesOrResourcesBasedOnURL(csvAlarmsDetailUrl2); - String allVfResourcesDetailUrl = refProp.getStringValue("sdc.catalog.url") + "resources?resourceType=VF"; Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcVFResources.json"), "UTF-8")) .when(spy).getCldsServicesOrResourcesBasedOnURL(allVfResourcesDetailUrl); - String vfcResourcesDetailUrl = refProp.getStringValue("sdc.catalog.url") + "resources/a0475018-1e7e-4ddd-8bee-33cbf958c2e6/metadata"; Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcCVFCResourceExample.json"), "UTF-8")).when(spy).getCldsServicesOrResourcesBasedOnURL(vfcResourcesDetailUrl); - String allVfcResourcesDetailUrl = refProp.getStringValue("sdc.catalog.url") + "resources?resourceType=VFC"; Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcVFCResources.json"), "UTF-8")) .when(spy).getCldsServicesOrResourcesBasedOnURL(allVfcResourcesDetailUrl); - String allCvfcResourcesDetailUrl = refProp.getStringValue("sdc.catalog.url") + "resources?resourceType=CVFC"; Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcCVFCResources.json"), "UTF-8")) .when(spy).getCldsServicesOrResourcesBasedOnURL(allCvfcResourcesDetailUrl); - String allVfAlarms = refProp.getStringValue("sdc.catalog.url") + "resources/84855843-5247-4e97-a2bd-5395a510253b/artifacts/d57ac7ec-f3c3-4793-983a-c75ac3a43153"; Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcMeasurementsList.csv"), "UTF-8")) .when(spy).getCldsServicesOrResourcesBasedOnURL(allVfAlarms); - String vfcResourceExample = refProp.getStringValue("sdc.catalog.url") + "resources/d7646638-2572-4a94-b497-c028ac15f9ca/metadata"; Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcVFCResourceExample.json"), "UTF-8")) .when(spy).getCldsServicesOrResourcesBasedOnURL(vfcResourceExample); - CldsServiceData cldsServiceData = spy .getCldsServiceDataWithAlarmConditions("a33ed748-3477-4434-b3f3-b5560f5e7d9c"); assertTrue("a33ed748-3477-4434-b3f3-b5560f5e7d9c".equals(cldsServiceData.getServiceInvariantUUID())); assertTrue("29018914-966c-442d-9d08-251b9dc45b8f".equals(cldsServiceData.getServiceUUID())); assertTrue(cldsServiceData.getCldsVfs().size() == 1); - List alarmsList = spy.getAllAlarmConditionsFromCldsServiceData(cldsServiceData, "alarmCondition"); assertTrue(alarmsList.size() == 12); - } - } diff --git a/src/test/java/org/onap/clamp/clds/it/SdcReqItCase.java b/src/test/java/org/onap/clamp/clds/it/SdcReqItCase.java index 757d85b53..afff9dd7d 100644 --- a/src/test/java/org/onap/clamp/clds/it/SdcReqItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/SdcReqItCase.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights + * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -23,67 +23,85 @@ package org.onap.clamp.clds.it; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import java.io.IOException; import java.security.GeneralSecurityException; -import java.util.ArrayList; import java.util.List; import org.apache.commons.codec.DecoderException; -import org.camunda.bpm.engine.delegate.DelegateExecution; -import org.junit.Assert; +import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.onap.clamp.clds.client.req.sdc.SdcCatalogServices; +import org.onap.clamp.clds.AbstractItCase; import org.onap.clamp.clds.client.req.sdc.SdcReq; -import org.onap.clamp.clds.model.CldsSdcResource; -import org.onap.clamp.clds.model.CldsSdcServiceDetail; -import org.onap.clamp.clds.model.prop.Global; +import org.onap.clamp.clds.model.CldsEvent; import org.onap.clamp.clds.model.prop.ModelProperties; +import org.onap.clamp.clds.util.ResourceFileUtil; +import org.skyscreamer.jsonassert.JSONAssert; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @SpringBootTest -@TestPropertySource(locations = "classpath:application-no-camunda.properties") -public class SdcReqItCase { - String baseUrl = "AYBABTU"; - String serviceInvariantUuid = "serviceInvariantUUID"; +public class SdcReqItCase extends AbstractItCase { + @Autowired private SdcReq sdcReq; + private String modelBpmnProp; + private String modelBpmn; + private String modelName; + private String controlName; + private ModelProperties modelProperties; + private String jsonWithYamlInside; + + /** + * Initialize Test. + */ + @Before + public void setUp() throws IOException { + modelBpmnProp = ResourceFileUtil.getResourceAsString("example/model-properties/tca/modelBpmnProperties.json"); + modelBpmn = ResourceFileUtil.getResourceAsString("example/model-properties/tca/modelBpmn.json"); + modelName = "example-model01"; + controlName = "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf"; + modelProperties = new ModelProperties(modelName, controlName, CldsEvent.ACTION_SUBMIT, false, modelBpmn, + modelBpmnProp); + jsonWithYamlInside = ResourceFileUtil.getResourceAsString("example/tca-policy-req/prop-text.json"); + } + + @Test + public void formatBlueprintTest() throws IOException { + String blueprintFormatted = sdcReq.formatBlueprint(modelProperties, jsonWithYamlInside); + assertEquals(ResourceFileUtil.getResourceAsString("example/tca-policy-req/blueprint-expected.yaml"), + blueprintFormatted); + } + + @Test + public void formatSdcLocationsReqTest() { + String blueprintFormatted = sdcReq.formatSdcLocationsReq(modelProperties, "testos"); + assertEquals( + "{\"artifactName\":\"testos\",\"locations\":[\"SNDGCA64\",\"ALPRGAED\",\"LSLEILAA\",\"MDTWNJC1\"]}", + blueprintFormatted); + } + + @Test + public void formatSdcReqTest() { + String jsonResult = sdcReq.formatSdcReq("payload", "artifactName", "artifactLabel", "artifactType"); + JSONAssert.assertEquals( + "{\"payloadData\" : \"cGF5bG9hZA==\",\"artifactLabel\" : \"artifactLabel\",\"artifactName\" :\"artifactName\",\"artifactType\" : \"artifactType\"," + + "\"artifactGroupType\" : \"DEPLOYMENT\",\"description\" : \"from CLAMP Cockpit\"}", + jsonResult, true); + } @Test - public void getSdcReqUrlsListNoGlobalPropTest() throws GeneralSecurityException, DecoderException { - ModelProperties prop = mock(ModelProperties.class); - SdcCatalogServices sdcCatalogServices = mock(SdcCatalogServices.class); - DelegateExecution delegateExecution = mock(DelegateExecution.class); - CldsSdcResource cldsSdcResource = mock(CldsSdcResource.class); - List cldsSdcResources = new ArrayList<>(); - cldsSdcResources.add(cldsSdcResource); - List resourceVf = new ArrayList<>(); - resourceVf.add(serviceInvariantUuid); - Assert.assertTrue(sdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty()); - Global global = mock(Global.class); - when(prop.getGlobal()).thenReturn(global); - Assert.assertTrue(sdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty()); - when(global.getService()).thenReturn(serviceInvariantUuid); - Assert.assertTrue(sdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty()); - CldsSdcServiceDetail cldsSdcServiceDetail = mock(CldsSdcServiceDetail.class); - when(sdcCatalogServices.getCldsSdcServiceDetailFromJson(null)).thenReturn(cldsSdcServiceDetail); - when(global.getResourceVf()).thenReturn(new ArrayList<>()); - Assert.assertTrue(sdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty()); - when(cldsSdcServiceDetail.getResources()).thenReturn(cldsSdcResources); - Assert.assertTrue(sdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty()); - when(cldsSdcResource.getResoucreType()).thenReturn("VF"); - Assert.assertTrue(sdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty()); - when(global.getResourceVf()).thenReturn(resourceVf); - when(cldsSdcResource.getResourceInvariantUUID()).thenReturn(serviceInvariantUuid); - when(cldsSdcResource.getResourceInstanceName()).thenReturn("Resource instance name"); - List expected = new ArrayList<>(); - expected.add("AYBABTU/null/resourceInstances/resourceinstancename/artifacts"); - Assert.assertEquals(expected, sdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution)); + public void getSdcReqUrlsListTest() throws GeneralSecurityException, DecoderException { + List listUrls = sdcReq.getSdcReqUrlsList(modelProperties, refProp.getStringValue("sdc.serviceUrl")); + assertNotNull(listUrls); + assertTrue(listUrls.size() == 1); + assertTrue(listUrls.get(0).contains( + "/sdc/v1/catalog/services/56441b4b-0467-41dc-9a0e-e68613838219/resourceInstances/vpacketgen0/artifacts")); } } diff --git a/src/test/java/org/onap/clamp/clds/it/TcaRequestFormatterItCase.java b/src/test/java/org/onap/clamp/clds/it/TcaRequestFormatterItCase.java index c17ec0df8..419bfde22 100644 --- a/src/test/java/org/onap/clamp/clds/it/TcaRequestFormatterItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/TcaRequestFormatterItCase.java @@ -39,7 +39,6 @@ import org.onap.clamp.clds.model.prop.ModelProperties; import org.onap.clamp.clds.util.ResourceFileUtil; import org.skyscreamer.jsonassert.JSONAssert; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringRunner; /** @@ -47,14 +46,14 @@ import org.springframework.test.context.junit4.SpringRunner; */ @RunWith(SpringRunner.class) @SpringBootTest -@TestPropertySource(locations = "classpath:application-no-camunda.properties") public class TcaRequestFormatterItCase extends AbstractItCase { - String modelProp; - String modelBpmn; - String modelName; - String controlName; - String yamlInput; + private String modelProp; + private String modelBpmn; + private String modelName; + private String controlName; + private String yamlInput; + private ModelProperties modelProperties; /** * Initialize Test. @@ -66,13 +65,13 @@ public class TcaRequestFormatterItCase extends AbstractItCase { yamlInput = ResourceFileUtil.getResourceAsString("example/tca-policy-req/blueprint-input.yaml"); modelName = "example-model01"; controlName = "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf"; + modelProperties = new ModelProperties(modelName, controlName, CldsEvent.ACTION_SUBMIT, false, modelBpmn, + modelProp); } @Test public void testCreatePolicyJson() throws IOException, JSONException { - ModelProperties prop = new ModelProperties(modelName, controlName, CldsEvent.ACTION_SUBMIT, false, modelBpmn, - modelProp); - String result = TcaRequestFormatter.createPolicyJson(refProp, prop); + String result = TcaRequestFormatter.createPolicyJson(refProp, modelProperties); assertNotNull(result); JSONAssert.assertEquals(ResourceFileUtil.getResourceAsString("example/tca-policy-req/tca-policy-expected.json"), result, true); @@ -80,9 +79,7 @@ public class TcaRequestFormatterItCase extends AbstractItCase { @Test public void testUpdatedBlueprintWithConfiguration() throws IOException { - ModelProperties prop = new ModelProperties(modelName, controlName, CldsEvent.ACTION_SUBMIT, false, modelBpmn, - modelProp); - String result = TcaRequestFormatter.updatedBlueprintWithConfiguration(refProp, prop, yamlInput); + String result = TcaRequestFormatter.updatedBlueprintWithConfiguration(refProp, modelProperties, yamlInput); assertNotNull(result); assertEquals(ResourceFileUtil.getResourceAsString("example/tca-policy-req/blueprint-expected.yaml"), result); } diff --git a/src/test/java/org/onap/clamp/clds/model/prop/CustomModelElement.java b/src/test/java/org/onap/clamp/clds/model/prop/CustomModelElement.java index 03d7d65da..138d727c0 100644 --- a/src/test/java/org/onap/clamp/clds/model/prop/CustomModelElement.java +++ b/src/test/java/org/onap/clamp/clds/model/prop/CustomModelElement.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights + * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -30,6 +30,7 @@ import com.fasterxml.jackson.databind.JsonNode; */ public class CustomModelElement extends AbstractModelElement { + private String test; private static final String CUSTOM_TYPE = "customType"; /** @@ -38,10 +39,18 @@ public class CustomModelElement extends AbstractModelElement { public CustomModelElement(ModelProperties modelProp, ModelBpmn modelBpmn, JsonNode modelJson) { super(CUSTOM_TYPE, modelProp, modelBpmn, modelJson); topicPublishes = getValueByName("topicPublishes"); + test = this.getValueByName("test"); } public static final String getType() { return CUSTOM_TYPE; } + public String getTest() { + return test; + } + + public void setTest(String test) { + this.test = test; + } } diff --git a/src/test/java/org/onap/clamp/clds/model/prop/CustomModelElementTest.java b/src/test/java/org/onap/clamp/clds/model/prop/CustomModelElementTest.java index 89eaf51cd..46c70e55e 100644 --- a/src/test/java/org/onap/clamp/clds/model/prop/CustomModelElementTest.java +++ b/src/test/java/org/onap/clamp/clds/model/prop/CustomModelElementTest.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights + * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -35,33 +35,21 @@ public class CustomModelElementTest { } @Test - public void testNewElement() { - - try { - String modelBpmnProp = ResourceFileUtil.getResourceAsString("example/modelBpmnProp.json"); - String modelProp = ResourceFileUtil.getResourceAsString("example/modelProp.json"); - String modName = "example-model-name"; - String controlName = "example-control-name"; - - CustomModelElement customModelElement = null; - - // Instantiate first, we should not have our CustomModelElement yet - ModelProperties prop = new ModelProperties(modName, controlName, null, true, modelBpmnProp, modelProp); - - Assert.assertNotNull(prop); - - customModelElement = prop.getType(CustomModelElement.class); - - Assert.assertNull(customModelElement); - - ModelProperties.registerModelElement(CustomModelElement.class, CustomModelElement.getType()); - - customModelElement = prop.getType(CustomModelElement.class); - - Assert.assertNotNull(customModelElement); - - } catch (IOException e) { - e.printStackTrace(); - } + public void testCustomElement() throws IOException { + String modelBpmnProp = ResourceFileUtil.getResourceAsString("example/model-properties/custom/modelBpmn.json"); + String modelProp = ResourceFileUtil + .getResourceAsString("example/model-properties/custom/modelBpmnProperties.json"); + String modName = "example-model-name"; + String controlName = "example-control-name"; + CustomModelElement customModelElement = null; + // Instantiate first, we should not have our CustomModelElement yet + ModelProperties prop = new ModelProperties(modName, controlName, null, true, modelBpmnProp, modelProp); + Assert.assertNotNull(prop); + customModelElement = prop.getType(CustomModelElement.class); + Assert.assertNull(customModelElement); + ModelProperties.registerModelElement(CustomModelElement.class, CustomModelElement.getType()); + customModelElement = prop.getType(CustomModelElement.class); + Assert.assertNotNull(customModelElement); + Assert.assertEquals("This is a test", customModelElement.getTest()); } } diff --git a/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java b/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java index eb0214127..7bb11a9ef 100644 --- a/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java +++ b/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights + * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -46,14 +46,11 @@ public class ModelPropertiesTest { @Test public void testTcaModelDecoding() throws IOException { - String modelBpmnProp = ResourceFileUtil .getResourceAsString("example/model-properties/tca/modelBpmnProperties.json"); String modelBpmn = ResourceFileUtil.getResourceAsString("example/model-properties/tca/modelBpmn.json"); - ModelProperties prop = new ModelProperties("example-model-name", "example-control-name", null, true, modelBpmn, modelBpmnProp); - Policy policy = prop.getType(Policy.class); assertTrue(policy.isFound()); assertEquals(1, policy.getPolicyChains().size()); @@ -64,7 +61,6 @@ public class ModelPropertiesTest { assertEquals(3, policy.getPolicyChains().get(0).getPolicyItems().get(0).getMaxRetries()); assertEquals("", policy.getPolicyChains().get(0).getPolicyItems().get(0).getParentPolicy()); assertEquals(null, policy.getPolicyChains().get(0).getPolicyItems().get(0).getParentPolicyConditions()); - Tca tca = prop.getType(Tca.class); assertNotNull(tca); assertTrue(tca.isFound()); @@ -73,14 +69,12 @@ public class ModelPropertiesTest { assertEquals("policy1", tca.getTcaItem().getPolicyId()); assertEquals("f734f031-10aa-t8fb-330f-04dde2886325", tca.getTcaItem().getTcaUuId()); assertEquals(2, tca.getTcaItem().getTcaThresholds().size()); - assertEquals("ABATED", tca.getTcaItem().getTcaThresholds().get(0).getClosedLoopEventStatus()); assertEquals( "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated", tca.getTcaItem().getTcaThresholds().get(0).getFieldPath()); assertEquals("LESS_OR_EQUAL", tca.getTcaItem().getTcaThresholds().get(0).getOperator()); assertEquals(Integer.valueOf(123), tca.getTcaItem().getTcaThresholds().get(0).getThreshold()); - assertEquals("ONSET", tca.getTcaItem().getTcaThresholds().get(1).getClosedLoopEventStatus()); assertEquals("$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta", tca.getTcaItem().getTcaThresholds().get(1).getFieldPath()); @@ -90,14 +84,11 @@ public class ModelPropertiesTest { @Test public void testHolmesModelDecoding() throws IOException { - String modelBpmnProp = ResourceFileUtil .getResourceAsString("example/model-properties/holmes/modelBpmnProperties.json"); String modelBpmn = ResourceFileUtil.getResourceAsString("example/model-properties/holmes/modelBpmn.json"); - ModelProperties prop = new ModelProperties("example-model-name", "example-control-name", null, true, modelBpmn, modelBpmnProp); - Policy policy = prop.getType(Policy.class); assertTrue(policy.isFound()); assertEquals(1, policy.getPolicyChains().size()); @@ -108,7 +99,6 @@ public class ModelPropertiesTest { assertEquals(3, policy.getPolicyChains().get(0).getPolicyItems().get(0).getMaxRetries()); assertEquals("", policy.getPolicyChains().get(0).getPolicyItems().get(0).getParentPolicy()); assertEquals(null, policy.getPolicyChains().get(0).getPolicyItems().get(0).getParentPolicyConditions()); - Holmes holmes = prop.getType(Holmes.class); assertNotNull(holmes); assertTrue(holmes.isFound()); @@ -121,6 +111,6 @@ public class ModelPropertiesTest { CldsModel cldsModel = new CldsModel(); cldsModel.setPropText( ResourceFileUtil.getResourceAsString("example/model-properties/tca/modelBpmnProperties.json")); - assertEquals("f5213e3a-9191-4362-93b5-b67f8d770e44", ModelProperties.getVf(cldsModel)); + assertEquals("023a3f0d-1161-45ff-b4cf-8918a8ccf3ad", ModelProperties.getVf(cldsModel)); } } \ No newline at end of file diff --git a/src/test/resources/application-no-camunda.properties b/src/test/resources/application-no-camunda.properties index f7b2badef..2e284b032 100644 --- a/src/test/resources/application-no-camunda.properties +++ b/src/test/resources/application-no-camunda.properties @@ -76,42 +76,15 @@ server.context_parameters.p-name=value #context parameter with p-name as key and camel.springboot.consumer-template-cache-size=1000 camel.springboot.producer-template-cache-size=1000 -camel.springboot.jmx-enabled=true +camel.springboot.jmx-enabled=false camel.defaultthreadpool.poolsize=10 camel.defaultthreadpool.maxpoolsize=20 camel.defaultthreadpool.maxqueuesize=1000 camel.defaultthreadpool.keepaliveTime=60 camel.defaultthreadpool.rejectpolicy=CallerRuns - -#server.port=0 - -#Camunda Process Engine DataSource connection Details -spring.datasource.camunda.driverClassName=org.mariadb.jdbc.Driver -spring.datasource.camunda.url=jdbc:mariadb:sequential://localhost:${docker.mariadb.port.host}/camundabpm?autoReconnect=true&retriesAllDown=2147483647&failoverLoopRetries=2147483647 -spring.datasource.camunda.username=camunda -spring.datasource.camunda.password=e1bb2a8381d1aa6c09879bd627db3bb560ad29e8a3343fe6aa7e6a7ba622da4e -spring.datasource.camunda.validationQuery=SELECT 1 -spring.datasource.camunda.validationQueryTimeout=20000 -spring.datasource.camunda.validationInterval=30000 -spring.datasource.camunda.testWhileIdle = true -spring.datasource.camunda.minIdle = 0 -spring.datasource.camunda.initialSize=0 -# Automatically test whether a connection provided is good or not -spring.datasource.camunda.testOnBorrow=true -spring.datasource.camunda.ignoreExceptionOnPreLoad=true - -#Camunda application properties -#Camunda history level -camunda.bpm.history-level=none -camunda.bpm.enabled=false -camunda.bpm.jpa.enabled=false -camunda.bpm.auto-deployment-enabled=false -camunda.bpm.job-execution.active=false -camunda.bpm.job-execution.enabled=false -camunda.bpm.management.health.camunda.enabled=false -camunda.bpm.metrics.enabled=false -camunda.bpm.management.health.camunda.enabled=false -camunda.bpm.database.schema-update=true +#camel.springboot.xmlRoutes = false +camel.springboot.xmlRoutes=classpath:/clds/camel/*.xml +#camel.springboot.typeConversion = false #clds datasource connection details spring.datasource.cldsdb.driverClassName=org.mariadb.jdbc.Driver diff --git a/src/test/resources/clds/clds-reference.properties b/src/test/resources/clds/clds-reference.properties index 4627269a5..d6c8bc45b 100644 --- a/src/test/resources/clds/clds-reference.properties +++ b/src/test/resources/clds/clds-reference.properties @@ -2,19 +2,19 @@ # ============LICENSE_START======================================================= # ONAP CLAMP # ================================================================================ -# Copyright (C) 2017 AT&T Intellectual Property. All rights +# Copyright (C) 2017-2018 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. +# 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 +# +# 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============================================ # =================================================================== @@ -77,11 +77,11 @@ op.eNodeB.limit=2 op.eNodeB.period=10s # # Sdc service properties -sdc.catalog.url=http://sdc.api.simpledemo.onap.org:8080/sdc/v1/catalog/ -sdc.hostUrl=http://sdc.api.simpledemo.onap.org:8080 -sdc.serviceUrl=http://sdc.api.simpledemo.onap.org:8080/sdc/v1/catalog/services -sdc.serviceUsername=test -sdc.servicePassword=aa2871669d793c7fb7abbcda31b88b4c29bf2982755b25f08f8d0130539c11b0 +sdc.catalog.url=http://localhost:${docker.http-cache.port.host}/sdc/v1/catalog/ +sdc.hostUrl=http://localhost:${docker.http-cache.port.host} +sdc.serviceUrl=http://localhost:${docker.http-cache.port.host}/sdc/v1/catalog/services +sdc.serviceUsername=clamp +sdc.servicePassword=b7acccda32b98c5bb7acccda32b98c5b05D511BD6D93626E90D18E9D24D9B78CD34C7EE8012F0A189A28763E82271E50A5D4EC10C7D93E06E0A2D27CAE66B981 sdc.artifactLabel=blueprintclampcockpit sdc.sdcX-InstanceID=CLAMP sdc.artifactType=DCAE_INVENTORY_BLUEPRINT @@ -98,7 +98,7 @@ ui.alarm.default={"Reports a transient alarm condition when an incoming CDR cann action.test.override=false # if action.insert.test.event is true, then insert event even if the action is set to test action.insert.test.event=false -CLDS_SERVICE_CACHE_MAX_SECONDS=30 +clds.service.cache.invalidate.after.seconds=120 #DCAE Inventory Url Properties DCAE_INVENTORY_URL = http://dcae.api.simpledemo.onap.org:8080 diff --git a/src/test/resources/example/model-properties/custom/modelBpmn.json b/src/test/resources/example/model-properties/custom/modelBpmn.json new file mode 100644 index 000000000..c8efff877 --- /dev/null +++ b/src/test/resources/example/model-properties/custom/modelBpmn.json @@ -0,0 +1,25 @@ +{ + "policy": + [ + { + "id": "Policy_", + "from": "StartEvent_1" + } + ], + + "tca": + [ + { + "id": "TCA_", + "from": "" + } + ], + + "customType": + [ + { + "id": "CustomType_", + "from": "" + } + ] +} \ No newline at end of file diff --git a/src/test/resources/example/model-properties/custom/modelBpmnProperties.json b/src/test/resources/example/model-properties/custom/modelBpmnProperties.json new file mode 100644 index 000000000..fc2f1fd99 --- /dev/null +++ b/src/test/resources/example/model-properties/custom/modelBpmnProperties.json @@ -0,0 +1,248 @@ +{ + "global": + [ + { + "name": "service", + "value": + [ + "0f983e18-4603-4bb4-a98c-e29691fb16a1" + ] + }, + + { + "name": "vf", + "value": + [ + "6c7aaec2-59eb-41d9-8681-b7f976ab668d" + ] + }, + + { + "name": "actionSet", + "value": + [ + "enbRecipe" + ] + }, + + { + "name": "location", + "value": + [ + "SNDGCA64" + ] + } + ], + + "Policy_": + { + "Policy1": + [ + { + "name": "pname", + "value": "Policy1" + }, + + { + "name": "pid", + "value": "1" + }, + + { + "name": "timeout", + "value": "500" + }, + + { + "policyConfigurations": + [ + [ + { + "name": "recipe", + "value": + [ + "restart" + ] + }, + + { + "name": "maxRetries", + "value": + [ + "3" + ] + }, + + { + "name": "retryTimeLimit", + "value": + [ + "180" + ] + }, + + { + "name": "_id", + "value": + [ + "n9bQ4t6" + ] + }, + + { + "name": "parentPolicy", + "value": + [ + "" + ] + }, + { + "name": "targetResourceId", + "value": + [ + "resource-id" + ] + } + ], + + [ + { + "name": "recipe", + "value": + [ + "rebuild" + ] + }, + + { + "name": "maxRetries", + "value": + [ + "3" + ] + }, + + { + "name": "retryTimeLimit", + "value": + [ + "180" + ] + }, + + { + "name": "_id", + "value": + [ + "ItE5xKT" + ] + }, + + { + "name": "parentPolicy", + "value": + [ + "n9bQ4t6" + ] + }, + + { + "name": "parentPolicyConditions", + "value": + [ + "Failure_Retries", + "Failure_Timeout", + "Failure_Exception", + "Failure" + ] + }, + { + "name": "targetResourceId", + "value": + [ + "resource-id" + ] + } + ] + ] + } + ] + }, + + "TCA_": + { + "Narra": + [ + { + "name": "tname", + "value": "Narra" + }, + + { + "name": "tuuid", + "value": "886be8da-14fe-tca1-d04b-d13b55d58df9" + }, + + { + "name": "tnfc", + "value": "ENBE" + }, + + { + "name": "tcaEnab", + "value": "on" + }, + + { + "name": "tcaPol", + "value": "Policy1" + }, + + { + "name": "tcaPolId", + "value": "1" + }, + + { + "name": "tcaInt", + "value": "2" + }, + + { + "name": "tcaSev", + "value": "Warning" + }, + + { + "name": "tcaVio", + "value": "3" + }, + + { + "serviceConfigurations": + [ + [ + "PMRRCCONNESTABFAILCELLLATENCY", + "LESS", + "4", + "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABFAILCELLLATENCY')].Value" + ], + + [ + "PMRAATTCBRA", + "GREATER", + "30", + "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRAATTCBRA')].Value" + ] + ] + } + ] + }, + + "CustomType_": [ + { + "name": "test", + "value": "This is a test" + } + ] +} \ No newline at end of file diff --git a/src/test/resources/example/model-properties/holmes/modelBpmnProperties.json b/src/test/resources/example/model-properties/holmes/modelBpmnProperties.json index cd76a1289..43fecc9ea 100644 --- a/src/test/resources/example/model-properties/holmes/modelBpmnProperties.json +++ b/src/test/resources/example/model-properties/holmes/modelBpmnProperties.json @@ -68,13 +68,6 @@ "vnfRecipe" ] }, - { - "name": "location", - "value": [ - "SNDGCA64", - "ALPRGAED" - ] - }, { "name": "vf", "value": [ diff --git a/src/test/resources/example/model-properties/modelBpmn.json b/src/test/resources/example/model-properties/modelBpmn.json deleted file mode 100644 index 8f7b8e61a..000000000 --- a/src/test/resources/example/model-properties/modelBpmn.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "policy": [ - { - "id": "Policy_0honxgv", - "from": "TCA_1jy9to4" - } - ], - "tca": [ - { - "id": "TCA_1jy9to4", - "from": "Holmes_0i4n2mm" - } - ], - "holmes": [ - { - "id": "Holmes_0i4n2mm", - "from": "VesCollector_0orydnh" - } - ], - "vesCollector": [ - { - "id": "VesCollector_0orydnh", - "from": "StartEvent_1" - } - ] -} diff --git a/src/test/resources/example/model-properties/modelBpmnProp.json b/src/test/resources/example/model-properties/modelBpmnProp.json deleted file mode 100644 index eacb12448..000000000 --- a/src/test/resources/example/model-properties/modelBpmnProp.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "Policy_0honxgv": { - "policy1": [ - { - "name": "pname", - "value": "policy1" - }, - { - "name": "pid", - "value": "0" - }, - { - "name": "timeout", - "value": "345" - }, - { - "policyConfigurations": [ - [ - { - "name": "maxRetries", - "value": [ - "3" - ] - }, - { - "name": "retryTimeLimit", - "value": [ - "180" - ] - }, - { - "name": "_id", - "value": [ - "dGLuNqg" - ] - }, - { - "name": "parentPolicy", - "value": [ - "" - ] - }, - { - "name": "targetResourceId", - "value": [ - "resourceid" - ] - } - ] - ] - } - ] - }, - "TCA_1jy9to4": { - "tca1": [ - { - "name": "tname", - "value": "tca1" - }, - { - "name": "tuuid", - "value": "f43e3499-8c9c-teed-bb41-a0cb38ebf0d3" - }, - { - "name": "tnfc", - "value": "" - }, - { - "name": "tcaEnab", - "value": "on" - }, - { - "name": "tcaPol", - "value": "policy1" - }, - { - "name": "tcaPolId", - "value": "0" - }, - { - "name": "tcaInt", - "value": "1" - }, - { - "name": "tcaSev", - "value": "NORMAL" - }, - { - "name": "tcaVio", - "value": "1" - }, - { - "serviceConfigurations": [ - ] - } - ] - }, - "Holmes_0i4n2mm": [ - { - "name": "correlationalLogic", - "value": "blabla" - }, - { - "name": "configPolicyName", - "value": "policy1" - } - ] -} diff --git a/src/test/resources/example/model-properties/modelBpmnPropWithGlobal.json b/src/test/resources/example/model-properties/modelBpmnPropWithGlobal.json deleted file mode 100644 index 3030adfb3..000000000 --- a/src/test/resources/example/model-properties/modelBpmnPropWithGlobal.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "tca": { - "tname": "New_Set", - "tcaInt": "1", - "tcaVio": "1", - "tcaSev": { - "NORMAL": "NORMAL", - "CRITICAL": "CRITICAL", - "MAJOR": "MAJOR", - "MINOR": "MINOR", - "WARNING": "WARNING" - }, - "fieldPath": { - "FIELDPATH_test_1": "FIELDPATH_test_1", - "FIELDPATH_test_2": "FIELDPATH_test_2" - }, - "operator": { - ">": "GREATER", - "=": "EQUAL", - "<": "LESS" - }, - "opsPolicy": { - "POLICY_test_X": "POLICY_test_X", - "POLICY_test_Y": "POLICY_test_Y" - } - }, - "global": [ - { - "name": "actionSet", - "value": [ - "vnfRecipe" - ] - }, - { - "name": "location", - "value": [ - "SNDGCA64", - "ALPRGAED" - ] - }, - { - "name": "vf", - "value": [ - "f5213e3a-9191-4362-93b5-b67f8d770e44" - ] - }, - { - "name": "location", - "value": [ - "SNDGCA64", - "ALPRGAED", - "LSLEILAA", - "MDTWNJC1" - ] - } - ], - "policy": { - "pname": "0", - "timeout": 345, - "vnfRecipe": { - "": "", - "restart": "Restart", - "rebuild": "Rebuild", - "migrate": "Migrate", - "healthCheck": "Health Check", - "evacuate": "Evacuate" - }, - "enbRecipe": { - "": "", - "reset": "Reset" - }, - "maxRetries": "3", - "retryTimeLimit": 180, - "resource": { - "vCTS": "vCTS", - "v3CDB": "v3CDB", - "vUDR": "vUDR", - "vCOM": "vCOM", - "vRAR": "vRAR", - "vLCS": "vLCS", - "vUDR-BE": "vUDR-BE", - "vDBE": "vDBE" - }, - "parentPolicyConditions": { - "Failure_Retries": "Failure: Max Retries Exceeded", - "Failure_Timeout": "Failure: Time Limit Exceeded", - "Failure_Guard": "Failure: Guard", - "Failure_Exception": "Failure: Exception", - "Failure": "Failure: Other", - "Success": "Success" - }, - "targetResourceId": "resourceid" - }, - "shared": { - "byService": { - "": { - "vf": { - "": "" - }, - "location": { - "": "" - }, - "alarmCondition": { - "": "" - } - } - }, - "byVf": { - "": { - "vfc": { - "": "" - } - } - } - } -} diff --git a/src/test/resources/example/model-properties/policy/modelBpmn.json b/src/test/resources/example/model-properties/policy/modelBpmn.json new file mode 100644 index 000000000..de643a69a --- /dev/null +++ b/src/test/resources/example/model-properties/policy/modelBpmn.json @@ -0,0 +1,17 @@ +{ + "policy": + [ + { + "id": "Policy_", + "from": "StartEvent_1" + } + ], + + "tca": + [ + { + "id": "TCA_", + "from": "" + } + ] +} \ No newline at end of file diff --git a/src/test/resources/example/model-properties/policy/modelBpmnProperties.json b/src/test/resources/example/model-properties/policy/modelBpmnProperties.json new file mode 100644 index 000000000..99f67b62e --- /dev/null +++ b/src/test/resources/example/model-properties/policy/modelBpmnProperties.json @@ -0,0 +1,440 @@ +{ + "global": + [ + { + "name": "service", + "value": + [ + "0f983e18-4603-4bb4-a98c-e29691fb16a1" + ] + }, + + { + "name": "vf", + "value": + [ + "6c7aaec2-59eb-41d9-8681-b7f976ab668d" + ] + }, + + { + "name": "actionSet", + "value": + [ + "enbRecipe" + ] + }, + + { + "name": "location", + "value": + [ + "SNDGCA64" + ] + } + ], + + "Policy_": + { + "Policy1": + [ + { + "name": "pname", + "value": "Policy1" + }, + + { + "name": "pid", + "value": "1" + }, + + { + "name": "timeout", + "value": "500" + }, + + { + "policyConfigurations": + [ + [ + { + "name": "recipe", + "value": + [ + "restart" + ] + }, + + { + "name": "maxRetries", + "value": + [ + "3" + ] + }, + + { + "name": "retryTimeLimit", + "value": + [ + "180" + ] + }, + + { + "name": "_id", + "value": + [ + "n9bQ4t6" + ] + }, + + { + "name": "parentPolicy", + "value": + [ + "" + ] + }, + { + "name": "targetResourceId", + "value": + [ + "resource-id" + ] + } + ], + + [ + { + "name": "recipe", + "value": + [ + "rebuild" + ] + }, + + { + "name": "maxRetries", + "value": + [ + "3" + ] + }, + + { + "name": "retryTimeLimit", + "value": + [ + "180" + ] + }, + + { + "name": "_id", + "value": + [ + "ItE5xKT" + ] + }, + + { + "name": "parentPolicy", + "value": + [ + "n9bQ4t6" + ] + }, + + { + "name": "parentPolicyConditions", + "value": + [ + "Failure_Retries", + "Failure_Timeout", + "Failure_Exception", + "Failure" + ] + }, + { + "name": "targetResourceId", + "value": + [ + "resource-id" + ] + } + ] + ] + } + ], + + "Policy2": + [ + { + "name": "pname", + "value": "Policy2" + }, + + { + "name": "pid", + "value": "2" + }, + + { + "name": "timeout", + "value": "500" + }, + + { + "policyConfigurations": + [ + [ + { + "name": "recipe", + "value": + [ + "restart" + ] + }, + + { + "name": "maxRetries", + "value": + [ + "3" + ] + }, + + { + "name": "retryTimeLimit", + "value": + [ + "180" + ] + }, + + { + "name": "_id", + "value": + [ + "n9bQ4t6" + ] + }, + + { + "name": "parentPolicy", + "value": + [ + "" + ] + }, + { + "name": "targetResourceId", + "value": + [ + "resource-id" + ] + } + ], + + [ + { + "name": "recipe", + "value": + [ + "rebuild" + ] + }, + + { + "name": "maxRetries", + "value": + [ + "3" + ] + }, + + { + "name": "retryTimeLimit", + "value": + [ + "180" + ] + }, + + { + "name": "_id", + "value": + [ + "ItE5xKT" + ] + }, + + { + "name": "parentPolicy", + "value": + [ + "n9bQ4t6" + ] + }, + + { + "name": "parentPolicyConditions", + "value": + [ + "Failure_Retries", + "Failure_Timeout", + "Failure_Exception", + "Failure" + ] + }, + { + "name": "targetResourceId", + "value": + [ + "resource-id" + ] + } + ] + ] + } + ] + }, + + "TCA_": + { + "Narra": + [ + { + "name": "tname", + "value": "Narra" + }, + + { + "name": "tuuid", + "value": "886be8da-14fe-tca1-d04b-d13b55d58df9" + }, + + { + "name": "tnfc", + "value": "ENBE" + }, + + { + "name": "tcaEnab", + "value": "on" + }, + + { + "name": "tcaPol", + "value": "Policy1" + }, + + { + "name": "tcaPolId", + "value": "1" + }, + + { + "name": "tcaInt", + "value": "2" + }, + + { + "name": "tcaSev", + "value": "Warning" + }, + + { + "name": "tcaVio", + "value": "3" + }, + + { + "serviceConfigurations": + [ + [ + "PMRRCCONNESTABFAILCELLLATENCY", + "LESS", + "4", + "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABFAILCELLLATENCY')].Value" + ], + + [ + "PMRAATTCBRA", + "GREATER", + "30", + "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRAATTCBRA')].Value" + ] + ] + } + ], + + "Srini": + [ + { + "name": "tname", + "value": "Srini" + }, + + { + "name": "tuuid", + "value": "8b5ba88d-f4b4-tf0e-50b1-78a5a7dd412d" + }, + + { + "name": "tnfc", + "value": "ENBE" + }, + + { + "name": "tcaEnab", + "value": "on" + }, + + { + "name": "tcaPol", + "value": "Policy2" + }, + + { + "name": "tcaPolId", + "value": "2" + }, + + { + "name": "tcaInt", + "value": "10" + }, + + { + "name": "tcaSev", + "value": "Critical" + }, + + { + "name": "tcaVio", + "value": "5" + }, + + { + "serviceConfigurations": + [ + [ + "PMRRCCONNESTABFAILCELLLATENCY", + "EQUAL", + "3", + "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABFAILCELLLATENCY')].Value" + ], + + [ + "PMRAATTCBRA", + "GREATER", + "30", + "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRAATTCBRA')].Value" + ] + ] + } + ] + } +} \ No newline at end of file diff --git a/src/test/resources/example/model-properties/tca/modelBpmnProperties.json b/src/test/resources/example/model-properties/tca/modelBpmnProperties.json index 7bb4fe0bb..8e2780cda 100644 --- a/src/test/resources/example/model-properties/tca/modelBpmnProperties.json +++ b/src/test/resources/example/model-properties/tca/modelBpmnProperties.json @@ -101,20 +101,13 @@ { "name": "service", "value": [ - "serviceUUID" - ] - }, - { - "name": "location", - "value": [ - "SNDGCA64", - "ALPRGAED" + "4cc5b45a-1f63-4194-8100-cd8e14248c92" ] }, { "name": "vf", "value": [ - "f5213e3a-9191-4362-93b5-b67f8d770e44" + "023a3f0d-1161-45ff-b4cf-8918a8ccf3ad" ] }, { diff --git a/src/test/resources/example/modelBpmnProp.json b/src/test/resources/example/modelBpmnProp.json deleted file mode 100644 index c8efff877..000000000 --- a/src/test/resources/example/modelBpmnProp.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "policy": - [ - { - "id": "Policy_", - "from": "StartEvent_1" - } - ], - - "tca": - [ - { - "id": "TCA_", - "from": "" - } - ], - - "customType": - [ - { - "id": "CustomType_", - "from": "" - } - ] -} \ No newline at end of file diff --git a/src/test/resources/example/modelBpmnPropForPolicy.json b/src/test/resources/example/modelBpmnPropForPolicy.json deleted file mode 100644 index de643a69a..000000000 --- a/src/test/resources/example/modelBpmnPropForPolicy.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "policy": - [ - { - "id": "Policy_", - "from": "StartEvent_1" - } - ], - - "tca": - [ - { - "id": "TCA_", - "from": "" - } - ] -} \ No newline at end of file diff --git a/src/test/resources/example/modelProp.json b/src/test/resources/example/modelProp.json deleted file mode 100644 index 99f67b62e..000000000 --- a/src/test/resources/example/modelProp.json +++ /dev/null @@ -1,440 +0,0 @@ -{ - "global": - [ - { - "name": "service", - "value": - [ - "0f983e18-4603-4bb4-a98c-e29691fb16a1" - ] - }, - - { - "name": "vf", - "value": - [ - "6c7aaec2-59eb-41d9-8681-b7f976ab668d" - ] - }, - - { - "name": "actionSet", - "value": - [ - "enbRecipe" - ] - }, - - { - "name": "location", - "value": - [ - "SNDGCA64" - ] - } - ], - - "Policy_": - { - "Policy1": - [ - { - "name": "pname", - "value": "Policy1" - }, - - { - "name": "pid", - "value": "1" - }, - - { - "name": "timeout", - "value": "500" - }, - - { - "policyConfigurations": - [ - [ - { - "name": "recipe", - "value": - [ - "restart" - ] - }, - - { - "name": "maxRetries", - "value": - [ - "3" - ] - }, - - { - "name": "retryTimeLimit", - "value": - [ - "180" - ] - }, - - { - "name": "_id", - "value": - [ - "n9bQ4t6" - ] - }, - - { - "name": "parentPolicy", - "value": - [ - "" - ] - }, - { - "name": "targetResourceId", - "value": - [ - "resource-id" - ] - } - ], - - [ - { - "name": "recipe", - "value": - [ - "rebuild" - ] - }, - - { - "name": "maxRetries", - "value": - [ - "3" - ] - }, - - { - "name": "retryTimeLimit", - "value": - [ - "180" - ] - }, - - { - "name": "_id", - "value": - [ - "ItE5xKT" - ] - }, - - { - "name": "parentPolicy", - "value": - [ - "n9bQ4t6" - ] - }, - - { - "name": "parentPolicyConditions", - "value": - [ - "Failure_Retries", - "Failure_Timeout", - "Failure_Exception", - "Failure" - ] - }, - { - "name": "targetResourceId", - "value": - [ - "resource-id" - ] - } - ] - ] - } - ], - - "Policy2": - [ - { - "name": "pname", - "value": "Policy2" - }, - - { - "name": "pid", - "value": "2" - }, - - { - "name": "timeout", - "value": "500" - }, - - { - "policyConfigurations": - [ - [ - { - "name": "recipe", - "value": - [ - "restart" - ] - }, - - { - "name": "maxRetries", - "value": - [ - "3" - ] - }, - - { - "name": "retryTimeLimit", - "value": - [ - "180" - ] - }, - - { - "name": "_id", - "value": - [ - "n9bQ4t6" - ] - }, - - { - "name": "parentPolicy", - "value": - [ - "" - ] - }, - { - "name": "targetResourceId", - "value": - [ - "resource-id" - ] - } - ], - - [ - { - "name": "recipe", - "value": - [ - "rebuild" - ] - }, - - { - "name": "maxRetries", - "value": - [ - "3" - ] - }, - - { - "name": "retryTimeLimit", - "value": - [ - "180" - ] - }, - - { - "name": "_id", - "value": - [ - "ItE5xKT" - ] - }, - - { - "name": "parentPolicy", - "value": - [ - "n9bQ4t6" - ] - }, - - { - "name": "parentPolicyConditions", - "value": - [ - "Failure_Retries", - "Failure_Timeout", - "Failure_Exception", - "Failure" - ] - }, - { - "name": "targetResourceId", - "value": - [ - "resource-id" - ] - } - ] - ] - } - ] - }, - - "TCA_": - { - "Narra": - [ - { - "name": "tname", - "value": "Narra" - }, - - { - "name": "tuuid", - "value": "886be8da-14fe-tca1-d04b-d13b55d58df9" - }, - - { - "name": "tnfc", - "value": "ENBE" - }, - - { - "name": "tcaEnab", - "value": "on" - }, - - { - "name": "tcaPol", - "value": "Policy1" - }, - - { - "name": "tcaPolId", - "value": "1" - }, - - { - "name": "tcaInt", - "value": "2" - }, - - { - "name": "tcaSev", - "value": "Warning" - }, - - { - "name": "tcaVio", - "value": "3" - }, - - { - "serviceConfigurations": - [ - [ - "PMRRCCONNESTABFAILCELLLATENCY", - "LESS", - "4", - "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABFAILCELLLATENCY')].Value" - ], - - [ - "PMRAATTCBRA", - "GREATER", - "30", - "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRAATTCBRA')].Value" - ] - ] - } - ], - - "Srini": - [ - { - "name": "tname", - "value": "Srini" - }, - - { - "name": "tuuid", - "value": "8b5ba88d-f4b4-tf0e-50b1-78a5a7dd412d" - }, - - { - "name": "tnfc", - "value": "ENBE" - }, - - { - "name": "tcaEnab", - "value": "on" - }, - - { - "name": "tcaPol", - "value": "Policy2" - }, - - { - "name": "tcaPolId", - "value": "2" - }, - - { - "name": "tcaInt", - "value": "10" - }, - - { - "name": "tcaSev", - "value": "Critical" - }, - - { - "name": "tcaVio", - "value": "5" - }, - - { - "serviceConfigurations": - [ - [ - "PMRRCCONNESTABFAILCELLLATENCY", - "EQUAL", - "3", - "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABFAILCELLLATENCY')].Value" - ], - - [ - "PMRAATTCBRA", - "GREATER", - "30", - "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRAATTCBRA')].Value" - ] - ] - } - ] - } -} \ No newline at end of file diff --git a/src/test/resources/example/modelPropForPolicy.json b/src/test/resources/example/modelPropForPolicy.json deleted file mode 100644 index bf3480924..000000000 --- a/src/test/resources/example/modelPropForPolicy.json +++ /dev/null @@ -1,432 +0,0 @@ -{ - "global": - [ - { - "name": "service", - "value": - [ - "0f983e18-4603-4bb4-a98c-e29691fb16a1" - ] - }, - - { - "name": "vf", - "value": - [ - "6c7aaec2-59eb-41d9-8681-b7f976ab668d" - ] - }, - - { - "name": "location", - "value": - [ - "SNDGCA64" - ] - } - ], - - "Policy_": - { - "Policy1": - [ - { - "name": "pname", - "value": "Policy1" - }, - - { - "name": "pid", - "value": "1" - }, - - { - "name": "timeout", - "value": "500" - }, - - { - "policyConfigurations": - [ - [ - { - "name": "recipe", - "value": - [ - "restart" - ] - }, - - { - "name": "maxRetries", - "value": - [ - "3" - ] - }, - - { - "name": "retryTimeLimit", - "value": - [ - "180" - ] - }, - - { - "name": "_id", - "value": - [ - "n9bQ4t6" - ] - }, - - { - "name": "parentPolicy", - "value": - [ - "" - ] - }, - { - "name": "targetResourceId", - "value": - [ - "resource-id" - ] - } - ], - - [ - { - "name": "recipe", - "value": - [ - "rebuild" - ] - }, - - { - "name": "maxRetries", - "value": - [ - "3" - ] - }, - - { - "name": "retryTimeLimit", - "value": - [ - "180" - ] - }, - - { - "name": "_id", - "value": - [ - "ItE5xKT" - ] - }, - - { - "name": "parentPolicy", - "value": - [ - "n9bQ4t6" - ] - }, - - { - "name": "parentPolicyConditions", - "value": - [ - "Failure_Retries", - "Failure_Timeout", - "Failure_Exception", - "Failure" - ] - }, - { - "name": "targetResourceId", - "value": - [ - "resource-id" - ] - } - ] - ] - } - ], - - "Policy2": - [ - { - "name": "pname", - "value": "Policy2" - }, - - { - "name": "pid", - "value": "2" - }, - - { - "name": "timeout", - "value": "500" - }, - - { - "policyConfigurations": - [ - [ - { - "name": "recipe", - "value": - [ - "restart" - ] - }, - - { - "name": "maxRetries", - "value": - [ - "3" - ] - }, - - { - "name": "retryTimeLimit", - "value": - [ - "180" - ] - }, - - { - "name": "_id", - "value": - [ - "n9bQ4t6" - ] - }, - - { - "name": "parentPolicy", - "value": - [ - "" - ] - }, - { - "name": "targetResourceId", - "value": - [ - "resource-id" - ] - } - ], - - [ - { - "name": "recipe", - "value": - [ - "rebuild" - ] - }, - - { - "name": "maxRetries", - "value": - [ - "3" - ] - }, - - { - "name": "retryTimeLimit", - "value": - [ - "180" - ] - }, - - { - "name": "_id", - "value": - [ - "ItE5xKT" - ] - }, - - { - "name": "parentPolicy", - "value": - [ - "n9bQ4t6" - ] - }, - - { - "name": "parentPolicyConditions", - "value": - [ - "Failure_Retries", - "Failure_Timeout", - "Failure_Exception", - "Failure" - ] - }, - { - "name": "targetResourceId", - "value": - [ - "resource-id" - ] - } - ] - ] - } - ] - }, - - "TCA_": - { - "Narra": - [ - { - "name": "tname", - "value": "Narra" - }, - - { - "name": "tuuid", - "value": "886be8da-14fe-tca1-d04b-d13b55d58df9" - }, - - { - "name": "tnfc", - "value": "ENBE" - }, - - { - "name": "tcaEnab", - "value": "on" - }, - - { - "name": "tcaPol", - "value": "Policy1" - }, - - { - "name": "tcaPolId", - "value": "1" - }, - - { - "name": "tcaInt", - "value": "2" - }, - - { - "name": "tcaSev", - "value": "Warning" - }, - - { - "name": "tcaVio", - "value": "3" - }, - - { - "serviceConfigurations": - [ - [ - "PMRRCCONNESTABFAILCELLLATENCY", - "LESS", - "4", - "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABFAILCELLLATENCY')].Value" - ], - - [ - "PMRAATTCBRA", - "GREATER", - "30", - "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRAATTCBRA')].Value" - ] - ] - } - ], - - "Srini": - [ - { - "name": "tname", - "value": "Srini" - }, - - { - "name": "tuuid", - "value": "8b5ba88d-f4b4-tf0e-50b1-78a5a7dd412d" - }, - - { - "name": "tnfc", - "value": "ENBE" - }, - - { - "name": "tcaEnab", - "value": "on" - }, - - { - "name": "tcaPol", - "value": "Policy2" - }, - - { - "name": "tcaPolId", - "value": "2" - }, - - { - "name": "tcaInt", - "value": "10" - }, - - { - "name": "tcaSev", - "value": "Critical" - }, - - { - "name": "tcaVio", - "value": "5" - }, - - { - "serviceConfigurations": - [ - [ - "PMRRCCONNESTABFAILCELLLATENCY", - "EQUAL", - "3", - "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABFAILCELLLATENCY')].Value" - ], - - [ - "PMRAATTCBRA", - "GREATER", - "30", - "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRAATTCBRA')].Value" - ] - ] - } - ] - } -} \ No newline at end of file diff --git a/src/test/resources/example/sdc/expected-result/all-sdc-services.json b/src/test/resources/example/sdc/expected-result/all-sdc-services.json new file mode 100644 index 000000000..ea6efddb4 --- /dev/null +++ b/src/test/resources/example/sdc/expected-result/all-sdc-services.json @@ -0,0 +1,6 @@ +{ + "service": { + "4cc5b45a-1f63-4194-8100-cd8e14248c92": "vFirewall", + "c95b0e7c-c1f0-4287-9928-7964c5377a46": "vLoadBalancer" + } +} diff --git a/src/test/resources/example/tca-policy-req/blueprint-expected.yaml b/src/test/resources/example/tca-policy-req/blueprint-expected.yaml index 2082e559b..8739bb22f 100644 --- a/src/test/resources/example/tca-policy-req/blueprint-expected.yaml +++ b/src/test/resources/example/tca-policy-req/blueprint-expected.yaml @@ -1,7 +1,7 @@ tosca_definitions_version: cloudify_dsl_1_3 -imports: ['http://www.getcloudify.org/spec/cloudify/3.4/types.yaml', 'https://nexus01.research.att.com:8443/repository/solutioning01-mte2-raw/type_files/docker/2.2.0/node-type.yaml', - 'https://nexus01.research.att.com:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml', - 'http://nexus01.research.att.com:8081/repository/solutioning01-mte2-raw/type_files/dmaap/dmaap_mr.yaml'] +imports: ['http://www.getcloudify.org/spec/cloudify/3.4/types.yaml', 'https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/docker/2.2.0/node-type.yaml', + 'https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml', + 'http://onap.org:8081/repository/solutioning01-mte2-raw/type_files/dmaap/dmaap_mr.yaml'] inputs: location_id: {type: string} service_id: {type: string} @@ -10,7 +10,7 @@ node_templates: type: dcae.nodes.StreamingAnalytics.SelectedCDAPInfrastructure properties: location_id: {get_input: location_id} - scn_override: cdap_broker.solutioning-central.dcae.att.com + scn_override: cdap_broker.solutioning-central.dcae.onap.org interfaces: cloudify.interfaces.lifecycle: {} tca_tca: @@ -21,15 +21,15 @@ node_templates: tcaVESAlertsTableName: TCAVESAlertsTable, tcaVESAlertsTableTTLSeconds: '1728000', tcaVESMessageStatusTableName: TCAVESMessageStatusTable, tcaVESMessageStatusTableTTLSeconds: '86400', thresholdCalculatorFlowletInstances: '2'} - app_preferences: {publisherContentType: application/json, publisherHostName: mrlocal-mtnjftle01.homer.att.com, + app_preferences: {publisherContentType: application/json, publisherHostName: mrlocal-mtnjftle01.onap.org, publisherHostPort: '3905', publisherMaxBatchSize: '10', publisherMaxRecoveryQueueSize: '100000', - publisherPollingInterval: '20000', publisherProtocol: https, publisherTopicName: com.att.dcae.dmaap.mtnje2.DcaeTestVESPub, - publisherUserName: m00502@tca.af.dcae.att.com, publisherUserPassword: Te5021abc, + publisherPollingInterval: '20000', publisherProtocol: https, publisherTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESPub, + publisherUserName: m00502@tca.af.dcae.onap.org, publisherUserPassword: Te5021abc, subscriberConsumerGroup: OpenDCAE-c12, subscriberConsumerId: c12, subscriberContentType: application/json, - subscriberHostName: mrlocal-mtnjftle01.homer.att.com, subscriberHostPort: '3905', + subscriberHostName: mrlocal-mtnjftle01.onap.org, subscriberHostPort: '3905', subscriberMessageLimit: '-1', subscriberPollingInterval: '20000', subscriberProtocol: https, - subscriberTimeoutMS: '-1', subscriberTopicName: com.att.dcae.dmaap.mtnje2.DcaeTestVESSub, - subscriberUserName: m00502@tca.af.dcae.att.com, subscriberUserPassword: Te5021abc, + subscriberTimeoutMS: '-1', subscriberTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESSub, + subscriberUserName: m00502@tca.af.dcae.onap.org, subscriberUserPassword: Te5021abc, tca_policy: '{"domain":"measurementsForVfScaling","metricsPerEventName":[{"eventName":"vFirewallBroadcastPackets","controlLoopSchemaType":"VNF","policyScope":"DCAE","policyName":"example_model01.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_1jy9to4","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta","thresholdValue":123,"direction":"GREATER_OR_EQUAL","severity":"MAJOR","closedLoopEventStatus":"ONSET"},{"closedLoopControlName":"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta","thresholdValue":123,"direction":"GREATER_OR_EQUAL","severity":"MAJOR","closedLoopEventStatus":"ONSET"}]}]}'} artifact_name: dcae-analytics-tca artifact_version: 1.0.0 diff --git a/src/test/resources/example/tca-policy-req/blueprint-input.yaml b/src/test/resources/example/tca-policy-req/blueprint-input.yaml index 95322258e..101dc2c0d 100644 --- a/src/test/resources/example/tca-policy-req/blueprint-input.yaml +++ b/src/test/resources/example/tca-policy-req/blueprint-input.yaml @@ -1,9 +1,9 @@ tosca_definitions_version: cloudify_dsl_1_3 imports: - http://www.getcloudify.org/spec/cloudify/3.4/types.yaml -- https://nexus01.research.att.com:8443/repository/solutioning01-mte2-raw/type_files/docker/2.2.0/node-type.yaml -- https://nexus01.research.att.com:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml -- http://nexus01.research.att.com:8081/repository/solutioning01-mte2-raw/type_files/dmaap/dmaap_mr.yaml +- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/docker/2.2.0/node-type.yaml +- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml +- http://onap.org:8081/repository/solutioning01-mte2-raw/type_files/dmaap/dmaap_mr.yaml inputs: location_id: type: string @@ -15,9 +15,10 @@ node_templates: properties: location_id: get_input: location_id - scn_override: cdap_broker.solutioning-central.dcae.att.com + scn_override: cdap_broker.solutioning-central.dcae.onap.org interfaces: - cloudify.interfaces.lifecycle: {} + cloudify.interfaces.lifecycle: { + } tca_tca: type: dcae.nodes.MicroService.cdap properties: @@ -32,33 +33,35 @@ node_templates: thresholdCalculatorFlowletInstances: '2' app_preferences: publisherContentType: application/json - publisherHostName: mrlocal-mtnjftle01.homer.att.com + publisherHostName: mrlocal-mtnjftle01.onap.org publisherHostPort: '3905' publisherMaxBatchSize: '10' publisherMaxRecoveryQueueSize: '100000' publisherPollingInterval: '20000' publisherProtocol: https - publisherTopicName: com.att.dcae.dmaap.mtnje2.DcaeTestVESPub - publisherUserName: m00502@tca.af.dcae.att.com + publisherTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESPub + publisherUserName: m00502@tca.af.dcae.onap.org publisherUserPassword: Te5021abc subscriberConsumerGroup: OpenDCAE-c12 subscriberConsumerId: c12 subscriberContentType: application/json - subscriberHostName: mrlocal-mtnjftle01.homer.att.com + subscriberHostName: mrlocal-mtnjftle01.onap.org subscriberHostPort: '3905' subscriberMessageLimit: '-1' subscriberPollingInterval: '20000' subscriberProtocol: https subscriberTimeoutMS: '-1' - subscriberTopicName: com.att.dcae.dmaap.mtnje2.DcaeTestVESSub - subscriberUserName: m00502@tca.af.dcae.att.com + subscriberTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESSub + subscriberUserName: m00502@tca.af.dcae.onap.org subscriberUserPassword: Te5021abc - tca_policy: + tca_policy: null artifact_name: dcae-analytics-tca artifact_version: 1.0.0 connections: - streams_publishes: [] - streams_subscribes: [] + streams_publishes: [ + ] + streams_subscribes: [ + ] jar_url: http://somejar location_id: get_input: location_id @@ -76,4 +79,4 @@ node_templates: streamname: TCASubscriberOutputStream relationships: - target: cdap_host_host - type: dcae.relationships.component_contained_in + type: dcae.relationships.component_contained_in \ No newline at end of file diff --git a/src/test/resources/example/tca-policy-req/prop-text.json b/src/test/resources/example/tca-policy-req/prop-text.json new file mode 100644 index 000000000..acaa8894f --- /dev/null +++ b/src/test/resources/example/tca-policy-req/prop-text.json @@ -0,0 +1 @@ +{"global":[{"name":"service","value":["tosca_definitions_version: cloudify_dsl_1_3\r\nimports:\r\n- http://www.getcloudify.org/spec/cloudify/3.4/types.yaml\r\n- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/docker/2.2.0/node-type.yaml\r\n- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml\r\n- http://onap.org:8081/repository/solutioning01-mte2-raw/type_files/dmaap/dmaap_mr.yaml\r\ninputs:\r\n location_id:\r\n type: string\r\n service_id:\r\n type: string\r\nnode_templates:\r\n cdap_host_host:\r\n type: dcae.nodes.StreamingAnalytics.SelectedCDAPInfrastructure\r\n properties:\r\n location_id:\r\n get_input: location_id\r\n scn_override: cdap_broker.solutioning-central.dcae.onap.org\r\n interfaces:\r\n cloudify.interfaces.lifecycle: {\r\n }\r\n tca_tca:\r\n type: dcae.nodes.MicroService.cdap\r\n properties:\r\n app_config:\r\n appDescription: DCAE Analytics Threshold Crossing Alert Application\r\n appName: dcae-tca\r\n tcaSubscriberOutputStreamName: TCASubscriberOutputStream\r\n tcaVESAlertsTableName: TCAVESAlertsTable\r\n tcaVESAlertsTableTTLSeconds: '1728000'\r\n tcaVESMessageStatusTableName: TCAVESMessageStatusTable\r\n tcaVESMessageStatusTableTTLSeconds: '86400'\r\n thresholdCalculatorFlowletInstances: '2'\r\n app_preferences:\r\n publisherContentType: application/json\r\n publisherHostName: mrlocal-mtnjftle01.onap.org\r\n publisherHostPort: '3905'\r\n publisherMaxBatchSize: '10'\r\n publisherMaxRecoveryQueueSize: '100000'\r\n publisherPollingInterval: '20000'\r\n publisherProtocol: https\r\n publisherTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESPub\r\n publisherUserName: m00502@tca.af.dcae.onap.org\r\n publisherUserPassword: Te5021abc\r\n subscriberConsumerGroup: OpenDCAE-c12\r\n subscriberConsumerId: c12\r\n subscriberContentType: application/json\r\n subscriberHostName: mrlocal-mtnjftle01.onap.org\r\n subscriberHostPort: '3905'\r\n subscriberMessageLimit: '-1'\r\n subscriberPollingInterval: '20000'\r\n subscriberProtocol: https\r\n subscriberTimeoutMS: '-1'\r\n subscriberTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESSub\r\n subscriberUserName: m00502@tca.af.dcae.onap.org\r\n subscriberUserPassword: Te5021abc\r\n tca_policy: '{\"domain\":\"measurementsForVfScaling\",\"metricsPerEventName\":[{\"eventName\":\"vFirewallBroadcastPackets\",\"controlLoopSchemaType\":\"VNF\",\"policyScope\":\"DCAE\",\"policyName\":\"example_model01.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_1jy9to4\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta\",\"thresholdValue\":123,\"direction\":\"GREATER_OR_EQUAL\",\"severity\":\"MAJOR\",\"closedLoopEventStatus\":\"ONSET\"},{\"closedLoopControlName\":\"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta\",\"thresholdValue\":123,\"direction\":\"GREATER_OR_EQUAL\",\"severity\":\"MAJOR\",\"closedLoopEventStatus\":\"ONSET\"}]}]}'\r\n artifact_name: dcae-analytics-tca\r\n artifact_version: 1.0.0\r\n connections:\r\n streams_publishes: [\r\n ]\r\n streams_subscribes: [\r\n ]\r\n jar_url: http://somejar\r\n location_id:\r\n get_input: location_id\r\n namespace: cdap_tca_hi_lo\r\n programs:\r\n - program_id: TCAVESCollectorFlow\r\n program_type: flows\r\n - program_id: TCADMaaPMRSubscriberWorker\r\n program_type: workers\r\n - program_id: TCADMaaPMRPublisherWorker\r\n program_type: workers\r\n service_component_type: cdap_app_tca\r\n service_id:\r\n get_input: service_id\r\n streamname: TCASubscriberOutputStream\r\n relationships:\r\n - target: cdap_host_host\r\n type: dcae.relationships.component_contained_in"]}]} \ No newline at end of file diff --git a/src/test/resources/https/https-test.properties b/src/test/resources/https/https-test.properties index 54005ef2c..82cd999c3 100644 --- a/src/test/resources/https/https-test.properties +++ b/src/test/resources/https/https-test.properties @@ -77,42 +77,15 @@ server.context_parameters.p-name=value #context parameter with p-name as key and camel.springboot.consumer-template-cache-size=1000 camel.springboot.producer-template-cache-size=1000 -camel.springboot.jmx-enabled=true +camel.springboot.jmx-enabled=false camel.defaultthreadpool.poolsize=10 camel.defaultthreadpool.maxpoolsize=20 camel.defaultthreadpool.maxqueuesize=1000 camel.defaultthreadpool.keepaliveTime=60 camel.defaultthreadpool.rejectpolicy=CallerRuns - -#server.port=0 -#Camunda Process Engine DataSource connection Details -spring.datasource.camunda.driverClassName=org.mariadb.jdbc.Driver -spring.datasource.camunda.url=jdbc:mariadb:sequential://localhost:${docker.mariadb.port.host}/camundabpm?autoReconnect=true&retriesAllDown=2147483647&failoverLoopRetries=2147483647 -spring.datasource.camunda.username=camunda -spring.datasource.camunda.password=e1bb2a8381d1aa6c09879bd627db3bb560ad29e8a3343fe6aa7e6a7ba622da4e -spring.datasource.camunda.validationQuery=SELECT 1 -spring.datasource.camunda.validationQueryTimeout=20000 -spring.datasource.camunda.validationInterval=30000 -spring.datasource.camunda.testWhileIdle = true -spring.datasource.camunda.minIdle = 0 -spring.datasource.camunda.initialSize=0 -# Automatically test whether a connection provided is good or not -spring.datasource.camunda.testOnBorrow=true -spring.datasource.camunda.ignoreExceptionOnPreLoad=true - - -#Camunda application properties -#Camunda history level -camunda.bpm.history-level=none -camunda.bpm.enabled=false -camunda.bpm.jpa.enabled=false -camunda.bpm.auto-deployment-enabled=false -camunda.bpm.job-execution.active=false -camunda.bpm.job-execution.enabled=false -camunda.bpm.management.health.camunda.enabled=false -camunda.bpm.metrics.enabled=false -camunda.bpm.management.health.camunda.enabled=false -camunda.bpm.database.schema-update=true +#camel.springboot.xmlRoutes = false +camel.springboot.xmlRoutes=classpath:/clds/camel/*.xml +#camel.springboot.typeConversion = false #clds datasource connection details spring.datasource.cldsdb.driverClassName=org.mariadb.jdbc.Driver -- cgit 1.2.3-korg From 55c16fa6e3f68597a6d20f1f780f8fcd5896dc89 Mon Sep 17 00:00:00 2001 From: "Determe, Sebastien (sd378r)" Date: Thu, 1 Mar 2018 15:16:52 +0100 Subject: Add files required for test Add files required for unit tests of SingleConfiguration Issue-ID: CLAMP-81 Change-Id: Ic7d86f9c6f4797bdfef00695ece06a0169ec9079 Signed-off-by: Determe, Sebastien (sd378r) --- src/test/resources/clds/sdc-controller-config-NULL.json | 10 ++++++++++ src/test/resources/clds/sdc-controller-config-TLS.json | 13 +++++++++++++ src/test/resources/clds/sdc-controller-config-bad.json | 13 +++++++++++++ 3 files changed, 36 insertions(+) create mode 100644 src/test/resources/clds/sdc-controller-config-NULL.json create mode 100644 src/test/resources/clds/sdc-controller-config-TLS.json create mode 100644 src/test/resources/clds/sdc-controller-config-bad.json (limited to 'src/test/resources/clds') diff --git a/src/test/resources/clds/sdc-controller-config-NULL.json b/src/test/resources/clds/sdc-controller-config-NULL.json new file mode 100644 index 000000000..5c8ec0cfe --- /dev/null +++ b/src/test/resources/clds/sdc-controller-config-NULL.json @@ -0,0 +1,10 @@ +{ + "user": "User", + "consumerGroup": "NULL", + "consumerId": "consumerId", + "environmentName": "environmentName", + "sdcAddress": "hostname", + "password": "bb3871669d893c7fb8aaacda31b77b4f537E67A081C2726889548ED7BC4C2DE6", + "pollingInterval":10, + "pollingTimeout":30 +} diff --git a/src/test/resources/clds/sdc-controller-config-TLS.json b/src/test/resources/clds/sdc-controller-config-TLS.json new file mode 100644 index 000000000..d7642e6b1 --- /dev/null +++ b/src/test/resources/clds/sdc-controller-config-TLS.json @@ -0,0 +1,13 @@ +{ + "user": "User", + "consumerGroup": "consumerGroup", + "consumerId": "consumerId", + "environmentName": "environmentName", + "sdcAddress": "hostname", + "password": "bb3871669d893c7fb8aaacda31b77b4f537E67A081C2726889548ED7BC4C2DE6", + "pollingInterval":10, + "pollingTimeout":30, + "activateServerTLSAuth": true, + "keyStorePassword":"bb3871669d893c7fb8aaacda31b77b4f537E67A081C2726889548ED7BC4C2DE6", + "keyStorePath": "/test" +} diff --git a/src/test/resources/clds/sdc-controller-config-bad.json b/src/test/resources/clds/sdc-controller-config-bad.json new file mode 100644 index 000000000..d99ed5801 --- /dev/null +++ b/src/test/resources/clds/sdc-controller-config-bad.json @@ -0,0 +1,13 @@ +{ + "sdc-connections": { + "sdc-controller1": { + "user": "testuser", + "consumerGroup": "consumerGroup", + "consumerId": "consumerId", + "environmentName": "environmentName", + "sdcAddress": "hostname1", + "pollingInterval": 10, + "pollingTimeout": 30 + } + } +} -- cgit 1.2.3-korg From 44508f217d6df709ff4b9adbbe2898dfa9dee25e Mon Sep 17 00:00:00 2001 From: "Determe, Sebastien (sd378r)" Date: Thu, 1 Mar 2018 15:19:28 +0100 Subject: Add controller config code Add SDC config parser code for mutliple SDC client configurations + unit tests Issue-ID: CLAMP-81 Change-Id: Ia97007463c6baf40456f97d9627da8b0ed3f4e49 Signed-off-by: Determe, Sebastien (sd378r) --- .../config/sdc/SdcControllersConfiguration.java | 94 ++++++++++++++++++++++ .../config/SdcControllersConfigurationItCase.java | 86 ++++++++++++++++++++ .../resources/clds/sdc-controllers-config-bad.json | 26 ++++++ .../clds/sdc-controllers-config-missing-param.json | 13 +++ .../resources/clds/sdc-controllers-config.json | 26 ++++++ 5 files changed, 245 insertions(+) create mode 100644 src/main/java/org/onap/clamp/clds/config/sdc/SdcControllersConfiguration.java create mode 100644 src/test/java/org/onap/clamp/clds/it/config/SdcControllersConfigurationItCase.java create mode 100644 src/test/resources/clds/sdc-controllers-config-bad.json create mode 100644 src/test/resources/clds/sdc-controllers-config-missing-param.json create mode 100644 src/test/resources/clds/sdc-controllers-config.json (limited to 'src/test/resources/clds') diff --git a/src/main/java/org/onap/clamp/clds/config/sdc/SdcControllersConfiguration.java b/src/main/java/org/onap/clamp/clds/config/sdc/SdcControllersConfiguration.java new file mode 100644 index 000000000..c99dd21fd --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/config/sdc/SdcControllersConfiguration.java @@ -0,0 +1,94 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2018 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.config.sdc; + +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.PostConstruct; + +import org.onap.clamp.clds.exception.sdc.controller.SdcParametersException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.ApplicationContext; +import org.springframework.core.io.Resource; +import org.springframework.stereotype.Component; + +/** + * This class maps the SDC config JSON file. This JSON can have multiple + * sdc-controller config. So the json is loaded in a static way and the instance + * must specify the controller name that it represents. + */ +@Component +public class SdcControllersConfiguration { + + private static final EELFLogger logger = EELFManager.getInstance().getLogger(SdcControllersConfiguration.class); + public static final String CONTROLLER_SUBTREE_KEY = "sdc-connections"; + @Autowired + protected ApplicationContext appContext; + /** + * The file name that will be loaded by Spring. + */ + @Value("${org.onap.clamp.config.files.sdcController:'classpath:/clds/sdc-controllers-config.json'}") + protected String sdcControllerFile; + /** + * The root of the JSON. + */ + private JsonNode jsonRootNode; + + @PostConstruct + public void loadConfiguration() throws IOException { + Resource resource = appContext.getResource(sdcControllerFile); + // Try to load json tree + jsonRootNode = new ObjectMapper().readValue(resource.getInputStream(), JsonNode.class); + } + + public SdcSingleControllerConfiguration getSdcSingleControllerConfiguration(String controllerName) { + Map controllerMap = getAllDefinedControllers(); + return controllerMap.get(controllerName); + } + + /** + * This method reads all Controllers configurations and returns them. + * + * @return A list of controller Names defined in the config + */ + public Map getAllDefinedControllers() { + Map result = new HashMap<>(); + if (jsonRootNode.get(CONTROLLER_SUBTREE_KEY) != null) { + jsonRootNode.get(CONTROLLER_SUBTREE_KEY).fields().forEachRemaining(entry -> result.put(entry.getKey(), + new SdcSingleControllerConfiguration(entry.getValue(), entry.getKey()))); + } else { + throw new SdcParametersException( + CONTROLLER_SUBTREE_KEY + " key not found in the file: " + sdcControllerFile); + } + return result; + } +} diff --git a/src/test/java/org/onap/clamp/clds/it/config/SdcControllersConfigurationItCase.java b/src/test/java/org/onap/clamp/clds/it/config/SdcControllersConfigurationItCase.java new file mode 100644 index 000000000..4b632488a --- /dev/null +++ b/src/test/java/org/onap/clamp/clds/it/config/SdcControllersConfigurationItCase.java @@ -0,0 +1,86 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 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========================================================= + */ + +package org.onap.clamp.clds.it.config; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import java.io.IOException; +import java.util.Map; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.onap.clamp.clds.config.sdc.SdcControllersConfiguration; +import org.onap.clamp.clds.config.sdc.SdcSingleControllerConfiguration; +import org.onap.clamp.clds.exception.sdc.controller.SdcParametersException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.util.ReflectionTestUtils; + +/** + * This class tests the SDC Controller config. + */ +@RunWith(SpringRunner.class) +@SpringBootTest +public class SdcControllersConfigurationItCase { + + @Autowired + private SdcControllersConfiguration sdcControllersConfiguration; + + public final void loadFile(String fileName) throws IOException { + ReflectionTestUtils.setField(sdcControllersConfiguration, "sdcControllerFile", fileName); + sdcControllersConfiguration.loadConfiguration(); + } + + @Test + public void testGetAllDefinedControllers() throws IOException { + loadFile("classpath:/clds/sdc-controllers-config.json"); + Map mapResult = sdcControllersConfiguration + .getAllDefinedControllers(); + assertTrue(mapResult.size() == 2); + assertEquals("sdc-controller1", mapResult.get("sdc-controller1").getSdcControllerName()); + assertEquals("sdc-controller2", mapResult.get("sdc-controller2").getSdcControllerName()); + } + + @Test + public void testGetSdcSingleControllerConfiguration() throws IOException { + loadFile("classpath:/clds/sdc-controllers-config.json"); + assertEquals("sdc-controller1", sdcControllersConfiguration + .getSdcSingleControllerConfiguration("sdc-controller1").getSdcControllerName()); + assertEquals("sdc-controller2", sdcControllersConfiguration + .getSdcSingleControllerConfiguration("sdc-controller2").getSdcControllerName()); + } + + @Test(expected = IOException.class) + public void testBadJsonLoading() throws IOException { + loadFile("classpath:/clds/sdc-controllers-config-bad.json"); + fail("Should have raised an exception"); + } + + @Test(expected = SdcParametersException.class) + public void testMissingParamInJsonLoading() throws IOException { + loadFile("classpath:/clds/sdc-controllers-config-missing-param.json"); + sdcControllersConfiguration.getAllDefinedControllers(); + fail("Should have raised an exception"); + } +} diff --git a/src/test/resources/clds/sdc-controllers-config-bad.json b/src/test/resources/clds/sdc-controllers-config-bad.json new file mode 100644 index 000000000..0b417b745 --- /dev/null +++ b/src/test/resources/clds/sdc-controllers-config-bad.json @@ -0,0 +1,26 @@ +{ + "sdc-connections":{, + "sdc-controller1":{ + "user": "User1", + "consumerGroup": "consumerGroup1", + "consumerId": "consumerId1", + "environmentName": "environmentName1", + "sdcAddress": "hostname1", + "password": "bb3871669d893c7fb8aaacda31b77b4f537E67A081C2726889548ED7BC4C2DE6", + "pollingInterval":10, + "pollingTimeout":30 + + }, + "sdc-controller2":{ + "user": "User2", + "consumerGroup": "consumerGroup2", + "consumerId": "consumerId2", + "environmentName": "environmentName2", + "sdcAddress": "hostname2", + "password": "bb3871669d893c7fb8aaacda31b77b4f537E67A081C2726889548ED7BC4C2DE6", + "pollingInterval":10, + "pollingTimeout":30 + + } + } +} diff --git a/src/test/resources/clds/sdc-controllers-config-missing-param.json b/src/test/resources/clds/sdc-controllers-config-missing-param.json new file mode 100644 index 000000000..d99ed5801 --- /dev/null +++ b/src/test/resources/clds/sdc-controllers-config-missing-param.json @@ -0,0 +1,13 @@ +{ + "sdc-connections": { + "sdc-controller1": { + "user": "testuser", + "consumerGroup": "consumerGroup", + "consumerId": "consumerId", + "environmentName": "environmentName", + "sdcAddress": "hostname1", + "pollingInterval": 10, + "pollingTimeout": 30 + } + } +} diff --git a/src/test/resources/clds/sdc-controllers-config.json b/src/test/resources/clds/sdc-controllers-config.json new file mode 100644 index 000000000..df73a504f --- /dev/null +++ b/src/test/resources/clds/sdc-controllers-config.json @@ -0,0 +1,26 @@ +{ + "sdc-connections":{ + "sdc-controller1":{ + "user": "User1", + "consumerGroup": "consumerGroup1", + "consumerId": "consumerId1", + "environmentName": "environmentName1", + "sdcAddress": "hostname1", + "password": "bb3871669d893c7fb8aaacda31b77b4f537E67A081C2726889548ED7BC4C2DE6", + "pollingInterval":10, + "pollingTimeout":30 + + }, + "sdc-controller2":{ + "user": "User2", + "consumerGroup": "consumerGroup2", + "consumerId": "consumerId2", + "environmentName": "environmentName2", + "sdcAddress": "hostname2", + "password": "bb3871669d893c7fb8aaacda31b77b4f537E67A081C2726889548ED7BC4C2DE6", + "pollingInterval":10, + "pollingTimeout":30 + + } + } +} -- cgit 1.2.3-korg From 912e5e9201bf60169ad39686ba5bd9d9bc6e3579 Mon Sep 17 00:00:00 2001 From: "Determe, Sebastien (sd378r)" Date: Mon, 5 Mar 2018 13:38:34 +0100 Subject: Rework configuration Move the JSON content from the properties file to json files for all configuration defined in clds-reference.properties Issue-ID: CLAMP-136 Change-Id: Idfb21be729d7260518756e5f585371de78d18944 Signed-off-by: Determe, Sebastien (sd378r) --- .../clamp/clds/client/DcaeDispatcherServices.java | 2 +- .../clamp/clds/client/DcaeInventoryServices.java | 2 +- .../clamp/clds/config/CldsReferenceProperties.java | 74 ++- .../sdc/controller/DistributionStatusMessage.java | 70 +++ .../sdc/controller/SdcSingleControllerStatus.java | 28 + .../org/onap/clamp/clds/util/ResourceFileUtil.java | 2 +- src/main/resources/clds/clds-reference.properties | 26 +- .../clds/templates/dcae-decode-service_ids.json | 20 + .../clds/templates/dcae-deployment-template.json | 9 + .../resources/clds/templates/dcae-template.json | 26 + .../resources/clds/templates/op-eNodeB-recipe.json | 44 ++ .../clds/templates/sdc-decode-service_ids.json | 1 + .../resources/clds/templates/sdc-template.json | 1 + .../clds/templates/tca-policy-template.json | 19 + .../resources/clds/templates/tca-template.json | 14 + .../clds/templates/tca-thresholds-template.json | 9 + .../resources/clds/templates/ui-alarm-default.json | 597 +++++++++++++++++++++ .../clds/templates/ui-location-default.json | 5 + .../it/config/CldsReferencePropertiesItCase.java | 18 +- src/test/resources/clds/clds-reference.properties | 26 +- .../clds/templates/dcae-decode-service_ids.json | 20 + .../clds/templates/dcae-deployment-template.json | 9 + .../resources/clds/templates/dcae-template.json | 26 + .../resources/clds/templates/op-eNodeB-recipe.json | 44 ++ .../clds/templates/sdc-decode-service_ids.json | 1 + .../resources/clds/templates/sdc-template.json | 1 + .../clds/templates/tca-policy-template.json | 19 + .../resources/clds/templates/tca-template.json | 14 + .../clds/templates/tca-thresholds-template.json | 9 + .../resources/clds/templates/ui-alarm-default.json | 597 +++++++++++++++++++++ .../clds/templates/ui-location-default.json | 5 + 31 files changed, 1698 insertions(+), 40 deletions(-) create mode 100644 src/main/java/org/onap/clamp/clds/sdc/controller/DistributionStatusMessage.java create mode 100644 src/main/java/org/onap/clamp/clds/sdc/controller/SdcSingleControllerStatus.java create mode 100644 src/main/resources/clds/templates/dcae-decode-service_ids.json create mode 100644 src/main/resources/clds/templates/dcae-deployment-template.json create mode 100644 src/main/resources/clds/templates/dcae-template.json create mode 100644 src/main/resources/clds/templates/op-eNodeB-recipe.json create mode 100644 src/main/resources/clds/templates/sdc-decode-service_ids.json create mode 100644 src/main/resources/clds/templates/sdc-template.json create mode 100644 src/main/resources/clds/templates/tca-policy-template.json create mode 100644 src/main/resources/clds/templates/tca-template.json create mode 100644 src/main/resources/clds/templates/tca-thresholds-template.json create mode 100644 src/main/resources/clds/templates/ui-alarm-default.json create mode 100644 src/main/resources/clds/templates/ui-location-default.json create mode 100644 src/test/resources/clds/templates/dcae-decode-service_ids.json create mode 100644 src/test/resources/clds/templates/dcae-deployment-template.json create mode 100644 src/test/resources/clds/templates/dcae-template.json create mode 100644 src/test/resources/clds/templates/op-eNodeB-recipe.json create mode 100644 src/test/resources/clds/templates/sdc-decode-service_ids.json create mode 100644 src/test/resources/clds/templates/sdc-template.json create mode 100644 src/test/resources/clds/templates/tca-policy-template.json create mode 100644 src/test/resources/clds/templates/tca-template.json create mode 100644 src/test/resources/clds/templates/tca-thresholds-template.json create mode 100644 src/test/resources/clds/templates/ui-alarm-default.json create mode 100644 src/test/resources/clds/templates/ui-location-default.json (limited to 'src/test/resources/clds') diff --git a/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java b/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java index ab3a71159..f92405813 100644 --- a/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java +++ b/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java @@ -50,7 +50,7 @@ public class DcaeDispatcherServices { private CldsReferenceProperties refProp; private static final String STATUS_URL_LOG = "Status URL extracted: "; private static final String DCAE_URL_PREFIX = "/dcae-deployments/"; - private static final String DCAE_URL_PROPERTY_NAME = "DCAE_DISPATCHER_URL"; + private static final String DCAE_URL_PROPERTY_NAME = "dcae.dispatcher.url"; private static final String DCAE_REQUEST_FAILED_LOG = "RequestFailed - responseStr="; public static final String DCAE_REQUESTID_PROPERTY_NAME = "dcae.header.requestId"; private static final String DCAE_LINK_FIELD = "links"; diff --git a/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java b/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java index 1abd88985..4a2f32e6e 100644 --- a/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java +++ b/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java @@ -61,7 +61,7 @@ public class DcaeInventoryServices { protected static final EELFLogger logger = EELFManager.getInstance().getLogger(DcaeInventoryServices.class); protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger(); protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); - private static final String DCAE_INVENTORY_URL = "DCAE_INVENTORY_URL"; + private static final String DCAE_INVENTORY_URL = "dcae.inventory.url"; @Autowired private CldsReferenceProperties refProp; @Autowired diff --git a/src/main/java/org/onap/clamp/clds/config/CldsReferenceProperties.java b/src/main/java/org/onap/clamp/clds/config/CldsReferenceProperties.java index c0f7a7286..b234b9329 100644 --- a/src/main/java/org/onap/clamp/clds/config/CldsReferenceProperties.java +++ b/src/main/java/org/onap/clamp/clds/config/CldsReferenceProperties.java @@ -27,10 +27,13 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; +import java.net.URL; +import java.nio.charset.StandardCharsets; import java.util.Properties; import javax.annotation.PostConstruct; +import org.apache.commons.io.IOUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.ApplicationContext; @@ -65,10 +68,11 @@ public class CldsReferenceProperties { } /** - * get property value + * get property value. * * @param key - * @return + * The first key + * @return The string with the value */ public String getStringValue(String key) { return prop.getProperty(key); @@ -79,8 +83,10 @@ public class CldsReferenceProperties { * use key1. * * @param key1 + * The first key * @param key2 - * @return + * The second key after a dot + * @return The string with the value */ public String getStringValue(String key1, String key2) { String value = getStringValue(key1 + "." + key2); @@ -91,29 +97,77 @@ public class CldsReferenceProperties { } /** - * Return json as objects that can be updated + * Return json as objects that can be updated. The value obtained from the + * clds-reference file will be used as a filename. * * @param key - * @return + * The key that will be used to access the clds-reference file + * @return A jsonNode * @throws IOException + * In case of issues with the JSON parser */ public JsonNode getJsonTemplate(String key) throws IOException { ObjectMapper objectMapper = new ObjectMapper(); - return objectMapper.readValue(getStringValue(key), JsonNode.class); + String fileReference = getStringValue(key); + return (fileReference != null) ? objectMapper.readValue(getFileContentFromPath(fileReference), JsonNode.class) + : null; } /** * Return json as objects that can be updated. First try with combo key - * (key1 + "." + key2), otherwise default to just key1. + * (key1 + "." + key2), otherwise default to just key1. The value obtained + * from the clds-reference file will be used as a filename. * * @param key1 + * The first key * @param key2 - * @return + * The second key after a dot + * @return A JsonNode * @throws IOException + * In case of issues with the JSON parser */ public JsonNode getJsonTemplate(String key1, String key2) throws IOException { ObjectMapper objectMapper = new ObjectMapper(); - String result = getStringValue(key1, key2); - return (result != null) ? objectMapper.readValue(result, JsonNode.class) : null; + String fileReference = getStringValue(key1, key2); + return (fileReference != null) ? objectMapper.readValue(getFileContentFromPath(fileReference), JsonNode.class) + : null; + } + + /** + * Return the file content. The value obtained from the clds-reference file + * will be used as a filename. + * + * @param key + * The key that will be used to access the clds-reference file + * @return File content in String + * @throws IOException + * In case of issues with the JSON parser + */ + public String getFileContent(String key) throws IOException { + String fileReference = getStringValue(key); + return (fileReference != null) ? getFileContentFromPath(fileReference) : null; + } + + /** + * Return the file content. First try with combo key (key1 + "." + key2), + * otherwise default to just key1. The value obtained from the + * clds-reference file will be used as a filename. + * + * @param key1 + * The first key + * @param key2 + * The second key after a dot + * @return File content in String + * @throws IOException + * In case of issues with the JSON parser + */ + public String getFileContent(String key1, String key2) throws IOException { + String fileReference = getStringValue(key1, key2); + return (fileReference != null) ? getFileContentFromPath(fileReference) : null; + } + + private String getFileContentFromPath(String filepath) throws IOException { + URL url = appContext.getResource(filepath).getURL(); + return IOUtils.toString(url, StandardCharsets.UTF_8); } } diff --git a/src/main/java/org/onap/clamp/clds/sdc/controller/DistributionStatusMessage.java b/src/main/java/org/onap/clamp/clds/sdc/controller/DistributionStatusMessage.java new file mode 100644 index 000000000..db5d271b0 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/sdc/controller/DistributionStatusMessage.java @@ -0,0 +1,70 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2018 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.sdc.controller; + +import org.openecomp.sdc.api.consumer.IDistributionStatusMessage; +import org.openecomp.sdc.utils.DistributionStatusEnum; + +public class DistributionStatusMessage implements IDistributionStatusMessage { + + private String artifactURL; + private String consumerID; + private String distributionID; + private DistributionStatusEnum distributionStatus; + private long timestamp; + + public DistributionStatusMessage(final String artifactUrl, final String consumerId, final String distributionId, + final DistributionStatusEnum distributionStatusEnum, final long timestampL) { + artifactURL = artifactUrl; + consumerID = consumerId; + distributionID = distributionId; + distributionStatus = distributionStatusEnum; + timestamp = timestampL; + } + + @Override + public String getArtifactURL() { + return artifactURL; + } + + @Override + public String getConsumerID() { + return consumerID; + } + + @Override + public String getDistributionID() { + return distributionID; + } + + @Override + public DistributionStatusEnum getStatus() { + return distributionStatus; + } + + @Override + public long getTimestamp() { + return timestamp; + } +} diff --git a/src/main/java/org/onap/clamp/clds/sdc/controller/SdcSingleControllerStatus.java b/src/main/java/org/onap/clamp/clds/sdc/controller/SdcSingleControllerStatus.java new file mode 100644 index 000000000..8fbf41614 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/sdc/controller/SdcSingleControllerStatus.java @@ -0,0 +1,28 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2018 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.sdc.controller; + +public enum SdcSingleControllerStatus { + STOPPED, IDLE, BUSY +} diff --git a/src/main/java/org/onap/clamp/clds/util/ResourceFileUtil.java b/src/main/java/org/onap/clamp/clds/util/ResourceFileUtil.java index 57705d8fd..720576c47 100644 --- a/src/main/java/org/onap/clamp/clds/util/ResourceFileUtil.java +++ b/src/main/java/org/onap/clamp/clds/util/ResourceFileUtil.java @@ -28,7 +28,7 @@ import java.io.InputStream; import java.util.Scanner; /** - * Utility methods supporting transforms. + * Utility methods supporting resources accesses. */ public final class ResourceFileUtil { diff --git a/src/main/resources/clds/clds-reference.properties b/src/main/resources/clds/clds-reference.properties index 09cb5c9ea..3716a29dc 100644 --- a/src/main/resources/clds/clds-reference.properties +++ b/src/main/resources/clds/clds-reference.properties @@ -27,14 +27,14 @@ # # DCAE request build properties # -dcae.template={"properties":{"service_name":"","service_ids":[],"vnf_ids":[],"location_ids":[]},"template":{"tca":{"dcae":{"inputTopic":"","outputTopic":"","closedLoopControlName":"","closedLoopEventClient":"configuration.dcae.microservice.tca.xml","policyName":"","policyScope":"service=vSCP;resource=F5;type=configuration","policyVersion":"v0.0.1","serviceConfigurations":{}}}}} -dcae.decode.service_ids={"vUSP":["vUSP - vCTS"],"Trinity":["ASBGv TLS VNF","ASBGv No TLS","ASBGv (NO TLS) VNF","ASBGv TLS","NSBGv VNF","NSBGv"],"vSCP":["AKRON_vSCP_F5_FW-SVC/vSCP_F5_FW 1","ALLEN_vSCP_F5_FW-SVC/vSCP_F5_FW 1"],"vProbes":["vProbes - FW"]} -dcae.deployment.template={"serviceTypeId": "???", "inputs": {"aaiEnrichmentHost": "10.0.1.1", "enableAAIEnrichment": "true", "subscriberHostName" : "10.0.11.1", "publisherHostName" : "10.0.11.1"}} +dcae.template=classpath:/clds/templates/dcae-template.json +dcae.decode.service_ids=classpath:/clds/templates/dcae-decode-service_ids.json +dcae.deployment.template=classpath:/clds/templates/dcae-deployment-template.json # # SDC request blueprint properties # -sdc.template={} -sdc.decode.service_ids={} +sdc.template=classpath:/clds/templates/sdc-template.json +sdc.decode.service_ids=classpath:/clds/templates/sdc-decode-service_ids.json # # # General Policy request properties @@ -49,9 +49,9 @@ policy.op.policyNamePrefix=Config_BRMS_Param_ # TCA MicroService Policy request build properties # tca.policyid.prefix=DCAE.Config_ -tca.policy.template={"service": "tca_policy", "version": "1.0.0", "location": "SampleServiceLocation", "configName": "SampleConfigName", "uuid": "test", "policyScope": "resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", "templateVersion": "OpenSource.version.1", "policyName": "MicroServicevCPE", "description": "MicroService Policy", "priority": "1", "riskType": "SampleRiskType", "riskLevel": "1", "guard": "False","content":{"tca_policy": {}}} -tca.template= {"domain": "measurementsForVfScaling", "metricsPerEventName": [{"eventName": "???", "controlLoopSchemaType":"VNF","policyScope": "DCAE","policyName": "???","policyVersion": "v0.0.1","thresholds": []}]} -tca.thresholds.template={"closedLoopControlName": "???", "version": "1.0.2","fieldPath": "?????", "thresholdValue": 0,"direction": "???","severity": "MAJOR", "closedLoopEventStatus": "???"} +tca.policy.template=classpath:/clds/templates/tca-policy-template.json +tca.template=classpath:/clds/templates/tca-template.json +tca.thresholds.template=classpath:/clds/templates/tca-thresholds-template.json # # @@ -71,7 +71,7 @@ op.eNodeB.templateName=ClosedLoopControlName op.eNodeB.operationTopic=com.onap.sdnr.RanCLRequest-v00 op.eNodeB.notificationTopic=com.onap-policy.IST-ENODEB-CL op.eNodeB.controller=amsterdam -op.eNodeB.recipe={"eNodeBRecipes":[{"Actor":"AOTS","Recipe":"checkENodeBTicketHours","ParentPolicy":"","PPConditions":"","Retry":"0","TimeLimit":"120"},{"Actor":"AOTS","Recipe":"checkEquipmentStatus","ParentPolicy":"checkENodeBTicketHours","PPConditions":"Success","Retry":"0","TimeLimit":"120"},{"Actor":"AOTS","Recipe":"checkEimStatus","ParentPolicy":"checkEquipmentStatus","PPConditions":"Success","Retry":"0","TimeLimit":"120"},{"Actor":"AOTS","Recipe":"checkMaintenanceWindow","ParentPolicy":"checkEimStatus","PPConditions":"Success","Retry":"0","TimeLimit":"120"},{"Actor":"SDNR","Recipe":"Reset","ParentPolicy":"checkMaintenanceWindow","PPConditions":"Success","Retry":"","TimeLimit":""}]} +op.eNodeB.recipe=classpath:/clds/templates/op-eNodeB-recipe.json op.eNodeB.timeWindow=35 op.eNodeB.limit=2 op.eNodeB.period=10s @@ -91,8 +91,8 @@ sdc.InstanceID=X-ECOMP-InstanceID sdc.header.requestId = X-ECOMP-RequestID # # -ui.location.default={"DC1":"Data Center 1","DC2":"Data Center 2","DC3":"Data Center 3"} -ui.alarm.default={"Reports a transient alarm condition when an incoming CDR cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming CDR cannot be decoded successfully","Reports a transient alarm condition when an incoming ACR message cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming ACR message cannot be decoded successfully","Reports a transient alarm condition when a CDR validation fails":"vCCF: Reports a transient alarm condition when a CDR validation fails","Reports a transient alarm condition when an incoming GTP' message cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming GTP' message cannot be decoded successfully","Reports a transient alarm condition when an incoming CDR file cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming CDR file cannot be decoded successfully","Reports a transient alarm condition when an incoming Sh/Dh file cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming Sh/Dh file cannot be decoded successfully","Reports a transient alarm condition when an incoming ACR message is in conflict with former ACR in one diameter session":"vCCF: Reports a transient alarm condition when an incoming ACR message is in conflict with former ACR in one diameter session","Reports a transient alarm condition when an outgoing Ro message send fails":"vCCF: Reports a transient alarm condition when an outgoing Ro message send fails","Reports a transient alarm condition when an outgoing GTP' message send fails":"vCCF: Reports a transient alarm condition when an outgoing GTP' message send fails","Reports a transient alarm condition when an outgoing Sh/Dh message send fails":"vCCF: Reports a transient alarm condition when an outgoing Sh/Dh message send fails","Reports an alarm when build or send Rf message fail":"vCCF: Reports an alarm when build or send Rf message fail","Reports a transient alarm condition when an abnormal incoming CCA message":"vCCF: Reports a transient alarm condition when an abnormal incoming CCA message","Reports a transient alarm condition when there is an abnormal incoming Sh/Dh message":"vCCF: Reports a transient alarm condition when there is an abnormal incoming Sh/Dh message","For Rf interface, if IeCCF receives a message with incorrect value for session id.":"vCCF: For Rf interface, if IeCCF receives a message with incorrect value for session id.","Reports an alarm when CPU usage exceeds the major threshold, the local database exceeds the critical threshold, or the ACR partition exceeds the major threshold":"vCCF: Reports an alarm when CPU usage exceeds the major threshold, the local database exceeds the critical threshold, or the ACR partition exceeds the major threshold","Reports an alarm when CPU usage exceeds the minor threshold, the local database exceeds the major threshold, or the ACR partition exceeds the minor threshold":"vCCF: Reports an alarm when CPU usage exceeds the minor threshold, the local database exceeds the major threshold, or the ACR partition exceeds the minor threshold","Reports an alarm when CPU usage exceeds the critical threshold, the local database exceeds the major threshold, or the CDR partition exceeds the critical threshold":"vCCF: Reports an alarm when CPU usage exceeds the critical threshold, the local database exceeds the major threshold, or the CDR partition exceeds the critical threshold","Reports an alarm when CPU usage exceeds the major threshold or CDR partition exceeds the major threshold":"vCCF: Reports an alarm when CPU usage exceeds the major threshold or CDR partition exceeds the major threshold","Reports an alarm when external DB usage exceeds the major threshold":"vCCF: Reports an alarm when external DB usage exceeds the major threshold","If IeCCF comes to the status \\"Stop processing ACR records in ACRDB\\".":"vCCF: If IeCCF comes to the status \\"Stop processing ACR records in ACRDB\\".","If IeCCF comes to the status \\"Flush ACR is invoked\\".":"vCCF: If IeCCF comes to the status \\"Flush ACR is invoked\\".","Reports a transient alarm condition when the workflow definition table is provisioned wrongly":"vCCF: Reports a transient alarm condition when the workflow definition table is provisioned wrongly","Reports a transient alarm condition when the Action Definition table is provisioned wrongly":"vCCF: Reports a transient alarm condition when the Action Definition table is provisioned wrongly","Reports a transient alarm condition when the Ro Host Configuration is provisioned wrongly":"vCCF: Reports a transient alarm condition when the Ro Host Configuration is provisioned wrongly","Reports a transient alarm condition when the Sh Host Configuration is provisioned wrongly":"vCCF: Reports a transient alarm condition when the Sh Host Configuration is provisioned wrongly","Reports a transient alarm condition when a specific dictionary or rule does not exist":"vCCF: Reports a transient alarm condition when a specific dictionary or rule does not exist","Reports a transient alarm condition when failure occurs when mapping Rf message to XDR":"vCCF: Reports a transient alarm condition when failure occurs when mapping Rf message to XDR","Reports a transient alarm condition when failure occurs in aggregating process":"vCCF: Reports a transient alarm condition when failure occurs in aggregating process","Reports a transient alarm condition when failure happens in correlating process":"vCCF: Reports a transient alarm condition when failure happens in correlating process","Reports a transient alarm condition when failure occurs in generating CDR":"vCCF: Reports a transient alarm condition when failure occurs in generating CDR","Reports a transient alarm condition when failure occurs in constructing CCR message from XDR":"vCCF: Reports a transient alarm condition when failure occurs in constructing CCR message from XDR","Reports a transient alarm condition when an ACR/XER/BER/INC record write to bad file":"vCCF: Reports a transient alarm condition when an ACR/XER/BER/INC record write to bad file","Reports an alarm condition when aggregation or correlation central database connection is lost":"vCCF: Reports an alarm condition when aggregation or correlation central database connection is lost","Reports an alarm condition when a specific failure happens in database operations":"vCCF: Reports an alarm condition when a specific failure happens in database operations","Reports an alarm condition when DB capacity has been consumed to critical threshold":"vCCF: Reports an alarm condition when DB capacity has been consumed to critical threshold","Reports an alarm condition when DB capacity has been consumed to major threshold":"vCCF: Reports an alarm condition when DB capacity has been consumed to major threshold","Reports an alarm condition when DB capacity has been consumed to minor threshold.":"vCCF: Reports an alarm condition when DB capacity has been consumed to minor threshold.","Reports an alarm condition when application cannot deliver CDR to CDRSCH subsystem":"vCCF: Reports an alarm condition when application cannot deliver CDR to CDRSCH subsystem","Reports an alarm condition when some fields of ACR file header have error value and this ACR file cannot be processed further":"vCCF: Reports an alarm condition when some fields of ACR file header have error value and this ACR file cannot be processed further","Reports an alarm condition when some fields of ACR file header have invalid value and this ACR file can be processed further":"vCCF: Reports an alarm condition when some fields of ACR file header have invalid value and this ACR file can be processed further","Reports an alarm condition when the ACR file loses some ACR records":"vCCF: Reports an alarm condition when the ACR file loses some ACR records","Reports an alarm condition when some fields of ACR record header have error value and this ACR record and the following ACR records cannot be processed further":"vCCF: Reports an alarm condition when some fields of ACR record header have error value and this ACR record and the following ACR records cannot be processed further","Reports an alarm condition when error occurs in processing CDR/ACR files":"vCCF: Reports an alarm condition when error occurs in processing CDR/ACR files","Reports an alarm condition when CDR partition has been consumed to critical threshold":"vCCF: Reports an alarm condition when CDR partition has been consumed to critical threshold","Reports an alarm condition when CDR partition has been consumed to major threshold.":"vCCF: Reports an alarm condition when CDR partition has been consumed to major threshold.","Reports an alarm condition when CDR partition has been consumed to minor threshold":"vCCF: Reports an alarm condition when CDR partition has been consumed to minor threshold","Reports an alarm condition when ACR partition has been consumed to critical threshold":"vCCF: Reports an alarm condition when ACR partition has been consumed to critical threshold","Reports an alarm condition when ACR partition has been consumed to major threshold":"vCCF: Reports an alarm condition when ACR partition has been consumed to major threshold","Reports an alarm condition when ACR partition has been consumed to minor threshold":"vCCF: Reports an alarm condition when ACR partition has been consumed to minor threshold","Reports an alarm condition when CPU consumption reaches critical threshold":"vCCF: Reports an alarm condition when CPU consumption reaches critical threshold","Reports an alarm condition when CPU consumption reaches major threshold":"vCCF: Reports an alarm condition when CPU consumption reaches major threshold","Reports an alarm condition when CPU consumption reaches minor threshold":"vCCF: Reports an alarm condition when CPU consumption reaches minor threshold","Service shall monitor * number of partial CDR * number of incompleted CDR * number of unacceptable CDR If any one exceeds a configurable threshold in a configrable interval.":"vCCF: Service shall monitor * number of partial CDR * number of incompleted CDR * number of unacceptable CDR If any one exceeds a configurable threshold in a configrable interval.","CDR size exceed the platform capacity.":"vCCF: CDR size exceed the platform capacity.","Service shall monitor number of ACR without AII AVP, If it exceeds a configurable threshold in a configurable interval.":"vCCF: Service shall monitor number of ACR without AII AVP, If it exceeds a configurable threshold in a configurable interval.","Service shall monitor CDR cut due to ECCF_ACRNUMBER_IN_DB, If it exceeds a configurable threshold in a configurable interval.":"vCCF: Service shall monitor CDR cut due to ECCF_ACRNUMBER_IN_DB, If it exceeds a configurable threshold in a configurable interval.","External Node of this Cluster is overload":"vCCF: External Node of this Cluster is overload","bdb_high_latency":"vCCF-vDB: bdb_high_latency","bdb_high_throughput":"vCCF-vDB: bdb_high_throughput","bdb_size":"vCCF-vDB: bdb_size","cluster_inconsistent_rl_sw":"vCCF-vDB: cluster_inconsistent_rl_sw","cluster_node_remove_abort_failed":"vCCF-vDB: cluster_node_remove_abort_failed","cluster_node_remove_failed":"vCCF-vDB: cluster_node_remove_failed","cluster_ram_overcommit":"vCCF-vDB: cluster_ram_overcommit","cluster_rebalance_failed":"vCCF-vDB: cluster_rebalance_failed","cluster_too_few_nodes_for_replication":"vCCF-vDB: cluster_too_few_nodes_for_replication","node_cpu_utilization":"vCCF-vDB: node_cpu_utilization","node_ephemeral_storage":"vCCF-vDB: node_ephemeral_storage","node_failed":"vCCF-vDB: node_failed","node_memory":"vCCF-vDB: node_memory","node_net_throughput":"vCCF-vDB: node_net_throughput","node_offline_failed":"vCCF-vDB: node_offline_failed","node_offline_abort_failed":"vCCF-vDB: node_offline_abort_failed","node_online_failed":"vCCF-vDB: node_online_failed","OAM NODE- IS NOT ACTIVE ":"vCCF-vDB: OAM NODE- IS NOT ACTIVE ","LSS_asdaCommunicationFailure":"vCTS: LSS_asdaCommunicationFailure","LSS_ccdbCommunicationFailure":"vCTS: LSS_ccdbCommunicationFailure","LSS_cpiCTS3xxFailRate":"vCTS: LSS_cpiCTS3xxFailRate","LSS_cpiCTS4xxFailRate":"vCTS: LSS_cpiCTS4xxFailRate","LSS_cpiCTS5xxFailRate":"vCTS: LSS_cpiCTS5xxFailRate","LSS_cpiCTS6xxFailRate":"vCTS: LSS_cpiCTS6xxFailRate","LSS_cpiCTSSIPRetransmitInvite":"vCTS: LSS_cpiCTSSIPRetransmitInvite","LSS_cpiCTSSIPRetransmitNonInvite":"vCTS: LSS_cpiCTSSIPRetransmitNonInvite","LSS_glsInvalidCellId":"vCTS: LSS_glsInvalidCellId","LSS_glsServerUnavailable":"vCTS: LSS_glsServerUnavailable","LSS_hlrSyncConnection":"vCTS: LSS_hlrSyncConnection","LSS_hlrSyncQueue":"vCTS: LSS_hlrSyncQueue","LSS_lispBufferFullExternalLIG":"vCTS: LSS_lispBufferFullExternalLIG","LSS_prdbConnectWithAlternateFailure":"vCTS: LSS_prdbConnectWithAlternateFailure","LSS_prdbSyncDataToAlternateFailure":"vCTS: LSS_prdbSyncDataToAlternateFailure","LSS_preAllocatedResourceOverload":"vCTS: LSS_preAllocatedResourceOverload","LSS_prifSocketError":"vCTS: LSS_prifSocketError","LSS_prsCallInstanceExceeded":"vCTS: LSS_prsCallInstanceExceeded","LSS_prsCpuOverload":"vCTS: LSS_prsCpuOverload","LSS_prsDatabaseMigrationFailure":"vCTS: LSS_prsDatabaseMigrationFailure","LSS_prsFailureToConnectWithPRDB":"vCTS: LSS_prsFailureToConnectWithPRDB","LSS_prsQueueExceeded":"vCTS: LSS_prsQueueExceeded","LSS_smdiSocketError":"vCTS: LSS_smdiSocketError","LSS_socketError":"vCTS: LSS_socketError","LSS_softwareComponentDown":"vCTS: LSS_softwareComponentDown","LSS_tlsInitError":"vCTS: LSS_tlsInitError","LSS_usageOfSyncTable":"vCTS: LSS_usageOfSyncTable","LSS_utHttpProxyConnectionDown ":"vCTS: LSS_utHttpProxyConnectionDown ","LSS_wpifSocketError":"vCTS: LSS_wpifSocketError","LSS_acrTemporaryBufferOverload":"vCTS: LSS_acrTemporaryBufferOverload","LSS_adnsExtendedTTLcaching":"vCTS: LSS_adnsExtendedTTLcaching","LSS_adnsQueryFailureCaching":"vCTS: LSS_adnsQueryFailureCaching","LSS_adnsQueueCongestion":"vCTS: LSS_adnsQueueCongestion","LSS_asdaRequestQueue":"vCTS: LSS_asdaRequestQueue","LSS_capacityLicenseKeyExpiration":"vCTS: LSS_capacityLicenseKeyExpiration","LSS_capacityLicenseKeyNearExpiration":"vCTS: LSS_capacityLicenseKeyNearExpiration","LSS_capacityLicenseKeyValidationError":"vCTS: LSS_capacityLicenseKeyValidationError","LSS_cardConnectionLost":"vCTS: LSS_cardConnectionLost","LSS_cpiAlrmCritical":"vCTS: LSS_cpiAlrmCritical","LSS_cpiAlrmMajor":"vCTS: LSS_cpiAlrmMajor","LSS_cpiAlrmMinor":"vCTS: LSS_cpiAlrmMinor","LSS_cpiAlrmWarning":"vCTS: LSS_cpiAlrmWarning","LSS_cpiAsrtEsc":"vCTS: LSS_cpiAsrtEsc","LSS_cpiAsrtNonEsc":"vCTS: LSS_cpiAsrtNonEsc","LSS_cpiAsrtNonEscCritical":"vCTS: LSS_cpiAsrtNonEscCritical","LSS_cpiAsrtNonEscMajor":"vCTS: LSS_cpiAsrtNonEscMajor","LSS_cpiAsrtNonEscMinor":"vCTS: LSS_cpiAsrtNonEscMinor","LSS_cpiAudErrCount":"vCTS: LSS_cpiAudErrCount","LSS_cpiAudManAct":"vCTS: LSS_cpiAudManAct","LSS_cpiAudNewEvent":"vCTS: LSS_cpiAudNewEvent","LSS_cpiCompleteRateAlarm":"vCTS: LSS_cpiCompleteRateAlarm","LSS_cpiDropMGAllocConnReq":"vCTS: LSS_cpiDropMGAllocConnReq","LSS_cpiDropRateAlarm":"vCTS: LSS_cpiDropRateAlarm","LSS_cpiExceptionService":"vCTS: LSS_cpiExceptionService","LSS_cpiFailRateAlarm":"vCTS: LSS_cpiFailRateAlarm","LSS_cpiFailSCTPFastRetransIncr":"vCTS: LSS_cpiFailSCTPFastRetransIncr","LSS_cpiFailSCTPFastRetransRate":"vCTS: LSS_cpiFailSCTPFastRetransRate","LSS_cpiFailSCTPSRTT1Incr":"vCTS: LSS_cpiFailSCTPSRTT1Incr","LSS_cpiFailSCTPSRTT2Incr":"vCTS: LSS_cpiFailSCTPSRTT2Incr","LSS_cpiFailSCTPT3RetransIncr":"vCTS: LSS_cpiFailSCTPT3RetransIncr","LSS_cpiFailSCTPT3RetransRate":"vCTS: LSS_cpiFailSCTPT3RetransRate","LSS_cpiFileSysUsage":"vCTS: LSS_cpiFileSysUsage","LSS_cpiMemAllocFail":"vCTS: LSS_cpiMemAllocFail","LSS_cpiNumOfLICDRDel":"vCTS: LSS_cpiNumOfLICDRDel","LSS_cpiReinitServiceSelf":"vCTS: LSS_cpiReinitServiceSelf","LSS_cpiSIPRetransmitInvite":"vCTS: LSS_cpiSIPRetransmitInvite","LSS_cpiSIPRetransmitNonInvite":"vCTS: LSS_cpiSIPRetransmitNonInvite","LSS_cpiSS7DropSCTPPktsRcvd":"vCTS: LSS_cpiSS7DropSCTPPktsRcvd","LSS_cpiSS7FailSCTPFastRetransRate":"vCTS: LSS_cpiSS7FailSCTPFastRetransRate","LSS_cpiStabilityAlarm":"vCTS: LSS_cpiStabilityAlarm","LSS_cpuOverload":"vCTS: LSS_cpuOverload","LSS_databaseConnectionLost":"vCTS: LSS_databaseConnectionLost","LSS_databaseReplicationLinkDown":"vCTS: LSS_databaseReplicationLinkDown","LSS_databaseSizeExhausted":"vCTS: LSS_databaseSizeExhausted","LSS_dbHighCpuUtilization":"vCTS: LSS_dbHighCpuUtilization","LSS_dbOffline":"vCTS: LSS_dbOffline","LSS_dbStatusUnexpected":"vCTS: LSS_dbStatusUnexpected","LSS_degradedResource":"vCTS: LSS_degradedResource","LSS_degrow":"vCTS: LSS_degrow","LSS_deviceServerCxnLost":"vCTS: LSS_deviceServerCxnLost","LSS_diamLinkDown":"vCTS: LSS_diamLinkDown","LSS_diamMaxClientsExceeded":"vCTS: LSS_diamMaxClientsExceeded","LSS_dnsThreshold":"vCTS: LSS_dnsThreshold","LSS_ethernetError":"vCTS: LSS_ethernetError","LSS_ethernetLinkDown":"vCTS: LSS_ethernetLinkDown","LSS_externalConnectivity":"vCTS: LSS_externalConnectivity","LSS_featureLicenseExpiration":"vCTS: LSS_featureLicenseExpiration","LSS_featureLicenseKeyNearExpiration":"vCTS: LSS_featureLicenseKeyNearExpiration","LSS_featureLockValidationError":"vCTS: LSS_featureLockValidationError","LSS_fqdnError":"vCTS: LSS_fqdnError","LSS_fru":"vCTS: LSS_fru","LSS_gatewayCongestion":"vCTS: LSS_gatewayCongestion","LSS_gatewayForcedOOS":"vCTS: LSS_gatewayForcedOOS","LSS_gatewayProvisioningError":"vCTS: LSS_gatewayProvisioningError","LSS_gatewayUnreachable":"vCTS: LSS_gatewayUnreachable","LSS_gatewayUnregistered":"vCTS: LSS_gatewayUnregistered","LSS_globalParameterNotFound":"vCTS: LSS_globalParameterNotFound","LSS_grow":"vCTS: LSS_grow","LSS_h248MessageBufferDepletion":"vCTS: LSS_h248MessageBufferDepletion","LSS_hostDown":"vCTS: LSS_hostDown","LSS_hostReset":"vCTS: LSS_hostReset","LSS_invalidGateway":"vCTS: LSS_invalidGateway","LSS_iriLinkDown":"vCTS: LSS_iriLinkDown","LSS_ldapServerConnectionLost":"vCTS: LSS_ldapServerConnectionLost","LSS_llcDown":"vCTS: LSS_llcDown","LSS_logicalLinkDown":"vCTS: LSS_logicalLinkDown","LSS_logicalLinkNotFound":"vCTS: LSS_logicalLinkNotFound","LSS_logRotateThreshold":"vCTS: LSS_logRotateThreshold","LSS_memoryOverload":"vCTS: LSS_memoryOverload","LSS_nodeConfigFailure":"vCTS: LSS_nodeConfigFailure","LSS_nodeGroupOOS":"vCTS: LSS_nodeGroupOOS","LSS_nodeOOS":"vCTS: LSS_nodeOOS","LSS_nonCompliantFaultGroupMemberState":"vCTS: LSS_nonCompliantFaultGroupMemberState","LSS_nonCsAddrChannelDepletion":"vCTS: LSS_nonCsAddrChannelDepletion","LSS_numberOfTuplesInUse":"vCTS: LSS_numberOfTuplesInUse","LSS_osSecInfoModificationDetected":"vCTS: LSS_osSecInfoModificationDetected","LSS_osSecInformationMissing":"vCTS: LSS_osSecInformationMissing","LSS_osSecUnexpectedInformation":"vCTS: LSS_osSecUnexpectedInformation","LSS_pdnsMySqlReplication":"vCTS: LSS_pdnsMySqlReplication","LSS_pktCorruptionDetectedViaRCCLANCheck":"vCTS: LSS_pktCorruptionDetectedViaRCCLANCheck","LSS_platformCommandFailure":"vCTS: LSS_platformCommandFailure","LSS_pmDataNotCollected":"vCTS: LSS_pmDataNotCollected","LSS_processDown":"vCTS: LSS_processDown","LSS_processNotStarted":"vCTS: LSS_processNotStarted","LSS_provisioningInhibitedMode":"vCTS: LSS_provisioningInhibitedMode","LSS_rccInhibitedMode":"vCTS: LSS_rccInhibitedMode","LSS_remotedbLinkDown":"vCTS: LSS_remotedbLinkDown","LSS_remoteQueryServerFailure":"vCTS: LSS_remoteQueryServerFailure","LSS_restore":"vCTS: LSS_restore","LSS_serviceCFGDataTimestampError":"vCTS: LSS_serviceCFGDataTimestampError","LSS_serviceCommCxnLost":"vCTS: LSS_serviceCommCxnLost","LSS_serviceOnewayCommunication":"vCTS: LSS_serviceOnewayCommunication","LSS_sheddingOverload":"vCTS: LSS_sheddingOverload","LSS_simxml":"vCTS: LSS_simxml","LSS_sipLinkSetMaxQuarantineList":"vCTS: LSS_sipLinkSetMaxQuarantineList","LSS_sipLinkSetUnavailable":"vCTS: LSS_sipLinkSetUnavailable","LSS_sipLinkUnavailable":"vCTS: LSS_sipLinkUnavailable","LSS_softwareAllocatedResourceOverload":"vCTS: LSS_softwareAllocatedResourceOverload","LSS_softwareComponentStandbyNotReady":"vCTS: LSS_softwareComponentStandbyNotReady","LSS_softwareLicense":"vCTS: LSS_softwareLicense","LSS_svcdegrow":"vCTS: LSS_svcdegrow","LSS_svcgrow":"vCTS: LSS_svcgrow","LSS_swVersionMismatch":"vCTS: LSS_swVersionMismatch","LSS_tftpDownloadCorrupt":"vCTS: LSS_tftpDownloadCorrupt","LSS_timeStampValueOutOfSystemRange":"vCTS: LSS_timeStampValueOutOfSystemRange","LSS_transactionHandlerBlockDepletion":"vCTS: LSS_transactionHandlerBlockDepletion","LSS_upgrade":"vCTS: LSS_upgrade","SYS_BackupFailure":"vCTS: SYS_BackupFailure","SYS_Configuration":"vCTS: SYS_Configuration","SYS_COTRecordTransferFailure":"vCTS: SYS_COTRecordTransferFailure","SYS_CPM_USERDATA_INCONSITENCY":"vCTS: SYS_CPM_USERDATA_INCONSITENCY","SYS_CPM_USERDATA_RESTORED":"vCTS: SYS_CPM_USERDATA_RESTORED","SYS_EventQueueCapacity":"vCTS: SYS_EventQueueCapacity","SYS_ICMPFailure":"vCTS: SYS_ICMPFailure","SYS_IPsecConfig":"vCTS: SYS_IPsecConfig","SYS_LinkDown":"vCTS: SYS_LinkDown","SYS_NotifyDisabled":"vCTS: SYS_NotifyDisabled","SYS_NotifyLocked":"vCTS: SYS_NotifyLocked","SYS_NumTL1MeasThresh":"vCTS: SYS_NumTL1MeasThresh","SYS_RADIUS_TO_LDAP_FAILURE":"vCTS: SYS_RADIUS_TO_LDAP_FAILURE","SYS_ROOT_ACCESS_DENIED":"vCTS: SYS_ROOT_ACCESS_DENIED","SYS_ROOT_FTP_VIOLATION":"vCTS: SYS_ROOT_FTP_VIOLATION","SYS_ROOT_LOGIN_VIOLATION":"vCTS: SYS_ROOT_LOGIN_VIOLATION","SYS_ROOT_SSH_LOGIN_VIOLATION":"vCTS: SYS_ROOT_SSH_LOGIN_VIOLATION","SYS_SetupAAAFailure":"vCTS: SYS_SetupAAAFailure","SYS_SNETrapOverload":"vCTS: SYS_SNETrapOverload","SYS_SNMPAuthenticationFailure":"vCTS: SYS_SNMPAuthenticationFailure","SYS_SNMPFailure":"vCTS: SYS_SNMPFailure","SYS_SU_TO_ROOT_FAILURE":"vCTS: SYS_SU_TO_ROOT_FAILURE","SYS_SYSTEMTrapOverload":"vCTS: SYS_SYSTEMTrapOverload","SYS_ThresholdCrossed":"vCTS: SYS_ThresholdCrossed","SYS_UndiscoveredObject":"vCTS: SYS_UndiscoveredObject","SYS_WriteAAAFailure":"vCTS: SYS_WriteAAAFailure","jnxSpaceDiskUsageRising":"vDBE-EMS-Juniper: jnxSpaceDiskUsageRising","jnxSpaceDiskUsageRisingCleared":"vDBE-EMS-Juniper: jnxSpaceDiskUsageRisingCleared","jnxSpaceSwapUsageRising":"vDBE-EMS-Juniper: jnxSpaceSwapUsageRising","jnxSpaceSwapUsageRisingCleared":"vDBE-EMS-Juniper: jnxSpaceSwapUsageRisingCleared","jnxSpaceCPULARising":"vDBE-EMS-Juniper: jnxSpaceCPULARising","jnxSpaceCPULARisingCleared":"vDBE-EMS-Juniper: jnxSpaceCPULARisingCleared","jnxSpaceWebpProxyProcessDown":"vDBE-EMS-Juniper: jnxSpaceWebpProxyProcessDown","jnxSpaceWebpProxyProcessUp":"vDBE-EMS-Juniper: jnxSpaceWebpProxyProcessUp","jnxSpaceNMAProcessDown":"vDBE-EMS-Juniper: jnxSpaceNMAProcessDown","jnxSpaceNMAProcessUp":"vDBE-EMS-Juniper: jnxSpaceNMAProcessUp","jnxSpaceJbossProcessDown":"vDBE-EMS-Juniper: jnxSpaceJbossProcessDown","jnxSpaceJbossProcessUp":"vDBE-EMS-Juniper: jnxSpaceJbossProcessUp","jnxSpaceMysqlProcessDown":"vDBE-EMS-Juniper: jnxSpaceMysqlProcessDown","jnxSpaceMysqlProcessUp":"vDBE-EMS-Juniper: jnxSpaceMysqlProcessUp","jnxSpacePostgresqlProcessDown":"vDBE-EMS-Juniper: jnxSpacePostgresqlProcessDown","jnxSpacePostgresqlProcessUp":"vDBE-EMS-Juniper: jnxSpacePostgresqlProcessUp","jnxSpaceWatchdogStopped":"vDBE-EMS-Juniper: jnxSpaceWatchdogStopped","jnxSpaceWatchdogStarted":"vDBE-EMS-Juniper: jnxSpaceWatchdogStarted","jnxSpaceSNAProcessDown":"vDBE-EMS-Juniper: jnxSpaceSNAProcessDown","jnxSpaceSNAProcessUp":"vDBE-EMS-Juniper: jnxSpaceSNAProcessUp","jnxSpaceNodeDown":"vDBE-EMS-Juniper: jnxSpaceNodeDown","jnxSpaceNodeUp":"vDBE-EMS-Juniper: jnxSpaceNodeUp"," jnxSpaceNodeRemoval":"vDBE-EMS-Juniper: jnxSpaceNodeRemoval","jnxCmCfgChange":"vDBE-Juniper: jnxCmCfgChange","jnxCmRescueChange":"vDBE-Juniper: jnxCmRescueChange","jnxEventTrap":"vDBE-Juniper: jnxEventTrap","jnxJsFwAuthFailure":"vDBE-Juniper: jnxJsFwAuthFailure","jnxJsFwAuthServiceUp":"vDBE-Juniper: jnxJsFwAuthServiceUp","jnxJsFwAuthServiceDown":"vDBE-Juniper: jnxJsFwAuthServiceDown","jnxJsFwAuthCapacityExceeded":"vDBE-Juniper: jnxJsFwAuthCapacityExceeded","jnxJsIdpSignatureUpdate":"vDBE-Juniper: jnxJsIdpSignatureUpdate","jnxJsIdpAttackLog":"vDBE-Juniper: jnxJsIdpAttackLog","jnxJsSrcNatPoolThresholdStatus":"vDBE-Juniper: jnxJsSrcNatPoolThresholdStatus","jnxJsNatRuleThresholdStatus":"vDBE-Juniper: jnxJsNatRuleThresholdStatus","jnxJsScreenAttack":"vDBE-Juniper: jnxJsScreenAttack","jnxJsScreenCfgChange":"vDBE-Juniper: jnxJsScreenCfgChange","jnxJsAvPatternUpdateTrap":"vDBE-Juniper: jnxJsAvPatternUpdateTrap","jnxJsChassisClusterSwitchover":"vDBE-Juniper: jnxJsChassisClusterSwitchover","jnxJsChClusterIntfTrap":"vDBE-Juniper: jnxJsChClusterIntfTrap","jnxJsChClusterSpuMismatchTrap":"vDBE-Juniper: jnxJsChClusterSpuMismatchTrap","jnxJsChClusterWeightTrap":"vDBE-Juniper: jnxJsChClusterWeightTrap","jnxLicenseGraceExpired":"vDBE-Juniper: jnxLicenseGraceExpired","jnxLicenseGraceAboutToExpire":"vDBE-Juniper: jnxLicenseGraceAboutToExpire","jnxLicenseAboutToExpire":"vDBE-Juniper: jnxLicenseAboutToExpire","jnxLicenseInfringeCumulative":"vDBE-Juniper: jnxLicenseInfringeCumulative","jnxLicenseInfringeSingle":"vDBE-Juniper: jnxLicenseInfringeSingle","jnxNatAddrPoolThresholdStatus":"vDBE-Juniper: jnxNatAddrPoolThresholdStatus","jnxSyslogTrap":"vDBE-Juniper: jnxSyslogTrap","jnxAccessAuthServiceUp":"vDBE-Juniper: jnxAccessAuthServiceUp","jnxAccessAuthServiceDown":"vDBE-Juniper: jnxAccessAuthServiceDown","jnxAccessAuthServerDisabled":"vDBE-Juniper: jnxAccessAuthServerDisabled","jnxAccessAuthServerEnabled":"vDBE-Juniper: jnxAccessAuthServerEnabled","jnxAccessAuthAddressPoolHighThreshold":"vDBE-Juniper: jnxAccessAuthAddressPoolHighThreshold","jnxAccessAuthAddressPoolAbateThreshold":"vDBE-Juniper: jnxAccessAuthAddressPoolAbateThreshold","jnxAccessAuthAddressPoolOutOfAddresses":"vDBE-Juniper: jnxAccessAuthAddressPoolOutOfAddresses","jnxAccessAuthAddressPoolOutOfMemory":"vDBE-Juniper: jnxAccessAuthAddressPoolOutOfMemory","LEVEL_WARNING_CPU":"vMRF: LEVEL_WARNING_CPU","LEVEL_MAJOR_CPU":"vMRF: LEVEL_MAJOR_CPU","LEVEL_CRITICAL_CPU":"vMRF: LEVEL_CRITICAL_CPU","LEVEL_WARNING_MEM":"vMRF: LEVEL_WARNING_MEM","LEVEL_MAJOR_MEM":"vMRF: LEVEL_MAJOR_MEM","LEVEL_CRITICAL_MEM":"vMRF: LEVEL_CRITICAL_MEM","LEVEL_WARNING_DISK":"vMRF: LEVEL_WARNING_DISK","LEVEL_MAJOR_DISK":"vMRF: LEVEL_MAJOR_DISK","LEVEL_CRITICAL_DISK":"vMRF: LEVEL_CRITICAL_DISK","LEVEL_WARNING_RTPBANDWIDTH":"vMRF: LEVEL_WARNING_RTPBANDWIDTH","LEVEL_MAJOR_RTPBANDWIDTH":"vMRF: LEVEL_MAJOR_RTPBANDWIDTH","LEVEL_CRITICAL_RTPBANDWIDTH":"vMRF: LEVEL_CRITICAL_RTPBANDWIDTH","LEVEL_WARNING_RTPINPACKETLOSS":"vMRF: LEVEL_WARNING_RTPINPACKETLOSS","LEVEL_MAJOR_RTPINPACKETLOSS":"vMRF: LEVEL_MAJOR_RTPINPACKETLOSS","LEVEL_CRITICAL_RTPINPACKETLOSS":"vMRF: LEVEL_CRITICAL_RTPINPACKETLOSS","LEVEL_WARNING_RTPOUTPACKETLOSS":"vMRF: LEVEL_WARNING_RTPOUTPACKETLOSS","LEVEL_MAJOR_RTPOUTPACKETLOSS":"vMRF: LEVEL_MAJOR_RTPOUTPACKETLOSS","LEVEL_CRITICAL_RTPOUTPACKETLOSS":"vMRF: LEVEL_CRITICAL_RTPOUTPACKETLOSS","LEVEL_WARNING_TCPLOSTRETRANSMITRATE":"vMRF: LEVEL_WARNING_TCPLOSTRETRANSMITRATE","LEVEL_MAJOR_TCPLOSTRETRANSMITRATE":"vMRF: LEVEL_MAJOR_TCPLOSTRETRANSMITRATE","LEVEL_CRITICAL_TCPLOSTRETRANSMITRATE":"vMRF: LEVEL_CRITICAL_TCPLOSTRETRANSMITRATE","LEVEL_WARNING_TCPLOSSFAILURERATE":"vMRF: LEVEL_WARNING_TCPLOSSFAILURERATE","LEVEL_MAJOR_TCPLOSSFAILURERATE":"vMRF: LEVEL_MAJOR_TCPLOSSFAILURERATE","LEVEL_CRITICAL_TCPLOSSFAILURERATE":"vMRF: LEVEL_CRITICAL_TCPLOSSFAILURERATE","LEVEL_CRITICAL_RTPLINKDOWN":"vMRF: LEVEL_CRITICAL_RTPLINKDOWN","TARGET_REACHABLE":"vMRF: TARGET_REACHABLE","PUBLICATION_ERROR":"vMRF: PUBLICATION_ERROR","REMOTE_SERVER_SYNCHRONIZATION_ERROR":"vMRF: REMOTE_SERVER_SYNCHRONIZATION_ERROR","TRANSCODER_TOOL_EXEC_ERROR":"vMRF: TRANSCODER_TOOL_EXEC_ERROR","CLIENT_SYNCHRONIZATION_ERROR":"vMRF: CLIENT_SYNCHRONIZATION_ERROR","CLUSTER_UNREACHABLE":"vMRF: CLUSTER_UNREACHABLE","REMOTE_NODE_OFFLINE":"vMRF: REMOTE_NODE_OFFLINE","IPADDR_STOPPED":"vMRF: IPADDR_STOPPED","MRFC_STOPPED":"vMRF: MRFC_STOPPED","MNGT_STOPPED":"vMRF: MNGT_STOPPED","IPADDR_STARTED":"vMRF: IPADDR_STARTED","MRFC_STARTED":"vMRF: MRFC_STARTED","MNGT_STARTED":"vMRF: MNGT_STARTED","VOLATTACH_FAILED":"vMRF: VOLATTACH_FAILED","VOLDETACH_FAILED":"vMRF: VOLDETACH_FAILED","VOLDEL":"vMRF: VOLDEL","VOLCORRUPT":"vMRF: VOLCORRUPT","VOLFOREIGN":"vMRF: VOLFOREIGN","ACTIVE_ALARM_TABLE_PURGE":"vMRF: ACTIVE_ALARM_TABLE_PURGE","GENERIC_FORMER_STATELESS":"vMRF: GENERIC_FORMER_STATELESS","GENERIC_FORMER_STATEFUL":"vMRF: GENERIC_FORMER_STATEFUL","NO_MORE_ALARM_DESCRIPTION":"vMRF: NO_MORE_ALARM_DESCRIPTION","SERVICE_PROCESS_ENDS":"vMRF: SERVICE_PROCESS_ENDS","DEFENSE_STOPPED":"vMRF: DEFENSE_STOPPED","USER_ACCOUNT_LOCKED":"vMRF: USER_ACCOUNT_LOCKED","CONNECTION_SQL_NOT_ESTABLISHED":"vMRF: CONNECTION_SQL_NOT_ESTABLISHED","FALSE_ALARM":"vMRF: FALSE_ALARM","RADIUS SERVER HS":"vMRF: RADIUS SERVER HS","DRM_PACKAGER_IS_NOT_AVAILABLE":"vMRF: DRM_PACKAGER_IS_NOT_AVAILABLE","DRM_LICENSE_BUILDER_IS_NOT_AVAILABLE":"vMRF: DRM_LICENSE_BUILDER_IS_NOT_AVAILABLE","ERROR_WHILE_CREATING_PLAYLIST_MANAGER_FILE":"vMRF: ERROR_WHILE_CREATING_PLAYLIST_MANAGER_FILE","ERROR_WHILE_BUILDING_PLAYLIST_XML_REPRESENTATION":"vMRF: ERROR_WHILE_BUILDING_PLAYLIST_XML_REPRESENTATION","PLAYLIST_FILE_TO_PUBLISH_NOT_FOUND":"vMRF: PLAYLIST_FILE_TO_PUBLISH_NOT_FOUND","COULD_NOT_CONNECT_TO_PVNS_SERVER":"vMRF: COULD_NOT_CONNECT_TO_PVNS_SERVER","HTTP_OR_HTTPCLIENT_EXCEPTION_HAS_OCCURRED":"vMRF: HTTP_OR_HTTPCLIENT_EXCEPTION_HAS_OCCURRED","I/O_ERROR_WHILE_PUBLISHING_PLAYLIST_FILE":"vMRF: I/O_ERROR_WHILE_PUBLISHING_PLAYLIST_FILE","ERROR_WHILE_REQUESTING_SDP_FILE":"vMRF: ERROR_WHILE_REQUESTING_SDP_FILE","ERROR_WHILE_REQUESTING_SDP_FILE:_REMOTE_EXCEPTION":"vMRF: ERROR_WHILE_REQUESTING_SDP_FILE:_REMOTE_EXCEPTION","NO_STREAMING_RESOURCES":"vMRF: NO_STREAMING_RESOURCES","NO_STREAMING_MODULES_REGISTERED":"vMRF: NO_STREAMING_MODULES_REGISTERED","SM_FAILURE":"vMRF: SM_FAILURE","MISSING_FILE_OR_ENCODER":"vMRF: MISSING_FILE_OR_ENCODER","INVALID_RANGE":"vMRF: INVALID_RANGE","THRESHOLD_VALUE_EXCEEDED":"vMRF: THRESHOLD_VALUE_EXCEEDED","TICKET_QUEUE_FULL":"vMRF: TICKET_QUEUE_FULL","PARSING_INITIALIZATION_EXCEPTION":"vMRF: PARSING_INITIALIZATION_EXCEPTION","CUSTOMERCARE_INTERNAL_EXCEPTION":"vMRF: CUSTOMERCARE_INTERNAL_EXCEPTION","PARSING_EXCEPTION":"vMRF: PARSING_EXCEPTION","I/O_PROBLEM":"vMRF: I/O_PROBLEM","INEXISTENT_FILE_OR_FOLDER":"vMRF: INEXISTENT_FILE_OR_FOLDER","FILE_NOT_IN_XML_FORMAT":"vMRF: FILE_NOT_IN_XML_FORMAT","SERVICE_STATE_CHANGE":"vMRF: SERVICE_STATE_CHANGE","MONITORED_FILE_UPDATE_ERROR":"vMRF: MONITORED_FILE_UPDATE_ERROR","MONITORED_RPM_DELETED_ERROR":"vMRF: MONITORED_RPM_DELETED_ERROR","MONITORED_RPM_ADDED_ERROR":"vMRF: MONITORED_RPM_ADDED_ERROR","MONITORED_CHMOD_ERROR":"vMRF: MONITORED_CHMOD_ERROR","MONITORED_CHOWN_ERROR":"vMRF: MONITORED_CHOWN_ERROR","PASSWD_ROOT_ERROR":"vMRF: PASSWD_ROOT_ERROR","PASSWD_ERROR":"vMRF: PASSWD_ERROR","ROOTKIT_ERROR":"vMRF: ROOTKIT_ERROR","STARTUP_ERR_UNDEFINED_PORT":"vMRF: STARTUP_ERR_UNDEFINED_PORT","STARTUP_ERR_FAIL_FIND_HOSTNAME":"vMRF: STARTUP_ERR_FAIL_FIND_HOSTNAME","STARTUP_ERR_CF_MISSING":"vMRF: STARTUP_ERR_CF_MISSING","STARTUP_ERR_FAILED_TO_OPEN_CF":"vMRF: STARTUP_ERR_FAILED_TO_OPEN_CF","STARTUP_ERR_FAILED_TO_BIND_PORT":"vMRF: STARTUP_ERR_FAILED_TO_BIND_PORT","STARTUP_ERR_CFG_UNIT_MISSING":"vMRF: STARTUP_ERR_CFG_UNIT_MISSING","MCTR_INVALID_CODEC_NAME":"vMRF: MCTR_INVALID_CODEC_NAME","RTSP_SERVER_FAILURE":"vMRF: RTSP_SERVER_FAILURE","RTSP_SERVER_QUARANTINE":"vMRF: RTSP_SERVER_QUARANTINE","TRANSCODING_FAILURE":"vMRF: TRANSCODING_FAILURE","FILE_CACHE_FAILURE":"vMRF: FILE_CACHE_FAILURE","STARTUP_ERROR_INITIALIZATION_FAILED":"vMRF: STARTUP_ERROR_INITIALIZATION_FAILED","CONFERENCE_FAILURE":"vMRF: CONFERENCE_FAILURE","PLC_DEGRADATION_LOW":"vMRF: PLC_DEGRADATION_LOW","PLC_DEGRADATION_MEDIUM":"vMRF: PLC_DEGRADATION_MEDIUM","PLC_DEGRADATION_HIGH":"vMRF: PLC_DEGRADATION_HIGH","AUDIO_RESYNCH_LOW":"vMRF: AUDIO_RESYNCH_LOW","AUDIO_RESYNCH_MEDIUM":"vMRF: AUDIO_RESYNCH_MEDIUM","AUDIO_RESYNCH_HIGH":"vMRF: AUDIO_RESYNCH_HIGH","VIDEO_RESYNCH_LOW":"vMRF: VIDEO_RESYNCH_LOW","VIDEO_RESYNCH_MEDIUM":"vMRF: VIDEO_RESYNCH_MEDIUM","VIDEO_RESYNCH_HIGH":"vMRF: VIDEO_RESYNCH_HIGH","PLAY_FAILURES_LOW":"vMRF: PLAY_FAILURES_LOW","PLAY_FAILURES_MEDIUM":"vMRF: PLAY_FAILURES_MEDIUM","PLAY_FAILURES_HIGH":"vMRF: PLAY_FAILURES_HIGH","NOT_ENOUGH_FREE_CONFEREE":"vMRF: NOT_ENOUGH_FREE_CONFEREE","NO_LONGER_FREE_CONFERENCE_ROOM":"vMRF: NO_LONGER_FREE_CONFERENCE_ROOM","STARTUP_ERROR_FAIL_TO_READ_CF":"vMRF: STARTUP_ERROR_FAIL_TO_READ_CF","STARTUP_ERROR_SIP_ADAPTER_INIT":"vMRF: STARTUP_ERROR_SIP_ADAPTER_INIT","STARTUP_ERROR_MONITORING_INIT":"vMRF: STARTUP_ERROR_MONITORING_INIT","REGISTER_ERROR_FAILURE":"vMRF: REGISTER_ERROR_FAILURE","DRI_ERROR_FAILURE":"vMRF: DRI_ERROR_FAILURE","STARTUP_ERROR_STACK_CONFIGURATION":"vMRF: STARTUP_ERROR_STACK_CONFIGURATION","STARTUP_ERROR_CONF":"vMRF: STARTUP_ERROR_CONF","STARTUP_ERROR_UNDEFINED_PORT":"vMRF: STARTUP_ERROR_UNDEFINED_PORT","HOST_REMOVED":"vMRF: HOST_REMOVED","INTERCEPT_THRESHOLD_NB_DIALOG_ALLOCATED":"vMRF: INTERCEPT_THRESHOLD_NB_DIALOG_ALLOCATED","STARTUP_ERROR_STACK_CONF":"vMRF: STARTUP_ERROR_STACK_CONF","STARTUP_ERROR_CONFIGURATION":"vMRF: STARTUP_ERROR_CONFIGURATION","STARTUP_ERROR_FAILED_TO_RETRIEVE_HOSTNAME":"vMRF: STARTUP_ERROR_FAILED_TO_RETRIEVE_HOSTNAME","LEVEL_WARNING_CALL":"vMRF: LEVEL_WARNING_CALL","LEVEL_ALARM_MINOR_CALL":"vMRF: LEVEL_ALARM_MINOR_CALL","LEVEL_ALARM_MAJOR_CALL":"vMRF: LEVEL_ALARM_MAJOR_CALL","LEVEL_ALARM_MRFPoutOfService":"vMRF: LEVEL_ALARM_MRFPoutOfService","MRFP_CALL_REJECTED_Threshold #1":"vMRF: MRFP_CALL_REJECTED_Threshold #1","MRFP_CALL_REJECTED_Threshold #2":"vMRF: MRFP_CALL_REJECTED_Threshold #2","MRFP_CALL_REJECTED_Threshold #3":"vMRF: MRFP_CALL_REJECTED_Threshold #3","MRFP_CALL_RETRIED_Threshold #1":"vMRF: MRFP_CALL_RETRIED_Threshold #1","MRFP_CALL_RETRIED_Threshold #2":"vMRF: MRFP_CALL_RETRIED_Threshold #2","MRFP_CALL_RETRIED_Threshold #3":"vMRF: MRFP_CALL_RETRIED_Threshold #3","STARTUP_PUB_FILE_NOT_PRESENT":"vMRF: STARTUP_PUB_FILE_NOT_PRESENT","STARTUP_INF_FILE_NOT_PRESENT":"vMRF: STARTUP_INF_FILE_NOT_PRESENT","STARTUP_LIC_FILE_NOT_PRESENT":"vMRF: STARTUP_LIC_FILE_NOT_PRESENT","GENERIC_HARDWARE_PROBLEM":"vMRF: GENERIC_HARDWARE_PROBLEM","HARD_DRIVE_PROBLEM":"vMRF: HARD_DRIVE_PROBLEM","NETWORK_LINK_PROBLEM":"vMRF: NETWORK_LINK_PROBLEM","POWER_SUPPLY_PROBLEM":"vMRF: POWER_SUPPLY_PROBLEM","SMART_HARD_DRIVE_PROBLEM":"vMRF: SMART_HARD_DRIVE_PROBLEM","STARTUP_ERROR":"vMRF: STARTUP_ERROR","RESOURCE_NOT_ACCESSIBLE":"vMRF: RESOURCE_NOT_ACCESSIBLE","RESOURCE_ACCESSIBLE":"vMRF: RESOURCE_ACCESSIBLE","RESOURCE_FULL":"vMRF: RESOURCE_FULL","DRI_ALARM":"vMRF: DRI_ALARM","REGISTER_ERROR_CCF":"vMRF: REGISTER_ERROR_CCF","REGISTER_ERROR_EXTERNAL":"vMRF: REGISTER_ERROR_EXTERNAL","TIMEOUT_ERROR":"vMRF: TIMEOUT_ERROR","VXML_ERROR":"vMRF: VXML_ERROR","A Network Element is no longer available due to a connection failure":"vMVM: A Network Element is no longer available due to a connection failure","A MetaSphere server is reporting a fault with the configuration of its connection to MetaView":"vMVM: A MetaSphere server is reporting a fault with the configuration of its connection to MetaView","Configured OBS IPs don't match available OBS nodes. Configured but unavailable nodes include: []. Real nodes not configured include: []":"vMVM: Configured OBS IPs don't match available OBS nodes. Configured but unavailable nodes include: []. Real nodes not configured include: []","Service Assurance Server cannot be contacted":"vMVM: Service Assurance Server cannot be contacted","The primary MetaView Director has lost contact with the backup MetaView Director":"vMVM: The primary MetaView Director has lost contact with the backup MetaView Director","The active server has lost connection to the standby":"vMVM: The active server has lost connection to the standby","CrashCounter":"vprobes-vBE-Processing: CrashCounter","IsAlive":"vprobes-vBE-Processing: IsAlive","SwRestart":"vprobes-vLB: SwRestart","Repeated exceptions have occurred.":"vSBC-Metaswitch: Repeated exceptions have occurred.","A licensing limit is close to capacity.":"vSBC-Metaswitch: A licensing limit is close to capacity.","One or more feature packs have been breached.":"vSBC-Metaswitch: One or more feature packs have been breached.","The grace period on this Perimeta system will expire in less than 48 hours, after which calls will not be processed.":"vSBC-Metaswitch: The grace period on this Perimeta system will expire in less than 48 hours, after which calls will not be processed.","The grace period on this Perimeta system will expire in less than 7 days, after which calls will not be processed.":"vSBC-Metaswitch: The grace period on this Perimeta system will expire in less than 7 days, after which calls will not be processed.","The license on this Perimeta system will expire in less than 4 weeks.":"vSBC-Metaswitch: The license on this Perimeta system will expire in less than 4 weeks.","A Perimeta blade has become unlicensed.":"vSBC-Metaswitch: A Perimeta blade has become unlicensed.","Perimeta is licensed with a bypass certificate, which is valid until the time displayed.":"vSBC-Metaswitch: Perimeta is licensed with a bypass certificate, which is valid until the time displayed.","The number of licensed instances exceeded a threshold of the licensed limit.":"vSBC-Metaswitch: The number of licensed instances exceeded a threshold of the licensed limit.","The software token on the primary Distributed Capacity Manager will expire on the displayed date.":"vSBC-Metaswitch: The software token on the primary Distributed Capacity Manager will expire on the displayed date.","A capacity limit on the license installed on this Perimeta system does not match the largest limit across all systems in the deployment.":"vSBC-Metaswitch: A capacity limit on the license installed on this Perimeta system does not match the largest limit across all systems in the deployment.","An adjacency has voice quality alerts.":"vSBC-Metaswitch: An adjacency has voice quality alerts.","The number of calls being audited is congested.":"vSBC-Metaswitch: The number of calls being audited is congested.","Session Controller is rejecting calls because there is no valid active call policy set configured.":"vSBC-Metaswitch: Session Controller is rejecting calls because there is no valid active call policy set configured.","A call policy set is inactive because it has been misconfigured.":"vSBC-Metaswitch: A call policy set is inactive because it has been misconfigured.","Session Controller is inactive and rejecting calls.":"vSBC-Metaswitch: Session Controller is inactive and rejecting calls.","Sources have breached minor or major blacklist thresholds.":"vSBC-Metaswitch: Sources have breached minor or major blacklist thresholds.","Sources are blacklisted.":"vSBC-Metaswitch: Sources are blacklisted.","The blacklisting configuration will change as a result of upgrade and some configured blacklists or alerts will no longer be applied.":"vSBC-Metaswitch: The blacklisting configuration will change as a result of upgrade and some configured blacklists or alerts will no longer be applied.","A large number of downgrades and bans have been created as a result of blacklisting.":"vSBC-Metaswitch: A large number of downgrades and bans have been created as a result of blacklisting.","Session Controller is unable to track further sources for blacklisting.":"vSBC-Metaswitch: Session Controller is unable to track further sources for blacklisting.","A software protection switch was triggered.":"vSBC-Metaswitch: A software protection switch was triggered.","A disk area on a processor blade is nearly full.":"vSBC-Metaswitch: A disk area on a processor blade is nearly full.","Memory use is very high.":"vSBC-Metaswitch: Memory use is very high.","The primary processor-blade has lost contact with the backup.":"vSBC-Metaswitch: The primary processor-blade has lost contact with the backup.","An efix or patch has been applied to this system containing diagnostic versions of some software libraries.":"vSBC-Metaswitch: An efix or patch has been applied to this system containing diagnostic versions of some software libraries.","A software protection switch (SPS) was triggered. Call and registration state was lost.":"vSBC-Metaswitch: A software protection switch (SPS) was triggered. Call and registration state was lost.","The Ethernet Heartbeat between primary and backup processors has failed.":"vSBC-Metaswitch: The Ethernet Heartbeat between primary and backup processors has failed.","The Backplane Heartbeat between primary and backup processors has failed.":"vSBC-Metaswitch: The Backplane Heartbeat between primary and backup processors has failed.","A disk area on a processor blade reported an error.":"vSBC-Metaswitch: A disk area on a processor blade reported an error.","The system is upgrading.":"vSBC-Metaswitch: The system is upgrading.","An error with NTP functionality has been detected.":"vSBC-Metaswitch: An error with NTP functionality has been detected.","One or more users are locked out of the system.":"vSBC-Metaswitch: One or more users are locked out of the system.","The Craft Terminal user FTP directory on a processor blade is nearly full.":"vSBC-Metaswitch: The Craft Terminal user FTP directory on a processor blade is nearly full.","A scheduled configuration snapshot has failed.":"vSBC-Metaswitch: A scheduled configuration snapshot has failed.","The Session Controller is stopping as a result of administrator action.":"vSBC-Metaswitch: The Session Controller is stopping as a result of administrator action.","A Session Controller processor blade is stopping as a result of administrator action.":"vSBC-Metaswitch: A Session Controller processor blade is stopping as a result of administrator action.","An object could not be activated because its service address does not exist or is not fully specified.":"vSBC-Metaswitch: An object could not be activated because its service address does not exist or is not fully specified.","The hardware on a processor does not meet minimum requirements.":"vSBC-Metaswitch: The hardware on a processor does not meet minimum requirements.","The hardware expectations of the two processors are not the same.":"vSBC-Metaswitch: The hardware expectations of the two processors are not the same.","The read speed of the main hard disk on a processor blade is too slow.":"vSBC-Metaswitch: The read speed of the main hard disk on a processor blade is too slow.","An error has occurred reading from the hard disk on a processor blade.":"vSBC-Metaswitch: An error has occurred reading from the hard disk on a processor blade.","Backup and primary processor-blades have an inconsistent system role.":"vSBC-Metaswitch: Backup and primary processor-blades have an inconsistent system role.","Event: The system encountered a critical error and had to restart.":"vSBC-Metaswitch: Event: The system encountered a critical error and had to restart.","Event: A RADIUS server failed to respond to an authentication request.":"vSBC-Metaswitch: Event: A RADIUS server failed to respond to an authentication request.","Event: All configured RADIUS servers failed to respond to authentication requests.":"vSBC-Metaswitch: Event: All configured RADIUS servers failed to respond to authentication requests.","Event: The number of CPUs has changed.":"vSBC-Metaswitch: Event: The number of CPUs has changed.","Event: A user has been automatically deleted":"vSBC-Metaswitch: Event: A user has been automatically deleted","The primary processor blade has lost management connectivity":"vSBC-Metaswitch: The primary processor blade has lost management connectivity","Event: A processor blade is running with DPDK mode disabled when DPDK mode is,expected.":"vSBC-Metaswitch: Event: A processor blade is running with DPDK mode disabled when DPDK mode is,expected.","Event: Processor blade %1 is running with DPDK mode disabled when DPDK mode may be possible.":"vSBC-Metaswitch: Event: Processor blade %1 is running with DPDK mode disabled when DPDK mode may be possible.","Perimeta is attempting to resend cached billing records.":"vSBC-Metaswitch: Perimeta is attempting to resend cached billing records.","The Rf billing cache is full.":"vSBC-Metaswitch: The Rf billing cache is full.","The inbound call queue is congested.":"vSBC-Metaswitch: The inbound call queue is congested.","A configured realm group contains realms that are not available to the SBC.":"vSBC-Metaswitch: A configured realm group contains realms that are not available to the SBC.","An allowed MSC configuration is not connected to any physical MSCs.":"vSBC-Metaswitch: An allowed MSC configuration is not connected to any physical MSCs.","A SIP Peer has stopped responding to SIP OPTIONS pings. MSW: 20160303: Alarm text is changed in v3.9 software to read: \\"An adjacency has lost connectivity, according to SIP OPTIONS pings\\"":"vSBC-Metaswitch: A SIP Peer has stopped responding to SIP OPTIONS pings. MSW: 20160303: Alarm text is changed in v3.9 software to read: \\"An adjacency has lost connectivity, according to SIP OPTIONS pings\\"","An adjacency has failed as the listen socket could not be created. Check for configuration mismatches with the associated service interface.":"vSBC-Metaswitch: An adjacency has failed as the listen socket could not be created. Check for configuration mismatches with the associated service interface.","No suitable DNS records were found for a peer group's DNS hostname.":"vSBC-Metaswitch: No suitable DNS records were found for a peer group's DNS hostname.","One or more SIP peers from a peer group have stopped responding to SIP OPTIONS pings":"vSBC-Metaswitch: One or more SIP peers from a peer group have stopped responding to SIP OPTIONS pings","An adjacency has failed as its service network does not match the service network on its associated peer group.":"vSBC-Metaswitch: An adjacency has failed as its service network does not match the service network on its associated peer group.","An adjacency has failed as its configured TLS certificate could not be found.":"vSBC-Metaswitch: An adjacency has failed as its configured TLS certificate could not be found.","The caching function has not been initialized properly.":"vSBC-Metaswitch: The caching function has not been initialized properly.","An adjacency has failed as the listen socket could not be created.":"vSBC-Metaswitch: An adjacency has failed as the listen socket could not be created.","An adjacency is congested and may be rejecting calls.":"vSBC-Metaswitch: An adjacency is congested and may be rejecting calls.","There is an issue with a Diameter peer.":"vSBC-Metaswitch: There is an issue with a Diameter peer.","A realm is no longer reachable via any configured peers.":"vSBC-Metaswitch: A realm is no longer reachable via any configured peers.","An FQDN for a configured Diameter peer has failed to resolve to a valid IP address.":"vSBC-Metaswitch: An FQDN for a configured Diameter peer has failed to resolve to a valid IP address.","One or more peers resolved from a DNS lookup of a configured peer's address cannot be contacted":"vSBC-Metaswitch: One or more peers resolved from a DNS lookup of a configured peer's address cannot be contacted","An interface ARP or NDP probe has failed.":"vSBC-Metaswitch: An interface ARP or NDP probe has failed.","One or more IP address conflicts have been detected on service interfaces with zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.":"vSBC-Metaswitch: One or more IP address conflicts have been detected on service interfaces with zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.","One or more IP address conflicts have been detected on service interfaces with non-zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.":"vSBC-Metaswitch: One or more IP address conflicts have been detected on service interfaces with non-zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.","An interface device is running below the expected speed. This alarm was originally triggered by a probe failure on a service interface.":"vSBC-Metaswitch: An interface device is running below the expected speed. This alarm was originally triggered by a probe failure on a service interface.","An interface device is running above the expected speed.":"vSBC-Metaswitch: An interface device is running above the expected speed.","An IP address conflict has been detected on a management interface.":"vSBC-Metaswitch: An IP address conflict has been detected on a management interface.","An interface ICMP probe has failed.":"vSBC-Metaswitch: An interface ICMP probe has failed.","A High-Availability link has detected a connectivity issue.":"vSBC-Metaswitch: A High-Availability link has detected a connectivity issue.","An HA-link device is being reported as underspeed.":"vSBC-Metaswitch: An HA-link device is being reported as underspeed.","An IP address conflict has been detected on a replication interface.":"vSBC-Metaswitch: An IP address conflict has been detected on a replication interface.","The Session Controller has started.":"vSBC-Metaswitch: The Session Controller has started.","A statistic exceeded its configured thresholds.":"vSBC-Metaswitch: A statistic exceeded its configured thresholds.","One or more statistic has not been retrieved at least 3 times in a row.":"vSBC-Metaswitch: One or more statistic has not been retrieved at least 3 times in a row.","A Refresh Alarms request was triggered. Alarms not re-raised will be cleared in 5 minutes.":"vSBC-Metaswitch: A Refresh Alarms request was triggered. Alarms not re-raised will be cleared in 5 minutes.","A statistic has exceeded its configured thresholds.":"vSBC-Metaswitch: A statistic has exceeded its configured thresholds.","A Fallback Operation will soon be started":"vSBG: A Fallback Operation will soon be started","BRM, Auto Export Backup Failed":"vSBG: BRM, Auto Export Backup Failed","BRM, Scheduled Backup Failed":"vSBG: BRM, Scheduled Backup Failed","COM SA, AMF Component Cleanup Failed":"vSBG: COM SA, AMF Component Cleanup Failed","COM SA, AMF Component Instantiation Failed":"vSBG: COM SA, AMF Component Instantiation Failed","COM SA, AMF SI Unassigned":"vSBG: COM SA, AMF SI Unassigned","COM SA, CLM Cluster Node Unavailable":"vSBG: COM SA, CLM Cluster Node Unavailable","COM SA, MDF Detected Model Error":"vSBG: COM SA, MDF Detected Model Error","COM SA, Proxy Status of a Component Changed to Unproxied":"vSBG: COM SA, Proxy Status of a Component Changed to Unproxied","File Management, Number of Files in FileGroup Exceeded":"vSBG: File Management, Number of Files in FileGroup Exceeded","File Management, Max Size in FileGroup Exceeded":"vSBG: File Management, Max Size in FileGroup Exceeded","LOTC Disk Replication Communication":"vSBG: LOTC Disk Replication Communication","LOTC Disk Replication Consistency":"vSBG: LOTC Disk Replication Consistency","LOTC Disk Usage":"vSBG: LOTC Disk Usage","LOTC memory Usage":"vSBG: LOTC memory Usage","LOTC Time Synchronization":"vSBG: LOTC Time Synchronization","SBG, BGF Control Link Down":"vSBG: SBG, BGF Control Link Down","SBG, BGF Control Link Disabled":"vSBG: SBG, BGF Control Link Disabled","SBG, BGF Control Link Enabled":"vSBG: SBG, BGF Control Link Enabled","SBG, BGF Control Link Remote Locked":"vSBG: SBG, BGF Control Link Remote Locked","SBG, Charging Data Storage Maximum Records Reached":"vSBG: SBG, Charging Data Storage Maximum Records Reached","SBG, Charging Server Rejects Charging Data":"vSBG: SBG, Charging Server Rejects Charging Data","SBG, Excessive Packet Rate Detected ":"vSBG: SBG, Excessive Packet Rate Detected ","SBG, High Amount of Malformed Packets Received":"vSBG: SBG, High Amount of Malformed Packets Received","SBG, High Amount of STUN Packets Detected":"vSBG: SBG, High Amount of STUN Packets Detected","SBG, High Amount of TCP SYN Packets Received":"vSBG: SBG, High Amount of TCP SYN Packets Received","SBG, High Amount of UDP Packets Received ":"vSBG: SBG, High Amount of UDP Packets Received ","SBG, IP Address Blocked Due to Excessive Packet Rate":"vSBG: SBG, IP Address Blocked Due to Excessive Packet Rate","SBG, Lost Connectivity to Diameter Server":"vSBG: SBG, Lost Connectivity to Diameter Server","SBG, Mated Pair out of Service":"vSBG: SBG, Mated Pair out of Service","SBG, Network Unavailable for Media Handling":"vSBG: SBG, Network Unavailable for Media Handling","SBG, Non-emergency Call Released to Free Resources for Emergency Call":"vSBG: SBG, Non-emergency Call Released to Free Resources for Emergency Call","SBG, Not Enough Disk Space for Storing Charging Data":"vSBG: SBG, Not Enough Disk Space for Storing Charging Data","SBG, Payload Mated Pair Failure":"vSBG: SBG, Payload Mated Pair Failure","SBG, Payload Processor Failure":"vSBG: SBG, Payload Processor Failure","SBG, Processor Overloaded":"vSBG: SBG, Processor Overloaded","SBG, Registered User Set in Quarantine":"vSBG: SBG, Registered User Set in Quarantine","SBG, Registration Contacts Exceed Configured Threshold":"vSBG: SBG, Registration Contacts Exceed Configured Threshold","SBG, Sequential Restart Initiated":"vSBG: SBG, Sequential Restart Initiated","SBG, SIP Abuse Detected":"vSBG: SBG, SIP Abuse Detected","SBG, SIP Network Locked":"vSBG: SBG, SIP Network Locked","SBG, SIP Next Hop Reachable":"vSBG: SBG, SIP Next Hop Reachable","SBG, SIP Next Hop Unreachable":"vSBG: SBG, SIP Next Hop Unreachable","SBG, SIP Request Rejected by Network Throttling":"vSBG: SBG, SIP Request Rejected by Network Throttling","SBG, TLS Certificate Imported":"vSBG: SBG, TLS Certificate Imported","SBG, Trace Recording Session Number Limit Reached":"vSBG: SBG, Trace Recording Session Number Limit Reached","SBG, Trace Session Deactivated":"vSBG: SBG, Trace Session Deactivated","SBG, Trace Session Times Out":"vSBG: SBG, Trace Session Times Out","SBG, Unknown Media Type or Payload Type":"vSBG: SBG, Unknown Media Type or Payload Type"} +ui.location.default=classpath:/clds/templates/ui-location-default.json +ui.alarm.default=classpath:/clds/templates/ui-alarm-default.json # # if action.test.override is true, then any action will be marked as test=true (even if incoming action request had test=false); otherwise, test flag will be unchanged on the action request action.test.override=false @@ -101,8 +101,8 @@ action.insert.test.event=false clds.service.cache.invalidate.after.seconds=120 #DCAE Inventory Url Properties -DCAE_INVENTORY_URL = http://dcae.api.simpledemo.onap.org:8080 +dcae.inventory.url=http://dcae.api.simpledemo.onap.org:8080 #DCAE Dispatcher Url Properties -DCAE_DISPATCHER_URL = http://dcae.api.simpledemo.onap.org:8080 +dcae.dispatcher.url=http://dcae.api.simpledemo.onap.org:8080 dcae.header.requestId = X-ECOMP-RequestID diff --git a/src/main/resources/clds/templates/dcae-decode-service_ids.json b/src/main/resources/clds/templates/dcae-decode-service_ids.json new file mode 100644 index 000000000..619cac67a --- /dev/null +++ b/src/main/resources/clds/templates/dcae-decode-service_ids.json @@ -0,0 +1,20 @@ +{ + "vUSP": [ + "vUSP - vCTS" + ], + "Trinity": [ + "ASBGv TLS VNF", + "ASBGv No TLS", + "ASBGv (NO TLS) VNF", + "ASBGv TLS", + "NSBGv VNF", + "NSBGv" + ], + "vSCP": [ + "AKRON_vSCP_F5_FW-SVC/vSCP_F5_FW 1", + "ALLEN_vSCP_F5_FW-SVC/vSCP_F5_FW 1" + ], + "vProbes": [ + "vProbes - FW" + ] +} diff --git a/src/main/resources/clds/templates/dcae-deployment-template.json b/src/main/resources/clds/templates/dcae-deployment-template.json new file mode 100644 index 000000000..d4891747e --- /dev/null +++ b/src/main/resources/clds/templates/dcae-deployment-template.json @@ -0,0 +1,9 @@ +{ + "serviceTypeId": "???", + "inputs": { + "aaiEnrichmentHost": "10.0.1.1", + "enableAAIEnrichment": "true", + "subscriberHostName": "10.0.11.1", + "publisherHostName": "10.0.11.1" + } +} diff --git a/src/main/resources/clds/templates/dcae-template.json b/src/main/resources/clds/templates/dcae-template.json new file mode 100644 index 000000000..b7cfb232e --- /dev/null +++ b/src/main/resources/clds/templates/dcae-template.json @@ -0,0 +1,26 @@ +{ + "properties": { + "service_name": "", + "service_ids": [ + ], + "vnf_ids": [ + ], + "location_ids": [ + ] + }, + "template": { + "tca": { + "dcae": { + "inputTopic": "", + "outputTopic": "", + "closedLoopControlName": "", + "closedLoopEventClient": "configuration.dcae.microservice.tca.xml", + "policyName": "", + "policyScope": "service=vSCP;resource=F5;type=configuration", + "policyVersion": "v0.0.1", + "serviceConfigurations": { + } + } + } + } +} diff --git a/src/main/resources/clds/templates/op-eNodeB-recipe.json b/src/main/resources/clds/templates/op-eNodeB-recipe.json new file mode 100644 index 000000000..7098987a2 --- /dev/null +++ b/src/main/resources/clds/templates/op-eNodeB-recipe.json @@ -0,0 +1,44 @@ +{ + "eNodeBRecipes": [ + { + "Actor": "AOTS", + "Recipe": "checkENodeBTicketHours", + "ParentPolicy": "", + "PPConditions": "", + "Retry": "0", + "TimeLimit": "120" + }, + { + "Actor": "AOTS", + "Recipe": "checkEquipmentStatus", + "ParentPolicy": "checkENodeBTicketHours", + "PPConditions": "Success", + "Retry": "0", + "TimeLimit": "120" + }, + { + "Actor": "AOTS", + "Recipe": "checkEimStatus", + "ParentPolicy": "checkEquipmentStatus", + "PPConditions": "Success", + "Retry": "0", + "TimeLimit": "120" + }, + { + "Actor": "AOTS", + "Recipe": "checkMaintenanceWindow", + "ParentPolicy": "checkEimStatus", + "PPConditions": "Success", + "Retry": "0", + "TimeLimit": "120" + }, + { + "Actor": "SDNR", + "Recipe": "Reset", + "ParentPolicy": "checkMaintenanceWindow", + "PPConditions": "Success", + "Retry": "", + "TimeLimit": "" + } + ] +} diff --git a/src/main/resources/clds/templates/sdc-decode-service_ids.json b/src/main/resources/clds/templates/sdc-decode-service_ids.json new file mode 100644 index 000000000..9e26dfeeb --- /dev/null +++ b/src/main/resources/clds/templates/sdc-decode-service_ids.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/src/main/resources/clds/templates/sdc-template.json b/src/main/resources/clds/templates/sdc-template.json new file mode 100644 index 000000000..9e26dfeeb --- /dev/null +++ b/src/main/resources/clds/templates/sdc-template.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/src/main/resources/clds/templates/tca-policy-template.json b/src/main/resources/clds/templates/tca-policy-template.json new file mode 100644 index 000000000..eca4d467c --- /dev/null +++ b/src/main/resources/clds/templates/tca-policy-template.json @@ -0,0 +1,19 @@ +{ + "service": "tca_policy", + "version": "1.0.0", + "location": "SampleServiceLocation", + "configName": "SampleConfigName", + "uuid": "test", + "policyScope": "resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", + "templateVersion": "OpenSource.version.1", + "policyName": "MicroServicevCPE", + "description": "MicroService Policy", + "priority": "1", + "riskType": "SampleRiskType", + "riskLevel": "1", + "guard": "False", + "content": { + "tca_policy": { + } + } +} diff --git a/src/main/resources/clds/templates/tca-template.json b/src/main/resources/clds/templates/tca-template.json new file mode 100644 index 000000000..892fc0d62 --- /dev/null +++ b/src/main/resources/clds/templates/tca-template.json @@ -0,0 +1,14 @@ +{ + "domain": "measurementsForVfScaling", + "metricsPerEventName": [ + { + "eventName": "???", + "controlLoopSchemaType": "VNF", + "policyScope": "DCAE", + "policyName": "???", + "policyVersion": "v0.0.1", + "thresholds": [ + ] + } + ] +} diff --git a/src/main/resources/clds/templates/tca-thresholds-template.json b/src/main/resources/clds/templates/tca-thresholds-template.json new file mode 100644 index 000000000..b67e96321 --- /dev/null +++ b/src/main/resources/clds/templates/tca-thresholds-template.json @@ -0,0 +1,9 @@ +{ + "closedLoopControlName": "???", + "version": "1.0.2", + "fieldPath": "?????", + "thresholdValue": 0, + "direction": "???", + "severity": "MAJOR", + "closedLoopEventStatus": "???" +} diff --git a/src/main/resources/clds/templates/ui-alarm-default.json b/src/main/resources/clds/templates/ui-alarm-default.json new file mode 100644 index 000000000..0d0835981 --- /dev/null +++ b/src/main/resources/clds/templates/ui-alarm-default.json @@ -0,0 +1,597 @@ +{ + "Reports a transient alarm condition when an incoming CDR cannot be decoded successfully": "vCCF: Reports a transient alarm condition when an incoming CDR cannot be decoded successfully", + "Reports a transient alarm condition when an incoming ACR message cannot be decoded successfully": "vCCF: Reports a transient alarm condition when an incoming ACR message cannot be decoded successfully", + "Reports a transient alarm condition when a CDR validation fails": "vCCF: Reports a transient alarm condition when a CDR validation fails", + "Reports a transient alarm condition when an incoming GTP' message cannot be decoded successfully": "vCCF: Reports a transient alarm condition when an incoming GTP' message cannot be decoded successfully", + "Reports a transient alarm condition when an incoming CDR file cannot be decoded successfully": "vCCF: Reports a transient alarm condition when an incoming CDR file cannot be decoded successfully", + "Reports a transient alarm condition when an incoming Sh/Dh file cannot be decoded successfully": "vCCF: Reports a transient alarm condition when an incoming Sh/Dh file cannot be decoded successfully", + "Reports a transient alarm condition when an incoming ACR message is in conflict with former ACR in one diameter session": "vCCF: Reports a transient alarm condition when an incoming ACR message is in conflict with former ACR in one diameter session", + "Reports a transient alarm condition when an outgoing Ro message send fails": "vCCF: Reports a transient alarm condition when an outgoing Ro message send fails", + "Reports a transient alarm condition when an outgoing GTP' message send fails": "vCCF: Reports a transient alarm condition when an outgoing GTP' message send fails", + "Reports a transient alarm condition when an outgoing Sh/Dh message send fails": "vCCF: Reports a transient alarm condition when an outgoing Sh/Dh message send fails", + "Reports an alarm when build or send Rf message fail": "vCCF: Reports an alarm when build or send Rf message fail", + "Reports a transient alarm condition when an abnormal incoming CCA message": "vCCF: Reports a transient alarm condition when an abnormal incoming CCA message", + "Reports a transient alarm condition when there is an abnormal incoming Sh/Dh message": "vCCF: Reports a transient alarm condition when there is an abnormal incoming Sh/Dh message", + "For Rf interface, if IeCCF receives a message with incorrect value for session id.": "vCCF: For Rf interface, if IeCCF receives a message with incorrect value for session id.", + "Reports an alarm when CPU usage exceeds the major threshold, the local database exceeds the critical threshold, or the ACR partition exceeds the major threshold": "vCCF: Reports an alarm when CPU usage exceeds the major threshold, the local database exceeds the critical threshold, or the ACR partition exceeds the major threshold", + "Reports an alarm when CPU usage exceeds the minor threshold, the local database exceeds the major threshold, or the ACR partition exceeds the minor threshold": "vCCF: Reports an alarm when CPU usage exceeds the minor threshold, the local database exceeds the major threshold, or the ACR partition exceeds the minor threshold", + "Reports an alarm when CPU usage exceeds the critical threshold, the local database exceeds the major threshold, or the CDR partition exceeds the critical threshold": "vCCF: Reports an alarm when CPU usage exceeds the critical threshold, the local database exceeds the major threshold, or the CDR partition exceeds the critical threshold", + "Reports an alarm when CPU usage exceeds the major threshold or CDR partition exceeds the major threshold": "vCCF: Reports an alarm when CPU usage exceeds the major threshold or CDR partition exceeds the major threshold", + "Reports an alarm when external DB usage exceeds the major threshold": "vCCF: Reports an alarm when external DB usage exceeds the major threshold", + "Reports a transient alarm condition when the workflow definition table is provisioned wrongly": "vCCF: Reports a transient alarm condition when the workflow definition table is provisioned wrongly", + "Reports a transient alarm condition when the Action Definition table is provisioned wrongly": "vCCF: Reports a transient alarm condition when the Action Definition table is provisioned wrongly", + "Reports a transient alarm condition when the Ro Host Configuration is provisioned wrongly": "vCCF: Reports a transient alarm condition when the Ro Host Configuration is provisioned wrongly", + "Reports a transient alarm condition when the Sh Host Configuration is provisioned wrongly": "vCCF: Reports a transient alarm condition when the Sh Host Configuration is provisioned wrongly", + "Reports a transient alarm condition when a specific dictionary or rule does not exist": "vCCF: Reports a transient alarm condition when a specific dictionary or rule does not exist", + "Reports a transient alarm condition when failure occurs when mapping Rf message to XDR": "vCCF: Reports a transient alarm condition when failure occurs when mapping Rf message to XDR", + "Reports a transient alarm condition when failure occurs in aggregating process": "vCCF: Reports a transient alarm condition when failure occurs in aggregating process", + "Reports a transient alarm condition when failure happens in correlating process": "vCCF: Reports a transient alarm condition when failure happens in correlating process", + "Reports a transient alarm condition when failure occurs in generating CDR": "vCCF: Reports a transient alarm condition when failure occurs in generating CDR", + "Reports a transient alarm condition when failure occurs in constructing CCR message from XDR": "vCCF: Reports a transient alarm condition when failure occurs in constructing CCR message from XDR", + "Reports a transient alarm condition when an ACR/XER/BER/INC record write to bad file": "vCCF: Reports a transient alarm condition when an ACR/XER/BER/INC record write to bad file", + "Reports an alarm condition when aggregation or correlation central database connection is lost": "vCCF: Reports an alarm condition when aggregation or correlation central database connection is lost", + "Reports an alarm condition when a specific failure happens in database operations": "vCCF: Reports an alarm condition when a specific failure happens in database operations", + "Reports an alarm condition when DB capacity has been consumed to critical threshold": "vCCF: Reports an alarm condition when DB capacity has been consumed to critical threshold", + "Reports an alarm condition when DB capacity has been consumed to major threshold": "vCCF: Reports an alarm condition when DB capacity has been consumed to major threshold", + "Reports an alarm condition when DB capacity has been consumed to minor threshold.": "vCCF: Reports an alarm condition when DB capacity has been consumed to minor threshold.", + "Reports an alarm condition when application cannot deliver CDR to CDRSCH subsystem": "vCCF: Reports an alarm condition when application cannot deliver CDR to CDRSCH subsystem", + "Reports an alarm condition when some fields of ACR file header have error value and this ACR file cannot be processed further": "vCCF: Reports an alarm condition when some fields of ACR file header have error value and this ACR file cannot be processed further", + "Reports an alarm condition when some fields of ACR file header have invalid value and this ACR file can be processed further": "vCCF: Reports an alarm condition when some fields of ACR file header have invalid value and this ACR file can be processed further", + "Reports an alarm condition when the ACR file loses some ACR records": "vCCF: Reports an alarm condition when the ACR file loses some ACR records", + "Reports an alarm condition when some fields of ACR record header have error value and this ACR record and the following ACR records cannot be processed further": "vCCF: Reports an alarm condition when some fields of ACR record header have error value and this ACR record and the following ACR records cannot be processed further", + "Reports an alarm condition when error occurs in processing CDR/ACR files": "vCCF: Reports an alarm condition when error occurs in processing CDR/ACR files", + "Reports an alarm condition when CDR partition has been consumed to critical threshold": "vCCF: Reports an alarm condition when CDR partition has been consumed to critical threshold", + "Reports an alarm condition when CDR partition has been consumed to major threshold.": "vCCF: Reports an alarm condition when CDR partition has been consumed to major threshold.", + "Reports an alarm condition when CDR partition has been consumed to minor threshold": "vCCF: Reports an alarm condition when CDR partition has been consumed to minor threshold", + "Reports an alarm condition when ACR partition has been consumed to critical threshold": "vCCF: Reports an alarm condition when ACR partition has been consumed to critical threshold", + "Reports an alarm condition when ACR partition has been consumed to major threshold": "vCCF: Reports an alarm condition when ACR partition has been consumed to major threshold", + "Reports an alarm condition when ACR partition has been consumed to minor threshold": "vCCF: Reports an alarm condition when ACR partition has been consumed to minor threshold", + "Reports an alarm condition when CPU consumption reaches critical threshold": "vCCF: Reports an alarm condition when CPU consumption reaches critical threshold", + "Reports an alarm condition when CPU consumption reaches major threshold": "vCCF: Reports an alarm condition when CPU consumption reaches major threshold", + "Reports an alarm condition when CPU consumption reaches minor threshold": "vCCF: Reports an alarm condition when CPU consumption reaches minor threshold", + "Service shall monitor * number of partial CDR * number of incompleted CDR * number of unacceptable CDR If any one exceeds a configurable threshold in a configrable interval.": "vCCF: Service shall monitor * number of partial CDR * number of incompleted CDR * number of unacceptable CDR If any one exceeds a configurable threshold in a configrable interval.", + "CDR size exceed the platform capacity.": "vCCF: CDR size exceed the platform capacity.", + "Service shall monitor number of ACR without AII AVP, If it exceeds a configurable threshold in a configurable interval.": "vCCF: Service shall monitor number of ACR without AII AVP, If it exceeds a configurable threshold in a configurable interval.", + "Service shall monitor CDR cut due to ECCF_ACRNUMBER_IN_DB, If it exceeds a configurable threshold in a configurable interval.": "vCCF: Service shall monitor CDR cut due to ECCF_ACRNUMBER_IN_DB, If it exceeds a configurable threshold in a configurable interval.", + "External Node of this Cluster is overload": "vCCF: External Node of this Cluster is overload", + "bdb_high_latency": "vCCF-vDB: bdb_high_latency", + "bdb_high_throughput": "vCCF-vDB: bdb_high_throughput", + "bdb_size": "vCCF-vDB: bdb_size", + "cluster_inconsistent_rl_sw": "vCCF-vDB: cluster_inconsistent_rl_sw", + "cluster_node_remove_abort_failed": "vCCF-vDB: cluster_node_remove_abort_failed", + "cluster_node_remove_failed": "vCCF-vDB: cluster_node_remove_failed", + "cluster_ram_overcommit": "vCCF-vDB: cluster_ram_overcommit", + "cluster_rebalance_failed": "vCCF-vDB: cluster_rebalance_failed", + "cluster_too_few_nodes_for_replication": "vCCF-vDB: cluster_too_few_nodes_for_replication", + "node_cpu_utilization": "vCCF-vDB: node_cpu_utilization", + "node_ephemeral_storage": "vCCF-vDB: node_ephemeral_storage", + "node_failed": "vCCF-vDB: node_failed", + "node_memory": "vCCF-vDB: node_memory", + "node_net_throughput": "vCCF-vDB: node_net_throughput", + "node_offline_failed": "vCCF-vDB: node_offline_failed", + "node_offline_abort_failed": "vCCF-vDB: node_offline_abort_failed", + "node_online_failed": "vCCF-vDB: node_online_failed", + "OAM NODE- IS NOT ACTIVE ": "vCCF-vDB: OAM NODE- IS NOT ACTIVE ", + "LSS_asdaCommunicationFailure": "vCTS: LSS_asdaCommunicationFailure", + "LSS_ccdbCommunicationFailure": "vCTS: LSS_ccdbCommunicationFailure", + "LSS_cpiCTS3xxFailRate": "vCTS: LSS_cpiCTS3xxFailRate", + "LSS_cpiCTS4xxFailRate": "vCTS: LSS_cpiCTS4xxFailRate", + "LSS_cpiCTS5xxFailRate": "vCTS: LSS_cpiCTS5xxFailRate", + "LSS_cpiCTS6xxFailRate": "vCTS: LSS_cpiCTS6xxFailRate", + "LSS_cpiCTSSIPRetransmitInvite": "vCTS: LSS_cpiCTSSIPRetransmitInvite", + "LSS_cpiCTSSIPRetransmitNonInvite": "vCTS: LSS_cpiCTSSIPRetransmitNonInvite", + "LSS_glsInvalidCellId": "vCTS: LSS_glsInvalidCellId", + "LSS_glsServerUnavailable": "vCTS: LSS_glsServerUnavailable", + "LSS_hlrSyncConnection": "vCTS: LSS_hlrSyncConnection", + "LSS_hlrSyncQueue": "vCTS: LSS_hlrSyncQueue", + "LSS_lispBufferFullExternalLIG": "vCTS: LSS_lispBufferFullExternalLIG", + "LSS_prdbConnectWithAlternateFailure": "vCTS: LSS_prdbConnectWithAlternateFailure", + "LSS_prdbSyncDataToAlternateFailure": "vCTS: LSS_prdbSyncDataToAlternateFailure", + "LSS_preAllocatedResourceOverload": "vCTS: LSS_preAllocatedResourceOverload", + "LSS_prifSocketError": "vCTS: LSS_prifSocketError", + "LSS_prsCallInstanceExceeded": "vCTS: LSS_prsCallInstanceExceeded", + "LSS_prsCpuOverload": "vCTS: LSS_prsCpuOverload", + "LSS_prsDatabaseMigrationFailure": "vCTS: LSS_prsDatabaseMigrationFailure", + "LSS_prsFailureToConnectWithPRDB": "vCTS: LSS_prsFailureToConnectWithPRDB", + "LSS_prsQueueExceeded": "vCTS: LSS_prsQueueExceeded", + "LSS_smdiSocketError": "vCTS: LSS_smdiSocketError", + "LSS_socketError": "vCTS: LSS_socketError", + "LSS_softwareComponentDown": "vCTS: LSS_softwareComponentDown", + "LSS_tlsInitError": "vCTS: LSS_tlsInitError", + "LSS_usageOfSyncTable": "vCTS: LSS_usageOfSyncTable", + "LSS_utHttpProxyConnectionDown ": "vCTS: LSS_utHttpProxyConnectionDown ", + "LSS_wpifSocketError": "vCTS: LSS_wpifSocketError", + "LSS_acrTemporaryBufferOverload": "vCTS: LSS_acrTemporaryBufferOverload", + "LSS_adnsExtendedTTLcaching": "vCTS: LSS_adnsExtendedTTLcaching", + "LSS_adnsQueryFailureCaching": "vCTS: LSS_adnsQueryFailureCaching", + "LSS_adnsQueueCongestion": "vCTS: LSS_adnsQueueCongestion", + "LSS_asdaRequestQueue": "vCTS: LSS_asdaRequestQueue", + "LSS_capacityLicenseKeyExpiration": "vCTS: LSS_capacityLicenseKeyExpiration", + "LSS_capacityLicenseKeyNearExpiration": "vCTS: LSS_capacityLicenseKeyNearExpiration", + "LSS_capacityLicenseKeyValidationError": "vCTS: LSS_capacityLicenseKeyValidationError", + "LSS_cardConnectionLost": "vCTS: LSS_cardConnectionLost", + "LSS_cpiAlrmCritical": "vCTS: LSS_cpiAlrmCritical", + "LSS_cpiAlrmMajor": "vCTS: LSS_cpiAlrmMajor", + "LSS_cpiAlrmMinor": "vCTS: LSS_cpiAlrmMinor", + "LSS_cpiAlrmWarning": "vCTS: LSS_cpiAlrmWarning", + "LSS_cpiAsrtEsc": "vCTS: LSS_cpiAsrtEsc", + "LSS_cpiAsrtNonEsc": "vCTS: LSS_cpiAsrtNonEsc", + "LSS_cpiAsrtNonEscCritical": "vCTS: LSS_cpiAsrtNonEscCritical", + "LSS_cpiAsrtNonEscMajor": "vCTS: LSS_cpiAsrtNonEscMajor", + "LSS_cpiAsrtNonEscMinor": "vCTS: LSS_cpiAsrtNonEscMinor", + "LSS_cpiAudErrCount": "vCTS: LSS_cpiAudErrCount", + "LSS_cpiAudManAct": "vCTS: LSS_cpiAudManAct", + "LSS_cpiAudNewEvent": "vCTS: LSS_cpiAudNewEvent", + "LSS_cpiCompleteRateAlarm": "vCTS: LSS_cpiCompleteRateAlarm", + "LSS_cpiDropMGAllocConnReq": "vCTS: LSS_cpiDropMGAllocConnReq", + "LSS_cpiDropRateAlarm": "vCTS: LSS_cpiDropRateAlarm", + "LSS_cpiExceptionService": "vCTS: LSS_cpiExceptionService", + "LSS_cpiFailRateAlarm": "vCTS: LSS_cpiFailRateAlarm", + "LSS_cpiFailSCTPFastRetransIncr": "vCTS: LSS_cpiFailSCTPFastRetransIncr", + "LSS_cpiFailSCTPFastRetransRate": "vCTS: LSS_cpiFailSCTPFastRetransRate", + "LSS_cpiFailSCTPSRTT1Incr": "vCTS: LSS_cpiFailSCTPSRTT1Incr", + "LSS_cpiFailSCTPSRTT2Incr": "vCTS: LSS_cpiFailSCTPSRTT2Incr", + "LSS_cpiFailSCTPT3RetransIncr": "vCTS: LSS_cpiFailSCTPT3RetransIncr", + "LSS_cpiFailSCTPT3RetransRate": "vCTS: LSS_cpiFailSCTPT3RetransRate", + "LSS_cpiFileSysUsage": "vCTS: LSS_cpiFileSysUsage", + "LSS_cpiMemAllocFail": "vCTS: LSS_cpiMemAllocFail", + "LSS_cpiNumOfLICDRDel": "vCTS: LSS_cpiNumOfLICDRDel", + "LSS_cpiReinitServiceSelf": "vCTS: LSS_cpiReinitServiceSelf", + "LSS_cpiSIPRetransmitInvite": "vCTS: LSS_cpiSIPRetransmitInvite", + "LSS_cpiSIPRetransmitNonInvite": "vCTS: LSS_cpiSIPRetransmitNonInvite", + "LSS_cpiSS7DropSCTPPktsRcvd": "vCTS: LSS_cpiSS7DropSCTPPktsRcvd", + "LSS_cpiSS7FailSCTPFastRetransRate": "vCTS: LSS_cpiSS7FailSCTPFastRetransRate", + "LSS_cpiStabilityAlarm": "vCTS: LSS_cpiStabilityAlarm", + "LSS_cpuOverload": "vCTS: LSS_cpuOverload", + "LSS_databaseConnectionLost": "vCTS: LSS_databaseConnectionLost", + "LSS_databaseReplicationLinkDown": "vCTS: LSS_databaseReplicationLinkDown", + "LSS_databaseSizeExhausted": "vCTS: LSS_databaseSizeExhausted", + "LSS_dbHighCpuUtilization": "vCTS: LSS_dbHighCpuUtilization", + "LSS_dbOffline": "vCTS: LSS_dbOffline", + "LSS_dbStatusUnexpected": "vCTS: LSS_dbStatusUnexpected", + "LSS_degradedResource": "vCTS: LSS_degradedResource", + "LSS_degrow": "vCTS: LSS_degrow", + "LSS_deviceServerCxnLost": "vCTS: LSS_deviceServerCxnLost", + "LSS_diamLinkDown": "vCTS: LSS_diamLinkDown", + "LSS_diamMaxClientsExceeded": "vCTS: LSS_diamMaxClientsExceeded", + "LSS_dnsThreshold": "vCTS: LSS_dnsThreshold", + "LSS_ethernetError": "vCTS: LSS_ethernetError", + "LSS_ethernetLinkDown": "vCTS: LSS_ethernetLinkDown", + "LSS_externalConnectivity": "vCTS: LSS_externalConnectivity", + "LSS_featureLicenseExpiration": "vCTS: LSS_featureLicenseExpiration", + "LSS_featureLicenseKeyNearExpiration": "vCTS: LSS_featureLicenseKeyNearExpiration", + "LSS_featureLockValidationError": "vCTS: LSS_featureLockValidationError", + "LSS_fqdnError": "vCTS: LSS_fqdnError", + "LSS_fru": "vCTS: LSS_fru", + "LSS_gatewayCongestion": "vCTS: LSS_gatewayCongestion", + "LSS_gatewayForcedOOS": "vCTS: LSS_gatewayForcedOOS", + "LSS_gatewayProvisioningError": "vCTS: LSS_gatewayProvisioningError", + "LSS_gatewayUnreachable": "vCTS: LSS_gatewayUnreachable", + "LSS_gatewayUnregistered": "vCTS: LSS_gatewayUnregistered", + "LSS_globalParameterNotFound": "vCTS: LSS_globalParameterNotFound", + "LSS_grow": "vCTS: LSS_grow", + "LSS_h248MessageBufferDepletion": "vCTS: LSS_h248MessageBufferDepletion", + "LSS_hostDown": "vCTS: LSS_hostDown", + "LSS_hostReset": "vCTS: LSS_hostReset", + "LSS_invalidGateway": "vCTS: LSS_invalidGateway", + "LSS_iriLinkDown": "vCTS: LSS_iriLinkDown", + "LSS_ldapServerConnectionLost": "vCTS: LSS_ldapServerConnectionLost", + "LSS_llcDown": "vCTS: LSS_llcDown", + "LSS_logicalLinkDown": "vCTS: LSS_logicalLinkDown", + "LSS_logicalLinkNotFound": "vCTS: LSS_logicalLinkNotFound", + "LSS_logRotateThreshold": "vCTS: LSS_logRotateThreshold", + "LSS_memoryOverload": "vCTS: LSS_memoryOverload", + "LSS_nodeConfigFailure": "vCTS: LSS_nodeConfigFailure", + "LSS_nodeGroupOOS": "vCTS: LSS_nodeGroupOOS", + "LSS_nodeOOS": "vCTS: LSS_nodeOOS", + "LSS_nonCompliantFaultGroupMemberState": "vCTS: LSS_nonCompliantFaultGroupMemberState", + "LSS_nonCsAddrChannelDepletion": "vCTS: LSS_nonCsAddrChannelDepletion", + "LSS_numberOfTuplesInUse": "vCTS: LSS_numberOfTuplesInUse", + "LSS_osSecInfoModificationDetected": "vCTS: LSS_osSecInfoModificationDetected", + "LSS_osSecInformationMissing": "vCTS: LSS_osSecInformationMissing", + "LSS_osSecUnexpectedInformation": "vCTS: LSS_osSecUnexpectedInformation", + "LSS_pdnsMySqlReplication": "vCTS: LSS_pdnsMySqlReplication", + "LSS_pktCorruptionDetectedViaRCCLANCheck": "vCTS: LSS_pktCorruptionDetectedViaRCCLANCheck", + "LSS_platformCommandFailure": "vCTS: LSS_platformCommandFailure", + "LSS_pmDataNotCollected": "vCTS: LSS_pmDataNotCollected", + "LSS_processDown": "vCTS: LSS_processDown", + "LSS_processNotStarted": "vCTS: LSS_processNotStarted", + "LSS_provisioningInhibitedMode": "vCTS: LSS_provisioningInhibitedMode", + "LSS_rccInhibitedMode": "vCTS: LSS_rccInhibitedMode", + "LSS_remotedbLinkDown": "vCTS: LSS_remotedbLinkDown", + "LSS_remoteQueryServerFailure": "vCTS: LSS_remoteQueryServerFailure", + "LSS_restore": "vCTS: LSS_restore", + "LSS_serviceCFGDataTimestampError": "vCTS: LSS_serviceCFGDataTimestampError", + "LSS_serviceCommCxnLost": "vCTS: LSS_serviceCommCxnLost", + "LSS_serviceOnewayCommunication": "vCTS: LSS_serviceOnewayCommunication", + "LSS_sheddingOverload": "vCTS: LSS_sheddingOverload", + "LSS_simxml": "vCTS: LSS_simxml", + "LSS_sipLinkSetMaxQuarantineList": "vCTS: LSS_sipLinkSetMaxQuarantineList", + "LSS_sipLinkSetUnavailable": "vCTS: LSS_sipLinkSetUnavailable", + "LSS_sipLinkUnavailable": "vCTS: LSS_sipLinkUnavailable", + "LSS_softwareAllocatedResourceOverload": "vCTS: LSS_softwareAllocatedResourceOverload", + "LSS_softwareComponentStandbyNotReady": "vCTS: LSS_softwareComponentStandbyNotReady", + "LSS_softwareLicense": "vCTS: LSS_softwareLicense", + "LSS_svcdegrow": "vCTS: LSS_svcdegrow", + "LSS_svcgrow": "vCTS: LSS_svcgrow", + "LSS_swVersionMismatch": "vCTS: LSS_swVersionMismatch", + "LSS_tftpDownloadCorrupt": "vCTS: LSS_tftpDownloadCorrupt", + "LSS_timeStampValueOutOfSystemRange": "vCTS: LSS_timeStampValueOutOfSystemRange", + "LSS_transactionHandlerBlockDepletion": "vCTS: LSS_transactionHandlerBlockDepletion", + "LSS_upgrade": "vCTS: LSS_upgrade", + "SYS_BackupFailure": "vCTS: SYS_BackupFailure", + "SYS_Configuration": "vCTS: SYS_Configuration", + "SYS_COTRecordTransferFailure": "vCTS: SYS_COTRecordTransferFailure", + "SYS_CPM_USERDATA_INCONSITENCY": "vCTS: SYS_CPM_USERDATA_INCONSITENCY", + "SYS_CPM_USERDATA_RESTORED": "vCTS: SYS_CPM_USERDATA_RESTORED", + "SYS_EventQueueCapacity": "vCTS: SYS_EventQueueCapacity", + "SYS_ICMPFailure": "vCTS: SYS_ICMPFailure", + "SYS_IPsecConfig": "vCTS: SYS_IPsecConfig", + "SYS_LinkDown": "vCTS: SYS_LinkDown", + "SYS_NotifyDisabled": "vCTS: SYS_NotifyDisabled", + "SYS_NotifyLocked": "vCTS: SYS_NotifyLocked", + "SYS_NumTL1MeasThresh": "vCTS: SYS_NumTL1MeasThresh", + "SYS_RADIUS_TO_LDAP_FAILURE": "vCTS: SYS_RADIUS_TO_LDAP_FAILURE", + "SYS_ROOT_ACCESS_DENIED": "vCTS: SYS_ROOT_ACCESS_DENIED", + "SYS_ROOT_FTP_VIOLATION": "vCTS: SYS_ROOT_FTP_VIOLATION", + "SYS_ROOT_LOGIN_VIOLATION": "vCTS: SYS_ROOT_LOGIN_VIOLATION", + "SYS_ROOT_SSH_LOGIN_VIOLATION": "vCTS: SYS_ROOT_SSH_LOGIN_VIOLATION", + "SYS_SetupAAAFailure": "vCTS: SYS_SetupAAAFailure", + "SYS_SNETrapOverload": "vCTS: SYS_SNETrapOverload", + "SYS_SNMPAuthenticationFailure": "vCTS: SYS_SNMPAuthenticationFailure", + "SYS_SNMPFailure": "vCTS: SYS_SNMPFailure", + "SYS_SU_TO_ROOT_FAILURE": "vCTS: SYS_SU_TO_ROOT_FAILURE", + "SYS_SYSTEMTrapOverload": "vCTS: SYS_SYSTEMTrapOverload", + "SYS_ThresholdCrossed": "vCTS: SYS_ThresholdCrossed", + "SYS_UndiscoveredObject": "vCTS: SYS_UndiscoveredObject", + "SYS_WriteAAAFailure": "vCTS: SYS_WriteAAAFailure", + "jnxSpaceDiskUsageRising": "vDBE-EMS-Juniper: jnxSpaceDiskUsageRising", + "jnxSpaceDiskUsageRisingCleared": "vDBE-EMS-Juniper: jnxSpaceDiskUsageRisingCleared", + "jnxSpaceSwapUsageRising": "vDBE-EMS-Juniper: jnxSpaceSwapUsageRising", + "jnxSpaceSwapUsageRisingCleared": "vDBE-EMS-Juniper: jnxSpaceSwapUsageRisingCleared", + "jnxSpaceCPULARising": "vDBE-EMS-Juniper: jnxSpaceCPULARising", + "jnxSpaceCPULARisingCleared": "vDBE-EMS-Juniper: jnxSpaceCPULARisingCleared", + "jnxSpaceWebpProxyProcessDown": "vDBE-EMS-Juniper: jnxSpaceWebpProxyProcessDown", + "jnxSpaceWebpProxyProcessUp": "vDBE-EMS-Juniper: jnxSpaceWebpProxyProcessUp", + "jnxSpaceNMAProcessDown": "vDBE-EMS-Juniper: jnxSpaceNMAProcessDown", + "jnxSpaceNMAProcessUp": "vDBE-EMS-Juniper: jnxSpaceNMAProcessUp", + "jnxSpaceJbossProcessDown": "vDBE-EMS-Juniper: jnxSpaceJbossProcessDown", + "jnxSpaceJbossProcessUp": "vDBE-EMS-Juniper: jnxSpaceJbossProcessUp", + "jnxSpaceMysqlProcessDown": "vDBE-EMS-Juniper: jnxSpaceMysqlProcessDown", + "jnxSpaceMysqlProcessUp": "vDBE-EMS-Juniper: jnxSpaceMysqlProcessUp", + "jnxSpacePostgresqlProcessDown": "vDBE-EMS-Juniper: jnxSpacePostgresqlProcessDown", + "jnxSpacePostgresqlProcessUp": "vDBE-EMS-Juniper: jnxSpacePostgresqlProcessUp", + "jnxSpaceWatchdogStopped": "vDBE-EMS-Juniper: jnxSpaceWatchdogStopped", + "jnxSpaceWatchdogStarted": "vDBE-EMS-Juniper: jnxSpaceWatchdogStarted", + "jnxSpaceSNAProcessDown": "vDBE-EMS-Juniper: jnxSpaceSNAProcessDown", + "jnxSpaceSNAProcessUp": "vDBE-EMS-Juniper: jnxSpaceSNAProcessUp", + "jnxSpaceNodeDown": "vDBE-EMS-Juniper: jnxSpaceNodeDown", + "jnxSpaceNodeUp": "vDBE-EMS-Juniper: jnxSpaceNodeUp", + " jnxSpaceNodeRemoval": "vDBE-EMS-Juniper: jnxSpaceNodeRemoval", + "jnxCmCfgChange": "vDBE-Juniper: jnxCmCfgChange", + "jnxCmRescueChange": "vDBE-Juniper: jnxCmRescueChange", + "jnxEventTrap": "vDBE-Juniper: jnxEventTrap", + "jnxJsFwAuthFailure": "vDBE-Juniper: jnxJsFwAuthFailure", + "jnxJsFwAuthServiceUp": "vDBE-Juniper: jnxJsFwAuthServiceUp", + "jnxJsFwAuthServiceDown": "vDBE-Juniper: jnxJsFwAuthServiceDown", + "jnxJsFwAuthCapacityExceeded": "vDBE-Juniper: jnxJsFwAuthCapacityExceeded", + "jnxJsIdpSignatureUpdate": "vDBE-Juniper: jnxJsIdpSignatureUpdate", + "jnxJsIdpAttackLog": "vDBE-Juniper: jnxJsIdpAttackLog", + "jnxJsSrcNatPoolThresholdStatus": "vDBE-Juniper: jnxJsSrcNatPoolThresholdStatus", + "jnxJsNatRuleThresholdStatus": "vDBE-Juniper: jnxJsNatRuleThresholdStatus", + "jnxJsScreenAttack": "vDBE-Juniper: jnxJsScreenAttack", + "jnxJsScreenCfgChange": "vDBE-Juniper: jnxJsScreenCfgChange", + "jnxJsAvPatternUpdateTrap": "vDBE-Juniper: jnxJsAvPatternUpdateTrap", + "jnxJsChassisClusterSwitchover": "vDBE-Juniper: jnxJsChassisClusterSwitchover", + "jnxJsChClusterIntfTrap": "vDBE-Juniper: jnxJsChClusterIntfTrap", + "jnxJsChClusterSpuMismatchTrap": "vDBE-Juniper: jnxJsChClusterSpuMismatchTrap", + "jnxJsChClusterWeightTrap": "vDBE-Juniper: jnxJsChClusterWeightTrap", + "jnxLicenseGraceExpired": "vDBE-Juniper: jnxLicenseGraceExpired", + "jnxLicenseGraceAboutToExpire": "vDBE-Juniper: jnxLicenseGraceAboutToExpire", + "jnxLicenseAboutToExpire": "vDBE-Juniper: jnxLicenseAboutToExpire", + "jnxLicenseInfringeCumulative": "vDBE-Juniper: jnxLicenseInfringeCumulative", + "jnxLicenseInfringeSingle": "vDBE-Juniper: jnxLicenseInfringeSingle", + "jnxNatAddrPoolThresholdStatus": "vDBE-Juniper: jnxNatAddrPoolThresholdStatus", + "jnxSyslogTrap": "vDBE-Juniper: jnxSyslogTrap", + "jnxAccessAuthServiceUp": "vDBE-Juniper: jnxAccessAuthServiceUp", + "jnxAccessAuthServiceDown": "vDBE-Juniper: jnxAccessAuthServiceDown", + "jnxAccessAuthServerDisabled": "vDBE-Juniper: jnxAccessAuthServerDisabled", + "jnxAccessAuthServerEnabled": "vDBE-Juniper: jnxAccessAuthServerEnabled", + "jnxAccessAuthAddressPoolHighThreshold": "vDBE-Juniper: jnxAccessAuthAddressPoolHighThreshold", + "jnxAccessAuthAddressPoolAbateThreshold": "vDBE-Juniper: jnxAccessAuthAddressPoolAbateThreshold", + "jnxAccessAuthAddressPoolOutOfAddresses": "vDBE-Juniper: jnxAccessAuthAddressPoolOutOfAddresses", + "jnxAccessAuthAddressPoolOutOfMemory": "vDBE-Juniper: jnxAccessAuthAddressPoolOutOfMemory", + "LEVEL_WARNING_CPU": "vMRF: LEVEL_WARNING_CPU", + "LEVEL_MAJOR_CPU": "vMRF: LEVEL_MAJOR_CPU", + "LEVEL_CRITICAL_CPU": "vMRF: LEVEL_CRITICAL_CPU", + "LEVEL_WARNING_MEM": "vMRF: LEVEL_WARNING_MEM", + "LEVEL_MAJOR_MEM": "vMRF: LEVEL_MAJOR_MEM", + "LEVEL_CRITICAL_MEM": "vMRF: LEVEL_CRITICAL_MEM", + "LEVEL_WARNING_DISK": "vMRF: LEVEL_WARNING_DISK", + "LEVEL_MAJOR_DISK": "vMRF: LEVEL_MAJOR_DISK", + "LEVEL_CRITICAL_DISK": "vMRF: LEVEL_CRITICAL_DISK", + "LEVEL_WARNING_RTPBANDWIDTH": "vMRF: LEVEL_WARNING_RTPBANDWIDTH", + "LEVEL_MAJOR_RTPBANDWIDTH": "vMRF: LEVEL_MAJOR_RTPBANDWIDTH", + "LEVEL_CRITICAL_RTPBANDWIDTH": "vMRF: LEVEL_CRITICAL_RTPBANDWIDTH", + "LEVEL_WARNING_RTPINPACKETLOSS": "vMRF: LEVEL_WARNING_RTPINPACKETLOSS", + "LEVEL_MAJOR_RTPINPACKETLOSS": "vMRF: LEVEL_MAJOR_RTPINPACKETLOSS", + "LEVEL_CRITICAL_RTPINPACKETLOSS": "vMRF: LEVEL_CRITICAL_RTPINPACKETLOSS", + "LEVEL_WARNING_RTPOUTPACKETLOSS": "vMRF: LEVEL_WARNING_RTPOUTPACKETLOSS", + "LEVEL_MAJOR_RTPOUTPACKETLOSS": "vMRF: LEVEL_MAJOR_RTPOUTPACKETLOSS", + "LEVEL_CRITICAL_RTPOUTPACKETLOSS": "vMRF: LEVEL_CRITICAL_RTPOUTPACKETLOSS", + "LEVEL_WARNING_TCPLOSTRETRANSMITRATE": "vMRF: LEVEL_WARNING_TCPLOSTRETRANSMITRATE", + "LEVEL_MAJOR_TCPLOSTRETRANSMITRATE": "vMRF: LEVEL_MAJOR_TCPLOSTRETRANSMITRATE", + "LEVEL_CRITICAL_TCPLOSTRETRANSMITRATE": "vMRF: LEVEL_CRITICAL_TCPLOSTRETRANSMITRATE", + "LEVEL_WARNING_TCPLOSSFAILURERATE": "vMRF: LEVEL_WARNING_TCPLOSSFAILURERATE", + "LEVEL_MAJOR_TCPLOSSFAILURERATE": "vMRF: LEVEL_MAJOR_TCPLOSSFAILURERATE", + "LEVEL_CRITICAL_TCPLOSSFAILURERATE": "vMRF: LEVEL_CRITICAL_TCPLOSSFAILURERATE", + "LEVEL_CRITICAL_RTPLINKDOWN": "vMRF: LEVEL_CRITICAL_RTPLINKDOWN", + "TARGET_REACHABLE": "vMRF: TARGET_REACHABLE", + "PUBLICATION_ERROR": "vMRF: PUBLICATION_ERROR", + "REMOTE_SERVER_SYNCHRONIZATION_ERROR": "vMRF: REMOTE_SERVER_SYNCHRONIZATION_ERROR", + "TRANSCODER_TOOL_EXEC_ERROR": "vMRF: TRANSCODER_TOOL_EXEC_ERROR", + "CLIENT_SYNCHRONIZATION_ERROR": "vMRF: CLIENT_SYNCHRONIZATION_ERROR", + "CLUSTER_UNREACHABLE": "vMRF: CLUSTER_UNREACHABLE", + "REMOTE_NODE_OFFLINE": "vMRF: REMOTE_NODE_OFFLINE", + "IPADDR_STOPPED": "vMRF: IPADDR_STOPPED", + "MRFC_STOPPED": "vMRF: MRFC_STOPPED", + "MNGT_STOPPED": "vMRF: MNGT_STOPPED", + "IPADDR_STARTED": "vMRF: IPADDR_STARTED", + "MRFC_STARTED": "vMRF: MRFC_STARTED", + "MNGT_STARTED": "vMRF: MNGT_STARTED", + "VOLATTACH_FAILED": "vMRF: VOLATTACH_FAILED", + "VOLDETACH_FAILED": "vMRF: VOLDETACH_FAILED", + "VOLDEL": "vMRF: VOLDEL", + "VOLCORRUPT": "vMRF: VOLCORRUPT", + "VOLFOREIGN": "vMRF: VOLFOREIGN", + "ACTIVE_ALARM_TABLE_PURGE": "vMRF: ACTIVE_ALARM_TABLE_PURGE", + "GENERIC_FORMER_STATELESS": "vMRF: GENERIC_FORMER_STATELESS", + "GENERIC_FORMER_STATEFUL": "vMRF: GENERIC_FORMER_STATEFUL", + "NO_MORE_ALARM_DESCRIPTION": "vMRF: NO_MORE_ALARM_DESCRIPTION", + "SERVICE_PROCESS_ENDS": "vMRF: SERVICE_PROCESS_ENDS", + "DEFENSE_STOPPED": "vMRF: DEFENSE_STOPPED", + "USER_ACCOUNT_LOCKED": "vMRF: USER_ACCOUNT_LOCKED", + "CONNECTION_SQL_NOT_ESTABLISHED": "vMRF: CONNECTION_SQL_NOT_ESTABLISHED", + "FALSE_ALARM": "vMRF: FALSE_ALARM", + "RADIUS SERVER HS": "vMRF: RADIUS SERVER HS", + "DRM_PACKAGER_IS_NOT_AVAILABLE": "vMRF: DRM_PACKAGER_IS_NOT_AVAILABLE", + "DRM_LICENSE_BUILDER_IS_NOT_AVAILABLE": "vMRF: DRM_LICENSE_BUILDER_IS_NOT_AVAILABLE", + "ERROR_WHILE_CREATING_PLAYLIST_MANAGER_FILE": "vMRF: ERROR_WHILE_CREATING_PLAYLIST_MANAGER_FILE", + "ERROR_WHILE_BUILDING_PLAYLIST_XML_REPRESENTATION": "vMRF: ERROR_WHILE_BUILDING_PLAYLIST_XML_REPRESENTATION", + "PLAYLIST_FILE_TO_PUBLISH_NOT_FOUND": "vMRF: PLAYLIST_FILE_TO_PUBLISH_NOT_FOUND", + "COULD_NOT_CONNECT_TO_PVNS_SERVER": "vMRF: COULD_NOT_CONNECT_TO_PVNS_SERVER", + "HTTP_OR_HTTPCLIENT_EXCEPTION_HAS_OCCURRED": "vMRF: HTTP_OR_HTTPCLIENT_EXCEPTION_HAS_OCCURRED", + "I/O_ERROR_WHILE_PUBLISHING_PLAYLIST_FILE": "vMRF: I/O_ERROR_WHILE_PUBLISHING_PLAYLIST_FILE", + "ERROR_WHILE_REQUESTING_SDP_FILE": "vMRF: ERROR_WHILE_REQUESTING_SDP_FILE", + "ERROR_WHILE_REQUESTING_SDP_FILE:_REMOTE_EXCEPTION": "vMRF: ERROR_WHILE_REQUESTING_SDP_FILE:_REMOTE_EXCEPTION", + "NO_STREAMING_RESOURCES": "vMRF: NO_STREAMING_RESOURCES", + "NO_STREAMING_MODULES_REGISTERED": "vMRF: NO_STREAMING_MODULES_REGISTERED", + "SM_FAILURE": "vMRF: SM_FAILURE", + "MISSING_FILE_OR_ENCODER": "vMRF: MISSING_FILE_OR_ENCODER", + "INVALID_RANGE": "vMRF: INVALID_RANGE", + "THRESHOLD_VALUE_EXCEEDED": "vMRF: THRESHOLD_VALUE_EXCEEDED", + "TICKET_QUEUE_FULL": "vMRF: TICKET_QUEUE_FULL", + "PARSING_INITIALIZATION_EXCEPTION": "vMRF: PARSING_INITIALIZATION_EXCEPTION", + "CUSTOMERCARE_INTERNAL_EXCEPTION": "vMRF: CUSTOMERCARE_INTERNAL_EXCEPTION", + "PARSING_EXCEPTION": "vMRF: PARSING_EXCEPTION", + "I/O_PROBLEM": "vMRF: I/O_PROBLEM", + "INEXISTENT_FILE_OR_FOLDER": "vMRF: INEXISTENT_FILE_OR_FOLDER", + "FILE_NOT_IN_XML_FORMAT": "vMRF: FILE_NOT_IN_XML_FORMAT", + "SERVICE_STATE_CHANGE": "vMRF: SERVICE_STATE_CHANGE", + "MONITORED_FILE_UPDATE_ERROR": "vMRF: MONITORED_FILE_UPDATE_ERROR", + "MONITORED_RPM_DELETED_ERROR": "vMRF: MONITORED_RPM_DELETED_ERROR", + "MONITORED_RPM_ADDED_ERROR": "vMRF: MONITORED_RPM_ADDED_ERROR", + "MONITORED_CHMOD_ERROR": "vMRF: MONITORED_CHMOD_ERROR", + "MONITORED_CHOWN_ERROR": "vMRF: MONITORED_CHOWN_ERROR", + "PASSWD_ROOT_ERROR": "vMRF: PASSWD_ROOT_ERROR", + "PASSWD_ERROR": "vMRF: PASSWD_ERROR", + "ROOTKIT_ERROR": "vMRF: ROOTKIT_ERROR", + "STARTUP_ERR_UNDEFINED_PORT": "vMRF: STARTUP_ERR_UNDEFINED_PORT", + "STARTUP_ERR_FAIL_FIND_HOSTNAME": "vMRF: STARTUP_ERR_FAIL_FIND_HOSTNAME", + "STARTUP_ERR_CF_MISSING": "vMRF: STARTUP_ERR_CF_MISSING", + "STARTUP_ERR_FAILED_TO_OPEN_CF": "vMRF: STARTUP_ERR_FAILED_TO_OPEN_CF", + "STARTUP_ERR_FAILED_TO_BIND_PORT": "vMRF: STARTUP_ERR_FAILED_TO_BIND_PORT", + "STARTUP_ERR_CFG_UNIT_MISSING": "vMRF: STARTUP_ERR_CFG_UNIT_MISSING", + "MCTR_INVALID_CODEC_NAME": "vMRF: MCTR_INVALID_CODEC_NAME", + "RTSP_SERVER_FAILURE": "vMRF: RTSP_SERVER_FAILURE", + "RTSP_SERVER_QUARANTINE": "vMRF: RTSP_SERVER_QUARANTINE", + "TRANSCODING_FAILURE": "vMRF: TRANSCODING_FAILURE", + "FILE_CACHE_FAILURE": "vMRF: FILE_CACHE_FAILURE", + "STARTUP_ERROR_INITIALIZATION_FAILED": "vMRF: STARTUP_ERROR_INITIALIZATION_FAILED", + "CONFERENCE_FAILURE": "vMRF: CONFERENCE_FAILURE", + "PLC_DEGRADATION_LOW": "vMRF: PLC_DEGRADATION_LOW", + "PLC_DEGRADATION_MEDIUM": "vMRF: PLC_DEGRADATION_MEDIUM", + "PLC_DEGRADATION_HIGH": "vMRF: PLC_DEGRADATION_HIGH", + "AUDIO_RESYNCH_LOW": "vMRF: AUDIO_RESYNCH_LOW", + "AUDIO_RESYNCH_MEDIUM": "vMRF: AUDIO_RESYNCH_MEDIUM", + "AUDIO_RESYNCH_HIGH": "vMRF: AUDIO_RESYNCH_HIGH", + "VIDEO_RESYNCH_LOW": "vMRF: VIDEO_RESYNCH_LOW", + "VIDEO_RESYNCH_MEDIUM": "vMRF: VIDEO_RESYNCH_MEDIUM", + "VIDEO_RESYNCH_HIGH": "vMRF: VIDEO_RESYNCH_HIGH", + "PLAY_FAILURES_LOW": "vMRF: PLAY_FAILURES_LOW", + "PLAY_FAILURES_MEDIUM": "vMRF: PLAY_FAILURES_MEDIUM", + "PLAY_FAILURES_HIGH": "vMRF: PLAY_FAILURES_HIGH", + "NOT_ENOUGH_FREE_CONFEREE": "vMRF: NOT_ENOUGH_FREE_CONFEREE", + "NO_LONGER_FREE_CONFERENCE_ROOM": "vMRF: NO_LONGER_FREE_CONFERENCE_ROOM", + "STARTUP_ERROR_FAIL_TO_READ_CF": "vMRF: STARTUP_ERROR_FAIL_TO_READ_CF", + "STARTUP_ERROR_SIP_ADAPTER_INIT": "vMRF: STARTUP_ERROR_SIP_ADAPTER_INIT", + "STARTUP_ERROR_MONITORING_INIT": "vMRF: STARTUP_ERROR_MONITORING_INIT", + "REGISTER_ERROR_FAILURE": "vMRF: REGISTER_ERROR_FAILURE", + "DRI_ERROR_FAILURE": "vMRF: DRI_ERROR_FAILURE", + "STARTUP_ERROR_STACK_CONFIGURATION": "vMRF: STARTUP_ERROR_STACK_CONFIGURATION", + "STARTUP_ERROR_CONF": "vMRF: STARTUP_ERROR_CONF", + "STARTUP_ERROR_UNDEFINED_PORT": "vMRF: STARTUP_ERROR_UNDEFINED_PORT", + "HOST_REMOVED": "vMRF: HOST_REMOVED", + "INTERCEPT_THRESHOLD_NB_DIALOG_ALLOCATED": "vMRF: INTERCEPT_THRESHOLD_NB_DIALOG_ALLOCATED", + "STARTUP_ERROR_STACK_CONF": "vMRF: STARTUP_ERROR_STACK_CONF", + "STARTUP_ERROR_CONFIGURATION": "vMRF: STARTUP_ERROR_CONFIGURATION", + "STARTUP_ERROR_FAILED_TO_RETRIEVE_HOSTNAME": "vMRF: STARTUP_ERROR_FAILED_TO_RETRIEVE_HOSTNAME", + "LEVEL_WARNING_CALL": "vMRF: LEVEL_WARNING_CALL", + "LEVEL_ALARM_MINOR_CALL": "vMRF: LEVEL_ALARM_MINOR_CALL", + "LEVEL_ALARM_MAJOR_CALL": "vMRF: LEVEL_ALARM_MAJOR_CALL", + "LEVEL_ALARM_MRFPoutOfService": "vMRF: LEVEL_ALARM_MRFPoutOfService", + "MRFP_CALL_REJECTED_Threshold #1": "vMRF: MRFP_CALL_REJECTED_Threshold #1", + "MRFP_CALL_REJECTED_Threshold #2": "vMRF: MRFP_CALL_REJECTED_Threshold #2", + "MRFP_CALL_REJECTED_Threshold #3": "vMRF: MRFP_CALL_REJECTED_Threshold #3", + "MRFP_CALL_RETRIED_Threshold #1": "vMRF: MRFP_CALL_RETRIED_Threshold #1", + "MRFP_CALL_RETRIED_Threshold #2": "vMRF: MRFP_CALL_RETRIED_Threshold #2", + "MRFP_CALL_RETRIED_Threshold #3": "vMRF: MRFP_CALL_RETRIED_Threshold #3", + "STARTUP_PUB_FILE_NOT_PRESENT": "vMRF: STARTUP_PUB_FILE_NOT_PRESENT", + "STARTUP_INF_FILE_NOT_PRESENT": "vMRF: STARTUP_INF_FILE_NOT_PRESENT", + "STARTUP_LIC_FILE_NOT_PRESENT": "vMRF: STARTUP_LIC_FILE_NOT_PRESENT", + "GENERIC_HARDWARE_PROBLEM": "vMRF: GENERIC_HARDWARE_PROBLEM", + "HARD_DRIVE_PROBLEM": "vMRF: HARD_DRIVE_PROBLEM", + "NETWORK_LINK_PROBLEM": "vMRF: NETWORK_LINK_PROBLEM", + "POWER_SUPPLY_PROBLEM": "vMRF: POWER_SUPPLY_PROBLEM", + "SMART_HARD_DRIVE_PROBLEM": "vMRF: SMART_HARD_DRIVE_PROBLEM", + "STARTUP_ERROR": "vMRF: STARTUP_ERROR", + "RESOURCE_NOT_ACCESSIBLE": "vMRF: RESOURCE_NOT_ACCESSIBLE", + "RESOURCE_ACCESSIBLE": "vMRF: RESOURCE_ACCESSIBLE", + "RESOURCE_FULL": "vMRF: RESOURCE_FULL", + "DRI_ALARM": "vMRF: DRI_ALARM", + "REGISTER_ERROR_CCF": "vMRF: REGISTER_ERROR_CCF", + "REGISTER_ERROR_EXTERNAL": "vMRF: REGISTER_ERROR_EXTERNAL", + "TIMEOUT_ERROR": "vMRF: TIMEOUT_ERROR", + "VXML_ERROR": "vMRF: VXML_ERROR", + "A Network Element is no longer available due to a connection failure": "vMVM: A Network Element is no longer available due to a connection failure", + "A MetaSphere server is reporting a fault with the configuration of its connection to MetaView": "vMVM: A MetaSphere server is reporting a fault with the configuration of its connection to MetaView", + "Configured OBS IPs don't match available OBS nodes. Configured but unavailable nodes include: []. Real nodes not configured include: []": "vMVM: Configured OBS IPs don't match available OBS nodes. Configured but unavailable nodes include: []. Real nodes not configured include: []", + "Service Assurance Server cannot be contacted": "vMVM: Service Assurance Server cannot be contacted", + "The primary MetaView Director has lost contact with the backup MetaView Director": "vMVM: The primary MetaView Director has lost contact with the backup MetaView Director", + "The active server has lost connection to the standby": "vMVM: The active server has lost connection to the standby", + "CrashCounter": "vprobes-vBE-Processing: CrashCounter", + "IsAlive": "vprobes-vBE-Processing: IsAlive", + "SwRestart": "vprobes-vLB: SwRestart", + "Repeated exceptions have occurred.": "vSBC-Metaswitch: Repeated exceptions have occurred.", + "A licensing limit is close to capacity.": "vSBC-Metaswitch: A licensing limit is close to capacity.", + "One or more feature packs have been breached.": "vSBC-Metaswitch: One or more feature packs have been breached.", + "The grace period on this Perimeta system will expire in less than 48 hours, after which calls will not be processed.": "vSBC-Metaswitch: The grace period on this Perimeta system will expire in less than 48 hours, after which calls will not be processed.", + "The grace period on this Perimeta system will expire in less than 7 days, after which calls will not be processed.": "vSBC-Metaswitch: The grace period on this Perimeta system will expire in less than 7 days, after which calls will not be processed.", + "The license on this Perimeta system will expire in less than 4 weeks.": "vSBC-Metaswitch: The license on this Perimeta system will expire in less than 4 weeks.", + "A Perimeta blade has become unlicensed.": "vSBC-Metaswitch: A Perimeta blade has become unlicensed.", + "Perimeta is licensed with a bypass certificate, which is valid until the time displayed.": "vSBC-Metaswitch: Perimeta is licensed with a bypass certificate, which is valid until the time displayed.", + "The number of licensed instances exceeded a threshold of the licensed limit.": "vSBC-Metaswitch: The number of licensed instances exceeded a threshold of the licensed limit.", + "The software token on the primary Distributed Capacity Manager will expire on the displayed date.": "vSBC-Metaswitch: The software token on the primary Distributed Capacity Manager will expire on the displayed date.", + "A capacity limit on the license installed on this Perimeta system does not match the largest limit across all systems in the deployment.": "vSBC-Metaswitch: A capacity limit on the license installed on this Perimeta system does not match the largest limit across all systems in the deployment.", + "An adjacency has voice quality alerts.": "vSBC-Metaswitch: An adjacency has voice quality alerts.", + "The number of calls being audited is congested.": "vSBC-Metaswitch: The number of calls being audited is congested.", + "Session Controller is rejecting calls because there is no valid active call policy set configured.": "vSBC-Metaswitch: Session Controller is rejecting calls because there is no valid active call policy set configured.", + "A call policy set is inactive because it has been misconfigured.": "vSBC-Metaswitch: A call policy set is inactive because it has been misconfigured.", + "Session Controller is inactive and rejecting calls.": "vSBC-Metaswitch: Session Controller is inactive and rejecting calls.", + "Sources have breached minor or major blacklist thresholds.": "vSBC-Metaswitch: Sources have breached minor or major blacklist thresholds.", + "Sources are blacklisted.": "vSBC-Metaswitch: Sources are blacklisted.", + "The blacklisting configuration will change as a result of upgrade and some configured blacklists or alerts will no longer be applied.": "vSBC-Metaswitch: The blacklisting configuration will change as a result of upgrade and some configured blacklists or alerts will no longer be applied.", + "A large number of downgrades and bans have been created as a result of blacklisting.": "vSBC-Metaswitch: A large number of downgrades and bans have been created as a result of blacklisting.", + "Session Controller is unable to track further sources for blacklisting.": "vSBC-Metaswitch: Session Controller is unable to track further sources for blacklisting.", + "A software protection switch was triggered.": "vSBC-Metaswitch: A software protection switch was triggered.", + "A disk area on a processor blade is nearly full.": "vSBC-Metaswitch: A disk area on a processor blade is nearly full.", + "Memory use is very high.": "vSBC-Metaswitch: Memory use is very high.", + "The primary processor-blade has lost contact with the backup.": "vSBC-Metaswitch: The primary processor-blade has lost contact with the backup.", + "An efix or patch has been applied to this system containing diagnostic versions of some software libraries.": "vSBC-Metaswitch: An efix or patch has been applied to this system containing diagnostic versions of some software libraries.", + "A software protection switch (SPS) was triggered. Call and registration state was lost.": "vSBC-Metaswitch: A software protection switch (SPS) was triggered. Call and registration state was lost.", + "The Ethernet Heartbeat between primary and backup processors has failed.": "vSBC-Metaswitch: The Ethernet Heartbeat between primary and backup processors has failed.", + "The Backplane Heartbeat between primary and backup processors has failed.": "vSBC-Metaswitch: The Backplane Heartbeat between primary and backup processors has failed.", + "A disk area on a processor blade reported an error.": "vSBC-Metaswitch: A disk area on a processor blade reported an error.", + "The system is upgrading.": "vSBC-Metaswitch: The system is upgrading.", + "An error with NTP functionality has been detected.": "vSBC-Metaswitch: An error with NTP functionality has been detected.", + "One or more users are locked out of the system.": "vSBC-Metaswitch: One or more users are locked out of the system.", + "The Craft Terminal user FTP directory on a processor blade is nearly full.": "vSBC-Metaswitch: The Craft Terminal user FTP directory on a processor blade is nearly full.", + "A scheduled configuration snapshot has failed.": "vSBC-Metaswitch: A scheduled configuration snapshot has failed.", + "The Session Controller is stopping as a result of administrator action.": "vSBC-Metaswitch: The Session Controller is stopping as a result of administrator action.", + "A Session Controller processor blade is stopping as a result of administrator action.": "vSBC-Metaswitch: A Session Controller processor blade is stopping as a result of administrator action.", + "An object could not be activated because its service address does not exist or is not fully specified.": "vSBC-Metaswitch: An object could not be activated because its service address does not exist or is not fully specified.", + "The hardware on a processor does not meet minimum requirements.": "vSBC-Metaswitch: The hardware on a processor does not meet minimum requirements.", + "The hardware expectations of the two processors are not the same.": "vSBC-Metaswitch: The hardware expectations of the two processors are not the same.", + "The read speed of the main hard disk on a processor blade is too slow.": "vSBC-Metaswitch: The read speed of the main hard disk on a processor blade is too slow.", + "An error has occurred reading from the hard disk on a processor blade.": "vSBC-Metaswitch: An error has occurred reading from the hard disk on a processor blade.", + "Backup and primary processor-blades have an inconsistent system role.": "vSBC-Metaswitch: Backup and primary processor-blades have an inconsistent system role.", + "Event: The system encountered a critical error and had to restart.": "vSBC-Metaswitch: Event: The system encountered a critical error and had to restart.", + "Event: A RADIUS server failed to respond to an authentication request.": "vSBC-Metaswitch: Event: A RADIUS server failed to respond to an authentication request.", + "Event: All configured RADIUS servers failed to respond to authentication requests.": "vSBC-Metaswitch: Event: All configured RADIUS servers failed to respond to authentication requests.", + "Event: The number of CPUs has changed.": "vSBC-Metaswitch: Event: The number of CPUs has changed.", + "Event: A user has been automatically deleted": "vSBC-Metaswitch: Event: A user has been automatically deleted", + "The primary processor blade has lost management connectivity": "vSBC-Metaswitch: The primary processor blade has lost management connectivity", + "Event: A processor blade is running with DPDK mode disabled when DPDK mode is,expected.": "vSBC-Metaswitch: Event: A processor blade is running with DPDK mode disabled when DPDK mode is,expected.", + "Event: Processor blade %1 is running with DPDK mode disabled when DPDK mode may be possible.": "vSBC-Metaswitch: Event: Processor blade %1 is running with DPDK mode disabled when DPDK mode may be possible.", + "Perimeta is attempting to resend cached billing records.": "vSBC-Metaswitch: Perimeta is attempting to resend cached billing records.", + "The Rf billing cache is full.": "vSBC-Metaswitch: The Rf billing cache is full.", + "The inbound call queue is congested.": "vSBC-Metaswitch: The inbound call queue is congested.", + "A configured realm group contains realms that are not available to the SBC.": "vSBC-Metaswitch: A configured realm group contains realms that are not available to the SBC.", + "An allowed MSC configuration is not connected to any physical MSCs.": "vSBC-Metaswitch: An allowed MSC configuration is not connected to any physical MSCs.", + "An adjacency has failed as the listen socket could not be created. Check for configuration mismatches with the associated service interface.": "vSBC-Metaswitch: An adjacency has failed as the listen socket could not be created. Check for configuration mismatches with the associated service interface.", + "No suitable DNS records were found for a peer group's DNS hostname.": "vSBC-Metaswitch: No suitable DNS records were found for a peer group's DNS hostname.", + "One or more SIP peers from a peer group have stopped responding to SIP OPTIONS pings": "vSBC-Metaswitch: One or more SIP peers from a peer group have stopped responding to SIP OPTIONS pings", + "An adjacency has failed as its service network does not match the service network on its associated peer group.": "vSBC-Metaswitch: An adjacency has failed as its service network does not match the service network on its associated peer group.", + "An adjacency has failed as its configured TLS certificate could not be found.": "vSBC-Metaswitch: An adjacency has failed as its configured TLS certificate could not be found.", + "The caching function has not been initialized properly.": "vSBC-Metaswitch: The caching function has not been initialized properly.", + "An adjacency has failed as the listen socket could not be created.": "vSBC-Metaswitch: An adjacency has failed as the listen socket could not be created.", + "An adjacency is congested and may be rejecting calls.": "vSBC-Metaswitch: An adjacency is congested and may be rejecting calls.", + "There is an issue with a Diameter peer.": "vSBC-Metaswitch: There is an issue with a Diameter peer.", + "A realm is no longer reachable via any configured peers.": "vSBC-Metaswitch: A realm is no longer reachable via any configured peers.", + "An FQDN for a configured Diameter peer has failed to resolve to a valid IP address.": "vSBC-Metaswitch: An FQDN for a configured Diameter peer has failed to resolve to a valid IP address.", + "One or more peers resolved from a DNS lookup of a configured peer's address cannot be contacted": "vSBC-Metaswitch: One or more peers resolved from a DNS lookup of a configured peer's address cannot be contacted", + "An interface ARP or NDP probe has failed.": "vSBC-Metaswitch: An interface ARP or NDP probe has failed.", + "One or more IP address conflicts have been detected on service interfaces with zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.": "vSBC-Metaswitch: One or more IP address conflicts have been detected on service interfaces with zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.", + "One or more IP address conflicts have been detected on service interfaces with non-zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.": "vSBC-Metaswitch: One or more IP address conflicts have been detected on service interfaces with non-zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.", + "An interface device is running below the expected speed. This alarm was originally triggered by a probe failure on a service interface.": "vSBC-Metaswitch: An interface device is running below the expected speed. This alarm was originally triggered by a probe failure on a service interface.", + "An interface device is running above the expected speed.": "vSBC-Metaswitch: An interface device is running above the expected speed.", + "An IP address conflict has been detected on a management interface.": "vSBC-Metaswitch: An IP address conflict has been detected on a management interface.", + "An interface ICMP probe has failed.": "vSBC-Metaswitch: An interface ICMP probe has failed.", + "A High-Availability link has detected a connectivity issue.": "vSBC-Metaswitch: A High-Availability link has detected a connectivity issue.", + "An HA-link device is being reported as underspeed.": "vSBC-Metaswitch: An HA-link device is being reported as underspeed.", + "An IP address conflict has been detected on a replication interface.": "vSBC-Metaswitch: An IP address conflict has been detected on a replication interface.", + "The Session Controller has started.": "vSBC-Metaswitch: The Session Controller has started.", + "A statistic exceeded its configured thresholds.": "vSBC-Metaswitch: A statistic exceeded its configured thresholds.", + "One or more statistic has not been retrieved at least 3 times in a row.": "vSBC-Metaswitch: One or more statistic has not been retrieved at least 3 times in a row.", + "A Refresh Alarms request was triggered. Alarms not re-raised will be cleared in 5 minutes.": "vSBC-Metaswitch: A Refresh Alarms request was triggered. Alarms not re-raised will be cleared in 5 minutes.", + "A statistic has exceeded its configured thresholds.": "vSBC-Metaswitch: A statistic has exceeded its configured thresholds.", + "A Fallback Operation will soon be started": "vSBG: A Fallback Operation will soon be started", + "BRM, Auto Export Backup Failed": "vSBG: BRM, Auto Export Backup Failed", + "BRM, Scheduled Backup Failed": "vSBG: BRM, Scheduled Backup Failed", + "COM SA, AMF Component Cleanup Failed": "vSBG: COM SA, AMF Component Cleanup Failed", + "COM SA, AMF Component Instantiation Failed": "vSBG: COM SA, AMF Component Instantiation Failed", + "COM SA, AMF SI Unassigned": "vSBG: COM SA, AMF SI Unassigned", + "COM SA, CLM Cluster Node Unavailable": "vSBG: COM SA, CLM Cluster Node Unavailable", + "COM SA, MDF Detected Model Error": "vSBG: COM SA, MDF Detected Model Error", + "COM SA, Proxy Status of a Component Changed to Unproxied": "vSBG: COM SA, Proxy Status of a Component Changed to Unproxied", + "File Management, Number of Files in FileGroup Exceeded": "vSBG: File Management, Number of Files in FileGroup Exceeded", + "File Management, Max Size in FileGroup Exceeded": "vSBG: File Management, Max Size in FileGroup Exceeded", + "LOTC Disk Replication Communication": "vSBG: LOTC Disk Replication Communication", + "LOTC Disk Replication Consistency": "vSBG: LOTC Disk Replication Consistency", + "LOTC Disk Usage": "vSBG: LOTC Disk Usage", + "LOTC memory Usage": "vSBG: LOTC memory Usage", + "LOTC Time Synchronization": "vSBG: LOTC Time Synchronization", + "SBG, BGF Control Link Down": "vSBG: SBG, BGF Control Link Down", + "SBG, BGF Control Link Disabled": "vSBG: SBG, BGF Control Link Disabled", + "SBG, BGF Control Link Enabled": "vSBG: SBG, BGF Control Link Enabled", + "SBG, BGF Control Link Remote Locked": "vSBG: SBG, BGF Control Link Remote Locked", + "SBG, Charging Data Storage Maximum Records Reached": "vSBG: SBG, Charging Data Storage Maximum Records Reached", + "SBG, Charging Server Rejects Charging Data": "vSBG: SBG, Charging Server Rejects Charging Data", + "SBG, Excessive Packet Rate Detected ": "vSBG: SBG, Excessive Packet Rate Detected ", + "SBG, High Amount of Malformed Packets Received": "vSBG: SBG, High Amount of Malformed Packets Received", + "SBG, High Amount of STUN Packets Detected": "vSBG: SBG, High Amount of STUN Packets Detected", + "SBG, High Amount of TCP SYN Packets Received": "vSBG: SBG, High Amount of TCP SYN Packets Received", + "SBG, High Amount of UDP Packets Received ": "vSBG: SBG, High Amount of UDP Packets Received ", + "SBG, IP Address Blocked Due to Excessive Packet Rate": "vSBG: SBG, IP Address Blocked Due to Excessive Packet Rate", + "SBG, Lost Connectivity to Diameter Server": "vSBG: SBG, Lost Connectivity to Diameter Server", + "SBG, Mated Pair out of Service": "vSBG: SBG, Mated Pair out of Service", + "SBG, Network Unavailable for Media Handling": "vSBG: SBG, Network Unavailable for Media Handling", + "SBG, Non-emergency Call Released to Free Resources for Emergency Call": "vSBG: SBG, Non-emergency Call Released to Free Resources for Emergency Call", + "SBG, Not Enough Disk Space for Storing Charging Data": "vSBG: SBG, Not Enough Disk Space for Storing Charging Data", + "SBG, Payload Mated Pair Failure": "vSBG: SBG, Payload Mated Pair Failure", + "SBG, Payload Processor Failure": "vSBG: SBG, Payload Processor Failure", + "SBG, Processor Overloaded": "vSBG: SBG, Processor Overloaded", + "SBG, Registered User Set in Quarantine": "vSBG: SBG, Registered User Set in Quarantine", + "SBG, Registration Contacts Exceed Configured Threshold": "vSBG: SBG, Registration Contacts Exceed Configured Threshold", + "SBG, Sequential Restart Initiated": "vSBG: SBG, Sequential Restart Initiated", + "SBG, SIP Abuse Detected": "vSBG: SBG, SIP Abuse Detected", + "SBG, SIP Network Locked": "vSBG: SBG, SIP Network Locked", + "SBG, SIP Next Hop Reachable": "vSBG: SBG, SIP Next Hop Reachable", + "SBG, SIP Next Hop Unreachable": "vSBG: SBG, SIP Next Hop Unreachable", + "SBG, SIP Request Rejected by Network Throttling": "vSBG: SBG, SIP Request Rejected by Network Throttling", + "SBG, TLS Certificate Imported": "vSBG: SBG, TLS Certificate Imported", + "SBG, Trace Recording Session Number Limit Reached": "vSBG: SBG, Trace Recording Session Number Limit Reached", + "SBG, Trace Session Deactivated": "vSBG: SBG, Trace Session Deactivated", + "SBG, Trace Session Times Out": "vSBG: SBG, Trace Session Times Out", + "SBG, Unknown Media Type or Payload Type": "vSBG: SBG, Unknown Media Type or Payload Type" +} diff --git a/src/main/resources/clds/templates/ui-location-default.json b/src/main/resources/clds/templates/ui-location-default.json new file mode 100644 index 000000000..c0043d988 --- /dev/null +++ b/src/main/resources/clds/templates/ui-location-default.json @@ -0,0 +1,5 @@ +{ + "DC1": "Data Center 1", + "DC2": "Data Center 2", + "DC3": "Data Center 3" +} diff --git a/src/test/java/org/onap/clamp/clds/it/config/CldsReferencePropertiesItCase.java b/src/test/java/org/onap/clamp/clds/it/config/CldsReferencePropertiesItCase.java index 79b26111f..484a13e60 100644 --- a/src/test/java/org/onap/clamp/clds/it/config/CldsReferencePropertiesItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/config/CldsReferencePropertiesItCase.java @@ -59,6 +59,7 @@ public class CldsReferencePropertiesItCase { assertEquals(refProp.getStringValue("policy.ms.policyNamePrefix", ""), "Config_MS_"); assertEquals(refProp.getStringValue("policy.ms.policyNamePrefix", "testos"), "Config_MS_"); assertEquals(refProp.getStringValue("policy.ms", "policyNamePrefix"), "Config_MS_"); + assertNull(refProp.getStringValue("does.not.exist")); } /** @@ -68,7 +69,7 @@ public class CldsReferencePropertiesItCase { * when JSON parsing fails */ @Test - public void testJsonTemplate() throws IOException { + public void testGetJsonTemplate() throws IOException { // ui.location.default={"DC1":"Data Center 1","DC2":"Data Center // 2","DC3":"Data Center 3"} ObjectNode root = (ObjectNode) refProp.getJsonTemplate("ui.location.default"); @@ -81,4 +82,19 @@ public class CldsReferencePropertiesItCase { root = (ObjectNode) refProp.getJsonTemplate("ui.location", ""); assertNull(root); } + + /** + * Test getting prop value as a JSON Node / template. + * + * @throws IOException + * when JSON parsing fails + */ + @Test + public void testGetFileContent() throws IOException { + String content = refProp.getFileContent("sdc.decode.service_ids"); + assertEquals("{}", content); + // Test composite key + content = refProp.getFileContent("sdc.decode", "service_ids"); + assertEquals("{}", content); + } } diff --git a/src/test/resources/clds/clds-reference.properties b/src/test/resources/clds/clds-reference.properties index d6c8bc45b..56552781f 100644 --- a/src/test/resources/clds/clds-reference.properties +++ b/src/test/resources/clds/clds-reference.properties @@ -27,14 +27,14 @@ # # DCAE request build properties # -dcae.template={"properties":{"service_name":"","service_ids":[],"vnf_ids":[],"location_ids":[]},"template":{"tca":{"dcae":{"inputTopic":"","outputTopic":"","closedLoopControlName":"","closedLoopEventClient":"configuration.dcae.microservice.tca.xml","policyName":"","policyScope":"service=vSCP;resource=F5;type=configuration","policyVersion":"v0.0.1","serviceConfigurations":{}}}}} -dcae.decode.service_ids={"vUSP":["vUSP - vCTS"],"Trinity":["ASBGv TLS VNF","ASBGv No TLS","ASBGv (NO TLS) VNF","ASBGv TLS","NSBGv VNF","NSBGv"],"vSCP":["AKRON_vSCP_F5_FW-SVC/vSCP_F5_FW 1","ALLEN_vSCP_F5_FW-SVC/vSCP_F5_FW 1"],"vProbes":["vProbes - FW"]} -dcae.deployment.template={"serviceTypeId": "???", "inputs": {"aaiEnrichmentHost": "10.0.1.1", "enableAAIEnrichment": "true", "subscriberHostName" : "10.0.11.1", "publisherHostName" : "10.0.11.1"}} +dcae.template=classpath:/clds/templates/dcae-template.json +dcae.decode.service_ids=classpath:/clds/templates/dcae-decode-service_ids.json +dcae.deployment.template=classpath:/clds/templates/dcae-deployment-template.json # # SDC request blueprint properties # -sdc.template={} -sdc.decode.service_ids={} +sdc.template=classpath:/clds/templates/sdc-template.json +sdc.decode.service_ids=classpath:/clds/templates/sdc-decode-service_ids.json # # # General Policy request properties @@ -49,9 +49,9 @@ policy.op.policyNamePrefix=Config_BRMS_Param_ # TCA MicroService Policy request build properties # tca.policyid.prefix=DCAE.Config_ -tca.policy.template={"service": "tca_policy", "version": "1.0.0", "location": "SampleServiceLocation", "configName": "SampleConfigName", "uuid": "test", "policyScope": "resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", "templateVersion": "OpenSource.version.1", "policyName": "MicroServicevCPE", "description": "MicroService Policy", "priority": "1", "riskType": "SampleRiskType", "riskLevel": "1", "guard": "False","content":{"tca_policy": {}}} -tca.template= {"domain": "measurementsForVfScaling", "metricsPerEventName": [{"eventName": "???", "controlLoopSchemaType":"VNF","policyScope": "DCAE","policyName": "???","policyVersion": "v0.0.1","thresholds": []}]} -tca.thresholds.template={"closedLoopControlName": "???", "version": "1.0.2","fieldPath": "?????", "thresholdValue": 0,"direction": "???","severity": "MAJOR", "closedLoopEventStatus": "???"} +tca.policy.template=classpath:/clds/templates/tca-policy-template.json +tca.template=classpath:/clds/templates/tca-template.json +tca.thresholds.template=classpath:/clds/templates/tca-thresholds-template.json # # @@ -71,7 +71,7 @@ op.eNodeB.templateName=ClosedLoopControlName op.eNodeB.operationTopic=com.onap.sdnr.RanCLRequest-v00 op.eNodeB.notificationTopic=com.onap-policy.IST-ENODEB-CL op.eNodeB.controller=amsterdam -op.eNodeB.recipe={"eNodeBRecipes":[{"Actor":"AOTS","Recipe":"checkENodeBTicketHours","ParentPolicy":"","PPConditions":"","Retry":"0","TimeLimit":"120"},{"Actor":"AOTS","Recipe":"checkEquipmentStatus","ParentPolicy":"checkENodeBTicketHours","PPConditions":"Success","Retry":"0","TimeLimit":"120"},{"Actor":"AOTS","Recipe":"checkEimStatus","ParentPolicy":"checkEquipmentStatus","PPConditions":"Success","Retry":"0","TimeLimit":"120"},{"Actor":"AOTS","Recipe":"checkMaintenanceWindow","ParentPolicy":"checkEimStatus","PPConditions":"Success","Retry":"0","TimeLimit":"120"},{"Actor":"SDNR","Recipe":"Reset","ParentPolicy":"checkMaintenanceWindow","PPConditions":"Success","Retry":"","TimeLimit":""}]} +op.eNodeB.recipe=classpath:/clds/templates/op-eNodeB-recipe.json op.eNodeB.timeWindow=35 op.eNodeB.limit=2 op.eNodeB.period=10s @@ -91,8 +91,8 @@ sdc.InstanceID=X-ECOMP-InstanceID sdc.header.requestId=X-ECOMP-RequestID # # -ui.location.default={"DC1":"Data Center 1","DC2":"Data Center 2","DC3":"Data Center 3"} -ui.alarm.default={"Reports a transient alarm condition when an incoming CDR cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming CDR cannot be decoded successfully","Reports a transient alarm condition when an incoming ACR message cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming ACR message cannot be decoded successfully","Reports a transient alarm condition when a CDR validation fails":"vCCF: Reports a transient alarm condition when a CDR validation fails","Reports a transient alarm condition when an incoming GTP' message cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming GTP' message cannot be decoded successfully","Reports a transient alarm condition when an incoming CDR file cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming CDR file cannot be decoded successfully","Reports a transient alarm condition when an incoming Sh/Dh file cannot be decoded successfully":"vCCF: Reports a transient alarm condition when an incoming Sh/Dh file cannot be decoded successfully","Reports a transient alarm condition when an incoming ACR message is in conflict with former ACR in one diameter session":"vCCF: Reports a transient alarm condition when an incoming ACR message is in conflict with former ACR in one diameter session","Reports a transient alarm condition when an outgoing Ro message send fails":"vCCF: Reports a transient alarm condition when an outgoing Ro message send fails","Reports a transient alarm condition when an outgoing GTP' message send fails":"vCCF: Reports a transient alarm condition when an outgoing GTP' message send fails","Reports a transient alarm condition when an outgoing Sh/Dh message send fails":"vCCF: Reports a transient alarm condition when an outgoing Sh/Dh message send fails","Reports an alarm when build or send Rf message fail":"vCCF: Reports an alarm when build or send Rf message fail","Reports a transient alarm condition when an abnormal incoming CCA message":"vCCF: Reports a transient alarm condition when an abnormal incoming CCA message","Reports a transient alarm condition when there is an abnormal incoming Sh/Dh message":"vCCF: Reports a transient alarm condition when there is an abnormal incoming Sh/Dh message","For Rf interface, if IeCCF receives a message with incorrect value for session id.":"vCCF: For Rf interface, if IeCCF receives a message with incorrect value for session id.","Reports an alarm when CPU usage exceeds the major threshold, the local database exceeds the critical threshold, or the ACR partition exceeds the major threshold":"vCCF: Reports an alarm when CPU usage exceeds the major threshold, the local database exceeds the critical threshold, or the ACR partition exceeds the major threshold","Reports an alarm when CPU usage exceeds the minor threshold, the local database exceeds the major threshold, or the ACR partition exceeds the minor threshold":"vCCF: Reports an alarm when CPU usage exceeds the minor threshold, the local database exceeds the major threshold, or the ACR partition exceeds the minor threshold","Reports an alarm when CPU usage exceeds the critical threshold, the local database exceeds the major threshold, or the CDR partition exceeds the critical threshold":"vCCF: Reports an alarm when CPU usage exceeds the critical threshold, the local database exceeds the major threshold, or the CDR partition exceeds the critical threshold","Reports an alarm when CPU usage exceeds the major threshold or CDR partition exceeds the major threshold":"vCCF: Reports an alarm when CPU usage exceeds the major threshold or CDR partition exceeds the major threshold","Reports an alarm when external DB usage exceeds the major threshold":"vCCF: Reports an alarm when external DB usage exceeds the major threshold","If IeCCF comes to the status \\"Stop processing ACR records in ACRDB\\".":"vCCF: If IeCCF comes to the status \\"Stop processing ACR records in ACRDB\\".","If IeCCF comes to the status \\"Flush ACR is invoked\\".":"vCCF: If IeCCF comes to the status \\"Flush ACR is invoked\\".","Reports a transient alarm condition when the workflow definition table is provisioned wrongly":"vCCF: Reports a transient alarm condition when the workflow definition table is provisioned wrongly","Reports a transient alarm condition when the Action Definition table is provisioned wrongly":"vCCF: Reports a transient alarm condition when the Action Definition table is provisioned wrongly","Reports a transient alarm condition when the Ro Host Configuration is provisioned wrongly":"vCCF: Reports a transient alarm condition when the Ro Host Configuration is provisioned wrongly","Reports a transient alarm condition when the Sh Host Configuration is provisioned wrongly":"vCCF: Reports a transient alarm condition when the Sh Host Configuration is provisioned wrongly","Reports a transient alarm condition when a specific dictionary or rule does not exist":"vCCF: Reports a transient alarm condition when a specific dictionary or rule does not exist","Reports a transient alarm condition when failure occurs when mapping Rf message to XDR":"vCCF: Reports a transient alarm condition when failure occurs when mapping Rf message to XDR","Reports a transient alarm condition when failure occurs in aggregating process":"vCCF: Reports a transient alarm condition when failure occurs in aggregating process","Reports a transient alarm condition when failure happens in correlating process":"vCCF: Reports a transient alarm condition when failure happens in correlating process","Reports a transient alarm condition when failure occurs in generating CDR":"vCCF: Reports a transient alarm condition when failure occurs in generating CDR","Reports a transient alarm condition when failure occurs in constructing CCR message from XDR":"vCCF: Reports a transient alarm condition when failure occurs in constructing CCR message from XDR","Reports a transient alarm condition when an ACR/XER/BER/INC record write to bad file":"vCCF: Reports a transient alarm condition when an ACR/XER/BER/INC record write to bad file","Reports an alarm condition when aggregation or correlation central database connection is lost":"vCCF: Reports an alarm condition when aggregation or correlation central database connection is lost","Reports an alarm condition when a specific failure happens in database operations":"vCCF: Reports an alarm condition when a specific failure happens in database operations","Reports an alarm condition when DB capacity has been consumed to critical threshold":"vCCF: Reports an alarm condition when DB capacity has been consumed to critical threshold","Reports an alarm condition when DB capacity has been consumed to major threshold":"vCCF: Reports an alarm condition when DB capacity has been consumed to major threshold","Reports an alarm condition when DB capacity has been consumed to minor threshold.":"vCCF: Reports an alarm condition when DB capacity has been consumed to minor threshold.","Reports an alarm condition when application cannot deliver CDR to CDRSCH subsystem":"vCCF: Reports an alarm condition when application cannot deliver CDR to CDRSCH subsystem","Reports an alarm condition when some fields of ACR file header have error value and this ACR file cannot be processed further":"vCCF: Reports an alarm condition when some fields of ACR file header have error value and this ACR file cannot be processed further","Reports an alarm condition when some fields of ACR file header have invalid value and this ACR file can be processed further":"vCCF: Reports an alarm condition when some fields of ACR file header have invalid value and this ACR file can be processed further","Reports an alarm condition when the ACR file loses some ACR records":"vCCF: Reports an alarm condition when the ACR file loses some ACR records","Reports an alarm condition when some fields of ACR record header have error value and this ACR record and the following ACR records cannot be processed further":"vCCF: Reports an alarm condition when some fields of ACR record header have error value and this ACR record and the following ACR records cannot be processed further","Reports an alarm condition when error occurs in processing CDR/ACR files":"vCCF: Reports an alarm condition when error occurs in processing CDR/ACR files","Reports an alarm condition when CDR partition has been consumed to critical threshold":"vCCF: Reports an alarm condition when CDR partition has been consumed to critical threshold","Reports an alarm condition when CDR partition has been consumed to major threshold.":"vCCF: Reports an alarm condition when CDR partition has been consumed to major threshold.","Reports an alarm condition when CDR partition has been consumed to minor threshold":"vCCF: Reports an alarm condition when CDR partition has been consumed to minor threshold","Reports an alarm condition when ACR partition has been consumed to critical threshold":"vCCF: Reports an alarm condition when ACR partition has been consumed to critical threshold","Reports an alarm condition when ACR partition has been consumed to major threshold":"vCCF: Reports an alarm condition when ACR partition has been consumed to major threshold","Reports an alarm condition when ACR partition has been consumed to minor threshold":"vCCF: Reports an alarm condition when ACR partition has been consumed to minor threshold","Reports an alarm condition when CPU consumption reaches critical threshold":"vCCF: Reports an alarm condition when CPU consumption reaches critical threshold","Reports an alarm condition when CPU consumption reaches major threshold":"vCCF: Reports an alarm condition when CPU consumption reaches major threshold","Reports an alarm condition when CPU consumption reaches minor threshold":"vCCF: Reports an alarm condition when CPU consumption reaches minor threshold","Service shall monitor * number of partial CDR * number of incompleted CDR * number of unacceptable CDR If any one exceeds a configurable threshold in a configrable interval.":"vCCF: Service shall monitor * number of partial CDR * number of incompleted CDR * number of unacceptable CDR If any one exceeds a configurable threshold in a configrable interval.","CDR size exceed the platform capacity.":"vCCF: CDR size exceed the platform capacity.","Service shall monitor number of ACR without AII AVP, If it exceeds a configurable threshold in a configurable interval.":"vCCF: Service shall monitor number of ACR without AII AVP, If it exceeds a configurable threshold in a configurable interval.","Service shall monitor CDR cut due to ECCF_ACRNUMBER_IN_DB, If it exceeds a configurable threshold in a configurable interval.":"vCCF: Service shall monitor CDR cut due to ECCF_ACRNUMBER_IN_DB, If it exceeds a configurable threshold in a configurable interval.","External Node of this Cluster is overload":"vCCF: External Node of this Cluster is overload","bdb_high_latency":"vCCF-vDB: bdb_high_latency","bdb_high_throughput":"vCCF-vDB: bdb_high_throughput","bdb_size":"vCCF-vDB: bdb_size","cluster_inconsistent_rl_sw":"vCCF-vDB: cluster_inconsistent_rl_sw","cluster_node_remove_abort_failed":"vCCF-vDB: cluster_node_remove_abort_failed","cluster_node_remove_failed":"vCCF-vDB: cluster_node_remove_failed","cluster_ram_overcommit":"vCCF-vDB: cluster_ram_overcommit","cluster_rebalance_failed":"vCCF-vDB: cluster_rebalance_failed","cluster_too_few_nodes_for_replication":"vCCF-vDB: cluster_too_few_nodes_for_replication","node_cpu_utilization":"vCCF-vDB: node_cpu_utilization","node_ephemeral_storage":"vCCF-vDB: node_ephemeral_storage","node_failed":"vCCF-vDB: node_failed","node_memory":"vCCF-vDB: node_memory","node_net_throughput":"vCCF-vDB: node_net_throughput","node_offline_failed":"vCCF-vDB: node_offline_failed","node_offline_abort_failed":"vCCF-vDB: node_offline_abort_failed","node_online_failed":"vCCF-vDB: node_online_failed","OAM NODE- IS NOT ACTIVE ":"vCCF-vDB: OAM NODE- IS NOT ACTIVE ","LSS_asdaCommunicationFailure":"vCTS: LSS_asdaCommunicationFailure","LSS_ccdbCommunicationFailure":"vCTS: LSS_ccdbCommunicationFailure","LSS_cpiCTS3xxFailRate":"vCTS: LSS_cpiCTS3xxFailRate","LSS_cpiCTS4xxFailRate":"vCTS: LSS_cpiCTS4xxFailRate","LSS_cpiCTS5xxFailRate":"vCTS: LSS_cpiCTS5xxFailRate","LSS_cpiCTS6xxFailRate":"vCTS: LSS_cpiCTS6xxFailRate","LSS_cpiCTSSIPRetransmitInvite":"vCTS: LSS_cpiCTSSIPRetransmitInvite","LSS_cpiCTSSIPRetransmitNonInvite":"vCTS: LSS_cpiCTSSIPRetransmitNonInvite","LSS_glsInvalidCellId":"vCTS: LSS_glsInvalidCellId","LSS_glsServerUnavailable":"vCTS: LSS_glsServerUnavailable","LSS_hlrSyncConnection":"vCTS: LSS_hlrSyncConnection","LSS_hlrSyncQueue":"vCTS: LSS_hlrSyncQueue","LSS_lispBufferFullExternalLIG":"vCTS: LSS_lispBufferFullExternalLIG","LSS_prdbConnectWithAlternateFailure":"vCTS: LSS_prdbConnectWithAlternateFailure","LSS_prdbSyncDataToAlternateFailure":"vCTS: LSS_prdbSyncDataToAlternateFailure","LSS_preAllocatedResourceOverload":"vCTS: LSS_preAllocatedResourceOverload","LSS_prifSocketError":"vCTS: LSS_prifSocketError","LSS_prsCallInstanceExceeded":"vCTS: LSS_prsCallInstanceExceeded","LSS_prsCpuOverload":"vCTS: LSS_prsCpuOverload","LSS_prsDatabaseMigrationFailure":"vCTS: LSS_prsDatabaseMigrationFailure","LSS_prsFailureToConnectWithPRDB":"vCTS: LSS_prsFailureToConnectWithPRDB","LSS_prsQueueExceeded":"vCTS: LSS_prsQueueExceeded","LSS_smdiSocketError":"vCTS: LSS_smdiSocketError","LSS_socketError":"vCTS: LSS_socketError","LSS_softwareComponentDown":"vCTS: LSS_softwareComponentDown","LSS_tlsInitError":"vCTS: LSS_tlsInitError","LSS_usageOfSyncTable":"vCTS: LSS_usageOfSyncTable","LSS_utHttpProxyConnectionDown ":"vCTS: LSS_utHttpProxyConnectionDown ","LSS_wpifSocketError":"vCTS: LSS_wpifSocketError","LSS_acrTemporaryBufferOverload":"vCTS: LSS_acrTemporaryBufferOverload","LSS_adnsExtendedTTLcaching":"vCTS: LSS_adnsExtendedTTLcaching","LSS_adnsQueryFailureCaching":"vCTS: LSS_adnsQueryFailureCaching","LSS_adnsQueueCongestion":"vCTS: LSS_adnsQueueCongestion","LSS_asdaRequestQueue":"vCTS: LSS_asdaRequestQueue","LSS_capacityLicenseKeyExpiration":"vCTS: LSS_capacityLicenseKeyExpiration","LSS_capacityLicenseKeyNearExpiration":"vCTS: LSS_capacityLicenseKeyNearExpiration","LSS_capacityLicenseKeyValidationError":"vCTS: LSS_capacityLicenseKeyValidationError","LSS_cardConnectionLost":"vCTS: LSS_cardConnectionLost","LSS_cpiAlrmCritical":"vCTS: LSS_cpiAlrmCritical","LSS_cpiAlrmMajor":"vCTS: LSS_cpiAlrmMajor","LSS_cpiAlrmMinor":"vCTS: LSS_cpiAlrmMinor","LSS_cpiAlrmWarning":"vCTS: LSS_cpiAlrmWarning","LSS_cpiAsrtEsc":"vCTS: LSS_cpiAsrtEsc","LSS_cpiAsrtNonEsc":"vCTS: LSS_cpiAsrtNonEsc","LSS_cpiAsrtNonEscCritical":"vCTS: LSS_cpiAsrtNonEscCritical","LSS_cpiAsrtNonEscMajor":"vCTS: LSS_cpiAsrtNonEscMajor","LSS_cpiAsrtNonEscMinor":"vCTS: LSS_cpiAsrtNonEscMinor","LSS_cpiAudErrCount":"vCTS: LSS_cpiAudErrCount","LSS_cpiAudManAct":"vCTS: LSS_cpiAudManAct","LSS_cpiAudNewEvent":"vCTS: LSS_cpiAudNewEvent","LSS_cpiCompleteRateAlarm":"vCTS: LSS_cpiCompleteRateAlarm","LSS_cpiDropMGAllocConnReq":"vCTS: LSS_cpiDropMGAllocConnReq","LSS_cpiDropRateAlarm":"vCTS: LSS_cpiDropRateAlarm","LSS_cpiExceptionService":"vCTS: LSS_cpiExceptionService","LSS_cpiFailRateAlarm":"vCTS: LSS_cpiFailRateAlarm","LSS_cpiFailSCTPFastRetransIncr":"vCTS: LSS_cpiFailSCTPFastRetransIncr","LSS_cpiFailSCTPFastRetransRate":"vCTS: LSS_cpiFailSCTPFastRetransRate","LSS_cpiFailSCTPSRTT1Incr":"vCTS: LSS_cpiFailSCTPSRTT1Incr","LSS_cpiFailSCTPSRTT2Incr":"vCTS: LSS_cpiFailSCTPSRTT2Incr","LSS_cpiFailSCTPT3RetransIncr":"vCTS: LSS_cpiFailSCTPT3RetransIncr","LSS_cpiFailSCTPT3RetransRate":"vCTS: LSS_cpiFailSCTPT3RetransRate","LSS_cpiFileSysUsage":"vCTS: LSS_cpiFileSysUsage","LSS_cpiMemAllocFail":"vCTS: LSS_cpiMemAllocFail","LSS_cpiNumOfLICDRDel":"vCTS: LSS_cpiNumOfLICDRDel","LSS_cpiReinitServiceSelf":"vCTS: LSS_cpiReinitServiceSelf","LSS_cpiSIPRetransmitInvite":"vCTS: LSS_cpiSIPRetransmitInvite","LSS_cpiSIPRetransmitNonInvite":"vCTS: LSS_cpiSIPRetransmitNonInvite","LSS_cpiSS7DropSCTPPktsRcvd":"vCTS: LSS_cpiSS7DropSCTPPktsRcvd","LSS_cpiSS7FailSCTPFastRetransRate":"vCTS: LSS_cpiSS7FailSCTPFastRetransRate","LSS_cpiStabilityAlarm":"vCTS: LSS_cpiStabilityAlarm","LSS_cpuOverload":"vCTS: LSS_cpuOverload","LSS_databaseConnectionLost":"vCTS: LSS_databaseConnectionLost","LSS_databaseReplicationLinkDown":"vCTS: LSS_databaseReplicationLinkDown","LSS_databaseSizeExhausted":"vCTS: LSS_databaseSizeExhausted","LSS_dbHighCpuUtilization":"vCTS: LSS_dbHighCpuUtilization","LSS_dbOffline":"vCTS: LSS_dbOffline","LSS_dbStatusUnexpected":"vCTS: LSS_dbStatusUnexpected","LSS_degradedResource":"vCTS: LSS_degradedResource","LSS_degrow":"vCTS: LSS_degrow","LSS_deviceServerCxnLost":"vCTS: LSS_deviceServerCxnLost","LSS_diamLinkDown":"vCTS: LSS_diamLinkDown","LSS_diamMaxClientsExceeded":"vCTS: LSS_diamMaxClientsExceeded","LSS_dnsThreshold":"vCTS: LSS_dnsThreshold","LSS_ethernetError":"vCTS: LSS_ethernetError","LSS_ethernetLinkDown":"vCTS: LSS_ethernetLinkDown","LSS_externalConnectivity":"vCTS: LSS_externalConnectivity","LSS_featureLicenseExpiration":"vCTS: LSS_featureLicenseExpiration","LSS_featureLicenseKeyNearExpiration":"vCTS: LSS_featureLicenseKeyNearExpiration","LSS_featureLockValidationError":"vCTS: LSS_featureLockValidationError","LSS_fqdnError":"vCTS: LSS_fqdnError","LSS_fru":"vCTS: LSS_fru","LSS_gatewayCongestion":"vCTS: LSS_gatewayCongestion","LSS_gatewayForcedOOS":"vCTS: LSS_gatewayForcedOOS","LSS_gatewayProvisioningError":"vCTS: LSS_gatewayProvisioningError","LSS_gatewayUnreachable":"vCTS: LSS_gatewayUnreachable","LSS_gatewayUnregistered":"vCTS: LSS_gatewayUnregistered","LSS_globalParameterNotFound":"vCTS: LSS_globalParameterNotFound","LSS_grow":"vCTS: LSS_grow","LSS_h248MessageBufferDepletion":"vCTS: LSS_h248MessageBufferDepletion","LSS_hostDown":"vCTS: LSS_hostDown","LSS_hostReset":"vCTS: LSS_hostReset","LSS_invalidGateway":"vCTS: LSS_invalidGateway","LSS_iriLinkDown":"vCTS: LSS_iriLinkDown","LSS_ldapServerConnectionLost":"vCTS: LSS_ldapServerConnectionLost","LSS_llcDown":"vCTS: LSS_llcDown","LSS_logicalLinkDown":"vCTS: LSS_logicalLinkDown","LSS_logicalLinkNotFound":"vCTS: LSS_logicalLinkNotFound","LSS_logRotateThreshold":"vCTS: LSS_logRotateThreshold","LSS_memoryOverload":"vCTS: LSS_memoryOverload","LSS_nodeConfigFailure":"vCTS: LSS_nodeConfigFailure","LSS_nodeGroupOOS":"vCTS: LSS_nodeGroupOOS","LSS_nodeOOS":"vCTS: LSS_nodeOOS","LSS_nonCompliantFaultGroupMemberState":"vCTS: LSS_nonCompliantFaultGroupMemberState","LSS_nonCsAddrChannelDepletion":"vCTS: LSS_nonCsAddrChannelDepletion","LSS_numberOfTuplesInUse":"vCTS: LSS_numberOfTuplesInUse","LSS_osSecInfoModificationDetected":"vCTS: LSS_osSecInfoModificationDetected","LSS_osSecInformationMissing":"vCTS: LSS_osSecInformationMissing","LSS_osSecUnexpectedInformation":"vCTS: LSS_osSecUnexpectedInformation","LSS_pdnsMySqlReplication":"vCTS: LSS_pdnsMySqlReplication","LSS_pktCorruptionDetectedViaRCCLANCheck":"vCTS: LSS_pktCorruptionDetectedViaRCCLANCheck","LSS_platformCommandFailure":"vCTS: LSS_platformCommandFailure","LSS_pmDataNotCollected":"vCTS: LSS_pmDataNotCollected","LSS_processDown":"vCTS: LSS_processDown","LSS_processNotStarted":"vCTS: LSS_processNotStarted","LSS_provisioningInhibitedMode":"vCTS: LSS_provisioningInhibitedMode","LSS_rccInhibitedMode":"vCTS: LSS_rccInhibitedMode","LSS_remotedbLinkDown":"vCTS: LSS_remotedbLinkDown","LSS_remoteQueryServerFailure":"vCTS: LSS_remoteQueryServerFailure","LSS_restore":"vCTS: LSS_restore","LSS_serviceCFGDataTimestampError":"vCTS: LSS_serviceCFGDataTimestampError","LSS_serviceCommCxnLost":"vCTS: LSS_serviceCommCxnLost","LSS_serviceOnewayCommunication":"vCTS: LSS_serviceOnewayCommunication","LSS_sheddingOverload":"vCTS: LSS_sheddingOverload","LSS_simxml":"vCTS: LSS_simxml","LSS_sipLinkSetMaxQuarantineList":"vCTS: LSS_sipLinkSetMaxQuarantineList","LSS_sipLinkSetUnavailable":"vCTS: LSS_sipLinkSetUnavailable","LSS_sipLinkUnavailable":"vCTS: LSS_sipLinkUnavailable","LSS_softwareAllocatedResourceOverload":"vCTS: LSS_softwareAllocatedResourceOverload","LSS_softwareComponentStandbyNotReady":"vCTS: LSS_softwareComponentStandbyNotReady","LSS_softwareLicense":"vCTS: LSS_softwareLicense","LSS_svcdegrow":"vCTS: LSS_svcdegrow","LSS_svcgrow":"vCTS: LSS_svcgrow","LSS_swVersionMismatch":"vCTS: LSS_swVersionMismatch","LSS_tftpDownloadCorrupt":"vCTS: LSS_tftpDownloadCorrupt","LSS_timeStampValueOutOfSystemRange":"vCTS: LSS_timeStampValueOutOfSystemRange","LSS_transactionHandlerBlockDepletion":"vCTS: LSS_transactionHandlerBlockDepletion","LSS_upgrade":"vCTS: LSS_upgrade","SYS_BackupFailure":"vCTS: SYS_BackupFailure","SYS_Configuration":"vCTS: SYS_Configuration","SYS_COTRecordTransferFailure":"vCTS: SYS_COTRecordTransferFailure","SYS_CPM_USERDATA_INCONSITENCY":"vCTS: SYS_CPM_USERDATA_INCONSITENCY","SYS_CPM_USERDATA_RESTORED":"vCTS: SYS_CPM_USERDATA_RESTORED","SYS_EventQueueCapacity":"vCTS: SYS_EventQueueCapacity","SYS_ICMPFailure":"vCTS: SYS_ICMPFailure","SYS_IPsecConfig":"vCTS: SYS_IPsecConfig","SYS_LinkDown":"vCTS: SYS_LinkDown","SYS_NotifyDisabled":"vCTS: SYS_NotifyDisabled","SYS_NotifyLocked":"vCTS: SYS_NotifyLocked","SYS_NumTL1MeasThresh":"vCTS: SYS_NumTL1MeasThresh","SYS_RADIUS_TO_LDAP_FAILURE":"vCTS: SYS_RADIUS_TO_LDAP_FAILURE","SYS_ROOT_ACCESS_DENIED":"vCTS: SYS_ROOT_ACCESS_DENIED","SYS_ROOT_FTP_VIOLATION":"vCTS: SYS_ROOT_FTP_VIOLATION","SYS_ROOT_LOGIN_VIOLATION":"vCTS: SYS_ROOT_LOGIN_VIOLATION","SYS_ROOT_SSH_LOGIN_VIOLATION":"vCTS: SYS_ROOT_SSH_LOGIN_VIOLATION","SYS_SetupAAAFailure":"vCTS: SYS_SetupAAAFailure","SYS_SNETrapOverload":"vCTS: SYS_SNETrapOverload","SYS_SNMPAuthenticationFailure":"vCTS: SYS_SNMPAuthenticationFailure","SYS_SNMPFailure":"vCTS: SYS_SNMPFailure","SYS_SU_TO_ROOT_FAILURE":"vCTS: SYS_SU_TO_ROOT_FAILURE","SYS_SYSTEMTrapOverload":"vCTS: SYS_SYSTEMTrapOverload","SYS_ThresholdCrossed":"vCTS: SYS_ThresholdCrossed","SYS_UndiscoveredObject":"vCTS: SYS_UndiscoveredObject","SYS_WriteAAAFailure":"vCTS: SYS_WriteAAAFailure","jnxSpaceDiskUsageRising":"vDBE-EMS-Juniper: jnxSpaceDiskUsageRising","jnxSpaceDiskUsageRisingCleared":"vDBE-EMS-Juniper: jnxSpaceDiskUsageRisingCleared","jnxSpaceSwapUsageRising":"vDBE-EMS-Juniper: jnxSpaceSwapUsageRising","jnxSpaceSwapUsageRisingCleared":"vDBE-EMS-Juniper: jnxSpaceSwapUsageRisingCleared","jnxSpaceCPULARising":"vDBE-EMS-Juniper: jnxSpaceCPULARising","jnxSpaceCPULARisingCleared":"vDBE-EMS-Juniper: jnxSpaceCPULARisingCleared","jnxSpaceWebpProxyProcessDown":"vDBE-EMS-Juniper: jnxSpaceWebpProxyProcessDown","jnxSpaceWebpProxyProcessUp":"vDBE-EMS-Juniper: jnxSpaceWebpProxyProcessUp","jnxSpaceNMAProcessDown":"vDBE-EMS-Juniper: jnxSpaceNMAProcessDown","jnxSpaceNMAProcessUp":"vDBE-EMS-Juniper: jnxSpaceNMAProcessUp","jnxSpaceJbossProcessDown":"vDBE-EMS-Juniper: jnxSpaceJbossProcessDown","jnxSpaceJbossProcessUp":"vDBE-EMS-Juniper: jnxSpaceJbossProcessUp","jnxSpaceMysqlProcessDown":"vDBE-EMS-Juniper: jnxSpaceMysqlProcessDown","jnxSpaceMysqlProcessUp":"vDBE-EMS-Juniper: jnxSpaceMysqlProcessUp","jnxSpacePostgresqlProcessDown":"vDBE-EMS-Juniper: jnxSpacePostgresqlProcessDown","jnxSpacePostgresqlProcessUp":"vDBE-EMS-Juniper: jnxSpacePostgresqlProcessUp","jnxSpaceWatchdogStopped":"vDBE-EMS-Juniper: jnxSpaceWatchdogStopped","jnxSpaceWatchdogStarted":"vDBE-EMS-Juniper: jnxSpaceWatchdogStarted","jnxSpaceSNAProcessDown":"vDBE-EMS-Juniper: jnxSpaceSNAProcessDown","jnxSpaceSNAProcessUp":"vDBE-EMS-Juniper: jnxSpaceSNAProcessUp","jnxSpaceNodeDown":"vDBE-EMS-Juniper: jnxSpaceNodeDown","jnxSpaceNodeUp":"vDBE-EMS-Juniper: jnxSpaceNodeUp"," jnxSpaceNodeRemoval":"vDBE-EMS-Juniper: jnxSpaceNodeRemoval","jnxCmCfgChange":"vDBE-Juniper: jnxCmCfgChange","jnxCmRescueChange":"vDBE-Juniper: jnxCmRescueChange","jnxEventTrap":"vDBE-Juniper: jnxEventTrap","jnxJsFwAuthFailure":"vDBE-Juniper: jnxJsFwAuthFailure","jnxJsFwAuthServiceUp":"vDBE-Juniper: jnxJsFwAuthServiceUp","jnxJsFwAuthServiceDown":"vDBE-Juniper: jnxJsFwAuthServiceDown","jnxJsFwAuthCapacityExceeded":"vDBE-Juniper: jnxJsFwAuthCapacityExceeded","jnxJsIdpSignatureUpdate":"vDBE-Juniper: jnxJsIdpSignatureUpdate","jnxJsIdpAttackLog":"vDBE-Juniper: jnxJsIdpAttackLog","jnxJsSrcNatPoolThresholdStatus":"vDBE-Juniper: jnxJsSrcNatPoolThresholdStatus","jnxJsNatRuleThresholdStatus":"vDBE-Juniper: jnxJsNatRuleThresholdStatus","jnxJsScreenAttack":"vDBE-Juniper: jnxJsScreenAttack","jnxJsScreenCfgChange":"vDBE-Juniper: jnxJsScreenCfgChange","jnxJsAvPatternUpdateTrap":"vDBE-Juniper: jnxJsAvPatternUpdateTrap","jnxJsChassisClusterSwitchover":"vDBE-Juniper: jnxJsChassisClusterSwitchover","jnxJsChClusterIntfTrap":"vDBE-Juniper: jnxJsChClusterIntfTrap","jnxJsChClusterSpuMismatchTrap":"vDBE-Juniper: jnxJsChClusterSpuMismatchTrap","jnxJsChClusterWeightTrap":"vDBE-Juniper: jnxJsChClusterWeightTrap","jnxLicenseGraceExpired":"vDBE-Juniper: jnxLicenseGraceExpired","jnxLicenseGraceAboutToExpire":"vDBE-Juniper: jnxLicenseGraceAboutToExpire","jnxLicenseAboutToExpire":"vDBE-Juniper: jnxLicenseAboutToExpire","jnxLicenseInfringeCumulative":"vDBE-Juniper: jnxLicenseInfringeCumulative","jnxLicenseInfringeSingle":"vDBE-Juniper: jnxLicenseInfringeSingle","jnxNatAddrPoolThresholdStatus":"vDBE-Juniper: jnxNatAddrPoolThresholdStatus","jnxSyslogTrap":"vDBE-Juniper: jnxSyslogTrap","jnxAccessAuthServiceUp":"vDBE-Juniper: jnxAccessAuthServiceUp","jnxAccessAuthServiceDown":"vDBE-Juniper: jnxAccessAuthServiceDown","jnxAccessAuthServerDisabled":"vDBE-Juniper: jnxAccessAuthServerDisabled","jnxAccessAuthServerEnabled":"vDBE-Juniper: jnxAccessAuthServerEnabled","jnxAccessAuthAddressPoolHighThreshold":"vDBE-Juniper: jnxAccessAuthAddressPoolHighThreshold","jnxAccessAuthAddressPoolAbateThreshold":"vDBE-Juniper: jnxAccessAuthAddressPoolAbateThreshold","jnxAccessAuthAddressPoolOutOfAddresses":"vDBE-Juniper: jnxAccessAuthAddressPoolOutOfAddresses","jnxAccessAuthAddressPoolOutOfMemory":"vDBE-Juniper: jnxAccessAuthAddressPoolOutOfMemory","LEVEL_WARNING_CPU":"vMRF: LEVEL_WARNING_CPU","LEVEL_MAJOR_CPU":"vMRF: LEVEL_MAJOR_CPU","LEVEL_CRITICAL_CPU":"vMRF: LEVEL_CRITICAL_CPU","LEVEL_WARNING_MEM":"vMRF: LEVEL_WARNING_MEM","LEVEL_MAJOR_MEM":"vMRF: LEVEL_MAJOR_MEM","LEVEL_CRITICAL_MEM":"vMRF: LEVEL_CRITICAL_MEM","LEVEL_WARNING_DISK":"vMRF: LEVEL_WARNING_DISK","LEVEL_MAJOR_DISK":"vMRF: LEVEL_MAJOR_DISK","LEVEL_CRITICAL_DISK":"vMRF: LEVEL_CRITICAL_DISK","LEVEL_WARNING_RTPBANDWIDTH":"vMRF: LEVEL_WARNING_RTPBANDWIDTH","LEVEL_MAJOR_RTPBANDWIDTH":"vMRF: LEVEL_MAJOR_RTPBANDWIDTH","LEVEL_CRITICAL_RTPBANDWIDTH":"vMRF: LEVEL_CRITICAL_RTPBANDWIDTH","LEVEL_WARNING_RTPINPACKETLOSS":"vMRF: LEVEL_WARNING_RTPINPACKETLOSS","LEVEL_MAJOR_RTPINPACKETLOSS":"vMRF: LEVEL_MAJOR_RTPINPACKETLOSS","LEVEL_CRITICAL_RTPINPACKETLOSS":"vMRF: LEVEL_CRITICAL_RTPINPACKETLOSS","LEVEL_WARNING_RTPOUTPACKETLOSS":"vMRF: LEVEL_WARNING_RTPOUTPACKETLOSS","LEVEL_MAJOR_RTPOUTPACKETLOSS":"vMRF: LEVEL_MAJOR_RTPOUTPACKETLOSS","LEVEL_CRITICAL_RTPOUTPACKETLOSS":"vMRF: LEVEL_CRITICAL_RTPOUTPACKETLOSS","LEVEL_WARNING_TCPLOSTRETRANSMITRATE":"vMRF: LEVEL_WARNING_TCPLOSTRETRANSMITRATE","LEVEL_MAJOR_TCPLOSTRETRANSMITRATE":"vMRF: LEVEL_MAJOR_TCPLOSTRETRANSMITRATE","LEVEL_CRITICAL_TCPLOSTRETRANSMITRATE":"vMRF: LEVEL_CRITICAL_TCPLOSTRETRANSMITRATE","LEVEL_WARNING_TCPLOSSFAILURERATE":"vMRF: LEVEL_WARNING_TCPLOSSFAILURERATE","LEVEL_MAJOR_TCPLOSSFAILURERATE":"vMRF: LEVEL_MAJOR_TCPLOSSFAILURERATE","LEVEL_CRITICAL_TCPLOSSFAILURERATE":"vMRF: LEVEL_CRITICAL_TCPLOSSFAILURERATE","LEVEL_CRITICAL_RTPLINKDOWN":"vMRF: LEVEL_CRITICAL_RTPLINKDOWN","TARGET_REACHABLE":"vMRF: TARGET_REACHABLE","PUBLICATION_ERROR":"vMRF: PUBLICATION_ERROR","REMOTE_SERVER_SYNCHRONIZATION_ERROR":"vMRF: REMOTE_SERVER_SYNCHRONIZATION_ERROR","TRANSCODER_TOOL_EXEC_ERROR":"vMRF: TRANSCODER_TOOL_EXEC_ERROR","CLIENT_SYNCHRONIZATION_ERROR":"vMRF: CLIENT_SYNCHRONIZATION_ERROR","CLUSTER_UNREACHABLE":"vMRF: CLUSTER_UNREACHABLE","REMOTE_NODE_OFFLINE":"vMRF: REMOTE_NODE_OFFLINE","IPADDR_STOPPED":"vMRF: IPADDR_STOPPED","MRFC_STOPPED":"vMRF: MRFC_STOPPED","MNGT_STOPPED":"vMRF: MNGT_STOPPED","IPADDR_STARTED":"vMRF: IPADDR_STARTED","MRFC_STARTED":"vMRF: MRFC_STARTED","MNGT_STARTED":"vMRF: MNGT_STARTED","VOLATTACH_FAILED":"vMRF: VOLATTACH_FAILED","VOLDETACH_FAILED":"vMRF: VOLDETACH_FAILED","VOLDEL":"vMRF: VOLDEL","VOLCORRUPT":"vMRF: VOLCORRUPT","VOLFOREIGN":"vMRF: VOLFOREIGN","ACTIVE_ALARM_TABLE_PURGE":"vMRF: ACTIVE_ALARM_TABLE_PURGE","GENERIC_FORMER_STATELESS":"vMRF: GENERIC_FORMER_STATELESS","GENERIC_FORMER_STATEFUL":"vMRF: GENERIC_FORMER_STATEFUL","NO_MORE_ALARM_DESCRIPTION":"vMRF: NO_MORE_ALARM_DESCRIPTION","SERVICE_PROCESS_ENDS":"vMRF: SERVICE_PROCESS_ENDS","DEFENSE_STOPPED":"vMRF: DEFENSE_STOPPED","USER_ACCOUNT_LOCKED":"vMRF: USER_ACCOUNT_LOCKED","CONNECTION_SQL_NOT_ESTABLISHED":"vMRF: CONNECTION_SQL_NOT_ESTABLISHED","FALSE_ALARM":"vMRF: FALSE_ALARM","RADIUS SERVER HS":"vMRF: RADIUS SERVER HS","DRM_PACKAGER_IS_NOT_AVAILABLE":"vMRF: DRM_PACKAGER_IS_NOT_AVAILABLE","DRM_LICENSE_BUILDER_IS_NOT_AVAILABLE":"vMRF: DRM_LICENSE_BUILDER_IS_NOT_AVAILABLE","ERROR_WHILE_CREATING_PLAYLIST_MANAGER_FILE":"vMRF: ERROR_WHILE_CREATING_PLAYLIST_MANAGER_FILE","ERROR_WHILE_BUILDING_PLAYLIST_XML_REPRESENTATION":"vMRF: ERROR_WHILE_BUILDING_PLAYLIST_XML_REPRESENTATION","PLAYLIST_FILE_TO_PUBLISH_NOT_FOUND":"vMRF: PLAYLIST_FILE_TO_PUBLISH_NOT_FOUND","COULD_NOT_CONNECT_TO_PVNS_SERVER":"vMRF: COULD_NOT_CONNECT_TO_PVNS_SERVER","HTTP_OR_HTTPCLIENT_EXCEPTION_HAS_OCCURRED":"vMRF: HTTP_OR_HTTPCLIENT_EXCEPTION_HAS_OCCURRED","I/O_ERROR_WHILE_PUBLISHING_PLAYLIST_FILE":"vMRF: I/O_ERROR_WHILE_PUBLISHING_PLAYLIST_FILE","ERROR_WHILE_REQUESTING_SDP_FILE":"vMRF: ERROR_WHILE_REQUESTING_SDP_FILE","ERROR_WHILE_REQUESTING_SDP_FILE:_REMOTE_EXCEPTION":"vMRF: ERROR_WHILE_REQUESTING_SDP_FILE:_REMOTE_EXCEPTION","NO_STREAMING_RESOURCES":"vMRF: NO_STREAMING_RESOURCES","NO_STREAMING_MODULES_REGISTERED":"vMRF: NO_STREAMING_MODULES_REGISTERED","SM_FAILURE":"vMRF: SM_FAILURE","MISSING_FILE_OR_ENCODER":"vMRF: MISSING_FILE_OR_ENCODER","INVALID_RANGE":"vMRF: INVALID_RANGE","THRESHOLD_VALUE_EXCEEDED":"vMRF: THRESHOLD_VALUE_EXCEEDED","TICKET_QUEUE_FULL":"vMRF: TICKET_QUEUE_FULL","PARSING_INITIALIZATION_EXCEPTION":"vMRF: PARSING_INITIALIZATION_EXCEPTION","CUSTOMERCARE_INTERNAL_EXCEPTION":"vMRF: CUSTOMERCARE_INTERNAL_EXCEPTION","PARSING_EXCEPTION":"vMRF: PARSING_EXCEPTION","I/O_PROBLEM":"vMRF: I/O_PROBLEM","INEXISTENT_FILE_OR_FOLDER":"vMRF: INEXISTENT_FILE_OR_FOLDER","FILE_NOT_IN_XML_FORMAT":"vMRF: FILE_NOT_IN_XML_FORMAT","SERVICE_STATE_CHANGE":"vMRF: SERVICE_STATE_CHANGE","MONITORED_FILE_UPDATE_ERROR":"vMRF: MONITORED_FILE_UPDATE_ERROR","MONITORED_RPM_DELETED_ERROR":"vMRF: MONITORED_RPM_DELETED_ERROR","MONITORED_RPM_ADDED_ERROR":"vMRF: MONITORED_RPM_ADDED_ERROR","MONITORED_CHMOD_ERROR":"vMRF: MONITORED_CHMOD_ERROR","MONITORED_CHOWN_ERROR":"vMRF: MONITORED_CHOWN_ERROR","PASSWD_ROOT_ERROR":"vMRF: PASSWD_ROOT_ERROR","PASSWD_ERROR":"vMRF: PASSWD_ERROR","ROOTKIT_ERROR":"vMRF: ROOTKIT_ERROR","STARTUP_ERR_UNDEFINED_PORT":"vMRF: STARTUP_ERR_UNDEFINED_PORT","STARTUP_ERR_FAIL_FIND_HOSTNAME":"vMRF: STARTUP_ERR_FAIL_FIND_HOSTNAME","STARTUP_ERR_CF_MISSING":"vMRF: STARTUP_ERR_CF_MISSING","STARTUP_ERR_FAILED_TO_OPEN_CF":"vMRF: STARTUP_ERR_FAILED_TO_OPEN_CF","STARTUP_ERR_FAILED_TO_BIND_PORT":"vMRF: STARTUP_ERR_FAILED_TO_BIND_PORT","STARTUP_ERR_CFG_UNIT_MISSING":"vMRF: STARTUP_ERR_CFG_UNIT_MISSING","MCTR_INVALID_CODEC_NAME":"vMRF: MCTR_INVALID_CODEC_NAME","RTSP_SERVER_FAILURE":"vMRF: RTSP_SERVER_FAILURE","RTSP_SERVER_QUARANTINE":"vMRF: RTSP_SERVER_QUARANTINE","TRANSCODING_FAILURE":"vMRF: TRANSCODING_FAILURE","FILE_CACHE_FAILURE":"vMRF: FILE_CACHE_FAILURE","STARTUP_ERROR_INITIALIZATION_FAILED":"vMRF: STARTUP_ERROR_INITIALIZATION_FAILED","CONFERENCE_FAILURE":"vMRF: CONFERENCE_FAILURE","PLC_DEGRADATION_LOW":"vMRF: PLC_DEGRADATION_LOW","PLC_DEGRADATION_MEDIUM":"vMRF: PLC_DEGRADATION_MEDIUM","PLC_DEGRADATION_HIGH":"vMRF: PLC_DEGRADATION_HIGH","AUDIO_RESYNCH_LOW":"vMRF: AUDIO_RESYNCH_LOW","AUDIO_RESYNCH_MEDIUM":"vMRF: AUDIO_RESYNCH_MEDIUM","AUDIO_RESYNCH_HIGH":"vMRF: AUDIO_RESYNCH_HIGH","VIDEO_RESYNCH_LOW":"vMRF: VIDEO_RESYNCH_LOW","VIDEO_RESYNCH_MEDIUM":"vMRF: VIDEO_RESYNCH_MEDIUM","VIDEO_RESYNCH_HIGH":"vMRF: VIDEO_RESYNCH_HIGH","PLAY_FAILURES_LOW":"vMRF: PLAY_FAILURES_LOW","PLAY_FAILURES_MEDIUM":"vMRF: PLAY_FAILURES_MEDIUM","PLAY_FAILURES_HIGH":"vMRF: PLAY_FAILURES_HIGH","NOT_ENOUGH_FREE_CONFEREE":"vMRF: NOT_ENOUGH_FREE_CONFEREE","NO_LONGER_FREE_CONFERENCE_ROOM":"vMRF: NO_LONGER_FREE_CONFERENCE_ROOM","STARTUP_ERROR_FAIL_TO_READ_CF":"vMRF: STARTUP_ERROR_FAIL_TO_READ_CF","STARTUP_ERROR_SIP_ADAPTER_INIT":"vMRF: STARTUP_ERROR_SIP_ADAPTER_INIT","STARTUP_ERROR_MONITORING_INIT":"vMRF: STARTUP_ERROR_MONITORING_INIT","REGISTER_ERROR_FAILURE":"vMRF: REGISTER_ERROR_FAILURE","DRI_ERROR_FAILURE":"vMRF: DRI_ERROR_FAILURE","STARTUP_ERROR_STACK_CONFIGURATION":"vMRF: STARTUP_ERROR_STACK_CONFIGURATION","STARTUP_ERROR_CONF":"vMRF: STARTUP_ERROR_CONF","STARTUP_ERROR_UNDEFINED_PORT":"vMRF: STARTUP_ERROR_UNDEFINED_PORT","HOST_REMOVED":"vMRF: HOST_REMOVED","INTERCEPT_THRESHOLD_NB_DIALOG_ALLOCATED":"vMRF: INTERCEPT_THRESHOLD_NB_DIALOG_ALLOCATED","STARTUP_ERROR_STACK_CONF":"vMRF: STARTUP_ERROR_STACK_CONF","STARTUP_ERROR_CONFIGURATION":"vMRF: STARTUP_ERROR_CONFIGURATION","STARTUP_ERROR_FAILED_TO_RETRIEVE_HOSTNAME":"vMRF: STARTUP_ERROR_FAILED_TO_RETRIEVE_HOSTNAME","LEVEL_WARNING_CALL":"vMRF: LEVEL_WARNING_CALL","LEVEL_ALARM_MINOR_CALL":"vMRF: LEVEL_ALARM_MINOR_CALL","LEVEL_ALARM_MAJOR_CALL":"vMRF: LEVEL_ALARM_MAJOR_CALL","LEVEL_ALARM_MRFPoutOfService":"vMRF: LEVEL_ALARM_MRFPoutOfService","MRFP_CALL_REJECTED_Threshold #1":"vMRF: MRFP_CALL_REJECTED_Threshold #1","MRFP_CALL_REJECTED_Threshold #2":"vMRF: MRFP_CALL_REJECTED_Threshold #2","MRFP_CALL_REJECTED_Threshold #3":"vMRF: MRFP_CALL_REJECTED_Threshold #3","MRFP_CALL_RETRIED_Threshold #1":"vMRF: MRFP_CALL_RETRIED_Threshold #1","MRFP_CALL_RETRIED_Threshold #2":"vMRF: MRFP_CALL_RETRIED_Threshold #2","MRFP_CALL_RETRIED_Threshold #3":"vMRF: MRFP_CALL_RETRIED_Threshold #3","STARTUP_PUB_FILE_NOT_PRESENT":"vMRF: STARTUP_PUB_FILE_NOT_PRESENT","STARTUP_INF_FILE_NOT_PRESENT":"vMRF: STARTUP_INF_FILE_NOT_PRESENT","STARTUP_LIC_FILE_NOT_PRESENT":"vMRF: STARTUP_LIC_FILE_NOT_PRESENT","GENERIC_HARDWARE_PROBLEM":"vMRF: GENERIC_HARDWARE_PROBLEM","HARD_DRIVE_PROBLEM":"vMRF: HARD_DRIVE_PROBLEM","NETWORK_LINK_PROBLEM":"vMRF: NETWORK_LINK_PROBLEM","POWER_SUPPLY_PROBLEM":"vMRF: POWER_SUPPLY_PROBLEM","SMART_HARD_DRIVE_PROBLEM":"vMRF: SMART_HARD_DRIVE_PROBLEM","STARTUP_ERROR":"vMRF: STARTUP_ERROR","RESOURCE_NOT_ACCESSIBLE":"vMRF: RESOURCE_NOT_ACCESSIBLE","RESOURCE_ACCESSIBLE":"vMRF: RESOURCE_ACCESSIBLE","RESOURCE_FULL":"vMRF: RESOURCE_FULL","DRI_ALARM":"vMRF: DRI_ALARM","REGISTER_ERROR_CCF":"vMRF: REGISTER_ERROR_CCF","REGISTER_ERROR_EXTERNAL":"vMRF: REGISTER_ERROR_EXTERNAL","TIMEOUT_ERROR":"vMRF: TIMEOUT_ERROR","VXML_ERROR":"vMRF: VXML_ERROR","A Network Element is no longer available due to a connection failure":"vMVM: A Network Element is no longer available due to a connection failure","A MetaSphere server is reporting a fault with the configuration of its connection to MetaView":"vMVM: A MetaSphere server is reporting a fault with the configuration of its connection to MetaView","Configured OBS IPs don't match available OBS nodes. Configured but unavailable nodes include: []. Real nodes not configured include: []":"vMVM: Configured OBS IPs don't match available OBS nodes. Configured but unavailable nodes include: []. Real nodes not configured include: []","Service Assurance Server cannot be contacted":"vMVM: Service Assurance Server cannot be contacted","The primary MetaView Director has lost contact with the backup MetaView Director":"vMVM: The primary MetaView Director has lost contact with the backup MetaView Director","The active server has lost connection to the standby":"vMVM: The active server has lost connection to the standby","CrashCounter":"vprobes-vBE-Processing: CrashCounter","IsAlive":"vprobes-vBE-Processing: IsAlive","SwRestart":"vprobes-vLB: SwRestart","Repeated exceptions have occurred.":"vSBC-Metaswitch: Repeated exceptions have occurred.","A licensing limit is close to capacity.":"vSBC-Metaswitch: A licensing limit is close to capacity.","One or more feature packs have been breached.":"vSBC-Metaswitch: One or more feature packs have been breached.","The grace period on this Perimeta system will expire in less than 48 hours, after which calls will not be processed.":"vSBC-Metaswitch: The grace period on this Perimeta system will expire in less than 48 hours, after which calls will not be processed.","The grace period on this Perimeta system will expire in less than 7 days, after which calls will not be processed.":"vSBC-Metaswitch: The grace period on this Perimeta system will expire in less than 7 days, after which calls will not be processed.","The license on this Perimeta system will expire in less than 4 weeks.":"vSBC-Metaswitch: The license on this Perimeta system will expire in less than 4 weeks.","A Perimeta blade has become unlicensed.":"vSBC-Metaswitch: A Perimeta blade has become unlicensed.","Perimeta is licensed with a bypass certificate, which is valid until the time displayed.":"vSBC-Metaswitch: Perimeta is licensed with a bypass certificate, which is valid until the time displayed.","The number of licensed instances exceeded a threshold of the licensed limit.":"vSBC-Metaswitch: The number of licensed instances exceeded a threshold of the licensed limit.","The software token on the primary Distributed Capacity Manager will expire on the displayed date.":"vSBC-Metaswitch: The software token on the primary Distributed Capacity Manager will expire on the displayed date.","A capacity limit on the license installed on this Perimeta system does not match the largest limit across all systems in the deployment.":"vSBC-Metaswitch: A capacity limit on the license installed on this Perimeta system does not match the largest limit across all systems in the deployment.","An adjacency has voice quality alerts.":"vSBC-Metaswitch: An adjacency has voice quality alerts.","The number of calls being audited is congested.":"vSBC-Metaswitch: The number of calls being audited is congested.","Session Controller is rejecting calls because there is no valid active call policy set configured.":"vSBC-Metaswitch: Session Controller is rejecting calls because there is no valid active call policy set configured.","A call policy set is inactive because it has been misconfigured.":"vSBC-Metaswitch: A call policy set is inactive because it has been misconfigured.","Session Controller is inactive and rejecting calls.":"vSBC-Metaswitch: Session Controller is inactive and rejecting calls.","Sources have breached minor or major blacklist thresholds.":"vSBC-Metaswitch: Sources have breached minor or major blacklist thresholds.","Sources are blacklisted.":"vSBC-Metaswitch: Sources are blacklisted.","The blacklisting configuration will change as a result of upgrade and some configured blacklists or alerts will no longer be applied.":"vSBC-Metaswitch: The blacklisting configuration will change as a result of upgrade and some configured blacklists or alerts will no longer be applied.","A large number of downgrades and bans have been created as a result of blacklisting.":"vSBC-Metaswitch: A large number of downgrades and bans have been created as a result of blacklisting.","Session Controller is unable to track further sources for blacklisting.":"vSBC-Metaswitch: Session Controller is unable to track further sources for blacklisting.","A software protection switch was triggered.":"vSBC-Metaswitch: A software protection switch was triggered.","A disk area on a processor blade is nearly full.":"vSBC-Metaswitch: A disk area on a processor blade is nearly full.","Memory use is very high.":"vSBC-Metaswitch: Memory use is very high.","The primary processor-blade has lost contact with the backup.":"vSBC-Metaswitch: The primary processor-blade has lost contact with the backup.","An efix or patch has been applied to this system containing diagnostic versions of some software libraries.":"vSBC-Metaswitch: An efix or patch has been applied to this system containing diagnostic versions of some software libraries.","A software protection switch (SPS) was triggered. Call and registration state was lost.":"vSBC-Metaswitch: A software protection switch (SPS) was triggered. Call and registration state was lost.","The Ethernet Heartbeat between primary and backup processors has failed.":"vSBC-Metaswitch: The Ethernet Heartbeat between primary and backup processors has failed.","The Backplane Heartbeat between primary and backup processors has failed.":"vSBC-Metaswitch: The Backplane Heartbeat between primary and backup processors has failed.","A disk area on a processor blade reported an error.":"vSBC-Metaswitch: A disk area on a processor blade reported an error.","The system is upgrading.":"vSBC-Metaswitch: The system is upgrading.","An error with NTP functionality has been detected.":"vSBC-Metaswitch: An error with NTP functionality has been detected.","One or more users are locked out of the system.":"vSBC-Metaswitch: One or more users are locked out of the system.","The Craft Terminal user FTP directory on a processor blade is nearly full.":"vSBC-Metaswitch: The Craft Terminal user FTP directory on a processor blade is nearly full.","A scheduled configuration snapshot has failed.":"vSBC-Metaswitch: A scheduled configuration snapshot has failed.","The Session Controller is stopping as a result of administrator action.":"vSBC-Metaswitch: The Session Controller is stopping as a result of administrator action.","A Session Controller processor blade is stopping as a result of administrator action.":"vSBC-Metaswitch: A Session Controller processor blade is stopping as a result of administrator action.","An object could not be activated because its service address does not exist or is not fully specified.":"vSBC-Metaswitch: An object could not be activated because its service address does not exist or is not fully specified.","The hardware on a processor does not meet minimum requirements.":"vSBC-Metaswitch: The hardware on a processor does not meet minimum requirements.","The hardware expectations of the two processors are not the same.":"vSBC-Metaswitch: The hardware expectations of the two processors are not the same.","The read speed of the main hard disk on a processor blade is too slow.":"vSBC-Metaswitch: The read speed of the main hard disk on a processor blade is too slow.","An error has occurred reading from the hard disk on a processor blade.":"vSBC-Metaswitch: An error has occurred reading from the hard disk on a processor blade.","Backup and primary processor-blades have an inconsistent system role.":"vSBC-Metaswitch: Backup and primary processor-blades have an inconsistent system role.","Event: The system encountered a critical error and had to restart.":"vSBC-Metaswitch: Event: The system encountered a critical error and had to restart.","Event: A RADIUS server failed to respond to an authentication request.":"vSBC-Metaswitch: Event: A RADIUS server failed to respond to an authentication request.","Event: All configured RADIUS servers failed to respond to authentication requests.":"vSBC-Metaswitch: Event: All configured RADIUS servers failed to respond to authentication requests.","Event: The number of CPUs has changed.":"vSBC-Metaswitch: Event: The number of CPUs has changed.","Event: A user has been automatically deleted":"vSBC-Metaswitch: Event: A user has been automatically deleted","The primary processor blade has lost management connectivity":"vSBC-Metaswitch: The primary processor blade has lost management connectivity","Event: A processor blade is running with DPDK mode disabled when DPDK mode is,expected.":"vSBC-Metaswitch: Event: A processor blade is running with DPDK mode disabled when DPDK mode is,expected.","Event: Processor blade %1 is running with DPDK mode disabled when DPDK mode may be possible.":"vSBC-Metaswitch: Event: Processor blade %1 is running with DPDK mode disabled when DPDK mode may be possible.","Perimeta is attempting to resend cached billing records.":"vSBC-Metaswitch: Perimeta is attempting to resend cached billing records.","The Rf billing cache is full.":"vSBC-Metaswitch: The Rf billing cache is full.","The inbound call queue is congested.":"vSBC-Metaswitch: The inbound call queue is congested.","A configured realm group contains realms that are not available to the SBC.":"vSBC-Metaswitch: A configured realm group contains realms that are not available to the SBC.","An allowed MSC configuration is not connected to any physical MSCs.":"vSBC-Metaswitch: An allowed MSC configuration is not connected to any physical MSCs.","A SIP Peer has stopped responding to SIP OPTIONS pings. MSW: 20160303: Alarm text is changed in v3.9 software to read: \\"An adjacency has lost connectivity, according to SIP OPTIONS pings\\"":"vSBC-Metaswitch: A SIP Peer has stopped responding to SIP OPTIONS pings. MSW: 20160303: Alarm text is changed in v3.9 software to read: \\"An adjacency has lost connectivity, according to SIP OPTIONS pings\\"","An adjacency has failed as the listen socket could not be created. Check for configuration mismatches with the associated service interface.":"vSBC-Metaswitch: An adjacency has failed as the listen socket could not be created. Check for configuration mismatches with the associated service interface.","No suitable DNS records were found for a peer group's DNS hostname.":"vSBC-Metaswitch: No suitable DNS records were found for a peer group's DNS hostname.","One or more SIP peers from a peer group have stopped responding to SIP OPTIONS pings":"vSBC-Metaswitch: One or more SIP peers from a peer group have stopped responding to SIP OPTIONS pings","An adjacency has failed as its service network does not match the service network on its associated peer group.":"vSBC-Metaswitch: An adjacency has failed as its service network does not match the service network on its associated peer group.","An adjacency has failed as its configured TLS certificate could not be found.":"vSBC-Metaswitch: An adjacency has failed as its configured TLS certificate could not be found.","The caching function has not been initialized properly.":"vSBC-Metaswitch: The caching function has not been initialized properly.","An adjacency has failed as the listen socket could not be created.":"vSBC-Metaswitch: An adjacency has failed as the listen socket could not be created.","An adjacency is congested and may be rejecting calls.":"vSBC-Metaswitch: An adjacency is congested and may be rejecting calls.","There is an issue with a Diameter peer.":"vSBC-Metaswitch: There is an issue with a Diameter peer.","A realm is no longer reachable via any configured peers.":"vSBC-Metaswitch: A realm is no longer reachable via any configured peers.","An FQDN for a configured Diameter peer has failed to resolve to a valid IP address.":"vSBC-Metaswitch: An FQDN for a configured Diameter peer has failed to resolve to a valid IP address.","One or more peers resolved from a DNS lookup of a configured peer's address cannot be contacted":"vSBC-Metaswitch: One or more peers resolved from a DNS lookup of a configured peer's address cannot be contacted","An interface ARP or NDP probe has failed.":"vSBC-Metaswitch: An interface ARP or NDP probe has failed.","One or more IP address conflicts have been detected on service interfaces with zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.":"vSBC-Metaswitch: One or more IP address conflicts have been detected on service interfaces with zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.","One or more IP address conflicts have been detected on service interfaces with non-zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.":"vSBC-Metaswitch: One or more IP address conflicts have been detected on service interfaces with non-zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.","An interface device is running below the expected speed. This alarm was originally triggered by a probe failure on a service interface.":"vSBC-Metaswitch: An interface device is running below the expected speed. This alarm was originally triggered by a probe failure on a service interface.","An interface device is running above the expected speed.":"vSBC-Metaswitch: An interface device is running above the expected speed.","An IP address conflict has been detected on a management interface.":"vSBC-Metaswitch: An IP address conflict has been detected on a management interface.","An interface ICMP probe has failed.":"vSBC-Metaswitch: An interface ICMP probe has failed.","A High-Availability link has detected a connectivity issue.":"vSBC-Metaswitch: A High-Availability link has detected a connectivity issue.","An HA-link device is being reported as underspeed.":"vSBC-Metaswitch: An HA-link device is being reported as underspeed.","An IP address conflict has been detected on a replication interface.":"vSBC-Metaswitch: An IP address conflict has been detected on a replication interface.","The Session Controller has started.":"vSBC-Metaswitch: The Session Controller has started.","A statistic exceeded its configured thresholds.":"vSBC-Metaswitch: A statistic exceeded its configured thresholds.","One or more statistic has not been retrieved at least 3 times in a row.":"vSBC-Metaswitch: One or more statistic has not been retrieved at least 3 times in a row.","A Refresh Alarms request was triggered. Alarms not re-raised will be cleared in 5 minutes.":"vSBC-Metaswitch: A Refresh Alarms request was triggered. Alarms not re-raised will be cleared in 5 minutes.","A statistic has exceeded its configured thresholds.":"vSBC-Metaswitch: A statistic has exceeded its configured thresholds.","A Fallback Operation will soon be started":"vSBG: A Fallback Operation will soon be started","BRM, Auto Export Backup Failed":"vSBG: BRM, Auto Export Backup Failed","BRM, Scheduled Backup Failed":"vSBG: BRM, Scheduled Backup Failed","COM SA, AMF Component Cleanup Failed":"vSBG: COM SA, AMF Component Cleanup Failed","COM SA, AMF Component Instantiation Failed":"vSBG: COM SA, AMF Component Instantiation Failed","COM SA, AMF SI Unassigned":"vSBG: COM SA, AMF SI Unassigned","COM SA, CLM Cluster Node Unavailable":"vSBG: COM SA, CLM Cluster Node Unavailable","COM SA, MDF Detected Model Error":"vSBG: COM SA, MDF Detected Model Error","COM SA, Proxy Status of a Component Changed to Unproxied":"vSBG: COM SA, Proxy Status of a Component Changed to Unproxied","File Management, Number of Files in FileGroup Exceeded":"vSBG: File Management, Number of Files in FileGroup Exceeded","File Management, Max Size in FileGroup Exceeded":"vSBG: File Management, Max Size in FileGroup Exceeded","LOTC Disk Replication Communication":"vSBG: LOTC Disk Replication Communication","LOTC Disk Replication Consistency":"vSBG: LOTC Disk Replication Consistency","LOTC Disk Usage":"vSBG: LOTC Disk Usage","LOTC memory Usage":"vSBG: LOTC memory Usage","LOTC Time Synchronization":"vSBG: LOTC Time Synchronization","SBG, BGF Control Link Down":"vSBG: SBG, BGF Control Link Down","SBG, BGF Control Link Disabled":"vSBG: SBG, BGF Control Link Disabled","SBG, BGF Control Link Enabled":"vSBG: SBG, BGF Control Link Enabled","SBG, BGF Control Link Remote Locked":"vSBG: SBG, BGF Control Link Remote Locked","SBG, Charging Data Storage Maximum Records Reached":"vSBG: SBG, Charging Data Storage Maximum Records Reached","SBG, Charging Server Rejects Charging Data":"vSBG: SBG, Charging Server Rejects Charging Data","SBG, Excessive Packet Rate Detected ":"vSBG: SBG, Excessive Packet Rate Detected ","SBG, High Amount of Malformed Packets Received":"vSBG: SBG, High Amount of Malformed Packets Received","SBG, High Amount of STUN Packets Detected":"vSBG: SBG, High Amount of STUN Packets Detected","SBG, High Amount of TCP SYN Packets Received":"vSBG: SBG, High Amount of TCP SYN Packets Received","SBG, High Amount of UDP Packets Received ":"vSBG: SBG, High Amount of UDP Packets Received ","SBG, IP Address Blocked Due to Excessive Packet Rate":"vSBG: SBG, IP Address Blocked Due to Excessive Packet Rate","SBG, Lost Connectivity to Diameter Server":"vSBG: SBG, Lost Connectivity to Diameter Server","SBG, Mated Pair out of Service":"vSBG: SBG, Mated Pair out of Service","SBG, Network Unavailable for Media Handling":"vSBG: SBG, Network Unavailable for Media Handling","SBG, Non-emergency Call Released to Free Resources for Emergency Call":"vSBG: SBG, Non-emergency Call Released to Free Resources for Emergency Call","SBG, Not Enough Disk Space for Storing Charging Data":"vSBG: SBG, Not Enough Disk Space for Storing Charging Data","SBG, Payload Mated Pair Failure":"vSBG: SBG, Payload Mated Pair Failure","SBG, Payload Processor Failure":"vSBG: SBG, Payload Processor Failure","SBG, Processor Overloaded":"vSBG: SBG, Processor Overloaded","SBG, Registered User Set in Quarantine":"vSBG: SBG, Registered User Set in Quarantine","SBG, Registration Contacts Exceed Configured Threshold":"vSBG: SBG, Registration Contacts Exceed Configured Threshold","SBG, Sequential Restart Initiated":"vSBG: SBG, Sequential Restart Initiated","SBG, SIP Abuse Detected":"vSBG: SBG, SIP Abuse Detected","SBG, SIP Network Locked":"vSBG: SBG, SIP Network Locked","SBG, SIP Next Hop Reachable":"vSBG: SBG, SIP Next Hop Reachable","SBG, SIP Next Hop Unreachable":"vSBG: SBG, SIP Next Hop Unreachable","SBG, SIP Request Rejected by Network Throttling":"vSBG: SBG, SIP Request Rejected by Network Throttling","SBG, TLS Certificate Imported":"vSBG: SBG, TLS Certificate Imported","SBG, Trace Recording Session Number Limit Reached":"vSBG: SBG, Trace Recording Session Number Limit Reached","SBG, Trace Session Deactivated":"vSBG: SBG, Trace Session Deactivated","SBG, Trace Session Times Out":"vSBG: SBG, Trace Session Times Out","SBG, Unknown Media Type or Payload Type":"vSBG: SBG, Unknown Media Type or Payload Type"} +ui.location.default=classpath:/clds/templates/ui-location-default.json +ui.alarm.default=classpath:/clds/templates/ui-alarm-default.json # # if action.test.override is true, then any action will be marked as test=true (even if incoming action request had test=false); otherwise, test flag will be unchanged on the action request action.test.override=false @@ -101,9 +101,9 @@ action.insert.test.event=false clds.service.cache.invalidate.after.seconds=120 #DCAE Inventory Url Properties -DCAE_INVENTORY_URL = http://dcae.api.simpledemo.onap.org:8080 +dcae.inventory.url=http://dcae.api.simpledemo.onap.org:8080 #DCAE Dispatcher Url Properties -DCAE_DISPATCHER_URL = http://dcae.api.simpledemo.onap.org:8080 +dcae.dispatcher.url=http://dcae.api.simpledemo.onap.org:8080 dcae.header.requestId = X-ECOMP-RequestID diff --git a/src/test/resources/clds/templates/dcae-decode-service_ids.json b/src/test/resources/clds/templates/dcae-decode-service_ids.json new file mode 100644 index 000000000..619cac67a --- /dev/null +++ b/src/test/resources/clds/templates/dcae-decode-service_ids.json @@ -0,0 +1,20 @@ +{ + "vUSP": [ + "vUSP - vCTS" + ], + "Trinity": [ + "ASBGv TLS VNF", + "ASBGv No TLS", + "ASBGv (NO TLS) VNF", + "ASBGv TLS", + "NSBGv VNF", + "NSBGv" + ], + "vSCP": [ + "AKRON_vSCP_F5_FW-SVC/vSCP_F5_FW 1", + "ALLEN_vSCP_F5_FW-SVC/vSCP_F5_FW 1" + ], + "vProbes": [ + "vProbes - FW" + ] +} diff --git a/src/test/resources/clds/templates/dcae-deployment-template.json b/src/test/resources/clds/templates/dcae-deployment-template.json new file mode 100644 index 000000000..d4891747e --- /dev/null +++ b/src/test/resources/clds/templates/dcae-deployment-template.json @@ -0,0 +1,9 @@ +{ + "serviceTypeId": "???", + "inputs": { + "aaiEnrichmentHost": "10.0.1.1", + "enableAAIEnrichment": "true", + "subscriberHostName": "10.0.11.1", + "publisherHostName": "10.0.11.1" + } +} diff --git a/src/test/resources/clds/templates/dcae-template.json b/src/test/resources/clds/templates/dcae-template.json new file mode 100644 index 000000000..b7cfb232e --- /dev/null +++ b/src/test/resources/clds/templates/dcae-template.json @@ -0,0 +1,26 @@ +{ + "properties": { + "service_name": "", + "service_ids": [ + ], + "vnf_ids": [ + ], + "location_ids": [ + ] + }, + "template": { + "tca": { + "dcae": { + "inputTopic": "", + "outputTopic": "", + "closedLoopControlName": "", + "closedLoopEventClient": "configuration.dcae.microservice.tca.xml", + "policyName": "", + "policyScope": "service=vSCP;resource=F5;type=configuration", + "policyVersion": "v0.0.1", + "serviceConfigurations": { + } + } + } + } +} diff --git a/src/test/resources/clds/templates/op-eNodeB-recipe.json b/src/test/resources/clds/templates/op-eNodeB-recipe.json new file mode 100644 index 000000000..7098987a2 --- /dev/null +++ b/src/test/resources/clds/templates/op-eNodeB-recipe.json @@ -0,0 +1,44 @@ +{ + "eNodeBRecipes": [ + { + "Actor": "AOTS", + "Recipe": "checkENodeBTicketHours", + "ParentPolicy": "", + "PPConditions": "", + "Retry": "0", + "TimeLimit": "120" + }, + { + "Actor": "AOTS", + "Recipe": "checkEquipmentStatus", + "ParentPolicy": "checkENodeBTicketHours", + "PPConditions": "Success", + "Retry": "0", + "TimeLimit": "120" + }, + { + "Actor": "AOTS", + "Recipe": "checkEimStatus", + "ParentPolicy": "checkEquipmentStatus", + "PPConditions": "Success", + "Retry": "0", + "TimeLimit": "120" + }, + { + "Actor": "AOTS", + "Recipe": "checkMaintenanceWindow", + "ParentPolicy": "checkEimStatus", + "PPConditions": "Success", + "Retry": "0", + "TimeLimit": "120" + }, + { + "Actor": "SDNR", + "Recipe": "Reset", + "ParentPolicy": "checkMaintenanceWindow", + "PPConditions": "Success", + "Retry": "", + "TimeLimit": "" + } + ] +} diff --git a/src/test/resources/clds/templates/sdc-decode-service_ids.json b/src/test/resources/clds/templates/sdc-decode-service_ids.json new file mode 100644 index 000000000..9e26dfeeb --- /dev/null +++ b/src/test/resources/clds/templates/sdc-decode-service_ids.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/src/test/resources/clds/templates/sdc-template.json b/src/test/resources/clds/templates/sdc-template.json new file mode 100644 index 000000000..9e26dfeeb --- /dev/null +++ b/src/test/resources/clds/templates/sdc-template.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/src/test/resources/clds/templates/tca-policy-template.json b/src/test/resources/clds/templates/tca-policy-template.json new file mode 100644 index 000000000..eca4d467c --- /dev/null +++ b/src/test/resources/clds/templates/tca-policy-template.json @@ -0,0 +1,19 @@ +{ + "service": "tca_policy", + "version": "1.0.0", + "location": "SampleServiceLocation", + "configName": "SampleConfigName", + "uuid": "test", + "policyScope": "resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", + "templateVersion": "OpenSource.version.1", + "policyName": "MicroServicevCPE", + "description": "MicroService Policy", + "priority": "1", + "riskType": "SampleRiskType", + "riskLevel": "1", + "guard": "False", + "content": { + "tca_policy": { + } + } +} diff --git a/src/test/resources/clds/templates/tca-template.json b/src/test/resources/clds/templates/tca-template.json new file mode 100644 index 000000000..892fc0d62 --- /dev/null +++ b/src/test/resources/clds/templates/tca-template.json @@ -0,0 +1,14 @@ +{ + "domain": "measurementsForVfScaling", + "metricsPerEventName": [ + { + "eventName": "???", + "controlLoopSchemaType": "VNF", + "policyScope": "DCAE", + "policyName": "???", + "policyVersion": "v0.0.1", + "thresholds": [ + ] + } + ] +} diff --git a/src/test/resources/clds/templates/tca-thresholds-template.json b/src/test/resources/clds/templates/tca-thresholds-template.json new file mode 100644 index 000000000..b67e96321 --- /dev/null +++ b/src/test/resources/clds/templates/tca-thresholds-template.json @@ -0,0 +1,9 @@ +{ + "closedLoopControlName": "???", + "version": "1.0.2", + "fieldPath": "?????", + "thresholdValue": 0, + "direction": "???", + "severity": "MAJOR", + "closedLoopEventStatus": "???" +} diff --git a/src/test/resources/clds/templates/ui-alarm-default.json b/src/test/resources/clds/templates/ui-alarm-default.json new file mode 100644 index 000000000..0d0835981 --- /dev/null +++ b/src/test/resources/clds/templates/ui-alarm-default.json @@ -0,0 +1,597 @@ +{ + "Reports a transient alarm condition when an incoming CDR cannot be decoded successfully": "vCCF: Reports a transient alarm condition when an incoming CDR cannot be decoded successfully", + "Reports a transient alarm condition when an incoming ACR message cannot be decoded successfully": "vCCF: Reports a transient alarm condition when an incoming ACR message cannot be decoded successfully", + "Reports a transient alarm condition when a CDR validation fails": "vCCF: Reports a transient alarm condition when a CDR validation fails", + "Reports a transient alarm condition when an incoming GTP' message cannot be decoded successfully": "vCCF: Reports a transient alarm condition when an incoming GTP' message cannot be decoded successfully", + "Reports a transient alarm condition when an incoming CDR file cannot be decoded successfully": "vCCF: Reports a transient alarm condition when an incoming CDR file cannot be decoded successfully", + "Reports a transient alarm condition when an incoming Sh/Dh file cannot be decoded successfully": "vCCF: Reports a transient alarm condition when an incoming Sh/Dh file cannot be decoded successfully", + "Reports a transient alarm condition when an incoming ACR message is in conflict with former ACR in one diameter session": "vCCF: Reports a transient alarm condition when an incoming ACR message is in conflict with former ACR in one diameter session", + "Reports a transient alarm condition when an outgoing Ro message send fails": "vCCF: Reports a transient alarm condition when an outgoing Ro message send fails", + "Reports a transient alarm condition when an outgoing GTP' message send fails": "vCCF: Reports a transient alarm condition when an outgoing GTP' message send fails", + "Reports a transient alarm condition when an outgoing Sh/Dh message send fails": "vCCF: Reports a transient alarm condition when an outgoing Sh/Dh message send fails", + "Reports an alarm when build or send Rf message fail": "vCCF: Reports an alarm when build or send Rf message fail", + "Reports a transient alarm condition when an abnormal incoming CCA message": "vCCF: Reports a transient alarm condition when an abnormal incoming CCA message", + "Reports a transient alarm condition when there is an abnormal incoming Sh/Dh message": "vCCF: Reports a transient alarm condition when there is an abnormal incoming Sh/Dh message", + "For Rf interface, if IeCCF receives a message with incorrect value for session id.": "vCCF: For Rf interface, if IeCCF receives a message with incorrect value for session id.", + "Reports an alarm when CPU usage exceeds the major threshold, the local database exceeds the critical threshold, or the ACR partition exceeds the major threshold": "vCCF: Reports an alarm when CPU usage exceeds the major threshold, the local database exceeds the critical threshold, or the ACR partition exceeds the major threshold", + "Reports an alarm when CPU usage exceeds the minor threshold, the local database exceeds the major threshold, or the ACR partition exceeds the minor threshold": "vCCF: Reports an alarm when CPU usage exceeds the minor threshold, the local database exceeds the major threshold, or the ACR partition exceeds the minor threshold", + "Reports an alarm when CPU usage exceeds the critical threshold, the local database exceeds the major threshold, or the CDR partition exceeds the critical threshold": "vCCF: Reports an alarm when CPU usage exceeds the critical threshold, the local database exceeds the major threshold, or the CDR partition exceeds the critical threshold", + "Reports an alarm when CPU usage exceeds the major threshold or CDR partition exceeds the major threshold": "vCCF: Reports an alarm when CPU usage exceeds the major threshold or CDR partition exceeds the major threshold", + "Reports an alarm when external DB usage exceeds the major threshold": "vCCF: Reports an alarm when external DB usage exceeds the major threshold", + "Reports a transient alarm condition when the workflow definition table is provisioned wrongly": "vCCF: Reports a transient alarm condition when the workflow definition table is provisioned wrongly", + "Reports a transient alarm condition when the Action Definition table is provisioned wrongly": "vCCF: Reports a transient alarm condition when the Action Definition table is provisioned wrongly", + "Reports a transient alarm condition when the Ro Host Configuration is provisioned wrongly": "vCCF: Reports a transient alarm condition when the Ro Host Configuration is provisioned wrongly", + "Reports a transient alarm condition when the Sh Host Configuration is provisioned wrongly": "vCCF: Reports a transient alarm condition when the Sh Host Configuration is provisioned wrongly", + "Reports a transient alarm condition when a specific dictionary or rule does not exist": "vCCF: Reports a transient alarm condition when a specific dictionary or rule does not exist", + "Reports a transient alarm condition when failure occurs when mapping Rf message to XDR": "vCCF: Reports a transient alarm condition when failure occurs when mapping Rf message to XDR", + "Reports a transient alarm condition when failure occurs in aggregating process": "vCCF: Reports a transient alarm condition when failure occurs in aggregating process", + "Reports a transient alarm condition when failure happens in correlating process": "vCCF: Reports a transient alarm condition when failure happens in correlating process", + "Reports a transient alarm condition when failure occurs in generating CDR": "vCCF: Reports a transient alarm condition when failure occurs in generating CDR", + "Reports a transient alarm condition when failure occurs in constructing CCR message from XDR": "vCCF: Reports a transient alarm condition when failure occurs in constructing CCR message from XDR", + "Reports a transient alarm condition when an ACR/XER/BER/INC record write to bad file": "vCCF: Reports a transient alarm condition when an ACR/XER/BER/INC record write to bad file", + "Reports an alarm condition when aggregation or correlation central database connection is lost": "vCCF: Reports an alarm condition when aggregation or correlation central database connection is lost", + "Reports an alarm condition when a specific failure happens in database operations": "vCCF: Reports an alarm condition when a specific failure happens in database operations", + "Reports an alarm condition when DB capacity has been consumed to critical threshold": "vCCF: Reports an alarm condition when DB capacity has been consumed to critical threshold", + "Reports an alarm condition when DB capacity has been consumed to major threshold": "vCCF: Reports an alarm condition when DB capacity has been consumed to major threshold", + "Reports an alarm condition when DB capacity has been consumed to minor threshold.": "vCCF: Reports an alarm condition when DB capacity has been consumed to minor threshold.", + "Reports an alarm condition when application cannot deliver CDR to CDRSCH subsystem": "vCCF: Reports an alarm condition when application cannot deliver CDR to CDRSCH subsystem", + "Reports an alarm condition when some fields of ACR file header have error value and this ACR file cannot be processed further": "vCCF: Reports an alarm condition when some fields of ACR file header have error value and this ACR file cannot be processed further", + "Reports an alarm condition when some fields of ACR file header have invalid value and this ACR file can be processed further": "vCCF: Reports an alarm condition when some fields of ACR file header have invalid value and this ACR file can be processed further", + "Reports an alarm condition when the ACR file loses some ACR records": "vCCF: Reports an alarm condition when the ACR file loses some ACR records", + "Reports an alarm condition when some fields of ACR record header have error value and this ACR record and the following ACR records cannot be processed further": "vCCF: Reports an alarm condition when some fields of ACR record header have error value and this ACR record and the following ACR records cannot be processed further", + "Reports an alarm condition when error occurs in processing CDR/ACR files": "vCCF: Reports an alarm condition when error occurs in processing CDR/ACR files", + "Reports an alarm condition when CDR partition has been consumed to critical threshold": "vCCF: Reports an alarm condition when CDR partition has been consumed to critical threshold", + "Reports an alarm condition when CDR partition has been consumed to major threshold.": "vCCF: Reports an alarm condition when CDR partition has been consumed to major threshold.", + "Reports an alarm condition when CDR partition has been consumed to minor threshold": "vCCF: Reports an alarm condition when CDR partition has been consumed to minor threshold", + "Reports an alarm condition when ACR partition has been consumed to critical threshold": "vCCF: Reports an alarm condition when ACR partition has been consumed to critical threshold", + "Reports an alarm condition when ACR partition has been consumed to major threshold": "vCCF: Reports an alarm condition when ACR partition has been consumed to major threshold", + "Reports an alarm condition when ACR partition has been consumed to minor threshold": "vCCF: Reports an alarm condition when ACR partition has been consumed to minor threshold", + "Reports an alarm condition when CPU consumption reaches critical threshold": "vCCF: Reports an alarm condition when CPU consumption reaches critical threshold", + "Reports an alarm condition when CPU consumption reaches major threshold": "vCCF: Reports an alarm condition when CPU consumption reaches major threshold", + "Reports an alarm condition when CPU consumption reaches minor threshold": "vCCF: Reports an alarm condition when CPU consumption reaches minor threshold", + "Service shall monitor * number of partial CDR * number of incompleted CDR * number of unacceptable CDR If any one exceeds a configurable threshold in a configrable interval.": "vCCF: Service shall monitor * number of partial CDR * number of incompleted CDR * number of unacceptable CDR If any one exceeds a configurable threshold in a configrable interval.", + "CDR size exceed the platform capacity.": "vCCF: CDR size exceed the platform capacity.", + "Service shall monitor number of ACR without AII AVP, If it exceeds a configurable threshold in a configurable interval.": "vCCF: Service shall monitor number of ACR without AII AVP, If it exceeds a configurable threshold in a configurable interval.", + "Service shall monitor CDR cut due to ECCF_ACRNUMBER_IN_DB, If it exceeds a configurable threshold in a configurable interval.": "vCCF: Service shall monitor CDR cut due to ECCF_ACRNUMBER_IN_DB, If it exceeds a configurable threshold in a configurable interval.", + "External Node of this Cluster is overload": "vCCF: External Node of this Cluster is overload", + "bdb_high_latency": "vCCF-vDB: bdb_high_latency", + "bdb_high_throughput": "vCCF-vDB: bdb_high_throughput", + "bdb_size": "vCCF-vDB: bdb_size", + "cluster_inconsistent_rl_sw": "vCCF-vDB: cluster_inconsistent_rl_sw", + "cluster_node_remove_abort_failed": "vCCF-vDB: cluster_node_remove_abort_failed", + "cluster_node_remove_failed": "vCCF-vDB: cluster_node_remove_failed", + "cluster_ram_overcommit": "vCCF-vDB: cluster_ram_overcommit", + "cluster_rebalance_failed": "vCCF-vDB: cluster_rebalance_failed", + "cluster_too_few_nodes_for_replication": "vCCF-vDB: cluster_too_few_nodes_for_replication", + "node_cpu_utilization": "vCCF-vDB: node_cpu_utilization", + "node_ephemeral_storage": "vCCF-vDB: node_ephemeral_storage", + "node_failed": "vCCF-vDB: node_failed", + "node_memory": "vCCF-vDB: node_memory", + "node_net_throughput": "vCCF-vDB: node_net_throughput", + "node_offline_failed": "vCCF-vDB: node_offline_failed", + "node_offline_abort_failed": "vCCF-vDB: node_offline_abort_failed", + "node_online_failed": "vCCF-vDB: node_online_failed", + "OAM NODE- IS NOT ACTIVE ": "vCCF-vDB: OAM NODE- IS NOT ACTIVE ", + "LSS_asdaCommunicationFailure": "vCTS: LSS_asdaCommunicationFailure", + "LSS_ccdbCommunicationFailure": "vCTS: LSS_ccdbCommunicationFailure", + "LSS_cpiCTS3xxFailRate": "vCTS: LSS_cpiCTS3xxFailRate", + "LSS_cpiCTS4xxFailRate": "vCTS: LSS_cpiCTS4xxFailRate", + "LSS_cpiCTS5xxFailRate": "vCTS: LSS_cpiCTS5xxFailRate", + "LSS_cpiCTS6xxFailRate": "vCTS: LSS_cpiCTS6xxFailRate", + "LSS_cpiCTSSIPRetransmitInvite": "vCTS: LSS_cpiCTSSIPRetransmitInvite", + "LSS_cpiCTSSIPRetransmitNonInvite": "vCTS: LSS_cpiCTSSIPRetransmitNonInvite", + "LSS_glsInvalidCellId": "vCTS: LSS_glsInvalidCellId", + "LSS_glsServerUnavailable": "vCTS: LSS_glsServerUnavailable", + "LSS_hlrSyncConnection": "vCTS: LSS_hlrSyncConnection", + "LSS_hlrSyncQueue": "vCTS: LSS_hlrSyncQueue", + "LSS_lispBufferFullExternalLIG": "vCTS: LSS_lispBufferFullExternalLIG", + "LSS_prdbConnectWithAlternateFailure": "vCTS: LSS_prdbConnectWithAlternateFailure", + "LSS_prdbSyncDataToAlternateFailure": "vCTS: LSS_prdbSyncDataToAlternateFailure", + "LSS_preAllocatedResourceOverload": "vCTS: LSS_preAllocatedResourceOverload", + "LSS_prifSocketError": "vCTS: LSS_prifSocketError", + "LSS_prsCallInstanceExceeded": "vCTS: LSS_prsCallInstanceExceeded", + "LSS_prsCpuOverload": "vCTS: LSS_prsCpuOverload", + "LSS_prsDatabaseMigrationFailure": "vCTS: LSS_prsDatabaseMigrationFailure", + "LSS_prsFailureToConnectWithPRDB": "vCTS: LSS_prsFailureToConnectWithPRDB", + "LSS_prsQueueExceeded": "vCTS: LSS_prsQueueExceeded", + "LSS_smdiSocketError": "vCTS: LSS_smdiSocketError", + "LSS_socketError": "vCTS: LSS_socketError", + "LSS_softwareComponentDown": "vCTS: LSS_softwareComponentDown", + "LSS_tlsInitError": "vCTS: LSS_tlsInitError", + "LSS_usageOfSyncTable": "vCTS: LSS_usageOfSyncTable", + "LSS_utHttpProxyConnectionDown ": "vCTS: LSS_utHttpProxyConnectionDown ", + "LSS_wpifSocketError": "vCTS: LSS_wpifSocketError", + "LSS_acrTemporaryBufferOverload": "vCTS: LSS_acrTemporaryBufferOverload", + "LSS_adnsExtendedTTLcaching": "vCTS: LSS_adnsExtendedTTLcaching", + "LSS_adnsQueryFailureCaching": "vCTS: LSS_adnsQueryFailureCaching", + "LSS_adnsQueueCongestion": "vCTS: LSS_adnsQueueCongestion", + "LSS_asdaRequestQueue": "vCTS: LSS_asdaRequestQueue", + "LSS_capacityLicenseKeyExpiration": "vCTS: LSS_capacityLicenseKeyExpiration", + "LSS_capacityLicenseKeyNearExpiration": "vCTS: LSS_capacityLicenseKeyNearExpiration", + "LSS_capacityLicenseKeyValidationError": "vCTS: LSS_capacityLicenseKeyValidationError", + "LSS_cardConnectionLost": "vCTS: LSS_cardConnectionLost", + "LSS_cpiAlrmCritical": "vCTS: LSS_cpiAlrmCritical", + "LSS_cpiAlrmMajor": "vCTS: LSS_cpiAlrmMajor", + "LSS_cpiAlrmMinor": "vCTS: LSS_cpiAlrmMinor", + "LSS_cpiAlrmWarning": "vCTS: LSS_cpiAlrmWarning", + "LSS_cpiAsrtEsc": "vCTS: LSS_cpiAsrtEsc", + "LSS_cpiAsrtNonEsc": "vCTS: LSS_cpiAsrtNonEsc", + "LSS_cpiAsrtNonEscCritical": "vCTS: LSS_cpiAsrtNonEscCritical", + "LSS_cpiAsrtNonEscMajor": "vCTS: LSS_cpiAsrtNonEscMajor", + "LSS_cpiAsrtNonEscMinor": "vCTS: LSS_cpiAsrtNonEscMinor", + "LSS_cpiAudErrCount": "vCTS: LSS_cpiAudErrCount", + "LSS_cpiAudManAct": "vCTS: LSS_cpiAudManAct", + "LSS_cpiAudNewEvent": "vCTS: LSS_cpiAudNewEvent", + "LSS_cpiCompleteRateAlarm": "vCTS: LSS_cpiCompleteRateAlarm", + "LSS_cpiDropMGAllocConnReq": "vCTS: LSS_cpiDropMGAllocConnReq", + "LSS_cpiDropRateAlarm": "vCTS: LSS_cpiDropRateAlarm", + "LSS_cpiExceptionService": "vCTS: LSS_cpiExceptionService", + "LSS_cpiFailRateAlarm": "vCTS: LSS_cpiFailRateAlarm", + "LSS_cpiFailSCTPFastRetransIncr": "vCTS: LSS_cpiFailSCTPFastRetransIncr", + "LSS_cpiFailSCTPFastRetransRate": "vCTS: LSS_cpiFailSCTPFastRetransRate", + "LSS_cpiFailSCTPSRTT1Incr": "vCTS: LSS_cpiFailSCTPSRTT1Incr", + "LSS_cpiFailSCTPSRTT2Incr": "vCTS: LSS_cpiFailSCTPSRTT2Incr", + "LSS_cpiFailSCTPT3RetransIncr": "vCTS: LSS_cpiFailSCTPT3RetransIncr", + "LSS_cpiFailSCTPT3RetransRate": "vCTS: LSS_cpiFailSCTPT3RetransRate", + "LSS_cpiFileSysUsage": "vCTS: LSS_cpiFileSysUsage", + "LSS_cpiMemAllocFail": "vCTS: LSS_cpiMemAllocFail", + "LSS_cpiNumOfLICDRDel": "vCTS: LSS_cpiNumOfLICDRDel", + "LSS_cpiReinitServiceSelf": "vCTS: LSS_cpiReinitServiceSelf", + "LSS_cpiSIPRetransmitInvite": "vCTS: LSS_cpiSIPRetransmitInvite", + "LSS_cpiSIPRetransmitNonInvite": "vCTS: LSS_cpiSIPRetransmitNonInvite", + "LSS_cpiSS7DropSCTPPktsRcvd": "vCTS: LSS_cpiSS7DropSCTPPktsRcvd", + "LSS_cpiSS7FailSCTPFastRetransRate": "vCTS: LSS_cpiSS7FailSCTPFastRetransRate", + "LSS_cpiStabilityAlarm": "vCTS: LSS_cpiStabilityAlarm", + "LSS_cpuOverload": "vCTS: LSS_cpuOverload", + "LSS_databaseConnectionLost": "vCTS: LSS_databaseConnectionLost", + "LSS_databaseReplicationLinkDown": "vCTS: LSS_databaseReplicationLinkDown", + "LSS_databaseSizeExhausted": "vCTS: LSS_databaseSizeExhausted", + "LSS_dbHighCpuUtilization": "vCTS: LSS_dbHighCpuUtilization", + "LSS_dbOffline": "vCTS: LSS_dbOffline", + "LSS_dbStatusUnexpected": "vCTS: LSS_dbStatusUnexpected", + "LSS_degradedResource": "vCTS: LSS_degradedResource", + "LSS_degrow": "vCTS: LSS_degrow", + "LSS_deviceServerCxnLost": "vCTS: LSS_deviceServerCxnLost", + "LSS_diamLinkDown": "vCTS: LSS_diamLinkDown", + "LSS_diamMaxClientsExceeded": "vCTS: LSS_diamMaxClientsExceeded", + "LSS_dnsThreshold": "vCTS: LSS_dnsThreshold", + "LSS_ethernetError": "vCTS: LSS_ethernetError", + "LSS_ethernetLinkDown": "vCTS: LSS_ethernetLinkDown", + "LSS_externalConnectivity": "vCTS: LSS_externalConnectivity", + "LSS_featureLicenseExpiration": "vCTS: LSS_featureLicenseExpiration", + "LSS_featureLicenseKeyNearExpiration": "vCTS: LSS_featureLicenseKeyNearExpiration", + "LSS_featureLockValidationError": "vCTS: LSS_featureLockValidationError", + "LSS_fqdnError": "vCTS: LSS_fqdnError", + "LSS_fru": "vCTS: LSS_fru", + "LSS_gatewayCongestion": "vCTS: LSS_gatewayCongestion", + "LSS_gatewayForcedOOS": "vCTS: LSS_gatewayForcedOOS", + "LSS_gatewayProvisioningError": "vCTS: LSS_gatewayProvisioningError", + "LSS_gatewayUnreachable": "vCTS: LSS_gatewayUnreachable", + "LSS_gatewayUnregistered": "vCTS: LSS_gatewayUnregistered", + "LSS_globalParameterNotFound": "vCTS: LSS_globalParameterNotFound", + "LSS_grow": "vCTS: LSS_grow", + "LSS_h248MessageBufferDepletion": "vCTS: LSS_h248MessageBufferDepletion", + "LSS_hostDown": "vCTS: LSS_hostDown", + "LSS_hostReset": "vCTS: LSS_hostReset", + "LSS_invalidGateway": "vCTS: LSS_invalidGateway", + "LSS_iriLinkDown": "vCTS: LSS_iriLinkDown", + "LSS_ldapServerConnectionLost": "vCTS: LSS_ldapServerConnectionLost", + "LSS_llcDown": "vCTS: LSS_llcDown", + "LSS_logicalLinkDown": "vCTS: LSS_logicalLinkDown", + "LSS_logicalLinkNotFound": "vCTS: LSS_logicalLinkNotFound", + "LSS_logRotateThreshold": "vCTS: LSS_logRotateThreshold", + "LSS_memoryOverload": "vCTS: LSS_memoryOverload", + "LSS_nodeConfigFailure": "vCTS: LSS_nodeConfigFailure", + "LSS_nodeGroupOOS": "vCTS: LSS_nodeGroupOOS", + "LSS_nodeOOS": "vCTS: LSS_nodeOOS", + "LSS_nonCompliantFaultGroupMemberState": "vCTS: LSS_nonCompliantFaultGroupMemberState", + "LSS_nonCsAddrChannelDepletion": "vCTS: LSS_nonCsAddrChannelDepletion", + "LSS_numberOfTuplesInUse": "vCTS: LSS_numberOfTuplesInUse", + "LSS_osSecInfoModificationDetected": "vCTS: LSS_osSecInfoModificationDetected", + "LSS_osSecInformationMissing": "vCTS: LSS_osSecInformationMissing", + "LSS_osSecUnexpectedInformation": "vCTS: LSS_osSecUnexpectedInformation", + "LSS_pdnsMySqlReplication": "vCTS: LSS_pdnsMySqlReplication", + "LSS_pktCorruptionDetectedViaRCCLANCheck": "vCTS: LSS_pktCorruptionDetectedViaRCCLANCheck", + "LSS_platformCommandFailure": "vCTS: LSS_platformCommandFailure", + "LSS_pmDataNotCollected": "vCTS: LSS_pmDataNotCollected", + "LSS_processDown": "vCTS: LSS_processDown", + "LSS_processNotStarted": "vCTS: LSS_processNotStarted", + "LSS_provisioningInhibitedMode": "vCTS: LSS_provisioningInhibitedMode", + "LSS_rccInhibitedMode": "vCTS: LSS_rccInhibitedMode", + "LSS_remotedbLinkDown": "vCTS: LSS_remotedbLinkDown", + "LSS_remoteQueryServerFailure": "vCTS: LSS_remoteQueryServerFailure", + "LSS_restore": "vCTS: LSS_restore", + "LSS_serviceCFGDataTimestampError": "vCTS: LSS_serviceCFGDataTimestampError", + "LSS_serviceCommCxnLost": "vCTS: LSS_serviceCommCxnLost", + "LSS_serviceOnewayCommunication": "vCTS: LSS_serviceOnewayCommunication", + "LSS_sheddingOverload": "vCTS: LSS_sheddingOverload", + "LSS_simxml": "vCTS: LSS_simxml", + "LSS_sipLinkSetMaxQuarantineList": "vCTS: LSS_sipLinkSetMaxQuarantineList", + "LSS_sipLinkSetUnavailable": "vCTS: LSS_sipLinkSetUnavailable", + "LSS_sipLinkUnavailable": "vCTS: LSS_sipLinkUnavailable", + "LSS_softwareAllocatedResourceOverload": "vCTS: LSS_softwareAllocatedResourceOverload", + "LSS_softwareComponentStandbyNotReady": "vCTS: LSS_softwareComponentStandbyNotReady", + "LSS_softwareLicense": "vCTS: LSS_softwareLicense", + "LSS_svcdegrow": "vCTS: LSS_svcdegrow", + "LSS_svcgrow": "vCTS: LSS_svcgrow", + "LSS_swVersionMismatch": "vCTS: LSS_swVersionMismatch", + "LSS_tftpDownloadCorrupt": "vCTS: LSS_tftpDownloadCorrupt", + "LSS_timeStampValueOutOfSystemRange": "vCTS: LSS_timeStampValueOutOfSystemRange", + "LSS_transactionHandlerBlockDepletion": "vCTS: LSS_transactionHandlerBlockDepletion", + "LSS_upgrade": "vCTS: LSS_upgrade", + "SYS_BackupFailure": "vCTS: SYS_BackupFailure", + "SYS_Configuration": "vCTS: SYS_Configuration", + "SYS_COTRecordTransferFailure": "vCTS: SYS_COTRecordTransferFailure", + "SYS_CPM_USERDATA_INCONSITENCY": "vCTS: SYS_CPM_USERDATA_INCONSITENCY", + "SYS_CPM_USERDATA_RESTORED": "vCTS: SYS_CPM_USERDATA_RESTORED", + "SYS_EventQueueCapacity": "vCTS: SYS_EventQueueCapacity", + "SYS_ICMPFailure": "vCTS: SYS_ICMPFailure", + "SYS_IPsecConfig": "vCTS: SYS_IPsecConfig", + "SYS_LinkDown": "vCTS: SYS_LinkDown", + "SYS_NotifyDisabled": "vCTS: SYS_NotifyDisabled", + "SYS_NotifyLocked": "vCTS: SYS_NotifyLocked", + "SYS_NumTL1MeasThresh": "vCTS: SYS_NumTL1MeasThresh", + "SYS_RADIUS_TO_LDAP_FAILURE": "vCTS: SYS_RADIUS_TO_LDAP_FAILURE", + "SYS_ROOT_ACCESS_DENIED": "vCTS: SYS_ROOT_ACCESS_DENIED", + "SYS_ROOT_FTP_VIOLATION": "vCTS: SYS_ROOT_FTP_VIOLATION", + "SYS_ROOT_LOGIN_VIOLATION": "vCTS: SYS_ROOT_LOGIN_VIOLATION", + "SYS_ROOT_SSH_LOGIN_VIOLATION": "vCTS: SYS_ROOT_SSH_LOGIN_VIOLATION", + "SYS_SetupAAAFailure": "vCTS: SYS_SetupAAAFailure", + "SYS_SNETrapOverload": "vCTS: SYS_SNETrapOverload", + "SYS_SNMPAuthenticationFailure": "vCTS: SYS_SNMPAuthenticationFailure", + "SYS_SNMPFailure": "vCTS: SYS_SNMPFailure", + "SYS_SU_TO_ROOT_FAILURE": "vCTS: SYS_SU_TO_ROOT_FAILURE", + "SYS_SYSTEMTrapOverload": "vCTS: SYS_SYSTEMTrapOverload", + "SYS_ThresholdCrossed": "vCTS: SYS_ThresholdCrossed", + "SYS_UndiscoveredObject": "vCTS: SYS_UndiscoveredObject", + "SYS_WriteAAAFailure": "vCTS: SYS_WriteAAAFailure", + "jnxSpaceDiskUsageRising": "vDBE-EMS-Juniper: jnxSpaceDiskUsageRising", + "jnxSpaceDiskUsageRisingCleared": "vDBE-EMS-Juniper: jnxSpaceDiskUsageRisingCleared", + "jnxSpaceSwapUsageRising": "vDBE-EMS-Juniper: jnxSpaceSwapUsageRising", + "jnxSpaceSwapUsageRisingCleared": "vDBE-EMS-Juniper: jnxSpaceSwapUsageRisingCleared", + "jnxSpaceCPULARising": "vDBE-EMS-Juniper: jnxSpaceCPULARising", + "jnxSpaceCPULARisingCleared": "vDBE-EMS-Juniper: jnxSpaceCPULARisingCleared", + "jnxSpaceWebpProxyProcessDown": "vDBE-EMS-Juniper: jnxSpaceWebpProxyProcessDown", + "jnxSpaceWebpProxyProcessUp": "vDBE-EMS-Juniper: jnxSpaceWebpProxyProcessUp", + "jnxSpaceNMAProcessDown": "vDBE-EMS-Juniper: jnxSpaceNMAProcessDown", + "jnxSpaceNMAProcessUp": "vDBE-EMS-Juniper: jnxSpaceNMAProcessUp", + "jnxSpaceJbossProcessDown": "vDBE-EMS-Juniper: jnxSpaceJbossProcessDown", + "jnxSpaceJbossProcessUp": "vDBE-EMS-Juniper: jnxSpaceJbossProcessUp", + "jnxSpaceMysqlProcessDown": "vDBE-EMS-Juniper: jnxSpaceMysqlProcessDown", + "jnxSpaceMysqlProcessUp": "vDBE-EMS-Juniper: jnxSpaceMysqlProcessUp", + "jnxSpacePostgresqlProcessDown": "vDBE-EMS-Juniper: jnxSpacePostgresqlProcessDown", + "jnxSpacePostgresqlProcessUp": "vDBE-EMS-Juniper: jnxSpacePostgresqlProcessUp", + "jnxSpaceWatchdogStopped": "vDBE-EMS-Juniper: jnxSpaceWatchdogStopped", + "jnxSpaceWatchdogStarted": "vDBE-EMS-Juniper: jnxSpaceWatchdogStarted", + "jnxSpaceSNAProcessDown": "vDBE-EMS-Juniper: jnxSpaceSNAProcessDown", + "jnxSpaceSNAProcessUp": "vDBE-EMS-Juniper: jnxSpaceSNAProcessUp", + "jnxSpaceNodeDown": "vDBE-EMS-Juniper: jnxSpaceNodeDown", + "jnxSpaceNodeUp": "vDBE-EMS-Juniper: jnxSpaceNodeUp", + " jnxSpaceNodeRemoval": "vDBE-EMS-Juniper: jnxSpaceNodeRemoval", + "jnxCmCfgChange": "vDBE-Juniper: jnxCmCfgChange", + "jnxCmRescueChange": "vDBE-Juniper: jnxCmRescueChange", + "jnxEventTrap": "vDBE-Juniper: jnxEventTrap", + "jnxJsFwAuthFailure": "vDBE-Juniper: jnxJsFwAuthFailure", + "jnxJsFwAuthServiceUp": "vDBE-Juniper: jnxJsFwAuthServiceUp", + "jnxJsFwAuthServiceDown": "vDBE-Juniper: jnxJsFwAuthServiceDown", + "jnxJsFwAuthCapacityExceeded": "vDBE-Juniper: jnxJsFwAuthCapacityExceeded", + "jnxJsIdpSignatureUpdate": "vDBE-Juniper: jnxJsIdpSignatureUpdate", + "jnxJsIdpAttackLog": "vDBE-Juniper: jnxJsIdpAttackLog", + "jnxJsSrcNatPoolThresholdStatus": "vDBE-Juniper: jnxJsSrcNatPoolThresholdStatus", + "jnxJsNatRuleThresholdStatus": "vDBE-Juniper: jnxJsNatRuleThresholdStatus", + "jnxJsScreenAttack": "vDBE-Juniper: jnxJsScreenAttack", + "jnxJsScreenCfgChange": "vDBE-Juniper: jnxJsScreenCfgChange", + "jnxJsAvPatternUpdateTrap": "vDBE-Juniper: jnxJsAvPatternUpdateTrap", + "jnxJsChassisClusterSwitchover": "vDBE-Juniper: jnxJsChassisClusterSwitchover", + "jnxJsChClusterIntfTrap": "vDBE-Juniper: jnxJsChClusterIntfTrap", + "jnxJsChClusterSpuMismatchTrap": "vDBE-Juniper: jnxJsChClusterSpuMismatchTrap", + "jnxJsChClusterWeightTrap": "vDBE-Juniper: jnxJsChClusterWeightTrap", + "jnxLicenseGraceExpired": "vDBE-Juniper: jnxLicenseGraceExpired", + "jnxLicenseGraceAboutToExpire": "vDBE-Juniper: jnxLicenseGraceAboutToExpire", + "jnxLicenseAboutToExpire": "vDBE-Juniper: jnxLicenseAboutToExpire", + "jnxLicenseInfringeCumulative": "vDBE-Juniper: jnxLicenseInfringeCumulative", + "jnxLicenseInfringeSingle": "vDBE-Juniper: jnxLicenseInfringeSingle", + "jnxNatAddrPoolThresholdStatus": "vDBE-Juniper: jnxNatAddrPoolThresholdStatus", + "jnxSyslogTrap": "vDBE-Juniper: jnxSyslogTrap", + "jnxAccessAuthServiceUp": "vDBE-Juniper: jnxAccessAuthServiceUp", + "jnxAccessAuthServiceDown": "vDBE-Juniper: jnxAccessAuthServiceDown", + "jnxAccessAuthServerDisabled": "vDBE-Juniper: jnxAccessAuthServerDisabled", + "jnxAccessAuthServerEnabled": "vDBE-Juniper: jnxAccessAuthServerEnabled", + "jnxAccessAuthAddressPoolHighThreshold": "vDBE-Juniper: jnxAccessAuthAddressPoolHighThreshold", + "jnxAccessAuthAddressPoolAbateThreshold": "vDBE-Juniper: jnxAccessAuthAddressPoolAbateThreshold", + "jnxAccessAuthAddressPoolOutOfAddresses": "vDBE-Juniper: jnxAccessAuthAddressPoolOutOfAddresses", + "jnxAccessAuthAddressPoolOutOfMemory": "vDBE-Juniper: jnxAccessAuthAddressPoolOutOfMemory", + "LEVEL_WARNING_CPU": "vMRF: LEVEL_WARNING_CPU", + "LEVEL_MAJOR_CPU": "vMRF: LEVEL_MAJOR_CPU", + "LEVEL_CRITICAL_CPU": "vMRF: LEVEL_CRITICAL_CPU", + "LEVEL_WARNING_MEM": "vMRF: LEVEL_WARNING_MEM", + "LEVEL_MAJOR_MEM": "vMRF: LEVEL_MAJOR_MEM", + "LEVEL_CRITICAL_MEM": "vMRF: LEVEL_CRITICAL_MEM", + "LEVEL_WARNING_DISK": "vMRF: LEVEL_WARNING_DISK", + "LEVEL_MAJOR_DISK": "vMRF: LEVEL_MAJOR_DISK", + "LEVEL_CRITICAL_DISK": "vMRF: LEVEL_CRITICAL_DISK", + "LEVEL_WARNING_RTPBANDWIDTH": "vMRF: LEVEL_WARNING_RTPBANDWIDTH", + "LEVEL_MAJOR_RTPBANDWIDTH": "vMRF: LEVEL_MAJOR_RTPBANDWIDTH", + "LEVEL_CRITICAL_RTPBANDWIDTH": "vMRF: LEVEL_CRITICAL_RTPBANDWIDTH", + "LEVEL_WARNING_RTPINPACKETLOSS": "vMRF: LEVEL_WARNING_RTPINPACKETLOSS", + "LEVEL_MAJOR_RTPINPACKETLOSS": "vMRF: LEVEL_MAJOR_RTPINPACKETLOSS", + "LEVEL_CRITICAL_RTPINPACKETLOSS": "vMRF: LEVEL_CRITICAL_RTPINPACKETLOSS", + "LEVEL_WARNING_RTPOUTPACKETLOSS": "vMRF: LEVEL_WARNING_RTPOUTPACKETLOSS", + "LEVEL_MAJOR_RTPOUTPACKETLOSS": "vMRF: LEVEL_MAJOR_RTPOUTPACKETLOSS", + "LEVEL_CRITICAL_RTPOUTPACKETLOSS": "vMRF: LEVEL_CRITICAL_RTPOUTPACKETLOSS", + "LEVEL_WARNING_TCPLOSTRETRANSMITRATE": "vMRF: LEVEL_WARNING_TCPLOSTRETRANSMITRATE", + "LEVEL_MAJOR_TCPLOSTRETRANSMITRATE": "vMRF: LEVEL_MAJOR_TCPLOSTRETRANSMITRATE", + "LEVEL_CRITICAL_TCPLOSTRETRANSMITRATE": "vMRF: LEVEL_CRITICAL_TCPLOSTRETRANSMITRATE", + "LEVEL_WARNING_TCPLOSSFAILURERATE": "vMRF: LEVEL_WARNING_TCPLOSSFAILURERATE", + "LEVEL_MAJOR_TCPLOSSFAILURERATE": "vMRF: LEVEL_MAJOR_TCPLOSSFAILURERATE", + "LEVEL_CRITICAL_TCPLOSSFAILURERATE": "vMRF: LEVEL_CRITICAL_TCPLOSSFAILURERATE", + "LEVEL_CRITICAL_RTPLINKDOWN": "vMRF: LEVEL_CRITICAL_RTPLINKDOWN", + "TARGET_REACHABLE": "vMRF: TARGET_REACHABLE", + "PUBLICATION_ERROR": "vMRF: PUBLICATION_ERROR", + "REMOTE_SERVER_SYNCHRONIZATION_ERROR": "vMRF: REMOTE_SERVER_SYNCHRONIZATION_ERROR", + "TRANSCODER_TOOL_EXEC_ERROR": "vMRF: TRANSCODER_TOOL_EXEC_ERROR", + "CLIENT_SYNCHRONIZATION_ERROR": "vMRF: CLIENT_SYNCHRONIZATION_ERROR", + "CLUSTER_UNREACHABLE": "vMRF: CLUSTER_UNREACHABLE", + "REMOTE_NODE_OFFLINE": "vMRF: REMOTE_NODE_OFFLINE", + "IPADDR_STOPPED": "vMRF: IPADDR_STOPPED", + "MRFC_STOPPED": "vMRF: MRFC_STOPPED", + "MNGT_STOPPED": "vMRF: MNGT_STOPPED", + "IPADDR_STARTED": "vMRF: IPADDR_STARTED", + "MRFC_STARTED": "vMRF: MRFC_STARTED", + "MNGT_STARTED": "vMRF: MNGT_STARTED", + "VOLATTACH_FAILED": "vMRF: VOLATTACH_FAILED", + "VOLDETACH_FAILED": "vMRF: VOLDETACH_FAILED", + "VOLDEL": "vMRF: VOLDEL", + "VOLCORRUPT": "vMRF: VOLCORRUPT", + "VOLFOREIGN": "vMRF: VOLFOREIGN", + "ACTIVE_ALARM_TABLE_PURGE": "vMRF: ACTIVE_ALARM_TABLE_PURGE", + "GENERIC_FORMER_STATELESS": "vMRF: GENERIC_FORMER_STATELESS", + "GENERIC_FORMER_STATEFUL": "vMRF: GENERIC_FORMER_STATEFUL", + "NO_MORE_ALARM_DESCRIPTION": "vMRF: NO_MORE_ALARM_DESCRIPTION", + "SERVICE_PROCESS_ENDS": "vMRF: SERVICE_PROCESS_ENDS", + "DEFENSE_STOPPED": "vMRF: DEFENSE_STOPPED", + "USER_ACCOUNT_LOCKED": "vMRF: USER_ACCOUNT_LOCKED", + "CONNECTION_SQL_NOT_ESTABLISHED": "vMRF: CONNECTION_SQL_NOT_ESTABLISHED", + "FALSE_ALARM": "vMRF: FALSE_ALARM", + "RADIUS SERVER HS": "vMRF: RADIUS SERVER HS", + "DRM_PACKAGER_IS_NOT_AVAILABLE": "vMRF: DRM_PACKAGER_IS_NOT_AVAILABLE", + "DRM_LICENSE_BUILDER_IS_NOT_AVAILABLE": "vMRF: DRM_LICENSE_BUILDER_IS_NOT_AVAILABLE", + "ERROR_WHILE_CREATING_PLAYLIST_MANAGER_FILE": "vMRF: ERROR_WHILE_CREATING_PLAYLIST_MANAGER_FILE", + "ERROR_WHILE_BUILDING_PLAYLIST_XML_REPRESENTATION": "vMRF: ERROR_WHILE_BUILDING_PLAYLIST_XML_REPRESENTATION", + "PLAYLIST_FILE_TO_PUBLISH_NOT_FOUND": "vMRF: PLAYLIST_FILE_TO_PUBLISH_NOT_FOUND", + "COULD_NOT_CONNECT_TO_PVNS_SERVER": "vMRF: COULD_NOT_CONNECT_TO_PVNS_SERVER", + "HTTP_OR_HTTPCLIENT_EXCEPTION_HAS_OCCURRED": "vMRF: HTTP_OR_HTTPCLIENT_EXCEPTION_HAS_OCCURRED", + "I/O_ERROR_WHILE_PUBLISHING_PLAYLIST_FILE": "vMRF: I/O_ERROR_WHILE_PUBLISHING_PLAYLIST_FILE", + "ERROR_WHILE_REQUESTING_SDP_FILE": "vMRF: ERROR_WHILE_REQUESTING_SDP_FILE", + "ERROR_WHILE_REQUESTING_SDP_FILE:_REMOTE_EXCEPTION": "vMRF: ERROR_WHILE_REQUESTING_SDP_FILE:_REMOTE_EXCEPTION", + "NO_STREAMING_RESOURCES": "vMRF: NO_STREAMING_RESOURCES", + "NO_STREAMING_MODULES_REGISTERED": "vMRF: NO_STREAMING_MODULES_REGISTERED", + "SM_FAILURE": "vMRF: SM_FAILURE", + "MISSING_FILE_OR_ENCODER": "vMRF: MISSING_FILE_OR_ENCODER", + "INVALID_RANGE": "vMRF: INVALID_RANGE", + "THRESHOLD_VALUE_EXCEEDED": "vMRF: THRESHOLD_VALUE_EXCEEDED", + "TICKET_QUEUE_FULL": "vMRF: TICKET_QUEUE_FULL", + "PARSING_INITIALIZATION_EXCEPTION": "vMRF: PARSING_INITIALIZATION_EXCEPTION", + "CUSTOMERCARE_INTERNAL_EXCEPTION": "vMRF: CUSTOMERCARE_INTERNAL_EXCEPTION", + "PARSING_EXCEPTION": "vMRF: PARSING_EXCEPTION", + "I/O_PROBLEM": "vMRF: I/O_PROBLEM", + "INEXISTENT_FILE_OR_FOLDER": "vMRF: INEXISTENT_FILE_OR_FOLDER", + "FILE_NOT_IN_XML_FORMAT": "vMRF: FILE_NOT_IN_XML_FORMAT", + "SERVICE_STATE_CHANGE": "vMRF: SERVICE_STATE_CHANGE", + "MONITORED_FILE_UPDATE_ERROR": "vMRF: MONITORED_FILE_UPDATE_ERROR", + "MONITORED_RPM_DELETED_ERROR": "vMRF: MONITORED_RPM_DELETED_ERROR", + "MONITORED_RPM_ADDED_ERROR": "vMRF: MONITORED_RPM_ADDED_ERROR", + "MONITORED_CHMOD_ERROR": "vMRF: MONITORED_CHMOD_ERROR", + "MONITORED_CHOWN_ERROR": "vMRF: MONITORED_CHOWN_ERROR", + "PASSWD_ROOT_ERROR": "vMRF: PASSWD_ROOT_ERROR", + "PASSWD_ERROR": "vMRF: PASSWD_ERROR", + "ROOTKIT_ERROR": "vMRF: ROOTKIT_ERROR", + "STARTUP_ERR_UNDEFINED_PORT": "vMRF: STARTUP_ERR_UNDEFINED_PORT", + "STARTUP_ERR_FAIL_FIND_HOSTNAME": "vMRF: STARTUP_ERR_FAIL_FIND_HOSTNAME", + "STARTUP_ERR_CF_MISSING": "vMRF: STARTUP_ERR_CF_MISSING", + "STARTUP_ERR_FAILED_TO_OPEN_CF": "vMRF: STARTUP_ERR_FAILED_TO_OPEN_CF", + "STARTUP_ERR_FAILED_TO_BIND_PORT": "vMRF: STARTUP_ERR_FAILED_TO_BIND_PORT", + "STARTUP_ERR_CFG_UNIT_MISSING": "vMRF: STARTUP_ERR_CFG_UNIT_MISSING", + "MCTR_INVALID_CODEC_NAME": "vMRF: MCTR_INVALID_CODEC_NAME", + "RTSP_SERVER_FAILURE": "vMRF: RTSP_SERVER_FAILURE", + "RTSP_SERVER_QUARANTINE": "vMRF: RTSP_SERVER_QUARANTINE", + "TRANSCODING_FAILURE": "vMRF: TRANSCODING_FAILURE", + "FILE_CACHE_FAILURE": "vMRF: FILE_CACHE_FAILURE", + "STARTUP_ERROR_INITIALIZATION_FAILED": "vMRF: STARTUP_ERROR_INITIALIZATION_FAILED", + "CONFERENCE_FAILURE": "vMRF: CONFERENCE_FAILURE", + "PLC_DEGRADATION_LOW": "vMRF: PLC_DEGRADATION_LOW", + "PLC_DEGRADATION_MEDIUM": "vMRF: PLC_DEGRADATION_MEDIUM", + "PLC_DEGRADATION_HIGH": "vMRF: PLC_DEGRADATION_HIGH", + "AUDIO_RESYNCH_LOW": "vMRF: AUDIO_RESYNCH_LOW", + "AUDIO_RESYNCH_MEDIUM": "vMRF: AUDIO_RESYNCH_MEDIUM", + "AUDIO_RESYNCH_HIGH": "vMRF: AUDIO_RESYNCH_HIGH", + "VIDEO_RESYNCH_LOW": "vMRF: VIDEO_RESYNCH_LOW", + "VIDEO_RESYNCH_MEDIUM": "vMRF: VIDEO_RESYNCH_MEDIUM", + "VIDEO_RESYNCH_HIGH": "vMRF: VIDEO_RESYNCH_HIGH", + "PLAY_FAILURES_LOW": "vMRF: PLAY_FAILURES_LOW", + "PLAY_FAILURES_MEDIUM": "vMRF: PLAY_FAILURES_MEDIUM", + "PLAY_FAILURES_HIGH": "vMRF: PLAY_FAILURES_HIGH", + "NOT_ENOUGH_FREE_CONFEREE": "vMRF: NOT_ENOUGH_FREE_CONFEREE", + "NO_LONGER_FREE_CONFERENCE_ROOM": "vMRF: NO_LONGER_FREE_CONFERENCE_ROOM", + "STARTUP_ERROR_FAIL_TO_READ_CF": "vMRF: STARTUP_ERROR_FAIL_TO_READ_CF", + "STARTUP_ERROR_SIP_ADAPTER_INIT": "vMRF: STARTUP_ERROR_SIP_ADAPTER_INIT", + "STARTUP_ERROR_MONITORING_INIT": "vMRF: STARTUP_ERROR_MONITORING_INIT", + "REGISTER_ERROR_FAILURE": "vMRF: REGISTER_ERROR_FAILURE", + "DRI_ERROR_FAILURE": "vMRF: DRI_ERROR_FAILURE", + "STARTUP_ERROR_STACK_CONFIGURATION": "vMRF: STARTUP_ERROR_STACK_CONFIGURATION", + "STARTUP_ERROR_CONF": "vMRF: STARTUP_ERROR_CONF", + "STARTUP_ERROR_UNDEFINED_PORT": "vMRF: STARTUP_ERROR_UNDEFINED_PORT", + "HOST_REMOVED": "vMRF: HOST_REMOVED", + "INTERCEPT_THRESHOLD_NB_DIALOG_ALLOCATED": "vMRF: INTERCEPT_THRESHOLD_NB_DIALOG_ALLOCATED", + "STARTUP_ERROR_STACK_CONF": "vMRF: STARTUP_ERROR_STACK_CONF", + "STARTUP_ERROR_CONFIGURATION": "vMRF: STARTUP_ERROR_CONFIGURATION", + "STARTUP_ERROR_FAILED_TO_RETRIEVE_HOSTNAME": "vMRF: STARTUP_ERROR_FAILED_TO_RETRIEVE_HOSTNAME", + "LEVEL_WARNING_CALL": "vMRF: LEVEL_WARNING_CALL", + "LEVEL_ALARM_MINOR_CALL": "vMRF: LEVEL_ALARM_MINOR_CALL", + "LEVEL_ALARM_MAJOR_CALL": "vMRF: LEVEL_ALARM_MAJOR_CALL", + "LEVEL_ALARM_MRFPoutOfService": "vMRF: LEVEL_ALARM_MRFPoutOfService", + "MRFP_CALL_REJECTED_Threshold #1": "vMRF: MRFP_CALL_REJECTED_Threshold #1", + "MRFP_CALL_REJECTED_Threshold #2": "vMRF: MRFP_CALL_REJECTED_Threshold #2", + "MRFP_CALL_REJECTED_Threshold #3": "vMRF: MRFP_CALL_REJECTED_Threshold #3", + "MRFP_CALL_RETRIED_Threshold #1": "vMRF: MRFP_CALL_RETRIED_Threshold #1", + "MRFP_CALL_RETRIED_Threshold #2": "vMRF: MRFP_CALL_RETRIED_Threshold #2", + "MRFP_CALL_RETRIED_Threshold #3": "vMRF: MRFP_CALL_RETRIED_Threshold #3", + "STARTUP_PUB_FILE_NOT_PRESENT": "vMRF: STARTUP_PUB_FILE_NOT_PRESENT", + "STARTUP_INF_FILE_NOT_PRESENT": "vMRF: STARTUP_INF_FILE_NOT_PRESENT", + "STARTUP_LIC_FILE_NOT_PRESENT": "vMRF: STARTUP_LIC_FILE_NOT_PRESENT", + "GENERIC_HARDWARE_PROBLEM": "vMRF: GENERIC_HARDWARE_PROBLEM", + "HARD_DRIVE_PROBLEM": "vMRF: HARD_DRIVE_PROBLEM", + "NETWORK_LINK_PROBLEM": "vMRF: NETWORK_LINK_PROBLEM", + "POWER_SUPPLY_PROBLEM": "vMRF: POWER_SUPPLY_PROBLEM", + "SMART_HARD_DRIVE_PROBLEM": "vMRF: SMART_HARD_DRIVE_PROBLEM", + "STARTUP_ERROR": "vMRF: STARTUP_ERROR", + "RESOURCE_NOT_ACCESSIBLE": "vMRF: RESOURCE_NOT_ACCESSIBLE", + "RESOURCE_ACCESSIBLE": "vMRF: RESOURCE_ACCESSIBLE", + "RESOURCE_FULL": "vMRF: RESOURCE_FULL", + "DRI_ALARM": "vMRF: DRI_ALARM", + "REGISTER_ERROR_CCF": "vMRF: REGISTER_ERROR_CCF", + "REGISTER_ERROR_EXTERNAL": "vMRF: REGISTER_ERROR_EXTERNAL", + "TIMEOUT_ERROR": "vMRF: TIMEOUT_ERROR", + "VXML_ERROR": "vMRF: VXML_ERROR", + "A Network Element is no longer available due to a connection failure": "vMVM: A Network Element is no longer available due to a connection failure", + "A MetaSphere server is reporting a fault with the configuration of its connection to MetaView": "vMVM: A MetaSphere server is reporting a fault with the configuration of its connection to MetaView", + "Configured OBS IPs don't match available OBS nodes. Configured but unavailable nodes include: []. Real nodes not configured include: []": "vMVM: Configured OBS IPs don't match available OBS nodes. Configured but unavailable nodes include: []. Real nodes not configured include: []", + "Service Assurance Server cannot be contacted": "vMVM: Service Assurance Server cannot be contacted", + "The primary MetaView Director has lost contact with the backup MetaView Director": "vMVM: The primary MetaView Director has lost contact with the backup MetaView Director", + "The active server has lost connection to the standby": "vMVM: The active server has lost connection to the standby", + "CrashCounter": "vprobes-vBE-Processing: CrashCounter", + "IsAlive": "vprobes-vBE-Processing: IsAlive", + "SwRestart": "vprobes-vLB: SwRestart", + "Repeated exceptions have occurred.": "vSBC-Metaswitch: Repeated exceptions have occurred.", + "A licensing limit is close to capacity.": "vSBC-Metaswitch: A licensing limit is close to capacity.", + "One or more feature packs have been breached.": "vSBC-Metaswitch: One or more feature packs have been breached.", + "The grace period on this Perimeta system will expire in less than 48 hours, after which calls will not be processed.": "vSBC-Metaswitch: The grace period on this Perimeta system will expire in less than 48 hours, after which calls will not be processed.", + "The grace period on this Perimeta system will expire in less than 7 days, after which calls will not be processed.": "vSBC-Metaswitch: The grace period on this Perimeta system will expire in less than 7 days, after which calls will not be processed.", + "The license on this Perimeta system will expire in less than 4 weeks.": "vSBC-Metaswitch: The license on this Perimeta system will expire in less than 4 weeks.", + "A Perimeta blade has become unlicensed.": "vSBC-Metaswitch: A Perimeta blade has become unlicensed.", + "Perimeta is licensed with a bypass certificate, which is valid until the time displayed.": "vSBC-Metaswitch: Perimeta is licensed with a bypass certificate, which is valid until the time displayed.", + "The number of licensed instances exceeded a threshold of the licensed limit.": "vSBC-Metaswitch: The number of licensed instances exceeded a threshold of the licensed limit.", + "The software token on the primary Distributed Capacity Manager will expire on the displayed date.": "vSBC-Metaswitch: The software token on the primary Distributed Capacity Manager will expire on the displayed date.", + "A capacity limit on the license installed on this Perimeta system does not match the largest limit across all systems in the deployment.": "vSBC-Metaswitch: A capacity limit on the license installed on this Perimeta system does not match the largest limit across all systems in the deployment.", + "An adjacency has voice quality alerts.": "vSBC-Metaswitch: An adjacency has voice quality alerts.", + "The number of calls being audited is congested.": "vSBC-Metaswitch: The number of calls being audited is congested.", + "Session Controller is rejecting calls because there is no valid active call policy set configured.": "vSBC-Metaswitch: Session Controller is rejecting calls because there is no valid active call policy set configured.", + "A call policy set is inactive because it has been misconfigured.": "vSBC-Metaswitch: A call policy set is inactive because it has been misconfigured.", + "Session Controller is inactive and rejecting calls.": "vSBC-Metaswitch: Session Controller is inactive and rejecting calls.", + "Sources have breached minor or major blacklist thresholds.": "vSBC-Metaswitch: Sources have breached minor or major blacklist thresholds.", + "Sources are blacklisted.": "vSBC-Metaswitch: Sources are blacklisted.", + "The blacklisting configuration will change as a result of upgrade and some configured blacklists or alerts will no longer be applied.": "vSBC-Metaswitch: The blacklisting configuration will change as a result of upgrade and some configured blacklists or alerts will no longer be applied.", + "A large number of downgrades and bans have been created as a result of blacklisting.": "vSBC-Metaswitch: A large number of downgrades and bans have been created as a result of blacklisting.", + "Session Controller is unable to track further sources for blacklisting.": "vSBC-Metaswitch: Session Controller is unable to track further sources for blacklisting.", + "A software protection switch was triggered.": "vSBC-Metaswitch: A software protection switch was triggered.", + "A disk area on a processor blade is nearly full.": "vSBC-Metaswitch: A disk area on a processor blade is nearly full.", + "Memory use is very high.": "vSBC-Metaswitch: Memory use is very high.", + "The primary processor-blade has lost contact with the backup.": "vSBC-Metaswitch: The primary processor-blade has lost contact with the backup.", + "An efix or patch has been applied to this system containing diagnostic versions of some software libraries.": "vSBC-Metaswitch: An efix or patch has been applied to this system containing diagnostic versions of some software libraries.", + "A software protection switch (SPS) was triggered. Call and registration state was lost.": "vSBC-Metaswitch: A software protection switch (SPS) was triggered. Call and registration state was lost.", + "The Ethernet Heartbeat between primary and backup processors has failed.": "vSBC-Metaswitch: The Ethernet Heartbeat between primary and backup processors has failed.", + "The Backplane Heartbeat between primary and backup processors has failed.": "vSBC-Metaswitch: The Backplane Heartbeat between primary and backup processors has failed.", + "A disk area on a processor blade reported an error.": "vSBC-Metaswitch: A disk area on a processor blade reported an error.", + "The system is upgrading.": "vSBC-Metaswitch: The system is upgrading.", + "An error with NTP functionality has been detected.": "vSBC-Metaswitch: An error with NTP functionality has been detected.", + "One or more users are locked out of the system.": "vSBC-Metaswitch: One or more users are locked out of the system.", + "The Craft Terminal user FTP directory on a processor blade is nearly full.": "vSBC-Metaswitch: The Craft Terminal user FTP directory on a processor blade is nearly full.", + "A scheduled configuration snapshot has failed.": "vSBC-Metaswitch: A scheduled configuration snapshot has failed.", + "The Session Controller is stopping as a result of administrator action.": "vSBC-Metaswitch: The Session Controller is stopping as a result of administrator action.", + "A Session Controller processor blade is stopping as a result of administrator action.": "vSBC-Metaswitch: A Session Controller processor blade is stopping as a result of administrator action.", + "An object could not be activated because its service address does not exist or is not fully specified.": "vSBC-Metaswitch: An object could not be activated because its service address does not exist or is not fully specified.", + "The hardware on a processor does not meet minimum requirements.": "vSBC-Metaswitch: The hardware on a processor does not meet minimum requirements.", + "The hardware expectations of the two processors are not the same.": "vSBC-Metaswitch: The hardware expectations of the two processors are not the same.", + "The read speed of the main hard disk on a processor blade is too slow.": "vSBC-Metaswitch: The read speed of the main hard disk on a processor blade is too slow.", + "An error has occurred reading from the hard disk on a processor blade.": "vSBC-Metaswitch: An error has occurred reading from the hard disk on a processor blade.", + "Backup and primary processor-blades have an inconsistent system role.": "vSBC-Metaswitch: Backup and primary processor-blades have an inconsistent system role.", + "Event: The system encountered a critical error and had to restart.": "vSBC-Metaswitch: Event: The system encountered a critical error and had to restart.", + "Event: A RADIUS server failed to respond to an authentication request.": "vSBC-Metaswitch: Event: A RADIUS server failed to respond to an authentication request.", + "Event: All configured RADIUS servers failed to respond to authentication requests.": "vSBC-Metaswitch: Event: All configured RADIUS servers failed to respond to authentication requests.", + "Event: The number of CPUs has changed.": "vSBC-Metaswitch: Event: The number of CPUs has changed.", + "Event: A user has been automatically deleted": "vSBC-Metaswitch: Event: A user has been automatically deleted", + "The primary processor blade has lost management connectivity": "vSBC-Metaswitch: The primary processor blade has lost management connectivity", + "Event: A processor blade is running with DPDK mode disabled when DPDK mode is,expected.": "vSBC-Metaswitch: Event: A processor blade is running with DPDK mode disabled when DPDK mode is,expected.", + "Event: Processor blade %1 is running with DPDK mode disabled when DPDK mode may be possible.": "vSBC-Metaswitch: Event: Processor blade %1 is running with DPDK mode disabled when DPDK mode may be possible.", + "Perimeta is attempting to resend cached billing records.": "vSBC-Metaswitch: Perimeta is attempting to resend cached billing records.", + "The Rf billing cache is full.": "vSBC-Metaswitch: The Rf billing cache is full.", + "The inbound call queue is congested.": "vSBC-Metaswitch: The inbound call queue is congested.", + "A configured realm group contains realms that are not available to the SBC.": "vSBC-Metaswitch: A configured realm group contains realms that are not available to the SBC.", + "An allowed MSC configuration is not connected to any physical MSCs.": "vSBC-Metaswitch: An allowed MSC configuration is not connected to any physical MSCs.", + "An adjacency has failed as the listen socket could not be created. Check for configuration mismatches with the associated service interface.": "vSBC-Metaswitch: An adjacency has failed as the listen socket could not be created. Check for configuration mismatches with the associated service interface.", + "No suitable DNS records were found for a peer group's DNS hostname.": "vSBC-Metaswitch: No suitable DNS records were found for a peer group's DNS hostname.", + "One or more SIP peers from a peer group have stopped responding to SIP OPTIONS pings": "vSBC-Metaswitch: One or more SIP peers from a peer group have stopped responding to SIP OPTIONS pings", + "An adjacency has failed as its service network does not match the service network on its associated peer group.": "vSBC-Metaswitch: An adjacency has failed as its service network does not match the service network on its associated peer group.", + "An adjacency has failed as its configured TLS certificate could not be found.": "vSBC-Metaswitch: An adjacency has failed as its configured TLS certificate could not be found.", + "The caching function has not been initialized properly.": "vSBC-Metaswitch: The caching function has not been initialized properly.", + "An adjacency has failed as the listen socket could not be created.": "vSBC-Metaswitch: An adjacency has failed as the listen socket could not be created.", + "An adjacency is congested and may be rejecting calls.": "vSBC-Metaswitch: An adjacency is congested and may be rejecting calls.", + "There is an issue with a Diameter peer.": "vSBC-Metaswitch: There is an issue with a Diameter peer.", + "A realm is no longer reachable via any configured peers.": "vSBC-Metaswitch: A realm is no longer reachable via any configured peers.", + "An FQDN for a configured Diameter peer has failed to resolve to a valid IP address.": "vSBC-Metaswitch: An FQDN for a configured Diameter peer has failed to resolve to a valid IP address.", + "One or more peers resolved from a DNS lookup of a configured peer's address cannot be contacted": "vSBC-Metaswitch: One or more peers resolved from a DNS lookup of a configured peer's address cannot be contacted", + "An interface ARP or NDP probe has failed.": "vSBC-Metaswitch: An interface ARP or NDP probe has failed.", + "One or more IP address conflicts have been detected on service interfaces with zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.": "vSBC-Metaswitch: One or more IP address conflicts have been detected on service interfaces with zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.", + "One or more IP address conflicts have been detected on service interfaces with non-zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.": "vSBC-Metaswitch: One or more IP address conflicts have been detected on service interfaces with non-zero criticality. If there are other probe failures, this alarm will remain raised until all conflicts are resolved.", + "An interface device is running below the expected speed. This alarm was originally triggered by a probe failure on a service interface.": "vSBC-Metaswitch: An interface device is running below the expected speed. This alarm was originally triggered by a probe failure on a service interface.", + "An interface device is running above the expected speed.": "vSBC-Metaswitch: An interface device is running above the expected speed.", + "An IP address conflict has been detected on a management interface.": "vSBC-Metaswitch: An IP address conflict has been detected on a management interface.", + "An interface ICMP probe has failed.": "vSBC-Metaswitch: An interface ICMP probe has failed.", + "A High-Availability link has detected a connectivity issue.": "vSBC-Metaswitch: A High-Availability link has detected a connectivity issue.", + "An HA-link device is being reported as underspeed.": "vSBC-Metaswitch: An HA-link device is being reported as underspeed.", + "An IP address conflict has been detected on a replication interface.": "vSBC-Metaswitch: An IP address conflict has been detected on a replication interface.", + "The Session Controller has started.": "vSBC-Metaswitch: The Session Controller has started.", + "A statistic exceeded its configured thresholds.": "vSBC-Metaswitch: A statistic exceeded its configured thresholds.", + "One or more statistic has not been retrieved at least 3 times in a row.": "vSBC-Metaswitch: One or more statistic has not been retrieved at least 3 times in a row.", + "A Refresh Alarms request was triggered. Alarms not re-raised will be cleared in 5 minutes.": "vSBC-Metaswitch: A Refresh Alarms request was triggered. Alarms not re-raised will be cleared in 5 minutes.", + "A statistic has exceeded its configured thresholds.": "vSBC-Metaswitch: A statistic has exceeded its configured thresholds.", + "A Fallback Operation will soon be started": "vSBG: A Fallback Operation will soon be started", + "BRM, Auto Export Backup Failed": "vSBG: BRM, Auto Export Backup Failed", + "BRM, Scheduled Backup Failed": "vSBG: BRM, Scheduled Backup Failed", + "COM SA, AMF Component Cleanup Failed": "vSBG: COM SA, AMF Component Cleanup Failed", + "COM SA, AMF Component Instantiation Failed": "vSBG: COM SA, AMF Component Instantiation Failed", + "COM SA, AMF SI Unassigned": "vSBG: COM SA, AMF SI Unassigned", + "COM SA, CLM Cluster Node Unavailable": "vSBG: COM SA, CLM Cluster Node Unavailable", + "COM SA, MDF Detected Model Error": "vSBG: COM SA, MDF Detected Model Error", + "COM SA, Proxy Status of a Component Changed to Unproxied": "vSBG: COM SA, Proxy Status of a Component Changed to Unproxied", + "File Management, Number of Files in FileGroup Exceeded": "vSBG: File Management, Number of Files in FileGroup Exceeded", + "File Management, Max Size in FileGroup Exceeded": "vSBG: File Management, Max Size in FileGroup Exceeded", + "LOTC Disk Replication Communication": "vSBG: LOTC Disk Replication Communication", + "LOTC Disk Replication Consistency": "vSBG: LOTC Disk Replication Consistency", + "LOTC Disk Usage": "vSBG: LOTC Disk Usage", + "LOTC memory Usage": "vSBG: LOTC memory Usage", + "LOTC Time Synchronization": "vSBG: LOTC Time Synchronization", + "SBG, BGF Control Link Down": "vSBG: SBG, BGF Control Link Down", + "SBG, BGF Control Link Disabled": "vSBG: SBG, BGF Control Link Disabled", + "SBG, BGF Control Link Enabled": "vSBG: SBG, BGF Control Link Enabled", + "SBG, BGF Control Link Remote Locked": "vSBG: SBG, BGF Control Link Remote Locked", + "SBG, Charging Data Storage Maximum Records Reached": "vSBG: SBG, Charging Data Storage Maximum Records Reached", + "SBG, Charging Server Rejects Charging Data": "vSBG: SBG, Charging Server Rejects Charging Data", + "SBG, Excessive Packet Rate Detected ": "vSBG: SBG, Excessive Packet Rate Detected ", + "SBG, High Amount of Malformed Packets Received": "vSBG: SBG, High Amount of Malformed Packets Received", + "SBG, High Amount of STUN Packets Detected": "vSBG: SBG, High Amount of STUN Packets Detected", + "SBG, High Amount of TCP SYN Packets Received": "vSBG: SBG, High Amount of TCP SYN Packets Received", + "SBG, High Amount of UDP Packets Received ": "vSBG: SBG, High Amount of UDP Packets Received ", + "SBG, IP Address Blocked Due to Excessive Packet Rate": "vSBG: SBG, IP Address Blocked Due to Excessive Packet Rate", + "SBG, Lost Connectivity to Diameter Server": "vSBG: SBG, Lost Connectivity to Diameter Server", + "SBG, Mated Pair out of Service": "vSBG: SBG, Mated Pair out of Service", + "SBG, Network Unavailable for Media Handling": "vSBG: SBG, Network Unavailable for Media Handling", + "SBG, Non-emergency Call Released to Free Resources for Emergency Call": "vSBG: SBG, Non-emergency Call Released to Free Resources for Emergency Call", + "SBG, Not Enough Disk Space for Storing Charging Data": "vSBG: SBG, Not Enough Disk Space for Storing Charging Data", + "SBG, Payload Mated Pair Failure": "vSBG: SBG, Payload Mated Pair Failure", + "SBG, Payload Processor Failure": "vSBG: SBG, Payload Processor Failure", + "SBG, Processor Overloaded": "vSBG: SBG, Processor Overloaded", + "SBG, Registered User Set in Quarantine": "vSBG: SBG, Registered User Set in Quarantine", + "SBG, Registration Contacts Exceed Configured Threshold": "vSBG: SBG, Registration Contacts Exceed Configured Threshold", + "SBG, Sequential Restart Initiated": "vSBG: SBG, Sequential Restart Initiated", + "SBG, SIP Abuse Detected": "vSBG: SBG, SIP Abuse Detected", + "SBG, SIP Network Locked": "vSBG: SBG, SIP Network Locked", + "SBG, SIP Next Hop Reachable": "vSBG: SBG, SIP Next Hop Reachable", + "SBG, SIP Next Hop Unreachable": "vSBG: SBG, SIP Next Hop Unreachable", + "SBG, SIP Request Rejected by Network Throttling": "vSBG: SBG, SIP Request Rejected by Network Throttling", + "SBG, TLS Certificate Imported": "vSBG: SBG, TLS Certificate Imported", + "SBG, Trace Recording Session Number Limit Reached": "vSBG: SBG, Trace Recording Session Number Limit Reached", + "SBG, Trace Session Deactivated": "vSBG: SBG, Trace Session Deactivated", + "SBG, Trace Session Times Out": "vSBG: SBG, Trace Session Times Out", + "SBG, Unknown Media Type or Payload Type": "vSBG: SBG, Unknown Media Type or Payload Type" +} diff --git a/src/test/resources/clds/templates/ui-location-default.json b/src/test/resources/clds/templates/ui-location-default.json new file mode 100644 index 000000000..c0043d988 --- /dev/null +++ b/src/test/resources/clds/templates/ui-location-default.json @@ -0,0 +1,5 @@ +{ + "DC1": "Data Center 1", + "DC2": "Data Center 2", + "DC3": "Data Center 3" +} -- cgit 1.2.3-korg From 35c6bda8ced4143b4fc1731727ee9bbe76b34c96 Mon Sep 17 00:00:00 2001 From: "Determe, Sebastien (sd378r)" Date: Mon, 5 Mar 2018 16:03:25 +0100 Subject: Remove the clds-reference.properties Remove clds-reference.properties and merge it into application.properties Issue-ID: CLAMP-136 Change-Id: I8dc6deffdca47dc50d1473ccbe9a94dc91d7d5d9 Signed-off-by: Determe, Sebastien (sd378r) --- extra/docker/clamp/clamp.env | 2 +- .../clamp/clds/client/DcaeDispatcherServices.java | 4 +- .../clamp/clds/client/DcaeInventoryServices.java | 4 +- .../clamp/clds/client/HolmesPolicyDelegate.java | 4 +- .../clds/client/OperationalPolicyDelegate.java | 4 +- .../onap/clamp/clds/client/SdcSendReqDelegate.java | 4 +- .../onap/clamp/clds/client/TcaPolicyDelegate.java | 4 +- .../client/req/policy/OperationalPolicyReq.java | 12 +- .../clamp/clds/client/req/policy/PolicyClient.java | 4 +- .../clds/client/req/sdc/SdcCatalogServices.java | 4 +- .../clamp/clds/client/req/sdc/SdcRequests.java | 4 +- .../clds/client/req/tca/TcaRequestFormatter.java | 10 +- .../onap/clamp/clds/config/ClampProperties.java | 154 ++++++++++++++++ .../clamp/clds/config/CldsReferenceProperties.java | 173 ----------------- .../config/spring/CldsSecurityConfigUsers.java | 20 +- .../org/onap/clamp/clds/service/CldsService.java | 16 +- .../clamp/clds/service/CldsTemplateService.java | 4 +- src/main/resources/application.properties | 96 +++++++++- src/main/resources/clds/clds-reference.properties | 108 ----------- .../clamp/clds/it/OperationPolicyReqItCase.java | 4 +- .../org/onap/clamp/clds/it/PolicyClientItCase.java | 4 +- .../clamp/clds/it/SdcCatalogServicesItCase.java | 4 +- .../clamp/clds/it/TcaRequestFormatterItCase.java | 4 +- .../it/config/CldsReferencePropertiesItCase.java | 4 +- src/test/resources/application.properties | 204 +++++++++++++++++++++ src/test/resources/clds/clds-reference.properties | 109 ----------- src/test/resources/https/https-test.properties | 46 ----- 27 files changed, 503 insertions(+), 507 deletions(-) create mode 100644 src/main/java/org/onap/clamp/clds/config/ClampProperties.java delete mode 100644 src/main/java/org/onap/clamp/clds/config/CldsReferenceProperties.java delete mode 100644 src/main/resources/clds/clds-reference.properties create mode 100644 src/test/resources/application.properties delete mode 100644 src/test/resources/clds/clds-reference.properties (limited to 'src/test/resources/clds') diff --git a/extra/docker/clamp/clamp.env b/extra/docker/clamp/clamp.env index 7beb4fe1c..8c4375b88 100644 --- a/extra/docker/clamp/clamp.env +++ b/extra/docker/clamp/clamp.env @@ -1,2 +1,2 @@ ### Be careful, this must be in one line only ### -SPRING_APPLICATION_JSON={"spring.datasource.cldsdb.url":"jdbc:mariadb:sequential://db:3306/cldsdb4?autoReconnect=true&connectTimeout=10000&socketTimeout=10000&retriesAllDown=3","org.onap.clamp.config.files.cldsPolicyConfig":"classpath:/clds/clds-policy-config.properties","org.onap.clamp.config.files.cldsReference":"classpath:/clds/clds-reference.properties","org.onap.clamp.config.files.sdcController":"classpath:/clds/sdc-controllers-config.json"} \ No newline at end of file +SPRING_APPLICATION_JSON={"spring.datasource.cldsdb.url":"jdbc:mariadb:sequential://db:3306/cldsdb4?autoReconnect=true&connectTimeout=10000&socketTimeout=10000&retriesAllDown=3","org.onap.clamp.config.files.cldsPolicyConfig":"classpath:/clds/clds-policy-config.properties","org.onap.clamp.config.files.sdcController":"classpath:/clds/sdc-controllers-config.json"} \ No newline at end of file diff --git a/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java b/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java index f92405813..9226604a1 100644 --- a/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java +++ b/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java @@ -31,7 +31,7 @@ import java.util.Date; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; -import org.onap.clamp.clds.config.CldsReferenceProperties; +import org.onap.clamp.clds.config.ClampProperties; import org.onap.clamp.clds.exception.dcae.DcaeDeploymentException; import org.onap.clamp.clds.util.LoggingUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -47,7 +47,7 @@ public class DcaeDispatcherServices { protected static final EELFLogger logger = EELFManager.getInstance().getLogger(DcaeDispatcherServices.class); protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); @Autowired - private CldsReferenceProperties refProp; + private ClampProperties refProp; private static final String STATUS_URL_LOG = "Status URL extracted: "; private static final String DCAE_URL_PREFIX = "/dcae-deployments/"; private static final String DCAE_URL_PROPERTY_NAME = "dcae.dispatcher.url"; diff --git a/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java b/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java index 4a2f32e6e..c4abebdcd 100644 --- a/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java +++ b/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java @@ -41,7 +41,7 @@ import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; -import org.onap.clamp.clds.config.CldsReferenceProperties; +import org.onap.clamp.clds.config.ClampProperties; import org.onap.clamp.clds.dao.CldsDao; import org.onap.clamp.clds.model.CldsEvent; import org.onap.clamp.clds.model.CldsModel; @@ -63,7 +63,7 @@ public class DcaeInventoryServices { protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); private static final String DCAE_INVENTORY_URL = "dcae.inventory.url"; @Autowired - private CldsReferenceProperties refProp; + private ClampProperties refProp; @Autowired private CldsDao cldsDao; diff --git a/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDelegate.java b/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDelegate.java index 4e165e141..37259cdfe 100644 --- a/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDelegate.java +++ b/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDelegate.java @@ -31,7 +31,7 @@ import java.util.UUID; import org.apache.camel.Exchange; import org.apache.camel.Handler; import org.onap.clamp.clds.client.req.policy.PolicyClient; -import org.onap.clamp.clds.config.CldsReferenceProperties; +import org.onap.clamp.clds.config.ClampProperties; import org.onap.clamp.clds.model.properties.Holmes; import org.onap.clamp.clds.model.properties.ModelProperties; import org.springframework.beans.factory.annotation.Autowired; @@ -48,7 +48,7 @@ public class HolmesPolicyDelegate { @Autowired private PolicyClient policyClient; @Autowired - private CldsReferenceProperties refProp; + private ClampProperties refProp; /** * Perform activity. Send Holmes info to policy api. diff --git a/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDelegate.java b/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDelegate.java index ec83db9de..ae2880567 100644 --- a/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDelegate.java +++ b/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDelegate.java @@ -33,7 +33,7 @@ import org.apache.camel.Exchange; import org.apache.camel.Handler; import org.onap.clamp.clds.client.req.policy.OperationalPolicyReq; import org.onap.clamp.clds.client.req.policy.PolicyClient; -import org.onap.clamp.clds.config.CldsReferenceProperties; +import org.onap.clamp.clds.config.ClampProperties; import org.onap.clamp.clds.model.properties.ModelProperties; import org.onap.clamp.clds.model.properties.Policy; import org.onap.clamp.clds.model.properties.PolicyChain; @@ -61,7 +61,7 @@ public class OperationalPolicyDelegate { * Automatically injected by Spring, define in CldsConfiguration as a bean. */ @Autowired - private CldsReferenceProperties refProp; + private ClampProperties refProp; /** * Perform activity. Send Operational Policy info to policy api. diff --git a/src/main/java/org/onap/clamp/clds/client/SdcSendReqDelegate.java b/src/main/java/org/onap/clamp/clds/client/SdcSendReqDelegate.java index 438ea4727..64e19f922 100644 --- a/src/main/java/org/onap/clamp/clds/client/SdcSendReqDelegate.java +++ b/src/main/java/org/onap/clamp/clds/client/SdcSendReqDelegate.java @@ -35,7 +35,7 @@ import org.apache.camel.Handler; import org.apache.commons.codec.DecoderException; import org.onap.clamp.clds.client.req.sdc.SdcCatalogServices; import org.onap.clamp.clds.client.req.sdc.SdcRequests; -import org.onap.clamp.clds.config.CldsReferenceProperties; +import org.onap.clamp.clds.config.ClampProperties; import org.onap.clamp.clds.model.DcaeEvent; import org.onap.clamp.clds.model.properties.Global; import org.onap.clamp.clds.model.properties.ModelProperties; @@ -55,7 +55,7 @@ public class SdcSendReqDelegate { @Autowired private SdcRequests sdcReq; @Autowired - private CldsReferenceProperties refProp; + private ClampProperties refProp; /** * Perform activity. Send to sdc proxy. diff --git a/src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java b/src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java index 55fe2c571..e16e8c35a 100644 --- a/src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java +++ b/src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java @@ -32,7 +32,7 @@ import org.apache.camel.Exchange; import org.apache.camel.Handler; import org.onap.clamp.clds.client.req.policy.PolicyClient; import org.onap.clamp.clds.client.req.tca.TcaRequestFormatter; -import org.onap.clamp.clds.config.CldsReferenceProperties; +import org.onap.clamp.clds.config.ClampProperties; import org.onap.clamp.clds.model.properties.ModelProperties; import org.onap.clamp.clds.model.properties.Tca; import org.springframework.beans.factory.annotation.Autowired; @@ -47,7 +47,7 @@ public class TcaPolicyDelegate { protected static final EELFLogger logger = EELFManager.getInstance().getLogger(TcaPolicyDelegate.class); protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); @Autowired - private CldsReferenceProperties refProp; + private ClampProperties refProp; @Autowired private PolicyClient policyClient; diff --git a/src/main/java/org/onap/clamp/clds/client/req/policy/OperationalPolicyReq.java b/src/main/java/org/onap/clamp/clds/client/req/policy/OperationalPolicyReq.java index 434da4b65..d3e8a5418 100644 --- a/src/main/java/org/onap/clamp/clds/client/req/policy/OperationalPolicyReq.java +++ b/src/main/java/org/onap/clamp/clds/client/req/policy/OperationalPolicyReq.java @@ -39,7 +39,7 @@ import java.util.Map; import javax.ws.rs.BadRequestException; -import org.onap.clamp.clds.config.CldsReferenceProperties; +import org.onap.clamp.clds.config.ClampProperties; import org.onap.clamp.clds.model.properties.Global; import org.onap.clamp.clds.model.properties.ModelProperties; import org.onap.clamp.clds.model.properties.PolicyChain; @@ -80,7 +80,7 @@ public class OperationalPolicyReq { * @throws BuilderException * @throws UnsupportedEncodingException */ - public static Map> formatAttributes(CldsReferenceProperties refProp, ModelProperties prop, + public static Map> formatAttributes(ClampProperties refProp, ModelProperties prop, String modelElementId, PolicyChain policyChain) throws BuilderException, UnsupportedEncodingException { Global global = prop.getGlobal(); prop.setCurrentModelElementId(modelElementId); @@ -163,7 +163,7 @@ public class OperationalPolicyReq { * @throws BuilderException * @throws UnsupportedEncodingException */ - protected static String formatOpenLoopYaml(CldsReferenceProperties refProp, ModelProperties prop, String modelElementId, + protected static String formatOpenLoopYaml(ClampProperties refProp, ModelProperties prop, String modelElementId, PolicyChain policyChain) throws BuilderException, UnsupportedEncodingException { // get property objects Global global = prop.getGlobal(); @@ -193,7 +193,7 @@ public class OperationalPolicyReq { * @throws BuilderException * @throws UnsupportedEncodingException */ - protected static String formatYaml(CldsReferenceProperties refProp, ModelProperties prop, String modelElementId, + protected static String formatYaml(ClampProperties refProp, ModelProperties prop, String modelElementId, PolicyChain policyChain) throws BuilderException, UnsupportedEncodingException { // get property objects Global global = prop.getGlobal(); @@ -251,7 +251,7 @@ public class OperationalPolicyReq { * @throws BuilderException * @throws UnsupportedEncodingException */ - protected static String formateNodeBYaml(CldsReferenceProperties refProp, ModelProperties prop, String modelElementId, + protected static String formateNodeBYaml(ClampProperties refProp, ModelProperties prop, String modelElementId, PolicyChain policyChain) throws BuilderException, UnsupportedEncodingException { // get property objects Global global = prop.getGlobal(); @@ -329,7 +329,7 @@ public class OperationalPolicyReq { * @param inOrigList * @return */ - private static List addAOTSActorRecipe(CldsReferenceProperties refProp, String service, List inOrigList) { + private static List addAOTSActorRecipe(ClampProperties refProp, String service, List inOrigList) { List outList = new ArrayList<>(); try { PolicyItem policyItem = inOrigList.get(0); diff --git a/src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java b/src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java index 06eff4ef7..5160d04a8 100644 --- a/src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java +++ b/src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java @@ -37,7 +37,7 @@ import java.util.UUID; import javax.ws.rs.BadRequestException; -import org.onap.clamp.clds.config.CldsReferenceProperties; +import org.onap.clamp.clds.config.ClampProperties; import org.onap.clamp.clds.exception.policy.PolicyClientException; import org.onap.clamp.clds.model.properties.ModelProperties; import org.onap.clamp.clds.util.LoggingUtils; @@ -76,7 +76,7 @@ public class PolicyClient { @Autowired protected ApplicationContext appContext; @Autowired - protected CldsReferenceProperties refProp; + protected ClampProperties refProp; /** * Perform BRMS policy type. diff --git a/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcCatalogServices.java b/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcCatalogServices.java index c01fe6a3c..5664653bf 100644 --- a/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcCatalogServices.java +++ b/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcCatalogServices.java @@ -58,7 +58,7 @@ import org.apache.commons.csv.CSVRecord; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.apache.http.HttpHeaders; -import org.onap.clamp.clds.config.CldsReferenceProperties; +import org.onap.clamp.clds.config.ClampProperties; import org.onap.clamp.clds.exception.sdc.SdcCommunicationException; import org.onap.clamp.clds.model.CldsAlarmCondition; import org.onap.clamp.clds.model.CldsServiceData; @@ -93,7 +93,7 @@ public class SdcCatalogServices { private static final String SDC_INSTANCE_ID_CLAMP = "CLAMP-Tool"; private static final String RESOURCE_URL_PREFIX = "resources"; @Autowired - private CldsReferenceProperties refProp; + private ClampProperties refProp; /** * Return SDC id and pw as a HTTP Basic Auth string (for example: Basic diff --git a/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcRequests.java b/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcRequests.java index 214933d49..e34b7e907 100644 --- a/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcRequests.java +++ b/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcRequests.java @@ -41,7 +41,7 @@ import java.util.Map.Entry; import org.apache.commons.codec.DecoderException; import org.onap.clamp.clds.client.req.tca.TcaRequestFormatter; -import org.onap.clamp.clds.config.CldsReferenceProperties; +import org.onap.clamp.clds.config.ClampProperties; import org.onap.clamp.clds.model.properties.Global; import org.onap.clamp.clds.model.properties.ModelProperties; import org.onap.clamp.clds.model.properties.Tca; @@ -61,7 +61,7 @@ public class SdcRequests { @Autowired private SdcCatalogServices sdcCatalogServices; @Autowired - protected CldsReferenceProperties refProp; + protected ClampProperties refProp; /** * Format the Blueprint from a Yaml diff --git a/src/main/java/org/onap/clamp/clds/client/req/tca/TcaRequestFormatter.java b/src/main/java/org/onap/clamp/clds/client/req/tca/TcaRequestFormatter.java index 73355a7a4..f51469159 100644 --- a/src/main/java/org/onap/clamp/clds/client/req/tca/TcaRequestFormatter.java +++ b/src/main/java/org/onap/clamp/clds/client/req/tca/TcaRequestFormatter.java @@ -32,7 +32,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import java.io.IOException; import java.util.Map; -import org.onap.clamp.clds.config.CldsReferenceProperties; +import org.onap.clamp.clds.config.ClampProperties; import org.onap.clamp.clds.exception.TcaRequestFormatterException; import org.onap.clamp.clds.model.properties.ModelProperties; import org.onap.clamp.clds.model.properties.Tca; @@ -64,7 +64,7 @@ public class TcaRequestFormatter { * The Model Prop created from BPMN JSON and BPMN properties JSON * @return The Json string containing that should be sent to policy */ - public static String createPolicyJson(CldsReferenceProperties refProp, ModelProperties modelProperties) { + public static String createPolicyJson(ClampProperties refProp, ModelProperties modelProperties) { try { String service = modelProperties.getGlobal().getService(); Tca tca = modelProperties.getType(Tca.class); @@ -103,7 +103,7 @@ public class TcaRequestFormatter { * modelProperties.setCurrentModelElementId will be used * @return The Json node containing what should be sent to policy */ - public static JsonNode createPolicyContent(CldsReferenceProperties refProp, ModelProperties modelProperties, String service, + public static JsonNode createPolicyContent(ClampProperties refProp, ModelProperties modelProperties, String service, String policyName, Tca tca) { try { String serviceToUse = service; @@ -153,7 +153,7 @@ public class TcaRequestFormatter { * The Model Properties created from BPMN JSON and BPMN * properties JSON */ - private static void addThresholds(CldsReferenceProperties refProp, String service, ObjectNode appendToNode, TcaItem tcaItem, + private static void addThresholds(ClampProperties refProp, String service, ObjectNode appendToNode, TcaItem tcaItem, ModelProperties modelProperties) { ArrayNode tcaNodes = appendToNode.withArray("thresholds"); ObjectNode tcaNode; @@ -185,7 +185,7 @@ public class TcaRequestFormatter { * The yaml string received from the UI * @return The updated YAML as a string */ - public static String updatedBlueprintWithConfiguration(CldsReferenceProperties refProp, ModelProperties modelProperties, + public static String updatedBlueprintWithConfiguration(ClampProperties refProp, ModelProperties modelProperties, String yamlValue) { String jsonPolicy = ((ObjectNode) createPolicyContent(refProp, modelProperties, null, null, null)).toString(); logger.info("Yaml that will be updated:" + yamlValue); diff --git a/src/main/java/org/onap/clamp/clds/config/ClampProperties.java b/src/main/java/org/onap/clamp/clds/config/ClampProperties.java new file mode 100644 index 000000000..66f35acc6 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/config/ClampProperties.java @@ -0,0 +1,154 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2017-2018 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.config; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; + +import java.io.IOException; +import java.net.URL; +import java.nio.charset.StandardCharsets; + +import org.apache.commons.io.IOUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; + +/** + * Holds Clamp properties and add some functionalities. + */ +@Component +public class ClampProperties { + + @Autowired + private ApplicationContext appContext; + @Autowired + private Environment env; + public static final String CONFIG_PREFIX = "clamp.config."; + + /** + * get property value. + * + * @param key + * The first key + * @return The string with the value + */ + public String getStringValue(String key) { + return env.getProperty(CONFIG_PREFIX + key); + } + + /** + * get property value for a combo key (key1 + "." + key2). If not found just + * use key1. + * + * @param key1 + * The first key + * @param key2 + * The second key after a dot + * @return The string with the value + */ + public String getStringValue(String key1, String key2) { + String value = getStringValue(key1 + "." + key2); + if (value == null || value.length() == 0) { + value = getStringValue(key1); + } + return value; + } + + /** + * Return json as objects that can be updated. The value obtained from the + * clds-reference file will be used as a filename. + * + * @param key + * The key that will be used to access the clds-reference file + * @return A jsonNode + * @throws IOException + * In case of issues with the JSON parser + */ + public JsonNode getJsonTemplate(String key) throws IOException { + ObjectMapper objectMapper = new ObjectMapper(); + String fileReference = getStringValue(key); + return (fileReference != null) ? objectMapper.readValue(getFileContentFromPath(fileReference), JsonNode.class) + : null; + } + + /** + * Return json as objects that can be updated. First try with combo key + * (key1 + "." + key2), otherwise default to just key1. The value obtained + * from the clds-reference file will be used as a filename. + * + * @param key1 + * The first key + * @param key2 + * The second key after a dot + * @return A JsonNode + * @throws IOException + * In case of issues with the JSON parser + */ + public JsonNode getJsonTemplate(String key1, String key2) throws IOException { + ObjectMapper objectMapper = new ObjectMapper(); + String fileReference = getStringValue(key1, key2); + return (fileReference != null) ? objectMapper.readValue(getFileContentFromPath(fileReference), JsonNode.class) + : null; + } + + /** + * Return the file content. The value obtained from the clds-reference file + * will be used as a filename. + * + * @param key + * The key that will be used to access the clds-reference file + * @return File content in String + * @throws IOException + * In case of issues with the JSON parser + */ + public String getFileContent(String key) throws IOException { + String fileReference = getStringValue(key); + return (fileReference != null) ? getFileContentFromPath(fileReference) : null; + } + + /** + * Return the file content. First try with combo key (key1 + "." + key2), + * otherwise default to just key1. The value obtained from the + * clds-reference file will be used as a filename. + * + * @param key1 + * The first key + * @param key2 + * The second key after a dot + * @return File content in String + * @throws IOException + * In case of issues with the JSON parser + */ + public String getFileContent(String key1, String key2) throws IOException { + String fileReference = getStringValue(key1, key2); + return (fileReference != null) ? getFileContentFromPath(fileReference) : null; + } + + private String getFileContentFromPath(String filepath) throws IOException { + URL url = appContext.getResource(filepath).getURL(); + return IOUtils.toString(url, StandardCharsets.UTF_8); + } +} diff --git a/src/main/java/org/onap/clamp/clds/config/CldsReferenceProperties.java b/src/main/java/org/onap/clamp/clds/config/CldsReferenceProperties.java deleted file mode 100644 index b234b9329..000000000 --- a/src/main/java/org/onap/clamp/clds/config/CldsReferenceProperties.java +++ /dev/null @@ -1,173 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2017-2018 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============================================ - * =================================================================== - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - */ - -package org.onap.clamp.clds.config; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; - -import java.io.IOException; -import java.net.URL; -import java.nio.charset.StandardCharsets; -import java.util.Properties; - -import javax.annotation.PostConstruct; - -import org.apache.commons.io.IOUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.ApplicationContext; -import org.springframework.core.io.Resource; -import org.springframework.stereotype.Component; - -/** - * Holds reference properties. - */ -@Component -public class CldsReferenceProperties { - - @Autowired - private ApplicationContext appContext; - private Properties prop; - @Value("${org.onap.clamp.config.files.cldsReference:'classpath:/clds/clds-reference.properties'}") - private String cldsReferenceValuesFile; - - @PostConstruct - public void loadConfiguration() throws IOException { - prop = new Properties(); - Resource resource = appContext.getResource(cldsReferenceValuesFile); - prop.load(resource.getInputStream()); - } - - public CldsReferenceProperties(String referenceValuesFile) throws IOException { - cldsReferenceValuesFile = referenceValuesFile; - loadConfiguration(); - } - - public CldsReferenceProperties() { - } - - /** - * get property value. - * - * @param key - * The first key - * @return The string with the value - */ - public String getStringValue(String key) { - return prop.getProperty(key); - } - - /** - * get property value for a combo key (key1 + "." + key2). If not found just - * use key1. - * - * @param key1 - * The first key - * @param key2 - * The second key after a dot - * @return The string with the value - */ - public String getStringValue(String key1, String key2) { - String value = getStringValue(key1 + "." + key2); - if (value == null || value.length() == 0) { - value = getStringValue(key1); - } - return value; - } - - /** - * Return json as objects that can be updated. The value obtained from the - * clds-reference file will be used as a filename. - * - * @param key - * The key that will be used to access the clds-reference file - * @return A jsonNode - * @throws IOException - * In case of issues with the JSON parser - */ - public JsonNode getJsonTemplate(String key) throws IOException { - ObjectMapper objectMapper = new ObjectMapper(); - String fileReference = getStringValue(key); - return (fileReference != null) ? objectMapper.readValue(getFileContentFromPath(fileReference), JsonNode.class) - : null; - } - - /** - * Return json as objects that can be updated. First try with combo key - * (key1 + "." + key2), otherwise default to just key1. The value obtained - * from the clds-reference file will be used as a filename. - * - * @param key1 - * The first key - * @param key2 - * The second key after a dot - * @return A JsonNode - * @throws IOException - * In case of issues with the JSON parser - */ - public JsonNode getJsonTemplate(String key1, String key2) throws IOException { - ObjectMapper objectMapper = new ObjectMapper(); - String fileReference = getStringValue(key1, key2); - return (fileReference != null) ? objectMapper.readValue(getFileContentFromPath(fileReference), JsonNode.class) - : null; - } - - /** - * Return the file content. The value obtained from the clds-reference file - * will be used as a filename. - * - * @param key - * The key that will be used to access the clds-reference file - * @return File content in String - * @throws IOException - * In case of issues with the JSON parser - */ - public String getFileContent(String key) throws IOException { - String fileReference = getStringValue(key); - return (fileReference != null) ? getFileContentFromPath(fileReference) : null; - } - - /** - * Return the file content. First try with combo key (key1 + "." + key2), - * otherwise default to just key1. The value obtained from the - * clds-reference file will be used as a filename. - * - * @param key1 - * The first key - * @param key2 - * The second key after a dot - * @return File content in String - * @throws IOException - * In case of issues with the JSON parser - */ - public String getFileContent(String key1, String key2) throws IOException { - String fileReference = getStringValue(key1, key2); - return (fileReference != null) ? getFileContentFromPath(fileReference) : null; - } - - private String getFileContentFromPath(String filepath) throws IOException { - URL url = appContext.getResource(filepath).getURL(); - return IOUtils.toString(url, StandardCharsets.UTF_8); - } -} diff --git a/src/main/java/org/onap/clamp/clds/config/spring/CldsSecurityConfigUsers.java b/src/main/java/org/onap/clamp/clds/config/spring/CldsSecurityConfigUsers.java index 12dc36418..51bd69540 100644 --- a/src/main/java/org/onap/clamp/clds/config/spring/CldsSecurityConfigUsers.java +++ b/src/main/java/org/onap/clamp/clds/config/spring/CldsSecurityConfigUsers.java @@ -45,28 +45,22 @@ import org.springframework.security.config.annotation.web.configuration.WebSecur * This class is used to enable the HTTP authentication to login. It requires a * specific JSON file containing the user definition * (classpath:etc/config/clds/clds-users.json). - * */ @Configuration @EnableWebSecurity @Profile("clamp-spring-authentication") public class CldsSecurityConfigUsers extends WebSecurityConfigurerAdapter { - protected static final EELFLogger logger = EELFManager.getInstance() - .getLogger(CldsSecurityConfigUsers.class); + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsSecurityConfigUsers.class); protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); - @Autowired - private ApplicationContext appContext; - + private ApplicationContext appContext; @Value("${org.onap.clamp.config.files.cldsUsers:'classpath:etc/config/clds/clds-users.json'}") - private String cldsUsersFile; - - @Value("${CLDS_PERMISSION_TYPE_CL:permission-type-cl}") - private String cldsPersmissionTypeCl; - + private String cldsUsersFile; + @Value("${clamp.config.security.permission.type.cl:permission-type-cl}") + private String cldsPersmissionTypeCl; @Value("${CLDS_PERMISSION_INSTANCE:dev}") - private String cldsPermissionInstance; + private String cldsPermissionInstance; /** * This method configures on which URL the authorization will be enabled. @@ -93,13 +87,11 @@ public class CldsSecurityConfigUsers extends WebSecurityConfigurerAdapter { public void configureGlobal(AuthenticationManagerBuilder auth) { try { CldsUser[] usersList = loadUsers(); - // no users defined if (null == usersList) { logger.warn("No users defined. Users should be defined under " + cldsUsersFile); return; } - for (CldsUser user : usersList) { auth.inMemoryAuthentication().withUser(user.getUser()).password(user.getPassword()) .roles(user.getPermissionsString()); diff --git a/src/main/java/org/onap/clamp/clds/service/CldsService.java b/src/main/java/org/onap/clamp/clds/service/CldsService.java index a9b1b771a..3b6bc3778 100644 --- a/src/main/java/org/onap/clamp/clds/service/CldsService.java +++ b/src/main/java/org/onap/clamp/clds/service/CldsService.java @@ -62,7 +62,7 @@ import org.onap.clamp.clds.camel.CamelProxy; import org.onap.clamp.clds.client.DcaeDispatcherServices; import org.onap.clamp.clds.client.DcaeInventoryServices; import org.onap.clamp.clds.client.req.sdc.SdcCatalogServices; -import org.onap.clamp.clds.config.CldsReferenceProperties; +import org.onap.clamp.clds.config.ClampProperties; import org.onap.clamp.clds.dao.CldsDao; import org.onap.clamp.clds.exception.CldsConfigException; import org.onap.clamp.clds.exception.policy.PolicyClientException; @@ -105,17 +105,17 @@ public class CldsService extends SecureServiceBase { @Autowired private ApplicationContext appContext; private static final String RESOURCE_NAME = "clds-version.properties"; - @Value("${CLDS_PERMISSION_TYPE_CL:permission-type-cl}") + @Value("${clamp.config.security.permission.type.cl:permission-type-cl}") private String cldsPersmissionTypeCl; - @Value("${CLDS_PERMISSION_TYPE_CL_MANAGE:permission-type-cl-manage}") + @Value("${clamp.config.security.permission.type.cl.manage:permission-type-cl-manage}") private String cldsPermissionTypeClManage; - @Value("${CLDS_PERMISSION_TYPE_CL_EVENT:permission-type-cl-event}") + @Value("${clamp.config.security.permission.type.cl.event:permission-type-cl-event}") private String cldsPermissionTypeClEvent; - @Value("${CLDS_PERMISSION_TYPE_FILTER_VF:permission-type-filter-vf}") + @Value("${clamp.config.security.permission.type.filter.vf:permission-type-filter-vf}") private String cldsPermissionTypeFilterVf; - @Value("${CLDS_PERMISSION_TYPE_TEMPLATE:permission-type-template}") + @Value("${clamp.config.security.permission.type.template:permission-type-template}") private String cldsPermissionTypeTemplate; - @Value("${CLDS_PERMISSION_INSTANCE:dev}") + @Value("${clamp.config.security.permission.instance:dev}") private String cldsPermissionInstance; private SecureServicePermission permissionReadCl; private SecureServicePermission permissionUpdateCl; @@ -140,7 +140,7 @@ public class CldsService extends SecureServiceBase { @Autowired private XslTransformer cldsBpmnTransformer; @Autowired - private CldsReferenceProperties refProp; + private ClampProperties refProp; @Autowired private SdcCatalogServices sdcCatalogServices; @Autowired diff --git a/src/main/java/org/onap/clamp/clds/service/CldsTemplateService.java b/src/main/java/org/onap/clamp/clds/service/CldsTemplateService.java index e64f74bb2..1b03922d1 100644 --- a/src/main/java/org/onap/clamp/clds/service/CldsTemplateService.java +++ b/src/main/java/org/onap/clamp/clds/service/CldsTemplateService.java @@ -55,9 +55,9 @@ import org.springframework.stereotype.Component; @Path("/cldsTempate") public class CldsTemplateService extends SecureServiceBase { - @Value("${CLDS_PERMISSION_TYPE_TEMPLATE:permission-type-template}") + @Value("${clamp.config.security.permission.type.template:permission-type-template}") private String cldsPermissionTypeTemplate; - @Value("${CLDS_PERMISSION_INSTANCE:dev}") + @Value("${clamp.config.security.permission.instance:dev}") private String cldsPermissionInstance; private SecureServicePermission permissionReadTemplate; private SecureServicePermission permissionUpdateTemplate; diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 2ac53e0b3..8c8b1968f 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -106,17 +106,99 @@ async.core.pool.size=10 async.max.pool.size=20 async.queue.capacity=500 -org.onap.clamp.config.files.cldsReference=classpath:/clds/clds-reference.properties org.onap.clamp.config.files.cldsPolicyConfig=classpath:/clds/clds-policy-config.properties org.onap.clamp.config.files.cldsUsers=classpath:/clds/clds-users.json org.onap.clamp.config.files.globalClds=classpath:/clds/globalClds.properties org.onap.clamp.config.files.sdcController=classpath:/clds/sdc-controllers-config.json +# Properties for Clamp +# DCAE request build properties +# +clamp.config.dcae.template=classpath:/clds/templates/dcae-template.json +clamp.config.dcae.decode.service_ids=classpath:/clds/templates/dcae-decode-service_ids.json +clamp.config.dcae.deployment.template=classpath:/clds/templates/dcae-deployment-template.json +# +# SDC request blueprint properties +# +clamp.config.sdc.template=classpath:/clds/templates/sdc-template.json +clamp.config.sdc.decode.service_ids=classpath:/clds/templates/sdc-decode-service_ids.json +# +# +# General Policy request properties +# +clamp.config.policy.onap.name=DCAE +clamp.config.policy.pdp.group=default +clamp.config.policy.ms.type=MicroService +clamp.config.policy.ms.policyNamePrefix=Config_MS_ +clamp.config.policy.op.type=BRMS_Param +clamp.config.policy.op.policyNamePrefix=Config_BRMS_Param_ + +# TCA MicroService Policy request build properties +# +clamp.config.tca.policyid.prefix=DCAE.Config_ +clamp.config.tca.policy.template=classpath:/clds/templates/tca-policy-template.json +clamp.config.tca.template=classpath:/clds/templates/tca-template.json +clamp.config.tca.thresholds.template=classpath:/clds/templates/tca-thresholds-template.json + +# +# +# Operational Policy request build properties +# +clamp.config.op.policyDescription=from clds +# default +clamp.config.op.templateName=ClosedLoopvUSP +clamp.config.op.operationTopic=APPC-CL +clamp.config.op.notificationTopic=POLICY-CL-MGT +clamp.config.op.controller=amsterdam +clamp.config.op.policy.appc=APPC +# by service: vSCP +clamp.config.op.templateName.vSCP=ClosedLoopTemplate +clamp.config.op.controller.vSCP=1607-f5fw +clamp.config.op.eNodeB.templateName=ClosedLoopControlName +clamp.config.op.eNodeB.operationTopic=com.onap.sdnr.RanCLRequest-v00 +clamp.config.op.eNodeB.notificationTopic=com.onap-policy.IST-ENODEB-CL +clamp.config.op.eNodeB.controller=amsterdam +clamp.config.op.eNodeB.recipe=classpath:/clds/templates/op-eNodeB-recipe.json +clamp.config.op.eNodeB.timeWindow=35 +clamp.config.op.eNodeB.limit=2 +clamp.config.op.eNodeB.period=10s +# +# Sdc service properties +clamp.config.sdc.catalog.url=http://sdc.api.simpledemo.onap.org:8080/sdc/v1/catalog/ +clamp.config.sdc.hostUrl=http://sdc.api.simpledemo.onap.org:8080 +clamp.config.sdc.serviceUrl=http://sdc.api.simpledemo.onap.org:8080/sdc/v1/catalog/services +clamp.config.sdc.serviceUsername=clamp +clamp.config.sdc.servicePassword=b7acccda32b98c5bb7acccda32b98c5b05D511BD6D93626E90D18E9D24D9B78CD34C7EE8012F0A189A28763E82271E50A5D4EC10C7D93E06E0A2D27CAE66B981 +clamp.config.sdc.artifactLabel=blueprintclampcockpit +clamp.config.sdc.sdcX-InstanceID=CLAMP +clamp.config.sdc.artifactType=DCAE_INVENTORY_BLUEPRINT +clamp.config.sdc.locationArtifactLabel=locationclampcockpit +clamp.config.sdc.locationArtifactType=DCAE_INVENTORY_JSON +clamp.config.sdc.InstanceID=X-ECOMP-InstanceID +clamp.config.sdc.header.requestId = X-ECOMP-RequestID +# +# +clamp.config.ui.location.default=classpath:/clds/templates/ui-location-default.json +clamp.config.ui.alarm.default=classpath:/clds/templates/ui-alarm-default.json +# +# if action.test.override is true, then any action will be marked as test=true (even if incoming action request had test=false); otherwise, test flag will be unchanged on the action request +clamp.config.action.test.override=false +# if action.insert.test.event is true, then insert event even if the action is set to test +clamp.config.action.insert.test.event=false +clamp.config.clds.service.cache.invalidate.after.seconds=120 + +#DCAE Inventory Url Properties +clamp.config.dcae.inventory.url=http://dcae.api.simpledemo.onap.org:8080 + +#DCAE Dispatcher Url Properties +clamp.config.dcae.dispatcher.url=http://dcae.api.simpledemo.onap.org:8080 +clamp.config.dcae.header.requestId = X-ECOMP-RequestID + #Define user permission related parameters, the permission type can be changed but MUST be redefined in clds-users.properties in that case ! -CLDS_PERMISSION_TYPE_CL=permission-type-cl -CLDS_PERMISSION_TYPE_CL_MANAGE=permission-type-cl-manage -CLDS_PERMISSION_TYPE_CL_EVENT=permission-type-cl-event -CLDS_PERMISSION_TYPE_FILTER_VF=permission-type-filter-vf -CLDS_PERMISSION_TYPE_TEMPLATE=permission-type-template +clamp.config.security.permission.type.cl=permission-type-cl +clamp.config.security.permission.type.cl.manage=permission-type-cl-manage +clamp.config.security.permission.type.cl.event=permission-type-cl-event +clamp.config.security.permission.type.filter.vf=permission-type-filter-vf +clamp.config.security.permission.type.template=permission-type-template #This one indicates the type of instances (dev|prod|perf...), this must be set accordingly in clds-users.properties -CLDS_PERMISSION_INSTANCE=dev \ No newline at end of file +clamp.config.security.permission.instance=dev \ No newline at end of file diff --git a/src/main/resources/clds/clds-reference.properties b/src/main/resources/clds/clds-reference.properties deleted file mode 100644 index 3716a29dc..000000000 --- a/src/main/resources/clds/clds-reference.properties +++ /dev/null @@ -1,108 +0,0 @@ -### -# ============LICENSE_START======================================================= -# ONAP CLAMP -# ================================================================================ -# Copyright (C) 2017-2018 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============================================ -# =================================================================== -# ECOMP is a trademark and service mark of AT&T Intellectual Property. -### - -# -# Poperties for CLDS -# -# -# DCAE request build properties -# -dcae.template=classpath:/clds/templates/dcae-template.json -dcae.decode.service_ids=classpath:/clds/templates/dcae-decode-service_ids.json -dcae.deployment.template=classpath:/clds/templates/dcae-deployment-template.json -# -# SDC request blueprint properties -# -sdc.template=classpath:/clds/templates/sdc-template.json -sdc.decode.service_ids=classpath:/clds/templates/sdc-decode-service_ids.json -# -# -# General Policy request properties -# -policy.onap.name=DCAE -policy.pdp.group=default -policy.ms.type=MicroService -policy.ms.policyNamePrefix=Config_MS_ -policy.op.type=BRMS_Param -policy.op.policyNamePrefix=Config_BRMS_Param_ - -# TCA MicroService Policy request build properties -# -tca.policyid.prefix=DCAE.Config_ -tca.policy.template=classpath:/clds/templates/tca-policy-template.json -tca.template=classpath:/clds/templates/tca-template.json -tca.thresholds.template=classpath:/clds/templates/tca-thresholds-template.json - -# -# -# Operational Policy request build properties -# -op.policyDescription=from clds -# default -op.templateName=ClosedLoopvUSP -op.operationTopic=APPC-CL -op.notificationTopic=POLICY-CL-MGT -op.controller=amsterdam -op.policy.appc=APPC -# by service: vSCP -op.templateName.vSCP=ClosedLoopTemplate -op.controller.vSCP=1607-f5fw -op.eNodeB.templateName=ClosedLoopControlName -op.eNodeB.operationTopic=com.onap.sdnr.RanCLRequest-v00 -op.eNodeB.notificationTopic=com.onap-policy.IST-ENODEB-CL -op.eNodeB.controller=amsterdam -op.eNodeB.recipe=classpath:/clds/templates/op-eNodeB-recipe.json -op.eNodeB.timeWindow=35 -op.eNodeB.limit=2 -op.eNodeB.period=10s -# -# Sdc service properties -sdc.catalog.url=http://sdc.api.simpledemo.onap.org:8080/sdc/v1/catalog/ -sdc.hostUrl=http://sdc.api.simpledemo.onap.org:8080 -sdc.serviceUrl=http://sdc.api.simpledemo.onap.org:8080/sdc/v1/catalog/services -sdc.serviceUsername=clamp -sdc.servicePassword=b7acccda32b98c5bb7acccda32b98c5b05D511BD6D93626E90D18E9D24D9B78CD34C7EE8012F0A189A28763E82271E50A5D4EC10C7D93E06E0A2D27CAE66B981 -sdc.artifactLabel=blueprintclampcockpit -sdc.sdcX-InstanceID=CLAMP -sdc.artifactType=DCAE_INVENTORY_BLUEPRINT -sdc.locationArtifactLabel=locationclampcockpit -sdc.locationArtifactType=DCAE_INVENTORY_JSON -sdc.InstanceID=X-ECOMP-InstanceID -sdc.header.requestId = X-ECOMP-RequestID -# -# -ui.location.default=classpath:/clds/templates/ui-location-default.json -ui.alarm.default=classpath:/clds/templates/ui-alarm-default.json -# -# if action.test.override is true, then any action will be marked as test=true (even if incoming action request had test=false); otherwise, test flag will be unchanged on the action request -action.test.override=false -# if action.insert.test.event is true, then insert event even if the action is set to test -action.insert.test.event=false -clds.service.cache.invalidate.after.seconds=120 - -#DCAE Inventory Url Properties -dcae.inventory.url=http://dcae.api.simpledemo.onap.org:8080 - -#DCAE Dispatcher Url Properties -dcae.dispatcher.url=http://dcae.api.simpledemo.onap.org:8080 -dcae.header.requestId = X-ECOMP-RequestID diff --git a/src/test/java/org/onap/clamp/clds/it/OperationPolicyReqItCase.java b/src/test/java/org/onap/clamp/clds/it/OperationPolicyReqItCase.java index 04bc9594a..43f212cf3 100644 --- a/src/test/java/org/onap/clamp/clds/it/OperationPolicyReqItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/OperationPolicyReqItCase.java @@ -36,7 +36,7 @@ import java.util.Map; import org.junit.Test; import org.junit.runner.RunWith; import org.onap.clamp.clds.client.req.policy.OperationalPolicyReq; -import org.onap.clamp.clds.config.CldsReferenceProperties; +import org.onap.clamp.clds.config.ClampProperties; import org.onap.clamp.clds.model.CldsEvent; import org.onap.clamp.clds.model.properties.ModelProperties; import org.onap.clamp.clds.model.properties.Policy; @@ -53,7 +53,7 @@ import org.springframework.test.context.junit4.SpringRunner; public class OperationPolicyReqItCase { @Autowired - private CldsReferenceProperties refProp; + private ClampProperties refProp; @Test public void formatAttributesTest() throws IOException, BuilderException { diff --git a/src/test/java/org/onap/clamp/clds/it/PolicyClientItCase.java b/src/test/java/org/onap/clamp/clds/it/PolicyClientItCase.java index eb17c22c3..71cd9f6b8 100644 --- a/src/test/java/org/onap/clamp/clds/it/PolicyClientItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/PolicyClientItCase.java @@ -36,7 +36,7 @@ import org.junit.runner.RunWith; import org.onap.clamp.clds.client.req.policy.OperationalPolicyReq; import org.onap.clamp.clds.client.req.policy.PolicyClient; import org.onap.clamp.clds.client.req.tca.TcaRequestFormatter; -import org.onap.clamp.clds.config.CldsReferenceProperties; +import org.onap.clamp.clds.config.ClampProperties; import org.onap.clamp.clds.model.CldsEvent; import org.onap.clamp.clds.model.properties.ModelProperties; import org.onap.clamp.clds.model.properties.Policy; @@ -57,7 +57,7 @@ import org.springframework.test.context.junit4.SpringRunner; public class PolicyClientItCase { @Autowired - private CldsReferenceProperties refProp; + private ClampProperties refProp; @Autowired protected PolicyClient policyClient; String modelProp; diff --git a/src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesItCase.java b/src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesItCase.java index d873aa485..7655c5886 100644 --- a/src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesItCase.java @@ -33,7 +33,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; import org.onap.clamp.clds.client.req.sdc.SdcCatalogServices; -import org.onap.clamp.clds.config.CldsReferenceProperties; +import org.onap.clamp.clds.config.ClampProperties; import org.onap.clamp.clds.model.CldsAlarmCondition; import org.onap.clamp.clds.model.CldsServiceData; import org.onap.clamp.clds.model.sdc.SdcResource; @@ -51,7 +51,7 @@ import org.springframework.test.context.junit4.SpringRunner; public class SdcCatalogServicesItCase { @Autowired - private CldsReferenceProperties refProp; + private ClampProperties refProp; @Autowired private SdcCatalogServices sdcCatalogWired = new SdcCatalogServices(); diff --git a/src/test/java/org/onap/clamp/clds/it/TcaRequestFormatterItCase.java b/src/test/java/org/onap/clamp/clds/it/TcaRequestFormatterItCase.java index 24f127c3e..a46ecee1a 100644 --- a/src/test/java/org/onap/clamp/clds/it/TcaRequestFormatterItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/TcaRequestFormatterItCase.java @@ -33,7 +33,7 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.onap.clamp.clds.client.req.tca.TcaRequestFormatter; -import org.onap.clamp.clds.config.CldsReferenceProperties; +import org.onap.clamp.clds.config.ClampProperties; import org.onap.clamp.clds.model.CldsEvent; import org.onap.clamp.clds.model.properties.ModelProperties; import org.onap.clamp.clds.util.ResourceFileUtil; @@ -50,7 +50,7 @@ import org.springframework.test.context.junit4.SpringRunner; public class TcaRequestFormatterItCase { @Autowired - private CldsReferenceProperties refProp; + private ClampProperties refProp; private String modelProp; private String modelBpmn; private String modelName; diff --git a/src/test/java/org/onap/clamp/clds/it/config/CldsReferencePropertiesItCase.java b/src/test/java/org/onap/clamp/clds/it/config/CldsReferencePropertiesItCase.java index 484a13e60..43fc95981 100644 --- a/src/test/java/org/onap/clamp/clds/it/config/CldsReferencePropertiesItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/config/CldsReferencePropertiesItCase.java @@ -33,7 +33,7 @@ import java.io.IOException; import org.junit.Test; import org.junit.runner.RunWith; -import org.onap.clamp.clds.config.CldsReferenceProperties; +import org.onap.clamp.clds.config.ClampProperties; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; @@ -46,7 +46,7 @@ import org.springframework.test.context.junit4.SpringRunner; public class CldsReferencePropertiesItCase { @Autowired - private CldsReferenceProperties refProp; + private ClampProperties refProp; /** * Test getting a value the properties in string. diff --git a/src/test/resources/application.properties b/src/test/resources/application.properties new file mode 100644 index 000000000..a676e1057 --- /dev/null +++ b/src/test/resources/application.properties @@ -0,0 +1,204 @@ +### +# ============LICENSE_START======================================================= +# ONAP CLAMP +# ================================================================================ +# Copyright (C) 2017-2018 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============================================ +# =================================================================== +# ECOMP is a trademark and service mark of AT&T Intellectual Property. +### + +info.build.artifact=@project.artifactId@ +info.build.name=@project.name@ +info.build.description=@project.description@ +info.build.version=@project.version@ + +### Set the port for HTTP or HTTPS protocol (Controlled by Spring framework, only one at a time). +### (See below for the parameter 'server.http.port' if you want to have both enabled) +### To have only HTTP, keep the lines server.ssl.* commented +### To have only HTTPS enabled, uncomment the server.ssl.* lines and specify a right keystore location +server.port=8080 +### Settings for HTTPS (this automatically enables the HTTPS on the port 'server.port') +#server.ssl.key-store=file:/tmp/mykey.jks +#server.ssl.key-store-password=pass +#server.ssl.key-password=pass + +### In order to be user friendly when HTTPS is enabled, +### you can add another HTTP port that will be automatically redirected to HTTPS +### by enabling this parameter (server.http.port) and set it to another port (80 or 8080, 8090, etc ...) +#server.http-to-https-redirection.port=8090 + +### HTTP Example: +###-------------- +### server.port=8080 + +### HTTPS Example: +### -------------- +### server.port=8443 +### server.ssl.key-store=file:/tmp/mykey.jks +### server.ssl.key-store-password=mypass +### server.ssl.key-password=mypass + +### HTTP (Redirected to HTTPS) and HTTPS Example: +### -------------------------------------------- +### server.port=8443 <-- The HTTPS port +### server.ssl.key-store=file:/tmp/mykey.jks +### server.ssl.key-store-password=mypass +### server.ssl.key-password=mypass +### server.http-to-https-redirection.port=8090 <-- The HTTP port + +server.contextPath=/ +#Modified engine-rest applicationpath +spring.profiles.active=clamp-default,clamp-spring-authentication + +#The max number of active threads in this pool +server.tomcat.max-threads=200 +#The minimum number of threads always kept alive +server.tomcat.min-Spare-Threads=25 +#The number of milliseconds before an idle thread shutsdown, unless the number of active threads are less or equal to minSpareThreads +server.tomcat.max-idle-time=60000 + +#Servlet context parameters +server.context_parameters.p-name=value #context parameter with p-name as key and value as value. + +camel.springboot.consumer-template-cache-size=1000 +camel.springboot.producer-template-cache-size=1000 +camel.springboot.jmx-enabled=false +camel.defaultthreadpool.poolsize=10 +camel.defaultthreadpool.maxpoolsize=20 +camel.defaultthreadpool.maxqueuesize=1000 +camel.defaultthreadpool.keepaliveTime=60 +camel.defaultthreadpool.rejectpolicy=CallerRuns +#camel.springboot.xmlRoutes = false +camel.springboot.xmlRoutes=classpath:/clds/camel/*.xml +#camel.springboot.typeConversion = false + +#clds datasource connection details +spring.datasource.cldsdb.driverClassName=org.mariadb.jdbc.Driver +spring.datasource.cldsdb.url=jdbc:mariadb:sequential://localhost:${docker.mariadb.port.host}/cldsdb4?autoReconnect=true&connectTimeout=10000&socketTimeout=10000&retriesAllDown=3 +spring.datasource.cldsdb.username=clds +spring.datasource.cldsdb.password=4c90a0b48204383f4283448d23e0b885a47237b2a23588e7c4651604f51c1067 +spring.datasource.cldsdb.validationQuery=SELECT 1 +spring.datasource.cldsdb.validationQueryTimeout=20000 +spring.datasource.cldsdb.validationInterval=30000 +spring.datasource.cldsdb.testWhileIdle = true +spring.datasource.cldsdb.minIdle = 0 +spring.datasource.cldsdb.initialSize=0 +# Automatically test whether a connection provided is good or not +spring.datasource.cldsdb.testOnBorrow=true +spring.datasource.cldsdb.ignoreExceptionOnPreLoad=true + +#Async Executor default Parameters +async.core.pool.size=10 +async.max.pool.size=20 +async.queue.capacity=500 + +org.onap.clamp.config.files.cldsPolicyConfig=classpath:/clds/clds-policy-config.properties +org.onap.clamp.config.files.cldsUsers=classpath:/clds/clds-users.json +org.onap.clamp.config.files.globalClds=classpath:/clds/globalClds.properties +org.onap.clamp.config.files.sdcController=classpath:/clds/sdc-controllers-config.json + +# Properties for Clamp +# DCAE request build properties +# +clamp.config.dcae.template=classpath:/clds/templates/dcae-template.json +clamp.config.dcae.decode.service_ids=classpath:/clds/templates/dcae-decode-service_ids.json +clamp.config.dcae.deployment.template=classpath:/clds/templates/dcae-deployment-template.json +# +# SDC request blueprint properties +# +clamp.config.sdc.template=classpath:/clds/templates/sdc-template.json +clamp.config.sdc.decode.service_ids=classpath:/clds/templates/sdc-decode-service_ids.json +# +# +# General Policy request properties +# +clamp.config.policy.onap.name=DCAE +clamp.config.policy.pdp.group=default +clamp.config.policy.ms.type=MicroService +clamp.config.policy.ms.policyNamePrefix=Config_MS_ +clamp.config.policy.op.type=BRMS_Param +clamp.config.policy.op.policyNamePrefix=Config_BRMS_Param_ + +# TCA MicroService Policy request build properties +# +clamp.config.tca.policyid.prefix=DCAE.Config_ +clamp.config.tca.policy.template=classpath:/clds/templates/tca-policy-template.json +clamp.config.tca.template=classpath:/clds/templates/tca-template.json +clamp.config.tca.thresholds.template=classpath:/clds/templates/tca-thresholds-template.json + +# +# +# Operational Policy request build properties +# +clamp.config.op.policyDescription=from clds +# default +clamp.config.op.templateName=ClosedLoopvUSP +clamp.config.op.operationTopic=APPC-CL +clamp.config.op.notificationTopic=POLICY-CL-MGT +clamp.config.op.controller=amsterdam +clamp.config.op.policy.appc=APPC +# by service: vSCP +clamp.config.op.templateName.vSCP=ClosedLoopTemplate +clamp.config.op.controller.vSCP=1607-f5fw +clamp.config.op.eNodeB.templateName=ClosedLoopControlName +clamp.config.op.eNodeB.operationTopic=com.onap.sdnr.RanCLRequest-v00 +clamp.config.op.eNodeB.notificationTopic=com.onap-policy.IST-ENODEB-CL +clamp.config.op.eNodeB.controller=amsterdam +clamp.config.op.eNodeB.recipe=classpath:/clds/templates/op-eNodeB-recipe.json +clamp.config.op.eNodeB.timeWindow=35 +clamp.config.op.eNodeB.limit=2 +clamp.config.op.eNodeB.period=10s +# +# Sdc service properties +clamp.config.sdc.catalog.url=http://localhost:${docker.http-cache.port.host}/sdc/v1/catalog/ +clamp.config.sdc.hostUrl=http://localhost:${docker.http-cache.port.host} +clamp.config.sdc.serviceUrl=http://localhost:${docker.http-cache.port.host}/sdc/v1/catalog/services +clamp.config.sdc.serviceUsername=clamp +clamp.config.sdc.servicePassword=b7acccda32b98c5bb7acccda32b98c5b05D511BD6D93626E90D18E9D24D9B78CD34C7EE8012F0A189A28763E82271E50A5D4EC10C7D93E06E0A2D27CAE66B981 +clamp.config.sdc.artifactLabel=blueprintclampcockpit +clamp.config.sdc.sdcX-InstanceID=CLAMP +clamp.config.sdc.artifactType=DCAE_INVENTORY_BLUEPRINT +clamp.config.sdc.locationArtifactLabel=locationclampcockpit +clamp.config.sdc.locationArtifactType=DCAE_INVENTORY_JSON +clamp.config.sdc.InstanceID=X-ECOMP-InstanceID +clamp.config.sdc.header.requestId = X-ECOMP-RequestID +# +# +clamp.config.ui.location.default=classpath:/clds/templates/ui-location-default.json +clamp.config.ui.alarm.default=classpath:/clds/templates/ui-alarm-default.json +# +# if action.test.override is true, then any action will be marked as test=true (even if incoming action request had test=false); otherwise, test flag will be unchanged on the action request +clamp.config.action.test.override=false +# if action.insert.test.event is true, then insert event even if the action is set to test +clamp.config.action.insert.test.event=false +clamp.config.clds.service.cache.invalidate.after.seconds=120 + +#DCAE Inventory Url Properties +clamp.config.dcae.inventory.url=http://dcae.api.simpledemo.onap.org:8080 + +#DCAE Dispatcher Url Properties +clamp.config.dcae.dispatcher.url=http://dcae.api.simpledemo.onap.org:8080 +clamp.config.dcae.header.requestId = X-ECOMP-RequestID + +#Define user permission related parameters, the permission type can be changed but MUST be redefined in clds-users.properties in that case ! +clamp.config.security.permission.type.cl=permission-type-cl +clamp.config.security.permission.type.cl.manage=permission-type-cl-manage +clamp.config.security.permission.type.cl.event=permission-type-cl-event +clamp.config.security.permission.type.filter.vf=permission-type-filter-vf +clamp.config.security.permission.type.template=permission-type-template +#This one indicates the type of instances (dev|prod|perf...), this must be set accordingly in clds-users.properties +clamp.config.security.permission.instance=dev \ No newline at end of file diff --git a/src/test/resources/clds/clds-reference.properties b/src/test/resources/clds/clds-reference.properties deleted file mode 100644 index 56552781f..000000000 --- a/src/test/resources/clds/clds-reference.properties +++ /dev/null @@ -1,109 +0,0 @@ -### -# ============LICENSE_START======================================================= -# ONAP CLAMP -# ================================================================================ -# Copyright (C) 2017-2018 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============================================ -# =================================================================== -# ECOMP is a trademark and service mark of AT&T Intellectual Property. -### - -# -# Poperties for CLDS -# -# -# DCAE request build properties -# -dcae.template=classpath:/clds/templates/dcae-template.json -dcae.decode.service_ids=classpath:/clds/templates/dcae-decode-service_ids.json -dcae.deployment.template=classpath:/clds/templates/dcae-deployment-template.json -# -# SDC request blueprint properties -# -sdc.template=classpath:/clds/templates/sdc-template.json -sdc.decode.service_ids=classpath:/clds/templates/sdc-decode-service_ids.json -# -# -# General Policy request properties -# -policy.onap.name=DCAE -policy.pdp.group=default -policy.ms.type=MicroService -policy.ms.policyNamePrefix=Config_MS_ -policy.op.type=BRMS_Param -policy.op.policyNamePrefix=Config_BRMS_Param_ - -# TCA MicroService Policy request build properties -# -tca.policyid.prefix=DCAE.Config_ -tca.policy.template=classpath:/clds/templates/tca-policy-template.json -tca.template=classpath:/clds/templates/tca-template.json -tca.thresholds.template=classpath:/clds/templates/tca-thresholds-template.json - -# -# -# Operational Policy request build properties -# -op.policyDescription=from clds -# default -op.templateName=ClosedLoopvUSP -op.operationTopic=APPC-CL -op.notificationTopic=POLICY-CL-MGT -op.controller=amsterdam -op.policy.appc=APPC -# by service: vSCP -op.templateName.vSCP=ClosedLoopTemplate -op.controller.vSCP=1607-f5fw -op.eNodeB.templateName=ClosedLoopControlName -op.eNodeB.operationTopic=com.onap.sdnr.RanCLRequest-v00 -op.eNodeB.notificationTopic=com.onap-policy.IST-ENODEB-CL -op.eNodeB.controller=amsterdam -op.eNodeB.recipe=classpath:/clds/templates/op-eNodeB-recipe.json -op.eNodeB.timeWindow=35 -op.eNodeB.limit=2 -op.eNodeB.period=10s -# -# Sdc service properties -sdc.catalog.url=http://localhost:${docker.http-cache.port.host}/sdc/v1/catalog/ -sdc.hostUrl=http://localhost:${docker.http-cache.port.host} -sdc.serviceUrl=http://localhost:${docker.http-cache.port.host}/sdc/v1/catalog/services -sdc.serviceUsername=clamp -sdc.servicePassword=b7acccda32b98c5bb7acccda32b98c5b05D511BD6D93626E90D18E9D24D9B78CD34C7EE8012F0A189A28763E82271E50A5D4EC10C7D93E06E0A2D27CAE66B981 -sdc.artifactLabel=blueprintclampcockpit -sdc.sdcX-InstanceID=CLAMP -sdc.artifactType=DCAE_INVENTORY_BLUEPRINT -sdc.locationArtifactLabel=locationclampcockpit -sdc.locationArtifactType=DCAE_INVENTORY_JSON -sdc.InstanceID=X-ECOMP-InstanceID -sdc.header.requestId=X-ECOMP-RequestID -# -# -ui.location.default=classpath:/clds/templates/ui-location-default.json -ui.alarm.default=classpath:/clds/templates/ui-alarm-default.json -# -# if action.test.override is true, then any action will be marked as test=true (even if incoming action request had test=false); otherwise, test flag will be unchanged on the action request -action.test.override=false -# if action.insert.test.event is true, then insert event even if the action is set to test -action.insert.test.event=false -clds.service.cache.invalidate.after.seconds=120 - -#DCAE Inventory Url Properties -dcae.inventory.url=http://dcae.api.simpledemo.onap.org:8080 - -#DCAE Dispatcher Url Properties -dcae.dispatcher.url=http://dcae.api.simpledemo.onap.org:8080 -dcae.header.requestId = X-ECOMP-RequestID - diff --git a/src/test/resources/https/https-test.properties b/src/test/resources/https/https-test.properties index 01b6ff1df..4db8addf1 100644 --- a/src/test/resources/https/https-test.properties +++ b/src/test/resources/https/https-test.properties @@ -21,11 +21,6 @@ # ECOMP is a trademark and service mark of AT&T Intellectual Property. ### -info.build.artifact=@project.artifactId@ -info.build.name=@project.name@ -info.build.description=@project.description@ -info.build.version=@project.version@ - ### Set the port for HTTP or HTTPS protocol (Controlled by Spring framework, only one at a time). ### (See below for the parameter 'server.http.port' if you want to have both enabled) ### To have only HTTP, keep the lines server.ssl.* commented @@ -64,28 +59,6 @@ server.contextPath=/ #Modified engine-rest applicationpath spring.profiles.active=clamp-default,clamp-spring-authentication -#The max number of active threads in this pool -server.tomcat.max-threads=200 -#The minimum number of threads always kept alive -server.tomcat.min-Spare-Threads=25 -#The number of milliseconds before an idle thread shutsdown, unless the number of active threads are less or equal to minSpareThreads -server.tomcat.max-idle-time=60000 - -#Servlet context parameters -server.context_parameters.p-name=value #context parameter with p-name as key and value as value. - -camel.springboot.consumer-template-cache-size=1000 -camel.springboot.producer-template-cache-size=1000 -camel.springboot.jmx-enabled=false -camel.defaultthreadpool.poolsize=10 -camel.defaultthreadpool.maxpoolsize=20 -camel.defaultthreadpool.maxqueuesize=1000 -camel.defaultthreadpool.keepaliveTime=60 -camel.defaultthreadpool.rejectpolicy=CallerRuns -#camel.springboot.xmlRoutes = false -camel.springboot.xmlRoutes=classpath:/clds/camel/*.xml -#camel.springboot.typeConversion = false - #clds datasource connection details spring.datasource.cldsdb.driverClassName=org.mariadb.jdbc.Driver spring.datasource.cldsdb.url=jdbc:mariadb:sequential://localhost:${docker.mariadb.port.host}/cldsdb4?autoReconnect=true&retriesAllDown=2147483647&failoverLoopRetries=2147483647 @@ -100,22 +73,3 @@ spring.datasource.cldsdb.initialSize=0 # Automatically test whether a connection provided is good or not spring.datasource.cldsdb.testOnBorrow=true spring.datasource.cldsdb.ignoreExceptionOnPreLoad=true - -#Async Executor default Parameters -async.core.pool.size=10 -async.max.pool.size=20 -async.queue.capacity=500 - -org.onap.clamp.config.files.cldsReference=classpath:/clds/clds-reference.properties -org.onap.clamp.config.files.cldsPolicyConfig=classpath:/clds/clds-policy-config.properties -org.onap.clamp.config.files.cldsUsers=classpath:/clds/clds-users.json -org.onap.clamp.config.files.globalClds=classpath:/clds/globalClds.properties - -#Define user permission related parameters, the permission type can be changed but MUST be redefined in clds-users.properties in that case ! -CLDS_PERMISSION_TYPE_CL=permission-type-cl -CLDS_PERMISSION_TYPE_CL_MANAGE=permission-type-cl-manage -CLDS_PERMISSION_TYPE_CL_EVENT=permission-type-cl-event -CLDS_PERMISSION_TYPE_FILTER_VF=permission-type-filter-vf -CLDS_PERMISSION_TYPE_TEMPLATE=permission-type-template -#This one indicates the type of instances (dev|prod|perf...), this must be set accordingly in clds-users.properties -CLDS_PERMISSION_INSTANCE=dev \ No newline at end of file -- cgit 1.2.3-korg From 32eaf1e97f17a9d7a7b304fdc2b2be00c5830434 Mon Sep 17 00:00:00 2001 From: "Determe, Sebastien (sd378r)" Date: Mon, 5 Mar 2018 17:46:49 +0100 Subject: Remove globalClds.properties Remove the globalClds.properties and merge that to application.properties Issue-ID: CLAMP-136 Change-Id: I9c5bc8745b576ca8fad0cca3bff4c136329515d8 Signed-off-by: Determe, Sebastien (sd378r) --- .../clds/client/req/sdc/SdcCatalogServices.java | 22 +---- .../org/onap/clamp/clds/service/CldsService.java | 34 +------ src/main/resources/application.properties | 2 +- src/main/resources/clds/globalClds.properties | 24 ----- .../resources/clds/templates/globalProperties.json | 105 +++++++++++++++++++++ src/test/resources/application.properties | 2 +- .../resources/clds/templates/globalProperties.json | 105 +++++++++++++++++++++ 7 files changed, 222 insertions(+), 72 deletions(-) delete mode 100644 src/main/resources/clds/globalClds.properties create mode 100644 src/main/resources/clds/templates/globalProperties.json create mode 100644 src/test/resources/clds/templates/globalProperties.json (limited to 'src/test/resources/clds') diff --git a/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcCatalogServices.java b/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcCatalogServices.java index 5664653bf..fd7d096fa 100644 --- a/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcCatalogServices.java +++ b/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcCatalogServices.java @@ -72,6 +72,7 @@ import org.onap.clamp.clds.model.sdc.SdcResource; import org.onap.clamp.clds.model.sdc.SdcResourceBasicInfo; import org.onap.clamp.clds.model.sdc.SdcServiceDetail; import org.onap.clamp.clds.model.sdc.SdcServiceInfo; +import org.onap.clamp.clds.service.CldsService; import org.onap.clamp.clds.util.CryptoUtils; import org.onap.clamp.clds.util.LoggingUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -840,11 +841,13 @@ public class SdcCatalogServices { * @param globalProps * @param cldsServiceData * @return + * @throws IOException + * In case of issues during the parsing of the Global Properties */ - public String createPropertiesObjectByUUID(String globalProps, CldsServiceData cldsServiceData) { + public String createPropertiesObjectByUUID(CldsServiceData cldsServiceData) throws IOException { String totalPropsStr; ObjectMapper mapper = new ObjectMapper(); - ObjectNode globalPropsJson; + ObjectNode globalPropsJson = (ObjectNode) refProp.getJsonTemplate(CldsService.GLOBAL_PROPERTIES_KEY); if (cldsServiceData != null && cldsServiceData.getServiceUUID() != null) { // Objectnode to save all byservice, byvf , byvfc and byalarm nodes ObjectNode byIdObjectNode = mapper.createObjectNode(); @@ -886,28 +889,13 @@ public class SdcCatalogServices { "alertDescription"); ObjectNode alertDescObjectNodeByAlert = createAlarmCondObjectNodeByAlarmKey(mapper, allAlertDescriptions); byIdObjectNode.putPOJO("byAlertDescription", alertDescObjectNodeByAlert); - globalPropsJson = decodeGlobalProp(globalProps, mapper); globalPropsJson.putPOJO("shared", byIdObjectNode); logger.info("Global properties JSON created with SDC info:" + globalPropsJson); - } else { - /** - * to create json with total properties when no serviceUUID passed - */ - globalPropsJson = decodeGlobalProp(globalProps, mapper); } totalPropsStr = globalPropsJson.toString(); return totalPropsStr; } - private ObjectNode decodeGlobalProp(String globalProps, ObjectMapper mapper) { - try { - return (ObjectNode) mapper.readValue(globalProps, JsonNode.class); - } catch (IOException e) { - logger.error("Exception occurred during decoding of the global props, returning an empty objectNode", e); - return mapper.createObjectNode(); - } - } - /** * Method to get alarm conditions/alert description from Service Data. * diff --git a/src/main/java/org/onap/clamp/clds/service/CldsService.java b/src/main/java/org/onap/clamp/clds/service/CldsService.java index 3b6bc3778..2968f60a4 100644 --- a/src/main/java/org/onap/clamp/clds/service/CldsService.java +++ b/src/main/java/org/onap/clamp/clds/service/CldsService.java @@ -87,7 +87,6 @@ import org.onap.clamp.clds.transform.XslTransformer; import org.onap.clamp.clds.util.LoggingUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.ApplicationContext; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Component; import org.springframework.web.client.HttpClientErrorException; @@ -102,9 +101,8 @@ public class CldsService extends SecureServiceBase { @Produce(uri = "direct:processSubmit") private CamelProxy camelProxy; protected static final EELFLogger securityLogger = EELFManager.getInstance().getSecurityLogger(); - @Autowired - private ApplicationContext appContext; private static final String RESOURCE_NAME = "clds-version.properties"; + public static final String GLOBAL_PROPERTIES_KEY = "files.globalProperties"; @Value("${clamp.config.security.permission.type.cl:permission-type-cl}") private String cldsPersmissionTypeCl; @Value("${clamp.config.security.permission.type.cl.manage:permission-type-cl-manage}") @@ -132,9 +130,6 @@ public class CldsService extends SecureServiceBase { "update"); } - @Value("${org.onap.clamp.config.files.globalClds:'classpath:/clds/globalClds.properties'}") - private String globalClds; - private Properties globalCldsProperties; @Autowired private CldsDao cldsDao; @Autowired @@ -585,7 +580,7 @@ public class CldsService extends SecureServiceBase { @Path("/properties") @Produces(MediaType.APPLICATION_JSON) public String getSdcProperties() throws IOException { - return createPropertiesObjectByUUID(getGlobalCldsString(), "{}"); + return createPropertiesObjectByUUID("{}"); } /** @@ -620,7 +615,7 @@ public class CldsService extends SecureServiceBase { // filter out VFs the user is not authorized for cldsServiceData.filterVfs(this); // format retrieved data into properties json - String sdcProperties = sdcCatalogServices.createPropertiesObjectByUUID(getGlobalCldsString(), cldsServiceData); + String sdcProperties = sdcCatalogServices.createPropertiesObjectByUUID(cldsServiceData); // audit log LoggingUtils.setTimeContext(startTime, new Date()); LoggingUtils.setResponseContext("0", "Get sdc properties by uuid success", this.getClass().getName()); @@ -689,10 +684,10 @@ public class CldsService extends SecureServiceBase { return serviceNode.toString(); } - private String createPropertiesObjectByUUID(String globalProps, String cldsResponseStr) throws IOException { + private String createPropertiesObjectByUUID(String cldsResponseStr) throws IOException { ObjectMapper mapper = new ObjectMapper(); SdcServiceDetail cldsSdcServiceDetail = mapper.readValue(cldsResponseStr, SdcServiceDetail.class); - ObjectNode globalPropsJson = null; + ObjectNode globalPropsJson = (ObjectNode) refProp.getJsonTemplate(GLOBAL_PROPERTIES_KEY); if (cldsSdcServiceDetail != null && cldsSdcServiceDetail.getUuid() != null) { /** * to create json with vf, alarm and locations @@ -711,14 +706,8 @@ public class CldsService extends SecureServiceBase { */ ObjectNode emptyvfcobjectNode = createByVFCObjectNode(mapper, cldsSdcServiceDetail.getResources()); byServiceBasicObjetNode.putPOJO("byVf", emptyvfcobjectNode); - globalPropsJson = (ObjectNode) mapper.readValue(globalProps, JsonNode.class); globalPropsJson.putPOJO("shared", byServiceBasicObjetNode); logger.info("valuie of objNode: {}", globalPropsJson); - } else { - /** - * to create json with total properties when no serviceUUID passed - */ - globalPropsJson = (ObjectNode) mapper.readValue(globalProps, JsonNode.class); } return globalPropsJson.toString(); } @@ -903,19 +892,6 @@ public class CldsService extends SecureServiceBase { return model; } - private String getGlobalCldsString() { - try { - if (null == globalCldsProperties) { - globalCldsProperties = new Properties(); - globalCldsProperties.load(appContext.getResource(globalClds).getInputStream()); - } - return (String) globalCldsProperties.get("globalCldsProps"); - } catch (IOException e) { - logger.error("Unable to load the globalClds due to an exception", e); - throw new CldsConfigException("Unable to load the globalClds due to an exception", e); - } - } - private void checkForDuplicateServiceVf(String modelName, String modelPropText) throws IOException { JsonNode modelJson = new ObjectMapper().readTree(modelPropText); JsonNode globalNode = modelJson.get("global"); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 8c8b1968f..2c3537d58 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -108,7 +108,7 @@ async.queue.capacity=500 org.onap.clamp.config.files.cldsPolicyConfig=classpath:/clds/clds-policy-config.properties org.onap.clamp.config.files.cldsUsers=classpath:/clds/clds-users.json -org.onap.clamp.config.files.globalClds=classpath:/clds/globalClds.properties +clamp.config.files.globalProperties=classpath:/clds/templates/globalProperties.json org.onap.clamp.config.files.sdcController=classpath:/clds/sdc-controllers-config.json # Properties for Clamp diff --git a/src/main/resources/clds/globalClds.properties b/src/main/resources/clds/globalClds.properties deleted file mode 100644 index e83fa6ca7..000000000 --- a/src/main/resources/clds/globalClds.properties +++ /dev/null @@ -1,24 +0,0 @@ -### -# ============LICENSE_START======================================================= -# ONAP CLAMP -# ================================================================================ -# Copyright (C) 2017 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============================================ -# =================================================================== -# ECOMP is a trademark and service mark of AT&T Intellectual Property. -### - -globalCldsProps ={"tca":{"tname":"New_Set","tcaInt":"1","tcaVio":"1","eventName":{"vCPEvGMUXPacketLoss":"vCPEvGMUXPacketLoss","vLoadBalancer":"vLoadBalancer","vFirewallBroadcastPackets":"vFirewallBroadcastPackets"},"fieldPathM":{"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated":"receivedBroadcastPacketsAccumulated","$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta":"receivedDiscardedPacketsDelta"},"operator":{">":"GREATER",">=":"GREATER_OR_EQUAL","=":"EQUAL","<=":"LESS_OR_EQUAL","<":"LESS"},"opsPolicy":{"POLICY_test_X":"POLICY_test_X","POLICY_test_Y":"POLICY_test_Y"},"controlLoopSchemaType":{"":"","VM":"VM","VNF":"VNF"},"closedLoopEventStatus":{"":"","ONSET":"ONSET","ABATED":"ABATED"}},"global":{"actionSet":{"vnfRecipe":"VNF", "enbRecipe":"eNodeB"},"location":{"DC1":"Data Center 1","DC2":"Data Center 2","DC3":"Data Center 3"}},"policy":{"pname":"0","timeout":345,"vnfRecipe":{"":"","restart":"Restart","rebuild":"Rebuild","migrate":"Migrate","healthCheck":"Health Check"},"enbRecipe":{"":"","reset":"Reset"},"maxRetries":"3","retryTimeLimit":180,"resource":{"vCTS":"vCTS","v3CDB":"v3CDB","vUDR":"vUDR","vCOM":"vCOM","vRAR":"vRAR","vLCS":"vLCS","vUDR-BE":"vUDR-BE","vDBE":"vDBE"},"parentPolicyConditions":{"Failure_Retries":"Failure: Max Retries Exceeded","Failure_Timeout":"Failure: Time Limit Exceeded","Failure_Guard":"Failure: Guard","Failure_Exception":"Failure: Exception","Failure":"Failure: Other","Success":"Success"}},"shared":{"byService":{"":{"vf":{"":""},"location":{"":""},"alarmCondition":{"":""}}},"byVf":{"":{"vfc":{"":""}}}}} diff --git a/src/main/resources/clds/templates/globalProperties.json b/src/main/resources/clds/templates/globalProperties.json new file mode 100644 index 000000000..9ac9d9443 --- /dev/null +++ b/src/main/resources/clds/templates/globalProperties.json @@ -0,0 +1,105 @@ +{ + "tca": { + "tname": "New_Set", + "tcaInt": "1", + "tcaVio": "1", + "eventName": { + "vCPEvGMUXPacketLoss": "vCPEvGMUXPacketLoss", + "vLoadBalancer": "vLoadBalancer", + "vFirewallBroadcastPackets": "vFirewallBroadcastPackets" + }, + "fieldPathM": { + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated": "receivedBroadcastPacketsAccumulated", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta": "receivedDiscardedPacketsDelta" + }, + "operator": { + ">": "GREATER", + ">=": "GREATER_OR_EQUAL", + "=": "EQUAL", + "<=": "LESS_OR_EQUAL", + "<": "LESS" + }, + "opsPolicy": { + "POLICY_test_X": "POLICY_test_X", + "POLICY_test_Y": "POLICY_test_Y" + }, + "controlLoopSchemaType": { + "": "", + "VM": "VM", + "VNF": "VNF" + }, + "closedLoopEventStatus": { + "": "", + "ONSET": "ONSET", + "ABATED": "ABATED" + } + }, + "global": { + "actionSet": { + "vnfRecipe": "VNF", + "enbRecipe": "eNodeB" + }, + "location": { + "DC1": "Data Center 1", + "DC2": "Data Center 2", + "DC3": "Data Center 3" + } + }, + "policy": { + "pname": "0", + "timeout": 345, + "vnfRecipe": { + "": "", + "restart": "Restart", + "rebuild": "Rebuild", + "migrate": "Migrate", + "healthCheck": "Health Check" + }, + "enbRecipe": { + "": "", + "reset": "Reset" + }, + "maxRetries": "3", + "retryTimeLimit": 180, + "resource": { + "vCTS": "vCTS", + "v3CDB": "v3CDB", + "vUDR": "vUDR", + "vCOM": "vCOM", + "vRAR": "vRAR", + "vLCS": "vLCS", + "vUDR-BE": "vUDR-BE", + "vDBE": "vDBE" + }, + "parentPolicyConditions": { + "Failure_Retries": "Failure: Max Retries Exceeded", + "Failure_Timeout": "Failure: Time Limit Exceeded", + "Failure_Guard": "Failure: Guard", + "Failure_Exception": "Failure: Exception", + "Failure": "Failure: Other", + "Success": "Success" + } + }, + "shared": { + "byService": { + "": { + "vf": { + "": "" + }, + "location": { + "": "" + }, + "alarmCondition": { + "": "" + } + } + }, + "byVf": { + "": { + "vfc": { + "": "" + } + } + } + } +} diff --git a/src/test/resources/application.properties b/src/test/resources/application.properties index a676e1057..e81e09362 100644 --- a/src/test/resources/application.properties +++ b/src/test/resources/application.properties @@ -108,7 +108,7 @@ async.queue.capacity=500 org.onap.clamp.config.files.cldsPolicyConfig=classpath:/clds/clds-policy-config.properties org.onap.clamp.config.files.cldsUsers=classpath:/clds/clds-users.json -org.onap.clamp.config.files.globalClds=classpath:/clds/globalClds.properties +clamp.config.files.globalProperties=classpath:/clds/templates/globalProperties.json org.onap.clamp.config.files.sdcController=classpath:/clds/sdc-controllers-config.json # Properties for Clamp diff --git a/src/test/resources/clds/templates/globalProperties.json b/src/test/resources/clds/templates/globalProperties.json new file mode 100644 index 000000000..9ac9d9443 --- /dev/null +++ b/src/test/resources/clds/templates/globalProperties.json @@ -0,0 +1,105 @@ +{ + "tca": { + "tname": "New_Set", + "tcaInt": "1", + "tcaVio": "1", + "eventName": { + "vCPEvGMUXPacketLoss": "vCPEvGMUXPacketLoss", + "vLoadBalancer": "vLoadBalancer", + "vFirewallBroadcastPackets": "vFirewallBroadcastPackets" + }, + "fieldPathM": { + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated": "receivedBroadcastPacketsAccumulated", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta": "receivedDiscardedPacketsDelta" + }, + "operator": { + ">": "GREATER", + ">=": "GREATER_OR_EQUAL", + "=": "EQUAL", + "<=": "LESS_OR_EQUAL", + "<": "LESS" + }, + "opsPolicy": { + "POLICY_test_X": "POLICY_test_X", + "POLICY_test_Y": "POLICY_test_Y" + }, + "controlLoopSchemaType": { + "": "", + "VM": "VM", + "VNF": "VNF" + }, + "closedLoopEventStatus": { + "": "", + "ONSET": "ONSET", + "ABATED": "ABATED" + } + }, + "global": { + "actionSet": { + "vnfRecipe": "VNF", + "enbRecipe": "eNodeB" + }, + "location": { + "DC1": "Data Center 1", + "DC2": "Data Center 2", + "DC3": "Data Center 3" + } + }, + "policy": { + "pname": "0", + "timeout": 345, + "vnfRecipe": { + "": "", + "restart": "Restart", + "rebuild": "Rebuild", + "migrate": "Migrate", + "healthCheck": "Health Check" + }, + "enbRecipe": { + "": "", + "reset": "Reset" + }, + "maxRetries": "3", + "retryTimeLimit": 180, + "resource": { + "vCTS": "vCTS", + "v3CDB": "v3CDB", + "vUDR": "vUDR", + "vCOM": "vCOM", + "vRAR": "vRAR", + "vLCS": "vLCS", + "vUDR-BE": "vUDR-BE", + "vDBE": "vDBE" + }, + "parentPolicyConditions": { + "Failure_Retries": "Failure: Max Retries Exceeded", + "Failure_Timeout": "Failure: Time Limit Exceeded", + "Failure_Guard": "Failure: Guard", + "Failure_Exception": "Failure: Exception", + "Failure": "Failure: Other", + "Success": "Success" + } + }, + "shared": { + "byService": { + "": { + "vf": { + "": "" + }, + "location": { + "": "" + }, + "alarmCondition": { + "": "" + } + } + }, + "byVf": { + "": { + "vfc": { + "": "" + } + } + } + } +} -- cgit 1.2.3-korg From ccb7152d2619a72367ba41dadd18812122425bda Mon Sep 17 00:00:00 2001 From: "Determe, Sebastien (sd378r)" Date: Fri, 16 Mar 2018 19:49:13 +0100 Subject: CsarInstaller introduction This class is introduced to decode/deploy the dcae blueprint from SDC and save it to database. This is done based on json templates. Some unit tests added Issue-ID: CLAMP-81 Change-Id: I3fac5f7ef41d77aa244414407111b9cb602b50bd Signed-off-by: Determe, Sebastien (sd378r) --- .../sdc/controller/installer/CsarInstaller.java | 33 +++ .../controller/installer/CsarInstallerImpl.java | 147 ++++++++++ src/main/resources/application.properties | 1 + .../resources/clds/blueprint-parser-mapping.json | 16 ++ .../resources/clds/templates/bpmn/holmes-img.xml | 315 +++++++++++++++++++++ .../clds/templates/bpmn/holmes-template.xml | 93 ++++++ src/main/resources/clds/templates/bpmn/tca-img.xml | 309 ++++++++++++++++++++ .../resources/clds/templates/bpmn/tca-template.xml | 95 +++++++ .../controller/installer/CsarInstallerItCase.java | 102 +++++++ src/test/resources/application.properties | 1 + .../resources/clds/blueprint-parser-mapping.json | 16 ++ .../resources/clds/templates/bpmn/holmes-img.xml | 315 +++++++++++++++++++++ .../clds/templates/bpmn/holmes-template.xml | 93 ++++++ src/test/resources/clds/templates/bpmn/tca-img.xml | 309 ++++++++++++++++++++ .../resources/clds/templates/bpmn/tca-template.xml | 95 +++++++ .../example/sdc/blueprint-dcae/holmes.yaml | 167 +++++++++++ .../example/sdc/blueprint-dcae/not-recognized.yaml | 130 +++++++++ .../resources/example/sdc/blueprint-dcae/tca.yaml | 82 ++++++ 18 files changed, 2319 insertions(+) create mode 100644 src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstaller.java create mode 100644 src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstallerImpl.java create mode 100644 src/main/resources/clds/blueprint-parser-mapping.json create mode 100644 src/main/resources/clds/templates/bpmn/holmes-img.xml create mode 100644 src/main/resources/clds/templates/bpmn/holmes-template.xml create mode 100644 src/main/resources/clds/templates/bpmn/tca-img.xml create mode 100644 src/main/resources/clds/templates/bpmn/tca-template.xml create mode 100644 src/test/java/org/onap/clamp/clds/it/sdc/controller/installer/CsarInstallerItCase.java create mode 100644 src/test/resources/clds/blueprint-parser-mapping.json create mode 100644 src/test/resources/clds/templates/bpmn/holmes-img.xml create mode 100644 src/test/resources/clds/templates/bpmn/holmes-template.xml create mode 100644 src/test/resources/clds/templates/bpmn/tca-img.xml create mode 100644 src/test/resources/clds/templates/bpmn/tca-template.xml create mode 100644 src/test/resources/example/sdc/blueprint-dcae/holmes.yaml create mode 100644 src/test/resources/example/sdc/blueprint-dcae/not-recognized.yaml create mode 100644 src/test/resources/example/sdc/blueprint-dcae/tca.yaml (limited to 'src/test/resources/clds') diff --git a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstaller.java b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstaller.java new file mode 100644 index 000000000..739fc06d0 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstaller.java @@ -0,0 +1,33 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2018 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.sdc.controller.installer; + +import org.onap.clamp.clds.exception.sdc.controller.SdcArtifactInstallerException; + +public interface CsarInstaller { + + boolean isCsarAlreadyDeployed(CsarHandler csar) throws SdcArtifactInstallerException; + + public void installTheCsar(CsarHandler csar) throws SdcArtifactInstallerException; +} diff --git a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstallerImpl.java b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstallerImpl.java new file mode 100644 index 000000000..c56eed517 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstallerImpl.java @@ -0,0 +1,147 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2018 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.sdc.controller.installer; + +import com.att.aft.dme2.internal.apache.commons.io.IOUtils; +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.annotation.PostConstruct; + +import org.onap.clamp.clds.config.ClampProperties; +import org.onap.clamp.clds.config.sdc.BlueprintParserFilesConfiguration; +import org.onap.clamp.clds.config.sdc.BlueprintParserMappingConfiguration; +import org.onap.clamp.clds.dao.CldsDao; +import org.onap.clamp.clds.exception.sdc.controller.SdcArtifactInstallerException; +import org.onap.clamp.clds.model.CldsModel; +import org.onap.clamp.clds.model.CldsTemplate; +import org.onap.clamp.clds.service.CldsService; +import org.onap.clamp.clds.service.CldsTemplateService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.ApplicationContext; +import org.springframework.stereotype.Component; +import org.yaml.snakeyaml.Yaml; + +@Component +public class CsarInstallerImpl implements CsarInstaller { + + private static final EELFLogger logger = EELFManager.getInstance().getLogger(CsarInstallerImpl.class); + private Map bpmnMapping = new HashMap<>(); + public static final String TEMPLATE_NAME_SUFFIX = "-template-dcae-designer"; + public static final String MODEL_NAME_SUFFIX = "-model-dcae-designer"; + /** + * The file name that will be loaded by Spring. + */ + @Value("${clamp.config.sdc.blueprint.parser.mapping:'classpath:/clds/blueprint-parser-mapping.json'}") + protected String blueprintMappingFile; + @Autowired + protected ApplicationContext appContext; + @Autowired + private CldsDao cldsDao; + @Autowired + private ClampProperties refProp; + @Autowired + CldsTemplateService cldsTemplateService; + @Autowired + CldsService cldsService; + + @PostConstruct + public void loadConfiguration() throws IOException { + BlueprintParserMappingConfiguration + .createFromJson(appContext.getResource(blueprintMappingFile).getInputStream()).stream() + .forEach(e -> bpmnMapping.put(e.getBlueprintKey(), e.getFiles())); + } + + @Override + public boolean isCsarAlreadyDeployed(CsarHandler csar) throws SdcArtifactInstallerException { + return false; + } + + @Override + public void installTheCsar(CsarHandler csar) throws SdcArtifactInstallerException { + try { + BlueprintParserFilesConfiguration configFiles = this.searchForRightMapping(csar); + createFakeCldsModel(csar, configFiles, createFakeCldsTemplate(csar, configFiles)); + } catch (IOException e) { + throw new SdcArtifactInstallerException("Exception caught during the Csar installation in database", e); + } + } + + private BlueprintParserFilesConfiguration searchForRightMapping(CsarHandler csar) + throws SdcArtifactInstallerException { + List listConfig = new ArrayList<>(); + Yaml yaml = new Yaml(); + Map templateNodes = ((Map) ((Map) yaml + .load(csar.getDcaeBlueprint())).get("node_templates")); + bpmnMapping.entrySet().forEach(e -> { + if (templateNodes.keySet().stream().anyMatch(t -> t.contains(e.getKey()))) { + listConfig.add(e.getValue()); + } + }); + if (listConfig.size() > 1) { + throw new SdcArtifactInstallerException( + "The code does not currently support multiple MicroServices in the blueprint"); + } else if (listConfig.isEmpty()) { + throw new SdcArtifactInstallerException("There is no recognized MicroService found in the blueprint"); + } + return listConfig.get(0); + } + + private String createTemplateName(CsarHandler csar) { + return csar.getSdcCsarHelper().getServiceMetadata().getValue("name") + TEMPLATE_NAME_SUFFIX; + } + + private String createModelName(CsarHandler csar) { + return csar.getSdcCsarHelper().getServiceMetadata().getValue("name") + MODEL_NAME_SUFFIX; + } + + private CldsTemplate createFakeCldsTemplate(CsarHandler csar, BlueprintParserFilesConfiguration configFiles) + throws IOException, SdcArtifactInstallerException { + CldsTemplate template = new CldsTemplate(); + template.setBpmnId("Sdc-Generated"); + template.setBpmnText( + IOUtils.toString(appContext.getResource(configFiles.getBpmnXmlFilePath()).getInputStream())); + // ((ObjectNode)refProp.getJsonTemplate(CldsService.GLOBAL_PROPERTIES_KEY)); + template.setPropText(csar.getDcaeBlueprint()); + template.setImageText( + IOUtils.toString(appContext.getResource(configFiles.getSvgXmlFilePath()).getInputStream())); + return cldsTemplateService.putTemplate(createTemplateName(csar), template); + } + + private CldsModel createFakeCldsModel(CsarHandler csar, BlueprintParserFilesConfiguration configFiles, + CldsTemplate cldsTemplate) { + CldsModel cldsModel = new CldsModel(); + cldsModel.setBlueprintText(csar.getDcaeBlueprint()); + cldsModel.setTemplateName(cldsTemplate.getName()); + // cldsModel.set + return cldsService.putModel(createModelName(csar), cldsModel); + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index f626e1af1..17f85817f 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -178,6 +178,7 @@ clamp.config.sdc.InstanceID=X-ECOMP-InstanceID clamp.config.sdc.header.requestId = X-ECOMP-RequestID # clamp.config.sdc.csarFolder = /tmp/sdc-controllers +clamp.config.sdc.blueprint.parser.mapping = classpath:/clds/blueprint-parser-mapping.json # clamp.config.ui.location.default=classpath:/clds/templates/ui-location-default.json clamp.config.ui.alarm.default=classpath:/clds/templates/ui-alarm-default.json diff --git a/src/main/resources/clds/blueprint-parser-mapping.json b/src/main/resources/clds/blueprint-parser-mapping.json new file mode 100644 index 000000000..a16ef0cbc --- /dev/null +++ b/src/main/resources/clds/blueprint-parser-mapping.json @@ -0,0 +1,16 @@ +[ + { + "blueprintKey": "tca_", + "files": { + "bpmnXmlFilePath": "classpath:/clds/templates/bpmn/tca-template.xml", + "svgXmlFilePath": "classpath:/clds/templates/bpmn/tca-img.xml" + } + }, + { + "blueprintKey": "holmes_", + "files": { + "bpmnXmlFilePath": "classpath:/clds/templates/bpmn/holmes-template.xml", + "svgXmlFilePath": "classpath:/clds/templates/bpmn/holmes-img.xml" + } + } +] diff --git a/src/main/resources/clds/templates/bpmn/holmes-img.xml b/src/main/resources/clds/templates/bpmn/holmes-img.xml new file mode 100644 index 000000000..f84b6a10e --- /dev/null +++ b/src/main/resources/clds/templates/bpmn/holmes-img.xml @@ -0,0 +1,315 @@ + +\n +\n +\n + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + H + + + Holmes + + + + + + + + + + + + + + V + + + E + + + S + + + VesCollector + + + + + + + + + + + + + Policy + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/clds/templates/bpmn/holmes-template.xml b/src/main/resources/clds/templates/bpmn/holmes-template.xml new file mode 100644 index 000000000..0ea1587ce --- /dev/null +++ b/src/main/resources/clds/templates/bpmn/holmes-template.xml @@ -0,0 +1,93 @@ + + + + + SequenceFlow_1c9hzec + + + SequenceFlow_1ig3gix + SequenceFlow_0zwbn2r + + + SequenceFlow_1c9hzec + SequenceFlow_1ig3gix + + + SequenceFlow_0zwbn2r + SequenceFlow_0ox6r95 + + + SequenceFlow_0ox6r95 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/clds/templates/bpmn/tca-img.xml b/src/main/resources/clds/templates/bpmn/tca-img.xml new file mode 100644 index 000000000..a2ec5af23 --- /dev/null +++ b/src/main/resources/clds/templates/bpmn/tca-img.xml @@ -0,0 +1,309 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + V + + + E + + + S + + + VesCollector + + + + + + + + + + + + + TCA + + + + + + + + + + + + + Policy + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/clds/templates/bpmn/tca-template.xml b/src/main/resources/clds/templates/bpmn/tca-template.xml new file mode 100644 index 000000000..cc942ef9d --- /dev/null +++ b/src/main/resources/clds/templates/bpmn/tca-template.xml @@ -0,0 +1,95 @@ + + + + + + SequenceFlow_1ahk7jg + + + SequenceFlow_1ahk7jg + SequenceFlow_18ahat1 + + + SequenceFlow_18ahat1 + SequenceFlow_1mo9gxb + + + SequenceFlow_1mo9gxb + SequenceFlow_1dgtrrq + + + SequenceFlow_1dgtrrq + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/java/org/onap/clamp/clds/it/sdc/controller/installer/CsarInstallerItCase.java b/src/test/java/org/onap/clamp/clds/it/sdc/controller/installer/CsarInstallerItCase.java new file mode 100644 index 000000000..94adfafa8 --- /dev/null +++ b/src/test/java/org/onap/clamp/clds/it/sdc/controller/installer/CsarInstallerItCase.java @@ -0,0 +1,102 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2018 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.it.sdc.controller.installer; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.fail; + +import com.att.aft.dme2.internal.apache.commons.io.IOUtils; +import com.att.aft.dme2.internal.apache.commons.lang.RandomStringUtils; + +import java.io.IOException; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mockito; +import org.onap.clamp.clds.dao.CldsDao; +import org.onap.clamp.clds.exception.sdc.controller.CsarHandlerException; +import org.onap.clamp.clds.exception.sdc.controller.SdcArtifactInstallerException; +import org.onap.clamp.clds.model.CldsTemplate; +import org.onap.clamp.clds.sdc.controller.installer.CsarHandler; +import org.onap.clamp.clds.sdc.controller.installer.CsarInstaller; +import org.onap.clamp.clds.sdc.controller.installer.CsarInstallerImpl; +import org.onap.clamp.clds.util.ResourceFileUtil; +import org.openecomp.sdc.tosca.parser.api.ISdcCsarHelper; +import org.openecomp.sdc.tosca.parser.exceptions.SdcToscaParserException; +import org.openecomp.sdc.toscaparser.api.elements.Metadata; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.util.ReflectionTestUtils; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class CsarInstallerItCase { + + private static final String sdcFolder = "/tmp/csar-handler-tests"; + private static final String csarArtifactName = "testArtifact.csar"; + @Autowired + private CsarInstaller csarInstaller; + @Autowired + private CldsDao cldsDao; + + private void loadFile(String fileName) throws IOException { + ReflectionTestUtils.setField(csarInstaller, "blueprintMappingFile", fileName); + ((CsarInstallerImpl) csarInstaller).loadConfiguration(); + } + + @Test(expected = SdcArtifactInstallerException.class) + public void testInstallTheCsarFail() + throws SdcArtifactInstallerException, SdcToscaParserException, CsarHandlerException, IOException { + CsarHandler csarHandler = Mockito.mock(CsarHandler.class); + Mockito.when(csarHandler.getDcaeBlueprint()).thenReturn(IOUtils + .toString(ResourceFileUtil.getResourceAsStream("example/sdc/blueprint-dcae/not-recognized.yaml"))); + csarInstaller.installTheCsar(csarHandler); + fail("Should have raised an SdcArtifactInstallerException"); + } + + @Test() + public void testInstallTheCsarTca() + throws SdcArtifactInstallerException, SdcToscaParserException, CsarHandlerException, IOException { + String generatedName = RandomStringUtils.randomAlphanumeric(5); + CsarHandler csarHandler = Mockito.mock(CsarHandler.class); + Mockito.when(csarHandler.getDcaeBlueprint()).thenReturn( + IOUtils.toString(ResourceFileUtil.getResourceAsStream("example/sdc/blueprint-dcae/tca.yaml"))); + ISdcCsarHelper csarHelper = Mockito.mock(ISdcCsarHelper.class); + Metadata data = Mockito.mock(Metadata.class); + Mockito.when(data.getValue("name")).thenReturn(generatedName); + Mockito.when(csarHelper.getServiceMetadata()).thenReturn(data); + Mockito.when(csarHandler.getSdcCsarHelper()).thenReturn(csarHelper); + csarInstaller.installTheCsar(csarHandler); + // Get it back from DB + CldsTemplate templateFromDB = CldsTemplate.retrieve(cldsDao, + generatedName + CsarInstallerImpl.TEMPLATE_NAME_SUFFIX, false); + assertNotNull(templateFromDB); + assertNotNull(templateFromDB.getBpmnText()); + assertNotNull(templateFromDB.getImageText()); + assertNotNull(templateFromDB.getPropText()); + assertEquals(templateFromDB.getName(), generatedName + CsarInstallerImpl.TEMPLATE_NAME_SUFFIX); + } +} diff --git a/src/test/resources/application.properties b/src/test/resources/application.properties index 413cfe7a1..ad0355290 100644 --- a/src/test/resources/application.properties +++ b/src/test/resources/application.properties @@ -178,6 +178,7 @@ clamp.config.sdc.InstanceID=X-ECOMP-InstanceID clamp.config.sdc.header.requestId = X-ECOMP-RequestID # clamp.config.sdc.csarFolder = /tmp/sdc-tests +clamp.config.sdc.blueprint.parser.mapping = classpath:/clds/blueprint-parser-mapping.json # clamp.config.ui.location.default=classpath:/clds/templates/ui-location-default.json clamp.config.ui.alarm.default=classpath:/clds/templates/ui-alarm-default.json diff --git a/src/test/resources/clds/blueprint-parser-mapping.json b/src/test/resources/clds/blueprint-parser-mapping.json new file mode 100644 index 000000000..a16ef0cbc --- /dev/null +++ b/src/test/resources/clds/blueprint-parser-mapping.json @@ -0,0 +1,16 @@ +[ + { + "blueprintKey": "tca_", + "files": { + "bpmnXmlFilePath": "classpath:/clds/templates/bpmn/tca-template.xml", + "svgXmlFilePath": "classpath:/clds/templates/bpmn/tca-img.xml" + } + }, + { + "blueprintKey": "holmes_", + "files": { + "bpmnXmlFilePath": "classpath:/clds/templates/bpmn/holmes-template.xml", + "svgXmlFilePath": "classpath:/clds/templates/bpmn/holmes-img.xml" + } + } +] diff --git a/src/test/resources/clds/templates/bpmn/holmes-img.xml b/src/test/resources/clds/templates/bpmn/holmes-img.xml new file mode 100644 index 000000000..f84b6a10e --- /dev/null +++ b/src/test/resources/clds/templates/bpmn/holmes-img.xml @@ -0,0 +1,315 @@ + +\n +\n +\n + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + H + + + Holmes + + + + + + + + + + + + + + V + + + E + + + S + + + VesCollector + + + + + + + + + + + + + Policy + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/resources/clds/templates/bpmn/holmes-template.xml b/src/test/resources/clds/templates/bpmn/holmes-template.xml new file mode 100644 index 000000000..0ea1587ce --- /dev/null +++ b/src/test/resources/clds/templates/bpmn/holmes-template.xml @@ -0,0 +1,93 @@ + + + + + SequenceFlow_1c9hzec + + + SequenceFlow_1ig3gix + SequenceFlow_0zwbn2r + + + SequenceFlow_1c9hzec + SequenceFlow_1ig3gix + + + SequenceFlow_0zwbn2r + SequenceFlow_0ox6r95 + + + SequenceFlow_0ox6r95 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/resources/clds/templates/bpmn/tca-img.xml b/src/test/resources/clds/templates/bpmn/tca-img.xml new file mode 100644 index 000000000..a2ec5af23 --- /dev/null +++ b/src/test/resources/clds/templates/bpmn/tca-img.xml @@ -0,0 +1,309 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + V + + + E + + + S + + + VesCollector + + + + + + + + + + + + + TCA + + + + + + + + + + + + + Policy + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/resources/clds/templates/bpmn/tca-template.xml b/src/test/resources/clds/templates/bpmn/tca-template.xml new file mode 100644 index 000000000..cc942ef9d --- /dev/null +++ b/src/test/resources/clds/templates/bpmn/tca-template.xml @@ -0,0 +1,95 @@ + + + + + + SequenceFlow_1ahk7jg + + + SequenceFlow_1ahk7jg + SequenceFlow_18ahat1 + + + SequenceFlow_18ahat1 + SequenceFlow_1mo9gxb + + + SequenceFlow_1mo9gxb + SequenceFlow_1dgtrrq + + + SequenceFlow_1dgtrrq + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/resources/example/sdc/blueprint-dcae/holmes.yaml b/src/test/resources/example/sdc/blueprint-dcae/holmes.yaml new file mode 100644 index 000000000..1277a0243 --- /dev/null +++ b/src/test/resources/example/sdc/blueprint-dcae/holmes.yaml @@ -0,0 +1,167 @@ +tosca_definitions_version: cloudify_dsl_1_3 +imports: +- http://www.getcloudify.org/spec/cloudify/3.4/types.yaml +- https://nexus01.research.att.com:8443/repository/solutioning01-mte2-raw/type_files/docker/2.3.0+t.0.4/node-type.yaml +- https://nexus01.research.att.com:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml +- http://nexus01.research.att.com:8081/repository/solutioning01-mte2-raw/type_files/dmaap/1.2.0/dmaap.yaml +inputs: + dcae_service_location: + type: string + docker_host_override: + type: string + topic0_aaf_password: + type: string + topic0_aaf_username: + type: string + topic0_client_role: + type: string + topic1_aaf_password: + type: string + topic1_aaf_username: + type: string + topic1_client_role: + type: string +node_templates: + docker_host_host: + type: dcae.nodes.SelectedDockerHost + properties: + docker_host_override: + get_input: docker_host_override + location_id: + get_input: dcae_service_location + holmes-rule_homes-rule: + type: dcae.nodes.DockerContainerForComponentsUsingDmaap + properties: + application_config: + holmes.default.rule.volte.scenario1: 'package dcae.ves.test + + import org.onap.some.related.packages; + + rule"SameVNF_Relation_Rule" + + salience 120 + + no-loop true + + when + + $root : VesAlarm( + + $sourceId: sourceId, sourceId != null && !sourceId.equals(""), + + specificProblem in ( "LSS_cpiPCSCFFailReg(121297)", "LSS_cpiSIPRetransmitInvite(120267)" ), + + $eventId: eventId) + + $child : VesAlarm( eventId != $eventId, + + CorrelationUtil.getInstance().isTopologicallyRelated(sourceId, $sourceId), + + specificProblem in ("LSS_externalLinkDown(4271)","LSS_failedAttachReqsRateExceeded(4272)"), + + this after [-60s, 60s] $root) + + then + + DmaapService.publishResult(...); + + end' + holmes.default.rule.volte.scenario2: 'package dcae.ves.test + + import org.onap.some.related.packages; + + rule"SameVNF_Relation_Rule_1" + + salience 120 + + no-loop true + + when + + $root : VesAlarm( + + $sourceId: sourceId, sourceId != null && !sourceId.equals(""), + + specificProblem in ( "LSS_cpiPCSCFFailReg(121297)", "LSS_cpiSIPRetransmitInvite(120267)" ), + + $eventId: eventId) + + $child : VesAlarm( eventId != $eventId, + + CorrelationUtil.getInstance().isTopologicallyRelated(sourceId, $sourceId), + + specificProblem in ("LSS_externalLinkDown(4271)","LSS_failedAttachReqsRateExceeded(4272)"), + + this after [-60s, 60s] $root) + + then + + DmaapService.publishResult(...); + + end' + services_calls: + - msb_config: + concat: + - '{{' + - get_property: + - SELF + - msb_config + - node_name + - '}}' + streams_publishes: [] + streams_subscribes: + - sec_measurement_unsecure: + aaf_password: + get_input: topic0_aaf_password + aaf_username: + get_input: topic0_aaf_username + dmaap_info: <> + type: message_router + - sec_measurement: + aaf_password: + get_input: topic1_aaf_password + aaf_username: + get_input: topic1_aaf_username + dmaap_info: <> + type: message_router + docker_config: + healthcheck: + endpoint: api/holmes-rule-mgmt/v1/healthcheck + interval: 15s + timeout: 1s + type: http + ports: + - 9101:9101 + image: nexus3.onap.org:10001/onap/holmes/rule-manamgement:latest + location_id: + get_input: dcae_service_location + service_component_type: dcae-analytics-holmes-rule-manamgement + streams_publishes: [] + streams_subscribes: + - client_role: + get_input: topic0_client_role + location: + get_input: dcae_service_location + name: topic0 + type: message_router + - client_role: + get_input: topic1_client_role + location: + get_input: dcae_service_location + name: topic1 + type: message_router + relationships: + - target: docker_host_host + type: dcae.relationships.component_contained_in + - target: topic0 + type: dcae.relationships.subscribe_to_events + - target: topic1 + type: dcae.relationships.subscribe_to_events + topic0: + type: dcae.nodes.Topic + properties: + topic_name: '' + topic1: + type: dcae.nodes.Topic + properties: + topic_name: '' diff --git a/src/test/resources/example/sdc/blueprint-dcae/not-recognized.yaml b/src/test/resources/example/sdc/blueprint-dcae/not-recognized.yaml new file mode 100644 index 000000000..6522885ff --- /dev/null +++ b/src/test/resources/example/sdc/blueprint-dcae/not-recognized.yaml @@ -0,0 +1,130 @@ +tosca_definitions_version: cloudify_dsl_1_3 +imports: +- http://dockercentral.it.att.com:8093/nexus/repository/rawcentral/com.att.dcae.controller/type_files/dockerplugin/2.4.0+t.0.8/node-type.yaml +- http://dockercentral.it.att.com:8093/nexus/repository/rawcentral/com.att.dcae.controller/type_files/dmaap/1.2.0+t.0.9/dmaap.yaml +- http://dockercentral.it.att.com:8093/nexus/repository/rawcentral/com.att.dcae.controller/type_files/relationship/1.0.0+t.0.1/relationship-types.yaml +inputs: + commonEventHeader.domain: + type: string + commonEventHeader.version: + type: string + dcae_service_location: + type: string + docker_host_override: + type: string + default: '' + elementType: + type: string + feed_id: + type: string + mappingType: + type: string + measurementsForVfScalingFields.measurementsForVfScalingVersion: + type: string + phases.docker_map.phaseName: + type: string + topic1_aaf_password: + type: string + topic1_aaf_username: + type: string + topic1_client_role: + type: string +node_templates: + DockerMap_n.1519416493392.3_DockerMap: + type: dcae.nodes.DockerContainerForComponentsUsingDmaap + properties: + application_config: + commonEventHeader.domain: + get_input: commonEventHeader.domain + commonEventHeader.version: + get_input: commonEventHeader.version + csvToVesJson: '{"processing":[{"phase":"pmossFoiPhase","filter":{"class":"Contains","string":"${file}","value":"NOKvMRF"},"processors":[{"class":"LogEvent","title":"PM-FOIEvent-Received","logName":"com.att.gfp.dcae.eventProcessor.input","logLevel":"DEBUG"},{"class":"RunPhase","phase":"vFoiNokRunPhase"}]},{"phase":"vFoiNokRunPhase","comments":"generic parsing","processors":[{"replace":",","field":"data","class":"ReplaceText","find":";"},{"replace":",","field":"file","class":"ReplaceText","find":"_"}]},{"phase":"vFoiNokRunPhase","filter":{"class":"Contains","string":"${data[1]}","value":"Begin date"},"processors":[{"class":"ExtractText","field":"event.commonEventHeader.startEpochMicrosec","value":"${data[1]}","regex":".*Begin date,([^,]*),.*"},{"class":"DateFormatter","value":"${event.commonEventHeader.startEpochMicrosec}","fromFormat":"MM/dd/yy HH:mm:ss a","fromTz":"GMT","toField":"event.commonEventHeader.startEpochMicrosec","toFormat":"#ms","toTz":"#ms"}]},{"phase":"vFoiNokRunPhase","filter":{"class":"Contains","string":"${data[2]}","value":"End date"},"processors":[{"class":"ExtractText","field":"event.commonEventHeader.lastEpochMicrosec","value":"${data[2]}","regex":".*End date,([^,]*),.*"},{"class":"DateFormatter","value":"${event.commonEventHeader.lastEpochMicrosec}","fromFormat":"MM/dd/yy HH:mm:ss a","fromTz":"GMT","toField":"event.commonEventHeader.lastEpochMicrosec","toFormat":"#ms","toTz":"#ms"},{"class":"DateFormatter","value":"${event.commonEventHeader.lastEpochMicrosec}","fromFormat":"#ms","fromTz":"#ms","toField":"event.commonEventHeader.internalHeaderFields.DATETIMEUTC","toFormat":"yyyyMMddHHmmss","toTz":"GMT"}]},{"phase":"vFoiNokRunPhase","processors":[{"class":"ExtractText","field":"event.measurementsForVfScalingFields.additionalMeasurements.arrayOfFields[0].value","value":"${data[7]}","regex":".*CpuSys,+(\\d+,){3}.*"},{"class":"ReplaceText","replace":"","field":"event.measurementsForVfScalingFields.additionalMeasurements.arrayOfFields[0].value","find":","},{"class":"ExtractText","field":"event.measurementsForVfScalingFields.additionalMeasurements.arrayOfFields[1].value","value":"${data[5]}","regex":".*CpuUsage,+(\\d+,){3}.*"},{"class":"ReplaceText","replace":"","field":"event.measurementsForVfScalingFields.additionalMeasurements.arrayOfFields[1].value","find":","},{"class":"ExtractText","field":"event.measurementsForVfScalingFields.additionalMeasurements.arrayOfFields[2].value","value":"${data[7]}","regex":".*CpuSys,+(\\d+,){2}.*"},{"class":"ReplaceText","replace":"","field":"event.measurementsForVfScalingFields.additionalMeasurements.arrayOfFields[2].value","find":","},{"class":"ExtractText","field":"event.measurementsForVfScalingFields.additionalMeasurements.arrayOfFields[3].value","value":"${data[5]}","regex":".*CpuUsage,+(\\d+,){2}.*"},{"class":"ReplaceText","replace":"","field":"event.measurementsForVfScalingFields.additionalMeasurements.arrayOfFields[3].value","find":","}]},{"phase":"vFoiNokRunPhase","processors":[{"class":"ExtractText","field":"event.commonEventHeader.eventName","value":"${file}","regex":"([^,]*),.*"},{"class":"ExtractText","field":"event.commonEventHeader.reportingEntityName","value":"${file}","regex":".*,([^,]*)\\..*"}]},{"phase":"vFoiNokRunPhase","comments":"generic parsing","processors":[{"class":"Set","updates":{"event.commonEventHeader.lastEpochMicrosec":"${event.commonEventHeader.lastEpochMicrosec}000","event.commonEventHeader.startEpochMicrosec":"${event.commonEventHeader.startEpochMicrosec}000","event.commonEventHeader.domain":"measurementsForVfScaling","event.commonEventHeader.eventName":"Mfvs_${event.commonEventHeader.eventName}","event.commonEventHeader.eventType":"csv2ves","event.commonEventHeader.priority":"Normal","event.commonEventHeader.sequence":0,"event.commonEventHeader.sourceName":"${event.commonEventHeader.reportingEntityName}","event.commonEventHeader.version":3.0,"event.commonEventHeader.eventId":"%{now.ms}","event.commonEventHeader.internalHeaderFields.dbTableSuffix":"","event.measurementsForVfScalingFields.measurementInterval":900,"event.measurementsForVfScalingFields.measurementsForVfScalingVersion":2.0,"event.measurementsForVfScalingFields.additionalMeasurements.name":"csv2ves","event.measurementsForVfScalingFields.additionalMeasurements.arrayOfFields[0].name":"CpuSysMax","event.measurementsForVfScalingFields.additionalMeasurements.arrayOfFields[1].name":"CpuUsageMax","event.measurementsForVfScalingFields.additionalMeasurements.arrayOfFields[2].name":"CpuSysAverage","event.measurementsForVfScalingFields.additionalMeasurements.arrayOfFields[3].name":"CpuUsageAverage"}},{"class":"DateFormatter","value":"${event.commonEventHeader.eventId}","fromFormat":"#ms","fromTz":"#ms","toField":"event.commonEventHeader.eventId","toFormat":"yyyyMMddHHmmssSSS","toTz":"GMT"}]},{"phase":"vFoiNokRunPhase","processors":[{"class":"Clear","fields":["data","file"]},{"class":"LogText","logLevel":"INFO","logText":"Finished-PM-FOIEvent-parsing"},{"class":"LogEvent","title":"PM-FOIEvent-Received-Output"},{"class":"RunPhase","phase":"foiEventToDmaapPhase"}]}]}' + elementType: + get_input: elementType + isSelfServeComponent: 'True' + mappingType: + get_input: mappingType + measurementsForVfScalingFields.measurementsForVfScalingVersion: + get_input: measurementsForVfScalingFields.measurementsForVfScalingVersion + phases.docker_map.phaseName: + get_input: phases.docker_map.phaseName + services_calls: {} + streams_publishes: + DCAE-VES-PM-EVENT: + aaf_password: + get_input: topic1_aaf_password + aaf_username: + get_input: topic1_aaf_username + dmaap_info: <> + type: message_router + streams_subscribes: + DCAE_PM_DATA_C_M: + dmaap_info: <> + type: data_router + useDtiConfig: 'False' + docker_config: + healthcheck: + interval: 300s + script: /opt/app/vec/bin/common/HealthCheck_DockerMap.sh + timeout: 15s + type: docker + volumes: + - container: + bind: /opt/app/dcae-certificate + host: + path: /opt/app/dcae-certificate + - container: + bind: /opt/app/dmd/log/AGENT + host: + path: /opt/logs/DCAE/dockermap/dmd/AGENT + - container: + bind: /opt/app/dmd/log/WATCHER + host: + path: /opt/logs/DCAE/dockermap/dmd/WATCHER + - container: + bind: /opt/app/vec/logs/DCAE + host: + path: /opt/logs/DCAE/dockermap/dockermap-logs + - container: + bind: /opt/app/vec/archive/data + host: + path: /opt/data/DCAE/dockermap/dockermap-archive + image: dockercentral.it.att.com:5100/com.att.dcae.controller/dcae-controller-dockermap:18.02-004 + location_id: + get_input: dcae_service_location + service_component_type: dcae.collectors.docker.map.pm + streams_publishes: + - client_role: + get_input: topic1_client_role + location: + get_input: dcae_service_location + name: topic1_n.1519416493404.5 + type: message_router + streams_subscribes: + - location: + get_input: dcae_service_location + name: feed_n.1519416394214.2 + type: data_router + relationships: + - target: docker_host_host + type: dcae.relationships.component_contained_in + - target: feed_n.1519416394214.2 + type: dcae.relationships.subscribe_to_files + - target: topic1_n.1519416493404.5 + type: dcae.relationships.publish_events + docker_host_host: + type: dcae.nodes.SelectedDockerHost + properties: + docker_host_override: + get_input: docker_host_override + location_id: + get_input: dcae_service_location + feed_n.1519416394214.2: + type: dcae.nodes.ExistingFeed + properties: + feed_id: + get_input: feed_id + topic1_n.1519416493404.5: + type: dcae.nodes.Topic + properties: + topic_name: DCAE-VES-PM-EVENT-v1 diff --git a/src/test/resources/example/sdc/blueprint-dcae/tca.yaml b/src/test/resources/example/sdc/blueprint-dcae/tca.yaml new file mode 100644 index 000000000..101dc2c0d --- /dev/null +++ b/src/test/resources/example/sdc/blueprint-dcae/tca.yaml @@ -0,0 +1,82 @@ +tosca_definitions_version: cloudify_dsl_1_3 +imports: +- http://www.getcloudify.org/spec/cloudify/3.4/types.yaml +- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/docker/2.2.0/node-type.yaml +- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml +- http://onap.org:8081/repository/solutioning01-mte2-raw/type_files/dmaap/dmaap_mr.yaml +inputs: + location_id: + type: string + service_id: + type: string +node_templates: + cdap_host_host: + type: dcae.nodes.StreamingAnalytics.SelectedCDAPInfrastructure + properties: + location_id: + get_input: location_id + scn_override: cdap_broker.solutioning-central.dcae.onap.org + interfaces: + cloudify.interfaces.lifecycle: { + } + tca_tca: + type: dcae.nodes.MicroService.cdap + properties: + app_config: + appDescription: DCAE Analytics Threshold Crossing Alert Application + appName: dcae-tca + tcaSubscriberOutputStreamName: TCASubscriberOutputStream + tcaVESAlertsTableName: TCAVESAlertsTable + tcaVESAlertsTableTTLSeconds: '1728000' + tcaVESMessageStatusTableName: TCAVESMessageStatusTable + tcaVESMessageStatusTableTTLSeconds: '86400' + thresholdCalculatorFlowletInstances: '2' + app_preferences: + publisherContentType: application/json + publisherHostName: mrlocal-mtnjftle01.onap.org + publisherHostPort: '3905' + publisherMaxBatchSize: '10' + publisherMaxRecoveryQueueSize: '100000' + publisherPollingInterval: '20000' + publisherProtocol: https + publisherTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESPub + publisherUserName: m00502@tca.af.dcae.onap.org + publisherUserPassword: Te5021abc + subscriberConsumerGroup: OpenDCAE-c12 + subscriberConsumerId: c12 + subscriberContentType: application/json + subscriberHostName: mrlocal-mtnjftle01.onap.org + subscriberHostPort: '3905' + subscriberMessageLimit: '-1' + subscriberPollingInterval: '20000' + subscriberProtocol: https + subscriberTimeoutMS: '-1' + subscriberTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESSub + subscriberUserName: m00502@tca.af.dcae.onap.org + subscriberUserPassword: Te5021abc + tca_policy: null + artifact_name: dcae-analytics-tca + artifact_version: 1.0.0 + connections: + streams_publishes: [ + ] + streams_subscribes: [ + ] + jar_url: http://somejar + location_id: + get_input: location_id + namespace: cdap_tca_hi_lo + programs: + - program_id: TCAVESCollectorFlow + program_type: flows + - program_id: TCADMaaPMRSubscriberWorker + program_type: workers + - program_id: TCADMaaPMRPublisherWorker + program_type: workers + service_component_type: cdap_app_tca + service_id: + get_input: service_id + streamname: TCASubscriberOutputStream + relationships: + - target: cdap_host_host + type: dcae.relationships.component_contained_in \ No newline at end of file -- cgit 1.2.3-korg From 350b41105138242190f0dd42396721a0195e04d2 Mon Sep 17 00:00:00 2001 From: "Determe, Sebastien (sd378r)" Date: Wed, 21 Mar 2018 18:27:38 +0100 Subject: Rework of the csarinstaller Csarinstaller rework to save Template and Model to database Issue-ID: CLAMP-81 Change-Id: I5edf9716146975ed3751a93b78f5c9b0b9ff2af9 Signed-off-by: Determe, Sebastien (sd378r) --- .../sdc/BlueprintParserMappingConfiguration.java | 5 ++ .../java/org/onap/clamp/clds/model/CldsModel.java | 59 +++++++++-------- .../clds/sdc/controller/installer/CsarHandler.java | 37 +++++++++++ .../controller/installer/CsarInstallerImpl.java | 73 +++++++++++++++++----- src/main/resources/clds/camel/flexible-flow.xml | 1 - .../controller/installer/CsarInstallerItCase.java | 10 ++- .../resources/clds/blueprint-parser-mapping.json | 2 + .../example/sdc/blueprint-dcae/holmes.yaml | 7 +++ .../resources/example/sdc/blueprint-dcae/tca.yaml | 24 ++++++- 9 files changed, 168 insertions(+), 50 deletions(-) (limited to 'src/test/resources/clds') diff --git a/src/main/java/org/onap/clamp/clds/config/sdc/BlueprintParserMappingConfiguration.java b/src/main/java/org/onap/clamp/clds/config/sdc/BlueprintParserMappingConfiguration.java index b26310400..a78e895f7 100644 --- a/src/main/java/org/onap/clamp/clds/config/sdc/BlueprintParserMappingConfiguration.java +++ b/src/main/java/org/onap/clamp/clds/config/sdc/BlueprintParserMappingConfiguration.java @@ -39,6 +39,7 @@ import java.util.List; public class BlueprintParserMappingConfiguration { private String blueprintKey; + private boolean dcaeDeployable; private BlueprintParserFilesConfiguration files; public String getBlueprintKey() { @@ -57,6 +58,10 @@ public class BlueprintParserMappingConfiguration { this.files = filesConfig; } + public boolean isDcaeDeployable() { + return dcaeDeployable; + } + public static List createFromJson(InputStream json) throws IOException { TypeReference> mapType = new TypeReference>() { }; diff --git a/src/main/java/org/onap/clamp/clds/model/CldsModel.java b/src/main/java/org/onap/clamp/clds/model/CldsModel.java index 02c70cae0..34876bbc0 100644 --- a/src/main/java/org/onap/clamp/clds/model/CldsModel.java +++ b/src/main/java/org/onap/clamp/clds/model/CldsModel.java @@ -43,33 +43,36 @@ import org.onap.clamp.clds.dao.CldsDao; */ public class CldsModel { - private static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsModel.class); - private static final int UUID_LENGTH = 36; - private static final String STATUS_DESIGN = "DESIGN"; - private static final String STATUS_DISTRIBUTED = "DISTRIBUTED"; - private static final String STATUS_ACTIVE = "ACTIVE"; - private static final String STATUS_STOPPED = "STOPPED"; - private static final String STATUS_DELETING = "DELETING"; - private static final String STATUS_ERROR = "ERROR"; - private static final String STATUS_UNKNOWN = "UNKNOWN"; - private String id; - private String templateId; - private String templateName; - private String name; - private String controlNamePrefix; - private String controlNameUuid; - private String bpmnText; - private String propText; - private String imageText; - private String docText; - private String blueprintText; - private CldsEvent event; - private String status; - private List permittedActionCd; + private static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsModel.class); + private static final int UUID_LENGTH = 36; + private static final String STATUS_DESIGN = "DESIGN"; + private static final String STATUS_DISTRIBUTED = "DISTRIBUTED"; + private static final String STATUS_ACTIVE = "ACTIVE"; + private static final String STATUS_STOPPED = "STOPPED"; + private static final String STATUS_DELETING = "DELETING"; + private static final String STATUS_ERROR = "ERROR"; + private static final String STATUS_UNKNOWN = "UNKNOWN"; + private String id; + private String templateId; + private String templateName; + private String name; + private String controlNamePrefix; + private String controlNameUuid; + private String bpmnText; + private String propText; + private String imageText; + private String docText; + private String blueprintText; + private CldsEvent event; + private String status; + private List permittedActionCd; private List cldsModelInstanceList; - private String typeId; - private String typeName; - private String deploymentId; + /** + * The service type Id received from DCAE by querying it + */ + private String typeId; + private String typeName; + private String deploymentId; /** * Construct empty model. @@ -95,7 +98,6 @@ public class CldsModel { public boolean canInventoryCall() { boolean canCall = false; /* Below checks the clds event is submit/resubmit */ - if ((event.isActionCd(CldsEvent.ACTION_SUBMIT) || event.isActionCd(CldsEvent.ACTION_RESUBMIT) || event.isActionCd(CldsEvent.ACTION_SUBMITDCAE))) { canCall = true; @@ -116,7 +118,6 @@ public class CldsModel { * set the status in the model */ private void determineStatus() { - status = STATUS_UNKNOWN; if (event == null || event.getActionCd() == null) { status = STATUS_DESIGN; @@ -141,7 +142,6 @@ public class CldsModel { } else if (event.isActionAndStateCd(CldsEvent.ACTION_STOP, CldsEvent.ACTION_STATE_ANY)) { status = STATUS_STOPPED; } - } /** @@ -491,5 +491,4 @@ public class CldsModel { public List getPermittedActionCd() { return permittedActionCd; } - } diff --git a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarHandler.java b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarHandler.java index 940b7cfaf..b11385239 100644 --- a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarHandler.java +++ b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarHandler.java @@ -43,6 +43,7 @@ import org.onap.clamp.clds.exception.sdc.controller.CsarHandlerException; import org.onap.clamp.clds.exception.sdc.controller.SdcArtifactInstallerException; import org.openecomp.sdc.api.notification.IArtifactInfo; import org.openecomp.sdc.api.notification.INotificationData; +import org.openecomp.sdc.api.notification.IResourceInstance; import org.openecomp.sdc.api.results.IDistributionClientDownloadResult; import org.openecomp.sdc.tosca.parser.api.ISdcCsarHelper; import org.openecomp.sdc.tosca.parser.exceptions.SdcToscaParserException; @@ -61,9 +62,14 @@ public class CsarHandler { private SdcToscaParserFactory factory = SdcToscaParserFactory.getInstance(); private ISdcCsarHelper sdcCsarHelper; private String dcaeBlueprint; + private String blueprintArtifactName; + private String blueprintInvariantResourceUuid; + private String blueprintInvariantServiceUuid; public static final String CSAR_TYPE = "TOSCA_CSAR"; + private INotificationData sdcNotification; public CsarHandler(INotificationData iNotif, String controller, String clampCsarPath) throws CsarHandlerException { + this.sdcNotification = iNotif; this.controllerName = controller; this.artifactElement = searchForUniqueCsar(iNotif); this.csarFilePath = buildFilePathForCsar(artifactElement, clampCsarPath); @@ -96,12 +102,27 @@ public class CsarHandler { } sdcCsarHelper = factory.getSdcCsarHelper(csarFilePath); this.loadDcaeBlueprint(); + this.loadBlueprintArtifactDetails(); } catch (IOException e) { throw new SdcArtifactInstallerException( "Exception caught when trying to write the CSAR on the file system to " + csarFilePath, e); } } + private void loadBlueprintArtifactDetails() { + blueprintInvariantServiceUuid = this.getSdcNotification().getServiceInvariantUUID(); + for (IResourceInstance resource : this.getSdcNotification().getResources()) { + if ("VF".equals(resource.getResourceType())) { + for (IArtifactInfo artifact : resource.getArtifacts()) { + if ("DCAE_INVENTORY_BLUEPRINT".equals(artifact.getArtifactType())) { + blueprintArtifactName = artifact.getArtifactName(); + blueprintInvariantResourceUuid = resource.getResourceInvariantUUID(); + } + } + } + } + } + private void loadDcaeBlueprint() throws IOException, SdcArtifactInstallerException { List listEntries = new ArrayList<>(); try (ZipFile zipFile = new ZipFile(csarFilePath)) { @@ -136,4 +157,20 @@ public class CsarHandler { public synchronized String getDcaeBlueprint() { return dcaeBlueprint; } + + public INotificationData getSdcNotification() { + return sdcNotification; + } + + public String getBlueprintArtifactName() { + return blueprintArtifactName; + } + + public String getBlueprintInvariantResourceUuid() { + return blueprintInvariantResourceUuid; + } + + public String getBlueprintInvariantServiceUuid() { + return blueprintInvariantServiceUuid; + } } diff --git a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstallerImpl.java b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstallerImpl.java index c56eed517..3a6bef8d8 100644 --- a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstallerImpl.java +++ b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstallerImpl.java @@ -35,7 +35,8 @@ import java.util.Map; import javax.annotation.PostConstruct; -import org.onap.clamp.clds.config.ClampProperties; +import org.json.simple.parser.ParseException; +import org.onap.clamp.clds.client.DcaeInventoryServices; import org.onap.clamp.clds.config.sdc.BlueprintParserFilesConfiguration; import org.onap.clamp.clds.config.sdc.BlueprintParserMappingConfiguration; import org.onap.clamp.clds.dao.CldsDao; @@ -55,8 +56,8 @@ public class CsarInstallerImpl implements CsarInstaller { private static final EELFLogger logger = EELFManager.getInstance().getLogger(CsarInstallerImpl.class); private Map bpmnMapping = new HashMap<>(); - public static final String TEMPLATE_NAME_SUFFIX = "-template-dcae-designer"; - public static final String MODEL_NAME_SUFFIX = "-model-dcae-designer"; + public static final String TEMPLATE_NAME_PREFIX = "DCAE-Designer-ClosedLoopTemplate-"; + public static final String MODEL_NAME_PREFIX = "DCAE-Designer-ClosedLoopInstance-"; /** * The file name that will be loaded by Spring. */ @@ -67,11 +68,11 @@ public class CsarInstallerImpl implements CsarInstaller { @Autowired private CldsDao cldsDao; @Autowired - private ClampProperties refProp; - @Autowired CldsTemplateService cldsTemplateService; @Autowired CldsService cldsService; + @Autowired + DcaeInventoryServices dcaeInventoryService; @PostConstruct public void loadConfiguration() throws IOException { @@ -88,10 +89,15 @@ public class CsarInstallerImpl implements CsarInstaller { @Override public void installTheCsar(CsarHandler csar) throws SdcArtifactInstallerException { try { - BlueprintParserFilesConfiguration configFiles = this.searchForRightMapping(csar); - createFakeCldsModel(csar, configFiles, createFakeCldsTemplate(csar, configFiles)); + String serviceTypeId = queryDcaeToGetServiceTypeId(csar); + String policyName = searchForPolicyName(csar); + if (policyName.contains("*")) { + } + createFakeCldsModel(csar, createFakeCldsTemplate(csar, this.searchForRightMapping(csar)), serviceTypeId); } catch (IOException e) { throw new SdcArtifactInstallerException("Exception caught during the Csar installation in database", e); + } catch (ParseException e) { + throw new SdcArtifactInstallerException("Exception caught during the Dcae query to get ServiceTypeId", e); } } @@ -115,12 +121,38 @@ public class CsarInstallerImpl implements CsarInstaller { return listConfig.get(0); } - private String createTemplateName(CsarHandler csar) { - return csar.getSdcCsarHelper().getServiceMetadata().getValue("name") + TEMPLATE_NAME_SUFFIX; + private String searchForPolicyName(CsarHandler csar) throws SdcArtifactInstallerException { + String policyName = null; + Yaml yaml = new Yaml(); + List policyNameList = new ArrayList<>(); + Map templateNodes = ((Map) ((Map) yaml + .load(csar.getDcaeBlueprint())).get("node_templates")); + templateNodes.entrySet().stream().filter(e -> e.getKey().contains("policy_")).forEach(ef -> { + String filteredPolicyName = (String) ((Map) ((Map) ef.getValue()) + .get("properties")).get("policy_filter"); + if (policyName != null) { + policyNameList.add(filteredPolicyName); + } else { + String inputPolicyName = (String) ((Map) ((Map) ((Map) ef + .getValue()).get("properties")).get("policy_id")).get("get_input"); + if (inputPolicyName != null) { + policyNameList.add("get_input"); + } + } + }); + if (policyNameList.size() > 1) { + throw new SdcArtifactInstallerException( + "The code does not currently support multiple Policy MicroServices in the blueprint"); + } else if (policyNameList.isEmpty()) { + throw new SdcArtifactInstallerException( + "There is no recognized Policy MicroService found in the blueprint"); + } + return policyNameList.get(0); } - private String createModelName(CsarHandler csar) { - return csar.getSdcCsarHelper().getServiceMetadata().getValue("name") + MODEL_NAME_SUFFIX; + private String queryDcaeToGetServiceTypeId(CsarHandler csar) throws IOException, ParseException { + return dcaeInventoryService.getDcaeInformation(csar.getBlueprintArtifactName(), + csar.getBlueprintInvariantServiceUuid(), csar.getBlueprintInvariantResourceUuid()); } private CldsTemplate createFakeCldsTemplate(CsarHandler csar, BlueprintParserFilesConfiguration configFiles) @@ -129,19 +161,26 @@ public class CsarInstallerImpl implements CsarInstaller { template.setBpmnId("Sdc-Generated"); template.setBpmnText( IOUtils.toString(appContext.getResource(configFiles.getBpmnXmlFilePath()).getInputStream())); - // ((ObjectNode)refProp.getJsonTemplate(CldsService.GLOBAL_PROPERTIES_KEY)); template.setPropText(csar.getDcaeBlueprint()); template.setImageText( IOUtils.toString(appContext.getResource(configFiles.getSvgXmlFilePath()).getInputStream())); - return cldsTemplateService.putTemplate(createTemplateName(csar), template); + template.setName(TEMPLATE_NAME_PREFIX + csar.getSdcCsarHelper().getServiceMetadata().getValue("name")); + template.save(cldsDao, null); + return template; } - private CldsModel createFakeCldsModel(CsarHandler csar, BlueprintParserFilesConfiguration configFiles, - CldsTemplate cldsTemplate) { + private CldsModel createFakeCldsModel(CsarHandler csar, CldsTemplate cldsTemplate, String serviceTypeId) { CldsModel cldsModel = new CldsModel(); + cldsModel.setControlNamePrefix(MODEL_NAME_PREFIX); + cldsModel.setName(csar.getSdcCsarHelper().getServiceMetadata().getValue("name")); cldsModel.setBlueprintText(csar.getDcaeBlueprint()); cldsModel.setTemplateName(cldsTemplate.getName()); - // cldsModel.set - return cldsService.putModel(createModelName(csar), cldsModel); + cldsModel.setTemplateId(cldsTemplate.getId()); + cldsModel.setDocText(cldsTemplate.getPropText()); + cldsModel.setPropText("{}"); + cldsModel.setBpmnText(cldsTemplate.getBpmnText()); + cldsModel.setTypeId(serviceTypeId); + cldsModel.save(cldsDao, null); + return cldsModel; } } diff --git a/src/main/resources/clds/camel/flexible-flow.xml b/src/main/resources/clds/camel/flexible-flow.xml index 7a3ebdb0a..b2a728d14 100644 --- a/src/main/resources/clds/camel/flexible-flow.xml +++ b/src/main/resources/clds/camel/flexible-flow.xml @@ -4,7 +4,6 @@ ${exchangeProperty.actionCd} == 'SUBMIT' || ${exchangeProperty.actionCd} == 'RESUBMIT' - diff --git a/src/test/java/org/onap/clamp/clds/it/sdc/controller/installer/CsarInstallerItCase.java b/src/test/java/org/onap/clamp/clds/it/sdc/controller/installer/CsarInstallerItCase.java index 94adfafa8..6ae64ef7d 100644 --- a/src/test/java/org/onap/clamp/clds/it/sdc/controller/installer/CsarInstallerItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/sdc/controller/installer/CsarInstallerItCase.java @@ -38,6 +38,7 @@ import org.mockito.Mockito; import org.onap.clamp.clds.dao.CldsDao; import org.onap.clamp.clds.exception.sdc.controller.CsarHandlerException; import org.onap.clamp.clds.exception.sdc.controller.SdcArtifactInstallerException; +import org.onap.clamp.clds.model.CldsModel; import org.onap.clamp.clds.model.CldsTemplate; import org.onap.clamp.clds.sdc.controller.installer.CsarHandler; import org.onap.clamp.clds.sdc.controller.installer.CsarInstaller; @@ -90,7 +91,7 @@ public class CsarInstallerItCase { Mockito.when(csarHelper.getServiceMetadata()).thenReturn(data); Mockito.when(csarHandler.getSdcCsarHelper()).thenReturn(csarHelper); csarInstaller.installTheCsar(csarHandler); - // Get it back from DB + // Get the template back from DB CldsTemplate templateFromDB = CldsTemplate.retrieve(cldsDao, generatedName + CsarInstallerImpl.TEMPLATE_NAME_SUFFIX, false); assertNotNull(templateFromDB); @@ -98,5 +99,12 @@ public class CsarInstallerItCase { assertNotNull(templateFromDB.getImageText()); assertNotNull(templateFromDB.getPropText()); assertEquals(templateFromDB.getName(), generatedName + CsarInstallerImpl.TEMPLATE_NAME_SUFFIX); + // Get the Model back from DB + CldsModel modelFromDB = CldsModel.retrieve(cldsDao, generatedName + CsarInstallerImpl.MODEL_NAME_SUFFIX, false); + assertNotNull(modelFromDB); + assertNotNull(modelFromDB.getBpmnText()); + assertNotNull(modelFromDB.getImageText()); + assertNotNull(modelFromDB.getPropText()); + assertEquals(modelFromDB.getName(), generatedName + CsarInstallerImpl.MODEL_NAME_SUFFIX); } } diff --git a/src/test/resources/clds/blueprint-parser-mapping.json b/src/test/resources/clds/blueprint-parser-mapping.json index a16ef0cbc..a22e9fcf1 100644 --- a/src/test/resources/clds/blueprint-parser-mapping.json +++ b/src/test/resources/clds/blueprint-parser-mapping.json @@ -1,6 +1,7 @@ [ { "blueprintKey": "tca_", + "dcaeDeployable":"true", "files": { "bpmnXmlFilePath": "classpath:/clds/templates/bpmn/tca-template.xml", "svgXmlFilePath": "classpath:/clds/templates/bpmn/tca-img.xml" @@ -8,6 +9,7 @@ }, { "blueprintKey": "holmes_", + "dcaeDeployable":"false", "files": { "bpmnXmlFilePath": "classpath:/clds/templates/bpmn/holmes-template.xml", "svgXmlFilePath": "classpath:/clds/templates/bpmn/holmes-img.xml" diff --git a/src/test/resources/example/sdc/blueprint-dcae/holmes.yaml b/src/test/resources/example/sdc/blueprint-dcae/holmes.yaml index 1277a0243..f180a7df6 100644 --- a/src/test/resources/example/sdc/blueprint-dcae/holmes.yaml +++ b/src/test/resources/example/sdc/blueprint-dcae/holmes.yaml @@ -22,6 +22,11 @@ inputs: topic1_client_role: type: string node_templates: + policy_0: + type: dcae.nodes.policy + properties: + policy_model: policy.nodes.holmes + policy_filter: "DCAE.Config_Holmes.*" docker_host_host: type: dcae.nodes.SelectedDockerHost properties: @@ -157,6 +162,8 @@ node_templates: type: dcae.relationships.subscribe_to_events - target: topic1 type: dcae.relationships.subscribe_to_events + - target: policy_0 + type: dcae.relationships.depends_on topic0: type: dcae.nodes.Topic properties: diff --git a/src/test/resources/example/sdc/blueprint-dcae/tca.yaml b/src/test/resources/example/sdc/blueprint-dcae/tca.yaml index 101dc2c0d..1a756eea9 100644 --- a/src/test/resources/example/sdc/blueprint-dcae/tca.yaml +++ b/src/test/resources/example/sdc/blueprint-dcae/tca.yaml @@ -9,7 +9,14 @@ inputs: type: string service_id: type: string + policy_id: + type: string node_templates: + policy_0: + type: dcae.nodes.policy + properties: + policy_id: + get_input: policy_id cdap_host_host: type: dcae.nodes.StreamingAnalytics.SelectedCDAPInfrastructure properties: @@ -78,5 +85,20 @@ node_templates: get_input: service_id streamname: TCASubscriberOutputStream relationships: + - target: topic0 + type: dcae.relationships.subscribe_to_events + - target: topic1 + type: dcae.relationships.publish_events - target: cdap_host_host - type: dcae.relationships.component_contained_in \ No newline at end of file + type: dcae.relationships.component_contained_in + - target: policy_0 + type: dcae.relationships.depends_on + topic0: + type: dcae.nodes.Topic + properties: + topic_name: '' + topic1: + type: dcae.nodes.Topic + properties: + topic_name: '' + \ No newline at end of file -- cgit 1.2.3-korg From bfbbd8cfae5b44374372189c95df179bffc2118f Mon Sep 17 00:00:00 2001 From: ehautot Date: Wed, 28 Mar 2018 13:22:35 +0200 Subject: Add simulator cases for (un)deploy/stop + typo Change-Id: I0a3b8f1e812f6199c5a7fbbabd88c6c5ec4217cc Signed-off-by: ehautot Issue-ID: CLAMP-111 --- extra/docker/clamp/docker-compose.yml | 2 +- .../resources/clds/templates/ui-alarm-default.json | 2 +- .../resources/clds/templates/ui-alarm-default.json | 2 +- .../http-cache/example/pdp/api/deletePolicy/.file | 1 + .../example/pdp/api/deletePolicy/.header | 1 + src/test/resources/http-cache/start_http_cache.sh | 2 +- src/test/resources/http-cache/third_party_proxy.py | 110 +++++++++++++++++---- 7 files changed, 99 insertions(+), 21 deletions(-) create mode 100644 src/test/resources/http-cache/example/pdp/api/deletePolicy/.file create mode 100644 src/test/resources/http-cache/example/pdp/api/deletePolicy/.header (limited to 'src/test/resources/clds') diff --git a/extra/docker/clamp/docker-compose.yml b/extra/docker/clamp/docker-compose.yml index 76992fd5d..69e471529 100644 --- a/extra/docker/clamp/docker-compose.yml +++ b/extra/docker/clamp/docker-compose.yml @@ -30,4 +30,4 @@ services: - "../../../src/test/resources/http-cache/:/script/:ro" ports: - "8085:8085" - command: /bin/sh -c "pip install requests && pip install simplejson && python -u /script/third_party_proxy.py -v true --port 8085 --root /thirdparty" + command: /bin/sh -c "pip install requests && pip install simplejson && python -u /script/third_party_proxy.py -v true --port 8085 --root /thirdparty --proxyaddress third_party_proxy:8085" diff --git a/src/main/resources/clds/templates/ui-alarm-default.json b/src/main/resources/clds/templates/ui-alarm-default.json index 0d0835981..c851e6cdd 100644 --- a/src/main/resources/clds/templates/ui-alarm-default.json +++ b/src/main/resources/clds/templates/ui-alarm-default.json @@ -267,7 +267,7 @@ "jnxSpaceSNAProcessUp": "vDBE-EMS-Juniper: jnxSpaceSNAProcessUp", "jnxSpaceNodeDown": "vDBE-EMS-Juniper: jnxSpaceNodeDown", "jnxSpaceNodeUp": "vDBE-EMS-Juniper: jnxSpaceNodeUp", - " jnxSpaceNodeRemoval": "vDBE-EMS-Juniper: jnxSpaceNodeRemoval", + "jnxSpaceNodeRemoval": "vDBE-EMS-Juniper: jnxSpaceNodeRemoval", "jnxCmCfgChange": "vDBE-Juniper: jnxCmCfgChange", "jnxCmRescueChange": "vDBE-Juniper: jnxCmRescueChange", "jnxEventTrap": "vDBE-Juniper: jnxEventTrap", diff --git a/src/test/resources/clds/templates/ui-alarm-default.json b/src/test/resources/clds/templates/ui-alarm-default.json index 0d0835981..c851e6cdd 100644 --- a/src/test/resources/clds/templates/ui-alarm-default.json +++ b/src/test/resources/clds/templates/ui-alarm-default.json @@ -267,7 +267,7 @@ "jnxSpaceSNAProcessUp": "vDBE-EMS-Juniper: jnxSpaceSNAProcessUp", "jnxSpaceNodeDown": "vDBE-EMS-Juniper: jnxSpaceNodeDown", "jnxSpaceNodeUp": "vDBE-EMS-Juniper: jnxSpaceNodeUp", - " jnxSpaceNodeRemoval": "vDBE-EMS-Juniper: jnxSpaceNodeRemoval", + "jnxSpaceNodeRemoval": "vDBE-EMS-Juniper: jnxSpaceNodeRemoval", "jnxCmCfgChange": "vDBE-Juniper: jnxCmCfgChange", "jnxCmRescueChange": "vDBE-Juniper: jnxCmRescueChange", "jnxEventTrap": "vDBE-Juniper: jnxEventTrap", diff --git a/src/test/resources/http-cache/example/pdp/api/deletePolicy/.file b/src/test/resources/http-cache/example/pdp/api/deletePolicy/.file new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/src/test/resources/http-cache/example/pdp/api/deletePolicy/.file @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/src/test/resources/http-cache/example/pdp/api/deletePolicy/.header b/src/test/resources/http-cache/example/pdp/api/deletePolicy/.header new file mode 100644 index 000000000..6a280d972 --- /dev/null +++ b/src/test/resources/http-cache/example/pdp/api/deletePolicy/.header @@ -0,0 +1 @@ +{"Transfer-Encoding": "chunked", "Set-Cookie": "JSESSIONID=158qxkdtdobkd1umr3ikkgrmlx;Path=/", "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", "Server": "Jetty(9.3.21.v20170918)", "Content-Type": "application/json", "X-ECOMP-RequestID": "e2ddb3c8-994f-47df-b4dc-097d4fb55c08"} \ No newline at end of file diff --git a/src/test/resources/http-cache/start_http_cache.sh b/src/test/resources/http-cache/start_http_cache.sh index fe9e9911f..47c3cc87b 100755 --- a/src/test/resources/http-cache/start_http_cache.sh +++ b/src/test/resources/http-cache/start_http_cache.sh @@ -34,4 +34,4 @@ fi echo 'Installing requests packages for Python' pip install requests echo 'Executing the Http proxy in Cache mode only' -python third_party_proxy.py --port 8080 --root /usr/src/http-cache-app/data-cache +python third_party_proxy.py --port 8080 --root /usr/src/http-cache-app/data-cache --proxyaddress localhost:8085 diff --git a/src/test/resources/http-cache/third_party_proxy.py b/src/test/resources/http-cache/third_party_proxy.py index 72ea49587..29d34cc89 100755 --- a/src/test/resources/http-cache/third_party_proxy.py +++ b/src/test/resources/http-cache/third_party_proxy.py @@ -41,6 +41,7 @@ parser.add_argument("--root", "-r", default=tempfile.mkdtemp, type=str, help parser.add_argument("--proxy" , type=str, help="Url of the Act as a proxy. If not set, this script only uses the cache and will return a 404 if files aren't found") parser.add_argument("--port", "-P", type=int, default="8081", help="Port on which the proxy should listen to") parser.add_argument("--verbose", "-v", type=bool, help="Print more information in case of error") +parser.add_argument("--proxyaddress","-a", type=str, help="Address of this proxy, generally either third_party_proxy:8085 or localhost:8085 depending if started with docker-compose or not") options = parser.parse_args() @@ -49,6 +50,7 @@ HOST = options.proxy AUTH = (options.username, options.password) HEADERS = {'X-ECOMP-InstanceID':'CLAMP'} CACHE_ROOT = options.root +PROXY_ADDRESS=options.proxyaddress def signal_handler(signal_sent, frame): global httpd @@ -116,7 +118,17 @@ class Proxy(SimpleHTTPServer.SimpleHTTPRequestHandler): os.makedirs(cached_file, True) with open(cached_file_header, 'w') as f: - f.write("{\"Content-Length\": \"144\", \"Content-Type\": \"application/json\"}") + f.write("{\"Content-Length\": \"" + str(len(jsonGenerated)) + "\", \"Content-Type\": \"application/json\"}") + with open(cached_file_content, 'w') as f: + f.write(jsonGenerated) + elif self.path.startswith("/dcae-operationstatus"): + print "self.path start with /dcae-operationstatus, generating response json..." + jsonGenerated = "{\"operationType\": \"operationType1\", \"status\": \"succeeded\"}" + print "jsonGenerated: " + jsonGenerated + + os.makedirs(cached_file, True) + with open(cached_file_header, 'w') as f: + f.write("{\"Content-Length\": \"" + str(len(jsonGenerated)) + "\", \"Content-Type\": \"application/json\"}") with open(cached_file_content, 'w') as f: f.write(jsonGenerated) else: @@ -215,27 +227,91 @@ class Proxy(SimpleHTTPServer.SimpleHTTPRequestHandler): cached_file_header = "%s/.header" % (cached_file,) _file_available = os.path.exists(cached_file_content) - if not _file_available and not HOST: - print("No file corresponding in cache and no HOST specified: %s" % HOST) - self.send_response(404) - return "404 Not found" if not _file_available: - print("Request for data currently not present in cache: %s" % (cached_file,)) + if self.path.startswith("/dcae-deployments/"): + print "self.path start with /dcae-deployments/, generating response json..." + #jsondata = json.loads(self.data_string) + jsonGenerated = "{\"links\":{\"status\":\"http:\/\/" + PROXY_ADDRESS + "\/dcae-operationstatus\",\"test2\":\"test2\"}}" + print "jsonGenerated: " + jsonGenerated + + os.makedirs(cached_file, True) + with open(cached_file_header, 'w') as f: + f.write("{\"Content-Length\": \"" + str(len(jsonGenerated)) + "\", \"Content-Type\": \"application/json\"}") + with open(cached_file_content, 'w') as f: + f.write(jsonGenerated) + else: + if not HOST: + self.send_response(404) + return "404 Not found" + + print("Request for data currently not present in cache: %s" % (cached_file,)) + + url = '%s%s' % (HOST, self.path) + print("url: %s" % (url,)) + response = requests.put(url, data=self.data_string, headers=self.headers, stream=True) + + if response.status_code == 200: + self._write_cache(cached_file, cached_file_header, cached_file_content, response) + else: + print('Error when requesting file :') + print('Requested url : %s' % (url,)) + print('Status code : %s' % (response.status_code,)) + print('Content : %s' % (response.content,)) + self.send_response(response.status_code) + return response.content + else: + print("Request for data present in cache: %s" % (cached_file,)) + + self._send_content(cached_file_header, cached_file_content) - url = '%s%s' % (HOST, self.path) - print("url: %s" % (url,)) - response = requests.put(url, data=self.data_string, headers=self.headers, stream=True) - if response.status_code == 200: - self._write_cache(cached_file, cached_file_header, cached_file_content, response) + def do_DELETE(self): + print("\n\n\nGot a DELETE for %s " % self.path) + self.check_credentials() + print("self.headers:\n %s" % self.headers) + + cached_file = '%s/%s' % (CACHE_ROOT, self.path,) + print("Cached file name before escaping : %s" % cached_file) + cached_file = cached_file.replace('<','<').replace('>','>').replace('?','?').replace('*','*').replace('\\','*').replace(':',':').replace('|','|') + print("Cached file name after escaping (used for cache storage) : %s" % cached_file) + cached_file_content = "%s/.file" % (cached_file,) + cached_file_header = "%s/.header" % (cached_file,) + + _file_available = os.path.exists(cached_file_content) + + if not _file_available: + if self.path.startswith("/dcae-deployments/"): + print "self.path start with /dcae-deployments/, generating response json..." + #jsondata = json.loads(self.data_string) + jsonGenerated = "{\"links\":{\"status\":\"http:\/\/" + PROXY_ADDRESS + "\/dcae-operationstatus\",\"test2\":\"test2\"}}" + print "jsonGenerated: " + jsonGenerated + + os.makedirs(cached_file, True) + with open(cached_file_header, 'w') as f: + f.write("{\"Content-Length\": \"" + str(len(jsonGenerated)) + "\", \"Content-Type\": \"application/json\"}") + with open(cached_file_content, 'w') as f: + f.write(jsonGenerated) else: - print('Error when requesting file :') - print('Requested url : %s' % (url,)) - print('Status code : %s' % (response.status_code,)) - print('Content : %s' % (response.content,)) - self.send_response(response.status_code) - return response.content + if not HOST: + self.send_response(404) + return "404 Not found" + + print("Request for data currently not present in cache: %s" % (cached_file,)) + + url = '%s%s' % (HOST, self.path) + print("url: %s" % (url,)) + response = requests.put(url, data=self.data_string, headers=self.headers, stream=True) + + if response.status_code == 200: + self._write_cache(cached_file, cached_file_header, cached_file_content, response) + else: + print('Error when requesting file :') + print('Requested url : %s' % (url,)) + print('Status code : %s' % (response.status_code,)) + print('Content : %s' % (response.content,)) + self.send_response(response.status_code) + return response.content else: print("Request for data present in cache: %s" % (cached_file,)) -- cgit 1.2.3-korg From 78100b4cad47bfb6171af3f4d9b84f9fd42f95b7 Mon Sep 17 00:00:00 2001 From: "Determe, Sebastien (sd378r)" Date: Tue, 3 Apr 2018 16:57:38 +0200 Subject: New parameter Sdc controller There is a need to have that new parameter (message bus addresses) if the sdcAddress is not present Issue-ID: CLAMP-149 Change-Id: I336e7af6784a70b0b65c9610fc2e69e40126bdc0 Signed-off-by: Determe, Sebastien (sd378r) --- .../config/sdc/SdcSingleControllerConfiguration.java | 17 ++++++++++++++--- src/main/resources/clds/sdc-controllers-config.json | 10 ++++++---- .../sdc/SdcSingleControllerConfigurationTest.java | 13 +++++++++++++ src/test/resources/clds/sdc-controller-config-TLS.json | 5 +++-- .../clds/sdc-controller-config-bad-address.json | 12 ++++++++++++ src/test/resources/clds/sdc-controllers-config.json | 11 ++++++----- 6 files changed, 54 insertions(+), 14 deletions(-) create mode 100644 src/test/resources/clds/sdc-controller-config-bad-address.json (limited to 'src/test/resources/clds') diff --git a/src/main/java/org/onap/clamp/clds/config/sdc/SdcSingleControllerConfiguration.java b/src/main/java/org/onap/clamp/clds/config/sdc/SdcSingleControllerConfiguration.java index d8bd992e9..e2aac55f1 100644 --- a/src/main/java/org/onap/clamp/clds/config/sdc/SdcSingleControllerConfiguration.java +++ b/src/main/java/org/onap/clamp/clds/config/sdc/SdcSingleControllerConfiguration.java @@ -28,6 +28,7 @@ import com.att.eelf.configuration.EELFManager; import com.fasterxml.jackson.databind.JsonNode; import java.security.GeneralSecurityException; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -65,6 +66,7 @@ public class SdcSingleControllerConfiguration implements IConfiguration { public static final String ACTIVATE_SERVER_TLS_AUTH = "activateServerTLSAuth"; public static final String KEY_STORE_KEY = "keyStorePassword"; public static final String KEY_STORE_PATH = "keyStorePath"; + public static final String MESSAGE_BUS_ADDRESSES = "messageBusAddresses"; private String errorMessageKeyNotFound; /** * Supported artifact types. @@ -239,7 +241,10 @@ public class SdcSingleControllerConfiguration implements IConfiguration { throw new SdcParametersException(ENVIRONMENT_NAME_ATTRIBUTE_NAME + errorMessageKeyNotFound); } if (this.getAsdcAddress() == null || this.getAsdcAddress().isEmpty()) { - throw new SdcParametersException(SDC_ADDRESS_ATTRIBUTE_NAME + errorMessageKeyNotFound); + if (this.getMsgBusAddress() == null || this.getMsgBusAddress().isEmpty()) { + throw new SdcParametersException(SDC_ADDRESS_ATTRIBUTE_NAME + " and " + MESSAGE_BUS_ADDRESSES + + " are not set, one of them should be set for SDC client" + errorMessageKeyNotFound); + } } if (this.getPassword() == null || this.getPassword().isEmpty()) { throw new SdcParametersException(SDC_KEY_ATTRIBUTE_NAME + errorMessageKeyNotFound); @@ -265,11 +270,17 @@ public class SdcSingleControllerConfiguration implements IConfiguration { */ @Override public boolean isFilterInEmptyResources() { - return true; + return false; } @Override public List getMsgBusAddress() { - return null; + List addressesList = new ArrayList<>(); + if (jsonRootNode != null && jsonRootNode.get(MESSAGE_BUS_ADDRESSES) != null) { + jsonRootNode.get(MESSAGE_BUS_ADDRESSES).forEach(k -> addressesList.add(k.asText())); + return addressesList; + } else { + return addressesList; + } } } diff --git a/src/main/resources/clds/sdc-controllers-config.json b/src/main/resources/clds/sdc-controllers-config.json index df73a504f..bf1a758a8 100644 --- a/src/main/resources/clds/sdc-controllers-config.json +++ b/src/main/resources/clds/sdc-controllers-config.json @@ -5,10 +5,11 @@ "consumerGroup": "consumerGroup1", "consumerId": "consumerId1", "environmentName": "environmentName1", - "sdcAddress": "hostname1", + "sdcAddress": "sdc.api.simpledemo.onap.org:8080", "password": "bb3871669d893c7fb8aaacda31b77b4f537E67A081C2726889548ED7BC4C2DE6", "pollingInterval":10, - "pollingTimeout":30 + "pollingTimeout":30, + "messageBusAddresses":["localhost"] }, "sdc-controller2":{ @@ -16,10 +17,11 @@ "consumerGroup": "consumerGroup2", "consumerId": "consumerId2", "environmentName": "environmentName2", - "sdcAddress": "hostname2", + "sdcAddress": "sdc.api.simpledemo.onap.org:8080", "password": "bb3871669d893c7fb8aaacda31b77b4f537E67A081C2726889548ED7BC4C2DE6", "pollingInterval":10, - "pollingTimeout":30 + "pollingTimeout":30, + "messageBusAddresses":["localhost"] } } diff --git a/src/test/java/org/onap/clamp/clds/config/sdc/SdcSingleControllerConfigurationTest.java b/src/test/java/org/onap/clamp/clds/config/sdc/SdcSingleControllerConfigurationTest.java index ecef30ee4..dd60d2796 100644 --- a/src/test/java/org/onap/clamp/clds/config/sdc/SdcSingleControllerConfigurationTest.java +++ b/src/test/java/org/onap/clamp/clds/config/sdc/SdcSingleControllerConfigurationTest.java @@ -20,6 +20,7 @@ package org.onap.clamp.clds.config.sdc; +import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -65,6 +66,9 @@ public class SdcSingleControllerConfigurationTest { sdcConfig.getRelevantArtifactTypes().size()); assertTrue(sdcConfig.activateServerTLSAuth()); assertEquals("ThePassword", sdcConfig.getKeyStorePassword()); + assertArrayEquals(new String[] { + "localhost" + }, sdcConfig.getMsgBusAddress().toArray()); } @Test(expected = SdcParametersException.class) @@ -77,6 +81,15 @@ public class SdcSingleControllerConfigurationTest { fail("Should have raised an exception"); } + @Test(expected = SdcParametersException.class) + public final void testAllRequiredParametersAddresses() + throws JsonParseException, JsonMappingException, IOException { + SdcSingleControllerConfiguration sdcConfig = loadControllerConfiguration( + "clds/sdc-controller-config-bad-address.json", "sdc-controller1"); + sdcConfig.testAllRequiredParameters(); + fail("Should have raised an exception"); + } + @Test public final void testConsumerGroupWithNull() throws JsonParseException, JsonMappingException, IOException { SdcSingleControllerConfiguration sdcConfig = loadControllerConfiguration("clds/sdc-controller-config-NULL.json", diff --git a/src/test/resources/clds/sdc-controller-config-TLS.json b/src/test/resources/clds/sdc-controller-config-TLS.json index d7642e6b1..066448ee3 100644 --- a/src/test/resources/clds/sdc-controller-config-TLS.json +++ b/src/test/resources/clds/sdc-controller-config-TLS.json @@ -8,6 +8,7 @@ "pollingInterval":10, "pollingTimeout":30, "activateServerTLSAuth": true, - "keyStorePassword":"bb3871669d893c7fb8aaacda31b77b4f537E67A081C2726889548ED7BC4C2DE6", - "keyStorePath": "/test" + "keyStorePassword":"bb3871669d893c7fb8aaacda31b77b4f537E67A081C2726889548ED7BC4C2DE6", + "keyStorePath": "/test", + "messageBusAddresses":["localhost"] } diff --git a/src/test/resources/clds/sdc-controller-config-bad-address.json b/src/test/resources/clds/sdc-controller-config-bad-address.json new file mode 100644 index 000000000..6775c6b3c --- /dev/null +++ b/src/test/resources/clds/sdc-controller-config-bad-address.json @@ -0,0 +1,12 @@ +{ + "user": "User", + "consumerGroup": "consumerGroup", + "consumerId": "consumerId", + "environmentName": "environmentName", + "password": "bb3871669d893c7fb8aaacda31b77b4f537E67A081C2726889548ED7BC4C2DE6", + "pollingInterval":10, + "pollingTimeout":30, + "activateServerTLSAuth": true, + "keyStorePassword":"bb3871669d893c7fb8aaacda31b77b4f537E67A081C2726889548ED7BC4C2DE6", + "keyStorePath": "/test" +} diff --git a/src/test/resources/clds/sdc-controllers-config.json b/src/test/resources/clds/sdc-controllers-config.json index df73a504f..ce56fef27 100644 --- a/src/test/resources/clds/sdc-controllers-config.json +++ b/src/test/resources/clds/sdc-controllers-config.json @@ -5,21 +5,22 @@ "consumerGroup": "consumerGroup1", "consumerId": "consumerId1", "environmentName": "environmentName1", - "sdcAddress": "hostname1", + "sdcAddress": "localhost:${docker.http-cache.port.host}", "password": "bb3871669d893c7fb8aaacda31b77b4f537E67A081C2726889548ED7BC4C2DE6", "pollingInterval":10, - "pollingTimeout":30 - + "pollingTimeout":30, + "messageBusAddresses":["localhost"] }, "sdc-controller2":{ "user": "User2", "consumerGroup": "consumerGroup2", "consumerId": "consumerId2", "environmentName": "environmentName2", - "sdcAddress": "hostname2", + "sdcAddress": "localhost:${docker.http-cache.port.host}", "password": "bb3871669d893c7fb8aaacda31b77b4f537E67A081C2726889548ED7BC4C2DE6", "pollingInterval":10, - "pollingTimeout":30 + "pollingTimeout":30, + "messageBusAddresses":["localhost"] } } -- cgit 1.2.3-korg From dd2d790dd97ec4260531bc1fdce5766bf85797d8 Mon Sep 17 00:00:00 2001 From: "Determe, Sebastien (sd378r)" Date: Fri, 6 Apr 2018 11:48:07 +0200 Subject: Update SDC library Upgrade SDC library to latest and remove the message bus condition, it's now a mandatory parameter as well Issue-ID: CLAMP-149 Change-Id: I4c7ddcca6ac176380821bd8f1e4e3ef3d9fcea30 Signed-off-by: Determe, Sebastien (sd378r) --- pom.xml | 8 +++--- .../sdc/SdcSingleControllerConfiguration.java | 14 +++++----- .../sdc/controller/DistributionStatusMessage.java | 4 +-- .../clds/sdc/controller/SdcSingleController.java | 22 ++++++++-------- .../clds/sdc/controller/installer/CsarHandler.java | 14 +++++----- .../resources/clds/sdc-controllers-config.json | 30 ++++++++-------------- .../sdc/SdcSingleControllerConfigurationTest.java | 11 ++++---- .../sdc/controller/installer/CsarHandlerTest.java | 10 ++++---- .../resources/clds/sdc-controller-config-NULL.json | 5 ++-- .../resources/clds/sdc-controller-config-TLS.json | 2 +- .../clds/sdc-controller-config-bad-address.json | 12 --------- .../resources/clds/sdc-controller-config-bad.json | 2 +- .../sdc-controller-config-empty-encrypted.json | 14 ++++++++++ 13 files changed, 71 insertions(+), 77 deletions(-) delete mode 100644 src/test/resources/clds/sdc-controller-config-bad-address.json create mode 100644 src/test/resources/clds/sdc-controller-config-empty-encrypted.json (limited to 'src/test/resources/clds') diff --git a/pom.xml b/pom.xml index 007b6605e..608702997 100644 --- a/pom.xml +++ b/pom.xml @@ -479,14 +479,14 @@ - org.openecomp.sdc.sdc-distribution-client + org.onap.sdc.sdc-distribution-client sdc-distribution-client - 1.2.2 + 1.3.0 - org.openecomp.sdc.sdc-tosca + org.onap.sdc.sdc-tosca sdc-tosca - 1.2.2 + 1.3.3 diff --git a/src/main/java/org/onap/clamp/clds/config/sdc/SdcSingleControllerConfiguration.java b/src/main/java/org/onap/clamp/clds/config/sdc/SdcSingleControllerConfiguration.java index e2aac55f1..bc3d1b986 100644 --- a/src/main/java/org/onap/clamp/clds/config/sdc/SdcSingleControllerConfiguration.java +++ b/src/main/java/org/onap/clamp/clds/config/sdc/SdcSingleControllerConfiguration.java @@ -36,7 +36,7 @@ import java.util.List; import org.apache.commons.codec.DecoderException; import org.onap.clamp.clds.exception.sdc.controller.SdcParametersException; import org.onap.clamp.clds.util.CryptoUtils; -import org.openecomp.sdc.api.consumer.IConfiguration; +import org.onap.sdc.api.consumer.IConfiguration; /** * This class maps the SDC config JSON for one controller. @@ -129,8 +129,8 @@ public class SdcSingleControllerConfiguration implements IConfiguration { private String getEncryptedStringConfig(String key) throws GeneralSecurityException, DecoderException { if (jsonRootNode != null && jsonRootNode.get(key) != null) { - String config = CryptoUtils.decrypt(jsonRootNode.get(key).asText()); - return config.isEmpty() ? null : config; + return jsonRootNode.get(key).asText().isEmpty() ? null + : CryptoUtils.decrypt(jsonRootNode.get(key).asText()); } return null; } @@ -241,10 +241,10 @@ public class SdcSingleControllerConfiguration implements IConfiguration { throw new SdcParametersException(ENVIRONMENT_NAME_ATTRIBUTE_NAME + errorMessageKeyNotFound); } if (this.getAsdcAddress() == null || this.getAsdcAddress().isEmpty()) { - if (this.getMsgBusAddress() == null || this.getMsgBusAddress().isEmpty()) { - throw new SdcParametersException(SDC_ADDRESS_ATTRIBUTE_NAME + " and " + MESSAGE_BUS_ADDRESSES - + " are not set, one of them should be set for SDC client" + errorMessageKeyNotFound); - } + throw new SdcParametersException(SDC_ADDRESS_ATTRIBUTE_NAME + errorMessageKeyNotFound); + } + if (this.getMsgBusAddress() == null || this.getMsgBusAddress().isEmpty()) { + throw new SdcParametersException(MESSAGE_BUS_ADDRESSES + errorMessageKeyNotFound); } if (this.getPassword() == null || this.getPassword().isEmpty()) { throw new SdcParametersException(SDC_KEY_ATTRIBUTE_NAME + errorMessageKeyNotFound); diff --git a/src/main/java/org/onap/clamp/clds/sdc/controller/DistributionStatusMessage.java b/src/main/java/org/onap/clamp/clds/sdc/controller/DistributionStatusMessage.java index db5d271b0..ca4f97b1d 100644 --- a/src/main/java/org/onap/clamp/clds/sdc/controller/DistributionStatusMessage.java +++ b/src/main/java/org/onap/clamp/clds/sdc/controller/DistributionStatusMessage.java @@ -23,8 +23,8 @@ package org.onap.clamp.clds.sdc.controller; -import org.openecomp.sdc.api.consumer.IDistributionStatusMessage; -import org.openecomp.sdc.utils.DistributionStatusEnum; +import org.onap.sdc.api.consumer.IDistributionStatusMessage; +import org.onap.sdc.utils.DistributionStatusEnum; public class DistributionStatusMessage implements IDistributionStatusMessage { diff --git a/src/main/java/org/onap/clamp/clds/sdc/controller/SdcSingleController.java b/src/main/java/org/onap/clamp/clds/sdc/controller/SdcSingleController.java index c02edbbf9..2744ef7ae 100644 --- a/src/main/java/org/onap/clamp/clds/sdc/controller/SdcSingleController.java +++ b/src/main/java/org/onap/clamp/clds/sdc/controller/SdcSingleController.java @@ -38,17 +38,17 @@ import org.onap.clamp.clds.exception.sdc.controller.SdcParametersException; import org.onap.clamp.clds.sdc.controller.installer.CsarHandler; import org.onap.clamp.clds.sdc.controller.installer.CsarInstaller; import org.onap.clamp.clds.util.LoggingUtils; -import org.openecomp.sdc.api.IDistributionClient; -import org.openecomp.sdc.api.consumer.IDistributionStatusMessage; -import org.openecomp.sdc.api.consumer.INotificationCallback; -import org.openecomp.sdc.api.notification.IArtifactInfo; -import org.openecomp.sdc.api.notification.INotificationData; -import org.openecomp.sdc.api.results.IDistributionClientDownloadResult; -import org.openecomp.sdc.api.results.IDistributionClientResult; -import org.openecomp.sdc.impl.DistributionClientFactory; -import org.openecomp.sdc.tosca.parser.exceptions.SdcToscaParserException; -import org.openecomp.sdc.utils.DistributionActionResultEnum; -import org.openecomp.sdc.utils.DistributionStatusEnum; +import org.onap.sdc.api.IDistributionClient; +import org.onap.sdc.api.consumer.IDistributionStatusMessage; +import org.onap.sdc.api.consumer.INotificationCallback; +import org.onap.sdc.api.notification.IArtifactInfo; +import org.onap.sdc.api.notification.INotificationData; +import org.onap.sdc.api.results.IDistributionClientDownloadResult; +import org.onap.sdc.api.results.IDistributionClientResult; +import org.onap.sdc.impl.DistributionClientFactory; +import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException; +import org.onap.sdc.utils.DistributionActionResultEnum; +import org.onap.sdc.utils.DistributionStatusEnum; /** * This class handles one sdc controller defined in the config. diff --git a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarHandler.java b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarHandler.java index 97ab05868..2b83905a8 100644 --- a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarHandler.java +++ b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarHandler.java @@ -41,13 +41,13 @@ import java.util.zip.ZipFile; import org.onap.clamp.clds.exception.sdc.controller.CsarHandlerException; import org.onap.clamp.clds.exception.sdc.controller.SdcArtifactInstallerException; -import org.openecomp.sdc.api.notification.IArtifactInfo; -import org.openecomp.sdc.api.notification.INotificationData; -import org.openecomp.sdc.api.notification.IResourceInstance; -import org.openecomp.sdc.api.results.IDistributionClientDownloadResult; -import org.openecomp.sdc.tosca.parser.api.ISdcCsarHelper; -import org.openecomp.sdc.tosca.parser.exceptions.SdcToscaParserException; -import org.openecomp.sdc.tosca.parser.impl.SdcToscaParserFactory; +import org.onap.sdc.api.notification.IArtifactInfo; +import org.onap.sdc.api.notification.INotificationData; +import org.onap.sdc.api.notification.IResourceInstance; +import org.onap.sdc.api.results.IDistributionClientDownloadResult; +import org.onap.sdc.tosca.parser.api.ISdcCsarHelper; +import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException; +import org.onap.sdc.tosca.parser.impl.SdcToscaParserFactory; /** * CsarDescriptor that will be used to deploy file in CLAMP file system. Some diff --git a/src/main/resources/clds/sdc-controllers-config.json b/src/main/resources/clds/sdc-controllers-config.json index bf1a758a8..d18a161a5 100644 --- a/src/main/resources/clds/sdc-controllers-config.json +++ b/src/main/resources/clds/sdc-controllers-config.json @@ -1,28 +1,18 @@ { "sdc-connections":{ - "sdc-controller1":{ - "user": "User1", + "sdc-controller":{ + "user": "clamp", "consumerGroup": "consumerGroup1", "consumerId": "consumerId1", - "environmentName": "environmentName1", - "sdcAddress": "sdc.api.simpledemo.onap.org:8080", - "password": "bb3871669d893c7fb8aaacda31b77b4f537E67A081C2726889548ED7BC4C2DE6", - "pollingInterval":10, + "environmentName": "AUTO", + "sdcAddress": "sdc.api.simpledemo.onap.org:8443", + "password": "b7acccda32b98c5bb7acccda32b98c5b05D511BD6D93626E90D18E9D24D9B78CD34C7EE8012F0A189A28763E82271E50A5D4EC10C7D93E06E0A2D27CAE66B981", + "pollingInterval":30, "pollingTimeout":30, - "messageBusAddresses":["localhost"] - - }, - "sdc-controller2":{ - "user": "User2", - "consumerGroup": "consumerGroup2", - "consumerId": "consumerId2", - "environmentName": "environmentName2", - "sdcAddress": "sdc.api.simpledemo.onap.org:8080", - "password": "bb3871669d893c7fb8aaacda31b77b4f537E67A081C2726889548ED7BC4C2DE6", - "pollingInterval":10, - "pollingTimeout":30, - "messageBusAddresses":["localhost"] - + "activateServerTLSAuth":"false", + "keyStorePassword":"", + "keyStorePath":"", + "messageBusAddresses":["ueb.api.simpledemo.onap.org"] } } } diff --git a/src/test/java/org/onap/clamp/clds/config/sdc/SdcSingleControllerConfigurationTest.java b/src/test/java/org/onap/clamp/clds/config/sdc/SdcSingleControllerConfigurationTest.java index dd60d2796..00d5dffbb 100644 --- a/src/test/java/org/onap/clamp/clds/config/sdc/SdcSingleControllerConfigurationTest.java +++ b/src/test/java/org/onap/clamp/clds/config/sdc/SdcSingleControllerConfigurationTest.java @@ -22,6 +22,7 @@ package org.onap.clamp.clds.config.sdc; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -59,7 +60,7 @@ public class SdcSingleControllerConfigurationTest { assertEquals("consumerGroup", sdcConfig.getConsumerGroup()); assertEquals("consumerId", sdcConfig.getConsumerID()); assertEquals("environmentName", sdcConfig.getEnvironmentName()); - assertEquals("hostname", sdcConfig.getAsdcAddress()); + assertEquals("hostname:8080", sdcConfig.getAsdcAddress()); assertEquals(10, sdcConfig.getPollingInterval()); assertEquals(30, sdcConfig.getPollingTimeout()); assertEquals(SdcSingleControllerConfiguration.SUPPORTED_ARTIFACT_TYPES_LIST.size(), @@ -81,13 +82,13 @@ public class SdcSingleControllerConfigurationTest { fail("Should have raised an exception"); } - @Test(expected = SdcParametersException.class) - public final void testAllRequiredParametersAddresses() + @Test + public final void testAllRequiredParametersEmptyEncrypted() throws JsonParseException, JsonMappingException, IOException { SdcSingleControllerConfiguration sdcConfig = loadControllerConfiguration( - "clds/sdc-controller-config-bad-address.json", "sdc-controller1"); + "clds/sdc-controller-config-empty-encrypted.json", "sdc-controller1"); sdcConfig.testAllRequiredParameters(); - fail("Should have raised an exception"); + assertNull(sdcConfig.getKeyStorePassword()); } @Test diff --git a/src/test/java/org/onap/clamp/clds/sdc/controller/installer/CsarHandlerTest.java b/src/test/java/org/onap/clamp/clds/sdc/controller/installer/CsarHandlerTest.java index 5486e652b..46bddaf4f 100644 --- a/src/test/java/org/onap/clamp/clds/sdc/controller/installer/CsarHandlerTest.java +++ b/src/test/java/org/onap/clamp/clds/sdc/controller/installer/CsarHandlerTest.java @@ -43,11 +43,11 @@ import org.mockito.Mockito; import org.onap.clamp.clds.exception.sdc.controller.CsarHandlerException; import org.onap.clamp.clds.exception.sdc.controller.SdcArtifactInstallerException; import org.onap.clamp.clds.util.ResourceFileUtil; -import org.openecomp.sdc.api.notification.IArtifactInfo; -import org.openecomp.sdc.api.notification.INotificationData; -import org.openecomp.sdc.api.notification.IResourceInstance; -import org.openecomp.sdc.api.results.IDistributionClientDownloadResult; -import org.openecomp.sdc.tosca.parser.exceptions.SdcToscaParserException; +import org.onap.sdc.api.notification.IArtifactInfo; +import org.onap.sdc.api.notification.INotificationData; +import org.onap.sdc.api.notification.IResourceInstance; +import org.onap.sdc.api.results.IDistributionClientDownloadResult; +import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException; public class CsarHandlerTest { diff --git a/src/test/resources/clds/sdc-controller-config-NULL.json b/src/test/resources/clds/sdc-controller-config-NULL.json index 5c8ec0cfe..bf310c706 100644 --- a/src/test/resources/clds/sdc-controller-config-NULL.json +++ b/src/test/resources/clds/sdc-controller-config-NULL.json @@ -3,8 +3,9 @@ "consumerGroup": "NULL", "consumerId": "consumerId", "environmentName": "environmentName", - "sdcAddress": "hostname", + "sdcAddress": "hostname:8080", "password": "bb3871669d893c7fb8aaacda31b77b4f537E67A081C2726889548ED7BC4C2DE6", "pollingInterval":10, - "pollingTimeout":30 + "pollingTimeout":30, + "messageBusAddresses":["localhost"] } diff --git a/src/test/resources/clds/sdc-controller-config-TLS.json b/src/test/resources/clds/sdc-controller-config-TLS.json index 066448ee3..99366b765 100644 --- a/src/test/resources/clds/sdc-controller-config-TLS.json +++ b/src/test/resources/clds/sdc-controller-config-TLS.json @@ -3,7 +3,7 @@ "consumerGroup": "consumerGroup", "consumerId": "consumerId", "environmentName": "environmentName", - "sdcAddress": "hostname", + "sdcAddress": "hostname:8080", "password": "bb3871669d893c7fb8aaacda31b77b4f537E67A081C2726889548ED7BC4C2DE6", "pollingInterval":10, "pollingTimeout":30, diff --git a/src/test/resources/clds/sdc-controller-config-bad-address.json b/src/test/resources/clds/sdc-controller-config-bad-address.json deleted file mode 100644 index 6775c6b3c..000000000 --- a/src/test/resources/clds/sdc-controller-config-bad-address.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "user": "User", - "consumerGroup": "consumerGroup", - "consumerId": "consumerId", - "environmentName": "environmentName", - "password": "bb3871669d893c7fb8aaacda31b77b4f537E67A081C2726889548ED7BC4C2DE6", - "pollingInterval":10, - "pollingTimeout":30, - "activateServerTLSAuth": true, - "keyStorePassword":"bb3871669d893c7fb8aaacda31b77b4f537E67A081C2726889548ED7BC4C2DE6", - "keyStorePath": "/test" -} diff --git a/src/test/resources/clds/sdc-controller-config-bad.json b/src/test/resources/clds/sdc-controller-config-bad.json index d99ed5801..194ff5f4b 100644 --- a/src/test/resources/clds/sdc-controller-config-bad.json +++ b/src/test/resources/clds/sdc-controller-config-bad.json @@ -5,7 +5,7 @@ "consumerGroup": "consumerGroup", "consumerId": "consumerId", "environmentName": "environmentName", - "sdcAddress": "hostname1", + "sdcAddress": "hostname1:8080", "pollingInterval": 10, "pollingTimeout": 30 } diff --git a/src/test/resources/clds/sdc-controller-config-empty-encrypted.json b/src/test/resources/clds/sdc-controller-config-empty-encrypted.json new file mode 100644 index 000000000..2a70b9edc --- /dev/null +++ b/src/test/resources/clds/sdc-controller-config-empty-encrypted.json @@ -0,0 +1,14 @@ +{ + "user": "User", + "consumerGroup": "consumerGroup", + "consumerId": "consumerId", + "environmentName": "environmentName", + "sdcAddress": "hostname:8080", + "password": "bb3871669d893c7fb8aaacda31b77b4f537E67A081C2726889548ED7BC4C2DE6", + "pollingInterval":10, + "pollingTimeout":30, + "activateServerTLSAuth": true, + "keyStorePassword":"", + "keyStorePath": "/test", + "messageBusAddresses":["localhost"] +} -- cgit 1.2.3-korg From 42765b28e9008a0932ddf0300b2f77bcf8deaae3 Mon Sep 17 00:00:00 2001 From: "Determe, Sebastien (sd378r)" Date: Wed, 28 Mar 2018 17:25:55 +0200 Subject: Improve policy Config Improve the policy configuration file and merge it to application.properties so that all configurations are located at the same place Issue-ID: CLAMP-136 Change-Id: I5654bbe61d483a4061540959ed0b7dbb1242b022 Signed-off-by: Determe, Sebastien (sd378r) --- pom.xml | 12 +- src/main/java/org/onap/clamp/clds/Application.java | 2 + .../clamp/clds/client/req/policy/PolicyClient.java | 11 +- .../clamp/clds/config/PolicyConfiguration.java | 128 +++++++++++++++++++++ src/main/resources/application.properties | 17 ++- .../resources/clds/clds-policy-config.properties | 37 ------ .../org/onap/clamp/clds/it/PolicyClientItCase.java | 31 +++++ src/test/resources/application.properties | 14 +++ .../resources/clds/clds-policy-config.properties | 37 ------ 9 files changed, 201 insertions(+), 88 deletions(-) create mode 100644 src/main/java/org/onap/clamp/clds/config/PolicyConfiguration.java delete mode 100644 src/main/resources/clds/clds-policy-config.properties delete mode 100644 src/test/resources/clds/clds-policy-config.properties (limited to 'src/test/resources/clds') diff --git a/pom.xml b/pom.xml index 4b19b808f..b801e0f45 100644 --- a/pom.xml +++ b/pom.xml @@ -306,7 +306,7 @@ org.onap.policy.engine PolicyEngineAPI - 1.1.0 + 1.2.0 com.google.guava @@ -337,7 +337,7 @@ org.onap.policy.common ONAP-Logging - 1.1.0 + 1.1.3 log4j @@ -356,7 +356,7 @@ org.onap.policy.engine PolicyEngineUtils - 1.1.0 + 1.1.3 log4j @@ -387,7 +387,7 @@ org.onap.policy.drools-applications policy-yaml - 1.1.0 + 1.1.3 log4j @@ -406,7 +406,7 @@ org.onap.policy.drools-applications sdc - 1.1.0 + 1.1.3 log4j @@ -425,7 +425,7 @@ org.onap.policy.drools-applications aai - 1.1.0 + 1.1.3 log4j diff --git a/src/main/java/org/onap/clamp/clds/Application.java b/src/main/java/org/onap/clamp/clds/Application.java index 9d057b583..ae8b6d82b 100644 --- a/src/main/java/org/onap/clamp/clds/Application.java +++ b/src/main/java/org/onap/clamp/clds/Application.java @@ -42,6 +42,7 @@ import org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory; import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory; +import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.boot.web.support.SpringBootServletInitializer; import org.springframework.context.annotation.Bean; @@ -56,6 +57,7 @@ import org.springframework.scheduling.annotation.EnableAsync; DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class, JpaRepositoriesAutoConfiguration.class, SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class }) +@EnableConfigurationProperties @EnableAsync public class Application extends SpringBootServletInitializer { diff --git a/src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java b/src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java index 8caac0c7d..5c68f00b9 100644 --- a/src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java +++ b/src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java @@ -26,7 +26,6 @@ package org.onap.clamp.clds.client.req.policy; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; -import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -38,6 +37,7 @@ import java.util.UUID; import javax.ws.rs.BadRequestException; import org.onap.clamp.clds.config.ClampProperties; +import org.onap.clamp.clds.config.PolicyConfiguration; import org.onap.clamp.clds.exception.policy.PolicyClientException; import org.onap.clamp.clds.model.properties.ModelProperties; import org.onap.clamp.clds.util.LoggingUtils; @@ -55,7 +55,6 @@ import org.onap.policy.api.PolicyParameters; import org.onap.policy.api.PolicyType; import org.onap.policy.api.PushPolicyParameters; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Component; @@ -71,12 +70,12 @@ public class PolicyClient { protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); protected static final String POLICY_MSTYPE_PROPERTY_NAME = "policy.ms.type"; protected static final String POLICY_ONAPNAME_PROPERTY_NAME = "policy.onap.name"; - @Value("${clamp.config.files.cldsPolicyConfig:'classpath:/clds/clds-policy-config.properties'}") - protected String cldsPolicyConfigFile; @Autowired protected ApplicationContext appContext; @Autowired protected ClampProperties refProp; + @Autowired + private PolicyConfiguration policyConfiguration; /** * Perform BRMS policy type. @@ -353,9 +352,7 @@ public class PolicyClient { private PolicyEngine getPolicyEngine() { PolicyEngine policyEngine; try { - policyEngine = new PolicyEngine(appContext.getResource(cldsPolicyConfigFile).getFile().getAbsolutePath()); - } catch (IOException e1) { - throw new PolicyClientException("Exception when opening policy config file", e1); + policyEngine = new PolicyEngine(policyConfiguration.getProperties()); } catch (PolicyEngineException e) { throw new PolicyClientException("Exception when creating a new policy engine", e); } diff --git a/src/main/java/org/onap/clamp/clds/config/PolicyConfiguration.java b/src/main/java/org/onap/clamp/clds/config/PolicyConfiguration.java new file mode 100644 index 000000000..53899d5e5 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/config/PolicyConfiguration.java @@ -0,0 +1,128 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2018 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.config; + +import java.util.Properties; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationProperties(prefix = "clamp.config.policy") +public class PolicyConfiguration { + + public static final String PDP_URL1 = "PDP_URL1"; + public static final String PDP_URL2 = "PDP_URL2"; + public static final String PAP_URL = "PAP_URL"; + public static final String NOTIFICATION_TYPE = "NOTIFICATION_TYPE"; + public static final String NOTIFICATION_UEB_SERVERS = "NOTIFICATION_UEB_SERVERS"; + public static final String CLIENT_ID = "CLIENT_ID"; + public static final String CLIENT_KEY = "CLIENT_KEY"; + public static final String ENVIRONMENT = "ENVIRONMENT"; + private String pdpUrl1; + private String pdpUrl2; + private String papUrl; + private String notificationType; + private String notificationUebServers; + private String clientId; + private String clientKey; + private String policyEnvironment; + + public String getPdpUrl1() { + return pdpUrl1; + } + + public void setPdpUrl1(String pdpUrl1) { + this.pdpUrl1 = pdpUrl1; + } + + public String getPdpUrl2() { + return pdpUrl2; + } + + public void setPdpUrl2(String pdpUrl2) { + this.pdpUrl2 = pdpUrl2; + } + + public String getPapUrl() { + return papUrl; + } + + public void setPapUrl(String papUrl) { + this.papUrl = papUrl; + } + + public String getNotificationType() { + return notificationType; + } + + public void setNotificationType(String notificationType) { + this.notificationType = notificationType; + } + + public String getNotificationUebServers() { + return notificationUebServers; + } + + public void setNotificationUebServers(String notificationUebServers) { + this.notificationUebServers = notificationUebServers; + } + + public String getClientId() { + return clientId; + } + + public void setClientId(String clientId) { + this.clientId = clientId; + } + + public String getClientKey() { + return clientKey; + } + + public void setClientKey(String clientKey) { + this.clientKey = clientKey; + } + + public String getPolicyEnvironment() { + return policyEnvironment; + } + + public void setPolicyEnvironment(String environment) { + this.policyEnvironment = environment; + } + + public Properties getProperties() { + Properties prop = new Properties(); + prop.put(PDP_URL1, pdpUrl1); + prop.put(PDP_URL2, pdpUrl2); + prop.put(PAP_URL, papUrl); + prop.put(NOTIFICATION_TYPE, notificationType); + prop.put(NOTIFICATION_UEB_SERVERS, notificationUebServers); + prop.put(CLIENT_ID, clientId); + prop.put(CLIENT_KEY, clientKey); + prop.put(ENVIRONMENT, policyEnvironment); + return prop; + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 5f6a0d659..1411b8b2b 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -124,6 +124,21 @@ clamp.config.sdc.template=classpath:/clds/templates/sdc-template.json clamp.config.sdc.decode.service_ids=classpath:/clds/templates/sdc-decode-service_ids.json # # +# Configuration Settings for Policy Engine Components +clamp.config.policy.pdpUrl1=http://vm1.policy.simpledemo.onap.org:8081/pdp/ , testpdp, alpha123 +clamp.config.policy.pdpUrl2=http://vm1.policy.simpledemo.onap.org:8081/pdp/ , testpdp, alpha123 +clamp.config.policy.papUrl=http://vm1.policy.simpledemo.onap.org:8081/pap/ , testpap, alpha123 +clamp.config.policy.notificationType=websocket +clamp.config.policy.notificationUebServers=localhost +clamp.config.policy.notificationTopic= +clamp.config.policy.clientId=myclientid +# base64 encoding + +clamp.config.policy.clientKey=5CE79532B3A2CB4D132FC0C04BF916A7 +#DEVL for development +#TEST for Test environments +#PROD for prod environments +clamp.config.policy.policyEnvironment=TEST # General Policy request properties # clamp.config.policy.onap.name=DCAE @@ -203,4 +218,4 @@ clamp.config.security.permission.type.cl.event=permission-type-cl-event clamp.config.security.permission.type.filter.vf=permission-type-filter-vf clamp.config.security.permission.type.template=permission-type-template #This one indicates the type of instances (dev|prod|perf...), this must be set accordingly in clds-users.properties -clamp.config.security.permission.instance=dev \ No newline at end of file +clamp.config.security.permission.instance=dev diff --git a/src/main/resources/clds/clds-policy-config.properties b/src/main/resources/clds/clds-policy-config.properties deleted file mode 100644 index 54b927727..000000000 --- a/src/main/resources/clds/clds-policy-config.properties +++ /dev/null @@ -1,37 +0,0 @@ -### -# ============LICENSE_START======================================================= -# ONAP CLAMP -# ================================================================================ -# Copyright (C) 2017 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============================================ -# =================================================================== -# ECOMP is a trademark and service mark of AT&T Intellectual Property. -### - -# Configuration Settings for Policy Engine Components -PDP_URL1=http://vm1.policy.simpledemo.onap.org:8081/pdp/ , testpdp, alpha123 -PDP_URL2=http://vm1.policy.simpledemo.onap.org:8081/pdp/ , testpdp, alpha123 -NOTIFICATION_TYPE=websocket -NOTIFICATION_UEB_SERVERS=localhost -NOTIFICATION_TOPIC= -CLIENT_ID=myclientid -# base64 encoding -#CLIENT_KEY=ChlakDuk -CLIENT_KEY=5CE79532B3A2CB4D132FC0C04BF916A7 -#DEVL for development -#TEST for Test environments -#PROD for prod environments -ENVIRONMENT=TEST \ No newline at end of file diff --git a/src/test/java/org/onap/clamp/clds/it/PolicyClientItCase.java b/src/test/java/org/onap/clamp/clds/it/PolicyClientItCase.java index 71cd9f6b8..c7f0f2871 100644 --- a/src/test/java/org/onap/clamp/clds/it/PolicyClientItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/PolicyClientItCase.java @@ -23,6 +23,8 @@ package org.onap.clamp.clds.it; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.io.IOException; @@ -37,6 +39,7 @@ import org.onap.clamp.clds.client.req.policy.OperationalPolicyReq; import org.onap.clamp.clds.client.req.policy.PolicyClient; import org.onap.clamp.clds.client.req.tca.TcaRequestFormatter; import org.onap.clamp.clds.config.ClampProperties; +import org.onap.clamp.clds.config.PolicyConfiguration; import org.onap.clamp.clds.model.CldsEvent; import org.onap.clamp.clds.model.properties.ModelProperties; import org.onap.clamp.clds.model.properties.Policy; @@ -56,6 +59,8 @@ import org.springframework.test.context.junit4.SpringRunner; @SpringBootTest public class PolicyClientItCase { + @Autowired + private PolicyConfiguration policyConfiguration; @Autowired private ClampProperties refProp; @Autowired @@ -144,4 +149,30 @@ public class PolicyClientItCase { TimeUnit.SECONDS.sleep(20); deleteTcaPolicy(CldsEvent.ACTION_DELETE); } + + @Test + public void testPolicyConfiguration() { + assertNotNull(policyConfiguration.getPdpUrl1()); + assertNotNull(policyConfiguration.getPdpUrl2()); + assertNotNull(policyConfiguration.getPapUrl()); + assertNotNull(policyConfiguration.getPolicyEnvironment()); + assertNotNull(policyConfiguration.getClientId()); + assertNotNull(policyConfiguration.getClientKey()); + assertNotNull(policyConfiguration.getNotificationType()); + assertNotNull(policyConfiguration.getNotificationUebServers()); + assertEquals(8, policyConfiguration.getProperties().size()); + assertTrue(((String) policyConfiguration.getProperties().get(PolicyConfiguration.PDP_URL1)) + .contains("/pdp/ , testpdp, alpha123")); + assertTrue(((String) policyConfiguration.getProperties().get(PolicyConfiguration.PDP_URL2)) + .contains("/pdp/ , testpdp, alpha123")); + assertTrue(((String) policyConfiguration.getProperties().get(PolicyConfiguration.PAP_URL)) + .contains("/pap/ , testpap, alpha123")); + assertEquals("websocket", policyConfiguration.getProperties().get(PolicyConfiguration.NOTIFICATION_TYPE)); + assertEquals("localhost", + policyConfiguration.getProperties().get(PolicyConfiguration.NOTIFICATION_UEB_SERVERS)); + assertEquals("myclientid", policyConfiguration.getProperties().get(PolicyConfiguration.CLIENT_ID)); + assertEquals("5CE79532B3A2CB4D132FC0C04BF916A7", + policyConfiguration.getProperties().get(PolicyConfiguration.CLIENT_KEY)); + assertEquals("DEVL", policyConfiguration.getProperties().get(PolicyConfiguration.ENVIRONMENT)); + } } diff --git a/src/test/resources/application.properties b/src/test/resources/application.properties index 37f9bd7eb..676c5b9ac 100644 --- a/src/test/resources/application.properties +++ b/src/test/resources/application.properties @@ -124,6 +124,20 @@ clamp.config.sdc.template=classpath:/clds/templates/sdc-template.json clamp.config.sdc.decode.service_ids=classpath:/clds/templates/sdc-decode-service_ids.json # # +# Configuration Settings for Policy Engine Components +clamp.config.policy.pdpUrl1=http://localhost:${docker.http-cache.port.host}/pdp/ , testpdp, alpha123 +clamp.config.policy.pdpUrl2=http://localhost:${docker.http-cache.port.host}/pdp/ , testpdp, alpha123 +clamp.config.policy.papUrl=http://localhost:${docker.http-cache.port.host}/pap/ , testpap, alpha123 +clamp.config.policy.notificationType=websocket +clamp.config.policy.notificationUebServers=localhost +clamp.config.policy.notificationTopic= +clamp.config.policy.clientId=myclientid +# base64 encoding +clamp.config.policy.clientKey=5CE79532B3A2CB4D132FC0C04BF916A7 +#DEVL for development +#TEST for Test environments +#PROD for prod environments +clamp.config.policy.policyEnvironment=DEVL # General Policy request properties # clamp.config.policy.onap.name=DCAE diff --git a/src/test/resources/clds/clds-policy-config.properties b/src/test/resources/clds/clds-policy-config.properties deleted file mode 100644 index 892cdda07..000000000 --- a/src/test/resources/clds/clds-policy-config.properties +++ /dev/null @@ -1,37 +0,0 @@ -### -# ============LICENSE_START======================================================= -# ONAP CLAMP -# ================================================================================ -# Copyright (C) 2017 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============================================ -# =================================================================== -# ECOMP is a trademark and service mark of AT&T Intellectual Property. -### - -# Configuration Settings for Policy Engine Components -PDP_URL1=https://localhost:8081/pdp/ , testpdp, alpha123 -PDP_URL2=https://localhost:8081/pdp/ , testpdp, alpha456 -PAP_URL=https://localhost:8081/pap/ , testpap, alpha123 -NOTIFICATION_TYPE=websocket -NOTIFICATION_UEB_SERVERS=localhost - -CLIENT_ID=myclientid -# base64 encoding -CLIENT_KEY=ChlakDuk -#DEVL for development -#TEST for Test environments -#PROD for prod environments -ENVIRONMENT=DEVL -- cgit 1.2.3-korg From 39b4c05acbd6cf28febc694c9575bc63df3d17a6 Mon Sep 17 00:00:00 2001 From: "Determe, Sebastien (sd378r)" Date: Mon, 16 Apr 2018 14:22:37 +0200 Subject: Set policy scope Change policy scope to CLAMP in policy code and tests Issue-ID: CLAMP-153 Change-Id: I4376e4d1d603033d0b3355d1115a21026d48beec Signed-off-by: Determe, Sebastien (sd378r) --- .../org/onap/clamp/clds/client/req/tca/TcaRequestFormatter.java | 1 - src/main/resources/clds/templates/dcae-template.json | 2 +- src/main/resources/clds/templates/tca-policy-template.json | 5 ++--- src/main/resources/clds/templates/tca-template.json | 2 +- src/test/resources/clds/templates/dcae-template.json | 2 +- src/test/resources/clds/templates/tca-policy-template.json | 5 ++--- src/test/resources/clds/templates/tca-template.json | 2 +- src/test/resources/example/tca-policy-req/blueprint-expected.yaml | 2 +- src/test/resources/example/tca-policy-req/tca-policy-expected.json | 7 +++---- 9 files changed, 12 insertions(+), 16 deletions(-) (limited to 'src/test/resources/clds') diff --git a/src/main/java/org/onap/clamp/clds/client/req/tca/TcaRequestFormatter.java b/src/main/java/org/onap/clamp/clds/client/req/tca/TcaRequestFormatter.java index f51469159..282da983a 100644 --- a/src/main/java/org/onap/clamp/clds/client/req/tca/TcaRequestFormatter.java +++ b/src/main/java/org/onap/clamp/clds/client/req/tca/TcaRequestFormatter.java @@ -72,7 +72,6 @@ public class TcaRequestFormatter { ObjectNode rootNode = (ObjectNode) refProp.getJsonTemplate("tca.policy.template", service); String policyName = modelProperties.getCurrentPolicyScopeAndPolicyName(); rootNode.put("policyName", policyName); - rootNode.put("description", "MicroService vCPE Policy"); ((ObjectNode) rootNode.get("content")).replace("tca_policy", createPolicyContent(refProp, modelProperties, service, policyName, tca)); String tcaPolicyReq = rootNode.toString(); diff --git a/src/main/resources/clds/templates/dcae-template.json b/src/main/resources/clds/templates/dcae-template.json index b7cfb232e..33162971d 100644 --- a/src/main/resources/clds/templates/dcae-template.json +++ b/src/main/resources/clds/templates/dcae-template.json @@ -16,7 +16,7 @@ "closedLoopControlName": "", "closedLoopEventClient": "configuration.dcae.microservice.tca.xml", "policyName": "", - "policyScope": "service=vSCP;resource=F5;type=configuration", + "policyScope": "CLAMP", "policyVersion": "v0.0.1", "serviceConfigurations": { } diff --git a/src/main/resources/clds/templates/tca-policy-template.json b/src/main/resources/clds/templates/tca-policy-template.json index eca4d467c..275b6a4c3 100644 --- a/src/main/resources/clds/templates/tca-policy-template.json +++ b/src/main/resources/clds/templates/tca-policy-template.json @@ -1,12 +1,11 @@ { "service": "tca_policy", - "version": "1.0.0", + "version": "1.1.0", "location": "SampleServiceLocation", "configName": "SampleConfigName", "uuid": "test", - "policyScope": "resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", "templateVersion": "OpenSource.version.1", - "policyName": "MicroServicevCPE", + "policyName": "MicroService", "description": "MicroService Policy", "priority": "1", "riskType": "SampleRiskType", diff --git a/src/main/resources/clds/templates/tca-template.json b/src/main/resources/clds/templates/tca-template.json index 892fc0d62..d2c04bf11 100644 --- a/src/main/resources/clds/templates/tca-template.json +++ b/src/main/resources/clds/templates/tca-template.json @@ -4,7 +4,7 @@ { "eventName": "???", "controlLoopSchemaType": "VNF", - "policyScope": "DCAE", + "policyScope": "CLAMP", "policyName": "???", "policyVersion": "v0.0.1", "thresholds": [ diff --git a/src/test/resources/clds/templates/dcae-template.json b/src/test/resources/clds/templates/dcae-template.json index b7cfb232e..33162971d 100644 --- a/src/test/resources/clds/templates/dcae-template.json +++ b/src/test/resources/clds/templates/dcae-template.json @@ -16,7 +16,7 @@ "closedLoopControlName": "", "closedLoopEventClient": "configuration.dcae.microservice.tca.xml", "policyName": "", - "policyScope": "service=vSCP;resource=F5;type=configuration", + "policyScope": "CLAMP", "policyVersion": "v0.0.1", "serviceConfigurations": { } diff --git a/src/test/resources/clds/templates/tca-policy-template.json b/src/test/resources/clds/templates/tca-policy-template.json index eca4d467c..275b6a4c3 100644 --- a/src/test/resources/clds/templates/tca-policy-template.json +++ b/src/test/resources/clds/templates/tca-policy-template.json @@ -1,12 +1,11 @@ { "service": "tca_policy", - "version": "1.0.0", + "version": "1.1.0", "location": "SampleServiceLocation", "configName": "SampleConfigName", "uuid": "test", - "policyScope": "resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", "templateVersion": "OpenSource.version.1", - "policyName": "MicroServicevCPE", + "policyName": "MicroService", "description": "MicroService Policy", "priority": "1", "riskType": "SampleRiskType", diff --git a/src/test/resources/clds/templates/tca-template.json b/src/test/resources/clds/templates/tca-template.json index 892fc0d62..d2c04bf11 100644 --- a/src/test/resources/clds/templates/tca-template.json +++ b/src/test/resources/clds/templates/tca-template.json @@ -4,7 +4,7 @@ { "eventName": "???", "controlLoopSchemaType": "VNF", - "policyScope": "DCAE", + "policyScope": "CLAMP", "policyName": "???", "policyVersion": "v0.0.1", "thresholds": [ diff --git a/src/test/resources/example/tca-policy-req/blueprint-expected.yaml b/src/test/resources/example/tca-policy-req/blueprint-expected.yaml index 8739bb22f..e0b14f316 100644 --- a/src/test/resources/example/tca-policy-req/blueprint-expected.yaml +++ b/src/test/resources/example/tca-policy-req/blueprint-expected.yaml @@ -30,7 +30,7 @@ node_templates: subscriberMessageLimit: '-1', subscriberPollingInterval: '20000', subscriberProtocol: https, subscriberTimeoutMS: '-1', subscriberTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESSub, subscriberUserName: m00502@tca.af.dcae.onap.org, subscriberUserPassword: Te5021abc, - tca_policy: '{"domain":"measurementsForVfScaling","metricsPerEventName":[{"eventName":"vFirewallBroadcastPackets","controlLoopSchemaType":"VNF","policyScope":"DCAE","policyName":"example_model01.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_1jy9to4","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta","thresholdValue":123,"direction":"GREATER_OR_EQUAL","severity":"MAJOR","closedLoopEventStatus":"ONSET"},{"closedLoopControlName":"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta","thresholdValue":123,"direction":"GREATER_OR_EQUAL","severity":"MAJOR","closedLoopEventStatus":"ONSET"}]}]}'} + tca_policy: '{"domain":"measurementsForVfScaling","metricsPerEventName":[{"eventName":"vFirewallBroadcastPackets","controlLoopSchemaType":"VNF","policyScope":"CLAMP","policyName":"example_model01.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_1jy9to4","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta","thresholdValue":123,"direction":"GREATER_OR_EQUAL","severity":"MAJOR","closedLoopEventStatus":"ONSET"},{"closedLoopControlName":"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta","thresholdValue":123,"direction":"GREATER_OR_EQUAL","severity":"MAJOR","closedLoopEventStatus":"ONSET"}]}]}'} artifact_name: dcae-analytics-tca artifact_version: 1.0.0 connections: diff --git a/src/test/resources/example/tca-policy-req/tca-policy-expected.json b/src/test/resources/example/tca-policy-req/tca-policy-expected.json index b71328dd9..a04e2239a 100644 --- a/src/test/resources/example/tca-policy-req/tca-policy-expected.json +++ b/src/test/resources/example/tca-policy-req/tca-policy-expected.json @@ -1,13 +1,12 @@ { "service": "tca_policy", - "version": "1.0.0", + "version": "1.1.0", "location": "SampleServiceLocation", "configName": "SampleConfigName", "uuid": "test", - "policyScope": "resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", "templateVersion": "OpenSource.version.1", "policyName": "example_model01.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_1jy9to4", - "description": "MicroService vCPE Policy", + "description": "MicroService Policy", "priority": "1", "riskType": "SampleRiskType", "riskLevel": "1", @@ -19,7 +18,7 @@ { "eventName": "vFirewallBroadcastPackets", "controlLoopSchemaType": "VNF", - "policyScope": "DCAE", + "policyScope": "CLAMP", "policyName": "example_model01.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_1jy9to4", "policyVersion": "v0.0.1", "thresholds": [ -- cgit 1.2.3-korg From 4189d7f46b9467871a4b5019280eb6d780380eee Mon Sep 17 00:00:00 2001 From: xg353y Date: Tue, 17 Apr 2018 14:24:17 +0200 Subject: Rollback policy scope Rollback the policy scope under configBody and set it to CLAMP Issue-ID: CLAMP-153 Change-Id: I2446839329d367ad031852a9c0a33f7b29741740 Signed-off-by: xg353y --- src/main/resources/clds/templates/tca-policy-template.json | 1 + src/test/resources/clds/templates/tca-policy-template.json | 1 + src/test/resources/example/tca-policy-req/tca-policy-expected.json | 1 + 3 files changed, 3 insertions(+) (limited to 'src/test/resources/clds') diff --git a/src/main/resources/clds/templates/tca-policy-template.json b/src/main/resources/clds/templates/tca-policy-template.json index 275b6a4c3..b3369a329 100644 --- a/src/main/resources/clds/templates/tca-policy-template.json +++ b/src/main/resources/clds/templates/tca-policy-template.json @@ -4,6 +4,7 @@ "location": "SampleServiceLocation", "configName": "SampleConfigName", "uuid": "test", + "policyScope":"CLAMP", "templateVersion": "OpenSource.version.1", "policyName": "MicroService", "description": "MicroService Policy", diff --git a/src/test/resources/clds/templates/tca-policy-template.json b/src/test/resources/clds/templates/tca-policy-template.json index 275b6a4c3..559aacb29 100644 --- a/src/test/resources/clds/templates/tca-policy-template.json +++ b/src/test/resources/clds/templates/tca-policy-template.json @@ -4,6 +4,7 @@ "location": "SampleServiceLocation", "configName": "SampleConfigName", "uuid": "test", + "policyScope": "CLAMP", "templateVersion": "OpenSource.version.1", "policyName": "MicroService", "description": "MicroService Policy", diff --git a/src/test/resources/example/tca-policy-req/tca-policy-expected.json b/src/test/resources/example/tca-policy-req/tca-policy-expected.json index a04e2239a..bbe9ca6bd 100644 --- a/src/test/resources/example/tca-policy-req/tca-policy-expected.json +++ b/src/test/resources/example/tca-policy-req/tca-policy-expected.json @@ -4,6 +4,7 @@ "location": "SampleServiceLocation", "configName": "SampleConfigName", "uuid": "test", + "policyScope": "CLAMP", "templateVersion": "OpenSource.version.1", "policyName": "example_model01.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_1jy9to4", "description": "MicroService Policy", -- cgit 1.2.3-korg From ab284ec6e60c48eb9550c8fae16cc34ec9c3aeae Mon Sep 17 00:00:00 2001 From: "Determe, Sebastien (sd378r)" Date: Thu, 19 Apr 2018 14:21:24 +0200 Subject: Fix CsarInstaller Fix the CsarInstaller for policy input when deploying to DCAE, and fix UI so that default value is well displayed Issue-ID: CLAMP-153 Change-Id: I307d24782e6482590e709affe59bff84fb8a8526 Signed-off-by: Determe, Sebastien (sd378r) --- .../clds/model/properties/ModelProperties.java | 11 ++++ .../controller/installer/CsarInstallerImpl.java | 61 ++++++++++++++-------- .../partials/portfolios/deploy_parameters.html | 2 +- .../resources/designer/scripts/DeploymentCtrl.js | 27 +++++++--- .../resources/clds/templates/dcae-template.json | 2 +- .../controller/installer/CsarInstallerItCase.java | 2 +- .../resources/clds/templates/dcae-template.json | 2 +- .../resources/clds/templates/tca-template.json | 2 +- 8 files changed, 74 insertions(+), 35 deletions(-) (limited to 'src/test/resources/clds') diff --git a/src/main/java/org/onap/clamp/clds/model/properties/ModelProperties.java b/src/main/java/org/onap/clamp/clds/model/properties/ModelProperties.java index cc6f02de3..c840bd138 100644 --- a/src/main/java/org/onap/clamp/clds/model/properties/ModelProperties.java +++ b/src/main/java/org/onap/clamp/clds/model/properties/ModelProperties.java @@ -36,6 +36,8 @@ import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import org.apache.camel.Exchange; +import org.onap.clamp.clds.client.req.policy.PolicyClient; +import org.onap.clamp.clds.config.ClampProperties; import org.onap.clamp.clds.exception.ModelBpmnException; import org.onap.clamp.clds.model.CldsEvent; import org.onap.clamp.clds.model.CldsModel; @@ -222,6 +224,15 @@ public class ModelProperties { return normalizePolicyScopeName(modelName + "." + getCurrentPolicyName()); } + /** + * @return The policyName that wil be used in input parameters of DCAE + * deploy + */ + public String getPolicyNameForDcaeDeploy(ClampProperties refProp) { + return normalizePolicyScopeName(modelName + "." + + refProp.getStringValue(PolicyClient.POLICY_MS_NAME_PREFIX_PROPERTY_NAME) + getCurrentPolicyName()); + } + /** * @return the policyScopeAndNameWithUniqueId */ diff --git a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstallerImpl.java b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstallerImpl.java index 10a7cd556..4acbdeee3 100644 --- a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstallerImpl.java +++ b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstallerImpl.java @@ -35,17 +35,21 @@ import java.util.Map; import java.util.Map.Entry; import javax.annotation.PostConstruct; +import javax.xml.transform.TransformerException; import org.json.simple.parser.ParseException; import org.onap.clamp.clds.client.DcaeInventoryServices; +import org.onap.clamp.clds.config.ClampProperties; import org.onap.clamp.clds.config.sdc.BlueprintParserFilesConfiguration; import org.onap.clamp.clds.config.sdc.BlueprintParserMappingConfiguration; import org.onap.clamp.clds.dao.CldsDao; import org.onap.clamp.clds.exception.sdc.controller.SdcArtifactInstallerException; import org.onap.clamp.clds.model.CldsModel; import org.onap.clamp.clds.model.CldsTemplate; +import org.onap.clamp.clds.model.properties.ModelProperties; import org.onap.clamp.clds.service.CldsService; import org.onap.clamp.clds.service.CldsTemplateService; +import org.onap.clamp.clds.transform.XslTransformer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.ApplicationContext; @@ -81,6 +85,10 @@ public class CsarInstallerImpl implements CsarInstaller { CldsService cldsService; @Autowired DcaeInventoryServices dcaeInventoryService; + @Autowired + private XslTransformer cldsBpmnTransformer; + @Autowired + private ClampProperties refProp; @PostConstruct public void loadConfiguration() throws IOException { @@ -197,28 +205,37 @@ public class CsarInstallerImpl implements CsarInstaller { private CldsModel createFakeCldsModel(CsarHandler csar, BlueprintArtifact blueprintArtifact, CldsTemplate cldsTemplate, String serviceTypeId) throws SdcArtifactInstallerException { - CldsModel cldsModel = new CldsModel(); - String policyName = searchForPolicyName(blueprintArtifact); - if (policyName.contains("*")) { - // It's a filter must add a specific prefix - cldsModel.setControlNamePrefix(policyName); - } else { - cldsModel.setControlNamePrefix(CONTROL_NAME_PREFIX); + try { + CldsModel cldsModel = new CldsModel(); + cldsModel.setName(buildModelName(csar)); + cldsModel.setBlueprintText(blueprintArtifact.getDcaeBlueprint()); + cldsModel.setTemplateName(cldsTemplate.getName()); + cldsModel.setTemplateId(cldsTemplate.getId()); + cldsModel.setBpmnText(cldsTemplate.getBpmnText()); + cldsModel.setTypeId(serviceTypeId); + ModelProperties modelProp = new ModelProperties(cldsModel.getName(), "test", "PUT", false, + cldsBpmnTransformer.doXslTransformToString(cldsTemplate.getBpmnText()), "{}"); + String policyName = searchForPolicyName(blueprintArtifact); + String inputParams = ""; + if (policyName.contains("*")) { + // It's a filter must add a specific prefix + cldsModel.setControlNamePrefix(policyName); + } else { + cldsModel.setControlNamePrefix(CONTROL_NAME_PREFIX); + inputParams = "{\"name\":\"deployParameters\",\"value\":{\n" + "\"policy_id\": \"" + + modelProp.getPolicyNameForDcaeDeploy(refProp) + "\"" + "}}"; + } + cldsModel.setPropText("{\"global\":[{\"name\":\"service\",\"value\":[\"" + + blueprintArtifact.getBlueprintInvariantServiceUuid() + "\"]},{\"name\":\"vf\",\"value\":[\"" + + blueprintArtifact.getResourceAttached().getResourceInvariantUUID() + + "\"]},{\"name\":\"actionSet\",\"value\":[\"vnfRecipe\"]},{\"name\":\"location\",\"value\":[\"DC1\"]}," + + inputParams + "]}"); + cldsModel.save(cldsDao, null); + logger.info("Fake Clds Model created for blueprint " + blueprintArtifact.getBlueprintArtifactName() + + " with name " + cldsModel.getName()); + return cldsModel; + } catch (TransformerException e) { + throw new SdcArtifactInstallerException("TransformerException when decoding the BpmnText", e); } - cldsModel.setName(buildModelName(csar)); - cldsModel.setBlueprintText(blueprintArtifact.getDcaeBlueprint()); - cldsModel.setTemplateName(cldsTemplate.getName()); - cldsModel.setTemplateId(cldsTemplate.getId()); - cldsModel.setPropText("{\"global\":[{\"name\":\"service\",\"value\":[\"" - + blueprintArtifact.getBlueprintInvariantServiceUuid() + "\"]},{\"name\":\"vf\",\"value\":[\"" - + blueprintArtifact.getResourceAttached().getResourceInvariantUUID() - + "\"]},{\"name\":\"actionSet\",\"value\":[\"vnfRecipe\"]},{\"name\":\"location\",\"value\":[\"DC1\"]},{\"name\":\"deployParameters\",\"value\":{\n" - + " \"policy_id\": \"" + "test" + "\"" + " }}]}"); - cldsModel.setBpmnText(cldsTemplate.getBpmnText()); - cldsModel.setTypeId(serviceTypeId); - cldsModel.save(cldsDao, null); - logger.info("Fake Clds Model created for blueprint " + blueprintArtifact.getBlueprintArtifactName() - + " with name " + cldsModel.getName()); - return cldsModel; } } diff --git a/src/main/resources/META-INF/resources/designer/partials/portfolios/deploy_parameters.html b/src/main/resources/META-INF/resources/designer/partials/portfolios/deploy_parameters.html index c0cd6c953..ecb0af42f 100644 --- a/src/main/resources/META-INF/resources/designer/partials/portfolios/deploy_parameters.html +++ b/src/main/resources/META-INF/resources/designer/partials/portfolios/deploy_parameters.html @@ -30,7 +30,7 @@
Deployment parameters as JSON.
- - - -
- -
- -
-
-
- -
- - -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
- -
-
- -
- -
-
-
- -
- -
-
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
-
-
- -
- -
- -
- -
-
-
- -
- -
- -
-
-
- -
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- - -
- -
-
- -
- -
- -
- -
- -
-
-
- -
- -
- -
- -
- -
- -
-
-
- -
- -
- -
- -
-
- -
- - - - +
- diff --git a/ui-react/src/index.js b/ui-react/src/index.js index 39df36427..cbbdc65ef 100644 --- a/ui-react/src/index.js +++ b/ui-react/src/index.js @@ -32,7 +32,7 @@ const routing = ( ); -ReactDOM.render( +export var mainClamp = ReactDOM.render( routing, document.getElementById('root') ) diff --git a/ui-react/src/theme/globalStyle.js b/ui-react/src/theme/globalStyle.js index cbd86b199..0f6fb91c6 100644 --- a/ui-react/src/theme/globalStyle.js +++ b/ui-react/src/theme/globalStyle.js @@ -65,6 +65,19 @@ export const GlobalClampStyle = createGlobalStyle` width: 100%; height: 100%; } + + button { + background-color: ${props => (props.theme.loopViewerHeaderBackgroundColor)}; + border: 1px; + color: white; + padding: 15px 32px; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: ${props => props.theme.fontSize}; + font-family: ${props => props.theme.fontFamily}; + + } ` export const DefaultClampTheme = { -- cgit 1.2.3-korg From 74303b71e884cbaf6099031973d6c37e31c55bf3 Mon Sep 17 00:00:00 2001 From: sebdet Date: Tue, 8 Oct 2019 17:53:08 +0200 Subject: DCAE inventory calls in camel Move the HTTP/HTTPS calls to camel so that there is no issue with the previous code that does not support the config required for HTTP4 Camel Issue-ID: CLAMP-532 Change-Id: I83db0da5bbe6906890d0d6aa9b529c264e5f9b20 Signed-off-by: sebdet --- .../clamp/clds/client/DcaeInventoryServices.java | 56 +- .../org/onap/clamp/util/HttpConnectionManager.java | 157 ------ src/main/resources/application-noaaf.properties | 7 +- src/main/resources/application.properties | 9 +- .../resources/clds/camel/routes/dcae-flows.xml | 34 ++ .../resources/clds/camel/routes/flexible-flow.xml | 78 --- .../clds/client/DcaeInventoryServicesTest.java | 125 ----- .../clamp/clds/it/HttpConnectionManagerItCase.java | 146 ----- src/test/resources/application.properties | 7 +- .../resources/clds/camel/rest/clamp-api-v2.xml | 617 +++++++++++++++++++++ .../resources/clds/camel/rest/clds-services.xml | 29 + .../resources/clds/camel/routes/dcae-flows.xml | 216 ++++++++ .../resources/clds/camel/routes/flexible-flow.xml | 61 -- .../resources/clds/camel/routes/loop-flows.xml | 222 ++++++++ .../resources/clds/camel/routes/policy-flows.xml | 520 +++++++++++++++++ .../resources/clds/camel/routes/utils-flows.xml | 28 + 16 files changed, 1700 insertions(+), 612 deletions(-) delete mode 100644 src/main/java/org/onap/clamp/util/HttpConnectionManager.java delete mode 100644 src/main/resources/clds/camel/routes/flexible-flow.xml delete mode 100644 src/test/java/org/onap/clamp/clds/client/DcaeInventoryServicesTest.java delete mode 100644 src/test/java/org/onap/clamp/clds/it/HttpConnectionManagerItCase.java create mode 100644 src/test/resources/clds/camel/rest/clamp-api-v2.xml create mode 100644 src/test/resources/clds/camel/rest/clds-services.xml create mode 100644 src/test/resources/clds/camel/routes/dcae-flows.xml delete mode 100644 src/test/resources/clds/camel/routes/flexible-flow.xml create mode 100644 src/test/resources/clds/camel/routes/loop-flows.xml create mode 100644 src/test/resources/clds/camel/routes/policy-flows.xml create mode 100644 src/test/resources/clds/camel/routes/utils-flows.xml (limited to 'src/test/resources/clds') diff --git a/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java b/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java index 0ebaab555..b24bc99b2 100644 --- a/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java +++ b/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java @@ -30,6 +30,9 @@ import com.att.eelf.configuration.EELFManager; import java.io.IOException; import java.util.Date; +import org.apache.camel.CamelContext; +import org.apache.camel.Exchange; +import org.apache.camel.builder.ExchangeBuilder; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; @@ -38,7 +41,6 @@ import org.onap.clamp.clds.config.ClampProperties; import org.onap.clamp.clds.model.dcae.DcaeInventoryResponse; import org.onap.clamp.clds.util.JsonUtils; import org.onap.clamp.clds.util.LoggingUtils; -import org.onap.clamp.util.HttpConnectionManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -48,6 +50,9 @@ import org.springframework.stereotype.Component; @Component public class DcaeInventoryServices { + @Autowired + CamelContext camelContext; + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(DcaeInventoryServices.class); protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger(); protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); @@ -55,15 +60,13 @@ public class DcaeInventoryServices { public static final String DCAE_INVENTORY_RETRY_INTERVAL = "dcae.intentory.retry.interval"; public static final String DCAE_INVENTORY_RETRY_LIMIT = "dcae.intentory.retry.limit"; private final ClampProperties refProp; - private final HttpConnectionManager httpConnectionManager; /** * Constructor. */ @Autowired - public DcaeInventoryServices(ClampProperties refProp, HttpConnectionManager httpConnectionManager) { + public DcaeInventoryServices(ClampProperties refProp) { this.refProp = refProp; - this.httpConnectionManager = httpConnectionManager; } private int getTotalCountFromDcaeInventoryResponse(String responseStr) throws ParseException { @@ -96,19 +99,7 @@ public class DcaeInventoryServices { public DcaeInventoryResponse getDcaeInformation(String artifactName, String serviceUuid, String resourceUuid) throws IOException, ParseException, InterruptedException { LoggingUtils.setTargetContext("DCAE", "getDcaeInformation"); - String queryString = "?asdcResourceId=" + resourceUuid + "&asdcServiceId=" + serviceUuid + "&typeName=" - + artifactName; - String fullUrl = refProp.getStringValue(DCAE_INVENTORY_URL) + "/dcae-service-types" + queryString; - logger.info("Dcae Inventory Service full url - " + fullUrl); - DcaeInventoryResponse response = queryDcaeInventory(fullUrl); - LoggingUtils.setResponseContext("0", "Get Dcae Information success", this.getClass().getName()); - Date startTime = new Date(); - LoggingUtils.setTimeContext(startTime, new Date()); - return response; - } - private DcaeInventoryResponse queryDcaeInventory(String fullUrl) - throws IOException, InterruptedException, ParseException { int retryInterval = 0; int retryLimit = 1; if (refProp.getStringValue(DCAE_INVENTORY_RETRY_LIMIT) != null) { @@ -118,18 +109,31 @@ public class DcaeInventoryServices { retryInterval = Integer.valueOf(refProp.getStringValue(DCAE_INVENTORY_RETRY_INTERVAL)); } for (int i = 0; i < retryLimit; i++) { + Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext) + .withProperty("blueprintResourceId", resourceUuid).withProperty("blueprintServiceId", serviceUuid) + .withProperty("blueprintName", artifactName).build(); metricsLogger.info("Attempt n°" + i + " to contact DCAE inventory"); - String response = httpConnectionManager.doHttpRequest(fullUrl, "GET", null, null, "DCAE", null, null); - int totalCount = getTotalCountFromDcaeInventoryResponse(response); - metricsLogger.info("getDcaeInformation complete: totalCount returned=" + totalCount); - if (totalCount > 0) { - logger.info("getDcaeInformation, answer from DCAE inventory:" + response); - return getItemsFromDcaeInventoryResponse(response); + + Exchange exchangeResponse = camelContext.createProducerTemplate() + .send("direct:get-dcae-blueprint-inventory", myCamelExchange); + + if (Integer.valueOf(200).equals(exchangeResponse.getIn().getHeader("CamelHttpResponseCode"))) { + String dcaeResponse = (String) exchangeResponse.getIn().getBody(); + int totalCount = getTotalCountFromDcaeInventoryResponse(dcaeResponse); + metricsLogger.info("getDcaeInformation complete: totalCount returned=" + totalCount); + if (totalCount > 0) { + logger.info("getDcaeInformation, answer from DCAE inventory:" + dcaeResponse); + LoggingUtils.setResponseContext("0", "Get Dcae Information success", this.getClass().getName()); + Date startTime = new Date(); + LoggingUtils.setTimeContext(startTime, new Date()); + return getItemsFromDcaeInventoryResponse(dcaeResponse); + } else { + logger.info("Dcae inventory totalCount returned is 0, so waiting " + retryInterval + + "ms before retrying ..."); + // wait for a while and try to connect to DCAE again + Thread.sleep(retryInterval); + } } - logger.info( - "Dcae inventory totalCount returned is 0, so waiting " + retryInterval + "ms before retrying ..."); - // wait for a while and try to connect to DCAE again - Thread.sleep(retryInterval); } logger.warn("Dcae inventory totalCount returned is still 0, after " + retryLimit + " attempts, returning NULL"); return null; diff --git a/src/main/java/org/onap/clamp/util/HttpConnectionManager.java b/src/main/java/org/onap/clamp/util/HttpConnectionManager.java deleted file mode 100644 index 6459fa971..000000000 --- a/src/main/java/org/onap/clamp/util/HttpConnectionManager.java +++ /dev/null @@ -1,157 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 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============================================ - * Modifications copyright (c) 2018 Nokia - * =================================================================== - * - */ - -package org.onap.clamp.util; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; - -import java.io.BufferedReader; -import java.io.DataOutputStream; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.HttpURLConnection; -import java.net.URL; -import java.nio.charset.StandardCharsets; -import java.util.Base64; - -import javax.net.ssl.HttpsURLConnection; -import javax.ws.rs.BadRequestException; - -import org.apache.commons.io.IOUtils; -import org.onap.clamp.clds.util.LoggingUtils; -import org.springframework.stereotype.Component; - -/** - * This class manages the HTTP and HTTPS connections. - */ -@Component -public class HttpConnectionManager { - protected static final EELFLogger logger = EELFManager.getInstance().getLogger(HttpConnectionManager.class); - protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); - private static final String REQUEST_FAILED_LOG = "Request Failed - response payload="; - - private String doHttpsQuery(URL url, String requestMethod, String payload, String contentType, String target, - String userName, String password) throws IOException { - LoggingUtils utils = new LoggingUtils(logger); - logger.info("Using HTTPS URL:" + url.toString()); - HttpsURLConnection secureConnection = (HttpsURLConnection) url.openConnection(); - secureConnection = utils.invokeHttps(secureConnection, target, requestMethod); - secureConnection.setRequestMethod(requestMethod); - if (userName != null && password != null) { - secureConnection.setRequestProperty("Authorization", "Basic " - + Base64.getEncoder().encodeToString((userName + ":" + password).getBytes(StandardCharsets.UTF_8))); - } - if (payload != null && contentType != null) { - secureConnection.setRequestProperty("Content-Type", contentType); - secureConnection.setDoOutput(true); - try (DataOutputStream wr = new DataOutputStream(secureConnection.getOutputStream())) { - wr.writeBytes(payload); - wr.flush(); - } - } - int responseCode = secureConnection.getResponseCode(); - logger.info("Response Code: " + responseCode); - if (responseCode < 400) { - try (BufferedReader reader = new BufferedReader(new InputStreamReader(secureConnection.getInputStream()))) { - String responseStr = IOUtils.toString(reader); - logger.info("Response Content: " + responseStr); - return responseStr; - } - } else { - // In case of connection failure just check whether there is a - // content or not - try (BufferedReader reader = new BufferedReader(new InputStreamReader(secureConnection.getErrorStream()))) { - String responseStr = IOUtils.toString(reader); - logger.error(REQUEST_FAILED_LOG + responseStr); - throw new BadRequestException(responseStr); - } - } - } - - private String doHttpQuery(URL url, String requestMethod, String payload, String contentType, String target, - String userName, String password) throws IOException { - LoggingUtils utils = new LoggingUtils(logger); - logger.info("Using HTTP URL:" + url); - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); - connection = utils.invoke(connection, target, requestMethod); - connection.setRequestMethod(requestMethod); - if (userName != null && password != null) { - connection.setRequestProperty("Authorization", "Basic " - + Base64.getEncoder().encodeToString((userName + ":" + password).getBytes(StandardCharsets.UTF_8))); - } - if (payload != null && contentType != null) { - connection.setRequestProperty("Content-Type", contentType); - connection.setDoOutput(true); - try (DataOutputStream wr = new DataOutputStream(connection.getOutputStream())) { - wr.writeBytes(payload); - wr.flush(); - } - } - int responseCode = connection.getResponseCode(); - logger.info("Response Code: " + responseCode); - if (responseCode < 400) { - try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) { - String responseStr = IOUtils.toString(reader); - logger.info("Response Content: " + responseStr); - utils.invokeReturn(); - return responseStr; - } - } else { - // In case of connection failure just check whether there is a - // content or not - try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getErrorStream()))) { - String responseStr = IOUtils.toString(reader); - logger.error(REQUEST_FAILED_LOG + responseStr); - utils.invokeReturn(); - throw new BadRequestException(responseStr); - } - } - } - - /** - * This method does a HTTP/HTTPS query with parameters specified. - * - * @param url - * The string HTTP or HTTPS that mustr be used to connect - * @param requestMethod - * The Request Method (PUT, POST, GET, DELETE, etc ...) - * @param payload - * The payload if any, in that case an ouputstream is opened - * @param contentType - * The "application/json or application/xml, or whatever" - * @return The payload of the answer - * @throws IOException - * In case of issue with the streams - */ - public String doHttpRequest(String url, String requestMethod, String payload, String contentType, String target, - String userName, String password) throws IOException { - URL urlObj = new URL(url); - if (url.contains("https://")) { // Support for HTTPS - return doHttpsQuery(urlObj, requestMethod, payload, contentType, target, userName, password); - } else { // Support for HTTP - return doHttpQuery(urlObj, requestMethod, payload, contentType, target, userName, password); - } - } -} diff --git a/src/main/resources/application-noaaf.properties b/src/main/resources/application-noaaf.properties index 580ec3f48..79466c89f 100644 --- a/src/main/resources/application-noaaf.properties +++ b/src/main/resources/application-noaaf.properties @@ -208,15 +208,10 @@ clamp.config.action.insert.test.event=false clamp.config.clds.service.cache.invalidate.after.seconds=120 #DCAE Inventory Url Properties -clamp.config.dcae.inventory.url=http://localhost:8085 +clamp.config.dcae.inventory.url=http4://localhost:8085 clamp.config.dcae.intentory.retry.interval=10000 clamp.config.dcae.intentory.retry.limit=5 -#DCAE Dispatcher Url Properties -clamp.config.dcae.dispatcher.url=http://localhost:8085 -clamp.config.dcae.dispatcher.retry.interval=20000 -clamp.config.dcae.dispatcher.retry.limit=30 - #DCAE Deployment Url Properties clamp.config.dcae.deployment.url=http4://localhost:8085 clamp.config.dcae.deployment.userName=test diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index dcad32ed9..64121c947 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -219,15 +219,10 @@ clamp.config.action.insert.test.event=false clamp.config.clds.service.cache.invalidate.after.seconds=120 #DCAE Inventory Url Properties -clamp.config.dcae.inventory.url=http://dcae.api.simpledemo.onap.org:8080 +clamp.config.dcae.inventory.url=http4://dcae.api.simpledemo.onap.org:8080 clamp.config.dcae.intentory.retry.interval=10000 clamp.config.dcae.intentory.retry.limit=5 -#DCAE Dispatcher Url Properties -clamp.config.dcae.dispatcher.url=http://dcae.api.simpledemo.onap.org:8188 -clamp.config.dcae.dispatcher.retry.interval=20000 -clamp.config.dcae.dispatcher.retry.limit=30 - #DCAE Deployment Url Properties clamp.config.dcae.deployment.url=http4://dcae.api.simpledemo.onap.org:8188 clamp.config.dcae.deployment.userName=test @@ -249,7 +244,7 @@ clamp.config.cadi.keyFile=classpath:/clds/aaf/org.onap.clamp.keyfile clamp.config.cadi.cadiLoglevel=DEBUG clamp.config.cadi.cadiLatitude=10 clamp.config.cadi.cadiLongitude=10 -clamp.config.cadi.aafLocateUrl=https://aaf.api.simpledemo.onap.org:8095 +clamp.config.cadi.aafLocateUrl=https://10.0.0.106:31111 clamp.config.cadi.cadiKeystorePassword=enc:V_kq_EwDNb4itWp_lYfDGXIWJzemHGkhkZOxAQI9IHs clamp.config.cadi.cadiTruststorePassword=enc:Mj0YQqNCUKbKq2lPp1kTFQWeqLxaBXKNwd5F1yB1ukf #clamp.config.cadi.oauthTokenUrl=https://AAF_LOCATE_URL/AAF_NS.token:2.0/token diff --git a/src/main/resources/clds/camel/routes/dcae-flows.xml b/src/main/resources/clds/camel/routes/dcae-flows.xml index 469358190..fb3bc90ec 100644 --- a/src/main/resources/clds/camel/routes/dcae-flows.xml +++ b/src/main/resources/clds/camel/routes/dcae-flows.xml @@ -177,6 +177,40 @@ + + + + + + + + GET + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/clds/camel/routes/flexible-flow.xml b/src/main/resources/clds/camel/routes/flexible-flow.xml deleted file mode 100644 index bc79fc211..000000000 --- a/src/main/resources/clds/camel/routes/flexible-flow.xml +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - ${exchangeProperty.actionCd} == 'SUBMIT' || - ${exchangeProperty.actionCd} == 'RESUBMIT' - - - - - - 30000 - - - - - - - ${exchangeProperty.actionCd} == 'DELETE' - - - - - 30000 - - - - - - - - ${exchangeProperty.actionCd} == 'UPDATE' - - - - - 30000 - - - - - - - ${exchangeProperty.actionCd} == 'STOP' - - - - - - - ${exchangeProperty.actionCd} == 'RESTART' - - - - - - - - \ No newline at end of file diff --git a/src/test/java/org/onap/clamp/clds/client/DcaeInventoryServicesTest.java b/src/test/java/org/onap/clamp/clds/client/DcaeInventoryServicesTest.java deleted file mode 100644 index a66694cd6..000000000 --- a/src/test/java/org/onap/clamp/clds/client/DcaeInventoryServicesTest.java +++ /dev/null @@ -1,125 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2019 Huawei Technologies Co., Ltd. - * ================================================================================ - * 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========================================================= - * ================================================================================ - * - */ - -package org.onap.clamp.clds.client; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.core.Is.is; -import static org.hamcrest.core.IsNull.nullValue; -import static org.onap.clamp.clds.client.DcaeInventoryServices.DCAE_INVENTORY_RETRY_INTERVAL; -import static org.onap.clamp.clds.client.DcaeInventoryServices.DCAE_INVENTORY_RETRY_LIMIT; -import static org.onap.clamp.clds.client.DcaeInventoryServices.DCAE_INVENTORY_URL; -import static org.powermock.api.mockito.PowerMockito.when; - -import java.io.IOException; - -import org.json.simple.parser.ParseException; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; -import org.onap.clamp.clds.config.ClampProperties; -import org.onap.clamp.clds.model.dcae.DcaeInventoryResponse; -import org.onap.clamp.clds.model.dcae.DcaeLinks; -import org.onap.clamp.clds.model.dcae.DcaeOperationStatusResponse; -import org.onap.clamp.util.HttpConnectionManager; - - -@RunWith(MockitoJUnitRunner.class) -public class DcaeInventoryServicesTest { - - @Mock - private HttpConnectionManager httpConnectionManager; - - @Mock - private ClampProperties properties; - - private static final String resourceUuid = "023a3f0d-1161-45ff-b4cf-8918a8ccf3ad"; - private static final String serviceUuid = "4cc5b45a-1f63-4194-8100-cd8e14248c92"; - private static final String artifactName = "tca_2.yaml"; - private static final String queryString = "?asdcResourceId=" + resourceUuid + "&asdcServiceId=" + serviceUuid - + "&typeName=" + artifactName; - private static final String url = "http://localhost:8085" + "/dcae-service-types" + queryString; - - @Test - public void testDcaeInventoryResponse() throws ParseException, InterruptedException, IOException { - when(properties.getStringValue(DCAE_INVENTORY_URL)).thenReturn("http://localhost:8085"); - when(properties.getStringValue(DCAE_INVENTORY_RETRY_LIMIT)).thenReturn("1"); - when(properties.getStringValue(DCAE_INVENTORY_RETRY_INTERVAL)).thenReturn("100"); - String responseStr = "{\"totalCount\":1, " - + "\"items\":[{\"typeId\":\"typeId-32147723-d323-48f9-a325-bcea8d728025\"," - + " \"typeName\":\"typeName-32147723-d323-48f9-a325-bcea8d728025\"}]}"; - when(httpConnectionManager.doHttpRequest(url, "GET", null, null, - "DCAE", null, null)) - .thenReturn(responseStr); - - DcaeInventoryServices services = new DcaeInventoryServices(properties, - httpConnectionManager); - DcaeInventoryResponse response = services.getDcaeInformation(artifactName, serviceUuid, resourceUuid); - assertThat(response.getTypeId(),is("typeId-32147723-d323-48f9-a325-bcea8d728025")); - assertThat(response.getTypeName(),is("typeName-32147723-d323-48f9-a325-bcea8d728025")); - } - - @Test - public void testDcaeInventoryResponseWithZeroCount() throws ParseException, InterruptedException, IOException { - when(properties.getStringValue(DCAE_INVENTORY_URL)).thenReturn("http://localhost:8085"); - when(properties.getStringValue(DCAE_INVENTORY_RETRY_LIMIT)).thenReturn("1"); - when(properties.getStringValue(DCAE_INVENTORY_RETRY_INTERVAL)).thenReturn("100"); - when(httpConnectionManager.doHttpRequest(url, "GET", null, null, - "DCAE", null, null)) - .thenReturn("{\"totalCount\":0}\"}]}"); - DcaeInventoryServices services = new DcaeInventoryServices(properties, - httpConnectionManager); - DcaeInventoryResponse response = services.getDcaeInformation(artifactName, serviceUuid, resourceUuid); - assertThat(response, nullValue()); - } - - @Test - public void testDcaeInventoryResponsePojo() { - DcaeInventoryResponse response = new DcaeInventoryResponse(); - response.setTypeId("typeId-32147723-d323-48f9-a325-bcea8d728025"); - response.setTypeName("typeName-32147723-d323-48f9-a325-bcea8d728025"); - assertThat(response.getTypeId(),is("typeId-32147723-d323-48f9-a325-bcea8d728025")); - assertThat(response.getTypeName(),is("typeName-32147723-d323-48f9-a325-bcea8d728025")); - } - - @Test - public void testDcaeOperationStatusResponsePojo() { - DcaeLinks links = new DcaeLinks(); - links.setSelf("selfUrl"); - links.setStatus("state"); - links.setUninstall("uninstallUrl"); - DcaeOperationStatusResponse response = new DcaeOperationStatusResponse(); - response.setRequestId("testId"); - response.setError("errorMessage"); - response.setLinks(links); - response.setOperationType("install"); - response.setStatus("state"); - assertThat(response.getRequestId(),is("testId")); - assertThat(response.getError(),is("errorMessage")); - assertThat(response.getOperationType(),is("install")); - assertThat(response.getStatus(),is("state")); - assertThat(response.getLinks().getSelf(),is("selfUrl")); - assertThat(response.getLinks().getStatus(),is("state")); - assertThat(response.getLinks().getUninstall(),is("uninstallUrl")); - } -} \ No newline at end of file diff --git a/src/test/java/org/onap/clamp/clds/it/HttpConnectionManagerItCase.java b/src/test/java/org/onap/clamp/clds/it/HttpConnectionManagerItCase.java deleted file mode 100644 index beb07504a..000000000 --- a/src/test/java/org/onap/clamp/clds/it/HttpConnectionManagerItCase.java +++ /dev/null @@ -1,146 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2017-2018 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============================================ - * Modifications copyright (c) 2018 Nokia - * =================================================================== - * - */ - -package org.onap.clamp.clds.it; - -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - -import java.io.IOException; -import java.security.KeyManagementException; -import java.security.NoSuchAlgorithmException; -import java.security.cert.CertificateException; -import java.security.cert.X509Certificate; - -import javax.net.ssl.HostnameVerifier; -import javax.net.ssl.HttpsURLConnection; -import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLSession; -import javax.net.ssl.TrustManager; -import javax.net.ssl.X509TrustManager; -import javax.ws.rs.BadRequestException; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.onap.clamp.util.HttpConnectionManager; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; -import org.springframework.test.context.TestPropertySource; -import org.springframework.test.context.junit4.SpringRunner; - -/** - * Test HTTP and HTTPS settings + redirection of HTTP to HTTPS. - */ -@RunWith(SpringRunner.class) -@SpringBootTest(webEnvironment = WebEnvironment.DEFINED_PORT) -@TestPropertySource(locations = "classpath:https/https-test.properties") -public class HttpConnectionManagerItCase { - - @Value("${server.port}") - private String httpsPort; - @Value("${server.http-to-https-redirection.port}") - private String httpPort; - - @Autowired - HttpConnectionManager httpConnectionManager; - - private static TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { - - @Override - public java.security.cert.X509Certificate[] getAcceptedIssuers() { - return null; - } - - @Override - public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException { - } - - @Override - public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException { - } - } }; - - private void enableSslNoCheck() throws NoSuchAlgorithmException, KeyManagementException { - SSLContext sc = SSLContext.getInstance("SSL"); - sc.init(null, trustAllCerts, new java.security.SecureRandom()); - HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); - HostnameVerifier allHostsValid = new HostnameVerifier() { - - @Override - public boolean verify(String hostname, SSLSession session) { - return true; - } - }; - // set the allTrusting verifier - HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid); - } - - @Before - public void setupEnvBeforeTest() throws KeyManagementException, NoSuchAlgorithmException { - enableSslNoCheck(); - } - - @Test - public void testHttpGet() throws Exception { - String response = httpConnectionManager.doHttpRequest("http://localhost:" + this.httpPort + "/swagger.html", - "GET", null, null, "DCAE", null, null); - assertNotNull(response); - // Should be a redirection so 302, so empty - assertTrue(response.isEmpty()); - } - - @Test - public void testHttpsGet() throws Exception { - String response = httpConnectionManager.doHttpRequest("https://localhost:" + this.httpsPort + "/swagger.html", - "GET", null, null, "DCAE", null, null); - assertNotNull(response); - // Should contain something - assertTrue(!response.isEmpty()); - } - - @Test(expected = BadRequestException.class) - public void testHttpsGet404() throws IOException { - httpConnectionManager.doHttpRequest("https://localhost:" + this.httpsPort + "/swaggerx.html", "GET", null, null, - "DCAE", null, null); - fail("Should have raised an BadRequestException"); - } - - @Test(expected = BadRequestException.class) - public void testHttpsPost404() throws IOException { - httpConnectionManager.doHttpRequest("https://localhost:" + this.httpsPort + "/swaggerx.html", "POST", "", - "application/json", "DCAE", null, null); - fail("Should have raised an BadRequestException"); - } - - @Test(expected = BadRequestException.class) - public void testHttpException() throws IOException { - httpConnectionManager.doHttpRequest("http://localhost:" + this.httpsPort + "/swagger.html", "GET", null, null, - "DCAE", null, null); - fail("Should have raised an BadRequestException"); - } -} diff --git a/src/test/resources/application.properties b/src/test/resources/application.properties index b23f77ace..bbade742c 100644 --- a/src/test/resources/application.properties +++ b/src/test/resources/application.properties @@ -208,15 +208,10 @@ clamp.config.action.insert.test.event=false clamp.config.clds.service.cache.invalidate.after.seconds=120 #DCAE Inventory Url Properties -clamp.config.dcae.inventory.url=http://localhost:${docker.http-cache.port.host} +clamp.config.dcae.inventory.url=http4://localhost:${docker.http-cache.port.host} clamp.config.dcae.intentory.retry.interval=100 clamp.config.dcae.intentory.retry.limit=1 -#DCAE Dispatcher Url Properties -clamp.config.dcae.dispatcher.url=http://localhost:${docker.http-cache.port.host} -clamp.config.dcae.dispatcher.retry.interval=100 -clamp.config.dcae.dispatcher.retry.limit=1 - #DCAE Deployment Url Properties clamp.config.dcae.deployment.url=http4://localhost:${docker.http-cache.port.host} clamp.config.dcae.deployment.userName=test diff --git a/src/test/resources/clds/camel/rest/clamp-api-v2.xml b/src/test/resources/clds/camel/rest/clamp-api-v2.xml new file mode 100644 index 000000000..cf99625ee --- /dev/null +++ b/src/test/resources/clds/camel/rest/clamp-api-v2.xml @@ -0,0 +1,617 @@ + + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + ${body} + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + ${body} + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + ${body} + + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + + + + + false + + + + + ${exchangeProperty[loopObject].getMicroServicePolicies()} + + + ${body} + + + + false + + + + + + + ${exchangeProperty[loopObject].getOperationalPolicies()} + + + ${body} + + + + false + + + + + + + + ${exchangeProperty[operationalPolicy].createGuardPolicyPayloads().entrySet()} + + + ${body} + + + + + false + + + + + + + + 3000 + + + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + + + + + + + ${exchangeProperty[loopObject].getMicroServicePolicies()} + + + ${body} + + + + + + + + ${exchangeProperty[loopObject].getOperationalPolicies()} + + + ${body} + + + + + + ${exchangeProperty[operationalPolicy].createGuardPolicyPayloads().entrySet()} + + + ${body} + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + ${exchangeProperty[loopObject]} + + + + + + + diff --git a/src/test/resources/clds/camel/rest/clds-services.xml b/src/test/resources/clds/camel/rest/clds-services.xml new file mode 100644 index 000000000..dd3a4bfdc --- /dev/null +++ b/src/test/resources/clds/camel/rest/clds-services.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + ${body} == 'NOT-OK' + + 404 + + + + + + + + + + + diff --git a/src/test/resources/clds/camel/routes/dcae-flows.xml b/src/test/resources/clds/camel/routes/dcae-flows.xml new file mode 100644 index 000000000..fb3bc90ec --- /dev/null +++ b/src/test/resources/clds/camel/routes/dcae-flows.xml @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + PUT + + + application/json + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + + + + + + + + + DEPLOY loop status + (Dep-id:${exchangeProperty[dcaeDeploymentId]}, + StatusUrl:${exchangeProperty[dcaeStatusUrl]}) + + + + DCAE + + + + + + + + + + + + + ${exchangeProperty[loopObject].getDcaeDeploymentId()} + != null + + + + + + + DELETE + + + application/json + + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + + + + + + + + + UNDEPLOY loop status + + + DCAE + + + + + + + + + + + + + + + + + + + GET + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + DCAE deployment status + + + DCAE + + + + + + + + + + + + GET + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/resources/clds/camel/routes/flexible-flow.xml b/src/test/resources/clds/camel/routes/flexible-flow.xml deleted file mode 100644 index 2103b4acf..000000000 --- a/src/test/resources/clds/camel/routes/flexible-flow.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - ${exchangeProperty.actionCd} == 'SUBMIT' || ${exchangeProperty.actionCd} == 'RESUBMIT' - - - - - 30000 - - - - - - - ${exchangeProperty.actionCd} == 'DELETE' - - - - - 30000 - - - - - - - - ${exchangeProperty.actionCd} == 'UPDATE' - - - - - 30000 - - - - - - - ${exchangeProperty.actionCd} == 'STOP' - - - - - - - ${exchangeProperty.actionCd} == 'RESTART' - - - - - - - - - \ No newline at end of file diff --git a/src/test/resources/clds/camel/routes/loop-flows.xml b/src/test/resources/clds/camel/routes/loop-flows.xml new file mode 100644 index 000000000..036e8efc8 --- /dev/null +++ b/src/test/resources/clds/camel/routes/loop-flows.xml @@ -0,0 +1,222 @@ + + + + + ${header.loopName} + + + + + + + ${exchangeProperty[loopObject]} == null + + 404 + + + + + + + + + + ${exchangeProperty[loopObject].getComponent('POLICY')} + + + + true + + + true + + + + ${exchangeProperty[loopObject].getMicroServicePolicies()} + + + ${body.getName()} + + + ${body.getModelType()} + + + 1.0.0 + + + null + + + + + + + ${exchangeProperty[loopObject].getOperationalPolicies()} + + + ${body.getName()} + + + onap.policies.controlloop.Operational + + + 1 + + + ${body} + + + null + + + + + + ${exchangeProperty[operationalPolicy].createGuardPolicyPayloads().entrySet()} + + + ${body.getKey()} + + + onap.policies.controlloop.Guard + + + 1 + + + null + + + + + + + ${exchangeProperty[policyComponent].getState()} + + + + + + + + + + ${exchangeProperty[loopObject].getComponent('DCAE')} + + + ${exchangeProperty[loopObject].getDcaeDeploymentStatusUrl()} + != null + + + false + + + + ${header.CamelHttpResponseCode} == 200 + + + + + + + + + ${exchangeProperty[dcaeComponent].computeState(*)} + + + + + + + + + + + + ${exchangeProperty['dcaeState'].getStateName()} == + 'BLUEPRINT_DEPLOYED' and ${exchangeProperty['policyState'].getStateName()} + == 'NOT_SENT' + + + + + ${exchangeProperty['dcaeState'].getStateName()} == 'IN_ERROR' or + ${exchangeProperty['dcaeState'].getStateName()} == + 'MICROSERVICE_INSTALLATION_FAILED' + + + + + ${exchangeProperty['dcaeState'].getStateName()} == + 'MICROSERVICE_UNINSTALLATION_FAILED' or + ${exchangeProperty['policyState'].getStateName()} == 'IN_ERROR' + + + + + ${exchangeProperty['dcaeState'].getStateName()} == + 'MICROSERVICE_INSTALLED_SUCCESSFULLY' and + ${exchangeProperty['policyState'].getStateName()} == 'SENT_AND_DEPLOYED' + + + + + ${exchangeProperty['dcaeState'].getStateName()} == + 'MICROSERVICE_INSTALLED_SUCCESSFULLY' and + ${exchangeProperty['policyState'].getStateName()} == 'SENT' + + + + + ${exchangeProperty['dcaeState'].getStateName()} == + 'BLUEPRINT_DEPLOYED' or ${exchangeProperty['dcaeState'].getStateName()} == + 'MICROSERVICE_UNINSTALLED_SUCCESSFULLY' and + ${exchangeProperty['policyState'].getStateName()} == 'SENT_AND_DEPLOYED' + + + + + ${exchangeProperty['dcaeState'].getStateName()} == + 'PROCESSING_MICROSERVICE_INSTALLATION' or + ${exchangeProperty['dcaeState'].getStateName()} == + 'PROCESSING_MICROSERVICE_UNINSTALLATION' and + ${exchangeProperty['policyState'].getStateName()} == 'SENT_AND_DEPLOYED' + + + + + ${exchangeProperty['dcaeState'].getStateName()} == + 'MICROSERVICE_INSTALLED_SUCCESSFULLY' and + ${exchangeProperty['policyState'].getStateName()} != 'NOT_SENT' + + + + + + + + + \ No newline at end of file diff --git a/src/test/resources/clds/camel/routes/policy-flows.xml b/src/test/resources/clds/camel/routes/policy-flows.xml new file mode 100644 index 000000000..75ac66c6c --- /dev/null +++ b/src/test/resources/clds/camel/routes/policy-flows.xml @@ -0,0 +1,520 @@ + + + + + + false + + + + ${header.CamelHttpResponseCode} != 200 + + false + + + + + false + + + + ${header.CamelHttpResponseCode} != 200 + + false + + + + + ${exchangeProperty[policyComponent].computeState(*)} + + + + + + + + + + GET + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + ${exchangeProperty[policyName]} GET + Policy status + + + + POLICY + + + + + + + + + + + + + GET + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + ${exchangeProperty[policyName]} GET Policy deployment + status + + + + POLICY + + + + + + + + + + + + ${exchangeProperty[microServicePolicy].createPolicyPayload()} + + + + POST + + + application/json + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + ${exchangeProperty[microServicePolicy].getName()} creation + status + + + + POLICY + + + + + + + + + + + + + null + + + DELETE + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + + ${exchangeProperty[microServicePolicy].getName()} removal + status + + + + POLICY + + + + + + + + + + + + + ${exchangeProperty[operationalPolicy].createPolicyPayload()} + + + + POST + + + application/json + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + ${exchangeProperty[operationalPolicy].getName()} creation + status + + + + POLICY + + + + + + + + + + + + + null + + + DELETE + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + ${exchangeProperty[operationalPolicy].getName()} removal + status + + + + POLICY + + + + + + + + + + + + + ${exchangeProperty[guardPolicy].getValue()} + + + + POST + + + application/json + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + ${exchangeProperty[guardPolicy].getKey()} creation status + + + + POLICY + + + + + + + + + + + + + null + + + DELETE + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + + ${exchangeProperty[guardPolicy].getKey()} removal status + + + + POLICY + + + + + + + + + + + + + ${exchangeProperty[loopObject].getComponent("POLICY").createPoliciesPayloadPdpGroup(exchangeProperty[loopObject])} + + + + POST + + + application/json + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + + PDP Group push ALL status + + + POLICY + + + + + + + + + + + + + ${exchangeProperty[loopObject].getComponent("POLICY").listPolicyNamesPdpGroup(exchangeProperty[loopObject])} + + + ${body} + + + null + + + DELETE + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + ${exchangeProperty[policyName]} PDP Group removal status + + + + POLICY + + + + + java.lang.Exception + + false + + + PDP Group removal, Error reported: ${exception} + + + POLICY + + + + + + + + + + \ No newline at end of file diff --git a/src/test/resources/clds/camel/routes/utils-flows.xml b/src/test/resources/clds/camel/routes/utils-flows.xml new file mode 100644 index 000000000..bbbc46a20 --- /dev/null +++ b/src/test/resources/clds/camel/routes/utils-flows.xml @@ -0,0 +1,28 @@ + + + + + true + + + + + + + + + ${exchangeProperty[logComponent]} == null + + + + + + null + + + + + \ No newline at end of file -- cgit 1.2.3-korg From 1ebfe6b467e5a6a42c756f225397da76f9e3dfc2 Mon Sep 17 00:00:00 2001 From: xuegao Date: Thu, 28 Nov 2019 15:13:18 +0100 Subject: Merge ssl password Use the aaf encrypted ssl password fot server.ssl parameters Issue-ID: CLAMP-339 Change-Id: I8869bb527f2851c1d298cd03e45327791a8acfab Signed-off-by: xuegao --- src/main/java/org/onap/clamp/clds/Application.java | 14 +++- .../onap/clamp/clds/config/CamelConfiguration.java | 17 +++- .../java/org/onap/clamp/clds/config/SslConfig.java | 97 ++++++++++++++++++++++ .../onap/clamp/clds/filter/ClampCadiFilter.java | 9 +- src/main/java/org/onap/clamp/util/PassDecoder.java | 74 +++++++++++++++++ src/main/resources/application-noaaf.properties | 12 ++- src/main/resources/application.properties | 15 ++-- .../java/org/onap/clamp/util/PassDecoderTest.java | 52 ++++++++++++ src/test/resources/clds/aaf/org.onap.clamp.keyfile | 27 ++++++ 9 files changed, 294 insertions(+), 23 deletions(-) create mode 100644 src/main/java/org/onap/clamp/clds/config/SslConfig.java create mode 100644 src/main/java/org/onap/clamp/util/PassDecoder.java create mode 100644 src/test/java/org/onap/clamp/util/PassDecoderTest.java create mode 100644 src/test/resources/clds/aaf/org.onap.clamp.keyfile (limited to 'src/test/resources/clds') diff --git a/src/main/java/org/onap/clamp/clds/Application.java b/src/main/java/org/onap/clamp/clds/Application.java index efc4b128c..e41140f5c 100644 --- a/src/main/java/org/onap/clamp/clds/Application.java +++ b/src/main/java/org/onap/clamp/clds/Application.java @@ -29,6 +29,7 @@ import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; import java.io.IOException; +import java.io.InputStream; import java.security.KeyStore; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; @@ -39,6 +40,7 @@ import java.util.Enumeration; import org.apache.catalina.connector.Connector; import org.onap.clamp.clds.util.ClampVersioning; import org.onap.clamp.clds.util.ResourceFileUtil; +import org.onap.clamp.util.PassDecoder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; @@ -135,6 +137,8 @@ public class Application extends SpringBootServletInitializer { return tomcat; } + + private Connector createRedirectConnector(int redirectSecuredPort) { if (redirectSecuredPort <= 0) { eelfLogger.warn("HTTP port redirection to HTTPS is disabled because the HTTPS port is 0 (random port) or -1" @@ -155,10 +159,12 @@ public class Application extends SpringBootServletInitializer { if (env.getProperty("server.ssl.key-store") != null) { KeyStore keystore = KeyStore.getInstance(env.getProperty("server.ssl.key-store-type")); - keystore.load( - ResourceFileUtil.getResourceAsStream( - env.getProperty("server.ssl.key-store").replaceAll("classpath:", "")), - env.getProperty("server.ssl.key-store-password").toCharArray()); + String password = PassDecoder.decode(env.getProperty("server.ssl.key-store-password"), + env.getProperty("clamp.config.keyFile")); + String keyStore = env.getProperty("server.ssl.key-store"); + InputStream is = ResourceFileUtil.getResourceAsStream(keyStore.replaceAll("classpath:", "")); + keystore.load(is, password.toCharArray()); + Enumeration aliases = keystore.aliases(); while (aliases.hasMoreElements()) { String alias = aliases.nextElement(); diff --git a/src/main/java/org/onap/clamp/clds/config/CamelConfiguration.java b/src/main/java/org/onap/clamp/clds/config/CamelConfiguration.java index 271dc84ff..949ff1eb4 100644 --- a/src/main/java/org/onap/clamp/clds/config/CamelConfiguration.java +++ b/src/main/java/org/onap/clamp/clds/config/CamelConfiguration.java @@ -48,6 +48,7 @@ import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.impl.conn.BasicHttpClientConnectionManager; import org.onap.clamp.clds.util.ClampVersioning; +import org.onap.clamp.util.PassDecoder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.Environment; import org.springframework.stereotype.Component; @@ -61,18 +62,24 @@ public class CamelConfiguration extends RouteBuilder { @Autowired private Environment env; - private void configureDefaultSslProperties() { + private void configureDefaultSslProperties() throws IOException { if (env.getProperty("server.ssl.trust-store") != null) { URL storeResource = Thread.currentThread().getContextClassLoader() .getResource(env.getProperty("server.ssl.trust-store").replaceAll("classpath:", "")); System.setProperty("javax.net.ssl.trustStore", storeResource.getPath()); - System.setProperty("javax.net.ssl.trustStorePassword", env.getProperty("server.ssl.trust-store-password")); + String keyFile = env.getProperty("clamp.config.keyFile"); + String trustStorePass = PassDecoder.decode(env.getProperty("server.ssl.trust-store-password"), + keyFile); + System.setProperty("javax.net.ssl.trustStorePassword", trustStorePass); System.setProperty("javax.net.ssl.trustStoreType", "jks"); System.setProperty("ssl.TrustManagerFactory.algorithm", "PKIX"); storeResource = Thread.currentThread().getContextClassLoader() .getResource(env.getProperty("server.ssl.key-store").replaceAll("classpath:", "")); System.setProperty("javax.net.ssl.keyStore", storeResource.getPath()); - System.setProperty("javax.net.ssl.keyStorePassword", env.getProperty("server.ssl.key-store-password")); + + String keyStorePass = PassDecoder.decode(env.getProperty("server.ssl.key-store-password"), + keyFile); + System.setProperty("javax.net.ssl.keyStorePassword", keyStorePass); System.setProperty("javax.net.ssl.keyStoreType", env.getProperty("server.ssl.key-store-type")); } } @@ -81,10 +88,12 @@ public class CamelConfiguration extends RouteBuilder { throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException, CertificateException, IOException { if (env.getProperty("server.ssl.trust-store") != null) { KeyStore truststore = KeyStore.getInstance("JKS"); + String keyFile = env.getProperty("clamp.config.keyFile"); + String password = PassDecoder.decode(env.getProperty("server.ssl.trust-store-password"), keyFile); truststore.load( Thread.currentThread().getContextClassLoader() .getResourceAsStream(env.getProperty("server.ssl.trust-store").replaceAll("classpath:", "")), - env.getProperty("server.ssl.trust-store-password").toCharArray()); + password.toCharArray()); TrustManagerFactory trustFactory = TrustManagerFactory.getInstance("PKIX"); trustFactory.init(truststore); diff --git a/src/main/java/org/onap/clamp/clds/config/SslConfig.java b/src/main/java/org/onap/clamp/clds/config/SslConfig.java new file mode 100644 index 000000000..7c7433e96 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/config/SslConfig.java @@ -0,0 +1,97 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 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============================================ + * =================================================================== + * + */ + +package org.onap.clamp.clds.config; + +import java.io.IOException; +import java.io.InputStream; +import java.security.KeyStore; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.CertificateException; + +import org.onap.clamp.clds.util.ResourceFileUtil; +import org.onap.clamp.util.PassDecoder; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.web.ServerProperties; +import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; +import org.springframework.boot.web.server.Ssl; +import org.springframework.boot.web.server.SslStoreProvider; +import org.springframework.boot.web.server.WebServerFactoryCustomizer; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; +import org.springframework.core.env.Environment; +import org.springframework.core.io.ResourceLoader; + +@Configuration +@Profile("clamp-ssl-config") +public class SslConfig { + @Autowired + private Environment env; + + @Bean + WebServerFactoryCustomizer tomcatCustomizer(ServerProperties serverProperties, + ResourceLoader resourceLoader) { + return (tomcat) -> tomcat.setSslStoreProvider(new SslStoreProvider() { + @Override + public KeyStore getKeyStore() throws KeyStoreException, + NoSuchAlgorithmException, CertificateException, IOException { + KeyStore keystore = KeyStore.getInstance(env.getProperty("server.ssl.key-store-type")); + String password = PassDecoder.decode(env.getProperty("server.ssl.key-store-password"), + env.getProperty("clamp.config.keyFile")); + String keyStore = env.getProperty("server.ssl.key-store"); + InputStream is = ResourceFileUtil.getResourceAsStream(keyStore.replaceAll("classpath:", "")); + keystore.load(is, password.toCharArray()); + return keystore; + } + + @Override + public KeyStore getTrustStore() throws KeyStoreException, + NoSuchAlgorithmException, CertificateException, IOException { + KeyStore truststore = KeyStore.getInstance("JKS"); + String password = PassDecoder.decode(env.getProperty("server.ssl.trust-store-password"), + env.getProperty("clamp.config.keyFile")); + truststore.load( + Thread.currentThread().getContextClassLoader() + .getResourceAsStream(env.getProperty("server.ssl.trust-store") + .replaceAll("classpath:", "")), + password.toCharArray()); + return truststore; + } + }); + } + + @Bean + WebServerFactoryCustomizer tomcatSslCustomizer(ServerProperties serverProperties, + ResourceLoader resourceLoader) { + return (tomcat) -> tomcat.setSsl(new Ssl() { + @Override + public String getKeyPassword() { + String password = PassDecoder.decode(env.getProperty("server.ssl.key-password"), + env.getProperty("clamp.config.keyFile")); + return password; + } + }); + } +} \ No newline at end of file diff --git a/src/main/java/org/onap/clamp/clds/filter/ClampCadiFilter.java b/src/main/java/org/onap/clamp/clds/filter/ClampCadiFilter.java index 68544de67..9e04bd084 100644 --- a/src/main/java/org/onap/clamp/clds/filter/ClampCadiFilter.java +++ b/src/main/java/org/onap/clamp/clds/filter/ClampCadiFilter.java @@ -60,19 +60,19 @@ public class ClampCadiFilter extends CadiFilter { @Value("${server.ssl.key-store:#{null}}") private String keyStore; - @Value("${clamp.config.cadi.cadiKeystorePassword:#{null}}") + @Value("${server.ssl.key-store-password:#{null}}") private String keyStorePass; @Value("${server.ssl.trust-store:#{null}}") private String trustStore; - @Value("${clamp.config.cadi.cadiTruststorePassword:#{null}}") + @Value("${server.ssl.trust-store-password:#{null}}") private String trustStorePass; @Value("${server.ssl.key-alias:clamp@clamp.onap.org}") private String alias; - @Value("${clamp.config.cadi.keyFile:#{null}}") + @Value("${clamp.config.keyFile:#{null}}") private String keyFile; @Value("${clamp.config.cadi.cadiLoglevel:#{null}}") @@ -152,7 +152,8 @@ public class ClampCadiFilter extends CadiFilter { .generateCertificate(new ByteArrayInputStream( URLDecoder.decode(certHeader, StandardCharsets.UTF_8.toString()).getBytes())); X509Certificate caCert = (X509Certificate) certificateFactory - .generateCertificate(new ByteArrayInputStream(ResourceFileUtil.getResourceAsString("clds/aaf/ssl/ca-certs.pem").getBytes())); + .generateCertificate(new ByteArrayInputStream( + ResourceFileUtil.getResourceAsString("clds/aaf/ssl/ca-certs.pem").getBytes())); X509Certificate[] certifArray = ((X509Certificate[]) request .getAttribute("javax.servlet.request.X509Certificate")); diff --git a/src/main/java/org/onap/clamp/util/PassDecoder.java b/src/main/java/org/onap/clamp/util/PassDecoder.java new file mode 100644 index 000000000..70a47477e --- /dev/null +++ b/src/main/java/org/onap/clamp/util/PassDecoder.java @@ -0,0 +1,74 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 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============================================ + * =================================================================== + */ + +package org.onap.clamp.util; + +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import org.onap.aaf.cadi.Symm; +import org.onap.clamp.clds.util.ResourceFileUtil; + +/** + * PassDecoder for decrypting the truststore and keystore password. + */ +public class PassDecoder { + /** + * Used to log PassDecoder class. + */ + private static final EELFLogger logger = EELFManager.getInstance().getLogger(PassDecoder.class); + + /** + * Decode the password. + * @param encryptedPass The encrypted password + * @param keyFileIs The key file in InputStream format + */ + public static String decode(String encryptedPass, String keyFile) { + if (null == keyFile) { + logger.debug("Key file is not defined, thus password will not be decrypted"); + return encryptedPass; + } + if (null == encryptedPass) { + logger.error("Encrypted password is not defined"); + return null; + } + try { + InputStream is; + if (keyFile.contains("classpath:")) { + is = ResourceFileUtil.getResourceAsStream(keyFile.replaceAll("classpath:", "")); + } else { + File key = new File(keyFile); + is = new FileInputStream(key); + } + Symm symm = Symm.obtain(is); + + return symm.depass(encryptedPass); + } catch (IOException e) { + logger.error("Exception occurred during the key decryption", e); + return null; + } + } +} diff --git a/src/main/resources/application-noaaf.properties b/src/main/resources/application-noaaf.properties index 79466c89f..d389b211c 100644 --- a/src/main/resources/application-noaaf.properties +++ b/src/main/resources/application-noaaf.properties @@ -55,21 +55,25 @@ server.port=8443 ## Config part for Server certificates # Can be a classpath parameter instead of file:/ server.ssl.key-store=classpath:/clds/aaf/org.onap.clamp.p12 -server.ssl.key-store-password=China in the Spring -server.ssl.key-password=China in the Spring +server.ssl.key-store-password=enc:WWCxchk4WGBNSvuzLq3MLjMs5ObRybJtts5AI0XD1Vc +server.ssl.key-password=enc:WWCxchk4WGBNSvuzLq3MLjMs5ObRybJtts5AI0XD1Vc server.ssl.key-store-type=PKCS12 server.ssl.key-alias=clamp@clamp.onap.org ## Config part for Client certificates server.ssl.client-auth=want server.ssl.trust-store=classpath:/clds/aaf/truststoreONAPall.jks -server.ssl.trust-store-password=changeit +server.ssl.trust-store-password=enc:iDnPBBLq_EMidXlMa1FEuBR8TZzYxrCg66vq_XfLHdJ + +# The key file used to decode the key store and trust store password +# If not defined, the key store and trust store password will not be decrypted +clamp.config.keyFile=classpath:/clds/aaf/org.onap.clamp.keyfile #server.http-to-https-redirection.port=8080 server.servlet.context-path=/ #Modified engine-rest applicationpath -spring.profiles.active=clamp-default,clamp-default-user,clamp-sdc-controller-new +spring.profiles.active=clamp-default,clamp-default-user,clamp-sdc-controller-new,clamp-ssl-config spring.http.converters.preferred-json-mapper=gson #The max number of active threads in this pool diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 3ac6fa255..b97d64364 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -60,21 +60,25 @@ server.port=8443 ## Config part for Server certificates # Can be a classpath parameter instead of file:/ server.ssl.key-store=classpath:/clds/aaf/org.onap.clamp.p12 -server.ssl.key-store-password=China in the Spring -server.ssl.key-password=China in the Spring +server.ssl.key-store-password=enc:WWCxchk4WGBNSvuzLq3MLjMs5ObRybJtts5AI0XD1Vc +server.ssl.key-password=enc:WWCxchk4WGBNSvuzLq3MLjMs5ObRybJtts5AI0XD1Vc server.ssl.key-store-type=PKCS12 server.ssl.key-alias=clamp@clamp.onap.org +# The key file used to decode the key store and trust store password +# If not defined, the key store and trust store password will not be decrypted +clamp.config.keyFile=classpath:/clds/aaf/org.onap.clamp.keyfile + ## Config part for Client certificates server.ssl.client-auth=want server.ssl.trust-store=classpath:/clds/aaf/truststoreONAPall.jks -server.ssl.trust-store-password=changeit +server.ssl.trust-store-password=enc:iDnPBBLq_EMidXlMa1FEuBR8TZzYxrCg66vq_XfLHdJ #server.http-to-https-redirection.port=8080 server.servlet.context-path=/ #Modified engine-rest applicationpath -spring.profiles.active=clamp-default,clamp-aaf-authentication,clamp-sdc-controller-new +spring.profiles.active=clamp-default,clamp-aaf-authentication,clamp-sdc-controller-new,clamp-ssl-config spring.http.converters.preferred-json-mapper=gson #The max number of active threads in this pool @@ -240,13 +244,10 @@ clamp.config.security.permission.instance=dev clamp.config.security.authentication.class=org.onap.aaf.cadi.principal.X509Principal #AAF related parameters -clamp.config.cadi.keyFile=classpath:/clds/aaf/org.onap.clamp.keyfile clamp.config.cadi.cadiLoglevel=DEBUG clamp.config.cadi.cadiLatitude=10 clamp.config.cadi.cadiLongitude=10 clamp.config.cadi.aafLocateUrl=https://aaf-locate:8095 -clamp.config.cadi.cadiKeystorePassword=enc:WWCxchk4WGBNSvuzLq3MLjMs5ObRybJtts5AI0XD1Vc -clamp.config.cadi.cadiTruststorePassword=enc:iDnPBBLq_EMidXlMa1FEuBR8TZzYxrCg66vq_XfLHdJ clamp.config.cadi.oauthTokenUrl= https://AAF_LOCATE_URL/locate/onap.org.osaaf.aaf.token:2.1/token clamp.config.cadi.oauthIntrospectUrll=https://AAF_LOCATE_URL/locate/onap.org.osaaf.aaf.introspect:2.1/introspect clamp.config.cadi.aafEnv=DEV diff --git a/src/test/java/org/onap/clamp/util/PassDecoderTest.java b/src/test/java/org/onap/clamp/util/PassDecoderTest.java new file mode 100644 index 000000000..56443e31d --- /dev/null +++ b/src/test/java/org/onap/clamp/util/PassDecoderTest.java @@ -0,0 +1,52 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 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============================================ + * =================================================================== + * + */ + +package org.onap.clamp.util; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; + +import org.junit.Test; + +public class PassDecoderTest { + + private final String encrypted = "enc:WWCxchk4WGBNSvuzLq3MLjMs5ObRybJtts5AI0XD1Vc"; + + @Test + public final void testDecryptionNoKeyfile() throws Exception { + String decodedPass = PassDecoder.decode(encrypted, null); + assertEquals(decodedPass, encrypted); + } + + @Test + public final void testDecryptionNoPassword() throws Exception { + String decodedPass = PassDecoder.decode(null, "src/test/resources/clds/aaf/org.onap.clamp.keyfile"); + assertNull(decodedPass); + } + + @Test + public final void testDecryption() throws Exception { + String decodedPass = PassDecoder.decode(encrypted, "src/test/resources/clds/aaf/org.onap.clamp.keyfile"); + assertEquals(decodedPass, "China in the Spring"); + } +} diff --git a/src/test/resources/clds/aaf/org.onap.clamp.keyfile b/src/test/resources/clds/aaf/org.onap.clamp.keyfile new file mode 100644 index 000000000..c2521fc81 --- /dev/null +++ b/src/test/resources/clds/aaf/org.onap.clamp.keyfile @@ -0,0 +1,27 @@ +kzJMxgphAoBxJz1_vYjxx-V87fahDQdYUqBIyWhZp8ojXdNpmB-96T9CvgJScJynbLcqw2Cj2CYx +wd97vFOYhlyz5zK3tSyIuydOkVGJsJ1S4PviTtjhiJvNourJNDHgtas1Y1y2fQ5_8aVxj-s4W72N +MNYhkeTinaQx_d_5hkBPABJlgCxKLnmxHo2jAJktnZYa5t5h48m7KiUx_RVEkQVtEvux-7vgXaC4 +ymTXj6zI9XoMTVxM0OAl4y7kBiUoOUaxS4tVKV34RJYNNqBjiUTQa_ag-KeUacRABk1ozfwzpvE5 +Sjz8WCy0L-LtCQnapkhKLt04ndCZtw8LDJ-Zz0ZgR2PVIPpTgs9VnVuOi5jf4LzTrtUatvOWkKB9 +drXKzp6cNXnZ0jkD3vV1BzqzhynKnZR2o_ilZv5CTTdpGUt906N_DwZuX6LfcV_7yvjX42bTfeIR +ycPtodFPXlqqn9VUyh5nOauJlnOHAQmSDzjMEgjy17nQX3Ad7s4BfvujzUl-d0MqB_HCKbaW32UT +xcY-0JfI1Y-2IdYfIkUdhVmxop6sSg0jAobWzgCRoRQkP3a2iIlKdfMyskshoWKIDVtlr-3fkDEb +x_b_o1rRoUfzUzxEdphaUAq80Sc0i77ZLT3KF9vJOhyU_pBnApYFxVk7Hkk3VRxJKS7jyL4H7k1x +2m5-2G8fB9XbYZT82xmAquNx4oBdpwj3_ncGF9YRF94K6NZgqemT5iWhpXMoelSU1blASgT3qlTm +B6YgbD5owExNHwRVd8KeRsYrOnBWUiktsIhXFhNZmDUNWMFGQ2KxEcOt1tJwsQDehJFgY_l1JQ0d +643wJ7rTJkGkYX309cydRQUX4Z0ckSQS9LhMd9stxF5XOHlvHdbW0pXNS7SaLbzKCVldUgncvI6z +KWkwrWbftrZK2RT1UZKNngQDMGOk9OhbHAs7YzhFNFARZoRNobIv5tZVDomy-YgJb9-mD1UTkRBL +WXOyoryDlgKrgFsgHclGDI1UFO5N-JfebPKxbP505f4924hxF2r8bspvVW8ZtHQo_SJmhauOX8n_ +eN_LK43LB9k53WAHZ_utvs0s6wGf7I73oj_N7DIFaHTDSm_MhDsFDLVG_wUzCpZ5FP2uL3nnqMkF +Ob-l1fywfmfOmrz1BY6g4sRPPeWXuclYTnRnDRu5VQyc7_aBEVkyt3zw0JEex0vJNFUJl3pYjS55 +GplAB6p7VbS9ceZEtc5Z3qFIVHEzKWZxT190E23t_LlMuEoQ1zaqdHynNaMs61-q_A2aHRiTqlRm +7FahVB3RX4AVLl23mu4u3A9ZDXc40nzjs9mwOVsuKlPvQ2rteDUG1njr2R1_V_MyQuoJjdfbIkPG +4eF0QzlSMdbkeprdQxSfV5YT-yPpkBxSsCMMM43sKm4Hy7_CUdvp4Iayrp3vtK3oYMuCGi6qTadz +KzxfTf8meKan3eMZW4RLByyniH5nQnX_KGfBly05AmFyVH_j0fyOg-48kDhtEKeqmDnP4C01jOID +Ip_AKaB6e0GwsHzVTLZOklHwu_qzsaTzchBOG_dJJju7bxY7qv78Pa92wZIP311gSCVbc-gxxbsR +qI555twmYEoasFm4xz10OYDOkvM1E1Rtxu3ymRLZpe6AoyFBVzEW7Dncdw7O98dKcgrp8ZlQ_8Wg +5zZH0Cic7xnIZ0bNZyQXw56CSUiXVWuwVY3e0djXP3F-FO5gP8VTxbpW4C0t6McXAOlvSEfFKxN7 +u6OBeOKwjrtHaJk2ghF8MUcpDXanhbAgHez9larGlscCkgvoRLNaRH9GIdSVgY3HtNhJRaJIq01S +OGeBjC5J4o-nTrqRFkwyDAYcPL373eYX1dBFFVHR-4q50H9m_zMxZHXETafxzV4DT3Qi8Sxh3uaS +ZX7mRaNaOE0uC1n87_IZ9WhrwIQaZng2lnd9yZ-4rx8fB8WA8KQzifzvHAcMb_HV10JWGaz5A2Rm +EXDsfexQC6CqYg5rdzzlNWDPNlHy5ubyz7fRXZ99uIwBY9aJcvCXCiEXJkC6utj3NcXQrJmk \ No newline at end of file -- cgit 1.2.3-korg From 4593656e1f168c067e2a37389aeaa67889c1c173 Mon Sep 17 00:00:00 2001 From: Vidyashree-Huawei Date: Wed, 22 Jan 2020 17:25:46 +0530 Subject: Create a camel route that would retrieve all the DCAE blueprints Retreive all the DCAE blueprints and update DcaeInventoryCache Change-Id: Ia03a89c1871119a208094c014e5cb8aa8b4f71d3 Issue-ID: CLAMP-573 Signed-off-by: Vidyashree-Huawei --- .../clamp/clds/model/dcae/DcaeInventoryCache.java | 2 +- .../clds/model/dcae/DcaeInventoryResponse.java | 11 -- .../loop/components/external/DcaeComponent.java | 33 +++++- .../resources/clds/camel/routes/dcae-flows.xml | 43 +++++++ .../model/dcae/DcaeInventoryResponseCacheTest.java | 81 ------------- .../dcae/DcaeInventoryResponseCacheTestItCase.java | 126 +++++++++++++++++++++ .../org/onap/clamp/loop/DcaeComponentTest.java | 89 +++++++++++++++ .../resources/clds/camel/routes/dcae-flows.xml | 43 +++++++ src/test/resources/http-cache/third_party_proxy.py | 19 ++++ 9 files changed, 352 insertions(+), 95 deletions(-) delete mode 100644 src/test/java/org/onap/clamp/clds/model/dcae/DcaeInventoryResponseCacheTest.java create mode 100644 src/test/java/org/onap/clamp/clds/model/dcae/DcaeInventoryResponseCacheTestItCase.java (limited to 'src/test/resources/clds') diff --git a/src/main/java/org/onap/clamp/clds/model/dcae/DcaeInventoryCache.java b/src/main/java/org/onap/clamp/clds/model/dcae/DcaeInventoryCache.java index 558102c5d..19bc23d5e 100644 --- a/src/main/java/org/onap/clamp/clds/model/dcae/DcaeInventoryCache.java +++ b/src/main/java/org/onap/clamp/clds/model/dcae/DcaeInventoryCache.java @@ -36,7 +36,7 @@ import java.util.concurrent.ConcurrentHashMap; */ public class DcaeInventoryCache { - private Map> blueprintsMap = new ConcurrentHashMap<>(); + private static Map> blueprintsMap = new ConcurrentHashMap<>(); /** * Add Dcae inventory response. diff --git a/src/main/java/org/onap/clamp/clds/model/dcae/DcaeInventoryResponse.java b/src/main/java/org/onap/clamp/clds/model/dcae/DcaeInventoryResponse.java index bdf6e70f5..67bd026d0 100644 --- a/src/main/java/org/onap/clamp/clds/model/dcae/DcaeInventoryResponse.java +++ b/src/main/java/org/onap/clamp/clds/model/dcae/DcaeInventoryResponse.java @@ -53,9 +53,6 @@ public class DcaeInventoryResponse implements Comparable @Expose private String asdcResourceId; - @Expose - private String selfLink; - public String getTypeName() { return typeName; } @@ -96,14 +93,6 @@ public class DcaeInventoryResponse implements Comparable this.asdcResourceId = asdcResourceId; } - public String getSelfLink() { - return selfLink; - } - - public void setSelfLink(String selfLink) { - this.selfLink = selfLink; - } - @Override public int compareTo(DcaeInventoryResponse otherResponse) { int thisResourceId = Integer.parseInt(this.asdcResourceId); diff --git a/src/main/java/org/onap/clamp/loop/components/external/DcaeComponent.java b/src/main/java/org/onap/clamp/loop/components/external/DcaeComponent.java index 9b131299b..7a0d8b4b3 100644 --- a/src/main/java/org/onap/clamp/loop/components/external/DcaeComponent.java +++ b/src/main/java/org/onap/clamp/loop/components/external/DcaeComponent.java @@ -24,10 +24,17 @@ package org.onap.clamp.loop.components.external; import com.google.gson.JsonObject; - +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; import java.util.UUID; - import org.apache.camel.Exchange; +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; +import org.json.simple.parser.JSONParser; +import org.json.simple.parser.ParseException; + +import org.onap.clamp.clds.model.dcae.DcaeInventoryResponse; import org.onap.clamp.clds.model.dcae.DcaeOperationStatusResponse; import org.onap.clamp.clds.util.JsonUtils; import org.onap.clamp.loop.Loop; @@ -164,4 +171,26 @@ public class DcaeComponent extends ExternalComponent { } return this.getState(); } + + /** + * Convert the json response to a DcaeInventoryResponse. + * + * @param responseBody The DCAE response Json paylaod + * @return list of DcaeInventoryResponse + * @throws ParseException In case of issues with the Json parsing + */ + public static List convertToDcaeInventoryResponse(String responseBody) + throws ParseException { + JSONParser parser = new JSONParser(); + JSONObject jsonObj = (JSONObject) parser.parse(responseBody); + JSONArray itemsArray = (JSONArray) jsonObj.get("items"); + Iterator it = itemsArray.iterator(); + List inventoryResponseList = new LinkedList<>(); + while (it.hasNext()) { + JSONObject item = (JSONObject) it.next(); + DcaeInventoryResponse response = JsonUtils.GSON.fromJson(item.toString(), DcaeInventoryResponse.class); + inventoryResponseList.add(response); + } + return inventoryResponseList; + } } diff --git a/src/main/resources/clds/camel/routes/dcae-flows.xml b/src/main/resources/clds/camel/routes/dcae-flows.xml index fb3bc90ec..6c963349b 100644 --- a/src/main/resources/clds/camel/routes/dcae-flows.xml +++ b/src/main/resources/clds/camel/routes/dcae-flows.xml @@ -213,4 +213,47 @@ + + + + + + + GET + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + + ${exchangeProperty[dcaeResponseList]} + + + ${body} + + + + + + + + + \ No newline at end of file diff --git a/src/test/java/org/onap/clamp/clds/model/dcae/DcaeInventoryResponseCacheTest.java b/src/test/java/org/onap/clamp/clds/model/dcae/DcaeInventoryResponseCacheTest.java deleted file mode 100644 index 26cc831ec..000000000 --- a/src/test/java/org/onap/clamp/clds/model/dcae/DcaeInventoryResponseCacheTest.java +++ /dev/null @@ -1,81 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.model.dcae; - -import static org.assertj.core.api.Assertions.assertThat; - -import org.junit.BeforeClass; -import org.junit.Test; - -public class DcaeInventoryResponseCacheTest { - - public static DcaeInventoryCache inventoryCache = new DcaeInventoryCache(); - - /** - * Initialize the responses. - */ - @BeforeClass - public static void createExample() { - DcaeInventoryResponse response1 = new DcaeInventoryResponse(); - response1.setAsdcServiceId("id1"); - response1.setAsdcResourceId("0"); - DcaeInventoryResponse response2 = new DcaeInventoryResponse(); - response2.setAsdcServiceId("id1"); - response2.setAsdcResourceId("1"); - DcaeInventoryResponse response3 = new DcaeInventoryResponse(); - response3.setAsdcServiceId("id1"); - response3.setAsdcResourceId("2"); - DcaeInventoryResponse response4 = new DcaeInventoryResponse(); - response4.setAsdcServiceId("id2"); - response4.setAsdcResourceId("0"); - DcaeInventoryResponse response5 = new DcaeInventoryResponse(); - response5.setAsdcServiceId("id2"); - response5.setAsdcResourceId("1"); - - inventoryCache.addDcaeInventoryResponse(response1); - inventoryCache.addDcaeInventoryResponse(response3); - inventoryCache.addDcaeInventoryResponse(response2); - inventoryCache.addDcaeInventoryResponse(response4); - inventoryCache.addDcaeInventoryResponse(response5); - } - - @Test - public void testGetAllLoopIds() { - assertThat(inventoryCache.getAllLoopIds().size()).isEqualTo(2); - } - - @Test - public void testGetAllBlueprintsPerLoopId() { - int value = 0; - for (DcaeInventoryResponse inventoryResponse : inventoryCache.getAllBlueprintsPerLoopId("id1")) { - assertThat(Integer.valueOf(inventoryResponse.getAsdcResourceId())).isEqualTo(value++); - } - - value = 0; - for (DcaeInventoryResponse inventoryResponse : inventoryCache.getAllBlueprintsPerLoopId("id2")) { - assertThat(Integer.valueOf(inventoryResponse.getAsdcResourceId())).isEqualTo(value++); - } - } - -} diff --git a/src/test/java/org/onap/clamp/clds/model/dcae/DcaeInventoryResponseCacheTestItCase.java b/src/test/java/org/onap/clamp/clds/model/dcae/DcaeInventoryResponseCacheTestItCase.java new file mode 100644 index 000000000..50da40049 --- /dev/null +++ b/src/test/java/org/onap/clamp/clds/model/dcae/DcaeInventoryResponseCacheTestItCase.java @@ -0,0 +1,126 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 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============================================ + * =================================================================== + * + */ + +package org.onap.clamp.clds.model.dcae; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.Assert.assertEquals; + +import java.util.HashSet; +import java.util.Set; + +import org.apache.camel.CamelContext; +import org.apache.camel.Exchange; +import org.apache.camel.builder.ExchangeBuilder; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.onap.clamp.clds.Application; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = Application.class) +public class DcaeInventoryResponseCacheTestItCase { + + public static DcaeInventoryCache inventoryCache = new DcaeInventoryCache(); + + @Autowired + CamelContext camelContext; + + /** + * Initialize the responses. + */ + @BeforeClass + public static void createExample() { + DcaeInventoryResponse response1 = new DcaeInventoryResponse(); + response1.setAsdcServiceId("id1"); + response1.setAsdcResourceId("0"); + DcaeInventoryResponse response2 = new DcaeInventoryResponse(); + response2.setAsdcServiceId("id1"); + response2.setAsdcResourceId("1"); + DcaeInventoryResponse response3 = new DcaeInventoryResponse(); + response3.setAsdcServiceId("id1"); + response3.setAsdcResourceId("2"); + DcaeInventoryResponse response4 = new DcaeInventoryResponse(); + response4.setAsdcServiceId("id2"); + response4.setAsdcResourceId("0"); + DcaeInventoryResponse response5 = new DcaeInventoryResponse(); + response5.setAsdcServiceId("id2"); + response5.setAsdcResourceId("1"); + + inventoryCache.addDcaeInventoryResponse(response1); + inventoryCache.addDcaeInventoryResponse(response3); + inventoryCache.addDcaeInventoryResponse(response2); + inventoryCache.addDcaeInventoryResponse(response4); + inventoryCache.addDcaeInventoryResponse(response5); + } + + @Test + public void testGetAllLoopIds() { + assertThat(inventoryCache.getAllLoopIds().size()).isEqualTo(2); + } + + @Test + public void testGetAllBlueprintsPerLoopId() { + int value = 0; + for (DcaeInventoryResponse inventoryResponse : inventoryCache.getAllBlueprintsPerLoopId("id1")) { + assertThat(Integer.valueOf(inventoryResponse.getAsdcResourceId())).isEqualTo(value++); + } + + value = 0; + for (DcaeInventoryResponse inventoryResponse : inventoryCache.getAllBlueprintsPerLoopId("id2")) { + assertThat(Integer.valueOf(inventoryResponse.getAsdcResourceId())).isEqualTo(value++); + } + } + + @Test + public void testDcaeInventoryResponse() { + Exchange exchange = ExchangeBuilder.anExchange(camelContext).build(); + Exchange exchangeResponse = camelContext.createProducerTemplate() + .send("direct:get-all-dcae-blueprint-inventory", exchange); + assertThat(exchangeResponse.getIn().getHeader("CamelHttpResponseCode")).isEqualTo(200); + Set blueprint = inventoryCache.getAllBlueprintsPerLoopId("testAsdcServiceId"); + assertThat(blueprint.size()).isEqualTo(2); + + DcaeInventoryResponse response1 = new DcaeInventoryResponse(); + response1.setAsdcResourceId("0"); + response1.setTypeName("testTypeName"); + response1.setAsdcServiceId("testAsdcServiceId"); + response1.setBlueprintTemplate("testBlueprintTemplate"); + response1.setTypeId("testtypeId"); + DcaeInventoryResponse response2 = new DcaeInventoryResponse(); + response2.setAsdcResourceId("1"); + response2.setTypeName("testTypeName2"); + response2.setAsdcServiceId("testAsdcServiceId"); + response2.setBlueprintTemplate("testBlueprintTemplate2"); + response2.setTypeId("testtypeId2"); + + Set expectedBlueprint = new HashSet<>(); + expectedBlueprint.add(response1); + expectedBlueprint.add(response2); + + assertEquals(blueprint, expectedBlueprint); + } +} diff --git a/src/test/java/org/onap/clamp/loop/DcaeComponentTest.java b/src/test/java/org/onap/clamp/loop/DcaeComponentTest.java index 557fdcecf..4daab2ecc 100644 --- a/src/test/java/org/onap/clamp/loop/DcaeComponentTest.java +++ b/src/test/java/org/onap/clamp/loop/DcaeComponentTest.java @@ -30,11 +30,15 @@ import com.google.gson.JsonObject; import java.io.IOException; import java.util.HashSet; +import java.util.List; import org.apache.camel.Exchange; import org.apache.camel.Message; +import org.json.simple.parser.ParseException; +import org.junit.Ignore; import org.junit.Test; import org.mockito.Mockito; +import org.onap.clamp.clds.model.dcae.DcaeInventoryResponse; import org.onap.clamp.clds.model.dcae.DcaeOperationStatusResponse; import org.onap.clamp.loop.components.external.DcaeComponent; import org.onap.clamp.loop.components.external.ExternalComponentState; @@ -151,4 +155,89 @@ public class DcaeComponentTest { ExternalComponentState state9 = dcae.computeState(exchange); assertThat(state9.getStateName()).isEqualTo("IN_ERROR"); } + + @Test + public void convertToDcaeInventoryResponseTest() throws IOException, ParseException { + String dcaeFakeResponse = "{\n" + + " \"links\": {\n" + + " \"previousLink\": {\n" + + " \"title\": \"string\",\n" + + " \"rel\": \"string\",\n" + + " \"uri\": \"string\",\n" + + " \"uriBuilder\": {},\n" + + " \"rels\": [\n" + + " \"string\"\n" + + " ],\n" + + " \"params\": {\n" + + " \"additionalProp1\": \"string\",\n" + + " \"additionalProp2\": \"string\",\n" + + " \"additionalProp3\": \"string\"\n" + + " },\n" + + " \"type\": \"string\"\n" + + " },\n" + + " \"nextLink\": {\n" + + " \"title\": \"string\",\n" + + " \"rel\": \"string\",\n" + + " \"uri\": \"string\",\n" + + " \"uriBuilder\": {},\n" + + " \"rels\": [\n" + + " \"string\"\n" + + " ],\n" + + " \"params\": {\n" + + " \"additionalProp1\": \"string\",\n" + + " \"additionalProp2\": \"string\",\n" + + " \"additionalProp3\": \"string\"\n" + + " },\n" + + " \"type\": \"string\"\n" + + " }\n" + + " },\n" + + " \"totalCount\": 0,\n" + + " \"items\": [\n" + + " {\n" + + " \"owner\": \"testOwner\",\n" + + " \"application\": \"testApplication\",\n" + + " \"component\": \"testComponent\",\n" + + " \"typeName\": \"testTypeName\",\n" + + " \"typeVersion\": 0,\n" + + " \"blueprintTemplate\": \"testBlueprintTemplate\",\n" + + " \"serviceIds\": [\n" + + " \"serviceId1\", \"serviceId2\"\n" + + " ],\n" + + " \"vnfTypes\": [\n" + + " \"vnfType1\", \"vnfType2\"\n" + + " ],\n" + + " \"serviceLocations\": [\n" + + " \"serviceLocation1\", \"serviceLocation2\"\n" + + " ],\n" + + " \"asdcServiceId\": \"testAsdcServiceId\",\n" + + " \"asdcResourceId\": \"testAsdcResourceId\",\n" + + " \"asdcServiceURL\": \"testAsdcServiceURL\",\n" + + " \"typeId\": \"testTypeId\",\n" + + " \"selfLink\": {\n" + + " \"title\": \"selfLinkTitle\",\n" + + " \"rel\": \"selfLinkRel\",\n" + + " \"uri\": \"selfLinkUri\",\n" + + " \"uriBuilder\": {},\n" + + " \"rels\": [\n" + + " \"string\"\n" + + " ],\n" + + " \"params\": {\n" + + " \"additionalProp1\": \"string\",\n" + + " \"additionalProp2\": \"string\",\n" + + " \"additionalProp3\": \"string\"\n" + + " },\n" + + " \"type\": \"string\"\n" + + " },\n" + + " \"created\": \"2020-01-22T09:38:15.436Z\",\n" + + " \"deactivated\": \"2020-01-22T09:38:15.437Z\"\n" + + " }\n" + + " ]\n" + + "}"; + List responseObject = DcaeComponent.convertToDcaeInventoryResponse(dcaeFakeResponse); + assertThat(responseObject.get(0).getAsdcResourceId()).isEqualTo("testAsdcResourceId"); + assertThat(responseObject.get(0).getAsdcServiceId()).isEqualTo("testAsdcServiceId"); + assertThat(responseObject.get(0).getTypeName()).isEqualTo("testTypeName"); + assertThat(responseObject.get(0).getTypeId()).isEqualTo("testTypeId"); + assertThat(responseObject.get(0).getBlueprintTemplate()).isEqualTo("testBlueprintTemplate"); + } } diff --git a/src/test/resources/clds/camel/routes/dcae-flows.xml b/src/test/resources/clds/camel/routes/dcae-flows.xml index fb3bc90ec..1e5cbd89a 100644 --- a/src/test/resources/clds/camel/routes/dcae-flows.xml +++ b/src/test/resources/clds/camel/routes/dcae-flows.xml @@ -213,4 +213,47 @@ + + + + + + + GET + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + + ${exchangeProperty[dcaeResponseList]} + + + ${body} + + + + + + + + + \ No newline at end of file diff --git a/src/test/resources/http-cache/third_party_proxy.py b/src/test/resources/http-cache/third_party_proxy.py index 9dcc4b3a3..32f7faf4e 100755 --- a/src/test/resources/http-cache/third_party_proxy.py +++ b/src/test/resources/http-cache/third_party_proxy.py @@ -249,6 +249,22 @@ class Proxy(SimpleHTTPServer.SimpleHTTPRequestHandler): with open(cached_file_content, 'w') as f: f.write(jsonGenerated) return True + elif self.path.startswith("/dcae-service-types") and http_type == "GET": + if not _file_available: + self.path = "/dcae-service-types" + cached_file_folder = '%s/%s' % (TMP_ROOT, self.path) + cached_file_content = self._get_cached_content_file_name(cached_file_folder) + cached_file_header = self._get_cached_header_file_name(cached_file_folder) + print "self.path start with /dcae-service-types, generating response json..." + response = "{\"links\": {\"previousLink\": {\"title\": \"string\",\"rel\": \"string\",\"uri\": \"string\",\"uriBuilder\": {},\"rels\": [\"string\"],\"params\": {\"additionalProp1\": \"string\",\"additionalProp2\": \"string\",\"additionalProp3\": \"string\"},\"type\": \"string\"},\"nextLink\": {\"title\": \"string\",\"rel\": \"string\",\"uri\": \"string\",\"uriBuilder\": {},\"rels\": [\"string\"],\"params\": {\"additionalProp1\": \"string\",\"additionalProp2\": \"string\",\"additionalProp3\": \"string\"},\"type\": \"string\"}},\"totalCount\": 1,\"items\": [{\"owner\": \"testOwner\",\"application\": \"testApplication\",\"component\": \"testComponent\",\"typeName\": \"testTypeName\",\"typeVersion\": 0,\"blueprintTemplate\": \"testBlueprintTemplate\",\"serviceIds\": [\"serviceId1\", \"serviceId2\"],\"vnfTypes\": [\"vnfType1\", \"vnfType2\"],\"serviceLocations\": [\"serviceLocation1\", \"serviceLocation2\"],\"asdcServiceId\": \"testAsdcServiceId\",\"asdcResourceId\": \"0\",\"asdcServiceURL\": \"testAsdcServiceURL\",\"typeId\": \"testtypeId\",\"selfLink\": {\"title\": \"selfLinkTitle\",\"rel\": \"selfLinkRel\",\"uri\": \"selfLinkUri\",\"uriBuilder\": {},\"rels\": [\"string\"],\"params\": {\"additionalProp1\": \"string\",\"additionalProp2\": \"string\",\"additionalProp3\": \"string\"},\"type\": \"string\"},\"created\": \"2020-01-22T09:38:15.436Z\",\"deactivated\": \"2020-01-22T09:38:15.437Z\"},{\"owner\": \"testOwner2\",\"application\": \"testApplication1\",\"component\": \"testComponent2\",\"typeName\": \"testTypeName2\",\"typeVersion\": 0,\"blueprintTemplate\": \"testBlueprintTemplate2\",\"serviceIds\": [\"serviceId3\", \"serviceId4\"],\"vnfTypes\": [\"vnfType13\", \"vnfType4\"],\"serviceLocations\": [\"serviceLocation3\", \"serviceLocation4\"],\"asdcServiceId\": \"testAsdcServiceId\",\"asdcResourceId\": \"1\",\"asdcServiceURL\": \"testAsdcServiceURL2\",\"typeId\": \"testtypeId2\",\"selfLink\": {\"title\": \"selfLinkTitle\",\"rel\": \"selfLinkRel\",\"uri\": \"selfLinkUri\",\"uriBuilder\": {},\"rels\": [\"string\"],\"params\": {\"additionalProp1\": \"string\",\"additionalProp2\": \"string\",\"additionalProp3\": \"string\"},\"type\": \"string\"},\"created\": \"2020-01-22T09:38:15.436Z\",\"deactivated\": \"2020-01-22T09:38:15.437Z\"}]}" + print "jsonGenerated: " + response + + os.makedirs(cached_file_folder, 0777) + with open(cached_file_header, 'w') as f: + f.write("{\"Content-Length\": \"" + str(len(response)) + "\", \"Content-Type\": \"application/json\"}") + with open(cached_file_content, 'w') as f: + f.write(response) + return True else: return False @@ -305,6 +321,9 @@ class Proxy(SimpleHTTPServer.SimpleHTTPRequestHandler): if self.path.startswith("/dcae-service-types?asdcResourceId="): print "DCAE case deleting folder created " + cached_file_folder shutil.rmtree(cached_file_folder, ignore_errors=False, onerror=None) + elif self.path.startswith("/dcae-service-types"): + print "DCAE case deleting folder created " + cached_file_folder + shutil.rmtree(cached_file_folder, ignore_errors=False, onerror=None) else: print "NOT in DCAE case deleting folder created " + cached_file_folder -- cgit 1.2.3-korg From 504df70f2b210488f77274915ce8652d56978e18 Mon Sep 17 00:00:00 2001 From: sebdet Date: Thu, 30 Jan 2020 10:15:03 +0100 Subject: Add a unit test Add a test on Blueprint parser to validate a specific case Issue-ID: CLAMP-567 Change-Id: I2f0ed17bd8fd203b055fcb26614e747afcf85d9a Signed-off-by: sebdet --- .../controller/installer/BlueprintParserTest.java | 39 ++++++++++++------ src/test/resources/clds/new-microservice.yaml | 46 ++++++++++++++++++++++ 2 files changed, 72 insertions(+), 13 deletions(-) create mode 100644 src/test/resources/clds/new-microservice.yaml (limited to 'src/test/resources/clds') diff --git a/src/test/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintParserTest.java b/src/test/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintParserTest.java index dcaf2b952..e48bfc44a 100644 --- a/src/test/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintParserTest.java +++ b/src/test/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintParserTest.java @@ -25,6 +25,8 @@ package org.onap.clamp.clds.sdc.controller.installer; +import static org.assertj.core.api.Assertions.assertThat; + import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonObject; @@ -57,7 +59,7 @@ public class BlueprintParserTest { private static String microServiceTheWholeBlueprintValid; private static String microServiceBlueprintOldStyleTCA; private static String microServiceBlueprintOldStyleHolmes; - + private static String newMicroServiceBlueprint; private static JsonObject jsonObjectBlueprintValid; private static JsonObject jsonObjectBlueprintWithoutName; private static JsonObject jsonObjectBlueprintWithoutProperties; @@ -66,22 +68,22 @@ public class BlueprintParserTest { /** * Method to load Blueprints before all test. * - * @throws IOException - * In case of issues when opening the files + * @throws IOException In case of issues when opening the files */ @BeforeClass public static void loadBlueprints() throws IOException { microServiceTheWholeBlueprintValid = ResourceFileUtil - .getResourceAsString("clds/blueprint-with-microservice-chain.yaml"); + .getResourceAsString("clds/blueprint-with-microservice-chain.yaml"); microServiceBlueprintOldStyleTCA = ResourceFileUtil.getResourceAsString("clds/tca-old-style-ms.yaml"); + newMicroServiceBlueprint = ResourceFileUtil.getResourceAsString("clds/new-microservice.yaml"); microServiceBlueprintOldStyleHolmes = ResourceFileUtil.getResourceAsString("clds/holmes-old-style-ms.yaml"); String microServiceBlueprintValid = ResourceFileUtil - .getResourceAsString("clds/single-microservice-fragment-valid.yaml"); + .getResourceAsString("clds/single-microservice-fragment-valid.yaml"); String microServiceBlueprintWithoutName = ResourceFileUtil - .getResourceAsString("clds/single-microservice-fragment-without-name.yaml"); + .getResourceAsString("clds/single-microservice-fragment-without-name.yaml"); String microServiceBlueprintWithoutProperties = ResourceFileUtil - .getResourceAsString("clds/single-microservice-fragment-without-properties.yaml"); + .getResourceAsString("clds/single-microservice-fragment-without-properties.yaml"); jsonObjectBlueprintValid = yamlToJson(microServiceBlueprintValid); jsonObjectBlueprintWithoutName = yamlToJson(microServiceBlueprintWithoutName); @@ -97,7 +99,7 @@ public class BlueprintParserTest { public void getNameShouldReturnDefinedName() { final JsonObject jsonObject = jsonObjectBlueprintValid; String expectedName = jsonObject.get(jsonObject.keySet().iterator().next()).getAsJsonObject().get("properties") - .getAsJsonObject().get("name").getAsString(); + .getAsJsonObject().get("name").getAsString(); Entry entry = jsonObject.entrySet().iterator().next(); String actualName = new BlueprintParser().getName(entry); @@ -174,8 +176,8 @@ public class BlueprintParserTest { @Test public void fallBackToOneMicroServiceTcaTest() { - MicroService tcaMs = new MicroService(BlueprintParser.TCA, - "onap.policies.monitoring.cdap.tca.hi.lo.app", "", ""); + MicroService tcaMs = new MicroService(BlueprintParser.TCA, "onap.policies.monitoring.cdap.tca.hi.lo.app", "", + ""); List expected = Collections.singletonList(tcaMs); List actual = new BlueprintParser().fallbackToOneMicroService(microServiceBlueprintOldStyleTCA); @@ -184,16 +186,27 @@ public class BlueprintParserTest { @Test public void fallBackToOneMicroServiceHolmesTest() { - MicroService holmesMs = new MicroService(BlueprintParser.HOLMES, - "onap.policies.monitoring.cdap.tca.hi.lo.app", "", ""); + MicroService holmesMs = new MicroService(BlueprintParser.HOLMES, "onap.policies.monitoring.cdap.tca.hi.lo.app", + "", ""); List expected = Collections.singletonList(holmesMs); List actual = new BlueprintParser() - .fallbackToOneMicroService(microServiceBlueprintOldStyleHolmes); + .fallbackToOneMicroService(microServiceBlueprintOldStyleHolmes); Assert.assertEquals(expected, actual); } + @Test + public void newMicroServiceTest() { + List microServicesChain = new ChainGenerator() + .getChainOfMicroServices(new BlueprintParser().getMicroServices(newMicroServiceBlueprint)); + if (microServicesChain.isEmpty()) { + microServicesChain = new BlueprintParser().fallbackToOneMicroService(newMicroServiceBlueprint); + } + assertThat(microServicesChain.size()).isEqualTo(1); + assertThat(microServicesChain.get(0).getName()).isEqualTo("pmsh"); + } + private static JsonObject yamlToJson(String yamlString) { Yaml yaml = new Yaml(); Map map = yaml.load(yamlString); diff --git a/src/test/resources/clds/new-microservice.yaml b/src/test/resources/clds/new-microservice.yaml new file mode 100644 index 000000000..70c1eda46 --- /dev/null +++ b/src/test/resources/clds/new-microservice.yaml @@ -0,0 +1,46 @@ +tosca_definitions_version: cloudify_dsl_1_3 + +imports: + - "http://www.getcloudify.org/spec/cloudify/4.5.5/types.yaml" + - "https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R5/k8splugin/1.4.13/k8splugin_types.yaml" + - "https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R5/clamppolicyplugin/1.0.0/clamppolicyplugin_types.yaml" + +inputs: + tag_version: + type: string + description: docker image + policy_model_id: + type: 'string' + default: 'onap.policies.monitoring.dcae-pm-initiation-handler' + policy_id: + type: 'string' + default: 'onap.policies.monitoring.dcae-pm-initiation-handler' + +node_templates: + pmsh: + relationships: + - type: cloudify.relationships.depends_on + target: pmsh-policy + + interfaces: + cloudify.interfaces.lifecycle: + start: + inputs: + ports: + - '8443:0' + - '8081:0' + properties: + image: + get_input: tag_version + replicas: 1 + service_component_type: "pmsh" + service_component_name_override: "pmsh" + type: dcae.nodes.ContainerizedServiceComponent + + pmsh-policy: + type: clamp.nodes.policy + properties: + policy_model_id: + get_input: policy_model_id + policy_id: + get_input: policy_id -- cgit 1.2.3-korg From 9e01ce3b97e602fa7236bd9bc8a484807382f83b Mon Sep 17 00:00:00 2001 From: xuegao Date: Mon, 27 Jan 2020 12:10:32 +0100 Subject: Update deploy-loop route Update deploy-loop to support multiple blueprint deployments Issue-ID: CLAMP-571 Change-Id: If98e9305c36a01f86a522db002174f92f6ff5996 Signed-off-by: xuegao --- extra/sql/bulkload/create-tables.sql | 3 +- .../java/org/onap/clamp/loop/LoopController.java | 8 +- .../loop/components/external/DcaeComponent.java | 23 ++- .../onap/clamp/loop/template/LoopElementModel.java | 8 +- .../org/onap/clamp/loop/template/LoopTemplate.java | 2 +- .../org/onap/clamp/loop/template/PolicyModel.java | 6 +- .../policy/microservice/MicroServicePolicy.java | 22 +++ .../microservice/MicroServicePolicyService.java | 33 ++-- .../resources/clds/camel/routes/dcae-flows.xml | 102 +++++++++++- .../org/onap/clamp/loop/DcaeComponentTest.java | 3 +- .../org/onap/clamp/loop/DeployFlowTestItCase.java | 138 ++++++++++++++++ .../resources/clds/camel/routes/dcae-flows.xml | 184 ++++++++++++++++++++- 12 files changed, 508 insertions(+), 24 deletions(-) create mode 100644 src/test/java/org/onap/clamp/loop/DeployFlowTestItCase.java (limited to 'src/test/resources/clds') diff --git a/extra/sql/bulkload/create-tables.sql b/extra/sql/bulkload/create-tables.sql index 2e626b6a0..352b66175 100644 --- a/extra/sql/bulkload/create-tables.sql +++ b/extra/sql/bulkload/create-tables.sql @@ -57,7 +57,7 @@ created_timestamp datetime(6) not null, updated_by varchar(255), updated_timestamp datetime(6) not null, - blueprint_yaml MEDIUMTEXT not null, + blueprint_yaml MEDIUMTEXT, maximum_instances_allowed integer, svg_representation MEDIUMTEXT, service_uuid varchar(255), @@ -112,6 +112,7 @@ json_representation json not null, pdp_group varchar(255), context varchar(255), + dcae_blueprint_id varchar(255), dcae_deployment_id varchar(255), dcae_deployment_status_url varchar(255), device_type_scope varchar(255), diff --git a/src/main/java/org/onap/clamp/loop/LoopController.java b/src/main/java/org/onap/clamp/loop/LoopController.java index 64874a32d..c161c550e 100644 --- a/src/main/java/org/onap/clamp/loop/LoopController.java +++ b/src/main/java/org/onap/clamp/loop/LoopController.java @@ -40,10 +40,10 @@ import org.springframework.stereotype.Controller; public class LoopController { private final LoopService loopService; - private static final Type OPERATIONAL_POLICY_TYPE = new TypeToken>() { - }.getType(); - private static final Type MICROSERVICE_POLICY_TYPE = new TypeToken>() { - }.getType(); + private static final Type OPERATIONAL_POLICY_TYPE = new TypeToken>() {} + .getType(); + private static final Type MICROSERVICE_POLICY_TYPE = new TypeToken>() {} + .getType(); @Autowired public LoopController(LoopService loopService) { diff --git a/src/main/java/org/onap/clamp/loop/components/external/DcaeComponent.java b/src/main/java/org/onap/clamp/loop/components/external/DcaeComponent.java index 9b131299b..5d62e7151 100644 --- a/src/main/java/org/onap/clamp/loop/components/external/DcaeComponent.java +++ b/src/main/java/org/onap/clamp/loop/components/external/DcaeComponent.java @@ -31,6 +31,7 @@ import org.apache.camel.Exchange; import org.onap.clamp.clds.model.dcae.DcaeOperationStatusResponse; import org.onap.clamp.clds.util.JsonUtils; import org.onap.clamp.loop.Loop; +import org.onap.clamp.policy.microservice.MicroServicePolicy; public class DcaeComponent extends ExternalComponent { @@ -84,7 +85,6 @@ public class DcaeComponent extends ExternalComponent { return null; } } - /** * Generate the deployment id, it's random. * @@ -125,6 +125,27 @@ public class DcaeComponent extends ExternalComponent { return rootObject.toString(); } + /** + * Return the deploy payload for DCAE. + * + * @param loop The loop object + * @param microServiceName The micro service name + * @return The payload used to send deploy closed loop request + */ + public static String getDeployPayload(Loop loop, String microServiceName) { + JsonObject globalProp = loop.getGlobalPropertiesJson(); + JsonObject deploymentProp = globalProp.getAsJsonObject(DEPLOYMENT_PARAMETER).getAsJsonObject(microServiceName); + + String serviceTypeId = loop.getDcaeBlueprintId(); + + JsonObject rootObject = new JsonObject(); + rootObject.addProperty(DCAE_SERVICETYPE_ID, serviceTypeId); + if (deploymentProp != null) { + rootObject.add(DCAE_INPUTS, deploymentProp); + } + return rootObject.toString(); + } + /** * Return the uninstallation payload for DCAE. * diff --git a/src/main/java/org/onap/clamp/loop/template/LoopElementModel.java b/src/main/java/org/onap/clamp/loop/template/LoopElementModel.java index c22ca1a67..7f00c42ea 100644 --- a/src/main/java/org/onap/clamp/loop/template/LoopElementModel.java +++ b/src/main/java/org/onap/clamp/loop/template/LoopElementModel.java @@ -70,7 +70,7 @@ public class LoopElementModel extends AuditEntity implements Serializable { private String blueprint; /** - * The type of element + * The type of element. */ @Column(nullable = false, name = "loop_element_type") private String loopElementType; @@ -103,7 +103,7 @@ public class LoopElementModel extends AuditEntity implements Serializable { /** * Method to add a new policyModel to the list. * - * @param policyModel + * @param policyModel The policy model */ public void addPolicyModel(PolicyModel policyModel) { policyModels.add(policyModel); @@ -147,6 +147,8 @@ public class LoopElementModel extends AuditEntity implements Serializable { } /** + * loopElementType getter. + * * @return the loopElementType */ public String getLoopElementType() { @@ -154,6 +156,8 @@ public class LoopElementModel extends AuditEntity implements Serializable { } /** + * loopElementType setter. + * * @param loopElementType the loopElementType to set */ public void setLoopElementType(String loopElementType) { diff --git a/src/main/java/org/onap/clamp/loop/template/LoopTemplate.java b/src/main/java/org/onap/clamp/loop/template/LoopTemplate.java index 20574ff6c..7c059e19a 100644 --- a/src/main/java/org/onap/clamp/loop/template/LoopTemplate.java +++ b/src/main/java/org/onap/clamp/loop/template/LoopTemplate.java @@ -62,7 +62,7 @@ public class LoopTemplate extends AuditEntity implements Serializable { * other option would be to have independent blueprint for each microservices. * In that case they are stored in each MicroServiceModel */ - @Column(columnDefinition = "MEDIUMTEXT", nullable = false, name = "blueprint_yaml") + @Column(columnDefinition = "MEDIUMTEXT", name = "blueprint_yaml") private String blueprint; @Expose diff --git a/src/main/java/org/onap/clamp/loop/template/PolicyModel.java b/src/main/java/org/onap/clamp/loop/template/PolicyModel.java index 00d58a822..886e8c806 100644 --- a/src/main/java/org/onap/clamp/loop/template/PolicyModel.java +++ b/src/main/java/org/onap/clamp/loop/template/PolicyModel.java @@ -82,6 +82,8 @@ public class PolicyModel extends AuditEntity implements Serializable, Comparable private Set usedByElementModels = new HashSet<>(); /** + * usedByElementModels getter. + * * @return the usedByElementModels */ public Set getUsedByElementModels() { @@ -170,10 +172,10 @@ public class PolicyModel extends AuditEntity implements Serializable, Comparable /** * Constructor. * - * @param policyType The policyType (referenced in the blueprint) + * @param policyType The policyType (referenced in the blueprint * @param policyModelTosca The policy tosca model in yaml * @param version the version like 1.0.0 - * @param policyVariant Subtype for policy if it exists (could be used by UI) + * @param policyAcronym Subtype for policy if it exists (could be used by UI) */ public PolicyModel(String policyType, String policyModelTosca, String version, String policyAcronym) { this.policyModelType = policyType; diff --git a/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java b/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java index 445c1d5dd..43c8d6e05 100644 --- a/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java +++ b/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java @@ -101,6 +101,10 @@ public class MicroServicePolicy extends Policy implements Serializable { @Column(name = "dcae_deployment_status_url") private String dcaeDeploymentStatusUrl; + @Expose + @Column(name = "dcae_blueprint_id") + private String dcaeBlueprintId; + public MicroServicePolicy() { // serialization } @@ -253,6 +257,24 @@ public class MicroServicePolicy extends Policy implements Serializable { this.dcaeDeploymentStatusUrl = dcaeDeploymentStatusUrl; } + /** + * dcaeBlueprintId getter. + * + * @return the dcaeBlueprintId + */ + public String getDcaeBlueprintId() { + return dcaeBlueprintId; + } + + /** + * dcaeBlueprintId setter. + * + * @param dcaeBlueprintId the dcaeBlueprintId to set + */ + void setDcaeBlueprintId(String dcaeBlueprintId) { + this.dcaeBlueprintId = dcaeBlueprintId; + } + @Override public int hashCode() { final int prime = 31; diff --git a/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicyService.java b/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicyService.java index c431767f0..29a4e56d0 100644 --- a/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicyService.java +++ b/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicyService.java @@ -47,7 +47,7 @@ public class MicroServicePolicyService implements PolicyService updatePolicies(Loop loop, List newMicroservicePolicies) { return newMicroservicePolicies.stream().map(policy -> getAndUpdateMicroServicePolicy(loop, policy)) - .collect(Collectors.toSet()); + .collect(Collectors.toSet()); } @Override @@ -58,25 +58,38 @@ public class MicroServicePolicyService implements PolicyService updateMicroservicePolicyProperties(p, policy, loop)) - .orElse(new MicroServicePolicy(policy.getName(), policy.getModelType(), policy.getPolicyTosca(), - policy.getShared(), policy.getJsonRepresentation(), Sets.newHashSet(loop)))); + return repository.save( + repository.findById(policy.getName()).map(p -> updateMicroservicePolicyProperties(p, policy, loop)) + .orElse(new MicroServicePolicy(policy.getName(), policy.getModelType(), policy.getPolicyTosca(), + policy.getShared(), policy.getJsonRepresentation(), Sets.newHashSet(loop)))); } private MicroServicePolicy updateMicroservicePolicyProperties(MicroServicePolicy oldPolicy, - MicroServicePolicy newPolicy, Loop loop) { + MicroServicePolicy newPolicy, Loop loop) { oldPolicy.setConfigurationsJson(newPolicy.getConfigurationsJson()); if (!oldPolicy.getUsedByLoops().contains(loop)) { oldPolicy.getUsedByLoops().add(loop); } return oldPolicy; } + + /** + * Update the MicroService policy deployment related parameters. + * + * @param microServicePolicy The micro service policy + * @param deploymentId The deployment ID as returned by DCAE + * @param deploymentUrl The Deployment URL as returned by DCAE + * @throws MicroServicePolicy doesn't exist in DB + */ + public void updateDcaeDeploymentFields(MicroServicePolicy microServicePolicy, String deploymentId, + String deploymentUrl) { + microServicePolicy.setDcaeDeploymentId(deploymentId); + microServicePolicy.setDcaeDeploymentStatusUrl(deploymentUrl); + repository.save(microServicePolicy); + } } diff --git a/src/main/resources/clds/camel/routes/dcae-flows.xml b/src/main/resources/clds/camel/routes/dcae-flows.xml index fb3bc90ec..acaf897ff 100644 --- a/src/main/resources/clds/camel/routes/dcae-flows.xml +++ b/src/main/resources/clds/camel/routes/dcae-flows.xml @@ -1,6 +1,105 @@ + + + ${exchangeProperty['loopObject'].getLoopTemplate().getBlueprint()} != null + + + + + ${exchangeProperty['loopObject'].getLoopTemplate().getBlueprint()} == null + + + + + + + + + + + + ${exchangeProperty[loopObject].getMicroServicePolicies()} + + + ${body} + + + + false + + + + + + + + + PUT + + + application/json + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + + + + + + + java.lang.Exception + + false + + + DEPLOY loop status + (Dep-id:${exchangeProperty[dcaeDeploymentId]}, + StatusUrl:${exchangeProperty[dcaeStatusUrl]}) + + + + DCAE + + + + + + + + + + + @@ -41,6 +140,8 @@ + + @@ -64,7 +165,6 @@ - ", "yamlcontent", "{\"testname\":\"testvalue\"}", + "UUID-blueprint"); + LoopTemplate template = new LoopTemplate(); + template.setName("templateName"); + template.setBlueprint("yamlcontent"); + loopTest.setLoopTemplate(template); + MicroServicePolicy microServicePolicy = getMicroServicePolicy("configPolicyTest", "", + "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0", + "{\"param1\":\"value1\"}", true); + loopTest.addMicroServicePolicy(microServicePolicy); + loopService.saveOrUpdateLoop(loopTest); + Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext) + .withProperty("loopObject", loopTest).build(); + + camelContext.createProducerTemplate() + .send("direct:deploy-loop", myCamelExchange); + + Loop loopAfterTest = loopService.getLoop("ControlLoopTest"); + assertThat(loopAfterTest.getDcaeDeploymentStatusUrl()).isNotNull(); + assertThat(loopAfterTest.getDcaeDeploymentId()).isNotNull(); + } + + @Test + @Transactional + public void deployWithMultipleBlueprintTest() throws JsonSyntaxException, IOException { + Loop loopTest2 = createLoop("ControlLoopTest2", "", "yamlcontent", "{\"dcaeDeployParameters\": {" + + "\"microService1\": {\"location_id\": \"\", \"policy_id\": \"TCA_h2NMX_v1_0_ResourceInstanceName1_tca\"}," + + "\"microService2\": {\"location_id\": \"\", \"policy_id\": \"TCA_h2NMX_v1_0_ResourceInstanceName2_tca\"}" + + "}}", "UUID-blueprint"); + LoopTemplate template = new LoopTemplate(); + template.setName("templateName"); + loopTest2.setLoopTemplate(template); + MicroServicePolicy microServicePolicy1 = getMicroServicePolicy("microService1", "", + "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0", + "{\"param1\":\"value1\"}", true); + MicroServicePolicy microServicePolicy2 = getMicroServicePolicy("microService2", "", + "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0", + "{\"param1\":\"value1\"}", true); + loopTest2.addMicroServicePolicy(microServicePolicy1); + loopTest2.addMicroServicePolicy(microServicePolicy2); + loopService.saveOrUpdateLoop(loopTest2); + Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext) + .withProperty("loopObject", loopTest2).build(); + + camelContext.createProducerTemplate() + .send("direct:deploy-loop", myCamelExchange); + + Loop loopAfterTest = loopService.getLoop("ControlLoopTest2"); + Set policyList = loopAfterTest.getMicroServicePolicies(); + for (MicroServicePolicy policy : policyList) { + assertThat(policy.getDcaeDeploymentStatusUrl()).isNotNull(); + assertThat(policy.getDcaeDeploymentId()).isNotNull(); + } + assertThat(loopAfterTest.getDcaeDeploymentStatusUrl()).isNull(); + assertThat(loopAfterTest.getDcaeDeploymentId()).isNull(); + } + + private Loop createLoop(String name, String svgRepresentation, String blueprint, String globalPropertiesJson, + String dcaeBlueprintId) throws JsonSyntaxException, IOException { + Loop loop = new Loop(name, blueprint, svgRepresentation); + loop.setGlobalPropertiesJson(new Gson().fromJson(globalPropertiesJson, JsonObject.class)); + loop.setLastComputedState(LoopState.DESIGN); + loop.setDcaeBlueprintId(dcaeBlueprintId); + return loop; + } + + private MicroServicePolicy getMicroServicePolicy(String name, String modelType, String jsonRepresentation, + String policyTosca, String jsonProperties, boolean shared) { + MicroServicePolicy microService = new MicroServicePolicy(name, modelType, policyTosca, shared, + gson.fromJson(jsonRepresentation, JsonObject.class), new HashSet<>()); + microService.setConfigurationsJson(new Gson().fromJson(jsonProperties, JsonObject.class)); + return microService; + } +} diff --git a/src/test/resources/clds/camel/routes/dcae-flows.xml b/src/test/resources/clds/camel/routes/dcae-flows.xml index fb3bc90ec..7a85871f1 100644 --- a/src/test/resources/clds/camel/routes/dcae-flows.xml +++ b/src/test/resources/clds/camel/routes/dcae-flows.xml @@ -1,6 +1,187 @@ + + + ${exchangeProperty['loopObject'].getLoopTemplate().getBlueprint()} != null + + + + + ${exchangeProperty['loopObject'].getLoopTemplate().getBlueprint()} == null + + + + + + + + + + + + ${exchangeProperty[loopObject].getMicroServicePolicies()} + + + ${body} + + + + false + + + + + + + + + PUT + + + application/json + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + + + + + + + java.lang.Exception + + false + + + DEPLOY loop status + (Dep-id:${exchangeProperty[dcaeDeploymentId]}, + StatusUrl:${exchangeProperty[dcaeStatusUrl]}) + + + + DCAE + + + + + + + + + + + + @@ -41,6 +222,8 @@ + + @@ -64,7 +247,6 @@ - Date: Mon, 27 Jan 2020 15:21:59 +0100 Subject: Update undeploy-loop flow Update the undploy-loop flow to support the multiple blueprint deployment Issue-ID: CLAMP-627 Change-Id: Ic4187179e2ef2f574f8cc836eebc3608b8aee899 Signed-off-by: xuegao --- .../loop/components/external/DcaeComponent.java | 12 ++ .../resources/clds/camel/routes/dcae-flows.xml | 128 +++++++++++++- .../resources/clds/camel/routes/policy-flows.xml | 2 +- .../org/onap/clamp/loop/DeployFlowTestItCase.java | 70 ++++++++ .../resources/clds/camel/routes/dcae-flows.xml | 191 ++++++++++++--------- 5 files changed, 310 insertions(+), 93 deletions(-) (limited to 'src/test/resources/clds') diff --git a/src/main/java/org/onap/clamp/loop/components/external/DcaeComponent.java b/src/main/java/org/onap/clamp/loop/components/external/DcaeComponent.java index e22b425ac..acb7190f7 100644 --- a/src/main/java/org/onap/clamp/loop/components/external/DcaeComponent.java +++ b/src/main/java/org/onap/clamp/loop/components/external/DcaeComponent.java @@ -165,6 +165,18 @@ public class DcaeComponent extends ExternalComponent { return rootObject.toString(); } + /** + * Return the uninstallation payload for DCAE. + * + * @param microServicePolicy The microServicePolicy object + * @return The payload in string (json) + */ + public static String getUndeployPayload(MicroServicePolicy policy) { + JsonObject rootObject = new JsonObject(); + rootObject.addProperty(DCAE_SERVICETYPE_ID, policy.getDcaeBlueprintId()); + return rootObject.toString(); + } + @Override public ExternalComponentState computeState(Exchange camelExchange) { diff --git a/src/main/resources/clds/camel/routes/dcae-flows.xml b/src/main/resources/clds/camel/routes/dcae-flows.xml index a9d03528d..7137bab92 100644 --- a/src/main/resources/clds/camel/routes/dcae-flows.xml +++ b/src/main/resources/clds/camel/routes/dcae-flows.xml @@ -74,15 +74,22 @@ + + DEPLOY loop status + (Dep-id:${exchangeProperty[dcaeDeploymentId]}, + StatusUrl:${exchangeProperty[dcaeStatusUrl]}) + + + + DCAE + + - java.lang.Exception - - false - - DEPLOY loop status - (Dep-id:${exchangeProperty[dcaeDeploymentId]}, + DEPLOY micro service failed + (MicroService name:${exchangeProperty[microServicePolicy].getName()}), + Dep-id:${exchangeProperty[dcaeDeploymentId]}, StatusUrl:${exchangeProperty[dcaeStatusUrl]}) @@ -167,6 +174,114 @@ + + + ${exchangeProperty['loopObject'].getLoopTemplate().getBlueprint()} != null + + + + + ${exchangeProperty['loopObject'].getLoopTemplate().getBlueprint()} == null + + + + + + + + + + + + ${exchangeProperty[loopObject].getMicroServicePolicies()} + + + ${body} + + + + + ${exchangeProperty[microServicePolicy].getDcaeDeploymentId()} != null + + + + + + DELETE + + + application/json + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + + + + + + UNDEPLOY micro service successful + (MicroService name:${exchangeProperty[microServicePolicy].getName()}) + + + + DCAE + + + + + + + + + + + + UNDEPLOY micro service failed + (MicroService name:${exchangeProperty[microServicePolicy].getName()}) + + + + DCAE + + + + + + + + + + + - diff --git a/src/main/resources/clds/camel/routes/policy-flows.xml b/src/main/resources/clds/camel/routes/policy-flows.xml index 223498e81..97416a6cc 100644 --- a/src/main/resources/clds/camel/routes/policy-flows.xml +++ b/src/main/resources/clds/camel/routes/policy-flows.xml @@ -99,7 +99,7 @@ + uri="{{clamp.config.policy.pap.url}}/policy/pap/v1/policies/deployed/${exchangeProperty[policyName]}/1.0.0?bridgeEndpoint=true&useSystemProperties=true&throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&authMethod=Basic&authUsername={{clamp.config.policy.api.userName}}&authPassword={{clamp.config.policy.api.password}}&connectionTimeToLive=5000&httpClient.connectTimeout=10000&httpClient.socketTimeout=20000&authenticationPreemptive=true&connectionClose=true" /> ", "yamlcontent", "{\"testname\":\"testvalue\"}", + "UUID-blueprint"); + LoopTemplate template = new LoopTemplate(); + template.setName("templateName"); + template.setBlueprint("yamlcontent"); + loopTest.setLoopTemplate(template); + loopTest.setDcaeDeploymentId("testDeploymentId"); + loopTest.setDcaeDeploymentStatusUrl("testUrl"); + MicroServicePolicy microServicePolicy = getMicroServicePolicy("configPolicyTest", "", + "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0", + "{\"param1\":\"value1\"}", true); + loopTest.addMicroServicePolicy(microServicePolicy); + loopService.saveOrUpdateLoop(loopTest); + Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext) + .withProperty("loopObject", loopTest).build(); + + camelContext.createProducerTemplate() + .send("direct:undeploy-loop", myCamelExchange); + + Loop loopAfterTest = loopService.getLoop("ControlLoopTest"); + assertThat(loopAfterTest.getDcaeDeploymentStatusUrl().contains("/uninstall")).isTrue(); + } + + @Test + @Transactional + public void undeployWithMultipleBlueprintTest() throws JsonSyntaxException, IOException { + Loop loopTest2 = createLoop("ControlLoopTest2", "", "yamlcontent", "{\"dcaeDeployParameters\": {" + + "\"microService1\": {\"location_id\": \"\", \"policy_id\": \"TCA_h2NMX_v1_0_ResourceInstanceName1_tca\"}," + + "\"microService2\": {\"location_id\": \"\", \"policy_id\": \"TCA_h2NMX_v1_0_ResourceInstanceName2_tca\"}" + + "}}", "UUID-blueprint"); + LoopTemplate template = new LoopTemplate(); + template.setName("templateName"); + loopTest2.setLoopTemplate(template); + MicroServicePolicy microServicePolicy1 = getMicroServicePolicy("microService1", "", + "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0", + "{\"param1\":\"value1\"}", true, "testDeploymentId1", "testDeploymentStatusUrl1"); + MicroServicePolicy microServicePolicy2 = getMicroServicePolicy("microService2", "", + "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0", + "{\"param1\":\"value1\"}", true, "testDeploymentId2", "testDeploymentStatusUrl2"); + loopTest2.addMicroServicePolicy(microServicePolicy1); + loopTest2.addMicroServicePolicy(microServicePolicy2); + loopService.saveOrUpdateLoop(loopTest2); + Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext) + .withProperty("loopObject", loopTest2).build(); + + camelContext.createProducerTemplate() + .send("direct:undeploy-loop", myCamelExchange); + + Loop loopAfterTest = loopService.getLoop("ControlLoopTest2"); + Set policyList = loopAfterTest.getMicroServicePolicies(); + for (MicroServicePolicy policy : policyList) { + assertThat(policy.getDcaeDeploymentStatusUrl().contains("/uninstall")).isTrue(); + } + assertThat(loopAfterTest.getDcaeDeploymentStatusUrl()).isNull(); + assertThat(loopAfterTest.getDcaeDeploymentId()).isNull(); + } + private Loop createLoop(String name, String svgRepresentation, String blueprint, String globalPropertiesJson, String dcaeBlueprintId) throws JsonSyntaxException, IOException { Loop loop = new Loop(name, blueprint, svgRepresentation); @@ -135,4 +195,14 @@ public class DeployFlowTestItCase { microService.setConfigurationsJson(new Gson().fromJson(jsonProperties, JsonObject.class)); return microService; } + + private MicroServicePolicy getMicroServicePolicy(String name, String modelType, String jsonRepresentation, + String policyTosca, String jsonProperties, boolean shared, String deploymengId, String deploymentStatusUrl) { + MicroServicePolicy microService = getMicroServicePolicy(name, modelType, jsonRepresentation, + policyTosca, jsonProperties, shared); + + microService.setDcaeDeploymentId(deploymengId); + microService.setDcaeDeploymentStatusUrl(deploymentStatusUrl); + return microService; + } } diff --git a/src/test/resources/clds/camel/routes/dcae-flows.xml b/src/test/resources/clds/camel/routes/dcae-flows.xml index 552f02123..48cda7a05 100644 --- a/src/test/resources/clds/camel/routes/dcae-flows.xml +++ b/src/test/resources/clds/camel/routes/dcae-flows.xml @@ -81,8 +81,9 @@ false - DEPLOY loop status - (Dep-id:${exchangeProperty[dcaeDeploymentId]}, + DEPLOY micro service failed + (MicroService name:${exchangeProperty[microServicePolicy].getName()}), + Dep-id:${exchangeProperty[dcaeDeploymentId]}, StatusUrl:${exchangeProperty[dcaeStatusUrl]}) @@ -98,88 +99,6 @@ - @@ -249,6 +168,109 @@ + + + ${exchangeProperty['loopObject'].getLoopTemplate().getBlueprint()} != null + + + + + ${exchangeProperty['loopObject'].getLoopTemplate().getBlueprint()} == null + + + + + + + + + + + + ${exchangeProperty[loopObject].getMicroServicePolicies()} + + + ${body} + + + + + ${exchangeProperty[microServicePolicy].getDcaeDeploymentId()} != null + + + + + + DELETE + + + application/json + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + + + + + + + + + + + + + java.lang.Exception + + false + + + UNDEPLOY micro service failed + (MicroService name:${exchangeProperty[microServicePolicy].getName()}) + + + + DCAE + + + + + + + + + + + - -- cgit 1.2.3-korg From 81c1344c018e995e4f6f906435d0faab3480e13b Mon Sep 17 00:00:00 2001 From: xuegao Date: Tue, 4 Feb 2020 15:22:00 +0100 Subject: Update get Dcae Status flow Update the flow to get Dcae Status, supporting multiple blue print. Issue-ID: CLAMP-590 Change-Id: I6a05a40d4879082413d3ed83159467ea616c5d37 Signed-off-by: xuegao --- extra/sql/bulkload/create-tables.sql | 3 +- src/main/java/org/onap/clamp/loop/Loop.java | 19 +++- .../loop/components/external/DcaeComponent.java | 13 ++- .../org/onap/clamp/loop/template/LoopTemplate.java | 25 ++++- .../resources/clds/camel/routes/dcae-flows.xml | 47 ++++------ .../resources/clds/camel/routes/loop-flows.xml | 103 ++++++++++++++------ .../org/onap/clamp/loop/DcaeComponentTest.java | 4 +- .../org/onap/clamp/loop/DeployFlowTestItCase.java | 86 +++++++++++++++-- .../onap/clamp/loop/LoopControllerTestItCase.java | 4 + .../org/onap/clamp/loop/LoopServiceTestItCase.java | 7 ++ .../resources/clds/camel/routes/dcae-flows.xml | 26 +++--- .../resources/clds/camel/routes/loop-flows.xml | 104 +++++++++++++++------ 12 files changed, 328 insertions(+), 113 deletions(-) (limited to 'src/test/resources/clds') diff --git a/extra/sql/bulkload/create-tables.sql b/extra/sql/bulkload/create-tables.sql index 103276501..819d92591 100644 --- a/extra/sql/bulkload/create-tables.sql +++ b/extra/sql/bulkload/create-tables.sql @@ -62,6 +62,7 @@ dcae_blueprint_id varchar(255), maximum_instances_allowed integer, svg_representation MEDIUMTEXT, + unique_blueprint boolean default false, service_uuid varchar(255), primary key (name) ) engine=InnoDB; @@ -84,7 +85,7 @@ global_properties_json json, last_computed_state varchar(255) not null, svg_representation MEDIUMTEXT, - loop_template_name varchar(255), + loop_template_name varchar(255) not null, service_uuid varchar(255), primary key (name) ) engine=InnoDB; diff --git a/src/main/java/org/onap/clamp/loop/Loop.java b/src/main/java/org/onap/clamp/loop/Loop.java index 339812672..0ac8030d3 100644 --- a/src/main/java/org/onap/clamp/loop/Loop.java +++ b/src/main/java/org/onap/clamp/loop/Loop.java @@ -131,7 +131,7 @@ public class Loop extends AuditEntity implements Serializable { @Expose @ManyToOne(cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH }, fetch = FetchType.EAGER) - @JoinColumn(name = "loop_template_name") + @JoinColumn(name = "loop_template_name", nullable=false) private LoopTemplate loopTemplate; private void initializeExternalComponents() { @@ -253,10 +253,12 @@ public class Loop extends AuditEntity implements Serializable { } public Map getComponents() { + refreshDcaeComponents(); return components; } public ExternalComponent getComponent(String componentName) { + refreshDcaeComponents(); return this.components.get(componentName); } @@ -272,6 +274,17 @@ public class Loop extends AuditEntity implements Serializable { this.loopTemplate = loopTemplate; } + private void refreshDcaeComponents() { + if (!this.loopTemplate.getUniqueBlueprint()) { + this.components.remove("DCAE"); + for (MicroServicePolicy policy : this.microServicePolicies) { + if (!this.components.containsKey("DCAE_" + policy.getName())) { + this.addComponent(new DcaeComponent(policy.getName())); + } + } + } + } + /** * Generate the loop name. * @@ -282,9 +295,9 @@ public class Loop extends AuditEntity implements Serializable { * @return The generated loop name */ public static String generateLoopName(String serviceName, String serviceVersion, String resourceName, - String blueprintFilename) { + String blueprintFileName) { StringBuilder buffer = new StringBuilder("LOOP_").append(serviceName).append("_v").append(serviceVersion) - .append("_").append(resourceName).append("_").append(blueprintFilename.replaceAll(".yaml", "")); + .append("_").append(resourceName).append("_").append(blueprintFileName.replaceAll(".yaml", "")); return buffer.toString().replace('.', '_').replaceAll(" ", ""); } diff --git a/src/main/java/org/onap/clamp/loop/components/external/DcaeComponent.java b/src/main/java/org/onap/clamp/loop/components/external/DcaeComponent.java index 21960e387..7c0e3ccbb 100644 --- a/src/main/java/org/onap/clamp/loop/components/external/DcaeComponent.java +++ b/src/main/java/org/onap/clamp/loop/components/external/DcaeComponent.java @@ -48,6 +48,8 @@ public class DcaeComponent extends ExternalComponent { private static final String DCAE_SERVICETYPE_ID = "serviceTypeId"; private static final String DCAE_INPUTS = "inputs"; + private String name; + public static final ExternalComponentState BLUEPRINT_DEPLOYED = new ExternalComponentState("BLUEPRINT_DEPLOYED", "The DCAE blueprint has been found in the DCAE inventory but not yet instancianted for this loop"); public static final ExternalComponentState PROCESSING_MICROSERVICE_INSTALLATION = new ExternalComponentState( @@ -73,13 +75,20 @@ public class DcaeComponent extends ExternalComponent { public DcaeComponent() { super(BLUEPRINT_DEPLOYED); + this.name = "DCAE"; + } + + public DcaeComponent(String name) { + super(BLUEPRINT_DEPLOYED); + this.name = "DCAE_" + name; } @Override public String getComponentName() { - return "DCAE"; + return name; } + /** * Convert the json response to a DcaeOperationStatusResponse. * @@ -170,7 +179,7 @@ public class DcaeComponent extends ExternalComponent { /** * Return the uninstallation payload for DCAE. * - * @param microServicePolicy The microServicePolicy object + * @param policy The microServicePolicy object * @return The payload in string (json) */ public static String getUndeployPayload(MicroServicePolicy policy) { diff --git a/src/main/java/org/onap/clamp/loop/template/LoopTemplate.java b/src/main/java/org/onap/clamp/loop/template/LoopTemplate.java index b8adebae9..3e90c1e5b 100644 --- a/src/main/java/org/onap/clamp/loop/template/LoopTemplate.java +++ b/src/main/java/org/onap/clamp/loop/template/LoopTemplate.java @@ -70,7 +70,6 @@ public class LoopTemplate extends AuditEntity implements Serializable { @Column(columnDefinition = "MEDIUMTEXT", name = "blueprint_yaml") private String blueprint; - @Expose @Column(columnDefinition = "MEDIUMTEXT", name = "svg_representation") private String svgRepresentation; @@ -88,6 +87,10 @@ public class LoopTemplate extends AuditEntity implements Serializable { @Column(name = "maximum_instances_allowed") private Integer maximumInstancesAllowed; + @Expose + @Column(name = "unique_blueprint", columnDefinition = "boolean default false") + private boolean uniqueBlueprint; + /** * name getter. * @@ -140,6 +143,11 @@ public class LoopTemplate extends AuditEntity implements Serializable { */ public void setBlueprint(String blueprint) { this.blueprint = blueprint; + if (blueprint == null) { + this.uniqueBlueprint = false; + } else { + this.uniqueBlueprint = true; + } } /** @@ -244,6 +252,15 @@ public class LoopTemplate extends AuditEntity implements Serializable { this.modelService = modelService; } + /** + * uniqueBlueprint getter. + * + * @return the uniqueBlueprint + */ + public boolean getUniqueBlueprint() { + return uniqueBlueprint; + } + /** * Default constructor for serialization. */ @@ -265,7 +282,7 @@ public class LoopTemplate extends AuditEntity implements Serializable { public LoopTemplate(String name, String blueprint, String svgRepresentation, Integer maxInstancesAllowed, Service service) { this.name = name; - this.blueprint = blueprint; + this.setBlueprint(blueprint); this.svgRepresentation = svgRepresentation; this.maximumInstancesAllowed = maxInstancesAllowed; @@ -312,10 +329,10 @@ public class LoopTemplate extends AuditEntity implements Serializable { * @return The generated loop template name */ public static String generateLoopTemplateName(String serviceName, String serviceVersion, String resourceName, - String blueprintFilename) { + String blueprintFileName) { StringBuilder buffer = new StringBuilder("LOOP_TEMPLATE_").append(serviceName).append("_v") .append(serviceVersion).append("_").append(resourceName).append("_") - .append(blueprintFilename.replaceAll(".yaml", "")); + .append(blueprintFileName.replaceAll(".yaml", "")); return buffer.toString().replace('.', '_').replaceAll(" ", ""); } } diff --git a/src/main/resources/clds/camel/routes/dcae-flows.xml b/src/main/resources/clds/camel/routes/dcae-flows.xml index 7137bab92..8088c2a40 100644 --- a/src/main/resources/clds/camel/routes/dcae-flows.xml +++ b/src/main/resources/clds/camel/routes/dcae-flows.xml @@ -3,12 +3,12 @@ - ${exchangeProperty['loopObject'].getLoopTemplate().getBlueprint()} != null + ${exchangeProperty['loopObject'].getLoopTemplate().getUniqueBlueprint()} == true - ${exchangeProperty['loopObject'].getLoopTemplate().getBlueprint()} == null + ${exchangeProperty['loopObject'].getLoopTemplate().getUniqueBlueprint()} == false @@ -74,18 +74,14 @@ - - DEPLOY loop status - (Dep-id:${exchangeProperty[dcaeDeploymentId]}, - StatusUrl:${exchangeProperty[dcaeStatusUrl]}) - - - - DCAE - - + + java.lang.Exception + + false + DEPLOY micro service failed (MicroService name:${exchangeProperty[microServicePolicy].getName()}), @@ -176,12 +172,12 @@ - ${exchangeProperty['loopObject'].getLoopTemplate().getBlueprint()} != null + ${exchangeProperty['loopObject'].getLoopTemplate().getUniqueBlueprint()} == true - ${exchangeProperty['loopObject'].getLoopTemplate().getBlueprint()} == null + ${exchangeProperty['loopObject'].getLoopTemplate().getUniqueBlueprint()} == false @@ -244,25 +240,22 @@ - - UNDEPLOY micro service successful - (MicroService name:${exchangeProperty[microServicePolicy].getName()}) - - - - DCAE - - + + uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLogForComponent('Cannot Undeploy for the micro service: ${exchangeProperty[microServicePolicy].getName()}, the Deployment ID does not exist !','WARNING','DCAE',${exchangeProperty[loopObject]})" /> + java.lang.Exception + + false + UNDEPLOY micro service failed (MicroService name:${exchangeProperty[microServicePolicy].getName()}) @@ -355,7 +348,7 @@ + message="Getting DCAE deployment status for loop: ${exchangeProperty[loopObject].getName()} - ${exchangeProperty[dcaeComponent].getComponentName()}" /> @@ -375,9 +368,9 @@ + message="Endpoint to query Closed Loop status: ${exchangeProperty[getStatusUrl]}"> + uri="${exchangeProperty[getStatusUrl]}?bridgeEndpoint=true&useSystemProperties=true&throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&authMethod=Basic&authUsername={{clamp.config.dcae.deployment.userName}}&authPassword={{clamp.config.dcae.deployment.password}}&connectionTimeToLive=5000&httpClient.connectTimeout=10000&httpClient.socketTimeout=30000&authenticationPreemptive=true&connectionClose=true" /> - - ${exchangeProperty[loopObject].getComponent('DCAE')} - - - ${exchangeProperty[loopObject].getDcaeDeploymentStatusUrl()} - != null - - - false - - + - ${header.CamelHttpResponseCode} == 200 - - - + ${exchangeProperty['loopObject'].getLoopTemplate().getUniqueBlueprint()} == true + + + ${exchangeProperty[loopObject].getComponent('DCAE')} + + + ${exchangeProperty[loopObject].getDcaeDeploymentStatusUrl()} != null + + + ${exchangeProperty[loopObject].getDcaeDeploymentStatusUrl()} + + + false + + + + ${header.CamelHttpResponseCode} == 200 + + + + + + + + ${exchangeProperty[dcaeComponent].computeState(*)} + + + - - - - ${exchangeProperty[dcaeComponent].computeState(*)} - - - - - - + + ${exchangeProperty['loopObject'].getLoopTemplate().getUniqueBlueprint()} == false + + + ${exchangeProperty[loopObject].getMicroServicePolicies()} + + + ${body} + + + ${exchangeProperty[loopObject].getComponent('DCAE_' + ${exchangeProperty[microServicePolicy].getName())} + + + ${exchangeProperty[microServicePolicy].getDcaeDeploymentStatusUrl()} != null + + + ${exchangeProperty[microServicePolicy].getDcaeDeploymentStatusUrl()} + + + false + + + + ${header.CamelHttpResponseCode} == 200 + + + + + + + + ${exchangeProperty[dcaeComponent].computeState(*)} + + + + + > + + + ", "yamlcontent", "{\"dcaeDeployParameters\": {" - + "\"microService1\": {\"location_id\": \"\", \"policy_id\": \"TCA_h2NMX_v1_0_ResourceInstanceName1_tca\"}," - + "\"microService2\": {\"location_id\": \"\", \"policy_id\": \"TCA_h2NMX_v1_0_ResourceInstanceName2_tca\"}" + + "\"microService1\": {\"location_id\": \"\", \"policy_id\": \"TCA_ResourceInstanceName1_tca\"}," + + "\"microService2\": {\"location_id\": \"\", \"policy_id\": \"TCA_ResourceInstanceName2_tca\"}" + "}}", "UUID-blueprint"); LoopTemplate template = new LoopTemplate(); template.setName("templateName"); @@ -98,7 +101,7 @@ public class DeployFlowTestItCase { "tosca_definitions_version: tosca_simple_yaml_1_0_0", "{\"param1\":\"value1\"}", true); loopTest2.addMicroServicePolicy(microServicePolicy1); loopTest2.addMicroServicePolicy(microServicePolicy2); - loopService.saveOrUpdateLoop(loopTest2); + loopsRepository.saveAndFlush(loopTest2); Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext).withProperty("loopObject", loopTest2) .build(); @@ -143,8 +146,8 @@ public class DeployFlowTestItCase { @Transactional public void undeployWithMultipleBlueprintTest() throws JsonSyntaxException, IOException { Loop loopTest2 = createLoop("ControlLoopTest2", "", "yamlcontent", "{\"dcaeDeployParameters\": {" - + "\"microService1\": {\"location_id\": \"\", \"policy_id\": \"TCA_h2NMX_v1_0_ResourceInstanceName1_tca\"}," - + "\"microService2\": {\"location_id\": \"\", \"policy_id\": \"TCA_h2NMX_v1_0_ResourceInstanceName2_tca\"}" + + "\"microService1\": {\"location_id\": \"\", \"policy_id\": \"TCA_ResourceInstanceName1_tca\"}," + + "\"microService2\": {\"location_id\": \"\", \"policy_id\": \"TCA_ResourceInstanceName2_tca\"}" + "}}", "UUID-blueprint"); LoopTemplate template = new LoopTemplate(); template.setName("templateName"); @@ -157,7 +160,7 @@ public class DeployFlowTestItCase { "testDeploymentId2", "testDeploymentStatusUrl2"); loopTest2.addMicroServicePolicy(microServicePolicy1); loopTest2.addMicroServicePolicy(microServicePolicy2); - loopService.saveOrUpdateLoop(loopTest2); + loopsRepository.saveAndFlush(loopTest2); Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext).withProperty("loopObject", loopTest2) .build(); @@ -172,6 +175,77 @@ public class DeployFlowTestItCase { assertThat(loopAfterTest.getDcaeDeploymentId()).isNull(); } + + @Test + @Transactional + public void getStatusWithSingleBlueprintTest() throws JsonSyntaxException, IOException { + Loop loopTest = createLoop("ControlLoopTest", "", "yamlcontent", "{\"testname\":\"testvalue\"}", + "UUID-blueprint"); + LoopTemplate template = new LoopTemplate(); + template.setName("templateName"); + template.setBlueprint("yamlcontent"); + loopTest.setLoopTemplate(template); + MicroServicePolicy microServicePolicy = getMicroServicePolicy("configPolicyTest", "", + "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0", + "{\"param1\":\"value1\"}", true); + loopTest.addMicroServicePolicy(microServicePolicy); + loopService.saveOrUpdateLoop(loopTest); + assertThat(loopTest.getComponents().size()).isEqualTo(2); + assertThat(loopTest.getComponent("DCAE")).isNotNull(); + assertThat(loopTest.getComponent("POLICY")).isNotNull(); + Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext).withProperty("loopObject", loopTest) + .build(); + + camelContext.createProducerTemplate().send("direct:update-dcae-status-for-loop", myCamelExchange); + + assertThat(loopTest.getComponent("DCAE").getState().getStateName()).isEqualTo("BLUEPRINT_DEPLOYED"); + + Loop loopAfterTest = loopService.getLoop("ControlLoopTest"); + assertThat(loopAfterTest.getComponents().size()).isEqualTo(2); + assertThat(loopAfterTest.getComponent("DCAE")).isNotNull(); + assertThat(loopAfterTest.getComponent("POLICY")).isNotNull(); + } + + @Test + @Transactional + public void getStatusWithMultipleBlueprintTest() throws JsonSyntaxException, IOException { + Loop loopTest = createLoop("ControlLoopTest", "", "yamlcontent", "{\"testname\":\"testvalue\"}", + "UUID-blueprint"); + LoopTemplate template = new LoopTemplate(); + template.setName("templateName"); + loopTest.setLoopTemplate(template); + MicroServicePolicy microServicePolicy = getMicroServicePolicy("configPolicyTest", "", + "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0", + "{\"param1\":\"value1\"}", true); + MicroServicePolicy microServicePolicy2 = getMicroServicePolicy("configPolicyTest2", "", + "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0", + "{\"param1\":\"value1\"}", true); + loopTest.addMicroServicePolicy(microServicePolicy); + loopTest.addMicroServicePolicy(microServicePolicy2); + loopService.saveOrUpdateLoop(loopTest); + assertThat(loopTest.getComponents().size()).isEqualTo(3); + assertThat(loopTest.getComponent("DCAE")).isNull(); + assertThat(loopTest.getComponent("DCAE_configPolicyTest")).isNotNull(); + assertThat(loopTest.getComponent("DCAE_configPolicyTest2")).isNotNull(); + assertThat(loopTest.getComponent("POLICY")).isNotNull(); + Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext).withProperty("loopObject", loopTest) + .build(); + + camelContext.createProducerTemplate().send("direct:update-dcae-status-for-loop", myCamelExchange); + + assertThat(loopTest.getComponent("DCAE_configPolicyTest").getState().getStateName()) + .isEqualTo("BLUEPRINT_DEPLOYED"); + assertThat(loopTest.getComponent("DCAE_configPolicyTest2").getState().getStateName()) + .isEqualTo("BLUEPRINT_DEPLOYED"); + + Loop loopAfterTest = loopService.getLoop("ControlLoopTest"); + assertThat(loopAfterTest.getComponents().size()).isEqualTo(3); + assertThat(loopAfterTest.getComponent("DCAE")).isNull(); + assertThat(loopAfterTest.getComponent("POLICY")).isNotNull(); + assertThat(loopTest.getComponent("DCAE_configPolicyTest")).isNotNull(); + assertThat(loopTest.getComponent("DCAE_configPolicyTest2")).isNotNull(); + } + private Loop createLoop(String name, String svgRepresentation, String blueprint, String globalPropertiesJson, String dcaeBlueprintId) throws JsonSyntaxException, IOException { Loop loop = new Loop(name, svgRepresentation); diff --git a/src/test/java/org/onap/clamp/loop/LoopControllerTestItCase.java b/src/test/java/org/onap/clamp/loop/LoopControllerTestItCase.java index ad37bcc88..f1e5c0927 100644 --- a/src/test/java/org/onap/clamp/loop/LoopControllerTestItCase.java +++ b/src/test/java/org/onap/clamp/loop/LoopControllerTestItCase.java @@ -39,6 +39,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.onap.clamp.clds.Application; import org.onap.clamp.clds.util.JsonUtils; +import org.onap.clamp.loop.template.LoopTemplate; import org.onap.clamp.policy.microservice.MicroServicePolicy; import org.onap.clamp.policy.microservice.MicroServicePolicyService; import org.onap.clamp.policy.operational.OperationalPolicy; @@ -68,6 +69,9 @@ public class LoopControllerTestItCase { private void saveTestLoopToDb() { Loop testLoop = createTestLoop(EXAMPLE_LOOP_NAME, "blueprint", "representation"); testLoop.setGlobalPropertiesJson(JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class)); + LoopTemplate template = new LoopTemplate(); + template.setName("testTemplate"); + testLoop.setLoopTemplate(template); loopService.saveOrUpdateLoop(testLoop); } diff --git a/src/test/java/org/onap/clamp/loop/LoopServiceTestItCase.java b/src/test/java/org/onap/clamp/loop/LoopServiceTestItCase.java index 615826eda..8089bf1a8 100644 --- a/src/test/java/org/onap/clamp/loop/LoopServiceTestItCase.java +++ b/src/test/java/org/onap/clamp/loop/LoopServiceTestItCase.java @@ -40,6 +40,7 @@ import org.onap.clamp.clds.util.JsonUtils; import org.onap.clamp.loop.log.LogType; import org.onap.clamp.loop.log.LoopLog; import org.onap.clamp.loop.log.LoopLogService; +import org.onap.clamp.loop.template.LoopTemplate; import org.onap.clamp.policy.microservice.MicroServicePolicy; import org.onap.clamp.policy.microservice.MicroServicePolicyService; import org.onap.clamp.policy.operational.OperationalPolicy; @@ -175,6 +176,9 @@ public class LoopServiceTestItCase { private void saveTestLoopToDb() { Loop testLoop = createTestLoop(EXAMPLE_LOOP_NAME, "blueprint", "representation"); testLoop.setGlobalPropertiesJson(JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class)); + LoopTemplate template = new LoopTemplate(); + template.setName("testTemplate"); + testLoop.setLoopTemplate(template); loopService.saveOrUpdateLoop(testLoop); } @@ -296,6 +300,9 @@ public class LoopServiceTestItCase { // Add log Loop loop = loopsRepository.findById(EXAMPLE_LOOP_NAME).orElse(null); loop.addLog(new LoopLog("test", LogType.INFO, "CLAMP", loop)); + LoopTemplate template = new LoopTemplate(); + template.setName("testTemplate"); + loop.setLoopTemplate(template); loop = loopService.saveOrUpdateLoop(loop); // Add op policy OperationalPolicy operationalPolicy = new OperationalPolicy("opPolicy", null, diff --git a/src/test/resources/clds/camel/routes/dcae-flows.xml b/src/test/resources/clds/camel/routes/dcae-flows.xml index 48cda7a05..8088c2a40 100644 --- a/src/test/resources/clds/camel/routes/dcae-flows.xml +++ b/src/test/resources/clds/camel/routes/dcae-flows.xml @@ -3,12 +3,12 @@ - ${exchangeProperty['loopObject'].getLoopTemplate().getBlueprint()} != null + ${exchangeProperty['loopObject'].getLoopTemplate().getUniqueBlueprint()} == true - ${exchangeProperty['loopObject'].getLoopTemplate().getBlueprint()} == null + ${exchangeProperty['loopObject'].getLoopTemplate().getUniqueBlueprint()} == false @@ -74,6 +74,8 @@ + java.lang.Exception @@ -170,12 +172,12 @@ - ${exchangeProperty['loopObject'].getLoopTemplate().getBlueprint()} != null + ${exchangeProperty['loopObject'].getLoopTemplate().getUniqueBlueprint()} == true - ${exchangeProperty['loopObject'].getLoopTemplate().getBlueprint()} == null + ${exchangeProperty['loopObject'].getLoopTemplate().getUniqueBlueprint()} == false @@ -238,12 +240,14 @@ + + uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLogForComponent('Cannot Undeploy for the micro service: ${exchangeProperty[microServicePolicy].getName()}, the Deployment ID does not exist !','WARNING','DCAE',${exchangeProperty[loopObject]})" /> @@ -344,7 +348,7 @@ + message="Getting DCAE deployment status for loop: ${exchangeProperty[loopObject].getName()} - ${exchangeProperty[dcaeComponent].getComponentName()}" /> @@ -364,9 +368,9 @@ + message="Endpoint to query Closed Loop status: ${exchangeProperty[getStatusUrl]}"> + uri="${exchangeProperty[getStatusUrl]}?bridgeEndpoint=true&useSystemProperties=true&throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&authMethod=Basic&authUsername={{clamp.config.dcae.deployment.userName}}&authPassword={{clamp.config.dcae.deployment.password}}&connectionTimeToLive=5000&httpClient.connectTimeout=10000&httpClient.socketTimeout=30000&authenticationPreemptive=true&connectionClose=true" /> ${exchangeProperty[dcaeResponseList]} - - ${body} - + + ${body} + diff --git a/src/test/resources/clds/camel/routes/loop-flows.xml b/src/test/resources/clds/camel/routes/loop-flows.xml index 036e8efc8..c4e9fee6d 100644 --- a/src/test/resources/clds/camel/routes/loop-flows.xml +++ b/src/test/resources/clds/camel/routes/loop-flows.xml @@ -17,7 +17,6 @@ - @@ -109,37 +108,84 @@ - - ${exchangeProperty[loopObject].getComponent('DCAE')} - - - ${exchangeProperty[loopObject].getDcaeDeploymentStatusUrl()} - != null - - - false - - + - ${header.CamelHttpResponseCode} == 200 - - - + ${exchangeProperty['loopObject'].getLoopTemplate().getUniqueBlueprint()} == true + + + ${exchangeProperty[loopObject].getComponent('DCAE')} + + + ${exchangeProperty[loopObject].getDcaeDeploymentStatusUrl()} != null + + + ${exchangeProperty[loopObject].getDcaeDeploymentStatusUrl()} + + + false + + + + ${header.CamelHttpResponseCode} == 200 + + + + + + + + ${exchangeProperty[dcaeComponent].computeState(*)} + + + - - - - ${exchangeProperty[dcaeComponent].computeState(*)} - - - - - - + + ${exchangeProperty['loopObject'].getLoopTemplate().getUniqueBlueprint()} == false + + + ${exchangeProperty[loopObject].getMicroServicePolicies()} + + + ${body} + + + ${exchangeProperty[loopObject].getComponent('DCAE_' + ${exchangeProperty[microServicePolicy].getName())} + + + ${exchangeProperty[microServicePolicy].getDcaeDeploymentStatusUrl()} != null + + + ${exchangeProperty[microServicePolicy].getDcaeDeploymentStatusUrl()} + + + false + + + + ${header.CamelHttpResponseCode} == 200 + + + + + + + + ${exchangeProperty[dcaeComponent].computeState(*)} + + + + + > + + + Date: Mon, 3 Feb 2020 20:27:59 +0100 Subject: Get policy in CsarInstaller Get the policies on the PEF engine when installing the CSAR (if needed) Issue-ID: CLAMP-518 Change-Id: I2cca157821c22ef63dc748984140287667cc4663 Signed-off-by: sebdet --- extra/docker/clamp/clamp.env | 2 +- extra/docker/heat/clamp.env | 2 +- extra/sql/bulkload/create-tables.sql | 2 +- extra/sql/dump/test-data.sql | 22 +- .../clamp/clds/client/PolicyEngineServices.java | 110 ++ .../onap/clamp/clds/config/ClampProperties.java | 65 +- .../clamp/clds/config/PolicyConfiguration.java | 133 --- .../config/spring/SdcControllerConfiguration.java | 4 +- .../sdc/controller/BlueprintParserException.java | 54 + .../clamp/clds/model/dcae/DcaeInventoryCache.java | 2 +- .../clds/sdc/controller/SdcSingleController.java | 5 + .../installer/BlueprintMicroService.java | 93 ++ .../sdc/controller/installer/BlueprintParser.java | 161 +-- .../sdc/controller/installer/ChainGenerator.java | 24 +- .../sdc/controller/installer/MicroService.java | 93 -- .../clamp/clds/util/drawing/ClampGraphBuilder.java | 8 +- .../org/onap/clamp/clds/util/drawing/Painter.java | 10 +- .../onap/clamp/clds/util/drawing/SvgFacade.java | 4 +- .../java/org/onap/clamp/loop/CsarInstaller.java | 69 +- .../onap/clamp/loop/template/LoopElementModel.java | 2 +- .../org/onap/clamp/loop/template/PolicyModel.java | 10 +- .../clamp/policy/downloader/PolicyDownloader.java | 61 ++ src/main/resources/application-noaaf.properties | 22 +- src/main/resources/application.properties | 30 +- .../resources/clds/camel/routes/policy-flows.xml | 1075 +++++++++++--------- .../clamp/clds/it/PolicyConfigurationItCase.java | 71 -- .../it/config/CldsReferencePropertiesItCase.java | 33 +- .../config/SdcControllersConfigurationItCase.java | 2 +- .../controller/installer/BlueprintParserTest.java | 94 +- .../controller/installer/ChainGeneratorTest.java | 39 +- .../org/onap/clamp/clds/util/CryptoUtilsTest.java | 2 +- .../clds/util/drawing/ClampGraphBuilderTest.java | 16 +- .../org/onap/clamp/loop/CsarInstallerItCase.java | 22 +- .../onap/clamp/loop/PolicyModelServiceItCase.java | 17 +- src/test/resources/application.properties | 29 +- ...OperationalPolicyRepresentationBuilderTest.java | 52 - .../resources/clds/blueprint-parser-mapping.json | 18 - .../clds/blueprint-with-microservice-chain.yaml | 238 +++-- .../resources/clds/camel/rest/clamp-api-v2.xml | 42 + .../resources/clds/camel/routes/policy-flows.xml | 1075 +++++++++++--------- src/test/resources/clds/holmes-old-style-ms.yaml | 117 --- .../clds/single-microservice-fragment-invalid.yaml | 25 + ...e-microservice-fragment-valid-with-version.yaml | 21 + .../clds/single-microservice-fragment-valid.yaml | 25 - src/test/resources/clds/tca-old-style-ms.yaml | 169 --- .../example/sdc/blueprint-dcae/holmes.yaml | 174 ---- .../example/sdc/blueprint-dcae/not-recognized.yaml | 130 --- .../sdc/blueprint-dcae/prop-text-for-tca-2.json | 48 - .../sdc/blueprint-dcae/prop-text-for-tca-3.json | 48 - .../sdc/blueprint-dcae/prop-text-for-tca.json | 36 - src/test/resources/logback.xml | 91 +- src/test/resources/tosca/dcea_blueprint.yml | 170 ---- 52 files changed, 2122 insertions(+), 2745 deletions(-) create mode 100644 src/main/java/org/onap/clamp/clds/client/PolicyEngineServices.java delete mode 100644 src/main/java/org/onap/clamp/clds/config/PolicyConfiguration.java create mode 100644 src/main/java/org/onap/clamp/clds/exception/sdc/controller/BlueprintParserException.java create mode 100644 src/main/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintMicroService.java delete mode 100644 src/main/java/org/onap/clamp/clds/sdc/controller/installer/MicroService.java create mode 100644 src/main/java/org/onap/clamp/policy/downloader/PolicyDownloader.java delete mode 100644 src/test/java/org/onap/clamp/clds/it/PolicyConfigurationItCase.java delete mode 100644 src/test/resources/clds/OperationalPolicyRepresentationBuilderTest.java delete mode 100644 src/test/resources/clds/blueprint-parser-mapping.json delete mode 100644 src/test/resources/clds/holmes-old-style-ms.yaml create mode 100644 src/test/resources/clds/single-microservice-fragment-invalid.yaml create mode 100644 src/test/resources/clds/single-microservice-fragment-valid-with-version.yaml delete mode 100644 src/test/resources/clds/single-microservice-fragment-valid.yaml delete mode 100644 src/test/resources/clds/tca-old-style-ms.yaml delete mode 100644 src/test/resources/example/sdc/blueprint-dcae/holmes.yaml delete mode 100644 src/test/resources/example/sdc/blueprint-dcae/not-recognized.yaml delete mode 100644 src/test/resources/example/sdc/blueprint-dcae/prop-text-for-tca-2.json delete mode 100644 src/test/resources/example/sdc/blueprint-dcae/prop-text-for-tca-3.json delete mode 100644 src/test/resources/example/sdc/blueprint-dcae/prop-text-for-tca.json delete mode 100644 src/test/resources/tosca/dcea_blueprint.yml (limited to 'src/test/resources/clds') diff --git a/extra/docker/clamp/clamp.env b/extra/docker/clamp/clamp.env index 06381f941..3270db2c7 100644 --- a/extra/docker/clamp/clamp.env +++ b/extra/docker/clamp/clamp.env @@ -1,2 +1,2 @@ ### Be careful, this must be in one line only ### -SPRING_APPLICATION_JSON={"spring.datasource.cldsdb.url":"jdbc:mariadb:sequential://db:3306/cldsdb4?autoReconnect=true&connectTimeout=10000&socketTimeout=10000&retriesAllDown=3","spring.profiles.active":"clamp-default,clamp-default-user,clamp-sdc-controller-new,clamp-ssl-config","clamp.config.policy.api.url":"http4://third-party-proxy:8085","clamp.config.policy.pap.url":"http4://third-party-proxy:8085","clamp.config.dcae.inventory.url":"http://third-party-proxy:8085","clamp.config.dcae.deployment.url":"http4://third-party-proxy:8085"} +SPRING_APPLICATION_JSON={"spring.datasource.cldsdb.url":"jdbc:mariadb:sequential://db:3306/cldsdb4?autoReconnect=true&connectTimeout=10000&socketTimeout=10000&retriesAllDown=3","spring.profiles.active":"clamp-default,clamp-default-user,clamp-sdc-controller,clamp-ssl-config","clamp.config.policy.api.url":"http4://third-party-proxy:8085","clamp.config.policy.pap.url":"http4://third-party-proxy:8085","clamp.config.dcae.inventory.url":"http://third-party-proxy:8085","clamp.config.dcae.deployment.url":"http4://third-party-proxy:8085"} diff --git a/extra/docker/heat/clamp.env b/extra/docker/heat/clamp.env index abca2676d..a06e45b29 100644 --- a/extra/docker/heat/clamp.env +++ b/extra/docker/heat/clamp.env @@ -1,2 +1,2 @@ ### Be careful, this must be in one line only ### -SPRING_APPLICATION_JSON={"spring.datasource.cldsdb.url":"jdbc:mariadb:sequential://db:3306/cldsdb4?autoReconnect=true&connectTimeout=10000&socketTimeout=10000&retriesAllDown=3","clamp.config.policy.pdpUrl1":"https://policy.api.simpledemo.onap.org:8081/pdp/ , testpdp, alpha123","clamp.config.policy.pdpUrl2":"https://policy.api.simpledemo.onap.org:8081/pdp/ , testpdp, alpha123","clamp.config.policy.papUrl":"https://policy.api.simpledemo.onap.org:9091/pap/ , testpap, alpha123"} +SPRING_APPLICATION_JSON={"spring.datasource.cldsdb.url":"jdbc:mariadb:sequential://db:3306/cldsdb4?autoReconnect=true&connectTimeout=10000&socketTimeout=10000&retriesAllDown=3"} diff --git a/extra/sql/bulkload/create-tables.sql b/extra/sql/bulkload/create-tables.sql index 819d92591..4edb46916 100644 --- a/extra/sql/bulkload/create-tables.sql +++ b/extra/sql/bulkload/create-tables.sql @@ -36,7 +36,7 @@ created_timestamp datetime(6) not null, updated_by varchar(255), updated_timestamp datetime(6) not null, - blueprint_yaml MEDIUMTEXT not null, + blueprint_yaml MEDIUMTEXT, dcae_blueprint_id varchar(255), loop_element_type varchar(255) not null, primary key (name) diff --git a/extra/sql/dump/test-data.sql b/extra/sql/dump/test-data.sql index 08d3ca507..629ce6527 100644 --- a/extra/sql/dump/test-data.sql +++ b/extra/sql/dump/test-data.sql @@ -44,7 +44,7 @@ UNLOCK TABLES; LOCK TABLES `hibernate_sequence` WRITE; /*!40000 ALTER TABLE `hibernate_sequence` DISABLE KEYS */; -INSERT INTO `hibernate_sequence` VALUES (6); +INSERT INTO `hibernate_sequence` VALUES (10); /*!40000 ALTER TABLE `hibernate_sequence` ENABLE KEYS */; UNLOCK TABLES; @@ -54,7 +54,7 @@ UNLOCK TABLES; LOCK TABLES `loop_element_models` WRITE; /*!40000 ALTER TABLE `loop_element_models` DISABLE KEYS */; -INSERT INTO `loop_element_models` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app',NULL,'2020-01-30 15:21:59.168542','','2020-01-30 15:21:59.460129','tosca_definitions_version: cloudify_dsl_1_3\nimports:\n- http://www.getcloudify.org/spec/cloudify/3.4/types.yaml\n- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/docker/2.2.0/node-type.yaml\n- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml\n- http://onap.org:8081/repository/solutioning01-mte2-raw/type_files/dmaap/dmaap_mr.yaml\ninputs:\n location_id:\n type: string\n service_id:\n type: string\n policy_id:\n type: string\nnode_templates:\n policy_0:\n type: dcae.nodes.policy\n properties:\n policy_id: \n get_input: policy_id\n policy_model_id: \"onap.policies.monitoring.cdap.tca.hi.lo.app\"\n cdap_host_host:\n type: dcae.nodes.StreamingAnalytics.SelectedCDAPInfrastructure\n properties:\n location_id:\n get_input: location_id\n scn_override: cdap_broker.solutioning-central.dcae.onap.org\n interfaces:\n cloudify.interfaces.lifecycle: {\n }\n tca_tca:\n type: dcae.nodes.MicroService.cdap\n properties:\n app_config:\n appDescription: DCAE Analytics Threshold Crossing Alert Application\n appName: dcae-tca\n tcaSubscriberOutputStreamName: TCASubscriberOutputStream\n tcaVESAlertsTableName: TCAVESAlertsTable\n tcaVESAlertsTableTTLSeconds: \'1728000\'\n tcaVESMessageStatusTableName: TCAVESMessageStatusTable\n tcaVESMessageStatusTableTTLSeconds: \'86400\'\n thresholdCalculatorFlowletInstances: \'2\'\n app_preferences:\n publisherContentType: application/json\n publisherHostName: mrlocal-mtnjftle01.onap.org\n publisherHostPort: \'3905\'\n publisherMaxBatchSize: \'10\'\n publisherMaxRecoveryQueueSize: \'100000\'\n publisherPollingInterval: \'20000\'\n publisherProtocol: https\n publisherTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESPub\n publisherUserName: test@tca.af.dcae.onap.org\n publisherUserPassword: password\n subscriberConsumerGroup: OpenDCAE-c12\n subscriberConsumerId: c12\n subscriberContentType: application/json\n subscriberHostName: mrlocal-mtnjftle01.onap.org\n subscriberHostPort: \'3905\'\n subscriberMessageLimit: \'-1\'\n subscriberPollingInterval: \'20000\'\n subscriberProtocol: https\n subscriberTimeoutMS: \'-1\'\n subscriberTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESSub\n subscriberUserName: test@tca.af.dcae.onap.org\n subscriberUserPassword: password\n tca_policy: null\n artifact_name: dcae-analytics-tca\n artifact_version: 1.0.0\n connections:\n streams_publishes: [\n ]\n streams_subscribes: [\n ]\n jar_url: http://somejar\n location_id:\n get_input: location_id\n namespace: cdap_tca_hi_lo\n programs:\n - program_id: TCAVESCollectorFlow\n program_type: flows\n - program_id: TCADMaaPMRSubscriberWorker\n program_type: workers\n - program_id: TCADMaaPMRPublisherWorker\n program_type: workers\n service_component_type: cdap_app_tca\n service_id:\n get_input: service_id\n streamname: TCASubscriberOutputStream\n relationships:\n - target: topic0\n type: dcae.relationships.subscribe_to_events\n - target: topic1\n type: dcae.relationships.publish_events\n - target: cdap_host_host\n type: dcae.relationships.component_contained_in\n - target: policy_0\n type: dcae.relationships.depends_on\n topic0:\n type: dcae.nodes.Topic\n properties:\n topic_name: \'\'\n topic1:\n type: dcae.nodes.Topic\n properties:\n topic_name: \'\'\n \n',NULL,'CONFIG_POLICY'); +INSERT INTO `loop_element_models` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app',NULL,'2020-02-10 17:03:33.661538','','2020-02-10 17:03:34.923034',NULL,NULL,'CONFIG_POLICY'); /*!40000 ALTER TABLE `loop_element_models` ENABLE KEYS */; UNLOCK TABLES; @@ -73,9 +73,9 @@ UNLOCK TABLES; LOCK TABLES `loop_templates` WRITE; /*!40000 ALTER TABLE `loop_templates` DISABLE KEYS */; -INSERT INTO `loop_templates` VALUES ('LOOP_TEMPLATE_srIFK_v1_0_ResourceInstanceName1_tca','','2020-01-30 15:21:59.434409','','2020-01-30 15:21:59.434409','tosca_definitions_version: cloudify_dsl_1_3\nimports:\n- http://www.getcloudify.org/spec/cloudify/3.4/types.yaml\n- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/docker/2.2.0/node-type.yaml\n- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml\n- http://onap.org:8081/repository/solutioning01-mte2-raw/type_files/dmaap/dmaap_mr.yaml\ninputs:\n location_id:\n type: string\n service_id:\n type: string\n policy_id:\n type: string\nnode_templates:\n policy_0:\n type: dcae.nodes.policy\n properties:\n policy_id: \n get_input: policy_id\n policy_model_id: \"onap.policies.monitoring.cdap.tca.hi.lo.app\"\n cdap_host_host:\n type: dcae.nodes.StreamingAnalytics.SelectedCDAPInfrastructure\n properties:\n location_id:\n get_input: location_id\n scn_override: cdap_broker.solutioning-central.dcae.onap.org\n interfaces:\n cloudify.interfaces.lifecycle: {\n }\n tca_tca:\n type: dcae.nodes.MicroService.cdap\n properties:\n app_config:\n appDescription: DCAE Analytics Threshold Crossing Alert Application\n appName: dcae-tca\n tcaSubscriberOutputStreamName: TCASubscriberOutputStream\n tcaVESAlertsTableName: TCAVESAlertsTable\n tcaVESAlertsTableTTLSeconds: \'1728000\'\n tcaVESMessageStatusTableName: TCAVESMessageStatusTable\n tcaVESMessageStatusTableTTLSeconds: \'86400\'\n thresholdCalculatorFlowletInstances: \'2\'\n app_preferences:\n publisherContentType: application/json\n publisherHostName: mrlocal-mtnjftle01.onap.org\n publisherHostPort: \'3905\'\n publisherMaxBatchSize: \'10\'\n publisherMaxRecoveryQueueSize: \'100000\'\n publisherPollingInterval: \'20000\'\n publisherProtocol: https\n publisherTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESPub\n publisherUserName: test@tca.af.dcae.onap.org\n publisherUserPassword: password\n subscriberConsumerGroup: OpenDCAE-c12\n subscriberConsumerId: c12\n subscriberContentType: application/json\n subscriberHostName: mrlocal-mtnjftle01.onap.org\n subscriberHostPort: \'3905\'\n subscriberMessageLimit: \'-1\'\n subscriberPollingInterval: \'20000\'\n subscriberProtocol: https\n subscriberTimeoutMS: \'-1\'\n subscriberTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESSub\n subscriberUserName: test@tca.af.dcae.onap.org\n subscriberUserPassword: password\n tca_policy: null\n artifact_name: dcae-analytics-tca\n artifact_version: 1.0.0\n connections:\n streams_publishes: [\n ]\n streams_subscribes: [\n ]\n jar_url: http://somejar\n location_id:\n get_input: location_id\n namespace: cdap_tca_hi_lo\n programs:\n - program_id: TCAVESCollectorFlow\n program_type: flows\n - program_id: TCADMaaPMRSubscriberWorker\n program_type: workers\n - program_id: TCADMaaPMRPublisherWorker\n program_type: workers\n service_component_type: cdap_app_tca\n service_id:\n get_input: service_id\n streamname: TCASubscriberOutputStream\n relationships:\n - target: topic0\n type: dcae.relationships.subscribe_to_events\n - target: topic1\n type: dcae.relationships.publish_events\n - target: cdap_host_host\n type: dcae.relationships.component_contained_in\n - target: policy_0\n type: dcae.relationships.depends_on\n topic0:\n type: dcae.nodes.Topic\n properties:\n topic_name: \'\'\n topic1:\n type: dcae.nodes.Topic\n properties:\n topic_name: \'\'\n \n','typeId-3369cc54-4ce8-4539-9493-d983c7823d66',0,'VESTCAOperationalPolicy','63cac700-ab9a-4115-a74f-7eac85e3fce0'); -INSERT INTO `loop_templates` VALUES ('LOOP_TEMPLATE_srIFK_v1_0_ResourceInstanceName1_tca_3','','2020-01-30 15:21:59.294006','','2020-01-30 15:21:59.294006','tosca_definitions_version: cloudify_dsl_1_3\n\ndescription: >\n This blueprint deploys/manages the TCA module as a Docker container\n\nimports:\n - http://www.getcloudify.org/spec/cloudify/3.4/types.yaml\n - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/k8splugin/1.4.12/k8splugin_types.yaml\n - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/dcaepolicyplugin/2.3.0/dcaepolicyplugin_types.yaml\ninputs:\n aaiEnrichmentHost:\n type: string\n default: \"aai.onap.svc.cluster.local\"\n aaiEnrichmentPort:\n type: string\n default: \"8443\"\n enableAAIEnrichment:\n type: string\n default: true\n dmaap_host:\n type: string\n default: message-router.onap.svc.cluster.local\n dmaap_port:\n type: string\n default: \"3904\"\n enableRedisCaching:\n type: string\n default: false\n redisHosts:\n type: string\n default: dcae-redis.onap.svc.cluster.local:6379\n tag_version:\n type: string\n default: \"nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.1.0-STAGING-latest\"\n consul_host:\n type: string\n default: consul-server.onap.svc.cluster.local\n consul_port:\n type: string\n default: \"8500\"\n cbs_host:\n type: string\n default: \"config-binding-service.dcae.svc.cluster.local\"\n cbs_port:\n type: string\n default: \"10000\"\n policy_id:\n type: string\n default: \"none\"\n external_port:\n type: string\n description: Kubernetes node port on which CDAPgui is exposed\n default: \"32012\"\n policy_model_id:\n type: string\n default: \"onap.policies.monitoring.cdap.tca.hi.lo.app\"\n\nnode_templates:\n tca_k8s:\n type: dcae.nodes.ContainerizedServiceComponent\n relationships:\n - target: tca_policy\n type: cloudify.relationships.depends_on\n properties:\n service_component_type: \'dcaegen2-analytics-tca\'\n application_config: {}\n docker_config: {}\n image:\n get_input: tag_version\n log_info:\n log_directory: \"/opt/app/TCAnalytics/logs\"\n application_config:\n app_config:\n appDescription: DCAE Analytics Threshold Crossing Alert Application\n appName: dcae-tca\n tcaAlertsAbatementTableName: TCAAlertsAbatementTable\n tcaAlertsAbatementTableTTLSeconds: \'1728000\'\n tcaSubscriberOutputStreamName: TCASubscriberOutputStream\n tcaVESAlertsTableName: TCAVESAlertsTable\n tcaVESAlertsTableTTLSeconds: \'1728000\'\n tcaVESMessageStatusTableName: TCAVESMessageStatusTable\n tcaVESMessageStatusTableTTLSeconds: \'86400\'\n thresholdCalculatorFlowletInstances: \'2\'\n app_preferences:\n aaiEnrichmentHost:\n get_input: aaiEnrichmentHost\n aaiEnrichmentIgnoreSSLCertificateErrors: \'true\'\n aaiEnrichmentPortNumber: \'8443\'\n aaiEnrichmentProtocol: https\n aaiEnrichmentUserName: dcae@dcae.onap.org\n aaiEnrichmentUserPassword: demo123456!\n aaiVMEnrichmentAPIPath: /aai/v11/search/nodes-query\n aaiVNFEnrichmentAPIPath: /aai/v11/network/generic-vnfs/generic-vnf\n enableAAIEnrichment:\n get_input: enableAAIEnrichment\n enableRedisCaching:\n get_input: enableRedisCaching\n redisHosts:\n get_input: redisHosts\n enableAlertCEFFormat: \'false\'\n publisherContentType: application/json\n publisherHostName:\n get_input: dmaap_host\n publisherHostPort:\n get_input: dmaap_port\n publisherMaxBatchSize: \'1\'\n publisherMaxRecoveryQueueSize: \'100000\'\n publisherPollingInterval: \'20000\'\n publisherProtocol: http\n publisherTopicName: unauthenticated.DCAE_CL_OUTPUT\n subscriberConsumerGroup: OpenDCAE-c12\n subscriberConsumerId: c12\n subscriberContentType: application/json\n subscriberHostName:\n get_input: dmaap_host\n subscriberHostPort:\n get_input: dmaap_port\n subscriberMessageLimit: \'-1\'\n subscriberPollingInterval: \'30000\'\n subscriberProtocol: http\n subscriberTimeoutMS: \'-1\'\n subscriberTopicName: unauthenticated.VES_MEASUREMENT_OUTPUT\n tca_policy: \'\'\n service_component_type: dcaegen2-analytics_tca\n interfaces:\n cloudify.interfaces.lifecycle:\n start:\n inputs:\n envs:\n DMAAPHOST:\n { get_input: dmaap_host }\n DMAAPPORT:\n { get_input: dmaap_port }\n DMAAPPUBTOPIC: \"unauthenticated.DCAE_CL_OUTPUT\"\n DMAAPSUBTOPIC: \"unauthenticated.VES_MEASUREMENT_OUTPUT\"\n AAIHOST:\n { get_input: aaiEnrichmentHost }\n AAIPORT:\n { get_input: aaiEnrichmentPort }\n CONSUL_HOST:\n { get_input: consul_host }\n CONSUL_PORT:\n { get_input: consul_port }\n CBS_HOST:\n { get_input: cbs_host }\n CBS_PORT:\n { get_input: cbs_port }\n CONFIG_BINDING_SERVICE: \"config_binding_service\"\n ports:\n - concat: [\"11011:\", { get_input: external_port }]\n tca_policy:\n type: dcae.nodes.policy\n properties:\n policy_id:\n get_input: policy_id\n policy_model_id: \n get_input: policy_model_id\n','typeId-5b5d899d-819d-4813-bfd7-c5c1cdb9b2fc',0,'VEStca_k8sOperationalPolicy','63cac700-ab9a-4115-a74f-7eac85e3fce0'); -INSERT INTO `loop_templates` VALUES ('LOOP_TEMPLATE_srIFK_v1_0_ResourceInstanceName2_tca_2','','2020-01-30 15:21:59.154059','','2020-01-30 15:21:59.154059','#\n# ============LICENSE_START====================================================\n# =============================================================================\n# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.\n# =============================================================================\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============LICENSE_END======================================================\n\ntosca_definitions_version: cloudify_dsl_1_3\n\ndescription: >\n This blueprint deploys/manages the TCA module as a Docker container\n\nimports:\n - http://www.getcloudify.org/spec/cloudify/3.4/types.yaml\n - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/k8splugin/1.4.12/k8splugin_types.yaml\n# - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/dcaepolicyplugin/2.3.0/dcaepolicyplugin_types.yaml\n - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/clamppolicyplugin/1.0.0/clamppolicyplugin_types.yaml\ninputs:\n aaiEnrichmentHost:\n type: string\n default: \"aai.onap.svc.cluster.local\"\n aaiEnrichmentPort:\n type: string\n default: \"8443\"\n enableAAIEnrichment:\n type: string\n default: true\n dmaap_host:\n type: string\n default: message-router.onap\n dmaap_port:\n type: string\n default: \"3904\"\n enableRedisCaching:\n type: string\n default: false\n redisHosts:\n type: string\n default: dcae-redis.onap.svc.cluster.local:6379\n tag_version:\n type: string\n default: \"nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.1.1\"\n consul_host:\n type: string\n default: consul-server.onap\n consul_port:\n type: string\n default: \"8500\"\n cbs_host:\n type: string\n default: \"config-binding-servicel\"\n cbs_port:\n type: string\n default: \"10000\"\n policy_id:\n type: string\n default: \"onap.restart.tca\"\n external_port:\n type: string\n description: Kubernetes node port on which CDAPgui is exposed\n default: \"32012\"\n policy_model_id:\n type: string\n default: \"onap.policies.monitoring.cdap.tca.hi.lo.app\"\nnode_templates:\n tca_k8s:\n type: dcae.nodes.ContainerizedServiceComponent\n relationships:\n - target: tca_policy\n type: cloudify.relationships.depends_on\n properties:\n service_component_type: \'dcaegen2-analytics-tca\'\n application_config: {}\n docker_config: {}\n image:\n get_input: tag_version\n log_info:\n log_directory: \"/opt/app/TCAnalytics/logs\"\n application_config:\n app_config:\n appDescription: DCAE Analytics Threshold Crossing Alert Application\n appName: dcae-tca\n tcaAlertsAbatementTableName: TCAAlertsAbatementTable\n tcaAlertsAbatementTableTTLSeconds: \'1728000\'\n tcaSubscriberOutputStreamName: TCASubscriberOutputStream\n tcaVESAlertsTableName: TCAVESAlertsTable\n tcaVESAlertsTableTTLSeconds: \'1728000\'\n tcaVESMessageStatusTableName: TCAVESMessageStatusTable\n tcaVESMessageStatusTableTTLSeconds: \'86400\'\n thresholdCalculatorFlowletInstances: \'2\'\n app_preferences:\n aaiEnrichmentHost:\n get_input: aaiEnrichmentHost\n aaiEnrichmentIgnoreSSLCertificateErrors: \'true\'\n aaiEnrichmentPortNumber: \'8443\'\n aaiEnrichmentProtocol: https\n aaiEnrichmentUserName: dcae@dcae.onap.org\n aaiEnrichmentUserPassword: demo123456!\n aaiVMEnrichmentAPIPath: /aai/v11/search/nodes-query\n aaiVNFEnrichmentAPIPath: /aai/v11/network/generic-vnfs/generic-vnf\n enableAAIEnrichment:\n get_input: enableAAIEnrichment\n enableRedisCaching:\n get_input: enableRedisCaching\n redisHosts:\n get_input: redisHosts\n enableAlertCEFFormat: \'false\'\n publisherContentType: application/json\n publisherHostName:\n get_input: dmaap_host\n publisherHostPort:\n get_input: dmaap_port\n publisherMaxBatchSize: \'1\'\n publisherMaxRecoveryQueueSize: \'100000\'\n publisherPollingInterval: \'20000\'\n publisherProtocol: http\n publisherTopicName: unauthenticated.DCAE_CL_OUTPUT\n subscriberConsumerGroup: OpenDCAE-clamp\n subscriberConsumerId: c12\n subscriberContentType: application/json\n subscriberHostName:\n get_input: dmaap_host\n subscriberHostPort:\n get_input: dmaap_port\n subscriberMessageLimit: \'-1\'\n subscriberPollingInterval: \'30000\'\n subscriberProtocol: http\n subscriberTimeoutMS: \'-1\'\n subscriberTopicName: unauthenticated.VES_MEASUREMENT_OUTPUT\n# tca_policy: \'{\"domain\":\"measurementsForVfScaling\",\"metricsPerEventName\":[{\"eventName\":\"vFirewallBroadcastPackets\",\"controlLoopSchemaType\":\"VNF\",\"policyScope\":\"DCAE\",\"policyName\":\"DCAE.Config_tca-hi-lo\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta\",\"thresholdValue\":300,\"direction\":\"LESS_OR_EQUAL\",\"severity\":\"MAJOR\",\"closedLoopEventStatus\":\"ONSET\"},{\"closedLoopControlName\":\"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta\",\"thresholdValue\":700,\"direction\":\"GREATER_OR_EQUAL\",\"severity\":\"CRITICAL\",\"closedLoopEventStatus\":\"ONSET\"}]},{\"eventName\":\"vLoadBalancer\",\"controlLoopSchemaType\":\"VM\",\"policyScope\":\"DCAE\",\"policyName\":\"DCAE.Config_tca-hi-lo\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta\",\"thresholdValue\":300,\"direction\":\"GREATER_OR_EQUAL\",\"severity\":\"CRITICAL\",\"closedLoopEventStatus\":\"ONSET\"}]},{\"eventName\":\"Measurement_vGMUX\",\"controlLoopSchemaType\":\"VNF\",\"policyScope\":\"DCAE\",\"policyName\":\"DCAE.Config_tca-hi-lo\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\",\"thresholdValue\":0,\"direction\":\"EQUAL\",\"severity\":\"MAJOR\",\"closedLoopEventStatus\":\"ABATED\"},{\"closedLoopControlName\":\"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\",\"thresholdValue\":0,\"direction\":\"GREATER\",\"severity\":\"CRITICAL\",\"closedLoopEventStatus\":\"ONSET\"}]}]}\'\n service_component_type: dcaegen2-analytics_tca\n interfaces:\n cloudify.interfaces.lifecycle:\n start:\n inputs:\n envs:\n DMAAPHOST:\n { get_input: dmaap_host }\n DMAAPPORT:\n { get_input: dmaap_port }\n DMAAPPUBTOPIC: \"unauthenticated.DCAE_CL_OUTPUT\"\n DMAAPSUBTOPIC: \"unauthenticated.VES_MEASUREMENT_OUTPUT\"\n AAIHOST:\n { get_input: aaiEnrichmentHost }\n AAIPORT:\n { get_input: aaiEnrichmentPort }\n CONSUL_HOST:\n { get_input: consul_host }\n CONSUL_PORT:\n { get_input: consul_port }\n CBS_HOST:\n { get_input: cbs_host }\n CBS_PORT:\n { get_input: cbs_port }\n CONFIG_BINDING_SERVICE: \"config_binding_service\"\n ports:\n - concat: [\"11011:\", { get_input: external_port }]\n tca_policy:\n type: clamp.nodes.policy\n properties:\n policy_id:\n get_input: policy_id\n policy_model_id: \"onap.policies.monitoring.cdap.tca.hi.lo.app\"\n','typeId-c12c1f86-295b-44a6-bbcf-2bbe40d70f2f',0,'VEStca_k8sOperationalPolicy','63cac700-ab9a-4115-a74f-7eac85e3fce0'); +INSERT INTO `loop_templates` VALUES ('LOOP_TEMPLATE_GDC6j_v1_0_ResourceInstanceName1_tca','','2020-02-10 17:03:34.815508','','2020-02-10 17:03:34.815508','tosca_definitions_version: cloudify_dsl_1_3\nimports:\n- http://www.getcloudify.org/spec/cloudify/3.4/types.yaml\n- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/docker/2.2.0/node-type.yaml\n- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml\n- http://onap.org:8081/repository/solutioning01-mte2-raw/type_files/dmaap/dmaap_mr.yaml\ninputs:\n location_id:\n type: string\n service_id:\n type: string\n policy_id:\n type: string\nnode_templates:\n policy_0:\n type: dcae.nodes.policy\n properties:\n policy_id: \n get_input: policy_id\n policy_model_id: \"onap.policies.monitoring.cdap.tca.hi.lo.app\"\n cdap_host_host:\n type: dcae.nodes.StreamingAnalytics.SelectedCDAPInfrastructure\n properties:\n location_id:\n get_input: location_id\n scn_override: cdap_broker.solutioning-central.dcae.onap.org\n interfaces:\n cloudify.interfaces.lifecycle: {\n }\n tca_tca:\n type: dcae.nodes.MicroService.cdap\n properties:\n app_config:\n appDescription: DCAE Analytics Threshold Crossing Alert Application\n appName: dcae-tca\n tcaSubscriberOutputStreamName: TCASubscriberOutputStream\n tcaVESAlertsTableName: TCAVESAlertsTable\n tcaVESAlertsTableTTLSeconds: \'1728000\'\n tcaVESMessageStatusTableName: TCAVESMessageStatusTable\n tcaVESMessageStatusTableTTLSeconds: \'86400\'\n thresholdCalculatorFlowletInstances: \'2\'\n app_preferences:\n publisherContentType: application/json\n publisherHostName: mrlocal-mtnjftle01.onap.org\n publisherHostPort: \'3905\'\n publisherMaxBatchSize: \'10\'\n publisherMaxRecoveryQueueSize: \'100000\'\n publisherPollingInterval: \'20000\'\n publisherProtocol: https\n publisherTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESPub\n publisherUserName: test@tca.af.dcae.onap.org\n publisherUserPassword: password\n subscriberConsumerGroup: OpenDCAE-c12\n subscriberConsumerId: c12\n subscriberContentType: application/json\n subscriberHostName: mrlocal-mtnjftle01.onap.org\n subscriberHostPort: \'3905\'\n subscriberMessageLimit: \'-1\'\n subscriberPollingInterval: \'20000\'\n subscriberProtocol: https\n subscriberTimeoutMS: \'-1\'\n subscriberTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESSub\n subscriberUserName: test@tca.af.dcae.onap.org\n subscriberUserPassword: password\n tca_policy: null\n artifact_name: dcae-analytics-tca\n artifact_version: 1.0.0\n connections:\n streams_publishes: [\n ]\n streams_subscribes: [\n ]\n jar_url: http://somejar\n location_id:\n get_input: location_id\n namespace: cdap_tca_hi_lo\n programs:\n - program_id: TCAVESCollectorFlow\n program_type: flows\n - program_id: TCADMaaPMRSubscriberWorker\n program_type: workers\n - program_id: TCADMaaPMRPublisherWorker\n program_type: workers\n service_component_type: cdap_app_tca\n service_id:\n get_input: service_id\n streamname: TCASubscriberOutputStream\n relationships:\n - target: topic0\n type: dcae.relationships.subscribe_to_events\n - target: topic1\n type: dcae.relationships.publish_events\n - target: cdap_host_host\n type: dcae.relationships.component_contained_in\n - target: policy_0\n type: dcae.relationships.depends_on\n topic0:\n type: dcae.nodes.Topic\n properties:\n topic_name: \'\'\n topic1:\n type: dcae.nodes.Topic\n properties:\n topic_name: \'\'\n \n','typeId-a733c5f2-9113-4747-a2d2-4f9a9da9901b',0,'VEStca_tcaOperationalPolicy','63cac700-ab9a-4115-a74f-7eac85e3fce0'); +INSERT INTO `loop_templates` VALUES ('LOOP_TEMPLATE_GDC6j_v1_0_ResourceInstanceName1_tca_3','','2020-02-10 17:03:34.343090','','2020-02-10 17:03:34.343090','tosca_definitions_version: cloudify_dsl_1_3\n\ndescription: >\n This blueprint deploys/manages the TCA module as a Docker container\n\nimports:\n - http://www.getcloudify.org/spec/cloudify/3.4/types.yaml\n - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/k8splugin/1.4.12/k8splugin_types.yaml\n - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/dcaepolicyplugin/2.3.0/dcaepolicyplugin_types.yaml\ninputs:\n aaiEnrichmentHost:\n type: string\n default: \"aai.onap.svc.cluster.local\"\n aaiEnrichmentPort:\n type: string\n default: \"8443\"\n enableAAIEnrichment:\n type: string\n default: true\n dmaap_host:\n type: string\n default: message-router.onap.svc.cluster.local\n dmaap_port:\n type: string\n default: \"3904\"\n enableRedisCaching:\n type: string\n default: false\n redisHosts:\n type: string\n default: dcae-redis.onap.svc.cluster.local:6379\n tag_version:\n type: string\n default: \"nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.1.0-STAGING-latest\"\n consul_host:\n type: string\n default: consul-server.onap.svc.cluster.local\n consul_port:\n type: string\n default: \"8500\"\n cbs_host:\n type: string\n default: \"config-binding-service.dcae.svc.cluster.local\"\n cbs_port:\n type: string\n default: \"10000\"\n policy_id:\n type: string\n default: \"none\"\n external_port:\n type: string\n description: Kubernetes node port on which CDAPgui is exposed\n default: \"32012\"\n policy_model_id:\n type: string\n default: \"onap.policies.monitoring.cdap.tca.hi.lo.app\"\n\nnode_templates:\n tca_k8s:\n type: dcae.nodes.ContainerizedServiceComponent\n relationships:\n - target: tca_policy\n type: cloudify.relationships.depends_on\n properties:\n service_component_type: \'dcaegen2-analytics-tca\'\n application_config: {}\n docker_config: {}\n image:\n get_input: tag_version\n log_info:\n log_directory: \"/opt/app/TCAnalytics/logs\"\n application_config:\n app_config:\n appDescription: DCAE Analytics Threshold Crossing Alert Application\n appName: dcae-tca\n tcaAlertsAbatementTableName: TCAAlertsAbatementTable\n tcaAlertsAbatementTableTTLSeconds: \'1728000\'\n tcaSubscriberOutputStreamName: TCASubscriberOutputStream\n tcaVESAlertsTableName: TCAVESAlertsTable\n tcaVESAlertsTableTTLSeconds: \'1728000\'\n tcaVESMessageStatusTableName: TCAVESMessageStatusTable\n tcaVESMessageStatusTableTTLSeconds: \'86400\'\n thresholdCalculatorFlowletInstances: \'2\'\n app_preferences:\n aaiEnrichmentHost:\n get_input: aaiEnrichmentHost\n aaiEnrichmentIgnoreSSLCertificateErrors: \'true\'\n aaiEnrichmentPortNumber: \'8443\'\n aaiEnrichmentProtocol: https\n aaiEnrichmentUserName: dcae@dcae.onap.org\n aaiEnrichmentUserPassword: demo123456!\n aaiVMEnrichmentAPIPath: /aai/v11/search/nodes-query\n aaiVNFEnrichmentAPIPath: /aai/v11/network/generic-vnfs/generic-vnf\n enableAAIEnrichment:\n get_input: enableAAIEnrichment\n enableRedisCaching:\n get_input: enableRedisCaching\n redisHosts:\n get_input: redisHosts\n enableAlertCEFFormat: \'false\'\n publisherContentType: application/json\n publisherHostName:\n get_input: dmaap_host\n publisherHostPort:\n get_input: dmaap_port\n publisherMaxBatchSize: \'1\'\n publisherMaxRecoveryQueueSize: \'100000\'\n publisherPollingInterval: \'20000\'\n publisherProtocol: http\n publisherTopicName: unauthenticated.DCAE_CL_OUTPUT\n subscriberConsumerGroup: OpenDCAE-c12\n subscriberConsumerId: c12\n subscriberContentType: application/json\n subscriberHostName:\n get_input: dmaap_host\n subscriberHostPort:\n get_input: dmaap_port\n subscriberMessageLimit: \'-1\'\n subscriberPollingInterval: \'30000\'\n subscriberProtocol: http\n subscriberTimeoutMS: \'-1\'\n subscriberTopicName: unauthenticated.VES_MEASUREMENT_OUTPUT\n tca_policy: \'\'\n service_component_type: dcaegen2-analytics_tca\n interfaces:\n cloudify.interfaces.lifecycle:\n start:\n inputs:\n envs:\n DMAAPHOST:\n { get_input: dmaap_host }\n DMAAPPORT:\n { get_input: dmaap_port }\n DMAAPPUBTOPIC: \"unauthenticated.DCAE_CL_OUTPUT\"\n DMAAPSUBTOPIC: \"unauthenticated.VES_MEASUREMENT_OUTPUT\"\n AAIHOST:\n { get_input: aaiEnrichmentHost }\n AAIPORT:\n { get_input: aaiEnrichmentPort }\n CONSUL_HOST:\n { get_input: consul_host }\n CONSUL_PORT:\n { get_input: consul_port }\n CBS_HOST:\n { get_input: cbs_host }\n CBS_PORT:\n { get_input: cbs_port }\n CONFIG_BINDING_SERVICE: \"config_binding_service\"\n ports:\n - concat: [\"11011:\", { get_input: external_port }]\n tca_policy:\n type: dcae.nodes.policy\n properties:\n policy_id:\n get_input: policy_id\n policy_model_id: \n get_input: policy_model_id\n','typeId-8003bdb0-7171-404d-8ea4-fbe3cfd34589',0,'VEStca_k8sOperationalPolicy','63cac700-ab9a-4115-a74f-7eac85e3fce0'); +INSERT INTO `loop_templates` VALUES ('LOOP_TEMPLATE_GDC6j_v1_0_ResourceInstanceName2_tca_2','','2020-02-10 17:03:33.619163','','2020-02-10 17:03:33.619163','#\n# ============LICENSE_START====================================================\n# =============================================================================\n# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.\n# =============================================================================\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============LICENSE_END======================================================\n\ntosca_definitions_version: cloudify_dsl_1_3\n\ndescription: >\n This blueprint deploys/manages the TCA module as a Docker container\n\nimports:\n - http://www.getcloudify.org/spec/cloudify/3.4/types.yaml\n - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/k8splugin/1.4.12/k8splugin_types.yaml\n# - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/dcaepolicyplugin/2.3.0/dcaepolicyplugin_types.yaml\n - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/clamppolicyplugin/1.0.0/clamppolicyplugin_types.yaml\ninputs:\n aaiEnrichmentHost:\n type: string\n default: \"aai.onap.svc.cluster.local\"\n aaiEnrichmentPort:\n type: string\n default: \"8443\"\n enableAAIEnrichment:\n type: string\n default: true\n dmaap_host:\n type: string\n default: message-router.onap\n dmaap_port:\n type: string\n default: \"3904\"\n enableRedisCaching:\n type: string\n default: false\n redisHosts:\n type: string\n default: dcae-redis.onap.svc.cluster.local:6379\n tag_version:\n type: string\n default: \"nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.1.1\"\n consul_host:\n type: string\n default: consul-server.onap\n consul_port:\n type: string\n default: \"8500\"\n cbs_host:\n type: string\n default: \"config-binding-servicel\"\n cbs_port:\n type: string\n default: \"10000\"\n policy_id:\n type: string\n default: \"onap.restart.tca\"\n external_port:\n type: string\n description: Kubernetes node port on which CDAPgui is exposed\n default: \"32012\"\n policy_model_id:\n type: string\n default: \"onap.policies.monitoring.cdap.tca.hi.lo.app\"\nnode_templates:\n tca_k8s:\n type: dcae.nodes.ContainerizedServiceComponent\n relationships:\n - target: tca_policy\n type: cloudify.relationships.depends_on\n properties:\n service_component_type: \'dcaegen2-analytics-tca\'\n application_config: {}\n docker_config: {}\n image:\n get_input: tag_version\n log_info:\n log_directory: \"/opt/app/TCAnalytics/logs\"\n application_config:\n app_config:\n appDescription: DCAE Analytics Threshold Crossing Alert Application\n appName: dcae-tca\n tcaAlertsAbatementTableName: TCAAlertsAbatementTable\n tcaAlertsAbatementTableTTLSeconds: \'1728000\'\n tcaSubscriberOutputStreamName: TCASubscriberOutputStream\n tcaVESAlertsTableName: TCAVESAlertsTable\n tcaVESAlertsTableTTLSeconds: \'1728000\'\n tcaVESMessageStatusTableName: TCAVESMessageStatusTable\n tcaVESMessageStatusTableTTLSeconds: \'86400\'\n thresholdCalculatorFlowletInstances: \'2\'\n app_preferences:\n aaiEnrichmentHost:\n get_input: aaiEnrichmentHost\n aaiEnrichmentIgnoreSSLCertificateErrors: \'true\'\n aaiEnrichmentPortNumber: \'8443\'\n aaiEnrichmentProtocol: https\n aaiEnrichmentUserName: dcae@dcae.onap.org\n aaiEnrichmentUserPassword: demo123456!\n aaiVMEnrichmentAPIPath: /aai/v11/search/nodes-query\n aaiVNFEnrichmentAPIPath: /aai/v11/network/generic-vnfs/generic-vnf\n enableAAIEnrichment:\n get_input: enableAAIEnrichment\n enableRedisCaching:\n get_input: enableRedisCaching\n redisHosts:\n get_input: redisHosts\n enableAlertCEFFormat: \'false\'\n publisherContentType: application/json\n publisherHostName:\n get_input: dmaap_host\n publisherHostPort:\n get_input: dmaap_port\n publisherMaxBatchSize: \'1\'\n publisherMaxRecoveryQueueSize: \'100000\'\n publisherPollingInterval: \'20000\'\n publisherProtocol: http\n publisherTopicName: unauthenticated.DCAE_CL_OUTPUT\n subscriberConsumerGroup: OpenDCAE-clamp\n subscriberConsumerId: c12\n subscriberContentType: application/json\n subscriberHostName:\n get_input: dmaap_host\n subscriberHostPort:\n get_input: dmaap_port\n subscriberMessageLimit: \'-1\'\n subscriberPollingInterval: \'30000\'\n subscriberProtocol: http\n subscriberTimeoutMS: \'-1\'\n subscriberTopicName: unauthenticated.VES_MEASUREMENT_OUTPUT\n# tca_policy: \'{\"domain\":\"measurementsForVfScaling\",\"metricsPerEventName\":[{\"eventName\":\"vFirewallBroadcastPackets\",\"controlLoopSchemaType\":\"VNF\",\"policyScope\":\"DCAE\",\"policyName\":\"DCAE.Config_tca-hi-lo\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta\",\"thresholdValue\":300,\"direction\":\"LESS_OR_EQUAL\",\"severity\":\"MAJOR\",\"closedLoopEventStatus\":\"ONSET\"},{\"closedLoopControlName\":\"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta\",\"thresholdValue\":700,\"direction\":\"GREATER_OR_EQUAL\",\"severity\":\"CRITICAL\",\"closedLoopEventStatus\":\"ONSET\"}]},{\"eventName\":\"vLoadBalancer\",\"controlLoopSchemaType\":\"VM\",\"policyScope\":\"DCAE\",\"policyName\":\"DCAE.Config_tca-hi-lo\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta\",\"thresholdValue\":300,\"direction\":\"GREATER_OR_EQUAL\",\"severity\":\"CRITICAL\",\"closedLoopEventStatus\":\"ONSET\"}]},{\"eventName\":\"Measurement_vGMUX\",\"controlLoopSchemaType\":\"VNF\",\"policyScope\":\"DCAE\",\"policyName\":\"DCAE.Config_tca-hi-lo\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\",\"thresholdValue\":0,\"direction\":\"EQUAL\",\"severity\":\"MAJOR\",\"closedLoopEventStatus\":\"ABATED\"},{\"closedLoopControlName\":\"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\",\"thresholdValue\":0,\"direction\":\"GREATER\",\"severity\":\"CRITICAL\",\"closedLoopEventStatus\":\"ONSET\"}]}]}\'\n service_component_type: dcaegen2-analytics_tca\n interfaces:\n cloudify.interfaces.lifecycle:\n start:\n inputs:\n envs:\n DMAAPHOST:\n { get_input: dmaap_host }\n DMAAPPORT:\n { get_input: dmaap_port }\n DMAAPPUBTOPIC: \"unauthenticated.DCAE_CL_OUTPUT\"\n DMAAPSUBTOPIC: \"unauthenticated.VES_MEASUREMENT_OUTPUT\"\n AAIHOST:\n { get_input: aaiEnrichmentHost }\n AAIPORT:\n { get_input: aaiEnrichmentPort }\n CONSUL_HOST:\n { get_input: consul_host }\n CONSUL_PORT:\n { get_input: consul_port }\n CBS_HOST:\n { get_input: cbs_host }\n CBS_PORT:\n { get_input: cbs_port }\n CONFIG_BINDING_SERVICE: \"config_binding_service\"\n ports:\n - concat: [\"11011:\", { get_input: external_port }]\n tca_policy:\n type: clamp.nodes.policy\n properties:\n policy_id:\n get_input: policy_id\n policy_model_id: \"onap.policies.monitoring.cdap.tca.hi.lo.app\"\n','typeId-d7711567-0d72-4206-8705-c4258f2dc4c6',0,'VEStca_k8sOperationalPolicy','63cac700-ab9a-4115-a74f-7eac85e3fce0'); /*!40000 ALTER TABLE `loop_templates` ENABLE KEYS */; UNLOCK TABLES; @@ -85,7 +85,7 @@ UNLOCK TABLES; LOCK TABLES `loopelementmodels_to_policymodels` WRITE; /*!40000 ALTER TABLE `loopelementmodels_to_policymodels` DISABLE KEYS */; -INSERT INTO `loopelementmodels_to_policymodels` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app','onap.policies.monitoring.cdap.tca.hi.lo.app','1.0'); +INSERT INTO `loopelementmodels_to_policymodels` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app','onap.policies.monitoring.cdap.tca.hi.lo.app','1.0.0'); /*!40000 ALTER TABLE `loopelementmodels_to_policymodels` ENABLE KEYS */; UNLOCK TABLES; @@ -113,9 +113,9 @@ UNLOCK TABLES; LOCK TABLES `looptemplates_to_loopelementmodels` WRITE; /*!40000 ALTER TABLE `looptemplates_to_loopelementmodels` DISABLE KEYS */; -INSERT INTO `looptemplates_to_loopelementmodels` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app','LOOP_TEMPLATE_srIFK_v1_0_ResourceInstanceName1_tca',0); -INSERT INTO `looptemplates_to_loopelementmodels` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app','LOOP_TEMPLATE_srIFK_v1_0_ResourceInstanceName1_tca_3',0); -INSERT INTO `looptemplates_to_loopelementmodels` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app','LOOP_TEMPLATE_srIFK_v1_0_ResourceInstanceName2_tca_2',0); +INSERT INTO `looptemplates_to_loopelementmodels` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app','LOOP_TEMPLATE_GDC6j_v1_0_ResourceInstanceName1_tca',0); +INSERT INTO `looptemplates_to_loopelementmodels` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app','LOOP_TEMPLATE_GDC6j_v1_0_ResourceInstanceName1_tca_3',0); +INSERT INTO `looptemplates_to_loopelementmodels` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app','LOOP_TEMPLATE_GDC6j_v1_0_ResourceInstanceName2_tca_2',0); /*!40000 ALTER TABLE `looptemplates_to_loopelementmodels` ENABLE KEYS */; UNLOCK TABLES; @@ -143,7 +143,7 @@ UNLOCK TABLES; LOCK TABLES `policy_models` WRITE; /*!40000 ALTER TABLE `policy_models` DISABLE KEYS */; -INSERT INTO `policy_models` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app','1.0',NULL,'2020-01-30 15:21:59.176333','','2020-01-30 15:21:59.461713','app','tosca_definitions_version: tosca_simple_yaml_1_0_0\npolicy_types:\n onap.policies.Monitoring:\n derived_from: tosca.policies.Root\n description: a base policy type for all policies that governs monitoring provisioning\n onap.policies.monitoring.cdap.tca.hi.lo.app:\n derived_from: onap.policies.Monitoring\n version: 1.0.0\n properties:\n tca_policy:\n type: map\n description: TCA Policy JSON\n entry_schema:\n type: onap.datatypes.monitoring.tca_policy\ndata_types:\n onap.datatypes.monitoring.metricsPerEventName:\n derived_from: tosca.datatypes.Root\n properties:\n controlLoopSchemaType:\n type: string\n required: true\n description: Specifies Control Loop Schema Type for the event Name e.g. VNF, VM\n constraints:\n - valid_values:\n - VM\n - VNF\n eventName:\n type: string\n required: true\n description: Event name to which thresholds need to be applied\n policyName:\n type: string\n required: true\n description: TCA Policy Scope Name\n policyScope:\n type: string\n required: true\n description: TCA Policy Scope\n policyVersion:\n type: string\n required: true\n description: TCA Policy Scope Version\n thresholds:\n type: list\n required: true\n description: Thresholds associated with eventName\n entry_schema:\n type: onap.datatypes.monitoring.thresholds\n onap.datatypes.monitoring.tca_policy:\n derived_from: tosca.datatypes.Root\n properties:\n domain:\n type: string\n required: true\n description: Domain name to which TCA needs to be applied\n default: measurementsForVfScaling\n constraints:\n - equal: measurementsForVfScaling\n metricsPerEventName:\n type: list\n required: true\n description: Contains eventName and threshold details that need to be applied to given eventName\n entry_schema:\n type: onap.datatypes.monitoring.metricsPerEventName\n onap.datatypes.monitoring.thresholds:\n derived_from: tosca.datatypes.Root\n properties:\n closedLoopControlName:\n type: string\n required: true\n description: Closed Loop Control Name associated with the threshold\n closedLoopEventStatus:\n type: string\n required: true\n description: Closed Loop Event Status of the threshold\n constraints:\n - valid_values:\n - ONSET\n - ABATED\n direction:\n type: string\n required: true\n description: Direction of the threshold\n constraints:\n - valid_values:\n - LESS\n - LESS_OR_EQUAL\n - GREATER\n - GREATER_OR_EQUAL\n - EQUAL\n fieldPath:\n type: string\n required: true\n description: Json field Path as per CEF message which needs to be analyzed for TCA\n constraints:\n - valid_values:\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage\n - $.event.measurementsForVfScalingFields.meanRequestLatency\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed\n - $.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\n severity:\n type: string\n required: true\n description: Threshold Event Severity\n constraints:\n - valid_values:\n - CRITICAL\n - MAJOR\n - MINOR\n - WARNING\n - NORMAL\n thresholdValue:\n type: integer\n required: true\n description: Threshold value for the field Path inside CEF message\n version:\n type: string\n required: true\n description: Version number associated with the threshold\n'); +INSERT INTO `policy_models` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app','1.0.0','','2020-02-10 17:03:33.698994','','2020-02-10 17:03:33.698994','app','{\"policyTypeId\": \"onap.policies.controlloop.operational\",\"policyTypeVersion\": \"1.0.0\",\"policyId\": \"OPERATIONAL_z711F_v1_0_ResourceInstanceName1_tca\"}'); /*!40000 ALTER TABLE `policy_models` ENABLE KEYS */; UNLOCK TABLES; @@ -165,4 +165,4 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2020-01-30 14:23:27 +-- Dump completed on 2020-02-10 16:04:53 diff --git a/src/main/java/org/onap/clamp/clds/client/PolicyEngineServices.java b/src/main/java/org/onap/clamp/clds/client/PolicyEngineServices.java new file mode 100644 index 000000000..d99e9b569 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/client/PolicyEngineServices.java @@ -0,0 +1,110 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2020 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============================================ + * =================================================================== + * + */ + +package org.onap.clamp.clds.client; + +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; + +import org.apache.camel.CamelContext; +import org.apache.camel.Exchange; +import org.apache.camel.builder.ExchangeBuilder; +import org.onap.clamp.clds.config.ClampProperties; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * The class implements the communication with the Policy Engine to retrieve + * policy models (tosca). It mainly delegates the physical calls to Camel + * engine. + * + */ +@Component +public class PolicyEngineServices { + private final CamelContext camelContext; + + private final ClampProperties refProp; + + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(PolicyEngineServices.class); + protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger(); + protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); + public static final String POLICY_RETRY_INTERVAL = "policy.retry.interval"; + public static final String POLICY_RETRY_LIMIT = "policy.retry.limit"; + + @Autowired + public PolicyEngineServices(CamelContext camelContext, ClampProperties refProp) { + this.refProp = refProp; + this.camelContext = camelContext; + } + + private void downloadAllPolicies() { + /* + * Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext) + * .withProperty("blueprintResourceId", + * resourceUuid).withProperty("blueprintServiceId", serviceUuid) + * .withProperty("blueprintName", artifactName).build(); + * metricsLogger.info("Attempt n°" + i + " to contact DCAE inventory"); + * + * Exchange exchangeResponse = + * camelContext.createProducerTemplate().send("direct:get-all-policy-models", + * myCamelExchange); + */ + } + + /** + * This method can be used to download a policy tosca model on the engine. + * + * @param policyType The policy type (id) + * @param policyVersion The policy version + * @return A string with the whole policy tosca model + * @throws InterruptedException in case of issue when sleeping during the retry + */ + public String downloadOnePolicy(String policyType, String policyVersion) throws InterruptedException { + int retryInterval = 0; + int retryLimit = 1; + if (refProp.getStringValue(POLICY_RETRY_LIMIT) != null) { + retryLimit = Integer.valueOf(refProp.getStringValue(POLICY_RETRY_LIMIT)); + } + if (refProp.getStringValue(POLICY_RETRY_INTERVAL) != null) { + retryInterval = Integer.valueOf(refProp.getStringValue(POLICY_RETRY_INTERVAL)); + } + for (int i = 0; i < retryLimit; i++) { + Exchange paramExchange = ExchangeBuilder.anExchange(camelContext) + .withProperty("policyModelName", policyType).withProperty("policyModelVersion", policyVersion) + .build(); + + Exchange exchangeResponse = camelContext.createProducerTemplate().send("direct:get-policy-model", + paramExchange); + + if (Integer.valueOf(200).equals(exchangeResponse.getIn().getHeader("CamelHttpResponseCode"))) { + return (String) exchangeResponse.getIn().getBody(); + } else { + logger.info("Policy " + retryInterval + "ms before retrying ..."); + // wait for a while and try to connect to DCAE again + Thread.sleep(retryInterval); + } + } + return ""; + } + +} diff --git a/src/main/java/org/onap/clamp/clds/config/ClampProperties.java b/src/main/java/org/onap/clamp/clds/config/ClampProperties.java index 9905585d3..8eae9066d 100644 --- a/src/main/java/org/onap/clamp/clds/config/ClampProperties.java +++ b/src/main/java/org/onap/clamp/clds/config/ClampProperties.java @@ -23,13 +23,11 @@ package org.onap.clamp.clds.config; -import com.google.common.base.Splitter; - import com.google.gson.JsonElement; + import java.io.IOException; import java.net.URL; import java.nio.charset.StandardCharsets; -import java.util.List; import org.apache.commons.io.IOUtils; import org.onap.clamp.clds.util.JsonUtils; @@ -53,8 +51,7 @@ public class ClampProperties { /** * get property value. * - * @param key - * The first key + * @param key The first key * @return The string with the value */ public String getStringValue(String key) { @@ -65,10 +62,8 @@ public class ClampProperties { * get property value for a combo key (key1 + "." + key2). If not found just use * key1. * - * @param key1 - * The first key - * @param key2 - * The second key after a dot + * @param key1 The first key + * @param key2 The second key after a dot * @return The string with the value */ public String getStringValue(String key1, String key2) { @@ -83,17 +78,15 @@ public class ClampProperties { * Return json as objects that can be updated. The value obtained from the * clds-reference file will be used as a filename. * - * @param key - * The key that will be used to access the clds-reference file + * @param key The key that will be used to access the clds-reference file * @return A jsonNode - * @throws IOException - * In case of issues with the JSON parser + * @throws IOException In case of issues with the JSON parser */ public JsonElement getJsonTemplate(String key) throws IOException { String fileReference = getStringValue(key); return (fileReference != null) - ? JsonUtils.GSON.fromJson(getFileContentFromPath(fileReference), JsonElement.class) - : null; + ? JsonUtils.GSON.fromJson(getFileContentFromPath(fileReference), JsonElement.class) + : null; } /** @@ -101,30 +94,25 @@ public class ClampProperties { * "." + key2), otherwise default to just key1. The value obtained from the * clds-reference file will be used as a filename. * - * @param key1 - * The first key - * @param key2 - * The second key after a dot + * @param key1 The first key + * @param key2 The second key after a dot * @return A JsonNode - * @throws IOException - * In case of issues with the JSON parser + * @throws IOException In case of issues with the JSON parser */ public JsonElement getJsonTemplate(String key1, String key2) throws IOException { String fileReference = getStringValue(key1, key2); return (fileReference != null) - ? JsonUtils.GSON.fromJson(getFileContentFromPath(fileReference), JsonElement.class) - : null; + ? JsonUtils.GSON.fromJson(getFileContentFromPath(fileReference), JsonElement.class) + : null; } /** * Return the file content. The value obtained from the clds-reference file will * be used as a filename. * - * @param key - * The key that will be used to access the clds-reference file + * @param key The key that will be used to access the clds-reference file * @return File content in String - * @throws IOException - * In case of issues with the JSON parser + * @throws IOException In case of issues with the JSON parser */ public String getFileContent(String key) throws IOException { String fileReference = getStringValue(key); @@ -136,13 +124,10 @@ public class ClampProperties { * otherwise default to just key1. The value obtained from the clds-reference * file will be used as a filename. * - * @param key1 - * The first key - * @param key2 - * The second key after a dot + * @param key1 The first key + * @param key2 The second key after a dot * @return File content in String - * @throws IOException - * In case of issues with the JSON parser + * @throws IOException In case of issues with the JSON parser */ public String getFileContent(String key1, String key2) throws IOException { String fileReference = getStringValue(key1, key2); @@ -153,18 +138,4 @@ public class ClampProperties { URL url = appContext.getResource(filepath).getURL(); return IOUtils.toString(url, StandardCharsets.UTF_8); } - - /** - * Returns the list of strings split with separator. - * - * @param key - * property key - * @param separator - * property value separator - * @return List of Strings split with a separator - */ - public List getStringList(String key, String separator) { - return Splitter.on(separator).trimResults().omitEmptyStrings() - .splitToList(env.getProperty(CONFIG_PREFIX + key)); - } } diff --git a/src/main/java/org/onap/clamp/clds/config/PolicyConfiguration.java b/src/main/java/org/onap/clamp/clds/config/PolicyConfiguration.java deleted file mode 100644 index a4f37e8bb..000000000 --- a/src/main/java/org/onap/clamp/clds/config/PolicyConfiguration.java +++ /dev/null @@ -1,133 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2018 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.config; - -import java.util.Properties; - -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.stereotype.Component; - -@Component -@ConfigurationProperties(prefix = "clamp.config.policy") -public class PolicyConfiguration { - - public static final String PDP_URL1 = "PDP_URL1"; - public static final String PDP_URL2 = "PDP_URL2"; - public static final String PAP_URL = "PAP_URL"; - public static final String NOTIFICATION_TYPE = "NOTIFICATION_TYPE"; - public static final String NOTIFICATION_UEB_SERVERS = "NOTIFICATION_UEB_SERVERS"; - public static final String CLIENT_ID = "CLIENT_ID"; - public static final String CLIENT_KEY = "CLIENT_KEY"; - public static final String ENVIRONMENT = "ENVIRONMENT"; - private String pdpUrl1; - private String pdpUrl2; - private String papUrl; - private String notificationType; - private String notificationUebServers; - private String clientId; - private String clientKey; - private String policyEnvironment; - - public String getPdpUrl1() { - return pdpUrl1; - } - - public void setPdpUrl1(String pdpUrl1) { - this.pdpUrl1 = pdpUrl1; - } - - public String getPdpUrl2() { - return pdpUrl2; - } - - public void setPdpUrl2(String pdpUrl2) { - this.pdpUrl2 = pdpUrl2; - } - - public String getPapUrl() { - return papUrl; - } - - public void setPapUrl(String papUrl) { - this.papUrl = papUrl; - } - - public String getNotificationType() { - return notificationType; - } - - public void setNotificationType(String notificationType) { - this.notificationType = notificationType; - } - - public String getNotificationUebServers() { - return notificationUebServers; - } - - public void setNotificationUebServers(String notificationUebServers) { - this.notificationUebServers = notificationUebServers; - } - - public String getClientId() { - return clientId; - } - - public void setClientId(String clientId) { - this.clientId = clientId; - } - - public String getClientKey() { - return clientKey; - } - - public void setClientKey(String clientKey) { - this.clientKey = clientKey; - } - - public String getPolicyEnvironment() { - return policyEnvironment; - } - - public void setPolicyEnvironment(String environment) { - this.policyEnvironment = environment; - } - - /** - * Returns policy configuration properties. - * - * @return policy configuration properties - */ - public Properties getProperties() { - Properties prop = new Properties(); - prop.put(PDP_URL1, pdpUrl1); - prop.put(PDP_URL2, pdpUrl2); - prop.put(PAP_URL, papUrl); - prop.put(NOTIFICATION_TYPE, notificationType); - prop.put(NOTIFICATION_UEB_SERVERS, notificationUebServers); - prop.put(CLIENT_ID, clientId); - prop.put(CLIENT_KEY, clientKey); - prop.put(ENVIRONMENT, policyEnvironment); - return prop; - } -} diff --git a/src/main/java/org/onap/clamp/clds/config/spring/SdcControllerConfiguration.java b/src/main/java/org/onap/clamp/clds/config/spring/SdcControllerConfiguration.java index 5a3e22a35..eca45d66f 100644 --- a/src/main/java/org/onap/clamp/clds/config/spring/SdcControllerConfiguration.java +++ b/src/main/java/org/onap/clamp/clds/config/spring/SdcControllerConfiguration.java @@ -41,14 +41,12 @@ import org.onap.clamp.loop.CsarInstaller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; import org.springframework.scheduling.annotation.Scheduled; @Configuration -@ComponentScan(basePackages = { "org.onap.clamp.loop", "org.onap.clamp.clds.config" }) -@Profile("clamp-sdc-controller-new") +@Profile("clamp-sdc-controller") public class SdcControllerConfiguration { private static final EELFLogger logger = EELFManager.getInstance().getLogger(SdcControllerConfiguration.class); diff --git a/src/main/java/org/onap/clamp/clds/exception/sdc/controller/BlueprintParserException.java b/src/main/java/org/onap/clamp/clds/exception/sdc/controller/BlueprintParserException.java new file mode 100644 index 000000000..7257fd8a0 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/exception/sdc/controller/BlueprintParserException.java @@ -0,0 +1,54 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2020 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============================================ + * =================================================================== + * + */ + +package org.onap.clamp.clds.exception.sdc.controller; + +/** + * Exception during blueprint parsing. + */ +public class BlueprintParserException extends Exception { + + /** + * Serial ID. + */ + private static final long serialVersionUID = -3044162346353623199L; + + /** + * This constructor can be used to create a new SdcDownloadException. + * + * @param message The message to dump + */ + public BlueprintParserException(final String message) { + super(message); + } + + /** + * This constructor can be used to create a new SdcDownloadException. + * + * @param message The message to dump + * @param cause The Throwable cause object + */ + public BlueprintParserException(final String message, final Throwable cause) { + super(message, cause); + } +} diff --git a/src/main/java/org/onap/clamp/clds/model/dcae/DcaeInventoryCache.java b/src/main/java/org/onap/clamp/clds/model/dcae/DcaeInventoryCache.java index 19bc23d5e..fc2ca5caa 100644 --- a/src/main/java/org/onap/clamp/clds/model/dcae/DcaeInventoryCache.java +++ b/src/main/java/org/onap/clamp/clds/model/dcae/DcaeInventoryCache.java @@ -46,7 +46,7 @@ public class DcaeInventoryCache { public void addDcaeInventoryResponse(DcaeInventoryResponse inventoryResponse) { Set responsesSet = blueprintsMap.get(inventoryResponse.getAsdcServiceId()); if (responsesSet == null) { - responsesSet = new TreeSet(); + responsesSet = new TreeSet<>(); blueprintsMap.put(inventoryResponse.getAsdcServiceId(), responsesSet); } responsesSet.add(inventoryResponse); diff --git a/src/main/java/org/onap/clamp/clds/sdc/controller/SdcSingleController.java b/src/main/java/org/onap/clamp/clds/sdc/controller/SdcSingleController.java index bd18baea6..fbb37d525 100644 --- a/src/main/java/org/onap/clamp/clds/sdc/controller/SdcSingleController.java +++ b/src/main/java/org/onap/clamp/clds/sdc/controller/SdcSingleController.java @@ -33,6 +33,7 @@ import java.util.concurrent.ThreadLocalRandom; import org.onap.clamp.clds.config.ClampProperties; import org.onap.clamp.clds.config.sdc.SdcSingleControllerConfiguration; +import org.onap.clamp.clds.exception.sdc.controller.BlueprintParserException; import org.onap.clamp.clds.exception.sdc.controller.CsarHandlerException; import org.onap.clamp.clds.exception.sdc.controller.SdcArtifactInstallerException; import org.onap.clamp.clds.exception.sdc.controller.SdcControllerException; @@ -290,6 +291,10 @@ public class SdcSingleController { sendAllNotificationForCsarHandler(notificationData, csar, NotificationType.DEPLOY, DistributionStatusEnum.DEPLOY_ERROR, e.getMessage()); Thread.currentThread().interrupt(); + } catch (BlueprintParserException e) { + logger.error("BlueprintParser exception caught during the notification processing", e); + sendAllNotificationForCsarHandler(notificationData, csar, NotificationType.DEPLOY, + DistributionStatusEnum.DEPLOY_ERROR, e.getMessage()); } catch (RuntimeException e) { logger.error("Unexpected exception caught during the notification processing", e); sendAllNotificationForCsarHandler(notificationData, csar, NotificationType.DEPLOY, diff --git a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintMicroService.java b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintMicroService.java new file mode 100644 index 000000000..e00ce9430 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintMicroService.java @@ -0,0 +1,93 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2019 Nokia 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============================================ + * Modifications copyright (c) 2019-2020 AT&T + * =================================================================== + * + */ + +package org.onap.clamp.clds.sdc.controller.installer; + +import java.util.Objects; + +public class BlueprintMicroService { + private final String name; + private final String modelType; + private final String inputFrom; + private final String modelVersion; + + /** + * The Micro service constructor. + * + * @param name The name in String + * @param modelType The model type + * @param inputFrom Comes from (single chained) + */ + public BlueprintMicroService(String name, String modelType, String inputFrom, String modelVersion) { + this.name = name; + this.inputFrom = inputFrom; + this.modelType = modelType; + this.modelVersion = modelVersion; + } + + public String getName() { + return name; + } + + public String getModelType() { + return modelType; + } + + public String getInputFrom() { + return inputFrom; + } + + /** + * modelVerrsion getter. + * + * @return the modelVersion + */ + public String getModelVersion() { + return modelVersion; + } + + @Override + public String toString() { + return "MicroService {" + "name='" + name + '\'' + ", modelType='" + modelType + '\'' + ", inputFrom='" + + inputFrom + '\'' + ", modelVersion='" + modelVersion + '\'' + '}'; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null || getClass() != obj.getClass()) { + return false; + } + BlueprintMicroService that = (BlueprintMicroService) obj; + return name.equals(that.name) && modelType.equals(that.modelType) && inputFrom.equals(that.inputFrom) + && modelVersion.equals(that.modelVersion); + } + + @Override + public int hashCode() { + return Objects.hash(name, modelType, inputFrom, modelVersion); + } +} diff --git a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintParser.java b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintParser.java index 0dd231f03..981a20416 100644 --- a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintParser.java +++ b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintParser.java @@ -24,6 +24,8 @@ package org.onap.clamp.clds.sdc.controller.installer; +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonElement; @@ -38,76 +40,74 @@ import java.util.Map.Entry; import java.util.Set; import org.json.JSONObject; -import org.springframework.stereotype.Component; +import org.onap.clamp.clds.exception.sdc.controller.BlueprintParserException; import org.yaml.snakeyaml.Yaml; -@Component public class BlueprintParser { static final String TCA = "TCA"; - static final String HOLMES = "Holmes"; - private static final String TCA_POLICY = "tca_policy"; - private static final String HOLMES_PREFIX = "holmes"; private static final String NODE_TEMPLATES = "node_templates"; private static final String DCAE_NODES = "dcae.nodes."; + private static final String DCAE_NODES_POLICY = "dcae.nodes.policy"; private static final String TYPE = "type"; private static final String PROPERTIES = "properties"; private static final String NAME = "name"; private static final String INPUT = "inputs"; private static final String GET_INPUT = "get_input"; - private static final String POLICY_MODELID = "policy_model_id"; + private static final String POLICY_MODEL_ID = "policy_model_id"; + private static final String POLICY_MODEL_VERSION = "policy_model_version"; private static final String RELATIONSHIPS = "relationships"; private static final String CLAMP_NODE_RELATIONSHIPS_GETS_INPUT_FROM = "clamp_node.relationships.gets_input_from"; private static final String TARGET = "target"; + public static final String DEFAULT_VERSION = "1.0.0"; + + private static final EELFLogger logger = EELFManager.getInstance().getLogger(BlueprintParser.class); + + private BlueprintParser() { + + } /** * Get all micro services from blueprint. * * @param blueprintString the blueprint in a String * @return A set of MircoService + * @throws BlueprintParserException In case of issues with the parsing */ - public Set getMicroServices(String blueprintString) { - Set microServices = new HashSet<>(); + public static Set getMicroServices(String blueprintString) throws BlueprintParserException { + Set microServices = new HashSet<>(); JsonObject blueprintJson = BlueprintParser.convertToJson(blueprintString); JsonObject nodeTemplateList = blueprintJson.get(NODE_TEMPLATES).getAsJsonObject(); JsonObject inputList = blueprintJson.get(INPUT).getAsJsonObject(); for (Entry entry : nodeTemplateList.entrySet()) { JsonObject nodeTemplate = entry.getValue().getAsJsonObject(); - if (nodeTemplate.get(TYPE).getAsString().contains(DCAE_NODES)) { - MicroService microService = getNodeRepresentation(entry, nodeTemplateList, inputList); - microServices.add(microService); + if (!nodeTemplate.get(TYPE).getAsString().contains(DCAE_NODES_POLICY) + && nodeTemplate.get(TYPE).getAsString().contains(DCAE_NODES)) { + BlueprintMicroService microService = getNodeRepresentation(entry, nodeTemplateList, inputList); + if (!microService.getModelType().isBlank()) { + microServices.add(microService); + } else { + logger.warn("Microservice " + microService.getName() + + " will NOT be used by CLAMP as the model type is not defined or has not been found"); + } } } - microServices.removeIf(ms -> TCA_POLICY.equals(ms.getName())); + logger.debug("Those microservices have been found in the blueprint:" + microServices); return microServices; } /** - * Does a fallback to TCA or Holmes. + * Does a fallback to TCA. * - * @param blueprintString the blueprint in a String * @return The list of microservices */ - public List fallbackToOneMicroService(String blueprintString) { - JsonObject jsonObject = BlueprintParser.convertToJson(blueprintString); - JsonObject results = jsonObject.get(NODE_TEMPLATES).getAsJsonObject(); - String theBiggestMicroServiceContent = ""; - String theBiggestMicroServiceKey = ""; - for (Entry entry : results.entrySet()) { - String msAsString = entry.getValue().toString(); - int len = msAsString.length(); - if (len > theBiggestMicroServiceContent.length()) { - theBiggestMicroServiceContent = msAsString; - theBiggestMicroServiceKey = entry.getKey(); - } - } - String msName = theBiggestMicroServiceKey.toLowerCase().contains(HOLMES_PREFIX) ? HOLMES : TCA; - return Collections - .singletonList(new MicroService(msName, "onap.policies.monitoring.cdap.tca.hi.lo.app", "", "")); + public static List fallbackToOneMicroService() { + return Collections.singletonList( + new BlueprintMicroService(TCA, "onap.policies.monitoring.cdap.tca.hi.lo.app", "", DEFAULT_VERSION)); } - String getName(Entry entry) { + static String getName(Entry entry) { String microServiceYamlName = entry.getKey(); JsonObject ob = entry.getValue().getAsJsonObject(); if (ob.has(PROPERTIES)) { @@ -119,7 +119,7 @@ public class BlueprintParser { return microServiceYamlName; } - String getInput(Entry entry) { + static String getInput(Entry entry) { JsonObject ob = entry.getValue().getAsJsonObject(); if (ob.has(RELATIONSHIPS)) { JsonArray relationships = ob.getAsJsonArray(RELATIONSHIPS); @@ -133,51 +133,81 @@ public class BlueprintParser { return ""; } - String findModelTypeInTargetArray(JsonArray jsonArray, JsonObject nodeTemplateList, JsonObject inputList) { - for (JsonElement elem : jsonArray) { - String modelType = getModelType( - new AbstractMap.SimpleEntry(elem.getAsJsonObject().get(TARGET).getAsString(), - nodeTemplateList.get(elem.getAsJsonObject().get(TARGET).getAsString()).getAsJsonObject()), - nodeTemplateList, inputList); - if (!modelType.isEmpty()) { - return modelType; + static String findPropertyInRelationshipsArray(String propertyName, JsonArray relationshipsArray, + JsonObject blueprintNodeTemplateList, JsonObject blueprintInputList) throws BlueprintParserException { + for (JsonElement elem : relationshipsArray) { + if (blueprintNodeTemplateList.get(elem.getAsJsonObject().get(TARGET).getAsString()) == null) { + throw new BlueprintParserException( + "The Target mentioned in the blueprint is not a known entry in the blueprint: " + + elem.getAsJsonObject().get(TARGET).getAsString()); + } else { + String property = getPropertyValue(propertyName, + new AbstractMap.SimpleEntry( + elem.getAsJsonObject().get(TARGET).getAsString(), blueprintNodeTemplateList + .get(elem.getAsJsonObject().get(TARGET).getAsString()).getAsJsonObject()), + blueprintNodeTemplateList, blueprintInputList); + if (!property.isEmpty()) { + return property; + } } } return ""; } - String getModelType(Entry entry, JsonObject nodeTemplateList, JsonObject inputList) { - JsonObject ob = entry.getValue().getAsJsonObject(); + static String getDirectOrInputPropertyValue(String propertyName, JsonObject blueprintInputList, + JsonObject nodeTemplateContent) { + JsonObject properties = nodeTemplateContent.get(PROPERTIES).getAsJsonObject(); + if (properties.has(propertyName)) { + if (properties.get(propertyName).isJsonObject()) { + // it's a blueprint parameter + return blueprintInputList + .get(properties.get(propertyName).getAsJsonObject().get(GET_INPUT).getAsString()) + .getAsJsonObject().get("default").getAsString(); + } else { + // It's a direct value + return properties.get(propertyName).getAsString(); + } + } + return ""; + } + + static String getPropertyValue(String propertyName, Entry nodeTemplateEntry, + JsonObject blueprintNodeTemplateList, JsonObject blueprintIputList) throws BlueprintParserException { + JsonObject nodeTemplateContent = nodeTemplateEntry.getValue().getAsJsonObject(); // Search first in this node template - if (ob.has(PROPERTIES)) { - JsonObject properties = ob.get(PROPERTIES).getAsJsonObject(); - if (properties.has(POLICY_MODELID)) { - if (properties.get(POLICY_MODELID).isJsonObject()) { - // it's a blueprint parameter - return inputList.get(properties.get(POLICY_MODELID).getAsJsonObject().get(GET_INPUT).getAsString()) - .getAsJsonObject().get("default").getAsString(); - } else { - // It's a direct value - return properties.get(POLICY_MODELID).getAsString(); - } + if (nodeTemplateContent.has(PROPERTIES)) { + String propValue = getDirectOrInputPropertyValue(propertyName, blueprintIputList, nodeTemplateContent); + if (!propValue.isBlank()) { + return propValue; } } // Or it's may be defined in a relationship - if (ob.has(RELATIONSHIPS)) { - return findModelTypeInTargetArray(ob.get(RELATIONSHIPS).getAsJsonArray(), nodeTemplateList, inputList); + if (nodeTemplateContent.has(RELATIONSHIPS)) { + return findPropertyInRelationshipsArray(propertyName, + nodeTemplateContent.get(RELATIONSHIPS).getAsJsonArray(), blueprintNodeTemplateList, + blueprintIputList); } return ""; } - MicroService getNodeRepresentation(Entry entry, JsonObject nodeTemplateList, - JsonObject inputList) { - String name = getName(entry); - String getInputFrom = getInput(entry); - String modelType = getModelType(entry, nodeTemplateList, inputList); - return new MicroService(name, modelType, getInputFrom, ""); + static BlueprintMicroService getNodeRepresentation(Entry nodeTemplateEntry, + JsonObject blueprintNodeTemplateList, JsonObject blueprintInputList) throws BlueprintParserException { + String modelIdFound = getPropertyValue(POLICY_MODEL_ID, nodeTemplateEntry, blueprintNodeTemplateList, + blueprintInputList); + String versionFound = getPropertyValue(POLICY_MODEL_VERSION, nodeTemplateEntry, blueprintNodeTemplateList, + blueprintInputList); + if (modelIdFound.isBlank()) { + logger.warn("policy_model_id is not defined for the node template:" + nodeTemplateEntry.getKey()); + } + if (versionFound.isBlank()) { + logger.warn("policy_model_version is not defined (setting it to a default value) for the node template:" + + nodeTemplateEntry.getKey()); + } + return new BlueprintMicroService(getName(nodeTemplateEntry), modelIdFound, getInput(nodeTemplateEntry), + !versionFound.isBlank() ? versionFound : DEFAULT_VERSION); } - private String getTarget(JsonObject elementObject) { + private static String getTarget(JsonObject elementObject) { if (elementObject.has(TYPE) && elementObject.has(TARGET) && elementObject.get(TYPE).getAsString().equals(CLAMP_NODE_RELATIONSHIPS_GETS_INPUT_FROM)) { return elementObject.get(TARGET).getAsString(); @@ -186,10 +216,7 @@ public class BlueprintParser { } private static JsonObject convertToJson(String yamlString) { - Yaml yaml = new Yaml(); - Map map = yaml.load(yamlString); - - JSONObject jsonObject = new JSONObject(map); - return new Gson().fromJson(jsonObject.toString(), JsonObject.class); + Map map = new Yaml().load(yamlString); + return new Gson().fromJson(new JSONObject(map).toString(), JsonObject.class); } } diff --git a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/ChainGenerator.java b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/ChainGenerator.java index 9e76cc938..2bd259c2b 100644 --- a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/ChainGenerator.java +++ b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/ChainGenerator.java @@ -42,11 +42,11 @@ public class ChainGenerator { * @param input A set of microservices * @return The list of microservice chained */ - public List getChainOfMicroServices(Set input) { - LinkedList returnList = new LinkedList<>(); + public List getChainOfMicroServices(Set input) { + LinkedList returnList = new LinkedList<>(); if (preValidate(input)) { - LinkedList theList = new LinkedList<>(); - for (MicroService ms : input) { + LinkedList theList = new LinkedList<>(); + for (BlueprintMicroService ms : input) { insertNodeTemplateIntoChain(ms, theList); } if (postValidate(theList)) { @@ -56,16 +56,16 @@ public class ChainGenerator { return returnList; } - private boolean preValidate(Set input) { - List noInputs = input.stream().filter(ms -> "".equals(ms.getInputFrom())) + private boolean preValidate(Set input) { + List noInputs = input.stream().filter(ms -> "".equals(ms.getInputFrom())) .collect(Collectors.toList()); return noInputs.size() == 1; } - private boolean postValidate(LinkedList microServices) { + private boolean postValidate(LinkedList microServices) { for (int i = 1; i < microServices.size() - 1; i++) { - MicroService prev = microServices.get(i - 1); - MicroService current = microServices.get(i); + BlueprintMicroService prev = microServices.get(i - 1); + BlueprintMicroService current = microServices.get(i); if (!current.getInputFrom().equals(prev.getName())) { return false; } @@ -73,11 +73,11 @@ public class ChainGenerator { return true; } - private void insertNodeTemplateIntoChain(MicroService microServicetoInsert, - LinkedList chainOfMicroServices) { + private void insertNodeTemplateIntoChain(BlueprintMicroService microServicetoInsert, + LinkedList chainOfMicroServices) { int insertIndex = 0; for (int i = 0; i < chainOfMicroServices.size(); i++) { - MicroService current = chainOfMicroServices.get(i); + BlueprintMicroService current = chainOfMicroServices.get(i); if (microServicetoInsert.getName().equals(current.getInputFrom())) { insertIndex = i; break; diff --git a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/MicroService.java b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/MicroService.java deleted file mode 100644 index 68ac842cf..000000000 --- a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/MicroService.java +++ /dev/null @@ -1,93 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2019 Nokia 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============================================ - * Modifications copyright (c) 2019 AT&T - * =================================================================== - * - */ - -package org.onap.clamp.clds.sdc.controller.installer; - -import java.util.Objects; - -public class MicroService { - private final String name; - private final String modelType; - private final String inputFrom; - private String mappedNameJpa; - - /** - * The Micro service constructor. - * - * @param name The name in String - * @param modelType The model type - * @param inputFrom Comes from (single chained) - * @param mappedNameJpa Name in database - */ - public MicroService(String name, String modelType, String inputFrom, String mappedNameJpa) { - this.name = name; - this.inputFrom = inputFrom; - this.mappedNameJpa = mappedNameJpa; - this.modelType = modelType; - } - - public String getName() { - return name; - } - - public String getModelType() { - return modelType; - } - - public String getInputFrom() { - return inputFrom; - } - - @Override - public String toString() { - return "MicroService{" + "name='" + name + '\'' + ", modelType='" + modelType + '\'' + ", inputFrom='" - + inputFrom + '\'' + ", mappedNameJpa='" + mappedNameJpa + '\'' + '}'; - } - - public String getMappedNameJpa() { - return mappedNameJpa; - } - - public void setMappedNameJpa(String mappedNameJpa) { - this.mappedNameJpa = mappedNameJpa; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null || getClass() != obj.getClass()) { - return false; - } - MicroService that = (MicroService) obj; - return name.equals(that.name) && modelType.equals(that.modelType) && inputFrom.equals(that.inputFrom) - && mappedNameJpa.equals(that.mappedNameJpa); - } - - @Override - public int hashCode() { - return Objects.hash(name, modelType, inputFrom, mappedNameJpa); - } -} diff --git a/src/main/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilder.java b/src/main/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilder.java index 8ded0cb87..6ce89873b 100755 --- a/src/main/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilder.java +++ b/src/main/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilder.java @@ -28,12 +28,12 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; -import org.onap.clamp.clds.sdc.controller.installer.MicroService; +import org.onap.clamp.clds.sdc.controller.installer.BlueprintMicroService; public class ClampGraphBuilder { private String policy; private String collector; - private List microServices = new ArrayList<>(); + private List microServices = new ArrayList<>(); private final Painter painter; public ClampGraphBuilder(Painter painter) { @@ -50,12 +50,12 @@ public class ClampGraphBuilder { return this; } - public ClampGraphBuilder addMicroService(MicroService ms) { + public ClampGraphBuilder addMicroService(BlueprintMicroService ms) { microServices.add(ms); return this; } - public ClampGraphBuilder addAllMicroServices(List msList) { + public ClampGraphBuilder addAllMicroServices(List msList) { microServices.addAll(msList); return this; } diff --git a/src/main/java/org/onap/clamp/clds/util/drawing/Painter.java b/src/main/java/org/onap/clamp/clds/util/drawing/Painter.java index af6caf932..d96c9e537 100755 --- a/src/main/java/org/onap/clamp/clds/util/drawing/Painter.java +++ b/src/main/java/org/onap/clamp/clds/util/drawing/Painter.java @@ -31,7 +31,7 @@ import java.awt.RenderingHints; import java.util.List; import org.apache.batik.svggen.SVGGraphics2D; -import org.onap.clamp.clds.sdc.controller.installer.MicroService; +import org.onap.clamp.clds.sdc.controller.installer.BlueprintMicroService; public class Painter { private final int canvasSize; @@ -57,7 +57,7 @@ public class Painter { this.canvasSize = DEFALUT_CANVAS_SIZE; } - DocumentBuilder doPaint(String collector, List microServices, String policy) { + DocumentBuilder doPaint(String collector, List microServices, String policy) { int numOfRectangles = 2 + microServices.size(); int numOfArrows = numOfRectangles + 1; int baseLength = (canvasSize - 2 * CIRCLE_RADIUS) / (numOfArrows + numOfRectangles); @@ -76,12 +76,12 @@ public class Painter { return ib.getDocumentBuilder(); } - private void doTheActualDrawing(String collector, List microServices, String policy, + private void doTheActualDrawing(String collector, List microServices, String policy, ImageBuilder ib) { ib.circle("start-circle", SLIM_LINE).arrow().rectangle(collector, RectTypes.COLECTOR, collector); - for (MicroService ms : microServices) { - ib.arrow().rectangle(ms.getMappedNameJpa(), RectTypes.MICROSERVICE, ms.getName()); + for (BlueprintMicroService ms : microServices) { + ib.arrow().rectangle(ms.getModelType(), RectTypes.MICROSERVICE, ms.getName()); } ib.arrow().rectangle(policy, RectTypes.POLICY, policy).arrow().circle("stop-circle", THICK_LINE); diff --git a/src/main/java/org/onap/clamp/clds/util/drawing/SvgFacade.java b/src/main/java/org/onap/clamp/clds/util/drawing/SvgFacade.java index ae0c1729c..251f48864 100644 --- a/src/main/java/org/onap/clamp/clds/util/drawing/SvgFacade.java +++ b/src/main/java/org/onap/clamp/clds/util/drawing/SvgFacade.java @@ -27,7 +27,7 @@ package org.onap.clamp.clds.util.drawing; import java.util.List; import org.apache.batik.svggen.SVGGraphics2D; -import org.onap.clamp.clds.sdc.controller.installer.MicroService; +import org.onap.clamp.clds.sdc.controller.installer.BlueprintMicroService; import org.onap.clamp.clds.util.XmlTools; import org.springframework.stereotype.Component; import org.w3c.dom.Document; @@ -40,7 +40,7 @@ public class SvgFacade { * @param microServicesChain THe chain of microservices * @return A String containing the SVG */ - public String getSvgImage(List microServicesChain) { + public String getSvgImage(List microServicesChain) { SVGGraphics2D svgGraphics2D = new SVGGraphics2D(XmlTools.createEmptySvgDocument()); Document document = XmlTools.createEmptySvgDocument(); DocumentBuilder dp = new DocumentBuilder(document, svgGraphics2D.getDOMFactory()); diff --git a/src/main/java/org/onap/clamp/loop/CsarInstaller.java b/src/main/java/org/onap/clamp/loop/CsarInstaller.java index 013d3419d..022b0e28a 100644 --- a/src/main/java/org/onap/clamp/loop/CsarInstaller.java +++ b/src/main/java/org/onap/clamp/loop/CsarInstaller.java @@ -33,13 +33,15 @@ import java.util.Map.Entry; import org.json.simple.parser.ParseException; import org.onap.clamp.clds.client.DcaeInventoryServices; +import org.onap.clamp.clds.client.PolicyEngineServices; +import org.onap.clamp.clds.exception.sdc.controller.BlueprintParserException; import org.onap.clamp.clds.exception.sdc.controller.SdcArtifactInstallerException; import org.onap.clamp.clds.model.dcae.DcaeInventoryResponse; import org.onap.clamp.clds.sdc.controller.installer.BlueprintArtifact; +import org.onap.clamp.clds.sdc.controller.installer.BlueprintMicroService; import org.onap.clamp.clds.sdc.controller.installer.BlueprintParser; import org.onap.clamp.clds.sdc.controller.installer.ChainGenerator; import org.onap.clamp.clds.sdc.controller.installer.CsarHandler; -import org.onap.clamp.clds.sdc.controller.installer.MicroService; import org.onap.clamp.clds.util.drawing.SvgFacade; import org.onap.clamp.loop.service.CsarServiceInstaller; import org.onap.clamp.loop.service.Service; @@ -47,6 +49,8 @@ import org.onap.clamp.loop.template.LoopElementModel; import org.onap.clamp.loop.template.LoopTemplate; import org.onap.clamp.loop.template.LoopTemplatesRepository; import org.onap.clamp.loop.template.PolicyModel; +import org.onap.clamp.loop.template.PolicyModelId; +import org.onap.clamp.loop.template.PolicyModelsRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; @@ -61,31 +65,27 @@ import org.springframework.stereotype.Component; public class CsarInstaller { private static final EELFLogger logger = EELFManager.getInstance().getLogger(CsarInstaller.class); - public static final String CONTROL_NAME_PREFIX = "ClosedLoop-"; - public static final String GET_INPUT_BLUEPRINT_PARAM = "get_input"; - // This will be used later as the policy scope - public static final String MODEL_NAME_PREFIX = "Loop_"; @Autowired - LoopsRepository loopRepository; + private PolicyModelsRepository policyModelsRepository; @Autowired - LoopTemplatesRepository loopTemplatesRepository; + private LoopTemplatesRepository loopTemplatesRepository; @Autowired - BlueprintParser blueprintParser; + private ChainGenerator chainGenerator; @Autowired - ChainGenerator chainGenerator; + private DcaeInventoryServices dcaeInventoryService; @Autowired - DcaeInventoryServices dcaeInventoryService; + private SvgFacade svgFacade; @Autowired - private SvgFacade svgFacade; + private CsarServiceInstaller csarServiceInstaller; @Autowired - CsarServiceInstaller csarServiceInstaller; + private PolicyEngineServices policyEngineServices; /** * Verify whether Csar is deployed. @@ -113,8 +113,11 @@ public class CsarInstaller { * @param csar The Csar Handler * @throws SdcArtifactInstallerException The SdcArtifactInstallerException * @throws InterruptedException The InterruptedException + * @throws BlueprintParserException In case of issues with the blueprint + * parsing */ - public void installTheCsar(CsarHandler csar) throws SdcArtifactInstallerException, InterruptedException { + public void installTheCsar(CsarHandler csar) + throws SdcArtifactInstallerException, InterruptedException, BlueprintParserException { logger.info("Installing the CSAR " + csar.getFilePath()); installTheLoopTemplates(csar, csarServiceInstaller.installTheService(csar)); logger.info("Successfully installed the CSAR " + csar.getFilePath()); @@ -127,9 +130,11 @@ public class CsarInstaller { * @param service The service object that is related to the loop * @throws SdcArtifactInstallerException The SdcArtifactInstallerException * @throws InterruptedException The InterruptedException + * @throws BlueprintParserException In case of issues with the blueprint + * parsing */ public void installTheLoopTemplates(CsarHandler csar, Service service) - throws SdcArtifactInstallerException, InterruptedException { + throws SdcArtifactInstallerException, InterruptedException, BlueprintParserException { try { logger.info("Installing the Loops"); for (Entry blueprint : csar.getMapOfBlueprints().entrySet()) { @@ -145,20 +150,20 @@ public class CsarInstaller { } private LoopTemplate createLoopTemplateFromBlueprint(CsarHandler csar, BlueprintArtifact blueprintArtifact, - Service service) throws IOException, ParseException, InterruptedException { + Service service) throws IOException, ParseException, InterruptedException, BlueprintParserException { LoopTemplate newLoopTemplate = new LoopTemplate(); newLoopTemplate.setBlueprint(blueprintArtifact.getDcaeBlueprint()); newLoopTemplate.setName(LoopTemplate.generateLoopTemplateName(csar.getSdcNotification().getServiceName(), csar.getSdcNotification().getServiceVersion(), blueprintArtifact.getResourceAttached().getResourceInstanceName(), blueprintArtifact.getBlueprintArtifactName())); - List microServicesChain = chainGenerator - .getChainOfMicroServices(blueprintParser.getMicroServices(blueprintArtifact.getDcaeBlueprint())); + List microServicesChain = chainGenerator + .getChainOfMicroServices(BlueprintParser.getMicroServices(blueprintArtifact.getDcaeBlueprint())); if (microServicesChain.isEmpty()) { - microServicesChain = blueprintParser.fallbackToOneMicroService(blueprintArtifact.getDcaeBlueprint()); + microServicesChain = BlueprintParser.fallbackToOneMicroService(); } newLoopTemplate.setModelService(service); - newLoopTemplate.addLoopElementModels(createMicroServiceModels(microServicesChain, csar, blueprintArtifact)); + newLoopTemplate.addLoopElementModels(createMicroServiceModels(microServicesChain)); newLoopTemplate.setMaximumInstancesAllowed(0); newLoopTemplate.setSvgRepresentation(svgFacade.getSvgImage(microServicesChain)); DcaeInventoryResponse dcaeResponse = queryDcaeToGetServiceTypeId(blueprintArtifact); @@ -166,14 +171,14 @@ public class CsarInstaller { return newLoopTemplate; } - private HashSet createMicroServiceModels(List microServicesChain, CsarHandler csar, - BlueprintArtifact blueprintArtifact) throws IOException { + private HashSet createMicroServiceModels(List microServicesChain) + throws InterruptedException { HashSet newSet = new HashSet<>(); - for (MicroService microService : microServicesChain) { + for (BlueprintMicroService microService : microServicesChain) { LoopElementModel loopElementModel = new LoopElementModel(microService.getModelType(), "CONFIG_POLICY", - blueprintArtifact.getDcaeBlueprint()); + null); newSet.add(loopElementModel); - loopElementModel.addPolicyModel(createPolicyModel(microService, csar)); + loopElementModel.addPolicyModel(getPolicyModel(microService)); } return newSet; } @@ -183,14 +188,20 @@ public class CsarInstaller { return policyNameArray[policyNameArray.length - 1]; } - private PolicyModel createPolicyModel(MicroService microService, CsarHandler csar) throws IOException { - return new PolicyModel(microService.getModelType(), csar.getPolicyModelYaml().orElse(""), "1.0", - createPolicyAcronym(microService.getModelType())); + private PolicyModel createPolicyModel(BlueprintMicroService microService) throws InterruptedException { + return new PolicyModel(microService.getModelType(), + policyEngineServices.downloadOnePolicy(microService.getModelType(), microService.getModelVersion()), + microService.getModelVersion(), createPolicyAcronym(microService.getModelType())); + } + + private PolicyModel getPolicyModel(BlueprintMicroService microService) throws InterruptedException { + return policyModelsRepository + .findById(new PolicyModelId(microService.getModelType(), microService.getModelVersion())) + .orElse(createPolicyModel(microService)); } /** - * ll get the latest version of the artifact (version can be specified to DCAE - * call). + * Get the service blueprint Id in the Dcae inventory using the SDC UUID. * * @return The DcaeInventoryResponse object containing the dcae values */ diff --git a/src/main/java/org/onap/clamp/loop/template/LoopElementModel.java b/src/main/java/org/onap/clamp/loop/template/LoopElementModel.java index e3f05a01d..0a0831bb7 100644 --- a/src/main/java/org/onap/clamp/loop/template/LoopElementModel.java +++ b/src/main/java/org/onap/clamp/loop/template/LoopElementModel.java @@ -70,7 +70,7 @@ public class LoopElementModel extends AuditEntity implements Serializable { /** * Here we store the blueprint coming from DCAE. */ - @Column(columnDefinition = "MEDIUMTEXT", nullable = false, name = "blueprint_yaml") + @Column(columnDefinition = "MEDIUMTEXT", name = "blueprint_yaml") private String blueprint; /** diff --git a/src/main/java/org/onap/clamp/loop/template/PolicyModel.java b/src/main/java/org/onap/clamp/loop/template/PolicyModel.java index 886e8c806..53539fccb 100644 --- a/src/main/java/org/onap/clamp/loop/template/PolicyModel.java +++ b/src/main/java/org/onap/clamp/loop/template/PolicyModel.java @@ -224,7 +224,13 @@ public class PolicyModel extends AuditEntity implements Serializable, Comparable @Override public int compareTo(PolicyModel arg0) { - // Reverse it, so that by default we have the latest - return SemanticVersioning.compare(arg0.getVersion(), this.version); + + if (this.getPolicyModelType().equals(arg0.getPolicyModelType())) { + // Reverse it, so that by default we have the latest in they are same model type + return SemanticVersioning.compare(arg0.getVersion(), this.version); + } else { + return this.getPolicyModelType().compareTo(arg0.getPolicyModelType()); + } + } } diff --git a/src/main/java/org/onap/clamp/policy/downloader/PolicyDownloader.java b/src/main/java/org/onap/clamp/policy/downloader/PolicyDownloader.java new file mode 100644 index 000000000..b712dc3f6 --- /dev/null +++ b/src/main/java/org/onap/clamp/policy/downloader/PolicyDownloader.java @@ -0,0 +1,61 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2020 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============================================ + * =================================================================== + * + */ + +package org.onap.clamp.policy.downloader; + +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; + +import org.apache.camel.CamelContext; +import org.onap.clamp.clds.client.DcaeInventoryServices; +import org.onap.clamp.clds.config.ClampProperties; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; + +/** + * This class implements a periodic job that is done in the background to + * synchronize policy models available on the policy engine and the clamp + * database table PolicyModel. + */ +@Configuration +@Profile("clamp-policy-controller") +public class PolicyDownloader { + + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(DcaeInventoryServices.class); + protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger(); + protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); + public static final String POLICY_RETRY_INTERVAL = "policy.retry.interval"; + public static final String POLICY_RETRY_LIMIT = "policy.retry.limit"; + + private final CamelContext camelContext; + + private final ClampProperties refProp; + + @Autowired + public PolicyDownloader(CamelContext camelContext, ClampProperties refProp) { + this.refProp = refProp; + this.camelContext = camelContext; + } + +} diff --git a/src/main/resources/application-noaaf.properties b/src/main/resources/application-noaaf.properties index d389b211c..b9af1b470 100644 --- a/src/main/resources/application-noaaf.properties +++ b/src/main/resources/application-noaaf.properties @@ -73,7 +73,7 @@ clamp.config.keyFile=classpath:/clds/aaf/org.onap.clamp.keyfile server.servlet.context-path=/ #Modified engine-rest applicationpath -spring.profiles.active=clamp-default,clamp-default-user,clamp-sdc-controller-new,clamp-ssl-config +spring.profiles.active=clamp-default,clamp-default-user,clamp-sdc-controller,clamp-ssl-config spring.http.converters.preferred-json-mapper=gson #The max number of active threads in this pool @@ -160,26 +160,6 @@ clamp.config.policy.pap.url=http4://localhost:8085 clamp.config.policy.pap.userName=healthcheck clamp.config.policy.pap.password=zb!XztG34 - -clamp.config.policy.clientKey=dGVzdA== -#DEVL for development -#TEST for Test environments -#PROD for prod environments -clamp.config.policy.policyEnvironment=TEST -# General Policy request properties -# -clamp.config.policy.onap.name=DCAE -clamp.config.policy.pdp.group=default -clamp.config.policy.ms.type=MicroService -clamp.config.policy.ms.policyNamePrefix=Config_MS_ -clamp.config.policy.op.policyNamePrefix=Config_BRMS_Param_ -clamp.config.policy.base.policyNamePrefix=Config_ -clamp.config.policy.op.type=BRMS_Param - -clamp.config.import.tosca.model=true -clamp.config.tosca.policyTypes=tca -clamp.config.tosca.filePath=/tmp/tosca-models - # TCA MicroService Policy request build properties # clamp.config.tca.policyid.prefix=DCAE.Config_ diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index b97d64364..e4568995d 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -78,7 +78,7 @@ server.ssl.trust-store-password=enc:iDnPBBLq_EMidXlMa1FEuBR8TZzYxrCg66vq_XfLHdJ server.servlet.context-path=/ #Modified engine-rest applicationpath -spring.profiles.active=clamp-default,clamp-aaf-authentication,clamp-sdc-controller-new,clamp-ssl-config +spring.profiles.active=clamp-default,clamp-aaf-authentication,clamp-sdc-controller,clamp-ssl-config spring.http.converters.preferred-json-mapper=gson #The max number of active threads in this pool @@ -163,34 +163,6 @@ clamp.config.policy.pap.url=http4://policy.api.simpledemo.onap.org:6969 clamp.config.policy.pap.userName=healthcheck clamp.config.policy.pap.password=zb!XztG34 -clamp.config.policy.pdpUrl1=http://policy.api.simpledemo.onap.org:8081/pdp/ , testpdp, alpha123 -clamp.config.policy.pdpUrl2=http://policy.api.simpledemo.onap.org:8081/pdp/ , testpdp, alpha123 -clamp.config.policy.papUrl=http://policy.api.simpledemo.onap.org:8081/pap/ , testpap, alpha123 -clamp.config.policy.notificationType=websocket -clamp.config.policy.notificationUebServers=localhost -clamp.config.policy.notificationTopic=PDPD-CONFIGURATION -clamp.config.policy.clientId=python -# base64 encoding - -clamp.config.policy.clientKey=dGVzdA== -#DEVL for development -#TEST for Test environments -#PROD for prod environments -clamp.config.policy.policyEnvironment=TEST -# General Policy request properties -# -clamp.config.policy.onap.name=DCAE -clamp.config.policy.pdp.group=default -clamp.config.policy.ms.type=MicroService -clamp.config.policy.ms.policyNamePrefix=Config_MS_ -clamp.config.policy.op.policyNamePrefix=Config_BRMS_Param_ -clamp.config.policy.base.policyNamePrefix=Config_ -clamp.config.policy.op.type=BRMS_Param - -clamp.config.import.tosca.model=true -clamp.config.tosca.policyTypes=tca -clamp.config.tosca.filePath=/tmp/tosca-models - # TCA MicroService Policy request build properties # clamp.config.tca.policyid.prefix=DCAE.Config_ diff --git a/src/main/resources/clds/camel/routes/policy-flows.xml b/src/main/resources/clds/camel/routes/policy-flows.xml index 97416a6cc..ce24b27ce 100644 --- a/src/main/resources/clds/camel/routes/policy-flows.xml +++ b/src/main/resources/clds/camel/routes/policy-flows.xml @@ -1,520 +1,587 @@ - - - - false - - - - ${header.CamelHttpResponseCode} != 200 - - false - - - - - false - - - - ${header.CamelHttpResponseCode} != 200 - - false - - - - - ${exchangeProperty[policyComponent].computeState(*)} - - - - - - - - - - GET - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - - - - ${exchangeProperty[policyName]} GET - Policy status - - - - POLICY - - - - - - - - - - - - - GET - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - - - - ${exchangeProperty[policyName]} GET Policy deployment - status - - - - POLICY + + + + false - - - - - - - - - - - ${exchangeProperty[microServicePolicy].createPolicyPayload()} - - - - POST - - - application/json - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - - - - ${exchangeProperty[microServicePolicy].getName()} creation - status - + + + ${header.CamelHttpResponseCode} != 200 + + false + + + + + false - - POLICY + + + ${header.CamelHttpResponseCode} != 200 + + false + + + + + ${exchangeProperty[policyComponent].computeState(*)} - - - - + - - - - - - - null - - - DELETE - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - + + + + + + + GET + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + ${exchangeProperty[policyName]} GET + Policy status + + + + POLICY + + + + + - - - - - ${exchangeProperty[microServicePolicy].getName()} removal - status - - - - POLICY - - - - - + + + + + + + GET + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + ${exchangeProperty[policyName]} GET Policy deployment + status + + + + POLICY + + + + + + + + + + + + GET + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + + + + + + + + + + GET + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + + + + + + + + + + ${exchangeProperty[microServicePolicy].createPolicyPayload()} + + + + POST + + + application/json + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + ${exchangeProperty[microServicePolicy].getName()} creation + status + + + + POLICY + + + + + - - - - - - - ${exchangeProperty[operationalPolicy].createPolicyPayload()} - - - - POST - - - application/json - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - - - - ${exchangeProperty[operationalPolicy].getName()} creation - status - - - - POLICY - - - - - + + + + + + + null + + + DELETE + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + - - - - - - - null - - - DELETE - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - - - - ${exchangeProperty[operationalPolicy].getName()} removal - status - - - - POLICY - - - - - + + + + + ${exchangeProperty[microServicePolicy].getName()} removal + status + + + + POLICY + + + + + - - - - - - - ${exchangeProperty[guardPolicy].getValue()} - - - - POST - - - application/json - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - - - - ${exchangeProperty[guardPolicy].getKey()} creation status - - - - POLICY - - - - - + + + + + + + ${exchangeProperty[operationalPolicy].createPolicyPayload()} + + + + POST + + + application/json + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + ${exchangeProperty[operationalPolicy].getName()} creation + status + + + + POLICY + + + + + - - - - - - - null - - - DELETE - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - + + + + + + + null + + + DELETE + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + ${exchangeProperty[operationalPolicy].getName()} removal + status + + + + POLICY + + + + + - - - - - ${exchangeProperty[guardPolicy].getKey()} removal status - - - - POLICY - - - - - + + + + + + + ${exchangeProperty[guardPolicy].getValue()} + + + + POST + + + application/json + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + ${exchangeProperty[guardPolicy].getKey()} creation status + + + + POLICY + + + + + - - - - - - - ${exchangeProperty[loopObject].getComponent("POLICY").createPoliciesPayloadPdpGroup(exchangeProperty[loopObject])} - - - - POST - - - application/json - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - + + + + + + + null + + + DELETE + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + - - - - - PDP Group push ALL status - - - POLICY - - - - - + + + + + ${exchangeProperty[guardPolicy].getKey()} removal status + + + + POLICY + + + + + - - - - - - - ${exchangeProperty[loopObject].getComponent("POLICY").listPolicyNamesPdpGroup(exchangeProperty[loopObject])} - - - ${body} - - - null - - - DELETE - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - ${exchangeProperty[policyName]} PDP Group removal status - - - - POLICY - - - - - java.lang.Exception - - false - - - PDP Group removal, Error reported: ${exception} - - - POLICY - - - - - - - - - + + + + + + + ${exchangeProperty[loopObject].getComponent("POLICY").createPoliciesPayloadPdpGroup(exchangeProperty[loopObject])} + + + + POST + + + application/json + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + + PDP Group push ALL status + + + POLICY + + + + + + + + + + + + + ${exchangeProperty[loopObject].getComponent("POLICY").listPolicyNamesPdpGroup(exchangeProperty[loopObject])} + + + ${body} + + + null + + + DELETE + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + ${exchangeProperty[policyName]} PDP Group removal status + + + + POLICY + + + + + java.lang.Exception + + false + + + PDP Group removal, Error reported: ${exception} + + + POLICY + + + + + + + + + \ No newline at end of file diff --git a/src/test/java/org/onap/clamp/clds/it/PolicyConfigurationItCase.java b/src/test/java/org/onap/clamp/clds/it/PolicyConfigurationItCase.java deleted file mode 100644 index fd20e360a..000000000 --- a/src/test/java/org/onap/clamp/clds/it/PolicyConfigurationItCase.java +++ /dev/null @@ -1,71 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2017-2018 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.it; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.onap.clamp.clds.config.PolicyConfiguration; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -/** - * Test Config Policy read from application.properties. - */ -@RunWith(SpringRunner.class) -@SpringBootTest -public class PolicyConfigurationItCase { - - @Autowired - private PolicyConfiguration policyConfiguration; - - @Test - public void testPolicyConfiguration() { - assertNotNull(policyConfiguration.getPdpUrl1()); - assertNotNull(policyConfiguration.getPdpUrl2()); - assertNotNull(policyConfiguration.getPapUrl()); - assertNotNull(policyConfiguration.getPolicyEnvironment()); - assertNotNull(policyConfiguration.getClientId()); - assertNotNull(policyConfiguration.getClientKey()); - assertNotNull(policyConfiguration.getNotificationType()); - assertNotNull(policyConfiguration.getNotificationUebServers()); - assertEquals(8, policyConfiguration.getProperties().size()); - assertTrue(((String) policyConfiguration.getProperties().get(PolicyConfiguration.PDP_URL1)) - .contains("/pdp/ , testpdp, alpha123")); - assertTrue(((String) policyConfiguration.getProperties().get(PolicyConfiguration.PDP_URL2)) - .contains("/pdp/ , testpdp, alpha123")); - assertTrue(((String) policyConfiguration.getProperties().get(PolicyConfiguration.PAP_URL)) - .contains("/pap/ , testpap, alpha123")); - assertEquals("websocket", policyConfiguration.getProperties().get(PolicyConfiguration.NOTIFICATION_TYPE)); - assertEquals("localhost", - policyConfiguration.getProperties().get(PolicyConfiguration.NOTIFICATION_UEB_SERVERS)); - assertEquals("python", policyConfiguration.getProperties().get(PolicyConfiguration.CLIENT_ID)); - assertEquals("dGVzdA==", policyConfiguration.getProperties().get(PolicyConfiguration.CLIENT_KEY)); - assertEquals("DEVL", policyConfiguration.getProperties().get(PolicyConfiguration.ENVIRONMENT)); - } -} diff --git a/src/test/java/org/onap/clamp/clds/it/config/CldsReferencePropertiesItCase.java b/src/test/java/org/onap/clamp/clds/it/config/CldsReferencePropertiesItCase.java index d34042038..c25415ecc 100644 --- a/src/test/java/org/onap/clamp/clds/it/config/CldsReferencePropertiesItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/config/CldsReferencePropertiesItCase.java @@ -28,10 +28,9 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; - import com.google.gson.JsonElement; + import java.io.IOException; -import java.util.List; import org.junit.Test; import org.junit.runner.RunWith; @@ -55,19 +54,15 @@ public class CldsReferencePropertiesItCase { */ @Test public void testGetStringValue() { - assertEquals("DCAE", refProp.getStringValue("policy.onap.name")); - assertEquals("Config_MS_", refProp.getStringValue("policy.ms.policyNamePrefix", "")); - assertEquals("Config_MS_", refProp.getStringValue("policy.ms.policyNamePrefix", "testos")); - assertEquals("Config_MS_", refProp.getStringValue("policy.ms", "policyNamePrefix")); - assertNull(refProp.getStringValue("does.not.exist")); + assertEquals("healthcheck", refProp.getStringValue("policy.api.userName")); } @Test public void shouldReturnJsonFromTemplate() throws IOException { - //when + // when JsonElement root = refProp.getJsonTemplate("ui.location.default"); - //then + // then assertNotNull(root); assertTrue(root.isJsonObject()); assertEquals("Data Center 1", root.getAsJsonObject().get("DC1").getAsString()); @@ -75,10 +70,10 @@ public class CldsReferencePropertiesItCase { @Test public void shouldReturnJsonFromTemplate_2() throws IOException { - //when + // when JsonElement root = refProp.getJsonTemplate("ui.location", "default"); - //then + // then assertNotNull(root); assertTrue(root.isJsonObject()); assertEquals("Data Center 1", root.getAsJsonObject().get("DC1").getAsString()); @@ -86,18 +81,17 @@ public class CldsReferencePropertiesItCase { @Test public void shouldReturnNullIfPropertyNotFound() throws IOException { - //when + // when JsonElement root = refProp.getJsonTemplate("ui.location", ""); - //then + // then assertNull(root); } /** * Test getting prop value as a JSON Node / template. * - * @throws IOException - * when JSON parsing fails + * @throws IOException when JSON parsing fails */ @Test public void testGetFileContent() throws IOException { @@ -109,13 +103,4 @@ public class CldsReferencePropertiesItCase { content = refProp.getFileContent("ui.location", "default"); assertEquals(location, content); } - - @Test - public void testGetStringList() { - List profileList = refProp.getStringList("policy.pdpUrl1", ","); - assertEquals(3, profileList.size()); - assertTrue(profileList.get(0).trim().startsWith("http://localhost:")); - assertEquals("testpdp", profileList.get(1).trim()); - assertEquals("alpha123", profileList.get(2).trim()); - } } diff --git a/src/test/java/org/onap/clamp/clds/it/config/SdcControllersConfigurationItCase.java b/src/test/java/org/onap/clamp/clds/it/config/SdcControllersConfigurationItCase.java index 7c520a252..7ef734533 100644 --- a/src/test/java/org/onap/clamp/clds/it/config/SdcControllersConfigurationItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/config/SdcControllersConfigurationItCase.java @@ -45,7 +45,7 @@ import org.springframework.test.util.ReflectionTestUtils; */ @RunWith(SpringRunner.class) @SpringBootTest -@ActiveProfiles(profiles = "clamp-default,clamp-default-user,clamp-sdc-controller-new") +@ActiveProfiles(profiles = "clamp-default,clamp-default-user,clamp-sdc-controller") public class SdcControllersConfigurationItCase { @Autowired diff --git a/src/test/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintParserTest.java b/src/test/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintParserTest.java index e48bfc44a..9efb68983 100644 --- a/src/test/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintParserTest.java +++ b/src/test/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintParserTest.java @@ -44,6 +44,7 @@ import org.json.JSONObject; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; +import org.onap.clamp.clds.exception.sdc.controller.BlueprintParserException; import org.onap.clamp.clds.util.ResourceFileUtil; import org.yaml.snakeyaml.Yaml; @@ -53,17 +54,16 @@ public class BlueprintParserTest { private static final String SECOND_APPP = "second_app"; private static final String THIRD_APPP = "third_app"; private static final String MODEL_TYPE1 = "type1"; - private static final String MODEL_TYPE2 = "type2"; - private static final String MODEL_TYPE3 = "type3"; + private static final String MODEL_TYPE_TCA = "onap.policies.monitoring.cdap.tca.hi.lo.app"; + private static final String VERSION = "1.0.0"; private static String microServiceTheWholeBlueprintValid; - private static String microServiceBlueprintOldStyleTCA; - private static String microServiceBlueprintOldStyleHolmes; private static String newMicroServiceBlueprint; - private static JsonObject jsonObjectBlueprintValid; + private static JsonObject jsonObjectBlueprintInvalid; private static JsonObject jsonObjectBlueprintWithoutName; private static JsonObject jsonObjectBlueprintWithoutProperties; private static JsonObject jsonObjectBlueprintWithoutRelationships; + private static JsonObject jsonObjectBlueprintValidWithVersion; /** * Method to load Blueprints before all test. @@ -74,20 +74,21 @@ public class BlueprintParserTest { public static void loadBlueprints() throws IOException { microServiceTheWholeBlueprintValid = ResourceFileUtil .getResourceAsString("clds/blueprint-with-microservice-chain.yaml"); - microServiceBlueprintOldStyleTCA = ResourceFileUtil.getResourceAsString("clds/tca-old-style-ms.yaml"); + newMicroServiceBlueprint = ResourceFileUtil.getResourceAsString("clds/new-microservice.yaml"); - microServiceBlueprintOldStyleHolmes = ResourceFileUtil.getResourceAsString("clds/holmes-old-style-ms.yaml"); - String microServiceBlueprintValid = ResourceFileUtil - .getResourceAsString("clds/single-microservice-fragment-valid.yaml"); + String microServiceBlueprintInvalid = ResourceFileUtil + .getResourceAsString("clds/single-microservice-fragment-invalid.yaml"); + jsonObjectBlueprintInvalid = yamlToJson(microServiceBlueprintInvalid); String microServiceBlueprintWithoutName = ResourceFileUtil .getResourceAsString("clds/single-microservice-fragment-without-name.yaml"); + jsonObjectBlueprintWithoutName = yamlToJson(microServiceBlueprintWithoutName); String microServiceBlueprintWithoutProperties = ResourceFileUtil .getResourceAsString("clds/single-microservice-fragment-without-properties.yaml"); - - jsonObjectBlueprintValid = yamlToJson(microServiceBlueprintValid); - jsonObjectBlueprintWithoutName = yamlToJson(microServiceBlueprintWithoutName); jsonObjectBlueprintWithoutProperties = yamlToJson(microServiceBlueprintWithoutProperties); + String microServiceBlueprintValidWithVersion = ResourceFileUtil + .getResourceAsString("clds/single-microservice-fragment-valid-with-version.yaml"); + jsonObjectBlueprintValidWithVersion = yamlToJson(microServiceBlueprintValidWithVersion); String microServiceBlueprintWithoutRelationships = ResourceFileUtil .getResourceAsString("clds/single-microservice-fragment-without-relationships.yaml"); @@ -97,11 +98,11 @@ public class BlueprintParserTest { @Test public void getNameShouldReturnDefinedName() { - final JsonObject jsonObject = jsonObjectBlueprintValid; + final JsonObject jsonObject = jsonObjectBlueprintInvalid; String expectedName = jsonObject.get(jsonObject.keySet().iterator().next()).getAsJsonObject().get("properties") .getAsJsonObject().get("name").getAsString(); Entry entry = jsonObject.entrySet().iterator().next(); - String actualName = new BlueprintParser().getName(entry); + String actualName = BlueprintParser.getName(entry); Assert.assertEquals(expectedName, actualName); } @@ -112,7 +113,7 @@ public class BlueprintParserTest { String expectedName = jsonObject.keySet().iterator().next(); Entry entry = jsonObject.entrySet().iterator().next(); - String actualName = new BlueprintParser().getName(entry); + String actualName = BlueprintParser.getName(entry); Assert.assertEquals(expectedName, actualName); } @@ -123,18 +124,18 @@ public class BlueprintParserTest { String expectedName = jsonObject.keySet().iterator().next(); Entry entry = jsonObject.entrySet().iterator().next(); - String actualName = new BlueprintParser().getName(entry); + String actualName = BlueprintParser.getName(entry); Assert.assertEquals(expectedName, actualName); } @Test public void getInputShouldReturnInputWhenPresent() { - final JsonObject jsonObject = jsonObjectBlueprintValid; + final JsonObject jsonObject = jsonObjectBlueprintInvalid; String expected = FIRST_APPP; Entry entry = jsonObject.entrySet().iterator().next(); - String actual = new BlueprintParser().getInput(entry); + String actual = BlueprintParser.getInput(entry); Assert.assertEquals(expected, actual); } @@ -145,63 +146,56 @@ public class BlueprintParserTest { String expected = ""; Entry entry = jsonObject.entrySet().iterator().next(); - String actual = new BlueprintParser().getInput(entry); + String actual = BlueprintParser.getInput(entry); Assert.assertEquals(expected, actual); } - @Test - public void getNodeRepresentationFromCompleteYaml() { - final JsonObject jsonObject = jsonObjectBlueprintValid; - - MicroService expected = new MicroService(SECOND_APPP, MODEL_TYPE1, FIRST_APPP, ""); - Entry entry = jsonObject.entrySet().iterator().next(); - MicroService actual = new BlueprintParser().getNodeRepresentation(entry, jsonObject, null); - - Assert.assertEquals(expected, actual); + @Test(expected = BlueprintParserException.class) + public void getNodeRepresentationFromIncompleteYaml() throws BlueprintParserException { + BlueprintParser.getNodeRepresentation(jsonObjectBlueprintInvalid.entrySet().iterator().next(), + jsonObjectBlueprintInvalid, null); } @Test - public void getMicroServicesFromBlueprintTest() { - MicroService thirdApp = new MicroService(THIRD_APPP, MODEL_TYPE3, "", ""); - MicroService firstApp = new MicroService(FIRST_APPP, MODEL_TYPE1, THIRD_APPP, ""); - MicroService secondApp = new MicroService(SECOND_APPP, MODEL_TYPE2, FIRST_APPP, ""); + public void getNodeRepresentationFromCompleteYamlWithModelVersion() throws BlueprintParserException { + final JsonObject jsonObject = jsonObjectBlueprintValidWithVersion; - Set expected = new HashSet<>(Arrays.asList(firstApp, secondApp, thirdApp)); - Set actual = new BlueprintParser().getMicroServices(microServiceTheWholeBlueprintValid); + BlueprintMicroService expected = new BlueprintMicroService(SECOND_APPP, MODEL_TYPE1, "", "10.0.0"); + Entry entry = jsonObject.entrySet().iterator().next(); + BlueprintMicroService actual = BlueprintParser.getNodeRepresentation(entry, jsonObject, null); Assert.assertEquals(expected, actual); } @Test + public void getMicroServicesFromBlueprintTest() throws BlueprintParserException { + BlueprintMicroService thirdApp = new BlueprintMicroService(THIRD_APPP, MODEL_TYPE_TCA, SECOND_APPP, VERSION); + BlueprintMicroService firstApp = new BlueprintMicroService(FIRST_APPP, MODEL_TYPE_TCA, "", VERSION); + BlueprintMicroService secondApp = new BlueprintMicroService(SECOND_APPP, MODEL_TYPE_TCA, FIRST_APPP, VERSION); - public void fallBackToOneMicroServiceTcaTest() { - MicroService tcaMs = new MicroService(BlueprintParser.TCA, "onap.policies.monitoring.cdap.tca.hi.lo.app", "", - ""); - List expected = Collections.singletonList(tcaMs); - List actual = new BlueprintParser().fallbackToOneMicroService(microServiceBlueprintOldStyleTCA); + Set expected = new HashSet<>(Arrays.asList(firstApp, secondApp, thirdApp)); + Set actual = BlueprintParser.getMicroServices(microServiceTheWholeBlueprintValid); Assert.assertEquals(expected, actual); } @Test - public void fallBackToOneMicroServiceHolmesTest() { - MicroService holmesMs = new MicroService(BlueprintParser.HOLMES, "onap.policies.monitoring.cdap.tca.hi.lo.app", - "", ""); - - List expected = Collections.singletonList(holmesMs); - List actual = new BlueprintParser() - .fallbackToOneMicroService(microServiceBlueprintOldStyleHolmes); + public void fallBackToOneMicroServiceTcaTest() { + BlueprintMicroService tcaMs = new BlueprintMicroService(BlueprintParser.TCA, + "onap.policies.monitoring.cdap.tca.hi.lo.app", "", VERSION); + List expected = Collections.singletonList(tcaMs); + List actual = BlueprintParser.fallbackToOneMicroService(); Assert.assertEquals(expected, actual); } @Test - public void newMicroServiceTest() { - List microServicesChain = new ChainGenerator() - .getChainOfMicroServices(new BlueprintParser().getMicroServices(newMicroServiceBlueprint)); + public void newMicroServiceTest() throws BlueprintParserException { + List microServicesChain = new ChainGenerator() + .getChainOfMicroServices(BlueprintParser.getMicroServices(newMicroServiceBlueprint)); if (microServicesChain.isEmpty()) { - microServicesChain = new BlueprintParser().fallbackToOneMicroService(newMicroServiceBlueprint); + microServicesChain = BlueprintParser.fallbackToOneMicroService(); } assertThat(microServicesChain.size()).isEqualTo(1); assertThat(microServicesChain.get(0).getName()).isEqualTo("pmsh"); diff --git a/src/test/java/org/onap/clamp/clds/sdc/controller/installer/ChainGeneratorTest.java b/src/test/java/org/onap/clamp/clds/sdc/controller/installer/ChainGeneratorTest.java index 4b4563cd4..83b3dda01 100644 --- a/src/test/java/org/onap/clamp/clds/sdc/controller/installer/ChainGeneratorTest.java +++ b/src/test/java/org/onap/clamp/clds/sdc/controller/installer/ChainGeneratorTest.java @@ -36,42 +36,43 @@ public class ChainGeneratorTest { private static final String SECOND_APPP = "second_app"; private static final String THIRD_APPP = "third_app"; private static final String FOURTH_APPP = "fourth_app"; + private static final String DEFAULT_VERSION = "1.0.0"; @Test public void getChainOfMicroServicesTest() { - MicroService ms1 = new MicroService(FIRST_APPP, "", "", ""); - MicroService ms2 = new MicroService(SECOND_APPP, "", FIRST_APPP, ""); - MicroService ms3 = new MicroService(THIRD_APPP, "", SECOND_APPP, ""); - MicroService ms4 = new MicroService(FOURTH_APPP, "", THIRD_APPP, ""); + BlueprintMicroService ms1 = new BlueprintMicroService(FIRST_APPP, "", "", DEFAULT_VERSION); + BlueprintMicroService ms2 = new BlueprintMicroService(SECOND_APPP, "", FIRST_APPP, DEFAULT_VERSION); + BlueprintMicroService ms3 = new BlueprintMicroService(THIRD_APPP, "", SECOND_APPP, DEFAULT_VERSION); + BlueprintMicroService ms4 = new BlueprintMicroService(FOURTH_APPP, "", THIRD_APPP, DEFAULT_VERSION); - List expectedList = Arrays.asList(ms1, ms2, ms3, ms4); - Set inputSet = new HashSet<>(expectedList); + List expectedList = Arrays.asList(ms1, ms2, ms3, ms4); + Set inputSet = new HashSet<>(expectedList); - List actualList = new ChainGenerator().getChainOfMicroServices(inputSet); + List actualList = new ChainGenerator().getChainOfMicroServices(inputSet); Assert.assertEquals(expectedList, actualList); } @Test public void getChainOfMicroServicesTwiceNoInputTest() { - MicroService ms1 = new MicroService(FIRST_APPP, "", "", ""); - MicroService ms2 = new MicroService(SECOND_APPP, "", "", ""); - MicroService ms3 = new MicroService(THIRD_APPP, "", SECOND_APPP, ""); - MicroService ms4 = new MicroService(FOURTH_APPP, "", FIRST_APPP, ""); + BlueprintMicroService ms1 = new BlueprintMicroService(FIRST_APPP, "", "", DEFAULT_VERSION); + BlueprintMicroService ms2 = new BlueprintMicroService(SECOND_APPP, "", "", DEFAULT_VERSION); + BlueprintMicroService ms3 = new BlueprintMicroService(THIRD_APPP, "", SECOND_APPP, DEFAULT_VERSION); + BlueprintMicroService ms4 = new BlueprintMicroService(FOURTH_APPP, "", FIRST_APPP, DEFAULT_VERSION); - Set inputSet = new HashSet<>(Arrays.asList(ms1, ms2, ms3, ms4)); - List actualList = new ChainGenerator().getChainOfMicroServices(inputSet); + Set inputSet = new HashSet<>(Arrays.asList(ms1, ms2, ms3, ms4)); + List actualList = new ChainGenerator().getChainOfMicroServices(inputSet); Assert.assertTrue(actualList.isEmpty()); } @Test public void getChainOfMicroServicesBranchingTest() { - MicroService ms1 = new MicroService(FIRST_APPP, "", "", ""); - MicroService ms2 = new MicroService(SECOND_APPP, "", FIRST_APPP, ""); - MicroService ms3 = new MicroService(THIRD_APPP, "", FIRST_APPP, ""); - MicroService ms4 = new MicroService(FOURTH_APPP, "", FIRST_APPP, ""); + BlueprintMicroService ms1 = new BlueprintMicroService(FIRST_APPP, "", "", DEFAULT_VERSION); + BlueprintMicroService ms2 = new BlueprintMicroService(SECOND_APPP, "", FIRST_APPP, DEFAULT_VERSION); + BlueprintMicroService ms3 = new BlueprintMicroService(THIRD_APPP, "", FIRST_APPP, DEFAULT_VERSION); + BlueprintMicroService ms4 = new BlueprintMicroService(FOURTH_APPP, "", FIRST_APPP, DEFAULT_VERSION); - Set inputSet = new HashSet<>(Arrays.asList(ms1, ms2, ms3, ms4)); - List actualList = new ChainGenerator().getChainOfMicroServices(inputSet); + Set inputSet = new HashSet<>(Arrays.asList(ms1, ms2, ms3, ms4)); + List actualList = new ChainGenerator().getChainOfMicroServices(inputSet); Assert.assertTrue(actualList.isEmpty()); } } diff --git a/src/test/java/org/onap/clamp/clds/util/CryptoUtilsTest.java b/src/test/java/org/onap/clamp/clds/util/CryptoUtilsTest.java index 1453d0baa..f6054d538 100644 --- a/src/test/java/org/onap/clamp/clds/util/CryptoUtilsTest.java +++ b/src/test/java/org/onap/clamp/clds/util/CryptoUtilsTest.java @@ -45,7 +45,7 @@ import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; @RunWith(PowerMockRunner.class) -@PowerMockIgnore({ "javax.crypto.*", "com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*" }) +@PowerMockIgnore({ "javax.crypto.*", "com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*" }) public class CryptoUtilsTest { private final String data = "This is a test string"; diff --git a/src/test/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilderTest.java b/src/test/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilderTest.java index 269ad42e1..65eb2696f 100644 --- a/src/test/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilderTest.java +++ b/src/test/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilderTest.java @@ -39,7 +39,7 @@ import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; -import org.onap.clamp.clds.sdc.controller.installer.MicroService; +import org.onap.clamp.clds.sdc.controller.installer.BlueprintMicroService; @RunWith(MockitoJUnitRunner.class) public class ClampGraphBuilderTest { @@ -50,7 +50,7 @@ public class ClampGraphBuilderTest { private ArgumentCaptor collectorCaptor; @Captor - private ArgumentCaptor> microServicesCaptor; + private ArgumentCaptor> microServicesCaptor; @Captor private ArgumentCaptor policyCaptor; @@ -58,17 +58,17 @@ public class ClampGraphBuilderTest { @Test public void clampGraphBuilderCompleteChainTest() { String collector = "VES"; - MicroService ms1 = new MicroService("ms1", "", "", "ms1_jpa_id"); - MicroService ms2 = new MicroService("ms2", "", "", "ms2_jpa_id"); + BlueprintMicroService ms1 = new BlueprintMicroService("ms1", "", "", "1.0.0"); + BlueprintMicroService ms2 = new BlueprintMicroService("ms2", "", "", "1.0.0"); String policy = "OperationalPolicy"; - final List microServices = Arrays.asList(ms1, ms2); + final List microServices = Arrays.asList(ms1, ms2); ClampGraphBuilder clampGraphBuilder = new ClampGraphBuilder(mockPainter); clampGraphBuilder.collector(collector).addMicroService(ms1).addMicroService(ms2).policy(policy).build(); verify(mockPainter, times(1)).doPaint(collectorCaptor.capture(), microServicesCaptor.capture(), - policyCaptor.capture()); + policyCaptor.capture()); Assert.assertEquals(collector, collectorCaptor.getValue()); Assert.assertEquals(microServices, microServicesCaptor.getValue()); @@ -78,8 +78,8 @@ public class ClampGraphBuilderTest { @Test(expected = InvalidStateException.class) public void clampGraphBuilderNoPolicyGivenTest() { String collector = "VES"; - MicroService ms1 = new MicroService("ms1", "", "", "ms1_jpa_id"); - MicroService ms2 = new MicroService("ms2", "", "", "ms2_jpa_id"); + BlueprintMicroService ms1 = new BlueprintMicroService("ms1", "", "", "1.0.0"); + BlueprintMicroService ms2 = new BlueprintMicroService("ms2", "", "", "1.0.0"); ClampGraphBuilder clampGraphBuilder = new ClampGraphBuilder(mockPainter); clampGraphBuilder.collector(collector).addMicroService(ms1).addMicroService(ms2).build(); diff --git a/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java b/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java index 70adf3eef..636684cdb 100644 --- a/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java +++ b/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java @@ -44,6 +44,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; import org.onap.clamp.clds.Application; +import org.onap.clamp.clds.exception.sdc.controller.BlueprintParserException; import org.onap.clamp.clds.exception.sdc.controller.CsarHandlerException; import org.onap.clamp.clds.exception.sdc.controller.SdcArtifactInstallerException; import org.onap.clamp.clds.sdc.controller.installer.BlueprintArtifact; @@ -73,7 +74,7 @@ import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @SpringBootTest(classes = Application.class) -@ActiveProfiles(profiles = "clamp-default,clamp-default-user,clamp-sdc-controller-new") +@ActiveProfiles(profiles = "clamp-default,clamp-default-user,clamp-sdc-controller") public class CsarInstallerItCase { private static final String CSAR_ARTIFACT_NAME = "example/sdc/service_Vloadbalancerms_csar.csar"; @@ -180,7 +181,7 @@ public class CsarInstallerItCase { @Test @Transactional public void testIsCsarAlreadyDeployedTca() throws SdcArtifactInstallerException, SdcToscaParserException, - CsarHandlerException, IOException, InterruptedException { + CsarHandlerException, IOException, InterruptedException, BlueprintParserException { String generatedName = RandomStringUtils.randomAlphanumeric(5); CsarHandler csarHandler = buildFakeCsarHandler(generatedName); assertThat(csarInstaller.isCsarAlreadyDeployed(csarHandler)).isFalse(); @@ -192,7 +193,7 @@ public class CsarInstallerItCase { @Transactional @Commit public void testInstallTheCsarTca() throws SdcArtifactInstallerException, SdcToscaParserException, - CsarHandlerException, IOException, JSONException, InterruptedException { + CsarHandlerException, IOException, JSONException, InterruptedException, BlueprintParserException { String generatedName = RandomStringUtils.randomAlphanumeric(5); CsarHandler csar = buildFakeCsarHandler(generatedName); csarInstaller.installTheCsar(csar); @@ -233,16 +234,9 @@ public class CsarInstallerItCase { assertThat(policyModelsRepository.findAll().size()).isEqualByComparingTo(1); assertThat(policyModelsRepository - .existsById(new PolicyModelId("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0"))).isTrue(); - } - - @Test(expected = SdcArtifactInstallerException.class) - @Transactional - public void shouldThrowSdcArtifactInstallerException() - throws SdcArtifactInstallerException, SdcToscaParserException, IOException, InterruptedException { - String generatedName = RandomStringUtils.randomAlphanumeric(5); - CsarHandler csarHandler = buildFakeCsarHandler(generatedName); - Mockito.when(csarHandler.getPolicyModelYaml()).thenThrow(IOException.class); - csarInstaller.installTheCsar(csarHandler); + .existsById(new PolicyModelId("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0"))).isTrue(); + assertThat(policyModelsRepository + .getOne((new PolicyModelId("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0"))) + .getPolicyModelTosca()).isNotBlank(); } } diff --git a/src/test/java/org/onap/clamp/loop/PolicyModelServiceItCase.java b/src/test/java/org/onap/clamp/loop/PolicyModelServiceItCase.java index f8c1d8662..ce1181d33 100644 --- a/src/test/java/org/onap/clamp/loop/PolicyModelServiceItCase.java +++ b/src/test/java/org/onap/clamp/loop/PolicyModelServiceItCase.java @@ -28,6 +28,7 @@ import static org.assertj.core.api.Assertions.assertThat; import java.util.List; import java.util.SortedSet; import java.util.TreeSet; +import java.util.stream.Collectors; import javax.transaction.Transactional; @@ -52,11 +53,13 @@ public class PolicyModelServiceItCase { @Autowired PolicyModelsRepository policyModelsRepository; - private static final String POLICY_MODEL_TYPE_1 = "org.onap.test"; + private static final String POLICY_MODEL_TYPE_1 = "org.onap.testos"; private static final String POLICY_MODEL_TYPE_1_VERSION_1 = "1.0.0"; - private static final String POLICY_MODEL_TYPE_2 = "org.onap.test2"; + private static final String POLICY_MODEL_TYPE_2 = "org.onap.testos2"; + private static final String POLICY_MODEL_TYPE_3 = "org.onap.testos3"; private static final String POLICY_MODEL_TYPE_2_VERSION_1 = "1.0.0"; + private static final String POLICY_MODEL_TYPE_3_VERSION_1 = "1.0.0"; private static final String POLICY_MODEL_TYPE_2_VERSION_2 = "2.0.0"; private PolicyModel getPolicyModel(String policyType, String policyModelTosca, String version, String policyAcronym, @@ -150,9 +153,17 @@ public class PolicyModelServiceItCase { PolicyModel policyModel2 = getPolicyModel(POLICY_MODEL_TYPE_2, "yaml", POLICY_MODEL_TYPE_2_VERSION_2, "TEST", "VARIANT", "user"); policyModelsService.saveOrUpdatePolicyModel(policyModel2); + PolicyModel policyModel3 = getPolicyModel(POLICY_MODEL_TYPE_3, "yaml", POLICY_MODEL_TYPE_3_VERSION_1, "TEST", + "VARIANT", "user"); + policyModelsService.saveOrUpdatePolicyModel(policyModel3); SortedSet sortedSet = new TreeSet<>(); policyModelsService.getAllPolicyModels().forEach(sortedSet::add); - assertThat(sortedSet).contains(policyModel2, policyModel1); + List listToCheck = sortedSet.stream().filter( + policy -> policy.equals(policyModel3) || policy.equals(policyModel2) || policy.equals(policyModel1)) + .collect(Collectors.toList()); + assertThat(listToCheck.get(0)).isEqualByComparingTo(policyModel2); + assertThat(listToCheck.get(1)).isEqualByComparingTo(policyModel1); + assertThat(listToCheck.get(2)).isEqualByComparingTo(policyModel3); } } diff --git a/src/test/resources/application.properties b/src/test/resources/application.properties index bbade742c..17c42f560 100644 --- a/src/test/resources/application.properties +++ b/src/test/resources/application.properties @@ -116,7 +116,7 @@ spring.jpa.properties.hibernate.format_sql=true spring.jpa.properties.hibernate.use-new-id-generator-mappings=true # Whether to enable logging of SQL statements. -spring.jpa.show-sql=true +#spring.jpa.show-sql=true #Async Executor default Parameters async.core.pool.size=10 @@ -148,33 +148,6 @@ clamp.config.policy.pap.url=http4://localhost:${docker.http-cache.port.host} clamp.config.policy.pap.userName=healthcheck clamp.config.policy.pap.password=zb!XztG34 -clamp.config.policy.pdpUrl1=http://localhost:${docker.http-cache.port.host}/pdp/ , testpdp, alpha123 -clamp.config.policy.pdpUrl2=http://localhost:${docker.http-cache.port.host}/pdp/ , testpdp, alpha123 -clamp.config.policy.papUrl=http://localhost:${docker.http-cache.port.host}/pap/ , testpap, alpha123 -clamp.config.policy.notificationType=websocket -clamp.config.policy.notificationUebServers=localhost -clamp.config.policy.notificationTopic= -clamp.config.policy.clientId=python -# base64 encoding -clamp.config.policy.clientKey=dGVzdA== -#DEVL for development -#TEST for Test environments -#PROD for prod environments -clamp.config.policy.policyEnvironment=DEVL -# General Policy request properties -# -clamp.config.policy.onap.name=DCAE -clamp.config.policy.pdp.group=default -clamp.config.policy.ms.type=MicroService -clamp.config.policy.ms.policyNamePrefix=Config_MS_ -clamp.config.policy.op.policyNamePrefix=Config_BRMS_Param_ -clamp.config.policy.base.policyNamePrefix=Config_ -clamp.config.policy.op.type=BRMS_Param - -clamp.config.import.tosca.model=false -clamp.config.tosca.policyTypes=tca -clamp.config.tosca.filePath=/tmp/tosca-models - # TCA MicroService Policy request build properties # clamp.config.tca.policyid.prefix=DCAE.Config_ diff --git a/src/test/resources/clds/OperationalPolicyRepresentationBuilderTest.java b/src/test/resources/clds/OperationalPolicyRepresentationBuilderTest.java deleted file mode 100644 index 904525bea..000000000 --- a/src/test/resources/clds/OperationalPolicyRepresentationBuilderTest.java +++ /dev/null @@ -1,52 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.policy.operational; - -import static org.assertj.core.api.Assertions.assertThat; - -import com.google.gson.GsonBuilder; -import com.google.gson.JsonObject; - -import java.io.IOException; - -import org.junit.Test; -import org.onap.clamp.clds.util.ResourceFileUtil; -import org.skyscreamer.jsonassert.JSONAssert; - -public class OperationalPolicyRepresentationBuilderTest { - - @Test - public void testOperationalPolicyPayloadConstruction() throws IOException { - JsonObject jsonModel = new GsonBuilder().create() - .fromJson(ResourceFileUtil.getResourceAsString("tosca/model-properties.json"), JsonObject.class); - - JsonObject jsonSchema = OperationalPolicyRepresentationBuilder.generateOperationalPolicySchema(jsonModel); - - assertThat(jsonSchema).isNotNull(); - - JSONAssert.assertEquals(ResourceFileUtil.getResourceAsString("tosca/operational-policy-json-schema.json"), - new GsonBuilder().create().toJson(jsonSchema), false); - } - -} diff --git a/src/test/resources/clds/blueprint-parser-mapping.json b/src/test/resources/clds/blueprint-parser-mapping.json deleted file mode 100644 index a22e9fcf1..000000000 --- a/src/test/resources/clds/blueprint-parser-mapping.json +++ /dev/null @@ -1,18 +0,0 @@ -[ - { - "blueprintKey": "tca_", - "dcaeDeployable":"true", - "files": { - "bpmnXmlFilePath": "classpath:/clds/templates/bpmn/tca-template.xml", - "svgXmlFilePath": "classpath:/clds/templates/bpmn/tca-img.xml" - } - }, - { - "blueprintKey": "holmes_", - "dcaeDeployable":"false", - "files": { - "bpmnXmlFilePath": "classpath:/clds/templates/bpmn/holmes-template.xml", - "svgXmlFilePath": "classpath:/clds/templates/bpmn/holmes-img.xml" - } - } -] diff --git a/src/test/resources/clds/blueprint-with-microservice-chain.yaml b/src/test/resources/clds/blueprint-with-microservice-chain.yaml index fa2d72052..0e9e4bc8c 100644 --- a/src/test/resources/clds/blueprint-with-microservice-chain.yaml +++ b/src/test/resources/clds/blueprint-with-microservice-chain.yaml @@ -1,98 +1,202 @@ tosca_definitions_version: cloudify_dsl_1_3 +description: > + This blueprint deploys/manages the TCA module as a Docker container + imports: - http://www.getcloudify.org/spec/cloudify/3.4/types.yaml - - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/k8splugin/1.4.4/k8splugin_types.yaml + - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/k8splugin/1.4.12/k8splugin_types.yaml - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/dcaepolicyplugin/2.3.0/dcaepolicyplugin_types.yaml inputs: - first_app_docker_image: + aaiEnrichmentHost: + type: string + default: "aai.onap.svc.cluster.local" + aaiEnrichmentPort: + type: string + default: "8443" + enableAAIEnrichment: + type: string + default: true + dmaap_host: + type: string + default: message-router.onap.svc.cluster.local + dmaap_port: type: string - default: "image1" - second_app_docker_image: + default: "3904" + enableRedisCaching: type: string - default: "image2" - third_app_docker_image: + default: false + redisHosts: type: string - default: "image3" - dmaap_ip: + default: dcae-redis.onap.svc.cluster.local:6379 + tag_version: type: string - default: "message-router:3904" - dmaap_topic: + default: "nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.1.0-STAGING-latest" + consul_host: type: string - default: "/events/unauthenticated.DCAE_CL_OUTPUT" + default: consul-server.onap.svc.cluster.local + consul_port: + type: string + default: "8500" + cbs_host: + type: string + default: "config-binding-service.dcae.svc.cluster.local" + cbs_port: + type: string + default: "10000" policy_id: type: string - default: "policy_id" + default: "none" + external_port: + type: string + description: Kubernetes node port on which CDAPgui is exposed + default: "32012" + policy_model_id: + type: string + default: "onap.policies.monitoring.cdap.tca.hi.lo.app" + node_templates: - second_app: - type: dcae.nodes.ContainerizedServiceComponentUsingDmaap + first_app: + type: dcae.nodes.ContainerizedServiceComponent properties: - service_component_type: dcaegen2-analytics-tca - service_component_name_override: second_app - image: { get_input: second_app_docker_image } - policy_id: - policy_model_id: "type2" - interfaces: - cloudify.interfaces.lifecycle: - start: - inputs: - envs: - grpc_server.host: "first_app.onap" - dmaap_ip: {get_input: dmaap_ip} - dmapp_topic: {get_input: dmaap_topic} - policy_id: {get_input: policy_id} - ports: - - 8080:8080 + service_component_type: 'dcaegen2-analytics-tca' + application_config: {} + docker_config: {} + image: + get_input: tag_version + log_info: + log_directory: "/opt/app/TCAnalytics/logs" relationships: - - type: cloudify.relationships.connected_to - target: first_app + - target: tca_policy_1 + type: cloudify.relationships.depends_on + second_app: + type: dcae.nodes.ContainerizedServiceComponent + relationships: + - target: tca_policy_2 + type: cloudify.relationships.depends_on - type: clamp_node.relationships.gets_input_from target: first_app - first_app: - type: dcae.nodes.ContainerizedPlatformComponent properties: - name: first_app - dns_name: "first_app" - image: { get_input: first_app_docker_image } - container_port: 6565 - policy_id: - policy_model_id: "type1" + service_component_type: 'dcaegen2-analytics-tca' + application_config: {} + docker_config: {} + image: + get_input: tag_version + log_info: + log_directory: "/opt/app/TCAnalytics/logs" + application_config: + app_config: + appDescription: DCAE Analytics Threshold Crossing Alert Application + appName: dcae-tca + tcaAlertsAbatementTableName: TCAAlertsAbatementTable + tcaAlertsAbatementTableTTLSeconds: '1728000' + tcaSubscriberOutputStreamName: TCASubscriberOutputStream + tcaVESAlertsTableName: TCAVESAlertsTable + tcaVESAlertsTableTTLSeconds: '1728000' + tcaVESMessageStatusTableName: TCAVESMessageStatusTable + tcaVESMessageStatusTableTTLSeconds: '86400' + thresholdCalculatorFlowletInstances: '2' + app_preferences: + aaiEnrichmentHost: + get_input: aaiEnrichmentHost + aaiEnrichmentIgnoreSSLCertificateErrors: 'true' + aaiEnrichmentPortNumber: '8443' + aaiEnrichmentProtocol: https + aaiEnrichmentUserName: dcae@dcae.onap.org + aaiEnrichmentUserPassword: demo123456! + aaiVMEnrichmentAPIPath: /aai/v11/search/nodes-query + aaiVNFEnrichmentAPIPath: /aai/v11/network/generic-vnfs/generic-vnf + enableAAIEnrichment: + get_input: enableAAIEnrichment + enableRedisCaching: + get_input: enableRedisCaching + redisHosts: + get_input: redisHosts + enableAlertCEFFormat: 'false' + publisherContentType: application/json + publisherHostName: + get_input: dmaap_host + publisherHostPort: + get_input: dmaap_port + publisherMaxBatchSize: '1' + publisherMaxRecoveryQueueSize: '100000' + publisherPollingInterval: '20000' + publisherProtocol: http + publisherTopicName: unauthenticated.DCAE_CL_OUTPUT + subscriberConsumerGroup: OpenDCAE-c12 + subscriberConsumerId: c12 + subscriberContentType: application/json + subscriberHostName: + get_input: dmaap_host + subscriberHostPort: + get_input: dmaap_port + subscriberMessageLimit: '-1' + subscriberPollingInterval: '30000' + subscriberProtocol: http + subscriberTimeoutMS: '-1' + subscriberTopicName: unauthenticated.VES_MEASUREMENT_OUTPUT + tca_policy: '' + service_component_type: dcaegen2-analytics_tca interfaces: cloudify.interfaces.lifecycle: start: inputs: envs: - dmaap_ip: {get_input: dmaap_ip} - dmapp_topic: {get_input: dmaap_topic} - policy_id: {get_input: policy_id} + DMAAPHOST: + { get_input: dmaap_host } + DMAAPPORT: + { get_input: dmaap_port } + DMAAPPUBTOPIC: "unauthenticated.DCAE_CL_OUTPUT" + DMAAPSUBTOPIC: "unauthenticated.VES_MEASUREMENT_OUTPUT" + AAIHOST: + { get_input: aaiEnrichmentHost } + AAIPORT: + { get_input: aaiEnrichmentPort } + CONSUL_HOST: + { get_input: consul_host } + CONSUL_PORT: + { get_input: consul_port } + CBS_HOST: + { get_input: cbs_host } + CBS_PORT: + { get_input: cbs_port } + CONFIG_BINDING_SERVICE: "config_binding_service" ports: - - 8081:8081 + - concat: ["11011:", { get_input: external_port }] + third_app: + type: dcae.nodes.ContainerizedServiceComponent + properties: + service_component_type: 'dcaegen2-analytics-tca' + application_config: {} + docker_config: {} + image: + get_input: tag_version + log_info: + log_directory: "/opt/app/TCAnalytics/logs" relationships: - - type: cloudify.relationships.connected_to - target: third_app + - target: tca_policy_3 + type: cloudify.relationships.depends_on - type: clamp_node.relationships.gets_input_from - target: third_app - - third_app: - type: dcae.nodes.ContainerizedPlatformComponent + target: second_app + tca_policy_1: + type: dcae.nodes.policy properties: - name: third_app - dns_name: "third_app" - image: { get_input: third_app_docker_image } - container_port: 443 policy_id: - policy_model_id: "type3" - interfaces: - cloudify.interfaces.lifecycle: - start: - inputs: - envs: - dmaap_ip: {get_input: dmaap_ip} - dmapp_topic: {get_input: dmaap_topic} - policy_id: {get_input: policy_id} - ports: - - 8082:8082 - tca_policy: + get_input: policy_id + policy_model_id: + get_input: policy_model_id + tca_policy_2: type: dcae.nodes.policy properties: - policy_id: { get_input: policy_id } \ No newline at end of file + policy_id: + get_input: policy_id + policy_model_id: + get_input: policy_model_id + + tca_policy_3: + type: dcae.nodes.policy + properties: + policy_id: + get_input: policy_id + policy_model_id: + get_input: policy_model_id diff --git a/src/test/resources/clds/camel/rest/clamp-api-v2.xml b/src/test/resources/clds/camel/rest/clamp-api-v2.xml index cf99625ee..a0a3eb104 100644 --- a/src/test/resources/clds/camel/rest/clamp-api-v2.xml +++ b/src/test/resources/clds/camel/rest/clamp-api-v2.xml @@ -237,6 +237,48 @@ + + + + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + - - - - false - - - - ${header.CamelHttpResponseCode} != 200 - - false - - - - - false - - - - ${header.CamelHttpResponseCode} != 200 - - false - - - - - ${exchangeProperty[policyComponent].computeState(*)} - - - - - - - - - - GET - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - - - - ${exchangeProperty[policyName]} GET - Policy status - - - - POLICY - - - - - - - - - - - - - GET - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - - - - ${exchangeProperty[policyName]} GET Policy deployment - status - - - - POLICY + + + + false - - - - - - - - - - - ${exchangeProperty[microServicePolicy].createPolicyPayload()} - - - - POST - - - application/json - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - - - - ${exchangeProperty[microServicePolicy].getName()} creation - status - + + + ${header.CamelHttpResponseCode} != 200 + + false + + + + + false - - POLICY + + + ${header.CamelHttpResponseCode} != 200 + + false + + + + + ${exchangeProperty[policyComponent].computeState(*)} - - - - + - - - - - - - null - - - DELETE - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - + + + + + + + GET + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + ${exchangeProperty[policyName]} GET + Policy status + + + + POLICY + + + + + - - - - - ${exchangeProperty[microServicePolicy].getName()} removal - status - - - - POLICY - - - - - + + + + + + + GET + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + ${exchangeProperty[policyName]} GET Policy deployment + status + + + + POLICY + + + + + + + + + + + + GET + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + + + + + + + + + + GET + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + + + + + + + + + + ${exchangeProperty[microServicePolicy].createPolicyPayload()} + + + + POST + + + application/json + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + ${exchangeProperty[microServicePolicy].getName()} creation + status + + + + POLICY + + + + + - - - - - - - ${exchangeProperty[operationalPolicy].createPolicyPayload()} - - - - POST - - - application/json - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - - - - ${exchangeProperty[operationalPolicy].getName()} creation - status - - - - POLICY - - - - - + + + + + + + null + + + DELETE + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + - - - - - - - null - - - DELETE - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - - - - ${exchangeProperty[operationalPolicy].getName()} removal - status - - - - POLICY - - - - - + + + + + ${exchangeProperty[microServicePolicy].getName()} removal + status + + + + POLICY + + + + + - - - - - - - ${exchangeProperty[guardPolicy].getValue()} - - - - POST - - - application/json - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - - - - ${exchangeProperty[guardPolicy].getKey()} creation status - - - - POLICY - - - - - + + + + + + + ${exchangeProperty[operationalPolicy].createPolicyPayload()} + + + + POST + + + application/json + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + ${exchangeProperty[operationalPolicy].getName()} creation + status + + + + POLICY + + + + + - - - - - - - null - - - DELETE - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - + + + + + + + null + + + DELETE + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + ${exchangeProperty[operationalPolicy].getName()} removal + status + + + + POLICY + + + + + - - - - - ${exchangeProperty[guardPolicy].getKey()} removal status - - - - POLICY - - - - - + + + + + + + ${exchangeProperty[guardPolicy].getValue()} + + + + POST + + + application/json + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + ${exchangeProperty[guardPolicy].getKey()} creation status + + + + POLICY + + + + + - - - - - - - ${exchangeProperty[loopObject].getComponent("POLICY").createPoliciesPayloadPdpGroup(exchangeProperty[loopObject])} - - - - POST - - - application/json - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - + + + + + + + null + + + DELETE + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + - - - - - PDP Group push ALL status - - - POLICY - - - - - + + + + + ${exchangeProperty[guardPolicy].getKey()} removal status + + + + POLICY + + + + + - - - - - - - ${exchangeProperty[loopObject].getComponent("POLICY").listPolicyNamesPdpGroup(exchangeProperty[loopObject])} - - - ${body} - - - null - - - DELETE - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - ${exchangeProperty[policyName]} PDP Group removal status - - - - POLICY - - - - - java.lang.Exception - - false - - - PDP Group removal, Error reported: ${exception} - - - POLICY - - - - - - - - - + + + + + + + ${exchangeProperty[loopObject].getComponent("POLICY").createPoliciesPayloadPdpGroup(exchangeProperty[loopObject])} + + + + POST + + + application/json + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + + + + + PDP Group push ALL status + + + POLICY + + + + + + + + + + + + + ${exchangeProperty[loopObject].getComponent("POLICY").listPolicyNamesPdpGroup(exchangeProperty[loopObject])} + + + ${body} + + + null + + + DELETE + + + ${exchangeProperty[X-ONAP-RequestID]} + + + + ${exchangeProperty[X-ONAP-InvocationID]} + + + + ${exchangeProperty[X-ONAP-PartnerName]} + + + + + + ${exchangeProperty[policyName]} PDP Group removal status + + + + POLICY + + + + + java.lang.Exception + + false + + + PDP Group removal, Error reported: ${exception} + + + POLICY + + + + + + + + + \ No newline at end of file diff --git a/src/test/resources/clds/holmes-old-style-ms.yaml b/src/test/resources/clds/holmes-old-style-ms.yaml deleted file mode 100644 index 3f0c9a604..000000000 --- a/src/test/resources/clds/holmes-old-style-ms.yaml +++ /dev/null @@ -1,117 +0,0 @@ -tosca_definitions_version: cloudify_dsl_1_3 -imports: - - http://www.getcloudify.org/spec/cloudify/3.4/types.yaml - - https://nexus01.research.att.com:8443/repository/solutioning01-mte2-raw/type_files/docker/2.3.0+t.0.4/node-type.yaml - - https://nexus01.research.att.com:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml - - http://nexus01.research.att.com:8081/repository/solutioning01-mte2-raw/type_files/dmaap/1.2.0/dmaap.yaml -inputs: - dcae_service_location: - type: string - docker_host_override: - type: string - topic0_aaf_password: - type: string - topic0_aaf_username: - type: string - topic0_client_role: - type: string - topic1_aaf_password: - type: string - topic1_aaf_username: - type: string - topic1_client_role: - type: string - location_id: - type: string - service_id: - type: string - policy_id: - type: string - default: "CLAMPPolicyTriggerNoaapp_v1_0_29b0578b_dcee_472c_8cdd0.ClosedLoop_860ee9f2_ba64_11e8_a16b_02bd571477fe_TCA_1d13unw" -node_templates: - policy_0: - type: dcae.nodes.policy - properties: - policy_model: policy.nodes.holmes - policy_filter: "DCAE.Config_Holmes.*" - policy_id: - get_input: policy_id - docker_host_host: - type: dcae.nodes.SelectedDockerHost - properties: - docker_host_override: - get_input: docker_host_override - location_id: - get_input: dcae_service_location - holmes_rule_homes-rule: - type: dcae.nodes.DockerContainerForComponentsUsingDmaap - properties: - application_config: - services_calls: - - msb_config: - concat: - - '{{' - - get_property: - - SELF - - msb_config - - node_name - - '}}' - streams_publishes: [] - streams_subscribes: - - sec_measurement_unsecure: - aaf_password: - get_input: topic0_aaf_password - aaf_username: - get_input: topic0_aaf_username - dmaap_info: <> - type: message_router - - sec_measurement: - aaf_password: - get_input: topic1_aaf_password - aaf_username: - get_input: topic1_aaf_username - dmaap_info: <> - type: message_router - docker_config: - healthcheck: - endpoint: api/holmes-rule-mgmt/v1/healthcheck - interval: 15s - timeout: 1s - type: http - ports: - - 9101:9101 - image: nexus3.onap.org:10001/onap/holmes/rule-manamgement:latest - location_id: - get_input: dcae_service_location - service_component_type: dcae-analytics-holmes-rule-manamgement - streams_publishes: [] - streams_subscribes: - - client_role: - get_input: topic0_client_role - location: - get_input: dcae_service_location - name: topic0 - type: message_router - - client_role: - get_input: topic1_client_role - location: - get_input: dcae_service_location - name: topic1 - type: message_router - relationships: - - target: docker_host_host - type: dcae.relationships.component_contained_in - - target: topic0 - type: dcae.relationships.subscribe_to_events - - target: topic1 - type: dcae.relationships.subscribe_to_events - - target: policy_0 - type: dcae.relationships.depends_on - topic0: - type: dcae.nodes.Topic - properties: - topic_name: '' - topic1: - type: dcae.nodes.Topic - properties: - topic_name: '' diff --git a/src/test/resources/clds/single-microservice-fragment-invalid.yaml b/src/test/resources/clds/single-microservice-fragment-invalid.yaml new file mode 100644 index 000000000..2c1680717 --- /dev/null +++ b/src/test/resources/clds/single-microservice-fragment-invalid.yaml @@ -0,0 +1,25 @@ +second_app: + type: dcae.nodes.ContainerizedServiceComponentUsingDmaap + properties: + service_component_type: dcaegen2-analytics-tca + service_component_name_override: second_app + image: { get_input: second_app_docker_image } + name: second_app + policy_id: + policy_model_id: "type1" + interfaces: + cloudify.interfaces.lifecycle: + start: + inputs: + envs: + grpc_server.host: "first_app.onap" + dmaap_ip: {get_input: dmaap_ip} + dmapp_topic: {get_input: dmaap_topic} + policy_id: {get_input: policy_id} + ports: + - 8080:8080 + relationships: + - type: cloudify.relationships.connected_to + target: first_app + - type: clamp_node.relationships.gets_input_from + target: first_app \ No newline at end of file diff --git a/src/test/resources/clds/single-microservice-fragment-valid-with-version.yaml b/src/test/resources/clds/single-microservice-fragment-valid-with-version.yaml new file mode 100644 index 000000000..ae31fb16a --- /dev/null +++ b/src/test/resources/clds/single-microservice-fragment-valid-with-version.yaml @@ -0,0 +1,21 @@ +second_app: + type: dcae.nodes.ContainerizedServiceComponentUsingDmaap + properties: + service_component_type: dcaegen2-analytics-tca + service_component_name_override: second_app + image: { get_input: second_app_docker_image } + name: second_app + policy_id: + policy_model_id: "type1" + policy_model_version: "10.0.0" + interfaces: + cloudify.interfaces.lifecycle: + start: + inputs: + envs: + grpc_server.host: "first_app.onap" + dmaap_ip: {get_input: dmaap_ip} + dmapp_topic: {get_input: dmaap_topic} + policy_id: {get_input: policy_id} + ports: + - 8080:8080 diff --git a/src/test/resources/clds/single-microservice-fragment-valid.yaml b/src/test/resources/clds/single-microservice-fragment-valid.yaml deleted file mode 100644 index 2c1680717..000000000 --- a/src/test/resources/clds/single-microservice-fragment-valid.yaml +++ /dev/null @@ -1,25 +0,0 @@ -second_app: - type: dcae.nodes.ContainerizedServiceComponentUsingDmaap - properties: - service_component_type: dcaegen2-analytics-tca - service_component_name_override: second_app - image: { get_input: second_app_docker_image } - name: second_app - policy_id: - policy_model_id: "type1" - interfaces: - cloudify.interfaces.lifecycle: - start: - inputs: - envs: - grpc_server.host: "first_app.onap" - dmaap_ip: {get_input: dmaap_ip} - dmapp_topic: {get_input: dmaap_topic} - policy_id: {get_input: policy_id} - ports: - - 8080:8080 - relationships: - - type: cloudify.relationships.connected_to - target: first_app - - type: clamp_node.relationships.gets_input_from - target: first_app \ No newline at end of file diff --git a/src/test/resources/clds/tca-old-style-ms.yaml b/src/test/resources/clds/tca-old-style-ms.yaml deleted file mode 100644 index b976190a1..000000000 --- a/src/test/resources/clds/tca-old-style-ms.yaml +++ /dev/null @@ -1,169 +0,0 @@ -tosca_definitions_version: cloudify_dsl_1_3 -imports: - - "http://www.getcloudify.org/spec/cloudify/3.4/types.yaml" - - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R2/dockerplugin/3.2.0/dockerplugin_types.yaml - - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R2/relationshipplugin/1.0.0/relationshipplugin_types.yaml - - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R2/dcaepolicyplugin/2.3.0/dcaepolicyplugin_types.yaml - -inputs: - dh_override: - type: string - default: "component_dockerhost" - dh_location_id: - type: string - default: "zone1" - aaiEnrichmentHost: - type: string - default: "none" - aaiEnrichmentPort: - type: string - default: 8443 - enableAAIEnrichment: - type: string - default: false - dmaap_host: - type: string - default: dmaap.onap-message-router - dmaap_port: - type: string - default: 3904 - enableRedisCaching: - type: string - default: false - redisHosts: - type: string - tag_version: - type: string - default: "nexus3.onap.org:10001/onap//onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.0.0" - consul_host: - type: string - default: consul-server.onap-consul - consul_port: - type: string - default: "8500" - cbs_host: - type: string - default: "config-binding-service.dcae" - cbs_port: - type: string - default: "10000" - policy_id: - type: string - default: "none" - external_port: - type: string - description: "Port for CDAPgui to be exposed" - default: "32010" - -node_templates: - docker_service_host: - properties: - docker_host_override: - get_input: dh_override - location_id: - get_input: dh_location_id - type: dcae.nodes.SelectedDockerHost - tca_docker: - relationships: - - type: dcae.relationships.component_contained_in - target: docker_service_host - - target: tca_policy - type: cloudify.relationships.depends_on - type: dcae.nodes.DockerContainerForComponentsUsingDmaap - properties: - application_config: - app_config: - appDescription: DCAE Analytics Threshold Crossing Alert Application - appName: dcae-tca - tcaAlertsAbatementTableName: TCAAlertsAbatementTable - tcaAlertsAbatementTableTTLSeconds: '1728000' - tcaSubscriberOutputStreamName: TCASubscriberOutputStream - tcaVESAlertsTableName: TCAVESAlertsTable - tcaVESAlertsTableTTLSeconds: '1728000' - tcaVESMessageStatusTableName: TCAVESMessageStatusTable - tcaVESMessageStatusTableTTLSeconds: '86400' - thresholdCalculatorFlowletInstances: '2' - app_preferences: - aaiEnrichmentHost: - get_input: aaiEnrichmentHost - aaiEnrichmentIgnoreSSLCertificateErrors: 'true' - aaiEnrichmentPortNumber: '8443' - aaiEnrichmentProtocol: https - aaiEnrichmentUserName: DCAE - aaiEnrichmentUserPassword: DCAE - aaiVMEnrichmentAPIPath: /aai/v11/search/nodes-query - aaiVNFEnrichmentAPIPath: /aai/v11/network/generic-vnfs/generic-vnf - enableAAIEnrichment: - get_input: enableAAIEnrichment - enableRedisCaching: - get_input: enableRedisCaching - redisHosts: - get_input: redisHosts - enableAlertCEFFormat: 'false' - publisherContentType: application/json - publisherHostName: - get_input: dmaap_host - publisherHostPort: - get_input: dmaap_port - publisherMaxBatchSize: '1' - publisherMaxRecoveryQueueSize: '100000' - publisherPollingInterval: '20000' - publisherProtocol: http - publisherTopicName: unauthenticated.DCAE_CL_OUTPUT - subscriberConsumerGroup: OpenDCAE-c12 - subscriberConsumerId: c12 - subscriberContentType: application/json - subscriberHostName: - get_input: dmaap_host - subscriberHostPort: - get_input: dmaap_port - subscriberMessageLimit: '-1' - subscriberPollingInterval: '30000' - subscriberProtocol: http - subscriberTimeoutMS: '-1' - subscriberTopicName: unauthenticated.SEC_MEASUREMENT_OUTPUT - tca_policy_default: '{"domain":"measurementsForVfScaling","metricsPerEventName":[{"eventName":"vFirewallBroadcastPackets","controlLoopSchemaType":"VNF","policyScope":"DCAE","policyName":"DCAE.Config_tca-hi-lo","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicUsageArray[*].receivedTotalPacketsDelta","thresholdValue":300,"direction":"LESS_OR_EQUAL","severity":"MAJOR","closedLoopEventStatus":"ONSET"},{"closedLoopControlName":"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicUsageArray[*].receivedTotalPacketsDelta","thresholdValue":700,"direction":"GREATER_OR_EQUAL","severity":"CRITICAL","closedLoopEventStatus":"ONSET"}]},{"eventName":"vLoadBalancer","controlLoopSchemaType":"VM","policyScope":"DCAE","policyName":"DCAE.Config_tca-hi-lo","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicUsageArray[*].receivedTotalPacketsDelta","thresholdValue":300,"direction":"GREATER_OR_EQUAL","severity":"CRITICAL","closedLoopEventStatus":"ONSET"}]},{"eventName":"Measurement_vGMUX","controlLoopSchemaType":"VNF","policyScope":"DCAE","policyName":"DCAE.Config_tca-hi-lo","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value","thresholdValue":0,"direction":"EQUAL","severity":"MAJOR","closedLoopEventStatus":"ABATED"},{"closedLoopControlName":"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value","thresholdValue":0,"direction":"GREATER","severity":"CRITICAL","closedLoopEventStatus":"ONSET"}]}]}' - service_component_type: dcaegen2-analytics_tca - docker_config: - healthcheck: - endpoint: /healthcheck - interval: 15s - timeout: 1s - type: http - image: - get_input: tag_version - interfaces: - cloudify.interfaces.lifecycle: - start: - inputs: - envs: - DMAAPHOST: - { get_input: dmaap_host } - DMAAPPORT: - { get_input: dmaap_port } - DMAAPPUBTOPIC: "unauthenticated.DCAE_CL_OUTPUT" - DMAAPSUBTOPIC: "unauthenticated.SEC_MEASUREMENT_OUTPUT" - AAIHOST: - { get_input: aaiEnrichmentHost } - AAIPORT: - { get_input: aaiEnrichmentPort } - CONSUL_HOST: - { get_input: consul_host } - CONSUL_PORT: - { get_input: consul_port } - CBS_HOST: - { get_input: cbs_host } - CBS_PORT: - { get_input: cbs_port } - CONFIG_BINDING_SERVICE: "config_binding_service" - ports: - - concat: ["11011:", { get_input: external_port }] - stop: - inputs: - cleanup_image: true - tca_policy: - type: dcae.nodes.policy - properties: - policy_id: - get_input: policy_id - diff --git a/src/test/resources/example/sdc/blueprint-dcae/holmes.yaml b/src/test/resources/example/sdc/blueprint-dcae/holmes.yaml deleted file mode 100644 index f180a7df6..000000000 --- a/src/test/resources/example/sdc/blueprint-dcae/holmes.yaml +++ /dev/null @@ -1,174 +0,0 @@ -tosca_definitions_version: cloudify_dsl_1_3 -imports: -- http://www.getcloudify.org/spec/cloudify/3.4/types.yaml -- https://nexus01.research.att.com:8443/repository/solutioning01-mte2-raw/type_files/docker/2.3.0+t.0.4/node-type.yaml -- https://nexus01.research.att.com:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml -- http://nexus01.research.att.com:8081/repository/solutioning01-mte2-raw/type_files/dmaap/1.2.0/dmaap.yaml -inputs: - dcae_service_location: - type: string - docker_host_override: - type: string - topic0_aaf_password: - type: string - topic0_aaf_username: - type: string - topic0_client_role: - type: string - topic1_aaf_password: - type: string - topic1_aaf_username: - type: string - topic1_client_role: - type: string -node_templates: - policy_0: - type: dcae.nodes.policy - properties: - policy_model: policy.nodes.holmes - policy_filter: "DCAE.Config_Holmes.*" - docker_host_host: - type: dcae.nodes.SelectedDockerHost - properties: - docker_host_override: - get_input: docker_host_override - location_id: - get_input: dcae_service_location - holmes-rule_homes-rule: - type: dcae.nodes.DockerContainerForComponentsUsingDmaap - properties: - application_config: - holmes.default.rule.volte.scenario1: 'package dcae.ves.test - - import org.onap.some.related.packages; - - rule"SameVNF_Relation_Rule" - - salience 120 - - no-loop true - - when - - $root : VesAlarm( - - $sourceId: sourceId, sourceId != null && !sourceId.equals(""), - - specificProblem in ( "LSS_cpiPCSCFFailReg(121297)", "LSS_cpiSIPRetransmitInvite(120267)" ), - - $eventId: eventId) - - $child : VesAlarm( eventId != $eventId, - - CorrelationUtil.getInstance().isTopologicallyRelated(sourceId, $sourceId), - - specificProblem in ("LSS_externalLinkDown(4271)","LSS_failedAttachReqsRateExceeded(4272)"), - - this after [-60s, 60s] $root) - - then - - DmaapService.publishResult(...); - - end' - holmes.default.rule.volte.scenario2: 'package dcae.ves.test - - import org.onap.some.related.packages; - - rule"SameVNF_Relation_Rule_1" - - salience 120 - - no-loop true - - when - - $root : VesAlarm( - - $sourceId: sourceId, sourceId != null && !sourceId.equals(""), - - specificProblem in ( "LSS_cpiPCSCFFailReg(121297)", "LSS_cpiSIPRetransmitInvite(120267)" ), - - $eventId: eventId) - - $child : VesAlarm( eventId != $eventId, - - CorrelationUtil.getInstance().isTopologicallyRelated(sourceId, $sourceId), - - specificProblem in ("LSS_externalLinkDown(4271)","LSS_failedAttachReqsRateExceeded(4272)"), - - this after [-60s, 60s] $root) - - then - - DmaapService.publishResult(...); - - end' - services_calls: - - msb_config: - concat: - - '{{' - - get_property: - - SELF - - msb_config - - node_name - - '}}' - streams_publishes: [] - streams_subscribes: - - sec_measurement_unsecure: - aaf_password: - get_input: topic0_aaf_password - aaf_username: - get_input: topic0_aaf_username - dmaap_info: <> - type: message_router - - sec_measurement: - aaf_password: - get_input: topic1_aaf_password - aaf_username: - get_input: topic1_aaf_username - dmaap_info: <> - type: message_router - docker_config: - healthcheck: - endpoint: api/holmes-rule-mgmt/v1/healthcheck - interval: 15s - timeout: 1s - type: http - ports: - - 9101:9101 - image: nexus3.onap.org:10001/onap/holmes/rule-manamgement:latest - location_id: - get_input: dcae_service_location - service_component_type: dcae-analytics-holmes-rule-manamgement - streams_publishes: [] - streams_subscribes: - - client_role: - get_input: topic0_client_role - location: - get_input: dcae_service_location - name: topic0 - type: message_router - - client_role: - get_input: topic1_client_role - location: - get_input: dcae_service_location - name: topic1 - type: message_router - relationships: - - target: docker_host_host - type: dcae.relationships.component_contained_in - - target: topic0 - type: dcae.relationships.subscribe_to_events - - target: topic1 - type: dcae.relationships.subscribe_to_events - - target: policy_0 - type: dcae.relationships.depends_on - topic0: - type: dcae.nodes.Topic - properties: - topic_name: '' - topic1: - type: dcae.nodes.Topic - properties: - topic_name: '' diff --git a/src/test/resources/example/sdc/blueprint-dcae/not-recognized.yaml b/src/test/resources/example/sdc/blueprint-dcae/not-recognized.yaml deleted file mode 100644 index 6522885ff..000000000 --- a/src/test/resources/example/sdc/blueprint-dcae/not-recognized.yaml +++ /dev/null @@ -1,130 +0,0 @@ -tosca_definitions_version: cloudify_dsl_1_3 -imports: -- http://dockercentral.it.att.com:8093/nexus/repository/rawcentral/com.att.dcae.controller/type_files/dockerplugin/2.4.0+t.0.8/node-type.yaml -- http://dockercentral.it.att.com:8093/nexus/repository/rawcentral/com.att.dcae.controller/type_files/dmaap/1.2.0+t.0.9/dmaap.yaml -- http://dockercentral.it.att.com:8093/nexus/repository/rawcentral/com.att.dcae.controller/type_files/relationship/1.0.0+t.0.1/relationship-types.yaml -inputs: - commonEventHeader.domain: - type: string - commonEventHeader.version: - type: string - dcae_service_location: - type: string - docker_host_override: - type: string - default: '' - elementType: - type: string - feed_id: - type: string - mappingType: - type: string - measurementsForVfScalingFields.measurementsForVfScalingVersion: - type: string - phases.docker_map.phaseName: - type: string - topic1_aaf_password: - type: string - topic1_aaf_username: - type: string - topic1_client_role: - type: string -node_templates: - DockerMap_n.1519416493392.3_DockerMap: - type: dcae.nodes.DockerContainerForComponentsUsingDmaap - properties: - application_config: - commonEventHeader.domain: - get_input: commonEventHeader.domain - commonEventHeader.version: - get_input: commonEventHeader.version - csvToVesJson: '{"processing":[{"phase":"pmossFoiPhase","filter":{"class":"Contains","string":"${file}","value":"NOKvMRF"},"processors":[{"class":"LogEvent","title":"PM-FOIEvent-Received","logName":"com.att.gfp.dcae.eventProcessor.input","logLevel":"DEBUG"},{"class":"RunPhase","phase":"vFoiNokRunPhase"}]},{"phase":"vFoiNokRunPhase","comments":"generic parsing","processors":[{"replace":",","field":"data","class":"ReplaceText","find":";"},{"replace":",","field":"file","class":"ReplaceText","find":"_"}]},{"phase":"vFoiNokRunPhase","filter":{"class":"Contains","string":"${data[1]}","value":"Begin date"},"processors":[{"class":"ExtractText","field":"event.commonEventHeader.startEpochMicrosec","value":"${data[1]}","regex":".*Begin date,([^,]*),.*"},{"class":"DateFormatter","value":"${event.commonEventHeader.startEpochMicrosec}","fromFormat":"MM/dd/yy HH:mm:ss a","fromTz":"GMT","toField":"event.commonEventHeader.startEpochMicrosec","toFormat":"#ms","toTz":"#ms"}]},{"phase":"vFoiNokRunPhase","filter":{"class":"Contains","string":"${data[2]}","value":"End date"},"processors":[{"class":"ExtractText","field":"event.commonEventHeader.lastEpochMicrosec","value":"${data[2]}","regex":".*End date,([^,]*),.*"},{"class":"DateFormatter","value":"${event.commonEventHeader.lastEpochMicrosec}","fromFormat":"MM/dd/yy HH:mm:ss a","fromTz":"GMT","toField":"event.commonEventHeader.lastEpochMicrosec","toFormat":"#ms","toTz":"#ms"},{"class":"DateFormatter","value":"${event.commonEventHeader.lastEpochMicrosec}","fromFormat":"#ms","fromTz":"#ms","toField":"event.commonEventHeader.internalHeaderFields.DATETIMEUTC","toFormat":"yyyyMMddHHmmss","toTz":"GMT"}]},{"phase":"vFoiNokRunPhase","processors":[{"class":"ExtractText","field":"event.measurementsForVfScalingFields.additionalMeasurements.arrayOfFields[0].value","value":"${data[7]}","regex":".*CpuSys,+(\\d+,){3}.*"},{"class":"ReplaceText","replace":"","field":"event.measurementsForVfScalingFields.additionalMeasurements.arrayOfFields[0].value","find":","},{"class":"ExtractText","field":"event.measurementsForVfScalingFields.additionalMeasurements.arrayOfFields[1].value","value":"${data[5]}","regex":".*CpuUsage,+(\\d+,){3}.*"},{"class":"ReplaceText","replace":"","field":"event.measurementsForVfScalingFields.additionalMeasurements.arrayOfFields[1].value","find":","},{"class":"ExtractText","field":"event.measurementsForVfScalingFields.additionalMeasurements.arrayOfFields[2].value","value":"${data[7]}","regex":".*CpuSys,+(\\d+,){2}.*"},{"class":"ReplaceText","replace":"","field":"event.measurementsForVfScalingFields.additionalMeasurements.arrayOfFields[2].value","find":","},{"class":"ExtractText","field":"event.measurementsForVfScalingFields.additionalMeasurements.arrayOfFields[3].value","value":"${data[5]}","regex":".*CpuUsage,+(\\d+,){2}.*"},{"class":"ReplaceText","replace":"","field":"event.measurementsForVfScalingFields.additionalMeasurements.arrayOfFields[3].value","find":","}]},{"phase":"vFoiNokRunPhase","processors":[{"class":"ExtractText","field":"event.commonEventHeader.eventName","value":"${file}","regex":"([^,]*),.*"},{"class":"ExtractText","field":"event.commonEventHeader.reportingEntityName","value":"${file}","regex":".*,([^,]*)\\..*"}]},{"phase":"vFoiNokRunPhase","comments":"generic parsing","processors":[{"class":"Set","updates":{"event.commonEventHeader.lastEpochMicrosec":"${event.commonEventHeader.lastEpochMicrosec}000","event.commonEventHeader.startEpochMicrosec":"${event.commonEventHeader.startEpochMicrosec}000","event.commonEventHeader.domain":"measurementsForVfScaling","event.commonEventHeader.eventName":"Mfvs_${event.commonEventHeader.eventName}","event.commonEventHeader.eventType":"csv2ves","event.commonEventHeader.priority":"Normal","event.commonEventHeader.sequence":0,"event.commonEventHeader.sourceName":"${event.commonEventHeader.reportingEntityName}","event.commonEventHeader.version":3.0,"event.commonEventHeader.eventId":"%{now.ms}","event.commonEventHeader.internalHeaderFields.dbTableSuffix":"","event.measurementsForVfScalingFields.measurementInterval":900,"event.measurementsForVfScalingFields.measurementsForVfScalingVersion":2.0,"event.measurementsForVfScalingFields.additionalMeasurements.name":"csv2ves","event.measurementsForVfScalingFields.additionalMeasurements.arrayOfFields[0].name":"CpuSysMax","event.measurementsForVfScalingFields.additionalMeasurements.arrayOfFields[1].name":"CpuUsageMax","event.measurementsForVfScalingFields.additionalMeasurements.arrayOfFields[2].name":"CpuSysAverage","event.measurementsForVfScalingFields.additionalMeasurements.arrayOfFields[3].name":"CpuUsageAverage"}},{"class":"DateFormatter","value":"${event.commonEventHeader.eventId}","fromFormat":"#ms","fromTz":"#ms","toField":"event.commonEventHeader.eventId","toFormat":"yyyyMMddHHmmssSSS","toTz":"GMT"}]},{"phase":"vFoiNokRunPhase","processors":[{"class":"Clear","fields":["data","file"]},{"class":"LogText","logLevel":"INFO","logText":"Finished-PM-FOIEvent-parsing"},{"class":"LogEvent","title":"PM-FOIEvent-Received-Output"},{"class":"RunPhase","phase":"foiEventToDmaapPhase"}]}]}' - elementType: - get_input: elementType - isSelfServeComponent: 'True' - mappingType: - get_input: mappingType - measurementsForVfScalingFields.measurementsForVfScalingVersion: - get_input: measurementsForVfScalingFields.measurementsForVfScalingVersion - phases.docker_map.phaseName: - get_input: phases.docker_map.phaseName - services_calls: {} - streams_publishes: - DCAE-VES-PM-EVENT: - aaf_password: - get_input: topic1_aaf_password - aaf_username: - get_input: topic1_aaf_username - dmaap_info: <> - type: message_router - streams_subscribes: - DCAE_PM_DATA_C_M: - dmaap_info: <> - type: data_router - useDtiConfig: 'False' - docker_config: - healthcheck: - interval: 300s - script: /opt/app/vec/bin/common/HealthCheck_DockerMap.sh - timeout: 15s - type: docker - volumes: - - container: - bind: /opt/app/dcae-certificate - host: - path: /opt/app/dcae-certificate - - container: - bind: /opt/app/dmd/log/AGENT - host: - path: /opt/logs/DCAE/dockermap/dmd/AGENT - - container: - bind: /opt/app/dmd/log/WATCHER - host: - path: /opt/logs/DCAE/dockermap/dmd/WATCHER - - container: - bind: /opt/app/vec/logs/DCAE - host: - path: /opt/logs/DCAE/dockermap/dockermap-logs - - container: - bind: /opt/app/vec/archive/data - host: - path: /opt/data/DCAE/dockermap/dockermap-archive - image: dockercentral.it.att.com:5100/com.att.dcae.controller/dcae-controller-dockermap:18.02-004 - location_id: - get_input: dcae_service_location - service_component_type: dcae.collectors.docker.map.pm - streams_publishes: - - client_role: - get_input: topic1_client_role - location: - get_input: dcae_service_location - name: topic1_n.1519416493404.5 - type: message_router - streams_subscribes: - - location: - get_input: dcae_service_location - name: feed_n.1519416394214.2 - type: data_router - relationships: - - target: docker_host_host - type: dcae.relationships.component_contained_in - - target: feed_n.1519416394214.2 - type: dcae.relationships.subscribe_to_files - - target: topic1_n.1519416493404.5 - type: dcae.relationships.publish_events - docker_host_host: - type: dcae.nodes.SelectedDockerHost - properties: - docker_host_override: - get_input: docker_host_override - location_id: - get_input: dcae_service_location - feed_n.1519416394214.2: - type: dcae.nodes.ExistingFeed - properties: - feed_id: - get_input: feed_id - topic1_n.1519416493404.5: - type: dcae.nodes.Topic - properties: - topic_name: DCAE-VES-PM-EVENT-v1 diff --git a/src/test/resources/example/sdc/blueprint-dcae/prop-text-for-tca-2.json b/src/test/resources/example/sdc/blueprint-dcae/prop-text-for-tca-2.json deleted file mode 100644 index d7a54162f..000000000 --- a/src/test/resources/example/sdc/blueprint-dcae/prop-text-for-tca-2.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "global": [ - { - "name": "service", - "value": [ - "4cc5b45a-1f63-4194-8100-cd8e14248c92" - ] - }, - { - "name": "vf", - "value": [ - "023a3f0d-1161-45ff-b4cf-8918a8ccf3ad" - ] - }, - { - "name": "actionSet", - "value": [ - "vnfRecipe" - ] - }, - { - "name": "location", - "value": [ - "DC1" - ] - }, - { - "name": "deployParameters", - "value": { - "aaiEnrichmentHost": "aai.onap.svc.cluster.local", - "aaiEnrichmentPort": "8443", - "enableAAIEnrichment": true, - "dmaap_host": "message-router.onap", - "dmaap_port": "3904", - "enableRedisCaching": false, - "redisHosts": "dcae-redis.onap.svc.cluster.local:6379", - "tag_version": "nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.1.1", - "consul_host": "consul-server.onap", - "consul_port": "8500", - "cbs_host": "config-binding-servicel", - "cbs_port": "10000", - "external_port": "32012", - "policy_model_id": "onap.policies.monitoring.cdap.tca.hi.lo.app", - "policy_id": "AUTO_GENERATED_POLICY_ID_AT_SUBMIT" - } - } - ] -} \ No newline at end of file diff --git a/src/test/resources/example/sdc/blueprint-dcae/prop-text-for-tca-3.json b/src/test/resources/example/sdc/blueprint-dcae/prop-text-for-tca-3.json deleted file mode 100644 index 012c46e9c..000000000 --- a/src/test/resources/example/sdc/blueprint-dcae/prop-text-for-tca-3.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "global": [ - { - "name": "service", - "value": [ - "4cc5b45a-1f63-4194-8100-cd8e14248c92" - ] - }, - { - "name": "vf", - "value": [ - "07e266fc-49ab-4cd7-8378-ca4676f1b9ec" - ] - }, - { - "name": "actionSet", - "value": [ - "vnfRecipe" - ] - }, - { - "name": "location", - "value": [ - "DC1" - ] - }, - { - "name": "deployParameters", - "value": { - "aaiEnrichmentHost": "aai.onap.svc.cluster.local", - "aaiEnrichmentPort": "8443", - "enableAAIEnrichment": true, - "dmaap_host": "message-router.onap.svc.cluster.local", - "dmaap_port": "3904", - "enableRedisCaching": false, - "redisHosts": "dcae-redis.onap.svc.cluster.local:6379", - "tag_version": "nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.1.0-STAGING-latest", - "consul_host": "consul-server.onap.svc.cluster.local", - "consul_port": "8500", - "cbs_host": "config-binding-service.dcae.svc.cluster.local", - "cbs_port": "10000", - "external_port": "32012", - "policy_id": "AUTO_GENERATED_POLICY_ID_AT_SUBMIT", - "policy_model_id": "onap.policies.monitoring.cdap.tca.hi.lo.app" - } - } - ] -} \ No newline at end of file diff --git a/src/test/resources/example/sdc/blueprint-dcae/prop-text-for-tca.json b/src/test/resources/example/sdc/blueprint-dcae/prop-text-for-tca.json deleted file mode 100644 index ce3158d93..000000000 --- a/src/test/resources/example/sdc/blueprint-dcae/prop-text-for-tca.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "global": [ - { - "name": "service", - "value": [ - "4cc5b45a-1f63-4194-8100-cd8e14248c92" - ] - }, - { - "name": "vf", - "value": [ - "07e266fc-49ab-4cd7-8378-ca4676f1b9ec" - ] - }, - { - "name": "actionSet", - "value": [ - "vnfRecipe" - ] - }, - { - "name": "location", - "value": [ - "DC1" - ] - }, - { - "name": "deployParameters", - "value": { - "location_id": "", - "service_id": "", - "policy_id": "AUTO_GENERATED_POLICY_ID_AT_SUBMIT" - } - } - ] -} diff --git a/src/test/resources/logback.xml b/src/test/resources/logback.xml index 07e587855..c71bcba8f 100644 --- a/src/test/resources/logback.xml +++ b/src/test/resources/logback.xml @@ -1,2 +1,91 @@ - + + + + + + + + + + + + + + + + + + INFO + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - %msg%n + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/resources/tosca/dcea_blueprint.yml b/src/test/resources/tosca/dcea_blueprint.yml deleted file mode 100644 index 0d3ea0462..000000000 --- a/src/test/resources/tosca/dcea_blueprint.yml +++ /dev/null @@ -1,170 +0,0 @@ -# -# ============LICENSE_START==================================================== -# ============================================================================= -# Copyright (c) 2018 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====================================================== - -tosca_definitions_version: cloudify_dsl_1_3 - -description: > - This blueprint deploys/manages the TCA module as a Docker container - -imports: - - http://www.getcloudify.org/spec/cloudify/3.4/types.yaml - - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/k8splugin/1.4.4/k8splugin_types.yaml - - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/dcaepolicyplugin/2.3.0/dcaepolicyplugin_types.yaml -inputs: - aaiEnrichmentHost: - type: string - default: "aai.onap.svc.cluster.local" - aaiEnrichmentPort: - type: string - default: "8443" - enableAAIEnrichment: - type: string - default: true - dmaap_host: - type: string - default: message-router - dmaap_port: - type: string - default: "3904" - enableRedisCaching: - type: string - default: false - redisHosts: - type: string - default: dcae-redis:6379 - tag_version: - type: string - default: "nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.1.0" - consul_host: - type: string - default: consul-server - consul_port: - type: string - default: "8500" - cbs_host: - type: string - default: - test: - test: test - cbs_port: - type: string - default: "10000" - policy_id: - type: string - default: "none" - external_port: - type: string - description: Kubernetes node port on which CDAPgui is exposed - default: "32010" - -node_templates: - tca_k8s: - type: dcae.nodes.ContainerizedServiceComponent - relationships: - - target: tca_policy - type: cloudify.relationships.depends_on - properties: - service_component_type: 'dcaegen2-analytics-tca' - docker_config: {} - image: - get_input: tag_version - log_info: - log_directory: "/opt/app/TCAnalytics/logs" - application_config: - app_config: - appDescription: DCAE Analytics Threshold Crossing Alert Application - appName: dcae-tca-ak-serv - tcaAlertsAbatementTableName: TCAAlertsAbatementTable - tcaAlertsAbatementTableTTLSeconds: '1728000' - tcaSubscriberOutputStreamName: TCASubscriberOutputStream - tcaVESAlertsTableName: TCAVESAlertsTable - tcaVESAlertsTableTTLSeconds: '1728000' - tcaVESMessageStatusTableName: TCAVESMessageStatusTable - tcaVESMessageStatusTableTTLSeconds: '86400' - thresholdCalculatorFlowletInstances: '2' - app_preferences: - aaiEnrichmentHost: - get_input: aaiEnrichmentHost - aaiEnrichmentIgnoreSSLCertificateErrors: 'true' - aaiEnrichmentPortNumber: '8443' - aaiEnrichmentProtocol: https - aaiEnrichmentUserName: DCAE - aaiEnrichmentUserPassword: DCAE - aaiVMEnrichmentAPIPath: /aai/v11/search/nodes-query - aaiVNFEnrichmentAPIPath: /aai/v11/network/generic-vnfs/generic-vnf - enableAAIEnrichment: - get_input: enableAAIEnrichment - enableRedisCaching: - get_input: enableRedisCaching - redisHosts: - get_input: redisHosts - enableAlertCEFFormat: 'false' - publisherContentType: application/json - publisherHostName: - get_input: dmaap_host - publisherHostPort: - get_input: dmaap_port - publisherMaxBatchSize: '1' - publisherMaxRecoveryQueueSize: '100000' - publisherPollingInterval: '20000' - publisherProtocol: http - publisherTopicName: unauthenticated.DCAE_CL_OUTPUT - subscriberConsumerGroup: OpenDCAE-c12 - subscriberConsumerId: c12 - subscriberContentType: application/json - subscriberHostName: - get_input: dmaap_host - subscriberHostPort: - get_input: dmaap_port - subscriberMessageLimit: '-1' - subscriberPollingInterval: '30000' - subscriberProtocol: http - subscriberTimeoutMS: '-1' - subscriberTopicName: unauthenticated.VES_MEASUREMENT_OUTPUT - tca_policy: '{"domain":"measurementsForVfScaling","metricsPerEventName":[{"eventName":"vFirewallBroadcastPackets","controlLoopSchemaType":"VNF","policyScope":"DCAE","policyName":"DCAE.Config_tca-hi-lo","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta","thresholdValue":300,"direction":"LESS_OR_EQUAL","severity":"MAJOR","closedLoopEventStatus":"ONSET"},{"closedLoopControlName":"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta","thresholdValue":700,"direction":"GREATER_OR_EQUAL","severity":"CRITICAL","closedLoopEventStatus":"ONSET"}]},{"eventName":"vLoadBalancer","controlLoopSchemaType":"VM","policyScope":"DCAE","policyName":"DCAE.Config_tca-hi-lo","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta","thresholdValue":300,"direction":"GREATER_OR_EQUAL","severity":"CRITICAL","closedLoopEventStatus":"ONSET"}]},{"eventName":"Measurement_vGMUX","controlLoopSchemaType":"VNF","policyScope":"DCAE","policyName":"DCAE.Config_tca-hi-lo","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value","thresholdValue":0,"direction":"EQUAL","severity":"MAJOR","closedLoopEventStatus":"ABATED"},{"closedLoopControlName":"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value","thresholdValue":0,"direction":"GREATER","severity":"CRITICAL","closedLoopEventStatus":"ONSET"}]}]}' - interfaces: - cloudify.interfaces.lifecycle: - start: - inputs: - envs: - DMAAPHOST: - { get_input: dmaap_host } - DMAAPPORT: - { get_input: dmaap_port } - DMAAPPUBTOPIC: "unauthenticated.DCAE_CL_OUTPUT" - DMAAPSUBTOPIC: "unauthenticated.VES_MEASUREMENT_OUTPUT" - AAIHOST: - { get_input: aaiEnrichmentHost } - AAIPORT: - { get_input: aaiEnrichmentPort } - CONSUL_HOST: - { get_input: consul_host } - CONSUL_PORT: - { get_input: consul_port } - CBS_HOST: - { get_input: cbs_host } - CBS_PORT: - { get_input: cbs_port } - CONFIG_BINDING_SERVICE: "config_binding_service" - ports: - - concat: ["11011:", { get_input: external_port }] - tca_policy: - type: dcae.nodes.policy - properties: - policy_id: - get_input: policy_id -- cgit 1.2.3-korg From 9b6f57681520b4f0e4ed3cabd80204a11041e20e Mon Sep 17 00:00:00 2001 From: sebdet Date: Mon, 10 Feb 2020 15:21:47 +0100 Subject: Add policy downloader Add policy downloader to sync all policy types in the database Issue-ID: CLAMP-518 Change-Id: I5ab82970cd3403e46fe7cc8447766977b11b68e7 Signed-off-by: sebdet --- .../clamp/clds/client/PolicyEngineServices.java | 82 +++++++++++++--------- .../java/org/onap/clamp/loop/CsarInstaller.java | 13 +--- .../clamp/policy/downloader/PolicyDownloader.java | 55 ++++++++++++--- src/main/resources/application-noaaf.properties | 2 +- src/main/resources/application.properties | 2 +- .../resources/clds/camel/routes/policy-flows.xml | 4 +- .../resources/clds/camel/routes/policy-flows.xml | 4 +- .../example/policy/api/v1/policytypes/.file | 60 ++++++++++++++++ .../example/policy/api/v1/policytypes/.header | 1 + 9 files changed, 160 insertions(+), 63 deletions(-) create mode 100644 src/test/resources/http-cache/example/policy/api/v1/policytypes/.file create mode 100644 src/test/resources/http-cache/example/policy/api/v1/policytypes/.header (limited to 'src/test/resources/clds') diff --git a/src/main/java/org/onap/clamp/clds/client/PolicyEngineServices.java b/src/main/java/org/onap/clamp/clds/client/PolicyEngineServices.java index d99e9b569..96294207a 100644 --- a/src/main/java/org/onap/clamp/clds/client/PolicyEngineServices.java +++ b/src/main/java/org/onap/clamp/clds/client/PolicyEngineServices.java @@ -30,6 +30,8 @@ import org.apache.camel.CamelContext; import org.apache.camel.Exchange; import org.apache.camel.builder.ExchangeBuilder; import org.onap.clamp.clds.config.ClampProperties; +import org.onap.clamp.clds.sdc.controller.installer.BlueprintMicroService; +import org.onap.clamp.loop.template.PolicyModel; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -43,32 +45,52 @@ import org.springframework.stereotype.Component; public class PolicyEngineServices { private final CamelContext camelContext; - private final ClampProperties refProp; + private static final EELFLogger logger = EELFManager.getInstance().getLogger(PolicyEngineServices.class); + private static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger(); + private static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); + private static int retryInterval = 0; + private static int retryLimit = 1; - protected static final EELFLogger logger = EELFManager.getInstance().getLogger(PolicyEngineServices.class); - protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger(); - protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); public static final String POLICY_RETRY_INTERVAL = "policy.retry.interval"; public static final String POLICY_RETRY_LIMIT = "policy.retry.limit"; @Autowired public PolicyEngineServices(CamelContext camelContext, ClampProperties refProp) { - this.refProp = refProp; this.camelContext = camelContext; + + if (refProp.getStringValue(POLICY_RETRY_LIMIT) != null) { + retryLimit = Integer.valueOf(refProp.getStringValue(POLICY_RETRY_LIMIT)); + } + if (refProp.getStringValue(POLICY_RETRY_INTERVAL) != null) { + retryInterval = Integer.valueOf(refProp.getStringValue(POLICY_RETRY_INTERVAL)); + } } - private void downloadAllPolicies() { - /* - * Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext) - * .withProperty("blueprintResourceId", - * resourceUuid).withProperty("blueprintServiceId", serviceUuid) - * .withProperty("blueprintName", artifactName).build(); - * metricsLogger.info("Attempt n°" + i + " to contact DCAE inventory"); - * - * Exchange exchangeResponse = - * camelContext.createProducerTemplate().send("direct:get-all-policy-models", - * myCamelExchange); - */ + public PolicyModel createPolicyModelFromPolicyEngine(String policyType, String policyVersion) + throws InterruptedException { + return new PolicyModel(policyType, this.downloadOnePolicy(policyType, policyVersion), policyVersion, + createPolicyAcronym(policyType)); + } + + public PolicyModel createPolicyModelFromPolicyEngine(BlueprintMicroService microService) + throws InterruptedException { + return createPolicyModelFromPolicyEngine(microService.getModelType(), microService.getModelVersion()); + } + + private static String createPolicyAcronym(String policyType) { + String[] policyNameArray = policyType.split("\\."); + return policyNameArray[policyNameArray.length - 1]; + } + + /** + * This method can be used to download all policy types + data types defined in + * policy engine. + * + * @return A yaml containing all policy Types and all data types + * @throws InterruptedException In case of issue when sleeping during the retry + */ + public String downloadAllPolicies() throws InterruptedException { + return callCamelRoute(ExchangeBuilder.anExchange(camelContext).build(), "direct:get-all-policy-models"); } /** @@ -77,34 +99,24 @@ public class PolicyEngineServices { * @param policyType The policy type (id) * @param policyVersion The policy version * @return A string with the whole policy tosca model - * @throws InterruptedException in case of issue when sleeping during the retry + * @throws InterruptedException In case of issue when sleeping during the retry */ public String downloadOnePolicy(String policyType, String policyVersion) throws InterruptedException { - int retryInterval = 0; - int retryLimit = 1; - if (refProp.getStringValue(POLICY_RETRY_LIMIT) != null) { - retryLimit = Integer.valueOf(refProp.getStringValue(POLICY_RETRY_LIMIT)); - } - if (refProp.getStringValue(POLICY_RETRY_INTERVAL) != null) { - retryInterval = Integer.valueOf(refProp.getStringValue(POLICY_RETRY_INTERVAL)); - } - for (int i = 0; i < retryLimit; i++) { - Exchange paramExchange = ExchangeBuilder.anExchange(camelContext) - .withProperty("policyModelName", policyType).withProperty("policyModelVersion", policyVersion) - .build(); - - Exchange exchangeResponse = camelContext.createProducerTemplate().send("direct:get-policy-model", - paramExchange); + return callCamelRoute(ExchangeBuilder.anExchange(camelContext).withProperty("policyModelName", policyType) + .withProperty("policyModelVersion", policyVersion).build(), "direct:get-policy-model"); + } + private String callCamelRoute(Exchange exchange, String camelFlow) throws InterruptedException { + for (int i = 0; i < retryLimit; i++) { + Exchange exchangeResponse = camelContext.createProducerTemplate().send(camelFlow, exchange); if (Integer.valueOf(200).equals(exchangeResponse.getIn().getHeader("CamelHttpResponseCode"))) { return (String) exchangeResponse.getIn().getBody(); } else { - logger.info("Policy " + retryInterval + "ms before retrying ..."); + logger.info("Policy query " + retryInterval + "ms before retrying ..."); // wait for a while and try to connect to DCAE again Thread.sleep(retryInterval); } } return ""; } - } diff --git a/src/main/java/org/onap/clamp/loop/CsarInstaller.java b/src/main/java/org/onap/clamp/loop/CsarInstaller.java index 022b0e28a..c0cfac960 100644 --- a/src/main/java/org/onap/clamp/loop/CsarInstaller.java +++ b/src/main/java/org/onap/clamp/loop/CsarInstaller.java @@ -183,21 +183,10 @@ public class CsarInstaller { return newSet; } - private static String createPolicyAcronym(String policyType) { - String[] policyNameArray = policyType.split("\\."); - return policyNameArray[policyNameArray.length - 1]; - } - - private PolicyModel createPolicyModel(BlueprintMicroService microService) throws InterruptedException { - return new PolicyModel(microService.getModelType(), - policyEngineServices.downloadOnePolicy(microService.getModelType(), microService.getModelVersion()), - microService.getModelVersion(), createPolicyAcronym(microService.getModelType())); - } - private PolicyModel getPolicyModel(BlueprintMicroService microService) throws InterruptedException { return policyModelsRepository .findById(new PolicyModelId(microService.getModelType(), microService.getModelVersion())) - .orElse(createPolicyModel(microService)); + .orElse(policyEngineServices.createPolicyModelFromPolicyEngine(microService)); } /** diff --git a/src/main/java/org/onap/clamp/policy/downloader/PolicyDownloader.java b/src/main/java/org/onap/clamp/policy/downloader/PolicyDownloader.java index b712dc3f6..8795a1257 100644 --- a/src/main/java/org/onap/clamp/policy/downloader/PolicyDownloader.java +++ b/src/main/java/org/onap/clamp/policy/downloader/PolicyDownloader.java @@ -26,12 +26,18 @@ package org.onap.clamp.policy.downloader; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; -import org.apache.camel.CamelContext; -import org.onap.clamp.clds.client.DcaeInventoryServices; -import org.onap.clamp.clds.config.ClampProperties; +import java.util.LinkedHashMap; +import java.util.Map.Entry; + +import org.onap.clamp.clds.client.PolicyEngineServices; +import org.onap.clamp.loop.template.PolicyModel; +import org.onap.clamp.loop.template.PolicyModelId; +import org.onap.clamp.loop.template.PolicyModelsRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; +import org.springframework.scheduling.annotation.Scheduled; +import org.yaml.snakeyaml.Yaml; /** * This class implements a periodic job that is done in the background to @@ -42,20 +48,49 @@ import org.springframework.context.annotation.Profile; @Profile("clamp-policy-controller") public class PolicyDownloader { - protected static final EELFLogger logger = EELFManager.getInstance().getLogger(DcaeInventoryServices.class); + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(PolicyDownloader.class); protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger(); protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); public static final String POLICY_RETRY_INTERVAL = "policy.retry.interval"; public static final String POLICY_RETRY_LIMIT = "policy.retry.limit"; - private final CamelContext camelContext; - - private final ClampProperties refProp; + private final PolicyEngineServices policyEngineServices; + private final PolicyModelsRepository policyModelsRepository; @Autowired - public PolicyDownloader(CamelContext camelContext, ClampProperties refProp) { - this.refProp = refProp; - this.camelContext = camelContext; + public PolicyDownloader(PolicyEngineServices policyEngineService, PolicyModelsRepository policyModelsRepository) { + this.policyEngineServices = policyEngineService; + this.policyModelsRepository = policyModelsRepository; + } + + private void createPolicyInDbIfNeeded(PolicyModel policyModel) { + if (!policyModelsRepository + .existsById(new PolicyModelId(policyModel.getPolicyModelType(), policyModel.getVersion()))) { + policyModelsRepository.save(policyModel); + } + } + + @Scheduled(fixedRate = 120000) + public void synchronizeAllPolicies() throws InterruptedException { + try { + LinkedHashMap loadedYaml = new Yaml().load(policyEngineServices.downloadAllPolicies()); + if (loadedYaml == null || loadedYaml.isEmpty()) { + logger.warn( + "getAllPolicyType yaml returned by policy engine could not be decoded, as it's null or empty"); + return; + } + + LinkedHashMap policyTypesList = (LinkedHashMap) loadedYaml + .get("policy_types"); + for (Entry policyType : policyTypesList.entrySet()) { + createPolicyInDbIfNeeded(policyEngineServices.createPolicyModelFromPolicyEngine(policyType.getKey(), + ((String) ((LinkedHashMap) policyType.getValue()).get("version")))); + } + } catch (InterruptedException e) { + logger.warn("query to policy engine has been interrupted", e); + throw e; + } + } } diff --git a/src/main/resources/application-noaaf.properties b/src/main/resources/application-noaaf.properties index b9af1b470..69d16875c 100644 --- a/src/main/resources/application-noaaf.properties +++ b/src/main/resources/application-noaaf.properties @@ -73,7 +73,7 @@ clamp.config.keyFile=classpath:/clds/aaf/org.onap.clamp.keyfile server.servlet.context-path=/ #Modified engine-rest applicationpath -spring.profiles.active=clamp-default,clamp-default-user,clamp-sdc-controller,clamp-ssl-config +spring.profiles.active=clamp-default,clamp-default-user,clamp-sdc-controller,clamp-ssl-config,clamp-policy-controller spring.http.converters.preferred-json-mapper=gson #The max number of active threads in this pool diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index e4568995d..bb25abffc 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -78,7 +78,7 @@ server.ssl.trust-store-password=enc:iDnPBBLq_EMidXlMa1FEuBR8TZzYxrCg66vq_XfLHdJ server.servlet.context-path=/ #Modified engine-rest applicationpath -spring.profiles.active=clamp-default,clamp-aaf-authentication,clamp-sdc-controller,clamp-ssl-config +spring.profiles.active=clamp-default,clamp-aaf-authentication,clamp-sdc-controller,clamp-ssl-config,clamp-policy-controller spring.http.converters.preferred-json-mapper=gson #The max number of active threads in this pool diff --git a/src/main/resources/clds/camel/routes/policy-flows.xml b/src/main/resources/clds/camel/routes/policy-flows.xml index ce24b27ce..c28e45435 100644 --- a/src/main/resources/clds/camel/routes/policy-flows.xml +++ b/src/main/resources/clds/camel/routes/policy-flows.xml @@ -140,7 +140,7 @@ + uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes?bridgeEndpoint=true&useSystemProperties=true&throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&authMethod=Basic&authUsername={{clamp.config.policy.api.userName}}&authPassword={{clamp.config.policy.api.password}}&connectionTimeToLive=5000&httpClient.connectTimeout=10000&httpClient.socketTimeout=20000&authenticationPreemptive=true&connectionClose=true"/> @@ -174,7 +174,7 @@ + uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[policyModelName]}/versions/${exchangeProperty[policyModelVersion]}?bridgeEndpoint=true&useSystemProperties=true&throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&authMethod=Basic&authUsername={{clamp.config.policy.api.userName}}&authPassword={{clamp.config.policy.api.password}}&connectionTimeToLive=5000&httpClient.connectTimeout=10000&httpClient.socketTimeout=20000&authenticationPreemptive=true&connectionClose=true"/> diff --git a/src/test/resources/clds/camel/routes/policy-flows.xml b/src/test/resources/clds/camel/routes/policy-flows.xml index ce24b27ce..c28e45435 100644 --- a/src/test/resources/clds/camel/routes/policy-flows.xml +++ b/src/test/resources/clds/camel/routes/policy-flows.xml @@ -140,7 +140,7 @@ + uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes?bridgeEndpoint=true&useSystemProperties=true&throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&authMethod=Basic&authUsername={{clamp.config.policy.api.userName}}&authPassword={{clamp.config.policy.api.password}}&connectionTimeToLive=5000&httpClient.connectTimeout=10000&httpClient.socketTimeout=20000&authenticationPreemptive=true&connectionClose=true"/> @@ -174,7 +174,7 @@ + uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[policyModelName]}/versions/${exchangeProperty[policyModelVersion]}?bridgeEndpoint=true&useSystemProperties=true&throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&authMethod=Basic&authUsername={{clamp.config.policy.api.userName}}&authPassword={{clamp.config.policy.api.password}}&connectionTimeToLive=5000&httpClient.connectTimeout=10000&httpClient.socketTimeout=20000&authenticationPreemptive=true&connectionClose=true"/> diff --git a/src/test/resources/http-cache/example/policy/api/v1/policytypes/.file b/src/test/resources/http-cache/example/policy/api/v1/policytypes/.file new file mode 100644 index 000000000..7394d3f91 --- /dev/null +++ b/src/test/resources/http-cache/example/policy/api/v1/policytypes/.file @@ -0,0 +1,60 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0 +policy_types: + - onap.policies.Monitoring: + version: 1.0.0 + description: A base policy type for all policies that govern monitoring provision + derived_from: tosca.policies.Root + properties: + # Omitted for brevity, see Section 1 + + - onap.policies.controlloop.Operational: + version: 1.0.0 + description: Operational Policy for Control Loops + derived_from: tosca.policies.Root + properties: + # Omitted for brevity, see Section 1 + + - onap.policies.controloop.operational.Drools: + version: 1.0.0 + description: Operational Policy for Control Loops using the Drools PDP + derived_from: onap.policies.controlloop.Operational + properties: + # Omitted for brevity, see Section 1 + + - onap.policies.controloop.operational.Apex: + version: 1.0.0 + description: Operational Policy for Control Loops using the APEX PDP + derived_from: onap.policies.controlloop.Operational + properties: + # Omitted for brevity, see Section 1 + + - onap.policies.controlloop.Guard: + version: 1.0.0 + description: Operational Policy for Control Loops + derived_from: tosca.policies.Root + properties: + # Omitted for brevity, see Section 1 + + - onap.policies.controlloop.guard.FrequencyLimiter: + version: 1.0.0 + description: Supports limiting the frequency of actions being taken by a Actor. + derived_from: onap.policies.controlloop.Guard + properties: + # Omitted for brevity, see Section 1 + + - onap.policies.controlloop.guard.Blacklist: + version: 1.0.0 + description: Supports blacklist of VNF's from performing control loop actions on. + derived_from: onap.policies.controlloop.Guard + properties: + # Omitted for brevity, see Section 1 + + - onap.policies.controlloop.guard.MinMax: + version: 1.0.0 + description: Supports Min/Max number of VF Modules + derived_from: onap.policies.controlloop.Guard + properties: + # Omitted for brevity, see Section 1 + +data_types: + # Any bespoke data types referenced by policy type definitions[] diff --git a/src/test/resources/http-cache/example/policy/api/v1/policytypes/.header b/src/test/resources/http-cache/example/policy/api/v1/policytypes/.header new file mode 100644 index 000000000..6a280d972 --- /dev/null +++ b/src/test/resources/http-cache/example/policy/api/v1/policytypes/.header @@ -0,0 +1 @@ +{"Transfer-Encoding": "chunked", "Set-Cookie": "JSESSIONID=158qxkdtdobkd1umr3ikkgrmlx;Path=/", "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", "Server": "Jetty(9.3.21.v20170918)", "Content-Type": "application/json", "X-ECOMP-RequestID": "e2ddb3c8-994f-47df-b4dc-097d4fb55c08"} \ No newline at end of file -- cgit 1.2.3-korg From 4c2423d5e53a8021cb100eb3862efa2c3e7d713e Mon Sep 17 00:00:00 2001 From: xuegao Date: Thu, 13 Feb 2020 10:35:39 +0100 Subject: Fix deploy flow bug Fix the bug in the deploy flow for multi blueprint cases. Issue-ID: CLAMP-571 Change-Id: I368cefafcba34a8ba3bd6be1eb22064995364d23 Signed-off-by: xuegao --- .../org/onap/clamp/loop/components/external/DcaeComponent.java | 8 ++++---- src/main/resources/clds/camel/routes/dcae-flows.xml | 2 +- src/test/resources/clds/camel/routes/dcae-flows.xml | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) (limited to 'src/test/resources/clds') diff --git a/src/main/java/org/onap/clamp/loop/components/external/DcaeComponent.java b/src/main/java/org/onap/clamp/loop/components/external/DcaeComponent.java index 7c0e3ccbb..ca26b136d 100644 --- a/src/main/java/org/onap/clamp/loop/components/external/DcaeComponent.java +++ b/src/main/java/org/onap/clamp/loop/components/external/DcaeComponent.java @@ -147,14 +147,14 @@ public class DcaeComponent extends ExternalComponent { * Return the deploy payload for DCAE. * * @param loop The loop object - * @param microServiceName The micro service name + * @param microServicePolicy The micro service policy * @return The payload used to send deploy closed loop request */ - public static String getDeployPayload(Loop loop, String microServiceName) { + public static String getDeployPayload(Loop loop, MicroServicePolicy microServicePolicy) { JsonObject globalProp = loop.getGlobalPropertiesJson(); - JsonObject deploymentProp = globalProp.getAsJsonObject(DEPLOYMENT_PARAMETER).getAsJsonObject(microServiceName); + JsonObject deploymentProp = globalProp.getAsJsonObject(DEPLOYMENT_PARAMETER).getAsJsonObject(microServicePolicy.getName()); - String serviceTypeId = loop.getLoopTemplate().getDcaeBlueprintId(); + String serviceTypeId = microServicePolicy.getDcaeBlueprintId(); JsonObject rootObject = new JsonObject(); rootObject.addProperty(DCAE_SERVICETYPE_ID, serviceTypeId); diff --git a/src/main/resources/clds/camel/routes/dcae-flows.xml b/src/main/resources/clds/camel/routes/dcae-flows.xml index 8088c2a40..f40207cc7 100644 --- a/src/main/resources/clds/camel/routes/dcae-flows.xml +++ b/src/main/resources/clds/camel/routes/dcae-flows.xml @@ -35,7 +35,7 @@ + method="getDeployPayload(${exchangeProperty[loopObject]},${exchangeProperty[microServicePolicy]})" /> + method="getDeployPayload(${exchangeProperty[loopObject]},${exchangeProperty[microServicePolicy]})" /> Date: Thu, 13 Feb 2020 05:49:21 -0800 Subject: Add tests Add tests for https and aaf Issue-ID: CLAMP-624 Signed-off-by: sebdet Change-Id: Ia78ed8da7e54eaeaaed4fb87f483e0aff3a4a8c5 --- pom.xml | 14 + .../clamp/clds/client/PolicyEngineServices.java | 67 ++- .../policy/downloader/PolicyEngineController.java | 29 +- .../PolicyEngineControllerTestItCase.java | 10 + .../java/org/onap/clamp/util/PassDecoderTest.java | 4 +- src/test/resources/clds/aaf/org.onap.clamp.keyfile | 27 - .../resources/clds/camel/rest/clamp-api-v2.xml | 659 --------------------- .../resources/clds/camel/rest/clds-services.xml | 29 - .../resources/clds/camel/routes/dcae-flows.xml | 466 --------------- .../resources/clds/camel/routes/loop-flows.xml | 268 --------- .../resources/clds/camel/routes/policy-flows.xml | 587 ------------------ .../resources/clds/camel/routes/utils-flows.xml | 28 - src/test/resources/https/https-test.properties | 51 +- 13 files changed, 141 insertions(+), 2098 deletions(-) delete mode 100644 src/test/resources/clds/aaf/org.onap.clamp.keyfile delete mode 100644 src/test/resources/clds/camel/rest/clamp-api-v2.xml delete mode 100644 src/test/resources/clds/camel/rest/clds-services.xml delete mode 100644 src/test/resources/clds/camel/routes/dcae-flows.xml delete mode 100644 src/test/resources/clds/camel/routes/loop-flows.xml delete mode 100644 src/test/resources/clds/camel/routes/policy-flows.xml delete mode 100644 src/test/resources/clds/camel/routes/utils-flows.xml (limited to 'src/test/resources/clds') diff --git a/pom.xml b/pom.xml index 84b4d1f39..8acdb498f 100644 --- a/pom.xml +++ b/pom.xml @@ -561,6 +561,20 @@ clamp + + src/main/resources + true + + clds/aaf/** + + + + src/main/resources + false + + clds/aaf/** + + src/test/resources diff --git a/src/main/java/org/onap/clamp/clds/client/PolicyEngineServices.java b/src/main/java/org/onap/clamp/clds/client/PolicyEngineServices.java index e916afc1f..2302cc891 100644 --- a/src/main/java/org/onap/clamp/clds/client/PolicyEngineServices.java +++ b/src/main/java/org/onap/clamp/clds/client/PolicyEngineServices.java @@ -26,6 +26,11 @@ package org.onap.clamp.clds.client; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + import org.apache.camel.CamelContext; import org.apache.camel.Exchange; import org.apache.camel.builder.ExchangeBuilder; @@ -38,6 +43,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; +import org.yaml.snakeyaml.Yaml; + + + /** * The class implements the communication with the Policy Engine to retrieve @@ -60,27 +69,52 @@ public class PolicyEngineServices { public static final String POLICY_RETRY_INTERVAL = "policy.retry.interval"; public static final String POLICY_RETRY_LIMIT = "policy.retry.limit"; + /** + * Default constructor. + * + * @param camelContext Camel context bean + * @param clampProperties ClampProperties bean + * @param policyModelsRepository policyModel repository bean + */ @Autowired - public PolicyEngineServices(CamelContext camelContext, ClampProperties refProp, + public PolicyEngineServices(CamelContext camelContext, ClampProperties clampProperties, PolicyModelsRepository policyModelsRepository) { this.camelContext = camelContext; this.policyModelsRepository = policyModelsRepository; - if (refProp.getStringValue(POLICY_RETRY_LIMIT) != null) { - retryLimit = Integer.valueOf(refProp.getStringValue(POLICY_RETRY_LIMIT)); + if (clampProperties.getStringValue(POLICY_RETRY_LIMIT) != null) { + retryLimit = Integer.valueOf(clampProperties.getStringValue(POLICY_RETRY_LIMIT)); } - if (refProp.getStringValue(POLICY_RETRY_INTERVAL) != null) { - retryInterval = Integer.valueOf(refProp.getStringValue(POLICY_RETRY_INTERVAL)); + if (clampProperties.getStringValue(POLICY_RETRY_INTERVAL) != null) { + retryInterval = Integer.valueOf(clampProperties.getStringValue(POLICY_RETRY_INTERVAL)); } } + /** + * This method query Policy engine and create a PolicyModel object with type and version. + * + * @param policyType The policyType id + * @param policyVersion The policy version of that type + * @return A PolicyModel created from policyEngine data + */ public PolicyModel createPolicyModelFromPolicyEngine(String policyType, String policyVersion) { return new PolicyModel(policyType, this.downloadOnePolicy(policyType, policyVersion), policyVersion); } + /** + * This method query Policy engine and create a PolicyModel object with type and version. + * + * @param microService microservice object instance + * @return A PolicyModel created from policyEngine data + */ public PolicyModel createPolicyModelFromPolicyEngine(BlueprintMicroService microService) { return createPolicyModelFromPolicyEngine(microService.getModelType(), microService.getModelVersion()); } + /** + * Thie method creates an PolicyModel in Db if it does not exist. + * + * @param policyModel The policyModel to save + */ @Transactional(propagation = Propagation.REQUIRES_NEW) public void createPolicyInDbIfNeeded(PolicyModel policyModel) { if (!policyModelsRepository @@ -89,6 +123,29 @@ public class PolicyEngineServices { } } + /** + * This method synchronize the clamp database and the policy engine. + * So it creates the required PolicyModel. + */ + public void synchronizeAllPolicies() { + LinkedHashMap loadedYaml; + loadedYaml = new Yaml().load(downloadAllPolicies()); + if (loadedYaml == null || loadedYaml.isEmpty()) { + logger.warn("getAllPolicyType yaml returned by policy engine could not be decoded, as it's null or empty"); + return; + } + + List> policyTypesList = (List>) loadedYaml + .get("policy_types"); + policyTypesList.parallelStream().forEach(policyType -> { + Map.Entry policyTypeEntry = (Map.Entry) new ArrayList(policyType.entrySet()).get(0); + + createPolicyInDbIfNeeded( + createPolicyModelFromPolicyEngine(policyTypeEntry.getKey(), + ((String) ((LinkedHashMap) policyTypeEntry.getValue()).get("version")))); + }); + } + /** * This method can be used to download all policy types + data types defined in * policy engine. diff --git a/src/main/java/org/onap/clamp/policy/downloader/PolicyEngineController.java b/src/main/java/org/onap/clamp/policy/downloader/PolicyEngineController.java index f3eaf0c83..50be035b2 100644 --- a/src/main/java/org/onap/clamp/policy/downloader/PolicyEngineController.java +++ b/src/main/java/org/onap/clamp/policy/downloader/PolicyEngineController.java @@ -26,6 +26,7 @@ package org.onap.clamp.policy.downloader; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; +import java.time.Instant; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; @@ -56,31 +57,23 @@ public class PolicyEngineController { private final PolicyEngineServices policyEngineServices; + private Instant lastInstantExecuted; + @Autowired public PolicyEngineController(PolicyEngineServices policyEngineService, - PolicyModelsRepository policyModelsRepository) { + PolicyModelsRepository policyModelsRepository) { this.policyEngineServices = policyEngineService; } @Scheduled(fixedRate = 120000) - public void synchronizeAllPolicies() { - LinkedHashMap loadedYaml; - loadedYaml = new Yaml().load(policyEngineServices.downloadAllPolicies()); - if (loadedYaml == null || loadedYaml.isEmpty()) { - logger.warn("getAllPolicyType yaml returned by policy engine could not be decoded, as it's null or empty"); - return; - } - - List> policyTypesList = (List>) loadedYaml - .get("policy_types"); - policyTypesList.parallelStream().forEach(policyType -> { - Entry policyTypeEntry = (Entry) new ArrayList(policyType.entrySet()).get(0); - - policyEngineServices.createPolicyInDbIfNeeded( - policyEngineServices.createPolicyModelFromPolicyEngine(policyTypeEntry.getKey(), - ((String) ((LinkedHashMap) policyTypeEntry.getValue()).get("version")))); + public synchronized void synchronizeAllPolicies() { + policyEngineServices.synchronizeAllPolicies(); + lastInstantExecuted = Instant.now(); + } - }); + public Instant getLastInstantExecuted() { + return lastInstantExecuted; } + } diff --git a/src/test/java/org/onap/clamp/policy/downloader/PolicyEngineControllerTestItCase.java b/src/test/java/org/onap/clamp/policy/downloader/PolicyEngineControllerTestItCase.java index 912e0d604..7762111b0 100644 --- a/src/test/java/org/onap/clamp/policy/downloader/PolicyEngineControllerTestItCase.java +++ b/src/test/java/org/onap/clamp/policy/downloader/PolicyEngineControllerTestItCase.java @@ -27,6 +27,7 @@ import static org.assertj.core.api.Assertions.assertThat; import com.google.gson.JsonSyntaxException; import java.io.IOException; +import java.time.Instant; import java.util.List; import javax.transaction.Transactional; @@ -56,10 +57,19 @@ public class PolicyEngineControllerTestItCase { @Transactional public void synchronizeAllPoliciesTest() throws JsonSyntaxException, IOException, InterruptedException { policyController.synchronizeAllPolicies(); + Instant firstExecution = policyController.getLastInstantExecuted(); + assertThat (firstExecution).isNotNull(); List policyModelsList = policyModelsRepository.findAll(); assertThat(policyModelsList.size()).isGreaterThanOrEqualTo(8); assertThat(policyModelsList).contains(new PolicyModel("onap.policies.Monitoring", null, "1.0.0")); assertThat(policyModelsList).contains(new PolicyModel("onap.policies.controlloop.Operational", null, "1.0.0")); + + // Re-do it to check that there is no issue with duplicate key + policyController.synchronizeAllPolicies(); + Instant secondExecution = policyController.getLastInstantExecuted(); + assertThat (secondExecution).isNotNull(); + + assertThat(firstExecution).isBefore(secondExecution); } } diff --git a/src/test/java/org/onap/clamp/util/PassDecoderTest.java b/src/test/java/org/onap/clamp/util/PassDecoderTest.java index 56443e31d..e5de8b0a8 100644 --- a/src/test/java/org/onap/clamp/util/PassDecoderTest.java +++ b/src/test/java/org/onap/clamp/util/PassDecoderTest.java @@ -40,13 +40,13 @@ public class PassDecoderTest { @Test public final void testDecryptionNoPassword() throws Exception { - String decodedPass = PassDecoder.decode(null, "src/test/resources/clds/aaf/org.onap.clamp.keyfile"); + String decodedPass = PassDecoder.decode(null, "classpath:clds/aaf/org.onap.clamp.keyfile"); assertNull(decodedPass); } @Test public final void testDecryption() throws Exception { - String decodedPass = PassDecoder.decode(encrypted, "src/test/resources/clds/aaf/org.onap.clamp.keyfile"); + String decodedPass = PassDecoder.decode(encrypted, "classpath:clds/aaf/org.onap.clamp.keyfile"); assertEquals(decodedPass, "China in the Spring"); } } diff --git a/src/test/resources/clds/aaf/org.onap.clamp.keyfile b/src/test/resources/clds/aaf/org.onap.clamp.keyfile deleted file mode 100644 index c2521fc81..000000000 --- a/src/test/resources/clds/aaf/org.onap.clamp.keyfile +++ /dev/null @@ -1,27 +0,0 @@ -kzJMxgphAoBxJz1_vYjxx-V87fahDQdYUqBIyWhZp8ojXdNpmB-96T9CvgJScJynbLcqw2Cj2CYx -wd97vFOYhlyz5zK3tSyIuydOkVGJsJ1S4PviTtjhiJvNourJNDHgtas1Y1y2fQ5_8aVxj-s4W72N -MNYhkeTinaQx_d_5hkBPABJlgCxKLnmxHo2jAJktnZYa5t5h48m7KiUx_RVEkQVtEvux-7vgXaC4 -ymTXj6zI9XoMTVxM0OAl4y7kBiUoOUaxS4tVKV34RJYNNqBjiUTQa_ag-KeUacRABk1ozfwzpvE5 -Sjz8WCy0L-LtCQnapkhKLt04ndCZtw8LDJ-Zz0ZgR2PVIPpTgs9VnVuOi5jf4LzTrtUatvOWkKB9 -drXKzp6cNXnZ0jkD3vV1BzqzhynKnZR2o_ilZv5CTTdpGUt906N_DwZuX6LfcV_7yvjX42bTfeIR -ycPtodFPXlqqn9VUyh5nOauJlnOHAQmSDzjMEgjy17nQX3Ad7s4BfvujzUl-d0MqB_HCKbaW32UT -xcY-0JfI1Y-2IdYfIkUdhVmxop6sSg0jAobWzgCRoRQkP3a2iIlKdfMyskshoWKIDVtlr-3fkDEb -x_b_o1rRoUfzUzxEdphaUAq80Sc0i77ZLT3KF9vJOhyU_pBnApYFxVk7Hkk3VRxJKS7jyL4H7k1x -2m5-2G8fB9XbYZT82xmAquNx4oBdpwj3_ncGF9YRF94K6NZgqemT5iWhpXMoelSU1blASgT3qlTm -B6YgbD5owExNHwRVd8KeRsYrOnBWUiktsIhXFhNZmDUNWMFGQ2KxEcOt1tJwsQDehJFgY_l1JQ0d -643wJ7rTJkGkYX309cydRQUX4Z0ckSQS9LhMd9stxF5XOHlvHdbW0pXNS7SaLbzKCVldUgncvI6z -KWkwrWbftrZK2RT1UZKNngQDMGOk9OhbHAs7YzhFNFARZoRNobIv5tZVDomy-YgJb9-mD1UTkRBL -WXOyoryDlgKrgFsgHclGDI1UFO5N-JfebPKxbP505f4924hxF2r8bspvVW8ZtHQo_SJmhauOX8n_ -eN_LK43LB9k53WAHZ_utvs0s6wGf7I73oj_N7DIFaHTDSm_MhDsFDLVG_wUzCpZ5FP2uL3nnqMkF -Ob-l1fywfmfOmrz1BY6g4sRPPeWXuclYTnRnDRu5VQyc7_aBEVkyt3zw0JEex0vJNFUJl3pYjS55 -GplAB6p7VbS9ceZEtc5Z3qFIVHEzKWZxT190E23t_LlMuEoQ1zaqdHynNaMs61-q_A2aHRiTqlRm -7FahVB3RX4AVLl23mu4u3A9ZDXc40nzjs9mwOVsuKlPvQ2rteDUG1njr2R1_V_MyQuoJjdfbIkPG -4eF0QzlSMdbkeprdQxSfV5YT-yPpkBxSsCMMM43sKm4Hy7_CUdvp4Iayrp3vtK3oYMuCGi6qTadz -KzxfTf8meKan3eMZW4RLByyniH5nQnX_KGfBly05AmFyVH_j0fyOg-48kDhtEKeqmDnP4C01jOID -Ip_AKaB6e0GwsHzVTLZOklHwu_qzsaTzchBOG_dJJju7bxY7qv78Pa92wZIP311gSCVbc-gxxbsR -qI555twmYEoasFm4xz10OYDOkvM1E1Rtxu3ymRLZpe6AoyFBVzEW7Dncdw7O98dKcgrp8ZlQ_8Wg -5zZH0Cic7xnIZ0bNZyQXw56CSUiXVWuwVY3e0djXP3F-FO5gP8VTxbpW4C0t6McXAOlvSEfFKxN7 -u6OBeOKwjrtHaJk2ghF8MUcpDXanhbAgHez9larGlscCkgvoRLNaRH9GIdSVgY3HtNhJRaJIq01S -OGeBjC5J4o-nTrqRFkwyDAYcPL373eYX1dBFFVHR-4q50H9m_zMxZHXETafxzV4DT3Qi8Sxh3uaS -ZX7mRaNaOE0uC1n87_IZ9WhrwIQaZng2lnd9yZ-4rx8fB8WA8KQzifzvHAcMb_HV10JWGaz5A2Rm -EXDsfexQC6CqYg5rdzzlNWDPNlHy5ubyz7fRXZ99uIwBY9aJcvCXCiEXJkC6utj3NcXQrJmk \ No newline at end of file diff --git a/src/test/resources/clds/camel/rest/clamp-api-v2.xml b/src/test/resources/clds/camel/rest/clamp-api-v2.xml deleted file mode 100644 index a0a3eb104..000000000 --- a/src/test/resources/clds/camel/rest/clamp-api-v2.xml +++ /dev/null @@ -1,659 +0,0 @@ - - - - - - - - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - - ${body} - - - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - ${body} - - - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - ${body} - - - - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - - - - - - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - - - - - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - - - - - - - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - - - - - - - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - - - - - - - - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - - - - - - false - - - - - ${exchangeProperty[loopObject].getMicroServicePolicies()} - - - ${body} - - - - false - - - - - - - ${exchangeProperty[loopObject].getOperationalPolicies()} - - - ${body} - - - - false - - - - - - - - ${exchangeProperty[operationalPolicy].createGuardPolicyPayloads().entrySet()} - - - ${body} - - - - - false - - - - - - - - 3000 - - - - - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - - - - - - - - ${exchangeProperty[loopObject].getMicroServicePolicies()} - - - ${body} - - - - - - - - ${exchangeProperty[loopObject].getOperationalPolicies()} - - - ${body} - - - - - - ${exchangeProperty[operationalPolicy].createGuardPolicyPayloads().entrySet()} - - - ${body} - - - - - - - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - java.lang.Exception - - false - - - - - - - - ${exchangeProperty[loopObject]} - - - - - - - diff --git a/src/test/resources/clds/camel/rest/clds-services.xml b/src/test/resources/clds/camel/rest/clds-services.xml deleted file mode 100644 index dd3a4bfdc..000000000 --- a/src/test/resources/clds/camel/rest/clds-services.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - ${body} == 'NOT-OK' - - 404 - - - - - - - - - - - diff --git a/src/test/resources/clds/camel/routes/dcae-flows.xml b/src/test/resources/clds/camel/routes/dcae-flows.xml deleted file mode 100644 index f40207cc7..000000000 --- a/src/test/resources/clds/camel/routes/dcae-flows.xml +++ /dev/null @@ -1,466 +0,0 @@ - - - - - - ${exchangeProperty['loopObject'].getLoopTemplate().getUniqueBlueprint()} == true - - - - - ${exchangeProperty['loopObject'].getLoopTemplate().getUniqueBlueprint()} == false - - - - - - - - - - - - ${exchangeProperty[loopObject].getMicroServicePolicies()} - - - ${body} - - - - false - - - - - - - - - PUT - - - application/json - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - - - - - - - - - - - java.lang.Exception - - false - - - DEPLOY micro service failed - (MicroService name:${exchangeProperty[microServicePolicy].getName()}), - Dep-id:${exchangeProperty[dcaeDeploymentId]}, - StatusUrl:${exchangeProperty[dcaeStatusUrl]}) - - - - DCAE - - - - - - - - - - - - - - - - - - - - - - PUT - - - application/json - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - - - - - - - - - - - - - - DEPLOY loop status - (Dep-id:${exchangeProperty[dcaeDeploymentId]}, - StatusUrl:${exchangeProperty[dcaeStatusUrl]}) - - - - DCAE - - - - - - - - - - ${exchangeProperty['loopObject'].getLoopTemplate().getUniqueBlueprint()} == true - - - - - ${exchangeProperty['loopObject'].getLoopTemplate().getUniqueBlueprint()} == false - - - - - - - - - - - - ${exchangeProperty[loopObject].getMicroServicePolicies()} - - - ${body} - - - - - ${exchangeProperty[microServicePolicy].getDcaeDeploymentId()} != null - - - - - - DELETE - - - application/json - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - - - - - - - - - - - - - - - - - java.lang.Exception - - false - - - UNDEPLOY micro service failed - (MicroService name:${exchangeProperty[microServicePolicy].getName()}) - - - - DCAE - - - - - - - - - - - - - - - - ${exchangeProperty[loopObject].getDcaeDeploymentId()} - != null - - - - - - - DELETE - - - application/json - - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - - - - - - - - - - - - UNDEPLOY loop status - - - DCAE - - - - - - - - - - - - - - - - - - GET - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - - - - DCAE deployment status - - - DCAE - - - - - - - - - - - - GET - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - - - - - - - - - - - - - - GET - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - - - - - ${exchangeProperty[dcaeResponseList]} - - - ${body} - - - - - - - - - - \ No newline at end of file diff --git a/src/test/resources/clds/camel/routes/loop-flows.xml b/src/test/resources/clds/camel/routes/loop-flows.xml deleted file mode 100644 index c4e9fee6d..000000000 --- a/src/test/resources/clds/camel/routes/loop-flows.xml +++ /dev/null @@ -1,268 +0,0 @@ - - - - - ${header.loopName} - - - - - - - ${exchangeProperty[loopObject]} == null - - 404 - - - - - - - - - ${exchangeProperty[loopObject].getComponent('POLICY')} - - - - true - - - true - - - - ${exchangeProperty[loopObject].getMicroServicePolicies()} - - - ${body.getName()} - - - ${body.getModelType()} - - - 1.0.0 - - - null - - - - - - - ${exchangeProperty[loopObject].getOperationalPolicies()} - - - ${body.getName()} - - - onap.policies.controlloop.Operational - - - 1 - - - ${body} - - - null - - - - - - ${exchangeProperty[operationalPolicy].createGuardPolicyPayloads().entrySet()} - - - ${body.getKey()} - - - onap.policies.controlloop.Guard - - - 1 - - - null - - - - - - - ${exchangeProperty[policyComponent].getState()} - - - - - - - - - - - ${exchangeProperty['loopObject'].getLoopTemplate().getUniqueBlueprint()} == true - - - ${exchangeProperty[loopObject].getComponent('DCAE')} - - - ${exchangeProperty[loopObject].getDcaeDeploymentStatusUrl()} != null - - - ${exchangeProperty[loopObject].getDcaeDeploymentStatusUrl()} - - - false - - - - ${header.CamelHttpResponseCode} == 200 - - - - - - - - ${exchangeProperty[dcaeComponent].computeState(*)} - - - - - - - ${exchangeProperty['loopObject'].getLoopTemplate().getUniqueBlueprint()} == false - - - ${exchangeProperty[loopObject].getMicroServicePolicies()} - - - ${body} - - - ${exchangeProperty[loopObject].getComponent('DCAE_' + ${exchangeProperty[microServicePolicy].getName())} - - - ${exchangeProperty[microServicePolicy].getDcaeDeploymentStatusUrl()} != null - - - ${exchangeProperty[microServicePolicy].getDcaeDeploymentStatusUrl()} - - - false - - - - ${header.CamelHttpResponseCode} == 200 - - - - - - - - ${exchangeProperty[dcaeComponent].computeState(*)} - - - - - > - - - - - - - - - ${exchangeProperty['dcaeState'].getStateName()} == - 'BLUEPRINT_DEPLOYED' and ${exchangeProperty['policyState'].getStateName()} - == 'NOT_SENT' - - - - - ${exchangeProperty['dcaeState'].getStateName()} == 'IN_ERROR' or - ${exchangeProperty['dcaeState'].getStateName()} == - 'MICROSERVICE_INSTALLATION_FAILED' - - - - - ${exchangeProperty['dcaeState'].getStateName()} == - 'MICROSERVICE_UNINSTALLATION_FAILED' or - ${exchangeProperty['policyState'].getStateName()} == 'IN_ERROR' - - - - - ${exchangeProperty['dcaeState'].getStateName()} == - 'MICROSERVICE_INSTALLED_SUCCESSFULLY' and - ${exchangeProperty['policyState'].getStateName()} == 'SENT_AND_DEPLOYED' - - - - - ${exchangeProperty['dcaeState'].getStateName()} == - 'MICROSERVICE_INSTALLED_SUCCESSFULLY' and - ${exchangeProperty['policyState'].getStateName()} == 'SENT' - - - - - ${exchangeProperty['dcaeState'].getStateName()} == - 'BLUEPRINT_DEPLOYED' or ${exchangeProperty['dcaeState'].getStateName()} == - 'MICROSERVICE_UNINSTALLED_SUCCESSFULLY' and - ${exchangeProperty['policyState'].getStateName()} == 'SENT_AND_DEPLOYED' - - - - - ${exchangeProperty['dcaeState'].getStateName()} == - 'PROCESSING_MICROSERVICE_INSTALLATION' or - ${exchangeProperty['dcaeState'].getStateName()} == - 'PROCESSING_MICROSERVICE_UNINSTALLATION' and - ${exchangeProperty['policyState'].getStateName()} == 'SENT_AND_DEPLOYED' - - - - - ${exchangeProperty['dcaeState'].getStateName()} == - 'MICROSERVICE_INSTALLED_SUCCESSFULLY' and - ${exchangeProperty['policyState'].getStateName()} != 'NOT_SENT' - - - - - - - - - \ No newline at end of file diff --git a/src/test/resources/clds/camel/routes/policy-flows.xml b/src/test/resources/clds/camel/routes/policy-flows.xml deleted file mode 100644 index c28e45435..000000000 --- a/src/test/resources/clds/camel/routes/policy-flows.xml +++ /dev/null @@ -1,587 +0,0 @@ - - - - - - false - - - - ${header.CamelHttpResponseCode} != 200 - - false - - - - - false - - - - ${header.CamelHttpResponseCode} != 200 - - false - - - - - ${exchangeProperty[policyComponent].computeState(*)} - - - - - - - - - - GET - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - - - - ${exchangeProperty[policyName]} GET - Policy status - - - - POLICY - - - - - - - - - - - - - GET - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - - - - ${exchangeProperty[policyName]} GET Policy deployment - status - - - - POLICY - - - - - - - - - - - - GET - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - - - - - - - - - - - - - GET - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - - - - - - - - - - - - - ${exchangeProperty[microServicePolicy].createPolicyPayload()} - - - - POST - - - application/json - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - - - - ${exchangeProperty[microServicePolicy].getName()} creation - status - - - - POLICY - - - - - - - - - - - - - null - - - DELETE - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - - - - - ${exchangeProperty[microServicePolicy].getName()} removal - status - - - - POLICY - - - - - - - - - - - - - ${exchangeProperty[operationalPolicy].createPolicyPayload()} - - - - POST - - - application/json - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - - - - ${exchangeProperty[operationalPolicy].getName()} creation - status - - - - POLICY - - - - - - - - - - - - - null - - - DELETE - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - - - - ${exchangeProperty[operationalPolicy].getName()} removal - status - - - - POLICY - - - - - - - - - - - - - ${exchangeProperty[guardPolicy].getValue()} - - - - POST - - - application/json - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - - - - ${exchangeProperty[guardPolicy].getKey()} creation status - - - - POLICY - - - - - - - - - - - - - null - - - DELETE - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - - - - - ${exchangeProperty[guardPolicy].getKey()} removal status - - - - POLICY - - - - - - - - - - - - - ${exchangeProperty[loopObject].getComponent("POLICY").createPoliciesPayloadPdpGroup(exchangeProperty[loopObject])} - - - - POST - - - application/json - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - - - - - PDP Group push ALL status - - - POLICY - - - - - - - - - - - - - ${exchangeProperty[loopObject].getComponent("POLICY").listPolicyNamesPdpGroup(exchangeProperty[loopObject])} - - - ${body} - - - null - - - DELETE - - - ${exchangeProperty[X-ONAP-RequestID]} - - - - ${exchangeProperty[X-ONAP-InvocationID]} - - - - ${exchangeProperty[X-ONAP-PartnerName]} - - - - - - ${exchangeProperty[policyName]} PDP Group removal status - - - - POLICY - - - - - java.lang.Exception - - false - - - PDP Group removal, Error reported: ${exception} - - - POLICY - - - - - - - - - - \ No newline at end of file diff --git a/src/test/resources/clds/camel/routes/utils-flows.xml b/src/test/resources/clds/camel/routes/utils-flows.xml deleted file mode 100644 index bbbc46a20..000000000 --- a/src/test/resources/clds/camel/routes/utils-flows.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - true - - - - - - - - - ${exchangeProperty[logComponent]} == null - - - - - - null - - - - - \ No newline at end of file diff --git a/src/test/resources/https/https-test.properties b/src/test/resources/https/https-test.properties index 0be9e298a..46bca153b 100644 --- a/src/test/resources/https/https-test.properties +++ b/src/test/resources/https/https-test.properties @@ -26,11 +26,21 @@ ### To have only HTTP, keep the lines server.ssl.* commented ### To have only HTTPS enabled, uncomment the server.ssl.* lines and specify a right keystore location server.port=${clamp.it.tests.https} -### Settings for HTTPS (this automatically enables the HTTPS on the port 'server.port') -server.ssl.key-store=classpath:https/keystore-test.jks -server.ssl.key-store-password=testpass -server.ssl.key-password=testpass -server.ssl.key-store-type=JKS +### Settings for HTTPS (this automatically enables the HTTPS on the port 'server.port') +server.ssl.key-store=classpath:clds/aaf/org.onap.clamp.p12 +server.ssl.key-store-password=enc:WWCxchk4WGBNSvuzLq3MLjMs5ObRybJtts5AI0XD1Vc +server.ssl.key-password=enc:WWCxchk4WGBNSvuzLq3MLjMs5ObRybJtts5AI0XD1Vc +server.ssl.key-store-type=PKCS12 +server.ssl.key-alias=clamp@clamp.onap.org + +# The key file used to decode the key store and trust store password +# If not defined, the key store and trust store password will not be decrypted +clamp.config.keyFile=classpath:clds/aaf/org.onap.clamp.keyfile + +## Config part for Client certificates +server.ssl.client-auth=want +server.ssl.trust-store=classpath:clds/aaf/truststoreONAPall.jks +server.ssl.trust-store-password=enc:iDnPBBLq_EMidXlMa1FEuBR8TZzYxrCg66vq_XfLHdJ ### In order to be user friendly when HTTPS is enabled, ### you can add another HTTP port that will be automatically redirected to HTTPS @@ -58,13 +68,14 @@ server.http-to-https-redirection.port=${clamp.it.tests.http-redirected} server.servlet.context-path=/ #Modified engine-rest applicationpath -spring.profiles.active=clamp-default,clamp-default-user +spring.profiles.active=clamp-default, clamp-aaf-authentication,clamp-ssl-config + #clds datasource connection details spring.datasource.cldsdb.driverClassName=org.mariadb.jdbc.Driver -spring.datasource.cldsdb.url=jdbc:mariadb:sequential://localhost:${docker.mariadb.port.host}/cldsdb4?autoReconnect=true&retriesAllDown=2147483647&failoverLoopRetries=2147483647 +spring.datasource.cldsdb.url=jdbc:mariadb:sequential://localhost:${docker.mariadb.port.host}/cldsdb4?autoReconnect=true&retriesAllDown=2147483647&failoverLoopRetries=2147483647 spring.datasource.cldsdb.username=clds -spring.datasource.cldsdb.password=4c90a0b48204383f4283448d23e0b885a47237b2a23588e7c4651604f51c1067 +spring.datasource.cldsdb.password=4c90a0b48204383f4283448d23e0b885a47237b2a23588e7c4651604f51c1067 spring.datasource.cldsdb.validationQuery=SELECT 1 spring.datasource.cldsdb.validationQueryTimeout=20000 spring.datasource.cldsdb.validationInterval=30000 @@ -93,4 +104,26 @@ camel.springboot.xmlRests=classpath:/clds/camel/rest/*.xml #com.att.eelf.logging.path= com.att.eelf.logging.file=logback-default.xml #The log folder that will be used in logback.xml file -clamp.config.log.path=log \ No newline at end of file +clamp.config.log.path=log + +#Define user permission related parameters, the permission type can be changed but MUST be redefined in clds-users.properties in that case ! +clamp.config.security.permission.type.cl=org.onap.clamp.clds.cl +clamp.config.security.permission.type.cl.manage=org.onap.clamp.clds.cl.manage +clamp.config.security.permission.type.cl.event=org.onap.clamp.clds.cl.event +clamp.config.security.permission.type.filter.vf=org.onap.clamp.clds.filter.vf +clamp.config.security.permission.type.template=org.onap.clamp.clds.template +clamp.config.security.permission.type.tosca=org.onap.clamp.clds.tosca +#This one indicates the type of instances (dev|prod|perf...), this must be set accordingly in clds-users.properties +clamp.config.security.permission.instance=dev +clamp.config.security.authentication.class=org.onap.aaf.cadi.principal.X509Principal + +#AAF related parameters +clamp.config.cadi.cadiLoglevel=DEBUG +clamp.config.cadi.cadiLatitude=10 +clamp.config.cadi.cadiLongitude=10 +clamp.config.cadi.aafLocateUrl=https://aaf-locate:8095 +clamp.config.cadi.oauthTokenUrl= https://AAF_LOCATE_URL/locate/onap.org.osaaf.aaf.token:2.1/token +clamp.config.cadi.oauthIntrospectUrll=https://AAF_LOCATE_URL/locate/onap.org.osaaf.aaf.introspect:2.1/introspect +clamp.config.cadi.aafEnv=DEV +clamp.config.cadi.aafUrl=https://AAF_LOCATE_URL/onap.org.osaaf.aaf.service:2.1 +clamp.config.cadi.cadiX509Issuers=CN=intermediateCA_1, OU=OSAAF, O=ONAP, C=US:CN=intermediateCA_7, OU=OSAAF, O=ONAP, C=US:CN=intermediateCA_9, OU=OSAAF, O=ONAP, C=US \ No newline at end of file -- cgit 1.2.3-korg From 3a83e2a2ff88ef49535973df8dc77dc8015170da Mon Sep 17 00:00:00 2001 From: ash74268 Date: Fri, 31 Jan 2020 15:40:15 +0000 Subject: Changes include Metadata support, Upload tosca policy model and Loop Template CLAMP Metadata support to parse policy_model_type, acronym and clamp_possible_values from the Tosca Policy Model UI and Backend changes to support Loop Template Backend APIs for Dictionary referenced in the Tosca Policy Model. Upload Tosca Model UI changes to allow user to upload policy models. DB Schema changes for the Loop Element Model and updated schema for the Dictionary Added Jest test cases and snapshots checkstyle issues fix and Junits Issue-ID: CLAMP-580 Signed-off-by: ash74268 Change-Id: I57521bc1c3afaf4ca5a2acf4c59823df05fd4cd6 Signed-off-by: ash74268 --- extra/sql/bulkload/create-tables.sql | 31 +- .../clamp/clds/tosca/ToscaSchemaConstants.java | 5 + .../clamp/clds/tosca/ToscaYamlToJsonConvertor.java | 565 ++++++++---- .../onap/clamp/loop/template/LoopElementModel.java | 72 +- .../org/onap/clamp/loop/template/LoopTemplate.java | 116 ++- .../template/LoopTemplateLoopElementModelId.java | 14 +- .../clamp/loop/template/LoopTemplatesService.java | 111 +++ .../org/onap/clamp/loop/template/LoopType.java | 42 + .../clamp/loop/template/LoopTypeConvertor.java | 52 ++ .../org/onap/clamp/loop/template/PolicyModel.java | 32 +- .../clamp/loop/template/PolicyModelsService.java | 60 +- src/main/java/org/onap/clamp/tosca/Dictionary.java | 86 +- .../org/onap/clamp/tosca/DictionaryElement.java | 121 +-- .../clamp/tosca/DictionaryElementsRepository.java | 2 +- .../org/onap/clamp/tosca/DictionaryRepository.java | 4 +- .../org/onap/clamp/tosca/DictionaryService.java | 142 +++ .../org/onap/clamp/util/SemanticVersioning.java | 31 +- .../resources/clds/camel/rest/clamp-api-v2.xml | 634 +++++++++---- .../tosca/DictionaryRepositoriesTestItCase.java | 15 +- .../clds/tosca/ToscaYamlToJsonConvertorTest.java | 91 -- .../tosca/ToscaYamlToJsonConvertorTestItCase.java | 188 ++++ .../clamp/loop/LoopTemplatesServiceItCase.java | 145 +++ .../onap/clamp/tosca/DictionaryServiceItCase.java | 247 ++++++ .../onap/clamp/util/SemanticVersioningTest.java | 28 +- .../resources/clds/camel/rest/clamp-api-v2.xml | 984 +++++++++++++++++++++ .../tosca_metadata_clamp_possible_values.yaml | 184 ++++ ...metadata_clamp_possible_values_json_schema.json | 235 +++++ ui-react/src/LoopUI.js | 2 + ui-react/src/__snapshots__/LoopUI.test.js.snap | 4 + ui-react/src/__snapshots__/OnapClamp.test.js.snap | 4 + ui-react/src/api/TemplateMenuService.js | 52 +- .../dialogs/Tosca/UploadToscaPolicyModal.js | 138 +++ .../dialogs/Tosca/UploadToscaPolicyModal.test.js | 87 ++ .../dialogs/Tosca/ViewToscaPolicyModal.js | 37 +- .../dialogs/Tosca/ViewToscaPolicyModal.test.js | 87 +- .../UploadToscaPolicyModal.test.js.snap | 111 +++ .../ViewToscaPolicyModal.test.js.snap | 26 +- ui-react/src/components/menu/MenuBar.js | 3 +- .../menu/__snapshots__/MenuBar.test.js.snap | 51 ++ 39 files changed, 4133 insertions(+), 706 deletions(-) create mode 100644 src/main/java/org/onap/clamp/loop/template/LoopTemplatesService.java create mode 100644 src/main/java/org/onap/clamp/loop/template/LoopType.java create mode 100644 src/main/java/org/onap/clamp/loop/template/LoopTypeConvertor.java create mode 100644 src/main/java/org/onap/clamp/tosca/DictionaryService.java delete mode 100644 src/test/java/org/onap/clamp/clds/tosca/ToscaYamlToJsonConvertorTest.java create mode 100644 src/test/java/org/onap/clamp/clds/tosca/ToscaYamlToJsonConvertorTestItCase.java create mode 100644 src/test/java/org/onap/clamp/loop/LoopTemplatesServiceItCase.java create mode 100644 src/test/java/org/onap/clamp/tosca/DictionaryServiceItCase.java create mode 100644 src/test/resources/clds/camel/rest/clamp-api-v2.xml create mode 100644 src/test/resources/tosca/tosca_metadata_clamp_possible_values.yaml create mode 100644 src/test/resources/tosca/tosca_metadata_clamp_possible_values_json_schema.json create mode 100644 ui-react/src/components/dialogs/Tosca/UploadToscaPolicyModal.js create mode 100644 ui-react/src/components/dialogs/Tosca/UploadToscaPolicyModal.test.js create mode 100644 ui-react/src/components/dialogs/Tosca/__snapshots__/UploadToscaPolicyModal.test.js.snap (limited to 'src/test/resources/clds') diff --git a/extra/sql/bulkload/create-tables.sql b/extra/sql/bulkload/create-tables.sql index 4edb46916..50c8d42ca 100644 --- a/extra/sql/bulkload/create-tables.sql +++ b/extra/sql/bulkload/create-tables.sql @@ -11,17 +11,22 @@ ) engine=InnoDB; create table dictionary_elements ( - name varchar(255) not null, + short_name varchar(255) not null, created_by varchar(255), created_timestamp datetime(6) not null, updated_by varchar(255), updated_timestamp datetime(6) not null, - description varchar(255), - short_name varchar(255) not null, - subdictionary_id varchar(255) not null, + description varchar(255) not null, + name varchar(255) not null, + subdictionary_name varchar(255), type varchar(255) not null, - dictionary_id varchar(255), - primary key (name) + primary key (short_name) + ) engine=InnoDB; + + create table dictionary_to_dictionaryelements ( + dictionary_name varchar(255) not null, + dictionary_element_short_name varchar(255) not null, + primary key (dictionary_name, dictionary_element_short_name) ) engine=InnoDB; create table hibernate_sequence ( @@ -39,6 +44,7 @@ blueprint_yaml MEDIUMTEXT, dcae_blueprint_id varchar(255), loop_element_type varchar(255) not null, + short_name varchar(255), primary key (name) ) engine=InnoDB; @@ -58,6 +64,7 @@ created_timestamp datetime(6) not null, updated_by varchar(255), updated_timestamp datetime(6) not null, + allowed_loop_type varchar(255), blueprint_yaml MEDIUMTEXT, dcae_blueprint_id varchar(255), maximum_instances_allowed integer, @@ -161,12 +168,14 @@ primary key (service_uuid) ) engine=InnoDB; - alter table dictionary_elements - add constraint UK_qxkrvsrhp26m60apfvxphpl3d unique (short_name); + alter table dictionary_to_dictionaryelements + add constraint FK68hjjinnm8nte2owstd0xwp23 + foreign key (dictionary_element_short_name) + references dictionary_elements (short_name); - alter table dictionary_elements - add constraint FKn87bpgpm9i56w7uko585rbkgn - foreign key (dictionary_id) + alter table dictionary_to_dictionaryelements + add constraint FKtqfxg46gsxwlm2gkl6ne3cxfe + foreign key (dictionary_name) references dictionary (name); alter table loop_logs diff --git a/src/main/java/org/onap/clamp/clds/tosca/ToscaSchemaConstants.java b/src/main/java/org/onap/clamp/clds/tosca/ToscaSchemaConstants.java index 595b1805e..9601649c9 100644 --- a/src/main/java/org/onap/clamp/clds/tosca/ToscaSchemaConstants.java +++ b/src/main/java/org/onap/clamp/clds/tosca/ToscaSchemaConstants.java @@ -42,6 +42,11 @@ public class ToscaSchemaConstants { public static final String PROPERTIES = "properties"; public static final String REQUIRED = "required"; public static final String ENTRY_SCHEMA = "entry_schema"; + + public static final String METADATA = "metadata"; + public static final String METADATA_POLICY_MODEL_TYPE = "policy_model_type"; + public static final String METADATA_ACRONYM = "acronym"; + public static final String METADATA_CLAMP_POSSIBLE_VALUES = "clamp_possible_values"; // Constraints public static final String CONSTRAINTS = "constraints"; diff --git a/src/main/java/org/onap/clamp/clds/tosca/ToscaYamlToJsonConvertor.java b/src/main/java/org/onap/clamp/clds/tosca/ToscaYamlToJsonConvertor.java index 232db48c4..666ca6702 100644 --- a/src/main/java/org/onap/clamp/clds/tosca/ToscaYamlToJsonConvertor.java +++ b/src/main/java/org/onap/clamp/clds/tosca/ToscaYamlToJsonConvertor.java @@ -23,15 +23,25 @@ package org.onap.clamp.clds.tosca; +import com.google.gson.Gson; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; - +import java.util.Map.Entry; +import java.util.Optional; +import java.util.stream.Collectors; import org.json.JSONArray; import org.json.JSONObject; +import org.onap.clamp.clds.config.ClampProperties; +import org.onap.clamp.tosca.DictionaryElement; +import org.onap.clamp.tosca.DictionaryService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; import org.yaml.snakeyaml.Yaml; /** @@ -39,8 +49,15 @@ import org.yaml.snakeyaml.Yaml; * Editor. * */ +@Component public class ToscaYamlToJsonConvertor { + @Autowired + private DictionaryService dictionaryService; + + @Autowired + private ClampProperties refProp; + private int simpleTypeOrder = 1000; private int complexTypeOrder = 10000; private int complexSimpleTypeOrder = 1; @@ -58,12 +75,57 @@ public class ToscaYamlToJsonConvertor { return complexTypeOrder + complexSimpleTypeOrder; } + /** + * Parses Tosca YAML string and Converts to JsonObject. + * + * @param yamlString YAML string + * @return JsonObject + */ + public JsonObject validateAndConvertToJson(String yamlString) { + + Yaml yaml = new Yaml(); + LinkedHashMap loadedYaml = yaml.load(yamlString); + if (loadedYaml == null) { + return null; + } + + JSONObject jsonObject = new JSONObject(loadedYaml); + return new Gson().fromJson(jsonObject.toString(), JsonObject.class); + } + + /** + * return the values by looking up the key in the Toscsa JSON object. + * + * @param obj Tosca Json Object + * @param key the parameter key to look up + * @return the value for the provided key + */ + public String getValueFromMetadata(JsonObject obj, String key) { + JsonElement jsonElement = obj.get(ToscaSchemaConstants.NODE_TYPES); + if (jsonElement.isJsonObject()) { + Iterator> itr = + jsonElement.getAsJsonObject().entrySet().iterator(); + while (itr.hasNext()) { + Entry entry = itr.next(); + if (entry.getValue() != null && entry.getValue().isJsonObject() + && entry.getValue().getAsJsonObject().has(ToscaSchemaConstants.METADATA)) { + JsonObject metadatas = entry.getValue().getAsJsonObject() + .get(ToscaSchemaConstants.METADATA).getAsJsonObject(); + if (metadatas.has(key)) { + return metadatas.get(key).getAsString(); + } + } + } + } + return null; + } + /** * Parses Tosca YAML string. * - * @param yamlString YAML string + * @param yamlString YAML string * @param modelTypeToUse The model type that must be used to obtain the Json - * Schema + * Schema * @return JSON string */ public String parseToscaYaml(String yamlString, String modelTypeToUse) { @@ -78,7 +140,8 @@ public class ToscaYamlToJsonConvertor { JSONObject jsonParentObject = new JSONObject(); JSONObject jsonTempObject = new JSONObject(); parseNodeAndDataType(loadedYaml, nodeTypes, dataNodes); - populateJsonEditorObject(loadedYaml, nodeTypes, dataNodes, jsonParentObject, jsonTempObject, modelTypeToUse); + populateJsonEditorObject(loadedYaml, nodeTypes, dataNodes, jsonParentObject, jsonTempObject, + modelTypeToUse); if (jsonTempObject.length() > 0) { jsonParentObject = jsonTempObject; } @@ -89,13 +152,17 @@ public class ToscaYamlToJsonConvertor { // Parse node_type and data_type @SuppressWarnings("unchecked") - private void parseNodeAndDataType(LinkedHashMap map, LinkedHashMap nodeTypes, - LinkedHashMap dataNodes) { + private void parseNodeAndDataType(LinkedHashMap map, + LinkedHashMap nodeTypes, LinkedHashMap dataNodes) { map.entrySet().stream().forEach(n -> { - if (n.getKey().contains(ToscaSchemaConstants.NODE_TYPES) && n.getValue() instanceof Map) { - parseNodeAndDataType((LinkedHashMap) n.getValue(), nodeTypes, dataNodes); - } else if (n.getKey().contains(ToscaSchemaConstants.DATA_TYPES) && n.getValue() instanceof Map) { - parseNodeAndDataType((LinkedHashMap) n.getValue(), nodeTypes, dataNodes); + if (n.getKey().contains(ToscaSchemaConstants.NODE_TYPES) + && n.getValue() instanceof Map) { + parseNodeAndDataType((LinkedHashMap) n.getValue(), nodeTypes, + dataNodes); + } else if (n.getKey().contains(ToscaSchemaConstants.DATA_TYPES) + && n.getValue() instanceof Map) { + parseNodeAndDataType((LinkedHashMap) n.getValue(), nodeTypes, + dataNodes); } else if (n.getKey().contains(ToscaSchemaConstants.POLICY_NODE)) { nodeTypes.put(n.getKey(), n.getValue()); } else if (n.getKey().contains(ToscaSchemaConstants.POLICY_DATA)) { @@ -105,83 +172,97 @@ public class ToscaYamlToJsonConvertor { } @SuppressWarnings("unchecked") - private void populateJsonEditorObject(LinkedHashMap map, LinkedHashMap nodeTypes, - LinkedHashMap dataNodes, JSONObject jsonParentObject, JSONObject jsonTempObject, - String modelTypeToUse) { + private void populateJsonEditorObject(LinkedHashMap map, + LinkedHashMap nodeTypes, LinkedHashMap dataNodes, + JSONObject jsonParentObject, JSONObject jsonTempObject, String modelTypeToUse) { Map jsonEntrySchema = new HashMap<>(); jsonParentObject.put(JsonEditorSchemaConstants.TYPE, JsonEditorSchemaConstants.TYPE_OBJECT); if (nodeTypes.get(modelTypeToUse) instanceof Map) { - ((LinkedHashMap) nodeTypes.get(modelTypeToUse)).entrySet().forEach(ntElement -> { - if (ntElement.getKey().equalsIgnoreCase(ToscaSchemaConstants.PROPERTIES)) { - JSONArray rootNodeArray = new JSONArray(); - if (ntElement.getValue() instanceof Map) { - ((LinkedHashMap) ntElement.getValue()).entrySet() + ((LinkedHashMap) nodeTypes.get(modelTypeToUse)).entrySet() + .forEach(ntElement -> { + if (ntElement.getKey().equalsIgnoreCase(ToscaSchemaConstants.PROPERTIES)) { + JSONArray rootNodeArray = new JSONArray(); + if (ntElement.getValue() instanceof Map) { + ((LinkedHashMap) ntElement.getValue()).entrySet() .forEach((ntPropertiesElement) -> { boolean isListNode = false; - parseDescription((LinkedHashMap) ntPropertiesElement.getValue(), - jsonParentObject); - LinkedHashMap parentPropertiesMap = (LinkedHashMap) ntPropertiesElement + parseDescription( + (LinkedHashMap) ntPropertiesElement + .getValue(), + jsonParentObject); + LinkedHashMap parentPropertiesMap = + (LinkedHashMap) ntPropertiesElement .getValue(); if (parentPropertiesMap.containsKey(ToscaSchemaConstants.TYPE) - && ((String) parentPropertiesMap.get(ToscaSchemaConstants.TYPE)) - .contains(ToscaSchemaConstants.TYPE_MAP) - && parentPropertiesMap.containsKey(ToscaSchemaConstants.ENTRY_SCHEMA)) { - parentPropertiesMap = (LinkedHashMap) parentPropertiesMap + && ((String) parentPropertiesMap + .get(ToscaSchemaConstants.TYPE)) + .contains(ToscaSchemaConstants.TYPE_MAP) + && parentPropertiesMap + .containsKey(ToscaSchemaConstants.ENTRY_SCHEMA)) { + parentPropertiesMap = + (LinkedHashMap) parentPropertiesMap .get(ToscaSchemaConstants.ENTRY_SCHEMA); isListNode = true; } if (parentPropertiesMap.containsKey(ToscaSchemaConstants.TYPE) - && ((String) parentPropertiesMap.get(ToscaSchemaConstants.TYPE)) - .contains(ToscaSchemaConstants.POLICY_DATA)) { - ((LinkedHashMap) dataNodes - .get(parentPropertiesMap.get(ToscaSchemaConstants.TYPE))).entrySet() - .stream().forEach(pmap -> { - if (pmap.getKey().equalsIgnoreCase( - ToscaSchemaConstants.PROPERTIES)) { - parseToscaProperties(ToscaSchemaConstants.POLICY_NODE, - (LinkedHashMap) pmap.getValue(), - jsonParentObject, rootNodeArray, - jsonEntrySchema, dataNodes, - incrementSimpleTypeOrder()); - } - }); + && ((String) parentPropertiesMap + .get(ToscaSchemaConstants.TYPE)) + .contains(ToscaSchemaConstants.POLICY_DATA)) { + ((LinkedHashMap) dataNodes.get( + parentPropertiesMap.get(ToscaSchemaConstants.TYPE))) + .entrySet().stream().forEach(pmap -> { + if (pmap.getKey().equalsIgnoreCase( + ToscaSchemaConstants.PROPERTIES)) { + parseToscaProperties( + ToscaSchemaConstants.POLICY_NODE, + (LinkedHashMap) pmap + .getValue(), + jsonParentObject, rootNodeArray, + jsonEntrySchema, dataNodes, + incrementSimpleTypeOrder()); + } + }); } if (isListNode) { jsonTempObject.put(JsonEditorSchemaConstants.TYPE, - JsonEditorSchemaConstants.TYPE_ARRAY); - parseDescription((LinkedHashMap) ntPropertiesElement.getValue(), - jsonTempObject); - jsonTempObject.put(JsonEditorSchemaConstants.ITEMS, jsonParentObject); + JsonEditorSchemaConstants.TYPE_ARRAY); + parseDescription( + (LinkedHashMap) ntPropertiesElement + .getValue(), + jsonTempObject); + jsonTempObject.put(JsonEditorSchemaConstants.ITEMS, + jsonParentObject); jsonTempObject.put(JsonEditorSchemaConstants.FORMAT, - JsonEditorSchemaConstants.CUSTOM_KEY_FORMAT_TABS_TOP); + JsonEditorSchemaConstants.CUSTOM_KEY_FORMAT_TABS_TOP); jsonTempObject.put(JsonEditorSchemaConstants.UNIQUE_ITEMS, - JsonEditorSchemaConstants.TRUE); + JsonEditorSchemaConstants.TRUE); } }); + } } - } - }); + }); } } @SuppressWarnings("unchecked") private void parseToscaProperties(String parentKey, LinkedHashMap propertiesMap, - JSONObject jsonDataNode, JSONArray array, Map jsonEntrySchema, - LinkedHashMap dataNodes, final int order) { + JSONObject jsonDataNode, JSONArray array, Map jsonEntrySchema, + LinkedHashMap dataNodes, final int order) { JSONObject jsonPropertyNode = new JSONObject(); propertiesMap.entrySet().stream().forEach(p -> { // Populate JSON Array for "required" key if (p.getValue() instanceof Map) { - LinkedHashMap nodeMap = (LinkedHashMap) p.getValue(); + LinkedHashMap nodeMap = + (LinkedHashMap) p.getValue(); if (nodeMap.containsKey(ToscaSchemaConstants.REQUIRED) - && ((boolean) nodeMap.get(ToscaSchemaConstants.REQUIRED))) { + && ((boolean) nodeMap.get(ToscaSchemaConstants.REQUIRED))) { array.put(p.getKey()); } // if(nodeMap.containsKey(ToscaSchemaConstants.CONSTRAINTS)) - parseToscaChildNodeMap(p.getKey(), nodeMap, jsonPropertyNode, jsonEntrySchema, dataNodes, array, - incrementSimpleTypeOrder()); + parseToscaChildNodeMap(p.getKey(), nodeMap, jsonPropertyNode, jsonEntrySchema, + dataNodes, array, incrementSimpleTypeOrder()); } }); jsonDataNode.put(JsonEditorSchemaConstants.REQUIRED, array); @@ -189,42 +270,48 @@ public class ToscaYamlToJsonConvertor { } @SuppressWarnings("unchecked") - private void parseToscaPropertiesForType(String parentKey, LinkedHashMap propertiesMap, - JSONObject jsonDataNode, JSONArray array, Map jsonEntrySchema, - LinkedHashMap dataNodes, boolean isType, int order) { + private void parseToscaPropertiesForType(String parentKey, + LinkedHashMap propertiesMap, JSONObject jsonDataNode, JSONArray array, + Map jsonEntrySchema, LinkedHashMap dataNodes, + boolean isType, int order) { JSONObject jsonPropertyNode = new JSONObject(); propertiesMap.entrySet().stream().forEach(p -> { // array.put(p.getKey()); boolean overWriteArray = false; if (p.getValue() instanceof Map) { - LinkedHashMap nodeMap = (LinkedHashMap) p.getValue(); + LinkedHashMap nodeMap = + (LinkedHashMap) p.getValue(); if (!(parentKey.contains(ToscaSchemaConstants.ENTRY_SCHEMA) - || parentKey.contains(ToscaSchemaConstants.POLICY_NODE)) - && nodeMap.containsKey(ToscaSchemaConstants.TYPE) - && (((String) nodeMap.get(ToscaSchemaConstants.TYPE)) - .contains(ToscaSchemaConstants.POLICY_DATA))) { + || parentKey.contains(ToscaSchemaConstants.POLICY_NODE)) + && nodeMap.containsKey(ToscaSchemaConstants.TYPE) + && (((String) nodeMap.get(ToscaSchemaConstants.TYPE)) + .contains(ToscaSchemaConstants.POLICY_DATA))) { overWriteArray = true; } if (nodeMap.containsKey(ToscaSchemaConstants.REQUIRED) - && ((boolean) nodeMap.get(ToscaSchemaConstants.REQUIRED))) { + && ((boolean) nodeMap.get(ToscaSchemaConstants.REQUIRED))) { array.put(p.getKey()); } - parseToscaChildNodeMap(p.getKey(), nodeMap, jsonPropertyNode, jsonEntrySchema, dataNodes, array, order); + parseToscaChildNodeMap(p.getKey(), nodeMap, jsonPropertyNode, jsonEntrySchema, + dataNodes, array, order); } }); jsonDataNode.put(JsonEditorSchemaConstants.REQUIRED, array); jsonDataNode.put(JsonEditorSchemaConstants.PROPERTIES, jsonPropertyNode); } - private void parseToscaChildNodeMap(String childObjectKey, LinkedHashMap childNodeMap, - JSONObject jsonPropertyNode, Map jsonEntrySchema, - LinkedHashMap dataNodes, JSONArray array, int order) { + private void parseToscaChildNodeMap(String childObjectKey, + LinkedHashMap childNodeMap, JSONObject jsonPropertyNode, + Map jsonEntrySchema, LinkedHashMap dataNodes, + JSONArray array, int order) { JSONObject childObject = new JSONObject(); // JSONArray childArray = new JSONArray(); parseDescription(childNodeMap, childObject); - parseTypes(childObjectKey, childNodeMap, childObject, jsonEntrySchema, dataNodes, array, order); + parseTypes(childObjectKey, childNodeMap, childObject, jsonEntrySchema, dataNodes, array, + order); parseConstraints(childNodeMap, childObject); + parseMetadataPossibleValues(childNodeMap, childObject); parseEntrySchema(childNodeMap, childObject, jsonPropertyNode, jsonEntrySchema, dataNodes); jsonPropertyNode.put(childObjectKey, childObject); @@ -232,15 +319,17 @@ public class ToscaYamlToJsonConvertor { } - private void parseEntrySchema(LinkedHashMap childNodeMap, JSONObject childObject, - JSONObject jsonPropertyNode, Map jsonEntrySchema, - LinkedHashMap dataNodes) { + private void parseEntrySchema(LinkedHashMap childNodeMap, + JSONObject childObject, JSONObject jsonPropertyNode, + Map jsonEntrySchema, LinkedHashMap dataNodes) { if (childNodeMap.get(ToscaSchemaConstants.ENTRY_SCHEMA) != null) { if (childNodeMap.get(ToscaSchemaConstants.ENTRY_SCHEMA) instanceof Map) { - LinkedHashMap entrySchemaMap = (LinkedHashMap) childNodeMap + LinkedHashMap entrySchemaMap = + (LinkedHashMap) childNodeMap .get(ToscaSchemaConstants.ENTRY_SCHEMA); entrySchemaMap.entrySet().stream().forEach(entry -> { - if (entry.getKey().equalsIgnoreCase(ToscaSchemaConstants.TYPE) && entry.getValue() != null) { + if (entry.getKey().equalsIgnoreCase(ToscaSchemaConstants.TYPE) + && entry.getValue() != null) { String entrySchemaType = (String) entry.getValue(); if (entrySchemaType.contains(ToscaSchemaConstants.POLICY_DATA)) { JSONArray array = new JSONArray(); @@ -248,44 +337,51 @@ public class ToscaYamlToJsonConvertor { // Already traversed JSONObject entrySchemaObject = jsonEntrySchema.get(entrySchemaType); attachEntrySchemaJsonObject(childObject, entrySchemaObject, - JsonEditorSchemaConstants.TYPE_OBJECT); + JsonEditorSchemaConstants.TYPE_OBJECT); } else if (dataNodes.containsKey(entrySchemaType)) { JSONObject entrySchemaObject = new JSONObject(); // Need to traverse - ((LinkedHashMap) dataNodes.get(entrySchemaType)).entrySet().stream() - .forEach(pmap -> { - if (pmap.getKey().equalsIgnoreCase(ToscaSchemaConstants.PROPERTIES)) { - parseToscaProperties(ToscaSchemaConstants.ENTRY_SCHEMA, - (LinkedHashMap) pmap.getValue(), - entrySchemaObject, array, jsonEntrySchema, dataNodes, - incrementComplexTypeOrder()); - jsonEntrySchema.put(entrySchemaType, entrySchemaObject); - dataNodes.remove(entrySchemaType); - attachEntrySchemaJsonObject(childObject, entrySchemaObject, - JsonEditorSchemaConstants.TYPE_OBJECT); - } + ((LinkedHashMap) dataNodes.get(entrySchemaType)) + .entrySet().stream().forEach(pmap -> { + if (pmap.getKey() + .equalsIgnoreCase(ToscaSchemaConstants.PROPERTIES)) { + parseToscaProperties(ToscaSchemaConstants.ENTRY_SCHEMA, + (LinkedHashMap) pmap.getValue(), + entrySchemaObject, array, jsonEntrySchema, + dataNodes, incrementComplexTypeOrder()); + jsonEntrySchema.put(entrySchemaType, entrySchemaObject); + dataNodes.remove(entrySchemaType); + attachEntrySchemaJsonObject(childObject, + entrySchemaObject, + JsonEditorSchemaConstants.TYPE_OBJECT); + } - }); + }); } - } else if (entrySchemaType.equalsIgnoreCase(ToscaSchemaConstants.TYPE_STRING) - || entrySchemaType.equalsIgnoreCase(ToscaSchemaConstants.TYPE_INTEGER) - || entrySchemaType.equalsIgnoreCase(ToscaSchemaConstants.TYPE_FLOAT)) { + } else if (entrySchemaType + .equalsIgnoreCase(ToscaSchemaConstants.TYPE_STRING) + || entrySchemaType.equalsIgnoreCase(ToscaSchemaConstants.TYPE_INTEGER) + || entrySchemaType.equalsIgnoreCase(ToscaSchemaConstants.TYPE_FLOAT)) { JSONObject entrySchemaObject = new JSONObject(); parseConstraints(entrySchemaMap, entrySchemaObject); + parseMetadataPossibleValues(entrySchemaMap, entrySchemaObject); String jsontype = JsonEditorSchemaConstants.TYPE_STRING; if (entrySchemaType.equalsIgnoreCase(ToscaSchemaConstants.TYPE_INTEGER) - || entrySchemaType.equalsIgnoreCase(ToscaSchemaConstants.TYPE_FLOAT)) { + || entrySchemaType + .equalsIgnoreCase(ToscaSchemaConstants.TYPE_FLOAT)) { jsontype = JsonEditorSchemaConstants.TYPE_INTEGER; } if (childNodeMap.get(ToscaSchemaConstants.TYPE) != null) { // Only known value of type is String for now if (childNodeMap.get(ToscaSchemaConstants.TYPE) instanceof String) { - String typeValue = (String) childNodeMap.get(ToscaSchemaConstants.TYPE); - if (typeValue.equalsIgnoreCase(ToscaSchemaConstants.TYPE_LIST)) { + String typeValue = + (String) childNodeMap.get(ToscaSchemaConstants.TYPE); + if (typeValue + .equalsIgnoreCase(ToscaSchemaConstants.TYPE_LIST)) { // Custom key for JSON Editor and UI rendering childObject.put(JsonEditorSchemaConstants.CUSTOM_KEY_FORMAT, - JsonEditorSchemaConstants.FORMAT_SELECT); + JsonEditorSchemaConstants.FORMAT_SELECT); // childObject.put(JsonEditorSchemaConstants.UNIQUE_ITEMS, // JsonEditorSchemaConstants.TRUE); } @@ -299,7 +395,8 @@ public class ToscaYamlToJsonConvertor { } } - private void attachEntrySchemaJsonObject(JSONObject childObject, JSONObject entrySchemaObject, String dataType) { + private void attachEntrySchemaJsonObject(JSONObject childObject, JSONObject entrySchemaObject, + String dataType) { entrySchemaObject.put(JsonEditorSchemaConstants.TYPE, dataType); childObject.put(JsonEditorSchemaConstants.ITEMS, entrySchemaObject); @@ -320,33 +417,40 @@ public class ToscaYamlToJsonConvertor { * toscaKey.length()); } */ - private void parseDescription(LinkedHashMap childNodeMap, JSONObject childObject) { + private void parseDescription(LinkedHashMap childNodeMap, + JSONObject childObject) { if (childNodeMap.get(ToscaSchemaConstants.DESCRIPTION) != null) { - childObject.put(JsonEditorSchemaConstants.TITLE, childNodeMap.get(ToscaSchemaConstants.DESCRIPTION)); + childObject.put(JsonEditorSchemaConstants.TITLE, + childNodeMap.get(ToscaSchemaConstants.DESCRIPTION)); } } - private void parseTypes(String childObjectKey, LinkedHashMap childNodeMap, JSONObject childObject, - Map jsonEntrySchema, LinkedHashMap dataNodes, JSONArray array, - int order) { + private void parseTypes(String childObjectKey, LinkedHashMap childNodeMap, + JSONObject childObject, Map jsonEntrySchema, + LinkedHashMap dataNodes, JSONArray array, int order) { if (childNodeMap.get(ToscaSchemaConstants.TYPE) != null) { // Only known value of type is String for now if (childNodeMap.get(ToscaSchemaConstants.TYPE) instanceof String) { childObject.put(JsonEditorSchemaConstants.PROPERTY_ORDER, order); String typeValue = (String) childNodeMap.get(ToscaSchemaConstants.TYPE); if (typeValue.equalsIgnoreCase(ToscaSchemaConstants.TYPE_INTEGER)) { - childObject.put(JsonEditorSchemaConstants.TYPE, JsonEditorSchemaConstants.TYPE_INTEGER); + childObject.put(JsonEditorSchemaConstants.TYPE, + JsonEditorSchemaConstants.TYPE_INTEGER); } else if (typeValue.equalsIgnoreCase(ToscaSchemaConstants.TYPE_FLOAT)) { - childObject.put(JsonEditorSchemaConstants.TYPE, JsonEditorSchemaConstants.TYPE_INTEGER); + childObject.put(JsonEditorSchemaConstants.TYPE, + JsonEditorSchemaConstants.TYPE_INTEGER); } else if (typeValue.equalsIgnoreCase(ToscaSchemaConstants.TYPE_LIST)) { - childObject.put(JsonEditorSchemaConstants.TYPE, JsonEditorSchemaConstants.TYPE_ARRAY); + childObject.put(JsonEditorSchemaConstants.TYPE, + JsonEditorSchemaConstants.TYPE_ARRAY); // Custom key for JSON Editor and UI rendering childObject.put(JsonEditorSchemaConstants.CUSTOM_KEY_FORMAT, - JsonEditorSchemaConstants.CUSTOM_KEY_FORMAT_TABS_TOP); - childObject.put(JsonEditorSchemaConstants.UNIQUE_ITEMS, JsonEditorSchemaConstants.TRUE); + JsonEditorSchemaConstants.CUSTOM_KEY_FORMAT_TABS_TOP); + childObject.put(JsonEditorSchemaConstants.UNIQUE_ITEMS, + JsonEditorSchemaConstants.TRUE); } else if (typeValue.equalsIgnoreCase(ToscaSchemaConstants.TYPE_MAP)) { - childObject.put(JsonEditorSchemaConstants.TYPE, JsonEditorSchemaConstants.TYPE_OBJECT); + childObject.put(JsonEditorSchemaConstants.TYPE, + JsonEditorSchemaConstants.TYPE_OBJECT); } else if (typeValue.contains(ToscaSchemaConstants.POLICY_DATA)) { JSONArray childArray = new JSONArray(); @@ -358,101 +462,129 @@ public class ToscaYamlToJsonConvertor { JSONObject entrySchemaObject = new JSONObject(); // Need to traverse JSONArray jsonArray = new JSONArray(); - ((LinkedHashMap) dataNodes.get(typeValue)).entrySet().stream().forEach(pmap -> { - if (pmap.getKey().equalsIgnoreCase(ToscaSchemaConstants.PROPERTIES)) { - parseToscaPropertiesForType(childObjectKey, - (LinkedHashMap) pmap.getValue(), entrySchemaObject, childArray, - jsonEntrySchema, dataNodes, true, incrementComplexSimpleTypeOrder()); - jsonEntrySchema.put(typeValue, entrySchemaObject); - dataNodes.remove(typeValue); - attachTypeJsonObject(childObject, entrySchemaObject); - } - }); + ((LinkedHashMap) dataNodes.get(typeValue)).entrySet() + .stream().forEach(pmap -> { + if (pmap.getKey() + .equalsIgnoreCase(ToscaSchemaConstants.PROPERTIES)) { + parseToscaPropertiesForType(childObjectKey, + (LinkedHashMap) pmap.getValue(), + entrySchemaObject, childArray, jsonEntrySchema, dataNodes, + true, incrementComplexSimpleTypeOrder()); + jsonEntrySchema.put(typeValue, entrySchemaObject); + dataNodes.remove(typeValue); + attachTypeJsonObject(childObject, entrySchemaObject); + } + }); } } else { - childObject.put(JsonEditorSchemaConstants.TYPE, JsonEditorSchemaConstants.TYPE_STRING); + childObject.put(JsonEditorSchemaConstants.TYPE, + JsonEditorSchemaConstants.TYPE_STRING); } } if (childNodeMap.get(ToscaSchemaConstants.DEFAULT) != null) { - childObject.put(JsonEditorSchemaConstants.DEFAULT, childNodeMap.get(ToscaSchemaConstants.DEFAULT)); + childObject.put(JsonEditorSchemaConstants.DEFAULT, + childNodeMap.get(ToscaSchemaConstants.DEFAULT)); } } } - private void parseConstraints(LinkedHashMap childNodeMap, JSONObject childObject) { + private void parseConstraints(LinkedHashMap childNodeMap, + JSONObject childObject) { if (childNodeMap.containsKey(ToscaSchemaConstants.CONSTRAINTS) - && childNodeMap.get(ToscaSchemaConstants.CONSTRAINTS) != null) { - List> constraintsList = (List>) childNodeMap + && childNodeMap.get(ToscaSchemaConstants.CONSTRAINTS) != null) { + List> constraintsList = + (List>) childNodeMap .get(ToscaSchemaConstants.CONSTRAINTS); constraintsList.stream().forEach(c -> { if (c instanceof Map) { c.entrySet().stream().forEach(constraint -> { if (constraint.getKey().equalsIgnoreCase(ToscaSchemaConstants.MIN_LENGTH) - || constraint.getKey().equalsIgnoreCase(ToscaSchemaConstants.GREATER_OR_EQUAL)) { - // For String min_lenghth is minimum length whereas for number, it will be + || constraint.getKey() + .equalsIgnoreCase(ToscaSchemaConstants.GREATER_OR_EQUAL)) { + // For String min_lenghth is minimum length whereas for number, it will + // be // minimum or greater than to the defined value if (childNodeMap.containsKey(ToscaSchemaConstants.TYPE) - && (childNodeMap.get(ToscaSchemaConstants.TYPE) instanceof String) - && ((String) childNodeMap.get(ToscaSchemaConstants.TYPE)) - .equalsIgnoreCase(ToscaSchemaConstants.TYPE_STRING)) { - childObject.put(JsonEditorSchemaConstants.MIN_LENGTH, constraint.getValue()); + && (childNodeMap.get(ToscaSchemaConstants.TYPE) instanceof String) + && ((String) childNodeMap.get(ToscaSchemaConstants.TYPE)) + .equalsIgnoreCase(ToscaSchemaConstants.TYPE_STRING)) { + childObject.put(JsonEditorSchemaConstants.MIN_LENGTH, + constraint.getValue()); } else { - childObject.put(JsonEditorSchemaConstants.MINIMUM, constraint.getValue()); + childObject.put(JsonEditorSchemaConstants.MINIMUM, + constraint.getValue()); } - } else if (constraint.getKey().equalsIgnoreCase(ToscaSchemaConstants.MAX_LENGTH) - || constraint.getKey().equalsIgnoreCase(ToscaSchemaConstants.LESS_OR_EQUAL)) { - // For String max_lenghth is maximum length whereas for number, it will be + } else if (constraint.getKey() + .equalsIgnoreCase(ToscaSchemaConstants.MAX_LENGTH) + || constraint.getKey() + .equalsIgnoreCase(ToscaSchemaConstants.LESS_OR_EQUAL)) { + // For String max_lenghth is maximum length whereas for number, it will + // be // maximum or less than the defined value if (childNodeMap.containsKey(ToscaSchemaConstants.TYPE) - && (childNodeMap.get(ToscaSchemaConstants.TYPE) instanceof String) - && ((String) childNodeMap.get(ToscaSchemaConstants.TYPE)) - .equalsIgnoreCase(ToscaSchemaConstants.TYPE_STRING)) { - childObject.put(JsonEditorSchemaConstants.MAX_LENGTH, constraint.getValue()); + && (childNodeMap.get(ToscaSchemaConstants.TYPE) instanceof String) + && ((String) childNodeMap.get(ToscaSchemaConstants.TYPE)) + .equalsIgnoreCase(ToscaSchemaConstants.TYPE_STRING)) { + childObject.put(JsonEditorSchemaConstants.MAX_LENGTH, + constraint.getValue()); } else { - childObject.put(JsonEditorSchemaConstants.MAXIMUM, constraint.getValue()); + childObject.put(JsonEditorSchemaConstants.MAXIMUM, + constraint.getValue()); } - } else if (constraint.getKey().equalsIgnoreCase(ToscaSchemaConstants.LESS_THAN)) { - childObject.put(JsonEditorSchemaConstants.EXCLUSIVE_MAXIMUM, constraint.getValue()); - } else if (constraint.getKey().equalsIgnoreCase(ToscaSchemaConstants.GREATER_THAN)) { - childObject.put(JsonEditorSchemaConstants.EXCLUSIVE_MINIMUM, constraint.getValue()); - } else if (constraint.getKey().equalsIgnoreCase(ToscaSchemaConstants.IN_RANGE)) { + } else if (constraint.getKey() + .equalsIgnoreCase(ToscaSchemaConstants.LESS_THAN)) { + childObject.put(JsonEditorSchemaConstants.EXCLUSIVE_MAXIMUM, + constraint.getValue()); + } else if (constraint.getKey() + .equalsIgnoreCase(ToscaSchemaConstants.GREATER_THAN)) { + childObject.put(JsonEditorSchemaConstants.EXCLUSIVE_MINIMUM, + constraint.getValue()); + } else if (constraint.getKey() + .equalsIgnoreCase(ToscaSchemaConstants.IN_RANGE)) { if (constraint.getValue() instanceof ArrayList) { if (childNodeMap.containsKey(ToscaSchemaConstants.TYPE) - && (childNodeMap.get(ToscaSchemaConstants.TYPE) instanceof String) - && ((String) childNodeMap.get(ToscaSchemaConstants.TYPE)) - .equalsIgnoreCase(ToscaSchemaConstants.TYPE_STRING)) { + && (childNodeMap + .get(ToscaSchemaConstants.TYPE) instanceof String) + && ((String) childNodeMap.get(ToscaSchemaConstants.TYPE)) + .equalsIgnoreCase(ToscaSchemaConstants.TYPE_STRING)) { childObject.put(JsonEditorSchemaConstants.MIN_LENGTH, - ((ArrayList) constraint.getValue()).get(0)); + ((ArrayList) constraint.getValue()).get(0)); childObject.put(JsonEditorSchemaConstants.MAX_LENGTH, - ((ArrayList) constraint.getValue()).get(1)); + ((ArrayList) constraint.getValue()).get(1)); } else { childObject.put(JsonEditorSchemaConstants.MINIMUM, - ((ArrayList) constraint.getValue()).get(0)); + ((ArrayList) constraint.getValue()).get(0)); childObject.put(JsonEditorSchemaConstants.MAXIMUM, - ((ArrayList) constraint.getValue()).get(1)); + ((ArrayList) constraint.getValue()).get(1)); } } - } else if (constraint.getKey().equalsIgnoreCase(ToscaSchemaConstants.VALID_VALUES)) { + } else if (constraint.getKey() + .equalsIgnoreCase(ToscaSchemaConstants.VALID_VALUES)) { JSONArray validValuesArray = new JSONArray(); if (constraint.getValue() instanceof ArrayList) { - boolean processDictionary = ((ArrayList) constraint.getValue()).stream() - .anyMatch(value -> (value instanceof String - && ((String) value).contains(ToscaSchemaConstants.DICTIONARY))); + boolean processDictionary = + ((ArrayList) constraint.getValue()).stream().anyMatch( + value -> (value instanceof String && ((String) value) + .contains(ToscaSchemaConstants.DICTIONARY))); if (!processDictionary) { - ((ArrayList) constraint.getValue()).stream().forEach(value -> { - validValuesArray.put(value); - }); - childObject.put(JsonEditorSchemaConstants.ENUM, validValuesArray); + ((ArrayList) constraint.getValue()).stream() + .forEach(value -> { + validValuesArray.put(value); + }); + childObject.put(JsonEditorSchemaConstants.ENUM, + validValuesArray); } else { - ((ArrayList) constraint.getValue()).stream().forEach(value -> { - if ((value instanceof String - && ((String) value).contains(ToscaSchemaConstants.DICTIONARY))) { - processDictionaryElements(childObject, (String) value); - } + ((ArrayList) constraint.getValue()).stream() + .forEach(value -> { + if ((value instanceof String && ((String) value) + .contains(ToscaSchemaConstants.DICTIONARY))) { + processDictionaryElements(childObject, + (String) value); + } - }); + }); } } @@ -464,8 +596,117 @@ public class ToscaYamlToJsonConvertor { } } + private void parseMetadataPossibleValues(LinkedHashMap childNodeMap, + JSONObject childObject) { + if (childNodeMap.containsKey(ToscaSchemaConstants.METADATA) + && childNodeMap.get(ToscaSchemaConstants.METADATA) != null) { + LinkedHashMap metadataMap = + (LinkedHashMap) childNodeMap.get(ToscaSchemaConstants.METADATA); + if (metadataMap instanceof Map) { + metadataMap.entrySet().stream().forEach(constraint -> { + if (constraint.getKey() + .equalsIgnoreCase(ToscaSchemaConstants.METADATA_CLAMP_POSSIBLE_VALUES)) { + JSONArray validValuesArray = new JSONArray(); + + if (constraint.getValue() instanceof ArrayList) { + boolean processDictionary = ((ArrayList) constraint.getValue()) + .stream().anyMatch(value -> (value instanceof String + && ((String) value).contains(ToscaSchemaConstants.DICTIONARY))); + if (processDictionary) { + ((ArrayList) constraint.getValue()).stream().forEach(value -> { + if ((value instanceof String && ((String) value) + .contains(ToscaSchemaConstants.DICTIONARY))) { + processDictionaryElements(childObject, (String) value); + } + + }); + + } + } + + } + }); + } + } + } + private void processDictionaryElements(JSONObject childObject, String dictionaryReference) { + if (dictionaryReference.contains("#")) { + String[] dictionaryKeyArray = dictionaryReference + .substring(dictionaryReference.indexOf(ToscaSchemaConstants.DICTIONARY) + 11, + dictionaryReference.length()) + .split("#"); + // We support only one # as of now. + List cldsDictionaryElements = null; + List subDictionaryElements = null; + if (dictionaryKeyArray != null && dictionaryKeyArray.length == 2) { + cldsDictionaryElements = dictionaryService.getDictionary(dictionaryKeyArray[0]) + .getDictionaryElements().stream().collect(Collectors.toList()); + subDictionaryElements = dictionaryService.getDictionary(dictionaryKeyArray[1]) + .getDictionaryElements().stream().collect(Collectors.toList()); + + if (cldsDictionaryElements != null) { + List subCldsDictionaryNames = subDictionaryElements.stream() + .map(DictionaryElement::getShortName).collect(Collectors.toList()); + JSONArray jsonArray = new JSONArray(); + + Optional.ofNullable(cldsDictionaryElements).get().stream().forEach(c -> { + JSONObject jsonObject = new JSONObject(); + jsonObject.put(JsonEditorSchemaConstants.TYPE, getJsonType(c.getType())); + if (c.getType() != null + && c.getType().equalsIgnoreCase(ToscaSchemaConstants.TYPE_STRING)) { + jsonObject.put(JsonEditorSchemaConstants.MIN_LENGTH, 1); + } + jsonObject.put(JsonEditorSchemaConstants.ID, c.getName()); + jsonObject.put(JsonEditorSchemaConstants.LABEL, c.getShortName()); + jsonObject.put(JsonEditorSchemaConstants.OPERATORS, subCldsDictionaryNames); + jsonArray.put(jsonObject); + });; + JSONObject filterObject = new JSONObject(); + filterObject.put(JsonEditorSchemaConstants.FILTERS, jsonArray); + + childObject.put(JsonEditorSchemaConstants.TYPE, + JsonEditorSchemaConstants.TYPE_QBLDR); + // TO invoke validation on such parameters + childObject.put(JsonEditorSchemaConstants.MIN_LENGTH, 1); + childObject.put(JsonEditorSchemaConstants.QSSCHEMA, filterObject); + + } + } + } else { + String dictionaryKey = dictionaryReference.substring( + dictionaryReference.indexOf(ToscaSchemaConstants.DICTIONARY) + 11, + dictionaryReference.length()); + if (dictionaryKey != null) { + List cldsDictionaryElements = + dictionaryService.getDictionary(dictionaryKey).getDictionaryElements().stream() + .collect(Collectors.toList()); + if (cldsDictionaryElements != null) { + List cldsDictionaryNames = new ArrayList<>(); + List cldsDictionaryFullNames = new ArrayList<>(); + cldsDictionaryElements.stream().forEach(c -> { + // Json type will be translated before Policy creation + if (c.getType() != null && !c.getType().equalsIgnoreCase("json")) { + cldsDictionaryFullNames.add(c.getName()); + } + cldsDictionaryNames.add(c.getShortName()); + }); + + if (!cldsDictionaryFullNames.isEmpty()) { + childObject.put(JsonEditorSchemaConstants.ENUM, cldsDictionaryFullNames); + // Add Enum titles for generated translated values during JSON instance + // generation + JSONObject enumTitles = new JSONObject(); + enumTitles.put(JsonEditorSchemaConstants.ENUM_TITLES, cldsDictionaryNames); + childObject.put(JsonEditorSchemaConstants.OPTIONS, enumTitles); + } else { + childObject.put(JsonEditorSchemaConstants.ENUM, cldsDictionaryNames); + } + + } + } + } } private String getJsonType(String toscaType) { @@ -480,4 +721,4 @@ public class ToscaYamlToJsonConvertor { return jsonType; } -} \ No newline at end of file +} diff --git a/src/main/java/org/onap/clamp/loop/template/LoopElementModel.java b/src/main/java/org/onap/clamp/loop/template/LoopElementModel.java index 0a0831bb7..e6ba98151 100644 --- a/src/main/java/org/onap/clamp/loop/template/LoopElementModel.java +++ b/src/main/java/org/onap/clamp/loop/template/LoopElementModel.java @@ -24,13 +24,11 @@ package org.onap.clamp.loop.template; import com.google.gson.annotations.Expose; - import java.io.Serializable; import java.util.HashSet; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; - import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; @@ -41,7 +39,6 @@ import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.OneToMany; import javax.persistence.Table; - import org.hibernate.annotations.SortNatural; import org.onap.clamp.loop.common.AuditEntity; @@ -79,16 +76,27 @@ public class LoopElementModel extends AuditEntity implements Serializable { @Column(nullable = false, name = "loop_element_type") private String loopElementType; + /** + * This variable is used to display the micro-service name in the SVG. + */ + @Expose + @Column(name = "short_name") + private String shortName; + /** * This variable is used to store the type mentioned in the micro-service * blueprint. */ @Expose - @ManyToMany(fetch = FetchType.EAGER, cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH }) - @JoinTable(name = "loopelementmodels_to_policymodels", - joinColumns = @JoinColumn(name = "loop_element_name", referencedColumnName = "name"), - inverseJoinColumns = { @JoinColumn(name = "policy_model_type", referencedColumnName = "policy_model_type"), - @JoinColumn(name = "policy_model_version", referencedColumnName = "version") }) + @ManyToMany( + fetch = FetchType.EAGER, + cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}) + @JoinTable( + name = "loopelementmodels_to_policymodels", + joinColumns = @JoinColumn(name = "loop_element_name", referencedColumnName = "name"), + inverseJoinColumns = { + @JoinColumn(name = "policy_model_type", referencedColumnName = "policy_model_type"), + @JoinColumn(name = "policy_model_version", referencedColumnName = "version")}) @SortNatural private SortedSet policyModels = new TreeSet<>(); @@ -97,7 +105,7 @@ public class LoopElementModel extends AuditEntity implements Serializable { /** * policyModels getter. - * + * * @return the policyModel */ public SortedSet getPolicyModels() { @@ -106,7 +114,7 @@ public class LoopElementModel extends AuditEntity implements Serializable { /** * Method to add a new policyModel to the list. - * + * * @param policyModel The policy model */ public void addPolicyModel(PolicyModel policyModel) { @@ -116,7 +124,7 @@ public class LoopElementModel extends AuditEntity implements Serializable { /** * name getter. - * + * * @return the name */ public String getName() { @@ -125,7 +133,7 @@ public class LoopElementModel extends AuditEntity implements Serializable { /** * name setter. - * + * * @param name the name to set */ public void setName(String name) { @@ -134,7 +142,7 @@ public class LoopElementModel extends AuditEntity implements Serializable { /** * blueprint getter. - * + * * @return the blueprint */ public String getBlueprint() { @@ -143,7 +151,7 @@ public class LoopElementModel extends AuditEntity implements Serializable { /** * blueprint setter. - * + * * @param blueprint the blueprint to set */ public void setBlueprint(String blueprint) { @@ -151,10 +159,8 @@ public class LoopElementModel extends AuditEntity implements Serializable { } /** - * loopElementType getter. - * * dcaeBlueprintId getter. - * + * * @return the dcaeBlueprintId */ public String getDcaeBlueprintId() { @@ -163,7 +169,7 @@ public class LoopElementModel extends AuditEntity implements Serializable { /** * dcaeBlueprintId setter. - * + * * @param dcaeBlueprintId the dcaeBlueprintId to set */ public void setDcaeBlueprintId(String dcaeBlueprintId) { @@ -171,6 +177,8 @@ public class LoopElementModel extends AuditEntity implements Serializable { } /** + * loopElementType getter. + * * @return the loopElementType */ public String getLoopElementType() { @@ -179,16 +187,32 @@ public class LoopElementModel extends AuditEntity implements Serializable { /** * loopElementType setter. - * + * * @param loopElementType the loopElementType to set */ public void setLoopElementType(String loopElementType) { this.loopElementType = loopElementType; } + /** + * shortName getter. + * + * @return the shortName + */ + public String getShortName() { + return shortName; + } + + /** + * @param shortName the shortName to set. + */ + public void setShortName(String shortName) { + this.shortName = shortName; + } + /** * usedByLoopTemplates getter. - * + * * @return the usedByLoopTemplates */ public Set getUsedByLoopTemplates() { @@ -203,11 +227,11 @@ public class LoopElementModel extends AuditEntity implements Serializable { /** * Constructor. - * - * @param name The name id + * + * @param name The name id * @param loopElementType The type of loop element - * @param blueprint The blueprint defined for dcae that contains the - * policy type to use + * @param blueprint The blueprint defined for dcae that contains the + * policy type to use */ public LoopElementModel(String name, String loopElementType, String blueprint) { this.name = name; diff --git a/src/main/java/org/onap/clamp/loop/template/LoopTemplate.java b/src/main/java/org/onap/clamp/loop/template/LoopTemplate.java index 3e90c1e5b..54096cb8f 100644 --- a/src/main/java/org/onap/clamp/loop/template/LoopTemplate.java +++ b/src/main/java/org/onap/clamp/loop/template/LoopTemplate.java @@ -24,14 +24,13 @@ package org.onap.clamp.loop.template; import com.google.gson.annotations.Expose; - import java.io.Serializable; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; - import javax.persistence.CascadeType; import javax.persistence.Column; +import javax.persistence.Convert; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.Id; @@ -39,7 +38,6 @@ import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.Table; - import org.hibernate.annotations.SortNatural; import org.onap.clamp.loop.common.AuditEntity; import org.onap.clamp.loop.service.Service; @@ -74,12 +72,18 @@ public class LoopTemplate extends AuditEntity implements Serializable { private String svgRepresentation; @Expose - @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "loopTemplate", orphanRemoval = true) + @OneToMany( + cascade = CascadeType.ALL, + fetch = FetchType.EAGER, + mappedBy = "loopTemplate", + orphanRemoval = true) @SortNatural private SortedSet loopElementModelsUsed = new TreeSet<>(); @Expose - @ManyToOne(fetch = FetchType.EAGER, cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH }) + @ManyToOne( + fetch = FetchType.EAGER, + cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}) @JoinColumn(name = "service_uuid") private Service modelService; @@ -91,9 +95,17 @@ public class LoopTemplate extends AuditEntity implements Serializable { @Column(name = "unique_blueprint", columnDefinition = "boolean default false") private boolean uniqueBlueprint; + /** + * Type of Loop allowed to be created. + */ + @Expose + @Column(name = "allowed_loop_type") + @Convert(converter = LoopTypeConvertor.class) + private LoopType allowedLoopType = LoopType.CLOSED; + /** * name getter. - * + * * @return the name */ public String getName() { @@ -102,7 +114,7 @@ public class LoopTemplate extends AuditEntity implements Serializable { /** * name setter. - * + * * @param name the name to set */ public void setName(String name) { @@ -111,7 +123,7 @@ public class LoopTemplate extends AuditEntity implements Serializable { /** * blueprint getter. - * + * * @return the blueprint */ public String getBlueprint() { @@ -120,7 +132,7 @@ public class LoopTemplate extends AuditEntity implements Serializable { /** * dcaeBlueprintId getter. - * + * * @return the dcaeBlueprintId */ public String getDcaeBlueprintId() { @@ -129,7 +141,7 @@ public class LoopTemplate extends AuditEntity implements Serializable { /** * dcaeBlueprintId setter. - * + * * @param dcaeBlueprintId the dcaeBlueprintId to set */ public void setDcaeBlueprintId(String dcaeBlueprintId) { @@ -138,7 +150,7 @@ public class LoopTemplate extends AuditEntity implements Serializable { /** * blueprint setter. - * + * * @param blueprint the blueprint to set */ public void setBlueprint(String blueprint) { @@ -152,7 +164,7 @@ public class LoopTemplate extends AuditEntity implements Serializable { /** * svgRepresentation getter. - * + * * @return the svgRepresentation */ public String getSvgRepresentation() { @@ -161,7 +173,7 @@ public class LoopTemplate extends AuditEntity implements Serializable { /** * svgRepresentation setter. - * + * * @param svgRepresentation the svgRepresentation to set */ public void setSvgRepresentation(String svgRepresentation) { @@ -170,7 +182,7 @@ public class LoopTemplate extends AuditEntity implements Serializable { /** * loopElementModelsUsed getter. - * + * * @return the loopElementModelsUsed */ public SortedSet getLoopElementModelsUsed() { @@ -179,7 +191,7 @@ public class LoopTemplate extends AuditEntity implements Serializable { /** * maximumInstancesAllowed getter. - * + * * @return the maximumInstancesAllowed */ public Integer getMaximumInstancesAllowed() { @@ -188,17 +200,35 @@ public class LoopTemplate extends AuditEntity implements Serializable { /** * maximumInstancesAllowed setter. - * + * * @param maximumInstancesAllowed the maximumInstancesAllowed to set */ public void setMaximumInstancesAllowed(Integer maximumInstancesAllowed) { this.maximumInstancesAllowed = maximumInstancesAllowed; } + /** + * allowedLoopType getter. + * + * @return the allowedLoopType Type of Loop allowed to be created + */ + public LoopType getAllowedLoopType() { + return allowedLoopType; + } + + /** + * allowedLoopType setter. + * + * @param allowedLoopType the allowedLoopType to set + */ + public void setAllowedLoopType(LoopType allowedLoopType) { + this.allowedLoopType = allowedLoopType; + } + /** * Add list of loopElements to the current template, each loopElementModel is * added at the end of the list so the flowOrder is computed automatically. - * + * * @param loopElementModels The loopElementModel set to add */ public void addLoopElementModels(Set loopElementModels) { @@ -210,12 +240,12 @@ public class LoopTemplate extends AuditEntity implements Serializable { /** * Add a loopElement to the current template, the loopElementModel is added at * the end of the list so the flowOrder is computed automatically. - * + * * @param loopElementModel The loopElementModel to add */ public void addLoopElementModel(LoopElementModel loopElementModel) { - LoopTemplateLoopElementModel jointEntry = new LoopTemplateLoopElementModel(this, loopElementModel, - this.loopElementModelsUsed.size()); + LoopTemplateLoopElementModel jointEntry = new LoopTemplateLoopElementModel(this, + loopElementModel, this.loopElementModelsUsed.size()); this.loopElementModelsUsed.add(jointEntry); loopElementModel.getUsedByLoopTemplates().add(jointEntry); } @@ -223,20 +253,20 @@ public class LoopTemplate extends AuditEntity implements Serializable { /** * Add a loopElement model to the current template, the flow order must be * specified manually. - * + * * @param loopElementModel The loopElementModel to add - * @param listPosition The position in the flow + * @param listPosition The position in the flow */ public void addLoopElementModel(LoopElementModel loopElementModel, Integer listPosition) { - LoopTemplateLoopElementModel jointEntry = new LoopTemplateLoopElementModel(this, loopElementModel, - listPosition); + LoopTemplateLoopElementModel jointEntry = + new LoopTemplateLoopElementModel(this, loopElementModel, listPosition); this.loopElementModelsUsed.add(jointEntry); loopElementModel.getUsedByLoopTemplates().add(jointEntry); } /** * modelService getter. - * + * * @return the modelService */ public Service getModelService() { @@ -245,7 +275,7 @@ public class LoopTemplate extends AuditEntity implements Serializable { /** * modelService setter. - * + * * @param modelService the modelService to set */ public void setModelService(Service modelService) { @@ -254,7 +284,7 @@ public class LoopTemplate extends AuditEntity implements Serializable { /** * uniqueBlueprint getter. - * + * * @return the uniqueBlueprint */ public boolean getUniqueBlueprint() { @@ -270,17 +300,17 @@ public class LoopTemplate extends AuditEntity implements Serializable { /** * Constructor. - * - * @param name The loop template name id - * @param blueprint The blueprint containing all microservices (legacy - * case) - * @param svgRepresentation The svg representation of that loop template + * + * @param name The loop template name id + * @param blueprint The blueprint containing all microservices (legacy + * case) + * @param svgRepresentation The svg representation of that loop template * @param maxInstancesAllowed The maximum number of instances that can be - * created from that template - * @param service The service associated to that loop template + * created from that template + * @param service The service associated to that loop template */ - public LoopTemplate(String name, String blueprint, String svgRepresentation, Integer maxInstancesAllowed, - Service service) { + public LoopTemplate(String name, String blueprint, String svgRepresentation, + Integer maxInstancesAllowed, Service service) { this.name = name; this.setBlueprint(blueprint); this.svgRepresentation = svgRepresentation; @@ -322,17 +352,17 @@ public class LoopTemplate extends AuditEntity implements Serializable { /** * Generate the loop template name. * - * @param serviceName The service name - * @param serviceVersion The service version - * @param resourceName The resource name + * @param serviceName The service name + * @param serviceVersion The service version + * @param resourceName The resource name * @param blueprintFileName The blueprint file name * @return The generated loop template name */ - public static String generateLoopTemplateName(String serviceName, String serviceVersion, String resourceName, - String blueprintFileName) { + public static String generateLoopTemplateName(String serviceName, String serviceVersion, + String resourceName, String blueprintFileName) { StringBuilder buffer = new StringBuilder("LOOP_TEMPLATE_").append(serviceName).append("_v") - .append(serviceVersion).append("_").append(resourceName).append("_") - .append(blueprintFileName.replaceAll(".yaml", "")); + .append(serviceVersion).append("_").append(resourceName).append("_") + .append(blueprintFileName.replaceAll(".yaml", "")); return buffer.toString().replace('.', '_').replaceAll(" ", ""); } } diff --git a/src/main/java/org/onap/clamp/loop/template/LoopTemplateLoopElementModelId.java b/src/main/java/org/onap/clamp/loop/template/LoopTemplateLoopElementModelId.java index 3e2f8ad42..cac5f088a 100644 --- a/src/main/java/org/onap/clamp/loop/template/LoopTemplateLoopElementModelId.java +++ b/src/main/java/org/onap/clamp/loop/template/LoopTemplateLoopElementModelId.java @@ -24,9 +24,7 @@ package org.onap.clamp.loop.template; import com.google.gson.annotations.Expose; - import java.io.Serializable; - import javax.persistence.Column; import javax.persistence.Embeddable; @@ -55,8 +53,8 @@ public class LoopTemplateLoopElementModelId implements Serializable { /** * Constructor. - * - * @param loopTemplateName The loop template name id + * + * @param loopTemplateName The loop template name id * @param microServiceModelName THe micro Service name id */ public LoopTemplateLoopElementModelId(String loopTemplateName, String microServiceModelName) { @@ -66,7 +64,7 @@ public class LoopTemplateLoopElementModelId implements Serializable { /** * loopTemplateName getter. - * + * * @return the loopTemplateName */ public String getLoopTemplateName() { @@ -75,7 +73,7 @@ public class LoopTemplateLoopElementModelId implements Serializable { /** * loopTemplateName setter. - * + * * @param loopTemplateName the loopTemplateName to set */ public void setLoopTemplateName(String loopTemplateName) { @@ -84,7 +82,7 @@ public class LoopTemplateLoopElementModelId implements Serializable { /** * microServiceModelName getter. - * + * * @return the microServiceModelName */ public String getLoopElementModelName() { @@ -93,7 +91,7 @@ public class LoopTemplateLoopElementModelId implements Serializable { /** * loopElementModelName setter. - * + * * @param loopElementModelName the loopElementModelName to set */ public void setLoopElementModelName(String loopElementModelName) { diff --git a/src/main/java/org/onap/clamp/loop/template/LoopTemplatesService.java b/src/main/java/org/onap/clamp/loop/template/LoopTemplatesService.java new file mode 100644 index 000000000..279d602c8 --- /dev/null +++ b/src/main/java/org/onap/clamp/loop/template/LoopTemplatesService.java @@ -0,0 +1,111 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2020 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============================================ + * =================================================================== + * + */ + +package org.onap.clamp.loop.template; + +import java.util.List; +import org.onap.clamp.clds.exception.sdc.controller.BlueprintParserException; +import org.onap.clamp.clds.sdc.controller.installer.BlueprintMicroService; +import org.onap.clamp.clds.sdc.controller.installer.BlueprintParser; +import org.onap.clamp.clds.sdc.controller.installer.ChainGenerator; +import org.onap.clamp.clds.util.drawing.SvgFacade; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class LoopTemplatesService { + + private final LoopTemplatesRepository loopTemplatesRepository; + + @Autowired + ChainGenerator chainGenerator; + + @Autowired + private SvgFacade svgFacade; + + /** + * Constructor. + */ + @Autowired + public LoopTemplatesService(LoopTemplatesRepository loopTemplatesRepository) { + this.loopTemplatesRepository = loopTemplatesRepository; + + } + + public LoopTemplate saveOrUpdateLoopTemplate(LoopTemplate loopTemplate) { + return loopTemplatesRepository.save(loopTemplate); + } + + /** + * Saves or updates loop template Object. + * + * @param templateName the loop template name + * @param loopTemplate the loop template object + * @return the loop template + * @throws BlueprintParserException In case of issues with the blueprint + * parsing + */ + public LoopTemplate saveOrUpdateLoopTemplateByName(String templateName, + LoopTemplate loopTemplate) throws BlueprintParserException { + + if (getLoopTemplate(templateName) != null) { + loopTemplate.setName(getLoopTemplate(templateName).getName()); + } + return saveOrUpdateLoopTemplate(createTemplateFromBlueprint(templateName, loopTemplate)); + } + + public List getLoopTemplateNames() { + return loopTemplatesRepository.getAllLoopTemplateNames(); + } + + public List getAllLoopTemplates() { + return loopTemplatesRepository.findAll(); + } + + public LoopTemplate getLoopTemplate(String name) { + return loopTemplatesRepository.findById(name).orElse(null); + } + + public void deleteLoopTemplate(String name) { + loopTemplatesRepository.deleteById(name); + } + + private LoopTemplate createTemplateFromBlueprint(String templateName, LoopTemplate loopTemplate) + throws BlueprintParserException { + + String blueprintYaml = loopTemplate.getBlueprint(); + List microServicesChain = + chainGenerator.getChainOfMicroServices(BlueprintParser.getMicroServices(blueprintYaml)); + if (microServicesChain.isEmpty()) { + microServicesChain = BlueprintParser.fallbackToOneMicroService(); + } + loopTemplate.setSvgRepresentation(svgFacade.getSvgImage(microServicesChain)); + loopTemplate.setName(templateName); + + LoopTemplate existingTemplate = getLoopTemplate(templateName); + if (existingTemplate != null) { + loopTemplate.setName(existingTemplate.getName()); + } + return loopTemplate; + } +} diff --git a/src/main/java/org/onap/clamp/loop/template/LoopType.java b/src/main/java/org/onap/clamp/loop/template/LoopType.java new file mode 100644 index 000000000..ccbc62a83 --- /dev/null +++ b/src/main/java/org/onap/clamp/loop/template/LoopType.java @@ -0,0 +1,42 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2020 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============================================ + * =================================================================== + * + */ + +package org.onap.clamp.loop.template; + +/** + * Enums for AllowedLoopType in LoopTemplate enity. + * + */ +public enum LoopType { + OPEN("OPEN"), CLOSED("CLOSED"), HYBRID("HYBRID"); + + private String value; + + private LoopType(String value) { + this.value = value; + } + + public String getValue() { + return value; + } +} diff --git a/src/main/java/org/onap/clamp/loop/template/LoopTypeConvertor.java b/src/main/java/org/onap/clamp/loop/template/LoopTypeConvertor.java new file mode 100644 index 000000000..0b05613cb --- /dev/null +++ b/src/main/java/org/onap/clamp/loop/template/LoopTypeConvertor.java @@ -0,0 +1,52 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2020 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============================================ + * =================================================================== + * + */ + +package org.onap.clamp.loop.template; + +import java.util.stream.Stream; +import javax.persistence.AttributeConverter; + +/** + * Attribute Converter to allow using LoopType Enum values in DB and Java classes. + * + */ +public class LoopTypeConvertor implements AttributeConverter { + + @Override + public String convertToDatabaseColumn(LoopType loopType) { + if (loopType == null) { + return null; + } + return loopType.getValue(); + } + + @Override + public LoopType convertToEntityAttribute(String value) { + if (value == null) { + return null; + } + + return Stream.of(LoopType.values()).filter(c -> c.getValue().equals(value)).findFirst() + .orElseThrow(IllegalArgumentException::new); + } +} diff --git a/src/main/java/org/onap/clamp/loop/template/PolicyModel.java b/src/main/java/org/onap/clamp/loop/template/PolicyModel.java index 52f662bb4..d06cb8cff 100644 --- a/src/main/java/org/onap/clamp/loop/template/PolicyModel.java +++ b/src/main/java/org/onap/clamp/loop/template/PolicyModel.java @@ -24,11 +24,9 @@ package org.onap.clamp.loop.template; import com.google.gson.annotations.Expose; - import java.io.Serializable; import java.util.HashSet; import java.util.Set; - import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; @@ -36,7 +34,6 @@ import javax.persistence.Id; import javax.persistence.IdClass; import javax.persistence.ManyToMany; import javax.persistence.Table; - import org.onap.clamp.loop.common.AuditEntity; import org.onap.clamp.util.SemanticVersioning; @@ -83,7 +80,7 @@ public class PolicyModel extends AuditEntity implements Serializable, Comparable /** * usedByElementModels getter. - * + * * @return the usedByElementModels */ public Set getUsedByElementModels() { @@ -92,7 +89,7 @@ public class PolicyModel extends AuditEntity implements Serializable, Comparable /** * policyModelTosca getter. - * + * * @return the policyModelTosca */ public String getPolicyModelTosca() { @@ -101,7 +98,7 @@ public class PolicyModel extends AuditEntity implements Serializable, Comparable /** * policyModelTosca setter. - * + * * @param policyModelTosca the policyModelTosca to set */ public void setPolicyModelTosca(String policyModelTosca) { @@ -110,7 +107,7 @@ public class PolicyModel extends AuditEntity implements Serializable, Comparable /** * policyModelType getter. - * + * * @return the modelType */ public String getPolicyModelType() { @@ -119,7 +116,7 @@ public class PolicyModel extends AuditEntity implements Serializable, Comparable /** * policyModelType setter. - * + * * @param modelType the modelType to set */ public void setPolicyModelType(String modelType) { @@ -128,7 +125,7 @@ public class PolicyModel extends AuditEntity implements Serializable, Comparable /** * version getter. - * + * * @return the version */ public String getVersion() { @@ -137,7 +134,7 @@ public class PolicyModel extends AuditEntity implements Serializable, Comparable /** * version setter. - * + * * @param version the version to set */ public void setVersion(String version) { @@ -147,7 +144,7 @@ public class PolicyModel extends AuditEntity implements Serializable, Comparable /** * policyAcronym getter. - * + * * @return the policyAcronym value */ public String getPolicyAcronym() { @@ -156,7 +153,7 @@ public class PolicyModel extends AuditEntity implements Serializable, Comparable /** * policyAcronym setter. - * + * * @param policyAcronym The policyAcronym to set */ public void setPolicyAcronym(String policyAcronym) { @@ -171,13 +168,14 @@ public class PolicyModel extends AuditEntity implements Serializable, Comparable /** * Constructor. - * - * @param policyType The policyType (referenced in the blueprint + * + * @param policyType The policyType (referenced in the blueprint * @param policyModelTosca The policy tosca model in yaml - * @param version the version like 1.0.0 - * @param policyAcronym Subtype for policy if it exists (could be used by UI) + * @param version the version like 1.0.0 + * @param policyAcronym Subtype for policy if it exists (could be used by UI) */ - public PolicyModel(String policyType, String policyModelTosca, String version, String policyAcronym) { + public PolicyModel(String policyType, String policyModelTosca, String version, + String policyAcronym) { this.policyModelType = policyType; this.policyModelTosca = policyModelTosca; this.version = version; diff --git a/src/main/java/org/onap/clamp/loop/template/PolicyModelsService.java b/src/main/java/org/onap/clamp/loop/template/PolicyModelsService.java index 8e22852a9..0a09dd8d7 100644 --- a/src/main/java/org/onap/clamp/loop/template/PolicyModelsService.java +++ b/src/main/java/org/onap/clamp/loop/template/PolicyModelsService.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights + * Copyright (C) 2020 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -23,24 +23,62 @@ package org.onap.clamp.loop.template; +import com.google.gson.JsonObject; import java.util.List; - +import org.onap.clamp.clds.tosca.ToscaSchemaConstants; +import org.onap.clamp.clds.tosca.ToscaYamlToJsonConvertor; +import org.onap.clamp.util.SemanticVersioning; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class PolicyModelsService { private final PolicyModelsRepository policyModelsRepository; + private ToscaYamlToJsonConvertor toscaYamlToJsonConvertor; @Autowired - public PolicyModelsService(PolicyModelsRepository policyModelrepo) { + public PolicyModelsService(PolicyModelsRepository policyModelrepo, + ToscaYamlToJsonConvertor convertor) { policyModelsRepository = policyModelrepo; + toscaYamlToJsonConvertor = convertor; } public PolicyModel saveOrUpdatePolicyModel(PolicyModel policyModel) { return policyModelsRepository.save(policyModel); } + /** + * Creates or updates the Tosca Policy Model. + * + * @param policyModelType + * The policyModeltype in Tosca yaml + * @param policyModel + * The Policymodel object + * @return The Policy Model + */ + public PolicyModel saveOrUpdateByPolicyModelType(String policyModelType, + String policyModelTosca) { + JsonObject jsonObject = toscaYamlToJsonConvertor.validateAndConvertToJson(policyModelTosca); + + String policyModelTypeName = toscaYamlToJsonConvertor.getValueFromMetadata(jsonObject, + ToscaSchemaConstants.METADATA_POLICY_MODEL_TYPE); + String acronym = toscaYamlToJsonConvertor.getValueFromMetadata(jsonObject, + ToscaSchemaConstants.METADATA_ACRONYM); + PolicyModel model = getPolicyModelByType( + policyModelTypeName != null ? policyModelTypeName : policyModelType); + + if (model == null) { + model = new PolicyModel(policyModelTypeName, policyModelTosca, + SemanticVersioning.incrementMajorVersion(null), acronym); + } else { + model.setVersion(SemanticVersioning + .incrementMajorVersion(model.getVersion() != null ? model.getVersion() : null)); + model.setPolicyModelType(policyModelTypeName); + model.setPolicyAcronym(acronym); + } + return saveOrUpdatePolicyModel(model); + } + public List getAllPolicyModelTypes() { return policyModelsRepository.getAllPolicyModelType(); } @@ -56,4 +94,20 @@ public class PolicyModelsService { public Iterable getAllPolicyModelsByType(String type) { return policyModelsRepository.findByPolicyModelType(type); } + + public PolicyModel getPolicyModelByType(String type) { + List list = policyModelsRepository.findByPolicyModelType(type); + return list.stream().sorted().findFirst().orElse(null); + } + + /** + * Retrieves the Tosca model Yaml string. + * + * @param type The PolicyModelType + * @return The Tosca model Yaml string + */ + public String getPolicyModelTosca(String type) { + PolicyModel policyModel = getPolicyModelByType(type); + return policyModel != null ? policyModel.getPolicyModelTosca() : null; + } } diff --git a/src/main/java/org/onap/clamp/tosca/Dictionary.java b/src/main/java/org/onap/clamp/tosca/Dictionary.java index 7b4e513a2..44b5b6f68 100644 --- a/src/main/java/org/onap/clamp/tosca/Dictionary.java +++ b/src/main/java/org/onap/clamp/tosca/Dictionary.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights + * Copyright (C) 2020 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -24,19 +24,18 @@ package org.onap.clamp.tosca; import com.google.gson.annotations.Expose; - import java.io.Serializable; -import java.util.ArrayList; -import java.util.List; - +import java.util.HashSet; +import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.Id; -import javax.persistence.OneToMany; +import javax.persistence.JoinColumn; +import javax.persistence.JoinTable; +import javax.persistence.ManyToMany; import javax.persistence.Table; - import org.onap.clamp.loop.common.AuditEntity; /** @@ -59,19 +58,27 @@ public class Dictionary extends AuditEntity implements Serializable { @Expose @Column(name = "dictionary_second_level") - private int secondLevelDictionary; + private int secondLevelDictionary = 0; @Expose @Column(name = "dictionary_type") private String subDictionaryType; @Expose - @OneToMany(mappedBy = "dictionary", cascade = CascadeType.ALL, fetch = FetchType.EAGER) - private List dictionaryElements = new ArrayList<>(); + @ManyToMany( + fetch = FetchType.EAGER, + cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}) + @JoinTable( + name = "dictionary_to_dictionaryelements", + joinColumns = @JoinColumn(name = "dictionary_name", referencedColumnName = "name"), + inverseJoinColumns = {@JoinColumn( + name = "dictionary_element_short_name", + referencedColumnName = "short_name")}) + private Set dictionaryElements = new HashSet<>(); /** * name getter. - * + * * @return the name */ public String getName() { @@ -80,7 +87,7 @@ public class Dictionary extends AuditEntity implements Serializable { /** * name setter. - * + * * @param name the name to set */ public void setName(String name) { @@ -89,7 +96,7 @@ public class Dictionary extends AuditEntity implements Serializable { /** * secondLevelDictionary getter. - * + * * @return the secondLevelDictionary */ public int getSecondLevelDictionary() { @@ -98,7 +105,7 @@ public class Dictionary extends AuditEntity implements Serializable { /** * secondLevelDictionary setter. - * + * * @param secondLevelDictionary the secondLevelDictionary to set */ public void setSecondLevelDictionary(int secondLevelDictionary) { @@ -107,7 +114,7 @@ public class Dictionary extends AuditEntity implements Serializable { /** * subDictionaryType getter. - * + * * @return the subDictionaryType */ public String getSubDictionaryType() { @@ -116,7 +123,7 @@ public class Dictionary extends AuditEntity implements Serializable { /** * subDictionaryType setter. - * + * * @param subDictionaryType the subDictionaryType to set */ public void setSubDictionaryType(String subDictionaryType) { @@ -125,20 +132,51 @@ public class Dictionary extends AuditEntity implements Serializable { /** * dictionaryElements getter. - * - * @return the dictionaryElements + * + * @return the dictionaryElements List of dictionary element */ - public List getDictionaryElements() { + public Set getDictionaryElements() { return dictionaryElements; } /** - * dictionaryElements setter. - * - * @param dictionaryElements the dictionaryElements to set + * Method to add a new dictionaryElement to the list. + * + * @param dictionaryElement The dictionary element + */ + public void addDictionaryElements(DictionaryElement dictionaryElement) { + dictionaryElements.add(dictionaryElement); + dictionaryElement.getUsedByDictionaries().add(this); + } + + /** + * Method to delete a dictionaryElement from the list. + * + * @param dictionaryElement The dictionary element */ - public void setDictionaryElements(List dictionaryElements) { - this.dictionaryElements = dictionaryElements; + public void removeDictionaryElement(DictionaryElement dictionaryElement) { + dictionaryElements.remove(dictionaryElement); + dictionaryElement.getUsedByDictionaries().remove(this); + } + + /** + * Default Constructor. + */ + public Dictionary() { + + } + + /** + * Constructor. + * + * @param name The Dictionary name + * @param secondLevelDictionary defines if dictionary is a secondary level + * @param subDictionaryType defines the type of secondary level dictionary + */ + public Dictionary(String name, int secondLevelDictionary, String subDictionaryType) { + this.name = name; + this.secondLevelDictionary = secondLevelDictionary; + this.subDictionaryType = subDictionaryType; } @Override diff --git a/src/main/java/org/onap/clamp/tosca/DictionaryElement.java b/src/main/java/org/onap/clamp/tosca/DictionaryElement.java index e81885f3e..43a3106f5 100644 --- a/src/main/java/org/onap/clamp/tosca/DictionaryElement.java +++ b/src/main/java/org/onap/clamp/tosca/DictionaryElement.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights + * Copyright (C) 2020 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -24,17 +24,15 @@ package org.onap.clamp.tosca; import com.google.gson.annotations.Expose; - import java.io.Serializable; - -import javax.persistence.CascadeType; +import java.util.HashSet; +import java.util.Set; import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.FetchType; import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; +import javax.persistence.ManyToMany; import javax.persistence.Table; - import org.onap.clamp.loop.common.AuditEntity; /** @@ -51,32 +49,31 @@ public class DictionaryElement extends AuditEntity implements Serializable { @Id @Expose - @Column(nullable = false, name = "name", unique = true) - private String name; + @Column(nullable = false, name = "short_name") + private String shortName; @Expose - @Column(nullable = false, name = "short_name", unique = true) - private String shortName; + @Column(nullable = false, name = "name") + private String name; @Expose - @Column(name = "description") + @Column(nullable = false, name = "description") private String description; @Expose @Column(nullable = false, name = "type") private String type; - @Column(name = "subdictionary_id", nullable = false) @Expose + @Column(nullable = true, name = "subdictionary_name") private String subDictionary; - @ManyToOne(cascade = CascadeType.ALL) - @JoinColumn(name = "dictionary_id") - private Dictionary dictionary; + @ManyToMany(mappedBy = "dictionaryElements", fetch = FetchType.EAGER) + private Set usedByDictionaries = new HashSet<>(); /** * name getter. - * + * * @return the name */ public String getName() { @@ -85,7 +82,7 @@ public class DictionaryElement extends AuditEntity implements Serializable { /** * name setter. - * + * * @param name the name to set */ public void setName(String name) { @@ -94,7 +91,7 @@ public class DictionaryElement extends AuditEntity implements Serializable { /** * shortName getter. - * + * * @return the shortName */ public String getShortName() { @@ -103,7 +100,7 @@ public class DictionaryElement extends AuditEntity implements Serializable { /** * shortName setter. - * + * * @param shortName the shortName to set */ public void setShortName(String shortName) { @@ -112,7 +109,7 @@ public class DictionaryElement extends AuditEntity implements Serializable { /** * description getter. - * + * * @return the description */ public String getDescription() { @@ -121,7 +118,7 @@ public class DictionaryElement extends AuditEntity implements Serializable { /** * description setter. - * + * * @param description the description to set */ public void setDescription(String description) { @@ -130,7 +127,7 @@ public class DictionaryElement extends AuditEntity implements Serializable { /** * type getter. - * + * * @return the type */ public String getType() { @@ -139,7 +136,7 @@ public class DictionaryElement extends AuditEntity implements Serializable { /** * type setter. - * + * * @param type the type to set */ public void setType(String type) { @@ -148,7 +145,7 @@ public class DictionaryElement extends AuditEntity implements Serializable { /** * subDictionary getter. - * + * * @return the subDictionary */ public String getSubDictionary() { @@ -157,7 +154,7 @@ public class DictionaryElement extends AuditEntity implements Serializable { /** * subDictionary setter. - * + * * @param subDictionary the subDictionary to set */ public void setSubDictionary(String subDictionary) { @@ -165,21 +162,21 @@ public class DictionaryElement extends AuditEntity implements Serializable { } /** - * dictionary getter. - * - * @return the dictionary + * usedByDictionaries getter. + * + * @return the usedByDictionaries */ - public Dictionary getDictionary() { - return dictionary; + public Set getUsedByDictionaries() { + return usedByDictionaries; } /** - * dictionary setter. - * - * @param dictionary the dictionary to set + * usedByDictionaries setter. + * + * @param usedByDictionaries the usedByDictionaries to set */ - public void setDictionary(Dictionary dictionary) { - this.dictionary = dictionary; + public void setUsedByDictionaries(Set usedByDictionaries) { + this.usedByDictionaries = usedByDictionaries; } /** @@ -190,30 +187,46 @@ public class DictionaryElement extends AuditEntity implements Serializable { /** * Constructor. - * - * @param name The Dictionary element name - * @param shortName The short name - * @param description The description - * @param type The type of element + * + * @param name The Dictionary element name + * @param shortName The short name + * @param description The description + * @param type The type of element * @param subDictionary The sub type - * @param dictionary The parent dictionary */ - public DictionaryElement(String name, String shortName, String description, String type, String subDictionary, - Dictionary dictionary) { + public DictionaryElement(String name, String shortName, String description, String type, + String subDictionary) { this.name = name; this.shortName = shortName; this.description = description; this.type = type; this.subDictionary = subDictionary; - this.dictionary = dictionary; + } + + /** + * Constructor. + * + * @param name The Dictionary element name + * @param shortName The short name + * @param description The description + * @param type The type of element + * @param subDictionary The sub type + */ + public DictionaryElement(String name, String shortName, String description, String type, + String subDictionary, Set usedByDictionaries) { + this.name = name; + this.shortName = shortName; + this.description = description; + this.type = type; + this.subDictionary = subDictionary; + this.usedByDictionaries = usedByDictionaries; } @Override public int hashCode() { final int prime = 31; int result = 1; - result = prime * result + ((dictionary == null) ? 0 : dictionary.hashCode()); - result = prime * result + ((name == null) ? 0 : name.hashCode()); + result = prime * result + ((shortName == null) ? 0 : shortName.hashCode()); return result; } @@ -229,21 +242,13 @@ public class DictionaryElement extends AuditEntity implements Serializable { return false; } DictionaryElement other = (DictionaryElement) obj; - if (dictionary == null) { - if (other.dictionary != null) { + if (shortName == null) { + if (other.shortName != null) { return false; } - } else if (!dictionary.equals(other.dictionary)) { - return false; - } - if (name == null) { - if (other.name != null) { - return false; - } - } else if (!name.equals(other.name)) { + } else if (!shortName.equals(other.shortName)) { return false; } return true; } - } diff --git a/src/main/java/org/onap/clamp/tosca/DictionaryElementsRepository.java b/src/main/java/org/onap/clamp/tosca/DictionaryElementsRepository.java index 96cb2e35e..43f6f1d40 100644 --- a/src/main/java/org/onap/clamp/tosca/DictionaryElementsRepository.java +++ b/src/main/java/org/onap/clamp/tosca/DictionaryElementsRepository.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights + * Copyright (C) 2020 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/src/main/java/org/onap/clamp/tosca/DictionaryRepository.java b/src/main/java/org/onap/clamp/tosca/DictionaryRepository.java index 2a087b6d9..ae8430d93 100644 --- a/src/main/java/org/onap/clamp/tosca/DictionaryRepository.java +++ b/src/main/java/org/onap/clamp/tosca/DictionaryRepository.java @@ -24,7 +24,6 @@ package org.onap.clamp.tosca; import java.util.List; - import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; @@ -35,4 +34,7 @@ public interface DictionaryRepository extends JpaRepository @Query("SELECT dict.name FROM Dictionary as dict") List getAllDictionaryNames(); + @Query("SELECT dict.name FROM Dictionary as dict where dict.secondLevelDictionary = 1") + List getAllSecondaryLevelDictionaryNames(); + } diff --git a/src/main/java/org/onap/clamp/tosca/DictionaryService.java b/src/main/java/org/onap/clamp/tosca/DictionaryService.java new file mode 100644 index 000000000..21ca1f7f7 --- /dev/null +++ b/src/main/java/org/onap/clamp/tosca/DictionaryService.java @@ -0,0 +1,142 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2020 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============================================ + * =================================================================== + * + */ + +package org.onap.clamp.tosca; + +import com.google.common.collect.Sets; +import java.util.List; +import java.util.Set; +import javax.persistence.EntityNotFoundException; +import org.onap.clamp.clds.service.SecureServiceBase; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class DictionaryService extends SecureServiceBase { + + private final DictionaryRepository dictionaryRepository; + private final DictionaryElementsRepository dictionaryElementsRepository; + + /** + * Constructor. + */ + @Autowired + public DictionaryService(DictionaryRepository dictionaryRepository, + DictionaryElementsRepository dictionaryElementsRepository) { + this.dictionaryRepository = dictionaryRepository; + this.dictionaryElementsRepository = dictionaryElementsRepository; + + } + + public Dictionary saveOrUpdateDictionary(Dictionary dictionary) { + return dictionaryRepository.save(dictionary); + } + + /** + * Creates or Updates Dictionary Element. + * + * @param dictionaryName The Dictionary name + * @param dictionary The Dictionary object with dictionary elements + * @return updated Dictionary object with all dictionary elements + */ + public Dictionary saveOrUpdateDictionaryElement(String dictionaryName, Dictionary dictionary) { + Dictionary dict = getDictionary(dictionaryName); + + Set newDictionaryElements = dictionary.getDictionaryElements(); + + for (DictionaryElement dictionaryElement : newDictionaryElements) { + if (dict.getDictionaryElements().contains(dictionaryElement)) { + // Update the Dictionary Element + getAndUpdateDictionaryElement(dict, dictionaryElement); + } else { + // Create the Dictionary Element + dict.addDictionaryElements(getAndUpdateDictionaryElement(dict, dictionaryElement)); + dictionaryRepository.save(dict); + } + } + + // Fetch again to get Dictionary with most recent updates. + return dictionaryRepository.findById(dictionaryName).orElseThrow( + () -> new EntityNotFoundException("Couldn't find Dictionary named: " + dictionaryName)); + + } + + private DictionaryElement getAndUpdateDictionaryElement(Dictionary dictionary, + DictionaryElement element) { + return dictionaryElementsRepository + .save(dictionaryElementsRepository.findById(element.getShortName()) + .map(p -> updateDictionaryElement(p, element, dictionary)) + .orElse(new DictionaryElement(element.getName(), element.getShortName(), + element.getDescription(), element.getType(), element.getSubDictionary(), + Sets.newHashSet(dictionary)))); + } + + public void deleteDictionary(Dictionary dictionary) { + dictionaryRepository.delete(dictionary); + } + + public void deleteDictionary(String dictionaryName) { + dictionaryRepository.deleteById(dictionaryName); + } + + public List getAllDictionaries() { + return dictionaryRepository.findAll(); + } + + public List getAllSecondaryLevelDictionaryNames() { + return dictionaryRepository.getAllSecondaryLevelDictionaryNames(); + } + + public Dictionary getDictionary(String dictionaryName) { + return dictionaryRepository.findById(dictionaryName).orElseThrow( + () -> new EntityNotFoundException("Couldn't find Dictionary named: " + dictionaryName)); + } + + /** + * Deletes a dictionary element from Dictionary by shortName. + * + * @param dictionaryName The dictionary name + * @param dictionaryElementShortName the dictionary Element Short name + */ + public void deleteDictionaryElement(String dictionaryName, String dictionaryElementShortName) { + if (dictionaryRepository.existsById(dictionaryName)) { + DictionaryElement element = + dictionaryElementsRepository.findById(dictionaryElementShortName).orElse(null); + if (element != null) { + Dictionary dict = getDictionary(dictionaryName); + dict.removeDictionaryElement(element); + dictionaryRepository.save(dict); + } + } + } + + private DictionaryElement updateDictionaryElement(DictionaryElement oldDictionaryElement, + DictionaryElement newDictionaryElement, Dictionary dictionary) { + oldDictionaryElement.setName(newDictionaryElement.getName()); + oldDictionaryElement.setDescription(newDictionaryElement.getDescription()); + oldDictionaryElement.setType(newDictionaryElement.getType()); + oldDictionaryElement.setSubDictionary(newDictionaryElement.getSubDictionary()); + oldDictionaryElement.getUsedByDictionaries().add(dictionary); + return oldDictionaryElement; + } +} diff --git a/src/main/java/org/onap/clamp/util/SemanticVersioning.java b/src/main/java/org/onap/clamp/util/SemanticVersioning.java index bf1529c2c..102284494 100644 --- a/src/main/java/org/onap/clamp/util/SemanticVersioning.java +++ b/src/main/java/org/onap/clamp/util/SemanticVersioning.java @@ -33,12 +33,13 @@ public class SemanticVersioning { public static final int BEFORE = -1; public static final int EQUAL = 0; public static final int AFTER = 1; + public static final String DEFAULT_VERSION = "1.0.0"; /** * The compare method that compare arg0 to arg1. - * - * @param arg0 A version in string for semantice versioning (a.b.c.d...) - * @param arg1 A version in string for semantice versioning (a.b.c.d...) + * + * @param arg0 A version in string for semantic versioning (a.b.c.d...) + * @param arg1 A version in string for semantic versioning (a.b.c.d...) * @return objects (arg0, arg1) given as parameters. It returns the value: 0: if * (arg0==arg1) -1: if (arg0 < arg1) 1: if (arg0 > arg1) */ @@ -58,11 +59,13 @@ public class SemanticVersioning { int smalestStringLength = Math.min(arg0Array.length, arg1Array.length); - for (int currentVersionIndex = 0; currentVersionIndex < smalestStringLength; ++currentVersionIndex) { - if (Integer.parseInt(arg0Array[currentVersionIndex]) < Integer.parseInt(arg1Array[currentVersionIndex])) { + for (int currentVersionIndex = + 0; currentVersionIndex < smalestStringLength; ++currentVersionIndex) { + if (Integer.parseInt(arg0Array[currentVersionIndex]) < Integer + .parseInt(arg1Array[currentVersionIndex])) { return BEFORE; } else if (Integer.parseInt(arg0Array[currentVersionIndex]) > Integer - .parseInt(arg1Array[currentVersionIndex])) { + .parseInt(arg1Array[currentVersionIndex])) { return AFTER; } // equals, so do not return anything, continue @@ -73,4 +76,18 @@ public class SemanticVersioning { return Integer.compare(arg0Array.length, arg1Array.length); } } -} \ No newline at end of file + + /** + * Method to increment a version from its current version. + * + * @param currentVersion The current Version + * @return the increment version string + */ + public static String incrementMajorVersion(String currentVersion) { + if (currentVersion == null || currentVersion.isEmpty()) { + return DEFAULT_VERSION; + } + String[] versionArray = currentVersion.split("\\."); + return String.valueOf(Integer.parseInt(versionArray[0]) + 1)+".0.0"; + } +} diff --git a/src/main/resources/clds/camel/rest/clamp-api-v2.xml b/src/main/resources/clds/camel/rest/clamp-api-v2.xml index a0a3eb104..f2db72cb8 100644 --- a/src/main/resources/clds/camel/rest/clamp-api-v2.xml +++ b/src/main/resources/clds/camel/rest/clamp-api-v2.xml @@ -1,8 +1,6 @@ - @@ -26,14 +24,10 @@ - - + @@ -54,14 +48,10 @@ - + - + @@ -83,16 +73,11 @@ - + - + @@ -119,16 +104,11 @@ - + - + @@ -155,16 +135,13 @@ - - + @@ -192,17 +169,12 @@ - + - + - @@ -214,8 +186,7 @@ - @@ -228,8 +199,7 @@ - @@ -237,17 +207,12 @@ - + - + - @@ -256,8 +221,7 @@ - @@ -270,8 +234,7 @@ - @@ -279,17 +242,12 @@ - + - + - @@ -300,8 +258,7 @@ uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('DCAE UNDEPLOY request','INFO',${exchangeProperty[loopObject]})" /> - @@ -314,8 +271,7 @@ - @@ -323,17 +279,12 @@ - + - + - @@ -344,8 +295,7 @@ uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('STOP request','INFO',${exchangeProperty[loopObject]})" /> - @@ -358,8 +308,7 @@ - @@ -367,17 +316,12 @@ - + - + - @@ -389,8 +333,7 @@ uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('RESTART request','INFO',${exchangeProperty[loopObject]})" /> - @@ -403,8 +346,7 @@ - @@ -412,17 +354,12 @@ - + - + - @@ -435,8 +372,7 @@ false - ${exchangeProperty[loopObject].getMicroServicePolicies()} @@ -444,8 +380,7 @@ ${body} - false @@ -453,8 +388,7 @@ - ${exchangeProperty[loopObject].getOperationalPolicies()} @@ -462,8 +396,7 @@ ${body} - false @@ -472,8 +405,7 @@ - ${exchangeProperty[operationalPolicy].createGuardPolicyPayloads().entrySet()} @@ -481,8 +413,7 @@ ${body} - @@ -499,8 +430,7 @@ - @@ -513,8 +443,7 @@ - @@ -524,12 +453,9 @@ - + - @@ -546,14 +472,12 @@ ${body} - - ${exchangeProperty[loopObject].getOperationalPolicies()} @@ -561,12 +485,10 @@ ${body} - - ${exchangeProperty[operationalPolicy].createGuardPolicyPayloads().entrySet()} @@ -574,16 +496,14 @@ ${body} - - @@ -596,8 +516,7 @@ - @@ -605,17 +524,12 @@ - + - + - @@ -641,8 +555,7 @@ - @@ -655,5 +568,408 @@ + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + ${body} + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + ${body} + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + + + java.lang.Exception + + true + + + 500 + + + ERROR: ${exception.message} + + + + + + + + + + + + + + + + java.lang.Exception + + true + + + 500 + + + ERROR: ${exception.message} + + + + + + + + + + + + + + + + java.lang.Exception + + true + + + 500 + + + ERROR: ${exception.message} + + + + + + + + + + + + + + + ${body} + + + + + java.lang.Exception + + true + + + 404 + + + ERROR: ${exception.message} + + + + + + + + + + + + + + + + + + java.lang.Exception + + true + + + 500 + + + ERROR: ${exception.message} + + + + + + + + + + + + + + + + java.lang.Exception + + true + + + 500 + + + ERROR: ${exception.message} + + + + + + + + + + + + + + + + java.lang.Exception + + false + + + + + + diff --git a/src/test/java/org/onap/clamp/clds/tosca/DictionaryRepositoriesTestItCase.java b/src/test/java/org/onap/clamp/clds/tosca/DictionaryRepositoriesTestItCase.java index 2274fcf63..5208f7ffd 100644 --- a/src/test/java/org/onap/clamp/clds/tosca/DictionaryRepositoriesTestItCase.java +++ b/src/test/java/org/onap/clamp/clds/tosca/DictionaryRepositoriesTestItCase.java @@ -25,9 +25,7 @@ package org.onap.clamp.clds.tosca; import static org.assertj.core.api.Assertions.assertThat; -import java.util.LinkedList; import java.util.List; - import org.junit.Test; import org.junit.runner.RunWith; import org.onap.clamp.clds.Application; @@ -55,16 +53,12 @@ public class DictionaryRepositoriesTestItCase { dictionaryTest1.setSubDictionaryType("testType"); DictionaryElement element1 = new DictionaryElement(); - element1.setDictionary(dictionaryTest1); element1.setName("element1"); element1.setShortName("shortName1"); - element1.setSubDictionary("subDictionary1"); element1.setType("type1"); element1.setDescription("description1"); - LinkedList elementList1 = new LinkedList(); - elementList1.add(element1); - dictionaryTest1.setDictionaryElements(elementList1); + dictionaryTest1.addDictionaryElements(element1); Dictionary dictionaryTest2 = new Dictionary(); dictionaryTest2.setName("testDictionary2"); @@ -72,16 +66,13 @@ public class DictionaryRepositoriesTestItCase { dictionaryTest2.setSubDictionaryType("testType"); DictionaryElement element2 = new DictionaryElement(); - element2.setDictionary(dictionaryTest2); element2.setName("element2"); element2.setShortName("shortName2"); - element2.setSubDictionary("subDictionary2"); + element2.setSubDictionary("testDictionary1"); element2.setType("type2"); element2.setDescription("description2"); - LinkedList elementList2 = new LinkedList(); - elementList2.add(element2); - dictionaryTest2.setDictionaryElements(elementList2); + dictionaryTest2.addDictionaryElements(element2); dictionaryRepository.save(dictionaryTest1); List res1 = dictionaryRepository.getAllDictionaryNames(); diff --git a/src/test/java/org/onap/clamp/clds/tosca/ToscaYamlToJsonConvertorTest.java b/src/test/java/org/onap/clamp/clds/tosca/ToscaYamlToJsonConvertorTest.java deleted file mode 100644 index a9e279de4..000000000 --- a/src/test/java/org/onap/clamp/clds/tosca/ToscaYamlToJsonConvertorTest.java +++ /dev/null @@ -1,91 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2018 AT&T Intellectual Property. All rights - * reserved. - * Modifications Copyright (C) 2019 Huawei Technologies Co., Ltd. - * ================================================================================ - * 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.tosca; - -import static org.junit.Assert.assertNotNull; - -import java.io.IOException; - -import org.junit.Test; -import org.onap.clamp.clds.util.ResourceFileUtil; -import org.skyscreamer.jsonassert.JSONAssert; - -public class ToscaYamlToJsonConvertorTest { - - /** - * This Test validates TOSCA yaml to JSON Schema conversion based on JSON Editor - * Schema. - * - * @throws IOException In case of issue when opening the tosca yaml file and - * converted json file - */ - @Test - public final void testParseToscaYaml() throws IOException { - String toscaModelYaml = ResourceFileUtil.getResourceAsString("tosca/tosca_example.yaml"); - ToscaYamlToJsonConvertor convertor = new ToscaYamlToJsonConvertor(); - - String parsedJsonSchema = convertor.parseToscaYaml(toscaModelYaml, - "onap.policies.monitoring.cdap.tca.hi.lo.app"); - assertNotNull(parsedJsonSchema); - JSONAssert.assertEquals(ResourceFileUtil.getResourceAsString("tosca/policy-yaml-to-json.json"), - parsedJsonSchema, true); - } - - /** - * This Test validates TOSCA yaml with constraints to JSON Schema conversion - * based on JSON Editor Schema. - * - * @throws IOException In case of issue when opening the tosca yaml file and - * converted json file - */ - @Test - public final void testParseToscaYamlWithConstraints() throws IOException { - String toscaModelYaml = ResourceFileUtil.getResourceAsString("tosca/tosca-with-constraints.yaml"); - ToscaYamlToJsonConvertor convertor = new ToscaYamlToJsonConvertor(); - - String parsedJsonSchema = convertor.parseToscaYaml(toscaModelYaml, "onap.policies.monitoring.example.app"); - assertNotNull(parsedJsonSchema); - JSONAssert.assertEquals(ResourceFileUtil.getResourceAsString("tosca/policy-yaml-to-json-with-constraints.json"), - parsedJsonSchema, true); - } - - /** - * This Test validates TOSCA yaml with different datatypes to JSON Schema - * conversion based on JSON Editor Schema. - * - * @throws IOException In case of issue when opening the tosca yaml file and - * converted json file - */ - @Test - public final void testParseToscaYamlWithTypes() throws IOException { - String toscaModelYaml = ResourceFileUtil.getResourceAsString("tosca/tosca-with-datatypes.yaml"); - ToscaYamlToJsonConvertor convertor = new ToscaYamlToJsonConvertor(); - - String parsedJsonSchema = convertor.parseToscaYaml(toscaModelYaml, "onap.policies.monitoring.example.app"); - assertNotNull(parsedJsonSchema); - JSONAssert.assertEquals(ResourceFileUtil.getResourceAsString("tosca/policy-yaml-to-json-with-datatypes.json"), - parsedJsonSchema, true); - } -} diff --git a/src/test/java/org/onap/clamp/clds/tosca/ToscaYamlToJsonConvertorTestItCase.java b/src/test/java/org/onap/clamp/clds/tosca/ToscaYamlToJsonConvertorTestItCase.java new file mode 100644 index 000000000..f426c7625 --- /dev/null +++ b/src/test/java/org/onap/clamp/clds/tosca/ToscaYamlToJsonConvertorTestItCase.java @@ -0,0 +1,188 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2018 AT&T Intellectual Property. All rights + * reserved. + * Modifications Copyright (C) 2019 Huawei Technologies Co., Ltd. + * ================================================================================ + * 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============================================ + * =================================================================== + * + */ + +package org.onap.clamp.clds.tosca; + +import com.google.gson.JsonObject; +import java.io.IOException; +import javax.transaction.Transactional; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.onap.clamp.clds.Application; +import org.onap.clamp.clds.util.ResourceFileUtil; +import org.onap.clamp.tosca.Dictionary; +import org.onap.clamp.tosca.DictionaryElement; +import org.onap.clamp.tosca.DictionaryService; +import org.skyscreamer.jsonassert.JSONAssert; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import static org.junit.Assert.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertEquals; + +@RunWith(SpringJUnit4ClassRunner.class) +@SpringBootTest(classes = Application.class) +public class ToscaYamlToJsonConvertorTestItCase { + + @Autowired + private DictionaryService dictionaryService; + + @Autowired + private ToscaYamlToJsonConvertor toscaYamlToJsonConvertor; + + /** + * This Test validates TOSCA yaml to JSON Schema conversion based on JSON Editor + * Schema. + * + * @throws IOException In case of issue when opening the tosca yaml file and + * converted json file + */ + @Test + public final void testParseToscaYaml() throws IOException { + String toscaModelYaml = ResourceFileUtil.getResourceAsString("tosca/tosca_example.yaml"); + ToscaYamlToJsonConvertor convertor = new ToscaYamlToJsonConvertor(); + + String parsedJsonSchema = + convertor.parseToscaYaml(toscaModelYaml, "onap.policies.monitoring.cdap.tca.hi.lo.app"); + assertNotNull(parsedJsonSchema); + JSONAssert.assertEquals( + ResourceFileUtil.getResourceAsString("tosca/policy-yaml-to-json.json"), + parsedJsonSchema, true); + } + + /** + * This Test validates TOSCA yaml with constraints to JSON Schema conversion + * based on JSON Editor Schema. + * + * @throws IOException In case of issue when opening the tosca yaml file and + * converted json file + */ + @Test + public final void testParseToscaYamlWithConstraints() throws IOException { + String toscaModelYaml = + ResourceFileUtil.getResourceAsString("tosca/tosca-with-constraints.yaml"); + ToscaYamlToJsonConvertor convertor = new ToscaYamlToJsonConvertor(); + + String parsedJsonSchema = + convertor.parseToscaYaml(toscaModelYaml, "onap.policies.monitoring.example.app"); + assertNotNull(parsedJsonSchema); + JSONAssert.assertEquals( + ResourceFileUtil.getResourceAsString("tosca/policy-yaml-to-json-with-constraints.json"), + parsedJsonSchema, true); + } + + /** + * This Test validates TOSCA yaml with different datatypes to JSON Schema + * conversion based on JSON Editor Schema. + * + * @throws IOException In case of issue when opening the tosca yaml file and + * converted json file + */ + @Test + public final void testParseToscaYamlWithTypes() throws IOException { + String toscaModelYaml = + ResourceFileUtil.getResourceAsString("tosca/tosca-with-datatypes.yaml"); + ToscaYamlToJsonConvertor convertor = new ToscaYamlToJsonConvertor(); + + String parsedJsonSchema = + convertor.parseToscaYaml(toscaModelYaml, "onap.policies.monitoring.example.app"); + assertNotNull(parsedJsonSchema); + JSONAssert.assertEquals( + ResourceFileUtil.getResourceAsString("tosca/policy-yaml-to-json-with-datatypes.json"), + parsedJsonSchema, true); + } + + /** + * This Test validates Tosca yaml with metadata tag that contains policy_model_type and acronym + * parameters which defines the Tosca Policy name and its short name. + * + * @throws IOException In case of issue when opening the tosca yaml file and + * converted json file + */ + @Test + @Transactional + public final void testMetadataClampPossibleValues() throws IOException { + + // Set up dictionary elements + Dictionary dictionaryTest = new Dictionary(); + dictionaryTest.setName("Context"); + dictionaryTest.setSecondLevelDictionary(0); + + DictionaryElement element = new DictionaryElement(); + element.setName("PROD"); + element.setShortName("PROD"); + element.setType("string"); + element.setDescription("Production"); + dictionaryTest.addDictionaryElements(element); + + dictionaryService.saveOrUpdateDictionary(dictionaryTest); + + Dictionary dictionaryTest1 = new Dictionary(); + dictionaryTest1.setName("EventDictionary"); + dictionaryTest1.setSecondLevelDictionary(0); + + DictionaryElement element1 = new DictionaryElement(); + element1.setName("alarmCondition"); + element1.setShortName("alarmCondition"); + element1.setType("string"); + element1.setDescription("Alarm Condition"); + dictionaryTest1.addDictionaryElements(element1); + + dictionaryService.saveOrUpdateDictionary(dictionaryTest1); + + Dictionary dictionaryTest2 = new Dictionary(); + dictionaryTest2.setName("Operators"); + dictionaryTest2.setSecondLevelDictionary(0); + + DictionaryElement element2 = new DictionaryElement(); + element2.setName("equals"); + element2.setShortName("equals"); + element2.setType("string"); + element2.setDescription("equals"); + dictionaryTest2.addDictionaryElements(element2); + dictionaryService.saveOrUpdateDictionary(dictionaryTest2); + + String toscaModelYaml = + ResourceFileUtil.getResourceAsString("tosca/tosca_metadata_clamp_possible_values.yaml"); + + JsonObject jsonObject = toscaYamlToJsonConvertor.validateAndConvertToJson(toscaModelYaml); + assertNotNull(jsonObject); + String policyModelType = toscaYamlToJsonConvertor.getValueFromMetadata(jsonObject, + ToscaSchemaConstants.METADATA_POLICY_MODEL_TYPE); + String acronym = toscaYamlToJsonConvertor.getValueFromMetadata(jsonObject, + ToscaSchemaConstants.METADATA_ACRONYM); + String parsedJsonSchema = + toscaYamlToJsonConvertor.parseToscaYaml(toscaModelYaml, policyModelType); + + assertNotNull(parsedJsonSchema); + assertEquals("onap.policies.monitoring.cdap.tca.hi.lo.app", policyModelType); + assertEquals("tca", acronym); + JSONAssert.assertEquals( + ResourceFileUtil + .getResourceAsString("tosca/tosca_metadata_clamp_possible_values_json_schema.json"), + parsedJsonSchema, true); + } + +} diff --git a/src/test/java/org/onap/clamp/loop/LoopTemplatesServiceItCase.java b/src/test/java/org/onap/clamp/loop/LoopTemplatesServiceItCase.java new file mode 100644 index 000000000..3a36a5d82 --- /dev/null +++ b/src/test/java/org/onap/clamp/loop/LoopTemplatesServiceItCase.java @@ -0,0 +1,145 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2020 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============================================ + * =================================================================== + * + */ + +package org.onap.clamp.loop; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.List; +import java.util.SortedSet; +import javax.transaction.Transactional; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.onap.clamp.clds.Application; +import org.onap.clamp.loop.template.LoopElementModel; +import org.onap.clamp.loop.template.LoopTemplate; +import org.onap.clamp.loop.template.LoopTemplateLoopElementModel; +import org.onap.clamp.loop.template.LoopTemplatesService; +import org.onap.clamp.loop.template.LoopType; +import org.onap.clamp.loop.template.PolicyModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = Application.class) +public class LoopTemplatesServiceItCase { + + @Autowired + LoopTemplatesService loopTemplatesService; + + private static final String POLICY_MODEL_TYPE_1 = "org.onap.test"; + private static final String VERSION = "1.0.0"; + + private LoopElementModel getLoopElementModel(String yaml, String name, String loopElementType, + String createdBy, PolicyModel policyModel) { + LoopElementModel model = new LoopElementModel(name, loopElementType, yaml); + model.setBlueprint(""); + model.setDcaeBlueprintId(""); + model.addPolicyModel(policyModel); + return model; + } + + private PolicyModel getPolicyModel(String policyType, String policyModelTosca, String version, + String policyAcronym, String createdBy) { + return new PolicyModel(policyType, policyModelTosca, version, policyAcronym); + } + + private LoopTemplate getLoopTemplate(String name, String blueprint, String svgRepresentation, + String createdBy, Integer maxInstancesAllowed) { + LoopTemplate template = + new LoopTemplate(name, blueprint, svgRepresentation, maxInstancesAllowed, null); + template.addLoopElementModel(getLoopElementModel("yaml", "microService1", "MicroService", + createdBy, getPolicyModel(POLICY_MODEL_TYPE_1, "yaml", VERSION, "MS1", createdBy))); + template.setAllowedLoopType(LoopType.OPEN); + return template; + } + + @Test + @Transactional + public void shouldSaveOrUpdateLoopTemplate() { + LoopTemplate loopTemplate = getLoopTemplate("TemplateName", null, "svg", "xyz", -1); + LoopTemplate actualLoopTemplate = + loopTemplatesService.saveOrUpdateLoopTemplate(loopTemplate); + + assertNotNull(actualLoopTemplate); + assertThat(loopTemplate.getName()).isEqualTo("TemplateName"); + assertThat(loopTemplate.getAllowedLoopType()).isEqualTo(LoopType.OPEN); + } + + @Test + @Transactional + public void shouldReturnAllLoopemplates() { + LoopTemplate loopTemplate = getLoopTemplate("TemplateName", null, "svg", "xyz", -1); + loopTemplatesService.saveOrUpdateLoopTemplate(loopTemplate); + List loopTemplateList = loopTemplatesService.getAllLoopTemplates(); + + assertNotNull(loopTemplateList); + } + + @Test + @Transactional + public void shouldReturnLoopemplateNames() { + LoopTemplate loopTemplate = getLoopTemplate("TemplateName", null, "svg", "xyz", -1); + loopTemplatesService.saveOrUpdateLoopTemplate(loopTemplate); + List loopTemplateNames = loopTemplatesService.getLoopTemplateNames(); + + assertNotNull(loopTemplateNames); + assertEquals("TemplateName", loopTemplateNames.get(0)); + } + + @Test + @Transactional + public void shouldReturnLoopemplate() { + LoopTemplate loopTemplate = getLoopTemplate("TemplateName", null, "svg", "xyz", -1); + loopTemplatesService.saveOrUpdateLoopTemplate(loopTemplate); + LoopTemplate actualLoopTemplate = loopTemplatesService.getLoopTemplate("TemplateName"); + + assertNotNull(actualLoopTemplate); + assertThat(loopTemplate).isEqualTo(actualLoopTemplate); + assertThat(loopTemplate.getName()).isEqualTo(actualLoopTemplate.getName()); + assertThat(loopTemplate.getMaximumInstancesAllowed()) + .isEqualTo(actualLoopTemplate.getMaximumInstancesAllowed()); + SortedSet loopElementModelsUsed = + loopTemplate.getLoopElementModelsUsed(); + LoopTemplateLoopElementModel loopTemplateLoopElementModel = loopElementModelsUsed.first(); + assertThat(loopTemplateLoopElementModel.getLoopElementModel().getName()) + .isEqualTo("microService1"); + assertThat(loopTemplateLoopElementModel.getLoopTemplate().getName()) + .isEqualTo("TemplateName"); + } + + @Test + @Transactional + public void shouldDeleteLoopemplate() { + LoopTemplate loopTemplate = getLoopTemplate("TemplateName", null, "svg", "xyz", -1); + loopTemplatesService.saveOrUpdateLoopTemplate(loopTemplate); + loopTemplatesService.deleteLoopTemplate("TemplateName"); + LoopTemplate actualLoopTemplate = loopTemplatesService.getLoopTemplate("TemplateName"); + assertNull(actualLoopTemplate); + } + +} diff --git a/src/test/java/org/onap/clamp/tosca/DictionaryServiceItCase.java b/src/test/java/org/onap/clamp/tosca/DictionaryServiceItCase.java new file mode 100644 index 000000000..55d347ceb --- /dev/null +++ b/src/test/java/org/onap/clamp/tosca/DictionaryServiceItCase.java @@ -0,0 +1,247 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2020 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============================================ + * =================================================================== + * + */ + +package org.onap.clamp.tosca; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.util.List; +import javax.persistence.EntityNotFoundException; +import javax.transaction.Transactional; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.onap.clamp.clds.Application; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = Application.class) +public class DictionaryServiceItCase { + + @Autowired + private DictionaryService dictionaryService; + + @Autowired + private DictionaryElementsRepository dictionaryElementsRepository; + + private DictionaryElement getDictionaryElement(String shortName, String name, + String description, String type, String subDictionaryName) { + + return new DictionaryElement(name, shortName, description, type, subDictionaryName); + + } + + private Dictionary getSimpleDictionaryExample() { + + Dictionary dictionary = new Dictionary("Dictionary1", 0, null); + + dictionary.addDictionaryElements(getDictionaryElement("DE1", "DictionaryElement1", + "DictionaryElement1", "string", null)); + + dictionary.addDictionaryElements(getDictionaryElement("DE2", "DictionaryElement2", + "DictionaryElement2", "number", null)); + + return dictionary; + } + + private Dictionary getSecondaryDictionaryExample() { + + Dictionary dictionary = new Dictionary("SecondaryDict", 1, "string"); + + dictionary.addDictionaryElements(getDictionaryElement("SDE1", "SecondaryDictElement1", + "SecondaryDictElement1", "string", null)); + + dictionary.addDictionaryElements(getDictionaryElement("SDE2", "SecondaryDictElement2", + "SecondaryDictElement2", "string", null)); + + return dictionary; + } + + /** + * Test to validate that Dictionary is created. + */ + @Test + @Transactional + public void shouldCreateDictionary() { + Dictionary dictionary = getSimpleDictionaryExample(); + Dictionary actualDictionary = dictionaryService.saveOrUpdateDictionary(dictionary); + assertNotNull(actualDictionary); + assertThat(actualDictionary).isEqualTo(dictionary); + assertThat(actualDictionary.getName()).isEqualTo(dictionary.getName()); + + assertThat(actualDictionary.getDictionaryElements()).contains( + dictionaryElementsRepository.findById("DE1").get(), + dictionaryElementsRepository.findById("DE2").get()); + } + + /** + * Test to validate a DictionaryElement is created for a Dictionary. + */ + @Test + @Transactional + public void shouldCreateorUpdateDictionaryElement() { + Dictionary dictionary = getSimpleDictionaryExample(); + Dictionary actualDictionary = dictionaryService.saveOrUpdateDictionary(dictionary); + DictionaryElement dictionaryElement = + getDictionaryElement("DictionaryElement3", "DE3", "DictionaryElement3", "date", null); + actualDictionary.addDictionaryElements(dictionaryElement); + Dictionary updatedDictionary = dictionaryService + .saveOrUpdateDictionaryElement(actualDictionary.getName(), actualDictionary); + assertNotNull(updatedDictionary); + assertTrue(updatedDictionary.getDictionaryElements().contains(dictionaryElement)); + assertThat(updatedDictionary.getName()).isEqualTo(actualDictionary.getName()); + // update the dictionary element. + dictionaryElement.setDescription("DictionaryElement3 New Description"); + Dictionary dictionary3 = new Dictionary("Dictionary1", 0, null); + dictionary3.addDictionaryElements(dictionaryElement); + Dictionary updatedDictionary2 = + dictionaryService.saveOrUpdateDictionaryElement(dictionary3.getName(), dictionary3); + + assertNotNull(updatedDictionary2); + assertTrue(updatedDictionary2.getDictionaryElements().contains(dictionaryElement)); + updatedDictionary2.getDictionaryElements().forEach(element -> { + if (element.equals(dictionaryElement)) { + assertTrue(element.getDescription().equals(dictionaryElement.getDescription())); + } + }); + + } + + /** + * Test to validate that All Dictionaries are retrieved. + */ + @Test + @Transactional + public void shouldReturnAllDictionaries() { + Dictionary dictionary = getSimpleDictionaryExample(); + Dictionary secondaryDictionary = getSecondaryDictionaryExample(); + dictionaryService.saveOrUpdateDictionary(dictionary); + dictionaryService.saveOrUpdateDictionary(secondaryDictionary); + + List list = dictionaryService.getAllDictionaries(); + assertNotNull(list); + assertThat(list).contains(dictionary, secondaryDictionary); + } + + /** + * Test to validate one Dictionary is returned. + */ + @Test + @Transactional + public void shouldReturnOneDictionary() { + Dictionary dictionary = getSimpleDictionaryExample(); + dictionaryService.saveOrUpdateDictionary(dictionary); + + Dictionary returnedDictionary = dictionaryService.getDictionary("Dictionary1"); + assertNotNull(returnedDictionary); + assertThat(returnedDictionary).isEqualTo(dictionary); + assertThat(returnedDictionary.getDictionaryElements()) + .isEqualTo(dictionary.getDictionaryElements()); + } + + /** + * Test to validate one Dictionary is returned. + */ + @Test + @Transactional + public void shouldReturnEntityNotFoundException() { + try { + dictionaryService.getDictionary("Test"); + } catch (Exception e) { + assertThat(e).isInstanceOf(EntityNotFoundException.class); + assertTrue(e.getMessage().equals("Couldn't find Dictionary named: Test")); + } + } + + /** + * Test to validate Dictionary is deleted. + */ + @Test + @Transactional + public void shouldDeleteDictionaryByObject() { + Dictionary dictionary = getSimpleDictionaryExample(); + Dictionary returnedDictionary = dictionaryService.saveOrUpdateDictionary(dictionary); + + dictionaryService.deleteDictionary(returnedDictionary); + try { + dictionaryService.getDictionary("Dictionary1"); + } catch (EntityNotFoundException e) { + assertTrue(e.getMessage().equals("Couldn't find Dictionary named: Dictionary1")); + } + } + + /** + * Test to validate Dictionary is deleted by Name. + */ + @Test + @Transactional + public void shouldDeleteDictionaryByName() { + Dictionary dictionary = getSimpleDictionaryExample(); + dictionaryService.saveOrUpdateDictionary(dictionary); + dictionaryService.deleteDictionary(dictionary.getName()); + try { + dictionaryService.getDictionary("Dictionary1"); + } catch (EntityNotFoundException e) { + assertTrue(e.getMessage().equals("Couldn't find Dictionary named: Dictionary1")); + } + } + + /** + * Test to validate DictionaryElements is deleted by Name. + */ + @Test + @Transactional + public void shouldDeleteDictionaryElementsByName() { + Dictionary dictionary = getSimpleDictionaryExample(); + dictionaryService.saveOrUpdateDictionary(dictionary); + DictionaryElement dictionaryElement = + dictionaryElementsRepository.findById("DE1").orElse(null); + assertNotNull(dictionaryElement); + dictionaryService.deleteDictionaryElement("Dictionary1", "DE1"); + dictionary = dictionaryService.getDictionary("Dictionary1"); + DictionaryElement deletedDictionaryElement = + dictionaryElementsRepository.findById("DE1").orElse(null); + assertThat(deletedDictionaryElement).isNotIn(dictionary.getDictionaryElements()); + } + + /** + * Test to validate all secondary level dictionary names are returned. + */ + @Test + @Transactional + public void shouldReturnAllSecondaryLevelDictionaryNames() { + Dictionary dictionary = getSecondaryDictionaryExample(); + dictionaryService.saveOrUpdateDictionary(dictionary); + + Dictionary dictionary2 = new Dictionary("SecondaryDict2", 1, "string"); + dictionaryService.saveOrUpdateDictionary(dictionary2); + List secondaryDictionaryNames = + dictionaryService.getAllSecondaryLevelDictionaryNames(); + + assertNotNull(secondaryDictionaryNames); + assertThat(secondaryDictionaryNames).contains(dictionary.getName(), dictionary2.getName()); + } +} diff --git a/src/test/java/org/onap/clamp/util/SemanticVersioningTest.java b/src/test/java/org/onap/clamp/util/SemanticVersioningTest.java index 1fb5922fd..e018f0952 100644 --- a/src/test/java/org/onap/clamp/util/SemanticVersioningTest.java +++ b/src/test/java/org/onap/clamp/util/SemanticVersioningTest.java @@ -6,27 +6,27 @@ * 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 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 + * + * 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============================================ * =================================================================== - * + * */ package org.onap.clamp.util; -import static org.assertj.core.api.Assertions.assertThat; - import org.junit.Test; +import static org.assertj.core.api.Assertions.assertThat; + public class SemanticVersioningTest { @Test @@ -68,4 +68,12 @@ public class SemanticVersioningTest { assertThat(SemanticVersioning.compare(null, "1.0")).isEqualTo(-1); assertThat(SemanticVersioning.compare("1.0", null)).isEqualTo(1); } + + @Test + public void incrementVersionTest() { + assertThat(SemanticVersioning.incrementMajorVersion("1.0")).isEqualTo("2.0.0"); + assertThat(SemanticVersioning.incrementMajorVersion("1.0.0")).isEqualTo("2.0.0"); + assertThat(SemanticVersioning.incrementMajorVersion("1")).isEqualTo("2.0.0"); + assertThat(SemanticVersioning.incrementMajorVersion("1.2.3")).isEqualTo("2.0.0"); + } } diff --git a/src/test/resources/clds/camel/rest/clamp-api-v2.xml b/src/test/resources/clds/camel/rest/clamp-api-v2.xml new file mode 100644 index 000000000..b0a8d2fd7 --- /dev/null +++ b/src/test/resources/clds/camel/rest/clamp-api-v2.xml @@ -0,0 +1,984 @@ + + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + ${body} + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + ${body} + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + ${body} + + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + + + + + false + + + + + ${exchangeProperty[loopObject].getMicroServicePolicies()} + + + ${body} + + + + false + + + + + + + ${exchangeProperty[loopObject].getOperationalPolicies()} + + + ${body} + + + + false + + + + + + + + ${exchangeProperty[operationalPolicy].createGuardPolicyPayloads().entrySet()} + + + ${body} + + + + + false + + + + + + + + 3000 + + + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + + + + + + + ${exchangeProperty[loopObject].getMicroServicePolicies()} + + + ${body} + + + + + + + + ${exchangeProperty[loopObject].getOperationalPolicies()} + + + ${body} + + + + + + ${exchangeProperty[operationalPolicy].createGuardPolicyPayloads().entrySet()} + + + ${body} + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + ${exchangeProperty[loopObject]} + + + + + + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + ${body} + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + ${body} + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + + + + + + + + + + java.lang.Exception + + true + + + 500 + + + ERROR: ${exception.message} + + + + + + + + + + + + + + + + java.lang.Exception + + true + + + 500 + + + ERROR: ${exception.message} + + + + + + + + + + + + + + + + java.lang.Exception + + true + + + 500 + + + ERROR: ${exception.message} + + + + + + + + + + + + + + + ${body} + + + + + java.lang.Exception + + true + + + 404 + + + ERROR: ${exception.message} + + + + + + + + + + + + + + + + + + java.lang.Exception + + true + + + 500 + + + ERROR: ${exception.message} + + + + + + + + + + + + + + + + java.lang.Exception + + true + + + 500 + + + ERROR: ${exception.message} + + + + + + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + diff --git a/src/test/resources/tosca/tosca_metadata_clamp_possible_values.yaml b/src/test/resources/tosca/tosca_metadata_clamp_possible_values.yaml new file mode 100644 index 000000000..4d3c3dff2 --- /dev/null +++ b/src/test/resources/tosca/tosca_metadata_clamp_possible_values.yaml @@ -0,0 +1,184 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0 +policy_types: + onap.policies.Monitoring: + derived_from: tosca.policies.Root + description: a base policy type for all policies that governs monitoring provisioning + onap.policies.monitoring.cdap.tca.hi.lo.app: + derived_from: onap.policies.Monitoring + version: 1.0.0 + properties: + tca_policy: + type: map + description: TCA Policy JSON + entry_schema: + type: onap.datatypes.monitoring.tca_policy + metadata: + policy_model_type: onap.policies.monitoring.cdap.tca.hi.lo.app + acronym: tca + +data_types: + onap.datatypes.monitoring.metricsPerEventName: + derived_from: tosca.datatypes.Root + properties: + controlLoopSchemaType: + type: string + required: true + description: Specifies Control Loop Schema Type for the event Name e.g. VNF, VM + constraints: + - valid_values: + - VM + - VNF + eventName: + type: string + required: true + description: Event name to which thresholds need to be applied + policyName: + type: string + required: true + description: TCA Policy Scope Name + policyScope: + type: string + required: true + description: TCA Policy Scope + policyVersion: + type: string + required: true + description: TCA Policy Scope Version + thresholds: + type: list + required: true + description: Thresholds associated with eventName + entry_schema: + type: onap.datatypes.monitoring.thresholds + context: + type: string + required: true + description: TCA Policy Dummy Context + metadata: + clamp_possible_values: ["Dictionary:Context"] + + signature: + type: onap.datatypes.monitoring.Dummy_Signature + description: Signature + required: true + + onap.datatypes.monitoring.Dummy_Signature: + derived_from: tosca.datatypes.Root + properties: + filter_clause: + type: string + description: Filter Clause + required: true + metadata: + clamp_possible_values: ["Dictionary:EventDictionary#Operators"] + + onap.datatypes.monitoring.tca_policy: + derived_from: tosca.datatypes.Root + properties: + domain: + type: string + required: true + description: Domain name to which TCA needs to be applied + default: measurementsForVfScaling + constraints: + - equal: measurementsForVfScaling + metricsPerEventName: + type: list + required: true + description: Contains eventName and threshold details that need to be applied to given eventName + entry_schema: + type: onap.datatypes.monitoring.metricsPerEventName + onap.datatypes.monitoring.thresholds: + derived_from: tosca.datatypes.Root + properties: + closedLoopControlName: + type: string + required: true + description: Closed Loop Control Name associated with the threshold + closedLoopEventStatus: + type: string + required: true + description: Closed Loop Event Status of the threshold + constraints: + - valid_values: + - ONSET + - ABATED + direction: + type: string + required: true + description: Direction of the threshold + constraints: + - valid_values: + - LESS + - LESS_OR_EQUAL + - GREATER + - GREATER_OR_EQUAL + - EQUAL + fieldPath: + type: string + required: true + description: Json field Path as per CEF message which needs to be analyzed for TCA + constraints: + - valid_values: + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage + - $.event.measurementsForVfScalingFields.meanRequestLatency + - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered + - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached + - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured + - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree + - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed + - $.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value + severity: + type: string + required: true + description: Threshold Event Severity + constraints: + - valid_values: + - CRITICAL + - MAJOR + - MINOR + - WARNING + - NORMAL + thresholdValue: + type: integer + required: true + description: Threshold value for the field Path inside CEF message + version: + type: string + required: true + description: Version number associated with the threshold diff --git a/src/test/resources/tosca/tosca_metadata_clamp_possible_values_json_schema.json b/src/test/resources/tosca/tosca_metadata_clamp_possible_values_json_schema.json new file mode 100644 index 000000000..af8c1f961 --- /dev/null +++ b/src/test/resources/tosca/tosca_metadata_clamp_possible_values_json_schema.json @@ -0,0 +1,235 @@ +{ + "schema":{ + "uniqueItems":"true", + "format":"tabs-top", + "type":"array", + "title":"TCA Policy JSON", + "items":{ + "type":"object", + "title":"TCA Policy JSON", + "required":[ + "domain", + "metricsPerEventName" + ], + "properties":{ + "domain":{ + "propertyOrder":1001, + "default":"measurementsForVfScaling", + "title":"Domain name to which TCA needs to be applied", + "type":"string" + }, + "metricsPerEventName":{ + "propertyOrder":1002, + "uniqueItems":"true", + "format":"tabs-top", + "title":"Contains eventName and threshold details that need to be applied to given eventName", + "type":"array", + "items":{ + "type":"object", + "required":[ + "controlLoopSchemaType", + "eventName", + "policyName", + "policyScope", + "policyVersion", + "thresholds", + "context", + "signature" + ], + "properties":{ + "policyVersion":{ + "propertyOrder":1007, + "title":"TCA Policy Scope Version", + "type":"string" + }, + "thresholds":{ + "propertyOrder":1008, + "uniqueItems":"true", + "format":"tabs-top", + "title":"Thresholds associated with eventName", + "type":"array", + "items":{ + "type":"object", + "required":[ + "closedLoopControlName", + "closedLoopEventStatus", + "direction", + "fieldPath", + "severity", + "thresholdValue", + "version" + ], + "properties":{ + "severity":{ + "propertyOrder":1013, + "title":"Threshold Event Severity", + "type":"string", + "enum":[ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "NORMAL" + ] + }, + "fieldPath":{ + "propertyOrder":1012, + "title":"Json field Path as per CEF message which needs to be analyzed for TCA", + "type":"string", + "enum":[ + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated", + "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle", + "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt", + "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice", + "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq", + "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal", + "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem", + "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait", + "$.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage", + "$.event.measurementsForVfScalingFields.meanRequestLatency", + "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered", + "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached", + "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured", + "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree", + "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed", + "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value" + ] + }, + "thresholdValue":{ + "propertyOrder":1014, + "title":"Threshold value for the field Path inside CEF message", + "type":"integer" + }, + "closedLoopEventStatus":{ + "propertyOrder":1010, + "title":"Closed Loop Event Status of the threshold", + "type":"string", + "enum":[ + "ONSET", + "ABATED" + ] + }, + "closedLoopControlName":{ + "propertyOrder":1009, + "title":"Closed Loop Control Name associated with the threshold", + "type":"string" + }, + "version":{ + "propertyOrder":1015, + "title":"Version number associated with the threshold", + "type":"string" + }, + "direction":{ + "propertyOrder":1011, + "title":"Direction of the threshold", + "type":"string", + "enum":[ + "LESS", + "LESS_OR_EQUAL", + "GREATER", + "GREATER_OR_EQUAL", + "EQUAL" + ] + } + } + } + }, + "policyName":{ + "propertyOrder":1005, + "title":"TCA Policy Scope Name", + "type":"string" + }, + "signature":{ + "propertyOrder":1017, + "title":"Signature", + "required":[ + "filter_clause" + ], + "properties":{ + "filter_clause":{ + "propertyOrder":30002, + "qschema":{ + "filters":[ + { + "operators":[ + "equals" + ], + "minLength":1, + "id":"alarmCondition", + "label":"alarmCondition", + "type":"string" + } + ] + }, + "minLength":1, + "title":"Filter Clause", + "type":"qbldr" + } + } + }, + "controlLoopSchemaType":{ + "propertyOrder":1003, + "title":"Specifies Control Loop Schema Type for the event Name e.g. VNF, VM", + "type":"string", + "enum":[ + "VM", + "VNF" + ] + }, + "policyScope":{ + "propertyOrder":1006, + "title":"TCA Policy Scope", + "type":"string" + }, + "context":{ + "propertyOrder":1016, + "options":{ + "enum_titles":[ + "PROD" + ] + }, + "title":"TCA Policy Dummy Context", + "type":"string", + "enum":[ + "PROD" + ] + }, + "eventName":{ + "propertyOrder":1004, + "title":"Event name to which thresholds need to be applied", + "type":"string" + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/ui-react/src/LoopUI.js b/ui-react/src/LoopUI.js index 9eea0be95..19b0814db 100644 --- a/ui-react/src/LoopUI.js +++ b/ui-react/src/LoopUI.js @@ -43,6 +43,7 @@ import ConfigurationPolicyModal from './components/dialogs/ConfigurationPolicy/C import LoopPropertiesModal from './components/dialogs/Loop/LoopPropertiesModal'; import UserInfoModal from './components/dialogs/UserInfoModal'; import LoopService from './api/LoopService'; +import UploadToscaPolicyModal from './components/dialogs/Tosca/UploadToscaPolicyModal'; import ViewToscaPolicyModal from './components/dialogs/Tosca/ViewToscaPolicyModal'; import ViewBlueprintMicroServiceTemplatesModal from './components/dialogs/Tosca/ViewBlueprintMicroServiceTemplatesModal'; import PerformAction from './components/dialogs/PerformActions'; @@ -248,6 +249,7 @@ export default class LoopUI extends React.Component { render() { return ( + ()} /> ()} /> ()} /> + + { + if (event.target.files && event.target.files[0]) { + const scope = this; + let reader = new FileReader(); + this.setState({policyModelType: '', policyModelTosca: '' }); + reader.onload = function(e) { + var lines = reader.result.split('\n'); + for (var line = 0; line < lines.length; line++) { + if(lines[line].trim().slice(0, 24) === 'onap.policies.monitoring') { + var microsvc = lines[line].trim().slice(0, -1); + scope.setState({ policyModelType: microsvc, policyModelTosca: reader.result}); + } + } + }; + console.log("Filename is", event.target.files[0]); + reader.readAsText(event.target.files[0]); + } + this.setState({selectedFile: event.target.files[0]}); + }; + + handleClose() { + this.setState({ show: false }); + this.props.history.push('/'); + } + + handleUploadToscaPolicyModel(e) { + e.preventDefault(); + console.log("Policy Model Type is", this.state.policyModelType); + if(this.state.policyModelType && this.state.policyModelTosca) { + TemplateMenuService.uploadToscaPolicyModal(this.state.policyModelType, this.state.policyModelTosca).then(resp => { + if(resp.status === 200) { + this.setState({apiResponseStatus: resp.status, apiResponseMessage: resp.message, upldBtnClicked: true}); + } else { + this.setState({apiResponseStatus: 500, apiResponseMessage: resp, upldBtnClicked: true}); + } + }); + } else { + this.setState({apiResponse: 500, apiResponseMessage: 'Parameters are missing', upldBtnClicked: true}); + } +} + + handlePolicyModelType = event => { + this.setState({ + policyModelType: event.target.value + }) + } + + render() { + return ( + + + Upload Tosca Modal + + + + + this.fileInput = fileInput}/> + + +

{this.state.selectedFile.name}

+
+ Micro Service Name: + + +
+
+ + {!this.state.apiResponseStatus?:""} + {!this.state.apiResponseStatus?:""} + {this.state.apiResponseStatus? +

{this.state.apiResponseMessage}

+ +
:""} +
+
+ ); + } +} diff --git a/ui-react/src/components/dialogs/Tosca/UploadToscaPolicyModal.test.js b/ui-react/src/components/dialogs/Tosca/UploadToscaPolicyModal.test.js new file mode 100644 index 000000000..dac8ac920 --- /dev/null +++ b/ui-react/src/components/dialogs/Tosca/UploadToscaPolicyModal.test.js @@ -0,0 +1,87 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2020 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============================================ + * =================================================================== + * + */ +import React from 'react'; +import { shallow } from 'enzyme'; +import UploadToscaPolicyModal from './UploadToscaPolicyModal'; + + +describe('Test Upload Tosca Policy Model', () => { + + it('Test handleMicroServiceName', () => { + + const component = shallow(); + + const inputValue = 'TCA' + + const button = component.find('input').at(1); + + button.simulate('change', { target: { value: inputValue }}); + + expect(component.state('policyModelType')).toEqual(inputValue); + + expect(component).toMatchSnapshot(); + + }); + + it('Test handleUploadToscaPolicyModel for Tosca Model', () => { + + const component = shallow(); + + const fakeEvent = { preventDefault: () => console.log('preventDefault') }; + + component.setState({ + policyModelType: "TCA", + upldBtnClicked: false, + policyModelTosca: "TCAToscaModelYaml", + selectedFile: { name: "tca.yaml"} + }); + + const Button = component.find('Button').at(1); + + Button.simulate('click', fakeEvent); + + expect(component.state('policyModelTosca')).toEqual('TCAToscaModelYaml'); + + }); + + it('Test handleClose', () => { + + const historyMock = { push: jest.fn() }; + + const handleClose = jest.spyOn(UploadToscaPolicyModal.prototype,'handleClose'); + + const component = shallow() + + component.find('[variant="secondary"]').at(1).prop('onClick')(); + + expect(handleClose).toHaveBeenCalledTimes(1); + + expect(component.state('show')).toEqual(false); + + expect(historyMock.push.mock.calls[0]).toEqual([ '/']); + + handleClose.mockClear(); + + }); + +}); diff --git a/ui-react/src/components/dialogs/Tosca/ViewToscaPolicyModal.js b/ui-react/src/components/dialogs/Tosca/ViewToscaPolicyModal.js index 6a93d4d98..5b66a25c0 100644 --- a/ui-react/src/components/dialogs/Tosca/ViewToscaPolicyModal.js +++ b/ui-react/src/components/dialogs/Tosca/ViewToscaPolicyModal.js @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights + * Copyright (C) 2020 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -58,29 +58,29 @@ export default class ViewToscalPolicyModal extends React.Component { show: true, content: 'Please select Tosca model to view the details', selectedRow: -1, - toscaNames: [], + toscaPolicyModelNames: [], toscaColumns: [ { title: "#", field: "index", render: rowData => rowData.tableData.id + 1, cellStyle: cellStyle, headerStyle: headerStyle }, - { title: "Micro Service Name", field: "toscaModelName", + { title: "Policy Model Type", field: "policyModelType", cellStyle: cellStyle, headerStyle: headerStyle }, - { title: "PolicyType", field: "policyType", + { title: "Policy Acronym", field: "policyAcronym", cellStyle: cellStyle, headerStyle: headerStyle }, - { title: "Version", field: "toscaModelRevisions[0].version", + { title: "Version", field: "version", cellStyle: cellStyle, headerStyle: headerStyle }, - { title: "Uploaded By", field: "userId", + { title: "Uploaded By", field: "updatedBy", cellStyle: cellStyle, headerStyle: headerStyle }, - { title: "Uploaded Date", field: "lastUpdatedDate", editable: 'never', + { title: "Uploaded Date", field: "updatedDate", editable: 'never', cellStyle: cellStyle, headerStyle: headerStyle } @@ -101,6 +101,7 @@ export default class ViewToscalPolicyModal extends React.Component { this.handleClose = this.handleClose.bind(this); this.getPolicyToscaModels = this.getToscaPolicyModels.bind(this); this.handleYamlContent = this.handleYamlContent.bind(this); + this.getToscaPolicyModelYaml = this.getToscaPolicyModelYaml.bind(this); } componentWillMount() { @@ -108,11 +109,25 @@ export default class ViewToscalPolicyModal extends React.Component { } getToscaPolicyModels() { - TemplateMenuService.getToscaPolicyModels().then(toscaNames => { - this.setState({ toscaNames: toscaNames }); + TemplateMenuService.getToscaPolicyModels().then(toscaPolicyModelNames => { + this.setState({ toscaPolicyModelNames: toscaPolicyModelNames }); }); } + getToscaPolicyModelYaml(policyModelType) { + if (typeof policyModelType !== "undefined") { + TemplateMenuService.getToscaPolicyModelYaml(policyModelType).then(toscaYaml => { + if (toscaYaml.length !== 0) { + this.setState({content: toscaYaml}) + } else { + this.setState({ content: 'Please select Tosca model to view the details' }) + } + }); + } else { + this.setState({ content: 'Please select Tosca model to view the details' }) + } + } + handleYamlContent(event) { this.setState({ content: event.target.value }); } @@ -130,10 +145,10 @@ export default class ViewToscalPolicyModal extends React.Component { {this.setState({content: rowData.toscaModelRevisions[0].toscaModelYaml, selectedRow: rowData.tableData.id})}} + onRowClick={(event, rowData) => {this.getToscaPolicyModelYaml(rowData.policyModelType);this.setState({selectedRow: rowData.tableData.id})}} options={{ headerStyle: rowHeaderStyle, rowStyle: rowData => ({ diff --git a/ui-react/src/components/dialogs/Tosca/ViewToscaPolicyModal.test.js b/ui-react/src/components/dialogs/Tosca/ViewToscaPolicyModal.test.js index 1445e8863..952e88867 100644 --- a/ui-react/src/components/dialogs/Tosca/ViewToscaPolicyModal.test.js +++ b/ui-react/src/components/dialogs/Tosca/ViewToscaPolicyModal.test.js @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights + * Copyright (C) 2020 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -39,12 +39,12 @@ describe('Verify ViewToscaPolicyModal', () => { json: () => { return Promise.resolve({ "index": "1", - "toscaModelYaml":"MTCA", - "toscaModelName":"DCAE_MTCAConfig", - "version":"16", - "userId":"aj928f", - "policyType":"mtca", - "lastUpdatedDate":"05-07-2019 19:09:42" + "policyModelTosca":"TCA", + "policyModelType":"onap.policies.monitoring.cdap.tca.hi.lo.app", + "version":"1.0.0", + "policyAcronym": "TCA", + "updatedDate": "2020-01-31T20:49:48.658795600Z", + "updatedBy": "admin" }); } }); @@ -60,11 +60,12 @@ describe('Verify ViewToscaPolicyModal', () => { json: () => { return Promise.resolve({ "index": "1", - "toscaModelName":"DCAE_MTCAConfig", - "version":"16", - "userId":"aj928f", - "policyType":"mtca", - "lastUpdatedDate":"05-07-2019 19:09:42" + "policyModelTosca":"TCA", + "policyModelType":"onap.policies.monitoring.cdap.tca.hi.lo.app", + "version":"1.0.0", + "policyAcronym": "TCA", + "updatedDate": "2020-01-31T20:49:48.658795600Z", + "updatedBy": "admin" }); } }); @@ -95,12 +96,12 @@ describe('Verify ViewToscaPolicyModal', () => { json: () => { return Promise.resolve({ "index": "1", - "toscaModelYaml":"MTCA", - "toscaModelName":"DCAE_MTCAConfig", - "version":"16", - "userId":"aj928f", - "policyType":"mtca", - "lastUpdatedDate":"05-07-2019 19:09:42" + "policyModelTosca":"TCA", + "policyModelType":"onap.policies.monitoring.cdap.tca.hi.lo.app", + "version":"1.0.0", + "policyAcronym": "TCA", + "updatedDate": "2020-01-31T20:49:48.658795600Z", + "updatedBy": "admin" }); } }); @@ -108,12 +109,12 @@ describe('Verify ViewToscaPolicyModal', () => { const component = shallow(); component.setState({ toscaNames: { "index": "1", - "toscaModelYaml": "MTCA", - "toscaModelName": "DCAE_MTCAConfig", - "version" : "16", - "userId" : "aj928f", - "policyType" : "mtca", - "lastUpdatedDate" : "05-07-2019 19:09:42" + "policyModelTosca":"TCA", + "policyModelType":"onap.policies.monitoring.cdap.tca.hi.lo.app", + "version":"1.0.0", + "policyAcronym": "TCA", + "updatedDate": "2020-01-31T20:49:48.658795600Z", + "updatedBy": "admin" } }); expect(component).toMatchSnapshot(); @@ -127,12 +128,12 @@ describe('Verify ViewToscaPolicyModal', () => { json: () => { return Promise.resolve({ "index": "1", - "toscaModelYaml":"MTCA", - "toscaModelName":"DCAE_MTCAConfig", - "version":"16", - "userId":"aj928f", - "policyType":"mtca", - "lastUpdatedDate":"05-07-2019 19:09:42" + "policyModelTosca":"TCA", + "policyModelType":"onap.policies.monitoring.cdap.tca.hi.lo.app", + "version":"1.0.0", + "policyAcronym": "TCA", + "updatedDate": "2020-01-31T20:49:48.658795600Z", + "updatedBy": "admin" }); } }); @@ -149,17 +150,17 @@ describe('Verify ViewToscaPolicyModal', () => { json: () => { return Promise.resolve({ "index": "1", - "toscaModelYaml":"MTCA", - "toscaModelName":"DCAE_MTCAConfig", - "version":"16", - "userId":"aj928f", - "policyType":"mtca", - "lastUpdatedDate":"05-07-2019 19:09:42" + "policyModelTosca":"TCA", + "policyModelType":"onap.policies.monitoring.cdap.tca.hi.lo.app", + "version":"1.0.0", + "policyAcronym":"TCA", + "updatedDate": "2020-01-31T20:49:48.658795600Z", + "updatedBy": "admin" }); } }); }); - const yamlContent = 'MTCA Tosca model details'; + const yamlContent = 'TCA Tosca model details'; const component = shallow(); component.find('[value="Please select Tosca model to view the details"]').prop('onChange')({ target: { value: yamlContent }}); expect(component.state('content')).toEqual(yamlContent); @@ -173,12 +174,12 @@ describe('Verify ViewToscaPolicyModal', () => { json: () => { return Promise.resolve({ "index": "1", - "toscaModelYaml":"MTCA", - "toscaModelName":"DCAE_MTCAConfig", - "version":"16", - "userId":"aj928f", - "policyType":"mtca", - "lastUpdatedDate":"05-07-2019 19:09:42" + "policyModelTosca":"TCA", + "policyModelType":"onap.policies.monitoring.cdap.tca.hi.lo.app", + "version":"1.0.0", + "policyAcronym": "TCA", + "updatedDate": "2020-01-31T20:49:48.658795600Z", + "updatedBy": "admin" }); } }); diff --git a/ui-react/src/components/dialogs/Tosca/__snapshots__/UploadToscaPolicyModal.test.js.snap b/ui-react/src/components/dialogs/Tosca/__snapshots__/UploadToscaPolicyModal.test.js.snap new file mode 100644 index 000000000..1b5cd82a8 --- /dev/null +++ b/ui-react/src/components/dialogs/Tosca/__snapshots__/UploadToscaPolicyModal.test.js.snap @@ -0,0 +1,111 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Test Upload Tosca Policy Model Test handleMicroServiceName 1`] = ` + + + + Upload Tosca Modal + + + + + + + + +

+ + + Micro Service Name: + + + + + + + + + + +`; diff --git a/ui-react/src/components/dialogs/Tosca/__snapshots__/ViewToscaPolicyModal.test.js.snap b/ui-react/src/components/dialogs/Tosca/__snapshots__/ViewToscaPolicyModal.test.js.snap index e7294c080..fc5eef024 100644 --- a/ui-react/src/components/dialogs/Tosca/__snapshots__/ViewToscaPolicyModal.test.js.snap +++ b/ui-react/src/components/dialogs/Tosca/__snapshots__/ViewToscaPolicyModal.test.js.snap @@ -30,29 +30,29 @@ exports[`Verify ViewToscaPolicyModal Test the tosca model view render method 1`] "cellStyle": Object { "border": "1px solid black", }, - "field": "toscaModelName", + "field": "policyModelType", "headerStyle": Object { "backgroundColor": "#ddd", "border": "2px solid black", }, - "title": "Micro Service Name", + "title": "Policy Model Type", }, Object { "cellStyle": Object { "border": "1px solid black", }, - "field": "policyType", + "field": "policyAcronym", "headerStyle": Object { "backgroundColor": "#ddd", "border": "2px solid black", }, - "title": "PolicyType", + "title": "Policy Acronym", }, Object { "cellStyle": Object { "border": "1px solid black", }, - "field": "toscaModelRevisions[0].version", + "field": "version", "headerStyle": Object { "backgroundColor": "#ddd", "border": "2px solid black", @@ -63,7 +63,7 @@ exports[`Verify ViewToscaPolicyModal Test the tosca model view render method 1`] "cellStyle": Object { "border": "1px solid black", }, - "field": "userId", + "field": "updatedBy", "headerStyle": Object { "backgroundColor": "#ddd", "border": "2px solid black", @@ -75,7 +75,7 @@ exports[`Verify ViewToscaPolicyModal Test the tosca model view render method 1`] "border": "1px solid black", }, "editable": "never", - "field": "lastUpdatedDate", + "field": "updatedDate", "headerStyle": Object { "backgroundColor": "#ddd", "border": "2px solid black", @@ -84,17 +84,7 @@ exports[`Verify ViewToscaPolicyModal Test the tosca model view render method 1`] }, ] } - data={ - Object { - "index": "1", - "lastUpdatedDate": "05-07-2019 19:09:42", - "policyType": "mtca", - "toscaModelName": "DCAE_MTCAConfig", - "toscaModelYaml": "MTCA", - "userId": "aj928f", - "version": "16", - } - } + data={Array []} icons={ Object { "FirstPage": Object { diff --git a/ui-react/src/components/menu/MenuBar.js b/ui-react/src/components/menu/MenuBar.js index 41a105488..6fae008ef 100644 --- a/ui-react/src/components/menu/MenuBar.js +++ b/ui-react/src/components/menu/MenuBar.js @@ -88,7 +88,8 @@ export default class MenuBar extends React.Component { - View Tosca Policy Models + Upload Tosca Policy Model + View Tosca Policy Models View Blueprint MicroService Templates diff --git a/ui-react/src/components/menu/__snapshots__/MenuBar.test.js.snap b/ui-react/src/components/menu/__snapshots__/MenuBar.test.js.snap index c17214aad..7ed386ff2 100644 --- a/ui-react/src/components/menu/__snapshots__/MenuBar.test.js.snap +++ b/ui-react/src/components/menu/__snapshots__/MenuBar.test.js.snap @@ -38,6 +38,57 @@ exports[`Verify MenuBar Test the render method 1`] = ` [Function], "; } +", + ], + }, + "displayName": "Styled(Link)", + "foldedComponentIds": Array [], + "render": [Function], + "styledComponentId": "sc-bdVaJa", + "target": [Function], + "toString": [Function], + "warnTooManyClasses": [Function], + "withComponent": [Function], + } + } + disabled={false} + to="/uploadToscaPolicyModal" + > + Upload Tosca Policy Model + + Date: Thu, 12 Mar 2020 14:38:07 -0700 Subject: Fix the new tosca converter Fix the metadata section analysis and make the tosca parser more configurable (in applications.properties) Issue-ID: CLAMP-580 Signed-off-by: sebdet Change-Id: I9068bd9dc89861c640660a7f78fae2cb70bdc178 Signed-off-by: sebdet --- docs/swagger/swagger.json | 457 +- docs/swagger/swagger.pdf | 36376 +++++++++++-------- extra/sql/dump/test-data.sql | 30 +- .../onap/clamp/clds/tosca/update/ArrayField.java | 72 - .../onap/clamp/clds/tosca/update/Constraint.java | 221 - .../clamp/clds/tosca/update/MetadataParser.java | 46 - .../org/onap/clamp/clds/tosca/update/Property.java | 134 - .../org/onap/clamp/clds/tosca/update/Template.java | 224 - .../clamp/clds/tosca/update/TemplateField.java | 148 - .../clds/tosca/update/ToscaConverterManager.java | 192 - .../clds/tosca/update/ToscaConverterToJson.java | 331 - .../ToscaConverterWithDictionarySupport.java | 93 + .../onap/clamp/clds/tosca/update/ToscaElement.java | 121 - .../clamp/clds/tosca/update/ToscaItemsParser.java | 109 - .../clds/tosca/update/elements/ArrayField.java | 72 + .../clds/tosca/update/elements/Constraint.java | 222 + .../clds/tosca/update/elements/ToscaElement.java | 121 + .../update/elements/ToscaElementProperty.java | 135 + .../update/parser/ToscaConverterToJsonSchema.java | 340 + .../tosca/update/parser/ToscaElementParser.java | 103 + .../parser/metadata/ToscaMetadataParser.java | 31 + .../ToscaMetadataParserWithDictionarySupport.java | 178 + .../clds/tosca/update/templates/JsonTemplate.java | 224 + .../tosca/update/templates/JsonTemplateField.java | 149 + .../update/templates/JsonTemplateManager.java | 184 + .../clamp/clds/util/drawing/ClampGraphBuilder.java | 2 +- src/main/java/org/onap/clamp/loop/Loop.java | 38 +- .../java/org/onap/clamp/loop/LoopController.java | 3 +- src/main/java/org/onap/clamp/loop/LoopService.java | 23 +- .../clamp/loop/service/CsarServiceInstaller.java | 13 +- .../java/org/onap/clamp/loop/service/Service.java | 12 +- .../onap/clamp/loop/template/LoopElementModel.java | 27 +- .../clamp/loop/template/PolicyModelsService.java | 2 +- src/main/java/org/onap/clamp/policy/Policy.java | 23 - .../policy/microservice/MicroServicePolicy.java | 51 +- .../policy/operational/OperationalPolicy.java | 99 +- .../OperationalPolicyRepresentationBuilder.java | 19 +- src/main/resources/META-INF/resources/swagger.html | 941 +- src/main/resources/application-noaaf.properties | 4 +- src/main/resources/application.properties | 4 +- .../clds/tosca-converter/default-tosca-types.yaml | 87 + .../resources/clds/tosca-converter/templates.json | 398 + .../clds/tosca_update/default-tosca-types.yaml | 87 - .../resources/clds/tosca_update/templates.json | 398 - .../clamp/clds/config/CldsUserJsonDecoderTest.java | 4 +- .../it/config/CldsReferencePropertiesItCase.java | 1 + .../tosca/ToscaYamlToJsonConvertorTestItCase.java | 44 +- .../clamp/clds/tosca/update/ArrayFieldTest.java | 16 +- .../clamp/clds/tosca/update/ConstraintTest.java | 48 +- .../clds/tosca/update/JsonTemplateManagerTest.java | 203 + .../clamp/clds/tosca/update/JsonTemplateTest.java | 51 + .../onap/clamp/clds/tosca/update/PropertyTest.java | 71 - .../onap/clamp/clds/tosca/update/TemplateTest.java | 46 - .../tosca/update/ToscaConverterManagerTest.java | 205 - .../ToscaConverterWithDictionarySupportItCase.java | 118 + .../tosca/update/ToscaElementPropertyTest.java | 79 + .../clamp/clds/tosca/update/ToscaElementTest.java | 12 +- .../clds/util/drawing/ClampGraphBuilderTest.java | 13 +- .../clds/util/drawing/SvgLoopGeneratorTest.java | 8 +- .../org/onap/clamp/loop/CsarInstallerItCase.java | 4 +- .../onap/clamp/loop/LoopControllerTestItCase.java | 14 +- .../org/onap/clamp/loop/PolicyComponentTest.java | 10 +- .../microservice/MicroServicePayloadTest.java | 2 +- .../microservice/OperationalPolicyPayloadTest.java | 8 +- .../onap/clamp/util/SemanticVersioningTest.java | 16 +- src/test/resources/application.properties | 4 +- .../resources/clds/camel/rest/clamp-api-v2.xml | 984 - .../1.0.0?connectionTimeToLive=5000/.file | 4 +- .../1.0.0?connectionTimeToLive=5000/.file | 4 +- .../tosca/new-converter/tca-with-metadata.json | 222 + .../tosca/new-converter/tca-with-metadata.yaml | 184 + 71 files changed, 26132 insertions(+), 18787 deletions(-) delete mode 100644 src/main/java/org/onap/clamp/clds/tosca/update/ArrayField.java delete mode 100644 src/main/java/org/onap/clamp/clds/tosca/update/Constraint.java delete mode 100644 src/main/java/org/onap/clamp/clds/tosca/update/MetadataParser.java delete mode 100644 src/main/java/org/onap/clamp/clds/tosca/update/Property.java delete mode 100644 src/main/java/org/onap/clamp/clds/tosca/update/Template.java delete mode 100644 src/main/java/org/onap/clamp/clds/tosca/update/TemplateField.java delete mode 100644 src/main/java/org/onap/clamp/clds/tosca/update/ToscaConverterManager.java delete mode 100644 src/main/java/org/onap/clamp/clds/tosca/update/ToscaConverterToJson.java create mode 100644 src/main/java/org/onap/clamp/clds/tosca/update/ToscaConverterWithDictionarySupport.java delete mode 100644 src/main/java/org/onap/clamp/clds/tosca/update/ToscaElement.java delete mode 100644 src/main/java/org/onap/clamp/clds/tosca/update/ToscaItemsParser.java create mode 100644 src/main/java/org/onap/clamp/clds/tosca/update/elements/ArrayField.java create mode 100644 src/main/java/org/onap/clamp/clds/tosca/update/elements/Constraint.java create mode 100644 src/main/java/org/onap/clamp/clds/tosca/update/elements/ToscaElement.java create mode 100644 src/main/java/org/onap/clamp/clds/tosca/update/elements/ToscaElementProperty.java create mode 100644 src/main/java/org/onap/clamp/clds/tosca/update/parser/ToscaConverterToJsonSchema.java create mode 100644 src/main/java/org/onap/clamp/clds/tosca/update/parser/ToscaElementParser.java create mode 100644 src/main/java/org/onap/clamp/clds/tosca/update/parser/metadata/ToscaMetadataParser.java create mode 100644 src/main/java/org/onap/clamp/clds/tosca/update/parser/metadata/ToscaMetadataParserWithDictionarySupport.java create mode 100644 src/main/java/org/onap/clamp/clds/tosca/update/templates/JsonTemplate.java create mode 100644 src/main/java/org/onap/clamp/clds/tosca/update/templates/JsonTemplateField.java create mode 100644 src/main/java/org/onap/clamp/clds/tosca/update/templates/JsonTemplateManager.java create mode 100644 src/main/resources/clds/tosca-converter/default-tosca-types.yaml create mode 100644 src/main/resources/clds/tosca-converter/templates.json delete mode 100644 src/main/resources/clds/tosca_update/default-tosca-types.yaml delete mode 100644 src/main/resources/clds/tosca_update/templates.json create mode 100644 src/test/java/org/onap/clamp/clds/tosca/update/JsonTemplateManagerTest.java create mode 100644 src/test/java/org/onap/clamp/clds/tosca/update/JsonTemplateTest.java delete mode 100644 src/test/java/org/onap/clamp/clds/tosca/update/PropertyTest.java delete mode 100644 src/test/java/org/onap/clamp/clds/tosca/update/TemplateTest.java delete mode 100644 src/test/java/org/onap/clamp/clds/tosca/update/ToscaConverterManagerTest.java create mode 100644 src/test/java/org/onap/clamp/clds/tosca/update/ToscaConverterWithDictionarySupportItCase.java create mode 100644 src/test/java/org/onap/clamp/clds/tosca/update/ToscaElementPropertyTest.java delete mode 100644 src/test/resources/clds/camel/rest/clamp-api-v2.xml create mode 100644 src/test/resources/tosca/new-converter/tca-with-metadata.json create mode 100644 src/test/resources/tosca/new-converter/tca-with-metadata.yaml (limited to 'src/test/resources/clds') diff --git a/docs/swagger/swagger.json b/docs/swagger/swagger.json index 1ed4a4ba6..e1e133771 100644 --- a/docs/swagger/swagger.json +++ b/docs/swagger/swagger.json @@ -4,13 +4,29 @@ "version" : "5.0.0-SNAPSHOT", "title" : "Clamp Rest API" }, - "host" : "localhost:46347", + "host" : "localhost:41607", "basePath" : "/restservices/clds/", "schemes" : [ "http" ], "paths" : { + "/v2/clampInformation" : { + "get" : { + "operationId" : "route35", + "produces" : [ "application/json" ], + "responses" : { + "200" : { + "description" : "Output type", + "schema" : { + "$ref" : "#/definitions/ClampInformation" + } + } + }, + "x-camelContextId" : "camel-1", + "x-routeId" : "route35" + } + }, "/v2/dictionary" : { "get" : { - "operationId" : "route49", + "operationId" : "route21", "produces" : [ "application/json" ], "responses" : { "200" : { @@ -20,11 +36,11 @@ } } }, - "x-camelContextId" : "camel-2", - "x-routeId" : "route49" + "x-camelContextId" : "camel-1", + "x-routeId" : "route21" }, "put" : { - "operationId" : "route51", + "operationId" : "route23", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { @@ -43,8 +59,8 @@ } } }, - "x-camelContextId" : "camel-2", - "x-routeId" : "route51" + "x-camelContextId" : "camel-1", + "x-routeId" : "route23" } }, "/v2/dictionary/{dictionaryName}" : { @@ -64,7 +80,7 @@ } } }, - "x-camelContextId" : "camel-2", + "x-camelContextId" : "camel-1", "x-routeId" : null } }, @@ -93,11 +109,11 @@ } } }, - "x-camelContextId" : "camel-2", + "x-camelContextId" : "camel-1", "x-routeId" : null }, "delete" : { - "operationId" : "route53", + "operationId" : "route25", "produces" : [ "application/json" ], "parameters" : [ { "name" : "name", @@ -108,8 +124,8 @@ "responses" : { "200" : { } }, - "x-camelContextId" : "camel-2", - "x-routeId" : "route53" + "x-camelContextId" : "camel-1", + "x-routeId" : "route25" } }, "/v2/dictionary/{name}/elements/{shortName}" : { @@ -129,7 +145,7 @@ "responses" : { "200" : { } }, - "x-camelContextId" : "camel-2", + "x-camelContextId" : "camel-1", "x-routeId" : null } }, @@ -147,13 +163,13 @@ } } }, - "x-camelContextId" : "camel-2", + "x-camelContextId" : "camel-1", "x-routeId" : null } }, "/v2/loop/{loopName}" : { "get" : { - "operationId" : "route34", + "operationId" : "route3", "produces" : [ "application/json" ], "parameters" : [ { "name" : "loopName", @@ -169,13 +185,68 @@ } } }, - "x-camelContextId" : "camel-2", - "x-routeId" : "route34" + "x-camelContextId" : "camel-1", + "x-routeId" : "route3" + } + }, + "/v2/loop/addOperationaPolicy/{loopName}/policyModel/{policyType}/{policyVersion}" : { + "put" : { + "operationId" : "route16", + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "loopName", + "in" : "path", + "required" : true, + "type" : "string" + }, { + "name" : "policyType", + "in" : "path", + "required" : true, + "type" : "string" + }, { + "name" : "policyVersion", + "in" : "path", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "Output type", + "schema" : { + "$ref" : "#/definitions/Loop" + } + } + }, + "x-camelContextId" : "camel-1", + "x-routeId" : "route16" + } + }, + "/v2/loop/create/{loopName}?templateName={templateName}" : { + "post" : { + "operationId" : "route18", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "loopName}?templateName={templateName", + "in" : "path", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "Output type", + "schema" : { + "$ref" : "#/definitions/Loop" + } + } + }, + "x-camelContextId" : "camel-1", + "x-routeId" : "route18" } }, "/v2/loop/delete/{loopName}" : { "put" : { - "operationId" : "route45", + "operationId" : "route14", "parameters" : [ { "name" : "loopName", "in" : "path", @@ -185,13 +256,13 @@ "responses" : { "200" : { } }, - "x-camelContextId" : "camel-2", - "x-routeId" : "route45" + "x-camelContextId" : "camel-1", + "x-routeId" : "route14" } }, "/v2/loop/deploy/{loopName}" : { "put" : { - "operationId" : "route39", + "operationId" : "route8", "produces" : [ "application/json" ], "parameters" : [ { "name" : "loopName", @@ -207,13 +278,13 @@ } } }, - "x-camelContextId" : "camel-2", - "x-routeId" : "route39" + "x-camelContextId" : "camel-1", + "x-routeId" : "route8" } }, "/v2/loop/getAllNames" : { "get" : { - "operationId" : "route33", + "operationId" : "route2", "produces" : [ "application/json" ], "responses" : { "200" : { @@ -226,13 +297,13 @@ } } }, - "x-camelContextId" : "camel-2", - "x-routeId" : "route33" + "x-camelContextId" : "camel-1", + "x-routeId" : "route2" } }, "/v2/loop/getstatus/{loopName}" : { "get" : { - "operationId" : "route46", + "operationId" : "route15", "produces" : [ "application/json" ], "parameters" : [ { "name" : "loopName", @@ -248,19 +319,51 @@ } } }, - "x-camelContextId" : "camel-2", - "x-routeId" : "route46" + "x-camelContextId" : "camel-1", + "x-routeId" : "route15" } }, "/v2/loop/refreshOpPolicyJsonSchema/{loopName}" : { "put" : { - "operationId" : "route40", + "operationId" : "route9", + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "loopName", + "in" : "path", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "Output type", + "schema" : { + "$ref" : "#/definitions/Loop" + } + } + }, + "x-camelContextId" : "camel-1", + "x-routeId" : "route9" + } + }, + "/v2/loop/removeOperationaPolicy/{loopName}/policyModel/{policyType}/{policyVersion}" : { + "put" : { + "operationId" : "route17", "produces" : [ "application/json" ], "parameters" : [ { "name" : "loopName", "in" : "path", "required" : true, "type" : "string" + }, { + "name" : "policyType", + "in" : "path", + "required" : true, + "type" : "string" + }, { + "name" : "policyVersion", + "in" : "path", + "required" : true, + "type" : "string" } ], "responses" : { "200" : { @@ -270,13 +373,13 @@ } } }, - "x-camelContextId" : "camel-2", - "x-routeId" : "route40" + "x-camelContextId" : "camel-1", + "x-routeId" : "route17" } }, "/v2/loop/restart/{loopName}" : { "put" : { - "operationId" : "route43", + "operationId" : "route12", "produces" : [ "application/json" ], "parameters" : [ { "name" : "loopName", @@ -292,13 +395,13 @@ } } }, - "x-camelContextId" : "camel-2", - "x-routeId" : "route43" + "x-camelContextId" : "camel-1", + "x-routeId" : "route12" } }, "/v2/loop/stop/{loopName}" : { "put" : { - "operationId" : "route42", + "operationId" : "route11", "produces" : [ "application/json" ], "parameters" : [ { "name" : "loopName", @@ -314,13 +417,13 @@ } } }, - "x-camelContextId" : "camel-2", - "x-routeId" : "route42" + "x-camelContextId" : "camel-1", + "x-routeId" : "route11" } }, "/v2/loop/submit/{loopName}" : { "put" : { - "operationId" : "route44", + "operationId" : "route13", "produces" : [ "application/json" ], "parameters" : [ { "name" : "loopName", @@ -336,13 +439,13 @@ } } }, - "x-camelContextId" : "camel-2", - "x-routeId" : "route44" + "x-camelContextId" : "camel-1", + "x-routeId" : "route13" } }, "/v2/loop/svgRepresentation/{loopName}" : { "get" : { - "operationId" : "route35", + "operationId" : "route4", "produces" : [ "application/xml" ], "parameters" : [ { "name" : "loopName", @@ -358,13 +461,13 @@ } } }, - "x-camelContextId" : "camel-2", - "x-routeId" : "route35" + "x-camelContextId" : "camel-1", + "x-routeId" : "route4" } }, "/v2/loop/undeploy/{loopName}" : { "put" : { - "operationId" : "route41", + "operationId" : "route10", "produces" : [ "application/json" ], "parameters" : [ { "name" : "loopName", @@ -380,13 +483,13 @@ } } }, - "x-camelContextId" : "camel-2", - "x-routeId" : "route41" + "x-camelContextId" : "camel-1", + "x-routeId" : "route10" } }, "/v2/loop/updateGlobalProperties/{loopName}" : { "post" : { - "operationId" : "route36", + "operationId" : "route5", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { @@ -410,13 +513,13 @@ } } }, - "x-camelContextId" : "camel-2", - "x-routeId" : "route36" + "x-camelContextId" : "camel-1", + "x-routeId" : "route5" } }, "/v2/loop/updateMicroservicePolicy/{loopName}" : { "post" : { - "operationId" : "route38", + "operationId" : "route7", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { @@ -440,13 +543,13 @@ } } }, - "x-camelContextId" : "camel-2", - "x-routeId" : "route38" + "x-camelContextId" : "camel-1", + "x-routeId" : "route7" } }, "/v2/loop/updateOperationalPolicies/{loopName}" : { "post" : { - "operationId" : "route37", + "operationId" : "route6", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { @@ -470,13 +573,13 @@ } } }, - "x-camelContextId" : "camel-2", - "x-routeId" : "route37" + "x-camelContextId" : "camel-1", + "x-routeId" : "route6" } }, "/v2/policyToscaModels" : { "get" : { - "operationId" : "route56", + "operationId" : "route28", "produces" : [ "application/json" ], "responses" : { "200" : { @@ -486,11 +589,34 @@ } } }, - "x-camelContextId" : "camel-2", - "x-routeId" : "route56" + "x-camelContextId" : "camel-1", + "x-routeId" : "route28" + }, + "post" : { + "operationId" : "route29", + "consumes" : [ "plain/text" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "in" : "body", + "name" : "body", + "required" : true, + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "200" : { + "description" : "Output type", + "schema" : { + "$ref" : "#/definitions/PolicyModel" + } + } + }, + "x-camelContextId" : "camel-1", + "x-routeId" : "route29" } }, - "/v2/policyToscaModels/{policyModelType}" : { + "/v2/policyToscaModels/{policyModelType}/{policyModelVersion}" : { "get" : { "produces" : [ "application/json" ], "parameters" : [ { @@ -498,6 +624,11 @@ "in" : "path", "required" : true, "type" : "string" + }, { + "name" : "policyModelVersion", + "in" : "path", + "required" : true, + "type" : "string" } ], "responses" : { "200" : { @@ -507,11 +638,11 @@ } } }, - "x-camelContextId" : "camel-2", + "x-camelContextId" : "camel-1", "x-routeId" : null }, "put" : { - "operationId" : "route57", + "operationId" : "route30", "consumes" : [ "plain/text" ], "produces" : [ "application/json" ], "parameters" : [ { @@ -519,6 +650,11 @@ "in" : "path", "required" : true, "type" : "string" + }, { + "name" : "policyModelVersion", + "in" : "path", + "required" : true, + "type" : "string" }, { "in" : "body", "name" : "body", @@ -535,11 +671,11 @@ } } }, - "x-camelContextId" : "camel-2", - "x-routeId" : "route57" + "x-camelContextId" : "camel-1", + "x-routeId" : "route30" } }, - "/v2/policyToscaModels/yaml/{policyModelType}" : { + "/v2/policyToscaModels/yaml/{policyModelType}/{policyModelVersion}" : { "get" : { "produces" : [ "application/json" ], "parameters" : [ { @@ -547,6 +683,11 @@ "in" : "path", "required" : true, "type" : "string" + }, { + "name" : "policyModelVersion", + "in" : "path", + "required" : true, + "type" : "string" } ], "responses" : { "200" : { @@ -556,13 +697,13 @@ } } }, - "x-camelContextId" : "camel-2", + "x-camelContextId" : "camel-1", "x-routeId" : null } }, "/v2/templates" : { "get" : { - "operationId" : "route60", + "operationId" : "route34", "produces" : [ "application/json" ], "responses" : { "200" : { @@ -572,8 +713,8 @@ } } }, - "x-camelContextId" : "camel-2", - "x-routeId" : "route60" + "x-camelContextId" : "camel-1", + "x-routeId" : "route34" } }, "/v2/templates/{templateName}" : { @@ -593,7 +734,28 @@ } } }, - "x-camelContextId" : "camel-2", + "x-camelContextId" : "camel-1", + "x-routeId" : null + } + }, + "/v2/templates/{templateName}/svgRepresentation" : { + "get" : { + "produces" : [ "application/xml" ], + "parameters" : [ { + "name" : "templateName", + "in" : "path", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "Output type", + "schema" : { + "type" : "string" + } + } + }, + "x-camelContextId" : "camel-1", "x-routeId" : null } }, @@ -611,13 +773,13 @@ } } }, - "x-camelContextId" : "camel-2", + "x-camelContextId" : "camel-1", "x-routeId" : null } }, "/v1/healthcheck" : { "get" : { - "operationId" : "route61", + "operationId" : "route36", "produces" : [ "application/json" ], "responses" : { "200" : { @@ -627,23 +789,44 @@ } } }, - "x-camelContextId" : "camel-2", - "x-routeId" : "route61" + "x-camelContextId" : "camel-1", + "x-routeId" : "route36" } }, "/v1/user/getUser" : { "get" : { - "operationId" : "route62", + "operationId" : "route37", "produces" : [ "text/plain" ], "responses" : { "200" : { } }, - "x-camelContextId" : "camel-2", - "x-routeId" : "route62" + "x-camelContextId" : "camel-1", + "x-routeId" : "route37" } } }, "definitions" : { + "ClampInformation" : { + "type" : "object", + "properties" : { + "userName" : { + "type" : "string" + }, + "cldsVersion" : { + "type" : "string" + }, + "allPermissions" : { + "type" : "array", + "items" : { + "type" : "string" + } + } + }, + "x-className" : { + "type" : "string", + "format" : "org.onap.clamp.clds.model.ClampInformation" + } + }, "Dictionary" : { "type" : "object", "properties" : { @@ -827,17 +1010,6 @@ "asString" : { "type" : "string" }, - "asByte" : { - "type" : "string", - "format" : "byte" - }, - "asCharacter" : { - "type" : "string" - }, - "asFloat" : { - "type" : "number", - "format" : "float" - }, "asBigDecimal" : { "type" : "number" }, @@ -848,6 +1020,17 @@ "type" : "integer", "format" : "int32" }, + "asFloat" : { + "type" : "number", + "format" : "float" + }, + "asByte" : { + "type" : "string", + "format" : "byte" + }, + "asCharacter" : { + "type" : "string" + }, "asNumber" : { "$ref" : "#/definitions/Number" }, @@ -863,15 +1046,15 @@ "asJsonArray" : { "$ref" : "#/definitions/JsonArray" }, + "asJsonPrimitive" : { + "$ref" : "#/definitions/JsonPrimitive" + }, "jsonNull" : { "type" : "boolean" }, "jsonPrimitive" : { "type" : "boolean" }, - "asJsonPrimitive" : { - "$ref" : "#/definitions/JsonPrimitive" - }, "jsonArray" : { "type" : "boolean" }, @@ -979,24 +1162,27 @@ "asJsonArray" : { "$ref" : "#/definitions/JsonArray" }, + "asJsonPrimitive" : { + "$ref" : "#/definitions/JsonPrimitive" + }, "jsonNull" : { "type" : "boolean" }, "jsonPrimitive" : { "type" : "boolean" }, - "asJsonPrimitive" : { - "$ref" : "#/definitions/JsonPrimitive" - }, "jsonArray" : { "type" : "boolean" }, - "asByte" : { - "type" : "string", - "format" : "byte" + "asBigDecimal" : { + "type" : "number" }, - "asCharacter" : { - "type" : "string" + "asBigInteger" : { + "type" : "integer" + }, + "asShort" : { + "type" : "integer", + "format" : "int32" }, "asJsonNull" : { "$ref" : "#/definitions/JsonNull" @@ -1005,15 +1191,12 @@ "type" : "number", "format" : "float" }, - "asBigDecimal" : { - "type" : "number" - }, - "asBigInteger" : { - "type" : "integer" + "asByte" : { + "type" : "string", + "format" : "byte" }, - "asShort" : { - "type" : "integer", - "format" : "int32" + "asCharacter" : { + "type" : "string" }, "asNumber" : { "$ref" : "#/definitions/Number" @@ -1180,24 +1363,27 @@ "asJsonArray" : { "$ref" : "#/definitions/JsonArray" }, + "asJsonPrimitive" : { + "$ref" : "#/definitions/JsonPrimitive" + }, "jsonNull" : { "type" : "boolean" }, "jsonPrimitive" : { "type" : "boolean" }, - "asJsonPrimitive" : { - "$ref" : "#/definitions/JsonPrimitive" - }, "jsonArray" : { "type" : "boolean" }, - "asByte" : { - "type" : "string", - "format" : "byte" + "asBigDecimal" : { + "type" : "number" }, - "asCharacter" : { - "type" : "string" + "asBigInteger" : { + "type" : "integer" + }, + "asShort" : { + "type" : "integer", + "format" : "int32" }, "asJsonNull" : { "$ref" : "#/definitions/JsonNull" @@ -1206,15 +1392,12 @@ "type" : "number", "format" : "float" }, - "asBigDecimal" : { - "type" : "number" - }, - "asBigInteger" : { - "type" : "integer" + "asByte" : { + "type" : "string", + "format" : "byte" }, - "asShort" : { - "type" : "integer", - "format" : "int32" + "asCharacter" : { + "type" : "string" }, "asNumber" : { "$ref" : "#/definitions/Number" @@ -1242,17 +1425,6 @@ "asString" : { "type" : "string" }, - "asByte" : { - "type" : "string", - "format" : "byte" - }, - "asCharacter" : { - "type" : "string" - }, - "asFloat" : { - "type" : "number", - "format" : "float" - }, "asBigDecimal" : { "type" : "number" }, @@ -1263,6 +1435,17 @@ "type" : "integer", "format" : "int32" }, + "asFloat" : { + "type" : "number", + "format" : "float" + }, + "asByte" : { + "type" : "string", + "format" : "byte" + }, + "asCharacter" : { + "type" : "string" + }, "asNumber" : { "$ref" : "#/definitions/Number" }, @@ -1275,15 +1458,15 @@ "asJsonArray" : { "$ref" : "#/definitions/JsonArray" }, + "asJsonPrimitive" : { + "$ref" : "#/definitions/JsonPrimitive" + }, "jsonNull" : { "type" : "boolean" }, "jsonPrimitive" : { "type" : "boolean" }, - "asJsonPrimitive" : { - "$ref" : "#/definitions/JsonPrimitive" - }, "jsonArray" : { "type" : "boolean" }, diff --git a/docs/swagger/swagger.pdf b/docs/swagger/swagger.pdf index 1095ce710..dfacce7c0 100644 --- a/docs/swagger/swagger.pdf +++ b/docs/swagger/swagger.pdf @@ -4,16 +4,16 @@ << /Title (Clamp Rest API) /Creator (Asciidoctor PDF 1.5.0.alpha.10, based on Prawn 1.3.0) /Producer (Asciidoctor PDF 1.5.0.alpha.10, based on Prawn 1.3.0) -/CreationDate (D:20200310073214-07'00') -/ModDate (D:20200310073214-07'00') +/CreationDate (D:20200313110040-07'00') +/ModDate (D:20200313110040-07'00') >> endobj 2 0 obj << /Type /Catalog /Pages 3 0 R -/Names 20 0 R -/Outlines 589 0 R -/PageLabels 733 0 R +/Names 22 0 R +/Outlines 685 0 R +/PageLabels 855 0 R /PageMode /UseOutlines /OpenAction [7 0 R /FitH 793.0] /ViewerPreferences << /DisplayDocTitle true @@ -22,8 +22,8 @@ endobj endobj 3 0 obj << /Type /Pages -/Count 33 -/Kids [7 0 R 10 0 R 12 0 R 14 0 R 16 0 R 18 0 R 27 0 R 43 0 R 58 0 R 72 0 R 84 0 R 97 0 R 110 0 R 124 0 R 137 0 R 151 0 R 165 0 R 178 0 R 192 0 R 207 0 R 214 0 R 220 0 R 228 0 R 234 0 R 239 0 R 248 0 R 255 0 R 265 0 R 271 0 R 277 0 R 285 0 R 294 0 R 301 0 R] +/Count 38 +/Kids [7 0 R 10 0 R 12 0 R 14 0 R 16 0 R 18 0 R 20 0 R 29 0 R 45 0 R 61 0 R 75 0 R 87 0 R 98 0 R 110 0 R 124 0 R 134 0 R 148 0 R 161 0 R 175 0 R 188 0 R 202 0 R 214 0 R 224 0 R 240 0 R 249 0 R 256 0 R 262 0 R 269 0 R 275 0 R 283 0 R 290 0 R 298 0 R 306 0 R 312 0 R 319 0 R 328 0 R 337 0 R 344 0 R] >> endobj 4 0 obj @@ -80,15 +80,15 @@ endobj << /Type /Font /BaseFont /AAAAAA+NotoSerif /Subtype /TrueType -/FontDescriptor 735 0 R +/FontDescriptor 857 0 R /FirstChar 32 /LastChar 255 -/Widths 737 0 R -/ToUnicode 736 0 R +/Widths 859 0 R +/ToUnicode 858 0 R >> endobj 9 0 obj -<< /Length 31130 +<< /Length 31187 >> stream q @@ -511,7 +511,7 @@ ET BT 60.24000000000001 513.9659999999997 Td /F1.0 10.5 Tf -<322e332e20474554202f76322f64696374696f6e617279> Tj +<322e332e20474554202f76322f636c616d70496e666f726d6174696f6e> Tj ET 0.000 0.000 0.000 SCN @@ -520,9 +520,9 @@ ET 0.200 0.200 0.200 SCN BT -177.0712499999999 513.9659999999997 Td +214.48274999999995 513.9659999999997 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -631,7 +631,7 @@ ET BT 60.24000000000001 458.52599999999967 Td /F1.0 10.5 Tf -<322e342e20505554202f76322f64696374696f6e617279> Tj +<322e342e20474554202f76322f64696374696f6e617279> Tj ET 0.000 0.000 0.000 SCN @@ -671,7 +671,7 @@ ET BT 72.24000000000001 440.04599999999965 Td /F1.0 10.5 Tf -[<322e342e312e20506172> 20.01953125 <616d6574657273>] TJ +<322e342e312e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN @@ -680,9 +680,9 @@ ET 0.200 0.200 0.200 SCN BT -161.0377499999999 440.04599999999965 Td +155.69324999999992 440.04599999999965 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -711,7 +711,7 @@ ET BT 72.24000000000001 421.56599999999963 Td /F1.0 10.5 Tf -<322e342e322e20526573706f6e736573> Tj +<322e342e322e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -720,9 +720,9 @@ ET 0.200 0.200 0.200 SCN BT -155.69324999999992 421.56599999999963 Td +150.34874999999994 421.56599999999963 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -749,9 +749,9 @@ ET 0.200 0.200 0.200 SCN BT -72.24000000000001 403.0859999999996 Td +60.24000000000001 403.0859999999996 Td /F1.0 10.5 Tf -<322e342e332e20436f6e73756d6573> Tj +<322e352e20505554202f76322f64696374696f6e617279> Tj ET 0.000 0.000 0.000 SCN @@ -760,9 +760,9 @@ ET 0.200 0.200 0.200 SCN BT -155.69324999999992 403.0859999999996 Td +177.0712499999999 403.0859999999996 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -791,7 +791,7 @@ ET BT 72.24000000000001 384.6059999999996 Td /F1.0 10.5 Tf -<322e342e342e2050726f6475636573> Tj +[<322e352e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN @@ -800,9 +800,9 @@ ET 0.200 0.200 0.200 SCN BT -150.34874999999994 384.6059999999996 Td +161.0377499999999 384.6059999999996 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -829,9 +829,9 @@ ET 0.200 0.200 0.200 SCN BT -60.24000000000001 366.1259999999996 Td +72.24000000000001 366.1259999999996 Td /F1.0 10.5 Tf -<322e352e20474554202f76322f64696374696f6e6172792f7365636f6e646172792f6e616d6573> Tj +<322e352e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN @@ -840,9 +840,9 @@ ET 0.200 0.200 0.200 SCN BT -267.92774999999995 366.1259999999996 Td +155.69324999999992 366.1259999999996 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -871,7 +871,7 @@ ET BT 72.24000000000001 347.64599999999956 Td /F1.0 10.5 Tf -<322e352e312e20526573706f6e736573> Tj +<322e352e332e20436f6e73756d6573> Tj ET 0.000 0.000 0.000 SCN @@ -911,7 +911,7 @@ ET BT 72.24000000000001 329.16599999999954 Td /F1.0 10.5 Tf -<322e352e322e2050726f6475636573> Tj +<322e352e342e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -951,7 +951,7 @@ ET BT 60.24000000000001 310.6859999999995 Td /F1.0 10.5 Tf -<322e362e20474554202f76322f64696374696f6e6172792f7b64696374696f6e6172794e616d657d> Tj +<322e362e20474554202f76322f64696374696f6e6172792f7365636f6e646172792f6e616d6573> Tj ET 0.000 0.000 0.000 SCN @@ -991,7 +991,7 @@ ET BT 72.24000000000001 292.2059999999995 Td /F1.0 10.5 Tf -[<322e362e312e20506172> 20.01953125 <616d6574657273>] TJ +<322e362e312e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN @@ -1000,9 +1000,9 @@ ET 0.200 0.200 0.200 SCN BT -161.0377499999999 292.2059999999995 Td +155.69324999999992 292.2059999999995 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -1031,7 +1031,7 @@ ET BT 72.24000000000001 273.7259999999995 Td /F1.0 10.5 Tf -<322e362e322e20526573706f6e736573> Tj +<322e362e322e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -1040,9 +1040,9 @@ ET 0.200 0.200 0.200 SCN BT -155.69324999999992 273.7259999999995 Td +150.34874999999994 273.7259999999995 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -1069,9 +1069,9 @@ ET 0.200 0.200 0.200 SCN BT -72.24000000000001 255.24599999999947 Td +60.24000000000001 255.24599999999947 Td /F1.0 10.5 Tf -<322e362e332e2050726f6475636573> Tj +<322e372e20474554202f76322f64696374696f6e6172792f7b64696374696f6e6172794e616d657d> Tj ET 0.000 0.000 0.000 SCN @@ -1080,9 +1080,9 @@ ET 0.200 0.200 0.200 SCN BT -150.34874999999994 255.24599999999947 Td +267.92774999999995 255.24599999999947 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -1109,9 +1109,9 @@ ET 0.200 0.200 0.200 SCN BT -60.24000000000001 236.76599999999948 Td +72.24000000000001 236.76599999999948 Td /F1.0 10.5 Tf -<322e372e20505554202f76322f64696374696f6e6172792f7b6e616d657d> Tj +[<322e372e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN @@ -1120,9 +1120,9 @@ ET 0.200 0.200 0.200 SCN BT -214.48274999999995 236.76599999999948 Td +161.0377499999999 236.76599999999948 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -1151,7 +1151,7 @@ ET BT 72.24000000000001 218.2859999999995 Td /F1.0 10.5 Tf -[<322e372e312e20506172> 20.01953125 <616d6574657273>] TJ +<322e372e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN @@ -1160,9 +1160,9 @@ ET 0.200 0.200 0.200 SCN BT -161.0377499999999 218.2859999999995 Td +155.69324999999992 218.2859999999995 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -1191,7 +1191,7 @@ ET BT 72.24000000000001 199.8059999999995 Td /F1.0 10.5 Tf -<322e372e322e20526573706f6e736573> Tj +<322e372e332e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -1200,9 +1200,9 @@ ET 0.200 0.200 0.200 SCN BT -155.69324999999992 199.8059999999995 Td +150.34874999999994 199.8059999999995 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -1229,9 +1229,9 @@ ET 0.200 0.200 0.200 SCN BT -72.24000000000001 181.3259999999995 Td +60.24000000000001 181.3259999999995 Td /F1.0 10.5 Tf -<322e372e332e20436f6e73756d6573> Tj +<322e382e20505554202f76322f64696374696f6e6172792f7b6e616d657d> Tj ET 0.000 0.000 0.000 SCN @@ -1240,9 +1240,9 @@ ET 0.200 0.200 0.200 SCN BT -155.69324999999992 181.3259999999995 Td +214.48274999999995 181.3259999999995 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -1271,7 +1271,7 @@ ET BT 72.24000000000001 162.84599999999952 Td /F1.0 10.5 Tf -<322e372e342e2050726f6475636573> Tj +[<322e382e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN @@ -1280,9 +1280,9 @@ ET 0.200 0.200 0.200 SCN BT -150.34874999999994 162.84599999999952 Td +161.0377499999999 162.84599999999952 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -1309,9 +1309,9 @@ ET 0.200 0.200 0.200 SCN BT -60.24000000000001 144.36599999999953 Td +72.24000000000001 144.36599999999953 Td /F1.0 10.5 Tf -<322e382e2044454c455445202f76322f64696374696f6e6172792f7b6e616d657d> Tj +<322e382e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN @@ -1320,9 +1320,9 @@ ET 0.200 0.200 0.200 SCN BT -235.86074999999994 144.36599999999953 Td +155.69324999999992 144.36599999999953 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -1351,7 +1351,7 @@ ET BT 72.24000000000001 125.88599999999954 Td /F1.0 10.5 Tf -[<322e382e312e20506172> 20.01953125 <616d6574657273>] TJ +<322e382e332e20436f6e73756d6573> Tj ET 0.000 0.000 0.000 SCN @@ -1360,9 +1360,9 @@ ET 0.200 0.200 0.200 SCN BT -161.0377499999999 125.88599999999954 Td +155.69324999999992 125.88599999999954 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -1391,7 +1391,7 @@ ET BT 72.24000000000001 107.40599999999955 Td /F1.0 10.5 Tf -<322e382e322e20526573706f6e736573> Tj +<322e382e342e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -1400,9 +1400,9 @@ ET 0.200 0.200 0.200 SCN BT -155.69324999999992 107.40599999999955 Td +150.34874999999994 107.40599999999955 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -1429,9 +1429,9 @@ ET 0.200 0.200 0.200 SCN BT -72.24000000000001 88.92599999999956 Td +60.24000000000001 88.92599999999956 Td /F1.0 10.5 Tf -<322e382e332e2050726f6475636573> Tj +<322e392e2044454c455445202f76322f64696374696f6e6172792f7b6e616d657d> Tj ET 0.000 0.000 0.000 SCN @@ -1440,9 +1440,9 @@ ET 0.200 0.200 0.200 SCN BT -150.34874999999994 88.92599999999956 Td +235.86074999999994 88.92599999999956 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -1469,9 +1469,9 @@ ET 0.200 0.200 0.200 SCN BT -60.24000000000001 70.44599999999957 Td +72.24000000000001 70.44599999999957 Td /F1.0 10.5 Tf -<322e392e2044454c455445202f76322f64696374696f6e6172792f7b6e616d657d2f656c656d656e74732f7b73686f72744e616d657d> Tj +[<322e392e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN @@ -1480,16 +1480,16 @@ ET 0.200 0.200 0.200 SCN BT -353.43975 70.44599999999957 Td +161.0377499999999 70.44599999999957 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn BT -556.53075 70.44599999999957 Td +556.5307499999999 70.44599999999957 Td /F1.0 5.25 Tf Tj ET @@ -1511,7 +1511,7 @@ ET BT 72.24000000000001 51.965999999999575 Td /F1.0 10.5 Tf -[<322e392e312e20506172> 20.01953125 <616d6574657273>] TJ +<322e392e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN @@ -1520,9 +1520,9 @@ ET 0.200 0.200 0.200 SCN BT -161.0377499999999 51.965999999999575 Td +155.69324999999992 51.965999999999575 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -1555,15 +1555,15 @@ endobj /MediaBox [0 0 612.0 792.0] /Contents 9 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 22 0 R +/Font << /F2.0 24 0 R /F1.0 8 0 R >> >> -/Annots [306 0 R 307 0 R 308 0 R 309 0 R 310 0 R 311 0 R 312 0 R 313 0 R 314 0 R 315 0 R 316 0 R 317 0 R 318 0 R 319 0 R 320 0 R 321 0 R 322 0 R 323 0 R 324 0 R 325 0 R 326 0 R 327 0 R 328 0 R 329 0 R 330 0 R 331 0 R 332 0 R 333 0 R 334 0 R 335 0 R 336 0 R 337 0 R 338 0 R 339 0 R 340 0 R 341 0 R 342 0 R 343 0 R 344 0 R 345 0 R 346 0 R 347 0 R 348 0 R 349 0 R 350 0 R 351 0 R 352 0 R 353 0 R 354 0 R 355 0 R 356 0 R 357 0 R 358 0 R 359 0 R 360 0 R 361 0 R 362 0 R 363 0 R 364 0 R 365 0 R 366 0 R 367 0 R 368 0 R 369 0 R 370 0 R 371 0 R 372 0 R 373 0 R 374 0 R 375 0 R 376 0 R 377 0 R] +/Annots [350 0 R 351 0 R 352 0 R 353 0 R 354 0 R 355 0 R 356 0 R 357 0 R 358 0 R 359 0 R 360 0 R 361 0 R 362 0 R 363 0 R 364 0 R 365 0 R 366 0 R 367 0 R 368 0 R 369 0 R 370 0 R 371 0 R 372 0 R 373 0 R 374 0 R 375 0 R 376 0 R 377 0 R 378 0 R 379 0 R 380 0 R 381 0 R 382 0 R 383 0 R 384 0 R 385 0 R 386 0 R 387 0 R 388 0 R 389 0 R 390 0 R 391 0 R 392 0 R 393 0 R 394 0 R 395 0 R 396 0 R 397 0 R 398 0 R 399 0 R 400 0 R 401 0 R 402 0 R 403 0 R 404 0 R 405 0 R 406 0 R 407 0 R 408 0 R 409 0 R 410 0 R 411 0 R 412 0 R 413 0 R 414 0 R 415 0 R 416 0 R 417 0 R 418 0 R 419 0 R 420 0 R 421 0 R] >> endobj 11 0 obj -<< /Length 32457 +<< /Length 31990 >> stream q @@ -1575,7 +1575,7 @@ q BT 72.24000000000001 744.786 Td /F1.0 10.5 Tf -<322e392e322e20526573706f6e736573> Tj +<322e392e332e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -1584,9 +1584,9 @@ ET 0.200 0.200 0.200 SCN BT -155.69324999999992 744.786 Td +150.34874999999994 744.786 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -1613,9 +1613,9 @@ ET 0.200 0.200 0.200 SCN BT -72.24000000000001 726.3059999999999 Td +60.24000000000001 726.3059999999999 Td /F1.0 10.5 Tf -<322e392e332e2050726f6475636573> Tj +<322e31302e2044454c455445202f76322f64696374696f6e6172792f7b6e616d657d2f656c656d656e74732f7b73686f72744e616d657d> Tj ET 0.000 0.000 0.000 SCN @@ -1624,16 +1624,16 @@ ET 0.200 0.200 0.200 SCN BT -150.34874999999994 726.3059999999999 Td +358.78425 726.3059999999999 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn BT -556.5307499999999 726.3059999999999 Td +556.53075 726.3059999999999 Td /F1.0 5.25 Tf Tj ET @@ -1653,9 +1653,9 @@ ET 0.200 0.200 0.200 SCN BT -60.24000000000001 707.8259999999999 Td +72.24000000000001 707.8259999999999 Td /F1.0 10.5 Tf -<322e31302e20505554202f76322f6c6f6f702f64656c6574652f7b6c6f6f704e616d657d> Tj +[<322e31302e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN @@ -1664,9 +1664,9 @@ ET 0.200 0.200 0.200 SCN BT -246.54974999999996 707.8259999999999 Td +166.38224999999994 707.8259999999999 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -1695,7 +1695,7 @@ ET BT 72.24000000000001 689.3459999999999 Td /F1.0 10.5 Tf -[<322e31302e312e20506172> 20.01953125 <616d6574657273>] TJ +<322e31302e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN @@ -1704,9 +1704,9 @@ ET 0.200 0.200 0.200 SCN BT -166.38224999999994 689.3459999999999 Td +161.0377499999999 689.3459999999999 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -1735,7 +1735,7 @@ ET BT 72.24000000000001 670.8659999999999 Td /F1.0 10.5 Tf -<322e31302e322e20526573706f6e736573> Tj +<322e31302e332e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -1744,9 +1744,9 @@ ET 0.200 0.200 0.200 SCN BT -161.0377499999999 670.8659999999999 Td +155.69324999999992 670.8659999999999 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -1775,7 +1775,7 @@ ET BT 60.24000000000001 652.3859999999999 Td /F1.0 10.5 Tf -[<322e31312e20505554202f76322f6c6f6f702f6465706c6f> 20.01953125 <792f7b6c6f6f704e616d657d>] TJ +[<322e31312e20505554202f76322f6c6f6f702f6164644f706572> 20.01953125 <6174696f6e61506f6c6963792f7b6c6f6f704e616d657d2f706f6c6963794d6f64656c2f7b706f6c696379547970657d2f7b706f6c69637956> 60.05859375 <657273696f6e7d>] TJ ET 0.000 0.000 0.000 SCN @@ -1784,9 +1784,9 @@ ET 0.200 0.200 0.200 SCN BT -251.89424999999994 652.3859999999999 Td +535.15275 652.3859999999999 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -1935,7 +1935,7 @@ ET BT 60.24000000000001 578.4659999999998 Td /F1.0 10.5 Tf -<322e31322e20474554202f76322f6c6f6f702f676574416c6c4e616d6573> Tj +[<322e31322e20504f53> 20.01953125 <54202f76322f6c6f6f702f6372656174652f7b6c6f6f704e616d657d3f74656d706c6174654e616d653d7b74656d706c6174654e616d657d>] TJ ET 0.000 0.000 0.000 SCN @@ -1944,16 +1944,16 @@ ET 0.200 0.200 0.200 SCN BT -219.82724999999994 578.4659999999998 Td +422.91825 578.4659999999998 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn BT -556.5307499999999 578.4659999999998 Td +556.53075 578.4659999999998 Td /F1.0 5.25 Tf Tj ET @@ -1975,7 +1975,7 @@ ET BT 72.24000000000001 559.9859999999999 Td /F1.0 10.5 Tf -<322e31322e312e20526573706f6e736573> Tj +[<322e31322e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN @@ -1984,9 +1984,9 @@ ET 0.200 0.200 0.200 SCN BT -161.0377499999999 559.9859999999999 Td +166.38224999999994 559.9859999999999 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -2015,7 +2015,7 @@ ET BT 72.24000000000001 541.5059999999999 Td /F1.0 10.5 Tf -<322e31322e322e2050726f6475636573> Tj +<322e31322e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN @@ -2024,9 +2024,9 @@ ET 0.200 0.200 0.200 SCN BT -155.69324999999992 541.5059999999999 Td +161.0377499999999 541.5059999999999 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -2053,9 +2053,9 @@ ET 0.200 0.200 0.200 SCN BT -60.24000000000001 523.0259999999998 Td +72.24000000000001 523.0259999999998 Td /F1.0 10.5 Tf -<322e31332e20474554202f76322f6c6f6f702f6765747374617475732f7b6c6f6f704e616d657d> Tj +<322e31322e332e20436f6e73756d6573> Tj ET 0.000 0.000 0.000 SCN @@ -2064,9 +2064,9 @@ ET 0.200 0.200 0.200 SCN BT -262.58324999999996 523.0259999999998 Td +161.0377499999999 523.0259999999998 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -2084,7 +2084,7 @@ ET BT 557.8905 523.0259999999998 Td /F1.0 10.5 Tf -<36> Tj +<37> Tj ET 0.000 0.000 0.000 SCN @@ -2095,7 +2095,7 @@ ET BT 72.24000000000001 504.54599999999976 Td /F1.0 10.5 Tf -[<322e31332e312e20506172> 20.01953125 <616d6574657273>] TJ +<322e31322e342e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -2104,9 +2104,9 @@ ET 0.200 0.200 0.200 SCN BT -166.38224999999994 504.54599999999976 Td +155.69324999999992 504.54599999999976 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -2124,7 +2124,7 @@ ET BT 557.8905 504.54599999999976 Td /F1.0 10.5 Tf -<36> Tj +<37> Tj ET 0.000 0.000 0.000 SCN @@ -2133,9 +2133,9 @@ ET 0.200 0.200 0.200 SCN BT -72.24000000000001 486.06599999999975 Td +60.24000000000001 486.06599999999975 Td /F1.0 10.5 Tf -<322e31332e322e20526573706f6e736573> Tj +<322e31332e20505554202f76322f6c6f6f702f64656c6574652f7b6c6f6f704e616d657d> Tj ET 0.000 0.000 0.000 SCN @@ -2144,9 +2144,9 @@ ET 0.200 0.200 0.200 SCN BT -161.0377499999999 486.06599999999975 Td +246.54974999999996 486.06599999999975 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -2175,7 +2175,7 @@ ET BT 72.24000000000001 467.58599999999973 Td /F1.0 10.5 Tf -<322e31332e332e2050726f6475636573> Tj +[<322e31332e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN @@ -2184,9 +2184,9 @@ ET 0.200 0.200 0.200 SCN BT -155.69324999999992 467.58599999999973 Td +166.38224999999994 467.58599999999973 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -2213,9 +2213,9 @@ ET 0.200 0.200 0.200 SCN BT -60.24000000000001 449.1059999999997 Td +72.24000000000001 449.1059999999997 Td /F1.0 10.5 Tf -<322e31342e20505554202f76322f6c6f6f702f726566726573684f70506f6c6963794a736f6e536368656d612f7b6c6f6f704e616d657d> Tj +<322e31332e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN @@ -2224,16 +2224,16 @@ ET 0.200 0.200 0.200 SCN BT -358.78425 449.1059999999997 Td +161.0377499999999 449.1059999999997 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn BT -556.53075 449.1059999999997 Td +556.5307499999999 449.1059999999997 Td /F1.0 5.25 Tf Tj ET @@ -2253,9 +2253,9 @@ ET 0.200 0.200 0.200 SCN BT -72.24000000000001 430.6259999999997 Td +60.24000000000001 430.6259999999997 Td /F1.0 10.5 Tf -[<322e31342e312e20506172> 20.01953125 <616d6574657273>] TJ +[<322e31342e20505554202f76322f6c6f6f702f6465706c6f> 20.01953125 <792f7b6c6f6f704e616d657d>] TJ ET 0.000 0.000 0.000 SCN @@ -2264,9 +2264,9 @@ ET 0.200 0.200 0.200 SCN BT -166.38224999999994 430.6259999999997 Td +251.89424999999994 430.6259999999997 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -2295,7 +2295,7 @@ ET BT 72.24000000000001 412.1459999999997 Td /F1.0 10.5 Tf -<322e31342e322e20526573706f6e736573> Tj +[<322e31342e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN @@ -2304,9 +2304,9 @@ ET 0.200 0.200 0.200 SCN BT -161.0377499999999 412.1459999999997 Td +166.38224999999994 412.1459999999997 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -2335,7 +2335,7 @@ ET BT 72.24000000000001 393.66599999999966 Td /F1.0 10.5 Tf -<322e31342e332e2050726f6475636573> Tj +<322e31342e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN @@ -2344,9 +2344,9 @@ ET 0.200 0.200 0.200 SCN BT -155.69324999999992 393.66599999999966 Td +161.0377499999999 393.66599999999966 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -2373,9 +2373,9 @@ ET 0.200 0.200 0.200 SCN BT -60.24000000000001 375.18599999999964 Td +72.24000000000001 375.18599999999964 Td /F1.0 10.5 Tf -<322e31352e20505554202f76322f6c6f6f702f726573746172742f7b6c6f6f704e616d657d> Tj +<322e31342e332e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -2384,9 +2384,9 @@ ET 0.200 0.200 0.200 SCN BT -251.89424999999994 375.18599999999964 Td +155.69324999999992 375.18599999999964 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -2404,7 +2404,7 @@ ET BT 557.8905 375.18599999999964 Td /F1.0 10.5 Tf -<37> Tj +<38> Tj ET 0.000 0.000 0.000 SCN @@ -2413,9 +2413,9 @@ ET 0.200 0.200 0.200 SCN BT -72.24000000000001 356.7059999999996 Td +60.24000000000001 356.7059999999996 Td /F1.0 10.5 Tf -[<322e31352e312e20506172> 20.01953125 <616d6574657273>] TJ +<322e31352e20474554202f76322f6c6f6f702f676574416c6c4e616d6573> Tj ET 0.000 0.000 0.000 SCN @@ -2424,9 +2424,9 @@ ET 0.200 0.200 0.200 SCN BT -166.38224999999994 356.7059999999996 Td +219.82724999999994 356.7059999999996 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -2444,7 +2444,7 @@ ET BT 557.8905 356.7059999999996 Td /F1.0 10.5 Tf -<37> Tj +<38> Tj ET 0.000 0.000 0.000 SCN @@ -2455,7 +2455,7 @@ ET BT 72.24000000000001 338.2259999999996 Td /F1.0 10.5 Tf -<322e31352e322e20526573706f6e736573> Tj +<322e31352e312e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN @@ -2484,7 +2484,7 @@ ET BT 557.8905 338.2259999999996 Td /F1.0 10.5 Tf -<37> Tj +<38> Tj ET 0.000 0.000 0.000 SCN @@ -2495,7 +2495,7 @@ ET BT 72.24000000000001 319.7459999999996 Td /F1.0 10.5 Tf -<322e31352e332e2050726f6475636573> Tj +<322e31352e322e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -2535,7 +2535,7 @@ ET BT 60.24000000000001 301.26599999999956 Td /F1.0 10.5 Tf -<322e31362e20505554202f76322f6c6f6f702f73746f702f7b6c6f6f704e616d657d> Tj +<322e31362e20474554202f76322f6c6f6f702f6765747374617475732f7b6c6f6f704e616d657d> Tj ET 0.000 0.000 0.000 SCN @@ -2544,9 +2544,9 @@ ET 0.200 0.200 0.200 SCN BT -241.20524999999992 301.26599999999956 Td +262.58324999999996 301.26599999999956 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -2695,7 +2695,7 @@ ET BT 60.24000000000001 227.34599999999952 Td /F1.0 10.5 Tf -<322e31372e20505554202f76322f6c6f6f702f7375626d69742f7b6c6f6f704e616d657d> Tj +<322e31372e20505554202f76322f6c6f6f702f726566726573684f70506f6c6963794a736f6e536368656d612f7b6c6f6f704e616d657d> Tj ET 0.000 0.000 0.000 SCN @@ -2704,16 +2704,16 @@ ET 0.200 0.200 0.200 SCN BT -251.89424999999994 227.34599999999952 Td +358.78425 227.34599999999952 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn BT -556.5307499999999 227.34599999999952 Td +556.53075 227.34599999999952 Td /F1.0 5.25 Tf Tj ET @@ -2804,7 +2804,7 @@ ET BT 557.8905 190.38599999999954 Td /F1.0 10.5 Tf -<38> Tj +<39> Tj ET 0.000 0.000 0.000 SCN @@ -2855,18 +2855,7 @@ ET BT 60.24000000000001 153.42599999999956 Td /F1.0 10.5 Tf -<322e31382e20474554202f76322f6c6f6f702f737667526570726573656e746174696f6e2f7b6c6f6f704e616d657d> Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -310.68375000000003 153.42599999999956 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +[<322e31382e20505554202f76322f6c6f6f702f72656d6f76654f706572> 20.01953125 <6174696f6e61506f6c6963792f7b6c6f6f704e616d657d2f706f6c6963794d6f64656c2f7b706f6c696379547970657d2f7b706f6c69637956> 60.05859375 <657273696f6e7d>] TJ ET 0.000 0.000 0.000 SCN @@ -3015,7 +3004,7 @@ ET BT 60.24000000000001 79.5059999999996 Td /F1.0 10.5 Tf -[<322e31392e20505554202f76322f6c6f6f702f756e6465706c6f> 20.01953125 <792f7b6c6f6f704e616d657d>] TJ +<322e31392e20505554202f76322f6c6f6f702f726573746172742f7b6c6f6f704e616d657d> Tj ET 0.000 0.000 0.000 SCN @@ -3024,16 +3013,16 @@ ET 0.200 0.200 0.200 SCN BT -267.92774999999995 79.5059999999996 Td +251.36924999999997 79.5059999999996 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn BT -556.5307499999999 79.5059999999996 Td +550.66125 79.5059999999996 Td /F1.0 5.25 Tf Tj ET @@ -3042,9 +3031,9 @@ ET 0.200 0.200 0.200 SCN BT -557.8905 79.5059999999996 Td +552.021 79.5059999999996 Td /F1.0 10.5 Tf -<39> Tj +<3130> Tj ET 0.000 0.000 0.000 SCN @@ -3064,16 +3053,16 @@ ET 0.200 0.200 0.200 SCN BT -166.38224999999994 61.02599999999961 Td +165.85724999999996 61.02599999999961 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn BT -556.5307499999999 61.02599999999961 Td +550.66125 61.02599999999961 Td /F1.0 5.25 Tf Tj ET @@ -3082,9 +3071,9 @@ ET 0.200 0.200 0.200 SCN BT -557.8905 61.02599999999961 Td +552.021 61.02599999999961 Td /F1.0 10.5 Tf -<39> Tj +<3130> Tj ET 0.000 0.000 0.000 SCN @@ -3102,11 +3091,11 @@ endobj /Font << /F1.0 8 0 R >> >> -/Annots [378 0 R 379 0 R 380 0 R 381 0 R 382 0 R 383 0 R 384 0 R 385 0 R 386 0 R 387 0 R 388 0 R 389 0 R 390 0 R 391 0 R 392 0 R 393 0 R 394 0 R 395 0 R 396 0 R 397 0 R 398 0 R 399 0 R 400 0 R 401 0 R 402 0 R 403 0 R 404 0 R 405 0 R 406 0 R 407 0 R 408 0 R 409 0 R 410 0 R 411 0 R 412 0 R 413 0 R 414 0 R 415 0 R 416 0 R 417 0 R 418 0 R 419 0 R 420 0 R 421 0 R 422 0 R 423 0 R 424 0 R 425 0 R 426 0 R 427 0 R 428 0 R 429 0 R 430 0 R 431 0 R 432 0 R 433 0 R 434 0 R 435 0 R 436 0 R 437 0 R 438 0 R 439 0 R 440 0 R 441 0 R 442 0 R 443 0 R 444 0 R 445 0 R 446 0 R 447 0 R 448 0 R 449 0 R 450 0 R 451 0 R 452 0 R 453 0 R] +/Annots [422 0 R 423 0 R 424 0 R 425 0 R 426 0 R 427 0 R 428 0 R 429 0 R 430 0 R 431 0 R 432 0 R 433 0 R 434 0 R 435 0 R 436 0 R 437 0 R 438 0 R 439 0 R 440 0 R 441 0 R 442 0 R 443 0 R 444 0 R 445 0 R 446 0 R 447 0 R 448 0 R 449 0 R 450 0 R 451 0 R 452 0 R 453 0 R 454 0 R 455 0 R 456 0 R 457 0 R 458 0 R 459 0 R 460 0 R 461 0 R 462 0 R 463 0 R 464 0 R 465 0 R 466 0 R 467 0 R 468 0 R 469 0 R 470 0 R 471 0 R 472 0 R 473 0 R 474 0 R 475 0 R 476 0 R 477 0 R 478 0 R 479 0 R 480 0 R 481 0 R 482 0 R 483 0 R 484 0 R 485 0 R 486 0 R 487 0 R 488 0 R 489 0 R 490 0 R 491 0 R 492 0 R 493 0 R 494 0 R 495 0 R 496 0 R 497 0 R] >> endobj 13 0 obj -<< /Length 32048 +<< /Length 32086 >> stream q @@ -3127,16 +3116,16 @@ ET 0.200 0.200 0.200 SCN BT -161.0377499999999 744.786 Td +160.51274999999998 744.786 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn BT -556.5307499999999 744.786 Td +550.66125 744.786 Td /F1.0 5.25 Tf Tj ET @@ -3145,9 +3134,9 @@ ET 0.200 0.200 0.200 SCN BT -557.8905 744.786 Td +552.021 744.786 Td /F1.0 10.5 Tf -<39> Tj +<3130> Tj ET 0.000 0.000 0.000 SCN @@ -3167,16 +3156,16 @@ ET 0.200 0.200 0.200 SCN BT -155.69324999999992 726.3059999999999 Td +155.16824999999994 726.3059999999999 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn BT -556.5307499999999 726.3059999999999 Td +550.66125 726.3059999999999 Td /F1.0 5.25 Tf Tj ET @@ -3185,9 +3174,9 @@ ET 0.200 0.200 0.200 SCN BT -557.8905 726.3059999999999 Td +552.021 726.3059999999999 Td /F1.0 10.5 Tf -<39> Tj +<3130> Tj ET 0.000 0.000 0.000 SCN @@ -3198,7 +3187,7 @@ ET BT 60.24000000000001 707.8259999999999 Td /F1.0 10.5 Tf -[<322e32302e20504f53> 20.01953125 <54202f76322f6c6f6f702f757064617465476c6f62616c50726f706572746965732f7b6c6f6f704e616d657d>] TJ +<322e32302e20505554202f76322f6c6f6f702f73746f702f7b6c6f6f704e616d657d> Tj ET 0.000 0.000 0.000 SCN @@ -3207,9 +3196,9 @@ ET 0.200 0.200 0.200 SCN BT -342.22574999999995 707.8259999999999 Td +240.68025 707.8259999999999 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -3318,7 +3307,7 @@ ET BT 72.24000000000001 652.3859999999999 Td /F1.0 10.5 Tf -<322e32302e332e20436f6e73756d6573> Tj +<322e32302e332e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -3327,9 +3316,9 @@ ET 0.200 0.200 0.200 SCN BT -160.51274999999998 652.3859999999999 Td +155.16824999999994 652.3859999999999 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -3356,9 +3345,9 @@ ET 0.200 0.200 0.200 SCN BT -72.24000000000001 633.9059999999998 Td +60.24000000000001 633.9059999999998 Td /F1.0 10.5 Tf -<322e32302e342e2050726f6475636573> Tj +<322e32312e20505554202f76322f6c6f6f702f7375626d69742f7b6c6f6f704e616d657d> Tj ET 0.000 0.000 0.000 SCN @@ -3367,9 +3356,9 @@ ET 0.200 0.200 0.200 SCN BT -155.16824999999994 633.9059999999998 Td +251.36924999999997 633.9059999999998 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -3396,9 +3385,9 @@ ET 0.200 0.200 0.200 SCN BT -60.24000000000001 615.4259999999998 Td +72.24000000000001 615.4259999999998 Td /F1.0 10.5 Tf -[<322e32312e20504f53> 20.01953125 <54202f76322f6c6f6f702f7570646174654d6963726f73657276696365506f6c6963792f7b6c6f6f704e616d657d>] TJ +[<322e32312e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN @@ -3407,9 +3396,9 @@ ET 0.200 0.200 0.200 SCN BT -352.91474999999997 615.4259999999998 Td +165.85724999999996 615.4259999999998 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -3438,7 +3427,7 @@ ET BT 72.24000000000001 596.9459999999998 Td /F1.0 10.5 Tf -[<322e32312e312e20506172> 20.01953125 <616d6574657273>] TJ +<322e32312e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN @@ -3447,9 +3436,9 @@ ET 0.200 0.200 0.200 SCN BT -165.85724999999996 596.9459999999998 Td +160.51274999999998 596.9459999999998 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -3467,7 +3456,7 @@ ET BT 552.021 596.9459999999998 Td /F1.0 10.5 Tf -<3130> Tj +<3131> Tj ET 0.000 0.000 0.000 SCN @@ -3478,7 +3467,7 @@ ET BT 72.24000000000001 578.4659999999998 Td /F1.0 10.5 Tf -<322e32312e322e20526573706f6e736573> Tj +<322e32312e332e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -3487,9 +3476,9 @@ ET 0.200 0.200 0.200 SCN BT -160.51274999999998 578.4659999999998 Td +155.16824999999994 578.4659999999998 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -3507,7 +3496,7 @@ ET BT 552.021 578.4659999999998 Td /F1.0 10.5 Tf -<3130> Tj +<3131> Tj ET 0.000 0.000 0.000 SCN @@ -3516,9 +3505,9 @@ ET 0.200 0.200 0.200 SCN BT -72.24000000000001 559.9859999999999 Td +60.24000000000001 559.9859999999999 Td /F1.0 10.5 Tf -<322e32312e332e20436f6e73756d6573> Tj +<322e32322e20474554202f76322f6c6f6f702f737667526570726573656e746174696f6e2f7b6c6f6f704e616d657d> Tj ET 0.000 0.000 0.000 SCN @@ -3527,9 +3516,9 @@ ET 0.200 0.200 0.200 SCN BT -160.51274999999998 559.9859999999999 Td +310.15874999999994 559.9859999999999 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -3558,7 +3547,7 @@ ET BT 72.24000000000001 541.5059999999999 Td /F1.0 10.5 Tf -<322e32312e342e2050726f6475636573> Tj +[<322e32322e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN @@ -3567,9 +3556,9 @@ ET 0.200 0.200 0.200 SCN BT -155.16824999999994 541.5059999999999 Td +165.85724999999996 541.5059999999999 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -3596,9 +3585,9 @@ ET 0.200 0.200 0.200 SCN BT -60.24000000000001 523.0259999999998 Td +72.24000000000001 523.0259999999998 Td /F1.0 10.5 Tf -[<322e32322e20504f53> 20.01953125 <54202f76322f6c6f6f702f7570646174654f706572> 20.01953125 <6174696f6e616c506f6c69636965732f7b6c6f6f704e616d657d>] TJ +<322e32322e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN @@ -3607,9 +3596,9 @@ ET 0.200 0.200 0.200 SCN BT -358.25924999999995 523.0259999999998 Td +160.51274999999998 523.0259999999998 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -3638,7 +3627,7 @@ ET BT 72.24000000000001 504.54599999999976 Td /F1.0 10.5 Tf -[<322e32322e312e20506172> 20.01953125 <616d6574657273>] TJ +<322e32322e332e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -3647,9 +3636,9 @@ ET 0.200 0.200 0.200 SCN BT -165.85724999999996 504.54599999999976 Td +155.16824999999994 504.54599999999976 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -3676,9 +3665,9 @@ ET 0.200 0.200 0.200 SCN BT -72.24000000000001 486.06599999999975 Td +60.24000000000001 486.06599999999975 Td /F1.0 10.5 Tf -<322e32322e322e20526573706f6e736573> Tj +[<322e32332e20505554202f76322f6c6f6f702f756e6465706c6f> 20.01953125 <792f7b6c6f6f704e616d657d>] TJ ET 0.000 0.000 0.000 SCN @@ -3687,9 +3676,9 @@ ET 0.200 0.200 0.200 SCN BT -160.51274999999998 486.06599999999975 Td +267.40274999999997 486.06599999999975 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -3718,7 +3707,7 @@ ET BT 72.24000000000001 467.58599999999973 Td /F1.0 10.5 Tf -<322e32322e332e20436f6e73756d6573> Tj +[<322e32332e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN @@ -3727,9 +3716,9 @@ ET 0.200 0.200 0.200 SCN BT -160.51274999999998 467.58599999999973 Td +165.85724999999996 467.58599999999973 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -3758,7 +3747,7 @@ ET BT 72.24000000000001 449.1059999999997 Td /F1.0 10.5 Tf -<322e32322e342e2050726f6475636573> Tj +<322e32332e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN @@ -3767,9 +3756,9 @@ ET 0.200 0.200 0.200 SCN BT -155.16824999999994 449.1059999999997 Td +160.51274999999998 449.1059999999997 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -3787,7 +3776,7 @@ ET BT 552.021 449.1059999999997 Td /F1.0 10.5 Tf -<3131> Tj +<3132> Tj ET 0.000 0.000 0.000 SCN @@ -3796,9 +3785,9 @@ ET 0.200 0.200 0.200 SCN BT -60.24000000000001 430.6259999999997 Td +72.24000000000001 430.6259999999997 Td /F1.0 10.5 Tf -<322e32332e20474554202f76322f6c6f6f702f7b6c6f6f704e616d657d> Tj +<322e32332e332e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -3807,9 +3796,9 @@ ET 0.200 0.200 0.200 SCN BT -213.95774999999998 430.6259999999997 Td +155.16824999999994 430.6259999999997 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -3827,7 +3816,7 @@ ET BT 552.021 430.6259999999997 Td /F1.0 10.5 Tf -<3131> Tj +<3132> Tj ET 0.000 0.000 0.000 SCN @@ -3836,9 +3825,9 @@ ET 0.200 0.200 0.200 SCN BT -72.24000000000001 412.1459999999997 Td +60.24000000000001 412.1459999999997 Td /F1.0 10.5 Tf -[<322e32332e312e20506172> 20.01953125 <616d6574657273>] TJ +[<322e32342e20504f53> 20.01953125 <54202f76322f6c6f6f702f757064617465476c6f62616c50726f706572746965732f7b6c6f6f704e616d657d>] TJ ET 0.000 0.000 0.000 SCN @@ -3847,9 +3836,9 @@ ET 0.200 0.200 0.200 SCN BT -165.85724999999996 412.1459999999997 Td +342.22574999999995 412.1459999999997 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -3867,7 +3856,7 @@ ET BT 552.021 412.1459999999997 Td /F1.0 10.5 Tf -<3131> Tj +<3132> Tj ET 0.000 0.000 0.000 SCN @@ -3878,7 +3867,7 @@ ET BT 72.24000000000001 393.66599999999966 Td /F1.0 10.5 Tf -<322e32332e322e20526573706f6e736573> Tj +[<322e32342e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN @@ -3887,9 +3876,9 @@ ET 0.200 0.200 0.200 SCN BT -160.51274999999998 393.66599999999966 Td +165.85724999999996 393.66599999999966 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -3918,7 +3907,7 @@ ET BT 72.24000000000001 375.18599999999964 Td /F1.0 10.5 Tf -<322e32332e332e2050726f6475636573> Tj +<322e32342e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN @@ -3927,9 +3916,9 @@ ET 0.200 0.200 0.200 SCN BT -155.16824999999994 375.18599999999964 Td +160.51274999999998 375.18599999999964 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -3956,9 +3945,9 @@ ET 0.200 0.200 0.200 SCN BT -60.24000000000001 356.7059999999996 Td +72.24000000000001 356.7059999999996 Td /F1.0 10.5 Tf -[<322e32342e20474554202f76322f706f6c69637954> 29.78515625 <6f7363614d6f64656c73>] TJ +<322e32342e332e20436f6e73756d6573> Tj ET 0.000 0.000 0.000 SCN @@ -3967,9 +3956,9 @@ ET 0.200 0.200 0.200 SCN BT -224.64675 356.7059999999996 Td +160.51274999999998 356.7059999999996 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -3998,7 +3987,7 @@ ET BT 72.24000000000001 338.2259999999996 Td /F1.0 10.5 Tf -<322e32342e312e20526573706f6e736573> Tj +<322e32342e342e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -4007,9 +3996,9 @@ ET 0.200 0.200 0.200 SCN BT -160.51274999999998 338.2259999999996 Td +155.16824999999994 338.2259999999996 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -4036,9 +4025,9 @@ ET 0.200 0.200 0.200 SCN BT -72.24000000000001 319.7459999999996 Td +60.24000000000001 319.7459999999996 Td /F1.0 10.5 Tf -<322e32342e322e2050726f6475636573> Tj +[<322e32352e20504f53> 20.01953125 <54202f76322f6c6f6f702f7570646174654d6963726f73657276696365506f6c6963792f7b6c6f6f704e616d657d>] TJ ET 0.000 0.000 0.000 SCN @@ -4047,9 +4036,9 @@ ET 0.200 0.200 0.200 SCN BT -155.16824999999994 319.7459999999996 Td +352.91474999999997 319.7459999999996 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -4076,9 +4065,9 @@ ET 0.200 0.200 0.200 SCN BT -60.24000000000001 301.26599999999956 Td +72.24000000000001 301.26599999999956 Td /F1.0 10.5 Tf -[<322e32352e20474554202f76322f706f6c69637954> 29.78515625 <6f7363614d6f64656c732f79616d6c2f7b706f6c6963794d6f64656c547970657d>] TJ +[<322e32352e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN @@ -4087,9 +4076,9 @@ ET 0.200 0.200 0.200 SCN BT -352.91474999999997 301.26599999999956 Td +165.85724999999996 301.26599999999956 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -4118,7 +4107,7 @@ ET BT 72.24000000000001 282.78599999999955 Td /F1.0 10.5 Tf -[<322e32352e312e20506172> 20.01953125 <616d6574657273>] TJ +<322e32352e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN @@ -4127,9 +4116,9 @@ ET 0.200 0.200 0.200 SCN BT -165.85724999999996 282.78599999999955 Td +160.51274999999998 282.78599999999955 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -4147,7 +4136,7 @@ ET BT 552.021 282.78599999999955 Td /F1.0 10.5 Tf -<3132> Tj +<3133> Tj ET 0.000 0.000 0.000 SCN @@ -4158,7 +4147,7 @@ ET BT 72.24000000000001 264.30599999999953 Td /F1.0 10.5 Tf -<322e32352e322e20526573706f6e736573> Tj +<322e32352e332e20436f6e73756d6573> Tj ET 0.000 0.000 0.000 SCN @@ -4187,7 +4176,7 @@ ET BT 552.021 264.30599999999953 Td /F1.0 10.5 Tf -<3132> Tj +<3133> Tj ET 0.000 0.000 0.000 SCN @@ -4198,7 +4187,7 @@ ET BT 72.24000000000001 245.8259999999995 Td /F1.0 10.5 Tf -<322e32352e332e2050726f6475636573> Tj +<322e32352e342e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -4227,7 +4216,7 @@ ET BT 552.021 245.8259999999995 Td /F1.0 10.5 Tf -<3132> Tj +<3133> Tj ET 0.000 0.000 0.000 SCN @@ -4238,7 +4227,7 @@ ET BT 60.24000000000001 227.34599999999952 Td /F1.0 10.5 Tf -[<322e32362e20474554202f76322f706f6c69637954> 29.78515625 <6f7363614d6f64656c732f7b706f6c6963794d6f64656c547970657d>] TJ +[<322e32362e20504f53> 20.01953125 <54202f76322f6c6f6f702f7570646174654f706572> 20.01953125 <6174696f6e616c506f6c69636965732f7b6c6f6f704e616d657d>] TJ ET 0.000 0.000 0.000 SCN @@ -4247,9 +4236,9 @@ ET 0.200 0.200 0.200 SCN BT -320.84775 227.34599999999952 Td +358.25924999999995 227.34599999999952 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -4358,7 +4347,7 @@ ET BT 72.24000000000001 171.90599999999955 Td /F1.0 10.5 Tf -<322e32362e332e2050726f6475636573> Tj +<322e32362e332e20436f6e73756d6573> Tj ET 0.000 0.000 0.000 SCN @@ -4367,9 +4356,9 @@ ET 0.200 0.200 0.200 SCN BT -155.16824999999994 171.90599999999955 Td +160.51274999999998 171.90599999999955 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -4396,9 +4385,9 @@ ET 0.200 0.200 0.200 SCN BT -60.24000000000001 153.42599999999956 Td +72.24000000000001 153.42599999999956 Td /F1.0 10.5 Tf -[<322e32372e20505554202f76322f706f6c69637954> 29.78515625 <6f7363614d6f64656c732f7b706f6c6963794d6f64656c547970657d>] TJ +<322e32362e342e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -4407,9 +4396,9 @@ ET 0.200 0.200 0.200 SCN BT -320.84775 153.42599999999956 Td +155.16824999999994 153.42599999999956 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -4427,7 +4416,7 @@ ET BT 552.021 153.42599999999956 Td /F1.0 10.5 Tf -<3133> Tj +<3134> Tj ET 0.000 0.000 0.000 SCN @@ -4436,9 +4425,9 @@ ET 0.200 0.200 0.200 SCN BT -72.24000000000001 134.94599999999957 Td +60.24000000000001 134.94599999999957 Td /F1.0 10.5 Tf -[<322e32372e312e20506172> 20.01953125 <616d6574657273>] TJ +<322e32372e20474554202f76322f6c6f6f702f7b6c6f6f704e616d657d> Tj ET 0.000 0.000 0.000 SCN @@ -4447,9 +4436,9 @@ ET 0.200 0.200 0.200 SCN BT -165.85724999999996 134.94599999999957 Td +213.95774999999998 134.94599999999957 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -4467,7 +4456,7 @@ ET BT 552.021 134.94599999999957 Td /F1.0 10.5 Tf -<3133> Tj +<3134> Tj ET 0.000 0.000 0.000 SCN @@ -4478,7 +4467,7 @@ ET BT 72.24000000000001 116.46599999999958 Td /F1.0 10.5 Tf -<322e32372e322e20526573706f6e736573> Tj +[<322e32372e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN @@ -4487,9 +4476,9 @@ ET 0.200 0.200 0.200 SCN BT -160.51274999999998 116.46599999999958 Td +165.85724999999996 116.46599999999958 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -4507,7 +4496,7 @@ ET BT 552.021 116.46599999999958 Td /F1.0 10.5 Tf -<3133> Tj +<3134> Tj ET 0.000 0.000 0.000 SCN @@ -4518,7 +4507,7 @@ ET BT 72.24000000000001 97.98599999999959 Td /F1.0 10.5 Tf -<322e32372e332e20436f6e73756d6573> Tj +<322e32372e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN @@ -4547,7 +4536,7 @@ ET BT 552.021 97.98599999999959 Td /F1.0 10.5 Tf -<3133> Tj +<3134> Tj ET 0.000 0.000 0.000 SCN @@ -4558,7 +4547,7 @@ ET BT 72.24000000000001 79.5059999999996 Td /F1.0 10.5 Tf -<322e32372e342e2050726f6475636573> Tj +<322e32372e332e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -4587,7 +4576,7 @@ ET BT 552.021 79.5059999999996 Td /F1.0 10.5 Tf -<3133> Tj +<3134> Tj ET 0.000 0.000 0.000 SCN @@ -4598,7 +4587,7 @@ ET BT 60.24000000000001 61.02599999999961 Td /F1.0 10.5 Tf -<322e32382e20474554202f76322f74656d706c61746573> Tj +[<322e32382e20504f53> 20.01953125 <54202f76322f706f6c69637954> 29.78515625 <6f7363614d6f64656c73>] TJ ET 0.000 0.000 0.000 SCN @@ -4607,9 +4596,9 @@ ET 0.200 0.200 0.200 SCN BT -176.54625 61.02599999999961 Td +229.99124999999998 61.02599999999961 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -4645,11 +4634,11 @@ endobj /Font << /F1.0 8 0 R >> >> -/Annots [454 0 R 455 0 R 456 0 R 457 0 R 458 0 R 459 0 R 460 0 R 461 0 R 462 0 R 463 0 R 464 0 R 465 0 R 466 0 R 467 0 R 468 0 R 469 0 R 470 0 R 471 0 R 472 0 R 473 0 R 474 0 R 475 0 R 476 0 R 477 0 R 478 0 R 479 0 R 480 0 R 481 0 R 482 0 R 483 0 R 484 0 R 485 0 R 486 0 R 487 0 R 488 0 R 489 0 R 490 0 R 491 0 R 492 0 R 493 0 R 494 0 R 495 0 R 496 0 R 497 0 R 498 0 R 499 0 R 500 0 R 501 0 R 502 0 R 503 0 R 504 0 R 505 0 R 506 0 R 507 0 R 508 0 R 509 0 R 510 0 R 511 0 R 512 0 R 513 0 R 514 0 R 515 0 R 516 0 R 517 0 R 518 0 R 519 0 R 520 0 R 521 0 R 522 0 R 523 0 R 524 0 R 525 0 R 526 0 R 527 0 R 528 0 R 529 0 R] +/Annots [498 0 R 499 0 R 500 0 R 501 0 R 502 0 R 503 0 R 504 0 R 505 0 R 506 0 R 507 0 R 508 0 R 509 0 R 510 0 R 511 0 R 512 0 R 513 0 R 514 0 R 515 0 R 516 0 R 517 0 R 518 0 R 519 0 R 520 0 R 521 0 R 522 0 R 523 0 R 524 0 R 525 0 R 526 0 R 527 0 R 528 0 R 529 0 R 530 0 R 531 0 R 532 0 R 533 0 R 534 0 R 535 0 R 536 0 R 537 0 R 538 0 R 539 0 R 540 0 R 541 0 R 542 0 R 543 0 R 544 0 R 545 0 R 546 0 R 547 0 R 548 0 R 549 0 R 550 0 R 551 0 R 552 0 R 553 0 R 554 0 R 555 0 R 556 0 R 557 0 R 558 0 R 559 0 R 560 0 R 561 0 R 562 0 R 563 0 R 564 0 R 565 0 R 566 0 R 567 0 R 568 0 R 569 0 R 570 0 R 571 0 R 572 0 R 573 0 R] >> endobj 15 0 obj -<< /Length 24696 +<< /Length 31985 >> stream q @@ -4661,7 +4650,7 @@ q BT 72.24000000000001 744.786 Td /F1.0 10.5 Tf -<322e32382e312e20526573706f6e736573> Tj +[<322e32382e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN @@ -4670,9 +4659,9 @@ ET 0.200 0.200 0.200 SCN BT -160.51274999999998 744.786 Td +165.85724999999996 744.786 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -4701,7 +4690,7 @@ ET BT 72.24000000000001 726.3059999999999 Td /F1.0 10.5 Tf -<322e32382e322e2050726f6475636573> Tj +<322e32382e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN @@ -4710,9 +4699,9 @@ ET 0.200 0.200 0.200 SCN BT -155.16824999999994 726.3059999999999 Td +160.51274999999998 726.3059999999999 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -4739,9 +4728,9 @@ ET 0.200 0.200 0.200 SCN BT -60.24000000000001 707.8259999999999 Td +72.24000000000001 707.8259999999999 Td /F1.0 10.5 Tf -<322e32392e20474554202f76322f74656d706c617465732f6e616d6573> Tj +<322e32382e332e20436f6e73756d6573> Tj ET 0.000 0.000 0.000 SCN @@ -4750,9 +4739,9 @@ ET 0.200 0.200 0.200 SCN BT -213.95774999999998 707.8259999999999 Td +160.51274999999998 707.8259999999999 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -4781,7 +4770,7 @@ ET BT 72.24000000000001 689.3459999999999 Td /F1.0 10.5 Tf -<322e32392e312e20526573706f6e736573> Tj +<322e32382e342e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -4790,9 +4779,9 @@ ET 0.200 0.200 0.200 SCN BT -160.51274999999998 689.3459999999999 Td +155.16824999999994 689.3459999999999 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -4810,7 +4799,7 @@ ET BT 552.021 689.3459999999999 Td /F1.0 10.5 Tf -<3134> Tj +<3135> Tj ET 0.000 0.000 0.000 SCN @@ -4819,9 +4808,9 @@ ET 0.200 0.200 0.200 SCN BT -72.24000000000001 670.8659999999999 Td +60.24000000000001 670.8659999999999 Td /F1.0 10.5 Tf -<322e32392e322e2050726f6475636573> Tj +[<322e32392e20474554202f76322f706f6c69637954> 29.78515625 <6f7363614d6f64656c73>] TJ ET 0.000 0.000 0.000 SCN @@ -4830,9 +4819,9 @@ ET 0.200 0.200 0.200 SCN BT -155.16824999999994 670.8659999999999 Td +224.64675 670.8659999999999 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -4850,7 +4839,7 @@ ET BT 552.021 670.8659999999999 Td /F1.0 10.5 Tf -<3134> Tj +<3135> Tj ET 0.000 0.000 0.000 SCN @@ -4859,9 +4848,9 @@ ET 0.200 0.200 0.200 SCN BT -60.24000000000001 652.3859999999999 Td +72.24000000000001 652.3859999999999 Td /F1.0 10.5 Tf -<322e33302e20474554202f76322f74656d706c617465732f7b74656d706c6174654e616d657d> Tj +<322e32392e312e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN @@ -4870,9 +4859,9 @@ ET 0.200 0.200 0.200 SCN BT -267.40274999999997 652.3859999999999 Td +160.51274999999998 652.3859999999999 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -4890,7 +4879,7 @@ ET BT 552.021 652.3859999999999 Td /F1.0 10.5 Tf -<3134> Tj +<3135> Tj ET 0.000 0.000 0.000 SCN @@ -4901,7 +4890,7 @@ ET BT 72.24000000000001 633.9059999999998 Td /F1.0 10.5 Tf -[<322e33302e312e20506172> 20.01953125 <616d6574657273>] TJ +<322e32392e322e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -4910,9 +4899,9 @@ ET 0.200 0.200 0.200 SCN BT -165.85724999999996 633.9059999999998 Td +155.16824999999994 633.9059999999998 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -4930,7 +4919,7 @@ ET BT 552.021 633.9059999999998 Td /F1.0 10.5 Tf -<3134> Tj +<3135> Tj ET 0.000 0.000 0.000 SCN @@ -4939,9 +4928,9 @@ ET 0.200 0.200 0.200 SCN BT -72.24000000000001 615.4259999999998 Td +60.24000000000001 615.4259999999998 Td /F1.0 10.5 Tf -<322e33302e322e20526573706f6e736573> Tj +[<322e33302e20474554202f76322f706f6c69637954> 29.78515625 <6f7363614d6f64656c732f79616d6c2f7b706f6c6963794d6f64656c547970657d2f7b706f6c6963794d6f64656c56> 60.05859375 <657273696f6e7d>] TJ ET 0.000 0.000 0.000 SCN @@ -4950,9 +4939,9 @@ ET 0.200 0.200 0.200 SCN BT -160.51274999999998 615.4259999999998 Td +465.14925 615.4259999999998 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -4970,7 +4959,7 @@ ET BT 552.021 615.4259999999998 Td /F1.0 10.5 Tf -<3134> Tj +<3135> Tj ET 0.000 0.000 0.000 SCN @@ -4981,7 +4970,7 @@ ET BT 72.24000000000001 596.9459999999998 Td /F1.0 10.5 Tf -<322e33302e332e2050726f6475636573> Tj +[<322e33302e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN @@ -4990,9 +4979,9 @@ ET 0.200 0.200 0.200 SCN BT -155.16824999999994 596.9459999999998 Td +165.85724999999996 596.9459999999998 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -5010,7 +4999,7 @@ ET BT 552.021 596.9459999999998 Td /F1.0 10.5 Tf -<3134> Tj +<3135> Tj ET 0.000 0.000 0.000 SCN @@ -5019,9 +5008,9 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 578.4659999999998 Td +72.24000000000001 578.4659999999998 Td /F1.0 10.5 Tf -<332e20446566696e6974696f6e73> Tj +<322e33302e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN @@ -5030,9 +5019,9 @@ ET 0.200 0.200 0.200 SCN BT -117.75674999999995 578.4659999999998 Td +160.51274999999998 578.4659999999998 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -5059,9 +5048,9 @@ ET 0.200 0.200 0.200 SCN BT -60.24000000000001 559.9859999999999 Td +72.24000000000001 559.9859999999999 Td /F1.0 10.5 Tf -<332e312e20436c64734865616c7468436865636b> Tj +<322e33302e332e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -5070,9 +5059,9 @@ ET 0.200 0.200 0.200 SCN BT -165.85724999999996 559.9859999999999 Td +155.16824999999994 559.9859999999999 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -5101,7 +5090,7 @@ ET BT 60.24000000000001 541.5059999999999 Td /F1.0 10.5 Tf -<332e322e2044696374696f6e617279> Tj +[<322e33312e20474554202f76322f706f6c69637954> 29.78515625 <6f7363614d6f64656c732f7b706f6c6963794d6f64656c547970657d2f7b706f6c6963794d6f64656c56> 60.05859375 <657273696f6e7d>] TJ ET 0.000 0.000 0.000 SCN @@ -5110,9 +5099,9 @@ ET 0.200 0.200 0.200 SCN BT -133.79024999999996 541.5059999999999 Td +433.08225 541.5059999999999 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -5130,7 +5119,7 @@ ET BT 552.021 541.5059999999999 Td /F1.0 10.5 Tf -<3135> Tj +<3136> Tj ET 0.000 0.000 0.000 SCN @@ -5139,9 +5128,9 @@ ET 0.200 0.200 0.200 SCN BT -60.24000000000001 523.0259999999998 Td +72.24000000000001 523.0259999999998 Td /F1.0 10.5 Tf -<332e332e2044696374696f6e617279456c656d656e74> Tj +[<322e33312e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN @@ -5150,9 +5139,9 @@ ET 0.200 0.200 0.200 SCN BT -176.54625 523.0259999999998 Td +165.85724999999996 523.0259999999998 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -5170,7 +5159,7 @@ ET BT 552.021 523.0259999999998 Td /F1.0 10.5 Tf -<3135> Tj +<3136> Tj ET 0.000 0.000 0.000 SCN @@ -5179,9 +5168,9 @@ ET 0.200 0.200 0.200 SCN BT -60.24000000000001 504.54599999999976 Td +72.24000000000001 504.54599999999976 Td /F1.0 10.5 Tf -<332e342e2045787465726e616c436f6d706f6e656e74> Tj +<322e33312e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN @@ -5190,9 +5179,9 @@ ET 0.200 0.200 0.200 SCN BT -181.89074999999997 504.54599999999976 Td +160.51274999999998 504.54599999999976 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -5219,9 +5208,9 @@ ET 0.200 0.200 0.200 SCN BT -60.24000000000001 486.06599999999975 Td +72.24000000000001 486.06599999999975 Td /F1.0 10.5 Tf -<332e352e2045787465726e616c436f6d706f6e656e745374617465> Tj +<322e33312e332e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -5230,9 +5219,9 @@ ET 0.200 0.200 0.200 SCN BT -208.61325 486.06599999999975 Td +155.16824999999994 486.06599999999975 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -5261,7 +5250,7 @@ ET BT 60.24000000000001 467.58599999999973 Td /F1.0 10.5 Tf -[<332e362e204a736f6e417272> 20.01953125 <61> 20.01953125 <79>] TJ +[<322e33322e20505554202f76322f706f6c69637954> 29.78515625 <6f7363614d6f64656c732f7b706f6c6963794d6f64656c547970657d2f7b706f6c6963794d6f64656c56> 60.05859375 <657273696f6e7d>] TJ ET 0.000 0.000 0.000 SCN @@ -5270,9 +5259,9 @@ ET 0.200 0.200 0.200 SCN BT -133.79024999999996 467.58599999999973 Td +433.08225 467.58599999999973 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -5290,7 +5279,7 @@ ET BT 552.021 467.58599999999973 Td /F1.0 10.5 Tf -<3137> Tj +<3136> Tj ET 0.000 0.000 0.000 SCN @@ -5299,9 +5288,9 @@ ET 0.200 0.200 0.200 SCN BT -60.24000000000001 449.1059999999997 Td +72.24000000000001 449.1059999999997 Td /F1.0 10.5 Tf -<332e372e204a736f6e4e756c6c> Tj +[<322e33322e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN @@ -5310,9 +5299,9 @@ ET 0.200 0.200 0.200 SCN BT -128.44574999999998 449.1059999999997 Td +165.85724999999996 449.1059999999997 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -5330,7 +5319,7 @@ ET BT 552.021 449.1059999999997 Td /F1.0 10.5 Tf -<3138> Tj +<3136> Tj ET 0.000 0.000 0.000 SCN @@ -5339,9 +5328,9 @@ ET 0.200 0.200 0.200 SCN BT -60.24000000000001 430.6259999999997 Td +72.24000000000001 430.6259999999997 Td /F1.0 10.5 Tf -<332e382e204a736f6e4f626a656374> Tj +<322e33322e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN @@ -5350,9 +5339,9 @@ ET 0.200 0.200 0.200 SCN BT -133.79024999999996 430.6259999999997 Td +160.51274999999998 430.6259999999997 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -5370,7 +5359,7 @@ ET BT 552.021 430.6259999999997 Td /F1.0 10.5 Tf -<3139> Tj +<3137> Tj ET 0.000 0.000 0.000 SCN @@ -5379,9 +5368,9 @@ ET 0.200 0.200 0.200 SCN BT -60.24000000000001 412.1459999999997 Td +72.24000000000001 412.1459999999997 Td /F1.0 10.5 Tf -<332e392e204a736f6e5072696d6974697665> Tj +<322e33322e332e20436f6e73756d6573> Tj ET 0.000 0.000 0.000 SCN @@ -5390,9 +5379,9 @@ ET 0.200 0.200 0.200 SCN BT -149.82374999999996 412.1459999999997 Td +160.51274999999998 412.1459999999997 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -5410,7 +5399,7 @@ ET BT 552.021 412.1459999999997 Td /F1.0 10.5 Tf -<3230> Tj +<3137> Tj ET 0.000 0.000 0.000 SCN @@ -5419,9 +5408,9 @@ ET 0.200 0.200 0.200 SCN BT -60.24000000000001 393.66599999999966 Td +72.24000000000001 393.66599999999966 Td /F1.0 10.5 Tf -<332e31302e204c6f6f70> Tj +<322e33322e342e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -5430,9 +5419,9 @@ ET 0.200 0.200 0.200 SCN BT -112.41224999999997 393.66599999999966 Td +155.16824999999994 393.66599999999966 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -5450,7 +5439,7 @@ ET BT 552.021 393.66599999999966 Td /F1.0 10.5 Tf -<3232> Tj +<3137> Tj ET 0.000 0.000 0.000 SCN @@ -5461,7 +5450,7 @@ ET BT 60.24000000000001 375.18599999999964 Td /F1.0 10.5 Tf -<332e31312e204c6f6f70456c656d656e744d6f64656c> Tj +<322e33332e20474554202f76322f74656d706c61746573> Tj ET 0.000 0.000 0.000 SCN @@ -5470,9 +5459,9 @@ ET 0.200 0.200 0.200 SCN BT -187.23524999999995 375.18599999999964 Td +176.54625 375.18599999999964 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -5490,7 +5479,7 @@ ET BT 552.021 375.18599999999964 Td /F1.0 10.5 Tf -<3233> Tj +<3137> Tj ET 0.000 0.000 0.000 SCN @@ -5499,9 +5488,9 @@ ET 0.200 0.200 0.200 SCN BT -60.24000000000001 356.7059999999996 Td +72.24000000000001 356.7059999999996 Td /F1.0 10.5 Tf -<332e31322e204c6f6f704c6f67> Tj +<322e33332e312e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN @@ -5510,9 +5499,9 @@ ET 0.200 0.200 0.200 SCN BT -133.79024999999996 356.7059999999996 Td +160.51274999999998 356.7059999999996 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -5530,7 +5519,7 @@ ET BT 552.021 356.7059999999996 Td /F1.0 10.5 Tf -<3233> Tj +<3137> Tj ET 0.000 0.000 0.000 SCN @@ -5539,9 +5528,9 @@ ET 0.200 0.200 0.200 SCN BT -60.24000000000001 338.2259999999996 Td +72.24000000000001 338.2259999999996 Td /F1.0 10.5 Tf -[<332e31332e204c6f6f7054> 29.78515625 <656d706c617465>] TJ +<322e33332e322e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -5550,9 +5539,9 @@ ET 0.200 0.200 0.200 SCN BT -160.51274999999998 338.2259999999996 Td +155.16824999999994 338.2259999999996 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -5570,7 +5559,7 @@ ET BT 552.021 338.2259999999996 Td /F1.0 10.5 Tf -<3234> Tj +<3137> Tj ET 0.000 0.000 0.000 SCN @@ -5581,7 +5570,7 @@ ET BT 60.24000000000001 319.7459999999996 Td /F1.0 10.5 Tf -[<332e31342e204c6f6f7054> 29.78515625 <656d706c6174654c6f6f70456c656d656e744d6f64656c>] TJ +<322e33342e20474554202f76322f74656d706c617465732f6e616d6573> Tj ET 0.000 0.000 0.000 SCN @@ -5590,9 +5579,9 @@ ET 0.200 0.200 0.200 SCN BT -256.71375 319.7459999999996 Td +213.95774999999998 319.7459999999996 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -5610,7 +5599,7 @@ ET BT 552.021 319.7459999999996 Td /F1.0 10.5 Tf -<3235> Tj +<3137> Tj ET 0.000 0.000 0.000 SCN @@ -5619,9 +5608,9 @@ ET 0.200 0.200 0.200 SCN BT -60.24000000000001 301.26599999999956 Td +72.24000000000001 301.26599999999956 Td /F1.0 10.5 Tf -<332e31352e204d6963726f53657276696365506f6c696379> Tj +<322e33342e312e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN @@ -5630,9 +5619,9 @@ ET 0.200 0.200 0.200 SCN BT -187.23524999999995 301.26599999999956 Td +160.51274999999998 301.26599999999956 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -5650,7 +5639,7 @@ ET BT 552.021 301.26599999999956 Td /F1.0 10.5 Tf -<3235> Tj +<3137> Tj ET 0.000 0.000 0.000 SCN @@ -5659,9 +5648,9 @@ ET 0.200 0.200 0.200 SCN BT -60.24000000000001 282.78599999999955 Td +72.24000000000001 282.78599999999955 Td /F1.0 10.5 Tf -<332e31362e204e756d626572> Tj +<322e33342e322e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -5670,9 +5659,9 @@ ET 0.200 0.200 0.200 SCN BT -128.44574999999998 282.78599999999955 Td +155.16824999999994 282.78599999999955 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -5690,7 +5679,7 @@ ET BT 552.021 282.78599999999955 Td /F1.0 10.5 Tf -<3236> Tj +<3137> Tj ET 0.000 0.000 0.000 SCN @@ -5701,7 +5690,7 @@ ET BT 60.24000000000001 264.30599999999953 Td /F1.0 10.5 Tf -[<332e31372e204f706572> 20.01953125 <6174696f6e616c506f6c696379>] TJ +<322e33352e20474554202f76322f74656d706c617465732f7b74656d706c6174654e616d657d> Tj ET 0.000 0.000 0.000 SCN @@ -5710,9 +5699,9 @@ ET 0.200 0.200 0.200 SCN BT -176.54625 264.30599999999953 Td +267.40274999999997 264.30599999999953 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -5730,7 +5719,7 @@ ET BT 552.021 264.30599999999953 Td /F1.0 10.5 Tf -<3236> Tj +<3137> Tj ET 0.000 0.000 0.000 SCN @@ -5739,9 +5728,9 @@ ET 0.200 0.200 0.200 SCN BT -60.24000000000001 245.8259999999995 Td +72.24000000000001 245.8259999999995 Td /F1.0 10.5 Tf -<332e31382e20506f6c6963794d6f64656c> Tj +[<322e33352e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN @@ -5750,9 +5739,9 @@ ET 0.200 0.200 0.200 SCN BT -149.82374999999996 245.8259999999995 Td +165.85724999999996 245.8259999999995 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -5770,7 +5759,7 @@ ET BT 552.021 245.8259999999995 Td /F1.0 10.5 Tf -<3237> Tj +<3137> Tj ET 0.000 0.000 0.000 SCN @@ -5779,9 +5768,9 @@ ET 0.200 0.200 0.200 SCN BT -60.24000000000001 227.34599999999952 Td +72.24000000000001 227.34599999999952 Td /F1.0 10.5 Tf -<332e31392e2053657276696365> Tj +<322e33352e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN @@ -5790,9 +5779,9 @@ ET 0.200 0.200 0.200 SCN BT -123.10125 227.34599999999952 Td +160.51274999999998 227.34599999999952 Td /F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN @@ -5810,41 +5799,18 @@ ET BT 552.021 227.34599999999952 Td /F1.0 10.5 Tf -<3238> Tj +<3138> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn -Q - -endstream -endobj -16 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 612.0 792.0] -/Contents 15 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F1.0 8 0 R ->> ->> -/Annots [530 0 R 531 0 R 532 0 R 533 0 R 534 0 R 535 0 R 536 0 R 537 0 R 538 0 R 539 0 R 540 0 R 541 0 R 542 0 R 543 0 R 544 0 R 545 0 R 546 0 R 547 0 R 548 0 R 549 0 R 550 0 R 551 0 R 552 0 R 553 0 R 554 0 R 555 0 R 556 0 R 557 0 R 558 0 R 559 0 R 560 0 R 561 0 R 562 0 R 563 0 R 564 0 R 565 0 R 566 0 R 567 0 R 568 0 R 569 0 R 570 0 R 571 0 R 572 0 R 573 0 R 574 0 R 575 0 R 576 0 R 577 0 R 578 0 R 579 0 R 580 0 R 581 0 R 582 0 R 583 0 R 584 0 R 585 0 R 586 0 R 587 0 R] ->> -endobj -17 0 obj -<< /Length 2379 ->> -stream -q -/DeviceRGB cs 0.200 0.200 0.200 scn -/DeviceRGB CS 0.200 0.200 0.200 SCN BT -48.24 730.304 Td -/F2.0 22 Tf -<4368617074657220312e204f76657276696577> Tj +72.24000000000001 208.86599999999953 Td +/F1.0 10.5 Tf +<322e33352e332e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -5853,20 +5819,27 @@ ET 0.200 0.200 0.200 SCN BT -48.24 688.656 Td -/F2.0 18 Tf -[<312e312e2056> 60.05859375 <657273696f6e20696e666f726d6174696f6e>] TJ +155.16824999999994 208.86599999999953 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn + +BT +550.66125 208.86599999999953 Td +/F1.0 5.25 Tf + Tj +ET + 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24 660.036 Td -/F3.0 10.5 Tf -[<56> 60.05859375 <657273696f6e>] TJ +552.021 208.86599999999953 Td +/F1.0 10.5 Tf +<3138> Tj ET 0.000 0.000 0.000 SCN @@ -5875,9 +5848,9 @@ ET 0.200 0.200 0.200 SCN BT -85.136384765625 660.036 Td +60.24000000000001 190.38599999999954 Td /F1.0 10.5 Tf -[<203a20352e302e302d534e415053484f> 20.01953125 <54>] TJ +<322e33362e20474554202f76322f74656d706c617465732f7b74656d706c6174654e616d657d2f737667526570726573656e746174696f6e> Tj ET 0.000 0.000 0.000 SCN @@ -5886,20 +5859,27 @@ ET 0.200 0.200 0.200 SCN BT -48.24 620.796 Td -/F2.0 18 Tf -<312e322e2055524920736368656d65> Tj +358.25924999999995 190.38599999999954 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn + +BT +550.66125 190.38599999999954 Td +/F1.0 5.25 Tf + Tj +ET + 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24 592.176 Td -/F3.0 10.5 Tf -<486f7374> Tj +552.021 190.38599999999954 Td +/F1.0 10.5 Tf +<3138> Tj ET 0.000 0.000 0.000 SCN @@ -5908,9 +5888,9 @@ ET 0.200 0.200 0.200 SCN BT -71.30850000000001 592.176 Td +72.24000000000001 171.90599999999955 Td /F1.0 10.5 Tf -<203a206c6f63616c686f73743a3436333437> Tj +[<322e33362e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN @@ -5919,18 +5899,27 @@ ET 0.200 0.200 0.200 SCN BT -48.24 576.3960000000001 Td +165.85724999999996 171.90599999999955 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn + +BT +550.66125 171.90599999999955 Td +/F1.0 5.25 Tf + Tj +ET + 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24 576.3960000000001 Td -/F3.0 10.5 Tf -<4261736550617468> Tj +552.021 171.90599999999955 Td +/F1.0 10.5 Tf +<3138> Tj ET 0.000 0.000 0.000 SCN @@ -5939,9 +5928,9 @@ ET 0.200 0.200 0.200 SCN BT -93.95700000000001 576.3960000000001 Td +72.24000000000001 153.42599999999956 Td /F1.0 10.5 Tf -<203a202f7265737473657276696365732f636c64732f> Tj +<322e33362e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN @@ -5950,18 +5939,27 @@ ET 0.200 0.200 0.200 SCN BT -48.24 560.6160000000001 Td +160.51274999999998 153.42599999999956 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn + +BT +550.66125 153.42599999999956 Td +/F1.0 5.25 Tf + Tj +ET + 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24 560.6160000000001 Td -/F3.0 10.5 Tf -<536368656d6573> Tj +552.021 153.42599999999956 Td +/F1.0 10.5 Tf +<3138> Tj ET 0.000 0.000 0.000 SCN @@ -5970,106 +5968,38 @@ ET 0.200 0.200 0.200 SCN BT -89.946 560.6160000000001 Td +72.24000000000001 134.94599999999957 Td /F1.0 10.5 Tf -<203a2048545450> Tj +<322e33362e332e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn -q -0.000 0.000 0.000 scn -0.000 0.000 0.000 SCN -1 w -0 J -0 j -[ ] 0 d -/Stamp1 Do 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -557.7289999999999 14.388 Td -/F1.0 9 Tf -<31> Tj +155.16824999999994 134.94599999999957 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn -Q -Q -endstream -endobj -18 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 612.0 792.0] -/Contents 17 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 22 0 R -/F3.0 24 0 R -/F1.0 8 0 R ->> -/XObject << /Stamp1 588 0 R ->> ->> ->> -endobj -19 0 obj -[18 0 R /XYZ 0 792.0 null] -endobj -20 0 obj -<< /Type /Names -/Dests 21 0 R ->> -endobj -21 0 obj -<< /Kids [53 0 R 246 0 R 160 0 R 87 0 R 130 0 R 197 0 R 54 0 R 187 0 R 116 0 R 82 0 R] ->> -endobj -22 0 obj -<< /Type /Font -/BaseFont /AAAAAB+NotoSerif-Bold -/Subtype /TrueType -/FontDescriptor 739 0 R -/FirstChar 32 -/LastChar 255 -/Widths 741 0 R -/ToUnicode 740 0 R ->> -endobj -23 0 obj -[18 0 R /XYZ 0 712.0799999999999 null] -endobj -24 0 obj -<< /Type /Font -/BaseFont /AAAAAC+NotoSerif-Italic -/Subtype /TrueType -/FontDescriptor 743 0 R -/FirstChar 32 -/LastChar 255 -/Widths 745 0 R -/ToUnicode 744 0 R ->> -endobj -25 0 obj -[18 0 R /XYZ 0 644.22 null] -endobj -26 0 obj -<< /Length 12127 ->> -stream -q -/DeviceRGB cs +BT +550.66125 134.94599999999957 Td +/F1.0 5.25 Tf + Tj +ET + 0.200 0.200 0.200 scn -/DeviceRGB CS 0.200 0.200 0.200 SCN BT -48.24 730.304 Td -/F2.0 22 Tf -<4368617074657220322e205061746873> Tj +552.021 134.94599999999957 Td +/F1.0 10.5 Tf +<3138> Tj ET 0.000 0.000 0.000 SCN @@ -6078,9 +6008,9 @@ ET 0.200 0.200 0.200 SCN BT -48.24 688.656 Td -/F2.0 18 Tf -<322e312e20474554202f76312f6865616c7468636865636b> Tj +48.24000000000001 116.46599999999958 Td +/F1.0 10.5 Tf +<332e20446566696e6974696f6e73> Tj ET 0.000 0.000 0.000 SCN @@ -6089,171 +6019,5379 @@ ET 0.200 0.200 0.200 SCN BT -48.24 654.416 Td -/F2.0 13 Tf -<322e312e312e20526573706f6e736573> Tj +117.75674999999995 116.46599999999958 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 602.160 51.552 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -99.792 602.160 360.864 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -460.656 602.160 103.104 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 578.880 51.552 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -99.792 578.880 360.864 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -460.656 578.880 103.104 23.280 re -f -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -48.240 639.720 m -99.792 639.720 l -S -[ ] 0 d -1.5 w -0.867 0.867 0.867 SCN -48.240 602.160 m -99.792 602.160 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -48.240 639.970 m -48.240 601.410 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -99.792 639.970 m -99.792 601.410 l -S -[ ] 0 d -1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn BT -51.24 623.9730000000002 Td -/F2.0 10.5 Tf -<48545450> Tj +550.66125 116.46599999999958 Td +/F1.0 5.25 Tf + Tj ET +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN BT -51.24 609.6930000000001 Td -/F2.0 10.5 Tf -<436f6465> Tj +552.021 116.46599999999958 Td +/F1.0 10.5 Tf +<3139> Tj ET -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -99.792 639.720 m -460.656 639.720 l -S -[ ] 0 d -1.5 w -0.867 0.867 0.867 SCN -99.792 602.160 m -460.656 602.160 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -99.792 639.970 m -99.792 601.410 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -460.656 639.970 m -460.656 601.410 l -S -[ ] 0 d -1 w 0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn 0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN BT -102.792 623.9730000000002 Td -/F2.0 10.5 Tf -<4465736372697074696f6e> Tj +60.24000000000001 97.98599999999959 Td +/F1.0 10.5 Tf +<332e312e20436c616d70496e666f726d6174696f6e> Tj ET +0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -460.656 639.720 m -563.760 639.720 l -S -[ ] 0 d -1.5 w -0.867 0.867 0.867 SCN -460.656 602.160 m -563.760 602.160 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -460.656 639.970 m -460.656 601.410 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -563.760 639.970 m -563.760 601.410 l -S -[ ] 0 d -1 w +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +176.54625 97.98599999999959 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + 0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +BT +550.66125 97.98599999999959 Td +/F1.0 5.25 Tf + Tj +ET + 0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN BT -463.65600000000006 623.9730000000002 Td -/F2.0 10.5 Tf -<536368656d61> Tj +552.021 97.98599999999959 Td +/F1.0 10.5 Tf +<3139> Tj ET +0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn -0.5 w +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +60.24000000000001 79.5059999999996 Td +/F1.0 10.5 Tf +<332e322e20436c64734865616c7468436865636b> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +165.85724999999996 79.5059999999996 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +BT +550.66125 79.5059999999996 Td +/F1.0 5.25 Tf + Tj +ET + +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +552.021 79.5059999999996 Td +/F1.0 10.5 Tf +<3139> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +60.24000000000001 61.02599999999961 Td +/F1.0 10.5 Tf +<332e332e2044696374696f6e617279> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +133.79024999999996 61.02599999999961 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +BT +550.66125 61.02599999999961 Td +/F1.0 5.25 Tf + Tj +ET + +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +552.021 61.02599999999961 Td +/F1.0 10.5 Tf +<3139> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +Q + +endstream +endobj +16 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 612.0 792.0] +/Contents 15 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F1.0 8 0 R +>> +>> +/Annots [574 0 R 575 0 R 576 0 R 577 0 R 578 0 R 579 0 R 580 0 R 581 0 R 582 0 R 583 0 R 584 0 R 585 0 R 586 0 R 587 0 R 588 0 R 589 0 R 590 0 R 591 0 R 592 0 R 593 0 R 594 0 R 595 0 R 596 0 R 597 0 R 598 0 R 599 0 R 600 0 R 601 0 R 602 0 R 603 0 R 604 0 R 605 0 R 606 0 R 607 0 R 608 0 R 609 0 R 610 0 R 611 0 R 612 0 R 613 0 R 614 0 R 615 0 R 616 0 R 617 0 R 618 0 R 619 0 R 620 0 R 621 0 R 622 0 R 623 0 R 624 0 R 625 0 R 626 0 R 627 0 R 628 0 R 629 0 R 630 0 R 631 0 R 632 0 R 633 0 R 634 0 R 635 0 R 636 0 R 637 0 R 638 0 R 639 0 R 640 0 R 641 0 R 642 0 R 643 0 R 644 0 R 645 0 R 646 0 R 647 0 R 648 0 R 649 0 R] +>> +endobj +17 0 obj +<< /Length 14483 +>> +stream +q +/DeviceRGB cs +0.200 0.200 0.200 scn +/DeviceRGB CS +0.200 0.200 0.200 SCN + +BT +60.24 744.786 Td +/F1.0 10.5 Tf +<332e342e2044696374696f6e617279456c656d656e74> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +176.54625 744.786 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +BT +550.66125 744.786 Td +/F1.0 5.25 Tf + Tj +ET + +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +552.021 744.786 Td +/F1.0 10.5 Tf +<3230> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +60.24000000000001 726.3059999999999 Td +/F1.0 10.5 Tf +<332e352e2045787465726e616c436f6d706f6e656e74> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +181.89074999999997 726.3059999999999 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +BT +550.66125 726.3059999999999 Td +/F1.0 5.25 Tf + Tj +ET + +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +552.021 726.3059999999999 Td +/F1.0 10.5 Tf +<3230> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +60.24000000000001 707.8259999999999 Td +/F1.0 10.5 Tf +<332e362e2045787465726e616c436f6d706f6e656e745374617465> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +208.61325 707.8259999999999 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +BT +550.66125 707.8259999999999 Td +/F1.0 5.25 Tf + Tj +ET + +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +552.021 707.8259999999999 Td +/F1.0 10.5 Tf +<3231> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +60.24000000000001 689.3459999999999 Td +/F1.0 10.5 Tf +[<332e372e204a736f6e417272> 20.01953125 <61> 20.01953125 <79>] TJ +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +133.79024999999996 689.3459999999999 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +BT +550.66125 689.3459999999999 Td +/F1.0 5.25 Tf + Tj +ET + +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +552.021 689.3459999999999 Td +/F1.0 10.5 Tf +<3231> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +60.24000000000001 670.8659999999999 Td +/F1.0 10.5 Tf +<332e382e204a736f6e4e756c6c> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +128.44574999999998 670.8659999999999 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +BT +550.66125 670.8659999999999 Td +/F1.0 5.25 Tf + Tj +ET + +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +552.021 670.8659999999999 Td +/F1.0 10.5 Tf +<3232> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +60.24000000000001 652.3859999999999 Td +/F1.0 10.5 Tf +<332e392e204a736f6e4f626a656374> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +133.79024999999996 652.3859999999999 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +BT +550.66125 652.3859999999999 Td +/F1.0 5.25 Tf + Tj +ET + +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +552.021 652.3859999999999 Td +/F1.0 10.5 Tf +<3233> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +60.24000000000001 633.9059999999998 Td +/F1.0 10.5 Tf +<332e31302e204a736f6e5072696d6974697665> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +155.16824999999994 633.9059999999998 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +BT +550.66125 633.9059999999998 Td +/F1.0 5.25 Tf + Tj +ET + +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +552.021 633.9059999999998 Td +/F1.0 10.5 Tf +<3235> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +60.24000000000001 615.4259999999998 Td +/F1.0 10.5 Tf +<332e31312e204c6f6f70> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +112.41224999999997 615.4259999999998 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +BT +550.66125 615.4259999999998 Td +/F1.0 5.25 Tf + Tj +ET + +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +552.021 615.4259999999998 Td +/F1.0 10.5 Tf +<3236> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +60.24000000000001 596.9459999999998 Td +/F1.0 10.5 Tf +<332e31322e204c6f6f70456c656d656e744d6f64656c> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +187.23524999999995 596.9459999999998 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +BT +550.66125 596.9459999999998 Td +/F1.0 5.25 Tf + Tj +ET + +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +552.021 596.9459999999998 Td +/F1.0 10.5 Tf +<3237> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +60.24000000000001 578.4659999999998 Td +/F1.0 10.5 Tf +<332e31332e204c6f6f704c6f67> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +133.79024999999996 578.4659999999998 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +BT +550.66125 578.4659999999998 Td +/F1.0 5.25 Tf + Tj +ET + +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +552.021 578.4659999999998 Td +/F1.0 10.5 Tf +<3238> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +60.24000000000001 559.9859999999999 Td +/F1.0 10.5 Tf +[<332e31342e204c6f6f7054> 29.78515625 <656d706c617465>] TJ +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +160.51274999999998 559.9859999999999 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +BT +550.66125 559.9859999999999 Td +/F1.0 5.25 Tf + Tj +ET + +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +552.021 559.9859999999999 Td +/F1.0 10.5 Tf +<3238> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +60.24000000000001 541.5059999999999 Td +/F1.0 10.5 Tf +[<332e31352e204c6f6f7054> 29.78515625 <656d706c6174654c6f6f70456c656d656e744d6f64656c>] TJ +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +256.71375 541.5059999999999 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +BT +550.66125 541.5059999999999 Td +/F1.0 5.25 Tf + Tj +ET + +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +552.021 541.5059999999999 Td +/F1.0 10.5 Tf +<3239> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +60.24000000000001 523.0259999999998 Td +/F1.0 10.5 Tf +<332e31362e204d6963726f53657276696365506f6c696379> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +187.23524999999995 523.0259999999998 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +BT +550.66125 523.0259999999998 Td +/F1.0 5.25 Tf + Tj +ET + +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +552.021 523.0259999999998 Td +/F1.0 10.5 Tf +<3239> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +60.24000000000001 504.54599999999976 Td +/F1.0 10.5 Tf +<332e31372e204e756d626572> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +128.44574999999998 504.54599999999976 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +BT +550.66125 504.54599999999976 Td +/F1.0 5.25 Tf + Tj +ET + +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +552.021 504.54599999999976 Td +/F1.0 10.5 Tf +<3330> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +60.24000000000001 486.06599999999975 Td +/F1.0 10.5 Tf +[<332e31382e204f706572> 20.01953125 <6174696f6e616c506f6c696379>] TJ +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +176.54625 486.06599999999975 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +BT +550.66125 486.06599999999975 Td +/F1.0 5.25 Tf + Tj +ET + +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +552.021 486.06599999999975 Td +/F1.0 10.5 Tf +<3330> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +60.24000000000001 467.58599999999973 Td +/F1.0 10.5 Tf +<332e31392e20506f6c6963794d6f64656c> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +149.82374999999996 467.58599999999973 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +BT +550.66125 467.58599999999973 Td +/F1.0 5.25 Tf + Tj +ET + +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +552.021 467.58599999999973 Td +/F1.0 10.5 Tf +<3331> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +60.24000000000001 449.1059999999997 Td +/F1.0 10.5 Tf +<332e32302e2053657276696365> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +123.10125 449.1059999999997 Td +/F1.0 10.5 Tf +<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +BT +550.66125 449.1059999999997 Td +/F1.0 5.25 Tf + Tj +ET + +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +552.021 449.1059999999997 Td +/F1.0 10.5 Tf +<3332> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +Q + +endstream +endobj +18 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 612.0 792.0] +/Contents 17 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F1.0 8 0 R +>> +>> +/Annots [650 0 R 651 0 R 652 0 R 653 0 R 654 0 R 655 0 R 656 0 R 657 0 R 658 0 R 659 0 R 660 0 R 661 0 R 662 0 R 663 0 R 664 0 R 665 0 R 666 0 R 667 0 R 668 0 R 669 0 R 670 0 R 671 0 R 672 0 R 673 0 R 674 0 R 675 0 R 676 0 R 677 0 R 678 0 R 679 0 R 680 0 R 681 0 R 682 0 R 683 0 R] +>> +endobj +19 0 obj +<< /Length 2379 +>> +stream +q +/DeviceRGB cs +0.200 0.200 0.200 scn +/DeviceRGB CS +0.200 0.200 0.200 SCN + +BT +48.24 730.304 Td +/F2.0 22 Tf +<4368617074657220312e204f76657276696577> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24 688.656 Td +/F2.0 18 Tf +[<312e312e2056> 60.05859375 <657273696f6e20696e666f726d6174696f6e>] TJ +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24 660.036 Td +/F3.0 10.5 Tf +[<56> 60.05859375 <657273696f6e>] TJ +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +85.136384765625 660.036 Td +/F1.0 10.5 Tf +[<203a20352e302e302d534e415053484f> 20.01953125 <54>] TJ +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24 620.796 Td +/F2.0 18 Tf +<312e322e2055524920736368656d65> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24 592.176 Td +/F3.0 10.5 Tf +<486f7374> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +71.30850000000001 592.176 Td +/F1.0 10.5 Tf +<203a206c6f63616c686f73743a3431363037> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24 576.3960000000001 Td +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24 576.3960000000001 Td +/F3.0 10.5 Tf +<4261736550617468> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +93.95700000000001 576.3960000000001 Td +/F1.0 10.5 Tf +<203a202f7265737473657276696365732f636c64732f> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24 560.6160000000001 Td +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24 560.6160000000001 Td +/F3.0 10.5 Tf +<536368656d6573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +89.946 560.6160000000001 Td +/F1.0 10.5 Tf +<203a2048545450> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +q +0.000 0.000 0.000 scn +0.000 0.000 0.000 SCN +1 w +0 J +0 j +[ ] 0 d +/Stamp1 Do +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +557.7289999999999 14.388 Td +/F1.0 9 Tf +<31> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +Q +Q + +endstream +endobj +20 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 612.0 792.0] +/Contents 19 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F2.0 24 0 R +/F3.0 26 0 R +/F1.0 8 0 R +>> +/XObject << /Stamp1 684 0 R +>> +>> +>> +endobj +21 0 obj +[20 0 R /XYZ 0 792.0 null] +endobj +22 0 obj +<< /Type /Names +/Dests 23 0 R +>> +endobj +23 0 obj +<< /Kids [56 0 R 260 0 R 322 0 R 155 0 R 238 0 R 90 0 R 152 0 R 220 0 R 57 0 R 193 0 R 118 0 R 84 0 R 209 0 R] +>> +endobj +24 0 obj +<< /Type /Font +/BaseFont /AAAAAB+NotoSerif-Bold +/Subtype /TrueType +/FontDescriptor 861 0 R +/FirstChar 32 +/LastChar 255 +/Widths 863 0 R +/ToUnicode 862 0 R +>> +endobj +25 0 obj +[20 0 R /XYZ 0 712.0799999999999 null] +endobj +26 0 obj +<< /Type /Font +/BaseFont /AAAAAC+NotoSerif-Italic +/Subtype /TrueType +/FontDescriptor 865 0 R +/FirstChar 32 +/LastChar 255 +/Widths 867 0 R +/ToUnicode 866 0 R +>> +endobj +27 0 obj +[20 0 R /XYZ 0 644.22 null] +endobj +28 0 obj +<< /Length 12151 +>> +stream +q +/DeviceRGB cs +0.200 0.200 0.200 scn +/DeviceRGB CS +0.200 0.200 0.200 SCN + +BT +48.24 730.304 Td +/F2.0 22 Tf +<4368617074657220322e205061746873> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24 688.656 Td +/F2.0 18 Tf +<322e312e20474554202f76312f6865616c7468636865636b> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24 654.416 Td +/F2.0 13 Tf +<322e312e312e20526573706f6e736573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 602.160 51.552 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +99.792 602.160 360.864 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +460.656 602.160 103.104 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 578.880 51.552 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +99.792 578.880 360.864 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +460.656 578.880 103.104 23.280 re +f +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 639.720 m +99.792 639.720 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +48.240 602.160 m +99.792 602.160 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 639.970 m +48.240 601.410 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 639.970 m +99.792 601.410 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24 623.9730000000002 Td +/F2.0 10.5 Tf +<48545450> Tj +ET + + +BT +51.24 609.6930000000001 Td +/F2.0 10.5 Tf +<436f6465> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +99.792 639.720 m +460.656 639.720 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +99.792 602.160 m +460.656 602.160 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 639.970 m +99.792 601.410 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 639.970 m +460.656 601.410 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +102.792 623.9730000000002 Td +/F2.0 10.5 Tf +<4465736372697074696f6e> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +460.656 639.720 m +563.760 639.720 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +460.656 602.160 m +563.760 602.160 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 639.970 m +460.656 601.410 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 639.970 m +563.760 601.410 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +463.65600000000006 623.9730000000002 Td +/F2.0 10.5 Tf +<536368656d61> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 602.160 m +99.792 602.160 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 578.880 m +99.792 578.880 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 602.410 m +48.240 578.630 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 602.410 m +99.792 578.630 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24 585.913 Td +/F2.0 10.5 Tf +<323030> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +99.792 602.160 m +460.656 602.160 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 578.880 m +460.656 578.880 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 602.410 m +99.792 578.630 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 602.410 m +460.656 578.630 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +102.792 585.913 Td +/F1.0 10.5 Tf +<4f75747075742074797065> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +460.656 602.160 m +563.760 602.160 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 578.880 m +563.760 578.880 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 602.410 m +460.656 578.630 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 602.410 m +563.760 578.630 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN + +BT +463.65600000000006 585.913 Td +/F1.0 10.5 Tf +<436c64734865616c7468436865636b> Tj +ET + +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24 549.2960000000002 Td +/F2.0 13 Tf +<322e312e322e2050726f6475636573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +-0.500 Tc +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +56.88050000000001 522.6360000000002 Td +/F1.0 10.5 Tf + Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +0.000 Tc +0.694 0.129 0.275 scn +0.694 0.129 0.275 SCN + +BT +66.24000000000001 524.8200000000003 Td +/F4.0 10.5 Tf +<6170706c69636174696f6e2f6a736f6e> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 487.1760000000003 Td +/F2.0 18 Tf +<322e322e20474554202f76312f757365722f67657455736572> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 452.9360000000002 Td +/F2.0 13 Tf +<322e322e312e20526573706f6e736573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 414.960 171.840 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +220.080 414.960 343.680 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 391.680 171.840 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +220.080 391.680 343.680 23.280 re +f +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 438.240 m +220.080 438.240 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +48.240 414.960 m +220.080 414.960 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 438.490 m +48.240 414.210 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +220.080 438.490 m +220.080 414.210 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24000000000001 422.49300000000017 Td +/F2.0 10.5 Tf +<4854545020436f6465> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +220.080 438.240 m +563.760 438.240 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +220.080 414.960 m +563.760 414.960 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +220.080 438.490 m +220.080 414.210 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 438.490 m +563.760 414.210 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +223.07982816 422.49300000000017 Td +/F2.0 10.5 Tf +<536368656d61> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 414.960 m +220.080 414.960 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 391.680 m +220.080 391.680 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 415.210 m +48.240 391.430 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +220.080 415.210 m +220.080 391.430 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24000000000001 398.71300000000014 Td +/F2.0 10.5 Tf +<323030> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +220.080 414.960 m +563.760 414.960 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +220.080 391.680 m +563.760 391.680 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +220.080 415.210 m +220.080 391.430 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 415.210 m +563.760 391.430 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +223.07982816 398.71300000000014 Td +/F1.0 10.5 Tf +<4e6f20436f6e74656e74> Tj +ET + +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 362.0960000000002 Td +/F2.0 13 Tf +<322e322e322e2050726f6475636573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +-0.500 Tc +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +56.88050000000001 335.43600000000015 Td +/F1.0 10.5 Tf + Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +0.000 Tc +0.694 0.129 0.275 scn +0.694 0.129 0.275 SCN + +BT +66.24000000000001 337.6200000000002 Td +/F4.0 10.5 Tf +<746578742f706c61696e> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 299.97600000000017 Td +/F2.0 18 Tf +<322e332e20474554202f76322f636c616d70496e666f726d6174696f6e> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 265.7360000000001 Td +/F2.0 13 Tf +<322e332e312e20526573706f6e736573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 213.480 51.552 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +99.792 213.480 360.864 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +460.656 213.480 103.104 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 190.200 51.552 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +99.792 190.200 360.864 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +460.656 190.200 103.104 23.280 re +f +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 251.040 m +99.792 251.040 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +48.240 213.480 m +99.792 213.480 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 251.290 m +48.240 212.730 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 251.290 m +99.792 212.730 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24000000000001 235.29300000000012 Td +/F2.0 10.5 Tf +<48545450> Tj +ET + + +BT +51.24000000000001 221.01300000000012 Td +/F2.0 10.5 Tf +<436f6465> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +99.792 251.040 m +460.656 251.040 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +99.792 213.480 m +460.656 213.480 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 251.290 m +99.792 212.730 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 251.290 m +460.656 212.730 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +102.792 235.29300000000012 Td +/F2.0 10.5 Tf +<4465736372697074696f6e> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +460.656 251.040 m +563.760 251.040 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +460.656 213.480 m +563.760 213.480 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 251.290 m +460.656 212.730 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 251.290 m +563.760 212.730 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +463.65600000000006 235.29300000000012 Td +/F2.0 10.5 Tf +<536368656d61> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 213.480 m +99.792 213.480 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 190.200 m +99.792 190.200 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 213.730 m +48.240 189.950 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 213.730 m +99.792 189.950 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24000000000001 197.23300000000012 Td +/F2.0 10.5 Tf +<323030> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +99.792 213.480 m +460.656 213.480 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 190.200 m +460.656 190.200 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 213.730 m +99.792 189.950 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 213.730 m +460.656 189.950 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +102.792 197.23300000000012 Td +/F1.0 10.5 Tf +<4f75747075742074797065> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +460.656 213.480 m +563.760 213.480 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 190.200 m +563.760 190.200 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 213.730 m +460.656 189.950 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 213.730 m +563.760 189.950 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN + +BT +463.65600000000006 197.23300000000012 Td +/F1.0 10.5 Tf +<436c616d70496e666f726d6174696f6e> Tj +ET + +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 160.6160000000001 Td +/F2.0 13 Tf +<322e332e322e2050726f6475636573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +-0.500 Tc +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +56.88050000000001 133.95600000000007 Td +/F1.0 10.5 Tf + Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +0.000 Tc +0.694 0.129 0.275 scn +0.694 0.129 0.275 SCN + +BT +66.24000000000001 136.14000000000007 Td +/F4.0 10.5 Tf +<6170706c69636174696f6e2f6a736f6e> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 98.49600000000007 Td +/F2.0 18 Tf +<322e342e20474554202f76322f64696374696f6e617279> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +q +0.000 0.000 0.000 scn +0.000 0.000 0.000 SCN +1 w +0 J +0 j +[ ] 0 d +/Stamp1 Do +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +49.24 14.388 Td +/F1.0 9 Tf +<32> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +Q +Q + +endstream +endobj +29 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 612.0 792.0] +/Contents 28 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F2.0 24 0 R +/F1.0 8 0 R +/F4.0 35 0 R +>> +/XObject << /Stamp1 684 0 R +>> +>> +/Annots [33 0 R 41 0 R] +>> +endobj +30 0 obj +[29 0 R /XYZ 0 792.0 null] +endobj +31 0 obj +[29 0 R /XYZ 0 712.0799999999999 null] +endobj +32 0 obj +[29 0 R /XYZ 0 672.0 null] +endobj +33 0 obj +<< /Border [0 0 0] +/Dest (_cldshealthcheck) +/Subtype /Link +/Rect [463.65600000000006 582.8470000000001 547.9710000000001 597.1270000000001] +/Type /Annot +>> +endobj +34 0 obj +[29 0 R /XYZ 0 566.8800000000001 null] +endobj +35 0 obj +<< /Type /Font +/BaseFont /AAAAAD+mplus1mn-regular +/Subtype /TrueType +/FontDescriptor 869 0 R +/FirstChar 32 +/LastChar 255 +/Widths 871 0 R +/ToUnicode 870 0 R +>> +endobj +36 0 obj +[29 0 R /XYZ 0 510.60000000000025 null] +endobj +37 0 obj +[29 0 R /XYZ 0 470.5200000000002 null] +endobj +38 0 obj +[29 0 R /XYZ 0 379.6800000000002 null] +endobj +39 0 obj +[29 0 R /XYZ 0 323.40000000000015 null] +endobj +40 0 obj +[29 0 R /XYZ 0 283.3200000000001 null] +endobj +41 0 obj +<< /Border [0 0 0] +/Dest (_clampinformation) +/Subtype /Link +/Rect [463.65600000000006 194.16700000000012 556.791 208.44700000000012] +/Type /Annot +>> +endobj +42 0 obj +[29 0 R /XYZ 0 178.2000000000001 null] +endobj +43 0 obj +[29 0 R /XYZ 0 121.92000000000007 null] +endobj +44 0 obj +<< /Length 16421 +>> +stream +q +/DeviceRGB cs +0.200 0.200 0.200 scn +/DeviceRGB CS +0.200 0.200 0.200 SCN + +BT +48.24 740.816 Td +/F2.0 13 Tf +<322e342e312e20526573706f6e736573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 688.560 51.552 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +99.792 688.560 360.864 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +460.656 688.560 103.104 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 665.280 51.552 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +99.792 665.280 360.864 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +460.656 665.280 103.104 23.280 re +f +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 726.120 m +99.792 726.120 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +48.240 688.560 m +99.792 688.560 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 726.370 m +48.240 687.810 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 726.370 m +99.792 687.810 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24 710.373 Td +/F2.0 10.5 Tf +<48545450> Tj +ET + + +BT +51.24 696.0930000000001 Td +/F2.0 10.5 Tf +<436f6465> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +99.792 726.120 m +460.656 726.120 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +99.792 688.560 m +460.656 688.560 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 726.370 m +99.792 687.810 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 726.370 m +460.656 687.810 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +102.792 710.373 Td +/F2.0 10.5 Tf +<4465736372697074696f6e> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +460.656 726.120 m +563.760 726.120 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +460.656 688.560 m +563.760 688.560 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 726.370 m +460.656 687.810 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 726.370 m +563.760 687.810 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +463.65600000000006 710.373 Td +/F2.0 10.5 Tf +<536368656d61> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 688.560 m +99.792 688.560 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 665.280 m +99.792 665.280 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 688.810 m +48.240 665.030 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 688.810 m +99.792 665.030 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24 672.3130000000001 Td +/F2.0 10.5 Tf +<323030> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +99.792 688.560 m +460.656 688.560 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 665.280 m +460.656 665.280 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 688.810 m +99.792 665.030 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 688.810 m +460.656 665.030 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +102.792 672.3130000000001 Td +/F1.0 10.5 Tf +<4f75747075742074797065> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +460.656 688.560 m +563.760 688.560 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 665.280 m +563.760 665.280 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 688.810 m +460.656 665.030 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 688.810 m +563.760 665.030 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN + +BT +463.65600000000006 672.3130000000001 Td +/F1.0 10.5 Tf +<44696374696f6e617279> Tj +ET + +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24 635.6960000000003 Td +/F2.0 13 Tf +<322e342e322e2050726f6475636573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +-0.500 Tc +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +56.88050000000001 609.0360000000003 Td +/F1.0 10.5 Tf + Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +0.000 Tc +0.694 0.129 0.275 scn +0.694 0.129 0.275 SCN + +BT +66.24000000000001 611.2200000000004 Td +/F4.0 10.5 Tf +<6170706c69636174696f6e2f6a736f6e> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 573.5760000000004 Td +/F2.0 18 Tf +<322e352e20505554202f76322f64696374696f6e617279> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 539.3360000000005 Td +/F2.0 13 Tf +[<322e352e312e20506172> 20.01953125 <616d6574657273>] TJ +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 501.360 114.560 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +162.800 501.360 171.840 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +334.640 501.360 229.120 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 463.800 114.560 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +162.800 463.800 171.840 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +334.640 463.800 229.120 37.560 re +f +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 524.640 m +162.800 524.640 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +48.240 501.360 m +162.800 501.360 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 524.890 m +48.240 500.610 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 524.890 m +162.800 500.610 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24000000000001 508.89300000000054 Td +/F2.0 10.5 Tf +<54797065> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +162.800 524.640 m +334.640 524.640 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +162.800 501.360 m +334.640 501.360 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 524.890 m +162.800 500.610 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 524.890 m +334.640 500.610 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +165.79988544000003 508.89300000000054 Td +/F2.0 10.5 Tf +<4e616d65> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +334.640 524.640 m +563.760 524.640 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +334.640 501.360 m +563.760 501.360 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 524.890 m +334.640 500.610 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 524.890 m +563.760 500.610 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +337.6397136 508.89300000000054 Td +/F2.0 10.5 Tf +<536368656d61> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 501.360 m +162.800 501.360 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 463.800 m +162.800 463.800 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 501.610 m +48.240 463.550 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 501.610 m +162.800 463.550 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24000000000001 477.9730000000006 Td +/F2.0 10.5 Tf +<426f6479> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +162.800 501.360 m +334.640 501.360 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 463.800 m +334.640 463.800 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 501.610 m +162.800 463.550 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 501.610 m +334.640 463.550 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +165.79988544000003 485.11300000000057 Td +/F2.0 10.5 Tf +<626f6479> Tj +ET + + +BT +165.79988544000003 470.83300000000054 Td +ET + + +BT +165.79988544000003 470.83300000000054 Td +/F3.0 10.5 Tf +<7265717569726564> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +334.640 501.360 m +563.760 501.360 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 463.800 m +563.760 463.800 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 501.610 m +334.640 463.550 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 501.610 m +563.760 463.550 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN + +BT +337.6397136 477.9730000000006 Td +/F1.0 10.5 Tf +<44696374696f6e617279> Tj +ET + +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 434.2160000000006 Td +/F2.0 13 Tf +<322e352e322e20526573706f6e736573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 381.960 51.552 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +99.792 381.960 360.864 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +460.656 381.960 103.104 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 358.680 51.552 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +99.792 358.680 360.864 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +460.656 358.680 103.104 23.280 re +f +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 419.520 m +99.792 419.520 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +48.240 381.960 m +99.792 381.960 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 419.770 m +48.240 381.210 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 419.770 m +99.792 381.210 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24000000000001 403.77300000000054 Td +/F2.0 10.5 Tf +<48545450> Tj +ET + + +BT +51.24000000000001 389.4930000000005 Td +/F2.0 10.5 Tf +<436f6465> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +99.792 419.520 m +460.656 419.520 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +99.792 381.960 m +460.656 381.960 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 419.770 m +99.792 381.210 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 419.770 m +460.656 381.210 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +102.792 403.77300000000054 Td +/F2.0 10.5 Tf +<4465736372697074696f6e> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +460.656 419.520 m +563.760 419.520 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +460.656 381.960 m +563.760 381.960 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 419.770 m +460.656 381.210 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 419.770 m +563.760 381.210 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +463.65600000000006 403.77300000000054 Td +/F2.0 10.5 Tf +<536368656d61> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 381.960 m +99.792 381.960 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 358.680 m +99.792 358.680 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 382.210 m +48.240 358.430 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 382.210 m +99.792 358.430 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24000000000001 365.71300000000053 Td +/F2.0 10.5 Tf +<323030> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +99.792 381.960 m +460.656 381.960 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 358.680 m +460.656 358.680 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 382.210 m +99.792 358.430 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 382.210 m +460.656 358.430 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +102.792 365.71300000000053 Td +/F1.0 10.5 Tf +<4f75747075742074797065> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +460.656 381.960 m +563.760 381.960 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 358.680 m +563.760 358.680 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 382.210 m +460.656 358.430 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 382.210 m +563.760 358.430 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN + +BT +463.65600000000006 365.71300000000053 Td +/F1.0 10.5 Tf +<44696374696f6e617279> Tj +ET + +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 329.0960000000005 Td +/F2.0 13 Tf +<322e352e332e20436f6e73756d6573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +-0.500 Tc +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +56.88050000000001 302.4360000000005 Td +/F1.0 10.5 Tf + Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +0.000 Tc +0.694 0.129 0.275 scn +0.694 0.129 0.275 SCN + +BT +66.24000000000001 304.6200000000005 Td +/F4.0 10.5 Tf +<6170706c69636174696f6e2f6a736f6e> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 272.8160000000005 Td +/F2.0 13 Tf +<322e352e342e2050726f6475636573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +-0.500 Tc +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +56.88050000000001 246.15600000000046 Td +/F1.0 10.5 Tf + Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +0.000 Tc +0.694 0.129 0.275 scn +0.694 0.129 0.275 SCN + +BT +66.24000000000001 248.34000000000046 Td +/F4.0 10.5 Tf +<6170706c69636174696f6e2f6a736f6e> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 210.69600000000045 Td +/F2.0 18 Tf +<322e362e20474554202f76322f64696374696f6e6172792f7365636f6e646172792f6e616d6573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 176.45600000000042 Td +/F2.0 13 Tf +<322e362e312e20526573706f6e736573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 124.200 51.552 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +99.792 124.200 360.864 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +460.656 124.200 103.104 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 100.920 51.552 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +99.792 100.920 360.864 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +460.656 100.920 103.104 23.280 re +f +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 161.760 m +99.792 161.760 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +48.240 124.200 m +99.792 124.200 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 162.010 m +48.240 123.450 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 162.010 m +99.792 123.450 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24000000000001 146.01300000000043 Td +/F2.0 10.5 Tf +<48545450> Tj +ET + + +BT +51.24000000000001 131.73300000000043 Td +/F2.0 10.5 Tf +<436f6465> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +99.792 161.760 m +460.656 161.760 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +99.792 124.200 m +460.656 124.200 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 162.010 m +99.792 123.450 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 162.010 m +460.656 123.450 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +102.792 146.01300000000043 Td +/F2.0 10.5 Tf +<4465736372697074696f6e> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +460.656 161.760 m +563.760 161.760 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +460.656 124.200 m +563.760 124.200 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 162.010 m +460.656 123.450 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 162.010 m +563.760 123.450 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +463.65600000000006 146.01300000000043 Td +/F2.0 10.5 Tf +<536368656d61> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 124.200 m +99.792 124.200 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 100.920 m +99.792 100.920 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 124.450 m +48.240 100.670 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 124.450 m +99.792 100.670 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24000000000001 107.95300000000042 Td +/F2.0 10.5 Tf +<323030> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +99.792 124.200 m +460.656 124.200 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 100.920 m +460.656 100.920 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 124.450 m +99.792 100.670 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 124.450 m +460.656 100.670 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +102.792 107.95300000000042 Td +/F1.0 10.5 Tf +<4f75747075742074797065> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +460.656 124.200 m +563.760 124.200 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 100.920 m +563.760 100.920 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 124.450 m +460.656 100.670 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 124.450 m +563.760 100.670 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +463.65600000000006 107.95300000000042 Td +/F1.0 10.5 Tf +[<3c20737472696e67203e20617272> 20.01953125 <61> 20.01953125 <79>] TJ +ET + +0.000 0.000 0.000 scn +q +0.000 0.000 0.000 scn +0.000 0.000 0.000 SCN +1 w +0 J +0 j +[ ] 0 d +/Stamp1 Do +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +557.7289999999999 14.388 Td +/F1.0 9 Tf +<33> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +Q +Q + +endstream +endobj +45 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 612.0 792.0] +/Contents 44 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F2.0 24 0 R +/F1.0 8 0 R +/F4.0 35 0 R +/F3.0 26 0 R +>> +/XObject << /Stamp1 684 0 R +>> +>> +/Annots [47 0 R 51 0 R 53 0 R] +>> +endobj +46 0 obj +[45 0 R /XYZ 0 792.0 null] +endobj +47 0 obj +<< /Border [0 0 0] +/Dest (_dictionary) +/Subtype /Link +/Rect [463.65600000000006 669.2470000000002 516.45 683.5270000000002] +/Type /Annot +>> +endobj +48 0 obj +[45 0 R /XYZ 0 653.2800000000002 null] +endobj +49 0 obj +[45 0 R /XYZ 0 597.0000000000003 null] +endobj +50 0 obj +[45 0 R /XYZ 0 556.9200000000004 null] +endobj +51 0 obj +<< /Border [0 0 0] +/Dest (_dictionary) +/Subtype /Link +/Rect [337.6397136 474.90700000000055 390.4337136 489.1870000000006] +/Type /Annot +>> +endobj +52 0 obj +[45 0 R /XYZ 0 451.8000000000006 null] +endobj +53 0 obj +<< /Border [0 0 0] +/Dest (_dictionary) +/Subtype /Link +/Rect [463.65600000000006 362.64700000000056 516.45 376.92700000000053] +/Type /Annot +>> +endobj +54 0 obj +[45 0 R /XYZ 0 346.6800000000005 null] +endobj +55 0 obj +[45 0 R /XYZ 0 290.4000000000005 null] +endobj +56 0 obj +<< /Limits [(_clampinformation) (_consumes_8)] +/Names [(_clampinformation) 251 0 R (_cldshealthcheck) 252 0 R (_consumes) 54 0 R (_consumes_2) 73 0 R (_consumes_3) 100 0 R (_consumes_4) 170 0 R (_consumes_5) 179 0 R (_consumes_6) 186 0 R (_consumes_7) 200 0 R (_consumes_8) 227 0 R] +>> +endobj +57 0 obj +<< /Limits [(_responses_10) (_responses_19)] +/Names [(_responses_10) 83 0 R (_responses_11) 91 0 R (_responses_12) 96 0 R (_responses_13) 104 0 R (_responses_14) 107 0 R (_responses_15) 113 0 R (_responses_16) 117 0 R (_responses_17) 125 0 R (_responses_18) 130 0 R (_responses_19) 137 0 R] +>> +endobj +58 0 obj +[45 0 R /XYZ 0 234.12000000000046 null] +endobj +59 0 obj +[45 0 R /XYZ 0 194.04000000000045 null] +endobj +60 0 obj +<< /Length 18231 +>> +stream +q +/DeviceRGB cs +0.200 0.200 0.200 scn +/DeviceRGB CS +0.200 0.200 0.200 SCN + +BT +48.24 740.816 Td +/F2.0 13 Tf +<322e362e322e2050726f6475636573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +-0.500 Tc +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +56.88050000000001 714.1560000000001 Td +/F1.0 10.5 Tf + Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +0.000 Tc +0.694 0.129 0.275 scn +0.694 0.129 0.275 SCN + +BT +66.24000000000001 716.3400000000001 Td +/F4.0 10.5 Tf +<6170706c69636174696f6e2f6a736f6e> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 678.6960000000001 Td +/F2.0 18 Tf +<322e372e20474554202f76322f64696374696f6e6172792f7b64696374696f6e6172794e616d657d> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 644.4560000000002 Td +/F2.0 13 Tf +[<322e372e312e20506172> 20.01953125 <616d6574657273>] TJ +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 606.480 114.560 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +162.800 606.480 171.840 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +334.640 606.480 229.120 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 568.920 114.560 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +162.800 568.920 171.840 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +334.640 568.920 229.120 37.560 re +f +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 629.760 m +162.800 629.760 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +48.240 606.480 m +162.800 606.480 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 630.010 m +48.240 605.730 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 630.010 m +162.800 605.730 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24000000000001 614.0130000000003 Td +/F2.0 10.5 Tf +<54797065> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +162.800 629.760 m +334.640 629.760 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +162.800 606.480 m +334.640 606.480 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 630.010 m +162.800 605.730 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 630.010 m +334.640 605.730 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +165.79988544000003 614.0130000000003 Td +/F2.0 10.5 Tf +<4e616d65> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +334.640 629.760 m +563.760 629.760 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +334.640 606.480 m +563.760 606.480 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 630.010 m +334.640 605.730 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 630.010 m +563.760 605.730 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +337.6397136 614.0130000000003 Td +/F2.0 10.5 Tf +<536368656d61> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 606.480 m +162.800 606.480 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 568.920 m +162.800 568.920 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 606.730 m +48.240 568.670 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 606.730 m +162.800 568.670 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24000000000001 583.0930000000003 Td +/F2.0 10.5 Tf +<50617468> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +162.800 606.480 m +334.640 606.480 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 568.920 m +334.640 568.920 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 606.730 m +162.800 568.670 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 606.730 m +334.640 568.670 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +165.79988544000003 590.2330000000004 Td +/F2.0 10.5 Tf +<64696374696f6e6172794e616d65> Tj +ET + + +BT +165.79988544000003 575.9530000000003 Td +ET + + +BT +165.79988544000003 575.9530000000003 Td +/F3.0 10.5 Tf +<7265717569726564> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +334.640 606.480 m +563.760 606.480 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 568.920 m +563.760 568.920 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 606.730 m +334.640 568.670 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 606.730 m +563.760 568.670 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +337.6397136 583.0930000000003 Td +/F1.0 10.5 Tf +<737472696e67> Tj +ET + +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 539.3360000000004 Td +/F2.0 13 Tf +<322e372e322e20526573706f6e736573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 487.080 51.552 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +99.792 487.080 360.864 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +460.656 487.080 103.104 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 463.800 51.552 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +99.792 463.800 360.864 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +460.656 463.800 103.104 23.280 re +f +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 524.640 m +99.792 524.640 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +48.240 487.080 m +99.792 487.080 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 524.890 m +48.240 486.330 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 524.890 m +99.792 486.330 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24000000000001 508.8930000000004 Td +/F2.0 10.5 Tf +<48545450> Tj +ET + + +BT +51.24000000000001 494.6130000000004 Td +/F2.0 10.5 Tf +<436f6465> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +99.792 524.640 m +460.656 524.640 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +99.792 487.080 m +460.656 487.080 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 524.890 m +99.792 486.330 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 524.890 m +460.656 486.330 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +102.792 508.8930000000004 Td +/F2.0 10.5 Tf +<4465736372697074696f6e> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +460.656 524.640 m +563.760 524.640 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +460.656 487.080 m +563.760 487.080 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 524.890 m +460.656 486.330 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 524.890 m +563.760 486.330 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +463.65600000000006 508.8930000000004 Td +/F2.0 10.5 Tf +<536368656d61> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 487.080 m +99.792 487.080 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 463.800 m +99.792 463.800 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 487.330 m +48.240 463.550 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 487.330 m +99.792 463.550 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24000000000001 470.8330000000004 Td +/F2.0 10.5 Tf +<323030> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +99.792 487.080 m +460.656 487.080 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 463.800 m +460.656 463.800 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 487.330 m +99.792 463.550 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 487.330 m +460.656 463.550 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +102.792 470.8330000000004 Td +/F1.0 10.5 Tf +<4f75747075742074797065> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +460.656 487.080 m +563.760 487.080 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 463.800 m +563.760 463.800 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 487.330 m +460.656 463.550 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 487.330 m +563.760 463.550 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN + +BT +463.65600000000006 470.8330000000004 Td +/F1.0 10.5 Tf +<44696374696f6e617279> Tj +ET + +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 434.2160000000004 Td +/F2.0 13 Tf +<322e372e332e2050726f6475636573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +-0.500 Tc +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +56.88050000000001 407.5560000000004 Td +/F1.0 10.5 Tf + Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +0.000 Tc +0.694 0.129 0.275 scn +0.694 0.129 0.275 SCN + +BT +66.24000000000001 409.7400000000004 Td +/F4.0 10.5 Tf +<6170706c69636174696f6e2f6a736f6e> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 372.0960000000004 Td +/F2.0 18 Tf +<322e382e20505554202f76322f64696374696f6e6172792f7b6e616d657d> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 337.85600000000034 Td +/F2.0 13 Tf +[<322e382e312e20506172> 20.01953125 <616d6574657273>] TJ +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 299.880 114.560 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +162.800 299.880 171.840 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +334.640 299.880 229.120 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 262.320 114.560 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +162.800 262.320 171.840 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +334.640 262.320 229.120 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 224.760 114.560 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +162.800 224.760 171.840 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +334.640 224.760 229.120 37.560 re +f +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 323.160 m +162.800 323.160 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +48.240 299.880 m +162.800 299.880 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 323.410 m +48.240 299.130 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 323.410 m +162.800 299.130 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24000000000001 307.4130000000003 Td +/F2.0 10.5 Tf +<54797065> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +162.800 323.160 m +334.640 323.160 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +162.800 299.880 m +334.640 299.880 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 323.410 m +162.800 299.130 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 323.410 m +334.640 299.130 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +165.79988544000003 307.4130000000003 Td +/F2.0 10.5 Tf +<4e616d65> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +334.640 323.160 m +563.760 323.160 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +334.640 299.880 m +563.760 299.880 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 323.410 m +334.640 299.130 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 323.410 m +563.760 299.130 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +337.6397136 307.4130000000003 Td +/F2.0 10.5 Tf +<536368656d61> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 299.880 m +162.800 299.880 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 262.320 m +162.800 262.320 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 300.130 m +48.240 262.070 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 300.130 m +162.800 262.070 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24000000000001 276.49300000000034 Td +/F2.0 10.5 Tf +<50617468> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +162.800 299.880 m +334.640 299.880 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 262.320 m +334.640 262.320 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 300.130 m +162.800 262.070 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 300.130 m +334.640 262.070 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +165.79988544000003 283.6330000000003 Td +/F2.0 10.5 Tf +<6e616d65> Tj +ET + + +BT +165.79988544000003 269.3530000000003 Td +ET + + +BT +165.79988544000003 269.3530000000003 Td +/F3.0 10.5 Tf +<7265717569726564> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +334.640 299.880 m +563.760 299.880 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 262.320 m +563.760 262.320 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 300.130 m +334.640 262.070 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 300.130 m +563.760 262.070 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +337.6397136 276.49300000000034 Td +/F1.0 10.5 Tf +<737472696e67> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 262.320 m +162.800 262.320 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 224.760 m +162.800 224.760 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 262.570 m +48.240 224.510 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 262.570 m +162.800 224.510 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24000000000001 238.93300000000025 Td +/F2.0 10.5 Tf +<426f6479> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +162.800 262.320 m +334.640 262.320 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 224.760 m +334.640 224.760 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 262.570 m +162.800 224.510 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 262.570 m +334.640 224.510 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +165.79988544000003 246.07300000000026 Td +/F2.0 10.5 Tf +<626f6479> Tj +ET + + +BT +165.79988544000003 231.79300000000026 Td +ET + + +BT +165.79988544000003 231.79300000000026 Td +/F3.0 10.5 Tf +<7265717569726564> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +334.640 262.320 m +563.760 262.320 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 224.760 m +563.760 224.760 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 262.570 m +334.640 224.510 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 262.570 m +563.760 224.510 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN + +BT +337.6397136 238.93300000000025 Td +/F1.0 10.5 Tf +<44696374696f6e617279> Tj +ET + +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 195.17600000000027 Td +/F2.0 13 Tf +<322e382e322e20526573706f6e736573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 142.920 51.552 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +99.792 142.920 360.864 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +460.656 142.920 103.104 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 119.640 51.552 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +99.792 119.640 360.864 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +460.656 119.640 103.104 23.280 re +f +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 180.480 m +99.792 180.480 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +48.240 142.920 m +99.792 142.920 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 180.730 m +48.240 142.170 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 180.730 m +99.792 142.170 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24000000000001 164.73300000000026 Td +/F2.0 10.5 Tf +<48545450> Tj +ET + + +BT +51.24000000000001 150.45300000000026 Td +/F2.0 10.5 Tf +<436f6465> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +99.792 180.480 m +460.656 180.480 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +99.792 142.920 m +460.656 142.920 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 180.730 m +99.792 142.170 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 180.730 m +460.656 142.170 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +102.792 164.73300000000026 Td +/F2.0 10.5 Tf +<4465736372697074696f6e> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +460.656 180.480 m +563.760 180.480 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +460.656 142.920 m +563.760 142.920 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 180.730 m +460.656 142.170 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 180.730 m +563.760 142.170 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +463.65600000000006 164.73300000000026 Td +/F2.0 10.5 Tf +<536368656d61> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 142.920 m +99.792 142.920 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 119.640 m +99.792 119.640 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 143.170 m +48.240 119.390 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 143.170 m +99.792 119.390 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24000000000001 126.67300000000026 Td +/F2.0 10.5 Tf +<323030> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +99.792 142.920 m +460.656 142.920 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 119.640 m +460.656 119.640 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 143.170 m +99.792 119.390 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 143.170 m +460.656 119.390 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +102.792 126.67300000000026 Td +/F1.0 10.5 Tf +<4f75747075742074797065> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +460.656 142.920 m +563.760 142.920 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 119.640 m +563.760 119.640 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 143.170 m +460.656 119.390 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 143.170 m +563.760 119.390 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN + +BT +463.65600000000006 126.67300000000026 Td +/F1.0 10.5 Tf +<44696374696f6e617279> Tj +ET + +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 90.05600000000024 Td +/F2.0 13 Tf +<322e382e332e20436f6e73756d6573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +-0.500 Tc +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +56.88050000000001 63.39600000000024 Td +/F1.0 10.5 Tf + Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +0.000 Tc +0.694 0.129 0.275 scn +0.694 0.129 0.275 SCN + +BT +66.24000000000001 65.58000000000024 Td +/F4.0 10.5 Tf +<6170706c69636174696f6e2f6a736f6e> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +q +0.000 0.000 0.000 scn +0.000 0.000 0.000 SCN +1 w +0 J +0 j +[ ] 0 d +/Stamp1 Do +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +49.24 14.388 Td +/F1.0 9 Tf +<34> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +Q +Q + +endstream +endobj +61 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 612.0 792.0] +/Contents 60 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F2.0 24 0 R +/F1.0 8 0 R +/F4.0 35 0 R +/F3.0 26 0 R +>> +/XObject << /Stamp1 684 0 R +>> +>> +/Annots [66 0 R 70 0 R 72 0 R] +>> +endobj +62 0 obj +[61 0 R /XYZ 0 792.0 null] +endobj +63 0 obj +[61 0 R /XYZ 0 702.1200000000001 null] +endobj +64 0 obj +[61 0 R /XYZ 0 662.0400000000002 null] +endobj +65 0 obj +[61 0 R /XYZ 0 556.9200000000003 null] +endobj +66 0 obj +<< /Border [0 0 0] +/Dest (_dictionary) +/Subtype /Link +/Rect [463.65600000000006 467.76700000000045 516.45 482.0470000000004] +/Type /Annot +>> +endobj +67 0 obj +[61 0 R /XYZ 0 451.8000000000004 null] +endobj +68 0 obj +[61 0 R /XYZ 0 395.5200000000004 null] +endobj +69 0 obj +[61 0 R /XYZ 0 355.44000000000034 null] +endobj +70 0 obj +<< /Border [0 0 0] +/Dest (_dictionary) +/Subtype /Link +/Rect [337.6397136 235.86700000000027 390.4337136 250.14700000000028] +/Type /Annot +>> +endobj +71 0 obj +[61 0 R /XYZ 0 212.76000000000028 null] +endobj +72 0 obj +<< /Border [0 0 0] +/Dest (_dictionary) +/Subtype /Link +/Rect [463.65600000000006 123.60700000000026 516.45 137.88700000000026] +/Type /Annot +>> +endobj +73 0 obj +[61 0 R /XYZ 0 107.64000000000024 null] +endobj +74 0 obj +<< /Length 15674 +>> +stream +q +/DeviceRGB cs +0.200 0.200 0.200 scn +/DeviceRGB CS +0.200 0.200 0.200 SCN + +BT +48.24 740.816 Td +/F2.0 13 Tf +<322e382e342e2050726f6475636573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +-0.500 Tc +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +56.88050000000001 714.1560000000001 Td +/F1.0 10.5 Tf + Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +0.000 Tc +0.694 0.129 0.275 scn +0.694 0.129 0.275 SCN + +BT +66.24000000000001 716.3400000000001 Td +/F4.0 10.5 Tf +<6170706c69636174696f6e2f6a736f6e> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 678.6960000000001 Td +/F2.0 18 Tf +<322e392e2044454c455445202f76322f64696374696f6e6172792f7b6e616d657d> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 644.4560000000002 Td +/F2.0 13 Tf +[<322e392e312e20506172> 20.01953125 <616d6574657273>] TJ +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 606.480 114.560 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +162.800 606.480 171.840 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +334.640 606.480 229.120 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 568.920 114.560 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +162.800 568.920 171.840 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +334.640 568.920 229.120 37.560 re +f +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 629.760 m +162.800 629.760 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +48.240 606.480 m +162.800 606.480 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 630.010 m +48.240 605.730 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 630.010 m +162.800 605.730 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24000000000001 614.0130000000003 Td +/F2.0 10.5 Tf +<54797065> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +162.800 629.760 m +334.640 629.760 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +162.800 606.480 m +334.640 606.480 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 630.010 m +162.800 605.730 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 630.010 m +334.640 605.730 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +165.79988544000003 614.0130000000003 Td +/F2.0 10.5 Tf +<4e616d65> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +334.640 629.760 m +563.760 629.760 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +334.640 606.480 m +563.760 606.480 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 630.010 m +334.640 605.730 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 630.010 m +563.760 605.730 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +337.6397136 614.0130000000003 Td +/F2.0 10.5 Tf +<536368656d61> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 606.480 m +162.800 606.480 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 568.920 m +162.800 568.920 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 606.730 m +48.240 568.670 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 606.730 m +162.800 568.670 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24000000000001 583.0930000000003 Td +/F2.0 10.5 Tf +<50617468> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +162.800 606.480 m +334.640 606.480 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 568.920 m +334.640 568.920 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 606.730 m +162.800 568.670 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 606.730 m +334.640 568.670 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +165.79988544000003 590.2330000000004 Td +/F2.0 10.5 Tf +<6e616d65> Tj +ET + + +BT +165.79988544000003 575.9530000000003 Td +ET + + +BT +165.79988544000003 575.9530000000003 Td +/F3.0 10.5 Tf +<7265717569726564> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +334.640 606.480 m +563.760 606.480 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 568.920 m +563.760 568.920 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 606.730 m +334.640 568.670 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 606.730 m +563.760 568.670 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +337.6397136 583.0930000000003 Td +/F1.0 10.5 Tf +<737472696e67> Tj +ET + +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 539.3360000000004 Td +/F2.0 13 Tf +<322e392e322e20526573706f6e736573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 501.360 171.840 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +220.080 501.360 343.680 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 478.080 171.840 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +220.080 478.080 343.680 23.280 re +f +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 524.640 m +220.080 524.640 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +48.240 501.360 m +220.080 501.360 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 524.890 m +48.240 500.610 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +220.080 524.890 m +220.080 500.610 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24000000000001 508.8930000000004 Td +/F2.0 10.5 Tf +<4854545020436f6465> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +220.080 524.640 m +563.760 524.640 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +220.080 501.360 m +563.760 501.360 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +220.080 524.890 m +220.080 500.610 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 524.890 m +563.760 500.610 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +223.07982816 508.8930000000004 Td +/F2.0 10.5 Tf +<536368656d61> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 501.360 m +220.080 501.360 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 478.080 m +220.080 478.080 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 501.610 m +48.240 477.830 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +220.080 501.610 m +220.080 477.830 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24000000000001 485.11300000000045 Td +/F2.0 10.5 Tf +<323030> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +220.080 501.360 m +563.760 501.360 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +220.080 478.080 m +563.760 478.080 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +220.080 501.610 m +220.080 477.830 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 501.610 m +563.760 477.830 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +223.07982816 485.11300000000045 Td +/F1.0 10.5 Tf +<4e6f20436f6e74656e74> Tj +ET + +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 448.4960000000005 Td +/F2.0 13 Tf +<322e392e332e2050726f6475636573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +-0.500 Tc +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +56.88050000000001 421.83600000000047 Td +/F1.0 10.5 Tf + Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +0.000 Tc +0.694 0.129 0.275 scn +0.694 0.129 0.275 SCN + +BT +66.24000000000001 424.0200000000005 Td +/F4.0 10.5 Tf +<6170706c69636174696f6e2f6a736f6e> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 386.3760000000005 Td +/F2.0 18 Tf +<322e31302e2044454c455445> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 358.2960000000005 Td +/F2.0 18 Tf +<2f76322f64696374696f6e6172792f7b6e616d657d2f656c656d656e74732f7b73686f72744e616d657d> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 324.05600000000044 Td +/F2.0 13 Tf +[<322e31302e312e20506172> 20.01953125 <616d6574657273>] TJ +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 286.080 114.560 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +162.800 286.080 171.840 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +334.640 286.080 229.120 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 248.520 114.560 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +162.800 248.520 171.840 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +334.640 248.520 229.120 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 210.960 114.560 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +162.800 210.960 171.840 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +334.640 210.960 229.120 37.560 re +f +0.000 0.000 0.000 scn +0.5 w 0.867 0.867 0.867 SCN -48.240 602.160 m -99.792 602.160 l +48.240 309.360 m +162.800 309.360 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +48.240 286.080 m +162.800 286.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 578.880 m -99.792 578.880 l +48.240 309.610 m +48.240 285.330 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 602.410 m -48.240 578.630 l +162.800 309.610 m +162.800 285.330 l S [ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24000000000001 293.6130000000004 Td +/F2.0 10.5 Tf +<54797065> Tj +ET + +0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 602.410 m -99.792 578.630 l +162.800 309.360 m +334.640 309.360 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +162.800 286.080 m +334.640 286.080 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 309.610 m +162.800 285.330 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 309.610 m +334.640 285.330 l S [ ] 0 d 1 w @@ -6261,34 +11399,69 @@ S 0.200 0.200 0.200 scn BT -51.24 585.913 Td +165.79988544000003 293.6130000000004 Td /F2.0 10.5 Tf -<323030> Tj +<4e616d65> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 602.160 m -460.656 602.160 l +334.640 309.360 m +563.760 309.360 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +334.640 286.080 m +563.760 286.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 578.880 m -460.656 578.880 l +334.640 309.610 m +334.640 285.330 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 602.410 m -99.792 578.630 l +563.760 309.610 m +563.760 285.330 l S [ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +337.6397136 293.6130000000004 Td +/F2.0 10.5 Tf +<536368656d61> Tj +ET + +0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 602.410 m -460.656 578.630 l +48.240 286.080 m +162.800 286.080 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 248.520 m +162.800 248.520 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 286.330 m +48.240 248.270 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 286.330 m +162.800 248.270 l S [ ] 0 d 1 w @@ -6296,62 +11469,385 @@ S 0.200 0.200 0.200 scn BT -102.792 585.913 Td +51.24000000000001 262.6930000000004 Td +/F2.0 10.5 Tf +<50617468> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +162.800 286.080 m +334.640 286.080 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 248.520 m +334.640 248.520 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 286.330 m +162.800 248.270 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 286.330 m +334.640 248.270 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +165.79988544000003 269.83300000000037 Td +/F2.0 10.5 Tf +<6e616d65> Tj +ET + + +BT +165.79988544000003 255.55300000000037 Td +ET + + +BT +165.79988544000003 255.55300000000037 Td +/F3.0 10.5 Tf +<7265717569726564> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +334.640 286.080 m +563.760 286.080 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 248.520 m +563.760 248.520 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 286.330 m +334.640 248.270 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 286.330 m +563.760 248.270 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +337.6397136 262.6930000000004 Td /F1.0 10.5 Tf -<4f75747075742074797065> Tj +<737472696e67> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 602.160 m -563.760 602.160 l +48.240 248.520 m +162.800 248.520 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 578.880 m -563.760 578.880 l +48.240 210.960 m +162.800 210.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 602.410 m -460.656 578.630 l +48.240 248.770 m +48.240 210.710 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 602.410 m -563.760 578.630 l +162.800 248.770 m +162.800 210.710 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN + +BT +51.24000000000001 225.1330000000004 Td +/F2.0 10.5 Tf +<50617468> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +162.800 248.520 m +334.640 248.520 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 210.960 m +334.640 210.960 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 248.770 m +162.800 210.710 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 248.770 m +334.640 210.710 l +S +[ ] 0 d +1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -463.65600000000006 585.913 Td +165.79988544000003 232.27300000000042 Td +/F2.0 10.5 Tf +<73686f72744e616d65> Tj +ET + + +BT +165.79988544000003 217.99300000000042 Td +ET + + +BT +165.79988544000003 217.99300000000042 Td +/F3.0 10.5 Tf +<7265717569726564> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +334.640 248.520 m +563.760 248.520 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 210.960 m +563.760 210.960 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 248.770 m +334.640 210.710 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 248.770 m +563.760 210.710 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +337.6397136 225.1330000000004 Td /F1.0 10.5 Tf -<436c64734865616c7468436865636b> Tj +<737472696e67> Tj +ET + +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 181.37600000000037 Td +/F2.0 13 Tf +<322e31302e322e20526573706f6e736573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 143.400 171.840 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +220.080 143.400 343.680 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 120.120 171.840 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +220.080 120.120 343.680 23.280 re +f +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 166.680 m +220.080 166.680 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +48.240 143.400 m +220.080 143.400 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 166.930 m +48.240 142.650 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +220.080 166.930 m +220.080 142.650 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24000000000001 150.9330000000004 Td +/F2.0 10.5 Tf +<4854545020436f6465> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +220.080 166.680 m +563.760 166.680 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +220.080 143.400 m +563.760 143.400 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +220.080 166.930 m +220.080 142.650 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 166.930 m +563.760 142.650 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +223.07982816 150.9330000000004 Td +/F2.0 10.5 Tf +<536368656d61> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 143.400 m +220.080 143.400 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 120.120 m +220.080 120.120 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 143.650 m +48.240 119.870 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +220.080 143.650 m +220.080 119.870 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24000000000001 127.15300000000039 Td +/F2.0 10.5 Tf +<323030> Tj ET +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +220.080 143.400 m +563.760 143.400 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +220.080 120.120 m +563.760 120.120 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +220.080 143.650 m +220.080 119.870 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 143.650 m +563.760 119.870 l +S +[ ] 0 d +1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn + +BT +223.07982816 127.15300000000039 Td +/F1.0 10.5 Tf +<4e6f20436f6e74656e74> Tj +ET + 0.000 0.000 0.000 scn 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24 549.2960000000002 Td +48.24000000000001 90.53600000000037 Td /F2.0 13 Tf -<322e312e322e2050726f6475636573> Tj +<322e31302e332e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -6362,7 +11858,7 @@ ET 0.200 0.200 0.200 SCN BT -56.88050000000001 522.6360000000002 Td +56.88050000000001 63.876000000000374 Td /F1.0 10.5 Tf Tj ET @@ -6375,20 +11871,99 @@ ET 0.694 0.129 0.275 SCN BT -66.24000000000001 524.8200000000003 Td +66.24000000000001 66.06000000000037 Td /F4.0 10.5 Tf <6170706c69636174696f6e2f6a736f6e> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn +q +0.000 0.000 0.000 scn +0.000 0.000 0.000 SCN +1 w +0 J +0 j +[ ] 0 d +/Stamp1 Do 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24000000000001 487.1760000000003 Td +557.7289999999999 14.388 Td +/F1.0 9 Tf +<35> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +Q +Q + +endstream +endobj +75 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 612.0 792.0] +/Contents 74 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F2.0 24 0 R +/F1.0 8 0 R +/F4.0 35 0 R +/F3.0 26 0 R +>> +/XObject << /Stamp1 684 0 R +>> +>> +>> +endobj +76 0 obj +[75 0 R /XYZ 0 792.0 null] +endobj +77 0 obj +[75 0 R /XYZ 0 702.1200000000001 null] +endobj +78 0 obj +[75 0 R /XYZ 0 662.0400000000002 null] +endobj +79 0 obj +[75 0 R /XYZ 0 556.9200000000003 null] +endobj +80 0 obj +[75 0 R /XYZ 0 466.0800000000005 null] +endobj +81 0 obj +[75 0 R /XYZ 0 409.80000000000047 null] +endobj +82 0 obj +[75 0 R /XYZ 0 341.64000000000044 null] +endobj +83 0 obj +[75 0 R /XYZ 0 198.9600000000004 null] +endobj +84 0 obj +<< /Limits [(_route23) (_route5)] +/Names [(_route23) 49 0 R (_route25) 77 0 R (_route28) 204 0 R (_route29) 196 0 R (_route3) 190 0 R (_route30) 221 0 R (_route34) 229 0 R (_route35) 39 0 R (_route36) 31 0 R (_route37) 36 0 R (_route4) 153 0 R (_route5) 165 0 R] +>> +endobj +85 0 obj +[75 0 R /XYZ 0 108.12000000000037 null] +endobj +86 0 obj +<< /Length 16049 +>> +stream +q +/DeviceRGB cs +0.200 0.200 0.200 scn +/DeviceRGB CS +0.200 0.200 0.200 SCN + +BT +48.24 734.976 Td /F2.0 18 Tf -<322e322e20474554202f76312f757365722f67657455736572> Tj +<322e31312e20505554> Tj ET 0.000 0.000 0.000 SCN @@ -6397,51 +11972,140 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 452.9360000000002 Td +48.24 706.8960000000001 Td +/F2.0 18 Tf +[<2f76322f6c6f6f702f6164644f706572> 20.01953125 <6174696f6e61506f6c6963792f7b6c6f6f704e616d657d2f706f6c6963794d6f64656c2f7b>] TJ +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24 678.816 Td +/F2.0 18 Tf +[<706f6c696379547970657d2f7b706f6c69637956> 60.05859375 <657273696f6e7d>] TJ +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24 644.5760000000001 Td /F2.0 13 Tf -<322e322e312e20526573706f6e736573> Tj +[<322e31312e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 414.960 171.840 23.280 re +48.240 606.600 114.560 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -220.080 414.960 343.680 23.280 re +162.800 606.600 171.840 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 391.680 171.840 23.280 re +334.640 606.600 229.120 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -220.080 391.680 343.680 23.280 re +48.240 569.040 114.560 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +162.800 569.040 171.840 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +334.640 569.040 229.120 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 531.480 114.560 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +162.800 531.480 171.840 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +334.640 531.480 229.120 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 493.920 114.560 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +162.800 493.920 171.840 37.560 re f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +334.640 493.920 229.120 37.560 re +f +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 629.880 m +162.800 629.880 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +48.240 606.600 m +162.800 606.600 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 630.130 m +48.240 605.850 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 630.130 m +162.800 605.850 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24 614.1330000000002 Td +/F2.0 10.5 Tf +<54797065> Tj +ET + 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 438.240 m -220.080 438.240 l +162.800 629.880 m +334.640 629.880 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 414.960 m -220.080 414.960 l +162.800 606.600 m +334.640 606.600 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 438.490 m -48.240 414.210 l +162.800 630.130 m +162.800 605.850 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -220.080 438.490 m -220.080 414.210 l +334.640 630.130 m +334.640 605.850 l S [ ] 0 d 1 w @@ -6449,34 +12113,34 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 422.49300000000017 Td +165.79988544 614.1330000000002 Td /F2.0 10.5 Tf -<4854545020436f6465> Tj +<4e616d65> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -220.080 438.240 m -563.760 438.240 l +334.640 629.880 m +563.760 629.880 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -220.080 414.960 m -563.760 414.960 l +334.640 606.600 m +563.760 606.600 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -220.080 438.490 m -220.080 414.210 l +334.640 630.130 m +334.640 605.850 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 438.490 m -563.760 414.210 l +563.760 630.130 m +563.760 605.850 l S [ ] 0 d 1 w @@ -6484,7 +12148,7 @@ S 0.200 0.200 0.200 scn BT -223.07982816 422.49300000000017 Td +337.6397136 614.1330000000002 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -6492,26 +12156,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 414.960 m -220.080 414.960 l +48.240 606.600 m +162.800 606.600 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 391.680 m -220.080 391.680 l +48.240 569.040 m +162.800 569.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 415.210 m -48.240 391.430 l +48.240 606.850 m +48.240 568.790 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -220.080 415.210 m -220.080 391.430 l +162.800 606.850 m +162.800 568.790 l S [ ] 0 d 1 w @@ -6519,34 +12183,34 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 398.71300000000014 Td +51.24 583.2130000000002 Td /F2.0 10.5 Tf -<323030> Tj +<50617468> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -220.080 414.960 m -563.760 414.960 l +162.800 606.600 m +334.640 606.600 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -220.080 391.680 m -563.760 391.680 l +162.800 569.040 m +334.640 569.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -220.080 415.210 m -220.080 391.430 l +162.800 606.850 m +162.800 568.790 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 415.210 m -563.760 391.430 l +334.640 606.850 m +334.640 568.790 l S [ ] 0 d 1 w @@ -6554,117 +12218,46 @@ S 0.200 0.200 0.200 scn BT -223.07982816 398.71300000000014 Td -/F1.0 10.5 Tf -<4e6f20436f6e74656e74> Tj -ET - -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -48.24000000000001 362.0960000000002 Td -/F2.0 13 Tf -<322e322e322e2050726f6475636573> Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn - --0.500 Tc -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -56.88050000000001 335.43600000000015 Td -/F1.0 10.5 Tf - Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn - -0.000 Tc -0.694 0.129 0.275 scn -0.694 0.129 0.275 SCN - -BT -66.24000000000001 337.6200000000002 Td -/F4.0 10.5 Tf -<746578742f706c61696e> Tj +165.79988544 590.3530000000003 Td +/F2.0 10.5 Tf +<6c6f6f704e616d65> Tj ET -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN BT -48.24000000000001 299.97600000000017 Td -/F2.0 18 Tf -<322e332e20474554202f76322f64696374696f6e617279> Tj +165.79988544 576.0730000000002 Td ET -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN BT -48.24000000000001 265.7360000000001 Td -/F2.0 13 Tf -<322e332e312e20526573706f6e736573> Tj +165.79988544 576.0730000000002 Td +/F3.0 10.5 Tf +<7265717569726564> Tj ET -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 213.480 51.552 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -99.792 213.480 360.864 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -460.656 213.480 103.104 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 190.200 51.552 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -99.792 190.200 360.864 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -460.656 190.200 103.104 23.280 re -f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 251.040 m -99.792 251.040 l +334.640 606.600 m +563.760 606.600 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -48.240 213.480 m -99.792 213.480 l +334.640 569.040 m +563.760 569.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 251.290 m -48.240 212.730 l +334.640 606.850 m +334.640 568.790 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 251.290 m -99.792 212.730 l +563.760 606.850 m +563.760 568.790 l S [ ] 0 d 1 w @@ -6672,41 +12265,34 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 235.29300000000012 Td -/F2.0 10.5 Tf -<48545450> Tj -ET - - -BT -51.24000000000001 221.01300000000012 Td -/F2.0 10.5 Tf -<436f6465> Tj +337.6397136 583.2130000000002 Td +/F1.0 10.5 Tf +<737472696e67> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 251.040 m -460.656 251.040 l +48.240 569.040 m +162.800 569.040 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -99.792 213.480 m -460.656 213.480 l +48.240 531.480 m +162.800 531.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 251.290 m -99.792 212.730 l +48.240 569.290 m +48.240 531.230 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 251.290 m -460.656 212.730 l +162.800 569.290 m +162.800 531.230 l S [ ] 0 d 1 w @@ -6714,34 +12300,34 @@ S 0.200 0.200 0.200 scn BT -102.792 235.29300000000012 Td +51.24 545.6530000000001 Td /F2.0 10.5 Tf -<4465736372697074696f6e> Tj +<50617468> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 251.040 m -563.760 251.040 l +162.800 569.040 m +334.640 569.040 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -460.656 213.480 m -563.760 213.480 l +162.800 531.480 m +334.640 531.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 251.290 m -460.656 212.730 l +162.800 569.290 m +162.800 531.230 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 251.290 m -563.760 212.730 l +334.640 569.290 m +334.640 531.230 l S [ ] 0 d 1 w @@ -6749,34 +12335,46 @@ S 0.200 0.200 0.200 scn BT -463.65600000000006 235.29300000000012 Td +165.79988544 552.7930000000001 Td /F2.0 10.5 Tf -<536368656d61> Tj +<706f6c69637954797065> Tj +ET + + +BT +165.79988544 538.5130000000001 Td +ET + + +BT +165.79988544 538.5130000000001 Td +/F3.0 10.5 Tf +<7265717569726564> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 213.480 m -99.792 213.480 l +334.640 569.040 m +563.760 569.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 190.200 m -99.792 190.200 l +334.640 531.480 m +563.760 531.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 213.730 m -48.240 189.950 l +334.640 569.290 m +334.640 531.230 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 213.730 m -99.792 189.950 l +563.760 569.290 m +563.760 531.230 l S [ ] 0 d 1 w @@ -6784,34 +12382,34 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 197.23300000000012 Td -/F2.0 10.5 Tf -<323030> Tj +337.6397136 545.6530000000001 Td +/F1.0 10.5 Tf +<737472696e67> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 213.480 m -460.656 213.480 l +48.240 531.480 m +162.800 531.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 190.200 m -460.656 190.200 l +48.240 493.920 m +162.800 493.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 213.730 m -99.792 189.950 l +48.240 531.730 m +48.240 493.670 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 213.730 m -460.656 189.950 l +162.800 531.730 m +162.800 493.670 l S [ ] 0 d 1 w @@ -6819,267 +12417,151 @@ S 0.200 0.200 0.200 scn BT -102.792 197.23300000000012 Td -/F1.0 10.5 Tf -<4f75747075742074797065> Tj +51.24 508.09300000000025 Td +/F2.0 10.5 Tf +<50617468> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 213.480 m -563.760 213.480 l +162.800 531.480 m +334.640 531.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 190.200 m -563.760 190.200 l +162.800 493.920 m +334.640 493.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 213.730 m -460.656 189.950 l +162.800 531.730 m +162.800 493.670 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 213.730 m -563.760 189.950 l +334.640 531.730 m +334.640 493.670 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN - -BT -463.65600000000006 197.23300000000012 Td -/F1.0 10.5 Tf -<44696374696f6e617279> Tj -ET - -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -48.24000000000001 160.6160000000001 Td -/F2.0 13 Tf -<322e332e322e2050726f6475636573> Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn - --0.500 Tc -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN BT -56.88050000000001 133.95600000000007 Td -/F1.0 10.5 Tf - Tj +165.79988544 515.2330000000002 Td +/F2.0 10.5 Tf +[<706f6c69637956> 60.05859375 <657273696f6e>] TJ ET -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn - -0.000 Tc -0.694 0.129 0.275 scn -0.694 0.129 0.275 SCN BT -66.24000000000001 136.14000000000007 Td -/F4.0 10.5 Tf -<6170706c69636174696f6e2f6a736f6e> Tj +165.79988544 500.9530000000002 Td ET -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN BT -48.24000000000001 98.49600000000007 Td -/F2.0 18 Tf -<322e342e20505554202f76322f64696374696f6e617279> Tj +165.79988544 500.9530000000002 Td +/F3.0 10.5 Tf +<7265717569726564> Tj ET -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -q 0.000 0.000 0.000 scn -0.000 0.000 0.000 SCN -1 w -0 J -0 j +0.5 w +0.867 0.867 0.867 SCN +334.640 531.480 m +563.760 531.480 l +S [ ] 0 d -/Stamp1 Do +0.5 w +0.867 0.867 0.867 SCN +334.640 493.920 m +563.760 493.920 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 531.730 m +334.640 493.670 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 531.730 m +563.760 493.670 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN BT -49.24 14.388 Td -/F1.0 9 Tf -<32> Tj +337.6397136 508.09300000000025 Td +/F1.0 10.5 Tf +<737472696e67> Tj ET -0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn -Q -Q - -endstream -endobj -27 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 612.0 792.0] -/Contents 26 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 22 0 R -/F1.0 8 0 R -/F4.0 33 0 R ->> -/XObject << /Stamp1 588 0 R ->> ->> -/Annots [31 0 R 39 0 R] ->> -endobj -28 0 obj -[27 0 R /XYZ 0 792.0 null] -endobj -29 0 obj -[27 0 R /XYZ 0 712.0799999999999 null] -endobj -30 0 obj -[27 0 R /XYZ 0 672.0 null] -endobj -31 0 obj -<< /Border [0 0 0] -/Dest (_cldshealthcheck) -/Subtype /Link -/Rect [463.65600000000006 582.8470000000001 547.9710000000001 597.1270000000001] -/Type /Annot ->> -endobj -32 0 obj -[27 0 R /XYZ 0 566.8800000000001 null] -endobj -33 0 obj -<< /Type /Font -/BaseFont /AAAAAD+mplus1mn-regular -/Subtype /TrueType -/FontDescriptor 747 0 R -/FirstChar 32 -/LastChar 255 -/Widths 749 0 R -/ToUnicode 748 0 R ->> -endobj -34 0 obj -[27 0 R /XYZ 0 510.60000000000025 null] -endobj -35 0 obj -[27 0 R /XYZ 0 470.5200000000002 null] -endobj -36 0 obj -[27 0 R /XYZ 0 379.6800000000002 null] -endobj -37 0 obj -[27 0 R /XYZ 0 323.40000000000015 null] -endobj -38 0 obj -[27 0 R /XYZ 0 283.3200000000001 null] -endobj -39 0 obj -<< /Border [0 0 0] -/Dest (_dictionary) -/Subtype /Link -/Rect [463.65600000000006 194.16700000000012 516.45 208.44700000000012] -/Type /Annot ->> -endobj -40 0 obj -[27 0 R /XYZ 0 178.2000000000001 null] -endobj -41 0 obj -[27 0 R /XYZ 0 121.92000000000007 null] -endobj -42 0 obj -<< /Length 16306 ->> -stream -q -/DeviceRGB cs 0.200 0.200 0.200 scn -/DeviceRGB CS 0.200 0.200 0.200 SCN BT -48.24 740.816 Td +48.24 464.33600000000024 Td /F2.0 13 Tf -[<322e342e312e20506172> 20.01953125 <616d6574657273>] TJ +<322e31312e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 702.840 114.560 23.280 re +48.240 412.080 51.552 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 702.840 171.840 23.280 re +99.792 412.080 360.864 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 702.840 229.120 23.280 re +460.656 412.080 103.104 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 665.280 114.560 37.560 re +48.240 388.800 51.552 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 665.280 171.840 37.560 re +99.792 388.800 360.864 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 665.280 229.120 37.560 re +460.656 388.800 103.104 23.280 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 726.120 m -162.800 726.120 l +48.240 449.640 m +99.792 449.640 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 702.840 m -162.800 702.840 l +48.240 412.080 m +99.792 412.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 726.370 m -48.240 702.090 l +48.240 449.890 m +48.240 411.330 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 726.370 m -162.800 702.090 l +99.792 449.890 m +99.792 411.330 l S [ ] 0 d 1 w @@ -7087,34 +12569,41 @@ S 0.200 0.200 0.200 scn BT -51.24 710.373 Td +51.24 433.8930000000002 Td /F2.0 10.5 Tf -<54797065> Tj +<48545450> Tj +ET + + +BT +51.24 419.61300000000017 Td +/F2.0 10.5 Tf +<436f6465> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 726.120 m -334.640 726.120 l +99.792 449.640 m +460.656 449.640 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -162.800 702.840 m -334.640 702.840 l +99.792 412.080 m +460.656 412.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 726.370 m -162.800 702.090 l +99.792 449.890 m +99.792 411.330 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 726.370 m -334.640 702.090 l +460.656 449.890 m +460.656 411.330 l S [ ] 0 d 1 w @@ -7122,34 +12611,34 @@ S 0.200 0.200 0.200 scn BT -165.79988544 710.373 Td +102.792 433.8930000000002 Td /F2.0 10.5 Tf -<4e616d65> Tj +<4465736372697074696f6e> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 726.120 m -563.760 726.120 l +460.656 449.640 m +563.760 449.640 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -334.640 702.840 m -563.760 702.840 l +460.656 412.080 m +563.760 412.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 726.370 m -334.640 702.090 l +460.656 449.890 m +460.656 411.330 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 726.370 m -563.760 702.090 l +563.760 449.890 m +563.760 411.330 l S [ ] 0 d 1 w @@ -7157,7 +12646,7 @@ S 0.200 0.200 0.200 scn BT -337.6397136 710.373 Td +463.65600000000006 433.8930000000002 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -7165,26 +12654,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 702.840 m -162.800 702.840 l +48.240 412.080 m +99.792 412.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 665.280 m -162.800 665.280 l +48.240 388.800 m +99.792 388.800 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 703.090 m -48.240 665.030 l +48.240 412.330 m +48.240 388.550 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 703.090 m -162.800 665.030 l +99.792 412.330 m +99.792 388.550 l S [ ] 0 d 1 w @@ -7192,34 +12681,34 @@ S 0.200 0.200 0.200 scn BT -51.24 679.4530000000001 Td +51.24 395.8330000000002 Td /F2.0 10.5 Tf -<426f6479> Tj +<323030> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 702.840 m -334.640 702.840 l +99.792 412.080 m +460.656 412.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 665.280 m -334.640 665.280 l +99.792 388.800 m +460.656 388.800 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 703.090 m -162.800 665.030 l +99.792 412.330 m +99.792 388.550 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 703.090 m -334.640 665.030 l +460.656 412.330 m +460.656 388.550 l S [ ] 0 d 1 w @@ -7227,46 +12716,34 @@ S 0.200 0.200 0.200 scn BT -165.79988544 686.5930000000001 Td -/F2.0 10.5 Tf -<626f6479> Tj -ET - - -BT -165.79988544 672.3130000000001 Td -ET - - -BT -165.79988544 672.3130000000001 Td -/F3.0 10.5 Tf -<7265717569726564> Tj +102.792 395.8330000000002 Td +/F1.0 10.5 Tf +<4f75747075742074797065> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 702.840 m -563.760 702.840 l +460.656 412.080 m +563.760 412.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 665.280 m -563.760 665.280 l +460.656 388.800 m +563.760 388.800 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 703.090 m -334.640 665.030 l +460.656 412.330 m +460.656 388.550 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 703.090 m -563.760 665.030 l +563.760 412.330 m +563.760 388.550 l S [ ] 0 d 1 w @@ -7280,9 +12757,9 @@ S 0.259 0.545 0.792 SCN BT -337.6397136 679.4530000000001 Td +463.65600000000006 395.8330000000002 Td /F1.0 10.5 Tf -<44696374696f6e617279> Tj +<4c6f6f70> Tj ET 0.000 0.000 0.000 SCN @@ -7292,59 +12769,129 @@ ET 0.200 0.200 0.200 SCN BT -48.24 635.6960000000003 Td +48.24 359.2160000000002 Td +/F2.0 13 Tf +<322e31312e332e2050726f6475636573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +-0.500 Tc +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +56.88050000000001 332.55600000000015 Td +/F1.0 10.5 Tf + Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +0.000 Tc +0.694 0.129 0.275 scn +0.694 0.129 0.275 SCN + +BT +66.24000000000001 334.7400000000002 Td +/F4.0 10.5 Tf +<6170706c69636174696f6e2f6a736f6e> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 297.0960000000002 Td +/F2.0 18 Tf +[<322e31322e20504f53> 20.01953125 <54>] TJ +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 269.0160000000002 Td +/F2.0 18 Tf +<2f76322f6c6f6f702f6372656174652f7b6c6f6f704e616d657d3f74656d706c6174654e616d653d7b74656d706c6174654e> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 240.93600000000015 Td +/F2.0 18 Tf +<616d657d> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 206.69600000000014 Td /F2.0 13 Tf -<322e342e322e20526573706f6e736573> Tj +[<322e31322e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 583.440 51.552 37.560 re +48.240 168.720 114.560 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 583.440 360.864 37.560 re +162.800 168.720 171.840 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 583.440 103.104 37.560 re +334.640 168.720 229.120 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 560.160 51.552 23.280 re +48.240 116.880 114.560 51.840 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 560.160 360.864 23.280 re +162.800 116.880 171.840 51.840 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 560.160 103.104 23.280 re +334.640 116.880 229.120 51.840 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 621.000 m -99.792 621.000 l +48.240 192.000 m +162.800 192.000 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 583.440 m -99.792 583.440 l +48.240 168.720 m +162.800 168.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 621.250 m -48.240 582.690 l +48.240 192.250 m +48.240 167.970 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 621.250 m -99.792 582.690 l +162.800 192.250 m +162.800 167.970 l S [ ] 0 d 1 w @@ -7352,41 +12899,34 @@ S 0.200 0.200 0.200 scn BT -51.24 605.2530000000004 Td -/F2.0 10.5 Tf -<48545450> Tj -ET - - -BT -51.24 590.9730000000003 Td +51.24000000000001 176.25300000000016 Td /F2.0 10.5 Tf -<436f6465> Tj +<54797065> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 621.000 m -460.656 621.000 l +162.800 192.000 m +334.640 192.000 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -99.792 583.440 m -460.656 583.440 l +162.800 168.720 m +334.640 168.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 621.250 m -99.792 582.690 l +162.800 192.250 m +162.800 167.970 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 621.250 m -460.656 582.690 l +334.640 192.250 m +334.640 167.970 l S [ ] 0 d 1 w @@ -7394,34 +12934,34 @@ S 0.200 0.200 0.200 scn BT -102.792 605.2530000000004 Td +165.79988544000003 176.25300000000016 Td /F2.0 10.5 Tf -<4465736372697074696f6e> Tj +<4e616d65> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 621.000 m -563.760 621.000 l +334.640 192.000 m +563.760 192.000 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -460.656 583.440 m -563.760 583.440 l +334.640 168.720 m +563.760 168.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 621.250 m -460.656 582.690 l +334.640 192.250 m +334.640 167.970 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 621.250 m -563.760 582.690 l +563.760 192.250 m +563.760 167.970 l S [ ] 0 d 1 w @@ -7429,7 +12969,7 @@ S 0.200 0.200 0.200 scn BT -463.65600000000006 605.2530000000004 Td +337.6397136 176.25300000000016 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -7437,61 +12977,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 583.440 m -99.792 583.440 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -48.240 560.160 m -99.792 560.160 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -48.240 583.690 m -48.240 559.910 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -99.792 583.690 m -99.792 559.910 l -S -[ ] 0 d -1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn - -BT -51.24 567.1930000000002 Td -/F2.0 10.5 Tf -<323030> Tj -ET - -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -99.792 583.440 m -460.656 583.440 l +48.240 168.720 m +162.800 168.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 560.160 m -460.656 560.160 l +48.240 116.880 m +162.800 116.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 583.690 m -99.792 559.910 l +48.240 168.970 m +48.240 116.630 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 583.690 m -460.656 559.910 l +162.800 168.970 m +162.800 116.630 l S [ ] 0 d 1 w @@ -7499,197 +13004,240 @@ S 0.200 0.200 0.200 scn BT -102.792 567.1930000000002 Td -/F1.0 10.5 Tf -<4f75747075742074797065> Tj +51.24000000000001 138.19300000000015 Td +/F2.0 10.5 Tf +<50617468> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 583.440 m -563.760 583.440 l +162.800 168.720 m +334.640 168.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 560.160 m -563.760 560.160 l +162.800 116.880 m +334.640 116.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 583.690 m -460.656 559.910 l +162.800 168.970 m +162.800 116.630 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 583.690 m -563.760 559.910 l +334.640 168.970 m +334.640 116.630 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -463.65600000000006 567.1930000000002 Td -/F1.0 10.5 Tf -<44696374696f6e617279> Tj +165.79988544000003 152.47300000000016 Td +/F2.0 10.5 Tf +<6c6f6f704e616d657d3f74656d706c6174654e616d653d7b7465> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN BT -48.24 530.5760000000004 Td -/F2.0 13 Tf -<322e342e332e20436f6e73756d6573> Tj +165.79988544000003 138.19300000000015 Td +/F2.0 10.5 Tf +<6d706c6174654e616d65> Tj ET -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn - --0.500 Tc -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN BT -56.88050000000001 503.91600000000045 Td -/F1.0 10.5 Tf - Tj +165.79988544000003 123.91300000000015 Td ET -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn - -0.000 Tc -0.694 0.129 0.275 scn -0.694 0.129 0.275 SCN BT -66.24000000000001 506.1000000000005 Td -/F4.0 10.5 Tf -<6170706c69636174696f6e2f6a736f6e> Tj +165.79988544000003 123.91300000000015 Td +/F3.0 10.5 Tf +<7265717569726564> Tj ET -0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -48.24000000000001 474.29600000000045 Td -/F2.0 13 Tf -<322e342e342e2050726f6475636573> Tj -ET - +0.5 w +0.867 0.867 0.867 SCN +334.640 168.720 m +563.760 168.720 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 116.880 m +563.760 116.880 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 168.970 m +334.640 116.630 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 168.970 m +563.760 116.630 l +S +[ ] 0 d +1 w 0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn - --0.500 Tc 0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN BT -56.88050000000001 447.6360000000004 Td +337.6397136 138.19300000000015 Td /F1.0 10.5 Tf - Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn - -0.000 Tc -0.694 0.129 0.275 scn -0.694 0.129 0.275 SCN - -BT -66.24000000000001 449.82000000000045 Td -/F4.0 10.5 Tf -<6170706c69636174696f6e2f6a736f6e> Tj +<737472696e67> Tj ET -0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24000000000001 412.17600000000044 Td -/F2.0 18 Tf -<322e352e20474554202f76322f64696374696f6e6172792f7365636f6e646172792f6e616d6573> Tj +48.24000000000001 87.29600000000013 Td +/F2.0 13 Tf +<322e31322e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn +q +0.000 0.000 0.000 scn +0.000 0.000 0.000 SCN +1 w +0 J +0 j +[ ] 0 d +/Stamp1 Do 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24000000000001 377.9360000000004 Td -/F2.0 13 Tf -<322e352e312e20526573706f6e736573> Tj +49.24 14.388 Td +/F1.0 9 Tf +<36> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn +Q +Q + +endstream +endobj +87 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 612.0 792.0] +/Contents 86 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F2.0 24 0 R +/F3.0 26 0 R +/F1.0 8 0 R +/F4.0 35 0 R +>> +/XObject << /Stamp1 684 0 R +>> +>> +/Annots [92 0 R] +>> +endobj +88 0 obj +[87 0 R /XYZ 0 792.0 null] +endobj +89 0 obj +[87 0 R /XYZ 0 662.1600000000001 null] +endobj +90 0 obj +<< /Limits [(_policymodel) (_produces_18)] +/Names [(_policymodel) 342 0 R (_produces) 34 0 R (_produces_10) 85 0 R (_produces_11) 93 0 R (_produces_12) 101 0 R (_produces_13) 111 0 R (_produces_14) 114 0 R (_produces_15) 120 0 R (_produces_16) 127 0 R (_produces_17) 132 0 R (_produces_18) 139 0 R] +>> +endobj +91 0 obj +[87 0 R /XYZ 0 481.92000000000024 null] +endobj +92 0 obj +<< /Border [0 0 0] +/Dest (_loop) +/Subtype /Link +/Rect [463.65600000000006 392.7670000000002 488.7510000000001 407.0470000000002] +/Type /Annot +>> +endobj +93 0 obj +[87 0 R /XYZ 0 376.8000000000002 null] +endobj +94 0 obj +[87 0 R /XYZ 0 320.52000000000015 null] +endobj +95 0 obj +[87 0 R /XYZ 0 224.28000000000017 null] +endobj +96 0 obj +[87 0 R /XYZ 0 104.88000000000014 null] +endobj +97 0 obj +<< /Length 17842 +>> +stream +q +/DeviceRGB cs 1.000 1.000 1.000 scn -48.240 325.680 51.552 37.560 re +48.240 718.440 51.552 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 325.680 360.864 37.560 re +99.792 718.440 360.864 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 325.680 103.104 37.560 re +460.656 718.440 103.104 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 302.400 51.552 23.280 re +48.240 695.160 51.552 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 302.400 360.864 23.280 re +99.792 695.160 360.864 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 302.400 103.104 23.280 re +460.656 695.160 103.104 23.280 re f 0.000 0.000 0.000 scn 0.5 w +/DeviceRGB CS 0.867 0.867 0.867 SCN -48.240 363.240 m -99.792 363.240 l +48.240 756.000 m +99.792 756.000 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 325.680 m -99.792 325.680 l +48.240 718.440 m +99.792 718.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 363.490 m -48.240 324.930 l +48.240 756.250 m +48.240 717.690 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 363.490 m -99.792 324.930 l +99.792 756.250 m +99.792 717.690 l S [ ] 0 d 1 w @@ -7697,14 +13245,14 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 347.49300000000034 Td +51.24 740.2529999999999 Td /F2.0 10.5 Tf <48545450> Tj ET BT -51.24000000000001 333.2130000000003 Td +51.24 725.973 Td /F2.0 10.5 Tf <436f6465> Tj ET @@ -7712,26 +13260,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 363.240 m -460.656 363.240 l +99.792 756.000 m +460.656 756.000 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -99.792 325.680 m -460.656 325.680 l +99.792 718.440 m +460.656 718.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 363.490 m -99.792 324.930 l +99.792 756.250 m +99.792 717.690 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 363.490 m -460.656 324.930 l +460.656 756.250 m +460.656 717.690 l S [ ] 0 d 1 w @@ -7739,7 +13287,7 @@ S 0.200 0.200 0.200 scn BT -102.792 347.49300000000034 Td +102.792 740.2529999999999 Td /F2.0 10.5 Tf <4465736372697074696f6e> Tj ET @@ -7747,26 +13295,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 363.240 m -563.760 363.240 l +460.656 756.000 m +563.760 756.000 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -460.656 325.680 m -563.760 325.680 l +460.656 718.440 m +563.760 718.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 363.490 m -460.656 324.930 l +460.656 756.250 m +460.656 717.690 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 363.490 m -563.760 324.930 l +563.760 756.250 m +563.760 717.690 l S [ ] 0 d 1 w @@ -7774,7 +13322,7 @@ S 0.200 0.200 0.200 scn BT -463.65600000000006 347.49300000000034 Td +463.65600000000006 740.2529999999999 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -7782,26 +13330,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 325.680 m -99.792 325.680 l +48.240 718.440 m +99.792 718.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 302.400 m -99.792 302.400 l +48.240 695.160 m +99.792 695.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 325.930 m -48.240 302.150 l +48.240 718.690 m +48.240 694.910 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 325.930 m -99.792 302.150 l +99.792 718.690 m +99.792 694.910 l S [ ] 0 d 1 w @@ -7809,7 +13357,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 309.43300000000033 Td +51.24 702.193 Td /F2.0 10.5 Tf <323030> Tj ET @@ -7817,26 +13365,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 325.680 m -460.656 325.680 l +99.792 718.440 m +460.656 718.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 302.400 m -460.656 302.400 l +99.792 695.160 m +460.656 695.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 325.930 m -99.792 302.150 l +99.792 718.690 m +99.792 694.910 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 325.930 m -460.656 302.150 l +460.656 718.690 m +460.656 694.910 l S [ ] 0 d 1 w @@ -7844,7 +13392,7 @@ S 0.200 0.200 0.200 scn BT -102.792 309.43300000000033 Td +102.792 702.193 Td /F1.0 10.5 Tf <4f75747075742074797065> Tj ET @@ -7852,46 +13400,91 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 325.680 m -563.760 325.680 l +460.656 718.440 m +563.760 718.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 302.400 m -563.760 302.400 l +460.656 695.160 m +563.760 695.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 325.930 m -460.656 302.150 l +460.656 718.690 m +460.656 694.910 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 325.930 m -563.760 302.150 l +563.760 718.690 m +563.760 694.910 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT -463.65600000000006 309.43300000000033 Td +463.65600000000006 702.193 Td /F1.0 10.5 Tf -[<3c20737472696e67203e20617272> 20.01953125 <61> 20.01953125 <79>] TJ +<4c6f6f70> Tj +ET + +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24 665.5760000000001 Td +/F2.0 13 Tf +<322e31322e332e20436f6e73756d6573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +-0.500 Tc +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +56.88050000000001 638.9160000000002 Td +/F1.0 10.5 Tf + Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +0.000 Tc +0.694 0.129 0.275 scn +0.694 0.129 0.275 SCN + +BT +66.24000000000001 641.1000000000003 Td +/F4.0 10.5 Tf +<6170706c69636174696f6e2f6a736f6e> Tj ET +0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24000000000001 272.8160000000003 Td +48.24000000000001 609.2960000000003 Td /F2.0 13 Tf -<322e352e322e2050726f6475636573> Tj +<322e31322e342e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -7902,7 +13495,7 @@ ET 0.200 0.200 0.200 SCN BT -56.88050000000001 246.1560000000003 Td +56.88050000000001 582.6360000000003 Td /F1.0 10.5 Tf Tj ET @@ -7915,7 +13508,7 @@ ET 0.694 0.129 0.275 SCN BT -66.24000000000001 248.3400000000003 Td +66.24000000000001 584.8200000000004 Td /F4.0 10.5 Tf <6170706c69636174696f6e2f6a736f6e> Tj ET @@ -7926,9 +13519,9 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 210.69600000000028 Td +48.24000000000001 547.1760000000004 Td /F2.0 18 Tf -<322e362e20474554202f76322f64696374696f6e6172792f7b64696374696f6e6172794e616d657d> Tj +<322e31332e20505554202f76322f6c6f6f702f64656c6574652f7b6c6f6f704e616d657d> Tj ET 0.000 0.000 0.000 SCN @@ -7937,59 +13530,59 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 176.45600000000024 Td +48.24000000000001 512.9360000000005 Td /F2.0 13 Tf -[<322e362e312e20506172> 20.01953125 <616d6574657273>] TJ +[<322e31332e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 138.480 114.560 23.280 re +48.240 474.960 114.560 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 138.480 171.840 23.280 re +162.800 474.960 171.840 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 138.480 229.120 23.280 re +334.640 474.960 229.120 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 100.920 114.560 37.560 re +48.240 437.400 114.560 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 100.920 171.840 37.560 re +162.800 437.400 171.840 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 100.920 229.120 37.560 re +334.640 437.400 229.120 37.560 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 161.760 m -162.800 161.760 l +48.240 498.240 m +162.800 498.240 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 138.480 m -162.800 138.480 l +48.240 474.960 m +162.800 474.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 162.010 m -48.240 137.730 l +48.240 498.490 m +48.240 474.210 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 162.010 m -162.800 137.730 l +162.800 498.490 m +162.800 474.210 l S [ ] 0 d 1 w @@ -7997,7 +13590,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 146.01300000000026 Td +51.24000000000001 482.49300000000045 Td /F2.0 10.5 Tf <54797065> Tj ET @@ -8005,26 +13598,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 161.760 m -334.640 161.760 l +162.800 498.240 m +334.640 498.240 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -162.800 138.480 m -334.640 138.480 l +162.800 474.960 m +334.640 474.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 162.010 m -162.800 137.730 l +162.800 498.490 m +162.800 474.210 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 162.010 m -334.640 137.730 l +334.640 498.490 m +334.640 474.210 l S [ ] 0 d 1 w @@ -8032,7 +13625,7 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 146.01300000000026 Td +165.79988544000003 482.49300000000045 Td /F2.0 10.5 Tf <4e616d65> Tj ET @@ -8040,26 +13633,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 161.760 m -563.760 161.760 l +334.640 498.240 m +563.760 498.240 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -334.640 138.480 m -563.760 138.480 l +334.640 474.960 m +563.760 474.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 162.010 m -334.640 137.730 l +334.640 498.490 m +334.640 474.210 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 162.010 m -563.760 137.730 l +563.760 498.490 m +563.760 474.210 l S [ ] 0 d 1 w @@ -8067,7 +13660,7 @@ S 0.200 0.200 0.200 scn BT -337.6397136 146.01300000000026 Td +337.6397136 482.49300000000045 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -8075,26 +13668,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 138.480 m -162.800 138.480 l +48.240 474.960 m +162.800 474.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 100.920 m -162.800 100.920 l +48.240 437.400 m +162.800 437.400 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 138.730 m -48.240 100.670 l +48.240 475.210 m +48.240 437.150 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 138.730 m -162.800 100.670 l +162.800 475.210 m +162.800 437.150 l S [ ] 0 d 1 w @@ -8102,7 +13695,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 115.09300000000026 Td +51.24000000000001 451.5730000000005 Td /F2.0 10.5 Tf <50617468> Tj ET @@ -8110,26 +13703,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 138.480 m -334.640 138.480 l +162.800 474.960 m +334.640 474.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 100.920 m -334.640 100.920 l +162.800 437.400 m +334.640 437.400 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 138.730 m -162.800 100.670 l +162.800 475.210 m +162.800 437.150 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 138.730 m -334.640 100.670 l +334.640 475.210 m +334.640 437.150 l S [ ] 0 d 1 w @@ -8137,19 +13730,19 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 122.23300000000026 Td +165.79988544000003 458.7130000000005 Td /F2.0 10.5 Tf -<64696374696f6e6172794e616d65> Tj +<6c6f6f704e616d65> Tj ET BT -165.79988544000003 107.95300000000026 Td +165.79988544000003 444.43300000000045 Td ET BT -165.79988544000003 107.95300000000026 Td +165.79988544000003 444.43300000000045 Td /F3.0 10.5 Tf <7265717569726564> Tj ET @@ -8157,26 +13750,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 138.480 m -563.760 138.480 l +334.640 474.960 m +563.760 474.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 100.920 m -563.760 100.920 l +334.640 437.400 m +563.760 437.400 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 138.730 m -334.640 100.670 l +334.640 475.210 m +334.640 437.150 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 138.730 m -563.760 100.670 l +563.760 475.210 m +563.760 437.150 l S [ ] 0 d 1 w @@ -8184,212 +13777,61 @@ S 0.200 0.200 0.200 scn BT -337.6397136 115.09300000000026 Td +337.6397136 451.5730000000005 Td /F1.0 10.5 Tf <737472696e67> Tj ET 0.000 0.000 0.000 scn -q -0.000 0.000 0.000 scn -0.000 0.000 0.000 SCN -1 w -0 J -0 j -[ ] 0 d -/Stamp1 Do -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -557.7289999999999 14.388 Td -/F1.0 9 Tf -<33> Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -Q -Q - -endstream -endobj -43 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 612.0 792.0] -/Contents 42 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 22 0 R -/F3.0 24 0 R -/F1.0 8 0 R -/F4.0 33 0 R ->> -/XObject << /Stamp1 588 0 R ->> ->> -/Annots [45 0 R 47 0 R] ->> -endobj -44 0 obj -[43 0 R /XYZ 0 792.0 null] -endobj -45 0 obj -<< /Border [0 0 0] -/Dest (_dictionary) -/Subtype /Link -/Rect [337.6397136 676.3870000000002 390.4337136 690.6670000000001] -/Type /Annot ->> -endobj -46 0 obj -[43 0 R /XYZ 0 653.2800000000002 null] -endobj -47 0 obj -<< /Border [0 0 0] -/Dest (_dictionary) -/Subtype /Link -/Rect [463.65600000000006 564.1270000000003 516.45 578.4070000000003] -/Type /Annot ->> -endobj -48 0 obj -[43 0 R /XYZ 0 548.1600000000003 null] -endobj -49 0 obj -[43 0 R /XYZ 0 491.88000000000045 null] -endobj -50 0 obj -[43 0 R /XYZ 0 435.6000000000004 null] -endobj -51 0 obj -[43 0 R /XYZ 0 395.5200000000004 null] -endobj -52 0 obj -[43 0 R /XYZ 0 290.4000000000003 null] -endobj -53 0 obj -<< /Limits [(_cldshealthcheck) (_dictionaryelement)] -/Names [(_cldshealthcheck) 209 0 R (_consumes) 48 0 R (_consumes_2) 67 0 R (_consumes_3) 143 0 R (_consumes_4) 152 0 R (_consumes_5) 159 0 R (_consumes_6) 189 0 R (_definitions) 208 0 R (_dictionary) 210 0 R (_dictionaryelement) 212 0 R] ->> -endobj -54 0 obj -<< /Limits [(_responses_10) (_responses_19)] -/Names [(_responses_10) 81 0 R (_responses_11) 88 0 R (_responses_12) 92 0 R (_responses_13) 98 0 R (_responses_14) 103 0 R (_responses_15) 108 0 R (_responses_16) 115 0 R (_responses_17) 121 0 R (_responses_18) 128 0 R (_responses_19) 133 0 R] ->> -endobj -55 0 obj -[43 0 R /XYZ 0 234.1200000000003 null] -endobj -56 0 obj -[43 0 R /XYZ 0 194.04000000000028 null] -endobj -57 0 obj -<< /Length 18103 ->> -stream -q -/DeviceRGB cs 0.200 0.200 0.200 scn -/DeviceRGB CS 0.200 0.200 0.200 SCN BT -48.24 740.816 Td +48.24000000000001 407.8160000000005 Td /F2.0 13 Tf -<322e362e322e20526573706f6e736573> Tj +<322e31332e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 688.560 51.552 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -99.792 688.560 360.864 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -460.656 688.560 103.104 37.560 re +48.240 369.840 171.840 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 665.280 51.552 23.280 re +220.080 369.840 343.680 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 665.280 360.864 23.280 re +48.240 346.560 171.840 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 665.280 103.104 23.280 re +220.080 346.560 343.680 23.280 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 726.120 m -99.792 726.120 l -S -[ ] 0 d -1.5 w -0.867 0.867 0.867 SCN -48.240 688.560 m -99.792 688.560 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -48.240 726.370 m -48.240 687.810 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -99.792 726.370 m -99.792 687.810 l -S -[ ] 0 d -1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn - -BT -51.24 710.373 Td -/F2.0 10.5 Tf -<48545450> Tj -ET - - -BT -51.24 696.0930000000001 Td -/F2.0 10.5 Tf -<436f6465> Tj -ET - -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -99.792 726.120 m -460.656 726.120 l +48.240 393.120 m +220.080 393.120 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -99.792 688.560 m -460.656 688.560 l +48.240 369.840 m +220.080 369.840 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 726.370 m -99.792 687.810 l +48.240 393.370 m +48.240 369.090 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 726.370 m -460.656 687.810 l +220.080 393.370 m +220.080 369.090 l S [ ] 0 d 1 w @@ -8397,34 +13839,34 @@ S 0.200 0.200 0.200 scn BT -102.792 710.373 Td +51.24000000000001 377.37300000000045 Td /F2.0 10.5 Tf -<4465736372697074696f6e> Tj +<4854545020436f6465> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 726.120 m -563.760 726.120 l +220.080 393.120 m +563.760 393.120 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -460.656 688.560 m -563.760 688.560 l +220.080 369.840 m +563.760 369.840 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 726.370 m -460.656 687.810 l +220.080 393.370 m +220.080 369.090 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 726.370 m -563.760 687.810 l +563.760 393.370 m +563.760 369.090 l S [ ] 0 d 1 w @@ -8432,7 +13874,7 @@ S 0.200 0.200 0.200 scn BT -463.65600000000006 710.373 Td +223.07982816 377.37300000000045 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -8440,161 +13882,81 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 688.560 m -99.792 688.560 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -48.240 665.280 m -99.792 665.280 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -48.240 688.810 m -48.240 665.030 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -99.792 688.810 m -99.792 665.030 l -S -[ ] 0 d -1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn - -BT -51.24 672.3130000000001 Td -/F2.0 10.5 Tf -<323030> Tj -ET - -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -99.792 688.560 m -460.656 688.560 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -99.792 665.280 m -460.656 665.280 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -99.792 688.810 m -99.792 665.030 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -460.656 688.810 m -460.656 665.030 l -S -[ ] 0 d -1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn - -BT -102.792 672.3130000000001 Td -/F1.0 10.5 Tf -<4f75747075742074797065> Tj -ET - -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -460.656 688.560 m -563.760 688.560 l +48.240 369.840 m +220.080 369.840 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 665.280 m -563.760 665.280 l +48.240 346.560 m +220.080 346.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 688.810 m -460.656 665.030 l +48.240 370.090 m +48.240 346.310 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 688.810 m -563.760 665.030 l +220.080 370.090 m +220.080 346.310 l S [ ] 0 d 1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN - -BT -463.65600000000006 672.3130000000001 Td -/F1.0 10.5 Tf -<44696374696f6e617279> Tj -ET - -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.000 0.000 0.000 scn +0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN BT -48.24 635.6960000000003 Td -/F2.0 13 Tf -<322e362e332e2050726f6475636573> Tj +51.24000000000001 353.5930000000005 Td +/F2.0 10.5 Tf +<323030> Tj ET -0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn - --0.500 Tc +0.5 w +0.867 0.867 0.867 SCN +220.080 369.840 m +563.760 369.840 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +220.080 346.560 m +563.760 346.560 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +220.080 370.090 m +220.080 346.310 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 370.090 m +563.760 346.310 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN BT -56.88050000000001 609.0360000000003 Td +223.07982816 353.5930000000005 Td /F1.0 10.5 Tf - Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn - -0.000 Tc -0.694 0.129 0.275 scn -0.694 0.129 0.275 SCN - -BT -66.24000000000001 611.2200000000004 Td -/F4.0 10.5 Tf -<6170706c69636174696f6e2f6a736f6e> Tj +<4e6f20436f6e74656e74> Tj ET -0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24000000000001 573.5760000000004 Td +48.24000000000001 311.13600000000054 Td /F2.0 18 Tf -<322e372e20505554202f76322f64696374696f6e6172792f7b6e616d657d> Tj +[<322e31342e20505554202f76322f6c6f6f702f6465706c6f> 20.01953125 <792f7b6c6f6f704e616d657d>] TJ ET 0.000 0.000 0.000 SCN @@ -8603,71 +13965,59 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 539.3360000000005 Td +48.24000000000001 276.89600000000047 Td /F2.0 13 Tf -[<322e372e312e20506172> 20.01953125 <616d6574657273>] TJ +[<322e31342e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 501.360 114.560 23.280 re +48.240 238.920 114.560 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 501.360 171.840 23.280 re +162.800 238.920 171.840 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 501.360 229.120 23.280 re +334.640 238.920 229.120 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 463.800 114.560 37.560 re +48.240 201.360 114.560 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 463.800 171.840 37.560 re +162.800 201.360 171.840 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 463.800 229.120 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 426.240 114.560 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -162.800 426.240 171.840 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -334.640 426.240 229.120 37.560 re +334.640 201.360 229.120 37.560 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 524.640 m -162.800 524.640 l +48.240 262.200 m +162.800 262.200 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 501.360 m -162.800 501.360 l +48.240 238.920 m +162.800 238.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 524.890 m -48.240 500.610 l +48.240 262.450 m +48.240 238.170 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 524.890 m -162.800 500.610 l +162.800 262.450 m +162.800 238.170 l S [ ] 0 d 1 w @@ -8675,7 +14025,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 508.89300000000054 Td +51.24000000000001 246.45300000000043 Td /F2.0 10.5 Tf <54797065> Tj ET @@ -8683,26 +14033,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 524.640 m -334.640 524.640 l +162.800 262.200 m +334.640 262.200 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -162.800 501.360 m -334.640 501.360 l +162.800 238.920 m +334.640 238.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 524.890 m -162.800 500.610 l +162.800 262.450 m +162.800 238.170 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 524.890 m -334.640 500.610 l +334.640 262.450 m +334.640 238.170 l S [ ] 0 d 1 w @@ -8710,7 +14060,7 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 508.89300000000054 Td +165.79988544000003 246.45300000000043 Td /F2.0 10.5 Tf <4e616d65> Tj ET @@ -8718,26 +14068,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 524.640 m -563.760 524.640 l +334.640 262.200 m +563.760 262.200 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -334.640 501.360 m -563.760 501.360 l +334.640 238.920 m +563.760 238.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 524.890 m -334.640 500.610 l +334.640 262.450 m +334.640 238.170 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 524.890 m -563.760 500.610 l +563.760 262.450 m +563.760 238.170 l S [ ] 0 d 1 w @@ -8745,7 +14095,7 @@ S 0.200 0.200 0.200 scn BT -337.6397136 508.89300000000054 Td +337.6397136 246.45300000000043 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -8753,26 +14103,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 501.360 m -162.800 501.360 l +48.240 238.920 m +162.800 238.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 463.800 m -162.800 463.800 l +48.240 201.360 m +162.800 201.360 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 501.610 m -48.240 463.550 l +48.240 239.170 m +48.240 201.110 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 501.610 m -162.800 463.550 l +162.800 239.170 m +162.800 201.110 l S [ ] 0 d 1 w @@ -8780,7 +14130,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 477.9730000000006 Td +51.24000000000001 215.53300000000044 Td /F2.0 10.5 Tf <50617468> Tj ET @@ -8788,26 +14138,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 501.360 m -334.640 501.360 l +162.800 238.920 m +334.640 238.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 463.800 m -334.640 463.800 l +162.800 201.360 m +334.640 201.360 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 501.610 m -162.800 463.550 l +162.800 239.170 m +162.800 201.110 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 501.610 m -334.640 463.550 l +334.640 239.170 m +334.640 201.110 l S [ ] 0 d 1 w @@ -8815,19 +14165,19 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 485.11300000000057 Td +165.79988544000003 222.67300000000046 Td /F2.0 10.5 Tf -<6e616d65> Tj +<6c6f6f704e616d65> Tj ET BT -165.79988544000003 470.83300000000054 Td +165.79988544000003 208.39300000000046 Td ET BT -165.79988544000003 470.83300000000054 Td +165.79988544000003 208.39300000000046 Td /F3.0 10.5 Tf <7265717569726564> Tj ET @@ -8835,26 +14185,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 501.360 m -563.760 501.360 l +334.640 238.920 m +563.760 238.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 463.800 m -563.760 463.800 l +334.640 201.360 m +563.760 201.360 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 501.610 m -334.640 463.550 l +334.640 239.170 m +334.640 201.110 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 501.610 m -563.760 463.550 l +563.760 239.170 m +563.760 201.110 l S [ ] 0 d 1 w @@ -8862,34 +14212,69 @@ S 0.200 0.200 0.200 scn BT -337.6397136 477.9730000000006 Td +337.6397136 215.53300000000044 Td /F1.0 10.5 Tf <737472696e67> Tj ET +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 171.7760000000004 Td +/F2.0 13 Tf +<322e31342e322e20526573706f6e736573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 119.520 51.552 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +99.792 119.520 360.864 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +460.656 119.520 103.104 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 96.240 51.552 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +99.792 96.240 360.864 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +460.656 96.240 103.104 23.280 re +f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 463.800 m -162.800 463.800 l +48.240 157.080 m +99.792 157.080 l S [ ] 0 d -0.5 w +1.5 w 0.867 0.867 0.867 SCN -48.240 426.240 m -162.800 426.240 l +48.240 119.520 m +99.792 119.520 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 464.050 m -48.240 425.990 l +48.240 157.330 m +48.240 118.770 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 464.050 m -162.800 425.990 l +99.792 157.330 m +99.792 118.770 l S [ ] 0 d 1 w @@ -8897,34 +14282,76 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 440.4130000000005 Td +51.24000000000001 141.33300000000042 Td /F2.0 10.5 Tf -<426f6479> Tj +<48545450> Tj +ET + + +BT +51.24000000000001 127.05300000000042 Td +/F2.0 10.5 Tf +<436f6465> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 463.800 m -334.640 463.800 l +99.792 157.080 m +460.656 157.080 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +99.792 119.520 m +460.656 119.520 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 426.240 m -334.640 426.240 l +99.792 157.330 m +99.792 118.770 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 464.050 m -162.800 425.990 l +460.656 157.330 m +460.656 118.770 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +102.792 141.33300000000042 Td +/F2.0 10.5 Tf +<4465736372697074696f6e> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +460.656 157.080 m +563.760 157.080 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +460.656 119.520 m +563.760 119.520 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 464.050 m -334.640 425.990 l +460.656 157.330 m +460.656 118.770 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 157.330 m +563.760 118.770 l S [ ] 0 d 1 w @@ -8932,46 +14359,104 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 447.5530000000005 Td +463.65600000000006 141.33300000000042 Td /F2.0 10.5 Tf -<626f6479> Tj +<536368656d61> Tj ET +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 119.520 m +99.792 119.520 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 96.240 m +99.792 96.240 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 119.770 m +48.240 95.990 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 119.770 m +99.792 95.990 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn BT -165.79988544000003 433.2730000000005 Td +51.24000000000001 103.27300000000041 Td +/F2.0 10.5 Tf +<323030> Tj ET +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +99.792 119.520 m +460.656 119.520 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 96.240 m +460.656 96.240 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 119.770 m +99.792 95.990 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 119.770 m +460.656 95.990 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn BT -165.79988544000003 433.2730000000005 Td -/F3.0 10.5 Tf -<7265717569726564> Tj +102.792 103.27300000000041 Td +/F1.0 10.5 Tf +<4f75747075742074797065> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 463.800 m -563.760 463.800 l +460.656 119.520 m +563.760 119.520 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 426.240 m -563.760 426.240 l +460.656 96.240 m +563.760 96.240 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 464.050 m -334.640 425.990 l +460.656 119.770 m +460.656 95.990 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 464.050 m -563.760 425.990 l +563.760 119.770 m +563.760 95.990 l S [ ] 0 d 1 w @@ -8985,71 +14470,207 @@ S 0.259 0.545 0.792 SCN BT -337.6397136 440.4130000000005 Td +463.65600000000006 103.27300000000041 Td /F1.0 10.5 Tf -<44696374696f6e617279> Tj +<4c6f6f70> Tj ET 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn 0.000 0.000 0.000 scn +q +0.000 0.000 0.000 scn +0.000 0.000 0.000 SCN +1 w +0 J +0 j +[ ] 0 d +/Stamp1 Do 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24000000000001 396.6560000000005 Td +557.7289999999999 14.388 Td +/F1.0 9 Tf +<37> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +Q +Q + +endstream +endobj +98 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 612.0 792.0] +/Contents 97 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F2.0 24 0 R +/F1.0 8 0 R +/F4.0 35 0 R +/F3.0 26 0 R +>> +/XObject << /Stamp1 684 0 R +>> +>> +/Annots [99 0 R 108 0 R] +>> +endobj +99 0 obj +<< /Border [0 0 0] +/Dest (_loop) +/Subtype /Link +/Rect [463.65600000000006 699.1270000000001 488.7510000000001 713.407] +/Type /Annot +>> +endobj +100 0 obj +[98 0 R /XYZ 0 683.1600000000001 null] +endobj +101 0 obj +[98 0 R /XYZ 0 626.8800000000002 null] +endobj +102 0 obj +[98 0 R /XYZ 0 570.6000000000004 null] +endobj +103 0 obj +[98 0 R /XYZ 0 530.5200000000004 null] +endobj +104 0 obj +[98 0 R /XYZ 0 425.4000000000005 null] +endobj +105 0 obj +[98 0 R /XYZ 0 334.5600000000005 null] +endobj +106 0 obj +[98 0 R /XYZ 0 294.4800000000005 null] +endobj +107 0 obj +[98 0 R /XYZ 0 189.36000000000044 null] +endobj +108 0 obj +<< /Border [0 0 0] +/Dest (_loop) +/Subtype /Link +/Rect [463.65600000000006 100.2070000000004 488.7510000000001 114.4870000000004] +/Type /Annot +>> +endobj +109 0 obj +<< /Length 13379 +>> +stream +q +/DeviceRGB cs +0.200 0.200 0.200 scn +/DeviceRGB CS +0.200 0.200 0.200 SCN + +BT +48.24 740.816 Td /F2.0 13 Tf -<322e372e322e20526573706f6e736573> Tj +<322e31342e332e2050726f6475636573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +-0.500 Tc +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +56.88050000000001 714.1560000000001 Td +/F1.0 10.5 Tf + Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +0.000 Tc +0.694 0.129 0.275 scn +0.694 0.129 0.275 SCN + +BT +66.24000000000001 716.3400000000001 Td +/F4.0 10.5 Tf +<6170706c69636174696f6e2f6a736f6e> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 678.6960000000001 Td +/F2.0 18 Tf +<322e31352e20474554202f76322f6c6f6f702f676574416c6c4e616d6573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 644.4560000000002 Td +/F2.0 13 Tf +<322e31352e312e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 344.400 51.552 37.560 re +48.240 592.200 51.552 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 344.400 360.864 37.560 re +99.792 592.200 360.864 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 344.400 103.104 37.560 re +460.656 592.200 103.104 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 321.120 51.552 23.280 re +48.240 568.920 51.552 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 321.120 360.864 23.280 re +99.792 568.920 360.864 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 321.120 103.104 23.280 re +460.656 568.920 103.104 23.280 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 381.960 m -99.792 381.960 l +48.240 629.760 m +99.792 629.760 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 344.400 m -99.792 344.400 l +48.240 592.200 m +99.792 592.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 382.210 m -48.240 343.650 l +48.240 630.010 m +48.240 591.450 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 382.210 m -99.792 343.650 l +99.792 630.010 m +99.792 591.450 l S [ ] 0 d 1 w @@ -9057,14 +14678,14 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 366.2130000000005 Td +51.24000000000001 614.0130000000004 Td /F2.0 10.5 Tf <48545450> Tj ET BT -51.24000000000001 351.93300000000045 Td +51.24000000000001 599.7330000000003 Td /F2.0 10.5 Tf <436f6465> Tj ET @@ -9072,26 +14693,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 381.960 m -460.656 381.960 l +99.792 629.760 m +460.656 629.760 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -99.792 344.400 m -460.656 344.400 l +99.792 592.200 m +460.656 592.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 382.210 m -99.792 343.650 l +99.792 630.010 m +99.792 591.450 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 382.210 m -460.656 343.650 l +460.656 630.010 m +460.656 591.450 l S [ ] 0 d 1 w @@ -9099,7 +14720,7 @@ S 0.200 0.200 0.200 scn BT -102.792 366.2130000000005 Td +102.792 614.0130000000004 Td /F2.0 10.5 Tf <4465736372697074696f6e> Tj ET @@ -9107,26 +14728,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 381.960 m -563.760 381.960 l +460.656 629.760 m +563.760 629.760 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -460.656 344.400 m -563.760 344.400 l +460.656 592.200 m +563.760 592.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 382.210 m -460.656 343.650 l +460.656 630.010 m +460.656 591.450 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 382.210 m -563.760 343.650 l +563.760 630.010 m +563.760 591.450 l S [ ] 0 d 1 w @@ -9134,7 +14755,7 @@ S 0.200 0.200 0.200 scn BT -463.65600000000006 366.2130000000005 Td +463.65600000000006 614.0130000000004 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -9142,26 +14763,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 344.400 m -99.792 344.400 l +48.240 592.200 m +99.792 592.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 321.120 m -99.792 321.120 l +48.240 568.920 m +99.792 568.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 344.650 m -48.240 320.870 l +48.240 592.450 m +48.240 568.670 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 344.650 m -99.792 320.870 l +99.792 592.450 m +99.792 568.670 l S [ ] 0 d 1 w @@ -9169,7 +14790,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 328.1530000000005 Td +51.24000000000001 575.9530000000002 Td /F2.0 10.5 Tf <323030> Tj ET @@ -9177,26 +14798,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 344.400 m -460.656 344.400 l +99.792 592.200 m +460.656 592.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 321.120 m -460.656 321.120 l +99.792 568.920 m +460.656 568.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 344.650 m -99.792 320.870 l +99.792 592.450 m +99.792 568.670 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 344.650 m -460.656 320.870 l +460.656 592.450 m +460.656 568.670 l S [ ] 0 d 1 w @@ -9204,7 +14825,7 @@ S 0.200 0.200 0.200 scn BT -102.792 328.1530000000005 Td +102.792 575.9530000000002 Td /F1.0 10.5 Tf <4f75747075742074797065> Tj ET @@ -9212,91 +14833,46 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 344.400 m -563.760 344.400 l +460.656 592.200 m +563.760 592.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 321.120 m -563.760 321.120 l +460.656 568.920 m +563.760 568.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 344.650 m -460.656 320.870 l +460.656 592.450 m +460.656 568.670 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 344.650 m -563.760 320.870 l +563.760 592.450 m +563.760 568.670 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN - -BT -463.65600000000006 328.1530000000005 Td -/F1.0 10.5 Tf -<44696374696f6e617279> Tj -ET - -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -48.24000000000001 291.53600000000046 Td -/F2.0 13 Tf -<322e372e332e20436f6e73756d6573> Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn - --0.500 Tc -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN BT -56.88050000000001 264.87600000000043 Td +463.65600000000006 575.9530000000002 Td /F1.0 10.5 Tf - Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn - -0.000 Tc -0.694 0.129 0.275 scn -0.694 0.129 0.275 SCN - -BT -66.24000000000001 267.0600000000004 Td -/F4.0 10.5 Tf -<6170706c69636174696f6e2f6a736f6e> Tj +[<3c20737472696e67203e20617272> 20.01953125 <61> 20.01953125 <79>] TJ ET -0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24000000000001 235.25600000000043 Td +48.24000000000001 539.3360000000004 Td /F2.0 13 Tf -<322e372e342e2050726f6475636573> Tj +<322e31352e322e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -9307,7 +14883,7 @@ ET 0.200 0.200 0.200 SCN BT -56.88050000000001 208.5960000000004 Td +56.88050000000001 512.6760000000004 Td /F1.0 10.5 Tf Tj ET @@ -9320,7 +14896,7 @@ ET 0.694 0.129 0.275 SCN BT -66.24000000000001 210.7800000000004 Td +66.24000000000001 514.8600000000005 Td /F4.0 10.5 Tf <6170706c69636174696f6e2f6a736f6e> Tj ET @@ -9331,9 +14907,9 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 173.13600000000037 Td +48.24000000000001 477.21600000000046 Td /F2.0 18 Tf -<322e382e2044454c455445202f76322f64696374696f6e6172792f7b6e616d657d> Tj +<322e31362e20474554202f76322f6c6f6f702f6765747374617475732f7b6c6f6f704e616d657d> Tj ET 0.000 0.000 0.000 SCN @@ -9342,59 +14918,59 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 138.89600000000036 Td +48.24000000000001 442.9760000000004 Td /F2.0 13 Tf -[<322e382e312e20506172> 20.01953125 <616d6574657273>] TJ +[<322e31362e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 100.920 114.560 23.280 re +48.240 405.000 114.560 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 100.920 171.840 23.280 re +162.800 405.000 171.840 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 100.920 229.120 23.280 re +334.640 405.000 229.120 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 63.360 114.560 37.560 re +48.240 367.440 114.560 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 63.360 171.840 37.560 re +162.800 367.440 171.840 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 63.360 229.120 37.560 re +334.640 367.440 229.120 37.560 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 124.200 m -162.800 124.200 l +48.240 428.280 m +162.800 428.280 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 100.920 m -162.800 100.920 l +48.240 405.000 m +162.800 405.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 124.450 m -48.240 100.170 l +48.240 428.530 m +48.240 404.250 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 124.450 m -162.800 100.170 l +162.800 428.530 m +162.800 404.250 l S [ ] 0 d 1 w @@ -9402,7 +14978,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 108.45300000000036 Td +51.24000000000001 412.53300000000036 Td /F2.0 10.5 Tf <54797065> Tj ET @@ -9410,26 +14986,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 124.200 m -334.640 124.200 l +162.800 428.280 m +334.640 428.280 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -162.800 100.920 m -334.640 100.920 l +162.800 405.000 m +334.640 405.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 124.450 m -162.800 100.170 l +162.800 428.530 m +162.800 404.250 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 124.450 m -334.640 100.170 l +334.640 428.530 m +334.640 404.250 l S [ ] 0 d 1 w @@ -9437,7 +15013,7 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 108.45300000000036 Td +165.79988544000003 412.53300000000036 Td /F2.0 10.5 Tf <4e616d65> Tj ET @@ -9445,26 +15021,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 124.200 m -563.760 124.200 l +334.640 428.280 m +563.760 428.280 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -334.640 100.920 m -563.760 100.920 l +334.640 405.000 m +563.760 405.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 124.450 m -334.640 100.170 l +334.640 428.530 m +334.640 404.250 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 124.450 m -563.760 100.170 l +563.760 428.530 m +563.760 404.250 l S [ ] 0 d 1 w @@ -9472,7 +15048,7 @@ S 0.200 0.200 0.200 scn BT -337.6397136 108.45300000000036 Td +337.6397136 412.53300000000036 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -9480,26 +15056,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 100.920 m -162.800 100.920 l +48.240 405.000 m +162.800 405.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 63.360 m -162.800 63.360 l +48.240 367.440 m +162.800 367.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 101.170 m -48.240 63.110 l +48.240 405.250 m +48.240 367.190 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 101.170 m -162.800 63.110 l +162.800 405.250 m +162.800 367.190 l S [ ] 0 d 1 w @@ -9507,7 +15083,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 77.53300000000036 Td +51.24000000000001 381.61300000000034 Td /F2.0 10.5 Tf <50617468> Tj ET @@ -9515,26 +15091,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 100.920 m -334.640 100.920 l +162.800 405.000 m +334.640 405.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 63.360 m -334.640 63.360 l +162.800 367.440 m +334.640 367.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 101.170 m -162.800 63.110 l +162.800 405.250 m +162.800 367.190 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 101.170 m -334.640 63.110 l +334.640 405.250 m +334.640 367.190 l S [ ] 0 d 1 w @@ -9542,19 +15118,19 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 84.67300000000036 Td +165.79988544000003 388.7530000000003 Td /F2.0 10.5 Tf -<6e616d65> Tj +<6c6f6f704e616d65> Tj ET BT -165.79988544000003 70.39300000000036 Td +165.79988544000003 374.4730000000003 Td ET BT -165.79988544000003 70.39300000000036 Td +165.79988544000003 374.4730000000003 Td /F3.0 10.5 Tf <7265717569726564> Tj ET @@ -9562,26 +15138,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 100.920 m -563.760 100.920 l +334.640 405.000 m +563.760 405.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 63.360 m -563.760 63.360 l +334.640 367.440 m +563.760 367.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 101.170 m -334.640 63.110 l +334.640 405.250 m +334.640 367.190 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 101.170 m -563.760 63.110 l +563.760 405.250 m +563.760 367.190 l S [ ] 0 d 1 w @@ -9589,160 +15165,69 @@ S 0.200 0.200 0.200 scn BT -337.6397136 77.53300000000036 Td +337.6397136 381.61300000000034 Td /F1.0 10.5 Tf <737472696e67> Tj ET 0.000 0.000 0.000 scn -q -0.000 0.000 0.000 scn -0.000 0.000 0.000 SCN -1 w -0 J -0 j -[ ] 0 d -/Stamp1 Do -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -49.24 14.388 Td -/F1.0 9 Tf -<34> Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -Q -Q - -endstream -endobj -58 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 612.0 792.0] -/Contents 57 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 22 0 R -/F1.0 8 0 R -/F4.0 33 0 R -/F3.0 24 0 R ->> -/XObject << /Stamp1 588 0 R ->> ->> -/Annots [60 0 R 64 0 R 66 0 R] ->> -endobj -59 0 obj -[58 0 R /XYZ 0 792.0 null] -endobj -60 0 obj -<< /Border [0 0 0] -/Dest (_dictionary) -/Subtype /Link -/Rect [463.65600000000006 669.2470000000002 516.45 683.5270000000002] -/Type /Annot ->> -endobj -61 0 obj -[58 0 R /XYZ 0 653.2800000000002 null] -endobj -62 0 obj -[58 0 R /XYZ 0 597.0000000000003 null] -endobj -63 0 obj -[58 0 R /XYZ 0 556.9200000000004 null] -endobj -64 0 obj -<< /Border [0 0 0] -/Dest (_dictionary) -/Subtype /Link -/Rect [337.6397136 437.3470000000005 390.4337136 451.6270000000005] -/Type /Annot ->> -endobj -65 0 obj -[58 0 R /XYZ 0 414.2400000000005 null] -endobj -66 0 obj -<< /Border [0 0 0] -/Dest (_dictionary) -/Subtype /Link -/Rect [463.65600000000006 325.0870000000005 516.45 339.3670000000005] -/Type /Annot ->> -endobj -67 0 obj -[58 0 R /XYZ 0 309.12000000000046 null] -endobj -68 0 obj -[58 0 R /XYZ 0 252.84000000000043 null] -endobj -69 0 obj -[58 0 R /XYZ 0 196.5600000000004 null] -endobj -70 0 obj -[58 0 R /XYZ 0 156.4800000000004 null] -endobj -71 0 obj -<< /Length 15269 ->> -stream -q -/DeviceRGB cs 0.200 0.200 0.200 scn -/DeviceRGB CS 0.200 0.200 0.200 SCN BT -48.24 740.816 Td +48.24000000000001 337.85600000000034 Td /F2.0 13 Tf -<322e382e322e20526573706f6e736573> Tj +<322e31362e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 702.840 171.840 23.280 re +48.240 285.600 51.552 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +99.792 285.600 360.864 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +460.656 285.600 103.104 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -220.080 702.840 343.680 23.280 re +48.240 262.320 51.552 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 679.560 171.840 23.280 re +99.792 262.320 360.864 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -220.080 679.560 343.680 23.280 re +460.656 262.320 103.104 23.280 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 726.120 m -220.080 726.120 l +48.240 323.160 m +99.792 323.160 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 702.840 m -220.080 702.840 l +48.240 285.600 m +99.792 285.600 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 726.370 m -48.240 702.090 l +48.240 323.410 m +48.240 284.850 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -220.080 726.370 m -220.080 702.090 l +99.792 323.410 m +99.792 284.850 l S [ ] 0 d 1 w @@ -9750,34 +15235,41 @@ S 0.200 0.200 0.200 scn BT -51.24 710.373 Td +51.24000000000001 307.4130000000003 Td /F2.0 10.5 Tf -<4854545020436f6465> Tj +<48545450> Tj +ET + + +BT +51.24000000000001 293.13300000000027 Td +/F2.0 10.5 Tf +<436f6465> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -220.080 726.120 m -563.760 726.120 l +99.792 323.160 m +460.656 323.160 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -220.080 702.840 m -563.760 702.840 l +99.792 285.600 m +460.656 285.600 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -220.080 726.370 m -220.080 702.090 l +99.792 323.410 m +99.792 284.850 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 726.370 m -563.760 702.090 l +460.656 323.410 m +460.656 284.850 l S [ ] 0 d 1 w @@ -9785,7 +15277,42 @@ S 0.200 0.200 0.200 scn BT -223.07982816 710.373 Td +102.792 307.4130000000003 Td +/F2.0 10.5 Tf +<4465736372697074696f6e> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +460.656 323.160 m +563.760 323.160 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +460.656 285.600 m +563.760 285.600 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 323.410 m +460.656 284.850 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 323.410 m +563.760 284.850 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +463.65600000000006 307.4130000000003 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -9793,26 +15320,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 702.840 m -220.080 702.840 l +48.240 285.600 m +99.792 285.600 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 679.560 m -220.080 679.560 l +48.240 262.320 m +99.792 262.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 703.090 m -48.240 679.310 l +48.240 285.850 m +48.240 262.070 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -220.080 703.090 m -220.080 679.310 l +99.792 285.850 m +99.792 262.070 l S [ ] 0 d 1 w @@ -9820,7 +15347,7 @@ S 0.200 0.200 0.200 scn BT -51.24 686.5930000000001 Td +51.24000000000001 269.3530000000003 Td /F2.0 10.5 Tf <323030> Tj ET @@ -9828,26 +15355,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -220.080 702.840 m -563.760 702.840 l +99.792 285.600 m +460.656 285.600 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -220.080 679.560 m -563.760 679.560 l +99.792 262.320 m +460.656 262.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -220.080 703.090 m -220.080 679.310 l +99.792 285.850 m +99.792 262.070 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 703.090 m -563.760 679.310 l +460.656 285.850 m +460.656 262.070 l S [ ] 0 d 1 w @@ -9855,19 +15382,62 @@ S 0.200 0.200 0.200 scn BT -223.07982816 686.5930000000001 Td +102.792 269.3530000000003 Td /F1.0 10.5 Tf -<4e6f20436f6e74656e74> Tj +<4f75747075742074797065> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +460.656 285.600 m +563.760 285.600 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 262.320 m +563.760 262.320 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 285.850 m +460.656 262.070 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 285.850 m +563.760 262.070 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN + +BT +463.65600000000006 269.3530000000003 Td +/F1.0 10.5 Tf +<4c6f6f70> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24 649.9760000000002 Td +48.24000000000001 232.73600000000027 Td /F2.0 13 Tf -<322e382e332e2050726f6475636573> Tj +<322e31362e332e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -9878,7 +15448,7 @@ ET 0.200 0.200 0.200 SCN BT -56.88050000000001 623.3160000000003 Td +56.88050000000001 206.07600000000025 Td /F1.0 10.5 Tf Tj ET @@ -9891,7 +15461,7 @@ ET 0.694 0.129 0.275 SCN BT -66.24000000000001 625.5000000000003 Td +66.24000000000001 208.26000000000025 Td /F4.0 10.5 Tf <6170706c69636174696f6e2f6a736f6e> Tj ET @@ -9902,9 +15472,9 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 587.8560000000003 Td +48.24000000000001 170.6160000000002 Td /F2.0 18 Tf -<322e392e2044454c455445> Tj +<322e31372e20505554> Tj ET 0.000 0.000 0.000 SCN @@ -9913,9 +15483,9 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 559.7760000000004 Td +48.24000000000001 142.53600000000023 Td /F2.0 18 Tf -<2f76322f64696374696f6e6172792f7b6e616d657d2f656c656d656e74732f7b73686f72744e616d657d> Tj +<2f76322f6c6f6f702f726566726573684f70506f6c6963794a736f6e536368656d612f7b6c6f6f704e616d657d> Tj ET 0.000 0.000 0.000 SCN @@ -9924,71 +15494,150 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 525.5360000000005 Td +48.24000000000001 108.29600000000022 Td /F2.0 13 Tf -[<322e392e312e20506172> 20.01953125 <616d6574657273>] TJ +[<322e31372e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 487.560 114.560 23.280 re -f +q 0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -162.800 487.560 171.840 23.280 re -f +0.000 0.000 0.000 SCN +1 w +0 J +0 j +[ ] 0 d +/Stamp1 Do +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +49.24 14.388 Td +/F1.0 9 Tf +<38> Tj +ET + +0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn +Q +Q + +endstream +endobj +110 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 612.0 792.0] +/Contents 109 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F2.0 24 0 R +/F1.0 8 0 R +/F4.0 35 0 R +/F3.0 26 0 R +>> +/XObject << /Stamp1 684 0 R +>> +>> +/Annots [119 0 R] +>> +endobj +111 0 obj +[110 0 R /XYZ 0 792.0 null] +endobj +112 0 obj +[110 0 R /XYZ 0 702.1200000000001 null] +endobj +113 0 obj +[110 0 R /XYZ 0 662.0400000000002 null] +endobj +114 0 obj +[110 0 R /XYZ 0 556.9200000000003 null] +endobj +115 0 obj +[110 0 R /XYZ 0 500.64000000000044 null] +endobj +116 0 obj +[110 0 R /XYZ 0 460.5600000000004 null] +endobj +117 0 obj +[110 0 R /XYZ 0 355.44000000000034 null] +endobj +118 0 obj +<< /Limits [(_responses_5) (_route21)] +/Names [(_responses_5) 52 0 R (_responses_6) 59 0 R (_responses_7) 65 0 R (_responses_8) 71 0 R (_responses_9) 79 0 R (_route10) 158 0 R (_route11) 140 0 R (_route12) 135 0 R (_route13) 145 0 R (_route14) 102 0 R (_route15) 115 0 R (_route16) 88 0 R (_route17) 128 0 R (_route18) 94 0 R (_route2) 112 0 R (_route21) 43 0 R] +>> +endobj +119 0 obj +<< /Border [0 0 0] +/Dest (_loop) +/Subtype /Link +/Rect [463.65600000000006 266.2870000000003 488.7510000000001 280.5670000000003] +/Type /Annot +>> +endobj +120 0 obj +[110 0 R /XYZ 0 250.32000000000028 null] +endobj +121 0 obj +[110 0 R /XYZ 0 194.04000000000025 null] +endobj +122 0 obj +[110 0 R /XYZ 0 125.88000000000022 null] +endobj +123 0 obj +<< /Length 19121 +>> +stream +q +/DeviceRGB cs 1.000 1.000 1.000 scn -334.640 487.560 229.120 23.280 re +48.240 732.720 114.560 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 450.000 114.560 37.560 re +162.800 732.720 171.840 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 450.000 171.840 37.560 re +334.640 732.720 229.120 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 450.000 229.120 37.560 re +48.240 695.160 114.560 37.560 re f 0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 412.440 114.560 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -162.800 412.440 171.840 37.560 re +1.000 1.000 1.000 scn +162.800 695.160 171.840 37.560 re f 0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -334.640 412.440 229.120 37.560 re +1.000 1.000 1.000 scn +334.640 695.160 229.120 37.560 re f 0.000 0.000 0.000 scn 0.5 w +/DeviceRGB CS 0.867 0.867 0.867 SCN -48.240 510.840 m -162.800 510.840 l +48.240 756.000 m +162.800 756.000 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 487.560 m -162.800 487.560 l +48.240 732.720 m +162.800 732.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 511.090 m -48.240 486.810 l +48.240 756.250 m +48.240 731.970 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 511.090 m -162.800 486.810 l +162.800 756.250 m +162.800 731.970 l S [ ] 0 d 1 w @@ -9996,7 +15645,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 495.0930000000006 Td +51.24 740.2529999999999 Td /F2.0 10.5 Tf <54797065> Tj ET @@ -10004,26 +15653,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 510.840 m -334.640 510.840 l +162.800 756.000 m +334.640 756.000 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -162.800 487.560 m -334.640 487.560 l +162.800 732.720 m +334.640 732.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 511.090 m -162.800 486.810 l +162.800 756.250 m +162.800 731.970 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 511.090 m -334.640 486.810 l +334.640 756.250 m +334.640 731.970 l S [ ] 0 d 1 w @@ -10031,7 +15680,7 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 495.0930000000006 Td +165.79988544 740.2529999999999 Td /F2.0 10.5 Tf <4e616d65> Tj ET @@ -10039,26 +15688,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 510.840 m -563.760 510.840 l +334.640 756.000 m +563.760 756.000 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -334.640 487.560 m -563.760 487.560 l +334.640 732.720 m +563.760 732.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 511.090 m -334.640 486.810 l +334.640 756.250 m +334.640 731.970 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 511.090 m -563.760 486.810 l +563.760 756.250 m +563.760 731.970 l S [ ] 0 d 1 w @@ -10066,7 +15715,7 @@ S 0.200 0.200 0.200 scn BT -337.6397136 495.0930000000006 Td +337.6397136 740.2529999999999 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -10074,26 +15723,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 487.560 m -162.800 487.560 l +48.240 732.720 m +162.800 732.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 450.000 m -162.800 450.000 l +48.240 695.160 m +162.800 695.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 487.810 m -48.240 449.750 l +48.240 732.970 m +48.240 694.910 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 487.810 m -162.800 449.750 l +162.800 732.970 m +162.800 694.910 l S [ ] 0 d 1 w @@ -10101,7 +15750,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 464.1730000000006 Td +51.24 709.333 Td /F2.0 10.5 Tf <50617468> Tj ET @@ -10109,26 +15758,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 487.560 m -334.640 487.560 l +162.800 732.720 m +334.640 732.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 450.000 m -334.640 450.000 l +162.800 695.160 m +334.640 695.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 487.810 m -162.800 449.750 l +162.800 732.970 m +162.800 694.910 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 487.810 m -334.640 449.750 l +334.640 732.970 m +334.640 694.910 l S [ ] 0 d 1 w @@ -10136,19 +15785,19 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 471.3130000000006 Td +165.79988544 716.473 Td /F2.0 10.5 Tf -<6e616d65> Tj +<6c6f6f704e616d65> Tj ET BT -165.79988544000003 457.0330000000006 Td +165.79988544 702.193 Td ET BT -165.79988544000003 457.0330000000006 Td +165.79988544 702.193 Td /F3.0 10.5 Tf <7265717569726564> Tj ET @@ -10156,26 +15805,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 487.560 m -563.760 487.560 l +334.640 732.720 m +563.760 732.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 450.000 m -563.760 450.000 l +334.640 695.160 m +563.760 695.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 487.810 m -334.640 449.750 l +334.640 732.970 m +334.640 694.910 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 487.810 m -563.760 449.750 l +563.760 732.970 m +563.760 694.910 l S [ ] 0 d 1 w @@ -10183,69 +15832,69 @@ S 0.200 0.200 0.200 scn BT -337.6397136 464.1730000000006 Td +337.6397136 709.333 Td /F1.0 10.5 Tf <737472696e67> Tj ET 0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -48.240 450.000 m -162.800 450.000 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -48.240 412.440 m -162.800 412.440 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -48.240 450.250 m -48.240 412.190 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -162.800 450.250 m -162.800 412.190 l -S -[ ] 0 d -1 w -0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN BT -51.24000000000001 426.61300000000057 Td -/F2.0 10.5 Tf -<50617468> Tj +48.24 665.5760000000001 Td +/F2.0 13 Tf +<322e31372e322e20526573706f6e736573> Tj ET +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 613.320 51.552 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +99.792 613.320 360.864 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +460.656 613.320 103.104 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 590.040 51.552 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +99.792 590.040 360.864 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +460.656 590.040 103.104 23.280 re +f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 450.000 m -334.640 450.000 l +48.240 650.880 m +99.792 650.880 l S [ ] 0 d -0.5 w +1.5 w 0.867 0.867 0.867 SCN -162.800 412.440 m -334.640 412.440 l +48.240 613.320 m +99.792 613.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 450.250 m -162.800 412.190 l +48.240 651.130 m +48.240 612.570 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 450.250 m -334.640 412.190 l +99.792 651.130 m +99.792 612.570 l S [ ] 0 d 1 w @@ -10253,46 +15902,41 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 433.75300000000055 Td +51.24 635.1330000000003 Td /F2.0 10.5 Tf -<73686f72744e616d65> Tj -ET - - -BT -165.79988544000003 419.4730000000005 Td +<48545450> Tj ET BT -165.79988544000003 419.4730000000005 Td -/F3.0 10.5 Tf -<7265717569726564> Tj +51.24 620.8530000000002 Td +/F2.0 10.5 Tf +<436f6465> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 450.000 m -563.760 450.000 l +99.792 650.880 m +460.656 650.880 l S [ ] 0 d -0.5 w +1.5 w 0.867 0.867 0.867 SCN -334.640 412.440 m -563.760 412.440 l +99.792 613.320 m +460.656 613.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 450.250 m -334.640 412.190 l +99.792 651.130 m +99.792 612.570 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 450.250 m -563.760 412.190 l +460.656 651.130 m +460.656 612.570 l S [ ] 0 d 1 w @@ -10300,61 +15944,34 @@ S 0.200 0.200 0.200 scn BT -337.6397136 426.61300000000057 Td -/F1.0 10.5 Tf -<737472696e67> Tj -ET - -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -48.24000000000001 382.85600000000056 Td -/F2.0 13 Tf -<322e392e322e20526573706f6e736573> Tj +102.792 635.1330000000003 Td +/F2.0 10.5 Tf +<4465736372697074696f6e> Tj ET -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 344.880 171.840 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -220.080 344.880 343.680 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 321.600 171.840 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -220.080 321.600 343.680 23.280 re -f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 368.160 m -220.080 368.160 l +460.656 650.880 m +563.760 650.880 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 344.880 m -220.080 344.880 l +460.656 613.320 m +563.760 613.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 368.410 m -48.240 344.130 l +460.656 651.130 m +460.656 612.570 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -220.080 368.410 m -220.080 344.130 l +563.760 651.130 m +563.760 612.570 l S [ ] 0 d 1 w @@ -10362,34 +15979,34 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 352.4130000000005 Td +463.65600000000006 635.1330000000003 Td /F2.0 10.5 Tf -<4854545020436f6465> Tj +<536368656d61> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -220.080 368.160 m -563.760 368.160 l +48.240 613.320 m +99.792 613.320 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -220.080 344.880 m -563.760 344.880 l +48.240 590.040 m +99.792 590.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -220.080 368.410 m -220.080 344.130 l +48.240 613.570 m +48.240 589.790 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 368.410 m -563.760 344.130 l +99.792 613.570 m +99.792 589.790 l S [ ] 0 d 1 w @@ -10397,34 +16014,34 @@ S 0.200 0.200 0.200 scn BT -223.07982816 352.4130000000005 Td +51.24 597.0730000000001 Td /F2.0 10.5 Tf -<536368656d61> Tj +<323030> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 344.880 m -220.080 344.880 l +99.792 613.320 m +460.656 613.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 321.600 m -220.080 321.600 l +99.792 590.040 m +460.656 590.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 345.130 m -48.240 321.350 l +99.792 613.570 m +99.792 589.790 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -220.080 345.130 m -220.080 321.350 l +460.656 613.570 m +460.656 589.790 l S [ ] 0 d 1 w @@ -10432,54 +16049,62 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 328.63300000000055 Td -/F2.0 10.5 Tf -<323030> Tj +102.792 597.0730000000001 Td +/F1.0 10.5 Tf +<4f75747075742074797065> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -220.080 344.880 m -563.760 344.880 l +460.656 613.320 m +563.760 613.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -220.080 321.600 m -563.760 321.600 l +460.656 590.040 m +563.760 590.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -220.080 345.130 m -220.080 321.350 l +460.656 613.570 m +460.656 589.790 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 345.130 m -563.760 321.350 l +563.760 613.570 m +563.760 589.790 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT -223.07982816 328.63300000000055 Td +463.65600000000006 597.0730000000001 Td /F1.0 10.5 Tf -<4e6f20436f6e74656e74> Tj +<4c6f6f70> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24000000000001 292.0160000000006 Td +48.24 560.4560000000002 Td /F2.0 13 Tf -<322e392e332e2050726f6475636573> Tj +<322e31372e332e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -10490,7 +16115,7 @@ ET 0.200 0.200 0.200 SCN BT -56.88050000000001 265.35600000000056 Td +56.88050000000001 533.7960000000003 Td /F1.0 10.5 Tf Tj ET @@ -10503,7 +16128,7 @@ ET 0.694 0.129 0.275 SCN BT -66.24000000000001 267.54000000000053 Td +66.24000000000001 535.9800000000004 Td /F4.0 10.5 Tf <6170706c69636174696f6e2f6a736f6e> Tj ET @@ -10514,9 +16139,9 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 229.89600000000056 Td +48.24000000000001 498.3360000000004 Td /F2.0 18 Tf -<322e31302e20505554202f76322f6c6f6f702f64656c6574652f7b6c6f6f704e616d657d> Tj +<322e31382e20505554> Tj ET 0.000 0.000 0.000 SCN @@ -10525,59 +16150,105 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 195.65600000000052 Td +48.24000000000001 470.2560000000004 Td +/F2.0 18 Tf +[<2f76322f6c6f6f702f72656d6f76654f706572> 20.01953125 <6174696f6e61506f6c6963792f7b6c6f6f704e616d657d2f706f6c6963794d6f>] TJ +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 442.1760000000004 Td +/F2.0 18 Tf +[<64656c2f7b706f6c696379547970657d2f7b706f6c69637956> 60.05859375 <657273696f6e7d>] TJ +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 407.9360000000004 Td /F2.0 13 Tf -[<322e31302e312e20506172> 20.01953125 <616d6574657273>] TJ +[<322e31382e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 157.680 114.560 23.280 re +48.240 369.960 114.560 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 157.680 171.840 23.280 re +162.800 369.960 171.840 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 157.680 229.120 23.280 re +334.640 369.960 229.120 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 120.120 114.560 37.560 re +48.240 332.400 114.560 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 120.120 171.840 37.560 re +162.800 332.400 171.840 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 120.120 229.120 37.560 re +334.640 332.400 229.120 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 294.840 114.560 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +162.800 294.840 171.840 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +334.640 294.840 229.120 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 257.280 114.560 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +162.800 257.280 171.840 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +334.640 257.280 229.120 37.560 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 180.960 m -162.800 180.960 l +48.240 393.240 m +162.800 393.240 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 157.680 m -162.800 157.680 l +48.240 369.960 m +162.800 369.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 181.210 m -48.240 156.930 l +48.240 393.490 m +48.240 369.210 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 181.210 m -162.800 156.930 l +162.800 393.490 m +162.800 369.210 l S [ ] 0 d 1 w @@ -10585,7 +16256,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 165.21300000000053 Td +51.24000000000001 377.49300000000034 Td /F2.0 10.5 Tf <54797065> Tj ET @@ -10593,26 +16264,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 180.960 m -334.640 180.960 l +162.800 393.240 m +334.640 393.240 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -162.800 157.680 m -334.640 157.680 l +162.800 369.960 m +334.640 369.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 181.210 m -162.800 156.930 l +162.800 393.490 m +162.800 369.210 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 181.210 m -334.640 156.930 l +334.640 393.490 m +334.640 369.210 l S [ ] 0 d 1 w @@ -10620,7 +16291,7 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 165.21300000000053 Td +165.79988544000003 377.49300000000034 Td /F2.0 10.5 Tf <4e616d65> Tj ET @@ -10628,26 +16299,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 180.960 m -563.760 180.960 l +334.640 393.240 m +563.760 393.240 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -334.640 157.680 m -563.760 157.680 l +334.640 369.960 m +563.760 369.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 181.210 m -334.640 156.930 l +334.640 393.490 m +334.640 369.210 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 181.210 m -563.760 156.930 l +563.760 393.490 m +563.760 369.210 l S [ ] 0 d 1 w @@ -10655,7 +16326,7 @@ S 0.200 0.200 0.200 scn BT -337.6397136 165.21300000000053 Td +337.6397136 377.49300000000034 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -10663,26 +16334,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 157.680 m -162.800 157.680 l +48.240 369.960 m +162.800 369.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 120.120 m -162.800 120.120 l +48.240 332.400 m +162.800 332.400 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 157.930 m -48.240 119.870 l +48.240 370.210 m +48.240 332.150 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 157.930 m -162.800 119.870 l +162.800 370.210 m +162.800 332.150 l S [ ] 0 d 1 w @@ -10690,7 +16361,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 134.29300000000052 Td +51.24000000000001 346.5730000000004 Td /F2.0 10.5 Tf <50617468> Tj ET @@ -10698,26 +16369,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 157.680 m -334.640 157.680 l +162.800 369.960 m +334.640 369.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 120.120 m -334.640 120.120 l +162.800 332.400 m +334.640 332.400 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 157.930 m -162.800 119.870 l +162.800 370.210 m +162.800 332.150 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 157.930 m -334.640 119.870 l +334.640 370.210 m +334.640 332.150 l S [ ] 0 d 1 w @@ -10725,19 +16396,19 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 141.43300000000053 Td +165.79988544000003 353.71300000000036 Td /F2.0 10.5 Tf <6c6f6f704e616d65> Tj ET BT -165.79988544000003 127.15300000000053 Td +165.79988544000003 339.43300000000033 Td ET BT -165.79988544000003 127.15300000000053 Td +165.79988544000003 339.43300000000033 Td /F3.0 10.5 Tf <7265717569726564> Tj ET @@ -10745,26 +16416,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 157.680 m -563.760 157.680 l +334.640 369.960 m +563.760 369.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 120.120 m -563.760 120.120 l +334.640 332.400 m +563.760 332.400 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 157.930 m -334.640 119.870 l +334.640 370.210 m +334.640 332.150 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 157.930 m -563.760 119.870 l +563.760 370.210 m +563.760 332.150 l S [ ] 0 d 1 w @@ -10772,140 +16443,116 @@ S 0.200 0.200 0.200 scn BT -337.6397136 134.29300000000052 Td +337.6397136 346.5730000000004 Td /F1.0 10.5 Tf <737472696e67> Tj ET 0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 332.400 m +162.800 332.400 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 294.840 m +162.800 294.840 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 332.650 m +48.240 294.590 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 332.650 m +162.800 294.590 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN BT -48.24000000000001 90.53600000000051 Td -/F2.0 13 Tf -<322e31302e322e20526573706f6e736573> Tj +51.24000000000001 309.0130000000003 Td +/F2.0 10.5 Tf +<50617468> Tj ET -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -q 0.000 0.000 0.000 scn -0.000 0.000 0.000 SCN -1 w -0 J -0 j +0.5 w +0.867 0.867 0.867 SCN +162.800 332.400 m +334.640 332.400 l +S [ ] 0 d -/Stamp1 Do +0.5 w +0.867 0.867 0.867 SCN +162.800 294.840 m +334.640 294.840 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 332.650 m +162.800 294.590 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 332.650 m +334.640 294.590 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN BT -557.7289999999999 14.388 Td -/F1.0 9 Tf -<35> Tj +165.79988544000003 316.1530000000003 Td +/F2.0 10.5 Tf +<706f6c69637954797065> Tj ET -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -Q -Q -endstream -endobj -72 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 612.0 792.0] -/Contents 71 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 22 0 R -/F1.0 8 0 R -/F4.0 33 0 R -/F3.0 24 0 R ->> -/XObject << /Stamp1 588 0 R ->> ->> ->> -endobj -73 0 obj -[72 0 R /XYZ 0 792.0 null] -endobj -74 0 obj -[72 0 R /XYZ 0 667.5600000000002 null] -endobj -75 0 obj -[72 0 R /XYZ 0 611.2800000000003 null] -endobj -76 0 obj -[72 0 R /XYZ 0 543.1200000000005 null] -endobj -77 0 obj -[72 0 R /XYZ 0 400.44000000000057 null] -endobj -78 0 obj -[72 0 R /XYZ 0 309.6000000000006 null] -endobj -79 0 obj -[72 0 R /XYZ 0 253.32000000000056 null] -endobj -80 0 obj -[72 0 R /XYZ 0 213.24000000000055 null] -endobj -81 0 obj -[72 0 R /XYZ 0 108.12000000000052 null] -endobj -82 0 obj -<< /Limits [(_route46) (_version_information)] -/Names [(_route46) 94 0 R (_route49) 37 0 R (_route51) 41 0 R (_route53) 69 0 R (_route56) 169 0 R (_route57) 184 0 R (_route60) 193 0 R (_route61) 29 0 R (_route62) 34 0 R (_service) 303 0 R (_uri_scheme) 25 0 R (_v2_dictionary_dictionaryname_get) 55 0 R (_v2_dictionary_name_elements_shortname_delete) 75 0 R (_v2_dictionary_name_put) 62 0 R (_v2_dictionary_secondary_names_get) 50 0 R (_v2_policytoscamodels_policymodeltype_get) 179 0 R (_v2_policytoscamodels_yaml_policymodeltype_get) 173 0 R (_v2_templates_names_get) 198 0 R (_v2_templates_templatename_get) 201 0 R (_version_information) 23 0 R] ->> -endobj -83 0 obj -<< /Length 17813 ->> -stream -q -/DeviceRGB cs -1.000 1.000 1.000 scn -48.240 732.720 171.840 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -220.080 732.720 343.680 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 709.440 171.840 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -220.080 709.440 343.680 23.280 re -f +BT +165.79988544000003 301.8730000000003 Td +ET + + +BT +165.79988544000003 301.8730000000003 Td +/F3.0 10.5 Tf +<7265717569726564> Tj +ET + 0.000 0.000 0.000 scn 0.5 w -/DeviceRGB CS 0.867 0.867 0.867 SCN -48.240 756.000 m -220.080 756.000 l +334.640 332.400 m +563.760 332.400 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -48.240 732.720 m -220.080 732.720 l +334.640 294.840 m +563.760 294.840 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 756.250 m -48.240 731.970 l +334.640 332.650 m +334.640 294.590 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -220.080 756.250 m -220.080 731.970 l +563.760 332.650 m +563.760 294.590 l S [ ] 0 d 1 w @@ -10913,34 +16560,34 @@ S 0.200 0.200 0.200 scn BT -51.24 740.2529999999999 Td -/F2.0 10.5 Tf -<4854545020436f6465> Tj +337.6397136 309.0130000000003 Td +/F1.0 10.5 Tf +<737472696e67> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -220.080 756.000 m -563.760 756.000 l +48.240 294.840 m +162.800 294.840 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -220.080 732.720 m -563.760 732.720 l +48.240 257.280 m +162.800 257.280 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -220.080 756.250 m -220.080 731.970 l +48.240 295.090 m +48.240 257.030 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 756.250 m -563.760 731.970 l +162.800 295.090 m +162.800 257.030 l S [ ] 0 d 1 w @@ -10948,34 +16595,34 @@ S 0.200 0.200 0.200 scn BT -223.07982816 740.2529999999999 Td +51.24000000000001 271.4530000000004 Td /F2.0 10.5 Tf -<536368656d61> Tj +<50617468> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 732.720 m -220.080 732.720 l +162.800 294.840 m +334.640 294.840 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 709.440 m -220.080 709.440 l +162.800 257.280 m +334.640 257.280 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 732.970 m -48.240 709.190 l +162.800 295.090 m +162.800 257.030 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -220.080 732.970 m -220.080 709.190 l +334.640 295.090 m +334.640 257.030 l S [ ] 0 d 1 w @@ -10983,34 +16630,46 @@ S 0.200 0.200 0.200 scn BT -51.24 716.473 Td +165.79988544000003 278.59300000000036 Td /F2.0 10.5 Tf -<323030> Tj +[<706f6c69637956> 60.05859375 <657273696f6e>] TJ +ET + + +BT +165.79988544000003 264.31300000000033 Td +ET + + +BT +165.79988544000003 264.31300000000033 Td +/F3.0 10.5 Tf +<7265717569726564> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -220.080 732.720 m -563.760 732.720 l +334.640 294.840 m +563.760 294.840 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -220.080 709.440 m -563.760 709.440 l +334.640 257.280 m +563.760 257.280 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -220.080 732.970 m -220.080 709.190 l +334.640 295.090 m +334.640 257.030 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 732.970 m -563.760 709.190 l +563.760 295.090 m +563.760 257.030 l S [ ] 0 d 1 w @@ -11018,80 +16677,69 @@ S 0.200 0.200 0.200 scn BT -223.07982816 716.473 Td +337.6397136 271.4530000000004 Td /F1.0 10.5 Tf -<4e6f20436f6e74656e74> Tj -ET - -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -48.24 674.0160000000001 Td -/F2.0 18 Tf -[<322e31312e20505554202f76322f6c6f6f702f6465706c6f> 20.01953125 <792f7b6c6f6f704e616d657d>] TJ +<737472696e67> Tj ET -0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24 639.7760000000002 Td +48.24000000000001 227.69600000000037 Td /F2.0 13 Tf -[<322e31312e312e20506172> 20.01953125 <616d6574657273>] TJ +<322e31382e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 601.800 114.560 23.280 re +48.240 175.440 51.552 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 601.800 171.840 23.280 re +99.792 175.440 360.864 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 601.800 229.120 23.280 re +460.656 175.440 103.104 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 564.240 114.560 37.560 re +48.240 152.160 51.552 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 564.240 171.840 37.560 re +99.792 152.160 360.864 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 564.240 229.120 37.560 re +460.656 152.160 103.104 23.280 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 625.080 m -162.800 625.080 l +48.240 213.000 m +99.792 213.000 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 601.800 m -162.800 601.800 l +48.240 175.440 m +99.792 175.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 625.330 m -48.240 601.050 l +48.240 213.250 m +48.240 174.690 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 625.330 m -162.800 601.050 l +99.792 213.250 m +99.792 174.690 l S [ ] 0 d 1 w @@ -11099,34 +16747,41 @@ S 0.200 0.200 0.200 scn BT -51.24 609.3330000000002 Td +51.24000000000001 197.25300000000036 Td /F2.0 10.5 Tf -<54797065> Tj +<48545450> Tj +ET + + +BT +51.24000000000001 182.97300000000035 Td +/F2.0 10.5 Tf +<436f6465> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 625.080 m -334.640 625.080 l +99.792 213.000 m +460.656 213.000 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -162.800 601.800 m -334.640 601.800 l +99.792 175.440 m +460.656 175.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 625.330 m -162.800 601.050 l +99.792 213.250 m +99.792 174.690 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 625.330 m -334.640 601.050 l +460.656 213.250 m +460.656 174.690 l S [ ] 0 d 1 w @@ -11134,34 +16789,34 @@ S 0.200 0.200 0.200 scn BT -165.79988544 609.3330000000002 Td +102.792 197.25300000000036 Td /F2.0 10.5 Tf -<4e616d65> Tj +<4465736372697074696f6e> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 625.080 m -563.760 625.080 l +460.656 213.000 m +563.760 213.000 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -334.640 601.800 m -563.760 601.800 l +460.656 175.440 m +563.760 175.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 625.330 m -334.640 601.050 l +460.656 213.250 m +460.656 174.690 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 625.330 m -563.760 601.050 l +563.760 213.250 m +563.760 174.690 l S [ ] 0 d 1 w @@ -11169,7 +16824,7 @@ S 0.200 0.200 0.200 scn BT -337.6397136 609.3330000000002 Td +463.65600000000006 197.25300000000036 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -11177,26 +16832,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 601.800 m -162.800 601.800 l +48.240 175.440 m +99.792 175.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 564.240 m -162.800 564.240 l +48.240 152.160 m +99.792 152.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 602.050 m -48.240 563.990 l +48.240 175.690 m +48.240 151.910 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 602.050 m -162.800 563.990 l +99.792 175.690 m +99.792 151.910 l S [ ] 0 d 1 w @@ -11204,34 +16859,34 @@ S 0.200 0.200 0.200 scn BT -51.24 578.4130000000002 Td +51.24000000000001 159.19300000000035 Td /F2.0 10.5 Tf -<50617468> Tj +<323030> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 601.800 m -334.640 601.800 l +99.792 175.440 m +460.656 175.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 564.240 m -334.640 564.240 l +99.792 152.160 m +460.656 152.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 602.050 m -162.800 563.990 l +99.792 175.690 m +99.792 151.910 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 602.050 m -334.640 563.990 l +460.656 175.690 m +460.656 151.910 l S [ ] 0 d 1 w @@ -11239,116 +16894,242 @@ S 0.200 0.200 0.200 scn BT -165.79988544 585.5530000000003 Td -/F2.0 10.5 Tf -<6c6f6f704e616d65> Tj -ET - - -BT -165.79988544 571.2730000000003 Td -ET - - -BT -165.79988544 571.2730000000003 Td -/F3.0 10.5 Tf -<7265717569726564> Tj +102.792 159.19300000000035 Td +/F1.0 10.5 Tf +<4f75747075742074797065> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 601.800 m -563.760 601.800 l +460.656 175.440 m +563.760 175.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 564.240 m -563.760 564.240 l +460.656 152.160 m +563.760 152.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 602.050 m -334.640 563.990 l +460.656 175.690 m +460.656 151.910 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 602.050 m -563.760 563.990 l +563.760 175.690 m +563.760 151.910 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT -337.6397136 578.4130000000002 Td +463.65600000000006 159.19300000000035 Td /F1.0 10.5 Tf -<737472696e67> Tj +<4c6f6f70> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24 534.6560000000003 Td +48.24000000000001 122.57600000000032 Td /F2.0 13 Tf -<322e31312e322e20526573706f6e736573> Tj +<322e31382e332e2050726f6475636573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +-0.500 Tc +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +56.88050000000001 95.91600000000031 Td +/F1.0 10.5 Tf + Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +0.000 Tc +0.694 0.129 0.275 scn +0.694 0.129 0.275 SCN + +BT +66.24000000000001 98.1000000000003 Td +/F4.0 10.5 Tf +<6170706c69636174696f6e2f6a736f6e> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +q +0.000 0.000 0.000 scn +0.000 0.000 0.000 SCN +1 w +0 J +0 j +[ ] 0 d +/Stamp1 Do +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +557.7289999999999 14.388 Td +/F1.0 9 Tf +<39> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +Q +Q + +endstream +endobj +124 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 612.0 792.0] +/Contents 123 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F2.0 24 0 R +/F3.0 26 0 R +/F1.0 8 0 R +/F4.0 35 0 R +>> +/XObject << /Stamp1 684 0 R +>> +>> +/Annots [126 0 R 131 0 R] +>> +endobj +125 0 obj +[124 0 R /XYZ 0 683.1600000000001 null] +endobj +126 0 obj +<< /Border [0 0 0] +/Dest (_loop) +/Subtype /Link +/Rect [463.65600000000006 594.0070000000002 488.7510000000001 608.2870000000001] +/Type /Annot +>> +endobj +127 0 obj +[124 0 R /XYZ 0 578.0400000000002 null] +endobj +128 0 obj +[124 0 R /XYZ 0 521.7600000000003 null] +endobj +129 0 obj +[124 0 R /XYZ 0 425.5200000000004 null] +endobj +130 0 obj +[124 0 R /XYZ 0 245.28000000000037 null] +endobj +131 0 obj +<< /Border [0 0 0] +/Dest (_loop) +/Subtype /Link +/Rect [463.65600000000006 156.12700000000035 488.7510000000001 170.40700000000035] +/Type /Annot +>> +endobj +132 0 obj +[124 0 R /XYZ 0 140.16000000000034 null] +endobj +133 0 obj +<< /Length 16107 +>> +stream +q +/DeviceRGB cs +0.200 0.200 0.200 scn +/DeviceRGB CS +0.200 0.200 0.200 SCN + +BT +48.24 734.976 Td +/F2.0 18 Tf +<322e31392e20505554202f76322f6c6f6f702f726573746172742f7b6c6f6f704e616d657d> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24 700.7360000000001 Td +/F2.0 13 Tf +[<322e31392e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 482.400 51.552 37.560 re +48.240 662.760 114.560 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 482.400 360.864 37.560 re +162.800 662.760 171.840 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 482.400 103.104 37.560 re +334.640 662.760 229.120 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 459.120 51.552 23.280 re +48.240 625.200 114.560 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 459.120 360.864 23.280 re +162.800 625.200 171.840 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 459.120 103.104 23.280 re +334.640 625.200 229.120 37.560 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 519.960 m -99.792 519.960 l +48.240 686.040 m +162.800 686.040 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 482.400 m -99.792 482.400 l +48.240 662.760 m +162.800 662.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 520.210 m -48.240 481.650 l +48.240 686.290 m +48.240 662.010 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 520.210 m -99.792 481.650 l +162.800 686.290 m +162.800 662.010 l S [ ] 0 d 1 w @@ -11356,41 +17137,34 @@ S 0.200 0.200 0.200 scn BT -51.24 504.21300000000036 Td -/F2.0 10.5 Tf -<48545450> Tj -ET - - -BT -51.24 489.93300000000033 Td +51.24 670.2930000000001 Td /F2.0 10.5 Tf -<436f6465> Tj +<54797065> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 519.960 m -460.656 519.960 l +162.800 686.040 m +334.640 686.040 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -99.792 482.400 m -460.656 482.400 l +162.800 662.760 m +334.640 662.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 520.210 m -99.792 481.650 l +162.800 686.290 m +162.800 662.010 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 520.210 m -460.656 481.650 l +334.640 686.290 m +334.640 662.010 l S [ ] 0 d 1 w @@ -11398,34 +17172,34 @@ S 0.200 0.200 0.200 scn BT -102.792 504.21300000000036 Td +165.79988544 670.2930000000001 Td /F2.0 10.5 Tf -<4465736372697074696f6e> Tj +<4e616d65> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 519.960 m -563.760 519.960 l +334.640 686.040 m +563.760 686.040 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -460.656 482.400 m -563.760 482.400 l +334.640 662.760 m +563.760 662.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 520.210 m -460.656 481.650 l +334.640 686.290 m +334.640 662.010 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 520.210 m -563.760 481.650 l +563.760 686.290 m +563.760 662.010 l S [ ] 0 d 1 w @@ -11433,7 +17207,7 @@ S 0.200 0.200 0.200 scn BT -463.65600000000006 504.21300000000036 Td +337.6397136 670.2930000000001 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -11441,26 +17215,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 482.400 m -99.792 482.400 l +48.240 662.760 m +162.800 662.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 459.120 m -99.792 459.120 l +48.240 625.200 m +162.800 625.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 482.650 m -48.240 458.870 l +48.240 663.010 m +48.240 624.950 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 482.650 m -99.792 458.870 l +162.800 663.010 m +162.800 624.950 l S [ ] 0 d 1 w @@ -11468,34 +17242,34 @@ S 0.200 0.200 0.200 scn BT -51.24 466.15300000000036 Td +51.24 639.3730000000002 Td /F2.0 10.5 Tf -<323030> Tj +<50617468> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 482.400 m -460.656 482.400 l +162.800 662.760 m +334.640 662.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 459.120 m -460.656 459.120 l +162.800 625.200 m +334.640 625.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 482.650 m -99.792 458.870 l +162.800 663.010 m +162.800 624.950 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 482.650 m -460.656 458.870 l +334.640 663.010 m +334.640 624.950 l S [ ] 0 d 1 w @@ -11503,160 +17277,116 @@ S 0.200 0.200 0.200 scn BT -102.792 466.15300000000036 Td -/F1.0 10.5 Tf -<4f75747075742074797065> Tj +165.79988544 646.5130000000001 Td +/F2.0 10.5 Tf +<6c6f6f704e616d65> Tj +ET + + +BT +165.79988544 632.2330000000002 Td +ET + + +BT +165.79988544 632.2330000000002 Td +/F3.0 10.5 Tf +<7265717569726564> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 482.400 m -563.760 482.400 l +334.640 662.760 m +563.760 662.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 459.120 m -563.760 459.120 l +334.640 625.200 m +563.760 625.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 482.650 m -460.656 458.870 l +334.640 663.010 m +334.640 624.950 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 482.650 m -563.760 458.870 l +563.760 663.010 m +563.760 624.950 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN - -BT -463.65600000000006 466.15300000000036 Td -/F1.0 10.5 Tf -<4c6f6f70> Tj -ET - -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -48.24 429.53600000000034 Td -/F2.0 13 Tf -<322e31312e332e2050726f6475636573> Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn - --0.500 Tc -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN BT -56.88050000000001 402.8760000000003 Td +337.6397136 639.3730000000002 Td /F1.0 10.5 Tf - Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn - -0.000 Tc -0.694 0.129 0.275 scn -0.694 0.129 0.275 SCN - -BT -66.24000000000001 405.06000000000034 Td -/F4.0 10.5 Tf -<6170706c69636174696f6e2f6a736f6e> Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -48.24000000000001 367.41600000000034 Td -/F2.0 18 Tf -<322e31322e20474554202f76322f6c6f6f702f676574416c6c4e616d6573> Tj +<737472696e67> Tj ET -0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24000000000001 333.1760000000003 Td +48.24 595.6160000000003 Td /F2.0 13 Tf -<322e31322e312e20526573706f6e736573> Tj +<322e31392e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 280.920 51.552 37.560 re +48.240 543.360 51.552 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 280.920 360.864 37.560 re +99.792 543.360 360.864 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 280.920 103.104 37.560 re +460.656 543.360 103.104 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 257.640 51.552 23.280 re +48.240 520.080 51.552 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 257.640 360.864 23.280 re +99.792 520.080 360.864 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 257.640 103.104 23.280 re +460.656 520.080 103.104 23.280 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 318.480 m -99.792 318.480 l +48.240 580.920 m +99.792 580.920 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 280.920 m -99.792 280.920 l +48.240 543.360 m +99.792 543.360 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 318.730 m -48.240 280.170 l +48.240 581.170 m +48.240 542.610 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 318.730 m -99.792 280.170 l +99.792 581.170 m +99.792 542.610 l S [ ] 0 d 1 w @@ -11664,14 +17394,14 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 302.73300000000023 Td +51.24 565.1730000000005 Td /F2.0 10.5 Tf <48545450> Tj ET BT -51.24000000000001 288.4530000000002 Td +51.24 550.8930000000004 Td /F2.0 10.5 Tf <436f6465> Tj ET @@ -11679,26 +17409,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 318.480 m -460.656 318.480 l +99.792 580.920 m +460.656 580.920 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -99.792 280.920 m -460.656 280.920 l +99.792 543.360 m +460.656 543.360 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 318.730 m -99.792 280.170 l +99.792 581.170 m +99.792 542.610 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 318.730 m -460.656 280.170 l +460.656 581.170 m +460.656 542.610 l S [ ] 0 d 1 w @@ -11706,7 +17436,7 @@ S 0.200 0.200 0.200 scn BT -102.792 302.73300000000023 Td +102.792 565.1730000000005 Td /F2.0 10.5 Tf <4465736372697074696f6e> Tj ET @@ -11714,26 +17444,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 318.480 m -563.760 318.480 l +460.656 580.920 m +563.760 580.920 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -460.656 280.920 m -563.760 280.920 l +460.656 543.360 m +563.760 543.360 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 318.730 m -460.656 280.170 l +460.656 581.170 m +460.656 542.610 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 318.730 m -563.760 280.170 l +563.760 581.170 m +563.760 542.610 l S [ ] 0 d 1 w @@ -11741,7 +17471,7 @@ S 0.200 0.200 0.200 scn BT -463.65600000000006 302.73300000000023 Td +463.65600000000006 565.1730000000005 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -11749,26 +17479,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 280.920 m -99.792 280.920 l +48.240 543.360 m +99.792 543.360 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 257.640 m -99.792 257.640 l +48.240 520.080 m +99.792 520.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 281.170 m -48.240 257.390 l +48.240 543.610 m +48.240 519.830 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 281.170 m -99.792 257.390 l +99.792 543.610 m +99.792 519.830 l S [ ] 0 d 1 w @@ -11776,7 +17506,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 264.67300000000023 Td +51.24 527.1130000000003 Td /F2.0 10.5 Tf <323030> Tj ET @@ -11784,26 +17514,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 280.920 m -460.656 280.920 l +99.792 543.360 m +460.656 543.360 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 257.640 m -460.656 257.640 l +99.792 520.080 m +460.656 520.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 281.170 m -99.792 257.390 l +99.792 543.610 m +99.792 519.830 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 281.170 m -460.656 257.390 l +460.656 543.610 m +460.656 519.830 l S [ ] 0 d 1 w @@ -11811,7 +17541,7 @@ S 0.200 0.200 0.200 scn BT -102.792 264.67300000000023 Td +102.792 527.1130000000003 Td /F1.0 10.5 Tf <4f75747075742074797065> Tj ET @@ -11819,46 +17549,54 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 280.920 m -563.760 280.920 l +460.656 543.360 m +563.760 543.360 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 257.640 m -563.760 257.640 l +460.656 520.080 m +563.760 520.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 281.170 m -460.656 257.390 l +460.656 543.610 m +460.656 519.830 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 281.170 m -563.760 257.390 l +563.760 543.610 m +563.760 519.830 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT -463.65600000000006 264.67300000000023 Td +463.65600000000006 527.1130000000003 Td /F1.0 10.5 Tf -[<3c20737472696e67203e20617272> 20.01953125 <61> 20.01953125 <79>] TJ +<4c6f6f70> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24000000000001 228.0560000000002 Td +48.24 490.4960000000004 Td /F2.0 13 Tf -<322e31322e322e2050726f6475636573> Tj +<322e31392e332e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -11869,7 +17607,7 @@ ET 0.200 0.200 0.200 SCN BT -56.88050000000001 201.39600000000019 Td +56.88050000000001 463.83600000000035 Td /F1.0 10.5 Tf Tj ET @@ -11882,7 +17620,7 @@ ET 0.694 0.129 0.275 SCN BT -66.24000000000001 203.58000000000018 Td +66.24000000000001 466.0200000000004 Td /F4.0 10.5 Tf <6170706c69636174696f6e2f6a736f6e> Tj ET @@ -11893,9 +17631,9 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 165.93600000000015 Td +48.24000000000001 428.3760000000004 Td /F2.0 18 Tf -<322e31332e20474554202f76322f6c6f6f702f6765747374617475732f7b6c6f6f704e616d657d> Tj +<322e32302e20505554202f76322f6c6f6f702f73746f702f7b6c6f6f704e616d657d> Tj ET 0.000 0.000 0.000 SCN @@ -11904,59 +17642,59 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 131.69600000000014 Td +48.24000000000001 394.1360000000003 Td /F2.0 13 Tf -[<322e31332e312e20506172> 20.01953125 <616d6574657273>] TJ +[<322e32302e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 93.720 114.560 23.280 re +48.240 356.160 114.560 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 93.720 171.840 23.280 re +162.800 356.160 171.840 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 93.720 229.120 23.280 re +334.640 356.160 229.120 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 56.160 114.560 37.560 re +48.240 318.600 114.560 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 56.160 171.840 37.560 re +162.800 318.600 171.840 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 56.160 229.120 37.560 re +334.640 318.600 229.120 37.560 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 117.000 m -162.800 117.000 l +48.240 379.440 m +162.800 379.440 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 93.720 m -162.800 93.720 l +48.240 356.160 m +162.800 356.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 117.250 m -48.240 92.970 l +48.240 379.690 m +48.240 355.410 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 117.250 m -162.800 92.970 l +162.800 379.690 m +162.800 355.410 l S [ ] 0 d 1 w @@ -11964,7 +17702,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 101.25300000000014 Td +51.24000000000001 363.69300000000027 Td /F2.0 10.5 Tf <54797065> Tj ET @@ -11972,26 +17710,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 117.000 m -334.640 117.000 l +162.800 379.440 m +334.640 379.440 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -162.800 93.720 m -334.640 93.720 l +162.800 356.160 m +334.640 356.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 117.250 m -162.800 92.970 l +162.800 379.690 m +162.800 355.410 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 117.250 m -334.640 92.970 l +334.640 379.690 m +334.640 355.410 l S [ ] 0 d 1 w @@ -11999,7 +17737,7 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 101.25300000000014 Td +165.79988544000003 363.69300000000027 Td /F2.0 10.5 Tf <4e616d65> Tj ET @@ -12007,26 +17745,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 117.000 m -563.760 117.000 l +334.640 379.440 m +563.760 379.440 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -334.640 93.720 m -563.760 93.720 l +334.640 356.160 m +563.760 356.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 117.250 m -334.640 92.970 l +334.640 379.690 m +334.640 355.410 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 117.250 m -563.760 92.970 l +563.760 379.690 m +563.760 355.410 l S [ ] 0 d 1 w @@ -12034,7 +17772,7 @@ S 0.200 0.200 0.200 scn BT -337.6397136 101.25300000000014 Td +337.6397136 363.69300000000027 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -12042,26 +17780,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 93.720 m -162.800 93.720 l +48.240 356.160 m +162.800 356.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 56.160 m -162.800 56.160 l +48.240 318.600 m +162.800 318.600 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 93.970 m -48.240 55.910 l +48.240 356.410 m +48.240 318.350 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 93.970 m -162.800 55.910 l +162.800 356.410 m +162.800 318.350 l S [ ] 0 d 1 w @@ -12069,7 +17807,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 70.33300000000014 Td +51.24000000000001 332.7730000000003 Td /F2.0 10.5 Tf <50617468> Tj ET @@ -12077,26 +17815,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 93.720 m -334.640 93.720 l +162.800 356.160 m +334.640 356.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 56.160 m -334.640 56.160 l +162.800 318.600 m +334.640 318.600 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 93.970 m -162.800 55.910 l +162.800 356.410 m +162.800 318.350 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 93.970 m -334.640 55.910 l +334.640 356.410 m +334.640 318.350 l S [ ] 0 d 1 w @@ -12104,19 +17842,19 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 77.47300000000014 Td +165.79988544000003 339.9130000000003 Td /F2.0 10.5 Tf <6c6f6f704e616d65> Tj ET BT -165.79988544000003 63.19300000000014 Td +165.79988544000003 325.63300000000027 Td ET BT -165.79988544000003 63.19300000000014 Td +165.79988544000003 325.63300000000027 Td /F3.0 10.5 Tf <7265717569726564> Tj ET @@ -12124,26 +17862,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 93.720 m -563.760 93.720 l +334.640 356.160 m +563.760 356.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 56.160 m -563.760 56.160 l +334.640 318.600 m +563.760 318.600 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 93.970 m -334.640 55.910 l +334.640 356.410 m +334.640 318.350 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 93.970 m -563.760 55.910 l +563.760 356.410 m +563.760 318.350 l S [ ] 0 d 1 w @@ -12151,157 +17889,69 @@ S 0.200 0.200 0.200 scn BT -337.6397136 70.33300000000014 Td +337.6397136 332.7730000000003 Td /F1.0 10.5 Tf <737472696e67> Tj ET 0.000 0.000 0.000 scn -q -0.000 0.000 0.000 scn -0.000 0.000 0.000 SCN -1 w -0 J -0 j -[ ] 0 d -/Stamp1 Do -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -49.24 14.388 Td -/F1.0 9 Tf -<36> Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -Q -Q - -endstream -endobj -84 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 612.0 792.0] -/Contents 83 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 22 0 R -/F1.0 8 0 R -/F3.0 24 0 R -/F4.0 33 0 R ->> -/XObject << /Stamp1 588 0 R ->> ->> -/Annots [89 0 R] ->> -endobj -85 0 obj -[84 0 R /XYZ 0 697.44 null] -endobj -86 0 obj -[84 0 R /XYZ 0 657.3600000000001 null] -endobj -87 0 obj -<< /Limits [(_parameters_8) (_produces_15)] -/Names [(_parameters_8) 95 0 R (_parameters_9) 102 0 R (_paths) 28 0 R (_policymodel) 298 0 R (_produces) 32 0 R (_produces_10) 90 0 R (_produces_11) 93 0 R (_produces_12) 100 0 R (_produces_13) 105 0 R (_produces_14) 112 0 R (_produces_15) 118 0 R] ->> -endobj -88 0 obj -[84 0 R /XYZ 0 552.2400000000002 null] -endobj -89 0 obj -<< /Border [0 0 0] -/Dest (_loop) -/Subtype /Link -/Rect [463.65600000000006 463.0870000000004 488.7510000000001 477.36700000000036] -/Type /Annot ->> -endobj -90 0 obj -[84 0 R /XYZ 0 447.12000000000035 null] -endobj -91 0 obj -[84 0 R /XYZ 0 390.8400000000003 null] -endobj -92 0 obj -[84 0 R /XYZ 0 350.7600000000003 null] -endobj -93 0 obj -[84 0 R /XYZ 0 245.6400000000002 null] -endobj -94 0 obj -[84 0 R /XYZ 0 189.36000000000018 null] -endobj -95 0 obj -[84 0 R /XYZ 0 149.28000000000017 null] -endobj -96 0 obj -<< /Length 16110 ->> -stream -q -/DeviceRGB cs 0.200 0.200 0.200 scn -/DeviceRGB CS 0.200 0.200 0.200 SCN BT -48.24 740.816 Td +48.24000000000001 289.0160000000003 Td /F2.0 13 Tf -<322e31332e322e20526573706f6e736573> Tj +<322e32302e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 688.560 51.552 37.560 re +48.240 236.760 51.552 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 688.560 360.864 37.560 re +99.792 236.760 360.864 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 688.560 103.104 37.560 re +460.656 236.760 103.104 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 665.280 51.552 23.280 re +48.240 213.480 51.552 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 665.280 360.864 23.280 re +99.792 213.480 360.864 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 665.280 103.104 23.280 re +460.656 213.480 103.104 23.280 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 726.120 m -99.792 726.120 l +48.240 274.320 m +99.792 274.320 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 688.560 m -99.792 688.560 l +48.240 236.760 m +99.792 236.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 726.370 m -48.240 687.810 l +48.240 274.570 m +48.240 236.010 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 726.370 m -99.792 687.810 l +99.792 274.570 m +99.792 236.010 l S [ ] 0 d 1 w @@ -12309,14 +17959,14 @@ S 0.200 0.200 0.200 scn BT -51.24 710.373 Td +51.24000000000001 258.57300000000026 Td /F2.0 10.5 Tf <48545450> Tj ET BT -51.24 696.0930000000001 Td +51.24000000000001 244.29300000000026 Td /F2.0 10.5 Tf <436f6465> Tj ET @@ -12324,26 +17974,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 726.120 m -460.656 726.120 l +99.792 274.320 m +460.656 274.320 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -99.792 688.560 m -460.656 688.560 l +99.792 236.760 m +460.656 236.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 726.370 m -99.792 687.810 l +99.792 274.570 m +99.792 236.010 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 726.370 m -460.656 687.810 l +460.656 274.570 m +460.656 236.010 l S [ ] 0 d 1 w @@ -12351,7 +18001,7 @@ S 0.200 0.200 0.200 scn BT -102.792 710.373 Td +102.792 258.57300000000026 Td /F2.0 10.5 Tf <4465736372697074696f6e> Tj ET @@ -12359,26 +18009,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 726.120 m -563.760 726.120 l +460.656 274.320 m +563.760 274.320 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -460.656 688.560 m -563.760 688.560 l +460.656 236.760 m +563.760 236.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 726.370 m -460.656 687.810 l +460.656 274.570 m +460.656 236.010 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 726.370 m -563.760 687.810 l +563.760 274.570 m +563.760 236.010 l S [ ] 0 d 1 w @@ -12386,7 +18036,7 @@ S 0.200 0.200 0.200 scn BT -463.65600000000006 710.373 Td +463.65600000000006 258.57300000000026 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -12394,26 +18044,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 688.560 m -99.792 688.560 l +48.240 236.760 m +99.792 236.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 665.280 m -99.792 665.280 l +48.240 213.480 m +99.792 213.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 688.810 m -48.240 665.030 l +48.240 237.010 m +48.240 213.230 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 688.810 m -99.792 665.030 l +99.792 237.010 m +99.792 213.230 l S [ ] 0 d 1 w @@ -12421,7 +18071,7 @@ S 0.200 0.200 0.200 scn BT -51.24 672.3130000000001 Td +51.24000000000001 220.5130000000003 Td /F2.0 10.5 Tf <323030> Tj ET @@ -12429,26 +18079,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 688.560 m -460.656 688.560 l +99.792 236.760 m +460.656 236.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 665.280 m -460.656 665.280 l +99.792 213.480 m +460.656 213.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 688.810 m -99.792 665.030 l +99.792 237.010 m +99.792 213.230 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 688.810 m -460.656 665.030 l +460.656 237.010 m +460.656 213.230 l S [ ] 0 d 1 w @@ -12456,7 +18106,7 @@ S 0.200 0.200 0.200 scn BT -102.792 672.3130000000001 Td +102.792 220.5130000000003 Td /F1.0 10.5 Tf <4f75747075742074797065> Tj ET @@ -12464,26 +18114,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 688.560 m -563.760 688.560 l +460.656 236.760 m +563.760 236.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 665.280 m -563.760 665.280 l +460.656 213.480 m +563.760 213.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 688.810 m -460.656 665.030 l +460.656 237.010 m +460.656 213.230 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 688.810 m -563.760 665.030 l +563.760 237.010 m +563.760 213.230 l S [ ] 0 d 1 w @@ -12497,7 +18147,7 @@ S 0.259 0.545 0.792 SCN BT -463.65600000000006 672.3130000000001 Td +463.65600000000006 220.5130000000003 Td /F1.0 10.5 Tf <4c6f6f70> Tj ET @@ -12509,9 +18159,9 @@ ET 0.200 0.200 0.200 SCN BT -48.24 635.6960000000003 Td +48.24000000000001 183.89600000000024 Td /F2.0 13 Tf -<322e31332e332e2050726f6475636573> Tj +<322e32302e332e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -12522,7 +18172,7 @@ ET 0.200 0.200 0.200 SCN BT -56.88050000000001 609.0360000000003 Td +56.88050000000001 157.23600000000025 Td /F1.0 10.5 Tf Tj ET @@ -12535,7 +18185,7 @@ ET 0.694 0.129 0.275 SCN BT -66.24000000000001 611.2200000000004 Td +66.24000000000001 159.42000000000024 Td /F4.0 10.5 Tf <6170706c69636174696f6e2f6a736f6e> Tj ET @@ -12546,9 +18196,9 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 573.5760000000004 Td +48.24000000000001 121.77600000000022 Td /F2.0 18 Tf -<322e31342e20505554> Tj +<322e32312e20505554202f76322f6c6f6f702f7375626d69742f7b6c6f6f704e616d657d> Tj ET 0.000 0.000 0.000 SCN @@ -12557,70 +18207,153 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 545.4960000000004 Td -/F2.0 18 Tf -<2f76322f6c6f6f702f726566726573684f70506f6c6963794a736f6e536368656d612f7b6c6f6f704e616d657d> Tj +48.24000000000001 87.53600000000023 Td +/F2.0 13 Tf +[<322e32312e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn +q +0.000 0.000 0.000 scn +0.000 0.000 0.000 SCN +1 w +0 J +0 j +[ ] 0 d +/Stamp1 Do 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24000000000001 511.25600000000054 Td -/F2.0 13 Tf -[<322e31342e312e20506172> 20.01953125 <616d6574657273>] TJ +49.24 14.388 Td +/F1.0 9 Tf +<3130> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn +Q +Q + +endstream +endobj +134 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 612.0 792.0] +/Contents 133 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F2.0 24 0 R +/F3.0 26 0 R +/F1.0 8 0 R +/F4.0 35 0 R +>> +/XObject << /Stamp1 684 0 R +>> +>> +/Annots [138 0 R 143 0 R] +>> +endobj +135 0 obj +[134 0 R /XYZ 0 792.0 null] +endobj +136 0 obj +[134 0 R /XYZ 0 718.32 null] +endobj +137 0 obj +[134 0 R /XYZ 0 613.2000000000003 null] +endobj +138 0 obj +<< /Border [0 0 0] +/Dest (_loop) +/Subtype /Link +/Rect [463.65600000000006 524.0470000000004 488.7510000000001 538.3270000000003] +/Type /Annot +>> +endobj +139 0 obj +[134 0 R /XYZ 0 508.0800000000004 null] +endobj +140 0 obj +[134 0 R /XYZ 0 451.80000000000035 null] +endobj +141 0 obj +[134 0 R /XYZ 0 411.7200000000003 null] +endobj +142 0 obj +[134 0 R /XYZ 0 306.6000000000003 null] +endobj +143 0 obj +<< /Border [0 0 0] +/Dest (_loop) +/Subtype /Link +/Rect [463.65600000000006 217.4470000000003 488.7510000000001 231.7270000000003] +/Type /Annot +>> +endobj +144 0 obj +[134 0 R /XYZ 0 201.48000000000027 null] +endobj +145 0 obj +[134 0 R /XYZ 0 145.20000000000024 null] +endobj +146 0 obj +[134 0 R /XYZ 0 105.12000000000023 null] +endobj +147 0 obj +<< /Length 18773 +>> +stream +q +/DeviceRGB cs 1.000 1.000 1.000 scn -48.240 473.280 114.560 23.280 re +48.240 732.720 114.560 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 473.280 171.840 23.280 re +162.800 732.720 171.840 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 473.280 229.120 23.280 re +334.640 732.720 229.120 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 435.720 114.560 37.560 re +48.240 695.160 114.560 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 435.720 171.840 37.560 re +162.800 695.160 171.840 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 435.720 229.120 37.560 re +334.640 695.160 229.120 37.560 re f 0.000 0.000 0.000 scn 0.5 w +/DeviceRGB CS 0.867 0.867 0.867 SCN -48.240 496.560 m -162.800 496.560 l +48.240 756.000 m +162.800 756.000 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 473.280 m -162.800 473.280 l +48.240 732.720 m +162.800 732.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 496.810 m -48.240 472.530 l +48.240 756.250 m +48.240 731.970 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 496.810 m -162.800 472.530 l +162.800 756.250 m +162.800 731.970 l S [ ] 0 d 1 w @@ -12628,7 +18361,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 480.8130000000005 Td +51.24 740.2529999999999 Td /F2.0 10.5 Tf <54797065> Tj ET @@ -12636,26 +18369,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 496.560 m -334.640 496.560 l +162.800 756.000 m +334.640 756.000 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -162.800 473.280 m -334.640 473.280 l +162.800 732.720 m +334.640 732.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 496.810 m -162.800 472.530 l +162.800 756.250 m +162.800 731.970 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 496.810 m -334.640 472.530 l +334.640 756.250 m +334.640 731.970 l S [ ] 0 d 1 w @@ -12663,7 +18396,7 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 480.8130000000005 Td +165.79988544 740.2529999999999 Td /F2.0 10.5 Tf <4e616d65> Tj ET @@ -12671,26 +18404,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 496.560 m -563.760 496.560 l +334.640 756.000 m +563.760 756.000 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -334.640 473.280 m -563.760 473.280 l +334.640 732.720 m +563.760 732.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 496.810 m -334.640 472.530 l +334.640 756.250 m +334.640 731.970 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 496.810 m -563.760 472.530 l +563.760 756.250 m +563.760 731.970 l S [ ] 0 d 1 w @@ -12698,7 +18431,7 @@ S 0.200 0.200 0.200 scn BT -337.6397136 480.8130000000005 Td +337.6397136 740.2529999999999 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -12706,26 +18439,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 473.280 m -162.800 473.280 l +48.240 732.720 m +162.800 732.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 435.720 m -162.800 435.720 l +48.240 695.160 m +162.800 695.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 473.530 m -48.240 435.470 l +48.240 732.970 m +48.240 694.910 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 473.530 m -162.800 435.470 l +162.800 732.970 m +162.800 694.910 l S [ ] 0 d 1 w @@ -12733,7 +18466,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 449.89300000000054 Td +51.24 709.333 Td /F2.0 10.5 Tf <50617468> Tj ET @@ -12741,26 +18474,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 473.280 m -334.640 473.280 l +162.800 732.720 m +334.640 732.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 435.720 m -334.640 435.720 l +162.800 695.160 m +334.640 695.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 473.530 m -162.800 435.470 l +162.800 732.970 m +162.800 694.910 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 473.530 m -334.640 435.470 l +334.640 732.970 m +334.640 694.910 l S [ ] 0 d 1 w @@ -12768,19 +18501,19 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 457.0330000000005 Td +165.79988544 716.473 Td /F2.0 10.5 Tf <6c6f6f704e616d65> Tj ET BT -165.79988544000003 442.7530000000005 Td +165.79988544 702.193 Td ET BT -165.79988544000003 442.7530000000005 Td +165.79988544 702.193 Td /F3.0 10.5 Tf <7265717569726564> Tj ET @@ -12788,26 +18521,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 473.280 m -563.760 473.280 l +334.640 732.720 m +563.760 732.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 435.720 m -563.760 435.720 l +334.640 695.160 m +563.760 695.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 473.530 m -334.640 435.470 l +334.640 732.970 m +334.640 694.910 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 473.530 m -563.760 435.470 l +563.760 732.970 m +563.760 694.910 l S [ ] 0 d 1 w @@ -12815,7 +18548,7 @@ S 0.200 0.200 0.200 scn BT -337.6397136 449.89300000000054 Td +337.6397136 709.333 Td /F1.0 10.5 Tf <737472696e67> Tj ET @@ -12825,59 +18558,59 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 406.13600000000054 Td +48.24 665.5760000000001 Td /F2.0 13 Tf -<322e31342e322e20526573706f6e736573> Tj +<322e32312e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 353.880 51.552 37.560 re +48.240 613.320 51.552 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 353.880 360.864 37.560 re +99.792 613.320 360.864 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 353.880 103.104 37.560 re +460.656 613.320 103.104 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 330.600 51.552 23.280 re +48.240 590.040 51.552 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 330.600 360.864 23.280 re +99.792 590.040 360.864 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 330.600 103.104 23.280 re +460.656 590.040 103.104 23.280 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 391.440 m -99.792 391.440 l +48.240 650.880 m +99.792 650.880 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 353.880 m -99.792 353.880 l +48.240 613.320 m +99.792 613.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 391.690 m -48.240 353.130 l +48.240 651.130 m +48.240 612.570 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 391.690 m -99.792 353.130 l +99.792 651.130 m +99.792 612.570 l S [ ] 0 d 1 w @@ -12885,14 +18618,14 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 375.6930000000005 Td +51.24 635.1330000000003 Td /F2.0 10.5 Tf <48545450> Tj ET BT -51.24000000000001 361.41300000000047 Td +51.24 620.8530000000002 Td /F2.0 10.5 Tf <436f6465> Tj ET @@ -12900,26 +18633,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 391.440 m -460.656 391.440 l +99.792 650.880 m +460.656 650.880 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -99.792 353.880 m -460.656 353.880 l +99.792 613.320 m +460.656 613.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 391.690 m -99.792 353.130 l +99.792 651.130 m +99.792 612.570 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 391.690 m -460.656 353.130 l +460.656 651.130 m +460.656 612.570 l S [ ] 0 d 1 w @@ -12927,7 +18660,7 @@ S 0.200 0.200 0.200 scn BT -102.792 375.6930000000005 Td +102.792 635.1330000000003 Td /F2.0 10.5 Tf <4465736372697074696f6e> Tj ET @@ -12935,26 +18668,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 391.440 m -563.760 391.440 l +460.656 650.880 m +563.760 650.880 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -460.656 353.880 m -563.760 353.880 l +460.656 613.320 m +563.760 613.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 391.690 m -460.656 353.130 l +460.656 651.130 m +460.656 612.570 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 391.690 m -563.760 353.130 l +563.760 651.130 m +563.760 612.570 l S [ ] 0 d 1 w @@ -12962,7 +18695,7 @@ S 0.200 0.200 0.200 scn BT -463.65600000000006 375.6930000000005 Td +463.65600000000006 635.1330000000003 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -12970,26 +18703,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 353.880 m -99.792 353.880 l +48.240 613.320 m +99.792 613.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 330.600 m -99.792 330.600 l +48.240 590.040 m +99.792 590.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 354.130 m -48.240 330.350 l +48.240 613.570 m +48.240 589.790 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 354.130 m -99.792 330.350 l +99.792 613.570 m +99.792 589.790 l S [ ] 0 d 1 w @@ -12997,7 +18730,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 337.6330000000005 Td +51.24 597.0730000000001 Td /F2.0 10.5 Tf <323030> Tj ET @@ -13005,26 +18738,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 353.880 m -460.656 353.880 l +99.792 613.320 m +460.656 613.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 330.600 m -460.656 330.600 l +99.792 590.040 m +460.656 590.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 354.130 m -99.792 330.350 l +99.792 613.570 m +99.792 589.790 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 354.130 m -460.656 330.350 l +460.656 613.570 m +460.656 589.790 l S [ ] 0 d 1 w @@ -13032,7 +18765,7 @@ S 0.200 0.200 0.200 scn BT -102.792 337.6330000000005 Td +102.792 597.0730000000001 Td /F1.0 10.5 Tf <4f75747075742074797065> Tj ET @@ -13040,26 +18773,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 353.880 m -563.760 353.880 l +460.656 613.320 m +563.760 613.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 330.600 m -563.760 330.600 l +460.656 590.040 m +563.760 590.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 354.130 m -460.656 330.350 l +460.656 613.570 m +460.656 589.790 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 354.130 m -563.760 330.350 l +563.760 613.570 m +563.760 589.790 l S [ ] 0 d 1 w @@ -13073,7 +18806,7 @@ S 0.259 0.545 0.792 SCN BT -463.65600000000006 337.6330000000005 Td +463.65600000000006 597.0730000000001 Td /F1.0 10.5 Tf <4c6f6f70> Tj ET @@ -13085,9 +18818,9 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 301.0160000000005 Td +48.24 560.4560000000002 Td /F2.0 13 Tf -<322e31342e332e2050726f6475636573> Tj +<322e32312e332e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -13098,7 +18831,7 @@ ET 0.200 0.200 0.200 SCN BT -56.88050000000001 274.35600000000045 Td +56.88050000000001 533.7960000000003 Td /F1.0 10.5 Tf Tj ET @@ -13111,7 +18844,7 @@ ET 0.694 0.129 0.275 SCN BT -66.24000000000001 276.5400000000004 Td +66.24000000000001 535.9800000000004 Td /F4.0 10.5 Tf <6170706c69636174696f6e2f6a736f6e> Tj ET @@ -13122,9 +18855,9 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 238.89600000000047 Td +48.24000000000001 498.3360000000004 Td /F2.0 18 Tf -<322e31352e20505554202f76322f6c6f6f702f726573746172742f7b6c6f6f704e616d657d> Tj +<322e32322e20474554202f76322f6c6f6f702f737667526570726573656e746174696f6e2f7b6c6f6f704e616d657d> Tj ET 0.000 0.000 0.000 SCN @@ -13133,59 +18866,59 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 204.65600000000046 Td +48.24000000000001 464.09600000000034 Td /F2.0 13 Tf -[<322e31352e312e20506172> 20.01953125 <616d6574657273>] TJ +[<322e32322e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 166.680 114.560 23.280 re +48.240 426.120 114.560 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 166.680 171.840 23.280 re +162.800 426.120 171.840 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 166.680 229.120 23.280 re +334.640 426.120 229.120 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 129.120 114.560 37.560 re +48.240 388.560 114.560 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 129.120 171.840 37.560 re +162.800 388.560 171.840 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 129.120 229.120 37.560 re +334.640 388.560 229.120 37.560 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 189.960 m -162.800 189.960 l +48.240 449.400 m +162.800 449.400 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 166.680 m -162.800 166.680 l +48.240 426.120 m +162.800 426.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 190.210 m -48.240 165.930 l +48.240 449.650 m +48.240 425.370 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 190.210 m -162.800 165.930 l +162.800 449.650 m +162.800 425.370 l S [ ] 0 d 1 w @@ -13193,7 +18926,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 174.21300000000045 Td +51.24000000000001 433.6530000000003 Td /F2.0 10.5 Tf <54797065> Tj ET @@ -13201,26 +18934,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 189.960 m -334.640 189.960 l +162.800 449.400 m +334.640 449.400 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -162.800 166.680 m -334.640 166.680 l +162.800 426.120 m +334.640 426.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 190.210 m -162.800 165.930 l +162.800 449.650 m +162.800 425.370 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 190.210 m -334.640 165.930 l +334.640 449.650 m +334.640 425.370 l S [ ] 0 d 1 w @@ -13228,7 +18961,7 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 174.21300000000045 Td +165.79988544000003 433.6530000000003 Td /F2.0 10.5 Tf <4e616d65> Tj ET @@ -13236,26 +18969,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 189.960 m -563.760 189.960 l +334.640 449.400 m +563.760 449.400 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -334.640 166.680 m -563.760 166.680 l +334.640 426.120 m +563.760 426.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 190.210 m -334.640 165.930 l +334.640 449.650 m +334.640 425.370 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 190.210 m -563.760 165.930 l +563.760 449.650 m +563.760 425.370 l S [ ] 0 d 1 w @@ -13263,7 +18996,7 @@ S 0.200 0.200 0.200 scn BT -337.6397136 174.21300000000045 Td +337.6397136 433.6530000000003 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -13271,26 +19004,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 166.680 m -162.800 166.680 l +48.240 426.120 m +162.800 426.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 129.120 m -162.800 129.120 l +48.240 388.560 m +162.800 388.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 166.930 m -48.240 128.870 l +48.240 426.370 m +48.240 388.310 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 166.930 m -162.800 128.870 l +162.800 426.370 m +162.800 388.310 l S [ ] 0 d 1 w @@ -13298,7 +19031,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 143.29300000000043 Td +51.24000000000001 402.73300000000035 Td /F2.0 10.5 Tf <50617468> Tj ET @@ -13306,26 +19039,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 166.680 m -334.640 166.680 l +162.800 426.120 m +334.640 426.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 129.120 m -334.640 129.120 l +162.800 388.560 m +334.640 388.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 166.930 m -162.800 128.870 l +162.800 426.370 m +162.800 388.310 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 166.930 m -334.640 128.870 l +334.640 426.370 m +334.640 388.310 l S [ ] 0 d 1 w @@ -13333,19 +19066,19 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 150.43300000000045 Td +165.79988544000003 409.87300000000033 Td /F2.0 10.5 Tf <6c6f6f704e616d65> Tj ET BT -165.79988544000003 136.15300000000045 Td +165.79988544000003 395.5930000000003 Td ET BT -165.79988544000003 136.15300000000045 Td +165.79988544000003 395.5930000000003 Td /F3.0 10.5 Tf <7265717569726564> Tj ET @@ -13353,26 +19086,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 166.680 m -563.760 166.680 l +334.640 426.120 m +563.760 426.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 129.120 m -563.760 129.120 l +334.640 388.560 m +563.760 388.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 166.930 m -334.640 128.870 l +334.640 426.370 m +334.640 388.310 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 166.930 m -563.760 128.870 l +563.760 426.370 m +563.760 388.310 l S [ ] 0 d 1 w @@ -13380,7 +19113,7 @@ S 0.200 0.200 0.200 scn BT -337.6397136 143.29300000000043 Td +337.6397136 402.73300000000035 Td /F1.0 10.5 Tf <737472696e67> Tj ET @@ -13390,150 +19123,59 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 99.53600000000043 Td +48.24000000000001 358.97600000000034 Td /F2.0 13 Tf -<322e31352e322e20526573706f6e736573> Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -q -0.000 0.000 0.000 scn -0.000 0.000 0.000 SCN -1 w -0 J -0 j -[ ] 0 d -/Stamp1 Do -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -557.7289999999999 14.388 Td -/F1.0 9 Tf -<37> Tj +<322e32322e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn -Q -Q - -endstream -endobj -97 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 612.0 792.0] -/Contents 96 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 22 0 R -/F1.0 8 0 R -/F4.0 33 0 R -/F3.0 24 0 R ->> -/XObject << /Stamp1 588 0 R ->> ->> -/Annots [99 0 R 104 0 R] ->> -endobj -98 0 obj -[97 0 R /XYZ 0 792.0 null] -endobj -99 0 obj -<< /Border [0 0 0] -/Dest (_loop) -/Subtype /Link -/Rect [463.65600000000006 669.2470000000002 488.7510000000001 683.5270000000002] -/Type /Annot ->> -endobj -100 0 obj -[97 0 R /XYZ 0 653.2800000000002 null] -endobj -101 0 obj -[97 0 R /XYZ 0 597.0000000000003 null] -endobj -102 0 obj -[97 0 R /XYZ 0 528.8400000000005 null] -endobj -103 0 obj -[97 0 R /XYZ 0 423.72000000000054 null] -endobj -104 0 obj -<< /Border [0 0 0] -/Dest (_loop) -/Subtype /Link -/Rect [463.65600000000006 334.5670000000005 488.7510000000001 348.8470000000005] -/Type /Annot ->> -endobj -105 0 obj -[97 0 R /XYZ 0 318.6000000000005 null] -endobj -106 0 obj -[97 0 R /XYZ 0 262.32000000000045 null] -endobj -107 0 obj -[97 0 R /XYZ 0 222.24000000000046 null] -endobj -108 0 obj -[97 0 R /XYZ 0 117.12000000000043 null] -endobj -109 0 obj -<< /Length 19069 ->> -stream -q -/DeviceRGB cs 1.000 1.000 1.000 scn -48.240 718.440 51.552 37.560 re +48.240 306.720 51.552 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 718.440 360.864 37.560 re +99.792 306.720 360.864 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 718.440 103.104 37.560 re +460.656 306.720 103.104 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 695.160 51.552 23.280 re +48.240 283.440 51.552 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 695.160 360.864 23.280 re +99.792 283.440 360.864 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 695.160 103.104 23.280 re +460.656 283.440 103.104 23.280 re f 0.000 0.000 0.000 scn 0.5 w -/DeviceRGB CS 0.867 0.867 0.867 SCN -48.240 756.000 m -99.792 756.000 l +48.240 344.280 m +99.792 344.280 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 718.440 m -99.792 718.440 l +48.240 306.720 m +99.792 306.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 756.250 m -48.240 717.690 l +48.240 344.530 m +48.240 305.970 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 756.250 m -99.792 717.690 l +99.792 344.530 m +99.792 305.970 l S [ ] 0 d 1 w @@ -13541,14 +19183,14 @@ S 0.200 0.200 0.200 scn BT -51.24 740.2529999999999 Td +51.24000000000001 328.5330000000003 Td /F2.0 10.5 Tf <48545450> Tj ET BT -51.24 725.973 Td +51.24000000000001 314.25300000000027 Td /F2.0 10.5 Tf <436f6465> Tj ET @@ -13556,26 +19198,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 756.000 m -460.656 756.000 l +99.792 344.280 m +460.656 344.280 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -99.792 718.440 m -460.656 718.440 l +99.792 306.720 m +460.656 306.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 756.250 m -99.792 717.690 l +99.792 344.530 m +99.792 305.970 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 756.250 m -460.656 717.690 l +460.656 344.530 m +460.656 305.970 l S [ ] 0 d 1 w @@ -13583,7 +19225,7 @@ S 0.200 0.200 0.200 scn BT -102.792 740.2529999999999 Td +102.792 328.5330000000003 Td /F2.0 10.5 Tf <4465736372697074696f6e> Tj ET @@ -13591,26 +19233,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 756.000 m -563.760 756.000 l +460.656 344.280 m +563.760 344.280 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -460.656 718.440 m -563.760 718.440 l +460.656 306.720 m +563.760 306.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 756.250 m -460.656 717.690 l +460.656 344.530 m +460.656 305.970 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 756.250 m -563.760 717.690 l +563.760 344.530 m +563.760 305.970 l S [ ] 0 d 1 w @@ -13618,7 +19260,7 @@ S 0.200 0.200 0.200 scn BT -463.65600000000006 740.2529999999999 Td +463.65600000000006 328.5330000000003 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -13626,26 +19268,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 718.440 m -99.792 718.440 l +48.240 306.720 m +99.792 306.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 695.160 m -99.792 695.160 l +48.240 283.440 m +99.792 283.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 718.690 m -48.240 694.910 l +48.240 306.970 m +48.240 283.190 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 718.690 m -99.792 694.910 l +99.792 306.970 m +99.792 283.190 l S [ ] 0 d 1 w @@ -13653,7 +19295,7 @@ S 0.200 0.200 0.200 scn BT -51.24 702.193 Td +51.24000000000001 290.4730000000003 Td /F2.0 10.5 Tf <323030> Tj ET @@ -13661,26 +19303,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 718.440 m -460.656 718.440 l +99.792 306.720 m +460.656 306.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 695.160 m -460.656 695.160 l +99.792 283.440 m +460.656 283.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 718.690 m -99.792 694.910 l +99.792 306.970 m +99.792 283.190 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 718.690 m -460.656 694.910 l +460.656 306.970 m +460.656 283.190 l S [ ] 0 d 1 w @@ -13688,7 +19330,7 @@ S 0.200 0.200 0.200 scn BT -102.792 702.193 Td +102.792 290.4730000000003 Td /F1.0 10.5 Tf <4f75747075742074797065> Tj ET @@ -13696,54 +19338,46 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 718.440 m -563.760 718.440 l +460.656 306.720 m +563.760 306.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 695.160 m -563.760 695.160 l +460.656 283.440 m +563.760 283.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 718.690 m -460.656 694.910 l +460.656 306.970 m +460.656 283.190 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 718.690 m -563.760 694.910 l +563.760 306.970 m +563.760 283.190 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -463.65600000000006 702.193 Td +463.65600000000006 290.4730000000003 Td /F1.0 10.5 Tf -<4c6f6f70> Tj +<737472696e67> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24 665.5760000000001 Td +48.24000000000001 253.85600000000028 Td /F2.0 13 Tf -<322e31352e332e2050726f6475636573> Tj +<322e32322e332e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -13754,7 +19388,7 @@ ET 0.200 0.200 0.200 SCN BT -56.88050000000001 638.9160000000002 Td +56.88050000000001 227.19600000000028 Td /F1.0 10.5 Tf Tj ET @@ -13767,9 +19401,9 @@ ET 0.694 0.129 0.275 SCN BT -66.24000000000001 641.1000000000003 Td +66.24000000000001 229.38000000000028 Td /F4.0 10.5 Tf -<6170706c69636174696f6e2f6a736f6e> Tj +<6170706c69636174696f6e2f786d6c> Tj ET 0.000 0.000 0.000 SCN @@ -13778,9 +19412,9 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 603.4560000000002 Td +48.24000000000001 191.73600000000027 Td /F2.0 18 Tf -<322e31362e20505554202f76322f6c6f6f702f73746f702f7b6c6f6f704e616d657d> Tj +[<322e32332e20505554202f76322f6c6f6f702f756e6465706c6f> 20.01953125 <792f7b6c6f6f704e616d657d>] TJ ET 0.000 0.000 0.000 SCN @@ -13789,59 +19423,59 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 569.2160000000003 Td +48.24000000000001 157.49600000000027 Td /F2.0 13 Tf -[<322e31362e312e20506172> 20.01953125 <616d6574657273>] TJ +[<322e32332e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 531.240 114.560 23.280 re +48.240 119.520 114.560 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 531.240 171.840 23.280 re +162.800 119.520 171.840 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 531.240 229.120 23.280 re +334.640 119.520 229.120 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 493.680 114.560 37.560 re +48.240 81.960 114.560 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 493.680 171.840 37.560 re +162.800 81.960 171.840 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 493.680 229.120 37.560 re +334.640 81.960 229.120 37.560 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 554.520 m -162.800 554.520 l +48.240 142.800 m +162.800 142.800 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 531.240 m -162.800 531.240 l +48.240 119.520 m +162.800 119.520 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 554.770 m -48.240 530.490 l +48.240 143.050 m +48.240 118.770 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 554.770 m -162.800 530.490 l +162.800 143.050 m +162.800 118.770 l S [ ] 0 d 1 w @@ -13849,7 +19483,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 538.7730000000004 Td +51.24000000000001 127.05300000000025 Td /F2.0 10.5 Tf <54797065> Tj ET @@ -13857,26 +19491,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 554.520 m -334.640 554.520 l +162.800 142.800 m +334.640 142.800 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -162.800 531.240 m -334.640 531.240 l +162.800 119.520 m +334.640 119.520 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 554.770 m -162.800 530.490 l +162.800 143.050 m +162.800 118.770 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 554.770 m -334.640 530.490 l +334.640 143.050 m +334.640 118.770 l S [ ] 0 d 1 w @@ -13884,7 +19518,7 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 538.7730000000004 Td +165.79988544000003 127.05300000000025 Td /F2.0 10.5 Tf <4e616d65> Tj ET @@ -13892,26 +19526,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 554.520 m -563.760 554.520 l +334.640 142.800 m +563.760 142.800 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -334.640 531.240 m -563.760 531.240 l +334.640 119.520 m +563.760 119.520 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 554.770 m -334.640 530.490 l +334.640 143.050 m +334.640 118.770 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 554.770 m -563.760 530.490 l +563.760 143.050 m +563.760 118.770 l S [ ] 0 d 1 w @@ -13919,7 +19553,7 @@ S 0.200 0.200 0.200 scn BT -337.6397136 538.7730000000004 Td +337.6397136 127.05300000000025 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -13927,26 +19561,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 531.240 m -162.800 531.240 l +48.240 119.520 m +162.800 119.520 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 493.680 m -162.800 493.680 l +48.240 81.960 m +162.800 81.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 531.490 m -48.240 493.430 l +48.240 119.770 m +48.240 81.710 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 531.490 m -162.800 493.430 l +162.800 119.770 m +162.800 81.710 l S [ ] 0 d 1 w @@ -13954,7 +19588,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 507.85300000000046 Td +51.24000000000001 96.13300000000024 Td /F2.0 10.5 Tf <50617468> Tj ET @@ -13962,26 +19596,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 531.240 m -334.640 531.240 l +162.800 119.520 m +334.640 119.520 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 493.680 m -334.640 493.680 l +162.800 81.960 m +334.640 81.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 531.490 m -162.800 493.430 l +162.800 119.770 m +162.800 81.710 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 531.490 m -334.640 493.430 l +334.640 119.770 m +334.640 81.710 l S [ ] 0 d 1 w @@ -13989,19 +19623,19 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 514.9930000000004 Td +165.79988544000003 103.27300000000024 Td /F2.0 10.5 Tf <6c6f6f704e616d65> Tj ET BT -165.79988544000003 500.7130000000004 Td +165.79988544000003 88.99300000000024 Td ET BT -165.79988544000003 500.7130000000004 Td +165.79988544000003 88.99300000000024 Td /F3.0 10.5 Tf <7265717569726564> Tj ET @@ -14009,26 +19643,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 531.240 m -563.760 531.240 l +334.640 119.520 m +563.760 119.520 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 493.680 m -563.760 493.680 l +334.640 81.960 m +563.760 81.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 531.490 m -334.640 493.430 l +334.640 119.770 m +334.640 81.710 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 531.490 m -563.760 493.430 l +563.760 119.770 m +563.760 81.710 l S [ ] 0 d 1 w @@ -14036,69 +19670,159 @@ S 0.200 0.200 0.200 scn BT -337.6397136 507.85300000000046 Td +337.6397136 96.13300000000024 Td /F1.0 10.5 Tf <737472696e67> Tj ET 0.000 0.000 0.000 scn +q +0.000 0.000 0.000 scn +0.000 0.000 0.000 SCN +1 w +0 J +0 j +[ ] 0 d +/Stamp1 Do +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +552.698 14.388 Td +/F1.0 9 Tf +<3131> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +Q +Q + +endstream +endobj +148 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 612.0 792.0] +/Contents 147 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F2.0 24 0 R +/F3.0 26 0 R +/F1.0 8 0 R +/F4.0 35 0 R +>> +/XObject << /Stamp1 684 0 R +>> +>> +/Annots [150 0 R] +>> +endobj +149 0 obj +[148 0 R /XYZ 0 683.1600000000001 null] +endobj +150 0 obj +<< /Border [0 0 0] +/Dest (_loop) +/Subtype /Link +/Rect [463.65600000000006 594.0070000000002 488.7510000000001 608.2870000000001] +/Type /Annot +>> +endobj +151 0 obj +[148 0 R /XYZ 0 578.0400000000002 null] +endobj +152 0 obj +<< /Limits [(_produces_19) (_produces_27)] +/Names [(_produces_19) 144 0 R (_produces_2) 38 0 R (_produces_20) 151 0 R (_produces_21) 157 0 R (_produces_22) 164 0 R (_produces_23) 171 0 R (_produces_24) 180 0 R (_produces_25) 189 0 R (_produces_26) 195 0 R (_produces_27) 203 0 R] +>> +endobj +153 0 obj +[148 0 R /XYZ 0 521.7600000000003 null] +endobj +154 0 obj +[148 0 R /XYZ 0 481.68000000000035 null] +endobj +155 0 obj +<< /Limits [(_parameters_15) (_parameters_23)] +/Names [(_parameters_15) 146 0 R (_parameters_16) 154 0 R (_parameters_17) 159 0 R (_parameters_18) 166 0 R (_parameters_19) 173 0 R (_parameters_2) 64 0 R (_parameters_20) 182 0 R (_parameters_21) 191 0 R (_parameters_22) 197 0 R (_parameters_23) 210 0 R] +>> +endobj +156 0 obj +[148 0 R /XYZ 0 376.56000000000034 null] +endobj +157 0 obj +[148 0 R /XYZ 0 271.4400000000003 null] +endobj +158 0 obj +[148 0 R /XYZ 0 215.16000000000028 null] +endobj +159 0 obj +[148 0 R /XYZ 0 175.08000000000027 null] +endobj +160 0 obj +<< /Length 15145 +>> +stream +q +/DeviceRGB cs 0.200 0.200 0.200 scn +/DeviceRGB CS 0.200 0.200 0.200 SCN BT -48.24000000000001 464.09600000000046 Td +48.24 740.816 Td /F2.0 13 Tf -<322e31362e322e20526573706f6e736573> Tj +<322e32332e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 411.840 51.552 37.560 re +48.240 688.560 51.552 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 411.840 360.864 37.560 re +99.792 688.560 360.864 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 411.840 103.104 37.560 re +460.656 688.560 103.104 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 388.560 51.552 23.280 re +48.240 665.280 51.552 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 388.560 360.864 23.280 re +99.792 665.280 360.864 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 388.560 103.104 23.280 re +460.656 665.280 103.104 23.280 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 449.400 m -99.792 449.400 l +48.240 726.120 m +99.792 726.120 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 411.840 m -99.792 411.840 l +48.240 688.560 m +99.792 688.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 449.650 m -48.240 411.090 l +48.240 726.370 m +48.240 687.810 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 449.650 m -99.792 411.090 l +99.792 726.370 m +99.792 687.810 l S [ ] 0 d 1 w @@ -14106,14 +19830,14 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 433.6530000000004 Td +51.24 710.373 Td /F2.0 10.5 Tf <48545450> Tj ET BT -51.24000000000001 419.3730000000004 Td +51.24 696.0930000000001 Td /F2.0 10.5 Tf <436f6465> Tj ET @@ -14121,26 +19845,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 449.400 m -460.656 449.400 l +99.792 726.120 m +460.656 726.120 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -99.792 411.840 m -460.656 411.840 l +99.792 688.560 m +460.656 688.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 449.650 m -99.792 411.090 l +99.792 726.370 m +99.792 687.810 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 449.650 m -460.656 411.090 l +460.656 726.370 m +460.656 687.810 l S [ ] 0 d 1 w @@ -14148,7 +19872,7 @@ S 0.200 0.200 0.200 scn BT -102.792 433.6530000000004 Td +102.792 710.373 Td /F2.0 10.5 Tf <4465736372697074696f6e> Tj ET @@ -14156,26 +19880,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 449.400 m -563.760 449.400 l +460.656 726.120 m +563.760 726.120 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -460.656 411.840 m -563.760 411.840 l +460.656 688.560 m +563.760 688.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 449.650 m -460.656 411.090 l +460.656 726.370 m +460.656 687.810 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 449.650 m -563.760 411.090 l +563.760 726.370 m +563.760 687.810 l S [ ] 0 d 1 w @@ -14183,7 +19907,7 @@ S 0.200 0.200 0.200 scn BT -463.65600000000006 433.6530000000004 Td +463.65600000000006 710.373 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -14191,26 +19915,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 411.840 m -99.792 411.840 l +48.240 688.560 m +99.792 688.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 388.560 m -99.792 388.560 l +48.240 665.280 m +99.792 665.280 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 412.090 m -48.240 388.310 l +48.240 688.810 m +48.240 665.030 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 412.090 m -99.792 388.310 l +99.792 688.810 m +99.792 665.030 l S [ ] 0 d 1 w @@ -14218,7 +19942,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 395.5930000000004 Td +51.24 672.3130000000001 Td /F2.0 10.5 Tf <323030> Tj ET @@ -14226,26 +19950,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 411.840 m -460.656 411.840 l +99.792 688.560 m +460.656 688.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 388.560 m -460.656 388.560 l +99.792 665.280 m +460.656 665.280 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 412.090 m -99.792 388.310 l +99.792 688.810 m +99.792 665.030 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 412.090 m -460.656 388.310 l +460.656 688.810 m +460.656 665.030 l S [ ] 0 d 1 w @@ -14253,7 +19977,7 @@ S 0.200 0.200 0.200 scn BT -102.792 395.5930000000004 Td +102.792 672.3130000000001 Td /F1.0 10.5 Tf <4f75747075742074797065> Tj ET @@ -14261,26 +19985,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 411.840 m -563.760 411.840 l +460.656 688.560 m +563.760 688.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 388.560 m -563.760 388.560 l +460.656 665.280 m +563.760 665.280 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 412.090 m -460.656 388.310 l +460.656 688.810 m +460.656 665.030 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 412.090 m -563.760 388.310 l +563.760 688.810 m +563.760 665.030 l S [ ] 0 d 1 w @@ -14294,7 +20018,7 @@ S 0.259 0.545 0.792 SCN BT -463.65600000000006 395.5930000000004 Td +463.65600000000006 672.3130000000001 Td /F1.0 10.5 Tf <4c6f6f70> Tj ET @@ -14306,9 +20030,9 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 358.9760000000004 Td +48.24 635.6960000000003 Td /F2.0 13 Tf -<322e31362e332e2050726f6475636573> Tj +<322e32332e332e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -14319,7 +20043,7 @@ ET 0.200 0.200 0.200 SCN BT -56.88050000000001 332.3160000000004 Td +56.88050000000001 609.0360000000003 Td /F1.0 10.5 Tf Tj ET @@ -14332,7 +20056,7 @@ ET 0.694 0.129 0.275 SCN BT -66.24000000000001 334.5000000000004 Td +66.24000000000001 611.2200000000004 Td /F4.0 10.5 Tf <6170706c69636174696f6e2f6a736f6e> Tj ET @@ -14343,70 +20067,187 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 296.8560000000004 Td +48.24000000000001 573.5760000000004 Td /F2.0 18 Tf -<322e31372e20505554202f76322f6c6f6f702f7375626d69742f7b6c6f6f704e616d657d> Tj +[<322e32342e20504f53> 20.01953125 <54202f76322f6c6f6f702f757064617465476c6f62616c50726f706572746965732f7b6c6f6f704e616d657d>] TJ ET 0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 539.3360000000005 Td +/F2.0 13 Tf +[<322e32342e312e20506172> 20.01953125 <616d6574657273>] TJ +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 501.360 114.560 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +162.800 501.360 171.840 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +334.640 501.360 229.120 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 463.800 114.560 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +162.800 463.800 171.840 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +334.640 463.800 229.120 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 426.240 114.560 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +162.800 426.240 171.840 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +334.640 426.240 229.120 37.560 re +f +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 524.640 m +162.800 524.640 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +48.240 501.360 m +162.800 501.360 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 524.890 m +48.240 500.610 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 524.890 m +162.800 500.610 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24000000000001 508.89300000000054 Td +/F2.0 10.5 Tf +<54797065> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +162.800 524.640 m +334.640 524.640 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +162.800 501.360 m +334.640 501.360 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 524.890 m +162.800 500.610 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 524.890 m +334.640 500.610 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +165.79988544000003 508.89300000000054 Td +/F2.0 10.5 Tf +<4e616d65> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +334.640 524.640 m +563.760 524.640 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +334.640 501.360 m +563.760 501.360 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 524.890 m +334.640 500.610 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 524.890 m +563.760 500.610 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN BT -48.24000000000001 262.6160000000003 Td -/F2.0 13 Tf -[<322e31372e312e20506172> 20.01953125 <616d6574657273>] TJ +337.6397136 508.89300000000054 Td +/F2.0 10.5 Tf +<536368656d61> Tj ET -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 224.640 114.560 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -162.800 224.640 171.840 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -334.640 224.640 229.120 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 187.080 114.560 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -162.800 187.080 171.840 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -334.640 187.080 229.120 37.560 re -f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 247.920 m -162.800 247.920 l +48.240 501.360 m +162.800 501.360 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -48.240 224.640 m -162.800 224.640 l +48.240 463.800 m +162.800 463.800 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 248.170 m -48.240 223.890 l +48.240 501.610 m +48.240 463.550 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 248.170 m -162.800 223.890 l +162.800 501.610 m +162.800 463.550 l S [ ] 0 d 1 w @@ -14414,34 +20255,34 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 232.17300000000034 Td +51.24000000000001 477.9730000000006 Td /F2.0 10.5 Tf -<54797065> Tj +<50617468> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 247.920 m -334.640 247.920 l +162.800 501.360 m +334.640 501.360 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -162.800 224.640 m -334.640 224.640 l +162.800 463.800 m +334.640 463.800 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 248.170 m -162.800 223.890 l +162.800 501.610 m +162.800 463.550 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 248.170 m -334.640 223.890 l +334.640 501.610 m +334.640 463.550 l S [ ] 0 d 1 w @@ -14449,34 +20290,46 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 232.17300000000034 Td +165.79988544000003 485.11300000000057 Td /F2.0 10.5 Tf -<4e616d65> Tj +<6c6f6f704e616d65> Tj +ET + + +BT +165.79988544000003 470.83300000000054 Td +ET + + +BT +165.79988544000003 470.83300000000054 Td +/F3.0 10.5 Tf +<7265717569726564> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 247.920 m -563.760 247.920 l +334.640 501.360 m +563.760 501.360 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -334.640 224.640 m -563.760 224.640 l +334.640 463.800 m +563.760 463.800 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 248.170 m -334.640 223.890 l +334.640 501.610 m +334.640 463.550 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 248.170 m -563.760 223.890 l +563.760 501.610 m +563.760 463.550 l S [ ] 0 d 1 w @@ -14484,34 +20337,34 @@ S 0.200 0.200 0.200 scn BT -337.6397136 232.17300000000034 Td -/F2.0 10.5 Tf -<536368656d61> Tj +337.6397136 477.9730000000006 Td +/F1.0 10.5 Tf +<737472696e67> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 224.640 m -162.800 224.640 l +48.240 463.800 m +162.800 463.800 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 187.080 m -162.800 187.080 l +48.240 426.240 m +162.800 426.240 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 224.890 m -48.240 186.830 l +48.240 464.050 m +48.240 425.990 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 224.890 m -162.800 186.830 l +162.800 464.050 m +162.800 425.990 l S [ ] 0 d 1 w @@ -14519,34 +20372,34 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 201.25300000000033 Td +51.24000000000001 440.4130000000005 Td /F2.0 10.5 Tf -<50617468> Tj +<426f6479> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 224.640 m -334.640 224.640 l +162.800 463.800 m +334.640 463.800 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 187.080 m -334.640 187.080 l +162.800 426.240 m +334.640 426.240 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 224.890 m -162.800 186.830 l +162.800 464.050 m +162.800 425.990 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 224.890 m -334.640 186.830 l +334.640 464.050 m +334.640 425.990 l S [ ] 0 d 1 w @@ -14554,19 +20407,19 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 208.39300000000034 Td +165.79988544000003 447.5530000000005 Td /F2.0 10.5 Tf -<6c6f6f704e616d65> Tj +<626f6479> Tj ET BT -165.79988544000003 194.11300000000034 Td +165.79988544000003 433.2730000000005 Td ET BT -165.79988544000003 194.11300000000034 Td +165.79988544000003 433.2730000000005 Td /F3.0 10.5 Tf <7265717569726564> Tj ET @@ -14574,96 +20427,104 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 224.640 m -563.760 224.640 l +334.640 463.800 m +563.760 463.800 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 187.080 m -563.760 187.080 l +334.640 426.240 m +563.760 426.240 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 224.890 m -334.640 186.830 l +334.640 464.050 m +334.640 425.990 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 224.890 m -563.760 186.830 l +563.760 464.050 m +563.760 425.990 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT -337.6397136 201.25300000000033 Td +337.6397136 440.4130000000005 Td /F1.0 10.5 Tf -<737472696e67> Tj +<4a736f6e4f626a656374> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24000000000001 157.49600000000032 Td +48.24000000000001 396.6560000000005 Td /F2.0 13 Tf -<322e31372e322e20526573706f6e736573> Tj +<322e32342e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 105.240 51.552 37.560 re +48.240 344.400 51.552 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 105.240 360.864 37.560 re +99.792 344.400 360.864 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 105.240 103.104 37.560 re +460.656 344.400 103.104 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 81.960 51.552 23.280 re +48.240 321.120 51.552 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 81.960 360.864 23.280 re +99.792 321.120 360.864 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 81.960 103.104 23.280 re +460.656 321.120 103.104 23.280 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 142.800 m -99.792 142.800 l +48.240 381.960 m +99.792 381.960 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 105.240 m -99.792 105.240 l +48.240 344.400 m +99.792 344.400 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 143.050 m -48.240 104.490 l +48.240 382.210 m +48.240 343.650 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 143.050 m -99.792 104.490 l +99.792 382.210 m +99.792 343.650 l S [ ] 0 d 1 w @@ -14671,14 +20532,14 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 127.05300000000031 Td +51.24000000000001 366.2130000000005 Td /F2.0 10.5 Tf <48545450> Tj ET BT -51.24000000000001 112.77300000000031 Td +51.24000000000001 351.93300000000045 Td /F2.0 10.5 Tf <436f6465> Tj ET @@ -14686,26 +20547,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 142.800 m -460.656 142.800 l +99.792 381.960 m +460.656 381.960 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -99.792 105.240 m -460.656 105.240 l +99.792 344.400 m +460.656 344.400 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 143.050 m -99.792 104.490 l +99.792 382.210 m +99.792 343.650 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 143.050 m -460.656 104.490 l +460.656 382.210 m +460.656 343.650 l S [ ] 0 d 1 w @@ -14713,7 +20574,7 @@ S 0.200 0.200 0.200 scn BT -102.792 127.05300000000031 Td +102.792 366.2130000000005 Td /F2.0 10.5 Tf <4465736372697074696f6e> Tj ET @@ -14721,26 +20582,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 142.800 m -563.760 142.800 l +460.656 381.960 m +563.760 381.960 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -460.656 105.240 m -563.760 105.240 l +460.656 344.400 m +563.760 344.400 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 143.050 m -460.656 104.490 l +460.656 382.210 m +460.656 343.650 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 143.050 m -563.760 104.490 l +563.760 382.210 m +563.760 343.650 l S [ ] 0 d 1 w @@ -14748,7 +20609,7 @@ S 0.200 0.200 0.200 scn BT -463.65600000000006 127.05300000000031 Td +463.65600000000006 366.2130000000005 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -14756,26 +20617,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 105.240 m -99.792 105.240 l +48.240 344.400 m +99.792 344.400 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 81.960 m -99.792 81.960 l +48.240 321.120 m +99.792 321.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 105.490 m -48.240 81.710 l +48.240 344.650 m +48.240 320.870 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 105.490 m -99.792 81.710 l +99.792 344.650 m +99.792 320.870 l S [ ] 0 d 1 w @@ -14783,7 +20644,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 88.9930000000003 Td +51.24000000000001 328.1530000000005 Td /F2.0 10.5 Tf <323030> Tj ET @@ -14791,26 +20652,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 105.240 m -460.656 105.240 l +99.792 344.400 m +460.656 344.400 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 81.960 m -460.656 81.960 l +99.792 321.120 m +460.656 321.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 105.490 m -99.792 81.710 l +99.792 344.650 m +99.792 320.870 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 105.490 m -460.656 81.710 l +460.656 344.650 m +460.656 320.870 l S [ ] 0 d 1 w @@ -14818,7 +20679,7 @@ S 0.200 0.200 0.200 scn BT -102.792 88.9930000000003 Td +102.792 328.1530000000005 Td /F1.0 10.5 Tf <4f75747075742074797065> Tj ET @@ -14826,26 +20687,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 105.240 m -563.760 105.240 l +460.656 344.400 m +563.760 344.400 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 81.960 m -563.760 81.960 l +460.656 321.120 m +563.760 321.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 105.490 m -460.656 81.710 l +460.656 344.650 m +460.656 320.870 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 105.490 m -563.760 81.710 l +563.760 344.650 m +563.760 320.870 l S [ ] 0 d 1 w @@ -14859,7 +20720,7 @@ S 0.259 0.545 0.792 SCN BT -463.65600000000006 88.9930000000003 Td +463.65600000000006 328.1530000000005 Td /F1.0 10.5 Tf <4c6f6f70> Tj ET @@ -14867,114 +20728,50 @@ ET 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn 0.000 0.000 0.000 scn -q -0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 291.53600000000046 Td +/F2.0 13 Tf +<322e32342e332e20436f6e73756d6573> Tj +ET + 0.000 0.000 0.000 SCN -1 w -0 J -0 j -[ ] 0 d -/Stamp1 Do +0.000 0.000 0.000 scn + +-0.500 Tc 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -49.24 14.388 Td -/F1.0 9 Tf -<38> Tj +56.88050000000001 264.87600000000043 Td +/F1.0 10.5 Tf + Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn -Q -Q -endstream -endobj -110 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 612.0 792.0] -/Contents 109 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 22 0 R -/F1.0 8 0 R -/F4.0 33 0 R -/F3.0 24 0 R ->> -/XObject << /Stamp1 588 0 R ->> ->> -/Annots [111 0 R 117 0 R 122 0 R] ->> -endobj -111 0 obj -<< /Border [0 0 0] -/Dest (_loop) -/Subtype /Link -/Rect [463.65600000000006 699.1270000000001 488.7510000000001 713.407] -/Type /Annot ->> -endobj -112 0 obj -[110 0 R /XYZ 0 683.1600000000001 null] -endobj -113 0 obj -[110 0 R /XYZ 0 626.8800000000002 null] -endobj -114 0 obj -[110 0 R /XYZ 0 586.8000000000003 null] -endobj -115 0 obj -[110 0 R /XYZ 0 481.68000000000046 null] -endobj -116 0 obj -<< /Limits [(_responses_5) (_route45)] -/Names [(_responses_5) 51 0 R (_responses_6) 59 0 R (_responses_7) 65 0 R (_responses_8) 73 0 R (_responses_9) 77 0 R (_route33) 91 0 R (_route34) 162 0 R (_route35) 126 0 R (_route36) 138 0 R (_route37) 154 0 R (_route38) 145 0 R (_route39) 85 0 R (_route40) 101 0 R (_route41) 131 0 R (_route42) 113 0 R (_route43) 106 0 R (_route44) 119 0 R (_route45) 79 0 R] ->> -endobj -117 0 obj -<< /Border [0 0 0] -/Dest (_loop) -/Subtype /Link -/Rect [463.65600000000006 392.52700000000044 488.7510000000001 406.8070000000004] -/Type /Annot ->> -endobj -118 0 obj -[110 0 R /XYZ 0 376.5600000000004 null] -endobj -119 0 obj -[110 0 R /XYZ 0 320.28000000000037 null] -endobj -120 0 obj -[110 0 R /XYZ 0 280.20000000000033 null] -endobj -121 0 obj -[110 0 R /XYZ 0 175.08000000000033 null] -endobj -122 0 obj -<< /Border [0 0 0] -/Dest (_loop) -/Subtype /Link -/Rect [463.65600000000006 85.92700000000029 488.7510000000001 100.20700000000029] -/Type /Annot ->> -endobj -123 0 obj -<< /Length 16227 ->> -stream -q -/DeviceRGB cs +0.000 Tc +0.694 0.129 0.275 scn +0.694 0.129 0.275 SCN + +BT +66.24000000000001 267.0600000000004 Td +/F4.0 10.5 Tf +<6170706c69636174696f6e2f6a736f6e> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn 0.200 0.200 0.200 scn -/DeviceRGB CS 0.200 0.200 0.200 SCN BT -48.24 740.816 Td +48.24000000000001 235.25600000000043 Td /F2.0 13 Tf -<322e31372e332e2050726f6475636573> Tj +<322e32342e342e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -14985,7 +20782,7 @@ ET 0.200 0.200 0.200 SCN BT -56.88050000000001 714.1560000000001 Td +56.88050000000001 208.5960000000004 Td /F1.0 10.5 Tf Tj ET @@ -14998,7 +20795,7 @@ ET 0.694 0.129 0.275 SCN BT -66.24000000000001 716.3400000000001 Td +66.24000000000001 210.7800000000004 Td /F4.0 10.5 Tf <6170706c69636174696f6e2f6a736f6e> Tj ET @@ -15009,9 +20806,9 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 678.6960000000001 Td +48.24000000000001 173.13600000000037 Td /F2.0 18 Tf -<322e31382e20474554202f76322f6c6f6f702f737667526570726573656e746174696f6e2f7b6c6f6f704e616d657d> Tj +[<322e32352e20504f53> 20.01953125 <54>] TJ ET 0.000 0.000 0.000 SCN @@ -15020,59 +20817,286 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 644.4560000000002 Td +48.24000000000001 145.05600000000038 Td +/F2.0 18 Tf +<2f76322f6c6f6f702f7570646174654d6963726f73657276696365506f6c6963792f7b6c6f6f704e616d657d> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 110.81600000000037 Td /F2.0 13 Tf -[<322e31382e312e20506172> 20.01953125 <616d6574657273>] TJ +[<322e32352e312e20506172> 20.01953125 <616d6574657273>] TJ +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +q +0.000 0.000 0.000 scn +0.000 0.000 0.000 SCN +1 w +0 J +0 j +[ ] 0 d +/Stamp1 Do +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +49.24 14.388 Td +/F1.0 9 Tf +<3132> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn +Q +Q + +endstream +endobj +161 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 612.0 792.0] +/Contents 160 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F2.0 24 0 R +/F1.0 8 0 R +/F4.0 35 0 R +/F3.0 26 0 R +>> +/XObject << /Stamp1 684 0 R +>> +>> +/Annots [163 0 R 167 0 R 169 0 R] +>> +endobj +162 0 obj +[161 0 R /XYZ 0 792.0 null] +endobj +163 0 obj +<< /Border [0 0 0] +/Dest (_loop) +/Subtype /Link +/Rect [463.65600000000006 669.2470000000002 488.7510000000001 683.5270000000002] +/Type /Annot +>> +endobj +164 0 obj +[161 0 R /XYZ 0 653.2800000000002 null] +endobj +165 0 obj +[161 0 R /XYZ 0 597.0000000000003 null] +endobj +166 0 obj +[161 0 R /XYZ 0 556.9200000000004 null] +endobj +167 0 obj +<< /Border [0 0 0] +/Dest (_jsonobject) +/Subtype /Link +/Rect [337.6397136 437.3470000000005 390.7907136 451.6270000000005] +/Type /Annot +>> +endobj +168 0 obj +[161 0 R /XYZ 0 414.2400000000005 null] +endobj +169 0 obj +<< /Border [0 0 0] +/Dest (_loop) +/Subtype /Link +/Rect [463.65600000000006 325.0870000000005 488.7510000000001 339.3670000000005] +/Type /Annot +>> +endobj +170 0 obj +[161 0 R /XYZ 0 309.12000000000046 null] +endobj +171 0 obj +[161 0 R /XYZ 0 252.84000000000043 null] +endobj +172 0 obj +[161 0 R /XYZ 0 196.5600000000004 null] +endobj +173 0 obj +[161 0 R /XYZ 0 128.40000000000038 null] +endobj +174 0 obj +<< /Length 19757 +>> +stream +q +/DeviceRGB cs 1.000 1.000 1.000 scn -48.240 606.480 114.560 23.280 re +48.240 732.720 114.560 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 606.480 171.840 23.280 re +162.800 732.720 171.840 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 606.480 229.120 23.280 re +334.640 732.720 229.120 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 568.920 114.560 37.560 re +48.240 695.160 114.560 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 568.920 171.840 37.560 re +162.800 695.160 171.840 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 568.920 229.120 37.560 re +334.640 695.160 229.120 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 657.600 114.560 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +162.800 657.600 171.840 37.560 re f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +334.640 657.600 229.120 37.560 re +f +0.000 0.000 0.000 scn +0.5 w +/DeviceRGB CS +0.867 0.867 0.867 SCN +48.240 756.000 m +162.800 756.000 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +48.240 732.720 m +162.800 732.720 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 756.250 m +48.240 731.970 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 756.250 m +162.800 731.970 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24 740.2529999999999 Td +/F2.0 10.5 Tf +<54797065> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +162.800 756.000 m +334.640 756.000 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +162.800 732.720 m +334.640 732.720 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 756.250 m +162.800 731.970 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 756.250 m +334.640 731.970 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +165.79988544 740.2529999999999 Td +/F2.0 10.5 Tf +<4e616d65> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +334.640 756.000 m +563.760 756.000 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +334.640 732.720 m +563.760 732.720 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 756.250 m +334.640 731.970 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 756.250 m +563.760 731.970 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +337.6397136 740.2529999999999 Td +/F2.0 10.5 Tf +<536368656d61> Tj +ET + 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 629.760 m -162.800 629.760 l +48.240 732.720 m +162.800 732.720 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -48.240 606.480 m -162.800 606.480 l +48.240 695.160 m +162.800 695.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 630.010 m -48.240 605.730 l +48.240 732.970 m +48.240 694.910 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 630.010 m -162.800 605.730 l +162.800 732.970 m +162.800 694.910 l S [ ] 0 d 1 w @@ -15080,34 +21104,34 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 614.0130000000003 Td +51.24 709.333 Td /F2.0 10.5 Tf -<54797065> Tj +<50617468> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 629.760 m -334.640 629.760 l +162.800 732.720 m +334.640 732.720 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -162.800 606.480 m -334.640 606.480 l +162.800 695.160 m +334.640 695.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 630.010 m -162.800 605.730 l +162.800 732.970 m +162.800 694.910 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 630.010 m -334.640 605.730 l +334.640 732.970 m +334.640 694.910 l S [ ] 0 d 1 w @@ -15115,34 +21139,46 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 614.0130000000003 Td +165.79988544 716.473 Td /F2.0 10.5 Tf -<4e616d65> Tj +<6c6f6f704e616d65> Tj +ET + + +BT +165.79988544 702.193 Td +ET + + +BT +165.79988544 702.193 Td +/F3.0 10.5 Tf +<7265717569726564> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 629.760 m -563.760 629.760 l +334.640 732.720 m +563.760 732.720 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -334.640 606.480 m -563.760 606.480 l +334.640 695.160 m +563.760 695.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 630.010 m -334.640 605.730 l +334.640 732.970 m +334.640 694.910 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 630.010 m -563.760 605.730 l +563.760 732.970 m +563.760 694.910 l S [ ] 0 d 1 w @@ -15150,34 +21186,34 @@ S 0.200 0.200 0.200 scn BT -337.6397136 614.0130000000003 Td -/F2.0 10.5 Tf -<536368656d61> Tj +337.6397136 709.333 Td +/F1.0 10.5 Tf +<737472696e67> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 606.480 m -162.800 606.480 l +48.240 695.160 m +162.800 695.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 568.920 m -162.800 568.920 l +48.240 657.600 m +162.800 657.600 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 606.730 m -48.240 568.670 l +48.240 695.410 m +48.240 657.350 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 606.730 m -162.800 568.670 l +162.800 695.410 m +162.800 657.350 l S [ ] 0 d 1 w @@ -15185,34 +21221,34 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 583.0930000000003 Td +51.24 671.7729999999999 Td /F2.0 10.5 Tf -<50617468> Tj +<426f6479> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 606.480 m -334.640 606.480 l +162.800 695.160 m +334.640 695.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 568.920 m -334.640 568.920 l +162.800 657.600 m +334.640 657.600 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 606.730 m -162.800 568.670 l +162.800 695.410 m +162.800 657.350 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 606.730 m -334.640 568.670 l +334.640 695.410 m +334.640 657.350 l S [ ] 0 d 1 w @@ -15220,19 +21256,19 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 590.2330000000004 Td +165.79988544 678.913 Td /F2.0 10.5 Tf -<6c6f6f704e616d65> Tj +<626f6479> Tj ET BT -165.79988544000003 575.9530000000003 Td +165.79988544 664.6329999999999 Td ET BT -165.79988544000003 575.9530000000003 Td +165.79988544 664.6329999999999 Td /F3.0 10.5 Tf <7265717569726564> Tj ET @@ -15240,96 +21276,104 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 606.480 m -563.760 606.480 l +334.640 695.160 m +563.760 695.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 568.920 m -563.760 568.920 l +334.640 657.600 m +563.760 657.600 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 606.730 m -334.640 568.670 l +334.640 695.410 m +334.640 657.350 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 606.730 m -563.760 568.670 l +563.760 695.410 m +563.760 657.350 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT -337.6397136 583.0930000000003 Td +337.6397136 671.7729999999999 Td /F1.0 10.5 Tf -<737472696e67> Tj +<4d6963726f53657276696365506f6c696379> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24000000000001 539.3360000000004 Td +48.24 628.016 Td /F2.0 13 Tf -<322e31382e322e20526573706f6e736573> Tj +<322e32352e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 487.080 51.552 37.560 re +48.240 575.760 51.552 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 487.080 360.864 37.560 re +99.792 575.760 360.864 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 487.080 103.104 37.560 re +460.656 575.760 103.104 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 463.800 51.552 23.280 re +48.240 552.480 51.552 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 463.800 360.864 23.280 re +99.792 552.480 360.864 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 463.800 103.104 23.280 re +460.656 552.480 103.104 23.280 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 524.640 m -99.792 524.640 l +48.240 613.320 m +99.792 613.320 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 487.080 m -99.792 487.080 l +48.240 575.760 m +99.792 575.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 524.890 m -48.240 486.330 l +48.240 613.570 m +48.240 575.010 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 524.890 m -99.792 486.330 l +99.792 613.570 m +99.792 575.010 l S [ ] 0 d 1 w @@ -15337,14 +21381,14 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 508.8930000000004 Td +51.24 597.5730000000001 Td /F2.0 10.5 Tf <48545450> Tj ET BT -51.24000000000001 494.6130000000004 Td +51.24 583.293 Td /F2.0 10.5 Tf <436f6465> Tj ET @@ -15352,26 +21396,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 524.640 m -460.656 524.640 l +99.792 613.320 m +460.656 613.320 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -99.792 487.080 m -460.656 487.080 l +99.792 575.760 m +460.656 575.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 524.890 m -99.792 486.330 l +99.792 613.570 m +99.792 575.010 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 524.890 m -460.656 486.330 l +460.656 613.570 m +460.656 575.010 l S [ ] 0 d 1 w @@ -15379,7 +21423,7 @@ S 0.200 0.200 0.200 scn BT -102.792 508.8930000000004 Td +102.792 597.5730000000001 Td /F2.0 10.5 Tf <4465736372697074696f6e> Tj ET @@ -15387,26 +21431,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 524.640 m -563.760 524.640 l +460.656 613.320 m +563.760 613.320 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -460.656 487.080 m -563.760 487.080 l +460.656 575.760 m +563.760 575.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 524.890 m -460.656 486.330 l +460.656 613.570 m +460.656 575.010 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 524.890 m -563.760 486.330 l +563.760 613.570 m +563.760 575.010 l S [ ] 0 d 1 w @@ -15414,7 +21458,7 @@ S 0.200 0.200 0.200 scn BT -463.65600000000006 508.8930000000004 Td +463.65600000000006 597.5730000000001 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -15422,26 +21466,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 487.080 m -99.792 487.080 l +48.240 575.760 m +99.792 575.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 463.800 m -99.792 463.800 l +48.240 552.480 m +99.792 552.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 487.330 m -48.240 463.550 l +48.240 576.010 m +48.240 552.230 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 487.330 m -99.792 463.550 l +99.792 576.010 m +99.792 552.230 l S [ ] 0 d 1 w @@ -15449,7 +21493,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 470.8330000000004 Td +51.24 559.5129999999999 Td /F2.0 10.5 Tf <323030> Tj ET @@ -15457,26 +21501,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 487.080 m -460.656 487.080 l +99.792 575.760 m +460.656 575.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 463.800 m -460.656 463.800 l +99.792 552.480 m +460.656 552.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 487.330 m -99.792 463.550 l +99.792 576.010 m +99.792 552.230 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 487.330 m -460.656 463.550 l +460.656 576.010 m +460.656 552.230 l S [ ] 0 d 1 w @@ -15484,7 +21528,7 @@ S 0.200 0.200 0.200 scn BT -102.792 470.8330000000004 Td +102.792 559.5129999999999 Td /F1.0 10.5 Tf <4f75747075742074797065> Tj ET @@ -15492,46 +21536,54 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 487.080 m -563.760 487.080 l +460.656 575.760 m +563.760 575.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 463.800 m -563.760 463.800 l +460.656 552.480 m +563.760 552.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 487.330 m -460.656 463.550 l +460.656 576.010 m +460.656 552.230 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 487.330 m -563.760 463.550 l +563.760 576.010 m +563.760 552.230 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT -463.65600000000006 470.8330000000004 Td +463.65600000000006 559.5129999999999 Td /F1.0 10.5 Tf -<737472696e67> Tj +<4d6963726f53657276696365506f6c696379> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24000000000001 434.2160000000004 Td +48.24 522.8960000000001 Td /F2.0 13 Tf -<322e31382e332e2050726f6475636573> Tj +<322e32352e332e20436f6e73756d6573> Tj ET 0.000 0.000 0.000 SCN @@ -15542,7 +21594,7 @@ ET 0.200 0.200 0.200 SCN BT -56.88050000000001 407.5560000000004 Td +56.88050000000001 496.23600000000016 Td /F1.0 10.5 Tf Tj ET @@ -15555,9 +21607,9 @@ ET 0.694 0.129 0.275 SCN BT -66.24000000000001 409.7400000000004 Td +66.24000000000001 498.4200000000002 Td /F4.0 10.5 Tf -<6170706c69636174696f6e2f786d6c> Tj +<6170706c69636174696f6e2f6a736f6e> Tj ET 0.000 0.000 0.000 SCN @@ -15566,9 +21618,46 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 372.0960000000004 Td +48.24000000000001 466.61600000000016 Td +/F2.0 13 Tf +<322e32352e342e2050726f6475636573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +-0.500 Tc +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +56.88050000000001 439.95600000000013 Td +/F1.0 10.5 Tf + Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +0.000 Tc +0.694 0.129 0.275 scn +0.694 0.129 0.275 SCN + +BT +66.24000000000001 442.14000000000016 Td +/F4.0 10.5 Tf +<6170706c69636174696f6e2f6a736f6e> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 404.49600000000015 Td /F2.0 18 Tf -[<322e31392e20505554202f76322f6c6f6f702f756e6465706c6f> 20.01953125 <792f7b6c6f6f704e616d657d>] TJ +[<322e32362e20504f53> 20.01953125 <54>] TJ ET 0.000 0.000 0.000 SCN @@ -15577,59 +21666,82 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 337.85600000000034 Td +48.24000000000001 376.41600000000017 Td +/F2.0 18 Tf +[<2f76322f6c6f6f702f7570646174654f706572> 20.01953125 <6174696f6e616c506f6c69636965732f7b6c6f6f704e616d657d>] TJ +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 342.1760000000001 Td /F2.0 13 Tf -[<322e31392e312e20506172> 20.01953125 <616d6574657273>] TJ +[<322e32362e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 299.880 114.560 23.280 re +48.240 304.200 114.560 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 299.880 171.840 23.280 re +162.800 304.200 171.840 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 299.880 229.120 23.280 re +334.640 304.200 229.120 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 262.320 114.560 37.560 re +48.240 266.640 114.560 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 262.320 171.840 37.560 re +162.800 266.640 171.840 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 262.320 229.120 37.560 re +334.640 266.640 229.120 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 229.080 114.560 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +162.800 229.080 171.840 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +334.640 229.080 229.120 37.560 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 323.160 m -162.800 323.160 l +48.240 327.480 m +162.800 327.480 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 299.880 m -162.800 299.880 l +48.240 304.200 m +162.800 304.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 323.410 m -48.240 299.130 l +48.240 327.730 m +48.240 303.450 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 323.410 m -162.800 299.130 l +162.800 327.730 m +162.800 303.450 l S [ ] 0 d 1 w @@ -15637,7 +21749,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 307.4130000000003 Td +51.24000000000001 311.73300000000006 Td /F2.0 10.5 Tf <54797065> Tj ET @@ -15645,26 +21757,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 323.160 m -334.640 323.160 l +162.800 327.480 m +334.640 327.480 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -162.800 299.880 m -334.640 299.880 l +162.800 304.200 m +334.640 304.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 323.410 m -162.800 299.130 l +162.800 327.730 m +162.800 303.450 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 323.410 m -334.640 299.130 l +334.640 327.730 m +334.640 303.450 l S [ ] 0 d 1 w @@ -15672,7 +21784,7 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 307.4130000000003 Td +165.79988544000003 311.73300000000006 Td /F2.0 10.5 Tf <4e616d65> Tj ET @@ -15680,26 +21792,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 323.160 m -563.760 323.160 l +334.640 327.480 m +563.760 327.480 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -334.640 299.880 m -563.760 299.880 l +334.640 304.200 m +563.760 304.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 323.410 m -334.640 299.130 l +334.640 327.730 m +334.640 303.450 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 323.410 m -563.760 299.130 l +563.760 327.730 m +563.760 303.450 l S [ ] 0 d 1 w @@ -15707,7 +21819,7 @@ S 0.200 0.200 0.200 scn BT -337.6397136 307.4130000000003 Td +337.6397136 311.73300000000006 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -15715,26 +21827,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 299.880 m -162.800 299.880 l +48.240 304.200 m +162.800 304.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 262.320 m -162.800 262.320 l +48.240 266.640 m +162.800 266.640 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 300.130 m -48.240 262.070 l +48.240 304.450 m +48.240 266.390 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 300.130 m -162.800 262.070 l +162.800 304.450 m +162.800 266.390 l S [ ] 0 d 1 w @@ -15742,7 +21854,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 276.49300000000034 Td +51.24000000000001 280.81300000000005 Td /F2.0 10.5 Tf <50617468> Tj ET @@ -15750,26 +21862,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 299.880 m -334.640 299.880 l +162.800 304.200 m +334.640 304.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 262.320 m -334.640 262.320 l +162.800 266.640 m +334.640 266.640 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 300.130 m -162.800 262.070 l +162.800 304.450 m +162.800 266.390 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 300.130 m -334.640 262.070 l +334.640 304.450 m +334.640 266.390 l S [ ] 0 d 1 w @@ -15777,19 +21889,19 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 283.6330000000003 Td +165.79988544000003 287.95300000000003 Td /F2.0 10.5 Tf <6c6f6f704e616d65> Tj ET BT -165.79988544000003 269.3530000000003 Td +165.79988544000003 273.673 Td ET BT -165.79988544000003 269.3530000000003 Td +165.79988544000003 273.673 Td /F3.0 10.5 Tf <7265717569726564> Tj ET @@ -15797,26 +21909,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 299.880 m -563.760 299.880 l +334.640 304.200 m +563.760 304.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 262.320 m -563.760 262.320 l +334.640 266.640 m +563.760 266.640 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 300.130 m -334.640 262.070 l +334.640 304.450 m +334.640 266.390 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 300.130 m -563.760 262.070 l +563.760 304.450 m +563.760 266.390 l S [ ] 0 d 1 w @@ -15824,69 +21936,194 @@ S 0.200 0.200 0.200 scn BT -337.6397136 276.49300000000034 Td +337.6397136 280.81300000000005 Td /F1.0 10.5 Tf <737472696e67> Tj ET +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 266.640 m +162.800 266.640 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 229.080 m +162.800 229.080 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 266.890 m +48.240 228.830 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 266.890 m +162.800 228.830 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24000000000001 243.25300000000007 Td +/F2.0 10.5 Tf +<426f6479> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +162.800 266.640 m +334.640 266.640 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 229.080 m +334.640 229.080 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 266.890 m +162.800 228.830 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 266.890 m +334.640 228.830 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +165.79988544000003 250.3930000000001 Td +/F2.0 10.5 Tf +<626f6479> Tj +ET + + +BT +165.79988544000003 236.11300000000008 Td +ET + + +BT +165.79988544000003 236.11300000000008 Td +/F3.0 10.5 Tf +<7265717569726564> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +334.640 266.640 m +563.760 266.640 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 229.080 m +563.760 229.080 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 266.890 m +334.640 228.830 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 266.890 m +563.760 228.830 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN + +BT +337.6397136 243.25300000000007 Td +/F1.0 10.5 Tf +[<4a736f6e417272> 20.01953125 <61> 20.01953125 <79>] TJ +ET + +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24000000000001 232.73600000000033 Td +48.24000000000001 199.4960000000001 Td /F2.0 13 Tf -<322e31392e322e20526573706f6e736573> Tj +<322e32362e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 180.480 51.552 37.560 re +48.240 147.240 51.552 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 180.480 360.864 37.560 re +99.792 147.240 360.864 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 180.480 103.104 37.560 re +460.656 147.240 103.104 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 157.200 51.552 23.280 re +48.240 123.960 51.552 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 157.200 360.864 23.280 re +99.792 123.960 360.864 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 157.200 103.104 23.280 re +460.656 123.960 103.104 23.280 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 218.040 m -99.792 218.040 l +48.240 184.800 m +99.792 184.800 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 180.480 m -99.792 180.480 l +48.240 147.240 m +99.792 147.240 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 218.290 m -48.240 179.730 l +48.240 185.050 m +48.240 146.490 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 218.290 m -99.792 179.730 l +99.792 185.050 m +99.792 146.490 l S [ ] 0 d 1 w @@ -15894,14 +22131,14 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 202.29300000000032 Td +51.24000000000001 169.05300000000008 Td /F2.0 10.5 Tf <48545450> Tj ET BT -51.24000000000001 188.01300000000032 Td +51.24000000000001 154.77300000000008 Td /F2.0 10.5 Tf <436f6465> Tj ET @@ -15909,26 +22146,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 218.040 m -460.656 218.040 l +99.792 184.800 m +460.656 184.800 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -99.792 180.480 m -460.656 180.480 l +99.792 147.240 m +460.656 147.240 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 218.290 m -99.792 179.730 l +99.792 185.050 m +99.792 146.490 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 218.290 m -460.656 179.730 l +460.656 185.050 m +460.656 146.490 l S [ ] 0 d 1 w @@ -15936,7 +22173,7 @@ S 0.200 0.200 0.200 scn BT -102.792 202.29300000000032 Td +102.792 169.05300000000008 Td /F2.0 10.5 Tf <4465736372697074696f6e> Tj ET @@ -15944,26 +22181,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 218.040 m -563.760 218.040 l +460.656 184.800 m +563.760 184.800 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -460.656 180.480 m -563.760 180.480 l +460.656 147.240 m +563.760 147.240 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 218.290 m -460.656 179.730 l +460.656 185.050 m +460.656 146.490 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 218.290 m -563.760 179.730 l +563.760 185.050 m +563.760 146.490 l S [ ] 0 d 1 w @@ -15971,7 +22208,7 @@ S 0.200 0.200 0.200 scn BT -463.65600000000006 202.29300000000032 Td +463.65600000000006 169.05300000000008 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -15979,26 +22216,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 180.480 m -99.792 180.480 l +48.240 147.240 m +99.792 147.240 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 157.200 m -99.792 157.200 l +48.240 123.960 m +99.792 123.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 180.730 m -48.240 156.950 l +48.240 147.490 m +48.240 123.710 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 180.730 m -99.792 156.950 l +99.792 147.490 m +99.792 123.710 l S [ ] 0 d 1 w @@ -16006,7 +22243,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 164.23300000000032 Td +51.24000000000001 130.99300000000008 Td /F2.0 10.5 Tf <323030> Tj ET @@ -16014,26 +22251,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 180.480 m -460.656 180.480 l +99.792 147.240 m +460.656 147.240 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 157.200 m -460.656 157.200 l +99.792 123.960 m +460.656 123.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 180.730 m -99.792 156.950 l +99.792 147.490 m +99.792 123.710 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 180.730 m -460.656 156.950 l +460.656 147.490 m +460.656 123.710 l S [ ] 0 d 1 w @@ -16041,7 +22278,7 @@ S 0.200 0.200 0.200 scn BT -102.792 164.23300000000032 Td +102.792 130.99300000000008 Td /F1.0 10.5 Tf <4f75747075742074797065> Tj ET @@ -16049,26 +22286,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 180.480 m -563.760 180.480 l +460.656 147.240 m +563.760 147.240 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 157.200 m -563.760 157.200 l +460.656 123.960 m +563.760 123.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 180.730 m -460.656 156.950 l +460.656 147.490 m +460.656 123.710 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 180.730 m -563.760 156.950 l +563.760 147.490 m +563.760 123.710 l S [ ] 0 d 1 w @@ -16082,7 +22319,7 @@ S 0.259 0.545 0.792 SCN BT -463.65600000000006 164.23300000000032 Td +463.65600000000006 130.99300000000008 Td /F1.0 10.5 Tf <4c6f6f70> Tj ET @@ -16094,9 +22331,9 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 127.61600000000028 Td +48.24000000000001 94.37600000000006 Td /F2.0 13 Tf -<322e31392e332e2050726f6475636573> Tj +<322e32362e332e20436f6e73756d6573> Tj ET 0.000 0.000 0.000 SCN @@ -16107,7 +22344,7 @@ ET 0.200 0.200 0.200 SCN BT -56.88050000000001 100.95600000000027 Td +56.88050000000001 67.71600000000007 Td /F1.0 10.5 Tf Tj ET @@ -16120,7 +22357,7 @@ ET 0.694 0.129 0.275 SCN BT -66.24000000000001 103.14000000000027 Td +66.24000000000001 69.90000000000006 Td /F4.0 10.5 Tf <6170706c69636174696f6e2f6a736f6e> Tj ET @@ -16139,9 +22376,9 @@ q 0.200 0.200 0.200 SCN BT -557.7289999999999 14.388 Td +552.698 14.388 Td /F1.0 9 Tf -<39> Tj +<3133> Tj ET 0.000 0.000 0.000 SCN @@ -16151,65 +22388,78 @@ Q endstream endobj -124 0 obj +175 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 123 0 R +/Contents 174 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 22 0 R +/Font << /F2.0 24 0 R +/F3.0 26 0 R /F1.0 8 0 R -/F4.0 33 0 R -/F3.0 24 0 R +/F4.0 35 0 R >> -/XObject << /Stamp1 588 0 R +/XObject << /Stamp1 684 0 R >> >> -/Annots [134 0 R] +/Annots [176 0 R 178 0 R 183 0 R 185 0 R] >> endobj -125 0 obj -[124 0 R /XYZ 0 792.0 null] +176 0 obj +<< /Border [0 0 0] +/Dest (_microservicepolicy) +/Subtype /Link +/Rect [337.6397136 668.707 433.5677136 682.987] +/Type /Annot +>> endobj -126 0 obj -[124 0 R /XYZ 0 702.1200000000001 null] +177 0 obj +[175 0 R /XYZ 0 645.5999999999999 null] endobj -127 0 obj -[124 0 R /XYZ 0 662.0400000000002 null] +178 0 obj +<< /Border [0 0 0] +/Dest (_microservicepolicy) +/Subtype /Link +/Rect [463.65600000000006 556.447 559.5840000000001 570.727] +/Type /Annot +>> endobj -128 0 obj -[124 0 R /XYZ 0 556.9200000000003 null] +179 0 obj +[175 0 R /XYZ 0 540.48 null] endobj -129 0 obj -[124 0 R /XYZ 0 451.8000000000004 null] +180 0 obj +[175 0 R /XYZ 0 484.20000000000016 null] endobj -130 0 obj -<< /Limits [(_produces_16) (_produces_24)] -/Names [(_produces_16) 125 0 R (_produces_17) 129 0 R (_produces_18) 135 0 R (_produces_19) 144 0 R (_produces_2) 36 0 R (_produces_20) 153 0 R (_produces_21) 161 0 R (_produces_22) 168 0 R (_produces_23) 172 0 R (_produces_24) 176 0 R] ->> +181 0 obj +[175 0 R /XYZ 0 427.92000000000013 null] endobj -131 0 obj -[124 0 R /XYZ 0 395.5200000000004 null] +182 0 obj +[175 0 R /XYZ 0 359.7600000000001 null] endobj -132 0 obj -[124 0 R /XYZ 0 355.44000000000034 null] +183 0 obj +<< /Border [0 0 0] +/Dest (_jsonarray) +/Subtype /Link +/Rect [337.6397136 240.1870000000001 387.64030344375 254.4670000000001] +/Type /Annot +>> endobj -133 0 obj -[124 0 R /XYZ 0 250.32000000000033 null] +184 0 obj +[175 0 R /XYZ 0 217.0800000000001 null] endobj -134 0 obj +185 0 obj << /Border [0 0 0] /Dest (_loop) /Subtype /Link -/Rect [463.65600000000006 161.16700000000031 488.7510000000001 175.44700000000032] +/Rect [463.65600000000006 127.92700000000008 488.7510000000001 142.20700000000008] /Type /Annot >> endobj -135 0 obj -[124 0 R /XYZ 0 145.2000000000003 null] +186 0 obj +[175 0 R /XYZ 0 111.96000000000006 null] endobj -136 0 obj -<< /Length 19642 +187 0 obj +<< /Length 16352 >> stream q @@ -16219,9 +22469,46 @@ q 0.200 0.200 0.200 SCN BT -48.24 734.976 Td +48.24 740.816 Td +/F2.0 13 Tf +<322e32362e342e2050726f6475636573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +-0.500 Tc +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +56.88050000000001 714.1560000000001 Td +/F1.0 10.5 Tf + Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +0.000 Tc +0.694 0.129 0.275 scn +0.694 0.129 0.275 SCN + +BT +66.24000000000001 716.3400000000001 Td +/F4.0 10.5 Tf +<6170706c69636174696f6e2f6a736f6e> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 678.6960000000001 Td /F2.0 18 Tf -[<322e32302e20504f53> 20.01953125 <54202f76322f6c6f6f702f757064617465476c6f62616c50726f706572746965732f7b6c6f6f704e616d657d>] TJ +<322e32372e20474554202f76322f6c6f6f702f7b6c6f6f704e616d657d> Tj ET 0.000 0.000 0.000 SCN @@ -16230,71 +22517,59 @@ ET 0.200 0.200 0.200 SCN BT -48.24 700.7360000000001 Td +48.24000000000001 644.4560000000002 Td /F2.0 13 Tf -[<322e32302e312e20506172> 20.01953125 <616d6574657273>] TJ +[<322e32372e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 662.760 114.560 23.280 re +48.240 606.480 114.560 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 662.760 171.840 23.280 re +162.800 606.480 171.840 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 662.760 229.120 23.280 re +334.640 606.480 229.120 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 625.200 114.560 37.560 re +48.240 568.920 114.560 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 625.200 171.840 37.560 re +162.800 568.920 171.840 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 625.200 229.120 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 587.640 114.560 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -162.800 587.640 171.840 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -334.640 587.640 229.120 37.560 re +334.640 568.920 229.120 37.560 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 686.040 m -162.800 686.040 l +48.240 629.760 m +162.800 629.760 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 662.760 m -162.800 662.760 l +48.240 606.480 m +162.800 606.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 686.290 m -48.240 662.010 l +48.240 630.010 m +48.240 605.730 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 686.290 m -162.800 662.010 l +162.800 630.010 m +162.800 605.730 l S [ ] 0 d 1 w @@ -16302,7 +22577,7 @@ S 0.200 0.200 0.200 scn BT -51.24 670.2930000000001 Td +51.24000000000001 614.0130000000003 Td /F2.0 10.5 Tf <54797065> Tj ET @@ -16310,26 +22585,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 686.040 m -334.640 686.040 l +162.800 629.760 m +334.640 629.760 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -162.800 662.760 m -334.640 662.760 l +162.800 606.480 m +334.640 606.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 686.290 m -162.800 662.010 l +162.800 630.010 m +162.800 605.730 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 686.290 m -334.640 662.010 l +334.640 630.010 m +334.640 605.730 l S [ ] 0 d 1 w @@ -16337,7 +22612,7 @@ S 0.200 0.200 0.200 scn BT -165.79988544 670.2930000000001 Td +165.79988544000003 614.0130000000003 Td /F2.0 10.5 Tf <4e616d65> Tj ET @@ -16345,26 +22620,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 686.040 m -563.760 686.040 l +334.640 629.760 m +563.760 629.760 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -334.640 662.760 m -563.760 662.760 l +334.640 606.480 m +563.760 606.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 686.290 m -334.640 662.010 l +334.640 630.010 m +334.640 605.730 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 686.290 m -563.760 662.010 l +563.760 630.010 m +563.760 605.730 l S [ ] 0 d 1 w @@ -16372,7 +22647,7 @@ S 0.200 0.200 0.200 scn BT -337.6397136 670.2930000000001 Td +337.6397136 614.0130000000003 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -16380,26 +22655,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 662.760 m -162.800 662.760 l +48.240 606.480 m +162.800 606.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 625.200 m -162.800 625.200 l +48.240 568.920 m +162.800 568.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 663.010 m -48.240 624.950 l +48.240 606.730 m +48.240 568.670 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 663.010 m -162.800 624.950 l +162.800 606.730 m +162.800 568.670 l S [ ] 0 d 1 w @@ -16407,7 +22682,7 @@ S 0.200 0.200 0.200 scn BT -51.24 639.3730000000002 Td +51.24000000000001 583.0930000000003 Td /F2.0 10.5 Tf <50617468> Tj ET @@ -16415,26 +22690,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 662.760 m -334.640 662.760 l +162.800 606.480 m +334.640 606.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 625.200 m -334.640 625.200 l +162.800 568.920 m +334.640 568.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 663.010 m -162.800 624.950 l +162.800 606.730 m +162.800 568.670 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 663.010 m -334.640 624.950 l +334.640 606.730 m +334.640 568.670 l S [ ] 0 d 1 w @@ -16442,19 +22717,19 @@ S 0.200 0.200 0.200 scn BT -165.79988544 646.5130000000001 Td +165.79988544000003 590.2330000000004 Td /F2.0 10.5 Tf <6c6f6f704e616d65> Tj ET BT -165.79988544 632.2330000000002 Td +165.79988544000003 575.9530000000003 Td ET BT -165.79988544 632.2330000000002 Td +165.79988544000003 575.9530000000003 Td /F3.0 10.5 Tf <7265717569726564> Tj ET @@ -16462,26 +22737,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 662.760 m -563.760 662.760 l +334.640 606.480 m +563.760 606.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 625.200 m -563.760 625.200 l +334.640 568.920 m +563.760 568.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 663.010 m -334.640 624.950 l +334.640 606.730 m +334.640 568.670 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 663.010 m -563.760 624.950 l +563.760 606.730 m +563.760 568.670 l S [ ] 0 d 1 w @@ -16489,194 +22764,69 @@ S 0.200 0.200 0.200 scn BT -337.6397136 639.3730000000002 Td +337.6397136 583.0930000000003 Td /F1.0 10.5 Tf <737472696e67> Tj ET -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -48.240 625.200 m -162.800 625.200 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -48.240 587.640 m -162.800 587.640 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -48.240 625.450 m -48.240 587.390 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -162.800 625.450 m -162.800 587.390 l -S -[ ] 0 d -1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn - -BT -51.24 601.8130000000001 Td -/F2.0 10.5 Tf -<426f6479> Tj -ET - -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -162.800 625.200 m -334.640 625.200 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -162.800 587.640 m -334.640 587.640 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -162.800 625.450 m -162.800 587.390 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -334.640 625.450 m -334.640 587.390 l -S -[ ] 0 d -1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn - -BT -165.79988544 608.9530000000002 Td -/F2.0 10.5 Tf -<626f6479> Tj -ET - - -BT -165.79988544 594.6730000000001 Td -ET - - -BT -165.79988544 594.6730000000001 Td -/F3.0 10.5 Tf -<7265717569726564> Tj -ET - -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -334.640 625.200 m -563.760 625.200 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -334.640 587.640 m -563.760 587.640 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -334.640 625.450 m -334.640 587.390 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -563.760 625.450 m -563.760 587.390 l -S -[ ] 0 d -1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN - -BT -337.6397136 601.8130000000001 Td -/F1.0 10.5 Tf -<4a736f6e4f626a656374> Tj -ET - -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24 558.0560000000002 Td +48.24000000000001 539.3360000000004 Td /F2.0 13 Tf -<322e32302e322e20526573706f6e736573> Tj +<322e32372e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 505.800 51.552 37.560 re +48.240 487.080 51.552 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 505.800 360.864 37.560 re +99.792 487.080 360.864 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 505.800 103.104 37.560 re +460.656 487.080 103.104 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 482.520 51.552 23.280 re +48.240 463.800 51.552 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 482.520 360.864 23.280 re +99.792 463.800 360.864 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 482.520 103.104 23.280 re +460.656 463.800 103.104 23.280 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 543.360 m -99.792 543.360 l +48.240 524.640 m +99.792 524.640 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 505.800 m -99.792 505.800 l +48.240 487.080 m +99.792 487.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 543.610 m -48.240 505.050 l +48.240 524.890 m +48.240 486.330 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 543.610 m -99.792 505.050 l +99.792 524.890 m +99.792 486.330 l S [ ] 0 d 1 w @@ -16684,14 +22834,14 @@ S 0.200 0.200 0.200 scn BT -51.24 527.6130000000003 Td +51.24000000000001 508.8930000000004 Td /F2.0 10.5 Tf <48545450> Tj ET BT -51.24 513.3330000000002 Td +51.24000000000001 494.6130000000004 Td /F2.0 10.5 Tf <436f6465> Tj ET @@ -16699,26 +22849,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 543.360 m -460.656 543.360 l +99.792 524.640 m +460.656 524.640 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -99.792 505.800 m -460.656 505.800 l +99.792 487.080 m +460.656 487.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 543.610 m -99.792 505.050 l +99.792 524.890 m +99.792 486.330 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 543.610 m -460.656 505.050 l +460.656 524.890 m +460.656 486.330 l S [ ] 0 d 1 w @@ -16726,7 +22876,7 @@ S 0.200 0.200 0.200 scn BT -102.792 527.6130000000003 Td +102.792 508.8930000000004 Td /F2.0 10.5 Tf <4465736372697074696f6e> Tj ET @@ -16734,26 +22884,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 543.360 m -563.760 543.360 l +460.656 524.640 m +563.760 524.640 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -460.656 505.800 m -563.760 505.800 l +460.656 487.080 m +563.760 487.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 543.610 m -460.656 505.050 l +460.656 524.890 m +460.656 486.330 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 543.610 m -563.760 505.050 l +563.760 524.890 m +563.760 486.330 l S [ ] 0 d 1 w @@ -16761,7 +22911,7 @@ S 0.200 0.200 0.200 scn BT -463.65600000000006 527.6130000000003 Td +463.65600000000006 508.8930000000004 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -16769,26 +22919,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 505.800 m -99.792 505.800 l +48.240 487.080 m +99.792 487.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 482.520 m -99.792 482.520 l +48.240 463.800 m +99.792 463.800 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 506.050 m -48.240 482.270 l +48.240 487.330 m +48.240 463.550 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 506.050 m -99.792 482.270 l +99.792 487.330 m +99.792 463.550 l S [ ] 0 d 1 w @@ -16796,7 +22946,7 @@ S 0.200 0.200 0.200 scn BT -51.24 489.5530000000002 Td +51.24000000000001 470.8330000000004 Td /F2.0 10.5 Tf <323030> Tj ET @@ -16804,26 +22954,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 505.800 m -460.656 505.800 l +99.792 487.080 m +460.656 487.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 482.520 m -460.656 482.520 l +99.792 463.800 m +460.656 463.800 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 506.050 m -99.792 482.270 l +99.792 487.330 m +99.792 463.550 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 506.050 m -460.656 482.270 l +460.656 487.330 m +460.656 463.550 l S [ ] 0 d 1 w @@ -16831,7 +22981,7 @@ S 0.200 0.200 0.200 scn BT -102.792 489.5530000000002 Td +102.792 470.8330000000004 Td /F1.0 10.5 Tf <4f75747075742074797065> Tj ET @@ -16839,26 +22989,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 505.800 m -563.760 505.800 l +460.656 487.080 m +563.760 487.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 482.520 m -563.760 482.520 l +460.656 463.800 m +563.760 463.800 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 506.050 m -460.656 482.270 l +460.656 487.330 m +460.656 463.550 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 506.050 m -563.760 482.270 l +563.760 487.330 m +563.760 463.550 l S [ ] 0 d 1 w @@ -16872,7 +23022,7 @@ S 0.259 0.545 0.792 SCN BT -463.65600000000006 489.5530000000002 Td +463.65600000000006 470.8330000000004 Td /F1.0 10.5 Tf <4c6f6f70> Tj ET @@ -16884,46 +23034,9 @@ ET 0.200 0.200 0.200 SCN BT -48.24 452.9360000000002 Td -/F2.0 13 Tf -<322e32302e332e20436f6e73756d6573> Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn - --0.500 Tc -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -56.88050000000001 426.2760000000002 Td -/F1.0 10.5 Tf - Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn - -0.000 Tc -0.694 0.129 0.275 scn -0.694 0.129 0.275 SCN - -BT -66.24000000000001 428.4600000000002 Td -/F4.0 10.5 Tf -<6170706c69636174696f6e2f6a736f6e> Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -48.24000000000001 396.6560000000002 Td +48.24000000000001 434.2160000000004 Td /F2.0 13 Tf -<322e32302e342e2050726f6475636573> Tj +<322e32372e332e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -16934,7 +23047,7 @@ ET 0.200 0.200 0.200 SCN BT -56.88050000000001 369.99600000000015 Td +56.88050000000001 407.5560000000004 Td /F1.0 10.5 Tf Tj ET @@ -16947,7 +23060,7 @@ ET 0.694 0.129 0.275 SCN BT -66.24000000000001 372.1800000000002 Td +66.24000000000001 409.7400000000004 Td /F4.0 10.5 Tf <6170706c69636174696f6e2f6a736f6e> Tj ET @@ -16958,20 +23071,9 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 334.5360000000002 Td -/F2.0 18 Tf -[<322e32312e20504f53> 20.01953125 <54>] TJ -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -48.24000000000001 306.45600000000013 Td +48.24000000000001 372.0960000000004 Td /F2.0 18 Tf -<2f76322f6c6f6f702f7570646174654d6963726f73657276696365506f6c6963792f7b6c6f6f704e616d657d> Tj +[<322e32382e20504f53> 20.01953125 <54202f76322f706f6c69637954> 29.78515625 <6f7363614d6f64656c73>] TJ ET 0.000 0.000 0.000 SCN @@ -16980,176 +23082,59 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 272.2160000000001 Td +48.24000000000001 337.85600000000034 Td /F2.0 13 Tf -[<322e32312e312e20506172> 20.01953125 <616d6574657273>] TJ +[<322e32382e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 234.240 114.560 23.280 re +48.240 299.880 114.560 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 234.240 171.840 23.280 re +162.800 299.880 171.840 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 234.240 229.120 23.280 re +334.640 299.880 229.120 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 196.680 114.560 37.560 re +48.240 262.320 114.560 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 196.680 171.840 37.560 re +162.800 262.320 171.840 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 196.680 229.120 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 159.120 114.560 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -162.800 159.120 171.840 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -334.640 159.120 229.120 37.560 re +334.640 262.320 229.120 37.560 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 257.520 m -162.800 257.520 l -S -[ ] 0 d -1.5 w -0.867 0.867 0.867 SCN -48.240 234.240 m -162.800 234.240 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -48.240 257.770 m -48.240 233.490 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -162.800 257.770 m -162.800 233.490 l -S -[ ] 0 d -1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn - -BT -51.24000000000001 241.7730000000001 Td -/F2.0 10.5 Tf -<54797065> Tj -ET - -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -162.800 257.520 m -334.640 257.520 l -S -[ ] 0 d -1.5 w -0.867 0.867 0.867 SCN -162.800 234.240 m -334.640 234.240 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -162.800 257.770 m -162.800 233.490 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -334.640 257.770 m -334.640 233.490 l -S -[ ] 0 d -1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn - -BT -165.79988544000003 241.7730000000001 Td -/F2.0 10.5 Tf -<4e616d65> Tj -ET - -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -334.640 257.520 m -563.760 257.520 l +48.240 323.160 m +162.800 323.160 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -334.640 234.240 m -563.760 234.240 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -334.640 257.770 m -334.640 233.490 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -563.760 257.770 m -563.760 233.490 l -S -[ ] 0 d -1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn - -BT -337.6397136 241.7730000000001 Td -/F2.0 10.5 Tf -<536368656d61> Tj -ET - -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -48.240 234.240 m -162.800 234.240 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -48.240 196.680 m -162.800 196.680 l +48.240 299.880 m +162.800 299.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 234.490 m -48.240 196.430 l +48.240 323.410 m +48.240 299.130 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 234.490 m -162.800 196.430 l +162.800 323.410 m +162.800 299.130 l S [ ] 0 d 1 w @@ -17157,34 +23142,34 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 210.8530000000001 Td +51.24000000000001 307.4130000000003 Td /F2.0 10.5 Tf -<50617468> Tj +<54797065> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 234.240 m -334.640 234.240 l +162.800 323.160 m +334.640 323.160 l S [ ] 0 d -0.5 w +1.5 w 0.867 0.867 0.867 SCN -162.800 196.680 m -334.640 196.680 l +162.800 299.880 m +334.640 299.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 234.490 m -162.800 196.430 l +162.800 323.410 m +162.800 299.130 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 234.490 m -334.640 196.430 l +334.640 323.410 m +334.640 299.130 l S [ ] 0 d 1 w @@ -17192,46 +23177,34 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 217.9930000000001 Td +165.79988544000003 307.4130000000003 Td /F2.0 10.5 Tf -<6c6f6f704e616d65> Tj -ET - - -BT -165.79988544000003 203.7130000000001 Td -ET - - -BT -165.79988544000003 203.7130000000001 Td -/F3.0 10.5 Tf -<7265717569726564> Tj +<4e616d65> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 234.240 m -563.760 234.240 l +334.640 323.160 m +563.760 323.160 l S [ ] 0 d -0.5 w +1.5 w 0.867 0.867 0.867 SCN -334.640 196.680 m -563.760 196.680 l +334.640 299.880 m +563.760 299.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 234.490 m -334.640 196.430 l +334.640 323.410 m +334.640 299.130 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 234.490 m -563.760 196.430 l +563.760 323.410 m +563.760 299.130 l S [ ] 0 d 1 w @@ -17239,34 +23212,34 @@ S 0.200 0.200 0.200 scn BT -337.6397136 210.8530000000001 Td -/F1.0 10.5 Tf -<737472696e67> Tj +337.6397136 307.4130000000003 Td +/F2.0 10.5 Tf +<536368656d61> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 196.680 m -162.800 196.680 l +48.240 299.880 m +162.800 299.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 159.120 m -162.800 159.120 l +48.240 262.320 m +162.800 262.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 196.930 m -48.240 158.870 l +48.240 300.130 m +48.240 262.070 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 196.930 m -162.800 158.870 l +162.800 300.130 m +162.800 262.070 l S [ ] 0 d 1 w @@ -17274,7 +23247,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 173.2930000000001 Td +51.24000000000001 276.49300000000034 Td /F2.0 10.5 Tf <426f6479> Tj ET @@ -17282,26 +23255,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 196.680 m -334.640 196.680 l +162.800 299.880 m +334.640 299.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 159.120 m -334.640 159.120 l +162.800 262.320 m +334.640 262.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 196.930 m -162.800 158.870 l +162.800 300.130 m +162.800 262.070 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 196.930 m -334.640 158.870 l +334.640 300.130 m +334.640 262.070 l S [ ] 0 d 1 w @@ -17309,19 +23282,19 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 180.4330000000001 Td +165.79988544000003 283.6330000000003 Td /F2.0 10.5 Tf <626f6479> Tj ET BT -165.79988544000003 166.1530000000001 Td +165.79988544000003 269.3530000000003 Td ET BT -165.79988544000003 166.1530000000001 Td +165.79988544000003 269.3530000000003 Td /F3.0 10.5 Tf <7265717569726564> Tj ET @@ -17329,104 +23302,96 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 196.680 m -563.760 196.680 l +334.640 299.880 m +563.760 299.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 159.120 m -563.760 159.120 l +334.640 262.320 m +563.760 262.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 196.930 m -334.640 158.870 l +334.640 300.130 m +334.640 262.070 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 196.930 m -563.760 158.870 l +563.760 300.130 m +563.760 262.070 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -337.6397136 173.2930000000001 Td +337.6397136 276.49300000000034 Td /F1.0 10.5 Tf -<4d6963726f53657276696365506f6c696379> Tj +<737472696e67> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24000000000001 129.53600000000006 Td +48.24000000000001 232.73600000000033 Td /F2.0 13 Tf -<322e32312e322e20526573706f6e736573> Tj +<322e32382e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 77.280 51.552 37.560 re +48.240 180.480 51.552 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 77.280 360.864 37.560 re +99.792 180.480 360.864 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 77.280 103.104 37.560 re +460.656 180.480 103.104 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 54.000 51.552 23.280 re +48.240 157.200 51.552 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 54.000 360.864 23.280 re +99.792 157.200 360.864 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 54.000 103.104 23.280 re +460.656 157.200 103.104 23.280 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 114.840 m -99.792 114.840 l +48.240 218.040 m +99.792 218.040 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 77.280 m -99.792 77.280 l +48.240 180.480 m +99.792 180.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 115.090 m -48.240 76.530 l +48.240 218.290 m +48.240 179.730 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 115.090 m -99.792 76.530 l +99.792 218.290 m +99.792 179.730 l S [ ] 0 d 1 w @@ -17434,14 +23399,14 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 99.09300000000006 Td +51.24000000000001 202.29300000000032 Td /F2.0 10.5 Tf <48545450> Tj ET BT -51.24000000000001 84.81300000000006 Td +51.24000000000001 188.01300000000032 Td /F2.0 10.5 Tf <436f6465> Tj ET @@ -17449,26 +23414,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 114.840 m -460.656 114.840 l +99.792 218.040 m +460.656 218.040 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -99.792 77.280 m -460.656 77.280 l +99.792 180.480 m +460.656 180.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 115.090 m -99.792 76.530 l +99.792 218.290 m +99.792 179.730 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 115.090 m -460.656 76.530 l +460.656 218.290 m +460.656 179.730 l S [ ] 0 d 1 w @@ -17476,7 +23441,7 @@ S 0.200 0.200 0.200 scn BT -102.792 99.09300000000006 Td +102.792 202.29300000000032 Td /F2.0 10.5 Tf <4465736372697074696f6e> Tj ET @@ -17484,26 +23449,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 114.840 m -563.760 114.840 l +460.656 218.040 m +563.760 218.040 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -460.656 77.280 m -563.760 77.280 l +460.656 180.480 m +563.760 180.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 115.090 m -460.656 76.530 l +460.656 218.290 m +460.656 179.730 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 115.090 m -563.760 76.530 l +563.760 218.290 m +563.760 179.730 l S [ ] 0 d 1 w @@ -17511,7 +23476,7 @@ S 0.200 0.200 0.200 scn BT -463.65600000000006 99.09300000000006 Td +463.65600000000006 202.29300000000032 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -17519,26 +23484,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 77.280 m -99.792 77.280 l +48.240 180.480 m +99.792 180.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 54.000 m -99.792 54.000 l +48.240 157.200 m +99.792 157.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 77.530 m -48.240 53.750 l +48.240 180.730 m +48.240 156.950 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 77.530 m -99.792 53.750 l +99.792 180.730 m +99.792 156.950 l S [ ] 0 d 1 w @@ -17546,7 +23511,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 61.03300000000006 Td +51.24000000000001 164.23300000000032 Td /F2.0 10.5 Tf <323030> Tj ET @@ -17554,26 +23519,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 77.280 m -460.656 77.280 l +99.792 180.480 m +460.656 180.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 54.000 m -460.656 54.000 l +99.792 157.200 m +460.656 157.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 77.530 m -99.792 53.750 l +99.792 180.730 m +99.792 156.950 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 77.530 m -460.656 53.750 l +460.656 180.730 m +460.656 156.950 l S [ ] 0 d 1 w @@ -17581,7 +23546,7 @@ S 0.200 0.200 0.200 scn BT -102.792 61.03300000000006 Td +102.792 164.23300000000032 Td /F1.0 10.5 Tf <4f75747075742074797065> Tj ET @@ -17589,26 +23554,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 77.280 m -563.760 77.280 l +460.656 180.480 m +563.760 180.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 54.000 m -563.760 54.000 l +460.656 157.200 m +563.760 157.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 77.530 m -460.656 53.750 l +460.656 180.730 m +460.656 156.950 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 77.530 m -563.760 53.750 l +563.760 180.730 m +563.760 156.950 l S [ ] 0 d 1 w @@ -17622,13 +23587,50 @@ S 0.259 0.545 0.792 SCN BT -463.65600000000006 61.03300000000006 Td +463.65600000000006 164.23300000000032 Td /F1.0 10.5 Tf -<4d6963726f53657276696365506f6c696379> Tj +<506f6c6963794d6f64656c> Tj +ET + +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 127.61600000000028 Td +/F2.0 13 Tf +<322e32382e332e20436f6e73756d6573> Tj ET 0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +-0.500 Tc 0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +56.88050000000001 100.95600000000027 Td +/F1.0 10.5 Tf + Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +0.000 Tc +0.694 0.129 0.275 scn +0.694 0.129 0.275 SCN + +BT +66.24000000000001 103.14000000000027 Td +/F4.0 10.5 Tf +<706c61696e2f74657874> Tj +ET + +0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn q 0.000 0.000 0.000 scn @@ -17644,7 +23646,7 @@ q BT 49.24 14.388 Td /F1.0 9 Tf -<3130> Tj +<3134> Tj ET 0.000 0.000 0.000 SCN @@ -17654,633 +23656,183 @@ Q endstream endobj -137 0 obj +188 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 136 0 R +/Contents 187 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 22 0 R -/F3.0 24 0 R +/Font << /F2.0 24 0 R /F1.0 8 0 R -/F4.0 33 0 R +/F4.0 35 0 R +/F3.0 26 0 R >> -/XObject << /Stamp1 588 0 R +/XObject << /Stamp1 684 0 R >> >> -/Annots [140 0 R 142 0 R 147 0 R 149 0 R] +/Annots [194 0 R 199 0 R] >> endobj -138 0 obj -[137 0 R /XYZ 0 792.0 null] +189 0 obj +[188 0 R /XYZ 0 792.0 null] endobj -139 0 obj -[137 0 R /XYZ 0 718.32 null] +190 0 obj +[188 0 R /XYZ 0 702.1200000000001 null] endobj -140 0 obj -<< /Border [0 0 0] -/Dest (_jsonobject) -/Subtype /Link -/Rect [337.6397136 598.7470000000002 390.7907136 613.0270000000002] -/Type /Annot ->> +191 0 obj +[188 0 R /XYZ 0 662.0400000000002 null] endobj -141 0 obj -[137 0 R /XYZ 0 575.6400000000001 null] +192 0 obj +[188 0 R /XYZ 0 556.9200000000003 null] endobj -142 0 obj +193 0 obj +<< /Limits [(_responses_2) (_responses_4)] +/Names [(_responses_2) 37 0 R (_responses_20) 142 0 R (_responses_21) 149 0 R (_responses_22) 156 0 R (_responses_23) 162 0 R (_responses_24) 168 0 R (_responses_25) 177 0 R (_responses_26) 184 0 R (_responses_27) 192 0 R (_responses_28) 198 0 R (_responses_29) 205 0 R (_responses_3) 40 0 R (_responses_30) 211 0 R (_responses_31) 217 0 R (_responses_32) 225 0 R (_responses_33) 230 0 R (_responses_34) 234 0 R (_responses_35) 241 0 R (_responses_36) 246 0 R (_responses_4) 46 0 R] +>> +endobj +194 0 obj << /Border [0 0 0] /Dest (_loop) /Subtype /Link -/Rect [463.65600000000006 486.48700000000025 488.7510000000001 500.7670000000002] +/Rect [463.65600000000006 467.76700000000045 488.7510000000001 482.0470000000004] /Type /Annot >> endobj -143 0 obj -[137 0 R /XYZ 0 470.5200000000002 null] +195 0 obj +[188 0 R /XYZ 0 451.8000000000004 null] endobj -144 0 obj -[137 0 R /XYZ 0 414.2400000000002 null] +196 0 obj +[188 0 R /XYZ 0 395.5200000000004 null] endobj -145 0 obj -[137 0 R /XYZ 0 357.96000000000015 null] +197 0 obj +[188 0 R /XYZ 0 355.44000000000034 null] endobj -146 0 obj -[137 0 R /XYZ 0 289.8000000000001 null] +198 0 obj +[188 0 R /XYZ 0 250.32000000000033 null] endobj -147 0 obj +199 0 obj << /Border [0 0 0] -/Dest (_microservicepolicy) +/Dest (_policymodel) /Subtype /Link -/Rect [337.6397136 170.22700000000012 433.5677136 184.50700000000012] +/Rect [463.65600000000006 161.16700000000031 524.955 175.44700000000032] /Type /Annot >> endobj -148 0 obj -[137 0 R /XYZ 0 147.1200000000001 null] -endobj -149 0 obj -<< /Border [0 0 0] -/Dest (_microservicepolicy) -/Subtype /Link -/Rect [463.65600000000006 57.967000000000056 559.5840000000001 72.24700000000006] -/Type /Annot ->> +200 0 obj +[188 0 R /XYZ 0 145.2000000000003 null] endobj -150 0 obj -<< /Length 15455 +201 0 obj +<< /Length 14906 >> stream q /DeviceRGB cs 0.200 0.200 0.200 scn -/DeviceRGB CS -0.200 0.200 0.200 SCN - -BT -48.24 740.816 Td -/F2.0 13 Tf -<322e32312e332e20436f6e73756d6573> Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn - --0.500 Tc -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -56.88050000000001 714.1560000000001 Td -/F1.0 10.5 Tf - Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn - -0.000 Tc -0.694 0.129 0.275 scn -0.694 0.129 0.275 SCN - -BT -66.24000000000001 716.3400000000001 Td -/F4.0 10.5 Tf -<6170706c69636174696f6e2f6a736f6e> Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -48.24000000000001 684.5360000000002 Td -/F2.0 13 Tf -<322e32312e342e2050726f6475636573> Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn - --0.500 Tc -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -56.88050000000001 657.8760000000002 Td -/F1.0 10.5 Tf - Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn - -0.000 Tc -0.694 0.129 0.275 scn -0.694 0.129 0.275 SCN - -BT -66.24000000000001 660.0600000000003 Td -/F4.0 10.5 Tf -<6170706c69636174696f6e2f6a736f6e> Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -48.24000000000001 622.4160000000003 Td -/F2.0 18 Tf -[<322e32322e20504f53> 20.01953125 <54>] TJ -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -48.24000000000001 594.3360000000004 Td -/F2.0 18 Tf -[<2f76322f6c6f6f702f7570646174654f706572> 20.01953125 <6174696f6e616c506f6c69636965732f7b6c6f6f704e616d657d>] TJ -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -48.24000000000001 560.0960000000005 Td -/F2.0 13 Tf -[<322e32322e312e20506172> 20.01953125 <616d6574657273>] TJ -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 522.120 114.560 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -162.800 522.120 171.840 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -334.640 522.120 229.120 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 484.560 114.560 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -162.800 484.560 171.840 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -334.640 484.560 229.120 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 447.000 114.560 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -162.800 447.000 171.840 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -334.640 447.000 229.120 37.560 re -f -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -48.240 545.400 m -162.800 545.400 l -S -[ ] 0 d -1.5 w -0.867 0.867 0.867 SCN -48.240 522.120 m -162.800 522.120 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -48.240 545.650 m -48.240 521.370 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -162.800 545.650 m -162.800 521.370 l -S -[ ] 0 d -1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn - -BT -51.24000000000001 529.6530000000005 Td -/F2.0 10.5 Tf -<54797065> Tj -ET - -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -162.800 545.400 m -334.640 545.400 l -S -[ ] 0 d -1.5 w -0.867 0.867 0.867 SCN -162.800 522.120 m -334.640 522.120 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -162.800 545.650 m -162.800 521.370 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -334.640 545.650 m -334.640 521.370 l -S -[ ] 0 d -1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn - -BT -165.79988544000003 529.6530000000005 Td -/F2.0 10.5 Tf -<4e616d65> Tj -ET - -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -334.640 545.400 m -563.760 545.400 l -S -[ ] 0 d -1.5 w -0.867 0.867 0.867 SCN -334.640 522.120 m -563.760 522.120 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -334.640 545.650 m -334.640 521.370 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -563.760 545.650 m -563.760 521.370 l -S -[ ] 0 d -1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn - -BT -337.6397136 529.6530000000005 Td -/F2.0 10.5 Tf -<536368656d61> Tj -ET - -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -48.240 522.120 m -162.800 522.120 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -48.240 484.560 m -162.800 484.560 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -48.240 522.370 m -48.240 484.310 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -162.800 522.370 m -162.800 484.310 l -S -[ ] 0 d -1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn - -BT -51.24000000000001 498.7330000000006 Td -/F2.0 10.5 Tf -<50617468> Tj -ET - -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -162.800 522.120 m -334.640 522.120 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -162.800 484.560 m -334.640 484.560 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -162.800 522.370 m -162.800 484.310 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -334.640 522.370 m -334.640 484.310 l -S -[ ] 0 d -1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn - -BT -165.79988544000003 505.87300000000056 Td -/F2.0 10.5 Tf -<6c6f6f704e616d65> Tj -ET - - -BT -165.79988544000003 491.59300000000053 Td -ET - - -BT -165.79988544000003 491.59300000000053 Td -/F3.0 10.5 Tf -<7265717569726564> Tj -ET - -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -334.640 522.120 m -563.760 522.120 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -334.640 484.560 m -563.760 484.560 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -334.640 522.370 m -334.640 484.310 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -563.760 522.370 m -563.760 484.310 l -S -[ ] 0 d -1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn +/DeviceRGB CS +0.200 0.200 0.200 SCN BT -337.6397136 498.7330000000006 Td -/F1.0 10.5 Tf -<737472696e67> Tj +48.24 740.816 Td +/F2.0 13 Tf +<322e32382e342e2050726f6475636573> Tj ET -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -48.240 484.560 m -162.800 484.560 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -48.240 447.000 m -162.800 447.000 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -48.240 484.810 m -48.240 446.750 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -162.800 484.810 m -162.800 446.750 l -S -[ ] 0 d -1 w 0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn - -BT -51.24000000000001 461.1730000000005 Td -/F2.0 10.5 Tf -<426f6479> Tj -ET - 0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -162.800 484.560 m -334.640 484.560 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -162.800 447.000 m -334.640 447.000 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -162.800 484.810 m -162.800 446.750 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -334.640 484.810 m -334.640 446.750 l -S -[ ] 0 d -1 w -0.000 0.000 0.000 SCN + +-0.500 Tc 0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN BT -165.79988544000003 468.3130000000005 Td -/F2.0 10.5 Tf -<626f6479> Tj +56.88050000000001 714.1560000000001 Td +/F1.0 10.5 Tf + Tj ET +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn -BT -165.79988544000003 454.03300000000047 Td -ET - +0.000 Tc +0.694 0.129 0.275 scn +0.694 0.129 0.275 SCN BT -165.79988544000003 454.03300000000047 Td -/F3.0 10.5 Tf -<7265717569726564> Tj +66.24000000000001 716.3400000000001 Td +/F4.0 10.5 Tf +<6170706c69636174696f6e2f6a736f6e> Tj ET -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -334.640 484.560 m -563.760 484.560 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -334.640 447.000 m -563.760 447.000 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -334.640 484.810 m -334.640 446.750 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -563.760 484.810 m -563.760 446.750 l -S -[ ] 0 d -1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN 0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN +0.200 0.200 0.200 SCN BT -337.6397136 461.1730000000005 Td -/F1.0 10.5 Tf -[<4a736f6e417272> 20.01953125 <61> 20.01953125 <79>] TJ +48.24000000000001 678.6960000000001 Td +/F2.0 18 Tf +[<322e32392e20474554202f76322f706f6c69637954> 29.78515625 <6f7363614d6f64656c73>] TJ ET 0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24000000000001 417.4160000000005 Td +48.24000000000001 644.4560000000002 Td /F2.0 13 Tf -<322e32322e322e20526573706f6e736573> Tj +<322e32392e312e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 365.160 51.552 37.560 re +48.240 592.200 51.552 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 365.160 360.864 37.560 re +99.792 592.200 360.864 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 365.160 103.104 37.560 re +460.656 592.200 103.104 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 341.880 51.552 23.280 re +48.240 568.920 51.552 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 341.880 360.864 23.280 re +99.792 568.920 360.864 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 341.880 103.104 23.280 re +460.656 568.920 103.104 23.280 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 402.720 m -99.792 402.720 l +48.240 629.760 m +99.792 629.760 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 365.160 m -99.792 365.160 l +48.240 592.200 m +99.792 592.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 402.970 m -48.240 364.410 l +48.240 630.010 m +48.240 591.450 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 402.970 m -99.792 364.410 l +99.792 630.010 m +99.792 591.450 l S [ ] 0 d 1 w @@ -18288,14 +23840,14 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 386.97300000000047 Td +51.24000000000001 614.0130000000004 Td /F2.0 10.5 Tf <48545450> Tj ET BT -51.24000000000001 372.69300000000044 Td +51.24000000000001 599.7330000000003 Td /F2.0 10.5 Tf <436f6465> Tj ET @@ -18303,26 +23855,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 402.720 m -460.656 402.720 l +99.792 629.760 m +460.656 629.760 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -99.792 365.160 m -460.656 365.160 l +99.792 592.200 m +460.656 592.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 402.970 m -99.792 364.410 l +99.792 630.010 m +99.792 591.450 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 402.970 m -460.656 364.410 l +460.656 630.010 m +460.656 591.450 l S [ ] 0 d 1 w @@ -18330,7 +23882,7 @@ S 0.200 0.200 0.200 scn BT -102.792 386.97300000000047 Td +102.792 614.0130000000004 Td /F2.0 10.5 Tf <4465736372697074696f6e> Tj ET @@ -18338,26 +23890,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 402.720 m -563.760 402.720 l +460.656 629.760 m +563.760 629.760 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -460.656 365.160 m -563.760 365.160 l +460.656 592.200 m +563.760 592.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 402.970 m -460.656 364.410 l +460.656 630.010 m +460.656 591.450 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 402.970 m -563.760 364.410 l +563.760 630.010 m +563.760 591.450 l S [ ] 0 d 1 w @@ -18365,7 +23917,7 @@ S 0.200 0.200 0.200 scn BT -463.65600000000006 386.97300000000047 Td +463.65600000000006 614.0130000000004 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -18373,26 +23925,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 365.160 m -99.792 365.160 l +48.240 592.200 m +99.792 592.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 341.880 m -99.792 341.880 l +48.240 568.920 m +99.792 568.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 365.410 m -48.240 341.630 l +48.240 592.450 m +48.240 568.670 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 365.410 m -99.792 341.630 l +99.792 592.450 m +99.792 568.670 l S [ ] 0 d 1 w @@ -18400,7 +23952,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 348.91300000000047 Td +51.24000000000001 575.9530000000002 Td /F2.0 10.5 Tf <323030> Tj ET @@ -18408,26 +23960,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 365.160 m -460.656 365.160 l +99.792 592.200 m +460.656 592.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 341.880 m -460.656 341.880 l +99.792 568.920 m +460.656 568.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 365.410 m -99.792 341.630 l +99.792 592.450 m +99.792 568.670 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 365.410 m -460.656 341.630 l +460.656 592.450 m +460.656 568.670 l S [ ] 0 d 1 w @@ -18435,7 +23987,7 @@ S 0.200 0.200 0.200 scn BT -102.792 348.91300000000047 Td +102.792 575.9530000000002 Td /F1.0 10.5 Tf <4f75747075742074797065> Tj ET @@ -18443,26 +23995,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 365.160 m -563.760 365.160 l +460.656 592.200 m +563.760 592.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 341.880 m -563.760 341.880 l +460.656 568.920 m +563.760 568.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 365.410 m -460.656 341.630 l +460.656 592.450 m +460.656 568.670 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 365.410 m -563.760 341.630 l +563.760 592.450 m +563.760 568.670 l S [ ] 0 d 1 w @@ -18476,9 +24028,9 @@ S 0.259 0.545 0.792 SCN BT -463.65600000000006 348.91300000000047 Td +463.65600000000006 575.9530000000002 Td /F1.0 10.5 Tf -<4c6f6f70> Tj +<506f6c6963794d6f64656c> Tj ET 0.000 0.000 0.000 SCN @@ -18488,9 +24040,9 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 312.29600000000045 Td +48.24000000000001 539.3360000000004 Td /F2.0 13 Tf -<322e32322e332e20436f6e73756d6573> Tj +<322e32392e322e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -18501,7 +24053,7 @@ ET 0.200 0.200 0.200 SCN BT -56.88050000000001 285.6360000000004 Td +56.88050000000001 512.6760000000004 Td /F1.0 10.5 Tf Tj ET @@ -18514,7 +24066,7 @@ ET 0.694 0.129 0.275 SCN BT -66.24000000000001 287.8200000000004 Td +66.24000000000001 514.8600000000005 Td /F4.0 10.5 Tf <6170706c69636174696f6e2f6a736f6e> Tj ET @@ -18525,35 +24077,20 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 256.0160000000004 Td -/F2.0 13 Tf -<322e32322e342e2050726f6475636573> Tj +48.24000000000001 477.21600000000046 Td +/F2.0 18 Tf +<322e33302e20474554> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn - --0.500 Tc 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -56.88050000000001 229.35600000000042 Td -/F1.0 10.5 Tf - Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn - -0.000 Tc -0.694 0.129 0.275 scn -0.694 0.129 0.275 SCN - -BT -66.24000000000001 231.54000000000042 Td -/F4.0 10.5 Tf -<6170706c69636174696f6e2f6a736f6e> Tj +48.24000000000001 449.1360000000004 Td +/F2.0 18 Tf +[<2f76322f706f6c69637954> 29.78515625 <6f7363614d6f64656c732f79616d6c2f7b706f6c6963794d6f64656c547970657d2f7b706f6c696379>] TJ ET 0.000 0.000 0.000 SCN @@ -18562,9 +24099,9 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 193.8960000000004 Td +48.24000000000001 421.05600000000044 Td /F2.0 18 Tf -<322e32332e20474554202f76322f6c6f6f702f7b6c6f6f704e616d657d> Tj +[<4d6f64656c56> 60.05859375 <657273696f6e7d>] TJ ET 0.000 0.000 0.000 SCN @@ -18573,59 +24110,71 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 159.6560000000004 Td +48.24000000000001 386.81600000000043 Td /F2.0 13 Tf -[<322e32332e312e20506172> 20.01953125 <616d6574657273>] TJ +[<322e33302e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 121.680 114.560 23.280 re +48.240 348.840 114.560 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 121.680 171.840 23.280 re +162.800 348.840 171.840 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 121.680 229.120 23.280 re +334.640 348.840 229.120 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 84.120 114.560 37.560 re +48.240 311.280 114.560 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 84.120 171.840 37.560 re +162.800 311.280 171.840 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 84.120 229.120 37.560 re +334.640 311.280 229.120 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 273.720 114.560 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +162.800 273.720 171.840 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +334.640 273.720 229.120 37.560 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 144.960 m -162.800 144.960 l +48.240 372.120 m +162.800 372.120 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 121.680 m -162.800 121.680 l +48.240 348.840 m +162.800 348.840 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 145.210 m -48.240 120.930 l +48.240 372.370 m +48.240 348.090 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 145.210 m -162.800 120.930 l +162.800 372.370 m +162.800 348.090 l S [ ] 0 d 1 w @@ -18633,7 +24182,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 129.2130000000004 Td +51.24000000000001 356.3730000000004 Td /F2.0 10.5 Tf <54797065> Tj ET @@ -18641,26 +24190,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 144.960 m -334.640 144.960 l +162.800 372.120 m +334.640 372.120 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -162.800 121.680 m -334.640 121.680 l +162.800 348.840 m +334.640 348.840 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 145.210 m -162.800 120.930 l +162.800 372.370 m +162.800 348.090 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 145.210 m -334.640 120.930 l +334.640 372.370 m +334.640 348.090 l S [ ] 0 d 1 w @@ -18668,7 +24217,7 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 129.2130000000004 Td +165.79988544000003 356.3730000000004 Td /F2.0 10.5 Tf <4e616d65> Tj ET @@ -18676,26 +24225,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 144.960 m -563.760 144.960 l +334.640 372.120 m +563.760 372.120 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -334.640 121.680 m -563.760 121.680 l +334.640 348.840 m +563.760 348.840 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 145.210 m -334.640 120.930 l +334.640 372.370 m +334.640 348.090 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 145.210 m -563.760 120.930 l +563.760 372.370 m +563.760 348.090 l S [ ] 0 d 1 w @@ -18703,7 +24252,7 @@ S 0.200 0.200 0.200 scn BT -337.6397136 129.2130000000004 Td +337.6397136 356.3730000000004 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -18711,26 +24260,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 121.680 m -162.800 121.680 l +48.240 348.840 m +162.800 348.840 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 84.120 m -162.800 84.120 l +48.240 311.280 m +162.800 311.280 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 121.930 m -48.240 83.870 l +48.240 349.090 m +48.240 311.030 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 121.930 m -162.800 83.870 l +162.800 349.090 m +162.800 311.030 l S [ ] 0 d 1 w @@ -18738,7 +24287,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 98.29300000000038 Td +51.24000000000001 325.4530000000004 Td /F2.0 10.5 Tf <50617468> Tj ET @@ -18746,26 +24295,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 121.680 m -334.640 121.680 l +162.800 348.840 m +334.640 348.840 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 84.120 m -334.640 84.120 l +162.800 311.280 m +334.640 311.280 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 121.930 m -162.800 83.870 l +162.800 349.090 m +162.800 311.030 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 121.930 m -334.640 83.870 l +334.640 349.090 m +334.640 311.030 l S [ ] 0 d 1 w @@ -18773,19 +24322,19 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 105.43300000000038 Td +165.79988544000003 332.59300000000036 Td /F2.0 10.5 Tf -<6c6f6f704e616d65> Tj +<706f6c6963794d6f64656c54797065> Tj ET BT -165.79988544000003 91.15300000000038 Td +165.79988544000003 318.31300000000033 Td ET BT -165.79988544000003 91.15300000000038 Td +165.79988544000003 318.31300000000033 Td /F3.0 10.5 Tf <7265717569726564> Tj ET @@ -18793,26 +24342,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 121.680 m -563.760 121.680 l +334.640 348.840 m +563.760 348.840 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 84.120 m -563.760 84.120 l +334.640 311.280 m +563.760 311.280 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 121.930 m -334.640 83.870 l +334.640 349.090 m +334.640 311.030 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 121.930 m -563.760 83.870 l +563.760 349.090 m +563.760 311.030 l S [ ] 0 d 1 w @@ -18820,207 +24369,34 @@ S 0.200 0.200 0.200 scn BT -337.6397136 98.29300000000038 Td +337.6397136 325.4530000000004 Td /F1.0 10.5 Tf <737472696e67> Tj ET 0.000 0.000 0.000 scn -q -0.000 0.000 0.000 scn -0.000 0.000 0.000 SCN -1 w -0 J -0 j -[ ] 0 d -/Stamp1 Do -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -552.698 14.388 Td -/F1.0 9 Tf -<3131> Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -Q -Q - -endstream -endobj -151 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 612.0 792.0] -/Contents 150 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 22 0 R -/F1.0 8 0 R -/F4.0 33 0 R -/F3.0 24 0 R ->> -/XObject << /Stamp1 588 0 R ->> ->> -/Annots [156 0 R 158 0 R] ->> -endobj -152 0 obj -[151 0 R /XYZ 0 792.0 null] -endobj -153 0 obj -[151 0 R /XYZ 0 702.1200000000001 null] -endobj -154 0 obj -[151 0 R /XYZ 0 645.8400000000003 null] -endobj -155 0 obj -[151 0 R /XYZ 0 577.6800000000004 null] -endobj -156 0 obj -<< /Border [0 0 0] -/Dest (_jsonarray) -/Subtype /Link -/Rect [337.6397136 458.1070000000005 387.64030344375 472.3870000000005] -/Type /Annot ->> -endobj -157 0 obj -[151 0 R /XYZ 0 435.0000000000005 null] -endobj -158 0 obj -<< /Border [0 0 0] -/Dest (_loop) -/Subtype /Link -/Rect [463.65600000000006 345.8470000000005 488.7510000000001 360.12700000000046] -/Type /Annot ->> -endobj -159 0 obj -[151 0 R /XYZ 0 329.88000000000045 null] -endobj -160 0 obj -<< /Limits [(_parameters_13) (_parameters_7)] -/Names [(_parameters_13) 127 0 R (_parameters_14) 132 0 R (_parameters_15) 139 0 R (_parameters_16) 146 0 R (_parameters_17) 155 0 R (_parameters_18) 163 0 R (_parameters_19) 174 0 R (_parameters_2) 56 0 R (_parameters_20) 180 0 R (_parameters_21) 185 0 R (_parameters_22) 202 0 R (_parameters_3) 63 0 R (_parameters_4) 70 0 R (_parameters_5) 76 0 R (_parameters_6) 80 0 R (_parameters_7) 86 0 R] ->> -endobj -161 0 obj -[151 0 R /XYZ 0 273.6000000000004 null] -endobj -162 0 obj -[151 0 R /XYZ 0 217.32000000000042 null] -endobj -163 0 obj -[151 0 R /XYZ 0 177.2400000000004 null] -endobj -164 0 obj -<< /Length 16419 ->> -stream -q -/DeviceRGB cs -0.200 0.200 0.200 scn -/DeviceRGB CS -0.200 0.200 0.200 SCN - -BT -48.24 740.816 Td -/F2.0 13 Tf -<322e32332e322e20526573706f6e736573> Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 688.560 51.552 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -99.792 688.560 360.864 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -460.656 688.560 103.104 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 665.280 51.552 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -99.792 665.280 360.864 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -460.656 665.280 103.104 23.280 re -f -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -48.240 726.120 m -99.792 726.120 l -S -[ ] 0 d -1.5 w -0.867 0.867 0.867 SCN -48.240 688.560 m -99.792 688.560 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -48.240 726.370 m -48.240 687.810 l -S -[ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 726.370 m -99.792 687.810 l +48.240 311.280 m +162.800 311.280 l S [ ] 0 d -1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn - -BT -51.24 710.373 Td -/F2.0 10.5 Tf -<48545450> Tj -ET - - -BT -51.24 696.0930000000001 Td -/F2.0 10.5 Tf -<436f6465> Tj -ET - -0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 726.120 m -460.656 726.120 l -S -[ ] 0 d -1.5 w -0.867 0.867 0.867 SCN -99.792 688.560 m -460.656 688.560 l +48.240 273.720 m +162.800 273.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 726.370 m -99.792 687.810 l +48.240 311.530 m +48.240 273.470 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 726.370 m -460.656 687.810 l +162.800 311.530 m +162.800 273.470 l S [ ] 0 d 1 w @@ -19028,34 +24404,34 @@ S 0.200 0.200 0.200 scn BT -102.792 710.373 Td +51.24000000000001 287.8930000000004 Td /F2.0 10.5 Tf -<4465736372697074696f6e> Tj +<50617468> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 726.120 m -563.760 726.120 l +162.800 311.280 m +334.640 311.280 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -460.656 688.560 m -563.760 688.560 l +162.800 273.720 m +334.640 273.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 726.370 m -460.656 687.810 l +162.800 311.530 m +162.800 273.470 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 726.370 m -563.760 687.810 l +334.640 311.530 m +334.640 273.470 l S [ ] 0 d 1 w @@ -19063,230 +24439,116 @@ S 0.200 0.200 0.200 scn BT -463.65600000000006 710.373 Td +165.79988544000003 295.0330000000004 Td /F2.0 10.5 Tf -<536368656d61> Tj +[<706f6c6963794d6f64656c56> 60.05859375 <657273696f6e>] TJ ET -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -48.240 688.560 m -99.792 688.560 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -48.240 665.280 m -99.792 665.280 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -48.240 688.810 m -48.240 665.030 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -99.792 688.810 m -99.792 665.030 l -S -[ ] 0 d -1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn BT -51.24 672.3130000000001 Td -/F2.0 10.5 Tf -<323030> Tj +165.79988544000003 280.7530000000004 Td ET -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -99.792 688.560 m -460.656 688.560 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -99.792 665.280 m -460.656 665.280 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -99.792 688.810 m -99.792 665.030 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -460.656 688.810 m -460.656 665.030 l -S -[ ] 0 d -1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn BT -102.792 672.3130000000001 Td -/F1.0 10.5 Tf -<4f75747075742074797065> Tj +165.79988544000003 280.7530000000004 Td +/F3.0 10.5 Tf +<7265717569726564> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 688.560 m -563.760 688.560 l +334.640 311.280 m +563.760 311.280 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 665.280 m -563.760 665.280 l +334.640 273.720 m +563.760 273.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 688.810 m -460.656 665.030 l +334.640 311.530 m +334.640 273.470 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 688.810 m -563.760 665.030 l +563.760 311.530 m +563.760 273.470 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN - -BT -463.65600000000006 672.3130000000001 Td -/F1.0 10.5 Tf -<4c6f6f70> Tj -ET - -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -48.24 635.6960000000003 Td -/F2.0 13 Tf -<322e32332e332e2050726f6475636573> Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn - --0.500 Tc -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN BT -56.88050000000001 609.0360000000003 Td +337.6397136 287.8930000000004 Td /F1.0 10.5 Tf - Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn - -0.000 Tc -0.694 0.129 0.275 scn -0.694 0.129 0.275 SCN - -BT -66.24000000000001 611.2200000000004 Td -/F4.0 10.5 Tf -<6170706c69636174696f6e2f6a736f6e> Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -48.24000000000001 573.5760000000004 Td -/F2.0 18 Tf -[<322e32342e20474554202f76322f706f6c69637954> 29.78515625 <6f7363614d6f64656c73>] TJ +<737472696e67> Tj ET -0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24000000000001 539.3360000000005 Td +48.24000000000001 244.13600000000042 Td /F2.0 13 Tf -<322e32342e312e20526573706f6e736573> Tj +<322e33302e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 487.080 51.552 37.560 re +48.240 191.880 51.552 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 487.080 360.864 37.560 re +99.792 191.880 360.864 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 487.080 103.104 37.560 re +460.656 191.880 103.104 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 463.800 51.552 23.280 re +48.240 168.600 51.552 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 463.800 360.864 23.280 re +99.792 168.600 360.864 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 463.800 103.104 23.280 re +460.656 168.600 103.104 23.280 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 524.640 m -99.792 524.640 l +48.240 229.440 m +99.792 229.440 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 487.080 m -99.792 487.080 l +48.240 191.880 m +99.792 191.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 524.890 m -48.240 486.330 l +48.240 229.690 m +48.240 191.130 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 524.890 m -99.792 486.330 l +99.792 229.690 m +99.792 191.130 l S [ ] 0 d 1 w @@ -19294,14 +24556,14 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 508.89300000000054 Td +51.24000000000001 213.69300000000044 Td /F2.0 10.5 Tf <48545450> Tj ET BT -51.24000000000001 494.6130000000005 Td +51.24000000000001 199.41300000000044 Td /F2.0 10.5 Tf <436f6465> Tj ET @@ -19309,26 +24571,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 524.640 m -460.656 524.640 l +99.792 229.440 m +460.656 229.440 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -99.792 487.080 m -460.656 487.080 l +99.792 191.880 m +460.656 191.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 524.890 m -99.792 486.330 l +99.792 229.690 m +99.792 191.130 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 524.890 m -460.656 486.330 l +460.656 229.690 m +460.656 191.130 l S [ ] 0 d 1 w @@ -19336,7 +24598,7 @@ S 0.200 0.200 0.200 scn BT -102.792 508.89300000000054 Td +102.792 213.69300000000044 Td /F2.0 10.5 Tf <4465736372697074696f6e> Tj ET @@ -19344,26 +24606,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 524.640 m -563.760 524.640 l +460.656 229.440 m +563.760 229.440 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -460.656 487.080 m -563.760 487.080 l +460.656 191.880 m +563.760 191.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 524.890 m -460.656 486.330 l +460.656 229.690 m +460.656 191.130 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 524.890 m -563.760 486.330 l +563.760 229.690 m +563.760 191.130 l S [ ] 0 d 1 w @@ -19371,7 +24633,7 @@ S 0.200 0.200 0.200 scn BT -463.65600000000006 508.89300000000054 Td +463.65600000000006 213.69300000000044 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -19379,26 +24641,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 487.080 m -99.792 487.080 l +48.240 191.880 m +99.792 191.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 463.800 m -99.792 463.800 l +48.240 168.600 m +99.792 168.600 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 487.330 m -48.240 463.550 l +48.240 192.130 m +48.240 168.350 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 487.330 m -99.792 463.550 l +99.792 192.130 m +99.792 168.350 l S [ ] 0 d 1 w @@ -19406,7 +24668,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 470.83300000000054 Td +51.24000000000001 175.63300000000044 Td /F2.0 10.5 Tf <323030> Tj ET @@ -19414,26 +24676,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 487.080 m -460.656 487.080 l +99.792 191.880 m +460.656 191.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 463.800 m -460.656 463.800 l +99.792 168.600 m +460.656 168.600 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 487.330 m -99.792 463.550 l +99.792 192.130 m +99.792 168.350 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 487.330 m -460.656 463.550 l +460.656 192.130 m +460.656 168.350 l S [ ] 0 d 1 w @@ -19441,7 +24703,7 @@ S 0.200 0.200 0.200 scn BT -102.792 470.83300000000054 Td +102.792 175.63300000000044 Td /F1.0 10.5 Tf <4f75747075742074797065> Tj ET @@ -19449,54 +24711,46 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 487.080 m -563.760 487.080 l +460.656 191.880 m +563.760 191.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 463.800 m -563.760 463.800 l +460.656 168.600 m +563.760 168.600 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 487.330 m -460.656 463.550 l +460.656 192.130 m +460.656 168.350 l S [ ] 0 d 0.5 w -0.867 0.867 0.867 SCN -563.760 487.330 m -563.760 463.550 l +0.867 0.867 0.867 SCN +563.760 192.130 m +563.760 168.350 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -463.65600000000006 470.83300000000054 Td +463.65600000000006 175.63300000000044 Td /F1.0 10.5 Tf -<506f6c6963794d6f64656c> Tj +<737472696e67> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24000000000001 434.2160000000005 Td +48.24000000000001 139.01600000000042 Td /F2.0 13 Tf -<322e32342e322e2050726f6475636573> Tj +<322e33302e332e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -19507,7 +24761,7 @@ ET 0.200 0.200 0.200 SCN BT -56.88050000000001 407.5560000000005 Td +56.88050000000001 112.35600000000039 Td /F1.0 10.5 Tf Tj ET @@ -19520,20 +24774,116 @@ ET 0.694 0.129 0.275 SCN BT -66.24000000000001 409.7400000000005 Td +66.24000000000001 114.54000000000039 Td /F4.0 10.5 Tf <6170706c69636174696f6e2f6a736f6e> Tj ET +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +q +0.000 0.000 0.000 scn +0.000 0.000 0.000 SCN +1 w +0 J +0 j +[ ] 0 d +/Stamp1 Do +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +552.698 14.388 Td +/F1.0 9 Tf +<3135> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +Q +Q + +endstream +endobj +202 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 612.0 792.0] +/Contents 201 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F2.0 24 0 R +/F1.0 8 0 R +/F4.0 35 0 R +/F3.0 26 0 R +>> +/XObject << /Stamp1 684 0 R +>> +>> +/Annots [206 0 R] +>> +endobj +203 0 obj +[202 0 R /XYZ 0 792.0 null] +endobj +204 0 obj +[202 0 R /XYZ 0 702.1200000000001 null] +endobj +205 0 obj +[202 0 R /XYZ 0 662.0400000000002 null] +endobj +206 0 obj +<< /Border [0 0 0] +/Dest (_policymodel) +/Subtype /Link +/Rect [463.65600000000006 572.8870000000003 524.955 587.1670000000003] +/Type /Annot +>> +endobj +207 0 obj +[202 0 R /XYZ 0 556.9200000000003 null] +endobj +208 0 obj +[202 0 R /XYZ 0 500.64000000000044 null] +endobj +209 0 obj +<< /Limits [(_route6) (_version_information)] +/Names [(_route6) 181 0 R (_route7) 172 0 R (_route8) 105 0 R (_route9) 121 0 R (_service) 347 0 R (_uri_scheme) 27 0 R (_v2_dictionary_dictionaryname_get) 63 0 R (_v2_dictionary_name_elements_shortname_delete) 81 0 R (_v2_dictionary_name_put) 68 0 R (_v2_dictionary_secondary_names_get) 58 0 R (_v2_policytoscamodels_policymodeltype_policymodelversion_get) 215 0 R (_v2_policytoscamodels_yaml_policymodeltype_policymodelversion_get) 208 0 R (_v2_templates_names_get) 233 0 R (_v2_templates_templatename_get) 236 0 R (_v2_templates_templatename_svgrepresentation_get) 244 0 R (_version_information) 25 0 R] +>> +endobj +210 0 obj +[202 0 R /XYZ 0 404.40000000000043 null] +endobj +211 0 obj +[202 0 R /XYZ 0 261.7200000000004 null] +endobj +212 0 obj +[202 0 R /XYZ 0 156.60000000000042 null] +endobj +213 0 obj +<< /Length 17515 +>> +stream +q +/DeviceRGB cs +0.200 0.200 0.200 scn +/DeviceRGB CS +0.200 0.200 0.200 SCN + +BT +48.24 734.976 Td +/F2.0 18 Tf +<322e33312e20474554> Tj +ET + 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24000000000001 372.0960000000005 Td +48.24 706.8960000000001 Td /F2.0 18 Tf -<322e32352e20474554> Tj +[<2f76322f706f6c69637954> 29.78515625 <6f7363614d6f64656c732f7b706f6c6963794d6f64656c547970657d2f7b706f6c6963794d6f64656c>] TJ ET 0.000 0.000 0.000 SCN @@ -19542,9 +24892,9 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 344.01600000000053 Td +48.24 678.816 Td /F2.0 18 Tf -[<2f76322f706f6c69637954> 29.78515625 <6f7363614d6f64656c732f79616d6c2f7b706f6c6963794d6f64656c547970657d>] TJ +[<56> 60.05859375 <657273696f6e7d>] TJ ET 0.000 0.000 0.000 SCN @@ -19553,59 +24903,71 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 309.77600000000047 Td +48.24 644.5760000000001 Td /F2.0 13 Tf -[<322e32352e312e20506172> 20.01953125 <616d6574657273>] TJ +[<322e33312e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 271.800 114.560 23.280 re +48.240 606.600 114.560 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 271.800 171.840 23.280 re +162.800 606.600 171.840 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 271.800 229.120 23.280 re +334.640 606.600 229.120 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 234.240 114.560 37.560 re +48.240 569.040 114.560 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 234.240 171.840 37.560 re +162.800 569.040 171.840 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 234.240 229.120 37.560 re +334.640 569.040 229.120 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 531.480 114.560 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +162.800 531.480 171.840 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +334.640 531.480 229.120 37.560 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 295.080 m -162.800 295.080 l +48.240 629.880 m +162.800 629.880 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 271.800 m -162.800 271.800 l +48.240 606.600 m +162.800 606.600 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 295.330 m -48.240 271.050 l +48.240 630.130 m +48.240 605.850 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 295.330 m -162.800 271.050 l +162.800 630.130 m +162.800 605.850 l S [ ] 0 d 1 w @@ -19613,7 +24975,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 279.3330000000004 Td +51.24 614.1330000000002 Td /F2.0 10.5 Tf <54797065> Tj ET @@ -19621,26 +24983,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 295.080 m -334.640 295.080 l +162.800 629.880 m +334.640 629.880 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -162.800 271.800 m -334.640 271.800 l +162.800 606.600 m +334.640 606.600 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 295.330 m -162.800 271.050 l +162.800 630.130 m +162.800 605.850 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 295.330 m -334.640 271.050 l +334.640 630.130 m +334.640 605.850 l S [ ] 0 d 1 w @@ -19648,7 +25010,7 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 279.3330000000004 Td +165.79988544 614.1330000000002 Td /F2.0 10.5 Tf <4e616d65> Tj ET @@ -19656,26 +25018,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 295.080 m -563.760 295.080 l +334.640 629.880 m +563.760 629.880 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -334.640 271.800 m -563.760 271.800 l +334.640 606.600 m +563.760 606.600 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 295.330 m -334.640 271.050 l +334.640 630.130 m +334.640 605.850 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 295.330 m -563.760 271.050 l +563.760 630.130 m +563.760 605.850 l S [ ] 0 d 1 w @@ -19683,7 +25045,7 @@ S 0.200 0.200 0.200 scn BT -337.6397136 279.3330000000004 Td +337.6397136 614.1330000000002 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -19691,26 +25053,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 271.800 m -162.800 271.800 l +48.240 606.600 m +162.800 606.600 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 234.240 m -162.800 234.240 l +48.240 569.040 m +162.800 569.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 272.050 m -48.240 233.990 l +48.240 606.850 m +48.240 568.790 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 272.050 m -162.800 233.990 l +162.800 606.850 m +162.800 568.790 l S [ ] 0 d 1 w @@ -19718,7 +25080,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 248.41300000000038 Td +51.24 583.2130000000002 Td /F2.0 10.5 Tf <50617468> Tj ET @@ -19726,26 +25088,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 271.800 m -334.640 271.800 l +162.800 606.600 m +334.640 606.600 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 234.240 m -334.640 234.240 l +162.800 569.040 m +334.640 569.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 272.050 m -162.800 233.990 l +162.800 606.850 m +162.800 568.790 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 272.050 m -334.640 233.990 l +334.640 606.850 m +334.640 568.790 l S [ ] 0 d 1 w @@ -19753,19 +25115,136 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 255.5530000000004 Td +165.79988544 590.3530000000003 Td /F2.0 10.5 Tf <706f6c6963794d6f64656c54797065> Tj ET BT -165.79988544000003 241.2730000000004 Td +165.79988544 576.0730000000002 Td +ET + + +BT +165.79988544 576.0730000000002 Td +/F3.0 10.5 Tf +<7265717569726564> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +334.640 606.600 m +563.760 606.600 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 569.040 m +563.760 569.040 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 606.850 m +334.640 568.790 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 606.850 m +563.760 568.790 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +337.6397136 583.2130000000002 Td +/F1.0 10.5 Tf +<737472696e67> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 569.040 m +162.800 569.040 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 531.480 m +162.800 531.480 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 569.290 m +48.240 531.230 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 569.290 m +162.800 531.230 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24 545.6530000000001 Td +/F2.0 10.5 Tf +<50617468> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +162.800 569.040 m +334.640 569.040 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 531.480 m +334.640 531.480 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 569.290 m +162.800 531.230 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 569.290 m +334.640 531.230 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +165.79988544 552.7930000000001 Td +/F2.0 10.5 Tf +[<706f6c6963794d6f64656c56> 60.05859375 <657273696f6e>] TJ +ET + + +BT +165.79988544 538.5130000000001 Td ET BT -165.79988544000003 241.2730000000004 Td +165.79988544 538.5130000000001 Td /F3.0 10.5 Tf <7265717569726564> Tj ET @@ -19773,26 +25252,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 271.800 m -563.760 271.800 l +334.640 569.040 m +563.760 569.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 234.240 m -563.760 234.240 l +334.640 531.480 m +563.760 531.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 272.050 m -334.640 233.990 l +334.640 569.290 m +334.640 531.230 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 272.050 m -563.760 233.990 l +563.760 569.290 m +563.760 531.230 l S [ ] 0 d 1 w @@ -19800,7 +25279,7 @@ S 0.200 0.200 0.200 scn BT -337.6397136 248.41300000000038 Td +337.6397136 545.6530000000001 Td /F1.0 10.5 Tf <737472696e67> Tj ET @@ -19810,59 +25289,59 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 204.6560000000004 Td +48.24 501.8960000000003 Td /F2.0 13 Tf -<322e32352e322e20526573706f6e736573> Tj +<322e33312e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 152.400 51.552 37.560 re +48.240 449.640 51.552 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 152.400 360.864 37.560 re +99.792 449.640 360.864 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 152.400 103.104 37.560 re +460.656 449.640 103.104 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 129.120 51.552 23.280 re +48.240 426.360 51.552 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 129.120 360.864 23.280 re +99.792 426.360 360.864 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 129.120 103.104 23.280 re +460.656 426.360 103.104 23.280 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 189.960 m -99.792 189.960 l +48.240 487.200 m +99.792 487.200 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 152.400 m -99.792 152.400 l +48.240 449.640 m +99.792 449.640 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 190.210 m -48.240 151.650 l +48.240 487.450 m +48.240 448.890 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 190.210 m -99.792 151.650 l +99.792 487.450 m +99.792 448.890 l S [ ] 0 d 1 w @@ -19870,14 +25349,14 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 174.2130000000004 Td +51.24 471.45300000000026 Td /F2.0 10.5 Tf <48545450> Tj ET BT -51.24000000000001 159.9330000000004 Td +51.24 457.17300000000023 Td /F2.0 10.5 Tf <436f6465> Tj ET @@ -19885,26 +25364,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 189.960 m -460.656 189.960 l +99.792 487.200 m +460.656 487.200 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -99.792 152.400 m -460.656 152.400 l +99.792 449.640 m +460.656 449.640 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 190.210 m -99.792 151.650 l +99.792 487.450 m +99.792 448.890 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 190.210 m -460.656 151.650 l +460.656 487.450 m +460.656 448.890 l S [ ] 0 d 1 w @@ -19912,7 +25391,7 @@ S 0.200 0.200 0.200 scn BT -102.792 174.2130000000004 Td +102.792 471.45300000000026 Td /F2.0 10.5 Tf <4465736372697074696f6e> Tj ET @@ -19920,26 +25399,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 189.960 m -563.760 189.960 l +460.656 487.200 m +563.760 487.200 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -460.656 152.400 m -563.760 152.400 l +460.656 449.640 m +563.760 449.640 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 190.210 m -460.656 151.650 l +460.656 487.450 m +460.656 448.890 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 190.210 m -563.760 151.650 l +563.760 487.450 m +563.760 448.890 l S [ ] 0 d 1 w @@ -19947,7 +25426,7 @@ S 0.200 0.200 0.200 scn BT -463.65600000000006 174.2130000000004 Td +463.65600000000006 471.45300000000026 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -19955,26 +25434,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 152.400 m -99.792 152.400 l +48.240 449.640 m +99.792 449.640 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 129.120 m -99.792 129.120 l +48.240 426.360 m +99.792 426.360 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 152.650 m -48.240 128.870 l +48.240 449.890 m +48.240 426.110 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 152.650 m -99.792 128.870 l +99.792 449.890 m +99.792 426.110 l S [ ] 0 d 1 w @@ -19982,7 +25461,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 136.1530000000004 Td +51.24 433.39300000000026 Td /F2.0 10.5 Tf <323030> Tj ET @@ -19990,26 +25469,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 152.400 m -460.656 152.400 l +99.792 449.640 m +460.656 449.640 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 129.120 m -460.656 129.120 l +99.792 426.360 m +460.656 426.360 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 152.650 m -99.792 128.870 l +99.792 449.890 m +99.792 426.110 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 152.650 m -460.656 128.870 l +460.656 449.890 m +460.656 426.110 l S [ ] 0 d 1 w @@ -20017,7 +25496,7 @@ S 0.200 0.200 0.200 scn BT -102.792 136.1530000000004 Td +102.792 433.39300000000026 Td /F1.0 10.5 Tf <4f75747075742074797065> Tj ET @@ -20025,46 +25504,54 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 152.400 m -563.760 152.400 l +460.656 449.640 m +563.760 449.640 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 129.120 m -563.760 129.120 l +460.656 426.360 m +563.760 426.360 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 152.650 m -460.656 128.870 l +460.656 449.890 m +460.656 426.110 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 152.650 m -563.760 128.870 l +563.760 449.890 m +563.760 426.110 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT -463.65600000000006 136.1530000000004 Td +463.65600000000006 433.39300000000026 Td /F1.0 10.5 Tf -<737472696e67> Tj +<506f6c6963794d6f64656c> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24000000000001 99.53600000000037 Td +48.24 396.77600000000024 Td /F2.0 13 Tf -<322e32352e332e2050726f6475636573> Tj +<322e33312e332e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -20075,7 +25562,7 @@ ET 0.200 0.200 0.200 SCN BT -56.88050000000001 72.87600000000037 Td +56.88050000000001 370.1160000000002 Td /F1.0 10.5 Tf Tj ET @@ -20088,111 +25575,42 @@ ET 0.694 0.129 0.275 SCN BT -66.24000000000001 75.06000000000037 Td +66.24000000000001 372.30000000000024 Td /F4.0 10.5 Tf <6170706c69636174696f6e2f6a736f6e> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn -q -0.000 0.000 0.000 scn -0.000 0.000 0.000 SCN -1 w -0 J -0 j -[ ] 0 d -/Stamp1 Do 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -49.24 14.388 Td -/F1.0 9 Tf -<3132> Tj +48.24000000000001 334.65600000000023 Td +/F2.0 18 Tf +<322e33322e20505554> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn -Q -Q +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN -endstream -endobj -165 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 612.0 792.0] -/Contents 164 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 22 0 R -/F1.0 8 0 R -/F4.0 33 0 R -/F3.0 24 0 R ->> -/XObject << /Stamp1 588 0 R ->> ->> -/Annots [167 0 R 171 0 R] ->> -endobj -166 0 obj -[165 0 R /XYZ 0 792.0 null] -endobj -167 0 obj -<< /Border [0 0 0] -/Dest (_loop) -/Subtype /Link -/Rect [463.65600000000006 669.2470000000002 488.7510000000001 683.5270000000002] -/Type /Annot ->> -endobj -168 0 obj -[165 0 R /XYZ 0 653.2800000000002 null] -endobj -169 0 obj -[165 0 R /XYZ 0 597.0000000000003 null] -endobj -170 0 obj -[165 0 R /XYZ 0 556.9200000000004 null] -endobj -171 0 obj -<< /Border [0 0 0] -/Dest (_policymodel) -/Subtype /Link -/Rect [463.65600000000006 467.76700000000056 524.955 482.04700000000054] -/Type /Annot ->> -endobj -172 0 obj -[165 0 R /XYZ 0 451.8000000000005 null] -endobj -173 0 obj -[165 0 R /XYZ 0 395.5200000000005 null] -endobj -174 0 obj -[165 0 R /XYZ 0 327.36000000000047 null] -endobj -175 0 obj -[165 0 R /XYZ 0 222.2400000000004 null] -endobj -176 0 obj -[165 0 R /XYZ 0 117.12000000000037 null] -endobj -177 0 obj -<< /Length 18056 ->> -stream -q -/DeviceRGB cs +BT +48.24000000000001 306.57600000000025 Td +/F2.0 18 Tf +[<2f76322f706f6c69637954> 29.78515625 <6f7363614d6f64656c732f7b706f6c6963794d6f64656c547970657d2f7b706f6c6963794d6f64656c>] TJ +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn 0.200 0.200 0.200 scn -/DeviceRGB CS 0.200 0.200 0.200 SCN BT -48.24 734.976 Td +48.24000000000001 278.4960000000002 Td /F2.0 18 Tf -[<322e32362e20474554202f76322f706f6c69637954> 29.78515625 <6f7363614d6f64656c732f7b706f6c6963794d6f64656c547970657d>] TJ +[<56> 60.05859375 <657273696f6e7d>] TJ ET 0.000 0.000 0.000 SCN @@ -20201,59 +25619,83 @@ ET 0.200 0.200 0.200 SCN BT -48.24 700.7360000000001 Td +48.24000000000001 244.2560000000002 Td /F2.0 13 Tf -[<322e32362e312e20506172> 20.01953125 <616d6574657273>] TJ +[<322e33322e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 662.760 114.560 23.280 re +48.240 206.280 114.560 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 662.760 171.840 23.280 re +162.800 206.280 171.840 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 662.760 229.120 23.280 re +334.640 206.280 229.120 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 625.200 114.560 37.560 re +48.240 168.720 114.560 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 625.200 171.840 37.560 re +162.800 168.720 171.840 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 625.200 229.120 37.560 re +334.640 168.720 229.120 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 131.160 114.560 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +162.800 131.160 171.840 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +334.640 131.160 229.120 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 93.600 114.560 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +162.800 93.600 171.840 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +334.640 93.600 229.120 37.560 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 686.040 m -162.800 686.040 l +48.240 229.560 m +162.800 229.560 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 662.760 m -162.800 662.760 l +48.240 206.280 m +162.800 206.280 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 686.290 m -48.240 662.010 l +48.240 229.810 m +48.240 205.530 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 686.290 m -162.800 662.010 l +162.800 229.810 m +162.800 205.530 l S [ ] 0 d 1 w @@ -20261,7 +25703,7 @@ S 0.200 0.200 0.200 scn BT -51.24 670.2930000000001 Td +51.24000000000001 213.81300000000022 Td /F2.0 10.5 Tf <54797065> Tj ET @@ -20269,26 +25711,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 686.040 m -334.640 686.040 l +162.800 229.560 m +334.640 229.560 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -162.800 662.760 m -334.640 662.760 l +162.800 206.280 m +334.640 206.280 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 686.290 m -162.800 662.010 l +162.800 229.810 m +162.800 205.530 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 686.290 m -334.640 662.010 l +334.640 229.810 m +334.640 205.530 l S [ ] 0 d 1 w @@ -20296,7 +25738,7 @@ S 0.200 0.200 0.200 scn BT -165.79988544 670.2930000000001 Td +165.79988544000003 213.81300000000022 Td /F2.0 10.5 Tf <4e616d65> Tj ET @@ -20304,26 +25746,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 686.040 m -563.760 686.040 l +334.640 229.560 m +563.760 229.560 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -334.640 662.760 m -563.760 662.760 l +334.640 206.280 m +563.760 206.280 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 686.290 m -334.640 662.010 l +334.640 229.810 m +334.640 205.530 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 686.290 m -563.760 662.010 l +563.760 229.810 m +563.760 205.530 l S [ ] 0 d 1 w @@ -20331,7 +25773,7 @@ S 0.200 0.200 0.200 scn BT -337.6397136 670.2930000000001 Td +337.6397136 213.81300000000022 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -20339,26 +25781,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 662.760 m -162.800 662.760 l +48.240 206.280 m +162.800 206.280 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 625.200 m -162.800 625.200 l +48.240 168.720 m +162.800 168.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 663.010 m -48.240 624.950 l +48.240 206.530 m +48.240 168.470 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 663.010 m -162.800 624.950 l +162.800 206.530 m +162.800 168.470 l S [ ] 0 d 1 w @@ -20366,7 +25808,7 @@ S 0.200 0.200 0.200 scn BT -51.24 639.3730000000002 Td +51.24000000000001 182.8930000000002 Td /F2.0 10.5 Tf <50617468> Tj ET @@ -20374,26 +25816,260 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 662.760 m -334.640 662.760 l +162.800 206.280 m +334.640 206.280 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 625.200 m -334.640 625.200 l +162.800 168.720 m +334.640 168.720 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 206.530 m +162.800 168.470 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 206.530 m +334.640 168.470 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +165.79988544000003 190.03300000000021 Td +/F2.0 10.5 Tf +<706f6c6963794d6f64656c54797065> Tj +ET + + +BT +165.79988544000003 175.7530000000002 Td +ET + + +BT +165.79988544000003 175.7530000000002 Td +/F3.0 10.5 Tf +<7265717569726564> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +334.640 206.280 m +563.760 206.280 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 168.720 m +563.760 168.720 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 206.530 m +334.640 168.470 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 206.530 m +563.760 168.470 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +337.6397136 182.8930000000002 Td +/F1.0 10.5 Tf +<737472696e67> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 168.720 m +162.800 168.720 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 131.160 m +162.800 131.160 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 168.970 m +48.240 130.910 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 168.970 m +162.800 130.910 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24000000000001 145.3330000000002 Td +/F2.0 10.5 Tf +<50617468> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +162.800 168.720 m +334.640 168.720 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 131.160 m +334.640 131.160 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 168.970 m +162.800 130.910 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 168.970 m +334.640 130.910 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +165.79988544000003 152.4730000000002 Td +/F2.0 10.5 Tf +[<706f6c6963794d6f64656c56> 60.05859375 <657273696f6e>] TJ +ET + + +BT +165.79988544000003 138.1930000000002 Td +ET + + +BT +165.79988544000003 138.1930000000002 Td +/F3.0 10.5 Tf +<7265717569726564> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +334.640 168.720 m +563.760 168.720 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 131.160 m +563.760 131.160 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +334.640 168.970 m +334.640 130.910 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 168.970 m +563.760 130.910 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +337.6397136 145.3330000000002 Td +/F1.0 10.5 Tf +<737472696e67> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 131.160 m +162.800 131.160 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 93.600 m +162.800 93.600 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 131.410 m +48.240 93.350 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 131.410 m +162.800 93.350 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24000000000001 107.7730000000002 Td +/F2.0 10.5 Tf +<426f6479> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +162.800 131.160 m +334.640 131.160 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +162.800 93.600 m +334.640 93.600 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 663.010 m -162.800 624.950 l +162.800 131.410 m +162.800 93.350 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 663.010 m -334.640 624.950 l +334.640 131.410 m +334.640 93.350 l S [ ] 0 d 1 w @@ -20401,19 +26077,19 @@ S 0.200 0.200 0.200 scn BT -165.79988544 646.5130000000001 Td +165.79988544000003 114.9130000000002 Td /F2.0 10.5 Tf -<706f6c6963794d6f64656c54797065> Tj +<626f6479> Tj ET BT -165.79988544 632.2330000000002 Td +165.79988544000003 100.6330000000002 Td ET BT -165.79988544 632.2330000000002 Td +165.79988544000003 100.6330000000002 Td /F3.0 10.5 Tf <7265717569726564> Tj ET @@ -20421,26 +26097,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 662.760 m -563.760 662.760 l +334.640 131.160 m +563.760 131.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 625.200 m -563.760 625.200 l +334.640 93.600 m +563.760 93.600 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 663.010 m -334.640 624.950 l +334.640 131.410 m +334.640 93.350 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 663.010 m -563.760 624.950 l +563.760 131.410 m +563.760 93.350 l S [ ] 0 d 1 w @@ -20448,69 +26124,148 @@ S 0.200 0.200 0.200 scn BT -337.6397136 639.3730000000002 Td +337.6397136 107.7730000000002 Td /F1.0 10.5 Tf <737472696e67> Tj ET 0.000 0.000 0.000 scn +q +0.000 0.000 0.000 scn +0.000 0.000 0.000 SCN +1 w +0 J +0 j +[ ] 0 d +/Stamp1 Do 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24 595.6160000000003 Td +49.24 14.388 Td +/F1.0 9 Tf +<3136> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +Q +Q + +endstream +endobj +214 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 612.0 792.0] +/Contents 213 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F2.0 24 0 R +/F3.0 26 0 R +/F1.0 8 0 R +/F4.0 35 0 R +>> +/XObject << /Stamp1 684 0 R +>> +>> +/Annots [218 0 R] +>> +endobj +215 0 obj +[214 0 R /XYZ 0 792.0 null] +endobj +216 0 obj +[214 0 R /XYZ 0 662.1600000000001 null] +endobj +217 0 obj +[214 0 R /XYZ 0 519.4800000000002 null] +endobj +218 0 obj +<< /Border [0 0 0] +/Dest (_policymodel) +/Subtype /Link +/Rect [463.65600000000006 430.3270000000003 524.955 444.60700000000026] +/Type /Annot +>> +endobj +219 0 obj +[214 0 R /XYZ 0 414.36000000000024 null] +endobj +220 0 obj +<< /Limits [(_produces_28) (_responses)] +/Names [(_produces_28) 207 0 R (_produces_29) 212 0 R (_produces_3) 42 0 R (_produces_30) 219 0 R (_produces_31) 228 0 R (_produces_32) 232 0 R (_produces_33) 235 0 R (_produces_34) 243 0 R (_produces_35) 247 0 R (_produces_4) 48 0 R (_produces_5) 55 0 R (_produces_6) 62 0 R (_produces_7) 67 0 R (_produces_8) 76 0 R (_produces_9) 80 0 R (_responses) 32 0 R] +>> +endobj +221 0 obj +[214 0 R /XYZ 0 358.0800000000002 null] +endobj +222 0 obj +[214 0 R /XYZ 0 261.8400000000002 null] +endobj +223 0 obj +<< /Length 13762 +>> +stream +q +/DeviceRGB cs +0.200 0.200 0.200 scn +/DeviceRGB CS +0.200 0.200 0.200 SCN + +BT +48.24 740.816 Td /F2.0 13 Tf -<322e32362e322e20526573706f6e736573> Tj +<322e33322e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 543.360 51.552 37.560 re +48.240 688.560 51.552 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 543.360 360.864 37.560 re +99.792 688.560 360.864 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 543.360 103.104 37.560 re +460.656 688.560 103.104 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 520.080 51.552 23.280 re +48.240 665.280 51.552 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 520.080 360.864 23.280 re +99.792 665.280 360.864 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 520.080 103.104 23.280 re +460.656 665.280 103.104 23.280 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 580.920 m -99.792 580.920 l +48.240 726.120 m +99.792 726.120 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 543.360 m -99.792 543.360 l +48.240 688.560 m +99.792 688.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 581.170 m -48.240 542.610 l +48.240 726.370 m +48.240 687.810 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 581.170 m -99.792 542.610 l +99.792 726.370 m +99.792 687.810 l S [ ] 0 d 1 w @@ -20518,14 +26273,14 @@ S 0.200 0.200 0.200 scn BT -51.24 565.1730000000005 Td +51.24 710.373 Td /F2.0 10.5 Tf <48545450> Tj ET BT -51.24 550.8930000000004 Td +51.24 696.0930000000001 Td /F2.0 10.5 Tf <436f6465> Tj ET @@ -20533,26 +26288,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 580.920 m -460.656 580.920 l +99.792 726.120 m +460.656 726.120 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -99.792 543.360 m -460.656 543.360 l +99.792 688.560 m +460.656 688.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 581.170 m -99.792 542.610 l +99.792 726.370 m +99.792 687.810 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 581.170 m -460.656 542.610 l +460.656 726.370 m +460.656 687.810 l S [ ] 0 d 1 w @@ -20560,7 +26315,7 @@ S 0.200 0.200 0.200 scn BT -102.792 565.1730000000005 Td +102.792 710.373 Td /F2.0 10.5 Tf <4465736372697074696f6e> Tj ET @@ -20568,26 +26323,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 580.920 m -563.760 580.920 l +460.656 726.120 m +563.760 726.120 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -460.656 543.360 m -563.760 543.360 l +460.656 688.560 m +563.760 688.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 581.170 m -460.656 542.610 l +460.656 726.370 m +460.656 687.810 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 581.170 m -563.760 542.610 l +563.760 726.370 m +563.760 687.810 l S [ ] 0 d 1 w @@ -20595,7 +26350,7 @@ S 0.200 0.200 0.200 scn BT -463.65600000000006 565.1730000000005 Td +463.65600000000006 710.373 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -20603,26 +26358,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 543.360 m -99.792 543.360 l +48.240 688.560 m +99.792 688.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 520.080 m -99.792 520.080 l +48.240 665.280 m +99.792 665.280 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 543.610 m -48.240 519.830 l +48.240 688.810 m +48.240 665.030 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 543.610 m -99.792 519.830 l +99.792 688.810 m +99.792 665.030 l S [ ] 0 d 1 w @@ -20630,7 +26385,7 @@ S 0.200 0.200 0.200 scn BT -51.24 527.1130000000003 Td +51.24 672.3130000000001 Td /F2.0 10.5 Tf <323030> Tj ET @@ -20638,26 +26393,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 543.360 m -460.656 543.360 l +99.792 688.560 m +460.656 688.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 520.080 m -460.656 520.080 l +99.792 665.280 m +460.656 665.280 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 543.610 m -99.792 519.830 l +99.792 688.810 m +99.792 665.030 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 543.610 m -460.656 519.830 l +460.656 688.810 m +460.656 665.030 l S [ ] 0 d 1 w @@ -20665,7 +26420,7 @@ S 0.200 0.200 0.200 scn BT -102.792 527.1130000000003 Td +102.792 672.3130000000001 Td /F1.0 10.5 Tf <4f75747075742074797065> Tj ET @@ -20673,26 +26428,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 543.360 m -563.760 543.360 l +460.656 688.560 m +563.760 688.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 520.080 m -563.760 520.080 l +460.656 665.280 m +563.760 665.280 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 543.610 m -460.656 519.830 l +460.656 688.810 m +460.656 665.030 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 543.610 m -563.760 519.830 l +563.760 688.810 m +563.760 665.030 l S [ ] 0 d 1 w @@ -20706,7 +26461,7 @@ S 0.259 0.545 0.792 SCN BT -463.65600000000006 527.1130000000003 Td +463.65600000000006 672.3130000000001 Td /F1.0 10.5 Tf <506f6c6963794d6f64656c> Tj ET @@ -20718,9 +26473,9 @@ ET 0.200 0.200 0.200 SCN BT -48.24 490.4960000000004 Td +48.24 635.6960000000003 Td /F2.0 13 Tf -<322e32362e332e2050726f6475636573> Tj +<322e33322e332e20436f6e73756d6573> Tj ET 0.000 0.000 0.000 SCN @@ -20731,7 +26486,7 @@ ET 0.200 0.200 0.200 SCN BT -56.88050000000001 463.83600000000035 Td +56.88050000000001 609.0360000000003 Td /F1.0 10.5 Tf Tj ET @@ -20744,7 +26499,44 @@ ET 0.694 0.129 0.275 SCN BT -66.24000000000001 466.0200000000004 Td +66.24000000000001 611.2200000000004 Td +/F4.0 10.5 Tf +<706c61696e2f74657874> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 579.4160000000004 Td +/F2.0 13 Tf +<322e33322e342e2050726f6475636573> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +-0.500 Tc +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +56.88050000000001 552.7560000000004 Td +/F1.0 10.5 Tf + Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +0.000 Tc +0.694 0.129 0.275 scn +0.694 0.129 0.275 SCN + +BT +66.24000000000001 554.9400000000005 Td /F4.0 10.5 Tf <6170706c69636174696f6e2f6a736f6e> Tj ET @@ -20755,9 +26547,9 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 428.3760000000004 Td +48.24000000000001 517.2960000000005 Td /F2.0 18 Tf -[<322e32372e20505554202f76322f706f6c69637954> 29.78515625 <6f7363614d6f64656c732f7b706f6c6963794d6f64656c547970657d>] TJ +<322e33332e20474554202f76322f74656d706c61746573> Tj ET 0.000 0.000 0.000 SCN @@ -20766,71 +26558,59 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 394.1360000000003 Td +48.24000000000001 483.0560000000005 Td /F2.0 13 Tf -[<322e32372e312e20506172> 20.01953125 <616d6574657273>] TJ +<322e33332e312e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 356.160 114.560 23.280 re +48.240 430.800 51.552 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 356.160 171.840 23.280 re +99.792 430.800 360.864 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 356.160 229.120 23.280 re +460.656 430.800 103.104 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 318.600 114.560 37.560 re +48.240 407.520 51.552 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 318.600 171.840 37.560 re +99.792 407.520 360.864 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 318.600 229.120 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 281.040 114.560 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -162.800 281.040 171.840 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -334.640 281.040 229.120 37.560 re +460.656 407.520 103.104 23.280 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 379.440 m -162.800 379.440 l +48.240 468.360 m +99.792 468.360 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 356.160 m -162.800 356.160 l +48.240 430.800 m +99.792 430.800 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 379.690 m -48.240 355.410 l +48.240 468.610 m +48.240 430.050 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 379.690 m -162.800 355.410 l +99.792 468.610 m +99.792 430.050 l S [ ] 0 d 1 w @@ -20838,69 +26618,41 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 363.69300000000027 Td +51.24000000000001 452.61300000000045 Td /F2.0 10.5 Tf -<54797065> Tj +<48545450> Tj ET -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -162.800 379.440 m -334.640 379.440 l -S -[ ] 0 d -1.5 w -0.867 0.867 0.867 SCN -162.800 356.160 m -334.640 356.160 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -162.800 379.690 m -162.800 355.410 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -334.640 379.690 m -334.640 355.410 l -S -[ ] 0 d -1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn BT -165.79988544000003 363.69300000000027 Td +51.24000000000001 438.3330000000004 Td /F2.0 10.5 Tf -<4e616d65> Tj +<436f6465> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 379.440 m -563.760 379.440 l +99.792 468.360 m +460.656 468.360 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -334.640 356.160 m -563.760 356.160 l +99.792 430.800 m +460.656 430.800 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 379.690 m -334.640 355.410 l +99.792 468.610 m +99.792 430.050 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 379.690 m -563.760 355.410 l +460.656 468.610 m +460.656 430.050 l S [ ] 0 d 1 w @@ -20908,34 +26660,34 @@ S 0.200 0.200 0.200 scn BT -337.6397136 363.69300000000027 Td +102.792 452.61300000000045 Td /F2.0 10.5 Tf -<536368656d61> Tj +<4465736372697074696f6e> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 356.160 m -162.800 356.160 l +460.656 468.360 m +563.760 468.360 l S [ ] 0 d -0.5 w +1.5 w 0.867 0.867 0.867 SCN -48.240 318.600 m -162.800 318.600 l +460.656 430.800 m +563.760 430.800 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 356.410 m -48.240 318.350 l +460.656 468.610 m +460.656 430.050 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 356.410 m -162.800 318.350 l +563.760 468.610 m +563.760 430.050 l S [ ] 0 d 1 w @@ -20943,34 +26695,34 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 332.7730000000003 Td +463.65600000000006 452.61300000000045 Td /F2.0 10.5 Tf -<50617468> Tj +<536368656d61> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 356.160 m -334.640 356.160 l +48.240 430.800 m +99.792 430.800 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 318.600 m -334.640 318.600 l +48.240 407.520 m +99.792 407.520 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 356.410 m -162.800 318.350 l +48.240 431.050 m +48.240 407.270 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 356.410 m -334.640 318.350 l +99.792 431.050 m +99.792 407.270 l S [ ] 0 d 1 w @@ -20978,46 +26730,34 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 339.9130000000003 Td +51.24000000000001 414.55300000000045 Td /F2.0 10.5 Tf -<706f6c6963794d6f64656c54797065> Tj -ET - - -BT -165.79988544000003 325.63300000000027 Td -ET - - -BT -165.79988544000003 325.63300000000027 Td -/F3.0 10.5 Tf -<7265717569726564> Tj +<323030> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 356.160 m -563.760 356.160 l +99.792 430.800 m +460.656 430.800 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 318.600 m -563.760 318.600 l +99.792 407.520 m +460.656 407.520 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 356.410 m -334.640 318.350 l +99.792 431.050 m +99.792 407.270 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 356.410 m -563.760 318.350 l +460.656 431.050 m +460.656 407.270 l S [ ] 0 d 1 w @@ -21025,186 +26765,160 @@ S 0.200 0.200 0.200 scn BT -337.6397136 332.7730000000003 Td +102.792 414.55300000000045 Td /F1.0 10.5 Tf -<737472696e67> Tj +<4f75747075742074797065> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 318.600 m -162.800 318.600 l +460.656 430.800 m +563.760 430.800 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 281.040 m -162.800 281.040 l +460.656 407.520 m +563.760 407.520 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 318.850 m -48.240 280.790 l +460.656 431.050 m +460.656 407.270 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 318.850 m -162.800 280.790 l +563.760 431.050 m +563.760 407.270 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT -51.24000000000001 295.21300000000025 Td -/F2.0 10.5 Tf -<426f6479> Tj +463.65600000000006 414.55300000000045 Td +/F1.0 10.5 Tf +[<4c6f6f7054> 29.78515625 <656d706c617465>] TJ ET -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -162.800 318.600 m -334.640 318.600 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -162.800 281.040 m -334.640 281.040 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -162.800 318.850 m -162.800 280.790 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -334.640 318.850 m -334.640 280.790 l -S -[ ] 0 d -1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN BT -165.79988544000003 302.35300000000024 Td -/F2.0 10.5 Tf -<626f6479> Tj +48.24000000000001 377.93600000000043 Td +/F2.0 13 Tf +<322e33332e322e2050726f6475636573> Tj ET +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +-0.500 Tc +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN BT -165.79988544000003 288.0730000000002 Td +56.88050000000001 351.2760000000004 Td +/F1.0 10.5 Tf + Tj ET +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn + +0.000 Tc +0.694 0.129 0.275 scn +0.694 0.129 0.275 SCN BT -165.79988544000003 288.0730000000002 Td -/F3.0 10.5 Tf -<7265717569726564> Tj +66.24000000000001 353.46000000000043 Td +/F4.0 10.5 Tf +<6170706c69636174696f6e2f6a736f6e> Tj ET -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -334.640 318.600 m -563.760 318.600 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -334.640 281.040 m -563.760 281.040 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -334.640 318.850 m -334.640 280.790 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -563.760 318.850 m -563.760 280.790 l -S -[ ] 0 d -1 w 0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn 0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN BT -337.6397136 295.21300000000025 Td -/F1.0 10.5 Tf -<737472696e67> Tj +48.24000000000001 315.81600000000043 Td +/F2.0 18 Tf +<322e33342e20474554202f76322f74656d706c617465732f6e616d6573> Tj ET +0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24000000000001 251.45600000000024 Td +48.24000000000001 281.57600000000036 Td /F2.0 13 Tf -<322e32372e322e20526573706f6e736573> Tj +<322e33342e312e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 199.200 51.552 37.560 re +48.240 229.320 51.552 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 199.200 360.864 37.560 re +99.792 229.320 360.864 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 199.200 103.104 37.560 re +460.656 229.320 103.104 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 175.920 51.552 23.280 re +48.240 206.040 51.552 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 175.920 360.864 23.280 re +99.792 206.040 360.864 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 175.920 103.104 23.280 re +460.656 206.040 103.104 23.280 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 236.760 m -99.792 236.760 l +48.240 266.880 m +99.792 266.880 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 199.200 m -99.792 199.200 l +48.240 229.320 m +99.792 229.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 237.010 m -48.240 198.450 l +48.240 267.130 m +48.240 228.570 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 237.010 m -99.792 198.450 l +99.792 267.130 m +99.792 228.570 l S [ ] 0 d 1 w @@ -21212,14 +26926,14 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 221.01300000000026 Td +51.24000000000001 251.13300000000032 Td /F2.0 10.5 Tf <48545450> Tj ET BT -51.24000000000001 206.73300000000026 Td +51.24000000000001 236.85300000000032 Td /F2.0 10.5 Tf <436f6465> Tj ET @@ -21227,26 +26941,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 236.760 m -460.656 236.760 l +99.792 266.880 m +460.656 266.880 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -99.792 199.200 m -460.656 199.200 l +99.792 229.320 m +460.656 229.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 237.010 m -99.792 198.450 l +99.792 267.130 m +99.792 228.570 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 237.010 m -460.656 198.450 l +460.656 267.130 m +460.656 228.570 l S [ ] 0 d 1 w @@ -21254,7 +26968,7 @@ S 0.200 0.200 0.200 scn BT -102.792 221.01300000000026 Td +102.792 251.13300000000032 Td /F2.0 10.5 Tf <4465736372697074696f6e> Tj ET @@ -21262,26 +26976,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 236.760 m -563.760 236.760 l +460.656 266.880 m +563.760 266.880 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -460.656 199.200 m -563.760 199.200 l +460.656 229.320 m +563.760 229.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 237.010 m -460.656 198.450 l +460.656 267.130 m +460.656 228.570 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 237.010 m -563.760 198.450 l +563.760 267.130 m +563.760 228.570 l S [ ] 0 d 1 w @@ -21289,7 +27003,7 @@ S 0.200 0.200 0.200 scn BT -463.65600000000006 221.01300000000026 Td +463.65600000000006 251.13300000000032 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -21297,124 +27011,116 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 199.200 m -99.792 199.200 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -48.240 175.920 m -99.792 175.920 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -48.240 199.450 m -48.240 175.670 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -99.792 199.450 m -99.792 175.670 l -S -[ ] 0 d -1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn - -BT -51.24000000000001 182.95300000000026 Td -/F2.0 10.5 Tf -<323030> Tj -ET - -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -99.792 199.200 m -460.656 199.200 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -99.792 175.920 m -460.656 175.920 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -99.792 199.450 m -99.792 175.670 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -460.656 199.450 m -460.656 175.670 l -S -[ ] 0 d -1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn - -BT -102.792 182.95300000000026 Td -/F1.0 10.5 Tf -<4f75747075742074797065> Tj -ET - -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -460.656 199.200 m -563.760 199.200 l +48.240 229.320 m +99.792 229.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 175.920 m -563.760 175.920 l +48.240 206.040 m +99.792 206.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 199.450 m -460.656 175.670 l +48.240 229.570 m +48.240 205.790 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 199.450 m -563.760 175.670 l +99.792 229.570 m +99.792 205.790 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN + +BT +51.24000000000001 213.07300000000035 Td +/F2.0 10.5 Tf +<323030> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +99.792 229.320 m +460.656 229.320 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 206.040 m +460.656 206.040 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +99.792 229.570 m +99.792 205.790 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 229.570 m +460.656 205.790 l +S +[ ] 0 d +1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -463.65600000000006 182.95300000000026 Td +102.792 213.07300000000035 Td /F1.0 10.5 Tf -<506f6c6963794d6f64656c> Tj +<4f75747075742074797065> Tj ET +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +460.656 229.320 m +563.760 229.320 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 206.040 m +563.760 206.040 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +460.656 229.570 m +460.656 205.790 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 229.570 m +563.760 205.790 l +S +[ ] 0 d +1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn + +BT +463.65600000000006 213.07300000000035 Td +/F1.0 10.5 Tf +[<3c20737472696e67203e20617272> 20.01953125 <61> 20.01953125 <79>] TJ +ET + 0.000 0.000 0.000 scn 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24000000000001 146.33600000000024 Td +48.24000000000001 176.4560000000003 Td /F2.0 13 Tf -<322e32372e332e20436f6e73756d6573> Tj +<322e33342e322e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -21425,7 +27131,7 @@ ET 0.200 0.200 0.200 SCN BT -56.88050000000001 119.67600000000022 Td +56.88050000000001 149.7960000000003 Td /F1.0 10.5 Tf Tj ET @@ -21438,9 +27144,9 @@ ET 0.694 0.129 0.275 SCN BT -66.24000000000001 121.86000000000021 Td +66.24000000000001 151.9800000000003 Td /F4.0 10.5 Tf -<706c61696e2f74657874> Tj +<6170706c69636174696f6e2f6a736f6e> Tj ET 0.000 0.000 0.000 SCN @@ -21449,35 +27155,20 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 90.05600000000021 Td -/F2.0 13 Tf -<322e32372e342e2050726f6475636573> Tj +48.24000000000001 114.33600000000028 Td +/F2.0 18 Tf +<322e33352e20474554202f76322f74656d706c617465732f7b74656d706c6174654e616d657d> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn - --0.500 Tc 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -56.88050000000001 63.396000000000214 Td -/F1.0 10.5 Tf - Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn - -0.000 Tc -0.694 0.129 0.275 scn -0.694 0.129 0.275 SCN - -BT -66.24000000000001 65.58000000000021 Td -/F4.0 10.5 Tf -<6170706c69636174696f6e2f6a736f6e> Tj +48.24000000000001 80.09600000000029 Td +/F2.0 13 Tf +[<322e33352e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN @@ -21496,7 +27187,7 @@ q BT 552.698 14.388 Td /F1.0 9 Tf -<3133> Tj +<3137> Tj ET 0.000 0.000 0.000 SCN @@ -21506,146 +27197,129 @@ Q endstream endobj -178 0 obj +224 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 177 0 R +/Contents 223 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 22 0 R -/F3.0 24 0 R +/Font << /F2.0 24 0 R /F1.0 8 0 R -/F4.0 33 0 R +/F4.0 35 0 R >> -/XObject << /Stamp1 588 0 R +/XObject << /Stamp1 684 0 R >> >> -/Annots [182 0 R 188 0 R] +/Annots [226 0 R 231 0 R] >> endobj -179 0 obj -[178 0 R /XYZ 0 792.0 null] -endobj -180 0 obj -[178 0 R /XYZ 0 718.32 null] -endobj -181 0 obj -[178 0 R /XYZ 0 613.2000000000003 null] +225 0 obj +[224 0 R /XYZ 0 792.0 null] endobj -182 0 obj +226 0 obj << /Border [0 0 0] /Dest (_policymodel) /Subtype /Link -/Rect [463.65600000000006 524.0470000000004 524.955 538.3270000000003] +/Rect [463.65600000000006 669.2470000000002 524.955 683.5270000000002] /Type /Annot >> endobj -183 0 obj -[178 0 R /XYZ 0 508.0800000000004 null] -endobj -184 0 obj -[178 0 R /XYZ 0 451.80000000000035 null] +227 0 obj +[224 0 R /XYZ 0 653.2800000000002 null] endobj -185 0 obj -[178 0 R /XYZ 0 411.7200000000003 null] +228 0 obj +[224 0 R /XYZ 0 597.0000000000003 null] endobj -186 0 obj -[178 0 R /XYZ 0 269.04000000000025 null] +229 0 obj +[224 0 R /XYZ 0 540.7200000000005 null] endobj -187 0 obj -<< /Limits [(_responses_2) (_responses_4)] -/Names [(_responses_2) 35 0 R (_responses_20) 141 0 R (_responses_21) 148 0 R (_responses_22) 157 0 R (_responses_23) 166 0 R (_responses_24) 170 0 R (_responses_25) 175 0 R (_responses_26) 181 0 R (_responses_27) 186 0 R (_responses_28) 194 0 R (_responses_29) 199 0 R (_responses_3) 38 0 R (_responses_30) 203 0 R (_responses_4) 46 0 R] ->> +230 0 obj +[224 0 R /XYZ 0 500.6400000000005 null] endobj -188 0 obj +231 0 obj << /Border [0 0 0] -/Dest (_policymodel) +/Dest (_looptemplate) /Subtype /Link -/Rect [463.65600000000006 179.88700000000026 524.955 194.16700000000026] +/Rect [463.65600000000006 411.4870000000005 535.2997558593751 425.76700000000045] /Type /Annot >> endobj -189 0 obj -[178 0 R /XYZ 0 163.92000000000024 null] +232 0 obj +[224 0 R /XYZ 0 395.52000000000044 null] endobj -190 0 obj -[178 0 R /XYZ 0 107.64000000000021 null] +233 0 obj +[224 0 R /XYZ 0 339.2400000000004 null] endobj -191 0 obj -<< /Length 16516 +234 0 obj +[224 0 R /XYZ 0 299.16000000000037 null] +endobj +235 0 obj +[224 0 R /XYZ 0 194.04000000000033 null] +endobj +236 0 obj +[224 0 R /XYZ 0 137.7600000000003 null] +endobj +237 0 obj +[224 0 R /XYZ 0 97.68000000000029 null] +endobj +238 0 obj +<< /Limits [(_parameters_24) (_paths)] +/Names [(_parameters_24) 216 0 R (_parameters_25) 222 0 R (_parameters_26) 237 0 R (_parameters_27) 245 0 R (_parameters_3) 69 0 R (_parameters_4) 78 0 R (_parameters_5) 82 0 R (_parameters_6) 89 0 R (_parameters_7) 95 0 R (_parameters_8) 103 0 R (_parameters_9) 106 0 R (_paths) 30 0 R] +>> +endobj +239 0 obj +<< /Length 15296 >> stream q /DeviceRGB cs -0.200 0.200 0.200 scn -/DeviceRGB CS -0.200 0.200 0.200 SCN - -BT -48.24 734.976 Td -/F2.0 18 Tf -<322e32382e20474554202f76322f74656d706c61746573> Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -48.24 700.7360000000001 Td -/F2.0 13 Tf -<322e32382e312e20526573706f6e736573> Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 648.480 51.552 37.560 re +48.240 732.720 114.560 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 648.480 360.864 37.560 re +162.800 732.720 171.840 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 648.480 103.104 37.560 re +334.640 732.720 229.120 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 625.200 51.552 23.280 re +48.240 695.160 114.560 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 625.200 360.864 23.280 re +162.800 695.160 171.840 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 625.200 103.104 23.280 re +334.640 695.160 229.120 37.560 re f 0.000 0.000 0.000 scn 0.5 w +/DeviceRGB CS 0.867 0.867 0.867 SCN -48.240 686.040 m -99.792 686.040 l +48.240 756.000 m +162.800 756.000 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 648.480 m -99.792 648.480 l +48.240 732.720 m +162.800 732.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 686.290 m -48.240 647.730 l +48.240 756.250 m +48.240 731.970 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 686.290 m -99.792 647.730 l +162.800 756.250 m +162.800 731.970 l S [ ] 0 d 1 w @@ -21653,41 +27327,34 @@ S 0.200 0.200 0.200 scn BT -51.24 670.2930000000001 Td -/F2.0 10.5 Tf -<48545450> Tj -ET - - -BT -51.24 656.0130000000001 Td +51.24 740.2529999999999 Td /F2.0 10.5 Tf -<436f6465> Tj +<54797065> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 686.040 m -460.656 686.040 l +162.800 756.000 m +334.640 756.000 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -99.792 648.480 m -460.656 648.480 l +162.800 732.720 m +334.640 732.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 686.290 m -99.792 647.730 l +162.800 756.250 m +162.800 731.970 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 686.290 m -460.656 647.730 l +334.640 756.250 m +334.640 731.970 l S [ ] 0 d 1 w @@ -21695,34 +27362,34 @@ S 0.200 0.200 0.200 scn BT -102.792 670.2930000000001 Td +165.79988544 740.2529999999999 Td /F2.0 10.5 Tf -<4465736372697074696f6e> Tj +<4e616d65> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 686.040 m -563.760 686.040 l +334.640 756.000 m +563.760 756.000 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -460.656 648.480 m -563.760 648.480 l +334.640 732.720 m +563.760 732.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 686.290 m -460.656 647.730 l +334.640 756.250 m +334.640 731.970 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 686.290 m -563.760 647.730 l +563.760 756.250 m +563.760 731.970 l S [ ] 0 d 1 w @@ -21730,7 +27397,7 @@ S 0.200 0.200 0.200 scn BT -463.65600000000006 670.2930000000001 Td +337.6397136 740.2529999999999 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -21738,26 +27405,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 648.480 m -99.792 648.480 l +48.240 732.720 m +162.800 732.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 625.200 m -99.792 625.200 l +48.240 695.160 m +162.800 695.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 648.730 m -48.240 624.950 l +48.240 732.970 m +48.240 694.910 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 648.730 m -99.792 624.950 l +162.800 732.970 m +162.800 694.910 l S [ ] 0 d 1 w @@ -21765,34 +27432,34 @@ S 0.200 0.200 0.200 scn BT -51.24 632.2330000000002 Td +51.24 709.333 Td /F2.0 10.5 Tf -<323030> Tj +<50617468> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 648.480 m -460.656 648.480 l +162.800 732.720 m +334.640 732.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 625.200 m -460.656 625.200 l +162.800 695.160 m +334.640 695.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 648.730 m -99.792 624.950 l +162.800 732.970 m +162.800 694.910 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 648.730 m -460.656 624.950 l +334.640 732.970 m +334.640 694.910 l S [ ] 0 d 1 w @@ -21800,160 +27467,116 @@ S 0.200 0.200 0.200 scn BT -102.792 632.2330000000002 Td -/F1.0 10.5 Tf -<4f75747075742074797065> Tj +165.79988544 716.473 Td +/F2.0 10.5 Tf +<74656d706c6174654e616d65> Tj +ET + + +BT +165.79988544 702.193 Td +ET + + +BT +165.79988544 702.193 Td +/F3.0 10.5 Tf +<7265717569726564> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 648.480 m -563.760 648.480 l +334.640 732.720 m +563.760 732.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 625.200 m -563.760 625.200 l +334.640 695.160 m +563.760 695.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 648.730 m -460.656 624.950 l +334.640 732.970 m +334.640 694.910 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 648.730 m -563.760 624.950 l +563.760 732.970 m +563.760 694.910 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -463.65600000000006 632.2330000000002 Td +337.6397136 709.333 Td /F1.0 10.5 Tf -[<4c6f6f7054> 29.78515625 <656d706c617465>] TJ -ET - -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -48.24 595.6160000000003 Td -/F2.0 13 Tf -<322e32382e322e2050726f6475636573> Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn - --0.500 Tc -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -56.88050000000001 568.9560000000004 Td -/F1.0 10.5 Tf - Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn - -0.000 Tc -0.694 0.129 0.275 scn -0.694 0.129 0.275 SCN - -BT -66.24000000000001 571.1400000000004 Td -/F4.0 10.5 Tf -<6170706c69636174696f6e2f6a736f6e> Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -48.24000000000001 533.4960000000005 Td -/F2.0 18 Tf -<322e32392e20474554202f76322f74656d706c617465732f6e616d6573> Tj +<737472696e67> Tj ET -0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24000000000001 499.25600000000054 Td +48.24 665.5760000000001 Td /F2.0 13 Tf -<322e32392e312e20526573706f6e736573> Tj +<322e33352e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 447.000 51.552 37.560 re +48.240 613.320 51.552 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 447.000 360.864 37.560 re +99.792 613.320 360.864 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 447.000 103.104 37.560 re +460.656 613.320 103.104 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 423.720 51.552 23.280 re +48.240 590.040 51.552 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 423.720 360.864 23.280 re +99.792 590.040 360.864 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 423.720 103.104 23.280 re +460.656 590.040 103.104 23.280 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 484.560 m -99.792 484.560 l +48.240 650.880 m +99.792 650.880 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 447.000 m -99.792 447.000 l +48.240 613.320 m +99.792 613.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 484.810 m -48.240 446.250 l +48.240 651.130 m +48.240 612.570 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 484.810 m -99.792 446.250 l +99.792 651.130 m +99.792 612.570 l S [ ] 0 d 1 w @@ -21961,14 +27584,14 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 468.8130000000005 Td +51.24 635.1330000000003 Td /F2.0 10.5 Tf <48545450> Tj ET BT -51.24000000000001 454.53300000000047 Td +51.24 620.8530000000002 Td /F2.0 10.5 Tf <436f6465> Tj ET @@ -21976,26 +27599,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 484.560 m -460.656 484.560 l +99.792 650.880 m +460.656 650.880 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -99.792 447.000 m -460.656 447.000 l +99.792 613.320 m +460.656 613.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 484.810 m -99.792 446.250 l +99.792 651.130 m +99.792 612.570 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 484.810 m -460.656 446.250 l +460.656 651.130 m +460.656 612.570 l S [ ] 0 d 1 w @@ -22003,7 +27626,7 @@ S 0.200 0.200 0.200 scn BT -102.792 468.8130000000005 Td +102.792 635.1330000000003 Td /F2.0 10.5 Tf <4465736372697074696f6e> Tj ET @@ -22011,26 +27634,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 484.560 m -563.760 484.560 l +460.656 650.880 m +563.760 650.880 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -460.656 447.000 m -563.760 447.000 l +460.656 613.320 m +563.760 613.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 484.810 m -460.656 446.250 l +460.656 651.130 m +460.656 612.570 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 484.810 m -563.760 446.250 l +563.760 651.130 m +563.760 612.570 l S [ ] 0 d 1 w @@ -22038,7 +27661,7 @@ S 0.200 0.200 0.200 scn BT -463.65600000000006 468.8130000000005 Td +463.65600000000006 635.1330000000003 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -22046,26 +27669,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 447.000 m -99.792 447.000 l +48.240 613.320 m +99.792 613.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 423.720 m -99.792 423.720 l +48.240 590.040 m +99.792 590.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 447.250 m -48.240 423.470 l +48.240 613.570 m +48.240 589.790 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 447.250 m -99.792 423.470 l +99.792 613.570 m +99.792 589.790 l S [ ] 0 d 1 w @@ -22073,7 +27696,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 430.7530000000005 Td +51.24 597.0730000000001 Td /F2.0 10.5 Tf <323030> Tj ET @@ -22081,26 +27704,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 447.000 m -460.656 447.000 l +99.792 613.320 m +460.656 613.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 423.720 m -460.656 423.720 l +99.792 590.040 m +460.656 590.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 447.250 m -99.792 423.470 l +99.792 613.570 m +99.792 589.790 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 447.250 m -460.656 423.470 l +460.656 613.570 m +460.656 589.790 l S [ ] 0 d 1 w @@ -22108,7 +27731,7 @@ S 0.200 0.200 0.200 scn BT -102.792 430.7530000000005 Td +102.792 597.0730000000001 Td /F1.0 10.5 Tf <4f75747075742074797065> Tj ET @@ -22116,46 +27739,54 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 447.000 m -563.760 447.000 l +460.656 613.320 m +563.760 613.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 423.720 m -563.760 423.720 l +460.656 590.040 m +563.760 590.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 447.250 m -460.656 423.470 l +460.656 613.570 m +460.656 589.790 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 447.250 m -563.760 423.470 l +563.760 613.570 m +563.760 589.790 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT -463.65600000000006 430.7530000000005 Td +463.65600000000006 597.0730000000001 Td /F1.0 10.5 Tf -[<3c20737472696e67203e20617272> 20.01953125 <61> 20.01953125 <79>] TJ +[<4c6f6f7054> 29.78515625 <656d706c617465>] TJ ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24000000000001 394.1360000000005 Td +48.24 560.4560000000002 Td /F2.0 13 Tf -<322e32392e322e2050726f6475636573> Tj +<322e33352e332e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -22166,7 +27797,7 @@ ET 0.200 0.200 0.200 SCN BT -56.88050000000001 367.47600000000045 Td +56.88050000000001 533.7960000000003 Td /F1.0 10.5 Tf Tj ET @@ -22179,7 +27810,7 @@ ET 0.694 0.129 0.275 SCN BT -66.24000000000001 369.6600000000005 Td +66.24000000000001 535.9800000000004 Td /F4.0 10.5 Tf <6170706c69636174696f6e2f6a736f6e> Tj ET @@ -22190,9 +27821,20 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 332.0160000000005 Td +48.24000000000001 498.3360000000004 Td +/F2.0 18 Tf +<322e33362e20474554> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24000000000001 470.2560000000004 Td /F2.0 18 Tf -<322e33302e20474554202f76322f74656d706c617465732f7b74656d706c6174654e616d657d> Tj +<2f76322f74656d706c617465732f7b74656d706c6174654e616d657d2f737667526570726573656e746174696f6e> Tj ET 0.000 0.000 0.000 SCN @@ -22201,59 +27843,59 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 297.7760000000004 Td +48.24000000000001 436.01600000000036 Td /F2.0 13 Tf -[<322e33302e312e20506172> 20.01953125 <616d6574657273>] TJ +[<322e33362e312e20506172> 20.01953125 <616d6574657273>] TJ ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 259.800 114.560 23.280 re +48.240 398.040 114.560 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 259.800 171.840 23.280 re +162.800 398.040 171.840 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 259.800 229.120 23.280 re +334.640 398.040 229.120 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 222.240 114.560 37.560 re +48.240 360.480 114.560 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -162.800 222.240 171.840 37.560 re +162.800 360.480 171.840 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -334.640 222.240 229.120 37.560 re +334.640 360.480 229.120 37.560 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 283.080 m -162.800 283.080 l +48.240 421.320 m +162.800 421.320 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 259.800 m -162.800 259.800 l +48.240 398.040 m +162.800 398.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 283.330 m -48.240 259.050 l +48.240 421.570 m +48.240 397.290 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 283.330 m -162.800 259.050 l +162.800 421.570 m +162.800 397.290 l S [ ] 0 d 1 w @@ -22261,7 +27903,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 267.33300000000037 Td +51.24000000000001 405.5730000000003 Td /F2.0 10.5 Tf <54797065> Tj ET @@ -22269,26 +27911,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 283.080 m -334.640 283.080 l +162.800 421.320 m +334.640 421.320 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -162.800 259.800 m -334.640 259.800 l +162.800 398.040 m +334.640 398.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 283.330 m -162.800 259.050 l +162.800 421.570 m +162.800 397.290 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 283.330 m -334.640 259.050 l +334.640 421.570 m +334.640 397.290 l S [ ] 0 d 1 w @@ -22296,7 +27938,7 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 267.33300000000037 Td +165.79988544000003 405.5730000000003 Td /F2.0 10.5 Tf <4e616d65> Tj ET @@ -22304,26 +27946,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 283.080 m -563.760 283.080 l +334.640 421.320 m +563.760 421.320 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -334.640 259.800 m -563.760 259.800 l +334.640 398.040 m +563.760 398.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 283.330 m -334.640 259.050 l +334.640 421.570 m +334.640 397.290 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 283.330 m -563.760 259.050 l +563.760 421.570 m +563.760 397.290 l S [ ] 0 d 1 w @@ -22331,7 +27973,7 @@ S 0.200 0.200 0.200 scn BT -337.6397136 267.33300000000037 Td +337.6397136 405.5730000000003 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -22339,26 +27981,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 259.800 m -162.800 259.800 l +48.240 398.040 m +162.800 398.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 222.240 m -162.800 222.240 l +48.240 360.480 m +162.800 360.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 260.050 m -48.240 221.990 l +48.240 398.290 m +48.240 360.230 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 260.050 m -162.800 221.990 l +162.800 398.290 m +162.800 360.230 l S [ ] 0 d 1 w @@ -22366,7 +28008,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 236.4130000000004 Td +51.24000000000001 374.6530000000003 Td /F2.0 10.5 Tf <50617468> Tj ET @@ -22374,26 +28016,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -162.800 259.800 m -334.640 259.800 l +162.800 398.040 m +334.640 398.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 222.240 m -334.640 222.240 l +162.800 360.480 m +334.640 360.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -162.800 260.050 m -162.800 221.990 l +162.800 398.290 m +162.800 360.230 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 260.050 m -334.640 221.990 l +334.640 398.290 m +334.640 360.230 l S [ ] 0 d 1 w @@ -22401,19 +28043,19 @@ S 0.200 0.200 0.200 scn BT -165.79988544000003 243.55300000000042 Td +165.79988544000003 381.7930000000003 Td /F2.0 10.5 Tf <74656d706c6174654e616d65> Tj ET BT -165.79988544000003 229.27300000000042 Td +165.79988544000003 367.51300000000026 Td ET BT -165.79988544000003 229.27300000000042 Td +165.79988544000003 367.51300000000026 Td /F3.0 10.5 Tf <7265717569726564> Tj ET @@ -22421,26 +28063,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -334.640 259.800 m -563.760 259.800 l +334.640 398.040 m +563.760 398.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 222.240 m -563.760 222.240 l +334.640 360.480 m +563.760 360.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -334.640 260.050 m -334.640 221.990 l +334.640 398.290 m +334.640 360.230 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 260.050 m -563.760 221.990 l +563.760 398.290 m +563.760 360.230 l S [ ] 0 d 1 w @@ -22448,7 +28090,7 @@ S 0.200 0.200 0.200 scn BT -337.6397136 236.4130000000004 Td +337.6397136 374.6530000000003 Td /F1.0 10.5 Tf <737472696e67> Tj ET @@ -22458,59 +28100,59 @@ ET 0.200 0.200 0.200 SCN BT -48.24000000000001 192.6560000000004 Td +48.24000000000001 330.8960000000003 Td /F2.0 13 Tf -<322e33302e322e20526573706f6e736573> Tj +<322e33362e322e20526573706f6e736573> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 140.400 51.552 37.560 re +48.240 278.640 51.552 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 140.400 360.864 37.560 re +99.792 278.640 360.864 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 140.400 103.104 37.560 re +460.656 278.640 103.104 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 117.120 51.552 23.280 re +48.240 255.360 51.552 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -99.792 117.120 360.864 23.280 re +99.792 255.360 360.864 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -460.656 117.120 103.104 23.280 re +460.656 255.360 103.104 23.280 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 177.960 m -99.792 177.960 l +48.240 316.200 m +99.792 316.200 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 140.400 m -99.792 140.400 l +48.240 278.640 m +99.792 278.640 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 178.210 m -48.240 139.650 l +48.240 316.450 m +48.240 277.890 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 178.210 m -99.792 139.650 l +99.792 316.450 m +99.792 277.890 l S [ ] 0 d 1 w @@ -22518,14 +28160,14 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 162.2130000000004 Td +51.24000000000001 300.45300000000026 Td /F2.0 10.5 Tf <48545450> Tj ET BT -51.24000000000001 147.9330000000004 Td +51.24000000000001 286.17300000000023 Td /F2.0 10.5 Tf <436f6465> Tj ET @@ -22533,26 +28175,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 177.960 m -460.656 177.960 l +99.792 316.200 m +460.656 316.200 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -99.792 140.400 m -460.656 140.400 l +99.792 278.640 m +460.656 278.640 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 178.210 m -99.792 139.650 l +99.792 316.450 m +99.792 277.890 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 178.210 m -460.656 139.650 l +460.656 316.450 m +460.656 277.890 l S [ ] 0 d 1 w @@ -22560,7 +28202,7 @@ S 0.200 0.200 0.200 scn BT -102.792 162.2130000000004 Td +102.792 300.45300000000026 Td /F2.0 10.5 Tf <4465736372697074696f6e> Tj ET @@ -22568,26 +28210,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 177.960 m -563.760 177.960 l +460.656 316.200 m +563.760 316.200 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -460.656 140.400 m -563.760 140.400 l +460.656 278.640 m +563.760 278.640 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 178.210 m -460.656 139.650 l +460.656 316.450 m +460.656 277.890 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 178.210 m -563.760 139.650 l +563.760 316.450 m +563.760 277.890 l S [ ] 0 d 1 w @@ -22595,7 +28237,7 @@ S 0.200 0.200 0.200 scn BT -463.65600000000006 162.2130000000004 Td +463.65600000000006 300.45300000000026 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -22603,26 +28245,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 140.400 m -99.792 140.400 l +48.240 278.640 m +99.792 278.640 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 117.120 m -99.792 117.120 l +48.240 255.360 m +99.792 255.360 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 140.650 m -48.240 116.870 l +48.240 278.890 m +48.240 255.110 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 140.650 m -99.792 116.870 l +99.792 278.890 m +99.792 255.110 l S [ ] 0 d 1 w @@ -22630,7 +28272,7 @@ S 0.200 0.200 0.200 scn BT -51.24000000000001 124.15300000000039 Td +51.24000000000001 262.39300000000026 Td /F2.0 10.5 Tf <323030> Tj ET @@ -22638,26 +28280,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -99.792 140.400 m -460.656 140.400 l +99.792 278.640 m +460.656 278.640 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 117.120 m -460.656 117.120 l +99.792 255.360 m +460.656 255.360 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -99.792 140.650 m -99.792 116.870 l +99.792 278.890 m +99.792 255.110 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 140.650 m -460.656 116.870 l +460.656 278.890 m +460.656 255.110 l S [ ] 0 d 1 w @@ -22665,7 +28307,7 @@ S 0.200 0.200 0.200 scn BT -102.792 124.15300000000039 Td +102.792 262.39300000000026 Td /F1.0 10.5 Tf <4f75747075742074797065> Tj ET @@ -22673,54 +28315,46 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -460.656 140.400 m -563.760 140.400 l +460.656 278.640 m +563.760 278.640 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 117.120 m -563.760 117.120 l +460.656 255.360 m +563.760 255.360 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -460.656 140.650 m -460.656 116.870 l +460.656 278.890 m +460.656 255.110 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 140.650 m -563.760 116.870 l +563.760 278.890 m +563.760 255.110 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -463.65600000000006 124.15300000000039 Td +463.65600000000006 262.39300000000026 Td /F1.0 10.5 Tf -[<4c6f6f7054> 29.78515625 <656d706c617465>] TJ +<737472696e67> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24000000000001 87.53600000000037 Td +48.24000000000001 225.77600000000024 Td /F2.0 13 Tf -<322e33302e332e2050726f6475636573> Tj +<322e33362e332e2050726f6475636573> Tj ET 0.000 0.000 0.000 SCN @@ -22731,7 +28365,7 @@ ET 0.200 0.200 0.200 SCN BT -56.88050000000001 60.876000000000374 Td +56.88050000000001 199.11600000000024 Td /F1.0 10.5 Tf Tj ET @@ -22744,9 +28378,9 @@ ET 0.694 0.129 0.275 SCN BT -66.24000000000001 63.06000000000037 Td +66.24000000000001 201.30000000000024 Td /F4.0 10.5 Tf -<6170706c69636174696f6e2f6a736f6e> Tj +<6170706c69636174696f6e2f786d6c> Tj ET 0.000 0.000 0.000 SCN @@ -22765,7 +28399,7 @@ q BT 49.24 14.388 Td /F1.0 9 Tf -<3134> Tj +<3138> Tj ET 0.000 0.000 0.000 SCN @@ -22775,76 +28409,51 @@ Q endstream endobj -192 0 obj +240 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 191 0 R +/Contents 239 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 22 0 R +/Font << /F2.0 24 0 R +/F3.0 26 0 R /F1.0 8 0 R -/F4.0 33 0 R -/F3.0 24 0 R +/F4.0 35 0 R >> -/XObject << /Stamp1 588 0 R +/XObject << /Stamp1 684 0 R >> >> -/Annots [195 0 R 204 0 R] +/Annots [242 0 R] >> endobj -193 0 obj -[192 0 R /XYZ 0 792.0 null] -endobj -194 0 obj -[192 0 R /XYZ 0 718.32 null] +241 0 obj +[240 0 R /XYZ 0 683.1600000000001 null] endobj -195 0 obj +242 0 obj << /Border [0 0 0] /Dest (_looptemplate) /Subtype /Link -/Rect [463.65600000000006 629.1670000000003 535.2997558593751 643.4470000000002] +/Rect [463.65600000000006 594.0070000000002 535.2997558593751 608.2870000000001] /Type /Annot >> endobj -196 0 obj -[192 0 R /XYZ 0 613.2000000000003 null] -endobj -197 0 obj -<< /Limits [(_produces_25) (_responses)] -/Names [(_produces_25) 183 0 R (_produces_26) 190 0 R (_produces_27) 196 0 R (_produces_28) 200 0 R (_produces_29) 205 0 R (_produces_3) 40 0 R (_produces_4) 49 0 R (_produces_5) 52 0 R (_produces_6) 61 0 R (_produces_7) 68 0 R (_produces_8) 74 0 R (_produces_9) 78 0 R (_responses) 30 0 R] ->> -endobj -198 0 obj -[192 0 R /XYZ 0 556.9200000000004 null] -endobj -199 0 obj -[192 0 R /XYZ 0 516.8400000000005 null] -endobj -200 0 obj -[192 0 R /XYZ 0 411.7200000000005 null] -endobj -201 0 obj -[192 0 R /XYZ 0 355.44000000000045 null] +243 0 obj +[240 0 R /XYZ 0 578.0400000000002 null] endobj -202 0 obj -[192 0 R /XYZ 0 315.3600000000004 null] +244 0 obj +[240 0 R /XYZ 0 521.7600000000003 null] endobj -203 0 obj -[192 0 R /XYZ 0 210.2400000000004 null] +245 0 obj +[240 0 R /XYZ 0 453.60000000000036 null] endobj -204 0 obj -<< /Border [0 0 0] -/Dest (_looptemplate) -/Subtype /Link -/Rect [463.65600000000006 121.08700000000039 535.2997558593751 135.3670000000004] -/Type /Annot ->> +246 0 obj +[240 0 R /XYZ 0 348.4800000000003 null] endobj -205 0 obj -[192 0 R /XYZ 0 105.12000000000037 null] +247 0 obj +[240 0 R /XYZ 0 243.36000000000027 null] endobj -206 0 obj -<< /Length 16082 +248 0 obj +<< /Length 17145 >> stream q @@ -22867,7 +28476,7 @@ ET BT 48.24 688.656 Td /F2.0 18 Tf -<332e312e20436c64734865616c7468436865636b> Tj +<332e312e20436c616d70496e666f726d6174696f6e> Tj ET 0.000 0.000 0.000 SCN @@ -23005,7 +28614,7 @@ S BT 51.24 632.473 Td /F2.0 10.5 Tf -<6465736372697074696f6e> Tj +<616c6c5065726d697373696f6e73> Tj ET @@ -23052,7 +28661,7 @@ S BT 272.17692192000004 625.333 Td /F1.0 10.5 Tf -<737472696e67> Tj +[<3c20737472696e67203e20617272> 20.01953125 <61> 20.01953125 <79>] TJ ET 0.000 0.000 0.000 scn @@ -23087,7 +28696,7 @@ S BT 51.24 594.913 Td /F2.0 10.5 Tf -<6865616c7468436865636b436f6d706f6e656e74> Tj +[<636c647356> 60.05859375 <657273696f6e>] TJ ET @@ -23169,7 +28778,7 @@ S BT 51.24 557.3530000000001 Td /F2.0 10.5 Tf -<6865616c7468436865636b537461747573> Tj +<757365724e616d65> Tj ET @@ -23226,7 +28835,7 @@ ET BT 48.24 500.61600000000004 Td /F2.0 18 Tf -<332e322e2044696374696f6e617279> Tj +<332e322e20436c64734865616c7468436865636b> Tj ET 0.000 0.000 0.000 SCN @@ -23263,46 +28872,6 @@ f 269.177 348.000 294.583 37.560 re f 0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 310.440 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 310.440 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 272.880 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 272.880 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 235.320 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 235.320 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 197.760 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 197.760 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 160.200 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 160.200 294.583 37.560 re -f -0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN 48.240 483.960 m @@ -23404,7 +28973,7 @@ S BT 51.24 444.43299999999994 Td /F2.0 10.5 Tf -[<6372656174656442> 20.01953125 <79>] TJ +<6465736372697074696f6e> Tj ET @@ -23486,7 +29055,7 @@ S BT 51.24 406.873 Td /F2.0 10.5 Tf -<6372656174656444617465> Tj +<6865616c7468436865636b436f6d706f6e656e74> Tj ET @@ -23533,7 +29102,7 @@ S BT 272.17692192000004 399.733 Td /F1.0 10.5 Tf -<696e74656765722028696e74363429> Tj +<737472696e67> Tj ET 0.000 0.000 0.000 scn @@ -23568,7 +29137,7 @@ S BT 51.24 369.31299999999993 Td /F2.0 10.5 Tf -<64696374696f6e617279456c656d656e7473> Tj +<6865616c7468436865636b537461747573> Tj ET @@ -23611,58 +29180,165 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn BT 272.17692192000004 362.17299999999994 Td /F1.0 10.5 Tf -<3c20> Tj +<737472696e67> Tj ET -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN BT -280.76592192000004 362.17299999999994 Td -/F1.0 10.5 Tf -<44696374696f6e617279456c656d656e74> Tj +48.24 312.57599999999996 Td +/F2.0 18 Tf +<332e332e2044696374696f6e617279> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 272.640 220.937 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 272.640 294.583 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 235.080 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 235.080 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 197.520 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 197.520 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 159.960 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 159.960 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 122.400 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 122.400 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 84.840 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 84.840 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 295.920 m +269.177 295.920 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +48.240 272.640 m +269.177 272.640 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 296.170 m +48.240 271.890 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +269.177 296.170 m +269.177 271.890 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24 280.1729999999999 Td +/F2.0 10.5 Tf +<4e616d65> Tj ET +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +269.177 295.920 m +563.760 295.920 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +269.177 272.640 m +563.760 272.640 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +269.177 296.170 m +269.177 271.890 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 296.170 m +563.760 271.890 l +S +[ ] 0 d +1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn BT -374.97192192000006 362.17299999999994 Td -/F1.0 10.5 Tf -[<203e20617272> 20.01953125 <61> 20.01953125 <79>] TJ +272.17692192000004 280.1729999999999 Td +/F2.0 10.5 Tf +<536368656d61> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 348.000 m -269.177 348.000 l +48.240 272.640 m +269.177 272.640 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 310.440 m -269.177 310.440 l +48.240 235.080 m +269.177 235.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 348.250 m -48.240 310.190 l +48.240 272.890 m +48.240 234.830 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 348.250 m -269.177 310.190 l +269.177 272.890 m +269.177 234.830 l S [ ] 0 d 1 w @@ -23670,19 +29346,19 @@ S 0.200 0.200 0.200 scn BT -51.24 331.753 Td +51.24 256.39299999999986 Td /F2.0 10.5 Tf -<6e616d65> Tj +[<6372656174656442> 20.01953125 <79>] TJ ET BT -51.24 317.47299999999996 Td +51.24 242.11299999999986 Td ET BT -51.24 317.47299999999996 Td +51.24 242.11299999999986 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -23690,26 +29366,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 348.000 m -563.760 348.000 l +269.177 272.640 m +563.760 272.640 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 310.440 m -563.760 310.440 l +269.177 235.080 m +563.760 235.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 348.250 m -269.177 310.190 l +269.177 272.890 m +269.177 234.830 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 348.250 m -563.760 310.190 l +563.760 272.890 m +563.760 234.830 l S [ ] 0 d 1 w @@ -23717,7 +29393,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 324.613 Td +272.17692192000004 249.25299999999984 Td /F1.0 10.5 Tf <737472696e67> Tj ET @@ -23725,26 +29401,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 310.440 m -269.177 310.440 l +48.240 235.080 m +269.177 235.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 272.880 m -269.177 272.880 l +48.240 197.520 m +269.177 197.520 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 310.690 m -48.240 272.630 l +48.240 235.330 m +48.240 197.270 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 310.690 m -269.177 272.630 l +269.177 235.330 m +269.177 197.270 l S [ ] 0 d 1 w @@ -23752,19 +29428,19 @@ S 0.200 0.200 0.200 scn BT -51.24 294.1929999999999 Td +51.24 218.8329999999999 Td /F2.0 10.5 Tf -<7365636f6e644c6576656c44696374696f6e617279> Tj +<6372656174656444617465> Tj ET BT -51.24 279.9129999999999 Td +51.24 204.5529999999999 Td ET BT -51.24 279.9129999999999 Td +51.24 204.5529999999999 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -23772,26 +29448,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 310.440 m -563.760 310.440 l +269.177 235.080 m +563.760 235.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 272.880 m -563.760 272.880 l +269.177 197.520 m +563.760 197.520 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 310.690 m -269.177 272.630 l +269.177 235.330 m +269.177 197.270 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 310.690 m -563.760 272.630 l +563.760 235.330 m +563.760 197.270 l S [ ] 0 d 1 w @@ -23799,34 +29475,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 287.05299999999994 Td +272.17692192000004 211.6929999999999 Td /F1.0 10.5 Tf -<696e74656765722028696e74333229> Tj +<696e74656765722028696e74363429> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 272.880 m -269.177 272.880 l +48.240 197.520 m +269.177 197.520 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 235.320 m -269.177 235.320 l +48.240 159.960 m +269.177 159.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 273.130 m -48.240 235.070 l +48.240 197.770 m +48.240 159.710 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 273.130 m -269.177 235.070 l +269.177 197.770 m +269.177 159.710 l S [ ] 0 d 1 w @@ -23834,19 +29510,19 @@ S 0.200 0.200 0.200 scn BT -51.24 256.633 Td +51.24 181.2729999999999 Td /F2.0 10.5 Tf -<73756244696374696f6e61727954797065> Tj +<64696374696f6e617279456c656d656e7473> Tj ET BT -51.24 242.35299999999998 Td +51.24 166.9929999999999 Td ET BT -51.24 242.35299999999998 Td +51.24 166.9929999999999 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -23854,61 +29530,83 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 272.880 m -563.760 272.880 l +269.177 197.520 m +563.760 197.520 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 235.320 m -563.760 235.320 l +269.177 159.960 m +563.760 159.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 273.130 m -269.177 235.070 l +269.177 197.770 m +269.177 159.710 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 273.130 m -563.760 235.070 l +563.760 197.770 m +563.760 159.710 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn BT -272.17692192000004 249.49299999999997 Td +272.17692192000004 174.1329999999999 Td /F1.0 10.5 Tf -<737472696e67> Tj +<3c20> Tj +ET + +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN + +BT +280.76592192000004 174.1329999999999 Td +/F1.0 10.5 Tf +<44696374696f6e617279456c656d656e74> Tj +ET + +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +374.97192192000006 174.1329999999999 Td +/F1.0 10.5 Tf +[<203e20617272> 20.01953125 <61> 20.01953125 <79>] TJ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 235.320 m -269.177 235.320 l +48.240 159.960 m +269.177 159.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 197.760 m -269.177 197.760 l +48.240 122.400 m +269.177 122.400 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 235.570 m -48.240 197.510 l +48.240 160.210 m +48.240 122.150 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 235.570 m -269.177 197.510 l +269.177 160.210 m +269.177 122.150 l S [ ] 0 d 1 w @@ -23916,19 +29614,19 @@ S 0.200 0.200 0.200 scn BT -51.24 219.07299999999998 Td +51.24 143.7129999999999 Td /F2.0 10.5 Tf -[<7570646174656442> 20.01953125 <79>] TJ +<6e616d65> Tj ET BT -51.24 204.79299999999998 Td +51.24 129.4329999999999 Td ET BT -51.24 204.79299999999998 Td +51.24 129.4329999999999 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -23936,26 +29634,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 235.320 m -563.760 235.320 l +269.177 159.960 m +563.760 159.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 197.760 m -563.760 197.760 l +269.177 122.400 m +563.760 122.400 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 235.570 m -269.177 197.510 l +269.177 160.210 m +269.177 122.150 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 235.570 m -563.760 197.510 l +563.760 160.210 m +563.760 122.150 l S [ ] 0 d 1 w @@ -23963,7 +29661,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 211.93299999999996 Td +272.17692192000004 136.5729999999999 Td /F1.0 10.5 Tf <737472696e67> Tj ET @@ -23971,26 +29669,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 197.760 m -269.177 197.760 l +48.240 122.400 m +269.177 122.400 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 160.200 m -269.177 160.200 l +48.240 84.840 m +269.177 84.840 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 198.010 m -48.240 159.950 l +48.240 122.650 m +48.240 84.590 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 198.010 m -269.177 159.950 l +269.177 122.650 m +269.177 84.590 l S [ ] 0 d 1 w @@ -23998,19 +29696,19 @@ S 0.200 0.200 0.200 scn BT -51.24 181.51299999999995 Td +51.24 106.15299999999989 Td /F2.0 10.5 Tf -<7570646174656444617465> Tj +<7365636f6e644c6576656c44696374696f6e617279> Tj ET BT -51.24 167.23299999999995 Td +51.24 91.87299999999989 Td ET BT -51.24 167.23299999999995 Td +51.24 91.87299999999989 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -24018,26 +29716,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 197.760 m -563.760 197.760 l +269.177 122.400 m +563.760 122.400 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 160.200 m -563.760 160.200 l +269.177 84.840 m +563.760 84.840 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 198.010 m -269.177 159.950 l +269.177 122.650 m +269.177 84.590 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 198.010 m -563.760 159.950 l +563.760 122.650 m +563.760 84.590 l S [ ] 0 d 1 w @@ -24045,22 +29743,11 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 174.37299999999993 Td +272.17692192000004 99.01299999999989 Td /F1.0 10.5 Tf -<696e74656765722028696e74363429> Tj -ET - -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -48.24 124.77599999999991 Td -/F2.0 18 Tf -<332e332e2044696374696f6e617279456c656d656e74> Tj +<696e74656765722028696e74333229> Tj ET -0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn q 0.000 0.000 0.000 scn @@ -24076,7 +29763,7 @@ q BT 552.698 14.388 Td /F1.0 9 Tf -<3135> Tj +<3139> Tj ET 0.000 0.000 0.000 SCN @@ -24086,44 +29773,44 @@ Q endstream endobj -207 0 obj +249 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 206 0 R +/Contents 248 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 22 0 R -/F3.0 24 0 R +/Font << /F2.0 24 0 R +/F3.0 26 0 R /F1.0 8 0 R >> -/XObject << /Stamp1 588 0 R +/XObject << /Stamp1 684 0 R >> >> -/Annots [211 0 R] +/Annots [254 0 R] >> endobj -208 0 obj -[207 0 R /XYZ 0 792.0 null] +250 0 obj +[249 0 R /XYZ 0 792.0 null] endobj -209 0 obj -[207 0 R /XYZ 0 712.0799999999999 null] +251 0 obj +[249 0 R /XYZ 0 712.0799999999999 null] endobj -210 0 obj -[207 0 R /XYZ 0 524.04 null] +252 0 obj +[249 0 R /XYZ 0 524.04 null] endobj -211 0 obj +253 0 obj +[249 0 R /XYZ 0 335.99999999999994 null] +endobj +254 0 obj << /Border [0 0 0] /Dest (_dictionaryelement) /Subtype /Link -/Rect [280.76592192000004 359.1069999999999 374.97192192000006 373.38699999999994] +/Rect [280.76592192000004 171.06699999999992 374.97192192000006 185.34699999999992] /Type /Annot >> endobj -212 0 obj -[207 0 R /XYZ 0 148.19999999999993 null] -endobj -213 0 obj -<< /Length 20298 +255 0 obj +<< /Length 19851 >> stream q @@ -24160,62 +29847,6 @@ f 269.177 620.040 294.583 37.560 re f 0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 582.480 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 582.480 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 544.920 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 544.920 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 507.360 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 507.360 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 469.800 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 469.800 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 432.240 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 432.240 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 394.680 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 394.680 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 357.120 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 357.120 294.583 37.560 re -f -0.000 0.000 0.000 scn 0.5 w /DeviceRGB CS 0.867 0.867 0.867 SCN @@ -24318,7 +29949,7 @@ S BT 51.24 716.473 Td /F2.0 10.5 Tf -[<6372656174656442> 20.01953125 <79>] TJ +<73756244696374696f6e61727954797065> Tj ET @@ -24400,17 +30031,17 @@ S BT 51.24 678.913 Td /F2.0 10.5 Tf -<6372656174656444617465> Tj +[<7570646174656442> 20.01953125 <79>] TJ ET BT -51.24 664.6329999999999 Td +51.24 664.633 Td ET BT -51.24 664.6329999999999 Td +51.24 664.633 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -24445,9 +30076,9 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 671.7729999999999 Td +272.17692192000004 671.773 Td /F1.0 10.5 Tf -<696e74656765722028696e74363429> Tj +<737472696e67> Tj ET 0.000 0.000 0.000 scn @@ -24482,7 +30113,7 @@ S BT 51.24 641.3530000000001 Td /F2.0 10.5 Tf -<6465736372697074696f6e> Tj +<7570646174656444617465> Tj ET @@ -24529,32 +30160,131 @@ S BT 272.17692192000004 634.213 Td /F1.0 10.5 Tf -<737472696e67> Tj +<696e74656765722028696e74363429> Tj ET +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24 584.616 Td +/F2.0 18 Tf +<332e342e2044696374696f6e617279456c656d656e74> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 544.680 220.937 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 544.680 294.583 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 507.120 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 507.120 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 469.560 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 469.560 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 432.000 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 432.000 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 394.440 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 394.440 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 356.880 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 356.880 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 319.320 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 319.320 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 281.760 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 281.760 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 244.200 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 244.200 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 206.640 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 206.640 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 169.080 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 169.080 294.583 37.560 re +f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 620.040 m -269.177 620.040 l +48.240 567.960 m +269.177 567.960 l S [ ] 0 d -0.5 w +1.5 w 0.867 0.867 0.867 SCN -48.240 582.480 m -269.177 582.480 l +48.240 544.680 m +269.177 544.680 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 620.290 m -48.240 582.230 l +48.240 568.210 m +48.240 543.930 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 620.290 m -269.177 582.230 l +269.177 568.210 m +269.177 543.930 l S [ ] 0 d 1 w @@ -24562,46 +30292,34 @@ S 0.200 0.200 0.200 scn BT -51.24 603.7929999999999 Td +51.24 552.213 Td /F2.0 10.5 Tf -<6e616d65> Tj -ET - - -BT -51.24 589.5129999999999 Td -ET - - -BT -51.24 589.5129999999999 Td -/F3.0 10.5 Tf -<6f7074696f6e616c> Tj +<4e616d65> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 620.040 m -563.760 620.040 l +269.177 567.960 m +563.760 567.960 l S [ ] 0 d -0.5 w +1.5 w 0.867 0.867 0.867 SCN -269.177 582.480 m -563.760 582.480 l +269.177 544.680 m +563.760 544.680 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 620.290 m -269.177 582.230 l +269.177 568.210 m +269.177 543.930 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 620.290 m -563.760 582.230 l +563.760 568.210 m +563.760 543.930 l S [ ] 0 d 1 w @@ -24609,34 +30327,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 596.6529999999999 Td -/F1.0 10.5 Tf -<737472696e67> Tj +272.17692192000004 552.213 Td +/F2.0 10.5 Tf +<536368656d61> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 582.480 m -269.177 582.480 l +48.240 544.680 m +269.177 544.680 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 544.920 m -269.177 544.920 l +48.240 507.120 m +269.177 507.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 582.730 m -48.240 544.670 l +48.240 544.930 m +48.240 506.870 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 582.730 m -269.177 544.670 l +269.177 544.930 m +269.177 506.870 l S [ ] 0 d 1 w @@ -24644,19 +30362,19 @@ S 0.200 0.200 0.200 scn BT -51.24 566.233 Td +51.24 528.433 Td /F2.0 10.5 Tf -<73686f72744e616d65> Tj +[<6372656174656442> 20.01953125 <79>] TJ ET BT -51.24 551.953 Td +51.24 514.153 Td ET BT -51.24 551.953 Td +51.24 514.153 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -24664,26 +30382,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 582.480 m -563.760 582.480 l +269.177 544.680 m +563.760 544.680 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 544.920 m -563.760 544.920 l +269.177 507.120 m +563.760 507.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 582.730 m -269.177 544.670 l +269.177 544.930 m +269.177 506.870 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 582.730 m -563.760 544.670 l +563.760 544.930 m +563.760 506.870 l S [ ] 0 d 1 w @@ -24691,7 +30409,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 559.093 Td +272.17692192000004 521.293 Td /F1.0 10.5 Tf <737472696e67> Tj ET @@ -24699,26 +30417,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 544.920 m -269.177 544.920 l +48.240 507.120 m +269.177 507.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 507.360 m -269.177 507.360 l +48.240 469.560 m +269.177 469.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 545.170 m -48.240 507.110 l +48.240 507.370 m +48.240 469.310 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 545.170 m -269.177 507.110 l +269.177 507.370 m +269.177 469.310 l S [ ] 0 d 1 w @@ -24726,19 +30444,19 @@ S 0.200 0.200 0.200 scn BT -51.24 528.673 Td +51.24 490.873 Td /F2.0 10.5 Tf -<73756244696374696f6e617279> Tj +<6372656174656444617465> Tj ET BT -51.24 514.3929999999999 Td +51.24 476.59299999999996 Td ET BT -51.24 514.3929999999999 Td +51.24 476.59299999999996 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -24746,26 +30464,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 544.920 m -563.760 544.920 l +269.177 507.120 m +563.760 507.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 507.360 m -563.760 507.360 l +269.177 469.560 m +563.760 469.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 545.170 m -269.177 507.110 l +269.177 507.370 m +269.177 469.310 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 545.170 m -563.760 507.110 l +563.760 507.370 m +563.760 469.310 l S [ ] 0 d 1 w @@ -24773,34 +30491,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 521.5329999999999 Td +272.17692192000004 483.733 Td /F1.0 10.5 Tf -<737472696e67> Tj +<696e74656765722028696e74363429> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 507.360 m -269.177 507.360 l +48.240 469.560 m +269.177 469.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 469.800 m -269.177 469.800 l +48.240 432.000 m +269.177 432.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 507.610 m -48.240 469.550 l +48.240 469.810 m +48.240 431.750 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 507.610 m -269.177 469.550 l +269.177 469.810 m +269.177 431.750 l S [ ] 0 d 1 w @@ -24808,19 +30526,19 @@ S 0.200 0.200 0.200 scn BT -51.24 491.113 Td +51.24 453.31300000000005 Td /F2.0 10.5 Tf -<74797065> Tj +<6465736372697074696f6e> Tj ET BT -51.24 476.83299999999997 Td +51.24 439.033 Td ET BT -51.24 476.83299999999997 Td +51.24 439.033 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -24828,26 +30546,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 507.360 m -563.760 507.360 l +269.177 469.560 m +563.760 469.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 469.800 m -563.760 469.800 l +269.177 432.000 m +563.760 432.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 507.610 m -269.177 469.550 l +269.177 469.810 m +269.177 431.750 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 507.610 m -563.760 469.550 l +563.760 469.810 m +563.760 431.750 l S [ ] 0 d 1 w @@ -24855,7 +30573,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 483.973 Td +272.17692192000004 446.17300000000006 Td /F1.0 10.5 Tf <737472696e67> Tj ET @@ -24863,26 +30581,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 469.800 m -269.177 469.800 l +48.240 432.000 m +269.177 432.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 432.240 m -269.177 432.240 l +48.240 394.440 m +269.177 394.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 470.050 m -48.240 431.990 l +48.240 432.250 m +48.240 394.190 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 470.050 m -269.177 431.990 l +269.177 432.250 m +269.177 394.190 l S [ ] 0 d 1 w @@ -24890,19 +30608,19 @@ S 0.200 0.200 0.200 scn BT -51.24 453.55299999999994 Td +51.24 415.753 Td /F2.0 10.5 Tf -[<7570646174656442> 20.01953125 <79>] TJ +<6e616d65> Tj ET BT -51.24 439.2729999999999 Td +51.24 401.47299999999996 Td ET BT -51.24 439.2729999999999 Td +51.24 401.47299999999996 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -24910,26 +30628,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 469.800 m -563.760 469.800 l +269.177 432.000 m +563.760 432.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 432.240 m -563.760 432.240 l +269.177 394.440 m +563.760 394.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 470.050 m -269.177 431.990 l +269.177 432.250 m +269.177 394.190 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 470.050 m -563.760 431.990 l +563.760 432.250 m +563.760 394.190 l S [ ] 0 d 1 w @@ -24937,7 +30655,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 446.41299999999995 Td +272.17692192000004 408.613 Td /F1.0 10.5 Tf <737472696e67> Tj ET @@ -24945,26 +30663,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 432.240 m -269.177 432.240 l +48.240 394.440 m +269.177 394.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 394.680 m -269.177 394.680 l +48.240 356.880 m +269.177 356.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 432.490 m -48.240 394.430 l +48.240 394.690 m +48.240 356.630 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 432.490 m -269.177 394.430 l +269.177 394.690 m +269.177 356.630 l S [ ] 0 d 1 w @@ -24972,19 +30690,19 @@ S 0.200 0.200 0.200 scn BT -51.24 415.99299999999994 Td +51.24 378.19300000000004 Td /F2.0 10.5 Tf -<7570646174656444617465> Tj +<73686f72744e616d65> Tj ET BT -51.24 401.71299999999997 Td +51.24 363.913 Td ET BT -51.24 401.71299999999997 Td +51.24 363.913 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -24992,26 +30710,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 432.240 m -563.760 432.240 l +269.177 394.440 m +563.760 394.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 394.680 m -563.760 394.680 l +269.177 356.880 m +563.760 356.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 432.490 m -269.177 394.430 l +269.177 394.690 m +269.177 356.630 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 432.490 m -563.760 394.430 l +563.760 394.690 m +563.760 356.630 l S [ ] 0 d 1 w @@ -25019,34 +30737,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 408.85299999999995 Td +272.17692192000004 371.05300000000005 Td /F1.0 10.5 Tf -<696e74656765722028696e74363429> Tj +<737472696e67> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 394.680 m -269.177 394.680 l +48.240 356.880 m +269.177 356.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 357.120 m -269.177 357.120 l +48.240 319.320 m +269.177 319.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 394.930 m -48.240 356.870 l +48.240 357.130 m +48.240 319.070 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 394.930 m -269.177 356.870 l +269.177 357.130 m +269.177 319.070 l S [ ] 0 d 1 w @@ -25054,19 +30772,19 @@ S 0.200 0.200 0.200 scn BT -51.24 378.43299999999994 Td +51.24 340.633 Td /F2.0 10.5 Tf -[<7573656442> 20.01953125 <7944696374696f6e6172696573>] TJ +<73756244696374696f6e617279> Tj ET BT -51.24 364.1529999999999 Td +51.24 326.35299999999995 Td ET BT -51.24 364.1529999999999 Td +51.24 326.35299999999995 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -25074,103 +30792,46 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 394.680 m -563.760 394.680 l +269.177 356.880 m +563.760 356.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 357.120 m -563.760 357.120 l +269.177 319.320 m +563.760 319.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 394.930 m -269.177 356.870 l +269.177 357.130 m +269.177 319.070 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 394.930 m -563.760 356.870 l +563.760 357.130 m +563.760 319.070 l S [ ] 0 d 1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn - -BT -272.17692192000004 371.29299999999995 Td -/F1.0 10.5 Tf -<3c20> Tj -ET - -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN - -BT -280.76592192000004 371.29299999999995 Td -/F1.0 10.5 Tf -<44696374696f6e617279> Tj -ET - 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn BT -333.55992192 371.29299999999995 Td +272.17692192000004 333.493 Td /F1.0 10.5 Tf -[<203e20617272> 20.01953125 <61> 20.01953125 <79>] TJ -ET - -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -48.24 321.69599999999997 Td -/F2.0 18 Tf -<332e342e2045787465726e616c436f6d706f6e656e74> Tj +<737472696e67> Tj ET -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 281.760 220.937 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 281.760 294.583 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 244.200 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 244.200 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 206.640 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 206.640 294.583 37.560 re -f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 305.040 m -269.177 305.040 l +48.240 319.320 m +269.177 319.320 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN 48.240 281.760 m 269.177 281.760 l @@ -25178,14 +30839,14 @@ S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 305.290 m -48.240 281.010 l +48.240 319.570 m +48.240 281.510 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 305.290 m -269.177 281.010 l +269.177 319.570 m +269.177 281.510 l S [ ] 0 d 1 w @@ -25193,19 +30854,31 @@ S 0.200 0.200 0.200 scn BT -51.24 289.2929999999999 Td +51.24 303.07300000000004 Td /F2.0 10.5 Tf -<4e616d65> Tj +<74797065> Tj +ET + + +BT +51.24 288.793 Td +ET + + +BT +51.24 288.793 Td +/F3.0 10.5 Tf +<6f7074696f6e616c> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 305.040 m -563.760 305.040 l +269.177 319.320 m +563.760 319.320 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN 269.177 281.760 m 563.760 281.760 l @@ -25213,14 +30886,14 @@ S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 305.290 m -269.177 281.010 l +269.177 319.570 m +269.177 281.510 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 305.290 m -563.760 281.010 l +563.760 319.570 m +563.760 281.510 l S [ ] 0 d 1 w @@ -25228,9 +30901,9 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 289.2929999999999 Td -/F2.0 10.5 Tf -<536368656d61> Tj +272.17692192000004 295.93300000000005 Td +/F1.0 10.5 Tf +<737472696e67> Tj ET 0.000 0.000 0.000 scn @@ -25263,19 +30936,19 @@ S 0.200 0.200 0.200 scn BT -51.24 265.51299999999986 Td +51.24 265.513 Td /F2.0 10.5 Tf -<636f6d706f6e656e744e616d65> Tj +[<7570646174656442> 20.01953125 <79>] TJ ET BT -51.24 251.23299999999986 Td +51.24 251.23299999999998 Td ET BT -51.24 251.23299999999986 Td +51.24 251.23299999999998 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -25310,7 +30983,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 258.3729999999999 Td +272.17692192000004 258.373 Td /F1.0 10.5 Tf <737472696e67> Tj ET @@ -25345,19 +31018,19 @@ S 0.200 0.200 0.200 scn BT -51.24 227.95299999999992 Td +51.24 227.953 Td /F2.0 10.5 Tf -<7374617465> Tj +<7570646174656444617465> Tj ET BT -51.24 213.67299999999992 Td +51.24 213.673 Td ET BT -51.24 213.67299999999992 Td +51.24 213.673 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -25390,79 +31063,36 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -272.17692192000004 220.8129999999999 Td +272.17692192000004 220.813 Td /F1.0 10.5 Tf -<45787465726e616c436f6d706f6e656e745374617465> Tj -ET - -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -48.24 171.2159999999999 Td -/F2.0 18 Tf -<332e352e2045787465726e616c436f6d706f6e656e745374617465> Tj +<696e74656765722028696e74363429> Tj ET -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 131.280 220.937 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 131.280 294.583 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 93.720 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 93.720 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 56.160 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 56.160 294.583 37.560 re -f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 154.560 m -269.177 154.560 l +48.240 206.640 m +269.177 206.640 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -48.240 131.280 m -269.177 131.280 l +48.240 169.080 m +269.177 169.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 154.810 m -48.240 130.530 l +48.240 206.890 m +48.240 168.830 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 154.810 m -269.177 130.530 l +269.177 206.890 m +269.177 168.830 l S [ ] 0 d 1 w @@ -25470,54 +31100,115 @@ S 0.200 0.200 0.200 scn BT -51.24 138.8129999999999 Td +51.24 190.393 Td /F2.0 10.5 Tf -<4e616d65> Tj +[<7573656442> 20.01953125 <7944696374696f6e6172696573>] TJ +ET + + +BT +51.24 176.113 Td +ET + + +BT +51.24 176.113 Td +/F3.0 10.5 Tf +<6f7074696f6e616c> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 154.560 m -563.760 154.560 l +269.177 206.640 m +563.760 206.640 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -269.177 131.280 m -563.760 131.280 l +269.177 169.080 m +563.760 169.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 154.810 m -269.177 130.530 l +269.177 206.890 m +269.177 168.830 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 154.810 m -563.760 130.530 l +563.760 206.890 m +563.760 168.830 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn BT -272.17692192000004 138.8129999999999 Td -/F2.0 10.5 Tf -<536368656d61> Tj +272.17692192000004 183.253 Td +/F1.0 10.5 Tf +<3c20> Tj +ET + +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN + +BT +280.76592192000004 183.253 Td +/F1.0 10.5 Tf +<44696374696f6e617279> Tj +ET + +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +333.55992192 183.253 Td +/F1.0 10.5 Tf +[<203e20617272> 20.01953125 <61> 20.01953125 <79>] TJ +ET + +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24 133.65599999999995 Td +/F2.0 18 Tf +<332e352e2045787465726e616c436f6d706f6e656e74> Tj ET +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 93.720 220.937 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 93.720 294.583 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 56.160 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 56.160 294.583 37.560 re +f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 131.280 m -269.177 131.280 l +48.240 117.000 m +269.177 117.000 l S [ ] 0 d -0.5 w +1.5 w 0.867 0.867 0.867 SCN 48.240 93.720 m 269.177 93.720 l @@ -25525,14 +31216,14 @@ S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 131.530 m -48.240 93.470 l +48.240 117.250 m +48.240 92.970 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 131.530 m -269.177 93.470 l +269.177 117.250 m +269.177 92.970 l S [ ] 0 d 1 w @@ -25540,31 +31231,19 @@ S 0.200 0.200 0.200 scn BT -51.24 115.03299999999989 Td +51.24 101.25299999999997 Td /F2.0 10.5 Tf -<6465736372697074696f6e> Tj -ET - - -BT -51.24 100.75299999999989 Td -ET - - -BT -51.24 100.75299999999989 Td -/F3.0 10.5 Tf -<6f7074696f6e616c> Tj +<4e616d65> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 131.280 m -563.760 131.280 l +269.177 117.000 m +563.760 117.000 l S [ ] 0 d -0.5 w +1.5 w 0.867 0.867 0.867 SCN 269.177 93.720 m 563.760 93.720 l @@ -25572,14 +31251,14 @@ S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 131.530 m -269.177 93.470 l +269.177 117.250 m +269.177 92.970 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 131.530 m -563.760 93.470 l +563.760 117.250 m +563.760 92.970 l S [ ] 0 d 1 w @@ -25587,9 +31266,9 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 107.89299999999989 Td -/F1.0 10.5 Tf -<737472696e67> Tj +272.17692192000004 101.25299999999997 Td +/F2.0 10.5 Tf +<536368656d61> Tj ET 0.000 0.000 0.000 scn @@ -25622,19 +31301,19 @@ S 0.200 0.200 0.200 scn BT -51.24 77.47299999999989 Td +51.24 77.47299999999997 Td /F2.0 10.5 Tf -<6c6576656c> Tj +<636f6d706f6e656e744e616d65> Tj ET BT -51.24 63.192999999999884 Td +51.24 63.19299999999997 Td ET BT -51.24 63.192999999999884 Td +51.24 63.19299999999997 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -25669,9 +31348,9 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 70.33299999999988 Td +272.17692192000004 70.33299999999997 Td /F1.0 10.5 Tf -<696e74656765722028696e74333229> Tj +<737472696e67> Tj ET 0.000 0.000 0.000 scn @@ -25689,7 +31368,7 @@ q BT 49.24 14.388 Td /F1.0 9 Tf -<3136> Tj +<3230> Tj ET 0.000 0.000 0.000 SCN @@ -25699,46 +31378,43 @@ Q endstream endobj -214 0 obj +256 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 213 0 R +/Contents 255 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 22 0 R -/F3.0 24 0 R +/Font << /F2.0 24 0 R +/F3.0 26 0 R /F1.0 8 0 R >> -/XObject << /Stamp1 588 0 R +/XObject << /Stamp1 684 0 R >> >> -/Annots [215 0 R 217 0 R] +/Annots [258 0 R] >> endobj -215 0 obj +257 0 obj +[256 0 R /XYZ 0 608.04 null] +endobj +258 0 obj << /Border [0 0 0] /Dest (_dictionary) /Subtype /Link -/Rect [280.76592192000004 368.2269999999999 333.55992192 382.50699999999995] +/Rect [280.76592192000004 180.187 333.55992192 194.46699999999998] /Type /Annot >> endobj -216 0 obj -[214 0 R /XYZ 0 345.11999999999995 null] +259 0 obj +[256 0 R /XYZ 0 157.07999999999998 null] endobj -217 0 obj -<< /Border [0 0 0] -/Dest (_externalcomponentstate) -/Subtype /Link -/Rect [272.17692192000004 217.74699999999993 397.34742192000004 232.02699999999993] -/Type /Annot +260 0 obj +<< /Limits [(_definitions) (_loop)] +/Names [(_definitions) 250 0 R (_dictionary) 253 0 R (_dictionaryelement) 257 0 R (_externalcomponent) 259 0 R (_externalcomponentstate) 264 0 R (_jsonarray) 265 0 R (_jsonnull) 273 0 R (_jsonobject) 281 0 R (_jsonprimitive) 291 0 R (_loop) 299 0 R] >> endobj -218 0 obj -[214 0 R /XYZ 0 194.6399999999999 null] -endobj -219 0 obj -<< /Length 21931 +261 0 obj +<< /Length 20493 >> stream q @@ -25861,7 +31537,7 @@ S BT 51.24 716.473 Td /F2.0 10.5 Tf -<73746174654e616d65> Tj +<7374617465> Tj ET @@ -25904,13 +31580,21 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT 272.17692192000004 709.333 Td /F1.0 10.5 Tf -<737472696e67> Tj +<45787465726e616c436f6d706f6e656e745374617465> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN @@ -25918,7 +31602,7 @@ ET BT 48.24 659.7360000000001 Td /F2.0 18 Tf -[<332e362e204a736f6e417272> 20.01953125 <61> 20.01953125 <79>] TJ +<332e362e2045787465726e616c436f6d706f6e656e745374617465> Tj ET 0.000 0.000 0.000 SCN @@ -25955,102 +31639,6 @@ f 269.177 507.120 294.583 37.560 re f 0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 469.560 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 469.560 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 432.000 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 432.000 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 394.440 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 394.440 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 356.880 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 356.880 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 319.320 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 319.320 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 281.760 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 281.760 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 244.200 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 244.200 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 206.640 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 206.640 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 169.080 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 169.080 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 131.520 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 131.520 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 93.960 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 93.960 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 56.400 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 56.400 294.583 37.560 re -f -0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN 48.240 643.080 m @@ -26152,7 +31740,7 @@ S BT 51.24 603.5530000000001 Td /F2.0 10.5 Tf -<6173426967446563696d616c> Tj +<6465736372697074696f6e> Tj ET @@ -26199,7 +31787,7 @@ S BT 272.17692192000004 596.4130000000001 Td /F1.0 10.5 Tf -<6e756d626572> Tj +<737472696e67> Tj ET 0.000 0.000 0.000 scn @@ -26234,7 +31822,7 @@ S BT 51.24 565.9930000000002 Td /F2.0 10.5 Tf -<6173426967496e7465676572> Tj +<6c6576656c> Tj ET @@ -26281,7 +31869,7 @@ S BT 272.17692192000004 558.8530000000001 Td /F1.0 10.5 Tf -<696e7465676572> Tj +<696e74656765722028696e74333229> Tj ET 0.000 0.000 0.000 scn @@ -26316,7 +31904,7 @@ S BT 51.24 528.4330000000002 Td /F2.0 10.5 Tf -<6173426f6f6c65616e> Tj +<73746174654e616d65> Tj ET @@ -26363,114 +31951,131 @@ S BT 272.17692192000004 521.2930000000001 Td /F1.0 10.5 Tf -<626f6f6c65616e> Tj +<737472696e67> Tj ET 0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -48.240 507.120 m -269.177 507.120 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -48.240 469.560 m -269.177 469.560 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -48.240 507.370 m -48.240 469.310 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -269.177 507.370 m -269.177 469.310 l -S -[ ] 0 d -1 w -0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN BT -51.24 490.8730000000001 Td -/F2.0 10.5 Tf -[<617342> 20.01953125 <797465>] TJ -ET - - -BT -51.24 476.5930000000001 Td -ET - - -BT -51.24 476.5930000000001 Td -/F3.0 10.5 Tf -<6f7074696f6e616c> Tj +48.24 471.6960000000002 Td +/F2.0 18 Tf +[<332e372e204a736f6e417272> 20.01953125 <61> 20.01953125 <79>] TJ ET -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -269.177 507.120 m -563.760 507.120 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -269.177 469.560 m -563.760 469.560 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -269.177 507.370 m -269.177 469.310 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -563.760 507.370 m -563.760 469.310 l -S -[ ] 0 d -1 w 0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn - -BT -272.17692192000004 483.7330000000001 Td -/F1.0 10.5 Tf -[<737472696e67202862> 20.01953125 <79746529>] TJ -ET - +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 431.760 220.937 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 431.760 294.583 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 394.200 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 394.200 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 356.640 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 356.640 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 319.080 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 319.080 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 281.520 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 281.520 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 243.960 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 243.960 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 206.400 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 206.400 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 168.840 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 168.840 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 131.280 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 131.280 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 93.720 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 93.720 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 56.160 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 56.160 294.583 37.560 re +f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 469.560 m -269.177 469.560 l +48.240 455.040 m +269.177 455.040 l S [ ] 0 d -0.5 w +1.5 w 0.867 0.867 0.867 SCN -48.240 432.000 m -269.177 432.000 l +48.240 431.760 m +269.177 431.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 469.810 m -48.240 431.750 l +48.240 455.290 m +48.240 431.010 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 469.810 m -269.177 431.750 l +269.177 455.290 m +269.177 431.010 l S [ ] 0 d 1 w @@ -26478,46 +32083,34 @@ S 0.200 0.200 0.200 scn BT -51.24 453.31300000000016 Td +51.24 439.2930000000001 Td /F2.0 10.5 Tf -[<617343686172> 20.01953125 <6163746572>] TJ -ET - - -BT -51.24 439.03300000000013 Td -ET - - -BT -51.24 439.03300000000013 Td -/F3.0 10.5 Tf -<6f7074696f6e616c> Tj +<4e616d65> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 469.560 m -563.760 469.560 l +269.177 455.040 m +563.760 455.040 l S [ ] 0 d -0.5 w +1.5 w 0.867 0.867 0.867 SCN -269.177 432.000 m -563.760 432.000 l +269.177 431.760 m +563.760 431.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 469.810 m -269.177 431.750 l +269.177 455.290 m +269.177 431.010 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 469.810 m -563.760 431.750 l +563.760 455.290 m +563.760 431.010 l S [ ] 0 d 1 w @@ -26525,34 +32118,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 446.1730000000002 Td -/F1.0 10.5 Tf -<737472696e67> Tj +272.17692192000004 439.2930000000001 Td +/F2.0 10.5 Tf +<536368656d61> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 432.000 m -269.177 432.000 l +48.240 431.760 m +269.177 431.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 394.440 m -269.177 394.440 l +48.240 394.200 m +269.177 394.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 432.250 m -48.240 394.190 l +48.240 432.010 m +48.240 393.950 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 432.250 m -269.177 394.190 l +269.177 432.010 m +269.177 393.950 l S [ ] 0 d 1 w @@ -26560,46 +32153,46 @@ S 0.200 0.200 0.200 scn BT -51.24 415.7530000000001 Td +51.24 415.5130000000001 Td /F2.0 10.5 Tf -<6173446f75626c65> Tj +<6173426967446563696d616c> Tj ET BT -51.24 401.47300000000007 Td +51.24 401.23300000000006 Td ET BT -51.24 401.47300000000007 Td +51.24 401.23300000000006 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET 0.000 0.000 0.000 scn 0.5 w -0.867 0.867 0.867 SCN -269.177 432.000 m -563.760 432.000 l +0.867 0.867 0.867 SCN +269.177 431.760 m +563.760 431.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 394.440 m -563.760 394.440 l +269.177 394.200 m +563.760 394.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 432.250 m -269.177 394.190 l +269.177 432.010 m +269.177 393.950 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 432.250 m -563.760 394.190 l +563.760 432.010 m +563.760 393.950 l S [ ] 0 d 1 w @@ -26607,34 +32200,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 408.6130000000001 Td +272.17692192000004 408.3730000000001 Td /F1.0 10.5 Tf -<6e756d6265722028646f75626c6529> Tj +<6e756d626572> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 394.440 m -269.177 394.440 l +48.240 394.200 m +269.177 394.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 356.880 m -269.177 356.880 l +48.240 356.640 m +269.177 356.640 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 394.690 m -48.240 356.630 l +48.240 394.450 m +48.240 356.390 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 394.690 m -269.177 356.630 l +269.177 394.450 m +269.177 356.390 l S [ ] 0 d 1 w @@ -26642,19 +32235,19 @@ S 0.200 0.200 0.200 scn BT -51.24 378.19300000000015 Td +51.24 377.95300000000015 Td /F2.0 10.5 Tf -<6173466c6f6174> Tj +<6173426967496e7465676572> Tj ET BT -51.24 363.9130000000001 Td +51.24 363.6730000000001 Td ET BT -51.24 363.9130000000001 Td +51.24 363.6730000000001 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -26662,26 +32255,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 394.440 m -563.760 394.440 l +269.177 394.200 m +563.760 394.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 356.880 m -563.760 356.880 l +269.177 356.640 m +563.760 356.640 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 394.690 m -269.177 356.630 l +269.177 394.450 m +269.177 356.390 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 394.690 m -563.760 356.630 l +563.760 394.450 m +563.760 356.390 l S [ ] 0 d 1 w @@ -26689,34 +32282,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 371.05300000000017 Td +272.17692192000004 370.81300000000016 Td /F1.0 10.5 Tf -<6e756d6265722028666c6f617429> Tj +<696e7465676572> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 356.880 m -269.177 356.880 l +48.240 356.640 m +269.177 356.640 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 319.320 m -269.177 319.320 l +48.240 319.080 m +269.177 319.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 357.130 m -48.240 319.070 l +48.240 356.890 m +48.240 318.830 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 357.130 m -269.177 319.070 l +269.177 356.890 m +269.177 318.830 l S [ ] 0 d 1 w @@ -26724,19 +32317,19 @@ S 0.200 0.200 0.200 scn BT -51.24 340.6330000000001 Td +51.24 340.3930000000001 Td /F2.0 10.5 Tf -<6173496e74> Tj +<6173426f6f6c65616e> Tj ET BT -51.24 326.35300000000007 Td +51.24 326.11300000000006 Td ET BT -51.24 326.35300000000007 Td +51.24 326.11300000000006 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -26744,26 +32337,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 356.880 m -563.760 356.880 l +269.177 356.640 m +563.760 356.640 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 319.320 m -563.760 319.320 l +269.177 319.080 m +563.760 319.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 357.130 m -269.177 319.070 l +269.177 356.890 m +269.177 318.830 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 357.130 m -563.760 319.070 l +563.760 356.890 m +563.760 318.830 l S [ ] 0 d 1 w @@ -26771,34 +32364,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 333.4930000000001 Td +272.17692192000004 333.2530000000001 Td /F1.0 10.5 Tf -<696e74656765722028696e74333229> Tj +<626f6f6c65616e> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 319.320 m -269.177 319.320 l +48.240 319.080 m +269.177 319.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 281.760 m -269.177 281.760 l +48.240 281.520 m +269.177 281.520 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 319.570 m -48.240 281.510 l +48.240 319.330 m +48.240 281.270 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 319.570 m -269.177 281.510 l +269.177 319.330 m +269.177 281.270 l S [ ] 0 d 1 w @@ -26806,19 +32399,19 @@ S 0.200 0.200 0.200 scn BT -51.24 303.0730000000001 Td +51.24 302.83300000000014 Td /F2.0 10.5 Tf -[<61734a736f6e417272> 20.01953125 <61> 20.01953125 <79>] TJ +[<617342> 20.01953125 <797465>] TJ ET BT -51.24 288.7930000000001 Td +51.24 288.5530000000001 Td ET BT -51.24 288.7930000000001 Td +51.24 288.5530000000001 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -26826,69 +32419,61 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 319.320 m -563.760 319.320 l +269.177 319.080 m +563.760 319.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 281.760 m -563.760 281.760 l +269.177 281.520 m +563.760 281.520 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 319.570 m -269.177 281.510 l +269.177 319.330 m +269.177 281.270 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 319.570 m -563.760 281.510 l +563.760 319.330 m +563.760 281.270 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -272.17692192000004 295.9330000000001 Td +272.17692192000004 295.69300000000015 Td /F1.0 10.5 Tf -[<4a736f6e417272> 20.01953125 <61> 20.01953125 <79>] TJ +[<737472696e67202862> 20.01953125 <79746529>] TJ ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 281.760 m -269.177 281.760 l +48.240 281.520 m +269.177 281.520 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 244.200 m -269.177 244.200 l +48.240 243.960 m +269.177 243.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 282.010 m -48.240 243.950 l +48.240 281.770 m +48.240 243.710 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 282.010 m -269.177 243.950 l +269.177 281.770 m +269.177 243.710 l S [ ] 0 d 1 w @@ -26896,19 +32481,19 @@ S 0.200 0.200 0.200 scn BT -51.24 265.5130000000001 Td +51.24 265.2730000000001 Td /F2.0 10.5 Tf -<61734a736f6e4e756c6c> Tj +[<617343686172> 20.01953125 <6163746572>] TJ ET BT -51.24 251.2330000000001 Td +51.24 250.99300000000008 Td ET BT -51.24 251.2330000000001 Td +51.24 250.99300000000008 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -26916,69 +32501,61 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 281.760 m -563.760 281.760 l +269.177 281.520 m +563.760 281.520 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 244.200 m -563.760 244.200 l +269.177 243.960 m +563.760 243.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 282.010 m -269.177 243.950 l +269.177 281.770 m +269.177 243.710 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 282.010 m -563.760 243.950 l +563.760 281.770 m +563.760 243.710 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -272.17692192000004 258.3730000000001 Td +272.17692192000004 258.1330000000001 Td /F1.0 10.5 Tf -<4a736f6e4e756c6c> Tj +<737472696e67> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 244.200 m -269.177 244.200 l +48.240 243.960 m +269.177 243.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 206.640 m -269.177 206.640 l +48.240 206.400 m +269.177 206.400 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 244.450 m -48.240 206.390 l +48.240 244.210 m +48.240 206.150 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 244.450 m -269.177 206.390 l +269.177 244.210 m +269.177 206.150 l S [ ] 0 d 1 w @@ -26986,19 +32563,19 @@ S 0.200 0.200 0.200 scn BT -51.24 227.95300000000012 Td +51.24 227.71300000000014 Td /F2.0 10.5 Tf -<61734a736f6e4f626a656374> Tj +<6173446f75626c65> Tj ET BT -51.24 213.67300000000012 Td +51.24 213.43300000000013 Td ET BT -51.24 213.67300000000012 Td +51.24 213.43300000000013 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -27006,69 +32583,61 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 244.200 m -563.760 244.200 l +269.177 243.960 m +563.760 243.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 206.640 m -563.760 206.640 l +269.177 206.400 m +563.760 206.400 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 244.450 m -269.177 206.390 l +269.177 244.210 m +269.177 206.150 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 244.450 m -563.760 206.390 l +563.760 244.210 m +563.760 206.150 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -272.17692192000004 220.8130000000001 Td +272.17692192000004 220.57300000000012 Td /F1.0 10.5 Tf -<4a736f6e4f626a656374> Tj +<6e756d6265722028646f75626c6529> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 206.640 m -269.177 206.640 l +48.240 206.400 m +269.177 206.400 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 169.080 m -269.177 169.080 l +48.240 168.840 m +269.177 168.840 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 206.890 m -48.240 168.830 l +48.240 206.650 m +48.240 168.590 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 206.890 m -269.177 168.830 l +269.177 206.650 m +269.177 168.590 l S [ ] 0 d 1 w @@ -27076,19 +32645,19 @@ S 0.200 0.200 0.200 scn BT -51.24 190.39300000000011 Td +51.24 190.15300000000013 Td /F2.0 10.5 Tf -<61734a736f6e5072696d6974697665> Tj +<6173466c6f6174> Tj ET BT -51.24 176.1130000000001 Td +51.24 175.87300000000013 Td ET BT -51.24 176.1130000000001 Td +51.24 175.87300000000013 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -27096,69 +32665,61 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 206.640 m -563.760 206.640 l +269.177 206.400 m +563.760 206.400 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 169.080 m -563.760 169.080 l +269.177 168.840 m +563.760 168.840 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 206.890 m -269.177 168.830 l +269.177 206.650 m +269.177 168.590 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 206.890 m -563.760 168.830 l +563.760 206.650 m +563.760 168.590 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -272.17692192000004 183.2530000000001 Td +272.17692192000004 183.01300000000012 Td /F1.0 10.5 Tf -<4a736f6e5072696d6974697665> Tj +<6e756d6265722028666c6f617429> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 169.080 m -269.177 169.080 l +48.240 168.840 m +269.177 168.840 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 131.520 m -269.177 131.520 l +48.240 131.280 m +269.177 131.280 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 169.330 m -48.240 131.270 l +48.240 169.090 m +48.240 131.030 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 169.330 m -269.177 131.270 l +269.177 169.090 m +269.177 131.030 l S [ ] 0 d 1 w @@ -27166,19 +32727,19 @@ S 0.200 0.200 0.200 scn BT -51.24 152.8330000000001 Td +51.24 152.5930000000001 Td /F2.0 10.5 Tf -<61734c6f6e67> Tj +<6173496e74> Tj ET BT -51.24 138.5530000000001 Td +51.24 138.3130000000001 Td ET BT -51.24 138.5530000000001 Td +51.24 138.3130000000001 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -27186,26 +32747,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 169.080 m -563.760 169.080 l +269.177 168.840 m +563.760 168.840 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 131.520 m -563.760 131.520 l +269.177 131.280 m +563.760 131.280 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 169.330 m -269.177 131.270 l +269.177 169.090 m +269.177 131.030 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 169.330 m -563.760 131.270 l +563.760 169.090 m +563.760 131.030 l S [ ] 0 d 1 w @@ -27213,34 +32774,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 145.6930000000001 Td +272.17692192000004 145.4530000000001 Td /F1.0 10.5 Tf -<696e74656765722028696e74363429> Tj +<696e74656765722028696e74333229> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 131.520 m -269.177 131.520 l +48.240 131.280 m +269.177 131.280 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 93.960 m -269.177 93.960 l +48.240 93.720 m +269.177 93.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 131.770 m -48.240 93.710 l +48.240 131.530 m +48.240 93.470 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 131.770 m -269.177 93.710 l +269.177 131.530 m +269.177 93.470 l S [ ] 0 d 1 w @@ -27248,19 +32809,19 @@ S 0.200 0.200 0.200 scn BT -51.24 115.2730000000001 Td +51.24 115.03300000000009 Td /F2.0 10.5 Tf -<61734e756d626572> Tj +[<61734a736f6e417272> 20.01953125 <61> 20.01953125 <79>] TJ ET BT -51.24 100.9930000000001 Td +51.24 100.75300000000009 Td ET BT -51.24 100.9930000000001 Td +51.24 100.75300000000009 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -27268,26 +32829,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 131.520 m -563.760 131.520 l +269.177 131.280 m +563.760 131.280 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 93.960 m -563.760 93.960 l +269.177 93.720 m +563.760 93.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 131.770 m -269.177 93.710 l +269.177 131.530 m +269.177 93.470 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 131.770 m -563.760 93.710 l +563.760 131.530 m +563.760 93.470 l S [ ] 0 d 1 w @@ -27301,9 +32862,9 @@ S 0.259 0.545 0.792 SCN BT -272.17692192000004 108.1330000000001 Td +272.17692192000004 107.89300000000009 Td /F1.0 10.5 Tf -<4e756d626572> Tj +[<4a736f6e417272> 20.01953125 <61> 20.01953125 <79>] TJ ET 0.000 0.000 0.000 SCN @@ -27311,26 +32872,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 93.960 m -269.177 93.960 l +48.240 93.720 m +269.177 93.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 56.400 m -269.177 56.400 l +48.240 56.160 m +269.177 56.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 94.210 m -48.240 56.150 l +48.240 93.970 m +48.240 55.910 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 94.210 m -269.177 56.150 l +269.177 93.970 m +269.177 55.910 l S [ ] 0 d 1 w @@ -27338,19 +32899,19 @@ S 0.200 0.200 0.200 scn BT -51.24 77.71300000000004 Td +51.24 77.47300000000008 Td /F2.0 10.5 Tf -<617353686f7274> Tj +<61734a736f6e4e756c6c> Tj ET BT -51.24 63.433000000000035 Td +51.24 63.19300000000008 Td ET BT -51.24 63.433000000000035 Td +51.24 63.19300000000008 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -27358,38 +32919,46 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 93.960 m -563.760 93.960 l +269.177 93.720 m +563.760 93.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 56.400 m -563.760 56.400 l +269.177 56.160 m +563.760 56.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 94.210 m -269.177 56.150 l +269.177 93.970 m +269.177 55.910 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 94.210 m -563.760 56.150 l +563.760 93.970 m +563.760 55.910 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT -272.17692192000004 70.57300000000004 Td +272.17692192000004 70.33300000000008 Td /F1.0 10.5 Tf -<696e74656765722028696e74333229> Tj +<4a736f6e4e756c6c> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn q 0.000 0.000 0.000 scn @@ -27405,7 +32974,7 @@ q BT 552.698 14.388 Td /F1.0 9 Tf -<3137> Tj +<3231> Tj ET 0.000 0.000 0.000 SCN @@ -27415,67 +32984,54 @@ Q endstream endobj -220 0 obj +262 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 219 0 R +/Contents 261 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 22 0 R -/F3.0 24 0 R +/Font << /F2.0 24 0 R +/F3.0 26 0 R /F1.0 8 0 R >> -/XObject << /Stamp1 588 0 R +/XObject << /Stamp1 684 0 R >> >> -/Annots [222 0 R 223 0 R 224 0 R 225 0 R 226 0 R] +/Annots [263 0 R 266 0 R 267 0 R] >> endobj -221 0 obj -[220 0 R /XYZ 0 683.1600000000001 null] -endobj -222 0 obj +263 0 obj << /Border [0 0 0] -/Dest (_jsonarray) +/Dest (_externalcomponentstate) /Subtype /Link -/Rect [272.17692192000004 292.8670000000001 322.17751176375003 307.1470000000001] +/Rect [272.17692192000004 706.267 397.34742192000004 720.547] /Type /Annot >> endobj -223 0 obj -<< /Border [0 0 0] -/Dest (_jsonnull) -/Subtype /Link -/Rect [272.17692192000004 255.3070000000001 314.65992192000004 269.5870000000001] -/Type /Annot ->> +264 0 obj +[262 0 R /XYZ 0 683.1600000000001 null] endobj -224 0 obj -<< /Border [0 0 0] -/Dest (_jsonobject) -/Subtype /Link -/Rect [272.17692192000004 217.74700000000013 325.32792192000005 232.0270000000001] -/Type /Annot ->> +265 0 obj +[262 0 R /XYZ 0 495.1200000000002 null] endobj -225 0 obj +266 0 obj << /Border [0 0 0] -/Dest (_jsonprimitive) +/Dest (_jsonarray) /Subtype /Link -/Rect [272.17692192000004 180.18700000000013 340.1224219200001 194.4670000000001] +/Rect [272.17692192000004 104.82700000000008 322.17751176375003 119.10700000000008] /Type /Annot >> endobj -226 0 obj +267 0 obj << /Border [0 0 0] -/Dest (_number) +/Dest (_jsonnull) /Subtype /Link -/Rect [272.17692192000004 105.06700000000009 313.75692192 119.3470000000001] +/Rect [272.17692192000004 67.26700000000008 314.65992192000004 81.54700000000008] /Type /Annot >> endobj -227 0 obj -<< /Length 21512 +268 0 obj +<< /Length 21348 >> stream q @@ -27528,6 +33084,46 @@ f 269.177 544.920 294.583 37.560 re f 0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 507.360 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 507.360 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 469.800 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 469.800 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 432.240 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 432.240 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 394.680 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 394.680 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 357.120 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 357.120 294.583 37.560 re +f +0.000 0.000 0.000 scn 0.5 w /DeviceRGB CS 0.867 0.867 0.867 SCN @@ -27630,7 +33226,7 @@ S BT 51.24 716.473 Td /F2.0 10.5 Tf -<6173537472696e67> Tj +<61734a736f6e4f626a656374> Tj ET @@ -27673,13 +33269,21 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT 272.17692192000004 709.333 Td /F1.0 10.5 Tf -<737472696e67> Tj +<4a736f6e4f626a656374> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -27712,7 +33316,7 @@ S BT 51.24 678.913 Td /F2.0 10.5 Tf -[<6a736f6e417272> 20.01953125 <61> 20.01953125 <79>] TJ +<61734a736f6e5072696d6974697665> Tj ET @@ -27755,13 +33359,21 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT 272.17692192000004 671.773 Td /F1.0 10.5 Tf -<626f6f6c65616e> Tj +<4a736f6e5072696d6974697665> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -27794,7 +33406,7 @@ S BT 51.24 641.3530000000001 Td /F2.0 10.5 Tf -<6a736f6e4e756c6c> Tj +<61734c6f6e67> Tj ET @@ -27841,7 +33453,7 @@ S BT 272.17692192000004 634.2130000000001 Td /F1.0 10.5 Tf -<626f6f6c65616e> Tj +<696e74656765722028696e74363429> Tj ET 0.000 0.000 0.000 scn @@ -27876,17 +33488,17 @@ S BT 51.24 603.7930000000001 Td /F2.0 10.5 Tf -<6a736f6e4f626a656374> Tj +<61734e756d626572> Tj ET BT -51.24 589.5130000000001 Td +51.24 589.513 Td ET BT -51.24 589.5130000000001 Td +51.24 589.513 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -27919,13 +33531,21 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT -272.17692192000004 596.6530000000001 Td +272.17692192000004 596.653 Td /F1.0 10.5 Tf -<626f6f6c65616e> Tj +<4e756d626572> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -27956,19 +33576,19 @@ S 0.200 0.200 0.200 scn BT -51.24 566.2330000000002 Td +51.24 566.233 Td /F2.0 10.5 Tf -<6a736f6e5072696d6974697665> Tj +<617353686f7274> Tj ET BT -51.24 551.9530000000002 Td +51.24 551.953 Td ET BT -51.24 551.9530000000002 Td +51.24 551.953 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -28003,141 +33623,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 559.0930000000002 Td +272.17692192000004 559.093 Td /F1.0 10.5 Tf -<626f6f6c65616e> Tj -ET - -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -48.24 509.4960000000004 Td -/F2.0 18 Tf -<332e372e204a736f6e4e756c6c> Tj +<696e74656765722028696e74333229> Tj ET -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 469.560 220.937 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 469.560 294.583 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 432.000 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 432.000 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 394.440 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 394.440 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 356.880 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 356.880 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 319.320 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 319.320 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 281.760 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 281.760 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 244.200 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 244.200 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 206.640 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 206.640 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 169.080 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 169.080 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 131.520 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 131.520 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 93.960 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 93.960 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 56.400 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 56.400 294.583 37.560 re -f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 492.840 m -269.177 492.840 l +48.240 544.920 m +269.177 544.920 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -48.240 469.560 m -269.177 469.560 l +48.240 507.360 m +269.177 507.360 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 493.090 m -48.240 468.810 l +48.240 545.170 m +48.240 507.110 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 493.090 m -269.177 468.810 l +269.177 545.170 m +269.177 507.110 l S [ ] 0 d 1 w @@ -28145,34 +33658,46 @@ S 0.200 0.200 0.200 scn BT -51.24 477.0930000000003 Td +51.24 528.673 Td /F2.0 10.5 Tf -<4e616d65> Tj +<6173537472696e67> Tj +ET + + +BT +51.24 514.393 Td +ET + + +BT +51.24 514.393 Td +/F3.0 10.5 Tf +<6f7074696f6e616c> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 492.840 m -563.760 492.840 l +269.177 544.920 m +563.760 544.920 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -269.177 469.560 m -563.760 469.560 l +269.177 507.360 m +563.760 507.360 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 493.090 m -269.177 468.810 l +269.177 545.170 m +269.177 507.110 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 493.090 m -563.760 468.810 l +563.760 545.170 m +563.760 507.110 l S [ ] 0 d 1 w @@ -28180,34 +33705,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 477.0930000000003 Td -/F2.0 10.5 Tf -<536368656d61> Tj +272.17692192000004 521.533 Td +/F1.0 10.5 Tf +<737472696e67> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 469.560 m -269.177 469.560 l +48.240 507.360 m +269.177 507.360 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 432.000 m -269.177 432.000 l +48.240 469.800 m +269.177 469.800 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 469.810 m -48.240 431.750 l +48.240 507.610 m +48.240 469.550 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 469.810 m -269.177 431.750 l +269.177 507.610 m +269.177 469.550 l S [ ] 0 d 1 w @@ -28215,19 +33740,19 @@ S 0.200 0.200 0.200 scn BT -51.24 453.3130000000003 Td +51.24 491.1130000000001 Td /F2.0 10.5 Tf -<6173426967446563696d616c> Tj +[<6a736f6e417272> 20.01953125 <61> 20.01953125 <79>] TJ ET BT -51.24 439.03300000000024 Td +51.24 476.8330000000001 Td ET BT -51.24 439.03300000000024 Td +51.24 476.8330000000001 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -28235,26 +33760,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 469.560 m -563.760 469.560 l +269.177 507.360 m +563.760 507.360 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 432.000 m -563.760 432.000 l +269.177 469.800 m +563.760 469.800 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 469.810 m -269.177 431.750 l +269.177 507.610 m +269.177 469.550 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 469.810 m -563.760 431.750 l +563.760 507.610 m +563.760 469.550 l S [ ] 0 d 1 w @@ -28262,34 +33787,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 446.1730000000003 Td +272.17692192000004 483.9730000000001 Td /F1.0 10.5 Tf -<6e756d626572> Tj +<626f6f6c65616e> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 432.000 m -269.177 432.000 l +48.240 469.800 m +269.177 469.800 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 394.440 m -269.177 394.440 l +48.240 432.240 m +269.177 432.240 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 432.250 m -48.240 394.190 l +48.240 470.050 m +48.240 431.990 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 432.250 m -269.177 394.190 l +269.177 470.050 m +269.177 431.990 l S [ ] 0 d 1 w @@ -28297,19 +33822,19 @@ S 0.200 0.200 0.200 scn BT -51.24 415.7530000000003 Td +51.24 453.55300000000017 Td /F2.0 10.5 Tf -<6173426967496e7465676572> Tj +<6a736f6e4e756c6c> Tj ET BT -51.24 401.4730000000003 Td +51.24 439.27300000000014 Td ET BT -51.24 401.4730000000003 Td +51.24 439.27300000000014 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -28317,26 +33842,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 432.000 m -563.760 432.000 l +269.177 469.800 m +563.760 469.800 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 394.440 m -563.760 394.440 l +269.177 432.240 m +563.760 432.240 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 432.250 m -269.177 394.190 l +269.177 470.050 m +269.177 431.990 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 432.250 m -563.760 394.190 l +563.760 470.050 m +563.760 431.990 l S [ ] 0 d 1 w @@ -28344,34 +33869,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 408.61300000000034 Td +272.17692192000004 446.4130000000002 Td /F1.0 10.5 Tf -<696e7465676572> Tj +<626f6f6c65616e> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 394.440 m -269.177 394.440 l +48.240 432.240 m +269.177 432.240 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 356.880 m -269.177 356.880 l +48.240 394.680 m +269.177 394.680 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 394.690 m -48.240 356.630 l +48.240 432.490 m +48.240 394.430 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 394.690 m -269.177 356.630 l +269.177 432.490 m +269.177 394.430 l S [ ] 0 d 1 w @@ -28379,19 +33904,19 @@ S 0.200 0.200 0.200 scn BT -51.24 378.19300000000027 Td +51.24 415.9930000000002 Td /F2.0 10.5 Tf -<6173426f6f6c65616e> Tj +<6a736f6e4f626a656374> Tj ET BT -51.24 363.91300000000024 Td +51.24 401.7130000000002 Td ET BT -51.24 363.91300000000024 Td +51.24 401.7130000000002 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -28399,26 +33924,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 394.440 m -563.760 394.440 l +269.177 432.240 m +563.760 432.240 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 356.880 m -563.760 356.880 l +269.177 394.680 m +563.760 394.680 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 394.690 m -269.177 356.630 l +269.177 432.490 m +269.177 394.430 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 394.690 m -563.760 356.630 l +563.760 432.490 m +563.760 394.430 l S [ ] 0 d 1 w @@ -28426,7 +33951,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 371.0530000000003 Td +272.17692192000004 408.85300000000024 Td /F1.0 10.5 Tf <626f6f6c65616e> Tj ET @@ -28434,26 +33959,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 356.880 m -269.177 356.880 l +48.240 394.680 m +269.177 394.680 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 319.320 m -269.177 319.320 l +48.240 357.120 m +269.177 357.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 357.130 m -48.240 319.070 l +48.240 394.930 m +48.240 356.870 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 357.130 m -269.177 319.070 l +269.177 394.930 m +269.177 356.870 l S [ ] 0 d 1 w @@ -28461,19 +33986,19 @@ S 0.200 0.200 0.200 scn BT -51.24 340.6330000000003 Td +51.24 378.4330000000003 Td /F2.0 10.5 Tf -[<617342> 20.01953125 <797465>] TJ +<6a736f6e5072696d6974697665> Tj ET BT -51.24 326.3530000000003 Td +51.24 364.15300000000025 Td ET BT -51.24 326.3530000000003 Td +51.24 364.15300000000025 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -28481,26 +34006,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 356.880 m -563.760 356.880 l +269.177 394.680 m +563.760 394.680 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 319.320 m -563.760 319.320 l +269.177 357.120 m +563.760 357.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 357.130 m -269.177 319.070 l +269.177 394.930 m +269.177 356.870 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 357.130 m -563.760 319.070 l +563.760 394.930 m +563.760 356.870 l S [ ] 0 d 1 w @@ -28508,19 +34033,86 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 333.49300000000034 Td +272.17692192000004 371.2930000000003 Td /F1.0 10.5 Tf -[<737472696e67202862> 20.01953125 <79746529>] TJ +<626f6f6c65616e> Tj +ET + +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24 321.6960000000003 Td +/F2.0 18 Tf +<332e382e204a736f6e4e756c6c> Tj ET +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 281.760 220.937 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 281.760 294.583 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 244.200 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 244.200 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 206.640 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 206.640 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 169.080 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 169.080 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 131.520 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 131.520 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 93.960 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 93.960 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 56.400 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 56.400 294.583 37.560 re +f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 319.320 m -269.177 319.320 l +48.240 305.040 m +269.177 305.040 l S [ ] 0 d -0.5 w +1.5 w 0.867 0.867 0.867 SCN 48.240 281.760 m 269.177 281.760 l @@ -28528,14 +34120,14 @@ S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 319.570 m -48.240 281.510 l +48.240 305.290 m +48.240 281.010 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 319.570 m -269.177 281.510 l +269.177 305.290 m +269.177 281.010 l S [ ] 0 d 1 w @@ -28543,31 +34135,19 @@ S 0.200 0.200 0.200 scn BT -51.24 303.07300000000026 Td +51.24 289.29300000000023 Td /F2.0 10.5 Tf -[<617343686172> 20.01953125 <6163746572>] TJ -ET - - -BT -51.24 288.79300000000023 Td -ET - - -BT -51.24 288.79300000000023 Td -/F3.0 10.5 Tf -<6f7074696f6e616c> Tj +<4e616d65> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 319.320 m -563.760 319.320 l +269.177 305.040 m +563.760 305.040 l S [ ] 0 d -0.5 w +1.5 w 0.867 0.867 0.867 SCN 269.177 281.760 m 563.760 281.760 l @@ -28575,14 +34155,14 @@ S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 319.570 m -269.177 281.510 l +269.177 305.290 m +269.177 281.010 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 319.570 m -563.760 281.510 l +563.760 305.290 m +563.760 281.010 l S [ ] 0 d 1 w @@ -28590,9 +34170,9 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 295.9330000000003 Td -/F1.0 10.5 Tf -<737472696e67> Tj +272.17692192000004 289.29300000000023 Td +/F2.0 10.5 Tf +<536368656d61> Tj ET 0.000 0.000 0.000 scn @@ -28625,19 +34205,19 @@ S 0.200 0.200 0.200 scn BT -51.24 265.5130000000003 Td +51.24 265.5130000000002 Td /F2.0 10.5 Tf -<6173446f75626c65> Tj +<6173426967446563696d616c> Tj ET BT -51.24 251.23300000000032 Td +51.24 251.2330000000002 Td ET BT -51.24 251.23300000000032 Td +51.24 251.2330000000002 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -28672,9 +34252,9 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 258.37300000000033 Td +272.17692192000004 258.3730000000002 Td /F1.0 10.5 Tf -<6e756d6265722028646f75626c6529> Tj +<6e756d626572> Tj ET 0.000 0.000 0.000 scn @@ -28707,19 +34287,19 @@ S 0.200 0.200 0.200 scn BT -51.24 227.95300000000032 Td +51.24 227.95300000000026 Td /F2.0 10.5 Tf -<6173466c6f6174> Tj +<6173426967496e7465676572> Tj ET BT -51.24 213.67300000000031 Td +51.24 213.67300000000026 Td ET BT -51.24 213.67300000000031 Td +51.24 213.67300000000026 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -28754,9 +34334,9 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 220.8130000000003 Td +272.17692192000004 220.81300000000024 Td /F1.0 10.5 Tf -<6e756d6265722028666c6f617429> Tj +<696e7465676572> Tj ET 0.000 0.000 0.000 scn @@ -28789,19 +34369,19 @@ S 0.200 0.200 0.200 scn BT -51.24 190.39300000000028 Td +51.24 190.39300000000026 Td /F2.0 10.5 Tf -<6173496e74> Tj +<6173426f6f6c65616e> Tj ET BT -51.24 176.11300000000028 Td +51.24 176.11300000000026 Td ET BT -51.24 176.11300000000028 Td +51.24 176.11300000000026 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -28836,9 +34416,9 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 183.25300000000027 Td +272.17692192000004 183.25300000000024 Td /F1.0 10.5 Tf -<696e74656765722028696e74333229> Tj +<626f6f6c65616e> Tj ET 0.000 0.000 0.000 scn @@ -28871,19 +34451,19 @@ S 0.200 0.200 0.200 scn BT -51.24 152.83300000000028 Td +51.24 152.83300000000025 Td /F2.0 10.5 Tf -[<61734a736f6e417272> 20.01953125 <61> 20.01953125 <79>] TJ +[<617342> 20.01953125 <797465>] TJ ET BT -51.24 138.55300000000028 Td +51.24 138.55300000000025 Td ET BT -51.24 138.55300000000028 Td +51.24 138.55300000000025 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -28916,21 +34496,13 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -272.17692192000004 145.69300000000027 Td +272.17692192000004 145.69300000000024 Td /F1.0 10.5 Tf -[<4a736f6e417272> 20.01953125 <61> 20.01953125 <79>] TJ +[<737472696e67202862> 20.01953125 <79746529>] TJ ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -28961,19 +34533,19 @@ S 0.200 0.200 0.200 scn BT -51.24 115.27300000000027 Td +51.24 115.27300000000024 Td /F2.0 10.5 Tf -<61734a736f6e4e756c6c> Tj +[<617343686172> 20.01953125 <6163746572>] TJ ET BT -51.24 100.99300000000027 Td +51.24 100.99300000000024 Td ET BT -51.24 100.99300000000027 Td +51.24 100.99300000000024 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -29006,21 +34578,13 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -272.17692192000004 108.13300000000027 Td +272.17692192000004 108.13300000000024 Td /F1.0 10.5 Tf -<4a736f6e4e756c6c> Tj +<737472696e67> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -29051,19 +34615,19 @@ S 0.200 0.200 0.200 scn BT -51.24 77.71300000000026 Td +51.24 77.71300000000024 Td /F2.0 10.5 Tf -<61734a736f6e4f626a656374> Tj +<6173446f75626c65> Tj ET BT -51.24 63.43300000000026 Td +51.24 63.433000000000234 Td ET BT -51.24 63.43300000000026 Td +51.24 63.433000000000234 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -29096,21 +34660,13 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -272.17692192000004 70.57300000000026 Td +272.17692192000004 70.57300000000023 Td /F1.0 10.5 Tf -<4a736f6e4f626a656374> Tj +<6e756d6265722028646f75626c6529> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn q 0.000 0.000 0.000 scn @@ -29126,7 +34682,7 @@ q BT 49.24 14.388 Td /F1.0 9 Tf -<3138> Tj +<3232> Tj ET 0.000 0.000 0.000 SCN @@ -29136,51 +34692,51 @@ Q endstream endobj -228 0 obj +269 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 227 0 R +/Contents 268 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 22 0 R -/F3.0 24 0 R +/Font << /F2.0 24 0 R +/F3.0 26 0 R /F1.0 8 0 R >> -/XObject << /Stamp1 588 0 R +/XObject << /Stamp1 684 0 R >> >> -/Annots [230 0 R 231 0 R 232 0 R] +/Annots [270 0 R 271 0 R 272 0 R] >> endobj -229 0 obj -[228 0 R /XYZ 0 532.9200000000003 null] -endobj -230 0 obj +270 0 obj << /Border [0 0 0] -/Dest (_jsonarray) +/Dest (_jsonobject) /Subtype /Link -/Rect [272.17692192000004 142.6270000000003 322.17751176375003 156.90700000000027] +/Rect [272.17692192000004 706.267 325.32792192000005 720.547] /Type /Annot >> endobj -231 0 obj +271 0 obj << /Border [0 0 0] -/Dest (_jsonnull) +/Dest (_jsonprimitive) /Subtype /Link -/Rect [272.17692192000004 105.06700000000026 314.65992192000004 119.34700000000026] +/Rect [272.17692192000004 668.7070000000001 340.1224219200001 682.9870000000001] /Type /Annot >> endobj -232 0 obj +272 0 obj << /Border [0 0 0] -/Dest (_jsonobject) +/Dest (_number) /Subtype /Link -/Rect [272.17692192000004 67.50700000000026 325.32792192000005 81.78700000000026] +/Rect [272.17692192000004 593.5870000000001 313.75692192 607.8670000000001] /Type /Annot >> endobj -233 0 obj -<< /Length 21163 +273 0 obj +[269 0 R /XYZ 0 345.1200000000003 null] +endobj +274 0 obj +<< /Length 21776 >> stream q @@ -29265,6 +34821,46 @@ f 269.177 394.680 294.583 37.560 re f 0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 357.120 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 357.120 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 319.560 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 319.560 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 282.000 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 282.000 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 244.440 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 244.440 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 206.880 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 206.880 294.583 37.560 re +f +0.000 0.000 0.000 scn 0.5 w /DeviceRGB CS 0.867 0.867 0.867 SCN @@ -29367,7 +34963,7 @@ S BT 51.24 716.473 Td /F2.0 10.5 Tf -<61734a736f6e5072696d6974697665> Tj +<6173466c6f6174> Tj ET @@ -29410,21 +35006,13 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT 272.17692192000004 709.333 Td /F1.0 10.5 Tf -<4a736f6e5072696d6974697665> Tj +<6e756d6265722028666c6f617429> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -29457,17 +35045,17 @@ S BT 51.24 678.913 Td /F2.0 10.5 Tf -<61734c6f6e67> Tj +<6173496e74> Tj ET BT -51.24 664.633 Td +51.24 664.6329999999999 Td ET BT -51.24 664.633 Td +51.24 664.6329999999999 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -29502,9 +35090,9 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 671.773 Td +272.17692192000004 671.7729999999999 Td /F1.0 10.5 Tf -<696e74656765722028696e74363429> Tj +<696e74656765722028696e74333229> Tj ET 0.000 0.000 0.000 scn @@ -29537,19 +35125,19 @@ S 0.200 0.200 0.200 scn BT -51.24 641.3530000000001 Td +51.24 641.3529999999998 Td /F2.0 10.5 Tf -<61734e756d626572> Tj +[<61734a736f6e417272> 20.01953125 <61> 20.01953125 <79>] TJ ET BT -51.24 627.073 Td +51.24 627.0729999999999 Td ET BT -51.24 627.073 Td +51.24 627.0729999999999 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -29590,9 +35178,9 @@ S 0.259 0.545 0.792 SCN BT -272.17692192000004 634.213 Td +272.17692192000004 634.2129999999999 Td /F1.0 10.5 Tf -<4e756d626572> Tj +[<4a736f6e417272> 20.01953125 <61> 20.01953125 <79>] TJ ET 0.000 0.000 0.000 SCN @@ -29629,7 +35217,7 @@ S BT 51.24 603.7929999999999 Td /F2.0 10.5 Tf -<617353686f7274> Tj +<61734a736f6e4e756c6c> Tj ET @@ -29672,13 +35260,21 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT 272.17692192000004 596.6529999999999 Td /F1.0 10.5 Tf -<696e74656765722028696e74333229> Tj +<4a736f6e4e756c6c> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -29711,7 +35307,7 @@ S BT 51.24 566.233 Td /F2.0 10.5 Tf -<6173537472696e67> Tj +<61734a736f6e4f626a656374> Tj ET @@ -29754,13 +35350,21 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT 272.17692192000004 559.093 Td /F1.0 10.5 Tf -<737472696e67> Tj +<4a736f6e4f626a656374> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -29793,17 +35397,17 @@ S BT 51.24 528.673 Td /F2.0 10.5 Tf -[<6a736f6e417272> 20.01953125 <61> 20.01953125 <79>] TJ +<61734a736f6e5072696d6974697665> Tj ET BT -51.24 514.393 Td +51.24 514.3929999999999 Td ET BT -51.24 514.393 Td +51.24 514.3929999999999 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -29836,13 +35440,21 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT -272.17692192000004 521.533 Td +272.17692192000004 521.5329999999999 Td /F1.0 10.5 Tf -<626f6f6c65616e> Tj +<4a736f6e5072696d6974697665> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -29873,19 +35485,19 @@ S 0.200 0.200 0.200 scn BT -51.24 491.1130000000001 Td +51.24 491.11299999999994 Td /F2.0 10.5 Tf -<6a736f6e4e756c6c> Tj +<61734c6f6e67> Tj ET BT -51.24 476.8330000000001 Td +51.24 476.83299999999997 Td ET BT -51.24 476.8330000000001 Td +51.24 476.83299999999997 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -29920,9 +35532,9 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 483.9730000000001 Td +272.17692192000004 483.97299999999996 Td /F1.0 10.5 Tf -<626f6f6c65616e> Tj +<696e74656765722028696e74363429> Tj ET 0.000 0.000 0.000 scn @@ -29955,19 +35567,19 @@ S 0.200 0.200 0.200 scn BT -51.24 453.55300000000017 Td +51.24 453.55299999999994 Td /F2.0 10.5 Tf -<6a736f6e4f626a656374> Tj +<61734e756d626572> Tj ET BT -51.24 439.27300000000014 Td +51.24 439.2729999999999 Td ET BT -51.24 439.27300000000014 Td +51.24 439.2729999999999 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -30000,13 +35612,21 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT -272.17692192000004 446.4130000000002 Td +272.17692192000004 446.41299999999995 Td /F1.0 10.5 Tf -<626f6f6c65616e> Tj +<4e756d626572> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -30037,156 +35657,81 @@ S 0.200 0.200 0.200 scn BT -51.24 415.9930000000002 Td +51.24 415.9929999999999 Td /F2.0 10.5 Tf -<6a736f6e5072696d6974697665> Tj -ET - - -BT -51.24 401.7130000000002 Td -ET - - -BT -51.24 401.7130000000002 Td -/F3.0 10.5 Tf -<6f7074696f6e616c> Tj +<617353686f7274> Tj ET -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -269.177 432.240 m -563.760 432.240 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -269.177 394.680 m -563.760 394.680 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -269.177 432.490 m -269.177 394.430 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -563.760 432.490 m -563.760 394.430 l -S -[ ] 0 d -1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn BT -272.17692192000004 408.85300000000024 Td -/F1.0 10.5 Tf -<626f6f6c65616e> Tj +51.24 401.71299999999985 Td ET -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN BT -48.24 359.25600000000026 Td -/F2.0 18 Tf -<332e382e204a736f6e4f626a656374> Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 319.320 220.937 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 319.320 294.583 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 281.760 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 281.760 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 244.200 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 244.200 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 206.640 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 206.640 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 169.080 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 169.080 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 131.520 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 131.520 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 93.960 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 93.960 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 56.400 220.937 37.560 re -f +51.24 401.71299999999985 Td +/F3.0 10.5 Tf +<6f7074696f6e616c> Tj +ET + 0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 56.400 294.583 37.560 re -f +0.5 w +0.867 0.867 0.867 SCN +269.177 432.240 m +563.760 432.240 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +269.177 394.680 m +563.760 394.680 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +269.177 432.490 m +269.177 394.430 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 432.490 m +563.760 394.430 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +272.17692192000004 408.8529999999999 Td +/F1.0 10.5 Tf +<696e74656765722028696e74333229> Tj +ET + 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 342.600 m -269.177 342.600 l +48.240 394.680 m +269.177 394.680 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -48.240 319.320 m -269.177 319.320 l +48.240 357.120 m +269.177 357.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 342.850 m -48.240 318.570 l +48.240 394.930 m +48.240 356.870 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 342.850 m -269.177 318.570 l +269.177 394.930 m +269.177 356.870 l S [ ] 0 d 1 w @@ -30194,34 +35739,46 @@ S 0.200 0.200 0.200 scn BT -51.24 326.8530000000002 Td +51.24 378.43299999999994 Td /F2.0 10.5 Tf -<4e616d65> Tj +<6173537472696e67> Tj +ET + + +BT +51.24 364.1529999999999 Td +ET + + +BT +51.24 364.1529999999999 Td +/F3.0 10.5 Tf +<6f7074696f6e616c> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 342.600 m -563.760 342.600 l +269.177 394.680 m +563.760 394.680 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -269.177 319.320 m -563.760 319.320 l +269.177 357.120 m +563.760 357.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 342.850 m -269.177 318.570 l +269.177 394.930 m +269.177 356.870 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 342.850 m -563.760 318.570 l +563.760 394.930 m +563.760 356.870 l S [ ] 0 d 1 w @@ -30229,34 +35786,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 326.8530000000002 Td -/F2.0 10.5 Tf -<536368656d61> Tj +272.17692192000004 371.29299999999995 Td +/F1.0 10.5 Tf +<737472696e67> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 319.320 m -269.177 319.320 l +48.240 357.120 m +269.177 357.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 281.760 m -269.177 281.760 l +48.240 319.560 m +269.177 319.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 319.570 m -48.240 281.510 l +48.240 357.370 m +48.240 319.310 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 319.570 m -269.177 281.510 l +269.177 357.370 m +269.177 319.310 l S [ ] 0 d 1 w @@ -30264,19 +35821,19 @@ S 0.200 0.200 0.200 scn BT -51.24 303.07300000000015 Td +51.24 340.873 Td /F2.0 10.5 Tf -<6173426967446563696d616c> Tj +[<6a736f6e417272> 20.01953125 <61> 20.01953125 <79>] TJ ET BT -51.24 288.7930000000001 Td +51.24 326.59299999999996 Td ET BT -51.24 288.7930000000001 Td +51.24 326.59299999999996 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -30284,26 +35841,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 319.320 m -563.760 319.320 l +269.177 357.120 m +563.760 357.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 281.760 m -563.760 281.760 l +269.177 319.560 m +563.760 319.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 319.570 m -269.177 281.510 l +269.177 357.370 m +269.177 319.310 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 319.570 m -563.760 281.510 l +563.760 357.370 m +563.760 319.310 l S [ ] 0 d 1 w @@ -30311,34 +35868,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 295.93300000000016 Td +272.17692192000004 333.733 Td /F1.0 10.5 Tf -<6e756d626572> Tj +<626f6f6c65616e> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 281.760 m -269.177 281.760 l +48.240 319.560 m +269.177 319.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 244.200 m -269.177 244.200 l +48.240 282.000 m +269.177 282.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 282.010 m -48.240 243.950 l +48.240 319.810 m +48.240 281.750 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 282.010 m -269.177 243.950 l +269.177 319.810 m +269.177 281.750 l S [ ] 0 d 1 w @@ -30346,19 +35903,19 @@ S 0.200 0.200 0.200 scn BT -51.24 265.5130000000002 Td +51.24 303.31300000000005 Td /F2.0 10.5 Tf -<6173426967496e7465676572> Tj +<6a736f6e4e756c6c> Tj ET BT -51.24 251.2330000000002 Td +51.24 289.033 Td ET BT -51.24 251.2330000000002 Td +51.24 289.033 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -30366,26 +35923,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 281.760 m -563.760 281.760 l +269.177 319.560 m +563.760 319.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 244.200 m -563.760 244.200 l +269.177 282.000 m +563.760 282.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 282.010 m -269.177 243.950 l +269.177 319.810 m +269.177 281.750 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 282.010 m -563.760 243.950 l +563.760 319.810 m +563.760 281.750 l S [ ] 0 d 1 w @@ -30393,34 +35950,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 258.3730000000002 Td +272.17692192000004 296.17300000000006 Td /F1.0 10.5 Tf -<696e7465676572> Tj +<626f6f6c65616e> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 244.200 m -269.177 244.200 l +48.240 282.000 m +269.177 282.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 206.640 m -269.177 206.640 l +48.240 244.440 m +269.177 244.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 244.450 m -48.240 206.390 l +48.240 282.250 m +48.240 244.190 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 244.450 m -269.177 206.390 l +269.177 282.250 m +269.177 244.190 l S [ ] 0 d 1 w @@ -30428,19 +35985,19 @@ S 0.200 0.200 0.200 scn BT -51.24 227.9530000000002 Td +51.24 265.7530000000001 Td /F2.0 10.5 Tf -<6173426f6f6c65616e> Tj +<6a736f6e4f626a656374> Tj ET BT -51.24 213.6730000000002 Td +51.24 251.4730000000001 Td ET BT -51.24 213.6730000000002 Td +51.24 251.4730000000001 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -30448,26 +36005,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 244.200 m -563.760 244.200 l +269.177 282.000 m +563.760 282.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 206.640 m -563.760 206.640 l +269.177 244.440 m +563.760 244.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 244.450 m -269.177 206.390 l +269.177 282.250 m +269.177 244.190 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 244.450 m -563.760 206.390 l +563.760 282.250 m +563.760 244.190 l S [ ] 0 d 1 w @@ -30475,7 +36032,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 220.8130000000002 Td +272.17692192000004 258.6130000000001 Td /F1.0 10.5 Tf <626f6f6c65616e> Tj ET @@ -30483,26 +36040,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 206.640 m -269.177 206.640 l +48.240 244.440 m +269.177 244.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 169.080 m -269.177 169.080 l +48.240 206.880 m +269.177 206.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 206.890 m -48.240 168.830 l +48.240 244.690 m +48.240 206.630 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 206.890 m -269.177 168.830 l +269.177 244.690 m +269.177 206.630 l S [ ] 0 d 1 w @@ -30510,19 +36067,19 @@ S 0.200 0.200 0.200 scn BT -51.24 190.3930000000002 Td +51.24 228.19300000000018 Td /F2.0 10.5 Tf -[<617342> 20.01953125 <797465>] TJ +<6a736f6e5072696d6974697665> Tj ET BT -51.24 176.1130000000002 Td +51.24 213.91300000000018 Td ET BT -51.24 176.1130000000002 Td +51.24 213.91300000000018 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -30530,26 +36087,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 206.640 m -563.760 206.640 l +269.177 244.440 m +563.760 244.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 169.080 m -563.760 169.080 l +269.177 206.880 m +563.760 206.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 206.890 m -269.177 168.830 l +269.177 244.690 m +269.177 206.630 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 206.890 m -563.760 168.830 l +563.760 244.690 m +563.760 206.630 l S [ ] 0 d 1 w @@ -30557,19 +36114,54 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 183.25300000000018 Td +272.17692192000004 221.05300000000017 Td /F1.0 10.5 Tf -[<737472696e67202862> 20.01953125 <79746529>] TJ +<626f6f6c65616e> Tj +ET + +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24 171.45600000000013 Td +/F2.0 18 Tf +<332e392e204a736f6e4f626a656374> Tj ET +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 131.520 220.937 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 131.520 294.583 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 93.960 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 93.960 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 56.400 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 56.400 294.583 37.560 re +f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 169.080 m -269.177 169.080 l +48.240 154.800 m +269.177 154.800 l S [ ] 0 d -0.5 w +1.5 w 0.867 0.867 0.867 SCN 48.240 131.520 m 269.177 131.520 l @@ -30577,14 +36169,14 @@ S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 169.330 m -48.240 131.270 l +48.240 155.050 m +48.240 130.770 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 169.330 m -269.177 131.270 l +269.177 155.050 m +269.177 130.770 l S [ ] 0 d 1 w @@ -30592,31 +36184,19 @@ S 0.200 0.200 0.200 scn BT -51.24 152.8330000000002 Td +51.24 139.05300000000017 Td /F2.0 10.5 Tf -[<617343686172> 20.01953125 <6163746572>] TJ -ET - - -BT -51.24 138.5530000000002 Td -ET - - -BT -51.24 138.5530000000002 Td -/F3.0 10.5 Tf -<6f7074696f6e616c> Tj +<4e616d65> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 169.080 m -563.760 169.080 l +269.177 154.800 m +563.760 154.800 l S [ ] 0 d -0.5 w +1.5 w 0.867 0.867 0.867 SCN 269.177 131.520 m 563.760 131.520 l @@ -30624,14 +36204,14 @@ S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 169.330 m -269.177 131.270 l +269.177 155.050 m +269.177 130.770 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 169.330 m -563.760 131.270 l +563.760 155.050 m +563.760 130.770 l S [ ] 0 d 1 w @@ -30639,9 +36219,9 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 145.69300000000018 Td -/F1.0 10.5 Tf -<737472696e67> Tj +272.17692192000004 139.05300000000017 Td +/F2.0 10.5 Tf +<536368656d61> Tj ET 0.000 0.000 0.000 scn @@ -30674,19 +36254,19 @@ S 0.200 0.200 0.200 scn BT -51.24 115.27300000000018 Td +51.24 115.27300000000015 Td /F2.0 10.5 Tf -<6173446f75626c65> Tj +<6173426967446563696d616c> Tj ET BT -51.24 100.99300000000018 Td +51.24 100.99300000000015 Td ET BT -51.24 100.99300000000018 Td +51.24 100.99300000000015 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -30721,9 +36301,9 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 108.13300000000018 Td +272.17692192000004 108.13300000000015 Td /F1.0 10.5 Tf -<6e756d6265722028646f75626c6529> Tj +<6e756d626572> Tj ET 0.000 0.000 0.000 scn @@ -30756,19 +36336,19 @@ S 0.200 0.200 0.200 scn BT -51.24 77.71300000000018 Td +51.24 77.71300000000015 Td /F2.0 10.5 Tf -<6173466c6f6174> Tj +<6173426967496e7465676572> Tj ET BT -51.24 63.43300000000018 Td +51.24 63.43300000000015 Td ET BT -51.24 63.43300000000018 Td +51.24 63.43300000000015 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -30803,9 +36383,9 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 70.57300000000018 Td +272.17692192000004 70.57300000000015 Td /F1.0 10.5 Tf -<6e756d6265722028666c6f617429> Tj +<696e7465676572> Tj ET 0.000 0.000 0.000 scn @@ -30823,7 +36403,7 @@ q BT 552.698 14.388 Td /F1.0 9 Tf -<3139> Tj +<3233> Tj ET 0.000 0.000 0.000 SCN @@ -30833,43 +36413,67 @@ Q endstream endobj -234 0 obj +275 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 233 0 R +/Contents 274 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 22 0 R -/F3.0 24 0 R +/Font << /F2.0 24 0 R +/F3.0 26 0 R /F1.0 8 0 R >> -/XObject << /Stamp1 588 0 R +/XObject << /Stamp1 684 0 R >> >> -/Annots [235 0 R 236 0 R] +/Annots [276 0 R 277 0 R 278 0 R 279 0 R 280 0 R] >> endobj -235 0 obj +276 0 obj +<< /Border [0 0 0] +/Dest (_jsonarray) +/Subtype /Link +/Rect [272.17692192000004 631.1469999999999 322.17751176375003 645.4269999999999] +/Type /Annot +>> +endobj +277 0 obj +<< /Border [0 0 0] +/Dest (_jsonnull) +/Subtype /Link +/Rect [272.17692192000004 593.587 314.65992192000004 607.867] +/Type /Annot +>> +endobj +278 0 obj +<< /Border [0 0 0] +/Dest (_jsonobject) +/Subtype /Link +/Rect [272.17692192000004 556.027 325.32792192000005 570.307] +/Type /Annot +>> +endobj +279 0 obj << /Border [0 0 0] /Dest (_jsonprimitive) /Subtype /Link -/Rect [272.17692192000004 706.267 340.1224219200001 720.547] +/Rect [272.17692192000004 518.467 340.1224219200001 532.747] /Type /Annot >> endobj -236 0 obj +280 0 obj << /Border [0 0 0] /Dest (_number) /Subtype /Link -/Rect [272.17692192000004 631.147 313.75692192 645.427] +/Rect [272.17692192000004 443.3469999999999 313.75692192 457.62699999999995] /Type /Annot >> endobj -237 0 obj -[234 0 R /XYZ 0 382.68000000000023 null] +281 0 obj +[275 0 R /XYZ 0 194.88000000000017 null] endobj -238 0 obj -<< /Length 21656 +282 0 obj +<< /Length 22905 >> stream q @@ -30986,6 +36590,46 @@ f 269.177 244.440 294.583 37.560 re f 0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 206.880 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 206.880 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 169.320 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 169.320 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 131.760 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 131.760 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 94.200 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 94.200 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 56.640 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 56.640 294.583 37.560 re +f +0.000 0.000 0.000 scn 0.5 w /DeviceRGB CS 0.867 0.867 0.867 SCN @@ -31088,7 +36732,7 @@ S BT 51.24 716.473 Td /F2.0 10.5 Tf -<6173496e74> Tj +<6173426f6f6c65616e> Tj ET @@ -31135,7 +36779,7 @@ S BT 272.17692192000004 709.333 Td /F1.0 10.5 Tf -<696e74656765722028696e74333229> Tj +<626f6f6c65616e> Tj ET 0.000 0.000 0.000 scn @@ -31170,17 +36814,17 @@ S BT 51.24 678.913 Td /F2.0 10.5 Tf -[<61734a736f6e417272> 20.01953125 <61> 20.01953125 <79>] TJ +[<617342> 20.01953125 <797465>] TJ ET BT -51.24 664.633 Td +51.24 664.6329999999999 Td ET BT -51.24 664.633 Td +51.24 664.6329999999999 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -31213,21 +36857,13 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -272.17692192000004 671.773 Td +272.17692192000004 671.7729999999999 Td /F1.0 10.5 Tf -[<4a736f6e417272> 20.01953125 <61> 20.01953125 <79>] TJ +[<737472696e67202862> 20.01953125 <79746529>] TJ ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -31260,7 +36896,7 @@ S BT 51.24 641.3530000000001 Td /F2.0 10.5 Tf -<61734a736f6e4e756c6c> Tj +[<617343686172> 20.01953125 <6163746572>] TJ ET @@ -31303,21 +36939,13 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT 272.17692192000004 634.213 Td /F1.0 10.5 Tf -<4a736f6e4e756c6c> Tj +<737472696e67> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -31350,7 +36978,7 @@ S BT 51.24 603.7929999999999 Td /F2.0 10.5 Tf -<61734a736f6e4f626a656374> Tj +<6173446f75626c65> Tj ET @@ -31393,21 +37021,13 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT 272.17692192000004 596.6529999999999 Td /F1.0 10.5 Tf -<4a736f6e4f626a656374> Tj +<6e756d6265722028646f75626c6529> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -31440,7 +37060,7 @@ S BT 51.24 566.233 Td /F2.0 10.5 Tf -<61734a736f6e5072696d6974697665> Tj +<6173466c6f6174> Tj ET @@ -31483,21 +37103,13 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT 272.17692192000004 559.093 Td /F1.0 10.5 Tf -<4a736f6e5072696d6974697665> Tj +<6e756d6265722028666c6f617429> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -31530,17 +37142,17 @@ S BT 51.24 528.673 Td /F2.0 10.5 Tf -<61734c6f6e67> Tj +<6173496e74> Tj ET BT -51.24 514.393 Td +51.24 514.3929999999999 Td ET BT -51.24 514.393 Td +51.24 514.3929999999999 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -31575,9 +37187,9 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 521.533 Td +272.17692192000004 521.5329999999999 Td /F1.0 10.5 Tf -<696e74656765722028696e74363429> Tj +<696e74656765722028696e74333229> Tj ET 0.000 0.000 0.000 scn @@ -31610,9 +37222,9 @@ S 0.200 0.200 0.200 scn BT -51.24 491.113 Td +51.24 491.11299999999994 Td /F2.0 10.5 Tf -<61734e756d626572> Tj +[<61734a736f6e417272> 20.01953125 <61> 20.01953125 <79>] TJ ET @@ -31663,9 +37275,9 @@ S 0.259 0.545 0.792 SCN BT -272.17692192000004 483.973 Td +272.17692192000004 483.97299999999996 Td /F1.0 10.5 Tf -<4e756d626572> Tj +[<4a736f6e417272> 20.01953125 <61> 20.01953125 <79>] TJ ET 0.000 0.000 0.000 SCN @@ -31702,7 +37314,7 @@ S BT 51.24 453.55299999999994 Td /F2.0 10.5 Tf -<617353686f7274> Tj +<61734a736f6e4e756c6c> Tj ET @@ -31745,13 +37357,21 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT 272.17692192000004 446.41299999999995 Td /F1.0 10.5 Tf -<696e74656765722028696e74333229> Tj +<4a736f6e4e756c6c> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -31782,9 +37402,9 @@ S 0.200 0.200 0.200 scn BT -51.24 415.993 Td +51.24 415.99299999999994 Td /F2.0 10.5 Tf -<6173537472696e67> Tj +<61734a736f6e4f626a656374> Tj ET @@ -31827,13 +37447,21 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT -272.17692192000004 408.853 Td +272.17692192000004 408.85299999999995 Td /F1.0 10.5 Tf -<737472696e67> Tj +<4a736f6e4f626a656374> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -31864,19 +37492,19 @@ S 0.200 0.200 0.200 scn BT -51.24 378.43300000000005 Td +51.24 378.43299999999994 Td /F2.0 10.5 Tf -[<6a736f6e417272> 20.01953125 <61> 20.01953125 <79>] TJ +<61734a736f6e5072696d6974697665> Tj ET BT -51.24 364.153 Td +51.24 364.1529999999999 Td ET BT -51.24 364.153 Td +51.24 364.1529999999999 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -31909,13 +37537,21 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT -272.17692192000004 371.29300000000006 Td +272.17692192000004 371.29299999999995 Td /F1.0 10.5 Tf -<626f6f6c65616e> Tj +<4a736f6e5072696d6974697665> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -31946,19 +37582,19 @@ S 0.200 0.200 0.200 scn BT -51.24 340.8730000000001 Td +51.24 340.87299999999993 Td /F2.0 10.5 Tf -<6a736f6e4e756c6c> Tj +<61734c6f6e67> Tj ET BT -51.24 326.5930000000001 Td +51.24 326.59299999999996 Td ET BT -51.24 326.5930000000001 Td +51.24 326.59299999999996 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -31993,9 +37629,9 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 333.7330000000001 Td +272.17692192000004 333.73299999999995 Td /F1.0 10.5 Tf -<626f6f6c65616e> Tj +<696e74656765722028696e74363429> Tj ET 0.000 0.000 0.000 scn @@ -32028,19 +37664,19 @@ S 0.200 0.200 0.200 scn BT -51.24 303.31300000000016 Td +51.24 303.31299999999993 Td /F2.0 10.5 Tf -<6a736f6e4f626a656374> Tj +<61734e756d626572> Tj ET BT -51.24 289.03300000000013 Td +51.24 289.0329999999999 Td ET BT -51.24 289.03300000000013 Td +51.24 289.0329999999999 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -32073,13 +37709,21 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT -272.17692192000004 296.1730000000002 Td +272.17692192000004 296.17299999999994 Td /F1.0 10.5 Tf -<626f6f6c65616e> Tj +<4e756d626572> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -32110,19 +37754,19 @@ S 0.200 0.200 0.200 scn BT -51.24 265.7530000000002 Td +51.24 265.7529999999999 Td /F2.0 10.5 Tf -<6a736f6e5072696d6974697665> Tj +<617353686f7274> Tj ET BT -51.24 251.4730000000002 Td +51.24 251.47299999999987 Td ET BT -51.24 251.4730000000002 Td +51.24 251.47299999999987 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -32157,77 +37801,116 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 258.6130000000002 Td +272.17692192000004 258.6129999999999 Td /F1.0 10.5 Tf -<626f6f6c65616e> Tj +<696e74656765722028696e74333229> Tj ET 0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 244.440 m +269.177 244.440 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 206.880 m +269.177 206.880 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 244.690 m +48.240 206.630 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +269.177 244.690 m +269.177 206.630 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN BT -48.24 209.01600000000022 Td -/F2.0 18 Tf -<332e392e204a736f6e5072696d6974697665> Tj +51.24 228.19299999999996 Td +/F2.0 10.5 Tf +<6173537472696e67> Tj +ET + + +BT +51.24 213.91299999999995 Td +ET + + +BT +51.24 213.91299999999995 Td +/F3.0 10.5 Tf +<6f7074696f6e616c> Tj ET -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 169.080 220.937 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 169.080 294.583 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 131.520 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 131.520 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 93.960 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 93.960 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 56.400 220.937 37.560 re -f 0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 56.400 294.583 37.560 re -f +0.5 w +0.867 0.867 0.867 SCN +269.177 244.440 m +563.760 244.440 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +269.177 206.880 m +563.760 206.880 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +269.177 244.690 m +269.177 206.630 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 244.690 m +563.760 206.630 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +272.17692192000004 221.05299999999994 Td +/F1.0 10.5 Tf +<737472696e67> Tj +ET + 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 192.360 m -269.177 192.360 l +48.240 206.880 m +269.177 206.880 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -48.240 169.080 m -269.177 169.080 l +48.240 169.320 m +269.177 169.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 192.610 m -48.240 168.330 l +48.240 207.130 m +48.240 169.070 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 192.610 m -269.177 168.330 l +269.177 207.130 m +269.177 169.070 l S [ ] 0 d 1 w @@ -32235,34 +37918,46 @@ S 0.200 0.200 0.200 scn BT -51.24 176.61300000000023 Td +51.24 190.633 Td /F2.0 10.5 Tf -<4e616d65> Tj +[<6a736f6e417272> 20.01953125 <61> 20.01953125 <79>] TJ +ET + + +BT +51.24 176.353 Td +ET + + +BT +51.24 176.353 Td +/F3.0 10.5 Tf +<6f7074696f6e616c> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 192.360 m -563.760 192.360 l +269.177 206.880 m +563.760 206.880 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -269.177 169.080 m -563.760 169.080 l +269.177 169.320 m +563.760 169.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 192.610 m -269.177 168.330 l +269.177 207.130 m +269.177 169.070 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 192.610 m -563.760 168.330 l +563.760 207.130 m +563.760 169.070 l S [ ] 0 d 1 w @@ -32270,34 +37965,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 176.61300000000023 Td -/F2.0 10.5 Tf -<536368656d61> Tj +272.17692192000004 183.493 Td +/F1.0 10.5 Tf +<626f6f6c65616e> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 169.080 m -269.177 169.080 l +48.240 169.320 m +269.177 169.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 131.520 m -269.177 131.520 l +48.240 131.760 m +269.177 131.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 169.330 m -48.240 131.270 l +48.240 169.570 m +48.240 131.510 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 169.330 m -269.177 131.270 l +269.177 169.570 m +269.177 131.510 l S [ ] 0 d 1 w @@ -32305,19 +38000,19 @@ S 0.200 0.200 0.200 scn BT -51.24 152.83300000000023 Td +51.24 153.07300000000006 Td /F2.0 10.5 Tf -<6173426967446563696d616c> Tj +<6a736f6e4e756c6c> Tj ET BT -51.24 138.55300000000022 Td +51.24 138.79300000000006 Td ET BT -51.24 138.55300000000022 Td +51.24 138.79300000000006 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -32325,26 +38020,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 169.080 m -563.760 169.080 l +269.177 169.320 m +563.760 169.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 131.520 m -563.760 131.520 l +269.177 131.760 m +563.760 131.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 169.330 m -269.177 131.270 l +269.177 169.570 m +269.177 131.510 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 169.330 m -563.760 131.270 l +563.760 169.570 m +563.760 131.510 l S [ ] 0 d 1 w @@ -32352,34 +38047,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 145.6930000000002 Td +272.17692192000004 145.93300000000005 Td /F1.0 10.5 Tf -<6e756d626572> Tj +<626f6f6c65616e> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 131.520 m -269.177 131.520 l +48.240 131.760 m +269.177 131.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 93.960 m -269.177 93.960 l +48.240 94.200 m +269.177 94.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 131.770 m -48.240 93.710 l +48.240 132.010 m +48.240 93.950 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 131.770 m -269.177 93.710 l +269.177 132.010 m +269.177 93.950 l S [ ] 0 d 1 w @@ -32387,19 +38082,19 @@ S 0.200 0.200 0.200 scn BT -51.24 115.27300000000021 Td +51.24 115.5130000000001 Td /F2.0 10.5 Tf -<6173426967496e7465676572> Tj +<6a736f6e4f626a656374> Tj ET BT -51.24 100.99300000000021 Td +51.24 101.2330000000001 Td ET BT -51.24 100.99300000000021 Td +51.24 101.2330000000001 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -32407,26 +38102,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 131.520 m -563.760 131.520 l +269.177 131.760 m +563.760 131.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 93.960 m -563.760 93.960 l +269.177 94.200 m +563.760 94.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 131.770 m -269.177 93.710 l +269.177 132.010 m +269.177 93.950 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 131.770 m -563.760 93.710 l +563.760 132.010 m +563.760 93.950 l S [ ] 0 d 1 w @@ -32434,34 +38129,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 108.13300000000021 Td +272.17692192000004 108.3730000000001 Td /F1.0 10.5 Tf -<696e7465676572> Tj +<626f6f6c65616e> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 93.960 m -269.177 93.960 l +48.240 94.200 m +269.177 94.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 56.400 m -269.177 56.400 l +48.240 56.640 m +269.177 56.640 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 94.210 m -48.240 56.150 l +48.240 94.450 m +48.240 56.390 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 94.210 m -269.177 56.150 l +269.177 94.450 m +269.177 56.390 l S [ ] 0 d 1 w @@ -32469,19 +38164,19 @@ S 0.200 0.200 0.200 scn BT -51.24 77.7130000000002 Td +51.24 77.95300000000016 Td /F2.0 10.5 Tf -<6173426f6f6c65616e> Tj +<6a736f6e5072696d6974697665> Tj ET BT -51.24 63.433000000000206 Td +51.24 63.67300000000016 Td ET BT -51.24 63.433000000000206 Td +51.24 63.67300000000016 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -32489,26 +38184,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 93.960 m -563.760 93.960 l +269.177 94.200 m +563.760 94.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 56.400 m -563.760 56.400 l +269.177 56.640 m +563.760 56.640 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 94.210 m -269.177 56.150 l +269.177 94.450 m +269.177 56.390 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 94.210 m -563.760 56.150 l +563.760 94.450 m +563.760 56.390 l S [ ] 0 d 1 w @@ -32516,7 +38211,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 70.5730000000002 Td +272.17692192000004 70.81300000000016 Td /F1.0 10.5 Tf <626f6f6c65616e> Tj ET @@ -32536,7 +38231,7 @@ q BT 49.24 14.388 Td /F1.0 9 Tf -<3230> Tj +<3234> Tj ET 0.000 0.000 0.000 SCN @@ -32546,251 +38241,246 @@ Q endstream endobj -239 0 obj +283 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 238 0 R +/Contents 282 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 22 0 R -/F3.0 24 0 R +/Font << /F2.0 24 0 R +/F3.0 26 0 R /F1.0 8 0 R >> -/XObject << /Stamp1 588 0 R +/XObject << /Stamp1 684 0 R >> >> -/Annots [240 0 R 241 0 R 242 0 R 243 0 R 244 0 R] +/Annots [284 0 R 285 0 R 286 0 R 287 0 R 288 0 R] >> endobj -240 0 obj +284 0 obj << /Border [0 0 0] /Dest (_jsonarray) /Subtype /Link -/Rect [272.17692192000004 668.7070000000001 322.17751176375003 682.9870000000001] +/Rect [272.17692192000004 480.9069999999999 322.17751176375003 495.18699999999995] /Type /Annot >> endobj -241 0 obj +285 0 obj << /Border [0 0 0] /Dest (_jsonnull) /Subtype /Link -/Rect [272.17692192000004 631.147 314.65992192000004 645.427] +/Rect [272.17692192000004 443.3469999999999 314.65992192000004 457.62699999999995] /Type /Annot >> endobj -242 0 obj +286 0 obj << /Border [0 0 0] /Dest (_jsonobject) /Subtype /Link -/Rect [272.17692192000004 593.587 325.32792192000005 607.867] +/Rect [272.17692192000004 405.7869999999999 325.32792192000005 420.06699999999995] /Type /Annot >> endobj -243 0 obj +287 0 obj << /Border [0 0 0] /Dest (_jsonprimitive) /Subtype /Link -/Rect [272.17692192000004 556.027 340.1224219200001 570.307] +/Rect [272.17692192000004 368.2269999999999 340.1224219200001 382.50699999999995] /Type /Annot >> endobj -244 0 obj +288 0 obj << /Border [0 0 0] /Dest (_number) /Subtype /Link -/Rect [272.17692192000004 480.907 313.75692192 495.187] +/Rect [272.17692192000004 293.1069999999999 313.75692192 307.38699999999994] /Type /Annot >> endobj -245 0 obj -[239 0 R /XYZ 0 232.44000000000023 null] -endobj -246 0 obj -<< /Limits [(_externalcomponent) (_parameters_12)] -/Names [(_externalcomponent) 216 0 R (_externalcomponentstate) 218 0 R (_jsonarray) 221 0 R (_jsonnull) 229 0 R (_jsonobject) 237 0 R (_jsonprimitive) 245 0 R (_loop) 256 0 R (_loopelementmodel) 266 0 R (_looplog) 269 0 R (_looptemplate) 273 0 R (_looptemplateloopelementmodel) 278 0 R (_microservicepolicy) 281 0 R (_number) 289 0 R (_operationalpolicy) 290 0 R (_overview) 19 0 R (_parameters) 44 0 R (_parameters_10) 107 0 R (_parameters_11) 114 0 R (_parameters_12) 120 0 R] ->> -endobj -247 0 obj -<< /Length 22690 +289 0 obj +<< /Length 21594 >> stream q /DeviceRGB cs +0.200 0.200 0.200 scn +/DeviceRGB CS +0.200 0.200 0.200 SCN + +BT +48.24 734.976 Td +/F2.0 18 Tf +<332e31302e204a736f6e5072696d6974697665> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 732.720 220.937 23.280 re +48.240 695.040 220.937 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -269.177 732.720 294.583 23.280 re +269.177 695.040 294.583 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 695.160 220.937 37.560 re +48.240 657.480 220.937 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -269.177 695.160 294.583 37.560 re +269.177 657.480 294.583 37.560 re f 0.000 0.000 0.000 scn 0.976 0.976 0.976 scn -48.240 657.600 220.937 37.560 re +48.240 619.920 220.937 37.560 re f 0.000 0.000 0.000 scn 0.976 0.976 0.976 scn -269.177 657.600 294.583 37.560 re +269.177 619.920 294.583 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 620.040 220.937 37.560 re +48.240 582.360 220.937 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -269.177 620.040 294.583 37.560 re +269.177 582.360 294.583 37.560 re f 0.000 0.000 0.000 scn 0.976 0.976 0.976 scn -48.240 582.480 220.937 37.560 re +48.240 544.800 220.937 37.560 re f 0.000 0.000 0.000 scn 0.976 0.976 0.976 scn -269.177 582.480 294.583 37.560 re +269.177 544.800 294.583 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 544.920 220.937 37.560 re +48.240 507.240 220.937 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -269.177 544.920 294.583 37.560 re +269.177 507.240 294.583 37.560 re f 0.000 0.000 0.000 scn 0.976 0.976 0.976 scn -48.240 507.360 220.937 37.560 re +48.240 469.680 220.937 37.560 re f 0.000 0.000 0.000 scn 0.976 0.976 0.976 scn -269.177 507.360 294.583 37.560 re +269.177 469.680 294.583 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 469.800 220.937 37.560 re +48.240 432.120 220.937 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -269.177 469.800 294.583 37.560 re +269.177 432.120 294.583 37.560 re f 0.000 0.000 0.000 scn 0.976 0.976 0.976 scn -48.240 432.240 220.937 37.560 re +48.240 394.560 220.937 37.560 re f 0.000 0.000 0.000 scn 0.976 0.976 0.976 scn -269.177 432.240 294.583 37.560 re +269.177 394.560 294.583 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 394.680 220.937 37.560 re +48.240 357.000 220.937 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -269.177 394.680 294.583 37.560 re +269.177 357.000 294.583 37.560 re f 0.000 0.000 0.000 scn 0.976 0.976 0.976 scn -48.240 357.120 220.937 37.560 re +48.240 319.440 220.937 37.560 re f 0.000 0.000 0.000 scn 0.976 0.976 0.976 scn -269.177 357.120 294.583 37.560 re +269.177 319.440 294.583 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 319.560 220.937 37.560 re +48.240 281.880 220.937 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -269.177 319.560 294.583 37.560 re +269.177 281.880 294.583 37.560 re f 0.000 0.000 0.000 scn 0.976 0.976 0.976 scn -48.240 282.000 220.937 37.560 re +48.240 244.320 220.937 37.560 re f 0.000 0.000 0.000 scn 0.976 0.976 0.976 scn -269.177 282.000 294.583 37.560 re +269.177 244.320 294.583 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 244.440 220.937 37.560 re +48.240 206.760 220.937 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -269.177 244.440 294.583 37.560 re +269.177 206.760 294.583 37.560 re f 0.000 0.000 0.000 scn 0.976 0.976 0.976 scn -48.240 206.880 220.937 37.560 re +48.240 169.200 220.937 37.560 re f 0.000 0.000 0.000 scn 0.976 0.976 0.976 scn -269.177 206.880 294.583 37.560 re +269.177 169.200 294.583 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 169.320 220.937 37.560 re +48.240 131.640 220.937 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -269.177 169.320 294.583 37.560 re +269.177 131.640 294.583 37.560 re f 0.000 0.000 0.000 scn 0.976 0.976 0.976 scn -48.240 131.760 220.937 37.560 re +48.240 94.080 220.937 37.560 re f 0.000 0.000 0.000 scn 0.976 0.976 0.976 scn -269.177 131.760 294.583 37.560 re +269.177 94.080 294.583 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 94.200 220.937 37.560 re +48.240 56.520 220.937 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -269.177 94.200 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 56.640 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 56.640 294.583 37.560 re +269.177 56.520 294.583 37.560 re f 0.000 0.000 0.000 scn 0.5 w -/DeviceRGB CS -0.867 0.867 0.867 SCN -48.240 756.000 m -269.177 756.000 l +0.867 0.867 0.867 SCN +48.240 718.320 m +269.177 718.320 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 732.720 m -269.177 732.720 l +48.240 695.040 m +269.177 695.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 756.250 m -48.240 731.970 l +48.240 718.570 m +48.240 694.290 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 756.250 m -269.177 731.970 l +269.177 718.570 m +269.177 694.290 l S [ ] 0 d 1 w @@ -32798,7 +38488,7 @@ S 0.200 0.200 0.200 scn BT -51.24 740.2529999999999 Td +51.24 702.573 Td /F2.0 10.5 Tf <4e616d65> Tj ET @@ -32806,26 +38496,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 756.000 m -563.760 756.000 l +269.177 718.320 m +563.760 718.320 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -269.177 732.720 m -563.760 732.720 l +269.177 695.040 m +563.760 695.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 756.250 m -269.177 731.970 l +269.177 718.570 m +269.177 694.290 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 756.250 m -563.760 731.970 l +563.760 718.570 m +563.760 694.290 l S [ ] 0 d 1 w @@ -32833,7 +38523,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 740.2529999999999 Td +272.17692192000004 702.573 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -32841,26 +38531,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 732.720 m -269.177 732.720 l +48.240 695.040 m +269.177 695.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 695.160 m -269.177 695.160 l +48.240 657.480 m +269.177 657.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 732.970 m -48.240 694.910 l +48.240 695.290 m +48.240 657.230 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 732.970 m -269.177 694.910 l +269.177 695.290 m +269.177 657.230 l S [ ] 0 d 1 w @@ -32868,19 +38558,19 @@ S 0.200 0.200 0.200 scn BT -51.24 716.473 Td +51.24 678.7930000000001 Td /F2.0 10.5 Tf -[<617342> 20.01953125 <797465>] TJ +<6173426967446563696d616c> Tj ET BT -51.24 702.193 Td +51.24 664.513 Td ET BT -51.24 702.193 Td +51.24 664.513 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -32888,26 +38578,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 732.720 m -563.760 732.720 l +269.177 695.040 m +563.760 695.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 695.160 m -563.760 695.160 l +269.177 657.480 m +563.760 657.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 732.970 m -269.177 694.910 l +269.177 695.290 m +269.177 657.230 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 732.970 m -563.760 694.910 l +563.760 695.290 m +563.760 657.230 l S [ ] 0 d 1 w @@ -32915,34 +38605,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 709.333 Td +272.17692192000004 671.653 Td /F1.0 10.5 Tf -[<737472696e67202862> 20.01953125 <79746529>] TJ +<6e756d626572> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 695.160 m -269.177 695.160 l +48.240 657.480 m +269.177 657.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 657.600 m -269.177 657.600 l +48.240 619.920 m +269.177 619.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 695.410 m -48.240 657.350 l +48.240 657.730 m +48.240 619.670 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 695.410 m -269.177 657.350 l +269.177 657.730 m +269.177 619.670 l S [ ] 0 d 1 w @@ -32950,19 +38640,19 @@ S 0.200 0.200 0.200 scn BT -51.24 678.913 Td +51.24 641.233 Td /F2.0 10.5 Tf -[<617343686172> 20.01953125 <6163746572>] TJ +<6173426967496e7465676572> Tj ET BT -51.24 664.633 Td +51.24 626.953 Td ET BT -51.24 664.633 Td +51.24 626.953 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -32970,26 +38660,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 695.160 m -563.760 695.160 l +269.177 657.480 m +563.760 657.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 657.600 m -563.760 657.600 l +269.177 619.920 m +563.760 619.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 695.410 m -269.177 657.350 l +269.177 657.730 m +269.177 619.670 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 695.410 m -563.760 657.350 l +563.760 657.730 m +563.760 619.670 l S [ ] 0 d 1 w @@ -32997,34 +38687,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 671.773 Td +272.17692192000004 634.093 Td /F1.0 10.5 Tf -<737472696e67> Tj +<696e7465676572> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 657.600 m -269.177 657.600 l +48.240 619.920 m +269.177 619.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 620.040 m -269.177 620.040 l +48.240 582.360 m +269.177 582.360 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 657.850 m -48.240 619.790 l +48.240 620.170 m +48.240 582.110 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 657.850 m -269.177 619.790 l +269.177 620.170 m +269.177 582.110 l S [ ] 0 d 1 w @@ -33032,19 +38722,19 @@ S 0.200 0.200 0.200 scn BT -51.24 641.3530000000001 Td +51.24 603.673 Td /F2.0 10.5 Tf -<6173446f75626c65> Tj +<6173426f6f6c65616e> Tj ET BT -51.24 627.073 Td +51.24 589.393 Td ET BT -51.24 627.073 Td +51.24 589.393 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -33052,26 +38742,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 657.600 m -563.760 657.600 l +269.177 619.920 m +563.760 619.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 620.040 m -563.760 620.040 l +269.177 582.360 m +563.760 582.360 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 657.850 m -269.177 619.790 l +269.177 620.170 m +269.177 582.110 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 657.850 m -563.760 619.790 l +563.760 620.170 m +563.760 582.110 l S [ ] 0 d 1 w @@ -33079,34 +38769,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 634.213 Td +272.17692192000004 596.533 Td /F1.0 10.5 Tf -<6e756d6265722028646f75626c6529> Tj +<626f6f6c65616e> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 620.040 m -269.177 620.040 l +48.240 582.360 m +269.177 582.360 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 582.480 m -269.177 582.480 l +48.240 544.800 m +269.177 544.800 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 620.290 m -48.240 582.230 l +48.240 582.610 m +48.240 544.550 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 620.290 m -269.177 582.230 l +269.177 582.610 m +269.177 544.550 l S [ ] 0 d 1 w @@ -33114,19 +38804,19 @@ S 0.200 0.200 0.200 scn BT -51.24 603.7930000000001 Td +51.24 566.113 Td /F2.0 10.5 Tf -<6173466c6f6174> Tj +[<617342> 20.01953125 <797465>] TJ ET BT -51.24 589.513 Td +51.24 551.833 Td ET BT -51.24 589.513 Td +51.24 551.833 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -33134,26 +38824,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 620.040 m -563.760 620.040 l +269.177 582.360 m +563.760 582.360 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 582.480 m -563.760 582.480 l +269.177 544.800 m +563.760 544.800 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 620.290 m -269.177 582.230 l +269.177 582.610 m +269.177 544.550 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 620.290 m -563.760 582.230 l +563.760 582.610 m +563.760 544.550 l S [ ] 0 d 1 w @@ -33161,34 +38851,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 596.653 Td +272.17692192000004 558.973 Td /F1.0 10.5 Tf -<6e756d6265722028666c6f617429> Tj +[<737472696e67202862> 20.01953125 <79746529>] TJ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 582.480 m -269.177 582.480 l +48.240 544.800 m +269.177 544.800 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 544.920 m -269.177 544.920 l +48.240 507.240 m +269.177 507.240 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 582.730 m -48.240 544.670 l +48.240 545.050 m +48.240 506.990 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 582.730 m -269.177 544.670 l +269.177 545.050 m +269.177 506.990 l S [ ] 0 d 1 w @@ -33196,19 +38886,19 @@ S 0.200 0.200 0.200 scn BT -51.24 566.233 Td +51.24 528.5530000000001 Td /F2.0 10.5 Tf -<6173496e74> Tj +[<617343686172> 20.01953125 <6163746572>] TJ ET BT -51.24 551.953 Td +51.24 514.273 Td ET BT -51.24 551.953 Td +51.24 514.273 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -33216,26 +38906,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 582.480 m -563.760 582.480 l +269.177 544.800 m +563.760 544.800 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 544.920 m -563.760 544.920 l +269.177 507.240 m +563.760 507.240 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 582.730 m -269.177 544.670 l +269.177 545.050 m +269.177 506.990 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 582.730 m -563.760 544.670 l +563.760 545.050 m +563.760 506.990 l S [ ] 0 d 1 w @@ -33243,34 +38933,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 559.093 Td +272.17692192000004 521.413 Td /F1.0 10.5 Tf -<696e74656765722028696e74333229> Tj +<737472696e67> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 544.920 m -269.177 544.920 l +48.240 507.240 m +269.177 507.240 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 507.360 m -269.177 507.360 l +48.240 469.680 m +269.177 469.680 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 545.170 m -48.240 507.110 l +48.240 507.490 m +48.240 469.430 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 545.170 m -269.177 507.110 l +269.177 507.490 m +269.177 469.430 l S [ ] 0 d 1 w @@ -33278,19 +38968,19 @@ S 0.200 0.200 0.200 scn BT -51.24 528.673 Td +51.24 490.993 Td /F2.0 10.5 Tf -[<61734a736f6e417272> 20.01953125 <61> 20.01953125 <79>] TJ +<6173446f75626c65> Tj ET BT -51.24 514.393 Td +51.24 476.71299999999997 Td ET BT -51.24 514.393 Td +51.24 476.71299999999997 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -33298,69 +38988,61 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 544.920 m -563.760 544.920 l +269.177 507.240 m +563.760 507.240 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 507.360 m -563.760 507.360 l +269.177 469.680 m +563.760 469.680 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 545.170 m -269.177 507.110 l +269.177 507.490 m +269.177 469.430 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 545.170 m -563.760 507.110 l +563.760 507.490 m +563.760 469.430 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -272.17692192000004 521.533 Td +272.17692192000004 483.853 Td /F1.0 10.5 Tf -[<4a736f6e417272> 20.01953125 <61> 20.01953125 <79>] TJ +<6e756d6265722028646f75626c6529> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 507.360 m -269.177 507.360 l +48.240 469.680 m +269.177 469.680 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 469.800 m -269.177 469.800 l +48.240 432.120 m +269.177 432.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 507.610 m -48.240 469.550 l +48.240 469.930 m +48.240 431.870 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 507.610 m -269.177 469.550 l +269.177 469.930 m +269.177 431.870 l S [ ] 0 d 1 w @@ -33368,19 +39050,19 @@ S 0.200 0.200 0.200 scn BT -51.24 491.113 Td +51.24 453.43300000000005 Td /F2.0 10.5 Tf -<61734a736f6e4e756c6c> Tj +<6173466c6f6174> Tj ET BT -51.24 476.83299999999997 Td +51.24 439.153 Td ET BT -51.24 476.83299999999997 Td +51.24 439.153 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -33388,69 +39070,61 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 507.360 m -563.760 507.360 l +269.177 469.680 m +563.760 469.680 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 469.800 m -563.760 469.800 l +269.177 432.120 m +563.760 432.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 507.610 m -269.177 469.550 l +269.177 469.930 m +269.177 431.870 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 507.610 m -563.760 469.550 l +563.760 469.930 m +563.760 431.870 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -272.17692192000004 483.973 Td +272.17692192000004 446.29300000000006 Td /F1.0 10.5 Tf -<4a736f6e4e756c6c> Tj +<6e756d6265722028666c6f617429> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 469.800 m -269.177 469.800 l +48.240 432.120 m +269.177 432.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 432.240 m -269.177 432.240 l +48.240 394.560 m +269.177 394.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 470.050 m -48.240 431.990 l +48.240 432.370 m +48.240 394.310 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 470.050 m -269.177 431.990 l +269.177 432.370 m +269.177 394.310 l S [ ] 0 d 1 w @@ -33458,19 +39132,19 @@ S 0.200 0.200 0.200 scn BT -51.24 453.553 Td +51.24 415.873 Td /F2.0 10.5 Tf -<61734a736f6e4f626a656374> Tj +<6173496e74> Tj ET BT -51.24 439.273 Td +51.24 401.59299999999996 Td ET BT -51.24 439.273 Td +51.24 401.59299999999996 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -33478,69 +39152,61 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 469.800 m -563.760 469.800 l +269.177 432.120 m +563.760 432.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 432.240 m -563.760 432.240 l +269.177 394.560 m +563.760 394.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 470.050 m -269.177 431.990 l +269.177 432.370 m +269.177 394.310 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 470.050 m -563.760 431.990 l +563.760 432.370 m +563.760 394.310 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -272.17692192000004 446.413 Td +272.17692192000004 408.733 Td /F1.0 10.5 Tf -<4a736f6e4f626a656374> Tj +<696e74656765722028696e74333229> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 432.240 m -269.177 432.240 l +48.240 394.560 m +269.177 394.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 394.680 m -269.177 394.680 l +48.240 357.000 m +269.177 357.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 432.490 m -48.240 394.430 l +48.240 394.810 m +48.240 356.750 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 432.490 m -269.177 394.430 l +269.177 394.810 m +269.177 356.750 l S [ ] 0 d 1 w @@ -33548,19 +39214,19 @@ S 0.200 0.200 0.200 scn BT -51.24 415.993 Td +51.24 378.313 Td /F2.0 10.5 Tf -<61734a736f6e5072696d6974697665> Tj +[<61734a736f6e417272> 20.01953125 <61> 20.01953125 <79>] TJ ET BT -51.24 401.71299999999997 Td +51.24 364.033 Td ET BT -51.24 401.71299999999997 Td +51.24 364.033 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -33568,26 +39234,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 432.240 m -563.760 432.240 l +269.177 394.560 m +563.760 394.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 394.680 m -563.760 394.680 l +269.177 357.000 m +563.760 357.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 432.490 m -269.177 394.430 l +269.177 394.810 m +269.177 356.750 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 432.490 m -563.760 394.430 l +563.760 394.810 m +563.760 356.750 l S [ ] 0 d 1 w @@ -33601,9 +39267,9 @@ S 0.259 0.545 0.792 SCN BT -272.17692192000004 408.853 Td +272.17692192000004 371.173 Td /F1.0 10.5 Tf -<4a736f6e5072696d6974697665> Tj +[<4a736f6e417272> 20.01953125 <61> 20.01953125 <79>] TJ ET 0.000 0.000 0.000 SCN @@ -33611,26 +39277,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 394.680 m -269.177 394.680 l +48.240 357.000 m +269.177 357.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 357.120 m -269.177 357.120 l +48.240 319.440 m +269.177 319.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 394.930 m -48.240 356.870 l +48.240 357.250 m +48.240 319.190 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 394.930 m -269.177 356.870 l +269.177 357.250 m +269.177 319.190 l S [ ] 0 d 1 w @@ -33638,19 +39304,19 @@ S 0.200 0.200 0.200 scn BT -51.24 378.433 Td +51.24 340.753 Td /F2.0 10.5 Tf -<61734c6f6e67> Tj +<61734a736f6e4e756c6c> Tj ET BT -51.24 364.153 Td +51.24 326.47299999999996 Td ET BT -51.24 364.153 Td +51.24 326.47299999999996 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -33658,61 +39324,69 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 394.680 m -563.760 394.680 l +269.177 357.000 m +563.760 357.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 357.120 m -563.760 357.120 l +269.177 319.440 m +563.760 319.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 394.930 m -269.177 356.870 l +269.177 357.250 m +269.177 319.190 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 394.930 m -563.760 356.870 l +563.760 357.250 m +563.760 319.190 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT -272.17692192000004 371.293 Td +272.17692192000004 333.613 Td /F1.0 10.5 Tf -<696e74656765722028696e74363429> Tj +<4a736f6e4e756c6c> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 357.120 m -269.177 357.120 l +48.240 319.440 m +269.177 319.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 319.560 m -269.177 319.560 l +48.240 281.880 m +269.177 281.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 357.370 m -48.240 319.310 l +48.240 319.690 m +48.240 281.630 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 357.370 m -269.177 319.310 l +269.177 319.690 m +269.177 281.630 l S [ ] 0 d 1 w @@ -33720,19 +39394,19 @@ S 0.200 0.200 0.200 scn BT -51.24 340.873 Td +51.24 303.193 Td /F2.0 10.5 Tf -<61734e756d626572> Tj +<61734a736f6e4f626a656374> Tj ET BT -51.24 326.59299999999996 Td +51.24 288.913 Td ET BT -51.24 326.59299999999996 Td +51.24 288.913 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -33740,26 +39414,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 357.120 m -563.760 357.120 l +269.177 319.440 m +563.760 319.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 319.560 m -563.760 319.560 l +269.177 281.880 m +563.760 281.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 357.370 m -269.177 319.310 l +269.177 319.690 m +269.177 281.630 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 357.370 m -563.760 319.310 l +563.760 319.690 m +563.760 281.630 l S [ ] 0 d 1 w @@ -33773,9 +39447,9 @@ S 0.259 0.545 0.792 SCN BT -272.17692192000004 333.733 Td +272.17692192000004 296.053 Td /F1.0 10.5 Tf -<4e756d626572> Tj +<4a736f6e4f626a656374> Tj ET 0.000 0.000 0.000 SCN @@ -33783,26 +39457,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 319.560 m -269.177 319.560 l +48.240 281.880 m +269.177 281.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 282.000 m -269.177 282.000 l +48.240 244.320 m +269.177 244.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 319.810 m -48.240 281.750 l +48.240 282.130 m +48.240 244.070 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 319.810 m -269.177 281.750 l +269.177 282.130 m +269.177 244.070 l S [ ] 0 d 1 w @@ -33810,19 +39484,19 @@ S 0.200 0.200 0.200 scn BT -51.24 303.31299999999993 Td +51.24 265.633 Td /F2.0 10.5 Tf -<617353686f7274> Tj +<61734a736f6e5072696d6974697665> Tj ET BT -51.24 289.0329999999999 Td +51.24 251.35299999999998 Td ET BT -51.24 289.0329999999999 Td +51.24 251.35299999999998 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -33830,143 +39504,69 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 319.560 m -563.760 319.560 l +269.177 281.880 m +563.760 281.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 282.000 m -563.760 282.000 l +269.177 244.320 m +563.760 244.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 319.810 m -269.177 281.750 l +269.177 282.130 m +269.177 244.070 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 319.810 m -563.760 281.750 l +563.760 282.130 m +563.760 244.070 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn - -BT -272.17692192000004 296.17299999999994 Td -/F1.0 10.5 Tf -<696e74656765722028696e74333229> Tj -ET - -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -48.240 282.000 m -269.177 282.000 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -48.240 244.440 m -269.177 244.440 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -48.240 282.250 m -48.240 244.190 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -269.177 282.250 m -269.177 244.190 l -S -[ ] 0 d -1 w +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT -51.24 265.753 Td -/F2.0 10.5 Tf -<6173537472696e67> Tj -ET - - -BT -51.24 251.47299999999998 Td -ET - - -BT -51.24 251.47299999999998 Td -/F3.0 10.5 Tf -<6f7074696f6e616c> Tj +272.17692192000004 258.493 Td +/F1.0 10.5 Tf +<4a736f6e5072696d6974697665> Tj ET -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -269.177 282.000 m -563.760 282.000 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -269.177 244.440 m -563.760 244.440 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -269.177 282.250 m -269.177 244.190 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -563.760 282.250 m -563.760 244.190 l -S -[ ] 0 d -1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn - -BT -272.17692192000004 258.613 Td -/F1.0 10.5 Tf -<737472696e67> Tj -ET - 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 244.440 m -269.177 244.440 l +48.240 244.320 m +269.177 244.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 206.880 m -269.177 206.880 l +48.240 206.760 m +269.177 206.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 244.690 m -48.240 206.630 l +48.240 244.570 m +48.240 206.510 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 244.690 m -269.177 206.630 l +269.177 244.570 m +269.177 206.510 l S [ ] 0 d 1 w @@ -33974,19 +39574,19 @@ S 0.200 0.200 0.200 scn BT -51.24 228.19300000000007 Td +51.24 228.073 Td /F2.0 10.5 Tf -<626f6f6c65616e> Tj +<61734c6f6e67> Tj ET BT -51.24 213.91300000000007 Td +51.24 213.793 Td ET BT -51.24 213.91300000000007 Td +51.24 213.793 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -33994,26 +39594,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 244.440 m -563.760 244.440 l +269.177 244.320 m +563.760 244.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 206.880 m -563.760 206.880 l +269.177 206.760 m +563.760 206.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 244.690 m -269.177 206.630 l +269.177 244.570 m +269.177 206.510 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 244.690 m -563.760 206.630 l +563.760 244.570 m +563.760 206.510 l S [ ] 0 d 1 w @@ -34021,34 +39621,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 221.05300000000005 Td +272.17692192000004 220.933 Td /F1.0 10.5 Tf -<626f6f6c65616e> Tj +<696e74656765722028696e74363429> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 206.880 m -269.177 206.880 l +48.240 206.760 m +269.177 206.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 169.320 m -269.177 169.320 l +48.240 169.200 m +269.177 169.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 207.130 m -48.240 169.070 l +48.240 207.010 m +48.240 168.950 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 207.130 m -269.177 169.070 l +269.177 207.010 m +269.177 168.950 l S [ ] 0 d 1 w @@ -34056,19 +39656,19 @@ S 0.200 0.200 0.200 scn BT -51.24 190.63300000000012 Td +51.24 190.513 Td /F2.0 10.5 Tf -[<6a736f6e417272> 20.01953125 <61> 20.01953125 <79>] TJ +<61734e756d626572> Tj ET BT -51.24 176.35300000000012 Td +51.24 176.233 Td ET BT -51.24 176.35300000000012 Td +51.24 176.233 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -34076,61 +39676,69 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 206.880 m -563.760 206.880 l +269.177 206.760 m +563.760 206.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 169.320 m -563.760 169.320 l +269.177 169.200 m +563.760 169.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 207.130 m -269.177 169.070 l +269.177 207.010 m +269.177 168.950 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 207.130 m -563.760 169.070 l +563.760 207.010 m +563.760 168.950 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT -272.17692192000004 183.4930000000001 Td +272.17692192000004 183.373 Td /F1.0 10.5 Tf -<626f6f6c65616e> Tj +<4e756d626572> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 169.320 m -269.177 169.320 l +48.240 169.200 m +269.177 169.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 131.760 m -269.177 131.760 l +48.240 131.640 m +269.177 131.640 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 169.570 m -48.240 131.510 l +48.240 169.450 m +48.240 131.390 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 169.570 m -269.177 131.510 l +269.177 169.450 m +269.177 131.390 l S [ ] 0 d 1 w @@ -34138,19 +39746,19 @@ S 0.200 0.200 0.200 scn BT -51.24 153.07300000000018 Td +51.24 152.95299999999995 Td /F2.0 10.5 Tf -<6a736f6e4e756c6c> Tj +<617353686f7274> Tj ET BT -51.24 138.79300000000018 Td +51.24 138.67299999999994 Td ET BT -51.24 138.79300000000018 Td +51.24 138.67299999999994 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -34158,26 +39766,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 169.320 m -563.760 169.320 l +269.177 169.200 m +563.760 169.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 131.760 m -563.760 131.760 l +269.177 131.640 m +563.760 131.640 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 169.570 m -269.177 131.510 l +269.177 169.450 m +269.177 131.390 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 169.570 m -563.760 131.510 l +563.760 169.450 m +563.760 131.390 l S [ ] 0 d 1 w @@ -34185,34 +39793,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 145.93300000000016 Td +272.17692192000004 145.81299999999993 Td /F1.0 10.5 Tf -<626f6f6c65616e> Tj +<696e74656765722028696e74333229> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 131.760 m -269.177 131.760 l +48.240 131.640 m +269.177 131.640 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 94.200 m -269.177 94.200 l +48.240 94.080 m +269.177 94.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 132.010 m -48.240 93.950 l +48.240 131.890 m +48.240 93.830 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 132.010 m -269.177 93.950 l +269.177 131.890 m +269.177 93.830 l S [ ] 0 d 1 w @@ -34220,19 +39828,19 @@ S 0.200 0.200 0.200 scn BT -51.24 115.51300000000022 Td +51.24 115.39299999999999 Td /F2.0 10.5 Tf -<6a736f6e4f626a656374> Tj +<6173537472696e67> Tj ET BT -51.24 101.23300000000022 Td +51.24 101.11299999999999 Td ET BT -51.24 101.23300000000022 Td +51.24 101.11299999999999 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -34240,26 +39848,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 131.760 m -563.760 131.760 l +269.177 131.640 m +563.760 131.640 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 94.200 m -563.760 94.200 l +269.177 94.080 m +563.760 94.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 132.010 m -269.177 93.950 l +269.177 131.890 m +269.177 93.830 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 132.010 m -563.760 93.950 l +563.760 131.890 m +563.760 93.830 l S [ ] 0 d 1 w @@ -34267,34 +39875,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 108.37300000000022 Td +272.17692192000004 108.25299999999999 Td /F1.0 10.5 Tf -<626f6f6c65616e> Tj +<737472696e67> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 94.200 m -269.177 94.200 l +48.240 94.080 m +269.177 94.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 56.640 m -269.177 56.640 l +48.240 56.520 m +269.177 56.520 l S [ ] 0 d 0.5 w -0.867 0.867 0.867 SCN -48.240 94.450 m -48.240 56.390 l +0.867 0.867 0.867 SCN +48.240 94.330 m +48.240 56.270 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 94.450 m -269.177 56.390 l +269.177 94.330 m +269.177 56.270 l S [ ] 0 d 1 w @@ -34302,19 +39910,19 @@ S 0.200 0.200 0.200 scn BT -51.24 77.95300000000027 Td +51.24 77.83300000000004 Td /F2.0 10.5 Tf -<6a736f6e5072696d6974697665> Tj +<626f6f6c65616e> Tj ET BT -51.24 63.67300000000027 Td +51.24 63.55300000000004 Td ET BT -51.24 63.67300000000027 Td +51.24 63.55300000000004 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -34322,26 +39930,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 94.200 m -563.760 94.200 l +269.177 94.080 m +563.760 94.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 56.640 m -563.760 56.640 l +269.177 56.520 m +563.760 56.520 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 94.450 m -269.177 56.390 l +269.177 94.330 m +269.177 56.270 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 94.450 m -563.760 56.390 l +563.760 94.330 m +563.760 56.270 l S [ ] 0 d 1 w @@ -34349,7 +39957,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 70.81300000000027 Td +272.17692192000004 70.69300000000004 Td /F1.0 10.5 Tf <626f6f6c65616e> Tj ET @@ -34369,7 +39977,7 @@ q BT 552.698 14.388 Td /F1.0 9 Tf -<3231> Tj +<3235> Tj ET 0.000 0.000 0.000 SCN @@ -34379,64 +39987,67 @@ Q endstream endobj -248 0 obj +290 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 247 0 R +/Contents 289 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 22 0 R -/F3.0 24 0 R +/Font << /F2.0 24 0 R +/F3.0 26 0 R /F1.0 8 0 R >> -/XObject << /Stamp1 588 0 R +/XObject << /Stamp1 684 0 R >> >> -/Annots [249 0 R 250 0 R 251 0 R 252 0 R 253 0 R] +/Annots [292 0 R 293 0 R 294 0 R 295 0 R 296 0 R] >> endobj -249 0 obj +291 0 obj +[290 0 R /XYZ 0 792.0 null] +endobj +292 0 obj << /Border [0 0 0] /Dest (_jsonarray) /Subtype /Link -/Rect [272.17692192000004 518.4670000000001 322.17751176375003 532.7470000000001] +/Rect [272.17692192000004 368.10699999999997 322.17751176375003 382.387] /Type /Annot >> endobj -250 0 obj +293 0 obj << /Border [0 0 0] /Dest (_jsonnull) /Subtype /Link -/Rect [272.17692192000004 480.907 314.65992192000004 495.187] +/Rect [272.17692192000004 330.54699999999997 314.65992192000004 344.827] /Type /Annot >> endobj -251 0 obj +294 0 obj << /Border [0 0 0] /Dest (_jsonobject) /Subtype /Link -/Rect [272.17692192000004 443.347 325.32792192000005 457.627] +/Rect [272.17692192000004 292.98699999999997 325.32792192000005 307.267] /Type /Annot >> endobj -252 0 obj +295 0 obj << /Border [0 0 0] /Dest (_jsonprimitive) /Subtype /Link -/Rect [272.17692192000004 405.787 340.1224219200001 420.067] +/Rect [272.17692192000004 255.427 340.1224219200001 269.707] /Type /Annot >> endobj -253 0 obj +296 0 obj << /Border [0 0 0] /Dest (_number) /Subtype /Link -/Rect [272.17692192000004 330.667 313.75692192 344.947] +/Rect [272.17692192000004 180.30700000000002 313.75692192 194.587] /Type /Annot >> endobj -254 0 obj -<< /Length 23337 +297 0 obj +<< /Length 22743 >> stream q @@ -34465,6 +40076,38 @@ f 269.177 657.600 294.583 37.560 re f 0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 620.040 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 620.040 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 582.480 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 582.480 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 544.920 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 544.920 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 507.360 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 507.360 294.583 37.560 re +f +0.000 0.000 0.000 scn 0.5 w /DeviceRGB CS 0.867 0.867 0.867 SCN @@ -34567,7 +40210,7 @@ S BT 51.24 716.473 Td /F2.0 10.5 Tf -<6e756d626572> Tj +[<6a736f6e417272> 20.01953125 <61> 20.01953125 <79>] TJ ET @@ -34649,7 +40292,7 @@ S BT 51.24 678.913 Td /F2.0 10.5 Tf -<737472696e67> Tj +<6a736f6e4e756c6c> Tj ET @@ -34699,160 +40342,29 @@ BT <626f6f6c65616e> Tj ET -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -48.24 622.1760000000002 Td -/F2.0 18 Tf -<332e31302e204c6f6f70> Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 582.240 220.937 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 582.240 294.583 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 544.680 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 544.680 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 507.120 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 507.120 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 469.560 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 469.560 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 432.000 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 432.000 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 394.440 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 394.440 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 356.880 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 356.880 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 319.320 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 319.320 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 281.760 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 281.760 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 244.200 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 244.200 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 206.640 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 206.640 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 169.080 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 169.080 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 131.520 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 131.520 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 93.960 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 93.960 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 56.400 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 56.400 294.583 37.560 re -f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 605.520 m -269.177 605.520 l +48.240 657.600 m +269.177 657.600 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -48.240 582.240 m -269.177 582.240 l +48.240 620.040 m +269.177 620.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 605.770 m -48.240 581.490 l +48.240 657.850 m +48.240 619.790 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 605.770 m -269.177 581.490 l +269.177 657.850 m +269.177 619.790 l S [ ] 0 d 1 w @@ -34860,34 +40372,46 @@ S 0.200 0.200 0.200 scn BT -51.24 589.7730000000001 Td +51.24 641.3530000000001 Td /F2.0 10.5 Tf -<4e616d65> Tj +<6a736f6e4f626a656374> Tj +ET + + +BT +51.24 627.0730000000001 Td +ET + + +BT +51.24 627.0730000000001 Td +/F3.0 10.5 Tf +<6f7074696f6e616c> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 605.520 m -563.760 605.520 l +269.177 657.600 m +563.760 657.600 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -269.177 582.240 m -563.760 582.240 l +269.177 620.040 m +563.760 620.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 605.770 m -269.177 581.490 l +269.177 657.850 m +269.177 619.790 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 605.770 m -563.760 581.490 l +563.760 657.850 m +563.760 619.790 l S [ ] 0 d 1 w @@ -34895,34 +40419,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 589.7730000000001 Td -/F2.0 10.5 Tf -<536368656d61> Tj +272.17692192000004 634.2130000000001 Td +/F1.0 10.5 Tf +<626f6f6c65616e> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 582.240 m -269.177 582.240 l +48.240 620.040 m +269.177 620.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 544.680 m -269.177 544.680 l +48.240 582.480 m +269.177 582.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 582.490 m -48.240 544.430 l +48.240 620.290 m +48.240 582.230 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 582.490 m -269.177 544.430 l +269.177 620.290 m +269.177 582.230 l S [ ] 0 d 1 w @@ -34930,19 +40454,19 @@ S 0.200 0.200 0.200 scn BT -51.24 565.9930000000002 Td +51.24 603.7930000000001 Td /F2.0 10.5 Tf -<636f6d706f6e656e7473> Tj +<6a736f6e5072696d6974697665> Tj ET BT -51.24 551.7130000000002 Td +51.24 589.5130000000001 Td ET BT -51.24 551.7130000000002 Td +51.24 589.5130000000001 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -34950,83 +40474,61 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 582.240 m -563.760 582.240 l +269.177 620.040 m +563.760 620.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 544.680 m -563.760 544.680 l +269.177 582.480 m +563.760 582.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 582.490 m -269.177 544.430 l +269.177 620.290 m +269.177 582.230 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 582.490 m -563.760 544.430 l +563.760 620.290 m +563.760 582.230 l S [ ] 0 d 1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn - -BT -272.17692192000004 558.8530000000002 Td -/F1.0 10.5 Tf -<3c20737472696e672c20> Tj -ET - -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN - -BT -315.25842192000005 558.8530000000002 Td -/F1.0 10.5 Tf -<45787465726e616c436f6d706f6e656e74> Tj -ET - 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn BT -415.81692192 558.8530000000002 Td +272.17692192000004 596.6530000000001 Td /F1.0 10.5 Tf -<203e206d6170> Tj +<626f6f6c65616e> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 544.680 m -269.177 544.680 l +48.240 582.480 m +269.177 582.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 507.120 m -269.177 507.120 l +48.240 544.920 m +269.177 544.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 544.930 m -48.240 506.870 l +48.240 582.730 m +48.240 544.670 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 544.930 m -269.177 506.870 l +269.177 582.730 m +269.177 544.670 l S [ ] 0 d 1 w @@ -35034,19 +40536,19 @@ S 0.200 0.200 0.200 scn BT -51.24 528.4330000000002 Td +51.24 566.2330000000002 Td /F2.0 10.5 Tf -[<6372656174656442> 20.01953125 <79>] TJ +<6e756d626572> Tj ET BT -51.24 514.1530000000001 Td +51.24 551.9530000000002 Td ET BT -51.24 514.1530000000001 Td +51.24 551.9530000000002 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -35054,26 +40556,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 544.680 m -563.760 544.680 l +269.177 582.480 m +563.760 582.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 507.120 m -563.760 507.120 l +269.177 544.920 m +563.760 544.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 544.930 m -269.177 506.870 l +269.177 582.730 m +269.177 544.670 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 544.930 m -563.760 506.870 l +563.760 582.730 m +563.760 544.670 l S [ ] 0 d 1 w @@ -35081,34 +40583,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 521.2930000000001 Td +272.17692192000004 559.0930000000002 Td /F1.0 10.5 Tf -<737472696e67> Tj +<626f6f6c65616e> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 507.120 m -269.177 507.120 l +48.240 544.920 m +269.177 544.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 469.560 m -269.177 469.560 l +48.240 507.360 m +269.177 507.360 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 507.370 m -48.240 469.310 l +48.240 545.170 m +48.240 507.110 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 507.370 m -269.177 469.310 l +269.177 545.170 m +269.177 507.110 l S [ ] 0 d 1 w @@ -35116,19 +40618,19 @@ S 0.200 0.200 0.200 scn BT -51.24 490.8730000000002 Td +51.24 528.6730000000002 Td /F2.0 10.5 Tf -<6372656174656444617465> Tj +<737472696e67> Tj ET BT -51.24 476.5930000000002 Td +51.24 514.3930000000003 Td ET BT -51.24 476.5930000000002 Td +51.24 514.3930000000003 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -35136,26 +40638,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 507.120 m -563.760 507.120 l +269.177 544.920 m +563.760 544.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 469.560 m -563.760 469.560 l +269.177 507.360 m +563.760 507.360 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 507.370 m -269.177 469.310 l +269.177 545.170 m +269.177 507.110 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 507.370 m -563.760 469.310 l +563.760 545.170 m +563.760 507.110 l S [ ] 0 d 1 w @@ -35163,19 +40665,118 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 483.73300000000023 Td +272.17692192000004 521.5330000000002 Td /F1.0 10.5 Tf -<696e74656765722028696e74363429> Tj +<626f6f6c65616e> Tj +ET + +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24 471.9360000000003 Td +/F2.0 18 Tf +<332e31312e204c6f6f70> Tj ET +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 432.000 220.937 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 432.000 294.583 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 394.440 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 394.440 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 356.880 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 356.880 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 319.320 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 319.320 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 281.760 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 281.760 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 244.200 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 244.200 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 206.640 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 206.640 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 169.080 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 169.080 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 131.520 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 131.520 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 93.960 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 93.960 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 56.400 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 56.400 294.583 37.560 re +f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 469.560 m -269.177 469.560 l +48.240 455.280 m +269.177 455.280 l S [ ] 0 d -0.5 w +1.5 w 0.867 0.867 0.867 SCN 48.240 432.000 m 269.177 432.000 l @@ -35183,14 +40784,14 @@ S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 469.810 m -48.240 431.750 l +48.240 455.530 m +48.240 431.250 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 469.810 m -269.177 431.750 l +269.177 455.530 m +269.177 431.250 l S [ ] 0 d 1 w @@ -35198,31 +40799,19 @@ S 0.200 0.200 0.200 scn BT -51.24 453.31300000000016 Td +51.24 439.53300000000024 Td /F2.0 10.5 Tf -[<646361654465706c6f> 20.01953125 <796d656e744964>] TJ -ET - - -BT -51.24 439.03300000000013 Td -ET - - -BT -51.24 439.03300000000013 Td -/F3.0 10.5 Tf -<6f7074696f6e616c> Tj +<4e616d65> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 469.560 m -563.760 469.560 l +269.177 455.280 m +563.760 455.280 l S [ ] 0 d -0.5 w +1.5 w 0.867 0.867 0.867 SCN 269.177 432.000 m 563.760 432.000 l @@ -35230,14 +40819,14 @@ S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 469.810 m -269.177 431.750 l +269.177 455.530 m +269.177 431.250 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 469.810 m -563.760 431.750 l +563.760 455.530 m +563.760 431.250 l S [ ] 0 d 1 w @@ -35245,9 +40834,9 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 446.1730000000002 Td -/F1.0 10.5 Tf -<737472696e67> Tj +272.17692192000004 439.53300000000024 Td +/F2.0 10.5 Tf +<536368656d61> Tj ET 0.000 0.000 0.000 scn @@ -35282,7 +40871,7 @@ S BT 51.24 415.7530000000002 Td /F2.0 10.5 Tf -[<646361654465706c6f> 20.01953125 <796d656e7453746174757355726c>] TJ +<636f6d706f6e656e7473> Tj ET @@ -35325,11 +40914,33 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn BT 272.17692192000004 408.6130000000002 Td /F1.0 10.5 Tf -<737472696e67> Tj +<3c20737472696e672c20> Tj +ET + +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN + +BT +315.25842192000005 408.6130000000002 Td +/F1.0 10.5 Tf +<45787465726e616c436f6d706f6e656e74> Tj +ET + +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +415.81692192 408.6130000000002 Td +/F1.0 10.5 Tf +<203e206d6170> Tj ET 0.000 0.000 0.000 scn @@ -35362,19 +40973,19 @@ S 0.200 0.200 0.200 scn BT -51.24 378.19300000000015 Td +51.24 378.19300000000027 Td /F2.0 10.5 Tf -<676c6f62616c50726f706572746965734a736f6e> Tj +[<6372656174656442> 20.01953125 <79>] TJ ET BT -51.24 363.9130000000001 Td +51.24 363.91300000000024 Td ET BT -51.24 363.9130000000001 Td +51.24 363.91300000000024 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -35407,21 +41018,13 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -272.17692192000004 371.05300000000017 Td +272.17692192000004 371.0530000000003 Td /F1.0 10.5 Tf -<4a736f6e4f626a656374> Tj +<737472696e67> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -35454,7 +41057,7 @@ S BT 51.24 340.6330000000002 Td /F2.0 10.5 Tf -<6c617374436f6d70757465645374617465> Tj +<6372656174656444617465> Tj ET @@ -35499,16 +41102,9 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 340.6330000000002 Td -/F1.0 10.5 Tf -[<656e756d202844455349474e2c205355424d49545445442c204445504c4f> 29.78515625 <5945442c2052> 9.765625 <554e4e494e472c>] TJ -ET - - -BT -272.17692192000004 326.3530000000002 Td +272.17692192000004 333.4930000000002 Td /F1.0 10.5 Tf -[<53> 20.01953125 <54> 20.01953125 <4f505045442c20494e5f455252> 20.01953125 <4f522c2057> 60.05859375 <414954494e4729>] TJ +<696e74656765722028696e74363429> Tj ET 0.000 0.000 0.000 scn @@ -35541,19 +41137,19 @@ S 0.200 0.200 0.200 scn BT -51.24 303.07300000000015 Td +51.24 303.07300000000026 Td /F2.0 10.5 Tf -<6c6f6f704c6f6773> Tj +[<646361654465706c6f> 20.01953125 <796d656e744964>] TJ ET BT -51.24 288.7930000000001 Td +51.24 288.79300000000023 Td ET BT -51.24 288.7930000000001 Td +51.24 288.79300000000023 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -35584,35 +41180,13 @@ S S [ ] 0 d 1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn - -BT -272.17692192000004 295.93300000000016 Td -/F1.0 10.5 Tf -<3c20> Tj -ET - -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN - -BT -280.76592192000004 295.93300000000016 Td -/F1.0 10.5 Tf -<4c6f6f704c6f67> Tj -ET - 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn BT -324.10992192000003 295.93300000000016 Td +272.17692192000004 295.9330000000003 Td /F1.0 10.5 Tf -[<203e20617272> 20.01953125 <61> 20.01953125 <79>] TJ +<737472696e67> Tj ET 0.000 0.000 0.000 scn @@ -35645,19 +41219,19 @@ S 0.200 0.200 0.200 scn BT -51.24 265.51300000000015 Td +51.24 265.5130000000002 Td /F2.0 10.5 Tf -[<6c6f6f7054> 29.78515625 <656d706c617465>] TJ +[<646361654465706c6f> 20.01953125 <796d656e7453746174757355726c>] TJ ET BT -51.24 251.23300000000015 Td +51.24 251.2330000000002 Td ET BT -51.24 251.23300000000015 Td +51.24 251.2330000000002 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -35690,21 +41264,13 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -272.17692192000004 258.37300000000016 Td +272.17692192000004 258.3730000000002 Td /F1.0 10.5 Tf -[<4c6f6f7054> 29.78515625 <656d706c617465>] TJ +<737472696e67> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -35735,19 +41301,19 @@ S 0.200 0.200 0.200 scn BT -51.24 227.95300000000017 Td +51.24 227.95300000000026 Td /F2.0 10.5 Tf -<6d6963726f53657276696365506f6c6963696573> Tj +<676c6f62616c50726f706572746965734a736f6e> Tj ET BT -51.24 213.67300000000017 Td +51.24 213.67300000000026 Td ET BT -51.24 213.67300000000017 Td +51.24 213.67300000000026 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -35784,31 +41350,17 @@ S 0.259 0.545 0.792 SCN 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn - -BT -272.17692192000004 220.81300000000016 Td -/F1.0 10.5 Tf -<3c20> Tj -ET - 0.259 0.545 0.792 scn 0.259 0.545 0.792 SCN BT -280.76592192000004 220.81300000000016 Td +272.17692192000004 220.81300000000024 Td /F1.0 10.5 Tf -<4d6963726f53657276696365506f6c696379> Tj +<4a736f6e4f626a656374> Tj ET 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn - -BT -376.69392192000004 220.81300000000016 Td -/F1.0 10.5 Tf -[<203e20617272> 20.01953125 <61> 20.01953125 <79>] TJ -ET - 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -35839,19 +41391,19 @@ S 0.200 0.200 0.200 scn BT -51.24 190.39300000000017 Td +51.24 190.39300000000026 Td /F2.0 10.5 Tf -<6d6f64656c53657276696365> Tj +<6c617374436f6d70757465645374617465> Tj ET BT -51.24 176.11300000000017 Td +51.24 176.11300000000026 Td ET BT -51.24 176.11300000000017 Td +51.24 176.11300000000026 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -35884,21 +41436,20 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -272.17692192000004 183.25300000000016 Td +272.17692192000004 190.39300000000026 Td /F1.0 10.5 Tf -<53657276696365> Tj +[<656e756d202844455349474e2c205355424d49545445442c204445504c4f> 29.78515625 <5945442c2052> 9.765625 <554e4e494e472c>] TJ +ET + + +BT +272.17692192000004 176.11300000000026 Td +/F1.0 10.5 Tf +[<53> 20.01953125 <54> 20.01953125 <4f505045442c20494e5f455252> 20.01953125 <4f522c2057> 60.05859375 <414954494e4729>] TJ ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -35929,19 +41480,19 @@ S 0.200 0.200 0.200 scn BT -51.24 152.83300000000017 Td +51.24 152.83300000000023 Td /F2.0 10.5 Tf -<6e616d65> Tj +<6c6f6f704c6f6773> Tj ET BT -51.24 138.55300000000017 Td +51.24 138.55300000000022 Td ET BT -51.24 138.55300000000017 Td +51.24 138.55300000000022 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -35974,11 +41525,33 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn BT -272.17692192000004 145.69300000000015 Td +272.17692192000004 145.6930000000002 Td /F1.0 10.5 Tf -<737472696e67> Tj +<3c20> Tj +ET + +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN + +BT +280.76592192000004 145.6930000000002 Td +/F1.0 10.5 Tf +<4c6f6f704c6f67> Tj +ET + +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +324.10992192000003 145.6930000000002 Td +/F1.0 10.5 Tf +[<203e20617272> 20.01953125 <61> 20.01953125 <79>] TJ ET 0.000 0.000 0.000 scn @@ -36011,19 +41584,19 @@ S 0.200 0.200 0.200 scn BT -51.24 115.27300000000015 Td +51.24 115.27300000000021 Td /F2.0 10.5 Tf -[<6f706572> 20.01953125 <6174696f6e616c506f6c6963696573>] TJ +[<6c6f6f7054> 29.78515625 <656d706c617465>] TJ ET BT -51.24 100.99300000000015 Td +51.24 100.99300000000021 Td ET BT -51.24 100.99300000000015 Td +51.24 100.99300000000021 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -36060,31 +41633,17 @@ S 0.259 0.545 0.792 SCN 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn - -BT -272.17692192000004 108.13300000000015 Td -/F1.0 10.5 Tf -<3c20> Tj -ET - 0.259 0.545 0.792 scn 0.259 0.545 0.792 SCN BT -280.76592192000004 108.13300000000015 Td +272.17692192000004 108.13300000000021 Td /F1.0 10.5 Tf -[<4f706572> 20.01953125 <6174696f6e616c506f6c696379>] TJ +[<4c6f6f7054> 29.78515625 <656d706c617465>] TJ ET 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn - -BT -370.37271684187505 108.13300000000015 Td -/F1.0 10.5 Tf -[<203e20617272> 20.01953125 <61> 20.01953125 <79>] TJ -ET - 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -36115,19 +41674,19 @@ S 0.200 0.200 0.200 scn BT -51.24 77.71300000000015 Td +51.24 77.7130000000002 Td /F2.0 10.5 Tf -<737667526570726573656e746174696f6e> Tj +<6d6963726f53657276696365506f6c6963696573> Tj ET BT -51.24 63.43300000000015 Td +51.24 63.433000000000206 Td ET BT -51.24 63.43300000000015 Td +51.24 63.433000000000206 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -36160,11 +41719,33 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn BT -272.17692192000004 70.57300000000015 Td +272.17692192000004 70.5730000000002 Td /F1.0 10.5 Tf -<737472696e67> Tj +<3c20> Tj +ET + +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN + +BT +280.76592192000004 70.5730000000002 Td +/F1.0 10.5 Tf +<4d6963726f53657276696365506f6c696379> Tj +ET + +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +376.69392192000004 70.5730000000002 Td +/F1.0 10.5 Tf +[<203e20617272> 20.01953125 <61> 20.01953125 <79>] TJ ET 0.000 0.000 0.000 scn @@ -36182,7 +41763,7 @@ q BT 49.24 14.388 Td /F1.0 9 Tf -<3232> Tj +<3236> Tj ET 0.000 0.000 0.000 SCN @@ -36192,83 +41773,67 @@ Q endstream endobj -255 0 obj +298 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 254 0 R +/Contents 297 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 22 0 R -/F3.0 24 0 R +/Font << /F2.0 24 0 R +/F3.0 26 0 R /F1.0 8 0 R >> -/XObject << /Stamp1 588 0 R +/XObject << /Stamp1 684 0 R >> >> -/Annots [257 0 R 258 0 R 259 0 R 260 0 R 261 0 R 262 0 R 263 0 R] +/Annots [300 0 R 301 0 R 302 0 R 303 0 R 304 0 R] >> endobj -256 0 obj -[255 0 R /XYZ 0 645.6000000000001 null] +299 0 obj +[298 0 R /XYZ 0 495.3600000000003 null] endobj -257 0 obj +300 0 obj << /Border [0 0 0] /Dest (_externalcomponent) /Subtype /Link -/Rect [315.25842192000005 555.7870000000003 415.81692192 570.0670000000002] +/Rect [315.25842192000005 405.5470000000002 415.81692192 419.8270000000002] /Type /Annot >> endobj -258 0 obj +301 0 obj << /Border [0 0 0] /Dest (_jsonobject) /Subtype /Link -/Rect [272.17692192000004 367.98700000000014 325.32792192000005 382.26700000000017] +/Rect [272.17692192000004 217.74700000000027 325.32792192000005 232.02700000000027] /Type /Annot >> endobj -259 0 obj +302 0 obj << /Border [0 0 0] /Dest (_looplog) /Subtype /Link -/Rect [280.76592192000004 292.86700000000013 324.10992192000003 307.14700000000016] +/Rect [280.76592192000004 142.62700000000024 324.10992192000003 156.9070000000002] /Type /Annot >> endobj -260 0 obj +303 0 obj << /Border [0 0 0] /Dest (_looptemplate) /Subtype /Link -/Rect [272.17692192000004 255.30700000000016 343.82067777937505 269.58700000000016] +/Rect [272.17692192000004 105.0670000000002 343.82067777937505 119.34700000000021] /Type /Annot >> endobj -261 0 obj +304 0 obj << /Border [0 0 0] /Dest (_microservicepolicy) /Subtype /Link -/Rect [280.76592192000004 217.74700000000018 376.69392192000004 232.02700000000016] -/Type /Annot ->> -endobj -262 0 obj -<< /Border [0 0 0] -/Dest (_service) -/Subtype /Link -/Rect [272.17692192000004 180.18700000000018 308.65392192 194.46700000000016] -/Type /Annot ->> -endobj -263 0 obj -<< /Border [0 0 0] -/Dest (_operationalpolicy) -/Subtype /Link -/Rect [280.76592192000004 105.06700000000015 370.37271684187505 119.34700000000015] +/Rect [280.76592192000004 67.5070000000002 376.69392192000004 81.7870000000002] /Type /Annot >> endobj -264 0 obj -<< /Length 20640 +305 0 obj +<< /Length 21624 >> stream q @@ -36297,6 +41862,38 @@ f 269.177 657.600 294.583 37.560 re f 0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 620.040 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 620.040 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 582.480 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 582.480 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 544.920 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 544.920 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 507.360 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 507.360 294.583 37.560 re +f +0.000 0.000 0.000 scn 0.5 w /DeviceRGB CS 0.867 0.867 0.867 SCN @@ -36399,7 +41996,7 @@ S BT 51.24 716.473 Td /F2.0 10.5 Tf -[<7570646174656442> 20.01953125 <79>] TJ +<6d6f64656c53657276696365> Tj ET @@ -36442,13 +42039,21 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT 272.17692192000004 709.333 Td /F1.0 10.5 Tf -<737472696e67> Tj +<53657276696365> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -36481,7 +42086,7 @@ S BT 51.24 678.913 Td /F2.0 10.5 Tf -<7570646174656444617465> Tj +<6e616d65> Tj ET @@ -36528,139 +42133,32 @@ S BT 272.17692192000004 671.773 Td /F1.0 10.5 Tf -<696e74656765722028696e74363429> Tj -ET - -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -48.24 622.1760000000002 Td -/F2.0 18 Tf -<332e31312e204c6f6f70456c656d656e744d6f64656c> Tj +<737472696e67> Tj ET -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 582.240 220.937 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 582.240 294.583 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 544.680 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 544.680 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 507.120 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 507.120 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 469.560 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 469.560 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 432.000 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 432.000 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 394.440 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 394.440 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 356.880 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 356.880 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 319.320 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 319.320 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 281.760 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 281.760 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 244.200 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 244.200 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 206.640 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 206.640 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 169.080 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 169.080 294.583 37.560 re -f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 605.520 m -269.177 605.520 l +48.240 657.600 m +269.177 657.600 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -48.240 582.240 m -269.177 582.240 l +48.240 620.040 m +269.177 620.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 605.770 m -48.240 581.490 l +48.240 657.850 m +48.240 619.790 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 605.770 m -269.177 581.490 l +269.177 657.850 m +269.177 619.790 l S [ ] 0 d 1 w @@ -36668,69 +42166,103 @@ S 0.200 0.200 0.200 scn BT -51.24 589.7730000000001 Td +51.24 641.3530000000001 Td /F2.0 10.5 Tf -<4e616d65> Tj +[<6f706572> 20.01953125 <6174696f6e616c506f6c6963696573>] TJ +ET + + +BT +51.24 627.0730000000001 Td +ET + + +BT +51.24 627.0730000000001 Td +/F3.0 10.5 Tf +<6f7074696f6e616c> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 605.520 m -563.760 605.520 l +269.177 657.600 m +563.760 657.600 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -269.177 582.240 m -563.760 582.240 l +269.177 620.040 m +563.760 620.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 605.770 m -269.177 581.490 l +269.177 657.850 m +269.177 619.790 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 605.770 m -563.760 581.490 l +563.760 657.850 m +563.760 619.790 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn BT -272.17692192000004 589.7730000000001 Td -/F2.0 10.5 Tf -<536368656d61> Tj +272.17692192000004 634.2130000000001 Td +/F1.0 10.5 Tf +<3c20> Tj +ET + +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN + +BT +280.76592192000004 634.2130000000001 Td +/F1.0 10.5 Tf +[<4f706572> 20.01953125 <6174696f6e616c506f6c696379>] TJ +ET + +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +370.37271684187505 634.2130000000001 Td +/F1.0 10.5 Tf +[<203e20617272> 20.01953125 <61> 20.01953125 <79>] TJ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 582.240 m -269.177 582.240 l +48.240 620.040 m +269.177 620.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 544.680 m -269.177 544.680 l +48.240 582.480 m +269.177 582.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 582.490 m -48.240 544.430 l +48.240 620.290 m +48.240 582.230 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 582.490 m -269.177 544.430 l +269.177 620.290 m +269.177 582.230 l S [ ] 0 d 1 w @@ -36738,19 +42270,19 @@ S 0.200 0.200 0.200 scn BT -51.24 565.9930000000002 Td +51.24 603.7930000000001 Td /F2.0 10.5 Tf -<626c75657072696e74> Tj +<737667526570726573656e746174696f6e> Tj ET BT -51.24 551.7130000000002 Td +51.24 589.513 Td ET BT -51.24 551.7130000000002 Td +51.24 589.513 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -36758,26 +42290,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 582.240 m -563.760 582.240 l +269.177 620.040 m +563.760 620.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 544.680 m -563.760 544.680 l +269.177 582.480 m +563.760 582.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 582.490 m -269.177 544.430 l +269.177 620.290 m +269.177 582.230 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 582.490 m -563.760 544.430 l +563.760 620.290 m +563.760 582.230 l S [ ] 0 d 1 w @@ -36785,7 +42317,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 558.8530000000002 Td +272.17692192000004 596.653 Td /F1.0 10.5 Tf <737472696e67> Tj ET @@ -36793,26 +42325,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 544.680 m -269.177 544.680 l +48.240 582.480 m +269.177 582.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 507.120 m -269.177 507.120 l +48.240 544.920 m +269.177 544.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 544.930 m -48.240 506.870 l +48.240 582.730 m +48.240 544.670 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 544.930 m -269.177 506.870 l +269.177 582.730 m +269.177 544.670 l S [ ] 0 d 1 w @@ -36820,19 +42352,19 @@ S 0.200 0.200 0.200 scn BT -51.24 528.4330000000002 Td +51.24 566.233 Td /F2.0 10.5 Tf -[<6372656174656442> 20.01953125 <79>] TJ +[<7570646174656442> 20.01953125 <79>] TJ ET BT -51.24 514.1530000000001 Td +51.24 551.953 Td ET BT -51.24 514.1530000000001 Td +51.24 551.953 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -36840,26 +42372,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 544.680 m -563.760 544.680 l +269.177 582.480 m +563.760 582.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 507.120 m -563.760 507.120 l +269.177 544.920 m +563.760 544.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 544.930 m -269.177 506.870 l +269.177 582.730 m +269.177 544.670 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 544.930 m -563.760 506.870 l +563.760 582.730 m +563.760 544.670 l S [ ] 0 d 1 w @@ -36867,7 +42399,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 521.2930000000001 Td +272.17692192000004 559.093 Td /F1.0 10.5 Tf <737472696e67> Tj ET @@ -36875,26 +42407,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 507.120 m -269.177 507.120 l +48.240 544.920 m +269.177 544.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 469.560 m -269.177 469.560 l +48.240 507.360 m +269.177 507.360 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 507.370 m -48.240 469.310 l +48.240 545.170 m +48.240 507.110 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 507.370 m -269.177 469.310 l +269.177 545.170 m +269.177 507.110 l S [ ] 0 d 1 w @@ -36902,19 +42434,19 @@ S 0.200 0.200 0.200 scn BT -51.24 490.8730000000002 Td +51.24 528.673 Td /F2.0 10.5 Tf -<6372656174656444617465> Tj +<7570646174656444617465> Tj ET BT -51.24 476.5930000000002 Td +51.24 514.393 Td ET BT -51.24 476.5930000000002 Td +51.24 514.393 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -36922,26 +42454,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 507.120 m -563.760 507.120 l +269.177 544.920 m +563.760 544.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 469.560 m -563.760 469.560 l +269.177 507.360 m +563.760 507.360 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 507.370 m -269.177 469.310 l +269.177 545.170 m +269.177 507.110 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 507.370 m -563.760 469.310 l +563.760 545.170 m +563.760 507.110 l S [ ] 0 d 1 w @@ -36949,19 +42481,118 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 483.73300000000023 Td +272.17692192000004 521.533 Td /F1.0 10.5 Tf <696e74656765722028696e74363429> Tj ET +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24 471.9360000000001 Td +/F2.0 18 Tf +<332e31322e204c6f6f70456c656d656e744d6f64656c> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 432.000 220.937 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 432.000 294.583 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 394.440 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 394.440 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 356.880 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 356.880 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 319.320 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 319.320 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 281.760 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 281.760 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 244.200 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 244.200 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 206.640 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 206.640 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 169.080 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 169.080 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 131.520 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 131.520 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 93.960 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 93.960 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 56.400 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 56.400 294.583 37.560 re +f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 469.560 m -269.177 469.560 l +48.240 455.280 m +269.177 455.280 l S [ ] 0 d -0.5 w +1.5 w 0.867 0.867 0.867 SCN 48.240 432.000 m 269.177 432.000 l @@ -36969,14 +42600,14 @@ S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 469.810 m -48.240 431.750 l +48.240 455.530 m +48.240 431.250 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 469.810 m -269.177 431.750 l +269.177 455.530 m +269.177 431.250 l S [ ] 0 d 1 w @@ -36984,31 +42615,19 @@ S 0.200 0.200 0.200 scn BT -51.24 453.31300000000016 Td +51.24 439.533 Td /F2.0 10.5 Tf -<64636165426c75657072696e744964> Tj -ET - - -BT -51.24 439.03300000000013 Td -ET - - -BT -51.24 439.03300000000013 Td -/F3.0 10.5 Tf -<6f7074696f6e616c> Tj +<4e616d65> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 469.560 m -563.760 469.560 l +269.177 455.280 m +563.760 455.280 l S [ ] 0 d -0.5 w +1.5 w 0.867 0.867 0.867 SCN 269.177 432.000 m 563.760 432.000 l @@ -37016,14 +42635,14 @@ S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 469.810 m -269.177 431.750 l +269.177 455.530 m +269.177 431.250 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 469.810 m -563.760 431.750 l +563.760 455.530 m +563.760 431.250 l S [ ] 0 d 1 w @@ -37031,9 +42650,9 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 446.1730000000002 Td -/F1.0 10.5 Tf -<737472696e67> Tj +272.17692192000004 439.533 Td +/F2.0 10.5 Tf +<536368656d61> Tj ET 0.000 0.000 0.000 scn @@ -37066,19 +42685,19 @@ S 0.200 0.200 0.200 scn BT -51.24 415.7530000000002 Td +51.24 415.753 Td /F2.0 10.5 Tf -<6c6f6f70456c656d656e7454797065> Tj +<626c75657072696e74> Tj ET BT -51.24 401.4730000000002 Td +51.24 401.47299999999996 Td ET BT -51.24 401.4730000000002 Td +51.24 401.47299999999996 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -37113,7 +42732,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 408.6130000000002 Td +272.17692192000004 408.613 Td /F1.0 10.5 Tf <737472696e67> Tj ET @@ -37148,19 +42767,19 @@ S 0.200 0.200 0.200 scn BT -51.24 378.19300000000015 Td +51.24 378.19300000000004 Td /F2.0 10.5 Tf -<6e616d65> Tj +[<6372656174656442> 20.01953125 <79>] TJ ET BT -51.24 363.9130000000001 Td +51.24 363.913 Td ET BT -51.24 363.9130000000001 Td +51.24 363.913 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -37195,7 +42814,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 371.05300000000017 Td +272.17692192000004 371.05300000000005 Td /F1.0 10.5 Tf <737472696e67> Tj ET @@ -37230,19 +42849,19 @@ S 0.200 0.200 0.200 scn BT -51.24 340.6330000000002 Td +51.24 340.633 Td /F2.0 10.5 Tf -<706f6c6963794d6f64656c73> Tj +<6372656174656444617465> Tj ET BT -51.24 326.3530000000002 Td +51.24 326.35299999999995 Td ET BT -51.24 326.3530000000002 Td +51.24 326.35299999999995 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -37273,35 +42892,13 @@ S S [ ] 0 d 1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn - -BT -272.17692192000004 333.4930000000002 Td -/F1.0 10.5 Tf -<3c20> Tj -ET - -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN - -BT -280.76592192000004 333.4930000000002 Td -/F1.0 10.5 Tf -<506f6c6963794d6f64656c> Tj -ET - 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn BT -342.0649219200001 333.4930000000002 Td +272.17692192000004 333.493 Td /F1.0 10.5 Tf -[<203e20617272> 20.01953125 <61> 20.01953125 <79>] TJ +<696e74656765722028696e74363429> Tj ET 0.000 0.000 0.000 scn @@ -37334,19 +42931,19 @@ S 0.200 0.200 0.200 scn BT -51.24 303.07300000000015 Td +51.24 303.07300000000004 Td /F2.0 10.5 Tf -<73686f72744e616d65> Tj +<64636165426c75657072696e744964> Tj ET BT -51.24 288.7930000000001 Td +51.24 288.793 Td ET BT -51.24 288.7930000000001 Td +51.24 288.793 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -37381,7 +42978,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 295.93300000000016 Td +272.17692192000004 295.93300000000005 Td /F1.0 10.5 Tf <737472696e67> Tj ET @@ -37416,19 +43013,19 @@ S 0.200 0.200 0.200 scn BT -51.24 265.51300000000015 Td +51.24 265.513 Td /F2.0 10.5 Tf -[<7570646174656442> 20.01953125 <79>] TJ +<6c6f6f70456c656d656e7454797065> Tj ET BT -51.24 251.23300000000015 Td +51.24 251.23299999999998 Td ET BT -51.24 251.23300000000015 Td +51.24 251.23299999999998 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -37463,7 +43060,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 258.37300000000016 Td +272.17692192000004 258.373 Td /F1.0 10.5 Tf <737472696e67> Tj ET @@ -37498,19 +43095,19 @@ S 0.200 0.200 0.200 scn BT -51.24 227.95300000000017 Td +51.24 227.95300000000003 Td /F2.0 10.5 Tf -<7570646174656444617465> Tj +<6e616d65> Tj ET BT -51.24 213.67300000000017 Td +51.24 213.67300000000003 Td ET BT -51.24 213.67300000000017 Td +51.24 213.67300000000003 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -37545,9 +43142,9 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 220.81300000000016 Td +272.17692192000004 220.81300000000002 Td /F1.0 10.5 Tf -<696e74656765722028696e74363429> Tj +<737472696e67> Tj ET 0.000 0.000 0.000 scn @@ -37580,19 +43177,19 @@ S 0.200 0.200 0.200 scn BT -51.24 190.39300000000017 Td +51.24 190.39300000000003 Td /F2.0 10.5 Tf -[<7573656442> 20.01953125 <794c6f6f7054> 29.78515625 <656d706c61746573>] TJ +<706f6c6963794d6f64656c73> Tj ET BT -51.24 176.11300000000017 Td +51.24 176.11300000000003 Td ET BT -51.24 176.11300000000017 Td +51.24 176.11300000000003 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -37631,7 +43228,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 183.25300000000016 Td +272.17692192000004 183.25300000000001 Td /F1.0 10.5 Tf <3c20> Tj ET @@ -37640,70 +43237,125 @@ ET 0.259 0.545 0.792 SCN BT -280.76592192000004 183.25300000000016 Td +280.76592192000004 183.25300000000001 Td /F1.0 10.5 Tf -[<4c6f6f7054> 29.78515625 <656d706c6174654c6f6f70456c656d656e744d6f64656c>] TJ +<506f6c6963794d6f64656c> Tj ET 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn BT -450.12267777937507 183.25300000000016 Td +342.0649219200001 183.25300000000001 Td /F1.0 10.5 Tf [<203e20617272> 20.01953125 <61> 20.01953125 <79>] TJ ET 0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 169.080 m +269.177 169.080 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 131.520 m +269.177 131.520 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 169.330 m +48.240 131.270 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +269.177 169.330 m +269.177 131.270 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN BT -48.24 133.65600000000012 Td -/F2.0 18 Tf -<332e31322e204c6f6f704c6f67> Tj +51.24 152.833 Td +/F2.0 10.5 Tf +<73686f72744e616d65> Tj +ET + + +BT +51.24 138.553 Td +ET + + +BT +51.24 138.553 Td +/F3.0 10.5 Tf +<6f7074696f6e616c> Tj ET -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 93.720 220.937 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 93.720 294.583 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 56.160 220.937 37.560 re -f 0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 56.160 294.583 37.560 re -f +0.5 w +0.867 0.867 0.867 SCN +269.177 169.080 m +563.760 169.080 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +269.177 131.520 m +563.760 131.520 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +269.177 169.330 m +269.177 131.270 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 169.330 m +563.760 131.270 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +272.17692192000004 145.69299999999998 Td +/F1.0 10.5 Tf +<737472696e67> Tj +ET + 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 117.000 m -269.177 117.000 l +48.240 131.520 m +269.177 131.520 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -48.240 93.720 m -269.177 93.720 l +48.240 93.960 m +269.177 93.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 117.250 m -48.240 92.970 l +48.240 131.770 m +48.240 93.710 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 117.250 m -269.177 92.970 l +269.177 131.770 m +269.177 93.710 l S [ ] 0 d 1 w @@ -37711,34 +43363,46 @@ S 0.200 0.200 0.200 scn BT -51.24 101.25300000000014 Td +51.24 115.27299999999998 Td /F2.0 10.5 Tf -<4e616d65> Tj +[<7570646174656442> 20.01953125 <79>] TJ +ET + + +BT +51.24 100.99299999999998 Td +ET + + +BT +51.24 100.99299999999998 Td +/F3.0 10.5 Tf +<6f7074696f6e616c> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 117.000 m -563.760 117.000 l +269.177 131.520 m +563.760 131.520 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -269.177 93.720 m -563.760 93.720 l +269.177 93.960 m +563.760 93.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 117.250 m -269.177 92.970 l +269.177 131.770 m +269.177 93.710 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 117.250 m -563.760 92.970 l +563.760 131.770 m +563.760 93.710 l S [ ] 0 d 1 w @@ -37746,34 +43410,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 101.25300000000014 Td -/F2.0 10.5 Tf -<536368656d61> Tj +272.17692192000004 108.13299999999998 Td +/F1.0 10.5 Tf +<737472696e67> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 93.720 m -269.177 93.720 l +48.240 93.960 m +269.177 93.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 56.160 m -269.177 56.160 l +48.240 56.400 m +269.177 56.400 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 93.970 m -48.240 55.910 l +48.240 94.210 m +48.240 56.150 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 93.970 m -269.177 55.910 l +269.177 94.210 m +269.177 56.150 l S [ ] 0 d 1 w @@ -37781,19 +43445,19 @@ S 0.200 0.200 0.200 scn BT -51.24 77.47300000000014 Td +51.24 77.71299999999998 Td /F2.0 10.5 Tf -<6964> Tj +<7570646174656444617465> Tj ET BT -51.24 63.19300000000014 Td +51.24 63.43299999999998 Td ET BT -51.24 63.19300000000014 Td +51.24 63.43299999999998 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -37801,26 +43465,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 93.720 m -563.760 93.720 l +269.177 93.960 m +563.760 93.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 56.160 m -563.760 56.160 l +269.177 56.400 m +563.760 56.400 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 93.970 m -269.177 55.910 l +269.177 94.210 m +269.177 56.150 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 93.970 m -563.760 55.910 l +563.760 94.210 m +563.760 56.150 l S [ ] 0 d 1 w @@ -37828,7 +43492,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 70.33300000000014 Td +272.17692192000004 70.57299999999998 Td /F1.0 10.5 Tf <696e74656765722028696e74363429> Tj ET @@ -37848,7 +43512,7 @@ q BT 552.698 14.388 Td /F1.0 9 Tf -<3233> Tj +<3237> Tj ET 0.000 0.000 0.000 SCN @@ -37858,46 +43522,51 @@ Q endstream endobj -265 0 obj +306 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 264 0 R +/Contents 305 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 22 0 R -/F3.0 24 0 R +/Font << /F2.0 24 0 R +/F3.0 26 0 R /F1.0 8 0 R >> -/XObject << /Stamp1 588 0 R +/XObject << /Stamp1 684 0 R >> >> -/Annots [267 0 R 268 0 R] +/Annots [307 0 R 308 0 R 310 0 R] >> endobj -266 0 obj -[265 0 R /XYZ 0 645.6000000000001 null] -endobj -267 0 obj +307 0 obj << /Border [0 0 0] -/Dest (_policymodel) +/Dest (_service) /Subtype /Link -/Rect [280.76592192000004 330.4270000000002 342.0649219200001 344.7070000000002] +/Rect [272.17692192000004 706.267 308.65392192 720.547] /Type /Annot >> endobj -268 0 obj +308 0 obj << /Border [0 0 0] -/Dest (_looptemplateloopelementmodel) +/Dest (_operationalpolicy) /Subtype /Link -/Rect [280.76592192000004 180.18700000000018 450.12267777937507 194.46700000000016] +/Rect [280.76592192000004 631.1470000000002 370.37271684187505 645.4270000000001] /Type /Annot >> endobj -269 0 obj -[265 0 R /XYZ 0 157.08000000000015 null] +309 0 obj +[306 0 R /XYZ 0 495.36000000000007 null] endobj -270 0 obj -<< /Length 21650 +310 0 obj +<< /Border [0 0 0] +/Dest (_policymodel) +/Subtype /Link +/Rect [280.76592192000004 180.18700000000004 342.0649219200001 194.46700000000004] +/Type /Annot +>> +endobj +311 0 obj +<< /Length 20987 >> stream q @@ -37918,38 +43587,6 @@ f 269.177 695.160 294.583 37.560 re f 0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 657.600 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 657.600 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 620.040 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 620.040 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 582.480 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 582.480 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 544.920 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 544.920 294.583 37.560 re -f -0.000 0.000 0.000 scn 0.5 w /DeviceRGB CS 0.867 0.867 0.867 SCN @@ -38036,95 +43673,13 @@ S 0.5 w 0.867 0.867 0.867 SCN 48.240 732.970 m -48.240 694.910 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -269.177 732.970 m -269.177 694.910 l -S -[ ] 0 d -1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn - -BT -51.24 716.473 Td -/F2.0 10.5 Tf -<6c6f67436f6d706f6e656e74> Tj -ET - - -BT -51.24 702.193 Td -ET - - -BT -51.24 702.193 Td -/F3.0 10.5 Tf -<6f7074696f6e616c> Tj -ET - -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -269.177 732.720 m -563.760 732.720 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -269.177 695.160 m -563.760 695.160 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -269.177 732.970 m -269.177 694.910 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -563.760 732.970 m -563.760 694.910 l -S -[ ] 0 d -1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn - -BT -272.17692192000004 709.333 Td -/F1.0 10.5 Tf -<737472696e67> Tj -ET - -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -48.240 695.160 m -269.177 695.160 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -48.240 657.600 m -269.177 657.600 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -48.240 695.410 m -48.240 657.350 l +48.240 694.910 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 695.410 m -269.177 657.350 l +269.177 732.970 m +269.177 694.910 l S [ ] 0 d 1 w @@ -38132,19 +43687,19 @@ S 0.200 0.200 0.200 scn BT -51.24 678.913 Td +51.24 716.473 Td /F2.0 10.5 Tf -<6c6f67496e7374616e74> Tj +[<7573656442> 20.01953125 <794c6f6f7054> 29.78515625 <656d706c61746573>] TJ ET BT -51.24 664.633 Td +51.24 702.193 Td ET BT -51.24 664.633 Td +51.24 702.193 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -38152,61 +43707,150 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 695.160 m -563.760 695.160 l +269.177 732.720 m +563.760 732.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 657.600 m -563.760 657.600 l +269.177 695.160 m +563.760 695.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 695.410 m -269.177 657.350 l +269.177 732.970 m +269.177 694.910 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 695.410 m -563.760 657.350 l +563.760 732.970 m +563.760 694.910 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn BT -272.17692192000004 671.773 Td +272.17692192000004 709.333 Td /F1.0 10.5 Tf -<696e74656765722028696e74363429> Tj +<3c20> Tj +ET + +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN + +BT +280.76592192000004 709.333 Td +/F1.0 10.5 Tf +[<4c6f6f7054> 29.78515625 <656d706c6174654c6f6f70456c656d656e744d6f64656c>] TJ +ET + +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +450.12267777937507 709.333 Td +/F1.0 10.5 Tf +[<203e20617272> 20.01953125 <61> 20.01953125 <79>] TJ +ET + +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24 659.7360000000001 Td +/F2.0 18 Tf +<332e31332e204c6f6f704c6f67> Tj ET +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 619.800 220.937 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 619.800 294.583 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 582.240 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 582.240 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 544.680 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 544.680 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 507.120 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 507.120 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 469.560 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 469.560 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 432.000 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 432.000 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 394.440 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 394.440 294.583 37.560 re +f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 657.600 m -269.177 657.600 l +48.240 643.080 m +269.177 643.080 l S [ ] 0 d -0.5 w +1.5 w 0.867 0.867 0.867 SCN -48.240 620.040 m -269.177 620.040 l +48.240 619.800 m +269.177 619.800 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 657.850 m -48.240 619.790 l +48.240 643.330 m +48.240 619.050 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 657.850 m -269.177 619.790 l +269.177 643.330 m +269.177 619.050 l S [ ] 0 d 1 w @@ -38214,46 +43858,34 @@ S 0.200 0.200 0.200 scn BT -51.24 641.3530000000001 Td +51.24 627.3330000000001 Td /F2.0 10.5 Tf -<6c6f6754797065> Tj -ET - - -BT -51.24 627.073 Td -ET - - -BT -51.24 627.073 Td -/F3.0 10.5 Tf -<6f7074696f6e616c> Tj +<4e616d65> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 657.600 m -563.760 657.600 l +269.177 643.080 m +563.760 643.080 l S [ ] 0 d -0.5 w +1.5 w 0.867 0.867 0.867 SCN -269.177 620.040 m -563.760 620.040 l +269.177 619.800 m +563.760 619.800 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 657.850 m -269.177 619.790 l +269.177 643.330 m +269.177 619.050 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 657.850 m -563.760 619.790 l +563.760 643.330 m +563.760 619.050 l S [ ] 0 d 1 w @@ -38261,34 +43893,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 634.213 Td -/F1.0 10.5 Tf -[<656e756d2028494e464f2c2057> 60.05859375 <41524e494e472c20455252> 20.01953125 <4f5229>] TJ +272.17692192000004 627.3330000000001 Td +/F2.0 10.5 Tf +<536368656d61> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 620.040 m -269.177 620.040 l +48.240 619.800 m +269.177 619.800 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 582.480 m -269.177 582.480 l +48.240 582.240 m +269.177 582.240 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 620.290 m -48.240 582.230 l +48.240 620.050 m +48.240 581.990 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 620.290 m -269.177 582.230 l +269.177 620.050 m +269.177 581.990 l S [ ] 0 d 1 w @@ -38296,19 +43928,19 @@ S 0.200 0.200 0.200 scn BT -51.24 603.7930000000001 Td +51.24 603.5530000000001 Td /F2.0 10.5 Tf -<6c6f6f70> Tj +<6964> Tj ET BT -51.24 589.513 Td +51.24 589.2730000000001 Td ET BT -51.24 589.513 Td +51.24 589.2730000000001 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -38316,69 +43948,61 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 620.040 m -563.760 620.040 l +269.177 619.800 m +563.760 619.800 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 582.480 m -563.760 582.480 l +269.177 582.240 m +563.760 582.240 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 620.290 m -269.177 582.230 l +269.177 620.050 m +269.177 581.990 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 620.290 m -563.760 582.230 l +563.760 620.050 m +563.760 581.990 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -272.17692192000004 596.653 Td +272.17692192000004 596.4130000000001 Td /F1.0 10.5 Tf -<4c6f6f70> Tj +<696e74656765722028696e74363429> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 582.480 m -269.177 582.480 l +48.240 582.240 m +269.177 582.240 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 544.920 m -269.177 544.920 l +48.240 544.680 m +269.177 544.680 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 582.730 m -48.240 544.670 l +48.240 582.490 m +48.240 544.430 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 582.730 m -269.177 544.670 l +269.177 582.490 m +269.177 544.430 l S [ ] 0 d 1 w @@ -38386,19 +44010,19 @@ S 0.200 0.200 0.200 scn BT -51.24 566.233 Td +51.24 565.9930000000002 Td /F2.0 10.5 Tf -<6d657373616765> Tj +<6c6f67436f6d706f6e656e74> Tj ET BT -51.24 551.953 Td +51.24 551.7130000000001 Td ET BT -51.24 551.953 Td +51.24 551.7130000000001 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -38406,26 +44030,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 582.480 m -563.760 582.480 l +269.177 582.240 m +563.760 582.240 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 544.920 m -563.760 544.920 l +269.177 544.680 m +563.760 544.680 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 582.730 m -269.177 544.670 l +269.177 582.490 m +269.177 544.430 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 582.730 m -563.760 544.670 l +563.760 582.490 m +563.760 544.430 l S [ ] 0 d 1 w @@ -38433,141 +44057,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 559.093 Td +272.17692192000004 558.8530000000001 Td /F1.0 10.5 Tf <737472696e67> Tj ET -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -48.24 509.49600000000015 Td -/F2.0 18 Tf -[<332e31332e204c6f6f7054> 29.78515625 <656d706c617465>] TJ -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 469.560 220.937 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 469.560 294.583 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 432.000 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 432.000 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 394.440 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 394.440 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 356.880 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 356.880 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 319.320 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 319.320 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 281.760 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 281.760 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 244.200 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 244.200 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 206.640 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 206.640 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 169.080 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 169.080 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 131.520 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 131.520 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 93.960 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 93.960 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 56.400 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 56.400 294.583 37.560 re -f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 492.840 m -269.177 492.840 l +48.240 544.680 m +269.177 544.680 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -48.240 469.560 m -269.177 469.560 l +48.240 507.120 m +269.177 507.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 493.090 m -48.240 468.810 l +48.240 544.930 m +48.240 506.870 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 493.090 m -269.177 468.810 l +269.177 544.930 m +269.177 506.870 l S [ ] 0 d 1 w @@ -38575,34 +44092,46 @@ S 0.200 0.200 0.200 scn BT -51.24 477.0930000000001 Td +51.24 528.4330000000002 Td /F2.0 10.5 Tf -<4e616d65> Tj +<6c6f67496e7374616e74> Tj +ET + + +BT +51.24 514.1530000000001 Td +ET + + +BT +51.24 514.1530000000001 Td +/F3.0 10.5 Tf +<6f7074696f6e616c> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 492.840 m -563.760 492.840 l +269.177 544.680 m +563.760 544.680 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -269.177 469.560 m -563.760 469.560 l +269.177 507.120 m +563.760 507.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 493.090 m -269.177 468.810 l +269.177 544.930 m +269.177 506.870 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 493.090 m -563.760 468.810 l +563.760 544.930 m +563.760 506.870 l S [ ] 0 d 1 w @@ -38610,34 +44139,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 477.0930000000001 Td -/F2.0 10.5 Tf -<536368656d61> Tj +272.17692192000004 521.2930000000001 Td +/F1.0 10.5 Tf +<696e74656765722028696e74363429> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 469.560 m -269.177 469.560 l +48.240 507.120 m +269.177 507.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 432.000 m -269.177 432.000 l +48.240 469.560 m +269.177 469.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 469.810 m -48.240 431.750 l +48.240 507.370 m +48.240 469.310 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 469.810 m -269.177 431.750 l +269.177 507.370 m +269.177 469.310 l S [ ] 0 d 1 w @@ -38645,19 +44174,19 @@ S 0.200 0.200 0.200 scn BT -51.24 453.31300000000005 Td +51.24 490.8730000000001 Td /F2.0 10.5 Tf -<616c6c6f7765644c6f6f7054797065> Tj +<6c6f6754797065> Tj ET BT -51.24 439.033 Td +51.24 476.5930000000001 Td ET BT -51.24 439.033 Td +51.24 476.5930000000001 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -38665,26 +44194,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 469.560 m -563.760 469.560 l +269.177 507.120 m +563.760 507.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 432.000 m -563.760 432.000 l +269.177 469.560 m +563.760 469.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 469.810 m -269.177 431.750 l +269.177 507.370 m +269.177 469.310 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 469.810 m -563.760 431.750 l +563.760 507.370 m +563.760 469.310 l S [ ] 0 d 1 w @@ -38692,34 +44221,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 446.17300000000006 Td +272.17692192000004 483.7330000000001 Td /F1.0 10.5 Tf -<656e756d20284f50454e2c20434c4f5345442c2048594252494429> Tj +[<656e756d2028494e464f2c2057> 60.05859375 <41524e494e472c20455252> 20.01953125 <4f5229>] TJ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 432.000 m -269.177 432.000 l +48.240 469.560 m +269.177 469.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 394.440 m -269.177 394.440 l +48.240 432.000 m +269.177 432.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 432.250 m -48.240 394.190 l +48.240 469.810 m +48.240 431.750 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 432.250 m -269.177 394.190 l +269.177 469.810 m +269.177 431.750 l S [ ] 0 d 1 w @@ -38727,19 +44256,19 @@ S 0.200 0.200 0.200 scn BT -51.24 415.7530000000001 Td +51.24 453.31300000000016 Td /F2.0 10.5 Tf -<626c75657072696e74> Tj +<6c6f6f70> Tj ET BT -51.24 401.47300000000007 Td +51.24 439.03300000000013 Td ET BT -51.24 401.47300000000007 Td +51.24 439.03300000000013 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -38747,61 +44276,69 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 432.000 m -563.760 432.000 l +269.177 469.560 m +563.760 469.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 394.440 m -563.760 394.440 l +269.177 432.000 m +563.760 432.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 432.250 m -269.177 394.190 l +269.177 469.810 m +269.177 431.750 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 432.250 m -563.760 394.190 l +563.760 469.810 m +563.760 431.750 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT -272.17692192000004 408.6130000000001 Td +272.17692192000004 446.1730000000002 Td /F1.0 10.5 Tf -<737472696e67> Tj +<4c6f6f70> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 394.440 m -269.177 394.440 l +48.240 432.000 m +269.177 432.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 356.880 m -269.177 356.880 l +48.240 394.440 m +269.177 394.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 394.690 m -48.240 356.630 l +48.240 432.250 m +48.240 394.190 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 394.690 m -269.177 356.630 l +269.177 432.250 m +269.177 394.190 l S [ ] 0 d 1 w @@ -38809,19 +44346,19 @@ S 0.200 0.200 0.200 scn BT -51.24 378.19300000000004 Td +51.24 415.7530000000001 Td /F2.0 10.5 Tf -[<6372656174656442> 20.01953125 <79>] TJ +<6d657373616765> Tj ET BT -51.24 363.913 Td +51.24 401.47300000000007 Td ET BT -51.24 363.913 Td +51.24 401.47300000000007 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -38829,26 +44366,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 394.440 m -563.760 394.440 l +269.177 432.000 m +563.760 432.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 356.880 m -563.760 356.880 l +269.177 394.440 m +563.760 394.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 394.690 m -269.177 356.630 l +269.177 432.250 m +269.177 394.190 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 394.690 m -563.760 356.630 l +563.760 432.250 m +563.760 394.190 l S [ ] 0 d 1 w @@ -38856,34 +44393,109 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 371.05300000000005 Td +272.17692192000004 408.6130000000001 Td /F1.0 10.5 Tf <737472696e67> Tj ET +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24 359.01600000000013 Td +/F2.0 18 Tf +[<332e31342e204c6f6f7054> 29.78515625 <656d706c617465>] TJ +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 319.080 220.937 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 319.080 294.583 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 281.520 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 281.520 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 243.960 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 243.960 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 206.400 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 206.400 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 168.840 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 168.840 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 131.280 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 131.280 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 93.720 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 93.720 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 56.160 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 56.160 294.583 37.560 re +f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 356.880 m -269.177 356.880 l +48.240 342.360 m +269.177 342.360 l S [ ] 0 d -0.5 w +1.5 w 0.867 0.867 0.867 SCN -48.240 319.320 m -269.177 319.320 l +48.240 319.080 m +269.177 319.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 357.130 m -48.240 319.070 l +48.240 342.610 m +48.240 318.330 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 357.130 m -269.177 319.070 l +269.177 342.610 m +269.177 318.330 l S [ ] 0 d 1 w @@ -38891,46 +44503,34 @@ S 0.200 0.200 0.200 scn BT -51.24 340.6330000000001 Td +51.24 326.61300000000006 Td /F2.0 10.5 Tf -<6372656174656444617465> Tj -ET - - -BT -51.24 326.35300000000007 Td -ET - - -BT -51.24 326.35300000000007 Td -/F3.0 10.5 Tf -<6f7074696f6e616c> Tj +<4e616d65> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 356.880 m -563.760 356.880 l +269.177 342.360 m +563.760 342.360 l S [ ] 0 d -0.5 w +1.5 w 0.867 0.867 0.867 SCN -269.177 319.320 m -563.760 319.320 l +269.177 319.080 m +563.760 319.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 357.130 m -269.177 319.070 l +269.177 342.610 m +269.177 318.330 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 357.130 m -563.760 319.070 l +563.760 342.610 m +563.760 318.330 l S [ ] 0 d 1 w @@ -38938,34 +44538,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 333.4930000000001 Td -/F1.0 10.5 Tf -<696e74656765722028696e74363429> Tj +272.17692192000004 326.61300000000006 Td +/F2.0 10.5 Tf +<536368656d61> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 319.320 m -269.177 319.320 l +48.240 319.080 m +269.177 319.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 281.760 m -269.177 281.760 l +48.240 281.520 m +269.177 281.520 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 319.570 m -48.240 281.510 l +48.240 319.330 m +48.240 281.270 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 319.570 m -269.177 281.510 l +269.177 319.330 m +269.177 281.270 l S [ ] 0 d 1 w @@ -38973,19 +44573,19 @@ S 0.200 0.200 0.200 scn BT -51.24 303.07300000000004 Td +51.24 302.833 Td /F2.0 10.5 Tf -<64636165426c75657072696e744964> Tj +<616c6c6f7765644c6f6f7054797065> Tj ET BT -51.24 288.793 Td +51.24 288.553 Td ET BT -51.24 288.793 Td +51.24 288.553 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -38993,26 +44593,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 319.320 m -563.760 319.320 l +269.177 319.080 m +563.760 319.080 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 281.760 m -563.760 281.760 l +269.177 281.520 m +563.760 281.520 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 319.570 m -269.177 281.510 l +269.177 319.330 m +269.177 281.270 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 319.570 m -563.760 281.510 l +563.760 319.330 m +563.760 281.270 l S [ ] 0 d 1 w @@ -39020,34 +44620,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 295.93300000000005 Td +272.17692192000004 295.69300000000004 Td /F1.0 10.5 Tf -<737472696e67> Tj +<656e756d20284f50454e2c20434c4f5345442c2048594252494429> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 281.760 m -269.177 281.760 l +48.240 281.520 m +269.177 281.520 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 244.200 m -269.177 244.200 l +48.240 243.960 m +269.177 243.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 282.010 m -48.240 243.950 l +48.240 281.770 m +48.240 243.710 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 282.010 m -269.177 243.950 l +269.177 281.770 m +269.177 243.710 l S [ ] 0 d 1 w @@ -39055,19 +44655,19 @@ S 0.200 0.200 0.200 scn BT -51.24 265.5130000000001 Td +51.24 265.2730000000001 Td /F2.0 10.5 Tf -<6c6f6f70456c656d656e744d6f64656c7355736564> Tj +<626c75657072696e74> Tj ET BT -51.24 251.2330000000001 Td +51.24 250.99300000000008 Td ET BT -51.24 251.2330000000001 Td +51.24 250.99300000000008 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -39075,83 +44675,61 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 281.760 m -563.760 281.760 l +269.177 281.520 m +563.760 281.520 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 244.200 m -563.760 244.200 l +269.177 243.960 m +563.760 243.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 282.010 m -269.177 243.950 l +269.177 281.770 m +269.177 243.710 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 282.010 m -563.760 243.950 l +563.760 281.770 m +563.760 243.710 l S [ ] 0 d 1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn - -BT -272.17692192000004 258.3730000000001 Td -/F1.0 10.5 Tf -<3c20> Tj -ET - -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN - -BT -280.76592192000004 258.3730000000001 Td -/F1.0 10.5 Tf -[<4c6f6f7054> 29.78515625 <656d706c6174654c6f6f70456c656d656e744d6f64656c>] TJ -ET - 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn BT -450.12267777937507 258.3730000000001 Td +272.17692192000004 258.1330000000001 Td /F1.0 10.5 Tf -[<203e20617272> 20.01953125 <61> 20.01953125 <79>] TJ +<737472696e67> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 244.200 m -269.177 244.200 l +48.240 243.960 m +269.177 243.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 206.640 m -269.177 206.640 l +48.240 206.400 m +269.177 206.400 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 244.450 m -48.240 206.390 l +48.240 244.210 m +48.240 206.150 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 244.450 m -269.177 206.390 l +269.177 244.210 m +269.177 206.150 l S [ ] 0 d 1 w @@ -39159,19 +44737,19 @@ S 0.200 0.200 0.200 scn BT -51.24 227.9530000000001 Td +51.24 227.71300000000008 Td /F2.0 10.5 Tf -<6d6178696d756d496e7374616e636573416c6c6f776564> Tj +[<6372656174656442> 20.01953125 <79>] TJ ET BT -51.24 213.6730000000001 Td +51.24 213.43300000000008 Td ET BT -51.24 213.6730000000001 Td +51.24 213.43300000000008 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -39179,26 +44757,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 244.200 m -563.760 244.200 l +269.177 243.960 m +563.760 243.960 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 206.640 m -563.760 206.640 l +269.177 206.400 m +563.760 206.400 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 244.450 m -269.177 206.390 l +269.177 244.210 m +269.177 206.150 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 244.450 m -563.760 206.390 l +563.760 244.210 m +563.760 206.150 l S [ ] 0 d 1 w @@ -39206,34 +44784,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 220.81300000000007 Td +272.17692192000004 220.57300000000006 Td /F1.0 10.5 Tf -<696e74656765722028696e74333229> Tj +<737472696e67> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 206.640 m -269.177 206.640 l +48.240 206.400 m +269.177 206.400 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 169.080 m -269.177 169.080 l +48.240 168.840 m +269.177 168.840 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 206.890 m -48.240 168.830 l +48.240 206.650 m +48.240 168.590 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 206.890 m -269.177 168.830 l +269.177 206.650 m +269.177 168.590 l S [ ] 0 d 1 w @@ -39241,19 +44819,19 @@ S 0.200 0.200 0.200 scn BT -51.24 190.39300000000006 Td +51.24 190.15300000000008 Td /F2.0 10.5 Tf -<6d6f64656c53657276696365> Tj +<6372656174656444617465> Tj ET BT -51.24 176.11300000000006 Td +51.24 175.87300000000008 Td ET BT -51.24 176.11300000000006 Td +51.24 175.87300000000008 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -39261,69 +44839,61 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 206.640 m -563.760 206.640 l +269.177 206.400 m +563.760 206.400 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 169.080 m -563.760 169.080 l +269.177 168.840 m +563.760 168.840 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 206.890 m -269.177 168.830 l +269.177 206.650 m +269.177 168.590 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 206.890 m -563.760 168.830 l +563.760 206.650 m +563.760 168.590 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -272.17692192000004 183.25300000000004 Td +272.17692192000004 183.01300000000006 Td /F1.0 10.5 Tf -<53657276696365> Tj +<696e74656765722028696e74363429> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 169.080 m -269.177 169.080 l +48.240 168.840 m +269.177 168.840 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 131.520 m -269.177 131.520 l +48.240 131.280 m +269.177 131.280 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 169.330 m -48.240 131.270 l +48.240 169.090 m +48.240 131.030 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 169.330 m -269.177 131.270 l +269.177 169.090 m +269.177 131.030 l S [ ] 0 d 1 w @@ -39331,19 +44901,19 @@ S 0.200 0.200 0.200 scn BT -51.24 152.83300000000006 Td +51.24 152.59300000000007 Td /F2.0 10.5 Tf -<6e616d65> Tj +<64636165426c75657072696e744964> Tj ET BT -51.24 138.55300000000005 Td +51.24 138.31300000000007 Td ET BT -51.24 138.55300000000005 Td +51.24 138.31300000000007 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -39351,26 +44921,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 169.080 m -563.760 169.080 l +269.177 168.840 m +563.760 168.840 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 131.520 m -563.760 131.520 l +269.177 131.280 m +563.760 131.280 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 169.330 m -269.177 131.270 l +269.177 169.090 m +269.177 131.030 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 169.330 m -563.760 131.270 l +563.760 169.090 m +563.760 131.030 l S [ ] 0 d 1 w @@ -39378,7 +44948,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 145.69300000000004 Td +272.17692192000004 145.45300000000006 Td /F1.0 10.5 Tf <737472696e67> Tj ET @@ -39386,26 +44956,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 131.520 m -269.177 131.520 l +48.240 131.280 m +269.177 131.280 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 93.960 m -269.177 93.960 l +48.240 93.720 m +269.177 93.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 131.770 m -48.240 93.710 l +48.240 131.530 m +48.240 93.470 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 131.770 m -269.177 93.710 l +269.177 131.530 m +269.177 93.470 l S [ ] 0 d 1 w @@ -39413,19 +44983,19 @@ S 0.200 0.200 0.200 scn BT -51.24 115.27300000000004 Td +51.24 115.03300000000006 Td /F2.0 10.5 Tf -<737667526570726573656e746174696f6e> Tj +<6c6f6f70456c656d656e744d6f64656c7355736564> Tj ET BT -51.24 100.99300000000004 Td +51.24 100.75300000000006 Td ET BT -51.24 100.99300000000004 Td +51.24 100.75300000000006 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -39433,61 +45003,83 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 131.520 m -563.760 131.520 l +269.177 131.280 m +563.760 131.280 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 93.960 m -563.760 93.960 l +269.177 93.720 m +563.760 93.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 131.770 m -269.177 93.710 l +269.177 131.530 m +269.177 93.470 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 131.770 m -563.760 93.710 l +563.760 131.530 m +563.760 93.470 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn BT -272.17692192000004 108.13300000000004 Td +272.17692192000004 107.89300000000006 Td /F1.0 10.5 Tf -<737472696e67> Tj +<3c20> Tj +ET + +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN + +BT +280.76592192000004 107.89300000000006 Td +/F1.0 10.5 Tf +[<4c6f6f7054> 29.78515625 <656d706c6174654c6f6f70456c656d656e744d6f64656c>] TJ +ET + +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +450.12267777937507 107.89300000000006 Td +/F1.0 10.5 Tf +[<203e20617272> 20.01953125 <61> 20.01953125 <79>] TJ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 93.960 m -269.177 93.960 l +48.240 93.720 m +269.177 93.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 56.400 m -269.177 56.400 l +48.240 56.160 m +269.177 56.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 94.210 m -48.240 56.150 l +48.240 93.970 m +48.240 55.910 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 94.210 m -269.177 56.150 l +269.177 93.970 m +269.177 55.910 l S [ ] 0 d 1 w @@ -39495,19 +45087,19 @@ S 0.200 0.200 0.200 scn BT -51.24 77.71300000000004 Td +51.24 77.47300000000006 Td /F2.0 10.5 Tf -<756e69717565426c75657072696e74> Tj +<6d6178696d756d496e7374616e636573416c6c6f776564> Tj ET BT -51.24 63.433000000000035 Td +51.24 63.193000000000055 Td ET BT -51.24 63.433000000000035 Td +51.24 63.193000000000055 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -39515,26 +45107,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 93.960 m -563.760 93.960 l +269.177 93.720 m +563.760 93.720 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 56.400 m -563.760 56.400 l +269.177 56.160 m +563.760 56.160 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 94.210 m -269.177 56.150 l +269.177 93.970 m +269.177 55.910 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 94.210 m -563.760 56.150 l +563.760 93.970 m +563.760 55.910 l S [ ] 0 d 1 w @@ -39542,9 +45134,9 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 70.57300000000004 Td +272.17692192000004 70.33300000000006 Td /F1.0 10.5 Tf -<626f6f6c65616e> Tj +<696e74656765722028696e74333229> Tj ET 0.000 0.000 0.000 scn @@ -39562,7 +45154,7 @@ q BT 49.24 14.388 Td /F1.0 9 Tf -<3234> Tj +<3238> Tj ET 0.000 0.000 0.000 SCN @@ -39572,51 +45164,54 @@ Q endstream endobj -271 0 obj +312 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 270 0 R +/Contents 311 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 22 0 R -/F3.0 24 0 R +/Font << /F2.0 24 0 R +/F3.0 26 0 R /F1.0 8 0 R >> -/XObject << /Stamp1 588 0 R +/XObject << /Stamp1 684 0 R >> >> -/Annots [272 0 R 274 0 R 275 0 R] +/Annots [313 0 R 315 0 R 317 0 R] >> endobj -272 0 obj +313 0 obj << /Border [0 0 0] -/Dest (_loop) +/Dest (_looptemplateloopelementmodel) /Subtype /Link -/Rect [272.17692192000004 593.5870000000001 297.27192192000007 607.8670000000001] +/Rect [280.76592192000004 706.267 450.12267777937507 720.547] /Type /Annot >> endobj -273 0 obj -[271 0 R /XYZ 0 532.9200000000001 null] +314 0 obj +[312 0 R /XYZ 0 683.1600000000001 null] endobj -274 0 obj +315 0 obj << /Border [0 0 0] -/Dest (_looptemplateloopelementmodel) +/Dest (_loop) /Subtype /Link -/Rect [280.76592192000004 255.3070000000001 450.12267777937507 269.5870000000001] +/Rect [272.17692192000004 443.10700000000014 297.27192192000007 457.38700000000017] /Type /Annot >> endobj -275 0 obj +316 0 obj +[312 0 R /XYZ 0 382.4400000000001 null] +endobj +317 0 obj << /Border [0 0 0] -/Dest (_service) +/Dest (_looptemplateloopelementmodel) /Subtype /Link -/Rect [272.17692192000004 180.18700000000007 308.65392192 194.46700000000004] +/Rect [280.76592192000004 104.82700000000006 450.12267777937507 119.10700000000006] /Type /Annot >> endobj -276 0 obj -<< /Length 20753 +318 0 obj +<< /Length 20476 >> stream q @@ -39645,6 +45240,38 @@ f 269.177 657.600 294.583 37.560 re f 0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 620.040 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 620.040 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 582.480 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 582.480 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 544.920 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 544.920 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 507.360 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 507.360 294.583 37.560 re +f +0.000 0.000 0.000 scn 0.5 w /DeviceRGB CS 0.867 0.867 0.867 SCN @@ -39747,7 +45374,7 @@ S BT 51.24 716.473 Td /F2.0 10.5 Tf -[<7570646174656442> 20.01953125 <79>] TJ +<6d6f64656c53657276696365> Tj ET @@ -39790,13 +45417,21 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT 272.17692192000004 709.333 Td /F1.0 10.5 Tf -<737472696e67> Tj +<53657276696365> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -39829,7 +45464,7 @@ S BT 51.24 678.913 Td /F2.0 10.5 Tf -<7570646174656444617465> Tj +<6e616d65> Tj ET @@ -39876,75 +45511,32 @@ S BT 272.17692192000004 671.773 Td /F1.0 10.5 Tf -<696e74656765722028696e74363429> Tj -ET - -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -48.24 622.1760000000002 Td -/F2.0 18 Tf -[<332e31342e204c6f6f7054> 29.78515625 <656d706c6174654c6f6f70456c656d656e744d6f64656c>] TJ +<737472696e67> Tj ET -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 582.240 220.937 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 582.240 294.583 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 544.680 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 544.680 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 507.120 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 507.120 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 469.560 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 469.560 294.583 37.560 re -f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 605.520 m -269.177 605.520 l +48.240 657.600 m +269.177 657.600 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -48.240 582.240 m -269.177 582.240 l +48.240 620.040 m +269.177 620.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 605.770 m -48.240 581.490 l +48.240 657.850 m +48.240 619.790 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 605.770 m -269.177 581.490 l +269.177 657.850 m +269.177 619.790 l S [ ] 0 d 1 w @@ -39952,34 +45544,46 @@ S 0.200 0.200 0.200 scn BT -51.24 589.7730000000001 Td +51.24 641.3530000000001 Td /F2.0 10.5 Tf -<4e616d65> Tj +<737667526570726573656e746174696f6e> Tj +ET + + +BT +51.24 627.073 Td +ET + + +BT +51.24 627.073 Td +/F3.0 10.5 Tf +<6f7074696f6e616c> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 605.520 m -563.760 605.520 l +269.177 657.600 m +563.760 657.600 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -269.177 582.240 m -563.760 582.240 l +269.177 620.040 m +563.760 620.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 605.770 m -269.177 581.490 l +269.177 657.850 m +269.177 619.790 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 605.770 m -563.760 581.490 l +563.760 657.850 m +563.760 619.790 l S [ ] 0 d 1 w @@ -39987,34 +45591,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 589.7730000000001 Td -/F2.0 10.5 Tf -<536368656d61> Tj +272.17692192000004 634.213 Td +/F1.0 10.5 Tf +<737472696e67> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 582.240 m -269.177 582.240 l +48.240 620.040 m +269.177 620.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 544.680 m -269.177 544.680 l +48.240 582.480 m +269.177 582.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 582.490 m -48.240 544.430 l +48.240 620.290 m +48.240 582.230 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 582.490 m -269.177 544.430 l +269.177 620.290 m +269.177 582.230 l S [ ] 0 d 1 w @@ -40022,19 +45626,19 @@ S 0.200 0.200 0.200 scn BT -51.24 565.9930000000002 Td +51.24 603.7929999999999 Td /F2.0 10.5 Tf -<666c6f774f72646572> Tj +<756e69717565426c75657072696e74> Tj ET BT -51.24 551.7130000000002 Td +51.24 589.5129999999999 Td ET BT -51.24 551.7130000000002 Td +51.24 589.5129999999999 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -40042,26 +45646,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 582.240 m -563.760 582.240 l +269.177 620.040 m +563.760 620.040 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 544.680 m -563.760 544.680 l +269.177 582.480 m +563.760 582.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 582.490 m -269.177 544.430 l +269.177 620.290 m +269.177 582.230 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 582.490 m -563.760 544.430 l +563.760 620.290 m +563.760 582.230 l S [ ] 0 d 1 w @@ -40069,34 +45673,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 558.8530000000002 Td +272.17692192000004 596.6529999999999 Td /F1.0 10.5 Tf -<696e74656765722028696e74333229> Tj +<626f6f6c65616e> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 544.680 m -269.177 544.680 l +48.240 582.480 m +269.177 582.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 507.120 m -269.177 507.120 l +48.240 544.920 m +269.177 544.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 544.930 m -48.240 506.870 l +48.240 582.730 m +48.240 544.670 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 544.930 m -269.177 506.870 l +269.177 582.730 m +269.177 544.670 l S [ ] 0 d 1 w @@ -40104,19 +45708,19 @@ S 0.200 0.200 0.200 scn BT -51.24 528.4330000000002 Td +51.24 566.233 Td /F2.0 10.5 Tf -<6c6f6f70456c656d656e744d6f64656c> Tj +[<7570646174656442> 20.01953125 <79>] TJ ET BT -51.24 514.1530000000001 Td +51.24 551.953 Td ET BT -51.24 514.1530000000001 Td +51.24 551.953 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -40124,69 +45728,61 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 544.680 m -563.760 544.680 l +269.177 582.480 m +563.760 582.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 507.120 m -563.760 507.120 l +269.177 544.920 m +563.760 544.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 544.930 m -269.177 506.870 l +269.177 582.730 m +269.177 544.670 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 544.930 m -563.760 506.870 l +563.760 582.730 m +563.760 544.670 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -272.17692192000004 521.2930000000001 Td +272.17692192000004 559.093 Td /F1.0 10.5 Tf -<4c6f6f70456c656d656e744d6f64656c> Tj +<737472696e67> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 507.120 m -269.177 507.120 l +48.240 544.920 m +269.177 544.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 469.560 m -269.177 469.560 l +48.240 507.360 m +269.177 507.360 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 507.370 m -48.240 469.310 l +48.240 545.170 m +48.240 507.110 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 507.370 m -269.177 469.310 l +269.177 545.170 m +269.177 507.110 l S [ ] 0 d 1 w @@ -40194,19 +45790,19 @@ S 0.200 0.200 0.200 scn BT -51.24 490.8730000000002 Td +51.24 528.673 Td /F2.0 10.5 Tf -[<6c6f6f7054> 29.78515625 <656d706c617465>] TJ +<7570646174656444617465> Tj ET BT -51.24 476.5930000000002 Td +51.24 514.393 Td ET BT -51.24 476.5930000000002 Td +51.24 514.393 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -40214,160 +45810,104 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 507.120 m -563.760 507.120 l +269.177 544.920 m +563.760 544.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 469.560 m -563.760 469.560 l +269.177 507.360 m +563.760 507.360 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 507.370 m -269.177 469.310 l +269.177 545.170 m +269.177 507.110 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 507.370 m -563.760 469.310 l +563.760 545.170 m +563.760 507.110 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -272.17692192000004 483.73300000000023 Td +272.17692192000004 521.533 Td /F1.0 10.5 Tf -[<4c6f6f7054> 29.78515625 <656d706c617465>] TJ +<696e74656765722028696e74363429> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.200 0.200 0.200 scn 0.200 0.200 0.200 SCN BT -48.24 434.13600000000025 Td +48.24 471.9360000000001 Td /F2.0 18 Tf -<332e31352e204d6963726f53657276696365506f6c696379> Tj +[<332e31352e204c6f6f7054> 29.78515625 <656d706c6174654c6f6f70456c656d656e744d6f64656c>] TJ ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 394.200 220.937 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 394.200 294.583 23.280 re +48.240 432.000 220.937 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 356.640 220.937 37.560 re +269.177 432.000 294.583 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -269.177 356.640 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 319.080 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 319.080 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 281.520 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 281.520 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 243.960 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 243.960 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 206.400 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 206.400 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 168.840 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 168.840 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 131.280 220.937 37.560 re +48.240 394.440 220.937 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -269.177 131.280 294.583 37.560 re +269.177 394.440 294.583 37.560 re f 0.000 0.000 0.000 scn 0.976 0.976 0.976 scn -48.240 93.720 220.937 37.560 re +48.240 356.880 220.937 37.560 re f 0.000 0.000 0.000 scn 0.976 0.976 0.976 scn -269.177 93.720 294.583 37.560 re +269.177 356.880 294.583 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 56.160 220.937 37.560 re +48.240 319.320 220.937 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -269.177 56.160 294.583 37.560 re +269.177 319.320 294.583 37.560 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 417.480 m -269.177 417.480 l +48.240 455.280 m +269.177 455.280 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 394.200 m -269.177 394.200 l +48.240 432.000 m +269.177 432.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 417.730 m -48.240 393.450 l +48.240 455.530 m +48.240 431.250 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 417.730 m -269.177 393.450 l +269.177 455.530 m +269.177 431.250 l S [ ] 0 d 1 w @@ -40375,7 +45915,7 @@ S 0.200 0.200 0.200 scn BT -51.24 401.7330000000002 Td +51.24 439.533 Td /F2.0 10.5 Tf <4e616d65> Tj ET @@ -40383,26 +45923,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 417.480 m -563.760 417.480 l +269.177 455.280 m +563.760 455.280 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -269.177 394.200 m -563.760 394.200 l +269.177 432.000 m +563.760 432.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 417.730 m -269.177 393.450 l +269.177 455.530 m +269.177 431.250 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 417.730 m -563.760 393.450 l +563.760 455.530 m +563.760 431.250 l S [ ] 0 d 1 w @@ -40410,7 +45950,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 401.7330000000002 Td +272.17692192000004 439.533 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -40418,26 +45958,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 394.200 m -269.177 394.200 l +48.240 432.000 m +269.177 432.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 356.640 m -269.177 356.640 l +48.240 394.440 m +269.177 394.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 394.450 m -48.240 356.390 l +48.240 432.250 m +48.240 394.190 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 394.450 m -269.177 356.390 l +269.177 432.250 m +269.177 394.190 l S [ ] 0 d 1 w @@ -40445,19 +45985,19 @@ S 0.200 0.200 0.200 scn BT -51.24 377.95300000000015 Td +51.24 415.753 Td /F2.0 10.5 Tf -[<636f6e6669677572> 20.01953125 <6174696f6e734a736f6e>] TJ +<666c6f774f72646572> Tj ET BT -51.24 363.6730000000001 Td +51.24 401.47299999999996 Td ET BT -51.24 363.6730000000001 Td +51.24 401.47299999999996 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -40465,69 +46005,61 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 394.200 m -563.760 394.200 l +269.177 432.000 m +563.760 432.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 356.640 m -563.760 356.640 l +269.177 394.440 m +563.760 394.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 394.450 m -269.177 356.390 l +269.177 432.250 m +269.177 394.190 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 394.450 m -563.760 356.390 l +563.760 432.250 m +563.760 394.190 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -272.17692192000004 370.81300000000016 Td +272.17692192000004 408.613 Td /F1.0 10.5 Tf -<4a736f6e4f626a656374> Tj +<696e74656765722028696e74333229> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 356.640 m -269.177 356.640 l +48.240 394.440 m +269.177 394.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 319.080 m -269.177 319.080 l +48.240 356.880 m +269.177 356.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 356.890 m -48.240 318.830 l +48.240 394.690 m +48.240 356.630 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 356.890 m -269.177 318.830 l +269.177 394.690 m +269.177 356.630 l S [ ] 0 d 1 w @@ -40535,19 +46067,19 @@ S 0.200 0.200 0.200 scn BT -51.24 340.3930000000002 Td +51.24 378.19300000000004 Td /F2.0 10.5 Tf -<636f6e74657874> Tj +<6c6f6f70456c656d656e744d6f64656c> Tj ET BT -51.24 326.11300000000017 Td +51.24 363.913 Td ET BT -51.24 326.11300000000017 Td +51.24 363.913 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -40555,61 +46087,69 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 356.640 m -563.760 356.640 l +269.177 394.440 m +563.760 394.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 319.080 m -563.760 319.080 l +269.177 356.880 m +563.760 356.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 356.890 m -269.177 318.830 l +269.177 394.690 m +269.177 356.630 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 356.890 m -563.760 318.830 l +563.760 394.690 m +563.760 356.630 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT -272.17692192000004 333.2530000000002 Td +272.17692192000004 371.05300000000005 Td /F1.0 10.5 Tf -<737472696e67> Tj +<4c6f6f70456c656d656e744d6f64656c> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 319.080 m -269.177 319.080 l +48.240 356.880 m +269.177 356.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 281.520 m -269.177 281.520 l +48.240 319.320 m +269.177 319.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 319.330 m -48.240 281.270 l +48.240 357.130 m +48.240 319.070 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 319.330 m -269.177 281.270 l +269.177 357.130 m +269.177 319.070 l S [ ] 0 d 1 w @@ -40617,19 +46157,19 @@ S 0.200 0.200 0.200 scn BT -51.24 302.83300000000014 Td +51.24 340.633 Td /F2.0 10.5 Tf -[<6372656174656442> 20.01953125 <79>] TJ +[<6c6f6f7054> 29.78515625 <656d706c617465>] TJ ET BT -51.24 288.5530000000001 Td +51.24 326.35299999999995 Td ET BT -51.24 288.5530000000001 Td +51.24 326.35299999999995 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -40637,46 +46177,113 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 319.080 m -563.760 319.080 l +269.177 356.880 m +563.760 356.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 281.520 m -563.760 281.520 l +269.177 319.320 m +563.760 319.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 319.330 m -269.177 281.270 l +269.177 357.130 m +269.177 319.070 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 319.330 m -563.760 281.270 l +563.760 357.130 m +563.760 319.070 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT -272.17692192000004 295.69300000000015 Td +272.17692192000004 333.493 Td /F1.0 10.5 Tf -<737472696e67> Tj +[<4c6f6f7054> 29.78515625 <656d706c617465>] TJ ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24 283.896 Td +/F2.0 18 Tf +<332e31362e204d6963726f53657276696365506f6c696379> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 243.960 220.937 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 243.960 294.583 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 206.400 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 206.400 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 168.840 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 168.840 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 131.280 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 131.280 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 93.720 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 93.720 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 56.160 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 56.160 294.583 37.560 re +f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 281.520 m -269.177 281.520 l +48.240 267.240 m +269.177 267.240 l S [ ] 0 d -0.5 w +1.5 w 0.867 0.867 0.867 SCN 48.240 243.960 m 269.177 243.960 l @@ -40684,14 +46291,14 @@ S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 281.770 m -48.240 243.710 l +48.240 267.490 m +48.240 243.210 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 281.770 m -269.177 243.710 l +269.177 267.490 m +269.177 243.210 l S [ ] 0 d 1 w @@ -40699,31 +46306,19 @@ S 0.200 0.200 0.200 scn BT -51.24 265.2730000000002 Td +51.24 251.49299999999994 Td /F2.0 10.5 Tf -<6372656174656444617465> Tj -ET - - -BT -51.24 250.9930000000002 Td -ET - - -BT -51.24 250.9930000000002 Td -/F3.0 10.5 Tf -<6f7074696f6e616c> Tj +<4e616d65> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 281.520 m -563.760 281.520 l +269.177 267.240 m +563.760 267.240 l S [ ] 0 d -0.5 w +1.5 w 0.867 0.867 0.867 SCN 269.177 243.960 m 563.760 243.960 l @@ -40731,14 +46326,14 @@ S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 281.770 m -269.177 243.710 l +269.177 267.490 m +269.177 243.210 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 281.770 m -563.760 243.710 l +563.760 267.490 m +563.760 243.210 l S [ ] 0 d 1 w @@ -40746,9 +46341,9 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 258.1330000000002 Td -/F1.0 10.5 Tf -<696e74656765722028696e74363429> Tj +272.17692192000004 251.49299999999994 Td +/F2.0 10.5 Tf +<536368656d61> Tj ET 0.000 0.000 0.000 scn @@ -40781,19 +46376,19 @@ S 0.200 0.200 0.200 scn BT -51.24 227.7130000000002 Td +51.24 227.71299999999997 Td /F2.0 10.5 Tf -<64636165426c75657072696e744964> Tj +[<636f6e6669677572> 20.01953125 <6174696f6e734a736f6e>] TJ ET BT -51.24 213.4330000000002 Td +51.24 213.43299999999996 Td ET BT -51.24 213.4330000000002 Td +51.24 213.43299999999996 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -40826,13 +46421,21 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT -272.17692192000004 220.57300000000018 Td +272.17692192000004 220.57299999999995 Td /F1.0 10.5 Tf -<737472696e67> Tj +<4a736f6e4f626a656374> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -40863,19 +46466,19 @@ S 0.200 0.200 0.200 scn BT -51.24 190.1530000000002 Td +51.24 190.15299999999996 Td /F2.0 10.5 Tf -[<646361654465706c6f> 20.01953125 <796d656e744964>] TJ +<636f6e74657874> Tj ET BT -51.24 175.8730000000002 Td +51.24 175.87299999999996 Td ET BT -51.24 175.8730000000002 Td +51.24 175.87299999999996 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -40910,7 +46513,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 183.01300000000018 Td +272.17692192000004 183.01299999999995 Td /F1.0 10.5 Tf <737472696e67> Tj ET @@ -40945,19 +46548,19 @@ S 0.200 0.200 0.200 scn BT -51.24 152.5930000000002 Td +51.24 152.59299999999996 Td /F2.0 10.5 Tf -[<646361654465706c6f> 20.01953125 <796d656e7453746174757355726c>] TJ +[<6372656174656442> 20.01953125 <79>] TJ ET BT -51.24 138.3130000000002 Td +51.24 138.31299999999996 Td ET BT -51.24 138.3130000000002 Td +51.24 138.31299999999996 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -40992,7 +46595,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 145.45300000000017 Td +272.17692192000004 145.45299999999995 Td /F1.0 10.5 Tf <737472696e67> Tj ET @@ -41027,19 +46630,19 @@ S 0.200 0.200 0.200 scn BT -51.24 115.03300000000014 Td +51.24 115.03299999999994 Td /F2.0 10.5 Tf -<6465766963655479706553636f7065> Tj +<6372656174656444617465> Tj ET BT -51.24 100.75300000000014 Td +51.24 100.75299999999994 Td ET BT -51.24 100.75300000000014 Td +51.24 100.75299999999994 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -41074,9 +46677,9 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 107.89300000000014 Td +272.17692192000004 107.89299999999994 Td /F1.0 10.5 Tf -<737472696e67> Tj +<696e74656765722028696e74363429> Tj ET 0.000 0.000 0.000 scn @@ -41109,19 +46712,19 @@ S 0.200 0.200 0.200 scn BT -51.24 77.47300000000014 Td +51.24 77.47299999999994 Td /F2.0 10.5 Tf -<6a736f6e526570726573656e746174696f6e> Tj +<64636165426c75657072696e744964> Tj ET BT -51.24 63.19300000000014 Td +51.24 63.19299999999994 Td ET BT -51.24 63.19300000000014 Td +51.24 63.19299999999994 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -41154,21 +46757,13 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -272.17692192000004 70.33300000000014 Td +272.17692192000004 70.33299999999994 Td /F1.0 10.5 Tf -<4a736f6e4f626a656374> Tj +<737472696e67> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn q 0.000 0.000 0.000 scn @@ -41184,7 +46779,7 @@ q BT 552.698 14.388 Td /F1.0 9 Tf -<3235> Tj +<3239> Tj ET 0.000 0.000 0.000 SCN @@ -41194,62 +46789,67 @@ Q endstream endobj -277 0 obj +319 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 276 0 R +/Contents 318 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 22 0 R -/F3.0 24 0 R +/Font << /F2.0 24 0 R +/F3.0 26 0 R /F1.0 8 0 R >> -/XObject << /Stamp1 588 0 R +/XObject << /Stamp1 684 0 R >> >> -/Annots [279 0 R 280 0 R 282 0 R 283 0 R] +/Annots [320 0 R 323 0 R 324 0 R 326 0 R] >> endobj -278 0 obj -[277 0 R /XYZ 0 645.6000000000001 null] -endobj -279 0 obj +320 0 obj << /Border [0 0 0] -/Dest (_loopelementmodel) +/Dest (_service) /Subtype /Link -/Rect [272.17692192000004 518.2270000000002 369.88992192000006 532.5070000000002] +/Rect [272.17692192000004 706.267 308.65392192 720.547] /Type /Annot >> endobj -280 0 obj +321 0 obj +[319 0 R /XYZ 0 495.36000000000007 null] +endobj +322 0 obj +<< /Limits [(_loopelementmodel) (_parameters_14)] +/Names [(_loopelementmodel) 309 0 R (_looplog) 314 0 R (_looptemplate) 316 0 R (_looptemplateloopelementmodel) 321 0 R (_microservicepolicy) 325 0 R (_number) 333 0 R (_operationalpolicy) 334 0 R (_overview) 21 0 R (_parameters) 50 0 R (_parameters_10) 116 0 R (_parameters_11) 122 0 R (_parameters_12) 129 0 R (_parameters_13) 136 0 R (_parameters_14) 141 0 R] +>> +endobj +323 0 obj << /Border [0 0 0] -/Dest (_looptemplate) +/Dest (_loopelementmodel) /Subtype /Link -/Rect [272.17692192000004 480.6670000000002 343.82067777937505 494.94700000000023] +/Rect [272.17692192000004 367.987 369.88992192000006 382.26700000000005] /Type /Annot >> endobj -281 0 obj -[277 0 R /XYZ 0 457.56000000000023 null] -endobj -282 0 obj +324 0 obj << /Border [0 0 0] -/Dest (_jsonobject) +/Dest (_looptemplate) /Subtype /Link -/Rect [272.17692192000004 367.7470000000001 325.32792192000005 382.02700000000016] +/Rect [272.17692192000004 330.42699999999996 343.82067777937505 344.707] /Type /Annot >> endobj -283 0 obj +325 0 obj +[319 0 R /XYZ 0 307.32 null] +endobj +326 0 obj << /Border [0 0 0] /Dest (_jsonobject) /Subtype /Link -/Rect [272.17692192000004 67.26700000000014 325.32792192000005 81.54700000000014] +/Rect [272.17692192000004 217.50699999999998 325.32792192000005 231.78699999999998] /Type /Annot >> endobj -284 0 obj -<< /Length 20228 +327 0 obj +<< /Length 20041 >> stream q @@ -41334,6 +46934,38 @@ f 269.177 394.680 294.583 37.560 re f 0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 357.120 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 357.120 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 319.560 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 319.560 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 282.000 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 282.000 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 244.440 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 244.440 294.583 37.560 re +f +0.000 0.000 0.000 scn 0.5 w /DeviceRGB CS 0.867 0.867 0.867 SCN @@ -41434,19 +47066,19 @@ S 0.200 0.200 0.200 scn BT -51.24 716.4730000000002 Td +51.24 716.473 Td /F2.0 10.5 Tf -<6c6f6f70456c656d656e744d6f64656c> Tj +[<646361654465706c6f> 20.01953125 <796d656e744964>] TJ ET BT -51.24 702.1930000000001 Td +51.24 702.193 Td ET BT -51.24 702.1930000000001 Td +51.24 702.193 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -41479,21 +47111,13 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -272.17692192000004 709.3330000000001 Td +272.17692192000004 709.333 Td /F1.0 10.5 Tf -<4c6f6f70456c656d656e744d6f64656c> Tj +<737472696e67> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -41526,7 +47150,7 @@ S BT 51.24 678.913 Td /F2.0 10.5 Tf -<6e616d65> Tj +[<646361654465706c6f> 20.01953125 <796d656e7453746174757355726c>] TJ ET @@ -41608,17 +47232,17 @@ S BT 51.24 641.3530000000001 Td /F2.0 10.5 Tf -<70647047726f7570> Tj +<6465766963655479706553636f7065> Tj ET BT -51.24 627.0730000000001 Td +51.24 627.073 Td ET BT -51.24 627.0730000000001 Td +51.24 627.073 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -41653,7 +47277,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 634.2130000000001 Td +272.17692192000004 634.213 Td /F1.0 10.5 Tf <737472696e67> Tj ET @@ -41688,19 +47312,19 @@ S 0.200 0.200 0.200 scn BT -51.24 603.7930000000001 Td +51.24 603.7929999999999 Td /F2.0 10.5 Tf -<70647053756267726f7570> Tj +<6a736f6e526570726573656e746174696f6e> Tj ET BT -51.24 589.5130000000001 Td +51.24 589.5129999999999 Td ET BT -51.24 589.5130000000001 Td +51.24 589.5129999999999 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -41733,13 +47357,21 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT -272.17692192000004 596.6530000000001 Td +272.17692192000004 596.6529999999999 Td /F1.0 10.5 Tf -<737472696e67> Tj +<4a736f6e4f626a656374> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -41770,19 +47402,19 @@ S 0.200 0.200 0.200 scn BT -51.24 566.2330000000002 Td +51.24 566.233 Td /F2.0 10.5 Tf -<706f6c6963794d6f64656c> Tj +<6c6f6f70456c656d656e744d6f64656c> Tj ET BT -51.24 551.9530000000001 Td +51.24 551.953 Td ET BT -51.24 551.9530000000001 Td +51.24 551.953 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -41823,9 +47455,9 @@ S 0.259 0.545 0.792 SCN BT -272.17692192000004 559.0930000000001 Td +272.17692192000004 559.093 Td /F1.0 10.5 Tf -<506f6c6963794d6f64656c> Tj +<4c6f6f70456c656d656e744d6f64656c> Tj ET 0.000 0.000 0.000 SCN @@ -41862,7 +47494,7 @@ S BT 51.24 528.673 Td /F2.0 10.5 Tf -<736861726564> Tj +<6e616d65> Tj ET @@ -41909,7 +47541,7 @@ S BT 272.17692192000004 521.533 Td /F1.0 10.5 Tf -<626f6f6c65616e> Tj +<737472696e67> Tj ET 0.000 0.000 0.000 scn @@ -41942,19 +47574,19 @@ S 0.200 0.200 0.200 scn BT -51.24 491.1130000000001 Td +51.24 491.113 Td /F2.0 10.5 Tf -[<7570646174656442> 20.01953125 <79>] TJ +<70647047726f7570> Tj ET BT -51.24 476.8330000000001 Td +51.24 476.83299999999997 Td ET BT -51.24 476.8330000000001 Td +51.24 476.83299999999997 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -41989,7 +47621,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 483.9730000000001 Td +272.17692192000004 483.973 Td /F1.0 10.5 Tf <737472696e67> Tj ET @@ -42024,19 +47656,19 @@ S 0.200 0.200 0.200 scn BT -51.24 453.55300000000017 Td +51.24 453.553 Td /F2.0 10.5 Tf -<7570646174656444617465> Tj +<70647053756267726f7570> Tj ET BT -51.24 439.27300000000014 Td +51.24 439.273 Td ET BT -51.24 439.27300000000014 Td +51.24 439.273 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -42071,9 +47703,9 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 446.4130000000002 Td +272.17692192000004 446.413 Td /F1.0 10.5 Tf -<696e74656765722028696e74363429> Tj +<737472696e67> Tj ET 0.000 0.000 0.000 scn @@ -42106,19 +47738,19 @@ S 0.200 0.200 0.200 scn BT -51.24 415.9930000000002 Td +51.24 415.993 Td /F2.0 10.5 Tf -[<7573656442> 20.01953125 <794c6f6f7073>] TJ +<706f6c6963794d6f64656c> Tj ET BT -51.24 401.7130000000002 Td +51.24 401.71299999999997 Td ET BT -51.24 401.7130000000002 Td +51.24 401.71299999999997 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -42155,146 +47787,40 @@ S 0.259 0.545 0.792 SCN 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn - -BT -272.17692192000004 408.85300000000024 Td -/F1.0 10.5 Tf -<3c20> Tj -ET - 0.259 0.545 0.792 scn 0.259 0.545 0.792 SCN BT -280.76592192000004 408.85300000000024 Td -/F1.0 10.5 Tf -<4c6f6f70> Tj -ET - -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn - -BT -305.86092192000007 408.85300000000024 Td -/F1.0 10.5 Tf -[<203e20617272> 20.01953125 <61> 20.01953125 <79>] TJ -ET - -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -48.24 359.25600000000026 Td -/F2.0 18 Tf -<332e31362e204e756d626572> Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -48.24 330.6360000000002 Td -/F3.0 10.5 Tf -<54797065> Tj -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -71.4345 330.6360000000002 Td +272.17692192000004 408.853 Td /F1.0 10.5 Tf -<203a206f626a656374> Tj +<506f6c6963794d6f64656c> Tj ET 0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn 0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -48.24 291.3960000000002 Td -/F2.0 18 Tf -[<332e31372e204f706572> 20.01953125 <6174696f6e616c506f6c696379>] TJ -ET - -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 251.460 220.937 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 251.460 294.583 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 213.900 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 213.900 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 176.340 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 176.340 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 138.780 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 138.780 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 101.220 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 101.220 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 63.660 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 63.660 294.583 37.560 re -f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 274.740 m -269.177 274.740 l +48.240 394.680 m +269.177 394.680 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -48.240 251.460 m -269.177 251.460 l +48.240 357.120 m +269.177 357.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 274.990 m -48.240 250.710 l +48.240 394.930 m +48.240 356.870 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 274.990 m -269.177 250.710 l +269.177 394.930 m +269.177 356.870 l S [ ] 0 d 1 w @@ -42302,34 +47828,46 @@ S 0.200 0.200 0.200 scn BT -51.24 258.9930000000001 Td +51.24 378.43299999999994 Td /F2.0 10.5 Tf -<4e616d65> Tj +<736861726564> Tj +ET + + +BT +51.24 364.1529999999999 Td +ET + + +BT +51.24 364.1529999999999 Td +/F3.0 10.5 Tf +<6f7074696f6e616c> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 274.740 m -563.760 274.740 l +269.177 394.680 m +563.760 394.680 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -269.177 251.460 m -563.760 251.460 l +269.177 357.120 m +563.760 357.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 274.990 m -269.177 250.710 l +269.177 394.930 m +269.177 356.870 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 274.990 m -563.760 250.710 l +563.760 394.930 m +563.760 356.870 l S [ ] 0 d 1 w @@ -42337,34 +47875,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 258.9930000000001 Td -/F2.0 10.5 Tf -<536368656d61> Tj +272.17692192000004 371.29299999999995 Td +/F1.0 10.5 Tf +<626f6f6c65616e> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 251.460 m -269.177 251.460 l +48.240 357.120 m +269.177 357.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 213.900 m -269.177 213.900 l +48.240 319.560 m +269.177 319.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 251.710 m -48.240 213.650 l +48.240 357.370 m +48.240 319.310 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 251.710 m -269.177 213.650 l +269.177 357.370 m +269.177 319.310 l S [ ] 0 d 1 w @@ -42372,19 +47910,19 @@ S 0.200 0.200 0.200 scn BT -51.24 235.21300000000014 Td +51.24 340.873 Td /F2.0 10.5 Tf -[<636f6e6669677572> 20.01953125 <6174696f6e734a736f6e>] TJ +[<7570646174656442> 20.01953125 <79>] TJ ET BT -51.24 220.93300000000013 Td +51.24 326.59299999999996 Td ET BT -51.24 220.93300000000013 Td +51.24 326.59299999999996 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -42392,69 +47930,61 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 251.460 m -563.760 251.460 l +269.177 357.120 m +563.760 357.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 213.900 m -563.760 213.900 l +269.177 319.560 m +563.760 319.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 251.710 m -269.177 213.650 l +269.177 357.370 m +269.177 319.310 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 251.710 m -563.760 213.650 l +563.760 357.370 m +563.760 319.310 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -272.17692192000004 228.07300000000012 Td +272.17692192000004 333.733 Td /F1.0 10.5 Tf -<4a736f6e4f626a656374> Tj +<737472696e67> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 213.900 m -269.177 213.900 l +48.240 319.560 m +269.177 319.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 176.340 m -269.177 176.340 l +48.240 282.000 m +269.177 282.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 214.150 m -48.240 176.090 l +48.240 319.810 m +48.240 281.750 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 214.150 m -269.177 176.090 l +269.177 319.810 m +269.177 281.750 l S [ ] 0 d 1 w @@ -42462,19 +47992,19 @@ S 0.200 0.200 0.200 scn BT -51.24 197.65300000000013 Td +51.24 303.31300000000005 Td /F2.0 10.5 Tf -[<6372656174656442> 20.01953125 <79>] TJ +<7570646174656444617465> Tj ET BT -51.24 183.37300000000013 Td +51.24 289.033 Td ET BT -51.24 183.37300000000013 Td +51.24 289.033 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -42482,26 +48012,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 213.900 m -563.760 213.900 l +269.177 319.560 m +563.760 319.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 176.340 m -563.760 176.340 l +269.177 282.000 m +563.760 282.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 214.150 m -269.177 176.090 l +269.177 319.810 m +269.177 281.750 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 214.150 m -563.760 176.090 l +563.760 319.810 m +563.760 281.750 l S [ ] 0 d 1 w @@ -42509,34 +48039,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 190.51300000000012 Td +272.17692192000004 296.17300000000006 Td /F1.0 10.5 Tf -<737472696e67> Tj +<696e74656765722028696e74363429> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 176.340 m -269.177 176.340 l +48.240 282.000 m +269.177 282.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 138.780 m -269.177 138.780 l +48.240 244.440 m +269.177 244.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 176.590 m -48.240 138.530 l +48.240 282.250 m +48.240 244.190 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 176.590 m -269.177 138.530 l +269.177 282.250 m +269.177 244.190 l S [ ] 0 d 1 w @@ -42544,19 +48074,19 @@ S 0.200 0.200 0.200 scn BT -51.24 160.09300000000013 Td +51.24 265.7530000000001 Td /F2.0 10.5 Tf -<6372656174656444617465> Tj +[<7573656442> 20.01953125 <794c6f6f7073>] TJ ET BT -51.24 145.81300000000013 Td +51.24 251.4730000000001 Td ET BT -51.24 145.81300000000013 Td +51.24 251.4730000000001 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -42564,46 +48094,128 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 176.340 m -563.760 176.340 l +269.177 282.000 m +563.760 282.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 138.780 m -563.760 138.780 l +269.177 244.440 m +563.760 244.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 176.590 m -269.177 138.530 l +269.177 282.250 m +269.177 244.190 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 176.590 m -563.760 138.530 l +563.760 282.250 m +563.760 244.190 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn BT -272.17692192000004 152.95300000000012 Td +272.17692192000004 258.6130000000001 Td /F1.0 10.5 Tf -<696e74656765722028696e74363429> Tj +<3c20> Tj +ET + +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN + +BT +280.76592192000004 258.6130000000001 Td +/F1.0 10.5 Tf +<4c6f6f70> Tj +ET + +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +305.86092192000007 258.6130000000001 Td +/F1.0 10.5 Tf +[<203e20617272> 20.01953125 <61> 20.01953125 <79>] TJ +ET + +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24 209.0160000000001 Td +/F2.0 18 Tf +<332e31372e204e756d626572> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24 180.3960000000001 Td +/F3.0 10.5 Tf +<54797065> Tj +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +71.4345 180.3960000000001 Td +/F1.0 10.5 Tf +<203a206f626a656374> Tj ET +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24 141.15600000000006 Td +/F2.0 18 Tf +[<332e31382e204f706572> 20.01953125 <6174696f6e616c506f6c696379>] TJ +ET + +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 101.220 220.937 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 101.220 294.583 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 63.660 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 63.660 294.583 37.560 re +f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 138.780 m -269.177 138.780 l +48.240 124.500 m +269.177 124.500 l S [ ] 0 d -0.5 w +1.5 w 0.867 0.867 0.867 SCN 48.240 101.220 m 269.177 101.220 l @@ -42611,14 +48223,14 @@ S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 139.030 m -48.240 100.970 l +48.240 124.750 m +48.240 100.470 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 139.030 m -269.177 100.970 l +269.177 124.750 m +269.177 100.470 l S [ ] 0 d 1 w @@ -42626,31 +48238,19 @@ S 0.200 0.200 0.200 scn BT -51.24 122.53300000000013 Td +51.24 108.75300000000009 Td /F2.0 10.5 Tf -<6a736f6e526570726573656e746174696f6e> Tj -ET - - -BT -51.24 108.25300000000013 Td -ET - - -BT -51.24 108.25300000000013 Td -/F3.0 10.5 Tf -<6f7074696f6e616c> Tj +<4e616d65> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 138.780 m -563.760 138.780 l +269.177 124.500 m +563.760 124.500 l S [ ] 0 d -0.5 w +1.5 w 0.867 0.867 0.867 SCN 269.177 101.220 m 563.760 101.220 l @@ -42658,34 +48258,26 @@ S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 139.030 m -269.177 100.970 l +269.177 124.750 m +269.177 100.470 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 139.030 m -563.760 100.970 l +563.760 124.750 m +563.760 100.470 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -272.17692192000004 115.39300000000013 Td -/F1.0 10.5 Tf -<4a736f6e4f626a656374> Tj +272.17692192000004 108.75300000000009 Td +/F2.0 10.5 Tf +<536368656d61> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -42716,19 +48308,19 @@ S 0.200 0.200 0.200 scn BT -51.24 84.97300000000011 Td +51.24 84.97300000000008 Td /F2.0 10.5 Tf -<6c6567616379> Tj +[<636f6e6669677572> 20.01953125 <6174696f6e734a736f6e>] TJ ET BT -51.24 70.69300000000011 Td +51.24 70.69300000000008 Td ET BT -51.24 70.69300000000011 Td +51.24 70.69300000000008 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -42761,13 +48353,21 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT -272.17692192000004 77.83300000000011 Td +272.17692192000004 77.83300000000008 Td /F1.0 10.5 Tf -<626f6f6c65616e> Tj +<4a736f6e4f626a656374> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn q 0.000 0.000 0.000 scn @@ -42783,7 +48383,7 @@ q BT 49.24 14.388 Td /F1.0 9 Tf -<3236> Tj +<3330> Tj ET 0.000 0.000 0.000 SCN @@ -42793,70 +48393,70 @@ Q endstream endobj -285 0 obj +328 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 284 0 R +/Contents 327 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 22 0 R -/F3.0 24 0 R +/Font << /F2.0 24 0 R +/F3.0 26 0 R /F1.0 8 0 R >> -/XObject << /Stamp1 588 0 R +/XObject << /Stamp1 684 0 R >> >> -/Annots [286 0 R 287 0 R 288 0 R 291 0 R 292 0 R] +/Annots [329 0 R 330 0 R 331 0 R 332 0 R 335 0 R] >> endobj -286 0 obj +329 0 obj << /Border [0 0 0] -/Dest (_loopelementmodel) +/Dest (_jsonobject) /Subtype /Link -/Rect [272.17692192000004 706.2670000000002 369.88992192000006 720.5470000000001] +/Rect [272.17692192000004 593.587 325.32792192000005 607.867] /Type /Annot >> endobj -287 0 obj +330 0 obj << /Border [0 0 0] -/Dest (_policymodel) +/Dest (_loopelementmodel) /Subtype /Link -/Rect [272.17692192000004 556.0270000000002 333.47592192 570.3070000000001] +/Rect [272.17692192000004 556.027 369.88992192000006 570.307] /Type /Annot >> endobj -288 0 obj +331 0 obj << /Border [0 0 0] -/Dest (_loop) +/Dest (_policymodel) /Subtype /Link -/Rect [280.76592192000004 405.7870000000002 305.86092192000007 420.06700000000023] +/Rect [272.17692192000004 405.787 333.47592192 420.067] /Type /Annot >> endobj -289 0 obj -[285 0 R /XYZ 0 382.68000000000023 null] -endobj -290 0 obj -[285 0 R /XYZ 0 314.82000000000016 null] -endobj -291 0 obj +332 0 obj << /Border [0 0 0] -/Dest (_jsonobject) +/Dest (_loop) /Subtype /Link -/Rect [272.17692192000004 225.00700000000015 325.32792192000005 239.28700000000015] +/Rect [280.76592192000004 255.5470000000001 305.86092192000007 269.8270000000001] /Type /Annot >> endobj -292 0 obj +333 0 obj +[328 0 R /XYZ 0 232.4400000000001 null] +endobj +334 0 obj +[328 0 R /XYZ 0 164.5800000000001 null] +endobj +335 0 obj << /Border [0 0 0] /Dest (_jsonobject) /Subtype /Link -/Rect [272.17692192000004 112.32700000000013 325.32792192000005 126.60700000000013] +/Rect [272.17692192000004 74.76700000000008 325.32792192000005 89.04700000000008] /Type /Annot >> endobj -293 0 obj -<< /Length 21473 +336 0 obj +<< /Length 21339 >> stream q @@ -42933,6 +48533,38 @@ f 269.177 432.240 294.583 37.560 re f 0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 394.680 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 394.680 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 357.120 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 357.120 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 319.560 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 319.560 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 282.000 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 282.000 294.583 37.560 re +f +0.000 0.000 0.000 scn 0.5 w /DeviceRGB CS 0.867 0.867 0.867 SCN @@ -43035,7 +48667,7 @@ S BT 51.24 716.473 Td /F2.0 10.5 Tf -<6c6f6f70> Tj +[<6372656174656442> 20.01953125 <79>] TJ ET @@ -43078,21 +48710,13 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT 272.17692192000004 709.333 Td /F1.0 10.5 Tf -<4c6f6f70> Tj +<737472696e67> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -43125,7 +48749,7 @@ S BT 51.24 678.913 Td /F2.0 10.5 Tf -<6c6f6f70456c656d656e744d6f64656c> Tj +<6372656174656444617465> Tj ET @@ -43168,21 +48792,13 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT 272.17692192000004 671.773 Td /F1.0 10.5 Tf -<4c6f6f70456c656d656e744d6f64656c> Tj +<696e74656765722028696e74363429> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -43215,7 +48831,7 @@ S BT 51.24 641.3530000000001 Td /F2.0 10.5 Tf -<6e616d65> Tj +<6a736f6e526570726573656e746174696f6e> Tj ET @@ -43258,13 +48874,21 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT 272.17692192000004 634.213 Td /F1.0 10.5 Tf -<737472696e67> Tj +<4a736f6e4f626a656374> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -43295,19 +48919,19 @@ S 0.200 0.200 0.200 scn BT -51.24 603.7929999999999 Td +51.24 603.7930000000001 Td /F2.0 10.5 Tf -<70647047726f7570> Tj +<6c6567616379> Tj ET BT -51.24 589.5129999999999 Td +51.24 589.513 Td ET BT -51.24 589.5129999999999 Td +51.24 589.513 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -43342,9 +48966,9 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 596.6529999999999 Td +272.17692192000004 596.653 Td /F1.0 10.5 Tf -<737472696e67> Tj +<626f6f6c65616e> Tj ET 0.000 0.000 0.000 scn @@ -43379,7 +49003,7 @@ S BT 51.24 566.233 Td /F2.0 10.5 Tf -<70647053756267726f7570> Tj +<6c6f6f70> Tj ET @@ -43422,13 +49046,21 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT 272.17692192000004 559.093 Td /F1.0 10.5 Tf -<737472696e67> Tj +<4c6f6f70> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -43461,7 +49093,7 @@ S BT 51.24 528.673 Td /F2.0 10.5 Tf -<706f6c6963794d6f64656c> Tj +<6c6f6f70456c656d656e744d6f64656c> Tj ET @@ -43514,7 +49146,7 @@ S BT 272.17692192000004 521.533 Td /F1.0 10.5 Tf -<506f6c6963794d6f64656c> Tj +<4c6f6f70456c656d656e744d6f64656c> Tj ET 0.000 0.000 0.000 SCN @@ -43551,7 +49183,7 @@ S BT 51.24 491.113 Td /F2.0 10.5 Tf -[<7570646174656442> 20.01953125 <79>] TJ +<6e616d65> Tj ET @@ -43633,7 +49265,7 @@ S BT 51.24 453.553 Td /F2.0 10.5 Tf -<7570646174656444617465> Tj +<70647047726f7570> Tj ET @@ -43680,115 +49312,32 @@ S BT 272.17692192000004 446.413 Td /F1.0 10.5 Tf -<696e74656765722028696e74363429> Tj -ET - -0.000 0.000 0.000 scn -0.200 0.200 0.200 scn -0.200 0.200 0.200 SCN - -BT -48.24 396.81600000000003 Td -/F2.0 18 Tf -<332e31382e20506f6c6963794d6f64656c> Tj +<737472696e67> Tj ET -0.000 0.000 0.000 SCN -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 356.880 220.937 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 356.880 294.583 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 319.320 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 319.320 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 281.760 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 281.760 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 244.200 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 244.200 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 206.640 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 206.640 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 169.080 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 169.080 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 131.520 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 131.520 294.583 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -48.240 93.960 220.937 37.560 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 93.960 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -48.240 56.400 220.937 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn -269.177 56.400 294.583 37.560 re -f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 380.160 m -269.177 380.160 l +48.240 432.240 m +269.177 432.240 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -48.240 356.880 m -269.177 356.880 l +48.240 394.680 m +269.177 394.680 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 380.410 m -48.240 356.130 l +48.240 432.490 m +48.240 394.430 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 380.410 m -269.177 356.130 l +269.177 432.490 m +269.177 394.430 l S [ ] 0 d 1 w @@ -43796,34 +49345,46 @@ S 0.200 0.200 0.200 scn BT -51.24 364.41299999999995 Td +51.24 415.993 Td /F2.0 10.5 Tf -<4e616d65> Tj +<70647053756267726f7570> Tj +ET + + +BT +51.24 401.71299999999997 Td +ET + + +BT +51.24 401.71299999999997 Td +/F3.0 10.5 Tf +<6f7074696f6e616c> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 380.160 m -563.760 380.160 l +269.177 432.240 m +563.760 432.240 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -269.177 356.880 m -563.760 356.880 l +269.177 394.680 m +563.760 394.680 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 380.410 m -269.177 356.130 l +269.177 432.490 m +269.177 394.430 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 380.410 m -563.760 356.130 l +563.760 432.490 m +563.760 394.430 l S [ ] 0 d 1 w @@ -43831,34 +49392,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 364.41299999999995 Td -/F2.0 10.5 Tf -<536368656d61> Tj +272.17692192000004 408.853 Td +/F1.0 10.5 Tf +<737472696e67> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 356.880 m -269.177 356.880 l +48.240 394.680 m +269.177 394.680 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 319.320 m -269.177 319.320 l +48.240 357.120 m +269.177 357.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 357.130 m -48.240 319.070 l +48.240 394.930 m +48.240 356.870 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 357.130 m -269.177 319.070 l +269.177 394.930 m +269.177 356.870 l S [ ] 0 d 1 w @@ -43866,19 +49427,19 @@ S 0.200 0.200 0.200 scn BT -51.24 340.633 Td +51.24 378.433 Td /F2.0 10.5 Tf -[<6372656174656442> 20.01953125 <79>] TJ +<706f6c6963794d6f64656c> Tj ET BT -51.24 326.35299999999995 Td +51.24 364.153 Td ET BT -51.24 326.35299999999995 Td +51.24 364.153 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -43886,61 +49447,69 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 356.880 m -563.760 356.880 l +269.177 394.680 m +563.760 394.680 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 319.320 m -563.760 319.320 l +269.177 357.120 m +563.760 357.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 357.130 m -269.177 319.070 l +269.177 394.930 m +269.177 356.870 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 357.130 m -563.760 319.070 l +563.760 394.930 m +563.760 356.870 l S [ ] 0 d 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT -272.17692192000004 333.493 Td +272.17692192000004 371.293 Td /F1.0 10.5 Tf -<737472696e67> Tj +<506f6c6963794d6f64656c> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 319.320 m -269.177 319.320 l +48.240 357.120 m +269.177 357.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 281.760 m -269.177 281.760 l +48.240 319.560 m +269.177 319.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 319.570 m -48.240 281.510 l +48.240 357.370 m +48.240 319.310 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 319.570 m -269.177 281.510 l +269.177 357.370 m +269.177 319.310 l S [ ] 0 d 1 w @@ -43948,19 +49517,19 @@ S 0.200 0.200 0.200 scn BT -51.24 303.0729999999999 Td +51.24 340.873 Td /F2.0 10.5 Tf -<6372656174656444617465> Tj +[<7570646174656442> 20.01953125 <79>] TJ ET BT -51.24 288.7929999999999 Td +51.24 326.59299999999996 Td ET BT -51.24 288.7929999999999 Td +51.24 326.59299999999996 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -43968,26 +49537,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 319.320 m -563.760 319.320 l +269.177 357.120 m +563.760 357.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 281.760 m -563.760 281.760 l +269.177 319.560 m +563.760 319.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 319.570 m -269.177 281.510 l +269.177 357.370 m +269.177 319.310 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 319.570 m -563.760 281.510 l +563.760 357.370 m +563.760 319.310 l S [ ] 0 d 1 w @@ -43995,34 +49564,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 295.93299999999994 Td +272.17692192000004 333.733 Td /F1.0 10.5 Tf -<696e74656765722028696e74363429> Tj +<737472696e67> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 281.760 m -269.177 281.760 l +48.240 319.560 m +269.177 319.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 244.200 m -269.177 244.200 l +48.240 282.000 m +269.177 282.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 282.010 m -48.240 243.950 l +48.240 319.810 m +48.240 281.750 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 282.010 m -269.177 243.950 l +269.177 319.810 m +269.177 281.750 l S [ ] 0 d 1 w @@ -44030,19 +49599,19 @@ S 0.200 0.200 0.200 scn BT -51.24 265.513 Td +51.24 303.313 Td /F2.0 10.5 Tf -[<706f6c69637941> 20.01953125 <63726f6e> 20.01953125 <796d>] TJ +<7570646174656444617465> Tj ET BT -51.24 251.23299999999998 Td +51.24 289.033 Td ET BT -51.24 251.23299999999998 Td +51.24 289.033 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -44050,26 +49619,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 281.760 m -563.760 281.760 l +269.177 319.560 m +563.760 319.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 244.200 m -563.760 244.200 l +269.177 282.000 m +563.760 282.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 282.010 m -269.177 243.950 l +269.177 319.810 m +269.177 281.750 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 282.010 m -563.760 243.950 l +563.760 319.810 m +563.760 281.750 l S [ ] 0 d 1 w @@ -44077,19 +49646,70 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 258.373 Td +272.17692192000004 296.173 Td /F1.0 10.5 Tf -<737472696e67> Tj +<696e74656765722028696e74363429> Tj +ET + +0.000 0.000 0.000 scn +0.200 0.200 0.200 scn +0.200 0.200 0.200 SCN + +BT +48.24 246.57600000000002 Td +/F2.0 18 Tf +<332e31392e20506f6c6963794d6f64656c> Tj ET +0.000 0.000 0.000 SCN +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 206.640 220.937 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 206.640 294.583 23.280 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 169.080 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 169.080 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 131.520 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 131.520 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 93.960 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 93.960 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 56.400 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 56.400 294.583 37.560 re +f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 244.200 m -269.177 244.200 l +48.240 229.920 m +269.177 229.920 l S [ ] 0 d -0.5 w +1.5 w 0.867 0.867 0.867 SCN 48.240 206.640 m 269.177 206.640 l @@ -44097,14 +49717,14 @@ S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 244.450 m -48.240 206.390 l +48.240 230.170 m +48.240 205.890 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 244.450 m -269.177 206.390 l +269.177 230.170 m +269.177 205.890 l S [ ] 0 d 1 w @@ -44112,31 +49732,19 @@ S 0.200 0.200 0.200 scn BT -51.24 227.95299999999997 Td +51.24 214.17300000000003 Td /F2.0 10.5 Tf -[<706f6c6963794d6f64656c54> 29.78515625 <6f736361>] TJ -ET - - -BT -51.24 213.67299999999997 Td -ET - - -BT -51.24 213.67299999999997 Td -/F3.0 10.5 Tf -<6f7074696f6e616c> Tj +<4e616d65> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 244.200 m -563.760 244.200 l +269.177 229.920 m +563.760 229.920 l S [ ] 0 d -0.5 w +1.5 w 0.867 0.867 0.867 SCN 269.177 206.640 m 563.760 206.640 l @@ -44144,14 +49752,14 @@ S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 244.450 m -269.177 206.390 l +269.177 230.170 m +269.177 205.890 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 244.450 m -563.760 206.390 l +563.760 230.170 m +563.760 205.890 l S [ ] 0 d 1 w @@ -44159,9 +49767,9 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 220.81299999999996 Td -/F1.0 10.5 Tf -<737472696e67> Tj +272.17692192000004 214.17300000000003 Td +/F2.0 10.5 Tf +<536368656d61> Tj ET 0.000 0.000 0.000 scn @@ -44194,19 +49802,19 @@ S 0.200 0.200 0.200 scn BT -51.24 190.39299999999997 Td +51.24 190.39300000000003 Td /F2.0 10.5 Tf -<706f6c6963794d6f64656c54797065> Tj +[<6372656174656442> 20.01953125 <79>] TJ ET BT -51.24 176.11299999999997 Td +51.24 176.11300000000003 Td ET BT -51.24 176.11299999999997 Td +51.24 176.11300000000003 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -44241,7 +49849,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 183.25299999999996 Td +272.17692192000004 183.25300000000001 Td /F1.0 10.5 Tf <737472696e67> Tj ET @@ -44276,19 +49884,19 @@ S 0.200 0.200 0.200 scn BT -51.24 152.83299999999997 Td +51.24 152.83300000000003 Td /F2.0 10.5 Tf -<706f6c69637950647047726f7570> Tj +<6372656174656444617465> Tj ET BT -51.24 138.55299999999997 Td +51.24 138.55300000000003 Td ET BT -51.24 138.55299999999997 Td +51.24 138.55300000000003 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -44321,21 +49929,13 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT -272.17692192000004 145.69299999999996 Td +272.17692192000004 145.693 Td /F1.0 10.5 Tf -<4a736f6e4f626a656374> Tj +<696e74656765722028696e74363429> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -44366,19 +49966,19 @@ S 0.200 0.200 0.200 scn BT -51.24 115.27299999999995 Td +51.24 115.27300000000001 Td /F2.0 10.5 Tf -[<7570646174656442> 20.01953125 <79>] TJ +[<706f6c69637941> 20.01953125 <63726f6e> 20.01953125 <796d>] TJ ET BT -51.24 100.99299999999995 Td +51.24 100.99300000000001 Td ET BT -51.24 100.99299999999995 Td +51.24 100.99300000000001 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -44413,7 +50013,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 108.13299999999995 Td +272.17692192000004 108.13300000000001 Td /F1.0 10.5 Tf <737472696e67> Tj ET @@ -44448,19 +50048,19 @@ S 0.200 0.200 0.200 scn BT -51.24 77.71299999999992 Td +51.24 77.71300000000001 Td /F2.0 10.5 Tf -<7570646174656444617465> Tj +[<706f6c6963794d6f64656c54> 29.78515625 <6f736361>] TJ ET BT -51.24 63.43299999999992 Td +51.24 63.43300000000001 Td ET BT -51.24 63.43299999999992 Td +51.24 63.43300000000001 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -44495,9 +50095,9 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 70.57299999999992 Td +272.17692192000004 70.57300000000001 Td /F1.0 10.5 Tf -<696e74656765722028696e74363429> Tj +<737472696e67> Tj ET 0.000 0.000 0.000 scn @@ -44515,7 +50115,7 @@ q BT 552.698 14.388 Td /F1.0 9 Tf -<3237> Tj +<3331> Tj ET 0.000 0.000 0.000 SCN @@ -44525,59 +50125,59 @@ Q endstream endobj -294 0 obj +337 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 293 0 R +/Contents 336 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 22 0 R -/F3.0 24 0 R +/Font << /F2.0 24 0 R +/F3.0 26 0 R /F1.0 8 0 R >> -/XObject << /Stamp1 588 0 R +/XObject << /Stamp1 684 0 R >> >> -/Annots [295 0 R 296 0 R 297 0 R 299 0 R] +/Annots [338 0 R 339 0 R 340 0 R 341 0 R] >> endobj -295 0 obj +338 0 obj << /Border [0 0 0] -/Dest (_loop) +/Dest (_jsonobject) /Subtype /Link -/Rect [272.17692192000004 706.267 297.27192192000007 720.547] +/Rect [272.17692192000004 631.147 325.32792192000005 645.427] /Type /Annot >> endobj -296 0 obj +339 0 obj << /Border [0 0 0] -/Dest (_loopelementmodel) +/Dest (_loop) /Subtype /Link -/Rect [272.17692192000004 668.7070000000001 369.88992192000006 682.9870000000001] +/Rect [272.17692192000004 556.027 297.27192192000007 570.307] /Type /Annot >> endobj -297 0 obj +340 0 obj << /Border [0 0 0] -/Dest (_policymodel) +/Dest (_loopelementmodel) /Subtype /Link -/Rect [272.17692192000004 518.4670000000001 333.47592192 532.7470000000001] +/Rect [272.17692192000004 518.4670000000001 369.88992192000006 532.7470000000001] /Type /Annot >> endobj -298 0 obj -[294 0 R /XYZ 0 420.24 null] -endobj -299 0 obj +341 0 obj << /Border [0 0 0] -/Dest (_jsonobject) +/Dest (_policymodel) /Subtype /Link -/Rect [272.17692192000004 142.62699999999998 325.32792192000005 156.90699999999998] +/Rect [272.17692192000004 368.227 333.47592192 382.507] /Type /Annot >> endobj -300 0 obj -<< /Length 11146 +342 0 obj +[337 0 R /XYZ 0 270.0 null] +endobj +343 0 obj +<< /Length 15969 >> stream q @@ -44606,6 +50206,38 @@ f 269.177 657.600 294.583 37.560 re f 0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 620.040 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 620.040 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 582.480 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 582.480 294.583 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +48.240 544.920 220.937 37.560 re +f +0.000 0.000 0.000 scn +1.000 1.000 1.000 scn +269.177 544.920 294.583 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 507.360 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 507.360 294.583 37.560 re +f +0.000 0.000 0.000 scn 0.5 w /DeviceRGB CS 0.867 0.867 0.867 SCN @@ -44636,34 +50268,370 @@ S 0.200 0.200 0.200 scn BT -51.24 740.2529999999999 Td -/F2.0 10.5 Tf -<4e616d65> Tj +51.24 740.2529999999999 Td +/F2.0 10.5 Tf +<4e616d65> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +269.177 756.000 m +563.760 756.000 l +S +[ ] 0 d +1.5 w +0.867 0.867 0.867 SCN +269.177 732.720 m +563.760 732.720 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +269.177 756.250 m +269.177 731.970 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 756.250 m +563.760 731.970 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +272.17692192000004 740.2529999999999 Td +/F2.0 10.5 Tf +<536368656d61> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 732.720 m +269.177 732.720 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 695.160 m +269.177 695.160 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 732.970 m +48.240 694.910 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +269.177 732.970 m +269.177 694.910 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24 716.473 Td +/F2.0 10.5 Tf +<706f6c6963794d6f64656c54797065> Tj +ET + + +BT +51.24 702.193 Td +ET + + +BT +51.24 702.193 Td +/F3.0 10.5 Tf +<6f7074696f6e616c> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +269.177 732.720 m +563.760 732.720 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +269.177 695.160 m +563.760 695.160 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +269.177 732.970 m +269.177 694.910 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 732.970 m +563.760 694.910 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +272.17692192000004 709.333 Td +/F1.0 10.5 Tf +<737472696e67> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 695.160 m +269.177 695.160 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 657.600 m +269.177 657.600 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 695.410 m +48.240 657.350 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +269.177 695.410 m +269.177 657.350 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24 678.913 Td +/F2.0 10.5 Tf +<706f6c69637950647047726f7570> Tj +ET + + +BT +51.24 664.6329999999999 Td +ET + + +BT +51.24 664.6329999999999 Td +/F3.0 10.5 Tf +<6f7074696f6e616c> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +269.177 695.160 m +563.760 695.160 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +269.177 657.600 m +563.760 657.600 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +269.177 695.410 m +269.177 657.350 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 695.410 m +563.760 657.350 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN + +BT +272.17692192000004 671.7729999999999 Td +/F1.0 10.5 Tf +<4a736f6e4f626a656374> Tj +ET + +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 657.600 m +269.177 657.600 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 620.040 m +269.177 620.040 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 657.850 m +48.240 619.790 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +269.177 657.850 m +269.177 619.790 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24 641.3530000000001 Td +/F2.0 10.5 Tf +[<7570646174656442> 20.01953125 <79>] TJ +ET + + +BT +51.24 627.073 Td +ET + + +BT +51.24 627.073 Td +/F3.0 10.5 Tf +<6f7074696f6e616c> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +269.177 657.600 m +563.760 657.600 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +269.177 620.040 m +563.760 620.040 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +269.177 657.850 m +269.177 619.790 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 657.850 m +563.760 619.790 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +272.17692192000004 634.213 Td +/F1.0 10.5 Tf +<737472696e67> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 620.040 m +269.177 620.040 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 582.480 m +269.177 582.480 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 620.290 m +48.240 582.230 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +269.177 620.290 m +269.177 582.230 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24 603.7929999999999 Td +/F2.0 10.5 Tf +<7570646174656444617465> Tj +ET + + +BT +51.24 589.5129999999999 Td +ET + + +BT +51.24 589.5129999999999 Td +/F3.0 10.5 Tf +<6f7074696f6e616c> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 756.000 m -563.760 756.000 l +269.177 620.040 m +563.760 620.040 l S [ ] 0 d -1.5 w +0.5 w 0.867 0.867 0.867 SCN -269.177 732.720 m -563.760 732.720 l +269.177 582.480 m +563.760 582.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 756.250 m -269.177 731.970 l +269.177 620.290 m +269.177 582.230 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 756.250 m -563.760 731.970 l +563.760 620.290 m +563.760 582.230 l S [ ] 0 d 1 w @@ -44671,34 +50639,34 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 740.2529999999999 Td -/F2.0 10.5 Tf -<536368656d61> Tj +272.17692192000004 596.6529999999999 Td +/F1.0 10.5 Tf +<696e74656765722028696e74363429> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 732.720 m -269.177 732.720 l +48.240 582.480 m +269.177 582.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 695.160 m -269.177 695.160 l +48.240 544.920 m +269.177 544.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 732.970 m -48.240 694.910 l +48.240 582.730 m +48.240 544.670 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 732.970 m -269.177 694.910 l +269.177 582.730 m +269.177 544.670 l S [ ] 0 d 1 w @@ -44706,19 +50674,19 @@ S 0.200 0.200 0.200 scn BT -51.24 716.473 Td +51.24 566.233 Td /F2.0 10.5 Tf [<7573656442> 20.01953125 <79456c656d656e744d6f64656c73>] TJ ET BT -51.24 702.193 Td +51.24 551.953 Td ET BT -51.24 702.193 Td +51.24 551.953 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -44726,26 +50694,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 732.720 m -563.760 732.720 l +269.177 582.480 m +563.760 582.480 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 695.160 m -563.760 695.160 l +269.177 544.920 m +563.760 544.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 732.970 m -269.177 694.910 l +269.177 582.730 m +269.177 544.670 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 732.970 m -563.760 694.910 l +563.760 582.730 m +563.760 544.670 l S [ ] 0 d 1 w @@ -44757,7 +50725,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 709.333 Td +272.17692192000004 559.093 Td /F1.0 10.5 Tf <3c20> Tj ET @@ -44766,7 +50734,7 @@ ET 0.259 0.545 0.792 SCN BT -280.76592192000004 709.333 Td +280.76592192000004 559.093 Td /F1.0 10.5 Tf <4c6f6f70456c656d656e744d6f64656c> Tj ET @@ -44775,7 +50743,7 @@ ET 0.200 0.200 0.200 scn BT -378.47892192000006 709.333 Td +378.47892192000006 559.093 Td /F1.0 10.5 Tf [<203e20617272> 20.01953125 <61> 20.01953125 <79>] TJ ET @@ -44783,26 +50751,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 695.160 m -269.177 695.160 l +48.240 544.920 m +269.177 544.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 657.600 m -269.177 657.600 l +48.240 507.360 m +269.177 507.360 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 695.410 m -48.240 657.350 l +48.240 545.170 m +48.240 507.110 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 695.410 m -269.177 657.350 l +269.177 545.170 m +269.177 507.110 l S [ ] 0 d 1 w @@ -44810,19 +50778,19 @@ S 0.200 0.200 0.200 scn BT -51.24 678.913 Td +51.24 528.673 Td /F2.0 10.5 Tf <76657273696f6e> Tj ET BT -51.24 664.6329999999999 Td +51.24 514.3929999999999 Td ET BT -51.24 664.6329999999999 Td +51.24 514.3929999999999 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -44830,26 +50798,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 695.160 m -563.760 695.160 l +269.177 544.920 m +563.760 544.920 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 657.600 m -563.760 657.600 l +269.177 507.360 m +563.760 507.360 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 695.410 m -269.177 657.350 l +269.177 545.170 m +269.177 507.110 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 695.410 m -563.760 657.350 l +563.760 545.170 m +563.760 507.110 l S [ ] 0 d 1 w @@ -44857,7 +50825,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 671.7729999999999 Td +272.17692192000004 521.5329999999999 Td /F1.0 10.5 Tf <737472696e67> Tj ET @@ -44867,83 +50835,83 @@ ET 0.200 0.200 0.200 SCN BT -48.24 622.1759999999999 Td +48.24 471.936 Td /F2.0 18 Tf -<332e31392e2053657276696365> Tj +<332e32302e2053657276696365> Tj ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 582.240 220.937 23.280 re +48.240 432.000 220.937 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -269.177 582.240 294.583 23.280 re +269.177 432.000 294.583 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 544.680 220.937 37.560 re +48.240 394.440 220.937 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -269.177 544.680 294.583 37.560 re +269.177 394.440 294.583 37.560 re f 0.000 0.000 0.000 scn 0.976 0.976 0.976 scn -48.240 507.120 220.937 37.560 re +48.240 356.880 220.937 37.560 re f 0.000 0.000 0.000 scn 0.976 0.976 0.976 scn -269.177 507.120 294.583 37.560 re +269.177 356.880 294.583 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 469.560 220.937 37.560 re +48.240 319.320 220.937 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -269.177 469.560 294.583 37.560 re +269.177 319.320 294.583 37.560 re f 0.000 0.000 0.000 scn 0.976 0.976 0.976 scn -48.240 432.000 220.937 37.560 re +48.240 281.760 220.937 37.560 re f 0.000 0.000 0.000 scn 0.976 0.976 0.976 scn -269.177 432.000 294.583 37.560 re +269.177 281.760 294.583 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 394.440 220.937 37.560 re +48.240 244.200 220.937 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -269.177 394.440 294.583 37.560 re +269.177 244.200 294.583 37.560 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 605.520 m -269.177 605.520 l +48.240 455.280 m +269.177 455.280 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 582.240 m -269.177 582.240 l +48.240 432.000 m +269.177 432.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 605.770 m -48.240 581.490 l +48.240 455.530 m +48.240 431.250 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 605.770 m -269.177 581.490 l +269.177 455.530 m +269.177 431.250 l S [ ] 0 d 1 w @@ -44951,7 +50919,7 @@ S 0.200 0.200 0.200 scn BT -51.24 589.7729999999999 Td +51.24 439.5329999999999 Td /F2.0 10.5 Tf <4e616d65> Tj ET @@ -44959,26 +50927,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 605.520 m -563.760 605.520 l +269.177 455.280 m +563.760 455.280 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -269.177 582.240 m -563.760 582.240 l +269.177 432.000 m +563.760 432.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 605.770 m -269.177 581.490 l +269.177 455.530 m +269.177 431.250 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 605.770 m -563.760 581.490 l +563.760 455.530 m +563.760 431.250 l S [ ] 0 d 1 w @@ -44986,7 +50954,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 589.7729999999999 Td +272.17692192000004 439.5329999999999 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -44994,26 +50962,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 582.240 m -269.177 582.240 l +48.240 432.000 m +269.177 432.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 544.680 m -269.177 544.680 l +48.240 394.440 m +269.177 394.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 582.490 m -48.240 544.430 l +48.240 432.250 m +48.240 394.190 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 582.490 m -269.177 544.430 l +269.177 432.250 m +269.177 394.190 l S [ ] 0 d 1 w @@ -45021,19 +50989,19 @@ S 0.200 0.200 0.200 scn BT -51.24 565.9929999999999 Td +51.24 415.7529999999999 Td /F2.0 10.5 Tf <6e616d65> Tj ET BT -51.24 551.713 Td +51.24 401.47299999999984 Td ET BT -51.24 551.713 Td +51.24 401.47299999999984 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -45041,26 +51009,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 582.240 m -563.760 582.240 l +269.177 432.000 m +563.760 432.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 544.680 m -563.760 544.680 l +269.177 394.440 m +563.760 394.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 582.490 m -269.177 544.430 l +269.177 432.250 m +269.177 394.190 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 582.490 m -563.760 544.430 l +563.760 432.250 m +563.760 394.190 l S [ ] 0 d 1 w @@ -45068,7 +51036,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 558.853 Td +272.17692192000004 408.6129999999999 Td /F1.0 10.5 Tf <737472696e67> Tj ET @@ -45076,26 +51044,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 544.680 m -269.177 544.680 l +48.240 394.440 m +269.177 394.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 507.120 m -269.177 507.120 l +48.240 356.880 m +269.177 356.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 544.930 m -48.240 506.870 l +48.240 394.690 m +48.240 356.630 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 544.930 m -269.177 506.870 l +269.177 394.690 m +269.177 356.630 l S [ ] 0 d 1 w @@ -45103,19 +51071,19 @@ S 0.200 0.200 0.200 scn BT -51.24 528.433 Td +51.24 378.1929999999999 Td /F2.0 10.5 Tf <7265736f7572636544657461696c73> Tj ET BT -51.24 514.1529999999999 Td +51.24 363.9129999999999 Td ET BT -51.24 514.1529999999999 Td +51.24 363.9129999999999 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -45123,26 +51091,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 544.680 m -563.760 544.680 l +269.177 394.440 m +563.760 394.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 507.120 m -563.760 507.120 l +269.177 356.880 m +563.760 356.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 544.930 m -269.177 506.870 l +269.177 394.690 m +269.177 356.630 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 544.930 m -563.760 506.870 l +563.760 394.690 m +563.760 356.630 l S [ ] 0 d 1 w @@ -45156,7 +51124,7 @@ S 0.259 0.545 0.792 SCN BT -272.17692192000004 521.2929999999999 Td +272.17692192000004 371.05299999999994 Td /F1.0 10.5 Tf <4a736f6e4f626a656374> Tj ET @@ -45166,26 +51134,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 507.120 m -269.177 507.120 l +48.240 356.880 m +269.177 356.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 469.560 m -269.177 469.560 l +48.240 319.320 m +269.177 319.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 507.370 m -48.240 469.310 l +48.240 357.130 m +48.240 319.070 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 507.370 m -269.177 469.310 l +269.177 357.130 m +269.177 319.070 l S [ ] 0 d 1 w @@ -45193,19 +51161,19 @@ S 0.200 0.200 0.200 scn BT -51.24 490.873 Td +51.24 340.63299999999987 Td /F2.0 10.5 Tf <7365727669636544657461696c73> Tj ET BT -51.24 476.59299999999996 Td +51.24 326.35299999999984 Td ET BT -51.24 476.59299999999996 Td +51.24 326.35299999999984 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -45213,26 +51181,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 507.120 m -563.760 507.120 l +269.177 356.880 m +563.760 356.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 469.560 m -563.760 469.560 l +269.177 319.320 m +563.760 319.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 507.370 m -269.177 469.310 l +269.177 357.130 m +269.177 319.070 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 507.370 m -563.760 469.310 l +563.760 357.130 m +563.760 319.070 l S [ ] 0 d 1 w @@ -45246,7 +51214,7 @@ S 0.259 0.545 0.792 SCN BT -272.17692192000004 483.733 Td +272.17692192000004 333.4929999999999 Td /F1.0 10.5 Tf <4a736f6e4f626a656374> Tj ET @@ -45256,26 +51224,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 469.560 m -269.177 469.560 l +48.240 319.320 m +269.177 319.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 432.000 m -269.177 432.000 l +48.240 281.760 m +269.177 281.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 469.810 m -48.240 431.750 l +48.240 319.570 m +48.240 281.510 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 469.810 m -269.177 431.750 l +269.177 319.570 m +269.177 281.510 l S [ ] 0 d 1 w @@ -45283,19 +51251,19 @@ S 0.200 0.200 0.200 scn BT -51.24 453.31299999999993 Td +51.24 303.0729999999999 Td /F2.0 10.5 Tf <7365727669636555756964> Tj ET BT -51.24 439.0329999999999 Td +51.24 288.7929999999999 Td ET BT -51.24 439.0329999999999 Td +51.24 288.7929999999999 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -45303,26 +51271,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 469.560 m -563.760 469.560 l +269.177 319.320 m +563.760 319.320 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 432.000 m -563.760 432.000 l +269.177 281.760 m +563.760 281.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 469.810 m -269.177 431.750 l +269.177 319.570 m +269.177 281.510 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 469.810 m -563.760 431.750 l +563.760 319.570 m +563.760 281.510 l S [ ] 0 d 1 w @@ -45330,7 +51298,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 446.17299999999994 Td +272.17692192000004 295.93299999999994 Td /F1.0 10.5 Tf <737472696e67> Tj ET @@ -45338,26 +51306,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 432.000 m -269.177 432.000 l +48.240 281.760 m +269.177 281.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 394.440 m -269.177 394.440 l +48.240 244.200 m +269.177 244.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 432.250 m -48.240 394.190 l +48.240 282.010 m +48.240 243.950 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 432.250 m -269.177 394.190 l +269.177 282.010 m +269.177 243.950 l S [ ] 0 d 1 w @@ -45365,19 +51333,19 @@ S 0.200 0.200 0.200 scn BT -51.24 415.753 Td +51.24 265.51299999999986 Td /F2.0 10.5 Tf <76657273696f6e> Tj ET BT -51.24 401.47299999999996 Td +51.24 251.23299999999986 Td ET BT -51.24 401.47299999999996 Td +51.24 251.23299999999986 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -45385,26 +51353,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 432.000 m -563.760 432.000 l +269.177 281.760 m +563.760 281.760 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 394.440 m -563.760 394.440 l +269.177 244.200 m +563.760 244.200 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 432.250 m -269.177 394.190 l +269.177 282.010 m +269.177 243.950 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 432.250 m -563.760 394.190 l +563.760 282.010 m +563.760 243.950 l S [ ] 0 d 1 w @@ -45412,7 +51380,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 408.613 Td +272.17692192000004 258.3729999999999 Td /F1.0 10.5 Tf <737472696e67> Tj ET @@ -45432,7 +51400,7 @@ q BT 49.24 14.388 Td /F1.0 9 Tf -<3238> Tj +<3332> Tj ET 0.000 0.000 0.000 SCN @@ -45442,2306 +51410,2730 @@ Q endstream endobj -301 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 612.0 792.0] -/Contents 300 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 22 0 R -/F3.0 24 0 R -/F1.0 8 0 R +344 0 obj +<< /Type /Page +/Parent 3 0 R +/MediaBox [0 0 612.0 792.0] +/Contents 343 0 R +/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << /F2.0 24 0 R +/F3.0 26 0 R +/F1.0 8 0 R +>> +/XObject << /Stamp1 684 0 R +>> +>> +/Annots [345 0 R 346 0 R 348 0 R 349 0 R] +>> +endobj +345 0 obj +<< /Border [0 0 0] +/Dest (_jsonobject) +/Subtype /Link +/Rect [272.17692192000004 668.707 325.32792192000005 682.987] +/Type /Annot +>> +endobj +346 0 obj +<< /Border [0 0 0] +/Dest (_loopelementmodel) +/Subtype /Link +/Rect [280.76592192000004 556.027 378.47892192000006 570.307] +/Type /Annot +>> +endobj +347 0 obj +[344 0 R /XYZ 0 495.35999999999996 null] +endobj +348 0 obj +<< /Border [0 0 0] +/Dest (_jsonobject) +/Subtype /Link +/Rect [272.17692192000004 367.9869999999999 325.32792192000005 382.26699999999994] +/Type /Annot +>> +endobj +349 0 obj +<< /Border [0 0 0] +/Dest (_jsonobject) +/Subtype /Link +/Rect [272.17692192000004 330.42699999999985 325.32792192000005 344.7069999999999] +/Type /Annot +>> +endobj +350 0 obj +<< /Border [0 0 0] +/Dest (_overview) +/Subtype /Link +/Rect [48.24 695.6999999999998 107.9745 709.9799999999999] +/Type /Annot +>> +endobj +351 0 obj +<< /Border [0 0 0] +/Dest (_overview) +/Subtype /Link +/Rect [557.8905 695.6999999999998 563.76 709.9799999999999] +/Type /Annot +>> +endobj +352 0 obj +<< /Border [0 0 0] +/Dest (_version_information) +/Subtype /Link +/Rect [60.24 677.2199999999998 181.28338476562502 691.4999999999999] +/Type /Annot +>> +endobj +353 0 obj +<< /Border [0 0 0] +/Dest (_version_information) +/Subtype /Link +/Rect [557.8905 677.2199999999998 563.76 691.4999999999999] +/Type /Annot +>> +endobj +354 0 obj +<< /Border [0 0 0] +/Dest (_uri_scheme) +/Subtype /Link +/Rect [60.24000000000001 658.7399999999998 138.6225 673.0199999999999] +/Type /Annot +>> +endobj +355 0 obj +<< /Border [0 0 0] +/Dest (_uri_scheme) +/Subtype /Link +/Rect [557.8905 658.7399999999998 563.76 673.0199999999999] +/Type /Annot +>> +endobj +356 0 obj +<< /Border [0 0 0] +/Dest (_paths) +/Subtype /Link +/Rect [48.24000000000001 640.2599999999998 86.78550000000001 654.5399999999998] +/Type /Annot +>> +endobj +357 0 obj +<< /Border [0 0 0] +/Dest (_paths) +/Subtype /Link +/Rect [557.8905 640.2599999999998 563.76 654.5399999999998] +/Type /Annot +>> +endobj +358 0 obj +<< /Border [0 0 0] +/Dest (_route36) +/Subtype /Link +/Rect [60.24000000000001 621.7799999999997 181.64100000000002 636.0599999999998] +/Type /Annot +>> +endobj +359 0 obj +<< /Border [0 0 0] +/Dest (_route36) +/Subtype /Link +/Rect [557.8905 621.7799999999997 563.76 636.0599999999998] +/Type /Annot +>> +endobj +360 0 obj +<< /Border [0 0 0] +/Dest (_responses) +/Subtype /Link +/Rect [72.24000000000001 603.2999999999997 152.0295 617.5799999999998] +/Type /Annot +>> +endobj +361 0 obj +<< /Border [0 0 0] +/Dest (_responses) +/Subtype /Link +/Rect [557.8905 603.2999999999997 563.76 617.5799999999998] +/Type /Annot +>> +endobj +362 0 obj +<< /Border [0 0 0] +/Dest (_produces) +/Subtype /Link +/Rect [72.24000000000001 584.8199999999997 146.4015 599.0999999999998] +/Type /Annot +>> +endobj +363 0 obj +<< /Border [0 0 0] +/Dest (_produces) +/Subtype /Link +/Rect [557.8905 584.8199999999997 563.76 599.0999999999998] +/Type /Annot +>> +endobj +364 0 obj +<< /Border [0 0 0] +/Dest (_route37) +/Subtype /Link +/Rect [60.24000000000001 566.3399999999997 183.8775 580.6199999999998] +/Type /Annot +>> +endobj +365 0 obj +<< /Border [0 0 0] +/Dest (_route37) +/Subtype /Link +/Rect [557.8905 566.3399999999997 563.76 580.6199999999998] +/Type /Annot +>> +endobj +366 0 obj +<< /Border [0 0 0] +/Dest (_responses_2) +/Subtype /Link +/Rect [72.24000000000001 547.8599999999998 152.0295 562.1399999999998] +/Type /Annot +>> +endobj +367 0 obj +<< /Border [0 0 0] +/Dest (_responses_2) +/Subtype /Link +/Rect [557.8905 547.8599999999998 563.76 562.1399999999998] +/Type /Annot +>> +endobj +368 0 obj +<< /Border [0 0 0] +/Dest (_produces_2) +/Subtype /Link +/Rect [72.24000000000001 529.3799999999998 146.4015 543.6599999999997] +/Type /Annot +>> +endobj +369 0 obj +<< /Border [0 0 0] +/Dest (_produces_2) +/Subtype /Link +/Rect [557.8905 529.3799999999998 563.76 543.6599999999997] +/Type /Annot >> -/XObject << /Stamp1 588 0 R +endobj +370 0 obj +<< /Border [0 0 0] +/Dest (_route35) +/Subtype /Link +/Rect [60.24000000000001 510.89999999999975 212.98350000000002 525.1799999999997] +/Type /Annot >> +endobj +371 0 obj +<< /Border [0 0 0] +/Dest (_route35) +/Subtype /Link +/Rect [557.8905 510.89999999999975 563.76 525.1799999999997] +/Type /Annot >> -/Annots [302 0 R 304 0 R 305 0 R] +endobj +372 0 obj +<< /Border [0 0 0] +/Dest (_responses_3) +/Subtype /Link +/Rect [72.24000000000001 492.41999999999973 152.0295 506.6999999999997] +/Type /Annot >> endobj -302 0 obj +373 0 obj << /Border [0 0 0] -/Dest (_loopelementmodel) +/Dest (_responses_3) /Subtype /Link -/Rect [280.76592192000004 706.267 378.47892192000006 720.547] +/Rect [557.8905 492.41999999999973 563.76 506.6999999999997] /Type /Annot >> endobj -303 0 obj -[301 0 R /XYZ 0 645.5999999999999 null] +374 0 obj +<< /Border [0 0 0] +/Dest (_produces_3) +/Subtype /Link +/Rect [72.24000000000001 473.9399999999997 146.4015 488.2199999999997] +/Type /Annot +>> endobj -304 0 obj +375 0 obj << /Border [0 0 0] -/Dest (_jsonobject) +/Dest (_produces_3) /Subtype /Link -/Rect [272.17692192000004 518.227 325.32792192000005 532.507] +/Rect [557.8905 473.9399999999997 563.76 488.2199999999997] /Type /Annot >> endobj -305 0 obj +376 0 obj << /Border [0 0 0] -/Dest (_jsonobject) +/Dest (_route21) /Subtype /Link -/Rect [272.17692192000004 480.667 325.32792192000005 494.947] +/Rect [60.24000000000001 455.4599999999997 172.716 469.73999999999967] /Type /Annot >> endobj -306 0 obj +377 0 obj << /Border [0 0 0] -/Dest (_overview) +/Dest (_route21) /Subtype /Link -/Rect [48.24 695.6999999999998 107.9745 709.9799999999999] +/Rect [557.8905 455.4599999999997 563.76 469.73999999999967] /Type /Annot >> endobj -307 0 obj +378 0 obj << /Border [0 0 0] -/Dest (_overview) +/Dest (_responses_4) /Subtype /Link -/Rect [557.8905 695.6999999999998 563.76 709.9799999999999] +/Rect [72.24000000000001 436.9799999999997 152.0295 451.25999999999965] /Type /Annot >> endobj -308 0 obj +379 0 obj << /Border [0 0 0] -/Dest (_version_information) +/Dest (_responses_4) /Subtype /Link -/Rect [60.24 677.2199999999998 181.28338476562502 691.4999999999999] +/Rect [557.8905 436.9799999999997 563.76 451.25999999999965] /Type /Annot >> endobj -309 0 obj +380 0 obj << /Border [0 0 0] -/Dest (_version_information) +/Dest (_produces_4) /Subtype /Link -/Rect [557.8905 677.2199999999998 563.76 691.4999999999999] +/Rect [72.24000000000001 418.49999999999966 146.4015 432.77999999999963] /Type /Annot >> endobj -310 0 obj +381 0 obj << /Border [0 0 0] -/Dest (_uri_scheme) +/Dest (_produces_4) /Subtype /Link -/Rect [60.24000000000001 658.7399999999998 138.6225 673.0199999999999] +/Rect [557.8905 418.49999999999966 563.76 432.77999999999963] /Type /Annot >> endobj -311 0 obj +382 0 obj << /Border [0 0 0] -/Dest (_uri_scheme) +/Dest (_route23) /Subtype /Link -/Rect [557.8905 658.7399999999998 563.76 673.0199999999999] +/Rect [60.24000000000001 400.01999999999964 172.548 414.2999999999996] /Type /Annot >> endobj -312 0 obj +383 0 obj << /Border [0 0 0] -/Dest (_paths) +/Dest (_route23) /Subtype /Link -/Rect [48.24000000000001 640.2599999999998 86.78550000000001 654.5399999999998] +/Rect [557.8905 400.01999999999964 563.76 414.2999999999996] /Type /Annot >> endobj -313 0 obj +384 0 obj << /Border [0 0 0] -/Dest (_paths) +/Dest (_parameters) /Subtype /Link -/Rect [557.8905 640.2599999999998 563.76 654.5399999999998] +/Rect [72.24000000000001 381.5399999999996 157.84629492187503 395.8199999999996] /Type /Annot >> endobj -314 0 obj +385 0 obj << /Border [0 0 0] -/Dest (_route61) +/Dest (_parameters) /Subtype /Link -/Rect [60.24000000000001 621.7799999999997 181.64100000000002 636.0599999999998] +/Rect [557.8905 381.5399999999996 563.76 395.8199999999996] /Type /Annot >> endobj -315 0 obj +386 0 obj << /Border [0 0 0] -/Dest (_route61) +/Dest (_responses_5) /Subtype /Link -/Rect [557.8905 621.7799999999997 563.76 636.0599999999998] +/Rect [72.24000000000001 363.0599999999996 152.0295 377.3399999999996] /Type /Annot >> endobj -316 0 obj +387 0 obj << /Border [0 0 0] -/Dest (_responses) +/Dest (_responses_5) /Subtype /Link -/Rect [72.24000000000001 603.2999999999997 152.0295 617.5799999999998] +/Rect [557.8905 363.0599999999996 563.76 377.3399999999996] /Type /Annot >> endobj -317 0 obj +388 0 obj << /Border [0 0 0] -/Dest (_responses) +/Dest (_consumes) /Subtype /Link -/Rect [557.8905 603.2999999999997 563.76 617.5799999999998] +/Rect [72.24000000000001 344.5799999999996 151.368 358.85999999999956] /Type /Annot >> endobj -318 0 obj +389 0 obj << /Border [0 0 0] -/Dest (_produces) +/Dest (_consumes) /Subtype /Link -/Rect [72.24000000000001 584.8199999999997 146.4015 599.0999999999998] +/Rect [557.8905 344.5799999999996 563.76 358.85999999999956] /Type /Annot >> endobj -319 0 obj +390 0 obj << /Border [0 0 0] -/Dest (_produces) +/Dest (_produces_5) /Subtype /Link -/Rect [557.8905 584.8199999999997 563.76 599.0999999999998] +/Rect [72.24000000000001 326.09999999999957 146.4015 340.37999999999954] /Type /Annot >> endobj -320 0 obj +391 0 obj << /Border [0 0 0] -/Dest (_route62) +/Dest (_produces_5) /Subtype /Link -/Rect [60.24000000000001 566.3399999999997 183.8775 580.6199999999998] +/Rect [557.8905 326.09999999999957 563.76 340.37999999999954] /Type /Annot >> endobj -321 0 obj +392 0 obj << /Border [0 0 0] -/Dest (_route62) +/Dest (_v2_dictionary_secondary_names_get) /Subtype /Link -/Rect [557.8905 566.3399999999997 563.76 580.6199999999998] +/Rect [60.24000000000001 307.61999999999955 263.25750000000005 321.8999999999995] /Type /Annot >> endobj -322 0 obj +393 0 obj << /Border [0 0 0] -/Dest (_responses_2) +/Dest (_v2_dictionary_secondary_names_get) /Subtype /Link -/Rect [72.24000000000001 547.8599999999998 152.0295 562.1399999999998] +/Rect [557.8905 307.61999999999955 563.76 321.8999999999995] /Type /Annot >> endobj -323 0 obj +394 0 obj << /Border [0 0 0] -/Dest (_responses_2) +/Dest (_responses_6) /Subtype /Link -/Rect [557.8905 547.8599999999998 563.76 562.1399999999998] +/Rect [72.24000000000001 289.13999999999953 152.0295 303.4199999999995] /Type /Annot >> endobj -324 0 obj +395 0 obj << /Border [0 0 0] -/Dest (_produces_2) +/Dest (_responses_6) /Subtype /Link -/Rect [72.24000000000001 529.3799999999998 146.4015 543.6599999999997] +/Rect [557.8905 289.13999999999953 563.76 303.4199999999995] /Type /Annot >> endobj -325 0 obj +396 0 obj << /Border [0 0 0] -/Dest (_produces_2) +/Dest (_produces_6) /Subtype /Link -/Rect [557.8905 529.3799999999998 563.76 543.6599999999997] +/Rect [72.24000000000001 270.6599999999995 146.4015 284.9399999999995] /Type /Annot >> endobj -326 0 obj +397 0 obj << /Border [0 0 0] -/Dest (_route49) +/Dest (_produces_6) /Subtype /Link -/Rect [60.24000000000001 510.89999999999975 172.716 525.1799999999997] +/Rect [557.8905 270.6599999999995 563.76 284.9399999999995] /Type /Annot >> endobj -327 0 obj +398 0 obj << /Border [0 0 0] -/Dest (_route49) +/Dest (_v2_dictionary_dictionaryname_get) /Subtype /Link -/Rect [557.8905 510.89999999999975 563.76 525.1799999999997] +/Rect [60.24000000000001 252.17999999999947 265.76700000000005 266.45999999999947] /Type /Annot >> endobj -328 0 obj +399 0 obj << /Border [0 0 0] -/Dest (_responses_3) +/Dest (_v2_dictionary_dictionaryname_get) /Subtype /Link -/Rect [72.24000000000001 492.41999999999973 152.0295 506.6999999999997] +/Rect [557.8905 252.17999999999947 563.76 266.45999999999947] /Type /Annot >> endobj -329 0 obj +400 0 obj << /Border [0 0 0] -/Dest (_responses_3) +/Dest (_parameters_2) /Subtype /Link -/Rect [557.8905 492.41999999999973 563.76 506.6999999999997] +/Rect [72.24000000000001 233.69999999999948 157.84629492187503 247.97999999999948] /Type /Annot >> endobj -330 0 obj +401 0 obj << /Border [0 0 0] -/Dest (_produces_3) +/Dest (_parameters_2) /Subtype /Link -/Rect [72.24000000000001 473.9399999999997 146.4015 488.2199999999997] +/Rect [557.8905 233.69999999999948 563.76 247.97999999999948] /Type /Annot >> endobj -331 0 obj +402 0 obj << /Border [0 0 0] -/Dest (_produces_3) +/Dest (_responses_7) /Subtype /Link -/Rect [557.8905 473.9399999999997 563.76 488.2199999999997] +/Rect [72.24000000000001 215.2199999999995 152.0295 229.4999999999995] /Type /Annot >> endobj -332 0 obj +403 0 obj << /Border [0 0 0] -/Dest (_route51) +/Dest (_responses_7) /Subtype /Link -/Rect [60.24000000000001 455.4599999999997 172.548 469.73999999999967] +/Rect [557.8905 215.2199999999995 563.76 229.4999999999995] /Type /Annot >> endobj -333 0 obj +404 0 obj << /Border [0 0 0] -/Dest (_route51) +/Dest (_produces_7) /Subtype /Link -/Rect [557.8905 455.4599999999997 563.76 469.73999999999967] +/Rect [72.24000000000001 196.7399999999995 146.4015 211.0199999999995] /Type /Annot >> endobj -334 0 obj +405 0 obj << /Border [0 0 0] -/Dest (_parameters) +/Dest (_produces_7) /Subtype /Link -/Rect [72.24000000000001 436.9799999999997 157.84629492187503 451.25999999999965] +/Rect [557.8905 196.7399999999995 563.76 211.0199999999995] /Type /Annot >> endobj -335 0 obj +406 0 obj << /Border [0 0 0] -/Dest (_parameters) +/Dest (_v2_dictionary_name_put) /Subtype /Link -/Rect [557.8905 436.9799999999997 563.76 451.25999999999965] +/Rect [60.24000000000001 178.2599999999995 212.763 192.5399999999995] /Type /Annot >> endobj -336 0 obj +407 0 obj << /Border [0 0 0] -/Dest (_responses_4) +/Dest (_v2_dictionary_name_put) /Subtype /Link -/Rect [72.24000000000001 418.49999999999966 152.0295 432.77999999999963] +/Rect [557.8905 178.2599999999995 563.76 192.5399999999995] /Type /Annot >> endobj -337 0 obj +408 0 obj << /Border [0 0 0] -/Dest (_responses_4) +/Dest (_parameters_3) /Subtype /Link -/Rect [557.8905 418.49999999999966 563.76 432.77999999999963] +/Rect [72.24000000000001 159.77999999999952 157.84629492187503 174.05999999999952] /Type /Annot >> endobj -338 0 obj +409 0 obj << /Border [0 0 0] -/Dest (_consumes) +/Dest (_parameters_3) /Subtype /Link -/Rect [72.24000000000001 400.01999999999964 151.368 414.2999999999996] +/Rect [557.8905 159.77999999999952 563.76 174.05999999999952] /Type /Annot >> endobj -339 0 obj +410 0 obj << /Border [0 0 0] -/Dest (_consumes) +/Dest (_responses_8) /Subtype /Link -/Rect [557.8905 400.01999999999964 563.76 414.2999999999996] +/Rect [72.24000000000001 141.29999999999953 152.0295 155.57999999999953] /Type /Annot >> endobj -340 0 obj +411 0 obj << /Border [0 0 0] -/Dest (_produces_4) +/Dest (_responses_8) /Subtype /Link -/Rect [72.24000000000001 381.5399999999996 146.4015 395.8199999999996] +/Rect [557.8905 141.29999999999953 563.76 155.57999999999953] /Type /Annot >> endobj -341 0 obj +412 0 obj << /Border [0 0 0] -/Dest (_produces_4) +/Dest (_consumes_2) /Subtype /Link -/Rect [557.8905 381.5399999999996 563.76 395.8199999999996] +/Rect [72.24000000000001 122.81999999999954 151.368 137.09999999999954] /Type /Annot >> endobj -342 0 obj +413 0 obj << /Border [0 0 0] -/Dest (_v2_dictionary_secondary_names_get) +/Dest (_consumes_2) /Subtype /Link -/Rect [60.24000000000001 363.0599999999996 263.25750000000005 377.3399999999996] +/Rect [557.8905 122.81999999999954 563.76 137.09999999999954] /Type /Annot >> endobj -343 0 obj +414 0 obj << /Border [0 0 0] -/Dest (_v2_dictionary_secondary_names_get) +/Dest (_produces_8) /Subtype /Link -/Rect [557.8905 363.0599999999996 563.76 377.3399999999996] +/Rect [72.24000000000001 104.33999999999955 146.4015 118.61999999999955] /Type /Annot >> endobj -344 0 obj +415 0 obj << /Border [0 0 0] -/Dest (_responses_5) +/Dest (_produces_8) /Subtype /Link -/Rect [72.24000000000001 344.5799999999996 152.0295 358.85999999999956] +/Rect [557.8905 104.33999999999955 563.76 118.61999999999955] /Type /Annot >> endobj -345 0 obj +416 0 obj << /Border [0 0 0] -/Dest (_responses_5) +/Dest (_route25) /Subtype /Link -/Rect [557.8905 344.5799999999996 563.76 358.85999999999956] +/Rect [60.24000000000001 85.85999999999956 232.70250000000001 100.13999999999956] /Type /Annot >> endobj -346 0 obj +417 0 obj << /Border [0 0 0] -/Dest (_produces_5) +/Dest (_route25) /Subtype /Link -/Rect [72.24000000000001 326.09999999999957 146.4015 340.37999999999954] +/Rect [557.8905 85.85999999999956 563.76 100.13999999999956] /Type /Annot >> endobj -347 0 obj +418 0 obj << /Border [0 0 0] -/Dest (_produces_5) +/Dest (_parameters_4) /Subtype /Link -/Rect [557.8905 326.09999999999957 563.76 340.37999999999954] +/Rect [72.24000000000001 67.37999999999957 157.84629492187503 81.65999999999957] /Type /Annot >> endobj -348 0 obj +419 0 obj << /Border [0 0 0] -/Dest (_v2_dictionary_dictionaryname_get) +/Dest (_parameters_4) /Subtype /Link -/Rect [60.24000000000001 307.61999999999955 265.76700000000005 321.8999999999995] +/Rect [557.8905 67.37999999999957 563.76 81.65999999999957] /Type /Annot >> endobj -349 0 obj +420 0 obj << /Border [0 0 0] -/Dest (_v2_dictionary_dictionaryname_get) +/Dest (_responses_9) /Subtype /Link -/Rect [557.8905 307.61999999999955 563.76 321.8999999999995] +/Rect [72.24000000000001 48.89999999999957 152.0295 63.17999999999957] /Type /Annot >> endobj -350 0 obj +421 0 obj << /Border [0 0 0] -/Dest (_parameters_2) +/Dest (_responses_9) /Subtype /Link -/Rect [72.24000000000001 289.13999999999953 157.84629492187503 303.4199999999995] +/Rect [557.8905 48.89999999999957 563.76 63.17999999999957] /Type /Annot >> endobj -351 0 obj +422 0 obj << /Border [0 0 0] -/Dest (_parameters_2) +/Dest (_produces_9) /Subtype /Link -/Rect [557.8905 289.13999999999953 563.76 303.4199999999995] +/Rect [72.24000000000001 741.7199999999999 146.4015 756.0] /Type /Annot >> endobj -352 0 obj +423 0 obj << /Border [0 0 0] -/Dest (_responses_6) +/Dest (_produces_9) /Subtype /Link -/Rect [72.24000000000001 270.6599999999995 152.0295 284.9399999999995] +/Rect [557.8905 741.7199999999999 563.76 756.0] /Type /Annot >> endobj -353 0 obj +424 0 obj << /Border [0 0 0] -/Dest (_responses_6) +/Dest (_v2_dictionary_name_elements_shortname_delete) /Subtype /Link -/Rect [557.8905 270.6599999999995 563.76 284.9399999999995] +/Rect [60.24000000000001 723.2399999999999 354.36600000000004 737.52] /Type /Annot >> endobj -354 0 obj +425 0 obj << /Border [0 0 0] -/Dest (_produces_6) +/Dest (_v2_dictionary_name_elements_shortname_delete) /Subtype /Link -/Rect [72.24000000000001 252.17999999999947 146.4015 266.45999999999947] +/Rect [557.8905 723.2399999999999 563.76 737.52] /Type /Annot >> endobj -355 0 obj +426 0 obj << /Border [0 0 0] -/Dest (_produces_6) +/Dest (_parameters_5) /Subtype /Link -/Rect [557.8905 252.17999999999947 563.76 266.45999999999947] +/Rect [72.24000000000001 704.7599999999999 163.71579492187502 719.04] /Type /Annot >> endobj -356 0 obj +427 0 obj << /Border [0 0 0] -/Dest (_v2_dictionary_name_put) +/Dest (_parameters_5) /Subtype /Link -/Rect [60.24000000000001 233.69999999999948 212.763 247.97999999999948] +/Rect [557.8905 704.7599999999999 563.76 719.04] /Type /Annot >> endobj -357 0 obj +428 0 obj << /Border [0 0 0] -/Dest (_v2_dictionary_name_put) +/Dest (_responses_10) /Subtype /Link -/Rect [557.8905 233.69999999999948 563.76 247.97999999999948] +/Rect [72.24000000000001 686.2799999999999 157.899 700.56] /Type /Annot >> endobj -358 0 obj +429 0 obj << /Border [0 0 0] -/Dest (_parameters_3) +/Dest (_responses_10) /Subtype /Link -/Rect [72.24000000000001 215.2199999999995 157.84629492187503 229.4999999999995] +/Rect [557.8905 686.2799999999999 563.76 700.56] /Type /Annot >> endobj -359 0 obj +430 0 obj << /Border [0 0 0] -/Dest (_parameters_3) +/Dest (_produces_10) /Subtype /Link -/Rect [557.8905 215.2199999999995 563.76 229.4999999999995] +/Rect [72.24000000000001 667.7999999999998 152.27100000000002 682.0799999999999] +/Type /Annot +>> +endobj +431 0 obj +<< /Border [0 0 0] +/Dest (_produces_10) +/Subtype /Link +/Rect [557.8905 667.7999999999998 563.76 682.0799999999999] +/Type /Annot +>> +endobj +432 0 obj +<< /Border [0 0 0] +/Dest (_route16) +/Subtype /Link +/Rect [60.24000000000001 649.3199999999998 531.1851796875001 663.5999999999999] +/Type /Annot +>> +endobj +433 0 obj +<< /Border [0 0 0] +/Dest (_route16) +/Subtype /Link +/Rect [557.8905 649.3199999999998 563.76 663.5999999999999] +/Type /Annot +>> +endobj +434 0 obj +<< /Border [0 0 0] +/Dest (_parameters_6) +/Subtype /Link +/Rect [72.24000000000001 630.8399999999998 163.71579492187502 645.1199999999999] +/Type /Annot +>> +endobj +435 0 obj +<< /Border [0 0 0] +/Dest (_parameters_6) +/Subtype /Link +/Rect [557.8905 630.8399999999998 563.76 645.1199999999999] +/Type /Annot +>> +endobj +436 0 obj +<< /Border [0 0 0] +/Dest (_responses_11) +/Subtype /Link +/Rect [72.24000000000001 612.3599999999998 157.899 626.6399999999999] +/Type /Annot +>> +endobj +437 0 obj +<< /Border [0 0 0] +/Dest (_responses_11) +/Subtype /Link +/Rect [557.8905 612.3599999999998 563.76 626.6399999999999] +/Type /Annot +>> +endobj +438 0 obj +<< /Border [0 0 0] +/Dest (_produces_11) +/Subtype /Link +/Rect [72.24000000000001 593.8799999999998 152.27100000000002 608.1599999999999] +/Type /Annot +>> +endobj +439 0 obj +<< /Border [0 0 0] +/Dest (_produces_11) +/Subtype /Link +/Rect [557.8905 593.8799999999998 563.76 608.1599999999999] +/Type /Annot +>> +endobj +440 0 obj +<< /Border [0 0 0] +/Dest (_route18) +/Subtype /Link +/Rect [60.24000000000001 575.3999999999997 418.877794921875 589.6799999999998] +/Type /Annot +>> +endobj +441 0 obj +<< /Border [0 0 0] +/Dest (_route18) +/Subtype /Link +/Rect [557.8905 575.3999999999997 563.76 589.6799999999998] +/Type /Annot +>> +endobj +442 0 obj +<< /Border [0 0 0] +/Dest (_parameters_7) +/Subtype /Link +/Rect [72.24000000000001 556.9199999999998 163.71579492187502 571.1999999999998] +/Type /Annot +>> +endobj +443 0 obj +<< /Border [0 0 0] +/Dest (_parameters_7) +/Subtype /Link +/Rect [557.8905 556.9199999999998 563.76 571.1999999999998] +/Type /Annot +>> +endobj +444 0 obj +<< /Border [0 0 0] +/Dest (_responses_12) +/Subtype /Link +/Rect [72.24000000000001 538.4399999999998 157.899 552.7199999999998] +/Type /Annot +>> +endobj +445 0 obj +<< /Border [0 0 0] +/Dest (_responses_12) +/Subtype /Link +/Rect [557.8905 538.4399999999998 563.76 552.7199999999998] +/Type /Annot +>> +endobj +446 0 obj +<< /Border [0 0 0] +/Dest (_consumes_3) +/Subtype /Link +/Rect [72.24000000000001 519.9599999999998 157.2375 534.2399999999998] +/Type /Annot +>> +endobj +447 0 obj +<< /Border [0 0 0] +/Dest (_consumes_3) +/Subtype /Link +/Rect [557.8905 519.9599999999998 563.76 534.2399999999998] +/Type /Annot +>> +endobj +448 0 obj +<< /Border [0 0 0] +/Dest (_produces_12) +/Subtype /Link +/Rect [72.24000000000001 501.4799999999998 152.27100000000002 515.7599999999998] +/Type /Annot +>> +endobj +449 0 obj +<< /Border [0 0 0] +/Dest (_produces_12) +/Subtype /Link +/Rect [557.8905 501.4799999999998 563.76 515.7599999999998] +/Type /Annot +>> +endobj +450 0 obj +<< /Border [0 0 0] +/Dest (_route14) +/Subtype /Link +/Rect [60.24000000000001 482.9999999999998 245.15550000000002 497.27999999999975] +/Type /Annot +>> +endobj +451 0 obj +<< /Border [0 0 0] +/Dest (_route14) +/Subtype /Link +/Rect [557.8905 482.9999999999998 563.76 497.27999999999975] +/Type /Annot +>> +endobj +452 0 obj +<< /Border [0 0 0] +/Dest (_parameters_8) +/Subtype /Link +/Rect [72.24000000000001 464.51999999999975 163.71579492187502 478.7999999999997] +/Type /Annot +>> +endobj +453 0 obj +<< /Border [0 0 0] +/Dest (_parameters_8) +/Subtype /Link +/Rect [557.8905 464.51999999999975 563.76 478.7999999999997] +/Type /Annot +>> +endobj +454 0 obj +<< /Border [0 0 0] +/Dest (_responses_13) +/Subtype /Link +/Rect [72.24000000000001 446.03999999999974 157.899 460.3199999999997] +/Type /Annot +>> +endobj +455 0 obj +<< /Border [0 0 0] +/Dest (_responses_13) +/Subtype /Link +/Rect [557.8905 446.03999999999974 563.76 460.3199999999997] /Type /Annot >> endobj -360 0 obj +456 0 obj << /Border [0 0 0] -/Dest (_responses_7) +/Dest (_route8) /Subtype /Link -/Rect [72.24000000000001 196.7399999999995 152.0295 211.0199999999995] +/Rect [60.24000000000001 427.5599999999997 248.431294921875 441.8399999999997] /Type /Annot >> endobj -361 0 obj +457 0 obj << /Border [0 0 0] -/Dest (_responses_7) +/Dest (_route8) /Subtype /Link -/Rect [557.8905 196.7399999999995 563.76 211.0199999999995] +/Rect [557.8905 427.5599999999997 563.76 441.8399999999997] /Type /Annot >> endobj -362 0 obj +458 0 obj << /Border [0 0 0] -/Dest (_consumes_2) +/Dest (_parameters_9) /Subtype /Link -/Rect [72.24000000000001 178.2599999999995 151.368 192.5399999999995] +/Rect [72.24000000000001 409.0799999999997 163.71579492187502 423.3599999999997] /Type /Annot >> endobj -363 0 obj +459 0 obj << /Border [0 0 0] -/Dest (_consumes_2) +/Dest (_parameters_9) /Subtype /Link -/Rect [557.8905 178.2599999999995 563.76 192.5399999999995] +/Rect [557.8905 409.0799999999997 563.76 423.3599999999997] /Type /Annot >> endobj -364 0 obj +460 0 obj << /Border [0 0 0] -/Dest (_produces_7) +/Dest (_responses_14) /Subtype /Link -/Rect [72.24000000000001 159.77999999999952 146.4015 174.05999999999952] +/Rect [72.24000000000001 390.5999999999997 157.899 404.87999999999965] /Type /Annot >> endobj -365 0 obj +461 0 obj << /Border [0 0 0] -/Dest (_produces_7) +/Dest (_responses_14) /Subtype /Link -/Rect [557.8905 159.77999999999952 563.76 174.05999999999952] +/Rect [557.8905 390.5999999999997 563.76 404.87999999999965] /Type /Annot >> endobj -366 0 obj +462 0 obj << /Border [0 0 0] -/Dest (_route53) +/Dest (_produces_13) /Subtype /Link -/Rect [60.24000000000001 141.29999999999953 232.70250000000001 155.57999999999953] +/Rect [72.24000000000001 372.11999999999966 152.27100000000002 386.39999999999964] /Type /Annot >> endobj -367 0 obj +463 0 obj << /Border [0 0 0] -/Dest (_route53) +/Dest (_produces_13) /Subtype /Link -/Rect [557.8905 141.29999999999953 563.76 155.57999999999953] +/Rect [557.8905 372.11999999999966 563.76 386.39999999999964] /Type /Annot >> endobj -368 0 obj +464 0 obj << /Border [0 0 0] -/Dest (_parameters_4) +/Dest (_route2) /Subtype /Link -/Rect [72.24000000000001 122.81999999999954 157.84629492187503 137.09999999999954] +/Rect [60.24000000000001 353.63999999999965 214.8735 367.9199999999996] /Type /Annot >> endobj -369 0 obj +465 0 obj << /Border [0 0 0] -/Dest (_parameters_4) +/Dest (_route2) /Subtype /Link -/Rect [557.8905 122.81999999999954 563.76 137.09999999999954] +/Rect [557.8905 353.63999999999965 563.76 367.9199999999996] /Type /Annot >> endobj -370 0 obj +466 0 obj << /Border [0 0 0] -/Dest (_responses_8) +/Dest (_responses_15) /Subtype /Link -/Rect [72.24000000000001 104.33999999999955 152.0295 118.61999999999955] +/Rect [72.24000000000001 335.1599999999996 157.899 349.4399999999996] /Type /Annot >> endobj -371 0 obj +467 0 obj << /Border [0 0 0] -/Dest (_responses_8) +/Dest (_responses_15) /Subtype /Link -/Rect [557.8905 104.33999999999955 563.76 118.61999999999955] +/Rect [557.8905 335.1599999999996 563.76 349.4399999999996] /Type /Annot >> endobj -372 0 obj +468 0 obj << /Border [0 0 0] -/Dest (_produces_8) +/Dest (_produces_14) /Subtype /Link -/Rect [72.24000000000001 85.85999999999956 146.4015 100.13999999999956] +/Rect [72.24000000000001 316.6799999999996 152.27100000000002 330.9599999999996] /Type /Annot >> endobj -373 0 obj +469 0 obj << /Border [0 0 0] -/Dest (_produces_8) +/Dest (_produces_14) /Subtype /Link -/Rect [557.8905 85.85999999999956 563.76 100.13999999999956] +/Rect [557.8905 316.6799999999996 563.76 330.9599999999996] /Type /Annot >> endobj -374 0 obj +470 0 obj << /Border [0 0 0] -/Dest (_v2_dictionary_name_elements_shortname_delete) +/Dest (_route15) /Subtype /Link -/Rect [60.24000000000001 67.37999999999957 348.4965 81.65999999999957] +/Rect [60.24000000000001 298.1999999999996 259.467 312.47999999999956] /Type /Annot >> endobj -375 0 obj +471 0 obj << /Border [0 0 0] -/Dest (_v2_dictionary_name_elements_shortname_delete) +/Dest (_route15) /Subtype /Link -/Rect [557.8905 67.37999999999957 563.76 81.65999999999957] +/Rect [557.8905 298.1999999999996 563.76 312.47999999999956] /Type /Annot >> endobj -376 0 obj +472 0 obj << /Border [0 0 0] -/Dest (_parameters_5) +/Dest (_parameters_10) /Subtype /Link -/Rect [72.24000000000001 48.89999999999957 157.84629492187503 63.17999999999957] +/Rect [72.24000000000001 279.7199999999996 163.71579492187502 293.99999999999955] /Type /Annot >> endobj -377 0 obj +473 0 obj << /Border [0 0 0] -/Dest (_parameters_5) +/Dest (_parameters_10) /Subtype /Link -/Rect [557.8905 48.89999999999957 563.76 63.17999999999957] +/Rect [557.8905 279.7199999999996 563.76 293.99999999999955] /Type /Annot >> endobj -378 0 obj +474 0 obj << /Border [0 0 0] -/Dest (_responses_9) +/Dest (_responses_16) /Subtype /Link -/Rect [72.24000000000001 741.7199999999999 152.0295 756.0] +/Rect [72.24000000000001 261.23999999999955 157.899 275.5199999999995] /Type /Annot >> endobj -379 0 obj +475 0 obj << /Border [0 0 0] -/Dest (_responses_9) +/Dest (_responses_16) /Subtype /Link -/Rect [557.8905 741.7199999999999 563.76 756.0] +/Rect [557.8905 261.23999999999955 563.76 275.5199999999995] /Type /Annot >> endobj -380 0 obj +476 0 obj << /Border [0 0 0] -/Dest (_produces_9) +/Dest (_produces_15) /Subtype /Link -/Rect [72.24000000000001 723.2399999999999 146.4015 737.52] +/Rect [72.24000000000001 242.7599999999995 152.27100000000002 257.0399999999995] /Type /Annot >> endobj -381 0 obj +477 0 obj << /Border [0 0 0] -/Dest (_produces_9) +/Dest (_produces_15) /Subtype /Link -/Rect [557.8905 723.2399999999999 563.76 737.52] +/Rect [557.8905 242.7599999999995 563.76 257.0399999999995] /Type /Annot >> endobj -382 0 obj +478 0 obj << /Border [0 0 0] -/Dest (_route45) +/Dest (_route9) /Subtype /Link -/Rect [60.24000000000001 704.7599999999999 245.15550000000002 719.04] +/Rect [60.24000000000001 224.27999999999952 355.8885 238.55999999999952] /Type /Annot >> endobj -383 0 obj +479 0 obj << /Border [0 0 0] -/Dest (_route45) +/Dest (_route9) /Subtype /Link -/Rect [557.8905 704.7599999999999 563.76 719.04] +/Rect [557.8905 224.27999999999952 563.76 238.55999999999952] /Type /Annot >> endobj -384 0 obj +480 0 obj << /Border [0 0 0] -/Dest (_parameters_6) +/Dest (_parameters_11) /Subtype /Link -/Rect [72.24000000000001 686.2799999999999 163.71579492187502 700.56] +/Rect [72.24000000000001 205.79999999999953 163.71579492187502 220.07999999999953] /Type /Annot >> endobj -385 0 obj +481 0 obj << /Border [0 0 0] -/Dest (_parameters_6) +/Dest (_parameters_11) /Subtype /Link -/Rect [557.8905 686.2799999999999 563.76 700.56] +/Rect [557.8905 205.79999999999953 563.76 220.07999999999953] /Type /Annot >> endobj -386 0 obj +482 0 obj << /Border [0 0 0] -/Dest (_responses_10) +/Dest (_responses_17) /Subtype /Link -/Rect [72.24000000000001 667.7999999999998 157.899 682.0799999999999] +/Rect [72.24000000000001 187.31999999999954 157.899 201.59999999999954] /Type /Annot >> endobj -387 0 obj +483 0 obj << /Border [0 0 0] -/Dest (_responses_10) +/Dest (_responses_17) /Subtype /Link -/Rect [557.8905 667.7999999999998 563.76 682.0799999999999] +/Rect [557.8905 187.31999999999954 563.76 201.59999999999954] /Type /Annot >> endobj -388 0 obj +484 0 obj << /Border [0 0 0] -/Dest (_route39) +/Dest (_produces_16) /Subtype /Link -/Rect [60.24000000000001 649.3199999999998 248.431294921875 663.5999999999999] +/Rect [72.24000000000001 168.83999999999955 152.27100000000002 183.11999999999955] /Type /Annot >> endobj -389 0 obj +485 0 obj << /Border [0 0 0] -/Dest (_route39) +/Dest (_produces_16) /Subtype /Link -/Rect [557.8905 649.3199999999998 563.76 663.5999999999999] +/Rect [557.8905 168.83999999999955 563.76 183.11999999999955] /Type /Annot >> endobj -390 0 obj +486 0 obj << /Border [0 0 0] -/Dest (_parameters_7) +/Dest (_route17) /Subtype /Link -/Rect [72.24000000000001 630.8399999999998 163.71579492187502 645.1199999999999] +/Rect [60.24000000000001 150.35999999999956 550.6416796875001 164.63999999999956] /Type /Annot >> endobj -391 0 obj +487 0 obj << /Border [0 0 0] -/Dest (_parameters_7) +/Dest (_route17) /Subtype /Link -/Rect [557.8905 630.8399999999998 563.76 645.1199999999999] +/Rect [557.8905 150.35999999999956 563.76 164.63999999999956] /Type /Annot >> endobj -392 0 obj +488 0 obj << /Border [0 0 0] -/Dest (_responses_11) +/Dest (_parameters_12) /Subtype /Link -/Rect [72.24000000000001 612.3599999999998 157.899 626.6399999999999] +/Rect [72.24000000000001 131.87999999999957 163.71579492187502 146.15999999999957] /Type /Annot >> endobj -393 0 obj +489 0 obj << /Border [0 0 0] -/Dest (_responses_11) +/Dest (_parameters_12) /Subtype /Link -/Rect [557.8905 612.3599999999998 563.76 626.6399999999999] +/Rect [557.8905 131.87999999999957 563.76 146.15999999999957] /Type /Annot >> endobj -394 0 obj +490 0 obj << /Border [0 0 0] -/Dest (_produces_10) +/Dest (_responses_18) /Subtype /Link -/Rect [72.24000000000001 593.8799999999998 152.27100000000002 608.1599999999999] +/Rect [72.24000000000001 113.39999999999958 157.899 127.67999999999958] /Type /Annot >> endobj -395 0 obj +491 0 obj << /Border [0 0 0] -/Dest (_produces_10) +/Dest (_responses_18) /Subtype /Link -/Rect [557.8905 593.8799999999998 563.76 608.1599999999999] +/Rect [557.8905 113.39999999999958 563.76 127.67999999999958] /Type /Annot >> endobj -396 0 obj +492 0 obj << /Border [0 0 0] -/Dest (_route33) +/Dest (_produces_17) /Subtype /Link -/Rect [60.24000000000001 575.3999999999997 214.8735 589.6799999999998] +/Rect [72.24000000000001 94.91999999999959 152.27100000000002 109.19999999999959] /Type /Annot >> endobj -397 0 obj +493 0 obj << /Border [0 0 0] -/Dest (_route33) +/Dest (_produces_17) /Subtype /Link -/Rect [557.8905 575.3999999999997 563.76 589.6799999999998] +/Rect [557.8905 94.91999999999959 563.76 109.19999999999959] /Type /Annot >> endobj -398 0 obj +494 0 obj << /Border [0 0 0] -/Dest (_responses_12) +/Dest (_route12) /Subtype /Link -/Rect [72.24000000000001 556.9199999999998 157.899 571.1999999999998] +/Rect [60.24000000000001 76.4399999999996 248.45250000000001 90.7199999999996] /Type /Annot >> endobj -399 0 obj +495 0 obj << /Border [0 0 0] -/Dest (_responses_12) +/Dest (_route12) /Subtype /Link -/Rect [557.8905 556.9199999999998 563.76 571.1999999999998] +/Rect [552.021 76.4399999999996 563.76 90.7199999999996] /Type /Annot >> endobj -400 0 obj +496 0 obj << /Border [0 0 0] -/Dest (_produces_11) +/Dest (_parameters_13) /Subtype /Link -/Rect [72.24000000000001 538.4399999999998 152.27100000000002 552.7199999999998] +/Rect [72.24000000000001 57.95999999999961 163.71579492187502 72.23999999999961] /Type /Annot >> endobj -401 0 obj +497 0 obj << /Border [0 0 0] -/Dest (_produces_11) +/Dest (_parameters_13) /Subtype /Link -/Rect [557.8905 538.4399999999998 563.76 552.7199999999998] +/Rect [552.021 57.95999999999961 563.76 72.23999999999961] /Type /Annot >> endobj -402 0 obj +498 0 obj << /Border [0 0 0] -/Dest (_route46) +/Dest (_responses_19) /Subtype /Link -/Rect [60.24000000000001 519.9599999999998 259.467 534.2399999999998] +/Rect [72.24000000000001 741.7199999999999 157.899 756.0] /Type /Annot >> endobj -403 0 obj +499 0 obj << /Border [0 0 0] -/Dest (_route46) +/Dest (_responses_19) /Subtype /Link -/Rect [557.8905 519.9599999999998 563.76 534.2399999999998] +/Rect [552.021 741.7199999999999 563.76 756.0] /Type /Annot >> endobj -404 0 obj +500 0 obj << /Border [0 0 0] -/Dest (_parameters_8) +/Dest (_produces_18) /Subtype /Link -/Rect [72.24000000000001 501.4799999999998 163.71579492187502 515.7599999999998] +/Rect [72.24000000000001 723.2399999999999 152.27100000000002 737.52] /Type /Annot >> endobj -405 0 obj +501 0 obj << /Border [0 0 0] -/Dest (_parameters_8) +/Dest (_produces_18) /Subtype /Link -/Rect [557.8905 501.4799999999998 563.76 515.7599999999998] +/Rect [552.021 723.2399999999999 563.76 737.52] /Type /Annot >> endobj -406 0 obj +502 0 obj << /Border [0 0 0] -/Dest (_responses_13) +/Dest (_route11) /Subtype /Link -/Rect [72.24000000000001 482.9999999999998 157.899 497.27999999999975] +/Rect [60.24000000000001 704.7599999999999 235.842 719.04] /Type /Annot >> endobj -407 0 obj +503 0 obj << /Border [0 0 0] -/Dest (_responses_13) +/Dest (_route11) /Subtype /Link -/Rect [557.8905 482.9999999999998 563.76 497.27999999999975] +/Rect [552.021 704.7599999999999 563.76 719.04] /Type /Annot >> endobj -408 0 obj +504 0 obj << /Border [0 0 0] -/Dest (_produces_12) +/Dest (_parameters_14) /Subtype /Link -/Rect [72.24000000000001 464.51999999999975 152.27100000000002 478.7999999999997] +/Rect [72.24000000000001 686.2799999999999 163.71579492187502 700.56] /Type /Annot >> endobj -409 0 obj +505 0 obj << /Border [0 0 0] -/Dest (_produces_12) +/Dest (_parameters_14) /Subtype /Link -/Rect [557.8905 464.51999999999975 563.76 478.7999999999997] +/Rect [552.021 686.2799999999999 563.76 700.56] /Type /Annot >> endobj -410 0 obj +506 0 obj << /Border [0 0 0] -/Dest (_route40) +/Dest (_responses_20) /Subtype /Link -/Rect [60.24000000000001 446.03999999999974 355.8885 460.3199999999997] +/Rect [72.24000000000001 667.7999999999998 157.899 682.0799999999999] /Type /Annot >> endobj -411 0 obj +507 0 obj << /Border [0 0 0] -/Dest (_route40) +/Dest (_responses_20) /Subtype /Link -/Rect [557.8905 446.03999999999974 563.76 460.3199999999997] +/Rect [552.021 667.7999999999998 563.76 682.0799999999999] /Type /Annot >> endobj -412 0 obj +508 0 obj << /Border [0 0 0] -/Dest (_parameters_9) +/Dest (_produces_19) /Subtype /Link -/Rect [72.24000000000001 427.5599999999997 163.71579492187502 441.8399999999997] +/Rect [72.24000000000001 649.3199999999998 152.27100000000002 663.5999999999999] /Type /Annot >> endobj -413 0 obj +509 0 obj << /Border [0 0 0] -/Dest (_parameters_9) +/Dest (_produces_19) /Subtype /Link -/Rect [557.8905 427.5599999999997 563.76 441.8399999999997] +/Rect [552.021 649.3199999999998 563.76 663.5999999999999] /Type /Annot >> endobj -414 0 obj +510 0 obj << /Border [0 0 0] -/Dest (_responses_14) +/Dest (_route13) /Subtype /Link -/Rect [72.24000000000001 409.0799999999997 157.899 423.3599999999997] +/Rect [60.24000000000001 630.8399999999998 249.70200000000003 645.1199999999999] /Type /Annot >> endobj -415 0 obj +511 0 obj << /Border [0 0 0] -/Dest (_responses_14) +/Dest (_route13) /Subtype /Link -/Rect [557.8905 409.0799999999997 563.76 423.3599999999997] +/Rect [552.021 630.8399999999998 563.76 645.1199999999999] /Type /Annot >> endobj -416 0 obj +512 0 obj << /Border [0 0 0] -/Dest (_produces_13) +/Dest (_parameters_15) /Subtype /Link -/Rect [72.24000000000001 390.5999999999997 152.27100000000002 404.87999999999965] +/Rect [72.24000000000001 612.3599999999998 163.71579492187502 626.6399999999999] /Type /Annot >> endobj -417 0 obj +513 0 obj << /Border [0 0 0] -/Dest (_produces_13) +/Dest (_parameters_15) /Subtype /Link -/Rect [557.8905 390.5999999999997 563.76 404.87999999999965] +/Rect [552.021 612.3599999999998 563.76 626.6399999999999] /Type /Annot >> endobj -418 0 obj +514 0 obj << /Border [0 0 0] -/Dest (_route43) +/Dest (_responses_21) /Subtype /Link -/Rect [60.24000000000001 372.11999999999966 248.45250000000001 386.39999999999964] +/Rect [72.24000000000001 593.8799999999998 157.899 608.1599999999999] /Type /Annot >> endobj -419 0 obj +515 0 obj << /Border [0 0 0] -/Dest (_route43) +/Dest (_responses_21) /Subtype /Link -/Rect [557.8905 372.11999999999966 563.76 386.39999999999964] +/Rect [552.021 593.8799999999998 563.76 608.1599999999999] /Type /Annot >> endobj -420 0 obj +516 0 obj << /Border [0 0 0] -/Dest (_parameters_10) +/Dest (_produces_20) /Subtype /Link -/Rect [72.24000000000001 353.63999999999965 163.71579492187502 367.9199999999996] +/Rect [72.24000000000001 575.3999999999997 152.27100000000002 589.6799999999998] /Type /Annot >> endobj -421 0 obj +517 0 obj << /Border [0 0 0] -/Dest (_parameters_10) +/Dest (_produces_20) /Subtype /Link -/Rect [557.8905 353.63999999999965 563.76 367.9199999999996] +/Rect [552.021 575.3999999999997 563.76 589.6799999999998] /Type /Annot >> endobj -422 0 obj +518 0 obj << /Border [0 0 0] -/Dest (_responses_15) +/Dest (_route4) /Subtype /Link -/Rect [72.24000000000001 335.1599999999996 157.899 349.4399999999996] +/Rect [60.24000000000001 556.9199999999998 307.641 571.1999999999998] /Type /Annot >> endobj -423 0 obj +519 0 obj << /Border [0 0 0] -/Dest (_responses_15) +/Dest (_route4) /Subtype /Link -/Rect [557.8905 335.1599999999996 563.76 349.4399999999996] +/Rect [552.021 556.9199999999998 563.76 571.1999999999998] /Type /Annot >> endobj -424 0 obj +520 0 obj << /Border [0 0 0] -/Dest (_produces_14) +/Dest (_parameters_16) /Subtype /Link -/Rect [72.24000000000001 316.6799999999996 152.27100000000002 330.9599999999996] +/Rect [72.24000000000001 538.4399999999998 163.71579492187502 552.7199999999998] /Type /Annot >> endobj -425 0 obj +521 0 obj << /Border [0 0 0] -/Dest (_produces_14) +/Dest (_parameters_16) /Subtype /Link -/Rect [557.8905 316.6799999999996 563.76 330.9599999999996] +/Rect [552.021 538.4399999999998 563.76 552.7199999999998] /Type /Annot >> endobj -426 0 obj +522 0 obj << /Border [0 0 0] -/Dest (_route42) +/Dest (_responses_22) /Subtype /Link -/Rect [60.24000000000001 298.1999999999996 235.842 312.47999999999956] +/Rect [72.24000000000001 519.9599999999998 157.899 534.2399999999998] /Type /Annot >> endobj -427 0 obj +523 0 obj << /Border [0 0 0] -/Dest (_route42) +/Dest (_responses_22) /Subtype /Link -/Rect [557.8905 298.1999999999996 563.76 312.47999999999956] +/Rect [552.021 519.9599999999998 563.76 534.2399999999998] /Type /Annot >> endobj -428 0 obj +524 0 obj << /Border [0 0 0] -/Dest (_parameters_11) +/Dest (_produces_21) /Subtype /Link -/Rect [72.24000000000001 279.7199999999996 163.71579492187502 293.99999999999955] +/Rect [72.24000000000001 501.4799999999998 152.27100000000002 515.7599999999998] /Type /Annot >> endobj -429 0 obj +525 0 obj << /Border [0 0 0] -/Dest (_parameters_11) +/Dest (_produces_21) /Subtype /Link -/Rect [557.8905 279.7199999999996 563.76 293.99999999999955] +/Rect [552.021 501.4799999999998 563.76 515.7599999999998] /Type /Annot >> endobj -430 0 obj +526 0 obj << /Border [0 0 0] -/Dest (_responses_16) +/Dest (_route10) /Subtype /Link -/Rect [72.24000000000001 261.23999999999955 157.899 275.5199999999995] +/Rect [60.24000000000001 482.9999999999998 261.860794921875 497.27999999999975] /Type /Annot >> endobj -431 0 obj +527 0 obj << /Border [0 0 0] -/Dest (_responses_16) +/Dest (_route10) /Subtype /Link -/Rect [557.8905 261.23999999999955 563.76 275.5199999999995] +/Rect [552.021 482.9999999999998 563.76 497.27999999999975] /Type /Annot >> endobj -432 0 obj +528 0 obj << /Border [0 0 0] -/Dest (_produces_15) +/Dest (_parameters_17) /Subtype /Link -/Rect [72.24000000000001 242.7599999999995 152.27100000000002 257.0399999999995] +/Rect [72.24000000000001 464.51999999999975 163.71579492187502 478.7999999999997] /Type /Annot >> endobj -433 0 obj +529 0 obj << /Border [0 0 0] -/Dest (_produces_15) +/Dest (_parameters_17) /Subtype /Link -/Rect [557.8905 242.7599999999995 563.76 257.0399999999995] +/Rect [552.021 464.51999999999975 563.76 478.7999999999997] /Type /Annot >> endobj -434 0 obj +530 0 obj << /Border [0 0 0] -/Dest (_route44) +/Dest (_responses_23) /Subtype /Link -/Rect [60.24000000000001 224.27999999999952 249.70200000000003 238.55999999999952] +/Rect [72.24000000000001 446.03999999999974 157.899 460.3199999999997] /Type /Annot >> endobj -435 0 obj +531 0 obj << /Border [0 0 0] -/Dest (_route44) +/Dest (_responses_23) /Subtype /Link -/Rect [557.8905 224.27999999999952 563.76 238.55999999999952] +/Rect [552.021 446.03999999999974 563.76 460.3199999999997] /Type /Annot >> endobj -436 0 obj +532 0 obj << /Border [0 0 0] -/Dest (_parameters_12) +/Dest (_produces_22) /Subtype /Link -/Rect [72.24000000000001 205.79999999999953 163.71579492187502 220.07999999999953] +/Rect [72.24000000000001 427.5599999999997 152.27100000000002 441.8399999999997] /Type /Annot >> endobj -437 0 obj +533 0 obj << /Border [0 0 0] -/Dest (_parameters_12) +/Dest (_produces_22) /Subtype /Link -/Rect [557.8905 205.79999999999953 563.76 220.07999999999953] +/Rect [552.021 427.5599999999997 563.76 441.8399999999997] /Type /Annot >> endobj -438 0 obj +534 0 obj << /Border [0 0 0] -/Dest (_responses_17) +/Dest (_route5) /Subtype /Link -/Rect [72.24000000000001 187.31999999999954 157.899 201.59999999999954] +/Rect [60.24000000000001 409.0799999999997 339.560794921875 423.3599999999997] /Type /Annot >> endobj -439 0 obj +535 0 obj << /Border [0 0 0] -/Dest (_responses_17) +/Dest (_route5) /Subtype /Link -/Rect [557.8905 187.31999999999954 563.76 201.59999999999954] +/Rect [552.021 409.0799999999997 563.76 423.3599999999997] /Type /Annot >> endobj -440 0 obj +536 0 obj << /Border [0 0 0] -/Dest (_produces_16) +/Dest (_parameters_18) /Subtype /Link -/Rect [72.24000000000001 168.83999999999955 152.27100000000002 183.11999999999955] +/Rect [72.24000000000001 390.5999999999997 163.71579492187502 404.87999999999965] /Type /Annot >> endobj -441 0 obj +537 0 obj << /Border [0 0 0] -/Dest (_produces_16) +/Dest (_parameters_18) /Subtype /Link -/Rect [557.8905 168.83999999999955 563.76 183.11999999999955] +/Rect [552.021 390.5999999999997 563.76 404.87999999999965] /Type /Annot >> endobj -442 0 obj +538 0 obj << /Border [0 0 0] -/Dest (_route35) +/Dest (_responses_24) /Subtype /Link -/Rect [60.24000000000001 150.35999999999956 307.641 164.63999999999956] +/Rect [72.24000000000001 372.11999999999966 157.899 386.39999999999964] /Type /Annot >> endobj -443 0 obj +539 0 obj << /Border [0 0 0] -/Dest (_route35) +/Dest (_responses_24) /Subtype /Link -/Rect [557.8905 150.35999999999956 563.76 164.63999999999956] +/Rect [552.021 372.11999999999966 563.76 386.39999999999964] /Type /Annot >> endobj -444 0 obj +540 0 obj << /Border [0 0 0] -/Dest (_parameters_13) +/Dest (_consumes_4) /Subtype /Link -/Rect [72.24000000000001 131.87999999999957 163.71579492187502 146.15999999999957] +/Rect [72.24000000000001 353.63999999999965 157.2375 367.9199999999996] /Type /Annot >> endobj -445 0 obj +541 0 obj << /Border [0 0 0] -/Dest (_parameters_13) +/Dest (_consumes_4) /Subtype /Link -/Rect [557.8905 131.87999999999957 563.76 146.15999999999957] +/Rect [552.021 353.63999999999965 563.76 367.9199999999996] /Type /Annot >> endobj -446 0 obj +542 0 obj << /Border [0 0 0] -/Dest (_responses_18) +/Dest (_produces_23) /Subtype /Link -/Rect [72.24000000000001 113.39999999999958 157.899 127.67999999999958] +/Rect [72.24000000000001 335.1599999999996 152.27100000000002 349.4399999999996] /Type /Annot >> endobj -447 0 obj +543 0 obj << /Border [0 0 0] -/Dest (_responses_18) +/Dest (_produces_23) /Subtype /Link -/Rect [557.8905 113.39999999999958 563.76 127.67999999999958] +/Rect [552.021 335.1599999999996 563.76 349.4399999999996] /Type /Annot >> endobj -448 0 obj +544 0 obj << /Border [0 0 0] -/Dest (_produces_17) +/Dest (_route7) /Subtype /Link -/Rect [72.24000000000001 94.91999999999959 152.27100000000002 109.19999999999959] +/Rect [60.24000000000001 316.6799999999996 350.38629492187505 330.9599999999996] /Type /Annot >> endobj -449 0 obj +545 0 obj << /Border [0 0 0] -/Dest (_produces_17) +/Dest (_route7) /Subtype /Link -/Rect [557.8905 94.91999999999959 563.76 109.19999999999959] +/Rect [552.021 316.6799999999996 563.76 330.9599999999996] /Type /Annot >> endobj -450 0 obj +546 0 obj << /Border [0 0 0] -/Dest (_route41) +/Dest (_parameters_19) /Subtype /Link -/Rect [60.24000000000001 76.4399999999996 261.860794921875 90.7199999999996] +/Rect [72.24000000000001 298.1999999999996 163.71579492187502 312.47999999999956] /Type /Annot >> endobj -451 0 obj +547 0 obj << /Border [0 0 0] -/Dest (_route41) +/Dest (_parameters_19) /Subtype /Link -/Rect [557.8905 76.4399999999996 563.76 90.7199999999996] +/Rect [552.021 298.1999999999996 563.76 312.47999999999956] /Type /Annot >> endobj -452 0 obj +548 0 obj << /Border [0 0 0] -/Dest (_parameters_14) +/Dest (_responses_25) /Subtype /Link -/Rect [72.24000000000001 57.95999999999961 163.71579492187502 72.23999999999961] +/Rect [72.24000000000001 279.7199999999996 157.899 293.99999999999955] /Type /Annot >> endobj -453 0 obj +549 0 obj << /Border [0 0 0] -/Dest (_parameters_14) +/Dest (_responses_25) /Subtype /Link -/Rect [557.8905 57.95999999999961 563.76 72.23999999999961] +/Rect [552.021 279.7199999999996 563.76 293.99999999999955] /Type /Annot >> endobj -454 0 obj +550 0 obj << /Border [0 0 0] -/Dest (_responses_19) +/Dest (_consumes_5) /Subtype /Link -/Rect [72.24000000000001 741.7199999999999 157.899 756.0] +/Rect [72.24000000000001 261.23999999999955 157.2375 275.5199999999995] /Type /Annot >> endobj -455 0 obj +551 0 obj << /Border [0 0 0] -/Dest (_responses_19) +/Dest (_consumes_5) /Subtype /Link -/Rect [557.8905 741.7199999999999 563.76 756.0] +/Rect [552.021 261.23999999999955 563.76 275.5199999999995] /Type /Annot >> endobj -456 0 obj +552 0 obj << /Border [0 0 0] -/Dest (_produces_18) +/Dest (_produces_24) /Subtype /Link -/Rect [72.24000000000001 723.2399999999999 152.27100000000002 737.52] +/Rect [72.24000000000001 242.7599999999995 152.27100000000002 257.0399999999995] /Type /Annot >> endobj -457 0 obj +553 0 obj << /Border [0 0 0] -/Dest (_produces_18) +/Dest (_produces_24) /Subtype /Link -/Rect [557.8905 723.2399999999999 563.76 737.52] +/Rect [552.021 242.7599999999995 563.76 257.0399999999995] /Type /Annot >> endobj -458 0 obj +554 0 obj << /Border [0 0 0] -/Dest (_route36) +/Dest (_route6) /Subtype /Link -/Rect [60.24000000000001 704.7599999999999 339.560794921875 719.04] +/Rect [60.24000000000001 224.27999999999952 352.81158984375 238.55999999999952] /Type /Annot >> endobj -459 0 obj +555 0 obj << /Border [0 0 0] -/Dest (_route36) +/Dest (_route6) /Subtype /Link -/Rect [552.021 704.7599999999999 563.76 719.04] +/Rect [552.021 224.27999999999952 563.76 238.55999999999952] /Type /Annot >> endobj -460 0 obj +556 0 obj << /Border [0 0 0] -/Dest (_parameters_15) +/Dest (_parameters_20) /Subtype /Link -/Rect [72.24000000000001 686.2799999999999 163.71579492187502 700.56] +/Rect [72.24000000000001 205.79999999999953 163.71579492187502 220.07999999999953] /Type /Annot >> endobj -461 0 obj +557 0 obj << /Border [0 0 0] -/Dest (_parameters_15) +/Dest (_parameters_20) /Subtype /Link -/Rect [552.021 686.2799999999999 563.76 700.56] +/Rect [552.021 205.79999999999953 563.76 220.07999999999953] /Type /Annot >> endobj -462 0 obj +558 0 obj << /Border [0 0 0] -/Dest (_responses_20) +/Dest (_responses_26) /Subtype /Link -/Rect [72.24000000000001 667.7999999999998 157.899 682.0799999999999] +/Rect [72.24000000000001 187.31999999999954 157.899 201.59999999999954] /Type /Annot >> endobj -463 0 obj +559 0 obj << /Border [0 0 0] -/Dest (_responses_20) +/Dest (_responses_26) /Subtype /Link -/Rect [552.021 667.7999999999998 563.76 682.0799999999999] +/Rect [552.021 187.31999999999954 563.76 201.59999999999954] /Type /Annot >> endobj -464 0 obj +560 0 obj << /Border [0 0 0] -/Dest (_consumes_3) +/Dest (_consumes_6) /Subtype /Link -/Rect [72.24000000000001 649.3199999999998 157.2375 663.5999999999999] +/Rect [72.24000000000001 168.83999999999955 157.2375 183.11999999999955] /Type /Annot >> endobj -465 0 obj +561 0 obj << /Border [0 0 0] -/Dest (_consumes_3) +/Dest (_consumes_6) /Subtype /Link -/Rect [552.021 649.3199999999998 563.76 663.5999999999999] +/Rect [552.021 168.83999999999955 563.76 183.11999999999955] /Type /Annot >> endobj -466 0 obj +562 0 obj << /Border [0 0 0] -/Dest (_produces_19) +/Dest (_produces_25) /Subtype /Link -/Rect [72.24000000000001 630.8399999999998 152.27100000000002 645.1199999999999] +/Rect [72.24000000000001 150.35999999999956 152.27100000000002 164.63999999999956] /Type /Annot >> endobj -467 0 obj +563 0 obj << /Border [0 0 0] -/Dest (_produces_19) +/Dest (_produces_25) /Subtype /Link -/Rect [552.021 630.8399999999998 563.76 645.1199999999999] +/Rect [552.021 150.35999999999956 563.76 164.63999999999956] /Type /Annot >> endobj -468 0 obj +564 0 obj << /Border [0 0 0] -/Dest (_route38) +/Dest (_route3) /Subtype /Link -/Rect [60.24000000000001 612.3599999999998 350.38629492187505 626.6399999999999] +/Rect [60.24000000000001 131.87999999999957 212.0595 146.15999999999957] /Type /Annot >> endobj -469 0 obj +565 0 obj << /Border [0 0 0] -/Dest (_route38) +/Dest (_route3) /Subtype /Link -/Rect [552.021 612.3599999999998 563.76 626.6399999999999] +/Rect [552.021 131.87999999999957 563.76 146.15999999999957] /Type /Annot >> endobj -470 0 obj +566 0 obj << /Border [0 0 0] -/Dest (_parameters_16) +/Dest (_parameters_21) /Subtype /Link -/Rect [72.24000000000001 593.8799999999998 163.71579492187502 608.1599999999999] +/Rect [72.24000000000001 113.39999999999958 163.71579492187502 127.67999999999958] /Type /Annot >> endobj -471 0 obj +567 0 obj << /Border [0 0 0] -/Dest (_parameters_16) +/Dest (_parameters_21) /Subtype /Link -/Rect [552.021 593.8799999999998 563.76 608.1599999999999] +/Rect [552.021 113.39999999999958 563.76 127.67999999999958] /Type /Annot >> endobj -472 0 obj +568 0 obj << /Border [0 0 0] -/Dest (_responses_21) +/Dest (_responses_27) /Subtype /Link -/Rect [72.24000000000001 575.3999999999997 157.899 589.6799999999998] +/Rect [72.24000000000001 94.91999999999959 157.899 109.19999999999959] /Type /Annot >> endobj -473 0 obj +569 0 obj << /Border [0 0 0] -/Dest (_responses_21) +/Dest (_responses_27) /Subtype /Link -/Rect [552.021 575.3999999999997 563.76 589.6799999999998] +/Rect [552.021 94.91999999999959 563.76 109.19999999999959] /Type /Annot >> endobj -474 0 obj +570 0 obj << /Border [0 0 0] -/Dest (_consumes_4) +/Dest (_produces_26) /Subtype /Link -/Rect [72.24000000000001 556.9199999999998 157.2375 571.1999999999998] +/Rect [72.24000000000001 76.4399999999996 152.27100000000002 90.7199999999996] /Type /Annot >> endobj -475 0 obj +571 0 obj << /Border [0 0 0] -/Dest (_consumes_4) +/Dest (_produces_26) /Subtype /Link -/Rect [552.021 556.9199999999998 563.76 571.1999999999998] +/Rect [552.021 76.4399999999996 563.76 90.7199999999996] /Type /Annot >> endobj -476 0 obj +572 0 obj << /Border [0 0 0] -/Dest (_produces_20) +/Dest (_route29) /Subtype /Link -/Rect [72.24000000000001 538.4399999999998 152.27100000000002 552.7199999999998] +/Rect [60.24000000000001 57.95999999999961 226.68805078125 72.23999999999961] /Type /Annot >> endobj -477 0 obj +573 0 obj << /Border [0 0 0] -/Dest (_produces_20) +/Dest (_route29) /Subtype /Link -/Rect [552.021 538.4399999999998 563.76 552.7199999999998] +/Rect [552.021 57.95999999999961 563.76 72.23999999999961] /Type /Annot >> endobj -478 0 obj +574 0 obj << /Border [0 0 0] -/Dest (_route37) +/Dest (_parameters_22) /Subtype /Link -/Rect [60.24000000000001 519.9599999999998 352.81158984375 534.2399999999998] +/Rect [72.24000000000001 741.7199999999999 163.71579492187502 756.0] /Type /Annot >> endobj -479 0 obj +575 0 obj << /Border [0 0 0] -/Dest (_route37) +/Dest (_parameters_22) /Subtype /Link -/Rect [552.021 519.9599999999998 563.76 534.2399999999998] +/Rect [552.021 741.7199999999999 563.76 756.0] /Type /Annot >> endobj -480 0 obj +576 0 obj << /Border [0 0 0] -/Dest (_parameters_17) +/Dest (_responses_28) /Subtype /Link -/Rect [72.24000000000001 501.4799999999998 163.71579492187502 515.7599999999998] +/Rect [72.24000000000001 723.2399999999999 157.899 737.52] /Type /Annot >> endobj -481 0 obj +577 0 obj << /Border [0 0 0] -/Dest (_parameters_17) +/Dest (_responses_28) /Subtype /Link -/Rect [552.021 501.4799999999998 563.76 515.7599999999998] +/Rect [552.021 723.2399999999999 563.76 737.52] /Type /Annot >> endobj -482 0 obj +578 0 obj << /Border [0 0 0] -/Dest (_responses_22) +/Dest (_consumes_7) /Subtype /Link -/Rect [72.24000000000001 482.9999999999998 157.899 497.27999999999975] +/Rect [72.24000000000001 704.7599999999999 157.2375 719.04] /Type /Annot >> endobj -483 0 obj +579 0 obj << /Border [0 0 0] -/Dest (_responses_22) +/Dest (_consumes_7) /Subtype /Link -/Rect [552.021 482.9999999999998 563.76 497.27999999999975] +/Rect [552.021 704.7599999999999 563.76 719.04] /Type /Annot >> endobj -484 0 obj +580 0 obj << /Border [0 0 0] -/Dest (_consumes_5) +/Dest (_produces_27) /Subtype /Link -/Rect [72.24000000000001 464.51999999999975 157.2375 478.7999999999997] +/Rect [72.24000000000001 686.2799999999999 152.27100000000002 700.56] /Type /Annot >> endobj -485 0 obj +581 0 obj << /Border [0 0 0] -/Dest (_consumes_5) +/Dest (_produces_27) /Subtype /Link -/Rect [552.021 464.51999999999975 563.76 478.7999999999997] +/Rect [552.021 686.2799999999999 563.76 700.56] /Type /Annot >> endobj -486 0 obj +582 0 obj << /Border [0 0 0] -/Dest (_produces_21) +/Dest (_route28) /Subtype /Link -/Rect [72.24000000000001 446.03999999999974 152.27100000000002 460.3199999999997] +/Rect [60.24000000000001 667.7999999999998 221.091755859375 682.0799999999999] /Type /Annot >> endobj -487 0 obj +583 0 obj << /Border [0 0 0] -/Dest (_produces_21) +/Dest (_route28) /Subtype /Link -/Rect [552.021 446.03999999999974 563.76 460.3199999999997] +/Rect [552.021 667.7999999999998 563.76 682.0799999999999] /Type /Annot >> endobj -488 0 obj +584 0 obj << /Border [0 0 0] -/Dest (_route34) +/Dest (_responses_29) /Subtype /Link -/Rect [60.24000000000001 427.5599999999997 212.0595 441.8399999999997] +/Rect [72.24000000000001 649.3199999999998 157.899 663.5999999999999] /Type /Annot >> endobj -489 0 obj +585 0 obj << /Border [0 0 0] -/Dest (_route34) +/Dest (_responses_29) /Subtype /Link -/Rect [552.021 427.5599999999997 563.76 441.8399999999997] +/Rect [552.021 649.3199999999998 563.76 663.5999999999999] /Type /Annot >> endobj -490 0 obj +586 0 obj << /Border [0 0 0] -/Dest (_parameters_18) +/Dest (_produces_28) /Subtype /Link -/Rect [72.24000000000001 409.0799999999997 163.71579492187502 423.3599999999997] +/Rect [72.24000000000001 630.8399999999998 152.27100000000002 645.1199999999999] /Type /Annot >> endobj -491 0 obj +587 0 obj << /Border [0 0 0] -/Dest (_parameters_18) +/Dest (_produces_28) /Subtype /Link -/Rect [552.021 409.0799999999997 563.76 423.3599999999997] +/Rect [552.021 630.8399999999998 563.76 645.1199999999999] /Type /Annot >> endobj -492 0 obj +588 0 obj << /Border [0 0 0] -/Dest (_responses_23) +/Dest (_v2_policytoscamodels_yaml_policymodeltype_policymodelversion_get) /Subtype /Link -/Rect [72.24000000000001 390.5999999999997 157.899 404.87999999999965] +/Rect [60.24000000000001 612.3599999999998 458.24414062500006 626.6399999999999] /Type /Annot >> endobj -493 0 obj +589 0 obj << /Border [0 0 0] -/Dest (_responses_23) +/Dest (_v2_policytoscamodels_yaml_policymodeltype_policymodelversion_get) /Subtype /Link -/Rect [552.021 390.5999999999997 563.76 404.87999999999965] +/Rect [552.021 612.3599999999998 563.76 626.6399999999999] /Type /Annot >> endobj -494 0 obj +590 0 obj << /Border [0 0 0] -/Dest (_produces_22) +/Dest (_parameters_23) /Subtype /Link -/Rect [72.24000000000001 372.11999999999966 152.27100000000002 386.39999999999964] +/Rect [72.24000000000001 593.8799999999998 163.71579492187502 608.1599999999999] /Type /Annot >> endobj -495 0 obj +591 0 obj << /Border [0 0 0] -/Dest (_produces_22) +/Dest (_parameters_23) /Subtype /Link -/Rect [552.021 372.11999999999966 563.76 386.39999999999964] +/Rect [552.021 593.8799999999998 563.76 608.1599999999999] /Type /Annot >> endobj -496 0 obj +592 0 obj << /Border [0 0 0] -/Dest (_route56) +/Dest (_responses_30) /Subtype /Link -/Rect [60.24000000000001 353.63999999999965 221.091755859375 367.9199999999996] +/Rect [72.24000000000001 575.3999999999997 157.899 589.6799999999998] /Type /Annot >> endobj -497 0 obj +593 0 obj << /Border [0 0 0] -/Dest (_route56) +/Dest (_responses_30) /Subtype /Link -/Rect [552.021 353.63999999999965 563.76 367.9199999999996] +/Rect [552.021 575.3999999999997 563.76 589.6799999999998] /Type /Annot >> endobj -498 0 obj +594 0 obj << /Border [0 0 0] -/Dest (_responses_24) +/Dest (_produces_29) /Subtype /Link -/Rect [72.24000000000001 335.1599999999996 157.899 349.4399999999996] +/Rect [72.24000000000001 556.9199999999998 152.27100000000002 571.1999999999998] /Type /Annot >> endobj -499 0 obj +595 0 obj << /Border [0 0 0] -/Dest (_responses_24) +/Dest (_produces_29) /Subtype /Link -/Rect [552.021 335.1599999999996 563.76 349.4399999999996] +/Rect [552.021 556.9199999999998 563.76 571.1999999999998] /Type /Annot >> endobj -500 0 obj +596 0 obj << /Border [0 0 0] -/Dest (_produces_23) +/Dest (_v2_policytoscamodels_policymodeltype_policymodelversion_get) /Subtype /Link -/Rect [72.24000000000001 316.6799999999996 152.27100000000002 330.9599999999996] +/Rect [60.24000000000001 538.4399999999998 430.23014062500005 552.7199999999998] /Type /Annot >> endobj -501 0 obj +597 0 obj << /Border [0 0 0] -/Dest (_produces_23) +/Dest (_v2_policytoscamodels_policymodeltype_policymodelversion_get) /Subtype /Link -/Rect [552.021 316.6799999999996 563.76 330.9599999999996] +/Rect [552.021 538.4399999999998 563.76 552.7199999999998] /Type /Annot >> endobj -502 0 obj +598 0 obj << /Border [0 0 0] -/Dest (_v2_policytoscamodels_yaml_policymodeltype_get) +/Dest (_parameters_24) /Subtype /Link -/Rect [60.24000000000001 298.1999999999996 346.913255859375 312.47999999999956] +/Rect [72.24000000000001 519.9599999999998 163.71579492187502 534.2399999999998] /Type /Annot >> endobj -503 0 obj +599 0 obj << /Border [0 0 0] -/Dest (_v2_policytoscamodels_yaml_policymodeltype_get) +/Dest (_parameters_24) /Subtype /Link -/Rect [552.021 298.1999999999996 563.76 312.47999999999956] +/Rect [552.021 519.9599999999998 563.76 534.2399999999998] /Type /Annot >> endobj -504 0 obj +600 0 obj << /Border [0 0 0] -/Dest (_parameters_19) +/Dest (_responses_31) /Subtype /Link -/Rect [72.24000000000001 279.7199999999996 163.71579492187502 293.99999999999955] +/Rect [72.24000000000001 501.4799999999998 157.899 515.7599999999998] /Type /Annot >> endobj -505 0 obj +601 0 obj << /Border [0 0 0] -/Dest (_parameters_19) +/Dest (_responses_31) /Subtype /Link -/Rect [552.021 279.7199999999996 563.76 293.99999999999955] +/Rect [552.021 501.4799999999998 563.76 515.7599999999998] /Type /Annot >> endobj -506 0 obj +602 0 obj << /Border [0 0 0] -/Dest (_responses_25) +/Dest (_produces_30) /Subtype /Link -/Rect [72.24000000000001 261.23999999999955 157.899 275.5199999999995] +/Rect [72.24000000000001 482.9999999999998 152.27100000000002 497.27999999999975] /Type /Annot >> endobj -507 0 obj +603 0 obj << /Border [0 0 0] -/Dest (_responses_25) +/Dest (_produces_30) /Subtype /Link -/Rect [552.021 261.23999999999955 563.76 275.5199999999995] +/Rect [552.021 482.9999999999998 563.76 497.27999999999975] /Type /Annot >> endobj -508 0 obj +604 0 obj << /Border [0 0 0] -/Dest (_produces_24) +/Dest (_route30) /Subtype /Link -/Rect [72.24000000000001 242.7599999999995 152.27100000000002 257.0399999999995] +/Rect [60.24000000000001 464.51999999999975 430.06214062500004 478.7999999999997] /Type /Annot >> endobj -509 0 obj +605 0 obj << /Border [0 0 0] -/Dest (_produces_24) +/Dest (_route30) /Subtype /Link -/Rect [552.021 242.7599999999995 563.76 257.0399999999995] +/Rect [552.021 464.51999999999975 563.76 478.7999999999997] /Type /Annot >> endobj -510 0 obj +606 0 obj << /Border [0 0 0] -/Dest (_v2_policytoscamodels_policymodeltype_get) +/Dest (_parameters_25) /Subtype /Link -/Rect [60.24000000000001 224.27999999999952 318.89925585937505 238.55999999999952] +/Rect [72.24000000000001 446.03999999999974 163.71579492187502 460.3199999999997] /Type /Annot >> endobj -511 0 obj +607 0 obj << /Border [0 0 0] -/Dest (_v2_policytoscamodels_policymodeltype_get) +/Dest (_parameters_25) /Subtype /Link -/Rect [552.021 224.27999999999952 563.76 238.55999999999952] +/Rect [552.021 446.03999999999974 563.76 460.3199999999997] /Type /Annot >> endobj -512 0 obj +608 0 obj << /Border [0 0 0] -/Dest (_parameters_20) +/Dest (_responses_32) /Subtype /Link -/Rect [72.24000000000001 205.79999999999953 163.71579492187502 220.07999999999953] +/Rect [72.24000000000001 427.5599999999997 157.899 441.8399999999997] /Type /Annot >> endobj -513 0 obj +609 0 obj << /Border [0 0 0] -/Dest (_parameters_20) +/Dest (_responses_32) /Subtype /Link -/Rect [552.021 205.79999999999953 563.76 220.07999999999953] +/Rect [552.021 427.5599999999997 563.76 441.8399999999997] /Type /Annot >> endobj -514 0 obj +610 0 obj << /Border [0 0 0] -/Dest (_responses_26) +/Dest (_consumes_8) /Subtype /Link -/Rect [72.24000000000001 187.31999999999954 157.899 201.59999999999954] +/Rect [72.24000000000001 409.0799999999997 157.2375 423.3599999999997] /Type /Annot >> endobj -515 0 obj +611 0 obj << /Border [0 0 0] -/Dest (_responses_26) +/Dest (_consumes_8) /Subtype /Link -/Rect [552.021 187.31999999999954 563.76 201.59999999999954] +/Rect [552.021 409.0799999999997 563.76 423.3599999999997] /Type /Annot >> endobj -516 0 obj +612 0 obj << /Border [0 0 0] -/Dest (_produces_25) +/Dest (_produces_31) /Subtype /Link -/Rect [72.24000000000001 168.83999999999955 152.27100000000002 183.11999999999955] +/Rect [72.24000000000001 390.5999999999997 152.27100000000002 404.87999999999965] /Type /Annot >> endobj -517 0 obj +613 0 obj << /Border [0 0 0] -/Dest (_produces_25) +/Dest (_produces_31) /Subtype /Link -/Rect [552.021 168.83999999999955 563.76 183.11999999999955] +/Rect [552.021 390.5999999999997 563.76 404.87999999999965] /Type /Annot >> endobj -518 0 obj +614 0 obj << /Border [0 0 0] -/Dest (_route57) +/Dest (_route34) /Subtype /Link -/Rect [60.24000000000001 150.35999999999956 318.73125585937504 164.63999999999956] +/Rect [60.24000000000001 372.11999999999966 175.8555 386.39999999999964] /Type /Annot >> endobj -519 0 obj +615 0 obj << /Border [0 0 0] -/Dest (_route57) +/Dest (_route34) /Subtype /Link -/Rect [552.021 150.35999999999956 563.76 164.63999999999956] +/Rect [552.021 372.11999999999966 563.76 386.39999999999964] /Type /Annot >> endobj -520 0 obj +616 0 obj << /Border [0 0 0] -/Dest (_parameters_21) +/Dest (_responses_33) /Subtype /Link -/Rect [72.24000000000001 131.87999999999957 163.71579492187502 146.15999999999957] +/Rect [72.24000000000001 353.63999999999965 157.899 367.9199999999996] /Type /Annot >> endobj -521 0 obj +617 0 obj << /Border [0 0 0] -/Dest (_parameters_21) +/Dest (_responses_33) /Subtype /Link -/Rect [552.021 131.87999999999957 563.76 146.15999999999957] +/Rect [552.021 353.63999999999965 563.76 367.9199999999996] /Type /Annot >> endobj -522 0 obj +618 0 obj << /Border [0 0 0] -/Dest (_responses_27) +/Dest (_produces_32) /Subtype /Link -/Rect [72.24000000000001 113.39999999999958 157.899 127.67999999999958] +/Rect [72.24000000000001 335.1599999999996 152.27100000000002 349.4399999999996] /Type /Annot >> endobj -523 0 obj +619 0 obj << /Border [0 0 0] -/Dest (_responses_27) +/Dest (_produces_32) /Subtype /Link -/Rect [552.021 113.39999999999958 563.76 127.67999999999958] +/Rect [552.021 335.1599999999996 563.76 349.4399999999996] /Type /Annot >> endobj -524 0 obj +620 0 obj << /Border [0 0 0] -/Dest (_consumes_6) +/Dest (_v2_templates_names_get) /Subtype /Link -/Rect [72.24000000000001 94.91999999999959 157.2375 109.19999999999959] +/Rect [60.24000000000001 316.6799999999996 211.818 330.9599999999996] /Type /Annot >> endobj -525 0 obj +621 0 obj << /Border [0 0 0] -/Dest (_consumes_6) +/Dest (_v2_templates_names_get) /Subtype /Link -/Rect [552.021 94.91999999999959 563.76 109.19999999999959] +/Rect [552.021 316.6799999999996 563.76 330.9599999999996] /Type /Annot >> endobj -526 0 obj +622 0 obj << /Border [0 0 0] -/Dest (_produces_26) +/Dest (_responses_34) /Subtype /Link -/Rect [72.24000000000001 76.4399999999996 152.27100000000002 90.7199999999996] +/Rect [72.24000000000001 298.1999999999996 157.899 312.47999999999956] /Type /Annot >> endobj -527 0 obj +623 0 obj << /Border [0 0 0] -/Dest (_produces_26) +/Dest (_responses_34) /Subtype /Link -/Rect [552.021 76.4399999999996 563.76 90.7199999999996] +/Rect [552.021 298.1999999999996 563.76 312.47999999999956] /Type /Annot >> endobj -528 0 obj +624 0 obj << /Border [0 0 0] -/Dest (_route60) +/Dest (_produces_33) /Subtype /Link -/Rect [60.24000000000001 57.95999999999961 175.8555 72.23999999999961] +/Rect [72.24000000000001 279.7199999999996 152.27100000000002 293.99999999999955] /Type /Annot >> endobj -529 0 obj +625 0 obj << /Border [0 0 0] -/Dest (_route60) +/Dest (_produces_33) /Subtype /Link -/Rect [552.021 57.95999999999961 563.76 72.23999999999961] +/Rect [552.021 279.7199999999996 563.76 293.99999999999955] /Type /Annot >> endobj -530 0 obj +626 0 obj << /Border [0 0 0] -/Dest (_responses_28) +/Dest (_v2_templates_templatename_get) /Subtype /Link -/Rect [72.24000000000001 741.7199999999999 157.899 756.0] +/Rect [60.24000000000001 261.23999999999955 261.44100000000003 275.5199999999995] /Type /Annot >> endobj -531 0 obj +627 0 obj << /Border [0 0 0] -/Dest (_responses_28) +/Dest (_v2_templates_templatename_get) /Subtype /Link -/Rect [552.021 741.7199999999999 563.76 756.0] +/Rect [552.021 261.23999999999955 563.76 275.5199999999995] /Type /Annot >> endobj -532 0 obj +628 0 obj << /Border [0 0 0] -/Dest (_produces_27) +/Dest (_parameters_26) /Subtype /Link -/Rect [72.24000000000001 723.2399999999999 152.27100000000002 737.52] +/Rect [72.24000000000001 242.7599999999995 163.71579492187502 257.0399999999995] /Type /Annot >> endobj -533 0 obj +629 0 obj << /Border [0 0 0] -/Dest (_produces_27) +/Dest (_parameters_26) /Subtype /Link -/Rect [552.021 723.2399999999999 563.76 737.52] +/Rect [552.021 242.7599999999995 563.76 257.0399999999995] /Type /Annot >> endobj -534 0 obj +630 0 obj << /Border [0 0 0] -/Dest (_v2_templates_names_get) +/Dest (_responses_35) /Subtype /Link -/Rect [60.24000000000001 704.7599999999999 211.818 719.04] +/Rect [72.24000000000001 224.27999999999952 157.899 238.55999999999952] /Type /Annot >> endobj -535 0 obj +631 0 obj << /Border [0 0 0] -/Dest (_v2_templates_names_get) +/Dest (_responses_35) /Subtype /Link -/Rect [552.021 704.7599999999999 563.76 719.04] +/Rect [552.021 224.27999999999952 563.76 238.55999999999952] /Type /Annot >> endobj -536 0 obj +632 0 obj << /Border [0 0 0] -/Dest (_responses_29) +/Dest (_produces_34) /Subtype /Link -/Rect [72.24000000000001 686.2799999999999 157.899 700.56] +/Rect [72.24000000000001 205.79999999999953 152.27100000000002 220.07999999999953] /Type /Annot >> endobj -537 0 obj +633 0 obj << /Border [0 0 0] -/Dest (_responses_29) +/Dest (_produces_34) /Subtype /Link -/Rect [552.021 686.2799999999999 563.76 700.56] +/Rect [552.021 205.79999999999953 563.76 220.07999999999953] /Type /Annot >> endobj -538 0 obj +634 0 obj << /Border [0 0 0] -/Dest (_produces_28) +/Dest (_v2_templates_templatename_svgrepresentation_get) /Subtype /Link -/Rect [72.24000000000001 667.7999999999998 152.27100000000002 682.0799999999999] +/Rect [60.24000000000001 187.31999999999954 357.02250000000004 201.59999999999954] /Type /Annot >> endobj -539 0 obj +635 0 obj << /Border [0 0 0] -/Dest (_produces_28) +/Dest (_v2_templates_templatename_svgrepresentation_get) /Subtype /Link -/Rect [552.021 667.7999999999998 563.76 682.0799999999999] +/Rect [552.021 187.31999999999954 563.76 201.59999999999954] /Type /Annot >> endobj -540 0 obj +636 0 obj << /Border [0 0 0] -/Dest (_v2_templates_templatename_get) +/Dest (_parameters_27) /Subtype /Link -/Rect [60.24000000000001 649.3199999999998 261.44100000000003 663.5999999999999] +/Rect [72.24000000000001 168.83999999999955 163.71579492187502 183.11999999999955] /Type /Annot >> endobj -541 0 obj +637 0 obj << /Border [0 0 0] -/Dest (_v2_templates_templatename_get) +/Dest (_parameters_27) /Subtype /Link -/Rect [552.021 649.3199999999998 563.76 663.5999999999999] +/Rect [552.021 168.83999999999955 563.76 183.11999999999955] /Type /Annot >> endobj -542 0 obj +638 0 obj << /Border [0 0 0] -/Dest (_parameters_22) +/Dest (_responses_36) /Subtype /Link -/Rect [72.24000000000001 630.8399999999998 163.71579492187502 645.1199999999999] +/Rect [72.24000000000001 150.35999999999956 157.899 164.63999999999956] /Type /Annot >> endobj -543 0 obj +639 0 obj << /Border [0 0 0] -/Dest (_parameters_22) +/Dest (_responses_36) /Subtype /Link -/Rect [552.021 630.8399999999998 563.76 645.1199999999999] +/Rect [552.021 150.35999999999956 563.76 164.63999999999956] /Type /Annot >> endobj -544 0 obj +640 0 obj << /Border [0 0 0] -/Dest (_responses_30) +/Dest (_produces_35) /Subtype /Link -/Rect [72.24000000000001 612.3599999999998 157.899 626.6399999999999] +/Rect [72.24000000000001 131.87999999999957 152.27100000000002 146.15999999999957] /Type /Annot >> endobj -545 0 obj +641 0 obj << /Border [0 0 0] -/Dest (_responses_30) +/Dest (_produces_35) /Subtype /Link -/Rect [552.021 612.3599999999998 563.76 626.6399999999999] +/Rect [552.021 131.87999999999957 563.76 146.15999999999957] /Type /Annot >> endobj -546 0 obj +642 0 obj << /Border [0 0 0] -/Dest (_produces_29) +/Dest (_definitions) /Subtype /Link -/Rect [72.24000000000001 593.8799999999998 152.27100000000002 608.1599999999999] +/Rect [48.24000000000001 113.39999999999958 114.66300000000001 127.67999999999958] /Type /Annot >> endobj -547 0 obj +643 0 obj << /Border [0 0 0] -/Dest (_produces_29) +/Dest (_definitions) /Subtype /Link -/Rect [552.021 593.8799999999998 563.76 608.1599999999999] +/Rect [552.021 113.39999999999958 563.76 127.67999999999958] /Type /Annot >> endobj -548 0 obj +644 0 obj << /Border [0 0 0] -/Dest (_definitions) +/Dest (_clampinformation) /Subtype /Link -/Rect [48.24000000000001 575.3999999999997 114.66300000000001 589.6799999999998] +/Rect [60.24000000000001 94.91999999999959 173.08350000000002 109.19999999999959] /Type /Annot >> endobj -549 0 obj +645 0 obj << /Border [0 0 0] -/Dest (_definitions) +/Dest (_clampinformation) /Subtype /Link -/Rect [552.021 575.3999999999997 563.76 589.6799999999998] +/Rect [552.021 94.91999999999959 563.76 109.19999999999959] /Type /Annot >> endobj -550 0 obj +646 0 obj << /Border [0 0 0] /Dest (_cldshealthcheck) /Subtype /Link -/Rect [60.24000000000001 556.9199999999998 164.26350000000002 571.1999999999998] +/Rect [60.24000000000001 76.4399999999996 164.26350000000002 90.7199999999996] /Type /Annot >> endobj -551 0 obj +647 0 obj << /Border [0 0 0] /Dest (_cldshealthcheck) /Subtype /Link -/Rect [552.021 556.9199999999998 563.76 571.1999999999998] +/Rect [552.021 76.4399999999996 563.76 90.7199999999996] /Type /Annot >> endobj -552 0 obj +648 0 obj << /Border [0 0 0] /Dest (_dictionary) /Subtype /Link -/Rect [60.24000000000001 538.4399999999998 132.7425 552.7199999999998] +/Rect [60.24000000000001 57.95999999999961 132.7425 72.23999999999961] /Type /Annot >> endobj -553 0 obj +649 0 obj << /Border [0 0 0] /Dest (_dictionary) /Subtype /Link -/Rect [552.021 538.4399999999998 563.76 552.7199999999998] +/Rect [552.021 57.95999999999961 563.76 72.23999999999961] /Type /Annot >> endobj -554 0 obj +650 0 obj << /Border [0 0 0] /Dest (_dictionaryelement) /Subtype /Link -/Rect [60.24000000000001 519.9599999999998 174.1545 534.2399999999998] +/Rect [60.24 741.7199999999999 174.1545 756.0] /Type /Annot >> endobj -555 0 obj +651 0 obj << /Border [0 0 0] /Dest (_dictionaryelement) /Subtype /Link -/Rect [552.021 519.9599999999998 563.76 534.2399999999998] +/Rect [552.021 741.7199999999999 563.76 756.0] /Type /Annot >> endobj -556 0 obj +652 0 obj << /Border [0 0 0] /Dest (_externalcomponent) /Subtype /Link -/Rect [60.24000000000001 501.4799999999998 180.507 515.7599999999998] +/Rect [60.24000000000001 723.2399999999999 180.507 737.52] /Type /Annot >> endobj -557 0 obj +653 0 obj << /Border [0 0 0] /Dest (_externalcomponent) /Subtype /Link -/Rect [552.021 501.4799999999998 563.76 515.7599999999998] +/Rect [552.021 723.2399999999999 563.76 737.52] /Type /Annot >> endobj -558 0 obj +654 0 obj << /Border [0 0 0] /Dest (_externalcomponentstate) /Subtype /Link -/Rect [60.24000000000001 482.9999999999998 205.11900000000003 497.27999999999975] +/Rect [60.24000000000001 704.7599999999999 205.11900000000003 719.04] /Type /Annot >> endobj -559 0 obj +655 0 obj << /Border [0 0 0] /Dest (_externalcomponentstate) /Subtype /Link -/Rect [552.021 482.9999999999998 563.76 497.27999999999975] +/Rect [552.021 704.7599999999999 563.76 719.04] /Type /Annot >> endobj -560 0 obj +656 0 obj << /Border [0 0 0] /Dest (_jsonarray) /Subtype /Link -/Rect [60.24000000000001 464.51999999999975 129.94908984375002 478.7999999999997] +/Rect [60.24000000000001 686.2799999999999 129.94908984375002 700.56] /Type /Annot >> endobj -561 0 obj +657 0 obj << /Border [0 0 0] /Dest (_jsonarray) /Subtype /Link -/Rect [552.021 464.51999999999975 563.76 478.7999999999997] +/Rect [552.021 686.2799999999999 563.76 700.56] /Type /Annot >> endobj -562 0 obj +658 0 obj << /Border [0 0 0] /Dest (_jsonnull) /Subtype /Link -/Rect [60.24000000000001 446.03999999999974 122.43150000000001 460.3199999999997] +/Rect [60.24000000000001 667.7999999999998 122.43150000000001 682.0799999999999] /Type /Annot >> endobj -563 0 obj +659 0 obj << /Border [0 0 0] /Dest (_jsonnull) /Subtype /Link -/Rect [552.021 446.03999999999974 563.76 460.3199999999997] +/Rect [552.021 667.7999999999998 563.76 682.0799999999999] /Type /Annot >> endobj -564 0 obj +660 0 obj << /Border [0 0 0] /Dest (_jsonobject) /Subtype /Link -/Rect [60.24000000000001 427.5599999999997 133.09950000000003 441.8399999999997] +/Rect [60.24000000000001 649.3199999999998 133.09950000000003 663.5999999999999] /Type /Annot >> endobj -565 0 obj +661 0 obj << /Border [0 0 0] /Dest (_jsonobject) /Subtype /Link -/Rect [552.021 427.5599999999997 563.76 441.8399999999997] +/Rect [552.021 649.3199999999998 563.76 663.5999999999999] /Type /Annot >> endobj -566 0 obj +662 0 obj << /Border [0 0 0] /Dest (_jsonprimitive) /Subtype /Link -/Rect [60.24000000000001 409.0799999999997 147.894 423.3599999999997] +/Rect [60.24000000000001 630.8399999999998 153.76350000000002 645.1199999999999] /Type /Annot >> endobj -567 0 obj +663 0 obj << /Border [0 0 0] /Dest (_jsonprimitive) /Subtype /Link -/Rect [552.021 409.0799999999997 563.76 423.3599999999997] +/Rect [552.021 630.8399999999998 563.76 645.1199999999999] /Type /Annot >> endobj -568 0 obj +664 0 obj << /Border [0 0 0] /Dest (_loop) /Subtype /Link -/Rect [60.24000000000001 390.5999999999997 110.91300000000001 404.87999999999965] +/Rect [60.24000000000001 612.3599999999998 110.91300000000001 626.6399999999999] /Type /Annot >> endobj -569 0 obj +665 0 obj << /Border [0 0 0] /Dest (_loop) /Subtype /Link -/Rect [552.021 390.5999999999997 563.76 404.87999999999965] +/Rect [552.021 612.3599999999998 563.76 626.6399999999999] /Type /Annot >> endobj -570 0 obj +666 0 obj << /Border [0 0 0] /Dest (_loopelementmodel) /Subtype /Link -/Rect [60.24000000000001 372.11999999999966 183.531 386.39999999999964] +/Rect [60.24000000000001 593.8799999999998 183.531 608.1599999999999] /Type /Annot >> endobj -571 0 obj +667 0 obj << /Border [0 0 0] /Dest (_loopelementmodel) /Subtype /Link -/Rect [552.021 372.11999999999966 563.76 386.39999999999964] +/Rect [552.021 593.8799999999998 563.76 608.1599999999999] /Type /Annot >> endobj -572 0 obj +668 0 obj << /Border [0 0 0] /Dest (_looplog) /Subtype /Link -/Rect [60.24000000000001 353.63999999999965 129.16200000000003 367.9199999999996] +/Rect [60.24000000000001 575.3999999999997 129.16200000000003 589.6799999999998] /Type /Annot >> endobj -573 0 obj +669 0 obj << /Border [0 0 0] /Dest (_looplog) /Subtype /Link -/Rect [552.021 353.63999999999965 563.76 367.9199999999996] +/Rect [552.021 575.3999999999997 563.76 589.6799999999998] /Type /Annot >> endobj -574 0 obj +670 0 obj << /Border [0 0 0] /Dest (_looptemplate) /Subtype /Link -/Rect [60.24000000000001 335.1599999999996 157.46175585937502 349.4399999999996] +/Rect [60.24000000000001 556.9199999999998 157.46175585937502 571.1999999999998] /Type /Annot >> endobj -575 0 obj +671 0 obj << /Border [0 0 0] /Dest (_looptemplate) /Subtype /Link -/Rect [552.021 335.1599999999996 563.76 349.4399999999996] +/Rect [552.021 556.9199999999998 563.76 571.1999999999998] /Type /Annot >> endobj -576 0 obj +672 0 obj << /Border [0 0 0] /Dest (_looptemplateloopelementmodel) /Subtype /Link -/Rect [60.24000000000001 316.6799999999996 255.174755859375 330.9599999999996] +/Rect [60.24000000000001 538.4399999999998 255.174755859375 552.7199999999998] /Type /Annot >> endobj -577 0 obj +673 0 obj << /Border [0 0 0] /Dest (_looptemplateloopelementmodel) /Subtype /Link -/Rect [552.021 316.6799999999996 563.76 330.9599999999996] +/Rect [552.021 538.4399999999998 563.76 552.7199999999998] /Type /Annot >> endobj -578 0 obj +674 0 obj << /Border [0 0 0] /Dest (_microservicepolicy) /Subtype /Link -/Rect [60.24000000000001 298.1999999999996 181.74600000000004 312.47999999999956] +/Rect [60.24000000000001 519.9599999999998 181.74600000000004 534.2399999999998] /Type /Annot >> endobj -579 0 obj +675 0 obj << /Border [0 0 0] /Dest (_microservicepolicy) /Subtype /Link -/Rect [552.021 298.1999999999996 563.76 312.47999999999956] +/Rect [552.021 519.9599999999998 563.76 534.2399999999998] /Type /Annot >> endobj -580 0 obj +676 0 obj << /Border [0 0 0] /Dest (_number) /Subtype /Link -/Rect [60.24000000000001 279.7199999999996 127.39800000000001 293.99999999999955] +/Rect [60.24000000000001 501.4799999999998 127.39800000000001 515.7599999999998] /Type /Annot >> endobj -581 0 obj +677 0 obj << /Border [0 0 0] /Dest (_number) /Subtype /Link -/Rect [552.021 279.7199999999996 563.76 293.99999999999955] +/Rect [552.021 501.4799999999998 563.76 515.7599999999998] /Type /Annot >> endobj -582 0 obj +678 0 obj << /Border [0 0 0] /Dest (_operationalpolicy) /Subtype /Link -/Rect [60.24000000000001 261.23999999999955 175.42479492187502 275.5199999999995] +/Rect [60.24000000000001 482.9999999999998 175.42479492187502 497.27999999999975] /Type /Annot >> endobj -583 0 obj +679 0 obj << /Border [0 0 0] /Dest (_operationalpolicy) /Subtype /Link -/Rect [552.021 261.23999999999955 563.76 275.5199999999995] +/Rect [552.021 482.9999999999998 563.76 497.27999999999975] /Type /Annot >> endobj -584 0 obj +680 0 obj << /Border [0 0 0] /Dest (_policymodel) /Subtype /Link -/Rect [60.24000000000001 242.7599999999995 147.11700000000002 257.0399999999995] +/Rect [60.24000000000001 464.51999999999975 147.11700000000002 478.7999999999997] /Type /Annot >> endobj -585 0 obj +681 0 obj << /Border [0 0 0] /Dest (_policymodel) /Subtype /Link -/Rect [552.021 242.7599999999995 563.76 257.0399999999995] +/Rect [552.021 464.51999999999975 563.76 478.7999999999997] /Type /Annot >> endobj -586 0 obj +682 0 obj << /Border [0 0 0] /Dest (_service) /Subtype /Link -/Rect [60.24000000000001 224.27999999999952 122.29500000000002 238.55999999999952] +/Rect [60.24000000000001 446.03999999999974 122.29500000000002 460.3199999999997] /Type /Annot >> endobj -587 0 obj +683 0 obj << /Border [0 0 0] /Dest (_service) /Subtype /Link -/Rect [552.021 224.27999999999952 563.76 238.55999999999952] +/Rect [552.021 446.03999999999974 563.76 460.3199999999997] /Type /Annot >> endobj -588 0 obj +684 0 obj << /Type /XObject /Subtype /Form /BBox [0 0 612.0 792.0] @@ -47769,1371 +54161,1614 @@ Q endstream endobj -589 0 obj +685 0 obj << /Type /Outlines -/Count 143 -/First 590 0 R -/Last 713 0 R +/Count 169 +/First 686 0 R +/Last 834 0 R >> endobj -590 0 obj +686 0 obj << /Title -/Parent 589 0 R +/Parent 685 0 R /Count 0 -/Next 591 0 R +/Next 687 0 R /Dest [7 0 R /XYZ 0 792.0 null] >> endobj -591 0 obj +687 0 obj << /Title -/Parent 589 0 R +/Parent 685 0 R /Count 0 -/Next 592 0 R -/Prev 590 0 R +/Next 688 0 R +/Prev 686 0 R /Dest [10 0 R /XYZ 0 792.0 null] >> endobj -592 0 obj +688 0 obj << /Title -/Parent 589 0 R +/Parent 685 0 R /Count 2 -/First 593 0 R -/Last 594 0 R -/Next 595 0 R -/Prev 591 0 R -/Dest [18 0 R /XYZ 0 792.0 null] +/First 689 0 R +/Last 690 0 R +/Next 691 0 R +/Prev 687 0 R +/Dest [20 0 R /XYZ 0 792.0 null] >> endobj -593 0 obj +689 0 obj << /Title -/Parent 592 0 R +/Parent 688 0 R /Count 0 -/Next 594 0 R -/Dest [18 0 R /XYZ 0 712.0799999999999 null] +/Next 690 0 R +/Dest [20 0 R /XYZ 0 712.0799999999999 null] >> endobj -594 0 obj +690 0 obj << /Title -/Parent 592 0 R +/Parent 688 0 R /Count 0 -/Prev 593 0 R -/Dest [18 0 R /XYZ 0 644.22 null] +/Prev 689 0 R +/Dest [20 0 R /XYZ 0 644.22 null] >> endobj -595 0 obj +691 0 obj << /Title -/Parent 589 0 R -/Count 117 -/First 596 0 R -/Last 709 0 R -/Next 713 0 R -/Prev 592 0 R -/Dest [27 0 R /XYZ 0 792.0 null] +/Parent 685 0 R +/Count 142 +/First 692 0 R +/Last 830 0 R +/Next 834 0 R +/Prev 688 0 R +/Dest [29 0 R /XYZ 0 792.0 null] >> endobj -596 0 obj +692 0 obj << /Title -/Parent 595 0 R +/Parent 691 0 R /Count 2 -/First 597 0 R -/Last 598 0 R -/Next 599 0 R -/Dest [27 0 R /XYZ 0 712.0799999999999 null] +/First 693 0 R +/Last 694 0 R +/Next 695 0 R +/Dest [29 0 R /XYZ 0 712.0799999999999 null] >> endobj -597 0 obj +693 0 obj << /Title -/Parent 596 0 R +/Parent 692 0 R /Count 0 -/Next 598 0 R -/Dest [27 0 R /XYZ 0 672.0 null] +/Next 694 0 R +/Dest [29 0 R /XYZ 0 672.0 null] >> endobj -598 0 obj +694 0 obj << /Title -/Parent 596 0 R +/Parent 692 0 R /Count 0 -/Prev 597 0 R -/Dest [27 0 R /XYZ 0 566.8800000000001 null] +/Prev 693 0 R +/Dest [29 0 R /XYZ 0 566.8800000000001 null] >> endobj -599 0 obj +695 0 obj << /Title -/Parent 595 0 R +/Parent 691 0 R /Count 2 -/First 600 0 R -/Last 601 0 R -/Next 602 0 R -/Prev 596 0 R -/Dest [27 0 R /XYZ 0 510.60000000000025 null] +/First 696 0 R +/Last 697 0 R +/Next 698 0 R +/Prev 692 0 R +/Dest [29 0 R /XYZ 0 510.60000000000025 null] >> endobj -600 0 obj +696 0 obj << /Title -/Parent 599 0 R +/Parent 695 0 R /Count 0 -/Next 601 0 R -/Dest [27 0 R /XYZ 0 470.5200000000002 null] +/Next 697 0 R +/Dest [29 0 R /XYZ 0 470.5200000000002 null] >> endobj -601 0 obj +697 0 obj << /Title -/Parent 599 0 R +/Parent 695 0 R /Count 0 -/Prev 600 0 R -/Dest [27 0 R /XYZ 0 379.6800000000002 null] +/Prev 696 0 R +/Dest [29 0 R /XYZ 0 379.6800000000002 null] >> endobj -602 0 obj -<< /Title -/Parent 595 0 R +698 0 obj +<< /Title +/Parent 691 0 R /Count 2 -/First 603 0 R -/Last 604 0 R -/Next 605 0 R -/Prev 599 0 R -/Dest [27 0 R /XYZ 0 323.40000000000015 null] +/First 699 0 R +/Last 700 0 R +/Next 701 0 R +/Prev 695 0 R +/Dest [29 0 R /XYZ 0 323.40000000000015 null] >> endobj -603 0 obj +699 0 obj << /Title -/Parent 602 0 R +/Parent 698 0 R /Count 0 -/Next 604 0 R -/Dest [27 0 R /XYZ 0 283.3200000000001 null] +/Next 700 0 R +/Dest [29 0 R /XYZ 0 283.3200000000001 null] >> endobj -604 0 obj +700 0 obj << /Title -/Parent 602 0 R +/Parent 698 0 R /Count 0 -/Prev 603 0 R -/Dest [27 0 R /XYZ 0 178.2000000000001 null] +/Prev 699 0 R +/Dest [29 0 R /XYZ 0 178.2000000000001 null] >> endobj -605 0 obj -<< /Title -/Parent 595 0 R -/Count 4 -/First 606 0 R -/Last 609 0 R -/Next 610 0 R -/Prev 602 0 R -/Dest [27 0 R /XYZ 0 121.92000000000007 null] +701 0 obj +<< /Title +/Parent 691 0 R +/Count 2 +/First 702 0 R +/Last 703 0 R +/Next 704 0 R +/Prev 698 0 R +/Dest [29 0 R /XYZ 0 121.92000000000007 null] >> endobj -606 0 obj -<< /Title -/Parent 605 0 R +702 0 obj +<< /Title +/Parent 701 0 R /Count 0 -/Next 607 0 R -/Dest [43 0 R /XYZ 0 792.0 null] +/Next 703 0 R +/Dest [45 0 R /XYZ 0 792.0 null] >> endobj -607 0 obj -<< /Title -/Parent 605 0 R +703 0 obj +<< /Title +/Parent 701 0 R /Count 0 -/Next 608 0 R -/Prev 606 0 R -/Dest [43 0 R /XYZ 0 653.2800000000002 null] +/Prev 702 0 R +/Dest [45 0 R /XYZ 0 653.2800000000002 null] >> endobj -608 0 obj -<< /Title -/Parent 605 0 R -/Count 0 -/Next 609 0 R -/Prev 607 0 R -/Dest [43 0 R /XYZ 0 548.1600000000003 null] +704 0 obj +<< /Title +/Parent 691 0 R +/Count 4 +/First 705 0 R +/Last 708 0 R +/Next 709 0 R +/Prev 701 0 R +/Dest [45 0 R /XYZ 0 597.0000000000003 null] >> endobj -609 0 obj -<< /Title -/Parent 605 0 R +705 0 obj +<< /Title +/Parent 704 0 R /Count 0 -/Prev 608 0 R -/Dest [43 0 R /XYZ 0 491.88000000000045 null] ->> -endobj -610 0 obj -<< /Title -/Parent 595 0 R -/Count 2 -/First 611 0 R -/Last 612 0 R -/Next 613 0 R -/Prev 605 0 R -/Dest [43 0 R /XYZ 0 435.6000000000004 null] +/Next 706 0 R +/Dest [45 0 R /XYZ 0 556.9200000000004 null] >> endobj -611 0 obj -<< /Title -/Parent 610 0 R +706 0 obj +<< /Title +/Parent 704 0 R /Count 0 -/Next 612 0 R -/Dest [43 0 R /XYZ 0 395.5200000000004 null] +/Next 707 0 R +/Prev 705 0 R +/Dest [45 0 R /XYZ 0 451.8000000000006 null] >> endobj -612 0 obj -<< /Title -/Parent 610 0 R +707 0 obj +<< /Title +/Parent 704 0 R /Count 0 -/Prev 611 0 R -/Dest [43 0 R /XYZ 0 290.4000000000003 null] +/Next 708 0 R +/Prev 706 0 R +/Dest [45 0 R /XYZ 0 346.6800000000005 null] >> endobj -613 0 obj -<< /Title -/Parent 595 0 R -/Count 3 -/First 614 0 R -/Last 616 0 R -/Next 617 0 R -/Prev 610 0 R -/Dest [43 0 R /XYZ 0 234.1200000000003 null] +708 0 obj +<< /Title +/Parent 704 0 R +/Count 0 +/Prev 707 0 R +/Dest [45 0 R /XYZ 0 290.4000000000005 null] >> endobj -614 0 obj -<< /Title -/Parent 613 0 R -/Count 0 -/Next 615 0 R -/Dest [43 0 R /XYZ 0 194.04000000000028 null] +709 0 obj +<< /Title +/Parent 691 0 R +/Count 2 +/First 710 0 R +/Last 711 0 R +/Next 712 0 R +/Prev 704 0 R +/Dest [45 0 R /XYZ 0 234.12000000000046 null] >> endobj -615 0 obj -<< /Title -/Parent 613 0 R +710 0 obj +<< /Title +/Parent 709 0 R /Count 0 -/Next 616 0 R -/Prev 614 0 R -/Dest [58 0 R /XYZ 0 792.0 null] +/Next 711 0 R +/Dest [45 0 R /XYZ 0 194.04000000000045 null] >> endobj -616 0 obj -<< /Title -/Parent 613 0 R +711 0 obj +<< /Title +/Parent 709 0 R /Count 0 -/Prev 615 0 R -/Dest [58 0 R /XYZ 0 653.2800000000002 null] +/Prev 710 0 R +/Dest [61 0 R /XYZ 0 792.0 null] >> endobj -617 0 obj -<< /Title -/Parent 595 0 R -/Count 4 -/First 618 0 R -/Last 621 0 R -/Next 622 0 R -/Prev 613 0 R -/Dest [58 0 R /XYZ 0 597.0000000000003 null] +712 0 obj +<< /Title +/Parent 691 0 R +/Count 3 +/First 713 0 R +/Last 715 0 R +/Next 716 0 R +/Prev 709 0 R +/Dest [61 0 R /XYZ 0 702.1200000000001 null] >> endobj -618 0 obj +713 0 obj << /Title -/Parent 617 0 R +/Parent 712 0 R /Count 0 -/Next 619 0 R -/Dest [58 0 R /XYZ 0 556.9200000000004 null] +/Next 714 0 R +/Dest [61 0 R /XYZ 0 662.0400000000002 null] >> endobj -619 0 obj +714 0 obj << /Title -/Parent 617 0 R -/Count 0 -/Next 620 0 R -/Prev 618 0 R -/Dest [58 0 R /XYZ 0 414.2400000000005 null] ->> -endobj -620 0 obj -<< /Title -/Parent 617 0 R +/Parent 712 0 R /Count 0 -/Next 621 0 R -/Prev 619 0 R -/Dest [58 0 R /XYZ 0 309.12000000000046 null] +/Next 715 0 R +/Prev 713 0 R +/Dest [61 0 R /XYZ 0 556.9200000000003 null] >> endobj -621 0 obj -<< /Title -/Parent 617 0 R +715 0 obj +<< /Title +/Parent 712 0 R /Count 0 -/Prev 620 0 R -/Dest [58 0 R /XYZ 0 252.84000000000043 null] +/Prev 714 0 R +/Dest [61 0 R /XYZ 0 451.8000000000004 null] >> endobj -622 0 obj -<< /Title -/Parent 595 0 R -/Count 3 -/First 623 0 R -/Last 625 0 R -/Next 626 0 R -/Prev 617 0 R -/Dest [58 0 R /XYZ 0 196.5600000000004 null] +716 0 obj +<< /Title +/Parent 691 0 R +/Count 4 +/First 717 0 R +/Last 720 0 R +/Next 721 0 R +/Prev 712 0 R +/Dest [61 0 R /XYZ 0 395.5200000000004 null] >> endobj -623 0 obj +717 0 obj << /Title -/Parent 622 0 R +/Parent 716 0 R /Count 0 -/Next 624 0 R -/Dest [58 0 R /XYZ 0 156.4800000000004 null] +/Next 718 0 R +/Dest [61 0 R /XYZ 0 355.44000000000034 null] >> endobj -624 0 obj +718 0 obj << /Title -/Parent 622 0 R +/Parent 716 0 R /Count 0 -/Next 625 0 R -/Prev 623 0 R -/Dest [72 0 R /XYZ 0 792.0 null] +/Next 719 0 R +/Prev 717 0 R +/Dest [61 0 R /XYZ 0 212.76000000000028 null] >> endobj -625 0 obj -<< /Title -/Parent 622 0 R +719 0 obj +<< /Title +/Parent 716 0 R /Count 0 -/Prev 624 0 R -/Dest [72 0 R /XYZ 0 667.5600000000002 null] +/Next 720 0 R +/Prev 718 0 R +/Dest [61 0 R /XYZ 0 107.64000000000024 null] >> endobj -626 0 obj -<< /Title -/Parent 595 0 R +720 0 obj +<< /Title +/Parent 716 0 R +/Count 0 +/Prev 719 0 R +/Dest [75 0 R /XYZ 0 792.0 null] +>> +endobj +721 0 obj +<< /Title +/Parent 691 0 R /Count 3 -/First 627 0 R -/Last 629 0 R -/Next 630 0 R -/Prev 622 0 R -/Dest [72 0 R /XYZ 0 611.2800000000003 null] +/First 722 0 R +/Last 724 0 R +/Next 725 0 R +/Prev 716 0 R +/Dest [75 0 R /XYZ 0 702.1200000000001 null] >> endobj -627 0 obj +722 0 obj << /Title -/Parent 626 0 R +/Parent 721 0 R /Count 0 -/Next 628 0 R -/Dest [72 0 R /XYZ 0 543.1200000000005 null] +/Next 723 0 R +/Dest [75 0 R /XYZ 0 662.0400000000002 null] >> endobj -628 0 obj +723 0 obj << /Title -/Parent 626 0 R +/Parent 721 0 R /Count 0 -/Next 629 0 R -/Prev 627 0 R -/Dest [72 0 R /XYZ 0 400.44000000000057 null] +/Next 724 0 R +/Prev 722 0 R +/Dest [75 0 R /XYZ 0 556.9200000000003 null] >> endobj -629 0 obj +724 0 obj << /Title -/Parent 626 0 R +/Parent 721 0 R /Count 0 -/Prev 628 0 R -/Dest [72 0 R /XYZ 0 309.6000000000006 null] +/Prev 723 0 R +/Dest [75 0 R /XYZ 0 466.0800000000005 null] >> endobj -630 0 obj -<< /Title -/Parent 595 0 R -/Count 2 -/First 631 0 R -/Last 632 0 R -/Next 633 0 R -/Prev 626 0 R -/Dest [72 0 R /XYZ 0 253.32000000000056 null] +725 0 obj +<< /Title +/Parent 691 0 R +/Count 3 +/First 726 0 R +/Last 728 0 R +/Next 729 0 R +/Prev 721 0 R +/Dest [75 0 R /XYZ 0 409.80000000000047 null] >> endobj -631 0 obj +726 0 obj << /Title -/Parent 630 0 R +/Parent 725 0 R /Count 0 -/Next 632 0 R -/Dest [72 0 R /XYZ 0 213.24000000000055 null] +/Next 727 0 R +/Dest [75 0 R /XYZ 0 341.64000000000044 null] >> endobj -632 0 obj +727 0 obj << /Title -/Parent 630 0 R +/Parent 725 0 R /Count 0 -/Prev 631 0 R -/Dest [72 0 R /XYZ 0 108.12000000000052 null] +/Next 728 0 R +/Prev 726 0 R +/Dest [75 0 R /XYZ 0 198.9600000000004 null] >> endobj -633 0 obj -<< /Title -/Parent 595 0 R +728 0 obj +<< /Title +/Parent 725 0 R +/Count 0 +/Prev 727 0 R +/Dest [75 0 R /XYZ 0 108.12000000000037 null] +>> +endobj +729 0 obj +<< /Title +/Parent 691 0 R /Count 3 -/First 634 0 R -/Last 636 0 R -/Next 637 0 R -/Prev 630 0 R -/Dest [84 0 R /XYZ 0 697.44 null] +/First 730 0 R +/Last 732 0 R +/Next 733 0 R +/Prev 725 0 R +/Dest [87 0 R /XYZ 0 792.0 null] >> endobj -634 0 obj +730 0 obj << /Title -/Parent 633 0 R +/Parent 729 0 R /Count 0 -/Next 635 0 R -/Dest [84 0 R /XYZ 0 657.3600000000001 null] +/Next 731 0 R +/Dest [87 0 R /XYZ 0 662.1600000000001 null] >> endobj -635 0 obj +731 0 obj << /Title -/Parent 633 0 R +/Parent 729 0 R /Count 0 -/Next 636 0 R -/Prev 634 0 R -/Dest [84 0 R /XYZ 0 552.2400000000002 null] +/Next 732 0 R +/Prev 730 0 R +/Dest [87 0 R /XYZ 0 481.92000000000024 null] >> endobj -636 0 obj +732 0 obj << /Title -/Parent 633 0 R +/Parent 729 0 R /Count 0 -/Prev 635 0 R -/Dest [84 0 R /XYZ 0 447.12000000000035 null] +/Prev 731 0 R +/Dest [87 0 R /XYZ 0 376.8000000000002 null] >> endobj -637 0 obj -<< /Title -/Parent 595 0 R -/Count 2 -/First 638 0 R -/Last 639 0 R -/Next 640 0 R -/Prev 633 0 R -/Dest [84 0 R /XYZ 0 390.8400000000003 null] +733 0 obj +<< /Title +/Parent 691 0 R +/Count 4 +/First 734 0 R +/Last 737 0 R +/Next 738 0 R +/Prev 729 0 R +/Dest [87 0 R /XYZ 0 320.52000000000015 null] >> endobj -638 0 obj -<< /Title -/Parent 637 0 R +734 0 obj +<< /Title +/Parent 733 0 R /Count 0 -/Next 639 0 R -/Dest [84 0 R /XYZ 0 350.7600000000003 null] +/Next 735 0 R +/Dest [87 0 R /XYZ 0 224.28000000000017 null] >> endobj -639 0 obj -<< /Title -/Parent 637 0 R +735 0 obj +<< /Title +/Parent 733 0 R /Count 0 -/Prev 638 0 R -/Dest [84 0 R /XYZ 0 245.6400000000002 null] +/Next 736 0 R +/Prev 734 0 R +/Dest [87 0 R /XYZ 0 104.88000000000014 null] >> endobj -640 0 obj -<< /Title -/Parent 595 0 R -/Count 3 -/First 641 0 R -/Last 643 0 R -/Next 644 0 R -/Prev 637 0 R -/Dest [84 0 R /XYZ 0 189.36000000000018 null] +736 0 obj +<< /Title +/Parent 733 0 R +/Count 0 +/Next 737 0 R +/Prev 735 0 R +/Dest [98 0 R /XYZ 0 683.1600000000001 null] >> endobj -641 0 obj -<< /Title -/Parent 640 0 R +737 0 obj +<< /Title +/Parent 733 0 R /Count 0 -/Next 642 0 R -/Dest [84 0 R /XYZ 0 149.28000000000017 null] +/Prev 736 0 R +/Dest [98 0 R /XYZ 0 626.8800000000002 null] >> endobj -642 0 obj -<< /Title -/Parent 640 0 R +738 0 obj +<< /Title +/Parent 691 0 R +/Count 2 +/First 739 0 R +/Last 740 0 R +/Next 741 0 R +/Prev 733 0 R +/Dest [98 0 R /XYZ 0 570.6000000000004 null] +>> +endobj +739 0 obj +<< /Title +/Parent 738 0 R /Count 0 -/Next 643 0 R -/Prev 641 0 R -/Dest [97 0 R /XYZ 0 792.0 null] +/Next 740 0 R +/Dest [98 0 R /XYZ 0 530.5200000000004 null] >> endobj -643 0 obj -<< /Title -/Parent 640 0 R +740 0 obj +<< /Title +/Parent 738 0 R /Count 0 -/Prev 642 0 R -/Dest [97 0 R /XYZ 0 653.2800000000002 null] +/Prev 739 0 R +/Dest [98 0 R /XYZ 0 425.4000000000005 null] >> endobj -644 0 obj -<< /Title -/Parent 595 0 R +741 0 obj +<< /Title +/Parent 691 0 R /Count 3 -/First 645 0 R -/Last 647 0 R -/Next 648 0 R -/Prev 640 0 R -/Dest [97 0 R /XYZ 0 597.0000000000003 null] +/First 742 0 R +/Last 744 0 R +/Next 745 0 R +/Prev 738 0 R +/Dest [98 0 R /XYZ 0 334.5600000000005 null] >> endobj -645 0 obj +742 0 obj << /Title -/Parent 644 0 R +/Parent 741 0 R /Count 0 -/Next 646 0 R -/Dest [97 0 R /XYZ 0 528.8400000000005 null] +/Next 743 0 R +/Dest [98 0 R /XYZ 0 294.4800000000005 null] >> endobj -646 0 obj +743 0 obj << /Title -/Parent 644 0 R +/Parent 741 0 R /Count 0 -/Next 647 0 R -/Prev 645 0 R -/Dest [97 0 R /XYZ 0 423.72000000000054 null] +/Next 744 0 R +/Prev 742 0 R +/Dest [98 0 R /XYZ 0 189.36000000000044 null] >> endobj -647 0 obj +744 0 obj << /Title -/Parent 644 0 R +/Parent 741 0 R /Count 0 -/Prev 646 0 R -/Dest [97 0 R /XYZ 0 318.6000000000005 null] ->> -endobj -648 0 obj -<< /Title -/Parent 595 0 R -/Count 3 -/First 649 0 R -/Last 651 0 R -/Next 652 0 R -/Prev 644 0 R -/Dest [97 0 R /XYZ 0 262.32000000000045 null] +/Prev 743 0 R +/Dest [110 0 R /XYZ 0 792.0 null] >> endobj -649 0 obj -<< /Title -/Parent 648 0 R -/Count 0 -/Next 650 0 R -/Dest [97 0 R /XYZ 0 222.24000000000046 null] +745 0 obj +<< /Title +/Parent 691 0 R +/Count 2 +/First 746 0 R +/Last 747 0 R +/Next 748 0 R +/Prev 741 0 R +/Dest [110 0 R /XYZ 0 702.1200000000001 null] >> endobj -650 0 obj -<< /Title -/Parent 648 0 R +746 0 obj +<< /Title +/Parent 745 0 R /Count 0 -/Next 651 0 R -/Prev 649 0 R -/Dest [97 0 R /XYZ 0 117.12000000000043 null] +/Next 747 0 R +/Dest [110 0 R /XYZ 0 662.0400000000002 null] >> endobj -651 0 obj -<< /Title -/Parent 648 0 R +747 0 obj +<< /Title +/Parent 745 0 R /Count 0 -/Prev 650 0 R -/Dest [110 0 R /XYZ 0 683.1600000000001 null] +/Prev 746 0 R +/Dest [110 0 R /XYZ 0 556.9200000000003 null] >> endobj -652 0 obj -<< /Title -/Parent 595 0 R +748 0 obj +<< /Title +/Parent 691 0 R /Count 3 -/First 653 0 R -/Last 655 0 R -/Next 656 0 R -/Prev 648 0 R -/Dest [110 0 R /XYZ 0 626.8800000000002 null] +/First 749 0 R +/Last 751 0 R +/Next 752 0 R +/Prev 745 0 R +/Dest [110 0 R /XYZ 0 500.64000000000044 null] >> endobj -653 0 obj +749 0 obj << /Title -/Parent 652 0 R +/Parent 748 0 R /Count 0 -/Next 654 0 R -/Dest [110 0 R /XYZ 0 586.8000000000003 null] +/Next 750 0 R +/Dest [110 0 R /XYZ 0 460.5600000000004 null] >> endobj -654 0 obj +750 0 obj << /Title -/Parent 652 0 R +/Parent 748 0 R /Count 0 -/Next 655 0 R -/Prev 653 0 R -/Dest [110 0 R /XYZ 0 481.68000000000046 null] +/Next 751 0 R +/Prev 749 0 R +/Dest [110 0 R /XYZ 0 355.44000000000034 null] >> endobj -655 0 obj +751 0 obj << /Title -/Parent 652 0 R +/Parent 748 0 R /Count 0 -/Prev 654 0 R -/Dest [110 0 R /XYZ 0 376.5600000000004 null] +/Prev 750 0 R +/Dest [110 0 R /XYZ 0 250.32000000000028 null] >> endobj -656 0 obj -<< /Title -/Parent 595 0 R +752 0 obj +<< /Title +/Parent 691 0 R /Count 3 -/First 657 0 R -/Last 659 0 R -/Next 660 0 R -/Prev 652 0 R -/Dest [110 0 R /XYZ 0 320.28000000000037 null] +/First 753 0 R +/Last 755 0 R +/Next 756 0 R +/Prev 748 0 R +/Dest [110 0 R /XYZ 0 194.04000000000025 null] >> endobj -657 0 obj +753 0 obj << /Title -/Parent 656 0 R +/Parent 752 0 R /Count 0 -/Next 658 0 R -/Dest [110 0 R /XYZ 0 280.20000000000033 null] +/Next 754 0 R +/Dest [110 0 R /XYZ 0 125.88000000000022 null] >> endobj -658 0 obj +754 0 obj << /Title -/Parent 656 0 R +/Parent 752 0 R /Count 0 -/Next 659 0 R -/Prev 657 0 R -/Dest [110 0 R /XYZ 0 175.08000000000033 null] +/Next 755 0 R +/Prev 753 0 R +/Dest [124 0 R /XYZ 0 683.1600000000001 null] >> endobj -659 0 obj +755 0 obj << /Title -/Parent 656 0 R +/Parent 752 0 R /Count 0 -/Prev 658 0 R -/Dest [124 0 R /XYZ 0 792.0 null] +/Prev 754 0 R +/Dest [124 0 R /XYZ 0 578.0400000000002 null] >> endobj -660 0 obj -<< /Title -/Parent 595 0 R +756 0 obj +<< /Title +/Parent 691 0 R /Count 3 -/First 661 0 R -/Last 663 0 R -/Next 664 0 R -/Prev 656 0 R -/Dest [124 0 R /XYZ 0 702.1200000000001 null] +/First 757 0 R +/Last 759 0 R +/Next 760 0 R +/Prev 752 0 R +/Dest [124 0 R /XYZ 0 521.7600000000003 null] >> endobj -661 0 obj +757 0 obj << /Title -/Parent 660 0 R +/Parent 756 0 R /Count 0 -/Next 662 0 R -/Dest [124 0 R /XYZ 0 662.0400000000002 null] +/Next 758 0 R +/Dest [124 0 R /XYZ 0 425.5200000000004 null] >> endobj -662 0 obj +758 0 obj << /Title -/Parent 660 0 R +/Parent 756 0 R /Count 0 -/Next 663 0 R -/Prev 661 0 R -/Dest [124 0 R /XYZ 0 556.9200000000003 null] +/Next 759 0 R +/Prev 757 0 R +/Dest [124 0 R /XYZ 0 245.28000000000037 null] >> endobj -663 0 obj +759 0 obj << /Title -/Parent 660 0 R +/Parent 756 0 R /Count 0 -/Prev 662 0 R -/Dest [124 0 R /XYZ 0 451.8000000000004 null] +/Prev 758 0 R +/Dest [124 0 R /XYZ 0 140.16000000000034 null] >> endobj -664 0 obj -<< /Title -/Parent 595 0 R +760 0 obj +<< /Title +/Parent 691 0 R /Count 3 -/First 665 0 R -/Last 667 0 R -/Next 668 0 R -/Prev 660 0 R -/Dest [124 0 R /XYZ 0 395.5200000000004 null] +/First 761 0 R +/Last 763 0 R +/Next 764 0 R +/Prev 756 0 R +/Dest [134 0 R /XYZ 0 792.0 null] >> endobj -665 0 obj +761 0 obj << /Title -/Parent 664 0 R +/Parent 760 0 R /Count 0 -/Next 666 0 R -/Dest [124 0 R /XYZ 0 355.44000000000034 null] +/Next 762 0 R +/Dest [134 0 R /XYZ 0 718.32 null] >> endobj -666 0 obj +762 0 obj << /Title -/Parent 664 0 R +/Parent 760 0 R /Count 0 -/Next 667 0 R -/Prev 665 0 R -/Dest [124 0 R /XYZ 0 250.32000000000033 null] +/Next 763 0 R +/Prev 761 0 R +/Dest [134 0 R /XYZ 0 613.2000000000003 null] >> endobj -667 0 obj +763 0 obj << /Title -/Parent 664 0 R +/Parent 760 0 R /Count 0 -/Prev 666 0 R -/Dest [124 0 R /XYZ 0 145.2000000000003 null] +/Prev 762 0 R +/Dest [134 0 R /XYZ 0 508.0800000000004 null] >> endobj -668 0 obj -<< /Title -/Parent 595 0 R -/Count 4 -/First 669 0 R -/Last 672 0 R -/Next 673 0 R -/Prev 664 0 R -/Dest [137 0 R /XYZ 0 792.0 null] +764 0 obj +<< /Title +/Parent 691 0 R +/Count 3 +/First 765 0 R +/Last 767 0 R +/Next 768 0 R +/Prev 760 0 R +/Dest [134 0 R /XYZ 0 451.80000000000035 null] >> endobj -669 0 obj +765 0 obj << /Title -/Parent 668 0 R +/Parent 764 0 R /Count 0 -/Next 670 0 R -/Dest [137 0 R /XYZ 0 718.32 null] +/Next 766 0 R +/Dest [134 0 R /XYZ 0 411.7200000000003 null] >> endobj -670 0 obj +766 0 obj << /Title -/Parent 668 0 R -/Count 0 -/Next 671 0 R -/Prev 669 0 R -/Dest [137 0 R /XYZ 0 575.6400000000001 null] ->> -endobj -671 0 obj -<< /Title -/Parent 668 0 R +/Parent 764 0 R /Count 0 -/Next 672 0 R -/Prev 670 0 R -/Dest [137 0 R /XYZ 0 470.5200000000002 null] +/Next 767 0 R +/Prev 765 0 R +/Dest [134 0 R /XYZ 0 306.6000000000003 null] >> endobj -672 0 obj -<< /Title -/Parent 668 0 R +767 0 obj +<< /Title +/Parent 764 0 R /Count 0 -/Prev 671 0 R -/Dest [137 0 R /XYZ 0 414.2400000000002 null] +/Prev 766 0 R +/Dest [134 0 R /XYZ 0 201.48000000000027 null] >> endobj -673 0 obj -<< /Title -/Parent 595 0 R -/Count 4 -/First 674 0 R -/Last 677 0 R -/Next 678 0 R -/Prev 668 0 R -/Dest [137 0 R /XYZ 0 357.96000000000015 null] +768 0 obj +<< /Title +/Parent 691 0 R +/Count 3 +/First 769 0 R +/Last 771 0 R +/Next 772 0 R +/Prev 764 0 R +/Dest [134 0 R /XYZ 0 145.20000000000024 null] >> endobj -674 0 obj +769 0 obj << /Title -/Parent 673 0 R +/Parent 768 0 R /Count 0 -/Next 675 0 R -/Dest [137 0 R /XYZ 0 289.8000000000001 null] +/Next 770 0 R +/Dest [134 0 R /XYZ 0 105.12000000000023 null] >> endobj -675 0 obj +770 0 obj << /Title -/Parent 673 0 R -/Count 0 -/Next 676 0 R -/Prev 674 0 R -/Dest [137 0 R /XYZ 0 147.1200000000001 null] ->> -endobj -676 0 obj -<< /Title -/Parent 673 0 R +/Parent 768 0 R /Count 0 -/Next 677 0 R -/Prev 675 0 R -/Dest [151 0 R /XYZ 0 792.0 null] +/Next 771 0 R +/Prev 769 0 R +/Dest [148 0 R /XYZ 0 683.1600000000001 null] >> endobj -677 0 obj -<< /Title -/Parent 673 0 R +771 0 obj +<< /Title +/Parent 768 0 R /Count 0 -/Prev 676 0 R -/Dest [151 0 R /XYZ 0 702.1200000000001 null] +/Prev 770 0 R +/Dest [148 0 R /XYZ 0 578.0400000000002 null] >> endobj -678 0 obj -<< /Title -/Parent 595 0 R -/Count 4 -/First 679 0 R -/Last 682 0 R -/Next 683 0 R -/Prev 673 0 R -/Dest [151 0 R /XYZ 0 645.8400000000003 null] +772 0 obj +<< /Title +/Parent 691 0 R +/Count 3 +/First 773 0 R +/Last 775 0 R +/Next 776 0 R +/Prev 768 0 R +/Dest [148 0 R /XYZ 0 521.7600000000003 null] >> endobj -679 0 obj +773 0 obj << /Title -/Parent 678 0 R +/Parent 772 0 R /Count 0 -/Next 680 0 R -/Dest [151 0 R /XYZ 0 577.6800000000004 null] +/Next 774 0 R +/Dest [148 0 R /XYZ 0 481.68000000000035 null] >> endobj -680 0 obj +774 0 obj << /Title -/Parent 678 0 R -/Count 0 -/Next 681 0 R -/Prev 679 0 R -/Dest [151 0 R /XYZ 0 435.0000000000005 null] ->> -endobj -681 0 obj -<< /Title -/Parent 678 0 R +/Parent 772 0 R /Count 0 -/Next 682 0 R -/Prev 680 0 R -/Dest [151 0 R /XYZ 0 329.88000000000045 null] +/Next 775 0 R +/Prev 773 0 R +/Dest [148 0 R /XYZ 0 376.56000000000034 null] >> endobj -682 0 obj -<< /Title -/Parent 678 0 R +775 0 obj +<< /Title +/Parent 772 0 R /Count 0 -/Prev 681 0 R -/Dest [151 0 R /XYZ 0 273.6000000000004 null] +/Prev 774 0 R +/Dest [148 0 R /XYZ 0 271.4400000000003 null] >> endobj -683 0 obj -<< /Title -/Parent 595 0 R +776 0 obj +<< /Title +/Parent 691 0 R /Count 3 -/First 684 0 R -/Last 686 0 R -/Next 687 0 R -/Prev 678 0 R -/Dest [151 0 R /XYZ 0 217.32000000000042 null] +/First 777 0 R +/Last 779 0 R +/Next 780 0 R +/Prev 772 0 R +/Dest [148 0 R /XYZ 0 215.16000000000028 null] >> endobj -684 0 obj +777 0 obj << /Title -/Parent 683 0 R +/Parent 776 0 R /Count 0 -/Next 685 0 R -/Dest [151 0 R /XYZ 0 177.2400000000004 null] +/Next 778 0 R +/Dest [148 0 R /XYZ 0 175.08000000000027 null] >> endobj -685 0 obj +778 0 obj << /Title -/Parent 683 0 R +/Parent 776 0 R /Count 0 -/Next 686 0 R -/Prev 684 0 R -/Dest [165 0 R /XYZ 0 792.0 null] +/Next 779 0 R +/Prev 777 0 R +/Dest [161 0 R /XYZ 0 792.0 null] >> endobj -686 0 obj +779 0 obj << /Title -/Parent 683 0 R +/Parent 776 0 R /Count 0 -/Prev 685 0 R -/Dest [165 0 R /XYZ 0 653.2800000000002 null] +/Prev 778 0 R +/Dest [161 0 R /XYZ 0 653.2800000000002 null] >> endobj -687 0 obj -<< /Title -/Parent 595 0 R -/Count 2 -/First 688 0 R -/Last 689 0 R -/Next 690 0 R -/Prev 683 0 R -/Dest [165 0 R /XYZ 0 597.0000000000003 null] +780 0 obj +<< /Title +/Parent 691 0 R +/Count 4 +/First 781 0 R +/Last 784 0 R +/Next 785 0 R +/Prev 776 0 R +/Dest [161 0 R /XYZ 0 597.0000000000003 null] >> endobj -688 0 obj -<< /Title -/Parent 687 0 R +781 0 obj +<< /Title +/Parent 780 0 R /Count 0 -/Next 689 0 R -/Dest [165 0 R /XYZ 0 556.9200000000004 null] +/Next 782 0 R +/Dest [161 0 R /XYZ 0 556.9200000000004 null] >> endobj -689 0 obj -<< /Title -/Parent 687 0 R +782 0 obj +<< /Title +/Parent 780 0 R /Count 0 -/Prev 688 0 R -/Dest [165 0 R /XYZ 0 451.8000000000005 null] +/Next 783 0 R +/Prev 781 0 R +/Dest [161 0 R /XYZ 0 414.2400000000005 null] >> endobj -690 0 obj -<< /Title -/Parent 595 0 R -/Count 3 -/First 691 0 R -/Last 693 0 R -/Next 694 0 R -/Prev 687 0 R -/Dest [165 0 R /XYZ 0 395.5200000000005 null] +783 0 obj +<< /Title +/Parent 780 0 R +/Count 0 +/Next 784 0 R +/Prev 782 0 R +/Dest [161 0 R /XYZ 0 309.12000000000046 null] >> endobj -691 0 obj +784 0 obj +<< /Title +/Parent 780 0 R +/Count 0 +/Prev 783 0 R +/Dest [161 0 R /XYZ 0 252.84000000000043 null] +>> +endobj +785 0 obj +<< /Title +/Parent 691 0 R +/Count 4 +/First 786 0 R +/Last 789 0 R +/Next 790 0 R +/Prev 780 0 R +/Dest [161 0 R /XYZ 0 196.5600000000004 null] +>> +endobj +786 0 obj << /Title -/Parent 690 0 R +/Parent 785 0 R /Count 0 -/Next 692 0 R -/Dest [165 0 R /XYZ 0 327.36000000000047 null] +/Next 787 0 R +/Dest [161 0 R /XYZ 0 128.40000000000038 null] >> endobj -692 0 obj +787 0 obj << /Title -/Parent 690 0 R +/Parent 785 0 R /Count 0 -/Next 693 0 R -/Prev 691 0 R -/Dest [165 0 R /XYZ 0 222.2400000000004 null] +/Next 788 0 R +/Prev 786 0 R +/Dest [175 0 R /XYZ 0 645.5999999999999 null] >> endobj -693 0 obj -<< /Title -/Parent 690 0 R +788 0 obj +<< /Title +/Parent 785 0 R /Count 0 -/Prev 692 0 R -/Dest [165 0 R /XYZ 0 117.12000000000037 null] +/Next 789 0 R +/Prev 787 0 R +/Dest [175 0 R /XYZ 0 540.48 null] >> endobj -694 0 obj -<< /Title -/Parent 595 0 R -/Count 3 -/First 695 0 R -/Last 697 0 R -/Next 698 0 R -/Prev 690 0 R -/Dest [178 0 R /XYZ 0 792.0 null] +789 0 obj +<< /Title +/Parent 785 0 R +/Count 0 +/Prev 788 0 R +/Dest [175 0 R /XYZ 0 484.20000000000016 null] >> endobj -695 0 obj +790 0 obj +<< /Title +/Parent 691 0 R +/Count 4 +/First 791 0 R +/Last 794 0 R +/Next 795 0 R +/Prev 785 0 R +/Dest [175 0 R /XYZ 0 427.92000000000013 null] +>> +endobj +791 0 obj << /Title -/Parent 694 0 R +/Parent 790 0 R /Count 0 -/Next 696 0 R -/Dest [178 0 R /XYZ 0 718.32 null] +/Next 792 0 R +/Dest [175 0 R /XYZ 0 359.7600000000001 null] >> endobj -696 0 obj +792 0 obj << /Title -/Parent 694 0 R +/Parent 790 0 R /Count 0 -/Next 697 0 R -/Prev 695 0 R -/Dest [178 0 R /XYZ 0 613.2000000000003 null] +/Next 793 0 R +/Prev 791 0 R +/Dest [175 0 R /XYZ 0 217.0800000000001 null] >> endobj -697 0 obj -<< /Title -/Parent 694 0 R +793 0 obj +<< /Title +/Parent 790 0 R /Count 0 -/Prev 696 0 R -/Dest [178 0 R /XYZ 0 508.0800000000004 null] +/Next 794 0 R +/Prev 792 0 R +/Dest [175 0 R /XYZ 0 111.96000000000006 null] >> endobj -698 0 obj -<< /Title -/Parent 595 0 R -/Count 4 -/First 699 0 R -/Last 702 0 R -/Next 703 0 R -/Prev 694 0 R -/Dest [178 0 R /XYZ 0 451.80000000000035 null] +794 0 obj +<< /Title +/Parent 790 0 R +/Count 0 +/Prev 793 0 R +/Dest [188 0 R /XYZ 0 792.0 null] >> endobj -699 0 obj +795 0 obj +<< /Title +/Parent 691 0 R +/Count 3 +/First 796 0 R +/Last 798 0 R +/Next 799 0 R +/Prev 790 0 R +/Dest [188 0 R /XYZ 0 702.1200000000001 null] +>> +endobj +796 0 obj << /Title -/Parent 698 0 R +/Parent 795 0 R /Count 0 -/Next 700 0 R -/Dest [178 0 R /XYZ 0 411.7200000000003 null] +/Next 797 0 R +/Dest [188 0 R /XYZ 0 662.0400000000002 null] >> endobj -700 0 obj +797 0 obj << /Title -/Parent 698 0 R +/Parent 795 0 R /Count 0 -/Next 701 0 R -/Prev 699 0 R -/Dest [178 0 R /XYZ 0 269.04000000000025 null] +/Next 798 0 R +/Prev 796 0 R +/Dest [188 0 R /XYZ 0 556.9200000000003 null] >> endobj -701 0 obj -<< /Title -/Parent 698 0 R +798 0 obj +<< /Title +/Parent 795 0 R /Count 0 -/Next 702 0 R -/Prev 700 0 R -/Dest [178 0 R /XYZ 0 163.92000000000024 null] +/Prev 797 0 R +/Dest [188 0 R /XYZ 0 451.8000000000004 null] >> endobj -702 0 obj -<< /Title -/Parent 698 0 R +799 0 obj +<< /Title +/Parent 691 0 R +/Count 4 +/First 800 0 R +/Last 803 0 R +/Next 804 0 R +/Prev 795 0 R +/Dest [188 0 R /XYZ 0 395.5200000000004 null] +>> +endobj +800 0 obj +<< /Title +/Parent 799 0 R /Count 0 -/Prev 701 0 R -/Dest [178 0 R /XYZ 0 107.64000000000021 null] +/Next 801 0 R +/Dest [188 0 R /XYZ 0 355.44000000000034 null] >> endobj -703 0 obj -<< /Title -/Parent 595 0 R -/Count 2 -/First 704 0 R -/Last 705 0 R -/Next 706 0 R -/Prev 698 0 R -/Dest [192 0 R /XYZ 0 792.0 null] +801 0 obj +<< /Title +/Parent 799 0 R +/Count 0 +/Next 802 0 R +/Prev 800 0 R +/Dest [188 0 R /XYZ 0 250.32000000000033 null] >> endobj -704 0 obj -<< /Title -/Parent 703 0 R +802 0 obj +<< /Title +/Parent 799 0 R /Count 0 -/Next 705 0 R -/Dest [192 0 R /XYZ 0 718.32 null] +/Next 803 0 R +/Prev 801 0 R +/Dest [188 0 R /XYZ 0 145.2000000000003 null] >> endobj -705 0 obj -<< /Title -/Parent 703 0 R +803 0 obj +<< /Title +/Parent 799 0 R /Count 0 -/Prev 704 0 R -/Dest [192 0 R /XYZ 0 613.2000000000003 null] +/Prev 802 0 R +/Dest [202 0 R /XYZ 0 792.0 null] >> endobj -706 0 obj -<< /Title -/Parent 595 0 R +804 0 obj +<< /Title +/Parent 691 0 R /Count 2 -/First 707 0 R -/Last 708 0 R -/Next 709 0 R -/Prev 703 0 R -/Dest [192 0 R /XYZ 0 556.9200000000004 null] +/First 805 0 R +/Last 806 0 R +/Next 807 0 R +/Prev 799 0 R +/Dest [202 0 R /XYZ 0 702.1200000000001 null] >> endobj -707 0 obj +805 0 obj << /Title -/Parent 706 0 R +/Parent 804 0 R /Count 0 -/Next 708 0 R -/Dest [192 0 R /XYZ 0 516.8400000000005 null] +/Next 806 0 R +/Dest [202 0 R /XYZ 0 662.0400000000002 null] >> endobj -708 0 obj +806 0 obj << /Title -/Parent 706 0 R +/Parent 804 0 R /Count 0 -/Prev 707 0 R -/Dest [192 0 R /XYZ 0 411.7200000000005 null] +/Prev 805 0 R +/Dest [202 0 R /XYZ 0 556.9200000000003 null] >> endobj -709 0 obj -<< /Title -/Parent 595 0 R +807 0 obj +<< /Title +/Parent 691 0 R /Count 3 -/First 710 0 R -/Last 712 0 R -/Prev 706 0 R -/Dest [192 0 R /XYZ 0 355.44000000000045 null] +/First 808 0 R +/Last 810 0 R +/Next 811 0 R +/Prev 804 0 R +/Dest [202 0 R /XYZ 0 500.64000000000044 null] >> endobj -710 0 obj +808 0 obj << /Title -/Parent 709 0 R +/Parent 807 0 R /Count 0 -/Next 711 0 R -/Dest [192 0 R /XYZ 0 315.3600000000004 null] +/Next 809 0 R +/Dest [202 0 R /XYZ 0 404.40000000000043 null] >> endobj -711 0 obj +809 0 obj << /Title -/Parent 709 0 R +/Parent 807 0 R /Count 0 -/Next 712 0 R -/Prev 710 0 R -/Dest [192 0 R /XYZ 0 210.2400000000004 null] +/Next 810 0 R +/Prev 808 0 R +/Dest [202 0 R /XYZ 0 261.7200000000004 null] >> endobj -712 0 obj +810 0 obj << /Title -/Parent 709 0 R +/Parent 807 0 R /Count 0 -/Prev 711 0 R -/Dest [192 0 R /XYZ 0 105.12000000000037 null] +/Prev 809 0 R +/Dest [202 0 R /XYZ 0 156.60000000000042 null] >> endobj -713 0 obj +811 0 obj +<< /Title +/Parent 691 0 R +/Count 3 +/First 812 0 R +/Last 814 0 R +/Next 815 0 R +/Prev 807 0 R +/Dest [214 0 R /XYZ 0 792.0 null] +>> +endobj +812 0 obj +<< /Title +/Parent 811 0 R +/Count 0 +/Next 813 0 R +/Dest [214 0 R /XYZ 0 662.1600000000001 null] +>> +endobj +813 0 obj +<< /Title +/Parent 811 0 R +/Count 0 +/Next 814 0 R +/Prev 812 0 R +/Dest [214 0 R /XYZ 0 519.4800000000002 null] +>> +endobj +814 0 obj +<< /Title +/Parent 811 0 R +/Count 0 +/Prev 813 0 R +/Dest [214 0 R /XYZ 0 414.36000000000024 null] +>> +endobj +815 0 obj +<< /Title +/Parent 691 0 R +/Count 4 +/First 816 0 R +/Last 819 0 R +/Next 820 0 R +/Prev 811 0 R +/Dest [214 0 R /XYZ 0 358.0800000000002 null] +>> +endobj +816 0 obj +<< /Title +/Parent 815 0 R +/Count 0 +/Next 817 0 R +/Dest [214 0 R /XYZ 0 261.8400000000002 null] +>> +endobj +817 0 obj +<< /Title +/Parent 815 0 R +/Count 0 +/Next 818 0 R +/Prev 816 0 R +/Dest [224 0 R /XYZ 0 792.0 null] +>> +endobj +818 0 obj +<< /Title +/Parent 815 0 R +/Count 0 +/Next 819 0 R +/Prev 817 0 R +/Dest [224 0 R /XYZ 0 653.2800000000002 null] +>> +endobj +819 0 obj +<< /Title +/Parent 815 0 R +/Count 0 +/Prev 818 0 R +/Dest [224 0 R /XYZ 0 597.0000000000003 null] +>> +endobj +820 0 obj +<< /Title +/Parent 691 0 R +/Count 2 +/First 821 0 R +/Last 822 0 R +/Next 823 0 R +/Prev 815 0 R +/Dest [224 0 R /XYZ 0 540.7200000000005 null] +>> +endobj +821 0 obj +<< /Title +/Parent 820 0 R +/Count 0 +/Next 822 0 R +/Dest [224 0 R /XYZ 0 500.6400000000005 null] +>> +endobj +822 0 obj +<< /Title +/Parent 820 0 R +/Count 0 +/Prev 821 0 R +/Dest [224 0 R /XYZ 0 395.52000000000044 null] +>> +endobj +823 0 obj +<< /Title +/Parent 691 0 R +/Count 2 +/First 824 0 R +/Last 825 0 R +/Next 826 0 R +/Prev 820 0 R +/Dest [224 0 R /XYZ 0 339.2400000000004 null] +>> +endobj +824 0 obj +<< /Title +/Parent 823 0 R +/Count 0 +/Next 825 0 R +/Dest [224 0 R /XYZ 0 299.16000000000037 null] +>> +endobj +825 0 obj +<< /Title +/Parent 823 0 R +/Count 0 +/Prev 824 0 R +/Dest [224 0 R /XYZ 0 194.04000000000033 null] +>> +endobj +826 0 obj +<< /Title +/Parent 691 0 R +/Count 3 +/First 827 0 R +/Last 829 0 R +/Next 830 0 R +/Prev 823 0 R +/Dest [224 0 R /XYZ 0 137.7600000000003 null] +>> +endobj +827 0 obj +<< /Title +/Parent 826 0 R +/Count 0 +/Next 828 0 R +/Dest [224 0 R /XYZ 0 97.68000000000029 null] +>> +endobj +828 0 obj +<< /Title +/Parent 826 0 R +/Count 0 +/Next 829 0 R +/Prev 827 0 R +/Dest [240 0 R /XYZ 0 683.1600000000001 null] +>> +endobj +829 0 obj +<< /Title +/Parent 826 0 R +/Count 0 +/Prev 828 0 R +/Dest [240 0 R /XYZ 0 578.0400000000002 null] +>> +endobj +830 0 obj +<< /Title +/Parent 691 0 R +/Count 3 +/First 831 0 R +/Last 833 0 R +/Prev 826 0 R +/Dest [240 0 R /XYZ 0 521.7600000000003 null] +>> +endobj +831 0 obj +<< /Title +/Parent 830 0 R +/Count 0 +/Next 832 0 R +/Dest [240 0 R /XYZ 0 453.60000000000036 null] +>> +endobj +832 0 obj +<< /Title +/Parent 830 0 R +/Count 0 +/Next 833 0 R +/Prev 831 0 R +/Dest [240 0 R /XYZ 0 348.4800000000003 null] +>> +endobj +833 0 obj +<< /Title +/Parent 830 0 R +/Count 0 +/Prev 832 0 R +/Dest [240 0 R /XYZ 0 243.36000000000027 null] +>> +endobj +834 0 obj << /Title -/Parent 589 0 R -/Count 19 -/First 714 0 R -/Last 732 0 R -/Prev 595 0 R -/Dest [207 0 R /XYZ 0 792.0 null] +/Parent 685 0 R +/Count 20 +/First 835 0 R +/Last 854 0 R +/Prev 691 0 R +/Dest [249 0 R /XYZ 0 792.0 null] >> endobj -714 0 obj -<< /Title -/Parent 713 0 R +835 0 obj +<< /Title +/Parent 834 0 R /Count 0 -/Next 715 0 R -/Dest [207 0 R /XYZ 0 712.0799999999999 null] +/Next 836 0 R +/Dest [249 0 R /XYZ 0 712.0799999999999 null] >> endobj -715 0 obj -<< /Title -/Parent 713 0 R +836 0 obj +<< /Title +/Parent 834 0 R /Count 0 -/Next 716 0 R -/Prev 714 0 R -/Dest [207 0 R /XYZ 0 524.04 null] +/Next 837 0 R +/Prev 835 0 R +/Dest [249 0 R /XYZ 0 524.04 null] >> endobj -716 0 obj -<< /Title -/Parent 713 0 R +837 0 obj +<< /Title +/Parent 834 0 R /Count 0 -/Next 717 0 R -/Prev 715 0 R -/Dest [207 0 R /XYZ 0 148.19999999999993 null] +/Next 838 0 R +/Prev 836 0 R +/Dest [249 0 R /XYZ 0 335.99999999999994 null] >> endobj -717 0 obj -<< /Title -/Parent 713 0 R +838 0 obj +<< /Title +/Parent 834 0 R /Count 0 -/Next 718 0 R -/Prev 716 0 R -/Dest [214 0 R /XYZ 0 345.11999999999995 null] +/Next 839 0 R +/Prev 837 0 R +/Dest [256 0 R /XYZ 0 608.04 null] >> endobj -718 0 obj -<< /Title -/Parent 713 0 R +839 0 obj +<< /Title +/Parent 834 0 R /Count 0 -/Next 719 0 R -/Prev 717 0 R -/Dest [214 0 R /XYZ 0 194.6399999999999 null] +/Next 840 0 R +/Prev 838 0 R +/Dest [256 0 R /XYZ 0 157.07999999999998 null] >> endobj -719 0 obj -<< /Title -/Parent 713 0 R +840 0 obj +<< /Title +/Parent 834 0 R /Count 0 -/Next 720 0 R -/Prev 718 0 R -/Dest [220 0 R /XYZ 0 683.1600000000001 null] +/Next 841 0 R +/Prev 839 0 R +/Dest [262 0 R /XYZ 0 683.1600000000001 null] >> endobj -720 0 obj -<< /Title -/Parent 713 0 R +841 0 obj +<< /Title +/Parent 834 0 R /Count 0 -/Next 721 0 R -/Prev 719 0 R -/Dest [228 0 R /XYZ 0 532.9200000000003 null] +/Next 842 0 R +/Prev 840 0 R +/Dest [262 0 R /XYZ 0 495.1200000000002 null] >> endobj -721 0 obj -<< /Title -/Parent 713 0 R +842 0 obj +<< /Title +/Parent 834 0 R /Count 0 -/Next 722 0 R -/Prev 720 0 R -/Dest [234 0 R /XYZ 0 382.68000000000023 null] +/Next 843 0 R +/Prev 841 0 R +/Dest [269 0 R /XYZ 0 345.1200000000003 null] >> endobj -722 0 obj -<< /Title -/Parent 713 0 R +843 0 obj +<< /Title +/Parent 834 0 R /Count 0 -/Next 723 0 R -/Prev 721 0 R -/Dest [239 0 R /XYZ 0 232.44000000000023 null] +/Next 844 0 R +/Prev 842 0 R +/Dest [275 0 R /XYZ 0 194.88000000000017 null] >> endobj -723 0 obj -<< /Title -/Parent 713 0 R +844 0 obj +<< /Title +/Parent 834 0 R /Count 0 -/Next 724 0 R -/Prev 722 0 R -/Dest [255 0 R /XYZ 0 645.6000000000001 null] +/Next 845 0 R +/Prev 843 0 R +/Dest [290 0 R /XYZ 0 792.0 null] >> endobj -724 0 obj -<< /Title -/Parent 713 0 R +845 0 obj +<< /Title +/Parent 834 0 R /Count 0 -/Next 725 0 R -/Prev 723 0 R -/Dest [265 0 R /XYZ 0 645.6000000000001 null] +/Next 846 0 R +/Prev 844 0 R +/Dest [298 0 R /XYZ 0 495.3600000000003 null] >> endobj -725 0 obj -<< /Title -/Parent 713 0 R +846 0 obj +<< /Title +/Parent 834 0 R /Count 0 -/Next 726 0 R -/Prev 724 0 R -/Dest [265 0 R /XYZ 0 157.08000000000015 null] +/Next 847 0 R +/Prev 845 0 R +/Dest [306 0 R /XYZ 0 495.36000000000007 null] >> endobj -726 0 obj -<< /Title -/Parent 713 0 R +847 0 obj +<< /Title +/Parent 834 0 R /Count 0 -/Next 727 0 R -/Prev 725 0 R -/Dest [271 0 R /XYZ 0 532.9200000000001 null] +/Next 848 0 R +/Prev 846 0 R +/Dest [312 0 R /XYZ 0 683.1600000000001 null] >> endobj -727 0 obj -<< /Title -/Parent 713 0 R +848 0 obj +<< /Title +/Parent 834 0 R /Count 0 -/Next 728 0 R -/Prev 726 0 R -/Dest [277 0 R /XYZ 0 645.6000000000001 null] +/Next 849 0 R +/Prev 847 0 R +/Dest [312 0 R /XYZ 0 382.4400000000001 null] >> endobj -728 0 obj -<< /Title -/Parent 713 0 R +849 0 obj +<< /Title +/Parent 834 0 R /Count 0 -/Next 729 0 R -/Prev 727 0 R -/Dest [277 0 R /XYZ 0 457.56000000000023 null] +/Next 850 0 R +/Prev 848 0 R +/Dest [319 0 R /XYZ 0 495.36000000000007 null] >> endobj -729 0 obj -<< /Title -/Parent 713 0 R +850 0 obj +<< /Title +/Parent 834 0 R /Count 0 -/Next 730 0 R -/Prev 728 0 R -/Dest [285 0 R /XYZ 0 382.68000000000023 null] +/Next 851 0 R +/Prev 849 0 R +/Dest [319 0 R /XYZ 0 307.32 null] >> endobj -730 0 obj -<< /Title -/Parent 713 0 R +851 0 obj +<< /Title +/Parent 834 0 R /Count 0 -/Next 731 0 R -/Prev 729 0 R -/Dest [285 0 R /XYZ 0 314.82000000000016 null] +/Next 852 0 R +/Prev 850 0 R +/Dest [328 0 R /XYZ 0 232.4400000000001 null] >> endobj -731 0 obj -<< /Title -/Parent 713 0 R +852 0 obj +<< /Title +/Parent 834 0 R /Count 0 -/Next 732 0 R -/Prev 730 0 R -/Dest [294 0 R /XYZ 0 420.24 null] +/Next 853 0 R +/Prev 851 0 R +/Dest [328 0 R /XYZ 0 164.5800000000001 null] >> endobj -732 0 obj -<< /Title -/Parent 713 0 R +853 0 obj +<< /Title +/Parent 834 0 R /Count 0 -/Prev 731 0 R -/Dest [301 0 R /XYZ 0 645.5999999999999 null] +/Next 854 0 R +/Prev 852 0 R +/Dest [337 0 R /XYZ 0 270.0 null] >> endobj -733 0 obj +854 0 obj +<< /Title +/Parent 834 0 R +/Count 0 +/Prev 853 0 R +/Dest [344 0 R /XYZ 0 495.35999999999996 null] +>> +endobj +855 0 obj << /Nums [0 << /P (i) >> 1 << /P (ii) >> 2 << /P (iii) >> 3 << /P (iv) >> 4 << /P (v) ->> 5 << /P (1) ->> 6 << /P (2) ->> 7 << /P (3) ->> 8 << /P (4) ->> 9 << /P (5) ->> 10 << /P (6) ->> 11 << /P (7) ->> 12 << /P (8) ->> 13 << /P (9) ->> 14 << /P (10) ->> 15 << /P (11) ->> 16 << /P (12) ->> 17 << /P (13) ->> 18 << /P (14) ->> 19 << /P (15) ->> 20 << /P (16) ->> 21 << /P (17) ->> 22 << /P (18) ->> 23 << /P (19) ->> 24 << /P (20) ->> 26 << /P (22) ->> 27 << /P (23) ->> 28 << /P (24) ->> 29 << /P (25) ->> 30 << /P (26) ->> 31 << /P (27) ->> 32 << /P (28) +>> 5 << /P (vi) +>> 6 << /P (1) +>> 7 << /P (2) +>> 8 << /P (3) +>> 9 << /P (4) +>> 10 << /P (5) +>> 11 << /P (6) +>> 12 << /P (7) +>> 13 << /P (8) +>> 14 << /P (9) +>> 15 << /P (10) +>> 16 << /P (11) +>> 17 << /P (12) +>> 18 << /P (13) +>> 19 << /P (14) +>> 20 << /P (15) +>> 21 << /P (16) +>> 22 << /P (17) +>> 23 << /P (18) +>> 24 << /P (19) +>> 25 << /P (20) +>> 26 << /P (21) +>> 27 << /P (22) +>> 28 << /P (23) +>> 30 << /P (25) +>> 31 << /P (26) +>> 32 << /P (27) +>> 33 << /P (28) +>> 34 << /P (29) +>> 35 << /P (30) +>> 36 << /P (31) +>> 37 << /P (32) >>] >> endobj -734 0 obj -<< /Length1 12112 -/Length 7776 +856 0 obj +<< /Length1 12332 +/Length 7916 /Filter [/FlateDecode] >> stream -xz \׵3#!$$hE@f3Xv8qYqc&i8I/q^~kM_צI<'_/?ߙo3ssrG#Ȃ8ho;q@毁r!,%شI<.<Ƽ=O@=xƿjs97%L_+| .2yފPj}~qxxOQ, Eݹb/c*^>+Dl -B$fsx. fy㢮g~G_{er.\ay97aCRtb-Dٲ,'75qy܌{Pܣ*%T%5skD%16JHw/x?ȉE('E0% O1Z\fJ$ZLn֊Tʖb3W;"yDxK:;Mx"P/$[hlq@ 8qk (&( $Ǯ {/μo׏w9ʼnUվBpz(}ϗGG/cc۶A±/km}cǮii9s=0p^CJ6VP@j5zF! -AK\:rCySaWV4Y~_o-uJg&OJ+ jv+mA/5Ћ}S^ƞF"^ޚ%Yց'G>N(t'O+wl-e5;#Vc*5}/;םkT5m ˜8L ev+h/9Ǜ=xҙ֬x[-Nnwe{kڌZn[mCS=\:dlT] 4[W\H&K\MFWXL"gE^B r7-74'./?iAr0ZSEҗ#gY튈:7Wb(ؤ+ʨQzۦ|!HYP.*@j7V#v[8zdD%Hca}Im;kN(Mr%9>3DC_D'zG/ly +uVnD.9E/Sg~R!!5Vk6V-xaOc43Ó5Jnf@yc^y+:-cށW< .nje#isztPu*3wTBUsS+b6t3r*Q,}V!,"slh.;_?,?Qio|QVNN$ꥂTG}YMEfRuTw` ΖgC'/Wן.}ߩ*Ry*QF4b@MK-wrY9g9FP @E27MX%xT_/{.yzmo3 3C8JjV CXfLA@j|._Rf# 42_>32A/m 5QلaqClʤ^JK(+L~|JWVBd}kILƫ`µZEa;S [M&zzL4&FF0S?oUQlC*l&EopM6_s*&w}mU.Yx&VX-*pH\Nr-n}B^g>e{۫Jd8SS}s_sҺ36]mn9?Hj"JCCq:$/bq֖7dHR?0Cռxhg7/t,v׿^ * -զS>3qxFA.ZZCp0'5,382$goSt>"> O1ٴDoc_EnefpfuA*d2`V(;xcSb?]~ȯ H&_mylz$cړZݞ"^L~Dx:GpsֲD4mtq̻lsd2$aXLApdW-z S%/*΅H\2ʉrS+'nO*Ӱ^|rΒȘAAij9S+ \@CX'N}3ZN!kŃU}WKZ>Y-/B}^mW:x1;MJGw@Wo=+Wf[olp|80p8N:!Gå kn36OܚF'֯Zƨw閍7_Sl -ux\^s|KN,C# -n -_59U_駯ig22irԀ~Ițҗg<3_xKrB^ȵT -g=~f\ؖ{ L2::wd"h/S6[1k76bD]HgI=syWxAִyF‘|yfcGRߦ;X`.ƹ9~W}&5K/ Y@G,lh @=o?5][A} lA%rϾ>_{hKsR~K̔(4fm3dB'U` 2;,U@a2$f3wM!_Rj5(ҵ -!FPŃ>V;_Z!%6ue*d1\PNpN`dD/<.pà0&+K^'hL7?ѩK W+N" -Y8K*n߉Wנ7.`v5xCxD $ja O&g dQoReY ]hR,)JʏYNsmaD뜦aWɋ=~Vť"u,W|PۦRHX, l, Xv{D`WŒAұ 7Z\3oR-t?m(2!)} -*;JgZ,~|dJ5NٚRͽȥ]QuA%Ve5]\bzeva0\ΖY;5QP. 0n5)C -u15ĀL_a f1Y4`ĶQ?R$GJ:^o,YSNª4\cK*9șFNڃ{)@ϩ+qq8ԔF(NY?{:c %َɏm/y c4505{XcD $V!ag?⃾eZ;Y'$dt$zG dZ>Vۆ1 -4A!=g?y(%<\fW;D ={#bb 8aV.W+ZAtZ s`-yރFCP{$w7 [z`%>-bۉxUũ`w%*2E+fa:PSV2T3UL5o03UvΝeI캝+"UZB|26VX,|3SlQDF*,pR@QKA~S @tK' FoWGxJģ"ez||:#[Le+r7%;`AvA ddò6`2m^ Yq meܤdm52~QPOG=ͥ=r 1ҟ[,6MSGˢ=΀?A5GKV0Dj(W`xAX׺oJk庱n=˵iR=[WֶX:jBeeC;SwFGQ]2,̍qebkżMu*.lwх!{׮UgI}h|Ŭ}f)f_o};E3]  s^g/%#ۊUA??H0eVMr՚dmDN -"1;)xJ# ե_D4mNa:cx…qTե@<0oqp'fj# 2 "ߓʛ=)zblS=/A_p]ΰ'Jyō0TU-=1RuT2'65TʌVp$>ەבu0-\ SH8j'U6Xۧvv:i5c1SBxqf O;Jm4c3a"-R!}nvlN+n{/"yaO=ϻn?i:?E"F,y)({CQ).|@xYD4" b"pf,@$fwuy!8w©s;{GTE3' d>C3w%gpPGu\9 -MQWZv^ Rr|8_SȯgpV C!3GtLnBsH0㤢<$|'P2fY~SG!s~F/~ Yt ]VJR ֌A?Au Su| qX*WWȇB "CP CQv݆7W"ħo0m*=L!U z3mm۵Jrz. QGylP' ( 2%CG_Ce,eȆ(*=:jdnM&w P 4 !j !4 .th hG}@k귦\ߏLuii`rn⇧T05 Όz'ٯ `Eq@.a4 ko}UH<SqUɒ/fnL-F -adç4ft#ːe=<'cìpN/(i$V(.>t`jxp\5=ۥXwګ rWΪV-/Ms6C,CTī6ӿ|?`dUl'of]q \LcM&>'sNXpZ,a:;?p)̀tᾁ)xjzh@%x'CY& Da2|b$!V;n;>p,r<@1eTRVTfdPl<_oTpAҧRW٢Y,JVz "wn_is[ a\!ox(P/ +xz \׵3#! "M EH vŀAƈEYYbcP'!8u8MKu6/6q^^|&_K9R|0ΌLatόs=!#3Q/T@9χicF^pEtg NBH?Ϥ{c>P23z/Xu)7wa=zTOJˁkc+[-0v}Q .!d1HE+s80^8?"2J#Eq"q<$$JeIrԚ-S3P&52Yٖ-7/^@΢bWIiY9@_>{T#mv`4M ነ"9! šĹbqz`ׇ {]Pܕw +V2Vɼ޽*^A^9FBob!aV'g\wם.׻/w=/]9U|2Acp#eͱY>0֩kym2P$vPтU,;YUb !WOx?ȉC(7I0 O6s"I&5ibI*3iDRJ@iMۘu[< %l6 < T2-g 8^c9qK(F( d 3w]˛~qn {ˢwH&+wW'W~H%,y,zc7ϟ=--Oygv!kH +HZ(!c A(v m#HM(0S9<#'Z;of |,'?p%UV$W&$5Zj%75Ћ}cNžF<ѲVђ-6,z'F:Fʵccs1G¢ӲbtM7KPP,Pl6c)*nNnWqש]ά=:OS]YkC]SmWr vCafn+[!Rluew{mgDL'"J`E^-B r7%38ղ +./3i'Ar0JUFҗsXck"Y #~TP vyY(-L荤FEN:VtYƉJk=3.8Ȉ4%=WLw>{WeK(4 ކ=z^T O@\r+|o932x~T_E_YdlMGUMN2 Tn-GlqĩDGUsv3C檒 Zwk5eͤ]61sM З؂=#W5}eP^Ja]8ť]>'VeO|@4tGHUhS1Zppxlj %QMsӣ|T 1\9Awf25MTwc*f_{V.O>7m֦< M 6'涹 +0(+Ό~B-v-5)w~7ϞӶmkFT`u5Wfh]֪"ecK b6x3r8&.Brd̵~Sx{ua{3}R6{e4I'kVl^nya[;6Y^3xr|u9zb.D# +Uԁ_UOhX QMx177f-5J P*ytNLnp,'KU m_&Wc˜Näaљr'_'W.<@ع<т!nY#7̜k٢ښ- 58={d/6*Ĺ);3kC^*Te6=0ѥ_q[fe09 02aǯF\lr28n¤d§&:R/OW+?"ՙrۦp^YU{/{ &aJqfQߌR'BH>ow<֖Wm5Zk5BFd>1B`RJIa(SemSی)aʌb>~ղF-߲T)53- TU`5Y}қl<'0=?UVN4Q)Kw@ml0G/$dZ0 +u zb"3tSO쪞l- +#ꛞٔjEjS/O,||=\) %Pp.q& Bb"f10r:oLe: ĕsPEx_Z_,\r3cE +ZVoBX?ʍR`XpT0ʘZHJ;$ektAJ'klO2/Է"2e8 C x2ټlV(;CS|]o H&myl N1ƴX6-wE% +?tGx⇻$w8cCvGx9Dk_{)2 + la7GƠN| T+z6ϒel ?C\Ivd MkwX7kPit>vg)֐AAS9 S+ \@!4-by'C`ٔF +mzGCOk[>]M/C}^]Wx+]B렇s 7VYKTU+z ۊ-sX7f8^,Nl8L%R'jo󡛏C ax7 q?qf~ęOן~kgn~h{rb8oX~3sKoyo`TX BStge_nI$sOu_K/8oY2*N `VASC(J9!ҟ&wzgXc_Y GVAjU~ng̛g cM{'_zg?M974J9@Nm%*U==Ӿ.c鞳{,-ne^VVmk?ܓSy+bgM}y-Z}}Mo3o1c{uiVg|;-XhuJdpmX20>Ц{L08qT$Lf_}]lVþ`&cבȲr{E|2|Ehܲtnߜ,53}lm,]mWbn M!˾3 +Qp[Lfʅ!^''΍cvt0+"LHXLNG8"S?<~i U/ȅt+u]0Y[x^&&Vqf,b1"ī yzpNblD.<.p]/7ȣŗп9OTos&5 +d9|V{"ri8K,foίǿk @εq >o_p +֑y\*$(,1laL{HXl/Ro.|4i$X36!* V4k9\5Eu@qK_!/0{kXeU+3L\AmFu!b(>I& F`WŒ^}ڊD{Zڷ +:eȳ )}* :˦jֽ#սӵȥ4EQUa6k,wFZy>*'Y0tTw6w{j W ( "n7!:y]kJ_a f1\^?\,v8^BJ%z@x#l1XKt +z1jn݉1 d!a%4k?SceV;Ώ$f z' u\>~u-$V&۽LS.ad|EYm9'TT5+42[aiG^B+sA֩09iIl{JV'3ooLGQ.[۲LF?6E3] * 󳮿^c/õ;K%UNx#`_>2tas' +&3dg@^mcaVCG7]+#.l(Nղƥ >ZuC~NkV{Ð|vJ}9X0v-Ds\q62>-!?ԮebcUPWhP{|U*mzqsuFe[O_P3PLEZ[huc۩u>W,bsMrI~{t.`˖]mesG䲆ꔂd \e2MU5g+5oiR+H,L I꒺= W )NO,Ờt51[W +SeKҜԶ51]8s#9*V|\ں4\7MӟPnXƫurYЯBĨnnc/,ə@7r*-s|Κh.s^7^4WxOS7x%ix:-BޗT-wkCL|t<! 0N&]oq!v,Aᆧ*|r(gju-OYh\|CpFpq10 +%ҨTRˣ-0,'9t.F,i[[jZbӠ*!!@ 1&['qhjdl_gCN%+OXx(\/( qڼl9&hl<('J$/i% rO,,BTHZI-:\yO0>R|q3a>ɾ!vC,)v>;xltK"=/2@_pc,F C\pdž+cΑrN&xQͶ*a{ŏAr!]IpPsll3s!vbiKZ-?5yXm^3ZĄe5:q#S}q^}jh+a@\Ոcx6J }Ύ;&vv8QcU?76{|>5|Fbx4&:8u|̵qp_%,)l$|<3^1'ÿ;"b"j"F|Q򨮨QR?DFSs(]acGL0B74% ,u`vzgP's78w8{-u~DsQi;p]%mMs[QGu\ +MRZ϶SRp|rЭo󷾡#Ւ_B(C&iz>"YC(S2MTFD;Hϛ "ӈO#9|I|0{75t]?[9, A?C S5| XW7ȇ&!(E)F{nʭ[+Q1ӷxV%O~X DHqˇ|&;g@P !_f~S$P'")I(@/Cz +(Cd-3dldAVdCPC*D%P~}XjZTzԀ6ԌaUAs\- D0T yHP: =Y(ۂt>"#c + zץr HDdk#Az$ P:%*L N)YJ`_eרt([;85 :L퇿4a^dO.q[߇u)r[ĐOmC?0=`6MS3y;0464(C1 ` 1Un&o#OLǔYFsrz1 qJPTѠ=2,CФҫz'~_CD9~vhh~Xߡ2ɡ1Twtodl:B^e)rzlphl +<&ȡO3\e¶ 4q PACSLf` L^_qU?j7u)~DLr15Y(s,hSݻi'8fe=5ޓ@C5Cc鱾 `5KNrfCN5豏IFv\ F뿓 >p,b4@1iRZ^|F<:5VCOE,rX@E>uĎ!"xl{+WȽ([^ +.Zbh endstream endobj -735 0 obj +857 0 obj << /Type /FontDescriptor /FontName /AAAAAA+NotoSerif -/FontFile2 734 0 R +/FontFile2 856 0 R /FontBBox [-212 -250 1246 1047] /Flags 6 /StemV 0 @@ -49144,7 +55779,7 @@ endobj /XHeight 1098 >> endobj -736 0 obj +858 0 obj << /Length 1286 /Filter [/FlateDecode] >> @@ -49154,44 +55789,55 @@ x JJ특xxx+!ÊwBxbx+ށr;2kΜJYeY7+|x oS7+[ƛețךyޢoV浖 -㭌"RW*4XqC^J[(^1»y]k}YM-x Vz[YEVY_}/7*Y%eӫq+:.7JE/3Y(Y*AW RVJS:(u@cD]a*f)9J)o,#\Z>MU\jPS {HSMj{fkyGm[z*Esa>&ӫj%u; 2^W[®v[2쯲u[P:V̡Յ> MBi2 .Ħԇ!dk`=o qWޕwdJF(L164U)x0E~Z?=/ί~:o?$O endstream endobj -737 0 obj -[259 1000 1000 1000 1000 1000 1000 1000 346 346 1000 1000 250 310 250 288 559 559 559 559 559 559 559 559 559 559 286 1000 559 1000 559 1000 1000 705 653 613 727 623 589 713 792 367 356 1000 623 937 763 742 604 1000 655 543 612 716 674 1046 1000 625 1000 1000 1000 1000 1000 458 1000 562 613 492 613 535 369 538 634 319 299 584 310 944 645 577 613 1000 471 451 352 634 579 861 578 564 1000 428 1000 428 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 361 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 259 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000] +859 0 obj +[259 1000 1000 1000 1000 1000 1000 1000 346 346 1000 1000 250 310 250 288 559 559 559 559 559 559 559 559 559 559 286 1000 559 559 559 500 1000 705 653 613 727 623 589 713 792 367 356 1000 623 937 763 742 604 1000 655 543 612 716 674 1046 1000 625 1000 1000 1000 1000 1000 458 1000 562 613 492 613 535 369 538 634 319 299 584 310 944 645 577 613 1000 471 451 352 634 579 861 578 564 1000 428 1000 428 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 361 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 259 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000] endobj -738 0 obj -<< /Length1 11308 -/Length 7514 +860 0 obj +<< /Length1 11528 +/Length 7660 /Filter [/FlateDecode] >> stream -xzy|uWU:,۲$%[-:Ӳ,}EqDZۖlG GHBHp2L:;4C CXN3Li]MgeЉ]W%9>H7:^U$BB4:EP~ Gv)566x掑mƆO \522'nᾈ)6nB,Ht{=\NMr <=BR~j/6fLJwq3@W~p`EEW]$II&Kҥ2ed*UY([.&s%j;| -([?wtbV2^X ;T*GX/+:KL"(6ŦbVE7D3WHf9z~KmG[Lb #Ub8@<Owx; [E`֒[[>Oh-x,}slM?zg=O_[!JyI<>VXH2+%#!,{ҤL1Ws2ʦ.ϑObj"\9_aǮ{5n8k -geV'ҰևIפqe^dO ?, '/`۫5tUSOͼ;~S}JwE(h;v3*,ZU+/#$d:oyj_>7r ܛ-Mw/ZtL»N??{qgsO-ͭ2Ye[˵Ys]5wZ['+v7NmoɵEhR$w0'v+(AcYZlb {!Zr^S.]s -gG#._`s;R/k0G r -]v-4ތ -tU;*dBXV -ϜMכ^ Hӭ _l<\w)zH`NIi2IqIST_4=晓 -_dΞǏsSyFMP$[Jk$N vjb?L8-U\նng>d @\i903cqaQCE}5y\jwE;^~wYY2E*:S>l4iU؉ݦ6[NMit-g%Gҿ{q^!cZvӂ 7eK3\; " k (J 8-1'f!xJz"]0b2{^7sPi=mƚoqk;CxH֢+fj3U+) &^j^fHwOs\k+{t$PFL,.*Vz[{MPKCo}?Ku[%eS'MZq*ǡt %.UH5Oq^B6\ ^@NE*kϒu1ZY\ew-YMqd .BD1"__X/\,s3%`Yn)wM?@̜qoWvl=qWqI8~x~u1sMĮ N=z`XC90ܠ1w!L͖`fVQoJ?y㿵)ݶKzL@GYėm Ѫo3=_=Ѫ[*ЂV&VE$u m6\S[wwdFsWN{sJ(!K}@հgdkHCn_Cڵw]WUlzء+p8uuy֍;.x17x!Šֲ?+r)Ԃ@n.vr٩ѯgRV2_a9r9x -zc߾wnb2tc֩ʉxˈ縅OOM=S/&Ӗcm\M~^|+s0x.alЍٗs_(gwFAސ$Ne))܋JdT.؍ㄘSz#j'RK=ʊ,q*LVe):CtyV:@ !*aQ yB2}ͼfRyq;DAƣw寘}V<>w,OJtE -+ֻ?z.ce_\R[Iֆ\ n}oyss;v{$)^=ȕ"Rg&{\OyxRc'BM!yz).?%x|OSVTjnHXypU{2&P8)ͧDg5UqzFN |𫋿f[xVpODoXcC>Eh@rmn J23}ǥ?q}Ama][Rzk֑{~?2a}'Zf]@HAWNTuQxLvaTVGmr3tEh@` 2!Ea*{Nu-_*o {  v2ܙYqߎ|*Zde6:i[Gɏ^۶@h`tF@g|\ϗfc-3z#Ubg{i~}Է. %?~TBj㑋|p]>:|L]mk)206@~53RyM]0r5W򇟎۬u ÜiPm{lEPG -_SUY֪B=SD-QmOx8+bgxy01Sr<~[oz1g3 -N_cM ʳdA%zj7CG?~?=?˟T*rM+ubl ?tt\XaPBJjeyU֙1&1OHtk\%СdР+9`PoNɻvm]`7Y&/iK6ˍ6ޠpP}eoW2":AJ_hȶy ɩj^jٽ!y\jwL =of3%I]-*~~1kFW͹8˵@fܬ0#WL?rlWXT)в^y縹@/ ̦Db(:'p&^5q"/gcL6aԳA5maZi/r\ ~w:YlT6U<߰.6#TIf[ qsSMҞXw -UI`B' x@X u%8'|zEd:9kM4epǦX[s'H23EB6J>JxY`&9 9R\35ӪQ*3u\|V%`tI$cӒtn*K 0VmW8/G!:8ZX[umnF#W!BZַ&u8 w^8PPxC6lw 1kxbeNOScߛ&C9=\z<[rg%5a6AaBk791\zN0O-bS}w$)AJM>u9nb'Uź`v[8e(yE] ֛f/=;zqO^81yQ-2mZB_%g=:bg$ǘ=ip$4 ծ79Wɝ0Bxi5.1}GٽތҰ[ -f27!Ľ8oU2e0yd] a _,SrRE)UBRmөE7IVlj.ѥ*'sQ*MQ^JOwȄ"K 3]6M^ {.\55 ـ+l=fI#24 5GG*2SԺ\Q[T%JF]j4O)B!q>&C޻C'j}ml3˱icy>Ta!Ϋ VO%~qA4FEx;#37d=yJnar8c8?ʹc܏x~1/R~/$aRsҙ#LޘX)R~Mݚ/6M6+.zϴR86D3dyT GZ8php{\.szQӅqgAA/q CA8!= f86 -=ϞCaxGʹ Tg%ˑډ(N鉋p\qB}[wB~dYត Yk+RPz -;FY0=( Л?pMqBkpq@'4$'(a,)E݀,5--5`k}# Ǘ@ WXO 1na# ZR$G}&R"BdD&sAfTxp#A?6*QTP=j@ 5ԊP;th m@&ԍzP/H[o"%N~H' :(D:\t -BjlK9@O9@ߐs HJ8fALo]4$X߭WΌOhfbx-c  Ui&FF'f4[57`[ /Ͳk6#,ٸ4h+N:aVŎɘs @&gIx,cp -m ;vpbY Nἃ.Q/HGjM NkfG5eS}c,; -\LBCXd0j s؀֑݌#Xc19=Q8*; [oTp:A+jG3\,+fXȦW-}BE>K(\( +xzyxUUŲ-K[e-dYZeyw;8YBHBHB L&yi2 B{0Lz҉]yJrn|:u=ܳ!r N?(CEd?FH[݀1 Gg# 燇z܋g>'ڻmpw-ܿ=33e{xMv]C><$o+pyAbR2 +Q +S$R<=)Y*huK \SbN E(]?#PB>w1rDH6bZmJ-[G!HdmP̪6hJ܈]G7$xbUrq~0TB1ńǝZANHT (6($(W=o=n: -"S_cJIɭ)扈O^H,%,y{tmw=z=s}[!JyiryX9b!SLK X9Ad, fgi#%MDU.#E8 +Z\яrZq%NH` |IAJiqK[zZ*ޞ8_\S?Q[iO89"jc}خg{ߪ m`OﳏheW`wt`@(kV86qj eFH愿}a̕e L-+\w* O8}yGcxhgޕVsLe̊-yOnεm'w׹! @J]5``il5b>!rZU,8USg}H#._`qڒ/9s0[ + ;w߯'c]scuJC3itFӀ2Rte􉯸6Tc yR'q :LR\R$rgo'8sߺ^ Pqnb2OOML͒$bBwEόqrYMZPf b03erzaRcEy\r{cE[/MhO]c:Hب(XgXl7o<JYrad=X=}P%Тu78^gR%s1\^`ui)mf?7is5<"s ȏJ]1'F!xJZ<\0b2='_{(>c`I׃}oLt32Q-eq ׮M;M`.Bfؙ{«3 `dC6E[꼪nwΛ\[w=Cߙ]cpea Vwnaa1i#xE +MjxwJQ/ ђ_jIQg5O$R~BR?{!Zؖ+7x S;p)f,#K1CC~2E,,Ly '>{ȩ1/9Ltq͔HH8Xuj/| +z duF\u"ۢNMDLKì_ޘX/\욞r3E<`^3sM?@\e1.cmcz-!x83!e^:k ;q^}Uu5;79u [G6V} |/׳+KAYӒIaH"t†'r+ƟK:|wk&ʢ>",5$ԒMW@aqV=|KB}9O"j1 ,LrwHx6 g/ K|+9I#'e R^ n 1;ķeˑ mz#ε /L^8}̹p nбgSϞ6M={; +#cc?|{cu&cOظe&_%OJ\?[ʕo Άle`Se Eu`#:T+h4=նٸs87FU-dFRs,?qǰ8R绳]a)D,꩘X'oKt%dJ +o=~)Rm~8Zy ډ*յD#Oء² ui +]olzd̘;;)$wLu>ufcM'q :=56IuVmQZʱlWT6oMAfn3Q-e,v `~l6DfLXBd|VlL$R)Tv%g%z~|_KXY ˳,~oV\dS`{~x#;75fnőŸXЙk}dZ"}[^=v֛ 3Lj\FHfuT-K偊ZC/$IT2W j=vp|.1Qm-zrewTVλysM@;Q$-jB|ezCE7 p4 +}ym<ƐUaJ|ZJWhNϲdؐ]ٴ|ZXqeCUzڙbRFrnf),$z?6N<u% b'c%8 J{H+qde9Jt]9'C2e sX+0 +rRSs +n.N7ΟeMDܾ5&fYÔIX6RX4ëPu>è#dmUxm$buOW,1e +Y*yS-睾L$AJ}.ߺ n:uJ]۾a_\_Qa% +r9/q#]evn ̭:o[n+'-kf_4GvC4L +}Z;_ V=9e?Տ~tk+Gg'ɳ|a/@) 5Լiwz,Zu2 +gE5a6@azؕVCX}(摘_|;90zr%+*U{Jo -3fwIEV%S@!%-Xwb{-y kLd/֮ $ +ua,/3~t(ϰʮ[0eCs;`lq?DfMZT=BWW's&Q!}{Ƭw<<2fl6ἒiP璲U؝[jMy'ʆC/a.}3X"?5Eiܱ8<֖.5cxiXK]w  mwEZY\/Ks*cR];? e&sL ou+y3V^U`{iұ7yXu$dR+W,KKg듹3Njj +y@l'@Zayi1}oCSgj3o"Ľ8/lH +x[3.6?$CrEIBBeѪDO~O?'*T TQ2MV\B g +3`fEFt![ĹNrJ.Fu.CNo+S D5kC9rfr$0=9D5$71⫩*ݩ[l(;cpZza%wF ߙ 6J!Ϊ2{ӕ)}z4ʥizW ?-OJWUVhuhi>\Bɒds1DO\J/Q$$OכWĴJ_ސA$ >%P7ۇ 1num%diS9ۣV=<0Нc RˮЩ'uX\Ad#V+d=L[TlLIƗ?0.~K&yt떱dM6k݁<1qϑg" +g>qRm#}QRD`H[ ^dž0er#M +slQV[߿ڹ;|Ez޸-Kܺw9Ꝋ3GS.v}j9/5q .[-QD#nId7yR ԛ N 4}͵q^Ҽ +޳|; لWBADK?Nڒ%]Ov&G" ~RroGb ѯę|t! lGUpᨁ68XG0l5\ ?Mqup;7z)!'=O|u'G(a9{ &p.N>Q>n1C!#Q0xAq(5~-J v31/W77W!S^-q^c B(. B#>)e-Azd@F r [X5#Թ~T*!VTP=j@ 5Ԋڠ@kPEhZ6.ԍz@z|G/v pQt(NgL D7tP0N'8B)8+N +[tt\$[<cx08^$D~r8]D4Nn8=qz"*"BNEvI@ӓ<'.WqQquP'&O Ϫ|zbb(2ﳩK#uhF6030e߆D4ACh͂8Vy'G #`ŷfػ8-?5MNG5&`jgGH?4 qb|bv$ ꥗F9rcx}pE\ǥfWgF&6[=7 A 5hzr.ěϊQg{c6Y`Ua/ 7NomEvWs|Cu,o+fFճѻ]ږ8 qxE+zg{s#Kqw/c[/Ͳs6,٘h3WL N}!VŶ}@&쬓g0 x,ң|mq[nEbYL⼕g.+Q/HGj͍Lgԥ}p?is@.w&!Fc2zfS +za\n;vd'"ML#13ʦJ+]&Avr3@i+k,+fXLȺ)!򵧥gȹH0g"41? endstream endobj -739 0 obj +861 0 obj << /Type /FontDescriptor /FontName /AAAAAB+NotoSerif-Bold -/FontFile2 738 0 R +/FontFile2 860 0 R /FontBBox [-212 -250 1306 1058] /Flags 6 /StemV 0 @@ -49202,7 +55848,7 @@ endobj /XHeight 1098 >> endobj -740 0 obj +862 0 obj << /Length 1286 /Filter [/FlateDecode] >> @@ -49212,10 +55858,10 @@ x JJ특xxx+!ÊwBxbx+ށr;2kΜJYeY7+|x oS7+[ƛețךyޢoV浖 -㭌"RW*4XqC^J[(^1»y]k}YM-x Vz[YEVY_}/7*Y%eӫq+:.7JE/3Y(Y*AW RVJS:(u@cD]a*f)9J)o,#\Z>MU\jPS {HSMj{fkyGm[z*Esa>&ӫj%u; 2^W[®v[2쯲u[P:V̡Յ> MBi2 .Ħԇ!dk`=o qWޕwdJF(L164U)x0E~Z?=/ί~:o?$O endstream endobj -741 0 obj -[259 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 293 288 559 559 559 559 559 559 559 559 559 559 1000 1000 1000 1000 1000 1000 1000 752 671 667 767 652 621 769 818 400 368 1000 653 952 788 787 638 1000 707 585 652 747 698 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 599 648 526 648 570 407 560 666 352 345 636 352 985 666 612 645 647 522 487 404 666 605 855 645 579 1000 441 1000 441 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000] +863 0 obj +[259 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 293 288 559 559 559 559 559 559 559 559 559 559 1000 1000 1000 559 1000 549 1000 752 671 667 767 652 621 769 818 400 368 1000 653 952 788 787 638 1000 707 585 652 747 698 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 599 648 526 648 570 407 560 666 352 345 636 352 985 666 612 645 647 522 487 404 666 605 855 645 579 1000 441 1000 441 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000] endobj -742 0 obj +864 0 obj << /Length1 5116 /Length 3170 /Filter [/FlateDecode] @@ -49235,10 +55881,10 @@ a :2]^5w,º*Ӌ58mgnk7cB4aD[NaU> endobj -744 0 obj +866 0 obj << /Length 1286 /Filter [/FlateDecode] >> @@ -49259,10 +55905,10 @@ x JJ특xxx+!ÊwBxbx+ށr;2kΜJYeY7+|x oS7+[ƛețךyޢoV浖 -㭌"RW*4XqC^J[(^1»y]k}YM-x Vz[YEVY_}/7*Y%eӫq+:.7JE/3Y(Y*AW RVJS:(u@cD]a*f)9J)o,#\Z>MU\jPS {HSMj{fkyGm[z*Esa>&ӫj%u; 2^W[®v[2쯲u[P:V̡Յ> MBi2 .Ħԇ!dk`=o qWޕwdJF(L164U)x0E~Z?=/ί~:o?$O endstream endobj -745 0 obj +867 0 obj [1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 653 1000 1000 1000 1000 1000 792 1000 1000 1000 1000 1000 1000 1000 620 1000 1000 543 612 1000 674 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 579 1000 486 579 493 1000 1000 599 304 1000 1000 304 895 599 574 577 560 467 463 368 599 1000 1000 1000 527 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000] endobj -746 0 obj +868 0 obj << /Length1 3280 /Length 2112 /Filter [/FlateDecode] @@ -49277,10 +55923,10 @@ x $W"k8 Vi<!N..Ͷ&W+uX:j Z;cO-/UFN6][)%r*ffRT6e|Q!gɝE/iR~L z!RSzd3T2hʱ$5EeM"FJh@|f #DA΄-VQˎAOqXG٧΄Y(YSBF-!c^vua[0CaaE—c]GZD>&Vk}[DR]hߑz?+w_ endstream endobj -747 0 obj +869 0 obj << /Type /FontDescriptor /FontName /AAAAAD+mplus1mn-regular -/FontFile2 746 0 R +/FontFile2 868 0 R /FontBBox [0 -230 1000 860] /Flags 4 /StemV 0 @@ -49291,7 +55937,7 @@ endobj /XHeight 0 >> endobj -748 0 obj +870 0 obj << /Length 1286 /Filter [/FlateDecode] >> @@ -49301,766 +55947,888 @@ x JJ특xxx+!ÊwBxbx+ށr;2kΜJYeY7+|x oS7+[ƛețךyޢoV浖 -㭌"RW*4XqC^J[(^1»y]k}YM-x Vz[YEVY_}/7*Y%eӫq+:.7JE/3Y(Y*AW RVJS:(u@cD]a*f)9J)o,#\Z>MU\jPS {HSMj{fkyGm[z*Esa>&ӫj%u; 2^W[®v[2쯲u[P:V̡Յ> MBi2 .Ħԇ!dk`=o qWޕwdJF(L164U)x0E~Z?=/ί~:o?$O endstream endobj -749 0 obj +871 0 obj [1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 500 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 500 1000 500 1000 500 1000 1000 1000 500 500 1000 500 500 500 500 500 1000 1000 500 500 1000 1000 1000 500 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000] endobj xref -0 750 +0 872 0000000000 65535 f 0000000015 00000 n 0000000264 00000 n 0000000467 00000 n -0000000770 00000 n -0000000821 00000 n -0000000975 00000 n -0000001219 00000 n -0000001397 00000 n -0000001564 00000 n -0000032747 00000 n -0000033525 00000 n -0000066036 00000 n -0000066834 00000 n -0000098936 00000 n -0000099734 00000 n -0000124484 00000 n -0000125138 00000 n -0000127570 00000 n -0000127807 00000 n -0000127850 00000 n -0000127899 00000 n -0000128005 00000 n -0000128178 00000 n -0000128233 00000 n -0000128408 00000 n -0000128452 00000 n -0000140633 00000 n -0000140894 00000 n -0000140937 00000 n -0000140992 00000 n -0000141035 00000 n -0000141207 00000 n -0000141262 00000 n -0000141437 00000 n -0000141493 00000 n -0000141548 00000 n -0000141603 00000 n -0000141659 00000 n -0000141714 00000 n -0000141872 00000 n -0000141927 00000 n -0000141983 00000 n -0000158343 00000 n -0000158617 00000 n -0000158660 00000 n -0000158814 00000 n -0000158869 00000 n -0000159025 00000 n -0000159080 00000 n -0000159136 00000 n -0000159191 00000 n -0000159246 00000 n -0000159301 00000 n -0000159611 00000 n -0000159920 00000 n -0000159975 00000 n -0000160031 00000 n -0000178188 00000 n -0000178469 00000 n -0000178512 00000 n -0000178668 00000 n -0000178723 00000 n -0000178778 00000 n -0000178833 00000 n -0000178987 00000 n -0000179042 00000 n -0000179198 00000 n -0000179254 00000 n -0000179310 00000 n -0000179365 00000 n -0000179420 00000 n -0000194743 00000 n -0000194993 00000 n -0000195036 00000 n -0000195091 00000 n -0000195146 00000 n -0000195201 00000 n -0000195257 00000 n -0000195312 00000 n -0000195368 00000 n -0000195424 00000 n -0000195480 00000 n -0000196149 00000 n -0000214016 00000 n -0000214283 00000 n -0000214327 00000 n -0000214382 00000 n -0000214695 00000 n -0000214750 00000 n -0000214912 00000 n -0000214968 00000 n -0000215023 00000 n -0000215078 00000 n -0000215133 00000 n -0000215189 00000 n -0000215245 00000 n -0000231409 00000 n -0000231684 00000 n -0000231727 00000 n -0000231888 00000 n -0000231944 00000 n -0000232000 00000 n -0000232056 00000 n -0000232113 00000 n -0000232275 00000 n -0000232331 00000 n -0000232388 00000 n -0000232445 00000 n -0000232502 00000 n -0000251626 00000 n -0000251912 00000 n -0000252064 00000 n -0000252121 00000 n -0000252178 00000 n -0000252235 00000 n -0000252293 00000 n -0000252715 00000 n -0000252878 00000 n -0000252935 00000 n -0000252993 00000 n -0000253051 00000 n -0000253109 00000 n -0000253272 00000 n -0000269554 00000 n -0000269824 00000 n -0000269869 00000 n -0000269926 00000 n -0000269983 00000 n -0000270040 00000 n -0000270097 00000 n -0000270397 00000 n -0000270454 00000 n -0000270512 00000 n -0000270570 00000 n -0000270734 00000 n -0000270791 00000 n -0000290488 00000 n -0000290782 00000 n -0000290827 00000 n -0000290873 00000 n -0000291028 00000 n -0000291085 00000 n -0000291248 00000 n -0000291305 00000 n -0000291362 00000 n -0000291420 00000 n -0000291477 00000 n -0000291642 00000 n -0000291699 00000 n -0000291876 00000 n -0000307386 00000 n -0000307664 00000 n -0000307709 00000 n -0000307766 00000 n -0000307823 00000 n -0000307880 00000 n -0000308038 00000 n -0000308095 00000 n -0000308258 00000 n -0000308316 00000 n -0000308779 00000 n -0000308836 00000 n -0000308894 00000 n -0000308951 00000 n -0000325425 00000 n -0000325703 00000 n -0000325748 00000 n -0000325910 00000 n -0000325967 00000 n -0000326024 00000 n -0000326081 00000 n -0000326242 00000 n -0000326299 00000 n -0000326356 00000 n -0000326414 00000 n -0000326471 00000 n -0000326529 00000 n -0000344640 00000 n -0000344918 00000 n -0000344963 00000 n -0000345009 00000 n -0000345066 00000 n -0000345225 00000 n -0000345282 00000 n -0000345340 00000 n -0000345397 00000 n -0000345455 00000 n -0000345857 00000 n -0000346018 00000 n -0000346076 00000 n -0000346134 00000 n -0000362705 00000 n -0000362983 00000 n -0000363028 00000 n -0000363074 00000 n -0000363244 00000 n -0000363301 00000 n -0000363653 00000 n -0000363710 00000 n -0000363767 00000 n -0000363824 00000 n -0000363882 00000 n -0000363939 00000 n -0000363996 00000 n -0000364167 00000 n -0000364225 00000 n -0000380362 00000 n -0000380619 00000 n -0000380664 00000 n -0000380721 00000 n -0000380767 00000 n -0000380944 00000 n -0000381002 00000 n -0000401355 00000 n -0000401620 00000 n -0000401784 00000 n -0000401842 00000 n -0000402025 00000 n -0000402082 00000 n -0000424068 00000 n -0000424357 00000 n -0000424414 00000 n -0000424582 00000 n -0000424749 00000 n -0000424919 00000 n -0000425091 00000 n -0000425251 00000 n -0000446818 00000 n -0000447091 00000 n -0000447148 00000 n -0000447317 00000 n -0000447486 00000 n -0000447655 00000 n -0000468873 00000 n -0000469138 00000 n -0000469289 00000 n -0000469428 00000 n -0000469486 00000 n -0000491197 00000 n -0000491486 00000 n -0000491654 00000 n -0000491801 00000 n -0000491950 00000 n -0000492101 00000 n -0000492240 00000 n -0000492298 00000 n -0000492848 00000 n -0000515593 00000 n -0000515882 00000 n -0000516050 00000 n -0000516197 00000 n -0000516346 00000 n -0000516497 00000 n -0000516636 00000 n -0000540028 00000 n -0000540333 00000 n -0000540390 00000 n -0000540560 00000 n -0000540731 00000 n -0000540899 00000 n -0000541072 00000 n -0000541251 00000 n -0000541413 00000 n -0000541591 00000 n -0000562286 00000 n -0000562551 00000 n -0000562608 00000 n -0000562777 00000 n -0000562966 00000 n -0000563024 00000 n -0000584729 00000 n -0000585002 00000 n -0000585165 00000 n -0000585222 00000 n -0000585409 00000 n -0000585571 00000 n -0000606379 00000 n -0000606660 00000 n -0000606717 00000 n -0000606892 00000 n -0000607064 00000 n -0000607122 00000 n -0000607292 00000 n -0000607461 00000 n -0000627744 00000 n -0000628033 00000 n -0000628208 00000 n -0000628372 00000 n -0000628536 00000 n -0000628594 00000 n -0000628652 00000 n -0000628823 00000 n -0000628994 00000 n -0000650522 00000 n -0000650803 00000 n -0000650946 00000 n -0000651121 00000 n -0000651285 00000 n -0000651331 00000 n -0000651502 00000 n -0000662703 00000 n -0000662976 00000 n -0000663131 00000 n -0000663188 00000 n -0000663337 00000 n -0000663486 00000 n -0000663630 00000 n -0000663775 00000 n -0000663940 00000 n -0000664096 00000 n -0000664254 00000 n -0000664401 00000 n -0000664563 00000 n -0000664705 00000 n -0000664870 00000 n -0000665014 00000 n -0000665171 00000 n -0000665317 00000 n -0000665473 00000 n -0000665618 00000 n -0000665773 00000 n -0000665917 00000 n -0000666076 00000 n -0000666224 00000 n -0000666382 00000 n -0000666529 00000 n -0000666684 00000 n -0000666829 00000 n -0000666989 00000 n -0000667138 00000 n -0000667296 00000 n -0000667443 00000 n -0000667598 00000 n -0000667743 00000 n -0000667912 00000 n -0000668060 00000 n -0000668221 00000 n -0000668371 00000 n -0000668527 00000 n -0000668673 00000 n -0000668831 00000 n -0000668978 00000 n -0000669169 00000 n -0000669339 00000 n -0000669499 00000 n -0000669648 00000 n -0000669808 00000 n -0000669957 00000 n -0000670148 00000 n -0000670318 00000 n -0000670489 00000 n -0000670639 00000 n -0000670798 00000 n -0000670946 00000 n -0000671106 00000 n -0000671255 00000 n -0000671426 00000 n -0000671587 00000 n -0000671757 00000 n -0000671906 00000 n -0000672065 00000 n -0000672213 00000 n -0000672370 00000 n -0000672517 00000 n -0000672677 00000 n -0000672826 00000 n -0000672993 00000 n -0000673139 00000 n -0000673311 00000 n -0000673462 00000 n -0000673623 00000 n -0000673773 00000 n -0000673932 00000 n -0000674080 00000 n -0000674272 00000 n -0000674453 00000 n -0000674623 00000 n -0000674772 00000 n -0000674919 00000 n -0000675055 00000 n -0000675202 00000 n -0000675338 00000 n -0000675492 00000 n -0000675625 00000 n -0000675784 00000 n -0000675922 00000 n -0000676081 00000 n -0000676230 00000 n -0000676393 00000 n -0000676537 00000 n -0000676707 00000 n -0000676856 00000 n -0000677015 00000 n -0000677164 00000 n -0000677333 00000 n -0000677481 00000 n -0000677636 00000 n -0000677780 00000 n -0000677939 00000 n -0000678088 00000 n -0000678257 00000 n -0000678405 00000 n -0000678559 00000 n -0000678703 00000 n -0000678873 00000 n -0000679022 00000 n -0000679182 00000 n -0000679332 00000 n -0000679502 00000 n -0000679651 00000 n -0000679807 00000 n -0000679952 00000 n -0000680122 00000 n -0000680271 00000 n -0000680430 00000 n -0000680579 00000 n -0000680749 00000 n -0000680898 00000 n -0000681065 00000 n -0000681211 00000 n -0000681383 00000 n -0000681534 00000 n -0000681693 00000 n -0000681842 00000 n -0000682011 00000 n -0000682159 00000 n -0000682314 00000 n -0000682459 00000 n -0000682631 00000 n -0000682782 00000 n -0000682942 00000 n -0000683092 00000 n -0000683261 00000 n -0000683409 00000 n -0000683576 00000 n -0000683722 00000 n -0000683895 00000 n -0000684047 00000 n -0000684208 00000 n -0000684359 00000 n -0000684530 00000 n -0000684680 00000 n -0000684836 00000 n -0000684982 00000 n -0000685155 00000 n -0000685307 00000 n -0000685468 00000 n -0000685619 00000 n -0000685789 00000 n -0000685938 00000 n -0000686099 00000 n -0000686241 00000 n -0000686412 00000 n -0000686562 00000 n -0000686709 00000 n -0000686846 00000 n -0000687004 00000 n -0000687141 00000 n -0000687293 00000 n -0000687425 00000 n -0000687585 00000 n -0000687723 00000 n -0000687882 00000 n -0000688030 00000 n -0000688188 00000 n -0000688334 00000 n -0000688503 00000 n -0000688650 00000 n -0000688815 00000 n -0000688958 00000 n -0000689129 00000 n -0000689278 00000 n -0000689437 00000 n -0000689585 00000 n -0000689743 00000 n -0000689889 00000 n -0000690058 00000 n -0000690205 00000 n -0000690367 00000 n -0000690510 00000 n -0000690681 00000 n -0000690830 00000 n -0000690990 00000 n -0000691139 00000 n -0000691298 00000 n -0000691445 00000 n -0000691615 00000 n -0000691763 00000 n -0000691918 00000 n -0000692061 00000 n -0000692232 00000 n -0000692381 00000 n -0000692541 00000 n -0000692690 00000 n -0000692861 00000 n -0000693010 00000 n -0000693174 00000 n -0000693318 00000 n -0000693477 00000 n -0000693625 00000 n -0000693794 00000 n -0000693941 00000 n -0000694143 00000 n -0000694325 00000 n -0000694497 00000 n -0000694647 00000 n -0000694807 00000 n -0000694956 00000 n -0000695125 00000 n -0000695272 00000 n -0000695472 00000 n -0000695650 00000 n -0000695823 00000 n -0000695974 00000 n -0000696135 00000 n -0000696285 00000 n -0000696456 00000 n -0000696605 00000 n -0000696772 00000 n -0000696917 00000 n -0000697090 00000 n -0000697241 00000 n -0000697402 00000 n -0000697552 00000 n -0000697711 00000 n -0000697858 00000 n -0000698025 00000 n -0000698170 00000 n -0000698325 00000 n -0000698468 00000 n -0000698615 00000 n -0000698751 00000 n -0000698909 00000 n -0000699045 00000 n -0000699203 00000 n -0000699350 00000 n -0000699498 00000 n -0000699635 00000 n -0000699804 00000 n -0000699951 00000 n -0000700138 00000 n -0000700303 00000 n -0000700474 00000 n -0000700623 00000 n -0000700782 00000 n -0000700930 00000 n -0000701099 00000 n -0000701246 00000 n -0000701415 00000 n -0000701562 00000 n -0000701735 00000 n -0000701886 00000 n -0000702044 00000 n -0000702190 00000 n -0000702355 00000 n -0000702508 00000 n -0000702672 00000 n -0000702825 00000 n -0000703006 00000 n -0000703165 00000 n -0000703333 00000 n -0000703479 00000 n -0000703646 00000 n -0000703791 00000 n -0000703959 00000 n -0000704105 00000 n -0000704265 00000 n -0000704414 00000 n -0000704577 00000 n -0000704718 00000 n -0000704883 00000 n -0000705037 00000 n -0000705203 00000 n -0000705347 00000 n -0000705517 00000 n -0000705665 00000 n -0000705849 00000 n -0000706013 00000 n -0000706190 00000 n -0000706345 00000 n -0000706510 00000 n -0000706653 00000 n -0000706829 00000 n -0000706983 00000 n -0000707152 00000 n -0000707299 00000 n -0000707466 00000 n -0000707611 00000 n -0000707896 00000 n -0000707975 00000 n -0000708139 00000 n -0000708330 00000 n -0000708558 00000 n -0000708775 00000 n -0000708945 00000 n -0000709163 00000 n -0000709409 00000 n -0000709582 00000 n -0000709763 00000 n -0000710028 00000 n -0000710213 00000 n -0000710394 00000 n -0000710651 00000 n -0000710836 00000 n -0000711017 00000 n -0000711274 00000 n -0000711451 00000 n -0000711650 00000 n -0000711845 00000 n -0000712027 00000 n -0000712347 00000 n -0000712532 00000 n -0000712713 00000 n -0000713037 00000 n -0000713227 00000 n -0000713414 00000 n -0000713595 00000 n -0000713879 00000 n -0000714068 00000 n -0000714267 00000 n -0000714463 00000 n -0000714645 00000 n -0000714941 00000 n -0000715130 00000 n -0000715317 00000 n -0000715498 00000 n -0000715878 00000 n -0000716067 00000 n -0000716267 00000 n -0000716448 00000 n -0000716757 00000 n -0000716951 00000 n -0000717141 00000 n -0000717438 00000 n -0000717631 00000 n -0000717834 00000 n -0000718020 00000 n -0000718304 00000 n -0000718493 00000 n -0000718678 00000 n -0000718999 00000 n -0000719193 00000 n -0000719384 00000 n -0000719569 00000 n -0000719953 00000 n -0000720146 00000 n -0000720350 00000 n -0000720535 00000 n -0000720848 00000 n -0000721042 00000 n -0000721246 00000 n -0000721432 00000 n -0000721733 00000 n -0000721927 00000 n -0000722132 00000 n -0000722318 00000 n -0000722628 00000 n -0000722823 00000 n -0000723028 00000 n -0000723202 00000 n -0000723555 00000 n -0000723749 00000 n -0000723953 00000 n -0000724139 00000 n -0000724456 00000 n -0000724651 00000 n -0000724856 00000 n -0000725042 00000 n -0000725407 00000 n -0000725590 00000 n -0000725794 00000 n -0000725994 00000 n -0000726180 00000 n -0000726566 00000 n -0000726760 00000 n -0000726964 00000 n -0000727152 00000 n -0000727338 00000 n -0000727727 00000 n -0000727921 00000 n -0000728125 00000 n -0000728326 00000 n -0000728512 00000 n -0000728794 00000 n -0000728988 00000 n -0000729180 00000 n -0000729366 00000 n -0000729655 00000 n -0000729845 00000 n -0000730031 00000 n -0000730412 00000 n -0000730607 00000 n -0000730811 00000 n -0000730998 00000 n -0000731347 00000 n -0000731530 00000 n -0000731734 00000 n -0000731920 00000 n -0000732282 00000 n -0000732476 00000 n -0000732681 00000 n -0000732882 00000 n -0000733069 00000 n -0000733314 00000 n -0000733493 00000 n -0000733679 00000 n -0000733960 00000 n -0000734150 00000 n -0000734336 00000 n -0000734640 00000 n -0000734834 00000 n -0000735038 00000 n -0000735225 00000 n -0000735453 00000 n -0000735655 00000 n -0000735840 00000 n -0000736065 00000 n -0000736290 00000 n -0000736534 00000 n -0000736726 00000 n -0000736914 00000 n -0000737111 00000 n -0000737320 00000 n -0000737496 00000 n -0000737720 00000 n -0000737909 00000 n -0000738117 00000 n -0000738389 00000 n -0000738622 00000 n -0000738807 00000 n -0000739036 00000 n -0000739229 00000 n -0000739403 00000 n -0000739958 00000 n -0000747826 00000 n -0000748042 00000 n -0000749405 00000 n -0000750474 00000 n -0000758080 00000 n -0000758301 00000 n -0000759664 00000 n -0000760743 00000 n -0000764004 00000 n -0000764230 00000 n -0000765593 00000 n -0000766709 00000 n -0000768912 00000 n -0000769126 00000 n -0000770489 00000 n +0000000809 00000 n +0000000860 00000 n +0000001014 00000 n +0000001258 00000 n +0000001436 00000 n +0000001603 00000 n +0000032843 00000 n +0000033621 00000 n +0000065665 00000 n +0000066463 00000 n +0000098603 00000 n +0000099401 00000 n +0000131440 00000 n +0000132238 00000 n +0000146775 00000 n +0000147237 00000 n +0000149669 00000 n +0000149906 00000 n +0000149949 00000 n +0000149998 00000 n +0000150128 00000 n +0000150301 00000 n +0000150356 00000 n +0000150531 00000 n +0000150575 00000 n +0000162780 00000 n +0000163041 00000 n +0000163084 00000 n +0000163139 00000 n +0000163182 00000 n +0000163354 00000 n +0000163409 00000 n +0000163584 00000 n +0000163640 00000 n +0000163695 00000 n +0000163750 00000 n +0000163806 00000 n +0000163861 00000 n +0000164026 00000 n +0000164081 00000 n +0000164137 00000 n +0000180612 00000 n +0000180893 00000 n +0000180936 00000 n +0000181092 00000 n +0000181147 00000 n +0000181202 00000 n +0000181257 00000 n +0000181412 00000 n +0000181467 00000 n +0000181625 00000 n +0000181680 00000 n +0000181735 00000 n +0000182037 00000 n +0000182347 00000 n +0000182403 00000 n +0000182459 00000 n +0000200744 00000 n +0000201025 00000 n +0000201068 00000 n +0000201123 00000 n +0000201178 00000 n +0000201233 00000 n +0000201390 00000 n +0000201445 00000 n +0000201500 00000 n +0000201556 00000 n +0000201712 00000 n +0000201768 00000 n +0000201926 00000 n +0000201982 00000 n +0000217710 00000 n +0000217960 00000 n +0000218003 00000 n +0000218058 00000 n +0000218113 00000 n +0000218168 00000 n +0000218223 00000 n +0000218279 00000 n +0000218335 00000 n +0000218390 00000 n +0000218672 00000 n +0000218728 00000 n +0000234831 00000 n +0000235098 00000 n +0000235141 00000 n +0000235196 00000 n +0000235514 00000 n +0000235570 00000 n +0000235731 00000 n +0000235786 00000 n +0000235842 00000 n +0000235898 00000 n +0000235954 00000 n +0000253850 00000 n +0000254125 00000 n +0000254276 00000 n +0000254332 00000 n +0000254388 00000 n +0000254444 00000 n +0000254500 00000 n +0000254556 00000 n +0000254612 00000 n +0000254668 00000 n +0000254725 00000 n +0000254887 00000 n +0000268321 00000 n +0000268591 00000 n +0000268636 00000 n +0000268693 00000 n +0000268750 00000 n +0000268807 00000 n +0000268865 00000 n +0000268922 00000 n +0000268980 00000 n +0000269363 00000 n +0000269525 00000 n +0000269583 00000 n +0000269641 00000 n +0000269699 00000 n +0000288875 00000 n +0000289153 00000 n +0000289210 00000 n +0000289372 00000 n +0000289429 00000 n +0000289486 00000 n +0000289543 00000 n +0000289601 00000 n +0000289765 00000 n +0000289823 00000 n +0000305985 00000 n +0000306263 00000 n +0000306308 00000 n +0000306354 00000 n +0000306411 00000 n +0000306573 00000 n +0000306630 00000 n +0000306688 00000 n +0000306745 00000 n +0000306802 00000 n +0000306964 00000 n +0000307022 00000 n +0000307080 00000 n +0000307138 00000 n +0000325966 00000 n +0000326236 00000 n +0000326293 00000 n +0000326455 00000 n +0000326512 00000 n +0000326812 00000 n +0000326869 00000 n +0000326927 00000 n +0000327251 00000 n +0000327309 00000 n +0000327366 00000 n +0000327424 00000 n +0000327482 00000 n +0000342682 00000 n +0000342968 00000 n +0000343013 00000 n +0000343175 00000 n +0000343232 00000 n +0000343289 00000 n +0000343346 00000 n +0000343501 00000 n +0000343558 00000 n +0000343720 00000 n +0000343778 00000 n +0000343836 00000 n +0000343893 00000 n +0000343951 00000 n +0000363763 00000 n +0000364057 00000 n +0000364200 00000 n +0000364257 00000 n +0000364413 00000 n +0000364459 00000 n +0000364517 00000 n +0000364575 00000 n +0000364632 00000 n +0000364790 00000 n +0000364847 00000 n +0000365011 00000 n +0000365069 00000 n +0000381476 00000 n +0000381754 00000 n +0000381799 00000 n +0000381856 00000 n +0000381913 00000 n +0000381970 00000 n +0000382516 00000 n +0000382679 00000 n +0000382736 00000 n +0000382793 00000 n +0000382851 00000 n +0000382909 00000 n +0000383070 00000 n +0000383127 00000 n +0000398088 00000 n +0000398358 00000 n +0000398403 00000 n +0000398460 00000 n +0000398517 00000 n +0000398676 00000 n +0000398733 00000 n +0000398791 00000 n +0000399464 00000 n +0000399522 00000 n +0000399579 00000 n +0000399637 00000 n +0000417207 00000 n +0000417477 00000 n +0000417522 00000 n +0000417579 00000 n +0000417636 00000 n +0000417796 00000 n +0000417854 00000 n +0000418275 00000 n +0000418332 00000 n +0000418389 00000 n +0000432206 00000 n +0000432471 00000 n +0000432516 00000 n +0000432675 00000 n +0000432732 00000 n +0000432789 00000 n +0000432846 00000 n +0000432903 00000 n +0000433074 00000 n +0000433132 00000 n +0000433189 00000 n +0000433247 00000 n +0000433305 00000 n +0000433362 00000 n +0000433419 00000 n +0000433766 00000 n +0000449117 00000 n +0000449387 00000 n +0000449444 00000 n +0000449614 00000 n +0000449671 00000 n +0000449728 00000 n +0000449786 00000 n +0000449843 00000 n +0000449901 00000 n +0000467101 00000 n +0000467358 00000 n +0000467403 00000 n +0000467460 00000 n +0000467506 00000 n +0000467564 00000 n +0000467742 00000 n +0000487648 00000 n +0000487905 00000 n +0000487951 00000 n +0000488105 00000 n +0000488163 00000 n +0000488469 00000 n +0000509017 00000 n +0000509290 00000 n +0000509451 00000 n +0000509508 00000 n +0000509565 00000 n +0000509735 00000 n +0000509902 00000 n +0000531305 00000 n +0000531578 00000 n +0000531727 00000 n +0000531898 00000 n +0000532057 00000 n +0000532114 00000 n +0000553945 00000 n +0000554234 00000 n +0000554402 00000 n +0000554549 00000 n +0000554698 00000 n +0000554849 00000 n +0000555009 00000 n +0000555067 00000 n +0000578027 00000 n +0000578316 00000 n +0000578485 00000 n +0000578653 00000 n +0000578823 00000 n +0000578995 00000 n +0000579155 00000 n +0000600804 00000 n +0000601093 00000 n +0000601138 00000 n +0000601297 00000 n +0000601455 00000 n +0000601615 00000 n +0000601766 00000 n +0000601916 00000 n +0000624714 00000 n +0000625003 00000 n +0000625060 00000 n +0000625230 00000 n +0000625401 00000 n +0000625568 00000 n +0000625740 00000 n +0000625915 00000 n +0000647594 00000 n +0000647867 00000 n +0000648007 00000 n +0000648183 00000 n +0000648241 00000 n +0000648412 00000 n +0000669454 00000 n +0000669727 00000 n +0000669894 00000 n +0000669951 00000 n +0000670116 00000 n +0000670173 00000 n +0000670362 00000 n +0000690893 00000 n +0000691174 00000 n +0000691314 00000 n +0000691372 00000 n +0000691804 00000 n +0000691970 00000 n +0000692132 00000 n +0000692178 00000 n +0000692349 00000 n +0000712445 00000 n +0000712734 00000 n +0000712883 00000 n +0000713038 00000 n +0000713182 00000 n +0000713345 00000 n +0000713402 00000 n +0000713459 00000 n +0000713628 00000 n +0000735022 00000 n +0000735303 00000 n +0000735452 00000 n +0000735595 00000 n +0000735770 00000 n +0000735914 00000 n +0000735959 00000 n +0000751983 00000 n +0000752264 00000 n +0000752413 00000 n +0000752568 00000 n +0000752626 00000 n +0000752796 00000 n +0000752966 00000 n +0000753110 00000 n +0000753255 00000 n +0000753420 00000 n +0000753576 00000 n +0000753734 00000 n +0000753881 00000 n +0000754043 00000 n +0000754185 00000 n +0000754350 00000 n +0000754494 00000 n +0000754651 00000 n +0000754797 00000 n +0000754953 00000 n +0000755098 00000 n +0000755253 00000 n +0000755397 00000 n +0000755556 00000 n +0000755704 00000 n +0000755862 00000 n +0000756009 00000 n +0000756175 00000 n +0000756320 00000 n +0000756480 00000 n +0000756629 00000 n +0000756787 00000 n +0000756934 00000 n +0000757089 00000 n +0000757234 00000 n +0000757394 00000 n +0000757543 00000 n +0000757703 00000 n +0000757852 00000 n +0000758007 00000 n +0000758152 00000 n +0000758320 00000 n +0000758467 00000 n +0000758626 00000 n +0000758774 00000 n +0000758930 00000 n +0000759076 00000 n +0000759236 00000 n +0000759385 00000 n +0000759577 00000 n +0000759748 00000 n +0000759908 00000 n +0000760057 00000 n +0000760215 00000 n +0000760362 00000 n +0000760554 00000 n +0000760725 00000 n +0000760897 00000 n +0000761048 00000 n +0000761207 00000 n +0000761355 00000 n +0000761513 00000 n +0000761660 00000 n +0000761829 00000 n +0000761988 00000 n +0000762160 00000 n +0000762311 00000 n +0000762472 00000 n +0000762622 00000 n +0000762781 00000 n +0000762930 00000 n +0000763090 00000 n +0000763239 00000 n +0000763405 00000 n +0000763550 00000 n +0000763720 00000 n +0000763869 00000 n +0000764028 00000 n +0000764176 00000 n +0000764322 00000 n +0000764457 00000 n +0000764648 00000 n +0000764818 00000 n +0000764977 00000 n +0000765115 00000 n +0000765263 00000 n +0000765401 00000 n +0000765570 00000 n +0000765718 00000 n +0000765882 00000 n +0000766026 00000 n +0000766196 00000 n +0000766345 00000 n +0000766504 00000 n +0000766653 00000 n +0000766822 00000 n +0000766970 00000 n +0000767133 00000 n +0000767277 00000 n +0000767447 00000 n +0000767596 00000 n +0000767755 00000 n +0000767904 00000 n +0000768062 00000 n +0000768209 00000 n +0000768378 00000 n +0000768526 00000 n +0000768692 00000 n +0000768837 00000 n +0000769008 00000 n +0000769158 00000 n +0000769318 00000 n +0000769468 00000 n +0000769630 00000 n +0000769773 00000 n +0000769943 00000 n +0000770092 00000 n +0000770252 00000 n +0000770402 00000 n +0000770573 00000 n +0000770723 00000 n +0000770878 00000 n +0000771022 00000 n +0000771181 00000 n +0000771330 00000 n +0000771499 00000 n +0000771647 00000 n +0000771802 00000 n +0000771947 00000 n +0000772119 00000 n +0000772270 00000 n +0000772430 00000 n +0000772580 00000 n +0000772749 00000 n +0000772897 00000 n +0000773053 00000 n +0000773198 00000 n +0000773371 00000 n +0000773523 00000 n +0000773684 00000 n +0000773835 00000 n +0000774006 00000 n +0000774156 00000 n +0000774322 00000 n +0000774468 00000 n +0000774641 00000 n +0000774793 00000 n +0000774954 00000 n +0000775105 00000 n +0000775275 00000 n +0000775424 00000 n +0000775587 00000 n +0000775728 00000 n +0000775899 00000 n +0000776048 00000 n +0000776195 00000 n +0000776331 00000 n +0000776489 00000 n +0000776625 00000 n +0000776768 00000 n +0000776900 00000 n +0000777060 00000 n +0000777198 00000 n +0000777357 00000 n +0000777505 00000 n +0000777674 00000 n +0000777821 00000 n +0000777986 00000 n +0000778129 00000 n +0000778300 00000 n +0000778449 00000 n +0000778608 00000 n +0000778756 00000 n +0000778925 00000 n +0000779072 00000 n +0000779225 00000 n +0000779367 00000 n +0000779538 00000 n +0000779687 00000 n +0000779846 00000 n +0000779994 00000 n +0000780163 00000 n +0000780310 00000 n +0000780474 00000 n +0000780618 00000 n +0000780790 00000 n +0000780940 00000 n +0000781100 00000 n +0000781249 00000 n +0000781418 00000 n +0000781565 00000 n +0000781727 00000 n +0000781869 00000 n +0000782041 00000 n +0000782191 00000 n +0000782352 00000 n +0000782502 00000 n +0000782661 00000 n +0000782808 00000 n +0000782977 00000 n +0000783124 00000 n +0000783288 00000 n +0000783430 00000 n +0000783602 00000 n +0000783752 00000 n +0000783912 00000 n +0000784061 00000 n +0000784220 00000 n +0000784367 00000 n +0000784536 00000 n +0000784683 00000 n +0000784846 00000 n +0000784990 00000 n +0000785163 00000 n +0000785314 00000 n +0000785475 00000 n +0000785625 00000 n +0000785785 00000 n +0000785933 00000 n +0000786104 00000 n +0000786253 00000 n +0000786409 00000 n +0000786553 00000 n +0000786726 00000 n +0000786877 00000 n +0000787037 00000 n +0000787186 00000 n +0000787353 00000 n +0000787498 00000 n +0000787660 00000 n +0000787803 00000 n +0000787962 00000 n +0000788099 00000 n +0000788247 00000 n +0000788384 00000 n +0000788531 00000 n +0000788666 00000 n +0000788824 00000 n +0000788960 00000 n +0000789123 00000 n +0000789266 00000 n +0000789425 00000 n +0000789573 00000 n +0000789742 00000 n +0000789889 00000 n +0000790111 00000 n +0000790311 00000 n +0000790482 00000 n +0000790631 00000 n +0000790790 00000 n +0000790938 00000 n +0000791107 00000 n +0000791254 00000 n +0000791471 00000 n +0000791666 00000 n +0000791837 00000 n +0000791986 00000 n +0000792145 00000 n +0000792293 00000 n +0000792463 00000 n +0000792611 00000 n +0000792777 00000 n +0000792921 00000 n +0000793093 00000 n +0000793243 00000 n +0000793402 00000 n +0000793550 00000 n +0000793708 00000 n +0000793854 00000 n +0000794024 00000 n +0000794172 00000 n +0000794329 00000 n +0000794474 00000 n +0000794634 00000 n +0000794783 00000 n +0000794952 00000 n +0000795099 00000 n +0000795268 00000 n +0000795426 00000 n +0000795586 00000 n +0000795735 00000 n +0000795905 00000 n +0000796053 00000 n +0000796241 00000 n +0000796407 00000 n +0000796578 00000 n +0000796727 00000 n +0000796888 00000 n +0000797038 00000 n +0000797209 00000 n +0000797358 00000 n +0000797565 00000 n +0000797750 00000 n +0000797923 00000 n +0000798074 00000 n +0000798235 00000 n +0000798385 00000 n +0000798556 00000 n +0000798705 00000 n +0000798876 00000 n +0000799025 00000 n +0000799200 00000 n +0000799353 00000 n +0000799524 00000 n +0000799673 00000 n +0000799831 00000 n +0000799977 00000 n +0000800118 00000 n +0000800259 00000 n +0000800412 00000 n +0000800554 00000 n +0000800723 00000 n +0000800870 00000 n +0000801026 00000 n +0000801160 00000 n +0000801326 00000 n +0000801470 00000 n +0000801638 00000 n +0000801784 00000 n +0000801955 00000 n +0000802104 00000 n +0000802266 00000 n +0000802406 00000 n +0000802569 00000 n +0000802721 00000 n +0000802886 00000 n +0000803029 00000 n +0000803199 00000 n +0000803347 00000 n +0000803531 00000 n +0000803695 00000 n +0000803871 00000 n +0000804025 00000 n +0000804189 00000 n +0000804331 00000 n +0000804507 00000 n +0000804661 00000 n +0000804831 00000 n +0000804979 00000 n +0000805145 00000 n +0000805289 00000 n +0000805574 00000 n +0000805653 00000 n +0000805817 00000 n +0000806008 00000 n +0000806236 00000 n +0000806453 00000 n +0000806623 00000 n +0000806841 00000 n +0000807087 00000 n +0000807260 00000 n +0000807441 00000 n +0000807706 00000 n +0000807891 00000 n +0000808072 00000 n +0000808353 00000 n +0000808538 00000 n +0000808719 00000 n +0000808976 00000 n +0000809149 00000 n +0000809330 00000 n +0000809586 00000 n +0000809775 00000 n +0000809974 00000 n +0000810169 00000 n +0000810350 00000 n +0000810671 00000 n +0000810857 00000 n +0000811026 00000 n +0000811350 00000 n +0000811539 00000 n +0000811738 00000 n +0000811919 00000 n +0000812203 00000 n +0000812393 00000 n +0000812593 00000 n +0000812789 00000 n +0000812958 00000 n +0000813254 00000 n +0000813443 00000 n +0000813642 00000 n +0000813823 00000 n +0000814208 00000 n +0000814402 00000 n +0000814605 00000 n +0000814791 00000 n +0000815303 00000 n +0000815496 00000 n +0000815700 00000 n +0000815885 00000 n +0000816310 00000 n +0000816504 00000 n +0000816708 00000 n +0000816907 00000 n +0000817092 00000 n +0000817400 00000 n +0000817593 00000 n +0000817782 00000 n +0000818090 00000 n +0000818283 00000 n +0000818487 00000 n +0000818661 00000 n +0000818946 00000 n +0000819136 00000 n +0000819322 00000 n +0000819644 00000 n +0000819838 00000 n +0000820043 00000 n +0000820230 00000 n +0000820616 00000 n +0000820811 00000 n +0000821015 00000 n +0000821201 00000 n +0000821738 00000 n +0000821932 00000 n +0000822137 00000 n +0000822324 00000 n +0000822625 00000 n +0000822808 00000 n +0000823012 00000 n +0000823198 00000 n +0000823500 00000 n +0000823694 00000 n +0000823898 00000 n +0000824085 00000 n +0000824395 00000 n +0000824590 00000 n +0000824794 00000 n +0000824980 00000 n +0000825333 00000 n +0000825528 00000 n +0000825733 00000 n +0000825919 00000 n +0000826237 00000 n +0000826432 00000 n +0000826624 00000 n +0000826810 00000 n +0000827187 00000 n +0000827381 00000 n +0000827585 00000 n +0000827786 00000 n +0000827973 00000 n +0000828358 00000 n +0000828553 00000 n +0000828757 00000 n +0000828946 00000 n +0000829133 00000 n +0000829523 00000 n +0000829717 00000 n +0000829921 00000 n +0000830122 00000 n +0000830296 00000 n +0000830577 00000 n +0000830771 00000 n +0000830975 00000 n +0000831161 00000 n +0000831454 00000 n +0000831649 00000 n +0000831854 00000 n +0000832054 00000 n +0000832228 00000 n +0000832517 00000 n +0000832707 00000 n +0000832893 00000 n +0000833359 00000 n +0000833554 00000 n +0000833758 00000 n +0000833945 00000 n +0000834378 00000 n +0000834572 00000 n +0000834776 00000 n +0000834963 00000 n +0000835408 00000 n +0000835602 00000 n +0000835794 00000 n +0000835994 00000 n +0000836180 00000 n +0000836437 00000 n +0000836627 00000 n +0000836814 00000 n +0000837095 00000 n +0000837286 00000 n +0000837473 00000 n +0000837790 00000 n +0000837984 00000 n +0000838188 00000 n +0000838374 00000 n +0000838749 00000 n +0000838944 00000 n +0000839148 00000 n +0000839335 00000 n +0000839563 00000 n +0000839769 00000 n +0000839974 00000 n +0000840171 00000 n +0000840384 00000 n +0000840609 00000 n +0000840853 00000 n +0000841045 00000 n +0000841233 00000 n +0000841430 00000 n +0000841630 00000 n +0000841806 00000 n +0000842031 00000 n +0000842219 00000 n +0000842427 00000 n +0000842700 00000 n +0000842921 00000 n +0000843105 00000 n +0000843333 00000 n +0000843525 00000 n +0000843700 00000 n +0000844340 00000 n +0000852348 00000 n +0000852564 00000 n +0000853927 00000 n +0000854994 00000 n +0000862746 00000 n +0000862967 00000 n +0000864330 00000 n +0000865407 00000 n +0000868668 00000 n +0000868894 00000 n +0000870257 00000 n +0000871373 00000 n +0000873576 00000 n +0000873790 00000 n +0000875153 00000 n trailer -<< /Size 750 +<< /Size 872 /Root 2 0 R /Info 1 0 R >> startxref -771614 +876278 %%EOF diff --git a/extra/sql/dump/test-data.sql b/extra/sql/dump/test-data.sql index 6c8f9c196..72d95194a 100644 --- a/extra/sql/dump/test-data.sql +++ b/extra/sql/dump/test-data.sql @@ -63,7 +63,7 @@ UNLOCK TABLES; LOCK TABLES `loop_element_models` WRITE; /*!40000 ALTER TABLE `loop_element_models` DISABLE KEYS */; -INSERT INTO `loop_element_models` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app',NULL,'2020-03-10 15:34:31.130357','Not found','2020-03-10 15:34:31.845293',NULL,NULL,'MICRO_SERVICE_TYPE',NULL); +INSERT INTO `loop_element_models` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app',NULL,'2020-03-13 10:59:53.499891','Not found','2020-03-13 10:59:53.993136',NULL,NULL,'MICRO_SERVICE_TYPE',NULL); /*!40000 ALTER TABLE `loop_element_models` ENABLE KEYS */; UNLOCK TABLES; @@ -82,9 +82,9 @@ UNLOCK TABLES; LOCK TABLES `loop_templates` WRITE; /*!40000 ALTER TABLE `loop_templates` DISABLE KEYS */; -INSERT INTO `loop_templates` VALUES ('LOOP_TEMPLATE_MZ8ks_v1_0_ResourceInstanceName1_tca','Not found','2020-03-10 15:34:31.780435','Not found','2020-03-10 15:34:31.780435','CLOSED','tosca_definitions_version: cloudify_dsl_1_3\nimports:\n- http://www.getcloudify.org/spec/cloudify/3.4/types.yaml\n- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/docker/2.2.0/node-type.yaml\n- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml\n- http://onap.org:8081/repository/solutioning01-mte2-raw/type_files/dmaap/dmaap_mr.yaml\ninputs:\n location_id:\n type: string\n service_id:\n type: string\n policy_id:\n type: string\nnode_templates:\n policy_0:\n type: dcae.nodes.policy\n properties:\n policy_id: \n get_input: policy_id\n policy_model_id: \"onap.policies.monitoring.cdap.tca.hi.lo.app\"\n cdap_host_host:\n type: dcae.nodes.StreamingAnalytics.SelectedCDAPInfrastructure\n properties:\n location_id:\n get_input: location_id\n scn_override: cdap_broker.solutioning-central.dcae.onap.org\n interfaces:\n cloudify.interfaces.lifecycle: {\n }\n tca_tca:\n type: dcae.nodes.MicroService.cdap\n properties:\n app_config:\n appDescription: DCAE Analytics Threshold Crossing Alert Application\n appName: dcae-tca\n tcaSubscriberOutputStreamName: TCASubscriberOutputStream\n tcaVESAlertsTableName: TCAVESAlertsTable\n tcaVESAlertsTableTTLSeconds: \'1728000\'\n tcaVESMessageStatusTableName: TCAVESMessageStatusTable\n tcaVESMessageStatusTableTTLSeconds: \'86400\'\n thresholdCalculatorFlowletInstances: \'2\'\n app_preferences:\n publisherContentType: application/json\n publisherHostName: mrlocal-mtnjftle01.onap.org\n publisherHostPort: \'3905\'\n publisherMaxBatchSize: \'10\'\n publisherMaxRecoveryQueueSize: \'100000\'\n publisherPollingInterval: \'20000\'\n publisherProtocol: https\n publisherTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESPub\n publisherUserName: test@tca.af.dcae.onap.org\n publisherUserPassword: password\n subscriberConsumerGroup: OpenDCAE-c12\n subscriberConsumerId: c12\n subscriberContentType: application/json\n subscriberHostName: mrlocal-mtnjftle01.onap.org\n subscriberHostPort: \'3905\'\n subscriberMessageLimit: \'-1\'\n subscriberPollingInterval: \'20000\'\n subscriberProtocol: https\n subscriberTimeoutMS: \'-1\'\n subscriberTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESSub\n subscriberUserName: test@tca.af.dcae.onap.org\n subscriberUserPassword: password\n tca_policy: null\n artifact_name: dcae-analytics-tca\n artifact_version: 1.0.0\n connections:\n streams_publishes: [\n ]\n streams_subscribes: [\n ]\n jar_url: http://somejar\n location_id:\n get_input: location_id\n namespace: cdap_tca_hi_lo\n programs:\n - program_id: TCAVESCollectorFlow\n program_type: flows\n - program_id: TCADMaaPMRSubscriberWorker\n program_type: workers\n - program_id: TCADMaaPMRPublisherWorker\n program_type: workers\n service_component_type: cdap_app_tca\n service_id:\n get_input: service_id\n streamname: TCASubscriberOutputStream\n relationships:\n - target: topic0\n type: dcae.relationships.subscribe_to_events\n - target: topic1\n type: dcae.relationships.publish_events\n - target: cdap_host_host\n type: dcae.relationships.component_contained_in\n - target: policy_0\n type: dcae.relationships.depends_on\n topic0:\n type: dcae.nodes.Topic\n properties:\n topic_name: \'\'\n topic1:\n type: dcae.nodes.Topic\n properties:\n topic_name: \'\'\n \n','typeId-28fa0ed8-0e43-44ae-82cc-68e7507dd9f1',0,'VESapp',1,'63cac700-ab9a-4115-a74f-7eac85e3fce0'); -INSERT INTO `loop_templates` VALUES ('LOOP_TEMPLATE_MZ8ks_v1_0_ResourceInstanceName1_tca_3','Not found','2020-03-10 15:34:31.399393','Not found','2020-03-10 15:34:31.399393','CLOSED','tosca_definitions_version: cloudify_dsl_1_3\n\ndescription: >\n This blueprint deploys/manages the TCA module as a Docker container\n\nimports:\n - http://www.getcloudify.org/spec/cloudify/3.4/types.yaml\n - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/k8splugin/1.4.12/k8splugin_types.yaml\n - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/dcaepolicyplugin/2.3.0/dcaepolicyplugin_types.yaml\ninputs:\n aaiEnrichmentHost:\n type: string\n default: \"aai.onap.svc.cluster.local\"\n aaiEnrichmentPort:\n type: string\n default: \"8443\"\n enableAAIEnrichment:\n type: string\n default: true\n dmaap_host:\n type: string\n default: message-router.onap.svc.cluster.local\n dmaap_port:\n type: string\n default: \"3904\"\n enableRedisCaching:\n type: string\n default: false\n redisHosts:\n type: string\n default: dcae-redis.onap.svc.cluster.local:6379\n tag_version:\n type: string\n default: \"nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.1.0-STAGING-latest\"\n consul_host:\n type: string\n default: consul-server.onap.svc.cluster.local\n consul_port:\n type: string\n default: \"8500\"\n cbs_host:\n type: string\n default: \"config-binding-service.dcae.svc.cluster.local\"\n cbs_port:\n type: string\n default: \"10000\"\n policy_id:\n type: string\n default: \"none\"\n external_port:\n type: string\n description: Kubernetes node port on which CDAPgui is exposed\n default: \"32012\"\n policy_model_id:\n type: string\n default: \"onap.policies.monitoring.cdap.tca.hi.lo.app\"\n\nnode_templates:\n tca_k8s:\n type: dcae.nodes.ContainerizedServiceComponent\n relationships:\n - target: tca_policy\n type: cloudify.relationships.depends_on\n properties:\n service_component_type: \'dcaegen2-analytics-tca\'\n application_config: {}\n docker_config: {}\n image:\n get_input: tag_version\n log_info:\n log_directory: \"/opt/app/TCAnalytics/logs\"\n application_config:\n app_config:\n appDescription: DCAE Analytics Threshold Crossing Alert Application\n appName: dcae-tca\n tcaAlertsAbatementTableName: TCAAlertsAbatementTable\n tcaAlertsAbatementTableTTLSeconds: \'1728000\'\n tcaSubscriberOutputStreamName: TCASubscriberOutputStream\n tcaVESAlertsTableName: TCAVESAlertsTable\n tcaVESAlertsTableTTLSeconds: \'1728000\'\n tcaVESMessageStatusTableName: TCAVESMessageStatusTable\n tcaVESMessageStatusTableTTLSeconds: \'86400\'\n thresholdCalculatorFlowletInstances: \'2\'\n app_preferences:\n aaiEnrichmentHost:\n get_input: aaiEnrichmentHost\n aaiEnrichmentIgnoreSSLCertificateErrors: \'true\'\n aaiEnrichmentPortNumber: \'8443\'\n aaiEnrichmentProtocol: https\n aaiEnrichmentUserName: dcae@dcae.onap.org\n aaiEnrichmentUserPassword: demo123456!\n aaiVMEnrichmentAPIPath: /aai/v11/search/nodes-query\n aaiVNFEnrichmentAPIPath: /aai/v11/network/generic-vnfs/generic-vnf\n enableAAIEnrichment:\n get_input: enableAAIEnrichment\n enableRedisCaching:\n get_input: enableRedisCaching\n redisHosts:\n get_input: redisHosts\n enableAlertCEFFormat: \'false\'\n publisherContentType: application/json\n publisherHostName:\n get_input: dmaap_host\n publisherHostPort:\n get_input: dmaap_port\n publisherMaxBatchSize: \'1\'\n publisherMaxRecoveryQueueSize: \'100000\'\n publisherPollingInterval: \'20000\'\n publisherProtocol: http\n publisherTopicName: unauthenticated.DCAE_CL_OUTPUT\n subscriberConsumerGroup: OpenDCAE-c12\n subscriberConsumerId: c12\n subscriberContentType: application/json\n subscriberHostName:\n get_input: dmaap_host\n subscriberHostPort:\n get_input: dmaap_port\n subscriberMessageLimit: \'-1\'\n subscriberPollingInterval: \'30000\'\n subscriberProtocol: http\n subscriberTimeoutMS: \'-1\'\n subscriberTopicName: unauthenticated.VES_MEASUREMENT_OUTPUT\n tca_policy: \'\'\n service_component_type: dcaegen2-analytics_tca\n interfaces:\n cloudify.interfaces.lifecycle:\n start:\n inputs:\n envs:\n DMAAPHOST:\n { get_input: dmaap_host }\n DMAAPPORT:\n { get_input: dmaap_port }\n DMAAPPUBTOPIC: \"unauthenticated.DCAE_CL_OUTPUT\"\n DMAAPSUBTOPIC: \"unauthenticated.VES_MEASUREMENT_OUTPUT\"\n AAIHOST:\n { get_input: aaiEnrichmentHost }\n AAIPORT:\n { get_input: aaiEnrichmentPort }\n CONSUL_HOST:\n { get_input: consul_host }\n CONSUL_PORT:\n { get_input: consul_port }\n CBS_HOST:\n { get_input: cbs_host }\n CBS_PORT:\n { get_input: cbs_port }\n CONFIG_BINDING_SERVICE: \"config_binding_service\"\n ports:\n - concat: [\"11011:\", { get_input: external_port }]\n tca_policy:\n type: dcae.nodes.policy\n properties:\n policy_id:\n get_input: policy_id\n policy_model_id: \n get_input: policy_model_id\n','typeId-bd15286f-cfff-4703-b4f2-accbe3e79ce9',0,'VESapp',1,'63cac700-ab9a-4115-a74f-7eac85e3fce0'); -INSERT INTO `loop_templates` VALUES ('LOOP_TEMPLATE_MZ8ks_v1_0_ResourceInstanceName2_tca_2','Not found','2020-03-10 15:34:31.109027','Not found','2020-03-10 15:34:31.109027','CLOSED','#\n# ============LICENSE_START====================================================\n# =============================================================================\n# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.\n# =============================================================================\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============LICENSE_END======================================================\n\ntosca_definitions_version: cloudify_dsl_1_3\n\ndescription: >\n This blueprint deploys/manages the TCA module as a Docker container\n\nimports:\n - http://www.getcloudify.org/spec/cloudify/3.4/types.yaml\n - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/k8splugin/1.4.12/k8splugin_types.yaml\n# - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/dcaepolicyplugin/2.3.0/dcaepolicyplugin_types.yaml\n - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/clamppolicyplugin/1.0.0/clamppolicyplugin_types.yaml\ninputs:\n aaiEnrichmentHost:\n type: string\n default: \"aai.onap.svc.cluster.local\"\n aaiEnrichmentPort:\n type: string\n default: \"8443\"\n enableAAIEnrichment:\n type: string\n default: true\n dmaap_host:\n type: string\n default: message-router.onap\n dmaap_port:\n type: string\n default: \"3904\"\n enableRedisCaching:\n type: string\n default: false\n redisHosts:\n type: string\n default: dcae-redis.onap.svc.cluster.local:6379\n tag_version:\n type: string\n default: \"nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.1.1\"\n consul_host:\n type: string\n default: consul-server.onap\n consul_port:\n type: string\n default: \"8500\"\n cbs_host:\n type: string\n default: \"config-binding-servicel\"\n cbs_port:\n type: string\n default: \"10000\"\n policy_id:\n type: string\n default: \"onap.restart.tca\"\n external_port:\n type: string\n description: Kubernetes node port on which CDAPgui is exposed\n default: \"32012\"\n policy_model_id:\n type: string\n default: \"onap.policies.monitoring.cdap.tca.hi.lo.app\"\nnode_templates:\n tca_k8s:\n type: dcae.nodes.ContainerizedServiceComponent\n relationships:\n - target: tca_policy\n type: cloudify.relationships.depends_on\n properties:\n service_component_type: \'dcaegen2-analytics-tca\'\n application_config: {}\n docker_config: {}\n image:\n get_input: tag_version\n log_info:\n log_directory: \"/opt/app/TCAnalytics/logs\"\n application_config:\n app_config:\n appDescription: DCAE Analytics Threshold Crossing Alert Application\n appName: dcae-tca\n tcaAlertsAbatementTableName: TCAAlertsAbatementTable\n tcaAlertsAbatementTableTTLSeconds: \'1728000\'\n tcaSubscriberOutputStreamName: TCASubscriberOutputStream\n tcaVESAlertsTableName: TCAVESAlertsTable\n tcaVESAlertsTableTTLSeconds: \'1728000\'\n tcaVESMessageStatusTableName: TCAVESMessageStatusTable\n tcaVESMessageStatusTableTTLSeconds: \'86400\'\n thresholdCalculatorFlowletInstances: \'2\'\n app_preferences:\n aaiEnrichmentHost:\n get_input: aaiEnrichmentHost\n aaiEnrichmentIgnoreSSLCertificateErrors: \'true\'\n aaiEnrichmentPortNumber: \'8443\'\n aaiEnrichmentProtocol: https\n aaiEnrichmentUserName: dcae@dcae.onap.org\n aaiEnrichmentUserPassword: demo123456!\n aaiVMEnrichmentAPIPath: /aai/v11/search/nodes-query\n aaiVNFEnrichmentAPIPath: /aai/v11/network/generic-vnfs/generic-vnf\n enableAAIEnrichment:\n get_input: enableAAIEnrichment\n enableRedisCaching:\n get_input: enableRedisCaching\n redisHosts:\n get_input: redisHosts\n enableAlertCEFFormat: \'false\'\n publisherContentType: application/json\n publisherHostName:\n get_input: dmaap_host\n publisherHostPort:\n get_input: dmaap_port\n publisherMaxBatchSize: \'1\'\n publisherMaxRecoveryQueueSize: \'100000\'\n publisherPollingInterval: \'20000\'\n publisherProtocol: http\n publisherTopicName: unauthenticated.DCAE_CL_OUTPUT\n subscriberConsumerGroup: OpenDCAE-clamp\n subscriberConsumerId: c12\n subscriberContentType: application/json\n subscriberHostName:\n get_input: dmaap_host\n subscriberHostPort:\n get_input: dmaap_port\n subscriberMessageLimit: \'-1\'\n subscriberPollingInterval: \'30000\'\n subscriberProtocol: http\n subscriberTimeoutMS: \'-1\'\n subscriberTopicName: unauthenticated.VES_MEASUREMENT_OUTPUT\n# tca_policy: \'{\"domain\":\"measurementsForVfScaling\",\"metricsPerEventName\":[{\"eventName\":\"vFirewallBroadcastPackets\",\"controlLoopSchemaType\":\"VNF\",\"policyScope\":\"DCAE\",\"policyName\":\"DCAE.Config_tca-hi-lo\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta\",\"thresholdValue\":300,\"direction\":\"LESS_OR_EQUAL\",\"severity\":\"MAJOR\",\"closedLoopEventStatus\":\"ONSET\"},{\"closedLoopControlName\":\"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta\",\"thresholdValue\":700,\"direction\":\"GREATER_OR_EQUAL\",\"severity\":\"CRITICAL\",\"closedLoopEventStatus\":\"ONSET\"}]},{\"eventName\":\"vLoadBalancer\",\"controlLoopSchemaType\":\"VM\",\"policyScope\":\"DCAE\",\"policyName\":\"DCAE.Config_tca-hi-lo\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta\",\"thresholdValue\":300,\"direction\":\"GREATER_OR_EQUAL\",\"severity\":\"CRITICAL\",\"closedLoopEventStatus\":\"ONSET\"}]},{\"eventName\":\"Measurement_vGMUX\",\"controlLoopSchemaType\":\"VNF\",\"policyScope\":\"DCAE\",\"policyName\":\"DCAE.Config_tca-hi-lo\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\",\"thresholdValue\":0,\"direction\":\"EQUAL\",\"severity\":\"MAJOR\",\"closedLoopEventStatus\":\"ABATED\"},{\"closedLoopControlName\":\"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\",\"thresholdValue\":0,\"direction\":\"GREATER\",\"severity\":\"CRITICAL\",\"closedLoopEventStatus\":\"ONSET\"}]}]}\'\n service_component_type: dcaegen2-analytics_tca\n interfaces:\n cloudify.interfaces.lifecycle:\n start:\n inputs:\n envs:\n DMAAPHOST:\n { get_input: dmaap_host }\n DMAAPPORT:\n { get_input: dmaap_port }\n DMAAPPUBTOPIC: \"unauthenticated.DCAE_CL_OUTPUT\"\n DMAAPSUBTOPIC: \"unauthenticated.VES_MEASUREMENT_OUTPUT\"\n AAIHOST:\n { get_input: aaiEnrichmentHost }\n AAIPORT:\n { get_input: aaiEnrichmentPort }\n CONSUL_HOST:\n { get_input: consul_host }\n CONSUL_PORT:\n { get_input: consul_port }\n CBS_HOST:\n { get_input: cbs_host }\n CBS_PORT:\n { get_input: cbs_port }\n CONFIG_BINDING_SERVICE: \"config_binding_service\"\n ports:\n - concat: [\"11011:\", { get_input: external_port }]\n tca_policy:\n type: clamp.nodes.policy\n properties:\n policy_id:\n get_input: policy_id\n policy_model_id: \"onap.policies.monitoring.cdap.tca.hi.lo.app\"\n','typeId-7c473cb9-c825-43ec-97ce-6017c7ff15a2',0,'VESapp',1,'63cac700-ab9a-4115-a74f-7eac85e3fce0'); +INSERT INTO `loop_templates` VALUES ('LOOP_TEMPLATE_mnekp_v1_0_ResourceInstanceName1_tca','Not found','2020-03-13 10:59:53.904486','Not found','2020-03-13 10:59:53.904486','CLOSED','tosca_definitions_version: cloudify_dsl_1_3\nimports:\n- http://www.getcloudify.org/spec/cloudify/3.4/types.yaml\n- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/docker/2.2.0/node-type.yaml\n- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml\n- http://onap.org:8081/repository/solutioning01-mte2-raw/type_files/dmaap/dmaap_mr.yaml\ninputs:\n location_id:\n type: string\n service_id:\n type: string\n policy_id:\n type: string\nnode_templates:\n policy_0:\n type: dcae.nodes.policy\n properties:\n policy_id: \n get_input: policy_id\n policy_model_id: \"onap.policies.monitoring.cdap.tca.hi.lo.app\"\n cdap_host_host:\n type: dcae.nodes.StreamingAnalytics.SelectedCDAPInfrastructure\n properties:\n location_id:\n get_input: location_id\n scn_override: cdap_broker.solutioning-central.dcae.onap.org\n interfaces:\n cloudify.interfaces.lifecycle: {\n }\n tca_tca:\n type: dcae.nodes.MicroService.cdap\n properties:\n app_config:\n appDescription: DCAE Analytics Threshold Crossing Alert Application\n appName: dcae-tca\n tcaSubscriberOutputStreamName: TCASubscriberOutputStream\n tcaVESAlertsTableName: TCAVESAlertsTable\n tcaVESAlertsTableTTLSeconds: \'1728000\'\n tcaVESMessageStatusTableName: TCAVESMessageStatusTable\n tcaVESMessageStatusTableTTLSeconds: \'86400\'\n thresholdCalculatorFlowletInstances: \'2\'\n app_preferences:\n publisherContentType: application/json\n publisherHostName: mrlocal-mtnjftle01.onap.org\n publisherHostPort: \'3905\'\n publisherMaxBatchSize: \'10\'\n publisherMaxRecoveryQueueSize: \'100000\'\n publisherPollingInterval: \'20000\'\n publisherProtocol: https\n publisherTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESPub\n publisherUserName: test@tca.af.dcae.onap.org\n publisherUserPassword: password\n subscriberConsumerGroup: OpenDCAE-c12\n subscriberConsumerId: c12\n subscriberContentType: application/json\n subscriberHostName: mrlocal-mtnjftle01.onap.org\n subscriberHostPort: \'3905\'\n subscriberMessageLimit: \'-1\'\n subscriberPollingInterval: \'20000\'\n subscriberProtocol: https\n subscriberTimeoutMS: \'-1\'\n subscriberTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESSub\n subscriberUserName: test@tca.af.dcae.onap.org\n subscriberUserPassword: password\n tca_policy: null\n artifact_name: dcae-analytics-tca\n artifact_version: 1.0.0\n connections:\n streams_publishes: [\n ]\n streams_subscribes: [\n ]\n jar_url: http://somejar\n location_id:\n get_input: location_id\n namespace: cdap_tca_hi_lo\n programs:\n - program_id: TCAVESCollectorFlow\n program_type: flows\n - program_id: TCADMaaPMRSubscriberWorker\n program_type: workers\n - program_id: TCADMaaPMRPublisherWorker\n program_type: workers\n service_component_type: cdap_app_tca\n service_id:\n get_input: service_id\n streamname: TCASubscriberOutputStream\n relationships:\n - target: topic0\n type: dcae.relationships.subscribe_to_events\n - target: topic1\n type: dcae.relationships.publish_events\n - target: cdap_host_host\n type: dcae.relationships.component_contained_in\n - target: policy_0\n type: dcae.relationships.depends_on\n topic0:\n type: dcae.nodes.Topic\n properties:\n topic_name: \'\'\n topic1:\n type: dcae.nodes.Topic\n properties:\n topic_name: \'\'\n \n','typeId-fcbedab3-67dd-4ab0-8b2e-1a03e30b2546',0,'VESapp',1,'63cac700-ab9a-4115-a74f-7eac85e3fce0'); +INSERT INTO `loop_templates` VALUES ('LOOP_TEMPLATE_mnekp_v1_0_ResourceInstanceName1_tca_3','Not found','2020-03-13 10:59:53.709176','Not found','2020-03-13 10:59:53.709176','CLOSED','tosca_definitions_version: cloudify_dsl_1_3\n\ndescription: >\n This blueprint deploys/manages the TCA module as a Docker container\n\nimports:\n - http://www.getcloudify.org/spec/cloudify/3.4/types.yaml\n - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/k8splugin/1.4.12/k8splugin_types.yaml\n - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/dcaepolicyplugin/2.3.0/dcaepolicyplugin_types.yaml\ninputs:\n aaiEnrichmentHost:\n type: string\n default: \"aai.onap.svc.cluster.local\"\n aaiEnrichmentPort:\n type: string\n default: \"8443\"\n enableAAIEnrichment:\n type: string\n default: true\n dmaap_host:\n type: string\n default: message-router.onap.svc.cluster.local\n dmaap_port:\n type: string\n default: \"3904\"\n enableRedisCaching:\n type: string\n default: false\n redisHosts:\n type: string\n default: dcae-redis.onap.svc.cluster.local:6379\n tag_version:\n type: string\n default: \"nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.1.0-STAGING-latest\"\n consul_host:\n type: string\n default: consul-server.onap.svc.cluster.local\n consul_port:\n type: string\n default: \"8500\"\n cbs_host:\n type: string\n default: \"config-binding-service.dcae.svc.cluster.local\"\n cbs_port:\n type: string\n default: \"10000\"\n policy_id:\n type: string\n default: \"none\"\n external_port:\n type: string\n description: Kubernetes node port on which CDAPgui is exposed\n default: \"32012\"\n policy_model_id:\n type: string\n default: \"onap.policies.monitoring.cdap.tca.hi.lo.app\"\n\nnode_templates:\n tca_k8s:\n type: dcae.nodes.ContainerizedServiceComponent\n relationships:\n - target: tca_policy\n type: cloudify.relationships.depends_on\n properties:\n service_component_type: \'dcaegen2-analytics-tca\'\n application_config: {}\n docker_config: {}\n image:\n get_input: tag_version\n log_info:\n log_directory: \"/opt/app/TCAnalytics/logs\"\n application_config:\n app_config:\n appDescription: DCAE Analytics Threshold Crossing Alert Application\n appName: dcae-tca\n tcaAlertsAbatementTableName: TCAAlertsAbatementTable\n tcaAlertsAbatementTableTTLSeconds: \'1728000\'\n tcaSubscriberOutputStreamName: TCASubscriberOutputStream\n tcaVESAlertsTableName: TCAVESAlertsTable\n tcaVESAlertsTableTTLSeconds: \'1728000\'\n tcaVESMessageStatusTableName: TCAVESMessageStatusTable\n tcaVESMessageStatusTableTTLSeconds: \'86400\'\n thresholdCalculatorFlowletInstances: \'2\'\n app_preferences:\n aaiEnrichmentHost:\n get_input: aaiEnrichmentHost\n aaiEnrichmentIgnoreSSLCertificateErrors: \'true\'\n aaiEnrichmentPortNumber: \'8443\'\n aaiEnrichmentProtocol: https\n aaiEnrichmentUserName: dcae@dcae.onap.org\n aaiEnrichmentUserPassword: demo123456!\n aaiVMEnrichmentAPIPath: /aai/v11/search/nodes-query\n aaiVNFEnrichmentAPIPath: /aai/v11/network/generic-vnfs/generic-vnf\n enableAAIEnrichment:\n get_input: enableAAIEnrichment\n enableRedisCaching:\n get_input: enableRedisCaching\n redisHosts:\n get_input: redisHosts\n enableAlertCEFFormat: \'false\'\n publisherContentType: application/json\n publisherHostName:\n get_input: dmaap_host\n publisherHostPort:\n get_input: dmaap_port\n publisherMaxBatchSize: \'1\'\n publisherMaxRecoveryQueueSize: \'100000\'\n publisherPollingInterval: \'20000\'\n publisherProtocol: http\n publisherTopicName: unauthenticated.DCAE_CL_OUTPUT\n subscriberConsumerGroup: OpenDCAE-c12\n subscriberConsumerId: c12\n subscriberContentType: application/json\n subscriberHostName:\n get_input: dmaap_host\n subscriberHostPort:\n get_input: dmaap_port\n subscriberMessageLimit: \'-1\'\n subscriberPollingInterval: \'30000\'\n subscriberProtocol: http\n subscriberTimeoutMS: \'-1\'\n subscriberTopicName: unauthenticated.VES_MEASUREMENT_OUTPUT\n tca_policy: \'\'\n service_component_type: dcaegen2-analytics_tca\n interfaces:\n cloudify.interfaces.lifecycle:\n start:\n inputs:\n envs:\n DMAAPHOST:\n { get_input: dmaap_host }\n DMAAPPORT:\n { get_input: dmaap_port }\n DMAAPPUBTOPIC: \"unauthenticated.DCAE_CL_OUTPUT\"\n DMAAPSUBTOPIC: \"unauthenticated.VES_MEASUREMENT_OUTPUT\"\n AAIHOST:\n { get_input: aaiEnrichmentHost }\n AAIPORT:\n { get_input: aaiEnrichmentPort }\n CONSUL_HOST:\n { get_input: consul_host }\n CONSUL_PORT:\n { get_input: consul_port }\n CBS_HOST:\n { get_input: cbs_host }\n CBS_PORT:\n { get_input: cbs_port }\n CONFIG_BINDING_SERVICE: \"config_binding_service\"\n ports:\n - concat: [\"11011:\", { get_input: external_port }]\n tca_policy:\n type: dcae.nodes.policy\n properties:\n policy_id:\n get_input: policy_id\n policy_model_id: \n get_input: policy_model_id\n','typeId-cfed3dd8-522e-4919-bf6b-071c388837eb',0,'VESapp',1,'63cac700-ab9a-4115-a74f-7eac85e3fce0'); +INSERT INTO `loop_templates` VALUES ('LOOP_TEMPLATE_mnekp_v1_0_ResourceInstanceName2_tca_2','Not found','2020-03-13 10:59:53.447108','Not found','2020-03-13 10:59:53.447108','CLOSED','#\n# ============LICENSE_START====================================================\n# =============================================================================\n# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.\n# =============================================================================\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============LICENSE_END======================================================\n\ntosca_definitions_version: cloudify_dsl_1_3\n\ndescription: >\n This blueprint deploys/manages the TCA module as a Docker container\n\nimports:\n - http://www.getcloudify.org/spec/cloudify/3.4/types.yaml\n - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/k8splugin/1.4.12/k8splugin_types.yaml\n# - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/dcaepolicyplugin/2.3.0/dcaepolicyplugin_types.yaml\n - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/clamppolicyplugin/1.0.0/clamppolicyplugin_types.yaml\ninputs:\n aaiEnrichmentHost:\n type: string\n default: \"aai.onap.svc.cluster.local\"\n aaiEnrichmentPort:\n type: string\n default: \"8443\"\n enableAAIEnrichment:\n type: string\n default: true\n dmaap_host:\n type: string\n default: message-router.onap\n dmaap_port:\n type: string\n default: \"3904\"\n enableRedisCaching:\n type: string\n default: false\n redisHosts:\n type: string\n default: dcae-redis.onap.svc.cluster.local:6379\n tag_version:\n type: string\n default: \"nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.1.1\"\n consul_host:\n type: string\n default: consul-server.onap\n consul_port:\n type: string\n default: \"8500\"\n cbs_host:\n type: string\n default: \"config-binding-servicel\"\n cbs_port:\n type: string\n default: \"10000\"\n policy_id:\n type: string\n default: \"onap.restart.tca\"\n external_port:\n type: string\n description: Kubernetes node port on which CDAPgui is exposed\n default: \"32012\"\n policy_model_id:\n type: string\n default: \"onap.policies.monitoring.cdap.tca.hi.lo.app\"\nnode_templates:\n tca_k8s:\n type: dcae.nodes.ContainerizedServiceComponent\n relationships:\n - target: tca_policy\n type: cloudify.relationships.depends_on\n properties:\n service_component_type: \'dcaegen2-analytics-tca\'\n application_config: {}\n docker_config: {}\n image:\n get_input: tag_version\n log_info:\n log_directory: \"/opt/app/TCAnalytics/logs\"\n application_config:\n app_config:\n appDescription: DCAE Analytics Threshold Crossing Alert Application\n appName: dcae-tca\n tcaAlertsAbatementTableName: TCAAlertsAbatementTable\n tcaAlertsAbatementTableTTLSeconds: \'1728000\'\n tcaSubscriberOutputStreamName: TCASubscriberOutputStream\n tcaVESAlertsTableName: TCAVESAlertsTable\n tcaVESAlertsTableTTLSeconds: \'1728000\'\n tcaVESMessageStatusTableName: TCAVESMessageStatusTable\n tcaVESMessageStatusTableTTLSeconds: \'86400\'\n thresholdCalculatorFlowletInstances: \'2\'\n app_preferences:\n aaiEnrichmentHost:\n get_input: aaiEnrichmentHost\n aaiEnrichmentIgnoreSSLCertificateErrors: \'true\'\n aaiEnrichmentPortNumber: \'8443\'\n aaiEnrichmentProtocol: https\n aaiEnrichmentUserName: dcae@dcae.onap.org\n aaiEnrichmentUserPassword: demo123456!\n aaiVMEnrichmentAPIPath: /aai/v11/search/nodes-query\n aaiVNFEnrichmentAPIPath: /aai/v11/network/generic-vnfs/generic-vnf\n enableAAIEnrichment:\n get_input: enableAAIEnrichment\n enableRedisCaching:\n get_input: enableRedisCaching\n redisHosts:\n get_input: redisHosts\n enableAlertCEFFormat: \'false\'\n publisherContentType: application/json\n publisherHostName:\n get_input: dmaap_host\n publisherHostPort:\n get_input: dmaap_port\n publisherMaxBatchSize: \'1\'\n publisherMaxRecoveryQueueSize: \'100000\'\n publisherPollingInterval: \'20000\'\n publisherProtocol: http\n publisherTopicName: unauthenticated.DCAE_CL_OUTPUT\n subscriberConsumerGroup: OpenDCAE-clamp\n subscriberConsumerId: c12\n subscriberContentType: application/json\n subscriberHostName:\n get_input: dmaap_host\n subscriberHostPort:\n get_input: dmaap_port\n subscriberMessageLimit: \'-1\'\n subscriberPollingInterval: \'30000\'\n subscriberProtocol: http\n subscriberTimeoutMS: \'-1\'\n subscriberTopicName: unauthenticated.VES_MEASUREMENT_OUTPUT\n# tca_policy: \'{\"domain\":\"measurementsForVfScaling\",\"metricsPerEventName\":[{\"eventName\":\"vFirewallBroadcastPackets\",\"controlLoopSchemaType\":\"VNF\",\"policyScope\":\"DCAE\",\"policyName\":\"DCAE.Config_tca-hi-lo\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta\",\"thresholdValue\":300,\"direction\":\"LESS_OR_EQUAL\",\"severity\":\"MAJOR\",\"closedLoopEventStatus\":\"ONSET\"},{\"closedLoopControlName\":\"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta\",\"thresholdValue\":700,\"direction\":\"GREATER_OR_EQUAL\",\"severity\":\"CRITICAL\",\"closedLoopEventStatus\":\"ONSET\"}]},{\"eventName\":\"vLoadBalancer\",\"controlLoopSchemaType\":\"VM\",\"policyScope\":\"DCAE\",\"policyName\":\"DCAE.Config_tca-hi-lo\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta\",\"thresholdValue\":300,\"direction\":\"GREATER_OR_EQUAL\",\"severity\":\"CRITICAL\",\"closedLoopEventStatus\":\"ONSET\"}]},{\"eventName\":\"Measurement_vGMUX\",\"controlLoopSchemaType\":\"VNF\",\"policyScope\":\"DCAE\",\"policyName\":\"DCAE.Config_tca-hi-lo\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\",\"thresholdValue\":0,\"direction\":\"EQUAL\",\"severity\":\"MAJOR\",\"closedLoopEventStatus\":\"ABATED\"},{\"closedLoopControlName\":\"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\",\"thresholdValue\":0,\"direction\":\"GREATER\",\"severity\":\"CRITICAL\",\"closedLoopEventStatus\":\"ONSET\"}]}]}\'\n service_component_type: dcaegen2-analytics_tca\n interfaces:\n cloudify.interfaces.lifecycle:\n start:\n inputs:\n envs:\n DMAAPHOST:\n { get_input: dmaap_host }\n DMAAPPORT:\n { get_input: dmaap_port }\n DMAAPPUBTOPIC: \"unauthenticated.DCAE_CL_OUTPUT\"\n DMAAPSUBTOPIC: \"unauthenticated.VES_MEASUREMENT_OUTPUT\"\n AAIHOST:\n { get_input: aaiEnrichmentHost }\n AAIPORT:\n { get_input: aaiEnrichmentPort }\n CONSUL_HOST:\n { get_input: consul_host }\n CONSUL_PORT:\n { get_input: consul_port }\n CBS_HOST:\n { get_input: cbs_host }\n CBS_PORT:\n { get_input: cbs_port }\n CONFIG_BINDING_SERVICE: \"config_binding_service\"\n ports:\n - concat: [\"11011:\", { get_input: external_port }]\n tca_policy:\n type: clamp.nodes.policy\n properties:\n policy_id:\n get_input: policy_id\n policy_model_id: \"onap.policies.monitoring.cdap.tca.hi.lo.app\"\n','typeId-b20eee50-b363-459d-9c40-972f6b0d8322',0,'VESapp',1,'63cac700-ab9a-4115-a74f-7eac85e3fce0'); /*!40000 ALTER TABLE `loop_templates` ENABLE KEYS */; UNLOCK TABLES; @@ -122,9 +122,9 @@ UNLOCK TABLES; LOCK TABLES `looptemplates_to_loopelementmodels` WRITE; /*!40000 ALTER TABLE `looptemplates_to_loopelementmodels` DISABLE KEYS */; -INSERT INTO `looptemplates_to_loopelementmodels` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app','LOOP_TEMPLATE_MZ8ks_v1_0_ResourceInstanceName1_tca',0); -INSERT INTO `looptemplates_to_loopelementmodels` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app','LOOP_TEMPLATE_MZ8ks_v1_0_ResourceInstanceName1_tca_3',0); -INSERT INTO `looptemplates_to_loopelementmodels` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app','LOOP_TEMPLATE_MZ8ks_v1_0_ResourceInstanceName2_tca_2',0); +INSERT INTO `looptemplates_to_loopelementmodels` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app','LOOP_TEMPLATE_mnekp_v1_0_ResourceInstanceName1_tca',0); +INSERT INTO `looptemplates_to_loopelementmodels` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app','LOOP_TEMPLATE_mnekp_v1_0_ResourceInstanceName1_tca_3',0); +INSERT INTO `looptemplates_to_loopelementmodels` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app','LOOP_TEMPLATE_mnekp_v1_0_ResourceInstanceName2_tca_2',0); /*!40000 ALTER TABLE `looptemplates_to_loopelementmodels` ENABLE KEYS */; UNLOCK TABLES; @@ -152,13 +152,13 @@ UNLOCK TABLES; LOCK TABLES `policy_models` WRITE; /*!40000 ALTER TABLE `policy_models` DISABLE KEYS */; -INSERT INTO `policy_models` VALUES ('onap.policies.controlloop.guard.common.Blacklist','1.0.0','Not found','2020-03-10 15:34:16.151282','Not found','2020-03-10 15:34:16.653893','Blacklist','tosca_definitions_version: tosca_simple_yaml_1_1_0\npolicy_types:\n onap.policies.controlloop.guard.Common:\n derived_from: tosca.policies.Root\n version: 1.0.0\n description: |\n This is the base Policy Type for Guard policies that guard the execution of Operational\n Policies.\n properties:\n actor:\n type: string\n description: Specifies the Actor the guard applies to.\n required: true\n operation:\n type: string\n description: Specified the operation that the actor is performing the guard applies to.\n required: true\n timeRange:\n type: tosca.datatypes.TimeInterval\n description: |\n An optional range of time during the day the guard policy is valid for.\n required: false\n id:\n type: string\n description: The Control Loop id this applies to.\n required: false\n onap.policies.controlloop.guard.common.Blacklist:\n derived_from: onap.policies.controlloop.guard.Common\n type_version: 1.0.0\n version: 1.0.0\n description: Supports blacklist of entity id\'s from performing control loop actions on.\n properties:\n blacklist:\n type: list\n description: List of entity id\'s\n required: true\n entry_schema:\n type: string','{\n \"supportedPdpGroups\": [\n {\n \"controlloop\": [\n \"xacml\"\n ]\n }\n ]\n}'); -INSERT INTO `policy_models` VALUES ('onap.policies.controlloop.guard.common.FrequencyLimiter','1.0.0','Not found','2020-03-10 15:34:16.022020','Not found','2020-03-10 15:34:16.698932','FrequencyLimiter','tosca_definitions_version: tosca_simple_yaml_1_1_0\npolicy_types:\n onap.policies.controlloop.guard.Common:\n derived_from: tosca.policies.Root\n version: 1.0.0\n description: |\n This is the base Policy Type for Guard policies that guard the execution of Operational\n Policies.\n properties:\n actor:\n type: string\n description: Specifies the Actor the guard applies to.\n required: true\n operation:\n type: string\n description: Specified the operation that the actor is performing the guard applies to.\n required: true\n timeRange:\n type: tosca.datatypes.TimeInterval\n description: |\n An optional range of time during the day the guard policy is valid for.\n required: false\n id:\n type: string\n description: The Control Loop id this applies to.\n required: false\n onap.policies.controlloop.guard.common.FrequencyLimiter:\n derived_from: onap.policies.controlloop.guard.Common\n type_version: 1.0.0\n version: 1.0.0\n description: Supports limiting the frequency of actions being taken by a Actor.\n properties:\n timeWindow:\n type: integer\n description: The time window to count the actions against.\n required: true\n timeUnits:\n type: string\n description: The units of time the window is counting.\n constraints:\n - valid_values: [\"second\", \"minute\", \"hour\", \"day\", \"week\", \"month\", \"year\"]\n limit:\n type: integer\n description: The limit\n required: true\n constraints:\n - greater_than: 0','{\n \"supportedPdpGroups\": [\n {\n \"controlloop\": [\n \"xacml\"\n ]\n }\n ]\n}'); -INSERT INTO `policy_models` VALUES ('onap.policies.controlloop.guard.common.MinMax','2.0.0','Not found','2020-03-10 15:34:16.006652','Not found','2020-03-10 15:34:16.006652','MinMax','tosca_definitions_version: tosca_simple_yaml_1_1_0\npolicy_types:\n onap.policies.controlloop.guard.Common:\n derived_from: tosca.policies.Root\n version: 1.0.0\n description: |\n This is the base Policy Type for Guard policies that guard the execution of Operational\n Policies.\n properties:\n actor:\n type: string\n description: Specifies the Actor the guard applies to.\n required: true\n operation:\n type: string\n description: Specified the operation that the actor is performing the guard applies to.\n required: true\n timeRange:\n type: tosca.datatypes.TimeInterval\n description: |\n An optional range of time during the day the guard policy is valid for.\n required: false\n id:\n type: string\n description: The Control Loop id this applies to.\n required: false\n onap.policies.controlloop.guard.common.MinMax:\n derived_from: onap.policies.controlloop.guard.Common\n type_version: 1.0.0\n version: 1.0.0\n description: Supports Min/Max number of entity for scaling operations\n properties:\n min:\n type: integer\n required: true\n description: The minimum instances of this entity\n max:\n type: integer\n required: false\n description: The maximum instances of this entity',NULL); -INSERT INTO `policy_models` VALUES ('onap.policies.controlloop.operational.common.Apex','1.0.0','Not found','2020-03-10 15:34:16.007394','Not found','2020-03-10 15:34:16.743212','Apex','tosca_definitions_version: tosca_simple_yaml_1_1_0\npolicy_types:\n onap.policies.controlloop.operational.common.Apex:\n derived_from: onap.policies.controlloop.operational.Common\n type_version: 1.0.0\n version: 1.0.0\n description: Operational policies for Apex PDP\n properties:\n engineServiceParameters:\n type: string\n description: The engine parameters like name, instanceCount, policy implementation, parameters etc.\n required: true\n eventInputParameters:\n type: string\n description: The event input parameters.\n required: true\n eventOutputParameters:\n type: string\n description: The event output parameters.\n required: true\n javaProperties:\n type: string\n description: Name/value pairs of properties to be set for APEX if needed.\n required: false\n onap.policies.controlloop.operational.Common:\n derived_from: tosca.policies.Root\n version: 1.0.0\n description: |\n Operational Policy for Control Loop execution. Originated in Frankfurt to support TOSCA Compliant\n Policy Types. This does NOT support the legacy Policy YAML policy type.\n properties:\n id:\n type: string\n description: The unique control loop id.\n required: true\n timeout:\n type: integer\n description: |\n Overall timeout for executing all the operations. This timeout should equal or exceed the total\n timeout for each operation listed.\n required: true\n abatement:\n type: boolean\n description: Whether an abatement event message will be expected for the control loop from DCAE.\n required: true\n default: false\n trigger:\n type: string\n description: Initial operation to execute upon receiving an Onset event message for the Control Loop.\n required: true\n operations:\n type: list\n description: List of operations to be performed when Control Loop is triggered.\n required: true\n entry_schema:\n type: onap.datatype.controlloop.Operation\ndata_types:\n onap.datatype.controlloop.Target:\n derived_from: tosca.datatypes.Root\n description: Definition for a entity in A&AI to perform a control loop operation on\n properties:\n targetType:\n type: string\n description: Category for the target type\n required: true\n constraints:\n - valid_values: [VNF, VM, VFMODULE, PNF]\n entityIds:\n type: map\n description: |\n Map of values that identify the resource. If none are provided, it is assumed that the\n entity that generated the ONSET event will be the target.\n required: false\n entry_schema:\n type: string\n\n onap.datatype.controlloop.Actor:\n derived_from: tosca.datatypes.Root\n description: An actor/operation/target definition\n properties:\n actor:\n type: string\n description: The actor performing the operation.\n required: true\n operation:\n type: string\n description: The operation the actor is performing.\n required: true\n target:\n type: onap.datatype.controlloop.Target\n description: The resource the operation should be performed on.\n required: true\n metadata:\n clamp_possible_values: \n payload:\n type: map\n description: Name/value pairs of payload information passed by Policy to the actor\n required: false\n entry_schema:\n type: string\n\n onap.datatype.controlloop.Operation:\n derived_from: tosca.datatypes.Root\n description: An operation supported by an actor\n properties:\n id:\n type: string\n description: Unique identifier for the operation\n required: true\n description:\n type: string\n description: A user-friendly description of the intent for the operation\n required: false\n operation:\n type: onap.datatype.controlloop.Actor\n description: The definition of the operation to be performed.\n required: true\n metadata:\n clamp_possible_values: \n timeout:\n type: integer\n description: The amount of time for the actor to perform the operation.\n required: true\n retries:\n type: integer\n description: The number of retries the actor should attempt to perform the operation.\n required: true\n default: 0\n success:\n type: string\n description: Points to the operation to invoke on success. A value of \"final_success\" indicates and end to the operation.\n required: false\n default: final_success\n failure:\n type: string\n description: Points to the operation to invoke on Actor operation failure.\n required: false\n default: final_failure\n failure_timeout:\n type: string\n description: Points to the operation to invoke when the time out for the operation occurs.\n required: false\n default: final_failure_timeout\n failure_retries:\n type: string\n description: Points to the operation to invoke when the current operation has exceeded its max retries.\n required: false\n default: final_failure_retries\n failure_exception:\n type: string\n description: Points to the operation to invoke when the current operation causes an exception.\n required: false\n default: final_failure_exception\n failure_guard:\n type: string\n description: Points to the operation to invoke when the current operation is blocked due to guard policy enforcement.\n required: false\n default: final_failure_guard','{\n \"supportedPdpGroups\": [\n {\n \"controlloop\": [\n \"drools\"\n ]\n }\n ]\n}'); -INSERT INTO `policy_models` VALUES ('onap.policies.controlloop.operational.common.Drools','1.0.0','Not found','2020-03-10 15:34:16.007394','Not found','2020-03-10 15:34:16.776393','Drools','tosca_definitions_version: tosca_simple_yaml_1_1_0\npolicy_types:\n onap.policies.controlloop.operational.common.Drools:\n derived_from: onap.policies.controlloop.operational.Common\n type_version: 1.0.0\n version: 1.0.0\n description: Operational policies for Drools PDP\n properties:\n controllerName:\n type: string\n description: Drools controller properties\n required: false\n onap.policies.controlloop.operational.Common:\n derived_from: tosca.policies.Root\n version: 1.0.0\n description: |\n Operational Policy for Control Loop execution. Originated in Frankfurt to support TOSCA Compliant\n Policy Types. This does NOT support the legacy Policy YAML policy type.\n properties:\n id:\n type: string\n description: The unique control loop id.\n required: true\n timeout:\n type: integer\n description: |\n Overall timeout for executing all the operations. This timeout should equal or exceed the total\n timeout for each operation listed.\n required: true\n abatement:\n type: boolean\n description: Whether an abatement event message will be expected for the control loop from DCAE.\n required: true\n default: false\n trigger:\n type: string\n description: Initial operation to execute upon receiving an Onset event message for the Control Loop.\n required: true\n operations:\n type: list\n description: List of operations to be performed when Control Loop is triggered.\n required: true\n entry_schema:\n type: onap.datatype.controlloop.Operation\ndata_types:\n onap.datatype.controlloop.Target:\n derived_from: tosca.datatypes.Root\n description: Definition for a entity in A&AI to perform a control loop operation on\n properties:\n targetType:\n type: string\n description: Category for the target type\n required: true\n constraints:\n - valid_values: [VNF, VM, VFMODULE, PNF]\n entityIds:\n type: map\n description: |\n Map of values that identify the resource. If none are provided, it is assumed that the\n entity that generated the ONSET event will be the target.\n required: false\n entry_schema:\n type: string\n\n onap.datatype.controlloop.Actor:\n derived_from: tosca.datatypes.Root\n description: An actor/operation/target definition\n properties:\n actor:\n type: string\n description: The actor performing the operation.\n required: true\n operation:\n type: string\n description: The operation the actor is performing.\n required: true\n target:\n type: onap.datatype.controlloop.Target\n description: The resource the operation should be performed on.\n required: true\n metadata:\n clamp_possible_values: \n payload:\n type: map\n description: Name/value pairs of payload information passed by Policy to the actor\n required: false\n entry_schema:\n type: string\n\n onap.datatype.controlloop.Operation:\n derived_from: tosca.datatypes.Root\n description: An operation supported by an actor\n properties:\n id:\n type: string\n description: Unique identifier for the operation\n required: true\n description:\n type: string\n description: A user-friendly description of the intent for the operation\n required: false\n operation:\n type: onap.datatype.controlloop.Actor\n description: The definition of the operation to be performed.\n required: true\n metadata:\n clamp_possible_values: \n timeout:\n type: integer\n description: The amount of time for the actor to perform the operation.\n required: true\n retries:\n type: integer\n description: The number of retries the actor should attempt to perform the operation.\n required: true\n default: 0\n success:\n type: string\n description: Points to the operation to invoke on success. A value of \"final_success\" indicates and end to the operation.\n required: false\n default: final_success\n failure:\n type: string\n description: Points to the operation to invoke on Actor operation failure.\n required: false\n default: final_failure\n failure_timeout:\n type: string\n description: Points to the operation to invoke when the time out for the operation occurs.\n required: false\n default: final_failure_timeout\n failure_retries:\n type: string\n description: Points to the operation to invoke when the current operation has exceeded its max retries.\n required: false\n default: final_failure_retries\n failure_exception:\n type: string\n description: Points to the operation to invoke when the current operation causes an exception.\n required: false\n default: final_failure_exception\n failure_guard:\n type: string\n description: Points to the operation to invoke when the current operation is blocked due to guard policy enforcement.\n required: false\n default: final_failure_guard','{\n \"supportedPdpGroups\": [\n {\n \"controlloop\": [\n \"drools\"\n ]\n }\n ]\n}'); -INSERT INTO `policy_models` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app','1.0.0','Not found','2020-03-10 15:34:31.141969','Not found','2020-03-10 15:34:31.141969','app','tosca_definitions_version: tosca_simple_yaml_1_1_0\npolicy_types:\n onap.policies.Monitoring:\n derived_from: tosca.policies.Root\n version: 1.0.0\n description: a base policy type for all policies that govern monitoring provisioning\n onap.policies.monitoring.cdap.tca.hi.lo.app:\n derived_from: onap.policies.Monitoring\n version: 1.0.0\n properties:\n tca_policy:\n type: onap.datatypes.monitoring.tca_policy\n description: TCA Policy JSON\n required: true\ndata_types:\n onap.datatypes.monitoring.metricsPerEventName:\n derived_from: tosca.datatypes.Root\n properties:\n controlLoopSchemaType:\n type: string\n required: true\n description: Specifies Control Loop Schema Type for the event Name e.g. VNF, VM\n constraints:\n - valid_values:\n - VM\n - VNF\n eventName:\n type: string\n required: true\n description: Event name to which thresholds need to be applied\n policyName:\n type: string\n required: true\n description: TCA Policy Scope Name\n policyScope:\n type: string\n required: true\n description: TCA Policy Scope\n policyVersion:\n type: string\n required: true\n description: TCA Policy Scope Version\n thresholds:\n type: list\n required: true\n description: Thresholds associated with eventName\n entry_schema:\n type: onap.datatypes.monitoring.thresholds\n onap.datatypes.monitoring.tca_policy:\n derived_from: tosca.datatypes.Root\n properties:\n domain:\n type: string\n required: true\n description: Domain name to which TCA needs to be applied\n default: measurementsForVfScaling\n constraints:\n - equal: measurementsForVfScaling\n metricsPerEventName:\n type: list\n required: true\n description: Contains eventName and threshold details that need to be applied to given eventName\n entry_schema:\n type: onap.datatypes.monitoring.metricsPerEventName\n onap.datatypes.monitoring.thresholds:\n derived_from: tosca.datatypes.Root\n properties:\n closedLoopControlName:\n type: string\n required: true\n description: Closed Loop Control Name associated with the threshold\n closedLoopEventStatus:\n type: string\n required: true\n description: Closed Loop Event Status of the threshold\n constraints:\n - valid_values:\n - ONSET\n - ABATED\n direction:\n type: string\n required: true\n description: Direction of the threshold\n constraints:\n - valid_values:\n - LESS\n - LESS_OR_EQUAL\n - GREATER\n - GREATER_OR_EQUAL\n - EQUAL\n fieldPath:\n type: string\n required: true\n description: Json field Path as per CEF message which needs to be analyzed for TCA\n constraints:\n - valid_values:\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage\n - $.event.measurementsForVfScalingFields.meanRequestLatency\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed\n - $.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\n severity:\n type: string\n required: true\n description: Threshold Event Severity\n constraints:\n - valid_values:\n - CRITICAL\n - MAJOR\n - MINOR\n - WARNING\n - NORMAL\n thresholdValue:\n type: integer\n required: true\n description: Threshold value for the field Path inside CEF message\n version:\n type: string\n required: true\n description: Version number associated with the threshold',NULL); -INSERT INTO `policy_models` VALUES ('onap.policies.operational.legacy','1.0.0','Not found','2020-03-10 15:34:09.817128','Not found','2020-03-10 15:34:09.817128','OperationalPolicyLegacy','',NULL); +INSERT INTO `policy_models` VALUES ('onap.policies.controlloop.guard.common.Blacklist','1.0.0','Not found','2020-03-13 11:00:00.756848','Not found','2020-03-13 11:00:01.083764','Blacklist','tosca_definitions_version: tosca_simple_yaml_1_1_0\npolicy_types:\n onap.policies.controlloop.guard.Common:\n derived_from: tosca.policies.Root\n version: 1.0.0\n description: |\n This is the base Policy Type for Guard policies that guard the execution of Operational\n Policies.\n properties:\n actor:\n type: string\n description: Specifies the Actor the guard applies to.\n required: true\n operation:\n type: string\n description: Specified the operation that the actor is performing the guard applies to.\n required: true\n timeRange:\n type: tosca.datatypes.TimeInterval\n description: |\n An optional range of time during the day the guard policy is valid for.\n required: false\n id:\n type: string\n description: The Control Loop id this applies to.\n required: false\n onap.policies.controlloop.guard.common.Blacklist:\n derived_from: onap.policies.controlloop.guard.Common\n type_version: 1.0.0\n version: 1.0.0\n description: Supports blacklist of entity id\'s from performing control loop actions on.\n properties:\n blacklist:\n type: list\n description: List of entity id\'s\n required: true\n entry_schema:\n type: string','{\n \"supportedPdpGroups\": [\n {\n \"controlloop\": [\n \"xacml\"\n ]\n }\n ]\n}'); +INSERT INTO `policy_models` VALUES ('onap.policies.controlloop.guard.common.FrequencyLimiter','1.0.0','Not found','2020-03-13 11:00:00.565289','Not found','2020-03-13 11:00:01.126892','FrequencyLimiter','tosca_definitions_version: tosca_simple_yaml_1_1_0\npolicy_types:\n onap.policies.controlloop.guard.Common:\n derived_from: tosca.policies.Root\n version: 1.0.0\n description: |\n This is the base Policy Type for Guard policies that guard the execution of Operational\n Policies.\n properties:\n actor:\n type: string\n description: Specifies the Actor the guard applies to.\n required: true\n operation:\n type: string\n description: Specified the operation that the actor is performing the guard applies to.\n required: true\n timeRange:\n type: tosca.datatypes.TimeInterval\n description: |\n An optional range of time during the day the guard policy is valid for.\n required: false\n id:\n type: string\n description: The Control Loop id this applies to.\n required: false\n onap.policies.controlloop.guard.common.FrequencyLimiter:\n derived_from: onap.policies.controlloop.guard.Common\n type_version: 1.0.0\n version: 1.0.0\n description: Supports limiting the frequency of actions being taken by a Actor.\n properties:\n timeWindow:\n type: integer\n description: The time window to count the actions against.\n required: true\n timeUnits:\n type: string\n description: The units of time the window is counting.\n constraints:\n - valid_values: [\"second\", \"minute\", \"hour\", \"day\", \"week\", \"month\", \"year\"]\n limit:\n type: integer\n description: The limit\n required: true\n constraints:\n - greater_than: 0','{\n \"supportedPdpGroups\": [\n {\n \"controlloop\": [\n \"xacml\"\n ]\n }\n ]\n}'); +INSERT INTO `policy_models` VALUES ('onap.policies.controlloop.guard.common.MinMax','2.0.0','Not found','2020-03-13 11:00:00.562857','Not found','2020-03-13 11:00:00.562857','MinMax','tosca_definitions_version: tosca_simple_yaml_1_1_0\npolicy_types:\n onap.policies.controlloop.guard.Common:\n derived_from: tosca.policies.Root\n version: 1.0.0\n description: |\n This is the base Policy Type for Guard policies that guard the execution of Operational\n Policies.\n properties:\n actor:\n type: string\n description: Specifies the Actor the guard applies to.\n required: true\n operation:\n type: string\n description: Specified the operation that the actor is performing the guard applies to.\n required: true\n timeRange:\n type: tosca.datatypes.TimeInterval\n description: |\n An optional range of time during the day the guard policy is valid for.\n required: false\n id:\n type: string\n description: The Control Loop id this applies to.\n required: false\n onap.policies.controlloop.guard.common.MinMax:\n derived_from: onap.policies.controlloop.guard.Common\n type_version: 1.0.0\n version: 1.0.0\n description: Supports Min/Max number of entity for scaling operations\n properties:\n min:\n type: integer\n required: true\n description: The minimum instances of this entity\n max:\n type: integer\n required: false\n description: The maximum instances of this entity',NULL); +INSERT INTO `policy_models` VALUES ('onap.policies.controlloop.operational.common.Apex','1.0.0','Not found','2020-03-13 11:00:00.560476','Not found','2020-03-13 11:00:01.159737','Apex','tosca_definitions_version: tosca_simple_yaml_1_1_0\npolicy_types:\n onap.policies.controlloop.operational.common.Apex:\n derived_from: onap.policies.controlloop.operational.Common\n type_version: 1.0.0\n version: 1.0.0\n description: Operational policies for Apex PDP\n properties:\n engineServiceParameters:\n type: string\n description: The engine parameters like name, instanceCount, policy implementation, parameters etc.\n required: true\n eventInputParameters:\n type: string\n description: The event input parameters.\n required: true\n eventOutputParameters:\n type: string\n description: The event output parameters.\n required: true\n javaProperties:\n type: string\n description: Name/value pairs of properties to be set for APEX if needed.\n required: false\n onap.policies.controlloop.operational.Common:\n derived_from: tosca.policies.Root\n version: 1.0.0\n description: |\n Operational Policy for Control Loop execution. Originated in Frankfurt to support TOSCA Compliant\n Policy Types. This does NOT support the legacy Policy YAML policy type.\n properties:\n id:\n type: string\n description: The unique control loop id.\n required: true\n timeout:\n type: integer\n description: |\n Overall timeout for executing all the operations. This timeout should equal or exceed the total\n timeout for each operation listed.\n required: true\n abatement:\n type: boolean\n description: Whether an abatement event message will be expected for the control loop from DCAE.\n required: true\n default: false\n trigger:\n type: string\n description: Initial operation to execute upon receiving an Onset event message for the Control Loop.\n required: true\n operations:\n type: list\n description: List of operations to be performed when Control Loop is triggered.\n required: true\n entry_schema:\n type: onap.datatype.controlloop.Operation\ndata_types:\n onap.datatype.controlloop.Target:\n derived_from: tosca.datatypes.Root\n description: Definition for a entity in A&AI to perform a control loop operation on\n properties:\n targetType:\n type: string\n description: Category for the target type\n required: true\n constraints:\n - valid_values: [VNF, VM, VFMODULE, PNF]\n entityIds:\n type: map\n description: |\n Map of values that identify the resource. If none are provided, it is assumed that the\n entity that generated the ONSET event will be the target.\n required: false\n entry_schema:\n type: string\n\n onap.datatype.controlloop.Actor:\n derived_from: tosca.datatypes.Root\n description: An actor/operation/target definition\n properties:\n actor:\n type: string\n description: The actor performing the operation.\n required: true\n operation:\n type: string\n description: The operation the actor is performing.\n required: true\n target:\n type: onap.datatype.controlloop.Target\n description: The resource the operation should be performed on.\n required: true\n metadata:\n clamp_possible_values: test\n payload:\n type: map\n description: Name/value pairs of payload information passed by Policy to the actor\n required: false\n entry_schema:\n type: string\n\n onap.datatype.controlloop.Operation:\n derived_from: tosca.datatypes.Root\n description: An operation supported by an actor\n properties:\n id:\n type: string\n description: Unique identifier for the operation\n required: true\n description:\n type: string\n description: A user-friendly description of the intent for the operation\n required: false\n operation:\n type: onap.datatype.controlloop.Actor\n description: The definition of the operation to be performed.\n required: true\n metadata:\n clamp_possible_values: test\n timeout:\n type: integer\n description: The amount of time for the actor to perform the operation.\n required: true\n retries:\n type: integer\n description: The number of retries the actor should attempt to perform the operation.\n required: true\n default: 0\n success:\n type: string\n description: Points to the operation to invoke on success. A value of \"final_success\" indicates and end to the operation.\n required: false\n default: final_success\n failure:\n type: string\n description: Points to the operation to invoke on Actor operation failure.\n required: false\n default: final_failure\n failure_timeout:\n type: string\n description: Points to the operation to invoke when the time out for the operation occurs.\n required: false\n default: final_failure_timeout\n failure_retries:\n type: string\n description: Points to the operation to invoke when the current operation has exceeded its max retries.\n required: false\n default: final_failure_retries\n failure_exception:\n type: string\n description: Points to the operation to invoke when the current operation causes an exception.\n required: false\n default: final_failure_exception\n failure_guard:\n type: string\n description: Points to the operation to invoke when the current operation is blocked due to guard policy enforcement.\n required: false\n default: final_failure_guard','{\n \"supportedPdpGroups\": [\n {\n \"controlloop\": [\n \"drools\"\n ]\n }\n ]\n}'); +INSERT INTO `policy_models` VALUES ('onap.policies.controlloop.operational.common.Drools','1.0.0','Not found','2020-03-13 11:00:00.560585','Not found','2020-03-13 11:00:01.212654','Drools','tosca_definitions_version: tosca_simple_yaml_1_1_0\npolicy_types:\n onap.policies.controlloop.operational.common.Drools:\n derived_from: onap.policies.controlloop.operational.Common\n type_version: 1.0.0\n version: 1.0.0\n description: Operational policies for Drools PDP\n properties:\n controllerName:\n type: string\n description: Drools controller properties\n required: false\n onap.policies.controlloop.operational.Common:\n derived_from: tosca.policies.Root\n version: 1.0.0\n description: |\n Operational Policy for Control Loop execution. Originated in Frankfurt to support TOSCA Compliant\n Policy Types. This does NOT support the legacy Policy YAML policy type.\n properties:\n id:\n type: string\n description: The unique control loop id.\n required: true\n timeout:\n type: integer\n description: |\n Overall timeout for executing all the operations. This timeout should equal or exceed the total\n timeout for each operation listed.\n required: true\n abatement:\n type: boolean\n description: Whether an abatement event message will be expected for the control loop from DCAE.\n required: true\n default: false\n trigger:\n type: string\n description: Initial operation to execute upon receiving an Onset event message for the Control Loop.\n required: true\n operations:\n type: list\n description: List of operations to be performed when Control Loop is triggered.\n required: true\n entry_schema:\n type: onap.datatype.controlloop.Operation\ndata_types:\n onap.datatype.controlloop.Target:\n derived_from: tosca.datatypes.Root\n description: Definition for a entity in A&AI to perform a control loop operation on\n properties:\n targetType:\n type: string\n description: Category for the target type\n required: true\n constraints:\n - valid_values: [VNF, VM, VFMODULE, PNF]\n entityIds:\n type: map\n description: |\n Map of values that identify the resource. If none are provided, it is assumed that the\n entity that generated the ONSET event will be the target.\n required: false\n entry_schema:\n type: string\n\n onap.datatype.controlloop.Actor:\n derived_from: tosca.datatypes.Root\n description: An actor/operation/target definition\n properties:\n actor:\n type: string\n description: The actor performing the operation.\n required: true\n operation:\n type: string\n description: The operation the actor is performing.\n required: true\n target:\n type: onap.datatype.controlloop.Target\n description: The resource the operation should be performed on.\n required: true\n metadata:\n clamp_possible_values: test\n payload:\n type: map\n description: Name/value pairs of payload information passed by Policy to the actor\n required: false\n entry_schema:\n type: string\n\n onap.datatype.controlloop.Operation:\n derived_from: tosca.datatypes.Root\n description: An operation supported by an actor\n properties:\n id:\n type: string\n description: Unique identifier for the operation\n required: true\n description:\n type: string\n description: A user-friendly description of the intent for the operation\n required: false\n operation:\n type: onap.datatype.controlloop.Actor\n description: The definition of the operation to be performed.\n required: true\n metadata:\n clamp_possible_values: test\n timeout:\n type: integer\n description: The amount of time for the actor to perform the operation.\n required: true\n retries:\n type: integer\n description: The number of retries the actor should attempt to perform the operation.\n required: true\n default: 0\n success:\n type: string\n description: Points to the operation to invoke on success. A value of \"final_success\" indicates and end to the operation.\n required: false\n default: final_success\n failure:\n type: string\n description: Points to the operation to invoke on Actor operation failure.\n required: false\n default: final_failure\n failure_timeout:\n type: string\n description: Points to the operation to invoke when the time out for the operation occurs.\n required: false\n default: final_failure_timeout\n failure_retries:\n type: string\n description: Points to the operation to invoke when the current operation has exceeded its max retries.\n required: false\n default: final_failure_retries\n failure_exception:\n type: string\n description: Points to the operation to invoke when the current operation causes an exception.\n required: false\n default: final_failure_exception\n failure_guard:\n type: string\n description: Points to the operation to invoke when the current operation is blocked due to guard policy enforcement.\n required: false\n default: final_failure_guard','{\n \"supportedPdpGroups\": [\n {\n \"controlloop\": [\n \"drools\"\n ]\n }\n ]\n}'); +INSERT INTO `policy_models` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app','1.0.0','Not found','2020-03-13 10:59:53.506410','Not found','2020-03-13 11:00:01.250555','app','tosca_definitions_version: tosca_simple_yaml_1_1_0\npolicy_types:\n onap.policies.Monitoring:\n derived_from: tosca.policies.Root\n version: 1.0.0\n description: a base policy type for all policies that govern monitoring provisioning\n onap.policies.monitoring.cdap.tca.hi.lo.app:\n derived_from: onap.policies.Monitoring\n version: 1.0.0\n properties:\n tca_policy:\n type: onap.datatypes.monitoring.tca_policy\n description: TCA Policy JSON\n required: true\ndata_types:\n onap.datatypes.monitoring.metricsPerEventName:\n derived_from: tosca.datatypes.Root\n properties:\n controlLoopSchemaType:\n type: string\n required: true\n description: Specifies Control Loop Schema Type for the event Name e.g. VNF, VM\n constraints:\n - valid_values:\n - VM\n - VNF\n eventName:\n type: string\n required: true\n description: Event name to which thresholds need to be applied\n policyName:\n type: string\n required: true\n description: TCA Policy Scope Name\n policyScope:\n type: string\n required: true\n description: TCA Policy Scope\n policyVersion:\n type: string\n required: true\n description: TCA Policy Scope Version\n thresholds:\n type: list\n required: true\n description: Thresholds associated with eventName\n entry_schema:\n type: onap.datatypes.monitoring.thresholds\n onap.datatypes.monitoring.tca_policy:\n derived_from: tosca.datatypes.Root\n properties:\n domain:\n type: string\n required: true\n description: Domain name to which TCA needs to be applied\n default: measurementsForVfScaling\n constraints:\n - equal: measurementsForVfScaling\n metricsPerEventName:\n type: list\n required: true\n description: Contains eventName and threshold details that need to be applied to given eventName\n entry_schema:\n type: onap.datatypes.monitoring.metricsPerEventName\n onap.datatypes.monitoring.thresholds:\n derived_from: tosca.datatypes.Root\n properties:\n closedLoopControlName:\n type: string\n required: true\n description: Closed Loop Control Name associated with the threshold\n closedLoopEventStatus:\n type: string\n required: true\n description: Closed Loop Event Status of the threshold\n constraints:\n - valid_values:\n - ONSET\n - ABATED\n direction:\n type: string\n required: true\n description: Direction of the threshold\n constraints:\n - valid_values:\n - LESS\n - LESS_OR_EQUAL\n - GREATER\n - GREATER_OR_EQUAL\n - EQUAL\n fieldPath:\n type: string\n required: true\n description: Json field Path as per CEF message which needs to be analyzed for TCA\n constraints:\n - valid_values:\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage\n - $.event.measurementsForVfScalingFields.meanRequestLatency\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed\n - $.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\n severity:\n type: string\n required: true\n description: Threshold Event Severity\n constraints:\n - valid_values:\n - CRITICAL\n - MAJOR\n - MINOR\n - WARNING\n - NORMAL\n thresholdValue:\n type: integer\n required: true\n description: Threshold value for the field Path inside CEF message\n version:\n type: string\n required: true\n description: Version number associated with the threshold','{\n \"supportedPdpGroups\": [\n {\n \"monitoring\": [\n \"xacml\"\n ]\n }\n ]\n}'); +INSERT INTO `policy_models` VALUES ('onap.policies.operational.legacy','1.0.0','Not found','2020-03-13 10:58:57.288612','Not found','2020-03-13 10:58:57.288612','OperationalPolicyLegacy','',NULL); /*!40000 ALTER TABLE `policy_models` ENABLE KEYS */; UNLOCK TABLES; @@ -180,4 +180,4 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2020-03-10 22:35:47 +-- Dump completed on 2020-03-13 18:01:08 diff --git a/src/main/java/org/onap/clamp/clds/tosca/update/ArrayField.java b/src/main/java/org/onap/clamp/clds/tosca/update/ArrayField.java deleted file mode 100644 index 61e40a1e6..000000000 --- a/src/main/java/org/onap/clamp/clds/tosca/update/ArrayField.java +++ /dev/null @@ -1,72 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2020 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.tosca.update; - -import com.google.gson.JsonArray; -import java.util.ArrayList; - -public class ArrayField { - - private ArrayList complexFields; - - /** - * Constructor from arraryList. - * - * @param arrayProperties the array properties - */ - public ArrayField(ArrayList arrayProperties) { - this.complexFields = arrayProperties; - } - - /** - * Each LinkedHashMap is parsed to extract the Array and each of its value. They are casted for the JsonObject. - * - * @return JsonArray - */ - public JsonArray deploy() { - - JsonArray subPropertyValuesArray = new JsonArray(); - for (Object arrayElement : complexFields) { - //Cast for each Primitive Type - String typeValue = arrayElement.getClass().getSimpleName(); - switch (typeValue) { - case "String": - subPropertyValuesArray.add((String) arrayElement); - break; - case "Boolean": - subPropertyValuesArray.add((Boolean) arrayElement); - break; - case "Double": - subPropertyValuesArray.add((Number) arrayElement); - break; - case "Integer": - subPropertyValuesArray.add((Number) arrayElement); - break; - default: - break; - } - } - return subPropertyValuesArray; - } -} diff --git a/src/main/java/org/onap/clamp/clds/tosca/update/Constraint.java b/src/main/java/org/onap/clamp/clds/tosca/update/Constraint.java deleted file mode 100644 index 4f6b27a6a..000000000 --- a/src/main/java/org/onap/clamp/clds/tosca/update/Constraint.java +++ /dev/null @@ -1,221 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2020 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.tosca.update; - -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.Map.Entry; - -public class Constraint { - - private LinkedHashMap constraints; - private Template template; - - public Constraint(LinkedHashMap constraints, Template template) { - this.template = template; - this.constraints = constraints; - } - - /** - * Deploy the linkedhashmap which contains the constraints, to extract them one to one. - * - * @param jsonSchema The json Schema - * @param typeProperty The ype property - * @return the json object - */ - public JsonObject deployConstraints(JsonObject jsonSchema, String typeProperty) { - for (Entry constraint : constraints.entrySet()) { - this.parseConstraint(jsonSchema, constraint.getKey(), constraint.getValue(), typeProperty); - } - return jsonSchema; - } - - /** - * Each case of Tosca constraints below parse specifically the field in the JsonObject. - * - * @param jsonSchema Json Schema - * @param nameConstraint Name constraint - * @param valueConstraint value constraint - * @param typeProperty Type Property - */ - @SuppressWarnings("unchecked") - public void parseConstraint(JsonObject jsonSchema, String nameConstraint, Object valueConstraint, - String typeProperty) { - switch (nameConstraint) { - case "equal": - checkTemplateField("const", jsonSchema, valueConstraint); - break; - case "greater_than": - checkTemplateField("exclusiveMinimum", jsonSchema, valueConstraint); - break; - case "greater_or_equal": - checkTemplateField("minimum", jsonSchema, valueConstraint); - break; - case "less_than": - checkTemplateField("exclusiveMaximum", jsonSchema, valueConstraint); - break; - case "less_or_equal": - checkTemplateField("maximum", jsonSchema, valueConstraint); - break; - case "in_range": - ArrayList limitValues = (ArrayList) valueConstraint; - checkTemplateField("minimum", jsonSchema, limitValues.get(0)); - checkTemplateField("maximum", jsonSchema, limitValues.get(1)); - break; - case "pattern": - jsonSchema.addProperty(nameConstraint, (String) valueConstraint); - break; - case "length": - this.getSpecificLength(jsonSchema, valueConstraint, typeProperty); - break; - case "min_length": - String[] prefixValues = nameConstraint.split("_"); - this.getLimitValue(jsonSchema, valueConstraint, typeProperty, prefixValues[0]); - break; - case "max_length": - String[] maxtab = nameConstraint.split("_"); - this.getLimitValue(jsonSchema, valueConstraint, typeProperty, maxtab[0]); - break; - default://valid_value - this.getValueArray(jsonSchema, valueConstraint, typeProperty); - break; - } - - } - - /** - * To be done. - * - * @param jsonSchema json schema - * @param fieldValue field value - * @param typeProperty For the complex components, get a specific number of items/properties - */ - public void getSpecificLength(JsonObject jsonSchema, Object fieldValue, String typeProperty) { - switch (typeProperty.toLowerCase()) { - case "string": - checkTemplateField("minLength", jsonSchema, fieldValue); - checkTemplateField("maxLength", jsonSchema, fieldValue); - break; - case "array": - if (fieldValue.equals(1) && template.hasFields("uniqueItems")) { - jsonSchema.addProperty("uniqueItems", true); - } else { - checkTemplateField("minItems", jsonSchema, fieldValue); - checkTemplateField("maxItems", jsonSchema, fieldValue); - } - break; - default:// Map && List - checkTemplateField("minProperties", jsonSchema, fieldValue); - checkTemplateField("maxProperties", jsonSchema, fieldValue); - break; - } - - } - - /** - * To be done. - * - * @param jsonSchema json schema - * @param fieldValue field value - * @param typeProperty type property - * @param side Get the limits fieldValue for the properties : depend of the type of the component - */ - public void getLimitValue(JsonObject jsonSchema, Object fieldValue, String typeProperty, String side) { - switch (typeProperty) { - case "string": - if (side.equals("min")) { - checkTemplateField("minLength", jsonSchema, fieldValue); - } else { - checkTemplateField("maxLength", jsonSchema, fieldValue); - } - break; - default:// Array - if (side.equals("min")) { - checkTemplateField("minItems", jsonSchema, fieldValue); - } else { - checkTemplateField("maxItems", jsonSchema, fieldValue); - } - break; - } - - } - - /** - * To be done. - * - * @param jsonSchema Json schema - * @param fieldValue field value - * @param typeProperty Get as Enum the valid values for the property - */ - public void getValueArray(JsonObject jsonSchema, Object fieldValue, String typeProperty) { - if (template.hasFields("enum")) { - JsonArray enumeration = new JsonArray(); - if (typeProperty.equals("string") || typeProperty.equals("String")) { - ArrayList arrayValues = (ArrayList) fieldValue; - for (String arrayItem : arrayValues) { - enumeration.add(arrayItem); - } - jsonSchema.add("enum", enumeration); - } else { - ArrayList arrayValues = (ArrayList) fieldValue; - for (Number arrayItem : arrayValues) { - enumeration.add(arrayItem); - } - jsonSchema.add("enum", enumeration); - } - } - } - - /** - * To be done. - * - * @param field Field - * @param jsonSchema Json schema - * @param fieldValue Simple way to avoid code duplication - */ - public void checkTemplateField(String field, JsonObject jsonSchema, Object fieldValue) { - if (template.hasFields(field)) { - String typeField = fieldValue.getClass().getSimpleName(); - switch (typeField) { - case "String": - jsonSchema.addProperty(field, (String) fieldValue); - break; - case "Integer": - jsonSchema.addProperty(field, (Integer) fieldValue); - break; - case "Number": - jsonSchema.addProperty(field, (Number) fieldValue); - break; - case "Boolean": - jsonSchema.addProperty(field, (Boolean) fieldValue); - break; - default: - break; - } - } - } - -} \ No newline at end of file diff --git a/src/main/java/org/onap/clamp/clds/tosca/update/MetadataParser.java b/src/main/java/org/onap/clamp/clds/tosca/update/MetadataParser.java deleted file mode 100644 index fb70231fb..000000000 --- a/src/main/java/org/onap/clamp/clds/tosca/update/MetadataParser.java +++ /dev/null @@ -1,46 +0,0 @@ - -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2020 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.tosca.update; - -import com.google.gson.JsonObject; -import org.onap.clamp.tosca.DictionaryService; - -public class MetadataParser { - - /** - * This method is used to start the processing of the metadata field. - * - * @param property The property metadata as Json Object - * @param dictionaryService the Dictionary service, if null nothing will be done - * @return The jsonObject structure that must be added to the json schema - */ - public static JsonObject processAllMetadataElement(Property property, DictionaryService dictionaryService) { - if (dictionaryService != null) { - return null; - } else { - return null; - } - } -} diff --git a/src/main/java/org/onap/clamp/clds/tosca/update/Property.java b/src/main/java/org/onap/clamp/clds/tosca/update/Property.java deleted file mode 100644 index 0b6e38166..000000000 --- a/src/main/java/org/onap/clamp/clds/tosca/update/Property.java +++ /dev/null @@ -1,134 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2020 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.tosca.update; - -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; -import java.util.ArrayList; -import java.util.LinkedHashMap; - -public class Property { - - /** - * name parameter is used as "key", in the LinkedHashMap of Components. - */ - private String name; - private LinkedHashMap items; - - /** - * Constructor. - * - * @param name the name - * @param items the items - */ - public Property(String name, LinkedHashMap items) { - super(); - this.name = name; - this.items = items; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public LinkedHashMap getItems() { - return items; - } - - public void setItems(LinkedHashMap items) { - this.items = items; - } - - /** - * For each primitive value, requires to get each field Value and cast it and add it in a Json. - * - * @param fieldsContent field - * @param fieldName field - * @param value value - */ - public void addFieldToJson(JsonObject fieldsContent, String fieldName, Object value) { - if (value != null) { - String typeValue = value.getClass().getSimpleName(); - switch (typeValue) { - case "String": - fieldsContent.addProperty(fieldName, (String) value); - break; - case "Boolean": - fieldsContent.addProperty(fieldName, (Boolean) value); - break; - case "Double": - fieldsContent.addProperty(fieldName, (Number) value); - break; - case "Integer": - fieldsContent.addProperty(fieldName, (Integer) value); - break; - default: - fieldsContent.add(fieldName, parseArray((ArrayList) value)); - break; - } - } - } - - /** - * If a field value is an Array, create an Instance of ArrayField to insert if in the JsonObject. - * - * @param arrayProperties array pro - * @return a json array - */ - public JsonArray parseArray(ArrayList arrayProperties) { - JsonArray arrayContent = new JsonArray(); - ArrayList arrayComponent = new ArrayList<>(); - for (Object itemArray : arrayProperties) { - arrayComponent.add(itemArray); - } - ArrayField af = new ArrayField(arrayComponent); - arrayContent = af.deploy(); - return arrayContent; - } - - /** - * Create an instance of Constraint, to extract the values and add it to the Json (according to the type - * * of the current property). - * - * @param json a json - * @param constraints constraints - * @param template template - */ - @SuppressWarnings("unchecked") - public void addConstraintsAsJson(JsonObject json, ArrayList constraints, Template template) { - for (Object constraint : constraints) { - if (constraint instanceof LinkedHashMap) { - LinkedHashMap valueConstraint = (LinkedHashMap) constraint; - Constraint constraintParser = new Constraint(valueConstraint, template); - constraintParser.deployConstraints(json, (String) getItems().get("type")); - } - } - - } - -} diff --git a/src/main/java/org/onap/clamp/clds/tosca/update/Template.java b/src/main/java/org/onap/clamp/clds/tosca/update/Template.java deleted file mode 100644 index 6a531aeea..000000000 --- a/src/main/java/org/onap/clamp/clds/tosca/update/Template.java +++ /dev/null @@ -1,224 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2020 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.tosca.update; - -import com.google.gson.JsonObject; -import java.util.ArrayList; -import java.util.List; - -public class Template { - - /** - * name parameter is used as "key", in the LinkedHashMap of Templates. - */ - private String name; - private List templateFields; - - public Template(String name) { - this.name = name; - this.templateFields = new ArrayList<>(); - } - - public Template(String name, List templateFields) { - this.name = name; - this.templateFields = templateFields; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public List getTemplateFields() { - return templateFields; - } - - public void setTemplateFields(List templateFields) { - this.templateFields = templateFields; - } - - /** - * Search in fields if fieldName exists. - * - * @param fieldName The field name - * @return Ture if it exists, false otherwise - */ - public boolean hasFields(String fieldName) { - for (TemplateField templateField : this.getTemplateFields()) { - if (templateField.getTitle().equals(fieldName)) { - return true; - } - } - return false; - } - - /** - * Get a specific Field. - * - * @param fieldName The field name - * @return THe Field found - */ - public TemplateField getSpecificField(String fieldName) { - for (TemplateField templateField : this.getTemplateFields()) { - if (templateField.getTitle().equals(fieldName)) { - return templateField; - } - } - return null; - } - - public void addField(TemplateField templateField) { - templateFields.add(templateField); - } - - public void removeField(TemplateField templateField) { - templateFields.remove(templateField); - } - - /** - * Enable or disable the visibility. - * - * @param nameField THe field name - * @param state True or false - */ - public void setVisibility(String nameField, boolean state) { - for (TemplateField templateField : this.templateFields) { - if (templateField.getTitle().equals(nameField)) { - templateField.setVisible(state); - } - } - } - - /** - * This method defines if a field is static or not. - * - * @param nameField The name of the field - * @param state true or false - */ - public void setStatic(String nameField, boolean state) { - for (TemplateField templateField : this.templateFields) { - if (templateField.getTitle().equals(nameField)) { - templateField.setStaticValue(state); - } - } - } - - /** - * This method updates the value of a specfic field. - * - * @param nameField The name of the field - * @param newValue The new value as Object - */ - public void updateValueField(String nameField, Object newValue) { - for (TemplateField templateField : this.templateFields) { - if (templateField.getTitle().equals(nameField)) { - templateField.setValue(newValue); - } - } - } - - /** - * Compare two templates : size and their contents. - * - * @param template the template - * @return a boolean - */ - public boolean checkFields(Template template) { - boolean duplicateFields = false; - if (template.getTemplateFields().size() == this.getTemplateFields().size()) { - int countMatchingFields = 0; - //loop each component of first - for (TemplateField templateFieldToCheck : template.getTemplateFields()) { - for (TemplateField templateField : this.getTemplateFields()) { - if (templateFieldToCheck.compareWithField(templateField)) { - countMatchingFields++; - } - } - } - - if (template.getTemplateFields().size() == countMatchingFields) { - duplicateFields = true; - } - } - return duplicateFields; - } - - /** - * This method gets the specific field status. - * - * @param field The field name - * @return true or false - */ - public boolean fieldStaticStatus(String field) { - if (this.hasFields(field) && this.getSpecificField(field).getStaticValue().equals(true) - && this.getSpecificField(field).getValue() != null) { - return true; - } - return false; - } - - public boolean isVisible(String field) { - return this.getSpecificField(field).getVisible(); - } - - /** - * Set the value of a property of the Field in the json. - * - * @param jsonSchema The Json schema - * @param fieldName The Field name - * @param value The value - */ - public void setValue(JsonObject jsonSchema, String fieldName, String value) { - if (isVisible(fieldName)) { - if (fieldStaticStatus(fieldName)) { - String defaultValue = (String) this.getSpecificField(fieldName).getValue(); - jsonSchema.addProperty(fieldName, defaultValue); - } - else { - jsonSchema.addProperty(fieldName, value); - } - } - } - - /** - * Inject a static value in the json. - * - * @param jsonSchema The json schema object - * @param fieldName The field name - */ - public void injectStaticValue(JsonObject jsonSchema, String fieldName) { - if (isVisible(fieldName)) { - TemplateField toInject = this.getSpecificField(fieldName); - jsonSchema.addProperty(fieldName, (String) toInject.getValue()); - } - } - - @Override - public String toString() { - return " templateFields : " + templateFields; - } -} diff --git a/src/main/java/org/onap/clamp/clds/tosca/update/TemplateField.java b/src/main/java/org/onap/clamp/clds/tosca/update/TemplateField.java deleted file mode 100644 index 34446436a..000000000 --- a/src/main/java/org/onap/clamp/clds/tosca/update/TemplateField.java +++ /dev/null @@ -1,148 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2020 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.tosca.update; - -public class TemplateField { - private String title; - private Object value; - private Boolean visible; - private Boolean staticValue; - - public TemplateField(String title) { - this.title = title; - } - - /** - * Constructor. - * - * @param title The title - * @param value The value - * @param visible visible or not - * @param staticValue The static value - */ - public TemplateField(String title, Object value, Boolean visible, Boolean staticValue) { - this.title = title; - this.value = value; - this.visible = visible; - this.staticValue = staticValue; - } - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } - - public Object getValue() { - return value; - } - - public void setValue(Object value) { - this.value = value; - } - - public Boolean getVisible() { - return visible; - } - - public void setVisible(Boolean visible) { - this.visible = visible; - } - - public Boolean getStaticValue() { - return staticValue; - } - - public void setStaticValue(Boolean staticValue) { - this.staticValue = staticValue; - } - - public String toString() { - return title + " " + value + " " + visible + " " + staticValue; - } - - /** - * This method compares two fields. - * - * @param otherField Compare the current object with the one specified - * @return true if they are totally equals, false otherwise - */ - public boolean compareWithField(Object otherField) { - if (this == otherField) { - return true; - } - if (otherField == null || getClass() != otherField.getClass()) { - return false; - } - - TemplateField templateField = (TemplateField) otherField; - - if (title != null ? !title.equals(templateField.title) : templateField.title != null) { - return false; - } - if (value != null ? !value.equals(templateField.value) : templateField.value != null) { - return false; - } - if (visible != null ? !visible.equals(templateField.visible) : templateField.visible != null) { - return false; - } - return staticValue != null ? staticValue.equals(templateField.staticValue) : templateField.staticValue == null; - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object == null || getClass() != object.getClass()) { - return false; - } - - TemplateField templateField = (TemplateField) object; - - return title != null ? title.equals(templateField.title) : templateField.title == null; - } - - @Override - public int hashCode() { - return title != null ? title.hashCode() : 0; - } - - /** - * This method test the entire equality. - * - * @param templateField1 object one - * @param templateField2 object two - * @return true if they are totally equals (all attributes, false otherwise - */ - public static boolean fieldsEquals(TemplateField templateField1, TemplateField templateField2) { - return (templateField2.getTitle().equals(templateField1.getTitle()) - && templateField2.getValue().equals(templateField1.getValue()) - && templateField2.getVisible().equals(templateField1.getVisible()) - && templateField2.getStaticValue().equals(templateField1.getStaticValue())); - } - -} diff --git a/src/main/java/org/onap/clamp/clds/tosca/update/ToscaConverterManager.java b/src/main/java/org/onap/clamp/clds/tosca/update/ToscaConverterManager.java deleted file mode 100644 index b3224b045..000000000 --- a/src/main/java/org/onap/clamp/clds/tosca/update/ToscaConverterManager.java +++ /dev/null @@ -1,192 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2020 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.tosca.update; - -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import java.io.IOException; -import java.util.Collection; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import org.onap.clamp.clds.util.JsonUtils; - -public class ToscaConverterManager { - - private LinkedHashMap templates; - private LinkedHashMap components; - private ToscaConverterToJson toscaConverterToJson; - private ToscaItemsParser toscaItemsParser; - - /** - * Constructor. - * - * @param toscaYamlContent Policy Tosca Yaml content as string - * @param nativeToscaDatatypes The tosca yaml with tosca native datatypes - * @param templateProperties template properties as string - * @throws IOException in case of failure - */ - public ToscaConverterManager(String toscaYamlContent, String nativeToscaDatatypes, String templateProperties) - throws IOException { - if (toscaYamlContent != null && !toscaYamlContent.isEmpty()) { - this.toscaItemsParser = new ToscaItemsParser(toscaYamlContent, nativeToscaDatatypes); - this.components = toscaItemsParser.getAllItemsFound(); - this.templates = initializeTemplates(templateProperties); - } - else { - components = null; - } - } - - //GETTERS & SETTERS - public LinkedHashMap getComponents() { - return components; - } - - public void setComponents(LinkedHashMap components) { - this.components = components; - } - - public ToscaConverterToJson getParseToJson() { - return toscaConverterToJson; - } - - public void setParseToJson(ToscaConverterToJson toscaConverterToJson) { - this.toscaConverterToJson = toscaConverterToJson; - } - - public LinkedHashMap getTemplates() { - return templates; - } - - public void setTemplates(LinkedHashMap templates) { - this.templates = templates; - } - - public ToscaItemsParser getToscaItemsParser() { - return toscaItemsParser; - } - - /** - * Add a template. - * - * @param name name - * @param templateFields fields - */ - public void addTemplate(String name, List templateFields) { - Template template = new Template(name, templateFields); - //If it is true, the operation does not have any interest : - // replace OR put two different object with the same body - if (!templates.containsKey(template.getName()) || !this.hasTemplate(template)) { - this.templates.put(template.getName(), template); - } - } - - /** - * By name, find and remove a given template. - * - * @param nameTemplate name template - */ - public void removeTemplate(String nameTemplate) { - this.templates.remove(nameTemplate); - } - - /** - * Update Template : adding with true flag, removing with false. - * - * @param nameTemplate name template - * @param templateField field name - * @param operation operation - */ - public void updateTemplate(String nameTemplate, TemplateField templateField, Boolean operation) { - // Operation = true && field is not present => add Field - if (operation && !this.templates.get(nameTemplate).getTemplateFields().contains(templateField)) { - this.templates.get(nameTemplate).addField(templateField); - } - // Operation = false && field is present => remove Field - else if (!operation && this.templates.get(nameTemplate).getTemplateFields().contains(templateField)) { - this.templates.get(nameTemplate).removeField(templateField); - } - } - - /** - * Check if the JSONTemplates have the same bodies. - * - * @param template template - * @return a boolean - */ - public boolean hasTemplate(Template template) { - boolean duplicateTemplate = false; - Collection templatesName = templates.keySet(); - if (templatesName.contains(template.getName())) { - Template existingTemplate = templates.get(template.getName()); - duplicateTemplate = existingTemplate.checkFields(template); - } - return duplicateTemplate; - } - - /** - * For a given Component, get a corresponding JsonObject, through parseToJSON. - * - * @param componentName name - * @return an json object - */ - public JsonObject startConversionToJson(String componentName) throws UnknownComponentException { - this.toscaConverterToJson = new ToscaConverterToJson(components, templates); - if (toscaConverterToJson.matchComponent(componentName) == null) { - throw new UnknownComponentException(componentName); - } - return toscaConverterToJson.getJsonProcess(componentName, "object"); - } - - /** - * Create and complete several Templates from file.properties. - * - * @param jsonTemplates The template properties as String - * @return a map - */ - @SuppressWarnings("unused") - private LinkedHashMap initializeTemplates(String jsonTemplates) { - - LinkedHashMap generatedTemplates = new LinkedHashMap<>(); - JsonObject templates = JsonUtils.GSON.fromJson(jsonTemplates, JsonObject.class); - - for (Map.Entry templateAsJson : templates.entrySet()) { - Template template = new Template(templateAsJson.getKey()); - JsonObject templateBody = (JsonObject) templateAsJson.getValue(); - for (Map.Entry field : templateBody.entrySet()) { - String fieldName = field.getKey(); - JsonObject bodyFieldAsJson = (JsonObject) field.getValue(); - Object fieldValue = bodyFieldAsJson.get("defaultValue").getAsString(); - Boolean fieldVisible = bodyFieldAsJson.get("visible").getAsBoolean(); - Boolean fieldStatic = bodyFieldAsJson.get("static").getAsBoolean(); - TemplateField bodyTemplateField = new TemplateField(fieldName, fieldValue, fieldVisible, fieldStatic); - template.getTemplateFields().add(bodyTemplateField); - } - generatedTemplates.put(template.getName(), template); - } - return generatedTemplates; - } - -} diff --git a/src/main/java/org/onap/clamp/clds/tosca/update/ToscaConverterToJson.java b/src/main/java/org/onap/clamp/clds/tosca/update/ToscaConverterToJson.java deleted file mode 100644 index 297d568be..000000000 --- a/src/main/java/org/onap/clamp/clds/tosca/update/ToscaConverterToJson.java +++ /dev/null @@ -1,331 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2020 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.tosca.update; - -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; -import java.util.ArrayList; -import java.util.Collection; -import java.util.LinkedHashMap; -import java.util.Map.Entry; -import org.onap.clamp.tosca.DictionaryService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -@Component -public class ToscaConverterToJson { - private LinkedHashMap components; - private LinkedHashMap templates; - - // if this one is set, the dictionary mechanism is enabled - @Autowired - private DictionaryService dictionaryService; - - public ToscaConverterToJson(LinkedHashMap components, LinkedHashMap templates) { - this.components = components; - this.templates = templates; - } - - /** - * For a given component, launch process to parse it in Json. - * - * @param nameComponent name components - * @return return - */ - public JsonObject getJsonProcess(String nameComponent, String typeComponent) { - JsonObject glob = new JsonObject(); - - if (typeComponent.equals("object")) { - glob = this.getFieldAsObject(matchComponent(nameComponent)); - } - else { - /*glob = this.getFieldAsArray(matchComponent(nameComponent));*/ - } - - return glob; - } - - /** - * Return the classical/general fields of the component, & launch the properties deployment. - * - * @param toscaElement the compo - * @return a json object - */ - public JsonObject getFieldAsObject(ToscaElement toscaElement) { - - JsonObject globalFields = new JsonObject(); - if (templates.get("object").hasFields("title")) { - globalFields.addProperty("title", toscaElement.getName()); - } - if (templates.get("object").hasFields("type")) { - globalFields.addProperty("type", "object"); - } - if (templates.get("object").hasFields("description")) { - if (toscaElement.getDescription() != null) { - globalFields.addProperty("description", toscaElement.getDescription()); - } - } - if (templates.get("object").hasFields("required")) { - globalFields.add("required", this.getRequirements(toscaElement.getName())); - } - if (templates.get("object").hasFields("properties")) { - globalFields.add("properties", this.deploy(toscaElement.getName())); - } - return globalFields; - } - - /** - * Get the required properties of the Component, including the parents properties requirements. - * - * @param nameComponent name component - * @return a json array - */ - public JsonArray getRequirements(String nameComponent) { - JsonArray requirements = new JsonArray(); - ToscaElement toParse = components.get(nameComponent); - //Check for a father component, and launch the same process - if (!toParse.getDerivedFrom().equals("tosca.datatypes.Root") - && !toParse.getDerivedFrom().equals("tosca.policies.Root")) { - requirements.addAll(getRequirements(toParse.getDerivedFrom())); - } - //Each property is checked, and add to the requirement array if it's required - Collection properties = toParse.getProperties().values(); - for (Property property : properties) { - if (property.getItems().containsKey("required") - && property.getItems().get("required").equals(true)) { - requirements.add(property.getName()); - } - } - return requirements; - } - - /** - * The beginning of the recursive process. Get the parents (or not) to launch the same process, and otherwise - * deploy and parse the properties. - * - * @param nameComponent name component - * @return a json object - */ - public JsonObject deploy(String nameComponent) { - JsonObject jsonSchema = new JsonObject(); - ToscaElement toParse = components.get(nameComponent); - //Check for a father component, and launch the same process - if (!toParse.getDerivedFrom().equals("tosca.datatypes.Root") - && !toParse.getDerivedFrom().equals("tosca.policies.Root")) { - jsonSchema = this.getParent(toParse.getDerivedFrom()); - } - //For each component property, check if its a complex properties (a component) or not. In that case, - //launch the analyse of the property. - for (Entry property : toParse.getProperties().entrySet()) { - if (matchComponent((String) property.getValue().getItems().get("type")) != null) { - jsonSchema.add(property.getValue().getName(), - this.getJsonProcess((String) property.getValue().getItems().get("type"), "object")); - } - else { - jsonSchema.add(property.getValue().getName(), this.complexParse(property.getValue())); - } - } - return jsonSchema; - } - - /** - * If a component has a parent, it is deploy in the same way. - * - * @param nameComponent name component - * @return a json object - */ - public JsonObject getParent(String nameComponent) { - return deploy(nameComponent); - } - - /** - * to be done. - * - * @param property property - * @return a json object - */ - @SuppressWarnings("unchecked") - public JsonObject complexParse(Property property) { - JsonObject propertiesInJson = new JsonObject(); - Template currentPropertyTemplate; - String typeProperty = (String) property.getItems().get("type"); - if (typeProperty.toLowerCase().equals("list") || typeProperty.toLowerCase().equals("map")) { - currentPropertyTemplate = templates.get("object"); - } - else { - String propertyType = (String) property.getItems().get("type"); - currentPropertyTemplate = templates.get(propertyType.toLowerCase()); - } - //Each "special" field is analysed, and has a specific treatment - for (String propertyField : property.getItems().keySet()) { - switch (propertyField) { - case "type": - if (currentPropertyTemplate.hasFields(propertyField)) { - String fieldtype = (String) property.getItems().get(propertyField); - switch (fieldtype.toLowerCase()) { - case "list": - propertiesInJson.addProperty("type", "array"); - break; - case "map": - propertiesInJson.addProperty("type", "object"); - break; - case "scalar-unit.time": - case "scalar-unit.frequency": - case "scalar-unit.size": - propertiesInJson.addProperty("type", "string"); - break; - case "timestamp": - propertiesInJson.addProperty("type", "string"); - propertiesInJson.addProperty("format", "date-time"); - break; - case "float": - propertiesInJson.addProperty("type", "number"); - break; - case "range": - propertiesInJson.addProperty("type", "integer"); - if (!checkConstraintPresence(property, "greater_than") - && currentPropertyTemplate.hasFields("exclusiveMinimum")) { - propertiesInJson.addProperty("exclusiveMinimum", false); - } - if (!checkConstraintPresence(property, "less_than") - && currentPropertyTemplate.hasFields("exclusiveMaximum")) { - propertiesInJson.addProperty("exclusiveMaximum", false); - } - break; - default: - propertiesInJson.addProperty("type", currentPropertyTemplate.getName()); - break; - } - } - break; - case "metadata": - propertiesInJson.add("enum", MetadataParser.processAllMetadataElement(property, - dictionaryService)); - break; - case "constraints": - property.addConstraintsAsJson(propertiesInJson, - (ArrayList) property.getItems().get("constraints"), - currentPropertyTemplate); - break; - case "entry_schema": - //Here, a way to check if entry is a component (datatype) or a simple string - if (matchComponent(this.extractSpecificFieldFromMap(property, "entry_schema")) != null) { - String nameComponent = this.extractSpecificFieldFromMap(property, "entry_schema"); - ToscaConverterToJson child = new ToscaConverterToJson(components, templates); - JsonObject propertiesContainer = new JsonObject(); - - switch ((String) property.getItems().get("type")) { - case "map": // Get it as an object - JsonObject componentAsProperty = child.getJsonProcess(nameComponent, "object"); - propertiesContainer.add(nameComponent, componentAsProperty); - if (currentPropertyTemplate.hasFields("properties")) { - propertiesInJson.add("properties", propertiesContainer); - } - break; - default://list : get it as an Array - JsonObject componentAsItem = child.getJsonProcess(nameComponent, "object"); - if (currentPropertyTemplate.hasFields("properties")) { - propertiesInJson.add("items", componentAsItem); - } - break; - } - - } - // Native cases - else if (property.getItems().get("type").equals("list")) { - JsonObject itemContainer = new JsonObject(); - String valueInEntrySchema = this.extractSpecificFieldFromMap(property, "entry_schema"); - itemContainer.addProperty("type", valueInEntrySchema); - propertiesInJson.add("items", itemContainer); - } - // MAP Case, for now nothing - - break; - default: - //Each classical field : type, description, default.. - if (currentPropertyTemplate.hasFields(propertyField) && !propertyField.equals("required")) { - property.addFieldToJson(propertiesInJson, propertyField, - property.getItems().get(propertyField)); - } - break; - } - } - return propertiesInJson; - } - - /** - * Look for a matching Component for the name paramater, in the components list. - * - * @param name the name - * @return a component - */ - public ToscaElement matchComponent(String name) { - ToscaElement correspondingToscaElement = null; - if (components == null) { - return null; - } - for (ToscaElement toscaElement : components.values()) { - if (toscaElement.getName().equals(name)) { - correspondingToscaElement = toscaElement; - } - } - return correspondingToscaElement; - } - - /** - * Simple method to extract quickly a type field from particular property item. - * - * @param property the property - * @param fieldName the fieldname - * @return a string - */ - @SuppressWarnings("unchecked") - public String extractSpecificFieldFromMap(Property property, String fieldName) { - LinkedHashMap entrySchemaFields = - (LinkedHashMap) property.getItems().get(fieldName); - return entrySchemaFields.get("type"); - } - - /** - * Check if a constraint, for a specific property, is there. - * - * @param property property - * @param nameConstraint name constraint - * @return a flag boolean - */ - public boolean checkConstraintPresence(Property property, String nameConstraint) { - boolean presentConstraint = false; - if (property.getItems().containsKey("constraints")) { - ArrayList constraints = (ArrayList) property.getItems().get("constraints"); - for (Object constraint : constraints) { - if (constraint instanceof LinkedHashMap) { - if (((LinkedHashMap) constraint).containsKey(nameConstraint)) { - presentConstraint = true; - } - } - } - } - return presentConstraint; - } -} diff --git a/src/main/java/org/onap/clamp/clds/tosca/update/ToscaConverterWithDictionarySupport.java b/src/main/java/org/onap/clamp/clds/tosca/update/ToscaConverterWithDictionarySupport.java new file mode 100644 index 000000000..c1bf1ad80 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/tosca/update/ToscaConverterWithDictionarySupport.java @@ -0,0 +1,93 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2020 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============================================ + * =================================================================== + * + */ + +package org.onap.clamp.clds.tosca.update; + +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; +import com.google.gson.JsonObject; +import java.io.IOException; +import org.onap.clamp.clds.config.ClampProperties; +import org.onap.clamp.clds.tosca.update.parser.metadata.ToscaMetadataParser; +import org.onap.clamp.clds.tosca.update.parser.metadata.ToscaMetadataParserWithDictionarySupport; +import org.onap.clamp.clds.tosca.update.templates.JsonTemplateManager; +import org.onap.clamp.clds.util.JsonUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class ToscaConverterWithDictionarySupport { + + private static final EELFLogger logger = + EELFManager.getInstance().getLogger(ToscaConverterWithDictionarySupport.class); + + private ClampProperties clampProperties; + private ToscaMetadataParser metadataParser; + + /** + * Constructor with Spring support. + * + * @param clampProperties Clamp Spring properties + * @param metadataParser Metadata parser + */ + @Autowired + public ToscaConverterWithDictionarySupport(ClampProperties clampProperties, + ToscaMetadataParserWithDictionarySupport metadataParser) { + this.clampProperties = clampProperties; + this.metadataParser = metadataParser; + } + + /** + * This method converts a tosca file to a json schema. + * It uses some parameters specified in the application.properties. + * + * @param toscaFile The tosca file as String + * @param policyTypeToDecode The policy type to decode + * @return A json object being a json schema + */ + public JsonObject convertToscaToJsonSchemaObject(String toscaFile, String policyTypeToDecode) { + try { + return new JsonTemplateManager(toscaFile, + clampProperties.getFileContent("tosca.converter.default.datatypes"), + clampProperties.getFileContent("tosca.converter.json.schema.templates")) + .getJsonSchemaForPolicyType(policyTypeToDecode, Boolean.parseBoolean(clampProperties.getStringValue( + "tosca.converter.dictionary.support.enabled")) ? metadataParser : null); + } catch (IOException | UnknownComponentException e) { + logger.error("Unable to convert the tosca properly, exception caught during the decoding", + e); + return new JsonObject(); + } + } + + /** + * This method converts a tosca file to a json schema. + * It uses some parameters specified in the application.properties. + * + * @param toscaFile The tosca file as String + * @param policyTypeToDecode The policy type to decode + * @return A String containing the json schema + */ + public String convertToscaToJsonSchemaString(String toscaFile, String policyTypeToDecode) { + return JsonUtils.GSON.toJson(this.convertToscaToJsonSchemaObject(toscaFile, policyTypeToDecode)); + } +} diff --git a/src/main/java/org/onap/clamp/clds/tosca/update/ToscaElement.java b/src/main/java/org/onap/clamp/clds/tosca/update/ToscaElement.java deleted file mode 100644 index d702cda55..000000000 --- a/src/main/java/org/onap/clamp/clds/tosca/update/ToscaElement.java +++ /dev/null @@ -1,121 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2020 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.tosca.update; - -import java.util.ArrayList; -import java.util.LinkedHashMap; - -public class ToscaElement { - - /** - * name parameter is used as "key", in the LinkedHashMap of Components. - */ - private String name; - private String derivedFrom; - private String version; - private String typeVersion; - private String description; - private LinkedHashMap properties; - - public ToscaElement() { - } - - /** - * Constructor. - * - * @param name name - * @param derivedFrom derivedFrom - * @param description description - */ - @SuppressWarnings({"unchecked", "rawtypes"}) - public ToscaElement(String name, String derivedFrom, String description) { - super(); - this.name = name; - this.derivedFrom = derivedFrom; - this.description = description; - this.properties = new LinkedHashMap(); - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getDerivedFrom() { - return derivedFrom; - } - - public void setDerivedFrom(String derivedFrom) { - this.derivedFrom = derivedFrom; - } - - public String getVersion() { - return version; - } - - public void setVersion(String version) { - this.version = version; - } - - public String getTypeVersion() { - return typeVersion; - } - - public void setTypeVersion(String typeVersion) { - this.typeVersion = typeVersion; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public LinkedHashMap getProperties() { - return properties; - } - - public void setProperties(LinkedHashMap properties) { - this.properties = properties; - } - - public void addProperties(Property property) { - this.properties.put(property.getName(), property); - } - - public ArrayList propertiesNames() { - return new ArrayList<>(properties.keySet()); - } - - @Override - public String toString() { - return name + ": " + description + ", version: " + version + ", nb de properties: " + properties.size() - + System.getProperty("line.separator") + propertiesNames(); - } -} diff --git a/src/main/java/org/onap/clamp/clds/tosca/update/ToscaItemsParser.java b/src/main/java/org/onap/clamp/clds/tosca/update/ToscaItemsParser.java deleted file mode 100644 index 443a4b0cd..000000000 --- a/src/main/java/org/onap/clamp/clds/tosca/update/ToscaItemsParser.java +++ /dev/null @@ -1,109 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2020 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.tosca.update; - -import java.io.IOException; -import java.util.LinkedHashMap; -import java.util.Map.Entry; -import org.yaml.snakeyaml.Yaml; - -public class ToscaItemsParser { - private LinkedHashMap allItemsFound; - - /** - * Constructor. - * - * @param toscaYaml The tosca to parse - * @param toscaNativeDataTypeYaml THe name of the policy type to search - */ - public ToscaItemsParser(String toscaYaml, String toscaNativeDataTypeYaml) { - this.allItemsFound = searchAllToscaElements(toscaYaml, toscaNativeDataTypeYaml); - } - - public LinkedHashMap getAllItemsFound() { - return allItemsFound; - } - - private static LinkedHashMap searchAllDataTypesAndPolicyTypes(String toscaYaml) { - LinkedHashMap> file = - (LinkedHashMap>) new Yaml().load(toscaYaml); - // Get DataTypes - LinkedHashMap allItemsFound = file.get("data_types"); - allItemsFound = (allItemsFound == null) ? (new LinkedHashMap<>()) : allItemsFound; - // Put the policies and datatypes in the same collection - allItemsFound.putAll(file.get("policy_types")); - return allItemsFound; - } - - private static LinkedHashMap searchAllNativeToscaDataTypes(String toscaNativeYaml) { - return ((LinkedHashMap>) new Yaml().load(toscaNativeYaml)) - .get("data_types"); - } - - /** - * Yaml Parse gets raw policies and datatypes, in different sections : necessary to extract - * all entities and put them at the same level. - * - * @return a map - */ - private static LinkedHashMap searchAllToscaElements(String toscaYaml, - String nativeToscaYaml) { - LinkedHashMap allItemsFound = searchAllDataTypesAndPolicyTypes(toscaYaml); - allItemsFound.putAll(searchAllNativeToscaDataTypes(nativeToscaYaml)); - return parseAllItemsFound(allItemsFound); - } - - /** - * With all the component, get as Map, Components and Components properties are created. - * - * @param allMaps maps - */ - private static LinkedHashMap parseAllItemsFound(LinkedHashMap allMaps) { - LinkedHashMap allItemsFound = new LinkedHashMap(); - //Component creations, from the file maps - for (Entry itemToParse : allMaps.entrySet()) { - LinkedHashMap componentBody = (LinkedHashMap) itemToParse.getValue(); - ToscaElement toscaElement = - new ToscaElement(itemToParse.getKey(), (String) componentBody.get("derived_from"), - (String) componentBody.get("description")); - //If policy, version and type_version : - if (componentBody.get("type_version") != null) { - toscaElement.setVersion((String) componentBody.get("type_version")); - toscaElement.setTypeVersion((String) componentBody.get("type_version")); - } - //Properties creation, from the map - if (componentBody.get("properties") != null) { - LinkedHashMap properties = - (LinkedHashMap) componentBody.get("properties"); - for (Entry itemToProperty : properties.entrySet()) { - Property property = new Property(itemToProperty.getKey(), - (LinkedHashMap) itemToProperty.getValue()); - toscaElement.addProperties(property); - } - } - allItemsFound.put(toscaElement.getName(), toscaElement); - } - return allItemsFound; - } -} diff --git a/src/main/java/org/onap/clamp/clds/tosca/update/elements/ArrayField.java b/src/main/java/org/onap/clamp/clds/tosca/update/elements/ArrayField.java new file mode 100644 index 000000000..83f792f3f --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/tosca/update/elements/ArrayField.java @@ -0,0 +1,72 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2020 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============================================ + * =================================================================== + * + */ + +package org.onap.clamp.clds.tosca.update.elements; + +import com.google.gson.JsonArray; +import java.util.ArrayList; + +public class ArrayField { + + private ArrayList complexFields; + + /** + * Constructor from arraryList. + * + * @param arrayProperties the array properties + */ + public ArrayField(ArrayList arrayProperties) { + this.complexFields = arrayProperties; + } + + /** + * Each LinkedHashMap is parsed to extract the Array and each of its value. They are casted for the JsonObject. + * + * @return JsonArray + */ + public JsonArray deploy() { + + JsonArray subPropertyValuesArray = new JsonArray(); + for (Object arrayElement : complexFields) { + //Cast for each Primitive Type + String typeValue = arrayElement.getClass().getSimpleName(); + switch (typeValue) { + case "String": + subPropertyValuesArray.add((String) arrayElement); + break; + case "Boolean": + subPropertyValuesArray.add((Boolean) arrayElement); + break; + case "Double": + subPropertyValuesArray.add((Number) arrayElement); + break; + case "Integer": + subPropertyValuesArray.add((Number) arrayElement); + break; + default: + break; + } + } + return subPropertyValuesArray; + } +} diff --git a/src/main/java/org/onap/clamp/clds/tosca/update/elements/Constraint.java b/src/main/java/org/onap/clamp/clds/tosca/update/elements/Constraint.java new file mode 100644 index 000000000..d6bd355e3 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/tosca/update/elements/Constraint.java @@ -0,0 +1,222 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2020 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============================================ + * =================================================================== + * + */ + +package org.onap.clamp.clds.tosca.update.elements; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.Map.Entry; +import org.onap.clamp.clds.tosca.update.templates.JsonTemplate; + +public class Constraint { + + private LinkedHashMap constraints; + private JsonTemplate jsonTemplate; + + public Constraint(LinkedHashMap constraints, JsonTemplate jsonTemplate) { + this.jsonTemplate = jsonTemplate; + this.constraints = constraints; + } + + /** + * Deploy the linkedhashmap which contains the constraints, to extract them one to one. + * + * @param jsonSchema The json Schema + * @param typeProperty The ype property + * @return the json object + */ + public JsonObject deployConstraints(JsonObject jsonSchema, String typeProperty) { + for (Entry constraint : constraints.entrySet()) { + this.parseConstraint(jsonSchema, constraint.getKey(), constraint.getValue(), typeProperty); + } + return jsonSchema; + } + + /** + * Each case of Tosca constraints below parse specifically the field in the JsonObject. + * + * @param jsonSchema Json Schema + * @param nameConstraint Name constraint + * @param valueConstraint value constraint + * @param typeProperty Type Property + */ + @SuppressWarnings("unchecked") + public void parseConstraint(JsonObject jsonSchema, String nameConstraint, Object valueConstraint, + String typeProperty) { + switch (nameConstraint) { + case "equal": + checkTemplateField("const", jsonSchema, valueConstraint); + break; + case "greater_than": + checkTemplateField("exclusiveMinimum", jsonSchema, valueConstraint); + break; + case "greater_or_equal": + checkTemplateField("minimum", jsonSchema, valueConstraint); + break; + case "less_than": + checkTemplateField("exclusiveMaximum", jsonSchema, valueConstraint); + break; + case "less_or_equal": + checkTemplateField("maximum", jsonSchema, valueConstraint); + break; + case "in_range": + ArrayList limitValues = (ArrayList) valueConstraint; + checkTemplateField("minimum", jsonSchema, limitValues.get(0)); + checkTemplateField("maximum", jsonSchema, limitValues.get(1)); + break; + case "pattern": + jsonSchema.addProperty(nameConstraint, (String) valueConstraint); + break; + case "length": + this.getSpecificLength(jsonSchema, valueConstraint, typeProperty); + break; + case "min_length": + String[] prefixValues = nameConstraint.split("_"); + this.getLimitValue(jsonSchema, valueConstraint, typeProperty, prefixValues[0]); + break; + case "max_length": + String[] maxtab = nameConstraint.split("_"); + this.getLimitValue(jsonSchema, valueConstraint, typeProperty, maxtab[0]); + break; + default://valid_value + this.getValueArray(jsonSchema, valueConstraint, typeProperty); + break; + } + + } + + /** + * To be done. + * + * @param jsonSchema json schema + * @param fieldValue field value + * @param typeProperty For the complex components, get a specific number of items/properties + */ + public void getSpecificLength(JsonObject jsonSchema, Object fieldValue, String typeProperty) { + switch (typeProperty.toLowerCase()) { + case "string": + checkTemplateField("minLength", jsonSchema, fieldValue); + checkTemplateField("maxLength", jsonSchema, fieldValue); + break; + case "array": + if (fieldValue.equals(1) && jsonTemplate.hasFields("uniqueItems")) { + jsonSchema.addProperty("uniqueItems", true); + } else { + checkTemplateField("minItems", jsonSchema, fieldValue); + checkTemplateField("maxItems", jsonSchema, fieldValue); + } + break; + default:// Map && List + checkTemplateField("minProperties", jsonSchema, fieldValue); + checkTemplateField("maxProperties", jsonSchema, fieldValue); + break; + } + + } + + /** + * To be done. + * + * @param jsonSchema json schema + * @param fieldValue field value + * @param typeProperty type property + * @param side Get the limits fieldValue for the properties : depend of the type of the component + */ + public void getLimitValue(JsonObject jsonSchema, Object fieldValue, String typeProperty, String side) { + switch (typeProperty) { + case "string": + if (side.equals("min")) { + checkTemplateField("minLength", jsonSchema, fieldValue); + } else { + checkTemplateField("maxLength", jsonSchema, fieldValue); + } + break; + default:// Array + if (side.equals("min")) { + checkTemplateField("minItems", jsonSchema, fieldValue); + } else { + checkTemplateField("maxItems", jsonSchema, fieldValue); + } + break; + } + + } + + /** + * To be done. + * + * @param jsonSchema Json schema + * @param fieldValue field value + * @param typeProperty Get as Enum the valid values for the property + */ + public void getValueArray(JsonObject jsonSchema, Object fieldValue, String typeProperty) { + if (jsonTemplate.hasFields("enum")) { + JsonArray enumeration = new JsonArray(); + if (typeProperty.equals("string") || typeProperty.equals("String")) { + ArrayList arrayValues = (ArrayList) fieldValue; + for (String arrayItem : arrayValues) { + enumeration.add(arrayItem); + } + jsonSchema.add("enum", enumeration); + } else { + ArrayList arrayValues = (ArrayList) fieldValue; + for (Number arrayItem : arrayValues) { + enumeration.add(arrayItem); + } + jsonSchema.add("enum", enumeration); + } + } + } + + /** + * To be done. + * + * @param field Field + * @param jsonSchema Json schema + * @param fieldValue Simple way to avoid code duplication + */ + public void checkTemplateField(String field, JsonObject jsonSchema, Object fieldValue) { + if (jsonTemplate.hasFields(field)) { + String typeField = fieldValue.getClass().getSimpleName(); + switch (typeField) { + case "String": + jsonSchema.addProperty(field, (String) fieldValue); + break; + case "Integer": + jsonSchema.addProperty(field, (Integer) fieldValue); + break; + case "Number": + jsonSchema.addProperty(field, (Number) fieldValue); + break; + case "Boolean": + jsonSchema.addProperty(field, (Boolean) fieldValue); + break; + default: + break; + } + } + } + +} \ No newline at end of file diff --git a/src/main/java/org/onap/clamp/clds/tosca/update/elements/ToscaElement.java b/src/main/java/org/onap/clamp/clds/tosca/update/elements/ToscaElement.java new file mode 100644 index 000000000..9035a5806 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/tosca/update/elements/ToscaElement.java @@ -0,0 +1,121 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2020 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============================================ + * =================================================================== + * + */ + +package org.onap.clamp.clds.tosca.update.elements; + +import java.util.ArrayList; +import java.util.LinkedHashMap; + +public class ToscaElement { + + /** + * name parameter is used as "key", in the LinkedHashMap of Components. + */ + private String name; + private String derivedFrom; + private String version; + private String typeVersion; + private String description; + private LinkedHashMap properties; + + public ToscaElement() { + } + + /** + * Constructor. + * + * @param name name + * @param derivedFrom derivedFrom + * @param description description + */ + @SuppressWarnings({"unchecked", "rawtypes"}) + public ToscaElement(String name, String derivedFrom, String description) { + super(); + this.name = name; + this.derivedFrom = derivedFrom; + this.description = description; + this.properties = new LinkedHashMap(); + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDerivedFrom() { + return derivedFrom; + } + + public void setDerivedFrom(String derivedFrom) { + this.derivedFrom = derivedFrom; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public String getTypeVersion() { + return typeVersion; + } + + public void setTypeVersion(String typeVersion) { + this.typeVersion = typeVersion; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public LinkedHashMap getProperties() { + return properties; + } + + public void setProperties(LinkedHashMap properties) { + this.properties = properties; + } + + public void addProperties(ToscaElementProperty toscaElementProperty) { + this.properties.put(toscaElementProperty.getName(), toscaElementProperty); + } + + public ArrayList propertiesNames() { + return new ArrayList<>(properties.keySet()); + } + + @Override + public String toString() { + return name + ": " + description + ", version: " + version + ", nb de properties: " + properties.size() + + System.getProperty("line.separator") + propertiesNames(); + } +} diff --git a/src/main/java/org/onap/clamp/clds/tosca/update/elements/ToscaElementProperty.java b/src/main/java/org/onap/clamp/clds/tosca/update/elements/ToscaElementProperty.java new file mode 100644 index 000000000..c5ab5a18e --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/tosca/update/elements/ToscaElementProperty.java @@ -0,0 +1,135 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2020 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============================================ + * =================================================================== + * + */ + +package org.onap.clamp.clds.tosca.update.elements; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import org.onap.clamp.clds.tosca.update.templates.JsonTemplate; + +public class ToscaElementProperty { + + /** + * name parameter is used as "key", in the LinkedHashMap of Components. + */ + private String name; + private LinkedHashMap items; + + /** + * Constructor. + * + * @param name the name + * @param items the items + */ + public ToscaElementProperty(String name, LinkedHashMap items) { + super(); + this.name = name; + this.items = items; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public LinkedHashMap getItems() { + return items; + } + + public void setItems(LinkedHashMap items) { + this.items = items; + } + + /** + * For each primitive value, requires to get each field Value and cast it and add it in a Json. + * + * @param fieldsContent field + * @param fieldName field + * @param value value + */ + public void addFieldToJson(JsonObject fieldsContent, String fieldName, Object value) { + if (value != null) { + String typeValue = value.getClass().getSimpleName(); + switch (typeValue) { + case "String": + fieldsContent.addProperty(fieldName, (String) value); + break; + case "Boolean": + fieldsContent.addProperty(fieldName, (Boolean) value); + break; + case "Double": + fieldsContent.addProperty(fieldName, (Number) value); + break; + case "Integer": + fieldsContent.addProperty(fieldName, (Integer) value); + break; + default: + fieldsContent.add(fieldName, parseArray((ArrayList) value)); + break; + } + } + } + + /** + * If a field value is an Array, create an Instance of ArrayField to insert if in the JsonObject. + * + * @param arrayProperties array pro + * @return a json array + */ + public JsonArray parseArray(ArrayList arrayProperties) { + JsonArray arrayContent = new JsonArray(); + ArrayList arrayComponent = new ArrayList<>(); + for (Object itemArray : arrayProperties) { + arrayComponent.add(itemArray); + } + ArrayField af = new ArrayField(arrayComponent); + arrayContent = af.deploy(); + return arrayContent; + } + + /** + * Create an instance of Constraint, to extract the values and add it to the Json (according to the type + * * of the current property). + * + * @param json a json + * @param constraints constraints + * @param jsonTemplate template + */ + @SuppressWarnings("unchecked") + public void addConstraintsAsJson(JsonObject json, ArrayList constraints, JsonTemplate jsonTemplate) { + for (Object constraint : constraints) { + if (constraint instanceof LinkedHashMap) { + LinkedHashMap valueConstraint = (LinkedHashMap) constraint; + Constraint constraintParser = new Constraint(valueConstraint, jsonTemplate); + constraintParser.deployConstraints(json, (String) getItems().get("type")); + } + } + + } + +} diff --git a/src/main/java/org/onap/clamp/clds/tosca/update/parser/ToscaConverterToJsonSchema.java b/src/main/java/org/onap/clamp/clds/tosca/update/parser/ToscaConverterToJsonSchema.java new file mode 100644 index 000000000..cfc0e42a8 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/tosca/update/parser/ToscaConverterToJsonSchema.java @@ -0,0 +1,340 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2020 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============================================ + * =================================================================== + * + */ + +package org.onap.clamp.clds.tosca.update.parser; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import java.util.ArrayList; +import java.util.Collection; +import java.util.LinkedHashMap; +import java.util.Map.Entry; +import org.onap.clamp.clds.tosca.update.elements.ToscaElement; +import org.onap.clamp.clds.tosca.update.elements.ToscaElementProperty; +import org.onap.clamp.clds.tosca.update.parser.metadata.ToscaMetadataParser; +import org.onap.clamp.clds.tosca.update.templates.JsonTemplate; + +public class ToscaConverterToJsonSchema { + private LinkedHashMap components; + private LinkedHashMap templates; + + private ToscaMetadataParser metadataParser; + + /** + * Constructor. + * + * @param toscaElementsMap All the tosca elements found (policy type + data types + native tosca datatypes) + * @param jsonSchemaTemplates All Json schema templates to use + * @param metadataParser The metadata parser to use for metadata section + */ + public ToscaConverterToJsonSchema(LinkedHashMap toscaElementsMap, + LinkedHashMap jsonSchemaTemplates, + ToscaMetadataParser metadataParser) { + this.components = toscaElementsMap; + this.templates = jsonSchemaTemplates; + this.metadataParser = metadataParser; + } + + /** + * For a given component, launch process to parse it in Json. + * + * @param toscaElementKey name components + * @return return + */ + public JsonObject getJsonSchemaOfToscaElement(String toscaElementKey) { + return this.getFieldAsObject(getToscaElement(toscaElementKey)); + } + + /** + * Return the classical/general fields of the component, & launch the properties deployment. + * + * @param toscaElement the compo + * @return a json object + */ + public JsonObject getFieldAsObject(ToscaElement toscaElement) { + + JsonObject globalFields = new JsonObject(); + if (templates.get("object").hasFields("title")) { + globalFields.addProperty("title", toscaElement.getName()); + } + if (templates.get("object").hasFields("type")) { + globalFields.addProperty("type", "object"); + } + if (templates.get("object").hasFields("description")) { + if (toscaElement.getDescription() != null) { + globalFields.addProperty("description", toscaElement.getDescription()); + } + } + if (templates.get("object").hasFields("required")) { + globalFields.add("required", this.getRequirements(toscaElement.getName())); + } + if (templates.get("object").hasFields("properties")) { + globalFields.add("properties", this.deploy(toscaElement.getName())); + } + return globalFields; + } + + /** + * Get the required properties of the Component, including the parents properties requirements. + * + * @param nameComponent name component + * @return a json array + */ + public JsonArray getRequirements(String nameComponent) { + JsonArray requirements = new JsonArray(); + ToscaElement toParse = components.get(nameComponent); + //Check for a father component, and launch the same process + if (!toParse.getDerivedFrom().equals("tosca.datatypes.Root") + && !toParse.getDerivedFrom().equals("tosca.policies.Root")) { + requirements.addAll(getRequirements(toParse.getDerivedFrom())); + } + //Each property is checked, and add to the requirement array if it's required + Collection properties = toParse.getProperties().values(); + for (ToscaElementProperty toscaElementProperty : properties) { + if (toscaElementProperty.getItems().containsKey("required") + && toscaElementProperty.getItems().get("required").equals(true)) { + requirements.add(toscaElementProperty.getName()); + } + } + return requirements; + } + + /** + * The beginning of the recursive process. Get the parents (or not) to launch the same process, and otherwise + * deploy and parse the properties. + * + * @param nameComponent name component + * @return a json object + */ + public JsonObject deploy(String nameComponent) { + JsonObject jsonSchema = new JsonObject(); + ToscaElement toParse = components.get(nameComponent); + //Check for a father component, and launch the same process + if (!toParse.getDerivedFrom().equals("tosca.datatypes.Root") + && !toParse.getDerivedFrom().equals("tosca.policies.Root")) { + jsonSchema = this.getParent(toParse.getDerivedFrom()); + } + //For each component property, check if its a complex properties (a component) or not. In that case, + //launch the analyse of the property. + for (Entry property : toParse.getProperties().entrySet()) { + if (getToscaElement((String) property.getValue().getItems().get("type")) != null) { + jsonSchema.add(property.getValue().getName(), + this.getJsonSchemaOfToscaElement((String) property.getValue().getItems().get("type"))); + } + else { + jsonSchema.add(property.getValue().getName(), this.complexParse(property.getValue())); + } + } + return jsonSchema; + } + + /** + * If a component has a parent, it is deploy in the same way. + * + * @param nameComponent name component + * @return a json object + */ + public JsonObject getParent(String nameComponent) { + return deploy(nameComponent); + } + + /** + * to be done. + * + * @param toscaElementProperty property + * @return a json object + */ + @SuppressWarnings("unchecked") + public JsonObject complexParse(ToscaElementProperty toscaElementProperty) { + JsonObject propertiesInJson = new JsonObject(); + JsonTemplate currentPropertyJsonTemplate; + String typeProperty = (String) toscaElementProperty.getItems().get("type"); + if (typeProperty.toLowerCase().equals("list") || typeProperty.toLowerCase().equals("map")) { + currentPropertyJsonTemplate = templates.get("object"); + } + else { + String propertyType = (String) toscaElementProperty.getItems().get("type"); + currentPropertyJsonTemplate = templates.get(propertyType.toLowerCase()); + } + //Each "special" field is analysed, and has a specific treatment + for (String propertyField : toscaElementProperty.getItems().keySet()) { + switch (propertyField) { + case "type": + if (currentPropertyJsonTemplate.hasFields(propertyField)) { + String fieldtype = (String) toscaElementProperty.getItems().get(propertyField); + switch (fieldtype.toLowerCase()) { + case "list": + propertiesInJson.addProperty("type", "array"); + break; + case "map": + propertiesInJson.addProperty("type", "object"); + break; + case "scalar-unit.time": + case "scalar-unit.frequency": + case "scalar-unit.size": + propertiesInJson.addProperty("type", "string"); + break; + case "timestamp": + propertiesInJson.addProperty("type", "string"); + propertiesInJson.addProperty("format", "date-time"); + break; + case "float": + propertiesInJson.addProperty("type", "number"); + break; + case "range": + propertiesInJson.addProperty("type", "integer"); + if (!checkConstraintPresence(toscaElementProperty, "greater_than") + && currentPropertyJsonTemplate.hasFields("exclusiveMinimum")) { + propertiesInJson.addProperty("exclusiveMinimum", false); + } + if (!checkConstraintPresence(toscaElementProperty, "less_than") + && currentPropertyJsonTemplate.hasFields("exclusiveMaximum")) { + propertiesInJson.addProperty("exclusiveMaximum", false); + } + break; + default: + propertiesInJson.addProperty("type", currentPropertyJsonTemplate.getName()); + break; + } + } + break; + case "metadata": + if (metadataParser != null) { + metadataParser.processAllMetadataElement(toscaElementProperty).entrySet() + .forEach((jsonEntry) -> { + propertiesInJson.add(jsonEntry.getKey(), + jsonEntry.getValue()); + + }); + } + break; + case "constraints": + toscaElementProperty.addConstraintsAsJson(propertiesInJson, + (ArrayList) toscaElementProperty.getItems().get("constraints"), + currentPropertyJsonTemplate); + break; + case "entry_schema": + //Here, a way to check if entry is a component (datatype) or a simple string + if (getToscaElement(this.extractSpecificFieldFromMap(toscaElementProperty, "entry_schema")) + != null) { + String nameComponent = this.extractSpecificFieldFromMap(toscaElementProperty, "entry_schema"); + ToscaConverterToJsonSchema + child = new ToscaConverterToJsonSchema(components, templates, + metadataParser); + JsonObject propertiesContainer = new JsonObject(); + + switch ((String) toscaElementProperty.getItems().get("type")) { + case "map": // Get it as an object + JsonObject componentAsProperty = child.getJsonSchemaOfToscaElement(nameComponent); + propertiesContainer.add(nameComponent, componentAsProperty); + if (currentPropertyJsonTemplate.hasFields("properties")) { + propertiesInJson.add("properties", propertiesContainer); + } + break; + default://list : get it as an Array + JsonObject componentAsItem = child.getJsonSchemaOfToscaElement(nameComponent); + if (currentPropertyJsonTemplate.hasFields("properties")) { + propertiesInJson.add("items", componentAsItem); + } + break; + } + + } + // Native cases + else if (toscaElementProperty.getItems().get("type").equals("list")) { + JsonObject itemContainer = new JsonObject(); + String valueInEntrySchema = + this.extractSpecificFieldFromMap(toscaElementProperty, "entry_schema"); + itemContainer.addProperty("type", valueInEntrySchema); + propertiesInJson.add("items", itemContainer); + } + // MAP Case, for now nothing + + break; + default: + //Each classical field : type, description, default.. + if (currentPropertyJsonTemplate.hasFields(propertyField) && !propertyField.equals("required")) { + toscaElementProperty.addFieldToJson(propertiesInJson, propertyField, + toscaElementProperty.getItems().get(propertyField)); + } + break; + } + } + return propertiesInJson; + } + + /** + * Look for a matching Component for the name parameter, in the components list. + * + * @param name the tosca element name to search for + * @return a tosca element + */ + public ToscaElement getToscaElement(String name) { + ToscaElement correspondingToscaElement = null; + if (components == null) { + return null; + } + for (ToscaElement toscaElement : components.values()) { + if (toscaElement.getName().equals(name)) { + correspondingToscaElement = toscaElement; + } + } + return correspondingToscaElement; + } + + /** + * Simple method to extract quickly a type field from particular property item. + * + * @param toscaElementProperty the property + * @param fieldName the fieldname + * @return a string + */ + @SuppressWarnings("unchecked") + public String extractSpecificFieldFromMap(ToscaElementProperty toscaElementProperty, String fieldName) { + LinkedHashMap entrySchemaFields = + (LinkedHashMap) toscaElementProperty.getItems().get(fieldName); + return entrySchemaFields.get("type"); + } + + /** + * Check if a constraint, for a specific property, is there. + * + * @param toscaElementProperty property + * @param nameConstraint name constraint + * @return a flag boolean + */ + public boolean checkConstraintPresence(ToscaElementProperty toscaElementProperty, String nameConstraint) { + boolean presentConstraint = false; + if (toscaElementProperty.getItems().containsKey("constraints")) { + ArrayList constraints = (ArrayList) toscaElementProperty.getItems().get("constraints"); + for (Object constraint : constraints) { + if (constraint instanceof LinkedHashMap) { + if (((LinkedHashMap) constraint).containsKey(nameConstraint)) { + presentConstraint = true; + } + } + } + } + return presentConstraint; + } +} diff --git a/src/main/java/org/onap/clamp/clds/tosca/update/parser/ToscaElementParser.java b/src/main/java/org/onap/clamp/clds/tosca/update/parser/ToscaElementParser.java new file mode 100644 index 000000000..090fcfcfa --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/tosca/update/parser/ToscaElementParser.java @@ -0,0 +1,103 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2020 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============================================ + * =================================================================== + * + */ + +package org.onap.clamp.clds.tosca.update.parser; + +import java.util.LinkedHashMap; +import java.util.Map.Entry; +import org.onap.clamp.clds.tosca.update.elements.ToscaElement; +import org.onap.clamp.clds.tosca.update.elements.ToscaElementProperty; +import org.yaml.snakeyaml.Yaml; + +public class ToscaElementParser { + /** + * Constructor. + */ + private ToscaElementParser() { + } + + private static LinkedHashMap searchAllDataTypesAndPolicyTypes(String toscaYaml) { + LinkedHashMap> file = + (LinkedHashMap>) new Yaml().load(toscaYaml); + LinkedHashMap allDataTypesFound = file.get("data_types"); + LinkedHashMap allPolicyTypesFound = file.get("policy_types"); + LinkedHashMap allItemsFound = new LinkedHashMap<>(); + // Put the policies and datatypes in the same collection + allItemsFound = (allDataTypesFound == null) ? (new LinkedHashMap<>()) : allDataTypesFound; + allItemsFound.putAll(allPolicyTypesFound == null ? new LinkedHashMap<>() : allPolicyTypesFound); + return allItemsFound; + } + + private static LinkedHashMap searchAllNativeToscaDataTypes(String toscaNativeYaml) { + return ((LinkedHashMap>) new Yaml().load(toscaNativeYaml)) + .get("data_types"); + } + + /** + * Yaml Parse gets raw policies and datatypes, in different sections : necessary to extract + * all entities and put them at the same level. + * + * @param toscaYaml the tosca model content + * @param nativeToscaYaml the tosca native datatype content + * @return a map of Tosca Element containing all tosca elements found (policy types and datatypes) + */ + public static LinkedHashMap searchAllToscaElements(String toscaYaml, + String nativeToscaYaml) { + LinkedHashMap allItemsFound = searchAllDataTypesAndPolicyTypes(toscaYaml); + allItemsFound.putAll(searchAllNativeToscaDataTypes(nativeToscaYaml)); + return parseAllItemsFound(allItemsFound); + } + + /** + * With all the component, get as Map, Components and Components properties are created. + * + * @param allMaps maps + */ + private static LinkedHashMap parseAllItemsFound(LinkedHashMap allMaps) { + LinkedHashMap allItemsFound = new LinkedHashMap(); + //Component creations, from the file maps + for (Entry itemToParse : allMaps.entrySet()) { + LinkedHashMap componentBody = (LinkedHashMap) itemToParse.getValue(); + ToscaElement toscaElement = + new ToscaElement(itemToParse.getKey(), (String) componentBody.get("derived_from"), + (String) componentBody.get("description")); + //If policy, version and type_version : + if (componentBody.get("type_version") != null) { + toscaElement.setVersion((String) componentBody.get("type_version")); + toscaElement.setTypeVersion((String) componentBody.get("type_version")); + } + //Properties creation, from the map + if (componentBody.get("properties") != null) { + LinkedHashMap properties = + (LinkedHashMap) componentBody.get("properties"); + for (Entry itemToProperty : properties.entrySet()) { + ToscaElementProperty toscaElementProperty = new ToscaElementProperty(itemToProperty.getKey(), + (LinkedHashMap) itemToProperty.getValue()); + toscaElement.addProperties(toscaElementProperty); + } + } + allItemsFound.put(toscaElement.getName(), toscaElement); + } + return allItemsFound; + } +} diff --git a/src/main/java/org/onap/clamp/clds/tosca/update/parser/metadata/ToscaMetadataParser.java b/src/main/java/org/onap/clamp/clds/tosca/update/parser/metadata/ToscaMetadataParser.java new file mode 100644 index 000000000..a51818e2e --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/tosca/update/parser/metadata/ToscaMetadataParser.java @@ -0,0 +1,31 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2020 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============================================ + * =================================================================== + * + */ + +package org.onap.clamp.clds.tosca.update.parser.metadata; + +import com.google.gson.JsonObject; +import org.onap.clamp.clds.tosca.update.elements.ToscaElementProperty; + +public interface ToscaMetadataParser { + JsonObject processAllMetadataElement(ToscaElementProperty toscaElementProperty); +} diff --git a/src/main/java/org/onap/clamp/clds/tosca/update/parser/metadata/ToscaMetadataParserWithDictionarySupport.java b/src/main/java/org/onap/clamp/clds/tosca/update/parser/metadata/ToscaMetadataParserWithDictionarySupport.java new file mode 100644 index 000000000..349ccee9e --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/tosca/update/parser/metadata/ToscaMetadataParserWithDictionarySupport.java @@ -0,0 +1,178 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2020 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============================================ + * =================================================================== + * + */ + +package org.onap.clamp.clds.tosca.update.parser.metadata; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Optional; +import org.json.JSONArray; +import org.onap.clamp.clds.tosca.JsonEditorSchemaConstants; +import org.onap.clamp.clds.tosca.ToscaSchemaConstants; +import org.onap.clamp.clds.tosca.update.elements.ToscaElementProperty; +import org.onap.clamp.tosca.DictionaryElement; +import org.onap.clamp.tosca.DictionaryService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class ToscaMetadataParserWithDictionarySupport implements ToscaMetadataParser { + + @Autowired + private DictionaryService dictionaryService; + + /** + * This method is used to start the processing of the metadata field. + * + * @param toscaElementProperty The property metadata as Json Object + * @return The jsonObject structure that must be added to the json schema + */ + public JsonObject processAllMetadataElement(ToscaElementProperty toscaElementProperty) { + if (dictionaryService != null) { + return parseMetadataPossibleValues(toscaElementProperty.getItems(), dictionaryService); + } + else { + return null; + } + } + + private static JsonObject parseMetadataPossibleValues(LinkedHashMap childNodeMap, + DictionaryService dictionaryService) { + JsonObject childObject = new JsonObject(); + if (childNodeMap.containsKey(ToscaSchemaConstants.METADATA) + && childNodeMap.get(ToscaSchemaConstants.METADATA) != null) { + LinkedHashMap metadataMap = + (LinkedHashMap) childNodeMap.get(ToscaSchemaConstants.METADATA); + if (metadataMap != null) { + metadataMap.entrySet().stream().forEach(constraint -> { + if (constraint.getKey() + .equalsIgnoreCase(ToscaSchemaConstants.METADATA_CLAMP_POSSIBLE_VALUES)) { + JSONArray validValuesArray = new JSONArray(); + if (constraint.getValue() instanceof ArrayList) { + boolean processDictionary = ((ArrayList) constraint.getValue()) + .stream().anyMatch(value -> (value instanceof String + && ((String) value).contains(ToscaSchemaConstants.DICTIONARY))); + if (processDictionary) { + ((ArrayList) constraint.getValue()).stream().forEach(value -> { + if ((value instanceof String && ((String) value) + .contains(ToscaSchemaConstants.DICTIONARY))) { + processDictionaryElements((String) value, childObject, dictionaryService); + } + + }); + } + } + } + }); + } + } + return childObject; + } + + private static void processDictionaryElements(String dictionaryReference, JsonObject childObject, + DictionaryService dictionaryService) { + String[] dictionaryKeyArray = + dictionaryReference.substring(dictionaryReference.indexOf(ToscaSchemaConstants.DICTIONARY) + 11, + dictionaryReference.length()).split("#"); + if (dictionaryKeyArray.length > 1) { + // We support only one # as of now. + List dictionaryElements = null; + if (dictionaryKeyArray.length == 2) { + dictionaryElements = new ArrayList<>(dictionaryService.getDictionary(dictionaryKeyArray[0]) + .getDictionaryElements()); + JsonArray subDictionaryNames = new JsonArray(); + new ArrayList(dictionaryService.getDictionary(dictionaryKeyArray[1]) + .getDictionaryElements()).forEach(elem -> subDictionaryNames.add(elem.getShortName())); + + JsonArray jsonArray = new JsonArray(); + + Optional.of(dictionaryElements).get().stream().forEach(c -> { + JsonObject jsonObject = new JsonObject(); + jsonObject.addProperty(JsonEditorSchemaConstants.TYPE, getJsonType(c.getType())); + if (c.getType() != null + && c.getType().equalsIgnoreCase(ToscaSchemaConstants.TYPE_STRING)) { + jsonObject.addProperty(JsonEditorSchemaConstants.MIN_LENGTH, 1); + + } + jsonObject.addProperty(JsonEditorSchemaConstants.ID, c.getName()); + jsonObject.addProperty(JsonEditorSchemaConstants.LABEL, c.getShortName()); + jsonObject.add(JsonEditorSchemaConstants.OPERATORS, subDictionaryNames); + jsonArray.add(jsonObject); + }); + + JsonObject filterObject = new JsonObject(); + filterObject.add(JsonEditorSchemaConstants.FILTERS, jsonArray); + + childObject.addProperty(JsonEditorSchemaConstants.TYPE, + JsonEditorSchemaConstants.TYPE_QBLDR); + // TO invoke validation on such parameters + childObject.addProperty(JsonEditorSchemaConstants.MIN_LENGTH, 1); + childObject.add(JsonEditorSchemaConstants.QSSCHEMA, filterObject); + + } + } + else { + List dictionaryElements = + new ArrayList<>(dictionaryService.getDictionary(dictionaryKeyArray[0]).getDictionaryElements()); + JsonArray dictionaryNames = new JsonArray(); + JsonArray dictionaryFullNames = new JsonArray(); + dictionaryElements.stream().forEach(c -> { + // Json type will be translated before Policy creation + if (c.getType() != null && !c.getType().equalsIgnoreCase("json")) { + dictionaryFullNames.add(c.getName()); + } + dictionaryNames.add(c.getShortName()); + }); + + if (dictionaryFullNames.size() > 0) { + childObject.add(JsonEditorSchemaConstants.ENUM, dictionaryFullNames); + // Add Enum titles for generated translated values during JSON instance + // generation + JsonObject enumTitles = new JsonObject(); + enumTitles.add(JsonEditorSchemaConstants.ENUM_TITLES, dictionaryNames); + childObject.add(JsonEditorSchemaConstants.OPTIONS, enumTitles); + } + else { + childObject.add(JsonEditorSchemaConstants.ENUM, dictionaryNames); + } + } + } + + private static String getJsonType(String toscaType) { + String jsonType = null; + if (toscaType.equalsIgnoreCase(ToscaSchemaConstants.TYPE_INTEGER)) { + jsonType = JsonEditorSchemaConstants.TYPE_INTEGER; + } + else if (toscaType.equalsIgnoreCase(ToscaSchemaConstants.TYPE_LIST)) { + jsonType = JsonEditorSchemaConstants.TYPE_ARRAY; + } + else { + jsonType = JsonEditorSchemaConstants.TYPE_STRING; + } + return jsonType; + } + +} diff --git a/src/main/java/org/onap/clamp/clds/tosca/update/templates/JsonTemplate.java b/src/main/java/org/onap/clamp/clds/tosca/update/templates/JsonTemplate.java new file mode 100644 index 000000000..f64ba68cf --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/tosca/update/templates/JsonTemplate.java @@ -0,0 +1,224 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2020 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============================================ + * =================================================================== + * + */ + +package org.onap.clamp.clds.tosca.update.templates; + +import com.google.gson.JsonObject; +import java.util.ArrayList; +import java.util.List; + +public class JsonTemplate { + + /** + * name parameter is used as "key", in the LinkedHashMap of Templates. + */ + private String name; + private List jsonTemplateFields; + + public JsonTemplate(String name) { + this.name = name; + this.jsonTemplateFields = new ArrayList<>(); + } + + public JsonTemplate(String name, List jsonTemplateFields) { + this.name = name; + this.jsonTemplateFields = jsonTemplateFields; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public List getJsonTemplateFields() { + return jsonTemplateFields; + } + + public void setJsonTemplateFields(List jsonTemplateFields) { + this.jsonTemplateFields = jsonTemplateFields; + } + + /** + * Search in fields if fieldName exists. + * + * @param fieldName The field name + * @return Ture if it exists, false otherwise + */ + public boolean hasFields(String fieldName) { + for (JsonTemplateField jsonTemplateField : this.getJsonTemplateFields()) { + if (jsonTemplateField.getTitle().equals(fieldName)) { + return true; + } + } + return false; + } + + /** + * Get a specific Field. + * + * @param fieldName The field name + * @return THe Field found + */ + public JsonTemplateField getSpecificField(String fieldName) { + for (JsonTemplateField jsonTemplateField : this.getJsonTemplateFields()) { + if (jsonTemplateField.getTitle().equals(fieldName)) { + return jsonTemplateField; + } + } + return null; + } + + public void addField(JsonTemplateField jsonTemplateField) { + jsonTemplateFields.add(jsonTemplateField); + } + + public void removeField(JsonTemplateField jsonTemplateField) { + jsonTemplateFields.remove(jsonTemplateField); + } + + /** + * Enable or disable the visibility. + * + * @param nameField THe field name + * @param state True or false + */ + public void setVisibility(String nameField, boolean state) { + for (JsonTemplateField jsonTemplateField : this.jsonTemplateFields) { + if (jsonTemplateField.getTitle().equals(nameField)) { + jsonTemplateField.setVisible(state); + } + } + } + + /** + * This method defines if a field is static or not. + * + * @param nameField The name of the field + * @param state true or false + */ + public void setStatic(String nameField, boolean state) { + for (JsonTemplateField jsonTemplateField : this.jsonTemplateFields) { + if (jsonTemplateField.getTitle().equals(nameField)) { + jsonTemplateField.setStaticValue(state); + } + } + } + + /** + * This method updates the value of a specfic field. + * + * @param nameField The name of the field + * @param newValue The new value as Object + */ + public void updateValueField(String nameField, Object newValue) { + for (JsonTemplateField jsonTemplateField : this.jsonTemplateFields) { + if (jsonTemplateField.getTitle().equals(nameField)) { + jsonTemplateField.setValue(newValue); + } + } + } + + /** + * Compare two templates : size and their contents. + * + * @param jsonTemplate the template + * @return a boolean + */ + public boolean checkFields(JsonTemplate jsonTemplate) { + boolean duplicateFields = false; + if (jsonTemplate.getJsonTemplateFields().size() == this.getJsonTemplateFields().size()) { + int countMatchingFields = 0; + //loop each component of first + for (JsonTemplateField jsonTemplateFieldToCheck : jsonTemplate.getJsonTemplateFields()) { + for (JsonTemplateField jsonTemplateField : this.getJsonTemplateFields()) { + if (jsonTemplateFieldToCheck.compareWithField(jsonTemplateField)) { + countMatchingFields++; + } + } + } + + if (jsonTemplate.getJsonTemplateFields().size() == countMatchingFields) { + duplicateFields = true; + } + } + return duplicateFields; + } + + /** + * This method gets the specific field status. + * + * @param field The field name + * @return true or false + */ + public boolean fieldStaticStatus(String field) { + if (this.hasFields(field) && this.getSpecificField(field).getStaticValue().equals(true) + && this.getSpecificField(field).getValue() != null) { + return true; + } + return false; + } + + public boolean isVisible(String field) { + return this.getSpecificField(field).getVisible(); + } + + /** + * Set the value of a property of the Field in the json. + * + * @param jsonSchema The Json schema + * @param fieldName The Field name + * @param value The value + */ + public void setValue(JsonObject jsonSchema, String fieldName, String value) { + if (isVisible(fieldName)) { + if (fieldStaticStatus(fieldName)) { + String defaultValue = (String) this.getSpecificField(fieldName).getValue(); + jsonSchema.addProperty(fieldName, defaultValue); + } + else { + jsonSchema.addProperty(fieldName, value); + } + } + } + + /** + * Inject a static value in the json. + * + * @param jsonSchema The json schema object + * @param fieldName The field name + */ + public void injectStaticValue(JsonObject jsonSchema, String fieldName) { + if (isVisible(fieldName)) { + JsonTemplateField toInject = this.getSpecificField(fieldName); + jsonSchema.addProperty(fieldName, (String) toInject.getValue()); + } + } + + @Override + public String toString() { + return " templateFields : " + jsonTemplateFields; + } +} diff --git a/src/main/java/org/onap/clamp/clds/tosca/update/templates/JsonTemplateField.java b/src/main/java/org/onap/clamp/clds/tosca/update/templates/JsonTemplateField.java new file mode 100644 index 000000000..a1e15307c --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/tosca/update/templates/JsonTemplateField.java @@ -0,0 +1,149 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2020 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============================================ + * =================================================================== + * + */ + +package org.onap.clamp.clds.tosca.update.templates; + +public class JsonTemplateField { + private String title; + private Object value; + private Boolean visible; + private Boolean staticValue; + + public JsonTemplateField(String title) { + this.title = title; + } + + /** + * Constructor. + * + * @param title The title + * @param value The value + * @param visible visible or not + * @param staticValue The static value + */ + public JsonTemplateField(String title, Object value, Boolean visible, Boolean staticValue) { + this.title = title; + this.value = value; + this.visible = visible; + this.staticValue = staticValue; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public Object getValue() { + return value; + } + + public void setValue(Object value) { + this.value = value; + } + + public Boolean getVisible() { + return visible; + } + + public void setVisible(Boolean visible) { + this.visible = visible; + } + + public Boolean getStaticValue() { + return staticValue; + } + + public void setStaticValue(Boolean staticValue) { + this.staticValue = staticValue; + } + + public String toString() { + return title + " " + value + " " + visible + " " + staticValue; + } + + /** + * This method compares two fields. + * + * @param otherField Compare the current object with the one specified + * @return true if they are totally equals, false otherwise + */ + public boolean compareWithField(Object otherField) { + if (this == otherField) { + return true; + } + if (otherField == null || getClass() != otherField.getClass()) { + return false; + } + + JsonTemplateField jsonTemplateField = (JsonTemplateField) otherField; + + if (title != null ? !title.equals(jsonTemplateField.title) : jsonTemplateField.title != null) { + return false; + } + if (value != null ? !value.equals(jsonTemplateField.value) : jsonTemplateField.value != null) { + return false; + } + if (visible != null ? !visible.equals(jsonTemplateField.visible) : jsonTemplateField.visible != null) { + return false; + } + return staticValue != null ? staticValue.equals(jsonTemplateField.staticValue) : + jsonTemplateField.staticValue == null; + } + + @Override + public boolean equals(Object object) { + if (this == object) { + return true; + } + if (object == null || getClass() != object.getClass()) { + return false; + } + + JsonTemplateField jsonTemplateField = (JsonTemplateField) object; + + return title != null ? title.equals(jsonTemplateField.title) : jsonTemplateField.title == null; + } + + @Override + public int hashCode() { + return title != null ? title.hashCode() : 0; + } + + /** + * This method test the entire equality. + * + * @param jsonTemplateField1 object one + * @param jsonTemplateField2 object two + * @return true if they are totally equals (all attributes, false otherwise + */ + public static boolean fieldsEquals(JsonTemplateField jsonTemplateField1, JsonTemplateField jsonTemplateField2) { + return (jsonTemplateField2.getTitle().equals(jsonTemplateField1.getTitle()) + && jsonTemplateField2.getValue().equals(jsonTemplateField1.getValue()) + && jsonTemplateField2.getVisible().equals(jsonTemplateField1.getVisible()) + && jsonTemplateField2.getStaticValue().equals(jsonTemplateField1.getStaticValue())); + } + +} diff --git a/src/main/java/org/onap/clamp/clds/tosca/update/templates/JsonTemplateManager.java b/src/main/java/org/onap/clamp/clds/tosca/update/templates/JsonTemplateManager.java new file mode 100644 index 000000000..5e4b66009 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/tosca/update/templates/JsonTemplateManager.java @@ -0,0 +1,184 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2020 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============================================ + * =================================================================== + * + */ + +package org.onap.clamp.clds.tosca.update.templates; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import java.util.Collection; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import org.onap.clamp.clds.tosca.update.UnknownComponentException; +import org.onap.clamp.clds.tosca.update.elements.ToscaElement; +import org.onap.clamp.clds.tosca.update.parser.ToscaConverterToJsonSchema; +import org.onap.clamp.clds.tosca.update.parser.ToscaElementParser; +import org.onap.clamp.clds.tosca.update.parser.metadata.ToscaMetadataParser; +import org.onap.clamp.clds.util.JsonUtils; + +public class JsonTemplateManager { + private LinkedHashMap jsonSchemaTemplates; + private LinkedHashMap toscaElements; + + /** + * Constructor. + * + * @param toscaYamlContent Policy Tosca Yaml content as string + * @param nativeToscaDatatypes The tosca yaml with tosca native datatypes + * @param jsonSchemaTemplates template properties as string + */ + public JsonTemplateManager(String toscaYamlContent, String nativeToscaDatatypes, String jsonSchemaTemplates) { + if (toscaYamlContent != null && !toscaYamlContent.isEmpty()) { + this.toscaElements = ToscaElementParser.searchAllToscaElements(toscaYamlContent, nativeToscaDatatypes); + this.jsonSchemaTemplates = initializeTemplates(jsonSchemaTemplates); + } + else { + toscaElements = null; + } + } + + //GETTERS & SETTERS + public LinkedHashMap getToscaElements() { + return toscaElements; + } + + public void setToscaElements(LinkedHashMap toscaElements) { + this.toscaElements = toscaElements; + } + + public LinkedHashMap getJsonSchemaTemplates() { + return jsonSchemaTemplates; + } + + public void setJsonSchemaTemplates(LinkedHashMap jsonSchemaTemplates) { + this.jsonSchemaTemplates = jsonSchemaTemplates; + } + + /** + * Add a template. + * + * @param name name + * @param jsonTemplateFields fields + */ + public void addTemplate(String name, List jsonTemplateFields) { + JsonTemplate jsonTemplate = new JsonTemplate(name, jsonTemplateFields); + //If it is true, the operation does not have any interest : + // replace OR put two different object with the same body + if (!jsonSchemaTemplates.containsKey(jsonTemplate.getName()) || !this.hasTemplate(jsonTemplate)) { + this.jsonSchemaTemplates.put(jsonTemplate.getName(), jsonTemplate); + } + } + + /** + * By name, find and remove a given template. + * + * @param nameTemplate name template + */ + public void removeTemplate(String nameTemplate) { + this.jsonSchemaTemplates.remove(nameTemplate); + } + + /** + * Update Template : adding with true flag, removing with false. + * + * @param nameTemplate name template + * @param jsonTemplateField field name + * @param operation operation + */ + public void updateTemplate(String nameTemplate, JsonTemplateField jsonTemplateField, Boolean operation) { + // Operation = true && field is not present => add Field + if (operation && !this.jsonSchemaTemplates.get(nameTemplate).getJsonTemplateFields().contains(jsonTemplateField)) { + this.jsonSchemaTemplates.get(nameTemplate).addField(jsonTemplateField); + } + // Operation = false && field is present => remove Field + else if (!operation && this.jsonSchemaTemplates.get(nameTemplate).getJsonTemplateFields().contains(jsonTemplateField)) { + this.jsonSchemaTemplates.get(nameTemplate).removeField(jsonTemplateField); + } + } + + /** + * Check if the JSONTemplates have the same bodies. + * + * @param jsonTemplate template + * @return a boolean + */ + public boolean hasTemplate(JsonTemplate jsonTemplate) { + boolean duplicateTemplate = false; + Collection templatesName = jsonSchemaTemplates.keySet(); + if (templatesName.contains(jsonTemplate.getName())) { + JsonTemplate existingJsonTemplate = jsonSchemaTemplates.get(jsonTemplate.getName()); + duplicateTemplate = existingJsonTemplate.checkFields(jsonTemplate); + } + return duplicateTemplate; + } + + /** + * For a given policy type, get a corresponding JsonObject from the tosca model. + * + * @param policyType The policy type in the tosca + * @param toscaMetadataParser The MetadataParser class that must be used if metadata section are encountered, if null + * they will be skipped + * @return an json object defining the equivalent json schema from the tosca for a given policy type + */ + public JsonObject getJsonSchemaForPolicyType(String policyType, ToscaMetadataParser toscaMetadataParser) + throws UnknownComponentException { + ToscaConverterToJsonSchema + toscaConverterToJsonSchema = new ToscaConverterToJsonSchema(toscaElements, jsonSchemaTemplates, + toscaMetadataParser); + if (toscaConverterToJsonSchema.getToscaElement(policyType) == null) { + throw new UnknownComponentException(policyType); + } + return toscaConverterToJsonSchema.getJsonSchemaOfToscaElement(policyType); + } + + /** + * Create and complete several Templates from file.properties. + * + * @param jsonTemplates The template properties as String + * @return a map + */ + @SuppressWarnings("unused") + private LinkedHashMap initializeTemplates(String jsonTemplates) { + + LinkedHashMap generatedTemplates = new LinkedHashMap<>(); + JsonObject templates = JsonUtils.GSON.fromJson(jsonTemplates, JsonObject.class); + + for (Map.Entry templateAsJson : templates.entrySet()) { + JsonTemplate jsonTemplate = new JsonTemplate(templateAsJson.getKey()); + JsonObject templateBody = (JsonObject) templateAsJson.getValue(); + for (Map.Entry field : templateBody.entrySet()) { + String fieldName = field.getKey(); + JsonObject bodyFieldAsJson = (JsonObject) field.getValue(); + Object fieldValue = bodyFieldAsJson.get("defaultValue").getAsString(); + Boolean fieldVisible = bodyFieldAsJson.get("visible").getAsBoolean(); + Boolean fieldStatic = bodyFieldAsJson.get("static").getAsBoolean(); + JsonTemplateField + bodyJsonTemplateField = new JsonTemplateField(fieldName, fieldValue, fieldVisible, fieldStatic); + jsonTemplate.getJsonTemplateFields().add(bodyJsonTemplateField); + } + generatedTemplates.put(jsonTemplate.getName(), jsonTemplate); + } + return generatedTemplates; + } + +} diff --git a/src/main/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilder.java b/src/main/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilder.java index 846b3ab2d..6cf342f2c 100755 --- a/src/main/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilder.java +++ b/src/main/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilder.java @@ -88,7 +88,7 @@ public class ClampGraphBuilder { public ClampGraphBuilder addLoopElementModel(LoopElementModel loopElementModel) { if (LoopElementModel.MICRO_SERVICE_TYPE.equals(loopElementModel.getLoopElementType())) { microServices.add(new MicroServicePolicy(loopElementModel.getName(), - loopElementModel.getPolicyModels().first(), false, loopElementModel)); + loopElementModel.getPolicyModels().first(), false,null,loopElementModel,null,null)); } else if (LoopElementModel.OPERATIONAL_POLICY_TYPE.equals(loopElementModel.getLoopElementType())) { policies.add(new OperationalPolicy(loopElementModel.getName(), null, null, loopElementModel.getPolicyModels().first(), loopElementModel, null, null)); diff --git a/src/main/java/org/onap/clamp/loop/Loop.java b/src/main/java/org/onap/clamp/loop/Loop.java index 2bf3decd6..dd6fbf051 100644 --- a/src/main/java/org/onap/clamp/loop/Loop.java +++ b/src/main/java/org/onap/clamp/loop/Loop.java @@ -27,6 +27,7 @@ import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; import com.google.gson.JsonObject; import com.google.gson.annotations.Expose; +import java.io.IOException; import java.io.Serializable; import java.util.HashMap; import java.util.HashSet; @@ -48,11 +49,11 @@ import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.persistence.Transient; -import org.apache.commons.lang3.RandomStringUtils; import org.hibernate.annotations.SortNatural; import org.hibernate.annotations.Type; import org.hibernate.annotations.TypeDef; import org.hibernate.annotations.TypeDefs; +import org.onap.clamp.clds.tosca.update.ToscaConverterWithDictionarySupport; import org.onap.clamp.clds.util.drawing.SvgLoopGenerator; import org.onap.clamp.dao.model.jsontype.StringJsonUserType; import org.onap.clamp.loop.common.AuditEntity; @@ -63,7 +64,6 @@ import org.onap.clamp.loop.log.LoopLog; import org.onap.clamp.loop.service.Service; import org.onap.clamp.loop.template.LoopElementModel; import org.onap.clamp.loop.template.LoopTemplate; -import org.onap.clamp.policy.Policy; import org.onap.clamp.policy.microservice.MicroServicePolicy; import org.onap.clamp.policy.operational.OperationalPolicy; @@ -164,24 +164,29 @@ public class Loop extends AuditEntity implements Serializable { * @param name The loop name * @param loopTemplate The loop template from which a new loop instance must be created */ - public Loop(String name, LoopTemplate loopTemplate) { - this(name,""); + public Loop(String name, LoopTemplate loopTemplate, ToscaConverterWithDictionarySupport toscaConverter) { + this(name, ""); this.setLoopTemplate(loopTemplate); this.setModelService(loopTemplate.getModelService()); loopTemplate.getLoopElementModelsUsed().forEach(element -> { if (LoopElementModel.MICRO_SERVICE_TYPE.equals(element.getLoopElementModel().getLoopElementType())) { - this.addMicroServicePolicy(new MicroServicePolicy(Policy.generatePolicyName("MICROSERVICE_", - loopTemplate.getModelService().getName(),loopTemplate.getModelService().getVersion(), - RandomStringUtils.randomAlphanumeric(3),RandomStringUtils.randomAlphanumeric(3)), - element.getLoopElementModel().getPolicyModels().first(), false, element.getLoopElementModel())); - } else if (LoopElementModel.OPERATIONAL_POLICY_TYPE + try { + this.addMicroServicePolicy((MicroServicePolicy) element.getLoopElementModel() + .createPolicyInstance(this, toscaConverter)); + } catch (IOException e) { + logger.error("Exception caught when creating the microservice policy instance of the loop " + + "instance", e); + } + } + else if (LoopElementModel.OPERATIONAL_POLICY_TYPE .equals(element.getLoopElementModel().getLoopElementType())) { - this.addOperationalPolicy(new OperationalPolicy(Policy.generatePolicyName("OPERATIONAL_", - loopTemplate.getModelService().getName(),loopTemplate.getModelService().getVersion(), - RandomStringUtils.randomAlphanumeric(3),RandomStringUtils.randomAlphanumeric(3)), null, - new JsonObject(), - element.getLoopElementModel().getPolicyModels().first(), element.getLoopElementModel(), - null,null)); + try { + this.addOperationalPolicy((OperationalPolicy) element.getLoopElementModel() + .createPolicyInstance(this, toscaConverter)); + } catch (IOException e) { + logger.error("Exception caught when creating the operational policy instance of the loop instance", + e); + } } }); } @@ -379,7 +384,8 @@ public class Loop extends AuditEntity implements Serializable { if (other.name != null) { return false; } - } else if (!name.equals(other.name)) { + } + else if (!name.equals(other.name)) { return false; } return true; diff --git a/src/main/java/org/onap/clamp/loop/LoopController.java b/src/main/java/org/onap/clamp/loop/LoopController.java index 1a4ae5997..d230eb976 100644 --- a/src/main/java/org/onap/clamp/loop/LoopController.java +++ b/src/main/java/org/onap/clamp/loop/LoopController.java @@ -26,6 +26,7 @@ package org.onap.clamp.loop; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; +import java.io.IOException; import java.lang.reflect.Type; import java.util.List; import org.onap.clamp.clds.util.JsonUtils; @@ -105,7 +106,7 @@ public class LoopController { * @param policyVersion The policy model version * @return The loop modified */ - public Loop addOperationalPolicy(String loopName, String policyType, String policyVersion) { + public Loop addOperationalPolicy(String loopName, String policyType, String policyVersion) throws IOException { return loopService.addOperationalPolicy(loopName, policyType, policyVersion); } diff --git a/src/main/java/org/onap/clamp/loop/LoopService.java b/src/main/java/org/onap/clamp/loop/LoopService.java index 953a59471..acd125b78 100644 --- a/src/main/java/org/onap/clamp/loop/LoopService.java +++ b/src/main/java/org/onap/clamp/loop/LoopService.java @@ -24,14 +24,14 @@ package org.onap.clamp.loop; import com.google.gson.JsonObject; +import java.io.IOException; import java.util.List; import java.util.Set; import javax.persistence.EntityNotFoundException; -import org.apache.commons.lang3.RandomStringUtils; +import org.onap.clamp.clds.tosca.update.ToscaConverterWithDictionarySupport; import org.onap.clamp.loop.template.LoopTemplatesService; import org.onap.clamp.loop.template.PolicyModel; import org.onap.clamp.loop.template.PolicyModelsService; -import org.onap.clamp.policy.Policy; import org.onap.clamp.policy.microservice.MicroServicePolicy; import org.onap.clamp.policy.microservice.MicroServicePolicyService; import org.onap.clamp.policy.operational.OperationalPolicy; @@ -57,6 +57,9 @@ public class LoopService { @Autowired private LoopTemplatesService loopTemplateService; + @Autowired + private ToscaConverterWithDictionarySupport toscaConverter; + Loop saveOrUpdateLoop(Loop loop) { return loopsRepository.save(loop); } @@ -76,12 +79,13 @@ public class LoopService { /** * Creates a Loop Instance from Loop Template Name. * - * @param loopName Name of the Loop to be created + * @param loopName Name of the Loop to be created * @param templateName Loop Template to used for Loop * @return Loop Instance */ public Loop createLoopFromTemplate(String loopName, String templateName) { - return loopsRepository.save(new Loop(loopName,loopTemplateService.getLoopTemplate(templateName))); + return loopsRepository + .save(new Loop(loopName, loopTemplateService.getLoopTemplate(templateName), toscaConverter)); } /** @@ -104,22 +108,21 @@ public class LoopService { /** * This method add an operational policy to a loop instance. + * This creates an operational policy from the policy model info and not the loop element model * - * @param loopName The loop name - * @param policyType The policy model type + * @param loopName The loop name + * @param policyType The policy model type * @param policyVersion The policy model version * @return The loop modified */ - Loop addOperationalPolicy(String loopName, String policyType, String policyVersion) { + Loop addOperationalPolicy(String loopName, String policyType, String policyVersion) throws IOException { Loop loop = getLoop(loopName); PolicyModel policyModel = policyModelsService.getPolicyModel(policyType, policyVersion); if (policyModel == null) { return null; } loop.addOperationalPolicy( - new OperationalPolicy(Policy.generatePolicyName("OPERATIONAL", loop.getModelService().getName(), - loop.getModelService().getVersion(), RandomStringUtils.randomAlphanumeric(3), - RandomStringUtils.randomAlphanumeric(4)), loop, null, policyModel, null, null, null)); + new OperationalPolicy(loop,loop.getModelService(), policyModel, toscaConverter)); return loopsRepository.saveAndFlush(loop); } diff --git a/src/main/java/org/onap/clamp/loop/service/CsarServiceInstaller.java b/src/main/java/org/onap/clamp/loop/service/CsarServiceInstaller.java index b7ed1de9a..6db6d920f 100644 --- a/src/main/java/org/onap/clamp/loop/service/CsarServiceInstaller.java +++ b/src/main/java/org/onap/clamp/loop/service/CsarServiceInstaller.java @@ -27,9 +27,7 @@ package org.onap.clamp.loop.service; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; import com.google.gson.JsonObject; - import java.util.Map.Entry; - import org.onap.clamp.clds.client.CdsServices; import org.onap.clamp.clds.exception.sdc.controller.SdcArtifactInstallerException; import org.onap.clamp.clds.model.cds.CdsBpWorkFlowListResponse; @@ -96,7 +94,8 @@ public class CsarServiceInstaller { if (SdcTypes.PNF == type || SdcTypes.VF == type) { JsonObject controllerProperties = createCdsArtifactProperties(nodeTemplate); if (controllerProperties != null) { - resourcesPropByType.getAsJsonObject(nodeTemplate.getName()).add("controllerProperties", controllerProperties); + resourcesPropByType.getAsJsonObject(nodeTemplate.getName()) + .add("controllerProperties", controllerProperties); } } } @@ -151,7 +150,8 @@ public class CsarServiceInstaller { Object artifactName = nodeTemplate.getPropertyValue("sdnc_model_name"); Object artifactVersion = nodeTemplate.getPropertyValue("sdnc_model_version"); if (artifactName != null && artifactVersion != null) { - CdsBpWorkFlowListResponse response = queryCdsToGetWorkFlowList(artifactName.toString(), artifactVersion.toString()); + CdsBpWorkFlowListResponse response = + queryCdsToGetWorkFlowList(artifactName.toString(), artifactVersion.toString()); if (response == null) { return null; } @@ -159,7 +159,7 @@ public class CsarServiceInstaller { JsonObject workFlowProps = new JsonObject(); for (String workFlow : response.getWorkflows()) { JsonObject inputs = queryCdsToGetWorkFlowInputProperties(response.getBlueprintName(), - response.getVersion(), workFlow); + response.getVersion(), workFlow); workFlowProps.add(workFlow, inputs); } @@ -176,7 +176,8 @@ public class CsarServiceInstaller { return cdsServices.getBlueprintWorkflowList(artifactName, artifactVersion); } - private JsonObject queryCdsToGetWorkFlowInputProperties(String artifactName, String artifactVersion, String workFlow) { + private JsonObject queryCdsToGetWorkFlowInputProperties(String artifactName, String artifactVersion, + String workFlow) { return cdsServices.getWorkflowInputProperties(artifactName, artifactVersion, workFlow); } } diff --git a/src/main/java/org/onap/clamp/loop/service/Service.java b/src/main/java/org/onap/clamp/loop/service/Service.java index 89c0b2d42..338032a16 100644 --- a/src/main/java/org/onap/clamp/loop/service/Service.java +++ b/src/main/java/org/onap/clamp/loop/service/Service.java @@ -27,15 +27,12 @@ import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; import com.google.gson.JsonObject; import com.google.gson.annotations.Expose; - import java.io.Serializable; - import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; import javax.persistence.Transient; - import org.hibernate.annotations.Type; import org.hibernate.annotations.TypeDef; import org.hibernate.annotations.TypeDefs; @@ -44,7 +41,7 @@ import org.onap.clamp.dao.model.jsontype.StringJsonUserType; @Entity @Table(name = "services") -@TypeDefs({ @TypeDef(name = "json", typeClass = StringJsonUserType.class) }) +@TypeDefs({@TypeDef(name = "json", typeClass = StringJsonUserType.class)}) public class Service implements Serializable { /** @@ -120,6 +117,8 @@ public class Service implements Serializable { } /** + * Name getter. + * * @return the name */ public String getName() { @@ -127,6 +126,8 @@ public class Service implements Serializable { } /** + * Version getter. + * * @return the version */ public String getVersion() { @@ -157,7 +158,8 @@ public class Service implements Serializable { if (other.serviceUuid != null) { return false; } - } else if (!serviceUuid.equals(other.serviceUuid)) { + } + else if (!serviceUuid.equals(other.serviceUuid)) { return false; } return true; diff --git a/src/main/java/org/onap/clamp/loop/template/LoopElementModel.java b/src/main/java/org/onap/clamp/loop/template/LoopElementModel.java index 479605983..dfdfc42b3 100644 --- a/src/main/java/org/onap/clamp/loop/template/LoopElementModel.java +++ b/src/main/java/org/onap/clamp/loop/template/LoopElementModel.java @@ -24,6 +24,7 @@ package org.onap.clamp.loop.template; import com.google.gson.annotations.Expose; +import java.io.IOException; import java.io.Serializable; import java.util.HashSet; import java.util.Set; @@ -40,7 +41,12 @@ import javax.persistence.ManyToMany; import javax.persistence.OneToMany; import javax.persistence.Table; import org.hibernate.annotations.SortNatural; +import org.onap.clamp.clds.tosca.update.ToscaConverterWithDictionarySupport; +import org.onap.clamp.loop.Loop; import org.onap.clamp.loop.common.AuditEntity; +import org.onap.clamp.policy.Policy; +import org.onap.clamp.policy.microservice.MicroServicePolicy; +import org.onap.clamp.policy.operational.OperationalPolicy; /** * This class represents a micro service/operational/... model for a loop template. @@ -241,6 +247,24 @@ public class LoopElementModel extends AuditEntity implements Serializable { this.blueprint = blueprint; } + /** + * Create a policy instance from the current loop element model. + * + * @return A Policy object. + * @throws IOException in case of failure when creating an operational policy + */ + public Policy createPolicyInstance(Loop loop, ToscaConverterWithDictionarySupport toscaConverter) + throws IOException { + if (LoopElementModel.MICRO_SERVICE_TYPE.equals(this.getLoopElementType())) { + return new MicroServicePolicy(loop, loop.getModelService(), this, toscaConverter); + } + else if (LoopElementModel.OPERATIONAL_POLICY_TYPE.equals(this.getLoopElementType())) { + return new OperationalPolicy(loop, loop.getModelService(), this, toscaConverter); + } else { + return null; + } + } + @Override public int hashCode() { final int prime = 31; @@ -265,7 +289,8 @@ public class LoopElementModel extends AuditEntity implements Serializable { if (other.name != null) { return false; } - } else if (!name.equals(other.name)) { + } + else if (!name.equals(other.name)) { return false; } return true; diff --git a/src/main/java/org/onap/clamp/loop/template/PolicyModelsService.java b/src/main/java/org/onap/clamp/loop/template/PolicyModelsService.java index aeea55dbb..ae66c54b8 100644 --- a/src/main/java/org/onap/clamp/loop/template/PolicyModelsService.java +++ b/src/main/java/org/onap/clamp/loop/template/PolicyModelsService.java @@ -56,7 +56,7 @@ public class PolicyModelsService { * @return The Policy Model */ public PolicyModel saveOrUpdatePolicyModel(PolicyModel policyModel) { - return policyModelsRepository.save(policyModel); + return policyModelsRepository.saveAndFlush(policyModel); } /** diff --git a/src/main/java/org/onap/clamp/policy/Policy.java b/src/main/java/org/onap/clamp/policy/Policy.java index c9055bf9d..3b2206461 100644 --- a/src/main/java/org/onap/clamp/policy/Policy.java +++ b/src/main/java/org/onap/clamp/policy/Policy.java @@ -30,7 +30,6 @@ import com.google.gson.GsonBuilder; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.google.gson.annotations.Expose; -import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.Map; import javax.persistence.Column; @@ -44,9 +43,6 @@ import org.hibernate.annotations.Type; import org.hibernate.annotations.TypeDef; import org.hibernate.annotations.TypeDefs; import org.json.JSONObject; -import org.onap.clamp.clds.tosca.update.ToscaConverterManager; -import org.onap.clamp.clds.tosca.update.UnknownComponentException; -import org.onap.clamp.clds.util.ResourceFileUtil; import org.onap.clamp.dao.model.jsontype.StringJsonUserType; import org.onap.clamp.loop.common.AuditEntity; import org.onap.clamp.loop.template.LoopElementModel; @@ -286,23 +282,4 @@ public abstract class Policy extends AuditEntity { .append(blueprintFilename.replaceAll(".yaml", "")); return buffer.toString().replace('.', '_').replaceAll(" ", ""); } - - /** - * This method can be used to generate the json Schema used by the UI. - * - * @param policyToscaModel The tosca model as String that must be converted - * @param policyModelType The tosca model type (the policy_type entry in the tosca) that will used to create the - * json schema - * @return THe Json Schema as JsonObject - * @throws IOException In case of failure when opening the templates.json file - * @throws UnknownComponentException If the policyModelType is not found in the tosca model - */ - public static JsonObject generateJsonRepresentationFromToscaModel(String policyToscaModel, - String policyModelType) - throws IOException, UnknownComponentException { - return new ToscaConverterManager(policyToscaModel,ResourceFileUtil.getResourceAsString( - "clds/tosca_update/default-tosca-types.yaml"), - ResourceFileUtil.getResourceAsString("clds/tosca_update/templates.json")) - .startConversionToJson(policyModelType); - } } diff --git a/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java b/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java index b8093ccf1..321c12f6a 100644 --- a/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java +++ b/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java @@ -27,7 +27,6 @@ import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; import com.google.gson.JsonObject; import com.google.gson.annotations.Expose; -import java.io.IOException; import java.io.Serializable; import java.util.HashSet; import java.util.Set; @@ -38,11 +37,13 @@ import javax.persistence.Id; import javax.persistence.ManyToMany; import javax.persistence.Table; import javax.persistence.Transient; +import org.apache.commons.lang3.RandomStringUtils; import org.hibernate.annotations.TypeDef; import org.hibernate.annotations.TypeDefs; -import org.onap.clamp.clds.tosca.update.UnknownComponentException; +import org.onap.clamp.clds.tosca.update.ToscaConverterWithDictionarySupport; import org.onap.clamp.dao.model.jsontype.StringJsonUserType; import org.onap.clamp.loop.Loop; +import org.onap.clamp.loop.service.Service; import org.onap.clamp.loop.template.LoopElementModel; import org.onap.clamp.loop.template.PolicyModel; import org.onap.clamp.policy.Policy; @@ -91,31 +92,10 @@ public class MicroServicePolicy extends Policy implements Serializable { @Column(name = "dcae_blueprint_id") private String dcaeBlueprintId; - public MicroServicePolicy() { - // serialization - } - /** - * The constructor that creates the json representation from the policyTosca - * using the ToscaYamlToJsonConvertor. - * - * @param name The name of the MicroService - * @param policyModel The policy model of the MicroService - * @param shared The flag indicate whether the MicroService is shared + * Constructor for serialization. */ - public MicroServicePolicy(String name, PolicyModel policyModel, Boolean shared, LoopElementModel loopElementModel) { - this.name = name; - this.setPolicyModel(policyModel); - this.shared = shared; - try { - this.setJsonRepresentation( - Policy.generateJsonRepresentationFromToscaModel(policyModel.getPolicyModelTosca(), - policyModel.getPolicyModelType())); - } catch (UnknownComponentException | NullPointerException | IOException e) { - logger.error("Unable to generate the microservice policy Schema ... ", e); - this.setJsonRepresentation(new JsonObject()); - } - this.setLoopElementModel(loopElementModel); + public MicroServicePolicy() { } /** @@ -129,7 +109,7 @@ public class MicroServicePolicy extends Policy implements Serializable { * @param jsonRepresentation The UI representation in json format * @param loopElementModel The loop element model from which this instance should be created * @param pdpGroup The Pdp Group info - * @param pdpSubgroup The Pdp Subgrouop info + * @param pdpSubgroup The Pdp Subgroup info */ public MicroServicePolicy(String name, PolicyModel policyModel, Boolean shared, JsonObject jsonRepresentation, LoopElementModel loopElementModel, String pdpGroup, @@ -143,6 +123,25 @@ public class MicroServicePolicy extends Policy implements Serializable { this.setPdpSubgroup(pdpSubgroup); } + /** + * Constructor with tosca converter. + * + * @param loop The loop instance + * @param service The service model object + * @param loopElementModel The loop element model from which this microservice instance is created + * @param toscaConverter The tosca converter that will used to convert the tosca policy model + */ + public MicroServicePolicy(Loop loop, Service service, LoopElementModel loopElementModel, + ToscaConverterWithDictionarySupport toscaConverter) { + this(Policy.generatePolicyName("MICROSERVICE", service.getName(), service.getVersion(), + RandomStringUtils.randomAlphanumeric(3), RandomStringUtils.randomAlphanumeric(3)), + loopElementModel.getPolicyModels().first(), false, + toscaConverter.convertToscaToJsonSchemaObject( + loopElementModel.getPolicyModels().first().getPolicyModelTosca(), + loopElementModel.getPolicyModels().first().getPolicyModelType()), + loopElementModel, null, null); + } + @Override public String getName() { return name; diff --git a/src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java b/src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java index 9cf516330..355a889e0 100644 --- a/src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java +++ b/src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java @@ -48,11 +48,13 @@ import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; import javax.persistence.Transient; +import org.apache.commons.lang3.RandomStringUtils; import org.hibernate.annotations.TypeDef; import org.hibernate.annotations.TypeDefs; -import org.onap.clamp.clds.tosca.update.UnknownComponentException; +import org.onap.clamp.clds.tosca.update.ToscaConverterWithDictionarySupport; import org.onap.clamp.dao.model.jsontype.StringJsonUserType; import org.onap.clamp.loop.Loop; +import org.onap.clamp.loop.service.Service; import org.onap.clamp.loop.template.LoopElementModel; import org.onap.clamp.loop.template.PolicyModel; import org.onap.clamp.policy.Policy; @@ -80,54 +82,101 @@ public class OperationalPolicy extends Policy implements Serializable { @JoinColumn(name = "loop_id", nullable = false) private Loop loop; + /** + * Constructor for serialization. + */ public OperationalPolicy() { - // Serialization } /** * The constructor. * * @param name The name of the operational policy - * @param loop The loop that uses this operational policy * @param configurationsJson The operational policy property in the format of * json + * @param jsonRepresentation The jsonObject defining the json schema * @param policyModel The policy model associated if any, can be null * @param loopElementModel The loop element from which this instance is supposed to be created * @param pdpGroup The Pdp Group info * @param pdpSubgroup The Pdp Subgroup info */ - public OperationalPolicy(String name, Loop loop, JsonObject configurationsJson, PolicyModel policyModel, + public OperationalPolicy(String name, JsonObject configurationsJson, + JsonObject jsonRepresentation, PolicyModel policyModel, LoopElementModel loopElementModel, String pdpGroup, String pdpSubgroup) { this.name = name; - this.loop = loop; this.setPolicyModel(policyModel); this.setConfigurationsJson(configurationsJson); this.setPdpGroup(pdpGroup); this.setPdpSubgroup(pdpSubgroup); this.setLoopElementModel(loopElementModel); - this.setJsonRepresentation(this.generateJsonRepresentation(policyModel)); + this.setJsonRepresentation(jsonRepresentation); + + } + /** + * Create an operational policy from a loop element model. + * + * @param loop The parent loop + * @param service The loop service + * @param loopElementModel The loop element model + * @param toscaConverter The tosca converter that must be used to create the Json representation + * @throws IOException In case of issues with the legacy files (generated from resource files + */ + public OperationalPolicy(Loop loop, Service service, LoopElementModel loopElementModel, + ToscaConverterWithDictionarySupport toscaConverter) throws IOException { + this(Policy.generatePolicyName("OPERATIONAL", service.getName(), service.getVersion(), + RandomStringUtils.randomAlphanumeric(3), RandomStringUtils.randomAlphanumeric(3)), new JsonObject(), + new JsonObject(), loopElementModel.getPolicyModels().first(), loopElementModel, null, null); + this.setLoop(loop); + this.setJsonRepresentation(generateJsonRepresentation(this, toscaConverter)); + } + + /** + * Create an operational policy from a policy model. + * + * @param loop The parent loop + * @param service The loop service + * @param policyModel The policy model + * @param toscaConverter The tosca converter that must be used to create the Json representation + * @throws IOException In case of issues with the legacy files (generated from resource files + */ + public OperationalPolicy(Loop loop, Service service, PolicyModel policyModel, + ToscaConverterWithDictionarySupport toscaConverter) throws IOException { + this(Policy.generatePolicyName("OPERATIONAL", service.getName(), service.getVersion(), + RandomStringUtils.randomAlphanumeric(3), RandomStringUtils.randomAlphanumeric(3)), new JsonObject(), + new JsonObject(), policyModel, null, null, null); + this.setLoop(loop); + this.setJsonRepresentation(generateJsonRepresentation(this, toscaConverter)); } - private JsonObject generateJsonRepresentation(PolicyModel policyModel) { + /** + * This method can generate a Json representation (json schema) for an operational policy. + * This is mainly to support a legacy case and a generic case. + * + * @param operationalPolicy The operational policy + * @param toscaConverter The tosca converter + * @return The Json Object with Json schema + */ + public static JsonObject generateJsonRepresentation(OperationalPolicy operationalPolicy, + ToscaConverterWithDictionarySupport toscaConverter) + throws IOException { JsonObject jsonReturned = new JsonObject(); - if (policyModel == null) { + if (operationalPolicy.getPolicyModel() == null) { return new JsonObject(); } - try { - if (isLegacy()) { - // Op policy Legacy case - LegacyOperationalPolicy.preloadConfiguration(jsonReturned, loop); - jsonReturned = - OperationalPolicyRepresentationBuilder.generateOperationalPolicySchema(loop.getModelService()); - } else { - // Generic Case - jsonReturned = Policy.generateJsonRepresentationFromToscaModel(policyModel.getPolicyModelTosca(), - policyModel.getPolicyModelType()); - } - } catch (UnknownComponentException | IOException | NullPointerException e) { - logger.error("Unable to generate the operational policy Schema ... ", e); + if (operationalPolicy.isLegacy()) { + // Op policy Legacy case + LegacyOperationalPolicy.preloadConfiguration(jsonReturned, operationalPolicy.loop); + jsonReturned = OperationalPolicyRepresentationBuilder + .generateOperationalPolicySchema(operationalPolicy.loop.getModelService()); + } + else { + // Generic Case + jsonReturned = toscaConverter.convertToscaToJsonSchemaObject( + operationalPolicy.getPolicyModel().getPolicyModelTosca(), + operationalPolicy.getPolicyModel().getPolicyModelType()); } + return jsonReturned; } @@ -178,7 +227,8 @@ public class OperationalPolicy extends Policy implements Serializable { if (other.name != null) { return false; } - } else if (!name.equals(other.name)) { + } + else if (!name.equals(other.name)) { return false; } return true; @@ -243,7 +293,8 @@ public class OperationalPolicy extends Policy implements Serializable { String opPayload = new GsonBuilder().setPrettyPrinting().create().toJson(payload); logger.info("Operational policy payload: " + opPayload); return opPayload; - } else { + } + else { return super.createPolicyPayload(); } } @@ -261,7 +312,7 @@ public class OperationalPolicy extends Policy implements Serializable { if (guardsList != null) { for (JsonElement guardElem : guardsList.getAsJsonArray()) { result.put(guardElem.getAsJsonObject().get("policy-id").getAsString(), - new GsonBuilder().create().toJson(guardElem)); + new GsonBuilder().create().toJson(guardElem)); } } } diff --git a/src/main/java/org/onap/clamp/policy/operational/OperationalPolicyRepresentationBuilder.java b/src/main/java/org/onap/clamp/policy/operational/OperationalPolicyRepresentationBuilder.java index 244f4c27a..0298cfde7 100644 --- a/src/main/java/org/onap/clamp/policy/operational/OperationalPolicyRepresentationBuilder.java +++ b/src/main/java/org/onap/clamp/policy/operational/OperationalPolicyRepresentationBuilder.java @@ -28,10 +28,8 @@ import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonSyntaxException; - import java.io.IOException; import java.util.Map.Entry; - import org.onap.clamp.clds.util.JsonUtils; import org.onap.clamp.clds.util.ResourceFileUtil; import org.onap.clamp.loop.service.Service; @@ -79,7 +77,7 @@ public class OperationalPolicyRepresentationBuilder { } private static JsonObject createSchemaProperty(String title, String type, String defaultValue, String readOnlyFlag, - String[] enumArray) { + String[] enumArray) { JsonObject property = new JsonObject(); property.addProperty("title", title); property.addProperty("type", type); @@ -128,8 +126,9 @@ public class OperationalPolicyRepresentationBuilder { modelVfModules.get(entry.getKey()).getAsJsonObject().get("vfModuleModelName").getAsString(), "True", null)); properties.add("modelInvariantId", - createSchemaProperty("Model Invariant Id (ModelInvariantUUID)", "string", modelVfModules - .get(entry.getKey()).getAsJsonObject().get("vfModuleModelInvariantUUID").getAsString(), + createSchemaProperty("Model Invariant Id (ModelInvariantUUID)", "string", + modelVfModules.get(entry.getKey()).getAsJsonObject().get("vfModuleModelInvariantUUID") + .getAsString(), "True", null)); properties.add("modelVersionId", createSchemaProperty("Model Version Id (ModelUUID)", "string", @@ -144,8 +143,9 @@ public class OperationalPolicyRepresentationBuilder { "True", null)); properties .add("modelCustomizationId", - createSchemaProperty("Customization ID", "string", modelVfModules.get(entry.getKey()) - .getAsJsonObject().get("vfModuleModelCustomizationUUID").getAsString(), "True", + createSchemaProperty("Customization ID", "string", + modelVfModules.get(entry.getKey()).getAsJsonObject() + .get("vfModuleModelCustomizationUUID").getAsString(), "True", null)); vfModuleOneOfSchema.add("properties", properties); @@ -180,7 +180,7 @@ public class OperationalPolicyRepresentationBuilder { JsonObject obj = new JsonObject(); obj.addProperty("title", workflowsEntry.getKey()); obj.add("properties", createPayloadProperty(workflowsEntry.getValue().getAsJsonObject(), - controllerProperties)); + controllerProperties)); schemaArray.add(obj); } @@ -207,7 +207,8 @@ public class OperationalPolicyRepresentationBuilder { StringBuilder builder = new StringBuilder("'").append("artifact_name : ").append(artifactName).append("\n") .append("artifact_version : ").append(artifactVersion).append("\n") .append("mode : async").append("\n") - .append("data : ").append("'").append("\\").append("'").append(data).append("\\").append("'").append("'"); + .append("data : ").append("'").append("\\").append("'").append(data).append("\\").append("'") + .append("'"); return builder.toString(); } } diff --git a/src/main/resources/META-INF/resources/swagger.html b/src/main/resources/META-INF/resources/swagger.html index 29082abf1..0451f1e0d 100644 --- a/src/main/resources/META-INF/resources/swagger.html +++ b/src/main/resources/META-INF/resources/swagger.html @@ -444,236 +444,280 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
  • 2. Paths
  • 3. Definitions
  • @@ -692,7 +736,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b

    1.2. URI scheme

    -

    Host : localhost:46347
    +

    Host : localhost:41607
    BasePath : /restservices/clds/
    Schemes : HTTP

    @@ -703,7 +747,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b

    2. Paths

    -

    2.1. GET /v1/healthcheck

    +

    2.1. GET /v1/healthcheck

    2.1.1. Responses

    @@ -740,7 +784,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    @@ -774,7 +818,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    @@ -794,7 +838,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b - +

    200

    Output type

    Dictionary

    ClampInformation

    @@ -811,9 +855,46 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.4. PUT /v2/dictionary

    +

    2.4. GET /v2/dictionary

    +
    +

    2.4.1. Responses

    + +++++ + + + + + + + + + + + + + + +
    HTTP CodeDescriptionSchema

    200

    Output type

    Dictionary

    +
    +
    +

    2.4.2. Produces

    +
    +
      +
    • +

      application/json

      +
    • +
    +
    +
    +
    +
    +

    2.5. PUT /v2/dictionary

    -

    2.4.1. Parameters

    +

    2.5.1. Parameters

    @@ -838,7 +919,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.4.2. Responses

    +

    2.5.2. Responses

    @@ -862,7 +943,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.4.3. Consumes

    +

    2.5.3. Consumes

    • @@ -872,7 +953,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.4.4. Produces

    +

    2.5.4. Produces

    • @@ -883,9 +964,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.5. GET /v2/dictionary/secondary/names

    +

    2.6. GET /v2/dictionary/secondary/names

    -

    2.5.1. Responses

    +

    2.6.1. Responses

    @@ -909,7 +990,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.5.2. Produces

    +

    2.6.2. Produces

    • @@ -920,9 +1001,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.6. GET /v2/dictionary/{dictionaryName}

    +

    2.7. GET /v2/dictionary/{dictionaryName}

    -

    2.6.1. Parameters

    +

    2.7.1. Parameters

    @@ -947,7 +1028,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.6.2. Responses

    +

    2.7.2. Responses

    @@ -971,7 +1052,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.6.3. Produces

    +

    2.7.3. Produces

    • @@ -982,9 +1063,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.7. PUT /v2/dictionary/{name}

    +

    2.8. PUT /v2/dictionary/{name}

    -

    2.7.1. Parameters

    +

    2.8.1. Parameters

    @@ -1015,7 +1096,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.7.2. Responses

    +

    2.8.2. Responses

    @@ -1039,7 +1120,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.7.3. Consumes

    +

    2.8.3. Consumes

    • @@ -1049,7 +1130,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.7.4. Produces

    +

    2.8.4. Produces

    • @@ -1060,9 +1141,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.8. DELETE /v2/dictionary/{name}

    +

    2.9. DELETE /v2/dictionary/{name}

    -

    2.8.1. Parameters

    +

    2.9.1. Parameters

    @@ -1087,7 +1168,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.8.2. Responses

    +

    2.9.2. Responses

    @@ -1108,7 +1189,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.8.3. Produces

    +

    2.9.3. Produces

    • @@ -1119,9 +1200,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.9. DELETE /v2/dictionary/{name}/elements/{shortName}

    +

    2.10. DELETE /v2/dictionary/{name}/elements/{shortName}

    -

    2.9.1. Parameters

    +

    2.10.1. Parameters

    @@ -1152,7 +1233,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.9.2. Responses

    +

    2.10.2. Responses

    @@ -1173,7 +1254,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.9.3. Produces

    +

    2.10.3. Produces

    • @@ -1184,9 +1265,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.10. PUT /v2/loop/delete/{loopName}

    +

    2.11. PUT /v2/loop/addOperationaPolicy/{loopName}/policyModel/{policyType}/{policyVersion}

    -

    2.10.1. Parameters

    +

    2.11.1. Parameters

    @@ -1207,11 +1288,157 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b required

    + + + + + + + + + +

    string

    Path

    policyType
    +required

    string

    Path

    policyVersion
    +required

    string

    -

    2.10.2. Responses

    +

    2.11.2. Responses

    + +++++ + + + + + + + + + + + + + + +
    HTTP CodeDescriptionSchema

    200

    Output type

    Loop

    +
    +
    +

    2.11.3. Produces

    +
    +
      +
    • +

      application/json

      +
    • +
    +
    +
    +
    +
    +

    2.12. POST /v2/loop/create/{loopName}?templateName={templateName}

    +
    +

    2.12.1. Parameters

    + +++++ + + + + + + + + + + + + + + +
    TypeNameSchema

    Path

    loopName}?templateName={templateName
    +required

    string

    +
    +
    +

    2.12.2. Responses

    + +++++ + + + + + + + + + + + + + + +
    HTTP CodeDescriptionSchema

    200

    Output type

    Loop

    +
    +
    +

    2.12.3. Consumes

    +
    +
      +
    • +

      application/json

      +
    • +
    +
    +
    +
    +

    2.12.4. Produces

    +
    +
      +
    • +

      application/json

      +
    • +
    +
    +
    +
    +
    +

    2.13. PUT /v2/loop/delete/{loopName}

    +
    +

    2.13.1. Parameters

    + +++++ + + + + + + + + + + + + + + +
    TypeNameSchema

    Path

    loopName
    +required

    string

    +
    +
    +

    2.13.2. Responses

    @@ -1233,9 +1460,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    @@ -1260,7 +1487,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.11.2. Responses

    +

    2.14.2. Responses

    @@ -1284,7 +1511,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.11.3. Produces

    +

    2.14.3. Produces

    • @@ -1295,9 +1522,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.12. GET /v2/loop/getAllNames

    +

    2.15. GET /v2/loop/getAllNames

    -

    2.12.1. Responses

    +

    2.15.1. Responses

    @@ -1321,7 +1548,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.12.2. Produces

    +

    2.15.2. Produces

    • @@ -1332,9 +1559,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.13. GET /v2/loop/getstatus/{loopName}

    +

    2.16. GET /v2/loop/getstatus/{loopName}

    -

    2.13.1. Parameters

    +

    2.16.1. Parameters

    @@ -1359,7 +1586,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.13.2. Responses

    +

    2.16.2. Responses

    @@ -1383,7 +1610,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.13.3. Produces

    +

    2.16.3. Produces

    • @@ -1394,9 +1621,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.14. PUT /v2/loop/refreshOpPolicyJsonSchema/{loopName}

    +

    2.17. PUT /v2/loop/refreshOpPolicyJsonSchema/{loopName}

    -

    2.14.1. Parameters

    +

    2.17.1. Parameters

    @@ -1421,7 +1648,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.14.2. Responses

    +

    2.17.2. Responses

    @@ -1445,7 +1672,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.14.3. Produces

    +

    2.17.3. Produces

    • @@ -1456,9 +1683,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.15. PUT /v2/loop/restart/{loopName}

    +

    2.18. PUT /v2/loop/removeOperationaPolicy/{loopName}/policyModel/{policyType}/{policyVersion}

    -

    2.15.1. Parameters

    +

    2.18.1. Parameters

    @@ -1479,11 +1706,23 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b required

    + + + + + + + + + +

    string

    Path

    policyType
    +required

    string

    Path

    policyVersion
    +required

    string

    -

    2.15.2. Responses

    +

    2.18.2. Responses

    @@ -1507,7 +1746,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.15.3. Produces

    +

    2.18.3. Produces

    • @@ -1518,9 +1757,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.16. PUT /v2/loop/stop/{loopName}

    +

    2.19. PUT /v2/loop/restart/{loopName}

    -

    2.16.1. Parameters

    +

    2.19.1. Parameters

    @@ -1545,7 +1784,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.16.2. Responses

    +

    2.19.2. Responses

    @@ -1569,7 +1808,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.16.3. Produces

    +

    2.19.3. Produces

    • @@ -1580,9 +1819,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.17. PUT /v2/loop/submit/{loopName}

    +

    2.20. PUT /v2/loop/stop/{loopName}

    -

    2.17.1. Parameters

    +

    2.20.1. Parameters

    @@ -1607,7 +1846,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.17.2. Responses

    +

    2.20.2. Responses

    @@ -1631,7 +1870,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.17.3. Produces

    +

    2.20.3. Produces

    • @@ -1642,9 +1881,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.18. GET /v2/loop/svgRepresentation/{loopName}

    +

    2.21. PUT /v2/loop/submit/{loopName}

    -

    2.18.1. Parameters

    +

    2.21.1. Parameters

    @@ -1669,7 +1908,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.18.2. Responses

    +

    2.21.2. Responses

    @@ -1687,13 +1926,75 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b + + + +

    200

    Output type

    Loop

    +
    +
    +

    2.21.3. Produces

    +
    +
      +
    • +

      application/json

      +
    • +
    +
    +
    +
    +
    +

    2.22. GET /v2/loop/svgRepresentation/{loopName}

    +
    +

    2.22.1. Parameters

    + +++++ + + + + + + + + + + +
    TypeNameSchema

    Path

    loopName
    +required

    string

    -

    2.18.3. Produces

    +

    2.22.2. Responses

    + +++++ + + + + + + + + + + + + + + +
    HTTP CodeDescriptionSchema

    200

    Output type

    string

    +
    +
    +

    2.22.3. Produces

    • @@ -1704,9 +2005,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.19. PUT /v2/loop/undeploy/{loopName}

    +

    2.23. PUT /v2/loop/undeploy/{loopName}

    -

    2.19.1. Parameters

    +

    2.23.1. Parameters

    @@ -1731,7 +2032,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.19.2. Responses

    +

    2.23.2. Responses

    @@ -1755,7 +2056,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.19.3. Produces

    +

    2.23.3. Produces

    • @@ -1766,9 +2067,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.20. POST /v2/loop/updateGlobalProperties/{loopName}

    +

    2.24. POST /v2/loop/updateGlobalProperties/{loopName}

    -

    2.20.1. Parameters

    +

    2.24.1. Parameters

    @@ -1799,7 +2100,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.20.2. Responses

    +

    2.24.2. Responses

    @@ -1823,7 +2124,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.20.3. Consumes

    +

    2.24.3. Consumes

    • @@ -1833,7 +2134,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.20.4. Produces

    +

    2.24.4. Produces

    • @@ -1844,9 +2145,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.21. POST /v2/loop/updateMicroservicePolicy/{loopName}

    +

    2.25. POST /v2/loop/updateMicroservicePolicy/{loopName}

    -

    2.21.1. Parameters

    +

    2.25.1. Parameters

    @@ -1877,7 +2178,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.21.2. Responses

    +

    2.25.2. Responses

    @@ -1901,7 +2202,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.21.3. Consumes

    +

    2.25.3. Consumes

    • @@ -1911,7 +2212,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.21.4. Produces

    +

    2.25.4. Produces

    • @@ -1922,9 +2223,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.22. POST /v2/loop/updateOperationalPolicies/{loopName}

    +

    2.26. POST /v2/loop/updateOperationalPolicies/{loopName}

    -

    2.22.1. Parameters

    +

    2.26.1. Parameters

    @@ -1955,7 +2256,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.22.2. Responses

    +

    2.26.2. Responses

    @@ -1979,7 +2280,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.22.3. Consumes

    +

    2.26.3. Consumes

    • @@ -1989,7 +2290,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.22.4. Produces

    +

    2.26.4. Produces

    • @@ -2000,9 +2301,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.23. GET /v2/loop/{loopName}

    +

    2.27. GET /v2/loop/{loopName}

    -

    2.23.1. Parameters

    +

    2.27.1. Parameters

    @@ -2027,7 +2328,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.23.2. Responses

    +

    2.27.2. Responses

    @@ -2051,7 +2352,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.23.3. Produces

    +

    2.27.3. Produces

    • @@ -2062,9 +2363,34 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.24. GET /v2/policyToscaModels

    +

    2.28. POST /v2/policyToscaModels

    -

    2.24.1. Responses

    +

    2.28.1. Parameters

    + +++++ + + + + + + + + + + + + + + +
    TypeNameSchema

    Body

    body
    +required

    string

    +
    +
    +

    2.28.2. Responses

    @@ -2088,7 +2414,17 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.24.2. Produces

    +

    2.28.3. Consumes

    +
    +
      +
    • +

      plain/text

      +
    • +
    +
    +
    +
    +

    2.28.4. Produces

    • @@ -2099,9 +2435,46 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.25. GET /v2/policyToscaModels/yaml/{policyModelType}

    +

    2.29. GET /v2/policyToscaModels

    -

    2.25.1. Parameters

    +

    2.29.1. Responses

    + +++++ + + + + + + + + + + + + + + +
    HTTP CodeDescriptionSchema

    200

    Output type

    PolicyModel

    +
    +
    +

    2.29.2. Produces

    +
    +
      +
    • +

      application/json

      +
    • +
    +
    +
    +
    +
    +

    2.30. GET /v2/policyToscaModels/yaml/{policyModelType}/{policyModelVersion}

    +
    +

    2.30.1. Parameters

    @@ -2122,11 +2495,17 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b required

    + + + + +

    string

    Path

    policyModelVersion
    +required

    string

    -

    2.25.2. Responses

    +

    2.30.2. Responses

    @@ -2150,7 +2529,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.25.3. Produces

    +

    2.30.3. Produces

    • @@ -2161,9 +2540,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.26. GET /v2/policyToscaModels/{policyModelType}

    +

    2.31. GET /v2/policyToscaModels/{policyModelType}/{policyModelVersion}

    -

    2.26.1. Parameters

    +

    2.31.1. Parameters

    @@ -2184,11 +2563,17 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b required

    + + + + +

    string

    Path

    policyModelVersion
    +required

    string

    -

    2.26.2. Responses

    +

    2.31.2. Responses

    @@ -2212,7 +2597,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.26.3. Produces

    +

    2.31.3. Produces

    • @@ -2223,9 +2608,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.27. PUT /v2/policyToscaModels/{policyModelType}

    +

    2.32. PUT /v2/policyToscaModels/{policyModelType}/{policyModelVersion}

    -

    2.27.1. Parameters

    +

    2.32.1. Parameters

    @@ -2247,6 +2632,12 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b + + + + + @@ -2256,7 +2647,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b

    string

    Path

    policyModelVersion
    +required

    string

    Body

    body
    required

    -

    2.27.2. Responses

    +

    2.32.2. Responses

    @@ -2280,7 +2671,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.27.3. Consumes

    +

    2.32.3. Consumes

    • @@ -2290,7 +2681,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.27.4. Produces

    +

    2.32.4. Produces

    • @@ -2301,9 +2692,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.28. GET /v2/templates

    +

    2.33. GET /v2/templates

    -

    2.28.1. Responses

    +

    2.33.1. Responses

    @@ -2327,7 +2718,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.28.2. Produces

    +

    2.33.2. Produces

    • @@ -2338,9 +2729,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.29. GET /v2/templates/names

    +

    2.34. GET /v2/templates/names

    -

    2.29.1. Responses

    +

    2.34.1. Responses

    @@ -2364,7 +2755,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.29.2. Produces

    +

    2.34.2. Produces

    • @@ -2375,9 +2766,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.30. GET /v2/templates/{templateName}

    +

    2.35. GET /v2/templates/{templateName}

    -

    2.30.1. Parameters

    +

    2.35.1. Parameters

    @@ -2402,7 +2793,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.30.2. Responses

    +

    2.35.2. Responses

    @@ -2426,7 +2817,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    2.30.3. Produces

    +

    2.35.3. Produces

    • @@ -2436,13 +2827,107 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    +
    +

    2.36. GET /v2/templates/{templateName}/svgRepresentation

    +
    +

    2.36.1. Parameters

    + +++++ + + + + + + + + + + + + + + +
    TypeNameSchema

    Path

    templateName
    +required

    string

    +
    +
    +

    2.36.2. Responses

    + +++++ + + + + + + + + + + + + + + +
    HTTP CodeDescriptionSchema

    200

    Output type

    string

    +
    +
    +

    2.36.3. Produces

    +
    +
      +
    • +

      application/xml

      +
    • +
    +
    +
    +

    3. Definitions

    -

    3.1. CldsHealthCheck

    +

    3.1. ClampInformation

    + ++++ + + + + + + + + + + + + + + + + + + + + +
    NameSchema

    allPermissions
    +optional

    < string > array

    cldsVersion
    +optional

    string

    userName
    +optional

    string

    +
    +
    +

    3.2. CldsHealthCheck

    @@ -2474,7 +2959,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    3.2. Dictionary

    +

    3.3. Dictionary

    @@ -2531,7 +3016,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    3.3. DictionaryElement

    +

    3.4. DictionaryElement

    @@ -2598,7 +3083,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    3.4. ExternalComponent

    +

    3.5. ExternalComponent

    @@ -2625,7 +3110,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    3.5. ExternalComponentState

    +

    3.6. ExternalComponentState

    @@ -2657,7 +3142,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    3.6. JsonArray

    +

    3.7. JsonArray

    @@ -2774,7 +3259,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    3.7. JsonNull

    +

    3.8. JsonNull

    @@ -2891,7 +3376,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    3.8. JsonObject

    +

    3.9. JsonObject

    @@ -3008,7 +3493,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    3.9. JsonPrimitive

    +

    3.10. JsonPrimitive

    @@ -3140,7 +3625,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    3.10. Loop

    +

    3.11. Loop

    @@ -3237,7 +3722,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    3.11. LoopElementModel

    +

    3.12. LoopElementModel

    @@ -3309,7 +3794,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    3.12. LoopLog

    +

    3.13. LoopLog

    @@ -3356,7 +3841,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    3.13. LoopTemplate

    +

    3.14. LoopTemplate

    @@ -3438,7 +3923,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    3.14. LoopTemplateLoopElementModel

    +

    3.15. LoopTemplateLoopElementModel

    @@ -3470,7 +3955,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    3.15. MicroServicePolicy

    +

    3.16. MicroServicePolicy

    @@ -3577,13 +4062,13 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    3.16. Number

    +

    3.17. Number

    Type : object

    -

    3.17. OperationalPolicy

    +

    3.18. OperationalPolicy

    @@ -3665,7 +4150,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    3.18. PolicyModel

    +

    3.19. PolicyModel

    @@ -3732,7 +4217,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
    -

    3.19. Service

    +

    3.20. Service

    diff --git a/src/main/resources/application-noaaf.properties b/src/main/resources/application-noaaf.properties index 3ce033f64..dbccb32de 100644 --- a/src/main/resources/application-noaaf.properties +++ b/src/main/resources/application-noaaf.properties @@ -176,7 +176,9 @@ clamp.config.security.permission.instance=dev clamp.config.security.authentication.class=org.onap.aaf.cadi.principal.X509Principal ## Tosca converter -clamp.config.tosca.converter.templates=classpath:/clds/tosca_updates/templates.json +clamp.config.tosca.converter.json.schema.templates=classpath:/clds/tosca-converter/templates.json +clamp.config.tosca.converter.default.datatypes=classpath:/clds/tosca-converter/default-tosca-types.yaml +clamp.config.tosca.converter.dictionary.support.enabled=true # Configuration settings for CDS clamp.config.cds.url=http4://blueprints-processor-http:8080 diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index a249d2d00..90c4186ef 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -189,7 +189,9 @@ clamp.config.cadi.aafUrl=https://AAF_LOCATE_URL/onap.org.osaaf.aaf.service:2.1 clamp.config.cadi.cadiX509Issuers=CN=intermediateCA_1, OU=OSAAF, O=ONAP, C=US:CN=intermediateCA_7, OU=OSAAF, O=ONAP, C=US:CN=intermediateCA_9, OU=OSAAF, O=ONAP, C=US ## Tosca converter -clamp.config.tosca.converter.templates=classpath:/clds/tosca_updates/templates.json +clamp.config.tosca.converter.json.schema.templates=classpath:/clds/tosca-converter/templates.json +clamp.config.tosca.converter.default.datatypes=classpath:/clds/tosca-converter/default-tosca-types.yaml +clamp.config.tosca.converter.dictionary.support.enabled=true # Configuration settings for CDS clamp.config.cds.url=http4://blueprints-processor-http:8080 diff --git a/src/main/resources/clds/tosca-converter/default-tosca-types.yaml b/src/main/resources/clds/tosca-converter/default-tosca-types.yaml new file mode 100644 index 000000000..a11a73698 --- /dev/null +++ b/src/main/resources/clds/tosca-converter/default-tosca-types.yaml @@ -0,0 +1,87 @@ +tosca_definitions_version: tosca_simple_yaml_1_1_0 +data_types: + tosca.datatypes.Root: + description: The TOSCA root Data Type all other TOSCA base Data Types derive from + tosca.datatypes.Credential: + derived_from: tosca.datatypes.Root + properties: + protocol: + type: string + required: false + token_type: + type: string + default: password + token: + type: string + keys: + type: map + required: false + entry_schema: + type: string + user: + type: string + required: false + tosca.datatypes.TimeInterval: + derived_from: tosca.datatypes.Root + properties: + start_time: + type: timestamp + required: true + end_time: + type: timestamp + required: true + tosca.datatypes.network.NetworkInfo: + derived_from: tosca.datatypes.Root + properties: + network_name: + type: string + network_id: + type: string + addresses: + type: list + entry_schema: + type: string + tosca.datatypes.network.PortInfo: + derived_from: tosca.datatypes.Root + properties: + port_name: + type: string + port_id: + type: string + network_id: + type: string + mac_address: + type: string + addresses: + type: list + entry_schema: + type: string + # tosca.datatypes.network.PortDef: + # derived_from: integer + # constraints: + # - in_range: [ 1, 65535 ] + # tosca.datatypes.network.PortSpec: + # derived_from: tosca.datatypes.Root + # properties: + # protocol: + # type: string + # required: true + # default: tcp + # constraints: + # - valid_values: [ udp, tcp, igmp ] + # target: + # type: PortDef + # required: false + # target_range: + # type: range + # required: false + # constraints: + # - in_range: [ 1, 65535 ] + # source: + # type: PortDef + # required: false + # source_range: + # type: range + # required: false + # constraints: + # - in_range: [ 1, 65535 ] \ No newline at end of file diff --git a/src/main/resources/clds/tosca-converter/templates.json b/src/main/resources/clds/tosca-converter/templates.json new file mode 100644 index 000000000..f709e2f6d --- /dev/null +++ b/src/main/resources/clds/tosca-converter/templates.json @@ -0,0 +1,398 @@ +{ + "integer":{ + "type":{ + "defaultValue":"integer", + "visible":true, + "static":false + }, + "description":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "title":{ + "defaultValue":"", + "visible":true, + "static":false + + }, + "deprecated":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "default":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "enum":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "const":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "multipleOf":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "maximum":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "exclusiveMaximum":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "minimum":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "exclusiveMinimum":{ + "defaultValue":"", + "visible":true, + "static":false + } + }, + "number":{ + "type":{ + "defaultValue":"number", + "visible":true, + "static":false + }, + "description":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "title":{ + "defaultValue":"", + "visible":true, + "static":false + + }, + "deprecated":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "default":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "enum":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "const":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "multipleOf":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "maximum":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "exclusiveMaximum":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "minimum":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "exclusiveMinimum":{ + "defaultValue":"", + "visible":true, + "static":false + } + }, + "boolean":{ + "type":{ + "defaultValue":"boolean", + "visible":true, + "static":false + }, + "description":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "title":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "deprecated":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "default":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "const":{ + "defaultValue":"", + "visible":true, + "static":false + } + }, + "string":{ + "type":{ + "defaultValue":"string", + "visible":true, + "static":false + }, + "description":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "title":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "deprecated":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "default":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "enum":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "const":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "length":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "minLength":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "maxLength":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "pattern":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "format":{ + "defaultValue":"", + "visible":true, + "static":false + } + }, + "timestamp":{ + "type":{ + "defaultValue":"string", + "visible":true, + "static":false + }, + "description":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "title":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "deprecated":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "default":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "enum":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "const":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "length":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "minLength":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "maxLength":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "pattern":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "format":{ + "defaultValue":"", + "visible":true, + "static":false + } + }, + "array":{ + "type":{ + "defaultValue":"array", + "visible":true, + "static":false + }, + "description":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "title":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "deprecated":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "default":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "const":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "uniqueItems":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "properties":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "minContains":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "maxContains":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "minItems":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "maxItems":{ + "defaultValue":"", + "visible":true, + "static":false + } + }, + "object":{ + "type":{ + "defaultValue":"object", + "visible":true, + "static":false + }, + "description":{ + "defaultValue":"", + "visible":true, + "static":true + }, + "title":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "format":{ + "defaultValue":"tabs", + "visible":true, + "static":true + }, + "required":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "minProperties":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "maxProperties":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "properties":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "dependentRequired":{ + "defaultValue":"", + "visible":true, + "static":false + }, + "dependencies":{ + "defaultValue":"", + "visible":true, + "static":false + } + } +} \ No newline at end of file diff --git a/src/main/resources/clds/tosca_update/default-tosca-types.yaml b/src/main/resources/clds/tosca_update/default-tosca-types.yaml deleted file mode 100644 index a11a73698..000000000 --- a/src/main/resources/clds/tosca_update/default-tosca-types.yaml +++ /dev/null @@ -1,87 +0,0 @@ -tosca_definitions_version: tosca_simple_yaml_1_1_0 -data_types: - tosca.datatypes.Root: - description: The TOSCA root Data Type all other TOSCA base Data Types derive from - tosca.datatypes.Credential: - derived_from: tosca.datatypes.Root - properties: - protocol: - type: string - required: false - token_type: - type: string - default: password - token: - type: string - keys: - type: map - required: false - entry_schema: - type: string - user: - type: string - required: false - tosca.datatypes.TimeInterval: - derived_from: tosca.datatypes.Root - properties: - start_time: - type: timestamp - required: true - end_time: - type: timestamp - required: true - tosca.datatypes.network.NetworkInfo: - derived_from: tosca.datatypes.Root - properties: - network_name: - type: string - network_id: - type: string - addresses: - type: list - entry_schema: - type: string - tosca.datatypes.network.PortInfo: - derived_from: tosca.datatypes.Root - properties: - port_name: - type: string - port_id: - type: string - network_id: - type: string - mac_address: - type: string - addresses: - type: list - entry_schema: - type: string - # tosca.datatypes.network.PortDef: - # derived_from: integer - # constraints: - # - in_range: [ 1, 65535 ] - # tosca.datatypes.network.PortSpec: - # derived_from: tosca.datatypes.Root - # properties: - # protocol: - # type: string - # required: true - # default: tcp - # constraints: - # - valid_values: [ udp, tcp, igmp ] - # target: - # type: PortDef - # required: false - # target_range: - # type: range - # required: false - # constraints: - # - in_range: [ 1, 65535 ] - # source: - # type: PortDef - # required: false - # source_range: - # type: range - # required: false - # constraints: - # - in_range: [ 1, 65535 ] \ No newline at end of file diff --git a/src/main/resources/clds/tosca_update/templates.json b/src/main/resources/clds/tosca_update/templates.json deleted file mode 100644 index f709e2f6d..000000000 --- a/src/main/resources/clds/tosca_update/templates.json +++ /dev/null @@ -1,398 +0,0 @@ -{ - "integer":{ - "type":{ - "defaultValue":"integer", - "visible":true, - "static":false - }, - "description":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "title":{ - "defaultValue":"", - "visible":true, - "static":false - - }, - "deprecated":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "default":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "enum":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "const":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "multipleOf":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "maximum":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "exclusiveMaximum":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "minimum":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "exclusiveMinimum":{ - "defaultValue":"", - "visible":true, - "static":false - } - }, - "number":{ - "type":{ - "defaultValue":"number", - "visible":true, - "static":false - }, - "description":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "title":{ - "defaultValue":"", - "visible":true, - "static":false - - }, - "deprecated":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "default":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "enum":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "const":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "multipleOf":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "maximum":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "exclusiveMaximum":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "minimum":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "exclusiveMinimum":{ - "defaultValue":"", - "visible":true, - "static":false - } - }, - "boolean":{ - "type":{ - "defaultValue":"boolean", - "visible":true, - "static":false - }, - "description":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "title":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "deprecated":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "default":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "const":{ - "defaultValue":"", - "visible":true, - "static":false - } - }, - "string":{ - "type":{ - "defaultValue":"string", - "visible":true, - "static":false - }, - "description":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "title":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "deprecated":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "default":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "enum":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "const":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "length":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "minLength":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "maxLength":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "pattern":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "format":{ - "defaultValue":"", - "visible":true, - "static":false - } - }, - "timestamp":{ - "type":{ - "defaultValue":"string", - "visible":true, - "static":false - }, - "description":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "title":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "deprecated":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "default":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "enum":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "const":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "length":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "minLength":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "maxLength":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "pattern":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "format":{ - "defaultValue":"", - "visible":true, - "static":false - } - }, - "array":{ - "type":{ - "defaultValue":"array", - "visible":true, - "static":false - }, - "description":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "title":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "deprecated":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "default":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "const":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "uniqueItems":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "properties":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "minContains":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "maxContains":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "minItems":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "maxItems":{ - "defaultValue":"", - "visible":true, - "static":false - } - }, - "object":{ - "type":{ - "defaultValue":"object", - "visible":true, - "static":false - }, - "description":{ - "defaultValue":"", - "visible":true, - "static":true - }, - "title":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "format":{ - "defaultValue":"tabs", - "visible":true, - "static":true - }, - "required":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "minProperties":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "maxProperties":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "properties":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "dependentRequired":{ - "defaultValue":"", - "visible":true, - "static":false - }, - "dependencies":{ - "defaultValue":"", - "visible":true, - "static":false - } - } -} \ No newline at end of file diff --git a/src/test/java/org/onap/clamp/clds/config/CldsUserJsonDecoderTest.java b/src/test/java/org/onap/clamp/clds/config/CldsUserJsonDecoderTest.java index 5a1292210..7152ee11d 100644 --- a/src/test/java/org/onap/clamp/clds/config/CldsUserJsonDecoderTest.java +++ b/src/test/java/org/onap/clamp/clds/config/CldsUserJsonDecoderTest.java @@ -26,12 +26,12 @@ package org.onap.clamp.clds.config; +import static org.assertj.core.api.Assertions.assertThat; + import org.junit.Test; import org.onap.clamp.authorization.CldsUser; import org.onap.clamp.clds.exception.CldsUsersException; -import static org.assertj.core.api.Assertions.assertThat; - public class CldsUserJsonDecoderTest { private String user1 = "admin1"; diff --git a/src/test/java/org/onap/clamp/clds/it/config/CldsReferencePropertiesItCase.java b/src/test/java/org/onap/clamp/clds/it/config/CldsReferencePropertiesItCase.java index 4bf2de030..d985a5d72 100644 --- a/src/test/java/org/onap/clamp/clds/it/config/CldsReferencePropertiesItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/config/CldsReferencePropertiesItCase.java @@ -24,6 +24,7 @@ package org.onap.clamp.clds.it.config; import static org.junit.Assert.assertEquals; + import java.io.IOException; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/src/test/java/org/onap/clamp/clds/tosca/ToscaYamlToJsonConvertorTestItCase.java b/src/test/java/org/onap/clamp/clds/tosca/ToscaYamlToJsonConvertorTestItCase.java index db6fd5c03..a32d4995e 100644 --- a/src/test/java/org/onap/clamp/clds/tosca/ToscaYamlToJsonConvertorTestItCase.java +++ b/src/test/java/org/onap/clamp/clds/tosca/ToscaYamlToJsonConvertorTestItCase.java @@ -57,7 +57,7 @@ public class ToscaYamlToJsonConvertorTestItCase { * Schema. * * @throws IOException In case of issue when opening the tosca yaml file and - * converted json file + * converted json file */ @Test public final void testParseToscaYaml() throws IOException { @@ -65,11 +65,11 @@ public class ToscaYamlToJsonConvertorTestItCase { ToscaYamlToJsonConvertor convertor = new ToscaYamlToJsonConvertor(); String parsedJsonSchema = - convertor.parseToscaYaml(toscaModelYaml, "onap.policies.monitoring.cdap.tca.hi.lo.app"); + convertor.parseToscaYaml(toscaModelYaml, "onap.policies.monitoring.cdap.tca.hi.lo.app"); assertNotNull(parsedJsonSchema); JSONAssert.assertEquals( - ResourceFileUtil.getResourceAsString("tosca/policy-yaml-to-json.json"), - parsedJsonSchema, true); + ResourceFileUtil.getResourceAsString("tosca/policy-yaml-to-json.json"), + parsedJsonSchema, true); } /** @@ -77,20 +77,20 @@ public class ToscaYamlToJsonConvertorTestItCase { * based on JSON Editor Schema. * * @throws IOException In case of issue when opening the tosca yaml file and - * converted json file + * converted json file */ @Test public final void testParseToscaYamlWithConstraints() throws IOException { String toscaModelYaml = - ResourceFileUtil.getResourceAsString("tosca/tosca-with-constraints.yaml"); + ResourceFileUtil.getResourceAsString("tosca/tosca-with-constraints.yaml"); ToscaYamlToJsonConvertor convertor = new ToscaYamlToJsonConvertor(); String parsedJsonSchema = - convertor.parseToscaYaml(toscaModelYaml, "onap.policies.monitoring.example.app"); + convertor.parseToscaYaml(toscaModelYaml, "onap.policies.monitoring.example.app"); assertNotNull(parsedJsonSchema); JSONAssert.assertEquals( - ResourceFileUtil.getResourceAsString("tosca/policy-yaml-to-json-with-constraints.json"), - parsedJsonSchema, true); + ResourceFileUtil.getResourceAsString("tosca/policy-yaml-to-json-with-constraints.json"), + parsedJsonSchema, true); } /** @@ -98,20 +98,20 @@ public class ToscaYamlToJsonConvertorTestItCase { * conversion based on JSON Editor Schema. * * @throws IOException In case of issue when opening the tosca yaml file and - * converted json file + * converted json file */ @Test public final void testParseToscaYamlWithTypes() throws IOException { String toscaModelYaml = - ResourceFileUtil.getResourceAsString("tosca/tosca-with-datatypes.yaml"); + ResourceFileUtil.getResourceAsString("tosca/tosca-with-datatypes.yaml"); ToscaYamlToJsonConvertor convertor = new ToscaYamlToJsonConvertor(); String parsedJsonSchema = - convertor.parseToscaYaml(toscaModelYaml, "onap.policies.monitoring.example.app"); + convertor.parseToscaYaml(toscaModelYaml, "onap.policies.monitoring.example.app"); assertNotNull(parsedJsonSchema); JSONAssert.assertEquals( - ResourceFileUtil.getResourceAsString("tosca/policy-yaml-to-json-with-datatypes.json"), - parsedJsonSchema, true); + ResourceFileUtil.getResourceAsString("tosca/policy-yaml-to-json-with-datatypes.json"), + parsedJsonSchema, true); } /** @@ -119,7 +119,7 @@ public class ToscaYamlToJsonConvertorTestItCase { * parameters which defines the Tosca Policy name and its short name. * * @throws IOException In case of issue when opening the tosca yaml file and - * converted json file + * converted json file */ @Test @Transactional @@ -165,24 +165,24 @@ public class ToscaYamlToJsonConvertorTestItCase { dictionaryService.saveOrUpdateDictionary(dictionaryTest2); String toscaModelYaml = - ResourceFileUtil.getResourceAsString("tosca/tosca_metadata_clamp_possible_values.yaml"); + ResourceFileUtil.getResourceAsString("tosca/tosca_metadata_clamp_possible_values.yaml"); JsonObject jsonObject = toscaYamlToJsonConvertor.validateAndConvertToJson(toscaModelYaml); assertNotNull(jsonObject); String policyModelType = toscaYamlToJsonConvertor.getValueFromMetadata(jsonObject, - ToscaSchemaConstants.METADATA_POLICY_MODEL_TYPE); + ToscaSchemaConstants.METADATA_POLICY_MODEL_TYPE); String acronym = toscaYamlToJsonConvertor.getValueFromMetadata(jsonObject, - ToscaSchemaConstants.METADATA_ACRONYM); + ToscaSchemaConstants.METADATA_ACRONYM); String parsedJsonSchema = - toscaYamlToJsonConvertor.parseToscaYaml(toscaModelYaml, policyModelType); + toscaYamlToJsonConvertor.parseToscaYaml(toscaModelYaml, policyModelType); assertNotNull(parsedJsonSchema); assertEquals("onap.policies.monitoring.cdap.tca.hi.lo.app", policyModelType); assertEquals("tca", acronym); JSONAssert.assertEquals( - ResourceFileUtil - .getResourceAsString("tosca/tosca_metadata_clamp_possible_values_json_schema.json"), - parsedJsonSchema, true); + ResourceFileUtil + .getResourceAsString("tosca/tosca_metadata_clamp_possible_values_json_schema.json"), + parsedJsonSchema, true); } } diff --git a/src/test/java/org/onap/clamp/clds/tosca/update/ArrayFieldTest.java b/src/test/java/org/onap/clamp/clds/tosca/update/ArrayFieldTest.java index 83c374e9d..421bd6ab2 100644 --- a/src/test/java/org/onap/clamp/clds/tosca/update/ArrayFieldTest.java +++ b/src/test/java/org/onap/clamp/clds/tosca/update/ArrayFieldTest.java @@ -27,6 +27,10 @@ import com.google.gson.JsonArray; import java.io.IOException; import java.util.ArrayList; import junit.framework.TestCase; +import org.onap.clamp.clds.tosca.update.elements.ArrayField; +import org.onap.clamp.clds.tosca.update.elements.ToscaElement; +import org.onap.clamp.clds.tosca.update.elements.ToscaElementProperty; +import org.onap.clamp.clds.tosca.update.templates.JsonTemplateManager; import org.onap.clamp.clds.util.ResourceFileUtil; public class ArrayFieldTest extends TestCase { @@ -37,13 +41,13 @@ public class ArrayFieldTest extends TestCase { * @throws IOException in case of failure */ public void testDeploy() throws IOException { - ToscaConverterManager toscaConverterManager = new ToscaConverterManager(ResourceFileUtil.getResourceAsString( + JsonTemplateManager jsonTemplateManager = new JsonTemplateManager(ResourceFileUtil.getResourceAsString( "tosca/new-converter/sampleOperationalPoliciesEXTENTED.yaml"),ResourceFileUtil.getResourceAsString( - "clds/tosca_update/default-tosca-types.yaml"), - ResourceFileUtil.getResourceAsString("clds/tosca_update/templates.json")); - ToscaElement toscaElement = toscaConverterManager.getComponents().get("onap.datatype.controlloop.Actor"); - Property property = toscaElement.getProperties().get("actor"); - ArrayField arrayParser = new ArrayField((ArrayList) property.getItems().get("default")); + "clds/tosca-converter/default-tosca-types.yaml"), + ResourceFileUtil.getResourceAsString("clds/tosca-converter/templates.json")); + ToscaElement toscaElement = jsonTemplateManager.getToscaElements().get("onap.datatype.controlloop.Actor"); + ToscaElementProperty toscaElementProperty = toscaElement.getProperties().get("actor"); + ArrayField arrayParser = new ArrayField((ArrayList) toscaElementProperty.getItems().get("default")); JsonArray toTest = arrayParser.deploy(); String reference = "[1,\"String\",5.5,true]"; assertEquals(reference, String.valueOf(toTest)); diff --git a/src/test/java/org/onap/clamp/clds/tosca/update/ConstraintTest.java b/src/test/java/org/onap/clamp/clds/tosca/update/ConstraintTest.java index a73fd6736..5215cbd4d 100644 --- a/src/test/java/org/onap/clamp/clds/tosca/update/ConstraintTest.java +++ b/src/test/java/org/onap/clamp/clds/tosca/update/ConstraintTest.java @@ -27,16 +27,20 @@ import com.google.gson.JsonObject; import java.io.IOException; import java.util.ArrayList; import junit.framework.TestCase; +import org.onap.clamp.clds.tosca.update.elements.ToscaElement; +import org.onap.clamp.clds.tosca.update.elements.ToscaElementProperty; +import org.onap.clamp.clds.tosca.update.templates.JsonTemplate; +import org.onap.clamp.clds.tosca.update.templates.JsonTemplateManager; import org.onap.clamp.clds.util.ResourceFileUtil; public class ConstraintTest extends TestCase { - ToscaConverterManager toscaConverterManager = new ToscaConverterManager( + JsonTemplateManager jsonTemplateManager = new JsonTemplateManager( ResourceFileUtil.getResourceAsString("tosca/new-converter/constraints.yaml"), - ResourceFileUtil.getResourceAsString("clds/tosca_update/default-tosca-types.yaml"), - ResourceFileUtil.getResourceAsString("clds/tosca_update/templates.json")); + ResourceFileUtil.getResourceAsString("clds/tosca-converter/default-tosca-types.yaml"), + ResourceFileUtil.getResourceAsString("clds/tosca-converter/templates.json")); - ToscaElement toscaElement = toscaConverterManager.getComponents().get("onap.datatype.controlloop.Operation"); + ToscaElement toscaElement = jsonTemplateManager.getToscaElements().get("onap.datatype.controlloop.Operation"); public ConstraintTest() throws IOException { } @@ -45,18 +49,20 @@ public class ConstraintTest extends TestCase { * Test get value array. */ public void testGetValuesArray() { - Property property = toscaElement.getProperties().get("timeout"); - Template template = toscaConverterManager.getTemplates().get("integer"); + ToscaElementProperty toscaElementProperty = toscaElement.getProperties().get("timeout"); + JsonTemplate jsonTemplate = jsonTemplateManager.getJsonSchemaTemplates().get("integer"); JsonObject resultProcess = new JsonObject(); - property.addConstraintsAsJson(resultProcess, (ArrayList) property.getItems().get("constraints"), - template); + toscaElementProperty.addConstraintsAsJson(resultProcess, + (ArrayList) toscaElementProperty.getItems().get("constraints"), + jsonTemplate); String reference = "{\"enum\":[3,4,5.5,6,10]}"; assertEquals(reference, String.valueOf(resultProcess)); - property = toscaElement.getProperties().get("success"); - template = toscaConverterManager.getTemplates().get("string"); + toscaElementProperty = toscaElement.getProperties().get("success"); + jsonTemplate = jsonTemplateManager.getJsonSchemaTemplates().get("string"); resultProcess = new JsonObject(); - property.addConstraintsAsJson(resultProcess, (ArrayList) property.getItems().get("constraints"), - template); + toscaElementProperty.addConstraintsAsJson(resultProcess, + (ArrayList) toscaElementProperty.getItems().get("constraints"), + jsonTemplate); reference = "{\"enum\":[\"VALID\",\"TERMINATED\"]}"; assertEquals(reference, String.valueOf(resultProcess)); } @@ -66,11 +72,12 @@ public class ConstraintTest extends TestCase { */ public void testGetSpecificLength() { //Test for string type, same process for array - Property property = toscaElement.getProperties().get("id"); - Template template = toscaConverterManager.getTemplates().get("string"); + ToscaElementProperty toscaElementProperty = toscaElement.getProperties().get("id"); + JsonTemplate jsonTemplate = jsonTemplateManager.getJsonSchemaTemplates().get("string"); JsonObject resultProcess = new JsonObject(); - property.addConstraintsAsJson(resultProcess, (ArrayList) property.getItems().get("constraints"), - template); + toscaElementProperty.addConstraintsAsJson(resultProcess, + (ArrayList) toscaElementProperty.getItems().get("constraints"), + jsonTemplate); int specificLength = 8; int toTest = resultProcess.get("minLength").getAsInt(); assertEquals(specificLength, toTest); @@ -83,11 +90,12 @@ public class ConstraintTest extends TestCase { */ public void testGetLimitValue() { //Test for array type, same process for string - Property property = toscaElement.getProperties().get("description"); - Template template = toscaConverterManager.getTemplates().get("array"); + ToscaElementProperty toscaElementProperty = toscaElement.getProperties().get("description"); + JsonTemplate jsonTemplate = jsonTemplateManager.getJsonSchemaTemplates().get("array"); JsonObject resultProcess = new JsonObject(); - property.addConstraintsAsJson(resultProcess, (ArrayList) property.getItems().get("constraints"), - template); + toscaElementProperty.addConstraintsAsJson(resultProcess, + (ArrayList) toscaElementProperty.getItems().get("constraints"), + jsonTemplate); int toTest = resultProcess.get("minItems").getAsInt(); assertEquals(5, toTest); diff --git a/src/test/java/org/onap/clamp/clds/tosca/update/JsonTemplateManagerTest.java b/src/test/java/org/onap/clamp/clds/tosca/update/JsonTemplateManagerTest.java new file mode 100644 index 000000000..693377ee0 --- /dev/null +++ b/src/test/java/org/onap/clamp/clds/tosca/update/JsonTemplateManagerTest.java @@ -0,0 +1,203 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2020 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============================================ + * =================================================================== + * + */ + +package org.onap.clamp.clds.tosca.update; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import junit.framework.TestCase; +import org.onap.clamp.clds.tosca.update.templates.JsonTemplate; +import org.onap.clamp.clds.tosca.update.templates.JsonTemplateField; +import org.onap.clamp.clds.tosca.update.templates.JsonTemplateManager; +import org.onap.clamp.clds.util.ResourceFileUtil; + +public class JsonTemplateManagerTest extends TestCase { + + /** + * Test the launch translation wit operational policies. + * + * @throws IOException In case of failure + * @throws UnknownComponentException In case of failure + */ + public void testLaunchTranslationTca() throws IOException, UnknownComponentException { + JsonTemplateManager jsonTemplateManager = + new JsonTemplateManager( + ResourceFileUtil.getResourceAsString("http-cache/example/policy/api/v1/policytypes/onap" + + ".policies.monitoring.cdap.tca.hi.lo.app/versions/1.0.0?" + + "connectionTimeToLive=5000/.file"), ResourceFileUtil.getResourceAsString( + "clds/tosca-converter/default-tosca-types.yaml"), + ResourceFileUtil.getResourceAsString("clds/tosca-converter/templates.json")); + String componentName = "onap.policies.monitoring.cdap.tca.hi.lo.app"; + jsonTemplateManager.getJsonSchemaForPolicyType(componentName, null); + } + + /** + * Test the launch translation wit operational policies. + * + * @throws IOException In case of failure + * @throws UnknownComponentException In case of failure + */ + public void testLaunchTranslationFrequencyLimiter() throws IOException, UnknownComponentException { + JsonTemplateManager jsonTemplateManager = + new JsonTemplateManager( + ResourceFileUtil.getResourceAsString("http-cache/example/policy/api/v1/policytypes/onap" + + ".policies.controlloop.guard.common.FrequencyLimiter/versions/1.0.0?" + + "connectionTimeToLive=5000/.file"), ResourceFileUtil.getResourceAsString( + "clds/tosca-converter/default-tosca-types.yaml"), + ResourceFileUtil.getResourceAsString("clds/tosca-converter/templates.json")); + String componentName = "onap.policies.controlloop.guard.common.FrequencyLimiter"; + jsonTemplateManager.getJsonSchemaForPolicyType(componentName, null); + } + + /** + * Test the launch translation wit operational policies. + * + * @throws IOException In case of failure + * @throws UnknownComponentException In case of failure + */ + public void testLaunchTranslationApex() throws IOException, UnknownComponentException { + JsonTemplateManager jsonTemplateManager = + new JsonTemplateManager( + ResourceFileUtil.getResourceAsString("http-cache/example/policy/api/v1/policytypes/onap" + + ".policies.controlloop.operational.common.Apex/versions/1.0.0?" + + "connectionTimeToLive=5000/.file"), ResourceFileUtil.getResourceAsString( + "clds/tosca-converter/default-tosca-types.yaml"), + ResourceFileUtil.getResourceAsString("clds/tosca-converter/templates.json")); + String componentName = "onap.policies.controlloop.operational.common.Apex"; + jsonTemplateManager.getJsonSchemaForPolicyType(componentName, null); + } + + /** + * Test the launch translation wit operational policies. + * + * @throws IOException In case of failure + * @throws UnknownComponentException In case of failure + */ + public void testLaunchTranslationDrools() throws IOException, UnknownComponentException { + JsonTemplateManager jsonTemplateManager = + new JsonTemplateManager( + ResourceFileUtil.getResourceAsString("http-cache/example/policy/api/v1/policytypes/onap" + + ".policies.controlloop.operational.common.Drools/versions/1.0.0?" + + "connectionTimeToLive=5000/.file"), ResourceFileUtil.getResourceAsString( + "clds/tosca-converter/default-tosca-types.yaml"), + ResourceFileUtil.getResourceAsString("clds/tosca-converter/templates.json")); + String componentName = "onap.policies.controlloop.operational.common.Drools"; + jsonTemplateManager.getJsonSchemaForPolicyType(componentName, null); + } + + + /** + * Test the launch translation. + * + * @throws IOException In case of failure + * @throws UnknownComponentException In case of failure + */ + public void testLaunchTranslation() throws IOException, UnknownComponentException { + JsonTemplateManager jsonTemplateManager = + new JsonTemplateManager( + ResourceFileUtil.getResourceAsString("tosca/new-converter/sampleOperationalPolicies.yaml"), + ResourceFileUtil.getResourceAsString("clds/tosca-converter/default-tosca-types.yaml"), + ResourceFileUtil.getResourceAsString("clds/tosca-converter/templates.json")); + String componentName = "onap.policies.controlloop.operational.common.Drools"; + jsonTemplateManager.getJsonSchemaForPolicyType(componentName, null); + } + + /** + * Test addTemplate. + * + * @throws IOException In case of failure + */ + public void testAddTemplate() throws IOException { + JsonTemplateManager jsonTemplateManager = + new JsonTemplateManager( + ResourceFileUtil.getResourceAsString("tosca/new-converter/sampleOperationalPolicies.yaml"), + ResourceFileUtil.getResourceAsString("clds/tosca-converter/default-tosca-types.yaml"), + ResourceFileUtil.getResourceAsString("clds/tosca-converter/templates.json")); + int count = jsonTemplateManager.getJsonSchemaTemplates().size(); + List + jsonTemplateFields = + new ArrayList<>(Arrays.asList(new JsonTemplateField("type"), new JsonTemplateField("description"), + new JsonTemplateField( + "required"), + new JsonTemplateField("metadata"), new JsonTemplateField("constraints"))); + jsonTemplateManager.addTemplate("test", jsonTemplateFields); + assertNotSame(count, jsonTemplateManager.getJsonSchemaTemplates().size()); + } + + /** + * test Remove template. + * + * @throws IOException In case of failure + */ + public void testRemoveTemplate() throws IOException { + JsonTemplateManager jsonTemplateManager = + new JsonTemplateManager( + ResourceFileUtil.getResourceAsString("tosca/new-converter/sampleOperationalPolicies.yaml"), + ResourceFileUtil.getResourceAsString("clds/tosca-converter/default-tosca-types.yaml"), + ResourceFileUtil.getResourceAsString("clds/tosca-converter/templates.json")); + int count = jsonTemplateManager.getJsonSchemaTemplates().size(); + jsonTemplateManager.removeTemplate("string"); + assertNotSame(count, jsonTemplateManager.getJsonSchemaTemplates().size()); + } + + /** + * Test update template. + * + * @throws IOException In case of failure + */ + public void testUpdateTemplate() throws IOException { + JsonTemplateManager jsonTemplateManager = + new JsonTemplateManager( + ResourceFileUtil.getResourceAsString("tosca/new-converter/sampleOperationalPolicies.yaml"), + ResourceFileUtil.getResourceAsString("clds/tosca-converter/default-tosca-types.yaml"), + ResourceFileUtil.getResourceAsString("clds/tosca-converter/templates.json")); + int count = jsonTemplateManager.getJsonSchemaTemplates().get("integer").getJsonTemplateFields().size(); + jsonTemplateManager.updateTemplate("integer", new JsonTemplateField("type"), false); + assertNotSame(count, + jsonTemplateManager.getJsonSchemaTemplates().get("integer").getJsonTemplateFields().size()); + } + + /** + * Test has template. + * + * @throws IOException In case of failure + */ + public void testHasTemplate() throws IOException { + JsonTemplateManager jsonTemplateManager = + new JsonTemplateManager( + ResourceFileUtil.getResourceAsString("tosca/new-converter/sampleOperationalPolicies.yaml"), + ResourceFileUtil.getResourceAsString("clds/tosca-converter/default-tosca-types.yaml"), + ResourceFileUtil.getResourceAsString("clds/tosca-converter/templates.json")); + boolean has = true; + List jsonTemplateFieldsString = + new ArrayList<>(Arrays.asList(new JsonTemplateField("type"), new JsonTemplateField("description"), + new JsonTemplateField("required"), + new JsonTemplateField("metadata"), new JsonTemplateField("constraints"))); + JsonTemplate jsonTemplateTest = new JsonTemplate("String", jsonTemplateFieldsString); + has = jsonTemplateManager.hasTemplate(jsonTemplateTest); + assertEquals(false, has); + } + +} diff --git a/src/test/java/org/onap/clamp/clds/tosca/update/JsonTemplateTest.java b/src/test/java/org/onap/clamp/clds/tosca/update/JsonTemplateTest.java new file mode 100644 index 000000000..fab3030ca --- /dev/null +++ b/src/test/java/org/onap/clamp/clds/tosca/update/JsonTemplateTest.java @@ -0,0 +1,51 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2020 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============================================ + * =================================================================== + * + */ + +package org.onap.clamp.clds.tosca.update; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import junit.framework.TestCase; +import org.onap.clamp.clds.tosca.update.templates.JsonTemplate; +import org.onap.clamp.clds.tosca.update.templates.JsonTemplateField; + +public class JsonTemplateTest extends TestCase { + + /** + * Test check failed. + */ + public void testCheckFields() { + JsonTemplate toTest = new JsonTemplate("toTest"); + List + jsonTemplateFields = new ArrayList<>( + Arrays.asList(new JsonTemplateField("type"), new JsonTemplateField("description"), + new JsonTemplateField( + "enum"))); + toTest.setJsonTemplateFields(jsonTemplateFields); + JsonTemplate reference = new JsonTemplate("toTest"); + reference.setJsonTemplateFields(jsonTemplateFields); + assertTrue(toTest.checkFields(reference)); + } + +} \ No newline at end of file diff --git a/src/test/java/org/onap/clamp/clds/tosca/update/PropertyTest.java b/src/test/java/org/onap/clamp/clds/tosca/update/PropertyTest.java deleted file mode 100644 index bb1929f98..000000000 --- a/src/test/java/org/onap/clamp/clds/tosca/update/PropertyTest.java +++ /dev/null @@ -1,71 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2020 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.tosca.update; - -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; -import java.io.IOException; -import java.util.ArrayList; -import junit.framework.TestCase; -import org.onap.clamp.clds.util.ResourceFileUtil; - -public class PropertyTest extends TestCase { - public PropertyTest() throws IOException { - } - - /** - * Test Parse array. - * - * @throws IOException In case of failure - */ - public void testParseArray() throws IOException { - ToscaConverterManager toscaConverterManager = new ToscaConverterManager( - ResourceFileUtil.getResourceAsString("tosca/new-converter/sampleOperationalPoliciesEXTENTED.yaml"), - ResourceFileUtil.getResourceAsString("clds/tosca_update/default-tosca-types.yaml"), - ResourceFileUtil.getResourceAsString("clds/tosca_update/templates.json")); - ToscaElement toscaElement = toscaConverterManager.getComponents().get("onap.datatype.controlloop.Actor"); - Property property = toscaElement.getProperties().get("actor"); - JsonArray toTest = property.parseArray((ArrayList) property.getItems().get("default")); - assertNotNull(toTest); - } - - /** - * Test add constraint as json. - * - * @throws IOException In case of failure - */ - public void testAddConstraintsAsJson() throws IOException { - ToscaConverterManager toscaConverterManager = new ToscaConverterManager( - ResourceFileUtil.getResourceAsString("tosca/new-converter/sampleOperationalPolicies.yaml"), - ResourceFileUtil.getResourceAsString("clds/tosca_update/default-tosca-types.yaml"), - ResourceFileUtil.getResourceAsString("clds/tosca_update/templates.json")); - ToscaElement toscaElement = toscaConverterManager.getComponents().get("onap.datatype.controlloop.operation.Failure"); - Property property = toscaElement.getProperties().get("category"); - Template template = toscaConverterManager.getTemplates().get("string"); - JsonObject toTest = new JsonObject(); - property.addConstraintsAsJson(toTest, (ArrayList) property.getItems().get("constraints"), template); - String test = "{\"enum\":[\"error\",\"timeout\",\"retries\",\"guard\",\"exception\"]}"; - assertEquals(test, String.valueOf(toTest)); - } -} \ No newline at end of file diff --git a/src/test/java/org/onap/clamp/clds/tosca/update/TemplateTest.java b/src/test/java/org/onap/clamp/clds/tosca/update/TemplateTest.java deleted file mode 100644 index 02c5747b6..000000000 --- a/src/test/java/org/onap/clamp/clds/tosca/update/TemplateTest.java +++ /dev/null @@ -1,46 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2020 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.tosca.update; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import junit.framework.TestCase; - -public class TemplateTest extends TestCase { - - /** - * Test check failed. - */ - public void testCheckFields() { - Template toTest = new Template("toTest"); - List templateFields = new ArrayList<>(Arrays.asList(new TemplateField("type"), new TemplateField("description"),new TemplateField( - "enum"))); - toTest.setTemplateFields(templateFields); - Template reference = new Template("toTest"); - reference.setTemplateFields(templateFields); - assertTrue(toTest.checkFields(reference)); - } - -} \ No newline at end of file diff --git a/src/test/java/org/onap/clamp/clds/tosca/update/ToscaConverterManagerTest.java b/src/test/java/org/onap/clamp/clds/tosca/update/ToscaConverterManagerTest.java deleted file mode 100644 index 493841215..000000000 --- a/src/test/java/org/onap/clamp/clds/tosca/update/ToscaConverterManagerTest.java +++ /dev/null @@ -1,205 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2020 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.tosca.update; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import junit.framework.TestCase; -import org.onap.clamp.clds.util.ResourceFileUtil; - -public class ToscaConverterManagerTest extends TestCase { - - /** - * Test the launch translation wit operational policies. - * - * @throws IOException In case of failure - * @throws UnknownComponentException In case of failure - */ - public void testLaunchTranslationTca() throws IOException, UnknownComponentException { - ToscaConverterManager toscaConverterManager = - new ToscaConverterManager( - ResourceFileUtil.getResourceAsString("http-cache/example/policy/api/v1/policytypes/onap" - + ".policies.monitoring.cdap.tca.hi.lo.app/versions/1.0.0?" - + "connectionTimeToLive=5000/.file"), ResourceFileUtil.getResourceAsString( - "clds/tosca_update/default-tosca-types.yaml"), - ResourceFileUtil.getResourceAsString("clds/tosca_update/templates.json")); - assertNull(toscaConverterManager.getParseToJson()); - String componentName = "onap.policies.monitoring.cdap.tca.hi.lo.app"; - toscaConverterManager.startConversionToJson(componentName); - assertNotNull(toscaConverterManager.getParseToJson()); - } - - /** - * Test the launch translation wit operational policies. - * - * @throws IOException In case of failure - * @throws UnknownComponentException In case of failure - */ - public void testLaunchTranslationFrequencyLimiter() throws IOException, UnknownComponentException { - ToscaConverterManager toscaConverterManager = - new ToscaConverterManager( - ResourceFileUtil.getResourceAsString("http-cache/example/policy/api/v1/policytypes/onap" - + ".policies.controlloop.guard.common.FrequencyLimiter/versions/1.0.0?" - + "connectionTimeToLive=5000/.file"), ResourceFileUtil.getResourceAsString( - "clds/tosca_update/default-tosca-types.yaml"), - ResourceFileUtil.getResourceAsString("clds/tosca_update/templates.json")); - assertNull(toscaConverterManager.getParseToJson()); - String componentName = "onap.policies.controlloop.guard.common.FrequencyLimiter"; - toscaConverterManager.startConversionToJson(componentName); - assertNotNull(toscaConverterManager.getParseToJson()); - } - - /** - * Test the launch translation wit operational policies. - * - * @throws IOException In case of failure - * @throws UnknownComponentException In case of failure - */ - public void testLaunchTranslationApex() throws IOException, UnknownComponentException { - ToscaConverterManager toscaConverterManager = - new ToscaConverterManager( - ResourceFileUtil.getResourceAsString("http-cache/example/policy/api/v1/policytypes/onap" - + ".policies.controlloop.operational.common.Apex/versions/1.0.0?" - + "connectionTimeToLive=5000/.file"), ResourceFileUtil.getResourceAsString( - "clds/tosca_update/default-tosca-types.yaml"), - ResourceFileUtil.getResourceAsString("clds/tosca_update/templates.json")); - assertNull(toscaConverterManager.getParseToJson()); - String componentName = "onap.policies.controlloop.operational.common.Apex"; - toscaConverterManager.startConversionToJson(componentName); - assertNotNull(toscaConverterManager.getParseToJson()); - } - - /** - * Test the launch translation wit operational policies. - * - * @throws IOException In case of failure - * @throws UnknownComponentException In case of failure - */ - public void testLaunchTranslationDrools() throws IOException, UnknownComponentException { - ToscaConverterManager toscaConverterManager = - new ToscaConverterManager( - ResourceFileUtil.getResourceAsString("http-cache/example/policy/api/v1/policytypes/onap" - + ".policies.controlloop.operational.common.Drools/versions/1.0.0?" - + "connectionTimeToLive=5000/.file"), ResourceFileUtil.getResourceAsString( - "clds/tosca_update/default-tosca-types.yaml"), - ResourceFileUtil.getResourceAsString("clds/tosca_update/templates.json")); - assertNull(toscaConverterManager.getParseToJson()); - String componentName = "onap.policies.controlloop.operational.common.Drools"; - toscaConverterManager.startConversionToJson(componentName); - assertNotNull(toscaConverterManager.getParseToJson()); - } - - /** - * Test the launch translation. - * - * @throws IOException In case of failure - * @throws UnknownComponentException In case of failure - */ - public void testLaunchTranslation() throws IOException, UnknownComponentException { - ToscaConverterManager toscaConverterManager = - new ToscaConverterManager( - ResourceFileUtil.getResourceAsString("tosca/new-converter/sampleOperationalPolicies.yaml"), - ResourceFileUtil.getResourceAsString("clds/tosca_update/default-tosca-types.yaml"), - ResourceFileUtil.getResourceAsString("clds/tosca_update/templates.json")); - assertNull(toscaConverterManager.getParseToJson()); - String componentName = "onap.policies.controlloop.operational.common.Drools"; - toscaConverterManager.startConversionToJson(componentName); - assertNotNull(toscaConverterManager.getParseToJson()); - } - - /** - * Test addTemplate. - * - * @throws IOException In case of failure - */ - public void testAddTemplate() throws IOException { - ToscaConverterManager toscaConverterManager = - new ToscaConverterManager( - ResourceFileUtil.getResourceAsString("tosca/new-converter/sampleOperationalPolicies.yaml"), - ResourceFileUtil.getResourceAsString("clds/tosca_update/default-tosca-types.yaml"), - ResourceFileUtil.getResourceAsString("clds/tosca_update/templates.json")); - int count = toscaConverterManager.getTemplates().size(); - List templateFields = new ArrayList<>(Arrays.asList(new TemplateField("type"), new TemplateField("description"), - new TemplateField( - "required"), - new TemplateField("metadata"), new TemplateField("constraints"))); - toscaConverterManager.addTemplate("test", templateFields); - assertNotSame(count, toscaConverterManager.getTemplates().size()); - } - - /** - * test Remove template. - * - * @throws IOException In case of failure - */ - public void testRemoveTemplate() throws IOException { - ToscaConverterManager toscaConverterManager = - new ToscaConverterManager( - ResourceFileUtil.getResourceAsString("tosca/new-converter/sampleOperationalPolicies.yaml"), - ResourceFileUtil.getResourceAsString("clds/tosca_update/default-tosca-types.yaml"), - ResourceFileUtil.getResourceAsString("clds/tosca_update/templates.json")); - int count = toscaConverterManager.getTemplates().size(); - toscaConverterManager.removeTemplate("string"); - assertNotSame(count, toscaConverterManager.getTemplates().size()); - } - - /** - * Test update template. - * - * @throws IOException In case of failure - */ - public void testUpdateTemplate() throws IOException { - ToscaConverterManager toscaConverterManager = - new ToscaConverterManager( - ResourceFileUtil.getResourceAsString("tosca/new-converter/sampleOperationalPolicies.yaml"), - ResourceFileUtil.getResourceAsString("clds/tosca_update/default-tosca-types.yaml"), - ResourceFileUtil.getResourceAsString("clds/tosca_update/templates.json")); - int count = toscaConverterManager.getTemplates().get("integer").getTemplateFields().size(); - toscaConverterManager.updateTemplate("integer", new TemplateField("type"), false); - assertNotSame(count, toscaConverterManager.getTemplates().get("integer").getTemplateFields().size()); - } - - /** - * Test has template. - * - * @throws IOException In case of failure - */ - public void testHasTemplate() throws IOException { - ToscaConverterManager toscaConverterManager = - new ToscaConverterManager( - ResourceFileUtil.getResourceAsString("tosca/new-converter/sampleOperationalPolicies.yaml"), - ResourceFileUtil.getResourceAsString("clds/tosca_update/default-tosca-types.yaml"), - ResourceFileUtil.getResourceAsString("clds/tosca_update/templates.json")); - boolean has = true; - List templateFieldsString = - new ArrayList<>(Arrays.asList(new TemplateField("type"), new TemplateField("description"), new TemplateField("required"), - new TemplateField("metadata"), new TemplateField("constraints"))); - Template templateTest = new Template("String", templateFieldsString); - has = toscaConverterManager.hasTemplate(templateTest); - assertEquals(false, has); - } - -} diff --git a/src/test/java/org/onap/clamp/clds/tosca/update/ToscaConverterWithDictionarySupportItCase.java b/src/test/java/org/onap/clamp/clds/tosca/update/ToscaConverterWithDictionarySupportItCase.java new file mode 100644 index 000000000..b4f8b1245 --- /dev/null +++ b/src/test/java/org/onap/clamp/clds/tosca/update/ToscaConverterWithDictionarySupportItCase.java @@ -0,0 +1,118 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2020 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============================================ + * =================================================================== + * + */ + +package org.onap.clamp.clds.tosca.update; + +import com.google.gson.JsonObject; +import java.io.IOException; +import javax.transaction.Transactional; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.onap.clamp.clds.Application; +import org.onap.clamp.clds.tosca.update.parser.metadata.ToscaMetadataParserWithDictionarySupport; +import org.onap.clamp.clds.tosca.update.templates.JsonTemplateManager; +import org.onap.clamp.clds.util.JsonUtils; +import org.onap.clamp.clds.util.ResourceFileUtil; +import org.onap.clamp.tosca.Dictionary; +import org.onap.clamp.tosca.DictionaryElement; +import org.onap.clamp.tosca.DictionaryService; +import org.skyscreamer.jsonassert.JSONAssert; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@SpringBootTest(classes = Application.class) +public class ToscaConverterWithDictionarySupportItCase { + + @Autowired + private DictionaryService dictionaryService; + + @Autowired + private ToscaMetadataParserWithDictionarySupport toscaMetadataParserWithDictionarySupport; + + /** + * This Test validates Tosca yaml with metadata tag that contains policy_model_type and acronym + * parameters which defines the Tosca Policy name and its short name. + * + * @throws IOException In case of issue when opening the tosca yaml file and + * converted json file + */ + @Test + @Transactional + public final void testMetadataClampPossibleValues() throws IOException, UnknownComponentException { + + // Set up dictionary elements + Dictionary dictionaryTest = new Dictionary(); + dictionaryTest.setName("Context"); + dictionaryTest.setSecondLevelDictionary(0); + + DictionaryElement element = new DictionaryElement(); + element.setName("PROD"); + element.setShortName("PROD"); + element.setType("string"); + element.setDescription("Production"); + dictionaryTest.addDictionaryElements(element); + + dictionaryService.saveOrUpdateDictionary(dictionaryTest); + + Dictionary dictionaryTest1 = new Dictionary(); + dictionaryTest1.setName("EventDictionary"); + dictionaryTest1.setSecondLevelDictionary(0); + + DictionaryElement element1 = new DictionaryElement(); + element1.setName("alarmCondition"); + element1.setShortName("alarmCondition"); + element1.setType("string"); + element1.setDescription("Alarm Condition"); + dictionaryTest1.addDictionaryElements(element1); + + dictionaryService.saveOrUpdateDictionary(dictionaryTest1); + + Dictionary dictionaryTest2 = new Dictionary(); + dictionaryTest2.setName("Operators"); + dictionaryTest2.setSecondLevelDictionary(0); + + DictionaryElement element2 = new DictionaryElement(); + element2.setName("equals"); + element2.setShortName("equals"); + element2.setType("string"); + element2.setDescription("equals"); + dictionaryTest2.addDictionaryElements(element2); + dictionaryService.saveOrUpdateDictionary(dictionaryTest2); + + JsonTemplateManager jsonTemplateManager = + new JsonTemplateManager( + ResourceFileUtil.getResourceAsString("tosca/tosca_metadata_clamp_possible_values.yaml"), + ResourceFileUtil.getResourceAsString("clds/tosca-converter/default-tosca-types.yaml"), + ResourceFileUtil.getResourceAsString("clds/tosca-converter/templates.json")); + + JsonObject jsonSchema = jsonTemplateManager.getJsonSchemaForPolicyType( + "onap.policies.monitoring.cdap.tca.hi.lo.app", toscaMetadataParserWithDictionarySupport); + + JSONAssert.assertEquals( + ResourceFileUtil + .getResourceAsString("tosca/new-converter/tca-with-metadata.json"), + JsonUtils.GSON.toJson(jsonSchema), true); + } +} diff --git a/src/test/java/org/onap/clamp/clds/tosca/update/ToscaElementPropertyTest.java b/src/test/java/org/onap/clamp/clds/tosca/update/ToscaElementPropertyTest.java new file mode 100644 index 000000000..967f330dc --- /dev/null +++ b/src/test/java/org/onap/clamp/clds/tosca/update/ToscaElementPropertyTest.java @@ -0,0 +1,79 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2020 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============================================ + * =================================================================== + * + */ + +package org.onap.clamp.clds.tosca.update; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import java.io.IOException; +import java.util.ArrayList; +import junit.framework.TestCase; +import org.onap.clamp.clds.tosca.update.elements.ToscaElement; +import org.onap.clamp.clds.tosca.update.elements.ToscaElementProperty; +import org.onap.clamp.clds.tosca.update.templates.JsonTemplate; +import org.onap.clamp.clds.tosca.update.templates.JsonTemplateManager; +import org.onap.clamp.clds.util.ResourceFileUtil; + +public class ToscaElementPropertyTest extends TestCase { + public ToscaElementPropertyTest() throws IOException { + } + + /** + * Test Parse array. + * + * @throws IOException In case of failure + */ + public void testParseArray() throws IOException { + JsonTemplateManager jsonTemplateManager = new JsonTemplateManager( + ResourceFileUtil.getResourceAsString("tosca/new-converter/sampleOperationalPoliciesEXTENTED.yaml"), + ResourceFileUtil.getResourceAsString("clds/tosca-converter/default-tosca-types.yaml"), + ResourceFileUtil.getResourceAsString("clds/tosca-converter/templates.json")); + ToscaElement toscaElement = jsonTemplateManager.getToscaElements().get("onap.datatype.controlloop.Actor"); + ToscaElementProperty toscaElementProperty = toscaElement.getProperties().get("actor"); + JsonArray toTest = + toscaElementProperty.parseArray((ArrayList) toscaElementProperty.getItems().get("default")); + assertNotNull(toTest); + } + + /** + * Test add constraint as json. + * + * @throws IOException In case of failure + */ + public void testAddConstraintsAsJson() throws IOException { + JsonTemplateManager jsonTemplateManager = new JsonTemplateManager( + ResourceFileUtil.getResourceAsString("tosca/new-converter/sampleOperationalPolicies.yaml"), + ResourceFileUtil.getResourceAsString("clds/tosca-converter/default-tosca-types.yaml"), + ResourceFileUtil.getResourceAsString("clds/tosca-converter/templates.json")); + ToscaElement toscaElement = + jsonTemplateManager.getToscaElements().get("onap.datatype.controlloop.operation.Failure"); + ToscaElementProperty toscaElementProperty = toscaElement.getProperties().get("category"); + JsonTemplate jsonTemplate = jsonTemplateManager.getJsonSchemaTemplates().get("string"); + JsonObject toTest = new JsonObject(); + toscaElementProperty + .addConstraintsAsJson(toTest, (ArrayList) toscaElementProperty.getItems().get("constraints"), + jsonTemplate); + String test = "{\"enum\":[\"error\",\"timeout\",\"retries\",\"guard\",\"exception\"]}"; + assertEquals(test, String.valueOf(toTest)); + } +} \ No newline at end of file diff --git a/src/test/java/org/onap/clamp/clds/tosca/update/ToscaElementTest.java b/src/test/java/org/onap/clamp/clds/tosca/update/ToscaElementTest.java index 7ffba4e00..5f7de28ae 100644 --- a/src/test/java/org/onap/clamp/clds/tosca/update/ToscaElementTest.java +++ b/src/test/java/org/onap/clamp/clds/tosca/update/ToscaElementTest.java @@ -27,6 +27,8 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import junit.framework.TestCase; +import org.onap.clamp.clds.tosca.update.elements.ToscaElement; +import org.onap.clamp.clds.tosca.update.templates.JsonTemplateManager; import org.onap.clamp.clds.util.ResourceFileUtil; public class ToscaElementTest extends TestCase { @@ -38,12 +40,12 @@ public class ToscaElementTest extends TestCase { */ public void testPropertiesNames() throws IOException { ArrayList reference = new ArrayList<>(Arrays.asList("actor", "operation", "target", "payload")); - ToscaConverterManager toscaConverterManager = - new ToscaConverterManager( + JsonTemplateManager jsonTemplateManager = + new JsonTemplateManager( ResourceFileUtil.getResourceAsString("tosca/new-converter/sampleOperationalPolicies.yaml"), - ResourceFileUtil.getResourceAsString("clds/tosca_update/default-tosca-types.yaml"), - ResourceFileUtil.getResourceAsString("clds/tosca_update/templates.json")); - ToscaElement toscaElement = toscaConverterManager.getComponents().get("onap.datatype.controlloop.Actor"); + ResourceFileUtil.getResourceAsString("clds/tosca-converter/default-tosca-types.yaml"), + ResourceFileUtil.getResourceAsString("clds/tosca-converter/templates.json")); + ToscaElement toscaElement = jsonTemplateManager.getToscaElements().get("onap.datatype.controlloop.Actor"); assertEquals(reference, toscaElement.propertiesNames()); } diff --git a/src/test/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilderTest.java b/src/test/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilderTest.java index 184a391d7..8eeba07ed 100644 --- a/src/test/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilderTest.java +++ b/src/test/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilderTest.java @@ -39,7 +39,6 @@ import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; -import org.onap.clamp.loop.Loop; import org.onap.clamp.loop.template.PolicyModel; import org.onap.clamp.policy.microservice.MicroServicePolicy; import org.onap.clamp.policy.operational.OperationalPolicy; @@ -65,11 +64,11 @@ public class ClampGraphBuilderTest { public void clampGraphBuilderCompleteChainTest() { String collector = "VES"; MicroServicePolicy ms1 = new MicroServicePolicy("ms1", new PolicyModel("org.onap.ms1", "", "1.0.0"), false, - null); + null, null, null, null); MicroServicePolicy ms2 = new MicroServicePolicy("ms2", new PolicyModel("org.onap.ms2", "", "1.0.0"), false, - null); + null, null, null, null); - OperationalPolicy opPolicy = new OperationalPolicy("OperationalPolicy", new Loop(), new JsonObject(), + OperationalPolicy opPolicy = new OperationalPolicy("OperationalPolicy", new JsonObject(), new JsonObject(), new PolicyModel("org.onap.opolicy", null, "1.0.0", "opolicy1"), null, null, null); final Set opPolicies = Set.of(opPolicy); final Set microServices = Set.of(ms1, ms2); @@ -92,9 +91,11 @@ public class ClampGraphBuilderTest { public void clampGraphBuilderNoPolicyGivenTest() { String collector = "VES"; MicroServicePolicy ms1 = - new MicroServicePolicy("ms1", new PolicyModel("org.onap.ms1", "", "1.0.0"), false, null); + new MicroServicePolicy("ms1", new PolicyModel("org.onap.ms1", "", "1.0.0"), false, null, null, null, + null); MicroServicePolicy ms2 = - new MicroServicePolicy("ms2", new PolicyModel("org.onap.ms2", "", "1.0.0"), false, null); + new MicroServicePolicy("ms2", new PolicyModel("org.onap.ms2", "", "1.0.0"), false, null, null, null, + null); ClampGraphBuilder clampGraphBuilder = new ClampGraphBuilder(mockPainter); assertThat(clampGraphBuilder.collector(collector).addMicroService(ms1).addMicroService(ms2).build()) diff --git a/src/test/java/org/onap/clamp/clds/util/drawing/SvgLoopGeneratorTest.java b/src/test/java/org/onap/clamp/clds/util/drawing/SvgLoopGeneratorTest.java index a320131c4..9559fa17d 100644 --- a/src/test/java/org/onap/clamp/clds/util/drawing/SvgLoopGeneratorTest.java +++ b/src/test/java/org/onap/clamp/clds/util/drawing/SvgLoopGeneratorTest.java @@ -24,6 +24,7 @@ package org.onap.clamp.clds.util.drawing; import static org.assertj.core.api.Assertions.assertThat; + import com.google.gson.JsonObject; import java.io.IOException; import javax.xml.parsers.ParserConfigurationException; @@ -38,12 +39,11 @@ public class SvgLoopGeneratorTest { private Loop getLoop() { MicroServicePolicy ms1 = new MicroServicePolicy("ms1", new PolicyModel("org.onap.ms1", "", "1.0.0", "short.ms1"), - false, - null); + false,null,null,null,null); MicroServicePolicy ms2 = new MicroServicePolicy("ms2", new PolicyModel("org.onap.ms2", "", "1.0.0", "short.ms2"), - false, null); - OperationalPolicy opPolicy = new OperationalPolicy("OperationalPolicy", new Loop(), new JsonObject(), + false, null,null,null,null); + OperationalPolicy opPolicy = new OperationalPolicy("OperationalPolicy", new JsonObject(),new JsonObject(), new PolicyModel("org.onap.opolicy", null, "1.0.0", "short.OperationalPolicy"), null, null, null); Loop loop = new Loop(); loop.addMicroServicePolicy(ms1); diff --git a/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java b/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java index a57a35ea4..d06695545 100644 --- a/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java +++ b/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java @@ -27,6 +27,7 @@ package org.onap.clamp.loop; import static org.assertj.core.api.Assertions.assertThat; + import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; @@ -96,7 +97,8 @@ public class CsarInstallerItCase { private CsarInstaller csarInstaller; private BlueprintArtifact buildFakeBuildprintArtifact(String instanceName, String invariantResourceUuid, - String blueprintFilePath, String artifactName, String invariantServiceUuid) throws IOException { + String blueprintFilePath, String artifactName, + String invariantServiceUuid) throws IOException { IResourceInstance resource = Mockito.mock(IResourceInstance.class); Mockito.when(resource.getResourceInstanceName()).thenReturn(instanceName); Mockito.when(resource.getResourceInvariantUUID()).thenReturn(invariantResourceUuid); diff --git a/src/test/java/org/onap/clamp/loop/LoopControllerTestItCase.java b/src/test/java/org/onap/clamp/loop/LoopControllerTestItCase.java index 24a9037ad..4d51bb27c 100644 --- a/src/test/java/org/onap/clamp/loop/LoopControllerTestItCase.java +++ b/src/test/java/org/onap/clamp/loop/LoopControllerTestItCase.java @@ -30,6 +30,7 @@ import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; +import java.io.IOException; import java.util.Set; import javax.transaction.Transactional; import org.junit.Test; @@ -46,7 +47,6 @@ import org.onap.clamp.policy.operational.OperationalPolicy; import org.onap.clamp.policy.operational.OperationalPolicyService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.annotation.Commit; import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @@ -77,10 +77,10 @@ public class LoopControllerTestItCase { private void saveTestLoopToDb() { Loop testLoop = createTestLoop(EXAMPLE_LOOP_NAME, "blueprint", "representation"); testLoop.setGlobalPropertiesJson(JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class)); - LoopTemplate template = new LoopTemplate(); + LoopTemplate template = new LoopTemplate(); template.setName("testTemplate"); testLoop.setLoopTemplate(template); - Service modelService = new Service("{\"name\":\"serviceName\",\"UUID\":\"uuid\"}","{}"); + Service modelService = new Service("{\"name\":\"serviceName\",\"UUID\":\"uuid\"}", "{}"); testLoop.setModelService(modelService); loopService.saveOrUpdateLoop(testLoop); } @@ -140,7 +140,7 @@ public class LoopControllerTestItCase { public void testUpdateMicroservicePolicy() { saveTestLoopToDb(); PolicyModel policyModel = new PolicyModel("testPolicyModel", - "tosca_definitions_version: tosca_simple_yaml_1_0_0","1.0.0"); + "tosca_definitions_version: tosca_simple_yaml_1_0_0", "1.0.0"); policyModelsService.saveOrUpdatePolicyModel(policyModel); MicroServicePolicy policy = new MicroServicePolicy("policyName", policyModel, false, JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class), null, null, null); @@ -158,10 +158,10 @@ public class LoopControllerTestItCase { @Test @Transactional - public void testAddAndRemoveOperationalPolicies() { + public void testAddAndRemoveOperationalPolicies() throws IOException { saveTestLoopToDb(); PolicyModel policyModel = new PolicyModel("testPolicyModel", - "tosca_definitions_version: tosca_simple_yaml_1_0_0","1.0.0"); + null, "1.0.0"); policyModelsService.saveOrUpdatePolicyModel(policyModel); loopController.addOperationalPolicy(EXAMPLE_LOOP_NAME, "testPolicyModel", "1.0.0"); @@ -169,7 +169,7 @@ public class LoopControllerTestItCase { Loop newLoop = loopController.getLoop(EXAMPLE_LOOP_NAME); Set opPolicyList = newLoop.getOperationalPolicies(); assertThat(opPolicyList.size()).isEqualTo(1); - for(OperationalPolicy policy : opPolicyList) { + for (OperationalPolicy policy : opPolicyList) { assertThat(policy.getName().contains("OPERATIONAL_serviceName")).isTrue(); assertThat(policy.getPolicyModel().getPolicyModelType()).isEqualTo("testPolicyModel"); assertThat(policy.getPolicyModel().getVersion()).isEqualTo("1.0.0"); diff --git a/src/test/java/org/onap/clamp/loop/PolicyComponentTest.java b/src/test/java/org/onap/clamp/loop/PolicyComponentTest.java index 89d3e6172..1c9b10189 100644 --- a/src/test/java/org/onap/clamp/loop/PolicyComponentTest.java +++ b/src/test/java/org/onap/clamp/loop/PolicyComponentTest.java @@ -28,7 +28,6 @@ import static org.assertj.core.api.Assertions.assertThat; import com.google.gson.Gson; import com.google.gson.JsonObject; import java.io.IOException; -import java.util.HashSet; import org.apache.camel.Exchange; import org.apache.camel.Message; import org.junit.Test; @@ -265,9 +264,12 @@ public class PolicyComponentTest { loopTest.addMicroServicePolicy(microServicePolicy); PolicyModel policyModel2 = new PolicyModel("onap.policies.controlloop.Operational", null, "1.0.0"); - OperationalPolicy opPolicy = new OperationalPolicy("opPolicy", loopTest, - new Gson().fromJson("{\"configtype\":\"json\"}", JsonObject.class), policyModel2, null, "pdpGroup2", - "pdpSubgroup2"); + OperationalPolicy opPolicy = + new OperationalPolicy("opPolicy", new Gson().fromJson("{\"configtype\":\"json\"}", JsonObject.class), + new Gson().fromJson("{\"jsonschema\":\"schema\"}", JsonObject.class), policyModel2, null, + "pdpGroup2", + "pdpSubgroup2"); + loopTest.addOperationalPolicy(opPolicy); LoopTemplate loopTemplate = new LoopTemplate("test", "yaml", "svg", 1, null); diff --git a/src/test/java/org/onap/clamp/policy/microservice/MicroServicePayloadTest.java b/src/test/java/org/onap/clamp/policy/microservice/MicroServicePayloadTest.java index ea1218206..01e2184a7 100644 --- a/src/test/java/org/onap/clamp/policy/microservice/MicroServicePayloadTest.java +++ b/src/test/java/org/onap/clamp/policy/microservice/MicroServicePayloadTest.java @@ -37,7 +37,7 @@ public class MicroServicePayloadTest { public void testPayloadConstruction() throws IOException { MicroServicePolicy policy = new MicroServicePolicy("testPolicy", new PolicyModel( "onap.policies.monitoring.cdap.tca.hi.lo.app", - ResourceFileUtil.getResourceAsString("tosca/tosca_example.yaml"),"1.0.0"), false, null); + ResourceFileUtil.getResourceAsString("tosca/tosca_example.yaml"),"1.0.0"), false,null,null, null,null); policy.setConfigurationsJson(JsonUtils.GSON.fromJson( ResourceFileUtil.getResourceAsString("tosca/micro-service-policy-properties.json"), JsonObject.class)); JSONAssert.assertEquals(ResourceFileUtil.getResourceAsString("tosca/micro-service-policy-payload.json"), diff --git a/src/test/java/org/onap/clamp/policy/microservice/OperationalPolicyPayloadTest.java b/src/test/java/org/onap/clamp/policy/microservice/OperationalPolicyPayloadTest.java index 4b8eee921..58a432d34 100644 --- a/src/test/java/org/onap/clamp/policy/microservice/OperationalPolicyPayloadTest.java +++ b/src/test/java/org/onap/clamp/policy/microservice/OperationalPolicyPayloadTest.java @@ -42,8 +42,8 @@ public class OperationalPolicyPayloadTest { public void testOperationalPolicyLegacyPayloadConstruction() throws IOException { JsonObject jsonConfig = new GsonBuilder().create().fromJson( ResourceFileUtil.getResourceAsString("tosca/operational-policy-properties.json"), JsonObject.class); - OperationalPolicy policy = new OperationalPolicy("testPolicy.legacy", null, jsonConfig, - new PolicyModel("onap.policies.controlloop.Operational.legacy","","1.0.0","test"), null,null,null); + OperationalPolicy policy = new OperationalPolicy("testPolicy.legacy", jsonConfig, null, + new PolicyModel("onap.policies.controlloop.Operational.legacy", "", "1.0.0", "test"), null, null, null); assertThat(policy.createPolicyPayloadYaml()) .isEqualTo(ResourceFileUtil.getResourceAsString("tosca/operational-policy-payload.yaml")); @@ -65,7 +65,7 @@ public class OperationalPolicyPayloadTest { JsonObject jsonConfig = new GsonBuilder().create().fromJson( ResourceFileUtil.getResourceAsString("tosca/operational-policy-no-guard-properties.json"), JsonObject.class); - OperationalPolicy policy = new OperationalPolicy("testPolicy", null, jsonConfig, null, null, null, null); + OperationalPolicy policy = new OperationalPolicy("testPolicy", jsonConfig, null, null, null, null, null); Map guardsMap = policy.createGuardPolicyPayloads(); assertThat(guardsMap).isEmpty(); assertThat(guardsMap.entrySet()).isEmpty(); @@ -75,7 +75,7 @@ public class OperationalPolicyPayloadTest { public void testGuardPolicyPayloadConstruction() throws IOException { JsonObject jsonConfig = new GsonBuilder().create().fromJson( ResourceFileUtil.getResourceAsString("tosca/operational-policy-properties.json"), JsonObject.class); - OperationalPolicy policy = new OperationalPolicy("testPolicy", null, jsonConfig, null, null, null, null); + OperationalPolicy policy = new OperationalPolicy("testPolicy", jsonConfig, null, null, null, null, null); Map guardsMap = policy.createGuardPolicyPayloads(); diff --git a/src/test/java/org/onap/clamp/util/SemanticVersioningTest.java b/src/test/java/org/onap/clamp/util/SemanticVersioningTest.java index e018f0952..88f2bbe1b 100644 --- a/src/test/java/org/onap/clamp/util/SemanticVersioningTest.java +++ b/src/test/java/org/onap/clamp/util/SemanticVersioningTest.java @@ -23,12 +23,15 @@ package org.onap.clamp.util; -import org.junit.Test; - import static org.assertj.core.api.Assertions.assertThat; +import org.junit.Test; + public class SemanticVersioningTest { + /** + * compare test. + */ @Test public void compareTest() { assertThat(SemanticVersioning.compare("1.0.0", "2.0.0")).isEqualTo(-1); @@ -53,6 +56,9 @@ public class SemanticVersioningTest { assertThat(SemanticVersioning.compare("1.2", "1")).isEqualTo(1); } + /** + * Compare test. + */ @Test public void compareEqualsTest() { assertThat(SemanticVersioning.compare("1.0.0", "1.0.0")).isEqualTo(0); @@ -62,6 +68,9 @@ public class SemanticVersioningTest { } + /** + * Compare with null. + */ @Test public void compareNullTest() { assertThat(SemanticVersioning.compare(null, null)).isEqualTo(0); @@ -69,6 +78,9 @@ public class SemanticVersioningTest { assertThat(SemanticVersioning.compare("1.0", null)).isEqualTo(1); } + /** + * Increment major version test. + */ @Test public void incrementVersionTest() { assertThat(SemanticVersioning.incrementMajorVersion("1.0")).isEqualTo("2.0.0"); diff --git a/src/test/resources/application.properties b/src/test/resources/application.properties index 0e453535c..ea17836a0 100644 --- a/src/test/resources/application.properties +++ b/src/test/resources/application.properties @@ -168,4 +168,6 @@ clamp.config.cds.userName=ccsdkapps clamp.config.cds.password=ccsdkapps ## Tosca converter -clamp.config.tosca.converter.templates=classpath:/clds/tosca_updates/templates.json \ No newline at end of file +clamp.config.tosca.converter.json.schema.templates=classpath:/clds/tosca-converter/templates.json +clamp.config.tosca.converter.default.datatypes=classpath:/clds/tosca-converter/default-tosca-types.yaml +clamp.config.tosca.converter.dictionary.support.enabled=true \ No newline at end of file diff --git a/src/test/resources/clds/camel/rest/clamp-api-v2.xml b/src/test/resources/clds/camel/rest/clamp-api-v2.xml deleted file mode 100644 index b0a8d2fd7..000000000 --- a/src/test/resources/clds/camel/rest/clamp-api-v2.xml +++ /dev/null @@ -1,984 +0,0 @@ - - - - - - - - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - - ${body} - - - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - ${body} - - - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - ${body} - - - - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - - - - - - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - - - - - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - - - - - - - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - - - - - - - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - - - - - - - - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - - - - - - false - - - - - ${exchangeProperty[loopObject].getMicroServicePolicies()} - - - ${body} - - - - false - - - - - - - ${exchangeProperty[loopObject].getOperationalPolicies()} - - - ${body} - - - - false - - - - - - - - ${exchangeProperty[operationalPolicy].createGuardPolicyPayloads().entrySet()} - - - ${body} - - - - - false - - - - - - - - 3000 - - - - - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - - - - - - - - ${exchangeProperty[loopObject].getMicroServicePolicies()} - - - ${body} - - - - - - - - ${exchangeProperty[loopObject].getOperationalPolicies()} - - - ${body} - - - - - - ${exchangeProperty[operationalPolicy].createGuardPolicyPayloads().entrySet()} - - - ${body} - - - - - - - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - java.lang.Exception - - false - - - - - - - - ${exchangeProperty[loopObject]} - - - - - - - - - - - - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - - - java.lang.Exception - - false - - - - - - - - - - - - - ${body} - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - - ${body} - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - - - - java.lang.Exception - - false - - - - - - - - - - - - - - - - - java.lang.Exception - - true - - - 500 - - - ERROR: ${exception.message} - - - - - - - - - - - - - - - - java.lang.Exception - - true - - - 500 - - - ERROR: ${exception.message} - - - - - - - - - - - - - - - - java.lang.Exception - - true - - - 500 - - - ERROR: ${exception.message} - - - - - - - - - - - - - - - ${body} - - - - - java.lang.Exception - - true - - - 404 - - - ERROR: ${exception.message} - - - - - - - - - - - - - - - - - - java.lang.Exception - - true - - - 500 - - - ERROR: ${exception.message} - - - - - - - - - - - - - - - - java.lang.Exception - - true - - - 500 - - - ERROR: ${exception.message} - - - - - - - - - - - - - - - - java.lang.Exception - - false - - - - - - - - diff --git a/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.operational.common.Apex/versions/1.0.0?connectionTimeToLive=5000/.file b/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.operational.common.Apex/versions/1.0.0?connectionTimeToLive=5000/.file index 44f55879e..64ba559c1 100644 --- a/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.operational.common.Apex/versions/1.0.0?connectionTimeToLive=5000/.file +++ b/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.operational.common.Apex/versions/1.0.0?connectionTimeToLive=5000/.file @@ -91,7 +91,7 @@ data_types: description: The resource the operation should be performed on. required: true metadata: - clamp_possible_values: + clamp_possible_values: test payload: type: map description: Name/value pairs of payload information passed by Policy to the actor @@ -116,7 +116,7 @@ data_types: description: The definition of the operation to be performed. required: true metadata: - clamp_possible_values: + clamp_possible_values: test timeout: type: integer description: The amount of time for the actor to perform the operation. diff --git a/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.operational.common.Drools/versions/1.0.0?connectionTimeToLive=5000/.file b/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.operational.common.Drools/versions/1.0.0?connectionTimeToLive=5000/.file index 72897be07..1c082b1ee 100644 --- a/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.operational.common.Drools/versions/1.0.0?connectionTimeToLive=5000/.file +++ b/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.operational.common.Drools/versions/1.0.0?connectionTimeToLive=5000/.file @@ -79,7 +79,7 @@ data_types: description: The resource the operation should be performed on. required: true metadata: - clamp_possible_values: + clamp_possible_values: test payload: type: map description: Name/value pairs of payload information passed by Policy to the actor @@ -104,7 +104,7 @@ data_types: description: The definition of the operation to be performed. required: true metadata: - clamp_possible_values: + clamp_possible_values: test timeout: type: integer description: The amount of time for the actor to perform the operation. diff --git a/src/test/resources/tosca/new-converter/tca-with-metadata.json b/src/test/resources/tosca/new-converter/tca-with-metadata.json new file mode 100644 index 000000000..1b95f8c95 --- /dev/null +++ b/src/test/resources/tosca/new-converter/tca-with-metadata.json @@ -0,0 +1,222 @@ +{ + "title": "onap.policies.monitoring.cdap.tca.hi.lo.app", + "type": "object", + "required": [], + "properties": { + "tca_policy": { + "type": "object", + "description": "TCA Policy JSON", + "properties": { + "onap.datatypes.monitoring.tca_policy": { + "title": "onap.datatypes.monitoring.tca_policy", + "type": "object", + "required": [ + "domain", + "metricsPerEventName" + ], + "properties": { + "domain": { + "type": "string", + "description": "Domain name to which TCA needs to be applied", + "default": "measurementsForVfScaling", + "const": "measurementsForVfScaling" + }, + "metricsPerEventName": { + "type": "array", + "description": "Contains eventName and threshold details that need to be applied to given eventName", + "items": { + "title": "onap.datatypes.monitoring.metricsPerEventName", + "type": "object", + "required": [ + "controlLoopSchemaType", + "eventName", + "policyName", + "policyScope", + "policyVersion", + "thresholds", + "context", + "signature" + ], + "properties": { + "controlLoopSchemaType": { + "type": "string", + "description": "Specifies Control Loop Schema Type for the event Name e.g. VNF, VM", + "enum": [ + "VM", + "VNF" + ] + }, + "eventName": { + "type": "string", + "description": "Event name to which thresholds need to be applied" + }, + "policyName": { + "type": "string", + "description": "TCA Policy Scope Name" + }, + "policyScope": { + "type": "string", + "description": "TCA Policy Scope" + }, + "policyVersion": { + "type": "string", + "description": "TCA Policy Scope Version" + }, + "thresholds": { + "type": "array", + "description": "Thresholds associated with eventName", + "items": { + "title": "onap.datatypes.monitoring.thresholds", + "type": "object", + "required": [ + "closedLoopControlName", + "closedLoopEventStatus", + "direction", + "fieldPath", + "severity", + "thresholdValue", + "version" + ], + "properties": { + "closedLoopControlName": { + "type": "string", + "description": "Closed Loop Control Name associated with the threshold" + }, + "closedLoopEventStatus": { + "type": "string", + "description": "Closed Loop Event Status of the threshold", + "enum": [ + "ONSET", + "ABATED" + ] + }, + "direction": { + "type": "string", + "description": "Direction of the threshold", + "enum": [ + "LESS", + "LESS_OR_EQUAL", + "GREATER", + "GREATER_OR_EQUAL", + "EQUAL" + ] + }, + "fieldPath": { + "type": "string", + "description": "Json field Path as per CEF message which needs to be analyzed for TCA", + "enum": [ + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated", + "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated", + "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle", + "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt", + "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice", + "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq", + "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal", + "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem", + "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait", + "$.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage", + "$.event.measurementsForVfScalingFields.meanRequestLatency", + "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered", + "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached", + "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured", + "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree", + "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed", + "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value" + ] + }, + "severity": { + "type": "string", + "description": "Threshold Event Severity", + "enum": [ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "NORMAL" + ] + }, + "thresholdValue": { + "type": "integer", + "description": "Threshold value for the field Path inside CEF message" + }, + "version": { + "type": "string", + "description": "Version number associated with the threshold" + } + } + } + }, + "context": { + "type": "string", + "description": "TCA Policy Dummy Context", + "enum": [ + "PROD" + ], + "options": { + "enum_titles": [ + "PROD" + ] + } + }, + "signature": { + "title": "onap.datatypes.monitoring.Dummy_Signature", + "type": "object", + "required": [ + "filter_clause" + ], + "properties": { + "filter_clause": { + "type": "qbldr", + "description": "Filter Clause", + "minLength": 1, + "qschema": { + "filters": [ + { + "type": "string", + "minLength": 1, + "id": "alarmCondition", + "label": "alarmCondition", + "operators": [ + "equals" + ] + } + ] + } + } + } + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/src/test/resources/tosca/new-converter/tca-with-metadata.yaml b/src/test/resources/tosca/new-converter/tca-with-metadata.yaml new file mode 100644 index 000000000..c0d2a86e0 --- /dev/null +++ b/src/test/resources/tosca/new-converter/tca-with-metadata.yaml @@ -0,0 +1,184 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0 +policy_types: + onap.policies.Monitoring: + derived_from: tosca.policies.Root + description: a base policy type for all policies that governs monitoring provisioning + onap.policies.monitoring.cdap.tca.hi.lo.app: + derived_from: onap.policies.Monitoring + version: 1.0.0 + properties: + tca_policy: + type: map + description: TCA Policy JSON + entry_schema: + type: onap.datatypes.monitoring.tca_policy + metadata: + policy_model_type: onap.policies.monitoring.cdap.tca.hi.lo.app + acronym: tca + +data_types: + onap.datatypes.monitoring.metricsPerEventName: + derived_from: tosca.datatypes.Root + properties: + controlLoopSchemaType: + type: string + required: true + description: Specifies Control Loop Schema Type for the event Name e.g. VNF, VM + constraints: + - valid_values: + - VM + - VNF + eventName: + type: string + required: true + description: Event name to which thresholds need to be applied + policyName: + type: string + required: true + description: TCA Policy Scope Name + policyScope: + type: string + required: true + description: TCA Policy Scope + policyVersion: + type: string + required: true + description: TCA Policy Scope Version + thresholds: + type: list + required: true + description: Thresholds associated with eventName + entry_schema: + type: onap.datatypes.monitoring.thresholds + context: + type: string + required: true + description: TCA Policy Dummy Context + metadata: + clamp_possible_values: "Dictionary:Context" + + signature: + type: onap.datatypes.monitoring.Dummy_Signature + description: Signature + required: true + + onap.datatypes.monitoring.Dummy_Signature: + derived_from: tosca.datatypes.Root + properties: + filter_clause: + type: string + description: Filter Clause + required: true + metadata: + clamp_possible_values: "Dictionary:EventDictionary#Operators" + + onap.datatypes.monitoring.tca_policy: + derived_from: tosca.datatypes.Root + properties: + domain: + type: string + required: true + description: Domain name to which TCA needs to be applied + default: measurementsForVfScaling + constraints: + - equal: measurementsForVfScaling + metricsPerEventName: + type: list + required: true + description: Contains eventName and threshold details that need to be applied to given eventName + entry_schema: + type: onap.datatypes.monitoring.metricsPerEventName + onap.datatypes.monitoring.thresholds: + derived_from: tosca.datatypes.Root + properties: + closedLoopControlName: + type: string + required: true + description: Closed Loop Control Name associated with the threshold + closedLoopEventStatus: + type: string + required: true + description: Closed Loop Event Status of the threshold + constraints: + - valid_values: + - ONSET + - ABATED + direction: + type: string + required: true + description: Direction of the threshold + constraints: + - valid_values: + - LESS + - LESS_OR_EQUAL + - GREATER + - GREATER_OR_EQUAL + - EQUAL + fieldPath: + type: string + required: true + description: Json field Path as per CEF message which needs to be analyzed for TCA + constraints: + - valid_values: + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage + - $.event.measurementsForVfScalingFields.meanRequestLatency + - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered + - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached + - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured + - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree + - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed + - $.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value + severity: + type: string + required: true + description: Threshold Event Severity + constraints: + - valid_values: + - CRITICAL + - MAJOR + - MINOR + - WARNING + - NORMAL + thresholdValue: + type: integer + required: true + description: Threshold value for the field Path inside CEF message + version: + type: string + required: true + description: Version number associated with the threshold -- cgit 1.2.3-korg From 9e25792898ae648234239403374db8bb923bc180 Mon Sep 17 00:00:00 2001 From: sebdet Date: Wed, 20 May 2020 18:36:43 +0200 Subject: Create SVG in UI Remove the SVG generation from the backend and put it in the UI. Backend removal code + clean up of test resources Issue-ID: CLAMP-854 Signed-off-by: sebdet Change-Id: Ie9d6cd20f0135b459dbc85901b9a66f65002a85c --- .../java/org/onap/clamp/clds/util/XmlTools.java | 78 ---- .../org/onap/clamp/clds/util/drawing/AwtUtils.java | 93 ---- .../onap/clamp/clds/util/drawing/ClampGraph.java | 48 -- .../clamp/clds/util/drawing/ClampGraphBuilder.java | 107 ----- .../clamp/clds/util/drawing/DocumentBuilder.java | 67 --- .../onap/clamp/clds/util/drawing/ImageBuilder.java | 138 ------ .../clds/util/drawing/InvalidStateException.java | 30 -- .../org/onap/clamp/clds/util/drawing/Painter.java | 105 ----- .../onap/clamp/clds/util/drawing/RectTypes.java | 28 -- .../clamp/clds/util/drawing/SvgLoopGenerator.java | 75 ---- src/main/java/org/onap/clamp/loop/Loop.java | 23 +- .../java/org/onap/clamp/loop/LoopController.java | 11 - .../org/onap/clamp/loop/common/AuditEntity.java | 24 +- .../org/onap/clamp/loop/template/LoopTemplate.java | 28 +- .../clamp/loop/template/LoopTemplatesService.java | 11 - .../resources/clds/camel/rest/clamp-api-v2.xml | 65 --- .../org/onap/clamp/clds/util/XmlToolsTest.java | 87 ---- .../clds/util/drawing/ClampGraphBuilderTest.java | 105 ----- .../clamp/clds/util/drawing/ClampGraphTest.java | 77 ---- .../clds/util/drawing/DocumentBuilderTest.java | 79 ---- .../clds/util/drawing/SvgLoopGeneratorTest.java | 82 ---- .../org/onap/clamp/loop/CsarInstallerItCase.java | 1 - .../org/onap/clamp/loop/DcaeComponentTest.java | 4 +- .../org/onap/clamp/loop/DeployFlowTestItCase.java | 43 +- .../onap/clamp/loop/LoopControllerTestItCase.java | 10 +- .../onap/clamp/loop/LoopLogServiceTestItCase.java | 8 +- .../onap/clamp/loop/LoopRepositoriesItCase.java | 13 +- .../org/onap/clamp/loop/LoopServiceTestItCase.java | 10 +- .../loop/LoopTemplateLoopElementModelTest.java | 9 +- .../clamp/loop/LoopTemplatesServiceItCase.java | 50 +-- .../java/org/onap/clamp/loop/LoopToJsonTest.java | 24 +- .../org/onap/clamp/loop/PolicyComponentTest.java | 4 +- .../resources/clds/templates/bpmn/holmes-img.xml | 315 -------------- .../clds/templates/bpmn/holmes-template.xml | 93 ---- src/test/resources/clds/templates/bpmn/tca-img.xml | 309 ------------- .../resources/clds/templates/bpmn/tca-template.xml | 95 ---- src/test/resources/example/dao/bpmn-prop.json | 128 ------ src/test/resources/example/dao/bpmn-template.xml | 110 ----- src/test/resources/example/dao/image-template.xml | 406 ----------------- .../example/dao/template-doc-content.json | 104 ----- .../example/model-properties/custom/modelBpmn.json | 25 -- .../custom/modelBpmnProperties.json | 248 ----------- .../example/model-properties/holmes/modelBpmn.json | 20 - .../holmes/modelBpmnProperties.json | 122 ------ .../example/model-properties/policy/modelBpmn.json | 17 - .../policy/modelBpmnProperties.json | 482 --------------------- .../example/model-properties/tca/modelBpmn.json | 20 - .../model-properties/tca/modelBpmnProperties.json | 152 ------- .../example/model-properties/tca_new/doc-text.yaml | 170 -------- .../model-properties/tca_new/model-bpmn.json | 21 - .../model-properties/tca_new/model-properties.json | 359 --------------- .../example/model-properties/tca_new/tca-img.xml | 309 ------------- .../model-properties/tca_new/tca-template.xml | 95 ---- 53 files changed, 86 insertions(+), 5051 deletions(-) delete mode 100644 src/main/java/org/onap/clamp/clds/util/XmlTools.java delete mode 100755 src/main/java/org/onap/clamp/clds/util/drawing/AwtUtils.java delete mode 100755 src/main/java/org/onap/clamp/clds/util/drawing/ClampGraph.java delete mode 100755 src/main/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilder.java delete mode 100644 src/main/java/org/onap/clamp/clds/util/drawing/DocumentBuilder.java delete mode 100644 src/main/java/org/onap/clamp/clds/util/drawing/ImageBuilder.java delete mode 100644 src/main/java/org/onap/clamp/clds/util/drawing/InvalidStateException.java delete mode 100755 src/main/java/org/onap/clamp/clds/util/drawing/Painter.java delete mode 100644 src/main/java/org/onap/clamp/clds/util/drawing/RectTypes.java delete mode 100644 src/main/java/org/onap/clamp/clds/util/drawing/SvgLoopGenerator.java delete mode 100644 src/test/java/org/onap/clamp/clds/util/XmlToolsTest.java delete mode 100644 src/test/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilderTest.java delete mode 100644 src/test/java/org/onap/clamp/clds/util/drawing/ClampGraphTest.java delete mode 100644 src/test/java/org/onap/clamp/clds/util/drawing/DocumentBuilderTest.java delete mode 100644 src/test/java/org/onap/clamp/clds/util/drawing/SvgLoopGeneratorTest.java delete mode 100644 src/test/resources/clds/templates/bpmn/holmes-img.xml delete mode 100644 src/test/resources/clds/templates/bpmn/holmes-template.xml delete mode 100644 src/test/resources/clds/templates/bpmn/tca-img.xml delete mode 100644 src/test/resources/clds/templates/bpmn/tca-template.xml delete mode 100644 src/test/resources/example/dao/bpmn-prop.json delete mode 100644 src/test/resources/example/dao/bpmn-template.xml delete mode 100644 src/test/resources/example/dao/image-template.xml delete mode 100644 src/test/resources/example/dao/template-doc-content.json delete mode 100644 src/test/resources/example/model-properties/custom/modelBpmn.json delete mode 100644 src/test/resources/example/model-properties/custom/modelBpmnProperties.json delete mode 100644 src/test/resources/example/model-properties/holmes/modelBpmn.json delete mode 100644 src/test/resources/example/model-properties/holmes/modelBpmnProperties.json delete mode 100644 src/test/resources/example/model-properties/policy/modelBpmn.json delete mode 100644 src/test/resources/example/model-properties/policy/modelBpmnProperties.json delete mode 100644 src/test/resources/example/model-properties/tca/modelBpmn.json delete mode 100644 src/test/resources/example/model-properties/tca/modelBpmnProperties.json delete mode 100644 src/test/resources/example/model-properties/tca_new/doc-text.yaml delete mode 100644 src/test/resources/example/model-properties/tca_new/model-bpmn.json delete mode 100644 src/test/resources/example/model-properties/tca_new/model-properties.json delete mode 100644 src/test/resources/example/model-properties/tca_new/tca-img.xml delete mode 100644 src/test/resources/example/model-properties/tca_new/tca-template.xml (limited to 'src/test/resources/clds') diff --git a/src/main/java/org/onap/clamp/clds/util/XmlTools.java b/src/main/java/org/onap/clamp/clds/util/XmlTools.java deleted file mode 100644 index a7d4ed9fb..000000000 --- a/src/main/java/org/onap/clamp/clds/util/XmlTools.java +++ /dev/null @@ -1,78 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2019 Nokia. 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.util; - -import java.io.StringWriter; -import javax.xml.XMLConstants; -import javax.xml.transform.OutputKeys; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; -import org.apache.batik.anim.dom.SVGDOMImplementation; -import org.apache.batik.dom.GenericDOMImplementation; -import org.apache.batik.util.SVGConstants; -import org.w3c.dom.DOMImplementation; -import org.w3c.dom.Document; - -public class XmlTools { - - /** - * Private constructor to avoid creating instances of util class. - */ - private XmlTools(){ - } - - /** - * Transforms document to XML string. - * - * @param doc XML document - * @return XML string - */ - public static String exportXmlDocumentAsString(Document doc) { - try { - TransformerFactory tf = TransformerFactory.newInstance(); - tf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); - Transformer transformer = tf.newTransformer(); - transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); - StringWriter writer = new StringWriter(); - transformer.transform(new DOMSource(doc), new StreamResult(writer)); - return writer.getBuffer().toString(); - } catch (TransformerException e) { - throw new RuntimeException(e); - } - } - - /** - * Creates empty svg document. - * - * @return Document - */ - public static Document createEmptySvgDocument() { - DOMImplementation domImplementation = GenericDOMImplementation.getDOMImplementation(); - String svgNs = SVGDOMImplementation.SVG_NAMESPACE_URI; - return domImplementation.createDocument(svgNs, SVGConstants.SVG_SVG_TAG, null); - } -} diff --git a/src/main/java/org/onap/clamp/clds/util/drawing/AwtUtils.java b/src/main/java/org/onap/clamp/clds/util/drawing/AwtUtils.java deleted file mode 100755 index a4a5a3847..000000000 --- a/src/main/java/org/onap/clamp/clds/util/drawing/AwtUtils.java +++ /dev/null @@ -1,93 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2019 Nokia. All rights - * reserved. - * ================================================================================ - * Modifications Copyright (c) 2019 Samsung - * ================================================================================ - * 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============================================ - * Modifications copyright (c) 2019 AT&T. - * =================================================================== - * - */ - -package org.onap.clamp.clds.util.drawing; - -import java.awt.Color; -import java.awt.Font; -import java.awt.FontMetrics; -import java.awt.Graphics2D; -import java.awt.Point; -import java.awt.Rectangle; - -public class AwtUtils { - private static final int ARROW_W = 4; - private static final int ARROW_H = 2; - private static final int FONT_SIZE = 12; - private static final int FONT_STYLE = Font.PLAIN; - private static final String FONT_FACE = "SansSerif"; - private static final Color TRANSPARENT = new Color(0.0f, 0.0f, 0.0f, 0.0f); - private static final int TEXT_PADDING = 5; - - private AwtUtils() { - } - - static void rectWithText(Graphics2D g2d, String text, Point point, int width, int height) { - Rectangle rect = new Rectangle(point.x, point.y, width, height); - g2d.draw(rect); - Color oldColor = g2d.getColor(); - g2d.setColor(TRANSPARENT); - g2d.fill(rect); - g2d.setColor(oldColor); - addText(g2d, text, rect); - } - - static void drawArrow(Graphics2D g2d, Point from, Point to, int lineThickness) { - int x2 = to.x - lineThickness; - g2d.drawLine(from.x, from.y, x2 - lineThickness, to.y); - g2d.drawPolygon(new int[] { x2 - ARROW_W, x2 - ARROW_W, x2 }, - new int[] { to.y - ARROW_H, to.y + ARROW_H, to.y }, 3); - g2d.fillPolygon(new int[] { x2 - ARROW_W, x2 - ARROW_W, x2 }, - new int[] { to.y - ARROW_H, to.y + ARROW_H, to.y }, 3); - } - - private static void addText(Graphics2D g2d, String text, Rectangle rect) { - int textBoundingBoxLimit = rect.width - 2 * TEXT_PADDING; - Font font = new Font(FONT_FACE, FONT_STYLE, FONT_SIZE); - font = scaleFontToFit(text, textBoundingBoxLimit, g2d, font); - Font oldFont = g2d.getFont(); - - g2d.setFont(font); - g2d.setColor(Color.BLACK); - FontMetrics fm1 = g2d.getFontMetrics(); - float x1 = rect.x + (float) (rect.width - fm1.stringWidth(text)) / 2; - float y1 = rect.y + (float) (rect.height - fm1.getHeight()) / 2 + fm1.getAscent(); - g2d.drawString(text, x1, y1); - - g2d.setFont(oldFont); - } - - private static Font scaleFontToFit(String text, int width, Graphics2D g2d, Font font) { - float fontSize = font.getSize(); - float stringWidth = g2d.getFontMetrics(font).stringWidth(text); - if (stringWidth <= width) { - return font; - } - fontSize = (width / stringWidth) * fontSize; - return font.deriveFont(fontSize); - } - -} diff --git a/src/main/java/org/onap/clamp/clds/util/drawing/ClampGraph.java b/src/main/java/org/onap/clamp/clds/util/drawing/ClampGraph.java deleted file mode 100755 index 6b97de8e6..000000000 --- a/src/main/java/org/onap/clamp/clds/util/drawing/ClampGraph.java +++ /dev/null @@ -1,48 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2019 Nokia. 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.util.drawing; - -import java.util.Objects; -import org.onap.clamp.clds.util.XmlTools; - -public class ClampGraph { - private final DocumentBuilder documentBuilder; - private String svg; - - ClampGraph(DocumentBuilder documentBuilder) { - this.documentBuilder = documentBuilder; - } - - /** - * Returns svg string. - * - * @return svg string - */ - public String getAsSvg() { - if (Objects.isNull(svg) || svg.isEmpty()) { - svg = XmlTools.exportXmlDocumentAsString(this.documentBuilder.getGroupingDocument()); - } - return svg; - } -} diff --git a/src/main/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilder.java b/src/main/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilder.java deleted file mode 100755 index 6cf342f2c..000000000 --- a/src/main/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilder.java +++ /dev/null @@ -1,107 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2019 Nokia. 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============================================ - * Modifications copyright (c) 2019 AT&T - * =================================================================== - * - */ - -package org.onap.clamp.clds.util.drawing; - -import java.util.HashSet; -import java.util.Set; -import org.onap.clamp.loop.template.LoopElementModel; -import org.onap.clamp.policy.microservice.MicroServicePolicy; -import org.onap.clamp.policy.operational.OperationalPolicy; - -public class ClampGraphBuilder { - private Set policies = new HashSet<>(); - private String collector; - private Set microServices = new HashSet<>(); - private Set loopElementModels = new HashSet<>(); - private final Painter painter; - - public ClampGraphBuilder(Painter painter) { - this.painter = painter; - } - - public ClampGraphBuilder collector(String collector) { - this.collector = collector; - return this; - } - - public ClampGraphBuilder addPolicy(OperationalPolicy policy) { - this.policies.add(policy); - return this; - } - - public ClampGraphBuilder addAllPolicies(Set policies) { - this.policies.addAll(policies); - return this; - } - - public ClampGraphBuilder addMicroService(MicroServicePolicy ms) { - microServices.add(ms); - return this; - } - - public ClampGraphBuilder addAllMicroServices(Set msList) { - microServices.addAll(msList); - return this; - } - - /** - * This method adds all loop element specified in input to the current structure. - * - * @param loopElementModels A set of LoopElementModels - * @return Return the current ClampGraphBuilder - */ - public ClampGraphBuilder addAllLoopElementModels(Set loopElementModels) { - for (LoopElementModel elem : loopElementModels) { - this.addLoopElementModel(elem); - } - return this; - } - - /** - * This method adds one loop element specified in input to the current structure. - * - * @param loopElementModel A LoopElementModels - * @return Return the current ClampGraphBuilder - */ - public ClampGraphBuilder addLoopElementModel(LoopElementModel loopElementModel) { - if (LoopElementModel.MICRO_SERVICE_TYPE.equals(loopElementModel.getLoopElementType())) { - microServices.add(new MicroServicePolicy(loopElementModel.getName(), - loopElementModel.getPolicyModels().first(), false,null,loopElementModel,null,null)); - } else if (LoopElementModel.OPERATIONAL_POLICY_TYPE.equals(loopElementModel.getLoopElementType())) { - policies.add(new OperationalPolicy(loopElementModel.getName(), null, null, - loopElementModel.getPolicyModels().first(), loopElementModel, null, null)); - } - return this; - } - - /** - * Build the SVG. - * - * @return Clamp graph (SVG) - */ - public ClampGraph build() { - return new ClampGraph(painter.doPaint(collector, microServices, policies)); - } -} diff --git a/src/main/java/org/onap/clamp/clds/util/drawing/DocumentBuilder.java b/src/main/java/org/onap/clamp/clds/util/drawing/DocumentBuilder.java deleted file mode 100644 index 7c624be0f..000000000 --- a/src/main/java/org/onap/clamp/clds/util/drawing/DocumentBuilder.java +++ /dev/null @@ -1,67 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2019 Nokia. 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.util.drawing; - -import org.apache.batik.svggen.SVGGraphics2D; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Node; - -public class DocumentBuilder { - private final Document groupingDocument; - private final Document documentFactory; - - static final String DATA_ELEMENT_ID_ATTRIBUTE = "data-element-id"; - static final String DATA_ELEMENT_GROUPING_ATTRIBUTE = "data-grouping-id"; - static final String DATA_FOR_UI_ATTRIBUTE = "data-for-ui"; - - DocumentBuilder(Document groupingDocument, Document documentFactory) { - this.groupingDocument = groupingDocument; - this.documentFactory = documentFactory; - } - - void pushChangestoDocument(SVGGraphics2D g2d, String dataElementId) { - pushChangestoDocument(g2d, dataElementId,null,null); - } - - void pushChangestoDocument(SVGGraphics2D g2d, String dataElementId, String dataGroupingId, String dataForUI) { - Element element = - this.documentFactory.createElementNS(SVGGraphics2D.SVG_NAMESPACE_URI, - SVGGraphics2D.SVG_G_TAG); - element.setAttribute(DATA_ELEMENT_ID_ATTRIBUTE, dataElementId); - if (dataGroupingId != null) { - element.setAttribute(DATA_ELEMENT_GROUPING_ATTRIBUTE, dataGroupingId); - } - if (dataForUI != null) { - element.setAttribute(DATA_FOR_UI_ATTRIBUTE, dataForUI); - } - g2d.getRoot(element); - Node node = this.groupingDocument.importNode(element, true); - this.groupingDocument.getDocumentElement().appendChild(node); - } - - Document getGroupingDocument() { - return groupingDocument; - } -} diff --git a/src/main/java/org/onap/clamp/clds/util/drawing/ImageBuilder.java b/src/main/java/org/onap/clamp/clds/util/drawing/ImageBuilder.java deleted file mode 100644 index 72df90f2b..000000000 --- a/src/main/java/org/onap/clamp/clds/util/drawing/ImageBuilder.java +++ /dev/null @@ -1,138 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2019 Nokia. 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.util.drawing; - -import java.awt.BasicStroke; -import java.awt.Point; -import java.awt.Shape; -import java.awt.Stroke; -import java.awt.geom.Ellipse2D; -import java.util.UUID; - -import org.apache.batik.svggen.SVGGraphics2D; - -public class ImageBuilder { - - public static final int POLICY_LINE_RATIO = 2; - public static final int COLLECTOR_LINE_RATIO = 6; - public static final float MS_LINE_TO_HEIGHT_RATIO = 0.75f; - public static final float ARROW_TO_BASELINE_RATIO = 0.75f; - - private Point currentPoint; - private final int baseLength; - private final int rectHeight; - private final SVGGraphics2D g2d; - private final DocumentBuilder documentBuilder; - - private static final int LINE_THICKNESS = 2; - private static final int CIRCLE_RADIUS = 17; - - ImageBuilder(SVGGraphics2D svgGraphics2D, DocumentBuilder documentBuilder, Point startingPoint, int baseLength, - int rectHeight) { - this.g2d = svgGraphics2D; - this.documentBuilder = documentBuilder; - this.currentPoint = new Point(startingPoint); - this.baseLength = baseLength; - this.rectHeight = rectHeight; - } - - ImageBuilder rectangle(String dataElementId, RectTypes rectType, String boxText, String groupingId, String uiData) { - Point next = new Point(currentPoint.x + baseLength, currentPoint.y); - Point point = coordinatesForRectangle(currentPoint, next); - - handleBasedOnRectType(rectType, boxText, point, baseLength, rectHeight); - - documentBuilder.pushChangestoDocument(g2d, dataElementId, groupingId, uiData); - currentPoint = next; - return this; - } - - ImageBuilder arrow() { - String dataElementId = "Arrow-" + UUID.randomUUID().toString(); - Point to = new Point(currentPoint.x + (int) (baseLength * ARROW_TO_BASELINE_RATIO), currentPoint.y); - AwtUtils.drawArrow(g2d, currentPoint, to, LINE_THICKNESS); - documentBuilder.pushChangestoDocument(g2d, dataElementId); - currentPoint = to; - return this; - } - - ImageBuilder circle(String dataElementId, int lineThickness) { - Shape circleStart = new Ellipse2D.Double(currentPoint.x, ((double) currentPoint.y) - CIRCLE_RADIUS, - 2.0 * CIRCLE_RADIUS, 2.0 * CIRCLE_RADIUS); - - Stroke oldStroke = g2d.getStroke(); - g2d.setStroke(new BasicStroke(lineThickness)); - g2d.draw(circleStart); - g2d.setStroke(oldStroke); - documentBuilder.pushChangestoDocument(g2d, dataElementId); - Point to = new Point(currentPoint.x + 2 * CIRCLE_RADIUS, currentPoint.y); - currentPoint = to; - return this; - } - - DocumentBuilder getDocumentBuilder() { - return documentBuilder; - } - - private void handleBasedOnRectType(RectTypes rectType, String text, Point point, int width, int height) { - AwtUtils.rectWithText(g2d, text, point, width, height); - switch (rectType) { - case COLECTOR: - drawVerticalLineForCollector(point, width, height); - break; - case MICROSERVICE: - drawHorizontalLineForMicroService(point, width, height); - break; - case POLICY: - drawDiagonalLineForPolicy(point, width, height); - break; - default: - } - } - - private void drawVerticalLineForCollector(Point point, int width, int height) { - g2d.drawLine(point.x + width / COLLECTOR_LINE_RATIO, point.y, point.x + width / COLLECTOR_LINE_RATIO, - point.y + height); - } - - private void drawHorizontalLineForMicroService(Point point, int width, int height) { - int pointY = calculateMsHorizontalLineYCoordinate(point, height); - g2d.drawLine(point.x, pointY, point.x + width, pointY); - } - - private void drawDiagonalLineForPolicy(Point point, int width, int height) { - g2d.drawLine(point.x, point.y + height / POLICY_LINE_RATIO, point.x + width / POLICY_LINE_RATIO, point.y); - } - - private int calculateMsHorizontalLineYCoordinate(Point point, int height) { - return (int) (point.y * height * MS_LINE_TO_HEIGHT_RATIO); - } - - private Point coordinatesForRectangle(Point from, Point next) { - int pointX = from.x; - int pointY = from.y - next.y + LINE_THICKNESS / 2; - return new Point(pointX, pointY); - } - -} diff --git a/src/main/java/org/onap/clamp/clds/util/drawing/InvalidStateException.java b/src/main/java/org/onap/clamp/clds/util/drawing/InvalidStateException.java deleted file mode 100644 index 91af9f1a4..000000000 --- a/src/main/java/org/onap/clamp/clds/util/drawing/InvalidStateException.java +++ /dev/null @@ -1,30 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2019 Nokia. 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.util.drawing; - -public class InvalidStateException extends RuntimeException { - public InvalidStateException(String message) { - super(message); - } -} diff --git a/src/main/java/org/onap/clamp/clds/util/drawing/Painter.java b/src/main/java/org/onap/clamp/clds/util/drawing/Painter.java deleted file mode 100755 index ff7d2c215..000000000 --- a/src/main/java/org/onap/clamp/clds/util/drawing/Painter.java +++ /dev/null @@ -1,105 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2019 Nokia. 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============================================ - * Modifications copyright (c) 2019 AT&T - * =================================================================== - * - */ - -package org.onap.clamp.clds.util.drawing; - -import java.awt.BasicStroke; -import java.awt.Color; -import java.awt.Point; -import java.awt.RenderingHints; -import java.util.Set; -import org.apache.batik.svggen.SVGGraphics2D; -import org.onap.clamp.policy.microservice.MicroServicePolicy; -import org.onap.clamp.policy.operational.OperationalPolicy; - -public class Painter { - private final int canvasSize; - private final SVGGraphics2D g2d; - private final DocumentBuilder documentBuilder; - - private static final int DEFAULT_CANVAS_SIZE = 900; - private static final int SLIM_LINE = 2; - private static final int THICK_LINE = 4; - private static final double RECT_RATIO = 3.0 / 2.0; - private static final int CIRCLE_RADIUS = 17; - private static final int MINIMUM_BASE_LENGTH = 120; - - /** - * Constructor to create instance of Painter. - * - * @param svgGraphics2D svg graphics - * @param documentBuilder document builder - */ - public Painter(SVGGraphics2D svgGraphics2D, DocumentBuilder documentBuilder) { - this.g2d = svgGraphics2D; - this.documentBuilder = documentBuilder; - this.canvasSize = DEFAULT_CANVAS_SIZE; - } - - DocumentBuilder doPaint(String collector, Set microServices, Set policies) { - int numOfRectangles = 2 + microServices.size(); - int numOfArrows = numOfRectangles + 1; - int baseLength = (canvasSize - 2 * CIRCLE_RADIUS) / (numOfArrows + numOfRectangles); - if (baseLength < MINIMUM_BASE_LENGTH) { - baseLength = MINIMUM_BASE_LENGTH; - } - int rectHeight = (int) (baseLength / RECT_RATIO); - - adjustGraphics2DProperties(); - - Point origin = new Point(1, rectHeight / 2); - ImageBuilder ib = new ImageBuilder(g2d, documentBuilder, origin, baseLength, rectHeight); - - doTheActualDrawing(collector, microServices, policies, ib); - - return ib.getDocumentBuilder(); - } - - private void doTheActualDrawing(String collector, Set microServices, - Set policies, - ImageBuilder ib) { - ib.circle("start-circle", SLIM_LINE).arrow().rectangle(collector, RectTypes.COLECTOR, collector, null, null); - - for (MicroServicePolicy ms : microServices) { - ib.arrow().rectangle(ms.getName(), - RectTypes.MICROSERVICE, ms.getPolicyModel().getPolicyAcronym(), - ms.getLoopElementModel() != null ? ms.getLoopElementModel().getName() : null, - ms.getLoopElementModel() != null ? ms.getLoopElementModel().getName() : null); - } - for (OperationalPolicy policy : policies) { - ib.arrow().rectangle(policy.getName(), RectTypes.POLICY, policy.getPolicyModel().getPolicyAcronym(), - policy.getLoopElementModel() != null ? policy.getLoopElementModel().getName() : null, - policy.getLoopElementModel() != null ? policy.getLoopElementModel().getName() : null); - } - ib.arrow().circle("stop-circle", THICK_LINE); - } - - private void adjustGraphics2DProperties() { - g2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON); - g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB); - g2d.setStroke(new BasicStroke(SLIM_LINE)); - g2d.setPaint(Color.BLACK); - } - -} diff --git a/src/main/java/org/onap/clamp/clds/util/drawing/RectTypes.java b/src/main/java/org/onap/clamp/clds/util/drawing/RectTypes.java deleted file mode 100644 index e69324325..000000000 --- a/src/main/java/org/onap/clamp/clds/util/drawing/RectTypes.java +++ /dev/null @@ -1,28 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2019 Nokia. 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.util.drawing; - -enum RectTypes { - COLECTOR, MICROSERVICE, POLICY -} \ No newline at end of file diff --git a/src/main/java/org/onap/clamp/clds/util/drawing/SvgLoopGenerator.java b/src/main/java/org/onap/clamp/clds/util/drawing/SvgLoopGenerator.java deleted file mode 100644 index f289d9798..000000000 --- a/src/main/java/org/onap/clamp/clds/util/drawing/SvgLoopGenerator.java +++ /dev/null @@ -1,75 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2019 Nokia. 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============================================ - * Modifications copyright (c) 2019 AT&T - * =================================================================== - * - */ - -package org.onap.clamp.clds.util.drawing; - -import java.util.HashSet; -import java.util.Set; -import org.apache.batik.svggen.SVGGraphics2D; -import org.onap.clamp.clds.util.XmlTools; -import org.onap.clamp.loop.Loop; -import org.onap.clamp.loop.template.LoopElementModel; -import org.onap.clamp.loop.template.LoopTemplate; -import org.onap.clamp.loop.template.LoopTemplateLoopElementModel; -import org.w3c.dom.Document; - -public class SvgLoopGenerator { - /** - * Generate the SVG images from the loop. - * - * @param loop The loop object, so it won't use the loop template - * @return A String containing the SVG - */ - public static String getSvgImage(Loop loop) { - SVGGraphics2D svgGraphics2D = new SVGGraphics2D(XmlTools.createEmptySvgDocument()); - Document document = XmlTools.createEmptySvgDocument(); - DocumentBuilder dp = new DocumentBuilder(document, svgGraphics2D.getDOMFactory()); - Painter painter = new Painter(svgGraphics2D, dp); - ClampGraphBuilder cgp = new ClampGraphBuilder(painter).collector("VES"); - cgp.addAllMicroServices(loop.getMicroServicePolicies()); - ClampGraph cg = cgp.addAllPolicies(loop.getOperationalPolicies()).build(); - return cg.getAsSvg(); - } - - /** - * Generate the SVG images from the loop template. - * - * @param loopTemplate The loop template - * @return A String containing the SVG - */ - public static String getSvgImage(LoopTemplate loopTemplate) { - SVGGraphics2D svgGraphics2D = new SVGGraphics2D(XmlTools.createEmptySvgDocument()); - Document document = XmlTools.createEmptySvgDocument(); - DocumentBuilder dp = new DocumentBuilder(document, svgGraphics2D.getDOMFactory()); - Painter painter = new Painter(svgGraphics2D, dp); - ClampGraphBuilder cgp = new ClampGraphBuilder(painter).collector("VES"); - Set elementModelsSet = new HashSet<>(); - for (LoopTemplateLoopElementModel elementModelLink:loopTemplate.getLoopElementModelsUsed()) { - elementModelsSet.add(elementModelLink.getLoopElementModel()); - } - ClampGraph cg = cgp.addAllLoopElementModels(elementModelsSet).build(); - return cg.getAsSvg(); - } - -} diff --git a/src/main/java/org/onap/clamp/loop/Loop.java b/src/main/java/org/onap/clamp/loop/Loop.java index 081331337..36f74221e 100644 --- a/src/main/java/org/onap/clamp/loop/Loop.java +++ b/src/main/java/org/onap/clamp/loop/Loop.java @@ -51,7 +51,6 @@ import org.hibernate.annotations.Type; import org.hibernate.annotations.TypeDef; import org.hibernate.annotations.TypeDefs; import org.onap.clamp.clds.tosca.update.ToscaConverterWithDictionarySupport; -import org.onap.clamp.clds.util.drawing.SvgLoopGenerator; import org.onap.clamp.dao.model.jsontype.StringJsonUserType; import org.onap.clamp.loop.common.AuditEntity; import org.onap.clamp.loop.components.external.DcaeComponent; @@ -88,9 +87,6 @@ public class Loop extends AuditEntity implements Serializable { @Column(name = "dcae_deployment_status_url") private String dcaeDeploymentStatusUrl; - @Column(columnDefinition = "MEDIUMTEXT", name = "svg_representation") - private String svgRepresentation; - @Expose @Type(type = "json") @Column(columnDefinition = "json", name = "global_properties_json") @@ -145,9 +141,8 @@ public class Loop extends AuditEntity implements Serializable { /** * Constructor. */ - public Loop(String name, String svgRepresentation) { + public Loop(String name) { this.name = name; - this.svgRepresentation = svgRepresentation; this.lastComputedState = LoopState.DESIGN; this.globalPropertiesJson = new JsonObject(); initializeExternalComponents(); @@ -160,7 +155,7 @@ public class Loop extends AuditEntity implements Serializable { * @param loopTemplate The loop template from which a new loop instance must be created */ public Loop(String name, LoopTemplate loopTemplate, ToscaConverterWithDictionarySupport toscaConverter) { - this(name, ""); + this(name); this.setLoopTemplate(loopTemplate); this.setModelService(loopTemplate.getModelService()); loopTemplate.getLoopElementModelsUsed().forEach(element -> { @@ -201,14 +196,6 @@ public class Loop extends AuditEntity implements Serializable { this.dcaeDeploymentStatusUrl = dcaeDeploymentStatusUrl; } - public String getSvgRepresentation() { - return svgRepresentation; - } - - void setSvgRepresentation(String svgRepresentation) { - this.svgRepresentation = svgRepresentation; - } - public LoopState getLastComputedState() { return lastComputedState; } @@ -251,37 +238,31 @@ public class Loop extends AuditEntity implements Serializable { /** * This method adds an operational policy to the loop. - * It re-computes the Svg as well. * * @param opPolicy the operationalPolicy to add */ public void addOperationalPolicy(OperationalPolicy opPolicy) { operationalPolicies.add(opPolicy); opPolicy.setLoop(this); - this.setSvgRepresentation(SvgLoopGenerator.getSvgImage(this)); } /** * This method removes an operational policy to the loop. - * It re-computes the Svg as well. * * @param opPolicy the operationalPolicy to add */ public void removeOperationalPolicy(OperationalPolicy opPolicy) { operationalPolicies.remove(opPolicy); - this.setSvgRepresentation(SvgLoopGenerator.getSvgImage(this)); } /** * This method adds an micro service policy to the loop. - * It re-computes the Svg as well. * * @param microServicePolicy the micro service to add */ public void addMicroServicePolicy(MicroServicePolicy microServicePolicy) { microServicePolicies.add(microServicePolicy); microServicePolicy.getUsedByLoops().add(this); - this.setSvgRepresentation(SvgLoopGenerator.getSvgImage(this)); } public void addLog(LoopLog log) { diff --git a/src/main/java/org/onap/clamp/loop/LoopController.java b/src/main/java/org/onap/clamp/loop/LoopController.java index fad93bc7d..603726f56 100644 --- a/src/main/java/org/onap/clamp/loop/LoopController.java +++ b/src/main/java/org/onap/clamp/loop/LoopController.java @@ -168,17 +168,6 @@ public class LoopController { return loopService.updateMicroservicePolicy(loopName, newMicroservicePolicy); } - /** - * Get the SVG representation of the loop. - * - * @param loopName The loop name - * @return The SVG representation - */ - public String getSvgRepresentation(String loopName) { - Loop loop = loopService.getLoop(loopName); - return loop != null ? loop.getSvgRepresentation() : null; - } - /** * Refresh the Operational Policy Json representation of the loop. * diff --git a/src/main/java/org/onap/clamp/loop/common/AuditEntity.java b/src/main/java/org/onap/clamp/loop/common/AuditEntity.java index bf9d10d74..7ce12ec6b 100644 --- a/src/main/java/org/onap/clamp/loop/common/AuditEntity.java +++ b/src/main/java/org/onap/clamp/loop/common/AuditEntity.java @@ -24,14 +24,11 @@ package org.onap.clamp.loop.common; import com.google.gson.annotations.Expose; - import java.time.Instant; import java.time.temporal.ChronoUnit; - import javax.persistence.Column; import javax.persistence.EntityListeners; import javax.persistence.MappedSuperclass; - import org.springframework.data.annotation.CreatedBy; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedBy; @@ -40,7 +37,6 @@ import org.springframework.data.jpa.domain.support.AuditingEntityListener; /** * This class is the parent of the hibernate entities requiring to be audited. - * */ @MappedSuperclass @EntityListeners(AuditingEntityListener.class) @@ -72,20 +68,21 @@ public class AuditEntity { /** * createdDate setter. - * + * * @param createdDate The created Date object */ public void setCreatedDate(Instant createdDate) { if (createdDate != null) { this.createdDate = createdDate.truncatedTo(ChronoUnit.SECONDS); - } else { + } + else { this.createdDate = null; } } /** * updatedDate getter. - * + * * @return the updatedDate */ public Instant getUpdatedDate() { @@ -94,20 +91,21 @@ public class AuditEntity { /** * updatedDate setter. - * + * * @param updatedDate updatedDate to set */ public void setUpdatedDate(Instant updatedDate) { if (updatedDate != null) { this.updatedDate = updatedDate.truncatedTo(ChronoUnit.SECONDS); - } else { + } + else { this.updatedDate = null; } } /** * updatedBy getter. - * + * * @return the updatedBy */ public String getUpdatedBy() { @@ -116,7 +114,7 @@ public class AuditEntity { /** * updatedBy setter. - * + * * @param updatedBy the updatedBy */ public void setUpdatedBy(String updatedBy) { @@ -125,7 +123,7 @@ public class AuditEntity { /** * createdBy getter. - * + * * @return the createdBy */ public String getCreatedBy() { @@ -134,7 +132,7 @@ public class AuditEntity { /** * createdBy setter. - * + * * @param createdBy the createdBy to set */ public void setCreatedBy(String createdBy) { diff --git a/src/main/java/org/onap/clamp/loop/template/LoopTemplate.java b/src/main/java/org/onap/clamp/loop/template/LoopTemplate.java index a7bbd9dd3..6f896f3d4 100644 --- a/src/main/java/org/onap/clamp/loop/template/LoopTemplate.java +++ b/src/main/java/org/onap/clamp/loop/template/LoopTemplate.java @@ -39,7 +39,6 @@ import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.Table; import org.hibernate.annotations.SortNatural; -import org.onap.clamp.clds.util.drawing.SvgLoopGenerator; import org.onap.clamp.loop.common.AuditEntity; import org.onap.clamp.loop.service.Service; @@ -69,9 +68,6 @@ public class LoopTemplate extends AuditEntity implements Serializable { @Column(columnDefinition = "MEDIUMTEXT", name = "blueprint_yaml") private String blueprint; - @Column(columnDefinition = "MEDIUMTEXT", name = "svg_representation") - private String svgRepresentation; - @Expose @OneToMany( cascade = CascadeType.ALL, @@ -163,24 +159,6 @@ public class LoopTemplate extends AuditEntity implements Serializable { } } - /** - * svgRepresentation getter. - * - * @return the svgRepresentation - */ - public String getSvgRepresentation() { - return svgRepresentation; - } - - /** - * svgRepresentation setter. - * - * @param svgRepresentation the svgRepresentation to set - */ - public void setSvgRepresentation(String svgRepresentation) { - this.svgRepresentation = svgRepresentation; - } - /** * loopElementModelsUsed getter. * @@ -260,7 +238,6 @@ public class LoopTemplate extends AuditEntity implements Serializable { new LoopTemplateLoopElementModel(this, loopElementModel, listPosition); this.loopElementModelsUsed.add(jointEntry); loopElementModel.getUsedByLoopTemplates().add(jointEntry); - this.setSvgRepresentation(SvgLoopGenerator.getSvgImage(this)); } /** @@ -303,16 +280,13 @@ public class LoopTemplate extends AuditEntity implements Serializable { * @param name The loop template name id * @param blueprint The blueprint containing all microservices (legacy * case) - * @param svgRepresentation The svg representation of that loop template * @param maxInstancesAllowed The maximum number of instances that can be * created from that template * @param service The service associated to that loop template */ - public LoopTemplate(String name, String blueprint, String svgRepresentation, - Integer maxInstancesAllowed, Service service) { + public LoopTemplate(String name, String blueprint, Integer maxInstancesAllowed, Service service) { this.name = name; this.setBlueprint(blueprint); - this.svgRepresentation = svgRepresentation; this.maximumInstancesAllowed = maxInstancesAllowed; this.modelService = service; diff --git a/src/main/java/org/onap/clamp/loop/template/LoopTemplatesService.java b/src/main/java/org/onap/clamp/loop/template/LoopTemplatesService.java index 09bc80f89..29382137e 100644 --- a/src/main/java/org/onap/clamp/loop/template/LoopTemplatesService.java +++ b/src/main/java/org/onap/clamp/loop/template/LoopTemplatesService.java @@ -49,17 +49,6 @@ public class LoopTemplatesService { return loopTemplatesRepository.save(loopTemplate); } - - /** - * Get the SVG representation of the loopTemplate. - * - * @param templateName The loopTemplate name - * @return The SVG representation in xml - */ - public String getSvgRepresentation(String templateName) { - return loopTemplatesRepository.findById(templateName).orElse(new LoopTemplate()).getSvgRepresentation(); - } - public List getLoopTemplateNames() { return loopTemplatesRepository.getAllLoopTemplateNames(); } diff --git a/src/main/resources/clds/camel/rest/clamp-api-v2.xml b/src/main/resources/clds/camel/rest/clamp-api-v2.xml index 86a64f665..99e92f5be 100644 --- a/src/main/resources/clds/camel/rest/clamp-api-v2.xml +++ b/src/main/resources/clds/camel/rest/clamp-api-v2.xml @@ -66,39 +66,6 @@ - - - - - - - - - - java.lang.Exception - - true - - - - - - 500 - - - GET SVG For loop FAILED - - - - - - - - - - - - - - - java.lang.Exception - - true - - - - - 500 - - - GET SVG for Template FAILED - - - - - collectorCaptor; - - @Captor - private ArgumentCaptor> microServicesCaptor; - - @Captor - private ArgumentCaptor> policyCaptor; - - /** - * Do a quick test of the graphBuilder chain. - */ - @Test - public void clampGraphBuilderCompleteChainTest() { - String collector = "VES"; - MicroServicePolicy ms1 = new MicroServicePolicy("ms1", new PolicyModel("org.onap.ms1", "", "1.0.0"), false, - null, null, null, null); - MicroServicePolicy ms2 = new MicroServicePolicy("ms2", new PolicyModel("org.onap.ms2", "", "1.0.0"), false, - null, null, null, null); - - OperationalPolicy opPolicy = new OperationalPolicy("OperationalPolicy", new JsonObject(), new JsonObject(), - new PolicyModel("org.onap.opolicy", null, "1.0.0", "opolicy1"), null, null, null); - final Set opPolicies = Set.of(opPolicy); - final Set microServices = Set.of(ms1, ms2); - - ClampGraphBuilder clampGraphBuilder = new ClampGraphBuilder(mockPainter); - clampGraphBuilder.collector(collector).addMicroService(ms1).addMicroService(ms2).addPolicy(opPolicy).build(); - - verify(mockPainter, times(1)).doPaint(collectorCaptor.capture(), microServicesCaptor.capture(), - policyCaptor.capture()); - - Assert.assertEquals(collector, collectorCaptor.getValue()); - Assert.assertEquals(microServices, microServicesCaptor.getValue()); - Assert.assertEquals(opPolicies, policyCaptor.getValue()); - } - - /** - * Do a quick test of the graphBuilder chain when no policy is given. - */ - @Test - public void clampGraphBuilderNoPolicyGivenTest() { - String collector = "VES"; - MicroServicePolicy ms1 = - new MicroServicePolicy("ms1", new PolicyModel("org.onap.ms1", "", "1.0.0"), false, null, null, null, - null); - MicroServicePolicy ms2 = - new MicroServicePolicy("ms2", new PolicyModel("org.onap.ms2", "", "1.0.0"), false, null, null, null, - null); - - ClampGraphBuilder clampGraphBuilder = new ClampGraphBuilder(mockPainter); - assertThat(clampGraphBuilder.collector(collector).addMicroService(ms1).addMicroService(ms2).build()) - .isNotNull(); - - } -} diff --git a/src/test/java/org/onap/clamp/clds/util/drawing/ClampGraphTest.java b/src/test/java/org/onap/clamp/clds/util/drawing/ClampGraphTest.java deleted file mode 100644 index 4ae0a4908..000000000 --- a/src/test/java/org/onap/clamp/clds/util/drawing/ClampGraphTest.java +++ /dev/null @@ -1,77 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2019 Nokia. 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.util.drawing; - -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoMoreInteractions; -import static org.mockito.Mockito.when; - -import java.io.IOException; -import javax.xml.parsers.ParserConfigurationException; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; -import org.onap.clamp.clds.util.ResourceFileUtil; -import org.onap.clamp.clds.util.XmlToolsTest; -import org.w3c.dom.Document; -import org.xml.sax.SAXException; - -@RunWith(MockitoJUnitRunner.class) -public class ClampGraphTest { - @Mock - private DocumentBuilder mockDocumentBuilder; - - @Test - public void getAsSvgTest() throws IOException, ParserConfigurationException, SAXException { - String expected = ResourceFileUtil.getResourceAsString("clds/util/file.xml"); - Document document = XmlToolsTest.parseStringToXmlDocument(expected); - - when(mockDocumentBuilder.getGroupingDocument()).thenReturn(document); - - String actual = new ClampGraph(mockDocumentBuilder).getAsSvg(); - Assert.assertEquals(expected.trim(), actual.trim()); - } - - @Test - public void getAsSvgLazyTest() throws IOException, ParserConfigurationException, SAXException { - String expected = ResourceFileUtil.getResourceAsString("clds/util/file.xml"); - Document document = XmlToolsTest.parseStringToXmlDocument(expected); - - when(mockDocumentBuilder.getGroupingDocument()).thenReturn(document); - ClampGraph cg = new ClampGraph(mockDocumentBuilder); - - String actualFirst = cg.getAsSvg(); - verify(mockDocumentBuilder, times(1)).getGroupingDocument(); - - String actualSecond = cg.getAsSvg(); - verifyNoMoreInteractions(mockDocumentBuilder); - - Assert.assertEquals(expected.trim(), actualFirst.trim()); - Assert.assertEquals(expected.trim(), actualSecond.trim()); - - } -} diff --git a/src/test/java/org/onap/clamp/clds/util/drawing/DocumentBuilderTest.java b/src/test/java/org/onap/clamp/clds/util/drawing/DocumentBuilderTest.java deleted file mode 100644 index 13f8e3ad6..000000000 --- a/src/test/java/org/onap/clamp/clds/util/drawing/DocumentBuilderTest.java +++ /dev/null @@ -1,79 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2019 Nokia. 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.util.drawing; - -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.when; - -import java.io.IOException; - -import javax.xml.parsers.ParserConfigurationException; - -import org.apache.batik.svggen.SVGGraphics2D; -import org.apache.batik.util.SVGConstants; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; -import org.onap.clamp.clds.util.ResourceFileUtil; -import org.onap.clamp.clds.util.XmlToolsTest; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.xml.sax.SAXException; - -@RunWith(MockitoJUnitRunner.class) -public class DocumentBuilderTest { - @Mock - private SVGGraphics2D mockG2d; - - @Test - public void pushChangestoDocumentTest() throws IOException, ParserConfigurationException, SAXException { - String dataElementId = "someId"; - String newNodeTag = "tagged"; - String newNodeText = "Sample text"; - String xml = ResourceFileUtil.getResourceAsString("clds/util/file.xml"); - Document document = XmlToolsTest.parseStringToXmlDocument(xml); - Node newNode = document.createElement(newNodeTag); - newNode.appendChild(document.createTextNode(newNodeText)); - - when(mockG2d.getRoot(any(Element.class))).then(a -> a.getArgument(0, Element.class).appendChild(newNode)); - - DocumentBuilder db = new DocumentBuilder(document, document); - db.pushChangestoDocument(mockG2d, dataElementId); - Document actualDocument = db.getGroupingDocument(); - - Node addedActualNode = actualDocument.getDocumentElement().getLastChild(); - String actualDataElementId = addedActualNode.getAttributes() - .getNamedItem(DocumentBuilder.DATA_ELEMENT_ID_ATTRIBUTE).getTextContent(); - - Assert.assertEquals(dataElementId, actualDataElementId); - Assert.assertEquals(SVGConstants.SVG_G_TAG, addedActualNode.getNodeName()); - - Node addedActualNodeChild = addedActualNode.getLastChild(); - Assert.assertEquals(newNodeTag, addedActualNodeChild.getNodeName()); - Assert.assertEquals(newNodeText, addedActualNodeChild.getTextContent()); - } -} \ No newline at end of file diff --git a/src/test/java/org/onap/clamp/clds/util/drawing/SvgLoopGeneratorTest.java b/src/test/java/org/onap/clamp/clds/util/drawing/SvgLoopGeneratorTest.java deleted file mode 100644 index 0150af025..000000000 --- a/src/test/java/org/onap/clamp/clds/util/drawing/SvgLoopGeneratorTest.java +++ /dev/null @@ -1,82 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.util.drawing; - -import static org.assertj.core.api.Assertions.assertThat; -import com.google.gson.JsonObject; -import java.io.IOException; -import javax.xml.parsers.ParserConfigurationException; -import org.junit.Test; -import org.onap.clamp.loop.Loop; -import org.onap.clamp.loop.template.LoopElementModel; -import org.onap.clamp.loop.template.PolicyModel; -import org.onap.clamp.policy.microservice.MicroServicePolicy; -import org.onap.clamp.policy.operational.OperationalPolicy; -import org.xml.sax.SAXException; - -public class SvgLoopGeneratorTest { - private Loop getLoop() { - - LoopElementModel msModel = new LoopElementModel("testMs", LoopElementModel.MICRO_SERVICE_TYPE, ""); - MicroServicePolicy ms1 = - new MicroServicePolicy("ms1", new PolicyModel("org.onap.ms1", "", "1.0.0", "short.ms1"), - false,null,msModel,null,null); - MicroServicePolicy ms2 = - new MicroServicePolicy("ms2", new PolicyModel("org.onap.ms2", "", "1.0.0", "short.ms2"), - false, null,msModel,null,null); - LoopElementModel opModel = new LoopElementModel("testOp", LoopElementModel.OPERATIONAL_POLICY_TYPE, ""); - OperationalPolicy opPolicy = new OperationalPolicy("OperationalPolicy", new JsonObject(),new JsonObject(), - new PolicyModel("org.onap.opolicy", null, "1.0.0", "short.OperationalPolicy"), opModel, null, null); - Loop loop = new Loop(); - loop.addMicroServicePolicy(ms1); - loop.addMicroServicePolicy(ms2); - loop.addOperationalPolicy(opPolicy); - return loop; - } - - /** - * Test a Svg rendering with all objects. - * - * @throws IOException In case of isssues - * @throws ParserConfigurationException In case of isssues - * @throws SAXException In case of isssues - */ - @Test - public void getAsSvgTest() throws IOException, ParserConfigurationException, SAXException { - String xml = SvgLoopGenerator.getSvgImage(getLoop()); - assertThat(xml).contains("data-element-id=\"VES\""); - assertThat(xml).contains(">VES<"); - assertThat(xml).contains("data-element-id=\"ms1\""); - assertThat(xml).contains("data-element-id=\"ms2\""); - assertThat(xml).contains("data-grouping-id=\"testMs\""); - assertThat(xml).contains("data-grouping-id=\"testOp\""); - assertThat(xml).contains("data-for-ui=\"testMs\""); - assertThat(xml).contains("data-for-ui=\"testOp\""); - assertThat(xml).contains(">short.ms1<"); - assertThat(xml).contains(">short.ms2<"); - assertThat(xml).contains("data-element-id=\"OperationalPolicy\""); - assertThat(xml).contains(">short.OperationalPolicy<"); - - } -} diff --git a/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java b/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java index d14975238..7e1488604 100644 --- a/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java +++ b/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java @@ -219,7 +219,6 @@ public class CsarInstallerItCase { // set LoopTemplate loopTemplate = loopTemplatesRepo.findById(LoopTemplate.generateLoopTemplateName(generatedName, "1.0", RESOURCE_INSTANCE_NAME_RESOURCE1, "tca.yaml")).get(); - assertThat(loopTemplate.getSvgRepresentation()).startsWith(""); + Loop loopTest = new Loop("ControlLoopTest"); loopTest.setGlobalPropertiesJson( new Gson().fromJson( "{\"dcaeDeployParameters\":{\"uniqueBlueprintParameters\": {\"policy_id\": \"name\"}}}", @@ -60,7 +60,7 @@ public class DcaeComponentTest { microServicePolicy.setConfigurationsJson(new Gson().fromJson("{\"param1\":\"value1\"}", JsonObject.class)); loopTest.addMicroServicePolicy(microServicePolicy); - LoopTemplate loopTemplate = new LoopTemplate("test", "yaml", "svg", 1, null); + LoopTemplate loopTemplate = new LoopTemplate("test", "yaml", 1, null); loopTemplate.setDcaeBlueprintId("UUID-blueprint"); loopTest.setLoopTemplate(loopTemplate); diff --git a/src/test/java/org/onap/clamp/loop/DeployFlowTestItCase.java b/src/test/java/org/onap/clamp/loop/DeployFlowTestItCase.java index 97fe337de..07e7c4d7c 100644 --- a/src/test/java/org/onap/clamp/loop/DeployFlowTestItCase.java +++ b/src/test/java/org/onap/clamp/loop/DeployFlowTestItCase.java @@ -66,12 +66,12 @@ public class DeployFlowTestItCase { * This method tests a deployment a single blueprint. * * @throws JsonSyntaxException In case of issues - * @throws IOException In case of issues + * @throws IOException In case of issues */ @Test @Transactional public void deployWithSingleBlueprintTest() throws JsonSyntaxException, IOException { - Loop loopTest = createLoop("ControlLoopTest", "", "yamlcontent", + Loop loopTest = createLoop("ControlLoopTest", "yamlcontent", "{\"dcaeDeployParameters\":{\"uniqueBlueprintParameters\": {\"policy_id\": \"name\"}}}", "UUID-blueprint"); LoopTemplate template = new LoopTemplate(); @@ -97,12 +97,12 @@ public class DeployFlowTestItCase { * This method tests the deployment of multiple separated blueprints. * * @throws JsonSyntaxException In case of issues - * @throws IOException In case of issues + * @throws IOException In case of issues */ @Test @Transactional public void deployWithMultipleBlueprintTest() throws JsonSyntaxException, IOException { - Loop loopTest2 = createLoop("ControlLoopTest2", "", "yamlcontent", "{\"dcaeDeployParameters\": {" + Loop loopTest2 = createLoop("ControlLoopTest2", "yamlcontent", "{\"dcaeDeployParameters\": {" + "\"microService1\": {\"location_id\": \"\", \"policy_id\": \"TCA_ResourceInstanceName1_tca\"}," + "\"microService2\": {\"location_id\": \"\", \"policy_id\": \"TCA_ResourceInstanceName2_tca\"}" + "}}", "UUID-blueprint"); @@ -135,12 +135,12 @@ public class DeployFlowTestItCase { * This method tests the undeployment of a single blueprint. * * @throws JsonSyntaxException In case of issues - * @throws IOException In case of issues + * @throws IOException In case of issues */ @Test @Transactional public void undeployWithSingleBlueprintTest() throws JsonSyntaxException, IOException { - Loop loopTest = createLoop("ControlLoopTest", "", "yamlcontent", "{\"testname\":\"testvalue\"}", + Loop loopTest = createLoop("ControlLoopTest", "yamlcontent", "{\"testname\":\"testvalue\"}", "UUID-blueprint"); LoopTemplate template = new LoopTemplate(); template.setName("templateName"); @@ -166,12 +166,12 @@ public class DeployFlowTestItCase { * This method tests the undeployment of multiple separated blueprints. * * @throws JsonSyntaxException In case of issues - * @throws IOException In case of issues + * @throws IOException In case of issues */ @Test @Transactional public void undeployWithMultipleBlueprintTest() throws JsonSyntaxException, IOException { - Loop loopTest2 = createLoop("ControlLoopTest2", "", "yamlcontent", "{\"dcaeDeployParameters\": {" + Loop loopTest2 = createLoop("ControlLoopTest2", "yamlcontent", "{\"dcaeDeployParameters\": {" + "\"microService1\": {\"location_id\": \"\", \"policy_id\": \"TCA_ResourceInstanceName1_tca\"}," + "\"microService2\": {\"location_id\": \"\", \"policy_id\": \"TCA_ResourceInstanceName2_tca\"}" + "}}", "UUID-blueprint"); @@ -205,12 +205,12 @@ public class DeployFlowTestItCase { * This method tests the DCAE get status for a single blueprint. * * @throws JsonSyntaxException In case of issues - * @throws IOException In case of issues + * @throws IOException In case of issues */ @Test @Transactional public void getStatusWithSingleBlueprintTest() throws JsonSyntaxException, IOException { - Loop loopTest = createLoop("ControlLoopTest", "", "yamlcontent", "{\"testname\":\"testvalue\"}", + Loop loopTest = createLoop("ControlLoopTest", "yamlcontent", "{\"testname\":\"testvalue\"}", "UUID-blueprint"); LoopTemplate template = new LoopTemplate(); template.setName("templateName"); @@ -241,12 +241,12 @@ public class DeployFlowTestItCase { * This method tests the dcae get status for multiple blueprints. * * @throws JsonSyntaxException In case of issues - * @throws IOException In case of issues + * @throws IOException In case of issues */ @Test @Transactional public void getStatusWithMultipleBlueprintTest() throws JsonSyntaxException, IOException { - Loop loopTest = createLoop("ControlLoopTest", "", "yamlcontent", "{\"testname\":\"testvalue\"}", + Loop loopTest = createLoop("ControlLoopTest", "yamlcontent", "{\"testname\":\"testvalue\"}", "UUID-blueprint"); LoopTemplate template = new LoopTemplate(); template.setName("templateName"); @@ -271,9 +271,9 @@ public class DeployFlowTestItCase { camelContext.createProducerTemplate().send("direct:update-dcae-status-for-loop", myCamelExchange); assertThat(loopTest.getComponent("DCAE_configPolicyTest").getState().getStateName()) - .isEqualTo("BLUEPRINT_DEPLOYED"); + .isEqualTo("BLUEPRINT_DEPLOYED"); assertThat(loopTest.getComponent("DCAE_configPolicyTest2").getState().getStateName()) - .isEqualTo("BLUEPRINT_DEPLOYED"); + .isEqualTo("BLUEPRINT_DEPLOYED"); Loop loopAfterTest = loopService.getLoop("ControlLoopTest"); assertThat(loopAfterTest.getComponents().size()).isEqualTo(3); @@ -283,18 +283,18 @@ public class DeployFlowTestItCase { assertThat(loopTest.getComponent("DCAE_configPolicyTest2")).isNotNull(); } - private Loop createLoop(String name, String svgRepresentation, String blueprint, String globalPropertiesJson, - String dcaeBlueprintId) throws JsonSyntaxException, IOException { - Loop loop = new Loop(name, svgRepresentation); + private Loop createLoop(String name, String blueprint, String globalPropertiesJson, + String dcaeBlueprintId) throws JsonSyntaxException, IOException { + Loop loop = new Loop(name); loop.setGlobalPropertiesJson(new Gson().fromJson(globalPropertiesJson, JsonObject.class)); loop.setLastComputedState(LoopState.DESIGN); return loop; } private MicroServicePolicy getMicroServicePolicy(String name, String modelType, String jsonRepresentation, - String policyTosca, String jsonProperties, boolean shared) { + String policyTosca, String jsonProperties, boolean shared) { - PolicyModel policyModel = new PolicyModel(modelType, policyTosca,"1.0.0"); + PolicyModel policyModel = new PolicyModel(modelType, policyTosca, "1.0.0"); policyModelsService.saveOrUpdatePolicyModel(policyModel); MicroServicePolicy microService = new MicroServicePolicy(name, policyModel, shared, @@ -305,8 +305,9 @@ public class DeployFlowTestItCase { } private MicroServicePolicy getMicroServicePolicy(String name, String modelType, String jsonRepresentation, - String policyTosca, String jsonProperties, boolean shared, String deploymengId, - String deploymentStatusUrl) { + String policyTosca, String jsonProperties, boolean shared, + String deploymengId, + String deploymentStatusUrl) { MicroServicePolicy microService = getMicroServicePolicy(name, modelType, jsonRepresentation, policyTosca, jsonProperties, shared); diff --git a/src/test/java/org/onap/clamp/loop/LoopControllerTestItCase.java b/src/test/java/org/onap/clamp/loop/LoopControllerTestItCase.java index 26db6b013..f170bc6df 100644 --- a/src/test/java/org/onap/clamp/loop/LoopControllerTestItCase.java +++ b/src/test/java/org/onap/clamp/loop/LoopControllerTestItCase.java @@ -86,7 +86,7 @@ public class LoopControllerTestItCase { } private Loop createTestLoop(String loopName, String loopBlueprint, String loopSvg) { - return new Loop(loopName, loopSvg); + return new Loop(loopName); } @Test @@ -148,14 +148,6 @@ public class LoopControllerTestItCase { assertThat(microServicePolicyService.isExisting("policyName")).isTrue(); } - @Test - @Transactional - public void testGetSvgRepresentation() { - saveTestLoopToDb(); - String svgRepresentation = loopController.getSvgRepresentation(EXAMPLE_LOOP_NAME); - assertThat(svgRepresentation).isEqualTo("representation"); - } - @Test @Transactional public void testAddAndRemoveOperationalPolicies() throws IOException { diff --git a/src/test/java/org/onap/clamp/loop/LoopLogServiceTestItCase.java b/src/test/java/org/onap/clamp/loop/LoopLogServiceTestItCase.java index 15b9cb43a..ddab7b659 100644 --- a/src/test/java/org/onap/clamp/loop/LoopLogServiceTestItCase.java +++ b/src/test/java/org/onap/clamp/loop/LoopLogServiceTestItCase.java @@ -25,11 +25,8 @@ package org.onap.clamp.loop; import static org.assertj.core.api.Assertions.assertThat; import com.google.gson.JsonObject; - import java.util.Set; - import javax.transaction.Transactional; - import org.junit.Test; import org.junit.runner.RunWith; import org.onap.clamp.clds.Application; @@ -50,7 +47,6 @@ public class LoopLogServiceTestItCase { private static final String CLAMP_COMPONENT = "CLAMP"; private static final String SAMPLE_LOG_MESSAGE = "Sample log"; private static final String BLUEPRINT = "blueprint"; - private static final String SVG_REPRESENTATION = "representation"; @Autowired LoopService loopService; @@ -62,7 +58,7 @@ public class LoopLogServiceTestItCase { LoopLogService loopLogService; private void saveTestLoopToDb() { - Loop testLoop = new Loop(EXAMPLE_LOOP_NAME, SVG_REPRESENTATION); + Loop testLoop = new Loop(EXAMPLE_LOOP_NAME); testLoop.setGlobalPropertiesJson(JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class)); loopService.saveOrUpdateLoop(testLoop); } @@ -88,7 +84,7 @@ public class LoopLogServiceTestItCase { log.setLogComponent(CLAMP_COMPONENT); log.setLogType(LogType.INFO); log.setMessage(SAMPLE_LOG_MESSAGE); - Loop testLoop = new Loop(EXAMPLE_LOOP_NAME, SVG_REPRESENTATION); + Loop testLoop = new Loop(EXAMPLE_LOOP_NAME); log.setLoop(testLoop); assertThat(log.getMessage()).isEqualTo(SAMPLE_LOG_MESSAGE); assertThat(log.getLogType()).isEqualTo(LogType.INFO); diff --git a/src/test/java/org/onap/clamp/loop/LoopRepositoriesItCase.java b/src/test/java/org/onap/clamp/loop/LoopRepositoriesItCase.java index 164625fef..9815575cc 100644 --- a/src/test/java/org/onap/clamp/loop/LoopRepositoriesItCase.java +++ b/src/test/java/org/onap/clamp/loop/LoopRepositoriesItCase.java @@ -106,9 +106,9 @@ public class LoopRepositoriesItCase { return new PolicyModel(policyType, policyModelTosca, version, policyAcronym); } - private LoopTemplate getLoopTemplates(String name, String blueprint, String svgRepresentation, String createdBy, + private LoopTemplate getLoopTemplates(String name, String blueprint, String createdBy, Integer maxInstancesAllowed) { - LoopTemplate template = new LoopTemplate(name, blueprint, svgRepresentation, maxInstancesAllowed, null); + LoopTemplate template = new LoopTemplate(name, blueprint, maxInstancesAllowed, null); template.addLoopElementModel(getLoopElementModel("yaml", "microService1", "org.onap.policy.drools", createdBy, getPolicyModel("org.onap.policy.drools", "yaml", "1.0.0", "Drools"))); template.addLoopElementModel(getLoopElementModel("yaml", "oppolicy1", "org.onap.policy.drools.legacy", @@ -117,16 +117,15 @@ public class LoopRepositoriesItCase { return template; } - private Loop getLoop(String name, String svgRepresentation, String blueprint, String globalPropertiesJson, + private Loop getLoop(String name, String blueprint, String globalPropertiesJson, String dcaeId, String dcaeUrl, String dcaeBlueprintId) { Loop loop = new Loop(); loop.setName(name); - loop.setSvgRepresentation(svgRepresentation); loop.setGlobalPropertiesJson(new Gson().fromJson(globalPropertiesJson, JsonObject.class)); loop.setLastComputedState(LoopState.DESIGN); loop.setDcaeDeploymentId(dcaeId); loop.setDcaeDeploymentStatusUrl(dcaeUrl); - loop.setLoopTemplate(getLoopTemplates("templateName", "yaml", "svg", "toto", 1)); + loop.setLoopTemplate(getLoopTemplates("templateName", "yaml", "toto", 1)); return loop; } @@ -149,7 +148,7 @@ public class LoopRepositoriesItCase { @Transactional public void crudTest() { // Setup - Loop loopTest = getLoop("ControlLoopTest", "", "yamlcontent", "{\"testname\":\"testvalue\"}", + Loop loopTest = getLoop("ControlLoopTest", "yamlcontent", "{\"testname\":\"testvalue\"}", "123456789", "https://dcaetest.org", "UUID-blueprint"); OperationalPolicy opPolicy = this.getOperationalPolicy("{\"type\":\"GUARD\"}", "GuardOpPolicyTest", getPolicyModel("org.onap.policy.drools.legacy", "yaml", "1.0.0", "DroolsLegacy")); @@ -217,7 +216,7 @@ public class LoopRepositoriesItCase { // Attempt an update ((LoopLog) loopInDbRetrieved.getLoopLogs().toArray()[0]).setLogInstant(Instant.now()); - loopInDbRetrieved.setSvgRepresentation(""); + loopInDbRetrieved.setLastComputedState(LoopState.RUNNING); Loop loopInDbRetrievedUpdated = loopRepository.saveAndFlush(loopInDbRetrieved); // Loop loopInDbRetrievedUpdated = // loopRepository.findById(loopTest.getName()).get(); diff --git a/src/test/java/org/onap/clamp/loop/LoopServiceTestItCase.java b/src/test/java/org/onap/clamp/loop/LoopServiceTestItCase.java index 5449ada1a..15cf59f38 100644 --- a/src/test/java/org/onap/clamp/loop/LoopServiceTestItCase.java +++ b/src/test/java/org/onap/clamp/loop/LoopServiceTestItCase.java @@ -78,8 +78,7 @@ public class LoopServiceTestItCase { public void shouldCreateEmptyLoop() { // given String loopBlueprint = "blueprint"; - String loopSvg = "representation"; - Loop testLoop = createTestLoop(EXAMPLE_LOOP_NAME, loopBlueprint, loopSvg); + Loop testLoop = createTestLoop(EXAMPLE_LOOP_NAME, loopBlueprint); testLoop.setGlobalPropertiesJson(JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class)); testLoop.setLastComputedState(LoopState.DESIGN); @@ -90,7 +89,6 @@ public class LoopServiceTestItCase { assertThat(actualLoop).isNotNull(); assertThat(actualLoop).isEqualTo(loopsRepository.findById(actualLoop.getName()).get()); assertThat(actualLoop.getName()).isEqualTo(EXAMPLE_LOOP_NAME); - assertThat(actualLoop.getSvgRepresentation()).isEqualTo(loopSvg); assertThat(actualLoop.getGlobalPropertiesJson().getAsJsonPrimitive("testName").getAsString()) .isEqualTo("testValue"); } @@ -183,7 +181,7 @@ public class LoopServiceTestItCase { } private void saveTestLoopToDb() { - Loop testLoop = createTestLoop(EXAMPLE_LOOP_NAME, "blueprint", "representation"); + Loop testLoop = createTestLoop(EXAMPLE_LOOP_NAME, "blueprint"); testLoop.setGlobalPropertiesJson(JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class)); LoopTemplate template = new LoopTemplate(); template.setName("testTemplate"); @@ -376,7 +374,7 @@ public class LoopServiceTestItCase { assertThat(microServicePolicyService.isExisting("policyName")).isTrue(); } - private Loop createTestLoop(String loopName, String loopBlueprint, String loopSvg) { - return new Loop(loopName, loopSvg); + private Loop createTestLoop(String loopName, String loopBlueprint) { + return new Loop(loopName); } } \ No newline at end of file diff --git a/src/test/java/org/onap/clamp/loop/LoopTemplateLoopElementModelTest.java b/src/test/java/org/onap/clamp/loop/LoopTemplateLoopElementModelTest.java index e5b64c99c..70ff9b118 100644 --- a/src/test/java/org/onap/clamp/loop/LoopTemplateLoopElementModelTest.java +++ b/src/test/java/org/onap/clamp/loop/LoopTemplateLoopElementModelTest.java @@ -37,8 +37,8 @@ import org.onap.clamp.loop.template.PolicyModel; public class LoopTemplateLoopElementModelTest { private LoopElementModel loopElementModel = getLoopElementModel("yaml", "microService1", - getPolicyModel("org.onap.policy.drools", "yaml", "1.0.0", "Drools", "type1")); - private LoopTemplate loopTemplate = getLoopTemplate("templateName", "yaml", "svg", 1); + getPolicyModel("org.onap.policy.drools", "yaml", "1.0.0", "Drools", "type1")); + private LoopTemplate loopTemplate = getLoopTemplate("templateName", "yaml", 1); private LoopElementModel getLoopElementModel(String yaml, String name, PolicyModel policyModel) { LoopElementModel model = new LoopElementModel(); @@ -54,9 +54,8 @@ public class LoopTemplateLoopElementModelTest { return new PolicyModel(policyType, policyModelTosca, version, policyAcronym); } - private LoopTemplate getLoopTemplate(String name, String blueprint, String svgRepresentation, - Integer maxInstancesAllowed) { - LoopTemplate template = new LoopTemplate(name, blueprint, svgRepresentation, maxInstancesAllowed, null); + private LoopTemplate getLoopTemplate(String name, String blueprint, Integer maxInstancesAllowed) { + LoopTemplate template = new LoopTemplate(name, blueprint, maxInstancesAllowed, null); template.addLoopElementModel(loopElementModel); return template; } diff --git a/src/test/java/org/onap/clamp/loop/LoopTemplatesServiceItCase.java b/src/test/java/org/onap/clamp/loop/LoopTemplatesServiceItCase.java index cabc778b8..b8b1144f6 100644 --- a/src/test/java/org/onap/clamp/loop/LoopTemplatesServiceItCase.java +++ b/src/test/java/org/onap/clamp/loop/LoopTemplatesServiceItCase.java @@ -55,7 +55,7 @@ public class LoopTemplatesServiceItCase { private static final String VERSION = "1.0.0"; private LoopElementModel getLoopElementModel(String yaml, String name, String loopElementType, - String createdBy, PolicyModel policyModel) { + String createdBy, PolicyModel policyModel) { LoopElementModel model = new LoopElementModel(name, loopElementType, yaml); model.setBlueprint(""); model.setDcaeBlueprintId(""); @@ -64,16 +64,15 @@ public class LoopTemplatesServiceItCase { } private PolicyModel getPolicyModel(String policyType, String policyModelTosca, String version, - String policyAcronym, String createdBy) { + String policyAcronym, String createdBy) { return new PolicyModel(policyType, policyModelTosca, version, policyAcronym); } - private LoopTemplate getLoopTemplate(String name, String blueprint, String svgRepresentation, - String createdBy, Integer maxInstancesAllowed) { + private LoopTemplate getLoopTemplate(String name, String blueprint, String createdBy, Integer maxInstancesAllowed) { LoopTemplate template = - new LoopTemplate(name, blueprint, svgRepresentation, maxInstancesAllowed, null); + new LoopTemplate(name, blueprint, maxInstancesAllowed, null); template.addLoopElementModel(getLoopElementModel("yaml", "microService1", "MicroService", - createdBy, getPolicyModel(POLICY_MODEL_TYPE_1, "yaml", VERSION, "MS1", createdBy))); + createdBy, getPolicyModel(POLICY_MODEL_TYPE_1, "yaml", VERSION, "MS1", createdBy))); template.setAllowedLoopType(LoopType.OPEN); return template; } @@ -81,9 +80,9 @@ public class LoopTemplatesServiceItCase { @Test @Transactional public void shouldSaveOrUpdateLoopTemplate() { - LoopTemplate loopTemplate = getLoopTemplate("TemplateName", null, "svg", "xyz", -1); + LoopTemplate loopTemplate = getLoopTemplate("TemplateName", null, "xyz", -1); LoopTemplate actualLoopTemplate = - loopTemplatesService.saveOrUpdateLoopTemplate(loopTemplate); + loopTemplatesService.saveOrUpdateLoopTemplate(loopTemplate); assertNotNull(actualLoopTemplate); assertThat(loopTemplate.getName()).isEqualTo("TemplateName"); @@ -92,8 +91,8 @@ public class LoopTemplatesServiceItCase { @Test @Transactional - public void shouldReturnAllLoopemplates() { - LoopTemplate loopTemplate = getLoopTemplate("TemplateName", null, "svg", "xyz", -1); + public void shouldReturnAllLoopTemplates() { + LoopTemplate loopTemplate = getLoopTemplate("TemplateName", null, "xyz", -1); loopTemplatesService.saveOrUpdateLoopTemplate(loopTemplate); List loopTemplateList = loopTemplatesService.getAllLoopTemplates(); @@ -102,8 +101,8 @@ public class LoopTemplatesServiceItCase { @Test @Transactional - public void shouldReturnLoopemplateNames() { - LoopTemplate loopTemplate = getLoopTemplate("TemplateName", null, "svg", "xyz", -1); + public void shouldReturnLoopTemplateNames() { + LoopTemplate loopTemplate = getLoopTemplate("TemplateName", null, "xyz", -1); loopTemplatesService.saveOrUpdateLoopTemplate(loopTemplate); List loopTemplateNames = loopTemplatesService.getLoopTemplateNames(); @@ -113,8 +112,8 @@ public class LoopTemplatesServiceItCase { @Test @Transactional - public void shouldReturnLoopemplate() { - LoopTemplate loopTemplate = getLoopTemplate("TemplateName", null, "svg", "xyz", -1); + public void shouldReturnLoopTemplate() { + LoopTemplate loopTemplate = getLoopTemplate("TemplateName", null, "xyz", -1); loopTemplatesService.saveOrUpdateLoopTemplate(loopTemplate); LoopTemplate actualLoopTemplate = loopTemplatesService.getLoopTemplate("TemplateName"); @@ -122,33 +121,22 @@ public class LoopTemplatesServiceItCase { assertThat(loopTemplate).isEqualTo(actualLoopTemplate); assertThat(loopTemplate.getName()).isEqualTo(actualLoopTemplate.getName()); assertThat(loopTemplate.getMaximumInstancesAllowed()) - .isEqualTo(actualLoopTemplate.getMaximumInstancesAllowed()); + .isEqualTo(actualLoopTemplate.getMaximumInstancesAllowed()); SortedSet loopElementModelsUsed = - loopTemplate.getLoopElementModelsUsed(); + loopTemplate.getLoopElementModelsUsed(); LoopTemplateLoopElementModel loopTemplateLoopElementModel = loopElementModelsUsed.first(); assertThat(loopTemplateLoopElementModel.getLoopElementModel().getName()) - .isEqualTo("microService1"); + .isEqualTo("microService1"); assertThat(loopTemplateLoopElementModel.getLoopTemplate().getName()) - .isEqualTo("TemplateName"); + .isEqualTo("TemplateName"); assertNull(actualLoopTemplate.getBlueprint()); assertNull(actualLoopTemplate.getModelService()); } @Test @Transactional - public void shouldReturnLoopemplateSvg() { - LoopTemplate loopTemplate = getLoopTemplate("TemplateName", null, "svg", "xyz", -1); - loopTemplatesService.saveOrUpdateLoopTemplate(loopTemplate); - String svgRepresentation = loopTemplatesService.getSvgRepresentation("TemplateName"); - - assertNotNull(svgRepresentation); - assertThat(svgRepresentation).isEqualTo(loopTemplate.getSvgRepresentation()); - } - - @Test - @Transactional - public void shouldDeleteLoopemplate() { - LoopTemplate loopTemplate = getLoopTemplate("TemplateName", null, "svg", "xyz", -1); + public void shouldDeleteLoopTemplate() { + LoopTemplate loopTemplate = getLoopTemplate("TemplateName", null, "xyz", -1); loopTemplatesService.saveOrUpdateLoopTemplate(loopTemplate); loopTemplatesService.deleteLoopTemplate("TemplateName"); LoopTemplate actualLoopTemplate = loopTemplatesService.getLoopTemplate("TemplateName"); diff --git a/src/test/java/org/onap/clamp/loop/LoopToJsonTest.java b/src/test/java/org/onap/clamp/loop/LoopToJsonTest.java index 6c7836e50..6827bf5f4 100644 --- a/src/test/java/org/onap/clamp/loop/LoopToJsonTest.java +++ b/src/test/java/org/onap/clamp/loop/LoopToJsonTest.java @@ -27,7 +27,6 @@ package org.onap.clamp.loop; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.assertNotNull; - import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonObject; @@ -37,7 +36,6 @@ import java.util.Random; import org.junit.Test; import org.onap.clamp.clds.util.JsonUtils; import org.onap.clamp.clds.util.ResourceFileUtil; -import org.onap.clamp.loop.components.external.PolicyComponent; import org.onap.clamp.loop.log.LogType; import org.onap.clamp.loop.log.LoopLog; import org.onap.clamp.loop.service.Service; @@ -46,7 +44,6 @@ import org.onap.clamp.loop.template.LoopTemplate; import org.onap.clamp.loop.template.PolicyModel; import org.onap.clamp.policy.microservice.MicroServicePolicy; import org.onap.clamp.policy.operational.OperationalPolicy; -import org.skyscreamer.jsonassert.JSONAssert; public class LoopToJsonTest { @@ -54,13 +51,13 @@ public class LoopToJsonTest { private OperationalPolicy getOperationalPolicy(String configJson, String name) { return new OperationalPolicy(name, null, gson.fromJson(configJson, JsonObject.class), - getPolicyModel("org.onap.policy.drools.legacy", "yaml", "1.0.0", "Drools", "type1"), null,null,null); + getPolicyModel("org.onap.policy.drools.legacy", "yaml", "1.0.0", "Drools", "type1"), null, null, null); } - private Loop getLoop(String name, String svgRepresentation, String blueprint, String globalPropertiesJson, + private Loop getLoop(String name, String blueprint, String globalPropertiesJson, String dcaeId, String dcaeUrl, String dcaeBlueprintId) throws JsonSyntaxException, IOException { - Loop loop = new Loop(name, svgRepresentation); + Loop loop = new Loop(name); loop.setGlobalPropertiesJson(new Gson().fromJson(globalPropertiesJson, JsonObject.class)); loop.setLastComputedState(LoopState.DESIGN); loop.setDcaeDeploymentId(dcaeId); @@ -91,9 +88,8 @@ public class LoopToJsonTest { return new PolicyModel(policyType, policyModelTosca, version, policyAcronym); } - private LoopTemplate getLoopTemplate(String name, String blueprint, String svgRepresentation, - Integer maxInstancesAllowed) { - LoopTemplate template = new LoopTemplate(name, blueprint, svgRepresentation, maxInstancesAllowed, null); + private LoopTemplate getLoopTemplate(String name, String blueprint, Integer maxInstancesAllowed) { + LoopTemplate template = new LoopTemplate(name, blueprint, maxInstancesAllowed, null); template.addLoopElementModel(getLoopElementModel("yaml", "microService1", getPolicyModel("org.onap.policy.drools", "yaml", "1.0.0", "Drools", "type1"))); return template; @@ -107,11 +103,12 @@ public class LoopToJsonTest { /** * This tests a GSON encode/decode. + * * @throws IOException In case of failure */ @Test public void loopGsonTest() throws IOException { - Loop loopTest = getLoop("ControlLoopTest", "", "yamlcontent", "{\"testname\":\"testvalue\"}", + Loop loopTest = getLoop("ControlLoopTest", "yamlcontent", "{\"testname\":\"testvalue\"}", "123456789", "https://dcaetest.org", "UUID-blueprint"); OperationalPolicy opPolicy = this.getOperationalPolicy( ResourceFileUtil.getResourceAsString("tosca/operational-policy-properties.json"), "GuardOpPolicyTest"); @@ -122,7 +119,7 @@ public class LoopToJsonTest { loopTest.addMicroServicePolicy(microServicePolicy); LoopLog loopLog = getLoopLog(LogType.INFO, "test message", loopTest); loopTest.addLog(loopLog); - LoopTemplate loopTemplate = getLoopTemplate("templateName", "yaml", "svg", 1); + LoopTemplate loopTemplate = getLoopTemplate("templateName", "yaml", 1); loopTest.setLoopTemplate(loopTemplate); String jsonSerialized = JsonUtils.GSON_JPA_MODEL.toJson(loopTest); @@ -136,8 +133,7 @@ public class LoopToJsonTest { .isEqualToComparingFieldByField(loopTest.getComponent("DCAE").getState()); assertThat(loopTestDeserialized.getComponent("POLICY").getState()).isEqualToComparingOnlyGivenFields( loopTest.getComponent("POLICY").getState(), "stateName", "description"); - // svg and blueprint not exposed so wont be deserialized - assertThat(loopTestDeserialized.getSvgRepresentation()).isEqualTo(null); + // blueprint not exposed so wont be deserialized assertThat(loopTestDeserialized.getOperationalPolicies()).containsExactly(opPolicy); assertThat(loopTestDeserialized.getMicroServicePolicies()).containsExactly(microServicePolicy); @@ -156,7 +152,7 @@ public class LoopToJsonTest { */ @Test public void loopServiceTest() throws IOException { - Loop loopTest2 = getLoop("ControlLoopTest", "", "yamlcontent", "{\"testname\":\"testvalue\"}", + Loop loopTest2 = getLoop("ControlLoopTest", "yamlcontent", "{\"testname\":\"testvalue\"}", "123456789", "https://dcaetest.org", "UUID-blueprint"); JsonObject jsonModel = new GsonBuilder().create() diff --git a/src/test/java/org/onap/clamp/loop/PolicyComponentTest.java b/src/test/java/org/onap/clamp/loop/PolicyComponentTest.java index 6449a8966..02135933e 100644 --- a/src/test/java/org/onap/clamp/loop/PolicyComponentTest.java +++ b/src/test/java/org/onap/clamp/loop/PolicyComponentTest.java @@ -256,7 +256,7 @@ public class PolicyComponentTest { */ @Test public void createPoliciesPayloadPdpGroupTest() throws IOException { - Loop loopTest = new Loop("ControlLoopTest", ""); + Loop loopTest = new Loop("ControlLoopTest"); PolicyModel policyModel1 = new PolicyModel("onap.policies.monitoring.test", null, "1.0.0"); MicroServicePolicy microServicePolicy = new MicroServicePolicy("configPolicyTest", policyModel1, true, @@ -285,7 +285,7 @@ public class PolicyComponentTest { loopTest.addOperationalPolicy(opLegacyPolicy); - LoopTemplate loopTemplate = new LoopTemplate("test", "yaml", "svg", 1, null); + LoopTemplate loopTemplate = new LoopTemplate("test", "yaml", 1, null); loopTemplate.setDcaeBlueprintId("UUID-blueprint"); loopTest.setLoopTemplate(loopTemplate); diff --git a/src/test/resources/clds/templates/bpmn/holmes-img.xml b/src/test/resources/clds/templates/bpmn/holmes-img.xml deleted file mode 100644 index f84b6a10e..000000000 --- a/src/test/resources/clds/templates/bpmn/holmes-img.xml +++ /dev/null @@ -1,315 +0,0 @@ - -\n -\n -\n - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - H - - - Holmes - - - - - - - - - - - - - - V - - - E - - - S - - - VesCollector - - - - - - - - - - - - - Policy - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/test/resources/clds/templates/bpmn/holmes-template.xml b/src/test/resources/clds/templates/bpmn/holmes-template.xml deleted file mode 100644 index 0ea1587ce..000000000 --- a/src/test/resources/clds/templates/bpmn/holmes-template.xml +++ /dev/null @@ -1,93 +0,0 @@ - - - - - SequenceFlow_1c9hzec - - - SequenceFlow_1ig3gix - SequenceFlow_0zwbn2r - - - SequenceFlow_1c9hzec - SequenceFlow_1ig3gix - - - SequenceFlow_0zwbn2r - SequenceFlow_0ox6r95 - - - SequenceFlow_0ox6r95 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/test/resources/clds/templates/bpmn/tca-img.xml b/src/test/resources/clds/templates/bpmn/tca-img.xml deleted file mode 100644 index a2ec5af23..000000000 --- a/src/test/resources/clds/templates/bpmn/tca-img.xml +++ /dev/null @@ -1,309 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - V - - - E - - - S - - - VesCollector - - - - - - - - - - - - - TCA - - - - - - - - - - - - - Policy - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/test/resources/clds/templates/bpmn/tca-template.xml b/src/test/resources/clds/templates/bpmn/tca-template.xml deleted file mode 100644 index cc942ef9d..000000000 --- a/src/test/resources/clds/templates/bpmn/tca-template.xml +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - SequenceFlow_1ahk7jg - - - SequenceFlow_1ahk7jg - SequenceFlow_18ahat1 - - - SequenceFlow_18ahat1 - SequenceFlow_1mo9gxb - - - SequenceFlow_1mo9gxb - SequenceFlow_1dgtrrq - - - SequenceFlow_1dgtrrq - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/test/resources/example/dao/bpmn-prop.json b/src/test/resources/example/dao/bpmn-prop.json deleted file mode 100644 index a38d58c3b..000000000 --- a/src/test/resources/example/dao/bpmn-prop.json +++ /dev/null @@ -1,128 +0,0 @@ -{ - "Holmes_1m8n1s9": [ - { - "name": "correlationalLogic", - "value": "uktukk" - } - ], - "TCA_11n5nl9": { - "group1": [ - { - "name": "tname", - "value": "group1" - }, - { - "name": "tuuid", - "value": "f734f031-10aa-t8fb-330f-04dde2886325" - }, - { - "name": "tcaPolId", - "value": "policy1" - }, - { - "name": "eventName", - "value": "vFirewallBroadcastPackets" - }, - { - "name": "controlLoopSchemaType", - "value": "VNF" - }, - { - "serviceConfigurations": [ - [ - "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value", - "LESS_OR_EQUAL", - "123", - "ABATED" - ], - [ - "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value", - "GREATER_OR_EQUAL", - "123", - "ONSET" - ] - ] - } - ] - }, - "global": - [ - { - "name": "service", - "value": - [ - "0f983e18-4603-4bb4-a98c-e29691fb16a1" - ] - }, - - { - "name": "vf", - "value": - [ - "6c7aaec2-59eb-41d9-8681-b7f976ab668d" - ] - }, - - { - "name": "actionSet", - "value": - [ - "vnfRecipe" - ] - }, - - { - "name": "location", - "value": - [ - "SNDGCA64" - ] - } - ], - "Policy_19c1hms": { - "policy1": [ - { - "name": "pname", - "value": "policy1" - }, - { - "name": "pid", - "value": "0" - }, - { - "name": "timeout", - "value": "345" - }, - { - "policyConfigurations": [ - [ - { - "name": "maxRetries", - "value": [ - "3" - ] - }, - { - "name": "retryTimeLimit", - "value": [ - "180" - ] - }, - { - "name": "_id", - "value": [ - "JmAZRQx" - ] - }, - { - "name": "parentPolicy", - "value": [ - "" - ] - } - ] - ] - } - ] - } -} diff --git a/src/test/resources/example/dao/bpmn-template.xml b/src/test/resources/example/dao/bpmn-template.xml deleted file mode 100644 index 12671ac92..000000000 --- a/src/test/resources/example/dao/bpmn-template.xml +++ /dev/null @@ -1,110 +0,0 @@ - - - - - SequenceFlow_0mshiwd - - - SequenceFlow_0mshiwd - SequenceFlow_0yenh9m - - - SequenceFlow_0yenh9m - SequenceFlow_1gq21be - - - SequenceFlow_1gq21be - SequenceFlow_14phr7v - - - SequenceFlow_14phr7v - SequenceFlow_1q2yngv - - - SequenceFlow_1q2yngv - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/test/resources/example/dao/image-template.xml b/src/test/resources/example/dao/image-template.xml deleted file mode 100644 index fe0af0671..000000000 --- a/src/test/resources/example/dao/image-template.xml +++ /dev/null @@ -1,406 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - V - - - E - - - S - - - VesCollector - - - - - - - - - - - - - H - - - Holmes - - - - - - - - - - - - - TCA - - - - - - - - - - - - - Policy - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/test/resources/example/dao/template-doc-content.json b/src/test/resources/example/dao/template-doc-content.json deleted file mode 100644 index 96f96756d..000000000 --- a/src/test/resources/example/dao/template-doc-content.json +++ /dev/null @@ -1,104 +0,0 @@ -{"global":[{"name":"service","value":["tosca_definitions_version: cloudify_dsl_1_3 -imports: -- http://www.getcloudify.org/spec/cloudify/3.4/types.yaml -- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/docker/2.2.0/node-type.yaml -- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml -- http://onap.org:8081/repository/solutioning01-mte2-raw/type_files/dmaap/dmaap_mr.yaml -inputs: - location_id: - type: string - service_id: - type: string - policy_id: - type: string -node_templates: - policy_0: - type: dcae.nodes.policy - properties: - policy_id: - get_input: policy_id - cdap_host_host: - type: dcae.nodes.StreamingAnalytics.SelectedCDAPInfrastructure - properties: - location_id: - get_input: location_id - scn_override: cdap_broker.solutioning-central.dcae.onap.org - interfaces: - cloudify.interfaces.lifecycle: { - } - tca_tca: - type: dcae.nodes.MicroService.cdap - properties: - app_config: - appDescription: DCAE Analytics Threshold Crossing Alert Application - appName: dcae-tca - tcaSubscriberOutputStreamName: TCASubscriberOutputStream - tcaVESAlertsTableName: TCAVESAlertsTable - tcaVESAlertsTableTTLSeconds: '1728000' - tcaVESMessageStatusTableName: TCAVESMessageStatusTable - tcaVESMessageStatusTableTTLSeconds: '86400' - thresholdCalculatorFlowletInstances: '2' - app_preferences: - publisherContentType: application/json - publisherHostName: mrlocal-mtnjftle01.onap.org - publisherHostPort: '3905' - publisherMaxBatchSize: '10' - publisherMaxRecoveryQueueSize: '100000' - publisherPollingInterval: '20000' - publisherProtocol: https - publisherTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESPub - publisherUserName: test@tca.af.dcae.onap.org - publisherUserPassword: password - subscriberConsumerGroup: OpenDCAE-c12 - subscriberConsumerId: c12 - subscriberContentType: application/json - subscriberHostName: mrlocal-mtnjftle01.onap.org - subscriberHostPort: '3905' - subscriberMessageLimit: '-1' - subscriberPollingInterval: '20000' - subscriberProtocol: https - subscriberTimeoutMS: '-1' - subscriberTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESSub - subscriberUserName: test@tca.af.dcae.onap.org - subscriberUserPassword: password - tca_policy: null - artifact_name: dcae-analytics-tca - artifact_version: 1.0.0 - connections: - streams_publishes: [ - ] - streams_subscribes: [ - ] - jar_url: http://somejar - location_id: - get_input: location_id - namespace: cdap_tca_hi_lo - programs: - - program_id: TCAVESCollectorFlow - program_type: flows - - program_id: TCADMaaPMRSubscriberWorker - program_type: workers - - program_id: TCADMaaPMRPublisherWorker - program_type: workers - service_component_type: cdap_app_tca - service_id: - get_input: service_id - streamname: TCASubscriberOutputStream - relationships: - - target: topic0 - type: dcae.relationships.subscribe_to_events - - target: topic1 - type: dcae.relationships.publish_events - - target: cdap_host_host - type: dcae.relationships.component_contained_in - - target: policy_0 - type: dcae.relationships.depends_on - topic0: - type: dcae.nodes.Topic - properties: - topic_name: '' - topic1: - type: dcae.nodes.Topic - properties: - topic_name: '' - "]}]} \ No newline at end of file diff --git a/src/test/resources/example/model-properties/custom/modelBpmn.json b/src/test/resources/example/model-properties/custom/modelBpmn.json deleted file mode 100644 index c8efff877..000000000 --- a/src/test/resources/example/model-properties/custom/modelBpmn.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "policy": - [ - { - "id": "Policy_", - "from": "StartEvent_1" - } - ], - - "tca": - [ - { - "id": "TCA_", - "from": "" - } - ], - - "customType": - [ - { - "id": "CustomType_", - "from": "" - } - ] -} \ No newline at end of file diff --git a/src/test/resources/example/model-properties/custom/modelBpmnProperties.json b/src/test/resources/example/model-properties/custom/modelBpmnProperties.json deleted file mode 100644 index 740edeeab..000000000 --- a/src/test/resources/example/model-properties/custom/modelBpmnProperties.json +++ /dev/null @@ -1,248 +0,0 @@ -{ - "global": - [ - { - "name": "service", - "value": - [ - "0f983e18-4603-4bb4-a98c-e29691fb16a1" - ] - }, - - { - "name": "vf", - "value": - [ - "6c7aaec2-59eb-41d9-8681-b7f976ab668d" - ] - }, - - { - "name": "actionSet", - "value": - [ - "vnfRecipe" - ] - }, - - { - "name": "location", - "value": - [ - "SNDGCA64" - ] - } - ], - - "Policy_": - { - "Policy1": - [ - { - "name": "pname", - "value": "Policy1" - }, - - { - "name": "pid", - "value": "1" - }, - - { - "name": "timeout", - "value": "500" - }, - - { - "policyConfigurations": - [ - [ - { - "name": "recipe", - "value": - [ - "restart" - ] - }, - - { - "name": "maxRetries", - "value": - [ - "3" - ] - }, - - { - "name": "retryTimeLimit", - "value": - [ - "180" - ] - }, - - { - "name": "_id", - "value": - [ - "n9bQ4t6" - ] - }, - - { - "name": "parentPolicy", - "value": - [ - "" - ] - }, - { - "name": "targetResourceId", - "value": - [ - "resource-id" - ] - } - ], - - [ - { - "name": "recipe", - "value": - [ - "rebuild" - ] - }, - - { - "name": "maxRetries", - "value": - [ - "3" - ] - }, - - { - "name": "retryTimeLimit", - "value": - [ - "180" - ] - }, - - { - "name": "_id", - "value": - [ - "ItE5xKT" - ] - }, - - { - "name": "parentPolicy", - "value": - [ - "n9bQ4t6" - ] - }, - - { - "name": "parentPolicyConditions", - "value": - [ - "Failure_Retries", - "Failure_Timeout", - "Failure_Exception", - "Failure" - ] - }, - { - "name": "targetResourceId", - "value": - [ - "resource-id" - ] - } - ] - ] - } - ] - }, - - "TCA_": - { - "Narra": - [ - { - "name": "tname", - "value": "Narra" - }, - - { - "name": "tuuid", - "value": "886be8da-14fe-tca1-d04b-d13b55d58df9" - }, - - { - "name": "tnfc", - "value": "ENBE" - }, - - { - "name": "tcaEnab", - "value": "on" - }, - - { - "name": "tcaPol", - "value": "Policy1" - }, - - { - "name": "tcaPolId", - "value": "1" - }, - - { - "name": "tcaInt", - "value": "2" - }, - - { - "name": "tcaSev", - "value": "Warning" - }, - - { - "name": "tcaVio", - "value": "3" - }, - - { - "serviceConfigurations": - [ - [ - "PMRRCCONNESTABFAILCELLLATENCY", - "LESS", - "4", - "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABFAILCELLLATENCY')].Value" - ], - - [ - "PMRAATTCBRA", - "GREATER", - "30", - "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRAATTCBRA')].Value" - ] - ] - } - ] - }, - - "CustomType_": [ - { - "name": "test", - "value": "This is a test" - } - ] -} \ No newline at end of file diff --git a/src/test/resources/example/model-properties/holmes/modelBpmn.json b/src/test/resources/example/model-properties/holmes/modelBpmn.json deleted file mode 100644 index db8e54dd3..000000000 --- a/src/test/resources/example/model-properties/holmes/modelBpmn.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "vesCollector": [ - { - "id": "VesCollector_0orydnh", - "from": "StartEvent_1" - } - ], - "holmes": [ - { - "id": "Holmes_0i4n2mm", - "from": "VesCollector_0orydnh" - } - ], - "policy": [ - { - "id": "Policy_0honxgv", - "from": "Holmes_0i4n2mm" - } - ] -} diff --git a/src/test/resources/example/model-properties/holmes/modelBpmnProperties.json b/src/test/resources/example/model-properties/holmes/modelBpmnProperties.json deleted file mode 100644 index 6ac97ec85..000000000 --- a/src/test/resources/example/model-properties/holmes/modelBpmnProperties.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "Holmes_0i4n2mm": [ - { - "name": "correlationalLogic", - "value": "blabla" - }, - { - "name": "configPolicyName", - "value": "configPolicy1" - } - ], - "Policy_0honxgv": { - "policy1": [ - { - "name": "pname", - "value": "policy1" - }, - { - "name": "pid", - "value": "0" - }, - { - "name": "timeout", - "value": "345" - }, - { - "policyConfigurations": [ - [ - { - "name": "maxRetries", - "value": [ - "3" - ] - }, - { - "name": "retryTimeLimit", - "value": [ - "180" - ] - }, - { - "name": "_id", - "value": [ - "dGLuNqg" - ] - }, - { - "name": "parentPolicy", - "value": [ - "" - ] - }, - { - "name": "targetResourceId", - "value": [ - "resourceid" - ] - } - ] - ] - } - ] - }, - "global": [ - { - "name": "actionSet", - "value": [ - "vnfRecipe" - ] - }, - { - "name": "service", - "value": [ - "4cc5b45a-1f63-4194-8100-cd8e14248c92" - ] - }, - { - "name": "vf", - "value": [ - "f5213e3a-9191-4362-93b5-b67f8d770e44" - ] - }, - { - "name": "location", - "value": [ - "SNDGCA64", - "ALPRGAED", - "LSLEILAA", - "MDTWNJC1" - ] - }, - { - "name": "deployParameters", - "value": { - "input1": "value1", - "input2": "value2" - } - } - ], - "shared": { - "byService": { - "": { - "vf": { - "": "" - }, - "location": { - "": "" - }, - "alarmCondition": { - "": "" - } - } - }, - "byVf": { - "": { - "vfc": { - "": "" - } - } - } - } -} diff --git a/src/test/resources/example/model-properties/policy/modelBpmn.json b/src/test/resources/example/model-properties/policy/modelBpmn.json deleted file mode 100644 index de643a69a..000000000 --- a/src/test/resources/example/model-properties/policy/modelBpmn.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "policy": - [ - { - "id": "Policy_", - "from": "StartEvent_1" - } - ], - - "tca": - [ - { - "id": "TCA_", - "from": "" - } - ] -} \ No newline at end of file diff --git a/src/test/resources/example/model-properties/policy/modelBpmnProperties.json b/src/test/resources/example/model-properties/policy/modelBpmnProperties.json deleted file mode 100644 index d0453c304..000000000 --- a/src/test/resources/example/model-properties/policy/modelBpmnProperties.json +++ /dev/null @@ -1,482 +0,0 @@ -{ - "global": - [ - { - "name": "service", - "value": - [ - "0f983e18-4603-4bb4-a98c-e29691fb16a1" - ] - }, - - { - "name": "vf", - "value": - [ - "6c7aaec2-59eb-41d9-8681-b7f976ab668d" - ] - }, - - { - "name": "actionSet", - "value": - [ - "vnfRecipe" - ] - }, - - { - "name": "location", - "value": - [ - "SNDGCA64" - ] - } - ], - - "Policy_": - { - "Policy1": - [ - { - "name": "pname", - "value": "Policy1" - }, - - { - "name": "pid", - "value": "1" - }, - - { - "name": "timeout", - "value": "500" - }, - - { - "policyConfigurations": - [ - [ - { - "name": "recipe", - "value": - [ - "restart" - ] - }, - - { - "name": "maxRetries", - "value": - [ - "3" - ] - }, - - { - "name": "retryTimeLimit", - "value": - [ - "180" - ] - }, - - { - "name": "_id", - "value": - [ - "n9bQ4t6" - ] - }, - - { - "name": "parentPolicy", - "value": - [ - "" - ] - }, - { - "name": "targetResourceId", - "value": - [ - "" - ] - }, - { - "name": "targetResourceIdOther", - "value": - [ - "" - ] - }, - { - "name": "actor", - "value": - [ - "APPC" - ] - } - ], - - [ - { - "name": "recipe", - "value": - [ - "rebuild" - ] - }, - - { - "name": "maxRetries", - "value": - [ - "3" - ] - }, - - { - "name": "retryTimeLimit", - "value": - [ - "180" - ] - }, - - { - "name": "_id", - "value": - [ - "ItE5xKT" - ] - }, - - { - "name": "parentPolicy", - "value": - [ - "n9bQ4t6" - ] - }, - - { - "name": "parentPolicyConditions", - "value": - [ - "Failure_Retries", - "Failure_Timeout", - "Failure_Exception", - "Failure" - ] - }, - { - "name": "targetResourceId", - "value": - [ - "resource-id" - ] - }, - { - "name": "targetResourceIdOther", - "value": - [ - "resource-idOther" - ] - }, - { - "name": "actor", - "value": - [ - "APPC" - ] - } - ] - ] - } - ], - - "Policy2": - [ - { - "name": "pname", - "value": "Policy2" - }, - - { - "name": "pid", - "value": "2" - }, - - { - "name": "timeout", - "value": "500" - }, - - { - "policyConfigurations": - [ - [ - { - "name": "recipe", - "value": - [ - "restart" - ] - }, - - { - "name": "maxRetries", - "value": - [ - "3" - ] - }, - - { - "name": "retryTimeLimit", - "value": - [ - "180" - ] - }, - - { - "name": "_id", - "value": - [ - "n9bQ4t6" - ] - }, - - { - "name": "parentPolicy", - "value": - [ - "" - ] - }, - { - "name": "actor", - "value": - [ - "APPC" - ] - } - ], - - [ - { - "name": "recipe", - "value": - [ - "rebuild" - ] - }, - - { - "name": "maxRetries", - "value": - [ - "3" - ] - }, - - { - "name": "retryTimeLimit", - "value": - [ - "180" - ] - }, - - { - "name": "_id", - "value": - [ - "ItE5xKT" - ] - }, - - { - "name": "parentPolicy", - "value": - [ - "n9bQ4t6" - ] - }, - - { - "name": "parentPolicyConditions", - "value": - [ - "Failure_Retries", - "Failure_Timeout", - "Failure_Exception", - "Failure" - ] - }, - { - "name": "targetResourceId", - "value": - [ - "resource-id" - ] - }, - { - "name": "targetResourceIdOther", - "value": - [ - "resource-idOther" - ] - }, - { - "name": "actor", - "value": - [ - "APPC" - ] - } - ] - ] - } - ] - }, - - "TCA_": - { - "Narra": - [ - { - "name": "tname", - "value": "Narra" - }, - - { - "name": "tuuid", - "value": "886be8da-14fe-tca1-d04b-d13b55d58df9" - }, - - { - "name": "tnfc", - "value": "ENBE" - }, - - { - "name": "tcaEnab", - "value": "on" - }, - - { - "name": "tcaPol", - "value": "Policy1" - }, - - { - "name": "tcaPolId", - "value": "1" - }, - - { - "name": "tcaInt", - "value": "2" - }, - - { - "name": "tcaSev", - "value": "Warning" - }, - - { - "name": "tcaVio", - "value": "3" - }, - - { - "serviceConfigurations": - [ - [ - "PMRRCCONNESTABFAILCELLLATENCY", - "LESS", - "4", - "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABFAILCELLLATENCY')].Value" - ], - - [ - "PMRAATTCBRA", - "GREATER", - "30", - "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRAATTCBRA')].Value" - ] - ] - } - ], - - "Srini": - [ - { - "name": "tname", - "value": "Srini" - }, - - { - "name": "tuuid", - "value": "8b5ba88d-f4b4-tf0e-50b1-78a5a7dd412d" - }, - - { - "name": "tnfc", - "value": "ENBE" - }, - - { - "name": "tcaEnab", - "value": "on" - }, - - { - "name": "tcaPol", - "value": "Policy2" - }, - - { - "name": "tcaPolId", - "value": "2" - }, - - { - "name": "tcaInt", - "value": "10" - }, - - { - "name": "tcaSev", - "value": "Critical" - }, - - { - "name": "tcaVio", - "value": "5" - }, - - { - "serviceConfigurations": - [ - [ - "PMRRCCONNESTABFAILCELLLATENCY", - "EQUAL", - "3", - "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABFAILCELLLATENCY')].Value" - ], - - [ - "PMRAATTCBRA", - "GREATER", - "30", - "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRAATTCBRA')].Value" - ] - ] - } - ] - } -} \ No newline at end of file diff --git a/src/test/resources/example/model-properties/tca/modelBpmn.json b/src/test/resources/example/model-properties/tca/modelBpmn.json deleted file mode 100644 index 7358f9ade..000000000 --- a/src/test/resources/example/model-properties/tca/modelBpmn.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "vesCollector": [ - { - "id": "VesCollector_0orydnh", - "from": "StartEvent_1" - } - ], - "tca": [ - { - "id": "TCA_1jy9to4", - "from": "VesCollector_0orydnh" - } - ], - "policy": [ - { - "id": "Policy_0honxgv", - "from": "TCA_1jy9to4" - } - ] -} diff --git a/src/test/resources/example/model-properties/tca/modelBpmnProperties.json b/src/test/resources/example/model-properties/tca/modelBpmnProperties.json deleted file mode 100644 index 1226dc9b1..000000000 --- a/src/test/resources/example/model-properties/tca/modelBpmnProperties.json +++ /dev/null @@ -1,152 +0,0 @@ -{ - "TCA_1jy9to4": { - "group1": [ - { - "name": "tname", - "value": "group1" - }, - { - "name": "tuuid", - "value": "f734f031-10aa-t8fb-330f-04dde2886325" - }, - { - "name": "tcaPolId", - "value": "policy1" - }, - { - "name": "eventName", - "value": "vFirewallBroadcastPackets" - }, - { - "name": "controlLoopSchemaType", - "value": "VNF" - }, - { - "serviceConfigurations": [ - [ - "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value", - "LESS_OR_EQUAL", - "123", - "ABATED" - ], - [ - "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value", - "GREATER_OR_EQUAL", - "123", - "ONSET" - ] - ] - } - ] - }, - "Policy_0honxgv": { - "policy1": [ - { - "name": "pname", - "value": "policy1" - }, - { - "name": "pid", - "value": "0" - }, - { - "name": "timeout", - "value": "345" - }, - { - "policyConfigurations": [ - [ - { - "name": "maxRetries", - "value": [ - "3" - ] - }, - { - "name": "retryTimeLimit", - "value": [ - "180" - ] - }, - { - "name": "_id", - "value": [ - "dGLuNqg" - ] - }, - { - "name": "parentPolicy", - "value": [ - "" - ] - }, - { - "name": "targetResourceId", - "value": [ - "resourceid" - ] - } - ] - ] - } - ] - }, - "global": [ - { - "name": "actionSet", - "value": [ - "vnfRecipe" - ] - }, - { - "name": "service", - "value": [ - "4cc5b45a-1f63-4194-8100-cd8e14248c92" - ] - }, - { - "name": "vf", - "value": [ - "023a3f0d-1161-45ff-b4cf-8918a8ccf3ad" - ] - }, - { - "name": "location", - "value": [ - "SNDGCA64", - "ALPRGAED", - "LSLEILAA", - "MDTWNJC1" - ] - }, - { - "name": "deployParameters", - "value": { - "input1": "value1", - "input2": "value2" - } - } - ], - "shared": { - "byService": { - "": { - "vf": { - "": "" - }, - "location": { - "": "" - }, - "alarmCondition": { - "": "" - } - } - }, - "byVf": { - "": { - "vfc": { - "": "" - } - } - } - } -} diff --git a/src/test/resources/example/model-properties/tca_new/doc-text.yaml b/src/test/resources/example/model-properties/tca_new/doc-text.yaml deleted file mode 100644 index 947cfdb18..000000000 --- a/src/test/resources/example/model-properties/tca_new/doc-text.yaml +++ /dev/null @@ -1,170 +0,0 @@ -{"global":[{"name":"service","value":["tosca_definitions_version: cloudify_dsl_1_3 -imports: - - "http://www.getcloudify.org/spec/cloudify/3.4/types.yaml" - - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R2/dockerplugin/3.2.0/dockerplugin_types.yaml - - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R2/relationshipplugin/1.0.0/relationshipplugin_types.yaml - - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R2/dcaepolicyplugin/2.3.0/dcaepolicyplugin_types.yaml - -inputs: - dh_override: - type: string - default: "component_dockerhost" - dh_location_id: - type: string - default: "zone1" - aaiEnrichmentHost: - type: string - default: "none" - aaiEnrichmentPort: - type: string - default: 8443 - enableAAIEnrichment: - type: string - default: false - dmaap_host: - type: string - default: dmaap.onap-message-router - dmaap_port: - type: string - default: 3904 - enableRedisCaching: - type: string - default: false - redisHosts: - type: string - tag_version: - type: string - default: "nexus3.onap.org:10001/onap//onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.0.0" - consul_host: - type: string - default: consul-server.onap-consul - consul_port: - type: string - default: "8500" - cbs_host: - type: string - default: "config-binding-service.dcae" - cbs_port: - type: string - default: "10000" - policy_id: - type: string - default: "none" - external_port: - type: string - description: "Port for CDAPgui to be exposed" - default: "32010" - -node_templates: - docker_service_host: - properties: - docker_host_override: - get_input: dh_override - location_id: - get_input: dh_location_id - type: dcae.nodes.SelectedDockerHost - tca_docker: - relationships: - - type: dcae.relationships.component_contained_in - target: docker_service_host - - target: tca_policy - type: cloudify.relationships.depends_on - type: dcae.nodes.DockerContainerForComponentsUsingDmaap - properties: - application_config: - app_config: - appDescription: DCAE Analytics Threshold Crossing Alert Application - appName: dcae-tca - tcaAlertsAbatementTableName: TCAAlertsAbatementTable - tcaAlertsAbatementTableTTLSeconds: '1728000' - tcaSubscriberOutputStreamName: TCASubscriberOutputStream - tcaVESAlertsTableName: TCAVESAlertsTable - tcaVESAlertsTableTTLSeconds: '1728000' - tcaVESMessageStatusTableName: TCAVESMessageStatusTable - tcaVESMessageStatusTableTTLSeconds: '86400' - thresholdCalculatorFlowletInstances: '2' - app_preferences: - aaiEnrichmentHost: - get_input: aaiEnrichmentHost - aaiEnrichmentIgnoreSSLCertificateErrors: 'true' - aaiEnrichmentPortNumber: '8443' - aaiEnrichmentProtocol: https - aaiEnrichmentUserName: DCAE - aaiEnrichmentUserPassword: DCAE - aaiVMEnrichmentAPIPath: /aai/v11/search/nodes-query - aaiVNFEnrichmentAPIPath: /aai/v11/network/generic-vnfs/generic-vnf - enableAAIEnrichment: - get_input: enableAAIEnrichment - enableRedisCaching: - get_input: enableRedisCaching - redisHosts: - get_input: redisHosts - enableAlertCEFFormat: 'false' - publisherContentType: application/json - publisherHostName: - get_input: dmaap_host - publisherHostPort: - get_input: dmaap_port - publisherMaxBatchSize: '1' - publisherMaxRecoveryQueueSize: '100000' - publisherPollingInterval: '20000' - publisherProtocol: http - publisherTopicName: unauthenticated.DCAE_CL_OUTPUT - subscriberConsumerGroup: OpenDCAE-c12 - subscriberConsumerId: c12 - subscriberContentType: application/json - subscriberHostName: - get_input: dmaap_host - subscriberHostPort: - get_input: dmaap_port - subscriberMessageLimit: '-1' - subscriberPollingInterval: '30000' - subscriberProtocol: http - subscriberTimeoutMS: '-1' - subscriberTopicName: unauthenticated.SEC_MEASUREMENT_OUTPUT - tca_policy_default: '{"domain":"measurementsForVfScaling","metricsPerEventName":[{"eventName":"vFirewallBroadcastPackets","controlLoopSchemaType":"VNF","policyScope":"DCAE","policyName":"DCAE.Config_tca-hi-lo","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicUsageArray[*].receivedTotalPacketsDelta","thresholdValue":300,"direction":"LESS_OR_EQUAL","severity":"MAJOR","closedLoopEventStatus":"ONSET"},{"closedLoopControlName":"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicUsageArray[*].receivedTotalPacketsDelta","thresholdValue":700,"direction":"GREATER_OR_EQUAL","severity":"CRITICAL","closedLoopEventStatus":"ONSET"}]},{"eventName":"vLoadBalancer","controlLoopSchemaType":"VM","policyScope":"DCAE","policyName":"DCAE.Config_tca-hi-lo","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicUsageArray[*].receivedTotalPacketsDelta","thresholdValue":300,"direction":"GREATER_OR_EQUAL","severity":"CRITICAL","closedLoopEventStatus":"ONSET"}]},{"eventName":"Measurement_vGMUX","controlLoopSchemaType":"VNF","policyScope":"DCAE","policyName":"DCAE.Config_tca-hi-lo","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value","thresholdValue":0,"direction":"EQUAL","severity":"MAJOR","closedLoopEventStatus":"ABATED"},{"closedLoopControlName":"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value","thresholdValue":0,"direction":"GREATER","severity":"CRITICAL","closedLoopEventStatus":"ONSET"}]}]}' - service_component_type: dcaegen2-analytics_tca - docker_config: - healthcheck: - endpoint: /healthcheck - interval: 15s - timeout: 1s - type: http - image: - get_input: tag_version - interfaces: - cloudify.interfaces.lifecycle: - start: - inputs: - envs: - DMAAPHOST: - { get_input: dmaap_host } - DMAAPPORT: - { get_input: dmaap_port } - DMAAPPUBTOPIC: "unauthenticated.DCAE_CL_OUTPUT" - DMAAPSUBTOPIC: "unauthenticated.SEC_MEASUREMENT_OUTPUT" - AAIHOST: - { get_input: aaiEnrichmentHost } - AAIPORT: - { get_input: aaiEnrichmentPort } - CONSUL_HOST: - { get_input: consul_host } - CONSUL_PORT: - { get_input: consul_port } - CBS_HOST: - { get_input: cbs_host } - CBS_PORT: - { get_input: cbs_port } - CONFIG_BINDING_SERVICE: "config_binding_service" - ports: - - concat: ["11011:", { get_input: external_port }] - stop: - inputs: - cleanup_image: true - tca_policy: - type: dcae.nodes.policy - properties: - policy_id: - get_input: policy_id - -"]}]} \ No newline at end of file diff --git a/src/test/resources/example/model-properties/tca_new/model-bpmn.json b/src/test/resources/example/model-properties/tca_new/model-bpmn.json deleted file mode 100644 index 84964c55d..000000000 --- a/src/test/resources/example/model-properties/tca_new/model-bpmn.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "policy": [ - { - "id": "Policy_12lup3h", - "from": "TCA_1d13unw" - } - ], - "tca": [ - { - "id": "TCA_1d13unw", - "from": "VesCollector_1g9cmz0" - } - ], - "holmes": [], - "vesCollector": [ - { - "id": "VesCollector_1g9cmz0", - "from": "StartEvent_1" - } - ] -} \ No newline at end of file diff --git a/src/test/resources/example/model-properties/tca_new/model-properties.json b/src/test/resources/example/model-properties/tca_new/model-properties.json deleted file mode 100644 index 8ea3bb4af..000000000 --- a/src/test/resources/example/model-properties/tca_new/model-properties.json +++ /dev/null @@ -1,359 +0,0 @@ -{ - "global": [ - { - "name": "service", - "value": [ - "4cc5b45a-1f63-4194-8100-cd8e14248c92" - ] - }, - { - "name": "vf", - "value": [ - "023a3f0d-1161-45ff-b4cf-8918a8ccf3ad" - ] - }, - { - "name": "actionSet", - "value": [ - "vnfRecipe" - ] - }, - { - "name": "location", - "value": [ - "DC1" - ] - }, - { - "name": "deployParameters", - "value": { - "dh_override": "component_dockerhost", - "dh_location_id": "zone1", - "aaiEnrichmentHost": "none", - "aaiEnrichmentPort": 8443, - "enableAAIEnrichment": false, - "dmaap_host": "dmaap.onap-message-router", - "dmaap_port": 3904, - "enableRedisCaching": false, - "redisHosts": "", - "tag_version": "nexus3.onap.org:10001/onap//onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.0.0", - "consul_host": "consul-server.onap-consul", - "consul_port": "8500", - "cbs_host": "config-binding-service.dcae", - "cbs_port": "10000", - "external_port": "32010", - "policy_id": "AUTO_GENERATED_POLICY_ID_AT_SUBMIT" - } - } - ], - "Policy_12lup3h": { - "policy1": [ - { - "name": "pname", - "value": "policy1" - }, - { - "name": "pid", - "value": "0" - }, - { - "name": "timeout", - "value": "345" - }, - { - "policyConfigurations": [ - [ - { - "name": "recipe", - "value": [ - "restart" - ] - }, - { - "name": "maxRetries", - "value": [ - "3" - ] - }, - { - "name": "retryTimeLimit", - "value": [ - "180" - ] - }, - { - "name": "_id", - "value": [ - "6TtHGPq" - ] - }, - { - "name": "parentPolicy", - "value": [ - "" - ] - }, - { - "name": "actor", - "value": [ - "APPC" - ] - }, - { - "name": "recipeInput", - "value": [ - "" - ] - }, - { - "name": "recipeLevel", - "value": [ - "VM" - ] - }, - { - "name": "targetResourceId", - "value": [ - "07e266fc-49ab-4cd7-8378-ca4676f1b9ec" - ] - }, - { - "name": "targetResourceIdOther", - "value": [ - "" - ] - }, - { - "name": "enableGuardPolicy", - "value": [ - "on" - ] - }, - { - "name": "guardPolicyType", - "value": [ - "GUARD_YAML" - ] - }, - { - "name": "guardTargets", - "value": [ - ".*" - ] - }, - { - "name": "minGuard", - "value": [ - "1" - ] - }, - { - "name": "maxGuard", - "value": [ - "1" - ] - }, - { - "name": "limitGuard", - "value": [ - "1" - ] - }, - { - "name": "timeUnitsGuard", - "value": [ - "minute" - ] - }, - { - "name": "timeWindowGuard", - "value": [ - "10" - ] - }, - { - "name": "guardActiveStart", - "value": [ - "00:00:01-05:00" - ] - }, - { - "name": "guardActiveEnd", - "value": [ - "00:00:00-05:00" - ] - } - ], - [ - { - "name": "recipe", - "value": [ - "rebuild" - ] - }, - { - "name": "maxRetries", - "value": [ - "3" - ] - }, - { - "name": "retryTimeLimit", - "value": [ - "180" - ] - }, - { - "name": "_id", - "value": [ - "aulXWRT" - ] - }, - { - "name": "parentPolicy", - "value": [ - "6TtHGPq" - ] - }, - { - "name": "parentPolicyConditions", - "value": [ - "Failure" - ] - }, - { - "name": "actor", - "value": [ - "APPC" - ] - }, - { - "name": "recipeInput", - "value": [ - "" - ] - }, - { - "name": "recipeLevel", - "value": [ - "VM" - ] - }, - { - "name": "targetResourceId", - "value": [ - "07e266fc-49ab-4cd7-8378-ca4676f1b9ec" - ] - }, - { - "name": "targetResourceIdOther", - "value": [ - "" - ] - }, - { - "name": "guardPolicyType", - "value": [ - "GUARD_MIN_MAX" - ] - }, - { - "name": "guardTargets", - "value": [ - ".*" - ] - }, - { - "name": "minGuard", - "value": [ - "1" - ] - }, - { - "name": "maxGuard", - "value": [ - "1" - ] - }, - { - "name": "limitGuard", - "value": [ - "1" - ] - }, - { - "name": "timeUnitsGuard", - "value": [ - "minute" - ] - }, - { - "name": "timeWindowGuard", - "value": [ - "10" - ] - }, - { - "name": "guardActiveStart", - "value": [ - "00:00:01-05:00" - ] - }, - { - "name": "guardActiveEnd", - "value": [ - "00:00:00-05:00" - ] - } - ] - ] - } - ] - }, - "TCA_1d13unw": { - "tca1": [ - { - "name": "tname", - "value": "tca1" - }, - { - "name": "tuuid", - "value": "7f14fe1f-68ac-t628-8fff-7f1de86f7038" - }, - { - "name": "tcaPol", - "value": "policy1" - }, - { - "name": "eventName", - "value": "vLoadBalancer" - }, - { - "name": "controlLoopSchemaType", - "value": "VM" - }, - { - "name": "tcaPolId", - "value": "0" - }, - { - "serviceConfigurations": [ - [ - "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value", - "GREATER", - "10", - "ONSET", - "undefined" - ], - [ - "$.event.measurementsForVfScalingFields.vNicUsageArray[*].receivedTotalPacketsDelta", - "GREATER_OR_EQUAL", - "20", - "ABATED", - "undefined" - ] - ] - } - ] - } -} \ No newline at end of file diff --git a/src/test/resources/example/model-properties/tca_new/tca-img.xml b/src/test/resources/example/model-properties/tca_new/tca-img.xml deleted file mode 100644 index a2ec5af23..000000000 --- a/src/test/resources/example/model-properties/tca_new/tca-img.xml +++ /dev/null @@ -1,309 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - V - - - E - - - S - - - VesCollector - - - - - - - - - - - - - TCA - - - - - - - - - - - - - Policy - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/test/resources/example/model-properties/tca_new/tca-template.xml b/src/test/resources/example/model-properties/tca_new/tca-template.xml deleted file mode 100644 index cc942ef9d..000000000 --- a/src/test/resources/example/model-properties/tca_new/tca-template.xml +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - SequenceFlow_1ahk7jg - - - SequenceFlow_1ahk7jg - SequenceFlow_18ahat1 - - - SequenceFlow_18ahat1 - SequenceFlow_1mo9gxb - - - SequenceFlow_1mo9gxb - SequenceFlow_1dgtrrq - - - SequenceFlow_1dgtrrq - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file -- cgit 1.2.3-korg