From 6bf63a18d595d40ed169e79e681fc526a400aa40 Mon Sep 17 00:00:00 2001 From: ktimoney Date: Thu, 10 Aug 2023 16:38:02 +0100 Subject: [PATCH] Added docker-compose ranpm Issue-ID: NONRTRIC-903 Change-Id: I882b6a9e8d123104240eed8337eef9739451b3ab Signed-off-by: ktimoney --- docker-proj/README.md | 91 + docker-proj/config/bundle-server/bundle.tar.gz | Bin 0 -> 771 bytes .../config/dfc-common/template-truststore.jks | Bin 0 -> 3869 bytes docker-proj/config/dfc-common/truststore.pass | 1 + docker-proj/config/dfc1/application-template.yaml | 92 + docker-proj/config/dfc1/application.yaml | 92 + docker-proj/config/dfc1/template-truststore.jks | Bin 0 -> 3869 bytes docker-proj/config/dfc1/token-cache/jwt.txt | 0 docker-proj/config/dfc1/truststore.jks | Bin 0 -> 4957 bytes docker-proj/config/dmaap/MsgRtrApi.properties | 135 + docker-proj/config/dmaap/logback.xml | 204 + docker-proj/config/https/certs/gen-certs.sh | 77 + docker-proj/config/ics/application.yaml | 69 + docker-proj/config/kafka/strimzi.properties | 77 + docker-proj/config/keycloak/certs/gen-certs.sh | 45 + docker-proj/config/keycloak/nginx.conf | 18 + .../pmfc/application_configuration_xml2json.json | 8 + .../config/pmpr/application-minio-template.yaml | 105 + docker-proj/config/pmpr/application.yaml | 105 + .../application_configuration-minio-template.json | 14 + .../config/pmpr/application_configuration.json | 14 + docker-proj/config/pmpr/token-cache/jwt.txt | 0 .../config/ves-collector/collector.properties | 77 + .../config/ves-collector/ves-dmaap-config.json | 9 + docker-proj/docker-compose-dfc1.yaml | 53 + docker-proj/docker-compose-k1.yaml | 127 + docker-proj/docker-compose-pm-https.yaml | 36 + docker-proj/docker-compose-producers.yaml | 75 + docker-proj/docker-compose-security.yaml | 80 + docker-proj/docker-setup.sh | 276 ++ docker-proj/docker-tear-down.sh | 31 + docker-proj/ne-files/dummy.txt | 1 + docker-proj/ne-files/pm.xml | 4023 ++++++++++++++++++++ docker-proj/ne-files/pm.xml.gz | Bin 0 -> 10654 bytes docker-proj/pm-files/pm.xml | 4023 ++++++++++++++++++++ docker-proj/pm-files/pm.xml.gz | Bin 0 -> 10654 bytes docker-proj/scripts/clean-shared-volume.sh | 50 + .../scripts/kafka-client-send-file-ready.sh | 94 + docker-proj/scripts/populate_keycloak.sh | 467 +++ docker-proj/scripts/push-to-file-ready-topic.sh | 45 + docker-proj/scripts/push-to-ves-collector.sh | 88 + docker-proj/shared-volume/dummy.txt | 0 42 files changed, 10702 insertions(+) create mode 100644 docker-proj/README.md create mode 100644 docker-proj/config/bundle-server/bundle.tar.gz create mode 100644 docker-proj/config/dfc-common/template-truststore.jks create mode 100644 docker-proj/config/dfc-common/truststore.pass create mode 100644 docker-proj/config/dfc1/application-template.yaml create mode 100644 docker-proj/config/dfc1/application.yaml create mode 100644 docker-proj/config/dfc1/template-truststore.jks create mode 100644 docker-proj/config/dfc1/token-cache/jwt.txt create mode 100644 docker-proj/config/dfc1/truststore.jks create mode 100644 docker-proj/config/dmaap/MsgRtrApi.properties create mode 100644 docker-proj/config/dmaap/logback.xml create mode 100755 docker-proj/config/https/certs/gen-certs.sh create mode 100644 docker-proj/config/ics/application.yaml create mode 100644 docker-proj/config/kafka/strimzi.properties create mode 100755 docker-proj/config/keycloak/certs/gen-certs.sh create mode 100644 docker-proj/config/keycloak/nginx.conf create mode 100644 docker-proj/config/pmfc/application_configuration_xml2json.json create mode 100644 docker-proj/config/pmpr/application-minio-template.yaml create mode 100644 docker-proj/config/pmpr/application.yaml create mode 100644 docker-proj/config/pmpr/application_configuration-minio-template.json create mode 100644 docker-proj/config/pmpr/application_configuration.json create mode 100644 docker-proj/config/pmpr/token-cache/jwt.txt create mode 100644 docker-proj/config/ves-collector/collector.properties create mode 100644 docker-proj/config/ves-collector/ves-dmaap-config.json create mode 100644 docker-proj/docker-compose-dfc1.yaml create mode 100644 docker-proj/docker-compose-k1.yaml create mode 100644 docker-proj/docker-compose-pm-https.yaml create mode 100644 docker-proj/docker-compose-producers.yaml create mode 100644 docker-proj/docker-compose-security.yaml create mode 100755 docker-proj/docker-setup.sh create mode 100755 docker-proj/docker-tear-down.sh create mode 100644 docker-proj/ne-files/dummy.txt create mode 100644 docker-proj/ne-files/pm.xml create mode 100644 docker-proj/ne-files/pm.xml.gz create mode 100644 docker-proj/pm-files/pm.xml create mode 100644 docker-proj/pm-files/pm.xml.gz create mode 100755 docker-proj/scripts/clean-shared-volume.sh create mode 100755 docker-proj/scripts/kafka-client-send-file-ready.sh create mode 100755 docker-proj/scripts/populate_keycloak.sh create mode 100755 docker-proj/scripts/push-to-file-ready-topic.sh create mode 100755 docker-proj/scripts/push-to-ves-collector.sh create mode 100644 docker-proj/shared-volume/dummy.txt diff --git a/docker-proj/README.md b/docker-proj/README.md new file mode 100644 index 0000000..4ecffd1 --- /dev/null +++ b/docker-proj/README.md @@ -0,0 +1,91 @@ +## RANPM project in docker + +A docker compose project showing pm file flow from simulated network elements to filtered pm data. + +## Run in docker-desktop - docker only + +### Clone the ranpm repo: + +`git clone https://gerrit.nordix.org/local/oransc/ranpm` + +### Build Https server + +`cd ranpm/https-server` + +`./build.sh no-push` + + +### Start demo + +WARNING: The setup scripts below will prune all unused docker volumes! + +INFO: Temporary files for some containers will be stored in subdirs under `/tmp` + +`cd ranpm/docker-proj` + +There are several ways to start and run the demo, with file or minio file storage, single or multi instances of data-file collector and kafka as well as a choice of sftp, ftpes or https. +Additional configuration can be made in the setup script. + +It could be a good idea to clean any other running containers in docker to avoid port and container name clashes. + +Command usage: `docker-setup.sh` + + +Example cmd: \ +`./docker-setup.sh` + +Let the script finish. + +If the script fails, make sure to clean the setup before attempting a new setup. + +`./docker-tear-down.sh` + +In addition, a `docker system prune` might be needed now and then. + +### Tools for monitoring + +Open browser to redpanda (kafka gui) - watch topics, messages etc\ +browser: `localhost:8780` + +Open brower to minio - available only if minio is given on the cmd line when starting the demo\ +user: admin pwd: adminadmin\ +browser: `localhost:9001` + + +### Push data - basic + +File ready events can be pushed to the ves collector or pushed directly to the topic for file ready events (bypassing the ves collector). + +Push to ves collector: + +Usage: `push-to-ves-collector.sh ` + +Parameters/ +node-count - number of unique NEs\ +num-of-events - number of events per NE\ +node-name-base - NE name prefix\ +file-extension - xml or xml.gz +num-servers - number of sftp/ftpes/https servers to simulate NEs (10 is default) + +Usage: `push-to-file-ready-topic.sh ` + +Parameter: \ +Same as `push-to-ves-collector.sh` + +Once the events has been pushed the progress can be viewed in the monitoring tools described above. + +If several sets of data shall be pushed, just change the parameter `` to make the new files unique. + + +### Clean up + +Run the script to remove all docker containers. + +`./docker-tear-down.sh` + +To also cleanup files. + +`cd pm-file-flow-demo/scripts` + +`./clean-shared-volume.sh` + diff --git a/docker-proj/config/bundle-server/bundle.tar.gz b/docker-proj/config/bundle-server/bundle.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..c4b13bb9081006f7d124480ab29f83c99e4c4e7c GIT binary patch literal 771 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 Jg$;}=`yXAMCD8x? literal 0 HcmV?d00001 diff --git a/docker-proj/config/dfc-common/truststore.pass b/docker-proj/config/dfc-common/truststore.pass new file mode 100644 index 0000000..b915b0f --- /dev/null +++ b/docker-proj/config/dfc-common/truststore.pass @@ -0,0 +1 @@ +policy_agent \ No newline at end of file diff --git a/docker-proj/config/dfc1/application-template.yaml b/docker-proj/config/dfc1/application-template.yaml new file mode 100644 index 0000000..0391d23 --- /dev/null +++ b/docker-proj/config/dfc1/application-template.yaml @@ -0,0 +1,92 @@ +# ============LICENSE_START=============================================== +# Copyright (C) 2023 Nordix Foundation. 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================================================= +# + +spring: + profiles: + active: prod +management: + endpoints: + web: + exposure: + include: "loggers,logfile,health,info,metrics" +server: + port: 8433 + ssl: + key-store-type: JKS + key-store-password: policy_agent + key-store: config/keystore.jks + key-password: policy_agent + key-alias: policy_agent +logging: + level: + ROOT: WARN + org.onap: WARN + org.springframework: WARN + #TRACE + org.springframework.data: WARN + org.springframework.web.reactive.function.client.ExchangeFunctions: WARN + #org.onap.dcaegen2.collectors.datafile: WARN + org.onap.dcaegen2.collectors.datafile: TRACE + + file: + name: /var/log/ONAP/application.log +app: + #filepath: config/datafile_endpoints_test.json + collected-files-path: "/tmp/onap_datafile/" + # Numer of worker threads. Increased number may increase throughput, but will require more executing resources. + number-of-worker-treads: 50 + # If the file name is empty, no authorization token is used + auth-token-file: /token-cache/jwt.txt + # KAFKA boostrap servers. This is only needed if there are Information Types that uses a kafkaInputTopic + # several redundant boostrap servers can be specified, separated by a comma ','. + kafka: + bootstrap-servers: kafka-1:9097 + # output topic + collected-file-topic: collected-file + client-id: datafile-1 + # input topic + file-ready-event-topic: file-ready + use-oath-token: true + ssl: + key-store-type: PEM + key-store-location: + # key password is needed if the private key is encrypted + key-store-password: + trust-store-type: PEM + trust-store-location: + sftp: + known-hosts-file-path: + strict-host-key-checking: false + ssl: + key-store-password-file: /opt/app/datafile/config/ftps_keystore.pass + key-store: /opt/app/datafile/config/ftps_keystore.p12 + trust-store-password-file: /opt/app/datafile/config/truststore.pass + trust-store: /opt/app/datafile/config/truststore.jks + s3: + endpointOverride: $DFC_MINIO + accessKeyId: admin + secretAccessKey: adminadmin + bucket: ropfiles + +springdoc: + show-actuator: true + swagger-ui.disable-swagger-default-url: true +################ + + + + diff --git a/docker-proj/config/dfc1/application.yaml b/docker-proj/config/dfc1/application.yaml new file mode 100644 index 0000000..239f9e5 --- /dev/null +++ b/docker-proj/config/dfc1/application.yaml @@ -0,0 +1,92 @@ +# ============LICENSE_START=============================================== +# Copyright (C) 2023 Nordix Foundation. 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================================================= +# + +spring: + profiles: + active: prod +management: + endpoints: + web: + exposure: + include: "loggers,logfile,health,info,metrics" +server: + port: 8433 + ssl: + key-store-type: JKS + key-store-password: policy_agent + key-store: config/keystore.jks + key-password: policy_agent + key-alias: policy_agent +logging: + level: + ROOT: WARN + org.onap: WARN + org.springframework: WARN + #TRACE + org.springframework.data: WARN + org.springframework.web.reactive.function.client.ExchangeFunctions: WARN + #org.onap.dcaegen2.collectors.datafile: WARN + org.onap.dcaegen2.collectors.datafile: TRACE + + file: + name: /var/log/ONAP/application.log +app: + #filepath: config/datafile_endpoints_test.json + collected-files-path: "/tmp/onap_datafile/" + # Numer of worker threads. Increased number may increase throughput, but will require more executing resources. + number-of-worker-treads: 50 + # If the file name is empty, no authorization token is used + auth-token-file: /token-cache/jwt.txt + # KAFKA boostrap servers. This is only needed if there are Information Types that uses a kafkaInputTopic + # several redundant boostrap servers can be specified, separated by a comma ','. + kafka: + bootstrap-servers: kafka-1:9097 + # output topic + collected-file-topic: collected-file + client-id: datafile-1 + # input topic + file-ready-event-topic: file-ready + use-oath-token: true + ssl: + key-store-type: PEM + key-store-location: + # key password is needed if the private key is encrypted + key-store-password: + trust-store-type: PEM + trust-store-location: + sftp: + known-hosts-file-path: + strict-host-key-checking: false + ssl: + key-store-password-file: /opt/app/datafile/config/ftps_keystore.pass + key-store: /opt/app/datafile/config/ftps_keystore.p12 + trust-store-password-file: /opt/app/datafile/config/truststore.pass + trust-store: /opt/app/datafile/config/truststore.jks + s3: + endpointOverride: http://minio-server:9000 + accessKeyId: admin + secretAccessKey: adminadmin + bucket: ropfiles + +springdoc: + show-actuator: true + swagger-ui.disable-swagger-default-url: true +################ + + + + diff --git a/docker-proj/config/dfc1/template-truststore.jks b/docker-proj/config/dfc1/template-truststore.jks new file mode 100644 index 0000000000000000000000000000000000000000..50a0f9e9f433cc8012096a283eb71c8f5497cd65 GIT binary patch literal 3869 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 Jg$;}=`yXAMCD8x? literal 0 HcmV?d00001 diff --git a/docker-proj/config/dfc1/token-cache/jwt.txt b/docker-proj/config/dfc1/token-cache/jwt.txt new file mode 100644 index 0000000..e69de29 diff --git a/docker-proj/config/dfc1/truststore.jks b/docker-proj/config/dfc1/truststore.jks new file mode 100644 index 0000000000000000000000000000000000000000..126947d90bd5cea1e41640473b60d7df872973ad GIT binary patch literal 4957 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 IfQZ8X0(8Mv-T(jq literal 0 HcmV?d00001 diff --git a/docker-proj/config/dmaap/MsgRtrApi.properties b/docker-proj/config/dmaap/MsgRtrApi.properties new file mode 100644 index 0000000..9ef1899 --- /dev/null +++ b/docker-proj/config/dmaap/MsgRtrApi.properties @@ -0,0 +1,135 @@ +{{/* +# LICENSE_START======================================================= +# org.onap.dmaap +# ================================================================================ +# Copyright © 2017 AT&T Intellectual Property. All rights reserved. +# Modifications Copyright © 2021-2023 Nordix Foundation +# ================================================================================ +# 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. +# +############################################################################### +############################################################################### +*/}} +## +## Kafka Connection +## +## Items below are passed through to Kafka's producer and consumer +## configurations (after removing "kafka.") +## if you want to change request.required.acks it can take this one value +#kafka.request.required.acks=-1 +kafka.metadata.broker.list=kafka-1:9092 +config.zk.servers=zookeeper-1:2181 +consumer.timeout.ms=100 +zookeeper.connection.timeout.ms=6000 +zookeeper.session.timeout.ms=20000 +zookeeper.sync.time.ms=2000 +auto.commit.interval.ms=1000 +fetch.message.max.bytes =1000000 +auto.commit.enable=false + +#(backoff*retries > zksessiontimeout) +kafka.rebalance.backoff.ms=10000 +kafka.rebalance.max.retries=6 + + +############################################################################### +## +## Secured Config +## +## Some data stored in the config system is sensitive -- API keys and secrets, +## for example. to protect it, we use an encryption layer for this section +## of the config. +## +## The key is a base64 encode AES key. This must be created/configured for +## each installation. +#cambria.secureConfig.key= +## +## The initialization vector is a 16 byte value specific to the secured store. +## This must be created/configured for each installation. +#cambria.secureConfig.iv= + +## Southfield Sandbox +cambria.secureConfig.key=b/7ouTn9FfEw2PQwL0ov/Q== +cambria.secureConfig.iv=wR9xP5k5vbz/xD0LmtqQLw== +authentication.adminSecret=fe3cCompound +#cambria.secureConfig.key[pc569h]=YT3XPyxEmKCTLI2NK+Sjbw== +#cambria.secureConfig.iv[pc569h]=rMm2jhR3yVnU+u2V9Ugu3Q== + + +############################################################################### +## +## Consumer Caching +## +## Kafka expects live connections from the consumer to the broker, which +## obviously doesn't work over connectionless HTTP requests. The Cambria +## server proxies HTTP requests into Kafka consumer sessions that are kept +## around for later re-use. Not doing so is costly for setup per request, +## which would substantially impact a high volume consumer's performance. +## +## This complicates Cambria server failover, because we often need server +## A to close its connection before server B brings up the replacement. +## + +## The consumer cache is normally enabled. +#cambria.consumer.cache.enabled=true + +## Cached consumers are cleaned up after a period of disuse. The server inspects +## consumers every sweepFreqSeconds and will clean up any connections that are +## dormant for touchFreqMs. +#cambria.consumer.cache.sweepFreqSeconds=15 +cambria.consumer.cache.touchFreqMs=120000 +##stickforallconsumerrequests=false +## The cache is managed through ZK. The default value for the ZK connection +## string is the same as config.zk.servers. +#cambria.consumer.cache.zkConnect=${config.zk.servers} + +## +## Shared cache information is associated with this node's name. The default +## name is the hostname plus the HTTP service port this host runs on. (The +## hostname is determined via InetAddress.getLocalHost ().getCanonicalHostName(), +## which is not always adequate.) You can set this value explicitly here. +## +#cambria.api.node.identifier= + +#cambria.rateLimit.maxEmptyPollsPerMinute=30 +#cambria.rateLimitActual.delay.ms=10 + +############################################################################### +## +## Metrics Reporting +## +## This server can report its metrics periodically on a topic. +## +#metrics.send.cambria.enabled=true +#metrics.send.cambria.topic=cambria.apinode.metrics #msgrtr.apinode.metrics.dmaap +#metrics.send.cambria.sendEverySeconds=60 + +cambria.consumer.cache.zkBasePath=/fe3c/cambria/consumerCache +consumer.timeout=17 +default.partitions=3 +default.replicas=3 +############################################################################## +#100mb +maxcontentlength=10000 + +############################################################################## +##AAF Properties +forceAAF=false +useCustomAcls=false + +kafka.max.poll.interval.ms=300000 +kafka.heartbeat.interval.ms=60000 +kafka.session.timeout.ms=240000 +kafka.max.poll.records=1000 diff --git a/docker-proj/config/dmaap/logback.xml b/docker-proj/config/dmaap/logback.xml new file mode 100644 index 0000000..7fe53ad --- /dev/null +++ b/docker-proj/config/dmaap/logback.xml @@ -0,0 +1,204 @@ + + + + ${module.ajsc.namespace.name} + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - %msg%n + + + + + + + INFO + ACCEPT + DENY + + + + + + + "%d [%thread] %-5level %logger{1024} - %msg%n" + + + + + + ERROR + ACCEPT + DENY + + + "%d [%thread] %-5level %logger{1024} - %msg%n" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "%d [%thread] %-5level %logger{1024} - %msg%n" + + + + + + + "%d [%thread] %-5level %logger{1024} - %msg%n" + + + + 1000 + 0 + + + + + + + + + + + 1000 + 0 + + + + + + + + + + + + + + + + diff --git a/docker-proj/config/https/certs/gen-certs.sh b/docker-proj/config/https/certs/gen-certs.sh new file mode 100755 index 0000000..9aa2bc6 --- /dev/null +++ b/docker-proj/config/https/certs/gen-certs.sh @@ -0,0 +1,77 @@ +#!/bin/bash + +# ============LICENSE_START=============================================== +# Copyright (C) 2023 Nordix Foundation. 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================================================= +# + +echo "Generating https certs" +SD=$(dirname -- "$0") +echo "script-home: "$SD + +cd $SD + +print_usage() { + echo "Usage: gen-certs.sh " + exit 1 +} + +check_error() { + if [ $1 -ne 0 ]; then + echo "Failed $2" + echo "Exiting..." + exit 1 + fi +} + +if [ $# -ne 1 ]; then + print_usage +fi + +rm *.crt +rm *.key + +echo "Generating ca cert and key" +echo " Generating ca key" +openssl genrsa 2048 > ca.key 2> /dev/null +check_error $? + +echo " Generating ca cert" +SRV="pm-https-server" +openssl req -new -x509 -nodes -days 365000 -key ca.key -subj "/C=SE/ST=./L=./O=EST/OU=EST/CN=$SRV/emailAddress=a@example.com" -out httpsca.crt 2> /dev/null + +check_error $? + + +#for (( i=0; i<${1}; i++ )); do +for (( i=1; i<=${1}; i++ )); do + SRV="pm-https-server-$i" + + echo " Generating cert and key for server $SRV" + openssl req -newkey rsa:2048 -nodes -days 365000 -subj "/C=SE/ST=./L=./O=ERIC/OU=ERIC/CN=$SRV/emailAddress=a@example.com" -keyout https-$i.key -out https-req$i.crt 2> /dev/null + + check_error $? + + openssl x509 -req -days 365000 -set_serial 01 -in https-req$i.crt -out https-$i.crt -CA httpsca.crt -CAkey ca.key + check_error $? + echo " Verifying cert towards ca cert" + openssl verify -CAfile httpsca.crt httpsca.crt https-$i.crt + check_error $? + +done + +echo "DONE" +exit 0 + diff --git a/docker-proj/config/ics/application.yaml b/docker-proj/config/ics/application.yaml new file mode 100644 index 0000000..679f2b8 --- /dev/null +++ b/docker-proj/config/ics/application.yaml @@ -0,0 +1,69 @@ +# ============LICENSE_START=============================================== +# Copyright (C) 2023 Nordix Foundation. 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================================================= +# + +spring: + profiles: + active: prod + main: + allow-bean-definition-overriding: true + aop: + auto: false +springdoc: + show-actuator: true +management: + endpoints: + web: + exposure: + # Enabling of springboot actuator features. See springboot documentation. + include: "loggers,logfile,health,info,metrics,threaddump,heapdump" + +logging: + # Configuration of logging + level: + ROOT: ERROR + org.springframework: ERROR + org.springframework.data: ERROR + org.springframework.web.reactive.function.client.ExchangeFunctions: ERROR + org.oransc.ics: DEBUG + file: + name: /var/log/information-coordinator-service/application.log +server: + # Configuration of the HTTP/REST server. The parameters are defined and handeled by the springboot framework. + # See springboot documentation. + port : 8434 + http-port: 8083 + ssl: + key-store-type: JKS + key-store-password: policy_agent + key-store: /opt/app/information-coordinator-service/etc/cert/keystore.jks + key-password: policy_agent + key-alias: policy_agent +app: + webclient: + # Configuration of the trust store used for the HTTP client (outgoing requests) + # The file location and the password for the truststore is only relevant if trust-store-used == true + # Note that the same keystore as for the server is used. + trust-store-used: false + trust-store-password: policy_agent + trust-store: /opt/app/information-coordinator-service/etc/cert/truststore.jks + # Configuration of usage of HTTP Proxy for the southbound accesses. + # The HTTP proxy (if configured) will only be used for accessing NearRT RIC:s + http.proxy-host: + http.proxy-port: 0 + vardata-directory: /var/information-coordinator-service + # If the file name is empty, no authorzation token is sent + auth-token-file: diff --git a/docker-proj/config/kafka/strimzi.properties b/docker-proj/config/kafka/strimzi.properties new file mode 100644 index 0000000..320f16d --- /dev/null +++ b/docker-proj/config/kafka/strimzi.properties @@ -0,0 +1,77 @@ +# ============LICENSE_START=============================================== +# Copyright (C) 2023 Nordix Foundation. 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================================================= +# + +########## +# Broker ID +########## +broker.id=0 +node.id=0 + +########## +# Zookeeper +########## +zookeeper.connect=zookeeper-1:2181 +zookeeper.clientCnxnSocket=org.apache.zookeeper.ClientCnxnSocketNetty + +########## +# Kafka message logs configuration +########## +log.dirs=/tmp/logs + +########## +# Listener configuration: SASL-9097 +########## +listener.name.sasl-9097.oauthbearer.sasl.server.callback.handler.class=io.strimzi.kafka.oauth.server.JaasServerOauthValidatorCallbackHandler +listener.name.sasl-9097.oauthbearer.sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required unsecuredLoginStringClaim_sub="thePrincipalName" oauth.valid.issuer.uri="https://keycloak:8443/realms/nonrtric-realm" oauth.jwks.endpoint.uri="http://keycloak:8080/realms/nonrtric-realm/protocol/openid-connect/certs" oauth.username.claim="preferred_username" oauth.config.id="SASL-9097"; +listener.name.sasl-9097.plain.sasl.server.callback.handler.class=io.strimzi.kafka.oauth.server.plain.JaasServerOauthOverPlainValidatorCallbackHandler +listener.name.sasl-9097.plain.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required oauth.valid.issuer.uri="https://keycloak:8443/realms/nonrtric-realm" oauth.jwks.endpoint.uri="http://keycloak:8080/realms/nonrtric-realm/protocol/openid-connect/certs" oauth.username.claim="preferred_username" oauth.config.id="SASL-9097"; +listener.name.sasl-9097.sasl.enabled.mechanisms=OAUTHBEARER,PLAIN +listener.name.sasl-9097.connections.max.reauth.ms=300000 + + +principal.builder.class=io.strimzi.kafka.oauth.server.OAuthKafkaPrincipalBuilder + +########## +# Common listener configuration +########## +listener.security.protocol.map=PLAIN-9092:PLAINTEXT,SASL-9097:SASL_PLAINTEXT +listeners=PLAIN-9092://:9092,SASL-9097://:9097 +advertised.listeners=PLAIN-9092://kafka-1:9092,SASL-9097://kafka-1:9097 +inter.broker.listener.name=PLAIN-9092 +sasl.enabled.mechanisms= + +########## +# Authorization +########## +authorizer.class.name=org.openpolicyagent.kafka.OpaAuthorizer +opa.authorizer.url=http://opa-kafka:8181/v1/data/kafka/authz/allow +opa.authorizer.allow.on.error=false +opa.authorizer.metrics.enabled=false +opa.authorizer.cache.initial.capacity=5000 +opa.authorizer.cache.maximum.size=50000 +opa.authorizer.cache.expire.after.seconds=3600 + +########## +# User provided configuration +########## +default.replication.factor=1 +inter.broker.protocol.version=3.3 +min.insync.replicas=1 +offsets.topic.replication.factor=1 +transaction.state.log.min.isr=1 +transaction.state.log.replication.factor=1 +log.message.format.version=3.3 diff --git a/docker-proj/config/keycloak/certs/gen-certs.sh b/docker-proj/config/keycloak/certs/gen-certs.sh new file mode 100755 index 0000000..ce9025a --- /dev/null +++ b/docker-proj/config/keycloak/certs/gen-certs.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +# ============LICENSE_START=============================================== +# Copyright (C) 2023 Nordix Foundation. 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================================================= +# + +BASEDIR=$(dirname $(realpath "$0")) +PASSWORD=changeit +CANAME=rootCA +DAYS=3650 +DOMAIN_NAME="CN=keycloak" +CA_SUBJECT="/CN=keycloak" + +rm $BASEDIR/keycloak.server.keystore.p12 $BASEDIR/keycloak.client.truststore.p12 $BASEDIR/rootCA.crt $BASEDIR/rootCA.key $BASEDIR/rootCA.srl $BASEDIR/cert-signed $BASEDIR/cert-file 2>/dev/null + +echo $PASSWORD > $BASEDIR/secretfile.txt + +echo "Generating Root Certificate" +openssl req -x509 -sha256 -days $DAYS -newkey rsa:4096 -keyout $BASEDIR/${CANAME}.key -subj "$CA_SUBJECT" -passout file:$BASEDIR/secretfile.txt -out $BASEDIR/${CANAME}.crt +echo "Create server certificate for Keycloak" +keytool -keystore $BASEDIR/keycloak.server.keystore.p12 -storetype pkcs12 -keyalg RSA -alias keycloak -validity $DAYS -genkey -storepass $PASSWORD -keypass $PASSWORD -dname $DOMAIN_NAME -ext SAN=DNS:keycloak +echo "Create keycloak keystore with server certificate" +keytool -keystore $BASEDIR/keycloak.server.keystore.p12 -storetype pkcs12 -alias keycloak -storepass $PASSWORD -keypass $PASSWORD -certreq -file $BASEDIR/cert-file +echo "Sign server certificate with rootCA" +openssl x509 -req -CA $BASEDIR/${CANAME}.crt -CAkey $BASEDIR/${CANAME}.key -in $BASEDIR/cert-file -out $BASEDIR/cert-signed -days $DAYS -CAcreateserial -passin pass:$PASSWORD +echo "Add $CANAME to keystore" +keytool -keystore $BASEDIR/keycloak.server.keystore.p12 -alias CARoot -storepass $PASSWORD -keypass $PASSWORD -import -file $BASEDIR/${CANAME}.crt -noprompt +echo "Add signed server certificate to keystore" +keytool -keystore $BASEDIR/keycloak.server.keystore.p12 -alias keycloak -storepass $PASSWORD -keypass $PASSWORD -import -file $BASEDIR/cert-signed -noprompt +echo "Create keycloak truststore with $CANAME" +keytool -keystore $BASEDIR/keycloak.client.truststore.p12 -storetype pkcs12 -alias ca -storepass $PASSWORD -keypass $PASSWORD -import -file $BASEDIR/${CANAME}.crt -noprompt +rm $BASEDIR/secretfile.txt 2>/dev/null diff --git a/docker-proj/config/keycloak/nginx.conf b/docker-proj/config/keycloak/nginx.conf new file mode 100644 index 0000000..f738341 --- /dev/null +++ b/docker-proj/config/keycloak/nginx.conf @@ -0,0 +1,18 @@ +worker_processes 1; + +events { worker_connections 10; } + +http { + + sendfile on; + + server { + listen 8080; + server_name keycloak; + location ~* ^/ { + proxy_http_version 1.1; + proxy_pass http://keycloak:8080; + + } + } +} diff --git a/docker-proj/config/pmfc/application_configuration_xml2json.json b/docker-proj/config/pmfc/application_configuration_xml2json.json new file mode 100644 index 0000000..67b3946 --- /dev/null +++ b/docker-proj/config/pmfc/application_configuration_xml2json.json @@ -0,0 +1,8 @@ + { + "types": [ + { + "id": "xml-file-data-to-filestore", + "kafkaInputTopic": "collected-file" + } + ] + } diff --git a/docker-proj/config/pmpr/application-minio-template.yaml b/docker-proj/config/pmpr/application-minio-template.yaml new file mode 100644 index 0000000..3b2fef7 --- /dev/null +++ b/docker-proj/config/pmpr/application-minio-template.yaml @@ -0,0 +1,105 @@ +# ============LICENSE_START=============================================== +# Copyright (C) 2023 Nordix Foundation. 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================================================= +# + +spring: + profiles: + active: prod + main: + allow-bean-definition-overriding: true + aop: + auto: false +management: + endpoints: + web: + exposure: + # Enabling of springboot actuator features. See springboot documentation. + include: "loggers,logfile,health,info,metrics,threaddump,heapdump" + endpoint: + shutdown: + enabled: true +lifecycle: + timeout-per-shutdown-phase: "20s" +springdoc: + show-actuator: true +logging: + # Configuration of logging + level: + ROOT: WARN + org.apache.kafka: WARN + org.springframework: ERROR + org.springframework.data: ERROR + org.springframework.web.reactive.function.client.ExchangeFunctions: ERROR + org.oran.pmproducer: TRACE + pattern: + console: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger{20} - %msg%n" + file: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger{20} - %msg%n" + + file: + name: /var/log/pm-producer-service/application.log +server: + # Configuration of the HTTP/REST server. The parameters are defined and handeled by the springboot framework. + # See springboot documentation. + port : 8435 + http-port: 8084 + ssl: + key-store-type: JKS + key-store-password: policy_agent + key-store: /opt/app/pm-producer-service/etc/cert/keystore.jks + key-password: policy_agent + key-alias: policy_agent + shutdown: "graceful" +app: + webclient: + # Configuration of the trust store used for the HTTP client (outgoing requests) + # The file location and the password for the truststore is only relevant if trust-store-used == true + # Note that the same keystore as for the server is used. + trust-store-used: false + trust-store-password: policy_agent + trust-store: /opt/app/pm-producer-service/etc/cert/truststore.jks + # Configuration of usage of HTTP Proxy for the southbound accesses. + # The HTTP proxy (if configured) will only be used for accessing NearRT RIC:s + http.proxy-host: + http.proxy-port: 0 + ics-base-url: http://ics:8083 + configuration-filepath: /opt/app/pm-producer-service/data/application_configuration.json + #Override from env var + pm-producer-base-url: + # KAFKA boostrap servers. This is only needed if there are Information Types that uses a kafkaInputTopic + # several redundant boostrap servers can be specified, separated by a comma ','. + kafka: + bootstrap-servers: kafka-1:9097 + # The maximum number of records returned in a single call to poll() (default 100) + max-poll-records: 500 + # Configues if oath2 tokens shall be used. If set to true, auth-token-file must also be configured + use-oath-token: true + ssl: + key-store-type: PEM + key-store-location: + # key password is needed if the private key is encrypted + key-store-password: + trust-store-type: PEM + trust-store-location: + # If the file name is empty, no authorization token is used + auth-token-file: /token-cache/jwt.txt + pm-files-path: /pm-files + zip-output: false + s3: + endpointOverride: $KPADP_MINIO + accessKeyId: admin + secretAccessKey: adminadmin + locksBucket: pm-files-json-locks + bucket: pm-files-json diff --git a/docker-proj/config/pmpr/application.yaml b/docker-proj/config/pmpr/application.yaml new file mode 100644 index 0000000..2d7e428 --- /dev/null +++ b/docker-proj/config/pmpr/application.yaml @@ -0,0 +1,105 @@ +# ============LICENSE_START=============================================== +# Copyright (C) 2023 Nordix Foundation. 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================================================= +# + +spring: + profiles: + active: prod + main: + allow-bean-definition-overriding: true + aop: + auto: false +management: + endpoints: + web: + exposure: + # Enabling of springboot actuator features. See springboot documentation. + include: "loggers,logfile,health,info,metrics,threaddump,heapdump" + endpoint: + shutdown: + enabled: true +lifecycle: + timeout-per-shutdown-phase: "20s" +springdoc: + show-actuator: true +logging: + # Configuration of logging + level: + ROOT: WARN + org.apache.kafka: WARN + org.springframework: ERROR + org.springframework.data: ERROR + org.springframework.web.reactive.function.client.ExchangeFunctions: ERROR + org.oran.pmproducer: TRACE + pattern: + console: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger{20} - %msg%n" + file: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger{20} - %msg%n" + + file: + name: /var/log/pm-producer-service/application.log +server: + # Configuration of the HTTP/REST server. The parameters are defined and handeled by the springboot framework. + # See springboot documentation. + port : 8435 + http-port: 8084 + ssl: + key-store-type: JKS + key-store-password: policy_agent + key-store: /opt/app/pm-producer-service/etc/cert/keystore.jks + key-password: policy_agent + key-alias: policy_agent + shutdown: "graceful" +app: + webclient: + # Configuration of the trust store used for the HTTP client (outgoing requests) + # The file location and the password for the truststore is only relevant if trust-store-used == true + # Note that the same keystore as for the server is used. + trust-store-used: false + trust-store-password: policy_agent + trust-store: /opt/app/pm-producer-service/etc/cert/truststore.jks + # Configuration of usage of HTTP Proxy for the southbound accesses. + # The HTTP proxy (if configured) will only be used for accessing NearRT RIC:s + http.proxy-host: + http.proxy-port: 0 + ics-base-url: http://ics:8083 + configuration-filepath: /opt/app/pm-producer-service/data/application_configuration.json + #Override from env var + pm-producer-base-url: + # KAFKA boostrap servers. This is only needed if there are Information Types that uses a kafkaInputTopic + # several redundant boostrap servers can be specified, separated by a comma ','. + kafka: + bootstrap-servers: kafka-1:9097 + # The maximum number of records returned in a single call to poll() (default 100) + max-poll-records: 500 + # Configues if oath2 tokens shall be used. If set to true, auth-token-file must also be configured + use-oath-token: true + ssl: + key-store-type: PEM + key-store-location: + # key password is needed if the private key is encrypted + key-store-password: + trust-store-type: PEM + trust-store-location: + # If the file name is empty, no authorization token is used + auth-token-file: /token-cache/jwt.txt + pm-files-path: /pm-files + zip-output: false + s3: + endpointOverride: + accessKeyId: admin + secretAccessKey: adminadmin + locksBucket: pm-files-json-locks + bucket: pm-files-json diff --git a/docker-proj/config/pmpr/application_configuration-minio-template.json b/docker-proj/config/pmpr/application_configuration-minio-template.json new file mode 100644 index 0000000..f847251 --- /dev/null +++ b/docker-proj/config/pmpr/application_configuration-minio-template.json @@ -0,0 +1,14 @@ + { + "types": [ + { + "id": "PmData", + "kafkaInputTopic": "json-file-ready-kpadp", + "useHttpProxy": false, + "dataType": "pmData", + "inputJobType": "xml-file-data-to-filestore", + "inputJobDefinition": { + "kafkaOutputTopic": "json-file-ready-kpadp" + } + } + ] + } diff --git a/docker-proj/config/pmpr/application_configuration.json b/docker-proj/config/pmpr/application_configuration.json new file mode 100644 index 0000000..f847251 --- /dev/null +++ b/docker-proj/config/pmpr/application_configuration.json @@ -0,0 +1,14 @@ + { + "types": [ + { + "id": "PmData", + "kafkaInputTopic": "json-file-ready-kpadp", + "useHttpProxy": false, + "dataType": "pmData", + "inputJobType": "xml-file-data-to-filestore", + "inputJobDefinition": { + "kafkaOutputTopic": "json-file-ready-kpadp" + } + } + ] + } diff --git a/docker-proj/config/pmpr/token-cache/jwt.txt b/docker-proj/config/pmpr/token-cache/jwt.txt new file mode 100644 index 0000000..e69de29 diff --git a/docker-proj/config/ves-collector/collector.properties b/docker-proj/config/ves-collector/collector.properties new file mode 100644 index 0000000..3cd0a1d --- /dev/null +++ b/docker-proj/config/ves-collector/collector.properties @@ -0,0 +1,77 @@ +############################################################################### +## +## Collector Server config +## +## - Default values are shown as commented settings. +## +############################################################################### +## +## HTTP(S) service +## +## Normally: +## +## - 8080 is http service +## - https is disabled by default +## +## - At this time, the server always binds to 0.0.0.0 +## +## +collector.service.port=8080 + +## Authentication is only supported via secure port +## When enabled - require valid keystore defined +collector.service.secure.port=8443 + +# auth.method flags: +# +# noAuth - default option - no security (http) +# certBasicAuth - auth by certificate and basic auth username / password (https) +#auth.method=certBasicAuth +auth.method=noAuth + +## Combination of userid,hashPassword encoded pwd list to be supported +## userid and pwd comma separated; pipe delimitation between each pair +## Password is generated by crypt-password library using BCrypt algorithm stored in dcaegen2/sdk package +## or https://nexus.onap.org/#nexus-search;quick~crypt-password +header.authlist=sample1,$2a$10$0buh.2WeYwN868YMwnNNEuNEAMNYVU9.FSMJGyIKV3dGET/7oGOi6 + +## The keystore must be setup per installation when secure port is configured +collector.keystore.file.location=etc/keystore +collector.keystore.passwordfile=etc/passwordfile + +collector.cert.subject.matcher=etc/certSubjectMatcher.properties + +## The truststore must be setup per installation when mutual tls support is configured +collector.truststore.file.location=etc/truststore +collector.truststore.passwordfile=etc/trustpasswordfile + +## Schema Validation checkflag +## default no validation checkflag (-1) +## If enabled (1) - schemafile location must be specified +collector.schema.checkflag=1 +collector.schema.file={\"v1\":\"./etc/CommonEventFormat_27.2.json\",\"v2\":\"./etc/CommonEventFormat_27.2.json\",\"v3\":\"./etc/CommonEventFormat_27.2.json\",\"v4\":\"./etc/CommonEventFormat_27.2.json\",\"v5\":\"./etc/CommonEventFormat_28.4.1.json\",\"v7\":\"./etc/CommonEventFormat_30.2.1_ONAP.json\"} + +## Schema StndDefinedFields Validation checkflag +## default no validation checkflag (-1) +## If enabled (1) - schema files locations must be specified, mapping file path must be specified, schema reference path +## in event json must be specified, path to stndDefined data field in event json must be specified +collector.externalSchema.checkflag=1 +collector.externalSchema.schemasLocation=./etc/externalRepo/ +collector.externalSchema.mappingFileLocation=./etc/externalRepo/schema-map.json +event.externalSchema.schemaRefPath=$.event.stndDefinedFields.schemaReference +event.externalSchema.stndDefinedDataPath=$.event.stndDefinedFields.data + +## List all streamid per domain to be supported. The streamid should match to channel name on dmaapfile +collector.dmaap.streamid=fault=ves-fault|syslog=ves-syslog|heartbeat=ves-heartbeat|measurementsForVfScaling=ves-measurement|mobileFlow=ves-mobileflow|other=ves-other|stateChange=ves-statechange|thresholdCrossingAlert=ves-thresholdCrossingAlert|voiceQuality=ves-voicequality|sipSignaling=ves-sipsignaling|notification=ves-measurement|pnfRegistration=ves-pnfRegistration|3GPP-FaultSupervision=ves-3gpp-fault-supervision|3GPP-Heartbeat=ves-3gpp-heartbeat|3GPP-Provisioning=ves-3gpp-provisioning|3GPP-PerformanceAssurance=ves-3gpp-performance-assurance|o-ran-sc-du-hello-world-pm-streaming-oas3=ves-o-ran-sc-du-hello-world-pm-streaming-oas3 +collector.dmaapfile=etc/ves-dmaap-config.json + +## Path to the file containing description of api versions +collector.description.api.version.location=etc/api_version_description.json + +## Event transformation Flag - when set expects configurable transformation +## defined under ./etc/eventTransform.json +## Enabled by default; to disable set to 0 +event.transform.flag=1 + +# Describes at what frequency (measured in minutes) should application try to fetch config from CBS +collector.dynamic.config.update.frequency=5 diff --git a/docker-proj/config/ves-collector/ves-dmaap-config.json b/docker-proj/config/ves-collector/ves-dmaap-config.json new file mode 100644 index 0000000..7fc3f39 --- /dev/null +++ b/docker-proj/config/ves-collector/ves-dmaap-config.json @@ -0,0 +1,9 @@ +{ + "ves-measurement": { + "type": "message_router", + "dmaap_info": { + "location": "mtl5", + "topic_url": "http://message-router:3904/events/file-ready/", + } + } +} diff --git a/docker-proj/docker-compose-dfc1.yaml b/docker-proj/docker-compose-dfc1.yaml new file mode 100644 index 0000000..c2b57ec --- /dev/null +++ b/docker-proj/docker-compose-dfc1.yaml @@ -0,0 +1,53 @@ +# ============LICENSE_START=============================================== +# Copyright (C) 2023 Nordix Foundation. 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================================================= +# + +version: '3.0' +networks: + default: + external: true + name: nonrtric-docker-net + +services: + auth-token-file-dfc: + image: $AUTH_TOKEN_IMAGE + environment: + - CREDS_GRANT_TYPE=client_credentials + - CREDS_CLIENT_SECRET=$DFC_CLIENT_SECRET + - CREDS_CLIENT_ID=dfc + - AUTH_SERVICE_URL=http://keycloak:8080/realms/nonrtric-realm/protocol/openid-connect/token + - OUTPUT_FILE=/token-cache/jwt.txt + volumes: + - ./config/dfc1/token-cache:/token-cache + labels: + - "ranpm=yes" + + dfc1: + container_name: dfc1 + user: root + image: $DFC_IMAGE + ports: + - 8433:8433 + volumes: + - ./config/dfc1/application.yaml:/opt/app/datafile/config/application.yaml + - ./config/dfc1/truststore.jks:/opt/app/datafile/config/truststore.jks + - ./shared-volume:/tmp/onap_datafile/ + - ./config/dfc1/token-cache:/token-cache + # truststore is updated in runtime + depends_on: + - auth-token-file-dfc + labels: + - "ranpm=yes" diff --git a/docker-proj/docker-compose-k1.yaml b/docker-proj/docker-compose-k1.yaml new file mode 100644 index 0000000..515c493 --- /dev/null +++ b/docker-proj/docker-compose-k1.yaml @@ -0,0 +1,127 @@ +# ============LICENSE_START=============================================== +# Copyright (C) 2023 Nordix Foundation. 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================================================= +# + +version: '3.0' +networks: + default: + external: true + name: nonrtric-docker-net + +services: + zookeeper-1: + image: ${STRIMZI_IMAGE} + command: [ + "sh", "-c", + "bin/zookeeper-server-start.sh config/zookeeper.properties" + ] + ports: + - '2181:2181' + environment: + ZOOKEEPER_CLIENT_PORT: 2181 + ZOOKEEPER_TICK_TIME: 2000 + LOG_DIR: /tmp/logs + labels: + - "ranpm=yes" + + kafka-1: + image: ${STRIMZI_IMAGE} + command: [ + "sh", "-c", + "bin/kafka-server-start.sh /tmp/kafka/strimzi.properties" + ] + environment: + LOG_DIR: /tmp/logs + depends_on: + - zookeeper-1 + ports: + - "9092:9092" + - "9097:9097" + labels: + - "ranpm=yes" + volumes: + - ./config/kafka/strimzi.properties:/tmp/kafka/strimzi.properties + + redpanda: + container_name: redpanda-console + image: ${REDPANDA_IMAGE} + restart: on-failure + hostname: redpanda-console + ports: + - "8780:8080" + depends_on: + - kafka-1 + environment: + KAFKA_BROKERS: kafka-1:9092 + labels: + - "ranpm=yes" + + message-router: + container_name: message-router + image: ${DMAAP_IMAGE} + ports: + - 3904:3904 + - 3905:3905 + environment: + enableCadi: 'false' + volumes: + - ./config/dmaap/MsgRtrApi.properties:/appl/dmaapMR1/bundleconfig/etc/appprops/MsgRtrApi.properties + - ./config/dmaap/logback.xml:/appl/dmaapMR1/bundleconfig/etc/logback.xml + depends_on: + - zookeeper-1 + - kafka-1 + labels: + - "ranpm=yes" + + ves-collector: + image: ${VES_COLLECTOR_IMAGE} + container_name: ves-collector + environment: + DMAAPHOST: message-router + ports: + - 8080:8080 + - 8443:8443 + volumes: + - ./config/ves-collector/collector.properties:/opt/app/VESCollector/etc/collector.properties + - ./config/ves-collector/ves-dmaap-config.json:/opt/app/VESCollector/etc/ves-dmaap-config.json + labels: + - "ranpm=yes" + + ics: + image: ${ICS_IMAGE} + container_name: ics + volumes: + - ./config/ics/application.yaml:/opt/app/information-coordinator-service/config/application.yaml + ports: + - 8083:8083 + - 8434:8434 + labels: + - "ranpm=yes" + + minio: + image: ${MINIO_IMAGE} + container_name: minio-server + command: server /data --console-address ":9001" + environment: + MINIO_ROOT_USER: admin + MINIO_ROOT_PASSWORD: adminadmin + ports: + - 9000:9000 + - 9001:9001 + labels: + - "ranpm=yes" + volumes: + - /tmp/minio-test/0:/data diff --git a/docker-proj/docker-compose-pm-https.yaml b/docker-proj/docker-compose-pm-https.yaml new file mode 100644 index 0000000..bf1417f --- /dev/null +++ b/docker-proj/docker-compose-pm-https.yaml @@ -0,0 +1,36 @@ +# ============LICENSE_START=============================================== +# Copyright (C) 2023 Nordix Foundation. 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================================================= +# + +version: '3.0' +networks: + default: + external: true + name: nonrtric-docker-net + +services: + pm-https-server-${CONTAINER_NUM}: + container_name: pm-https-server-${CONTAINER_NUM} + image: $PM_HTTPSSERVER_IMAGE + environment: + ALWAYS_RETURN: /files/pm.xml.gz + volumes: + - ./ne-files:/files:rw + - ./config/https/certs/https-${CONTAINER_NUM}.key:/certs/server.key + - ./config/https/certs/https-${CONTAINER_NUM}.crt:/certs/server.crt + labels: + - "ranpm=yes" + diff --git a/docker-proj/docker-compose-producers.yaml b/docker-proj/docker-compose-producers.yaml new file mode 100644 index 0000000..a1df4b8 --- /dev/null +++ b/docker-proj/docker-compose-producers.yaml @@ -0,0 +1,75 @@ +# ============LICENSE_START=============================================== +# Copyright (C) 2023 Nordix Foundation. 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================================================= +# + +version: '3.0' +networks: + default: + external: true + name: nonrtric-docker-net + +services: + kafka-producer-pm-xml2json-0: + image: $KPX_IMAGE + container_name: kafka-producer-pm-xml2json-0 + volumes: + - ./config/pmfc/application_configuration_xml2json.json:/application_configuration.json + - ./shared-volume:$FILES_VOLUME + ports: + - 9881:80 + labels: + - "ranpm=yes" + environment: + KP: kafka-producer-pm-xml2json-0 + FILES_VOLUME: $FILES_VOLUME + KAFKA_SERVER: kafka-1:9097 + ICS: ics:8083 + SELF: kafka-producer-pm-xml2json-0:80 + FILESTORE_USER: admin + FILESTORE_PWD: adminadmin + FILESTORE_SERVER: minio-server:9000 + CREDS_GRANT_TYPE: client_credentials + CREDS_CLIENT_SECRET: $XML2JSON_CLIENT_SECRET + CREDS_CLIENT_ID: kafka-producer-pm-xml2json + AUTH_SERVICE_URL: http://keycloak:8080/realms/nonrtric-realm/protocol/openid-connect/token + + auth-token-file-pm-producer-json2kafka: + image: $AUTH_TOKEN_IMAGE + environment: + CREDS_GRANT_TYPE: client_credentials + CREDS_CLIENT_SECRET: $JSON2KAFKA_CLIENT_SECRET + CREDS_CLIENT_ID: pm-producer-json2kafka + AUTH_SERVICE_URL: http://keycloak:8080/realms/nonrtric-realm/protocol/openid-connect/token + OUTPUT_FILE: /token-cache/jwt.txt + volumes: + - ./config/pmpr/token-cache:/token-cache + labels: + - "ranpm=yes" + + pm-producer-json2kafka: + image: $DMAAPADP_IMAGE + container_name: pm-producer-json2kafka + depends_on: + - auth-token-file-pm-producer-json2kafka + volumes: + - ./config/pmpr/application_configuration.json:/opt/app/pm-producer-service/data/application_configuration.json + - ./config/pmpr/application.yaml:/opt/app/pm-producer-service/config/application.yaml + - ./config/pmpr/token-cache:/token-cache + - ./shared-volume:$FILES_VOLUME + ports: + - 8084:8084 + labels: + - "ranpm=yes" diff --git a/docker-proj/docker-compose-security.yaml b/docker-proj/docker-compose-security.yaml new file mode 100644 index 0000000..845ecd7 --- /dev/null +++ b/docker-proj/docker-compose-security.yaml @@ -0,0 +1,80 @@ +# ============LICENSE_START=============================================== +# Copyright (C) 2023 Nordix Foundation. 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================================================= +# + +version: '3.0' +networks: + default: + external: true + name: nonrtric-docker-net + +services: + bundle-server: + image: ${BUNDLE_IMAGE} + container_name: bundle-server + ports: + - 80:80 + volumes: + - ./config/bundle-server/bundle.tar.gz:/usr/share/nginx/html/bundle.tar.gz + labels: + - "ranpm=yes" + + opa-kafka: + image: ${OPA_IMAGE} + container_name: opa-kafka + ports: + - 8181:8181 + command: + - "run" + - "--server" + - "--log-format=json-pretty" + - "--set=decision_logs.console=true" + - "--set=services.authz.url=http://bundle-server" + - "--set=bundles.authz.service=authz" + - "--set=bundles.authz.resource=bundle.tar.gz" + depends_on: + - bundle-server + labels: + - "ranpm=yes" + + keycloak: + image: ${KEYCLOAK_IMAGE} + container_name: keycloak + command: + - "start" + - "--https-key-store-file=/etc/x509/https/keycloak.server.keystore.p12" + - "--https-key-store-password=$${KC_KEYSTORE_PASSWORD}" + - "--https-key-store-type=PKCS12" + - "--https-trust-store-file=/etc/x509/https/keycloak.client.truststore.p12" + - "--https-trust-store-password=$${KC_KEYSTORE_PASSWORD}" + - "--https-trust-store-type=PKCS12" + - "--https-client-auth=request" + - "--http-enabled=true" + ports: + - 8462:8080 + - 8463:8443 + environment: + - KEYCLOAK_ADMIN=admin + - KEYCLOAK_ADMIN_PASSWORD=admin + - KC_KEYSTORE_PASSWORD=changeit + - KC_HOSTNAME=keycloak + - KC_HTTP_ENABLED=true + - KC_HTTPS_CLIENT_AUTH=request + volumes: + - ./config/keycloak/certs/keycloak.client.truststore.p12:/etc/x509/https/keycloak.client.truststore.p12 + - ./config/keycloak/certs/keycloak.server.keystore.p12:/etc/x509/https/keycloak.server.keystore.p12 + labels: + - "ranpm=yes" diff --git a/docker-proj/docker-setup.sh b/docker-proj/docker-setup.sh new file mode 100755 index 0000000..bee4bcd --- /dev/null +++ b/docker-proj/docker-setup.sh @@ -0,0 +1,276 @@ +#!/bin/bash + +# ============LICENSE_START=============================================== +# Copyright (C) 2023 Nordix Foundation. 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================================================= +# + +echo $SP +print_usage() { + echo "Usage: docker-setup.sh" + exit 1 +} + +check_error() { + if [ $1 -ne 0 ]; then + echo "Failed $2" + echo "Exiting..." + exit 1 + fi +} + +setup_init() { +echo "Cleaning previously started containers..." + +./docker-tear-down.sh + +echo "Docker pruning" +docker system prune -f +docker volume prune -f + +echo "Creating dir for minio volume mapping" + +mkdir -p /tmp/minio-test +mkdir -p /tmp/minio-test/0 +rm -rf /tmp/minio-test/0/* + +NW="nonrtric-docker-net" +echo "Creating docker network" +docker network inspect $NW 2> /dev/null 1> /dev/null +if [ $? -ne 0 ]; then + docker network create $NW +else + echo " Network: $NW exits" +fi +} + +pull_image() { +if [ -z "$(docker images -q $1)" ]; then + echo "Pulling image... "$1 + docker pull $1 + check_error $? +fi +} + +check_images(){ +export KEYCLOAK_IMAGE=quay.io/keycloak/keycloak:20.0.1 +pull_image $KEYCLOAK_IMAGE + +export OPA_IMAGE=openpolicyagent/opa:latest-envoy +pull_image $OPA_IMAGE + +export BUNDLE_IMAGE=nginx:1.21 +pull_image $BUNDLE_IMAGE + +export MINIO_IMAGE=minio/minio +pull_image $MINIO_IMAGE + +export REDPANDA_IMAGE=redpandadata/console:v2.2.3 +pull_image $REDPANDA_IMAGE + +export STRIMZI_IMAGE=quay.io/strimzi/kafka:0.35.0-kafka-3.4.0 +pull_image $STRIMZI_IMAGE + +export DMAAP_IMAGE=nexus3.onap.org:10002/onap/dmaap/dmaap-mr:1.4.4 +pull_image $DMAAP_IMAGE + +export VES_COLLECTOR_IMAGE=nexus3.onap.org:10002/onap/org.onap.dcaegen2.collectors.ves.vescollector:1.12.3 +pull_image $VES_COLLECTOR_IMAGE + +export ICS_IMAGE="nexus3.o-ran-sc.org:10001/o-ran-sc/nonrtric-plt-informationcoordinatorservice:1.5.0" +pull_image $ICS_IMAGE + +export DMAAPADP_IMAGE="nexus3.o-ran-sc.org:10001/o-ran-sc/nonrtric-plt-pmproducer:1.0.1" +pull_image $DMAAPADP_IMAGE + +export DFC_IMAGE="nexus3.o-ran-sc.org:10001/o-ran-sc/nonrtric-plt-ranpm-datafilecollector:1.0.0" +pull_image $DFC_IMAGE + +export KPX_IMAGE="nexus3.o-ran-sc.org:10001/o-ran-sc/nonrtric-plt-ranpm-pm-file-converter:1.0.1" +pull_image $KPX_IMAGE + +export AUTH_TOKEN_IMAGE=nexus3.o-ran-sc.org:10001/o-ran-sc/nonrtric-plt-auth-token-fetch:1.1.1 +pull_image $AUTH_TOKEN_IMAGE +} + +setup_keycloak() { +./config/keycloak/certs/gen-certs.sh +echo "Starting containers for: keycloak, opa" +envsubst '$KEYCLOAK_IMAGE,$OPA_IMAGE,$BUNDLE_IMAGE' < docker-compose-security.yaml > docker-compose-security_gen.yaml +docker-compose -p security -f docker-compose-security_gen.yaml up -d +} + +populate_keycloak(){ +# Create realm in keycloak +. scripts/populate_keycloak.sh + +create_realms nonrtric-realm +while [ $? -ne 0 ]; do + create_realms nonrtric-realm +done + +# Create client for admin calls +cid="console-setup" +create_clients nonrtric-realm $cid +check_error $? +generate_client_secrets nonrtric-realm $cid +check_error $? + +echo "" + +cid="console-setup" +__get_admin_token +TOKEN=$(get_client_token nonrtric-realm $cid) + +cid="kafka-producer-pm-xml2json" +create_clients nonrtric-realm $cid +check_error $? +generate_client_secrets nonrtric-realm $cid +check_error $? + +export XML2JSON_CLIENT_SECRET=$(< .sec_nonrtric-realm_$cid) + +cid="pm-producer-json2kafka" +create_clients nonrtric-realm $cid +check_error $? +generate_client_secrets nonrtric-realm $cid +check_error $? + +export JSON2KAFKA_CLIENT_SECRET=$(< .sec_nonrtric-realm_$cid) + +cid="dfc" +create_clients nonrtric-realm $cid +check_error $? +generate_client_secrets nonrtric-realm $cid +check_error $? + +export DFC_CLIENT_SECRET=$(< .sec_nonrtric-realm_$cid) +} + +setup_kafka() { +echo "Starting containers for: kafka, zookeeper, kafka client, ics, minio" +envsubst '$DMAAP_IMAGE,$VES_COLLECTOR_IMAGE,$ICS_IMAGE,$REDPANDA_IMAGE,$STRIMZI_IMAGE,$MINIO_IMAGE' < docker-compose-k1.yaml > docker-compose-k1_gen.yaml +docker-compose -p common -f docker-compose-k1_gen.yaml up -d +} + +create_topics() { +echo "Creating topics: $TOPICS, may take a while ..." +for t in $TOPICS; do + retcode=1 + rt=43200000 + echo "Creating topic $t with retention $(($rt/1000)) seconds" + while [ $retcode -ne 0 ]; do + docker exec -it common-kafka-1-1 ./bin/kafka-topics.sh \ + --create --topic $t --config retention.ms=$rt --bootstrap-server kafka-1:9092 + retcode=$? + done +done +} + +setup_dfc() { +export NUM_DFC=1 +echo "Starting $NUM_DFC dfc" +export DFC_MINIO=http://minio-server:9000 +export FILES_VOLUME="/pm-files" + +cwd=$PWD +for (( i=1; i<=$NUM_DFC; i++ )); do + echo "Updating dfc$i truststore" + cd $cwd/config/dfc$i + cp ../dfc-common/template-truststore.jks truststore.jks + check_error $? + + echo " Adding https ca cert to dfc$i truststore" + keytool -importcert -alias pm-https -file $cwd/config/https/certs/httpsca.crt -keystore truststore.jks -storetype JKS -storepass $(cat ../dfc-common/truststore.pass) -noprompt + check_error $? +done +cd $cwd + +chmod 622 config/dfc1/token-cache/jwt.txt +envsubst < docker-compose-dfc1.yaml > docker-compose-dfc_gen.yaml +envsubst < config/dfc1/application-template.yaml > config/dfc1/application.yaml +docker-compose -p dfc -f docker-compose-dfc_gen.yaml up -d +} + +setup_producers() { +echo "Starting producers" +chmod 622 config/pmpr/token-cache/jwt.txt +cp config/pmpr/application_configuration-minio-template.json config/pmpr/application_configuration.json +envsubst < config/pmpr/application-minio-template.yaml > config/pmpr/application.yaml + +export KPADP_MINIO=http://minio-server:9000 +envsubst < docker-compose-producers.yaml > docker-compose-producers_gen.yaml +docker-compose -p prod -f docker-compose-producers_gen.yaml up -d +} + +create_http_servers_certs() { +export NUM_HTTP=10 +echo "" +./config/https/certs/gen-certs.sh $NUM_HTTP +} + +setup_http_servers() { +cp pm-files/pm* ne-files + +echo "Starting http servers" +export PM_HTTPSSERVER_IMAGE="pm-https-server:latest" + +grep -B 21 "services:" docker-compose-pm-https.yaml > docker-compose-pm-https_gen.yaml +for (( i=1; i<=$NUM_HTTP; i++ )); do + export CONTAINER_NUM=$i + grep -A 12 "services:" docker-compose-pm-https.yaml | grep -v "services:" | \ + envsubst '$CONTAINER_NUM,$PM_HTTPSSERVER_IMAGE' >> docker-compose-pm-https_gen.yaml +done +docker-compose -p pm-https -f docker-compose-pm-https_gen.yaml up -d +} + +export KAFKA_NUM_PARTITIONS=10 +export TOPICS="file-ready collected-file json-file-ready-kp json-file-ready-kpadp pmreports" + +setup_init + +check_images + +setup_keycloak +check_error $? + +# Wait for keycloak to start +echo 'Waiting for keycloak to be ready' +until [ $(curl -s -w '%{http_code}' -o /dev/null 'http://localhost:8462') -eq 200 ]; +do + echo -n '.' + sleep 2 +done +echo "" +populate_keycloak + +setup_kafka +check_error $? + +create_topics + +create_http_servers_certs +check_error $? + +setup_dfc +check_error $? + +setup_producers +check_error $? + +setup_http_servers +check_error $? + +scripts/clean-shared-volume.sh diff --git a/docker-proj/docker-tear-down.sh b/docker-proj/docker-tear-down.sh new file mode 100755 index 0000000..4cb26b8 --- /dev/null +++ b/docker-proj/docker-tear-down.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +# ============LICENSE_START=============================================== +# Copyright (C) 2023 Nordix Foundation. 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================================================= +# + +echo "Stop and remove all containers in the project" + +docker stop $(docker ps -qa --filter "label=ranpm") 2> /dev/null +docker stop $(docker ps -qa --filter "label=ranpm") 2> /dev/null +docker rm -f $(docker ps -qa --filter "label=ranpm") 2> /dev/null + +docker-compose -f docker-compose-pm-https_gen.yaml -p pm-https down +docker-compose -f docker-compose-producers_gen.yaml -p prod down +docker-compose -f docker-compose-dfc_gen.yaml -p dfc down +docker-compose -f docker-compose-k1_gen.yaml -p common down +docker-compose -f docker-compose-security_gen.yaml -p security down + diff --git a/docker-proj/ne-files/dummy.txt b/docker-proj/ne-files/dummy.txt new file mode 100644 index 0000000..013ed0d --- /dev/null +++ b/docker-proj/ne-files/dummy.txt @@ -0,0 +1 @@ +Empty file \ No newline at end of file diff --git a/docker-proj/ne-files/pm.xml b/docker-proj/ne-files/pm.xml new file mode 100644 index 0000000..8fde416 --- /dev/null +++ b/docker-proj/ne-files/pm.xml @@ -0,0 +1,4023 @@ + + + + + + + + + + + + + + pmCounterNumber0 + pmCounterNumber1 + pmCounterNumber2 + pmCounterNumber3 + pmCounterNumber4 + pmCounterNumber5 + pmCounterNumber6 + pmCounterNumber7 + pmCounterNumber8 + pmCounterNumber9 + pmCounterNumber10 + pmCounterNumber11 + pmCounterNumber12 + pmCounterNumber13 + pmCounterNumber14 + pmCounterNumber15 + pmCounterNumber16 + pmCounterNumber17 + pmCounterNumber18 + pmCounterNumber19 + pmCounterNumber20 + pmCounterNumber21 + pmCounterNumber22 + pmCounterNumber23 + pmCounterNumber24 + pmCounterNumber25 + pmCounterNumber26 + pmCounterNumber27 + pmCounterNumber28 + pmCounterNumber29 + pmCounterNumber30 + pmCounterNumber31 + pmCounterNumber32 + pmCounterNumber33 + pmCounterNumber34 + pmCounterNumber35 + pmCounterNumber36 + pmCounterNumber37 + pmCounterNumber38 + pmCounterNumber39 + pmCounterNumber40 + pmCounterNumber41 + pmCounterNumber42 + pmCounterNumber43 + pmCounterNumber44 + pmCounterNumber45 + pmCounterNumber46 + pmCounterNumber47 + pmCounterNumber48 + pmCounterNumber49 + pmCounterNumber50 + pmCounterNumber51 + pmCounterNumber51Act + pmCounterNumber53 + pmCounterNumber53Act + pmCounterNumber55 + pmCounterNumber56 + pmCounterNumber57 + pmCounterNumber58 + pmCounterNumber59 + pmCounterNumber60 + pmCounterNumber60IntgProt64kbps + pmCounterNumber62 + pmCounterNumber63 + pmCounterNumber64 + pmCounterNumber65 + pmCounterNumber66 + pmCounterNumber67 + pmCounterNumber68 + pmCounterNumber69 + pmCounterNumber70 + pmCounterNumber71 + pmCounterNumber72 + pmCounterNumber73 + pmCounterNumber74 + pmCounterNumber75 + pmCounterNumber76 + pmCounterNumber77 + pmCounterNumber78 + pmCounterNumber79 + pmCounterNumber80 + pmCounterNumber81 + pmCounterNumber82 + pmCounterNumber83 + pmCounterNumber84 + pmCounterNumber84Em + pmCounterNumber84EmFbInd + pmCounterNumber87 + pmCounterNumber88 + pmCounterNumber89 + pmCounterNumber90 + pmCounterNumber91 + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + pmCounterNumber92 + pmCounterNumber93 + pmCounterNumber94 + pmCounterNumber95 + pmCounterNumber96 + pmCounterNumber97 + pmCounterNumber98 + pmCounterNumber99 + pmCounterNumber100 + pmCounterNumber101 + pmCounterNumber102 + pmCounterNumber103 + pmCounterNumber104 + pmCounterNumber105 + pmCounterNumber106 + pmCounterNumber107 + pmCounterNumber108 + pmCounterNumber108Init + pmCounterNumber110 + pmCounterNumber110Init + pmCounterNumber112 + pmCounterNumber112Init + pmCounterNumber114 + pmCounterNumber114Init + pmCounterNumber116 + pmCounterNumber116Init + pmCounterNumber118 + pmCounterNumber118Init + pmCounterNumber120 + pmCounterNumber120Init + pmCounterNumber122 + pmCounterNumber122Init + pmCounterNumber124 + pmCounterNumber125 + pmCounterNumber125Init + pmCounterNumber127 + pmCounterNumber127Init + pmCounterNumber129 + pmCounterNumber129Init + pmCounterNumber131 + pmCounterNumber131Init + pmCounterNumber133 + pmCounterNumber133Init + pmCounterNumber135 + pmCounterNumber135Init + pmCounterNumber137 + pmCounterNumber137Init + pmCounterNumber139 + pmCounterNumber139Init + pmCounterNumber141 + pmCounterNumber141Init + pmCounterNumber143 + pmCounterNumber143Init + pmCounterNumber145 + pmCounterNumber145Init + pmCounterNumber147 + pmCounterNumber147Init + pmCounterNumber149 + pmCounterNumber150 + pmCounterNumber150Init + pmCounterNumber152 + pmCounterNumber152Init + pmCounterNumber154 + pmCounterNumber154Init + pmCounterNumber156 + pmCounterNumber156Init + pmCounterNumber158 + pmCounterNumber158Ext + pmCounterNumber160 + pmCounterNumber161 + pmCounterNumber162 + pmCounterNumber163 + pmCounterNumber164 + pmCounterNumber165 + pmCounterNumber166 + pmCounterNumber1666 + pmCounterNumber168 + pmCounterNumber169 + pmCounterNumber170 + pmCounterNumber171 + pmCounterNumber172 + pmCounterNumber173 + pmCounterNumber174 + pmCounterNumber175 + pmCounterNumber176 + pmCounterNumber177 + pmCounterNumber178 + pmCounterNumber179 + pmCounterNumber180 + pmCounterNumber181 + pmCounterNumber182 + pmCounterNumber183 + pmCounterNumber184 + pmCounterNumber185 + pmCounterNumber185Qos + pmCounterNumber185Samp + pmCounterNumber185SampQos + pmCounterNumber189 + pmCounterNumber189Qos + pmCounterNumber191 + pmCounterNumber191Qos + pmCounterNumber193 + pmCounterNumber193Samp + pmCounterNumber195 + pmCounterNumber195Ext + pmCounterNumber197 + pmCounterNumber198 + pmCounterNumber199 + pmCounterNumber200 + pmCounterNumber200BsrGrant + pmCounterNumber200PreemptGrant + pmCounterNumber200PucchSrGrant + pmCounterNumber204 + pmCounterNumber205 + pmCounterNumber206 + pmCounterNumber207 + pmCounterNumber208 + pmCounterNumber209 + pmCounterNumber210 + pmCounterNumber211 + pmCounterNumber212 + pmCounterNumber213 + pmCounterNumber214 + pmCounterNumber215 + pmCounterNumber216 + pmCounterNumber216MacCe + pmCounterNumber218 + pmCounterNumber219 + pmCounterNumber220 + pmCounterNumber221 + pmCounterNumber222 + pmCounterNumber223 + pmCounterNumber224 + pmCounterNumber225 + pmCounterNumber226 + pmCounterNumber227 + pmCounterNumber228 + pmCounterNumber228Forced + pmCounterNumber230 + pmCounterNumber231 + pmCounterNumber232 + pmCounterNumber233 + pmCounterNumber234 + pmCounterNumber235 + pmCounterNumber236 + pmCounterNumber237 + pmCounterNumber238 + pmCounterNumber239 + pmCounterNumber240 + pmCounterNumber241 + pmCounterNumber242 + pmCounterNumber243 + pmCounterNumber244 + pmCounterNumber245 + pmCounterNumber246 + pmCounterNumber247 + pmCounterNumber248 + pmCounterNumber249 + pmCounterNumber250 + pmCounterNumber251 + pmCounterNumber252 + pmCounterNumber252Qos + pmCounterNumber254 + pmCounterNumber254Qos + + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2880 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 179 + 0 + 0,0,0,0 + 0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 900,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 1440001 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,1800001,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 5376 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 179 + 0 + 0,0,0,0 + 0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 900,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 1440001 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,1800001,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0 + 0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0 + 0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + pmCounterNumber256 + pmCounterNumber257 + pmCounterNumber258 + pmCounterNumber259 + pmCounterNumber260 + pmCounterNumber261 + pmCounterNumber262 + pmCounterNumber263 + pmCounterNumber263On + pmCounterNumber265 + pmCounterNumber266 + pmCounterNumber267 + pmCounterNumber267Auto + pmCounterNumber267AutoCbrs + pmCounterNumber267Man + pmCounterNumber267ManCbrs + + 0,0,0,0,0,0,0,0,0,15,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 10000 + 0 + 0 + 0 + 0 + 0 + + + 0,0,0,0,0,0,0,0,0,0,0,0,0,15,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 15000 + 0 + 0 + 0 + 0 + 0 + + + 15,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 15,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + pmCounterNumber272 + pmCounterNumber273 + pmCounterNumber274 + pmCounterNumber275 + pmCounterNumber276 + pmCounterNumber277 + pmCounterNumber278 + + 0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + 0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + + + + pmCounterNumber279 + pmCounterNumber280 + pmCounterNumber281 + pmCounterNumber282 + pmCounterNumber283 + pmCounterNumber284 + pmCounterNumber285 + pmCounterNumber286 + pmCounterNumber287 + pmCounterNumber288 + pmCounterNumber289 + pmCounterNumber290 + pmCounterNumber291 + pmCounterNumber292 + pmCounterNumber293 + pmCounterNumber294 + pmCounterNumber295 + pmCounterNumber296 + pmCounterNumber274 + + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0 + + + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0 + + + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0 + + + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0 + + + + + + + pmCounterNumber297 + + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + + + + pmCounterNumber297F0Distr + pmCounterNumber297F2Distr + + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + + + + pmCounterNumber300 + pmCounterNumber301 + pmCounterNumber302 + pmCounterNumber303 + pmCounterNumber304 + pmCounterNumber305 + + 0 + 0 + 0 + 180 + 0 + 0 + + + + + + + pmCounterNumber306 + pmCounterNumber307 + pmCounterNumber308 + pmCounterNumber309 + pmCounterNumber310 + pmCounterNumber311 + pmCounterNumber312 + pmCounterNumber313 + pmCounterNumber314 + pmCounterNumber315 + pmCounterNumber316 + pmCounterNumber317 + pmCounterNumber318 + pmCounterNumber319 + pmCounterNumber320 + pmCounterNumber321 + pmCounterNumber322 + pmCounterNumber323 + pmCounterNumber324 + pmCounterNumber324Act + pmCounterNumber326 + pmCounterNumber326Act + pmCounterNumber328 + pmCounterNumber329 + pmCounterNumber330 + pmCounterNumber331 + pmCounterNumber332 + pmCounterNumber333 + pmCounterNumber334 + pmCounterNumber335 + pmCounterNumber336 + pmCounterNumber337 + pmCounterNumber338 + pmCounterNumber339 + pmCounterNumber340 + pmCounterNumber341 + pmCounterNumber342 + pmCounterNumber343 + pmCounterNumber343Mos + pmCounterNumber345 + pmCounterNumber345Mos + pmCounterNumber347 + pmCounterNumber348 + pmCounterNumber349 + pmCounterNumber350 + pmCounterNumber350Mos + pmCounterNumber350Reatt + pmCounterNumber350ReattMos + pmCounterNumber354 + pmCounterNumber354Mos + pmCounterNumber301 + pmCounterNumber302 + pmCounterNumber303 + pmCounterNumber304 + pmCounterNumber305 + pmCounterNumber356 + pmCounterNumber357 + pmCounterNumber358 + + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + + + + + + + pmCounterNumber359 + pmCounterNumber360 + pmCounterNumber361 + pmCounterNumber362 + pmCounterNumber363 + pmCounterNumber364 + pmCounterNumber365 + pmCounterNumber366 + pmCounterNumber367 + pmCounterNumber368 + pmCounterNumber369 + pmCounterNumber370 + pmCounterNumber371 + pmCounterNumber372 + pmCounterNumber373 + pmCounterNumber374 + pmCounterNumber375 + pmCounterNumber376 + pmCounterNumber377 + + 0 + 0 + 0 + 0 + 32 + 16 + 0 + 16 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + + + + + + + pmCounterNumber378 + pmCounterNumber379 + pmCounterNumber380 + pmCounterNumber381 + pmCounterNumber382 + pmCounterNumber383 + pmCounterNumber384 + pmCounterNumber385 + pmCounterNumber386 + pmCounterNumber306 + pmCounterNumber307 + pmCounterNumber307ual + pmCounterNumber388 + pmCounterNumber389 + pmCounterNumber390 + pmCounterNumber391 + pmCounterNumber392 + pmCounterNumber393 + pmCounterNumber394 + pmCounterNumber395 + pmCounterNumber396 + pmCounterNumber397 + pmCounterNumber398 + pmCounterNumber399 + pmCounterNumber399Broadcasting + pmCounterNumber401 + pmCounterNumber402 + pmCounterNumber403 + pmCounterNumber404 + pmCounterNumber405 + pmCounterNumber406 + pmCounterNumber407 + pmCounterNumber407Qos + pmCounterNumber409 + pmCounterNumber410 + pmCounterNumber410Drb + pmCounterNumber410DrbQos + pmCounterNumber413 + pmCounterNumber413ResUe + pmCounterNumber415 + pmCounterNumber416 + pmCounterNumber417 + pmCounterNumber418 + pmCounterNumber419 + pmCounterNumber420 + pmCounterNumber421 + pmCounterNumber422 + pmCounterNumber423 + pmCounterNumber424 + pmCounterNumber425 + pmCounterNumber426 + pmCounterNumber427 + pmCounterNumber428 + pmCounterNumber429 + pmCounterNumber430 + pmCounterNumber431 + pmCounterNumber432 + pmCounterNumber433 + pmCounterNumber434 + pmCounterNumber435 + pmCounterNumber436 + pmCounterNumber437 + pmCounterNumber438 + pmCounterNumber439 + pmCounterNumber440 + pmCounterNumber441 + + 0 + 0 + 0 + 1800000 + 0 + 0 + 0 + 1800001 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 3032642268 + 20160056 + 15120000 + 816482268 + 0 + 2880 + 0 + 0 + 3780540 + 2520 + 0 + 900,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 900,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 5760004 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 1440004 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 2,1,1,2,2,3,2,1,1,0,0,0 + 15 + 0 + 0 + 0 + 0 + 0 + 60 + 15 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 179 + 0 + 0 + 0 + + + 0 + 0 + 0 + 1800000 + 0 + 0 + 0 + 1800001 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 5110563822 + 20160056 + 15120000 + 1375923822 + 0 + 5376 + 0 + 0 + 3780504 + 2352 + 0 + 900,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 900,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 5760004 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 1440004 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 3,1,2,1,2,0,3,2,0,0,0,0 + 14 + 0 + 0 + 0 + 0 + 0 + 56 + 14 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 179 + 0 + 0 + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 900 + 900 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 900 + 900 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + pmCounterNumber310 + pmCounterNumber311 + pmCounterNumber312 + pmCounterNumber313 + pmCounterNumber314 + pmCounterNumber347 + pmCounterNumber348 + pmCounterNumber349 + + 0 + 0 + 900 + 0 + 0 + 0 + 900 + 0 + + + + + + + pmCounterNumber442 + pmCounterNumber443 + pmCounterNumber444 + pmCounterNumber445 + pmCounterNumber446 + pmCounterNumber447 + pmCounterNumber448 + pmCounterNumber448PCell + pmCounterNumber448SCell + pmCounterNumber448Volte + pmCounterNumber452 + pmCounterNumber453 + pmCounterNumber454 + pmCounterNumber455 + pmCounterNumber114 + pmCounterNumber456 + pmCounterNumber457 + pmCounterNumber458 + pmCounterNumber122 + pmCounterNumber459 + pmCounterNumber460 + pmCounterNumber461 + pmCounterNumber462 + pmCounterNumber131 + pmCounterNumber463 + pmCounterNumber464 + pmCounterNumber143 + pmCounterNumber145 + pmCounterNumber147 + pmCounterNumber14916qam + pmCounterNumber149256Qam + pmCounterNumber14964Qam + pmCounterNumber149Iua16qam + pmCounterNumber149IuaQpsk + pmCounterNumber149Qpsk + pmCounterNumber471 + pmCounterNumber472 + pmCounterNumber473 + pmCounterNumber474 + pmCounterNumber475 + pmCounterNumber476 + pmCounterNumber477 + pmCounterNumber478 + pmCounterNumber248 + pmCounterNumber249 + pmCounterNumber479 + pmCounterNumber250 + pmCounterNumber251 + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + + + + + + + pmCounterNumber480 + pmCounterNumber481 + + 0 + 4,4,4 + + + 0 + 4,4,4 + + + 0 + 4,4,4 + + + 0 + , , + + + + 4,4,4 + + + + + + + pmCounterNumber482 + pmCounterNumber483 + pmCounterNumber484 + pmCounterNumber485 + pmCounterNumber486 + pmCounterNumber487 + pmCounterNumber488 + pmCounterNumber489 + pmCounterNumber490 + pmCounterNumber491 + + 0 + 51885 + 4628315 + 9190 + 0 + 15493 + 1956503 + 7326 + 0 + + + + 0 + 37309 + 2868954 + 4551 + 0 + 915 + 380361 + 4549 + 0 + + + + 0 + 15490 + 1512626 + 7326 + 0 + 51883 + 3492085 + 9190 + 0 + 0 + + + 0 + 916 + 260228 + 4549 + 0 + 37309 + 2097258 + 4551 + 0 + 0 + + + + + + + pmCounterNumber492 + pmCounterNumber493 + pmCounterNumber494 + pmCounterNumber495 + + 1077 + 1076 + 0 + 0 + + + 450 + 450 + 0 + 0 + + + 427 + 427 + 0 + 0 + + + 0 + 2147483647 + 0 + 0 + + + 0 + 2147483647 + 0 + 0 + + + + + + + pmCounterNumber496 + pmCounterNumber497 + pmCounterNumber498 + + 0,0,0,0,0,0 + 0 + 0 + + + 0,0,0,0,0,0 + 0 + 0 + + + 0,0,0,0,0,0 + 0 + 0 + + + 0,0,0,0,0,0 + 0 + 0 + + + 0,0,0,0,0,0 + 0 + 0 + + + 0,0,0,0,0,0 + 0 + 0 + + + 0,0,0,0,0,0 + 0 + 0 + + + 0,0,0,0,0,0 + 0 + 0 + + + 0,0,0,0,0,0 + 0 + 0 + + + 0,0,0,0,0,0 + 0 + 0 + + + 0,0,0,0,0,0 + 0 + 0 + + + 0,0,0,0,0,0 + 0 + 0 + + + 0,0,0,0,0,0 + 0 + 0 + + + 0,0,0,0,0,0 + 0 + 0 + + + + + + + pmCounterNumber499 + pmCounterNumber500 + pmCounterNumber501 + + 2951 + 3600 + 2922 + + + 3018 + 4200 + 2953 + + + 2809 + 3500 + 2812 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + 2810 + 3100 + 2830 + + + 2717 + 3600 + 2775 + + + 2700 + 3900 + 2773 + + + 0 + 0 + 0 + + + 2744 + 3200 + 2775 + + + 2863 + 3800 + 2898 + + + 2684 + 3900 + 2737 + + + 2892 + 4400 + 2893 + + + + + + + pmCounterNumber502 + pmCounterNumber503 + + 0 + 0 + + + 1310 + 32552 + + + 0 + 0 + + + 1430 + 32904 + + + 0 + 0 + + + 1410 + 33141 + + + 1388 + 32558 + + + 1384 + 32505 + + + 1297 + 32999 + + + 1297 + 33041 + + + 1474 + 32588 + + + 0 + 0 + + + 1463 + 32493 + + + 1464 + 32534 + + + + + + + pmCounterNumber482 + pmCounterNumber483 + pmCounterNumber484 + pmCounterNumber485 + pmCounterNumber486 + pmCounterNumber487 + pmCounterNumber488 + pmCounterNumber489 + pmCounterNumber504 + pmCounterNumber490 + pmCounterNumber505 + pmCounterNumber506 + pmCounterNumber507 + pmCounterNumber491 + + 22345 + 1057 + 2921772 + 4472 + 0 + 0 + 9147991 + 17099 + 0 + 7627 + 3582 + 0 + 0 + 0 + + + + + + + pmCounterNumber508 + pmCounterNumber509 + pmCounterNumber510 + pmCounterNumber511 + pmCounterNumber512 + pmCounterNumber513 + pmCounterNumber514 + pmCounterNumber515 + pmCounterNumber516 + pmCounterNumber517 + + 314834 + 4561 + 8697703 + 16811 + 0 + 0 + 0 + 0 + 0 + 0 + + + 19900 + 388 + 1260 + 30 + 0 + 0 + 0 + 0 + 0 + 0 + + + 26656 + 574 + 14580 + 243 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + pmCounterNumber518 + pmCounterNumber519 + pmCounterNumber520 + pmCounterNumber521 + pmCounterNumber522 + pmCounterNumber523 + pmCounterNumber524 + pmCounterNumber525 + pmCounterNumber526 + pmCounterNumber527 + pmCounterNumber528 + pmCounterNumber529 + + 0 + 0 + 833 + 0 + 0 + 0 + 87820 + 0 + 0 + 0 + 87820 + 0 + + + 0 + 0 + 833 + 0 + 0 + 0 + 87820 + 0 + 0 + 0 + 87820 + 0 + + + + + + + pmCounterNumber482 + pmCounterNumber483 + pmCounterNumber484 + pmCounterNumber485 + pmCounterNumber486 + pmCounterNumber487 + pmCounterNumber488 + pmCounterNumber489 + pmCounterNumber507 + + 1996 + 341 + 657544 + 4205 + 0 + 0 + 9067777 + 16814 + 0 + + + 8457 + 343 + 711892 + 33 + 0 + 0 + 2368 + 37 + 0 + + + 11894 + 343 + 1006906 + 234 + 0 + 0 + 20246 + 248 + 0 + + + + + + + pmCounterNumber530 + pmCounterNumber530Accumulated + pmCounterNumber532 + + + + , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , + true + + + + + + + pmCounterNumber530 + pmCounterNumber530Accumulated + pmCounterNumber532 + pmCounterNumber533 + + 83 + 34846 + 333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,334,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333 + 52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52 + + + 12 + 4947 + 47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47 + 53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53 + + + 13 + 5394 + 52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,51,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,51,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52 + 54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54 + + + 22 + 9338 + 89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89 + 53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,52,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,52,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53 + + + + + , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , + , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , + true + + + + + + + pmCounterNumber534 + + 18,18,18 + + + 30,30,30 + + + + + + + pmCounterNumber535 + pmCounterNumber367 + pmCounterNumber368 + pmCounterNumber369 + pmCounterNumber370 + pmCounterNumber536 + pmCounterNumber537 + pmCounterNumber538 + pmCounterNumber539 + pmCounterNumber540 + pmCounterNumber541 + pmCounterNumber542 + pmCounterNumber543 + pmCounterNumber374 + pmCounterNumber375 + pmCounterNumber376 + pmCounterNumber377 + pmCounterNumber544 + pmCounterNumber545 + pmCounterNumber546 + pmCounterNumber547 + pmCounterNumber548 + pmCounterNumber549 + pmCounterNumber550 + pmCounterNumber551 + + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + + + + + + + pmCounterNumber359Aas + pmCounterNumber360Aas + pmCounterNumber554 + pmCounterNumber555 + pmCounterNumber365Actual + pmCounterNumber366Actual + pmCounterNumber558 + pmCounterNumber559 + pmCounterNumber560 + pmCounterNumber561 + pmCounterNumber562 + pmCounterNumber563 + pmCounterNumber564 + pmCounterNumber565 + pmCounterNumber566 + pmCounterNumber567 + pmCounterNumber568 + pmCounterNumber569 + pmCounterNumber570 + pmCounterNumber571 + pmCounterNumber572 + pmCounterNumber573 + + 0 + 0 + 0 + 0 + 0 + 0 + 5 + 900,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 180 + 0 + 8000 + 0 + 0 + 10000 + 1800 + 10000 + 1800 + 0 + 0 + 0 + 0 + 0 + + + + + + + pmCounterNumber306 + pmCounterNumber307 + pmCounterNumber574 + pmCounterNumber575 + pmCounterNumber576 + pmCounterNumber577 + pmCounterNumber578 + pmCounterNumber579 + pmCounterNumber580 + pmCounterNumber581 + pmCounterNumber582 + pmCounterNumber33 + pmCounterNumber34 + pmCounterNumber329 + pmCounterNumber330 + pmCounterNumber583 + pmCounterNumber583Arp + pmCounterNumber583Csfb + pmCounterNumber583CsfbArp + pmCounterNumber583CsfbQci + pmCounterNumber583HoOngoing + pmCounterNumber583HoOngoingArp + pmCounterNumber583HoOngoingQci + pmCounterNumber583Qci + pmCounterNumber592 + pmCounterNumber592Arp + pmCounterNumber594 + pmCounterNumber595 + pmCounterNumber596 + pmCounterNumber597 + pmCounterNumber598 + pmCounterNumber599 + pmCounterNumber599Arp + pmCounterNumber599Qci + pmCounterNumber602 + pmCounterNumber602Arp + pmCounterNumber604 + pmCounterNumber605 + pmCounterNumber606 + pmCounterNumber607 + pmCounterNumber608 + pmCounterNumber609 + pmCounterNumber610 + pmCounterNumber611 + pmCounterNumber612 + pmCounterNumber613 + pmCounterNumber614 + pmCounterNumber615 + pmCounterNumber616 + pmCounterNumber617 + pmCounterNumber618 + pmCounterNumber619 + pmCounterNumber620 + pmCounterNumber621 + pmCounterNumber409 + pmCounterNumber622 + pmCounterNumber623 + pmCounterNumber624 + pmCounterNumber625 + pmCounterNumber626 + pmCounterNumber627 + pmCounterNumber413ResUe + pmCounterNumber570 + pmCounterNumber213Ce + pmCounterNumber629 + pmCounterNumber630 + pmCounterNumber631 + pmCounterNumber631Uu + pmCounterNumber633 + pmCounterNumber634 + pmCounterNumber635 + pmCounterNumber636 + pmCounterNumber637 + pmCounterNumber637FiltQci + pmCounterNumber637LastTTI + pmCounterNumber637LastTTIQci + pmCounterNumber641 + pmCounterNumber642 + pmCounterNumber643 + pmCounterNumber350 + pmCounterNumber350Ce + pmCounterNumber350Dta + pmCounterNumber350DtaCe + pmCounterNumber350Reatt + pmCounterNumber350ReattCe + pmCounterNumber350ReattDta + pmCounterNumber350ReattDtaCe + pmCounterNumber650 + pmCounterNumber650ActiveUsers + pmCounterNumber652 + pmCounterNumber652Ce + pmCounterNumber654 + pmCounterNumber654Ce + pmCounterNumber354 + pmCounterNumber354Ce + pmCounterNumber354Dta + pmCounterNumber354DtaCe + pmCounterNumber354GummeiNative + pmCounterNumber660 + pmCounterNumber661 + pmCounterNumber662 + pmCounterNumber663 + pmCounterNumber664 + pmCounterNumber664Ce + pmCounterNumber664Dta + pmCounterNumber664DtaCe + pmCounterNumber664Em + pmCounterNumber664Hpa + pmCounterNumber664Mod + pmCounterNumber664ModCe + pmCounterNumber664Mos + pmCounterNumber664Mta + pmCounterNumber664MtaCe + pmCounterNumber675 + pmCounterNumber675Ce + pmCounterNumber677 + pmCounterNumber677Ce + pmCounterNumber677Dta + pmCounterNumber677DtaCe + pmCounterNumber677Em + pmCounterNumber677Hpa + pmCounterNumber677Mod + pmCounterNumber677ModCe + pmCounterNumber677Mos + pmCounterNumber677Mta + pmCounterNumber677MtaCe + pmCounterNumber688 + pmCounterNumber689 + pmCounterNumber690 + pmCounterNumber691 + pmCounterNumber692 + pmCounterNumber693 + pmCounterNumber694 + pmCounterNumber694Em + pmCounterNumber696 + pmCounterNumber696Em + pmCounterNumber698 + pmCounterNumber699 + pmCounterNumber699Em + pmCounterNumber701 + pmCounterNumber701Em + pmCounterNumber703 + pmCounterNumber704 + pmCounterNumber705 + pmCounterNumber706 + pmCounterNumber7062 + pmCounterNumber708 + pmCounterNumber709 + pmCounterNumber710 + pmCounterNumber711 + pmCounterNumber712 + pmCounterNumber713 + pmCounterNumber714 + pmCounterNumber715 + pmCounterNumber716 + pmCounterNumber717 + pmCounterNumber718 + pmCounterNumber719 + pmCounterNumber720 + + 0 + 900 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0 + 0,0,0,0 + 0 + 0 + 0 + 0 + 0,0,0,0 + 0,0,0,0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0 + 0 + 0,0,0,0 + 0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0 + 0 + 0,0,0,0 + 0 + 0 + 0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0,0,0,0,0,0,0,0 + 0 + + + 0 + 900 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0 + 0,0,0,0 + 0 + 0 + 0 + 0 + 0,0,0,0 + 0,0,0,0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0 + 0 + 0,0,0,0 + 0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0 + 0 + 0,0,0,0 + 0 + 0 + 0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0,0,0,0,0,0,0,0 + 0 + + + + + + + pmCounterNumber550Burst + pmCounterNumber550Format + pmCounterNumber550X2Fwd + pmCounterNumber724 + pmCounterNumber725 + + 0 + 0 + 0 + 0 + 0 + + + + + + + pmCounterNumber726 + pmCounterNumber727 + pmCounterNumber728 + pmCounterNumber729 + pmCounterNumber730 + pmCounterNumber731 + pmCounterNumber732 + pmCounterNumber733 + pmCounterNumber734 + pmCounterNumber735 + pmCounterNumber629CatMDrxNoSyncQci + pmCounterNumber629CatMDrxSyncQci + pmCounterNumber629CatMNoDrxNoSyncQci + pmCounterNumber629CatMNoDrxSyncQci + pmCounterNumber629DrxNoSyncQci + pmCounterNumber629DrxSync + pmCounterNumber629DrxSyncQci + pmCounterNumber629NoDrxNoSyncQci + pmCounterNumber629NoDrxSyncQci + pmCounterNumber629Qci + pmCounterNumber630CatMDrxNoSyncQci + pmCounterNumber630CatMDrxSyncQci + pmCounterNumber630CatMNoDrxNoSyncQci + pmCounterNumber630CatMNoDrxSyncQci + pmCounterNumber630DrxNoSyncQci + pmCounterNumber630DrxSync + pmCounterNumber630DrxSyncQci + pmCounterNumber630NoDrxNoSyncQci + pmCounterNumber630NoDrxSyncQci + pmCounterNumber630Qci + pmCounterNumber756 + pmCounterNumber756Qci + pmCounterNumber758 + pmCounterNumber758Qci + pmCounterNumber631Qci + pmCounterNumber631UuQci + pmCounterNumber762 + pmCounterNumber633Limitations + pmCounterNumber633MissingPdus2Qci + pmCounterNumber633Qci + pmCounterNumber633RohcFail2Qci + pmCounterNumber633SrbTooLarge + pmCounterNumber768 + pmCounterNumber769 + pmCounterNumber770 + pmCounterNumber771 + pmCounterNumber771Qci + pmCounterNumber634Qci + pmCounterNumber635Qci + pmCounterNumber775 + pmCounterNumber637Ca + pmCounterNumber637LastTTICa + pmCounterNumber637Qci + pmCounterNumber637TransPlmn0 + pmCounterNumber637TransPlmn1 + pmCounterNumber637TransPlmn2 + pmCounterNumber637TransPlmn3 + pmCounterNumber637TransPlmn4 + pmCounterNumber637TransPlmn5 + pmCounterNumber637TransPlmn6 + pmCounterNumber637TransQci + pmCounterNumber787 + pmCounterNumber641Trans + pmCounterNumber789 + pmCounterNumber642Plmn0 + pmCounterNumber642Plmn1 + pmCounterNumber642Plmn2 + pmCounterNumber642Plmn3 + pmCounterNumber642Plmn4 + pmCounterNumber642Plmn5 + pmCounterNumber642Plmn6 + pmCounterNumber642Qci + pmCounterNumber798 + + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + pmCounterNumber799 + pmCounterNumber799Gtpu + pmCounterNumber799NoCtxt + pmCounterNumber802 + pmCounterNumber803 + pmCounterNumber804 + pmCounterNumber805 + pmCounterNumber806 + pmCounterNumber807 + pmCounterNumber808 + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + pmEndcUeCapabilityUlPdcpDelay + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + pmCounterNumber802 + pmCounterNumber803 + + 0 + 0 + + + + + + + diff --git a/docker-proj/ne-files/pm.xml.gz b/docker-proj/ne-files/pm.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..fda8f0e77a04608967826561c45879af4d8b8a79 GIT binary patch literal 10654 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 literal 0 HcmV?d00001 diff --git a/docker-proj/pm-files/pm.xml b/docker-proj/pm-files/pm.xml new file mode 100644 index 0000000..8fde416 --- /dev/null +++ b/docker-proj/pm-files/pm.xml @@ -0,0 +1,4023 @@ + + + + + + + + + + + + + + pmCounterNumber0 + pmCounterNumber1 + pmCounterNumber2 + pmCounterNumber3 + pmCounterNumber4 + pmCounterNumber5 + pmCounterNumber6 + pmCounterNumber7 + pmCounterNumber8 + pmCounterNumber9 + pmCounterNumber10 + pmCounterNumber11 + pmCounterNumber12 + pmCounterNumber13 + pmCounterNumber14 + pmCounterNumber15 + pmCounterNumber16 + pmCounterNumber17 + pmCounterNumber18 + pmCounterNumber19 + pmCounterNumber20 + pmCounterNumber21 + pmCounterNumber22 + pmCounterNumber23 + pmCounterNumber24 + pmCounterNumber25 + pmCounterNumber26 + pmCounterNumber27 + pmCounterNumber28 + pmCounterNumber29 + pmCounterNumber30 + pmCounterNumber31 + pmCounterNumber32 + pmCounterNumber33 + pmCounterNumber34 + pmCounterNumber35 + pmCounterNumber36 + pmCounterNumber37 + pmCounterNumber38 + pmCounterNumber39 + pmCounterNumber40 + pmCounterNumber41 + pmCounterNumber42 + pmCounterNumber43 + pmCounterNumber44 + pmCounterNumber45 + pmCounterNumber46 + pmCounterNumber47 + pmCounterNumber48 + pmCounterNumber49 + pmCounterNumber50 + pmCounterNumber51 + pmCounterNumber51Act + pmCounterNumber53 + pmCounterNumber53Act + pmCounterNumber55 + pmCounterNumber56 + pmCounterNumber57 + pmCounterNumber58 + pmCounterNumber59 + pmCounterNumber60 + pmCounterNumber60IntgProt64kbps + pmCounterNumber62 + pmCounterNumber63 + pmCounterNumber64 + pmCounterNumber65 + pmCounterNumber66 + pmCounterNumber67 + pmCounterNumber68 + pmCounterNumber69 + pmCounterNumber70 + pmCounterNumber71 + pmCounterNumber72 + pmCounterNumber73 + pmCounterNumber74 + pmCounterNumber75 + pmCounterNumber76 + pmCounterNumber77 + pmCounterNumber78 + pmCounterNumber79 + pmCounterNumber80 + pmCounterNumber81 + pmCounterNumber82 + pmCounterNumber83 + pmCounterNumber84 + pmCounterNumber84Em + pmCounterNumber84EmFbInd + pmCounterNumber87 + pmCounterNumber88 + pmCounterNumber89 + pmCounterNumber90 + pmCounterNumber91 + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + pmCounterNumber92 + pmCounterNumber93 + pmCounterNumber94 + pmCounterNumber95 + pmCounterNumber96 + pmCounterNumber97 + pmCounterNumber98 + pmCounterNumber99 + pmCounterNumber100 + pmCounterNumber101 + pmCounterNumber102 + pmCounterNumber103 + pmCounterNumber104 + pmCounterNumber105 + pmCounterNumber106 + pmCounterNumber107 + pmCounterNumber108 + pmCounterNumber108Init + pmCounterNumber110 + pmCounterNumber110Init + pmCounterNumber112 + pmCounterNumber112Init + pmCounterNumber114 + pmCounterNumber114Init + pmCounterNumber116 + pmCounterNumber116Init + pmCounterNumber118 + pmCounterNumber118Init + pmCounterNumber120 + pmCounterNumber120Init + pmCounterNumber122 + pmCounterNumber122Init + pmCounterNumber124 + pmCounterNumber125 + pmCounterNumber125Init + pmCounterNumber127 + pmCounterNumber127Init + pmCounterNumber129 + pmCounterNumber129Init + pmCounterNumber131 + pmCounterNumber131Init + pmCounterNumber133 + pmCounterNumber133Init + pmCounterNumber135 + pmCounterNumber135Init + pmCounterNumber137 + pmCounterNumber137Init + pmCounterNumber139 + pmCounterNumber139Init + pmCounterNumber141 + pmCounterNumber141Init + pmCounterNumber143 + pmCounterNumber143Init + pmCounterNumber145 + pmCounterNumber145Init + pmCounterNumber147 + pmCounterNumber147Init + pmCounterNumber149 + pmCounterNumber150 + pmCounterNumber150Init + pmCounterNumber152 + pmCounterNumber152Init + pmCounterNumber154 + pmCounterNumber154Init + pmCounterNumber156 + pmCounterNumber156Init + pmCounterNumber158 + pmCounterNumber158Ext + pmCounterNumber160 + pmCounterNumber161 + pmCounterNumber162 + pmCounterNumber163 + pmCounterNumber164 + pmCounterNumber165 + pmCounterNumber166 + pmCounterNumber1666 + pmCounterNumber168 + pmCounterNumber169 + pmCounterNumber170 + pmCounterNumber171 + pmCounterNumber172 + pmCounterNumber173 + pmCounterNumber174 + pmCounterNumber175 + pmCounterNumber176 + pmCounterNumber177 + pmCounterNumber178 + pmCounterNumber179 + pmCounterNumber180 + pmCounterNumber181 + pmCounterNumber182 + pmCounterNumber183 + pmCounterNumber184 + pmCounterNumber185 + pmCounterNumber185Qos + pmCounterNumber185Samp + pmCounterNumber185SampQos + pmCounterNumber189 + pmCounterNumber189Qos + pmCounterNumber191 + pmCounterNumber191Qos + pmCounterNumber193 + pmCounterNumber193Samp + pmCounterNumber195 + pmCounterNumber195Ext + pmCounterNumber197 + pmCounterNumber198 + pmCounterNumber199 + pmCounterNumber200 + pmCounterNumber200BsrGrant + pmCounterNumber200PreemptGrant + pmCounterNumber200PucchSrGrant + pmCounterNumber204 + pmCounterNumber205 + pmCounterNumber206 + pmCounterNumber207 + pmCounterNumber208 + pmCounterNumber209 + pmCounterNumber210 + pmCounterNumber211 + pmCounterNumber212 + pmCounterNumber213 + pmCounterNumber214 + pmCounterNumber215 + pmCounterNumber216 + pmCounterNumber216MacCe + pmCounterNumber218 + pmCounterNumber219 + pmCounterNumber220 + pmCounterNumber221 + pmCounterNumber222 + pmCounterNumber223 + pmCounterNumber224 + pmCounterNumber225 + pmCounterNumber226 + pmCounterNumber227 + pmCounterNumber228 + pmCounterNumber228Forced + pmCounterNumber230 + pmCounterNumber231 + pmCounterNumber232 + pmCounterNumber233 + pmCounterNumber234 + pmCounterNumber235 + pmCounterNumber236 + pmCounterNumber237 + pmCounterNumber238 + pmCounterNumber239 + pmCounterNumber240 + pmCounterNumber241 + pmCounterNumber242 + pmCounterNumber243 + pmCounterNumber244 + pmCounterNumber245 + pmCounterNumber246 + pmCounterNumber247 + pmCounterNumber248 + pmCounterNumber249 + pmCounterNumber250 + pmCounterNumber251 + pmCounterNumber252 + pmCounterNumber252Qos + pmCounterNumber254 + pmCounterNumber254Qos + + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2880 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 179 + 0 + 0,0,0,0 + 0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 900,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 1440001 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,1800001,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 5376 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 179 + 0 + 0,0,0,0 + 0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 900,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 1440001 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,1800001,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0 + 0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0 + 0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + pmCounterNumber256 + pmCounterNumber257 + pmCounterNumber258 + pmCounterNumber259 + pmCounterNumber260 + pmCounterNumber261 + pmCounterNumber262 + pmCounterNumber263 + pmCounterNumber263On + pmCounterNumber265 + pmCounterNumber266 + pmCounterNumber267 + pmCounterNumber267Auto + pmCounterNumber267AutoCbrs + pmCounterNumber267Man + pmCounterNumber267ManCbrs + + 0,0,0,0,0,0,0,0,0,15,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 10000 + 0 + 0 + 0 + 0 + 0 + + + 0,0,0,0,0,0,0,0,0,0,0,0,0,15,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 15000 + 0 + 0 + 0 + 0 + 0 + + + 15,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 15,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + pmCounterNumber272 + pmCounterNumber273 + pmCounterNumber274 + pmCounterNumber275 + pmCounterNumber276 + pmCounterNumber277 + pmCounterNumber278 + + 0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + 0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + + + + pmCounterNumber279 + pmCounterNumber280 + pmCounterNumber281 + pmCounterNumber282 + pmCounterNumber283 + pmCounterNumber284 + pmCounterNumber285 + pmCounterNumber286 + pmCounterNumber287 + pmCounterNumber288 + pmCounterNumber289 + pmCounterNumber290 + pmCounterNumber291 + pmCounterNumber292 + pmCounterNumber293 + pmCounterNumber294 + pmCounterNumber295 + pmCounterNumber296 + pmCounterNumber274 + + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0 + + + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0 + + + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0 + + + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0 + + + + + + + pmCounterNumber297 + + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + + + + pmCounterNumber297F0Distr + pmCounterNumber297F2Distr + + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + + + + pmCounterNumber300 + pmCounterNumber301 + pmCounterNumber302 + pmCounterNumber303 + pmCounterNumber304 + pmCounterNumber305 + + 0 + 0 + 0 + 180 + 0 + 0 + + + + + + + pmCounterNumber306 + pmCounterNumber307 + pmCounterNumber308 + pmCounterNumber309 + pmCounterNumber310 + pmCounterNumber311 + pmCounterNumber312 + pmCounterNumber313 + pmCounterNumber314 + pmCounterNumber315 + pmCounterNumber316 + pmCounterNumber317 + pmCounterNumber318 + pmCounterNumber319 + pmCounterNumber320 + pmCounterNumber321 + pmCounterNumber322 + pmCounterNumber323 + pmCounterNumber324 + pmCounterNumber324Act + pmCounterNumber326 + pmCounterNumber326Act + pmCounterNumber328 + pmCounterNumber329 + pmCounterNumber330 + pmCounterNumber331 + pmCounterNumber332 + pmCounterNumber333 + pmCounterNumber334 + pmCounterNumber335 + pmCounterNumber336 + pmCounterNumber337 + pmCounterNumber338 + pmCounterNumber339 + pmCounterNumber340 + pmCounterNumber341 + pmCounterNumber342 + pmCounterNumber343 + pmCounterNumber343Mos + pmCounterNumber345 + pmCounterNumber345Mos + pmCounterNumber347 + pmCounterNumber348 + pmCounterNumber349 + pmCounterNumber350 + pmCounterNumber350Mos + pmCounterNumber350Reatt + pmCounterNumber350ReattMos + pmCounterNumber354 + pmCounterNumber354Mos + pmCounterNumber301 + pmCounterNumber302 + pmCounterNumber303 + pmCounterNumber304 + pmCounterNumber305 + pmCounterNumber356 + pmCounterNumber357 + pmCounterNumber358 + + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 180 + 0 + 0 + 0 + 0 + 0 + + + + + + + pmCounterNumber359 + pmCounterNumber360 + pmCounterNumber361 + pmCounterNumber362 + pmCounterNumber363 + pmCounterNumber364 + pmCounterNumber365 + pmCounterNumber366 + pmCounterNumber367 + pmCounterNumber368 + pmCounterNumber369 + pmCounterNumber370 + pmCounterNumber371 + pmCounterNumber372 + pmCounterNumber373 + pmCounterNumber374 + pmCounterNumber375 + pmCounterNumber376 + pmCounterNumber377 + + 0 + 0 + 0 + 0 + 32 + 16 + 0 + 16 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + + + + + + + pmCounterNumber378 + pmCounterNumber379 + pmCounterNumber380 + pmCounterNumber381 + pmCounterNumber382 + pmCounterNumber383 + pmCounterNumber384 + pmCounterNumber385 + pmCounterNumber386 + pmCounterNumber306 + pmCounterNumber307 + pmCounterNumber307ual + pmCounterNumber388 + pmCounterNumber389 + pmCounterNumber390 + pmCounterNumber391 + pmCounterNumber392 + pmCounterNumber393 + pmCounterNumber394 + pmCounterNumber395 + pmCounterNumber396 + pmCounterNumber397 + pmCounterNumber398 + pmCounterNumber399 + pmCounterNumber399Broadcasting + pmCounterNumber401 + pmCounterNumber402 + pmCounterNumber403 + pmCounterNumber404 + pmCounterNumber405 + pmCounterNumber406 + pmCounterNumber407 + pmCounterNumber407Qos + pmCounterNumber409 + pmCounterNumber410 + pmCounterNumber410Drb + pmCounterNumber410DrbQos + pmCounterNumber413 + pmCounterNumber413ResUe + pmCounterNumber415 + pmCounterNumber416 + pmCounterNumber417 + pmCounterNumber418 + pmCounterNumber419 + pmCounterNumber420 + pmCounterNumber421 + pmCounterNumber422 + pmCounterNumber423 + pmCounterNumber424 + pmCounterNumber425 + pmCounterNumber426 + pmCounterNumber427 + pmCounterNumber428 + pmCounterNumber429 + pmCounterNumber430 + pmCounterNumber431 + pmCounterNumber432 + pmCounterNumber433 + pmCounterNumber434 + pmCounterNumber435 + pmCounterNumber436 + pmCounterNumber437 + pmCounterNumber438 + pmCounterNumber439 + pmCounterNumber440 + pmCounterNumber441 + + 0 + 0 + 0 + 1800000 + 0 + 0 + 0 + 1800001 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 3032642268 + 20160056 + 15120000 + 816482268 + 0 + 2880 + 0 + 0 + 3780540 + 2520 + 0 + 900,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 900,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 5760004 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 1440004 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 2,1,1,2,2,3,2,1,1,0,0,0 + 15 + 0 + 0 + 0 + 0 + 0 + 60 + 15 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 179 + 0 + 0 + 0 + + + 0 + 0 + 0 + 1800000 + 0 + 0 + 0 + 1800001 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 5110563822 + 20160056 + 15120000 + 1375923822 + 0 + 5376 + 0 + 0 + 3780504 + 2352 + 0 + 900,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 900,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 5760004 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 1440004 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 3,1,2,1,2,0,3,2,0,0,0,0 + 14 + 0 + 0 + 0 + 0 + 0 + 56 + 14 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 179 + 0 + 0 + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 900 + 900 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 900 + 900 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + pmCounterNumber310 + pmCounterNumber311 + pmCounterNumber312 + pmCounterNumber313 + pmCounterNumber314 + pmCounterNumber347 + pmCounterNumber348 + pmCounterNumber349 + + 0 + 0 + 900 + 0 + 0 + 0 + 900 + 0 + + + + + + + pmCounterNumber442 + pmCounterNumber443 + pmCounterNumber444 + pmCounterNumber445 + pmCounterNumber446 + pmCounterNumber447 + pmCounterNumber448 + pmCounterNumber448PCell + pmCounterNumber448SCell + pmCounterNumber448Volte + pmCounterNumber452 + pmCounterNumber453 + pmCounterNumber454 + pmCounterNumber455 + pmCounterNumber114 + pmCounterNumber456 + pmCounterNumber457 + pmCounterNumber458 + pmCounterNumber122 + pmCounterNumber459 + pmCounterNumber460 + pmCounterNumber461 + pmCounterNumber462 + pmCounterNumber131 + pmCounterNumber463 + pmCounterNumber464 + pmCounterNumber143 + pmCounterNumber145 + pmCounterNumber147 + pmCounterNumber14916qam + pmCounterNumber149256Qam + pmCounterNumber14964Qam + pmCounterNumber149Iua16qam + pmCounterNumber149IuaQpsk + pmCounterNumber149Qpsk + pmCounterNumber471 + pmCounterNumber472 + pmCounterNumber473 + pmCounterNumber474 + pmCounterNumber475 + pmCounterNumber476 + pmCounterNumber477 + pmCounterNumber478 + pmCounterNumber248 + pmCounterNumber249 + pmCounterNumber479 + pmCounterNumber250 + pmCounterNumber251 + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + + + + + + + pmCounterNumber480 + pmCounterNumber481 + + 0 + 4,4,4 + + + 0 + 4,4,4 + + + 0 + 4,4,4 + + + 0 + , , + + + + 4,4,4 + + + + + + + pmCounterNumber482 + pmCounterNumber483 + pmCounterNumber484 + pmCounterNumber485 + pmCounterNumber486 + pmCounterNumber487 + pmCounterNumber488 + pmCounterNumber489 + pmCounterNumber490 + pmCounterNumber491 + + 0 + 51885 + 4628315 + 9190 + 0 + 15493 + 1956503 + 7326 + 0 + + + + 0 + 37309 + 2868954 + 4551 + 0 + 915 + 380361 + 4549 + 0 + + + + 0 + 15490 + 1512626 + 7326 + 0 + 51883 + 3492085 + 9190 + 0 + 0 + + + 0 + 916 + 260228 + 4549 + 0 + 37309 + 2097258 + 4551 + 0 + 0 + + + + + + + pmCounterNumber492 + pmCounterNumber493 + pmCounterNumber494 + pmCounterNumber495 + + 1077 + 1076 + 0 + 0 + + + 450 + 450 + 0 + 0 + + + 427 + 427 + 0 + 0 + + + 0 + 2147483647 + 0 + 0 + + + 0 + 2147483647 + 0 + 0 + + + + + + + pmCounterNumber496 + pmCounterNumber497 + pmCounterNumber498 + + 0,0,0,0,0,0 + 0 + 0 + + + 0,0,0,0,0,0 + 0 + 0 + + + 0,0,0,0,0,0 + 0 + 0 + + + 0,0,0,0,0,0 + 0 + 0 + + + 0,0,0,0,0,0 + 0 + 0 + + + 0,0,0,0,0,0 + 0 + 0 + + + 0,0,0,0,0,0 + 0 + 0 + + + 0,0,0,0,0,0 + 0 + 0 + + + 0,0,0,0,0,0 + 0 + 0 + + + 0,0,0,0,0,0 + 0 + 0 + + + 0,0,0,0,0,0 + 0 + 0 + + + 0,0,0,0,0,0 + 0 + 0 + + + 0,0,0,0,0,0 + 0 + 0 + + + 0,0,0,0,0,0 + 0 + 0 + + + + + + + pmCounterNumber499 + pmCounterNumber500 + pmCounterNumber501 + + 2951 + 3600 + 2922 + + + 3018 + 4200 + 2953 + + + 2809 + 3500 + 2812 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + 2810 + 3100 + 2830 + + + 2717 + 3600 + 2775 + + + 2700 + 3900 + 2773 + + + 0 + 0 + 0 + + + 2744 + 3200 + 2775 + + + 2863 + 3800 + 2898 + + + 2684 + 3900 + 2737 + + + 2892 + 4400 + 2893 + + + + + + + pmCounterNumber502 + pmCounterNumber503 + + 0 + 0 + + + 1310 + 32552 + + + 0 + 0 + + + 1430 + 32904 + + + 0 + 0 + + + 1410 + 33141 + + + 1388 + 32558 + + + 1384 + 32505 + + + 1297 + 32999 + + + 1297 + 33041 + + + 1474 + 32588 + + + 0 + 0 + + + 1463 + 32493 + + + 1464 + 32534 + + + + + + + pmCounterNumber482 + pmCounterNumber483 + pmCounterNumber484 + pmCounterNumber485 + pmCounterNumber486 + pmCounterNumber487 + pmCounterNumber488 + pmCounterNumber489 + pmCounterNumber504 + pmCounterNumber490 + pmCounterNumber505 + pmCounterNumber506 + pmCounterNumber507 + pmCounterNumber491 + + 22345 + 1057 + 2921772 + 4472 + 0 + 0 + 9147991 + 17099 + 0 + 7627 + 3582 + 0 + 0 + 0 + + + + + + + pmCounterNumber508 + pmCounterNumber509 + pmCounterNumber510 + pmCounterNumber511 + pmCounterNumber512 + pmCounterNumber513 + pmCounterNumber514 + pmCounterNumber515 + pmCounterNumber516 + pmCounterNumber517 + + 314834 + 4561 + 8697703 + 16811 + 0 + 0 + 0 + 0 + 0 + 0 + + + 19900 + 388 + 1260 + 30 + 0 + 0 + 0 + 0 + 0 + 0 + + + 26656 + 574 + 14580 + 243 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + pmCounterNumber518 + pmCounterNumber519 + pmCounterNumber520 + pmCounterNumber521 + pmCounterNumber522 + pmCounterNumber523 + pmCounterNumber524 + pmCounterNumber525 + pmCounterNumber526 + pmCounterNumber527 + pmCounterNumber528 + pmCounterNumber529 + + 0 + 0 + 833 + 0 + 0 + 0 + 87820 + 0 + 0 + 0 + 87820 + 0 + + + 0 + 0 + 833 + 0 + 0 + 0 + 87820 + 0 + 0 + 0 + 87820 + 0 + + + + + + + pmCounterNumber482 + pmCounterNumber483 + pmCounterNumber484 + pmCounterNumber485 + pmCounterNumber486 + pmCounterNumber487 + pmCounterNumber488 + pmCounterNumber489 + pmCounterNumber507 + + 1996 + 341 + 657544 + 4205 + 0 + 0 + 9067777 + 16814 + 0 + + + 8457 + 343 + 711892 + 33 + 0 + 0 + 2368 + 37 + 0 + + + 11894 + 343 + 1006906 + 234 + 0 + 0 + 20246 + 248 + 0 + + + + + + + pmCounterNumber530 + pmCounterNumber530Accumulated + pmCounterNumber532 + + + + , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , + true + + + + + + + pmCounterNumber530 + pmCounterNumber530Accumulated + pmCounterNumber532 + pmCounterNumber533 + + 83 + 34846 + 333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,334,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333 + 52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52 + + + 12 + 4947 + 47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47 + 53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53 + + + 13 + 5394 + 52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,51,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,51,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52 + 54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54 + + + 22 + 9338 + 89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89 + 53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,52,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,52,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53 + + + + + , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , + , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , + true + + + + + + + pmCounterNumber534 + + 18,18,18 + + + 30,30,30 + + + + + + + pmCounterNumber535 + pmCounterNumber367 + pmCounterNumber368 + pmCounterNumber369 + pmCounterNumber370 + pmCounterNumber536 + pmCounterNumber537 + pmCounterNumber538 + pmCounterNumber539 + pmCounterNumber540 + pmCounterNumber541 + pmCounterNumber542 + pmCounterNumber543 + pmCounterNumber374 + pmCounterNumber375 + pmCounterNumber376 + pmCounterNumber377 + pmCounterNumber544 + pmCounterNumber545 + pmCounterNumber546 + pmCounterNumber547 + pmCounterNumber548 + pmCounterNumber549 + pmCounterNumber550 + pmCounterNumber551 + + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + + + + + + + pmCounterNumber359Aas + pmCounterNumber360Aas + pmCounterNumber554 + pmCounterNumber555 + pmCounterNumber365Actual + pmCounterNumber366Actual + pmCounterNumber558 + pmCounterNumber559 + pmCounterNumber560 + pmCounterNumber561 + pmCounterNumber562 + pmCounterNumber563 + pmCounterNumber564 + pmCounterNumber565 + pmCounterNumber566 + pmCounterNumber567 + pmCounterNumber568 + pmCounterNumber569 + pmCounterNumber570 + pmCounterNumber571 + pmCounterNumber572 + pmCounterNumber573 + + 0 + 0 + 0 + 0 + 0 + 0 + 5 + 900,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 180 + 0 + 8000 + 0 + 0 + 10000 + 1800 + 10000 + 1800 + 0 + 0 + 0 + 0 + 0 + + + + + + + pmCounterNumber306 + pmCounterNumber307 + pmCounterNumber574 + pmCounterNumber575 + pmCounterNumber576 + pmCounterNumber577 + pmCounterNumber578 + pmCounterNumber579 + pmCounterNumber580 + pmCounterNumber581 + pmCounterNumber582 + pmCounterNumber33 + pmCounterNumber34 + pmCounterNumber329 + pmCounterNumber330 + pmCounterNumber583 + pmCounterNumber583Arp + pmCounterNumber583Csfb + pmCounterNumber583CsfbArp + pmCounterNumber583CsfbQci + pmCounterNumber583HoOngoing + pmCounterNumber583HoOngoingArp + pmCounterNumber583HoOngoingQci + pmCounterNumber583Qci + pmCounterNumber592 + pmCounterNumber592Arp + pmCounterNumber594 + pmCounterNumber595 + pmCounterNumber596 + pmCounterNumber597 + pmCounterNumber598 + pmCounterNumber599 + pmCounterNumber599Arp + pmCounterNumber599Qci + pmCounterNumber602 + pmCounterNumber602Arp + pmCounterNumber604 + pmCounterNumber605 + pmCounterNumber606 + pmCounterNumber607 + pmCounterNumber608 + pmCounterNumber609 + pmCounterNumber610 + pmCounterNumber611 + pmCounterNumber612 + pmCounterNumber613 + pmCounterNumber614 + pmCounterNumber615 + pmCounterNumber616 + pmCounterNumber617 + pmCounterNumber618 + pmCounterNumber619 + pmCounterNumber620 + pmCounterNumber621 + pmCounterNumber409 + pmCounterNumber622 + pmCounterNumber623 + pmCounterNumber624 + pmCounterNumber625 + pmCounterNumber626 + pmCounterNumber627 + pmCounterNumber413ResUe + pmCounterNumber570 + pmCounterNumber213Ce + pmCounterNumber629 + pmCounterNumber630 + pmCounterNumber631 + pmCounterNumber631Uu + pmCounterNumber633 + pmCounterNumber634 + pmCounterNumber635 + pmCounterNumber636 + pmCounterNumber637 + pmCounterNumber637FiltQci + pmCounterNumber637LastTTI + pmCounterNumber637LastTTIQci + pmCounterNumber641 + pmCounterNumber642 + pmCounterNumber643 + pmCounterNumber350 + pmCounterNumber350Ce + pmCounterNumber350Dta + pmCounterNumber350DtaCe + pmCounterNumber350Reatt + pmCounterNumber350ReattCe + pmCounterNumber350ReattDta + pmCounterNumber350ReattDtaCe + pmCounterNumber650 + pmCounterNumber650ActiveUsers + pmCounterNumber652 + pmCounterNumber652Ce + pmCounterNumber654 + pmCounterNumber654Ce + pmCounterNumber354 + pmCounterNumber354Ce + pmCounterNumber354Dta + pmCounterNumber354DtaCe + pmCounterNumber354GummeiNative + pmCounterNumber660 + pmCounterNumber661 + pmCounterNumber662 + pmCounterNumber663 + pmCounterNumber664 + pmCounterNumber664Ce + pmCounterNumber664Dta + pmCounterNumber664DtaCe + pmCounterNumber664Em + pmCounterNumber664Hpa + pmCounterNumber664Mod + pmCounterNumber664ModCe + pmCounterNumber664Mos + pmCounterNumber664Mta + pmCounterNumber664MtaCe + pmCounterNumber675 + pmCounterNumber675Ce + pmCounterNumber677 + pmCounterNumber677Ce + pmCounterNumber677Dta + pmCounterNumber677DtaCe + pmCounterNumber677Em + pmCounterNumber677Hpa + pmCounterNumber677Mod + pmCounterNumber677ModCe + pmCounterNumber677Mos + pmCounterNumber677Mta + pmCounterNumber677MtaCe + pmCounterNumber688 + pmCounterNumber689 + pmCounterNumber690 + pmCounterNumber691 + pmCounterNumber692 + pmCounterNumber693 + pmCounterNumber694 + pmCounterNumber694Em + pmCounterNumber696 + pmCounterNumber696Em + pmCounterNumber698 + pmCounterNumber699 + pmCounterNumber699Em + pmCounterNumber701 + pmCounterNumber701Em + pmCounterNumber703 + pmCounterNumber704 + pmCounterNumber705 + pmCounterNumber706 + pmCounterNumber7062 + pmCounterNumber708 + pmCounterNumber709 + pmCounterNumber710 + pmCounterNumber711 + pmCounterNumber712 + pmCounterNumber713 + pmCounterNumber714 + pmCounterNumber715 + pmCounterNumber716 + pmCounterNumber717 + pmCounterNumber718 + pmCounterNumber719 + pmCounterNumber720 + + 0 + 900 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0 + 0,0,0,0 + 0 + 0 + 0 + 0 + 0,0,0,0 + 0,0,0,0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0 + 0 + 0,0,0,0 + 0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0 + 0 + 0,0,0,0 + 0 + 0 + 0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0,0,0,0,0,0,0,0 + 0 + + + 0 + 900 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0 + 0,0,0,0 + 0 + 0 + 0 + 0 + 0,0,0,0 + 0,0,0,0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0 + 0 + 0,0,0,0 + 0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0,0,0,0 + 0 + 0 + 0 + 0,0,0,0 + 0 + 0 + 0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0,0,0,0,0,0,0,0 + 0 + + + + + + + pmCounterNumber550Burst + pmCounterNumber550Format + pmCounterNumber550X2Fwd + pmCounterNumber724 + pmCounterNumber725 + + 0 + 0 + 0 + 0 + 0 + + + + + + + pmCounterNumber726 + pmCounterNumber727 + pmCounterNumber728 + pmCounterNumber729 + pmCounterNumber730 + pmCounterNumber731 + pmCounterNumber732 + pmCounterNumber733 + pmCounterNumber734 + pmCounterNumber735 + pmCounterNumber629CatMDrxNoSyncQci + pmCounterNumber629CatMDrxSyncQci + pmCounterNumber629CatMNoDrxNoSyncQci + pmCounterNumber629CatMNoDrxSyncQci + pmCounterNumber629DrxNoSyncQci + pmCounterNumber629DrxSync + pmCounterNumber629DrxSyncQci + pmCounterNumber629NoDrxNoSyncQci + pmCounterNumber629NoDrxSyncQci + pmCounterNumber629Qci + pmCounterNumber630CatMDrxNoSyncQci + pmCounterNumber630CatMDrxSyncQci + pmCounterNumber630CatMNoDrxNoSyncQci + pmCounterNumber630CatMNoDrxSyncQci + pmCounterNumber630DrxNoSyncQci + pmCounterNumber630DrxSync + pmCounterNumber630DrxSyncQci + pmCounterNumber630NoDrxNoSyncQci + pmCounterNumber630NoDrxSyncQci + pmCounterNumber630Qci + pmCounterNumber756 + pmCounterNumber756Qci + pmCounterNumber758 + pmCounterNumber758Qci + pmCounterNumber631Qci + pmCounterNumber631UuQci + pmCounterNumber762 + pmCounterNumber633Limitations + pmCounterNumber633MissingPdus2Qci + pmCounterNumber633Qci + pmCounterNumber633RohcFail2Qci + pmCounterNumber633SrbTooLarge + pmCounterNumber768 + pmCounterNumber769 + pmCounterNumber770 + pmCounterNumber771 + pmCounterNumber771Qci + pmCounterNumber634Qci + pmCounterNumber635Qci + pmCounterNumber775 + pmCounterNumber637Ca + pmCounterNumber637LastTTICa + pmCounterNumber637Qci + pmCounterNumber637TransPlmn0 + pmCounterNumber637TransPlmn1 + pmCounterNumber637TransPlmn2 + pmCounterNumber637TransPlmn3 + pmCounterNumber637TransPlmn4 + pmCounterNumber637TransPlmn5 + pmCounterNumber637TransPlmn6 + pmCounterNumber637TransQci + pmCounterNumber787 + pmCounterNumber641Trans + pmCounterNumber789 + pmCounterNumber642Plmn0 + pmCounterNumber642Plmn1 + pmCounterNumber642Plmn2 + pmCounterNumber642Plmn3 + pmCounterNumber642Plmn4 + pmCounterNumber642Plmn5 + pmCounterNumber642Plmn6 + pmCounterNumber642Qci + pmCounterNumber798 + + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0,0,0,0,0,0,0,0,0,0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + pmCounterNumber799 + pmCounterNumber799Gtpu + pmCounterNumber799NoCtxt + pmCounterNumber802 + pmCounterNumber803 + pmCounterNumber804 + pmCounterNumber805 + pmCounterNumber806 + pmCounterNumber807 + pmCounterNumber808 + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + pmEndcUeCapabilityUlPdcpDelay + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + pmCounterNumber802 + pmCounterNumber803 + + 0 + 0 + + + + + + + diff --git a/docker-proj/pm-files/pm.xml.gz b/docker-proj/pm-files/pm.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..fda8f0e77a04608967826561c45879af4d8b8a79 GIT binary patch literal 10654 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 literal 0 HcmV?d00001 diff --git a/docker-proj/scripts/clean-shared-volume.sh b/docker-proj/scripts/clean-shared-volume.sh new file mode 100755 index 0000000..ef47f0e --- /dev/null +++ b/docker-proj/scripts/clean-shared-volume.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +# ============LICENSE_START=============================================== +# Copyright (C) 2023 Nordix Foundation. 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================================================= +# + +echo "Deleting files in shared volumes" +SD=$(dirname -- "$0") +echo " script-home: "$SD + +cd $SD/.. + +if [ -d "shared-volume" ]; then + cd "shared-volume" + if [ $? -eq 0 ]; then + if [[ "$PWD" == *"/shared-volume" ]]; then + CNT=$(find . -maxdepth 2 -name 'A*' | wc -l) + echo " Deleting $CNT files in $PWD" + find . -maxdepth 2 -name 'A*' -delete + else + echo "Cannot determine if current dir is shared-volume" + echo "Exiting..." + exit 1 + fi + else + echo "Cannnot cd to shared-volume" + echo "Exiting..." + exit 1 + fi +else + echo "Dir shared-volume not found" + echo "Exiting..." + exit 1 +fi + +echo "DONE" +exit 0 diff --git a/docker-proj/scripts/kafka-client-send-file-ready.sh b/docker-proj/scripts/kafka-client-send-file-ready.sh new file mode 100755 index 0000000..3a39719 --- /dev/null +++ b/docker-proj/scripts/kafka-client-send-file-ready.sh @@ -0,0 +1,94 @@ +#!/bin/bash + +# ============LICENSE_START=============================================== +# Copyright (C) 2023 Nordix Foundation. 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================================================= +# + +SD=$(dirname -- "$0") +echo "script-home: "$SD +cd $SD +CWD=$PWD + +NODE_COUNT=$1 +EVT_COUNT=$2 +NODE_NAME_BASE=$3 +FILE_EXT=$4 +SRV_COUNT=$5 + +print_usage() { + echo "Usage: kafka-client-send-file-ready.sh " + exit 1 +} +echo $@ +if [ $# -lt 5 ]; then + print_usage +fi + +BEGINTIME=1665146700 +CURTIME=$BEGINTIME + +BATCHSIZE=1000 + +CNTR=0 +TCNTR=0 + +for (( i=0; i<$EVT_COUNT; i++)); do + + if [ $CNTR -eq 0 ]; then + rm .out.json + touch .out.json + fi + + echo "EVENT NO: $i for $NODE_COUNT NODES - 1 FILE PER EVENT" + + ST=$(date -d @$CURTIME +'%Y%m%d.%H%M') + let CURTIME=CURTIME+900 + ET=$(date -d @$CURTIME +'%H%M') + + for (( j=0; j<$NODE_COUNT; j++)); do + + NO="$NODE_NAME_BASE-$j" + + #FN="A20000626.2315+0200-2330+0200_$NO-$i.$FILE_EXT" + FN="A$ST+0200-$ET+0200_$NO-$i.$FILE_EXT" + let SRV_ID=$j%$SRV_COUNT + let SRV_ID=SRV_ID+1 + echo "NODE "$NO + echo "FILENAME "$FN + SRV="pm-https-server-$SRV_ID" + echo "HTTP SERVER "$SRV + URL="https://$SRV:$HTTPS_PORT/files/$FN" + EVT='{"event":{"commonEventHeader":{"sequence":0,"eventName":"Noti_RnNode-Ericsson_FileReady","sourceName":"'$NO'","lastEpochMicrosec":151983,"startEpochMicrosec":15198378,"timeZoneOffset":"UTC+05:00","changeIdentifier":"PM_MEAS_FILES"},"notificationFields":{"notificationFieldsVersion":"notificationFieldsVersion","changeType":"FileReady","changeIdentifier":"PM_MEAS_FILES","arrayOfNamedHashMap":[{"name":"'$FN'","hashMap":{"fileFormatType":"org.3GPP.32.435#measCollec","location":"'$URL'","fileFormatVersion":"V10","compression":"gzip"}}]}}}' + echo $EVT >> .out.json + + let CNTR=CNTR+1 + let TCNTR=TCNTR+1 + if [ $CNTR -ge $BATCHSIZE ]; then + echo "Pushing batch of $CNTR events" + cat .out.json | /opt/kafka/bin/kafka-console-producer.sh --topic file-ready --broker-list kafka-1:9092 + rm .out.json + touch .out.json + CNTR=0 + fi + done + +done +if [ $CNTR -ne 0 ]; then + echo "Pushing batch of $CNTR events" + cat .out.json | /opt/kafka/bin/kafka-console-producer.sh --topic file-ready --broker-list kafka-1:9092 +fi + +echo "Pushed $TCNTR events" diff --git a/docker-proj/scripts/populate_keycloak.sh b/docker-proj/scripts/populate_keycloak.sh new file mode 100755 index 0000000..0c6f148 --- /dev/null +++ b/docker-proj/scripts/populate_keycloak.sh @@ -0,0 +1,467 @@ +#!/bin/bash + +# ============LICENSE_START=============================================== +# Copyright (C) 2023 Nordix Foundation. 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================================================= +# + +# Script intended to be sourced by other script to add functions to the keycloak rest API + +KC_URL=http://localhost:8462 +echo "Keycloak url: "$KC_URL + +__get_admin_token() { + echo "Get admin token" + ADMIN_TOKEN="" + while [ "${#ADMIN_TOKEN}" -lt 20 ]; do + ADMIN_TOKEN=$(curl -s -X POST --max-time 2 "$KC_URL/realms/master/protocol/openid-connect/token" -H "Content-Type: application/x-www-form-urlencoded" -d "username=admin" -d "password=admin" -d 'grant_type=password' -d "client_id=admin-cli" | jq -r '.access_token') + if [ "${#ADMIN_TOKEN}" -lt 20 ]; then + echo "Could not get admin token, retrying..." + echo "Retrieved token: $ADMIN_TOKEN" + fi + done + echo "Admin token: ${ADMIN_TOKEN:0:10}..." + echo $ADMIN_TOKEN > .admin_token + __ADM_TOKEN_TS=$SECONDS +} + +__check_admin_token() { + __diff=$(($SECONDS-$__ADM_TOKEN_TS)) + if [ $__diff -gt 15 ]; then + __get_admin_token + fi +} + +__get_admin_token + +indent1() { sed 's/^/ /'; } +indent2() { sed 's/^/ /'; } + +decode_token() { + echo "Decoding access_token" + echo $1 | jq -R 'split(".") | .[0,1] | @base64d | fromjson' +} + +decode_jwt() { + echo "Decoding jwt" + echo $1 | jq -r .access_token | jq -R 'split(".") | .[0,1] | @base64d | fromjson' +} + +list_realms() { + echo "Listing all realms" + __check_admin_token + curl -s \ + -X GET \ + -H "Authorization: Bearer ${ADMIN_TOKEN}" \ + "$KC_URL/admin/realms" | jq -r '.[].id' | indent2 +} +delete_realms() { + echo "$@" + for realm in "$@"; do + echo "Attempt to delete realm: $realm" + __check_admin_token + curl -s \ + -X DELETE \ + -H "Authorization: Bearer ${ADMIN_TOKEN}" \ + "$KC_URL/admin/realms/$realm" | indent1 + if [ $? -ne 0 ]; then + echo "Command failed" + exit 1 + fi + echo " OK" + done +} + +create_realms() { + echo "Creating realms: $@" + while [ $# -gt 0 ]; do + echo " Attempt to create realm: $1" + __check_admin_token +cat > .jsonfile1 <<- "EOF" +{ +"realm":"$__realm_name", +"enabled":true +} +EOF + export __realm_name=$1 + envsubst < .jsonfile1 > .jsonfile2 + curl -s \ + -X POST \ + -H "Authorization: Bearer ${ADMIN_TOKEN}" \ + -H "Content-Type: application/json" \ + -d @".jsonfile2" \ + "$KC_URL/admin/realms" | indent2 + if [ $? -ne 0 ]; then + echo "Command failed" + exit 1 + fi + echo " OK" + shift + done +} + +create_clients() { + __realm=$1 + shift + echo "Attempt to create clients $@ for realm: $__realm" + +cat > .jsonfile1 <<- "EOF" +{ + "clientId":"$__client_name", + "publicClient": false, + "serviceAccountsEnabled": true, + "rootUrl":"https://example.com/example/", + "adminUrl":"https://example.com/example/" +} +EOF + while [ $# -gt 0 ]; do + echo " Creating client: $1" + __check_admin_token + export __client_name=$1 + envsubst < .jsonfile1 > .jsonfile2 + curl -s \ + -X POST \ + -H "Authorization: Bearer ${ADMIN_TOKEN}" \ + -H "Content-Type: application/json" \ + -d @".jsonfile2" \ + "$KC_URL/admin/realms/$__realm/clients" | indent1 + if [ $? -ne 0 ]; then + echo "Command failed" + exit 1 + fi + echo " OK" + shift + done +} + +__get_client_id() { + __client_data=$(curl -s \ + -X GET \ + -H "Authorization: Bearer ${ADMIN_TOKEN}" \ + "$KC_URL/admin/realms/$1/clients?clientId=$2") + if [ $? -ne 0 ]; then + return 1 + fi + __client_id=$(echo $__client_data | jq -r '.[0].id') + echo $__client_id + return 0 +} + +generate_client_secrets() { + __realm=$1 + shift + echo "Attempt to generate secret for clients $@ in realm $__realm" + while [ $# -gt 0 ]; do + __check_admin_token + __client_id=$(__get_client_id $__realm $1) + if [ $? -ne 0 ]; then + echo "Command failed" + exit 1 + fi + echo " Client id for client $1 in realm $__realm: "$__client_id | indent1 + echo " Creating secret" + __client_secret=$(curl -s \ + -X POST \ + -H "Authorization: Bearer ${ADMIN_TOKEN}" \ + "$KC_URL/admin/realms/$__realm/clients/$__client_id/client-secret") + if [ $? -ne 0 ]; then + echo "Command failed" + exit 1 + fi + __client_secret=$(curl -s \ + -X GET \ + -H "Authorization: Bearer ${ADMIN_TOKEN}" \ + "$KC_URL/admin/realms/$__realm/clients/$__client_id/client-secret") + if [ $? -ne 0 ]; then + echo "Command failed" + exit 1 + fi + __client_secret=$(echo $__client_secret | jq -r .value) + echo " Client secret for client $1 in realm $__realm: "$__client_secret | indent1 + echo $__client_secret > ".sec_$__realm""_$1" + echo " OK" + shift + done +} + +create_client_roles() { + # []+ + __check_admin_token + __client_id=$(__get_client_id $1 $2) + if [ $? -ne 0 ]; then + echo "Command failed" + exit 1 + fi + __realm=$1 + shift; shift; + while [ $# -gt 0 ]; do + +cat > .jsonfile1 <<- "EOF" +{ + "name":"$__role" +} +EOF + export __role=$1 + envsubst < .jsonfile1 > .jsonfile2 + curl -s \ + -X POST \ + -H "Authorization: Bearer ${ADMIN_TOKEN}" \ + -H "Content-Type: application/json" \ + -d @".jsonfile2" \ + "$KC_URL/admin/realms/$__realm/clients/$__client_id/roles" | indent1 + if [ $? -ne 0 ]; then + echo "Command failed" + exit 1 + fi + shift + done +} + +__get_service_account_id() { + # + __service_account_data=$(curl -s \ + -X GET \ + -H "Authorization: Bearer ${ADMIN_TOKEN}" \ + "$KC_URL/admin/realms/$1/clients/$2/service-account-user") + if [ $? -ne 0 ]; then + return 1 + fi + __service_account_id=$(echo $__service_account_data | jq -r '.id') + echo $__service_account_id + return 0 +} + +__get_client_available_role_id() { + # + __client_role_data=$(curl -s \ + -X GET \ + -H "Authorization: Bearer ${ADMIN_TOKEN}" \ + "$KC_URL/admin/realms/$1/users/$2/role-mappings/clients/$3/available") + if [ $? -ne 0 ]; then + return 1 + fi + #__client_role_id=$(echo $__client_role_data | jq -r '.id') + __client_role_id=$(echo $__client_role_data | jq -r '.[] | select(.name=="'$4'") | .id ') + echo $__client_role_id + return 0 +} + +__get_client_mapped_role_id() { + # + __client_role_data=$(curl -s \ + -X GET \ + -H "Authorization: Bearer ${ADMIN_TOKEN}" \ + "$KC_URL/admin/realms/$1/users/$2/role-mappings/clients/$3") + if [ $? -ne 0 ]; then + return 1 + fi + #__client_role_id=$(echo $__client_role_data | jq -r '.id') + __client_role_id=$(echo $__client_role_data | jq -r '.[] | select(.name=="'$4'") | .id ') + echo $__client_role_id + return 0 +} + +add_client_roles_mapping() { + # []+ + echo "Attempt to add roles ${@:3} to client $2 in realm $1" + __check_admin_token + __realm=$1 + __client=$2 + __client_id=$(__get_client_id $__realm $__client) + if [ $? -ne 0 ]; then + echo "Command failed" + exit 1 + fi + echo " Client id for client $__client in realm $__realm: "$__client_id | indent1 + __service_account_id=$(__get_service_account_id $__realm $__client_id) + if [ $? -ne 0 ]; then + echo "Command failed" + exit 1 + fi + echo " Service account id for client $__client in realm $__realm: "$__service_account_id | indent1 + shift; shift + __cntr=0 + __all_roles=$@ + while [ $# -gt 0 ]; do + if [ $__cntr -eq 0 ]; then + echo "[" > .jsonfile2 + fi + __client_role_id=$(__get_client_available_role_id $__realm $__service_account_id $__client_id $1) + if [ $? -ne 0 ]; then + echo "Command failed" + exit 1 + fi + + __role='{"name":"'$1'","id":"'$__client_role_id'","composite": false,"clientRole": true}' + if [ $__cntr -gt 0 ]; then + echo "," >> .jsonfile2 + fi + echo $__role >> .jsonfile2 + let __cntr=__cntr+1 + shift + done + echo "]" >> .jsonfile2 + echo " Adding roles $__all_roles to client $__client in realm $__realm" + + curl -s \ + -X POST \ + -H "Authorization: Bearer ${ADMIN_TOKEN}" \ + -H "Content-Type: application/json" \ + -d @".jsonfile2" \ + "$KC_URL/admin/realms/$__realm/users/$__service_account_id/role-mappings/clients/$__client_id" | indent2 + if [ $? -ne 0 ]; then + echo "Command failed" + exit 1 + fi + echo " OK" +} + + + +remove_client_roles_mapping() { + # []+ + echo "Attempt to removed roles ${@:3} from client $2 in realm $1" + __check_admin_token + __realm=$1 + __client=$2 + __client_id=$(__get_client_id $__realm $__client) + if [ $? -ne 0 ]; then + echo "Command failed" + exit 1 + fi + echo " Client id for client $__client in realm $__realm: "$__client_id | indent1 + __service_account_id=$(__get_service_account_id $__realm $__client_id) + if [ $? -ne 0 ]; then + echo "Command failed" + exit 1 + fi + echo " Service account id for client $__client in realm $__realm: "$__service_account_id | indent1 + shift; shift + __cntr=0 + __all_roles=$@ + while [ $# -gt 0 ]; do + if [ $__cntr -eq 0 ]; then + echo "[" > .jsonfile2 + fi + __client_role_id=$(__get_client_mapped_role_id $__realm $__service_account_id $__client_id $1) + if [ $? -ne 0 ]; then + echo "Command failed" + exit 1 + fi + + __role='{"name":"'$1'","id":"'$__client_role_id'","composite": false,"clientRole": true}' + if [ $__cntr -gt 0 ]; then + echo "," >> .jsonfile2 + fi + echo $__role >> .jsonfile2 + let __cntr=__cntr+1 + shift + done + echo "]" >> .jsonfile2 + echo " Removing roles $__all_roles from client $__client in realm $__realm" + + curl -s \ + -X DELETE \ + -H "Authorization: Bearer ${ADMIN_TOKEN}" \ + -H "Content-Type: application/json" \ + -d @".jsonfile2" \ + "$KC_URL/admin/realms/$__realm/users/$__service_account_id/role-mappings/clients/$__client_id" | indent2 + if [ $? -ne 0 ]; then + echo "Command failed" + exit 1 + fi + echo " OK" +} + +add_client_hardcoded-claim-mapper() { +# + __check_admin_token + __realm=$1 + __client=$2 + export __mapper_name=$3 + export __claim_name=$4 + export __claim_value=$5 + + __client_id=$(__get_client_id $__realm $__client) + if [ $? -ne 0 ]; then + echo " Fatal error when getting client id, response: "$? + exit 1 + fi + cat > .jsonfile1 <<- "EOF" +{ + "name": "$__mapper_name", + "protocol": "openid-connect", + "protocolMapper": "oidc-hardcoded-claim-mapper", + "consentRequired": false, + "config": { + "claim.value": "$__claim_value", + "userinfo.token.claim": "true", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "$__claim_name", + "access.tokenResponse.claim": "false" + } +} +EOF + envsubst < .jsonfile1 > .jsonfile2 + curl -s \ + -X POST \ + -H "Authorization: Bearer ${ADMIN_TOKEN}" \ + -H "Content-Type: application/json" \ + -d @".jsonfile2" \ + "$KC_URL/admin/realms/nonrtric-realm/clients/"$__client_id"/protocol-mappers/models" | indent2 + if [ $? -ne 0 ]; then + echo "Command failed" + exit 1 + fi + set +x + cat .jsonfile2 + echo " OK" +} + +# Get a client token +# args: +get_client_token() { + __check_admin_token + __realm=$1 + __client=$2 + __client_id=$(__get_client_id $__realm $__client) + if [ $? -ne 0 ]; then + echo " Fatal error when getting client id, response: "$? + exit 1 + fi + + __client_secret=$(curl -s -f \ + -X GET \ + -H "Authorization: Bearer ${ADMIN_TOKEN}" \ + "$KC_URL/admin/realms/$__realm/clients/$__client_id/client-secret") + if [ $? -ne 0 ]; then + echo " Fatal error when getting client secret, response: "$? + exit 1 + fi + + __client_secret=$(echo $__client_secret | jq -r .value) + + __TMP_TOKEN=$(curl -s -f -X POST $KC_URL/realms/$__realm/protocol/openid-connect/token \ + -H Content-Type:application/x-www-form-urlencoded \ + -d client_id="$__client" -d client_secret="$__client_secret" -d grant_type=client_credentials) + if [ $? -ne 0 ]; then + echo " Fatal error when getting client token, response: "$? + exit 1 + fi + + echo $__TMP_TOKEN| jq -r .access_token + return 0 +} diff --git a/docker-proj/scripts/push-to-file-ready-topic.sh b/docker-proj/scripts/push-to-file-ready-topic.sh new file mode 100755 index 0000000..025b0c6 --- /dev/null +++ b/docker-proj/scripts/push-to-file-ready-topic.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +# ============LICENSE_START=============================================== +# Copyright (C) 2023 Nordix Foundation. 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================================================= +# +SD=$(dirname -- "$0") +echo "${0##*/} script-home: "$SD +cd $SD +CWD=$PWD + + +NODE_COUNT=$1 +EVT_COUNT=$2 +NODE_NAME_BASE=$3 +FILE_EXT=$4 +SRV_COUNT=$5 + +print_usage() { + echo "Usage: push-to-file-ready-topic.sh " + exit 1 +} +if [ $# -lt 5 ]; then + print_usage +fi + +chmod +x kafka-client-send-file-ready.sh +docker cp kafka-client-send-file-ready.sh common-kafka-1-1:/tmp/ + +docker exec -it common-kafka-1-1 /tmp/kafka-client-send-file-ready.sh $NODE_COUNT $EVT_COUNT $NODE_NAME_BASE $FILE_EXT $SRV_COUNT + +echo done + diff --git a/docker-proj/scripts/push-to-ves-collector.sh b/docker-proj/scripts/push-to-ves-collector.sh new file mode 100755 index 0000000..3dc7d85 --- /dev/null +++ b/docker-proj/scripts/push-to-ves-collector.sh @@ -0,0 +1,88 @@ +#!/bin/bash + +# ============LICENSE_START=============================================== +# Copyright (C) 2023 Nordix Foundation. 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================================================= +# + +SD=$(dirname -- "$0") +echo "script-home: "$SD +cd $SD +CWD=$PWD + +NODE_COUNT=$1 +EVT_COUNT=$2 +NODE_NAME_BASE=$3 +FILE_EXT=$4 +SRV_COUNT=$5 + +HTTPS_PORT=443 + +print_usage() { + echo "Usage: push-to-ves-collector.sh " + exit 1 +} +echo $@ +if [ $# -lt 5 ]; then + print_usage +fi + +rm .out.json +touch .out.json + +BEGINTIME=1665146700 +CURTIME=$BEGINTIME + +for (( i=0; i<$EVT_COUNT; i++)); do + + echo "EVENT BATCH: $i of $EVT_COUNT events for $NODE_COUNT NODES - 1 FILE PER EVENT" + echo '{"eventList": [' > .out.json + first=0 + + arch="$(uname -s)" + if [[ $arch == "Darwin"* ]]; then + ST=$(date -r $CURTIME +'%Y%m%d.%H%M') + let CURTIME=CURTIME+900 + ET=$(date -r $CURTIME +'%H%M') + else + ST=$(date -d @$CURTIME +'%Y%m%d.%H%M') + let CURTIME=CURTIME+900 + ET=$(date -d @$CURTIME +'%H%M') + fi + + for (( j=0; j<$NODE_COUNT; j++)); do + + NO="$NODE_NAME_BASE-$j" + #FN="A20000626.2315+0200-2330+0200_$NO-$i.$FILE_EXT" + FN="A$ST+0200-$ET+0200_$NO-$i.$FILE_EXT" + let SRV_ID=$j%$SRV_COUNT + let SRV_ID=SRV_ID+1 + #echo "NODE "$NO + echo "FILENAME "$FN + SRV="pm-https-server-$SRV_ID" + echo "HTTP SERVER "$SRV + URL="https://$SRV:$HTTPS_PORT/files/$FN" + EVT='{"commonEventHeader":{"startEpochMicrosec":15198378,"eventId":"FileReady_1797490e-10ae-4d48-9ea7-3d7d790b25e1","timeZoneOffset":"UTC+05.30","internalHeaderFields":{"collectorTimeStamp":"Wed,0907202211:56:02GMT"},"priority":"Normal","version":"4.0.1","reportingEntityName":"'$NO'","sequence":0,"domain":"notification","lastEpochMicrosec":151983,"eventName":"Notification_gnb-Ericsson_FileReady","vesEventListenerVersion":"7.0.1","sourceName":"'$NO'"},"notificationFields":{"notificationFieldsVersion":"2.0","changeType":"FileReady","changeIdentifier":"PM_MEAS_FILES","arrayOfNamedHashMap":[{"name":"'$FN'","hashMap":{"location":"'$URL'","fileFormatType":"org.3GPP.32.435#measCollec","fileFormatVersion":"V10","compression":"gzip"}}]}}' + if [ $first -ne 0 ]; then + echo "," >> .out.json + fi + first=1 + echo "$EVT" >> .out.json + done + echo ']}' >> .out.json + RES=$(curl -s -X POST 'localhost:8080/eventListener/v7/eventBatch' --header 'Content-Type: application/json' --data-binary @.out.json) + echo $RES +done + diff --git a/docker-proj/shared-volume/dummy.txt b/docker-proj/shared-volume/dummy.txt new file mode 100644 index 0000000..e69de29 -- 2.16.6