summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManoop Talasila <talasila@research.att.com>2019-10-14 15:17:05 +0000
committerGerrit Code Review <gerrit@onap.org>2019-10-14 15:17:05 +0000
commita6d3a0bc546d86a723611f12d18642b599dd2a11 (patch)
treee16fa5c534cbe9b78c1b0c59bd514f71885134b8
parent33d10dd35de6a80bf833a0c5470ee60dcdb19953 (diff)
parent701fad2486d1e8b3730dbb175ad81a4381dece41 (diff)
Merge changes I8f2a44e8,I1e483f2a,Ie2473ea0,I1abb5025,I796bc731, ...
* changes: mysql-connector-java to mariadb-java-client change UserRolesController up + tests WidgetsController test coverage up Tests coverage up and some minor bug fixes Tests coverage up and some minor bug fixes WidgetsCatalogControllerTest up docker-compose fix WidgetMSController and WebAnalyticsExtAppVersionController Up Login fix pom.xml fix
-rw-r--r--ecomp-portal-BE-common/pom.xml2
-rw-r--r--ecomp-portal-BE-os/pom.xml2
-rw-r--r--ecomp-portal-FE-os/pom.xml2
-rw-r--r--ecomp-portal-widget-ms/common-widgets/pom.xml2
-rw-r--r--ecomp-portal-widget-ms/pom.xml2
-rw-r--r--ecomp-portal-widget-ms/widget-ms/pom.xml2
-rw-r--r--pom.xml4
-rwxr-xr-xportal-BE/build.sh1
-rw-r--r--portal-BE/docker-compose.yml18
-rw-r--r--portal-BE/dockerfile.mariadb7
-rw-r--r--portal-BE/my.cnf8
-rw-r--r--portal-BE/pom.xml69
-rw-r--r--portal-BE/src/main/java/org/onap/portal/annotation/ApiVersion.java57
-rw-r--r--portal-BE/src/main/java/org/onap/portal/aop/service/FnUserServiceAOP.java7
-rw-r--r--portal-BE/src/main/java/org/onap/portal/aop/service/PersUserWidgetServiceAOP.java72
-rw-r--r--portal-BE/src/main/java/org/onap/portal/aop/service/WidgetServiceAOP.java32
-rw-r--r--portal-BE/src/main/java/org/onap/portal/controller/UserRolesController.java536
-rw-r--r--portal-BE/src/main/java/org/onap/portal/controller/WebAnalyticsExtAppController.java256
-rw-r--r--portal-BE/src/main/java/org/onap/portal/controller/WebAnalyticsExtAppVersionController.java77
-rw-r--r--portal-BE/src/main/java/org/onap/portal/controller/WidgetMSController.java84
-rw-r--r--portal-BE/src/main/java/org/onap/portal/controller/WidgetsCatalogController.java51
-rw-r--r--portal-BE/src/main/java/org/onap/portal/controller/WidgetsCatalogMarkupController.java10
-rw-r--r--portal-BE/src/main/java/org/onap/portal/controller/WidgetsController.java103
-rw-r--r--portal-BE/src/main/java/org/onap/portal/dao/ep/EpMicroserviceParameterDao.java2
-rw-r--r--portal-BE/src/main/java/org/onap/portal/dao/ep/EpWidgetCatalogParameterDao.java2
-rw-r--r--portal-BE/src/main/java/org/onap/portal/dao/fn/FnRoleDao.java57
-rw-r--r--portal-BE/src/main/java/org/onap/portal/dao/fn/FnUserRoleDao.java65
-rw-r--r--portal-BE/src/main/java/org/onap/portal/dao/fn/FnWidgetDao.java6
-rw-r--r--portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpMicroserviceParameter.java10
-rw-r--r--portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpPersUserWidgetSel.java2
-rw-r--r--portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpWidgetCatalog.java14
-rw-r--r--portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpWidgetCatalogParameter.java19
-rw-r--r--portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnApp.java6
-rw-r--r--portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnLanguage.java13
-rw-r--r--portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnQzSimpleTriggers.java1
-rw-r--r--portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnRole.java5
-rw-r--r--portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnUser.java9
-rw-r--r--portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnUserRole.java64
-rw-r--r--portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnWidget.java21
-rw-r--r--portal-BE/src/main/java/org/onap/portal/domain/dto/DomainVo.java6
-rw-r--r--portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserAppCatalogRoles.java10
-rw-r--r--portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserNotification.java3
-rw-r--r--portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/UserRole.java11
-rw-r--r--portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/UserRoles.java2
-rw-r--r--portal-BE/src/main/java/org/onap/portal/domain/dto/transport/EpNotificationItem.java3
-rw-r--r--portal-BE/src/main/java/org/onap/portal/domain/dto/transport/FieldsValidator.java18
-rw-r--r--portal-BE/src/main/java/org/onap/portal/domain/dto/transport/OnboardingWidget.java18
-rw-r--r--portal-BE/src/main/java/org/onap/portal/domain/dto/transport/WidgetCatalogPersonalization.java3
-rw-r--r--portal-BE/src/main/java/org/onap/portal/exception/NotValidDataException.java48
-rw-r--r--portal-BE/src/main/java/org/onap/portal/exception/RoleFunctionException.java8
-rw-r--r--portal-BE/src/main/java/org/onap/portal/service/AdminRolesService.java63
-rw-r--r--portal-BE/src/main/java/org/onap/portal/service/PersUserWidgetService.java58
-rw-r--r--portal-BE/src/main/java/org/onap/portal/service/WidgetService.java68
-rw-r--r--portal-BE/src/main/java/org/onap/portal/service/ep/EpMicroserviceParameterService.java17
-rw-r--r--portal-BE/src/main/java/org/onap/portal/service/ep/EpWidgetCatalogParameterService.java84
-rw-r--r--portal-BE/src/main/java/org/onap/portal/service/ep/EpWidgetCatalogService.java21
-rw-r--r--portal-BE/src/main/java/org/onap/portal/service/fn/FnAppService.java6
-rw-r--r--portal-BE/src/main/java/org/onap/portal/service/fn/FnRoleService.java87
-rw-r--r--portal-BE/src/main/java/org/onap/portal/service/fn/FnUserRoleService.java82
-rw-r--r--portal-BE/src/main/java/org/onap/portal/service/fn/FnUserService.java22
-rw-r--r--portal-BE/src/main/java/org/onap/portal/utils/SystemType.java44
-rw-r--r--portal-BE/src/main/resources/application.properties19
-rw-r--r--portal-BE/src/main/resources/data.sql931
-rw-r--r--portal-BE/src/main/resources/test.properties4
-rw-r--r--portal-BE/src/test/java/org/onap/portal/controller/UserRolesControllerTest.java130
-rw-r--r--portal-BE/src/test/java/org/onap/portal/controller/WidgetMSControllerTest.java81
-rw-r--r--portal-BE/src/test/java/org/onap/portal/controller/WidgetsCatalogControllerTest.java271
-rw-r--r--portal-BE/src/test/java/org/onap/portal/controller/WidgetsControllerTest.java223
-rw-r--r--portal-BE/src/test/java/org/onap/portal/service/ep/EpMicroserviceParameterServiceTest.java68
-rw-r--r--portal-BE/src/test/java/org/onap/portal/service/ep/EpWidgetCatalogParameterServiceTest.java168
-rw-r--r--portal-BE/src/test/java/org/onap/portal/service/fn/FnUserServiceTest.java22
71 files changed, 3880 insertions, 419 deletions
diff --git a/ecomp-portal-BE-common/pom.xml b/ecomp-portal-BE-common/pom.xml
index 97b1f85e..a3e445de 100644
--- a/ecomp-portal-BE-common/pom.xml
+++ b/ecomp-portal-BE-common/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.onap.portal</groupId>
<artifactId>onap-portal-parent</artifactId>
- <version>2.6.0-SNAPSHOT</version>
+ <version>2.6.0</version>
</parent>
<artifactId>portal-be-common</artifactId>
diff --git a/ecomp-portal-BE-os/pom.xml b/ecomp-portal-BE-os/pom.xml
index ad9a9927..52ce3d39 100644
--- a/ecomp-portal-BE-os/pom.xml
+++ b/ecomp-portal-BE-os/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.onap.portal</groupId>
<artifactId>onap-portal-parent</artifactId>
- <version>2.6.0-SNAPSHOT</version>
+ <version>2.6.0</version>
</parent>
<artifactId>portal-be-os</artifactId>
diff --git a/ecomp-portal-FE-os/pom.xml b/ecomp-portal-FE-os/pom.xml
index 2a43f83b..1d6cb284 100644
--- a/ecomp-portal-FE-os/pom.xml
+++ b/ecomp-portal-FE-os/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.onap.portal</groupId>
<artifactId>onap-portal-parent</artifactId>
- <version>2.6.0-SNAPSHOT</version>
+ <version>2.6.0</version>
</parent>
<artifactId>portal-FE-os</artifactId>
diff --git a/ecomp-portal-widget-ms/common-widgets/pom.xml b/ecomp-portal-widget-ms/common-widgets/pom.xml
index 5b574d87..b0c45836 100644
--- a/ecomp-portal-widget-ms/common-widgets/pom.xml
+++ b/ecomp-portal-widget-ms/common-widgets/pom.xml
@@ -6,7 +6,7 @@
<parent>
<groupId>org.onap.portal</groupId>
<artifactId>widget-ms-parent</artifactId>
- <version>2.6.0-SNAPSHOT</version>
+ <version>2.6.0</version>
</parent>
<artifactId>common-widgets</artifactId>
diff --git a/ecomp-portal-widget-ms/pom.xml b/ecomp-portal-widget-ms/pom.xml
index d8b33301..c48ecd67 100644
--- a/ecomp-portal-widget-ms/pom.xml
+++ b/ecomp-portal-widget-ms/pom.xml
@@ -6,7 +6,7 @@
<parent>
<groupId>org.onap.portal</groupId>
<artifactId>onap-portal-parent</artifactId>
- <version>2.6.0-SNAPSHOT</version>
+ <version>2.6.0</version>
</parent>
<artifactId>widget-ms-parent</artifactId>
diff --git a/ecomp-portal-widget-ms/widget-ms/pom.xml b/ecomp-portal-widget-ms/widget-ms/pom.xml
index d0849df6..c5e641f6 100644
--- a/ecomp-portal-widget-ms/widget-ms/pom.xml
+++ b/ecomp-portal-widget-ms/widget-ms/pom.xml
@@ -13,7 +13,7 @@
<groupId>org.onap.portal</groupId>
<artifactId>widget-ms</artifactId>
- <version>2.6.0-SNAPSHOT</version>
+ <version>2.6.0</version>
<packaging>jar</packaging>
<name>widget-microservice</name>
diff --git a/pom.xml b/pom.xml
index a6e369b9..50674c3a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -12,7 +12,7 @@
<groupId>org.onap.portal</groupId>
<artifactId>onap-portal-parent</artifactId>
- <version>2.6.0-SNAPSHOT</version>
+ <version>2.6.0</version>
<packaging>pom</packaging>
<name>portal</name>
@@ -28,7 +28,7 @@
<properties>
<!-- Jenkins should invoke mvn with argument -Dbuild.number=${BUILD_NUMBER} -->
<build.number>0</build.number>
- <epsdk.version>2.6.0-SNAPSHOT</epsdk.version>
+ <epsdk.version>2.6.0</epsdk.version>
<springframework.version>4.3.24.RELEASE</springframework.version>
<springframework.security.version>4.2.13.RELEASE</springframework.security.version>
<hibernate.version>4.3.11.Final</hibernate.version>
diff --git a/portal-BE/build.sh b/portal-BE/build.sh
index 5c940365..68953384 100755
--- a/portal-BE/build.sh
+++ b/portal-BE/build.sh
@@ -1,6 +1,5 @@
#!/bin/bash
mvn clean install
-docker build -t portal_mariadb -f dockerfile.mariadb .
docker build -t portal_app .
docker-compose up
diff --git a/portal-BE/docker-compose.yml b/portal-BE/docker-compose.yml
index 7c44e82f..2293afb6 100644
--- a/portal-BE/docker-compose.yml
+++ b/portal-BE/docker-compose.yml
@@ -6,14 +6,21 @@
# docker login -u USER -p PASS nexus3.onap.org:10001
# Uses healthcheck feature added in docker-compose v2.1
-version: '2.1'
+version: '3.1'
services:
portal-db:
- image: portal_mariadb
+ image: mariadb
+# image: mysql
container_name: portal_mariaDB
+ ports:
+ - 3306:3306
+ restart: always
environment:
- MYSQL_DATABASE: testdb
+ - MYSQL_DATABASE=testdb
+ - MYSQL_USER=portal
+ - MYSQL_PASSWORD=Test123456
+ - MYSQL_RANDOM_ROOT_PASSWORD=yes
healthcheck:
test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
networks:
@@ -22,12 +29,11 @@ services:
portal-app:
image: portal_app
container_name: portal_APP
- restart: on-failure
+ restart: always
ports:
- 8080:8080
depends_on:
- portal-db:
- condition: service_healthy
+ - portal-db
networks:
- backend
diff --git a/portal-BE/dockerfile.mariadb b/portal-BE/dockerfile.mariadb
deleted file mode 100644
index f8fb49f1..00000000
--- a/portal-BE/dockerfile.mariadb
+++ /dev/null
@@ -1,7 +0,0 @@
-FROM mariadb:latest
-
-ADD my.cnf /etc/mysql/my.cnf
-ENV MYSQL_USER portal
-ENV MYSQL_PASSWORD Test123456
-ENV MYSQL_ROOT_PASSWORD klasjfhaskrigudsb
-EXPOSE 3306 \ No newline at end of file
diff --git a/portal-BE/my.cnf b/portal-BE/my.cnf
index d58210f7..983b8e31 100644
--- a/portal-BE/my.cnf
+++ b/portal-BE/my.cnf
@@ -16,7 +16,7 @@
# escpecially if they contain "#" chars...
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
[client]
-port = 3306
+#port = 3306
socket = /var/run/mysqld/mysqld.sock
# Here is entries for some specific programs
@@ -36,7 +36,7 @@ skip-name-resolve
#user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
-port = 3306
+#port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
@@ -135,9 +135,9 @@ max_binlog_size = 100M
# Read the manual for more InnoDB related options. There are many!
default_storage_engine = InnoDB
# you can't just change log file size, requires special procedure
-#innodb_log_file_size = 50M
+#innodb_log_file_size = 2047M
innodb_buffer_pool_size = 256M
-innodb_log_buffer_size = 8M
+innodb_log_buffer_size = 32M
innodb_file_per_table = 1
innodb_open_files = 400
innodb_io_capacity = 400
diff --git a/portal-BE/pom.xml b/portal-BE/pom.xml
index c291c028..13477b68 100644
--- a/portal-BE/pom.xml
+++ b/portal-BE/pom.xml
@@ -51,16 +51,22 @@
<artifactId>spring-boot-starter-aop</artifactId>
<version>2.1.6.RELEASE</version>
</dependency>
+ <!-- https://mvnrepository.com/artifact/org.springframework/spring-context-support -->
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context-support</artifactId>
+ <version>5.2.0.RELEASE</version>
+ </dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
- <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
+ <!-- https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client -->
<dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>8.0.17</version>
+ <groupId>org.mariadb.jdbc</groupId>
+ <artifactId>mariadb-java-client</artifactId>
+ <version>2.5.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.glassfish/javax.el -->
<dependency>
@@ -101,12 +107,12 @@
<dependency>
<groupId>org.onap.portal.sdk</groupId>
<artifactId>epsdk-logger</artifactId>
- <version>2.6.0-SNAPSHOT</version>
+ <version>2.6.0</version>
</dependency>
<dependency>
<groupId>org.onap.portal.sdk</groupId>
<artifactId>epsdk-core</artifactId>
- <version>2.6.0-SNAPSHOT</version>
+ <version>2.6.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
@@ -134,6 +140,57 @@
<version>4.0.1</version>
<scope>compile</scope>
</dependency>
+ <dependency>
+ <groupId>io.swagger</groupId>
+ <artifactId>swagger-annotations</artifactId>
+ <version>2.0.0-rc2</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>io.swagger</groupId>
+ <artifactId>swagger-annotations</artifactId>
+ <version>2.0.0-rc2</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>io.swagger</groupId>
+ <artifactId>swagger-annotations</artifactId>
+ <version>1.5.20</version>
+ </dependency>
+ <dependency>
+ <groupId>io.swagger</groupId>
+ <artifactId>swagger-annotations</artifactId>
+ <version>2.0.0-rc2</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>io.swagger</groupId>
+ <artifactId>swagger-annotations</artifactId>
+ <version>1.5.20</version>
+ </dependency>
+ <dependency>
+ <groupId>io.swagger</groupId>
+ <artifactId>swagger-annotations</artifactId>
+ <version>2.0.0-rc2</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>io.swagger</groupId>
+ <artifactId>swagger-annotations</artifactId>
+ <version>2.0.0-rc2</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>io.swagger</groupId>
+ <artifactId>swagger-annotations</artifactId>
+ <version>1.5.20</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-rs-client</artifactId>
+ <version>3.3.2</version>
+ <scope>compile</scope>
+ </dependency>
</dependencies>
<properties>
<docker.image.prefix>portal</docker.image.prefix>
diff --git a/portal-BE/src/main/java/org/onap/portal/annotation/ApiVersion.java b/portal-BE/src/main/java/org/onap/portal/annotation/ApiVersion.java
new file mode 100644
index 00000000..1c4fafc3
--- /dev/null
+++ b/portal-BE/src/main/java/org/onap/portal/annotation/ApiVersion.java
@@ -0,0 +1,57 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ============LICENSE_END============================================
+ *
+ *
+ */
+
+package org.onap.portal.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE, ElementType.ANNOTATION_TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ApiVersion {
+
+ String service() default "";
+ String max() default "";
+ int min() default 0;
+ String method() default "";
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/aop/service/FnUserServiceAOP.java b/portal-BE/src/main/java/org/onap/portal/aop/service/FnUserServiceAOP.java
index b96575c6..65fc88d9 100644
--- a/portal-BE/src/main/java/org/onap/portal/aop/service/FnUserServiceAOP.java
+++ b/portal-BE/src/main/java/org/onap/portal/aop/service/FnUserServiceAOP.java
@@ -62,14 +62,11 @@ public class FnUserServiceAOP {
private final DataValidator dataValidator;
private final FnUserMapper fnUserMapper;
- private final FnUserService fnUserService;
@Autowired
- public FnUserServiceAOP(final DataValidator dataValidator, final FnUserMapper fnUserMapper,
- final FnUserService fnUserService) {
+ public FnUserServiceAOP(final DataValidator dataValidator, final FnUserMapper fnUserMapper) {
this.dataValidator = dataValidator;
this.fnUserMapper = fnUserMapper;
- this.fnUserService = fnUserService;
}
@Before("execution(* org.onap.portal.service.fn.FnUserService.saveFnUser(..)) && args(principal, fnUser)")
@@ -93,7 +90,7 @@ public class FnUserServiceAOP {
LOGGER.error("User " + principal.getName() + " try to save not valid fnUser: " + violations);
throw new IllegalArgumentException("FnUser is not valid, " + violations);
} else {
- LOGGER.error("User " + principal.getName() + " send valid fnUser");
+ LOGGER.info("User " + principal.getName() + " send valid fnUser");
}
}
}
diff --git a/portal-BE/src/main/java/org/onap/portal/aop/service/PersUserWidgetServiceAOP.java b/portal-BE/src/main/java/org/onap/portal/aop/service/PersUserWidgetServiceAOP.java
new file mode 100644
index 00000000..79326618
--- /dev/null
+++ b/portal-BE/src/main/java/org/onap/portal/aop/service/PersUserWidgetServiceAOP.java
@@ -0,0 +1,72 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ============LICENSE_END============================================
+ *
+ *
+ */
+
+package org.onap.portal.aop.service;
+
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.onap.portal.domain.db.fn.FnUser;
+import org.onap.portal.domain.dto.transport.WidgetCatalogPersonalization;
+import org.onap.portal.validation.DataValidator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Aspect
+@Component
+public class PersUserWidgetServiceAOP {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(PersUserWidgetServiceAOP.class);
+
+ private final DataValidator dataValidator;
+
+ @Autowired
+ public PersUserWidgetServiceAOP(DataValidator dataValidator) {
+ this.dataValidator = dataValidator;
+ }
+
+ @Before("execution(* org.onap.portal.service.PersUserWidgetService.setPersUserAppValue(..)) && args(user, personalization)")
+ public void setOnboardingWidget(FnUser user, WidgetCatalogPersonalization personalization) {
+ if (!dataValidator.isValid(personalization)) {
+ throw new IllegalArgumentException(dataValidator.getConstraintViolationsString(personalization));
+ }
+ }
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/aop/service/WidgetServiceAOP.java b/portal-BE/src/main/java/org/onap/portal/aop/service/WidgetServiceAOP.java
new file mode 100644
index 00000000..14172937
--- /dev/null
+++ b/portal-BE/src/main/java/org/onap/portal/aop/service/WidgetServiceAOP.java
@@ -0,0 +1,32 @@
+package org.onap.portal.aop.service;
+
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.onap.portal.domain.dto.transport.OnboardingWidget;
+import org.onap.portal.validation.DataValidator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Aspect
+@Component
+public class WidgetServiceAOP {
+ private final Long LONG_ECOMP_APP_ID = 1L;
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(WidgetServiceAOP.class);
+
+ private final DataValidator dataValidator;
+
+ @Autowired
+ public WidgetServiceAOP(DataValidator dataValidator) {
+ this.dataValidator = dataValidator;
+ }
+
+ @Before("execution(* org.onap.portal.service.WidgetService.setOnboardingWidget(..)) && args(userId, onboardingWidget)")
+ public void setOnboardingWidget(final Long userId, OnboardingWidget onboardingWidget) {
+ if (!dataValidator.isValid(onboardingWidget)) {
+ throw new IllegalArgumentException(dataValidator.getConstraintViolationsString(onboardingWidget));
+ }
+ }
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/controller/UserRolesController.java b/portal-BE/src/main/java/org/onap/portal/controller/UserRolesController.java
new file mode 100644
index 00000000..fdd1de24
--- /dev/null
+++ b/portal-BE/src/main/java/org/onap/portal/controller/UserRolesController.java
@@ -0,0 +1,536 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ============LICENSE_END============================================
+ *
+ *
+ */
+
+package org.onap.portal.controller;
+
+import java.security.Principal;
+import org.onap.portal.domain.db.fn.FnUser;
+import org.onap.portal.service.AdminRolesService;
+import org.onap.portal.service.fn.FnUserService;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@Configuration
+public class UserRolesController {
+
+ private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(UserRolesController.class);
+
+ private final FnUserService fnUserService;
+ private final AdminRolesService adminRolesService;
+
+
+/*
+ private final UserRolesService userRolesService;
+ private final ApplicationsRestClientService applicationsRestClientService;
+ private final SearchService searchService;*/
+
+
+ private static final String FAILURE = "failure";
+
+ @Autowired
+ public UserRolesController(final FnUserService fnUserService,
+ final AdminRolesService adminRolesService) {
+ this.fnUserService = fnUserService;
+ this.adminRolesService = adminRolesService;
+ }
+
+/*
+
+ @RequestMapping(value = {"/portalApi/queryUsers"}, method = RequestMethod.GET, produces = "application/json")
+ @PreAuthorize("hasRole('System_Administrator') and hasRole('Account_Administrator')")
+ public String getPhoneBookSearchResult(Principal principal, @RequestParam("search") String searchString,
+ HttpServletResponse response) {
+ FnUser user = fnUserService.loadUserByUsername(principal.getName());
+
+ String searchResult = null;
+ if (!adminRolesService.isSuperAdmin(user) && !adminRolesService.isAccountAdmin(user)
+ && !adminRolesService.isRoleAdmin(user)) {
+ EcompPortalUtils.setBadPermissions(user, response, "getPhoneBookSearchResult");
+ } else {
+ searchString = searchString.trim();
+ if (searchString.length() > 2) {
+ searchResult = searchService.searchUsersInPhoneBook(searchString);
+ } else {
+ logger.info(EELFLoggerDelegate.errorLogger,
+ "getPhoneBookSearchResult - too short search string: " + searchString);
+ }
+ }
+ EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/queryUsers", "result =", searchResult);
+
+ return searchResult;
+ }
+
+ @RequestMapping(value = {"/portalApi/adminAppsRoles"}, method = {
+ RequestMethod.GET}, produces = "application/json")
+ public AppsListWithAdminRole getAppsWithAdminRoleStateForUser(Principal principal,
+ @RequestParam("user") String orgUserId, HttpServletResponse response) {
+
+ FnUser user = fnUserService.loadUserByUsername(principal.getName());
+
+ AppsListWithAdminRole result = null;
+ if (!adminRolesService.isSuperAdmin(user)) {
+ EcompPortalUtils.setBadPermissions(user, response, "getAppsWithAdminRoleStateForUser");
+ } else {
+ if (EcompPortalUtils.legitimateUserId(orgUserId)) {
+ result = adminRolesService.getAppsWithAdminRoleStateForUser(orgUserId);
+ } else {
+ logger.info(EELFLoggerDelegate.errorLogger,
+ "getAppsWithAdminRoleStateForUser - parms error, no Organization User ID");
+ response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
+ }
+ }
+
+ StringBuilder adminAppRoles = new StringBuilder();
+ if (result != null) {
+ if (!result.appsRoles.isEmpty()) {
+ adminAppRoles.append("User '" + result.orgUserId + "' has admin role to the apps = {");
+ for (AppNameIdIsAdmin adminAppRole : result.appsRoles) {
+ if (adminAppRole.isAdmin) {
+ adminAppRoles.append(adminAppRole.appName + ", ");
+ }
+ }
+ adminAppRoles.append("}.");
+ } else {
+ adminAppRoles.append("User '" + result.orgUserId + "' has no Apps with Admin Role.");
+ }
+ } else {
+ logger.error(EELFLoggerDelegate.errorLogger,
+ "putAppWithUserRoleStateForUser: getAppsWithAdminRoleStateForUser result is null");
+ }
+
+ logger.info(EELFLoggerDelegate.errorLogger, adminAppRoles.toString());
+
+ EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/adminAppsRoles", "get result =", result);
+
+ return result;
+ }
+
+ @RequestMapping(value = {"/portalApi/adminAppsRoles"}, method = {
+ RequestMethod.PUT}, produces = "application/json")
+ public FieldsValidator putAppsWithAdminRoleStateForUser(Principal principal,
+ @RequestBody AppsListWithAdminRole newAppsListWithAdminRoles, HttpServletResponse response) {
+
+ // newAppsListWithAdminRoles.appsRoles
+ FieldsValidator fieldsValidator = new FieldsValidator();
+ StringBuilder newAppRoles = new StringBuilder();
+ if (newAppsListWithAdminRoles != null) {
+ if (!newAppsListWithAdminRoles.appsRoles.isEmpty()) {
+ newAppRoles
+ .append("User '" + newAppsListWithAdminRoles.orgUserId
+ + "' has admin role to the apps = { ");
+ for (AppNameIdIsAdmin adminAppRole : newAppsListWithAdminRoles.appsRoles) {
+ if (adminAppRole.isAdmin) {
+ newAppRoles.append(adminAppRole.appName + " ,");
+ }
+ }
+ newAppRoles.deleteCharAt(newAppRoles.length() - 1);
+ newAppRoles.append("}.");
+ } else {
+ newAppRoles.append("User '" + newAppsListWithAdminRoles.orgUserId
+ + "' has no Apps with Admin Role.");
+ }
+ } else {
+ logger.error(EELFLoggerDelegate.errorLogger,
+ "putAppWithUserRoleStateForUser: putAppsWithAdminRoleStateForUser result is null");
+ fieldsValidator.setHttpStatusCode((long) HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ }
+
+ logger.info(EELFLoggerDelegate.errorLogger, newAppRoles.toString());
+
+ FnUser user = fnUserService.loadUserByUsername(principal.getName());
+
+ boolean changesApplied = false;
+
+ if (!adminRolesService.isSuperAdmin(user)) {
+ EcompPortalUtils.setBadPermissions(user, response, "putAppsWithAdminRoleStateForUser");
+ } else {
+ changesApplied = adminRolesService.setAppsWithAdminRoleStateForUser(newAppsListWithAdminRoles);
+ AuditLog auditLog = new AuditLog();
+ auditLog.setUserId(user.getId());
+ auditLog.setActivityCode(EcompAuditLog.CD_ACTIVITY_UPDATE_ACCOUNT_ADMIN);
+ if (newAppsListWithAdminRoles != null) {
+ auditLog.setAffectedRecordId(newAppsListWithAdminRoles.orgUserId);
+ }
+ auditLog.setComments(
+ EcompPortalUtils
+ .truncateString(newAppRoles.toString(), PortalConstants.AUDIT_LOG_COMMENT_SIZE));
+ auditService.logActivity(auditLog, null);
+
+ MDC.put(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP,
+ EPEELFLoggerAdvice.getCurrentDateTimeUTC());
+ MDC.put(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP,
+ EPEELFLoggerAdvice.getCurrentDateTimeUTC());
+ EcompPortalUtils.calculateDateTimeDifferenceForLog(
+ MDC.get(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP),
+ MDC.get(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP));
+ if (newAppsListWithAdminRoles != null) {
+ logger.info(EELFLoggerDelegate.auditLogger,
+ EPLogUtil.formatAuditLogMessage(
+ "UserRolesController.putAppsWithAdminRoleStateForUser",
+ EcompAuditLog.CD_ACTIVITY_UPDATE_ACCOUNT_ADMIN, user.getOrgUserId(),
+ newAppsListWithAdminRoles.orgUserId, newAppRoles.toString()));
+ }
+ MDC.remove(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP);
+ MDC.remove(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP);
+ MDC.remove(SystemProperties.MDC_TIMER);
+ }
+ EcompPortalUtils
+ .logAndSerializeObject(logger, "/portalApi/adminAppsRoles", "put result =", changesApplied);
+
+ return fieldsValidator;
+ }
+
+
+ @RequestMapping(value = {"/portalApi/userAppRoles"}, method = {
+ RequestMethod.GET}, produces = "application/json")
+ public List<RoleInAppForUser> getAppRolesForUser(Principal principal,
+ @RequestParam("user") String orgUserId,
+ @RequestParam("app") Long appid, @RequestParam("externalRequest") Boolean extRequestValue,
+ @RequestParam("isSystemUser") Boolean isSystemUser,
+ HttpServletResponse response) {
+ FnUser user = fnUserService.loadUserByUsername(principal.getName());
+ List<RoleInAppForUser> result = null;
+ String feErrorString = "";
+ if (!adminRolesService.isAccountAdmin(user) && !adminRolesService.isRoleAdmin(user)) {
+ logger.debug(EELFLoggerDelegate.debugLogger,
+ "getAppRolesForUser: Accountadminpermissioncheck {}, RoleAdmincheck {}",
+ adminRolesService.isAccountAdmin(user), adminRolesService.isRoleAdmin(user));
+ EcompPortalUtils.setBadPermissions(user, response, "getAppRolesForUser");
+ feErrorString = EcompPortalUtils.getFEErrorString(true, response.getStatus());
+ } else {
+ if ((!isSystemUser && EcompPortalUtils.legitimateUserId(orgUserId)) || isSystemUser) {
+ result = userRolesService.getAppRolesForUser(appid, orgUserId, extRequestValue, user);
+ logger.debug(EELFLoggerDelegate.debugLogger, "getAppRolesForUser: result {}, appId {}",
+ result, appid);
+ int responseCode = EcompPortalUtils.getExternalAppResponseCode();
+ if (responseCode != 0 && responseCode != 200) {
+ // external error
+ response.setStatus(responseCode);
+ feErrorString = EcompPortalUtils.getFEErrorString(false, responseCode);
+ } else if (result == null) {
+ // If the result is null, there was an internal onap error
+ // in the service call.
+ response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ feErrorString = EcompPortalUtils.getFEErrorString(true,
+ HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ }
+ } else {
+ logger.info(EELFLoggerDelegate.errorLogger, "getAppRolesForUser - no Organization User ID");
+ response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
+ feErrorString = EcompPortalUtils.getFEErrorString(true, HttpServletResponse.SC_BAD_REQUEST);
+ }
+ }
+
+ StringBuilder sbUserApps = new StringBuilder();
+ if (result != null && !result.isEmpty()) {
+ sbUserApps.append("User '" + orgUserId + "' has Roles={");
+ for (RoleInAppForUser appRole : result) {
+ if (appRole.isApplied) {
+ sbUserApps.append(appRole.roleName + ", ");
+ }
+ }
+ sbUserApps.append("} assigned to the appId '" + appid + "'.");
+ } else {
+ // Not sure creating an empty object will make any difference
+ // but would like to give it a shot for defect #DE221057
+ if (result == null) {
+ result = new ArrayList<>();
+ }
+ sbUserApps.append("User '" + orgUserId + "' and appid " + appid + " has no roles");
+ }
+ logger.info(EELFLoggerDelegate.errorLogger, sbUserApps.toString());
+
+ EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/userAppRoles", "get result =", result);
+ if (feErrorString != "") {
+ logger.debug(EELFLoggerDelegate.debugLogger, "LR: FEErrorString to header: " + feErrorString);
+
+ response.addHeader("FEErrorString", feErrorString);
+ response.addHeader("Access-Control-Expose-Headers", "FEErrorString");
+ }
+ return result;
+ }
+
+ @RequestMapping(value = {"/portalApi/userAppRoles"}, method = {
+ RequestMethod.PUT}, produces = "application/json")
+ public PortalRestResponse<String> putAppWithUserRoleStateForUser(Principal principal,
+ @RequestBody AppWithRolesForUser newAppRolesForUser, HttpServletResponse response) {
+ // FieldsValidator fieldsValidator = new FieldsValidator();
+ PortalRestResponse<String> portalResponse = new PortalRestResponse<>();
+ StringBuilder sbUserApps = new StringBuilder();
+ if (newAppRolesForUser != null) {
+ sbUserApps.append("User '" + newAppRolesForUser.getOrgUserId());
+ if (newAppRolesForUser.getAppId() != null && !newAppRolesForUser.getAppRoles().isEmpty()) {
+ sbUserApps.append("' has roles = { ");
+ for (RoleInAppForUser appRole : newAppRolesForUser.getAppRoles()) {
+ if (appRole.isApplied) {
+ sbUserApps.append(appRole.roleName + " ,");
+ }
+ }
+ sbUserApps.deleteCharAt(sbUserApps.length() - 1);
+ sbUserApps.append("} assigned for the app " + newAppRolesForUser.getAppId());
+ } else {
+ sbUserApps.append("' has no roles assigned for app " + newAppRolesForUser.getAppId());
+ }
+ }
+ logger.info(EELFLoggerDelegate.applicationLogger, "putAppWithUserRoleStateForUser: {}",
+ sbUserApps.toString());
+
+ FnUser user = fnUserService.loadUserByUsername(principal.getName());
+ // boolean changesApplied = false;
+ ExternalRequestFieldsValidator changesApplied = null;
+
+ if (!adminRolesService.isAccountAdmin(user) && !adminRolesService.isRoleAdmin(user)) {
+ EcompPortalUtils.setBadPermissions(user, response, "putAppWithUserRoleStateForUser");
+ } else if (newAppRolesForUser == null) {
+ logger.error(EELFLoggerDelegate.errorLogger,
+ "putAppWithUserRoleStateForUser: newAppRolesForUser is null");
+ } else {
+ changesApplied = userRolesService.setAppWithUserRoleStateForUser(user, newAppRolesForUser);
+ try {
+ if (changesApplied.isResult()) {
+ logger.info(EELFLoggerDelegate.applicationLogger,
+ "putAppWithUserRoleStateForUser: succeeded for app {}, user {}",
+ newAppRolesForUser.getAppId(),
+ newAppRolesForUser.getAppId());
+
+ MDC.put(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP,
+ EPEELFLoggerAdvice.getCurrentDateTimeUTC());
+ AuditLog auditLog = new AuditLog();
+ auditLog.setUserId(user.getId());
+ auditLog.setActivityCode(EcompAuditLog.CD_ACTIVITY_UPDATE_USER);
+ auditLog.setAffectedRecordId(newAppRolesForUser.getOrgUserId());
+ auditLog.setComments(EcompPortalUtils.truncateString(sbUserApps.toString(),
+ PortalConstants.AUDIT_LOG_COMMENT_SIZE));
+ auditService.logActivity(auditLog, null);
+
+ MDC.put(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP,
+ EPEELFLoggerAdvice.getCurrentDateTimeUTC());
+ EcompPortalUtils.calculateDateTimeDifferenceForLog(
+ MDC.get(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP),
+ MDC.get(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP));
+ logger.info(EELFLoggerDelegate.auditLogger,
+ EPLogUtil.formatAuditLogMessage(
+ "UserRolesController.putAppWithUserRoleStateForUser",
+ EcompAuditLog.CD_ACTIVITY_UPDATE_USER, user.getOrgUserId(),
+ newAppRolesForUser.getOrgUserId(), sbUserApps.toString()));
+ MDC.remove(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP);
+ MDC.remove(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP);
+ MDC.remove(SystemProperties.MDC_TIMER);
+ portalResponse = new PortalRestResponse<>(PortalRestStatusEnum.OK, "success", null);
+
+ }
+ if (!changesApplied.isResult()) {
+ throw new Exception(changesApplied.getDetailMessage());
+ }
+
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger,
+ "putAppWithUserRoleStateForUser: failed for app {}, user {}",
+ newAppRolesForUser.getAppId(),
+ newAppRolesForUser.getOrgUserId(), e);
+ portalResponse = new PortalRestResponse<>(PortalRestStatusEnum.ERROR, e.getMessage(), null);
+ }
+ }
+
+ EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/userAppRoles", "put result =", changesApplied);
+ return portalResponse;
+ }
+
+ @RequestMapping(value = {"/portalApi/updateRemoteUserProfile"}, method = {
+ RequestMethod.GET}, produces = "application/json")
+ public PortalRestResponse<String> updateRemoteUserProfile(HttpServletRequest request) {
+
+ String updateRemoteUserFlag = FAILURE;
+ try {
+ // saveNewUser = userService.saveNewUser(newUser);
+ String orgUserId = request.getParameter("loginId");
+ Long appId = Long.parseLong(request.getParameter("appId"));
+ userRolesService.updateRemoteUserProfile(orgUserId, appId);
+
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger, "updateRemoteUserProfile failed", e);
+ return new PortalRestResponse<>(PortalRestStatusEnum.OK, updateRemoteUserFlag, e.getMessage());
+ }
+ return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, updateRemoteUserFlag, "");
+
+ }
+
+ @RequestMapping(value = {"/portalApi/app/{appId}/users"}, method = {
+ RequestMethod.GET}, produces = "application/json")
+ public List<UserApplicationRoles> getUsersFromAppEndpoint(HttpServletRequest request,
+ @PathVariable("appId") Long appId) throws HTTPException {
+ try {
+ logger.debug(EELFLoggerDelegate.debugLogger, "/portalApi/app/{}/users was invoked", appId);
+ return userRolesService.getUsersFromAppEndpoint(appId);
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger, "getUsersFromAppEndpoint failed", e);
+ return new ArrayList<>();
+ }
+ }
+
+ @RequestMapping(value = {"/portalApi/app/{appId}/roles"}, method = {
+ RequestMethod.GET}, produces = "application/json")
+ public List<EcompRole> testGetRoles(HttpServletRequest request, @PathVariable("appId") Long appId)
+ throws HTTPException {
+ EcompRole[] appRoles = applicationsRestClientService.get(EcompRole[].class, appId, "/roles");
+ List<EcompRole> rolesList = Arrays.asList(appRoles);
+ EcompPortalUtils
+ .logAndSerializeObject(logger, "/portalApi/app/{appId}/roles", "response for appId=" + appId,
+ rolesList);
+
+ return rolesList;
+ }
+
+ @RequestMapping(value = {"/portalApi/admin/import/app/{appId}/roles"}, method = {
+ RequestMethod.GET}, produces = "application/json")
+ public List<FnRole> importRolesFromRemoteApplication(HttpServletRequest request,
+ @PathVariable("appId") Long appId)
+ throws HTTPException {
+ List<FnRole> rolesList = userRolesService.importRolesFromRemoteApplication(appId);
+ EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/admin/import/app/{appId}/roles",
+ "response for appId=" + appId, rolesList);
+
+ return rolesList;
+ }
+
+ @RequestMapping(value = {"/portalApi/app/{appId}/user/{orgUserId}/roles"}, method = {
+ RequestMethod.GET}, produces = "application/json")
+ public EcompRole testGetRoles(HttpServletRequest request, @PathVariable("appId") Long appId,
+ @PathVariable("orgUserId") String orgUserId) throws Exception {
+ if (!EcompPortalUtils.legitimateUserId(orgUserId)) {
+ String msg = "Error /user/<user>/roles not legitimate orgUserId = " + orgUserId;
+ logger.error(EELFLoggerDelegate.errorLogger, msg);
+ throw new Exception(msg);
+ }
+ EcompRole[] roles = applicationsRestClientService.get(EcompRole[].class, appId,
+ String.format("/user/%s/roles", orgUserId));
+ if (roles.length != 1) {
+ String msg =
+ "Error /user/<user>/roles returned array. expected size 1 recieved size = " + roles.length;
+ logger.error(EELFLoggerDelegate.errorLogger, msg);
+ throw new Exception(msg);
+ }
+
+ EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/app/{appId}/user/{orgUserId}/roles",
+ "response for appId='" + appId + "' and orgUserId='" + orgUserId + "'", roles[0]);
+ return roles[0];
+ }
+
+ @RequestMapping(value = {"/portalApi/saveUserAppRoles"}, method = {
+ RequestMethod.PUT}, produces = "application/json")
+ public FieldsValidator putAppWithUserRoleRequest(Principal principal,
+ @RequestBody AppWithRolesForUser newAppRolesForUser, HttpServletResponse response) {
+ FieldsValidator fieldsValidator = null;
+ try {
+
+ FnUser user = fnUserService.loadUserByUsername(principal.getName());
+ fieldsValidator = userRolesService.putUserAppRolesRequest(newAppRolesForUser, user);
+ response.setStatus(fieldsValidator.httpStatusCode.intValue());
+
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger, "putAppWithUserRoleRequest failed", e);
+
+ }
+ // return fieldsValidator;
+ EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/saveUserAppRoles", "PUT result =",
+ response.getStatus());
+ return fieldsValidator;
+ }
+
+ @RequestMapping(value = {"/portalApi/appCatalogRoles"}, method = {
+ RequestMethod.GET}, produces = "application/json")
+ public List<EPUserAppCatalogRoles> getUserAppCatalogRoles(Principal principal,
+ @RequestParam("appName") String appName) {
+ FnUser user = fnUserService.loadUserByUsername(principal.getName());
+ List<EPUserAppCatalogRoles> userAppRoleList = null;
+ try {
+ userAppRoleList = userRolesService.getUserAppCatalogRoles(user, appName);
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger, "putUserWidgetsSortPref failed", e);
+
+ }
+ Collections.sort(userAppRoleList, getUserAppCatalogRolesComparator);
+ EcompPortalUtils
+ .logAndSerializeObject(logger, "/portalApi/userApplicationRoles", "result =", userAppRoleList);
+
+ return userAppRoleList;
+
+ }
+
+ private Comparator<EPUserAppCatalogRoles> getUserAppCatalogRolesComparator =
+ Comparator.comparing(EPUserAppCatalogRoles::getRolename);
+
+ @RequestMapping(value = "/portalApi/externalRequestAccessSystem", method = RequestMethod.GET,
+ produces = "application/json")
+ public ExternalSystemAccess readExternalRequestAccess(HttpServletRequest request) {
+ ExternalSystemAccess result = null;
+ try {
+ result = userRolesService.getExternalRequestAccess();
+ EcompPortalUtils
+ .logAndSerializeObject(logger, "/portalApi/externalRequestAccessSystem", "GET result =",
+ result);
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger,
+ "readExternalRequestAccess failed: " + e.getMessage());
+ }
+ return result;
+ }
+*/
+
+
+ @RequestMapping(value = {"/portalApi/checkIfUserIsSuperAdmin"}, method = RequestMethod.GET,
+ produces = "application/json")
+ public boolean checkIfUserIsSuperAdmin(Principal principal) {
+ FnUser user = fnUserService.loadUserByUsername(principal.getName());
+
+ boolean isSuperAdmin = false;
+ try {
+ isSuperAdmin = adminRolesService.isSuperAdmin(user.getOrgUserId());
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger, "checkIfUserIsSuperAdmin failed: " + e.getMessage());
+ }
+ return isSuperAdmin;
+ }
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/controller/WebAnalyticsExtAppController.java b/portal-BE/src/main/java/org/onap/portal/controller/WebAnalyticsExtAppController.java
new file mode 100644
index 00000000..849b2620
--- /dev/null
+++ b/portal-BE/src/main/java/org/onap/portal/controller/WebAnalyticsExtAppController.java
@@ -0,0 +1,256 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ============LICENSE_END============================================
+ *
+ *
+ */
+
+package org.onap.portal.controller;
+
+import io.swagger.annotations.ApiOperation;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+import javax.servlet.http.HttpServletRequest;
+import lombok.NoArgsConstructor;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.StringUtils;
+import org.onap.portal.domain.db.fn.FnApp;
+import org.onap.portal.domain.dto.ecomp.EcompAuditLog;
+import org.onap.portal.domain.dto.transport.Analytics;
+import org.onap.portal.logging.aop.EPAuditLog;
+import org.onap.portal.logging.aop.EPEELFLoggerAdvice;
+import org.onap.portal.logging.logic.EPLogUtil;
+import org.onap.portal.service.WidgetMService;
+import org.onap.portal.service.fn.old.AppsCacheService;
+import org.onap.portal.utils.EPCommonSystemProperties;
+import org.onap.portal.utils.EcompPortalUtils;
+import org.onap.portal.utils.PortalConstants;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.onap.portalsdk.core.onboarding.crossapi.PortalAPIResponse;
+import org.onap.portalsdk.core.util.SystemProperties;
+import org.slf4j.MDC;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.EnableAspectJAutoProxy;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.util.concurrent.FailureCallback;
+import org.springframework.util.concurrent.ListenableFuture;
+import org.springframework.util.concurrent.SuccessCallback;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.client.AsyncRestTemplate;
+
+@RestController
+@RequestMapping(PortalConstants.REST_AUX_API)
+@Configuration
+@EnableAspectJAutoProxy
+@EPAuditLog
+@NoArgsConstructor
+public class WebAnalyticsExtAppController {
+
+ private static final String MACHINE_LEARNING_SERVICE_CTX = "/ml_api";
+ private static final String REGISTER_ACTION = MACHINE_LEARNING_SERVICE_CTX + "/" + "registerAction";
+ private static final String CONSUL_ML_SERVICE_ID = "machine-learning";
+ private static final String APP_KEY = "uebkey";
+ private final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(WebAnalyticsExtAppController.class);
+ private final AsyncRestTemplate restTemplate = new AsyncRestTemplate();
+ private final SuccessCallback<ResponseEntity<String>> successCallback = arg -> logger.info(EELFLoggerDelegate.debugLogger, arg.getBody());
+ private final FailureCallback failureCallback = arg -> logger.error(EELFLoggerDelegate.errorLogger, "storeAuxAnalytics failed", arg);
+
+ private WidgetMService widgetMService;
+ private AppsCacheService appCacheService;
+
+ @Autowired
+ public WebAnalyticsExtAppController(final WidgetMService widgetMService,
+ final AppsCacheService appCacheService) {
+ this.widgetMService = widgetMService;
+ this.appCacheService = appCacheService;
+ }
+
+ /**
+ * Answers requests from partner applications for a file that is expected to
+ * contain javascript to support web analytics.
+ *
+ * @param request
+ * HttpServletRequest
+ * @return String
+ */
+ @ApiOperation(value = "Gets javascript with functions that support gathering and reporting web analytics.", response = String.class)
+ @RequestMapping(value = { "/analytics" }, method = RequestMethod.GET, produces = "application/javascript")
+ public String getAnalyticsScript(HttpServletRequest request) {
+ String responseText = "";
+ FnApp app = null;
+ String version = "";
+ try {
+ app = getApp(request);
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger,
+ " Error retrieving Application to capture app name for analytics; Proceeding with empty app name");
+ }
+ if (app != null) {
+ String restEndPoint = app.getAppRestEndpoint();
+ if(restEndPoint.indexOf("/api")!=-1) {
+ version = restEndPoint.substring(restEndPoint.indexOf("api"));
+ }
+ }
+ String endPoint = "/storeAnalytics";
+ if(StringUtils.isNotBlank(version)) {
+ endPoint = version + "/storeAnalytics";
+ }
+
+ final String fileName = "analytics.txt";
+ try (InputStream analyticsFileStream = this.getClass().getClassLoader().getResourceAsStream(fileName)) {
+ responseText = IOUtils.toString(Objects.requireNonNull(analyticsFileStream), StandardCharsets.UTF_8.name());
+ } catch (IOException e) {
+ logger.error(EELFLoggerDelegate.errorLogger, "Error reading contents of the file " + fileName, e);
+ }
+
+ String feURLContext = SystemProperties.getProperty("frontend_url");
+ String feURL = feURLContext.substring(0, feURLContext.lastIndexOf('/'));
+ responseText = responseText.replace("PORTAL_ENV_URL", feURL);
+ responseText = responseText.replace("$END_POINT", endPoint);
+ return responseText;
+ }
+
+ /**
+ * Accepts data from partner applications with web analytics data.
+ *
+ * @param request
+ * HttpServletRequest
+ * @param analyticsMap
+ * Analytics
+ * @return PortalAPIResponse
+ */
+ @RequestMapping(value = { "/storeAnalytics" }, method = RequestMethod.POST, produces = "application/json")
+ @ResponseBody
+ @ApiOperation(value = "Accepts data from partner applications with web analytics data.", response = PortalAPIResponse.class)
+ public PortalAPIResponse storeAnalyticsScript(HttpServletRequest request, @RequestBody Analytics analyticsMap) {
+ try {
+ MDC.put(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP, EPEELFLoggerAdvice.getCurrentDateTimeUTC());
+ String appName = "";
+ try {
+ appName = getAppName(request, appName);
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger,
+ " Error retrieving Application to capture app name for analytics; Proceeding with empty app name");
+ }
+
+ try {
+ storeAuxAnalytics(analyticsMap, appName);
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger,
+ " Error retrieving Application to capture app name for analytics; Proceeding with empty app name");
+ }
+
+ MDC.put(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP, EPEELFLoggerAdvice.getCurrentDateTimeUTC());
+
+ EcompPortalUtils.calculateDateTimeDifferenceForLog(
+ MDC.get(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP),
+ MDC.get(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP));
+ logger.info(EELFLoggerDelegate.auditLogger,
+ EPLogUtil.formatStoreAnalyticsAuditLogMessage(analyticsMap.getUserid(), appName,
+ "WebAnalyticsExtAppController.postWebAnalyticsData",
+ EcompAuditLog.CD_ACTIVITY_STORE_ANALYTICS, analyticsMap.getAction(), analyticsMap.getPage(),
+ analyticsMap.getFunction(), analyticsMap.getType()));
+
+ MDC.remove(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP);
+ MDC.remove(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP);
+ MDC.remove(SystemProperties.MDC_TIMER);
+
+ return new PortalAPIResponse(true, "success");
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger, "storeAnalytics failed", e);
+ return new PortalAPIResponse(true, "error");
+ }
+ }
+
+ private String getAppName(HttpServletRequest request, String appName) {
+
+ FnApp appRecord = getApp(request);
+ if (appRecord != null) {
+ appName = appRecord.getAppName();
+ }
+ return appName;
+ }
+
+ private FnApp getApp(HttpServletRequest request) {
+ String appKeyValue = request.getHeader(APP_KEY);
+ FnApp appRecord = null;
+ if (appKeyValue == null || appKeyValue.equals("")) {
+ logger.error(EELFLoggerDelegate.errorLogger, " App Key unavailable; Proceeding with null app name");
+ } else {
+ appRecord = appCacheService.getAppFromUeb(appKeyValue);
+ }
+ return appRecord;
+ }
+
+ private void storeAuxAnalytics(Analytics analyticsMap, String appName) {
+ logger.info(EELFLoggerDelegate.debugLogger,
+ " Registering an action for recommendation: AppName/Function/UserId " + appName + "/"
+ + analyticsMap.getFunction() + "/" + analyticsMap.getUserid());
+
+ Map<String, String> requestMapping = new HashMap<>();
+ requestMapping.put("id", analyticsMap.getUserid());
+ requestMapping.put("action", appName + "|" + analyticsMap.getFunction());
+
+ HttpHeaders headers = new HttpHeaders();
+ headers.setContentType(MediaType.APPLICATION_JSON);
+
+ // set your entity to send
+ HttpEntity<Map<String, String>> entity = new HttpEntity<>(requestMapping, headers);
+
+ // send it!
+ ListenableFuture<ResponseEntity<String>> out = restTemplate.exchange(
+ EcompPortalUtils.widgetMsProtocol() + "://"
+ + widgetMService.getServiceLocation(CONSUL_ML_SERVICE_ID,
+ SystemProperties.getProperty("microservices.m-learn.local.port"))
+ + REGISTER_ACTION,
+ HttpMethod.POST, entity, String.class);
+ out.addCallback(successCallback, failureCallback);
+ }
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/controller/WebAnalyticsExtAppVersionController.java b/portal-BE/src/main/java/org/onap/portal/controller/WebAnalyticsExtAppVersionController.java
new file mode 100644
index 00000000..87be5439
--- /dev/null
+++ b/portal-BE/src/main/java/org/onap/portal/controller/WebAnalyticsExtAppVersionController.java
@@ -0,0 +1,77 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ============LICENSE_END============================================
+ *
+ *
+ */
+
+package org.onap.portal.controller;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.onap.portal.annotation.ApiVersion;
+import org.onap.portal.domain.dto.transport.Analytics;
+import org.onap.portal.logging.aop.EPAuditLog;
+import org.onap.portalsdk.core.onboarding.crossapi.PortalAPIResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.EnableAspectJAutoProxy;
+
+@Configuration
+@EnableAspectJAutoProxy
+@EPAuditLog
+@ApiVersion
+public class WebAnalyticsExtAppVersionController {
+
+ private final WebAnalyticsExtAppController webAnalyticsExtAppController;
+
+ @Autowired
+ public WebAnalyticsExtAppVersionController(final
+ WebAnalyticsExtAppController webAnalyticsExtAppController) {
+ this.webAnalyticsExtAppController = webAnalyticsExtAppController;
+ }
+
+ @ApiVersion(max = "v3", service = "/v3/analytics", min = 0,method = "GET")
+ public String getAnalyticsScript(HttpServletRequest request, HttpServletResponse response) throws Exception {
+ return webAnalyticsExtAppController.getAnalyticsScript(request);
+ }
+
+ @ApiVersion(max = "v3", service = "/v3/storeAnalytics", min = 0,method = "POST")
+ public PortalAPIResponse storeAnalyticsScript(HttpServletRequest request, HttpServletResponse response, Analytics analyticsMap) throws Exception {
+ return webAnalyticsExtAppController.storeAnalyticsScript(request, analyticsMap);
+ }
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/controller/WidgetMSController.java b/portal-BE/src/main/java/org/onap/portal/controller/WidgetMSController.java
new file mode 100644
index 00000000..b9434820
--- /dev/null
+++ b/portal-BE/src/main/java/org/onap/portal/controller/WidgetMSController.java
@@ -0,0 +1,84 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ============LICENSE_END============================================
+ *
+ *
+ */
+
+package org.onap.portal.controller;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.onap.portal.domain.dto.ecomp.PortalRestResponse;
+import org.onap.portal.domain.dto.ecomp.PortalRestStatusEnum;
+import org.onap.portal.service.WidgetMService;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/portalApi/consul")
+public class WidgetMSController {
+ private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(WidgetMSController.class);
+
+ private final WidgetMService widgetMService;
+
+ @Autowired
+ public WidgetMSController(final WidgetMService widgetMService) {
+ this.widgetMService = widgetMService;
+ }
+
+ // Get location of a healthy node running our service
+ @RequestMapping(value = { "/service/{service}" }, method = RequestMethod.GET, produces = "application/json")
+ public PortalRestResponse<String> getServiceLocation(HttpServletRequest request, HttpServletResponse response,
+ @PathVariable("service") String service) {
+
+ try {
+ return new PortalRestResponse<>(PortalRestStatusEnum.OK, "Success!",
+ widgetMService.getServiceLocation(service, null));
+ }
+ catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger, "Couldn't get the service location");
+ return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, "Error!",
+ "Couldn't get the service location");
+
+ }
+ }
+
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/controller/WidgetsCatalogController.java b/portal-BE/src/main/java/org/onap/portal/controller/WidgetsCatalogController.java
index decf625d..07695aeb 100644
--- a/portal-BE/src/main/java/org/onap/portal/controller/WidgetsCatalogController.java
+++ b/portal-BE/src/main/java/org/onap/portal/controller/WidgetsCatalogController.java
@@ -49,12 +49,12 @@ import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
+import org.onap.portal.domain.db.ep.EpWidgetCatalogParameter;
import org.onap.portal.domain.db.fn.FnUser;
import org.onap.portal.domain.dto.PortalRestResponse;
import org.onap.portal.domain.dto.PortalRestStatusEnum;
import org.onap.portal.domain.dto.ecomp.MicroserviceParameter;
import org.onap.portal.domain.dto.ecomp.WidgetCatalog;
-import org.onap.portal.domain.dto.ecomp.WidgetCatalogParameter;
import org.onap.portal.domain.dto.ecomp.WidgetParameterResult;
import org.onap.portal.domain.dto.ecomp.WidgetServiceHeaders;
import org.onap.portal.logging.aop.EPAuditLog;
@@ -301,7 +301,8 @@ public class WidgetsCatalogController {
}
@GetMapping(value = {"/portalApi/microservices/parameters/{widgetId}"})
- public PortalRestResponse<List<WidgetParameterResult>> getWidgetParameterResult(Principal principal, HttpServletRequest request,
+ public PortalRestResponse<List<WidgetParameterResult>> getWidgetParameterResult(Principal principal,
+ HttpServletRequest request,
@PathVariable("widgetId") long widgetId) throws Exception {
FnUser user = fnUserService.loadUserByUsername(principal.getName());
@@ -317,14 +318,15 @@ public class WidgetsCatalogController {
return new PortalRestResponse<>(PortalRestStatusEnum.WARN,
"No service parameters for this widget", list);
} else {
- List<MicroserviceParameter> defaultParam = epMicroserviceParameterService.getParametersById(serviceId);
+ List<MicroserviceParameter> defaultParam = epMicroserviceParameterService
+ .getParametersById(serviceId);
for (MicroserviceParameter param : defaultParam) {
WidgetParameterResult userResult = new WidgetParameterResult();
userResult.setParamId(param.getId());
userResult.setDefaultValue(param.getPara_value());
userResult.setParamKey(param.getPara_key());
- WidgetCatalogParameter userValue = epWidgetCatalogParameterService
- .getUserParamById(widgetId, user.getId(),
+ EpWidgetCatalogParameter userValue = epWidgetCatalogParameterService
+ .getUserParamById(widgetId, user.getUserId(),
param.getId());
if (userValue == null) {
userResult.setUserValue(param.getPara_value());
@@ -334,17 +336,23 @@ public class WidgetsCatalogController {
list.add(userResult);
}
}
- return new PortalRestResponse<List<WidgetParameterResult>>(PortalRestStatusEnum.OK, "SUCCESS", list);
+ return new PortalRestResponse<>(PortalRestStatusEnum.OK, "SUCCESS", list);
}
@GetMapping(value = {"/portalApi/microservices/services/{paramId}"})
- public List<WidgetCatalogParameter> getUserParameterById(@PathVariable("paramId") long paramId) {
+ public List<EpWidgetCatalogParameter> getUserParameterById(@PathVariable("paramId") long paramId) {
return epWidgetCatalogParameterService.getUserParameterById(paramId);
}
@DeleteMapping(value = {"/portalApi/microservices/services/{paramId}"})
- public void deleteUserParameterById(@PathVariable("paramId") long paramId) {
- epWidgetCatalogParameterService.deleteUserParameterById(paramId);
+ public boolean deleteUserParameterById(@PathVariable("paramId") long paramId) {
+ try {
+ epWidgetCatalogParameterService.deleteUserParameterById(paramId);
+ return true;
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage());
+ return false;
+ }
}
@GetMapping(value = {"/portalApi/microservices/download/{widgetId}"})
@@ -395,29 +403,34 @@ public class WidgetsCatalogController {
}
@PostMapping(value = {"/portalApi/microservices/parameters"})
- public PortalRestResponse<String> saveWidgetParameter(Principal principal, HttpServletRequest request,
- @RequestBody WidgetCatalogParameter widgetParameters) {
+ public PortalRestResponse<String> saveWidgetParameter(Principal principal,
+ @RequestBody EpWidgetCatalogParameter widgetParameters) {
FnUser user = fnUserService.loadUserByUsername(principal.getName());
- widgetParameters.setUserId(user.getId());
+ widgetParameters.setUserId(user);
try {
- WidgetCatalogParameter oldParam = epWidgetCatalogParameterService
- .getUserParamById(widgetParameters.getWidgetId(),
- widgetParameters.getUserId(), widgetParameters.getParamId());
+ EpWidgetCatalogParameter oldParam = epWidgetCatalogParameterService
+ .getUserParamById(widgetParameters.getWidgetId().getWidgetId(),
+ widgetParameters.getUserId().getUserId(), widgetParameters.getParamId().getId());
if (oldParam != null) {
- widgetParameters.setId(oldParam.getId());
+ oldParam.setParamId(widgetParameters.getParamId());
+ oldParam.setUserId(widgetParameters.getUserId());
+ oldParam.setUserValue(widgetParameters.getUserValue());
+ oldParam.setWidgetId(widgetParameters.getWidgetId());
+ epWidgetCatalogParameterService.saveUserParameter(oldParam);
+ } else {
+ epWidgetCatalogParameterService.saveUserParameter(widgetParameters);
}
- epWidgetCatalogParameterService.saveUserParameter(widgetParameters);
} catch (Exception e) {
logger.error(EELFLoggerDelegate.errorLogger, "saveWidgetParameter failed", e);
- return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "FAILURE", e.getMessage());
+ return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, "FAILURE", e.getMessage());
}
return new PortalRestResponse<>(PortalRestStatusEnum.OK, "SUCCESS", "");
}
@GetMapping(value = {"/portalApi/microservices/uploadFlag"})
public String getUploadFlag() {
- String uplaodFlag = "";
+ String uplaodFlag;
try {
uplaodFlag = SystemProperties.getProperty(EPCommonSystemProperties.MS_WIDGET_UPLOAD_FLAG);
} catch (Exception e) {
diff --git a/portal-BE/src/main/java/org/onap/portal/controller/WidgetsCatalogMarkupController.java b/portal-BE/src/main/java/org/onap/portal/controller/WidgetsCatalogMarkupController.java
index 06dd62da..e63de2e8 100644
--- a/portal-BE/src/main/java/org/onap/portal/controller/WidgetsCatalogMarkupController.java
+++ b/portal-BE/src/main/java/org/onap/portal/controller/WidgetsCatalogMarkupController.java
@@ -77,14 +77,8 @@ public class WidgetsCatalogMarkupController {
static {
// for localhost testing only
- javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(new javax.net.ssl.HostnameVerifier() {
-
- public boolean verify(String hostname, javax.net.ssl.SSLSession sslSession) {
- if (hostname.equals("localhost")) {
- return true;
- }
- return false;
- }
+ javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier((hostname, sslSession) -> {
+ return hostname.equals("localhost");
});
}
diff --git a/portal-BE/src/main/java/org/onap/portal/controller/WidgetsController.java b/portal-BE/src/main/java/org/onap/portal/controller/WidgetsController.java
index c2915275..556c7ef3 100644
--- a/portal-BE/src/main/java/org/onap/portal/controller/WidgetsController.java
+++ b/portal-BE/src/main/java/org/onap/portal/controller/WidgetsController.java
@@ -43,7 +43,6 @@ package org.onap.portal.controller;
import java.io.IOException;
import java.security.Principal;
import java.util.List;
-import java.util.Optional;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.onap.portal.domain.db.fn.FnUser;
@@ -59,9 +58,9 @@ import org.onap.portal.utils.EcompPortalUtils;
import org.onap.portal.validation.DataValidator;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.http.MediaType;
+import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@@ -99,7 +98,6 @@ public class WidgetsController {
HttpServletResponse response) {
FnUser user = fnUserService.loadUserByUsername(principal.getName());
List<OnboardingWidget> onboardingWidgets = null;
-
if (user.getGuest()) {
EcompPortalUtils.setBadPermissions(user, response, "getOnboardingWidgets");
} else {
@@ -119,60 +117,50 @@ public class WidgetsController {
}
@PutMapping(value = {"/portalApi/widgets/{widgetId}"}, produces = MediaType.APPLICATION_JSON_VALUE)
- public FieldsValidator putOnboardingWidget(Principal principal, HttpServletRequest request,
- @PathVariable("widgetId") Long widgetId,
+ @PreAuthorize("hasRole('System_Administrator')")
+ public FieldsValidator putOnboardingWidget(Principal principal, @PathVariable("widgetId") Long widgetId,
@RequestBody OnboardingWidget onboardingWidget, HttpServletResponse response) {
FnUser user = fnUserService.loadUserByUsername(principal.getName());
FieldsValidator fieldsValidator = null;
- if (onboardingWidget != null) {
- if (!dataValidator.isValid(onboardingWidget)) {
- fieldsValidator = new FieldsValidator();
- fieldsValidator.setHttpStatusCode((long) HttpServletResponse.SC_NOT_ACCEPTABLE);
- return fieldsValidator;
- }
- }
- if (userHasPermissions(user, response, "putOnboardingWidget")) {
- assert onboardingWidget != null;
- onboardingWidget.setId(widgetId);
- onboardingWidget.normalize();
- fieldsValidator = widgetService.setOnboardingWidget(user, onboardingWidget);
+ assert onboardingWidget != null;
+ onboardingWidget.setId(widgetId);
+ onboardingWidget.normalize();
+ try {
+ fieldsValidator = widgetService.setOnboardingWidget(user.getUserId(), onboardingWidget);
response.setStatus(fieldsValidator.getHttpStatusCode().intValue());
+ } catch (IllegalArgumentException e) {
+ fieldsValidator = new FieldsValidator();
+ fieldsValidator.setHttpStatusCode((long) HttpServletResponse.SC_NOT_ACCEPTABLE);
+ fieldsValidator.addProblematicFieldName(e.getMessage());
+ return fieldsValidator;
}
+
EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/widgets/" + widgetId, "GET result =",
response.getStatus());
return fieldsValidator;
}
- private boolean userHasPermissions(FnUser user, HttpServletResponse response, String invocator) {
- if (!adminRolesService.isSuperAdmin(user) && !adminRolesService.isAccountAdmin(user)) {
- EcompPortalUtils.setBadPermissions(user, response, invocator);
- return false;
- }
- return true;
- }
-
@PostMapping(value = {"/portalApi/widgets"}, produces = MediaType.APPLICATION_JSON_VALUE)
- public FieldsValidator postOnboardingWidget(Principal principal, HttpServletRequest request,
- @RequestBody OnboardingWidget onboardingWidget, HttpServletResponse response) {
+ @PreAuthorize("hasRole('System_Administrator') and hasRole('Account_Administrator')")
+ public FieldsValidator postOnboardingWidget(Principal principal, HttpServletResponse response,
+ @RequestBody OnboardingWidget onboardingWidget) {
FnUser user = fnUserService.loadUserByUsername(principal.getName());
- FieldsValidator fieldsValidator = null;
+ FieldsValidator fieldsValidator;
- if (onboardingWidget != null) {
- if (!dataValidator.isValid(onboardingWidget)) {
- fieldsValidator = new FieldsValidator();
- fieldsValidator.setHttpStatusCode((long) HttpServletResponse.SC_NOT_ACCEPTABLE);
- return fieldsValidator;
- }
- }
+ onboardingWidget.setId(null);
+ onboardingWidget.normalize();
- if (userHasPermissions(user, response, "postOnboardingWidget")) {
- onboardingWidget.setId(null);
- onboardingWidget.normalize();
- fieldsValidator = widgetService.setOnboardingWidget(user, onboardingWidget);
- response.setStatus(fieldsValidator.getHttpStatusCode().intValue());
+ try {
+ fieldsValidator = widgetService.setOnboardingWidget(user.getUserId(), onboardingWidget);
+ } catch (IllegalArgumentException e) {
+ fieldsValidator = new FieldsValidator();
+ fieldsValidator.setHttpStatusCode((long) HttpServletResponse.SC_NOT_ACCEPTABLE);
+ fieldsValidator.addProblematicFieldName(e.getMessage());
+ return fieldsValidator;
}
+ response.setStatus(fieldsValidator.getHttpStatusCode().intValue());
EcompPortalUtils
.logAndSerializeObject(logger, "/portalApi/widgets", "POST result =", response.getStatus());
@@ -180,15 +168,14 @@ public class WidgetsController {
}
@DeleteMapping(value = {"/portalApi/widgets/{widgetId}"}, produces = MediaType.APPLICATION_JSON_VALUE)
- public FieldsValidator deleteOnboardingWidget(Principal principal, HttpServletRequest request,
- @PathVariable("widgetId") Long widgetId, HttpServletResponse response) {
+ @PreAuthorize("hasRole('System_Administrator') and hasRole('Account_Administrator')")
+ public FieldsValidator deleteOnboardingWidget(Principal principal, HttpServletResponse response,
+ @PathVariable("widgetId") Long widgetId) {
FnUser user = fnUserService.loadUserByUsername(principal.getName());
- FieldsValidator fieldsValidator = null;
+ FieldsValidator fieldsValidator;
- if (userHasPermissions(user, response, "deleteOnboardingWidget")) {
- fieldsValidator = widgetService.deleteOnboardingWidget(user, widgetId);
- response.setStatus(fieldsValidator.getHttpStatusCode().intValue());
- }
+ fieldsValidator = widgetService.deleteOnboardingWidget(user, widgetId);
+ response.setStatus(fieldsValidator.getHttpStatusCode().intValue());
EcompPortalUtils.logAndSerializeObject(logger, "/portalApi/widgets/" + widgetId, "DELETE result =",
response.getStatus());
@@ -196,27 +183,21 @@ public class WidgetsController {
}
@PutMapping(value = {"portalApi/widgetCatalogSelection"}, produces = MediaType.APPLICATION_JSON_VALUE)
- public FieldsValidator putWidgetCatalogSelection(Principal principal, HttpServletRequest request,
+ public FieldsValidator putWidgetCatalogSelection(Principal principal,
@RequestBody WidgetCatalogPersonalization persRequest, HttpServletResponse response) throws IOException {
FieldsValidator result = new FieldsValidator();
FnUser user = fnUserService.loadUserByUsername(principal.getName());
- if (persRequest != null) {
- if (!dataValidator.isValid(persRequest)) {
- result.setHttpStatusCode((long) HttpServletResponse.SC_NOT_ACCEPTABLE);
- return result;
- }
- }
try {
- if (persRequest.getWidgetId() == null || user == null) {
- EcompPortalUtils.setBadPermissions(user, response, "putWidgetCatalogSelection");
- } else {
- persUserWidgetService
- .setPersUserAppValue(user, persRequest.getWidgetId(), persRequest.getSelect());
- }
+ assert persRequest != null;
+ persUserWidgetService
+ .setPersUserAppValue(user, persRequest);
+ } catch (IllegalArgumentException iae) {
+ logger.error(EELFLoggerDelegate.errorLogger, "Failed in putAppCatalogSelection", iae);
+ response.sendError(HttpServletResponse.SC_NOT_ACCEPTABLE, iae.getMessage());
} catch (Exception e) {
logger.error(EELFLoggerDelegate.errorLogger, "Failed in putAppCatalogSelection", e);
- response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.toString());
+ response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
}
result.setHttpStatusCode((long) HttpServletResponse.SC_OK);
return result;
diff --git a/portal-BE/src/main/java/org/onap/portal/dao/ep/EpMicroserviceParameterDao.java b/portal-BE/src/main/java/org/onap/portal/dao/ep/EpMicroserviceParameterDao.java
index 4bcca7ef..add897c9 100644
--- a/portal-BE/src/main/java/org/onap/portal/dao/ep/EpMicroserviceParameterDao.java
+++ b/portal-BE/src/main/java/org/onap/portal/dao/ep/EpMicroserviceParameterDao.java
@@ -55,7 +55,5 @@ public interface EpMicroserviceParameterDao extends JpaRepository<EpMicroservice
@Query
void deleteByServiceId(@Param("SERVICEID") Long userId);
@Query
- void deleteMicroserviceParameterById(@Param("PARAMID") Long userId);
- @Query
List<EpMicroserviceParameter> getParametersById(@Param("SERVICEID") long serviceId);
}
diff --git a/portal-BE/src/main/java/org/onap/portal/dao/ep/EpWidgetCatalogParameterDao.java b/portal-BE/src/main/java/org/onap/portal/dao/ep/EpWidgetCatalogParameterDao.java
index 04c12324..c5ec1248 100644
--- a/portal-BE/src/main/java/org/onap/portal/dao/ep/EpWidgetCatalogParameterDao.java
+++ b/portal-BE/src/main/java/org/onap/portal/dao/ep/EpWidgetCatalogParameterDao.java
@@ -4,6 +4,7 @@ import java.util.List;
import java.util.Optional;
import org.onap.portal.domain.db.ep.EpWidgetCatalogParameter;
import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
@@ -17,6 +18,7 @@ public interface EpWidgetCatalogParameterDao extends JpaRepository<EpWidgetCatal
Optional<List<EpWidgetCatalogParameter>> retrieveByParamId(@Param("PARAMID") Long paramId);
@Query
+ @Modifying
void deleteWidgetCatalogParameter(@Param("PARAMID") Long paramId);
@Query
diff --git a/portal-BE/src/main/java/org/onap/portal/dao/fn/FnRoleDao.java b/portal-BE/src/main/java/org/onap/portal/dao/fn/FnRoleDao.java
new file mode 100644
index 00000000..66f4758c
--- /dev/null
+++ b/portal-BE/src/main/java/org/onap/portal/dao/fn/FnRoleDao.java
@@ -0,0 +1,57 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ============LICENSE_END============================================
+ *
+ *
+ */
+
+package org.onap.portal.dao.fn;
+
+import java.util.List;
+import org.onap.portal.domain.db.fn.FnRole;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+
+@Repository
+@Transactional
+public interface FnRoleDao extends JpaRepository<FnRole, Long> {
+
+ @Query
+ List<FnRole> retrieveAppRoleByAppRoleIdAndByAppId(final @Param("appId") Long appId, final @Param("appRoleId") Long appRoleId);
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/dao/fn/FnUserRoleDao.java b/portal-BE/src/main/java/org/onap/portal/dao/fn/FnUserRoleDao.java
new file mode 100644
index 00000000..9c0a6fef
--- /dev/null
+++ b/portal-BE/src/main/java/org/onap/portal/dao/fn/FnUserRoleDao.java
@@ -0,0 +1,65 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ============LICENSE_END============================================
+ *
+ *
+ */
+
+package org.onap.portal.dao.fn;
+
+import java.util.List;
+import java.util.Optional;
+import org.onap.portal.domain.db.fn.FnUserRole;
+import org.onap.portal.domain.dto.ecomp.UserRole;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+
+@Repository
+@Transactional
+public interface FnUserRoleDao extends JpaRepository<FnUserRole, Long> {
+
+ @Query
+ Optional<List<FnUserRole>> getAdminUserRoles(final @Param("userId") Long userId, final @Param("roleId") Long roleId, final @Param("appId") Long appId);
+
+ @Query
+ List<UserRole> isSuperAdmin(final @Param("orgUserId") String orgUserId, final @Param("roleId") Long roleId, final @Param("appId") Long appId);
+
+ @Query
+ List<FnUserRole> getUserRolesForRoleIdAndAppId(final @Param("roleId") Long roleId, final @Param("appId") Long appId);
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/dao/fn/FnWidgetDao.java b/portal-BE/src/main/java/org/onap/portal/dao/fn/FnWidgetDao.java
index a47a1a0d..9c3e7a1f 100644
--- a/portal-BE/src/main/java/org/onap/portal/dao/fn/FnWidgetDao.java
+++ b/portal-BE/src/main/java/org/onap/portal/dao/fn/FnWidgetDao.java
@@ -40,8 +40,12 @@
package org.onap.portal.dao.fn;
+import java.util.List;
+import java.util.Optional;
import org.onap.portal.domain.db.fn.FnWidget;
import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
@@ -49,4 +53,6 @@ import org.springframework.transaction.annotation.Transactional;
@Transactional
public interface FnWidgetDao extends JpaRepository<FnWidget, Long> {
+ @Query
+ Optional<List<FnWidget>> getForUrlNameAndAppId(final @Param("URL") String url, final @Param("NAME") String name, final @Param("APPID") Long appId);
}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpMicroserviceParameter.java b/portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpMicroserviceParameter.java
index 554dd7b5..36c073ac 100644
--- a/portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpMicroserviceParameter.java
+++ b/portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpMicroserviceParameter.java
@@ -59,6 +59,7 @@ import javax.persistence.Table;
import javax.validation.constraints.Digits;
import javax.validation.constraints.Size;
import lombok.AllArgsConstructor;
+import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@@ -82,11 +83,7 @@ CREATE TABLE `ep_microservice_parameter` (
query = "DELETE FROM EpMicroserviceParameter WHERE service_id =:SERVICEID"),
@NamedQuery(
name = "EpMicroserviceParameter.getParametersById",
- query = "FROM EpMicroserviceParameter WHERE service_id =:SERVICEID"),
- @NamedQuery(
- name = "EpMicroserviceParameter.deleteMicroserviceParameterById",
- query = "DELETE FROM EpMicroserviceParameter WHERE id =:PARAMID"
- )
+ query = "FROM EpMicroserviceParameter WHERE service_id =:SERVICEID")
})
@Table(name = "ep_microservice_parameter", indexes = {
@@ -94,13 +91,14 @@ CREATE TABLE `ep_microservice_parameter` (
})
@NoArgsConstructor
@AllArgsConstructor
+@Builder
@Getter
@Setter
@Entity
public class EpMicroserviceParameter implements Serializable {
@Id
- @GeneratedValue(strategy = GenerationType.AUTO)
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", length = 11, nullable = false)
@Digits(integer = 11, fraction = 0)
private Long id;
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpPersUserWidgetSel.java b/portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpPersUserWidgetSel.java
index 9cee72a3..4b2785f1 100644
--- a/portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpPersUserWidgetSel.java
+++ b/portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpPersUserWidgetSel.java
@@ -82,7 +82,7 @@ CREATE TABLE `ep_pers_user_widget_sel` (
@NamedQueries({
@NamedQuery(
name = "EpPersUserWidgetSel.getEpPersUserWidgetSelForUserIdAndWidgetId",
- query = "FROM EpPersUserWidgetSel WHERE userId = :USERID and widgetId = :WIDGETID")
+ query = "FROM EpPersUserWidgetSel WHERE userId.userId = :USERID and widgetId.widgetId = :WIDGETID")
})
@Table(name = "ep_pers_user_widget_sel", uniqueConstraints = {
@UniqueConstraint(columnNames = {"user_id", "widget_id"})
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpWidgetCatalog.java b/portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpWidgetCatalog.java
index a19af285..061aafc4 100644
--- a/portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpWidgetCatalog.java
+++ b/portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpWidgetCatalog.java
@@ -60,6 +60,7 @@ import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import lombok.AllArgsConstructor;
+import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@@ -83,11 +84,11 @@ CREATE TABLE `ep_widget_catalog` (
@Getter
@Setter
@Entity
+@Builder
public class EpWidgetCatalog implements Serializable {
@Id
- @GeneratedValue(strategy = GenerationType.AUTO)
- @Column(name = "widget_id", length = 11, nullable = false)
- @Digits(integer = 11, fraction = 0)
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "widget_id", nullable = false)
private Long widgetId;
@Column(name = "wdg_name", length = 100, columnDefinition = "varchar(100) default '?'", nullable = false)
@Size(max = 100)
@@ -106,12 +107,9 @@ public class EpWidgetCatalog implements Serializable {
@NotNull
@SafeHtml
private String wdgFileLoc;
- @Column(name = "all_user_flag", length = 1, columnDefinition = "char(1) not null default 'N'", nullable = false)
- @Pattern(regexp = "[YNyn]")
- @Size(max = 1)
- @SafeHtml
+ @Column(name = "all_user_flag", length = 1, columnDefinition = "boolean default '0'", nullable = false)
@NotNull
- private String allUserFlag;
+ private Boolean allUserFlag;
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinTable(
name = "ep_widget_microservice",
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpWidgetCatalogParameter.java b/portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpWidgetCatalogParameter.java
index 2ac07cc3..ec6bb563 100644
--- a/portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpWidgetCatalogParameter.java
+++ b/portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpWidgetCatalogParameter.java
@@ -59,11 +59,13 @@ import javax.validation.constraints.Digits;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import lombok.AllArgsConstructor;
+import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.validator.constraints.SafeHtml;
import org.onap.portal.domain.db.fn.FnUser;
+import org.onap.portal.domain.dto.DomainVo;
/*
CREATE TABLE `ep_widget_catalog_parameter` (
@@ -82,16 +84,17 @@ CREATE TABLE `ep_widget_catalog_parameter` (
)
*/
+
@NamedQueries({
@NamedQuery(
name = "EpWidgetCatalogParameter.retrieveByParamId",
- query = "FROM EpWidgetCatalogParameter WHERE paramId = :PARAMID"),
+ query = "FROM EpWidgetCatalogParameter WHERE paramId.id = :PARAMID"),
@NamedQuery(
name = "EpWidgetCatalogParameter.deleteWidgetCatalogParameter",
- query = "DELETE FROM EpWidgetCatalogParameter WHERE paramId = :PARAMID"),
+ query = "DELETE FROM EpWidgetCatalogParameter WHERE paramId.id = :PARAMID"),
@NamedQuery(
name = "EpWidgetCatalogParameter.getUserParamById",
- query = "FROM EpWidgetCatalogParameter WHERE paramId = :PARAMID and userId = :USERID and widgetId = :WIDGETID"
+ query = "FROM EpWidgetCatalogParameter WHERE paramId.id = :PARAMID and userId.userId = :USERID and widgetId.widgetId = :WIDGETID"
)
})
@@ -100,12 +103,14 @@ CREATE TABLE `ep_widget_catalog_parameter` (
@Index(name = "EP_WIDGET_CATALOG_WIDGET_PARAMETER_FK", columnList = "widget_id"),
@Index(name = "EP_PARAMETER_ID_WIDGET_PARAMETER_FK", columnList = "param_id")
})
-@NoArgsConstructor
-@AllArgsConstructor
+
@Getter
@Setter
@Entity
-public class EpWidgetCatalogParameter implements Serializable {
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class EpWidgetCatalogParameter extends DomainVo implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@@ -122,7 +127,7 @@ public class EpWidgetCatalogParameter implements Serializable {
@NotNull
@Valid
private FnUser userId;
- @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
+ @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
@JoinColumn(name = "param_id", nullable = false)
@NotNull
@Valid
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnApp.java b/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnApp.java
index 399cb55c..bada8e14 100644
--- a/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnApp.java
+++ b/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnApp.java
@@ -171,9 +171,9 @@ public class FnApp extends DomainVo implements Serializable {
@SafeHtml
@NotNull
private String appPassword;
- @Column(name = "open", length = 1, columnDefinition = "char(1) default 'N'")
+ @Column(name = "_open", length = 1, columnDefinition = "char(1) default 'N'")
private Boolean open;
- @Column(name = "ENABLED", length = 1, columnDefinition = "char(1) default 'N'")
+ @Column(name = "_enabled", length = 1, columnDefinition = "char(1) default 'N'")
private Boolean enabled;
@Column(name = "active_yn", length = 1, columnDefinition = "char(1) default 'Y'")
@Pattern(regexp = "[YNyn]")
@@ -181,7 +181,7 @@ public class FnApp extends DomainVo implements Serializable {
@NotNull
@SafeHtml
private String activeYn;
- @Column(name = "thumbnail", columnDefinition = "mediumblob null default null")
+ @Column(name = "_thumbnail", columnDefinition = "mediumblob null default null")
private byte[] thumbnail;
@Column(name = "app_username", length = 50)
@Size(max = 50)
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnLanguage.java b/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnLanguage.java
index 4b9186eb..ad976fc6 100644
--- a/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnLanguage.java
+++ b/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnLanguage.java
@@ -42,6 +42,7 @@ package org.onap.portal.domain.db.fn;
import com.fasterxml.jackson.annotation.JsonInclude;
import java.io.Serializable;
+import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
@@ -79,13 +80,11 @@ CREATE TABLE `fn_language` (
@Setter
@Entity
@JsonInclude()
-@SequenceGenerator(name="seq", initialValue=1000, allocationSize=100000)
public class FnLanguage implements Serializable {
@Id
- @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq")
- @Column(name = "language_id", length = 11, nullable = false, columnDefinition = "int(11) AUTO_INCREMENT")
- @Digits(integer = 11, fraction = 0)
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "language_id", length = 11, nullable = false)
private Long languageId;
@Column(name = "language_name", length = 100, nullable = false)
@Size(max = 100)
@@ -100,10 +99,10 @@ public class FnLanguage implements Serializable {
@OneToMany(
targetEntity = FnUser.class,
mappedBy = "languageId",
- cascade = CascadeType.ALL,
- fetch = FetchType.LAZY
+ cascade = CascadeType.PERSIST,
+ fetch = FetchType.EAGER
)
- private Set<FnUser> fnUsers;
+ private Set<FnUser> fnUsers = new HashSet<>();
@Override
public String toString() {
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnQzSimpleTriggers.java b/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnQzSimpleTriggers.java
index 6f67381f..8bdb1e02 100644
--- a/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnQzSimpleTriggers.java
+++ b/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnQzSimpleTriggers.java
@@ -76,7 +76,6 @@ CREATE TABLE `fn_qz_simple_triggers` (
@Table(name = "fn_qz_simple_triggers")
@NoArgsConstructor
@AllArgsConstructor
-
@Getter
@Setter
@Entity
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnRole.java b/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnRole.java
index 8465ce23..edd843ac 100644
--- a/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnRole.java
+++ b/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnRole.java
@@ -53,10 +53,13 @@ import javax.persistence.Index;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
+import javax.persistence.NamedNativeQueries;
+import javax.persistence.NamedNativeQuery;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
+import javax.persistence.UniqueConstraint;
import javax.validation.constraints.Digits;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
@@ -99,7 +102,7 @@ CREATE TABLE `fn_role` (
query = "FROM FnRole where role_id =:roleId and app_id is null"),
@NamedQuery(
name = "FnRole.retrieveAppRoleByAppRoleIdAndByAppId",
- query = "FROM FnRole where app_role_id =:appRoleId and app_id =:appId"),
+ query = "FROM FnRole where appRoleId =:appRoleId and appId =:appId"),
@NamedQuery(
name = "FnRole.retrieveAppRoleByRoleIdAndAppId",
query = "FROM FnRole where role_id =:roleId and app_id =:appId"),
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnUser.java b/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnUser.java
index ce28d0fd..c5a97195 100644
--- a/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnUser.java
+++ b/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnUser.java
@@ -43,6 +43,7 @@ package org.onap.portal.domain.db.fn;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Collection;
+import java.util.HashSet;
import java.util.Set;
import java.util.stream.Collectors;
import javax.persistence.CascadeType;
@@ -183,13 +184,11 @@ CREATE TABLE `fn_user` (
@NoArgsConstructor
@AllArgsConstructor
@DynamicUpdate
-@SequenceGenerator(name = "seq", initialValue = 1000, allocationSize = 100000)
public class FnUser extends DomainVo implements UserDetails, Serializable {
@Id
- @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq")
- @Column(name = "user_id", length = 11, nullable = false)
- @Digits(integer = 11, fraction = 0)
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "user_id", nullable = false)
private Long userId;
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "org_id")
@@ -343,7 +342,7 @@ public class FnUser extends DomainVo implements UserDetails, Serializable {
@SafeHtml
private String siloStatus;
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
- @JoinColumn(name = "language_id", nullable = false, columnDefinition = "int(11) DEFAULT 1")
+ @JoinColumn(name = "language_id", nullable = false, columnDefinition = "bigint DEFAULT 1")
@NotNull(message = "languageId must not be null")
private FnLanguage languageId;
@Column(name = "is_guest", nullable = false, columnDefinition = "bit DEFAULT 0")
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnUserRole.java b/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnUserRole.java
index 390ef8b4..06320c4c 100644
--- a/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnUserRole.java
+++ b/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnUserRole.java
@@ -43,6 +43,8 @@ package org.onap.portal.domain.db.fn;
import java.io.Serializable;
import javax.persistence.CascadeType;
import javax.persistence.Column;
+import javax.persistence.ColumnResult;
+import javax.persistence.ConstructorResult;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
@@ -53,15 +55,20 @@ import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedNativeQueries;
import javax.persistence.NamedNativeQuery;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
import javax.persistence.OneToOne;
+import javax.persistence.SqlResultSetMapping;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
import javax.validation.Valid;
import javax.validation.constraints.Digits;
import lombok.AllArgsConstructor;
+import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
+import org.onap.portal.domain.dto.ecomp.UserRole;
/*
CREATE TABLE `fn_user_role` (
@@ -82,14 +89,63 @@ CREATE TABLE `fn_user_role` (
@NamedNativeQueries({
@NamedNativeQuery(
name = "FnUserRole.retrieveUserRoleOnUserIdAndRoleIdAndAppId",
- query = "select * from FnUserRole where user_id= :userId"
+ query = "FROM FnUserRole where user_id= :userId"
+ " and role_id= :roleId"
+ " and app_id= :appId"),
@NamedNativeQuery(
name = "FnUserRole.retrieveCachedAppRolesForUser",
- query = "select * from FnUserRole where user_id= :userId"
+ query = "FROM FnUserRole where user_id= :userId"
+ " and user_id= :userId"
- + " and app_id= :appId")
+ + " and app_id= :appId"),
+ @NamedNativeQuery(
+ name = "FnUserRole.isSuperAdmin",
+ query = "SELECT"
+ + " user.USER_ID as userId,"
+ + " user.org_user_id as orgUserId,"
+ + " userrole.ROLE_ID as roleId,"
+ + " userrole.APP_ID as appId"
+ + " FROM"
+ + " fn_user_role userrole"
+ + " INNER JOIN fn_user user ON user.USER_ID = userrole.USER_ID"
+ + " WHERE"
+ + " user.org_user_id = :orgUserId"
+ + " AND userrole.ROLE_ID =:roleId"
+ + " AND userrole.APP_ID =:appId",
+ resultSetMapping = "UserRole",
+ resultClass = UserRole.class
+ )
+})
+
+@SqlResultSetMapping(
+ name = "UserRole",
+ classes = {
+ @ConstructorResult(
+ targetClass = UserRole.class,
+ columns = {
+ @ColumnResult(name = "userId", type = Long.class),
+ @ColumnResult(name = "orgUserId", type = String.class),
+ @ColumnResult(name = "roleId", type = Long.class),
+ @ColumnResult(name = "appId", type = Long.class)
+ }
+ )
+ }
+)
+
+@NamedQueries({
+ @NamedQuery(
+ name = "FnUserRole.getAdminUserRoles",
+ query = "FROM FnUserRole fn "
+ + "WHERE fn.userId.userId = :userId "
+ + "AND fn.roleId.roleId = :roleId "
+ + "AND fn.appId.appId = :appId"),
+ @NamedQuery(
+ name = "FnUserRole.getUserRolesForRoleIdAndAppId",
+ query = "FROM\n"
+ + " FnUserRole userrole\n"
+ + "WHERE\n"
+ + " userrole.roleId.roleId = :roleId\n"
+ + " AND userrole.appId.appId = :appId"
+ )
})
@Table(
@@ -103,7 +159,7 @@ CREATE TABLE `fn_user_role` (
})
@NoArgsConstructor
@AllArgsConstructor
-
+@Builder
@Getter
@Setter
@Entity
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnWidget.java b/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnWidget.java
index 649267bf..f595536f 100644
--- a/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnWidget.java
+++ b/portal-BE/src/main/java/org/onap/portal/domain/db/fn/FnWidget.java
@@ -42,21 +42,36 @@ package org.onap.portal.domain.db.fn;
import javax.persistence.Column;
import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
import javax.persistence.Id;
+import javax.persistence.NamedNativeQueries;
+import javax.persistence.NamedNativeQuery;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
import javax.persistence.Table;
import lombok.AllArgsConstructor;
+import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
-@Table(name = "fn_widget")
-@NoArgsConstructor
-@AllArgsConstructor
+@NamedQueries({
+ @NamedQuery(name = "FnWidget.getForUrlNameAndAppId",
+ query = "FROM FnWidget where url =:URL and name =:NAME and appId =:APPID")
+})
+
@Getter
@Setter
@Entity
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Table(name = "fn_widget")
public class FnWidget {
+
@Id
+ @GeneratedValue(strategy = GenerationType.AUTO)
private Long widgetId;
@Column(name = "WDG_NAME")
private String name;
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/DomainVo.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/DomainVo.java
index a965c62d..230da910 100644
--- a/portal-BE/src/main/java/org/onap/portal/domain/dto/DomainVo.java
+++ b/portal-BE/src/main/java/org/onap/portal/domain/dto/DomainVo.java
@@ -76,7 +76,11 @@ public class DomainVo extends FusionVo implements Serializable, Cloneable, Compa
protected Serializable auditUserId;
protected Set auditTrail = null;
private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(DomainVo.class);
-
+
+ public DomainVo(Long id) {
+ this.id = id;
+ }
+
@Override
public int compareTo(Object obj) {
Long c1 = this.getId();
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserAppCatalogRoles.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserAppCatalogRoles.java
index c5fbd40d..aa57cb83 100644
--- a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserAppCatalogRoles.java
+++ b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserAppCatalogRoles.java
@@ -57,10 +57,16 @@ import org.onap.portal.domain.dto.DomainVo;
public class EPUserAppCatalogRoles extends DomainVo {
private static final long serialVersionUID = -5259869298825093816L;
-
private Long requestedRoleId;
- private String rolename;
+ private String roleName;
private String requestStatus;
private Long appId;
+ public EPUserAppCatalogRoles(Long reqId, Long requestedRoleId, String roleName, String requestStatus, Long appId) {
+ super(reqId);
+ this.requestedRoleId = requestedRoleId;
+ this.roleName = roleName;
+ this.requestStatus = requestStatus;
+ this.appId = appId;
+ }
}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserNotification.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserNotification.java
index 864db8bc..88f2e4f0 100644
--- a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserNotification.java
+++ b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/EPUserNotification.java
@@ -45,7 +45,8 @@ import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
-import org.onap.portal.domain.dto.DomainVo;
+import org.onap.portalsdk.core.domain.support.DomainVo;
+
@Getter
@Setter
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/UserRole.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/UserRole.java
index 75b4b2d7..824ea0a1 100644
--- a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/UserRole.java
+++ b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/UserRole.java
@@ -54,11 +54,18 @@ public class UserRole implements Serializable {
private static final long serialVersionUID = 1L;
- private Long user_Id;
- private Long roleId;
+ private Long userId;
private String orgUserId;
+ private Long roleId;
+ private Long appId;
private String firstName;
private String lastName;
private String roleName;
+ public UserRole(Long userId, String orgUserId, Long roleId, Long appId) {
+ this.userId = userId;
+ this.orgUserId = orgUserId;
+ this.roleId = roleId;
+ this.appId = appId;
+ }
}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/UserRoles.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/UserRoles.java
index 3b435e89..9b7e6a73 100644
--- a/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/UserRoles.java
+++ b/portal-BE/src/main/java/org/onap/portal/domain/dto/ecomp/UserRoles.java
@@ -66,7 +66,7 @@ public class UserRoles implements Serializable {
setOrgUserId(user.getOrgUserId());
setFirstName(user.getFirstName());
setLastName(user.getLastName());
- setGuestSession(user.getUser_Id() == -1);
+ setGuestSession(user.getUserId() == -1);
addRole(user.getRoleName());
}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/transport/EpNotificationItem.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/transport/EpNotificationItem.java
index a3f8af6e..59a577ae 100644
--- a/portal-BE/src/main/java/org/onap/portal/domain/dto/transport/EpNotificationItem.java
+++ b/portal-BE/src/main/java/org/onap/portal/domain/dto/transport/EpNotificationItem.java
@@ -53,7 +53,8 @@ import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.validator.constraints.SafeHtml;
-import org.onap.portal.domain.dto.DomainVo;
+import org.onap.portalsdk.core.domain.support.DomainVo;
+
@Getter
@Setter
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/transport/FieldsValidator.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/transport/FieldsValidator.java
index 1999d236..75f04dfd 100644
--- a/portal-BE/src/main/java/org/onap/portal/domain/dto/transport/FieldsValidator.java
+++ b/portal-BE/src/main/java/org/onap/portal/domain/dto/transport/FieldsValidator.java
@@ -42,6 +42,7 @@ package org.onap.portal.domain.dto.transport;
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
import javax.servlet.http.HttpServletResponse;
import lombok.AllArgsConstructor;
import lombok.Getter;
@@ -71,5 +72,22 @@ public class FieldsValidator {
@AllArgsConstructor
public class FieldName {
public String name;
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof FieldName)) {
+ return false;
+ }
+ FieldName fieldName = (FieldName) o;
+ return Objects.equals(name, fieldName.name);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name);
+ }
}
}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/transport/OnboardingWidget.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/transport/OnboardingWidget.java
index de13bec5..ccc9a785 100644
--- a/portal-BE/src/main/java/org/onap/portal/domain/dto/transport/OnboardingWidget.java
+++ b/portal-BE/src/main/java/org/onap/portal/domain/dto/transport/OnboardingWidget.java
@@ -41,27 +41,39 @@
package org.onap.portal.domain.dto.transport;
import java.io.Serializable;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Positive;
+import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
+import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.SafeHtml;
@Getter
@Setter
+@Builder
@NoArgsConstructor
public class OnboardingWidget implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
- @SafeHtml
+ @SafeHtml(message = "name may have unsafe html content")
private String name;
+ @NotNull(message = "appId can't be null")
+ @Min(message = "appId value must be higher than 1",value = 2)
private Long appId;
- @SafeHtml
+ @SafeHtml(message = "appName may have unsafe html content")
+ @NotBlank(message = "appName can't be blank")
private String appName;
+ @Positive(message = "width must be positive number")
private Integer width;
+ @Positive(message = "height must be positive number")
private Integer height;
- @SafeHtml
+ @SafeHtml(message = "url may have unsafe html content")
+ @NotBlank(message = "url can't be blank")
private String url;
public OnboardingWidget(Long id, String name, Long appId,
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/dto/transport/WidgetCatalogPersonalization.java b/portal-BE/src/main/java/org/onap/portal/domain/dto/transport/WidgetCatalogPersonalization.java
index b9e54bfc..d9053f03 100644
--- a/portal-BE/src/main/java/org/onap/portal/domain/dto/transport/WidgetCatalogPersonalization.java
+++ b/portal-BE/src/main/java/org/onap/portal/domain/dto/transport/WidgetCatalogPersonalization.java
@@ -40,6 +40,7 @@
package org.onap.portal.domain.dto.transport;
+import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
@@ -51,7 +52,9 @@ import lombok.Setter;
@AllArgsConstructor
public class WidgetCatalogPersonalization {
+ @NotNull
private Long widgetId;
+ @NotNull
private Boolean select;
}
diff --git a/portal-BE/src/main/java/org/onap/portal/exception/NotValidDataException.java b/portal-BE/src/main/java/org/onap/portal/exception/NotValidDataException.java
new file mode 100644
index 00000000..7a8aadef
--- /dev/null
+++ b/portal-BE/src/main/java/org/onap/portal/exception/NotValidDataException.java
@@ -0,0 +1,48 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ============LICENSE_END============================================
+ *
+ *
+ */
+
+package org.onap.portal.exception;
+
+public class NotValidDataException extends Exception {
+
+ public NotValidDataException(String exceptionMsg) {
+ super(exceptionMsg);
+ }
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/exception/RoleFunctionException.java b/portal-BE/src/main/java/org/onap/portal/exception/RoleFunctionException.java
index 75ecfa39..8ae396cf 100644
--- a/portal-BE/src/main/java/org/onap/portal/exception/RoleFunctionException.java
+++ b/portal-BE/src/main/java/org/onap/portal/exception/RoleFunctionException.java
@@ -1,8 +1,10 @@
-/*-
+/*
* ============LICENSE_START==========================================
* ONAP Portal
* ===================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
* ===================================================================
*
* Unless otherwise specified, all software contained herein is licensed
@@ -33,7 +35,7 @@
*
* ============LICENSE_END============================================
*
- *
+ *
*/
package org.onap.portal.exception;
diff --git a/portal-BE/src/main/java/org/onap/portal/service/AdminRolesService.java b/portal-BE/src/main/java/org/onap/portal/service/AdminRolesService.java
index c948ece4..c2d88bc1 100644
--- a/portal-BE/src/main/java/org/onap/portal/service/AdminRolesService.java
+++ b/portal-BE/src/main/java/org/onap/portal/service/AdminRolesService.java
@@ -47,15 +47,17 @@ import javax.persistence.EntityManager;
import org.onap.portal.domain.db.fn.FnRole;
import org.onap.portal.domain.db.fn.FnUser;
import org.onap.portal.domain.db.fn.FnUserRole;
-import org.onap.portal.domain.dto.ecomp.UserRole;
import org.onap.portal.logging.format.EPAppMessagesEnum;
import org.onap.portal.logging.logic.EPLogUtil;
+import org.onap.portal.service.fn.FnUserRoleService;
import org.onap.portal.service.fn.FnUserService;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
@Service
+@Transactional
public class AdminRolesService {
private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(AdminRolesService.class);
@@ -63,36 +65,31 @@ public class AdminRolesService {
private final Long SYS_ADMIN_ROLE_ID = 1L;
private final Long ACCOUNT_ADMIN_ROLE_ID = 999L;
private final Long ECOMP_APP_ID = 1L;
- private final String ADMIN_ACCOUNT= "Is account admin for user {}";
+ private final String ADMIN_ACCOUNT = "Is account admin for user {}";
private final EntityManager entityManager;
private final FnUserService fnUserService;
+ private final FnUserRoleService fnUserRoleService;
@Autowired
public AdminRolesService(final EntityManager entityManager,
- FnUserService fnUserService) {
+ final FnUserService fnUserService, final FnUserRoleService fnUserRoleService) {
this.entityManager = entityManager;
this.fnUserService = fnUserService;
+ this.fnUserRoleService = fnUserRoleService;
}
- public boolean isSuperAdmin(FnUser user) {
- if ((user != null) && (user.getOrgUserId() != null)) {
- String sql = "SELECT user.USER_ID, user.org_user_id, userrole.ROLE_ID, userrole.APP_ID FROM fn_user_role userrole "
- + "INNER JOIN fn_user user ON user.USER_ID = userrole.USER_ID " + "WHERE user.org_user_id = '"
- + user.getOrgUserId() + "' " + "AND userrole.ROLE_ID = '" + SYS_ADMIN_ROLE_ID + "' "
- + "AND userrole.APP_ID = '" + ECOMP_APP_ID + "';";
- try {
- List userRoleList = entityManager.createNativeQuery(sql, UserRole.class).getResultList();
- if (userRoleList != null && userRoleList.size() > 0) {
- return true;
- }
- } catch (Exception e) {
- EPLogUtil.logEcompError(logger, EPAppMessagesEnum.BeDaoSystemError, e);
- logger.error(EELFLoggerDelegate.errorLogger,
- "Exception occurred while executing isSuperAdmin operation", e);
- }
+ public boolean isSuperAdmin(final String orgUserId) {
+ boolean isSuperAdmin;
+ try {
+ isSuperAdmin = fnUserRoleService
+ .isSuperAdmin(orgUserId, SYS_ADMIN_ROLE_ID, ECOMP_APP_ID);
+ } catch (Exception e) {
+ logger.error("isSuperAdmin exception: " + e.toString());
+ throw e;
}
- return false;
+ logger.info("isSuperAdmin " + isSuperAdmin);
+ return isSuperAdmin;
}
public boolean isAccountAdmin(FnUser user) {
@@ -101,22 +98,28 @@ public class AdminRolesService {
userParams.put("userId", user.getId());
logger.debug(EELFLoggerDelegate.debugLogger, ADMIN_ACCOUNT, user.getId());
List<Integer> userAdminApps;
- String query = "select fa.app_id from fn_user_role ur,fn_app fa where ur.user_id =:userId and ur.app_id=fa.app_id and ur.role_id= 999 and (fa.enabled = 'Y' || fa.app_id=1)";
- userAdminApps = entityManager.createQuery(query, Integer.class).setParameter("userId", user.getId()).getResultList();
- logger.debug(EELFLoggerDelegate.debugLogger, "Is account admin for userAdminApps() - for user {}, found userAdminAppsSize {}", user.getOrgUserId(), userAdminApps.size());
-
+ String query = "select fa.app_id from fn_user_role ur,fn_app fa where ur.user_id =:userId and ur.app_id=fa.app_id and ur.role_id= 999 and (fa.enabled = 'Y' || fa.app_id=1)";
+ userAdminApps = entityManager.createQuery(query, Integer.class)
+ .setParameter("userId", user.getId()).getResultList();
+ logger.debug(EELFLoggerDelegate.debugLogger,
+ "Is account admin for userAdminApps() - for user {}, found userAdminAppsSize {}",
+ user.getOrgUserId(), userAdminApps.size());
if (user.getId() != null) {
for (FnUserRole userApp : user.getFnUserRoles()) {
- if (userApp.getRoleId().getId().equals(ACCOUNT_ADMIN_ROLE_ID)||(userAdminApps.size()>1)) {
- logger.debug(EELFLoggerDelegate.debugLogger, "Is account admin for userAdminApps() - for user {}, found Id {}", user.getOrgUserId(), userApp.getRoleId().getId());
+ if (userApp.getRoleId().getId().equals(ACCOUNT_ADMIN_ROLE_ID) || (
+ userAdminApps.size() > 1)) {
+ logger.debug(EELFLoggerDelegate.debugLogger,
+ "Is account admin for userAdminApps() - for user {}, found Id {}",
+ user.getOrgUserId(), userApp.getRoleId().getId());
return true;
}
}
}
} catch (Exception e) {
EPLogUtil.logEcompError(logger, EPAppMessagesEnum.BeDaoSystemError, e);
- logger.error(EELFLoggerDelegate.errorLogger, "Exception occurred while executing isAccountAdmin operation",
+ logger.error(EELFLoggerDelegate.errorLogger,
+ "Exception occurred while executing isAccountAdmin operation",
e);
}
return false;
@@ -129,7 +132,8 @@ public class AdminRolesService {
for (FnUserRole userApp : currentUser.getFnUserRoles()) {
if (!userApp.getAppId().getId().equals(ECOMP_APP_ID)) {
FnRole role = userApp.getRoleId();
- if (!role.getId().equals(SYS_ADMIN_ROLE_ID) && !role.getId().equals(ACCOUNT_ADMIN_ROLE_ID)) {
+ if (!role.getId().equals(SYS_ADMIN_ROLE_ID) && !role.getId()
+ .equals(ACCOUNT_ADMIN_ROLE_ID)) {
if (role.getActiveYn()) {
return true;
}
@@ -139,7 +143,8 @@ public class AdminRolesService {
}
} catch (Exception e) {
EPLogUtil.logEcompError(logger, EPAppMessagesEnum.BeDaoSystemError, e);
- logger.error(EELFLoggerDelegate.errorLogger, "Exception occurred while executing isUser operation", e);
+ logger.error(EELFLoggerDelegate.errorLogger, "Exception occurred while executing isUser operation",
+ e);
}
return false;
}
diff --git a/portal-BE/src/main/java/org/onap/portal/service/PersUserWidgetService.java b/portal-BE/src/main/java/org/onap/portal/service/PersUserWidgetService.java
index 364085c4..38a0a408 100644
--- a/portal-BE/src/main/java/org/onap/portal/service/PersUserWidgetService.java
+++ b/portal-BE/src/main/java/org/onap/portal/service/PersUserWidgetService.java
@@ -46,14 +46,22 @@ import java.util.stream.Collectors;
import org.onap.portal.dao.ep.EpPersUserWidgetSelDao;
import org.onap.portal.dao.fn.EpWidgetCatalogDao;
import org.onap.portal.domain.db.ep.EpPersUserWidgetSel;
+import org.onap.portal.domain.db.ep.EpWidgetCatalog;
import org.onap.portal.domain.db.fn.FnUser;
import org.onap.portal.domain.dto.ecomp.PersUserWidgetSelection;
+import org.onap.portal.domain.dto.transport.WidgetCatalogPersonalization;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
@Service
+@Transactional
public class PersUserWidgetService {
+ private static final Logger LOGGER = LoggerFactory.getLogger(PersUserWidgetService.class);
private final EpPersUserWidgetSelDao epPersUserWidgetSelDao;
private final EpWidgetCatalogDao epWidgetCatalogDao;
@@ -64,44 +72,36 @@ public class PersUserWidgetService {
this.epWidgetCatalogDao = epWidgetCatalogDao;
}
- public void setPersUserAppValue(FnUser user, Long widgetId, Boolean select) {
- if (user == null || widgetId == null) {
- throw new IllegalArgumentException("setPersUserAppValue: Null values");
- }
-
- List<PersUserWidgetSelection> persList = getUserWidgetSelction(user, widgetId);
+ public void setPersUserAppValue(FnUser user, WidgetCatalogPersonalization personalization) {
+ List<PersUserWidgetSelection> persList = getUserWidgetSelction(user, personalization.getWidgetId());
+ LOGGER.info("Error: " + persList.size());
// Key constraint limits to 1 row
- PersUserWidgetSelection persRow = null;
+ PersUserWidgetSelection persRow;
if (persList.size() == 1) {
persRow = persList.get(0);
} else {
- persRow = new PersUserWidgetSelection(null, user.getId(), widgetId, null);
+ persRow = new PersUserWidgetSelection(null, user.getUserId(), personalization.getWidgetId(), null);
}
- if (select) {
- if (persRow.getId() != null) {
- epPersUserWidgetSelDao.deleteById(persRow.getId());
- }
- persRow.setStatusCode("S"); // show
- EpPersUserWidgetSel epPersUserWidgetSel = new EpPersUserWidgetSel();
- epPersUserWidgetSel.setUserId(user);
- epPersUserWidgetSel.setWidgetId(epWidgetCatalogDao.findById(widgetId).get());
- epPersUserWidgetSelDao.saveAndFlush(epPersUserWidgetSel);
- } else {
- if (persRow.getId() != null) {
- epPersUserWidgetSelDao.deleteById(persRow.getId());
- }
- persRow.setStatusCode("H"); // Hide
- EpPersUserWidgetSel epPersUserWidgetSel = new EpPersUserWidgetSel();
- epPersUserWidgetSel.setUserId(user);
- epPersUserWidgetSel.setWidgetId(epWidgetCatalogDao.findById(widgetId).get());
- epPersUserWidgetSelDao.saveAndFlush(epPersUserWidgetSel);
+
+ if (persRow.getId() != null) {
+ epPersUserWidgetSelDao.deleteById(persRow.getId());
}
+
+ persRow.setStatusCode(personalization.getSelect() ? "S" : "H"); // Show / Hide
+ EpPersUserWidgetSel epPersUserWidgetSel = new EpPersUserWidgetSel();
+ epPersUserWidgetSel.setUserId(user);
+ epPersUserWidgetSel.setWidgetId(
+ epWidgetCatalogDao.findById(personalization.getWidgetId()).orElse(new EpWidgetCatalog()));
+ epPersUserWidgetSelDao.saveAndFlush(epPersUserWidgetSel);
}
private List<PersUserWidgetSelection> getUserWidgetSelction(FnUser user, Long widgetId) {
- return epPersUserWidgetSelDao.getEpPersUserWidgetSelForUserIdAndWidgetId(user.getId(), widgetId)
- .orElse(new ArrayList<>()).stream().map(
- this::epPersUserWidgetSelToPersUserWidgetSelection).collect(Collectors.toList());
+ return epPersUserWidgetSelDao
+ .getEpPersUserWidgetSelForUserIdAndWidgetId(user.getId(), widgetId)
+ .orElse(new ArrayList<>())
+ .stream()
+ .map(this::epPersUserWidgetSelToPersUserWidgetSelection)
+ .collect(Collectors.toList());
}
private PersUserWidgetSelection epPersUserWidgetSelToPersUserWidgetSelection(EpPersUserWidgetSel widgetSel) {
diff --git a/portal-BE/src/main/java/org/onap/portal/service/WidgetService.java b/portal-BE/src/main/java/org/onap/portal/service/WidgetService.java
index 794f9336..4b037919 100644
--- a/portal-BE/src/main/java/org/onap/portal/service/WidgetService.java
+++ b/portal-BE/src/main/java/org/onap/portal/service/WidgetService.java
@@ -46,29 +46,33 @@ import javax.persistence.EntityManager;
import javax.servlet.http.HttpServletResponse;
import org.onap.portal.dao.fn.FnWidgetDao;
import org.onap.portal.domain.db.fn.FnUser;
+import org.onap.portal.domain.db.fn.FnUserRole;
import org.onap.portal.domain.db.fn.FnWidget;
import org.onap.portal.domain.dto.ecomp.EPUserApp;
-import org.onap.portal.domain.dto.ecomp.Widget;
import org.onap.portal.domain.dto.transport.FieldsValidator;
import org.onap.portal.domain.dto.transport.OnboardingWidget;
+import org.onap.portal.service.fn.FnUserRoleService;
import org.onap.portal.utils.EPCommonSystemProperties;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.EnableAspectJAutoProxy;
+import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
+@EnableAspectJAutoProxy
+@Transactional
public class WidgetService {
private final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(WidgetService.class);
- private final Long LONG_ECOMP_APP_ID = 1L;
private final Long ACCOUNT_ADMIN_ROLE_ID = 999L;
private static String baseSqlToken =
" new org.onap.portal.domain.dto.transport.OnboardingWidget("
+ "widget.WIDGET_ID,widget.WDG_NAME,widget.APP_ID,"
+ "app.APP_NAME,widget.WDG_WIDTH,widget.WDG_HEIGHT,"
- + "widget.WDG_URL) widget.WIDGET_ID,widget.WDG_NAME,widget.APP_ID,app.APP_NAME,widget.WDG_WIDTH,widget.WDG_HEIGHT,widget.WDG_URL from FN_WIDGET widget join FN_APP app ON widget.APP_ID = app.APP_ID";
+ + "widget.WDG_URL, widget.WIDGET_ID,widget.WDG_NAME,widget.APP_ID,app.APP_NAME,widget.WDG_WIDTH,widget.WDG_HEIGHT,widget.WDG_URL) from FN_WIDGET widget join FN_APP app ON widget.APP_ID = app.APP_ID";
private static final String urlField = "url";
private static final Long DUBLICATED_FIELD_VALUE_ECOMP_ERROR = new Long(
@@ -78,19 +82,21 @@ public class WidgetService {
private final AdminRolesService adminRolesService;
private final EntityManager entityManager;
private final FnWidgetDao fnWidgetDao;
+ private final FnUserRoleService fnUserRoleService;
@Autowired
public WidgetService(final AdminRolesService adminRolesService, final EntityManager entityManager,
- final FnWidgetDao fnWidgetDao) {
+ final FnWidgetDao fnWidgetDao, FnUserRoleService fnUserRoleService) {
this.adminRolesService = adminRolesService;
this.entityManager = entityManager;
this.fnWidgetDao = fnWidgetDao;
+ this.fnUserRoleService = fnUserRoleService;
}
private static final Object syncRests = new Object();
public List<OnboardingWidget> getOnboardingWidgets(FnUser user, boolean managed) {
- if (adminRolesService.isSuperAdmin(user)) {
+ if (adminRolesService.isSuperAdmin(user.getOrgUserId())) {
return entityManager.createQuery(sqlWidgetsForAllApps(), OnboardingWidget.class).getResultList();
} else if (managed) {
if (adminRolesService.isAccountAdmin(user)) {
@@ -122,16 +128,9 @@ public class WidgetService {
+ ":USERID";
}
- public FieldsValidator setOnboardingWidget(FnUser user, OnboardingWidget onboardingWidget) {
- if (onboardingWidget.getAppName().isEmpty() || onboardingWidget.getUrl().isEmpty()
- || onboardingWidget.getAppId() == null
- || onboardingWidget.getAppId().equals(LONG_ECOMP_APP_ID) || onboardingWidget.getWidth() <= 0 ||
- onboardingWidget.getHeight() <= 0) {
- FieldsValidator fieldsValidator = new FieldsValidator();
- fieldsValidator.setHttpStatusCode((long) HttpServletResponse.SC_BAD_REQUEST);
- return fieldsValidator;
- }
- return this.updateOrSaveWidget(adminRolesService.isSuperAdmin(user), user.getId(), onboardingWidget);
+ @PreAuthorize("hasRole('System_Administrator')")
+ public FieldsValidator setOnboardingWidget(final Long userId, final OnboardingWidget onboardingWidget) {
+ return this.updateOrSaveWidget(true, userId, onboardingWidget);
}
private FieldsValidator updateOrSaveWidget(boolean superAdmin, Long userId, OnboardingWidget onboardingWidget) {
@@ -160,25 +159,16 @@ public class WidgetService {
private boolean isUserAdminOfAppForWidget(boolean superAdmin, Long userId, Long appId) {
if (!superAdmin) {
- List<EPUserApp> userRoles = getAdminUserRoles(userId, appId);
+ List<FnUserRole> userRoles = getAdminUserRoles(userId, appId);
return (userRoles.size() > 0);
}
return true;
}
- private List<EPUserApp> getAdminUserRoles(Long userId, Long appId) {
- return entityManager.createQuery(
- "SELECT new org.onap.portal.domain.dto.ecomp.EPUserApp(fn.userId, fn.roleId, fn.appId) FROM FnUserRole fn"
- + "WHERE fn.userId = :USERID "
- + "AND fn.roleId = :ROLEID "
- + "AND fn.appId = :APPID", EPUserApp.class)
- .setParameter("USERID", userId)
- .setParameter("ROLEID", ACCOUNT_ADMIN_ROLE_ID)
- .setParameter("APPID", appId)
- .getResultList();
+ private List<FnUserRole> getAdminUserRoles(Long userId, Long appId) {
+ return fnUserRoleService.getAdminUserRoles(userId, ACCOUNT_ADMIN_ROLE_ID, appId);
}
- @Transactional
private void applyOnboardingWidget(OnboardingWidget onboardingWidget, FieldsValidator fieldsValidator) {
boolean result;
FnWidget widget;
@@ -199,11 +189,11 @@ public class WidgetService {
}
private void validateOnboardingWidget(OnboardingWidget onboardingWidget, FieldsValidator fieldsValidator) {
- List<Widget> widgets = getWidgets(onboardingWidget);
+ List<FnWidget> widgets = getWidgets(onboardingWidget);
boolean dublicatedUrl = false;
boolean dublicatedName = false;
- for (Widget widget : widgets) {
- if (onboardingWidget.getId() != null && onboardingWidget.getId().equals(widget.getId())) {
+ for (FnWidget widget : widgets) {
+ if (onboardingWidget.getId() != null && onboardingWidget.getId().equals(widget.getWidgetId())) {
// widget should not be compared with itself
continue;
}
@@ -233,24 +223,16 @@ public class WidgetService {
}
}
- private List<Widget> getWidgets(OnboardingWidget onboardingWidget) {
- return entityManager.createQuery(
- "SELECT new org.onap.portal.domain.dto.ecomp.Widget(fn.APP_ID, fn.WDG_NAME, fn.WDG_URL) FROM FnWidget fn"
- + "WHERE fn.WDG_URL = :WDGURL "
- + "AND fn.WDG_NAME = :WDGNAME "
- + "AND fn.APP_ID = :APPID", Widget.class)
- .setParameter("WDGURL", onboardingWidget.getUrl())
- .setParameter("WDGNAME", onboardingWidget.getName())
- .getResultList();
+ private List<FnWidget> getWidgets(final OnboardingWidget onboardingWidget) {
+ return fnWidgetDao.getForUrlNameAndAppId(onboardingWidget.getUrl(), onboardingWidget.getName(), onboardingWidget.getAppId()).orElse(new ArrayList<>());
}
- @Transactional
public FieldsValidator deleteOnboardingWidget(FnUser user, Long onboardingWidgetId) {
FieldsValidator fieldsValidator = new FieldsValidator();
synchronized (syncRests) {
FnWidget widget = fnWidgetDao.getOne(onboardingWidgetId);
if (widget != null && widget.getAppId() != null) { // widget exists
- if (!this.isUserAdminOfAppForWidget(adminRolesService.isSuperAdmin(user), user.getId(),
+ if (!this.isUserAdminOfAppForWidget(adminRolesService.isSuperAdmin(user.getOrgUserId()), user.getUserId(),
widget.getAppId())) {
fieldsValidator.setHttpStatusCode((long) HttpServletResponse.SC_FORBIDDEN);
} else {
@@ -262,4 +244,8 @@ public class WidgetService {
}
return fieldsValidator;
}
+
+ public FnWidget saveOne(final FnWidget widget){
+ return fnWidgetDao.saveAndFlush(widget);
+ }
}
diff --git a/portal-BE/src/main/java/org/onap/portal/service/ep/EpMicroserviceParameterService.java b/portal-BE/src/main/java/org/onap/portal/service/ep/EpMicroserviceParameterService.java
index 2544ae6a..6fa8b7d7 100644
--- a/portal-BE/src/main/java/org/onap/portal/service/ep/EpMicroserviceParameterService.java
+++ b/portal-BE/src/main/java/org/onap/portal/service/ep/EpMicroserviceParameterService.java
@@ -51,8 +51,10 @@ import org.onap.portal.domain.dto.ecomp.MicroserviceParameter;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
@Service
+@Transactional
public class EpMicroserviceParameterService {
EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(EpWidgetCatalogParameterService.class);
@@ -84,4 +86,19 @@ public class EpMicroserviceParameterService {
private List<MicroserviceParameter> mapToMicroserviceParameterList(final List<EpMicroserviceParameter> list){
return list.stream().map(this::epWidgetCatalogParameterToMicroserviceParameter).collect(Collectors.toList());
}
+
+ public EpMicroserviceParameter save(EpMicroserviceParameter epMicroserviceParameter){
+ return epMicroserviceParameterDao.save(epMicroserviceParameter);
+ }
+
+ @Transactional
+ public boolean deleteMicroserviceParameterById(final Long paramid){
+ try {
+ epMicroserviceParameterDao.deleteById(paramid);
+ return true;
+ }catch (Exception e){
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage());
+ return false;
+ }
+ }
}
diff --git a/portal-BE/src/main/java/org/onap/portal/service/ep/EpWidgetCatalogParameterService.java b/portal-BE/src/main/java/org/onap/portal/service/ep/EpWidgetCatalogParameterService.java
index 8488e5ad..d43acc04 100644
--- a/portal-BE/src/main/java/org/onap/portal/service/ep/EpWidgetCatalogParameterService.java
+++ b/portal-BE/src/main/java/org/onap/portal/service/ep/EpWidgetCatalogParameterService.java
@@ -42,54 +42,60 @@ package org.onap.portal.service.ep;
import java.util.ArrayList;
import java.util.List;
-import java.util.stream.Collectors;
-import org.onap.portal.dao.ep.EpMicroserviceParameterDao;
import org.onap.portal.dao.ep.EpWidgetCatalogParameterDao;
-import org.onap.portal.dao.fn.EpWidgetCatalogDao;
-import org.onap.portal.dao.fn.FnUserDao;
import org.onap.portal.domain.db.ep.EpWidgetCatalogParameter;
-import org.onap.portal.domain.dto.ecomp.WidgetCatalogParameter;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
@Service
+@Transactional
public class EpWidgetCatalogParameterService {
EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(EpWidgetCatalogParameterService.class);
private final EpWidgetCatalogParameterDao epWidgetCatalogParameterDao;
- private final EpMicroserviceParameterDao epMicroserviceParameterDao;
- private final EpWidgetCatalogDao epWidgetCatalogDao;
- private final FnUserDao fnUserDao;
+ private final EpMicroserviceParameterService epMicroserviceParameterService;
@Autowired
public EpWidgetCatalogParameterService(
final EpWidgetCatalogParameterDao epWidgetCatalogParameterDao,
- final EpMicroserviceParameterDao epMicroserviceParameterDao,
- EpWidgetCatalogDao epWidgetCatalogDao, FnUserDao fnUserDao) {
+ final EpMicroserviceParameterService epMicroserviceParameterService) {
this.epWidgetCatalogParameterDao = epWidgetCatalogParameterDao;
- this.epMicroserviceParameterDao = epMicroserviceParameterDao;
- this.epWidgetCatalogDao = epWidgetCatalogDao;
- this.fnUserDao = fnUserDao;
+ this.epMicroserviceParameterService = epMicroserviceParameterService;
}
- public List<WidgetCatalogParameter> getUserParameterById(Long paramId) {
- return mapEpWidgetListToWidgetList(
- epWidgetCatalogParameterDao.retrieveByParamId(paramId).orElse(new ArrayList<>()));
+ public List<EpWidgetCatalogParameter> getUserParameterById(final Long paramId) {
+ return epWidgetCatalogParameterDao.retrieveByParamId(paramId).orElse(new ArrayList<>());
}
- public void deleteUserParameterById(Long paramId) {
- epWidgetCatalogParameterDao.deleteWidgetCatalogParameter(paramId);
- epMicroserviceParameterDao.deleteMicroserviceParameterById(paramId);
+ public boolean deleteUserParameterById(final Long paramId) {
+ return (deleteByParamId(paramId) &&
+ epMicroserviceParameterService.deleteMicroserviceParameterById(paramId));
}
- public WidgetCatalogParameter getUserParamById(Long widgetId, Long userId, Long paramId) {
- WidgetCatalogParameter widgetParam = null;
- List<WidgetCatalogParameter> list = mapEpWidgetListToWidgetList(
- epWidgetCatalogParameterDao.getUserParamById(widgetId, userId, paramId)
- .orElse(new ArrayList<>()));
- if (list.size() != 0) {
+ public EpWidgetCatalogParameter getById(final Long id){
+ return epWidgetCatalogParameterDao.getOne(id);
+ }
+
+ @Transactional
+ public boolean deleteByParamId(final Long paramId) {
+ try {
+ epWidgetCatalogParameterDao.deleteWidgetCatalogParameter(paramId);
+ return true;
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage());
+ return false;
+ }
+ }
+
+ public EpWidgetCatalogParameter getUserParamById(final Long widgetId, final Long userId, final Long paramId) {
+ EpWidgetCatalogParameter widgetParam = null;
+ List<EpWidgetCatalogParameter> list = epWidgetCatalogParameterDao
+ .getUserParamById(widgetId, userId, paramId)
+ .orElse(null);
+ if (list != null && !list.isEmpty()) {
widgetParam = list.get(0);
}
logger.debug(EELFLoggerDelegate.debugLogger,
@@ -97,31 +103,7 @@ public class EpWidgetCatalogParameterService {
return widgetParam;
}
- public void saveUserParameter(WidgetCatalogParameter newParameter) {
- epWidgetCatalogParameterDao.saveAndFlush(mapToEpWidgetCatalogParameter(newParameter));
- }
-
- private EpWidgetCatalogParameter mapToEpWidgetCatalogParameter(WidgetCatalogParameter wcp){
-
- return new EpWidgetCatalogParameter(wcp.getId(), epWidgetCatalogDao.findById(wcp.getWidgetId()).get(),
- fnUserDao.findById(wcp.getUserId()).get(),
- epMicroserviceParameterDao.findById(wcp.getParamId()).get(),
- wcp.getUserValue());
- }
-
- private List<EpWidgetCatalogParameter> mapToList(List<WidgetCatalogParameter> list){
- return list.stream().map(this::mapToEpWidgetCatalogParameter).collect(Collectors.toList());
- }
-
- private WidgetCatalogParameter mapEpWidgetCatalogParametertoWidgetCatalogParameter(
- EpWidgetCatalogParameter ewcp) {
- return new WidgetCatalogParameter(ewcp.getId(), ewcp.getWidgetId().getWidgetId(),
- ewcp.getUserId().getId(), ewcp.getParamId().getId(), ewcp.getUserValue());
- }
-
- private List<WidgetCatalogParameter> mapEpWidgetListToWidgetList(
- List<EpWidgetCatalogParameter> epWidgetCatalogParameters) {
- return epWidgetCatalogParameters.stream().map(this::mapEpWidgetCatalogParametertoWidgetCatalogParameter)
- .collect(Collectors.toList());
+ public void saveUserParameter(final EpWidgetCatalogParameter newParameter) {
+ epWidgetCatalogParameterDao.save(newParameter);
}
}
diff --git a/portal-BE/src/main/java/org/onap/portal/service/ep/EpWidgetCatalogService.java b/portal-BE/src/main/java/org/onap/portal/service/ep/EpWidgetCatalogService.java
new file mode 100644
index 00000000..f0c273ad
--- /dev/null
+++ b/portal-BE/src/main/java/org/onap/portal/service/ep/EpWidgetCatalogService.java
@@ -0,0 +1,21 @@
+package org.onap.portal.service.ep;
+
+import org.onap.portal.dao.fn.EpWidgetCatalogDao;
+import org.onap.portal.domain.db.ep.EpWidgetCatalog;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class EpWidgetCatalogService {
+
+ private final EpWidgetCatalogDao epWidgetCatalogDao;
+
+ @Autowired
+ public EpWidgetCatalogService(EpWidgetCatalogDao epWidgetCatalogDao) {
+ this.epWidgetCatalogDao = epWidgetCatalogDao;
+ }
+
+ public EpWidgetCatalog save(final EpWidgetCatalog epWidgetCatalog){
+ return epWidgetCatalogDao.save(epWidgetCatalog);
+ }
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/service/fn/FnAppService.java b/portal-BE/src/main/java/org/onap/portal/service/fn/FnAppService.java
index 75b32dd3..d8d88c97 100644
--- a/portal-BE/src/main/java/org/onap/portal/service/fn/FnAppService.java
+++ b/portal-BE/src/main/java/org/onap/portal/service/fn/FnAppService.java
@@ -41,6 +41,8 @@
package org.onap.portal.service.fn;
import java.util.List;
+import java.util.Optional;
+import javax.persistence.EntityExistsException;
import org.onap.portal.dao.fn.FnAppDao;
import org.onap.portal.domain.db.fn.FnApp;
import org.onap.portal.domain.dto.transport.OnboardingApp;
@@ -67,6 +69,10 @@ public class FnAppService {
return fnAppDao.findAll();
}
+ public FnApp getById(final Long id){
+ return Optional.of(fnAppDao.getOne(id)).orElseThrow(EntityExistsException::new);
+ }
+
public void createOnboardingFromApp(FnApp app, OnboardingApp onboardingApp) {
onboardingApp.setId(app.getId());
onboardingApp.setName(app.getAppName());
diff --git a/portal-BE/src/main/java/org/onap/portal/service/fn/FnRoleService.java b/portal-BE/src/main/java/org/onap/portal/service/fn/FnRoleService.java
new file mode 100644
index 00000000..45867b42
--- /dev/null
+++ b/portal-BE/src/main/java/org/onap/portal/service/fn/FnRoleService.java
@@ -0,0 +1,87 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ============LICENSE_END============================================
+ *
+ *
+ */
+
+package org.onap.portal.service.fn;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+import javax.persistence.EntityExistsException;
+import org.onap.portal.dao.fn.FnRoleDao;
+import org.onap.portal.domain.db.fn.FnRole;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@Transactional
+public class FnRoleService {
+ private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(FnRoleService.class);
+
+
+ private final FnRoleDao fnRoleDao;
+
+ @Autowired
+ public FnRoleService(FnRoleDao fnRoleDao) {
+ this.fnRoleDao = fnRoleDao;
+ }
+
+ public FnRole getById(final Long id) {
+ return fnRoleDao.findById(id).orElseThrow(EntityExistsException::new);
+ }
+
+ public FnRole getRole(final Long appId, final Long appRoleId) {
+
+ String sql = "SELECT * FROM fn_role where APP_ID = :appId AND APP_ROLE_ID = :appRoleId";
+
+ List<FnRole> roles = Optional.of(fnRoleDao.retrieveAppRoleByAppRoleIdAndByAppId(appId, appRoleId)).orElse(new ArrayList<>());
+ if (!roles.isEmpty()) {
+ logger.error(EELFLoggerDelegate.errorLogger,
+ String.format(
+ "search by appId=%s, appRoleid=%s should have returned 0 or 1 results. Got %d. This is an internal server error.",
+ appId, appRoleId, roles.size()));
+ logger.error(EELFLoggerDelegate.errorLogger,
+ "Trying to recover from duplicates by returning the first search result. This issue should be treated, it is probably not critical because duplicate roles should be similar.");
+ return roles.get(0);
+ }
+ return null;
+ }
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/service/fn/FnUserRoleService.java b/portal-BE/src/main/java/org/onap/portal/service/fn/FnUserRoleService.java
new file mode 100644
index 00000000..9f136df3
--- /dev/null
+++ b/portal-BE/src/main/java/org/onap/portal/service/fn/FnUserRoleService.java
@@ -0,0 +1,82 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ============LICENSE_END============================================
+ *
+ *
+ */
+
+package org.onap.portal.service.fn;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
+import org.onap.portal.dao.fn.FnUserRoleDao;
+import org.onap.portal.domain.db.fn.FnUserRole;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@Transactional
+public class FnUserRoleService {
+ private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(FnUserRoleService.class);
+ private final FnUserRoleDao fnUserRoleDao;
+
+ @Autowired
+ public FnUserRoleService(FnUserRoleDao fnUserRoleDao) {
+ this.fnUserRoleDao = fnUserRoleDao;
+ }
+
+ public List<FnUserRole> getAdminUserRoles(final Long userId, final Long roleId, final Long appId) {
+ return fnUserRoleDao.getAdminUserRoles(userId, roleId, appId).orElse(new ArrayList<>());
+ }
+
+ public boolean isSuperAdmin(final String orgUserId, final Long roleId, final Long appId){
+ List<FnUserRole> roles = getUserRolesForRoleIdAndAppId(roleId, appId).stream().filter(role -> role.getUserId().getOrgUserId().equals(orgUserId)).collect(Collectors.toList());
+ return !roles.isEmpty();
+ }
+
+ private List<FnUserRole> getUserRolesForRoleIdAndAppId(final Long roleId, final Long appId){
+ return Optional.of(fnUserRoleDao.getUserRolesForRoleIdAndAppId(roleId, appId)).orElse(new ArrayList<>());
+ }
+
+ public FnUserRole saveOne(final FnUserRole fnUserRole){
+ return fnUserRoleDao.save(fnUserRole);
+ }
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/service/fn/FnUserService.java b/portal-BE/src/main/java/org/onap/portal/service/fn/FnUserService.java
index 855e827d..5c1c84b5 100644
--- a/portal-BE/src/main/java/org/onap/portal/service/fn/FnUserService.java
+++ b/portal-BE/src/main/java/org/onap/portal/service/fn/FnUserService.java
@@ -40,12 +40,18 @@
package org.onap.portal.service.fn;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
import java.security.Principal;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
+import org.onap.portal.controller.UserRolesController;
import org.onap.portal.dao.fn.FnUserDao;
import org.onap.portal.domain.db.fn.FnUser;
+import org.onap.portal.domain.dto.transport.UserWithNameSurnameTitle;
+import org.onap.portal.utils.EcompPortalUtils;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.security.core.userdetails.UserDetailsService;
@@ -58,6 +64,8 @@ import org.springframework.transaction.annotation.Transactional;
@Transactional
public class FnUserService implements UserDetailsService {
+ private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(FnUserService.class);
+
private FnUserDao fnUserDao;
@Autowired
@@ -83,24 +91,28 @@ public class FnUserService implements UserDetailsService {
return Optional.of(fnUserDao.getOne(id));
}
- List<FnUser> getUserWithOrgUserId(final String orgUserIdValue){
+ List<FnUser> getUserWithOrgUserId(final String orgUserIdValue) {
return fnUserDao.getUserWithOrgUserId(orgUserIdValue).orElse(new ArrayList<>());
}
- List<FnUser> getUsersByOrgIds(final List<String> orgIds){
+ List<FnUser> getUsersByOrgIds(final List<String> orgIds) {
return fnUserDao.getUsersByOrgIds(orgIds).orElse(new ArrayList<>());
}
- List<FnUser> getActiveUsers(){
+ List<FnUser> getActiveUsers() {
return fnUserDao.getActiveUsers().orElse(new ArrayList<>());
}
- public void deleteUser(final FnUser fnUser){
+ public void deleteUser(final FnUser fnUser) {
fnUserDao.delete(fnUser);
}
public boolean existById(final Long userId) {
return fnUserDao.existsById(userId);
}
-}
+
+ public List<FnUser> findAll() {
+ return fnUserDao.findAll();
+ }
+ } \ No newline at end of file
diff --git a/portal-BE/src/main/java/org/onap/portal/utils/SystemType.java b/portal-BE/src/main/java/org/onap/portal/utils/SystemType.java
new file mode 100644
index 00000000..fe7ff8f2
--- /dev/null
+++ b/portal-BE/src/main/java/org/onap/portal/utils/SystemType.java
@@ -0,0 +1,44 @@
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ============LICENSE_END============================================
+ *
+ *
+ */
+package org.onap.portal.utils;
+
+public enum SystemType {
+
+ APPLICATION,
+// SYSTEM
+}
diff --git a/portal-BE/src/main/resources/application.properties b/portal-BE/src/main/resources/application.properties
index 30c0beeb..6debc9ab 100644
--- a/portal-BE/src/main/resources/application.properties
+++ b/portal-BE/src/main/resources/application.properties
@@ -1,14 +1,12 @@
server.port=8080
spring.datasource.url=jdbc:mysql://portal-db:3306/testdb?createDatabaseIfNotExist=true&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
-spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
++spring.datasource.driverClassName=org.mariadb.jdbc.Driver
spring.datasource.initialization-mode=always
spring.session.jdbc.initialize-schema=always
spring.datasource.continueOnError=true
spring.datasource.username=portal
spring.datasource.password=Test123456
-log4j.logger.org.hibernate=info
-
#H2 config
spring.h2.console.settings.web-allow-others=true
spring.h2.console.enabled=true
@@ -18,4 +16,17 @@ spring.jpa.hibernate.ddl-auto=update
spring.jpa.database=mysql
spring.jpa.show-sql=true
-spring.jooq.sql-dialect=MARIADB \ No newline at end of file
+spring.jooq.sql-dialect=MARIADB
+
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.Target=System.out
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d{HH:mm:ss,SSS} %-5p [%c] - %m%n
+
+log4j.rootLogger=info, stdout
+# basic log level for all messages
+log4j.logger.org.hibernate=info
+
+# SQL statements and parameters
+log4j.logger.org.hibernate.SQL=debug
+log4j.logger.org.hibernate.type.descriptor.sql=trace \ No newline at end of file
diff --git a/portal-BE/src/main/resources/data.sql b/portal-BE/src/main/resources/data.sql
index a1b8e8a3..d8831776 100644
--- a/portal-BE/src/main/resources/data.sql
+++ b/portal-BE/src/main/resources/data.sql
@@ -54,11 +54,279 @@
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
-INSERT INTO `cr_report` (`rep_id`, `title`, `descr`, `public_yn`, `report_xml`, `create_id`, `create_date`, `maint_id`, `maint_date`, `menu_id`, `menu_approved_yn`, `owner_id`, `folder_id`, `dashboard_type_yn`, `dashboard_yn`) VALUES (15,'Application Usage Report Wid','','Y','<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<customReport pageSize=\"200\" reportType=\"Linear\">\n <reportName>Application Usage Report Wid</reportName>\n <reportDescr></reportDescr>\n <dbInfo>local</dbInfo>\n <dbType>mysql</dbType>\n <chartType>BarChart3D</chartType>\n <chartWidth>700</chartWidth>\n <chartHeight>500</chartHeight>\n <showChartTitle>false</showChartTitle>\n <public>false</public>\n <hideFormFieldAfterRun>false</hideFormFieldAfterRun>\n <createId>27</createId>\n <createDate>2017-01-28-05:00</createDate>\n <reportSQL>SELECT \n l.date audit_date, \n app_id app_id, \n IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name) app_name, \n IFNULL(r.ct,0) ct \nfrom\n(\n select a.Date, app_id, app_name\n from (\n select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as Date\n from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a\n cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b\n cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c\n ) a, \n (\n SELECT \n app_id, app_name\n from\n (\n select @rn := @rn+1 AS rowId, app_id, app_name from \n (\n select app_id, app_name, ct from \n (\n select affected_record_id, count(*) ct\n from fn_audit_log l\n where audit_date &gt; date_add( curdate(), interval -6 day)\n and affected_record_id not in ( 1, -1)\n and activity_cd in (\'tab_access\', \'app_access\')\n and user_id = [USER_ID]\n group by affected_record_id\n ) a, fn_app f\n where a.affected_record_id = f.app_id\n order by ct desc \n ) b,\n (SELECT @rn := 0) t2\n ) mm where rowId &lt;= 4\n )b\n where a.Date between date_add( curdate(), interval -6 day) and curdate()\n) l left outer join\n(\n select app_name, DATE(audit_date) audit_date_1 ,count(*) ct from fn_audit_log a, fn_app b\n where user_id = [USER_ID]\n and audit_date &gt; date_add( curdate(), interval -6 day)\n and activity_cd in (\'tab_access\', \'app_access\')\n and a.affected_record_id = b.app_id\n and b.app_id &lt;&gt; 1\n and b.app_id in \n (\n SELECT \n app_id\n from\n (\n select @rn := @rn+1 AS rowId, app_id from \n (\n select app_id, ct from \n (\n select affected_record_id app_id, count(*) ct\n from fn_audit_log \n where audit_date &gt; date_add( curdate(), interval -6 day)\n and affected_record_id not in ( 1, -1)\n and activity_cd in (\'tab_access\', \'app_access\')\n and user_id = [USER_ID]\n group by affected_record_id\n ) a\n order by ct desc \n ) b,\n (SELECT @rn := 0) t2\n ) mm \n )\n group by app_name, DATE(audit_date)\n) r\non l.Date = r.audit_date_1\nand l.app_name = r.app_name</reportSQL>\n <reportTitle></reportTitle>\n <reportSubTitle></reportSubTitle>\n <reportHeader></reportHeader>\n <frozenColumns>0</frozenColumns>\n <emptyMessage>Your Search didn\'t yield any results.</emptyMessage>\n <dataGridAlign>left</dataGridAlign>\n <reportFooter></reportFooter>\n <numFormCols>1</numFormCols>\n <displayOptions>NNNNNNN</displayOptions>\n <dataContainerHeight>100</dataContainerHeight>\n <dataContainerWidth>100</dataContainerWidth>\n <allowSchedule>N</allowSchedule>\n <multiGroupColumn>N</multiGroupColumn>\n <topDown>N</topDown>\n <sizedByContent>N</sizedByContent>\n <comment>N|</comment>\n <dataSourceList>\n <dataSource tableId=\"du0\">\n <tableName>DUAL</tableName>\n <tablePK></tablePK>\n <displayName>DUAL</displayName>\n <dataColumnList>\n <dataColumn colId=\"audit_date\">\n <tableId>du0</tableId>\n <dbColName>l.date</dbColName>\n <colName>l.date</colName>\n <displayName>audit_date_1</displayName>\n <displayWidth>10</displayWidth>\n <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n <displayAlignment>Left</displayAlignment>\n <orderSeq>1</orderSeq>\n <visible>true</visible>\n <calculated>true</calculated>\n <colType>VARCHAR2</colType>\n <groupBreak>false</groupBreak>\n <colOnChart>LEGEND</colOnChart>\n <chartSeq>1</chartSeq>\n <chartColor></chartColor>\n <chartLineType></chartLineType>\n <chartSeries>false</chartSeries>\n <dbColType>VARCHAR2</dbColType>\n <chartGroup></chartGroup>\n <yAxis></yAxis>\n </dataColumn>\n <dataColumn colId=\"app_id\">\n <tableId>du0</tableId>\n <dbColName>app_id</dbColName>\n <colName>app_id</colName>\n <displayName>app_id</displayName>\n <displayWidth>10</displayWidth>\n <displayAlignment>Left</displayAlignment>\n <orderSeq>2</orderSeq>\n <visible>true</visible>\n <calculated>true</calculated>\n <colType>VARCHAR2</colType>\n <groupBreak>false</groupBreak>\n <dbColType>VARCHAR2</dbColType>\n </dataColumn>\n <dataColumn colId=\"app_name\">\n <tableId>du0</tableId>\n <dbColName>IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name)</dbColName>\n <colName>IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name)</colName>\n <displayName>app_name</displayName>\n <displayWidth>10</displayWidth>\n <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n <displayAlignment>Left</displayAlignment>\n <orderSeq>3</orderSeq>\n <visible>true</visible>\n <calculated>true</calculated>\n <colType>VARCHAR2</colType>\n <groupBreak>false</groupBreak>\n <chartSeq>2</chartSeq>\n <chartColor></chartColor>\n <chartLineType></chartLineType>\n <chartSeries>true</chartSeries>\n <dbColType>VARCHAR2</dbColType>\n <chartGroup></chartGroup>\n <yAxis></yAxis>\n </dataColumn>\n <dataColumn colId=\"ct\">\n <tableId>du0</tableId>\n <dbColName>IFNULL(r.ct,0)</dbColName>\n <colName>IFNULL(r.ct,0)</colName>\n <displayName>ct</displayName>\n <displayWidth>10</displayWidth>\n <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n <displayAlignment>Left</displayAlignment>\n <orderSeq>4</orderSeq>\n <visible>true</visible>\n <calculated>true</calculated>\n <colType>VARCHAR2</colType>\n <groupBreak>false</groupBreak>\n <colOnChart>0</colOnChart>\n <chartSeq>1</chartSeq>\n <chartColor></chartColor>\n <chartLineType></chartLineType>\n <chartSeries>false</chartSeries>\n <dbColType>VARCHAR2</dbColType>\n <chartGroup></chartGroup>\n <yAxis></yAxis>\n </dataColumn>\n </dataColumnList>\n </dataSource>\n </dataSourceList>\n <reportInNewWindow>false</reportInNewWindow>\n <displayFolderTree>false</displayFolderTree>\n <maxRowsInExcelDownload>500</maxRowsInExcelDownload>\n <chartAdditionalOptions>\n <chartOrientation>vertical</chartOrientation>\n <hidechartLegend>N</hidechartLegend>\n <legendPosition>bottom</legendPosition>\n <labelAngle>up90</labelAngle>\n <rangeAxisUpperLimit></rangeAxisUpperLimit>\n <rangeAxisLowerLimit></rangeAxisLowerLimit>\n <animate>true</animate>\n <animateAnimatedChart>true</animateAnimatedChart>\n <stacked>true</stacked>\n <barControls>false</barControls>\n <xAxisDateType>false</xAxisDateType>\n <lessXaxisTickers>false</lessXaxisTickers>\n <timeAxis>true</timeAxis>\n <logScale>false</logScale>\n <topMargin>30</topMargin>\n <bottomMargin>50</bottomMargin>\n <rightMargin>60</rightMargin>\n <leftMargin>100</leftMargin>\n </chartAdditionalOptions>\n <folderId>NULL</folderId>\n <isOneTimeScheduleAllowed>N</isOneTimeScheduleAllowed>\n <isHourlyScheduleAllowed>N</isHourlyScheduleAllowed>\n <isDailyScheduleAllowed>N</isDailyScheduleAllowed>\n <isDailyMFScheduleAllowed>N</isDailyMFScheduleAllowed>\n <isWeeklyScheduleAllowed>N</isWeeklyScheduleAllowed>\n <isMonthlyScheduleAllowed>N</isMonthlyScheduleAllowed>\n</customReport>\n',1,'2019-08-08 08:43:27',1,'2019-08-08 08:43:27','','N',1,NULL,'N','N'),(18,'Application Usage bar Wid','','Y','<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<customReport pageSize=\"200\" reportType=\"Linear\">\n <reportName>Application Usage Line Wid</reportName>\n <reportDescr></reportDescr>\n <dbInfo>local</dbInfo>\n <dbType>mysql</dbType>\n <chartType>TimeSeriesChart</chartType>\n <chartMultiSeries>N</chartMultiSeries>\n <chartWidth>700</chartWidth>\n <chartHeight>300</chartHeight>\n <showChartTitle>false</showChartTitle>\n <public>false</public>\n <hideFormFieldAfterRun>false</hideFormFieldAfterRun>\n <createId>27</createId>\n <createDate>2017-01-28-05:00</createDate>\n <reportSQL>SELECT \n l.date audit_date, \n IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name) app_name, \n IFNULL(r.ct,0) ct \nfrom\n(\n select a.Date, app_id, app_name\n from (\n select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as Date\n from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a\n cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b\n cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c\n ) a, \n (\n SELECT \n app_id, app_name\n from\n (\n select @rn := @rn+1 AS rowId, app_id, app_name from \n (\n select app_id, app_name, ct from \n (\n select affected_record_id, count(*) ct\n from fn_audit_log l\n where audit_date &gt; date_add( curdate(), interval -30 day)\n and affected_record_id not in ( 1, -1)\n and activity_cd in (\'tab_access\', \'app_access\')\n and user_id = [USER_ID]\n group by affected_record_id\n ) a, fn_app f\n where a.affected_record_id = f.app_id\n order by ct desc \n ) b,\n (SELECT @rn := 0) t2\n ) mm where rowId &lt;= 4\n )b\n where a.Date between date_add( curdate(), interval -30 day) and curdate()\n) l left outer join\n(\n select app_name, DATE(audit_date) audit_date_1 ,count(*) ct from fn_audit_log a, fn_app b\n where user_id = [USER_ID]\n and audit_date &gt; date_add( curdate(), interval -30 day)\n and activity_cd in (\'tab_access\', \'app_access\')\n and a.affected_record_id = b.app_id\n and b.app_id &lt;&gt; 1\n and b.app_id in \n (\n SELECT \n app_id\n from\n (\n select @rn := @rn+1 AS rowId, app_id from \n (\n select app_id, ct from \n (\n select affected_record_id app_id, count(*) ct\n from fn_audit_log \n where audit_date &gt; date_add( curdate(), interval -30 day)\n and affected_record_id not in ( 1, -1)\n and activity_cd in (\'tab_access\', \'app_access\')\n and user_id = [USER_ID]\n group by affected_record_id\n ) a\n order by ct desc \n ) b,\n (SELECT @rn := 0) t2\n ) mm \n )\n group by app_name, DATE(audit_date)\n) r\non l.Date = r.audit_date_1\nand l.app_name = r.app_name</reportSQL>\n <reportTitle></reportTitle>\n <reportSubTitle></reportSubTitle>\n <reportHeader></reportHeader>\n <frozenColumns>0</frozenColumns>\n <emptyMessage>Your Search didn\'t yield any results.</emptyMessage>\n <dataGridAlign>left</dataGridAlign>\n <reportFooter></reportFooter>\n <numFormCols>1</numFormCols>\n <displayOptions>NNNNNNN</displayOptions>\n <dataContainerHeight>100</dataContainerHeight>\n <dataContainerWidth>100</dataContainerWidth>\n <allowSchedule>N</allowSchedule>\n <multiGroupColumn>N</multiGroupColumn>\n <topDown>N</topDown>\n <sizedByContent>N</sizedByContent>\n <comment>N|</comment>\n <dataSourceList>\n <dataSource tableId=\"du0\">\n <tableName>DUAL</tableName>\n <tablePK></tablePK>\n <displayName>DUAL</displayName>\n <dataColumnList>\n <dataColumn colId=\"audit_date\">\n <tableId>du0</tableId>\n <dbColName>l.date</dbColName>\n <colName>l.date</colName>\n <displayName>audit_date_1</displayName>\n <displayWidth>10</displayWidth>\n <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n <displayAlignment>Left</displayAlignment>\n <orderSeq>1</orderSeq>\n <visible>true</visible>\n <calculated>true</calculated>\n <colType>VARCHAR2</colType>\n <groupBreak>false</groupBreak>\n <colOnChart>LEGEND</colOnChart>\n <chartSeq>1</chartSeq>\n <chartSeries>false</chartSeries>\n <isRangeAxisFilled>false</isRangeAxisFilled>\n <drillinPoPUp>false</drillinPoPUp>\n <dbColType>VARCHAR2</dbColType>\n <enhancedPagination>false</enhancedPagination>\n </dataColumn>\n <dataColumn colId=\"app_name\">\n <tableId>du0</tableId>\n <dbColName>IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name)</dbColName>\n <colName>IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name)</colName>\n <displayName>app_name</displayName>\n <displayWidth>10</displayWidth>\n <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n <displayAlignment>Left</displayAlignment>\n <orderSeq>2</orderSeq>\n <visible>true</visible>\n <calculated>true</calculated>\n <colType>VARCHAR2</colType>\n <groupBreak>false</groupBreak>\n <colOnChart>0</colOnChart>\n <chartSeq>2</chartSeq>\n <chartColor></chartColor>\n <chartLineType></chartLineType>\n <chartSeries>true</chartSeries>\n <isRangeAxisFilled>false</isRangeAxisFilled>\n <drillinPoPUp>false</drillinPoPUp>\n <dbColType>VARCHAR2</dbColType>\n <chartGroup></chartGroup>\n <yAxis></yAxis>\n <enhancedPagination>false</enhancedPagination>\n </dataColumn>\n <dataColumn colId=\"ct\">\n <tableId>du0</tableId>\n <dbColName>IFNULL(r.ct,0)</dbColName>\n <colName>IFNULL(r.ct,0)</colName>\n <displayName>ct</displayName>\n <displayWidth>10</displayWidth>\n <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n <displayAlignment>Left</displayAlignment>\n <orderSeq>3</orderSeq>\n <visible>true</visible>\n <calculated>true</calculated>\n <colType>VARCHAR2</colType>\n <groupBreak>false</groupBreak>\n <colOnChart>0</colOnChart>\n <chartSeq>1</chartSeq>\n <chartColor></chartColor>\n <chartLineType></chartLineType>\n <chartSeries>false</chartSeries>\n <isRangeAxisFilled>false</isRangeAxisFilled>\n <drillinPoPUp>false</drillinPoPUp>\n <dbColType>VARCHAR2</dbColType>\n <chartGroup></chartGroup>\n <yAxis></yAxis>\n <enhancedPagination>false</enhancedPagination>\n </dataColumn>\n </dataColumnList>\n </dataSource>\n </dataSourceList>\n <reportInNewWindow>false</reportInNewWindow>\n <displayFolderTree>false</displayFolderTree>\n <maxRowsInExcelDownload>500</maxRowsInExcelDownload>\n <chartAdditionalOptions>\n <chartOrientation>vertical</chartOrientation>\n <hidechartLegend>N</hidechartLegend>\n <legendPosition>bottom</legendPosition>\n <labelAngle>down45</labelAngle>\n <animate>true</animate>\n <animateAnimatedChart>true</animateAnimatedChart>\n <stacked>true</stacked>\n <barControls>false</barControls>\n <xAxisDateType>false</xAxisDateType>\n <lessXaxisTickers>false</lessXaxisTickers>\n <timeAxis>true</timeAxis>\n <timeSeriesRender>line</timeSeriesRender>\n <multiSeries>false</multiSeries>\n <showXAxisLabel>false</showXAxisLabel>\n <addXAxisTickers>false</addXAxisTickers>\n <topMargin>30</topMargin>\n <bottomMargin>50</bottomMargin>\n <rightMargin>60</rightMargin>\n <leftMargin>100</leftMargin>\n </chartAdditionalOptions>\n <folderId>NULL</folderId>\n <drillURLInPoPUpPresent>false</drillURLInPoPUpPresent>\n <isOneTimeScheduleAllowed>N</isOneTimeScheduleAllowed>\n <isHourlyScheduleAllowed>N</isHourlyScheduleAllowed>\n <isDailyScheduleAllowed>N</isDailyScheduleAllowed>\n <isDailyMFScheduleAllowed>N</isDailyMFScheduleAllowed>\n <isWeeklyScheduleAllowed>N</isWeeklyScheduleAllowed>\n <isMonthlyScheduleAllowed>N</isMonthlyScheduleAllowed>\n</customReport>\n',1,'2019-08-08 08:43:27',1,'2019-08-08 08:43:27','','N',1,NULL,'N','N'),(20,'Average time spend on portal','','Y','<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<customReport pageSize=\"200\" reportType=\"Linear\">\n <reportName>Average time spend on portal</reportName>\n <reportDescr></reportDescr>\n <dbInfo>local</dbInfo>\n <dbType>mysql</dbType>\n <chartType>TimeSeriesChart</chartType>\n <chartMultiSeries>N</chartMultiSeries>\n <chartWidth>700</chartWidth>\n <chartHeight>300</chartHeight>\n <showChartTitle>false</showChartTitle>\n <public>true</public>\n <hideFormFieldAfterRun>false</hideFormFieldAfterRun>\n <createId>27</createId>\n <createDate>2017-01-28-05:00</createDate>\n <reportSQL>SELECT \n d.dat audit_date, \n \'# of Minutes\' app, \n coalesce(diff, null, 0) mins \nfrom\n(\n select * from\n (\n select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as dat\n from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a\n cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b\n cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c \n ) d where d.dat between date_add( curdate(), interval -30 day) and curdate()\n) d left outer join\n(\n select dat, mi, mx, TIMESTAMPDIFF(MINUTE, coalesce(mi, null, 0), coalesce(mx, null, 0)) + 30 diff\n from\n (\n select DATE(audit_date) dat, coalesce(min(audit_date), null, 0) mi, coalesce(max(audit_date), null, 0) mx\n from fn_audit_log \n where user_id = [USER_ID] and DATE(audit_date) between CURDATE()-300 and CURDATE()\n group by DATE(audit_date)\n ) a\n) a\non a.dat = d.dat\norder by 1</reportSQL>\n <reportTitle></reportTitle>\n <reportSubTitle></reportSubTitle>\n <reportHeader></reportHeader>\n <frozenColumns>0</frozenColumns>\n <emptyMessage>Your Search didn\'t yield any results.</emptyMessage>\n <dataGridAlign>left</dataGridAlign>\n <reportFooter></reportFooter>\n <numFormCols>1</numFormCols>\n <displayOptions>NNNNNNN</displayOptions>\n <dataContainerHeight>100</dataContainerHeight>\n <dataContainerWidth>100</dataContainerWidth>\n <allowSchedule>N</allowSchedule>\n <multiGroupColumn>N</multiGroupColumn>\n <topDown>N</topDown>\n <sizedByContent>N</sizedByContent>\n <comment>N|</comment>\n <dataSourceList>\n <dataSource tableId=\"du0\">\n <tableName>DUAL</tableName>\n <tablePK></tablePK>\n <displayName>DUAL</displayName>\n <dataColumnList>\n <dataColumn colId=\"audit_date\">\n <tableId>du0</tableId>\n <dbColName>d.dat</dbColName>\n <colName>d.dat</colName>\n <displayName>audit_date_1</displayName>\n <displayWidth>10</displayWidth>\n <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n <displayAlignment>Left</displayAlignment>\n <orderSeq>1</orderSeq>\n <visible>true</visible>\n <calculated>true</calculated>\n <colType>VARCHAR2</colType>\n <groupBreak>false</groupBreak>\n <colOnChart>LEGEND</colOnChart>\n <chartSeq>1</chartSeq>\n <chartSeries>false</chartSeries>\n <isRangeAxisFilled>false</isRangeAxisFilled>\n <drillinPoPUp>false</drillinPoPUp>\n <dbColType>VARCHAR2</dbColType>\n <enhancedPagination>false</enhancedPagination>\n </dataColumn>\n <dataColumn colId=\"app\">\n <tableId>du0</tableId>\n <dbColName>\'# of Minutes\'</dbColName>\n <colName>\'# of Minutes\'</colName>\n <displayName>app</displayName>\n <displayWidth>10</displayWidth>\n <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n <displayAlignment>Left</displayAlignment>\n <orderSeq>2</orderSeq>\n <visible>true</visible>\n <calculated>true</calculated>\n <colType>VARCHAR2</colType>\n <groupBreak>false</groupBreak>\n <chartSeries>true</chartSeries>\n <dbColType>VARCHAR2</dbColType>\n </dataColumn>\n <dataColumn colId=\"mins\">\n <tableId>du0</tableId>\n <dbColName>coalesce(diff, null, 0)</dbColName>\n <colName>coalesce(diff, null, 0)</colName>\n <displayName>mins</displayName>\n <displayWidth>10</displayWidth>\n <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n <displayAlignment>Left</displayAlignment>\n <orderSeq>3</orderSeq>\n <visible>true</visible>\n <calculated>true</calculated>\n <colType>VARCHAR2</colType>\n <groupBreak>false</groupBreak>\n <colOnChart>0</colOnChart>\n <chartSeq>1</chartSeq>\n <chartColor></chartColor>\n <chartLineType></chartLineType>\n <chartSeries>false</chartSeries>\n <dbColType>VARCHAR2</dbColType>\n <chartGroup></chartGroup>\n <yAxis></yAxis>\n </dataColumn>\n </dataColumnList>\n </dataSource>\n </dataSourceList>\n <reportInNewWindow>false</reportInNewWindow>\n <displayFolderTree>false</displayFolderTree>\n <maxRowsInExcelDownload>500</maxRowsInExcelDownload>\n <chartAdditionalOptions>\n <chartOrientation>vertical</chartOrientation>\n <hidechartLegend>N</hidechartLegend>\n <legendPosition>bottom</legendPosition>\n <labelAngle>down45</labelAngle>\n <animate>true</animate>\n <animateAnimatedChart>true</animateAnimatedChart>\n <stacked>true</stacked>\n <barControls>false</barControls>\n <xAxisDateType>false</xAxisDateType>\n <lessXaxisTickers>false</lessXaxisTickers>\n <timeAxis>true</timeAxis>\n <timeSeriesRender>line</timeSeriesRender>\n <multiSeries>false</multiSeries>\n <showXAxisLabel>false</showXAxisLabel>\n <addXAxisTickers>false</addXAxisTickers>\n <topMargin>30</topMargin>\n <bottomMargin>50</bottomMargin>\n <rightMargin>60</rightMargin>\n <leftMargin>100</leftMargin>\n </chartAdditionalOptions>\n <folderId>NULL</folderId>\n <drillURLInPoPUpPresent>false</drillURLInPoPUpPresent>\n <isOneTimeScheduleAllowed>N</isOneTimeScheduleAllowed>\n <isHourlyScheduleAllowed>N</isHourlyScheduleAllowed>\n <isDailyScheduleAllowed>N</isDailyScheduleAllowed>\n <isDailyMFScheduleAllowed>N</isDailyMFScheduleAllowed>\n <isWeeklyScheduleAllowed>N</isWeeklyScheduleAllowed>\n <isMonthlyScheduleAllowed>N</isMonthlyScheduleAllowed>\n</customReport>\n',1,'2019-08-08 08:43:27',1,'2019-08-08 08:43:27','','N',1,NULL,'N','N');
+INSERT INTO `cr_report` (`rep_id`, `title`, `descr`, `public_yn`, `report_xml`, `create_id`, `create_date`, `maint_id`, `maint_date`, `menu_id`, `menu_approved_yn`, `owner_id`, `folder_id`, `dashboard_type_yn`, `dashboard_yn`) VALUES (15,'Application Usage Report Wid','',1,'<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<customReport pageSize=\"200\" reportType=\"Linear\">\n <reportName>Application Usage Report Wid</reportName>\n <reportDescr></reportDescr>\n <dbInfo>local</dbInfo>\n <dbType>mysql</dbType>\n <chartType>BarChart3D</chartType>\n <chartWidth>700</chartWidth>\n <chartHeight>500</chartHeight>\n <showChartTitle>false</showChartTitle>\n <public>false</public>\n <hideFormFieldAfterRun>false</hideFormFieldAfterRun>\n <createId>27</createId>\n <createDate>2017-01-28-05:00</createDate>\n <reportSQL>SELECT \n l.date audit_date, \n app_id app_id, \n IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name) app_name, \n IFNULL(r.ct,0) ct \nfrom\n(\n select a.Date, app_id, app_name\n from (\n select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as Date\n from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a\n cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b\n cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c\n ) a, \n (\n SELECT \n app_id, app_name\n from\n (\n select @rn := @rn+1 AS rowId, app_id, app_name from \n (\n select app_id, app_name, ct from \n (\n select affected_record_id, count(*) ct\n from fn_audit_log l\n where audit_date &gt; date_add( curdate(), interval -6 day)\n and affected_record_id not in ( 1, -1)\n and activity_cd in (\'tab_access\', \'app_access\')\n and user_id = [USER_ID]\n group by affected_record_id\n ) a, fn_app f\n where a.affected_record_id = f.app_id\n order by ct desc \n ) b,\n (SELECT @rn := 0) t2\n ) mm where rowId &lt;= 4\n )b\n where a.Date between date_add( curdate(), interval -6 day) and curdate()\n) l left outer join\n(\n select app_name, DATE(audit_date) audit_date_1 ,count(*) ct from fn_audit_log a, fn_app b\n where user_id = [USER_ID]\n and audit_date &gt; date_add( curdate(), interval -6 day)\n and activity_cd in (\'tab_access\', \'app_access\')\n and a.affected_record_id = b.app_id\n and b.app_id &lt;&gt; 1\n and b.app_id in \n (\n SELECT \n app_id\n from\n (\n select @rn := @rn+1 AS rowId, app_id from \n (\n select app_id, ct from \n (\n select affected_record_id app_id, count(*) ct\n from fn_audit_log \n where audit_date &gt; date_add( curdate(), interval -6 day)\n and affected_record_id not in ( 1, -1)\n and activity_cd in (\'tab_access\', \'app_access\')\n and user_id = [USER_ID]\n group by affected_record_id\n ) a\n order by ct desc \n ) b,\n (SELECT @rn := 0) t2\n ) mm \n )\n group by app_name, DATE(audit_date)\n) r\non l.Date = r.audit_date_1\nand l.app_name = r.app_name</reportSQL>\n <reportTitle></reportTitle>\n <reportSubTitle></reportSubTitle>\n <reportHeader></reportHeader>\n <frozenColumns>0</frozenColumns>\n <emptyMessage>Your Search didn\'t yield any results.</emptyMessage>\n <dataGridAlign>left</dataGridAlign>\n <reportFooter></reportFooter>\n <numFormCols>1</numFormCols>\n <displayOptions>NNNNNNN</displayOptions>\n <dataContainerHeight>100</dataContainerHeight>\n <dataContainerWidth>100</dataContainerWidth>\n <allowSchedule>N</allowSchedule>\n <multiGroupColumn>N</multiGroupColumn>\n <topDown>N</topDown>\n <sizedByContent>N</sizedByContent>\n <comment>N|</comment>\n <dataSourceList>\n <dataSource tableId=\"du0\">\n <tableName>DUAL</tableName>\n <tablePK></tablePK>\n <displayName>DUAL</displayName>\n <dataColumnList>\n <dataColumn colId=\"audit_date\">\n <tableId>du0</tableId>\n <dbColName>l.date</dbColName>\n <colName>l.date</colName>\n <displayName>audit_date_1</displayName>\n <displayWidth>10</displayWidth>\n <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n <displayAlignment>Left</displayAlignment>\n <orderSeq>1</orderSeq>\n <visible>true</visible>\n <calculated>true</calculated>\n <colType>VARCHAR2</colType>\n <groupBreak>false</groupBreak>\n <colOnChart>LEGEND</colOnChart>\n <chartSeq>1</chartSeq>\n <chartColor></chartColor>\n <chartLineType></chartLineType>\n <chartSeries>false</chartSeries>\n <dbColType>VARCHAR2</dbColType>\n <chartGroup></chartGroup>\n <yAxis></yAxis>\n </dataColumn>\n <dataColumn colId=\"app_id\">\n <tableId>du0</tableId>\n <dbColName>app_id</dbColName>\n <colName>app_id</colName>\n <displayName>app_id</displayName>\n <displayWidth>10</displayWidth>\n <displayAlignment>Left</displayAlignment>\n <orderSeq>2</orderSeq>\n <visible>true</visible>\n <calculated>true</calculated>\n <colType>VARCHAR2</colType>\n <groupBreak>false</groupBreak>\n <dbColType>VARCHAR2</dbColType>\n </dataColumn>\n <dataColumn colId=\"app_name\">\n <tableId>du0</tableId>\n <dbColName>IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name)</dbColName>\n <colName>IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name)</colName>\n <displayName>app_name</displayName>\n <displayWidth>10</displayWidth>\n <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n <displayAlignment>Left</displayAlignment>\n <orderSeq>3</orderSeq>\n <visible>true</visible>\n <calculated>true</calculated>\n <colType>VARCHAR2</colType>\n <groupBreak>false</groupBreak>\n <chartSeq>2</chartSeq>\n <chartColor></chartColor>\n <chartLineType></chartLineType>\n <chartSeries>true</chartSeries>\n <dbColType>VARCHAR2</dbColType>\n <chartGroup></chartGroup>\n <yAxis></yAxis>\n </dataColumn>\n <dataColumn colId=\"ct\">\n <tableId>du0</tableId>\n <dbColName>IFNULL(r.ct,0)</dbColName>\n <colName>IFNULL(r.ct,0)</colName>\n <displayName>ct</displayName>\n <displayWidth>10</displayWidth>\n <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n <displayAlignment>Left</displayAlignment>\n <orderSeq>4</orderSeq>\n <visible>true</visible>\n <calculated>true</calculated>\n <colType>VARCHAR2</colType>\n <groupBreak>false</groupBreak>\n <colOnChart>0</colOnChart>\n <chartSeq>1</chartSeq>\n <chartColor></chartColor>\n <chartLineType></chartLineType>\n <chartSeries>false</chartSeries>\n <dbColType>VARCHAR2</dbColType>\n <chartGroup></chartGroup>\n <yAxis></yAxis>\n </dataColumn>\n </dataColumnList>\n </dataSource>\n </dataSourceList>\n <reportInNewWindow>false</reportInNewWindow>\n <displayFolderTree>false</displayFolderTree>\n <maxRowsInExcelDownload>500</maxRowsInExcelDownload>\n <chartAdditionalOptions>\n <chartOrientation>vertical</chartOrientation>\n <hidechartLegend>N</hidechartLegend>\n <legendPosition>bottom</legendPosition>\n <labelAngle>up90</labelAngle>\n <rangeAxisUpperLimit></rangeAxisUpperLimit>\n <rangeAxisLowerLimit></rangeAxisLowerLimit>\n <animate>true</animate>\n <animateAnimatedChart>true</animateAnimatedChart>\n <stacked>true</stacked>\n <barControls>false</barControls>\n <xAxisDateType>false</xAxisDateType>\n <lessXaxisTickers>false</lessXaxisTickers>\n <timeAxis>true</timeAxis>\n <logScale>false</logScale>\n <topMargin>30</topMargin>\n <bottomMargin>50</bottomMargin>\n <rightMargin>60</rightMargin>\n <leftMargin>100</leftMargin>\n </chartAdditionalOptions>\n <folderId>NULL</folderId>\n <isOneTimeScheduleAllowed>N</isOneTimeScheduleAllowed>\n <isHourlyScheduleAllowed>N</isHourlyScheduleAllowed>\n <isDailyScheduleAllowed>N</isDailyScheduleAllowed>\n <isDailyMFScheduleAllowed>N</isDailyMFScheduleAllowed>\n <isWeeklyScheduleAllowed>N</isWeeklyScheduleAllowed>\n <isMonthlyScheduleAllowed>N</isMonthlyScheduleAllowed>\n</customReport>\n',1,'2019-08-08 08:43:27',1,'2019-08-08 08:43:27','',0,1,NULL,0,0),(18,'Application Usage bar Wid','',1,'<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<customReport pageSize=\"200\" reportType=\"Linear\">\n <reportName>Application Usage Line Wid</reportName>\n <reportDescr></reportDescr>\n <dbInfo>local</dbInfo>\n <dbType>mysql</dbType>\n <chartType>TimeSeriesChart</chartType>\n <chartMultiSeries>N</chartMultiSeries>\n <chartWidth>700</chartWidth>\n <chartHeight>300</chartHeight>\n <showChartTitle>false</showChartTitle>\n <public>false</public>\n <hideFormFieldAfterRun>false</hideFormFieldAfterRun>\n <createId>27</createId>\n <createDate>2017-01-28-05:00</createDate>\n <reportSQL>SELECT \n l.date audit_date, \n IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name) app_name, \n IFNULL(r.ct,0) ct \nfrom\n(\n select a.Date, app_id, app_name\n from (\n select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as Date\n from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a\n cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b\n cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c\n ) a, \n (\n SELECT \n app_id, app_name\n from\n (\n select @rn := @rn+1 AS rowId, app_id, app_name from \n (\n select app_id, app_name, ct from \n (\n select affected_record_id, count(*) ct\n from fn_audit_log l\n where audit_date &gt; date_add( curdate(), interval -30 day)\n and affected_record_id not in ( 1, -1)\n and activity_cd in (\'tab_access\', \'app_access\')\n and user_id = [USER_ID]\n group by affected_record_id\n ) a, fn_app f\n where a.affected_record_id = f.app_id\n order by ct desc \n ) b,\n (SELECT @rn := 0) t2\n ) mm where rowId &lt;= 4\n )b\n where a.Date between date_add( curdate(), interval -30 day) and curdate()\n) l left outer join\n(\n select app_name, DATE(audit_date) audit_date_1 ,count(*) ct from fn_audit_log a, fn_app b\n where user_id = [USER_ID]\n and audit_date &gt; date_add( curdate(), interval -30 day)\n and activity_cd in (\'tab_access\', \'app_access\')\n and a.affected_record_id = b.app_id\n and b.app_id &lt;&gt; 1\n and b.app_id in \n (\n SELECT \n app_id\n from\n (\n select @rn := @rn+1 AS rowId, app_id from \n (\n select app_id, ct from \n (\n select affected_record_id app_id, count(*) ct\n from fn_audit_log \n where audit_date &gt; date_add( curdate(), interval -30 day)\n and affected_record_id not in ( 1, -1)\n and activity_cd in (\'tab_access\', \'app_access\')\n and user_id = [USER_ID]\n group by affected_record_id\n ) a\n order by ct desc \n ) b,\n (SELECT @rn := 0) t2\n ) mm \n )\n group by app_name, DATE(audit_date)\n) r\non l.Date = r.audit_date_1\nand l.app_name = r.app_name</reportSQL>\n <reportTitle></reportTitle>\n <reportSubTitle></reportSubTitle>\n <reportHeader></reportHeader>\n <frozenColumns>0</frozenColumns>\n <emptyMessage>Your Search didn\'t yield any results.</emptyMessage>\n <dataGridAlign>left</dataGridAlign>\n <reportFooter></reportFooter>\n <numFormCols>1</numFormCols>\n <displayOptions>NNNNNNN</displayOptions>\n <dataContainerHeight>100</dataContainerHeight>\n <dataContainerWidth>100</dataContainerWidth>\n <allowSchedule>N</allowSchedule>\n <multiGroupColumn>N</multiGroupColumn>\n <topDown>N</topDown>\n <sizedByContent>N</sizedByContent>\n <comment>N|</comment>\n <dataSourceList>\n <dataSource tableId=\"du0\">\n <tableName>DUAL</tableName>\n <tablePK></tablePK>\n <displayName>DUAL</displayName>\n <dataColumnList>\n <dataColumn colId=\"audit_date\">\n <tableId>du0</tableId>\n <dbColName>l.date</dbColName>\n <colName>l.date</colName>\n <displayName>audit_date_1</displayName>\n <displayWidth>10</displayWidth>\n <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n <displayAlignment>Left</displayAlignment>\n <orderSeq>1</orderSeq>\n <visible>true</visible>\n <calculated>true</calculated>\n <colType>VARCHAR2</colType>\n <groupBreak>false</groupBreak>\n <colOnChart>LEGEND</colOnChart>\n <chartSeq>1</chartSeq>\n <chartSeries>false</chartSeries>\n <isRangeAxisFilled>false</isRangeAxisFilled>\n <drillinPoPUp>false</drillinPoPUp>\n <dbColType>VARCHAR2</dbColType>\n <enhancedPagination>false</enhancedPagination>\n </dataColumn>\n <dataColumn colId=\"app_name\">\n <tableId>du0</tableId>\n <dbColName>IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name)</dbColName>\n <colName>IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name)</colName>\n <displayName>app_name</displayName>\n <displayWidth>10</displayWidth>\n <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n <displayAlignment>Left</displayAlignment>\n <orderSeq>2</orderSeq>\n <visible>true</visible>\n <calculated>true</calculated>\n <colType>VARCHAR2</colType>\n <groupBreak>false</groupBreak>\n <colOnChart>0</colOnChart>\n <chartSeq>2</chartSeq>\n <chartColor></chartColor>\n <chartLineType></chartLineType>\n <chartSeries>true</chartSeries>\n <isRangeAxisFilled>false</isRangeAxisFilled>\n <drillinPoPUp>false</drillinPoPUp>\n <dbColType>VARCHAR2</dbColType>\n <chartGroup></chartGroup>\n <yAxis></yAxis>\n <enhancedPagination>false</enhancedPagination>\n </dataColumn>\n <dataColumn colId=\"ct\">\n <tableId>du0</tableId>\n <dbColName>IFNULL(r.ct,0)</dbColName>\n <colName>IFNULL(r.ct,0)</colName>\n <displayName>ct</displayName>\n <displayWidth>10</displayWidth>\n <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n <displayAlignment>Left</displayAlignment>\n <orderSeq>3</orderSeq>\n <visible>true</visible>\n <calculated>true</calculated>\n <colType>VARCHAR2</colType>\n <groupBreak>false</groupBreak>\n <colOnChart>0</colOnChart>\n <chartSeq>1</chartSeq>\n <chartColor></chartColor>\n <chartLineType></chartLineType>\n <chartSeries>false</chartSeries>\n <isRangeAxisFilled>false</isRangeAxisFilled>\n <drillinPoPUp>false</drillinPoPUp>\n <dbColType>VARCHAR2</dbColType>\n <chartGroup></chartGroup>\n <yAxis></yAxis>\n <enhancedPagination>false</enhancedPagination>\n </dataColumn>\n </dataColumnList>\n </dataSource>\n </dataSourceList>\n <reportInNewWindow>false</reportInNewWindow>\n <displayFolderTree>false</displayFolderTree>\n <maxRowsInExcelDownload>500</maxRowsInExcelDownload>\n <chartAdditionalOptions>\n <chartOrientation>vertical</chartOrientation>\n <hidechartLegend>N</hidechartLegend>\n <legendPosition>bottom</legendPosition>\n <labelAngle>down45</labelAngle>\n <animate>true</animate>\n <animateAnimatedChart>true</animateAnimatedChart>\n <stacked>true</stacked>\n <barControls>false</barControls>\n <xAxisDateType>false</xAxisDateType>\n <lessXaxisTickers>false</lessXaxisTickers>\n <timeAxis>true</timeAxis>\n <timeSeriesRender>line</timeSeriesRender>\n <multiSeries>false</multiSeries>\n <showXAxisLabel>false</showXAxisLabel>\n <addXAxisTickers>false</addXAxisTickers>\n <topMargin>30</topMargin>\n <bottomMargin>50</bottomMargin>\n <rightMargin>60</rightMargin>\n <leftMargin>100</leftMargin>\n </chartAdditionalOptions>\n <folderId>NULL</folderId>\n <drillURLInPoPUpPresent>false</drillURLInPoPUpPresent>\n <isOneTimeScheduleAllowed>N</isOneTimeScheduleAllowed>\n <isHourlyScheduleAllowed>N</isHourlyScheduleAllowed>\n <isDailyScheduleAllowed>N</isDailyScheduleAllowed>\n <isDailyMFScheduleAllowed>N</isDailyMFScheduleAllowed>\n <isWeeklyScheduleAllowed>N</isWeeklyScheduleAllowed>\n <isMonthlyScheduleAllowed>N</isMonthlyScheduleAllowed>\n</customReport>\n',1,'2019-08-08 08:43:27',1,'2019-08-08 08:43:27','',0,1,NULL,0,0),(20,'Average time spend on portal','',1,'<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<customReport pageSize=\"200\" reportType=\"Linear\">\n <reportName>Average time spend on portal</reportName>\n <reportDescr></reportDescr>\n <dbInfo>local</dbInfo>\n <dbType>mysql</dbType>\n <chartType>TimeSeriesChart</chartType>\n <chartMultiSeries>N</chartMultiSeries>\n <chartWidth>700</chartWidth>\n <chartHeight>300</chartHeight>\n <showChartTitle>false</showChartTitle>\n <public>true</public>\n <hideFormFieldAfterRun>false</hideFormFieldAfterRun>\n <createId>27</createId>\n <createDate>2017-01-28-05:00</createDate>\n <reportSQL>SELECT \n d.dat audit_date, \n \'# of Minutes\' app, \n coalesce(diff, null, 0) mins \nfrom\n(\n select * from\n (\n select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as dat\n from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a\n cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b\n cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c \n ) d where d.dat between date_add( curdate(), interval -30 day) and curdate()\n) d left outer join\n(\n select dat, mi, mx, TIMESTAMPDIFF(MINUTE, coalesce(mi, null, 0), coalesce(mx, null, 0)) + 30 diff\n from\n (\n select DATE(audit_date) dat, coalesce(min(audit_date), null, 0) mi, coalesce(max(audit_date), null, 0) mx\n from fn_audit_log \n where user_id = [USER_ID] and DATE(audit_date) between CURDATE()-300 and CURDATE()\n group by DATE(audit_date)\n ) a\n) a\non a.dat = d.dat\norder by 1</reportSQL>\n <reportTitle></reportTitle>\n <reportSubTitle></reportSubTitle>\n <reportHeader></reportHeader>\n <frozenColumns>0</frozenColumns>\n <emptyMessage>Your Search didn\'t yield any results.</emptyMessage>\n <dataGridAlign>left</dataGridAlign>\n <reportFooter></reportFooter>\n <numFormCols>1</numFormCols>\n <displayOptions>NNNNNNN</displayOptions>\n <dataContainerHeight>100</dataContainerHeight>\n <dataContainerWidth>100</dataContainerWidth>\n <allowSchedule>N</allowSchedule>\n <multiGroupColumn>N</multiGroupColumn>\n <topDown>N</topDown>\n <sizedByContent>N</sizedByContent>\n <comment>N|</comment>\n <dataSourceList>\n <dataSource tableId=\"du0\">\n <tableName>DUAL</tableName>\n <tablePK></tablePK>\n <displayName>DUAL</displayName>\n <dataColumnList>\n <dataColumn colId=\"audit_date\">\n <tableId>du0</tableId>\n <dbColName>d.dat</dbColName>\n <colName>d.dat</colName>\n <displayName>audit_date_1</displayName>\n <displayWidth>10</displayWidth>\n <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n <displayAlignment>Left</displayAlignment>\n <orderSeq>1</orderSeq>\n <visible>true</visible>\n <calculated>true</calculated>\n <colType>VARCHAR2</colType>\n <groupBreak>false</groupBreak>\n <colOnChart>LEGEND</colOnChart>\n <chartSeq>1</chartSeq>\n <chartSeries>false</chartSeries>\n <isRangeAxisFilled>false</isRangeAxisFilled>\n <drillinPoPUp>false</drillinPoPUp>\n <dbColType>VARCHAR2</dbColType>\n <enhancedPagination>false</enhancedPagination>\n </dataColumn>\n <dataColumn colId=\"app\">\n <tableId>du0</tableId>\n <dbColName>\'# of Minutes\'</dbColName>\n <colName>\'# of Minutes\'</colName>\n <displayName>app</displayName>\n <displayWidth>10</displayWidth>\n <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n <displayAlignment>Left</displayAlignment>\n <orderSeq>2</orderSeq>\n <visible>true</visible>\n <calculated>true</calculated>\n <colType>VARCHAR2</colType>\n <groupBreak>false</groupBreak>\n <chartSeries>true</chartSeries>\n <dbColType>VARCHAR2</dbColType>\n </dataColumn>\n <dataColumn colId=\"mins\">\n <tableId>du0</tableId>\n <dbColName>coalesce(diff, null, 0)</dbColName>\n <colName>coalesce(diff, null, 0)</colName>\n <displayName>mins</displayName>\n <displayWidth>10</displayWidth>\n <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n <displayAlignment>Left</displayAlignment>\n <orderSeq>3</orderSeq>\n <visible>true</visible>\n <calculated>true</calculated>\n <colType>VARCHAR2</colType>\n <groupBreak>false</groupBreak>\n <colOnChart>0</colOnChart>\n <chartSeq>1</chartSeq>\n <chartColor></chartColor>\n <chartLineType></chartLineType>\n <chartSeries>false</chartSeries>\n <dbColType>VARCHAR2</dbColType>\n <chartGroup></chartGroup>\n <yAxis></yAxis>\n </dataColumn>\n </dataColumnList>\n </dataSource>\n </dataSourceList>\n <reportInNewWindow>false</reportInNewWindow>\n <displayFolderTree>false</displayFolderTree>\n <maxRowsInExcelDownload>500</maxRowsInExcelDownload>\n <chartAdditionalOptions>\n <chartOrientation>vertical</chartOrientation>\n <hidechartLegend>N</hidechartLegend>\n <legendPosition>bottom</legendPosition>\n <labelAngle>down45</labelAngle>\n <animate>true</animate>\n <animateAnimatedChart>true</animateAnimatedChart>\n <stacked>true</stacked>\n <barControls>false</barControls>\n <xAxisDateType>false</xAxisDateType>\n <lessXaxisTickers>false</lessXaxisTickers>\n <timeAxis>true</timeAxis>\n <timeSeriesRender>line</timeSeriesRender>\n <multiSeries>false</multiSeries>\n <showXAxisLabel>false</showXAxisLabel>\n <addXAxisTickers>false</addXAxisTickers>\n <topMargin>30</topMargin>\n <bottomMargin>50</bottomMargin>\n <rightMargin>60</rightMargin>\n <leftMargin>100</leftMargin>\n </chartAdditionalOptions>\n <folderId>NULL</folderId>\n <drillURLInPoPUpPresent>false</drillURLInPoPUpPresent>\n <isOneTimeScheduleAllowed>N</isOneTimeScheduleAllowed>\n <isHourlyScheduleAllowed>N</isHourlyScheduleAllowed>\n <isDailyScheduleAllowed>N</isDailyScheduleAllowed>\n <isDailyMFScheduleAllowed>N</isDailyMFScheduleAllowed>\n <isWeeklyScheduleAllowed>N</isWeeklyScheduleAllowed>\n <isMonthlyScheduleAllowed>N</isMonthlyScheduleAllowed>\n</customReport>\n',1,'2019-08-08 08:43:27',1,'2019-08-08 08:43:27','',0,1,NULL,0,0);
LOCK TABLES `fn_app` WRITE;
/*!40000 ALTER TABLE `fn_app` DISABLE KEYS */;
-INSERT INTO `fn_app` (`app_Id`, `app_name`, `app_image_url`, `app_description`, `app_notes`, `app_url`, `app_alternate_url`, `app_rest_endpoint`, `ml_app_name`, `ml_app_admin_id`, `mots_id`, `app_password`, `open`, `enabled`, `thumbnail`, `app_username`, `ueb_key`, `ueb_secret`, `ueb_topic_name`, `app_type`, `auth_central`, `auth_namespace`) VALUES (1,'Default','assets/images/tmp/portal1.png','Some Default Description','Some Default Note','http://localhost','http://localhost','http://localhost:8080/ecompportal','EcompPortal','',NULL,'dR2NABMkxPaFbIbym87ZwQ==','N','N',NULL,'m00468@portal.onap.org','EkrqsjQqZt4ZrPh6',NULL,NULL,1,'Y','org.onap.portal'),(2,'xDemo App','images/cache/portal-222865671_37476.png',NULL,NULL,'http://portal-sdk.simpledemo.onap.org:30212/ONAPPORTALSDK/welcome.htm',NULL,'http://portal-sdk:8080/ONAPPORTALSDK/api/v3','','',NULL,'2VxipM8Z3SETg32m3Gp0FvKS6zZ2uCbCw46WDyK6T5E=','N','Y','�PNG\r\n\Z\n\0\0\0\rIHDR\0\0h\0\0,\0\0\0�,)�\0\0 \0IDATx^� �]ey��g���[f&�d��B�wY\\\nZ7�U��Z�jmk�Zmmmkk�Q��}��������}�z���}Ͻ37!�� 0���Ð;s�{�9�s��<������P�B@!�P�J�Q�Uj�\n��B\0E��$P(�EУ����R(���9�P(F)��G�Q��P(A�s@!�P�RA���6K!�P(�V�B@!��(��Fm�B@!�P����B@!0JP=J��,��B@!�Z�\n��B`�\"�z��Y\n��B@�:\n��(E@�(=0j�\n��\"hu(\n�Q��\"�Qz`�f)\nE��P(�EУ����R(���9�P(F)��G�Q��P(A�s@!�P�RA���6K!�P(�V�B@!��(��Fm�B@!�P����B@!0JP=J��,��B@!����@��P(�EУ-R(E��DP(�EУ����R(���9�P(F)��G�Q��P(A�s@!�P�RA���6K!�P(�V�B@!��(��Fm�B@!�P����B@!0JP=J��,��B@!�Z�\n��B`�\"�z��Y\n��B@�:\n��(E@�(=0j�\n��\"hu(\n�Q��\"�Qz`�f)\nE��P(�EУ����R(���9�P(F)��G�Q��P(A�s@!�P�RA���6K!�P(�V�B@!���(Ak\Zh�jQ(�A#��#Jб�N2f����)\n�1����d-oD�T�©V�P�(�>V���o��B`�#�z�\"��\n�����E�3�+�>z�}�g\n�Q�����{�N���Vu0aB���޷c�A����T���˯~�\"�����;� .�����82�\"hu:(o9�ms�Mky��>,��g?=��.��a(�V��P����� \n�|>�\r7>ˇ?���\'7�! :�(pJP�N��B�-G ������k���}�M����f(�>�H(�~�OM��\n��$�=õU�jg�\"hu�(o9��˃\\ty8�Q\n��\"��<0A���\Z�P� ���Sty8�Q\n��\"��<0A���\Z�P� ���Sty8�Q\n��\"��<0A���\Z�P� ���Sty8�Q\n��\"��<0A���\Z�P� ���Sty8�Q\n��\"��<0A���\Z�P� ���Sty8�Q\n��\"��<0A���\Z�P� ���Sty8�Q\n��\"��<0A���\Z�P� ���Sty8�Q\n��\"��<0A���\Z�P� ���Sty8���\'��D��&pR��k@~���N4-V�o��v0��oZE ZU��n�Z�B�-B@ty@+�.�#��x{#��\0�}�}� R/\"�-p����wv\n|��L�����Հn���DK�C�hE���޴\0��8�Tٶ�O+�A��\"��p*kT�d�w=��y �LH�AF�n<���A����W��aD-H<R��\0͐܎f�Uw�7�1�\"��G�}j\r\n�B@ty@*�.�W8i���<�9�;ໂ�G`�G�\nAຉVц1�L�W�����Zo#���_ty8��\n\n2�\'��{���_#:��Mȯ�/\ZZe;�s�V?S�֌��R��}DK��:�hԇ����;Z����I�o�����\0�g}�os�\\���\ZH��� ��3R���R2y݋���<�^3Ej�jQ���_ ��}E�e�$���y����m� A���O��!�-����>�|����|]��\Z�/9��� � N�(^E����_�� {\0o�\r���������+�ؼ���8�e�ޱ�q����7���q��7� oƘp��:^�c~�\"��NEЇ�ɳq�~�``�$h�#���!:�G1���Ҷ�UO��tZ�����g��yo�o�^���o#��n˜z�17 Y�zn8����1rۯ�<,A\'w�Oq�4A^L����*�q�1�_�1�2�x}F��m� ��/�w�z����=�Y�Α�~��!F_N~U���|=A�w�(�.�)| ����zAf_y�DFc��obN�,�D�S�oZF0�M������_����!hAɚ4�n\\��M�o��������\"��0S]����;��>/e\r�cV��D*0g�󄿑70瞏��VY�5̅=rԣ\'�K�� *�&Ei5����V�=?��tP]�%rl���1�\r���m�%xa��Z^\r�\"ݼ�^h��%i�{CV�Q ��-,2.$�K@·��^�cj\Z1Ӡ6�2��Q�ZJP]��p�������ǿ������R�^s�\'����`��R��QG �pX��\n��!7ɷ��R��Dq]\"D�m���x>�9��)���y\'���G |bF��*���8��q��& SG�2�V�����e���;�,A��k�}ɱ��(�|8�Q��=������pAn�,�]=dӒI�B���d\r \">8�]rv �Y��}�x\"Rv|z�./tY����H\"а\r��7{\"�TL��.���ħ:�3����-U�UD1ĺ���I�+�=�Zty�1G�A���}��ny(�Qe!`�|7���3L˖����\Zh�P�!��.ch;�y\"��3`�dH[>��HR��,C倢Eǣ6�2YA��@ڡ�^�9d����{>~���x�_����Zc|u����� M�ܢ�N�B~�%�(�.�9�Z$����;����*!5�l���:�7��/x��0b.�\\<\'HYD�=�Nj�9v�\\v�6t���{����� �XD����y� XS��O}E�9mʹ��td?��\"��%1�^a�&- ���ﮍ/H;�}_���\'�ټ�L:�U�������aL~Rty��\"h��?�{�&�>�2��!z�Mo:A�sv���!�B��H�R6���<�e�L�G��vuҞ����K��!�D�Hh.1�ǐ҃)����\Zft�1�\"ND��\"J(���� �P�vd ����D-�i��pa;.�+അ�5�� ψH�X\"iE��]~� A�z��\rmtjyS�[���w �R��rpp<�F))ȸY�r8�Cgg��\rX�e�/����IkqI����*u�:�e���Bs���< !\\���߬`\\s��\'J�\n2FJ©!�W����\'�DH\"�,H��\\=�מ���������,�4�[:����h�2B���1�(�.�@��wI���7V��[KÈb�.C�8\rs�ՠ���q����^�ߓ�����������.�\"G^�n�9!�w8oZD�����M�~��;��~�;�f0�Gp|\r߱���̨��Y�>E���z�s)�\\V�.���yڦ΢�Z� 5� eH�YFС^�P������Q�|-�e)�������������hN��p���[6Se�c#�V�Z���?�>�Gs�\ri9��b.�$Ƥs ����mw�x3�?�=\"�{��Sk�]�,Z�����UG�R���Ĩ�k��q0�ݛ{yd��~���ǁ��Bs_i2s\\%S�����˒��O>=�c���-\\זy)�g�*Zg-������É?�\\Re��k�E�-t�!�.!��)o���ڴ�#�?1q�q��F��\\������=����\\�\"���<z#hϒ�\'���D��V,f-�(#H�~J�pƔ ��{��7\nt�o5΃E �����./oޢ%����!h)6U8���-k{d�;����Av�\r\\#�f����L��X���:FR��lײ�3� v�%�Mc��lV�Į4�0e>�Ƶ���� C��~H�Er.�u�_!_����x���{�;]{�c�\n��s_ᲥSX8�������񣘣A�w�-���&L��^G8JD����1���͋\nk{;���, g����_�߽� �+��z�����d7�#]�� Mr�&-r[�sܿ������ks��X��V0�>Ake�*��1 ���gɥz��0�ߍ��`��d3YR�Nƨb��e4��V9i��!){bBP����ЙqK�BH׆���4d-�gA�E��}lGD�����r���|����\ZNH���Q-w(�.�\n9* �?�,�����o��E��\Z�at�Ę��0���h:��OJ!�逘�z3��\"h9 ����;����6�����\\��L�19�9Au�@���1����>2}}�������y�yz�d��yL�>�� S��+C��7�I�߇#h�9 �:ԙ]9IXx]B�E�.��8C���\'~\\�°�\\��8.[��d,�&\'>�>��7�7��^�\"���=* ��ͥ���(�#%�\'������\r����7��� Γ���~\"�rD���lH��e�׷\\�Sd� Q�\rt����ņ^��q��0C���2<�kbL���C85JTwI�v�t�~�}��҃ �`�-�|�ݹ�D�,�,:���JI�—,�fys֙�8�P�(�d��(ZN���NFх����≞����Is\\[���L&4T�i��)2A�����}����f�v�O�כ�`̼\n���nz��1uf��~���a��;b�y���! YR��$�d�fO?O�I�Î�3o��c9 ���_C��Qӈ+�O);>�� }{w��%�N38�G>�#�ħ�H�iTUT\rM\ndž��I���E��DίH�NH�r��\r��.mٶ�,�=DZ�[���q�%�r��Y�p��E�c��z6��\"� ��� �Z�&@5����kЪ\'����0H�0� ��M�(v��蝧��uK;�pix�FFօ���\"��$�h%\"�OD�q�br]�y�2�/��C9Z��(�А��Jy�k�v���X� �)2��\'_u-�����ŲHBW.D�b\'�Fт��ccxB�t2��ZLzC]�A�nE \rڲ��,$۱ɻZ>���Zʟ�uS\'�U;��EI�ۣ��}���n���V�\"�DN���k�]�G����7޴��]�K�I置�����L�Ȣs߆}ܲ�!08ZL��H�����6A�� �vҒ&��Pm��R~p2}�t��F6�O.�a�\'Łt��X^u\r�� Eς��$\\�8[�B�Y�F��5�t����P�sQ�.�����ۮp�8�4��_v\Z/��!�R�x�L�ׅ������rt��l�]���r��������3$9��O\Z{MQ����q�,B�y��p��؅�@~��zpŢ@��y�޲pn���^���E��70$�UXLo��^#��Juau��E���{�m���{�6���� ��)��\\&.Z����C9#���N��JF9��<L�B7.z���Y;�PZ�S:)�88E\'G�b[yےc�8h9$�I>{�y�?�I�2�\"��s��c�\n����\Z��7�Jt�>���s?8F\'mܧ����?����.�`i�@+�p�l!�@JҐE�+Y�3$H�jZ�E��f���t�b\"R��3�H�C��G����C<���߬�b�وc��W�C�f�nJВ.�2�R��d2J��\0ݻ�KY#�ɲa���V�`�+G��l��s!9%$�B����8ND�2�.�������.Ԛ9�w�$�j�R�p�Y���u4��̲߫\"�ڎ�\r���.bJM�P�O$�\\u�O�g�*�.�����>�����ǯgT�c�K?�^?��|r�u�O�+ޖ_oS�n走��ߋ�Be����J��V4#^�v2�r�X�(�R����Q��#�UF҂�u��^T׈����\'v�t�č&��wI�j��WG�-�FΥJm����ϑ��O���d�)��<��*�r.ɸԀ��[�-8$k�����!�Yf���B�s{h2�(g8b�c�����`�]˦�����Gά!6��j���N��$���\Z�,n}�-���;�c���\\�$hOh�#�r�~�L���,�p������M{\r�^�Bz �/&�||Y%.���}YWf�e���s}�„����.��j\"&\r ˱�w��>۔Q�G3p�Pm�V#���B�ù��@��. ʱ�YR���ݽ�L.EJT�o]��YDž�,����B�(h̥]�o.����KS���.LZ �H��J�x�Z�|<\'O��x�-�߸-���Q��̅s��6��U �bq\'q�#��qN*�.���4A�x��]���26R�\'r�W1&��5�2�� Z���)kӛs�!�jd܀�Г�%a;^h��D\r���$M�m�0tѿOt$�tM� \"�X�eRm��D���;d��r���n+G��\0�{w��f�՟c��U��ևd\\� 5��D�P��>�x��[*m����Y��\'�\r������,�϶��w��R���\'�g�v��ϳO��w=�Mⵍ�_����I>|�$޹��q���GSoCE���c��E:���p��3���Z����]�Pym�d_�0B������\\��;ٕF �rB�/H�`\rLM��u�BAzA�\"�/�|\"��}�R��4\\MH>՚͢�J t��!��%���CI����I�^>K�����{�Kgy��bቧR����\nvbRPZ�d��؎�J���B\Z��56�}N�-x���,<�>�����Y�-�)�h �r�2f���=�dv[=�ib�p����� \"��g�F����D��;o�>~b��h�.<����NtyGp���6�\"����>GhђͲ�tk�K�M��T/1k���K�96u�Y�Y-*\'�B<��vQ:�Ą�a�����\',�#\"[d�m��ǧ����a��^[I[���C�Z�u7J;Šw\nZ�A%:C\r\\H� �>�����7Þ|�y�P��ʛ��R����łG\"og��KK��\Z��e����s�}%�\"����,OVP����h�x\Z#9�^q-� \"F�T*ÿ|��躇t����h���S�>Wͩ�W//�H�)v^���\"���e����,�-g��5Gj1�DϽQJ�6����)*��f��^���:]9�g����\'+LҦ�D5t�#�y$\"��ARd�\r5F.��IUp��\\�u �N�v���*N$˥��S�ƆL�.tܖ��ES���uш�d�2p�m�|/��]��7��ldִ�R��]��!V-�9�N(�CH\Zb��\\��CC��LF)�t1�ŕ�FXZԱ�sCD�.�/l���s8aa\'�T��Ϛ�i&رu?_�܍<��K�=�tm�q��c��\Z���E��ēL��s��ъ��c�1IЁ�����������Q�$h􂟡�N)c��8d(&E���� �cy<�g�ui\"2�#c�Mu4Bu,ALNd��~a��o�����~%�,��Y?=ĸ.�� ���!�#&#L �@5�͐�e�fYn���@6X�u/�ڭ ��c��&N�Igc�t�M_L��_��p�Iiyу���JW$�[C��Du:<Q�?�&ӕe`�6����4����}`�z�H� \Z�<����O���^4-���X��?}\n\r\'.���u�չ�_�7���>�\"��8dl��O��C��H-�3� c�{������z��:/\rZ<+�adu�)���:4U�$\"B~K����!�4,*]i���!2�Qk�n���N�R&��F]���8f��->&����t�5i����{����e�νL�<���x��t��5$/�S�z([��Mń�ak]AG��9WT� ���Mv�~\ZL��=}�����_�0�vn��w��fhR�>Е�k�Sn��2{�Cx�]�d���L8~s�,Κ�BT����Fbc�&A�� �I��bƉ�����ɱ�4^��h�9�~s\\�HHT4�#�T%\"TED4-��0$.N-��� QAK2.&�R�a�(��Z�\\p�Gg}\r+�DU#�h͈��Z���P�.�O��]�⁘\0eG-�@��e���fFe�XٮJJ�붸��\"���t��!��Ş��T�pźP� �iױq<�rI=��Y��t�g�Y˩+��������%r�T|��g��ͯ��SO�$0��a��.��7cէ.�]Ǐ�/V���\0\0 \0IDAT�5\r���/A�\"��f���{�q�Jy{�\Z��x=�ij�,�<Z��Y�\\I!�:>{�l����q����^�T7*\"�� W� ����y������v(?��ML��g��)�pE\nt&o� ��\'�A4�����0�{�����W�2$��hA���-2�Ĥ_x��\0��!o\"H�����-w�vC)�ݑ��B$A��Z\'�UD�Em2��βk�fj�I�i�Or�%�bhy�;Z�V��j�sϳ��g��]dӾ��\rq\n�H�ik#v�ILl1��铹pv;�H���giE��Ę#�`p�-��%�x�4Y�9r�7�j�����\nBf �Nc��>��������g���6%a�I�p⮬E‚E*���3��Č�b{�?�s��������d�0½��u1YDnm�q�X�C�/����Õ\r=(!EJ7x-z��)�2:.IN)&��f��*6��cbu��Ӧ��L�dѣ��4M���7��֌iDc&�<|�{�s�\r��RޅP$�E��~U��%�\ZX��߮XB[���-��c;�V]�$k�d�#h�Wd+����$c���g��O���E=s�0��\0�I�cd�j*�+\nѧ��ϟ�OwDD�&�S�QѨ���9�}�)*��Ia�\r������$9{���|�wu���G������Z�q�n\"a��� z���F�CK!B/�v�u���^�d�[U�d�0\"vj�A�g�X��IIC�~!3����oq��ILki ��`Nbe�\r������u�H$A<^I`h�^�����Oyqcw�\"�t�g���D �Y�I?��D��?���͕aK/E����:�Z�ӳn=����#>8Z�c��a��بmSu�;�\n+&h1�R¾�,���g�]��� ?_:!��,�(��j�a�����x.@tD2�Hq}^>\'%\0)h&;�S���2���:��P]�����jx�Q�����R�.riM��\"H���b- �A��*]!�$�,F�!�������L+O3��r’TU�ĢI���(:���������~�n����[�ضe?�%\n\' ��dkD�0zA�][M�I\"�n�?����k �F��<� �\"���1E���q����J���/��� v���*���*���B�.&_k�-�?n��֜����٢�SE� &2O��̹)����l7%�ٶd�,J�\n�Y��bkW�y���ބ!*ʅq��*Y�N�B�o���ArF���!��_����e2�������QK]�wYC�XF���P����\\t�\"a牻y�wLbﮭ�q�\Z��8�IwWNXNh_AskO<��O�{�҂�C]~��S��Y�f ���\09� IZ<��.� �s�X�����ɵ\'v6��.u��i�QF��d��J֊�ˣ�1E��W�m�ň��қ�{���P:*G��4�hX�k�\'w��WTJ����E�\\��B�b�\0&L�q��q�b�d�OA�r2N���m,=�o����SO�e\\=��KW���+-��6� �Vd\r��ۇFЇ���+&�7ʲ��w�%%L�.V�+�(���Ej� kW��>�Q��gL �{��g���T��z=}z?�����*����X�j���I���_��L4?��eyﻎ�s���u�w���/�v�@��i�n�\\��:�q�Ne��Z���y4W�D��[JI���\r� ��\n��F��\n����lV]�a3 ���Յ#\"o�$��eĮ��<���Q�к�y���/�O�q��m�TŢ�R�h8•�� ga�s,�jJ���9�ٸ�K*0�ғg⬹�W�k��\"2Uח/��\\�5J�gA���¤`ѷ\\*o��J]�R\'�X�u���A�BK��W���\n\Z�lW%�Ql<Q�ٱ�\\SA�o��#k��3���� ���|� ��q�n4#`��N\\�)�E�����y\0L� �x�UKy�O!���ַ~���w��.�(�_A�����uS��T���R ��\\�dfk=m\rUt�%���R��Jeܐ�ËuL�;����qz+�.�1C�a��o��|y�:<J��W�Ɯk^�\'���b�)kUH+�Ƴ��yl��^QFX�MD�d,�q�ĈP�.�d�8��l �9�����rMDώ���;� ,�_4�)���\"��Pp�� ���\Z�$-���\" ��_N��Ju�^�R)C����%56�������E�@�,�ԁ����u�ē��X�<���/YI�o���O|�\r����K���r\"m-�h߿�>::ڙ5����*�*ut�$� ��\'����+/b��&6m�˗�r#L*̓xR����b�U�q��<z�P7_cp��I�oo`|e��I�P�J�G��r���6M6*�.�J� A��u� 7�g��g�2J��$v僲+����6���Ծ��Sԟ 0}��)�ga���ˣ��I���ڳ,A̖��6I������,S�Mgɬ)2A#�c|e�X)9I��_�^�3�\r1���t20+z8R��\\(;*Q�%C�7�$[P�a\r�н�����ShK�%g/eͺ�8���m8nz\r5��,?�8~Bf 6U���|b�C���Dda)C��E��&��J�1M�l�旿~����I9��z0\"��51*��8zU%~eN$�m�TS�U�hb=g�n���:��?]��Iy�5ڐ��ׅ\"��3m�v9ޖߖ�W�1ʘ}\r�3�7\"�\Z�+ �-ݙ�ˏ��aL\r|��Z�j.T��. ZZ�|\'��N��윔9la=Zt���K*^lj gS��[��C��e��B��bdw��QHR]\ZM�s���{1K0$��z�~F�-� 7$o1���E\"��5d\"�����������9�������7��3L*#�^��\\��C�c�ӎ���d��Y\\���T��F1L��A�EЉFMb����c��ӱko?���_q��a1<!*�e����}�h =�Ĩ�ĨJ��b�w�E\r 3`v{���p��F��T��\ri�~�\"����#h=\"�g�yqyE�d�ZH���=��u�*��uq��e*��H\n�,1*��D��<vj\'�*��=;/3_��F�Y0�8�* ���k;Ld^$����Fh����1���]��þ�aq�Pk�~�;���\"�2I c��E�mQ�Yv@.;KeԤ{W���J`�4�8{�:�hf����t���*^|�ԔMS\'��i��s� �7k< S#�<��zlˣ�s�lX�J\rb���\",_>�ʤ�`��՛��Χ�9���2AOo�g��Ȥ��,\\<����}���<e�������r� ��\n,qL�i�5���-4�F9z+f�јBShQ �)�\nu8���S�\"���#h�q.�w?>�:s�w<_cTh�TW����v�oV�s�~��hV*)�p9)���;��ͥ�S)���C��:��fKF�m9͝����u�P;�����nB��� ِC�ɹ(�%���Q�{X_#,#ZJʥ�\rY�n�ɫ�8t�m ��s�g�IKgN�gw7��b-��n.�p�x9�]�<�q\'w��}��-�(�����Ȼ>��5��$��?�Sfv�5�d�\\�Ɉ�d�����;�<y<�^{�U�t�tw��d��M�{r���/2k�$>�����O�\'6r��\'rƙ�H�,�y���&�����ȞH�}Zs �j<N����O���F�� �Ce��u�ʮ�9\rA��(ȱAЦ�}�������z�a��OY�#^��[A�h%\"Jt�te�w�>��qh\"Eh��F\\<��r�2�*t39xo�Ğ.tZ11�IagR��/�� ::w�؏��璕Ki�2A�(��aF]��<�B��b�����՜ed-��.�E���,����p/��\r϶E}\rA{D�< ��X1g\"�ζ.�.�ΝDGk�冟?�?�� �<� �����N�+]<�]F�+Dp\Z���s_�.��,Y4���(U�U$*L)m|�7��S[���gs�� ��\0�AwW7\ru5D�U|�O�����z��t�K��7@Kk\r�\\K�������&眷�d����q�Xk� �l1��0�>y�l.;~R�������\0]֏}SA�� �D~�]���Hy{�*����m��g��@j���&�P�՛�Ԯ ��V|�[J3\n4b�M��#�E��]ɱVWhϙ4V>�k�v�sx�\'�c[S��RLm#p�-Ahϡ���p�\r�,SL�(՘�g�7����\\H \'��Q�6�>�dY�I�p�8��#&\"�<�\Z�7\n� �� fM5ɨ��xD\"1�N�7��+n��sx^�@Ԣ�5�Ψ���3mR#�B}�H2�}���������x�6����2�L�8} 5�qn��Yn��O�җ>�qsڥԲg���˞}�����>����#���B������ ����G.������{��{�TV� L��SI̝I6R�����\'��T6+���t���zt\\�c��c���7��\rG��^?[�7�V�zF��É�Ч,\rq��F�+�\0BW����7��W&�j@��SŎ\'���v�\'���g��yI��0 �|��n�s�J�t6\"�T�q�\rOJ�;\\� ����!� ����\"H��F���,R�zRԝ��\\��,�ݹ���뻸y���V᜹��>��HT�4I�c��.�#7��bd�>7��\0=��ζ6yh=Ͽ�G`�X6��?}�b:���d4������<]�p�=��֧��(�5���j��o�O{�է��%��q�GΕ�K��zH#JW�����X������ĉM�q��m�ˮ�9i�4b��)d˦���\'��O3cf+��t�ҞA�FQ�`.����3�_^4��\'5J���:�lZE���� ���y� �Gֹ[����{����գ���a&_��/}!��;>��]�}{���8���%�j9���P�}*w裮 o����/�\rϲ�- W�v�)ck����9��X�f�nyU��ģ��]��R�9���0+���\"�b$�)�ru�Wtm�a2��8\\���R79c�Df��h�%���iRא�2#f�DD�ݔQw*g�Ny����z>���J� ������RA&�����}�t�$wݻ�o}��m�)�L����\"/������U��>���� )ɉ�ko������DM���|?����K.=�?��8?���9���\\t�\n*+b���,����T�}�zhz<���D�ĥX�sZc����1c\\��J��5I�lX��<r}��{�����F��H���F��3z>\\��+^;R_;d��=������.i;� D�(Mzs �\"hq�V�H�smr�{p�i|ˑ�j\"\"��:wmMq�i���^�o M��9���nY;Z��:�߹T���am�����\\ѭQ�RW��\\��];L��tjH�Ъ�� +f�`��f6n�͓�v0�Nɬ���;X�x�gu�T[��Y�E%\' ��a�92�����8���K\'�b�j�#�z�o��SO^���Jv��Ƿ<�����F�=W���;���x�����_~\n-�I��2�~��=���bݺͼ�+��ٹ������I�����g��vfΞ��M۩����Y/��e}>��1�+�H�eF�w�aΞ�U[ŗ/���N�L���H�#\\���� ӊ��c��A���#Γ�7W�^�¨���)�Z-�E�4ҶG�!����iWF˲�4�ɪ��\n���g%�[_�Ry��PZ֬<��d֠\'&�l����\\�͓����� � {[(����\"\'\'.!�J���!�0�7�CNDi�B\"J����ya�Pi�+87d�:��z�ōGw=��Do��H�28^��͵t�eא๵[ijǙ\'���Sf�:v�&��38hs�#��5���M��֓�\n��h�\r�w��S/q��i� i_������9��&���-�v�j�5�r�;WP�Х�.Y��\'_䡇��D�E �2cZ��7�t ��qL�$����om9���$�Qҩ<����ۣ�7C�0 �����ӱd2�,i笩��4�U�� mx�\0��\nӊ�ˣ��OІK䏟�}��K����?�\'Zy0����R�3�l�؝q�y\"���p�ʂ�!Y�����Mv0/�&�\'^.+�����2��8HuK3���Y�*TA&�C�t�{��zs��y��$���wP7���Y�Td2J��E|�Xx?p�؇ ��ef�8w���O0{J;�b%񸆝���Iv?���~n\'�MM|����l4�m���H�|��?���SU���]�U\Zj���F$\Z�?�#�j*�\\����8�g��mq������+O#n\ni#�@�A3�Ģb��1bBA����\n7J ��z۾Ξݢq@�� \r��8+֮݅�n������OJ8y\"g��kn`Z�Ǘ߱��� yGx�E\'^q�U��l���F?A{���ކ���,~P�����G���}b�m�2�����X2R.T/�Y�S*˲����˷�4�~�`�����W�h���/�������\n���4�����$\'�\n���ϗ$����w�C�\\Bڇz�֟�3GХu7d{�B��,z$���n/��ĚJ�=~�������SL�c| ���Yv��I���g/佗�H6��w���6�Ug�\'G:�����/������ ��s�Y��Xm�y7Κ緱n�@�����hjh�KOf��zb��\\4�6���a���>����P6̕��K ^6����h��1B���`��ϯ�Lg�h�UJZ��/tq��e��YMP�VG+\'.![��i������i{ ϫ�ZT]�����}��o�/�ۣW5� :��Q�_�}��=Y^\ZtH{FX�Lפ�,b�b�\'ٹZb��f�K/II�����\'�g��:D�з�e�y��K�`zC�ԲK ��&�M.|4L��7�%�B��B�`��!>[\ZA˔n�<��EXڑ[�枘$7+MS�笹Ә�����6_��{9u�D~�����[G3E9U�����|�N>~&�����ih�>���j������������<�y��,\Z�W�9��ϜE\"�aF��&F6o��k���4�x��\rtN�D�t-4,+ʖ-{ص��� :���yʣg�������gkj✶r��vb��B֦����u������gϗًw��$>��}�,�M�yy1?1����0���?��i�Iy>��V��5�)ʸRA���i���W�^�?~o����QH�2rU�P����,�z��}Q�B81t�C86Dr� �@gዝ���);*�*���R��>R���:y�?���]��T�k���D2��m�/��K�LJ))��S�Ts�+�3���՝�-�ZD̅~��3J�� |�� \'�7�y�՜>�����v�K��u���9\\q� \\��5���\ra� ����rv3�����G���7?�g>t6sګH���<���������;iiN�+Od�F4å:���Ya��`�:Q3J��M8J� y[���>ɯ~�(+O]�y��!&��t��{����n`o�-5j1�g[i�9}���*|WL,���yf�6�Dw��iA�o}���~�E�H#���º+��mMg�6A튥̘��__0�U3�������U�WE��љ\"��pz[G�L:M��m])6���I9�i䋌�E���[$�0]���k�԰/��\'\"h{����[e�A�;�6S��޳uE���Fêi�/;\\J_����;6���J7\\\0�0(J\n+��,�Ѳ��F�5�0��w-p-Λ�βI���lk�������|�#,�]��n�#�����H-V������I ��ٯ����q|ꚓ�h�Ib�lO\'��qï�恧v��i|��i��`�\"����8��3�_g�����<��Z*�\Z��\\$j ���]��W~Hg�8>�� h���s�w�s����� S;k�`N-����2�%�lt-�aVH���ge*{Ow�g��½l���=DSdU�0@�=p�tPs�rΚ]�_�wS뒯�V�ϤCG(�.3E���������yl�ͳ���Ѣ�)������QE�װR�1(m�����k�_Q#�7�vműEK+����wyL�9���1���^��KPJ#�\"9��R�=(&�JS��]Ԡ�^hA��Z$�k�H�S�D���U�:��Ά$3J����?�$+*9s��j��}k���L���wp�9K�d��g1���w�>�l6�e٬��ώ�y��橬�d��v�*bl���\r7�Cu��q�\\v�\\V����\0\0 \0IDAT.�Nʊ��G[[\r �Mf��fb���{��-�����9��&���{��������;���ԠQ8��\\�������Ŏ����5T�$X�r�Hs��/#%�G}�믿������HP��h�UWE�U��G��S\'���G^�<)w�\"��R]No��\0A΃�ϖ� ;�&��c<�\0�n���{���ː�µ�vӷc �����+�s�.� S��#�p���PZ4B +͕�8��Q:!(�i�� v��n(�[�\n����,��2z��m{���Ͳ���e�:iLh�b��pY��t?߾�wDq�����Sf1kj\'�?����v>��?`W� �,�ė>p2Q�%gYX������?ʟ\\y�:w>�L�������H\\L�����A���=��\'Ӹ�U<��V���[�7s\"��5�pn���}X�q���-_4���)�`!�t<�� �]��ښJN>�8fOk��R�(Le��ӛ��Gwrƪ�9�<�f+���-�(�+R�\n�E�\r��%9|\\SÛ1�ʥ�����^9���6�C�G������Uty8�e��i/f� �_���ܗg���U�B\'j&�|��4��RH��B��\Z�pw�t�B,�Bʴ��ѳc#n>\'5�Y�vkԷu�� �ӌP�(láGX�TL���P�)���VWx�r�hA凟vi��GX�9|6|-��p��DvNqm��9�4��1c��FfO�#jh�13���o���c㎽,�?���z��q&O���-�ho��U����N�k�q������ew��~��酜8�?oq�mO�6�Ig��V�>v����og��}�8q���ݏm�̈́%R��Qɷ�t\rm�u|��۹��ׯ}�����\\��x��\r��+�GG��-J�J����EH�lۺ����M����g��w��0��GZ��p�q]ۥc��`�WS�| Z[�r�.:�E枆$](O�� E��7� �� \' 7���=z�Qc��Z芙~;,��ʑ1�&�C��=��xT/U_Mg>4�.��{����3�G׶\rx�,���7��>����c�QSD��h��CҖl|P!���Q:AXZ IF�AXL���t\"{P&�H�Yd\n�9���-�Q�_�cͺ><KD�\Zל;���=��h@Č���Ӣ��v�[�^��Oma ka�.�*�?��e�&1y|���m���� Ͽ���>3qf�n��Ҕ�����ۓ�\ZuCE���l��߮�{��\'Ig<2�%kt�\'���\Z��\'/e��vV?���|�&�򓗱|�D�����P���EZ�-������p��Y��={zX�t\Z�U&������֧���H���/ޗ\r<G�Mtt#���=��ų��y��� T�~h� �PX���?���Cn�����gG&Q�GF}��pBP�D��/��>�A_������u<lߐ^����5x��E��U�\Z9�\'� �ؿ�y���ő#m;�돱!�3W�|RS�bW�_�F҅&��\ZtQ�(�mHSXR_�5�F�B��{�R�C�:��\"��]����S 8i�V?�U5�<��Ok�/޹��\n�\Z�D�h4�n���?�֝��f�c���� 1����G�� �46Ԓ����$k���D�ދ���+Y\\�!��H�Զ=�~x#�w�2mr�\rI}r \r\r|�3�����(\"t��xig�~��9g�N^6Sd\nK�c�>�y # ok\\w������$���S�w`+����O��ۜw�rhl����.<Og��i|�;7K2��k�\\��Y�:��EsX�Y\'-��^��~cҚ\"装�#:�g����?�+.�7�D/�c���X��25���y���OFO��@�&+��ģm��z���z.���:^��Q\\����8��9��}��]�ʲ\'���g�����Ⱥ�\ZK\'\ny�IA��%�6MF #h��-����5�Q�Aق�Y���#%���!3a��\r;cQ��y���nK�?y� O�ǟ]�Swѣ&Օ�B�=a���\"�+�~��l�7�<V>G�8L�l�y|+f\"&� t<�{ J���`�d2Ƹ�J�+\"�v?�-�hA��E*�HhX��w�Y��-�N��qҒ�\\r��� �<�����ya3W_y2_��U�a\'5�Q::�پ-ō?����$]���{��:�m�����\0��_�as7mM�\\v�J��t/�)]-V֡�ʤ��]�������>����(�MmT.��ΙΧN�N\\x�efa�n��9���Wty<6�#�N�����G{���z�Q�P���㠏�l�m�a>,�,�<��~��F<^�48���4�j��#�y[�n�t� =��#�ۃ��b��[�t�;����@��z�V��\\�<<A\\cc�EUi}�R[���Q�:K\r�о���UT��*p<��M�̹i-\r\\�7������_>�ܙS��+W�:.�����M1}|B�ɤ��Ǡ�ąC���2�Ų��<��5����G�V/s���s|�_~�ڍ;�ߓ�r����s�7s�{Ϥ�R�MJM\\��7\">��_���B \\4�e��z���W�d�D��}g��|+��j��j����3.>���;��o䯿p�s�ȥt���:�Bnz��|��fO� 1=�g?ssfM�{װz�3�4�0m�x29� .9��S�����կ\\G����sNe��f���eLL�\r��ա��gh�\"��0�t=�cG��_�^��(c�G���\r0�G��7��C��gw���@�dM�L�s�9ǧO\\�r:�(!�y�L��W����d�啔S��,&���lYO�k?vf+�!k�lr*٘���x��B��\Z3��(�DЂl���U~(U�JŤ����a�,��d���V�0�ۖ�M�O����COle`��o�{\"����@o?�zh��������\r���Z.>u>�8um�qrٔ$眥�Xi�1���2F�*I\"8��8w>����0Om�C<���7\"��&$�W���g�q�E�8~N ���ۏo������H���8g�2������P���2��0t������՛�3����u\Z�6ngӦ~.��b��e[X��s�@��u�G-fNnc� [����3�Ǯ�]7��?]����|죗7����u NXA��:�x�<.��P�������u� �������!��tDxh�3�_�0D���,C�%�8��\r�Fus�$9���v�6�&��ɤ�( ��z�9����WZ���.�a��ޝ���I�g?��^�\\�������s/e�<���IA�Ʌ���h���\\�-��\"�$$�!RI8��U�ThX�9�\'��l����g��.�� צ�J>��K���2<��<7/����uܵ~?9\'�)wؔQ�ϝ��.X(#�;���?��{L��#��HGC�����D� z-��?{��g�<��������9� ��`��;����\Zk�)����ɽ7&��\'�ob�)ƨ�%Q,���\" �}��v�>{����>=Rr�f�2��.����o}���/Zz�w^%5y*�����wDjex��G��?�#]� 6�>HA��g��Dz�ĭ�����I�)��4�e�\'2vL9+W���H3����\\}�T�b�\nwp M�wl9y�b�T���5�{h���i�tFU������q��t�2x�Y��4n��]�?���X~W�]�j�7�?��>���EY��*?�n�q�-��r\Z�P�ڠ�=\0�s�>�ӱ=��:�^�����=(��3:�Y�p½DF��Ñ�����t\'�8tEl¢3L�d�\\��N$���+z�� ��E���ޖFz[\Zv�Hmh���Q>��/�C����@g��u ~\"z~-8�����:����X4��?F�K�U�(:*�t�(6.�m�=�������|�\nW�����W~�c�s��Il>���/�Pk\\R�L;L�fq��\n���\'?;��7�U{�Cqf�)�×OejU^�J\Z�?���>��P_\'_���\\0���*�y\r�m�6�}l�}�g7��G_n�\\�h_�q!�=��h<�r�A1��i�dݖ]�φ�\r��O]�7�p1-�<��6�J�5������s�Q>r�b2�����k��Ob�^�h�� ���˥���~�(�Y>�����}W{b�_<�뮞��1غ�\0��\0�E<��K�̦37���(||Q�>)C�֟�!�Nm��\0�7�����aujw�{y��Z�Eg|��s�DT�0�0m���Ϯ� &\ZR׹#\"�G�N. �8c����ӿv7�2H�P?-t7�����@��I8��3�e��eNM9�e�b��z�����Aے:���h�l�0{=�;�My�b�n��uT�� B�Ċ�!���A\Zۃ���K�jZ!;wq�m��Yռ� �����k�h�����Ls�\"§o\\J�@y~6u��Gב��OS]_�a�/#iy����?����`�aT���sq�`(��@�WG3D�����\rm��j\"=M�k�,��@�y�HcI\n��Ɲ-|��U�����8�0_����z� �!��;D4fS]UJ{�ͷ�����\\�e�La��F���\'9�‰�2��ݯ_JF ���F���+���G���<��k�����a::C�������cႉ,j3�F��F��dz_\\⦩�Ǥ����@���-\0Zt]Ş����zk���s�=���9�+4K)$�����ͪ������yѽ�XR���zN�qr&�\'������t!衯���C��w4I�t��x1���̙2�I#��z�\"1#�K #ɈX�q��d��T��URo�t������W�$fF@D�f��L? ƎĶ\"Q�%S*�8�����|��g�b���<��>����1t25������� c� �#�f�9��N�@S��s�~�>2�^�\n�������ˍ�N纥5���bj���T/%3#���.�a��ɒ���a�U{xy�^�ͮ�E5�p��ع��]�[�q�����qD�D���qF���q9���L[Bg�\0ϭ���{X��0��Ɯ�Y|��W��yqm-�p�G����~\n�g��7�(\Z�����^]}&T2u�h�B{��uL�>�ܜL�x�J�>A7��g�W��p) %�Ч�8�+4Щ�����\Z���b|<��z��#�G�Q����`)~@�Rx��}�y|��I09Ŏ�M���,\rQG+��Ƨ?�2�(R�\"r2�Dz;h��IW�~����4F��y�H/���Σ�0Kt� ��t>q� �\0-�P�̌cy�n��\"�+���ZD���!dPEa0 ʖn3�����-��0���̀���hc/Ç�c�>�W���\'��\r����Y���+�o���#̜1�ǐ�}��x��Y�<:ѨM��������(���f^���|p1��*!˯�b�^���b�l)�$��w�-g�� ,�]MK�������,��37�#��a������7Q>���~K�5M�U�Q�Ҽ��L��]�~�8w?�2qۏ���ą�G�Bl���wn�m�Z�^F�[|�3W�|�_ZCwW��[ȜY�xe�Av�>ȜY�Y�j<�b6a_�O�)�����\'.�h(�>����>�/�b@�W?�Z��������x�%�� ���=��\"�+:�TD�A{ئ?�`k��+J�\"\"VEHd���i޷�Ho�dKt�mz?��#�5{K����\"�a%T�kl�]��ܸ�ۯuF��E�; ��GY�M₹\"f�1�ݽq.�Q����G7x����P��s�X�pS���[y�}�*��+�,#?]e��zT;�ԉå뉰��Z6�i>,3Dvf6mMmtt��ԧr�?6��P7��)�7,$�k���6Q^^Ȭ�#�kl㼱���5�����ǡ�0���+�f�y5|��s)�Th\r;|���b��i�x�\\i�7^��b����aL+����8�9B4�a�V�h�/�����\'?p�\Z;ƺM�|���?҃��\\�p4�]6��o��Z�UW-��/�ӟ� �b�i|�37��t��[���\r��C�E�1U�_\\@��-\\���qZ��S{��%Z��M�������D\"�x��5�rg+���\'�TB6����ZB��#h�u��;��T���4�y�vz�� ���i3�����KΟE@��\n��I\'����%�^E̯�;K��A�\'I�v���vn��p��H3����RL҉DB|��9T��W�^I������r~5=�1Vlk��س��=<��/n`�\Z�}N5d��x\r4CL�6�xt�뢷/���0�^��u{[��+�a֨L �a��������.!;S�/�G�� K�����Z:�񋻞�,=���7��4�Π�O�W���.]:Q���o�ǿ}�PHa��q,�UMUy��JKޏ�Ҥbq%\rs�1�5�v�N���\'i�s�t�K��ǣ /\rp�u���k\'j)+�e͚}�?�ŋf�QmV��ŋ�jy~�V��T.[�m�,��\\2�j�]�\r����\r@�k�/�o!:��0x�z\n�h�댎�J���xq\'�Z&UU���&:�Q��S�O��|F��&�ѿ4@vՅڛ��MǑ�t57K;,��hKA��E\\8�<�24�[蓩 �o(�5A���|,��F�.�9���7�K�]ѐ\"\n�f��]��0jx �PK��B~|HSU���h�p�bOK�P�����L����7��C�N\'��yh�nxn\'�kJ��3���_��8�\0W.�Kk�Q:C&Oom�/��8����Tz�P=\r:<�a+�-��T�ʋ�P�铝{�Զ��?JWW��}�.�7Ռ�vtQ,5�:���2�a;*^�����E\'�`ˆ���,O���Y�N���(���\n�S�n⡇V�x�$.�p*�9�67s�hYY�l޲��3�q��\"����I��/A3�Q���T-[����\'g�%~(-�NO�(�N��|�\0���AL��>�f9,�c���ޖ�(������ |�ʝx�3�$�����i\r��Q�����E\'�4��ԩHK�hk����wn��JwQ�� ��k��4�%�k�T���Gn����٫(�}��?�FP���҃O�R ���CG�\"�`8]= �����-f���QČQ��t���=�\"�`os��q��rn�=���ͬ\\���\\3���箧7���Td��.d�\n\Z���t) ����CgO/:����N<�,F�dR���K��y54O:��F���h���x��>�������\'/��ȋ5�Cb��t��dg�ȉL�+I�I) �N�B�%\n��H��s\"�!�ʼn+nO��w ��;)/-@S�ģAZ;�<���o�c��\\��|�yf����y1��#h�cʨ�h�n�Oΐ�Lq ��͋�8�����zbO߂ݲᘌ�鏌�Z:�5ϝ�!��\'Eⰿ��?�����j� 2-���`K��^#AwLcЅ���l��>\'��{�qޤ��Q�X�R˱lb��\rz�Yz;�.�H4F��G, �ϛ�����j�Vw��)\rY\'��E����Ŀ���tY��XT� ��W�CtF�ʱ���<��˕t��/�ʬQe�y���Ğ�t,[�C�K&r��R������L��E�lk�fݮ&�Vp��\Z2��YG~z�G����AgG���z����4p���e�Fsݼь(�$�$R$*Yy�=��ݏ����PTR�G���\'���bLj�,���z �\'[��T�3,+ AV4%�&\r-]t G��CC{�� ���o�𓕙Ni�&��dXn:��P@���be,������C�������A1jI�4�]h�Ȓ�g�&oB%#/�CL5��ǧH标\0�� ���hq�\r����}�bg<(j�$�7��_N\0��6��z�\'L�4�G\\ѣNˀIsH����.��9�U֏�F�p�]������b�m�hۻ����4 ��&�qBj�PN%���L�(D\ZB;C�L�B^�P\0�\0fSD� j��Z�q /Ĥ��H �b�f�Y�F���vz�\Z�99ey���p���L��_W�s�|����=\"U�I��̊L�������=tEadA:#�����x\rݟ���6F��D�����H�\0�c�{|<����67��2� ��Qe�;J�P�Y65�Ʋ�m4�\rPS�����uK\'���\0�7�C_�-U#\n���.���B�Y\\��1?��vY���\r��2\r�QU��\'D���FD�X}�d��X��u�ʂ� �lIB7�3�%̏~�4�v�$�g�Ԃ���]ي��mh��۬\0\0 \0IDAT�9+�5�ዧ�x����)�\"^����5��Hm��V\0m7o ��K� �vwo���]�����;�c���c��@#X��i�M�,NjhK�m��`\\��-޲)`�&*B�>�q�~���J]Q��?p���� �0d�j�����C���C�����Գ�M��S�PS��b�$��5~u��2m1��>�r�$�9\Zv=� ��R���u�����F���&<����z�`i^��~�_?S�ކ.��,� |\\X`���<*�<���%�W):N�k���(<*#�39��́Έ���Q��\'��r���v5��`���J��ǫ9xX<���/����#�� ��vA�\n6vH�R����Sc�`�������N\0���G���CkS�k����F$��3U_XP��̝R��o9��e�hNA;��B��\'�{�u[�<f׼W4AI�+ه�h��m*M�l�dl��G?<G�7DJe�����Ͼ�\0�x�Ƚ�qz������\'}��g~���u&��Ҿ��n�^fN���\\?6\"/��<�ADJ�P�;P�����~\';�̋���A1�D�ze�a��Wiݷ]�M[��p\n�S�=q#����,sЉ�_��<H_CD��]���Cn�P�T�+gNfn��<��A�lT�AU54ECUU�E�$m�@G�\r�[yb�^F�q��5�ca���i��.�ξѸI������r<i<�v?��ރ����9\\4��� Ī,�u�������B�i^��<Gs�E�)-�Mצa��1�_R�(?���h��Q�/���;:�%c�s3��- X�n3S�U�����`Di�v�e�tY�1{R�^�� ��H+$�b��?�����X.]�EJH��в�~d�+ȕ�{�|����kwq��h�ƒh�}�/�P�ڀ��\0ZD����gR��7�K�v�F�������xgp�W�Z���-L�<���` �!���á�1�Mq�&~N�p���[�C�*�~-@�U�M���,Z�#�4�q������ن��`����f<SG�I��5��K���.�9��,S �ޏcF#.P�M��{�xb�U���x�j��\\�<X���h��<x�>�|n��HQh�.��]��|�Y�ģQ:�&w�c������P:,��� �e��\0]��Ξ(�}�:gQ��s��#7L�ѧ�EQY`�F��#�%\Z^�iY�~\nr�d�+l����@3K�N��i�d�]_@!H���+v��3;8�� EX<��k.���a\\�p�j���Oj�E����D�&\rm}iY<��Fv�m�4[��&�%������M!���6i�0�랧h�Q �h�tL�d��K�SFEF��g� \"�ˉ�4�!�N\r0�v\0M�����;R��7im�� ~���=���#$pks�x�ck�QS�cE��[����;ʀ��d�a��&N���b0���wo��T3 \'�)7��+q�„T�����z����4�K���M�� _�Lf͞NA�p����(��9h�1I���F\'&�b�#f��U��4g��UU2)z�6����kꦣ���`3�缑y̞T���3��Z2�Vt]��e+������-D�&��Ea����~�Y��=�қ��f ո8�I纙%d����#D��a��(��0�<|^?��@Uc��\0X>~��z~��vz\":��_��\"�\r��\"��jm=���R�I��}��?�_�\'�7�iwm}!���Ө(��W��!r�5^޼����1���vW����?���/���#�Z�X�IL�⧿~��ע�Ӥ�l\"��̹�\"�G1�4�/.\Z�֬-ާ��C��)b�����/���o�wS��c,�1j�g�xo� R��� ���E�,�=��֝8���&�Ḕ�t��eF�ҹ���\'gi�L, \'�O�����x�9b��Ё��Jr&�Ϥ�\nr��M�R���tB_Cz �B���H�L��K-�5�,�8�+g���_Û� ��ٶ�;��U_�v>�����c/�dz�`/�e|����$�!.� ��S��������݂�*�B�ZA�\\���yQM�,��{��pɸ\\,��\'�nf{]7#�|��i�3P�!�x� D���e0��\'�����6�^��8^�� ����\\7�U��g_��}���f�㷸~�x�V�\Z!O���w�C�SW$h����,� �R�*�Y��g�`ہf�P����)|zX�;D��;&�b�<�s���yh^�km%�-:̺�B��sń\"���\'�������\rEЩ����햍D�:?�;|��\rm�dg��� ������ï�T�i� |�-���ס>��~�Y肠�su��S���-���\'b��]�+G)�7\'$��͡W_�S�vt7�u���QT1����/0.MO]f�T��`��BFTvF Ő: #� .�>���a 8\ZC\Zw?��[.�!��z:�Y<q}����̞T�ӯ�W=�����1�f{�x04�����o�K��;��5�lAgpܼ�\"Mo�&������BB������P��M�KW���xxl�Q���HWo?SF��͗ ������/�FQ<�)�sۧ.ab�h����GW��?~ã��w���Jy���x��^���J�4�\\��[�b�D>u�R� ��{_�ٵ{�`Խ�u-��~ɄtԴ�\n�h�s��kټ���\'M�8�IZAS�XHeE�7�� ���]�cs:�@�6joK�v��D�,�/��ڤ_�?=��Q�Z���>��޽���i����p��bo��-��EH\'�9i�rz/��\Z���D��Ѵ`��f��A�mt3��DۑCt�FGS=a�PU^D��Q�t���s�E]O@��c�!*�\\�p*y�ll���}��?��L��T �D׼��h�(� :�#��|lm r۝O0{B%��|\Z%�>4��)���N��yQD�ON�:��F����4��Z�{8�%w��x��71~�09�������Ȥ���h(N[_����i�ཋ\'�S\"tvuR\\����é*-�bX���s���7�7���0�H>��\Z�C6�����Ǽ�]:�˖{GD�������0�-ͥ &���m���@c[��]5��/�L8ԋ�h�5�{V�qw7�� W�Q)-!,K�3f���\Zͅ��q��2<���t����C\0��[��hb�D�[��]��������Ȃ�?mKXH��=S����]͔�S�bZ���)\nMqvu��P(8�n$�xe���–�(OLu��C�\"�t� D�# �n��v+\r[^�7\"^>��U5�g�\"�,\n��~�h��Ѵe���9��^=��^����1`��һ�3>ۃ�İ\r-A��\Z²r�t�W���b�m7���_&h�|��,�0U��4�o�e5kv��NQDl��o �U��/�p��T�����]��EU��7�;���4�ŷ�Vh|�S���� #��,c��F~��������R_��E�\ZSB���TC3*S\n�{{�������\'���fs��J>s�d6�盿z��/M�̂����E�O�ata�kG9r>_��\Z:����xuG+7,��S7�#��W}[���oww�� @@��:�q��/�ǬK�1a\\>W�(gjq�t\\��̢�( tj�����(��� �����2����K�,�%�\"����.��Î,~�g��|��¤O�>{b��;FW��K�N��Q��y߳teo�0���?꾺nǤ�Q�� \"Q%���0���R��i#0J�QS�K�\Z�eJ�C�ɈZD��ì�t.�5�L��ƣ�<����\0�YAE�C\\��#��[���p7�+`���Fs��J��Mbh� D�u����t�)����I�/HkwXTSO����Ǔ�:Y\niN��nY���W��4���:?7�|a��2�?�h�P4J��Kz��~t������}��ï�q�rTbA���悅v�H��9\Z?{` ��E��^��%O�k?_���A���(XJ]���(�&9拦p��cy���l;<@�Ըy�p>v�����4vF����xi[#�U#��Dq���e̺d>Ӫ\\u^1�/����s�����!�~�r��h!ӱs�W���eE���C+?}��P�Ƨ6zg���T$򜢩����u������6QBC�3��4u �.��_��B��I��н���Z�l�Hc7�є�S�i�I.@�?�oP��|��瓟%�l^8�K}_�w�/cx�FT��M\r�X�G]W�����yС0���a^>�d�F��^��z��� 7.ǰ�WF���%����w<��;��3 �X?_��<>q��NU���41�تd���#��ՄN�P�иs�fn��+eLS���\0%�iT�0���!��Q���g�ݿ�ǣ*�.����΢�(����9��Ԍb�I��-L�qU,��MI�—>���<��V�X���~���:� ������\"u�]4uGX���͵��Gݢtf~:3�ΡdT!˼9��&���VoC\0��;��hqoV k��^�<�gA�.1^ڈex.{)�O�d\\�\"5��&�c-\\��R/Q�F-�NC��=6���i�3{I� ���Sr�,��\\�5��i߿���6�(#�t8c�Ԑ ТP(\\RD�0\Z1iD����<�����\0�=�\"�Î/_��F����w�X�˅��\Z���s��ɍ�$M��?��=u,W���<,-��́�^Y��_<Do0&�i#rT���%�,���+��:8���p�HӜ�|���!��e�@��:b:_��c��(�Pc���K��������L,K���x����\'~���nX\\>e��~��d�ϻ_`gSЍx�� d[�b]|���|��<�fw�m=-�1��Q��+(˲0�#���E�NH�A�����o+v���3���Kg��C�oZ �2e���R}�i���@����}Z<���0W�����6��Tcηѧ9���l�dM>���������~>~�D���ۭ�G,�U\r����8���.��|Z��oD�������R�����Rr�`\\��\Z�w��\0m�ä+6�]4�I�‰Z�S� �^�Q�‘�auc�o=�����X�K�jwE��\0KG�yೋ]F�����1�,�)�ä\0�������ܹ|+u]q���MK&q��\\��1)�d�BX���)�l�=G;�_�*�N�T�a9LUNn�ǥ�1�4BQ��{�|��o��e6��0���rô�(�%Y#�����۟�$CNf_�y67-\Z+�+7�k������b�NS�*\'���\rS�����������{֠�~�X���zҕ~���Y7�V-��でw��G��U�ϲ�_�M�?µ�K) |�\r��yk^Է5@K�ѝw[󍳢ϑś��c��^H) �r��F��L&}�A>�ދ�U��m�\"s�ᕦ>�?����k��b��?r�6���ӧ����9c!�m\rԮZA[ԇ�xc&j�O��I���P�a��f�J�b44����Jg��O�AQclhW���{�W�\n�BY��D��@���L���,,M�<�� 7/�Ȅ�Ll�����?���C��s~u�o]3���4�v+��D���i*��� =}L�:\r���\r�fǾ�tvuI��ʢ )z% ���׶�S�t�n�����p��2��Ex��c�>�y�zv5E�$���b�v0�����y��<�J-u\r=��=\'Ka�ؑ��o������\Z�v���=�\\��+1��g/«D%<jk �t!�!���\nw޿�-��-��}�}/��ü�L�W\r#�H~�g�r��S���7@K��0W}��5��aSu�q��X�C0���9��cV��,��Y��/�����x�����|_��M� 8�D�S�4���7yȓ��F�)\\���N�B�����/?KcO�@N)#|�P�,� 1$�c�1̭*�P��j:�C��,��e[s_0����›����b���>lт\'bZ\'�\'���\n?�y1�閤�;^�v�3� @�_E�5�,���cl��sF���c�:�O�����|���]G;(�����r{9�~ O\Z�M�)N���,$��<�Kqv��[5Ťq@�7��c������� ���c�����b�R�PW�_=��[���\0�d�rn�t����eS�y|xu���S+�R=���W��7��B �l�d��jn�diz؝��Wwu��߯&���)h��}o��e�,eԨB�Vf3�\" ��}�w��Ӡ�hv)�\'b��?@�ŝp[��ʋV���ӿ�>��`H��s� �wsxpG3_��*�3���I���H:#���zM���豄ӷ*�Q��$?z������~�cr���9��y�;��e�Tt��� =�bdA6N��(��pl� G��66�h3},��#׈��!�f����<����>���cr~e.�X2�������\"�K�\Z����5�x�,�Uu���3��ȪbR�·��΄�Q�*^{Ȧ�/� ;\Zxx�.�Z:��,�PX��(�l����<��ǔ��V���q��\\��𭻞�}��WNgٴDd� �\\(�L\\���� �b#+w�15r�\n�4%�s�_*\rm��^��:��ޟ0�r��7vK��%��f�8���e^��Y�_i���k1-a���b�Y6� \'�b�5����%[W���}� EЩ\r�;��;O���Ύ�ʠqS�*1���6����s��>���w�Ƚ��l��Y0\n�V�%���X�,��͐�\nʔ�{����\\� Z\'�S�7^�6V4L���hl�&-�E�:��Ŏ��.���� �I�T��&fʆ�uq�\'ʚ��SKs�_���DU�--A^:�# b9i:�LΨ<Ѫ\r������r����5s�iN�+����j�������ua�-��9��{7�e�0MP�������(w,�@G�Kg�a��#��6W/��Sv�����L-aFe \'�$�py�]���o$fk|��y�{\\�k�I)\r!\Z��[9���m�sϋl���4�T␕�1�4��~�XY�������J�:��xb7]<��L%�-�bƊ�\ry�0��<�!S/�Va��j_��� �w��`t���5���,�C\0��@�#\0�hª�������R��T�RԂ��Z��+ש�R��:P��Ok���9„�2�T��۲0%�7b9������ET��\'��8<��\"g�O��=C*��D�\'�c�F\Z\Z��h*9VV�O E���_BLϒ�B��GKʨL]!+���dm]~Cgqu>F�P\rA!d��g��s� �ږ0�����I�h�k�F�%#B�&�U��\r]��mec�\0����\\�����`a!���=�&w<�Q6��W���]Gpt?_�n+6�b�ޣ\\3c8S˳X8��t��V$�`s7{z���EA��L3\Z�<Wg��b\n3�D}B��\r�6t�6h�q����`1��A ��L?c� �I3���L�Ȧ�$ �,��p��� \Z����Ó{9�\Z�r4f,�a�̱ ��1��ǒ�<�2hN� ���u�6J��� s���#��.�5�,nZ�0�%g��i�p�j��M��|�ln��y���H���MJc(t�j{\"��v��}����ő8;�:�.�-�i����\r�#A�~�� �A���`Z)�H�yL�]`q��\n<1TM�мtFt65��|�a��e�鋧��[D�Q�|!tB�C~Q>~~\'���0o�G��\Z�B��#y��M\Z��������6@U��cE1�8�0pE�3�S���ogWs?7/��e�#Q�3}<��^�� �P�����]���6q+�ʪm�𱝴��� �E�1�0�q�Hn�h���*<bQ \"�B����~��K�|�e�����+\n�q�\n���\"��f�ǃ��ټ������AZAW�t!9�\nc�yXPY@�W���nz� �\'yl�\"��ޥwD��U��ѿ� ��@jw��^z\ZZ�%2�V2������O�9�2�5����C|�W���7�ψL�� 2�T�U������0z����w��Q�i&^L7�>E�㵹�7�]��]%�W��V�7{]���x� ��#���\'\Z��J��#�`F)q=Õ����6��n>z^��3�81t͐\"E\"Z�kcG[۹`�(�WE�|�8������F� FyT�y�+�T���j[C�}�.O�dxq���{��:�,� �^)Ԥ�c(R�S�%(Z�v7��j���b|E�,�m��B8eAM!���ʇ_j\0\0 \0IDAT�e2�,U(��:b�<����yvA��\'�)1W5όsaM?��|���a�b } 7\n� +��b�U��b�&!p$d�R�C��b��������\rL;�ѥق���MMl��fʂ���Ø�G�Hp�Ek�h�9!i��@J; tJ���(�Ug���ݕ���[�K�� �F]%�I��@1� ���A�xn\'/��eθ�\\>o��+k ���Q \ZG�;b�����n���CUD��˙�\r ����AZ ��G�z�tN�����\'�N�ᩒ*��BgD\0����ę���wd?�6l#�׃n�hW�fV`�B8ʥ�ɉDZ�a���c���L�+ք���[5��<��`�����G<^\rUS���dy�h�IVz��0+�Ñ~��^��3{:�0\r� �e[Hr\n-�>%JE��m��GӅ�I�����OkO���\n�7ts���r�Q]���t:[\Z)�0_��SQ+i��\\-+v��GX�($�ý?���j�O,����]�⧽?Bz MN*���L��|r��v�����1��0�����&��~▉OGYJ\n�Xz����gb1�5��Y><�\"�N�ky���!�Nm$�Qt��wdA\\�m������sV4��� �mBQ� �\\�����c��rn<�B�],~�g!qtQ\0� �#������=��ꓚ��I�Kl W��v,�e\'��c�{,���[�v���J�ݩ �����ܱ�3GeL�Ìb;����[��vI�����D�8��M&bf�F���e)�+��0nx��\nGC�7��+�jc(�f ]Ӊi^~��>~������JJ\"\',����>!9\ZG����D�U!��G��huM�9���l)����J]{7�/3G��\"���g���ƽk���G��s)��&E��+�����ʵ�u��]*?y`���L�\Z���L�e\n��H��ܹG>���0>��ώ)˷�pߪ�D�\n��P2i��� fp�ҙh�F�k̯*$M��m��\r~����#:��7�k�zVܿO6�Z�b���A�(?��,\'f�\\�K^ �x��{��T��4��/\\=���j1�BhG���D+D4/��8G{���r�8:�hĐ�\r�S��rp*$�I�� ��@7�y\\�iP��N���(^8�Z�\Z�j�֬��3/�*��E�R4�eA!У�����Rt3*-�6���bZE���zD�-��&�!�X�42M��ylt%\r)�f�@�0^���^��Ҏ��IC�����vS z,�}7TR� 9C �Ҹ�+��P�,<��( (�S�����d�lQ2���f�_{�NKp�=�)��bE$X1&���wOfL��mG����]�zd@��yT�Ecr�����6�SY����M��m��7^8� �(���T����M_P��.y9>-�̔�U��(cr}L-�%]��9��!.6��z+p���Ctjc��ha.+\\W��/ ��g}���ӿ\"�����g����Ձ�/�%��Xǃ/�9�RT��y�E�4\n3��{ES���[���2i��x6}Q�~e%���y�O��@���w\\�=F�4o���%���Ir��$dQ��1�4\r=e��[xv�:́ž,z��&����}㪠:��ɹ��\r�{¼��˾���&��lt6�s �}\"�,�~�C�M�5���& ���=�:���?V��w�q$�R��?�j��v-�J}�~W)�!\Z��d�Ȣ�*��^La�%��\n�HAX6��!�Ba9 �[M�YsPN����E�؉�\\�X\re��L�/b���j� ��L*T�ݭ3�Y&����\'wr���R}dj�=��������]�ms3&�T��d��qTU #�0��ѩ�O\'���b���v�s�ltj���hq�V��@}�6�߭��-��=�Ǡ0:ȉ|�(N%㰵G��ܟױ��_��+�e��R�^<��-�D�X(r��Vr��ְE�ㄔD2����1��c�k�{��D10��!�;�}�Ȕ����\0G�;�Zyf\r+_^O�I#Z0\Z�\'Z����DD�<�GEQLt J� I5p+f�N��p$7�͖�Tu�?�z��1���6m ����q�Ї�8|��}�jm+fBxH��<б�0N �\n�E��+h�@��WdP�C\\�h��W�Z��,�b�6���ׄ����˳��� �&�M�L\rMZj��)�;ք��,�>��~���r�����<��\r[�J�����A�r\r��\'�Cva9�ƕR��\'K�S�㧺 @�L�����!K�������|��o�SC�w.@���~%���v fO1�Jz ��k��Х�ɗ��n��ĉ��x�C�Ū�m�}s=/�n%d����c��b��PQ���\n��/�r��d�%�3���ɨ��;=\'\\��s�+$�F�[�r�%�rҚ�<� ��mr�ߞ��W�ͪ �U&��O�^��>6u\r�j\n{�~>5��L��4m�<��M���N:��\"��l�[��P]��]k�خ��<A���K��k�ǩ����(��&]Ӹn\\s˽��ܾj�]�\"oݎ�c����-�4� ����Q\\�M1��\\hb6t�O��nU�d�IL��KP���[f��1t���ƶ#}2R�-+E�,\n2��7v8Ӧ��p��\n5��P��8Ï_-��XQ��>�\'9�@�6��h�v�-�7����?!��l3��J�c\\�K7/�O�D�^�����r��_>�����dx���sٜj����2g�6�$s���������5�e.^%<���ȍgԉ�$@-!��urL�;���l����^�m�̯&nd��;���}b�>�G�$2�� �Ĝ2:�B�j}�\Z\"�E�\"��qx�)�6�IK��+B����A��%�D4-�\'1 �bg��pI��\r��\"D[Dg}S�4���g0:ߐ �\'��m�t[�ߖ�wC~W:VD�r�D��X_Qb��CbZL\\�4�r,2�0�j�\"9͎mch0�,�ʑŌ�,��$���J@�(H3�\\�A�GK�b���C\0�\ZH��Z\Zi������_���=���\r�(�NC��>��(�\\�?i*�Tq�\r���5gC]+v6H�P��%-�˰�4�rd(+�BWE�4tI��c)e�ز�bP$�61�����]<1�w8d��rM���P�K�T��F���, y\0��V��%�b��%H �� �I%��I:Y����K7��KjU �Ј���� �M�K�,��j�RnS�t�������&��]��^�^q��D�x�aQP(LSh���+��b�dd�Wr���ԅb��]�y\'\'K�n$=]CZ)��걿��)�\'D�[��*��Y�eY�OiIi>�lxm��gy�Dh�_ç\"�u��NsWEg−\Z��z�!�Nm��\0��x��������s��Jz)�䏡O=���d~\"�%�V�;�ELV�o��}M�z��=MA����}:9Yi�} :����-.h��d���.����YSe�%l�,�n+M^E�3�h9\'\'c��IA�����M���ĹlZ�G��+\"�)�^I*Er��璪k�+L��k��2Yd���b��%�\0�����\n=�q�8\"�@n��q���CW��唻��Z���n��)W*$RUS�(�c�c,�3 m�Xbp\'8�a���0\'��<v�-�h�/X���P:��t�A��J�EӏbQ��S����`�$�[b<N<z��չ{S�\0:����\0h���Dݾ=��9ýH����2)_z�77f�!���d��k\"��p�%g՞FV�nbo�\0M]� D�8�(䂰̃�:��F�I#�$�k}�4�N�yw� ��������!���t���r�he�)N%��{�V��_��i�5a[|�� Ԕ�H��Д�T@����\Z%\'�p\\g��&X+�j�.�Y\\�-��bВ_-�qn���f�F�RZ�X��K9�Hkq\r�ع��XK�\0-`Z4�Z�{�r��W n�|��{O�{�M@�U�����G\\�%�kK��J$6� CL�>M�o��d11��\\_H\\OЌ=i��l?�\'o�S���Ca4��/8���*�A:�t?Z�e�S>#[�=�J��5� ��b�(��N��k<*_L�І�h���t�G�\r�(�jp,��� ��Y�v�ֳ���?#йQCr��L��~�����z3Qe�+\\ �IpN��$X��낞�8D^T,�~X&c�$X��%S.� 9��HD�����v�rQOF�r�D�-�BHp��y�d�H@\'�^w2��K��Z}$�At� \0u����P�ѽ۪.Rn~�r܈����<�q�V���U�[4� ��_����Bs\"}���|���|p�S�)����$��\r�\r/��F��\r�\"\\��߃^s=JvJzYj��[�kp�H̎��ɶ�$�np�>�/ul\0��(��\'��ԛmj�\\��?A&x�\'r�����{�9�q�x��^{�\0\'_�x�A-qܓL�\'��ex�t�$]��e� ̱�7q��App�$���Jw��OrO���1̜ļ�3����Nj�ɟ����7{V�~�S�9�� ���a~2�Q:�{)Rx�R4��]�O1HF�n�������r��w�g�#��[S�kE�X�}�ɟvil��1(�;��N��>`��R<���n�\'���ʤ>Ÿ�ʱ�O\"duB��Xd,G�x�Pb�48a�F_�ۈr&c��#��^C\0��(���FS���^�0Ӱ���/?�Ҥ)]�`|��A-[�Z4S�?�ӹڎGd�H�ėThh��뱏�@|��oye���}��fU����ɣ����B�Y�S!t*a)��fس;4�;����!�Nm��%#h�D���=,Aɪ{J\n���7͋�95�/�=��[��5w�9d��=�ӹ\'��F��N��m8�� ��[ OZ��QW���N�.\'S))epJ�h���y��x<3t*p�8zPZi�^��48�t���Ip���Dũ��`�c�/ �.2YR;���S����Ug�T����ꮾGz�tsQrk�5��� l�=��n�!��nـݶ\'�~֛wsų�PG,;����� EЩ}���\0-Aږ��؊����+��uZ�B>S�˿��I��aSNy�\"������c�t\'�xH���k�qn6%�������3C\0��W9Љq���#���Km��7�:�\"J�o��![�e�9�S\r���(g���1�C�<7#0Щ��@�f��;�&��7q�=����^��@�p+����\Z��x� tj�@�d����}���Nk_����O�¶ꟿY�C����\0=�M4���&Q���g2��� tj�6�\'\'�%���;�{������C�[%�c�Ъ.?��C��Ɋ��Е�fG���+B{@� �9�\"3t��x;B(f�Yd�u�K���>#�����y�GYe�;�df2�LzJH!����,��Xpw�����kW+��\nH�� @Z �ZB �e�\'��{�2)��@v;ι��d����~���ޜ{ι�J�U�6�¸��ՠ�P\r��x���d�GiU=�� f�B�\\�b�?*%ZxjT����Z���·�����B)��*T�=����đ�q���+�AeY �L���Ҧ�V)Ҡ�#\0]�4���L���g�³6v<X+���\Z.T�V��@���V���;;|���o��s��8�j`���ᅰ�\';F�z5�(!���^�?�3[qp� �3����t�]���A��/DY �1���(����,��{�^�eAe�hv�\Z��ʾ�T�&j8������9����S��#�Z��К����J�B�\"y�0� ĘQ���ӣ���J� ��om�g�S#T� ѣP ���I#�����VZi��]��ua+�k/Ba��_R( ���I�2�iy�;�ػe���Tz2k�a�F��b- �@�ꢡ �Aϰ���x�yg5h�H�@w��j��;LG޴�����h(���@�\rQ�}G̓�;�=�`���1�sm��C&���Q4[�]�j�oI��g�AX�I���o��\n�����Ev�Ԗ&`sKkp���K�9�f@�\n�w�ت3O\Z��A����dGg5ol����S�qb���+*��\"wzN�����W�\"�p��\"��m .���tv���cp8�~L��0\r�����%c!��x#��*��\" �!�1d�h���;B���$Ў�\"�v�������ͧWœ�Í%s8��K�6��� �2��}Z��j��|�����~������0�����QSoAơD��Bo�ʋ�;�؟�K#��ؘ@$�������q�x\Z�~\Z�VV��;M�cO`��}�m�B�)5bC�1�8��,�Q*��ָ�1{D��-N�i�p��bȺ\0��GZ{v\\�Q�-��5�����~���τ�H⇜�g0h���(�WG|�~N�-h�8ْZj��?Ӊ�a>�0���s����~���̳ y�?�����b�5�!��.\n�H �T��0&�&��F�ڵ�.~����V�{���1��rMA�N<�0�l=\"jO�V(ǫA�����U�mdzᙼ �EG�3���sZ��~�B5/��P�Uf5\"��<�����5C��Nw���͂F�\n�]Z�M��p7h�{��;G� ;��Y�ׂC���M�ڦϝ�Ү�!w�d�#+~U��}�1�G�+�A��{��m���ߪ@��/�y���\"L+]��q�}A��B�!<���$Ў���@;Ʃy/S\r,9P��Z}���\Za@<$�B�7�����/ s_����p�̏���P��S�l�\"1�����-%[���>��,̷�\Z�W�����X��7��� &���\"��!�{�X=�4B�ݻ\r�3�Cc*���N �/��w��bT�3�xUU+�j�1�`�뚟_,�ǎ[��G�E�5�>���%YOL([o�+����ţÃ�Ͻ�v1�\n��ߌ�W��3���>��g�[vT���g��̽ώ�b��5)x��C���Jz�ߋ����g���^u ��sh�8�ڋ2^_M�u�&\0D�c��+g��z�nSm �y� �D@ �@�k��(��U������Ĕ+@g.�w3 ��k�T��<�\"�G��j�i$�0�q(À������B�E�L�)�z��VC��-DW�o^2q>�1[�w�F��J*B?n���C�X�݅�J�;��хkZw�>�rx�Ǘ�k�?n���?oK���}1Ѱ޾���9;��18L��n j5�c�sN^�ت_��a���7!�}�<0*� E��<�0�� ܛ��f/�u�p��V�z8���:H�S\nh�8���Z�sڷ0_��S��A�<����X�]OA����#�@��Z{�̨`Ć:� �Sj��.���\rMV�2�W��� h<���Ĵ���ٰ�/x�b~P,+x?.Jѥ�P�_ }�Uޗ�\Z��v��)(\n���\Z�GO�f����q�b .�Z������B��>�C�PB ?�-��E=�6\"�hs�0?��� Ӈ�Q!�6w�P���17�<r�=���{�3bx��^A �`�x*l����_B��Ao*��ۯ\Z���ś3\"���v�bG�~��\Z�Z��?>v�w_�z�O���s|܎����@w��,ŧa>��W�c�0�\n�w�DR�Z��d�R�� j���g���Yj�����Ǐ^3Q)����h���xf��vW��w!H^k7U�P����<q �����Lt�3Y�cr6|�����C�TG� d��g2<�11F���>�)���^��O �r/��\r�-��j86x?���z�!!�>.���ֳ��+�R��~\\�_JC+ABEb� tYAR����j�������Z݃�� }�o�M�>h�89Ջ�{�\n/��� VV��*r�&���(�V�ٿ$� `k�mO�\Z�>���˘�B)cGa5�����5�����l�����HVE��^ig��帮��@��6�?ʐ��\'�A�P�;�xۣ �2����(߳�\n7Cn��I �f� �ӌEB/=��EIU�u��L�W�<�\0s�-G�1�?� ��;�o�w�<9���ɥ�j�۲]�+wŰ�s�z�4�1���u�@W�g�ܲ?���}�I��A; c�tȤ��; tG�l��@;���^�jX��Ҟ��`��������?_!P�@x D�s!\n��jk��2�?{N�e,\"�е-�� �A��^�2�SV\0\0�IDAT�~x�e /�f\'Ò+V��)E���~=���S��ە��k�F�7�X�;�zcڀ�P��n|�R�wo@��o�����U���kz��pO�?e�ehߧ! 05� DW�f����^�`��O��j�w�������r$�ؠ��Y7�@�w����n�/�C��Ciit׭�=�C�L��)7�A��W��1N7��l��\"VC��\Z�� �a�Ӿ���y�ۍ?��d�e�W��L�:��9���j=Cts~ǖ�6��ž(�Xd�uO\"O����� ��ţ1X;�h.z՞�O:W�����(녥�E����P9�Q�:*���j.D�᭒a� _ o_�/T�О����К��I��X�~�j�?�Z��U�^��4���.:��?�i��/�K���8���kY��v\rb�}�c���9I5;5wB.�bL�F .�q�.126R�Z��/�O�tIo��_��c��!�HB��Ia���ܷ��}H�#F�����⩍X\r�`�?K�.Xr��O7�9w\'�w���8r6��������a�l�O��N���8̈ ���6�3�O��ɶ���9y�d&�_�����R�-��X��o���O>�}i�ht�V`v�z��_�)�`�OI�!�נ����&��2�g�T�ͷ`/i�=.6%��J~��R�i�,d��Ho���|�\n<��ǡ�9�7 �~�ϝ\' �J�a:�ع0;��.�D�H�~\n3t�(��e�ih�t�p�c8�R�|��M�\"�v����1N��^V[F�����0g�5�,E�a-��<��-�\0��!\nQ�)�Cl+��`yPg�!NW�}��Gൈ����m^�>�@gI��97-�_��#�#�J������Mi^.�Ş�C���[����t��-`�&S�:T\'kS�o� �B��}�0:{ٵ�ONz ±�/�A��4��Z�\0d%6��UI��\rf� ~\n+F�wZ�ً��˙K�5��g�m���^\r�%�,��� �@H�\",�q��Oh��@;���˒�s��$\r��TX*�:��B�H�z@��aw�=��IK�.���L���-K�f��}���]G݋�ڳ�GH�����#����N tr�mݧ�q͢\"vzNBT�\n��wR��[���?c��O�i*�Y��=��k6�J��ס@\'t���_����G!�V�褢?և�����_T��{���V /K����b�~J ��l�^0l��2(����z8���%xkZ�3fo�/ �cI��D�:�@�Q���l��m��a�=y�tC���o=������X��):��>�]�:<k��~)��X���u��/��A�G�$��d�* ����&37�Z�pT9~\Z_A�U�vW�wD�p*���� Q�-�7���R�/\"\r�bT�*��mB��F�< 좆�� m��N��Yj:��W �G��qA�ê���=@#Ŝ�����e�I���\"�v�������1�hU�����S���s�:��f�+U�ޅ�lc������U^�E`�u�U�k�՛��r�\n<����ʃ`�~�P�W���\0���VО��7 ��� 4+Z��D(�������\'�4�P������>����?�}Y����Q����|�?jg�%M�3b���gnx�0s�/X�a{5�����@;F��1Nԫt�@���]���\Zs�d�Ү��9��܁萶��4���(پ�c�r�+kL\0W���g,&�����5��}.�g��@��|��5���bЧ\\�w�p� {Nkav,��A�Y��u�-�ȫ��k���ɢ�.�@\\�>����\\��*^�r�u{�覵8�5R�ڴ�6[9+�BD�{���R�� ��݂�9^��&t�@o<� ��/pKYch�yyv�~/L���J��hFJF1��Jt���.N��������e~��3����!�������|M�_`���}r�+�դ�7�X&����\r�;c�y���R�[\n��M�p���W�����L����2E0�r�1�;O�޴@�L�� 3;t)���D�*�a�^�A��:����m�����6fi�M���_D��8L\Ztݐ����df1���1S�Bx���/@�g!z֜��,�#3_�y�øc��ŁX��������cD5K;g.�U���E\'�wQ� ���|T��\ncK\Zc��N�U����/P�Uxtx �����S�3��c�;�p����r1��4�;\n61����X��XV��c�ͣ��R 23���7Ux�HD6�����;��O�� Uj��C������V�3��D�-�>�����^<ҡ���W�`������x�,TG� ���.)���Wݝ�\n�P�]���l�\"C\r��A������î�G���p�K����;�]] s�i/,C1�o2�\"f �O����F~y.d�3�(n���^��\r�\\��R��\'\rƠ�\Z^r���ttͪɽ�& �_���m��8�1�:^�ԍ�����\"s[K�ȼP������� �ת�W��G6�2\rn�� ����sg1��3�<8�^ k�����xf���º�A��KU�����/.��ն�Z�~| V=��n�:x;��E�I�C��@K�f�\\lC�,��,�����s7��N��~�P�m1��z3N_�Ǖm�0���f�1r�P�2���X��<��l�+]�����%�J<�{R�7� UX�3Ͻ�+�54��6���>|��j��\n���,��NG�Q; ��0H���9\n�-��Q�f�ڻN��UW��ټ؊�eLV\n5���������E�s6%b������ؼ$m-@�7\'��c������$���*�r�F�qH9<�V!�*)T2!`2��P�� ���WУFmB�31bӧx���݃�\n�}O��\"Po�Ul��d2���翜�Z�:����Rv|�d��I�;���I�MTix쿵���kf\rDB�ݿ�� �G�¸�C�e󍵎\Z�/��^_ Z �X�����T��\Z�ɖT,�8B�庳�ں7{Ѱ\Z��<���P�������*m�;�h֗�_����5��%��2��P�B \"6D�g��J���ڊ��b����&��]Hư�d�O�￟p�Y,�:���ZܹN�g�9\Z���T��7�v୴*��6�������d���~B��x������R��{�M,�~�3|> G_l,t��Ӛ�$��Qrt���k�(�h2�5�N]�Y{7�i�at�7{kz�������iD�DdM*�M�������2e�o{��x�4[�O���}t��9�uX�ͷH0� ����5�u>![����pZ�}�Q(�A(���/O��l,�o}�qL=�\"��^\'�����Z�]Cs���q a�}���\Z�����edJ��!ちns~&��C��P�\rJK%/�tD5�k�mv��x�~>�Z۩1,M|����G�z��\\���8��xy�\n��c��a��C���>����[�0pA�}{4ޞ�w�ڊ���a�;wa�#8�]-�*)�֥��<U���Bx�os�~=�r||�g[P��v?zߥ��}l��$����碓@;%��f ���oT���h����i\'�Ȑ�}���߇�C\Z\Z[EL7 5��*E����˻�ޕB�U��},B)��x L/�\'�4�o��~��+�Q|>���c̾n��|B/}T��R�V��|�<�nZ_{ݐ� \r5&�|�\nzd�GuV\Z�R�L������㣽�al,�l�g$�?c3� ˺ܮ��r�QA*<=*\n��O�39d�:ե�@Y6**�b�)�����Ycc��a1�/��nf�[3��x-/ ��V����L��8 \\��!�G�3IG���3. �6��h��d��U;��&9���@ĊK��i��Ƕ�� ��ɄҢ\"�ݖ��O�0g~o ��kk�F�MJ@�ƘkꐒR���Rl}y7V�`Æ����<�Z.FGۏ-��@�̷���!� p���u�$\Z�!��ٙ�m���\0m8V���:��:3�k��\0$�\\̏�\n��0��zUۿ.l{�jg��|~\r���\n�7Ԧnx��{�SO�=%��o��h\r�\\��2j�m��j)���A�`vZK��UFa\rV�G����lv�҆�$M���Y��gJp��v(-+\Z�B�ؿ�ƞ��`w��l�@�9���!���YY�2��9%�M��� �}������F�y��l���/P.�����ƳIȈ�� \"�j_�W�8c���Ņӹ��ad��ݼ\Z�[|�/����yX2��r(M��\'o����䣴J���vA�sC���#o�h�Pԭ�0��5ԡ��q�f��Y2ES�Fk#*�5���� PY��?���Cg�L�����!�*ޕV��^P���:����j[����Z�/�U���0ޣ�\\����6/Ɖ�#���l�r�Q�Y�����r�fR���^��ִ�(�,�3��=�@w��9���\r �!^]�a����1���T���n���\"�9t;.�<�=�?|1LG{��IE���Q^u}�LS.r���:OD�~Z�V���0u6�C�o[?4V�9�$�7Ǐ��&��}��B𕡳��֦VQk�+r�H�Q���1��М�Zx/�v萲q(z�Z�\Z��܃>�D��`�4��5��,���\'b����<����\"ds��}�8۵+�YԳ��H�s_�C� Ǧ� ۤ\n�cwm���z|�q��~yZg��@;C��\"�)��Z��W<�V\Z^��~����\n�Y��t6�=�nV�#�!ϼ��?�K�,X��D̙��\\�u��#Š����11m���p+�B�5������w��iD��q|�`t�F\"sW*澟������@݉)�$Н�u��\"� g��P*z�06ף�h�ڦ.�rl��!,�<�\\3 ���Zh2*/faџ����������(�u���������f��˯E�J���6b�����2���L���\Z�.�d�0��>\0!l������xu�\n�6\rDŽJ48��/_���ӡ������Ӕ# �3�*�K�@�pX��e��ٽx��L\\���� Ъ��������Y� ��Ć��Ӽl*P�����ӟ��;��,�G\"��Ϩ(|�j8���c�?�(f�\0/Ķ�Ѻ��x��B@�/Sg�P��z�>��{j�q\0��B����E#��tG���GK�)_7�  �pX�sr�p����X/��9=����oC�W�ON��(^z� Rrl��j)�%���ӫw㩏�`��{�i}+1w�Lx�\nL�°���9@�rZqt�Q��4�\r�[�<�X��Lj��vL��$�7�.%D��0�^�: �=�o��W#1erH$�F\n���]�*hW�����������s���t>�9�cLM+��ѷ��B\\���hDnn.��l�.C��B,n�_�S��a�\n�Sq�͈\0p���lFUU�P��R� ��!h+Mԑ����@��JS\"�@�b���cM$�8�b4hW�&��\0pK$�niv�4 �@���Dc$D�- �@���i�D��hW����$@�f�I\"�\nH�]�J4F\"@ܒ\0 �[��&M��+ �v+��\0pK$�niv�4 �@�^�]\"��\"�*%u\r�һʘi�D�� @�f�I\"��H�]�j4f\"@܂\0 �[��&I��+ �vE�ј�\0p $�naf�$ �H���Fc&D�-�@���i�D��\"hW�\Z��� @�f�I\"��H�]�j4f\"@܂\0 �[��&I��+ �vE�ј�\0p $�naf�$ �H���Fc&D�-�@���i�D��\"hW�\Z��� @�f�I\"��H�]�j4f\"@܂\0 �[��&I��+ �vE�ј�\0p $�naf�$ �H���Fc&D�-�b�4I\"@��  �vA�ѐ�\0p$��ag�% .H���FC&D�=�@���i�D�� h4\Z\r�� @�v�Y\"��H�]�h4d\"@܃\0 �{ؙfI��  �vA�ѐ�\0p$��ag�% .H���FC&D�=�@���i�D�� h4\Z\r�� @�v�Y\"��H�]�h4d\"@܃\0 �{ؙfI��  �vA�ѐ�\0p$��ag�% .H���FC&D�=�@���i�D�� h4\Z\r�� @�v�Y\"��H�]�h4d\"@܃\0 �{ؙfI��  �vA�ѐ�\0p$��ag�% .H���FC&D�=��$�X�֟�\0\0\0\0IEND�B`�','Default','ueb_key','ueb_secret','ECOMP-PORTAL-OUTBOX',1,'N',NULL),(3,'DMaaP Bus Ctrl','images/cache/portal944583064_80711.png',NULL,NULL,'http://dmaap-bc.simpledemo.onap.org:/ECOMPDBCAPP/dbc#/dmaap',NULL,'http://dmaap-bc:8989/ECOMPDBCAPP/api/v2','','',NULL,'okYTaDrhzibcbGVq5mjkVQ==','N','N','�PNG\r\n\Z\n\0\0\0\rIHDR\0\0h\0\0,\0\0\0�,)�\0\0 \0IDATx^� �]Wu%�����5K��\Zm���Slclc�CBHH:!@�����tFHI�O������N�m��0$43؀��[�[�Xӛ��k�s�{U.Y�-K%��)$U�������>k����e\"`\"`\"`\"0\'#`�ɳ2\'e\"`\"`\"`\"\0�f��������7Ɯ�������h3LLL�h @��cN�D�D�D�\0�&&&s4���1�e\"`\"`\"`\0ڌ�9\Z�s�Ƙ�2000\0mƀ���������9zc�i����6c�D�D�D`�F�\0��1�LLL @�1`\"`\"`\"0G#`\0z��sZ&&&��000��0\0=Go�9-�f ��������7Ɯ�������h3LLL�h @��cN�D�D�D�\0�&&&s4���1�e\"`\"`\"`\0ڌ�9\Z�s�Ƙ�2000\0mƀ���������9zc�i���X��03a0000�{0\0=��9#��h3LLL�h @��cN�D�D�D�\0�&&&s4���1�e\"`\"`\"`\0ڌ�9\Z�s�Ƙ�2000\0mƀ���������9zc�i����6c�D�D�D`�F�\0��1�LLL @�1`\"`\"`\"0G#���lvyƝi��sZ&&s*/0@g��*`���霊�9�����~�R���\r@?�1`�n\"`\"0G#pF4��g~��K���ɜ��������� �A?ϳ3o700xG�4\0�ɟ_���\\�������h�n�g�(5�i\"��@�bh�@�s���68�\"0�r��AgY۶�?�/�ݲ�5���g�M5gl\"`\"�≀�> i��t����C�� ̓#@ i��\n������\"��\r8?�{e�f\"`\"0G\"�\'�)R�\Z�Pp��ҷ�� �j�P\'�����N2���92��i��<��d\n�\0}r!�9t/��͡�Ze�3i�na�#�s�7�m&&gs�s��S�LT;�.�U6���\"�xО3@�3O�u9!Ƕ��ɲ���Й�,L��\"��S���!{1PQ��4�e;\'��}�\0�SI�@3s�<���&�{�]#�Sgs<��@��b����d���(LD)��(e�: ����� �̜y��B�Q�|��{\'k�b\"`\"pz\"�[A:=gp\n�z��`��V@�a�VChܓ$�x^\0mY�5���(��EO!��S8�̡L�Cr�u�gU���$�41ՠe���Pg�[����3�<|A�$\Z�O�?���]�,��=Ţ���\'��O1x!\"��3X�����*�,Įz�� prʲ�r� q���3gi}�\Z�8�a�v�dNa\'����R�W�4\0}���9����G@�tg�k�Ja�o �뵙z%��]5|�[O�������X�b�t2\0�69� 9i����gf��\r���`�+2���h�)�\'?���nx�^��yn}�K�}Q|gm\0�E1\Z�E�����%�,\0��Ħ�|���[���p�\'�~�W���E�e\0�Ep��%�����<�JQ÷ԫ6>��mx�;?�߂������+�ZO;���$���D�&&\'�i*\rΒES��ҿ#��F����<����!xޓ������� Њ\n9� @����\\���܊�ViH5_xg�B̢-��M2[���:pϽ[q׻Iq<�{�~7��e� @w�Tqzn\rqs6&gn��8�r�몮��,E�mX7���V�����u���{~w��R�\\>��� @����9s���@3�v�d#�g�2�1��\0}���p׻?\n�ۊ{�y��\n���֘6gc\"p�D�ëf� ��dV\n´�:h��>��7 @�f2��y0b\"0�\"��4���id�C��pШ9���5@��P���p6\'d\"pvE�Y\0�M+)�c�Qwq�=[���n7���A�]��\Z����>\Z�� ��Z:�\rRO�]w�H���\r�q2�́�Ϝ�k��rL���;��q���+9� ���`��3�Ds��h@o�]��0\\w� ��\0��12󁖯J4@��c��y������d=f�`��;�s���tܢ�{�/ݫ:��03�����{2bf>���|\\S�_=���@�P\n�M��)>��7K�AX���Z�ǭ��IѦ>�\"#�3K�l��{�376?ZG�Q��\'\r������2xi�\Z���Rԛ���0�6\0==�2\0�<F�~�l\0��Y����)1R_*�V�,��p��N�@g�G�Y���s@>c����%���Z���n/9SC�<���b��G��f?�HxR�`ʘc2S���PHt�͔���i8�w/b�>�g�<=y���03��4 z���\n��4b2�2\\^�b\0�\0���he�\"�����z���M�ʘ;8���32���T^�S��2٣!(>-{��k�4����g9�A��1�΢c\Z�6\0}Z��l���Dz\n]\n�����^�3���ޙT��y��:bΧ�B��NC�.J�T�=���b�n��ϐ#ׇy�����A�\"8�hЧm����͠��z���T���{�����^��f�N><����T��jЖꬾS��e�G) �����\r�����\r@���������i���\n�Nȉ�\"m��������]�W��*V)���9���ˮ댒 �����|A�w��J�F62G�r�J� lM�X��|q�|چ�Y}`��O�\0O�v�� �E;r�@�./���vlg�Ghv�����Bw�~\Z}��R�2�6�o�!�eB� ��õ��$��c��Ā�)\0��Bp詀��H���h+��xs�3&�\r@����r;e* MuJ��e[yQCHM������KQ���y�\'��=��z�~(�#�ز�f��V�=?���j/� ��L�1f�\n�{ �����\Z�>mC�?�hЧm�� �tc#�����D���\" �s�\0m i�q�]E֞B\Zԑ�M \r��6,�C���/ ���\r�P�[�\0^P*�\0��\0�E�*\0�+;W�空�db�L)B����)��c�k\0��\r�3���\r@��A,�Y�� m��Z���0q\n8�4�U�چ`�i4�{��\'�T�� \'��U�q\rVԀ�i!�Ry�-�v Hm�m!s}dn�ӏ�� Q�[���R��-�=�(�p��P\r)̪=d(���`.�����Pz�>-��;�hЧeP��\ZYnB��\rd@���0�C�1qp�VK@��H�c��&�$D\Z@\Z��\"�v,\" �,4���2������23�+,��\"���\"xay%@����\"�̂e9(�\r�0�W_\nkh�a�DB���-t�t�V���Y� �� ����\r@Kz� G I��t�zp�U\n�\\�3[�������@ZE����Ú|�� ��\rWh���Z�� v�\n�a;Tv(�Y�GD����*ضU˵����j5Ѫ��O�E��>M�vuo!��s0��b������-�xR��:��E\Z���{�&;����~<����wl(\n��_3�3����:�����7W~o\0�\0�<O=����s �颉�¥*s����E�% ���SY��Ϸ�ì-4F��qX�8������j�A��:|QM�J��cs7 �{\ZAf��?��Lc�N�p���9���6��Cbd%�0п�7�ټ���~�� lg�~�@��N#�<�3s�<��ܨtY�Dz��\"�v,�:�\0r4�>��=D�Ke-��}�YJtk�y]�Ys��9����f9���y�:����h�������&�Q*̈́�0����Su�IŔd�H� .AJ�s����\0��ڇ��;���H\'w�K�P�j�� Ђ�Z)�Yi&�\r\"�� @�~�J���\\dyH�\nj���B˪��\nVn�� o�ۿ\nvy9��!���:E�,|P�B�T�\r޼�\0V6���8\n}���xz�z�Pf[�����4ҙ���rgX��{Z��i�ҩ�v=Pf�N5�:S���1O7��=�8u�}�G2\0m\0������RA�.�i ��9�r9Y�mG0�`99O���\"kD0�`�7���m����\r��q\Z�cƜ�°��M��&�i������6��u���J\"�\'��8>R��>J�.�}�u\\{Rg!,=Q%�˲�f,~RC�x2^�����8�C��>�W�\"�n\0���~�����Ms4�[ e�ԓ�_N�.�ծΔ�*G�Z�����c�\"��?V���ɴ�@�S�2������i��+�������J��%��\n��i��Z3�N�n�J_���Ƙ�56�%�f�u �����=L>�\r���(��dMdv����n����o���s��HEn\'��)�.eb\0r& lבF\Z�כ����eԝ!T�EXp�-Y~)0�p���Ȭ\"l)<�\Zxu�y���§P����{�N�����_q9`U���=i�4�ȧ�� �K��s(�<,��\Z���� ��u�������M��%�D�Im�jN�y,���w�ל�X��2\0m\0z�sH\Z��]de�d%όT����J��������d�!�m�6\"�Z;��� P?�B\Z�O)M�`9�P\"䔅��҂o[�g+Λ\Zh�}�Dt�\'�!8�G 5����8�@¦\Z�N�\r;��e��?�!��C6�N�j��� ��5��A�@-f�cTG���hm�\Z�]�ġ����}\0�UWV_O���]봄�\'ƽ�֛�v겚�� =~�Yw�5r�0������y�f˳]�h��\0Z�Z*%4@��Y=/#M�J*��f�>�3]+��~�۾�]��W���(�5�Y ��!��X�����沙V��e1�\Zf�#Mpf{��l�Ӄ�ל�tHu ZzRHIS�����6�D��?w��H.��8%RA�\r�]���Ga�M�JK�Z.��)�;����\r����K�1�-G�?���a���\Zs*��IgE��ړ=�!�����4/�^rx����e�E�CKZ0ۭ� }�S?�;��0\0m\0�7>y�:nʇB��|���۹IP*�d+��\'q�G��d�7��v��4��RD��cXV�8ː���Qٱ^��C\0PmoՙR�����ܸ�d> G�,�������2�N�0��m�Dhք�\0��NH�c�v��j����ѷ�*d� �،�O�P}\nE�7�p�_��+�\0n�e\r�� :�Bs$<J67mY��f6���zAx��L�����:?-Y�<���3w��9����\r@��LzFX2Y�S���o,t%��f������ľ���6����b i E�(ߍ ��J&,;���ϊbD�l�I��C����¿�D^�c�gk���\'Ze�]�<����4�TriĖ��� ���vc�ڗ����v|�o�-�붝�9Q��}��VX�O��Y �:�Y���͕�y ]3�EL���������(��u}P�@:Y�\\YK�{-wItD8)����E>A΃YDw�T�hгtO�\"ByQ�4\na����Z#��L �nÑ͟Dk�ױ�>��v��J�S�c�ԡ�6�k]s�=Oz�1�������e�?R���&K���H��\0�R?��Q%S��P������e��E;-#(,� =�Ċ��N�*�����wɫ`y��Մ�/�7� Ԫ&�M�����{K�UK� �� �X5�ҜP�Ϭ���WN��� A�!R�\0k�E�, �eI\r��[�Qq�)0=Q�&�[���4\n�T�a/Ę4\0m\0z:@�ќj~Y�A�\\E�츉,=�x�7����h� \niNPE����,��=Ho\r)<J�,T���-�k�v���\\)F�P@Z�cV*���qx�gd�E\\\Zgb���ɨ$�d��҂\0���X(\re��f.\"R9�Q��@h;�lvD��Q��6q��{�;���;`��N@3�q^�� P�2r�n\rx����X�i��\"zMLѿ�\r8����sL�@��8F5�� c�&�h� ��)�(Bѱ�`���C���0T�P���a�8�����)�#�To�#�\0���P`�H�y�`�M�b�vz�����J�GP\0��R�r��=�� ��}���3Hk���_�T+p�9���R��S�U���J��`�����yKF�u5���a1�M*�4�Ȭ(�MO7F\"*_�T?)\"�yk`_�V,��`��N��h����W|�FCq�O��R��~L+�遤\"�W]=���0C#��s���3T#a\nD \'rz��H�LViN\Z�M�p�&��6V/���K�a���aVm.�3�.���K�_{h�������9�\0��gF@g��Z6I]��6��.L>�-����:*�8����Wۥ\r�y���C�ܭ8hyag����Z���(�s��kˀ���x���D���2��ٳ��0qU��a¡���4;Rfy��8<�#���JY M]Y���UH7�2�ԯ����R�;\' B9kd��sۖ���Y�G�D#�d�� ��B�i�4�l�י��Ty�@ʟ����ҏz+�d��j��$���Eq���9�6\r��M�In\Z�`��7؇���]�]�L: �v��lZ<`��(��x�\0�hй�C���SmVO�I����z�����WPh�C�i�ʚ�%G%F�p�8&��4����$c��Z�@�\0�ӛ��TfG�t�����Dp�9����(��յ��K�<Q<n�K�Jd�3Wh\"� 3\'E�2�Y��*�L ��Ո־�^�&���)hu��vnn�\0D��n�p�a�D�}�6�O��{h\n���tR6�-�I\0$!l��)Bʁ�V\Z÷m ��X�b%ͧW���ǒ�3Nd2!��s>:�y�w��\\Y�,���p�SF�[o�K����pN� ���4�9��9�F�g#@�t(ߢ��l�Xu���̽\0�ݿIm0\"oV�G�}/�\'>�Rx~ʥy�Ԏ�†�oT�q�Fq٭�E�D?D|l�\\��!Z�j,�f�Xr�/�ɖJ�vB����t�=+sە(ӥ�}�y\\�)�jxs�%_��ID�5�>U��\"2��Qr���k��4�$>����`\\b�3��oY+�0�F{����Ͱ ���>������*1���`�;k�:�������@\rA�fb!b�q�v`%1�N7c��\r�?�)k���>6�^��J\\]HdtB��Y`dj����LR�����EЂ6��% 3����Bk\n  ����pΒM��?�]��\0�\r@�M\0�g��\0tAqs����sV^��\0�Bi���ߡ4�JiS��,�R�H��6�Y��PE\'�\'�lH��Wj��4� \n�C��ak��c&m&��\\n��3�UF�h�]) ۭ��J�PH��{� r.)<��D(-���M�쀤/��*�k��sJ���!��0|� %�S\\:���v�\\�;|(�F�?u\Z��iF��\n�Fo���~va�*xͦ@8Z}��Za�u����;�{24����-�gf�M���|��q<y���Z�0F��4+*��:�>��8��_Dh����n��#�)ٳ�d�\"���t���_2hd�dB\"83�& ӣ��8��$����V�Z�$H�n�kG��I,rq�`��a� �8��aF�z̓�{�ϕ\Z�>�\0�[d�f��F�X\0�ׄ8>�T�#X������hl�:���([ud�&\n������\\V�]�Iզ�2EQp��3Q6��Q�%� ��&�8Ҕ�� �=Dv�]�eѶ�Q\\r�n\0F�\n�Z�FJ�VԶ�7Ԓ8PʘHs�b��jN\0��B|p;�G�BP�+����PtH�x���\\ �D¸��,Iğ���Y]_��Qt����f�y�����0���Ug&߀s^s��=9���Y���-�#� p^R��c���Y�����R��]��֣O�H\04�~L6B� �!*��e#}X6��ᢋ�Q��n\"m��&a���oh��E)��1V�?�C��F袺!�+�Z�V�;zAy&@ H瀝R�\"�b��Y�Š�r��Y?u�F��� ���hZ��\n�G���\n\Z�r��F��6s0�<�V\ZRJ�4�1�M�@c;j�?��c�E9>�4��哲��F6\\��9f�*{T$�M=�\n�r? �\Z%-�-�,ge]̭�(�VlM{\0uw��b��6b�kP<�\"��E�|�\n ~�M`�*D>,�uH#�J\0\0 \0IDAT v]�u)���΂T$m`��h=���>��^��~��lGe���!>�Q6�w�Ʋ���Rj+e�� ͨ������%+��*�Ƥ�c#Wc����@�����!�Aw�����R\n+ы�V4z/EՕo�H�l���u<��!4x���߫UB����uKFp��!xq��U��ChU�\r�[\r5iF�T;D3֜{�-��: \"8ji��eN����\04��.8\'�� ˟���2�N2�5��q\\�~)^wå�p��쯷l�c��Lns�\r@�M\0�I4�ez�\0�xl����+�i�pZ�>��w>\n��\rڰ� A��x4\nJ����w��� �ܓ�I)� U 乨�r��d�D�@cS�ӏ��GV���7��\0�K7���\"`d=�.S;��\'@�Mg�C��t)���]�t>%��;�Y�D\\� �Gz�Qx�K@8&\0�u����\Z<���JAml��$]�\04m8UF�?��m��(?�aO19��)k �_��_��p�� ��C���gh��V�v��ì5ɐy��FHeT��Q��;Cl~�0�4�^~�{�µ\"���l�FG���>��v A������*�8@�QC#�fd^��żE�D6G�JĈ��Pt��?���2gt��7�Y��aچ�z�!������|.\\����C�k�k6�h.�r�9�6\0��Rg�L��ӵ�����7��v�hj�bUA�̈<��6�\Za�\nH��J�^�V�g�����x(� t�+ (������\n`��jT2 6�՟�!�\'M����t��C�ig���һ��h�i�\n���!��ڻ�������!��=dRrZ!�.����3d��VjE�iV�zrE\n��\n�c�����)]0K} 4� B)B��E6\\᠖۪mܿ}�j��������Q��+ bd����!\r�(0�܀��BP��61���1ɜ[a �v�Z�#��ظ�\"�_���n[�wJ�CjC\0��Πgh��l\0��ZtBER���h��w�&pN�����rlX�T&}��W�]�9ʄ�Oqs�{��\0���9��9�,��9�Ƞ5g�:L�l�����W����SȬ y[R�ZEA�*3A�� P%JJ\'i,�����c��Jn�A;B����MpF/Geӭ�++�Z}R��|S<rO\"9���핡��ɗ��Ӫ���́ZI��!�͛��$��\n�݌��bj��P�\'QL���%����E��:�\Z�3-��P���U�-�O]��8�oĹo�c8��us_9�Oz��4�kS-Ұll�]�׶�ag3C��뻈�*V�ѡ\n�/A�lj\"�Ki`��p�$�ЪM�>1���\Z�\Z��\Za�j3@--`t͹X�~#,׃���\"��N��$��W�>���Y�ʠ ���i���`�$:�����%I-Q�I��UC9��m�\\�[���%_ƍ2�bAV\rI��:�xΉ�\Z�>:�))��;Jfw�%�ʺt�����|\0�S�7�Zm�v��&P����F�z� � ��j�Z��v��A0��,����Y���p�[u�_r���w|�#U\\� �jW��i�3����W�n�{p霹�¦�p%�Sנ<74��QBG�>\Z���������_�5��$�z@V�p���&��3�I�Ha� uE�u\\uF�?��\Z�p���ox?���²�\\�1��<N~x-��)�u*—=���R��>)m��\0��e��?��BQT\Z�瓎P ~�(lcj� \Zc�ULMUQo�)&�1�������J��4�\\���6)�8��)>�,��\r�A��͊���tBk���?K4�!\0�Za��u;i#Kd�)��to��Wa�!�4� ����stO�$ @��\0���p��يܽV���l���t���#_���DR�@��B&��?�b�E,f�|����T�,�PU�G�o��2�F�-�\0���������uj�UJ��W�%����:Aof�)���3<&��9��<�4�˱u��-2�9B�\Z��D�ħ������~ �1�\'�2%e��J B�G4��q�u�� �NM�h�i��Akk���,�Nt/�� �z7sM| \0�_:�l ̀�����c�����i�E��8D1�]1�V�����ƉS�̩QV�D�v����w�95�v}\n�&jA��0�nFW�A�o@Yȵ�h�JB:��PY2OY�\0i5�t�<#c&�� �Bi��)���Z��a�D���4�g5�o��_~�H7�8#4Zވu*wy8~��\Z�>;Z��A�QE��:��H�ZQ�U��G�� ����Q�J� ;���[�?�J��\\K���!SR\Zq Ϣ�RI��� ���[�#�R���߆3pRo>`$[Uk>h����(:K�^���� x�9��2�3�|\r�ӑ��V�@��#\0��ޏ�k���`�Sn(�+7�@o8`іU�d�T��Lbiϡ�A�+m{&�eX����^y��E�t��:�Q�U�S��k���\rLE >��-��.�#u\\da�N�e��|!ܰ�T7j�S���]�Jcԫ�8�g�\0t�j��D\rSm`,tq��\0�X�A���ÿ�����I��f�`�!��z����4N�̜5�,\r*�H�$��H���0Ee��&�4D�k��7_�W�v3\\ߗ�(�Ri�� ϰ/�g/@�n��\0�\Z>�@�f�\0�����߄�څ���K��0G,B�7ծrb�� �X4,I �\\�����]B�\ZF���/{\n��a\0,\0*}�ʺ���j����*?���6M�p�,i&;0�Q� ����&=v�\"���[�?�9��pl�Z== �t0A�rSYQ��r]U�K��a9�҄-�l�E��he��:K���w�^�3�UT��jEq\"6�T��u�\0��*�PdA��olm�[O@�4��.�a �v�s�c�PJ�(/�BE��-T����/Q���8�މv��������o��\n~��I�rLW{,�zgf�,�vyfY\r��X�1�|s/��X�� �GQԡ<ؽȟ���!j3 \0ZA�Vc$��]���\\~!\n.K�j%����S��Li�g@�W�gйz:(�lS�9- :���ϣ��G���pl�|-X�Lp<6�i�AYl��V��r��:`Y�T� D�(�s��2��\"d�6a��o���Z�Q�w��E\Z@�$���7Ӳc�B��j\"�jM;��>+@���\'H�=�\'�t��Q��H��,��0�� ��� c�H��.�]�����<�^Ф<�}M�� P���-��1�i©; �ᦷ�9��8�RQ�&�W��&}d�\ZN�R�V���[j���{`\r.B=�PpST����a�p���0��ن�P��$e�mUCI�n�>>��{��U��^o�P��#�\0k.��.|�j\0�Vm�2�[��Ee�]3\'b���Y�p�9�s���P\0�\"\nYT�t.��b���-�2i_jc��`�὿�J\\�R�ˊEm�i��3,{�!�TGy�Q�\n2���g+�z�G��q�=��w^���3�zO�g]������V�A�ןN�\0�27�W�\">�/��憡����R�0��3�L��x�#���%/�����ԇ\0D�R�l�w�\Z��sj���J��T\nh�iU#���O�t `-���C�p�\ZZ��ݔ�ۥ���r�J����-^;�;#�^]�Q�-�E\0+ُ�}�͟D��4JV -W�k����)Kᓪ ��TW��?ۈm��K��C� ���/sKmžaX��h;�eו��ź Fe����PWO���dD�<���/>>�)8�8�< Ÿ�uK��������gn��\r��F��%KB��&jG�`��=h�#T�!���Ͻ\0�.�M����O�KI�#Ϡ�0��j+���!Wd��I��9 ��5p?�i�D�qH��Q�c��\Z�b��x�A|�����2Zb��y4�Ҫ���T����>�2莝�N#��*�S�Y덄J @�c�?�����ꪓLkV��5���r��3�=���1�NTw��8h��\nܕ�a����Y��S��=��,>1yRo�O?�\nC Jy��ԊV���BoΑ�2�M�U�QM�͔��p��/!�u�dJ5a����n\"�b\n�A��� =�G�P�E�ƩX�%�\"�@a(���K�v2k\0����8Eǹ_���S&O�[2p��H�|��xh�\0�U�5 P�bɜ���wY0I���9œ�D�D�s��N�i����ػ�mB3��\\z��Q\Z��K��n�QM1���|��:��%j2�<>���|���xl�Q�)qv3ffН&�HzÊD�:�8���\'��Ch*��a5\n.~�� ��W]��KU\n��Gw��ӆ�\'|`�g@�TK�F\"+$��]*�a�< ����&�O�z�_ }�S��S�yb�I�ilǂ]eU�S;eȢX�I�� ���v�(�@i�M�t�M�)2�T�fM:k��#��}��Yo+�ba�j����R�.�L�H�q�g���GՁ� �))\"]��H���e�!���\"���{� (��Q:\\�)Q��ۑ�o���3�8҈ ��R�5�h\'��� E)?\n�a�s���K>\n%a<��0DE$�-� �I-(a�p %\'���;\Z�� �rl����Y�}�����C�`����(֞wZ�*nrU�t�<5UxU�t�Ix�\n� ��I*�%h�N�ef�:k��Y�uaD���0�6� ���v`���Z6Z��e���z���o�7�t��:JL-��˙�e\0��h^�zH7�e J��2U\ZģYR�Yc�����?\r��lvx��a{��AW6�f6�E�_�Ө퇸�d��E�R��W�kn\0��!C��\\���;R���M/��������\'�5[p����:9�H� SO.RW�ze�<qg�<�Q�@�����(\"w\n�7SL�ڨ�I�z�$�֚���U����@�g �T�P\'~Aڄ�Q\"R:���Y�eC,��P�cx�\nU��)�\"?�v*�g��rGkr��Bi�f�p���⵱w���^r*C�ŹP�yБP5���͍��&���5�Xof�Y�8h���~G:M��ͥ�ꈢҔ���P������K��s�a��m��Ûw�s_{��\0��˰�%X��¯�bn�x�����ΰQ\rK��9C�2j��\\�l�D���x�� ���]�0b��mK���OMm�2G��F\r�S�G�[\r���Ք����gC2hهP�UW8�D\n��}fE�[����O�Ye�ݕh/�����!�*Z����Jޖk�N�(~�?��`�=R/\'��w\n���=)���h/\nڌR�QM2<��$�R��c4 NL���&p��D9�H�>|ju����&��}����HǬ8 ��\0�F���(rw*?:;���ȮӞ�X\"���3��\0V;Dmb\n{�X������+�E�2\0\'��9 bf�bЯ�W���5��z_\r�� ���̨�P(�8��?)�aTWSl��Ul\\2�_|�\rX�b JN|����������E,��b8��8�=�w�̕��ʋ�픥�x�\'�+1푢1X&��]V�xN��u���\0�����}m���kd7$��͂d�]C��*���|\Z�dR�c���qI�Oa}�� �r�����@mi֠�w����U�E�S�gy>zw��� ഌ�9h>�̔xL�L�� s�߳�!8�{��Y�5c�DO��в��:f��gg��C��(@׃�s�6��*��iG)ZQ�V��D�<�` ���\r�g�k�Kzr���jQ@5�t\"���mǔG���O���8�ML�P���.���\0�(��������䜃��;O7>ʻ�=DZ�;[H(����]��ٜ�B��p��V/Ð�k/����Ħ�9����\'q�=_@�� ����+.�b� n�p>~���\0�E�lI;��Tmu�2�= �Zg>�t��P}\0���\0���JU��az;Ȯ�v��P.��]���s�_Á����O��q{!Z�*ɚ����QN��M^əj�,�V�\"�;���&���7��ތ,�M<�{,���m���R�;-��tf�LϹ�_5~�n!��:K�F9r,i[LbǑ\Z������~||w)�� ʞ�@�\0B����Rް+��k*/$�BM��� \'�v��%k���Cm�;����r�jEc�J�����!�0As��Ccر�\0�r+׮��%u�x� ΒA�۽ΞA �1�f�l)�F�D�s��Z���z�*yx�{/�����4����A�X��-�G��!<p�V$vM�N=�6��5�����\'oz5���-�ޮ����j�2���Zl_M}<Oȩ}ͬ���ꁹ%��\rL@��z�i��R� l}UC��ڏ`��� ���\Z��1բ,�h)hu�����R\'Y6��,8�T}Ȇ/@���3x��\0G��LE�� h.��bU�9c�4@O�)��w.�~,��m��DH`�a�)4-�WD(x�}}��[���lJa���rFHʶ�F��������X�B��8���7`�^H���q@�_���IA�.��`4_G���Mڊ\0\ZD����؁�k�`��ep��İ��Z)b��P�F��^�(�΢o&���I�ia\Z��BuD���Fc�&w�D\\;�������C�v�\r��s��v�\n�s�c����زe/,���ca���oX�u-��^�o��:,��.�~�. :Ene�j���+i�W/}����\Z�&�>�2hfΎ�)�)��}\r�L����H[�Ǿ� ��.ْ����ˀT�Z�C�~�u&�ڼ��ylɅ��.�j-��uoFe�����@�m�I=I� K>�K�3 ��V��ZY(`Uk6dب[��S����Zm��Xo�U�3�+��w9M)�\Ze{) �.w�!g��!״�[��U��#e�۠�A�\\��0��x��3�BI�I�®��� p��Q&h�\'R�T���CG�m�N��]�J������Ɇ\0]ӣ�|�׈_yjh�ΛN���BKTQ\Z �@S��6�j��΃�_�0~`�&����[ػw~��;�ц�x�@����?�-d���M���}~�:ܰa\0o��j\\{�r��i��rE�$\Z�M�HSb*�n�z�7@8U�<�8��.��ë���@�X�rВm !QG:y?���0�M��{�|��t���HP���b1Ê��h�8���ߎ�U�!��­�W�d9���\0z�w��e�?����~�lLϪt%c�3������S��TøH��r�U`��c�T�X��\"H��C(�B��d)Nx:�0o�T�= �TS3�� %ydY���z�܌��z5>/%�g���σ��J�8�$h��bQn+�o�,��L&����4�@G*cf�e*\0ͦ�P���\r���i�r/�]�\nE;��|?���\\u�%�����oR�H��h��O�m�&4 ��8X�����x�R�檵x��c~�rԋIx�p�\'���6�j�Èy�o1\0}�\0t�q �����2;�W~�YH���Gm�*Ḙ�P��H�Z+-4����gE*��~dKY��vy�U���e�Gqh�Ti H���=�1ݢ��������w<��t��rP��ݓu� -l9�B�NB�dsP�\\�=l���j�{��y���r�?W9J�� 4dc��!g�1Xk�`�%�Rs.˨��I�+>�\Zp�I#����\'*���d��;&H,g��\"�K\"x�:�H��;��g(7t�,�M/�0D���G�\"��9j�\n\ZXP�Uma��O`�P�&��7�����\n�Y +W.��E��a�˛�ϟ�&}x7�\r����-����/]������%�|�&\\}�jT|�t�yI�e�S�<�g�����(6�O֩q���Yb~�q�RV��Q���P�\\%�l8T�������@9i�M�Q&H� ��O�y��ޤү�s�Q)8>����n��5o�5|��+P�|��M�QKG939�fq��| �Ws:He��Bm9l?=�\'7�r}�t�K�m��XB��e_5vV<�ũ���kT{%\'�8\n��(�\"�\rɸ�8E;&�q��KFQQ�<����a��.v�]4�T�8d՗��O��y�j�o��?�Tj�����ޝ[���3��1GlhQ� �|o\ZK����Q�]NJ�2.ݰV���T����2�J6�/_�eK��ʣЇZ#����K��G��6���Hr�!l+F�+ \ZĂK6b��^����~�X5�\'�)�Hi�b=E[�Ȋ%��27S\0\0 \0IDAT�=�i��L}6e�jy�h.OB\"\n�+�z ,��������G�C! �����@�b�\0V�#�5\"Rj-���:��(n��%����n��]�s_�ܒ4%�K0�;NCVr��T{�K������Z����W�U�W���ʅ���1���T_�\ry�&3!7�՝y,�E!°��iq,npm\Z�L5T[!�/^���P�\'�R��Xg��.s����2CT���M���Zm)�\re8�k�U� \' �ՑV� �ӌ�s��(�h�5�#{��D)j��7a�҅�S����/y�72����8zn �RA����x���c�e��i�*���]��o�9��c�_�����⼅�z�LNHL\\l)xK!K\\%r���i4�0\0}�\0�J��loG�/JW��\0Z���c8���\0�ӂ�J����Yy^XpYN�Yw�q�-�\n���>4�����(��zإe�]T\0��`��*{%���SӛŊz�DQ�4�>OG5Wۙ[t�%\0eY�?��c{\'p pPs��, �a{\\džC�f�FՑߑ��R2��”����ڭ�\0\'�/\"��� �\'�z�F ��X,�Ҝ{� �<�IV&e�$��j+_�#�PM�]�V�;�_��Çٵf*6��s��A��8�� �b�U�^�2�д_ڿ�q��B��;���A\\~�y��+�lj�dwJ��h9��g>�e<�{7����ؾ�2,� I�d��Xv}��)�#>ιl�.���_-�Y9��O�����v ,��d��W�,z������2�8��R@J���;(RW>�9��O0��@JKPV�)l�z\"يI\'�F��)�E�N�፠:|!F�wa�]��eX��Y��y�m��2Ayx�Q_����?c�h�9��8���Q�-�E!u��z�=���R���q��Y�H� ��5�hG�9n7���VS���ȵ2������%/�K/����sP�����D��9ͼ*�C��j8R\0-��Bq����,�F�[�tl��H��1�s{Pt�AZCd���\"�)R�[p[!*i�sW/��]������@?,�a|�!��E��a��������w~냘�j(�)��+�x ~�����O�s��\Z�����7KZ1����ꋖ�o�o�j��\0� =%�J�� �2�}���*G�y�c7�l@q�qн�Z�r �ea�+�x}�����p�;�JB2(пA�GY�j-ㆥ�P�Q�J�l�IE�{$Au�5X����j��)��63�靃��:[~/��D���0���I�9�-���xt���6p����H�[�7E����+0��*��۪����q&��\0�(E����W�.]�8&�J���h���+H�\\�Rђ���YS\0Ze��+�V�9ى[{�(�\rKK ����w>QM*�P���RǢ j�#~6�ڊ۰�6F�\n.�p!*�Q�؋U����_n���ق��?C���w� �^�R|�K?����O\"�X� �؇�;_����������}{L!�H]�Њ[��l �_���n������J��5�E��7D��8�<�m�>����`2�)�V�T���4��v �g%?�5�]��Q��x 墇8a���l���Y��\"b���M2^���� �%Hֿ+oyRg�Oq������[GЫ��ѩ=��{�>!g7T�T�0�#�m��xp�L$\"�(.sT%p����.4Uh�A�C^W^��Jg˴Y��Y�F�:!��F��� Aja���X��\\,]��F*��\np�P�MY���_XToU��D��X����Dh9��$\"��g�F���t,��r�� �}���`Q����vW�h�h���%CK��T���@М���/��7��[����[��m�p���p��둤|�+�16�����^���s������������7 ���X�t>����Xz��X�x��(�{�`���X��K�R x@�|�ƼrQ(����ĩJ. @�=\0������K�1<�\0�D��ߢ��Ga����PXh�$N�����jo��_8c+Dj+�LR!��V�x.���M �O�A�}+rEt[�g�X�Wg$8�#D`Y7�HF��e��]G���6��a����7�-�Ce�)��I��%U2:�@����a���B�6���Z.�����&�k�!\\v�e8g�\n���E���2�j�L.%�xSi�Vt�Vi���*�`��j8ɍ�šdrڡ�Nt�9:V�ʍ.J�Tf��H)9X�SʍV�!�vU�1�Xش�<����b<�o���ވ�� ��;��;������A�^�K^�\no�ś�x�\"�~���?a��5ظf�G���WFf1U���oc|l ?��Wct�B<�����g���\r�޸Q�����Jf�k��)B������ʟ���`�@�%��Uyqs�w٪���jf\Z�t��L#fRi2@̎*G�ޙFq��N7�8Z��f�|%�������F\Z���\\r�R\"n*3LG\ny� � u��mX0������a|�*,��/��5�L�\'ZϠ�s�ι���SK����j ��g\ZI���Ա},B�A�(�*.�4�R�P�:����X1�e10n5���@\nid(��9�`���X�v-.>؅�� ��oy���%�V����E�8w̳e�����L��\Z����8(�siw�m�{0f�Y>����9h�v���)b|d�u���?�!�U|�v�-x��-H��ކ�V`h������p��D����J񫯿W^q��7h{) �����8|�JIΟ]��&����o>���Bip>,���i�P��+��}p*}��J�}�tB�뗎`Ӫ��v�2lZ�ρ��$�q�!�\0mi��s@��S�G�1s������[@7\0}6e�2\\�aK�q_��� �8&��_�m��$$�ڤAt��R��[1G ��)���5��SD(�����}����\n6�\0v� M�\'r���e\'���c�up�ᑝUL$.\"Ǘ�ZU\"����*�b�=U\'�\ZLjZ\r��*Ҁ�A���\Z����7��-��K.F�T���iȯ\n����.��s�Eg\"���Y�h�&/�\0���e��!*z8�<�P �X�E�ƹ�M��2;n6�l�~�i?�Ə1��I\\z�j����\"KZغml�F���o�\ZA+����ר6���\r{�pۍ��+ox5�\n,�\" �X���G��^Qmn카i��w_���#����yED��(�/I +m!�\\8~v�g� T,񻞷p <+@�mc�!\\s�y�p�J�YT��2p%���vZ[�>\'�������<�2h4�T\0��9c�sPp�0�߆��3��r�7}U{j� qã�Â�pwn>���Xx��7� ���k~ ��� ��ft�k��8�HM��X�S�(!�X�8�#�&�c���6�D�\'�\\w�:�t�}4DsL��:�v���Q��R c��2v�<^t1;p��Q�;N ̦��9��Q.<u�1k��_�g˽Y�� Z�:D�A*FK��`�:h��3�H�dN8t�k����0F�j��[8����}�q8�,vp���c�H,�&��\0�%;����/6�0o��UW�Ǧ��Q�\\�[1~����l7�z�ja�j�*l+��� ���R�*�[-���\'��� \ZC��|\Z�a��`͚�xɦ��oݏ���`źe��������?��n)���~�\\�\n+Gbt �����.X��2M���o�I�0�LR�g3\rt�B��@d2�-��vFlbP��؊,~xG0�߅�ԿVC��aa/od�6C ��N�� ��R��������U�]�ь{���WtV��ֵ�L:ܸ�p�r��\\��ja�8�\n���A�.��#x�`��P�(�yf�+m�yeTO��� �q��v������rPMl�&��;q񦍸쒋D�L��czH�Њˎ����\0��4fd�|oNi�4:��u�}��L�$4<?\r��1��b�Sv�B��R�� ����)|����Y݉;^}-nͫp�H\r��؃/~�~T�mL8�>�������q�r�E�` �S@��LJ��[�n���p饗��˂�Չ*��>��+��[��FT��Y��ɱ*Z���\"�\'B��_��~�:���ބO���Ѓ?�m��/��\Z�M�ko�]8} �~��W��fX�\0�������7-�k�=�\Z��I�x��h�Y�Q>��^�W2�0{V�<�g@�0�J;+O��o����_�C�O�`���B�u��/�6��-�M(�S���ƒ��Pϖb��w�t��wH�vk����}࣐�x��uj�C�]h䇶؈no�ۏ�;�\0vA,�%JŢL���P_�ёLg��&f��8G�&��:B����dV�w~�E8�[��\Ze_h)�N�Uk�KY����Gsr�������� ���lϛMr��9�乄N�z�W�Š[U�k�f� e�-A���FM M\\�b .ݴ%g\0����v��M��t�(R��_�����O�VQ�3�i�g��P9D!#ϬIIև���{q��n�^�b�C�#w�J��wx�G��~�Ux�ע�0S����\n��-�������g����-]��� �q�] ��W������/�p�_���nBş���oz��x�e��v�]����`+ʐ�J��\Zd�#0����ʢ� ����b��ol�����5�`�o��\0;�lLm���b��!t$��v�ҫ-�<wQ���������^��������z��wT��U��E12��,Բ l�Ė�Gз`�r���.��M*d�ǮQ�|�.J����VA�)�l��B �j`˶�q�\r��\r�e%D��Nk}�L��T���IQ����O����̬y��`�5+�����liF�}��Y6 ����Sb�]���q���b�`E����B���T����f��O��_���2R��$�Pp� �[�W�z\r֏VPষ67�����0-\ZĂ����K��{���?�K.Z�[n�����#�?��?|/.8w-���={�I�sߞ�������Ka�t�+��S��\r8ܥ8� j`��e�������?��F�Va�����9 ���X���o��vl��������>R��Sb�;q�v��I��A����܍��}&r��p]G�AG(�u؇���}\r�������u\"�Kuwv�f�ځU�x�I��=C����eX�����V�w��;���/�v�spVG�7z�jC���P+��O�C���z�c��fN?6D��i��T<M�&7k�AA�������J�������v��b������4��Z{N>Z�X{��f�9@��9�TkL�\n%�Z�*�}r�ʉN�:�Bj&I�f�Z���D5,��qÅ�cͲ%��T�\\�K���X��\n�������}��������;��!�|b+촍���/��1:��z�������7��$_��c��g��0b�0֬(� ��0��~���\0]�o��_�&��G�09^�m��211���\'��懰b��t�+����س�)\\}��b����oÿ~����h`����\'�a��8��_�E�+�p�B������������<���3s��z�,Y�\\��mlS\\�16���!��lzB��&�d�+! ���Khl ��n�r�d����̝��w�J2�$�����Ǘ��-]�2w��{��3f���\'��F�����Cr�dž��q��~oU�\nJ=�ZM�l.��!{��/�@^�f�\rs7R.g9 ��Q�.0��*�ȸ����Φd�C��mO�U��\Z �.\n�W����,\Z_���̹*G�c�|�R՚6ѸE<�U_�LF�]�z@�,�n$�9���EPT\Zw�3Wq�>����P�do7v2��J�6-b���pO�քÅ�.R��2��Mb����LwZj��j] ��m��������T�3s֡r_G���8����nwE@:�K���dl���F��R48u�D��ժ�_4݁�NYI��|A�&��1tYb �h��x~�A�����1��+.[J���)����V>��y�]���s���� ��<p�o9v4˭w���E��P�\Z��x�L&H[k�g�{������ﻋ%����Ky≵�|�8k�BV�<�P^,�Hw��QX1����\0k׮�_�G����iS�C�+�G_NCu��f�.;\nY�%T2��T�~C�ś��t9YA�g*hw���X�/1��� �� R�o\"���x�� �/���$7�-�-H�7��)��?��ؾ\ZW^��`����ox=9c#I&W; �s޿����p|#.��I���L\"���Ԉ1� Y]S�:ٺ*o�u5*/M#Y}j�G�͹)˜ O&E���L����ݲ�Y:1\'��0o��4֗�%)]�BW\r���t�\0����\" Bna�<��a���K�(�����ή�NT.�!Hn��Ѐ��5�,A+M(���)�9���}�ٺm\']1�}��0���ӧ0�q5�Ed���a����&�t>���UW~�ښ*Θ7����SX\\�M�;�z���R]]��q�� v��Mi����w��*�yj;O>u�\\��!�.`�W��m��ß�g�׹p�9\\v�E�i��Ч�鶶>^X�\"�F�1n����OqA��aC�f5��>����������Cᐡ�5��,/�\'.���\'Q�ӑ�2wq$r�m�䃓J�+\nI�O<qO�{��v߉��Y%\ZҰ�B߶��6�Fa�Y�D�[N�9�u�ʵ�Zƽ�^T �m �z������1�u�xc���2Nҙ��)����8�!!`iB_���H)�QF� F�*�U%�,�6�*E}��a�.M��݋�N%���a%\"j�.nAOF�`W�}�G�ĵ#���mP �e%T��¢���{���k%x��e�����wp%���OTjxR�A��.@�8h��\n����1���f*��5 X6cjk1{�pRI\"�i+MUM �=Q�+4v�l������\'�d�\\�tFi�cI���������dL��j������ ٵ��^����))�&җ�����ë7v4{wo��^����%� ?�o��ذq7k^ڄ/d1q�\ZG���5�+A>���l�tF����gXz���\"\"��wo����Ԡ�;B��WVRXS@��\Z�����5��HXΑܢ�Ca/bKvm92�$@��x�q�9Е\n:��մ�N3ݯ߁��^��-��s) ��4�4��P*�V�����h�t\Z#z� �.!���x��������dS�M��r05Hf5�uDi鉒���� �� ~�~�J2w�5�\'�>�7T\"�׽Wa�jXej��Jm�M��m;����*5��iK8��u���\n���<嫑Ө���R2�3��G�W����zUW����f�`@ ع4���\Z�,O(EcHh��uΈ_e \n�,�t2�n�� eR�m����Տ�����Yu��9�J�9����|�}�ض�!A����QVD\"\'j�t�|��7�l�B��hV��� ��~ ���;ή>\n�K�?�E%�v���N��i\ZG7p��� �Q�H\'��\r(��\ZI��;�^3�lJ��9�O�������0l�p4b���m���B\"1��\\���n�>�djg���,Ȉ�\0�z�N_�[���Om�Zh�ħ\n��@�V�q��xQ�5*�ඦ��>�6����>�J����S��Vz:q�U�To�|�0�\":�Q�^t=����Z�@B�;\Z��_�hO�$�H�t�,Z{b�$2\n����jv��2�7E%!�������r�cv��^��}�:���bT$��\"Q�Ljo%���t�(~�u$X����\\�����i�9 m���sV�F���4���u�v���\'��i��\0=XF7�%8���9�\rP�F� ��k@�1�/�B�����S��׾�s���̛5�š�<����:�9.Z1�U�E<��c���в.]2\'��;\'a�r�C/��s�(�+R4ۄ�CXy�tJE ����ٸy{��Sl�I_����.�`#�QJ)8���<��㼲q5_��\'(/.P�V�������nl�Ѧ��������cێ]�\r�chU9!�Sq�پ��[��8͇;�Y� �d���d��a��� �M�|)ʣ�y�;g�Q��&�Tv\'9迃��\nZ�g���*;Aaf\'�� ���0��* ������Y���R\0m��XU�u�P�[\0\0 \0IDAT�� q�tgϕ��Т��{�UC#���]Z�c����pWQ�� N�ֹ΀�u�[ @��Y:tn*� (���yU�t�M�SP��,˥(#і\0t[ v*�4�z,�5wp0�q��+h,\r*�c���Rvܪ`v�ڐ�s�x_\r �&aΩΕֽ��/��@�m\n�t�x��M�����s&�iQ Yi\nb}��N�9�Һ\\z����g.eެFn}d���>=H0�o���}�9s�r�7~Ð�>{�9T���%���:M�Q}t\r����3JQX���Xv�J��Ճ��\nH�#�?N\"��PUS������`��Y�t���Mi9~�Y�GS=M+��\'ɳkֳe�.� �,Y8��\ZI\'#J\re�\ZϿ���n���V,bْ���^Nj/�]�n|d�\Z6�\r��ncfN�1���|�2��+�<�%�(u�l��dՀQ��Q�9�9�A��8hu% 7*��8��m�l���i��O������yi<�\"�o��du��SL�o$�|�P͙��X�ot�$>a�dPn�אQ[X�n�ޱ�#������jL[�cM���K�{#β%�=��r�r�%�D����l�R��4ՆV�4=On�zTjW*g��],B��C�����XB�ս��:�KW̧Rp����閷��������V�9nZ�U\r���6�L�s�s��p�K�m ��u��\"n\Z��ڐ�E�씴.����̨(� c(+ Җ,��/�������q�c[yb��놉aď1m�0��{_�k�s�]���]���r����ǧ��<~l/��JMEW_��i�F)���j�V��§e1�\0��� ��д�j>f�\Z�<���� fq�����8N�����7Dkg]����L; N�ȗ��ű��8�e�u���9e��l���Ml�x\0�������N���&QP�/�1qV%S\ZK��s�=nAYX��qޔ���Wkh��OR�)�C���RA@Đa��-t��=���R�D<s��W��A�jK����PF�H�R���^L��@�_&Ty��U´������6�?����w�� ]̞ܰS5�&�eM#�8�Js��WY�DIΧ�j{��\\~�}�p�*�t�{v�$��cs2E�j]�QHy+�a�v��ҤRE�����MMG�o����Rgr؛�ǃ\0��N�*j��x�t� �\r� \0�[%����I�}$P�O��$�K���<W:� L��+Q1�2&iy��$��d32ʝ��q\r�jl���D�\Z.���|�[e�ġ�����z�38>��É��� �Θ����9EEy|��s����&��I�>zSE���j�o�ș�N烫QP���⮻��a ��USQ$,a���!�xiݳ�:n�…XY?�mn����!�5a>���PU�O�,��X��\\�=ҙ�*h��I:~�I�J��Ͽ���`��\\W�?$��\"�J�ź��b�棬~q{v7�a �N\Z��f7,��?gK���gP_�C�I�\r��6P�K9��<���$@��\0������1�x�(Hm�{���?G�ݫ�T�5!@�r�n�FVU�:�-��\Z���,��c4P��+�*��l����hٹ{:�\\��\Z��GWA ��T�Ѭ͡�4��}���4�dl]Uvr_��S[}�n��~��;x�����aoe�� �4��8�cMJb�}���z��Ʊ�X��T�Y�O{�cp�%��(����7����9ӣ�u���t�j�!i0*�[ q�K+��@�fi�!.�s&�/�g��(/b~c=CJ� �|P4����E\Zs�Π�lO=�SK)\'���Y�d�Xw��WF�W�j���I�L��=���v�������0?����)(q��w����a�����e�8m�)J#}�S[W����iVE^0ȁ�1���U�d�<�|d�<��%���̑��tR�\"!��ҥ����砛Y4\'���}<�z5E�>�_�-���2#P�K/�����g��������u�a���dT�����SGQ)Y�����9�t5�;��> ��!�v�bV�W��ҘH���L�k�jz��l� ����2��Q�yPm\"���x�JH�yt�FQ���/��s�� �Rn7��ι/@)%�{П�J#ne9��3..k\"��F�N2#����<x��5d�\0^-h��]��W\0-r4���k���~e3\Z��4�}l=x�����i�+����{o�ON��~s�;W�����`�g~��W���:_,�|dko[�����S�kŨRf���!�LJ%?��i�S�R���u��Z�[���vz(Ȝ��X�`\nc\Z�X�RC� ���)]m̟>���}�>���t���I�x�#��EK�p�Y�& ~v�m<���p���G?�.��΋k^V@��K.a�k���O�����TU��;q(�O��i�س{?��m̚5�p�{hm�OwO�u/oeێ�ʇz�i�7��}ئ\\ y����-���³f�d񹼶~??��-$���y4I���OHz9X�Fw\nF�1j�(��\"|�g0u��Aj�6|���\n�~%�I���7���&���\0Z.X�fNn�{��6=M�݉x�� ^5 ]ȁ� �^>���p���F�W}�����+r�W<���������f� ��x��e z�;��HJM�ٺOU����X��]]ε�s��{��~�o�����Gs��T��h]��*��GS~67��v$�]��BE1\rxj P^U�Y��xe��z����p�FR�|�H�\\�V�U� ����������V�p\Z�,*Y���V�HFJ#ӝ�����|�9�eLY�<��P N��\'�m���_�`�~�M�BU�P^|�E\Z��d_�~�q钩�u�dJ�������[zy��/���d�q������s<�����������O|�D&�s/ma߁�̛3�u�n��u���v�#���[�����[o��{�y�����L�V�T�����+�NXQU�� �l&��ӱ�Y?}�47QX��bO<�*���Nl-�<\0[��|^Yu�)\Z�щ�dK ��1�ei�}�lN�ֈ!S��E�ұ{�L.}���d��/�w\'@�j�*��8�L�2;�|��8{�(ۮt�9/�������rI‹)�~�$��}c��k䕝��\\� ^�St���I���TO^���q�X_����d�|EQæm�������z�����x݋3z�ϭ���e{�G@��M6� e�td ���,•��K���xۂ��A��v)�ݹ����ߺ)�N�\r6�ύtK��rLe4�e4ЪYJ\n�Jag$��Q@��=R�bv\'�4ɳ\\�l2/?�PEs��F����3�yu��}i�L�ᕥ�;���1vH��b?C�kU�d�&ZۻI�-�7�S�\"e�����I2�Gy~���\n�I�{�X��ϼJ8X��r�L\Z[����>���~惌3�����?��O~�C�r�h�/$c�e�3`�1��b��BG��\n�m�N��d��i�\n�����$<�<�_�@�/��X�JzA4[��h��a�0�\Z;������ �R(���r;3��CoH�? ��%���ɿ$�\0d0�$�9Hצ۱��K�u����[U�����(T:�xzx�-���}c�=� �j���q?���\n��ƛt�Z6�\nBG5��Dl��$������e���P�9�����T,�w�q�w�ZxFw�\\�� �B�z9ִS���z�6MҼ��|�Bf���P�j���v�.<���F��C*9��yl(S}OJ�KC���Tꉀ�e+�U� k92-qW\"�ˤ��>�M���l��t;6�ΜQ!��t9���3l�a?~_�Z$w�8x��t<��I���!I?�� �[������d�\"�2U�W3Dq#K���%N~YE ��VJ��5���*�\\۱N\ZF������[6*\ns��bHI5a��ٷ� ͇:yu�&�l/K�c����u���CB�;z��(T�3i�;n���`ժU�%��x�c-)�l�5�֐H�r��g�RY^F{k��1q\\#?��>�:�ˊ=e(sgUr�3�Y[���4e(F-�*��d����w_-�enͫ<!ĸ�1 �tm�����(�4�j�������3MR�%�U^ ����}�K?Ip�r�z����\Zx[G��q��\0=�r�w�tm/khId�~�8]�9��W s�)���6M4�P��^\"KU�TŽ늗v\'�ĵ��o��C�^M�y\Zñ�;&f��cM�I�u+��D&K[�`s{��c�d���)A����s\0�6��F�����A�$�:7��(7��څ:d-�w���̌;��ؤ-�La��`��L$ h:�\\r�A;vp�mwp���\\~��� G��� 64��&M�D*����=�x\"F2#���eMF�NyU��0٬;eI��J�������\"?�%��Ȫ�Ĕ\n7莈ek������O�ȫ[v1k�h�t�Y3�p�9 �X�z ���_سk�]��/}�s�ݽ���,C�F�o�{��R.Xqm-�0�5U�ط��_��vv�keȐ.��l�K�̘>U��ɤ3��SY&��n�����5�v\r�2?#�W������%�����̒���rt�P�d�ު���]Ig-5���f�YRt��d^����>5��\0�5=ѓCxi�\\�;\'J�B�Z-�~\0�����j$v�_&���ܷ���\0ZU�9���Wa�6���Ѕ���QY:�G<e�ʘ��X���Ns�����=WS�[d�6^��i\"�����\\\0Z��8�G���YY\"F\"���\n��GW1O���J��κv���*�d��FEf�Ю���an�;ι�zp��h��0%�JL�M5�-ϝ��t��Y3�R��[�8�t�)u�����b�ν�~σ�?�]q\r��J�}�;��|eܟ�%H�3�$�0�!\Z���I�U\Z3������r�� z^�p�5�O~~{�V�s����eZ]�؆\Z������C&\ZW�ӒL��I�|��?�p��n���˄�|���1e��F���b�}߽���QZ8�_��\'��r:�]{-O<��o��,^2�O}�c��\"i&q�<�l<ďr#G[;� ����>N�ɼ�z\r_�@UU9#G#�Jr���o(�/�o��~p# ��Z8�3+��Χ�XL�sv����5��H����@+5�-KQ�2zI4?M�������:�u�k�)=��޺��j &�#��d�2\nǯ�旰|C�D�z�x�m��۽k�����ɩ-�>Ws5�5���;�]T��O�����BdK�^�r�se�9�v���Nn�O8J/\Z�m�Z��\n�]I�PGBqȢ����P3Ѯv� �ND�f�4E}�%�|�s�b����Σ�d�3�)�ٝnT!���Uȹ1�Ke���������k���j��g�t�-KS��e�U�HjJ�ضq��f���*�O�@kW�G^؎��s�ylڼ��׾̒S�s�YsVUJ_<M��L%��Q� �� E���������QM��5���}O�c�f�� �@��<�v�x���0v\\�sǏ%(�G&A� ���\\�o7bi��v��?��Ec�ĵ�R_]���*�Q|>:{����lx�U&�+岋/�ig7�����K�Q;GӲ�O��lc����[V_G^��aD-;w��w7��P ̇��\0y�:����6l�]w-Y�z�sl�IP:{c�-�zə̚8�@nS�h�ܹ��I�~o�kr$�%ԄDWe �d��_�3B�����{��u��-�Nw�Э�\\4tЇc�1+�Rz��qB��m�ǒ���h�D���ν� \0��r\Z���B�nxa+�#��մ[2�&n�.e.jzi1�:0�r+hh��vw\Z� �����ݲ(�>�M�R��~�����{:H�v*?��l] �%˗3n�(̌��! y,Q�(˛.�΍��ѡn��;8����\\�f��E�C:2�-����\'H\"�O$S`f( ����+�WBko��;w(C�������^�z��8�>�Y��X1�+W�C����k��|��5���]���!A�tG)!�@!���/ik9ʜ���W��Ǯ`ߞf�� �P����|�G��+�fמ}Ԇ�KVp�i3IX\\���$�.&��SV���f3vl#/<���#���5�r��,�l\n��� �HZ�AJ\Z�~+�{�嗿��pAcF7�޺��S���+y��)*4Yu�Jt#�X<�Сe�>��;ZU�L��oi��?��q\n#��X�X��.[N^?@��vnpe@{���\"Ļ��Vb.O�.�*\'���1\"[�}���b��\0�+qG��B�RE+:̋S�[���+G���G/\Z��.f�� \0�/u�ʹn����\"iv�D�� ��4�� ���#�t�;�\Z�ޥ�%.�����O�՜��M�|��(�`�/�u��P�h��D�<v�H�1R����Ib����_Z���W\n]S*L���\\B�d�znd���&��]��Ơ��*ZC�ْ\\A�T��x�\rc%C*CR|�#�DZ���u��Qu��J����1C Y�d9�Lx�5�;zU|m6�KU��e�F1}�(\nK��Ԗ�<�� ��(3&UsŅg0���p �$����k���+�=����+�=����G�9��Y�:z,^�~����r�_%�$�Ϙ�ǯZ�|��z�ǞZGOD�C:��+[v(�$���҇�ʧ��s�����O���55�l��\r�꺭�ܽ�+�����R���ٍw��\Z��8��A��������FYq���z�l;�_�z����U�� �l}m;�d���u��Ml��(6\"L(I�Ͼ���B��8��q��~�T�\n���]\0W6��vJh��D�3�������\Z�kJx�a�H,5��3�w\'��IB�����цSy��0F,\0�t�%|�4��o�W�Ok����\Z�4i� ��/�QsV��-zI2j��\rӨ������v�gux�����\n�b_�U�2:R����Y�X:� ��F��f��HD#J� T@�]ȂE��:i�RE��]��h�6d՟���\0�1�:X����!U��k�V�;#\nSքTZ�������6�sΌ l>\Z�#��;+N�y˗�v{�?�\Zm�Q\n�:���@7��\\�H���\"vOq罏QZZAO�f����^p\n�?��C���.|�E�3�I��\\�L�����\'��BjW�[Vs�+Ŏ�)\nZ��VPS^���H?f��׷�g��S�vR�g?��]z6�({��#ei 9��� ���oi>��k>|˗,a��vn�����)(\r����+WQ��?�%��ʸ���x�����[Xy�<�����ӛ�?��o�\\y6sN�������^�qj����k�W�).=�2�n!��p���@��O� AK�t�l��_��Z���7�7?�*h׮2�ZkMW١����w$����m,�k���>j0&^I���Q�������N@h׏S�22�Ǝc=l�u���1�c#�����$�8�pѮ�Y�Sn:��/�.����?�)(�&F���@��Ja�����d��Q\"Ǐp��n���j����`2���j�̚��#�+[<2<���D��o�a�\Z�D;�\\���\\��Ĕ�t��D2�|�߹����G�sbd�Θu\n�R��D��o���S�3c� zi/��$�|C�3���~��c�Iœ�r����h � �;7r΢9 �.\'�ֹ{�~�x�9.:o>+̤�P\'�M*\0�1����;�9���Sg�#��8���7���WY>o�ΘMP��hl����}��>��K�b!E5���F�1sl1�x!ƍ��\'��k6��s{X����1N�V×?�i��\ny������gi9r�P^�_����Na��k1t�Y�g�5\nG�63y�h�M��K��ϘFAq1��g-��{i�/��l����8� �ܳH���V�M���~����Hq(�V��p�2���K�Nד_��!|N�sf�jDi0�.�!\0-Ԉl�I�-5�!�c����(�����\rB���׉�A۶��b���{o�< u�\r��Nbh<��v�z�ʪ!ؚK7�J��Hf���!�ԜiM.�+Ge�MByQ��ǧ����F���S.U�5�ru��l:A����{��y�\0�x�V���ؒ�]Q���VS�-.{��v���b��p�C �,��H�H�+�S�B^�d񢖪Y8h5E())Li*��M:%F�Y��Iu~>-��̉�����45RSɾ��i5��H��6���Y<o������3{���2�ڳoK/$�/�A�N{o���~p�vn��ZΒy�(��Y��eb�>�Z�W:��\0\0 \0IDAT_ �RY�r�}̜8�� ���癍�y���[]��.����Fw�����m{vQ3|q8��C@a��I\'^��o~�Yƍ�Γ��~n��y�I���}�e�g�����^~��{ص��`0NCC�O}�\Z��]w?B����.=�ٳ��խ�ٳ�ٳ\'R?j �����sۛ�ojL�XK�l����(��F�bTK�ҽ�yw�����nh�~�0L����T5a\']��P�CNJ5\0e�Y�V�]��C�y^�ϫ�,�3�c� ��`ع_��U@aN��O9�<��:����������?�C�c��\'��C�i�{~3�\'��?kH2�Aw,IBl2G�n(���32����8y?�5����;���r���s�ZuEw��d��{8�o\'��㘶���MDa�9m�l�2�MԖ�Y�ۊ���1m ���I?�Q>ՊS���FTR��<A�� ([���&�d�1(c��t�4�dzc,�7���w6N����3v��f��2>�� H9�j ��5�YW�\'�^EeQ1[_�\"�nL�<���\"�mc��}R����8Ǻ�����#�r`�6.�[�G�!x��:���S�p���Qc���C��˚����{(��oy���ֳhj�}�* Bt�����0g�X.~�\n���[����{ȦR��g�R�}��TVc9>���fOS �X�Xw��R|ZRQb/l8�~M�4�,_<� �=���������[���3���+���~��M{�?.�~�:|�o~���8@޸q�?c2V���(V}���^6�^���l��+�� ��o��rVӂ\Zy~�|_\'�O~�`���h�@���O|���܊[�%��,2��� EU~�>�@!����|���m�{0�ǫ�����s,��P���daI��qO+/�i�q�$d�����l��X�������;����y��9�_qMz\\����n�h�$�-�h;����$z#J#ܑ5�yL�:��K��7|J7�޷pƖ�f�VYt���C&e�D8��xjx��!vN��������\"�^�P �T�j\'�\'-��>�����;���~y;���/���ӧp<���0�;�2��Ƒ��~� �ΘIaE��v*),%,砞\"�٤ćB2�Iz�Z��������\Z?���LkJ��♗6��s��+)*��3��׿b��9e�B% |eG\'7��������( h�K����.]��3��a۞.~s㽘���N��ٍ�Q��}�,���01�ғlE\'K&+�7��/��?����,��4#��9u5����r���0� ����5�<q<��6=��Һ&ּ��G^ڀT N�D]��k�S�B�s)�^ʷ�1t~����b{��r �-U�9�P\Z�@7ɵ?��v\'>+���z�J�m\ng�r�����F��!hIjp1� �3��5Ӥu����ӫK3�JW\Z�8�����*O���te��gi<�f=�<F�nD��\n�{�Y�b L/��s�/����j${���`��P4��%��dbm�9D��t;��P#�h���Ɖ�y�\\�+��$SDm���g�.+?hO#-�S4��EZCe J�,���0-E��Z��Z��\"�K�X�`>��p�̛5�n�34t�F{�áH�/|��h����1�0�U/S?}�\\��:}�<�v O��&�\Zʗ>���1u�t��T��d�\"m\'b�xr�aV?� ����.fXy���X�׮���(�ֳl�b��\n���l��˿��v�z���G��̹U���uҎ�<�dHevЧF�$P�`�ƗQn��96B�ZFW��Hg�0bG+��D:�?���� gs�Ө>L����vPTTĦM��=�t~��(��b�������Ѓ$�������S(����R� ��(���\'���>ߍ\0�n��S���>�\"h{�s��G0��+���%Z���7.�S<��<ݰ�L�R�A�܏S9�<�_� �u�#��p�X\Z J��?�����{/o�P^��Ak��ާ���S�bM���h���TBn������{�?�7R!������㹺jO��Tb\r�`�Hu2Jw[+��q`�kd�Ri�^vA9�&Ma�Yb��V\r*�v�gq@���T�. ͡K��\0�p��\"_�$�(� 씩|�ţ$�D��TU %����r?�}���޼� �k3~8;����_bá�Z#i&WέQ���Gش�9>r���S�m��Ⱥu�3vx5_��yL�4���.R�=T���GG�d_{�{}�Pa��5�Ԗ�\\�r>C�,P���y��~��h�βg�N�\n5�r�*�kJIg�n�����T�� E��S���E��݇�q�e7�T�r�6~#C*��@[���XZ�#��^[�&�)i��N�_�����ڦ��_t6O=�\Z�\0>_�}LM�ϰ)7\\��9]���.�T����^eM�7,��&�[^m�6�vY��C��%z)���`�w=��\Z��e���P�]�����O� `�4�@��d�\'��h�\rz|���-e��kq�u\"�SQ�nk��m�;���?�:��\\�eӵ�x��[ϰQ��WV*����GSt��du��B�x p��ip\'�}��~g��kJ#J���@%�����I&#�y��&��I&��״I�\n���1cs�L@�%���\'@�ɐ�����������C��]kь���p��b�e�;�\\��P>{�$�Z#lG�0��S&�!�~���>�Q��q��~��h��iP`\'9oRKO��\nsl�^&��*d_�Qvl�è�Z-�JaA��ϯ�� ��1\r$# Z;\"čB��n���;h=���3Yq�\Z��H���ߠ�����-��˼��F�����E\\�j���b����ݯ3cl-��UQVV�c��4n���hʤ�#K__�h_J�AEEaJ�����)/SQ��r2�h9$�&}i����׿��H��Ơ�꥿�Y�����!����,<}\"�V;����xS����U�����$��ޡ8�U�� �\0:\r�����?R`���j��D���-e��G��Ye��v�#T�h�\ro�#���r*#V}�?Z5�\\����� o����w�zr��PQ�i��������\'SV^���ħ\0�#�Q�Vo6l2ؤ�h%����\"�\\|\'0=Xn��ݴowX��d�� ِ�Ҳ��vi=FgW;}i���=�����ǘ��hV]�\ri�َ�/;�gv���6�噳d�\n�0E\Z���!C/�8�`fRL�:�Mۚ�Du�+ )�VQ‚���P_y!�����~��y��#���_ ���~���;0���Q7t�P>>��?�s��\0�5.gn��ڻH��8¥��yx�~^ٴ�޾(u��L���C{ �d�0v�4V�}���V���+OႥ�P^TD���L���U���k.�����4S5IM��\'^��\'ֳ}w}qq�s�E�>�&\rqm��YJ�aƏʅ+f3o�%��-\r�2������/fێ6t\'�ޓ$]XR�8r=H�#��I<hR;gsg�$?��}�J\nr翗�\Z���; ���Z{�Uй.����K�sev�xhF��U�<���JH|!���\nZ& �e�P���\0���5Cy��dӧ�D�|��iT��y�<M���M����C��x���?<���o�F��d���<���L�>�\niNi��uEq��,5��.�7���kb�LVʋA7��w�����PH9v�[���r��թ��WI[JUc�9N�����M���D�{HgČb�L���iSYW�.\'RA�O�H�+D���h\rq���� �H�`F��Ĥ�R��2���K� ��I���V�QVhP\n��3\Z��H�AV�8�-�meϱ��]L-Ks��Z�LE0T�#��H��\ZGS{:���YS[UOSk7-�}��(C\n������\"�������tX�J�a���6-���2� ���Y�)��ͬH�R�>r���0�E�2\\HFsH���;߻�CMQ����T�U�q�(�ժ\nx��;NP���$R��>o�>���iVC�t�[\Z)M�Hw����Q6n=�5��^����-�焨e��2�\\8�y3ȋ�����pN^���}�S�d�����&�@ �JL\\Xrߝ X8|Ͽ�߻��%�.@ K�md]�zC8h��N<�eXE��$��\nG��t%���4��%O.�\n.�6HN���D���po4V|�_��ν�m`��S(+.�0dKj�ޗ�-j��C\n�O��w��sw� �{o%��@��)\n�O�%V��-\Zt\'�$盧�\0���Fk��x��Lo��z�&O�E]u9vFdq���)!Nn��J�����0���K����Q��V\"F�m��9��@~0����,5��#OY��}Y�o\'`�+?��F�����u]��r�,|v���4]}r�D\"*�$??���eĘ�����<��Z�N��#��dj�E!Ap��B�bY6n�ϡ�b���/PQZ����\\�lu�\nHuQ��j�Y�O��o�67�i������y�oۏ31�$e�y|�_>����0u�(��J������ރ-�T�p��̜<��/ZΔ��2q����gw��_݊O������c���%Ԯ��,�1_����0s�����u�� �<5Rn��W��\0�^�0��YޗN)����U�q2�n�u��Tj�l\\��j��X����6��V�e�Iڷ��O�a��r��Q8�j�F����qs�_�jZ\0����k���W�ű�@7�>��)ӧSW7�&�2�N��͐td���tQ��H\Z����g��2��\n�\"�ylVN����M7\nȈ�++���(ѣM���B��}tw�7\rҁJ\n�G3n�h&��@PF���d�4�V�<Ei86Ɍ��~�Qv�d�ε�*�g� L9��X1g���\n����`Թ�3� �%�:�Oݒr�)-.$�Nә�r�C[I�i�5QSYF,�C�0ᥫx���ғH�Fi,p��)�R����0��#�<��J�m|hA���Aya���0�@����\'_Xþ}�X|� �GI8_�d���賸��W��\r�La%��?s,睳�L:BC�7����e�}6c�M\"����C0��\'^aߞ� )�s��9,;m�r�ڬ=\Z��t���괵�q�m�ӛV6��)�B�0�sљL��gL~�O�o)��h�WF����d��-�]Gq��v��\nW� 2����a���������vv����n������9�C��5��B�<�|��ƭ�b�58y��t)��|q#�\\u�7��pY��;3��z�7�\Z^�-�ek��%�\rw?Ɉq��<���f�1-�Y���I%WsmQ��*���}�W���o�֟����Du�pny��KQ^�6~]#-S�B3%��k;Dg�v��GK�A��R�F)գG3c���8fZI�i(6����fIi1���8�X�I�L�i�\r�8}���!\n�+i��ij;Ρ6q��RfJb�5a�fL��U�r?ǀ!;+ۧ��i���-��m� R�E�%D�:ZF ���xR�dv6A9q捭b圑��4w��D�9��!yA��������(*!n��@���7�G��LE(���k��ܳ��竴�\r;�������>���Ǚ�P�׾�%Ln�k\r����7��d�jk���}���6�{7�FkgZ6I]���5 �Ri3&Alݯ�l\n�(�W7��_�]���-�Q��������fL���#\nXu�l*b�;TUc���ON������9s���� ���;��8m$_����7)5�x%� K���N�\\C-\Z�~Y�0ܴ�� ��V�V1��y��?l1�yB��,U`�m\Z��U�q�|���;��G�����A��F3o�T�j:��8�Rt&�Sw�C����ٹ����x��X�hq�y���?r��r�%xTv j��&���t7�a�Kk����\"S\\ΰq�4���ߏ��s2�!�ތJ1��Z�7R2�-�$�ğ51�4N,��3&s��3U�/X���[�Ѵ��c�j�~ե����̝>ȼ9�I�v1����_})Ae�e���ptE��+�c{_�\Z×�)��+����SR53P��à��ʗ�ܹ�Y0�F���x���۳�C���e�+~:,��6�X\Zf<F}y1�CkH�~~�F�}��l�R��o}j%��8�\0q-ċ����_�W5��C&+�dڄ���0��^z���>�@��1Ь4-�m�0�h�|���1y��]�ݰ�}�v�7[����&��KK\r�*\r�Ҋi��������s� %������[,�x1c��O��S&(o�/u�RTg�9\'�^��F���t\\U� �A8�%8H8(I������g�3�pt�5L%�?�BU�2�-\'�\ZW��\\���sC�$|�\'\\N�̫0�#@ zU��#�`.���mۛ�>��2pU�k��2ZS\Z���)DV�\\Lضē����ܛ���T� \'�;����<��&@����R.��}�\\cp� �\'�Zr:tٳ��6V&��}���^��P�X�;������\Z9|8�A���1��Dg���RC4��%��<K����m2���s�0�n(���+��O���sN�(�P5\'�O�B2���H3&6�q�n��N.��2fLEuq��PH\r�$����;���2���6�|t#�fJ;�m��9e�&A+EM������$�8�z��!����y�Q[E2X��v�f�^���Yǵ��0�n��__�O�Q���a�|�ڋhh�vnq#�����7�w/a�Ne(Ʒ���jkxiK3���~:b)���`6�$�F6�O��]�\\<�\\q ���OO��ڍ����ǟeXM�D�T���7�+���{�`�&�z�6�UL�(��Yg�fZm��N�@}m�\n�q�{dk��^������?F�w#@�Љ[��* ���|��#��rc�r���Sl�z`�U!�.���\r͑�\\���~.g��\nW�� 8�H��OQ�p&hE����Q�~��7\\�\Z컊�w�x�n\n�x<H�-�����6n}z �_��Q! ]��:��,u%�V87Ls§߯�x \Z��o�~�&vrձ�X��+���D]UΧC�!7��Mb��j���s2ر���8~h/�r��=�ϸq��N��0S l�0�qgԗ4�-E�8�(��,�:UU��8�ζ�{�5e\n�%>j+���8���j:�gU3��ɚ���v~%���� �PY����:̹����u��G�)��E[��e&BȊSt(.*���>3BЎp˯�g��a*���;������=)Z�iZ�&�w�\'������7Lz�{���d��q��)��:_q����i���m�|���i,�R��.��X�� ��K\"NـN6��� h��u�4S�3�8��y���,�yn+�759���d.��[B2֭ ���$��Oe�ΣdC�顆��no\'�0m�N�>�3\'ײl�h�s!˴\Z�Q�Qo�������d������6����N*�Ϡ�/U��|�Ho����ۉ�H�����T<[�ّ�Y�M��d�����B��u��q5c/��PUYkB��-W��ŀ[��M��o���>O\n��Z�n������O0e�T�9mN6�����L�q �o��J�6���� qSj߼��Ȗ7�I9\0v��u��IohO-へ[}�*��?�yhB:F�����;سu+݉ %U�ԏ\ZMUY��L�� ���\riMt��8�l�s�Ƅ1\r����^S���^��ڪb�����shn�Tʈ��Ƥ1u�uL-ȑ�^~w�cd2 �[q*�O��b�>���X�mi_���C{O���P�e�L� r�i�\ZVϳ/�\'��ɸ�\"�?��;J��:��������6�� v�*�(�V���,�븤8�G�7�).q;vl�j�,R�DJ�D�I� �\0�w �\0���O�k����6�/�3k����S޳߽�������n���U�����080©���\\���%Kյ��ƾ=��l^;����p��y4f28A�%:\"R98>}A��}�k���~DK�ظ��}���}�����A�kR�ܶm���[Ķ�|J���z����jeu�l�����C���C��ⳟ��Jq����{��W�~ ��?M���V��}�HEU��[6_ΕK����U��i$v�謤/F�vZ{&��0��L��-#��^�6�i�0:Pe���Q��ii\n:�I�/����9������ۄ��) �.+F�N�q���Mn \\�t�ZM8��� �m�ݬ���\'H60�S\0\0 \0IDAT�xgYf�\\�)��kZ��bw�1X����rp����P����O�CP/)8R�u�`�Rw}���C\Z��P*��f��>�F�ќ��ލ�N�:tsS��y�<X�h��N�ژ��w��p� -�<���K�ɇ��ECB\Z|��9�ʋ�8�G�)�ܳ��==4�au�8�#T>q��0�_g݂��r��\r-�9v�g_��܎&>�q��v��F��Ux��}�<z�(�h���:~�U�<�?Y�r��1���شf�n:e˦o\"���0�آw�����˓��$�Uh�+�����GnX�\Z0g&t�qv[#m~�����Tc�^ )������ ö���%����d�\"���~���Q|�g�W�T������|�\'q�2�A���S���?��+T�6#&��p�m��e�YN�N�~��7.���6���O���(n�4�޺�O����F b�������3<��ajNA7)�Eql��]�se+wn���tr�e�iϹ2��uiʑ�Ty�`]��N�/�NJv��:�D-�ZM� o�y��%kh��^s��X�AU��\0�XR�7�Y\nK�<A8��ѭ_�ޟ����pI jƧ%�4!B����d[U��Z�`���`����[�u�\'�;.%� m(Rڗ��Ip�\0mDL\'��N$cZ��$RkJ��!iD9 ���{��7�������sō\\Gl�940ư$�J?t� \Z��-z�%xO�6K����^�`�0�^t�4ʘヌ/o��.T61�_/�����FJdHv�����8r�\0GN��a��,,��1�L\')b_%�Si��`���s��rLxm����Cg���u,l9�f���>^=2���2�jJk� !��\n��-�pݺ���^���@?w�|�M\r�O��3��zK���k�������������ʒ��\0��������7 ��F\'Վ�1{�����*-M�]�CO{�y��,�jg�����JTfԚ��������dܘU�\\>��{�5k�����z9}&l1�p\\J������ ��|���{�2���<���a���ٛ��ʵԫEu�/����H̋���{�aJe1��(t�����������q�|9M��>�ѷ1=A�d.�� ������ :�̑�솮����M.�mgg�dPF��R9� #[��L��LTW[+Q� P1�G�:�jI�&�N�ݐ!\\i3v��i��bԉ=�f���bo��\'>�ZǙd�~�I�=�p^�jr�tV�0%$���c���߿��7�ƼEs� -�ň#��\"�v4�2�#��& 3*U�C5��i6<5����t���?S6���1�/3����\"2�?r��_`&aw�F\'�1d��ԇ��;r��v죘�fa{++Z��k��K�x�R\'.ױ��ٴ���rnTg$3�-��%?�ﻎ�e9���� �,��P��8�ϕ��V;�G�X������.�ev��ͥk��tn��1�Dp�\\����OmgL�_�\"��<��\'���ͺ�\n5SF�m/�#�2\\#�{kS���VU;D��e�@5����Y�x�\r�u�||�����?� +w�U��i?��Ͼ��9t����_��=�(����{99�mHSU�\Z#S��s��ν����n=�}ne�o�L�0��FS���2.A ϊG9ld��屧w������[��l�ݼ�V{�oZΊY��<��sx#-�.� �蟟\0-���/B#�/�U\"4��i�.�q���������_�|l \r�0���3E(j2W��*��4%� �K��5�\nd�ZY�%4^�Ӻ���t���Ԡ����Bћ2��܏�jI�S�\'Ӊ����[[Pxj/����������h��Ʊ!�j�lџ����\0��\Z\"�K\'���,Q&qj O��I������[�e�5k$ J� �}5;�D�O�7l�>A\\f��(�^z�a����M�j�3Q�ה�W��Eڭ*�~K�w+�3�vsj�B���т��<s��=�*E|B� �%��4�c��z�kI�/>M ��ǖ^a��Y�]4O}+V�7�<�W����\Z�惷lb��.:���߭��&5����3:vB� \\�S���.Y1��BVi�������{/��|�v�:L�=��}�}�z���V�p��3���;�]5 ����O��~��f۫\'���eJ2 �uUz���� ~�7��{?L�9˟߿�����Z�3|�O~ /c� B98�k �&B6���s|㻏ѽ���?��9]z\nw\\���|_�n��4����f�����YˠM�6�n�f���d3���d�ʡ�� �9w?������~�L\\�l9�$��)Ba#$VΧDW/�l\\^����P��:�Xm�PDvg�����+�4�\'>�� t�y;�D\Z����T���&��Cݲ�=0���ⳟ�E��oQxE�t-��G8Uq(�8.�`�b賈5�K˵Id ��\r&�T��`���ٔ�Sk�d�o��j��9)�!��W�SZ��K�&�\Z=ص�㼰���!K:�XԐ�U)J�P�J%�\\�v)7lX�/�Ѿ��ͣ5��|N�^#���}u�����e�<�e_l\'O�:Fa�$]����=�|�7���/�;ndQw\'5?�h��_��?>�\n�\\9�����,�hĭ�)�۱-*��%|�}ugǹ��M��\rT*�����2v�(�o\\ϼ�6���l9>gsY��;/����6�G�Z�����^�\Z�ql�������w@%\n��\'>L�� ���ʍkxz�N��N�:��R�l�M�/�w��g�=[f�>������~m�e�,�ÿ��j�X~�R��Z�%�TC�9������Q��m~��?M�>���]l\\9�\\Fz�V�F�c�颞��d�?O��X�;��a��EV\' %� ��@� ��8�fd��$�y�X�w3H\n�� \'Z�����o�,���a���+��J�;���YdV~���> ��&H\'�4��ş\\������� �Ղyl6L���s�#��?Ƚᅤ��/��ò)�r��O�S��N�\\��fӰ��� <�H��Sc\Z��!%�����j��\n5��/�m����J%55N,�pJ�VƁp�=ǫ�_��H������r(�F��Z%Eܴa5�/�O>.�qeÂ�|;/�q���p�m7�ӕg$�����\'^g4*�\0�\\� \"_:ǵ [����\0K�*� �\Zų},��BWs����D�����Q^��`�ش��_�v)�-l�ͭQ�Gj�zjp����h[��Ǟz���oW�{�1<u� �fw�{n��\r���HGK���\"+��D�_w �?�\Z�My��j>t�\Z�n�c�Jw+[\r�|��g���٬�%.߰��ܽ�{vs��גɺd�B!�y���Y�\n���k|�V�;`��s�U伢��*q��௾x?�e6�آ�sq�|��7�~iW.�f��.|eg$m\n~M�g ������e����Rb@�ͨw��&�L��4�b�p����p��ȅ��:�\"o��)q\r�Z\Zj1n`�L�/��bt\\q��������XXF���[}\'qn�\Z̪o��y��{\r��0�=mJ{/���������ȷt�_����Xb��e)ZG�J�/2^��]O�)\r�c�)I��#��p<�i���\0��nj��-3��z�o�O�&\0(���i����jF���(][}���+�,ѝ����T+��ט���\r�o�� N#U�\\[G�\'�\r�q�Q5V}�v�N��2�m��7�x��c�Ӂ�|}�k�w�;/cq���\rWع{/��k��U�4Mxy�����\0�j9\\\'&W9˥�e~��[X�-��jv��b��cu��u�Ǟx��~3m��ʾپs?���\Z��k��U�X�dkW,&�ƌ�>���䯾Iq��g﹉�m\\C��,Q��*�=F��T����+;S,��z4��`�_��G8��8�\\ �^��o_��uP�N���)s���|x��t�g��z-�~�<����IS�\ZW�1Wߴ�;�]͂&�W/�=ozBb^!�W�2�.�M�ɠ�2h3\"��R���?�8� Z�Q�4[4�/iT9q��=0�җh��K6\Z%��&�n�YJ\Zh�-�\re���4:3#S}*�i��&���4_�)2�n&v�4�1\rƄZ�f���t���y1\Z^2��h�o����Ağ?�\"�y�5���R��J|aA�V��Su�����;@U�V��JS�\"� �ߟ� J&�Q~gdS懹�i����o^c����^�����\Z�VO���۸�H5#����9:��سs�ύ�b�t��JY�.���������V��-VQ*�3z���s��W��`��%ؾO�*p��;J�_��s�U�Y��S���~��{�?����[��+U����9U䏾�c^>:B�S��Y��_~����nR�ך��\\ V���=��x����������\r����oe���l�b��p�%+ɺU/�P��[�y\n���_����gL ��n�h\',�$A�m`__����w�{�VAT���c��� �({d����9�ĸ@}!\r~�U��r�/\\����^�[P`$(������۵i�RFY�iw�u�s5n\\�����x�pM��E6�h�N��\r9�� e&@���$q�r�A��o a]h�\'� ��,�\n����?B��7ɕ�(�,�-v�&Ij����ȴ�2 B��R�Q�0 ����D��jZ��,�9W�,���O}%T� , /�?L�� W�ENj���%ú�[1{������>3���KX�h�W�rd�c��Op�d��v�2e��?\"�#��4W{}���h[�D�R���\'�=����{��̽1�+�٦�jm��R&�d�N��\rqt�^Μ�!��bU��)�.V���\'�|rA��`�߼{3K3��P����(�\"��Y�|)�Z��no��^5t�f�I2p�b��av?��D@C&�+���� ;��C�Ћy��0/�9�ޣ�� Y�Q��uKhu|an�rr���`�/�)��eբ9���kخ��?�9�n}���q��k�dA;W�_F���IS��r�����*qU{$�P�(�Ԋ�t��2�E� �b�ye� ��f�10^��񣌍N�$шpݘ��͝E[Φ% ˗v���Wfd��3u)G9^=rߏ��{v�Ю���5l�r9�;�v4p���d��.}����<�Y��ņ�fU����Y�8�ɤ�����t�U,ir�bJ��<�VT�Z/���������q7���*�: ���&^T�L�o���ȿi�o�(�(��x�n�u�gpZւ�d��16���d�I1�;� �N$f�I2�)�E}Tc�-���_����|�U\\�~)\r�E$B��������\n\'�T,�����C�Q�]Z��`�֚�!Z�Y��T�e�b���/<�m ��]s/SN�RӴJ1W�6�?���c\'`b�Ƹ�`%`�,�\\�l3��%�i�s˼f�ty7Vh*����;}���Ă��|�n�ѩ������-��\Z=�����r�D/��x�V̧����qś�]m�\n�c�YF��,�U�‰�$����ϡ����|���p��ש�@�\\Qx��綒-��}�qɢ..Y�H�ŋ��4R�[ز�0_�ޓ����Y�\'�c�DWf�{n��/�~v]l�\\mJN�r(2�U���ctl��؄��\n�֖<��t���se&�*,��2�N���Ȝ�˙j��v���\'���V�S�x?M~��=y6-[D��)�\'ϙ � ��h�(��+���6�q�~� ��Z�6��Q[�t�[9�B�3�B�aK2�D�٤f�0�\Z���4���c��� K�N�dPE�%@k�n�Nw5M1�%Va_���]x����_��/\'�Ɲ:Ɯ�wiٗJ0��;�_o�!�S���P�G�S%��6p���C��7�������}���f��̊V��zY�C�]džT��긄:�bt���Y��T�T�*\rʎ�J�\0N��a�~��O�6��*�d�I�[\'b+��5�q�\\e���{��::J6���Lx�Ts��3M\n�8A��h���Sܻa!��.W�u);9������O���KW�%��(�����x����$*Mp��W���\r�\n��>N��虀��y��6m`Vw������!u�Y4��Z��F���Řމ��g�<�䳴7X�x!�J����R)�s��٬��Š9m,�;� ��Y*��P�����ne<�4h���|X��v��u�o~��T�O�E��B��\rBT�̊�\r[LDc�v�]�lc��T�<#��v��� V/�������lyy7���i��-l�Qn1!h�f5Qɞe&AkR�;�2E\'\r�MՕN�N�������\0mR����05@g� vfY!����~Z�A+._f�k�B�5L�l�@�r�L.�@���I�W�HJ7GJ��E�V~��xԣ e��bn9m+�m��`���o�_�̤�y���G1�i,ӽK���z�|�L��͒dM�Հ�����y鍃\\~���y�z\Zqòn@%2�-����,N9>8J��&�����L\'\Z�-�\r���� �b\Z�x�E�NA���N]� �I\r��Q��Y����S�ض��b�[s� �v�n���(�� �i�ǸmAw��9+I�q�_\\�|�FF� �D�~6�:�|V�x�8�-gLR��{K���<��Q\r��o���7�\ny1\"�,�����l��^Tg\"ΰ�w��#uf-Xʑ�\'��;����֬b��FO`V�ˊ��x���CN��؋<�����\"_�ĸ��lPc����o���_�f�S`x�H.��)WF��LUX �?�Xg�f%�4\"�*�������xl�a��GX���hQ�F�����n�����l����ҙ���\'0����h�2����PY{2�Y�蟷\0m�Xl��3y�E�CU. vH�[��F[�����K��qe�C\Z�\"�(�}l��R�� ���\")���\'����H������:�N�����Y�k�2+�n��$�Py͋��N����X�����=%Q�c�<h2t#�,�o��_��@��+�n�3\'��5\"/O9�nN�̘W�pb��xM�\\�iY���l*���Xm�����&3�w\n�o~}j\"ј�\nT\"[Ƒ�ݵ53�!g^����ص�5�|�Y�*15�j����S�=M_���h���)��˷��aB�q|���^)z���:v�;�W�Ir|�&������|���1�i����[R�\Z�&}G��~J9��a�������n!��S`�*{����%�T��ul�Nc��QZ�6V-�)���^����\'8<bQ����G�P�QL�^cm[������j��8�_�+��������%]4g�El�%���N�0�����R��u:x���<��^Je�6!uư�\n��xwo��<�ܶ ���O�/��*6��<%&������b�l ��.���w�蟧\0mhb�kifi�s��4xұ�i)]*q��iQ��s���Ω�As��(>��0N�E�\"i����Ñ�E �2��!�Cۮ�\Z������i%�{ M7�n�<��mQ�K3�r�LFdS�$[6��x!\nc��2��h�\\���|�G��y��j��{���o�ى��E\ZRd5B�D�k`�G+�\Z�`�T�2Y,��lmiڥ�Q*R��d}ʋ�]Gj���`�m���IKU �f �I�m;�2ˮr��v� Y^|�e���C�_��4�Ps�7�Tq\\�)\Z��t�/|�\nc}��M�;�O�ɳ�Z8�5=�tz!MԨ:���l\\���|\\7��UE�a#�A����.~�8��B]��b�:5t@�j\rEC�N��.��s�#W(P�iH� R�.��:|�R��뭣਄hw[#�z� �f��F�ny���e���$9���ؕq.���Տ�J��vv8���x�\'�/Y�s��~�3% �9��>ƁӃT�2n�]���E�ضw�x�uu�q�*M���v7^��F*,�h`قv\Z�`�ҵpM{D\n���;�3n��$@�\r^��d�� �?O:�<H�N�$@\'<����\"�,PBX�]%�,��}�����q���l���*v)�S2X��2Z.ɯ(� �� ��*��bت���,�3� z��c�M8K�4-L0�tĚ�� Va��ʅ�:���4��t��ŝLB*}�a��r��?���j���Y�\\6���ښ\Zi�-2qW��<%\'Kճ)G �3Q�P�\Zu8�{���j\Z=ڢMI��ӌ^1V���\0\0 \0IDATOC�TJe]�oiA�m2u)Հi4�T��!e�3��*��k�Y5�[�9�~n�=���\ZT�F2ms(GBL���|X\"[��C�m�+�pl��Σ\'�����ayO+7-�źfhl�*�\'r\Z)�����d����鲹M4�.������~|�Q,r�r]����+�+��k�!����a�)�crq��c@��&Ӡ��|5�R%�n���h�e�\"���j�aW�=���Bu1x�زI��hGX5��E���ν�P��u|Z�\'X�_�矢^�vt�o�p ��\'ȸ6^T��׮�5��rM�<t�\'_܍c�,��ΦMkY�x�V��M,�j&/�+�Q�tv�Y��,L�ԝW�\Z]\Z������L����\Z���3\'�+ ���|!=���\0aLb�Ԓ4Q\"@�0���1���h����n�����I ����I�\'MI������ qL�_|}kd�g�Y���?��_V��z�&I\Z��4m�(%<�n�Q�6�}�Ƌ��f\\�}\"jS�m�Cx��(��G9�7L6_`��W�q�<:�9j��|]��� \\a\rW9�\"g6��a6 ���n�i�\Zu7�*>�KSU�*�H�f��g�q7Q��Nk�&�{��%ٚp�\r��O���]��~sV���\n� �C9ӂ9��.�d�\Z �ʞ�B�G���߷�k/[�jsGJ>��{ό2Q�/����?u׬X�oO��[[�+�X@\0��[�a��w��]�����k�4wr�T�� �-�����3�!ǣ����\n �}v���7��9�m��d�f�y�l�ڞ���t�$H�(��@�\0�Xu���,K����T���<��\'_�OD�تbG%�A�ٝM�[<� ���٥�ج�,\rnHO[�y���7f�M>)�O\"O�N��d��� ��\'�6g2����hqH��7/�łI����5 �h<D��)�~�4T�PyK�$�\"�o~_�-�t>���B�#��G�qH�6��9 �Pq[�4,$��f���m��Fs�:�4N4��#�G_L\'.=� �V�84���\Z��`,�y�Ȑ*����(��ϛ��sY2����F5C�TA���@��\nD�g�-J�6=O�F�0����T\Z�\0�q�oe���hKX �+sE�\0��M��f%qj�L��0Tw�8�H���C?�ǯ&*��7��Y[� F���*�iz?�^ ��e��!>�i�o�LE�;:·��ɹ�����w�1��戏�|��t�����{US9F�r�%s6�Vr�걣�k�\"�9�?���,w^2�\r���=�+�+�:�x�@k1cv#/����sv�b��43c�8�ޅ訤t�t|_�5�ڨ�MV�ue�r��\\��_{���O��c��sضq�(�@H{S��ksť���lŏ��nɳ�3OGc���蚟7z�f�;��o�\0=�\'��,�$��c��J��kT�?�W\"k >k�Huj�7�x�Oo\"��� .�d\Z�����.2�E����D=W�y��q �U�W:�F��M�߅�-M����9L6�LM!l�,�X��o���������:v?������n����f\ZsYmh�ðdhAw(9>A��Y��T5�\nؖd���2\rA���¸۞�͈~���U�\\�dLP�2-��@���Y9 �a�����p;����^�͗45�A���(=bz�#���ȣk�$����[7��ى2_ݶ��HM*�(\"k��147��7rh4b�&��$<��1�p�<�\Z<�vN5��ʨ�wā|At����KW�xY�KG�Wq��Y��R6�O���;��bB�q�ܖs�jF7�D:�#��962��i�jdH�{�&C�L�]�l}0����B\n��9��,������n����q��)ǒ9�4fm������bzr0���N�;�\0=�\'3�\'��W�\"���~�i��=�7vP��\\�~��&ص�G#1���є��J��Z��!� FJVyxLLG$�X By*vt�#j_C�%�C�R��Ś�\'>@��%c}�E��=�<LY�\\�d�J%L�<�\"�/Y�ʔ�p��}�E*1�� ���Tb/׌��hok��������Zq�W��D[:uSW���w��$G������������w/���{�\nw7�Js̮�iO���͙��d�P��i-#�O=� c�\"�_��u�[낇�g ��`�r��9��/r�U���2��s��4��2�ѱ��d�T���*�\"[Tõ��S�e\\F��dR5�McO)|��r��2z��,5��X�� ���H����bș�s��d����I����~�lS�s�5#��z\"G��^m�H�d�\Z�Sj���0{2Ԥ�B��ݍYښ��^0�Y=�Umηk4e� =-f5giɻJ�㋬+M�DNv* H������X�).O�>�g��\'� c�8�I���r� �׾���o�{�X�:CH)�ٱP�$Hk�b���:Qg�,�P�a��#b���\'��*]�,\"�?��a��\ZWl�s�-�J�3]|�\r�)$���K�*O�h�æ\'��i���*A+q�H�^�\n�2p�����:��Ns�T?�jE��ŽZ}��ਖ਼u�9�>*8�h��-��Op}�)6w�����s\\��:��sq+U\'O�rUFV�u$��ɓ3�m�\'���=�X�g�Y4k�믹�\r+�i��ƠX8���A%�I��M����ԓ�St�j��;\"�%vQ\"IY��ޱBӌ��@��r���Fu�6��az��J�/, ���.�\Z��Ʉ^��\006�j�Jv�> 5O���9�t#���\\w���I�V`섍$UHR��s7��Z��p]��� D�$�P�嚚�V�:=퍴�<��.Y�³MP��@��l�SP�Tp6G6���F�Ӽ�g�I��b����#��2�@]dIp�{@ax \r�(vU2&�<i��.�f�[�:n¦f�R��ìs���@�Q\"�d��R�=JQ#a�J�]�K�s�?O��٥��\nˤ��Ś�ozZ̝���<q*�i9B����y��C-#߃Ř�{O���:����qj�P��R\Z�I�Z�X���Q��r���a>6�,���4GC�]���V��z��؎�\'� �L���W�vz͒�nm�Z1�#���d�a@����&�,���U6 �8&ɥ�\"�4N�} �L�ĕ�V �P�@.21�H�1�\\H j��9�#�j:�!�2����ؐ�IBN�.Է�8\'O�Ą��K�`2Y�E�H��q���n��IX�U&� ��0��+�I sF6)�0LuQtk�5�4l�X�>�Vy����Gu��*9�#�o�������D�C�+�o�@)�=IS<���#�^�\0��D���3��t�n$(�!�K�TI@Շ���׿�ā�ȏ��>��S]��P� �^R*��-0mv�B*�f�2�\"���3�\r9ԡ�X�Zh��ϥ��Z�� M�8n�m`��4��ɝJ�Dg$M0�W� l���^�-yN\r.��&��(� YH@�a\n� `,��q(NH3�oʙ��ZhX��h�U�`��Gn�\0���2kp+\r�s:L1��g0������V�F5+VQ�d6<��%���d^1�1�]2)��n�r�?A��z���F}oj(m����y�ѸĠ$N�LPfN��@ś���L�*#E�E��5�d0�]|!��]Ú�)�����o�c B���ޘ{�t@\'��T���*ʌ:ř�����\Z�M,�|הBE�T���h�5��W����49e�z�6ҥ�����6]�TGfZ#{z�|��c� ��..�?�\0�N+��� F®f]�&5e�Zk��8����lЧ�}��]�q� ӇL\Z4���yZ%�&�I�M�N К�H�b���P;YjQF�х�G������L�u N�������o�t�$δ�\'f�Sk>����M�\ri&��yZ�.�f�\Z#xs��Z�)+02��s�C��m���G�F��q�d���@72���H�5��߹;4��$#aj��w�Jz�O�d�o�+�-�߿��H���H\0�)\Z�$v/��P\nM2)��A�o�T<���bH+�N�� SM3ŞU:���w^�]�>�8��\"��T�f�Z(�%H̊��lYC��y\Z^r�Nqh��*O[T������5�A�u��\'���,��J�d �����\n���b⹿�~�i|��i7)[kXN�UM2�q:��9��ӧS� -\\�F��� 5̖�Z��U�CDn�T�N��ٴ.�H��pZ���DVN��L�OD�d$]��P�&���HB�d�mր�x��S��<� �+����ۉ餚�@�I�Q(c���T�o\'8���pQ�3J F��&�>�C����搻�_ѹ��Xq��\\�����MiY\n��o��M�m��M����4�6�̈́��l�f�;#Ma3��ZC���������ʝO~g��˽I0��\n&]�s\Z�7� ���`����ٖ��G鶑 �7�\n���Mv������/v�� ��?��^�u�y�+3z&@O�\\YW���<��9�Z�� 2�qZ���z��ﱿ$�$V�\'-B��kM되 ;3Т��>�&s1B�&�6�2&w����ļ6�NbKZ8��\\�:�})�Y��v.�L�ҷ�P�y�^І�#�\ZNR $o�\'�s�y�]���q V\ZIS�1�K@�B�$��ש���Ȟ-�Q2A ?��4^C��dW�%D�YK}�1��ڊ��}�/�),��D����0�M���y�ʦ0�BLi�<oi�wBoZ��l8:f����\"�*bjÚ ��&�d��}4Y�����KV.��8�\\x���|�p�M���������� N��#�Ms�h��f*<3l���mb��{fz@�=L�!\"_�֙\0=����uh�at$�[j&+����%��1&�>Gxj�[���5��%l�T�RѨ����6t<a[��P�h���d/b,j��0L�*XgL5� ��N+^s���~�hPdZi_�Z�`ֶ$�ݖo�k�C:�0�M���Eq�lW�(+�C����>&�T���Nm���a��I��Y�M�>��r����n=f��R�JdQ�\Z)f��̽���),�\Z�N�)�_Sc9�L�� ��$^��ݴ���0N������nO��_�t^�J$��4=N����P����}��O����p�U�cjli꺼 Nx�1�M/X��%����F��D���9K��V�0i�ua �ɠ��=��E7�d�On�$���(*���{���54V{��{w��D�r}w���\n�$�8 JN��ɤ͈��.� Gv3�뛄\'~�?1@F���O�^Q6�a},�$�5�ԱcQR�$X�B\\�,ex$��T �˨���c���ŬV�������HE{/K�n�nYJܴ���|��&���ݪ��9��v\r$��\'1�M�JySXG���1O Q;{�h�8��{a`?q�j�ؑȴ��k.�B����E�d���K�ь�l3\"�`�z�Q.��7�sï�-�Cf@�&�4.�;1�A^l�\\����E�?���:�ܝ\'�D��U�d�P4�\0�\Z�懌B�8ȱJ�m�3\'a�w�4��v��������X9��Hު��z�<��=��_��ϛ��ž��܋�k&�~��O)@+�Yˆ\0��\0���|;Q�,W!c�<�\\\rO��h�hl\'�~�x\'�������&دyH%�J-�-ɞ���(�l���d��V�b�=b��P�6������4�� ��6c�ڨ ��L �>^�\'�F��o&�2�L��-���eh�$H�\r�����{)\r��V\ZƮq�q��8�ȓe����!���ʖ�ˢ�\'r&2� ;�0RL�2]�a����k����R���e� ��8�^��K\0�20Ln�o���x�=�d�����J}�&$m�%ٵF:��ʙ�����MUKN��ɹM���p>|�g���Jo�јK7����=��������~�����@�)x��\0mR��j�Fa�����v� )�@O�o 2�����m��c��\Z(�,�Nx�<gL���,|���Ы���먇a���g�#��f�ٌ8K�.��d r�RR�š�b%\0�0G|dj�kV��J� ��4Y��r�Q͆*�����\n�n���A(���K�\\�8� @CE�����7��� k�0�4� �dR�M���DH)Ѻ���7^͒��\rd�+�‹hd_ ��)k.�I3�.f �&��i���Ɇ��\Z/P_�Λ����Ǧ{�\\oi2N{��D:19]ie�cS�d�y��G�}\Z�bj�2��d;Źϛ@��������7��t6��g�#0}����X����&@�h���t���ћs�$�8 \Z�����G�{�;x���� D�\\8�5���8�O6�+b��e����_a�Ht�����ԉZ�9aj$p�~�֓)�#�\rB��%��6] �05Jy�VPq$�w�?ӳE�L��0P&_O��5G�����a�f6��-#��Y��l�8Ʉ�N�8��8s)��$W�\n��D,�ɑ�M�O��e�1��a~����\rbm����TsM\Z��0\\d�0e�L�J�S���U� Lf ��K& q��dZy�ˢ�\'�e�z+�\\�w3��}i��,2t��w��)_]6uӀ���~�Vm�1�4~շO~H�\n����Ҳ�KT�J(���\'ؙ�gr�D?WdLe�P��a)�,���8�[�>��=�}\'p�9���&�GZ!���S��| �|��-1_֓�\nqj���s�=�g�;UYo��du�H�Ä���v����j���q��U58�� #$m��<#X����)����Ӈ�i�_#�$a�N��\n���I�6�;��7\Z ��{��7Mw1�o�lbSn�ɤ屾n�U�B\rК۫N��A+�\0�kS4��]T�d�2�+���w9m����wg�5� Eᓊ\' ��ZI2�c׋%AZ�e�<��IڎL�%�ZI&,A^�d���lp*&���\r���8&���l\\r̓�T$2&�UC���U�c�2�s��2\r�6j���T;� �������d�H&�aU��s��u��j��`z�:X�Lr�5;W��D�Uע�|l���E�n3�֡���i\Z�I��O�u�gt�&�\'�Z^���\"�_]�u�Hs]�M\n��ub�@Y禚</�� �3���۾��<�X�z9���a�w<J��\n��]�C�$0I�\r�:�,�R��K���d_�YkpM�x1��f�Sef�#k�J2m�[mD����t�{<�\"�dd6Ōz߅`�11��Y�sZ)�䥺�G��n�Ft��,Ҹ���Q̄�M��rZ��\r\nKn0�7Q�3��`���˜Q͓P{�EK� l<�4� f[T�\r�in�Vn�dP#�$Í�Zgd�k�,>cX�����FTh!�[2m��9:;�hm���J���L.�1������T?�[��*uw��ؐ���K�6Sť�����F�-��F��!,�l�� \rR�?�S/�^t�\\c��R�]s(r:\r��?�?%kJ�Ò/u� ��(��%��]�������H�/0�g�g�c�8�̡}X�pH�j�}�to6�&jN����ert�����F2��u�&�* &��hiO�\04�k}��9S+7��|�+��������|�+��=ل�����u�3����C�bIڟ�O{s���b��)��pLa���{�a��o��� �� +�J�{�$ �״�N�A�<(�\0���!�8��43q��y�S��fGSGh��y�ʴN�xk��D �lf�0��d�ʶ*>a�d�\\�1����*�~�9�Hm��� ��������T� �|D�H��% ,|\'�\nuu��Lf��KX��\Z�/�K�ẅ�zKJ\"\Z0|�8������ױ�N�,�TXő�]LU�(:y&�v��f���kn���%^� ��Njc���᣻���CG�G>*�0~�}G�T&e���*���]�%w~�f�$L`��L\Z�b���Q���z7�(9U���,cNͫn�ƛ�SQ+c@`j-�m��X�G����?P��E�>NFX6vĘ�F?�T�7����Y������J�>�s�p-IB��.U�(�K��� ;K)ӄ�<���k��l5]=��k�0��S��n����0���q� ���Li*M<��d�%\r-��r� a�O1��X���)k�aSK�S�¬ڔ˛b�)W2f}��du��cz�* �.1��f�����k$Z��Nnɓ6�� �Q&����5ȵ�[ �D�+��I\\l�W����0�[F㊻ȯ�ٶv�ӷ��_�neB��~h@i�+.���,J�˱�J��s�ڗq�m7�����A6\"���?�>��M��8\0\0 \0IDAT�J/F�I6]a��|�ѷ��W�����KXyǯ�b�\r�*\Z���� ����`vx��p���\"V$�[ F*�&&��\ZMX���S_+Wl��ΖF�(r DG�������%\'����P��H�&�4\'3Kؙ��G>�iZZ �;��ir����QS<}�����ӊ�;Q�U��~g6/5��p�j��8�\rK{��8�*�����ӦI����1+�hs\\6�����ƙ�\"����x�f���)I ��ΦB]��\'Mڙ\0=���5�gL��/�tۢAl�:��F� rĥ���R��$ǷQϐ ��M� e�|j��8�F\Z%U\0`��4� �q~#/�IE M����|7g/�e��꫘����3��Ǧ��R:%�pU��&��1?���1{%ecY�z�1��b�2�^�!r�7ae炕%��׉�|�����\"\Z��u��Y9c=&A0q��L�fy��/�T�������������YH�b��~�l{���� �G����N-�:9VA�C2a�l\\�J�l~G:n��Kr����1�a�ҩ�����Nc}�����v�ٮ�W�dP����q\n�8U���^���4-X���w���2�b���7s�?a�o�J���0�t�4#��,`G�U�f/綻�O&c��%[��q*�$PG�H����4GrέxQ�B8�XƎ��t~3Ǽ�ܹ��ۯ��,�#O1��/P����9F\\1hPiV��^��D!*��Kڬ�:9���[w+�n��|.�4����G�T<�V��8� ^}��3��d��F⽧��$�/6�e��L���z�qF�<K�qlͨ+ �@��s�27R�93�k:�J���=��� m��L�Td�<r� Κ��[%U\rtc �LƁ\'WB��m$ݳ45��֦p�i �vM �u��JԂ��O�;`�-d\n��nILH\r��\0�{8�a�V<�YA��Pm�f�\rO�瑛U�n�Q���]\0?��k6p���z����4��Ff�����K_v�݅LD\'c�\Z�p�Y��U;��M��J�*���v�RV-�ǁ����S4���r�X�9���]B�3�P��FPJ�آ�k�� ��w��Cng2s�t���^V~�9���!\'��8�NX���@zj��:ؓ��~o>N�r>��T�_hrf4Jzt�\Z-�ų��/i8�*N\\��C6.2\'>I)r�����8�,�V5s���ռ#?f����������jN�=L8�\0����\n�� kh� � �rK��p��9,^��6��q�t@������=�A��:q�� ���1xM�*��E�<�aLr�d�cjC��3��>���䣳�b�i�2�!Yk�\rA�v�bI�� .Q=��`�\\itIgJ��i ��n\'\rC10��ӱ�wqn�o1ԿT+� ՘�\rI\rҦ�i؊fs�)A� N,�NAy�%���6� +�\Z�����D����/��hrm,a�I������.n� ���j�ve60�6)4\" ����X����d�V�Ƭ�|�\r,��L��ܺ�x�יUܧ\r����i��C���W(�,��h ����LZ�C̷�8�Y�Ak��An����\r1��}���[h h�K���8�[‹��9��\'�}ra��x��p�2Kj��_>��� ܸF-��Q{���-Z�-x�^n9��шcJ������!�^�E�}��<Gr��c����R>�y)k�7(.� �$;�78������̭��r2�uW�~ʊ�>�aЛ���稷��V������cO1p���J��^n��=�J�v<�%O��Z\'W���OX^ߧH��É���h~���ݍ�p�͘l�t$�z��f��o����wĦ��I�J KR��\0=-r\'���P/Aic;�g��3d�#8Հ���Q�8*�㊣\rEyHM�C/B��O���\'�~jL�i-�M�V��ϻ8�ioIO1�H&�3�I��D,^��f4=cS���lX�1���>a�������\r�к�.(,$$�l ��$B�ܧw�%��{d*稹[sw�z�\n���,[�����D�d��׻PNjK,�j`���<��?�g�EfE�c>�]����c>gr���\Zs�ZX�����ʕ��{vP=s�>wg�vf���qImc��\0K��Ʉeݢ��׳7��}�rF�N� :\Z�����E<\n(�A߶ﰲ���pH���Vp�q-g�N6�p ����ư�A�����������,ld\"r�\"إ#��^�\\��2�^��Kw\\1ٞ�g�g�%*��#�`,γ;���p�5�]:�5�u��p�[ʝk\n�q�z\r�α�����&(�<�t �3v������k{+) ��Ÿ1`�2mƬf��K���xv _��]dӦ��]��v�y�43�L�����B�ϴs��,9#t� $�ʚ������oa���dƏ㏟!SÍ�X\"0���4�|�ܺ\n�k7\\X��R��f�ڴ1B�)�������rJ�3c&X�8�\0��\Z�I�y֡cj bM��L�j�!jYDŽ�A���t���q9�[�oI�q��lyB��{_��k��>F�α��Nv�T���;/gͼ.u]׶��L�W�I�gZ��[~��s���%/8��H~[\n�r*������.�+��g��6=�T3�ܹq��9��sE��:�[;��#�Sz�4� ���5�l�-���њ��Ӗ���W0��%id���ڀ<��K =�E�Ǐ��8���`v)G3+i\\| �i%�� �F,N|�Y}�~�:�;x��V��r��StF��c�W[oa���%���J�Z\n���橣�����ﲠ��\n\r gfsğOk�Ϛ�j1�w�l�]ur��&n��2m�zG�a��GT)3�u���6�y�(���%������<�z���,\'����XEjng���ͭc��������m�s�e����BJ^�ɠg2�����P4\rO�b��i����?Y��C#� C<\0�ۿ�Z�^��I��č�\r�:�4xU0��Rv���B(��IW�8�I]\\��x�gm&��7��� ��<��+�^S���]�f�~�B�i�i���v �Wr-�J�K62JASE���4MR �މ���ū�3ney��V�f/�l��w]ƺ����A�Ԓ?O@1=j��?�֕^\'��w�؛Y�s���d}>��V/lT.�X�|! &XTm(�� ����ģAiǓ�/�ffs63��d��Pfw���k�� O�������!��T�Ǟ��ۿ���Ì�gq,3�W2WҗY�/lh庍�8=�r�;Ț�ĎF��<��Aiັ�X� ���x%/�Ҁ�|�|>x�S�zA�ǿ����!��՞r��Gs�3����9�w�\\�qp��n��rWy����-�j�ao�7��o�(�eK����Khlh�J��s���S`Ly�g����]�No�\\���/</O������{__Uu���s�=wʜ��\0! �y��΂��Zk��{�^G�u,O��}��Z�����P��yP,`e�y\nS$2\'7ɝ����>7\'!Ah%��J�p�g{�o���o)�V}�Tu�+-�����&���,�_9�3��QO(DZB^��ٍ��������;`��a�IwÉ ���A\Z�г�\'����(2$�����3k9�,z�dF��c-�)EK�����K��dQ�U!\r�,K��5Z�($厅��0�̒i*\"e���,*�mr�� �?A�3w#�R�VÃu�S�Y��#���f�=��i虚���V� \nk:o�+� ��k����HF��[��g���+��r�ڕ.D���0(hKy���%!�o����3 �:JP����!^\\6�Xh��\"����h�e���]�U/G�ÍCf��y��B.�4����x�! .[H��qd㭴�P���X��,Ef�\n{=���\n-�ECpͥ��&S�rV��r7!)X����P�胖p ��=X�%��f.�%L�g>[���ͮ��8�6�@uf6�\'�=m�gc�H������+P��o��6����~W6zGc�{0���+� �K��Җ��A+��\\�Iߙ���Y\n��U*��2�hˈᢂ8�Yo�Zk�kJ�V���-h�,E��� �h�m������P��ťsd��\\��Ү�_�����H�f���uS��4��DZ�ј!��nDz�ݻ�΅�=pfs�r\"��2_�O͘H��!J\"c��`��B��;`�[����3{}��H@NN�%x��.�F���>d�!�0�A�Jֵ������È��`�a�w��8�.ė/�Iy ­D�,��r��C���n���/�����~l�g4>�L�Ag.ڜ �bh2.7�-S��Ⱥ(���:MT��� U�/���ż�T�X�xvz�cBNO,F ���<��/� ����۩_E�+��1�u3��[Q�yp��[͡p��gL�;�{ͫ^Bj�a��g�4�w�Eb�šM���+k�\\��x%�8 q�`/��KivD��e��h\r�Q���?�.�vg�5F�b���L8�+��7P���`�B�uea�g(��~#3���1����X]���2�ZU����e{��ː�t�.%?}\"�Nx>�%`TK��i�_��9��*�cO*%���n9�@�.�Bup[�UlG����*a� ��^Ds\0�- J^I������NТ�Q�~S`�{jº��a�›� _N\"��dBsg“�GBkG���E��!�@����!�β�h�wt\"���e�֑�dM�A��m*\r��HC����a���Y��#L�y��7��m\'�� j��X�0���qd�o\\��.x���[z��1C@�pd��Ж<o�nD ��&a�g\n\Z5��pո<�*���(�x)�Ȏ!������]/�2�5Ӱ$i6��aPR3�O�7�_}���)zMz���\'�E�߅��+[�B�fbS�d4�\Z� \'�F^�\\>�m|�^��}�3@;�`��K�2������z�4���l���ʼn�Q����=�1uX܂�/�-T}ifb�o\"J����]�?�Jr�[q�t���!��j��,� ��ĉ��{�9��\r_>�t�2[�ϗ��H��f\r����(��:���?v �c����\'�ru���*������eI\\�9���2�c�\\�I Aۙ.��=ʲ�-:h��;�%�ǚ4��N����-f�G�z����~8\nj�D��Vn@��R.�qF�����*��I+��*h�;���࠭�F�Ԡ�a>�;(s׉��A���6G:����o�h8|9���,�@sq;�5�E�aq��-�\nH*ibf�:T?=F[[�A�D@3t��RG�I�����tT9���^�F�� yH�~M���[�؋hTC���O���T�&Gn��%Ȥ���<D�Rl�|�a�?U��Ъ�ڴƢ��T��ÃՉS��3���^i�5���c.\'�\0G)�b�鿇\ZCػh�mY\0���NK�{��s(z��0}r1�S3p��GP\\�\Z�h\0\r�4,J��S/�)+���2z�����=y�=0l�0L�0\n�b����\\��|�� �\Zs \Z�$�Q�_����U[����ę��,�% �1u������=�3�mhu$��U�9�\rp��r �\r��ja4V 3\\��H=�n��I��IK�;Ҋ��?>���!OJ\Z�P��d ���]<w�QZ0���SN9b/5nX�\\����ϕM��\"W�9�\"f�Q&��ba{�t��,�(\'\\ֹ[�B��-i�#�k���q���kk���:2��IO ��gQ� RA���������_�/o a�l���G,x��R�bZ�w#�X���*DC-,�)r�e�.T?�7^����D8F�.1W2��>H�g��В��i��4a)[+����i¸�˅A}Y8�m���zv܁:>����# ~�Ö<��\0@��דQcfc�9)���y�J�\0�:|���P>���9X�0 {�~h6�p۷.F/�|�Rg������#���5�7����Hm*CX7�:i*���!\Zs�_�,\\9�}3(1�2k����K�8Y���[�������T���}��a4����蟕��/=��W8ղѕ�����RW1f��\"���\"��I�&l��W�\nJ0e�h��oG����px v���߷`\0\"��8��q\rJ���}ո2�^��(5�ő�T�B���\0��� �6?\"��t.� 9�УQx�����pG[9PKJ{�~ڕ<�\'#� [k�mߝ�=��|��$�\Z���E��?�h��.̛GbIc`�z�$@AТ�V����F).k��;��Zm#k?��e-\r3��W�^��\'V݃MIUtL��N�V@��-.g��᪈!ڴZf��\'�����dhS��� mO���_������i~�x.�7�A��Y��G��.��� �j+��T�(�Sv�K\"B<!����!�w� ��\"�B�*2�wHY��Qέ�I���,�3H ����u�Z��Zk�9��}�P�t���n���m1W�Et��`�bdPǯH#V=x�{�FuF���s�u�����u2]$O*�B\ZV�\Zlm�|bz)��z�*��~)��y�ې4�}�AKFn^����>�$ *<_�h�o#���۪�*�Y<���L���wӮ���q6�҉��JIǡ7A�yǬwecQ��maƘ�8�0�_| ���;v��ñ�3� y�6i$2+V�y���\n���h B�g�� %�C(�]���kx�uf�I�;���18��\Z��.C�Ÿ\"h�ޜ���驃�Ɂ�0B��z\Z\\�8��\nv�:�L�B�D?O����Id�MK�C*B��)K�P��A����7᪫G�$iY!.f��-d�%ȩ�F� ֳ�Q�H��m\'p�R�f,�U� |�)��U�mxia[�\\R���r�J���@��E�����(�bg�x�u����ɻ�4vy�\"�c�Ȫm��+4��Y<<2�1�Xl���2�vU��M��%c�1�e�@n /b��3,Ü�M\"!�;E�6��������s�h�a��5 �b�9���H��D�G���\Z�]�f����>�X��2eV��{(n��%ܤѱ5q J�Ped����.�B���9�\n���,9��\0д{B����VN�������8������/O�>DHNZ|ʧ��mC�Oqx�ߑ_�A#G����w.$pٔb$�RQ��Cr�ED��\ZYX�~�����0eX�{?E�k@V�N�O���luA�W�кe���ɚ#�&b�{;2PX��z%��^CQ�Z�}�yI�L� ����SGH�^�ƅw!�`wN�3uz\n�t/�GBh�<h�Qkf�F�N2��Դ$\\>m ���* 9iHeo�y�^�����q��c�\"�m��-���&�г�jY�r�\n��M[�i�BK�KA��Ԋos�j�A-&�Dh��\\/K������w\n*F��-�3X�GZ��e�V�k�C1�pѐ�J}�I]�\"�c��)�W�uBj��I�Z�`��A���I��X�$`j� �� ,�u�gX�H�n/��{B;y�w6>��W�гs`�3�.�<l6���HĬ�04/Sv��.��S�1o^� ��|x��0<��h~=�ElA�q����s=R��-�n�;�MN7D3?1�*]����c�ְox���=#��(B8�W����� ������2mö��~�k(\n�r�u�{V������)1\\<i\0��4T��0J��ƾ�\Z=og\\�=���zT&\r˅#X�mO܅����ޡ4����0�~L�/Cv�����\\�U��pQL����a4�c!\n���֘��(yv��l��M.\\{����.�a483��{J�b12E�hW�RA��NV�n=��$\r�M,A~�t���X��S�y��;=�,�q0\rs�w�����[���8c��)&RZӢ���YΓ����f�\\{` ���(֢@5���f,��r�mUkq��&�WQj�eJ[�����Q���f[�:$XV�t���1���#��sROd�)��, �dpZ�$Ckw(Ѱ. _�� � W7�\'��re�ILv��`e����x.oa�X��\'�OH����9p��!������9!Ë�����,�/�J����t�Τ;����}�W )�ċ�4��\\�����3/GQ^�h7mxQ�u��A�!ڰ$U�U�Y�Z7��t$xT���:�D��S\0\0 \0IDATJ\Z��Fg`ʈ���Wi�Y���;P��30+6 =x�|�� c�w&����I�\Zta�����yn�Uk�¢��˙���dc���p8�X���PX�\n-���^(3������\Z(��4����ͮ�(�����l\Z�/���Ո…j�\'�D��W �Z+{ޅ�C\\��q���\Z�\Z=\r��(�1���W7x#Ivj�;���0��h�,����VE��E�pl?Q�̝K�8IR�Z��,�&�2U�x�Z�q��T3�EG�,Z�Y��lS�-l��\"��E�Yb1�nE?KiV�ࡸ�����c:�˭�C,����g_�ċ?A\n�ux`x����dAS�0?kw��?�������e�Z�>\Z�H���g4�\\H�k��w\"s%��f[}d�3^�O��0yu �����\'��y��2���8��p��\n�$_��T�mxp��s0</�j��.�|\"R6(�K Ԁ�i��/�w�ɡ\Z�\Z8�*�z�8vK\\}ݵ��(3����n ��}�.dgg#�W*�P#�ޟ��E��|p?��*�|���<�/.�<R��QI>�s �u������m��j�;��#�E�E�/3Ffa�9Ũ�����0��~m���E�Wc�����`��膎\rO�\n����\"�eH�L��T�]\'��E�l AuB�\rN��%ض�0S<8b����L�W�x9�����|���w\"hC�3 +�/�g �����ޘ91I>��\"\rLV��7��=�O4 ��A pm&�Iiq��ܿވ�WO����H�Wt�� vf6���tO��od*�$� k�b�\\m[ƶ��SZ>F���G�[�u�bH�y�{-�K+��z\rod�n��W�eu�]t�����mDt\nu � �¶y�O�\ZEП���h%X{�u�s��5����;K�r1��\"�h�9��!DJ^�?�\'���˫D�a�Z�ZC�F�ZT-�f�?�X�8\r��C��L�L���ˈg�Zm�{C5$�D���+����0����r���Ez�=��țt�M\Zie��]�V��6��Z���ax�ǥ�#�¦eo�a���k�\n/i��u�I�.�ޣ&b�y���+�H�-˰Ho)�\'\Z@4�cG�D���G�����L\\31��(�����G0d� ����¢�k��U�Y�G�s�^�Go���瑃j��������R�P����!G�� �_2 E�>lY�1�V>�†U ��:g.�&]�=�<L���\'��#�c�Gh\\x7\"�����\')a�s\Z����ٓ\n��P�IK�DX�ⴠ M�Z���47���4��n\'��\"���_��1{<(�ˁs�e�->:�0�W��dؼ�\n�>�\Z��,{�Z �7��8�Fd������4}d�RL>4�x���x��wt��u<�ۛ����Wqq5��h|k�`��\n���K��7��ܴLh���[����>��\'�PoG�zf�\0�ބ&�u��пo�XW�P:~j��-���Dt�Z�z,�+�>n��dľߕUl7_���{S#���A\"��6\"���x���� �0P T�~��6ٟTI�\Z��g�-z\"��ðי�=xp!r3<B\Z4�FGl�dA���\\��S�B\']�p�,}����7�.��\Zh1{q���I%HL�!5=������M�\r�V�BFK��p �g�1mt!\Z����ב[�)�j$D�h��$f*S��շ�Y����F4BM}*�� �b)�j6��+�hvfa�9�ݣ��X����p8LCþ���\0���R�����V�5�i����0yT>�e��BQ�Fd�Qꟛ�#\n���&_HCVf\n�}�$9bضj%���Mk��\\\\��a�%��Z��d*iq8`P���z�5Z\ZV\'��mf �D�*�k�\"Q4�D�e\Zϣ`^�w��.1$���q��{=w�M�u�X�LrUH� ���@��@:Ǵ��?���)mĮ2?��T�OEN�v�@��� ���߄!}<0h�爣�� 4�dž���~�y���Jn��o1��|���;X�����~@ ���WZ���|\r�N냟��.|`���\'�`�~R���C�vH\' J\n�V\\u��[Ơ��?<TG)�T�՞�mO��I4e��0vI���IжsS�H�:�����;[��ފ��&��l�*�[D�ׄ�KB�Ȕ�&�����?Ƒw@omB&�<Y���q8�v9�G�᠔���X$����~�7j�}�V2��E��`��X(��-+P��d��G piz���ڨ>#�<iN���k�l���K���D=�sG�aژDꪱ������* \rn�?C�Ӌz#g�N���D �H�\n�@���-�2w�y���� ~3C�1��H2\r�M�j����P��y�R�FK2� ;]qɨL����t|�޾�v\"�;E�=���`)� �Ea/_�=�h[W�@͊�Q�߀XDC�# �\\�R�\0\\:؇�SF��I��[p��d���:�Y�`\\q�\Z��D�Т��x��U�%�}l���X�s�O�D}л1�������9c�\\��i9Y����ߺ���?|� ���#䮋j�BS�bW�lŬ߉�Ai�� �߳/�Q1�9/c劧���g��p���D �47��!#�\Z\n�w��r��o��Y���ݭX��-���>d����-ݴi�)�ٰ�߹i��fL�/���g�� �T�EsE:�c�uC4V�������|���1iH�\Z�wgw�������[����3�����:��2�Ohqpf,[��(?9���5�\\@z�\rp\Z\":��M�ʻM=��P����KZbn�K��F>�}pޗ�b| ��@ Z(��5�P��H��A ����EOLk!-zҵn#%<3 ��bM��X�\Z_����E���YS�ڧ�����å��IVP���U�pN� Ms��;�L��3 �F�#c�\0K�����g �\r�����\"({�p�ehT������b�����„a��8u�����b��~��[�[K����O]�`�w���W���. W ض�cT���!����w�/�6G���˦ ���$e�r��B����.�6\"蘁qEٸzR!}.�3FeE��ˊ�\0����Z�L��o�P�����_EWoݔ�������ێ��K,|�q��t\\z�wp�x����`׋�+ ����:���>�_�d*�{��5E��o=�����_�����d��!�Ѹ8Ě8�P�nJ_�F��sK1~�h�ᚯ��w��<(\\!�?i�&����z �B���n���5���C:ʭ��FoY]��Pm�\'tb,S����1�֜�3��\"eAw�v7�tE��\Z�n�n[��&,�&�>�[���u!pR\'*li�RRީ�%�wc�_\n���HPtfa���B�0��T��7����k�̑�1#�`֤|n� ����m�X��\n����)Ej�0<�\Z�tlԠ�ܩ�Ν�H]y���\nG?�q6���}0i�\0�-���ZS�W�=�\\�0�� 5tIZ12���=�\"*7�\\٨t��^g�}q؝��hFei���)��G�FE-���ߡ���\"\Z\Z����Y����9�0j\0t����H$��/<��H\rW��H�N�Hl�a���\\��jJ1e1�[׮B��PX����jO,��BT3��b9c@�?p�_�nEṁOҦc�����Ff�ʉ��(/+�%ș����C�:����,���\'nA�# �* �q ��-�4�m��˅(���2��� �=���վx�Os8�l�\0E8��s+*q����ۧ��_�����xq�[��31��X�V�F��RY#��;L�T9�04i��Ͻ��V��o~�C�[�0f�M�.N��+���6����G���7~�K��bRg$��(ڴ(<:iER����f��n삵�k�gK.�`�\0a�)�c�^tw�����i�$>7Aۙ�X��2�OfS�N��G6G��m\'ԄO�\\�#����I��uj�Sojj\Z`�-L���ӋZ#�Z\n�F2&��K�Ƀ��}ę�Y���r�x�{�Z{\0��FDujDk�mCDw��H��X2\Z\\Y\\b����\Z�\r�Ev�W�j���7�z����\nh�5�CAĢT���c�$G��6�Qm�B�LFZF:�&�0}� �$��\Z�M�u�-�ޏ�8�\Z�5~Ԇ},k��19;�����`4E�ޝغb ��Ѥ�p���a-~=���p�#��|��{Q�q%���P�pXO�\nEj;}h:�O\Z)��6W`�k�PYuM�d.�9����ф�y�t�@�����sf�-]M�!���oօr�Y�4��0\\��*}��X�~5���4�W��u?�3 닻n:Oʺ*�@�rs\n�O�����,$&���ב�׃{�U$�͸����!Ҵ�� IPw(�e�êM���s������������t�p����थ\Z6�+CU��y��ް�Ͻ�c����9��\r�i��!���c�FKK^lt�6!s��*T�.����;����p\Z>���Vrg�����‰99]���Q���ɧ�{(�P0��w��b��fr��E\r�;S�#�z$���J���c�\n8�J�d���X�z4�q��-��$��!s��� 3-��&�)Az�75f� �|p�nt\r��0��Ħ�W�Gsk�haG�Kѩ�iJ\'�$!+= Y>���G�WX�|zfiR���:��5����9l\"\0�In\\6����V*�(� T�Ò��Q���Ħ��oZ2.�:Y ��\'g� ��-{*�b�a��6s�|�3���da���������x�Í(o��a%r�$�0iX ����2���d��(�]�<���yTE\0�!�,���Y�p��O�4vc�_o�,���Q�ʈ� \'��/  ���r<���aҐ ��N���5�B1hA�G������W\\��� p���@�� ̹i6���!�0�RS�@���{f)�A\r�\0P�� ��8,��)f���n����q��~��_7� P���n9���j4��+_�d�f��s�b�U��i��%�GV��);�.��L�1��\r�uJ��d�,���N�\'K�\'�����.�9��:���!�L��m�����eʍh����7��$UoQ�B4�$SCV2eyГ%r��6�2���([���n������m����w\Z$yL�%#+ՄWj�X�����^��\"J��[�8p�Ͻ���[C$�\Z��t�e�I^d�&�W�>�8O>��)V���H�_��پ�-*E��W��3�24qT����z���� �����B��ґ�lrgp�X�r��cM���`-Pq�N=�#���$���L��xUs kZlk�K�\"3х��x�!�х��߀o bp3��&h��,N�Cs��\'��­�<�s�=u#[к[d�XAjvC��_M3P0���[�⎛/�W��G*<�G@�QO=�1��^|y�m;~�������53ϥV����|nJet`�?�c��Fs� g3\"�-e%��P6��`dm��^�.[3�Y��_؍G翋��M���m�yD��J�1W��V�j&�ΧZ���8HH}�L�^A�8Vgݕ�;�����ڟD����f���l\rzn�T�LŝD��M`�s���� ��� �H$\n���{Ɖ$�۷�w�ݮ�n��ˠ�t$��9t��F�jgܬ��_g���aҝ�*��]�\'P�T�YL�-~\rO�݅��i��]�?�&\\=��.Q1*�cA6�UB��ϯģ��7�v;z�8`�[���k���_��!��K��cq��_ý�}�??�����p����\\�٣�P�Q��oU��p%���>bո�\'W\"��a\'Vm��O�3g��x3��I���?���v`�c7b���g}+�\'*�Y��\"�\0��MN�Ŝ�z��Yq��/.������]]s��6T��Ʌ�&6[t�T����3&h�n����h��xj^)n�e>��=,7z���a\"xF\ru�� \"�\0���m��O����w`��B�ȭA�{XT6�\07�� \\���W\0C���P����|�7���\'~��Y�2xN\'��\\���Z|�Y�����7���3p�%y2�/�>R����yp7~��7Q4�\0>x�7Hsz@��+���=���%̞1 �C��3�RB��q���M�n�,��V��������B��I.� �}��בp�\Z�����W��r�]�|�y��B��,��p%��M����ɝ���y0�}� �W��I�pdI?�F�}]7��\"�����Q>i �N��{���E�i�sx����ĉ��8Aȁ�=!���b�o 1�\r//��6�/\"��2w��ßp���;� i�>���6����X��=Hu;�8�膀��Z���[�����{��Gh6�{�âw��soİQ��\\����ϼ�Æ�����q\n�%�e_S���M��hSS}J��z�/ vʉl�?���_0�\r7\"-hK�Bj� w�Bk�O>Y��n� �������C(\Z���Nn�&����ǽ��B��0>\\v3�<nv+���Z|���B��,<��0vkpP�����pq)��u��ۈh4\0�ьX��D?�N)ƣ�� �f`����<��\r�~~!�&�9Cֳt����ux�Oo��ل�?�q��b��0��d1�~�� �0[�r֣w��9�\r���lG�Q�ܐ�8�T6�\"���Uy\Z8����>���yX��[�ڐQz`��}��0�/�[Z[����ȣ�Y�As�O�߉��)��.<3�V��u�,���0�t(�z/����4��Ib_p�d���?@߾\0i�P\0�f�����mn��#��C�p��\"����a�8���\n\\�|o#���<���/ѻ��K��4�8�;,[ތ��r���G��Q#����k{������#�qG�����S�`X���D�b��Ϊ���P V�̿��\"�c������<�~ԥ���_3�/�ر`+Z���m ~���ϖ��;��i�ǣ�݀+�<�+H��z\\$9�sڡTF�,�rv����!���#�^E^5e���P)=g�p�4U�ɖ*ԯS���Z�.[V!��I�`�g���|�8$�D\'��\Z�ku�WAˢEX��˘��ABeA1����ϋ����dj����c��T��<rXTY&nq�L�li>Z^�7�X C��W���\Z�\'�2��z�_�s�E�� <�r����g�}*ۖER$���6�~�2�E��(�љ�9�IT��qq����[\'\0�S�~v���7K@ �P��ڊqn;5-��V;)+���O�z�B@!�-�t�*C\"�vRy���Io$���\ZP��ȝq��f\"=-����KȢK�[�ͨ�k� ��� �Sk)�B})m%�\\8$��*l�8�}����R�Z�\nVsX�3;ՒȆ¢������f�gk�������\n���E�IG�ϴ�Q���9*��F���G �#�!)�����E�}\\l���3� 7 �6W� ��(V�/�S���Ȅx.U���em\nӰ�;��j���ˏ�\ng��qn����-�Ƿ*��*R�%��S�dfEПw���+�B@��5��%�[���ni�zF��Q�b.\0*�r���-��zo��ʢ�x{�8��?���RD���*C���O ��ȶ+�Z�,Y�o1�ttȲu�m�b�r��7�mok�bW���U��[KJ]�P�*�V��OR˃���-��H�J��EC`�ϥ���b�I�,RIp��0n���8��e#��2\"��w��e�$t%~���+��&k�yu�_�S7�\\��K��}5A��P�̱/�Å�q���f����֬Y�ٝ�%��G!����G�-�� ��P\0�i��m��H�Ƴ��~m�8���$U���ɒy����^6XO��\"�����Z3]��?\"�|�I\\\nO�8eN3o5�����옱�M��&nv���9nU�ҝ���U(��@w��Ȕ9� I����_�\'!\Z�\n���f�5�n\"�NX��]@X�D���`?5��Hx����-I� ��YB%��/�lz��zo�ÅΒ���^���L�J���x�6��~> ��������q�;�2QW(�N,�מ�p�;A�����2�Ͳ�;�5aYSz���m%��-p�E�g���H����H\"�����;\\ljvB^��ݙ�;��X��U��Sa���ϧfGGJ�R9`:u�\\�\\�\0\0�IDAT\"�F})g8vw�}(����n��m�߮,Z�ΛK|g�V�u$8�u]Y̟9��7(N�(&���D�]�}�:\'M�\"�\\��F�p�ZG��\nh��;��V/R(�;�e���-�Ji���P��B4��XQQǂ�GoO#��\n���E��;�nE.���\"hjyu|5������-�&�9\Z��k N�A��y��?�ΓщY]�P(��@�~��ln.�$�����A[Ч�Cp�M.+H�RK \r��3A�թ �Z\n��B���@W.k�@b�!�C�šD���BY���Q~$�2�^i6��\"&_�IQ��P(> {�Rj+ WGT �A��L蓶�YN�5w���P���ʕq�nY- ��B@!p:�2B������z\\�Ή_�,��ZU��x�੻��9E�\n���v���i�5u�~���sX��c�o?~�����\0G��B@!p�!�1ź��;��X��S�s��)%��JE�\'���J!���! J�;{\n:���vݞ�����>Y!�P�\\A�ܹU#S(N3]�N�U}\ZZ��9�#��\Z<�ȩ�W(\'����b;��e&�I��/<�mE3A��YRo�P���>A�^4�@=U_���OՍ��Q(_t�@�Ru\n��B��@@Y�g�<��T(�BA������P�(�>3�IݥB@!p\"��,�t5d��B��@@��1O�.\n��E�gᤫ!+g��όyRw�P��(�> \']\rY!�83P}f̓�K��B�,D@�Y8�j�\n�����\"�3c��]*g!����IWCV(� A���R!�8 P}N�\Z�B@!pf pb��g�X�]*\n���\"�5�j0\n�@OB@tO�M5��B�G!��GM�\Z�B@!ГPݓfS�E!��Q(��Qө�P�$A���TcQ(z��{�t��(= E�=i6�X\n���\"�5�j0\n�@OB@tO�M5��B�G!��GM�\Z�B@!ГPݓfS�E!��Q(��Qө�P�$A���TcQ(z��{�t��(= E�=i6�X\n���\"�5�j0\n�@OB@tO�M5��B�G!��GM�\Z�B@!ГPݓfS�E!��Q(��Qө�P�$A���TcQ(z��{�t��(= E�=i6�X\n���\"�5�j0\n�@OB@tO�M5��B�G!��GM�\Z�B@!Г��#�o�C�q�\0\0\0\0IEND�B`�','Default','ueb_key','ueb_secret','ECOMP-PORTAL-OUTBOX',1,'N',NULL),(4,'SDC','images/cache/portal956868231_53879.png',NULL,NULL,'http://sdc.api.fe.simpledemo.onap.org:30206/sdc1/portal',NULL,'http://sdc-be:8080/api/v3','','',NULL,'j85yNhyIs7zKYbR1VlwEfNhS6b7Om4l0Gx5O8931sCI=','N','Y','�PNG\r\n\Z\n\0\0\0\rIHDR\0\0h\0\0,\0\0\0�,)�\0\0 \0IDATx^��]U�����:=��FRB �w�EQD,�`���\"X@� �(X\0�H�H\r-��>�~�����g&D��}�}x�&Μ{����w�Y��~ˈ�8F\Z��F@#Pw���nN�4\Z��B@�^\Z��F�N�]�����h4A�5��h�M�u:1zX\Z��F@�^\Z��F�N�]�����h4A�5��h�M�u:1zX\Z��F@�^\Z��F�N�]�����h4A�5��h�M�u:1zX\Z��F@�^\Z��F�N�]�����h4A�5��h�M�u:1zX\Z��F@�^\Z��F�N�]�����h4A�5��h�M�u:1zX\Z��F@�^\Z��F�N�]�����h4A�5��h�M�u:1zX\Z��F@�^\Z��F�N�]�����h4A�5��h�M�u:1zX\Z��F@�^\Z��F�N�]�����h4A�5��h�M�u:1zX\Z��F@�^\Z��F�N�]�����h4A�5��h�M�u:1zX\Z��F@�^\Z��F�N�]�����h4A�5��h�M�u:1zX\Z��F@�^\Z��F�N�]�����h4A�5��h�M�u:1zX\Z��F@�^\Z��F�N�]�����h4A�5��h�M�u:1zX\Z��F@�^\Z��F�N�]�����h4A�5��h�M�u:1zX\Z��F@�^\Z��F�N�]�����h4A�5��h�M�u:1zX\Z��F@�^\Z��F�N�]�����h4A�5��h�M�u:1zX\Z��F@�^\Z��F�N�]�����h4A�5��h�M�u:1zX\Z��F@�^\Z��F�N�]�����h4A�5��h�M�u:1zX\Z��F@�^\Z��F�N�]�����h4A�5��h�M�u:1zX\Z��F@�^\Z��F�N�]�����h4A�5��h�M�u:1zX\Z��F@�^\Z��F�N�]�����h4A�5��h�M�u:1zX\Z��F@�^\Z��F�N�]�����h4A�5��h�M�u:1zX\Z��F@�^\Z��F�N�]�����h4A�5��h�M�u:1zX\Z��F@�^\Z��F�N�]�����h4A�5��h�M�u:1zX\Z��F@�^\Z��F�N�]�����h4A�5��h�M�u:1zX\Z��F@�^\Z��F�N�]�����h4A�5��h�M�u:1zX\Z��F@����\rF`�����c�X�C�u��o�0�=��ɱ�;�5�]����{���6���F�E@�{��F\\�߀n�2~��=0��MBE���TKΉ�ؐ�7x����rR��=� �TT,/�/��߇�����9�>���න�~�F@#�N��N{��$h����P�H4�P�8&��&�� R�D���L^�pu��I��й1H�r1�\Z�g���mB�������|��5oM�o��;-`��d�@�3&6J�t�8�0��bI<\\�5���^a0�xYE±�~g�5����`�mA4��!�.��C���+k4o��&��}q F�o��ߕ!���p����UT-?�}�(P� �b!�`�{v��L�`#�UB�8I_�{�䧅�S&�xX�� R�������F@��o�����0�0$bN��b#�4 �8ƈ�רB\\�����2Q��Z��W����^�8�S��`�s�\rmX��䆍�̍�Ta쀓�0R�Q\Z ��x>��ӆ�I�(�]g���h�\"� �������\0FQ���T9�����^�\0��G��*ޚ\'��=I��E����( ��3��v�)�\0�0P9�4���� S��Kè c�&?|2f�H�8GH��DHJ��c��[\Z�����&���y�SaA 9Gq@�Xq\rzQ^�(�W��)-�,v��,�(Ed���E1q�,�d,T�:�T\0�8IJ�I&~$ �v\\��L[;MSf���\rf��`��\r����o���k���=�s>@�*�,ęƯo �>��K��a����\"~�gċ�Z^E>U%\nJfLl��q\n�7�%1-�.��$e�����0u,�O�61��I��~��v�L�~Ҕ�dG͡iҞ4���e2X���T�\Z������\\�g�$Q�!����B��Zn~��$Go���T�l( O��l&XȋT~~p ��k0�o����N� ��B_��\"� ��\"���!�i�lِM=��A�f�E�Ď�g��l�^&X�+J�܂S\\�)��h���r�D\0�x9�����䩅�6�t�fLh���nj%ibEB�Fdc���$D�z^``��!��a���Aj�}0G�\"�,<+E`@�40UM\n��a�ߔ.�9 ��LŪ`�D�?�@�DY\"o>(4!4Q��x�������܁?Qq���I�B����˴���D=�ƨ��n@�\"s`[D����Gr;�6 vM���������~o��Bl��Nb9GE����“M@�y(��.�w�3�7�����\n����%ח�*btBS\"؁��`�DXg(�Gd1\'�.<nD�[G�9����&�,K�K�0�d5���u�~�lsf�V�QS�4\"R^J����#���/ۊ5�ƲLU��FG�&Q�z�$h�R� �I�ar�-\\Sn3ITl�$�`�`��E��D�r;R���~P(n`Ǡ�w��\'�ɹ����a�[O�>C#�^\"� ��D�\r�1�cN�K���\n�1���-���V�Ϳ��3?!���� �m��o,�\n51\'�&j8!��{>�\'?5T�KB�r��Ţ��m\"��^rQ� *IL�$���Y��j73�a[B�VGa�6�S \\-�>�J��q;-SE�C�\r�78dt�.e@����=�g��$yײpp���&h⫛_�D��3 G�>�zkJ!��Z���4fќ�-o+�2��)�<Ey�\\2p?�D_�M�=ċ����פP26R��gx_;�qj���ȕ���6�+��=�!�mL�رP�@D=񅆅|%���HD(ѭб�HT�2���aR�m�������!��A�w!k�L�J����4]A7?�q�O�f��3E�]��^���#V51�N�(�l\Z���ߌ����@�y8�X�%���PR?2v;2�6\'�dH!%��J�o�@�2�6��\Z�rM?]]=� ^l+�|��V&c�L\Z�ƌ�c��|@G��67X��T5A�D_^���ʪ/Ǝ<���C�/y���������u?B&XKNTA6�ΰ\\C�*��:\"��4�c�B�&��1�\nU�J��\r:y�1}۶1\rK�,�\"U\nö$��e��s!��\\�>I�8*Cb�&ۡׄ���h�����DV}V3�g��.���_�nA�����d��IL#7��P��XR@Vh+��A I\ZT|��=�]��|gKz;q�:�jQl`�-�mL�8��2�=��N���>fP��_���]g2,㐒�۫�N����v1X��~������z��\"5�ņ���I�� ˘�E�w}����0�j��a{*�aGV�#�d��Ŏ#�;�J�5�Ël,�Dʔ4��i����D�l*����(6T���K�Y� �A`�y)�+{k1���T���S�l�~ߥ3���ٟ\"3�c��$��=u�,�3���S2��no\ZB�Dr3I�&Ql���_�-�pxu-^��b��o�2l��\r��\\���`�Y6�����\"q@��A�nP�_ë�Z!��[}�\\Zs�j? H$�i(M�C�ї��h��\"��(ƐM@äjI�A6�^�r��DKo$�׈�axA��T���h��M_)-�8��E���yJQ��jP��L�+Պi��o\ZIl9��� �/��Q��߳�tT��z��5rvH ����A���\0˨`��F�R���c�B5�E%�9�@���Az�沫�2>�s~NzƉ`�y� \Zج3��%&�L��X6`y�玗����:�*fC��|�I����~�fDw���oa��I���3�^#��0<�0\n�7 ���V&�*DA�����q���v4���I�R4A�C_�m!� �m���\' /[�.���j��F��s�P��\n\"�%2#ra�F!+_t���.q�V9h�I.ُ|��T�xr�7Ø���FL3�-���NN6\"���i�ؒ>���/�Oג\'Y��yFF��d��� � ��v��,B#E Ո�G.�ƈ�8V@T��-�j�����LdD��R�D���l~����Y�U����H\0%j6z1���^����̱�|��l�OL��cʫS^�\n�B\'�q�԰�L�t:�����āa\0~HFT�7�(U*8��[+S���H�g��;;m>\\�<�\r1�w$��7���/�J��;D@�;��.9����v�r8�\Zf�����h�,�&j��Qy^IGؖ��� i�V��j6E�Ӏ5j:#��=r.8�b!!@)\\0A� `�w]�r��T�YȗK���K����]�=ư�k4�=�Jo�ƷrDqHlԈ ��@�UIaq�3�*f���!UK��Rr�nj}����2�[���nxB���F�������)~1o-�J^22c0}�h��M\Z�*��ut�\\FO7�J�������Q(QxD�{�\Z%� ����/i���WU�hϯ��T�-u�1\\���IY|��5,��O�R���/h�j�k1�P����./���_\"��2A�)\"3ILg�\\α%_�J���\'�@�s�ZgѼ��؛\rfN�hE`&.{ġ QFm%�+����= ��E�v��J�fٍ*��5�+H,�f@&��<���k���M^2��ƭ>��J�:��b��7<�2�p��d��V���A�Bn ��O��t�Y��,Z���?��ᣨV��%�J�-cU9�0��<W�r�T�*��[����/����i\'1yDA�B�H�8֮��~�F��!� ��������\"n��6Llz)?�Sz����4g*~�)��r̆�\"\r� A�g��%�̥}��0��#G���t?�ġ��[��MO�$��l�#�.#�x���wՓ�5\\�����\'�<;N\nA�v �F6*�\'�Uɸo��b�v����3��]����f�y=&�?� ?�F\\+���6� ��R��`�T��X��%::���+��73{��M�u�ZE�\ZB̊�ec�O�ڗ:�p�\Z����Bz�E��)�l���$0�D��x��)j��?/��\ZU�%�>� �kq�d�F� V�q:M��II�\Z���c�P�̾Έ�6E?��ӏ�u�#0���Z���Jщez8X꿍>�YT��[��d�n,o��G�{�6��22V��Y�B�&�\"IӚ� ���aߒ�L��|1�9�DU���!%����h^\'=�� *}�I3�J�x���w��eݚ��d1��u����}>�l�hU�-i\r�K�\Z�+��A�W�\r?�T�C�w�W#��n\r׵�T��e�m&��c��1�D=��: 9KՌ>4�����u��y�jH���ʫ���0C ���%�q��C�l��9z�ጜ�7�.�H�T�ODn��ż?��R�n6�¸�4 ���I�Q��D7]]Nu�,|�nj��i c�Pr�5\"��\"f ��x���w$6���N�Ο�x@f\'��J�&��RȲ�5��/�63�2&s�e���bG!UC� ���\n]֮\\ƫK����H����w�Ey�(�䝥%��G�*��|����J�Q*�=�Dх2� U���}�ᄃf���D�� 9����//}���h�� �Ȱ���_F�_��迋�T��\\�#2ůY<5�5���9#�Mړ�]N����OaM��HN ���Cto�b��\Z�BZ�+2.U�RU�! ��a��\'�y��X��!���B�ئ�H�_�\"�\\X&KS�\"U�(���s�Q�*~Q��ClӤ���t�r�L�a|��� \Z�2��@�j\"I)y3tY�|)K�-絵=l���4�KED��)�� Z8�\\�?��[ëVU��R*�.�R �j��S �l��\\����֔�Y̟3%� t-�L���M�C�4�È�h-��?�}��˰ W9AF�2\'�G��i.9�����0|�\Z0T��T� r�*1C�<2���r��E���J�@J��(�f��*�u�R����k��E���N\\%�AK��Na�\\�g���g���]��4DSc�L�u�}<�Fʹ3��T�>&G*�܏��� Eb��w.��b�V�\\˪��z EO�U}�h��F�OuH>:!�$��5E�A�J�XTuX���;ŭ42v���V\\��h�c\"��if�!�>4����u/�[�ڿ���� ����B: !f�|\"�s��0��z2������ѐh�\r�BC:u�JI!?WI���+�p#�f�N�t�M\\;��������k\\�|��nK����`����Tq8�#7I�ό<���}�nc�@7qI��5�|�l��V�̬�m9�r(���O��O�I+��z�^�\Z�W�!��&[nK�7��S{�U��E A����V �ԻVůV]�R��!�Ǐؑ`e?��t��`�S�����wF+�U�$����n���/|wh�~w����(&�=H�\r��܋k\'r�0\"��lqU��\ZQc �M�1���ό�`�J\r ���y S���k3�R����o�Pɢ�����⵻/!WYHs�J+D\"Ie8�q�ȍ�dZ�ܔ�Dv#���d�&_�7?�q�~Ctɉ¢R�P,U����薔�� ��2�D� ��RUI̪�kx�W�t�89���”2a,>���(:�:p]�ХT��z�� b��n��kg�;��Z?t˚i�v+�٥�}�0Zm)�k0�1��\"�$1$�5�Jo�\r�-�>�\ZM�C<�J�����G:�B* �B�~�(R3lR��mT(fGӴ�X��g�Iy�(v~ߞ�c(�a�=�c� h0z��܌&B���� ���2��\ny�8C�/�ƣ`\r�1���=��m�OsR�M$]�-3�{�H�\'a��Q9x�10��嵦ź��|�Y��a\'b)���֒�me����-Vw%�H9��h\Z׀��,�!.9�t��i�X�\'�|>�٬4�lz�x���}8x� I�l&7�׳艋uR\0$9*M�C�1����&�!��0.�掳i鷤����@3~�ج .R9\'eP�mC�Q7d��e� Ӵ�WAMR�a�T�����)�� �)9ڀ α��Ɠ� B�V�eDc\Z/�J��J�0T#[�(G.�����QRH�&UW��\r��������(JL���r�g�?��9;1A$M<�h��* Z�{�E�Z&�*x�2v%�g�kt/z����i��} ��<?��A�u�/��df��ϡ[rէ�%c��0k`\' i�~?�]?� �\nԗ�ߌ�&�!���{����ɨ����m�7�I{9B�%��\rjQM3>Ff���3�_\"%ՅA��\"�K��VT&i�~�|�6������^\\Y$�\rW���i�|�R�k�P.zR�#y�\'���\\���jtUc2�Vr�,��R�RB΃�91�Wna��Tk�\\#��T[�����h���bV�)�G�*��>q��Re��O�L\Z���G��.{L�k�Dž����+4�,�>rg~��3�%�>Fh��xD�DІ�C� �ᄐ&�!����(��~���gp�1Q��:u;^^U䉽h`F����L5-�5���_$j��#�V�\rK<RQ����M^Y��s�b*f����lbW}�f�Hݳ� ;�\"]`j���l�.���O��M�4S�i�E-\rA˾b�*��@�D�T�R����t|��2A�䜅��BЃ���9#�����0��ЁZ�����N�ȵ�\\�����^�� 7ƳF1r�Y�x�6|���T8?��N<_UZ���e�/�_��&�!��hկY}�W�ď[p�.��L�o�l[��pm���l&�K��-�IX#T�>��߿��Z%%`Ju��&5�V=ya)��H|3K>o����F�]| �3��Sd�!��S,� \"�-��_(2m� *����|9_Z0\n����ʁ��P��%�yC!�U�\0\0 \0IDAT�2A�w��v+%��v�:�]�ؒ|���TD�-����߮y�o^� �\Zb̊O�ao1��N��s�M4�ҪE4�\r\r�G��I+��>4C��&�@u�kF��������f �KU�Ee,/O)�\"�yTS.�{��n$H���\"��}����W����D�\'����{_\\A�lW������ͼ�W� �.�Վa���O�B-��r���[o;��t{q�o:ق��$��bĤZ�$nz��>ē#R�\")�V�+ �Ar��:]�a�z�Wr�!��Ɉ Z4�����ß�B�k1�}�Y��B�O�5������s�3mXn�m�2��D�m�6�l#�o��C�z���o4A� ��J텛IU+T��x�2\ra��ӟ���D�H4�XZ�^��4.�8�* ��G��g�*���}�kx,*�2��7��\r�ec�������B��W�j�B���[�Y�d{| n��&��at9�=�һ1����@�D�9��s��8��qD�{=�!=�%t�k�٨V����<g6+^]���>�]�M~���s�C�x�<���༛���\'ɻ%̴A���÷c�M\ZӐ��!E�Fѭ���\n.�;��� ��՗��=��a7�+�a��݌o��D5�0K�ɐ���v{�sq�8�0�\'d�Pܡ,5��*+�d78\'ݨDYa��̀��_@�Eo%Oks\'�%�-�IM4ˎ���^�n*�2��入������-9J���EF��Ok�G�ˉ�-��_#PQ��G�O$-�\rq��Cj�w�j��pܚG�� E��=��v��]vݖ��x�E/t���s�)�s��c��[r�����y/q޷��kg����p�$7��ڭ��\'��^��`ǩ#�|x3�HmK�F���MI~82R&*ُ�o a�W���P#� z��6���=���4& C�RNm�!��$}��1���0jF\n�0�����BC5�\r� �^��X_�(�CnB��òj�}/�!�eq2\r�8mH�G5���2�Z�J/n�)�Y�]�y�DF��4i�%&qB�ry-�>!g���?Iq�^zP���k�t���&yn�Ǘ\'��\nQ5d�3���ϟn� �r�?0�[o��O�3vd3�\\*�in�P��1bL;v����.�w��X����-r�M6��)rF����9�Ƚ�9��FՓA���<<3 ��+)�5���Z����=ē\\�Q+��b���駢�X�&����lDF���S�S��\\#���� �߱H��J� ���t��_\\�\n�\"�氝������;����I$[��ߋ�C��.����ʇD5\'Vy�w����3�H����耭��2��EW-����aD���^c��r�[p��%�L�<��\'}�BW���-\\��O�r�5E��\ncǍd�[�6��p+߿�fZ�Vl�%�eYS��:r8ż��q#�5��i�$>{�n�L� ���E��90\\d�T7.}h�9���9f����Z$VVݢ-��>���&�%^������A���\"����*�0š�q��,�����wU�,y�(�b8���x-c� \rC2���\'>i���W������)�y�|a1y��R�xC�� şD�k �����(R��DЃNu��(�kC̐ܚJA�R�R��2)�^�sO>�uם�җ ���W���r�)G2c�DZ\Z Z�Cn����g���nбf%���7|�G��I�y��4���/|��N��=�\\z����wYS*�jjb�����se��m�x��0������Y��}�F`M�C�\nW�� ��N��\ZBi���a ��k����22*��\r4��j�^_x���j3P3~��7d��*!w�_�1|<��`BDZU�m�!v���Z��BW\'�[fM���R���ϥX�H9��t6�2B΃��:AK����$�8h_�:�$Z�K�OY�vW�V�����9�0,m3��3����>��\Z&1y�N>e��Z�u��̋ϳ�p�����D&���S���䕗_�Ǭ�d�2&���=�J��ª�]����+V�=��[0|f#\'����R{d��i3�����l ��7�w���ɔ���%-A�t0r��<������4�������X�V�ђ:�R��9���e1�M��E�]Z[I|,�^�S����TDibڤ�P�󛆡�����V���C_w\'�e��Ǘ����3|x �-)��j���A�:C�=7��>�KJB��%�%�.��F%�dz[&��f�-7g筧3���j?���n��]�������[�b ��|�S<��K���/r�_a�����/WpɥWp�gҽv/�M�is��B��%��A؆M��v�i����#��\\��������b�(S\" Ôf�C7�`)�S�\"� z�\'-���V,S�)�����~\"����\"�b(:�R۞�6 }3�R�%V�!�q%M[���$�P����Ŭ��)��� ��4�Z\rJ����dcP�[ ���_�̪U��n���/^���R��T&�I⹡�T ��Ơ���=Eb�\rt��78X)�\nQ�j������ܭf���)vu�����.�)W+Tk�b�3N�\Z\'ٜ��X��jR�+V��ۛngΜm��w>�m���.;nM����M�rE�r\0�r?�q�_n�N ��J[��?�37?����-�N��S�f�-\'2B����NA�����5A����@��gH�N�cF�J$�]���u��1�}M�8E���I�mCM�r00��TB�/\n,�+�Zo��Y�m֨&U��F;���[:��e���J��b�j ;�� ��s9r$�m���X�JEbl\')Rq%=H΃��#\nA�4�D�*�,��A<*56;��q\'{�2���n^z���y.G��Q`ْ��[��oE���Z1�7��g|�DV�ɛ5s���g��`� �ii�k ׈v�� ȷ��-�b�7���a蔣���g_��e���m��a2W}�8f�gi��\nI}h6M���;xM��)t=�7\Z�r�sP *%WGʨߗ�n�dŸ�0��+T���G�8�)��w�0�Le�We �$T���Y8j{pMo���vQ0L<Ǣ�q,��/���F6�ᐊCRaMu��4�5���.��*}U}�9N;�#�R6}�--\rT*5�{��/�s��݆�dS0$���׆���IaJM�%���n�w/��컜�������Q,�q� �p���׾|<���W_)q�����MƳ�I���t�^�o�+c&N���͜f��n�S)T���7r⇏@��l#�j�+c�!M�Vz��C�$����9�8�j�ʹo� s�6����\\��� ���{+����S]d��I�\r\\�H��ۑ�$�·:I�C�E�L��\Z�U[���S�y�<݈�H�٥�\\Eq#\r$�u� i��J��4�CF�#�+r^&Igm8�w�������̩���x*��_���o�Z[Hd��R!d�*����M���f��������b�*R\0e�n�yP؜��DM��˒r0J��Ҟ*K� T�4�m*���E\'����{EB2��L~bX��-K]\\���N�|^\\�lj<ZY�\'�u�B���\"�n���0���m��IZ\nS$�Q����R�L��e��;�%�_y-;�y\"?���i�D̙1���6�݉�Ⱦ[S)�x�.���i������1���Tڤ�b�#G�R���lk֮�!��Gr���?�-;�6�Ϟy,�[��<�[�c�m�rֹ�R*��p}a�-v��\'�ǧ�F��̤ߣ=�<�=Zs����c��Q�N���n��C��ogi�8Ku�7k1� mFX�Ԙ��ڧ�F����L�flR� ҁ���Yi[�V1�/݄%{ʆ�J�N��p�ݩں9�&+��(P,�����������ڨ3������V|�ȉ(-�ź3�6HE&;��}:c�N�.J�&��ă&B����\r�Q�Vj]�%WhY����?�� a%���a��Gt�5,[y3�~�������fu���s��jCP����nC9��?�Zc�kpsppSP��Z\Z���S��<�K�X��ؑG����}��3gr����!�a��nJ1��d�Y���bz4\'�y�ϞŗO� �/f� �����ϼ��l3�G�=ͼG����?Hk�hv��D�t��~�����D�?�k�j�������>��j��h�s���t~|��Ҝ&/�W�{��-��i�J&�R7t��T1(u��/Y��W�8�x�Q��&-\"�=\n��@��-��\n�B��@V�pDǝld�إA��bg�Hr�ҽ����T:.����R�_Cۄ�4�����Ս� cl[����Ӭ ����1�c���gX����bܨ:U��\Z�ia���}������L9�FbS>\nI^��,�)�W�VMxem�ս%<+K94�E�,�LDv2h|���V��D��l\'�_��Etv���\n�a���_�/ތ�c1�Wv��Gу� ���\\�T�g�M\nW*՚�>xZ�\'L�)��O����<�p��t����C>��7���?r �\Z\"֭��[�a�C��;�b����_3j�.��;�|��9䰭�8e$������fʦM�R�������?�f��<7���r�y?CW�Z���::�9�ۄ��U/o0u��9��m8��9d��t�X\"Y�ǛƓܾ��?�k��d��2��|]� ��f83�e��g��_�7܌�o����؁���b۱�\'*\'Mˈ�L��\r�ڒ�La����4\"�^��Z�����4�u�s*�9��BD��c�m�f���,˒���!\0���=ԓ�-b���c����r\\�q�t��k�߆<#B���i�q��uXU���y�Ro�(���\Z�K�E����pMf���S��sCz��^D,��4C�W�Ve���ū��k��|�U�-��� 3t�D� ��.�S�\Z�rF�5K��@�6\\eWZ�� �T,�!\r�,�o?�͆5�s�<��|���w���Sxi�2�xx>�Nh䋟>�j�:���,�\r�������㗹�{qϽOs���K_��J�e�����n��\\r޵|��ӕ/u�h�h�F�i���VO+�����O�\Zqޅ�\'�\Z�ˑ˷Q$��[�|� ���$&�-���N�+�+w��,�T݆��$���LV�22\rDV���å]i�i/�{\Z�r3�.?�SOS���1F��l�J���N��U�L����^�}G�� ��Ū\0X��}��ˆ�\"6��L��cU�źTL[�3�P�̑����q�H����{�F.���P�Pϔ߅��\rT�;�Q�TSQ��Ԥ���۴{��}6m��O�ގ���)���x�VB�I#W!J!�(6��ko1�k{);i*^��֑�0���lEb���ErȢ�0dèV�{嫬[���R�k=.\'�|�\"�J�Jcc�K���u�D�뛾JA/���� e�U�I�yZ���ǟ ݷ�]v[MI&���g_��?>Io�Zv�i*{m�9�njR�8����F2�a���.f���?�\r�>����rd |� ��C��s��� ��iR�,^9�qRK=�V��g��^ሃ�,>��/Q*�U�ʱ���8�b�!;�ѓ���0�&��U���F�uK�R��+l[z�R<�nj�x�o��`�]`���L%�0��?�=���_�q�c,n��}��`�H��KC&ńF���\"z\"�Ź=�kٙ#>t\0NڥJ���s�_f�� -n9^ F�݌dbv-33/�bn�Xmqᅟ%�I�� ������&�!��{����z�fe7\"���<ʶ( �Q1±3t�m ?�\"��� �P�Vf�B�w�N�р����m�i^���3M�����UP�j?��V�*�6-,�B�Ŭ]���r���eN:�$�@ \"�K�\Z�-$,)�\r Z��T�g7��U}Wu��*��e�mw�+��g7�+�b�h��L;5�BE�z�b�ub�)fm??2)�b<W�z65/������>n��nv��\0��o̾��”Im\\�ݫiin�9\"�R�����������\ZM\\���*#��&o��1i�7����+~�\nc�qԱ�Sw�}���p\n�<Q�p�糗?��[�g_~ձ3���.[\ZX]%�ya�Z8�M9jw��_J��[H�c^����c\Z�fn˰J�-���<Ǧ\rO�*�ʼ�4�?�H��vsD(������Ì�_�\'��}�m�W��6a[��\n�\Z���t�+��}\\p��C�)�����jm�o��&�!�A�@ϻ���4��W��<U�a�>e\'Kdj�L��0\"��id�9��h�v*�He� #�S�Z5i�&�x�X���ڂG�n���+�fIm���$���<��-�VKA�� 4\rҡK�kK_z��~��]e�<�xZZZ�癥M��J�x�I{�oc0��ڋ��h-�QsK�Q���Ū ���/pՍ�q��`j{*}L����A����J��q�lF�ȱ��,�_��������6��}3g��������Iת[Mk禛.`��5<��s,{�y^z��<�8���;�ࢋ1S���˿{����,[�����a��O��&�\\#\'|���yG���alڴ�7�7Z������jbp��/a�ڣ���/��X1bW�y�>�C�0�+1�,\\�3����������)=����f�@vW���Q�R=2m*=%���<f��AzO�;p�)��ꩄ����o1�[A�N�`��]ގY����=rL̈\'w��}w=�C����M�K�⟭����&�\r�Ɲ(�p��bJ�,�|�����k�f[\"� [M�HK���ֹL=�7��XLEЪ�����{V0�(A���,\\�\ZV�Hz*!ŪOdXJ����9�*�N�m�y�����g���(��p�����cM���i��yם ���w���@R��/F�^�e�K\"�\r+�ZB�U���vr�dzr�k���ަ�\\z�u4�Qa��ݥ*���?�C���1$�dX�s��.\"�|v�3\'�DGo��{�N؟�ښ��8���0��|���;��᭣��� z:W��Y\r�v�\r������˯�Cǜ���[v�og+l>~ ��\r����p�%�o��ts3��\'s\'�1�{w�җQ̵0��{�G�>ڼu<�ڕ�{�3N�+e�^ �����5�ӓ����,;�{����3w\'�m�_?c/�E���F*X���M̚�r�,jܙ���s�a�Ͼɶ�]��hz+n{m4��:����Bc$��o��!#p}Su ����[��H�˯� z�\'0�`ѪQy�*�{�ΰ�B�A�N�`�\"�Wg�v��B��X�w�.���SK����S*����[����7�C�FK�|���%tDY�l#k�ES<���\Z�dc����?U��*�\'�Ʋ�[a��Y��y�B ��|��М2�\\Vm�d�O,�H�߭��9+��J��\r�d Ye��}��e뉛q�����^�1\'�\r�|�ի#zz����æc7���������O �2���{�ʓ_�Տ�㖣��ϯ,rǽ�q�5wq�5�Ժ��=���Q�������e�]fp�u���ˮ;��o���5l��N|��������i����ܧ>ţ��c�)���A;p��S�F�Ǘ_ⴓ���\'���M�Ef�����~��kbF�)\nv�\'�i��d��utLh���0\Z��.����V\\K)�R���w��k#��iBũ�x� _A{q����� �~�g����E�X�o�Dz0ނ /:��\r6N(r��\n���U�r$�[�x\'h�~\'hmĹ�U\r��}���>I��E*v U+CS�\'T���Gh��y�qG1�� �eF�)U �/r7�UJ�� �͆$�t ��Rhs�� ���eZ��+��\0mğ�ax��C�ƌlU޷r)��~�r�*�x\r���P6�4��i�����r_\nTD�<�)8X1�am�d�Jo�S�ʷ�9v�r ���-�=�L���|�_ѐ�ġ�Oe�9�3et��S����s�Y��\Z\r��K���s���X��=���a�=������������S�­Z,[���+~Bѳ��rŷNe�i�X���3���e�q�\r���y���\r�q�IGӹf!G�?w��wf͚��1����񧋼�5��!����gm �o��b,~(e՝\'���{g����1���a��b�=�i8������a��� �\\�1f�.eU4�o��ӏ���RI[$P\0\0 \0IDAT8� ��M�<r��_t#c݅�����]8���z���%�QW��˰����oEި`��jla*�����t�yc\'^��\"�6_\'��S�k������!2ʪINt�F�P�lq��x��d�2��K0[&4�:y�\r����W����4h��Ju1��|�������� qػ�gJ�.彲�(�!a��W�?���)�\r���\'Ϡ曪5U�W�*QP!�M�i���{@���\n�.A��T)���̈��v:��u���h�j*q�/��b��gH�݌l�쭦�_(�!����<��K/�\"�Khw\\��Ο��O�������������ۮ�ɧ�p��wS�C^y�����w/?�=�����>�����Y[O���|�,�\'\\–S7�쳎�{��\Z�]�M�-[���y�M����7��^ɡ��ңw}�����#�y1�%U�c�\Z����w�~���|ªEG��3���l��t\Z���[�y�W�ڷ�\'⣸�w<_���5�j�1N��r����[� _�v�C�k��![40��3��],��͏�-9��d���eB���Xx^4�p���ѷ����4A�4��\r!�q�\Z�k������/Šb� �\"�Ȭ��\"i?���eC�c�aܾ?\'v�K��:�IV8q�{+�;���{�� K��ZH�:��}**��q���^I�=���\Z����Q�馻�ʮ���9�R c��0}q�5E��j��YU 4u�%\\�Uhn�:.��i\\�ŋ3f�����G?b�Il6f2�n5��ƀ�Z�*5 ���U}���gyh��|��b�2,�vln!{0�_�\0w���\\q��X���-fL�l�p�Y�3y�D>։4����j%R&I��������gn`�M�s�� �b�)�q�5���O��c���{m�A����k�`~�W�T#��1��8#�)�W�����i�Kl��$[y�jv:(n������F���,����%�j�͓Ř /�0͍��f ���S����>�\'��Y�jޚ9�g�c���.���&w���\'^��E�8c�[��0�z\\��z�3� �]�V/�P����Z�����\"-}w��|?�k��2�P�vYL�H5���l��_c��Kl�Te����Щ�v Z��R��J�񷇟�5���aE_Y5y�x;S)b��I�n�T\nQHʌ +e<� />t�*. ��9���H5�������1��Up�X��xn���ޭN\\�j^����.�1}B��7�j1�\\�KV�v������`��w�[��ͷ�̙?����Ol3{W^\\��o_u\r�~� ̞>�>p7�BGy(�\\��}�fo1��}�8¢Ũ� ��q�#\n�E\'S²� ��d����je~��;�-�8�S�%���<mm��z5߿�Xf��]�_{�gWY��w;}Z&3�$�d�IO�%@ z� (\\+\\Q���b�z�+UQPPi\"-�PBo ��d2�>�����w�\0��z1W�s�{���S���}���z�z��v�<����|���R��Rv��K٪�߅��}V^Ǽ�\Z\nV�_2l�9�������9�\\C��㻽g��7�����Y&u��\r�<{�݌z�\Z�ۯ�56�o�q�>��u70ͽ��R�g�E�&��]v*�R�(甫{(�&�nC�w��D?vM�;�{Q>(�0�e�*�����o�v)Q\"߈c\Z����|�*Q�%��1b \rK��5@��w�hUW���[p(5bi�����mz���3�#���>��x#��֍={;Gl�3E\r-��s;�?v���<97�䙻s�\'��ۭt �2��(�\"9Qɚ ����!h?,�۝�������n�z�y\\�q�S�ij��&l������?0nV+\'/;��O��y��e��_�- \'������F�I������r�\r�榫/g���z�M�\Z|��I�V:���[�ͦ�[�����3�9M��@<Y�Z��Ǎ���_�{F��M��~b�I2n2|� �x6W��{?q��3�o/1�9N��H�qO�b���M\Z ��W|���� ���z��W�?�?oV^�qf\r��w ��{2�Nd�ы�YMҾv�n� x��^O�����.�p>���.m]+�P`��ȭ������ ����㖛� R��o#m���~��O�Kh��\'�\":c���i ,��9�n���(d��\0;��B�(`�>q3�of�7 \Z�>��E ��m�v�a�,�� A��g亝���_�Oۮ{Q�%X������f�@\Z��CU�Ҟ\'\"�d�ƿ{�z�\'��-��a� Yr$�g�c{O?�m���I����m�b1\ZN)(�ob��<�؋L\Z��GNܟ)��r�/���w����C��dDqS��a����G�����<z&�7v���M��\0���W�|�#��ؼ�\\����GNڏRo��ؗ���NS��_�5�>�5��K�bv$����9\Z�0L�x����Q���9�r1��h���lw�O\\����s�sw����/�`v�@ɯa��I�e3.Ē��Mx�����n�.=�ovD�m�8u.�����ٵl��\\ӱ��>z0;MMj\06�|���#����dž���fS#�/�g�̫|���n%�s��9t�g�S��(f�^��m�<ȼ#2s�h�w�;��&���=�J�8 ��=��I��ý�ê��U?MA����N��Q�͆���� X��JDI2i�x�m.�r�����U{�O�~ ������T�U�)��jБ�@Tt��)w \n#��w��zY��s�x�A:�Ȥ�8l� �ǐ -�r��S=$�_(���|�Y�mN;�8�Qf�\r�\"y��R��_��&?��C���xMN��Ml��ה�u�)�y|\rO=�\"{-؃���l��q��X�q�B�q-�8���8��8N��@���H���b>_����z�rJe�E��Cð,�>��[��чWR������\"j6����O~���z\\/��)���{�y$.ډ��h{���{y�ul�����fgY]L���741��ez����3�V�ީ�8w8�?� �h\'y�������vC�8��Mf�J8�F����ݫ��8�?m\\ȳ#g����cV]@~K��?�c������$Zx1;�qojR��8����$��N�K�$��;���C5?G�?9��WU&��Z����/�������X�b���r��W�\n-<#N���]�\rk�لf\r��H�є�� �4�[-2s��C_h���og��%���[���[� �݅\nQf��9I�e33���+�w�LI0ER��億�֯|�WYN�s;M�&p�\'�Z8�~�e/��-�7�KOBt�sd�l�ҋ��I&�g���655�A�����{�Ē�@�^���o�@�\r=�l�`��W {63c�pN^���X@��I�4\ro\" � ����O� �<nO�\n\n�ͭO��_����fƴ1,;ir�.\Zkbd;M��un���ij���|��6��ec���yn�������ig�����q����г� W?́=�dri%�ܩ��(�=�v��ܣ�o�I�S�2ԏ�>���w��ka��N��/�m����č>�˲Ś���x���Lwa��I̞� -���W~�+z^{��~�Yb⌣��J��\n�&�x�y<�=�˾q4 ]���k��a��� e#;��z4B�\"B��m�}��U7a�9�f\\�\\�8��( ��z�L7\r���i]�̖�T㿨ˉF(��j��o��*m~_5{� �+n����LN�8z{ؔu)Y��E�-�*C0��Ky�]��������鲣/b�i7˫�=��+�/_`�λ3c��1�Y��%�������V����Û�s���pc!���:+�\\˰�f(�p�T��3�p�03���qO��-� �l\'��Q0f�� >|<�b�?q{�<����H�����:���]sw<�4�\'��ry���g~����n�C�[W��[k���=��3������䊗��˘0�H\"V�ϭe}W����\nB�9�Y���e�s�tv�|o\'�{|�y_��]\'\')��Gv�M��y\ZS�6�֜«�a�������3�`��4w��5��I�z�9�lqFI�+���ղ���z��ѳ�����0i�C`8F�Q2T��÷����gLr �VN���\\�-�:�1���c6{_>w�4ju�#�ߟ� z��{o/,I��\"h��(\Z2����t���Ԕ^���\'���4��E!L�Ld ӳ�����j��LC&ŕc�_}���,����տ}���;�h�%;���m9ʖ3\rɑF�4���(̻�Z��QI��9F ��Ϛ�^���T�7o&��\'��s9��;��Co���O8� ��G�\\��=��8��l\'������v᳧,R��>����r#��(�d\Z�˒�L������9�SO&f�ǂ}9��ϐ�ʯ��:?����t�ϸ��_f�]g�r��g]N�/�m�~�/}�;���5[(�Q�z�K?s\nÆ\\���q��9��Ѥ�<��M��\'��n$���������Svel��Cq�n�K��c��c=�@O\'�T�@��*=�q�8��KDZ|ps%~�������-��ꋔ���<;A<UDŽ���g mb�4\r%�U �`%��K�ʞ�C���}Ou�;��(�Z�+�H6�L�e>��b|�;��&�E�=�Nu*K)b�d�(�Y.�2��_y�g�\"lQ�(����|59W�ň�J²8�hR|��n�4|��\'�>4��Iڠ���Уl�x��M�О�m�T�%���� ��1�g�o�pHiC��х#*� �������#�,���Ʌ0OP`�믰��$�9���̤��y��>�r�����4���=����v�9q)������;5en��������GA��ν�-�$=%��L��Ñ���K+��`�8���SY��%�[���q3���唺;���.�p�\\ZM�x,��kθ��\\p�1��N:� 0|\'���fI��1����+>�9�����_��h�b�\\���(z�I�����L��#�����g:r.\r G�^m/���\\�z\\�4�ZjlR��ҳ�b%?��Az\nE⎃\'���\Z6�e���T ��&G~�܍4�e��&)KǑtg�!���%��n�H�Po�J�Ԧ�̌�ވ���4A�j�kDMN�Q�����0�\"Q���[G��?Ef�y�r�cP��B�\"�$}q�1� ��K֑���9gR��������1)����õblȕ�ʏ��\'��<_�8@wɢ䅘NL}a�Ԩ\Z��U-ZLaw�a��2um�/c�Rg/���X��4�Na�)x�J]$(�߾�s?�1r���[���.��)�;�gcG3ƍ��OO�7�瑇8`�=I[��cow~�˧�����xʉ���h��F����,�t�Ni�K���3o�o��:�����mdD0@�lp�:8�sW�b�����@�v�r;�X.��VF&}.���p�ŗ2}����3����g.��{�x����g��;�pj5������j���@ɿ�^�<R\"���S�S�+��\rlO�Y�L�MTV��� u�U���3�r�ʌ\\I \"�mș�G�S����gү�\r;�7\n��2beC6F�\r$�6,u&��t\r��˝ayp��2 �����Ů��0�\0�G�w��� zG�{�� �և�j�j�� �0���޼���~�Qv~�C�\n�VB�Τ=q��8 �b� [�M̱c�e�\r����e���o���MN�ܕ�z�9ر����ՎS�Ho��PA[�����A�{�o�A��⻳m!��S�YW�����~w%���ga{�� z�o�L�����W>����6eg]}+��5�$���ѝ[��G����nc�޻q�����lhs����o��#������E�q��M+����#Y[˫��r��KΪg��)��x.�ZY���O~�E��������o����d�1��Ҹ�o��O��ضz>�w8x�Μz��A���į�~�[n���z�:�`�[2O��K-^��栙��D�J6���$Y3���Q��҂�D��vd�V&GqU�}qV7��P�d�ڑ�z��;��]d���#�C0=��2��\n��`��!�d��tM�Y���A�j�/�vɯ��m����7 ׉�*)�����Ch��!���I���<,u�Jw���ȗv=�B���1�l�\r=Jf\Z+0Hy��$��e��&]6�m����������m`7�)5������H?�M���{V�S��5w6�V��d�@� ]G^m>�qF_6����r�����ldJ�Du��6q��(\r���3��Ϛ����ĩ���\Z�ȿv�x=7�|�c��k�����-���y����Jn����`�@@��.��5Qm��PJ6󉳏eZs�`\0iJ|���J�G:S���̛6�ͱy ��]9>���r����G�!���|��۳|�g�8 ��ѯغ�_����L.��R>}�OX��[|��S�1�\"��d�&���+8t�RZ�²�����r �I)<\"��D^�Ж��BDj����4�]�0�\\$��BC��\n��a�16 5�\'9�\\ #qٌ�sMTHXܵ�h���:9q�7b�$p�$����Sb����QL.��8o�\'���hH�����\\�+�y��>�_��s5A�8v��CG[���Sn7�$���{���/��� �\'o��~G�/�\'C����!�!�x�\rߛ�þ�U?w�6�/�lR�R� �J8k��R ����p�G���Mr^ȳk��O����cxHg)!���EJy��Y�9�\'0��R��Y.f0��7^�gV3w�8��F����5m\"\'�f��g�<ͮG2q��\\r��<�\'�Tq���^��%\'.�׷��3g2g�$n}�-��ӻ9��#��~#_x�^?��������555�q���L�$U��m/w��W��0� ��S�7?�����׌L�7�|1���lo�9c1�v$���5:s5������� ^*s��⮇W3�N{�����.�N\rIR��,Y���G�kS�CJF�Z7�)�QIO�egܸ�ߺ�d̓��މ��j���N���8$c}�� �wLqTK����<W�vɐ%k��Ne�¯����bH�Bb�.r�-��U(�Cb��c�*��l\\�tE\Z Y�?����y��4M���(Fu¨6\'�\Z�e�\n��Zz�޺��?\\A��M��Lj��D�k�G�(��,�����8a�^�,�Vm�L����lV� ���;+�Π8��)\Z����?��T�N�1�\rL��9�G^݌�j pℾ�ez�K+�HC}�Ҁ\'���^��=��.j��k����iL�D;i���ݱ��z� �M�\rta�a�L�%��=z���\\w䄝X�Z\\y����0���/}�Fy>���[�:m)�T�/��\0?��ˤ�Zn��1̮)������Mq���9���t�{��_z�����}��Y�ǿ��L�cO�8p&����tk�⇷���.�5�2nxLy���~|��+�i�򅇓�<��6>q��\\�%��)�����8n�L҆\\T%������ڼ\r,e[%��D@Dⶇg��AL�F�=���։j�R����w�����deU�-��P�0+a+Ɍ���b�ue�7g��\0A2v����H�B�|�Et/�iK�o/d����]�&��M�;��?�u��\Zq�[G驟�}�g ��+P�g�h��������|9{[�0�Oc&f:\"���îJ*�/jt{��i������:���E�5�(�5������õ��8*�~��e�h��1t��N[�_�ĕ�Y_tF��a�&�����lz�2��rՂ��a��a��pW�J}��?p���1��%J��uu5*�+={�.<�`�|�}�s���܆�9�d� ��������Ȍ��=7��#/d�s�r�Y��hT�D<��/�����u�h6��\n��ZH�����9�?����=�R��X�f����`��[�������b�[�L�<��\'G/����\Z�?����m4A��!�<��3�������+�R� �q-�R�ķi1�΃�\\������e�b�!_�m���:!��P�Q��DC\'F4y����\Z1�yn\r���9�8��2��ɪuX�S��Zr�FL����m�7��A������s�\r\'U���^�T����φgc 7@���M��ƙ�R��3�,�B���}����2��qu�ݶ�7�z��k�s��O��T�1Hҟ����,�O~�\0\0 \0IDAT��2c�$�U<�!���z^���2���<� �,;�œm�%���e߻��Wm\'�����f.:�lzTMx]��k�:��ى��7u ��\r\nE|Rt��>�U[z��O�る�a�iÙ3&I:�H#��|�鏯T4A�ߑ�� �4���+�0p��I���[�I�a�0:PӴ�ˆ,\r��.���Z3i;�+��ԏ�zw�Д\r\'�-�Jb�l���ը�ǿ�;�X�������&ov ���,�l\ZE�j�Ju�4�l��f*U3�s{�?T6;%�V�fH�p�X5}L��xz�����N�Y��i�&�`m[Ù�f�pl\r�Y�A����y�ǘ��,V��&��_��i�X��f��׾�=�-3�\r�̚�ƞc|�5l��;������#t��cx%�.9�F���f5b%�x�K�f�&<{4��N� /���N\'l%�s�{1�t�b9K�(��n�4J����ײ|�s̛7���3gO����E�Z�3Ŭ�Q���-�����~�NڬL[�� �9A7����r׷��+���e⪦%��Q��NQ<��:z�I4t����&L�ܑdуۖ[B�� i6�\\κ�*�O��!G�@) �v(����&6�{��=L+�aK+��P�\'6����w�`������擲ĒV;���I�e���h憛���~��V��Fp�L�5�p�|��@����\0#k�^,a���\\[��`c�����sVwy�-�|������z�~$|�W�l�׋ӕ�bi��¹c)�l��Ʌ��9~�Nt�D����{�ଣwe�+o���O���i��\"W�_��e��L=f��ɗߊ�������3�b�v�1�&�$���Fo��>9���h�~�#�L\'dP+(��Ƕ�,ƺ����Wq�v�-\r]bF䶭ZH׈�Yl��)��S���f�ɤ柃�)���\r=�2�8�O8(�/��9�O�\Z�uc8�؃��l�r��T���@��m��MOV��*�V$���0�vm���w Df�j�}p#�l�I.���0%��KW]�V�$�o�hd0܀��9hV+o=y?��K����#�/�!ـ_;�|a��Z�m�$�~�j�7�����,p��-6�Y8\n��>�|��Y��4Д\nI9er�#�q�����|��)e�Q1�#�����J`%�P�OC��qᷯa[9�g�:���,N��/����\'/d�H�9�Z���*���E]�~��e�������&a\\\n^�E;��PS�V��~EǓ�b�Q��<�HZ(v��M\n�t �� �&���Y&�� ~���u����2�\r1�}>Q�S�.E/��3��\'�㵭�,]��Im-���h#�0p�}�l�Zj���{h�]��~��[J��d�R�\r\\�&�\"�������R�hH��p��.jcR�-��w���q��0v$�Y��u=.]o��Ⓩb��-,�̍��j�4��x��\Z���}�پ�ݧ #��Jި#�Ր����n��R��ى�x�>�J�P�%X^ϋc:q��|�S��r�����O2@��Ó�3��?ɾ��gb]�ݧ7� <1�6��5���E�C#��#� ���������ؾ��ImW2cis���)<%�������)��0��Z�r%���p!\0S<}�R�ʤ^z�p,M�. ֺF�� �`�LZ��xR.����dCT�߭�?�O~}cf�c�~ �52�Q�_9e�.��%��I��!�f+�ס�w�W\nf�c��7�1uL<��-� �y���-�\r��\'\\z��$b�ƨ\rgX1�|j����r�OIOj$a����8�Ǝ�W_�?ބ5�·B�@)���u�toX�EG�������ڵ����?��O�cդ���v��W���JV��b?��&�i�Z�R�T�d��h&�j`FK��\r)�dĢL�.dP���M����Лi�~����KV;�\n���T�3Bގ�2ٕ��{����a�ypbJ�4P�>1� �4��lb\rxHX%�zij&����N����ơg�\r���+��qӦ��}?��rz�5ƌhdƔIL�2�DJ�,���W}�~4\n�.3�utQ�՘��&�䘐v�B��)�2�^^\"۱��v9~�I�iۦ�GK���S�v��JPc�����N���M�%j�q�f���c�\r��\'H�Y$܀l: � �9���H��Z3���0�v�mw~~-��FV?���^\Z�J�:��(y5� J��7�$hQϮ�G���6�5\r#ӐbN�C� ����r����)��||�ON���;�������R�b�x�&z�1�N�\\?�)��1W�P2b����Ԟ�!�ŕԋ\r3��$h�ňY\'��s F}~\"I^�rK�+-ᒙ�e��0h��򫇟��7�a�6�TZ]�sd�F��,O|-JfWj�\"��خH�z$\\��d���I��A;�2�%��N&��2p(�`�?�T��Т�-5�0 ]B1���=�b ��e붌E��F(��r� )K�.�\'���{y���A�1l����{���]�� �M�S�:��W�N�ܐ$c{J6�����M�j�Y� �t�]�����#�u�A��f�C����K>�(�����m��s��)��j�2�qp5!&��h�J���F��\n��l�=��f��<����1�)&(Z2&Sj��\Z��b��W�ڱP\"�����/!T+D�sHV��$ B�����V��XF#��Du���.�sL� ����I4��\r��(��qy)�Dtmɏ|栞�z��A�O�Y�����A90U�����Tuq( �i���ތ$V� zߴ8��⽘����H_��\n� rd~;\Z�S��r\'�Hu��M%��ɧ�}G@����q\0B^�o�V`H�^�U�0��U�����`|��7%��Ƈ��#�qļ�\\Gh��>�TH����MRvb´%8�-ì�C�i�����A���(+�/U��sLɨ\n5٢䰂n(ogۋ+���5L\Z�3���w����xh��,Q��B�X��G5-;�ʼ \"j+(�5��� �1�؇P�d��l=J�c*f��jn��w\\������$dE�x$^$ƾ�r�\"w#�Yq\\q� �n��$�$���1�xA�?Cy�0�.#�C���B�A>���}���A�`\Z&Ykɖ��ln�ܺ���7n{�Z:EaOz��H�WJN�)]aS�R$W6��S: n ��&=^u��S��nX��13mഀ٠J%B.A Bn����skОhu �\'�xo�~��g�$Qꤜ����8�x�}/���$�,7K���?q���ڒ:Ky!�\ZQ*��@�S�d�2�`O�`�����Ɯd���\"4o(K0�b)��҃��h-�Uf�5�H,���j�곰 ̈́�)��FC�2\Z\"�!oa�4�AٔK�4FwC� j���\"x�����w��kK���U�H�A\n쮧ɮ����{p�.��HYJ�#�/��M9��^�T�P�=S �c��=���Db�~/I96��a\"��iԏ���8�n�#�!�$��� ��O���AX즴�U��}�V�:��>�H�!�졯�S���pf~2�0�z1IJF<\Z�*�����Tv��b�%��� � �aH�X�I�ȹEu���(e\Z���h��)b�eB%|�z�(�I�:eFCBCJ�B�W�,%i5�<�-r|L?}��<T)\\��U+�~I9�(Sߡ���y�?�j���\Z��K��;4��D�׀�0�Y\\���\r���\'bA/�׭nɣ:ό\r*�E�KҺ��uP�]�`_2a[�&�#�>��\Z�=SMb��Z�:�t\ZKt@|�r!K!�G�ی�+vJH)$�p,)~�jS���6����X�C�Q7`7N\'�����\ZL)(�W��ܲ���q�T[�Կզa=�ߤ���J�:m��u���rW�<�6m��}=�y��z�ǍfdKs�d\"w\"nxttl�-�H>�M# ⵪��+�\\����1�i=F�dH66c�d`=�=r��${�ǡ��K �N��j��C?4;��&�A�_�\Z�g�\'�n�U @:$��L����������1�W�hlGzD/�l�1C�)���#����Z/�����B���H�={8v�1I&�F��ɾ�^t����\"�\Zy+zR�m²G:���`Xq6�S�x·�-6s��?e�!:%+I�J3`����~K�a씉8�� �I׋��\Zh�qK���l,%h���,9�x<�׾����%���8fQu{��_v��F����1|�y�����+�x�\r4��� ��V�=�#$F��f��!m���а�I�X�Uf�v?���E����7~���fʢu�(�1�x�mә{��T��3����/;��U$��?�a�Z�@�6_Z�dRP�Rj��VRm�Ո�Fq�71��]d��X�@�`7�TeC�RV���M�Xf׍���L�e��+����&�l�I[�l�\r�i�uUT��3���H6i� �Ғ���\03���&I,��B�g}�F�q!/��� ��H�3�nk9��mA?U�1|$G�t��y��ȤI��H���M�%���!��-�9�ȃx�{_d��O(J}�A�����)���h�{)m�\Zٴ�Qz� ��mlW�t�i���(�b�!^�f���I��,[\Z&�\'{{<c�~:�%����M{�X#������Y�هN8��iSciG��W�~p��?����ˋ�ߙғ�X�;�+cR�(vRX��{�\"�� �Ǻ��Ċ#m%0�r;��\r5�W�K�li�{0R_� �;��h�\"�� %Ï:1\"����.n\rP�&%�\Z\'�(8-��x ֶW�Fn�>D�qwꝄ�B��:��X�LF�O.aN��U�y<Z�ϖ�Z�Mϰm�ٖ�d�=��&�4�� q;Ɵ�y\">�Qm�븤�<���?W/������⫏�}��ɧ[�m��^e���v�qu���������а�����;���\\�,=������F��qMz�sU�|�7�`F~�Ԟ��E{0g�n�X�ŧ\Z�C@����yU��2Bյ���J�`��{����Cmϓ��]2��iJ�9PVI�?-�� i�S\Z�3\Z�`��]���mc�^���hٔ�F�����h@c� �5��: �����Dɭek����^��R��9��ǞȴQRL��5����C�\\q-����ԑ�-��C\'*1�Z�����n�a���2��5H.��.u��>&��������<�����3˘��F�]�w^Nwb4�Ym,�/gkl&릝ıG�Vc��_�%���Drw��V2���5\r��#3�����)�X>7dNa�c��yd����`R�]<ܸ�bj$\'�$b�%͋��EHe!� ����ߏ6�j��%-ms�/��b��OP��{�A\n�=@׶\'HǷ��E�T<>\rL?C`���U4�!�lҷ���Pj���;/R�xן���(�<��#���(�]&]��ᔌ>z�|6Ok�>x-G����P�Z�;����5ĂM�&p����`�<p�-L�|-}�6np���cfq����\r��72�x=�:�an��՝M�mW>{�xR��e�d=��~�oL.������Լ�=gO u��t8-�ߏ�\n�Roz\\_�a>{�b܁^��Ǚdkf�9���h�6rm�y��@Z�2ٟ�D��2~!�}�\0����?.��_�Îc[0���_Fƒ.MЕ�5{��_����?�sC�IK5!���iQ�~J�i�< ]��۞���������\nf Eq7ʘ��� D�m��$9��6���RK�\0S\Z��4�XZ9�a��\'��FhS��]�E_�\\F�q��}Y�}�o�2s�/�Z|:�Y�t|^O���K]̃?����l6fso�a|�Ë��b�M��P�[�뿵��\0�j8��sg�l�X\n�)<�x��������=�剅r�\"F��t�\Z�<8��y/2��>~�<�E�~��GM��7rO� ��ObI�-��7r}���� F�E��u\"�������7����g��)�״���2��F���&�GC9�Q������]��J\n���;���>�!-z&�xf ���௾����c��p�\"1�&f:�\n10���7�|�!��Z�t՞\'M���϶\Z��Qs�`�T ��)D��[&�wp��P7a��\'b�L�3����톏Qn���BB/�[4ؐمN>��<��kY�~;�`:w���[�X�6��?����=L��[G��]�l8�9 �x�:�0�c�lw\r���R���Is.O��Ͼ{���ߟAO���RK�>qs����5�X5�c�Z{����Ɩ����r���{�k3gr�QK�d����48%��D����I����#�#��܋S���1��4AMi�F��G@�ߏ��og�o����@G�Ϫ� Y�t+���b9E�p#�m/��-���薞�\0!\\Q��f�f#���N��}oh#1�m�˜�mK H9��r��h2;I�ǎØu4��b�G�Ѫ:>䱵�������Rܑ>�iS�flM�~3EM\"d��Z��[��t/YZ�-����<�)��e�t�sF�B��Q�����e ��YGRz�}�O��;������%��Og��Y�o=�|f ��/KN=���\'К6���Y�?����,�gOF��i�[�Q� �9f-N��OO��qy0>�-�4����K�ma��wc��I���>��w��Ft%E�/���<H�jNz�!>S�����o{�J}-�j�F`bs^av��W(����{�|�Zp{�\r\Z�J�Ht�@������QTC1f� \'3�D�<ңw%�4�Mx�4�#���R��������=#��ϝ�Xt̑�2.&\ZMԘ�������G�8}<d��n\'|�)c38���ye[���&V�<��V�d8�\rӏ���&�y� ���z�ޯ�L��e�x��f�_�E�PH��w���q���|�^���4%���`e�z������h3���sY�l)#�\"�לJ��s}�9М�8�dJS�I���o,c�����F`G��#�}�^�6�Yd5(\"��2ܢF�}5ӂo�֯�d�h�K+\\^@ iS�%J#�M\n�4-P\ZXK����e����ea��N�#1�X�:�T���7�J�S��I)R{]���\"s?��ek��kΧ6�����4�;#k=5u�����m?���.g��\'򩱬�v�e��� ����fw��0���ڇ~@���K5�q�8�چ�m�l{�1��6�\r�;�#/d�����!�a�{cK���%V���_12�Gwl\"���\"�>�c��Ά�|��`�n�8����v��k?B&p���CO?�y#����]l�� j���a����A��2�t,��+)Z3���N�1�����w�4rC��F�C���]�?���_�z�A��H�H�j �U+�� H =�C�n���kx���1�_K�/P4c �5t;-t���{1���e��O����Ŵd/񞵤���z������\Zc4�u+o����gh{ ��i*-�5lO��s\Z���9s� �+���;��v���Rλ`㋫����ИIg|\'�ȥ9��S�*��w?�0����9�D溽���2�d�?&g�c�1�1��X�mHۢ�!���!?�������c�_�� 0��2���ns�����_���@��ܥ�]2�t�5���0 >����u������s�唗j��if��aTC�3O�#������ގMJ�?p2e�ݬeK1��4�e��g�&]k^����X;�\r}&�\\���D�Gs �7��r��8壇+������\\��y��e\'��v����N?�ew ǜp$;�fH�����G���=8���`���D@�>����J1���@dP��Dào[��\\�6�b�j.�)�8�،n�c�]&��������k��у�$��Ƴۤf�S\"C\Z*�敯�ɛ���ړWe��SäI��y�0�%CR�e�Ԛ<��Q�)��ă�����.�<�\ZŒń1��3w4������YKO!�ы�2)cоe3w�X V��dLS�/bK׆�WRy�}�:���d���7����?]t�v\'�\'�Y�-.\'�zK�3�n��zH%��v,+A>�8�j����G���<���0�@� �P���&���J5\'��i[�.�0}Oe�Y���D$K=3S������<f1��H0`Z$��1��m��lz�\Z��乄����#�/@��&���XyG� ��bVaG�EhP\'O���,(5_&eT<r6A(�<�)�(��C��B�Q�[���V�7ڎ�����ke�R�e74I�Ԫ�<�����k �\\h�D�rU�@Gjg�;U�t�\0\0�IDAT�Je�)��A�+��� �]�./���� i�����w���?p!���88� ڼ|��D��6ՄT�>-[Ix*�C��������\\�ȿ�d��CC����I�#��#%�|A��P�>����C1�5�C[D�I�c��+���E�:!:��\0�QC�m��Q�\nA��K�-�I5�~U�aB�:�����_�\ZM��:��O~RD���o�:� S�e��.$��H��D�Uy�>�� T���%� 7� �`����NI�;ڌS��\n����aG�ޟ��ĔƓ\\)ʄ���ˑ%0\\���G��$U�}���� G����yq��Y**ϖ�G��O�\0z��+4A����/�����yP���^F�i���1U�1e ٳ�F-k1U���G�y\'ޅE|#��_j��yf����kdmO�!lHh*GD �ȃR4���� ����HO��%q��\nF35(�t\'�/e��9U��ϗ�L�^(\Z$�&�S�� &��\Z����&h}b�Sx��:����%L�ʄ6z�P��k��B��T�#�=I\\���P�A�|�d��J\r�K�<8��_�|���#\rk?r�R�UuqPۆ1U>Q.����Z�[z�����n�hS0zD�CR��T���W)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)���4�zY\Z�@�#� ��c�W��T)�?&O=�ؔ\'\0\0\0\0IEND�B`�','sdc','ueb_key','ueb_secret','ECOMP-PORTAL-OUTBOX',1,'Y','org.onap.sdc'),(5,'Policy','images/cache/portal1470452815_67021.png',NULL,NULL,'https://policy.api.simpledemo.onap.org:30219/onap/policy',NULL,'https://pap:8443/onap/api/v3','','',NULL,'2VxipM8Z3SETg32m3Gp0FvKS6zZ2uCbCw46WDyK6T5E=','N','Y','�PNG\r\n\Z\n\0\0\0\rIHDR\0\0h\0\0,\0\0\0�,)�\0\0 \0IDATx^�xE��w�K�:�.��l��RDD�.b��ٕ&VDEEl`���A:$!������s���Hr��]�$3�%���������wޙQ@$��P@( �HY+Q)��P@( �\0��B��P�C��І�\n�Т�BU@\0�CFTK( \n@�> \n<ThmQ-��P@( \0-��P@( �P�=�aD��B��\0��B��P�C��І�\n�Т�BU@\0�CFTK( \n@�> \n<ThmQ-��P@( \0-��P@( �P�=�aD��B��\0��B��P�C��І�\n�Т�BU@\0�CFTK( \n@�> \n<ThmQ-��P@( \0-��P@( �P�=�aD��B��\0��B��P�C��І�\n�Т�BU@\0�CFTK( \n@�> \n<ThmQ-��P@( \0-��P@( �P�=�aD��B��\0��B��P�C��І�\n�Т�BU@\0�CFTK( \n@�> \n<ThmQ-��P@( \0-��P@( �P�=�aD��B��\0��B��P�C��І�\n�Т�BU@\0�CFTK( \n@�> \n<T��b�xh�D��B�@�V�h��:��� ��X��j���l63 :=={��V�����\n�uGs\\\\�u��nZ\njh�ٌ5k����F۶m�2�N�B��5V�`0�… ��*��j@�t:���ؼy3����]��� �B���@nn.��[�\" \0J��i��d��~�Ν;��N�w*\nx��bÆ\r\r\r-eE3@���Ǟ={���{@�E�B�@�P�\0=h� �]�P�ե-���|���]\n���Б�����^����B�ګ\0�A��Я��j�UBܙP@( �0���� �C@�޽��z�:B�@�V�\0=d��Z����B�\Z�\0�8�*Я��J��IQi��P@(P @6L\0�&6���P@(P��\r�]�vAXе�3��\n<K����[��_~ٳj/j#\nj�4H8b�ǀ��޳gϮ�R�[\n���\0Y�#G��h��� 8���Ywz�j���M������ѳi����0o]��N-c���v\rF3��KErz~]�E�=�F1���\"=��OCFN���� ��u��!�ϻ�Rɂ�\r�^zIV����Iʖ���g\n�������[�x������gkq9-�a޺�!\"��M�ԙ+J��\Z��x�3��N1���؝�ɱs�X��Nd�\n@;˅�`{j\\/4�w�Q�F9��w������\n��(1��V� ���:}ވ�{uxpH7�ة���j����/h�H��]}��v���i�?q\'�B*����B��`�ЭX�?7j��aƲWG8�\"{�\'��e�Ы��7V9�/28���cz<n���ވ6M�z��Ѯt\\��/�����%�>����F�)o����yc��C��\"���S�-{t�����\ns\0��B̘�Z�V���K�q��Q�wO�˶a�]��־n�:� 2��Y��h]�_|QV�ƾ�#��w�gAk����_h\0p@�{��,@?:w����߽2���J�˷ @;T�u8�_�Dt�C z̘1�-��۷�^�U�{^Y)\0\r �uA���jW�5`�ۿU\Z4�-YjJ|}�Q����cU(?�3&��/W�=����X��7����\n�k���ѧ_\'t�����K3p@�}�D��Wx.\rp=6��J�F��th��\r *u��+و� CQ�&�A��:��1�b��ժ�#������+u����-�o_��\'�1����r]��\'ހ֍#+,��{;v�<@?���j9�՟�%��J���Сv����Ҡ!��y���ݷ�U��蘻M����r ۷ʀ�3�vY�~|�_�֍����X�j�{��Rr���Y�X�V��W�31y�@�+�\'����8�s{O�`�\0�C�\\�����}к�c@�7�1��m�&ۂ��6\'wq�?�3n�aA� ���Qi��G�> w\r���@B뒗�o?n���]���s�dfXC��C�)��._Lc�&��[��O\'���s�>z�^����e�qJ?,Y�����oNF���C����?�q��A�\'��]i�* �-�0-g�6�U��4���w�;b�#8��4�|i�i�߉K�t�Х�ѱ�\r�ѾK�S<��,@�H��v\n �)�+w�\r�z�uc�.�{�G��Z�^[%,h;@˵�|�j�&�N�>��[{�mȢ���S6w�?�������;�����\Z��|b�7��{�.E���0\Z�]�уg��[�1��e�����5a=�JR��i+s��}�x.�>jv|�[l���^�nl�#�ɲ��X�~@����t{x{���� d�u��=0���6�ƱC�0�e�ke�-;3<^�v�� �����1��нW��HuU^�%/vXY������ г�,h��?~�<@?��s��9��_�%��2��l�C�U>\Z�����t~�a:ti�.׷�;//a�qTt�\r�o<�%�Fa��[�Ry���Łݧ� \"�R:&M���c F˾��A������Ƣ^\\k�>m���^��Y���ء�ؼ�\0�֛������o��\'?������r�H��\Zٵ�(zr�M7{����H{G>������ ��F���b���*� �ώ�% �&Lp h��[�-\0mmL�� �B�Ӝ\04\r�-^�+b�\"@n�G��#�P�:�c�� ?v% ��/-AT�0[=}�R)@��fc�;+p��۠��u��wƬ�U����=|+� ���j4\r�M/���^����t�J�G��<��k�*u�\Z��\0-ׂ���_�-���[� ��+.&����}��j/h���g���U��-GK}��B��Fq�h���>� �2@O�E���µ�jA��Z���������߱�,hr����� *�H�����^xy)��o~}��N�[�_=oج(�# ���‚v$� ��\0}OO����8q�< z֬Y��y�� @K\0}�}��錘�$��\"���u��?o\"6>����]��z��� ��G��>��vh�yo,�3�N`�~x»l\0�>�g?��O�7���vyE6@����PÎ͘������������萊g�f�j�tM~��-`��#�}���f-��og^���L�yY��K?_�����C�޲z�_{��K_cƒw�tS*��-Ċoֱ�j��]��y+k�P�U��e���:�<� �_>7��i�N]�4y����� ֿ�#e�� <2J����q@�$@7��\r�Kf\' �[�l�\\@O~�w��i�ӺM��l��Y����S˶��EB�ų)���VYF��q����:9�6��*.F�낷��E|��\ZQ0�����\n�\rh���uЈ|�<���xT?����#�2 6?}����|u\"{ P�?-]�,AJ �~\ZkW�ºջ]�w����g>ZW% ��L��.ZS���>�1�x���\\C�����zϔ��ѧ�yh�r�-\n��h҈\'?_�xv�������,]�\'4�\"\"Cp��,�ڢG�U�Ћg���\'@����4A5�8\"�W�����<�\Z �|�s��� �}�\r��xxgʴz\\\"Z�\0��I�[��g�}VV��{��� C���b��|���hSm@�6�/{\0�\"����pA&��w��;,�Hg�#s����j�p[ׇ1��!̪�j��������2��ZDzΫLtY�&n];S\'�/���a1�W�u9�y�e�fq�:���=���l���~f���\0}���,@�g)�B�F��g�\"@��L�[������7�OT� ��vG�K\0�^��5���5��p:�i �oFd�����E���5��W�q�ԟZ5`1�Τ�\0�\\ �h�i?�`�1��\"?=%ih(}�=t��w4���k�G�v�G�,��;�a�7k���c����ߥ����7�}��)�� 1�����o<���-��^���Aav�\'Ov �͛7˶����ڭ4����us���7�m��!����V�!�����q��=L���I��aAk\r�1�j�b�<Оx.�[������3\0�m�!��(7��ܜ�= ��{��{j��8��t�����R�\r�RC��_�\Z�6Oi���x� l\"����и�ub��n�<w �����(�ӯ#ڴo�\0M��d���q�=�3_���k>�ڜXY�����RR.g؞��\".���\\t��ر����1�kb<9u.h���C{O�&|��RW�8��C�-�3gΔ�y�g�������)��\'Ko�u�?�ʂ���B�+�q\'��*��zR��d���U�F�d�<>;���$ г>���\'���3%$�Ջ\0���������(���4~���c�j��1_��\r��)|���o;�ɗM�&@S�K��q���o,�ͷwa�׏=?�$��T~���-�1�\'\"\"��Q&� �^��G�Ȏ�X���}���{�Ű�&g��)s����\\\n�Fwwh���L��؂޴i�z��\r�dq�X4#�>��a ���9������W\r�F�y_>�\Z��š)��)sp�L�[���g;� ��Z�-��`�\'��Uu��~cꍲ\0��g�������;6��U���T�W�Y���:���,TrK|:�g�^�~� ���o��|����ch逞t=����ͬjڽ�E��l\\�\0-u���{da�1+w >9�\0�x����_��y��\rNx�/�Z\na^��|\r͵wq��涿�� dݨ�L%�n�Ķ���=\nд��^g`�Nu�@߀;�d�i��g��\r�dH�]�\r�V���#��R6��O�����Ӫ\r��O>X�w>~�h��e=�| Iz���Ϭ_�mޛ�Y� �ϧ [F� ��؄�|�w��A�~9�[����9m>��1���0W���d/ W�8��\r-\ZT h\n��\r觟��9J���[\0M�r�|��M���P�O�O��b0��h�(��V��7����n�J�9�\'�A�.�.�0����@�k\'�^��t����;e�IΒ�NE���te����}d���7;hz`�$e�n�����Q��E�\Z?��P��8\n������db�z^U4������~�\0���X�f\'���>k���B�&1���B�4<���4����)�����߽lp�~(֟a�.Zþ��.��IB g��I*�, ������a�j\n�$��������O�$@W����N��؂޸q#����q �s���ѻ?�[�6�����G�\Z����ƩcK�Lt��?na���~�v�G�~�I�=�8�\'��V6��XX�`�¾��WVZE�ָ��F~3��Z%��0�@��3tX�� ЯO�- �/,����3���S�k�8@�i�3eoE�&��V�0�� E�bLÕ����[*M���׃.���G���]��o��I�C���<�BO>`���ۂ�j�4-�4b�O{z8c�[��n��եl*J�un�ډҢ� -ź�u�&1� ���pV&O<F�~��dvm;�b�ɢv6�8��Gt��x@��z�)Yu�6g�[\0-��������z����첏��L��/?l��=��YVnD��c���d,���H�#��x��\Z���G��t��A���0 �|x<���п ��ڶo�F��KЯ��K�_�b�Ӏ./č\\g�w�dU��ۃox�W��&E���4h۾ £Bl�b����l�ǧ|�eGy��o�yH��a�*ݙ[�=n]U��t�L:>u�]�.�~lD���؂~�����a8����F�M��O},o�K\nh��~�s�_�ư{��[!x�4�!7=��#n\0Mڡ�� �4��F:~�<��ɂ�t�ϸc`\"��#���;�b��>6���*�G)�r �O�d��W\r}��g� �}��KWՅ��ح�Oڴ�._ZV�zr/�����\\\r^\\�@Ӡ���-c��4�tx�i�)�Ƃ��3�,g:޽gf�ьCzq�SdRH}����O�8���M�A�[�� �,Z���T|mn�x����J�t\Z>���-��ֹ.�zxY�,@oذr-��s� Z����Z��6�}�4����\rvٯ����7��g�!��um�G&���7�Ƣ/0 ЃO�A��x+)��F�����x�1\r\0-�O�JHב&�JPH����p� ��h�W�e䭳dO��~urOY�K��9mA��j�3�[}�Wñ�g���Ø�|��e�(4il�� ����~z�x6՞&cL�:�aR;�Y��m Rj\'*K:��*@/|��LN��?�������;˲�z�!�4��\'��u#�[/\0-�=���(B�~�y�]�����c����]���0y諶PB�_\nh��A������&� �fi���NE@`ɪl�.l���\"���x�)�%�W�M�藿��4�i]�%̲|¤�#@�o����y���_���Fֽͮ�*@���k��D�����‚v$� ��\0=�d�8�M������/�x� Y՜�`�\0���ni�����%�ވ����4Yu4pe\']�\"@Ӓ���\Z\r��\n�\Z �7��m��Ȃ�o&����r���,E�={���x ά|-f��i@���ˆNydTj����G��u�&<��$.Gz�3,J���x헌�kz;�3e�.��������g3��G�*� �3�vD�x��奂�L�>]��qY�|�ÍХ\0��[������J�I\0�OhZ��#mmD~ށ}��eA����i�����#�A���cJi�����¢���fAg�f�����/!<\"����� J��_DnN!�N.?N���=d���w:\rh6պx�qZ��f��>����cﻃ����\'{@Ӏg���ؠ߉#����#�O; \Zu#^~�3��(����Ve�]�i]��Y�W>x�e���ot����>*\0�P)�e��~dHY�~��z���� ��n��\0zl?t=�-Lqг��R����4�:��hz�4=��x,x��;�� f�aQ��\\�j�-�Gk\ZP�\rf��u�w���)}>o��E�|ݏ<;���@1���za����h������ /�<Q8�_��]�_]��)@�%Ry}�\"������H/6�g��y���@m!ՍΡ���<q�΢���n<qM�ˇ�����ڶ-s�i���-��opx��s��B\0ڡN�����`tɎ;e]�,�GyD�{�1Y�|����@���B6����9_����$��P�r�9�����d��ov;hg���s]=g�5���D�^�昰� ��������3f8��u� �O|�E\0Z��7\'����V�y2�_���,@���������v��_�y\\\0ڡR���=m�uhW�M3 ��k׮Edd$�j5�w\Z\0��d�P����G}TV-��d�\0����t��5�8^��9_����D3- �4l�0OI܂~~\\Y���ҽ��4�& 9����Z7\0�(!@�uB\0ڑP.<����v�\0M�e��� r�ԧ�����߿˅�T{Q:�E\Z F��r��W����vE\Z3tz๱�e���� ݊{x~�F��=�y�W����>�V�L$�*��Z��Y�Ѐ�h&Â��9Y�&g�����㸔n]���\'_��j�6�/&�7��h�q\\�.�벱��U�N�o�s��T�10Ȥ�X7� ���S#:8��Bj~�r9:�yE�)���=�Z�~T@�}����?q����I( \n�Gr1� nY��kAWO��U�B�@�V���d��E\n�B��Q�\0M�<;�����o@WO����BR�\0M;Y�4� �m�bLf3�-���$\n<D4�����[�����\"=�쾌�p�j���I( �^�z�=��#r*�p�z���c\"���٤z�jW#@?����2��㏠5I�z�2�%)�Th��>�k����F�L��\0\0 \0IDAT�=�X��HB�@�(��E�nլk��I>���6/�z*�W�ҥ ~��7DDD\\=����W�\\��˗��� ���Uv�\n�9�z�ޗ����� ��\n=[��m� x����H5�}��Y4mڴ��V;/�����uxx�;,{��geeA�R!88�ӫzU���=����fE5��o`�<&�y�����\"�]��)�~~~�W�\Z4h���P־���f�٢�鐓�j|���d��u<*?�9)=�︀�r����8�\Zd&��ˈ[;�#�m|�B�V ����5k�q�n������d0�g�$&&��h�+�?�@JJ\n�v��4\n\n�:ʩТE����KNv��C���� ��˯�M#�һ��{T��U���0�9 \0J��4� ��� P�CK�����~�r�_{N]��/��P��̂��0�\n��f ��w�jSm�-Z�����m�қ���F�V֥A�KtީS���s��!##ݺus��Ȫ2d[��6���$�� }F~��,��m۶�2= k֬����=J���{�YZ�F�’%K0a�u�Ԋ�Ҡwo� +9*˙�\Z=����T��p��n�]�\"C���S�%K�����\r___f=��<)Ȃ�_lf�����|r&�ڎ�G.B��,g�3O ҅�̒�&���nju5�;�����^�W{��ШQ#���<rw��w��t��&��Ɋ��i�ƍ f_|���_|:T<E������rqFki�� �_~��6m����̥�>7�H��7`� �c�P<2�F4�����ƭf6wo��\nK��\\��f.�Ŕ,,�av>�8����Ku�� �� ?�\"���0��ۿ�*�������mk�W^y�7�ĉ��n��f۱I�&��.=o˖-8s���<����D�cQ�NLL N�>�����v�_� D�ܿ�}IZ��6l���˖-Ø1c���c��� ��i[5�.\\�@�-��W^���9�7o^J7����ʬY��(y˖-���/���;�q���~w�q�z�-V-^f�>}p���O� `q���<Ҙ���ߏ9s怎S��T>����l\0���ǵ(���ۗ,,�gHҕ��~� ~���wҚڞ�ښ�Eu�{���^�2;��,(�a����{��\nݩi׷N�����Km���_��ӳ���aﱋP�c��*YWվ��B�����3 Pc�]1��.�V��v/4\0@\nO�g�f�}�����_mǾ��+�k׎=���V�Z��ΥDp���oٿ �d]�ڲ7�t� *��s���B��}��ha�����\\���#���˗/g�����{��W�9�\'Of��RC�ד�e]��n��W&�F��z��n�ϟg��<t-Ҏ E�ȽD� ���L���+W�cS�Ne�H��ϝwމw�y����-�V�ezSy4�C�*}�Ҥ/�;���L�,J���{���o��}�H�Ν��L�P=)���\'�Qےk����;��K/�6}JWԾ�z\0� ��t�wU�Ɣ[+\0�7�ػ+����R��G\"$��U����BA�%�M%�*���<�\'�����,iz�)J�\'��8h+�wE��>�eA��[�+�}Y��E��mE��:^�y�XYדs��2�����T��R��c��|H|�[�1�+mC�y���w�۾��אkC/f�������]�����5�� o.� �O\\�ݽNoD^��Y���[����ݤÂ�1m�\r�ܪA)G}�e-� {Ksy\Z� <H��:$ ��+��+�iY�#�#��$?�4}��g���j@��Azqq �@s�����@�b� h���裏J�8.\\��^���^7�Z��w%��+[�]�-o?ts����Be��{GgL�xW���zm\0Madd���D�A��۷3ߣ}�Ȃ�”|�!Z��� d!�t�}�1�+��ʤ���5�?&�L����:\Z #`��J Zz���k�W ZZ��Ծ4�@.{�=���q��W��w��<I�=�4�E��<<��I�\Z�8���\'-�չsg�\0�T��Nנp3\n;�&�����@���~��gyG�&���x�h�=��e����)�XEe�+����bSi�|�dU�ϻ� //�R4?� ��۞\0ڴi�����|�*@>|+V��MġIg�A�#��~������c�Lj�3���$�%\0]������t���G�|�+=��K\nՓ~�����Z�h����������ԩ�B���M�n.Lal�XY�NKKc���,>�2�<>Y��c�I����Ǘ�R=I\Z�#��VB�D���.�K�,MOK�.e�� r��}[�n<�c���رc�X����mh��K�^\nh�1҉�MmC�^�x1|剢q�-(���8o\'~L\na�k\n@W��>C\0�\Z��ƴ/�\\�\r��Yg�~f�Y�{�Z�����*�ޢ�{-��}\n ���\n@�b@W�Q��\"� ��>:���_��ѣ�,�����9r$ i++%\'\'3��t@�*��N��k)\0]�]�� �\n�O��k+\0-\0]�^#�\n8P�V����EZ��>�\Z��e;��\\�L�6��؜����xsJ4�,4ȯέ�.\0-\0-`#p�\Z��m<����Ajf^��U>�Z_X2��N��Q���ָXo������\\�\0�\0�\'�OQ�\Z��F�ǯc�o;��WĖ^�� ���[X�.�$F�i6@�|i �NÖ�-��x�ҫ���4����U�t�:�l=�OVlF�ނ��X�b�b�@�-@aV\n`�`l��}GW��y����~�Х:� /��Vq�E��\" ���No���O�ٽ:3[�\'0�jH[,0�P����<�.����{���\0�\0t�~A3i ���8��}��!33�نU}X��y��5���Yyr-5�y�f[�O>���1p�@9��<e(@k�l�s\n�/Y�,i��w@h �iuI���lpy[�:�֐�\'\0-\0}��2�t���vj\Z�h#�\'�\Z!݃�qZR��zQ��ݓ�K�N���z� G5��/�A�l�#��9X \Z���3��՝Em��\n�sc]��+h��,�:��Ӻ4���d�W�+�M��Ȣ���<�z�4���H���*J�,_\\��#���Һ��o^&��L��}i����Hv]Z���ŋ��lצŇ�ˁ�L�<7lؐMӦޤK|� ���;�ﴖ4M��I3�M3�u��1*��` H����ڎ�=����œ+g���{����}��پ��j@_�5! �d\"~���<�c\\�.պ�]Mx@ ���£t�� ��--O�~v\"_ρ��!]nT�1� /[z�T��,a>\r���lE�y\0��-��#��y���iZzEK�J�������4[�~��])ѿ�G�tkM�4/3O (U �u5��\"�k5�i ���=wu���@B�&�\Z��>���B� Щ������w��c���?�k�.ۺ͔�ʥ<T&#k�C��O��ALn�����^�b[Y��t���A�H u��p�.� �!xٍ߭���:JW�\0})5;�Cn��B@�O�G�v�%5E�* �*��ӣ2���K��-��z�1��Ⱥ�4�������kt��i��M�;�H�Ϗ���+4�I�e“�lg,hh�O�F������lLx=‚��\\Gr�J ����[nS\nh��� ��-�h9nq;���|鲥�ݐԍQ�`_e-h)Hׯ_�iӦ1߶���ҭ�-�v?���JW�,���b��j���Z>��S���q��:�cǎ-uӴ�?#xsWe��8:Fkۃ�ִ��ɝ����^�\Z��2㉠Lু>�7�����bE���G��ڴ�����Y4�I~v� @�c4�Hײ$ܶm:O�r��_�����_ G�z>��n�]݊{��f������� ��\"���;���&:�!̏���%���;�p 4\Z\r���S(塿�1������z��1�D� �t����\\BBBد����\0����>(���M �K�р�������-����ɗ=�^��Au�cU]j�û��������\'s�}�⯁M�4��s����%�5_��b�fZ���\0��.�b4��;wpM3f �-[vM�-.*��\n(� F@C���RP3@��fd�݃K�-�TTͽOQs��P@(P�������h��l�\n�\n�䟻�e3�\"a�\Zv{��B��P��*`(*�޹������8�&��Bɛ6Bq�8F@�ܦ5\nj���s�G���`��R+��F�/o���N!a�Țv��B��P��*`�a���l�kg�D�,���|h���C��5�FEŅB�@MS�,�]���˯�e*\0�)$ ^��O�W( \n�X \Z\rv͟+Ч��j썊� �B���\0�yr\0} C�kZ��\n�5W���\0���5��EͅB�\Z�\0$\\��L@RoQTY( \n�L���B�>q �5��E��B�\Z�\0�Dz\0} ��Y�_l>����HAjK��5�������]�[�,�b�����ߕ*�!Nt^����7�Ğ U.�HR6�=�s�U.C��q��zcK�j~�v{e��\0��G2,��Ǒ0p��\Z&��\n��[!+���Z  Lf`�C}b]ҳ*�TZ&.� //@�mY\r]q�VgABt0�L�S���9�yk��[\r(��-�,�\'Ҫ�:=p_�L��BVI��>�X��!a�L@��\Zq�^x��`Y��\\����b�a=V>x���r zw���[ŖC�m%��=�f6����^\'��8�f��k^�T�\n$�\Z1wq>��E���5d�j��Oe\0��Q$�=P�%���\0�,�ܓ��7: �|L�z�\0�{�Iv�6@O�%������Ǽ�\'�����\'�\0ݳ9��j.�@fA/�L����*4��e)�L6@���^�M\0�=�$�T� ,��S�9W���+\0]e]pb ��aJO���`���\0�� ����vA�V����q��l��jC��<�\'$V���{/`ކ�‚���Οht\"�����c�r}��B��G\0Z�R��T��.\0�h�4��R����}J\0Z���X��MQ_.��#��p�L@�V\0���+�D����<���)\0-[y�d�z��U���}1o�\0t�t���\0��TV�,��/e\0��!$�y��B�����{2�\0=9��N�٥�c�����i&٥�\0=���s�3.� �6�\',�*+���6@_�S�o\"�@�%_���e�8�\0�,�ܓ��I�#6ط�9�Q���������9�:2K�v�r��\\ƼM������\'�\0ݣ1��h,�@����>t r�`�\0�,�ݓ��=������i&٥Z�%c���3вUw}F��7����F&�o�CV�?�$\0-K)�d�zBw��|_�ta����M�wq���P�\rУ�~�&a^\rtڕl�?����V���D)@wo$�\"̂^�� @<���^��Ҁ��ߐ�[h�t�n-p�-�e݄�e�i����-6�/vn>���\0�io�9I����%��� \']��w9�Ϝ��?~�r���`�4y��r�KI���}�_?]�)��C~n!z�ig�C���u�[g�|6@�����\0���-�Mk����S�*۷!=7���Ѐ�n��c<��7�cƬ�ؿ�$֬چ�޸W���mH��ѻ-���.Õm���S*����~$�z���&~��Ҁq˳��?z�,�7������h¹���к!/�1q�s�u���,1����{�\"6ȧ\n%XO9�Q��+��9��8�_2����Wa�؛o5�v�7�-���\0z��[q%9���̔����ȭs�������Z�JƼ��\\hhL|$Z5`u+�/‰#p�����g�KB|�h��\\=�|�� 1c�(��G�{_�N�[V �Ĕk߲�Mu�g�?��FK�\0�\r�]`J����b��e2\0}�\0}��B?�V%@KŤOӯ>��z��}֐�<M�v7�\Zڛ���N����������iK)*& };�ڋ�B\r��ct=�t�~�۸�.���uSܧ��ʙ4������gR��˻�W�^ƻ/��{������?��)�1^υ���������U�Y=�R��~%����Gc�\0=���t!&�x�倖v\"�CJm�ѻ+X�S�?��x����������ڗ�+m��_?Uʂ�����0�0�L �ǻ��@��q�v�۬�P�a�Z�X��Vm~��-:�ϓ��T2��#��d����v�-��ӯ�(%2@ٍ֭�K�� �����\0DDŽٞ5~��Y��g��t�֣��+�2M�}�����G�c���K}F��S����g�甬e��R]��/�y]x_�4x6~;�=��羒MVf�R��j}�9J ��/��������N�*Nogjx�\0}����~����7�g���c��Fܼn���Y��?�ȬX:�\\&��ě��7L��L��\n�59��;�U�>q�V�I�������Kز�\0V��,����be��G0 ��I)?��=��}V�[��Ǿ\\�[�z6o�\0#��c����I����c���-m�m���y@�t��\0M�.iJ�O����Vo_:F`���v�Z��>C�Wt��]�-=&�3���X0�_��M}f�WO!(���J�\0=���>`�q�����~@�u�����ĭd{��ނf�Lz�<;�=�����϶�F���R/`*s���/�z�gF�sHנD�[Y���\r ����ǔ�\0���e��U4G)��n45Oda���h��mv�CJ0��6>���҇�7�70����Ր�@����b�QX��\rh����M�\0%��2��tDl�.��\"L\\y�Z]��� K���c��|�R��1�Ak �t�wqdg�A�ճ�fL|��G��wP{��>�j���=z�_~�\n�m��v �\"@?0�\rf��1�tY�&��=��}�٪�<x��Ǎ!��s<�t�/�-\r:v��A���E�\\@/��@��[�o���x��Ϯ9�i���V��n��;��l����y@�|�z�֣�y�֙ss\nЪm�\nM�x[�9�\'��ɡO����،Ԕ,V}%�@��c�ВALYO�$����r|��oиY,������Z��ī.��k�;��jB�W�t�~�\nM�b�Ӏ>u�\"6�ݏ�o�f-�O�g_�h�;�ЛpĄ[�\'���/���\n�x��a\r¢����S�!ׂ�{GW��z\'+���D������A�hLyt0 z#>��34E�R��d]���[�}�|*�5�Փ����=���G�wn��,�UG�)�+rq�eAK;���e����� ��/�e�]��o��sVV�M�R���GR1o��McG+����ư(��ɧϿ@����\0M��S�ǣE����xm��,��Ob�����[��8�L|�̞����읗���ł��)r��a��e\0z�$�,�_����+����p�-�XcP�F�b�/�khɚ�w\r�G���fP�(��C�������а@���v�EE�J���4X����G����|��ʷ�us�{O���b�`�#����sh�R�>�� �\Zx|(�z��u�yo,C�F�X=�af�:�\r����1�:�,�\"L���5�+�����L[j��zaZ�Ұ/�.�>�-hz�wn9�B���l�/�od��c&���8�ϟNƂw~�J��QX�|#��\Z5��^G�� r�GS1o�%�Xм]HS\Z��zF(IM/HJ��&�/����8����A��޻�\n4�������]�􅕕�������6@���v��uMp��=X]�K����+���@z�4�cݘ�ϻ���1S:��2v���O2}S_Y�&~��Ҁ�OY���E�\ZD1�Y��\0 �[��Mj \rD�.֝\n�:���\\�o_o\r�����G����oؓ��Dz�)Edž�ek`���\'@V%~� gSp�u߾��~BrwP]*:F�N��^\0�s���������\'%Pڶ����d$��y@�zܭ��vj�_?h5:�:v�ֆ�~�����װI ����Gn��K��T\Z��/��~A_l�hP�ʤ��\'EHې�K���*�� �{��*��$;$$@l#���ˏ�/��R���\Z���}y;Jې?��V�)�.}��3�����}�:t��Ӭ��� ~=������۬Q^�8K�Ϛ�sXe�O1�\r�\0\0 \0IDAT�Eqt�Ŕ�r�ŮU?�\0���H��fYuL�z�-��j��������El`�7�=�����N��աGM�t�U�oe��4�۝�r@W�Bu�D�;�`JG���(1 ��Ur\0� 7���Ў�w�q���qп��vc[�)���X㪤���1o�\0tU�s�9�\0�!FV���~�U�w�DB�e���p������L6@n�؀�oz*[�������mm�/��)o�Ѳ���D��M�5lK���Ɣ��d�Ġ�a���\0�.�\r�\nM��\0�,�ܓ��A-����\0��\0�{�Iv� Сhy�ؕ\r�L��\'\0-[t7d,���`�sq��C�w�@Boy۾\'.?&\0�Hy7�z@���_g���Vr���K�]��>��y�S�-Gp7��]����u�?��\0��H�e]��QJ��\0�#��x�軛!�� G��>\'\0�ƶ�S�\rз�ۅ�L@��¼i�rwS��FbJ����^ޠ�c�_�tϒ��!q�Ih75��bm����st��� \0-Gt7�a��������Q6��1�\0���a�6@���h����[��oC�\\@�xJ\0�as�/�\r���8 h&��v_K�+��[�-�^&��#@� Z��n�U\n�m\"d]��8��#�۶\"!���BW�����{2�\0}{#��������L�K��K��[C�L@����CвUw}F�[�cJ�pY`�^�N&�{���=q�YhY�\'�\rз5D��g����c⿗���L�K��fy+�� �3��w8S\0Z���ht�0Li%oW��w� @o݂��=d�:���SbDׯ�+�u<ӿ;�8yֈ���w��q]K5zu����u�9���O�+@B�7��$ozp��>��yG�0�?f<�T�\ndd���\"��2SZ�ʪ\0��\r2\0�e�l@���r�fY�ܣ��R��}��Wu �L�l��B��=���V�]�>�-o�YY�����9G� Kْ�%����e(&&��*�z�F�޼ ݺ�*tmr2t&YyE&�(����q�W)�|�|��S5�3��m�Et��Ԃ�~*�#�3��^,4b_�Z�xٺ�I�\\�Z�˶e�� d �[6��F$t�V劉�B��P�r\n0@o�*Л�]+W��-\n�UV�z�6�޸ ��T�B�D�@u)`�X@�y�JO�Q��R�@xl,��¡R�\0�Uw�Tם���u�w�(���u R�\\ ��\0��E\n\\s�;�PX̰��PX��T@�P�l�0�UJk���v��� ���J�y�cK�׼�E�P(�ۤ �<� \"\"\"�V���()L&��������|�2rssa4\Z�lB�k�\0AX��E��Zx��@�� ��L�ss�0�A4��z*��(�T���X�����}D$ �0�������/�[��k\'��rmR�@���z��~��\r\re_6@��f�N�c`�����d���Ԅ{��M0fgØ�Sv�� ��C��Eaa p �>>0��A��\r�� �t:(����C��|uZ�4Z��\Z(��R�Op�DD@t=x���+$��(�ExM�+���>>> AXX�T*K�l6C�׃@M�3Y\'\" ܥ\0�_ƂhS��II�>5��T32`�̀Eo���%���`��C؏)$��@h�FD��:�9A������(��MP��ë ��x���+/��<@�u�TB\rUd$�������o\\|cb��ưrK�]Z�r�dooo���\r��Ȃ��OF���[�&p�E)�(<g�@��}z:�Y�0�Z7��%�t��a���9*\Z�\"(��`x��2+�p`?���A���Uk���!�� ���r������B�� eV&��@QQ��\n������wx8|��C`��h�~�������D��[��C}��(PX��a5��Np���PX����!��Q�9 CnLEE0�b0��Vx8,q�0��38+}�����?�Y������o6���3�O�b>e�!�P�Sg���M_�Z��}�����`�h`�i��ʄ2%ʤ$��*�\n{H����\0����#جB�k��֭� �Vr���b��Z��߷��jR���5i��ڷ������ a1�`�|��bban����@@�u��`���>�臠L�琦��{�4.}��S�� b�#���CY�\n�\Z�����5M�.lr���0\Z �ϭ�| ���8w�EH���BP���a;\"�A�a��j]\\�V+ \0]���=7�AL�5�l�.��I�<��ÇPt�b� +����BѤ)L��]\n__6jM�7{ s��ً,Zd����������\ZV���� ���⤋��C�+��������)�29 ^�Cq�,99̺��{p�DG#�cG�w�ж�� FI��^^��>��vO?� �\n@ׅVv�9�)Fޤ��XX\0C~r�CΑC�?yF��J��7,���e��xX���\ZƀL?|`�[��J&X�q2�V:�Mu)�����#���� <��;�%*S\nD����b)���[���6 ���+��b�頠ALr�H,m���Z�DH�vi�\n>�QP��CE#�j�d�Nv�:v�\0tkp��˭O�6#��L%]F�� (<w��$涰%P@ ������\"#��h( R*��M�-岀̭d>p\"�\ZՉ���g.}����q�{�!��� 00�fe�w������&8K��d]�G�&�HK�\"#��Ƽ\\(\n\n���ąC4Y�4�ش)����\'\"�Aۛ��da `��u6�\0t�m��7��e��KK���]����h�����EZH�(��,bKh��\"<����C�����J�d�]j!s K����Eu�i����\n���;,�<x(\Z�ܗ����>.�Y��<���_\nl���V6p4`��`�˅%+ ���ͅ2\'\n���BߘX����/>�q�,:�/.^����du.�\0t�k�f��X`(,@��s(8{E/@��}Vt0K��ꋈ�9<� �28��x0(K�,�� �c>KJ��M�-������ ��������g �iS�ް�!�lӖl8���Û�O�)��kH_N�5�/3��*m]Ӌ+, >�dQG\"�I4lĬm_����l����е�i��1��=M�9zy\'�3w�!?��<�V�J�x�z�`�����AP�����j\no+}�n i���܏,���5��?��N�Lۿ�}CZ\ZЦ\rb&�kso�Cߙ����t�������R6s�h�0�L�E�P���+=\r��HfFR��-0��`fU�j���-Р���>ug�I�[���ymV�\Z�f�\"�� d�ߏ����L,��~�hT�36j ��iPO���B�$�o<&��max_ ��$����Қ?��t)[�g���Շ�7�Q�FeD��# }��p����4�Ȁ�ӂ�IV&�.]���E #���i�E�PdKPB�]��N�֡����u]���y�kA#����0�LЦ�#��d�ۋ��N�O�Rn���El̍\Z�԰!����>d��i��,�s��d��%]�ٯ�B���@TB�M@�v�X쳳������.b6\r8�LP@�t�˗��\0��$�OR)v@����a;�?.�Y�J�\n��U��k����� @{n�TX3���_��أ !��#��Q�CS�K�+�T��xjo $���9>���f���3���܏,\r}�����I\Z,z�`@���8�`L�֭;�\r��ƍY�3���-$�8��� 3W�p�G�\'��HOc�|HI�\"/�����M�����ܦ\r �ٖ�v��>ES�=AQ��+ �zW^�k~EZ�sr`�Ɂ.3�g�0 ���k�E�O�M���?,�@X8����PxGY�5�\'u[��2�cW�E���Қո�l)����C۳�����}v�5]U�t� ��K�!|�����O��k6A&�\n���df@YT}�\n}�h\Z��7�7G`��j�\0ߨh6���+��E�\n�9՛/�t�P��IY��R�՚�3�����BxA�2ӠM�U�R��A\'�ê�R!�����sh( ���7���K�f?4���.T�����l=f���-�O �/^]��[\0o�&�L^*�-f�VF�_�ΞFrx4���\n�� %�a�Q�vUe�n~���V#+^�� ����[c��+�����uC��4t� d!K:; ��l�>v��Ѻ\"D��k���N����,|��������p����(���p�<�5][;j�A~�S?�=oRP����m�39 �_�B��p�^]�ViX,.�ڦ�@�,t���;;!�y���_�)���90��(��\"� \rC����Q��Ϭd�ڛ\r��do+����*���,�1�uh�\\�O1ݻ>�2t�ց�V��?�E��NG�o>��I��Y�7�/:>�I���V��u�.��,G��M\02�˃�#��Qo]3��k�6-��� XW�~��hC�,�3ӡ�ϳ�:S�t*o���mxT�\r�ݸ)�6�|d���o��հ����d���4�ջ C�v�U��7�OšB3F�kR� ��S�6I��\0ړǠ���β����0٭clQ�a ���^ �Q��.!4��V�l���-�O&@���R1�S饄��&yc�<��f��JgF��-�^�% O ��|���￁��?`����@��샰�x����[�|����b���\\\"F������顷�Ч�YC�|E@Q!�rs�~��P��ҖI%��~�U���O��4o��-���b/dk�V���sTS�.2���x�gs6�Ԃ����Bl8w�\r*�jhe��?���|�GQt` αOY�^g]�Sb �}|�k���8�c`�`���/T>��I\"�gq(�Շ�\r��ִ����5-l{�^=Ăb \Z �ݾ?|���| �_��y�i 3��\r�2\n�Z#0(�}\r�* ��͹\r,���=�k����5�4C�|����&��}����o�%�%_���d( \nJ�nZ؉�.!7W\\<|���6����JX���~ �{��n�خ*���\"@Ӧ���&��#�]�4�3�l�ʂ��>aMslbq���G�ٿڃ�a�ʰ]�=��+�YT*�#��o\0M���GD1˗��V<cϛ�\\��uj5�:c�����\\��Uc��ڥ@4�;��~hZƖ��\\�^�n���ylE<C�.�4i)0n���7 ���VHW�}�V�ks7w�G�0`G�0�ֿ.^�~g�l�w7���`��I�u�؅u�>si�����:��K7��hö�0?Zj����@���f�+�����hl\rY��������46??��;�V�8�c��@\']�!�Tq�P�5(_r��g�}�OH��4�̘���c̏�?y�T�A�\\f�7�>�0��@[��8�o�\Z�l������o��§��oEP.�T�@���VG��\r��\n�ӧ��i9T\'���zG�D���7���u�l eT4���՟^#}���)����I�T-v����� Y�֍\n�uM�\'��D�\0�B��$�\'9 �4xQ<�A%��I�[� J�§M;����z1P���ُdy��+�kֺ\Z�R�?s\n�\r���g���\0���}x�s}�d�U�zs@�0�bD]���ÛMО<���Ø�������ku�I:#�lȢ!qN�w�\"���@�4L��@�H;R{�����?L�!0DFCm�\'��Uj+�}8��� ��,��K���`+�,h���RS��i9�vo���Uj(uZI�FM�{�E�V7�M�>x|�ׁ��Vty,��EHC����m��@�`��[[�!��ȘPeg�;�\nԩ)P��Z\r�\n ���JY�JZ�I3x�ߺ~C��#���Ͱp[��}P��}���h7�uBK\r\r��m�d�:�f��$@ϑ ��u�48C3��G��%0^��v�V����#�\ZVj���ƴ+0��˜zF��/_�)9 f\Z�+N��YƠ`����0DD2����+^�\",J|��Q,�M�~J��L�{�C��-X\"��#7; ����r�:(%�bY�^�k�`m��cW���\r�1���X��w�5�\0;wHɂOFB.�a��Vߵm;�bwE�xee��UN�:/�m�+�Q��AU|}�6�WL,�\"��F�^�m��4}�9���q��P���E+\Z ߶�1?x]N�r\0}���u��a�sѮm(\\���a�������w;B�%��?\0��l/]���Y/_�)3�� �s�m� f%{{Ci� �`��`d�� wc���VN>�u.(.�b���(҂>�K\\6\"���l]� /��A��o��t�D�j�Ţ�C([�Cxl<B���C��^�۬Yn�7d\"6�uI��}��A�e��� �Jr\'��\'3>�YPgg@I�JY��� u\\}�\Z5����\"����u�,�k����n(M&x5j���c�ߩksO�nu��M2\\�au��r>�+����ښ��m��n���E@V�����\nKA����hJ�mA�ຨzА�\"2\Z_?����&[tEi+���Y<҂��]��J��H4m�lFQA>���b��P�����ԋEn���3;$*\n����]�]<���Ы�W��!w�����׶]fh� �Dxt�<�����\"( ��ɂo���]�*7��u\ro(�����P4j���p��P�݉��G�4\Z�����)��ۢ������\"@ϗ�c&_ �k�&8S��у(X�5��[������ovTZ\rF@k\"HP,^*裢��k���x�Coo()�ͷ8��8҂�.�2��Wmaum�B�Ee����j4�<�˾���9V��\n��#;�F�5l���(���/�ε=��2:��+6���a��&��p$����m(v��Yt�Vk U��/���$�;%��ז�mh 4/L��0��C�� u�5�OA��O�-��IH�?� �!u �f� �ӧ���X�.;�ڦ�@�F������u�!ۺ�̢-|mn \Zܳ�����ձȐÛ�� �]S4ȦI:_\nձ��i�۠ 2�ގ��z��BPH(��t�Uq��&�5D���6ӵ�`8�⯭�6[��hd�;��&!��y�_:/���}1H?�|�%M�^(�G��,�E�Zh�:�NU�uB��$h����v;QSX�(TxA\nM|CQ�[X�*�y*o������{���̏L3�h֞k�ժ�*�����\0�����?}SH�D�\n\"�H@@����X�)*>�A��t�\"�(�\0EEQJ\"� K�a���P��n�����e�l������{�~_>؝�sw�w�7g�=�^�^��R�ˣ9���D�s-���N�O�*�cő��p�Y\"bj& �n��X�!�L������`�Gt��&!�h�ܼ|���Ϣ�5�]���\r8�u��,�s��#4�H���:��̿`9�����ۂ)*��G��%g���Q�\n FT4j΅�+*��[|��{�� Vc��_+jۼ�KJVbG���и�,ΙJ���l�[��8���p*8E������ab.^�s@O&Lg�9r��Р~- z���E�>��N�7�b��uïE\\o1�\\j�F�=�E\"4<!� ���CD�C�Ғ���1��w�_O����߱�\r8v�\\�?�[��#��B�9��3g��L�����bJ�� �;�؎��B�zA�h���BJO�Fdz!?�����#\'��X�6�\0��Y\\l4�wk��-�V:z�*��R-Q%��tDGᆫ�f� ]X!���;�jy\'s&�y6X���ˬr�\0���%�8X���EHT��=�E͙�V�5��/�_��#�X1&�����8� ��Nfc��%�W;��S�@��\04Mh���B�M��BY����~΁��_�).��f �O(��\r��xw�f\\�4 qՌ�@�as��\\�W`Cď��0�$� A�jn{h��`�C~L�EUGvT<\n#��$Xy�%��\r]SѵK+�k�\0��VE �E@?�w:��\n��;��J��_���B�:���9�Qx� �O �t!,�6D�����Ag����(�� ���9-�|�̍��(��l��+�d�IK�����)*���|���E\n �Yov��P��H��5����1ۄ�޸ъw�ی���~\0\0�IDAT>��A�j�����R�8;#r�O\"t�.qo �;(��\"/& gb�P@p����H�׌A\\���E#\"2\\�M���h�yā� O����~M��9,��������/@~^!\n�i����O;���V�@D�1�l��s��N,B�\\\nK�`�⑀~�G@<���&����>@E�W $�\rg�m�3M�M�X@@k�&\'p� \'EFH�I�ƅ#76����[BP�K\"��n �%2QQDFS�,%f�a� �SS�Eт.�;�\n������8�I|���\n͎\"��4�L\ni�B���h��^8����h�ՊCt�H�5���QGz���>p �Mh���f�x��~Ѥ�~�D�����Of�@^N.���,ވ\"\"hү0�G�����p�-�\\4B.Q��B܏�҂&@�*�\\o*�nAE ������vA�̴OV�Ù�ࡴl��жB����i��#&6\n�H�� �\Zx��\'��& z�d�8ʺY�o&=�s�<�����cI@�x�|>�M��x�D��h��rO�A�و/���s���E�j�v*\\g�T5׆;�SЩ�>��|���-HU�J��om���k� g���Խ0{�����\\*rAn���}�\r/O{��z݉T/+���U\0�Xd:�ߥ �@Nn\r����U*:vel��7!\r5}$�<��):\0M���u jԬ&No���Ѳ�B�v�<� j�p�v�Aw�Cr3�M<SG�f�s`S��<���i&t��\0-��Jt�\n�AA�ʮ�ӳ ZUx�/�u+-���D�(�\\�T�r�Z����kA����pG��W>�-�^�޲q����e�#��gHw\\u]#������+��?}ꌰ�c�E\"����ͮ_�S<i j�Ǣ�%u\\>P��������a�^�P�?\ZQ$���k���<���:=g�\nL~��8]��&��{;��\rS\\2���j\\~uC���h�%<��y�T��B}N}/�}���8���D��d�{���_K�׹0��v*�;iAO�a> :}��LbA��r�W�Q�w���TUK�����D$����b@�[�\n�A&4�%���t�� 0T>[�SG��;�k#>GFE� /��?Ñ������/FL|���X����v �1�}��fcZ%Z�?z���ޝ?c� �Ѹ�E�^#FXd�7�:�䒔���}����#9����0�>��U-6������bF@o����Q�f���5 ���t�7��;��K��Ɋ�`����x��5eZ�ez����?�=Q����^w�G����3-ET�C��X�;\\�In1��#>/��u�Ż�o_��ZWz�\0=�G@�a7fO\\�y��т. �To���0{�\n-[-��L~��JoM�kV;�*����,~�b���}\0�j�i?4��1ل���d�j���Z] ��)�HR�����\n�$E@1\0�����_��_�Ø��+�\'�;�W,�\\ԣ}GN�%�Qٵ�\'����J��\'@_P��M��}�8Z��Δ�~��~Q\'��>0W\\{ �ݐ�-�?�I�J��8����q͍��z� |�O��G�Y�to]������������),����+ГL�/��Н�\0�T\0��nA��j>觟�|�?GrЩK !z�+\Z�U\0��o�Ϋ���b��\"ү-{���\Z�\0�����S�A- ����44��\"�����; ����ko�,iA�绋c��8�U1y�b v���6���W�QO-����zu/J@L5g�̯?:�C���H�]�T?��v�x�ؼ�K��( .jX���\0M��4�v�K����Au|-҂�8�|>�/6[�![оv�O�%�oOID��(\Z$\\�����\0�Y��\0hR�L� �\0\"���֪]�6O����F��{�W�к8�{��m>�����s~\0�,���j���ځ@�h �b:�;�W�� ��zp���ւv׼�m��� &�\ZtE]X�۵��� @/S�.��7U����\\ ��U[���w�.%(\rȍ}��R�i#���B^^�y�ʃ7���!݅ϒʣw�E^�3=U\0�����C��gG\\|i=�z>��\\��OFj�V\" ��.^=�R/ ���PÇ(�C�٘���Y9\" r�8�%�h��g��D�VW����+�Wb�i��s8��UƷ����pGMy��$L����3m�[عm�k1Hx�M���\'������3�[���տ�>�h_όt�㧙ςޚnE \0�s�}=��)�L�-�O�z���Н��IЅ�+�fA\'E zX%���S(��7>7l��]Q��3~WO���w+�B���١�E��s�Oz��4��!���l�4�{Ge�ۆu_c��b����ˤV�s��*���7�[���oY�\'=Ό��l��U�Fq�+�,Z�^���cGO����!i��#9.)oh�t��H�&CSi��}��/%��F���[��.�e)�+]���K�գrI�z������%�;zh��lWpqX�\0��*��7?���G�+�詣���.Y��# �z��S墑��#�������cjs��M�y �7�~��uk�]�ºkب�k�XEcO�H@�5)�?2�QC ��R3\Z�3e�H��]7^D�L��GL���k�p�5�x��?��Wd�\0��?���&��S���x�O�\04]V9i�\"\\{�\"�\0MoO���8y�O�H��U�+��{�UO 莊4���UtGE zDtEA��)��S]J_�N�kS��+��è\"=���c �<��r�KC�\\�֫�I���Lӿ�q�R���nY�%�ǘ��6[a@�8�ޝ�������>�|k��5��YJN��\"rѪ��1h���r��}���4�Q�a-��J�x�1$JDjry}���ۇ��kB[O�Cr\"��J@�Y�Q������A�C���cH@?K���M��i�pqT����=�|>�m�V|l ���^�v�_О��-��b��A-<�; ,O d�����f;vl�R��cJ�J�Ĵ������\"�G2�+���k@��1��� �/3���Rz�I�����������7�N��q�}m\\ᗞ\0M���v��*D�C�A��3�9a�/.�2��ƖM{q�͗���+���%��\'\'�@��诽\0�� h=��:�O������\"�� �e�F���&�X$\\�#���� �ps�+��U�0��^+�R)޽, �{�aX������x���?b��i.��w�� >e�j����Z@��‚^���ܦhA�X��B�t����v��K]=��)�B�hD���=xt\Z��őu0����A�t�/d?��v4������R��#��y�ED��.GY��&S�n�(��3�җׇz� �S���؞n�\'�!5���T���uj��� _�\r��撙�a)\"c�\\a��8��A�{m�,���w�Y��ұ�1���ͯ\" \rR���m�#�d�?4U|�0Y��\n=�_Q �vI��MЅvV��� @�S��\0�F��_�(F����Y&�T$����\0��\0�~��m�Ƭ7��Q� !��>S\r���i�I��HH}B�I�l��jt��5�{���4�\n�/嶲�ۨ,@7)�?\r�U全��d%��~��7�������P�� -h���&\0�v��D�i���cns�MMļ�J�u�^����S\\添ϭD�)��xBS�掭߻�o}��º�^4�����p�7s�Rі����t��}��c�\0�����S��rGO<�M�Zu{��kd}���xe�{h�x��w��/��ǯ����t)ݻA�:���я�������ɖV-��D�ӄH3ƾ-��W?�]�a&�t+�WQ@S?]��2���{joXت��н�tۤD���kU\0����`2@�PZ+�Bq(���qº��2(5���(���H�+�N��)+|i���v�f�a��bbyz-#8� �,T�Vh�s�l� �~\0��~4Y�Ϥ�\n{�B nب��?���u�^i�Jv������4�O�ȴ�ǺO(�����jR@VEM ,+�v�\'����<�8�t/��\n��,����=�\n\0��f��ɑ$�ej2�e��������֌)�#�<&�W�}����h<v�xhOYhtA���}����x�π��,�X��ˬ@ysȷ��d( ���n��������D���tgK$�@?cB@�n��U�F�ӈ6$�oMJD/,�u���UГ�\0��>,O>J���\Z}�Zw2MX���[�[6�Ÿ�DکY\0���~�π��;ZE�2�jU��]o��K�҆)�׼|�z���o����J{#I Zk k�״+�xrqT���I��m��lC �[�\0�\'*��VhA���&K��T`�8<����8�h�\r� ���>s0�Ձ�l�),辣��C�ʑ�l,�3� ��N�1m���VԈ��� ?�s��~�G���F�t^Zq}�̴R��\Z$�,@�l�(��Vld@�Э��:I-Q��8��T���ZhA+E@O3�/��b�\n�Z0s�� >k��ϴ>ݐ�g������O��&2�����w���� & }{����^ݜ.Z��V\'�b6@���X\0�����~4�Y�7ҋ���Rnq�#d��(��}��1bU*����n�\\X�\n,�T������V嚕_�>���h��p��\Z��A2!��Vlb@�Э��J�6���\0zK�����`@�rV4�/K�q\"�R\Z������!��M{�<\0��{{��d�fƢ5e�n ���\'�}��7�[�\r�&<� B���o������{?Iؒhr���+�\\#��q.#�@�ۅkd̐W1n��;�Or}\'] �}HۨiL�~��O�L�]Vlf@�~��JGbR\"�\0�U@��D��1sp`]텳�rM�@� �ޣ|���ff���MT �e�Yq�%A��oB@�ΰ\"}u`U����-�-;\'��*�lR�ܢhA�b@��\r�!��(�|���XʀV�BaA���I���V����Q�/\0M>�t��:�����~i�tDZ�pU�s9�q�f=���\0%���qЁc9��� zٌ%���Bu:��n�g�DB��ʞl �@_zO�_�ތ��BQ-:�_����B�3�%���-:\'�U ��@�\n�� ,h���X:m!�g����V \"҂=�b���>tN�1�^��\'N�>��[�� 5��ަ;ퟬ? ネ��;���BBC�2�5n�����9آ\n�f����PR\\��x��R �p���P�mv�P� %�����f+E�\"8�@�e`�&�a! P���غK�ű������0��\n��\0+P�4[�*��D��T-��EgXV��]rql����cMN .�[����\0+�\n�J\n8����ן�E���GXX��mTTTT������?�p��\0��[V�wbXV�W�\rjơk���Y��������ѣG����S�N���y��Wٹ>+�\n��+@����HHH@ݺu����stqqq��nG^^��s[�|M��\0+`�dA���8[,g�D�&k��p�?ro��lX�pC�\0+���1Y��Gk�j�f����ʧ�\n���\n0��P��`XV@� h�qV�`�P�m���+�\n�:`@�����\0+`� h#T�6XV�С\0Z�h\\�`X#`@�2��\n����:D�*�\0+�\n�\0���\rV�`t(���!\ZWaXV��F��m��\0+�C�Ѹ\n+�\n�F(��6Ben�`X\n0�u��UXV�0B�*s�\0+�\n�P��C4��\n���\n0��P��`XV@� h�qV�`�P�m���+�\n�:`@�����\0+`� h#T�6XV�С\0Z�h\\�`X#`@�2��\n����:D�*�\0+�\n�\0���\rV�`t(���!\ZWaXV��F��m��\0+�C�Ѹ\n+�\n�F(��6Ben�`X\n0�u��UXV�0B�*s�\0+�\n�P��C4��\n���\n0��P��`XV@� h�qV�`�P�m���+�\n�:`@�����\0+`� h#T�6XV�С\0Z�h\\�`X#`@�2��\n����:D�*�\0+�\n�\0���\rV�`t(���!\ZWaXV��F��m��\0+�C�Ѹ\n+�\n�F(��6Ben�`X\n�v��8ݤ�\0\0\0\0IEND�B`�','Default','ueb_key_5','ueb_secret','ECOMP-PORTAL-OUTBOX',1,'Y','org.onap.policy'),(6,'Virtual Infrastructure Deployment','images/cache/portal-345993588_92550.png',NULL,NULL,'https://vid.api.simpledemo.onap.org:30200/vid/welcome.htm',NULL,'https://vid:8443/vid/api/v3','','',NULL,'2VxipM8Z3SETg32m3Gp0FvKS6zZ2uCbCw46WDyK6T5E=','N','Y','�PNG\r\n\Z\n\0\0\0\rIHDR\0\0h\0\0,\0\0\0�,)�\0\0 \0IDATx^��U�����IW��.( �5�D�v�\"**�F,��7\n\n�(�%�l�X)���\ZE@[Q�*��H�?����{�e+{�̾�<�����|�~s~3g��w2�@\0�$�K�0\n�\0 ��@\0�):���,@\04m\0�@L �1u fA\0@�i�\0bJ\0���c0 �\0M�\0 StL�Y�\0h�\0 \0��@�c�̂\0 �@� \0Ĕ\0S�` \0�6\0@ ��:� \0 д@\01%�@��1�@\0��\r@\0�):���,@\04m\0�@L �1u fA\0@�i�\0bJ\0���c0 �\0M�\0 StL�Y�\0h�\0 \0��@�c�̂\0 �@� \0Ĕ\0S�` \0�6\0@ ��:� \0 д@\01%�@��1�@\0��\r@\0�):���,@\04m\0�@L �1u fA\0@�i�\0bJ\0���c0 �\0M�\0 StL�Y�\0h�\0 \0��@�c�̂\0 �@� \0Ĕ\0S�` \0�6\0@ ��:� \0 д@\01%�@��1�@\0��\r@\0�):���,@\04m\0�@L �1u fA\0@�i�\0bJ\0���c0 �\0M�\0 StL�Y�\0h�\0 \0��@�c�̂\0 �@� \0Ĕ\0S�` \0�6\0@ ��:� \0 д@\01%�@��1�@\0��\r@\0�):���,@\04m\0�@L �1u fA\0�ظq�60@\0�@�dl۶����ի�L�2��A\0��R%�K�,�*U�� \0xA�T �?�`իW��1 @\0��\r@\0�):���,@\0I�Դ���KwJ��Y�ۡ�ռ$���n�h�ZI���o�Y�w\n��M�}�\Z^C��tFC��`��Ժ��C\0q\'�$�ϼ�Ȟ�hq�S�7�s%#�7G�\0 $ ����+3���]g6�v�3�A3�\0 �� 0ű� �? \0�BH�\'��`/~�d�Y�yf;j�� Y\\zOc�#��)(�$�~x�w6f�Η��;���m�G�0s4 \0��`����8�@��襫������.� �g�aUv��%S%Ҧ((&�=����a�ִ/ʹo{�h�����f�@S{!@� $ �mo�m�{u���p�ܪ�os��Zm ��bU˗��*عM�Z� ������5�X����7�ؘ��l��}*�G˲�VŲ��ӵ*���+6Y���J�zft��0@� $ ��n����Y��em՝��9�ˬZ.I�/��Fv�3I�[Ԯ`���e��l�����l����[�A�r6����h~�Y!�y3�@ ����fOM��.=\"3�� �m�������W�!�*X�)?��\r�J� \'�{U)g翹�F�P�Z���fuʹUY[m�w��~��V�k�Yn�/jP�$��Ma�@1�!�Řw,�B�c���\0\nA [�7l2�Ix�\'<� +_�W2��(D �@ mX�6� @`�hZH�$���&O�lx��|�Ͷ����`˖-v�y�ٿ���2�ˌ{��tLn�\\s�5v���{��<G�mg�}�������a�VdG�:� �ݻw�_�|饗�?��O�P�B�m{�7�6m�(�I�&Y��L��/#F� �Z�@�>}�e˖v�Ygٺu�l���v��{�\n\"�/������ӆe˖Y�:u,#c����9��a�ڵV�bE+_�|�������?�p;餓LyΘ1� QҢE��~��E��\n+�7�t�\r8��\\�d|>OF�� ���!p�w�Qש���T) ��_�C�+�{�9+[����w�r�l������������rߪU+�֭���/q�m�6�Q�����׍�5Rۺu����_9@j�#�ֹ#G�t�_y�6b�\'�v���}���$��<�Ix�ϟo���w�}�ꫯZӦMM���.���%��T��WR�{�=g�`;v�}��7�F�պu��,^]�t���L����^pv�{�V�R%�[�����æM��~+�Q]/��{ꩧ��Ç�̙3�hZ�ɠA���o�����[�����͝wޙ�[�@+_�����r�Ew �z�r�ek۶m���)S�8��V��?��q\\�z���O�C9����ܹ��:�&M���/��\"W7�qU[�>���}v��G����?���][X�x��eA]Pb��\'�|�D��+�pu��ꫝ�J$t�6�n��֤�^x��bܸq�d��+I`$D�S�#h �O>���Z���BI�z�G:���_�j�^\"&�zܸqNd~���%ٗ8��tG$п�����_t#o�W\"/�MO?��������v�i9Z�I,5rN�u�u�ِ!C\\}6m�dbگ_?\'�a%��M��L�+�SG(�G���KL:G��N�]�vְaäcRZ��:���n\n�Y�f�CH�.��Zv=��N�5�%W�$܏<򈫣:N�% �СC�[n�pu�~}^�r�B_3t��qb4� [�S]̩s��?����֨��k�5�R$�\Z����]�IM?D)U�o��\'P�󮹍����c��k/�ܳR$�\Z�^p�nTܽ{w7�U�M��v�=zWg ��U��u?����Q�F����t��_�uW1S��% �8&\n��7��C#K��#�?~��O<�Ĥ�E�g�hTz����T��)�z�wܹ��z��L>�s�=����D�?�C\\=�Pgk$К\'�{�]��9�Ժ�;݁����t���O������ww>��u4% �+\nz~쏯Y�f��,����J�@]�����E�Q֎.>��S4R�����/Q�%n�7���:��z�ʕ��� \\��D��\n�}����T����*7�T��w�q9:����8%����Qw˗/ww$��:�/���>��C���˓|�)���R�zG���=ܔX\'\n�F���rJ�x&��w$��{챤�IS_�u�)�D�w4��Ocg�JMCH�u��駟Z�-���7�Ř1cܭ��+4p���Q�.����M�oݺ\'\n��׭�DE����ےVqt����Y#�o��}��l�֨M�D�H5���P#s �xj$��+�dOq�6��|��4}���HA�{uH�5k�,��͙3Ǖ!�:u����T���kj�A��w�@���j������<����wU7M?��Ĕ�@k�H�XhzF�B���l`��v�N�:���9k�[�\Z�g�vw�{G�f�\ZӼ�:͓���O���l�Ot��r�E<5r��s*�ń@��C@�� WD���X������D(�L)Z•x̎��΍΋��,�擘ǎl�>�lU~�_�y�u�w�����u�� �r�2�rS�I�&�s+3b��s�_�y�G�O�wTgٓ�,�,�QⲼ��S}�z\\j���r���\n����c�∥[0*����{�\nCI�X�g�5�i���E\'��{�<�y�V��7�����B��/�.}� �8�4��栵 Ls�Z�@��$��ᄋlޭ\'��ekm��M֡Q�lK5例������|��������\ZQ͕i�HC|��y+=�>��3��Ն\r���K�+-E���-K���re+�N(_}�\'�*O�4!�%���@: $ ��uY�y�[n伶_�\"�����nͥVz�H�C�5jԨ�{p-D�������Z���c ��nj���w�u� �u���j޼�[H^�^=�G.\\�zkr^����L�d*�):�M��!\0���1=x�7vc�FV�L�Vҏ>�ȴfTsTzڪ�8z����۪U�ܭ��2K��U�fg�q�h���%s�1nѽ��jg��9�i�F�z\Z;w�\\��ZO@�;����o��ƍ�ǎ랆j���)hB� J��!\0�t`G:�S6 \0��@�i�\0bJ\0���c0 �@�@�a�v�^ժUݪ E���+E���9�\r�J\n�聞�h�N��2�H�e�~�+�I�G��+�1s�%85�Lq�M�dW�� 5���C��/���}�s�Q>z�A�@i&�C��K�Z�Vhh˩��*ʖ�6�a���+Z��}i���nj�F�S�@+���}ju���;�WK�6�N�7�|�=�T���W�rCD�w��~��(]�h%z���\'L���2���PmVyZ��-�Zz�\02�\"�s�*E���UAa��P� t��уXm���Bm�Ֆb�ת٦��3miU��Pl��1�R����h���T!$��F�U�����BTw������U/}/�֫��]�T��(^��Q����R篶�����s!�AQ޴X⮇�b��������f=�V`qP�4\r\"�d�V�h ����V�5��܂�ǹ�b[�&�C��F�.B �VjhO��h��Fa%�گ�%wڻ��*Њ�� ]�kY�F���V�h��Ђ=��Ї\n^�;\nES\'�%����P�x�\'n>�}(��Z�-nh�JP� ���_)���zo-U���j�FŲQ��� A!�v�ҥV�vm�@&q�hJ�VR�)ɧZe#[��DLª��Z��<��~����\'���W��jb�+QT=�#�0��ԝ��T�|�@���W�J����R�(��Tٯ�:G11����WJ�5@P(����O��rh��V�(ꛖf��lo�[����*�Yj,���W�@���~��]�.% �v���/�����@�Ֆ\0hY��CI��6�H�lE�M�8Ek���P���i4\'��vZ�\\%�\Zy+��Fu���J��*��F�Y�,��s%����`.*_f�dQ\"� -\n稼�K#[���+�\rmR��)VG�@�F�*S�e���P�c�����C��\rF*G�lS �Qe����l2G��6;)ouJ�I߫#k�/^\Z�ΚZ���@��:\'�E �Jb�:���v4�W,`M�h駎ѝ���H�I��@��t8I¤�7>���J>\ZY+ҘF���zW�G��\0���\0���  �+�$��ۍCK��[�C�.��@�A��_jxL\0���y��M �@oٺ-G$�P0��\'�J�$��9�3��L�9�S�xe۽�o;�<LkY�M����Z��kǵQA�EOM�Ԡm��$Q�rS�C� �5��\0�M I�[�l^{����ؚ֮j�կ�m�6!hK�6t���[n�vpi�\\�&Mܮ:� Slgm��^c� ��B�4�IA[��AD1��{Mی�AD�$�����������kQ�h��6�hӄ�,��]~�_Rā@�@gm�j���i�*�����d��0�� 1�6f�DЮ1���� �=�ׯ�{��bOhǛ��*i������.7�L��3�cd��P��>S��H��kL��-��U�Ѵv�i������f:M \0���1=��vJ�:9��V\\��v\\�Q��Q�\n������Z�NP�\n�-�\Z�3ƍ�%�Æ\rsy(f��6$Њ���ڂ���:ŃP�^�����>܉�^��\09��߄@��A\0q ��*m��xk4�� \r\Z4(;�P�8 H/��� ��E�| \0�� �@�eʀ\0 Pt!�q\n \0�� �$�Z�ZR\0�(1��w��&�:l�R;@�c����t@ l9��e�����+Ws�8�si�+�w6&��-tF�Xd�a<i�$kժU��\n-�$�>���v��m�į�ގͭ^��\\}�YokV<\r�/N/�-E�3�#(:�^)y��vp���/z�%)�@�@��T�pEk{���vz�z��*�Gk7��fh��v��}����$�z�\\�ƍ�NB5~�P&N���~��:w��ͽ�4� �N\'������G!�c� �9�@�@+�h�>oX��UlN�IGKx(I#� ��=z�p17�\\�%u.�#F��I\Zqv�ank��*�3!�������B=Mk(%F�D��h}���u֬N�GjzC�䢭�S�Nu���z��[���tJӦMs#j�/!�8K��ԩk�V�(�\"�*T��A�(��Kq���pw\Z�/)����Ea�x�wW�F�·@�\n�)�F��N;A��\'.P�B�~��G6t�P5j�u���E�ӏ��`I����+�t�Ԯ]����ck֬��o��V�^�@)�� \\m�=,Z��:u��B�G|�t���|:���H�zJLt�:���W v&�\Z5�7�ͯ+�F�Z����5��{\\Ll��RU�9�ѣG�����@�.���/��-[�ܹs�HZ?�f�r!U۶m��<$ڤ�@���=�RhڪW��%�8֭[gU�V5��h_=�B�F��_�ޅNՏ�?4���4���F�ʕ��J�L�)i�M����F\r:���r�u�#л�mQrF��\\�(\r�s�\"�@��_t�����sE��y���g��� :���3hFЌ��ym��Uz]Z׮]K�L\n˛\0�@#�y_\'�∙3gڡ�Z*�\Z�J�9�VQ�5v�d9bqlݶ��ddɉ)� �J� ,�$�޴e�U��+�a��wJ���~��ֽ{��ϵ�P���o�dHw��r�-_�eGgְ��`c����N�w((�$�^����4ɺ�̴�;��pM�Mۙ����O?9A�V��{����}�y�-�Z�;d�;��\\\\�t��O��_eR::]�\\@�0���g>�׾X��Y����hv�@kg܇~hG}�͙3ǖ,Yb�\Z5r�7���f͚6~�x����c�)�=��z��%s@�� $ �ҵY���)�w�J��Um�L�T�v�i�E�;ڌ�\r��� M�+f�bX�n�,f� �](l���\0oTIx��\0 �:/B|@ M�4��X@\0y@��\"���\0�D I���.�T�V��*�04�R�M�t���v���h�����@���K� \0� $ ��ek�ݣSm��-�uw�j� ����~�k���� ŒN���.&_���f.ZmgT����us��rF����ſ16y�����4i���K\n�@�@����m՝���~n�����l�]ӑ#G��@]p�n;�v.\\��m�W��k�E�������^��t��Om��l�]�&��C�ty$^����v�e��˨b�fժU�N��X�!�$���t���{����#�>��E�ӻ�{c�ر�!(���g���\"�֋QW�X��r�-!�q�Hz� ��*tz�Ԯ*�9�]E�|cK �֒X��*��`��@Ƕ��0z;�e˖Yݺus@��^���/W�\\�G��ċEo�-ޅj���D��oF�\Ze͚5��-[�2�M�fm��6��j�^�4y�dkݺ��%�� ���� �G��m�M\nL6x�`�ҥ�5l��.,Ș��@ow�^�s���M7�dw�q�]w�u��Ϛ.�/���Y����|�A{�駝�Κ5�^z�%�O��;v�)S�X�v��sα^�zY߾}���O�%�\\b��w�+Q��z�.�m�Ƽ��e^�Z~y�Ǭ����~���C�V�F\r:��o�qB�Q��\\��0>����UM�󎩃�ӧ�U�Xі.]�b�/_�ܽbM��VN>�dr��٦)�N8�ۢE w�:}�]����\\\"�i���:_�9���*��Ǎ�.�ڵk����={�СC��%�4h��o��Z���--�\\o����r�.V]�zם�8�-Z���u���ů��{�=���|�Ûh�i��`h�Z#^�hBS�Ջ/��DS�F��ׯw�v�\0�iӦ�a��\\>�`�ou�7�p��1ºu��7��o�w$�|��9���}ƌ�َ�6!Ѕ%����~��\r�b�S1���J�� #A�V������Ν;�k��f��~zv<le�c���Dq���_��ѷ~H%G .s�\Z1���~q@���b|�@��� ,)!q�]Q]zWPM_�t��Sr� �iO�&�@\'�N��W_��]��^���:,�& ��������m��mvt�a���ب�K ]!m�҃�P�BN�>��ޡ8t{=�z��%v�~��ހ�I; ��h��Ŧ�Y5�$�믿vO��S;��9�/�M�X�:�@�Z ��V%4h��\Z7n�FÆ\r����:[�u��[Kδ�L�!��T�-׊�A��_��%��.q��@�@���R����H\0\0\ZIDAT�����1q�D\'�Zd/����^x�O�F��*m���~�v)�q�.����?�qB�UW���@�gA\0�!��!�-��j��e�d�v�i��9. ���\'��Vq��@\0H:\r�)�@~ ����1�\0�@\0�Nt��\0 �t~(q  \0�4@��\0�\"!\0�\0�J@ \r�4@�H@\0�!�@o��Ͻm�/[�ìX�)W&Ö�~R��E&�@���~��o|�{��ˎ�V\rj�x��A\0�Χ@�/�a��ol�O�g�l�_T���Hk�o͢f���@��|\nt��Ul]�f[�6˝ѳuCkӠ�-X�Ѫ�VΚԪb���f=?ú�i�֨�N�,!Ё^UT �D\0�Χ@G�֨d Vn��\ZیEk�S��V�ry��l������٣��Z�����!��@�&�@�S�5�qA��6r�\"�Ң�}�d�ծR�6l�b�ʗ���y+6X�\nem��MֱY{��e��K��E�!P$t>�H�s9����J��\0�F���g[ۿv�pZ5�\0��\0��د�ۥ/�t/�-�4��fvM��%Qe@\0�@�=ufC\0�@���15�\0<%�@{�8̆\0�\'�@��cjxJ\0���q�\r�O\0�����\0��0�\0���! �)�S�a6 >:|SC@�S����l@ |t�>�����hO���@���}L\r!\0O О:�!\0�� ����\ZB\0�@�=ufC\0�@���15�\0<%�@{�8̆\0�\'�@��cjxJ\0���q�\r�O\0�����\0��0�\0���! �)�S�a6 >:|SC@�S����l@ |t�>�����hO���@���}L\r!\0O О:�!\0�� ����\ZB\0�@�=ufC\0�@���15�\0<%�@{�8̆\0�\'�@��cjxJ\0���q�\r�O\0�����\0��0�\0���! �)�S�a6 >:|SC@�S�ڍ��\0�\'�@�b*�J\0���s�\rO\0���T�\0���\0���  �+�W�a7 <:xSA@�W����n@ xt�.�����h_=���@���]L!\0_ оz�!\0�� ����\nB\0�@�}�vC\0�@��w1�\0|%�@��9�\0�\'�@�b*�J\0���s�\rO\0���T�\0���\0���  �+�W�a7 <:xSA@�W����n@ xt�.�����h_=���@���]L!\0_ оz�!\0�� ����\nB\0�@�}�vC\0�@��w1�\0|%�@��9�\0�\'�@�b*�J\0���s�\rO\0���T�\0���\0���  �+�W�a7 <:xSA@�W����n@ xt�.�����h_=���@���]L!\0_ оz�!\0�� ����\nB\0�@�}�vC\0�@��w1�\0|%�@��9�\0�\'�@�b*�J\0���s�\rO\0���T�\0���\0���  �+�W�a7 <:xSA@�W����n@ xt�.�����h_=���@���]L!\0_ оz�!\0�� ����\nB\0�@�}�vC\0�@��w1�\0|%�@��9�\0�\'�@�b*�J\0���s�\rO\0���T�\0�����m��0��\0\0\0\0IEND�B`�','Default','2Re7Pvdkgw5aeAUD','S31PrbOzGgL4hg4owgtx47Da','ECOMP-PORTAL-OUTBOX-90',1,'Y','org.onap.vid'),(7,'A&AI UI','images/cache/portal-345993588_92550.png',NULL,NULL,'https://aai.ui.simpledemo.onap.org:30220/services/aai/webapp/index.html#/viewInspect',NULL,'https://aai-sparky-be.onap:8000/api/v2','','',NULL,'4LK69amiIFtuzcl6Gsv97Tt7MLhzo03aoOx7dTvdjKQ=','N','Y','�PNG\r\n\Z\n\0\0\0\rIHDR\0\0h\0\0,\0\0\0�,)�\0\0 \0IDATx^��\\W�-�n��9���V�9gY��l0��m�� CN3���o3�7�7�!��0��ز�q\0,�(۲��s��:����o�sO�U�%u˒�5�����n�{�笳��k�m`�^�;�>Lx��> π����OL8������O`\0�>� ����\n���XxW�0�R�X?��ˏ��X0 >za,�\r@~C`z������$<8�c �T-2������3V�������I�r�\\�z��ON������䢼=��o� � �3]� �  x �4�>`��^��@@�uA��}��\r���G`� \"A\n��w�yX�����xX��� LH��F�s�ȓ�\"0�U��}\0zŔ�xc�t�I1 ���Z� ֹW�r=p~���w� ��K �`z�@A�\'~Ҝ�3�-m�5<��-߀��!s���G`vh��6<n�·c�L�C�A��4,8fn��0�ä�.s�����., p\\&�s~f����%Fa�C��1����,0�W�r=p����иco �-P��I\0#���h3�Dž�YB=�y�\0t\0����RV/|R6?�4J<�m��\0�)�� ����t�g��� Z��`��nJ�<3�� _�vW@�0/�.<3��/@@�Kc�TeAw���������^����y�\Z@w�\r�J6\0��A,f�m� �����]��M���n�j��Ш�,��!?݉|�,�i��;��͎�CI���Q�X<e\n��ظ{^�׊�xL�^Ћ<�8>u�$��u��̓v�_��㒸���hK��3hG,���M��{�;^� -��q���\\�s=�����]{���.��� �w �0\r�i�3��q�7y_:�|C�n�U���=bX�0���m7���:�yd����F�N7�χfb��[Q�ځO_����m8l� 0���M��-��ё�w؀�P��|�D|h��|\r�\nG��c�\0����D\0z˞�ʂ�/S�&9:7�s=p>����Ɲ���a��~�D|`zI?�<`�����mH�*��A ����4�M�ŤA�A\0��Q�ӂ/]7�\r)��ڱፃx��m�B����?n��g�߅���U��߉f�ݾ��׆�-���GYh�_���8~���x����MsM��/�@mI%��V��\0�$�1y��8b��P*\"�F�Ix>��\\�/�� \Z.�n�Tx��*$ӎX��ia_ p��:��\"��j#]@5�Ԇ �R7ӁO�I�60�l�ׯ��o��<�̪��ɣ�Ϗ�B:���b�ZV�1#F`wM��tG���\'���:Pb���/�oڅщ4ޱv)�tϫh�%p�������M�)&�����i:��L�������\0�NB>J���2�v�($�{�u�����k{�VPN�&�p�� �Y=�r4R\"����p��x|s\'*�cX81�O������s��S�Q���;WM��~`+n�t^xa^t���:�i��n��.�^���NlojÒ93p���_��å��ұI�GHq�iA/�������� �.4�&�A��{۱�(��\0E.h:\n-��yx丏�x`ۀ�dv� �!�P\Z!������h ��V�t�p=�^6\Z��w#u� ��t���\'�Ċ0t���N������f����1(�\\��j�\'Ջ��@q����y3,�M�M��/^FM�(���� |��n�B� ��\'0).�RX4����%���6�\0��Ԃ�� ��*�Oh]X�L���C�э)V7ny�2���K8�YH��q����R�����ȇV�/���͘4�7,���x|�Q�i��G�^�Gy;�yH�F�]|�y�ֽ��|�\\7��7�~5�U���0\"1bAS�ё�/����� �.4��ݾ\'�L>) �=} \'�=���n�d� �*EI�1�T�ش���8�^+V��1y�H�~C#:�8zm ���ׯ_�ǟ؍�T/��r��=8ږ�Gֿ�ʢ<���i��c��|�B������p�\0��f�Օ���`\r��b\\>+�=���G�J.j� -��\\��\\�\" O\0�! ؼ�N�s=p��8��J?]h\0m߹;��8 0�r;/�H��B�B��C *7bs~(��.� �$�kP�g��t/��E@��HĴ\\�7-v ��!��C4�1��bz0j��3\"m�`��먩,���� 3�%oG� �rJ��ޏ6Z�V\\���� �3�<�]+�^V����. 陷2hs����0�0j\"�I���в�]���T���ǧ��5$e�����hC%I�������� �(�����¥%S��lZ�\Z���n3�xBe��p�E=5¹h��>1�=��qT��pW��� ���,�2\n���A�M��R��[�,A!8�i[����������`�嚐끷��zG��ENE����`�� ���� Ho�&�ɑH0;��� �Lv�c��YoUt�*c�%��ن0x$�\0�Oh�)�M�G�k� p���$|�J��Ԩ}V9B�:���F�l�^��3�cǮ=�l8�nH�9M6�^���Q5pr�g�]hC��Lvw}�1#��d�ft��\r�0�\"b\\�r���:$��\\�}���FmeY2�D��h��C�Y���z� ��S��}*�JQ��^����\r�\'�+��E\"�X�r��x��Y>+LJ�Ì mb�.�sǹ�N«���\rj�+7k�� L�3���{F\Z����t���ִ��|t>5sH�rH.�!��G6A` \0��U\0M۔����{a:��QZˡɬ� �%o��(�nw�;*NJQL\r���ы�2�eR؉Ϳ\r�&��} ���XL�\n���I�f���s��z�|�-yz4{\n���\Z�2m5^ �fo}��!��!�(��hC}�4���lHB|�\n �gF�B :ӗ�z�퉄{�,D�!���ވ#N�������L7ʼ^��4� xLEJ��$r���!��es�V��Ym��\rD��,z&T�Lr��&��9:�g8�ǀ�yY({3﬌9N?������c�*�+���Ć����\r��`�M�AZ%8�+�Ph����„�<J ���=*����sL��\'�h�颟��m ������Q�����1/�eJ�S�;e�<�\n����X�\\NLˆI%��޴�]I�\Zxj0�M�bث6�O��k�E�����\\����[�����#9KB�F�/�C[�zHhvN�3�܃�9!3�ϸRV\n�Y�_��+|�j�T��X��R��,���B��CkH��Y�i����m��� ��{R�AM���U?dϩ�+z��]�M�k��^W�)�$k��U���U� ����98^L|��hr����H�x���GH���w�P��d����!��!���F1H-˂�9��K).�(qtٗ�R4ʇM�t]Xn��&�%{r�f�}_���}���m��>�$�̖�t�Q�DzUu�d�ce��:Z�tQ��i��k�(��=�j�ꉩ�;zm���W_\0��Om\rdj�FY-V�B���_�n���B�-�O��<�#�,# ��0Q�8�CN�����t��� d���+�}ݦ��� ���s��o���Vmf��P��=��Jw�9������L�H[���ߙ�cS/Fa��Ϣ�9)\Z�>TH�Hx�Ç�W�w�\'1���Ϲ>��gP�ΏSLU�]W����saX1xhJ�!ێ!� �Pr��NVEZ��h \\ ���h�1���5M���p21h��b�8\\Ǒ�ȉ���CU�X�6<��A0d�\\�9&᧨����l+)t��J \\Y�-�%�^�dv���:NZړQ�E�%\'z*堻�S����xy/�*�uC;����)�Q(�p(�0��j�ևZ,�n�P�������c�@�? �j��������<�U�w��7���3\n�6<�I�.5T����=� �X�j������Ҡ)X��Q\0�(��Ћ���m��8��洞v�s\n�r�����@kK3R��*�o8�a�p�@�b1K�O�w�8+--Ÿq�2FL�{�YЍM�#H#��6M���%�8��,�` �n\n��&h<���|Y�hZ��{R��TT4M�R)䣻�W� �?�r�w��f���M�\Z��>� D)�EҎ���R���$�A�C@�Hz�R�ЂO���3aI!��+\0�{z����X�яX�(..B<�c��d\'j�,Fi� ��ٲ��eZ��h���>N�pR[Ő��� �U�S\\;�`�|�C��4�7[^SΓY&B\n ��,�# Qd��y�`�B�Z��>��]o��L��#y�jW�^Y\nG�)T)*%<_��T  uA�w½Pd��J�� �Vx�h˂�������\0w����EoW7l�s]�kwh��b��\'f�DQ%;*�YjG��Ԅ�s�(c�$4���QC�6 �E�8\Z\Z�&R�ݍ��n���&\\q��߃\'�|\n���º�;�� |�a�=V��k/��|�y�U())AC}Ǝ�����^,Z��\'L�mYx��Ɋ�h�B̞=����p��w��_����|�+_Aa~>��N\\s���m���w^W ͛���^l�q��E(+��KW�W�܏�ʱ✜7k\n�Θ�;��5���Z\Z����>\Z���6a��Xy������\0����Յ�<���D�� PV^�x,��V&L*�F8\\\nP1i�8�T; Z�:�\'��ÝHpC�����(b ��-F9���2�:�l[��X��iÉ��I�Єǟ\0�\'.��!6�+��W�V�z�t��zy\r�r��yT1.R�n�0�z/�F�ifEU����:B]�g ��g�n�zz�0mf��J�ر�TZ|L*�2̸۩������O�UU#�+��K�� -r����z�O�/|=������O��g�ٯ�=��Oa��M�喏�����Ÿ�nŬ�3dK��|>� n��F�v��H�ṙn�������K����hkoC\"��G?�Q���7|��K���g?�\'?�q����-�������\n�������S�`�%+�[>���ױ�����G�1�BQ����TTMµ׼m����歸j�%�\\�����_K�R¯Ļ��ήN���k|>�-�g���vL��8z:::������N����xB&{v���I��ۓByyZZZQVZ*�{b����K��Ӎ��tu�����1cƌ����j!ݛFQq>��ZQZV���^$ ��v�܁�QU0 ���V�\\��d\\8��G��\'�Ƹ��p�%�(G��J-t��c�����`�Z[eae�;::d1m�48N�����?b� �1cz�{�Yx���1�|�̝/��miWW\'�I��k��B�-�Jc۶mr���z{z�_P�Ύ$��dW����Sx�7�b�r��dݝ]((,���g����KO&��{�u�q�F̜9S՘���X���;;PTX���v���\n��� /`��r����X�r����(O�{��q����I�������t��=bA��7M��ul\ZN-���O��Q�%��)�+\n�XKs �͛+s �H�iI�Ȋ!��!��\0t}m@��tr��?�!n��#غcZ���\n��ė?����������?v<6o|�w��K����g`�%�����Gx�-�M���/=���?�_���˿�+�?�����q��{QQV��գ��Ŀ����u�+\r\\q�R,]8\rw�q���Ê������9n����Ο�W��z$m Ə��?|#��1xi�^X�Bx^7\n ��n�C�C����^`tww�d�oP��Z\0�L\0����_v\\�***�u�V�>f���8z�(j��j�j�ٳ�FV ������?���#�q�q��\r���i��`�+�a���x�?��7�6oـ� f���hk�ŧ>����BI��5#0�X�j� ڹs7�S��AA2\'Ձ�����1o�|���}�Y;v �����͛eQ�=Z�w��Uطs6��2R)�|�� \'�B\"�%�(,,š�u������3�ꆗ���߇߭[��/�u��(,-A2/�K/���s/FVVb�Ν�1g.�~��]�V���BcC�77c������͓Ei����w�%%�8Z[��k.Ecs3j��t�r�ۻ�ab��װ|�R�=�E�W`׎�?n\ZqӍ7�gw� �S&`��}�9m:����2R/A�!�}����s���)J��c]#\\ҝF��c�E�ˍ�={��Չ���fLꑾ�q �\'L�+{b�ɘOà�-4�%ϋ�R;���� ��nh� ��:���G{����7�k��*�\n�g_�G|� ���_�K�\\���̝3M\r��/�Fms��K���~�_�0u:���H6�O~�/�ů~[�o��Q1�\n�����qp�G?����/�������\Z���oc�����6�G��6�}�O(+�������L�63&��̩S���V]v\n� ,_>�����ֻQX��i�hj�BIi>\n��p�;>��~�=m�et+}*�&��iA��%�oٲ�?�<\\�������ֆI�&���7��+�q%^x�e�Z�Z� Zrtr.^�=� \n\n��6e2e�شu���?�/<�Jʪ��ԍ�|��y��X�z1�Ł�\rH�`�E˰s�k�4#��T�Y�f %u��QV[w�Ǽ93���W�`�|�\Z�/_.,˦M��}�v,]�T,gN�w��*444`�� (�Kbݺ{1z�8̞��=��̞���f475��x\Z��PXV���ZL�2 [6���t3���(-/CMm-\n�\n1rt5fϞ��c�ع}��c��E8p� ���Z��� ��@��m|�g0g���\'O������X�t ��܅%K��W^Aو(/����;��Ҋ���8a�l��\\)�TV\\\"���˖�Gň�e�P]Q���^���s��)���C�Mn��b+&��\0����ۋ��\"T�#.쟏ݻ���4}L̒c\'���xm�QLZ��7�Ś�I,�w�.��\Z���@�y�u\ru5Ķa��z�)\\{�\r��`������������W��Y�|�5|��CG���xb�v|�/�k��׼s���#�Ʒ��3��2 ������\"��◾����~����l;��n������~�S��o�o<�����?�Gyw��7���B���عm�8��[��/� fЋ��F�엿�G?������+���o��[���| ���^~i3��߿���<���*<������8Ag�-�S49jZ�#F��A�ﴷ�gTb4�TU�C>���k���~��DAAZ��g\"���HQe �t:�-��u��������ۉ*�PVR�TO��h��e\'���\n�����#��\n��pz{Q�_ �~aa�\04AY(�P��{+*.F*�Bqa�莎6�1�x�P+�D��L<�ر @3��Bo�W(�d<&�ṩ�!DǏ�!/?]m�*� Y�P~I�+��q��\0\\J$C�\0ۗ�����|��4L+��� �P����#����CՐ��K�����\n+?)tQQA!\n�\na0h�<W΂�\n�r�P\"�����ťI(I�`�#����q�93�;��4�՚&8#�����#HFZ�s�;� �Iym�gA���M��q��\'����0k�R̜2���� �l����_\"�v |��`���x���0w�*Tx��p�%W�$�\"F�l�~�OP\\R�n�?�Xn���x������ؼ�\r\\~�%r�x\0�y�ըm8�{x\0%����o��m[QPR%V*���s�=���� ��`�EKq�%kp���s�=�0a<n��f�R�N�����뮅8��Cqh�ZyyyF��eg���Jբr.�lS�K��H۔�\n��-+t��ܐ@�,ĉ���fQe�$��h{U�Z���*���Jo��i��vj����gP��G9.�k��0in�2�3ի�\'\\(E�g �+M��Uw rţ/\Z�P��~���O�l��@��VmW�Rd����\Z& |`f\\�Z�U�<h�%%��+���;@���SR9�� �C&j��#Ì To�\'!عw:�;�I��1��ܶĒ�q��?�qe y�ϕNBZ� .C�d*� ��\Z\Z\\uFQ\0\0 \0IDAT���i\"%�҈�-��GY����\"a�>R_�Ҷ�H˳�a�Qe�wz$7�eڰb1�f�>ڊ O˹#;���jJ0�Z��?��+u/�D�U �%H����ڀ릥}��+̇LЧ#�2*z-PE�:\"�\ZM��\Zp�*L����R!\r���yV���: �e@G��B�y�� �Q��h�UT��� �\nQ� QGD���J>�� /0�&��8�w����mQ�� �����uUp(u���#�#9�� ��WW�\n��JK����j�E���:BRu]�;���`@gd�*PB�@���u�g�^\'�P������_�����/��c?���޷ �=ȗ�8䡙���gi%�t�`��@\n�8������Bo� ��� ��Iȭ�a\n\'�\0�� �| 6�Ӏ����s�z�iHhu֒�{�,U���P26eǩ�)��!%�@� ��6�\ZX;�r���\r�$S�E�t��ڭ\"�\0�\0�a��{I�R���d5�|�T���Lr�0>1�#k%k.O϶sᱸ������S� b�0�DI�\rJ���Z��TMa��W�9<�\n�7���/a�\n|�&���ٙ����\rh.�^��sR�G�������$���dmһ!8�X;���L�tId�R�蠘�b穈R `�a22�ֶX�Y �>^/+�Ic��+ъ᳒Ť�N� ���:k8���dg���G�N8g�q�8�\\8��m۶���,Q$��d��,_����@v�����ݪ�&�9h����8.@�n\n2)F�N$XKŒ0GtDu�v;Z\0����.)��,�1hC+D~�s| ��%���G���LO%e��1a!�vx�7U*іR4�0�(>ـ�\0}�U���G���S�� �`\'e�O���}eejg���) l��l�+�>(DC�6�܊��j�tм���S/6h�F3�i�q��2�9q_�vV(1pHT+*�T\'�Q���b�U��I��L���K._���\Z���O5&�ޜ૔��>f\n�H3���7L �a#������\Z$V;\"M�L/.��o9R�T�$�)���(���7(�V[O��i��3��+SUWT�@�.� �X��!UW�;4@��U��@ΤέKji���c��R���HAʳ�*����$�w�>7������:j\0�>��\"���AE����)W��R �h}��{P�֑��h�S,l-E���.����f�������z�V%��롓t�O�^�$̑{��%�F=f�.d�7�\0��/��Ā��Ж}�n�� l&�N�ݯ����\"��������3��R!��^�&mp ���j�ϖPv��#у9 :|255���Գ�sO�bd`K��0˘�M��Q��R PX�*�{f�Af�0�]���%Ȳe�;L�#���\n�`8ڴ:�_�/V��}��;�ؓ\r��\r����Z�jG��Y��S2}�W�_RU \0s����V\Zm���hR!��)ۯ-| ��$d�yN�Y��-���PߍR-\Z�((���EN(��}Ewf\'K�~���[���� ����!8��|��`�He���cb>�4��L� Q\Z�\rˆb\0\0=z��b1�q��E�ښ#G% \'���o�����ɤ�@�Qe�\n�I��/+�;��TΫ0$�DH��Q#jh�����m�|�����,De�g6]:��4��UTHn�5��\r����.\0a�F/��I���iU��j��ܱ���Ѧ�\\�n �\0�K�PE���b-�����,��jB��f%M�h�s�3���ƙf�l4���\0F��hr\'.0\0(���:[�?��_]�4bA[gɀ��9���X��b���UR\0��+$�Dd2w{�<�\0\n��\rw�&l߁�],\r����Ij�_�3��M�6��t��}H.*���������Nx�l�k��� ��S^�ڪ��*��re6-�ͻ������+ܞ�g�&>U��T;�OV��� �����f�~poP�\Zd�F(�H��*�H!ph�@ch� ��\'[F���^��Zi7���#�\n��k \0�Y�3_ҵ ����ծ�����\'?9����o!d�xň\nq�f�s�|�:M�ƈ ����̚s;������h�?ɯ.ՈԸ�\0���UJŒV\0�����]8tr ����8 V:���sh?�@{�shI�����$�~ ��2�Zf��U9�W��\"d|?�� ���Vpf���Bdu�,��Q�>.۩�\'�Lj�LS!�� ��ҽ����0��^�N tX��\0-G�y�e ����bH�~C�C Zm6C�ɾ���\0:\\���D8���̿��ev}���~;Mߟ��0 �� Z�N�Ba�Z�5�.`r�L�/@:NY���B�|b�d�_�ʚ�C弍���S�� ���6��m��W�G�j���=G�k ��l�j��z&��q�.V�B�o�`�_ ���uh�\"_�*�,x����L�/<�\rXƞL_��cC�2ki�8����6d���0�<9����g�&��֛Z�1��s�A�_*�{k��7�\0=�\\%�=���$g��4`�Z�E�9�=��:��P��`a�K!H%�&a&%b6�0<.����o�T���|K�%�hEj�O)d�h 3��w_�}�9T�N,�����w�������|5�g��=}��z�\"�꧞���(��(@�5� �.c�]������\0z�$�<��wr=0��.+C,�*�PS�M�r�����6s��?�[�\0��_��̣F���K)x$��5���0��%�ۦ�l�7�D\'Ü2 $�Y=�-�6<F���!|ˆ:4����� 6|Xp9Jy\ZS+P]I��$O˕�W�� �����r\0}�;8w�\\ �@�K�Sr�,F+��@�Ɛ�$��`�Ԛ�\"�<Y�.�� $�����g�#�b�X��Uy�%�2o�`�yR\\V�c����c�Z�B̷�X�t-s�ALt�JԌ�\"����Ϡ �I�.�2����+ �h]h��\0�B{���=@�fֺ�M�f�%�\rq[f���&���C�`�a5�2 8����UJ\n���<�0-�E��,\\&[����C�$�� ���O�|8H�d� ��A��\"��M��!�|�� e�)����f-uR.���hF+6y����>��oX����Z�����㪒�h�LWT)?��� �Qe5���/�@%}S�^c�W4� �wm���dDʍ^��\r��|q�L�X�� \n��`���p�L\Z�W�\'Q���* j�\n�8\nmk+0��)�zhij�1-n\nG�E�I�Ā�B�ZO��f8�p���)5S2V\r�܃ud_@�%��������eA�K�-�b�)�m�2����g^�_X�/�]��/mBŌ)�YP���:�<FWU n���Ҋ���i���y316/���&�cE��(@��A}[~�m._���]xm�|�JaסC�0���|��䋘VU�KfNF�׋��6L3�g����-�8�q��.D�ރ(̏aLE9�tZ�z20)�( \\鈩,Qj�@�jT�\0zx��\\�.� @��ӂV<q\"Ԍ�Z6�a���\r�S[��f�FCG\'��L@��܆\ZT$ �oĬ�+�i�v\\:s,~i.z�Z��׆�tz��a�� X>y,Z��n�\\�v5*a�G�Ƃ�K����j� �9x�.]�G7�ƒ�J�.+���ףr�B�=�k.��=�bDi�v ��PR^��ڣXP=�ʙ�>�涥�\"�pU8hV��aHD,z��8��p��p{\"��\\�= \0=� qJ`�>�Ɔ��G�o��1e�t��OO!Y\\���f��?lƧ�}F\' ������Wc��j,�Ob�4k\"~��eܼv ��8\\sׯ�\rMX�m>x�%( L���\r�W���v0��ġ#G1e�|���+ƎĄ�<<y�REUx��������C�(������Fck7�l�ƍA5��N1)� ƕd0��M?�Sq `��\0z\0��;$�oG(��T��ӹF��4׈��\'�Wv������։��n��*�����5��J��~�������*p��g0u�<����U(6\\49�%�&�x}#ܱ�\\}���\'e��,_��5�������oB�ȑx��]X>a,��f<[W�KW��uO�+ׯ���{P^��c���0y\n� �=Ԃ2� �\'W#�uñ|���B,f�Ðg�д�s2�S�@�3/w�\\ ������eR\0,���q���h\rF��FA�ƫ�w�z�d��-<��F����z�T���sO� ��a��0=/����d�<�..@G*��>�,byST�+�-��k۷��A�X\\�|�7uc��c�e���׷������|�A^\"��^^���\"W.��r�NƔ$r���C��੐g���7rt��\\��\0�\"w�P��AW��3��\'�0�0�uLtђۏ�C;��ϐ�\0+�,�����-V�(��>b��P�l �(P�����\n��\"<_$y�w� ��4�x ���2`�(�cʪ\0�v�%�L�\'�N#��A`�z�0(�A5 �f�0mo.7�i�Y΂>m������[�nCYy�1�D��M5�i*c%k���Pm��֧�j26�sT�5ӂ+U���͆���9����I� ���+Ld����R�s�:\"��A�~��.n\n���$�EbOT�3��2�e%�RQDJ� �`h�ʩ,�F�@~��ȽN�9�΍�\\ �P��$�������|O�\"\rߗ<DN ���$0�!��G��H�?�z @K�_Ґ2_���^Rً�td �\0.�T��,U��`�v��u���JR+C@W�S<ֈ�I�xC򀰘.S�rQ��uH$*ҶOY�i�<���9�~ۻ<w�\\��ZM\'a����_غf�T6��CRF6#��D�I�M)4N%��%���C�W�g�MU�\\ʨ��>���3iN}�;l��#\rc � (�,��âɌ�ax�\0�JvK�]e�5O\'�*�����J6Z�}�f�ƈ�@�FB��I�\n�5`҂N3Dxb&)R�����ȵT>i�������\'0e��?N��h�K�F������Tu�}/��\nf͚���\"���0�V�iZ������ �U��K��ċ���d:Hu0 \Zד��<�m�Dp]���և������x �F�z �.g���-���Vtvv������hjj���EIi)b��\Z[�!pWWW˿m��(,H��j�0�8*FT��}�x=l�BE�Xk�6�z)tu�PZ6�5G��uy�qc��M���8|Ӕ�{?���qß݌��2tv��I�QRR�������9��\n%B��� �[Z`�6��J`�&j�\Zd��|)�>��=���X���0�SY�===x��0o�<�D\"���:�=\nG���ŋ������G�� ���+�!���Ձ�T\'F����-[�`�B����y ��Oc��*464��x$.Z�\Z��+����ʕkp��K׬ơ�1}�|4��aTU%�}`\\�(��_���}�m���R���� ������=\\�5x����[>�g�{ c�NBG{;*ˋ�m�FL�:���7nf̘!;��5��9�&�3׌\\�\n�]�ŋ/��͛7��/F}}�X�ɘ���f�}�;��#O�3��4��7�{���iӱd����KG��]q�Z�y���W��5�,G*�BG�/\0�e�F,^�\0�-X�|5~v���_�9>�-;�b��x���,�ĵ�\Z�}����� ����N�1FW\\������կ~�����˰s�A�^��磹�0~z�a�܅hniCAA���Z�or�@��@��]�\n��Jc�ȑ���Ē��9n�h������x����1��~�����{��^<��zT���W6��o�޽�Q]=��n��:q\nvv=z4���)<���X�r\r~~��8p� ��ڋ�V,GII!^۲��^}�y�����7�@eY �FU����a�eW��� @�q��v�Z��y/]\r\'�Fc�Alߺ���H�]�cH�h^]��}�����i�뢻}�;��\0\Z����I�Cr=�v���\0���e�q�c„ �����D^c�O����`����~�3f���};PUQ���6��E��������ӆw#�Jcʔ��������}��1�=�6��E�砽�\ru�mH�:�Z�X0g6�FcK+*�*��ؠr���0q�L�ٳK������I��ډc��\"��=c\n�T\'�8\"�~^RR\"�F��y���*`kU ���%�W����ٝ�k�\0�\\�ld�NfG\Z�Kk�i)�Ǝ\n\n��b�d#�I>iJ�D\"�UL(@c�~ R�����4 � S*��QI}���Zli�C̴���xVa��k$�(�k�*���;�O�\r��.���<�w`2�\'�7�CG�m׀���Ϣ`-��?�s\0=�I�;<��N�fr��W��Bk1�.S��BJ��)��dQX%�S\Z簚I�j \n ��N��(��1\"��~Zj2��T�,�Dd�Z�[����a�o�l�{ ;g�^S�5�ת}Y����޾ ���9��1z!��<F���Z��ꙝ���\0�\\�p���`�\n��)h5��I ����t�y;���c�GX�EF�$\\ߕ�@���H@C�MC�y �2w��/T \0���T��$��X�C�%�{�*�%��l��#Ơ�ǡ��<�a3P�uijX��+X���@T��\Z�)O����4�����a9����l6J������t�,b��T*]�\rs��}�w���\"I�E��b��뇳��o�\\�h�K/�$�D%�l���Y9x}�˘�hҮ���|�N/ҽi�s��̓�DZ�\Ztvub�����q�)l~c3�.]&�0��T�yy ��v����c��W�x\"�?��\\q�;��# ��$R�;/\'� f��c8pp?F�\r�q��%�2�R\" ��y�f̜>K�Z���^�������i%���QmB��/�\'���c�޽�6m�|G[��{n�@��95̿�x-�q1<LYM�T +,g��g�#h�6�Ywe��g�\\S�pfe��a*\n1\r�.�Cco��=W�%��\\rGx�JS������-0><^�趶6<��󢁦����Rt���T$n�������6m�,I����O���7n�u��MMؾm�\0��:ud\"��ǎ���Ų�2466\n(R�7s�L:tHe؞���\Z���jT��$:�:�������U�D���8��Ԉ#���%L_������4i�\\��1b�(Vض�b��8|�����!ɜ��Zq�7bϞ�8t�`(�3p�e� �3��P)�y:�@��y�Z�B��7a&1u)I�#^A�Ez�\Z2�Ӟ\0��x���\Z�t`�sI\0����i\nb���N,�; �_Q���e@��V��0)Zz*�>~�8v��)�E��Q��6���~�UH$�x�\'0bD9,�k4�v0a�DQS�\\�\n�E���$�=zT�MZ��s%��Q�555�8q�\\s�ܹԅ��طo�\\��#\0ӂ��ɍs��u)$�nڴ S�N��,\\���g{.8l����ɂ��r�8r�\0;�k��>���#�J���V��ʕ+q��!;V#�:D��98������s\0=(�8�V����-�ژ��\Z��U}�dfc -in� ���^l>\\��c���{�a���h6oۉw�Y�<�I� �j)�)�����y\0��@:$������rW�r�/yeG�\"A�;��P\0+���|�`J�$��_�0�����4���}N[��e17H�$!h��#kj��i�XG��Q��,�A��7mA�B-��R����Ј��a�r�T�(~�|}�\0�|}rh��6\rH��E*ӘP\Z������rX�b\08G�DyCNF_�V�\\k��\\X����w�����n��\'�?��ϣl�xT�\'0��DZJ@VeJ�loCH���u��e�\nAS��4��TF�1��e�)���DIs��gN9����\0\\ԩ��]���� �}pQ�D|�;��E\"�����(@� ��]O_W$�z�����P��k�F/\Z�{n�@�#�� � ���h&T\'K��i��5�I�2��/�&�.�A ����A\Z� �\n���A������\r)\'��ˮ�7�nK�\Z���lm\Z���Cʴ�t\0��f\Z�dmU �T��P�A)��!�0��v�Fɬ�v-Q=��`��{Q�q�\r�]\0\0 \0IDATԪ�`��hPI_G�.����QP��>ݮ袡���G-o��.�p�=�~�����)�q Ea^�Ɣb�i�����de�������/����I��1-��TJ�lcҰ�-1��-l�a�p{\'���a�+���?<���|���\Z���p���I���b%��W�L��8(\r@Qu��GJ�;�0Ѓ��u�Qj�e� y��/�\0� G���\"�\rO�DA�o\"#}l�`��\n\n�h���F�t�Yʙ]�K���!h��w�m���^NJ������ �o__��+E{f�P,` ����T����(R)t*sl��~��0��\'�\0p\"m�\"ۤ���y9���#���?ҘPC+��vNY�t�>^�{���(����)4vu������ӑ�2Dy�&�3U\n�s��38�t�˨��d �7Pc��U�]���/�G m9���Ϡ��Wr\0=l��\Z�}:����*ե(`�m�b[1q�Dz�d�:4�T-����W���۞�[^�=�� �1F-$��Q��P�:����X,ͮ�m�k�4�F^~�FVIQSVŦ嘑��V��,�DVzx���_����\Z}?ڇ��><�v`��RQ \\�!Q����x~����y���}�hBYG�����BA�X$bj��ĥ��`d~>L?8Z�����}��\'�aR��PG�VT��U2�l)#=����(���(��8n�U�=U��囄��.@��ƒ\r.Dt�ӟ��AL�f��U9w���\Z�F��߃<@G��}w$���Kh+�|�Q+:J���SN�c�/�9�v�\0z�=u�����xbg-��Z�DOG�^�w��{V.@���\"�yaY\"�eiq*����5����\0L/=��zף]��M&��:p��G-��Aڹ���2:h�x�z�X��K��x���O�l{{\'�󑌛�j;��˖ $�v �z�Pz�*�l���l�Wr���,�$�ۆZ�a��Dž��R�9��hԠ�����NI�xT���\r��,��\0z�=6��� �m��߿�]���������]����jɝ0������W�2��J��u֗~�Zg}�d�{:����)�USr9(g�ʺV_s ]�)jhB����b&R�><�D��M�(Jưj�EaXJ���;�A�������~�2� �T�@��0���U�*���Fq��Ŭwg�uHF�#���\\�8>�;��B�+}��>|vH��̡9�>�^;�w���H�[8gT�^6��l^>Jq���x�o��\Z�>� l�G��j|�/������sP @��>B��e_���i�@R���ymZQ�� @k�QDG\0x.�)��0�.�YlVyg�C��&��C�����y:��\n*�d&!�r�2����V��M���^)y㤤xf�ݫL%��[��-e�C? ǰm��hA���Q�L��HGF:N\Z��]r���\0[�(N� s���\r�)r\0}�{>T�6���G�J* ����3�����XQ��_S��_<�*�y��oB�Ӎ+��.T����\'��0_8gfS*�P�%�P���,��e�<����Дd8���L��L$��Ս��^$���h��ٳp��Q��x[�dU+�O\nxu�t#/���(..��Cf^./�}��*+�`�a�˨�%[{�d�fϚ���6x����&�\ZU���\"`;;v���3��҂�����cU(�����Mҋjǫ\Z�V�#|x�~dMӻm�f ��1i� :UY�h.�����m�6 G������MM�(++Aaa�$_���EUU����zc���sX��$m�l�q��q�V�G����#��Ĝ���}��ng0�N���>�E�6QY\\V*O:��\Z���T���#��y�.�O$���u���`r`%㰜^�b�/J��A�2}��Q�,vӀO���l�.q\r�lnnƘ1c���j5^T\\���n���ʂ���7Zf�^2/ee����-�7��f�g* 9.v�ލ��L�:E@���cǎ��J���#0�qTV����E����\Z�t� ��Ͼ��p���!q�|�M�� U�a�.C�+�\0��~�{h��w��Յ\r6`֬9����b�ڎ�6�\ZU-��Ǎ� Ÿq��-K�4��\n��\0M��z�#�\Z�.\0�r\0}6�\\h��*���<o� ]$m��H�8�k�F�\Z���,���r�� @swv�E�Ic�1WT�\"r��L\n��Pj�i�`R�j Z�A/�e��8�S[z�q mV ��w������T%g����s����(3��������P�ktw�����$��Z�bU�RR=r$�EAQ7��<�9;��P=�\"�J�� K��- -yJXYe�\0ZQQ�\n)������C((���3&�1r�(46뙙���1j�����k Ǽ�\'{���Qg�w�|S�b�iCgxOr���`܃\0�(P��9a%ڎ�\"Lٶko�>-\"�A�7٘a~7VĐ�o��*uPh\'����\n�*2N���-E�v�xV�24·�h9�X�zvv�)�~V�J?\';�e�:��䭐\0�@��b\ZVV7_Y ��|d�{���K��NWy�B�@z>Ր��5ۃ)yP\"ij�a�hA�O�iF�+��L�����$��eyhHQ�q�d�d\0}o�-�:�o� �� �E���԰=�ښ�N*�� �����|+3�qAp�4R�4JK�$Y:�>}\n�o݁�8��\0\nʊ/�G�u���&���� ɂ<$`��� .\0����T\0����>�\0�t}k�e�6�6ծ�j����(�sև��p :� �Ai��Lv<&t��4�⇐P��\'�]�@H���ʔ�eT�?��U�����wEJ�� xڂ�<K��R�B[��A�(����E�Y��Y�C̍얲���r\r�+�g� ��Ri���5��{\0�%�4\rFt q\0ӛ�׆\r����y���|�.SE�La��ǫ�����Յ�����s1�j$vm߁D2ɒb؉8̔#��E]������) �}��QZ&Y�e���2�h ��^�G�7 �l����tt�N���*1�{��N�5&��6���,��h!��3�M�s�|u�(@��4 ��P�}&{-c�+\r������Hi�I���!�G}��s�I-\\C���Y�%m\ng�3�)1}6�\'I>5Z��]t�\":N�9�����R����O���`X�p��*s\\dI��f:�B2�\'m������z����\\O�A>��\Z=���l�~*�&�ŝR4�f������+�R�<掶lxr���\Z�*g�$M\n�M�=�P�U�)S�5��i��;j� � ��㕩S]�G<�U�†������\0�y�iE��h9UŜ�_�Ž���?]?���Gl+L����<�*v=�JW�,wE/Jr��M� xa~jF���U*+�:^���S��H��*�;y҄!�Cr�;�O9���D��79An3e{E��v �L2���Fs�|He�����x����|��صk�|������+H�xdڏ7� ���0�8Ҏ#�͙9 �,\Z�q�{~�)��O��m��FO:d#��wv: �߈R7��B+Rjrb�X�Z\ZR\Z�Vv�o�RU|ΒZ\0E�W)�dL31~H�i�W-V@�������tIHp&P4����LqhR�/� \r��}�;Ȼ���?�jl��(�:jE�2���J���茀�\\��� 6�J :N};�LYkѾ2���,�B�j���1y_H��1����:$=�\0ݗ��X�F�H��h>$d��u�D����<a8hh�h�=k���k\'Q���O\Z���F*-.A��vx1ec��������ځ��#QSW�ޞ^,�?kC���?���g�Ԃ�p��<@�-_�P��H( yw����Hz�ʡ<�Ҙ�D\nIn�jgI�*����^<+w�/-��\\˅��t�6ꌵ�%�h+H���\0ͪ(��� ��I��D���D��_.�T(ˣ�C�wB�e�L)�K\0&����cU�%��=qw�9Ɲ�~���r}u����P����5��\0�)Q���]9+�Z:k�s�`��Q$�|��v<�We*`��r����:|@G�E���d!��=Y5C�7 �uw�;�����(�E���aiW�ܗI@]*��D$f�����z6J�d,Vׁ�$��v��l��x\"���\':�ݐ=������Jf�q�z����b��|Hyȳ��1cǢ��1������< �� ���c��)(**��]۹������qc��ЄX\"�xj�բ��a̛3S����w\\����p��~T�����������0�滕�xfNE]>��0P�C<F Z���Չ?<�(�Mo��ek/Gyy1�;�$p�Ё�زeV�X���v�0����s�?�K/��c����&��կ���oǜٳ�h�B�vۭ�c>����G?�1֬Y���RlۺE�~��_�� �a�Ś�c��p!������&��5�WI�ڎ�N��okG2�\'R\"_k<�|����X��*\r��?�D[�lQ!놉1���رZTVTa���C2#��g\n�\'�h��a�X����\r<��E6��U�pӢ��-,6���\0�g���\'S����}���[� ٺ�ܠ\n���,/��i��C��PG�J���������ܩU`�~�z���ɖ��X��߂�_|I\n�:ݽ(-���\'��G>v��I�s J�q�%kp��k��\0^{uJ\n���؄q�`�������w�\n�X���a����>s6��<���q�5���������߉�9���lt\\Qm���d?�яP^V�D^�w����T7:;ۥ`n[k6n|%�%YJ=4}+���LJ?� ���-[6#�͹�Hч��g�x &����������ˆ�x����YQ|���ؽk�,[&�[TR�͛w�\'Ջ�Kc��Qظq#fϞ#�3v�8XvL��^��\"�:�E���ݻw����칳�{�N�c����={���oaٲ�)y��\'N��ȿ�ꗇdF�E���3�����i�H����mmRQ5ɒ|n��7߃ΪiH:ݘ��.��2V� ��C���=)�3�:;�ئ��7;O9�C\'��k�+�C�Uȗђ��������뵌i@h2��[�� 5M�d��Y�����B�������˗�� 2���o����>L�2�v��ر�p�������_��C�� ���kp��\07�x6��A��1�j�����]�(-)����a��ehm���GqI�T�����9V�Ξ�U���PQ^�&l<�~=6�����G����%x���x�b,^�@@��;���)����\"!�,�K������.Cܶ�7��������M�3k6~����7o�,ihI�������/Ǻu�$�>f۸x�\Zl޲U�Æ�f��իVb��Xw�}\"[7f,���K�9�7g�l<���X�l9�mۊ�S�����ƎË/� �ڵ�c���b�/\\�ɼ|�޻�m�8e\n�{��3��� ��� @��O��8��ॽ�xe�6�\r�(/��t\n=^��3f`�Q���G���F\"�����͟�Y=Y}����ފ|��O��l���4ٓ8kc�� .�wU՜ɯJ�qp}*B������4����\Z0Y\n���`�\nu�l���r���SqМ��nϘ1C�W(C#��A)Y�,��(c���X]��*�(;*BN�ƀ���LI�6�}E.We���*(��D�&�,�n�Z�E�3��$�C]7��Z��sw�of\0˛_��O;)Q�$� ��nT��߼G�H�>U\"�l�t~/�w�5�#}�v�w�>L�>\rI귽0<�6o��z�H�cգ�VQ��6_�&��ܸzj��?��ʇd��E���2��2��.���kp`c��Ɉ��!\r I3��ֆ��Q�҆y+�V�*/�����./�����m���go�\r�3��R%F�fM��)�*I���w�\",a�<�oC*�y-���I��0��Ɔ�N���KGT�>_4_��I+�V�f��%�*xCI䢲�����>��&#A�Sm�p�:�� �\"G�zR��W�����{�540�Uq�v�w��v�5M��q�(U��c� �����I �\'�F�`\"��_�k�9rH�rH.z&\0-F��-�7�� ,�5�A\n���ZzP3�9�1�����\\w\0Z���V��G?B��a����g>\'EY��\n��5L�dl��_D2�r�ä��]y�u�J� �M��9_z�U%�L>�����\0�����c��9�@0��)R�Ie�E{g�*��c�l�Tٳ�[[;kY^�h,YJT�2IQ�H�D�h42\Z�_�~9m}�����\rt@���W�d��o���|�;�yIfq�N��0��x�Z�w\n�u��L��hx����Ę�Λ΀�\r�\n�����̀*�]Y�:th����fo8����B;��A0�;��T�U�Jh��k}�<�Ƕ���\\�qI�=��i������w����N�9�c�� �k?} �}�C874��}�m �+�c��Q��Y���}x{�.,X؁豽8u���}~�����پP�=��Aڹ�*ZN�3C-`u\Z˜Ut0&A��.drv�M%������r��ɨ��<�.�g�)��ܸ8�z�͖�����かh��Q���կ �.hM�G�[%#?y��\0̮2\'�X֘L?���� %^*��ʚO&1<n����,�q��M��J \\�V+ ��]�C�v�^Bh��X���2�V.�ժ�ZΦ�;::�����,�?x�5x��]���]x=D�]gv�7�������ZPy�\'������5���׿�����EKc�hΒ���Qd^ ɗ>3�f�jG;}�j�ّ�ِ��q�� ��~؝�i,j�F��%�SnM9�����XТPH�������� l,L��Un �a4%��hR�W�m��}���\n�����[�b�����Z*[�A��2�h�9�%Up�BZƗ֨&��ϞI9W�\\D�z y��\0m ڦM+�q վ�M�] �A��!e�4�[��J��=K���2.��r����!>�e�%��Γ�vT\"e�ʤ&�vTGz�l�AKm=^۹��#w�7�����x��bQ�B�E�?������T���g�Z�� �*O�\r���?k7��^�� =\n�`�����a��&T8�yz�L~ٗ�_D�|N\'c�/6�$���J�($����J�Wi�*�`l�GR� t+�cq�X��ĔrA�������G��ͺ*�$��*��\n�T�Ys d�)AO��Q��� ��|��aC:������:��3 �L �ٹ��@7K�N��A�{158�ncv.溢��P̢#I7lg��b2����u��|��1����RƆ/������`oȋ/�}].7`sÝ%A ��ݍ��0�fC%5����w�?�Tx��SjX�xGe ]癘�khW$��~�+�g�8���H�������2HbͶ������� Ȭ�l�U�Pcr��2Ïk��J*�(�:+ט�9�HJ�d]$�I�>{���-Y�L���\0�Y�|^\\�tI��,X ߓ�@��;�u��|���� 6e�h��Fʤ�}��IX��g?+�2W[��o ��e�‚�����\'����v�:�O����|\Z�����J&�.��V�Y��� �;��k-\\��҉|^���\r�ۍ+V��k��0;X(a����(]�pAڟ�f;���\rȒ�;�^�D�phD�� ���7M�\rے�O$p`�~�^�ZY�̴����p����rIv�Ž�9��9��ަ��I�%�v��/�Gssru���~l~$]~d�Y8\\�394F���\\���a9 ��;Q!�*\\M ��j�M�V��gf[��kJ�*�2-E�\\� M����qt�.�\\|A|�O�=�ڛ� �W�9�iY�*�tGɖz�{�z\0\n���|+W���ӧ��x��UC]=��\0���Ecc������l�R�Z��O*�J������O��=�v�܉��Nnr� ����cDŽZ���\0�}�Y)7��o������>1#�ҳ�2�yG���i̲��SOɽ�\Zp��9446\n��^�}�ݏ�����n����rOZ�[�����n|����������իV�_���?�9��`P�9�Jˢ�6��޻�L^az8ہ�����~<���ؼy���ڵk�_��r+\0\0 \0IDATB��Nz�z�^\"�`4�7��ѣ�����\Z�e�r�2._��G?�~�Qطw����p��G��r��z�\Z��� �p����?�ssr�)���ہ�N��s�����¿�?�AO26�X1��>����{���� ��z!��>�ǻ+�+���L�2��ӱ��W�W;�����z��\r��?���D�r˖�����B�F4�` +O ��\Z�٪�����S����|\\�eA�]�?��$[��T�N�d2-@�j�*�=�-���}����t�.]����gb��P�˗/ �3]���]�E5���\r���\n����Y���.�M��ư82J�: ������^mmp{}�U�2I���$�o|�_�}�����3\n�`���X�v�,J��\n���\'p�]w����b߾}�`����U\0zɒ%8{�����M������SQ����/�����PY]�@E9ҩ�$�|��_��m�08�I�ɤҢ�r��� ����?�{�Z�R2:�Ca������Hpfb��}�w�+��Sh��Q5���i|�7���Kj���������K��@[5YՁ�x������eRR�-��0թ ��s�S�>7��*Z�`�F�3���oa��u���P�-������B����Ox�/�5�>�k�8~�X\\2���MA!��+GL_V�@>qeP�bppX��[jZ��F�0x���V��^iA�w�#�szK�m=�g�o5L �ϭ��ot�XZ�Z����PhH\\-6��(��#\"���T�c\Z:��h���t!M������ܻw�Ň�lD�h��}A�2.zl�ߛ�f[�z�=<:��ߟ�QP��RN�*�\'P�FJD�TВ����ι�jfS�mhmn�����N �ut6��� ��{ѹp ���N�00\ZGY��jw��8| w�Z�{Vv¯9�4�mKe��o�����7:�K��5k�*�k�� 0�X�p��Y�\\A�^��1,o�E��#ؙyƩ�������^ςV>�ئ�{\"Z�w ��@-e��fg��&�\Z��k���^C\n����Z��ߦԖu�Y�f+}l���D��bc�]������uq���H+�w�Ţ�M=�)�f��&Xj}�b�����U�:��Gfv��f��&aI�y���tpRVD�N�HT����Vb��-�?�t�vn����.��ٷ!cEG+\Z��0 ���KHf�xt��ZP�JZcܦѷ���P:�*�������N~���Gj��eRR�GC�y��H����*�.xu00�3��X˳lVL�̶3\0�g_����8SZņ2���C.H�*�LkR�Տl��d���5sQ<W�TF���f:�,��X\'����@��gxʅ�T��u��Sy��l��U�5��+�Y��.h��5+^��rM���rg`s9��j�\\� ������d���4�xiM,Dc�m�I�͘\"AW{�����Dk����q���#�\0�Ξ�ɮ��rY�,�\\��;�Q�w�v�[O��U]i�ZT�4E� ���.Ne�܌����\r%8�䶟�457�8�}FG\\ �?<n7j�k�{�^�5������#X�x���N����z1<<���fU��z�^�lo�~�m,\\���}زy�5�T���}=���lˍ[B��b{��K��J�6�W;�j�Z)kpZ���I\\�p~�����x�ZYԩt�P���Y&�:�2Q��oC��2�S1& R \'q��\r��I�u�0�[-a#�/���R�3�J��\"�/�qS�`�3�� \Z���\0���u�͂��uNn*���d\0==0)Lb�:�l3�Ej�Tp:E͊e����y\\�,� ��,�VS�E�/+�hA���Z��ƺ��0�-N#XQ]�\0�r�J �0[0�R[j0TUT�Lw7��\0���\n�`�����O~���f5�ӁE�������sҧH�#�X �0�\Z�q����fx�����Z��ҹf�>���D\0m�10RȢ�+G:��d\r)��VAR����n�Q��b-�ɿ�h���#U�\r���Z⋶X�c�5W��Q�LN����CY��j����;�����RYk�����r��y,�� ���W��9��q����yNhNn��d29�ƀu�b�s���+W��+���� �HDT�26�-�ŋ=X�b�t�G<6�L.)���[��b��� V y��X�fM� [{Ě$P艧8ۋ ��*��ٜ�d ����0\"X�ɦ�U�xhH��� �(����5j��j�{<L�H�q�) ���RZiLg\n|H���1@[-F^��)։@����R�R��z�F�m?�etq�lZ�y��%-UY�)9�J~,�@p��:�֫Iؘ�]�0�n@� ���(j*����;�*�1aE�LEcU���� �X��*���\n�|�=T�X(�5g�t����U��lκ�Z����\Z�����%VUQ�htv��e mh�i���<N\'B�!���)��1455K��a�wZZ��P�Z�?��\r�G��̋�v7:n���VRfH[tgϟé�g���!�&�dq�\"���wQ���:�/�;2Y��6 U����F�i= H6!iZ .DY ���R3���z��06�/�DžD2�˧\n�ڳH%��̢#_:�TL33I�]w��8�22E�Gx�����\rkP���Y�v1� 0c���[��स>�����e8{{{dU�U`���\'O�:\\w�ilذ^���Ju21��9q�$�/W����vYx/\\8/��]�v��s���\\Te�����w��k�vjv�x<G�sN@3�����AA\n���, ���.n���O*��s��$�GGF�{Œ��V��t�.j�v!���Uڵ�ed:C\n�[h8&��Ёn�so�s� 0E�{����UTVV���J~ґ+�?�Յr��K-���79�F�}P,Ch$$c?�?����(:���`n����\\T^�uY�H�#X3K������s������w�}��\'��o������؄իVa`��J�M�M\"<Z�\Z�����\n�u��Ζ�a8Ckk6l� �H�U���M��N�&`�g��w$q��3Ϝ=������W��<�ħ��o���R�3>��I��ľ}зo߆�}ﻸ瞻�H���M��C����*��2�>��Ǟ={r��� ��������l �����M1\Z�?��31�s6��I�p���֯Eυs��K�[Y�ށAI09��t����L快*��j3��u�� h�>Sknu�B2a���RU�U�y��H�(�S2τ�����TЅ`&-�7leu)���I}=��n��^ùs���c�I2 ��U�v�\n?vee�4)�?8�mwlD2�Dx$���7ʘbq��}��P��c����|�TTV�����ơ�Q�܈�+��7w`�ֻ�&p��wKV�˜�b�S��6mg,h ��+ ��_o_^�5��6�ŗ^�?��\0rcc��l^}�|�#��];�x�\"1t�L��O_���� ��~��\" ��{�sX�����������Q̑����,螞���:�R���������L!�G����㩮S��hC*���/_�E���ՠ��~���嵵�#�:�.!���n|e�XtT&z]]�,\Z��w�JK��[��z5�3tSpQ�)��n�@\ZO ��/*�|=����ؠ!�Zy|���^l߾o�؅{�}PR��A/�++%���w`���8~�(�eX�l��$.\\�����x��ϋ��8�Ih}��X��]��.]��>ߜ6\\dYR:�3hA[�nƂVҠ�AB͍�hM��8z�|���?�SX�q۶m�����a5��˗c��}ؾ�n����������tU;v�- ��A�%{�os��6V���y�՝ ��qh� �F QE�������e�#U�p%� �ΐ��I�֘�N���E;��j���\0���`@��Sȅ���77\0m�l1_7�K�aw\n��wh ~��h�]�+�Rd)�C-E�ar��p���\Z���5 \"�cuy�#N��p�\n-��� �X����+�;��ؑ���w7q��ڋ�j���0e�@d���j��,�� ��K�v\0M�anX{�U�oa���;J�TAѲ�#\Z\Z\ZB��R��n�m�!�_��BK�]\r,}�٭򌍎y~!�w��1��7���@�܌-��Q\"�\\�,� 6���O)%?]:&0\0\'�b���m<��!�ӾP2��L\Z���kX`;ksMh�H�>h�� �9O���G�%�84M`��)�~\n\0n��M��*�e$Y�Π��(L���N@�m�pMG���\0�y Mk��_��T\n$�X��������d��]���cZ}�VZ��O��5�i���~Jq[X�Ì�3~@�S�3�:�*Wk�Y�\'�X�k*}��W�M�y�Z��Y2H���z5��+@RP���N���()����?�YZ��������̛�`;XivƓְ�5,�Dd<1��c��\rMV-&ʂV��X������wJ�r��\n��$}p���m��e%SEm�>�X������뀈l��oI�7�0��pXX�0��u��E��\"�m:ϐ��[f*�4Se��cjNd���5��ޘ��8�`�\0m��VI��\0h��+��v`�t�C��TpeIv+�y�]�>�&�0\0U��#��xR���|==�f����.A7��B��IT��BZ��l����U{,�:4F�F_A�q(s!��\04q�>k\Zh:�l������~��30=aM�\\C��V�t1�6��X)X%4�i`3�A�oF�U�_M$㾠��ƗU+��if��ڼ\Z\'3�0���k��ٴ��r�[�\0m|�c���lAO}\'qȸ�9��*f�eƓj^�yRV�JR�!��<IQ�ԸHSJ�aC.���V5rH��AW�X�=(WA:�X&:��~_�M�J5�*�3��:��B/��-�ޒ(ּ~G>���:��`)��,d`�dqyq�˅Mo0Ϭ��/� �;͗�m��y�>Rk�D\"�m��f%����-�oy6�H�>]F�wU��R3�v�Kðon��.h��*A�I��Mw1�&/�I~�ӞA,\Z��[!�N[�L6�[EK��HF��)�C���v�GF�\"��tӈ ��zH=�����Li�G��U�@l&��sVh�$o:%i��hL(p�{�@��$V��2��D>4�B͡Z��]��\r�e\'����YO����F���(﫫��]���.�鄸��{���-B�<cFy67\rE D��b�!s�#a�ʕx�.�Ez���Ҳ�,H���6��wf?)�<eV�GQ�S��SI���Gֲ���ǭ2?sY;\Z�JjvS��V�a�Ǣ1�{&��)_�6;A�Tp�X�ڲD��e?�|����΃43-�[�t=�&���wvcŊ�8��-�C�xQ_[�cG��u�RȦ�z�\\�AM]V�X�KgN��W^Ò�+�r�\Z��ի���q�9N2���v����>cѨX��7m@:�ķ��]l�r���+�Js�Nz�ˇcGa������[ذa���76���Kظi�$ʐ�>�n2oy䑼R�+���:QETⲒ�x���ݳG��N��\"E���\Z��w[�l���ލu�7�����E0�Jz���E�Eصs\'�n�@̹�0������ G�����:I�%(�䞧��.*��Ų�RY�B�a���H�,. \'Ouc�e������3L���;��K/�����8�~F�!��Nx�~����00؃@�\r�ͅ��jtw��g?��s)srS�-�1 �\0���P������iFp&������M�T3�rz�B�� �.k��Vj��4����C���&��dSG{#�x�UTUV���|��Ï�#TW�K��׍�dž^z�y����eA����s� P���\"�޺\0]���q�f��صkZ����\\\0�ŗ_��u�o�~�\\|����~\Z##1 ���������߿\"UL◯�H�%�2e啒NO���?�wx�}RфFJ][� �yTe\'�+�]����6�_���Q����:qv[Vh�$N���R�NI�?q�Ta�ܟ� N�<!�o���4V�\\���A455J�x4��o��_������zJ(O�\'g��_�-[����������(���o��`hh_��������D|kǎ]hjl���V�9Ӆ˗.⃿�a���+����G���<v�܏�|��H�B8y�0�Z��+����������`��t�ڀ��a�I�s�0q91�U�1ᙖ�x<h8;�*Ěu��\Z}���Q�V��~܊�3��z\0���~�<6oނ}��%��T��������������[o����キ˖��ƍ�p��Y�|�m�s���ƛHfذq#^}�e��w��G����N��7w��� ��Ѕ{�S�w/��*R��:�𡃲��۹s��祾G\Ze�e8w��X�tP�������&\"�jYbK\n�R�I4��*-���\\� �\'��K�~�6o�7P.R ���5�dG1:\Z����C,Z���(/ ��_]S���0~�w>�o���P�@�q�˫P_WˊTxw�!�Y�\Z]\'�#����Z,c..��x���+ ������;13qxh��H�2��� />�XlUU�®����?�C������vbݺ�8w� �#aTU֡��|�����aa�t�>���VD�)�������N��e���d��\'(�gO�>)��idd�O�0���Cqs;\\�5��(+L;�ڝ܊ }u�Pk�k���t ��\0q�}L��ʱ�����\r-��a�k��^t:�P�?�w,­V�$�(f�+�P==�N(�>�S����U�_T����1ơ�t∕�mtM�<?����|\0 @ �D�g�A+�� KUO�SSW���$E��ץo^s��hC)�4U����Ű�`����؜�h�’���%Z��-z��T�;\Zhi�䤢�\n�JAv�����^��\n���^������5�Z2��<#\"U,d��t���rN�rNn:]����CO� T+g�\"�,+��n�ą!4.��L^��\0�St�iY����􉰾�#�&Ӝ\r�Y���Y�����*֐br�_e�O�]:��^��j�4���\'��R H�K�j��� |�(ӭ�\r\"�;�J�*���$�Y&��`c6#Ş丬�_����c���\'�H+@�)�Q�|����t�� �Һ�c��N\n�����$���6� �� <r1!(��b(똦���ZM�*�t� ���Jr��o(�|&\n���Z��T�$����D�A[q�U ��#��J\"����O���6Ӄ�*����f^*��>���GX8���W%XI�R�\r�к4ǜErDã(���&��-r�Dz�Š\'@��h\'��]R�R\0�F P Yf\n|�`�r�B\'V�U�_,U�9-$�6U�c�# Wp1����9����:Z�B���$.��B��C�\0�X�f��`1�S�QH������h������V��e�R5%2��$��ia-.@zQ˫�VV�zC�S��祕Y���m�$(�?���t��0L �9�8X��@�t��G���m����$�̉%2\'7�Q Z� �J�A��$>g/v��\'��lY��n��h W��as��RW��Î����.������jֈ��8��;n���:/S ��L� ic�L���3���� ǴnR�L���kd�\0�L�v��lR�� .�R��@��u8�U�]e�[���\Z���2��ȊZ�g�v�ˀ���v�\\ �6(WK��9��,�\Zr�@t9��P�㰩lDq{ ���Ǝ��-o)ʠvbɋn���r\'��J\0��?igY,�\nQ����6��/�$i�̪�J�W<v���,�-ms2���3\n�z(� �1�m|~��[���8�$����8ž#�X�r��4��8�՝mXV]7/\"��[�`1x�*�=~�X�v|g�3�Z@Hk�����U��F�,-n��-�~�=#��x(t\rCZ��ԕ!@������u8h� P����#~� rX���p!�I(pr8�J+����8���45&���M&�-+@�|��K�M&���.\0UŠ.\n��%�L- �Ud�i��yM��m\\@��@�\r��<m3�@9���m��P�ٕ����ޒV��ڣ�?��nc���J&U���� d�O\\xѪ�]�� 3 ɡB�\0\0 \0IDAT�����ҋ��B]M���ɜ�tf�+���(�N!���b��\nd��{(�-���2�񫻰i�2<��_����܎ C#���E�&�C�R��݊�g���h�{��)��H����lB�3%X���ȵ��b��2����`�>#[z��v�����Z��D.��s��J.��m6I�*��F6�1+֤v�����d�~1�uo�A�S����LQs�:=p��L�EF�^�hPs� �X����v3��&�s^����?���Kڈ��}�z��ԉ�\\t�O��ݍX���H���C����M-��N3�G��Ƅ�`)mm�+2~r�4�\\\ru�s��srәh��Ǝ�HG�Lg������f�n��qp��v�u�\Zkk����=,\0pׇ>Gu5���.8$G�t�[��hEW9�9Uj4�|\Zݘ�75˃�2��6�54����\"u��E��ԁ����(Z;����o��*\\.7R�/^���gQ^V��.����>,\\��HT�qw�s7Μ�B�@�v�g`P,XV$�.Wقǎ�n��@?j�*p����w�X�!T\n��4��e @k��ؘ�\\�Q��d�P����{�2�|�U��5����۸�-�\Z�…�x�\":�U�V������B�;t��nߊ��N|��_��}� ���b��eX�z\r����;��O<������{�q�p��Q)���?$�:�c9B<GcS\"Ѹ��I�۴a-:,Y��<��y� /^@u5�^2hmm���\'�ٱ\0D[�B��*�x��E( ���s�!���\0�]�\'��ڈ��7� V��Mo��$R�XaN�>7;�F�8�u�uuhi�!ALb���%�x5mo��;�+����V��o�C�tk����w�n�b��/~���Ȧ��������X-$��,�c�Q�P�i)�w/�/�ͱqa6�bS��a�]Yt|���� �)�<h&y�_dtD\0��S��?�w��/~��m��Sp�}xk����g>�o��x,���׭Ƴ��)�x�I��k�\00�qkj�qh�<����W���ؼy3�>�%K����>� ��zS����\'N�ƣx?z/]@,�2c� G�e�z\\8w-�� ���;u*�rS�~��b Z��ɉ6��J;�&%ƾ����U+�%0�(G\Z\n\r\n@�}��b �:uJ��pxՕ52fΟ?�\'��I�=�-���D�T��(�;c�{�b���ط��3&v.Ƌ/����*�����={��?�K�/�s�B<����a�:��N���a�;�O��OR{4���`Æ�8�� :v���/��+TWW��c)�z��>��K�dq�$�l�B��o�~���=���N��_��V�\Z�sr��������\'�E,�Σ/#��#k��[148� ��Жu�3iߤ:����\na�+[E[&߂�>$|Krm#�i\n��>}��f5F`]�9-g���F;f|A(�-�� �J�?É��}���O~, }ꓸ<��\'�� ��a�fn�͏���$�P��������҂A��r�U{k���%�i*�Hu�s���Kk�f��Uo>��� ����w�٠t ��or!�F���5\Z�,���j�j���|Vf�}��`���Uwh5���=��^} �L��ZZ�q��|�����\r�6�����ӿ�)|��/>��Oa�;�ϕ`��ގ��~ɜ����tu�=�`$�~\Z˖/�P($.�-[�H咞�幘*=:ʤ�J��7���ǘ������c�-�V5�M\\/��8(���_.���;wH �����?�\r��M/]�$�km[�{�G��>�9���+DFF�t�2|�{�ã����z�/\\���y���C=�o|��`j�}�݇cǎ��� �?C�!�u�]غy���S��}��!Am򮓧�������[�������Ɉmni�k�����vY֮]������$$��/��e�~�c��)9���9��t\0Z|s���������v�oY9.�I�����X׀G�)��j�)|��\0��i�b�| �u�B+����R!��K1��!�릕kk\'�F (�O��\"�D3��ԵhT&�����O|��ξv⬐�]LU����bɢ6t��U������V*��� ��ŏ���1|N .�l�}T��;$UC��P&�C�/!Q�K:!3�(��[ �$ydd,p���y��f��g��6�j���8Է=�\"+Y3�϶%_�.Xz�����8d��9�7A�{@6 ���4�\"Ro*�(�A��\'�1E��ZDE;YX���\r2����ee������ ʙ~*.�1RXYJZ��CmYK�\"��4���N&��?w��$T�n;����bI��j>9�����Z���}mt�2�X�����5�Y�2��H���F]}�+�ӑT�L��%��f\nE�\\�9)Ϣ T3�ȸ�T���B��t���$��\n���2ȉ�B؊H�x��)Tַ��ӿ@�ӇT4�~�ch߰\n�\r�h�{�EZ�Eb���z� /��%Kl��� o�{\r�r-�r!�v���-�Л9UEi��1�#��[�-�F8�8�̀�dSZ��V$�iMi�mn\\������n���������Xi��q��T�(���Q%�\n������ �QY^J����\n�9�Ja> �����(�p��=8��(6߱\rk�mAo�l[� T]q�R;����1�K\"�C�6@[���\rL��\r`H].�t6w� �� �v����w\"n��`����)ma�ho���M���\"JJ�T1I��`��\rՎ�@��U����Y��-EfIT1Y{y�6�\'�ɩ{�¢�x�y՗*�O`y\0��i\n���H^�cR\0Y�\\`5���@Z�ݔӒ �V��+�6�(�o���@eZ�@�F��e��|sm�H�:�\'J�U�&UB�҆R��\"K\\|���P_;��4!dL�9���@딙���h�\Z�s5���$�;Ӄ@]=�˟�9�Y$�)<���ENJ%hn�C�\0tN� c.%�l�\'~�1G��z9@U\r6\r��珖@��M����A���Z}��X�W�RF�������N��[\'\rWV���٬qf�Q�4�F�F� �mWd&�Y� �խ2���L����OS�2�l����8���.Tx���W�\'2�������/��2�k |9ȏ\"�RL��Cb:.,��B���Z߅�`ͦ4����� ʄ��h��.����D*-�H �D�E(���4)a*Sπ�YxM��;U��4>E�3 n�d�`(j��J���F���L�A���I)|v���\Z�\r̽�s ;Ӿ�Yxt�a��N��Kr<zݪ��,���&[�}�E��>�L��L � ��B������E�\\w�6)�ked46�X�EG��-��4�C�0Ka�|��ٍچ<���R�{u[+��:[N�?�n�D�p�t���QM�́#�8:�{���i_� �k+ٸ:�Qb.���B��f�Z�W�.r2����L�bp�v�ك��j�]����I�xF�HnW@�ѩ\\\n�-��hj�n��X�`S�β��W4dT�m���B\0 ���n�\r�D\n����\rN�\r�-�Qf<J�^}tc��>�U�r��5\Z��UK����� WV.8[���Q\'�jU�V����ֶ�>��\"oB��p� \0d�7`��hkI������U��t@��H��b�K���6sN�0 ��;���w#�Sؕ�^��tC^��%_&L��u�2�[ǔ�2t�%��&�%�5!�bk���*��[H�7��9,X�:�!4Q3O��9���I[��@�{%�\0�O1�2�$\"Y��������~�\Z� ��� xd�&Թ<�TUe��s��)$�a���R��H��^e�Q�����5�F��������iEKKk �r<���1^�ppQ���>�1��X��X�œ��o>��3g���W�/� ����������E{#iˢ�s���2b&bV�L��U����<�4\'�c����ȁ�a� ��Ȯ]�����[���?��]]�o�:xr\0CY�W�\\ld��j{*��`��&����Nn���ae͊�G�Ћ�i��\\�\n�֝�t���3\0m,ZsOB!�u�X-hs/q�����)�lV�Y�\r�`m\\,ƨ�[��.��y��!1�ij�,�ɼsA�$��܃. �����B���X����w�F�uq3�dv(��ag0x��g�����sr��\0��g6�ٴjg֑�&�g0�¡�]h�����\Z8��:Z���\'�(��\"���`d��\"���)�i\nV��A���K�[��:!A���ձA���x?gF\n\"i=z�Q�2-���ƿGk����)�Y�^���P���II���r�& 3}v�bK;���\n�Hzp�-�MB����uT_o����\0/ft�Im�@�]单�i��Ω� �0Ri�s�4\Z���x0�����#��}���4J���nҫB�M�5N��V��Z����j�ET_��hKO�$���q;�],t0%�Nփ�ͪ��2zeH �T61���V���Pl=o��UkR�U��qm�<��<��� XʳjQ\"���ʿ����,)uS��,64k��p4Ɩ)\0m���f��\0��;�wyfIq�<����a�w˸�l�D���ő_8-���E�,P%���E���\"����0��!)�\\G �c(�xt�wjG�Ւ�)�#a���\'� ��z �|��P�D��l�� �����3*X�j���rY�1%���PȰڋ^(�r3�J�[� j��K4rP[҉9� ��<������q��1TVV\"�H\"�f,4��.]*T�x�@o��mG4:��`�\0Gm]Dl�s0� �����hxHyyy�<�O_7���懔0Z��V��N�H*d � \'��+��J�7-^,P�� l��s�ЇT*\'d��5�t:D�H�0b)ܳ��ڂQ꓾�]����vW�B��2�>�-I .\\DYY9z����q���ǎ��⥋q��%,Z�gϞGmm�k���s ���… ��[SS�7�x�6m�v%u�T0�캺����V���5.���51Q#��\Z�$�e�\r\r���&hRGYCWi�L�� �\0[4=���Z\\�2�U�W����pHxܽ�W��b�\n���Q_� ��]�Ocيeh_І��A\\�\"�\n}=�hkk��3ݨ��E�?��]�P�؀��~�L~a[�Y���F���̙3²�����Y\\�T\Z���P�d���\0�kk044$\"���urVaa�w!�����������@Od��ť���\'����S\Z��Oq�\\\na;�F>d\"I���4Ћ�ǎ���� ��~��3m Z�|6��]��`�͖р&\'O�b:���3雤e��+�w���BHf�8z���\\�tdž����IJ�������uO�5�c9)Z����5dVvl_&N\\N|f_�Y\r5��PG�t��eDԼ����(���<dF\\\\�}�T2 ���X VU�a��@3��xp���ᢦ� �h˓�r� ��<^�����>�E�R����N�ŋ�b�&E�;.b�J6����Lfc�.�j��%�񹥭�G��Z��Y�W��B���*��g�ں\0C ���Ԁ��C�CH$҈\'��~�v;rT�Eh�^��d�=�,��G�:ۋ��������G� /����i���~ܿ����իe���%UE�����:�N�doo��\r�c����0yL�p©f������ 8���5U��7�Ca�]�.^8�GyFFB8|��\0&�#��a��8|�(>���@$<*%��eAy�� �����Mq��9�44!\Z���� ���<�g�}V\0����{ �<�< 7�*߇ \Z��������:݅\'�� ���o�����}�� F�a<��I�ƍ���?�֭۰c�[�����J˾}��� �,��f�\ZY kkK,��jB@g��q��:z �+Q ���w��uMH�Rp<���E�p:\Zt��e�JWl���U�R��Xs�x<)�J�TL���T����\"�{���\"�\0�,�\\�\0r/v�\'~�j8���!1\Z#�nj.��yŮb�(v�X-i��������>5���!�4��|3r�����Bo�i�@���1�;}M�GR[�+Wz���B��h�S�+184?��\n��7>���\0B������p�d7���菄Q]V��2?6o^�W^~QvI��!��v�ut��ŋ( x��{���3���ք֖&�\\�R;��?u�5�}�LT��(\04w\r/��2z���t�r5jl6�\\�O���X�ڎ��AlX����ֹT,���J ^��_z�ԧ��D\0������9~��Xn�;[�w%���W�&7��{��w�DmM=�>/�����q�� 457I���L(�x�����W�C�W!)\ZkY̸s���~���^��՝;w��c������#�B����j!wgϝ��?�qq��^�\"%�v�| �?�8�����\n)\\��Y�>��?�/� ��KVly���żb�r�|jq߻�=)y���|OR�{���?�G�򗿌\'�|G�6���Ų��eAضm��O_��,�$�ց��N465�\"���C,l�w�ҥhjlBm}�h�u�[Y�2K��4�K�QUU�Î��^<�X��1T7֊?��UԂe�`p`\0�-͂\n�t ��] vV_o�!y�_���L%���?j����������K����j�?�C���˗���/�l<��Y�_[/���\n��5�e\r�Xϳ�������ީQ��U4r&R���\'��Չ\nc���\"3Ę��g�����j���d f��%$�_\":\Z�@4���2Ć��Վ��A$h%��(��`K�,���딲SY$�Y,���@ue�dBv�bⱈ�`���Ȃj]�\n/�~#@d��(t��uw���E�q���QʂnDF� �p��,^��N�Eu]\r�k*���bhx�u\r�����Ƴ�>�/�|+�N �d\".5��w#��Ap�BE*]�}���ioW.3F��r���L%�8�Յ��f؝.�����ʪr�M2G��<�u_S]�PhD�.�.�ŒeK�������.^��<.��a�W��ۋϣ��]2�\'���100(�Š�ܭ�}��M׊ϣ�wc\rM�r����J&� M-��vܙ�^��8�b�WȻ0��:�S�{����L��ol��xݜ�T�I�8��R.+��� �wG� �c��N �K&\\&����۶oEϕ+�t�2R��\0���m�\"א̬�[C�I�\'mq��\Z��y㖈s�*O��|.���}�����*��9DSI���p�C�7�謭�\nlh2�N(��Z�k�d�\0���-j�Je;�ZH|��a���G�r\\UT���\Zl�T�Nw�\\�\nb��e4zsY��G�]�t9�A\Z�x~OPh����+�L����d዆�⦲3@�w(,U���a�<���挄����*�uBvW�ƀ�ł�@�]%QB�gL�P�ϹlN�W9�d֪(�rI�HIatiYQ2}9p ��X�f7be��:��� �\nR>J*���7�ɚ�.�+�Y.L�ⅻx ]˂V�nX2��\'����VL���\0�+��\r��A�)LRBMb j��-��z�ō\'�e��|&�I��bØ��U{`��P�亅���;�;�3�ƢN6����wk�m�eR����: � �d<����bq0sb�/I�j&���~P��<��F�*�QUeՔ8��=� +��5YC3��,���\r�E��|���A��>a|�>�ʦz4�W���\\��\raO)��9a�eO�\'h�q�6;����d���4\'j�7� ��o��?�G4�*�������c�mس�]�S�XG��s.�?���*}�,e-��� 3���و�+M�k����z4���@�n��cF��ۙmˉ�g�ߛ�e��s�V|�Z�$��H����@��&��X&E�\'��C�\n���a�\Z�D�N�����~]����pk�/���+�G�9�B�|\r-�_La��3��c͂�@Y��&�)T��#42�tJY��tJ\\}�}\"�ÿ�R���Dh$,@Nw\0k�Lд���@c�[ٲ��@�a3N�M�І�h�N\'s͛�3�LB���ܳ�����D� �8Ox�-��4���;��l����� o4�������\'��Y�/����<�F�l�B�oi����LV\"�>��p����kY�\0\0 \0IDATJ�S����Ǻ��\r\n�1�w����J%O8���)X�\"$/c�P �K��O�3�}��3[�8}+��ɏ�]3�!4�K_��9��S�A�M�-�$��F &���$�ಲ\rf��� �T#�R=W^L���\'�\'�r�R3 ��J��C2Gt4���/�D���7*87;n��h��]�8kk�\0��+���d�&�j)�}��ئ4��$�a3���G����V^���%������uR[�f�2�M ��ʬ>��)�=ֲ���o�h\"��mHf38{�l�|.��\\c���VO�-�Ҧ��<W�� �Q�箼��g����BW-�Y�!��`���Xk�r��)���$@O�Zs�ԓ��x��I�|X�AO��� mP� ÿ��A �|�A|���!�\"�����Z~ *Si ����/Z��p޲J�(�Bw�Yl��ܹe��F��C2��1�$X\'��V��[��\n�;�i�����5K�F��׳���{�0��F�r�1���=g�&7�J\0=�γn�\rh3���Q��w-��4o�N�~PI��o��J�\\ђlR�R*\Z����q*��#�(+}]�s���#��������\'�{��V�qa������k\n��it�D>�i\\�t�M�%��f��%;�\\YZ��Y^Ӽ՘Ӕ�KA�<4�⟁�2Isn�oąs���yD瘉u�[F$�`���H��;��Q�P�`0 �����? �̚2�JփU4����n*�H �gbX��1K-P�i6�x\0�l ���ٰ.��C�\"b��칳8t�\Z� O���\r��� AV�pٝ�X؉#G����\Z�}}py���o@�\0R�46߱e_�f�ͶZT��i�@#��YWvn���4�ƴO+Y��n�[��@�P�� b�L v�\0Z�eR�� � �����>�J�M�D%5���7��@�q�vU��f�\rͅ��ĥ�E��ƚ����w��@f�yo�˔\0����)�d ���\\Wl\r �[��S�m�,H�V� @ka�|\n����B��Z\r�D��$�dk�S�U:�Hd�KX�P�� ����${R˒�ZƭcZh����k>�^���;s�l%���v/��jW̅��[���T�x��D�\\������̑N���HK\00���\nUQ�0CD� ��c�9�����e�>�9�<��g���W.�JE���g��n���\0�&���#�\0z��P���O��&}�14A�9FB(��AT��&In��-E*�!��!�������V�>�\"�\"�4nk�Q�jN���Omu����S�ět���K\0=O;f��3��h*�)�V+��1_�\0������&����h�(�)�E�4�$lp��v�f�@�*3#�,.�Kံ�j)���N�R\0Sjct��\0z��g�r7Y �\0z�;�>h|b3�k�����p��yr�Enөt��c�L���|T~���q$YS�����@<���x�7�C.gǡC{���Mh��(��\0�p����M�z�Or3Y��o�ޛ�g/� �kq�� _~Z��.�w�3E`�m틮tA\\��o�s�ꋄ��(Frv�ܻ��]��_}.��6����6,[�*V��ʂf�()!%b��z��@�t]6�\\�nbf�1M�d���u��c20H��\Z�Ŵ�Fh_(}�5�Z�vUN՞�!�t�Ce}-����pb�^)�f�v����hil@{0(��<)����\0=����N*���g���%���&@��`\\3|�)_n<�l��M���]����*5l��-�:3*��<uVʁ����\rRCCR��_[��ѓR{maY�TyQ�E��Z�qʯ}S�P蛲�f��K\0=����hZ������^�n 鋾�6� �h�?������l�@(kC�� ��[�F���\'>�$<�ehknBK0��6:L�p�rW�t�*{�L��ަ72�J\0}#�wk�[��W4?�L�3������:�>@����yv���FV�jz�#�����إP&� ���\Z\r��e\0\'�p�XȶP�M��?��.c.W��lݛ��%���~�UJ:����������C�^G�:4;�jU�YE�Ӆ9%pHn��#qJ�݈\r���o�E?�h�r�!臏|�dLva���\r_Y�X�L�!W�,(�Q�fF�.V�h�[��@�p�RK���C�珕͒�F�zZ�B�h[�9��.���tŽ�njf�$�Ix�Nx%c����H������v(��d&��ɍ�y �o��n�sK\0=��Jp���~���1@�`!�4$�d�I5�����riWN��<�\'N�DOo���,FG\"pz�H��ضu3�*��gs����X\\\n���22̘)?�|��|%��I:�7��%���Ʀ�\0���&��gU�\r8�nG� ]3V�ݤ�E�p+�_�l��#�I�鰋F���^dv�~\\��o� AM�����<\'�.mˁ����s\Z�S^�J��[�K\0=�Qw�X�t�U�ݒ<a�s2�� ��J_�|iĈ�r�Y<��& @S&�~h����|��a>�O�.T&!d��ui�gi]K�&�ؐN��^i�~��5B�\r1�E�#����u H[hخԤ6�@)rkI�7�]����K��3/jlYPU�G�)���)�,4�M~�@O�\'�LqN���������L��<Hc��� lZ�N�ir-��_��L?���� ĕ�J~��p؜�}GG�(Y ���Y2�۸q�. ����j�j���\0�g�t��EF/ Z0ʚ�HmS�!�ن�@Of��^ǔ\0z&����L\n�x ^�88�m��*Cڪ�YPȟ��ڵ�\0M>�x�&\n��������\09�V_�r%���}�,�eR� ��B!��T������t� :!���C�A��yV��x_�o @�r\"U�\Z�ͬ�@Om��G�\0z�^.�t�5|�u�l\Z�XZв��ZZO���m�l�W�b��m�����~=���؊5�9�0\0l���]a}���������Z7�׽^�n1�u<�r^qg�?����/����V>�����կ?Gޚ��>�� \Z����I��]���u�f՜��6w����J׃��2^t�5����{����ɋ}�VP�{�>f+��7ϧ�C���ϵ���-�G����OK�J��� \ZL4�&�} �\'�R��q%�������@Z�W)�0������a� +Xm�MB�:7�mX=�,|oB��d�`�$ҫ�.+8��/�7�}���Z����6\r�e�`\"�룸����vDy��EcdL��^��г0�o�K�\0z�h��x���ܔe��r\"�O��Ck-K†�=�b���~y��e7V(}����y�Y?�<7}�� Z�|��j��jk�W|�Yq�[wL���.,�3�\"%������W�)����m\0�U�sY���fD6�h$�ϣ\0�40��3u���\'> ��T힌�c��7�\'��iE�GmD�H#��>�?�^��ɎT�r[��\rR�LI��lQ�J\0=˃�&�| ���i��� ✍�Dž�6:\Z��<^�S�I0Ƴ��:���� �=��� �̖t~=$�Z\':���6\0-��M�C�y_�h��g��Q���7��K\0=A���Q�?t)l���T�3�L�N�\'�3F ��@eY@d4�r���hIM�6��7{~�� J#�d��9��n�\\�&u�t�t�s�cp�o����^V^&�)�%�*�žUq5�UX=�qD ���h��)%��@kh5\0M��O��0�.������D*FmU%�4�k��%�.e���S@�\\�Y2ɦ9x� ����D��wRM�a�qZq��z�q�����T%\'H{=>�����l��Q靪�2x�Ew���@����V�I�b>�o��OI\r7n��\n����X�| ��_����!<���hZЌŝ�h(+^2�b�i>}��I�;4?��EO\n{\'u�̵���b\n-�L:�D\"&�N�v���$�� � ZdI=w�2��]��G�<��)�l���}�@O����Y,���Y9�9y���I�_���/�t������?�3T5�aEeP\0�`��1��I<�o�Ce#�b��܊�D|/��E��!���WGNci[�zW��.Z����Ep�y��d�����g�LmoT���0�)nV艺I��j�� 2�3���d��m� a(�@ϡw�o.w�� >�\'���:,�,g�p�Ū����D�u�שּ\'hjcQ��^s>��g��H�SD:V!��\"���î- �;|�^��m�h�*‡h[g�J��K\0=����z�@O�]\Z�U�m2�I��&�*��I�����\Z�s ~��/p��Y<�O �ˢ����\0��vt���<sAK��Bjjp�3h[Oԍ�\\�Č6�0 ���]D.<��q��A���5k��G?�@*�emc\0Zxyf�� % z��x�W��VЊ�,\0m�dS��ls\"\n���/��u�W���??�\nok.@@.C���Ql�����\\R��1ߞu&��sx�4Ã6�9~��~x�!��� kK���~Yo-ݶ\Z~�\n�Xa> I?�\rti �g�Go�k�\0z��Y����M��?Kݽd\Z\'/�]Sm-�|NTz�p ?K��r��!�zҏ>��.Éfb��ҥ�p�yv��<KH�nC�C*ڀw�.I��#�DږE����Ć�Fxl�׮3D�./w�Y�y6<���\0zҝ��Q��tN,�D4�Ӄ��\r8l�|�M����w�t��@!ŘA%\"���gk��5�@c\n89y���^cqz��UEm�� ��o�,.�\"��@�aGg]-ڂ^��vqU]��C���Ӕ\0zz�v+�Uhݻ�=b��U#�$�к�K�� ������p��q ��UU��Q�� 1�F.cCcc��@����)����e}�bj�D|��������/l�biЛ���X�b��S9dr)��B�R�]vC��ln�NYX�B�pؑ�d���3�*�l����%��\0��ʱ*oQC��I��X/Ϟ�\"44�D*�H$�t&�d\"����׋\n����a��ڐ����}!|v�����҂0`H˵X�g2�r�1 ͢��B~��m��X4f�= �d36<x#�ax=$�i��Wb�o\0�֬��#����᰻�E�<�����%KD�c&tKJ\0=��{+\\����\"��*h̦klj��l2�T��������\Z�T� ��gΜE}M5�r!�L���ѸT��D���� ��OqZ]���*�]U#)=�3����\0���x���K�\n�g&�ʼn��7�}�lJ�p�zg7��N7r;b�Qxl.�Y�\Z]g���ep�� ��(�-Y*��΅����@�4���l�[��@[,hN,�dj�esv�=.�66���3������p����ΞA4���Fd4�{�#��D��x�\"�˫K�M�PUQ�D,�Tl�uU��cX�fv��#�KK��c>K>�Z�R�q�J�������b�U���%�[`b���L���6D�iq[�#Qx]^�\Z:ld�9$�˒���u�\r�\Z&��=��.�-0�f�J\0]�� 0�bd���A>�N��w9�\Z\0����N��nǕ�˨��?f6��:Ɋ֙�T�&�œia�ɑ��������W��R�ħ˥\00g�m/**ʵumS�k7��ʸ)ֱ�;P � ��SS��|;V�ש�ͤp�� ؜ntw�@G{;z.���<���J��@��|^,^�\'�_j�#r�%��o�{�?O ���p�V� t-0qC�gg�I���l.��ÆH4��+���E��ZM� rHƒp��v �N��x���7����g�%m��CQ�~ ]�� �k-F\"Q�w8��X0t�)`pՂ�W5�?G[�,z�ģ�H���(�+����~��Q8\\n�S6�<d�Y���(9V��,]V��ӭ�ʓ�\0z��,@����۵�Ļl.�X<��?�@�ה�J�J\0���5��ʏk��W����\\1e��,�Htn�.;�tk����+�d�-�E�Y�@��N{V�>�S��7��j��:��7�V���r\"K.��vح| �o����Ɉ>]��_����Ӥ����\\�o7�1 ꐈ���\r�����@6��͞����Uظ��qY؄��.T\'Qp�A|vA��s�O-��w��{�@�@�_,}��3�6���3��uf�|lk�/j��2P���V��f�\"�M�A�k�iV�֌�=�KF1�Gq��9�-�yj@�F{N�%��Jk�ǖ\0z��l�US;����4cm�E(^36���-Z�f��`�q��&$�I��t�&�n̪dR�=J�D���E1;gqm�\0z�QW�iN�[��@O�s��L���?O���1LF�yS�����S?MkQ�;���o00J9!Zї�T��Kp�0��f�#��ݘҺZ�O�&��^���%�.���(�4DŽ��鮠�,�4 �6�#m� ]QQ1�\'���M\n-bBm6��{1���h\0G�����?��ÛW#�I�&�Z�B\n�*\0WUc���@|� g�I\'y�@O��n��J\0=��6Y###�F���Uu2����`!ThI�7�O������9��:�=��\0Hp)p�EK(ٔl%�e+eI��8N��J*��_�7W�γ+? )���,���R*.W�E�hI%�����H�@�\0�0Kw��{��C�h\0���O�(\03����Ν�Ϝ{����κx�Nh����N��G�aC��Ц��iܸ1�Ï�C��5Jt���R5�u$�.�*��)B�!���/*���f,�� C��$�B͈S8�\\k\r�/y�����%t�T��ٱqy���[���R�<��~�ylݶ����**���������t]OM����n��]��^�N��B��U4�]�^Fm�e�ax�L\0Y�\n_���N]f�2}�$ӊ����N\\��L_����C�J ������lڹ\rۺ�脃�J�I�o)��h�����C-�X\r�^����G�!VC�a/g�?I��d C�a���q���-BEк � �\'��6Y���Sx�������=x�O��[6bs� i�#+�Ʌ�:a�P��S� A�Rݦ_�!�Y�f��m^#�ӂ��H��h��C�!��p�f�I\'|���\0�߉3@�Bi����I�~�IL��ƣm�@�G96�6`��}g�*q��iB�q�v�{���}�\nvRI��f���#/F���Mq�����ʍ�R�U�� س)AEժlݸ�\r��a�qpj|\'O_�S,a۶������KSS3�w�N��nfn6�-�V�X%N�9M�1���U����^-�\ZRe���7֥���a� ˌ�֊�Q~·�`�\'=�g�>���Ӆ\"���T��K�������TRUzslK��i&��<V�ӵ��Q�]>�B����)�\n������v�Z6��n��i�3*$H\\��FV!v�S�Vמ_A��Zv\\�t �c���Їٹy�f����Ҫ�2>����-t�d�Y�U3�\\��� )|�7��B��H!���a��@:$�Aar\nə�q�vT�J\\ݎ�I���n�eY�WS���T�#G��\"��Ų��:�y3Ν:�m۶�bQ���\n�I�Рo�b�dL�; 1�M���u�� A�\n���+B7A\"!�09�ك��?VC� ��=e}\Z+�^�q��!��=�p@�N�-��8�$L��-�赘�/\"�L)R6\rT��c��U�b������j��t<V�~X��+ A�Ԥ!KZ�<HT��j$�������!E]�0GY� �LOc�֨�e�#�`m�TRdL��\r���d�V`�m��Z�\rǩ���@�‰ޏ�Y�o a6W�t3mv�t�)� �\nA�dZ��#q�嵒u��7&�4�]��{%���\\��q��E�i922�g�}׮_����^�+�ڵ\'?�X�N%yS���\r��-(B\Z\Z¾}��a\\e���#�o�����a�t;h��2\nA��� 7�H2&{0ĩ�ˆcE7���sc����3�ΟV��t[.v\'�럋�ED Mڠ����j�4�D!��Ɨ�^FyAɅ�m�Ңk]&�< �em>��k ��c�����5�5����| �eH���Ƨ�V�[u�t����B�!uC�4���5�8jS�=��a9��76:���k��`\r>h�=I���KW]q����a��0!��6����H�h�䜴�Ib�x��6uȝ;��$��� �[0���x|���)\0\0\Z@IDAT�lA�{�qn*X�L&%mDC!�.��� z{{n=+W��655�\n2���H,����d�L��v:��Ⱦ@��z�Ma���m��C�3��W:�;RBA�PI��)Arn�eg�Ԍ���i�X*��j���\Zh�9W$l��hfik}�&�<\\P��G����K4:���C|c6D:��kI�Yv�\Z%aq��j��e�����8] 6�Xs^���vJ�hA���g5&~-&�A�wm��;~q&����\r������/�*B�N�!�Ƙ\r��p�[��5\r ���� �k�%��\rԋ�̓�<��P�=�\Z^g�I�+�z�S�F�������9�E2�oWkZ��}�˽6�_�/B^���[m�{_z��(H�$gSP-Vb�%����F�����Z͐g)�I�ć|a7 W�A�T���<rlh���X.8��k�Y$_�C�J�K�H�f�4�uWqm%��2��!�+#>ㄠC4C��Q׊��E999 ���T��$�[vպa�|�����cM&Z��LN�3ہT6�J�f�UL��-h��a�����=8*!�ӍlI��tw���c���v�L%���\Zi!>h�`��!i���O�m2۪�f�w��S��~I+���td�(f���Hwš��L���S���݅�{�ci[�M� 6�u���W�u��\"�!�*Ж�W:b\n��8B��(��\" �dDbl�K�6��X����Nֲh�<K�d��7��ʲ�y�0��C�X-ρ[��̯����G�2�����H�3��[���Q���^�<����g��K�9�Q%B�`!B�>L�LN ��2_�[U���µ�@Z�Qh|�]&&u�C�[�|�M�\n�na�cx����/}����ӧ/��W_��GE*����ۑ�O����BHG��H��h��CqV� A�]�F���)̔3�j-�z�*�O�L�-�V���&j��A}d�T� Z�� ��o�8�B���ُ��lX�,��ヌ�g���l����u)?�e,g��}״��C�B��Y5��*B�5̆3�EY\'\"JmjX��a������m����E{�]8��V����\0v�~��kHÃ���;��.�;s/?�:�����/s�kC�x;����-�j\rDo~!耋�V=,�i�&��:C�L�,2�*\rAk�n�2�Z{&\\�I)4�-�|=�,����q��e<��\"��a�����[�G*�*�E9�k}�BЭZ/2ox��k�2nZ���ҢQ;����l��*8q1��&F�ޙ�.]\ZʷM��ڦ\'\Z��N_\ZA���K6��e<�oҪs���Y|G��$�W� u��j��C,�(\"BbĐ��(l*<,�~N�}��ۙB�LV%���T`���������P*Q����� ;�����֥X�<aO�<ܴdn��$A�a�k��QZ�4���͌A�$+�,{��+)�N[6ueѭW�1���2�u�F@�w�ű�b�t�b6$�=﹞�:S g:� Фb�p��R�LRl\r�8b�r�~�EK�?�~����]��R�4:����R;`\\&x��$�5pQ+q��� ����DvUQs��+z�F��SE�O�fl��ܼ��Qt\\TV҆[q��mX�۲TBKR=l�LB�`��� l$8+�O�^!`1?�vJ�� A�|�L����;�J��N�C_�Fʷ�r�-����\n�Y�s�8#|][e���q;י�$�%�tgey6�������Ąj\"��L0Y���0$�L��1����O�\\��}�������|�a|87*�C:�� ��]�~�V��CKD���.�~�\n�Y��V4\\zEp�bp Z�T�\"�$�.)��T���O|;׋Yg�J�=8�|�� ?� �,6��U�x���ܖH�������$r�}�^e�05l֫P�t��q~V���,`t���YE9�tѢ���5�ϧ��P����n��Q~�����q�����۫5K7���祒:��G% �!���\".#�G�n��5��Ѽ��g�}���7�ӰR �)L����@�ZpG/���c�K��P����b�,�頜�1Q,��Opst�d\n������6$ik� ��-i�.�}�����f��L�ֳaF439�YK��Q\"$W���p���*;���8.R)[�T����X�N��FT�ވ���bGЮW�*w�Rg�F��p����c���_\"�����}][��Ń��ס㠕��/Fl��59��m��ઙ�8���3ؐ����5d�Yd�{���xb�6t��)\Z�Tum�� F����f�U �\'| V@�<����ʭ�Tr�����]��z���������œru���Va�⼲�S�$>�����Ю�\n� �U��n�^:v�y���]M��6p��d�=���[��Qr\\<�����K/��<�q�j.��4��k�Ѝ%h\n�B@ʊ�,�t\rv� ��ӟ�Ի���Y���_ž�Ob��M�ҝ�BJ�W���H`�nݰl 4X�{��Xc�Y��R4DJ+Y��G�#��#mhU�(�9�+WF�u�?ZG簆Im�!�*D�7���C�M�Sl��������������h�/|�ϐ�ވ/ڇ�N��\'��$@(+,H��� ��n��U����i,Vm�o_DߖA|�;�E�ᦙ��m[��7��-�6bG�SդPt���z�����b���0r�R�U����.x K��-��)��Q%tVSjSʨ��-& �-��T!cGЕJ�\\��\r$+�b\"�7O]@����o�#�B:��R�3��@��K� [u�0�c���v�\Z\"&A\Z4���U�֢ �n׾��\0�^N /�M���7��sx��7��a-!��_|��������@����]��j�[�E��p=x�����n!C�X�w�A��DF�$X;���2����dB���r�\\)v]t=�.�$}�u,w]�7\'pml^��=۷b�`/����� ع�j������`2�*6�Jl��������z�\"\\�X z��,)�F�M����9�����\'����Q�i�|��§ٍ� $YOٷ�����̵��$�/br\Z�9� IӋ�ҵ��a����X�K�!��B������S.y�2�0�dJ���o�.Ŋ����V��\"ҙ �$g�S{:\Z �N��� �#I��m@�h�TB6�Q$K��r��L�i�r�%fe���,���Ќ�\'̕S\0���|���4�r �7�����3�\"�s𖵠k]��#&\\MΣs��=_F.mcSG\'�:~�V?�I���(��4�BСV]�Ŏ��y�M��Y�/���݅4[(y.�ۀ�×P(;���`�0�C�z��/�x�ڲ.���<,+�\\���s�|>�w�}[�nFaf\Z�?��%}����U�h�o���e�[�p�9(.*H��\nE]UY�>s.lO���ab,Z?�P��_����ï�7�]�ҭ1LLO1B[e��J8����CQ���� s��%>#����w\Z;�>v�/ݕ���O�1��c�lځ_����=��;��:�g�#8�� ��*̋qwzF�x���#����=�p�� ���ّ�SO�����#���̙3�z�*���/��ٳ�4�����S�sǵ\'�|�AOw�$]0�\\E_o/zz���;���/��3g΢��###����@��dP�щ����f0|~��<z�=8p`_ص���Wffq��u`~����ڽ /���8q�<���g�A_?]��14�=W�-�:(��X�[�A��:���a�����T��`�47�*zcuc��d��[3��z�j?��H֥2�Tgj=~�0�H�ܹsx��Ϫ�,���׏+�����{c�71r�\Z��v�����6 ����?R�<�6\n�i:t�{����}��^�q�L%Q,�Й͢;�S!j�ϝGWwv�ڍ\'?�e�[D�CC��T�ׯ����}̕ʘ��௾���{�\0��ʧ�Nt���# -+���������g�������uJ��2��\Z}�jӌin�A���y�&��\"6�v�؁�ׯ�����ܭ[���Ն��=��7f��J%�Yؑ�R�s�J��j�L\nn���:[�g �N�ҥO�e�Vd2iU �f�\n�m#̪p�LF]�R�1Ķ�P�W)�P�~\nud���qO��&��!pr�������?�=���(������Ç��@6�]y�����GF6 �d!!h!����o��h�. A�Be�{Z���IB������0�s=�=����… �F4 ��;88��ݘ��Ҏ�IE�&=��<x��$e>�_8���ʂ؄r���S�S�0=3�����T�(7E2iNE�(�v����(��\ns�;}W�Ù97=9�,k\Z�dFo^��`����x�\">�7nTk:SbS)��ёUas{��U�Y{ ���n]ŭ���������ַ���?<�/�0z#΍T����ZI���\nA�Jݡn6v4���e�\r9�FE0�-�Fb\'Y��93�6Θ�M�b�3 ��������B2$�j˷�ݻ�����a�]�.������]��ϫ���[�x9_��\\�x}�Pv*J^� ��4�!Y����Å�߷���57kW��髮���$�9x��t����ѩ\"6��_y��d�Q� �L�х�ڡ�g� A�K�a�6v��gPsJ{/��WK�f<���{�k�q���4�k�7�~.��\"O��U�_D�� ��o�\'n\n���G��\rpMc=O�O�/Vuo\\����^ �D�-�>�|3��{��a���`�*)U)�[��ꎲ��0K���A���}�%� ��&�,�n��˾3$WK��vT�]78�J~�Z����0;]>Sk\n�@ե/4���k��1IF��U��|��nL!:RꃒlL�ǜ�@�:����~X$�x����\r�\Z[����f^O��h��\\�#h��և��yKED,?FmP�d|�ЂV��s��}����4~��_��w@ʼno��V&N�>��;7!��;Ӎ���x��Ugn[վ[8j㽃/�}��j\\Dx!���ѵߏ��1l��ϗ���t��-���ņ���&xs�}�ǎ�cO<���/�f5�r���l��������Չd*�RqO=�)$���.��bц���2��5��M\'�2�#;�tdU�<�tL��;��>n���n���D4�$�r��T&������-�,�ʖReW�\0�K�~n�*� d��#b�t��Zϭ�\\�<�3 A��(�*e�4P6�ZŌ�8z��\n��ilٲ�n�P!�Z!A?��S�P��ؘʪd�b�;i#i\'��8���<y��߇Gg*\r8ʖ�Dg\'Ƨ�3eaC>��V؁��V�BY��877������\'t�7�h\\Z:\Zz��B�Q�FYj�͚��Sf<4c�\'�L��\'��I�&���ѵ���>7m���tw�N�T�����e�6LM�V�S.љ�����c��r���<�>#U�� ����o�B�!ք Y�A��n��\\-Io����gJ�.�)��`�=��Z�:��utiQ�J�\"�\\ARM�q�jg� U�hWyDԡ�1��&����.* �]4�<9��������Z�n�j�\"/-�n��P�B�+,Å�c�d���@@�=��L)������%<\0!hY�A˚\"��tD!1��#� %�A�[��ݽ�� A \"AGDC:B�Q⍀t��/�����Œd�W��׫fW_bA�;9S�+B�u�s]\\Lz]�Qnb= ��X�{��/�r5A`�A�\Z�u{���U��X�! �n\Zk��BЍ�XfB! \n�X\r�����f���t���\Zل�[���*܇��,�Z��eMA@:\"���B�R��o������^Zք ��#���!!e�(�F@:�� Zjq�\' �AGX9-M,�/�\n�A˚�(�f\'���\" QŴP,��[�L-��� �X��)�(B�UL � ����Ԃ�Xв����A \"�EDH !�)CD�7B����bw/-kB�B�QD�����2D�x# o��-��� �0B�VN�D �E�˴�@-Bв&j��5!D!�(\"BbAGH\"J������->h�D!�+�E���\"�eZA@|в�C@z9��}A�I��$��h\Z!�6R�����^��]�� A�59Gh\0B�\r\0��/)��\n��B��G���!�z!)�ֈ��\Z\\�� A�C��-�\'B��FJ-�Ht�ڂ�\n�^X1*E�mF!����\nA7q�OX!hY\Z�A˚\"��tD!1��#� %�A�[��ݽ�� A \"AGDC:B�Q⍀t��/���O@����rZ$�X�-^�j��5!Q���2���t��Z�Ăn-�2� PE@Z�X�bA˧ �AGT1-K,��/S A��e=�-�|\n\"�\0�a\"��J¿O�<���>$�I�z���,\"�\0��[\0�L)c+\"Zе�]�5388��o\"-���PHG-S-��뺰,K�i��ZGЊ���J�A��+ϵ����L�5}�ԩ����9�E�� .���,��\"P���ߴ�����J��q����; �R�����;7V2��q��twwW7 ��\nIGJuM����%���f��D;}BD\0\0\0\0IEND�B`�','aaiui','ueb_key_7','ueb_secret','ECOMP-PORTAL-OUTBOX',1,'Y','org.onap.aai'),(8,'CLI','images/cache/portal-345993588_92550.png',NULL,NULL,'http://cli.api.simpledemo.onap.org:30260/',NULL,NULL,'','',NULL,'','Y','Y','�PNG\r\n\Z\n\0\0\0\rIHDR\0\0\0�\0\0\0�\0\0\0� c2\0\0 \0IDATx^� �eWU.��~��o�IHK�|��O@Q��^�@�g ��(��ͧ}�J|\"\n�g����K=��r1� � �*U�jO��վ�cε�9՝Sur����R��^��c�t�=��������������l���>\\υ�8��G�{�O��\n�����A�*���;��c.�9Ϳ7\\T.U��^��ߌ�y��6|!/���@�w5���#C�c��{{9���B,/��߅��78�3�kW筜���wƱ�t��n��-ζDN���<˲)/�y���L��wӃV�7�3,I�}�#�s$i�A����y�����y�{>T��=߉��y�~PN�I�v��������/y�(\\���T��iW�m��巛QhO���5���Y�yO\Zl����ױۃ�7~���q\Z7<I��-���V�g�7�>��0\'Av��v��\'���~SY%�{�_}�S_���l����^65�3G�Q亿W\'y�8�&����h<�չ޸��I�cǏ붷��O$Quq�9ռ�rp�0eQ���6��\n.���?���_�rS��d9Vl�rEb(�7��f�ʋW�.�\r�˂r ����s��H�Q���m��v>7�:j��O&~��f����u�K\Z i[��f��I.���Q���,��4�a�]�%�+��\r�v������;�n�u㘑� ������T�!U,�52^M�rp�)����Q@ؙ�����jZ���Z�T�U4Z-���p��%b)P�(fU���9�k�gم6�\'�£r4]\\��b��TՀ�n������V\rS��h��W�M���U �S��ye�,�,+d�9��Y��!O���9r���,K \"{�����,��\'�Nj�,��&b�g�9�,ˊ�� �ŏ�UPY\"G��p�r��Wׂ]v�bQ�2W%��b�!gp�C�ZAS�1�<���宲�:a���6Kd�A�j���Jd4�ʹVe*dr퀔2�2nz�}��}�1�\rV�w-���u*��a=!7��]�lWU�ى����Uygu*�� ���\n�ϊhYv�V�ޛg��Y�cH �.�n;��9�k�U��`��I�� W�mw�R 5�\'�9e�<q;62r�qQ݃��\ZS���‚�j�\\V�Q_r,tu$���� �\rk����f��×\0�����Ș�K��� �d��o��y�8yL.�, �\n0*�)��k��=��1Ҙk�̧�VgӼ���B\r�7n,zo�t�똹�a���1I仍�C�;T�Jz!yB#O���.6`�e \\�o���,�ĉqWw{Yf��Iѫ�dT��^*���J �)̤�\0Q \np(IQ+��X73��� Ȃ��%������VaW�(Jf�0;����;��$���wm��jg� ��3�rX��H.\'Yd�z<^}��-���斋�L���f0�B[�(�T��D�)���s]t\"!��8��.�s&�� ����`�b|^\0sY�MT�b ���v)!SJd�8��7>�ЪQ�-c\"��wP٦j�xSk1U�t-7!nY1U�����ޡc�*v��y�kM��? w���h�Co��8p���\\^ޥ{��� �K\ZK�7�Lf�kc��3�+F�*��z�/U\'��@�Y�V��X�څ`D��\0����.\n7�E��c�I+捊aU��H4���������1��LU���*&�l�c� UC��fq��3 ]�̶�aU�pcɭ�R������j�����u��s��I%��b�\n�a��ٍE<Xuܨ��uT��m�R�:���P��i�K���ٱF�q1\Z�\\� �.J����U�\r�e�Z���\\4�\\��[�]V[�v����C])b>�UИ]N5\ZΏ�g����V[��ٵ�����Ig^Advc7���:!\n&�7�$����fK�e����F��\n�R �Mw}������S���R��FE5�ޠ����\"�&�o�gv����`�d�\0#;Ĝ;��/�Yd&�Ϊ*���\Z���� ]�L��&FWبE�*�y=����\"���M�a� 6�RfB\0�w3�I&�쪥\r� xe���n��uxKc��9S���q������Q�(������u\'W�Yμ�����F�\\�B`�Y.n�8����<US�N�ڒ1o�j��N�l�\\�p�)�M�l\nԬ�8K����Q�K�Jl���Ғ* �cs�כ�KXgSU>��퀕L��7t�q� ui�٢E���ƇS\rΨrf�T� #��[��kǹ������x2e�P�֞Yj�T/�;��ȯHQ�E�KI�q��fwjsA���2�f���b@b�X��sW���N�v+a�&�`�L�W��H��uØwF�U�S\0i%�,0+_tg�EGU٨�2z��@�(>u�W�S����U�0[y3�Ѝ^l�Ekz�y���}f���\0dJ�X�Z��JX�[j\rVaⳈQa�oT�\nA#�3�u�s�;���F嚱��[ 5�v�K귢��j�\nq�+�Uq�L��U-g@� �JBc�U����F�ڥ-b��ʮU�^�T��Ӑa(�b����bӘWմ��5:��|b�V���b0RC%���F�J�O8���dUwLs|��]Z�c�lX�v1�{���f�SW|�妩�0���Jt h���cI��=e���P��+\Z��>�=*�t�帔Ǩ�希M �%�V��ب�fAmX�Vl�14�����U֜42��u��0YZ^���x�K����鰫���\"�-w�SnlUY�݈�ʎ�37^H%a��r-�gu%s�y����2[�M�,�\n�)j��;ؘ9\Z�?\'��YU3�����}�R5Z�x�5�m�>v6�Y3kCT�y��U�ػV�J��TZCc�A�����o�N*Ң|7��+&�QWK;�r~�l�����3��m��YM�n �����!L*N�RH�˰�٘��g� Y�o�W�P\'���_T�s�����P�s��N��q���w��v�\Zg{����c�s��d\'����<���|��#76>�I��|�\r�HQ�^��m�S�g��l/�;iE� g��rg+���p̖�{[/y���79�so�~����|m�ɭ��C�xȶ7�S�4 T����Ibq�$ꇪ�`�U�j�f0��������Z��Xz�r�!R�~�-x�K���z�m,O��3��Rg����O1�g;��a_��o�Ι�DEE�����%\\���c�%X|�6h�:��r���,[YҸ���Hk�by�cn~� ���r�d�G����p<b`e��\rmX�MA�et��� E�X7#�J��kq&�4�ԉ&�g#5aY�R\0R�XZ2,�����F�J � m)\ndE�Ź9�5L>��F��:~�8<�+C���q�X7�F^\Z@��.n�3� X���Y�g�\r5�P�J���\n����GẞƓ�=crY�eÒP\Zb��H\\�����\'Y��� �&k��:�=���e4���M� ��ť������2$^�>�� �3,..���xz������d�L�RBV2�n�\0L �^ZZ�у&_h���V60��P� �M���1�����G����c��$�^ �*3=��u�����r,,.L$�Ylr���(����\\M\"��`_ԠHl���<i� ��:^��.�� (EUM&��FLV\0ë́ڨ D5�x� �L�`[#`�0_�<Ӱ�&[�*�����H��U����ʊ� �� �|a��f�*o���l�����Xh� M�O�d˄��<���Ҷm�$I��=����(G`��\'��ʝ��\\�h�K Z��&��LG��꼢��T>���+��\'?�ILOOK��5�.����5\\�G�ݺ�V� lX����L� ga�����\n:�jr��`�z��<��6U�|�^��u�{��o�F��j! óT ���~�_�# �:Jڜ�1���V�2��n�)$�������6ef�)I%���������Pձ~��އ?��?�G?�Q��̠�h���阼҅>�#G5}æ��:�ZY���c� �Pz��CYbK�������f���gC�\nPv������������`jj\n�Zm\"�.�U�u��ԑ#Gı[V��C��Ol\0��\"#%�+�B%cN������:���g�������G�X�fsBd|-� �U,�<I0��P�ǪW���Ņ�q��3�Ȳ|G%���Moz����_��ȸPW���s�u:�Ė0�oņ2�E5 �T)���|gs��� ��L���������*�T\"�+��\\��\rERb����L�&׆�c������P�y������~�c���ɱ�5%)!�|�\Z���P��H(S��Y\\X0�+N][\0ФoHe\"�/�m�o}}�����������|?��P�?��?��n�\'D�����ӎ\0u��Q( =��.�M˂O\n*q�.�/�c�\r�er�k;\"T�Fg�CmSB�1�������\'<?�S?���ّ)����X�x�;D�;2���TF�d�O��۾T� ���2d���^XX(X���+R-��������߷뇪�N�����t:����.<�����~������o�5!2vd8\'1#���2ʔ�+�O���\Zй;�0/�|eu���5Ǻ�V�$%����˷yvH/�F#A��g=K�������=����\0�\0��=��P� (U�\r�ֹ�|6���H� ��صp3E K�O�*[~��|;��,\\���ݮ�����/��}��{2o��6םw�9���{4/� (����g�W��[g��K/6Ԇ��3��NI��݂�e�[���]A`Qr����|��� `}�?��LνG��\Z\ZW\r�ی�M�\Z�?U��P��J�T�EB��k�2�\0;��c���P�2z�9%�8��v�)�ĚaR�3�PhZ��I1��\r��)b��-��iO{�\0�n��e&���PM�4��> �殉�+��\r���iI��OH�<���W5_�)Vh�����3�T *+��|@�³}&�:�M�?�P> �ӪG���Zl���.�J��s�㚮릕%�v�����Y��[�u�,�v�o3#x�7��zғ����L\0�塚x\n E@�6W5�\n �q� ��s��\"��\"�;��H�.�*kJ�Z�u޴�Vf��z�3�)���|��l�ԓ��\0꜆mr�%�Cd�Ƒ����F�K�d��4�p�H(�3�ͩmkJ�`��� Y�|��`T���x!\"~�G��\'��믗�� )q�Cy�]@l��K/�jmsۋ���l���9Ӣ��p��|j�Nj׮��PU���� _�Bc���Ð$����^�e1�LF`�#��!�Q>n�����=5�y���%���g���ݽ��:sYW��~���.�ꪫ���\'�]wIT�[��DQ$�}���3�s����(){n�$�3\n�22�Ԗ(�q�L���*�\"�ET�vDr�v�7}�7��{�t��_�zɝ�W����H�i6�#1����P�:��+��ȧ��HJ�i-�j�+��@���4���ݵk��I �D����g�$�������|�# �����Kf/S�\'vҎ ��\"fTB���Z��Nǚ _��T@�X���—eody�m@L��r ������$��%�_��_�$�6��M�ю ��\"�F`���<�,\'�\\\r��?X�R(����xr-w.��R�E����tI1�u��kC����vf�mo{�TH��;Ji4)����{.#`�u�� 3mM�n56V�f�f A���6�������\"�jCeؽ{{*��\0�s����to}�[E��4��t>�e19�\\G@m���.e���\n��j�����I*�*��*u/�>H�����ۣͷ (�iT�X��}yH�O�s]���w,)�;��F�>�bfT� ʣ��9���|�����b�$�?�A�����iB0��*���c# �:tH�P�J��L�!�ƀ2Go8g��ڳ�*�U: �Lʄ��:�\\h�F�\n�S���C�rf���\'����I�e\n��w�ٳ-��T* Y2��K_�Ҥ��M��2�P�\'���T�$�WR�*��\\!��!%��%5����C�޽=@8p@�e?��O�J7)���L�����:O$\r��\n�uCh��/e\\L���\rM���A�bJ�\"���4Ǟ=�c�(��\0�����{x&}rՇoTB��8ȅ2��.�2�Yrgff���UI�\\���VDWނ�{�)��,���y��|r�qP���%e�yP���H\"�**����ҙ���Lt�*�ց�:\"�P{�iC=���K3v��Z�N>�X@I�i���h:��R V��#*��JG�o�L��%ͅ(�O}���j��`z�+_)��υ7%TQ��\ra^͙�a��F����\rN+�T��سg�X���2(�U�z��X}�>L!��K�Z����<F��:p�\0|i�f�N�ޘP %$�!�Ut�P�����{�n��;�wّS �_��_����������\"@�˨}m�#������%dZֈU��p��g�\Z� ����m\Z<�d9�<Ͱg�\'�&���X��S��:p��I\ZR�N�j*�i�kZ�)��gf��(S7�\0VhA���z��#%&�B\\�_;�\\��t\r#�������6u\'j�6/�� [ �P��7(�\\2v�N$Զg{��m{ȾfNP@�H���m��SL{b�\0:��\Z��LOkmsK�����J�|\"�~��~oG�\'��,O\0u�#��?�� ���g�7l���p��cw���4%Z$c����j�|�>��5��߱��Դ���{TX>�|r�\r>�ʃTN�%����\n�T���~ڀ)j}$�ff�M]>�g(tud�RPBe.���b�.��0y��ԃ�c+�R茳vE5P\"(�g���� L�\\ \ns�ꓒ\\y���@��M�p!���\0<�+��h�^��G6��kzj����2)ʾ.���n�tV�Ⓗ�^P���M��ko��D��*�X�2xO��R\0�nj�,��y�1es�Mk)J��|y.!4,�<�LF�b�I�l :��4�Ȳ���:��7=%�I�!#����5�l��P�2��� (���1�g�(KU�Pr�������j�sKj\"�&����~��h�l�%��LMO��k6�͛#��@]<�i��j��� e48K@l�\n&��U>A���<�m j�k���v��҉��,��g,���P�t ?R\n}\\SBx�Rm�P �ӣX��J\n[�E�T�<��w��=�LF�b����|�bf��%�HDؚ憯 Q155��Xl�jۉ�_�1��bm��.�Dؾ�g2���b;C�Kb�Iݰ�҂-.��v[�$\r*���鮜�%�(�q�e�7�LF�bg������0�]+n%�Pô� u\n��eg)��!!H��d.� �x��\rU�l[+hlj�����5��$FA[��9�.{�P�B������˚BB�L\\k7Y����҆��Wv1��(� ����)q�e 5Ym����Ԕ0= 7b�j�JQ�EBI2����i�R���r�B�x�P�b����P�? ,��(2����U����y�ݒB��#��&��`(��$,@+6�� ��+��mޥY�\'�����r���|���$�R+ֲ, e���̝�k�]�������/ϫ��E�q/ɁD�+L��j�5RB�<s��P��lCk�`8Թ-�ӝ����b�F~�áŤ6�\0,:��0�ſ��\"�u�u����p�5�h�t�2VE����</��8�,^��xX������Y�Ys<����_��ɼ\'ߑ��\r���a��຾>S�#7�m���$\Z�ݢ��ӭQ�e�5qo����O$�NB���333��8��\0�� n�#����zm+-�����g�������l��/~1���gc����h�$�P�� x��\"�@ R:+K�t]��K8r��{���-@�f���{�OUbK d���>ǵT\nX\0�ԜT�gb�a��RF��;0+k�%TR��ҟ7v04���K��&�ک��6��I��Hڰ������w�.Gro����B��4kq�?��?�W���A��Z���$���:Ș�*]30��*�$��A�3o�E�l6D���\'>�W��ո뮻077W����@���XeX�N����±�\nG�\'\Z��7w� \"W����no�Cm��7����M\0��Ө��Q�7�� 2��v{Џ��;����^��?���\0��I@8z���w�����o��o���Z�I%%�Ś�����E�zb��-Q\0>�ՈuF�\0\0 \0IDAT��y��RZ �al9D�{��ކ?��?���HA+�����h�.�N���4�#Mڋ\\$t�ƛ\0eO�\0��Q’�[�I��\0c�1n�\0i��Ȓ�_1��wQ(�G���a�*#����S��潒�-i\'���n 4�=\"�Y_����oiB����~H(\Z\\�����O=�n�0\n�)zY��M��ܤ\0�.��@��4�gggq���[n�{��^���#y�$���\'���Ū��i�t��4Y���\Z� �����@65�C�YŎ�#�\'{��|e���L{۲�A}�+��+&��9M��N���h�Ƹ5�ǥ�v斜f�!d��<@�-M3�@�AO���~�p��W��QJ��\'B]�`&�ᯤ��p$���w} \'��W^�}~�I��C�27�G���O\0SB�����k_�Zخ]�P��1 E� ƝS!-�Z�?FV��@T��,��X�O���t0��V^��6dŝV�)9RSj�3D]�A��Y&2�W\\qń6?��+�P�eª��ުT�p���$ ���t$���/�y�x����Kj\\�:��=��f,g�#L\nxi׋0h����|�/�q�a�o����K��K/�|�c5a���sW|�|J!R�.�3??/��7��W���Y4�-�(1A\0ٱ�d�NHqU1�\n�!�,V�\\ m��nu��+�T\\V@U|�oN5�$��m���\'���E~:@��9�T�$p�w�txֳ���������<VWO����S2Tm9�0|R�9<��]F=|�����|\'D�o�H�\nǍ�$L���^���]����po\r��&�EU�R�2lT1��g?�Y��5�����{���R�����vj�N���O%���4:Vqb*.��i�Z�ߝZdnd4z4�P; \'������#��:��;��_Uݹ7o�Ӊ\'�t����\r<汏�C_S�QC\Z�Z���$.\\�E\\�ioy�H�?�>p�p(��S�\Z:hV�a\"NG@o��ɡ�����;U�0�0��@��<ь�nTIQ���{���5�`��_��D������^�p�opg��Pe�J̆�]��\"�J�R�hCk=�/4�V��֎�LV��(���5��Jf�9���9I�J�`��Q�<��?���ɟ��>�6�dDsx�\n���c4�q/F�o���p��Q������^���p�%` ?�Z�XP]�� ��t�ux\Z����UDAN?@��R��|$�I�`��=��b���?&�47���(B�`$�m�Q��X�ݪ�g� (�(R:�壄��y�ة����P�ۻXL�5�L�A<����:۔l��1�����U@�\\�&Y��u\nDT����Wړ��d������Q��h��������㝘��TS$�b �,V:#|`�+�����>\Za~zz\Z�>#��Lb>�Hx�e��{���� ���P��4�@�i���!K�z׻DZ�y[ZZ���\"SH;����8�N�H�*� �_P��mՎ��fA�F�Y��ð�I���NĨ!&�lBJl2g>�|\0eU..*��T�l/ak�S*��f䗾������;r�P�b�9�@��(Q$C$�N�a�k��#|h���\n��#��0?��/s�.��Ou��;.� q���vqm\Z�{��cffЮ���*�[<�!���Gh��4�w�$��]�_��7����� +�ֳ����y;���> �����K���#�RJ�d�6KM\n���&�/�R\\yŕ�o+���c,�hCU��3�v׷Nj�!�S��\\R�t3̇������_��B4��= �@��+t=�@(��H$�ߪ#)2<8���{�A|��}Hf��i�O\0Q����%���U�U|Od��\0q\Z�\r���iᙗ,����hvR��}$�:��{{��&����i4\Z-|����?��?§>�),-.�Q�l졵��ķϲ���a������R�q\'F\\�̘:\"�\Z��^�S��E�O J�Σ���b�-Bek�Y�/�j�zv&�o��H�,S���&)�Z\rIKq���)O�Ͻ�E���x::�t�=8ҍ/5ƿ�p�wȶ���c�ƃ��CA���\0�����\"R,5g��ȑ�.b 5�$9-�u� Ț�\r��� �<���<ey�]܅k���;�a���50�3�����u�~,�uS��Ȓ������P�\"��m ���l�}b� K�W�7o\\l<�6Z�\'��^�P\Z��������E��l6���<�#\Z畅U�+��H��AekGmPV%�l \'��6�}�Y�8A��������>Wv��kHQ���Zk$g���$��Ut�����\Z����G��O|��AR�B͍P�3x^���n��\0��rk^U5��+Q�A�A��0G�[�R+��{5����a�Gfh�<�7j�:�cFl8v�ڋ�|�^���_�/}�N�dt ��DKVX�ƪʛ�U ϡ�ch���le.is\r&�ߙ�j,��<6@m\r$�9j;�� A�4t\' �ˉ�g�C$��ԧ��x�D:��J���iv��J�]�e)R�@+h�p���%��������RPk���1����ϐ8��̟:y�+9ۻ�9s�\ZґV���:y���Q 4�{���\n�\r}t�/��!\\��8��� ^��r���4;�7�������+��T�� ���(��]��L����J���{���+qs�}o�P� X����\"�K� :\'�:�r���g�UA�-k\'��ŜIxL�?���t�rwe��~a�fp� M�%�[CX �C�K3�Vs<xl\r�� ���f�^F�N\r�[�E��&L7�H� ��K�$�Q�G@�7E$��C��� ���$����)ˏ��/_�K� \'�V�i�$�]R=h�ǹ$����`���w��_��_���|�4Zo��%��J$2�$o4^�@UB�j\0�oK��sϽ��w0]L\0���Bǁ�l0Rb��٦���`@�\'ˆk ��� )�}ܜ��̀��Ovb�d[Q���S\\0��:n����Lz �� ��~1ع?��\\�m���H�;#$Q7�B���~�X?����Q��A� i�Q��� ���׊�7mQ�۰7ˋ�� 4�dC�=GTW�n4 �xLk߲{/��g7��p:�G�������p���G�Ę�najj\Z���%���_���0Q�M� �z$���\'V\'�n`URª|4�W�$F�S�kӲN�Y�\n�I\Z�Q�Ndr~]���߫���P;�\'���U%%63RU0Y@QM�.�Eq�UW�W~�W���+�?�n�\'j��\Z���D��\'F�(ʂ�.�u��+_���X_���v��b\\�w5�����Z\n\\!���vAt���R��\nd�7p��b���F�D^ ��c_���C���k�s�{\Z�>����#�28^�8I�@T�0\Z��� o|�E<x���G㡇֐౉��A�P��s=��XV�ɨ�f�q\Z�z!��õ=�\\㗢�)�%4�#\'m>�P;����J�$�C&��3?�3���i�ymmU�\Z��\Z���!�y�\"h�\"�� ^y��pk� \"��Ţ�0Iq՞e\\>7g���7�5e���k:��pnC\"؆�PJI8�J�fc+���\0w��N��ұu<�6�~�S�/�|ǎ#-R��� �S���ZE? �/�n� ���D�+����\re�Ž�u��{�}p�\\��PrB�K63W��N�ސ�6���S�dr�L�-U\rB�綀Nu��T�jCd��6��!�H�W��D[���Nt�Ш7��uM�\nI���������������S�\"\ZI�<��s��F(�!��5<~��n��^��9kC�ƪߚ�P��}�11v�5�M^�^���<a&=F�3:!��\n������Cx.f0���᰿��t�����ˮ�s��t|�_�W���\"��jMdi,,$��\"h�\r- s뭷J���1.�i�6.�R�|�����{�M�t1�������ڜ /��!��7�΁�.*�gzzVK�R�$�H�*�%���S\"�x㍢�x�b�d4�#@(�E�sd���G�a����ø�w��#\'�ئ-�J�WQ��kK���#Ɇ��}\\=��=�)0���2� ��9�\'Ɂ����q�Mc#$�7��>�f@�\0 �_��.|�)� D>�����s����\"A.o�>3��.�k�q|}�x����}�2.s3�\'!:q�Я��z�Q�� (| �����������x׻n���i@�Y��(�-mn��uf&ܩӱk$��U���l̒S�Aw�� ���\"�˨�~TE�S\"�j5q��aϏ���K +s����~�Z3��%k���r2D)��;�p�;��{?���Nb�6�\"O��JۈNV.��4���7��KF�=3�+1_ �\rG>:t�����.$��v%\Z��U�����7c��D�����/<��k\'0� aM�cNFN#1l��;,>��}�\'+���.�����S��B�ݏ������S�\n�\')���� ��^`fz��G�׽��~�0�\ZLL��S���F��ZvE_Ǹ�������K��8�W�e�*D��Wah�DB�$�T��A��2O�멾;v�^{-~���_��q��`���#_K[%)�ՠ ~����n��=��=�.I��D��A� %u�>,�֯�5�A��M �\'���ޅ6.��nj\"�ct ȼ@���vq���}c�\r�8 ���y-D�8���ZEo����F iΌ�|\\V�k�ɉy`�H@����XO�(�\0?z��x���㚋X?� ��\Z��P�� ��� ������x�#$J����%���977/�\'��A)�C��{��I���@7 uR��m�a��6�膲Y��|��2\0#7�� ���R8�?U�E�����7�t���`���a��n�Cx����Gm��4��v����øu���b\Z�h\Z+Q��A������l�>���}���\Z�(q�Z*յ�H0J���>���g����.|�� #�q�c\Zm�d�,�����K�_�h�Z8<���Ç��JI}\n���\"$9\"ǃ���r+6V�@�(�•la\'�����\\t]�3���F��?������@���H1�_��cp�S��&ʊS�8v������߁[^�\Z|�����q��H�!�r�Wై�Q��U{s�^�7\n����w�ׄ2��R�\rɃw�f ���� )���v�U����NG�S�������m\\�� �h��`���� ��4�G1\ZN��9���K{1\\K��������,;�\ZQ�!�\n�g��/!<.7Pj`��!¬!Ā3�ʕ�pB g��|�K��p��4f��HCLL��b�\\+.�AGl�$ 0Y�<\n�/\\�c��UtG)�(�� �gM~){�:�)lP� ���z�!�%�jFf1Ҙ���t�x��K�oy\n�B�`\rI!�#D�}�?υ��r��$.΋���[ߋ�����k���U��|�+\Z+Y:���KV�4&T�!�S��4\'� ����}��0���b0��P;&KJ�F���&��%��Y?���:�<C2�7��`Q���zx4��\Z8s\\�70���#�ů�� |��:\Z�{��k�):�\n�Ї�ȇ~�� {@⋥Wj}�>O��^����b�:���d��v�4��4�F��Q!�-�@�\\�A�SC�aE��#Y��Ǐ��ZY���Rf���b�$pW?�3�9�r�:�jR�\0���\"�rkA�����x����w9���.���2��o��B��O�̢?���*��+���{�%a�ST\"�M}��[K3;�Z]��ذ�\n 1�Sւ6��&��Ρ�&���� ~�� ��xl4j���ku$��CU�E�%U\'F}jA��}�=���_��>u��1��C��Ѥd�\r�3f��L��4��Q�F]|L㶖|;�����?RJp|�<E�fG��\r\\>3�+���#���p(���aC���b��;k8��� ���Q�30̐��0�sP��,�2P�!K����x^Q�c�W.B���ׇ۬�𰇧�j�W?\Z߷|-�^ǓU�j����b�zT �1�SS���������O�����e\nV֓0M\nm�r�^3 �ɩ\\x�9\'��90�J��n��& �am��)21�I��s�\"Ӄ��!�<���8�xx����[��Sx�uL;:I�&B$����-�j�j��7e�-����Xq��4f&���\Z*�5&+��` `\"�Q��ri��Pˁ�Q��Gz���AG�z�`ШKJ=��w�TIyQØ���غq�iTZ���T�3���N���RS�6�T��c�Ю��y�c��+��f�q���Hk��W���Q��z\" #t{=x��]��H&0�6��c����Ω\0e��[&C=Z��L>;3��Y�E%��E��wC��J�i�����:�vI�ޜ�;������NA�P i�ӮJ��²W\\$24�ڨtU����` �M9��ν��� J�GBr�\0X���z�.ك�Z ��ǁt�/?�ck䅧Ϙ�p�Z-�ݢ4�tV�auc�D�Q�Y�b,9\rܟ 1 b|�?��z�u���.E1ZG�J�������=Di&�� ػg�DYt;]q<k�QE�h���\n)��\r���&(V=�c����剄� ٫D?��?+�+��\'����N����)�Q���e�_}�ᖻ�+�:�E4b2WLQH������\r�����]ک�;���p�� R��\Z>�x/M�wz�,���:�����m(q��>�0#�V�䈪�u�Y��E#��b.\r�����q4�.~x�>�� ߌo�����\n��iÃ;��� C��Ζ�\"m�ϭ~5!J_&��J�Ȑ��:vP����%\ny���}j\'\0%�<0.�\Z@��}�� �X���M�H�]���?�?q��ʁVL�U�����<_�\'d�h>9i�c��$v\rI�� �d��\"���>py�biyͩY��w�jA]�4f�j<����Z����^O׹��d�f#䩃�,�۞��a��^��\'����T9r7�]�p�\r%����{yY�R�E�o�4��\\_��K�2���Q�zY�E^��L���lZ��GNT���/��/�E/z�LwV��M�\"�S��g� ���9o�o��S����6�V����#�J�ZB�2�U3��1� �i՘1��bW�T���kxM�y��C��XGF�oTG�v1݌P���m;|FZ�H(�P6(����\'?Ι����W9Fd��iZf ���\0a�!~`�|���� 9��C�>\Z�a��!�+!R��B��y�P���Mʉ-n�Q璆\"vg!�p�(� �Nj��h�V�_����=�\0j\'��,�U[)�X�n��h&9N�n��A#rq��n|ӭ�j�R���嘝i�(h�0D\'`z;\ru�ʱ���/�/��J[\Z��{]�H�y����<D\ru z#�XY�p���\Z</V� �k�]8������H��M3 ^�F:�ř�KS�&��L�\\���麏P����\\�d sh3rT+��h�����M�e�!�\n\\3���Ͼǚk����\0�I�����]F��h�]�3�c+��T|�Z���bb/ȍ��M�C5�ȚL\0�0���*@X��h����w?����|+�� <�y<8^�V=��|E��H�S�$Յʝ6s$;��,J��E*��\"��/�-���\0\'VV�%���1�S�����?����F���6�3ӈ�V{+�U�̃S��\\��+�f#\ZN\'hL���G�8�i�p�7@ݫi-�$E-��zq\\�g���Q��%�|�sp������~DS��%JT>[�� �!)��&�\\U�T��M�y���f���(���b�:%�3F4�+5��]���:n��[�mD��+b$)cߨ�瘙m�5!�] �X��N�ݟՒ��޳��Κ��2��M�Y��c�8�ƀs �e�-:��G�l��p<GJ��tY3wќi�1[�W/�:,���jRԒ�hK�zr�g��S�K�����E3h���.��!�Cn25�n�u1P� 闀Zi�a��a��,�������g�PXғ�KN�*��!�^�X\r�e�b�}@moQ���Sj,��b���{���7� ~4ej\'�7�#ES�8E��\nA���i4��R��7ꊤ��l�x��D�E�V�QeL <r\0\0 \0IDAT�~����\\X� �`m !N���9���֠\r�]\0y\rF�\'^/%k �>�3�m�5\r^%`3���™������4�*�7�ˌ���>�\0�z�Ͱ~bqo���#a(\"�8c�D�l�}�>u���X�t�� �d���d@)QgH;�ϙg�&��I >�<҇��n4�,s�&���}?�Bj#�:�rW‚�I��z��a�F\rx�C��ooEXg�vD�r���\\[��vS�:jS5�g��Ĩ�$N1\rX�����$��p\"��B����յ>N��� b�����h�H�CոV �b�\"��\\;�Yar,çFÑ��ӭi��\"$�>�{�VE\"��^$g�^�� �B��e��3u��\Z�Z�4ܑ���u�� �鏋$�Vc�Y,�~W\r�����\0���q4:����NH�O�l%����2E\nFh��هL�<*�Q )Q�\"h�̍q���]#ΰ� �vO%)�*_GH�إ�Q������m�T� �m��,E,Nv�Ė���!��$�6UG�UC�0`)A�ĚM �yL~Py�Ex��n&���P��rl�x��wd �2h�3ҝ��]3F8(pT�s$�Ck�m�Hf��cW@Z��.�sff���Go���)��%QC�U����I�9��ZyE���|Y���b���gM F��Eղ��v\Zd�U�b�M7�X�8f{�a��@�w����\\t����jԆV\\%a�0]��i���?��t�������Eu1_�$��������F��8@��P7��mҏ�u�s\ZwG�<)…��L3��3�\r4�5��!yI1Ծ����-���|�LSƽ&�.�\Zv��G�\'��4�41�r��C�bF���nl$���!� ��`VM�w�TRJ��ڨ�D���d$Nj�M�MQ@Q��sԼ����F)��!:k�+SD��g�3qIJ��֛�uM�c�x���O?�y8\Z@|��W\0Ŝ)n\"eO(��+�&�B׎E�(�c�oc#�q:�R���M$�Nn\0���C\\�!v]4��\0�e�\\��P7��6��\\���m��v��%ϝ�k�B�z�\r0t4C4�M��u8a�$c^M$/���Wr\r�f�����vb\rوe����� j�f ��Ӓ4�q��M��^��z����4GP\0�L�\ZS54gҦ&�=�2|�|���,D6�����9��{����!�0��EU���B�DSUK��K@%�n���G�~���!@9X^XRb]T>^CK�Y�ؚ+\Z$a�CU>լ�c�l[�z<R��O\0��pR?K&�,U,���FjT>�>�ōo�G�i��O�0PUn�g 7�V]��=���h������b�Q5JdrGv�:RJ��U �l��c\\�� � W:�T|��AZ�z����G���YERL2��\0�4�����������K��b�S��#=v ��\0N�K$CN\0R��bL�X�K�r.�P��+Ŀ=��8V[����a��|�%�N��\Z�gV u�g#��ל�}�\\3!%vS��ܤ�#���e�JR��>����.�6\\�P؊���Na!-b��X2���-4f# d��9�8E�VV{��*�����(��Oy2M|>Ca��밴�+�l���a��hhDh�\Zh������n��\n�;�{)$9SH�̆Xi<�FUT����c�>3<f9���~��W0��bX#˧*�RP&Rb��n.�\"�\Z��bVf�B���5��|��I�P)��.n=�ų��.D�)][\0��&����\rMi:�Y��Z��Ҭ,V�[;������Iݠz\'�\0l���`�@MNƎQt�2�#p�3���#{��h��\'���1tQ�$��󤑶�Rg��n\Zl���h�m���B|��?�c����Ku�.ͫ�*_zd�K}Ό��� ���lC�d��&� Q�mqd�f���o\0�\'�D#�L��y��\0U����>��\'\ZK�S�����IC^vl1i����n�Q �����񌲐����3�J���}-\r~����~N)O�K0%���\nH�;23q�o#\0ٻ��i���.V��41I��4� IxJ7E�U�]7&n�5s�����k\'�6*�DJ87H(%q�BTUdM���Q����\0l5LM�2�&M<Ѣ�]+���3#p�\re\"%E�Z�10F���<������R�]3�Bߑ��H�,�Y=�JJ3��ka\rA�\">�G�3`\r~���Q 2�l#����H\Z� ���U���͝i$O��u�� 2פ�q\\$)k�� q�G�dh՚h�\r r������A;�Û�0�ʤ����C�$�R���ɔ�\rc�j �F�1�0Nq�R��o�a�V0?TRBY���b} �Τڑ�9� �qEI6�|v�0ZO��f�Ȅɓ4j�/�߮�w��EM>;3\'��rWc@��Bܺ7��]ph/lȣJ��F&�t)�B�=hc�Y(-kB\'¨;D�I�)�?!���Ԧ�@�E?M��%���u ��$N��?P& ��`Z\'��&��+���o�?n=��K��fTG�1X���w&DD��cP��/�ȥ�uMjM���v���Sj�%)�%5�Zp��ꇚ��VhskC���IU[Oj��71�%�¹�����ڑ����fR��5%<��k%og�ٙ�q@j�IZ�2b� ��[pF�#��%�]��<ɥqK��*���!A/J��¾Q��,�[��BBI�6;tRw��>���v�D�7Ptst����^�K�A%���� gD@4�#hz�1:L�0R/`�Мd ��n�B��6E֓��J�[cI��\r\'\n� M�\0+��muЌ�n�h�>�Q��\0jg�$W� (M�\0�1�R/T�\"#���J(\Z���.U>I_3ĨT��/DPDH�CtO �.j~Mhh�GY�(%UL>�>)���@�5߂9�#��X�˪ӥ�%U%)6���i���eW4�U�R\r�W��:��3\n���uF��N��JՓ\\a��r�AC����\Z�.\Z3�F�^�`4\Zj�gv�`/_�\'E����*_��aE��|�P�5%�`�0���N�S\"%���d�\0j����ê�b:�\r(卑�.0�9xσ+x��ރa��Rb�� HV+q��Q �ɖh��a�a������ ��Y�� Zu3 Q�r^�E�I4k�w��v#B1�X=E��63���&$��YxI��D⍷cZUQSa��d”X�6]� �e謱�v �_ʮ0r]\Z]+���!d\0N�(\r����m��M�9\n/@����E��q���xY�$þe_��y8��� D\"]kx���,#%��l�:��F�a�~����]�>�DЪD�U�#��V񼷾q8%F3K-��C_� deҡˀ�\0Bx��|=0�&�@Z\r��Mh�p\'6<�0-q!�W( ��� �v��� �X����n,/�˨$��h���C�It�Cu2�R�5d�Su�݆4��H=v�#�c#aV�&��[⋒��N�ݴD%M.����K�y���wc�(m�v��8ڄ��a�kw���s����L\'!FNj\Z�9R{��\0;}y (�I OY�����υP��[��7�w8�Y�(�W��\\*�R� �I9,J���\"�f�$Oۻn�d��РX1��h/5I�n��A.\\���3�k�@�b]i��D>�B�!& �z�����zL3$��dڑ�ͼ�|%Awm I:^�)�x���*e%�4̖�\nZN�\0�\nIIH����>��/*�H���C�O� I��� ���V15 0t�y^e\Z�O\0��+�a��f@q12N�=��B5�a��c=<�/�N����1�Ɇ���,B:��mN)�ăik�T��P3�b���h�`!�4q�� �L�>���v3B3t���Ѫ�Ț��-�H�,V�MF%O�M�\\Q��M|I���1��.I�bo��@�}��\n/%�,I&���&\Z���f�K���v\n�1yhO� b�N0D��B�;��\"e�`�}{j���Ou0?���z<� Xtt��\0;}�SJwk\r�a����8�n~�mp�॒��N��ȅ����豃_j�J��E3mz�&C<[�F���!V���{�o���h�� �E\r��\0+͑�q#V��U=�\Z���+����QwC4��n!�w�g�3��P��$<R#�L�V�S�l�*P��L�2o�,&�<M6U�����3�0��� ��q���Qxx�|���,��1�՗���(a � �vz�?�׳�/y�K��.�Vv�z�p�݋�x�羄���#�/�\n� �)^\"벊�,6`�ø&�H3�����eUײiT�X��I�������.Z�M�A����Q]|JN�����*� �5vHt�&g�i�&�w�K%-5���V��)��ßY�]í(}�93���V��5�V���g)��\'p�����g����DD���\0�a^���-�4}CI �eBTY\"���$����f�P�����t��r�X������%C�$5B��G�#�\"�\r�H|(�L�5�$g�\"ty�h�R(��&d$H4�>f�#_���u�/�z�RMt)�h?ihT�5���{�l~A)�]���mV�a�1и�?���9���7]���g`�H��$�J���#��$���ƓY����M�Mh�M�V���.��� L�g���=�)�V0Yn��W���c�Gܠ���� k���8R��\0��Pi�Sb؊�[}&{�:-�6r��u�<W�\0:d �3 0��X��9Eu��i�Qw 9J=�`�3�<׮�d�-�t��1���m/zڇ��8�H>�\r���j��\Z��ER�Q/\\�t�a���W��]x£��$w\Z\'�5�Q��t�`�-�\\���ǚ\"-�\r�/�càД��c�Y����&��]�g:�&�򕯔��� �8s��*����\Z�O���z�?�O��.��9x�\0���p���3j;)�H^�)�xl\n��t���Զ3b1�b�0l���� ��a���������A�`�8�\'�\n5�[/�wEu��{�fs9KI&�/6���f��:fͿ S��dG�F�Wt�O5�:l�9v ϼn7~��|�_.0b�b �5�,��hH�\r6���:,��I� �]�64�܋B#k�3����H���SYS��/y�6E�i-�� �R/�0��O�u�����?���y�M|�\n��l`5f���v����\"y���`i��e%Qـ�����D�d��,�VN`����:�l���`v��ʶ:���ed��%�����i�p�`lO�\Z�O:�$�� ��0\\�����8��1� ��9������c�އ�4��c4{l�Mf�x��}�J@�� ɣ���47t/k�p�\n�@p-6����\'��2�W�M�0ǣ���m{e��J����e��˟IBH�� H��fr1�|�.�+n ��!��;߇� ����\Z~Y:DD;b��5Zυ���4��{7 ̱��Z�xvg��\Z��Cbx�\Z�6tF# �\0��%����X�Y����n����r�$`�)j��Ӥb��l�IJb�ԁ�l�\'wpbv�3�|\Z��x �\ZG��8�/b���%]$,}-ᬚq!�+�+��ņZY�jTR]���(��\ZE %!�R���Z�oK��1�DvJv\'��n}��v$U�����Ɵ�������Q�dS�M��1��oѮ�2��>Z����z�`x(������z\'7B�Հ��ъ\\� g30 �j~�Y*�XVR�c*�-5�\\���Y}������r]���u�;�᠇F����0- �^��$,��cqf ��]�֒!���q��/���\n_Gv��#j�� ��lXSY�_k�HM�<`$���!ҕ���qW����mx�5�8��h�����@�$j�n76��*_�^�����\'= G�A��e)f��)tO�U�ьd�/T�$�Qզ�S\Z\'��я��n\r+[:� ��z���QO~�ER���DQ$���]�\'٤l�9r\n�\Z^���6���������|�\0�v]��QM�@��7.l��qG����\\���\0#�ն3��I�l�����[����ɉC�E�9���J�16������9KaDJ�5�hz�� V��D�Ie��\r\n��UL(�2�+y^�VR���`ln� +4��7� m�B �z� .�m���u��g>3,]=(��`��T�!\Z�dM�5�&��:==-�\"o����W�Z~��_��6\\��.۞���O��\\$[| l2;�V����co��#����@m ([=��⤱K^���\r7� �ux�W�\"*��jW�d0��@.���DS�g�p���o����w��Mav��|�E�����`�Ԭ�x�<�P��d�X���\"!r6�/i��w��aIg\r+G�\"�#��+勿G�BL%٘�‚�l�ɴ����|L�Σ5� �F�ґR��댁�9C�V]�nMq� �.��\0Nƞ#m$�q$���|4����]��|*�x�,�V�H���`\'G ;��?[��m������?��?�[^��}�?�j�d\Z��N)7�&�8�6(��o��nikY>O��.���ʱ@m*[;N��lI�5�՗]�����w|�w؎=*\0K�wI��W|!B7B�7BXs��}�E@�X���\\����}���B0=�ř�\0��%��\Z�d�ZR�|���\r�6QZ0]�I�\\��\"8����C�wO �3�a]�t��[��*���%AM �e8U�D|R��4�]�P�E�����O�tXAf�҉�ds�ټ+� ���\rXo� h\rǎ��7��?�������U4ۻ��2��C��e{?�͉��o��o�=�y�$���͉���; (_e��V�h�j�wj�Z�_�@m\r([=Jb�\\QX#xe����Ǐ����H36v���ۻ�������{��;�}x_������.����i\0�Xm����@�)\Z��H16�646/\'�\0N1�\n��D��umDB !%dB嚇���zv�=s�N���9w�.6ǛP��Z�Ν�=�|�����}�oddD� ��X�A��$c�I��qt96\Z� ��d|�\\���.�ѿ�G�:�� �h6*��={�NN�J�E����Di�A���T@sl���@�g9�\0�Sӛ(ֻ���:��Q�d׆�v�Ų��%��uͲ��r���Gs�<�\ZuT�Xea*!��^���� U�H����,�Z�C����`V��R����tQ�T��:�b�x��h|q!��@S)��bǿ=�5�݆��a�;0Źi4*ص�M%t��\n�}�&Z{���X˔O?���j�Xڹ�����ie\\T�Q�>��!i�L����$��>8��G-� `H0��;�z�X�l��\0���7��s�����W�2b��+�s�� ������D�VC|�*��(�s�S��ĩ\r�ߓ!�CMmg�s���\Z�@�D�3V������鞏Z�)�f�j�$K׃�h`�ׁdHڰ& �]L�7�s>y�q����O�+Q�=<�m��̅�RO�̆B==Y�޽G�I;v�C\"\n��){B�c�bPQ�rl9C�lO2��%i5EN�⨏�O�%�1�v�1��F�]�FCC!��f�(�ʒ�=��3�n�:�}�� �?\Z��S�E �8�EC���[8�:��@���S�؅o=��\'Wed3}h�,T���~4�M8�d �r����?�C��r�5X\Z 0�oP �h�;0/P�g3ѥPEYdד%ި�ae�pO\ZBm�c�jV\ZHqL�X�^�,�h�X5�j�X��s�7�NA�+�C�k8H�����c�a��kU9���x��-[�i�&9��|���n.&uA��ڠ,R��v�1s� �b�Ǭ��v $J�\\7b#\r���8��ڵ����A�;q���ƍ�^G:�B�T =�|��&�⭌��/�yB\'�*��?�~�����8T����/�_��=���n��b�1�s����.C�,C�*�p�ҩ�X�(�_*!��̱oW<� �� �k�A�W�\r��aww��`�d�~7JU�ؽ�_.!p<|~A7n_�[0�tne����V�j�KVF ��A3\'���K/�����ݎ�_����h+���n�?�����Tg(]�Ғ����0~bY,����h{E���+ePu���*�h ����$rr�Hߑ}O��\ny�t�<�Z�\n_|��xyx�ln&؊9,[�t��<a�\0\0�IDAT1���\'�D6��+��c��_Ď��!9{.��UdF�arx�hv=@�ڢ%��\'a�ի�]��GBŪ�5��j2/��hQ#�-9��W�xU��i�H�d00 μ��X�l�����\\|��E�+u4l�\n��Z.R��K�-��:zlV�I�]G^�i�}x���sӸ�bCa�+$+��h�UP��T���\n�f�z-�FϛHXM��D5�\nN �kA?M�W�Nؼ}Si�J�DODE~�C�LSd�v<_��� �K.���p���(<Ϝ�sP���zޔj�&�n6�Ȧ�w]|�?�¦~��\ZǜL~u ��%p�P♤7�(�̅#\Z���t9o˘B|I�=��s\\T�u��U$SITJ��.�\\õQd��p�_}_���E�|�\n�.f�b��45*�gaM�-��dz�>�\r�Ğ=ocΜ��y^2 �������wnnʠ�l�U\n����R|K�vZVB?� )�(�I�(�@&;Q�� �ݫ�fP½�)\0\r��t:��{����_������W ���-9c�V��G����M��e�{{�������s������E_w\n�b�e�K{8���*H��5ǰݛ����l��b��e�47�\\��܁8��Xs��̹ �,Ԑ+Zh�oT�ץ��Z���U��&�V2�y�9w�ܹS��b�Ri�-$^ś4ayR���A�R�]��\Z)�p?�ʱ⪕AEc�a��V�*�\Z�a�cP3��\"oq4����D8�vŦ,�\\.\Z����X�d ֮]�3�\\�b�$��1og>�k�A�w�F�4��H�}�����_Ɔ�O�ׯ���$�f �B�z{P�%��33��P����ȣ�$]��g�����_w���3��������V���EyBz@�\'?��A\Z�#�<�{�GƋ��u=I\r� ��LJ��\0��vIr���ޫ�q���� ���N��l�A��Rj�GԠ��ra�>Ƞ ��?�!���I)�X�b�� �����Oe_\\��M��� �~ �A*y�t7Nv��Oa���,�Z�jY��k�@�0�o�-Dr��ʓ_Z�{���a���qa`����/����7߄O��F�ߏ�<C�d2�8��@|FEm�����CR�D����/�Wz��q�)�h/CmKz��M��D�]ն�� J��L�%:��H��1(�がG:RK�Y�\nC(Fc<p�\0N=u�d�/��ٍ��<�b�� �H�g V��s3(�_ ��Hx)�����l�O~�2N�\'��\r�җ����T��[�Eq�VuW$�*��LlV%�|֗�2��q�E`50>| f���+q����m$�[,H�A@,@�V��(��z��+[�^oo���lܸ۷o�q�;w�0O�a��ժ�L0b:�6pO�IB<|�0�ǘ�0����T;�t|�D\rj�7�����YT��y�?�ơCcr>�袋�aÆ�%�T�6�n�I���(gOY?��:(�T�B��5 ?x��q��۰�d!�� ���\ZH91���b5Ue�4�UŬ�t��Ʀ����,6�&3���K�(�W�pͲs��7�P���_�D�ua3��|��\'1BF���(U���<�ԓ�뮻%_G���2�9��x�3�f��KQ)�(�69��A�z�Я�\Z��y��A�9s�I�rqpWeH������W������1�%��+��:F��Z� ;��5�>���?(z���z�V�`�ϐ�{���z9����B͠א�r�8� K�汣:9z��4�h��\0*�\0���O/��U��³�\\-�X�#��Q�Ր�����8��\'��#>�x������oc���O�<f�������̺-j�G\n,�A���1��N� L�P�(S;JA>U�(I�\Z#q$|&�q!㼥K���Ē�K.�|6�AB�k����r��ؚ�� LK��.2.��{��\'��ooî�����e$b!�2�\nӼ�Z��ˁ�HJ)>�$�Y�K��G�p�V��E���|Ľ\nF���H&4��.�z��bA�jXM�SW�1|�{��!�VpY����\0H�z_�� U���q:ڸF!_�C����P���Pf�4ҮAEw`��xV`”A �ђt�o�^ac\\v��X��x^���$Lێ-� ��Ν�G$m���f ��5w���运���R#1�U5kc/%�N ���Jd�H�Qq�(|�qх���5���g�|x ;@�j�ʎ�v�5`U-��d���`�/�+����[���FB�)��u+��Z3�Q/t� 7FŹ��0�����E6;g�ŌZ:SMR��9_�`�#�g��-��IJe��$���A�g�PE ���7�j����!����RMte��_��uwm�+�}�ׇlj>��2��A���Rn\"��׫�\"_�IX��p���FP�@��G3HJ��*옥�0x��11�βz��������Q�pB]&�=���]�SE|\rC�Gu ���p�LoÄ��y�g�@��ܹy��u����A�v�\Z̞=GB��;�Ǹ��\'�Z�@:ݍR�0��8k��\"ӗE�o��۟�]��H.���A�.�ڐ�JbJ�k(冱↋��/ {P�� �+���,�g�fL�ZqI��uұ��3�Hpe���H���xf�&`3�cE�\r�N�1(3VS�G��0~�ם�AM�5\\L&�o����L�Jf�099!Fv�-�q�5W�@��QJHb�D�X���еf\r^<���Dq�GP��;Џ�Ç�r�}xz竰R\'!�ь�P9�g-ĝ�nŸ�� �h�\\�z�W�bI�X�D��&+��4*H�i�����.����̏��H%\r����L$rv<\Z�;��5gR\Z)��U`8ÐOPu\'u��s��OĠ �30�̧/.�H������bT3�y�g��{��駟*A z2�����TΒ`���7#�1�K%8^\Zٴ�\'v�������|C�C����/8�o/�����.��rYF\Z ���@_o���x=� ���̝#���d�����c��x��$�����3T���*��V�t�PǴ���D\r�x?����܉�XIe���/� �@�s������d�Yl���i�\'�/�0wp.�)��m?ğ~�\\xީ��0���n>4�d���XT�1���������X�v��W�;�+)�(F��͉���6n�ePF�/�f����J��)�HǠ�w���à�̙���0М��~{-:C\"iK�.����;.f2.�ȍw�{��\"�Y���4�\"�d^�KX���s4-�Hf� �o*bi�$����⡇6c�֭�[��rO�$l�I4�(��D=��:�A���D���k��*��Ti�w�G�6�������6ss<o��\Z�g<�9�Ӱ���B.7�B���.�L��Y�J�EN�b���X��4�q�Q����|XA\\��W�%��4\ZMjY�Ѩ�����\'&�i<O<�~x ~��bΜ����L��Co�k\r������Єoc�S  ��Qi�\Z��C�&a���*}g�{]�k\Z#뢫����S�q2���W� ��jDR�4E~rf��a\\b�bo�z,(؁��oĵ�^+�Z��+�����37Z�b� �7[QJ��$�>dK&���PC��$o��V<���R�744[j����~D�^4����*�jo��Z-I=��E�HjU��4�3�`��K�n\"�$���?Ub��<�@��OF{X��P�MJ�W)��OZu�`f��(=�?�#굸h(���o�x�b�{�X�p�@@C0�<T�\' �\ZE5�LW^Ķy+O)�x��Gq��w��dƳj���;���&ZM��$o�Pcc<�^�J��P�����yoZ�YY��a��mVV��C�ښ����y�j`ѢE���I��ő�*J��H8X:G�z�3��G|�p�5:�RLK� ��\r�*�|��pԴn�[T��F|���(�gn�8�ְ\Z^z�%�_�^�,L(���h��Q��s��1a���7��^��UR�V���� !��% ���ZD�Zoi/���� �p`@5�R q\n1�R�V?�?P.�msX��,�\Z�@���u��:�Y��O�E�E)I�P�({��4$���K��j=Q�\ZӃV�KЁ}��{����H��I9� ��uP��>�\0�L\n�]]���q�ȤՋ���1R FQ�EU����ƣ�%6a\Z��� ���>Hsڼy3�m�&�����K��x��YR/ꚵ,�v���ԋ��=�}�:��c ������&FF�Y-O�y֝��{�Y����QV���Dr�xP�7��qh \"��J��,CA�&(8Eo@I;+O\' MK<KS�f�,Ac�(� \'!��S)� =�3�kZ\ZO��)e�J_��i�� �y������A���h�3]��=M�\0z���r�Z\'^u��v�a���٨��<\'{u�8�p�U�I [��9�����,��TcS�Y�4P Y`��a�1Z!�}��Vq���+�zfb0��N}��\"��?M�H���^k�+c3.�,��;�͗��,�Rpj}�\n�(���|-}\r����1�xF#t����� �s�^�s J��kJ�/e���q���M���c� ��\'݆E�#id��F������sޯ�L�9�����4���J��5��j]�\\��z�i(��Ҁ��\Z��6���I�u��έ[�\r��u�^\"a;�)�*�9����Sѫ�%��PTt� �yD̄���H�.�t1^�t\r1 ��n��)b����Q��H���f�73����Dsf�K��q�U��G�e<5\n6���zN�xژ��u\Z\Z����!dQU\07�,�0p;��Z�� [�� ̀PY*!���4�L�J7����1���Eg!�6lV�ޔ��H�����l�j̑�xh��2J�ٞzסּo�\ZZe����P�0�d�<=mGZ��oi�A�P������t jfƱ�.�P\0��:+�337�����SgT�o� ��q��Gu$�1]]��:����������H-��v^������r����۶��w<�Gqt�y&F�Lx>�\nPu��`�E\0\0\0\0IEND�B`�','','','','',1,'N',NULL),(9,'MSB','images/cache/portal-345993588_92550.png',NULL,NULL,'http://msb.api.simpledemo.onap.org:30280/iui/microservices/default.html',NULL,NULL,'','',NULL,'','Y','Y',NULL,'','','','',2,'N',NULL),(10,'SO-Monitoring','images/cache/portal-345993588_92550.png',NULL,NULL,'http://so-monitoring:30224',NULL,'http://so-monitoring:30224','','',NULL,'password','Y','Y',NULL,'user','','','',1,'N','SO-Monitoring'),(11,'LF Acumos Marketplace','images/cache/portal_907838932_26954.png',NULL,NULL,'https://marketplace.acumos.org/#/home',NULL,NULL,'','',NULL,'','Y','Y','�PNG\r\n\Z\n\0\0\0\rIHDR\0\0\r\0\0\0D\0\0\0�2`\0\0\0sRGB\0���\0\0\0gAMA\0\0�� �a\0\0\0 pHYs\0\0�\0\0��+\0\0Q�IDATx^�}`UU��J��B!�z�\n*6�Q��}�lc�:�8��`CE�Hd@�{�\'�^��( %X�wf���%�s�^g�}�9ǤC�?(���PQ^�+�zmLLM��`���gg+$&������8��v���b�  臨O$��\0&����,�01�?�эn�*�\'���*�/Dyi-,�͑�[\r_\'����� ع; �eu�w�F��\0!����X�*v�qŖ]�w��m@mc Z咮�$\Z9��ش7>�탈9�)ƒ��?��P�nt���o�qpw&�,ޏ��\Z%���2�G���W�gO/�H.AVFL-�`aa���6�x;ᦛ��%q�H>�g,>Zr�f03:�L��¥�O�ĉ�\n�+������ Z����)1!�t������u���\n����*R #�������,F[[ی���G&�6Ͳ��s>�mi�&f&hk�@���_���2���D gWk�ړ%\n���z��˶r9&ff�I��bNN(DbZ���r�� W����Չ�r����D�=7�эsC���Y�%8�3�zv���;<t�WH�/B��b����Fpw��@Nf9��`iiNa@�ʪF\\�p0�D�lۖ\n{qK|�쑓] S!nc*?�I�y�T��B��r!��==���Vٲ6Vf�� |=�QZрg�ߋÉ��v0G\\ �q�эn�fO���fhmn�����K�D%��W��Ȟ 䉑���ƀa��?4.�v(̭���B\0�Űus2���EB|!�����[0T��2�\'�z����boo�aHC��0�R� �a\Z2�(3����i�U�82%�\r��mR��Ҝ�jX 9q�����C�w\\M��ҍnt���]�FMU�K��������\Zs��{���@W�U��%���8���K�r�Q��rY�k�q۝�E��C�墩�x��uj�$��\0qk\ZP[�Hۗ�]v�� ot�~%ۚ�\\iln���<26��Ȫ��F�2!�е��lm̑�_�[�ڈm�re�nt���w�id��b�[������<$\'���f� ̭��!�J�mE���gk�����b1bL�g |}���{{��7G��j���Z�}�X|��u%���eQPh���:�e���N�MW�J��������(���;�ain�V�Z�N쁍{�QZY7g �遇n; ��t��P��J�������=ܑ~����\r�Ű����↘�A e�\"0�h���� q����ʆ��,��0aR��Z��U!���rTV4�:hkk�iG�X~��E\r��R�fTV6�ԡ��\Zť�pB���������xqy��}Gy�Ƌ�����A����MHש��Ʃ�UJ����5ؿ5G�e#j@\0�/?��,��}[R� ̑*\n�ءT�գC����R>��3u\'��D�k��Ԇ�~ڢr�x!&L�@�޾ذ.�/鋰w����G����\\���j�Ҋ�C �C�����vpu�EcK+�k��U��G�:C���w�HL�pVo�8�w%5�ȫE��X5B�%B>a��)\n�Mܬnt���4�2J�3Dž �dS����1hl!\nK4�5!I ��>h�ڟnI��KO*Fzj��+1r�w�B\Z�/��w�/�.�ع-\r��F#�X�/�����{��[E]<��88X\nY��7�Y��$���f��\n)�*W�V�sF=L4�㖫��I�-\n����B�����x��Q�fc\n6��A�����44�����/���F7�� [O��=H:���{�P�_���\n����������� �9�%��K/G�(/�%�@܏~C�1`XN46��q��Pq�� Z[������2����j4��2X9}fo�&UH� a���B�Ȭ@Zz)R�\\9�U(u��.K��8Z����BWΉ��C�X�5�^�-���(�vq�*ť�tU�es�j�U �UR�+�E\"��I�{X�Ow�J7��q����Q�՟�����^�:c+�����‘����j��+jk�P-�#=vz�K�gS��)u��p�ܬQU�$n@�٠8�D��눊�F��#-�M\r-�xQ$��&��-x��=�L�_q+h�$6�RyX��i��DD��Ԋ�!�h�:�X(�P;\"�|ͭ��(�¥�#�y�(&�-SS9� ��\r�6:�~} ��M�-�Ebz��.8�[ 2��pC��HOOGQQ �+�QRZ���z8;H��85biRQV�֡��E�Up��ƈ���H�lfT\"/�����$�� ?5�{��̙`dB�8�ڠ�� �ݔ��6 &j�Eb���q戋$�q��0z\r DxoO\rZ=����:1\\3��ʪ����� �:���*�}{:\Z� �|k>��;X�Xh�FH��( Sd��HJ+����,���onEd�\'�\r�����0WwF����^?����-�/֝2逻�\r�2��o�~Q1l����W6���C��`�T��������w���\Z��q���J�� -R�\0?�����[t��bɓ����\"^��*��+���}��+`f��z����zT4��t��������;5vG!3/� X3׉�G Fvr1ښ�F���N��g����1���卞}}T���c��q(ʭ�xQ�D�Xۘ\"]�&*�l��UU�8r8��V>,P��z�򂕥\n\n*�sW&���a �lQ;�=�Q_�Q,}z\na �Ú�)Z��C&hhjA��K��U:r�D�n�P!�!��)e�)�F��&Y{!\'/w[�dU\"S�k����6|�&�ps�MHO�@um����� !���*�d�J�F7΀�k�`kc-ʛ��䝁��u=�����ZԵ���\n�ˤ�Lj䊢:X�Y)c~��Y�Ogq5l�*�k.��U�Ü0�*5��q���01�V��-��ROa��#���:�/��i$n�g,n�u$�{zaۦX������j��ĘPU8�r3���nāCy�+�Z.�?\r�{������7A^A�c&��KS/nϋ��Őho\\:%�\r8\Z�(���Jn/<�\Zy\r$9k3QEh�}g���>؇/֜���w ��@�7 s#iXX�VH$-3ӸE7�q*�*`-\n��g*.���\r�|{!﬉�\r�Y��yU]\"��B�XK����G{{:�3�\Z����\r;G+51�C^n�|�����A��b��G5�=�|4ja�C$���/c檵([;|�Q_�,Fފ��OTo/����������r��fee���f�ې��N���d�a�N ��>酇\r����ꍄ��u�੥�)UF\'x�<��HYWnM����ԑ�x���((�5n���q���t��, ��6yB&����H��Gc}���Of��\'�Ğ\r�D\Zk>>���F5de�K+�[[:����H�O�/�5�vc�3�U�4:�-��3�ƕ�>�h�iT&���ڊ};3��<F�(�1�PYшG#as:�|n+��&Q/4!�^ � �u�r�\n�k�$n������<�f����Vnd�*\r�9Q�!��i��h����%��\\s���ǫ�#\\��Q�{L���hlh@vN��Pfs s3s�����bg�_�Ҳr�O@\\�q����=7jj됛�/�U���bm��\n***��_�YJKK��\Za|gBQq123��_X��oWQXX�̬l=�E����T�;��55������O$%�O��м��鱅hnnQ{�|_H 5�\r(ɭҿ ����(��\\Uް(�|¬�F����3P_�S1�31����Y���E0e�𢳅���M`������li�%��3�:�23JQ\\\\����>^�Y���>��Q��3�G\\b�{%�]m�� �z�:b҄p�X�H�˜Q�X�. 66B`b��5��W ������/�_��\r�������6΁��$9�#QH�J�`��f.��5�3��������B<���B��Z} �~������_~���i�V|��;�����Wô|g\'G >W_q���[���߬���\0\'Gx����I8::מ��kؾc�<����/>��q\r������۠��\nw�~ F�\Z�O�|�m�wH�\Z�Y>++K���[o���χ4��ky��ň;zL\\�z�~����b�С����r�]oqJIMŇ~���lQ��rϛ�B��rX!\"< ��r3���>�ӱ�D|��G(.,ֲ�Y�մ��F�>Qr��� ���⭻Vc�[���j#��)�坥\r�V��� 1dzO�gG{[n�z\r���YR�>�n�� ��ƃ�`�l�O��H1R���6���@��֡��F��*!Y� .���5�Jz�|m؆5��~�T������\Z�y� ��w�ƴK�#G�ı|�V7k?���\Z�8QǶfjle����/��}Cm Z�[ѧ�7b�c��c��kBIY-��a��a�Y� Y����jD��{�,�>�Ύ�ޭL�� 9$I���[/��Z�dm�M\nG�6�~(̓ڹ�Hk\n{����h�%eeȓ\Z������wݏ�<�2����بDZC �<�|� �f���}�������*ԀƦFݿ�e:�[���i�}OF��YŢ(�J���M�;�r|��ǢH�u{\ZWSS*+��g�~L�{ ^{�\r%<��-�&OêU��u�����z����˖a������z��*��_z �� ���j�6��Z�����=��c��?�{r�a�Ee=�䳸��?!�D2j���8�J�X]S��7c�9X��r�^� <^��l��[�����=��n��O��˃�g%\r־/��5��:�ة� (r:���\"�â}pxk�0��>\0�{�� S47KM��d��nCI ��ed���4\\w��]03�E#^\\���fԉ!�U#����|�&�a`g�W�h�mf̌BeU=&��zx�a��4��3Xj!��\Z�����r\"���_\'k\rt�:�`o\\���w�]X�.Ϗ�!��.õ�\n�7X�o��\"!�EB��2��c&,�!cCcG��\'��/wW�wII)���Ҥ�G���Z��Q�������K������3�z��]��a�@�K׈/< ��ය�,��\nXIm�\Z�*�����g\r�gF����o��;�������u��O���z�m���b������U���s?��|=���.��o���ۜ\rO>���1__��� A��XR�<�kſ�������K��qϟ�����k�n��$� �V&��g�g�*�����R���O�{_8��kd��n���f���A>\Z�`�B�x\0�gM�zl�\'8�7�ζT��\"��d��F�H�qs��[��F��� C���T��m䵓:$��� 5��|Sq]��倦�\\�OK��Y �y�����G��И`����o���*�z��p�p��e&�;��/�/r�T|�\n�;��Q3Y�rp�.����]^�$$E�7A��R�.�ĺ��*תE5y�١���Bݐ+n[XL)鄤�=l�4K����3hZ.�e֠��Q������>�n�@GI|�� �b�*�ʭRc7��� �Dz�W_{��h�j�))�nj-R�Ξ�^={\"+;[kE+1`��[�oG�~}�8:������J^~\Z�ɓ�m8v�٣1���]��]J��ڗFN�p:t&O��\0��xK˔�)�P֭_������nw�K\\�Q�Fb��1������V\r��d-��\'*�Y�4R��t�J7j�.����.��K2|��t�\rXx͕4`��=���N؈[���֖V ��x����S��ȑX8��辷�����\\�ɓ&��� ��zߩXƝ�v ��!22�x�����d��6Q�#+,xt �D��> ��V� ���l؝��G���܇��V��\\���Jc�{plO&�Đ( �t9�2Z����F��Z�1��ME���:f�.+7���¨P ��0�����=䟸9�Ͱ�1�!ēU�^�m��|�A<��Jޟ oOG���nX��Pv��8��G7�1�]�wlO���L_$�RY̅L��+���4 j*�&K\'�QT�rX[qav�A�`W�>���BuX�V�\0�u���Ӟ����=Y�{����o�ظ�Z;5� ��E���u5�V|���b��s��/�DiEİh��z��[�z\r�w�\ZA��ޘ5k>z�]\\w�Ur�f�������7���p���3���᡿܇�/��;o�o��x�ȳ6Scf܅55?kb@��E��X��;���d����3���uQ��rE����T���Çc�e�NUt�xܧ�| O<�F����P�\"z�GeyX����ذii��#�{�>�ر���Z^\Z��ޏ���\'\\6S�LƭRޏ>x7^�P�;��C��?����{jl>ZDq39�#� �.���R��w���)�~���id&a��{�,�+���P�@�����-9�?,\0�Sb0�\0�}�g������!4�1ڰ�^:�^yl-V|v�7&iG��\\v�P�\r�=햡��a�-��� ��X��M\'_p�@ԋ��rjI�)����1ǃe�B.N���m5+�E6n�oEnA�&q�>cL��h$=^?�y.8�X�ܻ��Z/�7]�!a��iGp��4����\0!�9�<�����(R�E �/.{\Z?���R�9����K1{�t��*����w�^�u�)��[��O�0Q��\n �p���� ދ�g�0ny*���r\\�`�� �a�u˶�Ƶ�ߴMr~>u�,I�L`9n��B}��.��I\'�Cq�:�Tw��_0j�H��t̟w ���\n}^�n�ʕ��v%���Q��_���s��x9�{-�!����/�ϞƖo�����445C��q\n�$�13��0�\\[G�[�N�4���k��o�F��3�g?�\0M7_��Q� +��Y���Z{�nX��&q#FO��o��S�4�\r�?�f�l��ۅv)ϔ)\"�}56���tbk�*��1M�������G#���\r�M*E�wd�V�H�� ��}\r����:x*�����l}�������,c\0�Wd/�>�g������L��~v�HNN�x�� �=o������-7�hx~�X��������.N�X$���0|�P\\$�R]]#�\0��4h\0F�Kr.\\v�%\Z��yH��N\"���f�ٻW�gu��$1# �<gô)�wd�nO�=�ϊ���@N~��Z�9n�X W�\\�R���SU���{�Q�w\re���I(�ʄ�eH?Cʸ�7_Ce).U^�o@\Z�9�ؽ:vV�F|Y���Z���E\rFܮt��Y��\07���T��+cp_آ�Md;9V�( �\0g���5_R\"+2��yfr�����l!�O�ٍ_���G����V�F�cu�W aw6\\�z���__yx�ݐrR6�4����Z$KggG�a�iٻV$�,��H�*�PXR�a}=��`l�,��f4ɍV<���Z�����txO,�-��%�Dºjmkgg�m��n�l1imoU����1��`̨��u�;�`���݅Qr^���C̈a\Z�mu0o�l�sc����JC�L<�d�V*�����hL�����Ìk΍�}�)Qp���B�������>by�}L\Z?^�?�^4E�s�>w�TUv}@(AK��tt~33�1�/v����j%��z0uU��`u��F�l�V6h ��<�Ĉ)���\rCnr ������a*Ȃ��U�<<�>�ڥ����B*d�ƺFx�9a���=&����q�.�F�� nK�\' Š/c���a���\Z�sz�YT\n7��j i��o{y �td�!n\"��4��Tu3)S˙�*�^n�ƴr�5�َm)��}4#�� ����Ɉr�M��bZL�^B�ܟʚFT\n�t. ��\\@�(���f���\0k���<}���!�t\'HnT~-*��3N��OF����-�\"��S���ۣ��Zݠ��b㷿/Z�z�||���Bh6\Z!���v-W���[+�ĭm�?��z\Z;_ E��/�\\U҂9�I���U��{K+K%쮀�e��j�Vn^��V���cE���v��}B\r-I ��r����])̨@U����8q m-�,����J\0bll���?\0���i�\'y��t���ErP2Z�)�lR�lAYMw���fEa�7�P+�F�� �mل��rj*�p�HT��a��$89�)�� .���\'ȃh�Z��67�2\r�W\'c��p�-��ф ar�S�B���H��1���E�ZF-�h|�\Z��=�D)L�����9b@/O�\Z��n�˧�ğ�F�K����q�,w\\>\0�]!���} cҰ@u�~ TJ\r�������gؐS\n Q���[YQ%�Y�q�i�\n�@�<}�Ƌ>.��/���{\Z��s����4<Jq�r��j��K��\n؁��\0��1:s,�~$T)Ǐ�y�������\"���1����еf���j����{\\\\��kΏ�C�\Z���ډ���)n�����@Kc;rN��t��ጄB�y�&�� /���h�h6~�\0l���HA3��z3�(�������ʴ�8���7��1?���^>Θ0�V.9�z���B�B���N��0bl �}���\Z�0������>�swkL�~�K1玑�\nq�k7����m�����v�q n�e�l,��2+�����FL��wd\n���lQa����öU��p�&z1���Y���(��C�\'�ƽ��!�K�л��Ὧ����qxy^�h?F߰��g1� @Zz��! ��oN��G��㣲����YR;��X# �s�������<輾���v1�,���?�o��uƅ���=\rC�����3���wӪ +�o̜1\r�\'LP���Ƹ��Hޗ���WЩʦ���v`��T\\�f�m<�:=N!���z�B�d��������FԔ7��dH��[@r�\r��և ��/D�.L�&�J������3�v�I@��:��~ �g�{���)�$�I3{����v��<��3���2G���K��g&���^��~�� �*�5���8L�� ��6�R�y���X���.¸�H�*�Z���J�ي�s���h�F]��Ǩ�~(.�Ö�������ޫM����71 WO� Q.\r�3C�V���W܄h�]����>M��V��\Z���W�jZ7e���V��R\\z�5G7~?X�[b��C�B���i���\'�A��|�/�K-�����Y�)a�5p�B;K}������I��pp1\r��P/~zρ���~�&7��q��.�G�1 jG˪���N\\\r[)���c��#(�ڗ���\n��<�2$5�vx�\";�>��u)��M\"���� ~���p�u�?�\n71؏٨�(�.�x�u�v�DŽ�HN)�!Q �Džix&p��6�e0S�3g���ِ��LRq���-����o�o7��X�+���L��Xj~2X�+ɹ�?) �.\Z/7 ��;�-b���k���.��]�ICB��o��pvt� H�kv��H��&�Gýwޮ��Պ{�l׃��`�mw`��m�-~;eU�{Z�qɺ�F ���ĵ�1Ah�iRI���J\Z#vK\n��4�b�M� 7 S��9�����E�[[�z ]�%Q5\" �^�\n�(&��\r�?���x�?8����Z��j�a!�-$ʑ�$ !���d��&\"5�vg��s�Z1-,��ӄ��M�4/�z�rCF�������+�� w�5\Z3�x8�pqI-��*��G#EX��p�@���N{�N��\'F`��\Z���r<+ʢW���H��j�-#�R�B76�!I�����]qK�� �u��0cL�y��519��}����Ȕ�ni�����?���=TTF�>�R���899���w77Ϳ`���ׇ}���nl۱CS� l�*�&V:ˡ��+<�\\�k~�������A[6��*P�}aSu(i�Z�\r���7�&_1}G��ϯ���K����m��-�H mR;3�IׅvA߉�[\'k�y; ���7��c���QiḀ�t] ^\'Y�?!��FQFc��������l� %[fxn�\0��f�b�u;�Sބ]�&�C�+����c�Y��dža��Þ�S#1nd���A}�ᡙ��)%�\'.Ȋ\r�X��Qtx����{!$���s�}����[�I���ױ�vS\n�j0��f� �l9����cӊ� \n�>0\Z`\\s*��9\'$���\\tv���A��y�qDFFje@�#3+ /��7<��3� ��\"v}\nl��M�1��-P=���^t la�Ck��k�S\Z��m�:��MIX��vl_���})�Km������Q3{c���1����}�̻=W�3W�7W�;�D?7\Z�G��\'�U,�x��\"g�F�b!�A�!a0�� �G��FT�f!\r��AF#e0O�ʆcep��y��W�↗��A�u�p2+1�#�ص���탔��Y{B N�Q1i|v���!����yG:b�P $Q!��#�9�[��`�ƺ��3> ��Bli9��� sS89X�NH�hr >]-�%��3_�闫���\"�7\Z��H�>�����AR1׊cnԞ�ݍ?�������+��gT��L�:��u�x<�x�<��c���[[�^)�d�Vy�z ����ɰw�A`��v�W|犯�T�Svq//��Qd�B!�;^�\'D�2�)PSSY�1�CR�nZ�����g/o�;�o?�o=�=�\Z����X��Al_y o>��;ӱ꓃�G�@��\'ڴ�\Z[8D�Y�����1�x����D��`,��AFTFCc���qB,\r���/�ai�+���R�`(T\0L�y�����0��w��\r�÷��#+��yU�|i,n�z0BD�1f�Nm�s�i�@<�(��)!� n��J\0=|���L ���������M�[��h����w�� ��#G���S�^�g�] �c�O�ml�a�n���D�?]�+�Z�93�k��y���⊫����~kܣ�H:��qG�6��l\\�s�\n�P�0\\P�y��I]u�B�D�[`��CX���\\y/-Z���eE���խ�*�Eey�2�s���\"*���tI\\���n {qQ��\Z����G/mB�H7O{�׀d������AQ�l����4��m]\"�]l��\r����6�k� �’��+7h����7\r�����N����D��JD̘`�k��ؽ7K[N6oO�W�~p���0A\\_/;�{�t�*�5ĀnIY���tts�J�A��%\n pƌ1a�ҳ���!�j[\Z���q�� ��Iڔ�\"D���Wן������&Y��ܾs�qM7�����Ýw܆��\"�L��A���:Ȉ�;�}��>Xlܺk�8Z��Xic�Ry�D�}������l�` 23��C\0���b�ٓ�����E��Z�8�?,9�o�܅ ���(��R�k/R���t��X�.i���9a���t�ʒZ$�Ǟ�r�K$�濓 Z���f�!�t�xk7�p� ��B����1�{��_~|@�����\rw;L���a�BQ%�9:��6���\Z��*1��j�����b��X�5\r�������������(.��2�γ|t��3˔*� �a��\r��2#t�� L(����\r:��Ѥbz9�N�S�/l-)-+S�`���9F�b-��X�Y�%&�{GI��/���{ן���E@�?��5�����\\��(�e�-Ϗ��JٗY��������=� i�3�m�(H�0�9?L��h���m9b�����@�)�D9� �ń��w�R���������0!�$\"n\"LI*a�~�!(�(Eme��L��\0�J��&���l\\|�%�(ʋ�q� �P$$�����\ZZe ei�Z����^3;6�`��HL��[�����E�q�Px��$8\0r��Rl���o�8��R��@%{�^*�� ��jU��I˜���p��;i��R�eIʬ��M��(�Y�KC�` ���\Z/�=\nၮ8�R�/�%#�S9�z�n�ȱ���u�������DI�]�\'N�h\\sf ��O[k��1�ޞ���A��h��ֿp��7�������x y��9}n�cH;����\"6�ob�Cv6�E��}��Xѧ�u}�7S6�o0U: � ̥`�q�wphC�E�33Ԥ�$A��F������ʾr���~8�?[�f&(+�F���G����۾K��9}��댈�~���M����k�Q�X9$?�<�B3.�9�v�Mw���7 ��B�%� �Em4\n�\\lm�T\n��;Wq��̎F~~-2�*\Z�j(���-2����s9>X\Z��W\' B��8<XI���ZȣM�5���횵�Kem#.�(O�1B܏b|.���E٣����yl�����$^�����������e�����X���H��ܞ/���O�n���?o��T]S����#�}��q��QS^���Ju9���ښw���Ww�lY�]��E�COv�[�b�-v���l�d^��6hT�*�Yp�����[3L8J�l��\'0�88�_0\'*jPw��C���}w ������^7��CX�7���T}ɿ��\0l�-��d!�̔<���;���[���;�����ᾛ���[d��k,���|h�F�lI%�1�nJ�M��!\'�6r���\n��[����\Z����r��6^Uۄ﷤b��\\�a�@?�~� ! �����;G�w� ^���,N��LJ�fg��w��R��=c98�WV~���.�\'Nhd�e�T�����O��˲��������f�:���f�pN�ٛz\r��k�������^u�~�O��� =���0������/=B\'fL����8��������\\(ͭFMY���&�{�ݜ����K����\'������@� 9�h�3��K�\nL���/�����;iFr��#��v%��SjsB$� ���d*��0��b��iW�\0(��T�HkK�q�Km=lB�����H>��p1�7�Z���F��i�/���o\'A�?�Y\Z��\"�Dks�*vkמ��X�uje۹w�Du��%E��f��u5��삃���́92��8Ҙ!n!ש�@��!Ĺ�S��u2�/�$�_M@D� ��=���ixO���k�t�h�yp9$�� ��Vj0�Bq���ǻи���0g[�N�� B:���# �V?��P�����/Œٗ��[o7~+Ǒgj�d:�׵cr��گ5�� g��e����\r�� B^��Qۣ\r���19f\"\n��p��������U�\\H;����huY~�W+3�ϴ�}i��Mo�O�@aJ�\\ZSN��SjSΒ�Nez��4YUB$ d�!,�W����d����}��� ��G#�@��<J �r�X���rX��J�>Sjp�o׺$8:\ZF\n�yѝ��FM�����Ɋ:�/\\*%昬��8<<F��Н �D�䥖���d\\vi��\r�;T���m ƒ�Hlr�R^����D�)9�I��V_��iV���*O+�����Gz���U����\nJ���~�i\0Ά��<467�5��᷂�U����� �|�����s���|��:~\'��,��3?�+`z�@\0��<h�puqe�b8^]�n����R�����������^u������ۄ����4����S\0����j%f<����]��r5��!.��z��I��2o�d��UW�!/��yh�S�����\"Qd�V���amN�@�X${�ѡrCY(���b4n\ZG�\nsG�<\rr\Z��:%���5�p�v���#.C^�������P��Ѐ�M��8�,r|9)א��-��n���9V,;�v)���cP/FNpK[{+,}~����� �+�� �� a��\r�0��p=\Z��u$7�5ܝm��P�˰r[\Z���K]6����E^O�U�#�ߙ��Άcq�u��<\Z���ރW^|/=� ^z� �|���/��E7�� �>B9�̅ID�HLJ�Z�={�� �� �i,���@yf�4�3Q�����t@`*#�c�����\n��F�y��Q�s#>!QM���=��t�\"XȂ*�j��$\'w��?tH�&�/W7�ٟ��9�.E;���4cĜ�xyǍxz��3.�p��Z<��:��9hC���%���p�\Z�2�\'>y.�c�ְ���p��Gy��kv��m}��q�0���01�N R��Qܽ�4�QYV�j�7����v�\0b�$�C[S��W�>J���#:�_;�2<w��H ���H\"��xnQL�P0����}�D\\OqE�2C�:X\"�`v-=�Ys��Q(J���^I��c���!�3h�IruM�pr�$\n���GO��\r�����:�ƍ��xǏCv�-\'u��HCWN��Q]�����dm�����}������g]8�g��xH�F\"d��~+��� ����VQ\"�<����n\\sv,�r��YB�Ly<n�X�\Z���K&�|\"$�O>�\\��<�/�V�\r�\n*�Æ��c�h˶mBqƵg��#�8x�6w�����0�� 88XT ��kU�����sa����1 ��\"��Ͳ r� Y��:������9�Br��7�MG�������G;7�������\"q|o�L驽S=���/���%5/;k�+�n�8��a0�vپ� ;�� {i�b0�h���e[\Z$�Pqn9�ωƪO��G��lb�6Z�ˆܟ�^/*�F��@�������&��w��`)� ������c�̶����v�CLL0�r�5��-5<����Ű���\" �{3(\0?��Dt�\'6�͆����N�q_�2�q��/;[s�O�a\n��3zc@�Ύ�ﻊ&yIr��ID�\ZZ��fz{{�B�`�H��2��;� �i�l\Z�ÓO?{Jp�r[�j�\Z,�j9��\\Q+�WdO�2�MJ�����c���XY�9x��Wu��A7�o��S���1i�Xpj����7�BbҙS�9E㫯����g�$�`�ܗ�q���O$��b<���g\rl:to���_��r���Ƶgơ�)���Ub{��u���3!|�?��a&�lQ}�2C�md���ǧ�Od���~��#5��6����fg�;��W#(R�}!\Z�H|No�� \'D�3�J�S���j�����I��\"�ŠH:;�$j�;A���h��q���\Z!�*��\Z%���J�D?k�w.�%�(ʯ�;o�Ă��ӶjU9�K���phMn�u$�s+5�B�c�R7G��e�98�\0Q�{yc��$D:���^Յ!� 8J�/Ğc���H�t�^�I�aMz��v��i ��r�48�vxx��+�\nl� ���w�<-��k�-�Z �J ��������G���+p<>^\rc��x����ƛ��àjiiiR��t̞1SU��#a����ħ�����c}�b%x�|�b8,�Yet�\r��O�`��9��;�w�����|�1{�i%^*�\nQZ&��^�\'c��Y�A�b��{��#�a��M�Br�$�wo��>�x�9phF>s��q�|N!y�!��J���Ut3�=�Ի�SD����wM���v�B���w��1���g;ߝ��^��œJ��};�}�t+\Z����daФ�`\n!ٷ��&�˿o5\0k\Z�������L����c�4�~w/��Mpr�S��5jpU>+��1E� �oh�@��� d\0� �N���<g�x$vRz�\\�;�J��\\],����w�-�c��(lؔ��a�X�����ڴ�ٔ1��\r�$9n��Cز?Gj|)J\r��3�y_Ӳ+t@�+��ª-�:iRIS=�~w^�o�<��\n��i����/���Uе \r ���;��KO�P?��R���� ���G��d��/�J������bYGa�{�\"���\Z��`Ƞ�z��������w�5֎5��X��R�%�|4�,���]����\\��t����C������ws鲯���e�qS^I� ��6d����GP��y�~<��_u�7�邾��kJ� ts0e�1Qm&b�T�#�\r��7��x��#7�T\\ m�� ���bW�c��9�T��R~��^��ܛ���O�OEsC ^��Jx�:c�E���\n���.�|�JD}p����^ڎ�i╥u��r��(t�B���3U ����o���&X��NMW ^ h�L�᎛����1`h��`Y\r�g0�\'S�g^�c&�60rT�������p�[s���q�V܊#[Spxm2n�y��r�I��˽ X��2\\<�����D��r�2�#G����2B�Bp��ʪ&|�]<�\r\rD�Om�Iϩ@^х�Δ���J�/)g��㤫\n ��\\��H^��d������U��US�������^����I�q�+ʇ���k�̳��$�~�) �B������d����������q��- ,s�\'�\n���9y�\n �\Z�ϔ�˜��>�P�:gmc�\Z;c��b�v���<g�L��z6���㕗�SR縯����ؔ����\r�566(s4r�Ks�1O�3+P�U)^���MteR����Ca�te�ПM�8hb8�m��;����-��4!y�%(/�UW�*l���di�hAv��*MR��B�Go�����1xB� r��E1X��.ۛ���i���I/|���:��;,w\\�~X�-�\'`#���g<6�:��?�@zJ��,�8(�z��MX�����Cr0cn�������ty9�J����F!)�i��[!5� .�^\\<�7��(Flb���\n�u�P|�:5�-�Z�_3���� �7�L�;���7��ш������=��&�ͅ`�����J����\\u�Iz\Z���;� �*�K�t�H�Ac�����C��%$*��p�k+kyi\'ᖛn�ɀ�ִ��\'0�_�RjJ�H�\"T�_-����H޺�FM:���R����Ƥ��G������6i����#t��#u��2��е�<y\"����b0Y�j�T�֟�]�1��A%1*f���Bq!�\'ģ�82;�E��hY�H�����\Z�:;�L3r����\'�бO�U�D��y��Q�za�\r‚���L=2�c�GG�|*jkp��S�pa�\\V|��O[���ư���iM���H�������k��b�v��\rw`c��?���س��î��h���Y�q�q�c�PWӈ�ˎ\"-�\0��x�����Ot�Sq�`0��r�����&|��,}o�a�90g��ʇ�]ȅ--�ȯ����HQ�vf [ %�o,��.�xh�b4նjj-Q-�xpɥp����� �w�8|��q���c��TT�4�X�_�F�ojցUӤ�ƺ/7�xO�����)K�(�\Z�o�\0�:���\n���>7,�Eb\0��Ç�c=h\\�u�~�=*�;62�\'���kΌ��F���������S|b�e�\"���h�h�����^��TR�kEq2!2�ǿ���œ�܇9ܖ-`.�.j��a�2%N���yj�����|U\nl�bЙ��R�X��q�T8�6���Uo��Go��e������׵i:�-w�{>^.jk�}w\"�rr��pK�k*\n�A����OuONF��=�������ڙ�\'�b�7�.\n#JT@�0Ϙ9�B*�pr���k�`�S����k�0F���f��7\n�0�|���tU8��7(  �R�� ��\Z�\Z�-@�X��� �ؚ�����q6���Z��׶��i��n�2�~/Dᎁ⾐!;�qV�w\0�!n�������]����ŗ�LJT\Z!��X�5ё1����(���A>���t����,�wF����+�A����MBYe�g�g�;9%M�j|�DG�\\B��uN�� DT���Z��?&q�\Z� h��▸8:���U�D�|OWP������3�\na܇�Ӽ<<�D( ��� �p���j\0����닙ӧb��st�� % \"#�P��d���!��tz�pt���,H����r^场�=]���Բ��Ҋ1��a��{\r�EW\r���cp�1x��q�C� }p�������If�a�aqq¥P���5����a�, ��݈9�h��`r3�u��y+�=}�v�$�\Z�9lɩ�m5Ӥ߳�؁=�8 $�%nǢ[G�����(J��I0&�r0�6����<cjO̙)5����� p�Y�/��@o\'�fT�����U x��X�v�~8O;��8���Gs�+.�� 6�qɥ����ҵ @\"%-U�\n�X�k�w�����\"&f�ܛz5���\"�w-ӯ�Y��nB^R��E�4B�y�|��� .^v���m+3�ܓb��4:��n�>#B0����텙�u�0�9p4��>�q6��-J��,\Z�U@Vr�H)K% @Y�IM�\\���\Z��*�j�*n�\r��p�*͘%I��9`��1����tYf����!�q{\"[H�� w���z�t3�����}X�=g�����k�%���DN^5&�������&jg���΃٪.�e����:U{�r�V.6BZ�����V��R�x��C\\��b˶�ڢA7�����ZNNưa�D~7*�S�\'$�?[��y(ɭD���hPy������N��1(�[�t�FƑB���w �i�\ZD\r�]/��>\">�AG�28%rrNq&V�^�~!.�y�`���z$��b����$J庻��қ�c��@Hk�������f���jQeH�\Z~��T|�����|*J��\'~��G�u�#�a)\n�LJ��ٿ+Y\"���PRV )_VV>Zr�֟@m] �nICCe�؊e#�H�ASK��~�!r�X���=\n�ժ�n�֕�b��}z_*��t>�/� @\r�~\"��y<��}(L�@�(IV���D��\\8��<4!�6r|[&*\n��gR�s� �YN7���֓�\ZL ������3���-ɂ�T��^��� ��F�����#,�G�;�%���]ؿ#�d#Q\"Sj�J����ԍ��p�?6O1lko��R\'�KNv�*���r$�υ��#-W�9ҏ��ǡT��A�9݁����\'�0\r\npBRF���y*,v�\\���T\Z\\��zD��m�5�_�E��#���mm�HNM��������ѻW�q텣A�[BCB4�m����BVb1�J�uR���>uY�/rO��Z]�(��yN#/�\rU�� ��1��]0tfϳ����`��7|���\nU�o�0�7(�9�Β}�`�����Z8�;4�\ZQ\Z��TU�c�����Ԃ��V�ᥪg�i�4TK! ��oY�)���[6��폮@ej%����a V}v�BX9a�|��Q8��h�cD���H84��c����F��]�c�� �<��b\".I�\\c�@_{xJ�����/LG�O�&��c`�:c=� /<^��\'����=���c��/�gP���{� =�Ky��8����.bò#�H,� cU��-��(/���7 ��@6~��Y��X��(^�o�nNŨI=���\r\"�ȅѠ���u��y��x �r�4\Z /���Ux���92\0�D�J� ���h䣿nB����x�������9�Ʀ�����^���䨌7���#��Ac,\Z��UX��U���q��.��E�&Y�Z� x��cu�\'Ԁ�Y�Z� x,�d� :��O�[����l��� �,k�h\r;Y��i+n\00� t��;Fa��㰴5����Ѐ�����uAvZ)����a��o\r\r���N.�x𹙸j�pxx:h* �B�BH�M��@f������� |�/zy 0��;�]��aĐ �13��p��.�l�\'0jp�*�6��f)�c�yW�ް���ke�BB7\\�˚K�э?:~w����I!tԺ:!��| �Ǯ� c^S7���W���LlYu\\�� �S/����!�[���GD{��gg�7�0���\r\'������̦pv������1nR��9n�sL���>�]�b��Olߕ�Ǟ�gk ��CjV��f��j)[��%&�y������2��,t�zY��a��c{��I�h\\�nt�?�{ �2����0�йP�3�đ<l�>�;�<>o?�^�z��($�W��Nq\rB�ឨ�n�\r����L�d�N���s��4�X���#����W�����݊cHO/��c�ؽ7;��]�m�vC2� �_��� .)�����N\Z��Lr k3$\0yE�:vFIe#&� ơ�\"�lČB;+�w�`L�d؍n���w\'���5���-�+� \"�Q\"��Pׂd1���\n�&�S<����m�q��E#0늁0��3G�r�?vx�N�D�P,nNX���� �J����8�����#���_s�-DΓ�^_!���f����\r�1�ǒJ�H�3�����6��ujL0.�ra���э�D�[ZO�NY�U���Y�����֏� vͷ��� �w-���Q�U�ĩʠ��dF��2:[nt�S�l\'g�c�+�c�(�+�q�U��Wq���AqY\nŵ�\\�5B(S\'���{��c�� 4pޔ�R4 �ܳp0�[ҍn���C\Z�����[�g�X{q��M��\rl���L�ӦG��(���*&ffpp�B^A��P�\r��/����m�\'q���Fc��4uM-�撾x�#���g�\"�ZK�э�T�W;�A�n�R�1B�C��[D��1dH\0΅+�Y���5��Dn�Tɫ^�-\'���\"fp��h�? gi�\'�U7at������ѳ��� #� qkȇ�� R��������8���лG�f��atm�_,,L�&.������#2r�tT���;����� �\'����m�E �T7�xH�M�f�\"߭:������U���*��d��\0x��cԭ�0L�Hٸ\'�D�TT���&�����/�F7���_�8E��ػ+��H�/�i j�[`�`���� �B,:,��N(,��}�A�� ������q�a��ȟGi�nt� �3�� ^nMu*��p�h���BZf9�����s��=!jj�D�$ [ȅc�2ɫ���m:�WϋFx��nۍn��\0���KJ���\0\0\0\0IEND�B`�','','','','',2,'N',NULL);
+INSERT INTO
+ `fn_app` (
+ `app_Id`,
+ `app_name`,
+ `app_image_url`,
+ `app_description`,
+ `app_notes`,
+ `app_url`,
+ `app_alternate_url`,
+ `app_rest_endpoint`,
+ `ml_app_name`,
+ `ml_app_admin_id`,
+ `mots_id`,
+ `app_password`,
+ `_open`,
+ `_enabled`,
+ `app_username`,
+ `ueb_key`,
+ `ueb_secret`,
+ `ueb_topic_name`,
+ `app_type`,
+ `auth_central`,
+ `auth_namespace`
+ )
+VALUES
+ (
+ 1,
+ 'Default',
+ 'assets/images/tmp/portal1.png',
+ 'Some Default Description',
+ 'Some Default Note',
+ 'http://localhost',
+ 'http://localhost',
+ 'http://localhost:8080/ecompportal',
+ 'EcompPortal',
+ '',
+ NULL,
+ 'dR2NABMkxPaFbIbym87ZwQ==',
+ 0,
+ 0,
+ 'm00468@portal.onap.org',
+ 'EkrqsjQqZt4ZrPh6',
+ NULL,
+ NULL,
+ 1,
+ 1,
+ 'org.onap.portal'
+ ),(
+ 2,
+ 'xDemo App',
+ 'images/cache/portal-222865671_37476.png',
+ NULL,
+ NULL,
+ 'http://portal-sdk.simpledemo.onap.org:30212/ONAPPORTALSDK/welcome.htm',
+ NULL,
+ 'http://portal-sdk:8080/ONAPPORTALSDK/api/v3',
+ '',
+ '',
+ NULL,
+ '2VxipM8Z3SETg32m3Gp0FvKS6zZ2uCbCw46WDyK6T5E=',
+ 0,
+ 1,
+ 'Default',
+ 'ueb_key',
+ 'ueb_secret',
+ 'ECOMP-PORTAL-OUTBOX',
+ 1,
+ 0,
+ NULL
+ ),(
+ 3,
+ 'DMaaP Bus Ctrl',
+ 'images/cache/portal944583064_80711.png',
+ NULL,
+ NULL,
+ 'http://dmaap-bc.simpledemo.onap.org:/ECOMPDBCAPP/dbc#/dmaap',
+ NULL,
+ 'http://dmaap-bc:8989/ECOMPDBCAPP/api/v2',
+ '',
+ '',
+ NULL,
+ 'okYTaDrhzibcbGVq5mjkVQ==',
+ 0,
+ 0,
+ 'Default',
+ 'ueb_key',
+ 'ueb_secret',
+ 'ECOMP-PORTAL-OUTBOX',
+ 1,
+ 0,
+ NULL
+ ),(
+ 4,
+ 'SDC',
+ 'images/cache/portal956868231_53879.png',
+ NULL,
+ NULL,
+ 'http://sdc.api.fe.simpledemo.onap.org:30206/sdc1/portal',
+ NULL,
+ 'http://sdc-be:8080/api/v3',
+ '',
+ '',
+ NULL,
+ 'j85yNhyIs7zKYbR1VlwEfNhS6b7Om4l0Gx5O8931sCI=',
+ 0,
+ 1,
+ 'sdc',
+ 'ueb_key',
+ 'ueb_secret',
+ 'ECOMP-PORTAL-OUTBOX',
+ 1,
+ 1,
+ 'org.onap.sdc'
+ ),(
+ 5,
+ 'Policy',
+ 'images/cache/portal1470452815_67021.png',
+ NULL,
+ NULL,
+ 'https://policy.api.simpledemo.onap.org:30219/onap/policy',
+ NULL,
+ 'https://pap:8443/onap/api/v3',
+ '',
+ '',
+ NULL,
+ '2VxipM8Z3SETg32m3Gp0FvKS6zZ2uCbCw46WDyK6T5E=',
+ 0,
+ 1,
+ 'Default',
+ 'ueb_key_5',
+ 'ueb_secret',
+ 'ECOMP-PORTAL-OUTBOX',
+ 1,
+ 1,
+ 'org.onap.policy'
+ ),(
+ 6,
+ 'Virtual Infrastructure Deployment',
+ 'images/cache/portal-345993588_92550.png',
+ NULL,
+ NULL,
+ 'https://vid.api.simpledemo.onap.org:30200/vid/welcome.htm',
+ NULL,
+ 'https://vid:8443/vid/api/v3',
+ '',
+ '',
+ NULL,
+ '2VxipM8Z3SETg32m3Gp0FvKS6zZ2uCbCw46WDyK6T5E=',
+ 0,
+ 1,
+ 'Default',
+ '2Re7Pvdkgw5aeAUD',
+ 'S31PrbOzGgL4hg4owgtx47Da',
+ 'ECOMP-PORTAL-OUTBOX-90',
+ 1,
+ 1,
+ 'org.onap.vid'
+ ),(
+ 7,
+ 'A&AI UI',
+ 'images/cache/portal-345993588_92550.png',
+ NULL,
+ NULL,
+ 'https://aai.ui.simpledemo.onap.org:30220/services/aai/webapp/index.html#/viewInspect',
+ NULL,
+ 'https://aai-sparky-be.onap:8000/api/v2',
+ '',
+ '',
+ NULL,
+ '4LK69amiIFtuzcl6Gsv97Tt7MLhzo03aoOx7dTvdjKQ=',
+ 0,
+ 1,
+ 'aaiui',
+ 'ueb_key_7',
+ 'ueb_secret',
+ 'ECOMP-PORTAL-OUTBOX',
+ 1,
+ 1,
+ 'org.onap.aai'
+ ),(
+ 8,
+ 'CLI',
+ 'images/cache/portal-345993588_92550.png',
+ NULL,
+ NULL,
+ 'http://cli.api.simpledemo.onap.org:30260/',
+ NULL,
+ NULL,
+ '',
+ '',
+ NULL,
+ '',
+ 1,
+ 1,
+ '',
+ '',
+ '',
+ '',
+ 1,
+ 0,
+ NULL
+ ),(
+ 9,
+ 'MSB',
+ 'images/cache/portal-345993588_92550.png',
+ NULL,
+ NULL,
+ 'http://msb.api.simpledemo.onap.org:30280/iui/microservices/default.html',
+ NULL,
+ NULL,
+ '',
+ '',
+ NULL,
+ '',
+ 1,
+ 1,
+ '',
+ '',
+ '',
+ '',
+ 2,
+ 0,
+ NULL
+ ),(
+ 10,
+ 'SO-Monitoring',
+ 'images/cache/portal-345993588_92550.png',
+ NULL,
+ NULL,
+ 'http://so-monitoring:30224',
+ NULL,
+ 'http://so-monitoring:30224',
+ '',
+ '',
+ NULL,
+ 'password',
+ 1,
+ 1,
+ 'user',
+ '',
+ '',
+ '',
+ 1,
+ 0,
+ 'SO-Monitoring'
+ ),(
+ 11,
+ 'LF Acumos Marketplace',
+ 'images/cache/portal_907838932_26954.png',
+ NULL,
+ NULL,
+ 'https://marketplace.acumos.org/#/home',
+ NULL,
+ NULL,
+ '',
+ '',
+ NULL,
+ '',
+ 1,
+ 1,
+ '',
+ '',
+ '',
+ '',
+ 2,
+ 0,
+ NULL
+ );
+
/*!40000 ALTER TABLE `fn_app` ENABLE KEYS */;
UNLOCK TABLES;
@@ -79,7 +347,7 @@ UNLOCK TABLES;
LOCK TABLES `fn_role` WRITE;
/*!40000 ALTER TABLE `fn_role` DISABLE KEYS */;
-INSERT INTO `fn_role` (`role_id`, `role_name`, `active_yn`, `priority`, `app_id`, `app_role_id`) VALUES (1,'System_Administrator','Y',1,NULL,NULL),(16,'Standard_User','Y',5,NULL,NULL),(900,'Restricted_App_Role','Y',1,NULL,NULL),(950,'Portal_Notification_Admin','Y',1,NULL,NULL),(999,'Account_Administrator','Y',1,NULL,NULL),(1000,'System_Administrator','Y',1,2,1),(1001,'Standard_User','Y',1,2,16),(1002,'System_Administrator','Y',1,3,1),(1003,'Standard_User','Y',1,3,16),(1004,'ADMIN','Y',1,4,0),(1005,'TESTOR','Y',1,4,1),(1006,'System_Administrator','Y',1,5,1),(1007,'Standard_User','Y',1,5,16),(1008,'System_Administrator','Y',1,6,1),(1009,'Standard_User','Y',1,6,16),(1010,'Usage_Analyst','Y',1,NULL,NULL),(1011,'View','Y',1,7,1),(1012,'Standard_User','Y',1,7,16),(2115,'Portal_Usage_Analyst','Y',6,NULL,NULL);
+INSERT INTO `fn_role` (`role_id`, `role_name`, `active_yn`, `priority`, `app_id`, `app_role_id`) VALUES (1,'System_Administrator',1,1,NULL,NULL),(16,'Standard_User',1,5,NULL,NULL),(900,'Restricted_App_Role',1,1,NULL,NULL),(950,'Portal_Notification_Admin',1,1,NULL,NULL),(999,'Account_Administrator',1,1,NULL,NULL),(1000,'System_Administrator',1,1,2,1),(1001,'Standard_User',1,1,2,16),(1002,'System_Administrator',1,1,3,1),(1003,'Standard_User',1,1,3,16),(1004,'ADMIN',1,1,4,0),(1005,'TESTOR',1,1,4,1),(1006,'System_Administrator',1,1,5,1),(1007,'Standard_User',1,1,5,16),(1008,'System_Administrator',1,1,6,1),(1009,'Standard_User',1,1,6,16),(1010,'Usage_Analyst',1,1,NULL,NULL),(1011,'View',1,1,7,1),(1012,'Standard_User',1,1,7,16),(2115,'Portal_Usage_Analyst',1,6,NULL,NULL);
/*!40000 ALTER TABLE `fn_role` ENABLE KEYS */;
UNLOCK TABLES;
@@ -99,7 +367,7 @@ UNLOCK TABLES;
LOCK TABLES `ep_basic_auth_account` WRITE;
/*!40000 ALTER TABLE `ep_basic_auth_account` DISABLE KEYS */;
-INSERT INTO `ep_basic_auth_account` (`id`, `ext_app_name`, `username`, `password`, `active_yn`) VALUES (1,'JIRA','jira','6APqvG4AU2rfLgCvMdySwQ==','Y');
+INSERT INTO `ep_basic_auth_account` (`id`, `ext_app_name`, `username`, `password`, `active_yn`) VALUES (1,'JIRA','jira','6APqvG4AU2rfLgCvMdySwQ==',1);
/*!40000 ALTER TABLE `ep_basic_auth_account` ENABLE KEYS */;
UNLOCK TABLES;
@@ -109,7 +377,7 @@ UNLOCK TABLES;
LOCK TABLES `ep_microservice` WRITE;
/*!40000 ALTER TABLE `ep_microservice` DISABLE KEYS */;
-INSERT INTO `ep_microservice` (`id`, `name`, `description`, `app_Id`, `endpoint_url`, `security_type`, `username`, `password`, `active`) VALUES (1,'News Microservice','News',1,'http://portal-app:8989/ONAPPORTAL/commonWidgets','Basic Authentication','portal','6APqvG4AU2rfLgCvMdySwQ==','Y'),(2,'Events Microservice','Events',1,'http://portal-app:8989/ONAPPORTAL/commonWidgets','Basic Authentication','portal','6APqvG4AU2rfLgCvMdySwQ==','Y'),(3,'Resources Microservice','Resources',1,'http://portal-app:8989/ONAPPORTAL/commonWidgets','Basic Authentication','portal','6APqvG4AU2rfLgCvMdySwQ==','Y'),(4,'Portal-Common-Scheduler Microservice','Portal-Common-Scheduler',1,'http://portal-app:8989/ONAPPORTAL/commonWidgets','Basic Authentication','portal','6APqvG4AU2rfLgCvMdySwQ==','Y');
+INSERT INTO `ep_microservice` (`id`, `name`, `description`, `app_Id`, `endpoint_url`, `security_type`, `username`, `password`, `active`) VALUES (1,'News Microservice','News',1,'http://portal-app:8989/ONAPPORTAL/commonWidgets','Basic Authentication','portal','6APqvG4AU2rfLgCvMdySwQ==',1),(2,'Events Microservice','Events',1,'http://portal-app:8989/ONAPPORTAL/commonWidgets','Basic Authentication','portal','6APqvG4AU2rfLgCvMdySwQ==',1),(3,'Resources Microservice','Resources',1,'http://portal-app:8989/ONAPPORTAL/commonWidgets','Basic Authentication','portal','6APqvG4AU2rfLgCvMdySwQ==',1),(4,'Portal-Common-Scheduler Microservice','Portal-Common-Scheduler',1,'http://portal-app:8989/ONAPPORTAL/commonWidgets','Basic Authentication','portal','6APqvG4AU2rfLgCvMdySwQ==',1);
/*!40000 ALTER TABLE `ep_microservice` ENABLE KEYS */;
UNLOCK TABLES;
@@ -129,7 +397,7 @@ UNLOCK TABLES;
LOCK TABLES `ep_widget_catalog` WRITE;
/*!40000 ALTER TABLE `ep_widget_catalog` DISABLE KEYS */;
-INSERT INTO `ep_widget_catalog` (`widget_id`, `wdg_name`, `service_id`, `wdg_desc`, `wdg_file_loc`, `all_user_flag`) VALUES (1,'News',1,'News','news-widget.zip','Y'),(2,'Events',2,'Events','events-widget.zip','Y'),(3,'Resources',3,'Resources','resources-widget.zip','Y'),(4,'Portal-Common-Scheduler',4,'Portal-Common-Scheduler','portal-common-scheduler-widget.zip','Y');
+INSERT INTO `ep_widget_catalog` (`wdg_name`, `service_id`, `wdg_desc`, `wdg_file_loc`, `all_user_flag`) VALUES ('News',1,'News','news-widget.zip',1),('Events',2,'Events','events-widget.zip',1),('Resources',3,'Resources','resources-widget.zip',1),('Portal-Common-Scheduler',4,'Portal-Common-Scheduler','portal-common-scheduler-widget.zip',1);
/*!40000 ALTER TABLE `ep_widget_catalog` ENABLE KEYS */;
UNLOCK TABLES;
@@ -190,7 +458,7 @@ UNLOCK TABLES;
LOCK TABLES `fn_language` WRITE;
/*!40000 ALTER TABLE `fn_language` DISABLE KEYS */;
-INSERT INTO `fn_language` (`language_id`, `language_name`, `language_alias`) VALUES (1,'English','EN'),(2,'简体中文','CN');
+INSERT INTO `fn_language` (`language_name`, `language_alias`) VALUES ('English','EN'),('简体中文','CN');
/*!40000 ALTER TABLE `fn_language` ENABLE KEYS */;
UNLOCK TABLES;
@@ -230,7 +498,7 @@ UNLOCK TABLES;
LOCK TABLES `fn_lu_priority` WRITE;
/*!40000 ALTER TABLE `fn_lu_priority` DISABLE KEYS */;
-INSERT INTO `fn_lu_priority` (`priority_id`, `priority`, `active_yn`, `sort_order`) VALUES (10,'Low','Y',10),(20,'Normal','Y',20),(30,'High','Y',30),(40,'Urgent','Y',40),(50,'Fatal','Y',50);
+INSERT INTO `fn_lu_priority` (`priority_id`, `priority`, `active_yn`, `sort_order`) VALUES (10,'Low',1,10),(20,'Normal',1,20),(30,'High',1,30),(40,'Urgent',1,40),(50,'Fatal',1,50);
/*!40000 ALTER TABLE `fn_lu_priority` ENABLE KEYS */;
UNLOCK TABLES;
@@ -260,7 +528,7 @@ UNLOCK TABLES;
LOCK TABLES `fn_menu` WRITE;
/*!40000 ALTER TABLE `fn_menu` DISABLE KEYS */;
-INSERT INTO `fn_menu` (`menu_id`, `label`, `parent_id`, `sort_order`, `action`, `function_cd`, `active_yn`, `servlet`, `query_string`, `external_url`, `target`, `menu_set_cd`, `separator_yn`, `image_src`) VALUES (1,'root',NULL,10,NULL,'menu_home','N',NULL,NULL,NULL,NULL,'APP','N',NULL),(2,'Home',1,10,'root.applicationsHome','menu_home','Y',NULL,NULL,NULL,NULL,'APP','N','icon-building-home'),(3,'Application Catalog',1,15,'root.appCatalog','menu_home','Y',NULL,NULL,NULL,NULL,'APP','N','icon-retail-gallery'),(4,'Widget Catalog',1,20,'root.widgetCatalog','menu_home','Y',NULL,NULL,NULL,NULL,'APP','N','icon-retail-gallery'),(5,'Admins',1,40,'root.admins','menu_admin','Y',NULL,NULL,NULL,NULL,'APP','N','icon-content-star'),(6,'Roles',1,45,'root.roles','menu_acc_admin','Y',NULL,NULL,NULL,NULL,'APP','N','icon-people-groupcollaboration'),(7,'Users',1,50,'root.users','menu_acc_admin','Y',NULL,NULL,NULL,NULL,'APP','N','icon-people-groupcollaboration'),(8,'Portal Admins',1,60,'root.portalAdmins','menu_admin','Y',NULL,NULL,NULL,NULL,'APP','N','icon-controls-settingsconnectedactivity'),(9,'Application Onboarding',1,70,'root.applications','menu_admin','Y',NULL,NULL,NULL,NULL,'APP','N','icon-content-grid2'),(10,'Widget Onboarding',1,80,'root.widgetOnboarding','menu_admin','Y',NULL,NULL,NULL,NULL,'APP','N','icon-content-grid2'),(11,'Edit Functional Menu',1,90,'root.functionalMenu','menu_admin','Y',NULL,NULL,NULL,NULL,'APP','N','icon-misc-pen'),(12,'User Notifications',1,100,'root.userNotifications','edit_notification','Y',NULL,NULL,NULL,NULL,'APP','N','icon-controls-settingsconnectedactivity'),(13,'Microservice Onboarding',1,110,'root.microserviceOnboarding','menu_admin','Y',NULL,NULL,NULL,NULL,'APP','N','icon-content-grid2'),(15,'App Account Management',1,130,'root.accountOnboarding','menu_admin','Y',NULL,NULL,NULL,NULL,'App','N','icon-content-grid2');
+INSERT INTO `fn_menu` (`menu_id`, `label`, `parent_id`, `sort_order`, `action`, `function_cd`, `active_yn`, `servlet`, `query_string`, `external_url`, `target`, `menu_set_cd`, `separator_yn`, `image_src`) VALUES (1,'root',NULL,10,NULL,'menu_home',0,NULL,NULL,NULL,NULL,'APP',0,NULL),(2,'Home',1,10,'root.applicationsHome','menu_home',1,NULL,NULL,NULL,NULL,'APP',0,'icon-building-home'),(3,'Application Catalog',1,15,'root.appCatalog','menu_home',1,NULL,NULL,NULL,NULL,'APP',0,'icon-retail-gallery'),(4,'Widget Catalog',1,20,'root.widgetCatalog','menu_home',1,NULL,NULL,NULL,NULL,'APP',0,'icon-retail-gallery'),(5,'Admins',1,40,'root.admins','menu_admin',1,NULL,NULL,NULL,NULL,'APP',0,'icon-content-star'),(6,'Roles',1,45,'root.roles','menu_acc_admin',1,NULL,NULL,NULL,NULL,'APP',0,'icon-people-groupcollaboration'),(7,'Users',1,50,'root.users','menu_acc_admin',1,NULL,NULL,NULL,NULL,'APP',0,'icon-people-groupcollaboration'),(8,'Portal Admins',1,60,'root.portalAdmins','menu_admin',1,NULL,NULL,NULL,NULL,'APP',0,'icon-controls-settingsconnectedactivity'),(9,'Application Onboarding',1,70,'root.applications','menu_admin',1,NULL,NULL,NULL,NULL,'APP',0,'icon-content-grid2'),(10,'Widget Onboarding',1,80,'root.widgetOnboarding','menu_admin',1,NULL,NULL,NULL,NULL,'APP',0,'icon-content-grid2'),(11,'Edit Functional Menu',1,90,'root.functionalMenu','menu_admin',1,NULL,NULL,NULL,NULL,'APP',0,'icon-misc-pen'),(12,'User Notifications',1,100,'root.userNotifications','edit_notification',1,NULL,NULL,NULL,NULL,'APP',0,'icon-controls-settingsconnectedactivity'),(13,'Microservice Onboarding',1,110,'root.microserviceOnboarding','menu_admin',1,NULL,NULL,NULL,NULL,'APP',0,'icon-content-grid2'),(15,'App Account Management',1,130,'root.accountOnboarding','menu_admin',1,NULL,NULL,NULL,NULL,'App',0,'icon-content-grid2');
/*!40000 ALTER TABLE `fn_menu` ENABLE KEYS */;
UNLOCK TABLES;
@@ -281,44 +549,44 @@ INSERT INTO
`image_src`
)
VALUES
- (175, 1, 'Manage', NULL, '', 'Y', NULL),
- (178, 2, 'Support', NULL, '', 'Y', NULL),
- (1, 2, 'Design', 175, '', 'Y', NULL),
- (2, 8, 'ECOMP Platform Management', 175, '', 'N', NULL),
- (3, 5, 'Technology Insertion', 175, '', 'Y', NULL),
- (5, 7, 'Performance Management', 175, '', 'N', NULL),
- (6, 6, 'Technology Management', 175, '', 'Y', NULL),
- (7, 4, 'Capacity Planning', 175, '', 'N', NULL),
- (8, 3, 'Operations Planning', 175, '', 'Y', NULL),
- (11, 1, 'Product Design', 1, '', 'Y', NULL),
- (12, 2, 'Resource/Service Design & Onboarding', 1, '', 'Y', NULL),
- (13, 3, 'Orchestration (recipe/Process) Design', 1, '', 'N', NULL),
- (14, 4, 'Service Graph visualizer', 1, '', 'N', NULL),
- (15, 5, 'Distribution', 1, '', 'Y', NULL),
- (16, 6, 'Testing', 1, '', 'Y', NULL),
- (17, 7, 'Simulation', 1, '', 'N', NULL),
- (18, 8, 'Certification', 1, '', 'N', NULL),
- (19, 9, 'Policy Creation/Management', 1, 'http://policy.api.simpledemo.onap.org:8443/onap/policy', 'Y', NULL),
- (20, 10, 'Catalog Browser', 1, '', 'Y', NULL),
- (24, 5, 'Create/Manage Policy', 12, 'http://policy.api.simpledemo.onap.org:8443/onap/policy', 'Y', NULL),
- (56, 1, 'Policy Engineering', 8, 'http://policy.api.simpledemo.onap.org:8443/onap/policy', 'Y', NULL),
- (115, 1, 'Test/Approve a Resource or Service', 16, 'http://sdc.api.simpledemo.onap.org:8181/sdc1/portal#/dashboard', 'Y', NULL),
- (130, 1, 'Favorites', 175, '', 'y', NULL),
- (139, 2, 'Approve a Service for distribution', 12, 'http://sdc.api.simpledemo.onap.org:8181/sdc1/portal#/dashboard', 'Y',NULL),
- (142, 3, 'Create a License model', 12, 'http://sdc.api.simpledemo.onap.org:8181/sdc1/portal#/onboardVendor', 'Y', NULL),
- (145, 1, 'Distribute a Service', 15, 'http://sdc.api.simpledemo.onap.org:8181/sdc1/portal#/dashboard', 'Y', NULL),
- (181, 1, 'Contact Us', 178, '', 'Y', NULL),
- (184, 2, 'Get Access', 178, '', 'Y', NULL),
- (301, 1, 'Create a Product', 11, 'http://sdc.api.simpledemo.onap.org:8181/sdc1/portal#/dashboard', 'Y', NULL),
- (304, 2, 'Create a Vendor Software Product', 11, 'http://sdc.api.simpledemo.onap.org:8181/sdc1/portal#/onboardVendor', 'Y', NULL),
- (307, 1, 'Manage a Resource/Service', 20, 'http://sdc.api.simpledemo.onap.org:8181/sdc1/portal#/catalog', 'Y', NULL),
- (310, 2, 'Manage a Product', 20, 'http://sdc.api.simpledemo.onap.org:8181/sdc1/portal#/catalog', 'Y', NULL),
- (313, 3, 'View a Resource/Service/Product', 20, 'http://sdc.api.simpledemo.onap.org:8181/sdc1/portal#/catalog', 'Y', NULL),
- (316, 11, 'Administration', 1, '', 'Y', NULL),
- (148, 1, 'User Management / Category Management', 316, 'http://sdc.api.simpledemo.onap.org:8181/sdc1/portal#/adminDashboard', 'Y', NULL),
- (317, 1, 'Message Bus Management', 6, 'http://portal.api.simpledemo.onap.org:8989/ECOMPDBCAPP/dbc#/dmaap', 'Y', NULL),
- (318, 1, 'Infrastructure Provisioning', 3, '', 'Y', NULL),
- (319, 1, 'Infrastructure VNF Provisioning', 318, 'https://vid.api.simpledemo.onap.org:8443/vid/welcome.htm', 'Y', NULL);
+ (175, 1, 'Manage', NULL, '', 1, NULL),
+ (178, 2, 'Support', NULL, '', 1, NULL),
+ (1, 2, 'Design', 175, '', 1, NULL),
+ (2, 8, 'ECOMP Platform Management', 175, '', 0, NULL),
+ (3, 5, 'Technology Insertion', 175, '', 1, NULL),
+ (5, 7, 'Performance Management', 175, '', 0, NULL),
+ (6, 6, 'Technology Management', 175, '', 1, NULL),
+ (7, 4, 'Capacity Planning', 175, '', 0, NULL),
+ (8, 3, 'Operations Planning', 175, '', 1, NULL),
+ (11, 1, 'Product Design', 1, '', 1, NULL),
+ (12, 2, 'Resource/Service Design & Onboarding', 1, '', 1, NULL),
+ (13, 3, 'Orchestration (recipe/Process) Design', 1, '', 0, NULL),
+ (14, 4, 'Service Graph visualizer', 1, '', 0, NULL),
+ (15, 5, 'Distribution', 1, '', 1, NULL),
+ (16, 6, 'Testing', 1, '', 1, NULL),
+ (17, 7, 'Simulation', 1, '', 0, NULL),
+ (18, 8, 'Certification', 1, '', 0, NULL),
+ (19, 9, 'Policy Creation/Management', 1, 'http://policy.api.simpledemo.onap.org:8443/onap/policy', 1, NULL),
+ (20, 10, 'Catalog Browser', 1, '', 1, NULL),
+ (24, 5, 'Create/Manage Policy', 12, 'http://policy.api.simpledemo.onap.org:8443/onap/policy', 1, NULL),
+ (56, 1, 'Policy Engineering', 8, 'http://policy.api.simpledemo.onap.org:8443/onap/policy', 1, NULL),
+ (115, 1, 'Test/Approve a Resource or Service', 16, 'http://sdc.api.simpledemo.onap.org:8181/sdc1/portal#/dashboard', 1, NULL),
+ (130, 1, 'Favorites', 175, '', 1, NULL),
+ (139, 2, 'Approve a Service for distribution', 12, 'http://sdc.api.simpledemo.onap.org:8181/sdc1/portal#/dashboard', 1,NULL),
+ (142, 3, 'Create a License model', 12, 'http://sdc.api.simpledemo.onap.org:8181/sdc1/portal#/onboardVendor', 1, NULL),
+ (145, 1, 'Distribute a Service', 15, 'http://sdc.api.simpledemo.onap.org:8181/sdc1/portal#/dashboard', 1, NULL),
+ (181, 1, 'Contact Us', 178, '', 1, NULL),
+ (184, 2, 'Get Access', 178, '', 1, NULL),
+ (301, 1, 'Create a Product', 11, 'http://sdc.api.simpledemo.onap.org:8181/sdc1/portal#/dashboard', 1, NULL),
+ (304, 2, 'Create a Vendor Software Product', 11, 'http://sdc.api.simpledemo.onap.org:8181/sdc1/portal#/onboardVendor', 1, NULL),
+ (307, 1, 'Manage a Resource/Service', 20, 'http://sdc.api.simpledemo.onap.org:8181/sdc1/portal#/catalog', 1, NULL),
+ (310, 2, 'Manage a Product', 20, 'http://sdc.api.simpledemo.onap.org:8181/sdc1/portal#/catalog', 1, NULL),
+ (313, 3, 'View a Resource/Service/Product', 20, 'http://sdc.api.simpledemo.onap.org:8181/sdc1/portal#/catalog', 1, NULL),
+ (316, 11, 'Administration', 1, '', 1, NULL),
+ (148, 1, 'User Management / Category Management', 316, 'http://sdc.api.simpledemo.onap.org:8181/sdc1/portal#/adminDashboard', 1, NULL),
+ (317, 1, 'Message Bus Management', 6, 'http://portal.api.simpledemo.onap.org:8989/ECOMPDBCAPP/dbc#/dmaap', 1, NULL),
+ (318, 1, 'Infrastructure Provisioning', 3, '', 1, NULL),
+ (319, 1, 'Infrastructure VNF Provisioning', 318, 'https://vid.api.simpledemo.onap.org:8443/vid/welcome.htm', 1, NULL);
/*!40000 ALTER TABLE `fn_menu_functional` ENABLE KEYS */;
UNLOCK TABLES;
@@ -442,7 +710,7 @@ UNLOCK TABLES;
LOCK TABLES `fn_tab` WRITE;
/*!40000 ALTER TABLE `fn_tab` DISABLE KEYS */;
-INSERT INTO `fn_tab` (`tab_cd`, `tab_name`, `tab_descr`, `action`, `function_cd`, `active_yn`, `sort_order`, `parent_tab_cd`, `tab_set_cd`) VALUES ('TAB1','Tab 1','Tab 1 Information','tab1.htm','menu_tab','Y',10,NULL,'APP'),('TAB2','Tab 2','Tab 2 Information','tab2_sub1.htm','menu_tab','Y',20,NULL,'APP'),('TAB2_SUB1','Sub Tab 1','Sub Tab 1 Information','tab2_sub1.htm','menu_tab','Y',10,'TAB2','APP'),('TAB2_SUB1_S1','Left Tab 1','Sub - Sub Tab 1 Information','tab2_sub1.htm','menu_tab','Y',10,'TAB2_SUB1','APP'),('TAB2_SUB2','Sub Tab 2','Sub Tab 2 Information','tab2_sub2.htm','menu_tab','Y',20,'TAB2','APP'),('TAB2_SUB3','Sub Tab 3','Sub Tab 3 Information','tab2_sub3.htm','menu_tab','Y',30,'TAB2','APP'),('TAB3','Tab 3','Tab 3 Information','tab3.htm','menu_tab','Y',30,NULL,'APP'),('TAB4','Tab 4','Tab 4 Information','tab4.htm','menu_tab','Y',40,NULL,'APP');
+INSERT INTO `fn_tab` (`tab_cd`, `tab_name`, `tab_descr`, `action`, `function_cd`, `active_yn`, `sort_order`, `parent_tab_cd`, `tab_set_cd`) VALUES ('TAB1','Tab 1','Tab 1 Information','tab1.htm','menu_tab',1,10,NULL,'APP'),('TAB2','Tab 2','Tab 2 Information','tab2_sub1.htm','menu_tab',1,20,NULL,'APP'),('TAB2_SUB1','Sub Tab 1','Sub Tab 1 Information','tab2_sub1.htm','menu_tab',1,10,'TAB2','APP'),('TAB2_SUB1_S1','Left Tab 1','Sub - Sub Tab 1 Information','tab2_sub1.htm','menu_tab',1,10,'TAB2_SUB1','APP'),('TAB2_SUB2','Sub Tab 2','Sub Tab 2 Information','tab2_sub2.htm','menu_tab',1,20,'TAB2','APP'),('TAB2_SUB3','Sub Tab 3','Sub Tab 3 Information','tab2_sub3.htm','menu_tab',1,30,'TAB2','APP'),('TAB3','Tab 3','Tab 3 Information','tab3.htm','menu_tab',1,30,NULL,'APP'),('TAB4','Tab 4','Tab 4 Information','tab4.htm','menu_tab',1,40,NULL,'APP');
/*!40000 ALTER TABLE `fn_tab` ENABLE KEYS */;
UNLOCK TABLES;
@@ -462,7 +730,570 @@ UNLOCK TABLES;
LOCK TABLES `fn_user` WRITE;
/*!40000 ALTER TABLE `fn_user` DISABLE KEYS */;
-INSERT INTO `fn_user` (`user_id`, `org_id`, `manager_id`, `first_name`, `middle_name`, `last_name`, `phone`, `fax`, `cellular`, `email`, `address_id`, `alert_method_cd`, `hrid`, `org_user_id`, `org_code`, `login_id`, `login_pwd`, `last_login_date`, `active_yn`, `created_id`, `created_date`, `modified_id`, `modified_date`, `is_internal_yn`, `address_line_1`, `address_line_2`, `city`, `state_cd`, `zip_code`, `country_cd`, `location_clli`, `org_manager_userid`, `company`, `department_name`, `job_title`, `timezone`, `department`, `business_unit`, `business_unit_name`, `cost_center`, `fin_loc_code`, `silo_status`, `language_id`) VALUES (1,NULL,NULL,'Demo',NULL,'User',NULL,NULL,NULL,'demo@openecomp.org',NULL,NULL,NULL,'demo',NULL,'demo','demo123','2019-08-08 12:18:17','Y',NULL,'2016-10-14 21:00:00',1,'2019-08-08 12:18:17','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(2,NULL,NULL,'Jimmy',NULL,'Hendrix',NULL,NULL,NULL,'admin@onap.org',NULL,NULL,NULL,'jh0003',NULL,'jh0003','demo123','2019-08-08 10:16:11','Y',NULL,'2016-10-14 21:00:00',1,'2019-08-08 10:16:11','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(3,NULL,NULL,'Carlos',NULL,'Santana',NULL,NULL,NULL,'designer@onap.org',NULL,NULL,NULL,'cs0008',NULL,'cs0008','demo123','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(4,NULL,NULL,'Joni',NULL,'Mitchell',NULL,NULL,NULL,'tester@onap.org',NULL,NULL,NULL,'jm0007',NULL,'jm0007','demo123','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(5,NULL,NULL,'Steve',NULL,'Regev',NULL,NULL,NULL,'ops@onap.org',NULL,NULL,NULL,'op0001',NULL,'op0001','demo123','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(6,NULL,NULL,'David',NULL,'Shadmi',NULL,NULL,NULL,'governor@onap.org',NULL,NULL,NULL,'gv0001',NULL,'gv0001','demo123','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(7,NULL,NULL,'Teddy',NULL,'Isashar',NULL,NULL,NULL,'pm1@onap.org',NULL,NULL,NULL,'pm0001',NULL,'pm0001','demo123','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(8,NULL,NULL,'Eden',NULL,'Rozin',NULL,NULL,NULL,'ps1@onap.org',NULL,NULL,NULL,'ps0001',NULL,'ps0001','demo123','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(9,NULL,NULL,'vid1',NULL,'user',NULL,NULL,NULL,'vid1@onap.org',NULL,NULL,NULL,'vid1',NULL,'vid1','demo123','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(10,NULL,NULL,'vid2',NULL,'user',NULL,NULL,NULL,'vid2@onap.org',NULL,NULL,NULL,'vid2',NULL,'vid2','demo123','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(11,NULL,NULL,'vid3',NULL,'user',NULL,NULL,NULL,'vid3@onap.org',NULL,NULL,NULL,'vid3',NULL,'vid3','demo123','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1),(12,NULL,NULL,'steve',NULL,'user',NULL,NULL,NULL,'steve@onap.org',NULL,NULL,NULL,'steve',NULL,'steve','demo123','2017-05-19 15:11:16','Y',NULL,'2017-05-19 21:00:00',1,'2017-05-19 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,1);
+INSERT INTO
+ `fn_user` (
+ `org_id`,
+ `manager_id`,
+ `first_name`,
+ `middle_name`,
+ `last_name`,
+ `phone`,
+ `fax`,
+ `cellular`,
+ `email`,
+ `address_id`,
+ `alert_method_cd`,
+ `hrid`,
+ `org_user_id`,
+ `org_code`,
+ `login_id`,
+ `login_pwd`,
+ `last_login_date`,
+ `active_yn`,
+ `created_id`,
+ `created_date`,
+ `modified_id`,
+ `modified_date`,
+ `is_internal_yn`,
+ `address_line_1`,
+ `address_line_2`,
+ `city`,
+ `state_cd`,
+ `zip_code`,
+ `country_cd`,
+ `location_clli`,
+ `org_manager_userid`,
+ `company`,
+ `department_name`,
+ `job_title`,
+ `timezone`,
+ `department`,
+ `business_unit`,
+ `business_unit_name`,
+ `cost_center`,
+ `fin_loc_code`,
+ `silo_status`,
+ `language_id`
+ )
+VALUES
+ (
+ NULL,
+ NULL,
+ 'Demo',
+ NULL,
+ 'User',
+ NULL,
+ NULL,
+ NULL,
+ 'demo@openecomp.org',
+ NULL,
+ NULL,
+ NULL,
+ 'demo',
+ NULL,
+ 'demo',
+ 'demo123',
+ '2019-08-08 12:18:17',
+ 1,
+ NULL,
+ '2016-10-14 21:00:00',
+ 1,
+ '2019-08-08 12:18:17',
+ 0,
+ NULL,
+ NULL,
+ NULL,
+ 'NJ',
+ NULL,
+ 'US',
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 10,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 1
+ ),(
+ NULL,
+ NULL,
+ 'Jimmy',
+ NULL,
+ 'Hendrix',
+ NULL,
+ NULL,
+ NULL,
+ 'admin@onap.org',
+ NULL,
+ NULL,
+ NULL,
+ 'jh0003',
+ NULL,
+ 'jh0003',
+ 'demo123',
+ '2019-08-08 10:16:11',
+ 1,
+ NULL,
+ '2016-10-14 21:00:00',
+ 1,
+ '2019-08-08 10:16:11',
+ 0,
+ NULL,
+ NULL,
+ NULL,
+ 'NJ',
+ NULL,
+ 'US',
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 10,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 1
+ ),(
+ NULL,
+ NULL,
+ 'Carlos',
+ NULL,
+ 'Santana',
+ NULL,
+ NULL,
+ NULL,
+ 'designer@onap.org',
+ NULL,
+ NULL,
+ NULL,
+ 'cs0008',
+ NULL,
+ 'cs0008',
+ 'demo123',
+ '2016-10-20 15:11:16',
+ 1,
+ NULL,
+ '2016-10-14 21:00:00',
+ 1,
+ '2016-10-20 15:11:16',
+ 0,
+ NULL,
+ NULL,
+ NULL,
+ 'NJ',
+ NULL,
+ 'US',
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 10,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 1
+ ),(
+ NULL,
+ NULL,
+ 'Joni',
+ NULL,
+ 'Mitchell',
+ NULL,
+ NULL,
+ NULL,
+ 'tester@onap.org',
+ NULL,
+ NULL,
+ NULL,
+ 'jm0007',
+ NULL,
+ 'jm0007',
+ 'demo123',
+ '2016-10-20 15:11:16',
+ 1,
+ NULL,
+ '2016-10-14 21:00:00',
+ 1,
+ '2016-10-20 15:11:16',
+ 0,
+ NULL,
+ NULL,
+ NULL,
+ 'NJ',
+ NULL,
+ 'US',
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 10,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 1
+ ),(
+ NULL,
+ NULL,
+ 'Steve',
+ NULL,
+ 'Regev',
+ NULL,
+ NULL,
+ NULL,
+ 'ops@onap.org',
+ NULL,
+ NULL,
+ NULL,
+ 'op0001',
+ NULL,
+ 'op0001',
+ 'demo123',
+ '2016-10-20 15:11:16',
+ 1,
+ NULL,
+ '2016-10-14 21:00:00',
+ 1,
+ '2016-10-20 15:11:16',
+ 0,
+ NULL,
+ NULL,
+ NULL,
+ 'NJ',
+ NULL,
+ 'US',
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 10,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 1
+ ),(
+ NULL,
+ NULL,
+ 'David',
+ NULL,
+ 'Shadmi',
+ NULL,
+ NULL,
+ NULL,
+ 'governor@onap.org',
+ NULL,
+ NULL,
+ NULL,
+ 'gv0001',
+ NULL,
+ 'gv0001',
+ 'demo123',
+ '2016-10-20 15:11:16',
+ 1,
+ NULL,
+ '2016-10-14 21:00:00',
+ 1,
+ '2016-10-20 15:11:16',
+ 0,
+ NULL,
+ NULL,
+ NULL,
+ 'NJ',
+ NULL,
+ 'US',
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 10,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 1
+ ),(
+ NULL,
+ NULL,
+ 'Teddy',
+ NULL,
+ 'Isashar',
+ NULL,
+ NULL,
+ NULL,
+ 'pm1@onap.org',
+ NULL,
+ NULL,
+ NULL,
+ 'pm0001',
+ NULL,
+ 'pm0001',
+ 'demo123',
+ '2016-10-20 15:11:16',
+ 1,
+ NULL,
+ '2016-10-14 21:00:00',
+ 1,
+ '2016-10-20 15:11:16',
+ 0,
+ NULL,
+ NULL,
+ NULL,
+ 'NJ',
+ NULL,
+ 'US',
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 10,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 1
+ ),(
+ NULL,
+ NULL,
+ 'Eden',
+ NULL,
+ 'Rozin',
+ NULL,
+ NULL,
+ NULL,
+ 'ps1@onap.org',
+ NULL,
+ NULL,
+ NULL,
+ 'ps0001',
+ NULL,
+ 'ps0001',
+ 'demo123',
+ '2016-10-20 15:11:16',
+ 1,
+ NULL,
+ '2016-10-14 21:00:00',
+ 1,
+ '2016-10-20 15:11:16',
+ 0,
+ NULL,
+ NULL,
+ NULL,
+ 'NJ',
+ NULL,
+ 'US',
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 10,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 1
+ ),(
+ NULL,
+ NULL,
+ 'vid1',
+ NULL,
+ 'user',
+ NULL,
+ NULL,
+ NULL,
+ 'vid1@onap.org',
+ NULL,
+ NULL,
+ NULL,
+ 'vid1',
+ NULL,
+ 'vid1',
+ 'demo123',
+ '2016-10-20 15:11:16',
+ 1,
+ NULL,
+ '2016-10-14 21:00:00',
+ 1,
+ '2016-10-20 15:11:16',
+ 0,
+ NULL,
+ NULL,
+ NULL,
+ 'NJ',
+ NULL,
+ 'US',
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 10,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 1
+ ),(
+ NULL,
+ NULL,
+ 'vid2',
+ NULL,
+ 'user',
+ NULL,
+ NULL,
+ NULL,
+ 'vid2@onap.org',
+ NULL,
+ NULL,
+ NULL,
+ 'vid2',
+ NULL,
+ 'vid2',
+ 'demo123',
+ '2016-10-20 15:11:16',
+ 1,
+ NULL,
+ '2016-10-14 21:00:00',
+ 1,
+ '2016-10-20 15:11:16',
+ 0,
+ NULL,
+ NULL,
+ NULL,
+ 'NJ',
+ NULL,
+ 'US',
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 10,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 1
+ ),(
+ NULL,
+ NULL,
+ 'vid3',
+ NULL,
+ 'user',
+ NULL,
+ NULL,
+ NULL,
+ 'vid3@onap.org',
+ NULL,
+ NULL,
+ NULL,
+ 'vid3',
+ NULL,
+ 'vid3',
+ 'demo123',
+ '2016-10-20 15:11:16',
+ 1,
+ NULL,
+ '2016-10-14 21:00:00',
+ 1,
+ '2016-10-20 15:11:16',
+ 0,
+ NULL,
+ NULL,
+ NULL,
+ 'NJ',
+ NULL,
+ 'US',
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 10,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 1
+ ),(
+ NULL,
+ NULL,
+ 'steve',
+ NULL,
+ 'user',
+ NULL,
+ NULL,
+ NULL,
+ 'steve@onap.org',
+ NULL,
+ NULL,
+ NULL,
+ 'steve',
+ NULL,
+ 'steve',
+ 'demo123',
+ '2017-05-19 15:11:16',
+ 1,
+ NULL,
+ '2017-05-19 21:00:00',
+ 1,
+ '2017-05-19 15:11:16',
+ 0,
+ NULL,
+ NULL,
+ NULL,
+ 'NJ',
+ NULL,
+ 'US',
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 10,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 1
+ );
+
/*!40000 ALTER TABLE `fn_user` ENABLE KEYS */;
UNLOCK TABLES;
@@ -472,7 +1303,7 @@ UNLOCK TABLES;
LOCK TABLES `ep_pers_user_app_sort` WRITE;
/*!40000 ALTER TABLE `ep_pers_user_app_sort` DISABLE KEYS */;
-INSERT INTO `ep_pers_user_app_sort` (`id`, `user_id`, `sort_pref`) VALUES (1,1,'N');
+INSERT INTO `ep_pers_user_app_sort` (`id`, `user_id`, `sort_pref`) VALUES (1,1,0);
/*!40000 ALTER TABLE `ep_pers_user_app_sort` ENABLE KEYS */;
UNLOCK TABLES;
diff --git a/portal-BE/src/main/resources/test.properties b/portal-BE/src/main/resources/test.properties
index 93472b11..bdc23f7c 100644
--- a/portal-BE/src/main/resources/test.properties
+++ b/portal-BE/src/main/resources/test.properties
@@ -10,7 +10,3 @@ spring.datasource.username=sa
spring.datasource.password=password
spring.datasource.initialization-mode=always
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
-
-spring.thymeleaf.check-template=true
-spring.thymeleaf.check-template-location=true
-spring.thymeleaf.enabled=true
diff --git a/portal-BE/src/test/java/org/onap/portal/controller/UserRolesControllerTest.java b/portal-BE/src/test/java/org/onap/portal/controller/UserRolesControllerTest.java
new file mode 100644
index 00000000..b2048e8f
--- /dev/null
+++ b/portal-BE/src/test/java/org/onap/portal/controller/UserRolesControllerTest.java
@@ -0,0 +1,130 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ============LICENSE_END============================================
+ *
+ *
+ */
+
+package org.onap.portal.controller;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.time.LocalDateTime;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
+import javax.sql.DataSource;
+import org.h2.tools.RunScript;
+import org.hibernate.Session;
+import org.hibernate.jdbc.Work;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.jupiter.api.Test;
+import org.junit.runner.RunWith;
+import org.onap.portal.domain.db.fn.FnApp;
+import org.onap.portal.domain.db.fn.FnLanguage;
+import org.onap.portal.domain.db.fn.FnRole;
+import org.onap.portal.domain.db.fn.FnUser;
+import org.onap.portal.domain.db.fn.FnUserRole;
+import org.onap.portal.service.fn.FnAppService;
+import org.onap.portal.service.fn.FnLanguageService;
+import org.onap.portal.service.fn.FnLuTimezoneService;
+import org.onap.portal.service.fn.FnRoleService;
+import org.onap.portal.service.fn.FnUserRoleService;
+import org.onap.portal.service.fn.FnUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.jdbc.datasource.init.DatabasePopulatorUtils;
+import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.test.context.TestPropertySource;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.setup.MockMvcBuilders;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.context.WebApplicationContext;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+@Transactional
+@TestPropertySource(locations = "classpath:test.properties")
+class UserRolesControllerTest {
+ @Autowired
+ private UserRolesController userRolesController;
+ @Autowired
+ private FnUserService fnUserService;
+ @Autowired
+ private FnUserRoleService fnUserRoleService;
+ @Autowired
+ private FnLanguageService fnLanguageService;
+ @Autowired
+ private FnAppService fnAppService;
+ @Autowired
+ private FnRoleService fnRoleService;
+
+ @Test
+ void checkIfUserIsSuperAdminFalse() {
+ UsernamePasswordAuthenticationToken principal = new UsernamePasswordAuthenticationToken("ps0001",
+ "demo123");
+ //Given
+ boolean expected = false;
+ //When
+ boolean actual = userRolesController.checkIfUserIsSuperAdmin(principal);
+ //Then
+ assertEquals(expected, actual);
+ }
+
+ @Test
+ void checkIfUserIsSuperAdminTrue() {
+ UsernamePasswordAuthenticationToken principal = new UsernamePasswordAuthenticationToken("demo",
+ "demo123");
+ //Given
+ boolean expected = true;
+ //When
+ boolean actual = userRolesController.checkIfUserIsSuperAdmin(principal);
+ //Then
+ assertEquals(expected, actual);
+ }
+} \ No newline at end of file
diff --git a/portal-BE/src/test/java/org/onap/portal/controller/WidgetMSControllerTest.java b/portal-BE/src/test/java/org/onap/portal/controller/WidgetMSControllerTest.java
new file mode 100644
index 00000000..3dd1fc2f
--- /dev/null
+++ b/portal-BE/src/test/java/org/onap/portal/controller/WidgetMSControllerTest.java
@@ -0,0 +1,81 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ============LICENSE_END============================================
+ *
+ *
+ */
+
+package org.onap.portal.controller;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.junit.jupiter.api.Test;
+import org.junit.runner.RunWith;
+import org.onap.portal.domain.dto.ecomp.PortalRestResponse;
+import org.onap.portal.domain.dto.ecomp.PortalRestStatusEnum;
+import org.onap.portal.framework.MockitoTestSuite;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.TestPropertySource;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+@TestPropertySource(locations = "classpath:test.properties")
+class WidgetMSControllerTest {
+
+ @Autowired
+ WidgetMSController widgetMSController;
+
+ MockitoTestSuite mockitoTestSuite = new MockitoTestSuite();
+
+ HttpServletRequest request = mockitoTestSuite.getMockedRequest();
+ HttpServletResponse response = mockitoTestSuite.getMockedResponse();
+
+ @Test
+ void getServiceLocation() {
+ PortalRestResponse<String> expected = new PortalRestResponse<>();
+ expected.setMessage("Error!");
+ expected.setResponse("Couldn't get the service location");
+ expected.setStatus(PortalRestStatusEnum.ERROR);
+ PortalRestResponse<String> actual = widgetMSController.getServiceLocation(request, response, "portal");
+ assertEquals(expected.getMessage(), actual.getMessage());
+ assertEquals(expected.getResponse(), actual.getResponse());
+ assertEquals(expected.getStatus(), actual.getStatus());
+ }
+} \ No newline at end of file
diff --git a/portal-BE/src/test/java/org/onap/portal/controller/WidgetsCatalogControllerTest.java b/portal-BE/src/test/java/org/onap/portal/controller/WidgetsCatalogControllerTest.java
new file mode 100644
index 00000000..b82ac2f7
--- /dev/null
+++ b/portal-BE/src/test/java/org/onap/portal/controller/WidgetsCatalogControllerTest.java
@@ -0,0 +1,271 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ============LICENSE_END============================================
+ *
+ *
+ */
+
+package org.onap.portal.controller;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.time.LocalDateTime;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import javax.servlet.http.HttpServletRequest;
+import javax.transaction.Transactional;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.onap.portal.domain.db.ep.EpMicroserviceParameter;
+import org.onap.portal.domain.db.ep.EpWidgetCatalog;
+import org.onap.portal.domain.db.ep.EpWidgetCatalogParameter;
+import org.onap.portal.domain.db.fn.FnLanguage;
+import org.onap.portal.domain.db.fn.FnUser;
+import org.onap.portal.domain.dto.ecomp.WidgetCatalog;
+import org.onap.portal.framework.MockitoTestSuite;
+import org.onap.portal.service.ep.EpMicroserviceParameterService;
+import org.onap.portal.service.ep.EpWidgetCatalogParameterService;
+import org.onap.portal.service.ep.EpWidgetCatalogService;
+import org.onap.portal.service.fn.FnLanguageService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.test.context.TestPropertySource;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+@Transactional
+@TestPropertySource(locations = "classpath:test.properties")
+public class WidgetsCatalogControllerTest {
+ private UsernamePasswordAuthenticationToken principal = new UsernamePasswordAuthenticationToken("demo",
+ "demo123");
+ @Autowired
+ private WidgetsCatalogController widgetsCatalogController;
+ @Autowired
+ private FnLanguageService fnLanguageService;
+ @Autowired
+ private EpWidgetCatalogParameterService epWidgetCatalogParameterService;
+ @Autowired
+ private EpMicroserviceParameterService epMicroserviceParameterService;
+ @Autowired
+ private EpWidgetCatalogService epWidgetCatalogService;
+
+ @Test
+ public void getUserWidgetCatalog() {
+ List<WidgetCatalog> actual = widgetsCatalogController.getUserWidgetCatalog("demo");
+ assertNull(actual);
+ }
+
+ @Test
+ public void getWidgetCatalog() {
+ }
+
+ @Test
+ public void updateWidgetCatalog() {
+ }
+
+ @Test
+ public void deleteOnboardingWidget() {
+ }
+
+ @Test
+ public void updateWidgetCatalogWithFiles() {
+ }
+
+ @Test
+ public void createWidgetCatalog() {
+ }
+
+ @Test
+ public void getWidgetFramework() {
+ }
+
+ @Test
+ public void getWidgetController() {
+ }
+
+ @Test
+ public void getWidgetCSS() {
+ }
+
+ @Test
+ public void getWidgetParameterResult() {
+ }
+
+ @Test
+ public void getUserParameterById() {
+ //Given
+ EpWidgetCatalog widget = EpWidgetCatalog.builder()
+ .wdgName("Name")
+ .wdgFileLoc("loc")
+ .allUserFlag(true)
+ .build();
+ epWidgetCatalogService.save(widget);
+ EpMicroserviceParameter parameter = new EpMicroserviceParameter();
+ epMicroserviceParameterService.save(parameter);
+ FnLanguage language = FnLanguage.builder().languageAlias("TS").languageName("TEST").build();
+ fnLanguageService.save(principal, language);
+ FnUser user = buildFnUser();
+ language.setFnUsers(new HashSet<>(Collections.singleton(user)));
+ user.setLanguageId(language);
+ EpWidgetCatalogParameter data = EpWidgetCatalogParameter.builder()
+ .widgetId(widget).userId(user).paramId(parameter).userValue("TestData").build();
+ //When
+ epWidgetCatalogParameterService.saveUserParameter(data);
+ List<EpWidgetCatalogParameter> actual = widgetsCatalogController.getUserParameterById(parameter.getId());
+ //Then
+ assertEquals(1, actual.size());
+ //Clean
+ }
+
+ @Test
+ public void deleteUserParameterById() {
+ //Given
+ EpWidgetCatalog widget = EpWidgetCatalog.builder()
+ .wdgName("Name")
+ .wdgFileLoc("loc")
+ .allUserFlag(true)
+ .build();
+ epWidgetCatalogService.save(widget);
+ EpMicroserviceParameter parameter = new EpMicroserviceParameter();
+ epMicroserviceParameterService.save(parameter);
+ FnLanguage language = FnLanguage.builder().languageAlias("TS").languageName("TEST").build();
+ fnLanguageService.save(principal, language);
+ FnUser user = buildFnUser();
+ language.setFnUsers(new HashSet<>(Collections.singleton(user)));
+ user.setLanguageId(language);
+ EpWidgetCatalogParameter data = EpWidgetCatalogParameter.builder()
+ .widgetId(widget).userId(user).paramId(parameter).userValue("TestData").build();
+ //When
+ assertEquals(0, widgetsCatalogController.getUserParameterById(parameter.getId()).size());
+ epWidgetCatalogParameterService.saveUserParameter(data);
+ //Then assert
+ assertEquals(1, widgetsCatalogController.getUserParameterById(parameter.getId()).size());
+ assertTrue(widgetsCatalogController.deleteUserParameterById(parameter.getId()));
+ assertEquals(0, widgetsCatalogController.getUserParameterById(parameter.getId()).size());
+
+ }
+
+ @Test
+ public void doDownload() {
+ }
+
+ @Test
+ public void saveWidgetParameter() {
+ //Given
+ EpWidgetCatalog widget = EpWidgetCatalog.builder()
+ .wdgName("Name")
+ .wdgFileLoc("loc")
+ .allUserFlag(true)
+ .build();
+ epWidgetCatalogService.save(widget);
+ EpMicroserviceParameter parameter = new EpMicroserviceParameter();
+ epMicroserviceParameterService.save(parameter);
+ FnLanguage language = FnLanguage.builder().languageAlias("TS").languageName("TEST").build();
+ fnLanguageService.save(principal, language);
+ FnUser user = buildFnUser();
+ language.setFnUsers(new HashSet<>(Collections.singleton(user)));
+ user.setLanguageId(language);
+ EpWidgetCatalogParameter data = EpWidgetCatalogParameter.builder()
+ .widgetId(widget).userId(user).paramId(parameter).userValue("TestData").build();
+
+ //When
+ widgetsCatalogController.saveWidgetParameter(principal, data);
+ //Then
+ EpWidgetCatalogParameter actual = epWidgetCatalogParameterService.getById(data.getId());
+
+ assertEquals("TestData", actual.getUserValue());
+
+ }
+
+ @Test
+ public void saveWidgetParameterOldParamTest() {
+ //Given
+ EpWidgetCatalog widget = EpWidgetCatalog.builder()
+ .wdgName("Name")
+ .wdgFileLoc("loc")
+ .allUserFlag(true)
+ .build();
+ epWidgetCatalogService.save(widget);
+ EpMicroserviceParameter parameter = new EpMicroserviceParameter();
+ epMicroserviceParameterService.save(parameter);
+ FnLanguage language = FnLanguage.builder().languageAlias("TS").languageName("TEST").build();
+ fnLanguageService.save(principal, language);
+ FnUser user = buildFnUser();
+ language.setFnUsers(new HashSet<>(Collections.singleton(user)));
+ user.setLanguageId(language);
+ EpWidgetCatalogParameter old = EpWidgetCatalogParameter.builder()
+ .widgetId(widget).userId(user).paramId(parameter).userValue("TestData").build();
+
+ //When
+ widgetsCatalogController.saveWidgetParameter(principal, old);
+
+ EpWidgetCatalogParameter newWidgetParameter = EpWidgetCatalogParameter.builder()
+ .widgetId(widget).userId(user).paramId(parameter).userValue("TestData2").build();
+
+ widgetsCatalogController.saveWidgetParameter(principal, newWidgetParameter);
+
+ EpWidgetCatalogParameter oldOne = epWidgetCatalogParameterService.getById(old.getId());
+
+ //Then
+ assertEquals("TestData2", oldOne.getUserValue());
+
+ }
+
+ @Test
+ public void getUploadFlag() {
+ String expected = "";
+ String actual = widgetsCatalogController.getUploadFlag();
+
+ assertEquals(expected, actual);
+ }
+
+ private FnUser buildFnUser(){
+ return FnUser.builder()
+ .lastLoginDate(LocalDateTime.now())
+ .activeYn(true)
+ .modifiedDate(LocalDateTime.now())
+ .createdDate(LocalDateTime.now())
+ .isInternalYn(true)
+ .guest(false)
+ .build();
+ }
+} \ No newline at end of file
diff --git a/portal-BE/src/test/java/org/onap/portal/controller/WidgetsControllerTest.java b/portal-BE/src/test/java/org/onap/portal/controller/WidgetsControllerTest.java
index a90b38ff..ebc0d9fa 100644
--- a/portal-BE/src/test/java/org/onap/portal/controller/WidgetsControllerTest.java
+++ b/portal-BE/src/test/java/org/onap/portal/controller/WidgetsControllerTest.java
@@ -44,6 +44,7 @@ import static junit.framework.TestCase.assertEquals;
import static junit.framework.TestCase.assertNull;
import static org.mockito.Mockito.when;
+import java.io.IOException;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@@ -55,18 +56,24 @@ import org.onap.portal.dao.fn.FnLanguageDao;
import org.onap.portal.dao.fn.FnUserDao;
import org.onap.portal.domain.db.fn.FnLanguage;
import org.onap.portal.domain.db.fn.FnUser;
+import org.onap.portal.domain.db.fn.FnWidget;
+import org.onap.portal.domain.dto.transport.FieldsValidator;
import org.onap.portal.domain.dto.transport.OnboardingWidget;
+import org.onap.portal.domain.dto.transport.WidgetCatalogPersonalization;
import org.onap.portal.framework.MockitoTestSuite;
+import org.onap.portal.service.WidgetService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.test.context.TestPropertySource;
import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.transaction.annotation.Transactional;
@RunWith(SpringRunner.class)
@SpringBootTest
@TestPropertySource(locations = "classpath:test.properties")
+@Transactional
public class WidgetsControllerTest {
private UsernamePasswordAuthenticationToken principal = new UsernamePasswordAuthenticationToken("demo",
@@ -80,11 +87,11 @@ public class WidgetsControllerTest {
@Autowired
private WidgetsController widgetsController;
@Autowired
- private
- FnUserDao fnUserDao;
+ private FnUserDao fnUserDao;
@Autowired
- private
- FnLanguageDao fnLanguageDao;
+ private FnLanguageDao fnLanguageDao;
+ @Autowired
+ private WidgetService widgetService;
private FnLanguage language = getFnLanguage();
private FnUser questUser = getQuestUser();
@@ -113,7 +120,8 @@ public class WidgetsControllerTest {
@Test
public void getOnboardingWidgetsUserTest() {
- UsernamePasswordAuthenticationToken notQuestprincipal = new UsernamePasswordAuthenticationToken("notQuestUser",
+ UsernamePasswordAuthenticationToken notQuestprincipal = new UsernamePasswordAuthenticationToken(
+ "notQuestUser",
"demo123");
fnUserDao.save(notQuestUser);
List<OnboardingWidget> expected = new ArrayList<>();
@@ -128,7 +136,8 @@ public class WidgetsControllerTest {
@Test
public void getOnboardingWidgetsWrongHeaderTest() {
- UsernamePasswordAuthenticationToken notQuestprincipal = new UsernamePasswordAuthenticationToken("notQuestUser",
+ UsernamePasswordAuthenticationToken notQuestprincipal = new UsernamePasswordAuthenticationToken(
+ "notQuestUser",
"demo123");
fnUserDao.save(notQuestUser);
when(request.getHeader("X-Widgets-Type")).thenReturn("test");
@@ -140,22 +149,212 @@ public class WidgetsControllerTest {
}
@Test
- public void putOnboardingWidget() {
+ public void putOnboardingWidgetSameWidget() {
+ //Given
+ fnUserDao.save(notQuestUser);
+ when(request.getHeader("X-Widgets-Type")).thenReturn("managed");
+
+ OnboardingWidget onboardingWidget = OnboardingWidget.builder()
+ .id(123L)
+ .name("Application")
+ .appId(1421L)
+ .appName("Application name")
+ .width(123)
+ .height(45)
+ .url("testurl")
+ .build();
+
+ FnWidget fnWidget = FnWidget.builder()
+ .name("Application")
+ .appId(453L)
+ .width(123)
+ .height(45)
+ .url("testurl")
+ .build();
+
+ widgetService.saveOne(fnWidget);
+
+ FieldsValidator expected = new FieldsValidator();
+ //When
+ FieldsValidator actual = widgetsController
+ .putOnboardingWidget(principal, fnWidget.getWidgetId(), onboardingWidget, response);
+ //Then
+ assertEquals(expected.getErrorCode(), actual.getErrorCode());
+ assertEquals(expected.getHttpStatusCode(), actual.getHttpStatusCode());
+ assertEquals(expected.getFields(), actual.getFields());
+ }
+
+ @Test
+ public void putOnboardingWidgetAOP() {
+ //Given
+ fnUserDao.save(notQuestUser);
+ when(request.getHeader("X-Widgets-Type")).thenReturn("managed");
+
+ OnboardingWidget onboardingWidget = OnboardingWidget.builder()
+ .id(123L)
+ .name("")
+ .appId(1L)
+ .appName("")
+ .width(123)
+ .height(45)
+ .url("testurl")
+ .build();
+
+ FnWidget fnWidget = FnWidget.builder()
+ .name("Application")
+ .appId(1421L)
+ .width(123)
+ .height(45)
+ .url("testurl")
+ .build();
+
+ widgetService.saveOne(fnWidget);
+
+ FieldsValidator expected = new FieldsValidator();
+ expected.setHttpStatusCode(406L);
+ expected.addProblematicFieldName("appName can't be blank, appId value must be higher than 1");
+ //When
+ FieldsValidator actual = widgetsController
+ .putOnboardingWidget(principal, fnWidget.getWidgetId(), onboardingWidget, response);
+ //Then
+ assertEquals(expected.getHttpStatusCode(), actual.getHttpStatusCode());
+ assertEquals(expected.getFields().size(), actual.getFields().size());
+ }
+
+ @Test
+ public void putOnboardingWidgetAOPXSSTest() {
+ //Given
+ fnUserDao.save(notQuestUser);
+ when(request.getHeader("X-Widgets-Type")).thenReturn("managed");
+
+ OnboardingWidget onboardingWidget = OnboardingWidget.builder()
+ .id(123L)
+ .name("<script>alert(“XSS”);</script>\n")
+ .appId(34L)
+ .appName("<ScRipT>alert(\"XSS\");</ScRipT>")
+ .width(123)
+ .height(45)
+ .url("testurl")
+ .build();
+
+ FieldsValidator expected = new FieldsValidator();
+ expected.setHttpStatusCode(406L);
+ expected.addProblematicFieldName(
+ "appName may have unsafe html content, name may have unsafe html content");
+ //When
+ FieldsValidator actual = widgetsController
+ .putOnboardingWidget(principal, 15L, onboardingWidget, response);
+ //Then
+ assertEquals(expected.getHttpStatusCode(), actual.getHttpStatusCode());
+ assertEquals(expected.getFields().size(), actual.getFields().size());
+ }
+
+ @Test
+ public void postOnboardingWidgetXSS() {
+ //Given
+ fnUserDao.save(notQuestUser);
+ when(request.getHeader("X-Widgets-Type")).thenReturn("managed");
+
+ OnboardingWidget onboardingWidget = OnboardingWidget.builder()
+ .id(123L)
+ .name("<script>alert(“XSS”);</script>\n")
+ .appId(34L)
+ .appName("<ScRipT>alert(\"XSS\");</ScRipT>")
+ .width(123)
+ .height(45)
+ .url("testurl")
+ .build();
+
+ FieldsValidator expected = new FieldsValidator();
+ expected.setHttpStatusCode(406L);
+ expected.addProblematicFieldName("appName may have unse html content, name may have unsafe html content");
+ //When
+ FieldsValidator actual = widgetsController.postOnboardingWidget(principal, response, onboardingWidget);
+ //Then
+ assertEquals(expected.getHttpStatusCode(), actual.getHttpStatusCode());
+ assertEquals(expected.getFields().size(), actual.getFields().size());
}
@Test
public void postOnboardingWidget() {
+ //Given
+ fnUserDao.save(notQuestUser);
+ when(request.getHeader("X-Widgets-Type")).thenReturn("managed");
+
+ OnboardingWidget onboardingWidget = OnboardingWidget.builder()
+ .id(123L)
+ .name("appname")
+ .appId(34L)
+ .appName("appname")
+ .width(123)
+ .height(45)
+ .url("testurl")
+ .build();
+
+ FieldsValidator expected = new FieldsValidator();
+ expected.setHttpStatusCode(200L);
+ //When
+ FieldsValidator actual = widgetsController.postOnboardingWidget(principal, response, onboardingWidget);
+ //Then
+ assertEquals(expected.getHttpStatusCode(), actual.getHttpStatusCode());
+ assertEquals(expected.getFields().size(), actual.getFields().size());
}
@Test
- public void deleteOnboardingWidget() {
+ public void deleteOnboardingWidgetSCFORBIDDEN() {
+ //Given
+ fnUserDao.save(notQuestUser);
+ when(request.getHeader("X-Widgets-Type")).thenReturn("managed");
+
+ OnboardingWidget onboardingWidget = OnboardingWidget.builder()
+ .id(123L)
+ .name("")
+ .appId(1L)
+ .appName("rtyrty")
+ .width(123)
+ .height(45)
+ .url("testurl")
+ .build();
+
+ FnWidget fnWidget = FnWidget.builder()
+ .name("Application")
+ .appId(1421L)
+ .width(123)
+ .height(45)
+ .url("testurl")
+ .build();
+
+ widgetService.saveOne(fnWidget);
+
+
+
+ FieldsValidator expected = new FieldsValidator();
+ expected.setHttpStatusCode(500L);
+ expected.addProblematicFieldName("appName can't be blank, appId value must be higher than 1");
+
+ //When
+ widgetsController.putOnboardingWidget(principal, fnWidget.getWidgetId(), onboardingWidget, response);
+
+ FieldsValidator actual = widgetsController.deleteOnboardingWidget(principal, response, fnWidget.getWidgetId());
+ //Then
+ assertEquals(expected.getHttpStatusCode(), actual.getHttpStatusCode());
}
@Test
- public void putWidgetCatalogSelection() {
+ public void putWidgetCatalogSelection() throws IOException {
+ //Give
+ WidgetCatalogPersonalization personalization = new WidgetCatalogPersonalization(7L, true);
+
+ FieldsValidator expected = new FieldsValidator();
+ expected.setHttpStatusCode(200L);
+ expected.addProblematicFieldName("");
+ //When
+ FieldsValidator actual = widgetsController.putWidgetCatalogSelection(principal, personalization, response);
+ //Then
+ assertEquals(expected.getHttpStatusCode(), actual.getHttpStatusCode());
}
- private FnUser getQuestUser(){
+ private FnUser getQuestUser() {
return FnUser.builder()
.loginId("questUser")
.loginPwd("demo123")
@@ -169,7 +368,7 @@ public class WidgetsControllerTest {
.build();
}
- private FnUser getNotQuestUser(){
+ private FnUser getNotQuestUser() {
return FnUser.builder()
.loginId("notQuestUser")
.loginPwd("demo123")
@@ -183,7 +382,7 @@ public class WidgetsControllerTest {
.build();
}
- private FnLanguage getFnLanguage(){
+ private FnLanguage getFnLanguage() {
return FnLanguage.builder().languageName("Polish").languageAlias("Pl").build();
}
} \ No newline at end of file
diff --git a/portal-BE/src/test/java/org/onap/portal/service/ep/EpMicroserviceParameterServiceTest.java b/portal-BE/src/test/java/org/onap/portal/service/ep/EpMicroserviceParameterServiceTest.java
new file mode 100644
index 00000000..b4427ef3
--- /dev/null
+++ b/portal-BE/src/test/java/org/onap/portal/service/ep/EpMicroserviceParameterServiceTest.java
@@ -0,0 +1,68 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ============LICENSE_END============================================
+ *
+ *
+ */
+
+package org.onap.portal.service.ep;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+import org.junit.jupiter.api.Test;
+import org.junit.runner.RunWith;
+import org.onap.portal.domain.db.ep.EpMicroserviceParameter;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.TestPropertySource;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+@TestPropertySource(locations = "classpath:test.properties")
+class EpMicroserviceParameterServiceTest {
+
+ @Autowired
+ EpMicroserviceParameterService epMicroserviceParameterService;
+
+ @Test
+ void deleteMicroserviceParameterById() {
+ EpMicroserviceParameter parameter = EpMicroserviceParameter.builder()
+ .build();
+ epMicroserviceParameterService.save(parameter);
+ assertTrue(epMicroserviceParameterService.deleteMicroserviceParameterById(parameter.getId()));
+ }
+} \ No newline at end of file
diff --git a/portal-BE/src/test/java/org/onap/portal/service/ep/EpWidgetCatalogParameterServiceTest.java b/portal-BE/src/test/java/org/onap/portal/service/ep/EpWidgetCatalogParameterServiceTest.java
new file mode 100644
index 00000000..6a6c06b9
--- /dev/null
+++ b/portal-BE/src/test/java/org/onap/portal/service/ep/EpWidgetCatalogParameterServiceTest.java
@@ -0,0 +1,168 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ============LICENSE_END============================================
+ *
+ *
+ */
+
+package org.onap.portal.service.ep;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import java.time.LocalDateTime;
+import java.util.Collections;
+import java.util.HashSet;
+import org.junit.jupiter.api.Test;
+import org.junit.runner.RunWith;
+import org.onap.portal.controller.WidgetsCatalogController;
+import org.onap.portal.domain.db.ep.EpMicroserviceParameter;
+import org.onap.portal.domain.db.ep.EpWidgetCatalog;
+import org.onap.portal.domain.db.ep.EpWidgetCatalogParameter;
+import org.onap.portal.domain.db.fn.FnLanguage;
+import org.onap.portal.domain.db.fn.FnUser;
+import org.onap.portal.service.fn.FnLanguageService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.test.context.TestPropertySource;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.transaction.annotation.Transactional;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+@Transactional
+@TestPropertySource(locations = "classpath:test.properties")
+class EpWidgetCatalogParameterServiceTest {
+
+ private UsernamePasswordAuthenticationToken principal = new UsernamePasswordAuthenticationToken("demo",
+ "demo123");
+
+ private EpWidgetCatalogParameterService epWidgetCatalogParameterService;
+ private WidgetsCatalogController widgetsCatalogController;
+ private FnLanguageService fnLanguageService;
+ private EpMicroserviceParameterService epMicroserviceParameterService;
+ private EpWidgetCatalogService epWidgetCatalogService;
+
+ @Autowired
+ public EpWidgetCatalogParameterServiceTest(
+ EpWidgetCatalogParameterService epWidgetCatalogParameterService,
+ WidgetsCatalogController widgetsCatalogController,
+ FnLanguageService fnLanguageService,
+ EpMicroserviceParameterService epMicroserviceParameterService,
+ EpWidgetCatalogService epWidgetCatalogService) {
+ this.epWidgetCatalogParameterService = epWidgetCatalogParameterService;
+ this.widgetsCatalogController = widgetsCatalogController;
+ this.fnLanguageService = fnLanguageService;
+ this.epMicroserviceParameterService = epMicroserviceParameterService;
+ this.epWidgetCatalogService = epWidgetCatalogService;
+ }
+
+ @Test
+ void deleteUserParameterById() {
+ }
+
+ @Test
+ void deleteByParamId() {
+ //Given
+ EpWidgetCatalog widget = EpWidgetCatalog.builder()
+ .wdgName("Name")
+ .wdgFileLoc("loc")
+ .allUserFlag(true)
+ .build();
+ epWidgetCatalogService.save(widget);
+ EpMicroserviceParameter parameter = new EpMicroserviceParameter();
+ epMicroserviceParameterService.save(parameter);
+ FnLanguage language = FnLanguage.builder().languageAlias("TS").languageName("TEST").build();
+ fnLanguageService.save(principal, language);
+ FnUser user = buildFnUser();
+ language.setFnUsers(new HashSet<>(Collections.singleton(user)));
+ user.setLanguageId(language);
+ EpWidgetCatalogParameter data = EpWidgetCatalogParameter.builder()
+ .widgetId(widget).userId(user).paramId(parameter).userValue("TestData").build();
+ //When
+ assertEquals(0, widgetsCatalogController.getUserParameterById(parameter.getId()).size());
+ epWidgetCatalogParameterService.saveUserParameter(data);
+ //Then
+ assertEquals(1, epWidgetCatalogParameterService.getUserParameterById(parameter.getId()).size());
+ epWidgetCatalogParameterService.deleteByParamId(parameter.getId());
+ assertEquals(0, epWidgetCatalogParameterService.getUserParameterById(parameter.getId()).size());
+ //Clean
+
+ }
+
+ @Test
+ void getUserParamById() {
+ //Given
+ EpWidgetCatalog widget = EpWidgetCatalog.builder()
+ .wdgName("Name")
+ .wdgFileLoc("loc")
+ .allUserFlag(true)
+ .build();
+ epWidgetCatalogService.save(widget);
+ EpMicroserviceParameter parameter = new EpMicroserviceParameter();
+ epMicroserviceParameterService.save(parameter);
+ FnLanguage language = FnLanguage.builder().languageAlias("TS").languageName("TEST").build();
+ fnLanguageService.save(principal, language);
+ FnUser user = buildFnUser();
+ language.setFnUsers(new HashSet<>(Collections.singleton(user)));
+ user.setLanguageId(language);
+ EpWidgetCatalogParameter data = EpWidgetCatalogParameter.builder()
+ .widgetId(widget).userId(user).paramId(parameter).userValue("TestData").build();
+ //When
+ assertEquals(0, widgetsCatalogController.getUserParameterById(parameter.getId()).size());
+ epWidgetCatalogParameterService.saveUserParameter(data);
+ Long id = data.getId();
+ assertEquals(1, epWidgetCatalogParameterService.getUserParameterById(parameter.getId()).size());
+ EpWidgetCatalogParameter actual = epWidgetCatalogParameterService.getUserParamById(widget.getWidgetId(), user.getUserId(), parameter.getId());
+ //Then
+ assertEquals(id, actual.getId());
+ assertEquals(data.getUserValue(), actual.getUserValue());
+ assertEquals(data.getWidgetId().getWidgetId(), actual.getWidgetId().getWidgetId());
+ assertEquals(data.getParamId().getId(), actual.getParamId().getId());
+
+ }
+
+ private FnUser buildFnUser() {
+ return FnUser.builder()
+ .lastLoginDate(LocalDateTime.now())
+ .activeYn(true)
+ .modifiedDate(LocalDateTime.now())
+ .createdDate(LocalDateTime.now())
+ .isInternalYn(true)
+ .guest(false)
+ .build();
+ }
+} \ No newline at end of file
diff --git a/portal-BE/src/test/java/org/onap/portal/service/fn/FnUserServiceTest.java b/portal-BE/src/test/java/org/onap/portal/service/fn/FnUserServiceTest.java
index 4f960b46..e4083881 100644
--- a/portal-BE/src/test/java/org/onap/portal/service/fn/FnUserServiceTest.java
+++ b/portal-BE/src/test/java/org/onap/portal/service/fn/FnUserServiceTest.java
@@ -73,29 +73,37 @@ class FnUserServiceTest {
@Test
void saveUser(){
- FnUser actual = fnUserService.getUser(1L).get();
+ //Given
+ //FnLuTimezone fnLuTimezone = fnLuTimezoneService.getById(10L).get();
+ FnLanguage language = fnLanguageService.findById(1L).get();
FnUser expected = FnUser.builder().build();
- expected.setUserId(123L);
expected.setFirstName("Demo");
expected.setLastName("User");
expected.setEmail("demo@openecomp.org");
expected.setOrgUserId("demo");
- expected.setTimezone(fnLuTimezoneService.getById(10L).orElse(new FnLuTimezone()));
- expected.setLoginId("demo");
+ //expected.setTimezone(fnLuTimezone);
+ expected.setLoginId("demoTest");
expected.setLoginPwd("demo123");
expected.setLastLoginDate(LocalDateTime.parse("2019-08-08T12:18:17"));
expected.setActiveYn(true);
expected.setCreatedDate(LocalDateTime.parse("2016-10-14T21:00"));
- expected.setModifiedId(actual);
expected.setModifiedDate(LocalDateTime.parse("2019-08-08T12:18:17"));
expected.setIsInternalYn(false);
expected.setStateCd("NJ");
expected.setCountryCd("US");
- expected.setLanguageId(fnLanguageService.findById(1L).orElse(new FnLanguage()));
+ expected.setLanguageId(language);
expected.setGuest(false);
+
+ //fnLuTimezone.getFnUsers().add(expected);
+ language.getFnUsers().add(expected);
+
+ //When
fnUserService.saveFnUser(principal, expected);
- System.out.println(expected.getActiveYn());
+ FnUser actual = fnUserService.getUser(expected.getUserId()).get();
+ //Then
+ assertEquals(expected.getUserId(), actual.getUserId());
+ assertEquals(expected.getLoginPwd(), actual.getLoginPwd());
//Clean up
fnUserService.deleteUser(expected);
}